43 Commits

Author SHA1 Message Date
3985b9c93c Decompose into partials 2025-05-15 22:23:12 -04:00
b492c4e111 Reorganize
Some checks failed
CI / scan_ruby (push) Has been cancelled
CI / scan_js (push) Has been cancelled
CI / lint (push) Has been cancelled
CI / test (push) Has been cancelled
2025-05-15 21:09:43 -04:00
665e310e4f Remove RSVP and re-order 2025-05-15 20:44:55 -04:00
fc8dd82587 increase font for ceremony details
Some checks failed
CI / scan_ruby (push) Has been cancelled
CI / scan_js (push) Has been cancelled
CI / lint (push) Has been cancelled
CI / test (push) Has been cancelled
2025-04-26 16:16:22 -04:00
f95598dfb3 Add wedding party colors 2025-04-26 15:35:10 -04:00
888b2f2d56 Fix spacing on large screens
Some checks failed
CI / scan_ruby (push) Has been cancelled
CI / scan_js (push) Has been cancelled
CI / lint (push) Has been cancelled
CI / test (push) Has been cancelled
2025-03-07 19:06:58 -05:00
62dc4172b7 add wedding party
Some checks are pending
CI / scan_ruby (push) Waiting to run
CI / scan_js (push) Waiting to run
CI / lint (push) Waiting to run
CI / test (push) Waiting to run
2025-03-07 19:01:12 -05:00
e71fac4f99 Add RSVP 2025-02-17 10:43:41 -05:00
1f8e167f4b Add registry button
Some checks failed
CI / scan_ruby (push) Failing after 10m33s
CI / scan_js (push) Failing after 9m51s
CI / lint (push) Failing after 9m50s
CI / test (push) Failing after 18s
2025-02-08 14:16:11 -05:00
45379ae891 Add registry mockup 2025-02-05 22:58:48 -05:00
308000ca72 Remove extra links for accommodation 2025-01-18 18:20:23 -05:00
a729cf2dd5 Remove bullet in more info about accommodations 2024-12-28 18:26:52 -05:00
e21c242221 Add hi express svg 2024-12-28 18:19:59 -05:00
bd4e35cd8e with extra info 2024-12-17 22:51:34 -05:00
6173d80f8d All paths lead home 2024-12-17 22:42:36 -05:00
ebb11eb0e7 spell horsdefadvaours correctly 2024-11-25 21:01:36 -05:00
2904c08650 Fix casing and spelling 2024-11-25 20:56:27 -05:00
c2eb2dc06a fix attire 2 2024-11-25 20:44:12 -05:00
196033389d Fix attire 2024-11-25 20:26:26 -05:00
Adam Mohammed
2059ee50fb More info 2024-11-25 16:38:44 -05:00
27bf684352 Also allow jilliandadam.love 2024-11-24 11:34:04 -05:00
7ecf1fd73f redo some wording 2024-11-24 09:59:16 -05:00
0ed84a9eb5 how we met 2024-11-23 20:08:10 -05:00
c21a880672 some fixes for medium screens 2024-11-23 19:55:27 -05:00
c3c4ecf0fd woops 2024-11-23 19:34:00 -05:00
03d47b5b5a favicon 2024-11-23 19:32:19 -05:00
7bbeb8ebc4 Fix favicon 2024-11-23 19:29:38 -05:00
09a5972138 set the proper hosts 2024-11-23 19:25:38 -05:00
18f9984ce0 Hide the accommodation information 2024-11-23 19:24:32 -05:00
5d1b1545d7 use image path to render images 2024-11-23 19:02:22 -05:00
97a094f56d Fix some responsiveness 2024-11-23 19:02:01 -05:00
Adam Mohammed
a809ce1743 ignore helpers 2024-11-23 16:43:59 -05:00
Adam Mohammed
078ea50917 do it 2024-11-23 16:43:05 -05:00
Adam Mohammed
1edfa1e8a8 Create production key 2024-11-23 16:03:00 -05:00
Adam Mohammed
cb68455612 Added some credential files 2024-11-23 15:51:16 -05:00
Adam Mohammed
25aff5ceff Fix overall background color 2024-11-23 15:21:25 -05:00
7d1fa0a9c7 Fix mobile centering 2024-11-18 21:47:56 -05:00
40693165eb Added our story 2024-11-18 21:44:54 -05:00
eab3494b40 for real 2024-11-17 15:25:49 -05:00
4934c26c9a starting to get things in order 2024-11-17 15:25:20 -05:00
Adam Mohammed
967460a720 Layout ready 2024-11-16 22:39:01 -05:00
Adam Mohammed
77f271c7aa Better layout 2024-11-16 20:35:46 -05:00
Adam Mohammed
49efe4cf12 More dots 2024-11-16 19:56:51 -05:00
56 changed files with 624 additions and 50 deletions

View File

@@ -46,3 +46,7 @@
# Ignore Docker-related files # Ignore Docker-related files
/.dockerignore /.dockerignore
/Dockerfile* /Dockerfile*
/raw_photos
/.gems

5
.gitignore vendored
View File

@@ -39,3 +39,8 @@
!/app/assets/builds/.keep !/app/assets/builds/.keep
vendor/bundle vendor/bundle
/config/credentials/production.key
/raw_photos
/.gems

18
.kamal/secrets Normal file
View File

@@ -0,0 +1,18 @@
# Secrets defined here are available for reference under registry/password, env/secret, builder/secrets,
# and accessories/*/env/secret in config/deploy.yml. All secrets should be pulled from either
# password manager, ENV, or a file. DO NOT ENTER RAW CREDENTIALS HERE! This file needs to be safe for git.
# Option 1: Read secrets from the environment
KAMAL_REGISTRY_PASSWORD=$KAMAL_REGISTRY_PASSWORD
# Option 2: Read secrets via a command
RAILS_MASTER_KEY=$RAILS_MASTER_KEY
# RAILS_MASTER_KEY=$(cat config/credentials/production.key)
# Option 3: Read secrets via kamal secrets helpers
# These will handle logging in and fetching the secrets in as few calls as possible
# There are adapters for 1Password, LastPass + Bitwarden
#
# SECRETS=$(kamal secrets fetch --adapter 1password --account my-account --from MyVault/MyItem KAMAL_REGISTRY_PASSWORD RAILS_MASTER_KEY)
# KAMAL_REGISTRY_PASSWORD=$(kamal secrets extract KAMAL_REGISTRY_PASSWORD $SECRETS)
# RAILS_MASTER_KEY=$(kamal secrets extract RAILS_MASTER_KEY $SECRETS)

View File

@@ -2,7 +2,7 @@
# This Dockerfile is designed for production, not development. Use with Kamal or build'n'run by hand: # This Dockerfile is designed for production, not development. Use with Kamal or build'n'run by hand:
# docker build -t my-app . # docker build -t my-app .
# docker run -d -p 80:80 -p 443:443 --name my-app -e RAILS_MASTER_KEY=<value from config/master.key> my-app # docker run -d -p 80:80 -p 443:443 --name wedding-app -e RAILS_MASTER_KEY=<value from config/master.key> -v /home/adammo/wedding-app:/storage wedding-app
# Make sure RUBY_VERSION matches the Ruby version in .ruby-version # Make sure RUBY_VERSION matches the Ruby version in .ruby-version
ARG RUBY_VERSION=3.2.3 ARG RUBY_VERSION=3.2.3

View File

@@ -1,2 +1,2 @@
web: bin/rails server web: bin/rails server --binding 0.0.0.0
css: bin/rails tailwindcss:watch css: bin/rails tailwindcss:watch

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 129 KiB

1
app/assets/images/dress.svg Executable file
View File

@@ -0,0 +1 @@
<svg class="svg-icon" style="width: 1em;height: 1em;vertical-align: middle;fill: currentColor;overflow: hidden;" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M846.1 787.9c-17.6-33.1-177.4-320.4-209.9-378.8 2-1.2 3.8-2.5 5.4-4.1 5.9-5.9 8.8-14.5 8.8-25.2 0-17.3-7.7-28.7-21.6-32.5 0.3-10.2 4.2-26.1 8.3-43 6.1-25.1 13-53.5 13-79.6v-68.3c0-0.6-0.1-1.2-0.2-1.7 0-0.4 0.1-0.8 0.1-1.2V99.3c0-19-15.5-34.5-34.5-34.5S581 80.3 581 99.3v48.5c-16.3 4.2-33.5 17.3-51.4 39.1-7 8.5-12.9 17-17.4 23.8-4.3-6.8-10.1-15.2-16.9-23.7-18-22.4-35.5-35.7-52.1-39.5V99.3c0-19-15.5-34.5-34.5-34.5s-34.5 15.5-34.5 34.5v54.1c0 0.4 0 0.8 0.1 1.2-0.1 0.6-0.2 1.1-0.2 1.7v68.3c0 26.1 6.9 54.5 13 79.6 4.1 16.8 8 32.8 8.3 43-13.8 3.8-21.5 15.2-21.5 32.5 0 14 5 24 14.2 29.4-32.6 58.6-192.4 345.7-210 378.8-11.5 21.7-13.9 41-6.9 57.4 7.1 16.7 23.1 28.7 47.7 35.7 39.5 11.3 120.7 18.1 141.5 19.7 5.1 6.9 16.7 21.2 35.1 35.4 23.2 17.8 62.3 39.1 116.5 39.1h0.4c54.3 0 93.3-21.3 116.5-39.1 18.5-14.2 30.1-28.4 35.1-35.4 20.8-1.6 101.9-8.4 141.5-19.7 24.5-7 40.6-19 47.7-35.7 6.7-16.4 4.4-35.7-7.1-57.4zM600.9 99.3c0-8 6.5-14.5 14.5-14.5s14.5 6.5 14.5 14.5v47h-29v-47z m-206.8 0c0-8 6.5-14.5 14.5-14.5s14.5 6.5 14.5 14.5v47h-29v-47z m-0.1 67h39c26.8 0 58.3 46.9 69.4 67 0.8 2.3 2.4 4.4 4.7 5.6 1.5 0.9 3.2 1.3 4.9 1.2 1.6 0 3.3-0.3 4.9-1.2 2.3-1.2 4-3.3 4.7-5.6 11.5-20.1 43.9-67.1 70.9-67.1H630v58.3c0 23.7-6.6 50.9-12.4 74.9-4.8 19.6-8.9 36.5-8.9 49v1c-10.7 6.1-46.8 24.5-97 24.5-50.1 0-86.1-18.5-96.5-24.6v-0.9c0-12.5-4.1-29.4-8.9-49-5.8-24-12.4-51.2-12.4-74.9v-58.2z m9.7 199.6c10.8 6.6 50.8 28.1 108 28.1 57.6 0 97.7-21.6 108.5-28.1 6.5 0.5 10 3.5 10 13.9 0 3.7-0.5 8.6-3 11.1-1.8 1.8-5.1 2.8-9.6 2.8-2 0-3.9 0.6-5.6 1.7-0.4 0.3-39.9 26.5-100 26.5-59.9 0-99.6-26.2-100-26.5-1.7-1.1-3.6-1.7-5.6-1.7-8.2 0-12.7-2.2-12.7-13.9 0.1-10.4 3.5-13.4 10-13.9z m430.8 471.6c-4.6 10.8-16.3 19-34.7 24.3-35.2 10.1-108.7 16.7-133.7 18.7l-80.5-361.3c-1.2-5.4-6.5-8.8-11.9-7.6-5.4 1.2-8.8 6.5-7.6 11.9l81.5 365.6c-10.2 13.8-54.3 66.1-135.4 66.1h-0.4c-38.8 0-73.7-11.6-103.7-34.5-16.9-12.9-27.4-25.9-31.8-31.7l81.4-365.5c1.2-5.4-2.2-10.7-7.6-11.9-5.4-1.2-10.7 2.2-11.9 7.6l-80.5 361.3c-25-2-98.4-8.6-133.6-18.7-18.4-5.3-30.1-13.4-34.7-24.3-4.5-10.6-2.4-24.1 6.1-40.2 17.9-33.6 183.5-331.2 211.6-381.6 14.4 8.1 52.4 26.1 104.9 26.1 52.5 0 90.5-18 104.9-26.1 28.1 50.4 193.6 348 211.5 381.6 8.6 16.1 10.6 29.6 6.1 40.2z" /></svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

BIN
app/assets/images/emil.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 MiB

BIN
app/assets/images/eric.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 MiB

BIN
app/assets/images/gemma.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 171 KiB

View File

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg viewBox="0 0 291.2 149.4" xmlns="http://www.w3.org/2000/svg">
<g fill="none">
<path d="m122.99 58.676c3.37-3.513 3.376-8.616 8.64-10.56 8.548-3.157 21.291-1.307 29.28 1.44 5.912 12.217 11.437 21.807 20.64 29.76 28.163 24.338 84.264 27.893 105.12 58.561-3.184-11.217-13.436-15.365-21.6-21.601-9.221-3.52-15.771-7.062-24.96-11.04-19.929-8.628-44.389-16.785-58.561-29.76-8.978-8.219-13.863-17.966-19.68-29.28-11.394-2.236-38.449-5.929-36.96 7.2-0.506 1.411-3.863 4.557-1.919 5.28z"/>
<path d="m160.36 135.89l15.496 0.125c26.673-0.12799 58.601-0.914 83.937-0.061996-29.029-18.144-60.857-35.118-90.721-51.841-4.125-2.31-9.093-4.681-12-8.64-4.095 1.965-7.394-5.049-12.959-4.8-37.453 21.908-76.5 42.22-113.76 64.32 49.13 0.284 93.444-0.061005 130.01 0.898z"/>
<path d="m36.109 113.4c11.191-5.206 22.048-9.965 32.64-14.399 23.062-9.656 44.426-18.075 53.28-39.36-0.908 1.651-1.188 3.932-3.36 4.32 1.101-2.082 3.935-4.22 2.4-6.24-19.833 36.833-74.489 42.059-107.52 64.8-4.75 3.271-10.328 8.895-10.08 15.84 5.223-12.915 19.778-18.977 32.64-24.961z"/>
<path d="m10.189 143.64c-0.854 0.069 0.208 0.854 0.48 0 27.403-14.837 54.53-29.95 81.12-45.6-27.722 14.677-54.324 30.476-81.6 45.6z"/>
<path d="m145.55 42.835c1.01-12.408-8.392-18.024-11.04-28.32 0.121-1.242 2.413-4.61 0.48-4.8-3.858 12.607 7.285 17.247 9.12 26.88 0.48901 2.567-0.92299 4.132 1.44 6.24z"/>
<path d="m144.11 3.476c0.435-0.195 3.354 0.147 2.88-0.48-0.17-0.226-2.841-0.268-3.84 0-1.91 0.513-5.588 2.529-7.2 5.76 1.536-2.313 6.419-4.499 8.16-5.28z"/>
<path d="m158.03 11.156c-1.75-4.014-5.334-8.743-10.561-7.68 5.573 0.506 7.845 4.315 10.561 7.68z"/>
<path d="m168.59 138.84c31.618-0.62199 59.677 0.518 95.521-0.48-7.501-2.506-16.275-1.525-24.48-1.439-14.109 0.14699-30.175 0.185-46.56-0.070007l0.083 0.146-57.892-0.479-0.287-0.134c-31.627 0.32599-64.442 0.17499-87.344-0.423-7.9-0.20599-18.043-0.57201-21.6 1.92 53.803 1.143 105.11 0.717 142.08 0.96001-36.924 1.134-75.382 0.16299-111.36 0.47899h-2.88c68.343 1.359 133.6 1.222 212.64 0.48001-26.224-1.069-63.11 0.299-97.921-0.96001z"/>
<path d="m105.23 90.836c-4.773 1.946-8.986 4.454-12.96 7.2 4.105-2.005 11.335-5.905 12.96-7.2z"/>
<path d="m52.909 139.32c-5.195-0.26601-8.024-0.159-14.4-0.479 2.761 1.884 10.849 0.985 14.4 0.479z"/>
<path d="m280.91 137.88c1.852 0.548 2.731 2.068 4.8 2.399-3.113-7.927-10.179-11.901-15.84-17.279h-2.4c-27.266-20.987-72.161-24.098-94.08-50.4-5.312-6.375-9.008-13.825-12.96-22.08-6.459-3.301-17.443-3.843-25.44-1.44 2.166 0.247 4.154 3.188 5.76 2.4-0.448-0.512-1.771-0.149-1.44-1.44 3.99 1.93 8.496 3.345 11.04 6.72-3.169-0.996-6.31-4.562-9.12-4.32 1.248 1.312 3.756 1.364 4.32 3.36-5.457-0.71899-7.983-7.216-13.44-6.72-3.73 0.339-6.928 8.203-9.12 12-8.223 14.246-21.083 24.521-33.12 31.2 0.020996-1.602 3.964-1.764 2.88-2.88-12.968 6.692-28.473 12.292-43.68 18.72-18.673 7.895-42.042 16.907-46.56 37.921 28.537-15.758 57.782-31.12 86.4-47.521 10.152-5.818 21.367-14.016 33.12-16.8 7.608-4.392 14.991-9.009 23.04-12.96 7.445 4.075 15.423 7.616 22.08 12.479h3.36c39.065 22.215 77.886 44.674 117.12 66.721 1.712-5.679-4.544-6.771-6.72-10.08z"/>
<path d="m118.67 83.155c-4.441 2.12-8.771 4.351-12.48 7.2 4.356-2.203 8.757-4.362 12.48-7.2z"/>
<path d="m26.029 139.32c1.774 1.228 8.934-0.076996 12 0.48-2.549-2.328-9.755-0.22499-12-0.48z"/>
</g>
<path d="m287.15 132.12c-4.861-7.24-15.249-12.166-21.119-17.279-6.858-1.543-12.781-4.968-18.721-7.681-6.274-2.865-12.472-5.204-18.72-7.68-18.983-7.521-37.074-16.033-49.92-29.28-4.445-4.584-8.314-10.222-11.04-15.36-1.653-3.117-2.926-8.684-5.28-10.08-4.006-2.376-11.384-0.24-15.36-1.92 3.722-13.277-10.838-18.05-10.08-28.8 0.73299-10.388 12.792-10.155 17.76-4.32 1.615 1.897 2.589 7.028 7.2 5.28 1.591-2.719-1.706-5.719-3.36-7.68-2.063-2.446-4.563-4.905-7.68-5.76-7.994-2.192-17.389 2.197-18.24 11.52-1.253 13.726 12.318 14.449 10.56 29.76-6.038 1.572-13.402-0.338-16.8 1.92-2.088 1.388-5.177 10.054-7.2 13.44-2.694 4.51-6.311 9.468-9.12 12.48-14.868 15.938-37.887 22.239-59.52 31.68-7.749 3.382-15.616 7.414-23.52 11.521-10.661 5.538-22.443 10.922-25.92 21.6-0.934 2.866-2.397 9.982 1.44 13.44 5.527 1.504 10.717-6.322 16.8-7.681 3.007-0.671 8.517 0 13.44 0h16.8c52.987 0 126.45 0.48 190.56 0.48 10.973 0 23.427-1.301 31.68 0.479 6.022 1.3 10.045 8.894 17.28 8.16 4.388-5.985 1.13-13.696-1.921-18.239zm-129.12-120.96c-2.716-3.365-4.987-7.173-10.561-7.68 5.227-1.063 8.811 3.666 10.561 7.68zm-14.881-8.16c0.99899-0.268 3.669-0.226 3.84 0 0.474 0.627-2.445 0.285-2.88 0.48-1.742 0.782-6.625 2.968-8.16 5.28 1.613-3.231 5.29-5.248 7.2-5.76zm-8.16 6.72c1.933 0.189-0.35899 3.558-0.48 4.8 2.648 10.295 12.05 15.912 11.04 28.32-2.364-2.109-0.95099-3.673-1.44-6.24-1.835-9.634-12.978-14.273-9.12-26.88zm26.881 36.48c5.816 11.314 10.702 21.061 19.68 29.28 14.172 12.975 38.632 21.132 58.561 29.76 9.188 3.979 15.739 7.521 24.96 11.04 8.164 6.235 18.416 10.384 21.6 21.601-20.856-30.668-76.957-34.223-105.12-58.561-9.203-7.953-14.728-17.543-20.64-29.76-7.989-2.747-20.732-4.597-29.28-1.44-5.264 1.944-5.27 7.047-8.64 10.56-1.944-0.72299 1.413-3.869 1.92-5.28-1.491-13.129 25.565-9.437 36.959-7.2zm-148.32 76.32c33.031-22.741 87.688-27.967 107.52-64.8 1.535 2.02-1.299 4.158-2.4 6.24 2.171-0.388 2.452-2.668 3.36-4.32-8.854 21.285-30.218 29.704-53.28 39.36-10.591 4.435-21.449 9.193-32.64 14.399-12.863 5.984-27.417 12.047-32.64 24.96-0.248-6.945 5.33-12.569 10.08-15.839zm-2.88 21.12c-0.271 0.854-1.334 0.069-0.48 0 27.276-15.124 53.878-30.923 81.6-45.6-26.59 15.65-53.717 30.763-81.12 45.6zm133.44-72.96c4.486 1.095 6.211 1.69 12.341 5.736 4.701 3.095 8.493 5.394 12.618 7.703 29.863 16.723 61.691 33.697 90.721 51.841-25.336-0.85199-57.264-0.064987-83.937 0.062012l-15.496-0.125c-36.562-0.959-80.877-0.61301-130.01-0.897 37.262-22.1 76.309-42.412 113.76-64.32zm-51.84 27.36c3.974-2.746 8.187-5.254 12.96-7.2-1.625 1.295-8.855 5.195-12.96 7.2zm13.92-7.681c3.709-2.85 8.039-5.08 12.48-7.2-3.723 2.838-8.124 4.997-12.48 7.2zm-80.16 48.96c2.245 0.255 9.451-1.849 12 0.48-3.066-0.55699-10.226 0.748-12-0.48zm12.48-0.479c6.375 0.32001 9.205 0.214 14.4 0.479-3.551 0.506-11.639 1.405-14.4-0.479zm15.36 0.479h2.88c35.978-0.31601 74.436 0.65399 111.36-0.479-36.973-0.243-88.276 0.183-142.08-0.95999 3.557-2.492 13.7-2.126 21.6-1.92 22.902 0.59801 55.717 0.74901 87.344 0.423l0.287 0.134 57.892 0.479-0.083-0.146c16.385 0.255 32.45 0.218 46.56 0.070007 8.205-0.085999 16.979-1.066 24.48 1.439-35.844 0.998-63.902-0.142-95.521 0.48001 34.811 1.259 71.696-0.10901 97.92 0.95999-79.035 0.742-144.3 0.88-212.64-0.48zm233.76 8.641c-39.234-22.047-78.055-44.506-117.12-66.721h-3.36c-6.656-4.863-14.635-8.405-22.08-12.479-8.049 3.951-15.432 8.568-23.04 12.96-11.753 2.784-22.968 10.981-33.12 16.8-28.618 16.4-57.863 31.763-86.4 47.521 4.518-21.014 27.887-30.026 46.56-37.921 15.207-6.428 30.712-12.027 43.68-18.72 1.084 1.116-2.858 1.278-2.88 2.88 12.038-6.679 24.897-16.954 33.12-31.2 2.192-3.797 5.39-11.661 9.12-12 5.457-0.496 7.983 6.001 13.44 6.72-0.56401-1.996-3.072-2.048-4.32-3.36 2.81-0.242 5.951 3.324 9.12 4.32-2.544-3.375-7.05-4.791-11.04-6.72-0.33099 1.291 0.993 0.928 1.44 1.44-1.606 0.789-3.594-2.153-5.76-2.4 7.997-2.403 18.981-1.861 25.44 1.44 3.952 8.255 7.647 15.705 12.96 22.08 21.919 26.303 66.814 29.413 94.08 50.4h2.4c5.661 5.378 12.727 9.353 15.84 17.279-2.068-0.33101-2.948-1.852-4.8-2.399 2.177 3.309 8.433 4.401 6.72 10.08z"/>
</svg>

After

Width:  |  Height:  |  Size: 7.2 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 17 KiB

View File

@@ -0,0 +1,29 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="86px" height="50px" viewBox="0 0 86 50" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="home2-86x50-copy" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="Logos-/-Color--/-Home2" transform="translate(2.000000, 3.000000)">
<g id="HT">
<path d="M82,0 L82,40.134 L62.019,32.447 L62.019,7.861 L82,0 Z M79.334,35.979 L79.334,30.923 L69.083,28.5 L75.801,21.678 C77.992,19.1163 79.164,15.8373 79.091,12.467 C78.572,5.888 74.797,5.403 71.854,5.888 C67.872,7.204 64.963,10.355 64.654,14.51 L68.567,14.302 C68.606,13.3535 68.951,12.4431 69.55,11.7067 C70.149,10.9703 70.97,10.4473 71.891,10.216 C73.591,9.835 75.111,10.943 75.146,13.298 C75.181,15.306 73.934,17.003 72.93,18.319 L64.515,26.734 L64.515,30.682 L79.334,35.979 Z" id="Shape" fill="#B2BB1F" fill-rule="nonzero"></path>
<polygon id="Path" fill="#4A3900" fill-rule="nonzero" points="59.11 22.958 59.11 25.486 47.856 25.486 47.856 7.895 59.11 7.895 59.11 10.388 50.522 10.388 50.522 15.409 57.863 15.409 57.863 17.795 50.522 17.795 50.522 22.955"></polygon>
<polygon id="Path" fill="#4A3900" fill-rule="nonzero" points="58.9721 28.9839 58.9721 32.3079 58.3831 32.3079 57.0671 30.2649 57.0671 32.3079 56.4441 32.3079 56.4441 28.9839 56.9981 28.9839 58.3141 30.9919 58.3141 28.9839"></polygon>
<path d="M54.436,30.6458 C54.4746,30.8771 54.4638,31.114 54.4041,31.3409 C54.3445,31.5677 54.2374,31.7793 54.09,31.9618 C53.973,32.0798 53.8323,32.1717 53.6771,32.2313 C53.522,32.291 53.356,32.317 53.19,32.3078 C52.8571,32.3103 52.5355,32.1867 52.29,31.9618 C51.944,31.6158 51.978,31.1998 51.978,30.6458 C51.9062,30.1832 52.0182,29.7109 52.29,29.3298 C52.407,29.2117 52.5477,29.1198 52.7029,29.0602 C52.858,29.0005 53.024,28.9745 53.19,28.9838 C53.523,28.9812 53.8445,29.1048 54.09,29.3298 C54.436,29.6418 54.436,30.0568 54.436,30.6458 Z M53.778,30.6458 C53.778,30.0228 53.743,29.8458 53.605,29.7108 C53.5506,29.6559 53.4859,29.6123 53.4146,29.5826 C53.3433,29.5529 53.2668,29.5376 53.1895,29.5376 C53.1122,29.5376 53.0357,29.5529 52.9644,29.5826 C52.8931,29.6123 52.8284,29.6559 52.774,29.7108 C52.635,29.8498 52.601,29.9878 52.601,30.6458 C52.601,31.2688 52.636,31.4458 52.774,31.5808 C52.8284,31.6356 52.8931,31.6792 52.9644,31.7089 C53.0357,31.7387 53.1122,31.754 53.1895,31.754 C53.2668,31.754 53.3433,31.7387 53.4146,31.7089 C53.4859,31.6792 53.5506,31.6356 53.605,31.5808 C53.743,31.4078 53.779,31.2688 53.779,30.6458 L53.778,30.6458 Z" id="Shape" fill="#4A3900" fill-rule="nonzero"></path>
<polygon id="Path" fill="#4A3900" fill-rule="nonzero" points="50.315 28.9839 50.315 29.5729 49.449 29.5729 49.449 32.3089 48.826 32.3089 48.826 29.5729 47.96 29.5729 47.96 28.9839"></polygon>
<polygon id="Path" fill="#4A3900" fill-rule="nonzero" points="46.679 31.7199 46.679 32.3089 44.532 32.3089 44.532 28.9839 45.19 28.9839 45.19 31.7199"></polygon>
<polygon id="Path" fill="#4A3900" fill-rule="nonzero" points="44.9131 7.895 44.9131 25.486 42.2131 25.486 42.2131 14.509 42.1781 14.509 38.5071 22.958 36.2561 22.958 32.5851 14.509 32.5501 14.509 32.5501 25.486 29.8501 25.486 29.8501 7.895 32.3781 7.895 37.4341 19.357 42.3851 7.895"></polygon>
<polygon id="Path" fill="#4A3900" fill-rule="nonzero" points="42.4539 28.9839 41.7959 28.9839 41.7959 32.3079 42.4539 32.3079"></polygon>
<polygon id="Path" fill="#4A3900" fill-rule="nonzero" points="39.649 28.9839 39.649 32.3079 39.026 32.3079 39.026 30.9229 37.883 30.9229 37.883 32.3079 37.26 32.3079 37.26 28.9839 37.883 28.9839 37.883 30.3349 39.026 30.3349 39.026 28.9839"></polygon>
<polygon id="Path" fill="#4A3900" fill-rule="nonzero" points="33.07 28.9839 32.07 30.9229 32.07 32.3079 31.438 32.3079 31.438 30.9229 30.438 28.9839 31.165 28.9839 31.754 30.3349 32.377 28.9839"></polygon>
<path d="M28.3611,30.6119 C28.4997,30.6748 28.6165,30.7775 28.6966,30.907 C28.7768,31.0364 28.8166,31.1868 28.8111,31.3389 C28.8192,31.471 28.7986,31.6032 28.7507,31.7266 C28.7029,31.8499 28.629,31.9615 28.534,32.0536 C28.439,32.1458 28.3252,32.2163 28.2005,32.2603 C28.0757,32.3044 27.9429,32.321 27.8111,32.3089 L26.4221,32.3089 L26.4221,28.9839 L27.7381,28.9839 C28.3961,28.9839 28.7771,29.3299 28.7771,29.9189 C28.7717,30.0601 28.7308,30.1976 28.6581,30.3188 C28.5853,30.4399 28.4832,30.5408 28.3611,30.6119 Z M28.1531,31.3049 C28.1554,31.2497 28.1462,31.1946 28.1261,31.1431 C28.1059,31.0916 28.0754,31.0448 28.0363,31.0057 C27.9972,30.9666 27.9504,30.9361 27.8989,30.916 C27.8474,30.8958 27.7923,30.8866 27.7371,30.8889 L27.0791,30.8889 L27.0791,31.7199 L27.7371,31.7199 C27.7931,31.7251 27.8495,31.718 27.9023,31.6989 C27.9552,31.6799 28.0032,31.6494 28.0429,31.6097 C28.0826,31.5699 28.1131,31.5219 28.1322,31.4691 C28.1512,31.4162 28.1584,31.3598 28.1531,31.3039 L28.1531,31.3049 Z M28.1221,29.9539 C28.1221,29.7119 27.9831,29.5729 27.7061,29.5729 L27.0831,29.5729 L27.0831,30.3349 L27.7061,30.3349 C27.7592,30.3409 27.813,30.3355 27.8639,30.3189 C27.9147,30.3024 27.9614,30.2752 28.0008,30.2391 C28.0403,30.203 28.0715,30.1588 28.0924,30.1096 C28.1133,30.0604 28.1235,30.0073 28.1221,29.9539 Z" id="Shape" fill="#4A3900" fill-rule="nonzero"></path>
<path d="M26.595,10.9071 C27.149,11.9461 27.357,12.4651 27.357,16.6901 C27.357,20.9151 27.149,21.4341 26.595,22.4731 C26.0314,23.4325 25.2268,24.228 24.261,24.7807 C23.2952,25.3334 22.2018,25.6242 21.089,25.6242 C19.9763,25.6242 18.8829,25.3334 17.9171,24.7807 C16.9513,24.228 16.1467,23.4325 15.583,22.4731 C15.029,21.4341 14.821,20.9151 14.821,16.6901 C14.821,12.4651 15.029,11.9461 15.583,10.9071 C16.1352,9.9376 16.9372,9.1339 17.9057,8.5799 C18.8741,8.0258 19.9734,7.7417 21.089,7.7571 C22.206,7.7345 23.3081,8.0156 24.2779,8.5704 C25.2476,9.1251 26.0485,9.9328 26.595,10.9071 Z M24.695,16.6901 C24.695,13.0901 24.487,12.5691 23.795,11.7041 C23.4686,11.2942 23.0517,10.9653 22.5771,10.7431 C22.1025,10.5208 21.583,10.4113 21.059,10.4231 C20.5354,10.4152 20.0168,10.5264 19.5425,10.7483 C19.0682,10.9702 18.6505,11.2971 18.321,11.7041 C17.628,12.6041 17.421,13.0891 17.421,16.6901 C17.421,20.2911 17.629,20.8111 18.321,21.6761 C18.6472,22.0857 19.0636,22.4143 19.5376,22.6365 C20.0117,22.8587 20.5306,22.9684 21.054,22.9571 C21.5773,22.9648 22.0955,22.8534 22.5695,22.6315 C23.0434,22.4096 23.4608,22.0829 23.79,21.6761 C24.521,20.7761 24.69,20.2911 24.69,16.6901 L24.695,16.6901 Z" id="Shape" fill="#4A3900" fill-rule="nonzero"></path>
<path d="M21.9541,29.3312 L21.5381,29.7472 C21.446,29.6604 21.3368,29.594 21.2174,29.5523 C21.0979,29.5106 20.9711,29.4945 20.8451,29.5052 C20.4991,29.5052 20.3261,29.6782 20.3261,29.9212 C20.3291,30.0112 20.3647,30.0972 20.4261,30.1632 C20.5159,30.2364 20.6236,30.2844 20.7381,30.3022 L21.1191,30.3712 C21.3459,30.3895 21.5624,30.4736 21.7421,30.6132 C21.8267,30.7066 21.8917,30.8161 21.9333,30.9351 C21.9748,31.0542 21.9921,31.1803 21.9841,31.3062 C21.9841,31.9642 21.4651,32.3062 20.7721,32.3062 C20.5494,32.3249 20.3253,32.2943 20.1158,32.2165 C19.9063,32.1387 19.7165,32.0157 19.5601,31.8562 L19.9761,31.4402 C20.0836,31.5383 20.21,31.6134 20.3475,31.6611 C20.4851,31.7087 20.6309,31.7278 20.7761,31.7172 C21.1571,31.7172 21.3651,31.5782 21.3651,31.3012 C21.3689,31.1994 21.333,31.1 21.2651,31.0242 C21.2293,30.9879 21.1858,30.96 21.1379,30.9427 C21.09,30.9254 21.0388,30.9191 20.9881,30.9242 L20.5721,30.8552 C20.3308,30.8276 20.1024,30.7315 19.9141,30.5782 C19.828,30.4916 19.7613,30.3877 19.7183,30.2734 C19.6754,30.1591 19.6572,30.037 19.6651,29.9152 C19.6674,29.7721 19.6998,29.6311 19.76,29.5013 C19.8202,29.3715 19.907,29.2557 20.0147,29.1615 C20.1223,29.0673 20.2486,28.9967 20.3853,28.9543 C20.5219,28.9118 20.6659,28.8985 20.8081,28.9152 C21.2294,28.9007 21.6401,29.0497 21.9541,29.3312 Z" id="Path" fill="#4A3900" fill-rule="nonzero"></path>
<polygon id="Path" fill="#4A3900" fill-rule="nonzero" points="17.9031 31.7199 17.9031 32.3089 15.7561 32.3089 15.7561 28.9839 17.9031 28.9839 17.9031 29.5729 16.3791 29.5729 16.3791 30.3349 17.6951 30.3349 17.6951 30.9239 16.3791 30.9239 16.3791 31.7239"></polygon>
<polygon id="Path" fill="#4A3900" fill-rule="nonzero" points="13.8521 28.9839 13.8521 29.5729 12.9861 29.5729 12.9861 32.3089 12.3631 32.3089 12.3631 29.5729 11.4971 29.5729 11.4971 28.9839"></polygon>
<polygon id="Path" fill="#4A3900" fill-rule="nonzero" points="12.328 7.895 12.328 25.486 9.628 25.486 9.628 17.795 2.666 17.795 2.666 25.482 0 25.482 0 7.895 2.666 7.895 2.666 15.409 9.626 15.409 9.626 7.895"></polygon>
<polygon id="Path" fill="#4A3900" fill-rule="nonzero" points="9.627 28.9839 8.969 28.9839 8.969 32.3079 9.627 32.3079"></polygon>
<path d="M6.8909,28.9839 L6.8909,31.1659 C6.8907,31.3218 6.8586,31.476 6.7967,31.6191 C6.7348,31.7622 6.6443,31.8912 6.5309,31.9982 C6.4175,32.1052 6.2834,32.1879 6.1369,32.2413 C5.9904,32.2947 5.8346,32.3177 5.6789,32.3089 C5.5226,32.3206 5.3656,32.2996 5.2179,32.2472 C5.0701,32.1948 4.9349,32.1122 4.8209,32.0047 C4.7068,31.8971 4.6165,31.767 4.5555,31.6226 C4.4946,31.4782 4.4644,31.3226 4.4669,31.1659 L4.4669,28.9839 L5.1249,28.9839 L5.1249,31.1309 C5.1141,31.2094 5.1204,31.2893 5.1434,31.3652 C5.1664,31.441 5.2056,31.5109 5.2583,31.5702 C5.3109,31.6294 5.3758,31.6765 5.4484,31.7082 C5.5211,31.7399 5.5997,31.7555 5.6789,31.7539 C5.7599,31.7565 5.8405,31.7418 5.9154,31.711 C5.9904,31.6801 6.0579,31.6337 6.1135,31.5748 C6.1692,31.516 6.2117,31.4459 6.2384,31.3694 C6.265,31.2929 6.2751,31.2116 6.2679,31.1309 L6.2679,28.9839 L6.8909,28.9839 Z" id="Path" fill="#4A3900" fill-rule="nonzero"></path>
<path d="M2.493,29.3312 L2.077,29.7472 C1.985,29.6604 1.8757,29.594 1.7563,29.5523 C1.6369,29.5106 1.51,29.4945 1.384,29.5052 C1.038,29.5052 0.865,29.6782 0.865,29.9212 C0.8681,30.0112 0.9036,30.0972 0.965,30.1632 C1.0548,30.2364 1.1625,30.2843 1.277,30.3022 L1.658,30.3712 C1.8848,30.3895 2.1013,30.4736 2.281,30.6132 C2.3656,30.7066 2.4306,30.8161 2.4722,30.9351 C2.5138,31.0542 2.531,31.1803 2.523,31.3062 C2.523,31.9642 2.004,32.3062 1.311,32.3062 C1.0895,32.3214 0.8674,32.2894 0.6593,32.2121 C0.4512,32.1349 0.2619,32.0142 0.104,31.8582 L0.52,31.4422 C0.6275,31.5403 0.7539,31.6154 0.8915,31.6631 C1.029,31.7107 1.1748,31.7298 1.32,31.7192 C1.701,31.7192 1.909,31.5802 1.909,31.3032 C1.9128,31.2014 1.877,31.102 1.809,31.0262 C1.7732,30.9898 1.7298,30.962 1.6819,30.9447 C1.6339,30.9274 1.5827,30.9211 1.532,30.9262 L1.104,30.8542 C0.8627,30.8266 0.6343,30.7305 0.446,30.5772 C0.3613,30.4901 0.296,30.3861 0.2542,30.272 C0.2125,30.1579 0.1954,30.0363 0.204,29.9152 C0.2064,29.7721 0.2387,29.6311 0.2989,29.5013 C0.3592,29.3715 0.4459,29.2557 0.5536,29.1615 C0.6613,29.0673 0.7875,28.9967 0.9242,28.9543 C1.0609,28.9118 1.2049,28.8985 1.347,28.9152 C1.7684,28.9007 2.179,29.0497 2.493,29.3312 Z" id="Path" fill="#4A3900" fill-rule="nonzero"></path>
<path d="M77.706,44.6710016 C77.384,44.6710016 77.069,44.5756 76.801,44.3967 C76.534,44.2178 76.325,43.9635 76.202,43.666 C76.079,43.3686 76.046,43.0412 76.109,42.7254 C76.172,42.4096 76.327,42.1195 76.555,41.8919 C76.782,41.6642 77.072,41.5091 77.388,41.4463 C77.704,41.3835 78.031,41.4157 78.329,41.539 C78.626,41.6622 78.881,41.8709 79.06,42.1386 C79.238,42.4063 79.334,42.7211 79.334,43.043 C79.334,43.2569 79.292,43.4687 79.21,43.6664 C79.129,43.864 79.009,44.0436 78.858,44.1948 C78.706,44.346 78.527,44.4659 78.329,44.5477 C78.132,44.6294 77.92,44.6713 77.706,44.6710016 Z M77.706,41.6929998 C77.533,41.6929 77.362,41.7269 77.202,41.7929 C77.042,41.859 76.897,41.956 76.775,42.0782 C76.653,42.2004 76.556,42.3455 76.49,42.5053 C76.424,42.665 76.39,42.8362 76.39,43.009 C76.387,43.1827 76.419,43.3551 76.484,43.5162 C76.549,43.6772 76.646,43.8234 76.769,43.9462 C76.891,44.069 77.038,44.1659 77.199,44.2309 C77.36,44.296 77.532,44.328 77.706,44.325 C77.879,44.325193 78.05,44.2912 78.21,44.2251 C78.369,44.159 78.515,44.0621 78.637,43.9399 C78.759,43.8177 78.856,43.6725 78.922,43.5128 C78.988,43.3531 79.022,43.1819 79.022,43.009 C79.016,42.6618 78.876,42.3303 78.63,42.0848 C78.385,41.8392 78.053,41.6987 77.706,41.6929998 Z M78.052,43.909 L77.706,43.216 L77.464,43.216 L77.464,43.909 L77.152,43.909 L77.152,42.143 L77.81,42.143 C77.884,42.1392 77.957,42.1508 78.026,42.1773 C78.095,42.2038 78.158,42.2444 78.21,42.2967 C78.263,42.3489 78.303,42.4115 78.33,42.4805 C78.356,42.5495 78.368,42.6233 78.364,42.697 C78.368,42.8047 78.336,42.9106 78.273,42.9983 C78.211,43.086 78.121,43.1506 78.018,43.182 L78.399,43.944 L78.053,43.944 L78.052,43.909 Z M77.74,42.42 L77.428,42.42 L77.428,42.939 L77.74,42.939 C77.777,42.9424 77.815,42.9376 77.85,42.9248 C77.885,42.9121 77.917,42.8918 77.943,42.8654 C77.97,42.839 77.99,42.8071 78.003,42.7719 C78.015,42.7368 78.02,42.6993 78.017,42.662 C78.052,42.559 77.913,42.416 77.74,42.416 L77.74,42.42 Z" id="Shape" fill="#B2BB1F" fill-rule="nonzero"></path>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

BIN
app/assets/images/icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 MiB

BIN
app/assets/images/julia.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 512 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 974 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 404 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 770 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 7.9 KiB

BIN
app/assets/images/ridge.PNG Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 MiB

BIN
app/assets/images/ridge.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 836 KiB

BIN
app/assets/images/toby.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 220 KiB

BIN
app/assets/images/toby2.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

BIN
app/assets/images/tom.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 218 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

BIN
app/assets/images/zack.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 834 KiB

View File

@@ -13,17 +13,23 @@
*= require_tree . *= require_tree .
*= require_self *= require_self
*/ */
@import url('https://fonts.googleapis.com/css2?family=Fleur+De+Leah&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Euphoria+Script&family=Fleur+De+Leah&family=Rouge+Script&display=swap');
html, body { html, body {
margin: 0; margin: 0;
padding: 0; padding: 0;
height: 100%;
} }
.hero-bg { .hero-bg {
background-image: url("assets/hero.jpg"); background-size: contain;
background-color: #FDFEFE;
}
.lavender-wisp {
background-image: url("assets/lavender-wisp.png");
background-size: cover; background-size: cover;
height: 4rem;
} }
/* #container { */ /* #container { */
@@ -67,3 +73,9 @@ html, body {
font-weight: 400; font-weight: 400;
font-style: normal; font-style: normal;
} }
.rogue-script {
font-family: "Rouge Script", cursive;
font-weight: 400;
font-style: normal;
}

View File

@@ -1,4 +1,4 @@
class ApplicationController < ActionController::Base class ApplicationController < ActionController::Base
# Only allow modern browsers supporting webp images, web push, badges, import maps, CSS nesting, and CSS :has. # Only allow modern browsers supporting webp images, web push, badges, import maps, CSS nesting, and CSS :has.
allow_browser versions: :modern # allow_browser versions: :modern
end end

View File

@@ -1,4 +1,41 @@
class HomeController < ApplicationController class HomeController < ApplicationController
Person = Struct.new(:name, :image, :role, :relationship, :extra_attrs)
PARTY_MEMBERS = [
[ "Gemma", true, "Matron of Honor", "Childhood Friend" ],
[ "Meghan", true, "Maid of Honor", "Rock Climbing Friend" ],
[ "Christine", true, "Bridesmaid", "Childhood Friend" ],
[ "Jennie", true, "Bridesmaid", "Rock Climbing Friend" ],
[ "Julia", true, "Bridesmaid", "Sister-in-law" ],
[ "DeAnna", true, "Bridesmaid", "Rock Climbing Friend", "object-left-top" ],
[ "Emil", true, "Best Man", "Adam's Brother", "object-left-top" ],
[ "Ridge", true, "Best Man", "Childhood Friend", "object-left-top" ],
[ "Tom", true, "Groomsman", "Childhood Friend" ],
[ "Eric", true, "Groomsman", "Childhood Friend", "object-top" ],
[ "Toby", true, "Groomsman", "Rock Climbing Friend", "object-top" ],
[ "Zack", true, "Groomsman", "Jillian's Brother" , "object-bottom"]
].map do |name, image, role, relationship, extra|
Person.new(name, image, role, relationship, extra)
end
Section = Struct.new(:id, :title)
SECTIONS = [
Section.new("ceremony", "Ceremony & Reception"),
Section.new("wedding-party", "Wedding Party"),
Section.new("accommodations", "Accommodations"),
Section.new("registry", "Registry"),
Section.new("our-story", "How We Met")
].freeze
def index def index
@rsvp_by_date = rsvp_by_date
@wedding_party = PARTY_MEMBERS
@sections = SECTIONS
end
def rsvp_by_date
ENV["RSVP_DATE"] || "May 1, 2025"
end end
end end

View File

@@ -0,0 +1,2 @@
class InvitationsController < ApplicationController
end

View File

@@ -0,0 +1,2 @@
module InvitationsHelper
end

6
app/models/invitation.rb Normal file
View File

@@ -0,0 +1,6 @@
class Invitation < ApplicationRecord
validates :name, length: {maximum: 64}
validates :attending, inclusion: { in: ["yes", "no"] }
validates :additional_guest, length: {maximum: 64}
end

View File

@@ -0,0 +1,39 @@
<div id="accommodations" class="w-screen text-slate-900 lg:my-8 bg-[<%= color %>] lg:bg-[#fdfefe]">
<div class="container mx-auto bg-[<%= color %>] lg:rounded-2xl py-4 px-4 lg:mt-4 lg:pb-2 lg:shadow-2xl lg:mb-4">
<div class="w-fit mx-auto lg:flex lg:flex-row lg:justify-center lg:items-center">
<!-- <span class="text-7xl pl-4">🛏️</span> -->
<span class="text-5xl pl-4 lg:pt-4 rogue-script lg:text-7xl">Accommodations</span>
</div>
<div class="lg:w-2/3 px-8 lg:mx-auto">
<p class="text-lg text-justify">We have a wedding block for our guests at the Holiday Inn Express, which is a few minutes away from the venue. The block is booked now, but there are other hotels close by.</p>
</div>
<div class="flex flex-col my-4 lg:flex-row lg:w-fit lg:mx-auto lg:my-12">
<div class="flex flex-row basis-1/3 bg-[#fdfefe] rounded-lg mx-4 mt-4 px-4 py-4 items-center lg:p-12">
<img src="<%= image_path 'hiexpress.svg' %>" class="w-16 h-16" />
<div class="flex flex-col pl-2">
<a href="" class="text-3xl">Holiday Inn</a>
<span class="text-xl">3 minutes away</span>
<span>610-399-4600</span>
</div>
</div>
<div class="flex flex-row basis-1/3 bg-[#fdfefe] rounded-lg mx-4 mt-4 px-4 py-4 items-center lg:p-12">
<img src="<%= image_path 'home2.svg' %>" class="w-16 h-16" />
<div class="flex flex-col pl-2">
<a href="" class="text-3xl">Home2 Suites</a>
<span class="text-xl">7 minutes away</span>
<span>484-354-2985</span>
</div>
</div>
<div class="flex flex-row basis-1/3 bg-[#fdfefe] rounded-lg mx-4 mt-4 px-4 py-4 items-center lg:p-12">
<img src="<%= image_path 'residence-inn.svg' %>" class="w-16 h-16" />
<div class="flex flex-col pl-2">
<a href="" class="text-3xl">Residence Inn</a>
<span class="text-xl">12 minutes away</span>
<span>610-459-1190</span>
</div>
</div>
</div>
</div>
</div>

View File

@@ -0,0 +1,55 @@
<div class="container mx-auto flex flex-row justify-center md:hidden lg:hidden">
<img src="<%= image_path 'love-park-small.png' %>">
</div>
<div id="ceremony" class="w-screen bg-[<%= color %>] lg:bg-[#fdfefe] lg:my-8">
<div class="container mx-auto lg:h-fit text-slate-900 lg:rounded-2xl bg-[<%= color %>] lg:shadow-2xl">
<div class="w-fit mx-auto">
<h1 class="text-5xl px-4 pt-8 pb-4 rogue-script lg:text-7xl">Ceremony & Reception</h1>
</div>
<div class="flex flex-col lg:flex-row lg:space-x-4">
<div class="basis-1/3 max-md:hidden lg:rounded-bl-2xl lg:content-center">
<img src="<%= image_path 'love-park-small.png' %>" class="lg:scale(0.7) lg:rounded-bl-2xl md:mx-auto" />
</div>
<div class="basis-2/3">
<p class="text-xl px-5 pt-2">We're getting married! Come join us for our Ceremony at Penn Oaks Golf Club at 5:00pm June 7, 2025.</p>
<p class="text-xl px-4 pt-2">After, we will enjoy drinks and hors d'oeuvres on the patio for cocktail hour before moving into the ballroom to eat and dance for the reception until 11:00 pm.</p>
<p class="text-xl px-4 py-2" >We are looking forward to seeing you there!</p>
<div class="pb-4">
<div class="flex flex-row px-8 items-center">
<svg width="30" height="30" viewbox="0 0 24 24">
<path fill-rule="evenodd" clip-rule="evenodd" d="M11.02 7.207c.26-.457.915-.734 1.565-.55.64.18.93.697.851 1.141-.085.464-.576.898-1.268.895a.604.604 0 0 0-.08.005.6.6 0 0 0-.687.594v1.613l-5.246 2.963-.002.001-3.064 1.716-.004.002c-.538.307-.779.94-.651 1.519v.002c.132.586.632 1.054 1.268 1.063H20.28c.64 0 1.147-.465 1.283-1.055v-.002c.132-.582-.11-1.217-.647-1.526l-.003-.002-3.02-1.716-2.747-1.556a.6.6 0 0 0-.591 1.045l2.746 1.554 3.017 1.715c.046.027.1.11.075.22-.024.103-.091.123-.113.123H3.717c-.024 0-.089-.024-.112-.125-.023-.109.031-.19.073-.215l3.063-1.716.002-.001 5.535-3.127a.598.598 0 0 0 .287-.376.599.599 0 0 0 .035-.204V9.86c.985-.158 1.836-.851 2.017-1.848.209-1.16-.583-2.194-1.706-2.51-1.11-.313-2.366.113-2.934 1.11a.6.6 0 1 0 1.043.595z" fill="currentColor"></path>
</svg>
<span class="text-lg px-4">Formal Attire</span>
</div>
</div>
<div class="pb-4">
<div class="flex flex-row px-8 items-center">
<svg width="30" height="30" viewbox="0 0 24 24">
<path fill-rule="evenodd" clip-rule="evenodd" d="M5.437 9.041c0-3.73 2.886-6.81 6.52-6.835A.61.61 0 0 1 12 2.204c3.653 0 6.563 3.091 6.563 6.837 0 5.975-3.986 10.694-5.527 12.298a1.401 1.401 0 0 1-1.036.456c-.393 0-.772-.165-1.036-.456-1.54-1.605-5.527-6.34-5.527-12.298zM12 3.406c.013 0 .026 0 .039-.002 2.921.022 5.324 2.516 5.324 5.637 0 5.489-3.702 9.916-5.199 11.474a.597.597 0 0 0-.015.016.202.202 0 0 1-.149.064.202.202 0 0 1-.149-.064.388.388 0 0 0-.015-.016C10.34 18.957 6.637 14.513 6.637 9.04c0-3.134 2.423-5.635 5.363-5.635zM9.332 8.729A2.67 2.67 0 1 1 12 11.4a2.67 2.67 0 0 1-2.668-2.67zM12 4.86a3.87 3.87 0 0 0-3.868 3.87A3.87 3.87 0 1 0 12 4.86z" fill="currentColor"></path>
</svg>
<span class="text-lg px-4">150 Penn Oaks Dr, West Chester, PA 19382</span>
</div>
</div>
<div class="pb-4">
<div class="flex flex-row px-8 items-center">
<svg class="svg-icon" width="30" height="30" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M846.1 787.9c-17.6-33.1-177.4-320.4-209.9-378.8 2-1.2 3.8-2.5 5.4-4.1 5.9-5.9 8.8-14.5 8.8-25.2 0-17.3-7.7-28.7-21.6-32.5 0.3-10.2 4.2-26.1 8.3-43 6.1-25.1 13-53.5 13-79.6v-68.3c0-0.6-0.1-1.2-0.2-1.7 0-0.4 0.1-0.8 0.1-1.2V99.3c0-19-15.5-34.5-34.5-34.5S581 80.3 581 99.3v48.5c-16.3 4.2-33.5 17.3-51.4 39.1-7 8.5-12.9 17-17.4 23.8-4.3-6.8-10.1-15.2-16.9-23.7-18-22.4-35.5-35.7-52.1-39.5V99.3c0-19-15.5-34.5-34.5-34.5s-34.5 15.5-34.5 34.5v54.1c0 0.4 0 0.8 0.1 1.2-0.1 0.6-0.2 1.1-0.2 1.7v68.3c0 26.1 6.9 54.5 13 79.6 4.1 16.8 8 32.8 8.3 43-13.8 3.8-21.5 15.2-21.5 32.5 0 14 5 24 14.2 29.4-32.6 58.6-192.4 345.7-210 378.8-11.5 21.7-13.9 41-6.9 57.4 7.1 16.7 23.1 28.7 47.7 35.7 39.5 11.3 120.7 18.1 141.5 19.7 5.1 6.9 16.7 21.2 35.1 35.4 23.2 17.8 62.3 39.1 116.5 39.1h0.4c54.3 0 93.3-21.3 116.5-39.1 18.5-14.2 30.1-28.4 35.1-35.4 20.8-1.6 101.9-8.4 141.5-19.7 24.5-7 40.6-19 47.7-35.7 6.7-16.4 4.4-35.7-7.1-57.4zM600.9 99.3c0-8 6.5-14.5 14.5-14.5s14.5 6.5 14.5 14.5v47h-29v-47z m-206.8 0c0-8 6.5-14.5 14.5-14.5s14.5 6.5 14.5 14.5v47h-29v-47z m-0.1 67h39c26.8 0 58.3 46.9 69.4 67 0.8 2.3 2.4 4.4 4.7 5.6 1.5 0.9 3.2 1.3 4.9 1.2 1.6 0 3.3-0.3 4.9-1.2 2.3-1.2 4-3.3 4.7-5.6 11.5-20.1 43.9-67.1 70.9-67.1H630v58.3c0 23.7-6.6 50.9-12.4 74.9-4.8 19.6-8.9 36.5-8.9 49v1c-10.7 6.1-46.8 24.5-97 24.5-50.1 0-86.1-18.5-96.5-24.6v-0.9c0-12.5-4.1-29.4-8.9-49-5.8-24-12.4-51.2-12.4-74.9v-58.2z m9.7 199.6c10.8 6.6 50.8 28.1 108 28.1 57.6 0 97.7-21.6 108.5-28.1 6.5 0.5 10 3.5 10 13.9 0 3.7-0.5 8.6-3 11.1-1.8 1.8-5.1 2.8-9.6 2.8-2 0-3.9 0.6-5.6 1.7-0.4 0.3-39.9 26.5-100 26.5-59.9 0-99.6-26.2-100-26.5-1.7-1.1-3.6-1.7-5.6-1.7-8.2 0-12.7-2.2-12.7-13.9 0.1-10.4 3.5-13.4 10-13.9z m430.8 471.6c-4.6 10.8-16.3 19-34.7 24.3-35.2 10.1-108.7 16.7-133.7 18.7l-80.5-361.3c-1.2-5.4-6.5-8.8-11.9-7.6-5.4 1.2-8.8 6.5-7.6 11.9l81.5 365.6c-10.2 13.8-54.3 66.1-135.4 66.1h-0.4c-38.8 0-73.7-11.6-103.7-34.5-16.9-12.9-27.4-25.9-31.8-31.7l81.4-365.5c1.2-5.4-2.2-10.7-7.6-11.9-5.4-1.2-10.7 2.2-11.9 7.6l-80.5 361.3c-25-2-98.4-8.6-133.6-18.7-18.4-5.3-30.1-13.4-34.7-24.3-4.5-10.6-2.4-24.1 6.1-40.2 17.9-33.6 183.5-331.2 211.6-381.6 14.4 8.1 52.4 26.1 104.9 26.1 52.5 0 90.5-18 104.9-26.1 28.1 50.4 193.6 348 211.5 381.6 8.6 16.1 10.6 29.6 6.1 40.2z" /></svg>
<span class="text-lg px-4">Wedding Party Color</span>
<span class="aspect-1/1 w-12 h-6 outline outline-black/10 bg-[#b3c0a7]"></span>
<span class="text-lg pl-4">(Dusty Sage)</span>
</div>
</div>
<div class="max-md:hidden md:w-fit md:mx-auto ">
<iframe src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d6120.924192987885!2d-75.56311592187585!3d39.908673971526014!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x89c6f042ac27b4e9%3A0xc4a8ba245e1ee29d!2sPenn%20Oaks%20Golf%20Club!5e0!3m2!1sen!2sus!4v1731812607168!5m2!1sen!2sus" width="570" height="500" style="border:0;" allowfullscreen="" loading="lazy" class="lg:rounded-xl lg:mb-4" referrerpolicy="no-referrer-when-downgrade"></iframe>
</div>
</div>
<div class="basis-1/3 overflow-hidden mx-auto md:hidden lg:hidden">
<iframe src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d6120.924192987885!2d-75.56311592187585!3d39.908673971526014!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x89c6f042ac27b4e9%3A0xc4a8ba245e1ee29d!2sPenn%20Oaks%20Golf%20Club!5e0!3m2!1sen!2sus!4v1731812607168!5m2!1sen!2sus" width="370" height="300" style="border:0;" allowfullscreen="" loading="lazy" referrerpolicy="no-referrer-when-downgrade"></iframe>
</div>
</div>
</div>
</div>

View File

@@ -0,0 +1,34 @@
<div id="our-story" class="w-screen bg-[<%= color %>] lg:bg-[#fdfefe] lg:my-8">
<div class="container mx-auto lg:h-fit text-slate-900 lg:rounded-2xl lg:bg-[<%= color %>] lg:shadow-2xl px-8 py-8">
<div class="w-fit mx-auto">
<h1 class="text-5xl rogue-script lg:text-7xl">How we met</h1>
</div>
<ol class="relative border-l border-slate-900">
<li class="mb-10 ms-4">
<div class="absolute w-3 h-3 bg-slate-600 rounded-full mt-1.5 -start-1.5 border border-slate-900"></div>
<time class="mb-1 text-sm font-normal leading-none text-gray-600">June 2019</time>
<h3 class="text-lg font-semibold text-slate-900">Met Rock Climbing</h3>
</li>
<li class="mb-10 ms-4">
<div class="absolute w-3 h-3 bg-slate-600 rounded-full mt-1.5 -start-1.5 border border-slate-900"></div>
<time class="mb-1 text-sm font-normal leading-none text-gray-600">October 2019</time>
<h3 class="text-lg font-semibold text-slate-900">Adam asked out Jillian in Italy (after climbing many stairs)</h3>
</li>
<li class="mb-10 ms-4">
<div class="absolute w-3 h-3 bg-slate-600 rounded-full mt-1.5 -start-1.5 border border-slate-900"></div>
<time class="mb-1 text-sm font-normal leading-none text-gray-600">August 2020</time>
<h3 class="text-lg font-semibold text-slate-900">Moved to Philadelphia</h3>
</li>
<li class="mb-10 ms-4">
<div class="absolute w-3 h-3 bg-slate-600 rounded-full mt-1.5 -start-1.5 border border-slate-900"></div>
<time class="mb-1 text-sm font-normal leading-none text-gray-600">September 2021</time>
<h3 class="text-lg font-semibold text-slate-900">Bought a house in Chalfont</h3>
</li>
<li class="mb-10 ms-4">
<div class="absolute w-3 h-3 bg-slate-600 rounded-full mt-1.5 -start-1.5 border border-slate-900"></div>
<time class="mb-1 text-sm font-normal leading-none text-gray-600">October 2024</time>
<h3 class="text-lg font-semibold text-slate-900">5 year anniversary date and Proposal</h3>
</li>
</ol>
</div>
</div>

View File

@@ -0,0 +1,17 @@
<div id="registry" class="w-screen text-slate-900 lg:my-8 bg-[<%= color %>] lg:bg-[#fdfefe]">
<div class="container mx-auto bg-[<%= color %>] lg:rounded-2xl pt-4 lg:mt-4 lg:pb-2 lg:shadow-2xl lg:mb-4">
<div class="w-fit mx-auto lg:flex lg:flex-row lg:justify-center lg:items-center">
<span class="text-5xl pl-4 lg:pt-4 rogue-script lg:text-7xl">Registry & Gifts</span>
</div>
<div class="w-fit mx-auto px-8 pt-4 lg:w-2/3">
<p class="text-lg text-justify text-slate-900 px-6 lg:px-0">
Your presence is the best gift, but if youd like to help us start our next chapter,
weve put together a registry with some things we love. Feel free to browse or
choose something meaningful to you!
</p>
</div>
<div class="flex flex-col pt-4 lg:flex-row lg:w-1/3 lg:mx-auto lg:my-12 text-center items-center justify-center">
<a class="text-xl rounded-lg bg-emerald-600 px-4 py-4 mb-4 lg:mr-4 w-1/3 text-slate-100 hover:bg-emerald-500" href="/registry">Registry</a>
</div>
</div>
</div>

View File

@@ -0,0 +1,43 @@
<div id="wedding-party" class="w-screen text-slate-900 lg:my-8 bg-[<%= color %>] lg:bg-[#fdfefe]">
<div class="container mx-auto bg-[<%= color %>] lg:rounded-2xl pt-4 lg:mt-4 lg:pb-2 lg:shadow-2xl lg:mb-4">
<div class="w-fit mx-auto">
<h1 class="text-5xl rogue-script lg:text-7xl">Wedding Party</h1>
</div>
<!--- Wedding party for large screens --->
<% @wedding_party.each_slice(3) do |r| %>
<div class="max-lg:hidden flex flex-row py-4 px-4">
<% r.each do |person| %>
<div id="wp-card" class="w-1/3">
<% if person.image %>
<img src="<%= image_path(person.name.downcase + '.jpg') %>" class="w-80 h-80 mx-auto rounded-full aspect-square object-cover shadow-xl <%= person.extra_attrs || '' %>">
<% else %>
<div class="bg-red-500 w-80 h-80 mx-auto rounded-full aspect-square object-cover"></div>
<% end %>
<div id="wp-name" class="w-fit mx-auto text-xl pt-2"><%= person.name %></div>
<div id="wp-role" class="w-fit mx-auto text-md text-slate-600"><%= person.role %></div>
<div id="wp-relation" class="w-fit mx-auto text-md pb-2 text-slate-600"><%= person.relationship %></div>
</div>
<% end %>
</div>
<% end %>
<!--- End wedding party for large screens ---->
<!--- Wedding party for small screens --->
<% @wedding_party.each_slice(1) do |r| %>
<div class="lg:hidden flex py-4 px-2">
<% r.each do |person| %>
<div id="wp-card" class="w-fit px-2 mx-auto">
<% if person.image %>
<img src="<%= image_path(person.name.downcase + '.jpg') %>" class="mx-auto w-60 h-60 md:w-80 md:h-80 rounded-full aspect-square object-cover shadow-xl <%= person.extra_attrs || '' %>">
<% else %>
<div class="bg-red-500 w-60 h-60 md:w-80 md:h-80 mx-auto rounded-full aspect-square object-cover"></div>
<% end %>
<div id="wp-name" class="w-fit mx-auto text-xl pt-2"><%= person.name %></div>
<div id="wp-role" class="w-fit mx-auto text-md text-slate-600"><%= person.role %></div>
<div id="wp-relation" class="w-fit mx-auto text-md pb-2 text-slate-600"><%= person.relationship %></div>
</div>
<% end %>
</div>
<% end %>
<!---------End WP for small screens --->
</div>
</div>

View File

@@ -1,45 +1,58 @@
<!-- options: #a99dab #dfebde --> <!-- options: #a99dab #dfebde -->
<div class="bg-[#a99dab] w-screen h-screen"> <div class="bg-[#a99dab] w-screen">
<!--- HERO START ---> <!--- HERO START --->
<div class="hero-bg h-3/4"> <div class="hero-bg h-3/4">
<!-- Nav START --> <!-- Nav START -->
<nav class="flex items-center justify-between flex-wrap"> <div class="relative h-12 z-30">
<div id="burger-menu" class="block lg:hidden"> <div id="burger-menu" class="absolute right-0 pr-4 pt-4 block lg:hidden">
<button class="flex items-center px-3 py-2 border rounded hover:text-white hover:border-white"> <button class="flex items-center px-3 py-2 border rounded hover:text-white hover:border-white">
<svg class="fill-current h-3 w-3" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><title>Menu</title><path d="M0 3h20v2H0V3zm0 6h20v2H0V9zm0 6h20v2H0v-2z"/></svg> <svg class="fill-current text-slate-300 h-3 w-3" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><title>Menu</title><path d="M0 3h20v2H0V3zm0 6h20v2H0V9zm0 6h20v2H0v-2z"/></svg>
</button> </button>
</div> </div>
<div class="w-full block flex-grow lg:hidden"> <nav class="flex items-center justify-between flex-wrap pt-12 z-30">
<div id="nav-links" class="text-xl max-md:hidden flex flex-col lg:flex-row lg:mr-4"> <div class="bg-[#a99dab] w-full block flex-grow lg:hidden">
<a href="#" class="block mt-4 lg:inline-block lg:mt-0 hover:text-white mr-24">Ceremony & Reception</a> <div id="nav-links" class="text-xl max-lg:hidden flex flex-col pl-4 lg:flex-row lg:mr-4 mb-4">
<a href="#" class="block mt-4 lg:inline-block lg:mt-0 hover:text-white mr-24">Accommodations</a> <% @sections.each do |s| %>
<a href="#" class="block mt-4 lg:inline-block lg:mt-0 hover:text-white mr-24">Dress</a>
<a href="#" class="block mt-4 lg:inline-block lg:mt-0 hover:text-white mr-24">Registry</a> <a href="#<%= s.id %>" class="block mt-4 lg:inline-block lg:mt-0 hover:text-white mr-24"><%= s.title %></a>
<a href="#" class="block mt-4 lg:inline-block lg:mt-0 hover:text-white">RSVP</a> <% end %>
</div> </div>
</div> </div>
</nav> </nav>
</div>
<div class="container mx-auto">
<div class="flex flex-row justify-center">
<img src="<%= image_path 'lavender-wisp.png' %>" class="basis-1/2 max-w-40 lg:max-w-80"/>
<img src="<%= image_path 'lavender-wisp.png' %>" class="basis-1/2 max-w-40 lg:max-w-80" style="transform: scaleX(-1)"/>
</div>
</div>
<!-- Nav END --> <!-- Nav END -->
<div class="container mx-auto">
<div class="pt-12 pb-8 flex flex-col items-center">
<span class="fleur-de-leah-regular text-8xl basis-1/3">Jillian</span>
<span class="fleur-de-leah-regular text-6xl basis-1/3">and</span>
<span class="fleur-de-leah-regular text-8xl basis-1/3">Adam</span>
</div>
</div>
<div class="w-fit mx-auto py-56 sm:py-24"> <div class="container mx-auto flex flex-col items-center pt-4 pb-8">
<h1 class="fleur-de-leah-regular text-darkgreen-600 text-7xl">Jillian & Adam</h1> <div class="text-2xl px-4 lg:text-2xl">June 7, 2025 </div>
<div class="mx-auto items-center w-fit"> <div class="text-xl px-4 lg:text-xl">Penn Oaks Golf Club, West Chester, PA</div>
<div class="text-3xl py-4">June 7, 2025</div>
</div> </div>
<div class="mx-auto items-center w-fit">
<div class="text-3xl py-4">207 DAYS TO GO!</div> <div class="w-full block flex-grow max-lg:hidden lg:flex lg:w-auto lg:justify-center lg:pb-4 lg:pt-4 lg:border-t lg:border-b">
</div> <div id="nav-links-lg" class="text-xl flex flex-col lg:flex-row">
</div> <% @sections.each do |s| %>
<div class="w-full block flex-grow max-md:hidden lg:flex lg:w-auto lg:justify-center"> <a href="#<%= s.id %>" class="block mt-4 lg:inline-block lg:mt-0 hover:text-slate-500 px-12"><%= s.title %></a>
<div id="nav-links-lg" class="text-xl flex flex-col lg:flex-row lg:mr-4">
<a href="#" class="block mt-4 lg:inline-block lg:mt-0 hover:text-white mr-24">Ceremony & Reception</a> <% end %>
<a href="#" class="block mt-4 lg:inline-block lg:mt-0 hover:text-white mr-24">Accommodations</a>
<a href="#" class="block mt-4 lg:inline-block lg:mt-0 hover:text-white mr-24">Dress</a>
<a href="#" class="block mt-4 lg:inline-block lg:mt-0 hover:text-white mr-24">Registry</a>
<a href="#" class="block mt-4 lg:inline-block lg:mt-0 hover:text-white">RSVP</a>
</div> </div>
</div> </div>
</div> </div>
<!--- Hero END --> </div>
<% @sections.each do |section| %>
<%= render section.id, color: cycle("#ddd3be", "#b2c0b2") %>
<% end %>
<div class="hidden object-left-top object-top object-center object-bottom object-left-bottom object-[0%_0%] object[100%_100%] object-[50%_0%] object-[0%-50%] object-[0%_100%] object-[100%_0%]"></div>
</div> </div>

View File

@@ -0,0 +1,63 @@
<div class="bg-white">
<div class="min-w-32 my-4 mx-4 border-4 border-[#f4d03f] px-4 py-4">
<div class= "flex flex-row justify-center">
<h1 class="text-5xl rogue-script">RSVP</h1>
<p class="text-xl px-8 ">Please respond by May 1, 2025</p>
</div>
<div class="flex flex-row justify-center pt-4">
<span class="width-1/3">Name:</span>
<input type="text" id="name" name="name" class="border border-b width-2/3"></input>
</div>
<div class="flex flex-col">
<div class="flex items-center space-x-2">
<label class="relative flex items-center cursor-pointer">
<input
type="radio"
id="attend-yes"
name="attend"
class="sr-only peer/attend-yes"
/>
<div class="w-6 h-6 border-2 border-gray-400 peer-checked/attend-yes:bg-blue-500 peer-checked/attend-yes:text-white flex items-center justify-center">
<span class="hidden peer-checked/attend-yes:inline-block text-lg font-bold"></span>
</div>
<span class="ml-2 text-gray-700">Accept</span>
</label>
</div>
<div class="flex items-center space-x-2">
<label class="relative flex items-center cursor-pointer">
<input
type="radio"
id="attend-no"
name="attend"
class="sr-only peer/attend-no"
/>
<div class="w-6 h-6 border-2 border-gray-400 peer-checked/attend-no:bg-blue-500 peer-checked/attend-no:text-white flex items-center justify-center">
<span class="invisible peer-checked/attend-no:visible text-lg font-bold">X</span>
</div>
<span class="ml-2 text-gray-700">Decline</span>
</label>
</div>
</div>
</div>
</div>
<!-- <div class="flex flex-col justify-center mt-8 w-fit mx-auto"> -->
<!-- <div class="flex flex-row items-center"> -->
<!-- <input type="radio" id="attend-yes" name="attending" value="yes" -->
<!-- class="peer/attend-yes"></input> -->
<!-- <label class="text-xl px-4" for="attend-yes">Accept</label> -->
<!-- <input type="radio" id="attend-no" class="ml-4" name="attending" value="yes"></input> -->
<!-- <label class="text-xl px-4" for="attend-no">Decline</label> -->
<!-- </div> -->
<!-- <div class="flex flex-row items-center justify-center"> -->
<!-- <input type="text" class="w-8 border-b-4 border-t-0 border-l-0 border-r-0 border-black focus:outline-none p-2" id="additional_guests" name="additional_guests"></input> -->
<!-- <label class="text-xl pl-4" for="additional_guests"># of Guests</label> -->
<!-- </div> -->
<!-- </div> -->
</div>
</div>

View File

@@ -9,23 +9,24 @@
<%= yield :head %> <%= yield :head %>
<link rel="manifest" href="/manifest.json"> <link rel="manifest" nhref="/manifest.json">
<link rel="icon" href="/icon.png" type="image/png"> <link rel="icon" href="<%= image_path 'icon.png' %>" type="image/png">
<link rel="icon" href="/icon.svg" type="image/svg+xml"> <link rel="apple-touch-icon" href="<%= image_path 'icon.png' %>">
<link rel="apple-touch-icon" href="/icon.png">
<%= stylesheet_link_tag "tailwind", "inter-font", "data-turbo-track": "reload" %> <%= stylesheet_link_tag "tailwind", "inter-font", "data-turbo-track": "reload" %>
<%= stylesheet_link_tag "application", "data-turbo-track": "reload" %> <%= stylesheet_link_tag "application", "data-turbo-track": "reload" %>
</head> </head>
<body> <body>
<div id="main-content"> <div id="main-content" class="lg:bg-[#fdfefe]">
<%= yield %> <%= yield %>
</div> </div>
<script> <script>
var burgerMenu = document.getElementById('burger-menu'); var burgerMenu = document.getElementById('burger-menu');
var navLinks = document.getElementById('nav-links'); var navLinks = document.getElementById('nav-links');
burgerMenu.addEventListener('click', function() { burgerMenu.addEventListener('click', function() {
navLinks.classList.toggle("max-md:hidden"); navLinks.classList.toggle("max-lg:hidden");
}); });
</script> </script>

View File

@@ -1 +1 @@
JRTIN06TKZsCoDf+UgdLcctkwWK+JlkDZBFHqLF9HPw1fyzU/y+BtSfEBN5Rj8J/+mqsPh3gkrqcEANGF617CzhzeRtRqBl1D/NQUYb8bmXpViwmFY3TY+xjNX0/F0O2QQlOedZcPLx3dSy/zEJTK7hmEPrP6t8cK45OeZ8ZcWtCuNOinKCD48uoZ/XB0ktmXN9XIalE+6fAjPedijCo0yBmtmK0ZJOs1kVmLp39AkCTAAIVCFQwiPa8mpgXXvZZSKdAEvHadm0AIQH5D7/4OxGQ7HenZlsVwUVp4L6rJpjQaYecjA0Eydh9oKEPEW4AmiOENTc/wMqHNr0ZBN1z2Tk2kwmau6f5priWDKNjHc6kVs8MuLb7WhaZApyY+VsQog+pNC9vwzLxXou9gqvW5gi6t3HW--p70OWRN5WYuIXeTl--WUsSOVyNaCaVBAUkhClggw== nq74pmY3+gFYDs+R6ck6KmqgkvfA9DPDG1n8UKwAkX89O/gjIUc4PhTHsAe4EBT1CiS/mp9i6TEDjOH7hlnqmbcyZvkqkp6uU+W7M7N884NmjHXgBIdUTtDIXBvRkRNGeORxdB3hTHiW+Z5JIwr3Amwj6L/PTpEhzhU0Ab9cgXHDvaP9Tu6WkR3Iqc8jszaXaY+a8UTuM2d8b6+TrmdHJ++T/8UZ7YGBvd/ZTuWpCX7o7lgTwKhcHpkOMMXzPKTmjckxkB0XO8fg60h29Ptz9v2yNk9ziMLS1frgR+DjDX1qlLzfrocBfD6gKN6QH97QjwfmnADkCinvMxnCznGYvOlHhWocU4TQd7/6IJ/hc5jVZilnYjBbORIv0cXSEiWLQSWBqUOAhNz5SUhj+Ue3Pd9Bn82d--tT7tbstsISAalRfw--97ewUE6jctuey2sBTgi9VA==

View File

@@ -0,0 +1 @@
fLFy8ePq2LU805NeOzG46zk4puICcuLyrEYUQ4R9BG3ZjcmTwJXJdr+pAtxaKDN7feZo4WxRdWN3GwUFVPmjdjzmacMC2NdVxnkv1XYcuzCgQQjIf6seKV4aae6opMn0LOE/m8KEUU9gnSUIcyIiQBVbc7oB6MntT1LdydJaEr57UggcJ0S5w0GG8sD2PFCzo7k4NgCUXfhkv49ks/26QImpXWSPj4/jpy5NnduwqW+zy7W0xp82r+UZ1j6I/obIdIDVw499t28ZARStyC4x7ktOQMRnF2zswC5C35hfGH1jeHNZ/Z11dHHWeZ/JphYvEQCsj4oWcRdFZtFA+qNELof0+XLnXtpSpG+nCKDK5a3yoepoD5nbtbAWjBLMaBwucST/6Ri2FMWSeQr0jJAdsQRjGPcq--Ys0xElNnJpVF3qVo--ey7marpjJGHzevY8fGwl3g==

View File

@@ -29,4 +29,5 @@ test:
# ensure the database is located in a persisted volume. # ensure the database is located in a persisted volume.
production: production:
<<: *default <<: *default
database: /storage/production.sqlite3
# database: path/to/persistent/storage/production.sqlite3 # database: path/to/persistent/storage/production.sqlite3

98
config/deploy.yml Normal file
View File

@@ -0,0 +1,98 @@
# Name of your application. Used to uniquely configure containers.
service: wedding-app
# Name of the container image.
image: adam/my-app-1
# Deploy to these servers.
servers:
web:
- ramvplus
# job:
# hosts:
# - 192.168.0.1
# cmd: bin/jobs
# Enable SSL auto certification via Let's Encrypt and allow for multiple apps on a single web server.
# Remove this section when using multiple web servers and ensure you terminate SSL at your load balancer.
#
# Note: If using Cloudflare, set encryption mode in SSL/TLS setting to "Full" to enable CF-to-app encryption.
proxy:
ssl: false
host: ramvplus.tail76567.ts.net
# Proxy connects to your container on port 80 by default.
app_port: 3000
# Credentials for your image host.
registry:
# Specify the registry server, if you're not using Docker Hub
server: git.fixergrid.net
username: adam@fixergrid.net
# Always use an access token rather than real password (pulled from .kamal/secrets).
password:
- KAMAL_REGISTRY_PASSWORD
# Configure builder setup.
builder:
arch: amd64
# Inject ENV variables into containers (secrets come from .kamal/secrets).
#
# env:
# clear:
# DB_HOST: 192.168.0.2
# secret:
# - RAILS_MASTER_KEY
# Aliases are triggered with "bin/kamal <alias>". You can overwrite arguments on invocation:
# "bin/kamal logs -r job" will tail logs from the first server in the job section.
#
# aliases:
# shell: app exec --interactive --reuse "bash"
# Use a different ssh user than root
#
ssh:
user: adammo
# Use a persistent storage volume.
#
volumes:
- "wedding-app-db:/storage"
# Bridge fingerprinted assets, like JS and CSS, between versions to avoid
# hitting 404 on in-flight requests. Combines all files from new and old
# version inside the asset_path.
#
# asset_path: /app/public/assets
# Configure rolling deploys by setting a wait time between batches of restarts.
#
# boot:
# limit: 10 # Can also specify as a percentage of total hosts, such as "25%"
# wait: 2
# Use accessory services (secrets come from .kamal/secrets).
#
# accessories:
# db:
# image: mysql:8.0
# host: 192.168.0.2
# port: 3306
# env:
# clear:
# MYSQL_ROOT_HOST: '%'
# secret:
# - MYSQL_ROOT_PASSWORD
# files:
# - config/mysql/production.cnf:/etc/mysql/my.cnf
# - db/production.sql:/docker-entrypoint-initdb.d/setup.sql
# directories:
# - data:/var/lib/mysql
# redis:
# image: valkey/valkey:8
# host: 192.168.0.2
# port: 6379
# directories:
# - data:/data

View File

@@ -49,7 +49,7 @@ Rails.application.configure do
# config.assume_ssl = true # config.assume_ssl = true
# Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies. # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
config.force_ssl = true config.force_ssl = false
# Skip http-to-https redirect for the default health check endpoint. # Skip http-to-https redirect for the default health check endpoint.
# config.ssl_options = { redirect: { exclude: ->(request) { request.path == "/up" } } } # config.ssl_options = { redirect: { exclude: ->(request) { request.path == "/up" } } }
@@ -96,10 +96,10 @@ Rails.application.configure do
config.active_record.attributes_for_inspect = [ :id ] config.active_record.attributes_for_inspect = [ :id ]
# Enable DNS rebinding protection and other `Host` header attacks. # Enable DNS rebinding protection and other `Host` header attacks.
# config.hosts = [ config.hosts = [
# "example.com", # Allow requests from example.com "wedding.fixergrid.net",
# /.*\.example\.com/ # Allow requests from subdomains like `www.example.com` "jillianandadam.love"
# ] ]
# Skip DNS rebinding protection for the default health check endpoint. # Skip DNS rebinding protection for the default health check endpoint.
# config.host_authorization = { exclude: ->(request) { request.path == "/up" } } # config.host_authorization = { exclude: ->(request) { request.path == "/up" } }
end end

View File

@@ -1,4 +1,5 @@
Rails.application.routes.draw do Rails.application.routes.draw do
resources :invitations
# Define your application routes per the DSL in https://guides.rubyonrails.org/routing.html # Define your application routes per the DSL in https://guides.rubyonrails.org/routing.html
root "home#index" root "home#index"
@@ -11,6 +12,9 @@ Rails.application.routes.draw do
get "service-worker" => "rails/pwa#service_worker", as: :pwa_service_worker get "service-worker" => "rails/pwa#service_worker", as: :pwa_service_worker
get "manifest" => "rails/pwa#manifest", as: :pwa_manifest get "manifest" => "rails/pwa#manifest", as: :pwa_manifest
get "/rsvp" => redirect("https://withjoy.com/adam-and-jillian-jun-25/rsvp")
get "/registry" => redirect("https://withjoy.com/adam-and-jillian-jun-25/registry")
get "*path" => redirect("/")
# Defines the root path route ("/") # Defines the root path route ("/")
# root "posts#index" # root "posts#index"
end end

View File

@@ -0,0 +1,11 @@
class CreateInvitations < ActiveRecord::Migration[7.2]
def change
create_table :invitations do |t|
t.string :name
t.string :attending
t.string :additional_guest
t.timestamps
end
end
end

21
db/schema.rb generated Normal file
View File

@@ -0,0 +1,21 @@
# This file is auto-generated from the current state of the database. Instead
# of editing this file, please use the migrations feature of Active Record to
# incrementally modify your database, and then regenerate this schema definition.
#
# This file is the source Rails uses to define your schema when running `bin/rails
# db:schema:load`. When creating a new database, `bin/rails db:schema:load` tends to
# be faster and is potentially less error prone than running all of your
# migrations from scratch. Old migrations may fail to apply correctly if those
# migrations use external dependencies or application code.
#
# It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema[7.2].define(version: 2024_11_17_140232) do
create_table "invitations", force: :cascade do |t|
t.string "name"
t.string "attending"
t.string "additional_guest"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
end

View File

@@ -0,0 +1,7 @@
require "test_helper"
class InvitationsControllerTest < ActionDispatch::IntegrationTest
# test "the truth" do
# assert true
# end
end

11
test/fixtures/invitations.yml vendored Normal file
View File

@@ -0,0 +1,11 @@
# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
one:
name: MyString
attending: MyString
additional_guest: MyString
two:
name: MyString
attending: MyString
additional_guest: MyString

View File

@@ -0,0 +1,7 @@
require "test_helper"
class InvitationTest < ActiveSupport::TestCase
# test "the truth" do
# assert true
# end
end