From 86c84b42e961d4bc8749acd3c896d5a532852864 Mon Sep 17 00:00:00 2001 From: adeliptr Date: Fri, 30 May 2025 23:49:58 +0900 Subject: [PATCH] itinerary page: itinerary section --- README.md | 28 +-- package-lock.json | 38 +-- package.json | 1 + src/app.html | 4 +- src/lib/components/BottomBar.svelte | 58 +++++ src/lib/components/Button.svelte | 54 +++++ src/lib/components/ItineraryDate.svelte | 106 +++++++++ src/lib/components/PlaceCard.svelte | 94 ++++++++ src/lib/components/ProfilePicture.svelte | 32 +++ src/routes/+page.svelte | 244 ++++++++++++++------ src/routes/itinerary/+page.svelte | 282 +++++++++++++++++++++++ static/placeholder.jpeg | Bin 0 -> 8044 bytes static/profile-pic.png | Bin 0 -> 3439 bytes 13 files changed, 835 insertions(+), 106 deletions(-) create mode 100644 src/lib/components/BottomBar.svelte create mode 100644 src/lib/components/Button.svelte create mode 100644 src/lib/components/ItineraryDate.svelte create mode 100644 src/lib/components/PlaceCard.svelte create mode 100644 src/lib/components/ProfilePicture.svelte create mode 100644 src/routes/itinerary/+page.svelte create mode 100644 static/placeholder.jpeg create mode 100644 static/profile-pic.png diff --git a/README.md b/README.md index b5b2950..f0c3e03 100644 --- a/README.md +++ b/README.md @@ -1,28 +1,22 @@ -# sv +# Travel App -Everything you need to build a Svelte project, powered by [`sv`](https://github.com/sveltejs/cli). +## How to Start -## Creating a project - -If you're seeing this, you've probably already done this step. Congrats! - -```bash -# create a new project in the current directory -npx sv create - -# create a new project in my-app -npx sv create my-app +First, you need to clone this repository by clicking the triple dots button → `Open with VS Code` or using the command below: +``` +git clone http://git.prototyping.id/20210782/travel-app.git ``` +Then, you need to download the project dependencies by typing this command: +``` +npm install +``` ## Developing -Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server: +Once you've created a project and installed dependencies, start a development server: ```bash npm run dev - -# or start the server and open the app in a new browser tab -npm run dev -- --open ``` ## Building @@ -35,4 +29,4 @@ npm run build You can preview the production build with `npm run preview`. -> To deploy your app, you may need to install an [adapter](https://svelte.dev/docs/kit/adapters) for your target environment. +> To deploy your app, you may need to install an [adapter](https://svelte.dev/docs/kit/adapters) for your target environment. \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index ca00852..d2365c8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,6 +9,7 @@ "version": "0.0.1", "dependencies": { "d3": "^7.9.0", + "places-autocomplete-svelte": "^2.2.10", "topojson-client": "^3.1.0", "topojson-server": "^3.0.1" }, @@ -30,7 +31,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", - "dev": true, "license": "Apache-2.0", "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", @@ -465,11 +465,16 @@ "node": ">=18" } }, + "node_modules/@googlemaps/js-api-loader": { + "version": "1.16.8", + "resolved": "https://registry.npmjs.org/@googlemaps/js-api-loader/-/js-api-loader-1.16.8.tgz", + "integrity": "sha512-CROqqwfKotdO6EBjZO/gQGVTbeDps5V7Mt9+8+5Q+jTg5CRMi3Ii/L9PmV3USROrt2uWxtGzJHORmByxyo9pSQ==", + "license": "Apache-2.0" + }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.8", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", - "dev": true, "license": "MIT", "dependencies": { "@jridgewell/set-array": "^1.2.1", @@ -484,7 +489,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, "license": "MIT", "engines": { "node": ">=6.0.0" @@ -494,7 +498,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true, "license": "MIT", "engines": { "node": ">=6.0.0" @@ -504,14 +507,12 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "dev": true, "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.25", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "dev": true, "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", @@ -809,7 +810,6 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/@sveltejs/acorn-typescript/-/acorn-typescript-1.0.5.tgz", "integrity": "sha512-IwQk4yfwLdibDlrXVE04jTZYlLnwsTT2PIOQQGNLWfjavGifnk1JD1LcZjZaBTRcxZu2FfPfNLOE04DSu9lqtQ==", - "dev": true, "license": "MIT", "peerDependencies": { "acorn": "^8.9.0" @@ -1192,7 +1192,6 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", - "dev": true, "license": "MIT" }, "node_modules/@types/geojson": { @@ -1238,7 +1237,6 @@ "version": "8.14.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", - "dev": true, "license": "MIT", "bin": { "acorn": "bin/acorn" @@ -1278,7 +1276,6 @@ "version": "5.3.2", "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", - "dev": true, "license": "Apache-2.0", "engines": { "node": ">= 0.4" @@ -1288,7 +1285,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", - "dev": true, "license": "Apache-2.0", "engines": { "node": ">= 0.4" @@ -1358,7 +1354,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -1880,14 +1875,12 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/esm-env/-/esm-env-1.2.2.tgz", "integrity": "sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==", - "dev": true, "license": "MIT" }, "node_modules/esrap": { "version": "1.4.6", "resolved": "https://registry.npmjs.org/esrap/-/esrap-1.4.6.tgz", "integrity": "sha512-F/D2mADJ9SHY3IwksD4DAXjTt7qt7GWUf3/8RhCNWmC/67tyb55dpimHmy7EplakFaflV0R/PC+fdSPqrRHAQw==", - "dev": true, "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.15" @@ -2037,7 +2030,6 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.3.tgz", "integrity": "sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==", - "dev": true, "license": "MIT", "dependencies": { "@types/estree": "^1.0.6" @@ -2057,14 +2049,12 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz", "integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==", - "dev": true, "license": "MIT" }, "node_modules/magic-string": { "version": "0.30.17", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", - "dev": true, "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0" @@ -2239,6 +2229,18 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/places-autocomplete-svelte": { + "version": "2.2.10", + "resolved": "https://registry.npmjs.org/places-autocomplete-svelte/-/places-autocomplete-svelte-2.2.10.tgz", + "integrity": "sha512-P/+4m0lF1nzqH+fUVmxobVPODNapIXzKxEBHS3gj+FAuDyBZdsCi9z2fy+vpbjwMRualklFFB59nET93r4hWDw==", + "license": "MIT", + "dependencies": { + "@googlemaps/js-api-loader": "^1.16.8" + }, + "peerDependencies": { + "svelte": "^5.1.4" + } + }, "node_modules/postcss": { "version": "8.5.3", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", @@ -2435,7 +2437,6 @@ "version": "5.33.2", "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.33.2.tgz", "integrity": "sha512-uiyusx2rUa9NmVMaIcShnZyDhOfFXxgkn5eXOcgjDBL3RYQGR1+7TctPcI6AWNbu4gHWF5xZ/TlFM7nnw5H+JQ==", - "dev": true, "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.3.0", @@ -2688,7 +2689,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/zimmerframe/-/zimmerframe-1.1.2.tgz", "integrity": "sha512-rAbqEGa8ovJy4pyBxZM70hg4pE6gDgaQ0Sl9M3enG3I0d6H4XSAM3GeNGLKnsBpuijUow064sf7ww1nutC5/3w==", - "dev": true, "license": "MIT" } } diff --git a/package.json b/package.json index 1c2ce8a..bce96d5 100644 --- a/package.json +++ b/package.json @@ -26,6 +26,7 @@ }, "dependencies": { "d3": "^7.9.0", + "places-autocomplete-svelte": "^2.2.10", "topojson-client": "^3.1.0", "topojson-server": "^3.0.1" } diff --git a/src/app.html b/src/app.html index 0446e3b..b316704 100644 --- a/src/app.html +++ b/src/app.html @@ -2,11 +2,11 @@ - + %sveltekit.head%
%sveltekit.body%
- + \ No newline at end of file diff --git a/src/lib/components/BottomBar.svelte b/src/lib/components/BottomBar.svelte new file mode 100644 index 0000000..ffd7fd8 --- /dev/null +++ b/src/lib/components/BottomBar.svelte @@ -0,0 +1,58 @@ + + +
+ + +
+

{title}

+

{desc}

+
+ + {#if typeof onButtonClick === 'function'} +
+ + \ No newline at end of file diff --git a/src/lib/components/Button.svelte b/src/lib/components/Button.svelte new file mode 100644 index 0000000..589d630 --- /dev/null +++ b/src/lib/components/Button.svelte @@ -0,0 +1,54 @@ + + + + + \ No newline at end of file diff --git a/src/lib/components/ItineraryDate.svelte b/src/lib/components/ItineraryDate.svelte new file mode 100644 index 0000000..4bcbe55 --- /dev/null +++ b/src/lib/components/ItineraryDate.svelte @@ -0,0 +1,106 @@ + + +
+ + + {#if isExpanded} +
+ {#each places as place} + + {/each} + + +
+ {/if} +
+ + \ No newline at end of file diff --git a/src/lib/components/PlaceCard.svelte b/src/lib/components/PlaceCard.svelte new file mode 100644 index 0000000..3dc20b1 --- /dev/null +++ b/src/lib/components/PlaceCard.svelte @@ -0,0 +1,94 @@ + + +
+ +
+
{fullPlace.name}
+ {#if fullPlace.desc} +

{fullPlace.desc}

+ {/if} +
+ +
+
+
+ + \ No newline at end of file diff --git a/src/lib/components/ProfilePicture.svelte b/src/lib/components/ProfilePicture.svelte new file mode 100644 index 0000000..6d3b2ac --- /dev/null +++ b/src/lib/components/ProfilePicture.svelte @@ -0,0 +1,32 @@ + + +
+ {#if image} + + {:else} + + {/if} +
+ + \ No newline at end of file diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 5f53533..a3eb35c 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -1,15 +1,42 @@ + const GOOGLE_PLACES_API_KEY = import.meta.env.VITE_GOOGLE_PLACES_API_KEY; + + function handleNewTrip() { + showNewTripPopup = true; + } + + function handleCancel() { + showNewTripPopup = false; + destination = ""; + startDate = ""; + endDate = ""; + friends = ""; + } + + function handleStart() { + console.log(destination, startDate, endDate, friends); + goto('/itinerary'); + } + + function handlePastTrip() { + console.log("let's see the past trip"); + } +
\ No newline at end of file diff --git a/src/routes/itinerary/+page.svelte b/src/routes/itinerary/+page.svelte new file mode 100644 index 0000000..e4f25eb --- /dev/null +++ b/src/routes/itinerary/+page.svelte @@ -0,0 +1,282 @@ + + +
+
+
+
+ +
+ +
+

Trip to {destination}

+

{startDate} - {endDate}

+
+ +
+ + +
+
+ +
+
+ + + +
+ +
+ + + +
+ +
+ + + {#if expandedSections.itinerary} +
+ {#each tripDates as date} + + {/each} +
+ {/if} +
+ +
+
+
+
+ +
+
+ +
+
+ + + \ No newline at end of file diff --git a/static/placeholder.jpeg b/static/placeholder.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..7279516e88ed9f720fd2083c889f842dda428dcc GIT binary patch literal 8044 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 literal 0 HcmV?d00001 diff --git a/static/profile-pic.png b/static/profile-pic.png new file mode 100644 index 0000000000000000000000000000000000000000..3043b2de5460cd648ed9073b87597f3094f2b8c5 GIT binary patch literal 3439 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