├── .husky ├── .gitignore ├── pre-push └── pre-commit ├── .prettierc.json ├── components ├── dayCounter │ ├── DayCounter.module.css │ ├── DayCounter.tsx │ └── DayCounter.stories.tsx ├── header │ ├── Header.module.css │ ├── Header.stories.tsx │ └── Header.tsx ├── footer │ ├── Footer.stories.tsx │ ├── Footer.module.css │ └── Footer.tsx ├── dayDetailshead │ ├── DayDetailHead.module.css │ ├── DayDetailHead.stories.tsx │ └── DayDetailHead.tsx ├── DateInput │ ├── DateInput.module.css │ ├── DateInput.stories.tsx │ └── DateInput.tsx ├── citieSelect │ ├── SelectCity.module.css │ ├── SelectCity.stories.tsx │ └── SelectCity.tsx ├── clickButton │ ├── ClickButton.stories.tsx │ ├── ClickButton.module.css │ └── ClickButton.tsx ├── logo │ ├── Logo.stories.tsx │ ├── Logo.module.css │ └── Logo.tsx ├── button │ ├── LinkButton.module.css │ ├── LinkButton.tsx │ └── LinkButton.stories.tsx ├── input │ ├── SearchInput.module.css │ ├── SearchInput.stories.tsx │ └── SearchInput.tsx ├── planDetails │ ├── PlanDetails.stories.tsx │ ├── PlanDetails.module.css │ └── PlanDetails.tsx ├── icons │ ├── DragIcon.tsx │ ├── PenIcon.tsx │ ├── LoupeIcon.tsx │ ├── AussiTentIcon.tsx │ ├── ArrowRightIcon.tsx │ ├── SearchIcon.tsx │ ├── LocationIcon.tsx │ ├── TrashIcon.tsx │ ├── CalenderIcon.tsx │ ├── MapIcon.tsx │ ├── ListIcon.tsx │ ├── EditIcon.tsx │ ├── CampMarkerIcon.tsx │ └── SettingIcon.tsx ├── dayDetails │ ├── DayDetails.stories.tsx │ ├── DayDetails.module.css │ └── DayDetails.tsx └── popupselect │ ├── PopupSelect.stories.tsx │ ├── PopupSelect.module.css │ └── PopupSelect.tsx ├── public ├── favicon.ico ├── placeholderpic.jpg ├── background.svg ├── next.svg ├── previous.svg └── vercel.svg ├── next-env.d.ts ├── .stylelintrc.json ├── utils ├── types.tsx ├── dayCount.tsx └── api.ts ├── nodemon.json ├── .storybook ├── preview.js └── main.js ├── .lintstagedrc.json ├── lintstagedrc.json ├── .prettierignore ├── .eslintignore ├── tsconfig.server.json ├── styles ├── Day.module.css ├── Settings.module.css ├── Plan.module.css ├── Home.module.css ├── app.module.css ├── Map.module.css └── globals.css ├── tsconfig.json ├── .gitignore ├── pages ├── index.tsx ├── api │ └── opentripmap │ │ ├── index.ts │ │ ├── [name].ts │ │ ├── campsites │ │ └── index.ts │ │ └── lon-lat │ │ └── radius.ts ├── _app.tsx ├── plan.tsx ├── [day].tsx ├── settings.tsx └── map.tsx ├── .eslintrc.json ├── hooks └── useLocalStorage.tsx ├── .github └── workflows │ └── node.js.yml ├── server └── index.ts ├── README.md └── package.json /.husky/.gitignore: -------------------------------------------------------------------------------- 1 | _ 2 | -------------------------------------------------------------------------------- /.prettierc.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /.husky/pre-push: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | . "$(dirname "$0")/_/husky.sh" 3 | 4 | npm test 5 | -------------------------------------------------------------------------------- /components/dayCounter/DayCounter.module.css: -------------------------------------------------------------------------------- 1 | .container { 2 | margin-top: 0.5em; 3 | } 4 | -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/m-wiemers/aussicamp/HEAD/public/favicon.ico -------------------------------------------------------------------------------- /next-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | -------------------------------------------------------------------------------- /.stylelintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["stylelint-config-standard", "stylelint-config-prettier"] 3 | } 4 | -------------------------------------------------------------------------------- /public/placeholderpic.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/m-wiemers/aussicamp/HEAD/public/placeholderpic.jpg -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | . "$(dirname "$0")/_/husky.sh" 3 | 4 | npx lint-staged --config .lintstagedrc.json -------------------------------------------------------------------------------- /utils/types.tsx: -------------------------------------------------------------------------------- 1 | export type Day = { 2 | id: number; 3 | label: string; 4 | campSites: string[]; 5 | activities: string[]; 6 | }; 7 | -------------------------------------------------------------------------------- /nodemon.json: -------------------------------------------------------------------------------- 1 | { 2 | "watch": ["server"], 3 | "exec": "ts-node --project tsconfig.server.json server/index.ts", 4 | "ext": "js ts" 5 | } 6 | -------------------------------------------------------------------------------- /.storybook/preview.js: -------------------------------------------------------------------------------- 1 | import "../styles/globals.css"; 2 | 3 | export const parameters = { 4 | actions: { argTypesRegex: "^on[A-Z].*" }, 5 | }; 6 | -------------------------------------------------------------------------------- /.lintstagedrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "*.css": "stylelint --fix", 3 | "*.{js,jsx,ts,tsx}": "eslint --cache --fix", 4 | "*.{js,jsx,ts,tsx,css,md,json}": "prettier --write" 5 | } 6 | -------------------------------------------------------------------------------- /lintstagedrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "*.css": "stylelint --fix", 3 | "*.{js,jsx,ts,tsx}": "eslint --cache --fix", 4 | "*.{js,jsx,ts,tsx,css,md,json}": "prettier --write" 5 | } 6 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | # dependencies 2 | /node_modules 3 | /.pnp 4 | .pnp.js 5 | 6 | # testing 7 | /coverage 8 | 9 | # next.js 10 | /.next/ 11 | /out/ 12 | 13 | # production 14 | /build 15 | /storybook-static 16 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | # dependencies 2 | /node_modules 3 | /.pnp 4 | .pnp.js 5 | .env 6 | 7 | # testing 8 | /coverage 9 | 10 | # next.js 11 | /.next/ 12 | /out/ 13 | 14 | # production 15 | /build 16 | /storybook-static 17 | -------------------------------------------------------------------------------- /components/header/Header.module.css: -------------------------------------------------------------------------------- 1 | .container { 2 | text-align: center; 3 | border-radius: 0 0 20px 20px; 4 | padding: 0.5em; 5 | background-color: var(--main-color); 6 | box-shadow: 2px 2px 3px black; 7 | cursor: pointer; 8 | } 9 | -------------------------------------------------------------------------------- /public/background.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /tsconfig.server.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "module": "commonjs", 5 | "outDir": "build", 6 | "target": "es2017", 7 | "isolatedModules": false, 8 | "noEmit": false 9 | }, 10 | "include": ["server/**/*.ts"] 11 | } 12 | -------------------------------------------------------------------------------- /.storybook/main.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | stories: [ 3 | "../components/**/*.stories.mdx", 4 | "../components/**/*.stories.@(js|jsx|ts|tsx)", 5 | ], 6 | addons: [ 7 | "storybook-css-modules-preset", 8 | "@storybook/addon-links", 9 | "@storybook/addon-essentials", 10 | ], 11 | }; 12 | -------------------------------------------------------------------------------- /styles/Day.module.css: -------------------------------------------------------------------------------- 1 | .container { 2 | margin-top: 1.8em; 3 | } 4 | 5 | .header { 6 | display: grid; 7 | justify-content: center; 8 | } 9 | 10 | .list { 11 | min-width: 320px; 12 | display: grid; 13 | justify-content: center; 14 | row-gap: 1em; 15 | list-style: none; 16 | padding: 0; 17 | } 18 | -------------------------------------------------------------------------------- /styles/Settings.module.css: -------------------------------------------------------------------------------- 1 | .main { 2 | text-align: center; 3 | margin-top: 2em; 4 | display: grid; 5 | justify-items: center; 6 | row-gap: 1em; 7 | } 8 | 9 | .main :last-child { 10 | min-width: 320px; 11 | } 12 | 13 | .button { 14 | margin-top: 2em; 15 | display: grid; 16 | justify-items: center; 17 | } 18 | -------------------------------------------------------------------------------- /components/header/Header.stories.tsx: -------------------------------------------------------------------------------- 1 | import { Story } from "@storybook/react/"; 2 | import React from "react"; 3 | import Header from "./Header"; 4 | 5 | export default { 6 | title: "Common/Header", 7 | component: Header, 8 | }; 9 | 10 | const Template: Story = () =>
; 11 | 12 | export const Head = Template.bind({}); 13 | -------------------------------------------------------------------------------- /components/footer/Footer.stories.tsx: -------------------------------------------------------------------------------- 1 | import { Story } from "@storybook/react/"; 2 | import React from "react"; 3 | import Footer, { FooterProps } from "./Footer"; 4 | 5 | export default { 6 | title: "Common/Footer", 7 | component: Footer, 8 | }; 9 | 10 | const Template: Story = (args) =>