create-popular-site 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (138) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +57 -0
  3. package/index.mjs +224 -0
  4. package/package.json +39 -0
  5. package/templates/aquarium/popular.config.ts +224 -0
  6. package/templates/aquarium/public/images/hero.png +0 -0
  7. package/templates/aquarium/public/images/logo.png +0 -0
  8. package/templates/aquarium/public/images/organizer-1.png +0 -0
  9. package/templates/aquarium/public/images/organizer-2.png +0 -0
  10. package/templates/aquarium/public/images/organizer-3.png +0 -0
  11. package/templates/aquarium/public/images/post-1.png +0 -0
  12. package/templates/aquarium/public/images/post-2.png +0 -0
  13. package/templates/aquarium/public/images/post-3.png +0 -0
  14. package/templates/aquarium/src/content/authors/nadia.md +13 -0
  15. package/templates/aquarium/src/content/blog/aquarium-field-trip.md +14 -0
  16. package/templates/aquarium/src/content/blog/fresh-vs-salt-recap.md +23 -0
  17. package/templates/aquarium/src/content/blog/new-tank-101-recap.md +14 -0
  18. package/templates/aquarium/src/content/blog/show-and-tell-in-photos.md +21 -0
  19. package/templates/aquarium/src/content/blog/taken-by-the-sea.md +14 -0
  20. package/templates/aquarium/src/content/docs/handbook.mdx +127 -0
  21. package/templates/aquarium/src/content/docs/runbooks.mdx +57 -0
  22. package/templates/aquarium/src/content/events/aquascaping-night.md +15 -0
  23. package/templates/aquarium/src/content/events/fresh-vs-salt.md +14 -0
  24. package/templates/aquarium/src/content/events/new-tank-101.md +14 -0
  25. package/templates/aquarium/src/content/events/shrimp-social-swap.md +14 -0
  26. package/templates/aquarium/src/content/events/vancouver-aquarium-trip.md +14 -0
  27. package/templates/aquarium/src/content/organizers/nadia.md +13 -0
  28. package/templates/aquarium/src/content/organizers/tom.md +13 -0
  29. package/templates/aquarium/src/content/organizers/volunteer.md +13 -0
  30. package/templates/aquarium/src/content/pages/about.mdx +21 -0
  31. package/templates/aquarium/src/content/pages/code-of-conduct.mdx +38 -0
  32. package/templates/aquarium/src/content/pages/get-involved.mdx +27 -0
  33. package/templates/aquarium/src/content/speakers/.gitkeep +0 -0
  34. package/templates/aquarium/src/content/venues/.gitkeep +0 -0
  35. package/templates/foodie/popular.config.ts +221 -0
  36. package/templates/foodie/public/images/hero.png +0 -0
  37. package/templates/foodie/public/images/logo.png +0 -0
  38. package/templates/foodie/public/images/organizer-1.png +0 -0
  39. package/templates/foodie/public/images/organizer-2.png +0 -0
  40. package/templates/foodie/public/images/organizer-3.png +0 -0
  41. package/templates/foodie/public/images/post-1.png +0 -0
  42. package/templates/foodie/public/images/post-2.png +0 -0
  43. package/templates/foodie/public/images/post-3.png +0 -0
  44. package/templates/foodie/src/content/authors/sofia.md +7 -0
  45. package/templates/foodie/src/content/blog/dessert-diary.md +14 -0
  46. package/templates/foodie/src/content/blog/ice-cream-selfie-flash-mob.md +15 -0
  47. package/templates/foodie/src/content/blog/pierogi-night-in-photos.md +21 -0
  48. package/templates/foodie/src/content/blog/poutine-debate.md +12 -0
  49. package/templates/foodie/src/content/blog/two-breads-and-a-coffee-machine.md +14 -0
  50. package/templates/foodie/src/content/docs/handbook.mdx +127 -0
  51. package/templates/foodie/src/content/docs/runbooks.mdx +57 -0
  52. package/templates/foodie/src/content/events/dessert-crawl.md +14 -0
  53. package/templates/foodie/src/content/events/pierogi-night.md +16 -0
  54. package/templates/foodie/src/content/events/poutine-cookoff.md +14 -0
  55. package/templates/foodie/src/content/events/summer-potluck.md +14 -0
  56. package/templates/foodie/src/content/organizers/marcus.md +13 -0
  57. package/templates/foodie/src/content/organizers/sofia.md +13 -0
  58. package/templates/foodie/src/content/organizers/volunteer.md +13 -0
  59. package/templates/foodie/src/content/pages/about.mdx +21 -0
  60. package/templates/foodie/src/content/pages/code-of-conduct.mdx +38 -0
  61. package/templates/foodie/src/content/pages/get-involved.mdx +27 -0
  62. package/templates/foodie/src/content/pages/speak.md +23 -0
  63. package/templates/foodie/src/content/pages/start.md +25 -0
  64. package/templates/foodie/src/content/speakers/.gitkeep +0 -0
  65. package/templates/foodie/src/content/venues/.gitkeep +0 -0
  66. package/templates/kdrama/popular.config.ts +226 -0
  67. package/templates/kdrama/public/images/hero.png +0 -0
  68. package/templates/kdrama/public/images/logo.png +0 -0
  69. package/templates/kdrama/public/images/organizer-1.png +0 -0
  70. package/templates/kdrama/public/images/organizer-2.png +0 -0
  71. package/templates/kdrama/public/images/organizer-3.png +0 -0
  72. package/templates/kdrama/public/images/post-1.png +0 -0
  73. package/templates/kdrama/public/images/post-2.png +0 -0
  74. package/templates/kdrama/public/images/post-3.png +0 -0
  75. package/templates/kdrama/src/content/authors/hana.md +7 -0
  76. package/templates/kdrama/src/content/blog/attorney-woo-trivia-recap.md +14 -0
  77. package/templates/kdrama/src/content/blog/castaway-diva-feelings.md +14 -0
  78. package/templates/kdrama/src/content/blog/crush-1988-me.md +14 -0
  79. package/templates/kdrama/src/content/blog/karaoke-night-in-photos.mdx +24 -0
  80. package/templates/kdrama/src/content/blog/vincenzo-recap.md +14 -0
  81. package/templates/kdrama/src/content/docs/handbook.mdx +127 -0
  82. package/templates/kdrama/src/content/docs/runbooks.mdx +57 -0
  83. package/templates/kdrama/src/content/events/attorney-woo-trivia.md +16 -0
  84. package/templates/kdrama/src/content/events/castaway-diva-finale.md +23 -0
  85. package/templates/kdrama/src/content/events/ost-karaoke.md +14 -0
  86. package/templates/kdrama/src/content/events/step-into-the-light.md +14 -0
  87. package/templates/kdrama/src/content/events/vincenzo-watch-party.md +19 -0
  88. package/templates/kdrama/src/content/organizers/hana.md +13 -0
  89. package/templates/kdrama/src/content/organizers/priya.md +13 -0
  90. package/templates/kdrama/src/content/organizers/volunteer.md +13 -0
  91. package/templates/kdrama/src/content/pages/about.mdx +21 -0
  92. package/templates/kdrama/src/content/pages/code-of-conduct.mdx +38 -0
  93. package/templates/kdrama/src/content/pages/get-involved.mdx +27 -0
  94. package/templates/kdrama/src/content/pages/speak.md +23 -0
  95. package/templates/kdrama/src/content/speakers/minji.md +9 -0
  96. package/templates/kdrama/src/content/venues/half-moon-cafe.md +11 -0
  97. package/templates/starter/popular.config.ts +228 -0
  98. package/templates/starter/public/images/hero.png +0 -0
  99. package/templates/starter/public/images/logo.png +0 -0
  100. package/templates/starter/public/images/organizer-1.png +0 -0
  101. package/templates/starter/public/images/post-1.png +0 -0
  102. package/templates/starter/src/content/authors/sam.md +7 -0
  103. package/templates/starter/src/content/blog/hello-world.md +12 -0
  104. package/templates/starter/src/content/docs/handbook.mdx +127 -0
  105. package/templates/starter/src/content/docs/runbooks.mdx +57 -0
  106. package/templates/starter/src/content/events/first-meetup.md +16 -0
  107. package/templates/starter/src/content/events/launch-night.md +20 -0
  108. package/templates/starter/src/content/organizers/sam.md +7 -0
  109. package/templates/starter/src/content/pages/about.mdx +22 -0
  110. package/templates/starter/src/content/pages/code-of-conduct.mdx +38 -0
  111. package/templates/starter/src/content/pages/get-involved.mdx +27 -0
  112. package/templates/starter/src/content/pages/speak.md +23 -0
  113. package/templates/starter/src/content/pages/start.md +25 -0
  114. package/templates/starter/src/content/speakers/alex.md +7 -0
  115. package/templates/starter/src/content/venues/community-hall.md +13 -0
  116. package/templates/superfan/popular.config.ts +235 -0
  117. package/templates/superfan/public/images/chart.svg +13 -0
  118. package/templates/superfan/public/images/concert.svg +12 -0
  119. package/templates/superfan/public/images/hero.svg +38 -0
  120. package/templates/superfan/public/images/logo.svg +6 -0
  121. package/templates/superfan/public/images/mic.svg +14 -0
  122. package/templates/superfan/public/images/news.svg +8 -0
  123. package/templates/superfan/public/images/riley.svg +9 -0
  124. package/templates/superfan/public/images/vinyl.svg +12 -0
  125. package/templates/superfan/src/content/authors/riley.md +7 -0
  126. package/templates/superfan/src/content/blog/concert-diary-lost-voice.md +14 -0
  127. package/templates/superfan/src/content/blog/every-era-ranked.md +14 -0
  128. package/templates/superfan/src/content/blog/new-vinyl-day.md +15 -0
  129. package/templates/superfan/src/content/blog/welcome-to-the-new-place.md +14 -0
  130. package/templates/superfan/src/content/docs/concert-prep.mdx +25 -0
  131. package/templates/superfan/src/content/docs/listening-guide.mdx +39 -0
  132. package/templates/superfan/src/content/events/fancon-panel.md +17 -0
  133. package/templates/superfan/src/content/events/podcast-b-sides-show.md +14 -0
  134. package/templates/superfan/src/content/organizers/.gitkeep +0 -0
  135. package/templates/superfan/src/content/pages/about.mdx +17 -0
  136. package/templates/superfan/src/content/pages/say-hi.mdx +23 -0
  137. package/templates/superfan/src/content/speakers/.gitkeep +0 -0
  138. package/templates/superfan/src/content/venues/.gitkeep +0 -0
@@ -0,0 +1,16 @@
1
+ ---
2
+ cancelled: true
3
+ title: "Trivia night: Extraordinary Attorney Woo"
4
+ date: 2026-08-14
5
+ description: "Fifty questions across the series, from courtroom details to the correct way to greet a revolving door."
6
+ image: "/images/post-2.png"
7
+ tags: ["trivia"]
8
+ time: "7:00 PM – 9:00 PM"
9
+ venueRef: "half-moon-cafe"
10
+ speakers: ["minji"]
11
+ speaker: "Teams of 4 · whale facts guaranteed"
12
+ checkin: "Bring your RSVP QR code (email or phone), we check the door list by name."
13
+ rsvp: "https://example.com/rsvp"
14
+ ---
15
+
16
+ Fifty questions across the series, from courtroom details to the correct way to greet a revolving door.
@@ -0,0 +1,23 @@
1
+ ---
2
+ title: "Castaway Diva finale watch party"
3
+ date: 2026-05-08
4
+ description: "The finale, together, with the singalong we all knew was coming."
5
+ image: "/images/post-2.png"
6
+ tags: ["watch-party", "finale"]
7
+ time: "6:30 PM – 9:00 PM"
8
+ venue: "The Corner Screen"
9
+ address: "201 Fictional Ave (a made-up screening room)"
10
+ speaker: "Tissues provided"
11
+ rsvp: "https://example.com/rsvp"
12
+ # Multi-talk recap: the talks[] array renders a Talks section and each entry
13
+ # feeds the /talks/ archive.
14
+ talks:
15
+ - title: "Why the Castaway Diva finale wrecked us (in a good way)"
16
+ speaker: minji
17
+ recording: "https://example.com/watch/castaway-finale-talk"
18
+ slides: "https://example.com/slides/castaway-finale.pdf"
19
+ - title: "Season OST singalong, annotated"
20
+ recording: "https://example.com/watch/ost-singalong"
21
+ ---
22
+
23
+ The finale, together, with the singalong we all knew was coming.
@@ -0,0 +1,14 @@
1
+ ---
2
+ title: "OST listening party & karaoke"
3
+ date: 2026-09-11
4
+ description: "An evening for the soundtracks, listening first, then the brave take the mic."
5
+ image: "/images/post-3.png"
6
+ tags: ["music", "social"]
7
+ time: "7:00 PM – 10:00 PM"
8
+ venueWanted: true
9
+ address: "Venue host wanted: get in touch!"
10
+ speaker: "Bring your ballad voice"
11
+ rsvp: "https://example.com/rsvp"
12
+ ---
13
+
14
+ An evening for the soundtracks, listening first, then the brave take the mic.
@@ -0,0 +1,14 @@
1
+ ---
2
+ title: "Step into the light: newcomers night"
3
+ date: 2026-10-09
4
+ description: "Been lurking in the group chat? This one's for you: a low-pressure evening to meet the club, share your gateway drama, and claim a seat on the couch."
5
+ image: "/images/post-2.png"
6
+ tags: ["community"]
7
+ time: "7:00 PM – 9:00 PM"
8
+ venue: "Half Moon Café"
9
+ address: "88 Sidestreet, (fictional)"
10
+ speaker: "No homework, no spoilers, name tags provided"
11
+ rsvp: "https://example.com/rsvp"
12
+ ---
13
+
14
+ Been lurking in the group chat? This one's for you: a low-pressure evening to meet the club, share your gateway drama, and claim a seat on the couch.
@@ -0,0 +1,19 @@
1
+ ---
2
+ title: "Watch party: Vincenzo, episodes 1–2"
3
+ date: 2026-07-17
4
+ description: "The mafia-lawyer classic, from the top. Newcomers especially welcome: no homework required."
5
+ image: "/images/post-1.png"
6
+ tags: ["watch-party"]
7
+ time: "6:30 PM – 9:00 PM"
8
+ venue: "The Corner Screen"
9
+ address: "201 Fictional Ave (a made-up screening room)"
10
+ speaker: "Hosted by Hana: spoiler-free intro included"
11
+ checkin: "Show your RSVP confirmation at the door, a screenshot is fine."
12
+ venueNotes: "Buzz 3 at the alley entrance and take the stairs to the screening room."
13
+ rsvp: "https://example.com/rsvp"
14
+ # Simple case: a single event-level recording (renders inline links, no
15
+ # talks[] breakdown).
16
+ recording: "https://example.com/watch/vincenzo-ep1-2"
17
+ ---
18
+
19
+ The mafia-lawyer classic, from the top. Newcomers especially welcome: no homework required.
@@ -0,0 +1,13 @@
1
+ ---
2
+ title: "Hana Kim"
3
+ weight: 10
4
+ role: "Lead organizer"
5
+ photo: "/images/organizer-1.png"
6
+ description: "Curates the watch-party calendar and writes the spoiler policy. Will make you a starter list on request."
7
+ social:
8
+ - label: "Email"
9
+ icon: "fa-solid fa-envelope"
10
+ url: "mailto:hello@example.com"
11
+ ---
12
+
13
+
@@ -0,0 +1,13 @@
1
+ ---
2
+ title: "Priya Nair"
3
+ weight: 20
4
+ role: "Watch parties & trivia"
5
+ photo: "/images/organizer-2.png"
6
+ description: "Writes our trivia sets and runs the projector. Unbeaten in OST name-that-tune."
7
+ social:
8
+ - label: "Email"
9
+ icon: "fa-solid fa-envelope"
10
+ url: "mailto:hello@example.com"
11
+ ---
12
+
13
+
@@ -0,0 +1,13 @@
1
+ ---
2
+ title: "Volunteer with us"
3
+ weight: 30
4
+ role: "This could be you"
5
+ photo: "/images/organizer-3.png"
6
+ description: "Help with hosting, snacks, or subtitles-on tech setup. No experience needed."
7
+ social:
8
+ - label: "Email"
9
+ icon: "fa-solid fa-envelope"
10
+ url: "mailto:hello@example.com"
11
+ ---
12
+
13
+
@@ -0,0 +1,21 @@
1
+ ---
2
+ title: "About us"
3
+ eyebrow: "About us"
4
+ lead: "A fictional fan club, demo content for the Popular theme."
5
+ ---
6
+
7
+ import Callout from 'astro-theme-popular/components/Callout.astro';
8
+
9
+ KDrama Fan Club is for everyone who has ever said 'just one more episode' and meant four. We meet monthly for watch parties, trivia and OST nights, spoiler policies strictly enforced.
10
+
11
+ New to K-drama? Perfect. Our members love nothing more than crafting a starter list for a newcomer.
12
+
13
+ <Callout tone="info" title="This is an Astro demo site">
14
+ KDrama Fan Club is a fictional community, made up to demonstrate the **Popular** Astro theme. Replace this content with your own, every page here is an editable example.
15
+ </Callout>
16
+
17
+ ## Land acknowledgement
18
+
19
+ Add your community's land acknowledgement or welcome statement here, this demo keeps it as a placeholder.
20
+
21
+ <a class="g-btn g-btn--primary" href="https://example.com/rsvp"><i class="fa-solid fa-calendar" aria-hidden="true"></i> RSVP</a>
@@ -0,0 +1,38 @@
1
+ ---
2
+ title: "Code of Conduct"
3
+ eyebrow: "Code of Conduct"
4
+ lead: "Everyone is welcome, and everyone is safe. This applies to all our events, online spaces and channels."
5
+ ---
6
+
7
+ import Callout from 'astro-theme-popular/components/Callout.astro';
8
+
9
+ ## The short version
10
+
11
+ Be kind. Be respectful. Assume good faith. KDrama Fan Club is a community of people with a wide range of backgrounds and experience, and we're here to enjoy this together. Harassment and exclusionary behaviour are never acceptable.
12
+
13
+ ## Expected behaviour
14
+
15
+ - Be welcoming, friendly and patient, especially with newcomers.
16
+ - Be considerate in your speech and actions, and respectful of differing viewpoints.
17
+ - Assume the person you're talking to knows things you don't, and vice versa.
18
+ - Give others space and time to speak; make room for quieter voices.
19
+
20
+ ## Unacceptable behaviour
21
+
22
+ - Harassment, intimidation, or discrimination in any form.
23
+ - Offensive comments related to gender, gender identity, sexual orientation, disability, physical appearance, race, ethnicity, religion or experience level.
24
+ - Unwelcome sexual attention, or deliberate intimidation, stalking or following.
25
+ - Sustained disruption of sessions or other events.
26
+ - Photographing or recording someone without their consent.
27
+
28
+ <Callout tone="warn" title="Reporting">
29
+ If you experience or witness behaviour that makes you feel unsafe, tell any organizer at the event, or email **hello@example.com**. Reports are taken seriously and handled with discretion, and we will always protect the privacy of the person reporting.
30
+ </Callout>
31
+
32
+ ## Consequences
33
+
34
+ Organizers may take any action they deem appropriate, up to and including warning the person, asking them to leave the event, or barring them from future events. Organizers have full authority to protect the safety and comfort of the community.
35
+
36
+ ---
37
+
38
+ *This Code of Conduct is adapted from the [Django Code of Conduct](https://www.djangoproject.com/conduct/) (CC-BY 3.0) and the [Geek Feminism anti-harassment policy template](https://geekfeminism.fandom.com/wiki/Community_anti-harassment/Policy) (CC0). Adapt it to your community, it's part of the theme's example content.*
@@ -0,0 +1,27 @@
1
+ ---
2
+ title: "Get involved"
3
+ eyebrow: "Get involved"
4
+ lead: "Our community runs on people who step up, to host a session, to offer a space, to sponsor, and simply to show up. Here's how you can help."
5
+ ---
6
+
7
+ ## Host a session
8
+
9
+ We're always looking for members to lead a session! No experience necessary. Whether it's your first time or your fiftieth, we welcome you, and we'll help you prepare, rehearse, or even co-host.
10
+
11
+ Sessions run 20–30 minutes; show & tell spots are just five. Bring anything our community would love.
12
+
13
+ <a class="g-btn g-btn--primary" href="mailto:hello@example.com?subject=Session%20idea"><i class="fa-solid fa-hand-sparkles" aria-hidden="true"></i> Suggest a session</a>
14
+
15
+ ## Offer a venue
16
+
17
+ Have a room for 20–40 people, near transit, with step-free access? You can host our next gathering. Community halls, cafés and workplaces make wonderful hosts. See the [venue checklist](/handbook/) for what we look for.
18
+
19
+ We'll bring the community and the program; you bring the room. We always thank our hosts publicly by name.
20
+
21
+ <a class="g-btn g-btn--outline" href="mailto:hello@example.com?subject=Venue"><i class="fa-solid fa-location-dot" aria-hidden="true"></i> Get in touch</a>
22
+
23
+ ## Sponsor & support
24
+
25
+ KDrama Fan Club is free to attend and runs on in-kind support. Sponsors can provide space, food or supplies, and are thanked by name with a link at the event and in our recap.
26
+
27
+ <a class="g-btn g-btn--primary" href="https://example.com/donate"><i class="fa-solid fa-heart" aria-hidden="true"></i> Support the club</a>
@@ -0,0 +1,23 @@
1
+ ---
2
+ title: "Speak with us"
3
+ eyebrow: "Call for hosts"
4
+ lead: "Want to introduce a show, run a quiz round, or give a five-minute deep dive? We would love to have you."
5
+ ---
6
+
7
+ You do not need to be an expert, and your pick does not need to be popular. Some of our best nights came from someone championing a show nobody else had seen yet.
8
+
9
+ ## What we look for
10
+
11
+ A short intro to a drama, a themed quiz, a "why this OST lives in my head" ramble, anything you are excited to share. First-time hosts especially welcome.
12
+
13
+ ## Lightning slots welcome
14
+
15
+ Not ready to host a whole night? A five-minute recommendation between episodes is a great way to start.
16
+
17
+ ## We will help you prep
18
+
19
+ Tell us roughly what you want to cover and an organizer will help you shape it, from the clip list to the timing. You will not be figuring it out alone.
20
+
21
+ ## Put your hand up
22
+
23
+ Send us your idea through our [sign-up form](https://example.com/cfp), or [say hi in the chat](https://example.com/chat) and we can talk it through.
@@ -0,0 +1,9 @@
1
+ ---
2
+ title: "Minji Park"
3
+ role: "Quizmaster in residence"
4
+ photo: "/images/organizer-2.png"
5
+ bio: "Minji writes the trivia nights nobody passes and everybody loves. Fictional, like everyone here, but her whale facts are real."
6
+ website: "https://example.com"
7
+ ---
8
+
9
+ Minji has hosted every trivia night since the club's second month, and maintains the sacred spreadsheet of past questions. Ask her about episode counts at your own risk.
@@ -0,0 +1,11 @@
1
+ ---
2
+ wheelchair: true
3
+ transit: "Short walk from the SkyTrain; night buses run late."
4
+ title: "Half Moon Café"
5
+ address: "88 Sidestreet, (fictional)"
6
+ notes: "After 6 PM the front door locks: buzz 11 and we'll let you in. The back room is past the counter, follow the banner."
7
+ accessibility: "Step-free access through the main door; accessible washroom beside the back room."
8
+ website: "https://example.com"
9
+ ---
10
+
11
+ Our trivia home: a fictional café with a back room that fits forty fans and one very loud buzzer. The owner is a Goblin apologist, which we respect.
@@ -0,0 +1,228 @@
1
+ /** Popular: theme configuration ("Your Community" starter skeleton).
2
+ * The neutral baseline adopters copy, and the default active site: the
3
+ * Astro counterpart of the Hugo theme's exampleSite. See README. */
4
+
5
+ export const SITE = {
6
+ title: "Your Community",
7
+ tagline: "A starter site for the Popular theme",
8
+ description: "Describe your community here.",
9
+ brandName: "Your",
10
+ brandSub: "Community",
11
+ logo: '/images/logo.png',
12
+ favicon: '/images/logo.png',
13
+ ogImage: '/images/hero.png',
14
+ locale: 'en-US',
15
+ landAcknowledgement: "Add your community's land acknowledgement or welcome statement here, this starter keeps it as a placeholder.",
16
+ // The community lives in chat between events. Set this and a "Join the chat"
17
+ // button appears in the home hero and footer, and in the no-events empty
18
+ // state. Platform-agnostic: Discord, Slack, Matrix, Zulip all fit.
19
+ community: { chat: { url: 'https://example.com/chat', label: 'Join the chat' } },
20
+ // Turn on the "Your name here?" invite card at the end of the speakers list,
21
+ // pointing to /speak/. Off by default.
22
+ speakers: { invite: true },
23
+ // Enable the /talks/ archive (aggregates every event recording and slide
24
+ // deck). Off by default so sites without recordings do not grow an empty
25
+ // page; the Hugo counterpart is creating content/talks/_index.md.
26
+ talks: true,
27
+ };
28
+
29
+ /* UI strings. Translate your site by editing these values; keys map 1:1 to
30
+ the Hugo theme's i18n/en.toml (see PARITY.md). */
31
+ export const STRINGS: Record<string, string> = {
32
+ skipToContent: 'Skip to content',
33
+ primaryNav: 'Primary',
34
+ toggleMenu: 'Toggle menu',
35
+ nextMeetup: 'Next meetup',
36
+ venueTba: 'Venue to be announced',
37
+ eventCancelled: 'Cancelled',
38
+ rsvp: 'RSVP',
39
+ rsvpExternal: 'RSVP on Luma',
40
+ allEvents: 'All events',
41
+ allSpeakers: 'All speakers',
42
+ allVenues: 'All venues',
43
+ allOrganizers: 'All organizers',
44
+ comingUp: 'Coming up',
45
+ upcomingEvents: 'Upcoming events',
46
+ upcomingLead: 'Save your seat early, space is limited and our rooms fill up.',
47
+ noUpcomingEvents: 'Nothing on the calendar right now, follow us to hear when the next one lands.',
48
+ lookingBack: 'Looking back',
49
+ pastEvents: 'Past events',
50
+ venueWanted: 'Venue wanted',
51
+ confirmed: 'Confirmed',
52
+ fromTheBlog: 'From the blog',
53
+ latestFromCommunity: 'Latest from our community',
54
+ readTheBlog: 'Read the blog',
55
+ allPosts: 'All posts',
56
+ filterLabel: 'Filter:',
57
+ filterAll: 'All',
58
+ subscribeRss: 'Subscribe via RSS',
59
+ subscribeCalendar: 'Subscribe to calendar',
60
+ watchRecording: 'Watch',
61
+ viewSlides: 'Slides',
62
+ hasRecording: 'Recording available',
63
+ talks: 'Talks',
64
+ talksLead: 'Every talk from our past events, with recordings and slides where we have them.',
65
+ learnMore: 'Learn more',
66
+ joinChat: 'Join the chat',
67
+ speakerInviteTitle: 'Your name here?',
68
+ speakerInviteBody: 'We are always looking for new voices. Lightning talks welcome, and we will help you prepare.',
69
+ subscribeRssTitle: 'Follow new posts in any feed reader',
70
+ noPosts: 'No posts yet, check back soon.',
71
+ ourSpeaker: 'Our speaker',
72
+ minRead: '{n} min read',
73
+ authorsBy: 'By',
74
+ listSeparator: ', ',
75
+ listSeparatorFinal: ' & ',
76
+ posts: 'Posts',
77
+ guest: 'Guest',
78
+ website: 'Website',
79
+ previewLabel: 'Preview',
80
+ previewBanner: 'This is a preview. Nothing here is published yet.',
81
+ checklist: 'Checklist',
82
+ copyCode: 'Copy code',
83
+ checklistDone: 'done',
84
+ writtenBy: 'Written by {name}',
85
+ eyebrowBlog: 'Blog',
86
+ eyebrowEvents: 'Events',
87
+ eyebrowAuthor: 'Author',
88
+ eyebrowDocs: 'Docs',
89
+ eyebrowTag: 'Tag',
90
+ taggedCount: '{n} post(s) tagged {tag}',
91
+ speakers: 'Speakers',
92
+ eyebrowSpeaker: 'Speaker',
93
+ eyebrowOrganizer: 'Organizer',
94
+ sessionsBy: 'Sessions by {name}',
95
+ eyebrowVenue: 'Venue',
96
+ gettingThere: 'Getting there & access',
97
+ wheelchairAccessible: 'Wheelchair accessible',
98
+ transit: 'Transit',
99
+ parking: 'Parking',
100
+ venueEvents: 'Events held here',
101
+ beforeYouArrive: 'Before you arrive',
102
+ postNavigation: 'More posts',
103
+ newerPost: 'Newer post',
104
+ olderPost: 'Older post',
105
+ paginationLabel: 'Pagination',
106
+ paginationPrev: 'Previous',
107
+ paginationNext: 'Next',
108
+ };
109
+
110
+ /* List pagination size. Mirrors Hugo's [pagination] pagerSize (see PARITY.md);
111
+ 10 is Hugo's default. The flavored demos use 3 to show the pager. */
112
+ export const PAGINATION = { pageSize: 10 };
113
+
114
+ /* Renameable content sections: point post-author bylines or the homepage
115
+ team grid at a differently-named collection (must exist in your
116
+ content.config.ts). Defaults are the theme's own section names.
117
+ Hugo parity: [params.sections] (see PARITY.md). */
118
+ export const SECTIONS_MAP = {
119
+ authors: 'authors',
120
+ team: 'organizers',
121
+ };
122
+
123
+ /* Re-brand the whole site here, see /docs/theming/ on the theme site.
124
+ Empty = the theme's default identity (marquee gold, sunglass black,
125
+ periwinkle). Example:
126
+ { primary: "#0f766e", surfaceWash: "#d7ece9", fontDisplay: "Quantico, Inter, sans-serif" } */
127
+ export const BRAND: Record<string, string> = {};
128
+
129
+ export const NAV: {
130
+ label: string;
131
+ href: string;
132
+ children?: { label: string; href: string }[];
133
+ }[] = [
134
+ { label: 'Start here', href: '/start/' },
135
+ {
136
+ label: 'About',
137
+ href: '/about/',
138
+ children: [
139
+ { label: 'About us', href: '/about/' },
140
+ { label: 'Organizers', href: '/organizers/' },
141
+ ],
142
+ },
143
+ { label: 'Blog', href: '/blog/' },
144
+ { label: 'Events', href: '/events/' },
145
+ { label: 'Talks', href: '/talks/' },
146
+ { label: 'Handbook', href: '/handbook/' },
147
+ ];
148
+
149
+ export const CTA = { label: 'RSVP', url: 'https://example.com/rsvp', icon: 'fa-solid fa-calendar' };
150
+
151
+ export const SOCIAL = [
152
+ { label: 'Instagram', icon: 'fa-brands fa-instagram', url: 'https://example.com' },
153
+ { label: 'Mastodon', icon: 'fa-brands fa-mastodon', url: 'https://example.com' },
154
+ { label: 'RSS', icon: 'fa-solid fa-rss', url: '/rss.xml' },
155
+ { label: 'Email', icon: 'fa-solid fa-envelope', url: 'mailto:hello@example.com' },
156
+ ];
157
+
158
+ export const FOOTER = {
159
+ tagline: "Your community's motto goes here",
160
+ credit: { label: 'Popular. An Astro theme by Mariatta.', url: 'https://popular.mariatta.ca/' },
161
+ columns: [
162
+ { title: 'Community', links: [
163
+ { label: 'About us', href: '/about/' },
164
+ { label: 'Blog', href: '/blog/' },
165
+ { label: 'Code of Conduct', href: '/code-of-conduct/' },
166
+ ]},
167
+ { title: 'Get involved', links: [
168
+ { label: 'Host a session', href: '/get-involved/' },
169
+ { label: 'Offer a venue', href: '/get-involved/' },
170
+ { label: 'Organizers', href: '/organizers/' },
171
+ ]},
172
+ { title: 'Organizers', links: [
173
+ { label: 'Organizer Handbook', href: '/handbook/' },
174
+ { label: 'Meetup Runbooks', href: '/runbooks/' },
175
+ ]},
176
+ ],
177
+ };
178
+
179
+ /** Support box at the bottom of blog posts, null hides it. */
180
+ export const SUPPORT = null;
181
+
182
+ /** Section list-page headers. */
183
+ export const SECTIONS = {
184
+ blog: { eyebrow: 'Blog', title: 'Blog', lead: 'Recaps and news from your community.' },
185
+ events: { eyebrow: 'Events', title: 'Events', lead: 'Upcoming gatherings. All events are free, and newcomers are always welcome.' },
186
+ organizers: { eyebrow: 'The team', title: 'Organizers', lead: 'Your community is run by volunteers. Want to help? Say hi.' },
187
+ speakers: { eyebrow: 'Speakers', title: 'Speakers', lead: 'Everyone who has taken the mic at one of our gatherings.' },
188
+ venues: { eyebrow: 'Venues', title: 'Venues', lead: 'The rooms that host us.' },
189
+ };
190
+
191
+ export const HOME = {
192
+ hero: {
193
+ eyebrow: "Your · Community · Here",
194
+ title: "A warm welcome to your community",
195
+ lead: "Replace this with one friendly paragraph about who you are and who's welcome (hint: everyone).",
196
+ image: '/images/hero.png',
197
+ ctas: [
198
+ { label: 'RSVP', url: 'https://example.com/rsvp', icon: 'fa-solid fa-calendar', variant: 'primary' },
199
+ { label: 'About us', url: '/about/', variant: 'outline' },
200
+ ],
201
+ },
202
+ /* @pastEventCount resolves at build to the number of past events, the
203
+ social-proof pattern (§9). @count:<section> also works. */
204
+ stats: [{ value: "@pastEventCount", label: "events hosted" }, { value: "2026", label: "founded" }, { value: "All", label: "welcome" }, { value: "Free", label: "to attend" }],
205
+ featuresHead: { eyebrow: 'What we do', title: "What your community is all about", lead: 'Three cards, three reasons to show up.' },
206
+ features: [
207
+ { icon: "fa-solid fa-people-group", title: "Meet", body: "Describe your regular gathering." },
208
+ { icon: "fa-solid fa-hand-sparkles", title: "Make", body: "Describe your hands-on activity." },
209
+ { icon: "fa-solid fa-heart", title: "Belong", body: "Describe your community's spirit." },
210
+ ],
211
+ /* Optional: quotes from members. Delete both keys to hide the section. */
212
+ testimonialsHead: { eyebrow: 'Kind words', title: 'What members say' },
213
+ testimonials: [
214
+ { quote: "A short quote from a happy member goes here.", name: "Member name", role: "A few words about them" },
215
+ { quote: "Another member quote goes here.", name: "Member name", role: "A few words about them" },
216
+ ],
217
+ getInvolved: {
218
+ eyebrow: 'Community',
219
+ title: "There's a place for everyone here",
220
+ lead: "Host a session, offer a venue, or just show up.",
221
+ ctas: [
222
+ { label: 'Get involved', url: '/get-involved/', variant: 'primary' },
223
+ ],
224
+ },
225
+ };
226
+
227
+ /** Demo-only switcher bar; the starter never shows it. */
228
+ export const DEMO_BAR = null;
@@ -0,0 +1,7 @@
1
+ ---
2
+ title: "Sam Example"
3
+ role: "Lead organizer"
4
+ photo: "/images/organizer-1.png"
5
+ bio: "Replace with a short bio. This card appears under Sam's posts and on their profile page."
6
+ website: "https://example.com"
7
+ ---
@@ -0,0 +1,12 @@
1
+ ---
2
+ title: "Hello, world: our first post"
3
+ date: 2026-07-01
4
+ authors: ["sam"]
5
+ description: "A starter post showing the blog layout, byline and author bio."
6
+ image: "/images/post-1.png"
7
+ tags: ["news"]
8
+ ---
9
+
10
+ This is a starter post. Replace it with your first recap or announcement.
11
+
12
+ It references an author profile (see `authors/sam.md`), so the byline links to a profile page and a bio card appears below, that's the theme's multi-author system in action.