focomy 0.1.117__tar.gz → 0.1.118__tar.gz

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 (212) hide show
  1. {focomy-0.1.117 → focomy-0.1.118}/PKG-INFO +1 -1
  2. {focomy-0.1.117 → focomy-0.1.118}/core/services/theme.py +1 -0
  3. {focomy-0.1.117 → focomy-0.1.118}/pyproject.toml +1 -1
  4. focomy-0.1.118/themes/corporate/customizations.json +29 -0
  5. {focomy-0.1.117 → focomy-0.1.118}/themes/default/templates/base.html +18 -1
  6. {focomy-0.1.117 → focomy-0.1.118}/.gitignore +0 -0
  7. {focomy-0.1.117 → focomy-0.1.118}/LICENSE +0 -0
  8. {focomy-0.1.117 → focomy-0.1.118}/README.md +0 -0
  9. {focomy-0.1.117 → focomy-0.1.118}/core/__init__.py +0 -0
  10. {focomy-0.1.117 → focomy-0.1.118}/core/admin/__init__.py +0 -0
  11. {focomy-0.1.117 → focomy-0.1.118}/core/admin/routes.py +0 -0
  12. {focomy-0.1.117 → focomy-0.1.118}/core/admin/url.py +0 -0
  13. {focomy-0.1.117 → focomy-0.1.118}/core/api/__init__.py +0 -0
  14. {focomy-0.1.117 → focomy-0.1.118}/core/api/auth.py +0 -0
  15. {focomy-0.1.117 → focomy-0.1.118}/core/api/comments.py +0 -0
  16. {focomy-0.1.117 → focomy-0.1.118}/core/api/entities.py +0 -0
  17. {focomy-0.1.117 → focomy-0.1.118}/core/api/forms.py +0 -0
  18. {focomy-0.1.117 → focomy-0.1.118}/core/api/media.py +0 -0
  19. {focomy-0.1.117 → focomy-0.1.118}/core/api/relations.py +0 -0
  20. {focomy-0.1.117 → focomy-0.1.118}/core/api/revisions.py +0 -0
  21. {focomy-0.1.117 → focomy-0.1.118}/core/api/schema.py +0 -0
  22. {focomy-0.1.117 → focomy-0.1.118}/core/api/search.py +0 -0
  23. {focomy-0.1.117 → focomy-0.1.118}/core/api/seo.py +0 -0
  24. {focomy-0.1.117 → focomy-0.1.118}/core/cli.py +0 -0
  25. {focomy-0.1.117 → focomy-0.1.118}/core/config.py +0 -0
  26. {focomy-0.1.117 → focomy-0.1.118}/core/content_types/__init__.py +0 -0
  27. {focomy-0.1.117 → focomy-0.1.118}/core/content_types/audit_log.yaml +0 -0
  28. {focomy-0.1.117 → focomy-0.1.118}/core/content_types/category.yaml +0 -0
  29. {focomy-0.1.117 → focomy-0.1.118}/core/content_types/channel.yaml +0 -0
  30. {focomy-0.1.117 → focomy-0.1.118}/core/content_types/comment.yaml +0 -0
  31. {focomy-0.1.117 → focomy-0.1.118}/core/content_types/edit_lock.yaml +0 -0
  32. {focomy-0.1.117 → focomy-0.1.118}/core/content_types/form.yaml +0 -0
  33. {focomy-0.1.117 → focomy-0.1.118}/core/content_types/form_submission.yaml +0 -0
  34. {focomy-0.1.117 → focomy-0.1.118}/core/content_types/menu_item.yaml +0 -0
  35. {focomy-0.1.117 → focomy-0.1.118}/core/content_types/news.yaml +0 -0
  36. {focomy-0.1.117 → focomy-0.1.118}/core/content_types/page.yaml +0 -0
  37. {focomy-0.1.117 → focomy-0.1.118}/core/content_types/plugin.yaml +0 -0
  38. {focomy-0.1.117 → focomy-0.1.118}/core/content_types/plugin_developer.yaml +0 -0
  39. {focomy-0.1.117 → focomy-0.1.118}/core/content_types/plugin_review.yaml +0 -0
  40. {focomy-0.1.117 → focomy-0.1.118}/core/content_types/post.yaml +0 -0
  41. {focomy-0.1.117 → focomy-0.1.118}/core/content_types/redirect.yaml +0 -0
  42. {focomy-0.1.117 → focomy-0.1.118}/core/content_types/scheduled_action.yaml +0 -0
  43. {focomy-0.1.117 → focomy-0.1.118}/core/content_types/series.yaml +0 -0
  44. {focomy-0.1.117 → focomy-0.1.118}/core/content_types/site_setting.yaml +0 -0
  45. {focomy-0.1.117 → focomy-0.1.118}/core/content_types/tag.yaml +0 -0
  46. {focomy-0.1.117 → focomy-0.1.118}/core/content_types/user.yaml +0 -0
  47. {focomy-0.1.117 → focomy-0.1.118}/core/content_types/widget.yaml +0 -0
  48. {focomy-0.1.117 → focomy-0.1.118}/core/content_types/workflow_history.yaml +0 -0
  49. {focomy-0.1.117 → focomy-0.1.118}/core/database.py +0 -0
  50. {focomy-0.1.117 → focomy-0.1.118}/core/engine/__init__.py +0 -0
  51. {focomy-0.1.117 → focomy-0.1.118}/core/engine/routes.py +0 -0
  52. {focomy-0.1.117 → focomy-0.1.118}/core/main.py +0 -0
  53. {focomy-0.1.117 → focomy-0.1.118}/core/migrations/env.py +0 -0
  54. {focomy-0.1.117 → focomy-0.1.118}/core/migrations/script.py.mako +0 -0
  55. {focomy-0.1.117 → focomy-0.1.118}/core/migrations/versions/2038bdf6693b_add_import_jobs_table.py +0 -0
  56. {focomy-0.1.117 → focomy-0.1.118}/core/migrations/versions/3a1b2c3d4e5f_add_file_hash_to_media.py +0 -0
  57. {focomy-0.1.117 → focomy-0.1.118}/core/models/__init__.py +0 -0
  58. {focomy-0.1.117 → focomy-0.1.118}/core/models/auth.py +0 -0
  59. {focomy-0.1.117 → focomy-0.1.118}/core/models/entity.py +0 -0
  60. {focomy-0.1.117 → focomy-0.1.118}/core/models/import_job.py +0 -0
  61. {focomy-0.1.117 → focomy-0.1.118}/core/models/media.py +0 -0
  62. {focomy-0.1.117 → focomy-0.1.118}/core/models/relation.py +0 -0
  63. {focomy-0.1.117 → focomy-0.1.118}/core/models/revision.py +0 -0
  64. {focomy-0.1.117 → focomy-0.1.118}/core/plugins/__init__.py +0 -0
  65. {focomy-0.1.117 → focomy-0.1.118}/core/plugins/base.py +0 -0
  66. {focomy-0.1.117 → focomy-0.1.118}/core/plugins/hooks.py +0 -0
  67. {focomy-0.1.117 → focomy-0.1.118}/core/plugins/loader.py +0 -0
  68. {focomy-0.1.117 → focomy-0.1.118}/core/plugins/manager.py +0 -0
  69. {focomy-0.1.117 → focomy-0.1.118}/core/rate_limit.py +0 -0
  70. {focomy-0.1.117 → focomy-0.1.118}/core/relations.yaml +0 -0
  71. {focomy-0.1.117 → focomy-0.1.118}/core/scaffold/.env.template +0 -0
  72. {focomy-0.1.117 → focomy-0.1.118}/core/scaffold/.gitignore.template +0 -0
  73. {focomy-0.1.117 → focomy-0.1.118}/core/scaffold/__init__.py +0 -0
  74. {focomy-0.1.117 → focomy-0.1.118}/core/scaffold/config.yaml.template +0 -0
  75. {focomy-0.1.117 → focomy-0.1.118}/core/scaffold/themes/default/templates/archive.html +0 -0
  76. {focomy-0.1.117 → focomy-0.1.118}/core/scaffold/themes/default/templates/base.html +0 -0
  77. {focomy-0.1.117 → focomy-0.1.118}/core/scaffold/themes/default/templates/category.html +0 -0
  78. {focomy-0.1.117 → focomy-0.1.118}/core/scaffold/themes/default/templates/home.html +0 -0
  79. {focomy-0.1.117 → focomy-0.1.118}/core/scaffold/themes/default/templates/post.html +0 -0
  80. {focomy-0.1.117 → focomy-0.1.118}/core/scaffold/themes/default/templates/search.html +0 -0
  81. {focomy-0.1.117 → focomy-0.1.118}/core/scaffold/themes/default/theme.yaml +0 -0
  82. {focomy-0.1.117 → focomy-0.1.118}/core/schemas/__init__.py +0 -0
  83. {focomy-0.1.117 → focomy-0.1.118}/core/schemas/import_schema.py +0 -0
  84. {focomy-0.1.117 → focomy-0.1.118}/core/seo/__init__.py +0 -0
  85. {focomy-0.1.117 → focomy-0.1.118}/core/services/__init__.py +0 -0
  86. {focomy-0.1.117 → focomy-0.1.118}/core/services/api_auth.py +0 -0
  87. {focomy-0.1.117 → focomy-0.1.118}/core/services/assets.py +0 -0
  88. {focomy-0.1.117 → focomy-0.1.118}/core/services/audit.py +0 -0
  89. {focomy-0.1.117 → focomy-0.1.118}/core/services/auth.py +0 -0
  90. {focomy-0.1.117 → focomy-0.1.118}/core/services/block_converter.py +0 -0
  91. {focomy-0.1.117 → focomy-0.1.118}/core/services/bulk.py +0 -0
  92. {focomy-0.1.117 → focomy-0.1.118}/core/services/cache.py +0 -0
  93. {focomy-0.1.117 → focomy-0.1.118}/core/services/channel.py +0 -0
  94. {focomy-0.1.117 → focomy-0.1.118}/core/services/cleanup.py +0 -0
  95. {focomy-0.1.117 → focomy-0.1.118}/core/services/comment.py +0 -0
  96. {focomy-0.1.117 → focomy-0.1.118}/core/services/config_priority.py +0 -0
  97. {focomy-0.1.117 → focomy-0.1.118}/core/services/deployment.py +0 -0
  98. {focomy-0.1.117 → focomy-0.1.118}/core/services/edit_lock.py +0 -0
  99. {focomy-0.1.117 → focomy-0.1.118}/core/services/entity.py +0 -0
  100. {focomy-0.1.117 → focomy-0.1.118}/core/services/export.py +0 -0
  101. {focomy-0.1.117 → focomy-0.1.118}/core/services/field.py +0 -0
  102. {focomy-0.1.117 → focomy-0.1.118}/core/services/formula.py +0 -0
  103. {focomy-0.1.117 → focomy-0.1.118}/core/services/i18n.py +0 -0
  104. {focomy-0.1.117 → focomy-0.1.118}/core/services/index.py +0 -0
  105. {focomy-0.1.117 → focomy-0.1.118}/core/services/invite.py +0 -0
  106. {focomy-0.1.117 → focomy-0.1.118}/core/services/link_validator.py +0 -0
  107. {focomy-0.1.117 → focomy-0.1.118}/core/services/logging.py +0 -0
  108. {focomy-0.1.117 → focomy-0.1.118}/core/services/mail.py +0 -0
  109. {focomy-0.1.117 → focomy-0.1.118}/core/services/marketplace.py +0 -0
  110. {focomy-0.1.117 → focomy-0.1.118}/core/services/marketplace_verify.py +0 -0
  111. {focomy-0.1.117 → focomy-0.1.118}/core/services/media.py +0 -0
  112. {focomy-0.1.117 → focomy-0.1.118}/core/services/media_cleanup.py +0 -0
  113. {focomy-0.1.117 → focomy-0.1.118}/core/services/menu.py +0 -0
  114. {focomy-0.1.117 → focomy-0.1.118}/core/services/migration_helpers.py +0 -0
  115. {focomy-0.1.117 → focomy-0.1.118}/core/services/oauth.py +0 -0
  116. {focomy-0.1.117 → focomy-0.1.118}/core/services/pagination.py +0 -0
  117. {focomy-0.1.117 → focomy-0.1.118}/core/services/plugin_resolver.py +0 -0
  118. {focomy-0.1.117 → focomy-0.1.118}/core/services/plugin_sandbox.py +0 -0
  119. {focomy-0.1.117 → focomy-0.1.118}/core/services/preview.py +0 -0
  120. {focomy-0.1.117 → focomy-0.1.118}/core/services/query_optimizer.py +0 -0
  121. {focomy-0.1.117 → focomy-0.1.118}/core/services/rbac.py +0 -0
  122. {focomy-0.1.117 → focomy-0.1.118}/core/services/redirect.py +0 -0
  123. {focomy-0.1.117 → focomy-0.1.118}/core/services/relation.py +0 -0
  124. {focomy-0.1.117 → focomy-0.1.118}/core/services/revision.py +0 -0
  125. {focomy-0.1.117 → focomy-0.1.118}/core/services/routing.py +0 -0
  126. {focomy-0.1.117 → focomy-0.1.118}/core/services/sanitizer.py +0 -0
  127. {focomy-0.1.117 → focomy-0.1.118}/core/services/schedule.py +0 -0
  128. {focomy-0.1.117 → focomy-0.1.118}/core/services/search.py +0 -0
  129. {focomy-0.1.117 → focomy-0.1.118}/core/services/sentry.py +0 -0
  130. {focomy-0.1.117 → focomy-0.1.118}/core/services/seo.py +0 -0
  131. {focomy-0.1.117 → focomy-0.1.118}/core/services/settings.py +0 -0
  132. {focomy-0.1.117 → focomy-0.1.118}/core/services/spam_filter.py +0 -0
  133. {focomy-0.1.117 → focomy-0.1.118}/core/services/storage.py +0 -0
  134. {focomy-0.1.117 → focomy-0.1.118}/core/services/theme_inheritance.py +0 -0
  135. {focomy-0.1.117 → focomy-0.1.118}/core/services/thumbnail.py +0 -0
  136. {focomy-0.1.117 → focomy-0.1.118}/core/services/update.py +0 -0
  137. {focomy-0.1.117 → focomy-0.1.118}/core/services/widget.py +0 -0
  138. {focomy-0.1.117 → focomy-0.1.118}/core/services/wordpress_import/__init__.py +0 -0
  139. {focomy-0.1.117 → focomy-0.1.118}/core/services/wordpress_import/acf.py +0 -0
  140. {focomy-0.1.117 → focomy-0.1.118}/core/services/wordpress_import/analyzer.py +0 -0
  141. {focomy-0.1.117 → focomy-0.1.118}/core/services/wordpress_import/constants.py +0 -0
  142. {focomy-0.1.117 → focomy-0.1.118}/core/services/wordpress_import/content_sanitizer.py +0 -0
  143. {focomy-0.1.117 → focomy-0.1.118}/core/services/wordpress_import/diff_detector.py +0 -0
  144. {focomy-0.1.117 → focomy-0.1.118}/core/services/wordpress_import/dry_run.py +0 -0
  145. {focomy-0.1.117 → focomy-0.1.118}/core/services/wordpress_import/error_collector.py +0 -0
  146. {focomy-0.1.117 → focomy-0.1.118}/core/services/wordpress_import/id_resolver.py +0 -0
  147. {focomy-0.1.117 → focomy-0.1.118}/core/services/wordpress_import/import_service.py +0 -0
  148. {focomy-0.1.117 → focomy-0.1.118}/core/services/wordpress_import/importer.py +0 -0
  149. {focomy-0.1.117 → focomy-0.1.118}/core/services/wordpress_import/link_fixer.py +0 -0
  150. {focomy-0.1.117 → focomy-0.1.118}/core/services/wordpress_import/media.py +0 -0
  151. {focomy-0.1.117 → focomy-0.1.118}/core/services/wordpress_import/preview.py +0 -0
  152. {focomy-0.1.117 → focomy-0.1.118}/core/services/wordpress_import/redirects.py +0 -0
  153. {focomy-0.1.117 → focomy-0.1.118}/core/services/wordpress_import/rest_client.py +0 -0
  154. {focomy-0.1.117 → focomy-0.1.118}/core/services/wordpress_import/rollback.py +0 -0
  155. {focomy-0.1.117 → focomy-0.1.118}/core/services/wordpress_import/verification.py +0 -0
  156. {focomy-0.1.117 → focomy-0.1.118}/core/services/wordpress_import/wxr_parser.py +0 -0
  157. {focomy-0.1.117 → focomy-0.1.118}/core/services/workflow.py +0 -0
  158. {focomy-0.1.117 → focomy-0.1.118}/core/templates/admin/backup.html +0 -0
  159. {focomy-0.1.117 → focomy-0.1.118}/core/templates/admin/base.html +0 -0
  160. {focomy-0.1.117 → focomy-0.1.118}/core/templates/admin/comments.html +0 -0
  161. {focomy-0.1.117 → focomy-0.1.118}/core/templates/admin/components/editor.html +0 -0
  162. {focomy-0.1.117 → focomy-0.1.118}/core/templates/admin/customize.html +0 -0
  163. {focomy-0.1.117 → focomy-0.1.118}/core/templates/admin/dashboard.html +0 -0
  164. {focomy-0.1.117 → focomy-0.1.118}/core/templates/admin/entity_form.html +0 -0
  165. {focomy-0.1.117 → focomy-0.1.118}/core/templates/admin/entity_list.html +0 -0
  166. {focomy-0.1.117 → focomy-0.1.118}/core/templates/admin/forgot_password.html +0 -0
  167. {focomy-0.1.117 → focomy-0.1.118}/core/templates/admin/import.html +0 -0
  168. {focomy-0.1.117 → focomy-0.1.118}/core/templates/admin/link_validator.html +0 -0
  169. {focomy-0.1.117 → focomy-0.1.118}/core/templates/admin/login.html +0 -0
  170. {focomy-0.1.117 → focomy-0.1.118}/core/templates/admin/media.html +0 -0
  171. {focomy-0.1.117 → focomy-0.1.118}/core/templates/admin/menus.html +0 -0
  172. {focomy-0.1.117 → focomy-0.1.118}/core/templates/admin/plugins.html +0 -0
  173. {focomy-0.1.117 → focomy-0.1.118}/core/templates/admin/redirects.html +0 -0
  174. {focomy-0.1.117 → focomy-0.1.118}/core/templates/admin/reset_password.html +0 -0
  175. {focomy-0.1.117 → focomy-0.1.118}/core/templates/admin/settings.html +0 -0
  176. {focomy-0.1.117 → focomy-0.1.118}/core/templates/admin/sitemap.html +0 -0
  177. {focomy-0.1.117 → focomy-0.1.118}/core/templates/admin/system.html +0 -0
  178. {focomy-0.1.117 → focomy-0.1.118}/core/templates/admin/themes.html +0 -0
  179. {focomy-0.1.117 → focomy-0.1.118}/core/templates/admin/widgets.html +0 -0
  180. {focomy-0.1.117 → focomy-0.1.118}/core/themes/__init__.py +0 -0
  181. {focomy-0.1.117 → focomy-0.1.118}/core/themes/customizer.py +0 -0
  182. {focomy-0.1.117 → focomy-0.1.118}/core/themes/manager.py +0 -0
  183. {focomy-0.1.117 → focomy-0.1.118}/core/themes/marketplace.py +0 -0
  184. {focomy-0.1.117 → focomy-0.1.118}/core/utils.py +0 -0
  185. {focomy-0.1.117 → focomy-0.1.118}/static/favicon.svg +0 -0
  186. {focomy-0.1.117 → focomy-0.1.118}/themes/blog/templates/base.html +0 -0
  187. {focomy-0.1.117 → focomy-0.1.118}/themes/blog/templates/home.html +0 -0
  188. {focomy-0.1.117 → focomy-0.1.118}/themes/blog/templates/post.html +0 -0
  189. {focomy-0.1.117 → focomy-0.1.118}/themes/blog/theme.yaml +0 -0
  190. {focomy-0.1.117 → focomy-0.1.118}/themes/corporate/templates/base.html +0 -0
  191. {focomy-0.1.117 → focomy-0.1.118}/themes/corporate/templates/home.html +0 -0
  192. {focomy-0.1.117 → focomy-0.1.118}/themes/corporate/templates/page.html +0 -0
  193. {focomy-0.1.117 → focomy-0.1.118}/themes/corporate/theme.yaml +0 -0
  194. {focomy-0.1.117 → focomy-0.1.118}/themes/default/customizations.json +0 -0
  195. {focomy-0.1.117 → focomy-0.1.118}/themes/default/templates/404.html +0 -0
  196. {focomy-0.1.117 → focomy-0.1.118}/themes/default/templates/500.html +0 -0
  197. {focomy-0.1.117 → focomy-0.1.118}/themes/default/templates/archive.html +0 -0
  198. {focomy-0.1.117 → focomy-0.1.118}/themes/default/templates/category.html +0 -0
  199. {focomy-0.1.117 → focomy-0.1.118}/themes/default/templates/channel.html +0 -0
  200. {focomy-0.1.117 → focomy-0.1.118}/themes/default/templates/form.html +0 -0
  201. {focomy-0.1.117 → focomy-0.1.118}/themes/default/templates/form_success.html +0 -0
  202. {focomy-0.1.117 → focomy-0.1.118}/themes/default/templates/home.html +0 -0
  203. {focomy-0.1.117 → focomy-0.1.118}/themes/default/templates/page.html +0 -0
  204. {focomy-0.1.117 → focomy-0.1.118}/themes/default/templates/post.html +0 -0
  205. {focomy-0.1.117 → focomy-0.1.118}/themes/default/templates/search.html +0 -0
  206. {focomy-0.1.117 → focomy-0.1.118}/themes/default/templates/series.html +0 -0
  207. {focomy-0.1.117 → focomy-0.1.118}/themes/default/theme.yaml +0 -0
  208. {focomy-0.1.117 → focomy-0.1.118}/themes/minimal/templates/base.html +0 -0
  209. {focomy-0.1.117 → focomy-0.1.118}/themes/minimal/templates/home.html +0 -0
  210. {focomy-0.1.117 → focomy-0.1.118}/themes/minimal/templates/page.html +0 -0
  211. {focomy-0.1.117 → focomy-0.1.118}/themes/minimal/templates/post.html +0 -0
  212. {focomy-0.1.117 → focomy-0.1.118}/themes/minimal/theme.yaml +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: focomy
3
- Version: 0.1.117
3
+ Version: 0.1.118
4
4
  Summary: The Most Beautiful CMS - A metadata-driven, zero-duplicate-code content management system
5
5
  Project-URL: Homepage, https://github.com/focomy/focomy
6
6
  Project-URL: Documentation, https://focomy.dev/docs
@@ -1194,6 +1194,7 @@ body {
1194
1194
 
1195
1195
  # Add theme CSS to context
1196
1196
  context["theme_css"] = self.get_css_variables(theme_name)
1197
+ context["customizations"] = self.get_customizations(theme_name)
1197
1198
  context["current_year"] = datetime.now().year
1198
1199
  context.setdefault("site_name", "Focomy")
1199
1200
 
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "focomy"
7
- version = "0.1.117"
7
+ version = "0.1.118"
8
8
  description = "The Most Beautiful CMS - A metadata-driven, zero-duplicate-code content management system"
9
9
  readme = "README.md"
10
10
  license = "MIT"
@@ -0,0 +1,29 @@
1
+ {
2
+ "site_logo": "",
3
+ "site_icon": "",
4
+ "header_image": "",
5
+ "background_image": "",
6
+ "color_primary": "#0066cc",
7
+ "color_primary-hover": "#0052a3",
8
+ "color_secondary": "#ff6b35",
9
+ "color_secondary-hover": "#e55a2b",
10
+ "color_background": "#ffffff",
11
+ "color_surface": "#f8f9fa",
12
+ "color_text": "#212529",
13
+ "color_text-muted": "#6c757d",
14
+ "color_border": "#dee2e6",
15
+ "color_success": "#28a745",
16
+ "color_error": "#dc3545",
17
+ "color_warning": "#ffc107",
18
+ "font_sans": "'Noto Sans JP', -apple-system, BlinkMacSystemFont, sans-serif",
19
+ "font_serif": "'Noto Serif JP', Georgia, serif",
20
+ "font_mono": "ui-monospace, monospace",
21
+ "space_xs": "0.25rem",
22
+ "space_sm": "0.5rem",
23
+ "space_md": "1rem",
24
+ "space_lg": "1.5rem",
25
+ "space_xl": "2rem",
26
+ "space_2xl": "3rem",
27
+ "space_3xl": "4rem",
28
+ "custom_css": ""
29
+ }
@@ -37,9 +37,14 @@
37
37
  {% endif %}
38
38
 
39
39
  <!-- Favicon -->
40
+ {% if customizations and customizations.site_icon %}
41
+ <link rel="icon" href="{{ customizations.site_icon }}" type="image/png">
42
+ <link rel="apple-touch-icon" href="{{ customizations.site_icon }}">
43
+ {% else %}
40
44
  <link rel="icon" href="/static/favicon.ico" sizes="32x32">
41
45
  <link rel="icon" href="/static/favicon.svg" type="image/svg+xml">
42
46
  <link rel="apple-touch-icon" href="/static/apple-touch-icon.png">
47
+ {% endif %}
43
48
  <link rel="manifest" href="/manifest.json">
44
49
 
45
50
  <!-- Preload critical resources -->
@@ -56,6 +61,12 @@
56
61
  <link rel="stylesheet" href="/css/theme.css">
57
62
 
58
63
  <style>
64
+ /* Site logo image */
65
+ .site-logo-img {
66
+ max-height: 50px;
67
+ width: auto;
68
+ vertical-align: middle;
69
+ }
59
70
 
60
71
  /* Dropdown menu styles */
61
72
  .nav-item { position: relative; display: inline-block; }
@@ -218,7 +229,13 @@
218
229
  <header class="site-header">
219
230
  {% block header %}
220
231
  <div class="container">
221
- <a href="/" class="site-logo">{{ site_name }}</a>
232
+ <a href="/" class="site-logo">
233
+ {% if customizations and customizations.site_logo %}
234
+ <img src="{{ customizations.site_logo }}" alt="{{ site_name }}" class="site-logo-img">
235
+ {% else %}
236
+ {{ site_name }}
237
+ {% endif %}
238
+ </a>
222
239
  <nav class="site-nav">
223
240
  {% block nav %}
224
241
  {% if menus and menus.header %}
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes