diff --git a/src/lib/components/presence/DiscordPresenceEditor.svelte b/src/lib/components/presence/DiscordPresenceEditor.svelte index 415cba6..52550b0 100644 --- a/src/lib/components/presence/DiscordPresenceEditor.svelte +++ b/src/lib/components/presence/DiscordPresenceEditor.svelte @@ -10,7 +10,6 @@ import { DEFAULT_DISCORD_PRESENCE_CONFIG, DISCORD_PRESENCE_PRESETS, - discordPresenceCustomConfig, interpolatePresenceString, loadDiscordPresenceConfig, pushIdlePresenceFromConfig, @@ -25,14 +24,11 @@ Check, Clock, Code2, - Copy, ExternalLink, - Eye, Gamepad2, Globe, Home, Image as ImageIcon, - Info, Link, LoaderCircle, Maximize2, @@ -41,10 +37,8 @@ Play, Plus, RotateCcw, - Save, Sparkles, Type, - User, X, } from '@lucide/svelte'; import { invoke } from '@tauri-apps/api/core'; @@ -101,8 +95,10 @@ // Preset selector let selectedPresetName = $state('EZPPFarm Default'); + const SIM_MODES = ['osu!', 'taiko', 'catch', 'mania'] as const; + // Simulation parameters for preview - let simMode = $state<'osu!' | 'taiko' | 'catch' | 'mania'>('osu!'); + let simMode = $state<(typeof SIM_MODES)[number]>('osu!'); let simAction = $state('Playing...'); let simBeatmapIndex = $state(0); let simRank = $state(1337); @@ -206,7 +202,11 @@ if (standalone) { try { - unlistenSync = await listen('sync-theme-editor-global-data', (event) => { + unlistenSync = await listen<{ + user?: Parameters[0]; + info?: Parameters[0]; + launcherVersion?: string; + }>('sync-theme-editor-global-data', (event) => { if (event.payload?.user) currentUser.set(event.payload.user); if (event.payload?.info) currentUserInfo.set(event.payload.info); if (event.payload?.launcherVersion) launcherVersion.set(event.payload.launcherVersion); @@ -844,7 +844,7 @@ Details (First Line) [{'{'}mode{'}'}] {'{'}action{'}'}[{'{'}mode}] {'{'}action} handleInputFocus('playingDetails')} onblur={handleInputBlur} - placeholder="[{'{'}mode{'}'}] {'{'}action{'}'}" + placeholder="[{'{'}mode}] {'{'}action}" class="h-8 bg-black/40 text-xs border-theme-800 focus:border-primary" /> @@ -862,14 +862,14 @@ - {'{'}beatmap{'}'} + {'{'}beatmap} handleInputFocus('playingState')} onblur={handleInputBlur} - placeholder="{'{'}beatmap{'}'}" + placeholder="{'{'}beatmap}" class="h-8 bg-black/40 text-xs border-theme-800 focus:border-primary" /> @@ -907,14 +907,14 @@ > Cover Art Hover Tooltip - {'{'}beatmap{'}'} + {'{'}beatmap} handleInputFocus('playingLargeImageText')} onblur={handleInputBlur} - placeholder="{'{'}beatmap{'}'}" + placeholder="{'{'}beatmap}" class="h-8 bg-black/40 text-xs border-theme-800 focus:border-primary" /> @@ -945,7 +945,7 @@ Small Badge Hover Tooltip {'{'}username{'}'} (#{'{'}rank{'}'}){'{'}username} (#{'{'}rank}) handleInputFocus('playingSmallImageText')} onblur={handleInputBlur} - placeholder="{'{'}username{'}'} (#{'{'}rank{'}'})" + placeholder="{'{'}username} (#{'{'}rank})" class="h-8 bg-black/40 text-xs border-theme-800 focus:border-primary" /> @@ -1031,7 +1031,7 @@
handleInputFocus('playingButton1Url')} onblur={handleInputBlur} - placeholder="{'{'}beatmapUrl{'}'}" + placeholder="{'{'}beatmapUrl}" class="h-8 bg-black/40 text-xs border-theme-800 focus:border-primary" />
@@ -1128,7 +1128,7 @@ bordered={false} >
- {#each DISCORD_PRESENCE_PRESETS as preset} + {#each DISCORD_PRESENCE_PRESETS as preset (preset.name)}
- {#each PLACEHOLDERS as p} + {#each PLACEHOLDERS as p (p.token)}
@@ -1215,7 +1215,7 @@
- {#each PLACEHOLDERS as p} + {#each PLACEHOLDERS as p (p.token)} @@ -1372,7 +1372,7 @@
Action:
- {#each ['Playing...', 'Editing...', 'AFK...'] as act} + {#each ['Playing...', 'Editing...', 'AFK...'] as act (act)}

- In editor mode, canvas clicks select layers for dragging. Test actions using this button, or Shift+click on canvas. + In editor mode, canvas clicks select layers for dragging. Test actions using this button, + or Shift+click on canvas.

@@ -2502,7 +2503,8 @@ {:else if element.widget === 'telemetry'} Pill bar showing beatmap counts, skin counts, ping, and osu! build. {:else if element.widget === 'header'} - Launcher title and dynamic greeting. Full shows title and subtitle, Compact shows an inline pill greeting, and Minimal displays title only. + Launcher title and dynamic greeting. Full shows title and subtitle, Compact shows an + inline pill greeting, and Minimal displays title only. {:else} Launcher title and dynamic greeting. {/if} diff --git a/src/lib/components/theme/ThemeIconPicker.svelte b/src/lib/components/theme/ThemeIconPicker.svelte index b804a7d..3872dfb 100644 --- a/src/lib/components/theme/ThemeIconPicker.svelte +++ b/src/lib/components/theme/ThemeIconPicker.svelte @@ -9,7 +9,7 @@ } from '$lib/themeIconCatalog'; import { DEFAULT_THEME_ICON_SET, type ThemeIconSet } from '$lib/themeIcons'; import ThemeIcon from './ThemeIcon.svelte'; - import { Check, ChevronDown, ChevronsUpDown, LayoutGrid, List, Search, X } from '@lucide/svelte'; + import { Check, ChevronsUpDown, LayoutGrid, List, Search, X } from '@lucide/svelte'; let { value = $bindable(undefined), diff --git a/src/lib/components/theme/ThemeTextStyleControls.svelte b/src/lib/components/theme/ThemeTextStyleControls.svelte index 67767d8..6d8f267 100644 --- a/src/lib/components/theme/ThemeTextStyleControls.svelte +++ b/src/lib/components/theme/ThemeTextStyleControls.svelte @@ -4,11 +4,7 @@ import Input from '$lib/components/ui/input/input.svelte'; import Label from '$lib/components/ui/label/label.svelte'; import * as Select from '$lib/components/ui/select'; - import type { - ThemeV2TextDecoration, - ThemeV2TextStyle, - ThemeV2TextTransform, - } from '$lib/themeV2'; + import type { ThemeV2TextDecoration, ThemeV2TextStyle, ThemeV2TextTransform } from '$lib/themeV2'; import { Bold, Italic, RotateCcw, Strikethrough, Underline } from '@lucide/svelte'; let { diff --git a/src/lib/components/theme/ThemeV2Elements.svelte b/src/lib/components/theme/ThemeV2Elements.svelte index dfebfb4..6e8ac47 100644 --- a/src/lib/components/theme/ThemeV2Elements.svelte +++ b/src/lib/components/theme/ThemeV2Elements.svelte @@ -44,17 +44,7 @@ } from '$lib/themeV2'; import { currentUser } from '$lib/userAuthentication'; import { countryCodeToEmoji, formatRelativeTime, openURL } from '$lib/utils'; - import { - Boxes, - ChevronRight, - Clock, - Medal, - Move, - RotateCw, - TrendingDown, - TrendingUp, - Trophy, - } from '@lucide/svelte'; + import { Boxes, ChevronRight, Clock, Move, RotateCw, Trophy } from '@lucide/svelte'; import { onDestroy } from 'svelte'; import { SvelteSet } from 'svelte/reactivity'; import { TextMorph } from 'torph/svelte'; diff --git a/src/lib/components/ui/calendar/calendar-caption.svelte b/src/lib/components/ui/calendar/calendar-caption.svelte index 5c93037..35e3da9 100644 --- a/src/lib/components/ui/calendar/calendar-caption.svelte +++ b/src/lib/components/ui/calendar/calendar-caption.svelte @@ -1,76 +1,76 @@ {#snippet MonthSelect()} - { - if (!placeholder) return; - const v = Number.parseInt(e.currentTarget.value); - const newPlaceholder = placeholder.set({ month: v }); - placeholder = newPlaceholder.subtract({ months: monthIndex }); - }} - /> + { + if (!placeholder) return; + const v = Number.parseInt(e.currentTarget.value); + const newPlaceholder = placeholder.set({ month: v }); + placeholder = newPlaceholder.subtract({ months: monthIndex }); + }} + /> {/snippet} {#snippet YearSelect()} - + {/snippet} -{#if captionLayout === "dropdown"} - {@render MonthSelect()} - {@render YearSelect()} -{:else if captionLayout === "dropdown-months"} - {@render MonthSelect()} - {#if placeholder} - {formatYear(placeholder)} - {/if} -{:else if captionLayout === "dropdown-years"} - {#if placeholder} - {formatMonth(placeholder)} - {/if} - {@render YearSelect()} +{#if captionLayout === 'dropdown'} + {@render MonthSelect()} + {@render YearSelect()} +{:else if captionLayout === 'dropdown-months'} + {@render MonthSelect()} + {#if placeholder} + {formatYear(placeholder)} + {/if} +{:else if captionLayout === 'dropdown-years'} + {#if placeholder} + {formatMonth(placeholder)} + {/if} + {@render YearSelect()} {:else} - {formatMonth(month)} {formatYear(month)} + {formatMonth(month)} {formatYear(month)} {/if} diff --git a/src/lib/components/ui/calendar/calendar-cell.svelte b/src/lib/components/ui/calendar/calendar-cell.svelte index 4cdb548..2546922 100644 --- a/src/lib/components/ui/calendar/calendar-cell.svelte +++ b/src/lib/components/ui/calendar/calendar-cell.svelte @@ -1,19 +1,19 @@ diff --git a/src/lib/components/ui/calendar/calendar-day.svelte b/src/lib/components/ui/calendar/calendar-day.svelte index 19d7bde..dbc06d6 100644 --- a/src/lib/components/ui/calendar/calendar-day.svelte +++ b/src/lib/components/ui/calendar/calendar-day.svelte @@ -1,35 +1,35 @@ span]:text-xs [&>span]:opacity-70", - className - )} - {...restProps} + bind:ref + class={cn( + buttonVariants({ variant: 'ghost' }), + 'flex size-(--cell-size) flex-col items-center justify-center gap-1 p-0 leading-none font-normal whitespace-nowrap select-none', + '[&[data-today]:not([data-selected])]:bg-accent [&[data-today]:not([data-selected])]:text-accent-foreground [&[data-today][data-disabled]]:text-muted-foreground', + 'data-[selected]:bg-primary dark:data-[selected]:hover:bg-accent/50 data-[selected]:text-primary-foreground', + // Outside months + '[&[data-outside-month]:not([data-selected])]:text-muted-foreground [&[data-outside-month]:not([data-selected])]:hover:text-accent-foreground', + // Disabled + 'data-[disabled]:text-muted-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50', + // Unavailable + 'data-[unavailable]:text-muted-foreground data-[unavailable]:line-through', + // hover + 'dark:hover:text-accent-foreground', + // focus + 'focus:border-ring focus:ring-ring/50 focus:relative', + // inner spans + '[&>span]:text-xs [&>span]:opacity-70', + className + )} + {...restProps} /> diff --git a/src/lib/components/ui/calendar/calendar-grid-body.svelte b/src/lib/components/ui/calendar/calendar-grid-body.svelte index 8cd86de..71b44fa 100644 --- a/src/lib/components/ui/calendar/calendar-grid-body.svelte +++ b/src/lib/components/ui/calendar/calendar-grid-body.svelte @@ -1,12 +1,12 @@ diff --git a/src/lib/components/ui/calendar/calendar-grid-head.svelte b/src/lib/components/ui/calendar/calendar-grid-head.svelte index 333edc4..118a752 100644 --- a/src/lib/components/ui/calendar/calendar-grid-head.svelte +++ b/src/lib/components/ui/calendar/calendar-grid-head.svelte @@ -1,12 +1,12 @@ diff --git a/src/lib/components/ui/calendar/calendar-grid-row.svelte b/src/lib/components/ui/calendar/calendar-grid-row.svelte index 9032236..723e795 100644 --- a/src/lib/components/ui/calendar/calendar-grid-row.svelte +++ b/src/lib/components/ui/calendar/calendar-grid-row.svelte @@ -1,12 +1,12 @@ - + diff --git a/src/lib/components/ui/calendar/calendar-grid.svelte b/src/lib/components/ui/calendar/calendar-grid.svelte index e0c8627..2fd186b 100644 --- a/src/lib/components/ui/calendar/calendar-grid.svelte +++ b/src/lib/components/ui/calendar/calendar-grid.svelte @@ -1,16 +1,16 @@ diff --git a/src/lib/components/ui/calendar/calendar-head-cell.svelte b/src/lib/components/ui/calendar/calendar-head-cell.svelte index 131807e..8e321ab 100644 --- a/src/lib/components/ui/calendar/calendar-head-cell.svelte +++ b/src/lib/components/ui/calendar/calendar-head-cell.svelte @@ -1,19 +1,19 @@ diff --git a/src/lib/components/ui/calendar/calendar-header.svelte b/src/lib/components/ui/calendar/calendar-header.svelte index c39e955..0f2c225 100644 --- a/src/lib/components/ui/calendar/calendar-header.svelte +++ b/src/lib/components/ui/calendar/calendar-header.svelte @@ -1,19 +1,19 @@ diff --git a/src/lib/components/ui/calendar/calendar-heading.svelte b/src/lib/components/ui/calendar/calendar-heading.svelte index a9b9810..aec494c 100644 --- a/src/lib/components/ui/calendar/calendar-heading.svelte +++ b/src/lib/components/ui/calendar/calendar-heading.svelte @@ -1,16 +1,16 @@ diff --git a/src/lib/components/ui/calendar/calendar-month-select.svelte b/src/lib/components/ui/calendar/calendar-month-select.svelte index 664afab..49f2a73 100644 --- a/src/lib/components/ui/calendar/calendar-month-select.svelte +++ b/src/lib/components/ui/calendar/calendar-month-select.svelte @@ -1,48 +1,48 @@ - - {#snippet child({ props, monthItems, selectedMonthItem })} - - - {/snippet} - + + {#snippet child({ props, monthItems, selectedMonthItem })} + + + {/snippet} + diff --git a/src/lib/components/ui/calendar/calendar-month.svelte b/src/lib/components/ui/calendar/calendar-month.svelte index e747fae..4ab4c5a 100644 --- a/src/lib/components/ui/calendar/calendar-month.svelte +++ b/src/lib/components/ui/calendar/calendar-month.svelte @@ -1,15 +1,15 @@ -
- {@render children?.()} +
+ {@render children?.()}
diff --git a/src/lib/components/ui/calendar/calendar-months.svelte b/src/lib/components/ui/calendar/calendar-months.svelte index f717a9d..a5b7c37 100644 --- a/src/lib/components/ui/calendar/calendar-months.svelte +++ b/src/lib/components/ui/calendar/calendar-months.svelte @@ -1,19 +1,19 @@
- {@render children?.()} + {@render children?.()}
diff --git a/src/lib/components/ui/calendar/calendar-nav.svelte b/src/lib/components/ui/calendar/calendar-nav.svelte index 27f33d7..7e7ffc5 100644 --- a/src/lib/components/ui/calendar/calendar-nav.svelte +++ b/src/lib/components/ui/calendar/calendar-nav.svelte @@ -1,19 +1,19 @@ diff --git a/src/lib/components/ui/calendar/calendar-next-button.svelte b/src/lib/components/ui/calendar/calendar-next-button.svelte index 5c5a78d..3048047 100644 --- a/src/lib/components/ui/calendar/calendar-next-button.svelte +++ b/src/lib/components/ui/calendar/calendar-next-button.svelte @@ -1,31 +1,31 @@ {#snippet Fallback()} - + {/snippet} diff --git a/src/lib/components/ui/calendar/calendar-prev-button.svelte b/src/lib/components/ui/calendar/calendar-prev-button.svelte index 33cfd63..1367210 100644 --- a/src/lib/components/ui/calendar/calendar-prev-button.svelte +++ b/src/lib/components/ui/calendar/calendar-prev-button.svelte @@ -1,31 +1,31 @@ {#snippet Fallback()} - + {/snippet} diff --git a/src/lib/components/ui/calendar/calendar-year-select.svelte b/src/lib/components/ui/calendar/calendar-year-select.svelte index 33cc961..80cbca6 100644 --- a/src/lib/components/ui/calendar/calendar-year-select.svelte +++ b/src/lib/components/ui/calendar/calendar-year-select.svelte @@ -1,47 +1,47 @@ - - {#snippet child({ props, yearItems, selectedYearItem })} - - - {/snippet} - + + {#snippet child({ props, yearItems, selectedYearItem })} + + + {/snippet} + diff --git a/src/lib/components/ui/calendar/calendar.svelte b/src/lib/components/ui/calendar/calendar.svelte index 29b6fff..435989d 100644 --- a/src/lib/components/ui/calendar/calendar.svelte +++ b/src/lib/components/ui/calendar/calendar.svelte @@ -1,42 +1,42 @@ - {#snippet children({ months, weekdays })} - - - - - - {#each months as month, monthIndex (month)} - - - - - - - - {#each weekdays as weekday (weekday)} - - {weekday.slice(0, 2)} - - {/each} - - - - {#each month.weeks as weekDates (weekDates)} - - {#each weekDates as date (date)} - - {#if day} - {@render day({ - day: date, - outsideMonth: !isEqualMonth(date, month.value), - })} - {:else} - - {/if} - - {/each} - - {/each} - - - - {/each} - - {/snippet} + {#snippet children({ months, weekdays })} + + + + + + {#each months as month, monthIndex (month)} + + + + + + + + {#each weekdays as weekday (weekday)} + + {weekday.slice(0, 2)} + + {/each} + + + + {#each month.weeks as weekDates (weekDates)} + + {#each weekDates as date (date)} + + {#if day} + {@render day({ + day: date, + outsideMonth: !isEqualMonth(date, month.value), + })} + {:else} + + {/if} + + {/each} + + {/each} + + + + {/each} + + {/snippet} diff --git a/src/lib/components/ui/calendar/index.ts b/src/lib/components/ui/calendar/index.ts index f3a16d2..401102d 100644 --- a/src/lib/components/ui/calendar/index.ts +++ b/src/lib/components/ui/calendar/index.ts @@ -1,40 +1,40 @@ -import Root from "./calendar.svelte"; -import Cell from "./calendar-cell.svelte"; -import Day from "./calendar-day.svelte"; -import Grid from "./calendar-grid.svelte"; -import Header from "./calendar-header.svelte"; -import Months from "./calendar-months.svelte"; -import GridRow from "./calendar-grid-row.svelte"; -import Heading from "./calendar-heading.svelte"; -import GridBody from "./calendar-grid-body.svelte"; -import GridHead from "./calendar-grid-head.svelte"; -import HeadCell from "./calendar-head-cell.svelte"; -import NextButton from "./calendar-next-button.svelte"; -import PrevButton from "./calendar-prev-button.svelte"; -import MonthSelect from "./calendar-month-select.svelte"; -import YearSelect from "./calendar-year-select.svelte"; -import Month from "./calendar-month.svelte"; -import Nav from "./calendar-nav.svelte"; -import Caption from "./calendar-caption.svelte"; +import Caption from './calendar-caption.svelte'; +import Cell from './calendar-cell.svelte'; +import Day from './calendar-day.svelte'; +import GridBody from './calendar-grid-body.svelte'; +import GridHead from './calendar-grid-head.svelte'; +import GridRow from './calendar-grid-row.svelte'; +import Grid from './calendar-grid.svelte'; +import HeadCell from './calendar-head-cell.svelte'; +import Header from './calendar-header.svelte'; +import Heading from './calendar-heading.svelte'; +import MonthSelect from './calendar-month-select.svelte'; +import Month from './calendar-month.svelte'; +import Months from './calendar-months.svelte'; +import Nav from './calendar-nav.svelte'; +import NextButton from './calendar-next-button.svelte'; +import PrevButton from './calendar-prev-button.svelte'; +import YearSelect from './calendar-year-select.svelte'; +import Root from './calendar.svelte'; export { - Day, - Cell, - Grid, - Header, - Months, - GridRow, - Heading, - GridBody, - GridHead, - HeadCell, - NextButton, - PrevButton, - Nav, - Month, - YearSelect, - MonthSelect, - Caption, - // - Root as Calendar, + Day, + Cell, + Grid, + Header, + Months, + GridRow, + Heading, + GridBody, + GridHead, + HeadCell, + NextButton, + PrevButton, + Nav, + Month, + YearSelect, + MonthSelect, + Caption, + // + Root as Calendar, }; diff --git a/src/lib/components/ui/date-picker/date-picker.svelte b/src/lib/components/ui/date-picker/date-picker.svelte index 7a11356..e4dd2da 100644 --- a/src/lib/components/ui/date-picker/date-picker.svelte +++ b/src/lib/components/ui/date-picker/date-picker.svelte @@ -73,7 +73,7 @@ return; } - let next = ''; + let next: string; if (withTime) { const d = new Date( calendarValue.year, diff --git a/src/lib/components/ui/popover/index.ts b/src/lib/components/ui/popover/index.ts index b79d12e..3de6d0b 100644 --- a/src/lib/components/ui/popover/index.ts +++ b/src/lib/components/ui/popover/index.ts @@ -1,19 +1,19 @@ -import Root from "./popover.svelte"; -import Close from "./popover-close.svelte"; -import Content from "./popover-content.svelte"; -import Trigger from "./popover-trigger.svelte"; -import Portal from "./popover-portal.svelte"; +import Close from './popover-close.svelte'; +import Content from './popover-content.svelte'; +import Portal from './popover-portal.svelte'; +import Trigger from './popover-trigger.svelte'; +import Root from './popover.svelte'; export { - Root, - Content, - Trigger, - Close, - Portal, - // - Root as Popover, - Content as PopoverContent, - Trigger as PopoverTrigger, - Close as PopoverClose, - Portal as PopoverPortal, + Root, + Content, + Trigger, + Close, + Portal, + // + Root as Popover, + Content as PopoverContent, + Trigger as PopoverTrigger, + Close as PopoverClose, + Portal as PopoverPortal, }; diff --git a/src/lib/components/ui/popover/popover-close.svelte b/src/lib/components/ui/popover/popover-close.svelte index c360925..c9518f4 100644 --- a/src/lib/components/ui/popover/popover-close.svelte +++ b/src/lib/components/ui/popover/popover-close.svelte @@ -1,7 +1,7 @@ diff --git a/src/lib/components/ui/popover/popover-content.svelte b/src/lib/components/ui/popover/popover-content.svelte index 3d79f3c..12bf69f 100644 --- a/src/lib/components/ui/popover/popover-content.svelte +++ b/src/lib/components/ui/popover/popover-content.svelte @@ -1,31 +1,31 @@ - + diff --git a/src/lib/components/ui/popover/popover-portal.svelte b/src/lib/components/ui/popover/popover-portal.svelte index dd8265f..234766e 100644 --- a/src/lib/components/ui/popover/popover-portal.svelte +++ b/src/lib/components/ui/popover/popover-portal.svelte @@ -1,7 +1,7 @@ diff --git a/src/lib/components/ui/popover/popover-trigger.svelte b/src/lib/components/ui/popover/popover-trigger.svelte index 586323c..fa6d5c1 100644 --- a/src/lib/components/ui/popover/popover-trigger.svelte +++ b/src/lib/components/ui/popover/popover-trigger.svelte @@ -1,17 +1,17 @@ diff --git a/src/lib/components/ui/popover/popover.svelte b/src/lib/components/ui/popover/popover.svelte index 6b1aa5f..4551a94 100644 --- a/src/lib/components/ui/popover/popover.svelte +++ b/src/lib/components/ui/popover/popover.svelte @@ -1,7 +1,7 @@ diff --git a/src/lib/components/ui/tooltip/index.ts b/src/lib/components/ui/tooltip/index.ts index 6c460e4..ee306f9 100644 --- a/src/lib/components/ui/tooltip/index.ts +++ b/src/lib/components/ui/tooltip/index.ts @@ -1,22 +1,22 @@ -import Root from "./tooltip.svelte"; -import Content from "./tooltip-content.svelte"; -import Trigger from "./tooltip-trigger.svelte"; -import Provider from "./tooltip-provider.svelte"; -import Portal from "./tooltip-portal.svelte"; -import Arrow from "./tooltip-arrow.svelte"; +import Arrow from './tooltip-arrow.svelte'; +import Content from './tooltip-content.svelte'; +import Portal from './tooltip-portal.svelte'; +import Provider from './tooltip-provider.svelte'; +import Trigger from './tooltip-trigger.svelte'; +import Root from './tooltip.svelte'; export { - Root, - Content, - Trigger, - Provider, - Portal, - Arrow, - // - Root as Tooltip, - Content as TooltipContent, - Trigger as TooltipTrigger, - Provider as TooltipProvider, - Portal as TooltipPortal, - Arrow as TooltipArrow, + Root, + Content, + Trigger, + Provider, + Portal, + Arrow, + // + Root as Tooltip, + Content as TooltipContent, + Trigger as TooltipTrigger, + Provider as TooltipProvider, + Portal as TooltipPortal, + Arrow as TooltipArrow, }; diff --git a/src/lib/components/ui/tooltip/tooltip-content.svelte b/src/lib/components/ui/tooltip/tooltip-content.svelte index b3c20c3..6fdd2c6 100644 --- a/src/lib/components/ui/tooltip/tooltip-content.svelte +++ b/src/lib/components/ui/tooltip/tooltip-content.svelte @@ -1,29 +1,29 @@ - + diff --git a/src/lib/components/ui/tooltip/tooltip-portal.svelte b/src/lib/components/ui/tooltip/tooltip-portal.svelte index d234f7d..7b9e8f9 100644 --- a/src/lib/components/ui/tooltip/tooltip-portal.svelte +++ b/src/lib/components/ui/tooltip/tooltip-portal.svelte @@ -1,7 +1,7 @@ diff --git a/src/lib/components/ui/tooltip/tooltip-provider.svelte b/src/lib/components/ui/tooltip/tooltip-provider.svelte index 6766ca3..d059c59 100644 --- a/src/lib/components/ui/tooltip/tooltip-provider.svelte +++ b/src/lib/components/ui/tooltip/tooltip-provider.svelte @@ -1,13 +1,7 @@ - + diff --git a/src/lib/components/ui/tooltip/tooltip-trigger.svelte b/src/lib/components/ui/tooltip/tooltip-trigger.svelte index 404e6d0..94fa3ae 100644 --- a/src/lib/components/ui/tooltip/tooltip-trigger.svelte +++ b/src/lib/components/ui/tooltip/tooltip-trigger.svelte @@ -1,17 +1,17 @@ diff --git a/src/lib/components/ui/tooltip/tooltip.svelte b/src/lib/components/ui/tooltip/tooltip.svelte index 0b0f9ce..42a939b 100644 --- a/src/lib/components/ui/tooltip/tooltip.svelte +++ b/src/lib/components/ui/tooltip/tooltip.svelte @@ -1,7 +1,7 @@ diff --git a/src/lib/themeData.ts b/src/lib/themeData.ts index 22b33be..c06a1c3 100644 --- a/src/lib/themeData.ts +++ b/src/lib/themeData.ts @@ -177,7 +177,7 @@ export const resolveThemeDataValue = ( const { global, theme, screen, mode = 'osu', now = new Date() } = context; const stats = global.user.stats[mode]; - let value = ''; + let value: string; switch (field) { case 'user.name': value = global.user.name; diff --git a/src/lib/themeIconCatalog.ts b/src/lib/themeIconCatalog.ts index 7396374..7e35581 100644 --- a/src/lib/themeIconCatalog.ts +++ b/src/lib/themeIconCatalog.ts @@ -1,10 +1,5 @@ import { THEME_ICON_BODIES, type ThemeIconBody } from './themeIconData'; -import { - DEFAULT_THEME_ICON_SET, - THEME_ICON_NAMES, - type ThemeIconName, - type ThemeIconSet, -} from './themeIcons'; +import { DEFAULT_THEME_ICON_SET, THEME_ICON_NAMES, type ThemeIconSet } from './themeIcons'; import lucideCollection from '@iconify-json/lucide/icons.json'; import phCollection from '@iconify-json/ph/icons.json'; import tablerCollection from '@iconify-json/tabler/icons.json'; diff --git a/src/lib/themeIcons.ts b/src/lib/themeIcons.ts index 116adab..59aa80b 100644 --- a/src/lib/themeIcons.ts +++ b/src/lib/themeIcons.ts @@ -78,8 +78,6 @@ export const THEME_ICON_NAMES = [ export type ThemeIconName = (typeof THEME_ICON_NAMES)[number] | (string & {}); -const ICON_NAME_SET = new Set(THEME_ICON_NAMES); - export const isThemeIconName = (value: unknown): value is ThemeIconName => typeof value === 'string' && value.trim().length > 0 && value.length <= 120; diff --git a/src/lib/themePreview.ts b/src/lib/themePreview.ts index 2c9c3df..5e0e737 100644 --- a/src/lib/themePreview.ts +++ b/src/lib/themePreview.ts @@ -5,7 +5,6 @@ import { themeGlobalData, } from './themeData'; import { getThemeIconBody } from './themeIconCatalog'; -import { THEME_ICON_BODIES } from './themeIconData'; import { themeArcGeometry, themeClockDate, @@ -1215,7 +1214,7 @@ const drawFooter = (context: PreviewContext, chrome?: ThemeV2Chrome) => { ctx.restore(); }; -const getWidgetPlayerData = (context: PreviewContext) => { +const getWidgetPlayerData = (_context: PreviewContext) => { const globalData = get(themeGlobalData); const name = globalData?.user?.name || getThemeDataSampleValue('user.name') || 'Player'; const rank = globalData?.user?.stats?.osu?.rank @@ -1318,8 +1317,7 @@ const drawWidgetElement = async (context: PreviewContext, element: ThemeV2Widget } else if (element.widget === 'header') { const { name } = getWidgetPlayerData(context); const hour = new Date().getHours(); - const timeGreeting = - hour < 12 ? 'Good morning' : hour < 18 ? 'Good afternoon' : 'Good evening'; + const timeGreeting = hour < 12 ? 'Good morning' : hour < 18 ? 'Good afternoon' : 'Good evening'; const greeting = `${timeGreeting}, ${name}!`; ctx.save(); @@ -1822,7 +1820,15 @@ const drawWidgetElement = async (context: PreviewContext, element: ThemeV2Widget const badgeW = 24; const badgeH = 20; const badgeX = element.x + element.width - badgeW - 10; - fillRoundedRect(ctx, badgeX, centerY - badgeH / 2, badgeW, badgeH, 4, 'rgba(251, 191, 36, 0.2)'); + fillRoundedRect( + ctx, + badgeX, + centerY - badgeH / 2, + badgeW, + badgeH, + 4, + 'rgba(251, 191, 36, 0.2)' + ); strokeRoundedRect( ctx, badgeX, diff --git a/src/screens/Launch.svelte b/src/screens/Launch.svelte index 253f633..45937b5 100644 --- a/src/screens/Launch.svelte +++ b/src/screens/Launch.svelte @@ -156,7 +156,6 @@ Clock, ExternalLink, Medal, - Sparkles, TrendingDown, TrendingUp, Trophy, @@ -650,7 +649,6 @@ userEvents.length === 0 ? 0 : Math.min(recentActivityIndex, userEvents.length - 1) ); const activeEvent = $derived(userEvents[safeEventIndex]); - const latestEvent = $derived(activeEvent ?? userEvents[0]); const timeGreeting = $derived.by(() => { const hour = new Date().getHours(); @@ -2607,7 +2605,7 @@ {#if userEvents.length > 1}
- {#each userEvents.slice(0, 4) as event, idx} + {#each userEvents.slice(0, 4) as event, idx (`${event.time}-${idx}`)} {@const eventGrade = gradeBadgeStyle(event.grade)}