diff --git a/src/lib/client/ui/button/Button.svelte b/src/lib/client/ui/button/Button.svelte index 3d32137..9d4a466 100644 --- a/src/lib/client/ui/button/Button.svelte +++ b/src/lib/client/ui/button/Button.svelte @@ -11,8 +11,10 @@ export let textColor: string = ''; export let iconPosition: 'left' | 'right' = 'left'; export let type: 'button' | 'submit' = 'button'; - // Responsive: auto-switch to xs on smaller screens (< 1280px) + // Responsive: auto-switch to xs on smaller screens (< 768px) export let responsive: boolean = false; + // Hide text on mobile (show icon only) + export let hideTextOnMobile: boolean = false; export let fullWidth: boolean = false; // Optional href - renders as anchor instead of button export let href: string | undefined = undefined; @@ -75,7 +77,7 @@ {/if} {#if text} - {text} + {text} {/if} {#if icon && iconPosition === 'right'} @@ -88,7 +90,7 @@ {/if} {#if text} - {text} + {text} {/if} {#if icon && iconPosition === 'right'} diff --git a/src/lib/client/ui/dropdown/Dropdown.svelte b/src/lib/client/ui/dropdown/Dropdown.svelte index c67ac8b..73a139f 100644 --- a/src/lib/client/ui/dropdown/Dropdown.svelte +++ b/src/lib/client/ui/dropdown/Dropdown.svelte @@ -2,6 +2,7 @@ import { onMount } from 'svelte'; export let position: 'left' | 'right' | 'middle' = 'left'; + export let mobilePosition: 'left' | 'right' | 'middle' | null = null; export let minWidth: string = '12rem'; export let compact: boolean = false; // Fixed positioning to escape overflow containers @@ -11,13 +12,24 @@ let dropdownEl: HTMLElement; let fixedStyle = ''; + const positionClasses = { + left: 'left-0', + right: 'right-0', + middle: 'left-1/2 -translate-x-1/2' + }; + + const responsivePositionClasses = { + 'middle-to-right': 'left-1/2 -translate-x-1/2 md:left-auto md:right-0 md:translate-x-0', + 'middle-to-left': 'left-1/2 -translate-x-1/2 md:left-0 md:translate-x-0', + 'left-to-right': 'left-0 md:left-auto md:right-0', + 'right-to-left': 'right-0 md:right-auto md:left-0' + }; + $: positionClass = fixed ? '' - : { - left: 'left-0', - right: 'right-0', - middle: 'left-1/2 -translate-x-1/2' - }[position]; + : mobilePosition && mobilePosition !== position + ? responsivePositionClasses[`${mobilePosition}-to-${position}`] || positionClasses[position] + : positionClasses[position]; $: marginClass = compact ? 'mt-1' : 'mt-3'; $: gap = compact ? 4 : 12; // pixels gap below trigger diff --git a/src/lib/client/ui/modal/InfoModal.svelte b/src/lib/client/ui/modal/InfoModal.svelte index ef811f2..e5708a0 100644 --- a/src/lib/client/ui/modal/InfoModal.svelte +++ b/src/lib/client/ui/modal/InfoModal.svelte @@ -34,7 +34,7 @@