diff --git a/index.html b/index.html
index 3d834a6..3ae5949 100644
--- a/index.html
+++ b/index.html
@@ -6,7 +6,10 @@
-
Solid App
+ Card-jong
+
+
+
diff --git a/package.json b/package.json
index 7e5eef9..fd7fb59 100644
--- a/package.json
+++ b/package.json
@@ -23,6 +23,8 @@
"vite-plugin-solid": "^2.8.2"
},
"dependencies": {
+ "@solidjs/router": "^0.13.3",
+ "axios": "^1.6.8",
"solid-js": "^1.8.11"
}
}
\ No newline at end of file
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 13dcb7c..340e00e 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -8,6 +8,12 @@ importers:
.:
dependencies:
+ '@solidjs/router':
+ specifier: ^0.13.3
+ version: 0.13.3(solid-js@1.8.11)
+ axios:
+ specifier: ^1.6.8
+ version: 1.6.8
solid-js:
specifier: ^1.8.11
version: 1.8.11
@@ -593,6 +599,11 @@ packages:
peerDependencies:
solid-js: ^1.6.12
+ '@solidjs/router@0.13.3':
+ resolution: {integrity: sha512-p8zznlvnN3KySMXqT8irhubgDNTETNa/guaGHU/cZl7kuiPO3PmkWNYfoNCygtEpoxLmLpf62/ZKeyhFdZexsw==}
+ peerDependencies:
+ solid-js: ^1.8.6
+
'@types/babel__core@7.20.5':
resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==}
@@ -755,6 +766,9 @@ packages:
resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==}
engines: {node: '>= 0.4'}
+ asynckit@0.4.0:
+ resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
+
autoprefixer@10.4.19:
resolution: {integrity: sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==}
engines: {node: ^10 || ^12 || >=14}
@@ -766,6 +780,9 @@ packages:
resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==}
engines: {node: '>= 0.4'}
+ axios@1.6.8:
+ resolution: {integrity: sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==}
+
babel-plugin-jsx-dom-expressions@0.37.13:
resolution: {integrity: sha512-oAEMMIgU0h1DmHn4ZDaBBFc08nsVJciLq9pF7g0ZdpeIDKfY4zXjXr8+/oBjKhXG8nyomhnTodPjeG+/ZXcWXQ==}
peerDependencies:
@@ -846,6 +863,10 @@ packages:
color-name@1.1.4:
resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
+ combined-stream@1.0.8:
+ resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
+ engines: {node: '>= 0.8'}
+
commander@4.1.1:
resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
engines: {node: '>= 6'}
@@ -900,6 +921,10 @@ packages:
resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}
engines: {node: '>= 0.4'}
+ delayed-stream@1.0.0:
+ resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
+ engines: {node: '>=0.4.0'}
+
didyoumean@1.2.2:
resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==}
@@ -1055,6 +1080,15 @@ packages:
flatted@3.3.1:
resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==}
+ follow-redirects@1.15.6:
+ resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==}
+ engines: {node: '>=4.0'}
+ peerDependencies:
+ debug: '*'
+ peerDependenciesMeta:
+ debug:
+ optional: true
+
for-each@0.3.3:
resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==}
@@ -1062,6 +1096,10 @@ packages:
resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==}
engines: {node: '>=14'}
+ form-data@4.0.0:
+ resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==}
+ engines: {node: '>= 6'}
+
fraction.js@4.3.7:
resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==}
@@ -1399,6 +1437,14 @@ packages:
resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
engines: {node: '>=8.6'}
+ mime-db@1.52.0:
+ resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
+ engines: {node: '>= 0.6'}
+
+ mime-types@2.1.35:
+ resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
+ engines: {node: '>= 0.6'}
+
minimatch@3.1.2:
resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
@@ -1579,6 +1625,9 @@ packages:
prop-types@15.8.1:
resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==}
+ proxy-from-env@1.1.0:
+ resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==}
+
punycode@2.3.1:
resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
engines: {node: '>=6'}
@@ -2464,6 +2513,10 @@ snapshots:
dependencies:
solid-js: 1.8.11
+ '@solidjs/router@0.13.3(solid-js@1.8.11)':
+ dependencies:
+ solid-js: 1.8.11
+
'@types/babel__core@7.20.5':
dependencies:
'@babel/parser': 7.22.5
@@ -2682,6 +2735,8 @@ snapshots:
is-array-buffer: 3.0.4
is-shared-array-buffer: 1.0.3
+ asynckit@0.4.0: {}
+
autoprefixer@10.4.19(postcss@8.4.38):
dependencies:
browserslist: 4.23.0
@@ -2696,6 +2751,14 @@ snapshots:
dependencies:
possible-typed-array-names: 1.0.0
+ axios@1.6.8:
+ dependencies:
+ follow-redirects: 1.15.6
+ form-data: 4.0.0
+ proxy-from-env: 1.1.0
+ transitivePeerDependencies:
+ - debug
+
babel-plugin-jsx-dom-expressions@0.37.13(@babel/core@7.23.7):
dependencies:
'@babel/core': 7.23.7
@@ -2792,6 +2855,10 @@ snapshots:
color-name@1.1.4: {}
+ combined-stream@1.0.8:
+ dependencies:
+ delayed-stream: 1.0.0
+
commander@4.1.1: {}
concat-map@0.0.1: {}
@@ -2844,6 +2911,8 @@ snapshots:
has-property-descriptors: 1.0.2
object-keys: 1.1.1
+ delayed-stream@1.0.0: {}
+
didyoumean@1.2.2: {}
dir-glob@3.0.1:
@@ -3123,6 +3192,8 @@ snapshots:
flatted@3.3.1: {}
+ follow-redirects@1.15.6: {}
+
for-each@0.3.3:
dependencies:
is-callable: 1.2.7
@@ -3132,6 +3203,12 @@ snapshots:
cross-spawn: 7.0.3
signal-exit: 4.1.0
+ form-data@4.0.0:
+ dependencies:
+ asynckit: 0.4.0
+ combined-stream: 1.0.8
+ mime-types: 2.1.35
+
fraction.js@4.3.7: {}
fs.realpath@1.0.0: {}
@@ -3452,6 +3529,12 @@ snapshots:
braces: 3.0.2
picomatch: 2.3.1
+ mime-db@1.52.0: {}
+
+ mime-types@2.1.35:
+ dependencies:
+ mime-db: 1.52.0
+
minimatch@3.1.2:
dependencies:
brace-expansion: 1.1.11
@@ -3615,6 +3698,8 @@ snapshots:
object-assign: 4.1.1
react-is: 16.13.1
+ proxy-from-env@1.1.0: {}
+
punycode@2.3.1: {}
queue-microtask@1.2.3: {}
diff --git a/src/App.tsx b/src/App.tsx
deleted file mode 100644
index aa1a739..0000000
--- a/src/App.tsx
+++ /dev/null
@@ -1,7 +0,0 @@
-export default function() {
- return (
-
- Hola mundo :D
-
- );
-}
diff --git a/src/index.css b/src/index.css
index b5c61c9..2834f56 100644
--- a/src/index.css
+++ b/src/index.css
@@ -1,3 +1,26 @@
@tailwind base;
@tailwind components;
@tailwind utilities;
+
+:root {
+ --c-bg: #151515;
+ --c-on-bg: white;
+
+ --c-bg-2: #202020;
+
+ --c-border-1: #a0a0a0
+}
+
+@media (prefers-color-scheme: light) {
+ :root {
+ --c-bg: #f0f0f0;
+ --c-on-bg: black;
+ --c-bg-2: white;
+ }
+}
+
+body {
+ background-color: var(--c-bg);
+ color: var(--c-on-bg);
+ font-family: "Marcellus", serif;
+}
diff --git a/src/index.tsx b/src/index.tsx
index bcf5f51..64783a4 100644
--- a/src/index.tsx
+++ b/src/index.tsx
@@ -1,8 +1,9 @@
/* @refresh reload */
import { render } from "solid-js/web";
+import {HashRouter, Route} from "@solidjs/router";
import "./index.css";
-import App from "./App";
+import {Index} from "./pages/Index";
const root = document.getElementById("root");
@@ -10,4 +11,11 @@ if (import.meta.env.DEV && !(root instanceof HTMLElement)) {
throw new Error("Root element not found. Did you forget to add it to your index.html? Or maybe the id attribute got misspelled?");
}
-render(() => , root!);
+render(
+ () => (
+
+
+
+ ),
+ root!,
+);
diff --git a/src/pages/Index.tsx b/src/pages/Index.tsx
new file mode 100644
index 0000000..c2d1020
--- /dev/null
+++ b/src/pages/Index.tsx
@@ -0,0 +1,105 @@
+import { A } from "@solidjs/router";
+import { createSignal, onMount, Show } from "solid-js";
+import { backend, UserInfo } from "../utils";
+
+
+export function Index() {
+ const [loading, setLoading] = createSignal(false);
+ const [userInfo, setUserInfo] = createSignal(null);
+ const [error, setError] = createSignal("");
+ const [username, setUsername] = createSignal("");
+
+ onMount(() => {
+ // attempt to get userinfo from localstorage
+ // validate userinfo with backend
+ console.log("validating userinfo in localstorage");
+ });
+
+ // Register a user in the backend, get their user_id, store it in localStorage.
+ const registerUser = async(ev: Event) => {
+ ev.preventDefault();
+
+ setLoading(true);
+ setError("");
+ try {
+ const user = username();
+
+ if (user.length === 0) {
+ throw new Error("Username is empty");
+ }
+
+ const response = await backend.get("/register");
+ console.log(response.data);
+ } catch (_e) {
+ const e = _e as Error;
+ setError(e.message);
+ } finally {
+ setLoading(false);
+ }
+ };
+
+ return (
+
+
+ Card-jong
+
+
Mahjong with cards
+
+
+
Play:
+
+
+
+
+ :D
+
+
+ Error: {error()}
+
+
+
+
+
+ );
+}
+
+
+function Registration() {
+ return (
+
+ :D
+
+ );
+}
diff --git a/src/utils.ts b/src/utils.ts
new file mode 100644
index 0000000..0a846a3
--- /dev/null
+++ b/src/utils.ts
@@ -0,0 +1,11 @@
+import axios from "axios";
+
+export const backend = axios.create({
+ baseURL: `${import.meta.env.VITE_BACKEND_URL}/api`,
+});
+
+export type UserInfo = {
+ useruiid: number,
+ username: string,
+}
+
diff --git a/tailwind.config.js b/tailwind.config.js
index 2cd1130..8de6e9f 100644
--- a/tailwind.config.js
+++ b/tailwind.config.js
@@ -4,7 +4,14 @@ module.exports = {
"./src/**/*.{js,jsx,ts,tsx}",
],
theme: {
- extend: {},
+ extend: {
+ colors: {
+ "c-bg": "var(--c-bg)",
+ "c-on-bg": "var(--c-on-bg)",
+ "c-bg-2": "var(--c-bg-2)",
+ "c-border-1": "var(--c-border-1)",
+ },
+ },
},
plugins: [],
};
diff --git a/vite.config.ts b/vite.config.mts
similarity index 50%
rename from vite.config.ts
rename to vite.config.mts
index 74fce7e..e13aad7 100644
--- a/vite.config.ts
+++ b/vite.config.mts
@@ -1,20 +1,20 @@
-import { defineConfig } from 'vite';
-import solidPlugin from 'vite-plugin-solid';
+import { defineConfig } from "vite";
+import solidPlugin from "vite-plugin-solid";
// import devtools from 'solid-devtools/vite';
export default defineConfig({
- plugins: [
- /*
+ plugins: [
+ /*
Uncomment the following line to enable solid-devtools.
For more info see https://github.com/thetarnav/solid-devtools/tree/main/packages/extension#readme
*/
- // devtools(),
- solidPlugin(),
- ],
- server: {
- port: 3000,
- },
- build: {
- target: 'esnext',
- },
+ // devtools(),
+ solidPlugin(),
+ ],
+ server: {
+ port: 3000,
+ },
+ build: {
+ target: "esnext",
+ },
});