Skip to content

Commit ccae273

Browse files
authored
Merge pull request #489 from rladies/rebrand
RLadies+ rebranded theme
2 parents 7e22de9 + 879c041 commit ccae273

706 files changed

Lines changed: 15109 additions & 16177 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
name: Blog post submission
2+
description: Propose a blog post for the RLadies+ website
3+
labels: ["blog", "post"]
4+
body:
5+
- type: markdown
6+
attributes:
7+
value: |
8+
Thanks for wanting to write for RLadies+!
9+
Please fill out this form so we can coordinate with you.
10+
See the [website wiki](https://github.com/rladies/rladies.github.io/wiki) for details on the submission process.
11+
12+
- type: input
13+
id: title
14+
attributes:
15+
label: Proposed title
16+
validations:
17+
required: true
18+
19+
- type: textarea
20+
id: summary
21+
attributes:
22+
label: Brief summary
23+
description: 2-3 sentences about what the post will cover.
24+
validations:
25+
required: true
26+
27+
- type: dropdown
28+
id: category
29+
attributes:
30+
label: Category
31+
options:
32+
- tutorials
33+
- community
34+
- partnerships
35+
- events
36+
- other
37+
validations:
38+
required: true
39+
40+
- type: input
41+
id: author
42+
attributes:
43+
label: Author name(s)
44+
validations:
45+
required: true
46+
47+
- type: input
48+
id: target_date
49+
attributes:
50+
label: Target publication date
51+
description: Approximate date, if any.
52+
placeholder: YYYY-MM-DD
53+
54+
- type: dropdown
55+
id: format
56+
attributes:
57+
label: Source format
58+
description: What format will you write in?
59+
options:
60+
- Markdown (.md)
61+
- Quarto (.qmd)
62+
- R Markdown (.rmd)
63+
validations:
64+
required: true
65+
66+
- type: checkboxes
67+
id: agreement
68+
attributes:
69+
label: Before submitting
70+
options:
71+
- label: I have read the [Code of Conduct](https://rladies.org/coc/)
72+
required: true
73+
- label: I understand this post will be reviewed before publication
74+
required: true
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
name: Bug report
2+
description: Report a problem with the website
3+
labels: ["bug"]
4+
body:
5+
- type: markdown
6+
attributes:
7+
value: |
8+
Thanks for taking the time to report a bug!
9+
10+
- type: input
11+
id: url
12+
attributes:
13+
label: Page URL
14+
description: The URL of the page where you found the issue.
15+
placeholder: https://rladies.org/...
16+
validations:
17+
required: true
18+
19+
- type: textarea
20+
id: description
21+
attributes:
22+
label: What happened?
23+
description: Describe what you see vs what you expected.
24+
validations:
25+
required: true
26+
27+
- type: textarea
28+
id: screenshot
29+
attributes:
30+
label: Screenshot
31+
description: If applicable, add a screenshot to help explain the problem.
32+
33+
- type: dropdown
34+
id: device
35+
attributes:
36+
label: Device
37+
options:
38+
- Desktop
39+
- Tablet
40+
- Mobile
41+
validations:
42+
required: true
43+
44+
- type: input
45+
id: browser
46+
attributes:
47+
label: Browser
48+
placeholder: e.g. Chrome 120, Safari 17, Firefox 121

.github/ISSUE_TEMPLATE/config.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
blank_issues_enabled: true
2+
contact_links:
3+
- name: General questions
4+
url: https://rladies.org/about-us/
5+
about: Learn more about RLadies+ and how to get involved.

.github/PULL_REQUEST_TEMPLATE.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
## What does this PR do?
2+
3+
<!-- Brief description of the change -->
4+
5+
## Type of change
6+
7+
- [ ] Blog post
8+
- [ ] News item
9+
- [ ] Content update (pages, translations)
10+
- [ ] Theme / layout change
11+
- [ ] Configuration / CI
12+
- [ ] Bug fix
13+
14+
## Checklist
15+
16+
- [ ] I have tested the site builds locally (`hugo -e development`)
17+
- [ ] All images have descriptive alt text
18+
- [ ] Links point to correct destinations
19+
- [ ] Content displays correctly in both light and dark mode
20+
21+
### For blog posts / news
22+
23+
- [ ] Frontmatter includes: `title`, `author`, `date`, `description`, `categories`, `image`
24+
- [ ] Date format is `YYYY-MM-DD`
25+
- [ ] Images are optimised (compressed, reasonable dimensions)
26+
- [ ] If `.qmd`/`.rmd` source, the rendered `.md` is committed and up to date

.github/copilot-instructions.md

Lines changed: 97 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,21 @@
1-
# R-Ladies Website - AI Coding Instructions
1+
# RLadies+ Website - AI Coding Instructions
22

33
**Accessibility is a high priority.** All changes must maintain or improve WCAG compliance.
44

55
## Architecture Overview
66

7-
Hugo static site with Bootstrap 5 theme, data-driven from multiple sources:
8-
- **Local data**: `data/chapters/`, `data/directory/`, `data/global_team/`, `data/rblogs/`
9-
- **Remote data**: Fetched at build from `rladies/meetup_archive` (events, chapter metadata)
7+
Hugo static site with Tailwind CSS 4.1+ theme, data-driven from multiple sources:
8+
- **Local data**: `data/chapters/`, `data/directory/`, `data/global_team/`
9+
- **Remote data**: Fetched at build from `rladies/meetup_archive` (events, chapter metadata) and `rladies/awesome-rladies-creations` (online content listing)
1010
- **Content**: Multilingual (en/es/pt/fr) in `content/` with `_index.{lang}.md` pattern
1111

1212
## Key Commands
1313

1414
```bash
15-
hugo server -D # Local dev with drafts
16-
hugo --environment production # Production build
17-
npm install --prefix themes/hugo-rladies # Install theme dependencies
15+
hugo server -D # Local dev with drafts
16+
hugo --environment production # Production build
17+
npm install --prefix themes/hugo-rladiesplus # Install theme dependencies
18+
npm run build --prefix themes/hugo-rladiesplus # Build/sync vendor assets
1819
```
1920

2021
## Directory Structure
@@ -24,10 +25,60 @@ config/_default/ # Hugo config (hugo.yaml, params.yaml, menu.yaml, languages
2425
content/ # Markdown content (multilingual)
2526
data/chapters/ # Chapter JSON files (urlname, status, organizers, social_media)
2627
data/directory/ # Directory member JSON files
27-
themes/hugo-rladies/ # Theme with Bootstrap 5, amCharts, FullCalendar
28+
themes/hugo-rladiesplus/ # Theme with Tailwind CSS 4.1+, Alpine.js, amCharts, FullCalendar
2829
scripts/ # R scripts for Airtable/data processing
2930
```
3031

32+
## CSS Architecture
33+
34+
### Tailwind CSS 4.1+ with @apply
35+
- Entry point: `themes/hugo-rladiesplus/assets/css/main.css`
36+
- Uses CSS-first configuration with `@theme` directive for brand tokens
37+
- Semantic component classes via `@apply` in `assets/css/components/*.css`
38+
- Hugo processes CSS via native `css.TailwindCSS` function
39+
- FontAwesome compiled separately via `assets/scss/fontawesome.scss` → Hugo `toCSS`
40+
- All CSS concatenated and fingerprinted in `layouts/partials/head/head.html`
41+
42+
### Brand Colors
43+
| Token | Hex | Usage |
44+
|-------|-----|-------|
45+
| `--color-primary` | `#881ef9` | Headings, buttons, links, interactive elements |
46+
| `--color-primary-light` | `#a64dfc` | Hover states, lighter accents |
47+
| `--color-primary-dark` | `#6b0fd4` | Active states, darker accents |
48+
| `--color-accent-blue` | `#146af9` | Secondary accent |
49+
| `--color-accent-rose` | `#ff5b92` | Tertiary accent |
50+
| `--color-dark` | `#2f2f30` | Body text (Bastille Black) |
51+
| `--color-light` | `#ededf4` | Light backgrounds (Lavender White) |
52+
53+
### Fonts
54+
- **Body**: Poppins (self-hosted, weights 300-700)
55+
- **Code**: Inconsolata Variable (self-hosted)
56+
- Font files in `static/webfonts/google-fonts/`
57+
58+
### Component Files
59+
Semantic CSS classes live in `assets/css/components/`:
60+
`layout.css`, `nav.css`, `hero.css`, `buttons.css`, `cards.css`, `typography.css`,
61+
`forms.css`, `tables.css`, `badges.css`, `footer.css`, `calendar.css`, `maps.css`,
62+
`syntax.css`, `press.css`, `pagination.css`, `misc.css`
63+
64+
## JavaScript
65+
66+
### Alpine.js
67+
Used for all interactive UI components:
68+
- Navbar mobile toggle: `x-data="{ open: false }"`
69+
- Dropdown menus: `x-data="{ dropOpen: false }"`
70+
- Tab panels: `x-data="{ tab: 'current' }"`
71+
- Collapse/expand: `x-show`, `x-transition`, `x-cloak`
72+
73+
### Other JS
74+
- **counter.js**: Vanilla JS animated counters (requestAnimationFrame)
75+
- **FullCalendar**: Standard theme with custom Tailwind CSS styling (no Bootstrap theme)
76+
- **amCharts 5**: Map visualizations
77+
- **Choices.js**: Enhanced select inputs
78+
- **Shuffle.js**: Filterable grid layouts
79+
80+
No jQuery dependency. No Bootstrap JS.
81+
3182
## Data Patterns
3283

3384
### Chapter JSON (`data/chapters/*.json`)
@@ -44,7 +95,7 @@ scripts/ # R scripts for Airtable/data processing
4495
File naming: `country-city.json` (lowercase, hyphenated)
4596

4697
### Data Merging
47-
`themes/hugo-rladies/layouts/partials/head/data.html` loads all data at build time. Chapter data merges with remote meetup_archive via `funcs/merge_chapters.html` partial to add lat/lon, members, timezone.
98+
`themes/hugo-rladiesplus/layouts/partials/head/data.html` loads all data at build time. Chapter data merges with remote meetup_archive via `funcs/merge_chapters.html` partial to add lat/lon, members, timezone.
4899

49100
## Template Conventions
50101

@@ -53,10 +104,12 @@ File naming: `country-city.json` (lowercase, hyphenated)
53104
- Access page params via `.Params`, not directly on page object
54105
- `isset` only works on maps (`.Params`), not page objects
55106

56-
### Bootstrap 5 Patterns
57-
- Use semantic classes: `row`, `col-*`, `card`, `btn`, `badge`, `nav`
58-
- Spacing: `m-*`, `p-*`, `mb-*` utilities
59-
- Grid: `row row-cols-1 row-cols-md-3` for responsive columns
107+
### Tailwind + @apply Patterns
108+
- Use semantic component classes (`.card`, `.btn-primary`, `.site-container`) over raw utilities
109+
- Layout: `.site-container`, `.site-section`, `.grid-2` through `.grid-5`
110+
- Cards: `.card`, `.card-body`, `.card-title`, `.card-img-top`
111+
- Buttons: `.btn`, `.btn-primary`, `.btn-outline`, `.btn-sm`, `.btn-lg`
112+
- Add new component classes in `assets/css/components/` using `@apply`
60113

61114
### Accessibility
62115
- Use semantic HTML elements (`<nav>`, `<main>`, `<article>`, `<section>`, `<aside>`)
@@ -67,19 +120,40 @@ File naming: `country-city.json` (lowercase, hyphenated)
67120
- Interactive elements need visible focus states
68121
- Color alone must not convey information (use text/icons too)
69122
- Form inputs need associated `<label>` elements
123+
- Use `#2f2f30` (Bastille Black) for body text — `#881ef9` only for large/interactive elements
70124

71125
## Multilingual Content
72126

73127
Files use language suffix: `_index.en.md`, `_index.es.md`, `_index.pt.md`, `_index.fr.md`
74128

75129
Translation strings in `i18n/{lang}.yaml`. Missing translations auto-generated by `scripts/missing_translations.R` with `translated: no` front-matter.
76130

131+
### Translation Status Front-matter
132+
133+
The `translated` field has three states:
134+
- `translated: yes` — human-verified, shown in production
135+
- `translated: auto` — machine-translated (DeepL), shown only in dev/preview
136+
- `translated: no` — placeholder, not translated
137+
138+
### Translation Workflow
139+
140+
1. When content changes on `main`, the `translate-content.yaml` Action auto-translates via babeldown/DeepL
141+
2. A PR is created with `translated: auto` files
142+
3. Translators claim files via GitHub Issues (Translation Review template)
143+
4. Reviewers change `translated: auto` to `translated: yes` in front-matter
144+
5. Reviewed translations merge to `main` and appear in production
145+
146+
### Translation Scripts
147+
- `scripts/translate_content.R` — auto-translate content files using babeldown/DeepL (uses `translate` renv profile)
148+
- `scripts/translation_status.R` — report translation coverage across all content
149+
- `scripts/missing_translations.R` — generate placeholder files for missing language variants
150+
77151
## Build Pipeline
78152

79153
GitHub Actions workflow:
80154
1. R scripts process Airtable data
81-
2. Clone external repos (`directory`, `awesome-rladies-blogs`) for additional data
82-
- `meetup_archive` data is fetched at Hugo build time via remote resources (see `funcs/merge_chapters.html` using `resources.GetRemote`) and is not cloned
155+
2. Clone external repos (`directory`) for additional data
156+
- `meetup_archive` and `awesome-rladies-creations` data are fetched at Hugo build time via remote resources (`resources.GetRemote`) and are not cloned
83157
3. Hugo build with environment config
84158
4. Deploy to GitHub Pages (production) or Netlify (preview)
85159

@@ -89,10 +163,13 @@ GitHub Actions workflow:
89163
Create `data/chapters/country-city.json` with required fields (urlname, status, country, city)
90164

91165
### Modifying layouts
92-
Theme layouts in `themes/hugo-rladies/layouts/`. Override by placing file in root `layouts/` with same path.
166+
Theme layouts in `themes/hugo-rladiesplus/layouts/`. Override by placing file in root `layouts/` with same path.
93167

94168
### Adding home page sections
95-
Edit `themes/hugo-rladies/layouts/index.html` and create partial in `layouts/partials/home/`
169+
Edit `themes/hugo-rladiesplus/layouts/index.html` and create partial in `layouts/partials/home/`
170+
171+
### Adding a CSS component
172+
Create or edit a file in `themes/hugo-rladiesplus/assets/css/components/` using `@apply`, then import it in `assets/css/main.css`.
96173

97174
## Reviewing New Content
98175

@@ -128,6 +205,6 @@ Previews triggered via workflow_dispatch with artifact ID. Check:
128205

129206
## Style Guide
130207

131-
- R-Ladies purple: `#88398a` (defined in `themes/hugo-rladies/assets/style.scss` as `$primary`)
132-
- Fonts: Open Sans (body), Inconsolata (code)
133-
- Icons: Bootstrap Icons (`bi bi-*`) and FontAwesome (`fa fa-*`)
208+
- RLadies+ primary: `#881ef9` (defined in `themes/hugo-rladiesplus/assets/css/main.css` as `--color-primary`)
209+
- Fonts: Poppins (body), Inconsolata (code)
210+
- Icons: FontAwesome 6 (`fa-solid fa-*`, `fa-brands fa-*`)

.github/dependabot.yml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
version: 2
2+
updates:
3+
- package-ecosystem: "github-actions"
4+
directory: "/"
5+
schedule:
6+
interval: "monthly"
7+
labels:
8+
- "dependencies"
9+
groups:
10+
github-actions:
11+
patterns:
12+
- "*"

0 commit comments

Comments
 (0)