From bd443b17fb540910ece34f37f938a3cf173bbf1c Mon Sep 17 00:00:00 2001 From: isaacclad Date: Mon, 29 Jun 2026 13:51:55 +0000 Subject: [PATCH] Make launcher scroll affordance visible on open. Co-authored-by: Cursor --- resources/css/app.css | 64 ++++++++++++++++++--- resources/views/partials/launcher.blade.php | 34 +++++++---- 2 files changed, 80 insertions(+), 18 deletions(-) diff --git a/resources/css/app.css b/resources/css/app.css index e08358f..c3e13b8 100644 --- a/resources/css/app.css +++ b/resources/css/app.css @@ -165,36 +165,86 @@ html.qr-mobile-page body { } } -/* Ladill app launcher — cap at 6 rows (18 apps), always-visible scroll indicator */ +/* Ladill app launcher — cap at 6 rows (18 apps), always-visible scroll cues */ +.ladill-launcher-apps-wrap { + position: relative; +} + .ladill-launcher-apps { max-height: calc(6 * 5.25rem + 5 * 0.25rem); overflow-y: scroll; overscroll-behavior: contain; scrollbar-gutter: stable; scrollbar-width: thin; - scrollbar-color: rgb(148 163 184) rgb(241 245 249); + scrollbar-color: rgb(100 116 139) rgb(226 232 240); margin-right: -0.25rem; padding-right: 0.25rem; } +/* Clip the last visible row so the next row peeks — scroll is obvious without hovering. */ +.ladill-launcher-apps--peek { + max-height: calc(6 * 5.25rem + 5 * 0.25rem - 1.75rem); +} + .ladill-launcher-apps::-webkit-scrollbar { -webkit-appearance: none; - width: 8px; + width: 10px; } .ladill-launcher-apps::-webkit-scrollbar-track { - background: rgb(241 245 249); + background: rgb(226 232 240); border-radius: 9999px; } .ladill-launcher-apps::-webkit-scrollbar-thumb { - background-color: rgb(148 163 184); + background-color: rgb(100 116 139); border-radius: 9999px; min-height: 2.5rem; - border: 2px solid rgb(241 245 249); + border: 2px solid rgb(226 232 240); background-clip: padding-box; } .ladill-launcher-apps::-webkit-scrollbar-thumb:hover { - background-color: rgb(100 116 139); + background-color: rgb(71 85 105); +} + +/* Always-visible rail — does not rely on OS overlay scrollbars. */ +.ladill-launcher-scroll-rail { + position: absolute; + top: 0; + right: 0; + bottom: 0; + width: 10px; + border-radius: 9999px; + background: rgb(226 232 240); + pointer-events: none; +} + +.ladill-launcher-scroll-fade { + position: absolute; + left: 0; + right: 12px; + bottom: 0; + height: 2.25rem; + background: linear-gradient(to bottom, rgb(255 255 255 / 0), rgb(255 255 255)); + pointer-events: none; +} + +.ladill-launcher-scroll-more { + position: absolute; + left: 50%; + bottom: 0.125rem; + z-index: 1; + display: flex; + height: 1.25rem; + width: 1.25rem; + -webkit-transform: translateX(-50%); + transform: translateX(-50%); + align-items: center; + justify-content: center; + border-radius: 9999px; + background: rgb(255 255 255); + color: rgb(100 116 139); + box-shadow: 0 1px 2px rgb(15 23 42 / 0.08); + pointer-events: none; } diff --git a/resources/views/partials/launcher.blade.php b/resources/views/partials/launcher.blade.php index ac7ad55..da916b7 100644 --- a/resources/views/partials/launcher.blade.php +++ b/resources/views/partials/launcher.blade.php @@ -10,6 +10,7 @@ config('ladill_launcher.apps', []), fn (array $app) => parse_url($app['url'], PHP_URL_HOST) !== $selfHost )); + $launcherOverflows = count($launcherApps) > 18; @endphp @if (! empty($launcherApps))
@@ -37,18 +38,29 @@ 'bottom-full left-0 mb-2' => $sidebar, ])>

All apps

-
-
- @foreach ($launcherApps as $app) - - - - - {{ $app['name'] }} - - @endforeach +
$launcherOverflows])> +
$launcherOverflows])> +
+ @foreach ($launcherApps as $app) + + + + + {{ $app['name'] }} + + @endforeach +
+ @if ($launcherOverflows) + + + + @endif