bilingual-jekyll-resume-theme 0.6.1 → 0.8.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.

Potentially problematic release.


This version of bilingual-jekyll-resume-theme might be problematic. Click here for more details.

Files changed (84) hide show
  1. checksums.yaml +4 -4
  2. data/403.html +6 -0
  3. data/404.html +6 -0
  4. data/500.html +6 -0
  5. data/CHANGELOG.md +68 -0
  6. data/README.md +6 -3
  7. data/_data/error_pages.yml +33 -0
  8. data/_includes/analytics-body.html +0 -16
  9. data/_includes/analytics-head.html +10 -4
  10. data/_includes/ar-date.html +23 -17
  11. data/_includes/avatar.html +50 -0
  12. data/_includes/print-social-links.html +18 -14
  13. data/_includes/profile-head.html +2 -0
  14. data/_includes/resume-head-ar.html +8 -8
  15. data/_includes/resume-head-en.html +0 -5
  16. data/_includes/resume-section-ar.html +259 -67
  17. data/_includes/resume-section-en.html +257 -64
  18. data/_includes/shared-head.html +8 -4
  19. data/_includes/social-links.html +15 -43
  20. data/_includes/vendors/lineicons-v5.0/dev.svg +1 -1
  21. data/_includes/vendors/lineicons-v5.0/dribbble-symbol.svg +1 -1
  22. data/_includes/vendors/lineicons-v5.0/facebook.svg +1 -1
  23. data/_includes/vendors/lineicons-v5.0/flickr.svg +1 -1
  24. data/_includes/vendors/lineicons-v5.0/github.svg +1 -1
  25. data/_includes/vendors/lineicons-v5.0/globe-1.svg +1 -1
  26. data/_includes/vendors/lineicons-v5.0/instagram.svg +1 -1
  27. data/_includes/vendors/lineicons-v5.0/linkedin.svg +1 -1
  28. data/_includes/vendors/lineicons-v5.0/medium-alt.svg +1 -1
  29. data/_includes/vendors/lineicons-v5.0/pinterest.svg +1 -1
  30. data/_includes/vendors/lineicons-v5.0/telegram.svg +1 -1
  31. data/_includes/vendors/lineicons-v5.0/whatsapp.svg +1 -1
  32. data/_includes/vendors/lineicons-v5.0/x.svg +1 -1
  33. data/_includes/vendors/lineicons-v5.0/youtube.svg +1 -1
  34. data/_layouts/default.html +18 -3
  35. data/_layouts/error.html +79 -0
  36. data/_layouts/profile.html +56 -4
  37. data/_layouts/resume-ar.html +39 -13
  38. data/_layouts/resume-en.html +38 -12
  39. data/_plugins/error_pages_generator.rb +45 -0
  40. data/_sass/_all-pages.scss +349 -4
  41. data/_sass/_base.scss +14 -0
  42. data/_sass/_dark-mode.scss +5 -4
  43. data/_sass/_profile-page.scss +162 -0
  44. data/_sass/_profile.scss +2 -80
  45. data/_sass/_resume-rtl.scss +14 -0
  46. data/_sass/_resume.scss +29 -5
  47. data/assets/css/main.scss +1 -1
  48. data/assets/css/profile.scss +6 -0
  49. data/docs/COMPLETED_AUDIT.md +697 -0
  50. data/docs/CONFIG_GUIDE.md +394 -244
  51. data/docs/DATA_GUIDE.md +387 -462
  52. data/docs/INCLUDES_GUIDE.md +248 -413
  53. data/docs/LAYOUTS_GUIDE.md +215 -273
  54. data/docs/PROJECT_OVERVIEW.md +130 -69
  55. data/docs/SASS_GUIDE.md +173 -248
  56. data/docs/_data/_config.sample.yml +134 -81
  57. data/docs/_data/ar/associations.yml +30 -21
  58. data/docs/_data/ar/certifications.yml +47 -62
  59. data/docs/_data/ar/courses.yml +41 -33
  60. data/docs/_data/ar/education.yml +41 -39
  61. data/docs/_data/ar/experience.yml +56 -40
  62. data/docs/_data/ar/header.yml +6 -5
  63. data/docs/_data/ar/interests.yml +9 -7
  64. data/docs/_data/ar/languages.yml +21 -21
  65. data/docs/_data/ar/links.yml +17 -10
  66. data/docs/_data/ar/projects.yml +31 -22
  67. data/docs/_data/ar/recognitions.yml +28 -17
  68. data/docs/_data/ar/skills.yml +20 -9
  69. data/docs/_data/ar/volunteering.yml +47 -31
  70. data/docs/_data/en/associations.yml +31 -22
  71. data/docs/_data/en/certifications.yml +48 -63
  72. data/docs/_data/en/courses.yml +42 -34
  73. data/docs/_data/en/education.yml +42 -40
  74. data/docs/_data/en/experience.yml +57 -41
  75. data/docs/_data/en/header.yml +3 -2
  76. data/docs/_data/en/interests.yml +10 -8
  77. data/docs/_data/en/languages.yml +22 -22
  78. data/docs/_data/en/links.yml +18 -11
  79. data/docs/_data/en/projects.yml +32 -23
  80. data/docs/_data/en/recognitions.yml +29 -18
  81. data/docs/_data/en/skills.yml +21 -10
  82. data/docs/_data/en/volunteering.yml +48 -32
  83. data/lib/bilingual-jekyll-resume-theme.rb +4 -0
  84. metadata +14 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2c4641a87c37aad6da209b62c6f3cc936f925b2e47ff80ca6c17494e0b9db45c
4
- data.tar.gz: fea9464880a308585d899f9a9ff15a044b157376dc8009ddf4dbfc07b1e3c8aa
3
+ metadata.gz: bc4ee64a555f7e1df4e80b33d565d82142dd29f56b23204ad071fa1c970e2388
4
+ data.tar.gz: e7eb24a6509d3e10f7fd167fec77533483d8bb8e47b4c998ef6576e92291fc96
5
5
  SHA512:
6
- metadata.gz: dbca31b2e6d18feb8ea2150969044d4d8aa97abb46db9be501fe4e50bee431521eabfd903adce3c80e23ed93cec7d474524910520011a8f459ec6779434cc463
7
- data.tar.gz: ad95ce1f97fff81dc69b73c939ea74dd2df3c6916a98b33141173bc840241c83c6f5d72fb4acd1b8c35f0c6acf8703ebfdd7be8af67678205112cc91ed83034a
6
+ metadata.gz: c56b2e9e48c86c9da3d05f66767818277d4177eb0751c1b5906a0cf68299bf2f693e67e935bda825cb5137bf36c35e21a6ad14261994fb801a4e92be58788c97
7
+ data.tar.gz: 359e5532bf3e557bcbfeaf2d5ac40b767768dbda6af88400b67e8163c38adc27d5fe8e6c3ddd1290685bc1199c006f16225096e2b64c06bfe04a2337f1dbefba
data/403.html ADDED
@@ -0,0 +1,6 @@
1
+ ---
2
+ layout: error
3
+ code: "403"
4
+ title: "403 - Access Forbidden / الوصول محظور"
5
+ permalink: /403.html
6
+ ---
data/404.html ADDED
@@ -0,0 +1,6 @@
1
+ ---
2
+ layout: error
3
+ code: "404"
4
+ title: "404 - Page Not Found / الصفحة غير موجودة"
5
+ permalink: /404.html
6
+ ---
data/500.html ADDED
@@ -0,0 +1,6 @@
1
+ ---
2
+ layout: error
3
+ code: "500"
4
+ title: "500 - Internal Server Error / خطأ داخلي في الخادم"
5
+ permalink: /500.html
6
+ ---
data/CHANGELOG.md CHANGED
@@ -4,6 +4,72 @@ All notable changes to this project will be documented in this file.
4
4
 
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+ ## [0.8.0] - 2026-09-19
8
+
9
+ ### Added
10
+ * Add global .sr-only utility class for accessible icons ([`f25fcb6`](https://github.com/kmutahar/bilingual-jekyll-resume-theme/commit/f25fcb618c399a54039b00cb56e1d09724592516))
11
+
12
+ * Add error pages generator plugin and gem autoloading ([`9238b5a`](https://github.com/kmutahar/bilingual-jekyll-resume-theme/commit/9238b5ace273c9c64de5c90bbd8a19fe6ac5a27b))
13
+
14
+ * Add .agents/ to ignore list ([`568b874`](https://github.com/kmutahar/bilingual-jekyll-resume-theme/commit/568b874c290ae1673fe6c3e44b97a4c0c8e0b553))
15
+
16
+ * Add configurable avatar URL, bilingual alt text, and reusable include ([`a17cc60`](https://github.com/kmutahar/bilingual-jekyll-resume-theme/commit/a17cc603a3633bb5dc67589bcc01ce7ef886d88c))
17
+
18
+
19
+ ### Changed
20
+ * Improve accessibility, icon contrast, mobile responsiveness, and RTL typography ([`add2625`](https://github.com/kmutahar/bilingual-jekyll-resume-theme/commit/add2625599027eb1f88ca6e1ec66c3bf2b334757))
21
+
22
+ * Populate comprehensive bilingual example data across all sections ([`1555d41`](https://github.com/kmutahar/bilingual-jekyll-resume-theme/commit/1555d41efef50cd9010d4bf08223fb81060bc8f3))
23
+
24
+ * Standardize recognition section toggle to plural with fallback ([`dccee09`](https://github.com/kmutahar/bilingual-jekyll-resume-theme/commit/dccee09c65e95a140281633342a09d58b236b888))
25
+
26
+ * Modernize all guides and master sample configuration ([`08f8823`](https://github.com/kmutahar/bilingual-jekyll-resume-theme/commit/08f8823f91984891e55dff0dcc8488601c185aea))
27
+
28
+ * Establish master feature roadmap and archive completed audit ([`f6d28a3`](https://github.com/kmutahar/bilingual-jekyll-resume-theme/commit/f6d28a354115fa6a0ce5e29250cd1b40be0c4dfd))
29
+
30
+ * Establish AGENTS.md master manual and refactor pointers ([`24ecf7e`](https://github.com/kmutahar/bilingual-jekyll-resume-theme/commit/24ecf7e751eebff79ac9e805d7a7de8696c52b43))
31
+
32
+
33
+ ### Fixed
34
+ * Render section detail bullets conditionally with proper spacing ([`e4564cc`](https://github.com/kmutahar/bilingual-jekyll-resume-theme/commit/e4564cc43b5e5cec31ed704918cddbc124ec76ca))
35
+
36
+ * Enhance error layout usability, add sr-only styles, and maintain LTR/RTL parity ([`18a9b5b`](https://github.com/kmutahar/bilingual-jekyll-resume-theme/commit/18a9b5bbd18c52456a5a0dfd958d09187686a003))
37
+
38
+ * Restore standalone profile layout and eliminate icon underline artifacts ([`5bed5dd`](https://github.com/kmutahar/bilingual-jekyll-resume-theme/commit/5bed5ddc9b59bbfcb820df7793c2098ee0762d69))
39
+
40
+ * Resolve Liquid truthiness, unclosed tags, and Arabic date parsing ([`90a0750`](https://github.com/kmutahar/bilingual-jekyll-resume-theme/commit/90a075077c812bc56d31ac9622abdf2f3278dc98))
41
+
42
+ ## [0.7.0] - 2026-09-12
43
+
44
+ ### Added
45
+ * Add bilingual error suite (404, 403, 500) and reusable layout ([`4eab127`](https://github.com/kmutahar/bilingual-jekyll-resume-theme/commit/4eab127d8cc3a4cedccca89943482fd3a067ee14))
46
+
47
+
48
+ ### Changed
49
+ * Enhance README and DATA_GUIDE with dark mode, typography, and error page details ([`8284ee7`](https://github.com/kmutahar/bilingual-jekyll-resume-theme/commit/8284ee7c0ffe351b823ad8ea0854b8e6d6afecd5))
50
+
51
+ * Implement universal dark mode and isolate profile layout styles ([`853a9ac`](https://github.com/kmutahar/bilingual-jekyll-resume-theme/commit/853a9ac1eaf11aadec62f198f6b7e9cdb2d3c209))
52
+
53
+ * Update analytics configuration to support direct measurement ID for Google Analytics 4 ([`dff8c3d`](https://github.com/kmutahar/bilingual-jekyll-resume-theme/commit/dff8c3d3ce3bfebf2ebb37d3ada348ed1a603f3c))
54
+
55
+ * Integrate Google Tag Manager analytics snippet into resume layouts ([`54f5c96`](https://github.com/kmutahar/bilingual-jekyll-resume-theme/commit/54f5c9676766c2ee04cd44a9b64b1a3472ca4d70))
56
+
57
+ * Enhance contact information handling and improve schema markup in resume layouts ([`caf726c`](https://github.com/kmutahar/bilingual-jekyll-resume-theme/commit/caf726c557e8289c991b6cb15acc3cc54504867e))
58
+
59
+
60
+ ### Fixed
61
+ * Upgrade Arabic font loading and isolate print social links ([`ca6898b`](https://github.com/kmutahar/bilingual-jekyll-resume-theme/commit/ca6898b883a5264dbee9088c849bfd6a00fdf079))
62
+
63
+ * Scope global svg rules and add WCAG 2.1 AA accessible social links ([`d44dcb1`](https://github.com/kmutahar/bilingual-jekyll-resume-theme/commit/d44dcb15360ddd3c6e5eb42bc973564f882ee177))
64
+
65
+ * Centralize modern favicon suite and resolve subdirectory 404s ([`943d565`](https://github.com/kmutahar/bilingual-jekyll-resume-theme/commit/943d5653d5cbfa5f6189b4975a74f2e981c6ceb1))
66
+
67
+ * Add 'dir="ltr"' attribute to URLs for better text direction handling in resume sections ([`73da095`](https://github.com/kmutahar/bilingual-jekyll-resume-theme/commit/73da0959f2de2b7a6585d2c1c03fc59a4fa55f65))
68
+
69
+
70
+ ### Removed
71
+ * Remove conflicting duplicate canonical tag from shared head ([`8f8b22b`](https://github.com/kmutahar/bilingual-jekyll-resume-theme/commit/8f8b22bfdea4e40371366db47bdddd98d412631a))
72
+
7
73
  ## [0.6.1] - 2026-08-21
8
74
 
9
75
  ### Changed
@@ -163,6 +229,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
163
229
 
164
230
  * Initial commit (New Theme Template) ([`00af662`](https://github.com/kmutahar/bilingual-jekyll-resume-theme/commit/00af6628dfec7aefe0ef7d7083bf98c9713a5ffd))
165
231
 
232
+ [0.8.0]: https://github.com/kmutahar/bilingual-jekyll-resume-theme/compare/v0.7.0...v0.8.0
233
+ [0.7.0]: https://github.com/kmutahar/bilingual-jekyll-resume-theme/compare/v0.6.1...v0.7.0
166
234
  [0.6.0]: https://github.com/kmutahar/bilingual-jekyll-resume-theme/compare/v0.5.2...v0.6.0
167
235
  [0.5.2]: https://github.com/kmutahar/bilingual-jekyll-resume-theme/compare/v0.5.1...v0.5.2
168
236
  [0.5.1]: https://github.com/kmutahar/bilingual-jekyll-resume-theme/compare/v0.5.0...v0.5.1
data/README.md CHANGED
@@ -7,11 +7,14 @@ Inspired by and originally forked from [Joel Glovier’s resume template](https:
7
7
 
8
8
  ## Features
9
9
 
10
- - **Bilingual support**: Separate layouts for English (`resume-en.html`) and Arabic (`resume-ar.html`) with full RTL support
10
+ - **Bilingual support**: Separate layouts for English (`resume-en.html`) and Arabic (`resume-ar.html`) with full RTL support and Cairo typography
11
+ - **Dark mode**: System preference detection (`prefers-color-scheme`) with optional interactive toggle, `localStorage` persistence, and zero-FOUC inline script
11
12
  - **Data-driven architecture**: All resume content stored in YAML files, supporting multiple data paths and versioning
12
13
  - **12 resume sections**: Experience, Education, Certifications, Courses, Volunteering, Projects, Skills, Recognition, Associations, Languages, Links, Interests
13
- - **Print-friendly**: Optimized for PDF generation and printing
14
- - **SEO ready**: Built-in support for multilingual SEO, sitemap, and feed generation
14
+ - **WCAG 2.1 AA Accessible**: Full screen reader and keyboard accessibility with `.sr-only` labels and declarative aria attributes
15
+ - **Modern favicon suite**: High-resolution favicons (Apple touch icon, 32x32, 16x16, webmanifest) with subpath-safe URLs and `_config.yml` override support
16
+ - **Print-friendly**: Optimized for PDF generation and printing with bidirectional text isolation (`dir="ltr"`) for URLs
17
+ - **SEO ready**: Built-in support for multilingual SEO, standardized canonical tags via `jekyll-seo-tag`, sitemaps, and feeds
15
18
  - **Arabic month support**: Arabic date formatting included out of the box (`_data/ar/months.yml`)
16
19
 
17
20
  ## Quick Start
@@ -0,0 +1,33 @@
1
+ # Bilingual Error Page Definitions
2
+ # bilingual-jekyll-resume-theme
3
+ # Centralized English and Arabic content for HTTP error pages.
4
+
5
+ labels:
6
+ home: "Home / الرئيسية"
7
+ resume_en: "Resume (EN)"
8
+ resume_ar: "السيرة الذاتية (عربي)"
9
+ reload: "Reload Page / إعادة تحميل الصفحة"
10
+
11
+ "404":
12
+ title_en: "Page Not Found"
13
+ desc_en: "The page you are looking for might have been removed, had its name changed, or is temporarily unavailable."
14
+ title_ar: "الصفحة غير موجودة"
15
+ desc_ar: "ربما تمت إزالة الصفحة التي تبحث عنها، أو تم تغيير اسمها، أو أنها غير متوفرة مؤقتاً."
16
+
17
+ "403":
18
+ title_en: "Access Forbidden"
19
+ desc_en: "You do not have permission to access the requested resource or directory."
20
+ title_ar: "الوصول محظور"
21
+ desc_ar: "ليس لديك الصلاحية اللازمة للوصول إلى هذا المورد أو الدليل المطلوب."
22
+
23
+ "500":
24
+ title_en: "Internal Server Error"
25
+ desc_en: "The server encountered an unexpected condition that prevented it from fulfilling the request. Please try again later."
26
+ title_ar: "خطأ داخلي في الخادم"
27
+ desc_ar: "واجه الخادم ظرفاً غير متوقع منعه من إكمال الطلب. يرجى المحاولة مرة أخرى لاحقاً."
28
+
29
+ "503":
30
+ title_en: "Service Unavailable"
31
+ desc_en: "The server is currently unable to handle the request due to maintenance or capacity overload."
32
+ title_ar: "الخدمة غير متوفرة مؤقتاً"
33
+ desc_ar: "الخادم غير قادر على معالجة الطلب حالياً بسبب الصيانة أو زيادة الحمل."
@@ -1,5 +1,4 @@
1
1
  {%- if site.analytics.gtm -%}
2
-
3
2
  <!-- Google Tag Manager (noscript) -->
4
3
  <noscript>
5
4
  <iframe
@@ -10,19 +9,4 @@
10
9
  </iframe>
11
10
  </noscript>
12
11
  <!-- End Google Tag Manager (noscript) -->
13
-
14
- {%- else -%}
15
-
16
- {%- if site.analytics.ga -%}
17
-
18
- {%- comment -%}
19
- No Google Analytics gtag.js exists for body so this section will return a blank.
20
- {%- endcomment -%}
21
-
22
- {%- endif -%}
23
-
24
- {%- else -%}
25
-
26
- <!-- No Analytics Added -->
27
-
28
12
  {%- endif -%}
@@ -16,15 +16,21 @@
16
16
  f.parentNode.insertBefore(j, f);
17
17
  })(window, document, 'script', 'dataLayer', '{{ site.analytics.gtm }}');
18
18
  </script>
19
-
20
19
  <!-- End Google Tag Manager -->
21
20
 
22
21
  {%- else -%}
23
22
 
24
- {%- if site.analytics.ga -%}
23
+ {%- assign ga_id = nil -%}
24
+ {%- if site.analytics.gtag and site.analytics.gtag != "" -%}
25
+ {%- assign ga_id = site.analytics.gtag -%}
26
+ {%- elsif site.analytics.ga and site.analytics.ga != true and site.analytics.ga != "" -%}
27
+ {%- assign ga_id = site.analytics.ga -%}
28
+ {%- endif -%}
29
+
30
+ {%- if ga_id -%}
25
31
 
26
32
  <!-- Global site tag (gtag.js) - Google Analytics -->
27
- <script async src="https://www.googletagmanager.com/gtag/js?id={{ site.analytics.gtag }}"></script>
33
+ <script async src="https://www.googletagmanager.com/gtag/js?id={{ ga_id }}"></script>
28
34
  <script>
29
35
  window.dataLayer = window.dataLayer || [];
30
36
 
@@ -33,7 +39,7 @@
33
39
  }
34
40
 
35
41
  gtag('js', new Date());
36
- gtag('config', '{{ site.analytics.gtag }}');
42
+ gtag('config', '{{ ga_id }}');
37
43
  </script>
38
44
 
39
45
  {%- endif -%}
@@ -1,4 +1,4 @@
1
- {% comment %}
1
+ {%- comment -%}
2
2
  Arabic Date Formatter Include
3
3
  This include file formats a date in Arabic format by looking up the Arabic month name
4
4
  from the site data and formatting it according to the specified style.
@@ -10,32 +10,38 @@
10
10
  Parameters:
11
11
  - date: The date to format (required)
12
12
  - style: "MDY" for "Month Day, Year" format, or any other value for "Month Year" format (optional)
13
- {% endcomment %}
13
+ {%- endcomment -%}
14
14
 
15
- {% comment %}
15
+ {%- comment -%}
16
16
  Extract date components from the provided date using Jekyll date filters:
17
17
  - "%-m": Month as a number (1-12) without leading zeros
18
18
  - "%-d": Day as a number (1-31) without leading zeros
19
19
  - "%Y": Year as a 4-digit number
20
- {% endcomment %}
21
- {% assign m = include.date | date: "%-m" %}
22
- {% assign d = include.date | date: "%-d" %}
23
- {% assign y = include.date | date: "%Y" %}
20
+ {%- endcomment -%}
21
+ {%- if include.date and include.date != "" -%}
22
+ {%- assign m = include.date | date: "%-m" -%}
23
+ {%- assign d = include.date | date: "%-d" -%}
24
+ {%- assign y = include.date | date: "%Y" -%}
24
25
 
25
- {% comment %}
26
+ {%- comment -%}
26
27
  Look up the Arabic month name from the site data file:
27
28
  - site.data.ar.months is a YAML file containing month names in Arabic
28
29
  - The month number (m) is used as the key to retrieve the corresponding Arabic month name
29
- {% endcomment %}
30
- {% assign month_name = site.data.ar.months[m] %}
30
+ {%- endcomment -%}
31
+ {%- assign month_name = site.data.ar.months[m] -%}
31
32
 
32
- {% comment %}
33
+ {%- comment -%}
33
34
  Format the date output based on the style parameter:
34
35
  - If style is "MDY": Output "Month Day, Year" (e.g., "يناير 15, 2024")
35
36
  - Otherwise: Output "Month Year" (e.g., "يناير 2024")
36
- {% endcomment %}
37
- {% if include.style == "MDY" %}
38
- {{ month_name }} {{ d }}, {{ y }}
39
- {% else %}
40
- {{ month_name }} {{ y }}
41
- {% endif %}
37
+ {%- endcomment -%}
38
+ {%- if month_name -%}
39
+ {%- if include.style == "MDY" -%}
40
+ {{ month_name }} {{ d }}, {{ y }}
41
+ {%- else -%}
42
+ {{ month_name }} {{ y }}
43
+ {%- endif -%}
44
+ {%- else -%}
45
+ {{ include.date }}
46
+ {%- endif -%}
47
+ {%- endif -%}
@@ -0,0 +1,50 @@
1
+ {%- comment -%}
2
+ Include: Reusable Avatar Component
3
+ - Purpose: Render accessible, configurable profile picture.
4
+ - Parameters:
5
+ - lang: Optional language code ('en' | 'ar'). Defaults to page.lang or site.lang or 'en'.
6
+ - link: Optional boolean to override link rendering.
7
+ - class: Optional extra CSS classes.
8
+ {%- endcomment -%}
9
+
10
+ {% assign current_lang = include.lang | default: page.lang | default: site.lang | default: 'en' %}
11
+
12
+ {% assign avatar_raw = site.avatar_url | default: site.avatar | default: '/assets/images/Profile-min.jpg' %}
13
+ {% if avatar_raw contains "://" %}
14
+ {% assign avatar_src = avatar_raw %}
15
+ {% else %}
16
+ {% assign avatar_src = avatar_raw | relative_url %}
17
+ {% endif %}
18
+
19
+ {% if current_lang == 'ar' %}
20
+ {% capture name_ar %}{{ site.name_ar.first }}{% if site.name_ar.middle %} {{ site.name_ar.middle }}{% endif %}{% if site.name_ar.last %} {{ site.name_ar.last }}{% endif %}{% endcapture %}
21
+ {% assign name_ar = name_ar | strip %}
22
+ {% assign avatar_alt = site.avatar_alt_ar | default: site.avatar_alt | default: name_ar | default: 'الصورة الشخصية' %}
23
+ {% assign link_title = site.title | default: 'الصفحة الرئيسية' %}
24
+ {% else %}
25
+ {% capture name_en %}{{ site.name.first }}{% if site.name.middle %} {{ site.name.middle }}{% endif %}{% if site.name.last %} {{ site.name.last }}{% endif %}{% endcapture %}
26
+ {% assign name_en = name_en | strip %}
27
+ {% assign avatar_alt = site.avatar_alt_en | default: site.avatar_alt | default: name_en | default: 'Profile photo' %}
28
+ {% assign link_title = site.title | default: 'Homepage' %}
29
+ {% endif %}
30
+
31
+ {% assign render_link = true %}
32
+ {% if site.avatar_link == false or include.link == false %}
33
+ {% assign render_link = false %}
34
+ {% endif %}
35
+
36
+ {% if render_link %}
37
+ {% assign avatar_link_raw = site.avatar_link | default: '/' %}
38
+ {% if avatar_link_raw contains "://" %}
39
+ {% assign avatar_href = avatar_link_raw %}
40
+ {% else %}
41
+ {% assign avatar_href = avatar_link_raw | relative_url %}
42
+ {% endif %}
43
+ {% assign avatar_target = site.avatar_link_target | default: '_self' %}
44
+
45
+ <a href="{{ avatar_href }}" title="{{ link_title }}" class="avatar-link no-print"{% if avatar_target != '_self' %} target="{{ avatar_target }}" rel="noopener"{% endif %}>
46
+ <img src="{{ avatar_src }}" alt="{{ avatar_alt }}" class="avatar no-print{% if include.class %} {{ include.class }}{% endif %}" itemprop="image">
47
+ </a>
48
+ {% else %}
49
+ <img src="{{ avatar_src }}" alt="{{ avatar_alt }}" class="avatar no-print{% if include.class %} {{ include.class }}{% endif %}" itemprop="image">
50
+ {% endif %}
@@ -1,75 +1,79 @@
1
1
  <!-- and guess where these are defined? Yup, you guessed it: the _config.yml file -->
2
2
  {% if site.resume_print_social_links %}
3
+ {% assign is_ar = false %}
4
+ {% if page.layout == "resume-ar" or page.lang == "ar" or page.language == "ar" or layout.lang == "ar" %}
5
+ {% assign is_ar = true %}
6
+ {% endif %}
3
7
  <ul>
4
8
 
5
9
  {% if site.social_links.github %}
6
10
  <!-- GitHub link -->
7
- <li><strong>Github</strong>: {{ site.social_links.github }}</li>
11
+ <li><strong>{% if is_ar %}جيت هاب (GitHub){% else %}GitHub{% endif %}</strong>: <span dir="ltr">{{ site.social_links.github }}</span></li>
8
12
  {% endif %}
9
13
 
10
14
  {% if site.social_links.twitter %}
11
15
  <!-- Twitter link -->
12
- <li><strong>Twitter</strong>: {{ site.social_links.twitter }}</li>
16
+ <li><strong>{% if is_ar %}إكس / تويتر (X / Twitter){% else %}X (Twitter){% endif %}</strong>: <span dir="ltr">{{ site.social_links.twitter }}</span></li>
13
17
  {% endif %}
14
18
 
15
19
  {% if site.social_links.medium %}
16
20
  <!-- Medium link -->
17
- <li><strong>Medium</strong>: {{ site.social_links.medium }}</li>
21
+ <li><strong>{% if is_ar %}ميديام (Medium){% else %}Medium{% endif %}</strong>: <span dir="ltr">{{ site.social_links.medium }}</span></li>
18
22
  {% endif %}
19
23
 
20
24
  {% if site.social_links.dribbble %}
21
25
  <!-- Dribbble link -->
22
- <li><strong>Dribbble</strong>: {{ site.social_links.dribbble }}</li>
26
+ <li><strong>{% if is_ar %}دريبل (Dribbble){% else %}Dribbble{% endif %}</strong>: <span dir="ltr">{{ site.social_links.dribbble }}</span></li>
23
27
  {% endif %}
24
28
 
25
29
  {% if site.social_links.facebook %}
26
30
  <!-- Facebook link -->
27
- <li><strong>Facebook</strong>: {{ site.social_links.facebook }}</li>
31
+ <li><strong>{% if is_ar %}فيسبوك (Facebook){% else %}Facebook{% endif %}</strong>: <span dir="ltr">{{ site.social_links.facebook }}</span></li>
28
32
  {% endif %}
29
33
 
30
34
  {% if site.social_links.linkedin %}
31
35
  <!-- LinkedIn link -->
32
- <li><strong>LinkedIn</strong>: {{ site.social_links.linkedin }}</li>
36
+ <li><strong>{% if is_ar %}لينكد إن (LinkedIn){% else %}LinkedIn{% endif %}</strong>: <span dir="ltr">{{ site.social_links.linkedin }}</span></li>
33
37
  {% endif %}
34
38
 
35
39
  {% if site.social_links.instagram %}
36
40
  <!-- Instagram link -->
37
- <li><strong>Instagram</strong>: {{ site.social_links.instagram }}</li>
41
+ <li><strong>{% if is_ar %}إنستغرام (Instagram){% else %}Instagram{% endif %}</strong>: <span dir="ltr">{{ site.social_links.instagram }}</span></li>
38
42
  {% endif %}
39
43
 
40
44
  {% if site.social_links.website %}
41
45
  <!-- Website link -->
42
- <li><strong>Website</strong>: {{ site.social_links.website }}</li>
46
+ <li><strong>{% if is_ar %}الموقع الشخصي (Website){% else %}Website{% endif %}</strong>: <span dir="ltr">{{ site.social_links.website }}</span></li>
43
47
  {% endif %}
44
48
 
45
49
  {% if site.social_links.whatsapp %}
46
50
  <!-- Whatsapp link -->
47
- <li><strong>Whatsapp</strong>: {{ site.social_links.whatsapp }}</li>
51
+ <li><strong>{% if is_ar %}واتساب (WhatsApp){% else %}WhatsApp{% endif %}</strong>: <span dir="ltr">{{ site.social_links.whatsapp }}</span></li>
48
52
  {% endif %}
49
53
 
50
54
  {% if site.social_links.devto %}
51
55
  <!-- Devto link -->
52
- <li><strong>Devto</strong>: {{ site.social_links.devto }}</li>
56
+ <li><strong>{% if is_ar %}ديف تو (Dev.to){% else %}Dev.to{% endif %}</strong>: <span dir="ltr">{{ site.social_links.devto }}</span></li>
53
57
  {% endif %}
54
58
 
55
59
  {% if site.social_links.flickr %}
56
60
  <!-- Flickr link -->
57
- <li><strong>Flickr</strong>: {{ site.social_links.flickr }}</li>
61
+ <li><strong>{% if is_ar %}فليكر (Flickr){% else %}Flickr{% endif %}</strong>: <span dir="ltr">{{ site.social_links.flickr }}</span></li>
58
62
  {% endif %}
59
63
 
60
64
  {% if site.social_links.pinterest %}
61
65
  <!-- Pinterest link -->
62
- <li><strong>Pinterest</strong>: {{ site.social_links.pinterest }}</li>
66
+ <li><strong>{% if is_ar %}بينتيريست (Pinterest){% else %}Pinterest{% endif %}</strong>: <span dir="ltr">{{ site.social_links.pinterest }}</span></li>
63
67
  {% endif %}
64
68
 
65
69
  {% if site.social_links.telegram %}
66
70
  <!-- Telegram link -->
67
- <li><strong>Telegram</strong>: {{ site.social_links.telegram }}</li>
71
+ <li><strong>{% if is_ar %}تيليجرام (Telegram){% else %}Telegram{% endif %}</strong>: <span dir="ltr">{{ site.social_links.telegram }}</span></li>
68
72
  {% endif %}
69
73
 
70
74
  {% if site.social_links.youtube %}
71
75
  <!-- Youtube link -->
72
- <li><strong>Youtube</strong>: {{ site.social_links.youtube }}</li>
76
+ <li><strong>{% if is_ar %}يوتيوب (YouTube){% else %}YouTube{% endif %}</strong>: <span dir="ltr">{{ site.social_links.youtube }}</span></li>
73
77
  {% endif %}
74
78
 
75
79
  </ul>
@@ -0,0 +1,2 @@
1
+ <!-- Profile Stylesheet -->
2
+ <link rel="stylesheet" type="text/css" href="{{ 'assets/css/profile.css' | relative_url }}">
@@ -1,14 +1,14 @@
1
- {% if site.resume_theme == 'default' %}
2
- <!-- Arabic-friendly font (Cairo) -->
3
- <link href="https://fonts.googleapis.com/css2?family=Cairo:wght@300;400;700;900&display=swap" rel="stylesheet">
1
+ {% if site.font_ar_url %}
2
+ <!-- Custom Arabic Font Stylesheet -->
3
+ <link rel="stylesheet" href="{{ site.font_ar_url | relative_url }}">
4
+ {% elsif site.disable_google_fonts != true and site.resume_theme != 'no-custom-fonts' %}
5
+ <!-- Arabic-friendly font (Cairo) with preconnect for performance -->
6
+ <link rel="preconnect" href="https://fonts.googleapis.com">
7
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
8
+ <link href="https://fonts.googleapis.com/css2?family=Cairo:wght@300;400;600;700;900&display=swap" rel="stylesheet">
4
9
  {% endif %}
5
10
 
6
11
  <link rel="stylesheet" type="text/css" href="{{ 'assets/css/cv-ar.css' | relative_url }}">
7
12
 
8
- <!-- favicons generated by favicon.io -->
9
- <link rel="apple-touch-icon" sizes="180x180" href="{{ 'assets/favicon/resume/apple-touch-icon.png' | relative_url }}">
10
- <link rel="icon" type="image/png" sizes="32x32" href="{{ 'assets/favicon/resume/favicon-32x32.png' | relative_url }}">
11
- <link rel="icon" type="image/png" sizes="16x16" href="{{ 'assets/favicon/resume/favicon-16x16.png' | relative_url }}">
12
- <link rel="manifest" href="{{ 'assets/favicon/resume/site.webmanifest' | relative_url }}">
13
13
 
14
14
  {% include hreflang.html %}
@@ -4,10 +4,5 @@
4
4
 
5
5
  <link rel="stylesheet" type="text/css" href="{{ 'assets/css/cv.css' | relative_url }}">
6
6
 
7
- <!-- favicons generated by favicon.io -->
8
- <link rel="apple-touch-icon" sizes="180x180" href="{{ 'assets/favicon/resume/apple-touch-icon.png' | relative_url }}">
9
- <link rel="icon" type="image/png" sizes="32x32" href="{{ 'assets/favicon/resume/favicon-32x32.png' | relative_url }}">
10
- <link rel="icon" type="image/png" sizes="16x16" href="{{ 'assets/favicon/resume/favicon-16x16.png' | relative_url }}">
11
- <link rel="manifest" href="{{ 'assets/favicon/resume/site.webmanifest' | relative_url }}">
12
7
 
13
8
  {% include hreflang.html %}