Skip to content

Commit ac67756

Browse files
committed
Standardize design system.
1 parent 0219f8e commit ac67756

File tree

15 files changed

+893
-391
lines changed

15 files changed

+893
-391
lines changed

.cursorrules

Lines changed: 63 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# Digital Bazaar Community — Agent Rules
22

3-
> Bilingual Arabic/English Jekyll site for WhatsApp community
4-
> Aesthetic: High-end magazine, Middle Eastern-inspired palette
3+
> Bilingual Arabic/English Jekyll site for WhatsApp-based community
4+
> Aesthetic: Warm, focused & curated community website, Middle Eastern-inspired palette
55

66
---
77

@@ -37,15 +37,32 @@ Design every page like a premium publication spread:
3737

3838
## 🎨 COLOR PALETTE
3939

40+
### Core Colors
4041
```
4142
--sand: #F4E6C4 Background, warm neutral
42-
--saffron: #E2B714 Accent, highlights
43+
--saffron: #E2B714 Accent, highlights, hover states
4344
--terracotta: #B34E36 Primary CTA, warmth
44-
--marigold: #D9912A Secondary accent, energy
45+
--marigold: #D9912A Secondary accent, gradients
4546
--teal: #2F8F9D Links, cool contrast
4647
--night: #152029 Headings, strong text
4748
--ink: #21313B Body text
48-
--white: #FFFFFF Cards, buttons
49+
--white: #FFFFFF Elevated surfaces
50+
```
51+
52+
### Semantic Colors (Light Mode)
53+
```
54+
--card-bg: #FFFBF0 Cream card backgrounds
55+
--surface-elevated: #FFFDF6 Slightly warm white
56+
--terracotta-tint: rgba(179,78,54,.06) Warm card tint
57+
--text-muted: #4a5d6a Secondary text
58+
--kicker: #7a6330 Section labels
59+
```
60+
61+
### Footer Colors
62+
```
63+
Light mode: #3d2a28 (Terracotta Ground)
64+
Dark mode: #1a2a35 (Cool ink)
65+
Text: rgba(244,230,196,0.85) (Sand @ 85%)
4966
```
5067

5168
**Never introduce colors outside this palette.**
@@ -56,17 +73,42 @@ Design every page like a premium publication spread:
5673

5774
```
5875
├── _config.yml
59-
├── _data/rules_{ar,en}.yml
60-
├── _includes/{header,footer,language-toggle,article-card}.html
61-
├── _layouts/{default,home,article}.html
76+
├── _data/
77+
│ ├── strings_ar.yml ← Arabic UI strings
78+
│ ├── strings_en.yml ← English UI strings
79+
│ └── rules_{ar,en}.yml
80+
├── _includes/
81+
│ ├── header.html
82+
│ ├── footer.html ← "The Campfire" footer
83+
│ └── article-card.html
84+
├── _layouts/
85+
│ ├── default.html
86+
│ ├── home.html
87+
│ ├── start-here.html
88+
│ ├── cadence.html
89+
│ ├── rules.html
90+
│ └── article.html
6291
├── _posts/YYYY-MM-DD-title.md
63-
├── _docs/ ← Design system reference
64-
│ ├── design-system.md
65-
│ ├── image-layouts.md
66-
│ └── article-templates.md
67-
├── assets/css/styles.css
68-
├── ar/index.html
69-
├── en/index.html
92+
├── _design_docs/ ← Design system reference
93+
│ ├── design-system.md ← Typography, spacing, components
94+
│ ├── image-layouts.md ← Float, bleed, overlay patterns
95+
│ ├── article-templates.md
96+
│ ├── css-framework-research.md
97+
│ └── starting-prompt.md
98+
├── assets/
99+
│ ├── css/styles.scss ← Main stylesheet (~2700 lines)
100+
│ ├── fonts/ ← Self-hosted fonts
101+
│ └── img/ ← Images (WebP preferred)
102+
├── ar/
103+
│ ├── index.html
104+
│ ├── start-here/
105+
│ ├── cadence/
106+
│ └── rules/
107+
├── en/
108+
│ ├── index.html
109+
│ ├── start-here/
110+
│ ├── cadence/
111+
│ └── rules/
70112
└── index.html ← Redirects to /ar/
71113
```
72114

@@ -101,6 +143,7 @@ excerpt: "ملخص قصير"
101143
10. Verify language toggle works
102144

103145
### Performance (PageSpeed)
146+
104147
11. Use WebP images with JPG/PNG fallbacks
105148
12. Add `loading="lazy"` to images below the fold
106149
13. Add `loading="eager"` and `fetchpriority="high"` to hero/LCP images
@@ -166,10 +209,11 @@ When implementing specific features, read these files:
166209

167210
| Need | Reference |
168211
|------|-----------|
169-
| Image layouts (floats, bleeds, overlays) | `_docs/image-layouts.md` |
170-
| Typography (pull quotes, drop caps) | `_docs/design-system.md` |
171-
| Article page structure | `_docs/article-templates.md` |
172-
| Code block styling | `_docs/design-system.md` |
212+
| Typography, spacing, colors | `_design_docs/design-system.md` |
213+
| Image layouts (floats, bleeds, overlays) | `_design_docs/image-layouts.md` |
214+
| Article page structure | `_design_docs/article-templates.md` |
215+
| Code block styling | `_design_docs/design-system.md` |
216+
| CSS framework decision | `_design_docs/css-framework-research.md` |
173217

174218
---
175219

@@ -179,4 +223,3 @@ When implementing specific features, read these files:
179223
- Tailwind RTL: https://github.com/20lives/tailwindcss-rtl
180224
- CSS Logical Properties: https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_logical_properties_and_values
181225
- Arabic Fonts: https://fonts.google.com/?subset=arabic
182-

_data/strings_ar.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ months_short:
7777
# Hero Section
7878
hero:
7979
kicker: "دافئ، مركّز، ومنتقى"
80-
headline: "مجتمع عربي عالي الجودة للبنّائين."
80+
headline: "مجتمع عربي عالي الجودة للبنّائين"
8181
description: "البازار الرقمي مجتمع «واتساب أولاً» للبنّائين العرب الذين يُنجزون: مؤسسون، مهندسون، قادة منتج، مصمّمون، مسوّقون، باحثون، وفرق.\n\nابدأ من هنا على الموقع لتتعرف كيف نعمل، وتختار المسارات المناسبة، وتشارك في جلساتنا المتكررة مثل <i>سبت البازار</i> و<i>جلسات فايرسايد</i> الشهرية."
8282
image_alt: "بشر وروبوتات ودودة يتحدثون ويعملون معاً في بازار شرق أوسطي."
8383

@@ -531,7 +531,7 @@ footer:
531531
sections_title: "الأقسام"
532532
community_title: "المجتمع"
533533
copyright: "© %{year} البازار الرقمي"
534-
tagline: "صُنع بـ ❤ في أنحاء العالم العربي"
534+
tagline: "صُنع بـ ❤ عبر أنحاء العالم العربي"
535535
links:
536536
whatsapp: "واتساب"
537537
github: "GitHub"

_data/strings_en.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ arrow_external_rtl: "↖"
3434
# Hero Section
3535
hero:
3636
kicker: "warm, focused, and curated"
37-
headline: "A high-signal Arabic community for builders."
37+
headline: "A high-signal Arabic community for builders"
3838
description: "Digital Bazaar is a WhatsApp-first community for Arab builders who ship: founders, engineers, product leaders, designers, marketers, researchers, and teams.\n\nStart here on the website to learn how we work, join the right lanes, and show up for recurring sessions like <i>Bazaar Saturdays</i> and the monthly <i>Firesides</i>."
3939
image_alt: "Humans and friendly robots talking and working together in a Middle Eastern bazaar."
4040

_design_docs/article-templates.md

Lines changed: 64 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
Page structure and components for articles.
44

5+
> **Last Updated:** December 2025
6+
57
---
68

79
## Article Layout Structure
@@ -84,8 +86,8 @@ Page structure and components for articles.
8486
flex-wrap: wrap;
8587
align-items: center;
8688
gap: 0.5rem;
87-
font-size: 0.9rem;
88-
color: var(--muted);
89+
font-size: var(--text-sm);
90+
color: var(--text-muted);
8991
margin-bottom: 1rem;
9092
}
9193

@@ -94,15 +96,15 @@ Page structure and components for articles.
9496
}
9597

9698
.article-header h1 {
97-
font-size: clamp(2rem, 5vw, 3rem);
99+
font-size: var(--text-2xl);
98100
line-height: 1.15;
99-
color: var(--night);
101+
color: var(--text-heading);
100102
margin: 0 0 1rem;
101103
}
102104

103105
.article-excerpt {
104-
font-size: 1.25rem;
105-
color: var(--subtitle);
106+
font-size: var(--text-lg);
107+
color: var(--text-muted);
106108
line-height: 1.6;
107109
margin: 0;
108110
}
@@ -117,8 +119,8 @@ Page structure and components for articles.
117119
display: inline-flex;
118120
align-items: center;
119121
padding: 0.25rem 0.6rem;
120-
border-radius: 999px;
121-
font-size: 0.75rem;
122+
border-radius: var(--radius-full);
123+
font-size: var(--text-xs);
122124
font-weight: 600;
123125
}
124126

@@ -140,49 +142,47 @@ Page structure and components for articles.
140142
## Article Content Container
141143

142144
```css
143-
.article-content {
144-
font-size: 1.1rem;
145-
line-height: 1.8;
146-
color: var(--ink);
145+
.article-page article {
146+
font-size: var(--text-md);
147+
line-height: 1.7;
148+
color: var(--text);
147149
}
148150

149-
.article-content p {
150-
margin-bottom: 1.5rem;
151+
.article-page article p {
152+
margin: 0 0 16px;
151153
}
152154

153-
.article-content h2 {
154-
font-size: 1.75rem;
155-
color: var(--night);
156-
margin-top: 3rem;
157-
margin-bottom: 1rem;
155+
.article-page article h2 {
156+
font-size: var(--text-xl);
157+
color: var(--text-heading);
158+
margin: 26px 0 10px;
158159
}
159160

160-
.article-content h3 {
161-
font-size: 1.35rem;
162-
color: var(--night);
163-
margin-top: 2rem;
164-
margin-bottom: 0.75rem;
161+
.article-page article h3 {
162+
font-size: var(--text-lg);
163+
color: var(--text-heading);
164+
margin: 22px 0 8px;
165165
}
166166

167167
/* Lists */
168-
.article-content ul,
169-
.article-content ol {
170-
padding-inline-start: 1.5rem;
171-
margin-bottom: 1.5rem;
168+
.article-page article ul,
169+
.article-page article ol {
170+
padding-inline-start: 1.5em;
171+
margin: 0 0 16px;
172172
}
173173

174-
.article-content li {
175-
margin-bottom: 0.5rem;
174+
.article-page article li {
175+
margin-bottom: 8px;
176176
}
177177

178178
/* Links */
179-
.article-content a {
179+
.article-page article a {
180180
color: var(--teal);
181181
text-decoration: underline;
182-
text-underline-offset: 3px;
182+
text-underline-offset: 2px;
183183
}
184184

185-
.article-content a:hover {
185+
.article-page article a:hover {
186186
color: var(--terracotta);
187187
}
188188
```
@@ -206,21 +206,21 @@ Page structure and components for articles.
206206

207207
```css
208208
.related-articles {
209-
margin-top: 4rem;
210-
padding-top: 3rem;
211-
border-top: 1px solid rgba(21, 32, 41, 0.1);
209+
margin-top: var(--space-2xl);
210+
padding-top: var(--space-xl);
211+
border-top: 1px solid var(--border);
212212
}
213213

214214
.related-articles h2 {
215-
font-size: 1.5rem;
216-
color: var(--night);
217-
margin-bottom: 1.5rem;
215+
font-size: var(--text-xl);
216+
color: var(--text-heading);
217+
margin-bottom: var(--space-lg);
218218
}
219219

220220
.articles-grid {
221221
display: grid;
222222
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
223-
gap: 1.5rem;
223+
gap: var(--space-lg);
224224
}
225225
```
226226

@@ -254,11 +254,11 @@ Page structure and components for articles.
254254

255255
```css
256256
.article-card {
257-
background: var(--white);
258-
border-radius: 16px;
257+
background: var(--surface);
258+
border-radius: var(--radius-lg);
259259
overflow: hidden;
260-
box-shadow: var(--shadow-sm);
261-
border: 1px solid rgba(21, 32, 41, 0.06);
260+
box-shadow: var(--card-shadow);
261+
border: 1px solid var(--border);
262262
transition: transform 0.15s ease, box-shadow 0.2s ease;
263263
}
264264

@@ -269,34 +269,37 @@ Page structure and components for articles.
269269

270270
.article-card img {
271271
width: 100%;
272-
aspect-ratio: 16/10;
272+
height: 140px;
273273
object-fit: cover;
274274
}
275275

276276
.article-card .card-content {
277-
padding: 1.25rem;
277+
padding: 12px 14px 14px;
278278
}
279279

280-
.article-card h3 {
281-
font-size: 1.1rem;
282-
margin: 0.75rem 0 0.5rem;
283-
line-height: 1.4;
280+
.article-card-kicker {
281+
font-size: var(--text-2xs);
282+
font-weight: 700;
283+
text-transform: uppercase;
284+
letter-spacing: 0.15em;
285+
color: var(--kicker);
284286
}
285287

286-
.article-card h3 a {
287-
color: var(--night);
288-
text-decoration: none;
288+
.article-card-title {
289+
font-size: var(--text-md);
290+
font-weight: 650;
291+
color: var(--text-heading);
292+
margin: 0;
289293
}
290294

291-
.article-card h3 a:hover {
292-
color: var(--terracotta);
295+
.article-card-meta {
296+
font-size: var(--text-xs);
297+
color: var(--text-muted);
293298
}
294299

295-
.article-card .card-meta {
296-
font-size: 0.85rem;
297-
color: var(--muted);
298-
display: flex;
299-
gap: 1rem;
300+
.article-card-excerpt {
301+
font-size: var(--text-sm);
302+
color: var(--text-muted);
303+
margin: 0;
300304
}
301305
```
302-

_design_docs/css-framework-research.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,14 @@
11
# CSS Framework Research: Digital Bazaar
22

33
**Date:** December 2025
4+
**Status:** Research complete — **Custom CSS chosen** (no framework adopted)
45
**Purpose:** Evaluate CSS frameworks for cross-browser compatibility, RTL support, and design flexibility
56

7+
> **Outcome:** After evaluation, we chose to continue with custom CSS using design tokens
8+
> (CSS custom properties) rather than adopting a framework. This provides maximum flexibility
9+
> for our magazine aesthetic while keeping the codebase simple. The custom design system uses
10+
> `--text-*`, `--space-*`, and `--radius-*` tokens similar to Open Props.
11+
612
---
713

814
## Executive Summary

0 commit comments

Comments
 (0)