diff --git a/client/src/index.tsx b/client/src/index.tsx deleted file mode 100644 index 9a3a45c..0000000 --- a/client/src/index.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import React from "react" -import ReactDOM from "react-dom" - -const Main = () => <> -

Numenera Datasphere

-
Campaign Settings
-
Player Characters
-
Cyphers and Artifacts
-; - -const main = () => { - ReactDOM.render(
, document.getElementById('root')) -} - -console.log(document.getElementById('root')) -main() diff --git a/kliento/.gitignore b/kliento/.gitignore new file mode 100644 index 0000000..378eac2 --- /dev/null +++ b/kliento/.gitignore @@ -0,0 +1 @@ +build diff --git a/client/package-lock.json b/kliento/package-lock.json similarity index 98% rename from client/package-lock.json rename to kliento/package-lock.json index ca8114b..2276dcc 100644 --- a/client/package-lock.json +++ b/kliento/package-lock.json @@ -1,5 +1,5 @@ { - "name": "datasphere-client", + "name": "kliento", "version": "1.0.0", "lockfileVersion": 1, "requires": true, @@ -397,6 +397,14 @@ "@babel/helper-plugin-utils": "^7.16.5" } }, + "@babel/runtime": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.5.tgz", + "integrity": "sha512-TXWihFIS3Pyv5hzR7j6ihmeLkZfrXGxAr5UfSl8CHf+6q/wpiYDkUau0czckpYG8QmnCIuPpdLtuA9VmuGGyMA==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, "@babel/template": { "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", @@ -1206,6 +1214,29 @@ "@sinonjs/commons": "^1.7.0" } }, + "@snowpack/plugin-react-refresh": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@snowpack/plugin-react-refresh/-/plugin-react-refresh-2.5.0.tgz", + "integrity": "sha512-3rYkwayAA+65IIYLXMEFqQwtBGbII9IidMJo1yXuj35kTEg9TdZrofoqcHaSts2sv2Nz0TD6v7BWRPdvCU0uIw==", + "dev": true, + "requires": { + "@babel/core": "^7.0.0", + "@babel/plugin-syntax-class-properties": "^7.10.0", + "react-refresh": "^0.9.0" + } + }, + "@snowpack/plugin-sass": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@snowpack/plugin-sass/-/plugin-sass-1.4.0.tgz", + "integrity": "sha512-Hzz/TYt4IKcjrInv+FyujLohtJHadZCUdz5nnfh1N7MwplHFmxgLuKiT8tsiafHFAGsuR+4ZpFTqLeSyQTHAhQ==", + "dev": true, + "requires": { + "execa": "^5.0.0", + "find-up": "^5.0.0", + "npm-run-path": "^4.0.1", + "sass": "^1.3.0" + } + }, "@snowpack/plugin-typescript": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/@snowpack/plugin-typescript/-/plugin-typescript-1.2.1.tgz", @@ -3289,6 +3320,14 @@ "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", "dev": true }, + "history": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.2.0.tgz", + "integrity": "sha512-uPSF6lAJb3nSePJ43hN3eKj1dTWpN9gMod0ZssbFTIsen+WehTmEadgL+kg78xLJFdRfrrC//SavDzmRVdE+Ig==", + "requires": { + "@babel/runtime": "^7.7.6" + } + }, "hosted-git-info": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz", @@ -3431,6 +3470,12 @@ "minimatch": "^3.0.4" } }, + "immutable": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.0.0.tgz", + "integrity": "sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==", + "dev": true + }, "import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", @@ -5885,6 +5930,29 @@ "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", "dev": true }, + "react-refresh": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.9.0.tgz", + "integrity": "sha512-Gvzk7OZpiqKSkxsQvO/mbTN1poglhmAV7gR/DdIrRrSMXraRQQlfikRJOr3Nb9GTMPC5kof948Zy6jJZIFtDvQ==", + "dev": true + }, + "react-router": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.2.1.tgz", + "integrity": "sha512-2fG0udBtxou9lXtK97eJeET2ki5//UWfQSl1rlJ7quwe6jrktK9FCCc8dQb5QY6jAv3jua8bBQRhhDOM/kVRsg==", + "requires": { + "history": "^5.2.0" + } + }, + "react-router-dom": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.2.1.tgz", + "integrity": "sha512-I6Zax+/TH/cZMDpj3/4Fl2eaNdcvoxxHoH1tYOREsQ22OKDYofGebrNm6CTPUcvLvZm63NL/vzCYdjf9CUhqmA==", + "requires": { + "history": "^5.2.0", + "react-router": "6.2.1" + } + }, "read-cmd-shim": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-2.0.0.tgz", @@ -5937,6 +6005,11 @@ "picomatch": "^2.2.1" } }, + "regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" + }, "regexpp": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", @@ -6085,6 +6158,17 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true }, + "sass": { + "version": "1.45.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.45.1.tgz", + "integrity": "sha512-pwPRiq29UR0o4X3fiQyCtrESldXvUQAAE0QmcJTpsI4kuHHcLzZ54M1oNBVIXybQv8QF2zfkpFcTxp8ta97dUA==", + "dev": true, + "requires": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + } + }, "saxes": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", diff --git a/client/package.json b/kliento/package.json similarity index 76% rename from client/package.json rename to kliento/package.json index 28d4c17..9364e22 100644 --- a/client/package.json +++ b/kliento/package.json @@ -1,5 +1,5 @@ { - "name": "datasphere-client", + "name": "kliento", "version": "1.0.0", "description": "", "main": "src/main.tsx", @@ -11,10 +11,14 @@ "author": "Savanni D'Gerinel ", "license": "AGPL-3.0-or-later", "dependencies": { + "history": "^5.2.0", "react": "^17.0.2", - "react-dom": "^17.0.2" + "react-dom": "^17.0.2", + "react-router-dom": "^6.2.1" }, "devDependencies": { + "@snowpack/plugin-react-refresh": "^2.5.0", + "@snowpack/plugin-sass": "^1.4.0", "@snowpack/plugin-typescript": "^1.2.1", "@types/react": "^17.0.35", "@types/react-dom": "^17.0.11", diff --git a/client/public/index.html b/kliento/public/index.html similarity index 100% rename from client/public/index.html rename to kliento/public/index.html diff --git a/client/snowpack.config.js b/kliento/snowpack.config.js similarity index 80% rename from client/snowpack.config.js rename to kliento/snowpack.config.js index 2eff94f..3c76d40 100644 --- a/client/snowpack.config.js +++ b/kliento/snowpack.config.js @@ -7,8 +7,11 @@ module.exports = { public: { url: '/', static: true }, src: { url: '/dist' }, }, + routes: [ + { match: 'routes', src: '/.*', dest: '/' }, + ], plugins: [ - /* ... */ + '@snowpack/plugin-sass', ], packageOptions: { /* ... */ diff --git a/kliento/src/components/Menu/index.tsx b/kliento/src/components/Menu/index.tsx new file mode 100644 index 0000000..611f832 --- /dev/null +++ b/kliento/src/components/Menu/index.tsx @@ -0,0 +1,16 @@ +import React from "react" +import { Link } from "react-router-dom" + +import "./styles.css" + +const MainMenu = () => () + +export default MainMenu + diff --git a/kliento/src/components/Menu/styles.scss b/kliento/src/components/Menu/styles.scss new file mode 100644 index 0000000..7e9542b --- /dev/null +++ b/kliento/src/components/Menu/styles.scss @@ -0,0 +1,3 @@ +.menu { + list-style-type: none; +} diff --git a/kliento/src/components/StatPool/index.tsx b/kliento/src/components/StatPool/index.tsx new file mode 100644 index 0000000..c2dae2c --- /dev/null +++ b/kliento/src/components/StatPool/index.tsx @@ -0,0 +1,15 @@ +import React from "react" +import ReactDOM from "react-dom" + +interface StatPoolProps { + name: string; + value: number; + max: number; + edge: number; +} + +const StatPool = ({ name, value, max, edge }: StatPoolProps) => (
+
{value} / {max}
{edge}
+
) + +export default StatPool diff --git a/kliento/src/index.tsx b/kliento/src/index.tsx new file mode 100644 index 0000000..615f7a6 --- /dev/null +++ b/kliento/src/index.tsx @@ -0,0 +1,35 @@ +import React from "react" +import ReactDOM from "react-dom" +import { BrowserRouter, Route, Routes, useParams } from "react-router-dom"; + +import Menu from "./components/Menu" +import PlayerListView from "./views/PlayerListView" +import "./styles.scss" + +const App = () => ( + <> +

Numenera Datasphere

+
+ + + root
} /> + campaign} /> + }> + } /> + + cyphers} /> + battles} /> + + + ) + +const main = () => { + ReactDOM.render( + + + + , document.getElementById('root') + ) +} + +main() diff --git a/kliento/src/styles.scss b/kliento/src/styles.scss new file mode 100644 index 0000000..cf2051c --- /dev/null +++ b/kliento/src/styles.scss @@ -0,0 +1,28 @@ +body { + background-color: rgb(200, 190, 180); +} + +.columns { + display: flex; + // border: 1px solid red; + margin: auto; + padding: 1em; + + > * { + margin: 0 1em 0 1em; + } + + & > :first-child { + margin: 0 1em 0 0; + } + & > :last-child { + margin: 0 0 0 1em; + } +} + +.c-2 { + > div { + width: 50%; + } +} + diff --git a/kliento/src/types.ts b/kliento/src/types.ts new file mode 100644 index 0000000..6267c84 --- /dev/null +++ b/kliento/src/types.ts @@ -0,0 +1,15 @@ +type StatPool = { + value: number; + max: number; + edge: number; +} + +export type PlayerCharacter = { + name: string; + concept: string; + effort: number; + cypherLimit: number; + might: StatPool; + speed: StatPool; + intellect: StatPool; +} diff --git a/kliento/src/views/PlayerCharacter.tsx b/kliento/src/views/PlayerCharacter.tsx new file mode 100644 index 0000000..5f4a1bf --- /dev/null +++ b/kliento/src/views/PlayerCharacter.tsx @@ -0,0 +1,27 @@ +import React from "react" +import ReactDOM from "react-dom" + +import StatPool from "../components/StatPool" +import { PlayerCharacter } from "../types" + +interface PlayerCharacterProps extends PlayerCharacter { } + +const PlayerCharacter = ({ name, might, speed, intellect }: PlayerCharacterProps) => { + return (
+

{name}

+
{concept}
+
+
+ +
+ +
+ + + +
+
+
) +} + +export default PlayerCharacter diff --git a/kliento/src/views/PlayerListView.tsx b/kliento/src/views/PlayerListView.tsx new file mode 100644 index 0000000..7cbc9c5 --- /dev/null +++ b/kliento/src/views/PlayerListView.tsx @@ -0,0 +1,20 @@ +import React from "react" +import ReactDOM from "react-dom" +import { Link, Route, Routes, useParams } from "react-router-dom"; + +import PlayerCharacter from "./PlayerCharacter"; + +const PlayerListView = () => { + let params = useParams(); + return (
+ + {params.name ? : null } +
); +} + +export default PlayerListView diff --git a/client/tsconfig.json b/kliento/tsconfig.json similarity index 100% rename from client/tsconfig.json rename to kliento/tsconfig.json