aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/examples/kitchen-sink/apps/blog
diff options
context:
space:
mode:
author简律纯 <hsiangnianian@outlook.com>2023-04-28 01:47:57 +0800
committer简律纯 <hsiangnianian@outlook.com>2023-04-28 01:47:57 +0800
commit8b2c4a38a461ff5ecc95972291bc711e2c5dec9a (patch)
tree29f552e3df949073e21bf5c76d7abc3044830ec6 /examples/kitchen-sink/apps/blog
parentfc8c5fdce62fb229202659408798a7b6c98f6e8b (diff)
downloadHydroRoll-8b2c4a38a461ff5ecc95972291bc711e2c5dec9a.tar.gz
HydroRoll-8b2c4a38a461ff5ecc95972291bc711e2c5dec9a.zip
Diffstat (limited to 'examples/kitchen-sink/apps/blog')
-rw-r--r--examples/kitchen-sink/apps/blog/.gitignore11
-rw-r--r--examples/kitchen-sink/apps/blog/README.md34
-rw-r--r--examples/kitchen-sink/apps/blog/app/entry.client.tsx22
-rw-r--r--examples/kitchen-sink/apps/blog/app/entry.server.tsx18
-rw-r--r--examples/kitchen-sink/apps/blog/app/root.tsx37
-rw-r--r--examples/kitchen-sink/apps/blog/app/routes/index.tsx18
-rw-r--r--examples/kitchen-sink/apps/blog/app/styles.css55
-rw-r--r--examples/kitchen-sink/apps/blog/package.json32
-rw-r--r--examples/kitchen-sink/apps/blog/public/favicon.icobin0 -> 16958 bytes
-rw-r--r--examples/kitchen-sink/apps/blog/remix.config.js10
-rw-r--r--examples/kitchen-sink/apps/blog/remix.env.d.ts2
-rw-r--r--examples/kitchen-sink/apps/blog/server.js4
-rw-r--r--examples/kitchen-sink/apps/blog/tsconfig.json20
13 files changed, 263 insertions, 0 deletions
diff --git a/examples/kitchen-sink/apps/blog/.gitignore b/examples/kitchen-sink/apps/blog/.gitignore
new file mode 100644
index 0000000..42ec5e4
--- /dev/null
+++ b/examples/kitchen-sink/apps/blog/.gitignore
@@ -0,0 +1,11 @@
+node_modules
+
+.cache
+.env
+.vercel
+.output
+
+build
+public/build
+api/index.js*
+api/_assets*
diff --git a/examples/kitchen-sink/apps/blog/README.md b/examples/kitchen-sink/apps/blog/README.md
new file mode 100644
index 0000000..944936b
--- /dev/null
+++ b/examples/kitchen-sink/apps/blog/README.md
@@ -0,0 +1,34 @@
+# Welcome to Remix!
+
+- [Remix Docs](https://remix.run/docs)
+
+## Deployment
+
+After having run the `create-remix` command and selected "Vercel" as a deployment target, you only need to [import your Git repository](https://vercel.com/new) into Vercel, and it will be deployed.
+
+If you'd like to avoid using a Git repository, you can also deploy the directory by running [Vercel CLI](https://vercel.com/cli):
+
+```sh
+npm i -g vercel
+vercel
+```
+
+It is generally recommended to use a Git repository, because future commits will then automatically be deployed by Vercel, through its [Git Integration](https://vercel.com/docs/concepts/git).
+
+## Development
+
+To run your Remix app locally, make sure your project's local dependencies are installed:
+
+```sh
+npm install
+```
+
+Afterwards, start the Remix development server like so:
+
+```sh
+npm run dev
+```
+
+Open up [http://localhost:3000](http://localhost:3000) and you should be ready to go!
+
+If you're used to using the `vercel dev` command provided by [Vercel CLI](https://vercel.com/cli) instead, you can also use that, but it's not needed.
diff --git a/examples/kitchen-sink/apps/blog/app/entry.client.tsx b/examples/kitchen-sink/apps/blog/app/entry.client.tsx
new file mode 100644
index 0000000..8338545
--- /dev/null
+++ b/examples/kitchen-sink/apps/blog/app/entry.client.tsx
@@ -0,0 +1,22 @@
+import { RemixBrowser } from "@remix-run/react";
+import { startTransition, StrictMode } from "react";
+import { hydrateRoot } from "react-dom/client";
+
+function hydrate() {
+ startTransition(() => {
+ hydrateRoot(
+ document,
+ <StrictMode>
+ <RemixBrowser />
+ </StrictMode>
+ );
+ });
+}
+
+if (typeof requestIdleCallback === "function") {
+ requestIdleCallback(hydrate);
+} else {
+ // Safari doesn't support requestIdleCallback
+ // https://caniuse.com/requestidlecallback
+ setTimeout(hydrate, 1);
+}
diff --git a/examples/kitchen-sink/apps/blog/app/entry.server.tsx b/examples/kitchen-sink/apps/blog/app/entry.server.tsx
new file mode 100644
index 0000000..5112e09
--- /dev/null
+++ b/examples/kitchen-sink/apps/blog/app/entry.server.tsx
@@ -0,0 +1,18 @@
+import handleRequest from "@vercel/remix-entry-server";
+import { RemixServer } from "@remix-run/react";
+import type { EntryContext } from "@remix-run/server-runtime";
+
+export default function (
+ request: Request,
+ responseStatusCode: number,
+ responseHeaders: Headers,
+ remixContext: EntryContext
+) {
+ const remixServer = <RemixServer context={remixContext} url={request.url} />;
+ return handleRequest(
+ request,
+ responseStatusCode,
+ responseHeaders,
+ remixServer
+ );
+}
diff --git a/examples/kitchen-sink/apps/blog/app/root.tsx b/examples/kitchen-sink/apps/blog/app/root.tsx
new file mode 100644
index 0000000..23a08a8
--- /dev/null
+++ b/examples/kitchen-sink/apps/blog/app/root.tsx
@@ -0,0 +1,37 @@
+import type { MetaFunction, LinksFunction } from "@remix-run/node";
+import {
+ Links,
+ LiveReload,
+ Meta,
+ Outlet,
+ Scripts,
+ ScrollRestoration,
+} from "@remix-run/react";
+import styles from "~/styles.css";
+import { Analytics } from "@vercel/analytics/react";
+
+export const meta: MetaFunction = () => ({
+ charset: "utf-8",
+ title: "Blog | Kitchen Sink",
+ viewport: "width=device-width,initial-scale=1",
+});
+
+export const links: LinksFunction = () => [{ rel: "stylesheet", href: styles }];
+
+export default function App() {
+ return (
+ <html lang="en">
+ <head>
+ <Meta />
+ <Links />
+ </head>
+ <body>
+ <Outlet />
+ <ScrollRestoration />
+ <Scripts />
+ <LiveReload />
+ <Analytics />
+ </body>
+ </html>
+ );
+}
diff --git a/examples/kitchen-sink/apps/blog/app/routes/index.tsx b/examples/kitchen-sink/apps/blog/app/routes/index.tsx
new file mode 100644
index 0000000..92dc0cd
--- /dev/null
+++ b/examples/kitchen-sink/apps/blog/app/routes/index.tsx
@@ -0,0 +1,18 @@
+import { CounterButton, NewTabLink } from "ui";
+
+export default function Index() {
+ return (
+ <div className="container">
+ <h1 className="title">
+ Blog <br />
+ <span>Kitchen Sink</span>
+ </h1>
+ <CounterButton />
+ <p className="description">
+ Built With{" "}
+ <NewTabLink href="https://turbo.build/repo">Turborepo</NewTabLink> +{" "}
+ <NewTabLink href="https://remix.run/">Remix</NewTabLink>
+ </p>
+ </div>
+ );
+}
diff --git a/examples/kitchen-sink/apps/blog/app/styles.css b/examples/kitchen-sink/apps/blog/app/styles.css
new file mode 100644
index 0000000..d4b766e
--- /dev/null
+++ b/examples/kitchen-sink/apps/blog/app/styles.css
@@ -0,0 +1,55 @@
+html {
+ font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont,
+ Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif;
+ -webkit-text-size-adjust: 100%;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ -webkit-tap-highlight-color: transparent;
+ line-height: 1.5;
+ tab-size: 4;
+}
+
+body {
+ margin: 0;
+}
+
+.container {
+ min-height: 100vh;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ gap: 1.5rem;
+ max-width: 100%;
+ margin: 0 auto;
+ padding: 0 16px;
+ text-align: center;
+}
+
+.title {
+ font-size: 3rem;
+ font-weight: 700;
+ margin: 0;
+}
+
+.title span {
+ display: inline-block;
+ background-image: linear-gradient(to right, #3b82f6, #ef4444);
+ -webkit-background-clip: text;
+ background-clip: text;
+ color: transparent;
+}
+
+.description {
+ color: #9ca3af;
+ font-weight: 500;
+}
+
+.description a {
+ color: #3b82f6;
+ text-decoration: none;
+}
+
+.description a:hover {
+ text-decoration: underline;
+}
diff --git a/examples/kitchen-sink/apps/blog/package.json b/examples/kitchen-sink/apps/blog/package.json
new file mode 100644
index 0000000..c42d201
--- /dev/null
+++ b/examples/kitchen-sink/apps/blog/package.json
@@ -0,0 +1,32 @@
+{
+ "name": "blog",
+ "version": "0.0.0",
+ "private": true,
+ "sideEffects": false,
+ "scripts": {
+ "build": "remix build",
+ "dev": "remix dev"
+ },
+ "dependencies": {
+ "@remix-run/node": "^1.13.0",
+ "@remix-run/react": "^1.13.0",
+ "@remix-run/serve": "^1.13.0",
+ "@remix-run/server-runtime": "^1.13.0",
+ "@vercel/analytics": "^0.1.10",
+ "@vercel/remix-entry-server": "^0.1.0",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0",
+ "ui": "workspace:*"
+ },
+ "devDependencies": {
+ "@remix-run/dev": "^1.13.0",
+ "@types/react": "^18.0.25",
+ "@types/react-dom": "^18.0.11",
+ "eslint": "^8.28.0",
+ "typescript": "^4.9.3",
+ "tsconfig": "workspace:*"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+}
diff --git a/examples/kitchen-sink/apps/blog/public/favicon.ico b/examples/kitchen-sink/apps/blog/public/favicon.ico
new file mode 100644
index 0000000..8830cf6
--- /dev/null
+++ b/examples/kitchen-sink/apps/blog/public/favicon.ico
Binary files differ
diff --git a/examples/kitchen-sink/apps/blog/remix.config.js b/examples/kitchen-sink/apps/blog/remix.config.js
new file mode 100644
index 0000000..260b82c
--- /dev/null
+++ b/examples/kitchen-sink/apps/blog/remix.config.js
@@ -0,0 +1,10 @@
+/**
+ * @type {import('@remix-run/dev').AppConfig}
+ */
+module.exports = {
+ ignoredRouteFiles: ["**/.*"],
+ // appDirectory: "app",
+ // assetsBuildDirectory: "public/build",
+ // serverBuildPath: "build/index.js",
+ // publicPath: "/build/",
+};
diff --git a/examples/kitchen-sink/apps/blog/remix.env.d.ts b/examples/kitchen-sink/apps/blog/remix.env.d.ts
new file mode 100644
index 0000000..dcf8c45
--- /dev/null
+++ b/examples/kitchen-sink/apps/blog/remix.env.d.ts
@@ -0,0 +1,2 @@
+/// <reference types="@remix-run/dev" />
+/// <reference types="@remix-run/node" />
diff --git a/examples/kitchen-sink/apps/blog/server.js b/examples/kitchen-sink/apps/blog/server.js
new file mode 100644
index 0000000..4e2a0e0
--- /dev/null
+++ b/examples/kitchen-sink/apps/blog/server.js
@@ -0,0 +1,4 @@
+import { createRequestHandler } from "@remix-run/vercel";
+import * as build from "@remix-run/dev/server-build";
+
+export default createRequestHandler({ build, mode: process.env.NODE_ENV });
diff --git a/examples/kitchen-sink/apps/blog/tsconfig.json b/examples/kitchen-sink/apps/blog/tsconfig.json
new file mode 100644
index 0000000..791822c
--- /dev/null
+++ b/examples/kitchen-sink/apps/blog/tsconfig.json
@@ -0,0 +1,20 @@
+{
+ "include": ["remix.env.d.ts", "**/*.ts", "**/*.tsx"],
+ "compilerOptions": {
+ "lib": ["dom", "dom.iterable", "ES2019"],
+ "esModuleInterop": true,
+ "jsx": "react-jsx",
+ "moduleResolution": "node",
+ "resolveJsonModule": true,
+ "target": "ES2019",
+ "strict": true,
+ "forceConsistentCasingInFileNames": true,
+ "allowJs": true,
+ "baseUrl": ".",
+ "paths": {
+ "~/*": ["./app/*"]
+ },
+ "noEmit": true,
+ "isolatedModules": true
+ }
+}