jekyll-theme-resume 1.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.
Files changed (123) hide show
  1. checksums.yaml +7 -0
  2. data/403.html +6 -0
  3. data/404.html +6 -0
  4. data/500.html +6 -0
  5. data/CHANGELOG.md +498 -0
  6. data/CODE_OF_CONDUCT.md +92 -0
  7. data/LICENSE.txt +22 -0
  8. data/README.md +184 -0
  9. data/SECURITY.md +30 -0
  10. data/_config.sample.yml +329 -0
  11. data/_data/locales/ar.yml +85 -0
  12. data/_data/locales/de.yml +86 -0
  13. data/_data/locales/en.yml +84 -0
  14. data/_data/locales/es.yml +86 -0
  15. data/_data/locales/fr.yml +86 -0
  16. data/_data/locales/ur.yml +86 -0
  17. data/_data/social_networks.yml +83 -0
  18. data/_includes/analytics-body.html +12 -0
  19. data/_includes/analytics-head.html +36 -0
  20. data/_includes/avatar.html +84 -0
  21. data/_includes/dark-mode-toggle.html +202 -0
  22. data/_includes/data-loader.html +42 -0
  23. data/_includes/date-formatter.html +63 -0
  24. data/_includes/grouped-item-list.html +53 -0
  25. data/_includes/hreflang.html +58 -0
  26. data/_includes/language-switcher.html +72 -0
  27. data/_includes/print-social-links.html +23 -0
  28. data/_includes/resume-section.html +547 -0
  29. data/_includes/safe-url.html +21 -0
  30. data/_includes/shared-head.html +51 -0
  31. data/_includes/social-links.html +54 -0
  32. data/_includes/vendors/svg-icons/ATTRIBUTION.md +34 -0
  33. data/_includes/vendors/svg-icons/dev.svg +3 -0
  34. data/_includes/vendors/svg-icons/dribbble-symbol.svg +3 -0
  35. data/_includes/vendors/svg-icons/envelope.svg +4 -0
  36. data/_includes/vendors/svg-icons/facebook.svg +3 -0
  37. data/_includes/vendors/svg-icons/flickr.svg +4 -0
  38. data/_includes/vendors/svg-icons/github.svg +3 -0
  39. data/_includes/vendors/svg-icons/globe-1.svg +3 -0
  40. data/_includes/vendors/svg-icons/instagram.svg +4 -0
  41. data/_includes/vendors/svg-icons/linkedin.svg +3 -0
  42. data/_includes/vendors/svg-icons/medium.svg +3 -0
  43. data/_includes/vendors/svg-icons/phone.svg +13 -0
  44. data/_includes/vendors/svg-icons/pinterest.svg +3 -0
  45. data/_includes/vendors/svg-icons/postcard.svg +14 -0
  46. data/_includes/vendors/svg-icons/telegram.svg +3 -0
  47. data/_includes/vendors/svg-icons/whatsapp.svg +3 -0
  48. data/_includes/vendors/svg-icons/x.svg +3 -0
  49. data/_includes/vendors/svg-icons/youtube.svg +3 -0
  50. data/_layouts/default.html +65 -0
  51. data/_layouts/error.html +138 -0
  52. data/_layouts/profile.html +123 -0
  53. data/_layouts/resume.html +238 -0
  54. data/_plugins/error_pages_generator.rb +71 -0
  55. data/_plugins/json_resume_generator.rb +79 -0
  56. data/_plugins/resume_pages_generator.rb +71 -0
  57. data/_plugins/resume_validator.rb +40 -0
  58. data/_sass/_all-pages.scss +335 -0
  59. data/_sass/_base.scss +130 -0
  60. data/_sass/_dark-mode.scss +387 -0
  61. data/_sass/_layout.scss +116 -0
  62. data/_sass/_mixins.scss +136 -0
  63. data/_sass/_normalize.scss +379 -0
  64. data/_sass/_profile-page.scss +60 -0
  65. data/_sass/_resume-ltr.scss +436 -0
  66. data/_sass/_resume-rtl.scss +91 -0
  67. data/_sass/_variables.scss +45 -0
  68. data/assets/css/cv-ltr.scss +31 -0
  69. data/assets/css/cv-rtl.scss +36 -0
  70. data/assets/css/main.scss +8 -0
  71. data/assets/css/profile.scss +9 -0
  72. data/assets/favicon/resume/about.txt +6 -0
  73. data/assets/favicon/resume/android-chrome-192x192.png +0 -0
  74. data/assets/favicon/resume/android-chrome-512x512.png +0 -0
  75. data/assets/favicon/resume/apple-touch-icon.png +0 -0
  76. data/assets/favicon/resume/favicon-16x16.png +0 -0
  77. data/assets/favicon/resume/favicon-32x32.png +0 -0
  78. data/assets/favicon/resume/favicon.ico +0 -0
  79. data/assets/favicon/resume/site.webmanifest +1 -0
  80. data/bin/validate-resume +89 -0
  81. data/bin/verify +27 -0
  82. data/docs/README.md +89 -0
  83. data/docs/explanation/accessibility-decisions.md +27 -0
  84. data/docs/explanation/architecture.md +44 -0
  85. data/docs/explanation/dark-mode-approach.md +25 -0
  86. data/docs/explanation/data-driven-model.md +25 -0
  87. data/docs/explanation/multilingual-and-rtl-design.md +40 -0
  88. data/docs/how-to/add-a-language.md +57 -0
  89. data/docs/how-to/add-a-section.md +35 -0
  90. data/docs/how-to/add-a-social-platform.md +32 -0
  91. data/docs/how-to/add-a-test.md +34 -0
  92. data/docs/how-to/create-a-custom-layout.md +64 -0
  93. data/docs/how-to/enable-dark-mode.md +43 -0
  94. data/docs/how-to/link-translations-with-hreflang.md +25 -0
  95. data/docs/how-to/migrate-v0.9-to-v1.0.md +46 -0
  96. data/docs/how-to/override-locale-strings.md +51 -0
  97. data/docs/how-to/override-sass-partials.md +26 -0
  98. data/docs/how-to/proof-built-html.md +22 -0
  99. data/docs/how-to/publish-json-resume.md +38 -0
  100. data/docs/how-to/show-language-proficiency-in-header.md +13 -0
  101. data/docs/how-to/switch-resume-versions.md +42 -0
  102. data/docs/how-to/troubleshoot-builds.md +39 -0
  103. data/docs/how-to/validate-in-ci.md +38 -0
  104. data/docs/how-to/verify-accessibility.md +28 -0
  105. data/docs/reference/accessibility-coverage.md +39 -0
  106. data/docs/reference/config.md +378 -0
  107. data/docs/reference/data-schemas.md +529 -0
  108. data/docs/reference/glossary.md +39 -0
  109. data/docs/reference/includes.md +197 -0
  110. data/docs/reference/json-resume-fields.md +148 -0
  111. data/docs/reference/layouts.md +144 -0
  112. data/docs/reference/locale-keys.md +76 -0
  113. data/docs/reference/repository-map.md +83 -0
  114. data/docs/reference/sass-tokens.md +279 -0
  115. data/docs/reference/testing-suites.md +62 -0
  116. data/docs/reference/validator-cli.md +203 -0
  117. data/docs/tutorials/getting-started.md +173 -0
  118. data/lib/jekyll-theme-resume/json_resume_exporter.rb +334 -0
  119. data/lib/jekyll-theme-resume/resume_validator.rb +853 -0
  120. data/lib/jekyll-theme-resume/schemas/LICENSE.md +21 -0
  121. data/lib/jekyll-theme-resume/schemas/json_resume_v1.0.0.json +500 -0
  122. data/lib/jekyll-theme-resume.rb +21 -0
  123. metadata +371 -0
@@ -0,0 +1,86 @@
1
+ direction: "ltr"
2
+ font_family: ""
3
+ font_url: ""
4
+ line_height: 1.5
5
+ ui:
6
+ home: "Startseite"
7
+ skip_to_content: "Zum Hauptinhalt springen"
8
+ photo_alt: "Profilfoto"
9
+ present: "Heute"
10
+ date_of_birth: "Geburtsdatum:"
11
+ languages: "Sprachen:"
12
+ contact_me: "Kontaktieren Sie mich"
13
+ cv_button: "Lebenslauf"
14
+ not_looking_for_work: "Ich bin derzeit nicht auf Jobsuche."
15
+ social_links: "Soziale Links"
16
+ page_last_generated_on: "Diese Seite wurde zuletzt generiert am"
17
+ cv_last_generated_on: "Dieser Lebenslauf wurde zuletzt generiert am"
18
+ at: "um"
19
+ credential_id: "Zertifikats-ID:"
20
+ list_separator: ", "
21
+ dark_mode_toggle: "Zum Dunkelmodus wechseln"
22
+ language_switcher: "Sprachauswahl"
23
+ language_name: "Deutsch"
24
+ reload_page: "Seite neu laden"
25
+ section_titles:
26
+ experience: "Berufserfahrung"
27
+ education: "Ausbildung"
28
+ certifications: "Lizenzen & Zertifizierungen"
29
+ courses: "Kurse"
30
+ volunteering: "Ehrenamt"
31
+ projects: "Projekte"
32
+ skills: "Fähigkeiten"
33
+ recognitions: "Auszeichnungen"
34
+ associations: "Mitgliedschaften"
35
+ interests: "Interessen"
36
+ languages: "Sprachen"
37
+ links: "Weitere Links"
38
+ publications: "Veröffentlichungen"
39
+ references: "Referenzen"
40
+ social_labels:
41
+ email: "E-Mail"
42
+ github: "GitHub"
43
+ twitter: "X (Twitter)"
44
+ medium: "Medium"
45
+ dribbble: "Dribbble"
46
+ facebook: "Facebook"
47
+ linkedin: "LinkedIn"
48
+ instagram: "Instagram"
49
+ website: "Webseite"
50
+ whatsapp: "WhatsApp"
51
+ devto: "Dev.to"
52
+ flickr: "Flickr"
53
+ pinterest: "Pinterest"
54
+ telegram: "Telegram"
55
+ youtube: "YouTube"
56
+ error_pages:
57
+ "404":
58
+ title: "Seite Nicht Gefunden"
59
+ message: "Die gesuchte Seite wurde möglicherweise entfernt, umbenannt oder ist vorübergehend nicht verfügbar."
60
+ "403":
61
+ title: "Zugriff Verweigert"
62
+ message: "Sie haben keine Berechtigung, auf die angeforderte Ressource oder das Verzeichnis zuzugreifen."
63
+ "500":
64
+ title: "Interner Serverfehler"
65
+ message: "Der Server hat einen unerwarteten Zustand festgestellt, der die Bearbeitung der Anfrage verhindert hat. Bitte versuchen Sie es später erneut."
66
+ "503":
67
+ title: "Dienst Nicht Verfügbar"
68
+ message: "Der Server kann die Anfrage derzeit aufgrund von Wartungsarbeiten oder Überlastung nicht bearbeiten."
69
+ present_values:
70
+ - "present"
71
+ - "heute"
72
+ - "aktuell"
73
+ - "gegenwärtig"
74
+ months:
75
+ - "Januar"
76
+ - "Februar"
77
+ - "März"
78
+ - "April"
79
+ - "Mai"
80
+ - "Juni"
81
+ - "Juli"
82
+ - "August"
83
+ - "September"
84
+ - "Oktober"
85
+ - "November"
86
+ - "Dezember"
@@ -0,0 +1,84 @@
1
+ direction: "ltr"
2
+ font_family: ""
3
+ font_url: ""
4
+ line_height: 1.5
5
+ ui:
6
+ home: "Home"
7
+ skip_to_content: "Skip to main content"
8
+ photo_alt: "Profile photo"
9
+ present: "Present"
10
+ date_of_birth: "DoB:"
11
+ languages: "Languages:"
12
+ contact_me: "Contact me"
13
+ cv_button: "Curriculum Vitae"
14
+ not_looking_for_work: "I'm not looking for work right now."
15
+ social_links: "Social Links"
16
+ page_last_generated_on: "This page was last generated on"
17
+ cv_last_generated_on: "This CV was last generated on"
18
+ at: "at"
19
+ credential_id: "Credential ID:"
20
+ list_separator: ", "
21
+ dark_mode_toggle: "Switch to dark mode"
22
+ language_switcher: "Language Selector"
23
+ language_name: "English"
24
+ reload_page: "Reload Page"
25
+ section_titles:
26
+ experience: "Experience"
27
+ education: "Education"
28
+ certifications: "Licenses & Certifications"
29
+ courses: "Courses"
30
+ volunteering: "Volunteering"
31
+ projects: "Projects"
32
+ skills: "Skills"
33
+ recognitions: "Recognition"
34
+ associations: "Associations"
35
+ interests: "Outside Interests"
36
+ languages: "Languages"
37
+ links: "Additional Links"
38
+ publications: "Publications"
39
+ references: "References"
40
+ social_labels:
41
+ email: "Email"
42
+ github: "GitHub"
43
+ twitter: "X (Twitter)"
44
+ medium: "Medium"
45
+ dribbble: "Dribbble"
46
+ facebook: "Facebook"
47
+ linkedin: "LinkedIn"
48
+ instagram: "Instagram"
49
+ website: "Website"
50
+ whatsapp: "WhatsApp"
51
+ devto: "Dev.to"
52
+ flickr: "Flickr"
53
+ pinterest: "Pinterest"
54
+ telegram: "Telegram"
55
+ youtube: "YouTube"
56
+ error_pages:
57
+ "404":
58
+ title: "Page Not Found"
59
+ message: "The page you are looking for might have been removed, had its name changed, or is temporarily unavailable."
60
+ "403":
61
+ title: "Access Forbidden"
62
+ message: "You do not have permission to access the requested resource or directory."
63
+ "500":
64
+ title: "Internal Server Error"
65
+ message: "The server encountered an unexpected condition that prevented it from fulfilling the request. Please try again later."
66
+ "503":
67
+ title: "Service Unavailable"
68
+ message: "The server is currently unable to handle the request due to maintenance or capacity overload."
69
+ present_values:
70
+ - "present"
71
+ - "current"
72
+ months:
73
+ - "January"
74
+ - "February"
75
+ - "March"
76
+ - "April"
77
+ - "May"
78
+ - "June"
79
+ - "July"
80
+ - "August"
81
+ - "September"
82
+ - "October"
83
+ - "November"
84
+ - "December"
@@ -0,0 +1,86 @@
1
+ direction: "ltr"
2
+ font_family: ""
3
+ font_url: ""
4
+ line_height: 1.5
5
+ ui:
6
+ home: "Inicio"
7
+ skip_to_content: "Saltar al contenido principal"
8
+ photo_alt: "Foto de perfil"
9
+ present: "Actualidad"
10
+ date_of_birth: "Fecha de nacimiento:"
11
+ languages: "Idiomas:"
12
+ contact_me: "Contáctame"
13
+ cv_button: "Currículum Vitae"
14
+ not_looking_for_work: "No estoy buscando trabajo en este momento."
15
+ social_links: "Redes Sociales"
16
+ page_last_generated_on: "Esta página se generó por última vez el"
17
+ cv_last_generated_on: "Este CV se generó por última vez el"
18
+ at: "a las"
19
+ credential_id: "ID de credencial:"
20
+ list_separator: ", "
21
+ dark_mode_toggle: "Cambiar a modo oscuro"
22
+ language_switcher: "Selector de idioma"
23
+ language_name: "Español"
24
+ reload_page: "Recargar página"
25
+ section_titles:
26
+ experience: "Experiencia"
27
+ education: "Educación"
28
+ certifications: "Licencias y Certificaciones"
29
+ courses: "Cursos"
30
+ volunteering: "Voluntariado"
31
+ projects: "Proyectos"
32
+ skills: "Habilidades"
33
+ recognitions: "Reconocimientos"
34
+ associations: "Asociaciones"
35
+ interests: "Intereses Personales"
36
+ languages: "Idiomas"
37
+ links: "Enlaces Adicionales"
38
+ publications: "Publicaciones"
39
+ references: "Referencias"
40
+ social_labels:
41
+ email: "Correo electrónico"
42
+ github: "GitHub"
43
+ twitter: "X (Twitter)"
44
+ medium: "Medium"
45
+ dribbble: "Dribbble"
46
+ facebook: "Facebook"
47
+ linkedin: "LinkedIn"
48
+ instagram: "Instagram"
49
+ website: "Sitio web"
50
+ whatsapp: "WhatsApp"
51
+ devto: "Dev.to"
52
+ flickr: "Flickr"
53
+ pinterest: "Pinterest"
54
+ telegram: "Telegram"
55
+ youtube: "YouTube"
56
+ error_pages:
57
+ "404":
58
+ title: "Página No Encontrada"
59
+ message: "La página que busca pudo haber sido eliminada, cambiado de nombre o no está disponible temporalmente."
60
+ "403":
61
+ title: "Acceso Prohibido"
62
+ message: "No tiene permiso para acceder al recurso o directorio solicitado."
63
+ "500":
64
+ title: "Error Interno del Servidor"
65
+ message: "El servidor encontró una condición inesperada que le impidió completar la solicitud. Inténtelo de nuevo más tarde."
66
+ "503":
67
+ title: "Servicio No Disponible"
68
+ message: "El servidor no puede procesar la solicitud actualmente debido a mantenimiento o sobrecarga."
69
+ present_values:
70
+ - "present"
71
+ - "actualidad"
72
+ - "actualmente"
73
+ - "presente"
74
+ months:
75
+ - "enero"
76
+ - "febrero"
77
+ - "marzo"
78
+ - "abril"
79
+ - "mayo"
80
+ - "junio"
81
+ - "julio"
82
+ - "agosto"
83
+ - "septiembre"
84
+ - "octubre"
85
+ - "noviembre"
86
+ - "diciembre"
@@ -0,0 +1,86 @@
1
+ direction: "ltr"
2
+ font_family: ""
3
+ font_url: ""
4
+ line_height: 1.5
5
+ ui:
6
+ home: "Accueil"
7
+ skip_to_content: "Aller au contenu principal"
8
+ photo_alt: "Photo de profil"
9
+ present: "Présent"
10
+ date_of_birth: "Date de naissance :"
11
+ languages: "Langues :"
12
+ contact_me: "Me contacter"
13
+ cv_button: "CV"
14
+ not_looking_for_work: "Je ne suis pas activement à la recherche d'un emploi."
15
+ social_links: "Liens Sociaux"
16
+ page_last_generated_on: "Cette page a été générée pour la dernière fois le"
17
+ cv_last_generated_on: "Ce CV a été généré pour la dernière fois le"
18
+ at: "à"
19
+ credential_id: "ID de certification :"
20
+ list_separator: ", "
21
+ dark_mode_toggle: "Passer en mode sombre"
22
+ language_switcher: "Sélecteur de langue"
23
+ language_name: "Français"
24
+ reload_page: "Recharger la page"
25
+ section_titles:
26
+ experience: "Expérience"
27
+ education: "Formation"
28
+ certifications: "Licences et Certifications"
29
+ courses: "Cours"
30
+ volunteering: "Bénévolat"
31
+ projects: "Projets"
32
+ skills: "Compétences"
33
+ recognitions: "Distinctions"
34
+ associations: "Associations"
35
+ interests: "Centres d'Intérêt"
36
+ languages: "Langues"
37
+ links: "Liens Complémentaires"
38
+ publications: "Publications"
39
+ references: "Références"
40
+ social_labels:
41
+ email: "E-mail"
42
+ github: "GitHub"
43
+ twitter: "X (Twitter)"
44
+ medium: "Medium"
45
+ dribbble: "Dribbble"
46
+ facebook: "Facebook"
47
+ linkedin: "LinkedIn"
48
+ instagram: "Instagram"
49
+ website: "Site web"
50
+ whatsapp: "WhatsApp"
51
+ devto: "Dev.to"
52
+ flickr: "Flickr"
53
+ pinterest: "Pinterest"
54
+ telegram: "Telegram"
55
+ youtube: "YouTube"
56
+ error_pages:
57
+ "404":
58
+ title: "Page Introuvable"
59
+ message: "La page que vous recherchez a peut-être été supprimée, renommée ou est temporairement indisponible."
60
+ "403":
61
+ title: "Accès Interdit"
62
+ message: "Vous n'avez pas l'autorisation d'accéder à la ressource ou au répertoire demandé."
63
+ "500":
64
+ title: "Erreur Interne du Serveur"
65
+ message: "Le serveur a rencontré une condition inattendue qui l'a empêché de traiter la demande. Veuillez réessayer plus tard."
66
+ "503":
67
+ title: "Service Indisponible"
68
+ message: "Le serveur est actuellement incapable de traiter la demande en raison d'une maintenance ou d'une surcharge."
69
+ present_values:
70
+ - "present"
71
+ - "actuel"
72
+ - "actuellement"
73
+ - "présent"
74
+ months:
75
+ - "janvier"
76
+ - "février"
77
+ - "mars"
78
+ - "avril"
79
+ - "mai"
80
+ - "juin"
81
+ - "juillet"
82
+ - "août"
83
+ - "septembre"
84
+ - "octobre"
85
+ - "novembre"
86
+ - "décembre"
@@ -0,0 +1,86 @@
1
+ direction: "rtl"
2
+ font_family: "'Noto Nastaliq Urdu', serif"
3
+ font_url: "https://fonts.googleapis.com/css2?family=Noto+Nastaliq+Urdu:wght@400..700&display=swap"
4
+ line_height: 2.0
5
+ ui:
6
+ home: "صفحہ اول"
7
+ skip_to_content: "مرکزی مواد پر جائیں"
8
+ photo_alt: "پروفائل تصویر"
9
+ present: "تاحال"
10
+ date_of_birth: "تاریخ پیدائش:"
11
+ languages: "زبانیں:"
12
+ contact_me: "مجھ سے رابطہ کریں"
13
+ cv_button: "سی وی"
14
+ not_looking_for_work: "میں فی الحال ملازمت کی تلاش میں نہیں ہوں۔"
15
+ social_links: "سوشل لنکس"
16
+ page_last_generated_on: "یہ صفحہ آخری بار تیار کیا گیا"
17
+ cv_last_generated_on: "یہ سی وی آخری بار تیار کیا گیا"
18
+ at: "بوقت"
19
+ credential_id: "اسناد کا شناختی نمبر:"
20
+ list_separator: "، "
21
+ dark_mode_toggle: "ڈارک موڈ میں تبدیل کریں"
22
+ language_switcher: "زبان کا انتخاب"
23
+ language_name: "اردو"
24
+ reload_page: "صفحہ دوبارہ لوڈ کریں"
25
+ section_titles:
26
+ experience: "تجربہ"
27
+ education: "تعلیم"
28
+ certifications: "لائسنس اور سرٹیفیکیشنز"
29
+ courses: "کورسز"
30
+ volunteering: "رضاکارانہ خدمات"
31
+ projects: "منصوبے"
32
+ skills: "مہارتیں"
33
+ recognitions: "اعزازات"
34
+ associations: "رکنیتیں"
35
+ interests: "دلچسپیاں"
36
+ languages: "زبانیں"
37
+ links: "مزید لنکس"
38
+ publications: "اشاعتیں"
39
+ references: "حوالہ جات"
40
+ social_labels:
41
+ email: "ای میل"
42
+ github: "گٹ ہب"
43
+ twitter: "ایکس (ٹوئٹر)"
44
+ medium: "میڈیم"
45
+ dribbble: "ڈرِبل"
46
+ facebook: "فیس بک"
47
+ linkedin: "لنکڈ اِن"
48
+ instagram: "انسٹاگرام"
49
+ website: "ویب سائٹ"
50
+ whatsapp: "واٹس ایپ"
51
+ devto: "ڈیو ٹو"
52
+ flickr: "فلکر"
53
+ pinterest: "پن ٹریسٹ"
54
+ telegram: "ٹیلیگرام"
55
+ youtube: "یوٹیوب"
56
+ error_pages:
57
+ "404":
58
+ title: "صفحہ نہیں ملا"
59
+ message: "جو صفحہ آپ تلاش کر رہے ہیں وہ ہٹا دیا گیا ہو، اس کا نام تبدیل کر دیا گیا ہو، یا عارضی طور پر دستیاب نہ ہو۔"
60
+ "403":
61
+ title: "رسائی ممنوع ہے"
62
+ message: "آپ کو مطلوبہ وسیلے یا ڈائریکٹری تک رسائی کی اجازت نہیں ہے۔"
63
+ "500":
64
+ title: "سرور کی اندرونی خرابی"
65
+ message: "سرور کو ایک غیر متوقع مسئلہ پیش آیا جس کی وجہ سے درخواست مکمل نہ ہو سکی۔ براہ کرم بعد میں دوبارہ کوشش کریں۔"
66
+ "503":
67
+ title: "سروس عارضی طور پر دستیاب نہیں"
68
+ message: "دیکھ بھال یا زیادہ لوڈ کی وجہ سے سرور فی الحال درخواست پر عمل کرنے سے قاصر ہے۔"
69
+ present_values:
70
+ - "present"
71
+ - "حال"
72
+ - "موجودہ"
73
+ - "تاحال"
74
+ months:
75
+ - "جنوری"
76
+ - "فروری"
77
+ - "مارچ"
78
+ - "اپریل"
79
+ - "مئی"
80
+ - "جون"
81
+ - "جولائی"
82
+ - "اگست"
83
+ - "ستمبر"
84
+ - "اکتوبر"
85
+ - "نومبر"
86
+ - "دسمبر"
@@ -0,0 +1,83 @@
1
+ # Shared network list for _includes/social-links.html and
2
+ # _includes/print-social-links.html: one entry per site.social_links.<key>
3
+ # platform. Order here is the icon/print display order. To add a platform,
4
+ # add its SVG to _includes/vendors/svg-icons/ and an entry here.
5
+ #
6
+ # icon: filename (without .svg) under _includes/vendors/svg-icons/
7
+ # itemprop: schema.org microdata value social-links.html sets on the <a>
8
+ # label: English fallback for the icon's aria-label/title; each locale's
9
+ # ui.social_labels.<key> wins when present (print labels use it too)
10
+ - key: devto
11
+ icon: dev
12
+ itemprop: url
13
+ label: Dev.to
14
+
15
+ - key: dribbble
16
+ icon: dribbble-symbol
17
+ itemprop: sameAs
18
+ label: Dribbble
19
+
20
+ - key: email
21
+ icon: envelope
22
+ itemprop: email
23
+ label: Email
24
+
25
+ - key: facebook
26
+ icon: facebook
27
+ itemprop: sameAs
28
+ label: Facebook
29
+
30
+ - key: flickr
31
+ icon: flickr
32
+ itemprop: url
33
+ label: Flickr
34
+
35
+ - key: github
36
+ icon: github
37
+ itemprop: sameAs
38
+ label: GitHub
39
+
40
+ - key: instagram
41
+ icon: instagram
42
+ itemprop: sameAs
43
+ label: Instagram
44
+
45
+ - key: linkedin
46
+ icon: linkedin
47
+ itemprop: sameAs
48
+ label: LinkedIn
49
+
50
+ - key: medium
51
+ icon: medium
52
+ itemprop: url
53
+ label: Medium
54
+
55
+ - key: pinterest
56
+ icon: pinterest
57
+ itemprop: url
58
+ label: Pinterest
59
+
60
+ - key: telegram
61
+ icon: telegram
62
+ itemprop: url
63
+ label: Telegram
64
+
65
+ - key: twitter
66
+ icon: x
67
+ itemprop: sameAs
68
+ label: X (Twitter)
69
+
70
+ - key: website
71
+ icon: globe-1
72
+ itemprop: url
73
+ label: Website
74
+
75
+ - key: whatsapp
76
+ icon: whatsapp
77
+ itemprop: url
78
+ label: WhatsApp
79
+
80
+ - key: youtube
81
+ icon: youtube
82
+ itemprop: url
83
+ label: YouTube
@@ -0,0 +1,12 @@
1
+ {%- if site.analytics.gtm -%}
2
+ <!-- Google Tag Manager (noscript) -->
3
+ <noscript>
4
+ <iframe
5
+ src="https://www.googletagmanager.com/ns.html?id={{ site.analytics.gtm | url_encode }}"
6
+ height="0"
7
+ width="0"
8
+ style="display:none;visibility:hidden">
9
+ </iframe>
10
+ </noscript>
11
+ <!-- End Google Tag Manager (noscript) -->
12
+ {%- endif -%}
@@ -0,0 +1,36 @@
1
+ {%- if site.analytics.gtm -%}
2
+
3
+ <!-- Google Tag Manager -->
4
+ <script>
5
+ (function (w, d, s, l, i) {
6
+ w[l] = w[l] || [];
7
+ w[l].push({
8
+ 'gtm.start': new Date().getTime(),
9
+ event: 'gtm.js'
10
+ });
11
+ var f = d.getElementsByTagName(s)[0],
12
+ j = d.createElement(s),
13
+ dl = l != 'dataLayer' ? '&l=' + l : '';
14
+ j.async = true;
15
+ j.src = 'https://www.googletagmanager.com/gtm.js?id=' + i + dl;
16
+ f.parentNode.insertBefore(j, f);
17
+ })(window, document, 'script', 'dataLayer', {{ site.analytics.gtm | jsonify | replace: '<', '\u003c' }});
18
+ </script>
19
+ <!-- End Google Tag Manager -->
20
+
21
+ {%- elsif site.analytics.gtag and site.analytics.gtag != "" -%}
22
+
23
+ <!-- Global site tag (gtag.js) - Google Analytics -->
24
+ <script async src="https://www.googletagmanager.com/gtag/js?id={{ site.analytics.gtag | url_encode }}"></script>
25
+ <script>
26
+ window.dataLayer = window.dataLayer || [];
27
+
28
+ function gtag() {
29
+ dataLayer.push(arguments);
30
+ }
31
+
32
+ gtag('js', new Date());
33
+ gtag('config', {{ site.analytics.gtag | jsonify | replace: '<', '\u003c' }});
34
+ </script>
35
+
36
+ {%- endif -%}
@@ -0,0 +1,84 @@
1
+ {%- comment -%}
2
+ Include: Reusable Avatar Component
3
+ - Purpose: Render accessible, configurable profile picture.
4
+ - Parameters:
5
+ - lang: Optional language code. Defaults to page.lang, then site.default_lang, then 'en'.
6
+ - link: Optional boolean to override link rendering.
7
+ - class: Optional extra CSS classes.
8
+ {%- endcomment -%}
9
+
10
+ {%- comment -%}
11
+ Language Detection Cascade:
12
+ Resolves language in order of specificity: explicit include parameter -> page front matter -> site default -> 'en'.
13
+ {%- endcomment -%}
14
+ {% assign current_lang = include.lang | default: page.lang | default: site.default_lang | default: 'en' %}
15
+ {% assign lang_cfg = site.languages[current_lang] %}
16
+ {% assign locale = site.data.locales[current_lang] | default: site.data.locales[site.default_lang] %}
17
+
18
+ {%- comment -%}
19
+ Image Source Resolution Hierarchy & Subpath Safety:
20
+ 1. Priority: site.avatar_url (explicit configuration) -> '/assets/images/Profile-min.jpg' (bundled default).
21
+ 2. Scheme Safety: avatar_url allows only http/https and avatar_link http/https/mailto/tel (see safe-url.html);
22
+ anything else is dropped (no image, or an unlinked image), never rendered.
23
+ 3. Subpath Safety: If the avatar path contains a scheme (':'), it is treated as an absolute external CDN URL and preserved as-is.
24
+ Otherwise, it is piped through Liquid's `relative_url` filter to ensure correct resolution on GitHub Pages sites
25
+ hosted under repository subpaths (e.g. username.github.io/project-name/).
26
+ {%- endcomment -%}
27
+ {% include safe-url.html url=site.avatar_url schemes="http,https" %}
28
+ {% if site.avatar_url == nil or site.avatar_url == "" %}{% assign safe_url = '/assets/images/Profile-min.jpg' %}{% endif %}
29
+ {% if safe_url == nil %}
30
+ {% assign render_avatar = false %}
31
+ {% else %}
32
+ {% assign render_avatar = true %}
33
+ {% if safe_url contains ":" %}
34
+ {% assign avatar_src = safe_url %}
35
+ {% else %}
36
+ {% assign avatar_src = safe_url | relative_url %}
37
+ {% endif %}
38
+ {% endif %}
39
+
40
+ {%- comment -%}
41
+ Localized Alt Text & Title Resolution:
42
+ Generates meaningful alt text to satisfy WCAG 2.2 non-empty alt text requirements.
43
+ Alt text cascade: languages.<lang>.avatar_alt -> languages.<lang>.name -> locale.ui.photo_alt.
44
+ {%- endcomment -%}
45
+ {% assign avatar_alt = lang_cfg.avatar_alt | default: lang_cfg.name | default: locale.ui.photo_alt %}
46
+ {% assign link_title = site.title | default: locale.ui.home %}
47
+
48
+ {%- comment -%}
49
+ Hyperlink Wrapping Toggle:
50
+ Defaults to true. Disabling can occur globally via `site.avatar_link: false` or locally via `include.link: false`.
51
+ {%- endcomment -%}
52
+ {% assign render_link = true %}
53
+ {% if site.avatar_link == false or include.link == false %}
54
+ {% assign render_link = false %}
55
+ {% endif %}
56
+
57
+ {%- comment -%}
58
+ Avatar Markup Rendering:
59
+ - If the avatar_url scheme is not allowed, nothing is rendered.
60
+ - If linked: Wraps <img> in <a> with subpath-safe href and tab-nabbing security (rel="noopener" if target != '_self').
61
+ - If unlinked: Renders standalone <img>.
62
+ Both branches include class="no-print" and itemprop="image".
63
+ {%- endcomment -%}
64
+ {% if render_link %}
65
+ {% include safe-url.html url=site.avatar_link schemes="http,https,mailto,tel" %}
66
+ {% if site.avatar_link == nil or site.avatar_link == "" or site.avatar_link == true %}{% assign safe_url = '/' %}{% endif %}
67
+ {% if safe_url == nil %}
68
+ {% assign render_link = false %}
69
+ {% elsif safe_url contains ":" %}
70
+ {% assign avatar_href = safe_url %}
71
+ {% else %}
72
+ {% assign avatar_href = safe_url | relative_url %}
73
+ {% endif %}
74
+ {% assign avatar_target = site.avatar_link_target | default: '_self' %}
75
+ {% endif %}
76
+
77
+ {% if render_avatar and render_link %}
78
+ <a href="{{ avatar_href | escape }}" title="{{ link_title | escape }}" class="avatar-link no-print"{% if avatar_target != '_self' %} target="{{ avatar_target | escape }}" rel="noopener"{% endif %}>
79
+ <img src="{{ avatar_src | escape }}" alt="{{ avatar_alt | escape }}" class="avatar no-print{% if include.class %} {{ include.class | escape }}{% endif %}" itemprop="image">
80
+ </a>
81
+ {% elsif render_avatar %}
82
+ <img src="{{ avatar_src | escape }}" alt="{{ avatar_alt | escape }}" class="avatar no-print{% if include.class %} {{ include.class | escape }}{% endif %}" itemprop="image">
83
+ {% endif %}
84
+