Skip to content

Commit d0222a7

Browse files
committed
accessibility resource page
1 parent 09cc75a commit d0222a7

8 files changed

Lines changed: 740 additions & 89 deletions

File tree

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,7 @@ const result = await tryCatch(
229229
- **Deep forest green:** #2E3D2A (`--brand-green-dark`)
230230
- **Rich purple:** #442B48 (`--brand-purple-dark`)
231231
- **Vibrant green accent:** #32d24d (`--brand-green-accent`)
232+
- **Hyperlink green:** #156624 (`--brand-green-hyperlink`) - High contrast green for links
232233
- **Soft cream:** #F4f1de (`--brand-cream`)
233234
- **Light purple accent:** #D8B9F7 (`--brand-purple-light`)
234235
- **Bright Blue:** #00A6FB (`--brand-blue`)
@@ -245,6 +246,7 @@ Common color applications:
245246
- Text on dark: `text-white`, `text-white/90`, `text-brand-cream`
246247
- Text on light: `text-brand-purple-dark`, `text-brand-green-dark`
247248
- Accents: `text-brand-green-accent`, `text-brand-purple-light`, `text-brand-blue`
249+
- Hyperlinks: `text-brand-green-hyperlink` (high contrast green for links)
248250
- Backgrounds: Dark gradient combinations of `brand-green-dark` and `brand-purple-dark`
249251
- Overlays: `bg-white/5`, `bg-white/10` with `backdrop-blur-sm`
250252

@@ -253,6 +255,7 @@ Common color applications:
253255
--brand-green-dark: #2E3D2A; /* Deep forest green */
254256
--brand-purple-dark: #442B48; /* Rich purple */
255257
--brand-green-accent: #32d24d; /* Vibrant green accent */
258+
--brand-green-hyperlink: #156624; /* High contrast green for links */
256259
--brand-cream: #F4f1de; /* Soft cream */
257260
--brand-purple-light: #D8B9F7; /* Light purple accent */
258261
--brand-blue: #00A6FB; /* Bright Blue */

src/app/accessibility/page.tsx

Lines changed: 556 additions & 0 deletions
Large diffs are not rendered by default.

src/app/back-to-basics/page.tsx

Lines changed: 1 addition & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,6 @@ import Link from 'next/link'
33
import { ReactNode } from 'react'
44
import NewsletterSection from '../components/home/NewsletterSection'
55

6-
// Define types for our content
7-
interface NewsletterWeek {
8-
title: string;
9-
description: string;
10-
keyPoints: string[];
11-
url: string;
12-
weekNumber: number;
13-
}
14-
156
// Enhanced metadata for better SEO
167
export const metadata: Metadata = {
178
title: 'Back to Basics: Digital Organization & AI-Ready Workflows - The Pythoness Programmer',
@@ -29,58 +20,6 @@ export const metadata: Metadata = {
2920
},
3021
}
3122

32-
// Content data
33-
const newsletterWeeks: NewsletterWeek[] = [
34-
{
35-
weekNumber: 1,
36-
title: 'From Digital Chaos to Creative Flow: Why Your Folders Matter',
37-
description: 'How your digital filing system affects AI effectiveness and creative workflow, plus the 3-Folder Rule that changed everything.',
38-
keyPoints: [
39-
'The AI-Organization Connection: Why AI tools need well-organized inputs',
40-
'The 3-Folder Rule: Active Projects, Reference Materials, and Archive',
41-
'Obsidian for interconnected note-taking and project organization',
42-
'The Wooden Snake\'s "observe before you judge" principle for digital patterns',
43-
],
44-
url: 'https://newsletter.pythonessprogrammer.com/p/from-digital-chaos-to-creative-flow-why-your-folders-matter',
45-
},
46-
{
47-
weekNumber: 2,
48-
title: 'The Creative Workflow Revolution: How Organization Becomes Your Creative Superpower',
49-
description: 'Transform your digital organization from a chore into a creative advantage that amplifies your ideas and energy.',
50-
keyPoints: [
51-
'Workflow systems that support your creative process',
52-
'Building systems that adapt to your energy levels',
53-
'Creating sustainable creative practices',
54-
'The connection between organization and creative flow',
55-
],
56-
url: 'https://newsletter.pythonessprogrammer.com/p/the-creative-workflow-revolution-how-organization-becomes-your-creative-superpower',
57-
},
58-
{
59-
weekNumber: 3,
60-
title: 'Data Flow: From Chaos to Conscious',
61-
description: 'Understanding how data moves through your creative work and building systems that make information work for you.',
62-
keyPoints: [
63-
'Understanding data flow in your creative work',
64-
'Building information systems that serve creativity',
65-
'The Wooden Snake\'s wisdom applied to data organization',
66-
'Creating conscious data practices',
67-
],
68-
url: 'https://newsletter.pythonessprogrammer.com/p/data-flow-from-chaos-to-conscious',
69-
},
70-
{
71-
weekNumber: 4,
72-
title: 'Basic Automation That Serves Your Creativity: From Data Flow to AI Agents',
73-
description: 'Learn to build automation systems that enhance your creative process instead of overwhelming it.',
74-
keyPoints: [
75-
'Basic automation that serves your creativity',
76-
'From data flow to AI agents',
77-
'Building automation that respects your brain patterns',
78-
'Creating sustainable tech habits',
79-
],
80-
url: 'https://newsletter.pythonessprogrammer.com/p/basic-automation-that-serves-your-creativity-from-data-flow-to-ai-agents',
81-
},
82-
];
83-
8423
export default function BackToBasicsPage(): ReactNode {
8524
return (
8625
<main className="min-h-screen pt-20 bg-gradient-to-br from-brand-green-dark via-brand-purple-dark to-brand-green-dark">
@@ -167,7 +106,7 @@ export default function BackToBasicsPage(): ReactNode {
167106
href="https://newsletter.pythonessprogrammer.com/p/lunar-new-year-2025"
168107
target="_blank"
169108
rel="noopener noreferrer"
170-
className="text-brand-green-accent hover:text-brand-green-accent/80 underline"
109+
className="text-brand-green-hyperlink hover:text-brand-green-hyperlink/80 underline"
171110
>
172111
Lunar New Year edition
173112
</Link>

src/app/globals.css

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
--brand-light-purple: #d8b9f7;
1111
--brand-purple: #442b48;
1212
--brand-blue: #00a6fb;
13+
--brand-hyperlink-green: #156624;
1314
}
1415

1516
html {
@@ -43,6 +44,11 @@ body {
4344
text-wrap: balance;
4445
}
4546

47+
/* Brand color utilities */
48+
.text-brand-hyperlink {
49+
color: var(--brand-hyperlink-green);
50+
}
51+
4652
/* Animation utilities */
4753
.animate-fade-in-up {
4854
animation: fadeInUp 0.8s ease-out forwards;

src/app/resources/page.tsx

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -279,6 +279,47 @@ export default function ResourcesPage() {
279279
</Link>
280280
</div>
281281

282+
{/* Digital Accessibility Legal Guide */}
283+
<div className="bg-white/95 border-2 border-brand-purple-accent rounded-3xl p-8 shadow-2xl">
284+
<div className="flex items-center mb-6">
285+
<div className="w-12 h-12 bg-brand-purple-accent/20 rounded-full flex items-center justify-center mr-4">
286+
<span className="text-2xl">⚖️</span>
287+
</div>
288+
<div>
289+
<h3 className="text-2xl font-display text-brand-purple-dark mb-1">Digital Accessibility Legal Guide</h3>
290+
<p className="text-brand-purple-dark/70 text-sm">Starting Point for Business Owners</p>
291+
</div>
292+
</div>
293+
<p className="text-brand-purple-dark mb-6">
294+
Essential starting guide to digital accessibility laws, compliance requirements, and practical implementation
295+
for business owners. Legal framework, risk management, and actionable first steps.
296+
</p>
297+
<div className="space-y-3 mb-6">
298+
<div className="flex items-center text-brand-purple-dark text-sm">
299+
<span className="w-2 h-2 bg-brand-purple-accent rounded-full mr-2"></span>
300+
Four Simple Tests You Can Do Right Now
301+
</div>
302+
<div className="flex items-center text-brand-purple-dark text-sm">
303+
<span className="w-2 h-2 bg-brand-purple-accent rounded-full mr-2"></span>
304+
90-Day Implementation Plan
305+
</div>
306+
<div className="flex items-center text-brand-purple-dark text-sm">
307+
<span className="w-2 h-2 bg-brand-purple-accent rounded-full mr-2"></span>
308+
Legal Framework & Compliance Requirements
309+
</div>
310+
<div className="flex items-center text-brand-purple-dark text-sm">
311+
<span className="w-2 h-2 bg-brand-purple-accent rounded-full mr-2"></span>
312+
Free Testing Tools & Resources
313+
</div>
314+
</div>
315+
<Link
316+
href="/accessibility"
317+
className="block bg-brand-purple-accent text-white text-center px-4 py-3 rounded-lg hover:bg-opacity-90 transition-colors font-semibold"
318+
>
319+
Explore Accessibility Guide
320+
</Link>
321+
</div>
322+
282323
{/* Back to Basics */}
283324
<div className="bg-white/95 border-2 border-brand-green-accent rounded-3xl p-8 shadow-2xl">
284325
<div className="flex items-center mb-6">

src/components/Footer.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,9 @@ export default function Footer() {
5959
{/* Free Resources */}
6060
<FooterSection title="Free Resources">
6161
<ul className="space-y-1" role="list" aria-label="Free resources">
62-
<li><Link href="/network" className={footerLinkClass}>Pythoness Network</Link></li>
62+
<li><Link href="/accessibility" className={footerLinkClass}>Accessibility Legal Guide</Link></li>
6363
<li><Link href="/ai-mythbusting" className={footerLinkClass}>AI Myth-Busting</Link></li>
64+
<li><Link href="/back-to-basics" className={footerLinkClass}>Back to Basics</Link></li>
6465
<li><Link href="/sourdough" className={footerLinkClass}>Sourdough Corner</Link></li>
6566
<li><Link href="/digital-spring-cleaning" className={footerLinkClass}>Digital Spring Cleaning</Link></li>
6667
<li><Link href="/mindful-automation" className={footerLinkClass}>Mindful Automation</Link></li>

src/components/Header.tsx

Lines changed: 130 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,16 @@ import Link from 'next/link'
55

66
export default function Header() {
77
const [isMenuOpen, setIsMenuOpen] = useState(false)
8+
const [isResourcesOpen, setIsResourcesOpen] = useState(false)
89

910
const toggleMenu = () => {
1011
setIsMenuOpen(!isMenuOpen)
1112
}
1213

14+
const toggleResources = () => {
15+
setIsResourcesOpen(!isResourcesOpen)
16+
}
17+
1318
return (
1419
<>
1520
<header
@@ -44,18 +49,77 @@ export default function Header() {
4449
>
4550
Services
4651
</Link>
47-
<Link
48-
href="/resources"
49-
className="text-white hover:text-brand-green-accent transition-colors focus:outline-none focus:ring-2 focus:ring-brand-green-accent focus:ring-offset-2 rounded-lg px-2 py-1"
50-
>
51-
Resources
52-
</Link>
53-
<Link
54-
href="/network"
55-
className="text-white hover:text-brand-green-accent transition-colors focus:outline-none focus:ring-2 focus:ring-brand-green-accent focus:ring-offset-2 rounded-lg px-2 py-1"
56-
>
57-
Pythoness Network
58-
</Link>
52+
<div className="relative">
53+
<button
54+
onClick={toggleResources}
55+
className="text-white hover:text-brand-green-accent transition-colors focus:outline-none focus:ring-2 focus:ring-brand-green-accent focus:ring-offset-2 rounded-lg px-2 py-1 flex items-center"
56+
aria-expanded={isResourcesOpen}
57+
aria-haspopup="true"
58+
>
59+
Resources
60+
<svg
61+
className={`ml-1 h-4 w-4 transition-transform ${isResourcesOpen ? 'rotate-180' : ''}`}
62+
fill="none"
63+
stroke="currentColor"
64+
viewBox="0 0 24 24"
65+
>
66+
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M19 9l-7 7-7-7" />
67+
</svg>
68+
</button>
69+
{isResourcesOpen && (
70+
<div className="absolute top-full left-0 mt-2 w-64 bg-white rounded-lg shadow-lg border border-brand-green-accent/20 py-2 z-50">
71+
<Link
72+
href="/resources"
73+
className="block px-4 py-2 text-brand-green-hyperlink hover:text-brand-green-accent hover:bg-brand-green-accent/10 transition-colors"
74+
onClick={() => setIsResourcesOpen(false)}
75+
>
76+
All Resources
77+
</Link>
78+
<Link
79+
href="/digital-spring-cleaning"
80+
className="block px-4 py-2 text-brand-green-hyperlink hover:text-brand-green-accent hover:bg-brand-green-accent/10 transition-colors"
81+
onClick={() => setIsResourcesOpen(false)}
82+
>
83+
Digital Spring Cleaning
84+
</Link>
85+
<Link
86+
href="/mindful-automation"
87+
className="block px-4 py-2 text-brand-green-hyperlink hover:text-brand-green-accent hover:bg-brand-green-accent/10 transition-colors"
88+
onClick={() => setIsResourcesOpen(false)}
89+
>
90+
Mindful Automation
91+
</Link>
92+
<Link
93+
href="/accessibility"
94+
className="block px-4 py-2 text-brand-green-hyperlink hover:text-brand-green-accent hover:bg-brand-green-accent/10 transition-colors"
95+
onClick={() => setIsResourcesOpen(false)}
96+
>
97+
Accessibility Legal Guide
98+
</Link>
99+
<Link
100+
href="/back-to-basics"
101+
className="block px-4 py-2 text-brand-green-hyperlink hover:text-brand-green-accent hover:bg-brand-green-accent/10 transition-colors"
102+
onClick={() => setIsResourcesOpen(false)}
103+
>
104+
Back to Basics
105+
</Link>
106+
<Link
107+
href="/ai-mythbusting"
108+
className="block px-4 py-2 text-brand-green-hyperlink hover:text-brand-green-accent hover:bg-brand-green-accent/10 transition-colors"
109+
onClick={() => setIsResourcesOpen(false)}
110+
>
111+
AI Myth-Busting
112+
</Link>
113+
<Link
114+
href="/vibe-coding-cheatsheet"
115+
className="block px-4 py-2 text-brand-green-hyperlink hover:text-brand-green-accent hover:bg-brand-green-accent/10 transition-colors"
116+
onClick={() => setIsResourcesOpen(false)}
117+
>
118+
Vibe Coding Cheatsheet
119+
</Link>
120+
</div>
121+
)}
122+
</div>
59123
<Link
60124
href="/blog"
61125
className="text-white hover:text-brand-green-accent transition-colors focus:outline-none focus:ring-2 focus:ring-brand-green-accent focus:ring-offset-2 rounded-lg px-2 py-1"
@@ -134,20 +198,60 @@ export default function Header() {
134198
>
135199
Services
136200
</Link>
137-
<Link
138-
href="/resources"
139-
className="text-white hover:text-brand-green-accent transition-colors focus:outline-none focus:ring-2 focus:ring-brand-green-accent focus:ring-offset-2 rounded-lg px-2 py-1"
140-
onClick={() => setIsMenuOpen(false)}
141-
>
142-
Resources
143-
</Link>
144-
<Link
145-
href="/network"
146-
className="text-white hover:text-brand-green-accent transition-colors focus:outline-none focus:ring-2 focus:ring-brand-green-accent focus:ring-offset-2 rounded-lg px-2 py-1"
147-
onClick={() => setIsMenuOpen(false)}
148-
>
149-
Pythoness Network
150-
</Link>
201+
<div className="space-y-2">
202+
<div className="text-white font-medium px-2 py-1">Resources</div>
203+
<div className="ml-4 space-y-2">
204+
<Link
205+
href="/resources"
206+
className="block text-white/80 hover:text-brand-green-accent transition-colors focus:outline-none focus:ring-2 focus:ring-brand-green-accent focus:ring-offset-2 rounded-lg px-2 py-1"
207+
onClick={() => setIsMenuOpen(false)}
208+
>
209+
All Resources
210+
</Link>
211+
<Link
212+
href="/digital-spring-cleaning"
213+
className="block text-white/80 hover:text-brand-green-accent transition-colors focus:outline-none focus:ring-2 focus:ring-brand-green-accent focus:ring-offset-2 rounded-lg px-2 py-1"
214+
onClick={() => setIsMenuOpen(false)}
215+
>
216+
Digital Spring Cleaning
217+
</Link>
218+
<Link
219+
href="/mindful-automation"
220+
className="block text-white/80 hover:text-brand-green-accent transition-colors focus:outline-none focus:ring-2 focus:ring-brand-green-accent focus:ring-offset-2 rounded-lg px-2 py-1"
221+
onClick={() => setIsMenuOpen(false)}
222+
>
223+
Mindful Automation
224+
</Link>
225+
<Link
226+
href="/accessibility"
227+
className="block text-white/80 hover:text-brand-green-accent transition-colors focus:outline-none focus:ring-2 focus:ring-brand-green-accent focus:ring-offset-2 rounded-lg px-2 py-1"
228+
onClick={() => setIsMenuOpen(false)}
229+
>
230+
Accessibility Legal Guide
231+
</Link>
232+
<Link
233+
href="/back-to-basics"
234+
className="block text-white/80 hover:text-brand-green-accent transition-colors focus:outline-none focus:ring-2 focus:ring-brand-green-accent focus:ring-offset-2 rounded-lg px-2 py-1"
235+
onClick={() => setIsMenuOpen(false)}
236+
>
237+
Back to Basics
238+
</Link>
239+
<Link
240+
href="/ai-mythbusting"
241+
className="block text-white/80 hover:text-brand-green-accent transition-colors focus:outline-none focus:ring-2 focus:ring-brand-green-accent focus:ring-offset-2 rounded-lg px-2 py-1"
242+
onClick={() => setIsMenuOpen(false)}
243+
>
244+
AI Myth-Busting
245+
</Link>
246+
<Link
247+
href="/vibe-coding-cheatsheet"
248+
className="block text-white/80 hover:text-brand-green-accent transition-colors focus:outline-none focus:ring-2 focus:ring-brand-green-accent focus:ring-offset-2 rounded-lg px-2 py-1"
249+
onClick={() => setIsMenuOpen(false)}
250+
>
251+
Vibe Coding Cheatsheet
252+
</Link>
253+
</div>
254+
</div>
151255
<Link
152256
href="/blog"
153257
className="text-white hover:text-brand-green-accent transition-colors focus:outline-none focus:ring-2 focus:ring-brand-green-accent focus:ring-offset-2 rounded-lg px-2 py-1"

tailwind.config.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ const config: Config = {
1313
green: {
1414
dark: '#2e3d2a',
1515
accent: '#32d24d',
16+
hyperlink: '#156624',
1617
},
1718
cream: '#f4f1d3',
1819
purple: {

0 commit comments

Comments
 (0)