focomy 0.1.106__tar.gz → 0.1.107__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 (209) hide show
  1. {focomy-0.1.106 → focomy-0.1.107}/PKG-INFO +1 -1
  2. {focomy-0.1.106 → focomy-0.1.107}/core/config.py +1 -1
  3. {focomy-0.1.106 → focomy-0.1.107}/core/engine/routes.py +7 -0
  4. {focomy-0.1.106 → focomy-0.1.107}/pyproject.toml +1 -1
  5. {focomy-0.1.106 → focomy-0.1.107}/themes/default/templates/base.html +50 -1
  6. {focomy-0.1.106 → focomy-0.1.107}/.gitignore +0 -0
  7. {focomy-0.1.106 → focomy-0.1.107}/LICENSE +0 -0
  8. {focomy-0.1.106 → focomy-0.1.107}/README.md +0 -0
  9. {focomy-0.1.106 → focomy-0.1.107}/core/__init__.py +0 -0
  10. {focomy-0.1.106 → focomy-0.1.107}/core/admin/__init__.py +0 -0
  11. {focomy-0.1.106 → focomy-0.1.107}/core/admin/routes.py +0 -0
  12. {focomy-0.1.106 → focomy-0.1.107}/core/admin/url.py +0 -0
  13. {focomy-0.1.106 → focomy-0.1.107}/core/api/__init__.py +0 -0
  14. {focomy-0.1.106 → focomy-0.1.107}/core/api/auth.py +0 -0
  15. {focomy-0.1.106 → focomy-0.1.107}/core/api/comments.py +0 -0
  16. {focomy-0.1.106 → focomy-0.1.107}/core/api/entities.py +0 -0
  17. {focomy-0.1.106 → focomy-0.1.107}/core/api/forms.py +0 -0
  18. {focomy-0.1.106 → focomy-0.1.107}/core/api/media.py +0 -0
  19. {focomy-0.1.106 → focomy-0.1.107}/core/api/relations.py +0 -0
  20. {focomy-0.1.106 → focomy-0.1.107}/core/api/revisions.py +0 -0
  21. {focomy-0.1.106 → focomy-0.1.107}/core/api/schema.py +0 -0
  22. {focomy-0.1.106 → focomy-0.1.107}/core/api/search.py +0 -0
  23. {focomy-0.1.106 → focomy-0.1.107}/core/api/seo.py +0 -0
  24. {focomy-0.1.106 → focomy-0.1.107}/core/cli.py +0 -0
  25. {focomy-0.1.106 → focomy-0.1.107}/core/content_types/__init__.py +0 -0
  26. {focomy-0.1.106 → focomy-0.1.107}/core/content_types/audit_log.yaml +0 -0
  27. {focomy-0.1.106 → focomy-0.1.107}/core/content_types/category.yaml +0 -0
  28. {focomy-0.1.106 → focomy-0.1.107}/core/content_types/channel.yaml +0 -0
  29. {focomy-0.1.106 → focomy-0.1.107}/core/content_types/comment.yaml +0 -0
  30. {focomy-0.1.106 → focomy-0.1.107}/core/content_types/edit_lock.yaml +0 -0
  31. {focomy-0.1.106 → focomy-0.1.107}/core/content_types/form.yaml +0 -0
  32. {focomy-0.1.106 → focomy-0.1.107}/core/content_types/form_submission.yaml +0 -0
  33. {focomy-0.1.106 → focomy-0.1.107}/core/content_types/menu_item.yaml +0 -0
  34. {focomy-0.1.106 → focomy-0.1.107}/core/content_types/news.yaml +0 -0
  35. {focomy-0.1.106 → focomy-0.1.107}/core/content_types/page.yaml +0 -0
  36. {focomy-0.1.106 → focomy-0.1.107}/core/content_types/plugin.yaml +0 -0
  37. {focomy-0.1.106 → focomy-0.1.107}/core/content_types/plugin_developer.yaml +0 -0
  38. {focomy-0.1.106 → focomy-0.1.107}/core/content_types/plugin_review.yaml +0 -0
  39. {focomy-0.1.106 → focomy-0.1.107}/core/content_types/post.yaml +0 -0
  40. {focomy-0.1.106 → focomy-0.1.107}/core/content_types/redirect.yaml +0 -0
  41. {focomy-0.1.106 → focomy-0.1.107}/core/content_types/scheduled_action.yaml +0 -0
  42. {focomy-0.1.106 → focomy-0.1.107}/core/content_types/series.yaml +0 -0
  43. {focomy-0.1.106 → focomy-0.1.107}/core/content_types/site_setting.yaml +0 -0
  44. {focomy-0.1.106 → focomy-0.1.107}/core/content_types/tag.yaml +0 -0
  45. {focomy-0.1.106 → focomy-0.1.107}/core/content_types/user.yaml +0 -0
  46. {focomy-0.1.106 → focomy-0.1.107}/core/content_types/widget.yaml +0 -0
  47. {focomy-0.1.106 → focomy-0.1.107}/core/content_types/workflow_history.yaml +0 -0
  48. {focomy-0.1.106 → focomy-0.1.107}/core/database.py +0 -0
  49. {focomy-0.1.106 → focomy-0.1.107}/core/engine/__init__.py +0 -0
  50. {focomy-0.1.106 → focomy-0.1.107}/core/main.py +0 -0
  51. {focomy-0.1.106 → focomy-0.1.107}/core/migrations/env.py +0 -0
  52. {focomy-0.1.106 → focomy-0.1.107}/core/migrations/script.py.mako +0 -0
  53. {focomy-0.1.106 → focomy-0.1.107}/core/migrations/versions/2038bdf6693b_add_import_jobs_table.py +0 -0
  54. {focomy-0.1.106 → focomy-0.1.107}/core/migrations/versions/3a1b2c3d4e5f_add_file_hash_to_media.py +0 -0
  55. {focomy-0.1.106 → focomy-0.1.107}/core/models/__init__.py +0 -0
  56. {focomy-0.1.106 → focomy-0.1.107}/core/models/auth.py +0 -0
  57. {focomy-0.1.106 → focomy-0.1.107}/core/models/entity.py +0 -0
  58. {focomy-0.1.106 → focomy-0.1.107}/core/models/import_job.py +0 -0
  59. {focomy-0.1.106 → focomy-0.1.107}/core/models/media.py +0 -0
  60. {focomy-0.1.106 → focomy-0.1.107}/core/models/relation.py +0 -0
  61. {focomy-0.1.106 → focomy-0.1.107}/core/models/revision.py +0 -0
  62. {focomy-0.1.106 → focomy-0.1.107}/core/plugins/__init__.py +0 -0
  63. {focomy-0.1.106 → focomy-0.1.107}/core/plugins/base.py +0 -0
  64. {focomy-0.1.106 → focomy-0.1.107}/core/plugins/hooks.py +0 -0
  65. {focomy-0.1.106 → focomy-0.1.107}/core/plugins/loader.py +0 -0
  66. {focomy-0.1.106 → focomy-0.1.107}/core/plugins/manager.py +0 -0
  67. {focomy-0.1.106 → focomy-0.1.107}/core/rate_limit.py +0 -0
  68. {focomy-0.1.106 → focomy-0.1.107}/core/relations.yaml +0 -0
  69. {focomy-0.1.106 → focomy-0.1.107}/core/scaffold/.env.template +0 -0
  70. {focomy-0.1.106 → focomy-0.1.107}/core/scaffold/.gitignore.template +0 -0
  71. {focomy-0.1.106 → focomy-0.1.107}/core/scaffold/__init__.py +0 -0
  72. {focomy-0.1.106 → focomy-0.1.107}/core/scaffold/config.yaml.template +0 -0
  73. {focomy-0.1.106 → focomy-0.1.107}/core/scaffold/themes/default/templates/archive.html +0 -0
  74. {focomy-0.1.106 → focomy-0.1.107}/core/scaffold/themes/default/templates/base.html +0 -0
  75. {focomy-0.1.106 → focomy-0.1.107}/core/scaffold/themes/default/templates/category.html +0 -0
  76. {focomy-0.1.106 → focomy-0.1.107}/core/scaffold/themes/default/templates/home.html +0 -0
  77. {focomy-0.1.106 → focomy-0.1.107}/core/scaffold/themes/default/templates/post.html +0 -0
  78. {focomy-0.1.106 → focomy-0.1.107}/core/scaffold/themes/default/templates/search.html +0 -0
  79. {focomy-0.1.106 → focomy-0.1.107}/core/scaffold/themes/default/theme.yaml +0 -0
  80. {focomy-0.1.106 → focomy-0.1.107}/core/schemas/__init__.py +0 -0
  81. {focomy-0.1.106 → focomy-0.1.107}/core/schemas/import_schema.py +0 -0
  82. {focomy-0.1.106 → focomy-0.1.107}/core/seo/__init__.py +0 -0
  83. {focomy-0.1.106 → focomy-0.1.107}/core/services/__init__.py +0 -0
  84. {focomy-0.1.106 → focomy-0.1.107}/core/services/api_auth.py +0 -0
  85. {focomy-0.1.106 → focomy-0.1.107}/core/services/assets.py +0 -0
  86. {focomy-0.1.106 → focomy-0.1.107}/core/services/audit.py +0 -0
  87. {focomy-0.1.106 → focomy-0.1.107}/core/services/auth.py +0 -0
  88. {focomy-0.1.106 → focomy-0.1.107}/core/services/block_converter.py +0 -0
  89. {focomy-0.1.106 → focomy-0.1.107}/core/services/bulk.py +0 -0
  90. {focomy-0.1.106 → focomy-0.1.107}/core/services/cache.py +0 -0
  91. {focomy-0.1.106 → focomy-0.1.107}/core/services/cleanup.py +0 -0
  92. {focomy-0.1.106 → focomy-0.1.107}/core/services/comment.py +0 -0
  93. {focomy-0.1.106 → focomy-0.1.107}/core/services/config_priority.py +0 -0
  94. {focomy-0.1.106 → focomy-0.1.107}/core/services/deployment.py +0 -0
  95. {focomy-0.1.106 → focomy-0.1.107}/core/services/edit_lock.py +0 -0
  96. {focomy-0.1.106 → focomy-0.1.107}/core/services/entity.py +0 -0
  97. {focomy-0.1.106 → focomy-0.1.107}/core/services/export.py +0 -0
  98. {focomy-0.1.106 → focomy-0.1.107}/core/services/field.py +0 -0
  99. {focomy-0.1.106 → focomy-0.1.107}/core/services/formula.py +0 -0
  100. {focomy-0.1.106 → focomy-0.1.107}/core/services/i18n.py +0 -0
  101. {focomy-0.1.106 → focomy-0.1.107}/core/services/index.py +0 -0
  102. {focomy-0.1.106 → focomy-0.1.107}/core/services/invite.py +0 -0
  103. {focomy-0.1.106 → focomy-0.1.107}/core/services/link_validator.py +0 -0
  104. {focomy-0.1.106 → focomy-0.1.107}/core/services/logging.py +0 -0
  105. {focomy-0.1.106 → focomy-0.1.107}/core/services/mail.py +0 -0
  106. {focomy-0.1.106 → focomy-0.1.107}/core/services/marketplace.py +0 -0
  107. {focomy-0.1.106 → focomy-0.1.107}/core/services/marketplace_verify.py +0 -0
  108. {focomy-0.1.106 → focomy-0.1.107}/core/services/media.py +0 -0
  109. {focomy-0.1.106 → focomy-0.1.107}/core/services/media_cleanup.py +0 -0
  110. {focomy-0.1.106 → focomy-0.1.107}/core/services/menu.py +0 -0
  111. {focomy-0.1.106 → focomy-0.1.107}/core/services/migration_helpers.py +0 -0
  112. {focomy-0.1.106 → focomy-0.1.107}/core/services/oauth.py +0 -0
  113. {focomy-0.1.106 → focomy-0.1.107}/core/services/pagination.py +0 -0
  114. {focomy-0.1.106 → focomy-0.1.107}/core/services/plugin_resolver.py +0 -0
  115. {focomy-0.1.106 → focomy-0.1.107}/core/services/plugin_sandbox.py +0 -0
  116. {focomy-0.1.106 → focomy-0.1.107}/core/services/preview.py +0 -0
  117. {focomy-0.1.106 → focomy-0.1.107}/core/services/query_optimizer.py +0 -0
  118. {focomy-0.1.106 → focomy-0.1.107}/core/services/rbac.py +0 -0
  119. {focomy-0.1.106 → focomy-0.1.107}/core/services/redirect.py +0 -0
  120. {focomy-0.1.106 → focomy-0.1.107}/core/services/relation.py +0 -0
  121. {focomy-0.1.106 → focomy-0.1.107}/core/services/revision.py +0 -0
  122. {focomy-0.1.106 → focomy-0.1.107}/core/services/routing.py +0 -0
  123. {focomy-0.1.106 → focomy-0.1.107}/core/services/sanitizer.py +0 -0
  124. {focomy-0.1.106 → focomy-0.1.107}/core/services/schedule.py +0 -0
  125. {focomy-0.1.106 → focomy-0.1.107}/core/services/search.py +0 -0
  126. {focomy-0.1.106 → focomy-0.1.107}/core/services/sentry.py +0 -0
  127. {focomy-0.1.106 → focomy-0.1.107}/core/services/seo.py +0 -0
  128. {focomy-0.1.106 → focomy-0.1.107}/core/services/settings.py +0 -0
  129. {focomy-0.1.106 → focomy-0.1.107}/core/services/spam_filter.py +0 -0
  130. {focomy-0.1.106 → focomy-0.1.107}/core/services/storage.py +0 -0
  131. {focomy-0.1.106 → focomy-0.1.107}/core/services/theme.py +0 -0
  132. {focomy-0.1.106 → focomy-0.1.107}/core/services/theme_inheritance.py +0 -0
  133. {focomy-0.1.106 → focomy-0.1.107}/core/services/thumbnail.py +0 -0
  134. {focomy-0.1.106 → focomy-0.1.107}/core/services/update.py +0 -0
  135. {focomy-0.1.106 → focomy-0.1.107}/core/services/widget.py +0 -0
  136. {focomy-0.1.106 → focomy-0.1.107}/core/services/wordpress_import/__init__.py +0 -0
  137. {focomy-0.1.106 → focomy-0.1.107}/core/services/wordpress_import/acf.py +0 -0
  138. {focomy-0.1.106 → focomy-0.1.107}/core/services/wordpress_import/analyzer.py +0 -0
  139. {focomy-0.1.106 → focomy-0.1.107}/core/services/wordpress_import/constants.py +0 -0
  140. {focomy-0.1.106 → focomy-0.1.107}/core/services/wordpress_import/content_sanitizer.py +0 -0
  141. {focomy-0.1.106 → focomy-0.1.107}/core/services/wordpress_import/diff_detector.py +0 -0
  142. {focomy-0.1.106 → focomy-0.1.107}/core/services/wordpress_import/dry_run.py +0 -0
  143. {focomy-0.1.106 → focomy-0.1.107}/core/services/wordpress_import/error_collector.py +0 -0
  144. {focomy-0.1.106 → focomy-0.1.107}/core/services/wordpress_import/id_resolver.py +0 -0
  145. {focomy-0.1.106 → focomy-0.1.107}/core/services/wordpress_import/import_service.py +0 -0
  146. {focomy-0.1.106 → focomy-0.1.107}/core/services/wordpress_import/importer.py +0 -0
  147. {focomy-0.1.106 → focomy-0.1.107}/core/services/wordpress_import/link_fixer.py +0 -0
  148. {focomy-0.1.106 → focomy-0.1.107}/core/services/wordpress_import/media.py +0 -0
  149. {focomy-0.1.106 → focomy-0.1.107}/core/services/wordpress_import/preview.py +0 -0
  150. {focomy-0.1.106 → focomy-0.1.107}/core/services/wordpress_import/redirects.py +0 -0
  151. {focomy-0.1.106 → focomy-0.1.107}/core/services/wordpress_import/rest_client.py +0 -0
  152. {focomy-0.1.106 → focomy-0.1.107}/core/services/wordpress_import/rollback.py +0 -0
  153. {focomy-0.1.106 → focomy-0.1.107}/core/services/wordpress_import/verification.py +0 -0
  154. {focomy-0.1.106 → focomy-0.1.107}/core/services/wordpress_import/wxr_parser.py +0 -0
  155. {focomy-0.1.106 → focomy-0.1.107}/core/services/workflow.py +0 -0
  156. {focomy-0.1.106 → focomy-0.1.107}/core/templates/admin/backup.html +0 -0
  157. {focomy-0.1.106 → focomy-0.1.107}/core/templates/admin/base.html +0 -0
  158. {focomy-0.1.106 → focomy-0.1.107}/core/templates/admin/comments.html +0 -0
  159. {focomy-0.1.106 → focomy-0.1.107}/core/templates/admin/components/editor.html +0 -0
  160. {focomy-0.1.106 → focomy-0.1.107}/core/templates/admin/customize.html +0 -0
  161. {focomy-0.1.106 → focomy-0.1.107}/core/templates/admin/dashboard.html +0 -0
  162. {focomy-0.1.106 → focomy-0.1.107}/core/templates/admin/entity_form.html +0 -0
  163. {focomy-0.1.106 → focomy-0.1.107}/core/templates/admin/entity_list.html +0 -0
  164. {focomy-0.1.106 → focomy-0.1.107}/core/templates/admin/forgot_password.html +0 -0
  165. {focomy-0.1.106 → focomy-0.1.107}/core/templates/admin/import.html +0 -0
  166. {focomy-0.1.106 → focomy-0.1.107}/core/templates/admin/link_validator.html +0 -0
  167. {focomy-0.1.106 → focomy-0.1.107}/core/templates/admin/login.html +0 -0
  168. {focomy-0.1.106 → focomy-0.1.107}/core/templates/admin/media.html +0 -0
  169. {focomy-0.1.106 → focomy-0.1.107}/core/templates/admin/menus.html +0 -0
  170. {focomy-0.1.106 → focomy-0.1.107}/core/templates/admin/plugins.html +0 -0
  171. {focomy-0.1.106 → focomy-0.1.107}/core/templates/admin/redirects.html +0 -0
  172. {focomy-0.1.106 → focomy-0.1.107}/core/templates/admin/reset_password.html +0 -0
  173. {focomy-0.1.106 → focomy-0.1.107}/core/templates/admin/settings.html +0 -0
  174. {focomy-0.1.106 → focomy-0.1.107}/core/templates/admin/sitemap.html +0 -0
  175. {focomy-0.1.106 → focomy-0.1.107}/core/templates/admin/system.html +0 -0
  176. {focomy-0.1.106 → focomy-0.1.107}/core/templates/admin/themes.html +0 -0
  177. {focomy-0.1.106 → focomy-0.1.107}/core/templates/admin/widgets.html +0 -0
  178. {focomy-0.1.106 → focomy-0.1.107}/core/themes/__init__.py +0 -0
  179. {focomy-0.1.106 → focomy-0.1.107}/core/themes/customizer.py +0 -0
  180. {focomy-0.1.106 → focomy-0.1.107}/core/themes/manager.py +0 -0
  181. {focomy-0.1.106 → focomy-0.1.107}/core/themes/marketplace.py +0 -0
  182. {focomy-0.1.106 → focomy-0.1.107}/core/utils.py +0 -0
  183. {focomy-0.1.106 → focomy-0.1.107}/static/favicon.svg +0 -0
  184. {focomy-0.1.106 → focomy-0.1.107}/themes/blog/templates/base.html +0 -0
  185. {focomy-0.1.106 → focomy-0.1.107}/themes/blog/templates/home.html +0 -0
  186. {focomy-0.1.106 → focomy-0.1.107}/themes/blog/templates/post.html +0 -0
  187. {focomy-0.1.106 → focomy-0.1.107}/themes/blog/theme.yaml +0 -0
  188. {focomy-0.1.106 → focomy-0.1.107}/themes/corporate/templates/base.html +0 -0
  189. {focomy-0.1.106 → focomy-0.1.107}/themes/corporate/templates/home.html +0 -0
  190. {focomy-0.1.106 → focomy-0.1.107}/themes/corporate/templates/page.html +0 -0
  191. {focomy-0.1.106 → focomy-0.1.107}/themes/corporate/theme.yaml +0 -0
  192. {focomy-0.1.106 → focomy-0.1.107}/themes/default/templates/404.html +0 -0
  193. {focomy-0.1.106 → focomy-0.1.107}/themes/default/templates/500.html +0 -0
  194. {focomy-0.1.106 → focomy-0.1.107}/themes/default/templates/archive.html +0 -0
  195. {focomy-0.1.106 → focomy-0.1.107}/themes/default/templates/category.html +0 -0
  196. {focomy-0.1.106 → focomy-0.1.107}/themes/default/templates/channel.html +0 -0
  197. {focomy-0.1.106 → focomy-0.1.107}/themes/default/templates/form.html +0 -0
  198. {focomy-0.1.106 → focomy-0.1.107}/themes/default/templates/form_success.html +0 -0
  199. {focomy-0.1.106 → focomy-0.1.107}/themes/default/templates/home.html +0 -0
  200. {focomy-0.1.106 → focomy-0.1.107}/themes/default/templates/page.html +0 -0
  201. {focomy-0.1.106 → focomy-0.1.107}/themes/default/templates/post.html +0 -0
  202. {focomy-0.1.106 → focomy-0.1.107}/themes/default/templates/search.html +0 -0
  203. {focomy-0.1.106 → focomy-0.1.107}/themes/default/templates/series.html +0 -0
  204. {focomy-0.1.106 → focomy-0.1.107}/themes/default/theme.yaml +0 -0
  205. {focomy-0.1.106 → focomy-0.1.107}/themes/minimal/templates/base.html +0 -0
  206. {focomy-0.1.106 → focomy-0.1.107}/themes/minimal/templates/home.html +0 -0
  207. {focomy-0.1.106 → focomy-0.1.107}/themes/minimal/templates/page.html +0 -0
  208. {focomy-0.1.106 → focomy-0.1.107}/themes/minimal/templates/post.html +0 -0
  209. {focomy-0.1.106 → focomy-0.1.107}/themes/minimal/theme.yaml +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: focomy
3
- Version: 0.1.106
3
+ Version: 0.1.107
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
@@ -143,7 +143,7 @@ class FeaturesConfig(BaseModel):
143
143
 
144
144
  # Phase 5: Extended features
145
145
  comment: bool = False
146
- form: bool = False
146
+ form: bool = True
147
147
  api_auth: bool = False
148
148
  oauth: bool = False
149
149
  mail: bool = False
@@ -163,6 +163,13 @@ async def render_theme(
163
163
  # Build edit URL if entity provided
164
164
  if entity and content_type:
165
165
  context["edit_url"] = f"/admin/{content_type}/{entity.id}/edit"
166
+ # Add content_types for admin bar dropdown
167
+ all_ct = field_service.get_all_content_types()
168
+ context["content_types"] = {
169
+ name: ct.model_dump()
170
+ for name, ct in all_ct.items()
171
+ if ct.admin_menu # Only show types with admin_menu=true
172
+ }
166
173
  else:
167
174
  context["is_admin"] = False
168
175
 
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "focomy"
7
- version = "0.1.106"
7
+ version = "0.1.107"
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"
@@ -123,7 +123,18 @@
123
123
  <div id="admin-bar">
124
124
  <a href="/" class="admin-bar-site">{{ site_name }}</a>
125
125
  <a href="/admin">ダッシュボード</a>
126
- <a href="/admin/post/new">+ 新規投稿</a>
126
+ <div class="admin-bar-dropdown">
127
+ <button class="admin-bar-dropdown-btn">+ 新規作成</button>
128
+ <div class="admin-bar-dropdown-menu">
129
+ {% if content_types %}
130
+ {% for name, ct in content_types.items()|sort(attribute='0') %}
131
+ <a href="/admin/{{ name }}/new">{{ ct.label or name }}</a>
132
+ {% endfor %}
133
+ {% else %}
134
+ <a href="/admin/post/new">投稿</a>
135
+ {% endif %}
136
+ </div>
137
+ </div>
127
138
  {% if edit_url %}
128
139
  <a href="{{ edit_url }}">編集</a>
129
140
  {% endif %}
@@ -163,6 +174,44 @@
163
174
  .admin-bar-user {
164
175
  color: #94a3b8;
165
176
  }
177
+ .admin-bar-dropdown {
178
+ position: relative;
179
+ }
180
+ .admin-bar-dropdown-btn {
181
+ background: transparent;
182
+ border: none;
183
+ color: white;
184
+ cursor: pointer;
185
+ font-size: inherit;
186
+ padding: 0;
187
+ }
188
+ .admin-bar-dropdown-btn:hover {
189
+ text-decoration: underline;
190
+ }
191
+ .admin-bar-dropdown-menu {
192
+ display: none;
193
+ position: absolute;
194
+ top: 100%;
195
+ left: 0;
196
+ background: #1e293b;
197
+ border: 1px solid #374151;
198
+ border-radius: 4px;
199
+ min-width: 150px;
200
+ padding: 0.5rem 0;
201
+ box-shadow: 0 4px 6px rgba(0,0,0,0.3);
202
+ }
203
+ .admin-bar-dropdown-menu a {
204
+ display: block;
205
+ padding: 0.5rem 1rem;
206
+ white-space: nowrap;
207
+ }
208
+ .admin-bar-dropdown-menu a:hover {
209
+ background: #374151;
210
+ text-decoration: none;
211
+ }
212
+ .admin-bar-dropdown:hover .admin-bar-dropdown-menu {
213
+ display: block;
214
+ }
166
215
  body { padding-top: 32px; }
167
216
  </style>
168
217
  {% endif %}
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