@qwik.dev/core 0.0.0 → 2.0.0-alpha.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.
- package/LICENSE +22 -0
- package/bindings/qwik.linux-x64-gnu.node +0 -0
- package/bindings/qwik.wasm.cjs +484 -0
- package/bindings/qwik.wasm.mjs +477 -0
- package/bindings/qwik_wasm_bg.wasm +0 -0
- package/build.d.ts +2 -0
- package/dist/build/index.cjs +35 -0
- package/dist/build/index.cjs.map +7 -0
- package/dist/build/index.d.ts +22 -0
- package/dist/build/index.dev.cjs +37 -0
- package/dist/build/index.dev.cjs.map +7 -0
- package/dist/build/index.dev.mjs +12 -0
- package/dist/build/index.dev.mjs.map +7 -0
- package/dist/build/index.mjs +12 -0
- package/dist/build/index.mjs.map +7 -0
- package/dist/build/index.prod.cjs +37 -0
- package/dist/build/index.prod.cjs.map +7 -0
- package/dist/build/index.prod.mjs +12 -0
- package/dist/build/index.prod.mjs.map +7 -0
- package/dist/build/package.json +8 -0
- package/dist/cli.cjs +4890 -0
- package/dist/core-internal.d.ts +3895 -0
- package/dist/core.cjs +10923 -0
- package/dist/core.cjs.map +1 -0
- package/dist/core.min.mjs +1 -0
- package/dist/core.mjs +10819 -0
- package/dist/core.mjs.map +1 -0
- package/dist/core.prod.cjs +5181 -0
- package/dist/core.prod.mjs +6025 -0
- package/dist/index.d.ts +2 -0
- package/dist/insights/index.d.ts +1 -0
- package/dist/insights/index.qwik.cjs +751 -0
- package/dist/insights/index.qwik.mjs +751 -0
- package/dist/insights/insights.d.ts +59 -0
- package/dist/insights/vite/index.cjs +82 -0
- package/dist/insights/vite/index.d.ts +1 -0
- package/dist/insights/vite/index.mjs +55 -0
- package/dist/insights/vite/insights-plugin.d.ts +10 -0
- package/dist/jsx-runtime/index.d.ts +2 -0
- package/dist/jsx-runtime.d.ts +2 -0
- package/dist/loader/index.cjs +4 -0
- package/dist/loader/index.d.ts +2 -0
- package/dist/loader/index.mjs +3 -0
- package/dist/loader/package.json +8 -0
- package/dist/optimizer.cjs +9145 -0
- package/dist/optimizer.d.ts +707 -0
- package/dist/optimizer.mjs +9709 -0
- package/dist/prefetch/index.cjs +4 -0
- package/dist/prefetch/index.d.ts +2 -0
- package/dist/prefetch/index.mjs +3 -0
- package/dist/prefetch/package.json +8 -0
- package/dist/qwik-prefetch.debug.js +244 -0
- package/dist/qwik-prefetch.js +1 -0
- package/dist/qwikloader.debug.js +228 -0
- package/dist/qwikloader.js +3 -0
- package/dist/server-modules.d.ts +38 -0
- package/dist/server.cjs +8942 -0
- package/dist/server.d.ts +404 -0
- package/dist/server.mjs +8877 -0
- package/dist/starters/adapters/aws-lambda/.eslintignore +2 -0
- package/dist/starters/adapters/aws-lambda/.prettierignore +2 -0
- package/dist/starters/adapters/aws-lambda/adapters/aws-lambda/vite.config.mts +21 -0
- package/dist/starters/adapters/aws-lambda/gitignore +2 -0
- package/dist/starters/adapters/aws-lambda/package.json +23 -0
- package/dist/starters/adapters/aws-lambda/serverless.yml +31 -0
- package/dist/starters/adapters/aws-lambda/src/entry_aws-lambda.tsx +32 -0
- package/dist/starters/adapters/azure-swa/README.md +13 -0
- package/dist/starters/adapters/azure-swa/adapters/azure-swa/vite.config.mts +23 -0
- package/dist/starters/adapters/azure-swa/azure-functions/host.json +20 -0
- package/dist/starters/adapters/azure-swa/gitignore +3 -0
- package/dist/starters/adapters/azure-swa/package.json +28 -0
- package/dist/starters/adapters/azure-swa/public/staticwebapp.config.json +23 -0
- package/dist/starters/adapters/azure-swa/src/entry.azure-swa.tsx +22 -0
- package/dist/starters/adapters/azure-swa/swa-cli.config.json +11 -0
- package/dist/starters/adapters/bun/README.md +9 -0
- package/dist/starters/adapters/bun/adapters/bun/vite.config.mts +28 -0
- package/dist/starters/adapters/bun/package.json +27 -0
- package/dist/starters/adapters/bun/src/entry.bun.ts +46 -0
- package/dist/starters/adapters/cloud-run/Dockerfile +24 -0
- package/dist/starters/adapters/cloud-run/README.md +7 -0
- package/dist/starters/adapters/cloud-run/adapters/cloud-run/vite.config.mts +15 -0
- package/dist/starters/adapters/cloud-run/package.json +24 -0
- package/dist/starters/adapters/cloud-run/src/entry.cloud-run.tsx +96 -0
- package/dist/starters/adapters/cloudflare-pages/README.md +46 -0
- package/dist/starters/adapters/cloudflare-pages/adapters/cloudflare-pages/vite.config.mts +15 -0
- package/dist/starters/adapters/cloudflare-pages/gitignore +2 -0
- package/dist/starters/adapters/cloudflare-pages/package.json +28 -0
- package/dist/starters/adapters/cloudflare-pages/public/_headers +9 -0
- package/dist/starters/adapters/cloudflare-pages/public/_redirects +1 -0
- package/dist/starters/adapters/cloudflare-pages/src/entry.cloudflare-pages.tsx +24 -0
- package/dist/starters/adapters/deno/README.md +9 -0
- package/dist/starters/adapters/deno/adapters/deno/vite.config.mts +23 -0
- package/dist/starters/adapters/deno/package.json +24 -0
- package/dist/starters/adapters/deno/src/entry.deno.ts +45 -0
- package/dist/starters/adapters/express/README.md +9 -0
- package/dist/starters/adapters/express/adapters/express/vite.config.mts +15 -0
- package/dist/starters/adapters/express/package.json +33 -0
- package/dist/starters/adapters/express/src/entry.express.tsx +70 -0
- package/dist/starters/adapters/fastify/README.md +9 -0
- package/dist/starters/adapters/fastify/adapters/fastify/vite.config.mts +15 -0
- package/dist/starters/adapters/fastify/package.json +33 -0
- package/dist/starters/adapters/fastify/src/entry.fastify.tsx +48 -0
- package/dist/starters/adapters/fastify/src/plugins/fastify-qwik.ts +42 -0
- package/dist/starters/adapters/firebase/.eslintignore +1 -0
- package/dist/starters/adapters/firebase/.prettierignore +1 -0
- package/dist/starters/adapters/firebase/adapters/firebase/vite.config.mts +21 -0
- package/dist/starters/adapters/firebase/firebase.json +24 -0
- package/dist/starters/adapters/firebase/functions/.gitkeep +0 -0
- package/dist/starters/adapters/firebase/functions/index.js +5 -0
- package/dist/starters/adapters/firebase/functions/package.json +25 -0
- package/dist/starters/adapters/firebase/gitignore +3 -0
- package/dist/starters/adapters/firebase/package.json +24 -0
- package/dist/starters/adapters/firebase/src/entry-firebase.tsx +22 -0
- package/dist/starters/adapters/netlify-edge/README.md +64 -0
- package/dist/starters/adapters/netlify-edge/adapters/netlify-edge/vite.config.mts +16 -0
- package/dist/starters/adapters/netlify-edge/gitignore +2 -0
- package/dist/starters/adapters/netlify-edge/netlify.toml +3 -0
- package/dist/starters/adapters/netlify-edge/package.json +29 -0
- package/dist/starters/adapters/netlify-edge/public/_headers +2 -0
- package/dist/starters/adapters/netlify-edge/src/entry.netlify-edge.tsx +22 -0
- package/dist/starters/adapters/node-server/README.md +12 -0
- package/dist/starters/adapters/node-server/adapters/node-server/vite.config.mts +15 -0
- package/dist/starters/adapters/node-server/package.json +23 -0
- package/dist/starters/adapters/node-server/src/entry.node-server.tsx +39 -0
- package/dist/starters/adapters/static/README.md +5 -0
- package/dist/starters/adapters/static/adapters/static/vite.config.mts +19 -0
- package/dist/starters/adapters/static/package.json +19 -0
- package/dist/starters/adapters/vercel-edge/README.md +43 -0
- package/dist/starters/adapters/vercel-edge/adapters/vercel-edge/vite.config.mts +16 -0
- package/dist/starters/adapters/vercel-edge/gitignore +2 -0
- package/dist/starters/adapters/vercel-edge/package.json +28 -0
- package/dist/starters/adapters/vercel-edge/src/entry.vercel-edge.tsx +22 -0
- package/dist/starters/adapters/vercel-edge/vercel.json +22 -0
- package/dist/starters/features/auth/package.json +20 -0
- package/dist/starters/features/auth/src/routes/plugin@auth.ts +8 -0
- package/dist/starters/features/bootstrap/package.json +33 -0
- package/dist/starters/features/bootstrap/src/components/bootstrap/alert.tsx +8 -0
- package/dist/starters/features/bootstrap/src/components/bootstrap/button.tsx +8 -0
- package/dist/starters/features/bootstrap/src/components/bootstrap/index.ts +4 -0
- package/dist/starters/features/bootstrap/src/components/bootstrap/navbar.tsx +44 -0
- package/dist/starters/features/bootstrap/src/components/bootstrap/spinner.tsx +13 -0
- package/dist/starters/features/bootstrap/src/constants/data.ts +10 -0
- package/dist/starters/features/bootstrap/src/models/bootstrap.ts +8 -0
- package/dist/starters/features/bootstrap/src/routes/bootstrap/alerts/index.tsx +28 -0
- package/dist/starters/features/bootstrap/src/routes/bootstrap/buttons/index.tsx +32 -0
- package/dist/starters/features/bootstrap/src/routes/bootstrap/index.tsx +32 -0
- package/dist/starters/features/bootstrap/src/routes/bootstrap/layout.tsx +36 -0
- package/dist/starters/features/bootstrap/src/routes/bootstrap/spinners/index.tsx +45 -0
- package/dist/starters/features/builder.io/README.md +15 -0
- package/dist/starters/features/builder.io/package.json +27 -0
- package/dist/starters/features/builder.io/src/components/builder-registry.ts +25 -0
- package/dist/starters/features/builder.io/src/components/counter/counter.module.css +23 -0
- package/dist/starters/features/builder.io/src/components/counter/counter.tsx +81 -0
- package/dist/starters/features/builder.io/src/components/gauge/gauge.module.css +27 -0
- package/dist/starters/features/builder.io/src/components/gauge/index.tsx +38 -0
- package/dist/starters/features/builder.io/src/routes/[...index]/index.tsx +44 -0
- package/dist/starters/features/cypress/cypress/fixtures/example.json +5 -0
- package/dist/starters/features/cypress/cypress/support/commands.ts +37 -0
- package/dist/starters/features/cypress/cypress/support/component-index.html +12 -0
- package/dist/starters/features/cypress/cypress/support/component.ts +42 -0
- package/dist/starters/features/cypress/cypress/tsconfig.cy.json +17 -0
- package/dist/starters/features/cypress/cypress.config.ts +10 -0
- package/dist/starters/features/cypress/cypress.d.ts +14 -0
- package/dist/starters/features/cypress/package.json +28 -0
- package/dist/starters/features/cypress/src/components/example/example.cy.tsx +18 -0
- package/dist/starters/features/cypress/src/components/example/example.tsx +17 -0
- package/dist/starters/features/drizzle/drizzle/db/.gitkeep +0 -0
- package/dist/starters/features/drizzle/drizzle/migrations/.gitkeep +0 -0
- package/dist/starters/features/drizzle/drizzle/schema.ts +24 -0
- package/dist/starters/features/drizzle/drizzle.config.ts +9 -0
- package/dist/starters/features/drizzle/package.json +41 -0
- package/dist/starters/features/drizzle/src/routes/create/index.tsx +42 -0
- package/dist/starters/features/drizzle/src/routes/users/[userId]/index.tsx +36 -0
- package/dist/starters/features/drizzle/src/routes/users/index.tsx +30 -0
- package/dist/starters/features/leaflet-map/package.json +30 -0
- package/dist/starters/features/leaflet-map/src/components/leaflet-map/index.tsx +60 -0
- package/dist/starters/features/leaflet-map/src/helpers/boundary-box.tsx +6 -0
- package/dist/starters/features/leaflet-map/src/models/location.ts +9 -0
- package/dist/starters/features/leaflet-map/src/models/map.ts +7 -0
- package/dist/starters/features/leaflet-map/src/routes/basic-map/index.tsx +25 -0
- package/dist/starters/features/localize/package.json +37 -0
- package/dist/starters/features/localize/src/entry.ssr.tsx +32 -0
- package/dist/starters/features/localize/src/locales/message.en.json +8 -0
- package/dist/starters/features/localize/src/locales/message.it.json +8 -0
- package/dist/starters/features/localize/src/routes/[locale]/i18n-utils.ts +94 -0
- package/dist/starters/features/localize/src/routes/[locale]/index.tsx +52 -0
- package/dist/starters/features/localize/src/routes/[locale]/layout.tsx +12 -0
- package/dist/starters/features/orama/package.json +23 -0
- package/dist/starters/features/orama/src/orama/index.ts +41 -0
- package/dist/starters/features/orama/src/routes/orama/index.tsx +110 -0
- package/dist/starters/features/pandacss/.eslintignore +3 -0
- package/dist/starters/features/pandacss/.prettierignore +2 -0
- package/dist/starters/features/pandacss/gitignore +2 -0
- package/dist/starters/features/pandacss/package.json +31 -0
- package/dist/starters/features/pandacss/panda.config.ts +22 -0
- package/dist/starters/features/pandacss/postcss.config.js +5 -0
- package/dist/starters/features/pandacss/src/global.css +5 -0
- package/dist/starters/features/pandacss/src/routes/pandacss/index.tsx +18 -0
- package/dist/starters/features/partytown/package.json +41 -0
- package/dist/starters/features/partytown/src/components/partytown/partytown.tsx +19 -0
- package/dist/starters/features/playwright/package.json +18 -0
- package/dist/starters/features/playwright/playwright-report/index.html +22024 -0
- package/dist/starters/features/playwright/playwright.config.ts +40 -0
- package/dist/starters/features/playwright/tests/example.spec.ts +14 -0
- package/dist/starters/features/postcss/.vscode/settings.json +3 -0
- package/dist/starters/features/postcss/package.json +17 -0
- package/dist/starters/features/postcss/postcss.config.js +11 -0
- package/dist/starters/features/prisma/package.json +35 -0
- package/dist/starters/features/prisma/prisma/schema.prisma +17 -0
- package/dist/starters/features/prisma/src/routes/create/index.tsx +42 -0
- package/dist/starters/features/prisma/src/routes/users/[userId]/index.tsx +31 -0
- package/dist/starters/features/prisma/src/routes/users/index.tsx +27 -0
- package/dist/starters/features/react/package.json +41 -0
- package/dist/starters/features/react/src/integrations/react/mui.tsx +60 -0
- package/dist/starters/features/react/src/routes/react/index.tsx +45 -0
- package/dist/starters/features/storybook/.storybook/main.ts +22 -0
- package/dist/starters/features/storybook/.storybook/preview-head.html +3 -0
- package/dist/starters/features/storybook/.storybook/preview.tsx +19 -0
- package/dist/starters/features/storybook/.storybook/tsconfig.json +24 -0
- package/dist/starters/features/storybook/package.json +25 -0
- package/dist/starters/features/storybook/src/components/button/button.stories.tsx +17 -0
- package/dist/starters/features/storybook/src/components/button/button.tsx +27 -0
- package/dist/starters/features/styled-vanilla-extract/package.json +28 -0
- package/dist/starters/features/styled-vanilla-extract/src/routes/styled-flower/flower.css.ts +83 -0
- package/dist/starters/features/styled-vanilla-extract/src/routes/styled-flower/index.tsx +75 -0
- package/dist/starters/features/tailwind/.prettierrc.js +3 -0
- package/dist/starters/features/tailwind/.vscode/settings.json +3 -0
- package/dist/starters/features/tailwind/package.json +18 -0
- package/dist/starters/features/tailwind/postcss.config.cjs +6 -0
- package/dist/starters/features/tailwind/src/global.css +7 -0
- package/dist/starters/features/tailwind/tailwind.config.js +8 -0
- package/dist/starters/features/turso/.env.local +2 -0
- package/dist/starters/features/turso/package.json +30 -0
- package/dist/starters/features/turso/src/utils/turso.ts +21 -0
- package/dist/starters/features/vitest/package.json +20 -0
- package/dist/starters/features/vitest/src/components/example/example.spec.tsx +32 -0
- package/dist/starters/features/vitest/src/components/example/example.tsx +17 -0
- package/dist/templates/barrel/component/index.tsx.template +13 -0
- package/dist/templates/barrel/markdown/index.md.template +5 -0
- package/dist/templates/barrel/mdx/index.mdx.template +5 -0
- package/dist/templates/barrel/route/index.tsx.template +9 -0
- package/dist/templates/qwik/component/[slug].tsx.template +13 -0
- package/dist/templates/qwik/markdown/index.md.template +5 -0
- package/dist/templates/qwik/mdx/index.mdx.template +5 -0
- package/dist/templates/qwik/route/index.tsx.template +9 -0
- package/dist/testing/index.cjs +32425 -0
- package/dist/testing/index.d.ts +140 -0
- package/dist/testing/index.mjs +32389 -0
- package/dist/testing/package.json +9 -0
- package/jsx-dev-runtime.d.ts +2 -0
- package/jsx-runtime.d.ts +2 -0
- package/loader.d.ts +2 -0
- package/optimizer.d.ts +2 -0
- package/package.json +20 -12
- package/public.d.ts +68 -0
- package/qwik-cli.cjs +4 -0
- package/server.d.ts +15 -0
- package/testing.d.ts +2 -0
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { PlaywrightTestConfig } from "@playwright/test";
|
|
2
|
+
import { devices } from "@playwright/test";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* See https://playwright.dev/docs/test-configuration.
|
|
6
|
+
*/
|
|
7
|
+
const config: PlaywrightTestConfig = {
|
|
8
|
+
testDir: "./tests",
|
|
9
|
+
/* Run tests in files in parallel */
|
|
10
|
+
fullyParallel: true,
|
|
11
|
+
forbidOnly: !!process.env.CI,
|
|
12
|
+
retries: 2,
|
|
13
|
+
workers: process.env.CI ? 1 : undefined,
|
|
14
|
+
reporter: "html",
|
|
15
|
+
use: {
|
|
16
|
+
actionTimeout: 0,
|
|
17
|
+
trace: "on-first-retry",
|
|
18
|
+
},
|
|
19
|
+
projects: [
|
|
20
|
+
{
|
|
21
|
+
name: "chromium",
|
|
22
|
+
use: {
|
|
23
|
+
...devices["Desktop Chrome"],
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
// {
|
|
27
|
+
// name: 'webkit',
|
|
28
|
+
// use: {
|
|
29
|
+
// ...devices['Desktop Safari'],
|
|
30
|
+
// },
|
|
31
|
+
// },
|
|
32
|
+
],
|
|
33
|
+
|
|
34
|
+
webServer: {
|
|
35
|
+
command: "npm run preview",
|
|
36
|
+
port: 4173,
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
export default config;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { test, expect } from "@playwright/test";
|
|
2
|
+
|
|
3
|
+
test("homepage has title and links to flower page", async ({ page }) => {
|
|
4
|
+
await page.goto("/");
|
|
5
|
+
|
|
6
|
+
// Expect a title "to contain" a substring.
|
|
7
|
+
await expect(page).toHaveTitle(/Qwik/);
|
|
8
|
+
|
|
9
|
+
// create a locator
|
|
10
|
+
const anchor = page.locator("a.mindblow");
|
|
11
|
+
|
|
12
|
+
// Expect an attribute "to be strictly equal" to the value.
|
|
13
|
+
await expect(anchor).toHaveAttribute("href", "/flower");
|
|
14
|
+
});
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"description": "Use PostCSS in your Qwik app",
|
|
3
|
+
"__qwik__": {
|
|
4
|
+
"displayName": "Integration: PostCSS (styling)",
|
|
5
|
+
"priority": -10,
|
|
6
|
+
"viteConfig": {},
|
|
7
|
+
"docs": [
|
|
8
|
+
"https://qwik.dev/integrations/integration/postcss/",
|
|
9
|
+
"https://github.com/postcss/postcss-load-config"
|
|
10
|
+
]
|
|
11
|
+
},
|
|
12
|
+
"devDependencies": {
|
|
13
|
+
"autoprefixer": "^10.4.14",
|
|
14
|
+
"postcss": "^8.4.31",
|
|
15
|
+
"postcss-preset-env": "^9.1.0"
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{
|
|
2
|
+
"description": "Next-generation Node.js TypeScript ORM",
|
|
3
|
+
"__qwik__": {
|
|
4
|
+
"displayName": "Integration: Prisma (Database ORM)",
|
|
5
|
+
"priority": -10,
|
|
6
|
+
"viteConfig": {},
|
|
7
|
+
"docs": [
|
|
8
|
+
"https://qwik.dev/integrations/integration/prisma/",
|
|
9
|
+
"https://www.prisma.io/docs/concepts/overview/what-is-prisma"
|
|
10
|
+
],
|
|
11
|
+
"postInstall": "prisma migrate dev --name initial",
|
|
12
|
+
"nextSteps": {
|
|
13
|
+
"title": "Next Steps",
|
|
14
|
+
"lines": [
|
|
15
|
+
" Prisma was installed with a default DB schema and some demo routes,",
|
|
16
|
+
"",
|
|
17
|
+
" Sqlite was configured by default, but in production",
|
|
18
|
+
" you'll want to use Postgres or MongoDB.",
|
|
19
|
+
"",
|
|
20
|
+
" Check out the Prisma docs for more info:",
|
|
21
|
+
" - https://www.prisma.io/docs/getting-started"
|
|
22
|
+
]
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"devDependencies": {
|
|
26
|
+
"@prisma/client": "5.3.1",
|
|
27
|
+
"prisma": "^5.3.1"
|
|
28
|
+
},
|
|
29
|
+
"scripts": {
|
|
30
|
+
"postinstall": "prisma generate",
|
|
31
|
+
"prisma:generate": "prisma generate",
|
|
32
|
+
"prisma:migrate": "prisma migrate dev",
|
|
33
|
+
"prisma:migrate:prod": "prisma migrate deploy"
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// This is your Prisma schema file,
|
|
2
|
+
// learn more about it in the docs: https://pris.ly/d/prisma-schema
|
|
3
|
+
|
|
4
|
+
generator client {
|
|
5
|
+
provider = "prisma-client-js"
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
datasource db {
|
|
9
|
+
provider = "sqlite"
|
|
10
|
+
url = "file:./dev.db"
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
model User {
|
|
14
|
+
id Int @id @default(autoincrement())
|
|
15
|
+
email String @unique
|
|
16
|
+
name String?
|
|
17
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { PrismaClient } from "@prisma/client";
|
|
2
|
+
import { Form, routeAction$, z, zod$ } from "@qwik.dev/router";
|
|
3
|
+
import { component$ } from "@qwik.dev/core";
|
|
4
|
+
|
|
5
|
+
export const useCreateUser = routeAction$(
|
|
6
|
+
async (data) => {
|
|
7
|
+
const prisma = new PrismaClient();
|
|
8
|
+
const user = await prisma.user.create({
|
|
9
|
+
data,
|
|
10
|
+
});
|
|
11
|
+
return user;
|
|
12
|
+
},
|
|
13
|
+
zod$({
|
|
14
|
+
name: z.string(),
|
|
15
|
+
email: z.string().email(),
|
|
16
|
+
}),
|
|
17
|
+
);
|
|
18
|
+
|
|
19
|
+
export default component$(() => {
|
|
20
|
+
const createUserAction = useCreateUser();
|
|
21
|
+
return (
|
|
22
|
+
<section>
|
|
23
|
+
<h1>Create User</h1>
|
|
24
|
+
<Form action={createUserAction}>
|
|
25
|
+
<label>
|
|
26
|
+
Name
|
|
27
|
+
<input name="name" value={createUserAction.formData?.get("name")} />
|
|
28
|
+
</label>
|
|
29
|
+
<label>
|
|
30
|
+
Email
|
|
31
|
+
<input name="email" value={createUserAction.formData?.get("email")} />
|
|
32
|
+
</label>
|
|
33
|
+
<button type="submit">Create</button>
|
|
34
|
+
</Form>
|
|
35
|
+
{createUserAction.value && (
|
|
36
|
+
<div>
|
|
37
|
+
<h2>User created successfully!</h2>
|
|
38
|
+
</div>
|
|
39
|
+
)}
|
|
40
|
+
</section>
|
|
41
|
+
);
|
|
42
|
+
});
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { PrismaClient } from "@prisma/client";
|
|
2
|
+
import { routeLoader$ } from "@qwik.dev/router";
|
|
3
|
+
import { component$ } from "@qwik.dev/core";
|
|
4
|
+
|
|
5
|
+
export const useGetUser = routeLoader$(async ({ params, status }) => {
|
|
6
|
+
const userId = parseInt(params["userId"], 10);
|
|
7
|
+
const prisma = new PrismaClient();
|
|
8
|
+
const user = await prisma.user.findUnique({ where: { id: userId } });
|
|
9
|
+
if (!user) {
|
|
10
|
+
// Set the status to 404 if the user is not found
|
|
11
|
+
status(404);
|
|
12
|
+
}
|
|
13
|
+
return user;
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
export default component$(() => {
|
|
17
|
+
const user = useGetUser();
|
|
18
|
+
return (
|
|
19
|
+
<section>
|
|
20
|
+
<h1>User detail</h1>
|
|
21
|
+
{user.value ? (
|
|
22
|
+
<>
|
|
23
|
+
<p>Name: {user.value.name}</p>
|
|
24
|
+
<p>Email: {user.value.email}</p>
|
|
25
|
+
</>
|
|
26
|
+
) : (
|
|
27
|
+
<p>User not found</p>
|
|
28
|
+
)}
|
|
29
|
+
</section>
|
|
30
|
+
);
|
|
31
|
+
});
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { PrismaClient } from "@prisma/client";
|
|
2
|
+
import { routeLoader$ } from "@qwik.dev/router";
|
|
3
|
+
import { component$ } from "@qwik.dev/core";
|
|
4
|
+
|
|
5
|
+
export const useGetUsers = routeLoader$(async () => {
|
|
6
|
+
const prisma = new PrismaClient();
|
|
7
|
+
const users = await prisma.user.findMany();
|
|
8
|
+
return users;
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
export default component$(() => {
|
|
12
|
+
const users = useGetUsers();
|
|
13
|
+
return (
|
|
14
|
+
<section>
|
|
15
|
+
<h1>User's directory</h1>
|
|
16
|
+
<ul>
|
|
17
|
+
{users.value.map((user) => (
|
|
18
|
+
<li key={user.id}>
|
|
19
|
+
<a href={`/users/${user.id}`}>
|
|
20
|
+
{user.name} ({user.email})
|
|
21
|
+
</a>
|
|
22
|
+
</li>
|
|
23
|
+
))}
|
|
24
|
+
</ul>
|
|
25
|
+
</section>
|
|
26
|
+
);
|
|
27
|
+
});
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{
|
|
2
|
+
"description": "Use React components into your Qwik app",
|
|
3
|
+
"__qwik__": {
|
|
4
|
+
"displayName": "Framework: React",
|
|
5
|
+
"priority": -20,
|
|
6
|
+
"docs": [
|
|
7
|
+
"https://qwik.dev/integrations/integration/react/"
|
|
8
|
+
],
|
|
9
|
+
"nextSteps": {
|
|
10
|
+
"title": "New folders created!",
|
|
11
|
+
"lines": [
|
|
12
|
+
" - /src/routes/react: New public route showcasing react integration",
|
|
13
|
+
" - /src/integrations/react: Here's where the react component lives"
|
|
14
|
+
]
|
|
15
|
+
},
|
|
16
|
+
"viteConfig": {
|
|
17
|
+
"imports": [
|
|
18
|
+
{
|
|
19
|
+
"namedImports": [
|
|
20
|
+
"qwikReact"
|
|
21
|
+
],
|
|
22
|
+
"importPath": "@qwik.dev/react/vite"
|
|
23
|
+
}
|
|
24
|
+
],
|
|
25
|
+
"vitePlugins": [
|
|
26
|
+
"qwikReact()"
|
|
27
|
+
]
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
"devDependencies": {
|
|
31
|
+
"@qwik.dev/react": "0.5.0",
|
|
32
|
+
"@emotion/react": "^11.11.1",
|
|
33
|
+
"@emotion/styled": "^11.11.0",
|
|
34
|
+
"@mui/material": "^5.13.0",
|
|
35
|
+
"@mui/x-data-grid": "^6.4.0",
|
|
36
|
+
"@types/react": "^18.2.28",
|
|
37
|
+
"@types/react-dom": "^18.2.13",
|
|
38
|
+
"react": "18.2.0",
|
|
39
|
+
"react-dom": "18.2.0"
|
|
40
|
+
}
|
|
41
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/** @jsxImportSource react */
|
|
2
|
+
|
|
3
|
+
import { qwikify$ } from "@qwik.dev/react";
|
|
4
|
+
import { Button, Slider } from "@mui/material";
|
|
5
|
+
import { DataGrid, GridColDef, GridValueGetterParams } from "@mui/x-data-grid";
|
|
6
|
+
|
|
7
|
+
export const MUIButton = qwikify$(Button);
|
|
8
|
+
export const MUISlider = qwikify$(Slider, { eagerness: "hover" });
|
|
9
|
+
|
|
10
|
+
export const TableApp = qwikify$(() => {
|
|
11
|
+
const columns: GridColDef[] = [
|
|
12
|
+
{ field: "id", headerName: "ID", width: 70 },
|
|
13
|
+
{ field: "firstName", headerName: "First name", width: 130 },
|
|
14
|
+
{ field: "lastName", headerName: "Last name", width: 130 },
|
|
15
|
+
{
|
|
16
|
+
field: "age",
|
|
17
|
+
headerName: "Age",
|
|
18
|
+
type: "number",
|
|
19
|
+
width: 90,
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
field: "fullName",
|
|
23
|
+
headerName: "Full name",
|
|
24
|
+
description: "This column has a value getter and is not sortable.",
|
|
25
|
+
sortable: false,
|
|
26
|
+
width: 160,
|
|
27
|
+
valueGetter: (params: GridValueGetterParams) =>
|
|
28
|
+
`${params.row.firstName || ""} ${params.row.lastName || ""}`,
|
|
29
|
+
},
|
|
30
|
+
];
|
|
31
|
+
|
|
32
|
+
const rows = [
|
|
33
|
+
{ id: 1, lastName: "Snow", firstName: "Jon", age: 35 },
|
|
34
|
+
{ id: 2, lastName: "Lannister", firstName: "Cersei", age: 42 },
|
|
35
|
+
{ id: 3, lastName: "Lannister", firstName: "Jaime", age: 45 },
|
|
36
|
+
{ id: 4, lastName: "Stark", firstName: "Arya", age: 16 },
|
|
37
|
+
{ id: 5, lastName: "Targaryen", firstName: "Daenerys", age: null },
|
|
38
|
+
{ id: 6, lastName: "Melisandre", firstName: null, age: 150 },
|
|
39
|
+
{ id: 7, lastName: "Clifford", firstName: "Ferrara", age: 44 },
|
|
40
|
+
{ id: 8, lastName: "Frances", firstName: "Rossini", age: 36 },
|
|
41
|
+
{ id: 9, lastName: "Roxie", firstName: "Harvey", age: 65 },
|
|
42
|
+
];
|
|
43
|
+
|
|
44
|
+
return (
|
|
45
|
+
<>
|
|
46
|
+
<h1>Hello from React</h1>
|
|
47
|
+
|
|
48
|
+
<div style={{ height: 400, width: "100%" }}>
|
|
49
|
+
<DataGrid
|
|
50
|
+
rows={rows}
|
|
51
|
+
columns={columns}
|
|
52
|
+
pageSize={5}
|
|
53
|
+
rowsPerPageOptions={[5]}
|
|
54
|
+
checkboxSelection
|
|
55
|
+
disableSelectionOnClick
|
|
56
|
+
/>
|
|
57
|
+
</div>
|
|
58
|
+
</>
|
|
59
|
+
);
|
|
60
|
+
});
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { DocumentHead } from "@qwik.dev/router";
|
|
2
|
+
import { component$, useSignal } from "@qwik.dev/core";
|
|
3
|
+
import { MUIButton, MUISlider, TableApp } from "~/integrations/react/mui";
|
|
4
|
+
|
|
5
|
+
export default component$(() => {
|
|
6
|
+
const show = useSignal(false);
|
|
7
|
+
const count = useSignal(0);
|
|
8
|
+
const variant = useSignal<"contained" | "outlined" | "text">("contained");
|
|
9
|
+
|
|
10
|
+
return (
|
|
11
|
+
<>
|
|
12
|
+
<h1>Qwik/React mother of all demos</h1>
|
|
13
|
+
<select
|
|
14
|
+
value={variant.value}
|
|
15
|
+
onChange$={(ev) => {
|
|
16
|
+
variant.value = (ev.target as any).value;
|
|
17
|
+
}}
|
|
18
|
+
>
|
|
19
|
+
<option>text</option>
|
|
20
|
+
<option>outlined</option>
|
|
21
|
+
<option selected>contained</option>
|
|
22
|
+
</select>
|
|
23
|
+
|
|
24
|
+
<MUISlider
|
|
25
|
+
value={count.value}
|
|
26
|
+
onChange$={(_, value) => {
|
|
27
|
+
count.value = value as number;
|
|
28
|
+
}}
|
|
29
|
+
/>
|
|
30
|
+
|
|
31
|
+
<MUIButton variant={variant.value} host:onClick$={() => alert("click")}>
|
|
32
|
+
Slider is {count.value}
|
|
33
|
+
</MUIButton>
|
|
34
|
+
|
|
35
|
+
<button onClick$={() => (show.value = true)}>Show table</button>
|
|
36
|
+
{show.value && (
|
|
37
|
+
<TableApp client:visible>Slider is {count.value}</TableApp>
|
|
38
|
+
)}
|
|
39
|
+
</>
|
|
40
|
+
);
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
export const head: DocumentHead = {
|
|
44
|
+
title: "Qwik React",
|
|
45
|
+
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { StorybookConfig } from "storybook-framework-qwik";
|
|
2
|
+
|
|
3
|
+
const config: StorybookConfig = {
|
|
4
|
+
addons: ["@storybook/addon-links", "@storybook/addon-essentials"],
|
|
5
|
+
framework: {
|
|
6
|
+
name: "storybook-framework-qwik",
|
|
7
|
+
},
|
|
8
|
+
core: {
|
|
9
|
+
renderer: "storybook-framework-qwik",
|
|
10
|
+
},
|
|
11
|
+
stories: [
|
|
12
|
+
// ...rootMain.stories,
|
|
13
|
+
"../src/components/**/*.stories.mdx",
|
|
14
|
+
"../src/components/**/*.stories.@(js|jsx|ts|tsx)",
|
|
15
|
+
],
|
|
16
|
+
|
|
17
|
+
viteFinal: async (config: any) => {
|
|
18
|
+
return config;
|
|
19
|
+
},
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
export default config;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Parameters } from "storybook-framework-qwik";
|
|
2
|
+
|
|
3
|
+
import "../src/global.css";
|
|
4
|
+
|
|
5
|
+
export const parameters: Parameters = {
|
|
6
|
+
a11y: {
|
|
7
|
+
config: {},
|
|
8
|
+
options: {
|
|
9
|
+
checks: { "color-contrast": { options: { noScroll: true } } },
|
|
10
|
+
restoreScroll: true,
|
|
11
|
+
},
|
|
12
|
+
},
|
|
13
|
+
options: {
|
|
14
|
+
showRoots: true,
|
|
15
|
+
},
|
|
16
|
+
docs: {
|
|
17
|
+
iframeHeight: "200px",
|
|
18
|
+
},
|
|
19
|
+
};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"extends": "../tsconfig.json",
|
|
3
|
+
"compilerOptions": {
|
|
4
|
+
"experimentalDecorators": true,
|
|
5
|
+
"emitDecoratorMetadata": true
|
|
6
|
+
},
|
|
7
|
+
|
|
8
|
+
"exclude": [
|
|
9
|
+
"../**/*.spec.ts",
|
|
10
|
+
"../**/*.test.ts",
|
|
11
|
+
"../**/*.spec.tsx",
|
|
12
|
+
"../**/*.test.tsx"
|
|
13
|
+
],
|
|
14
|
+
"include": [
|
|
15
|
+
"../src/**/*.stories.ts",
|
|
16
|
+
"../src/**/*.stories.js",
|
|
17
|
+
"../src/**/*.stories.jsx",
|
|
18
|
+
"../src/**/*.stories.tsx",
|
|
19
|
+
"../src/**/*.stories.mdx",
|
|
20
|
+
"*.ts",
|
|
21
|
+
"*.js",
|
|
22
|
+
"preview.tsx"
|
|
23
|
+
]
|
|
24
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"description": "Add Storybook",
|
|
3
|
+
"__qwik__": {
|
|
4
|
+
"displayName": "Integration: Storybook",
|
|
5
|
+
"priority": -10,
|
|
6
|
+
"docs": [
|
|
7
|
+
"https://qwik.dev/integrations/integration/storybook/",
|
|
8
|
+
"https://storybook.js.org/docs/qwik/get-started/why-storybook"
|
|
9
|
+
]
|
|
10
|
+
},
|
|
11
|
+
"devDependencies": {
|
|
12
|
+
"@storybook/addon-essentials": "^8.2.8",
|
|
13
|
+
"@storybook/addon-links": "^8.2.8",
|
|
14
|
+
"@storybook/blocks": "^8.2.8",
|
|
15
|
+
"@storybook/builder-vite": "^8.2.8",
|
|
16
|
+
"@storybook/html": "^8.2.8",
|
|
17
|
+
"@storybook/html-vite": "^8.2.8",
|
|
18
|
+
"storybook": "^8.2.8",
|
|
19
|
+
"storybook-framework-qwik": "^0.4.0"
|
|
20
|
+
},
|
|
21
|
+
"scripts": {
|
|
22
|
+
"build-storybook": "storybook build",
|
|
23
|
+
"storybook": "storybook dev -p 6006"
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from "storybook-framework-qwik";
|
|
2
|
+
import { Button, type ButtonProps } from "./button";
|
|
3
|
+
|
|
4
|
+
const meta: Meta<ButtonProps> = {
|
|
5
|
+
component: Button,
|
|
6
|
+
};
|
|
7
|
+
|
|
8
|
+
type Story = StoryObj<ButtonProps>;
|
|
9
|
+
|
|
10
|
+
export default meta;
|
|
11
|
+
|
|
12
|
+
export const Primary: Story = {
|
|
13
|
+
args: {
|
|
14
|
+
size: "medium",
|
|
15
|
+
},
|
|
16
|
+
render: (props) => <Button {...props}>Some button</Button>,
|
|
17
|
+
};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { component$, Slot, useStylesScoped$ } from "@qwik.dev/core";
|
|
2
|
+
|
|
3
|
+
export interface ButtonProps {
|
|
4
|
+
size?: "small" | "medium" | "large";
|
|
5
|
+
}
|
|
6
|
+
export const Button = component$<ButtonProps>(({ size = "medium" }) => {
|
|
7
|
+
useStylesScoped$(`
|
|
8
|
+
.size-small {
|
|
9
|
+
font-size: 10px;
|
|
10
|
+
}
|
|
11
|
+
.size-medium {
|
|
12
|
+
font-size: 14px;
|
|
13
|
+
}
|
|
14
|
+
.size-large {
|
|
15
|
+
font-size: 18px;
|
|
16
|
+
}
|
|
17
|
+
`);
|
|
18
|
+
return (
|
|
19
|
+
<button
|
|
20
|
+
class={{
|
|
21
|
+
[`size-${size}`]: true,
|
|
22
|
+
}}
|
|
23
|
+
>
|
|
24
|
+
<Slot></Slot>
|
|
25
|
+
</button>
|
|
26
|
+
);
|
|
27
|
+
});
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"description": "Zero-cost CSS-in-JS for Qwik",
|
|
3
|
+
"__qwik__": {
|
|
4
|
+
"displayName": "Integration: Styled-Vanilla-Extract (styling)",
|
|
5
|
+
"priority": -10,
|
|
6
|
+
"viteConfig": {
|
|
7
|
+
"imports": [
|
|
8
|
+
{
|
|
9
|
+
"namedImports": [
|
|
10
|
+
"vanillaExtractPlugin"
|
|
11
|
+
],
|
|
12
|
+
"importPath": "styled-vanilla-extract/vite"
|
|
13
|
+
}
|
|
14
|
+
],
|
|
15
|
+
"vitePlugins": [
|
|
16
|
+
"vanillaExtractPlugin()"
|
|
17
|
+
]
|
|
18
|
+
},
|
|
19
|
+
"docs": [
|
|
20
|
+
"https://github.com/wmertens/styled-vanilla-extract/blob/main/README.md",
|
|
21
|
+
"https://vanilla-extract.style/"
|
|
22
|
+
]
|
|
23
|
+
},
|
|
24
|
+
"devDependencies": {
|
|
25
|
+
"@vanilla-extract/css": "^1.12.0",
|
|
26
|
+
"styled-vanilla-extract": "^0.5.4"
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { style, styled } from "styled-vanilla-extract/qwik";
|
|
2
|
+
|
|
3
|
+
export const header = style({});
|
|
4
|
+
|
|
5
|
+
export const pride = style({});
|
|
6
|
+
|
|
7
|
+
export const odd = style({});
|
|
8
|
+
|
|
9
|
+
export const Host = styled.div`
|
|
10
|
+
display: grid;
|
|
11
|
+
|
|
12
|
+
align-items: center;
|
|
13
|
+
justify-content: center;
|
|
14
|
+
justify-items: center;
|
|
15
|
+
/* --rotation: 135deg; */
|
|
16
|
+
--rotation: 225deg;
|
|
17
|
+
--size-step: 10px;
|
|
18
|
+
--odd-color-step: 5;
|
|
19
|
+
--even-color-step: 5;
|
|
20
|
+
--center: 12;
|
|
21
|
+
|
|
22
|
+
width: 100%;
|
|
23
|
+
height: 500px;
|
|
24
|
+
|
|
25
|
+
contain: strict;
|
|
26
|
+
`;
|
|
27
|
+
|
|
28
|
+
export const Range = styled.input`
|
|
29
|
+
width: 100%;
|
|
30
|
+
`;
|
|
31
|
+
|
|
32
|
+
export const Square = styled.div`
|
|
33
|
+
--size: calc(40px + var(--index) * var(--size-step));
|
|
34
|
+
|
|
35
|
+
display: block;
|
|
36
|
+
width: var(--size);
|
|
37
|
+
height: var(--size);
|
|
38
|
+
transform: rotateZ(
|
|
39
|
+
calc(var(--rotation) * var(--state) * (var(--center) - var(--index)))
|
|
40
|
+
);
|
|
41
|
+
transition-property: transform, border-color;
|
|
42
|
+
transition-duration: 5s;
|
|
43
|
+
transition-timing-function: ease-in-out;
|
|
44
|
+
grid-area: 1 / 1;
|
|
45
|
+
background: white;
|
|
46
|
+
border-width: 2px;
|
|
47
|
+
border-style: solid;
|
|
48
|
+
border-color: black;
|
|
49
|
+
box-sizing: border-box;
|
|
50
|
+
will-change: transform, border-color;
|
|
51
|
+
|
|
52
|
+
contain: strict;
|
|
53
|
+
|
|
54
|
+
&${odd} {
|
|
55
|
+
--luminance: calc(
|
|
56
|
+
1 - calc(calc(var(--index) * var(--odd-color-step)) / 256)
|
|
57
|
+
);
|
|
58
|
+
background: rgb(
|
|
59
|
+
calc(172 * var(--luminance)),
|
|
60
|
+
calc(127 * var(--luminance)),
|
|
61
|
+
calc(244 * var(--luminance))
|
|
62
|
+
);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
${pride} &:nth-child(12n + 1) {
|
|
66
|
+
background: #e70000;
|
|
67
|
+
}
|
|
68
|
+
${pride} &:nth-child(12n + 3) {
|
|
69
|
+
background: #ff8c00;
|
|
70
|
+
}
|
|
71
|
+
${pride} &:nth-child(12n + 5) {
|
|
72
|
+
background: #ffef00;
|
|
73
|
+
}
|
|
74
|
+
${pride} &:nth-child(12n + 7) {
|
|
75
|
+
background: #00811f;
|
|
76
|
+
}
|
|
77
|
+
${pride} &:nth-child(12n + 9) {
|
|
78
|
+
background: #0044ff;
|
|
79
|
+
}
|
|
80
|
+
${pride} &:nth-child(12n + 11) {
|
|
81
|
+
background: #760089;
|
|
82
|
+
}
|
|
83
|
+
`;
|