6 Commits

Author SHA1 Message Date
b85247d8b4 Fix missing prose styles in production by converting Tailwind config to JS
The production Docker build (node:22-alpine) was failing to load the
TypeScript Tailwind config via jiti, causing Tailwind to silently fall
back to a default config with no plugins. This meant the
@tailwindcss/typography plugin never ran, so no .prose CSS rules were
generated. Tailwind's preflight reset (p { margin: 0 }) was still
applied with nothing to override it, making all blog post paragraphs
run together with zero spacing.

Converting tailwind.config.ts and typography.ts to plain JS files
removes the dependency on jiti for config loading. Also adds .mdx to
the Tailwind content glob so utility classes used directly in MDX files
(not-prose, flex, etc.) are included in the production CSS.
2026-04-02 21:09:53 -07:00
db31ef84cf Replace Endurance image 2026-04-02 21:08:00 -07:00
54bc09a082 Add blog post about Endurance screening
Some checks failed
Build Production Image / Build Production Image (push) Failing after 3m40s
2026-04-02 20:18:46 -07:00
809874471a Center the mailing list captcha
Some checks failed
Build Production Image / Build Production Image (push) Failing after 3m27s
2025-11-11 10:19:51 -08:00
530ad0ccff Add padding to mailing list inputs 2025-11-11 10:19:42 -08:00
563c4725f2 Add mailing address to footer 2025-11-11 10:19:16 -08:00
6 changed files with 68 additions and 13 deletions

View File

@@ -13,7 +13,7 @@ export default function MailingListSignupForm(): React.JSX.Element {
type="email" type="email"
name="email" name="email"
id="email" id="email"
className="block w-full rounded-md border-0 py-1.5 text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 placeholder:text-gray-400 focus:ring-2 focus:ring-inset focus:ring-indigo-600 sm:text-sm sm:leading-6" className="block w-full rounded-md border-0 pl-4 py-1.5 text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 placeholder:text-gray-400 focus:ring-2 focus:ring-inset focus:ring-indigo-600 sm:text-sm sm:leading-6"
placeholder="you@example.com" /> placeholder="you@example.com" />
</div> </div>
<div> <div>
@@ -22,11 +22,13 @@ export default function MailingListSignupForm(): React.JSX.Element {
type="text" type="text"
name="name" name="name"
id="name" id="name"
className="block w-full rounded-md border-0 py-1.5 text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 placeholder:text-gray-400 focus:ring-2 focus:ring-inset focus:ring-indigo-600 sm:text-sm sm:leading-6" className="block w-full rounded-md border-0 pl-4 py-1.5 text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 placeholder:text-gray-400 focus:ring-2 focus:ring-inset focus:ring-indigo-600 sm:text-sm sm:leading-6"
placeholder="Jane Doe" /> placeholder="Jane Doe" />
</div> </div>
<input className="hidden" type="checkbox" name="l" checked value="ea5f1e67-2ff0-4762-8893-0645e93a8306" /> <input className="hidden" type="checkbox" name="l" checked value="ea5f1e67-2ff0-4762-8893-0645e93a8306" />
<altcha-widget challengeurl="https://lists.orcas.community/api/public/captcha/altcha"></altcha-widget> <div className="flex justify-center">
<altcha-widget challengeurl="https://lists.orcas.community/api/public/captcha/altcha"></altcha-widget>
</div>
<input <input
className="w-full rounded-md flex justify-center border border-transparent bg-indigo-600 px-4 py-2 text-sm font-medium text-white shadow-sm hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2" className="w-full rounded-md flex justify-center border border-transparent bg-indigo-600 px-4 py-2 text-sm font-medium text-white shadow-sm hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2"

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

View File

@@ -0,0 +1,52 @@
import { ArticleLayout } from '@/components/ArticleLayout'
import {MdxImage as Image } from '@/components/MdxImage'
import endurance from './endurance.png'
export const article = {
author: 'Leslie Brown',
date: '2026-04-02',
title: 'Orcas Island ENDURANCE Screening',
description: "Join us for a screening of the National Geographic documentary ENDURANCE at The Seaview Theatre, hosted by producer Ruth Johnston. All proceeds benefit the West Sound Community Club.",
}
export const metadata = {
title: article.title,
description: article.description,
}
export default (props) => <ArticleLayout article={article} {...props} />
Excitement is in the air! Get ready to be part of something extraordinary supporting
The West Sound Community Club. It's an event like no other, and we want you to be there!
<Image src={endurance} />
Orcas Island's own Ruth Johnston, Producer on the documentary ENDURANCE will host a
screening of the film at The Seaview Theatre: In a legendary feat of leadership an
perseverance, polar explorer Sir Ernest Shackleton kept his crew of 27 men alive for
over a year despite the loss of their ship in frigid pack ice. Over a century later,
a team of modern-day explorers sets out to find the sunken ship. From National
Geographic Documentary Films and directed by Chai Vasarhelyi, Jimmy Chin and Natalie
Hewit, ENDURANCE tells the inspiring stories of these two landmark expeditions,
bound by their shared grit and determination.
Join Ruth and others before the film for a drink and after the film for a Q&A and
more. Doors will open at 1:15. All proceeds from the evening are being generously
donated to the West Sound Community Club. The event is free, so please donate as
generously as you are able (Minimum suggested donation $25 pp) to help out this
beloved community club and hall.
Following the screening, the after party will commence at the Lower Tavern (21+ only)
with Sea Shanties and Endurance-themed food and drink. The Lower is generously donating
a portion of beverage sales to the Community Club.
The event is kindly sponsored by The Orcas Island Film Festival, The Explorers Club
(PNW chapter), The Lower Tavern and Consequential. Every donation from this event
will bring us closer to achieving our goal to continue to be a vital part of the
Orcas community. Thank you for supporting our mission, your support is invaluable.
Please consider a company match for your donation.
West Sound Community Club operates as a 501c 3 non profit corporation tax
ID number 91-1283768.

View File

@@ -40,6 +40,9 @@ export function Footer() {
<p className="text-sm text-zinc-400"> <p className="text-sm text-zinc-400">
WSCC is a 501c3 nonprofit organization - 91-1283768 WSCC is a 501c3 nonprofit organization - 91-1283768
</p> </p>
<p className="text-sm text-zinc-400">
PO Box 1414, Eastsound, WA 98245
</p>
</div> </div>
</div> </div>
</ContainerInner> </ContainerInner>

View File

@@ -1,11 +1,11 @@
import typographyPlugin from '@tailwindcss/typography' const typographyPlugin = require('@tailwindcss/typography')
import formsPlugin from '@tailwindcss/forms'; const formsPlugin = require('@tailwindcss/forms')
import { type Config } from 'tailwindcss'
import typographyStyles from './typography' const typographyStyles = require('./typography')
export default { /** @type {import('tailwindcss').Config} */
content: ['./src/**/*.{js,jsx,ts,tsx}'], module.exports = {
content: ['./src/**/*.{js,jsx,mdx,ts,tsx}'],
darkMode: 'class', darkMode: 'class',
plugins: [ plugins: [
typographyPlugin, typographyPlugin,
@@ -29,4 +29,4 @@ export default {
}, },
typography: typographyStyles, typography: typographyStyles,
}, },
} satisfies Config }

View File

@@ -1,6 +1,4 @@
import { type PluginUtils } from 'tailwindcss/types/config' module.exports = function typographyStyles({ theme }) {
export default function typographyStyles({ theme }: PluginUtils) {
return { return {
invert: { invert: {
css: { css: {