diff --git a/config/assets.php b/config/assets.php index 4b21a78..5d3d9eb 100644 --- a/config/assets.php +++ b/config/assets.php @@ -20,6 +20,7 @@ return [ ], 'default' => [ 'css/vendor-overrides/multi-select.css', + 'css/components/app-icon-button.css', 'css/components/app-buttons.css', 'css/vendor-overrides/gridjs.css', 'css/layout/app-topbar.css', diff --git a/pages/admin/mail-log/view(default).phtml b/pages/admin/mail-log/view(default).phtml index 32615a2..751a41a 100644 --- a/pages/admin/mail-log/view(default).phtml +++ b/pages/admin/mail-log/view(default).phtml @@ -23,7 +23,7 @@ $statusBadge = $status->badgeVariant(); ?>

- +

diff --git a/templates/partials/app-details-titlebar.phtml b/templates/partials/app-details-titlebar.phtml index c34d5a1..127661d 100644 --- a/templates/partials/app-details-titlebar.phtml +++ b/templates/partials/app-details-titlebar.phtml @@ -70,7 +70,7 @@ $resolveToneClass = static function (string $tone, string $detailActionKind, str >

- +

diff --git a/web/css/components/app-details-titlebar.css b/web/css/components/app-details-titlebar.css index c78f154..f70e562 100644 --- a/web/css/components/app-details-titlebar.css +++ b/web/css/components/app-details-titlebar.css @@ -43,22 +43,7 @@ white-space: nowrap; } - .app-details-titlebar h1 i { - background: var(--app-background-color); - width: 35px; - height: 29px; - font-size: 15px; /* icon-font metric — intentional px */ - border-radius: var(--app-border-radius); - display: inline-flex; - align-items: center; - justify-content: center; - color: var(--app-contrast); - border: 1px solid var(--app-border); - color: var(--app-muted-color); - box-shadow: rgba(0, 0, 0, 0.1) 0px 1px 2px; - } - - .app-details-titlebar h1:has(i) { + .app-details-titlebar h1:has(.app-icon-button) { display: flex; align-items: center; gap: 7px; diff --git a/web/css/components/app-icon-button.css b/web/css/components/app-icon-button.css new file mode 100644 index 0000000..de42fb7 --- /dev/null +++ b/web/css/components/app-icon-button.css @@ -0,0 +1,34 @@ +@layer components { + /* Reusable round ghost icon button — transparent circle with subtle hover. + Used for back buttons, inline icon actions, etc. */ + .app-icon-button { + display: inline-flex; + align-items: center; + justify-content: center; + width: 28px; + height: 28px; + padding: 0; + border: none; + border-radius: 50%; + background: transparent; + color: var(--app-muted-color); + font-size: var(--text-sm); + line-height: 1; + cursor: pointer; + text-decoration: none; + transition: + background-color var(--app-transition), + color var(--app-transition); + } + + .app-icon-button:hover, + .app-icon-button:focus-visible { + background: color-mix(in srgb, var(--app-contrast) 8%, transparent); + color: var(--app-contrast); + } + + .app-icon-button i { + font-size: 15px; /* icon-font metric — intentional px */ + line-height: 1; + } +}