@jsonresume/theme-metadata 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +63 -0
- package/package.json +43 -0
- package/src/index.js +9 -0
- package/src/metadata.js +684 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2014-2026 JSON Resume contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# @jsonresume/theme-metadata
|
|
2
|
+
|
|
3
|
+
The theme registry metadata for [JSON Resume](https://jsonresume.org) themes — the single source of truth for theme display names, descriptions, tags, and authors used on jsonresume.org.
|
|
4
|
+
|
|
5
|
+
Use it to build your own theme gallery, theme picker, or any UI/tooling that needs to list or describe the available JSON Resume themes, without depending on the (heavy) theme rendering packages.
|
|
6
|
+
|
|
7
|
+
> Formerly the private `@repo/theme-config` workspace package. The metadata and exports are identical; it is now published publicly so external consumers can use it.
|
|
8
|
+
|
|
9
|
+
## Install
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
npm install @jsonresume/theme-metadata
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Exports
|
|
16
|
+
|
|
17
|
+
```js
|
|
18
|
+
import {
|
|
19
|
+
THEME_METADATA,
|
|
20
|
+
THEME_NAMES,
|
|
21
|
+
getRandomTheme,
|
|
22
|
+
} from '@jsonresume/theme-metadata';
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
- `THEME_METADATA` — an object keyed by theme slug. Each entry has:
|
|
26
|
+
- `name` — human-readable display name
|
|
27
|
+
- `description` — one-line summary of the look/intent
|
|
28
|
+
- `author` — theme author
|
|
29
|
+
- `tags` — string array for filtering/search
|
|
30
|
+
- `THEME_NAMES` — `Object.keys(THEME_METADATA)`, the array of theme slugs.
|
|
31
|
+
- `getRandomTheme()` — returns a random theme slug (useful for "surprise me" / preview UIs).
|
|
32
|
+
|
|
33
|
+
The metadata is also available directly via the `./metadata` subpath:
|
|
34
|
+
|
|
35
|
+
```js
|
|
36
|
+
import { THEME_METADATA } from '@jsonresume/theme-metadata/metadata';
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
This package contains metadata only — it does not import or render any themes.
|
|
40
|
+
|
|
41
|
+
## Example: a theme gallery
|
|
42
|
+
|
|
43
|
+
```js
|
|
44
|
+
import { THEME_METADATA, THEME_NAMES } from '@jsonresume/theme-metadata';
|
|
45
|
+
|
|
46
|
+
function getGalleryItems() {
|
|
47
|
+
return THEME_NAMES.map((slug) => {
|
|
48
|
+
const { name, description, tags } = THEME_METADATA[slug];
|
|
49
|
+
return {
|
|
50
|
+
slug,
|
|
51
|
+
name,
|
|
52
|
+
description,
|
|
53
|
+
tags,
|
|
54
|
+
// render a live preview from the registry:
|
|
55
|
+
preview: `https://registry.jsonresume.org/thomasdavis?theme=${slug}`,
|
|
56
|
+
};
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## Part of the jsonresume.org monorepo
|
|
62
|
+
|
|
63
|
+
See the [jsonresume.org monorepo](https://github.com/jsonresume/jsonresume.org). Report issues in the [monorepo issue tracker](https://github.com/jsonresume/jsonresume.org/issues).
|
package/package.json
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@jsonresume/theme-metadata",
|
|
3
|
+
"version": "0.3.0",
|
|
4
|
+
"private": false,
|
|
5
|
+
"description": "Theme registry metadata for JSON Resume themes — names, descriptions, tags, authors, and helpers (THEME_METADATA, THEME_NAMES, getRandomTheme) for building theme galleries and pickers",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"main": "./src/index.js",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": "./src/index.js",
|
|
10
|
+
"./metadata": "./src/metadata.js"
|
|
11
|
+
},
|
|
12
|
+
"files": [
|
|
13
|
+
"src"
|
|
14
|
+
],
|
|
15
|
+
"devDependencies": {
|
|
16
|
+
"@repo/eslint-config-custom": "^0.0.0"
|
|
17
|
+
},
|
|
18
|
+
"keywords": [
|
|
19
|
+
"json-resume",
|
|
20
|
+
"resume",
|
|
21
|
+
"cv",
|
|
22
|
+
"themes",
|
|
23
|
+
"theme-metadata",
|
|
24
|
+
"theme-gallery",
|
|
25
|
+
"config"
|
|
26
|
+
],
|
|
27
|
+
"repository": {
|
|
28
|
+
"type": "git",
|
|
29
|
+
"url": "https://github.com/jsonresume/jsonresume.org",
|
|
30
|
+
"directory": "packages/theme-config"
|
|
31
|
+
},
|
|
32
|
+
"homepage": "https://github.com/jsonresume/jsonresume.org/tree/master/packages/theme-config",
|
|
33
|
+
"bugs": {
|
|
34
|
+
"url": "https://github.com/jsonresume/jsonresume.org/issues"
|
|
35
|
+
},
|
|
36
|
+
"publishConfig": {
|
|
37
|
+
"access": "public"
|
|
38
|
+
},
|
|
39
|
+
"license": "MIT",
|
|
40
|
+
"scripts": {
|
|
41
|
+
"lint": "eslint src --cache --cache-location node_modules/.cache/.eslintcache || exit 0"
|
|
42
|
+
}
|
|
43
|
+
}
|
package/src/index.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @jsonresume/theme-metadata
|
|
3
|
+
*
|
|
4
|
+
* Theme registry metadata for JSON Resume themes.
|
|
5
|
+
* Provides theme metadata (names, descriptions, tags, authors) plus helpers,
|
|
6
|
+
* usable by the registry/homepage apps and any external gallery or picker UI.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
export { THEME_METADATA, THEME_NAMES, getRandomTheme } from './metadata.js';
|
package/src/metadata.js
ADDED
|
@@ -0,0 +1,684 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Theme metadata for all available themes
|
|
3
|
+
* This is the single source of truth for theme information
|
|
4
|
+
*
|
|
5
|
+
* This file contains ONLY metadata (no theme imports)
|
|
6
|
+
* Theme imports are handled by the registry app only
|
|
7
|
+
*/
|
|
8
|
+
export const THEME_METADATA = {
|
|
9
|
+
'academic-cv-lite': {
|
|
10
|
+
name: 'Academic CV Lite',
|
|
11
|
+
description:
|
|
12
|
+
'Scholarly, data-rich resume with structured lists and serif typography. Simple text hierarchy with no color.',
|
|
13
|
+
author: 'JSON Resume Team',
|
|
14
|
+
tags: ['academic', 'scholarly', 'cv', 'serif', 'print-first'],
|
|
15
|
+
},
|
|
16
|
+
'bold-header-statement': {
|
|
17
|
+
name: 'Bold Header Statement',
|
|
18
|
+
description:
|
|
19
|
+
'Magazine-inspired layout with commanding header and confident personal brand aesthetic.',
|
|
20
|
+
author: 'JSON Resume Team',
|
|
21
|
+
tags: [
|
|
22
|
+
'bold',
|
|
23
|
+
'header',
|
|
24
|
+
'magazine',
|
|
25
|
+
'personal-brand',
|
|
26
|
+
'creative',
|
|
27
|
+
'modern',
|
|
28
|
+
],
|
|
29
|
+
},
|
|
30
|
+
'architects-portfolio': {
|
|
31
|
+
name: "Architect's Portfolio",
|
|
32
|
+
description:
|
|
33
|
+
'Structural elegance with horizontal keylines and geometric precision like a drafting sheet.',
|
|
34
|
+
author: 'JSON Resume Team',
|
|
35
|
+
tags: [
|
|
36
|
+
'architect',
|
|
37
|
+
'portfolio',
|
|
38
|
+
'geometric',
|
|
39
|
+
'precision',
|
|
40
|
+
'designer',
|
|
41
|
+
'structural',
|
|
42
|
+
'minimal',
|
|
43
|
+
],
|
|
44
|
+
},
|
|
45
|
+
'consultant-polished': {
|
|
46
|
+
name: 'Consultant Polished',
|
|
47
|
+
description:
|
|
48
|
+
'Elegant, structured resume with transitional serif headers and modern sans body. Optimized for narrative-driven roles.',
|
|
49
|
+
author: 'JSON Resume Team',
|
|
50
|
+
tags: ['consulting', 'elegant', 'professional', 'navy'],
|
|
51
|
+
},
|
|
52
|
+
'creative-studio': {
|
|
53
|
+
name: 'Creative Studio',
|
|
54
|
+
description:
|
|
55
|
+
'Artistic yet professional theme with rounded sans-serif typography and soft color accents. Inspired by Behance portfolios.',
|
|
56
|
+
author: 'JSON Resume Team',
|
|
57
|
+
tags: ['creative', 'artistic', 'design', 'coral'],
|
|
58
|
+
},
|
|
59
|
+
'data-driven': {
|
|
60
|
+
name: 'Data-Driven',
|
|
61
|
+
description:
|
|
62
|
+
'Analytical and factual theme with geometric sans-serif typography. Prioritizes metrics and measurable results.',
|
|
63
|
+
author: 'JSON Resume Team',
|
|
64
|
+
tags: ['analytical', 'metrics', 'data', 'blue'],
|
|
65
|
+
},
|
|
66
|
+
'developer-mono': {
|
|
67
|
+
name: 'Developer Mono',
|
|
68
|
+
description:
|
|
69
|
+
'Technical, efficient theme with monospace headers and sans-serif body. Code-style aesthetics without gimmicks.',
|
|
70
|
+
author: 'JSON Resume Team',
|
|
71
|
+
tags: ['technical', 'developer', 'monospace', 'minimalist', 'blue'],
|
|
72
|
+
},
|
|
73
|
+
elegant: {
|
|
74
|
+
name: 'Elegant',
|
|
75
|
+
description: 'Elegant and refined design with sophisticated typography',
|
|
76
|
+
author: 'JSON Resume',
|
|
77
|
+
tags: ['elegant', 'refined', 'classic'],
|
|
78
|
+
},
|
|
79
|
+
even: {
|
|
80
|
+
name: 'Even',
|
|
81
|
+
description: 'Balanced and clean theme with modern styling',
|
|
82
|
+
author: 'JSON Resume',
|
|
83
|
+
tags: ['modern', 'clean', 'balanced'],
|
|
84
|
+
},
|
|
85
|
+
'executive-slate': {
|
|
86
|
+
name: 'Executive Slate',
|
|
87
|
+
description:
|
|
88
|
+
'Authoritative, polished theme with serif headings and modern sans body. Classic print-like layout with elegant type hierarchy.',
|
|
89
|
+
author: 'JSON Resume Team',
|
|
90
|
+
tags: ['executive', 'professional', 'senior', 'slate', 'premium'],
|
|
91
|
+
},
|
|
92
|
+
flat: {
|
|
93
|
+
name: 'Flat',
|
|
94
|
+
description: 'Flat design with minimalist aesthetic',
|
|
95
|
+
author: 'JSON Resume',
|
|
96
|
+
tags: ['flat', 'minimalist', 'modern'],
|
|
97
|
+
},
|
|
98
|
+
'government-standard': {
|
|
99
|
+
name: 'Government Standard',
|
|
100
|
+
description:
|
|
101
|
+
'Formal, structured resume with serif typography and grayscale design. Perfect for civil service, defense, or government contracts.',
|
|
102
|
+
author: 'JSON Resume Team',
|
|
103
|
+
tags: ['government', 'formal', 'structured', 'grayscale', 'official'],
|
|
104
|
+
},
|
|
105
|
+
jacrys: {
|
|
106
|
+
name: 'Jacrys',
|
|
107
|
+
description: 'Modern professional theme',
|
|
108
|
+
author: 'Community',
|
|
109
|
+
tags: ['modern', 'professional'],
|
|
110
|
+
},
|
|
111
|
+
kendall: {
|
|
112
|
+
name: 'Kendall',
|
|
113
|
+
description: 'Clean and readable resume theme',
|
|
114
|
+
author: 'Community',
|
|
115
|
+
tags: ['clean', 'readable'],
|
|
116
|
+
},
|
|
117
|
+
lucide: {
|
|
118
|
+
name: 'Lucide',
|
|
119
|
+
description: 'Light and elegant design',
|
|
120
|
+
author: 'Community',
|
|
121
|
+
tags: ['light', 'elegant'],
|
|
122
|
+
},
|
|
123
|
+
macchiato: {
|
|
124
|
+
name: 'Macchiato',
|
|
125
|
+
description: 'Warm, coffee-inspired design',
|
|
126
|
+
author: 'Community',
|
|
127
|
+
tags: ['warm', 'coffee', 'cozy'],
|
|
128
|
+
},
|
|
129
|
+
'marketing-narrative': {
|
|
130
|
+
name: 'Marketing Narrative',
|
|
131
|
+
description:
|
|
132
|
+
'Creative, persuasive theme with rounded humanist sans-serif. Flows like an article with narrative emphasis over bullet structure.',
|
|
133
|
+
author: 'JSON Resume Team',
|
|
134
|
+
tags: ['marketing', 'creative', 'storytelling', 'narrative', 'rose'],
|
|
135
|
+
},
|
|
136
|
+
'minimalist-grid': {
|
|
137
|
+
name: 'Minimalist Grid',
|
|
138
|
+
description:
|
|
139
|
+
'Clean, contemporary theme with geometric design aligned to a consistent baseline grid. Light-weight sans-serif with ample letter spacing.',
|
|
140
|
+
author: 'JSON Resume Team',
|
|
141
|
+
tags: ['minimalist', 'grid', 'geometric', 'clean', 'charcoal'],
|
|
142
|
+
},
|
|
143
|
+
minyma: {
|
|
144
|
+
name: 'Minyma',
|
|
145
|
+
description: 'Minimal and compact design',
|
|
146
|
+
author: 'Community',
|
|
147
|
+
tags: ['minimal', 'compact'],
|
|
148
|
+
},
|
|
149
|
+
'modern-classic': {
|
|
150
|
+
name: 'Modern Classic',
|
|
151
|
+
description:
|
|
152
|
+
'Professional, timeless resume with humanist sans-serif typography. Print-optimized with perfect balance between aesthetics and ATS compliance.',
|
|
153
|
+
author: 'JSON Resume Team',
|
|
154
|
+
tags: ['professional', 'timeless', 'modern', 'classic', 'blue'],
|
|
155
|
+
},
|
|
156
|
+
'operations-precision': {
|
|
157
|
+
name: 'Operations Precision',
|
|
158
|
+
description:
|
|
159
|
+
'Efficient, dependable theme with compact sans-serif typography. Highlights toolsets and process improvements.',
|
|
160
|
+
author: 'JSON Resume Team',
|
|
161
|
+
tags: ['operations', 'precision', 'efficient', 'systems', 'teal'],
|
|
162
|
+
},
|
|
163
|
+
'paper-plus-plus': {
|
|
164
|
+
name: 'Paper Plus Plus',
|
|
165
|
+
description: 'Enhanced paper-style design',
|
|
166
|
+
author: 'Community',
|
|
167
|
+
tags: ['paper', 'enhanced', 'print-style'],
|
|
168
|
+
},
|
|
169
|
+
'product-manager-canvas': {
|
|
170
|
+
name: 'Product Manager Canvas',
|
|
171
|
+
description:
|
|
172
|
+
'Analytical yet creative theme with neutral sans-serif typography. Prioritizes brevity and measurable impact.',
|
|
173
|
+
author: 'JSON Resume Team',
|
|
174
|
+
tags: ['product', 'manager', 'analytical', 'metrics', 'indigo'],
|
|
175
|
+
},
|
|
176
|
+
professional: {
|
|
177
|
+
name: 'Professional',
|
|
178
|
+
description: 'Clean professional theme with serif typography',
|
|
179
|
+
author: 'JSON Resume',
|
|
180
|
+
tags: ['professional', 'serif', 'classic'],
|
|
181
|
+
},
|
|
182
|
+
pumpkin: {
|
|
183
|
+
name: 'Pumpkin',
|
|
184
|
+
description: 'Warm and friendly design',
|
|
185
|
+
author: 'Community',
|
|
186
|
+
tags: ['warm', 'friendly', 'orange'],
|
|
187
|
+
},
|
|
188
|
+
reference: {
|
|
189
|
+
name: 'Reference',
|
|
190
|
+
description:
|
|
191
|
+
'Clean and professional reference theme showcasing all JSON Resume features',
|
|
192
|
+
author: 'JSON Resume Team',
|
|
193
|
+
tags: ['professional', 'clean', 'reference', 'complete'],
|
|
194
|
+
},
|
|
195
|
+
rickosborne: {
|
|
196
|
+
name: 'Rickosborne',
|
|
197
|
+
description: 'Custom professional layout',
|
|
198
|
+
author: 'Community',
|
|
199
|
+
tags: ['professional', 'custom'],
|
|
200
|
+
},
|
|
201
|
+
'sales-hunter': {
|
|
202
|
+
name: 'Sales Hunter',
|
|
203
|
+
description:
|
|
204
|
+
'Energetic, confident theme with bold sans-serif typography. Emphasizes quotas, wins, and measurable success.',
|
|
205
|
+
author: 'JSON Resume Team',
|
|
206
|
+
tags: ['sales', 'energetic', 'achievement', 'performance', 'green'],
|
|
207
|
+
},
|
|
208
|
+
sidebar: {
|
|
209
|
+
name: 'Sidebar',
|
|
210
|
+
description:
|
|
211
|
+
'Two-column layout with dark blue sidebar and professional appearance',
|
|
212
|
+
author: 'JSON Resume Team',
|
|
213
|
+
tags: ['professional', 'two-column', 'sidebar', 'modern'],
|
|
214
|
+
},
|
|
215
|
+
stackoverflow: {
|
|
216
|
+
name: 'Stack Overflow',
|
|
217
|
+
description: 'Developer-focused theme inspired by Stack Overflow',
|
|
218
|
+
author: 'JSON Resume',
|
|
219
|
+
tags: ['developer', 'stackoverflow', 'technical'],
|
|
220
|
+
},
|
|
221
|
+
'tan-responsive': {
|
|
222
|
+
name: 'Tan Responsive',
|
|
223
|
+
description: 'Responsive design with warm tones',
|
|
224
|
+
author: 'Community',
|
|
225
|
+
tags: ['responsive', 'warm', 'tan'],
|
|
226
|
+
},
|
|
227
|
+
'tokyo-modernist': {
|
|
228
|
+
name: 'Tokyo Modernist',
|
|
229
|
+
description:
|
|
230
|
+
'Minimal futurism with geometric precision, built on 8pt grid with variable-width typography and deep magenta accents.',
|
|
231
|
+
author: 'JSON Resume Team',
|
|
232
|
+
tags: [
|
|
233
|
+
'modern',
|
|
234
|
+
'futuristic',
|
|
235
|
+
'geometric',
|
|
236
|
+
'minimalist',
|
|
237
|
+
'tokyo',
|
|
238
|
+
'magenta',
|
|
239
|
+
],
|
|
240
|
+
},
|
|
241
|
+
'university-first': {
|
|
242
|
+
name: 'University First',
|
|
243
|
+
description:
|
|
244
|
+
'Fresh, optimistic theme with education-first layout. Friendly sans-serif with large headings and generous spacing.',
|
|
245
|
+
author: 'JSON Resume Team',
|
|
246
|
+
tags: ['student', 'graduate', 'university', 'education', 'fresh', 'blue'],
|
|
247
|
+
},
|
|
248
|
+
'writers-portfolio': {
|
|
249
|
+
name: "Writer's Portfolio",
|
|
250
|
+
description:
|
|
251
|
+
'Literary, elegant theme with transitional serif typography. Reads like prose with larger body font for readability.',
|
|
252
|
+
author: 'JSON Resume Team',
|
|
253
|
+
tags: ['writer', 'literary', 'elegant', 'minimal', 'serif'],
|
|
254
|
+
},
|
|
255
|
+
'nordic-minimal': {
|
|
256
|
+
name: 'Nordic Minimal',
|
|
257
|
+
description:
|
|
258
|
+
'Scandinavian restraint with white space worship and quiet confidence. Two-column layout with wide margins and extra line height for air.',
|
|
259
|
+
author: 'JSON Resume Team',
|
|
260
|
+
tags: [
|
|
261
|
+
'nordic',
|
|
262
|
+
'minimal',
|
|
263
|
+
'scandinavian',
|
|
264
|
+
'two-column',
|
|
265
|
+
'clean',
|
|
266
|
+
'steel-blue',
|
|
267
|
+
],
|
|
268
|
+
},
|
|
269
|
+
'graph-paper-grid': {
|
|
270
|
+
name: 'Graph Paper Grid',
|
|
271
|
+
description:
|
|
272
|
+
'Technical design precision with subtle graph paper grid background and monospace typography. Built for engineers, architects, and UX designers.',
|
|
273
|
+
author: 'JSON Resume Team',
|
|
274
|
+
tags: [
|
|
275
|
+
'technical',
|
|
276
|
+
'engineer',
|
|
277
|
+
'architect',
|
|
278
|
+
'grid',
|
|
279
|
+
'monospace',
|
|
280
|
+
'systematic',
|
|
281
|
+
'precision',
|
|
282
|
+
],
|
|
283
|
+
},
|
|
284
|
+
'monochrome-noir': {
|
|
285
|
+
name: 'Monochrome Noir',
|
|
286
|
+
description:
|
|
287
|
+
'Sharp, modern, ultra-clean theme with bold contrasts and minimal design. Reads like an art catalog with condensed sans typography and thin white separator lines.',
|
|
288
|
+
author: 'JSON Resume Team',
|
|
289
|
+
tags: [
|
|
290
|
+
'monochrome',
|
|
291
|
+
'minimal',
|
|
292
|
+
'editorial',
|
|
293
|
+
'creative-tech',
|
|
294
|
+
'bold',
|
|
295
|
+
'noir',
|
|
296
|
+
'black-and-white',
|
|
297
|
+
],
|
|
298
|
+
},
|
|
299
|
+
'mid-century-resume': {
|
|
300
|
+
name: 'Mid-Century Resume',
|
|
301
|
+
description:
|
|
302
|
+
'Retro modernist elegance inspired by 1960s design offices with vintage typography.',
|
|
303
|
+
author: 'JSON Resume Team',
|
|
304
|
+
tags: [
|
|
305
|
+
'mid-century',
|
|
306
|
+
'retro',
|
|
307
|
+
'vintage',
|
|
308
|
+
'modernist',
|
|
309
|
+
'1960s',
|
|
310
|
+
'geometric',
|
|
311
|
+
'creative',
|
|
312
|
+
],
|
|
313
|
+
},
|
|
314
|
+
'two-column-modernist': {
|
|
315
|
+
name: 'Two-Column Modernist',
|
|
316
|
+
description:
|
|
317
|
+
'Structured European minimalism with asymmetric two-column layout and neutral grotesk typography.',
|
|
318
|
+
author: 'JSON Resume Team',
|
|
319
|
+
tags: [
|
|
320
|
+
'two-column',
|
|
321
|
+
'european',
|
|
322
|
+
'minimalist',
|
|
323
|
+
'structured',
|
|
324
|
+
'grotesk',
|
|
325
|
+
'swiss-design',
|
|
326
|
+
],
|
|
327
|
+
},
|
|
328
|
+
'sidebar-photo-strip': {
|
|
329
|
+
name: 'Sidebar Photo Strip',
|
|
330
|
+
description:
|
|
331
|
+
'European creative layout with integrated grayscale photo sidebar and minimal aesthetic.',
|
|
332
|
+
author: 'JSON Resume Team',
|
|
333
|
+
tags: [
|
|
334
|
+
'sidebar',
|
|
335
|
+
'photo',
|
|
336
|
+
'european',
|
|
337
|
+
'creative',
|
|
338
|
+
'minimal',
|
|
339
|
+
'two-column',
|
|
340
|
+
'portrait',
|
|
341
|
+
],
|
|
342
|
+
},
|
|
343
|
+
'diagonal-accent-bar': {
|
|
344
|
+
name: 'Diagonal Accent Bar',
|
|
345
|
+
description:
|
|
346
|
+
'Dynamic architectural design with bold diagonal accent and kinetic energy. Wide sans headings with condensed body text.',
|
|
347
|
+
author: 'JSON Resume Team',
|
|
348
|
+
tags: [
|
|
349
|
+
'diagonal',
|
|
350
|
+
'bold',
|
|
351
|
+
'dynamic',
|
|
352
|
+
'architectural',
|
|
353
|
+
'marketing',
|
|
354
|
+
'creative',
|
|
355
|
+
'startup',
|
|
356
|
+
'rose',
|
|
357
|
+
],
|
|
358
|
+
},
|
|
359
|
+
'asymmetric-timeline': {
|
|
360
|
+
name: 'Asymmetric Timeline',
|
|
361
|
+
description:
|
|
362
|
+
'Cinematic storytelling with staggered timeline layout and serif-sans typography mix. Experiences arranged in alternating left-right bands along a central rule.',
|
|
363
|
+
author: 'JSON Resume Team',
|
|
364
|
+
tags: [
|
|
365
|
+
'timeline',
|
|
366
|
+
'asymmetric',
|
|
367
|
+
'storytelling',
|
|
368
|
+
'project-driven',
|
|
369
|
+
'narrative',
|
|
370
|
+
'visual-flow',
|
|
371
|
+
],
|
|
372
|
+
},
|
|
373
|
+
'typewriter-modern': {
|
|
374
|
+
name: 'Typewriter Modern',
|
|
375
|
+
description:
|
|
376
|
+
'Nostalgic typewriter aesthetic with monospace body and contemporary clarity.',
|
|
377
|
+
author: 'JSON Resume Team',
|
|
378
|
+
tags: [
|
|
379
|
+
'typewriter',
|
|
380
|
+
'monospace',
|
|
381
|
+
'vintage',
|
|
382
|
+
'writer',
|
|
383
|
+
'researcher',
|
|
384
|
+
'developer',
|
|
385
|
+
'retro',
|
|
386
|
+
],
|
|
387
|
+
},
|
|
388
|
+
'new-york-editorial': {
|
|
389
|
+
name: 'New York Editorial',
|
|
390
|
+
description:
|
|
391
|
+
'Magazine-quality editorial polish with tight column layout, serif headings, and typographic elegance. Inspired by The Atlantic.',
|
|
392
|
+
author: 'JSON Resume Team',
|
|
393
|
+
tags: [
|
|
394
|
+
'editorial',
|
|
395
|
+
'magazine',
|
|
396
|
+
'serif',
|
|
397
|
+
'literary',
|
|
398
|
+
'journalism',
|
|
399
|
+
'writer',
|
|
400
|
+
],
|
|
401
|
+
},
|
|
402
|
+
'berlin-grid': {
|
|
403
|
+
name: 'Berlin Grid',
|
|
404
|
+
description:
|
|
405
|
+
'Geometric precision with modular grid layout and grotesk sans-serif typography. Feels engineered — angular, structured, and meticulously aligned.',
|
|
406
|
+
author: 'JSON Resume Team',
|
|
407
|
+
tags: [
|
|
408
|
+
'grid',
|
|
409
|
+
'geometric',
|
|
410
|
+
'precise',
|
|
411
|
+
'engineer',
|
|
412
|
+
'architect',
|
|
413
|
+
'systematic',
|
|
414
|
+
'minimal',
|
|
415
|
+
],
|
|
416
|
+
},
|
|
417
|
+
'californian-warm': {
|
|
418
|
+
name: 'Californian Warm',
|
|
419
|
+
description:
|
|
420
|
+
'Friendly and inviting with relaxed spacing, warm amber tones, and rounded corners. Optimistic energy with generous whitespace.',
|
|
421
|
+
author: 'JSON Resume Team',
|
|
422
|
+
tags: [
|
|
423
|
+
'warm',
|
|
424
|
+
'friendly',
|
|
425
|
+
'optimistic',
|
|
426
|
+
'relaxed',
|
|
427
|
+
'creative',
|
|
428
|
+
'approachable',
|
|
429
|
+
'amber',
|
|
430
|
+
],
|
|
431
|
+
},
|
|
432
|
+
'london-bureau': {
|
|
433
|
+
name: 'London Bureau',
|
|
434
|
+
description:
|
|
435
|
+
'Traditional professionalism with heritage feel. Modeled after Financial Times style with serif typography, tight columns, and consistent rule dividers.',
|
|
436
|
+
author: 'JSON Resume Team',
|
|
437
|
+
tags: [
|
|
438
|
+
'traditional',
|
|
439
|
+
'heritage',
|
|
440
|
+
'professional',
|
|
441
|
+
'serif',
|
|
442
|
+
'editorial',
|
|
443
|
+
'classic',
|
|
444
|
+
'formal',
|
|
445
|
+
],
|
|
446
|
+
},
|
|
447
|
+
'pacific-horizon': {
|
|
448
|
+
name: 'Pacific Horizon',
|
|
449
|
+
description:
|
|
450
|
+
'Contemporary corporate theme with clean typography and blue tones. Layout feels like a SaaS landing page distilled into a resume.',
|
|
451
|
+
author: 'JSON Resume Team',
|
|
452
|
+
tags: [
|
|
453
|
+
'corporate',
|
|
454
|
+
'modern',
|
|
455
|
+
'professional',
|
|
456
|
+
'tech',
|
|
457
|
+
'blue',
|
|
458
|
+
'clean',
|
|
459
|
+
'saas',
|
|
460
|
+
],
|
|
461
|
+
},
|
|
462
|
+
'french-atelier': {
|
|
463
|
+
name: 'French Atelier',
|
|
464
|
+
description:
|
|
465
|
+
"Artistic precision with editorial-inspired layout. High-contrast serif titles with fine sans body and deep plum accents. Like a typographer's resume.",
|
|
466
|
+
author: 'JSON Resume Team',
|
|
467
|
+
tags: [
|
|
468
|
+
'artistic',
|
|
469
|
+
'editorial',
|
|
470
|
+
'designer',
|
|
471
|
+
'creative',
|
|
472
|
+
'elegant',
|
|
473
|
+
'typographic',
|
|
474
|
+
'plum',
|
|
475
|
+
],
|
|
476
|
+
},
|
|
477
|
+
'clinical-precision': {
|
|
478
|
+
name: 'Clinical Precision',
|
|
479
|
+
description:
|
|
480
|
+
'Clean, clinical, calm resume styled like a medical chart record. Each entry is a chart row with a green-railed vital column of monospaced date codes, lab-panel skill cards, and a "chart note" summary. Clinical green accents on white with mint tints. Tailored for doctors, nurses, and healthcare administrators.',
|
|
481
|
+
author: 'JSON Resume Team',
|
|
482
|
+
tags: [
|
|
483
|
+
'healthcare',
|
|
484
|
+
'clinical',
|
|
485
|
+
'medical',
|
|
486
|
+
'green',
|
|
487
|
+
'chart',
|
|
488
|
+
'calm',
|
|
489
|
+
'professional',
|
|
490
|
+
],
|
|
491
|
+
},
|
|
492
|
+
'field-researcher': {
|
|
493
|
+
name: 'Field Researcher',
|
|
494
|
+
description:
|
|
495
|
+
'Academic-meets-exploratory resume styled like a naturalist field notebook. Classic serif narrative, monospaced metadata margins, numbered log sections, and a calm teal-green accent on tinted paper. Tailored for research and sustainability roles.',
|
|
496
|
+
author: 'JSON Resume Team',
|
|
497
|
+
tags: [
|
|
498
|
+
'academic',
|
|
499
|
+
'research',
|
|
500
|
+
'serif',
|
|
501
|
+
'field-notes',
|
|
502
|
+
'teal',
|
|
503
|
+
'sustainability',
|
|
504
|
+
'scholarly',
|
|
505
|
+
],
|
|
506
|
+
},
|
|
507
|
+
'urban-techno': {
|
|
508
|
+
name: 'Urban Techno',
|
|
509
|
+
description:
|
|
510
|
+
'Brutalist tech theme with high contrast, dense two-column layout, and bold typography. Black borders, uppercase section titles, and monochrome palette — power through simplicity.',
|
|
511
|
+
author: 'JSON Resume Team',
|
|
512
|
+
tags: [
|
|
513
|
+
'brutalist',
|
|
514
|
+
'tech',
|
|
515
|
+
'dense',
|
|
516
|
+
'technical',
|
|
517
|
+
'monochrome',
|
|
518
|
+
'grid',
|
|
519
|
+
'urban',
|
|
520
|
+
],
|
|
521
|
+
},
|
|
522
|
+
'coastal-creative': {
|
|
523
|
+
name: 'Coastal Creative',
|
|
524
|
+
description:
|
|
525
|
+
'Calm, spacious theme with ocean blue accents and generous line heights. Design-forward yet approachable with rounded corners and soft shadows.',
|
|
526
|
+
author: 'JSON Resume Team',
|
|
527
|
+
tags: [
|
|
528
|
+
'calm',
|
|
529
|
+
'spacious',
|
|
530
|
+
'creative',
|
|
531
|
+
'ocean',
|
|
532
|
+
'blue',
|
|
533
|
+
'approachable',
|
|
534
|
+
'designer',
|
|
535
|
+
'educator',
|
|
536
|
+
],
|
|
537
|
+
},
|
|
538
|
+
'investor-brief': {
|
|
539
|
+
name: 'Investor Brief',
|
|
540
|
+
description:
|
|
541
|
+
'Crisp, analytical, results-focused theme resembling a fund report. Features Key Metrics section and data-first presentation.',
|
|
542
|
+
author: 'JSON Resume Team',
|
|
543
|
+
tags: [
|
|
544
|
+
'analytical',
|
|
545
|
+
'professional',
|
|
546
|
+
'finance',
|
|
547
|
+
'metrics',
|
|
548
|
+
'corporate',
|
|
549
|
+
'data-driven',
|
|
550
|
+
'crisp',
|
|
551
|
+
'vc',
|
|
552
|
+
],
|
|
553
|
+
},
|
|
554
|
+
claude: {
|
|
555
|
+
name: 'Claude',
|
|
556
|
+
description:
|
|
557
|
+
'Clean, modern theme with gradient accent header, dark mode support, and inline SVG icons. Designed and built entirely by Claude Code.',
|
|
558
|
+
author: 'Roland Sharp',
|
|
559
|
+
tags: ['modern', 'clean', 'dark-mode', 'ai', 'gradient', 'responsive'],
|
|
560
|
+
},
|
|
561
|
+
colophon: {
|
|
562
|
+
name: 'Colophon',
|
|
563
|
+
description:
|
|
564
|
+
'Warm, text-first resume theme with editorial typography, semantic HTML, and polished print styles.',
|
|
565
|
+
author: 'David Nelson',
|
|
566
|
+
tags: ['warm', 'editorial', 'text-first', 'ats', 'print', 'accessible'],
|
|
567
|
+
},
|
|
568
|
+
'creative-confidence': {
|
|
569
|
+
name: 'Creative Confidence',
|
|
570
|
+
description:
|
|
571
|
+
'Professional two-column resume theme with dark blue header, profile photo support, and print-optimized layout. Features a clean right sidebar for contact, education, certifications, and skills.',
|
|
572
|
+
author: 'Scott Lynde',
|
|
573
|
+
tags: [
|
|
574
|
+
'professional',
|
|
575
|
+
'two-column',
|
|
576
|
+
'print',
|
|
577
|
+
'photo',
|
|
578
|
+
'clean',
|
|
579
|
+
'sidebar',
|
|
580
|
+
'ats',
|
|
581
|
+
],
|
|
582
|
+
},
|
|
583
|
+
'art-school-modern': {
|
|
584
|
+
name: 'Art School Modern',
|
|
585
|
+
description:
|
|
586
|
+
'Avant-garde gallery aesthetic for designers and artists. Oversized Archivo Black display type, an asymmetric off-grid header with a framed photo plate, an editorial Fraunces serif statement, catalogue-numbered sections, and a single vivid vermilion accent.',
|
|
587
|
+
author: 'JSON Resume Team',
|
|
588
|
+
tags: [
|
|
589
|
+
'art',
|
|
590
|
+
'gallery',
|
|
591
|
+
'avant-garde',
|
|
592
|
+
'editorial',
|
|
593
|
+
'expressive',
|
|
594
|
+
'designer',
|
|
595
|
+
'creative',
|
|
596
|
+
'portfolio',
|
|
597
|
+
'display-type',
|
|
598
|
+
],
|
|
599
|
+
},
|
|
600
|
+
'community-garden': {
|
|
601
|
+
name: 'Community Garden',
|
|
602
|
+
description:
|
|
603
|
+
'Beautiful, warm theme celebrating education and community service. Sky blue and garden green colors with prominent certifications and volunteer sections.',
|
|
604
|
+
author: 'JSON Resume Team',
|
|
605
|
+
tags: [
|
|
606
|
+
'community',
|
|
607
|
+
'volunteer',
|
|
608
|
+
'education',
|
|
609
|
+
'certifications',
|
|
610
|
+
'warm',
|
|
611
|
+
'friendly',
|
|
612
|
+
'colorful',
|
|
613
|
+
'blue',
|
|
614
|
+
'green',
|
|
615
|
+
'growth',
|
|
616
|
+
],
|
|
617
|
+
},
|
|
618
|
+
'industrial-engineer': {
|
|
619
|
+
name: 'Industrial Engineer',
|
|
620
|
+
description:
|
|
621
|
+
'Engineering-datasheet aesthetic with a precise grid, monospace technical labels, spec-table contact block, part-number section headers, and dimension-line rules. Drafting-blue with safety-orange accents for dense, legible data presentation.',
|
|
622
|
+
author: 'JSON Resume Team',
|
|
623
|
+
tags: [
|
|
624
|
+
'industrial',
|
|
625
|
+
'engineer',
|
|
626
|
+
'technical',
|
|
627
|
+
'datasheet',
|
|
628
|
+
'blueprint',
|
|
629
|
+
'monospace',
|
|
630
|
+
'grid',
|
|
631
|
+
'spec-table',
|
|
632
|
+
'blue',
|
|
633
|
+
'orange',
|
|
634
|
+
],
|
|
635
|
+
},
|
|
636
|
+
brutalist: {
|
|
637
|
+
name: 'Brutalist',
|
|
638
|
+
description:
|
|
639
|
+
'Raw concrete brutalism with heavy 4px black rules, oversized uppercase Archivo Black headings, hard edges, monospace spec labels, numbered sections, and offset block-shadows. Stark black-on-white with a single harsh safety-yellow accent.',
|
|
640
|
+
author: 'JSON Resume Team',
|
|
641
|
+
tags: [
|
|
642
|
+
'brutalist',
|
|
643
|
+
'raw',
|
|
644
|
+
'concrete',
|
|
645
|
+
'bold',
|
|
646
|
+
'monospace',
|
|
647
|
+
'high-contrast',
|
|
648
|
+
'grid',
|
|
649
|
+
'uppercase',
|
|
650
|
+
'yellow',
|
|
651
|
+
'black',
|
|
652
|
+
],
|
|
653
|
+
},
|
|
654
|
+
'art-deco': {
|
|
655
|
+
name: 'Art Deco',
|
|
656
|
+
description:
|
|
657
|
+
'1920s Gatsby elegance with a symmetric centered masthead on a deep midnight-and-emerald jewel panel, metallic-gold accents, geometric chevron and sunburst dividers, and a high-contrast Cinzel didone-style display serif over a graceful Cormorant Garamond body.',
|
|
658
|
+
author: 'JSON Resume Team',
|
|
659
|
+
tags: [
|
|
660
|
+
'art-deco',
|
|
661
|
+
'gatsby',
|
|
662
|
+
'1920s',
|
|
663
|
+
'elegant',
|
|
664
|
+
'ornamental',
|
|
665
|
+
'serif',
|
|
666
|
+
'gold',
|
|
667
|
+
'jewel',
|
|
668
|
+
'symmetric',
|
|
669
|
+
'luxury',
|
|
670
|
+
],
|
|
671
|
+
},
|
|
672
|
+
};
|
|
673
|
+
|
|
674
|
+
// List of available theme names (derived from THEME_METADATA)
|
|
675
|
+
export const THEME_NAMES = Object.keys(THEME_METADATA);
|
|
676
|
+
|
|
677
|
+
/**
|
|
678
|
+
* Get a random theme name from available themes
|
|
679
|
+
* @returns {string} Random theme name
|
|
680
|
+
*/
|
|
681
|
+
export function getRandomTheme() {
|
|
682
|
+
const randomIndex = Math.floor(Math.random() * THEME_NAMES.length);
|
|
683
|
+
return THEME_NAMES[randomIndex];
|
|
684
|
+
}
|