Skip to content

Commit a83c32f

Browse files
committed
feat: add core role system data structure
- Add comprehensive roles.js with W3C ARRM role definitions - Add rolePairs.js for role page generation - Add groupPairsEn.js and groupPairsFr.js for role group organization - Define 13 accessibility roles across 4 role groups - Include bilingual role labels and detailed job descriptions
1 parent 9dfac8e commit a83c32f

File tree

4 files changed

+325
-0
lines changed

4 files changed

+325
-0
lines changed

src/_data/groupPairsEn.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
module.exports = () => {
2+
const roles = require("./roles.js");
3+
return Object.entries(roles.groups.en).map(([key, name]) => {
4+
// Get all role keys that belong to this group
5+
const roleKeysInGroup = Object.entries(roles.roles)
6+
.filter(([, meta]) => meta.group === key)
7+
.map(([roleKey]) => roleKey);
8+
9+
// Get the translated labels for these roles
10+
const roleLabels = roleKeysInGroup.map(roleKey => roles.labels.en[roleKey]);
11+
12+
return [
13+
key,
14+
name,
15+
roles.descriptions.en[key],
16+
roleLabels
17+
];
18+
}).sort();
19+
};

src/_data/groupPairsFr.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
module.exports = () => {
2+
const roles = require("./roles.js");
3+
return Object.entries(roles.groups.fr).map(([key, name]) => {
4+
// Get all role keys that belong to this group
5+
const roleKeysInGroup = Object.entries(roles.roles)
6+
.filter(([, meta]) => meta.group === key)
7+
.map(([roleKey]) => roleKey);
8+
9+
// Get the translated labels for these roles
10+
const roleLabels = roleKeysInGroup.map(roleKey => roles.labels.fr[roleKey]);
11+
12+
return [
13+
key,
14+
name,
15+
roles.descriptions.fr[key],
16+
roleLabels
17+
];
18+
}).sort();
19+
};

src/_data/rolePairs.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
// Build an array of [roleKey, roleMeta] tuples from roles.roles
2+
module.exports = () => {
3+
const rolesData = require("./roles.js"); // same folder as this file
4+
// rolesData.roles is an object like { contentAuthoring: { group: "author" }, ... }
5+
return Object.entries(rolesData.roles).sort(([a], [b]) => a.localeCompare(b));
6+
};

0 commit comments

Comments
 (0)