summaryrefslogtreecommitdiff
path: root/layouts/_partials/components
diff options
context:
space:
mode:
authorBigCoke233 <hi@guhub.cn>2025-12-17 12:02:49 +0800
committerBigCoke233 <hi@guhub.cn>2025-12-17 12:02:49 +0800
commit3971379b39c8c194bf2e736d88307c57028beb6b (patch)
treec1c1d2eb2ff074d979afd3ec44cf7b2f76ac0d1b /layouts/_partials/components
parent28054bd7890378822b1255008f394e286813b5ba (diff)
feat: add webmention to action menu
Former-commit-id: dd27c7bfb5932d8402b1f89984196f8566c14d5e
Diffstat (limited to 'layouts/_partials/components')
-rw-r--r--layouts/_partials/components/toggle-button.html53
1 files changed, 53 insertions, 0 deletions
diff --git a/layouts/_partials/components/toggle-button.html b/layouts/_partials/components/toggle-button.html
new file mode 100644
index 00000000..3aef1509
--- /dev/null
+++ b/layouts/_partials/components/toggle-button.html
@@ -0,0 +1,53 @@
+{{/*
+ Reusable Toggle Button Component
+
+ Parameters:
+ - id: (string) Unique identifier for the button group (e.g. "comments").
+ Used to generate IDs: {id}-toggle, {id}-section, {id}-count.
+ - title: (string) Tooltip title.
+ - icon: (string) Path to the icon image.
+ - countId: (string, optional) Override for count element ID. Defaults to "{id}-count".
+ - sectionId: (string, optional) Override for section element ID. Defaults to "{id}-section".
+ - buttonId: (string, optional) Override for button element ID. Defaults to "{id}-toggle".
+*/}}
+{{ $id := .id }}
+{{ $buttonId := default (printf "%s-toggle" $id) .buttonId }}
+{{ $sectionId := default (printf "%s-section" $id) .sectionId }}
+{{ $countId := default (printf "%s-count" $id) .countId }}
+
+<button class="dark:invert flex items-center justify-center gap-1.5 min-w-12 h-12 px-2 border-none bg-transparent text-gray-600 cursor-pointer relative transition-all duration-200 hover:bg-black/5 hover:rounded-lg group"
+ id="{{ $buttonId }}" title="{{ .title }}" data-tooltip>
+ <img src="{{ .icon }}" width="20" height="20"
+ alt="{{ .title }}"
+ class="brightness-40 flex-shrink-0 dark:brightness-70 dark:contrast-120" />
+ <span class="text-xs font-bold text-gray-600 min-w-4 text-center bg-white/90 rounded-xl px-1.5 py-0.5 shadow-sm dark:text-gray-400 dark:bg-black/70"
+ id="{{ $countId }}">...</span>
+</button>
+
+<script>
+ (function() {
+ document.addEventListener('DOMContentLoaded', () => {
+ const button = document.getElementById("{{ $buttonId }}");
+ const section = document.getElementById("{{ $sectionId }}");
+
+ if (!button || !section) return;
+
+ button.addEventListener('click', () => {
+ const isHidden = section.classList.contains('hidden');
+ const entranceAnimation = 'animate-slide-in-down';
+ const exitAnimation = 'animate-slide-out-up';
+
+ if (isHidden) {
+ section.classList.remove('hidden', exitAnimation);
+ section.classList.add(entranceAnimation);
+ } else {
+ section.classList.remove(entranceAnimation);
+ section.classList.add(exitAnimation);
+ setTimeout(() => {
+ section.classList.add('hidden');
+ }, 200);
+ }
+ });
+ });
+ })();
+</script>