bilingual-jekyll-resume-theme 0.1.0 → 0.2.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.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/CODE_OF_CONDUCT.MD +92 -0
  3. data/_includes/analytics-body.html +28 -0
  4. data/_includes/analytics-head.html +41 -0
  5. data/_includes/ar-date.html +9 -0
  6. data/_includes/hreflang.html +45 -0
  7. data/_includes/main-head.html +2 -0
  8. data/_includes/print-social-links.html +76 -0
  9. data/_includes/resume-head-ar.html +14 -0
  10. data/_includes/resume-head-en.html +13 -0
  11. data/_includes/resume-section-ar.html +366 -0
  12. data/_includes/resume-section-en.html +366 -0
  13. data/_includes/shared-head.html +14 -0
  14. data/_includes/social-links.html +138 -0
  15. data/_includes/vendors/lineicons-v4.0/envelope.svg +8 -0
  16. data/_includes/vendors/lineicons-v4.0/phone.svg +13 -0
  17. data/_includes/vendors/lineicons-v4.0/postcard.svg +14 -0
  18. data/_includes/vendors/lineicons-v5.0/dev.svg +3 -0
  19. data/_includes/vendors/lineicons-v5.0/dribbble-symbol.svg +3 -0
  20. data/_includes/vendors/lineicons-v5.0/facebook.svg +3 -0
  21. data/_includes/vendors/lineicons-v5.0/flickr.svg +4 -0
  22. data/_includes/vendors/lineicons-v5.0/github.svg +3 -0
  23. data/_includes/vendors/lineicons-v5.0/globe-1.svg +3 -0
  24. data/_includes/vendors/lineicons-v5.0/instagram.svg +4 -0
  25. data/_includes/vendors/lineicons-v5.0/linkedin.svg +3 -0
  26. data/_includes/vendors/lineicons-v5.0/medium-alt.svg +3 -0
  27. data/_includes/vendors/lineicons-v5.0/pinterest.svg +3 -0
  28. data/_includes/vendors/lineicons-v5.0/telegram.svg +3 -0
  29. data/_includes/vendors/lineicons-v5.0/whatsapp.svg +3 -0
  30. data/_includes/vendors/lineicons-v5.0/x.svg +3 -0
  31. data/_includes/vendors/lineicons-v5.0/youtube.svg +3 -0
  32. data/_layouts/default.html +42 -1
  33. data/_layouts/resume-ar.html +167 -0
  34. data/_layouts/resume-en.html +167 -0
  35. data/_sass/_all-pages.scss +51 -0
  36. data/_sass/_base.scss +68 -0
  37. data/_sass/_layout.scss +78 -0
  38. data/_sass/_mixins.scss +111 -0
  39. data/_sass/_normalize.scss +379 -0
  40. data/_sass/_profile.scss +75 -0
  41. data/_sass/_resume-rtl.scss +69 -0
  42. data/_sass/_resume.scss +347 -0
  43. data/_sass/_variables.scss +33 -0
  44. data/assets/css/cv-ar.scss +19 -0
  45. data/assets/css/cv.scss +16 -0
  46. data/assets/css/main.scss +6 -0
  47. data/assets/favicon/resume/about.txt +6 -0
  48. data/assets/favicon/resume/android-chrome-192x192.png +0 -0
  49. data/assets/favicon/resume/android-chrome-512x512.png +0 -0
  50. data/assets/favicon/resume/apple-touch-icon.png +0 -0
  51. data/assets/favicon/resume/favicon-16x16.png +0 -0
  52. data/assets/favicon/resume/favicon-32x32.png +0 -0
  53. data/assets/favicon/resume/favicon.ico +0 -0
  54. data/assets/favicon/resume/site.webmanifest +1 -0
  55. metadata +122 -6
  56. data/_layouts/post.html +0 -5
  57. /data/_layouts/{page.html → profile.html} +0 -0
@@ -0,0 +1,347 @@
1
+ // Resume styles
2
+ // ---------------------------------------/
3
+
4
+ // util
5
+
6
+ @use "mixins";
7
+ @use "variables";
8
+
9
+ .section-header {
10
+ @include mixins.section_border;
11
+ margin-bottom: 1.5rem;
12
+
13
+ h2 {
14
+ @include mixins.sans;
15
+ font-weight: 900;
16
+ font-size: 1.75rem;
17
+ letter-spacing: -.05rem;
18
+ margin: 0;
19
+ }
20
+ }
21
+
22
+ // page header styles
23
+
24
+ .page-header {
25
+ padding: 1.5rem 0;
26
+
27
+ .avatar {
28
+ width: 95px;
29
+ max-width: 100%;
30
+ overflow: hidden;
31
+ @include mixins.border-radius(100px);
32
+ margin: 0 auto;
33
+ display: block;
34
+ }
35
+
36
+ .header-name {
37
+ @include mixins.sans;
38
+ font-size: 3rem;
39
+ font-weight: 900;
40
+ text-align: center;
41
+ letter-spacing: -.15rem;
42
+ line-height: 1;
43
+ margin: 1rem 0 0;
44
+ }
45
+
46
+ .header-contact-info {
47
+ @include mixins.sans;
48
+ text-align: center;
49
+ }
50
+
51
+ .header-contact-info p a {
52
+ color: inherit;
53
+ }
54
+
55
+ .title-bar {
56
+ @include mixins.section_border;
57
+ margin-top: 2rem;
58
+ padding: .4rem 0;
59
+ @include mixins.clearfix;
60
+
61
+ .header-title {
62
+ @include mixins.sans;
63
+ font-weight: 300;
64
+ font-size: 1.75rem;
65
+ line-height: 2rem;
66
+ letter-spacing: -.05rem;
67
+ text-align: center;
68
+ margin: 0 0 .5rem;
69
+
70
+ @include mixins.media_larger_than_mobile {
71
+ float: left;
72
+ margin: 0;
73
+ }
74
+ }
75
+ }
76
+
77
+ .executive-summary {
78
+ @include mixins.media_larger_than_mobile {
79
+ font-size: 1rem;
80
+ }
81
+ }
82
+ }
83
+
84
+ .social-links {
85
+ margin: 0;
86
+ padding: 0;
87
+ list-style: none;
88
+ position: relative;
89
+ top: 4px;
90
+ text-align: center;
91
+ border-top: 2px solid #c7c7c7;
92
+ padding-top: .4rem;
93
+
94
+ @include mixins.media_larger_than_mobile {
95
+ float: right;
96
+ border-top: none;
97
+ padding-top: 0;
98
+ }
99
+
100
+ .icon-link-item {
101
+ display: inline-block;
102
+ margin-left: 5px;
103
+ }
104
+
105
+ .icon-link {
106
+ display: inline-block;
107
+
108
+ &:hover .icon path {
109
+ fill: #333;
110
+ @include mixins.transition(all .2s ease);
111
+ }
112
+ }
113
+
114
+ .icon {
115
+ height: 28px;
116
+ }
117
+ }
118
+
119
+ .contact-button {
120
+ @include mixins.border-radius(3px);
121
+ background-color: #efefef;
122
+ text-decoration: none;
123
+ text-align: center;
124
+ display: block;
125
+ margin: 1.5rem auto;
126
+ width: 220px;
127
+ font-size: 1.375rem;
128
+ @include mixins.sans_light;
129
+ color: #333;
130
+ line-height: 55px;
131
+ @include mixins.transition(all .2s ease);
132
+
133
+ &:hover {
134
+ background-color: #333;
135
+ color: #fff;
136
+ }
137
+
138
+ &.not-looking {
139
+ width: 400px;
140
+ }
141
+ }
142
+
143
+ // resume content styles
144
+
145
+ .content-section {
146
+ margin: 0 0 3rem;
147
+
148
+ .resume-item {
149
+ margin-bottom: 2rem;
150
+ }
151
+
152
+ .resume-item-title {
153
+ @include mixins.sans_bold;
154
+ margin: 0 0 .75rem;
155
+ font-size: 1.5rem;
156
+ letter-spacing: -.05rem;
157
+ line-height: 1;
158
+ }
159
+
160
+ .resume-item-details {
161
+ font-size: 1.125rem;
162
+ margin: 0 0 .75rem;
163
+ line-height: 1;
164
+
165
+ &.award-title {
166
+ font-size: 1rem;
167
+ }
168
+ }
169
+
170
+ .resume-item-title,
171
+ .resume-item-details,
172
+ .resume-item-copy,
173
+ .resume-item-list {
174
+ a {
175
+ color: #333;
176
+ text-decoration: none;
177
+ border-bottom: 1px solid;
178
+
179
+ &:hover {
180
+ border-bottom: none;
181
+ color: #9c9c9c;
182
+ }
183
+ }
184
+ }
185
+
186
+ .resume-item-copy {
187
+ margin: .75rem 0 0;
188
+ }
189
+
190
+ .resume-item-copy-license-cert-id {
191
+ font-weight: normal;
192
+ }
193
+ /* Languages table (responsive, flexible spacing) */
194
+ .languages-table {
195
+ width: 100%;
196
+ /* use separate border spacing to create visible gaps between TDs */
197
+ border-collapse: separate;
198
+ border-spacing: 1rem 0.5rem; /* horizontal gap, vertical gap */
199
+ table-layout: fixed; /* let columns share available width */
200
+ margin: 0 0 0.5rem 0;
201
+ }
202
+
203
+ .languages-table tbody {
204
+ width: 100%;
205
+ }
206
+
207
+ .languages-table .lang-cell {
208
+ padding: 0.5rem 1rem;
209
+ vertical-align: top;
210
+ word-break: break-word;
211
+ }
212
+
213
+ .lang-entry {
214
+ margin: 0;
215
+ line-height: 1.25;
216
+ }
217
+
218
+ /* move typography here so markup stays clean */
219
+ .languages-table .resume-item-details {
220
+ font-weight: 700;
221
+ font-size: 14px;
222
+ }
223
+
224
+ /* Make the table stack into single-column blocks on narrow viewports */
225
+ @include mixins.media_mobile {
226
+ .languages-table,
227
+ .languages-table tbody,
228
+ .languages-table tr,
229
+ .languages-table td {
230
+ display: block;
231
+ width: 100%;
232
+ }
233
+
234
+ .languages-table tr { margin-bottom: 0.5rem; }
235
+ }
236
+
237
+ /* Print-specific: keep two columns side-by-side (do not stack) */
238
+ @media print {
239
+ .languages-table {
240
+ display: table;
241
+ table-layout: fixed;
242
+ border-collapse: separate;
243
+ border-spacing: 1rem 0.5rem;
244
+ width: 100%;
245
+ page-break-inside: avoid;
246
+ }
247
+
248
+ .languages-table tbody { display: table-row-group; }
249
+
250
+ .languages-table tr { display: table-row; }
251
+
252
+ .languages-table td {
253
+ display: table-cell !important;
254
+ width: 50%;
255
+ vertical-align: top;
256
+ padding: 0.4rem 0.8rem;
257
+ }
258
+ }
259
+ }
260
+
261
+ // footer styles
262
+
263
+ .page-footer {
264
+ border-top: 4px solid #c7c7c7;
265
+ padding-top: 1.5rem;
266
+ text-align: center;
267
+ margin-bottom: 3rem;
268
+
269
+ .footer-line {
270
+ margin: 0;
271
+ font-size: .875rem;
272
+ color: #999;
273
+
274
+ >a {
275
+ font-weight: 700;
276
+ color: #333;
277
+ }
278
+ }
279
+ }
280
+
281
+ .print-only,
282
+ .print-only-inline {
283
+ display: none !important
284
+ }
285
+
286
+ @media print {
287
+ .no-print {
288
+ display: none !important
289
+ }
290
+
291
+ .print-only {
292
+ display: block !important
293
+ }
294
+
295
+ .print-only-inline {
296
+ display: inline !important
297
+ }
298
+
299
+ body {
300
+ font-size: 12px;
301
+ line-height: 1rem;
302
+ }
303
+
304
+ .page-header {
305
+ padding: 1rem 0 .2rem;
306
+
307
+ .header-name {
308
+ @include mixins.sans_bold;
309
+ font-size: 2rem;
310
+ margin: 0 0 .2rem;
311
+ }
312
+ }
313
+
314
+ .section-header {
315
+ @include mixins.section_border_thin;
316
+ margin-bottom: 1rem;
317
+
318
+ h2 {
319
+ font-size: 1.2rem;
320
+ line-height: 1.5rem;
321
+ }
322
+ }
323
+
324
+ .content-section {
325
+ margin: 0 0 1rem;
326
+
327
+ .resume-item {
328
+ margin-bottom: 1rem;
329
+ }
330
+
331
+ .resume-item-title {
332
+ font-size: 16px;
333
+ line-height: .7em;
334
+ }
335
+
336
+ .resume-item-details {
337
+ font-size: 12px;
338
+ margin: 0 0 .75rem;
339
+ line-height: .7em;
340
+ font-style: italic;
341
+
342
+ &.award-title {
343
+ font-size: 11px;
344
+ }
345
+ }
346
+ }
347
+ }
@@ -0,0 +1,33 @@
1
+ // Variables
2
+ // ---------------------------------------/
3
+
4
+ $container-width: 980px !default;
5
+ $grid-gutter: 10px !default;
6
+
7
+ // Colors
8
+ $white: #fff;
9
+ $black: #333;
10
+
11
+ // Styles
12
+ $text_color: $black;
13
+
14
+ // Font stack
15
+ $body-font: Helvetica,
16
+ arial,
17
+ nimbussansl,
18
+ liberationsans,
19
+ freesans,
20
+ clean,
21
+ sans-serif,
22
+ "Segoe UI Emoji",
23
+ "Segoe UI Symbol" !default;
24
+
25
+ // The base body size
26
+ $body-font-size: 13px !default;
27
+
28
+ // Monospace font stack
29
+ $mono-font: Consolas,
30
+ "Liberation Mono",
31
+ Menlo,
32
+ Courier,
33
+ monospace !default;
@@ -0,0 +1,19 @@
1
+ ---
2
+ ---
3
+
4
+ // "Reset" styles and SCSS reusable components
5
+ // Arabic CV entrypoint: load base styles then RTL overrides
6
+ @use "normalize";
7
+ @use "mixins";
8
+ @use "variables";
9
+
10
+ // Generic site base & layout styles
11
+ @use "base";
12
+ @use "layout";
13
+
14
+ // Layouts
15
+ @use "resume";
16
+ @use "all-pages";
17
+
18
+ // RTL-specific overrides and Arabic typography
19
+ @use "resume-rtl";
@@ -0,0 +1,16 @@
1
+ ---
2
+ ---
3
+
4
+ // "Reset" styles and SCSS reusable components
5
+ @use "normalize";
6
+ @use "mixins";
7
+ @use "variables";
8
+
9
+ // Generic site base & layout styles
10
+ @use "base";
11
+ @use "layout";
12
+
13
+ // Layouts
14
+ @use "resume";
15
+
16
+ @use "all-pages";
@@ -0,0 +1,6 @@
1
+ ---
2
+ ---
3
+ // "Reset" styles and SCSS reusable components
4
+ @use "normalize";
5
+ @use "profile";
6
+ @use "all-pages";
@@ -0,0 +1,6 @@
1
+ This favicon was generated using the following graphics from Twitter Twemoji:
2
+
3
+ - Graphics Title: 1f4bc.svg
4
+ - Graphics Author: Copyright 2020 Twitter, Inc and other contributors (https://github.com/twitter/twemoji)
5
+ - Graphics Source: https://github.com/twitter/twemoji/blob/master/assets/svg/1f4bc.svg
6
+ - Graphics License: CC-BY 4.0 (https://creativecommons.org/licenses/by/4.0/)
Binary file
@@ -0,0 +1 @@
1
+ {"name":"","short_name":"","icons":[{"src":"/assets/favicon/resume/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/assets/favicon/resume/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"}
metadata CHANGED
@@ -1,13 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bilingual-jekyll-resume-theme
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Khaldoon Mutahar
8
+ autorequire:
8
9
  bindir: bin
9
10
  cert_chain: []
10
- date: 1980-01-02 00:00:00.000000000 Z
11
+ date: 2025-11-02 00:00:00.000000000 Z
11
12
  dependencies:
12
13
  - !ruby/object:Gem::Dependency
13
14
  name: jekyll
@@ -23,21 +24,135 @@ dependencies:
23
24
  - - "~>"
24
25
  - !ruby/object:Gem::Version
25
26
  version: '4.4'
27
+ - !ruby/object:Gem::Dependency
28
+ name: jekyll-feed
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: jekyll-seo-tag
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: jekyll-sitemap
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: jekyll-redirect-from
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ description:
26
84
  email:
27
85
  - contact@mutahar.me
28
86
  executables: []
29
87
  extensions: []
30
88
  extra_rdoc_files: []
31
89
  files:
90
+ - CODE_OF_CONDUCT.MD
32
91
  - LICENSE.txt
33
92
  - README.md
93
+ - _includes/analytics-body.html
94
+ - _includes/analytics-head.html
95
+ - _includes/ar-date.html
96
+ - _includes/hreflang.html
97
+ - _includes/main-head.html
98
+ - _includes/print-social-links.html
99
+ - _includes/resume-head-ar.html
100
+ - _includes/resume-head-en.html
101
+ - _includes/resume-section-ar.html
102
+ - _includes/resume-section-en.html
103
+ - _includes/shared-head.html
104
+ - _includes/social-links.html
105
+ - _includes/vendors/lineicons-v4.0/envelope.svg
106
+ - _includes/vendors/lineicons-v4.0/phone.svg
107
+ - _includes/vendors/lineicons-v4.0/postcard.svg
108
+ - _includes/vendors/lineicons-v5.0/dev.svg
109
+ - _includes/vendors/lineicons-v5.0/dribbble-symbol.svg
110
+ - _includes/vendors/lineicons-v5.0/facebook.svg
111
+ - _includes/vendors/lineicons-v5.0/flickr.svg
112
+ - _includes/vendors/lineicons-v5.0/github.svg
113
+ - _includes/vendors/lineicons-v5.0/globe-1.svg
114
+ - _includes/vendors/lineicons-v5.0/instagram.svg
115
+ - _includes/vendors/lineicons-v5.0/linkedin.svg
116
+ - _includes/vendors/lineicons-v5.0/medium-alt.svg
117
+ - _includes/vendors/lineicons-v5.0/pinterest.svg
118
+ - _includes/vendors/lineicons-v5.0/telegram.svg
119
+ - _includes/vendors/lineicons-v5.0/whatsapp.svg
120
+ - _includes/vendors/lineicons-v5.0/x.svg
121
+ - _includes/vendors/lineicons-v5.0/youtube.svg
34
122
  - _layouts/default.html
35
- - _layouts/page.html
36
- - _layouts/post.html
123
+ - _layouts/profile.html
124
+ - _layouts/resume-ar.html
125
+ - _layouts/resume-en.html
126
+ - _sass/_all-pages.scss
127
+ - _sass/_base.scss
128
+ - _sass/_layout.scss
129
+ - _sass/_mixins.scss
130
+ - _sass/_normalize.scss
131
+ - _sass/_profile.scss
132
+ - _sass/_resume-rtl.scss
133
+ - _sass/_resume.scss
134
+ - _sass/_variables.scss
135
+ - assets/css/cv-ar.scss
136
+ - assets/css/cv.scss
137
+ - assets/css/main.scss
138
+ - assets/favicon/resume/about.txt
139
+ - assets/favicon/resume/android-chrome-192x192.png
140
+ - assets/favicon/resume/android-chrome-512x512.png
141
+ - assets/favicon/resume/apple-touch-icon.png
142
+ - assets/favicon/resume/favicon-16x16.png
143
+ - assets/favicon/resume/favicon-32x32.png
144
+ - assets/favicon/resume/favicon.ico
145
+ - assets/favicon/resume/site.webmanifest
37
146
  homepage: https://www.mutahr.me/bilingual-jekyll-resume-theme
38
147
  licenses:
39
148
  - MIT
40
- metadata: {}
149
+ metadata:
150
+ bug_tracker_uri: https://github.com/kmutahar/bilingual-jekyll-resume-theme/issues
151
+ changelog_uri: https://github.com/kmutahar/bilingual-jekyll-resume-theme/blob/master/CHANGELOG.md
152
+ documentation_uri: https://github.com/kmutahar/bilingual-jekyll-resume-theme#readme
153
+ homepage_uri: https://www.mutahr.me/bilingual-jekyll-resume-theme
154
+ source_code_uri: https://github.com/kmutahar/bilingual-jekyll-resume-theme/
155
+ post_install_message:
41
156
  rdoc_options: []
42
157
  require_paths:
43
158
  - lib
@@ -52,7 +167,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
52
167
  - !ruby/object:Gem::Version
53
168
  version: '0'
54
169
  requirements: []
55
- rubygems_version: 3.6.9
170
+ rubygems_version: 3.4.20
171
+ signing_key:
56
172
  specification_version: 4
57
173
  summary: A flexible Jekyll theme for creating a clean, data-driven, bilingual (English
58
174
  & Arabic) resume.
data/_layouts/post.html DELETED
@@ -1,5 +0,0 @@
1
- ---
2
- layout: default
3
- ---
4
-
5
- {{ content }}
File without changes