SYMBOL INDEX (1857 symbols across 573 files) FILE: containers/app-auth/middleware/handle_error.js function handleError (line 1) | function handleError(error, req, res, next) { FILE: containers/app-auth/middleware/validate_token.js constant CONSTANTS (line 8) | const CONSTANTS = require('../utils/const.js'); constant APP_PROXY_AUTH_TOKEN_PATH (line 10) | const APP_PROXY_AUTH_TOKEN_PATH = "/umbrel_/api/v1/auth/token"; function redirectState (line 12) | async function redirectState(token, req) { function redirect (line 39) | async function redirect(res, token, req) { function mw (line 43) | function mw () { FILE: containers/app-auth/utils/app.js constant CONSTANTS (line 5) | const CONSTANTS = require('./const.js'); function getBasicInfo (line 7) | async function getBasicInfo(app){ function sanitiseId (line 24) | function sanitiseId(appId){ FILE: containers/app-auth/utils/const.js function readFromEnvOrTerminate (line 1) | function readFromEnvOrTerminate(key) { FILE: containers/app-auth/utils/dashboard.js constant CONSTANTS (line 4) | const CONSTANTS = require('./const.js'); FILE: containers/app-auth/utils/express.js function getQueryParam (line 1) | function getQueryParam(req, key) { FILE: containers/app-auth/utils/hmac.js function sign (line 3) | function sign(input, secret) { function verify (line 10) | function verify(input, secret, signature){ FILE: containers/app-auth/utils/host_resolution.js constant CONSTANTS (line 5) | const CONSTANTS = require('./const.js'); function getTorHostname (line 7) | async function getTorHostname(app) { function getAppPort (line 13) | async function getAppPort(app) { function host (line 21) | async function host(req, app, origin) { FILE: containers/app-auth/utils/manager.js constant CONSTANTS (line 4) | const CONSTANTS = require('./const.js'); FILE: containers/app-auth/utils/safe_handler.js function safeHandler (line 5) | function safeHandler(handler) { FILE: containers/app-auth/utils/token.js constant JWT_ALGORITHM (line 3) | const JWT_ALGORITHM = "HS256"; function validate (line 7) | function validate(token) { FILE: containers/app-proxy/middleware/handle_error.js function handleError (line 1) | function handleError(error, req, res, next) { FILE: containers/app-proxy/routes/umbrel.js constant CONSTANTS (line 8) | const CONSTANTS = require("../utils/const.js"); constant ONE_SECOND (line 13) | const ONE_SECOND = 1000; constant ONE_MINUTE (line 14) | const ONE_MINUTE = 60 * ONE_SECOND; constant ONE_HOUR (line 15) | const ONE_HOUR = 60 * ONE_MINUTE; constant ONE_DAY (line 16) | const ONE_DAY = 24 * ONE_HOUR; constant ONE_WEEK (line 17) | const ONE_WEEK = 7 * ONE_DAY; FILE: containers/app-proxy/utils/const.js constant APP_MANIFEST_FILE (line 4) | const APP_MANIFEST_FILE = process.env.APP_MANIFEST_FILE || "/extra/umbre... constant CUSTOM_DOTENV_FILE (line 5) | const CUSTOM_DOTENV_FILE = process.env.CUSTOM_DOTENV_FILE || "/data/.env... function readUmbrelAppManifest (line 14) | function readUmbrelAppManifest() { function readFromEnvOrTerminate (line 24) | function readFromEnvOrTerminate(key) { function cleanHttpPaths (line 36) | function cleanHttpPaths(str) { FILE: containers/app-proxy/utils/express.js function removeCookie (line 1) | function removeCookie(req, cookieName) { FILE: containers/app-proxy/utils/hmac.js function sign (line 3) | function sign(input, secret) { function verify (line 10) | function verify(input, secret, signature){ FILE: containers/app-proxy/utils/manager.js constant CONSTANTS (line 4) | const CONSTANTS = require('./const.js'); FILE: containers/app-proxy/utils/proxy.js constant CONSTANTS (line 8) | const CONSTANTS = require("./const.js"); function onProxyReq (line 11) | function onProxyReq(proxyReq, req, res, config) { function onError (line 38) | function onError(err, req, res, target) { function proxy (line 52) | function proxy() { function whitelist (line 78) | function whitelist() { function blacklist (line 86) | function blacklist() { function apply (line 94) | function apply(app) { FILE: containers/app-proxy/utils/safe_handler.js function safeHandler (line 5) | function safeHandler(handler) { FILE: containers/app-proxy/utils/token.js constant JWT_ALGORITHM (line 3) | const JWT_ALGORITHM = "HS256"; function validate (line 7) | function validate(token) { FILE: containers/app-proxy/utils/tor.js constant CONSTANTS (line 3) | const CONSTANTS = require("./const.js"); function authHsUrl (line 5) | async function authHsUrl() { FILE: packages/ui/app-auth/src/login-with-umbrel.tsx type Step (line 15) | type Step = 'password' | '2fa' function LoginWithUmbrel (line 17) | function LoginWithUmbrel() { function useLogin (line 85) | function useLogin() { type App (line 148) | type App = { function useApp (line 154) | function useApp(appId: string) { function useWallpaperId (line 169) | function useWallpaperId() { function LoginWithLayout (line 188) | function LoginWithLayout({children}: {children: ReactNode}) { FILE: packages/ui/src/components/app-icon.tsx type AppIconProps (line 6) | type AppIconProps = {src?: string; size?: number; ref?: React.Ref FILE: packages/ui/src/components/cmdk.tsx function useCmdkOpen (line 38) | function useCmdkOpen() { function CmdkProvider (line 46) | function CmdkProvider({children}: {children: React.ReactNode}) { function CmdkMenu (line 65) | function CmdkMenu() { function CmdkContent (line 79) | function CmdkContent() { function FrequentApps (line 314) | function FrequentApps({onLaunchApp}: {onLaunchApp: () => void}) { function appsByFrequency (line 356) | function appsByFrequency(lastOpenedApps: string[], count: number) { function FrequentApp (line 375) | function FrequentApp({ function appStateToString (line 448) | function appStateToString(appState: AppState) { FILE: packages/ui/src/components/darken-layer.tsx function DarkenLayer (line 6) | function DarkenLayer({className}: {className?: string}) { FILE: packages/ui/src/components/fade-scroller.tsx type FadeScrollerProps (line 4) | type FadeScrollerProps = ComponentPropsWithoutRef<'div'> & { constant FADE_SCROLLER_CLASS_X (line 10) | const FADE_SCROLLER_CLASS_X = 'umbrel-fade-scroller-x' constant FADE_SCROLLER_CLASS_Y (line 11) | const FADE_SCROLLER_CLASS_Y = 'umbrel-fade-scroller-y' function useFadeScroller (line 14) | function useFadeScroller(direction: 'x' | 'y', debug?: boolean) { function FadeScroller (line 75) | function FadeScroller({direction, debug, className, ref, ...props}: Fade... FILE: packages/ui/src/components/iframe-checker.tsx function IframeChecker (line 3) | function IframeChecker({children}: {children: React.ReactNode}) { FILE: packages/ui/src/components/install-button-connected.tsx function InstallButtonConnected (line 17) | function InstallButtonConnected({app, ref}: {app: RegistryApp; ref?: Rea... FILE: packages/ui/src/components/install-button.tsx type Props (line 15) | type Props = { function InstallButton (line 24) | function InstallButton({installSize, progress, state, onInstallClick, on... function ButtonContentForState (line 51) | function ButtonContentForState({ FILE: packages/ui/src/components/markdown.tsx function Markdown (line 12) | function Markdown({className, ...props}: React.ComponentProps & function Alert (line 59) | function Alert({className, variant, icon, children, ref, ...props}: Aler... function WarningAlert (line 72) | function WarningAlert({ FILE: packages/ui/src/components/ui/animated-number.tsx type CounterProps (line 5) | type CounterProps = { function AnimatedNumber (line 9) | function AnimatedNumber({to}: CounterProps) { FILE: packages/ui/src/components/ui/arc.tsx type ProgressArcProps (line 3) | interface ProgressArcProps { FILE: packages/ui/src/components/ui/badge.tsx type BadgeProps (line 25) | interface BadgeProps extends React.HTMLAttributes, Varia... function Badge (line 29) | function Badge({className, variant, icon, children, ...props}: BadgeProp... FILE: packages/ui/src/components/ui/button-link.tsx type CustomProps (line 9) | type CustomProps = VariantProps type ButtonLinkProps (line 11) | type ButtonLinkProps = Omit, key... function ButtonLink (line 18) | function ButtonLink({className, variant, text, size, ref, ...props}: But... FILE: packages/ui/src/components/ui/button.tsx type ButtonProps (line 53) | interface ButtonProps function Button (line 58) | function Button({ FILE: packages/ui/src/components/ui/card.tsx function Card (line 6) | function Card({ FILE: packages/ui/src/components/ui/carousel.tsx type CarouselApi (line 8) | type CarouselApi = UseEmblaCarouselType[1] type UseCarouselParameters (line 9) | type UseCarouselParameters = Parameters type CarouselOptions (line 10) | type CarouselOptions = UseCarouselParameters[0] type CarouselPlugin (line 11) | type CarouselPlugin = UseCarouselParameters[1] type CarouselProps (line 13) | type CarouselProps = { type CarouselContextProps (line 20) | type CarouselContextProps = { function useCarousel (line 31) | function useCarousel() { function Carousel (line 41) | function Carousel({ function CarouselContent (line 140) | function CarouselContent({ function CarouselItem (line 158) | function CarouselItem({ function CarouselPrevious (line 176) | function CarouselPrevious({ function CarouselNext (line 207) | function CarouselNext({ FILE: packages/ui/src/components/ui/checkbox.tsx function Checkbox (line 8) | function Checkbox({ FILE: packages/ui/src/components/ui/command.tsx function Command (line 16) | function Command({ type CommandDialogProps (line 28) | type CommandDialogProps = DialogProps function CommandInput (line 55) | function CommandInput({ function CommandList (line 77) | function CommandList({ function CommandEmpty (line 94) | function CommandEmpty({ function CommandGroup (line 103) | function CommandGroup({ function CommandSeparator (line 113) | function CommandSeparator({ type CommandItemIcon (line 124) | type CommandItemIcon = string | React.ReactNode function CommandItem (line 126) | function CommandItem({ function BlurOverlay (line 184) | function BlurOverlay({ref}: {ref?: React.Ref}) { FILE: packages/ui/src/components/ui/context-menu.tsx function ContextMenuSubTrigger (line 21) | function ContextMenuSubTrigger({ function ContextMenuSubContent (line 43) | function ContextMenuSubContent({ function ContextMenuContent (line 64) | function ContextMenuContent({ function ContextMenuItem (line 87) | function ContextMenuItem({ function ContextMenuCheckboxItem (line 105) | function ContextMenuCheckboxItem({ function ContextMenuRadioItem (line 131) | function ContextMenuRadioItem({ function ContextMenuLabel (line 151) | function ContextMenuLabel({ function ContextMenuSeparator (line 173) | function ContextMenuSeparator({ FILE: packages/ui/src/components/ui/copy-button.tsx function CopyButton (line 9) | function CopyButton({value}: {value: string}) { FILE: packages/ui/src/components/ui/copyable-field.tsx function CopyableField (line 11) | function CopyableField({ FILE: packages/ui/src/components/ui/cover-message.tsx function useDelayedShow (line 11) | function useDelayedShow(ms: number) { function BareCoverMessage (line 21) | function BareCoverMessage({ function CoverMessage (line 42) | function CoverMessage({ constant COVER_MESSAGE_TARGET_ID (line 70) | const COVER_MESSAGE_TARGET_ID = 'cover-message-id' function CoverMessageTarget (line 72) | function CoverMessageTarget() { function CoverMessageContent (line 75) | function CoverMessageContent({children}: {children: React.ReactNode}) { function CoverMessageParagraph (line 80) | function CoverMessageParagraph({children, className}: {children: React.R... FILE: packages/ui/src/components/ui/debug-only.tsx function DebugOnly (line 3) | function DebugOnly({children}: {children: React.ReactNode}) { function DebugOnlyBare (line 15) | function DebugOnlyBare({children}: {children: React.ReactNode}) { FILE: packages/ui/src/components/ui/dialog.tsx function DialogOverlay (line 23) | function DialogOverlay({ function DialogContent (line 33) | function DialogContent({ function DialogTitle (line 96) | function DialogTitle({ function DialogDescription (line 112) | function DialogDescription({ FILE: packages/ui/src/components/ui/drawer.tsx function DrawerOverlay (line 17) | function DrawerOverlay({ function DrawerContent (line 27) | function DrawerContent({ function DrawerTitle (line 71) | function DrawerTitle({ function DrawerDescription (line 81) | function DrawerDescription({ function DrawerScroller (line 98) | function DrawerScroller({children}: {children: React.ReactNode}) { FILE: packages/ui/src/components/ui/dropdown-menu.tsx function DropdownMenuSubTrigger (line 21) | function DropdownMenuSubTrigger({ function DropdownMenuSubContent (line 43) | function DropdownMenuSubContent({ function DropdownMenuContent (line 64) | function DropdownMenuContent({ function DropdownMenuItem (line 89) | function DropdownMenuItem({ function DropdownMenuCheckboxItem (line 107) | function DropdownMenuCheckboxItem({ function DropdownMenuRadioItem (line 131) | function DropdownMenuRadioItem({ function DropdownMenuLabel (line 151) | function DropdownMenuLabel({ function DropdownMenuSeparator (line 169) | function DropdownMenuSeparator({ FILE: packages/ui/src/components/ui/error-boundary-card-fallback.tsx function useRouteErrorSafe (line 9) | function useRouteErrorSafe() { function ErrorBoundaryCardFallback (line 20) | function ErrorBoundaryCardFallback({error, resetErrorBoundary}: Partial<... FILE: packages/ui/src/components/ui/error-boundary-page-fallback.tsx function useRouteErrorSafe (line 23) | function useRouteErrorSafe() { function getErrorMessage (line 31) | function getErrorMessage(error: unknown): string { function ErrorBoundaryPageFallback (line 40) | function ErrorBoundaryPageFallback({error}: Partial = {}) { FILE: packages/ui/src/components/ui/fade-in-img.tsx function FadeInImg (line 5) | function FadeInImg({src, alt, className, ...props}: React.ImgHTMLAttribu... FILE: packages/ui/src/components/ui/form.tsx type FormFieldContextValue (line 19) | type FormFieldContextValue< type FormItemContextValue (line 64) | type FormItemContextValue = { function FormItem (line 70) | function FormItem({className, ...props}: React.ComponentProps<'div'>) { function FormLabel (line 80) | function FormLabel({className, ...props}: React.ComponentProps) { function FormDescription (line 108) | function FormDescription({className, ...props}: React.ComponentProps<'p'... function FormMessage (line 121) | function FormMessage({className, ...props}: React.ComponentProps<'p'>) { FILE: packages/ui/src/components/ui/generic-error-text.tsx function getErrorMessage (line 6) | function getErrorMessage(error: unknown): string { function GenericErrorText (line 12) | function GenericErrorText({error}: {error?: unknown}) { function GenericErrorDetails (line 37) | function GenericErrorDetails({error}: {error: unknown}) { FILE: packages/ui/src/components/ui/icon-button-link.tsx type CustomProps (line 11) | type CustomProps = VariantProps & { type IconButtonLinkProps (line 15) | type IconButtonLinkProps = Omit,... function IconButtonLink (line 22) | function IconButtonLink({className, variant, text, size, icon, children,... FILE: packages/ui/src/components/ui/icon-button.tsx type ButtonProps (line 9) | interface ButtonProps function IconButton (line 15) | function IconButton({className, variant, text, size, icon, children, ref... FILE: packages/ui/src/components/ui/icon.tsx type SizeVariant (line 8) | type SizeVariant = VariantProps['size'] type Size (line 9) | type Size = NonNullable type IconTypes (line 11) | type IconTypes = IconType | LucideIcon type IconProps (line 13) | type IconProps = { function Icon (line 32) | function Icon({component, size = 'default', style, className, ...props}:... FILE: packages/ui/src/components/ui/immersive-dialog.tsx function ImmersiveDialogSeparator (line 23) | function ImmersiveDialogSeparator() { function ImmersiveDialog (line 29) | function ImmersiveDialog({open, children, ...props}: ComponentPropsWitho... function ImmersiveDialogContent (line 49) | function ImmersiveDialogContent({ function ImmersiveDialogSplitContent (line 92) | function ImmersiveDialogSplitContent({ function ImmersiveDialogOverlay (line 133) | function ImmersiveDialogOverlay({ref}: {ref?: React.Ref}) { function ImmersiveDialogClose (line 145) | function ImmersiveDialogClose() { function ImmersiveDialogBody (line 160) | function ImmersiveDialogBody({ function AnimateIn (line 192) | function AnimateIn({children}: {children: React.ReactNode}) { function ImmersiveDialogFooter (line 210) | function ImmersiveDialogFooter({children, className}: {children: React.R... function ImmersiveDialogIconMessage (line 214) | function ImmersiveDialogIconMessage({ function ImmersiveDialogIconMessageKeyValue (line 252) | function ImmersiveDialogIconMessageKeyValue({ FILE: packages/ui/src/components/ui/input.tsx type InputProps (line 32) | interface InputProps extends React.InputHTMLAttributes... function Labeled (line 36) | function Labeled({children, label}: {children: React.ReactNode; label: s... function Input (line 45) | function Input({ function PasswordInput (line 71) | function PasswordInput({ function AnimatedInputError (line 121) | function AnimatedInputError({children}: {children: React.ReactNode}) { function InputError (line 157) | function InputError({children}: {children: React.ReactNode}) { FILE: packages/ui/src/components/ui/label.tsx function Label (line 9) | function Label({ FILE: packages/ui/src/components/ui/list.tsx function ListRadioItem (line 6) | function ListRadioItem({ FILE: packages/ui/src/components/ui/loading.tsx function Loading (line 5) | function Loading({children}: {children?: React.ReactNode}) { function Loading2 (line 14) | function Loading2({children}: {children?: React.ReactNode}) { function Spinner (line 23) | function Spinner({size = '4'}: {size?: string}) { FILE: packages/ui/src/components/ui/notification-badge.tsx function NotificationBadge (line 1) | function NotificationBadge({count}: {count: number}) { FILE: packages/ui/src/components/ui/pagination.tsx function PaginationContent (line 16) | function PaginationContent({ function PaginationItem (line 24) | function PaginationItem({className, ref, ...props}: React.ComponentProps... type PaginationLinkProps (line 28) | type PaginationLinkProps = { FILE: packages/ui/src/components/ui/pin-input.tsx type CodeState (line 17) | type CodeState = 'input' | 'loading' | 'error' | 'success' type PinInputProps (line 18) | type PinInputProps = { FILE: packages/ui/src/components/ui/popover.tsx function PopoverContent (line 16) | function PopoverContent({ FILE: packages/ui/src/components/ui/progress.tsx function Progress (line 31) | function Progress({ FILE: packages/ui/src/components/ui/radio-group.tsx function RadioGroup (line 6) | function RadioGroup({ function RadioGroupItem (line 16) | function RadioGroupItem({ FILE: packages/ui/src/components/ui/root-error-fallback.tsx function getErrorMessage (line 8) | function getErrorMessage(error: unknown): string { constant NETWORK_ERROR_PATTERNS (line 22) | const NETWORK_ERROR_PATTERNS = [ function isNetworkError (line 32) | function isNetworkError(error: unknown): boolean { function RootErrorFallback (line 50) | function RootErrorFallback({error}: {error: unknown}) { FILE: packages/ui/src/components/ui/scroll-area.tsx type Props (line 8) | type Props = React.ComponentPropsWithoutRef = {id: T; label: string} function SegmentedControl (line 10) | function SegmentedControl({ FILE: packages/ui/src/components/ui/separator.tsx function Separator (line 6) | function Separator({ FILE: packages/ui/src/components/ui/sheet-scroll-area.tsx type Props (line 8) | type Props = React.ComponentPropsWithoutRef & {r... FILE: packages/ui/src/constants/index.ts constant LOADING_DASH (line 5) | const LOADING_DASH = '–' constant SETTINGS_SYSTEM_CARDS_ID (line 7) | const SETTINGS_SYSTEM_CARDS_ID = 'settings-system-cards' type UmbrelHostEnvironment (line 10) | type UmbrelHostEnvironment = (typeof hostEnvironments)[number] FILE: packages/ui/src/features/backups/components/backup-device-icon.tsx function BackupDeviceIcon (line 9) | function BackupDeviceIcon({ FILE: packages/ui/src/features/backups/components/backup-location-dropdown.tsx type RestoreLocationDropdownProps (line 7) | type RestoreLocationDropdownProps = { function RestoreLocationDropdown (line 11) | function RestoreLocationDropdown({onSelect}: RestoreLocationDropdownProp... FILE: packages/ui/src/features/backups/components/backups-exclusions.tsx function BackupsExclusions (line 25) | function BackupsExclusions({showTitle = false}: {showTitle?: boolean}) { function useFileItemForPath (line 213) | function useFileItemForPath(path: string) { function FilePathRow (line 224) | function FilePathRow({path, rightSlot}: {path: string; rightSlot?: React... function AppRow (line 250) | function AppRow({ FILE: packages/ui/src/features/backups/components/configure-wizard.tsx function BackupsConfigureWizard (line 43) | function BackupsConfigureWizard() { function ConnectivityDot (line 136) | function ConnectivityDot({connected}: {connected: boolean}) { function CircularProgress (line 147) | function CircularProgress({percent, className}: {percent: number; classN... function InlineBackupProgress (line 170) | function InlineBackupProgress({percent}: {percent: number}) { function BackupNowButton (line 180) | function BackupNowButton({repoId, hidden}: {repoId: string; hidden: bool... function LocationsSection (line 194) | function LocationsSection({ function RepositoryDetails (line 296) | function RepositoryDetails({ function BackupsList (line 495) | function BackupsList({ FILE: packages/ui/src/features/backups/components/floating-island/expanded.tsx type Progress (line 7) | type Progress = {name: string; percent: number; path?: string} function ExpandedContent (line 9) | function ExpandedContent({progresses}: {progresses: Progress[]}) { FILE: packages/ui/src/features/backups/components/floating-island/index.tsx function BackupsIsland (line 10) | function BackupsIsland() { FILE: packages/ui/src/features/backups/components/floating-island/minimized.tsx function MinimizedContent (line 6) | function MinimizedContent({progress}: {count: number; progress: number}) { FILE: packages/ui/src/features/backups/components/modals/already-configured-modal.tsx function AlreadyConfiguredModal (line 8) | function AlreadyConfiguredModal({ FILE: packages/ui/src/features/backups/components/modals/connect-existing-modal.tsx function ConnectExistingModal (line 11) | function ConnectExistingModal({ FILE: packages/ui/src/features/backups/components/restore-location-dropdown.tsx type RestoreLocationDropdownProps (line 23) | type RestoreLocationDropdownProps = { function RestoreLocationDropdown (line 28) | function RestoreLocationDropdown({onSelect, isExternalStorageSupported =... FILE: packages/ui/src/features/backups/components/restore-wizard.tsx type RestoreWizardValues (line 67) | type RestoreWizardValues = {repositoryId: string; backupId?: string} type Step (line 78) | enum Step { function BackupsRestoreWizard (line 104) | function BackupsRestoreWizard() { function RepositoryStep (line 357) | function RepositoryStep({ function BackupsStep (line 579) | function BackupsStep({ function ReviewStep (line 724) | function ReviewStep({repository, backup}: {repository?: BackupRepository... FILE: packages/ui/src/features/backups/components/review-card.tsx function ReviewCard (line 3) | function ReviewCard({ FILE: packages/ui/src/features/backups/components/setup-wizard.tsx type FormValues (line 77) | type FormValues = z.infer type Step (line 90) | enum Step { function BackupsSetupWizard (line 123) | function BackupsSetupWizard() { function DestinationStep (line 395) | function DestinationStep({ function FolderPickerStep (line 670) | function FolderPickerStep({ function EncryptionStep (line 759) | function EncryptionStep() { function ReviewStep (line 809) | function ReviewStep({values}: {values: FormValues}) { FILE: packages/ui/src/features/backups/components/tab-switcher.tsx function TabSwitcher (line 4) | function TabSwitcher({ FILE: packages/ui/src/features/backups/components/tiles.tsx function SelectableTile (line 6) | function SelectableTile({ function ClickableTile (line 28) | function ClickableTile({children, onClick}: {children: React.ReactNode; ... function LoadingTile (line 39) | function LoadingTile() { function EmptyTile (line 47) | function EmptyTile({text}: {text: string}) { function RadioTile (line 55) | function RadioTile({ FILE: packages/ui/src/features/backups/hooks/use-apps-auto-excluded-paths.ts function useAppsAutoExcludedPaths (line 7) | function useAppsAutoExcludedPaths() { FILE: packages/ui/src/features/backups/hooks/use-apps-backup-ignore.ts function useAppsBackupIgnoredSummary (line 8) | function useAppsBackupIgnoredSummary() { FILE: packages/ui/src/features/backups/hooks/use-backup-ignored-paths.ts function useBackupIgnoredPaths (line 8) | function useBackupIgnoredPaths(options?: {excludeSystemPaths?: boolean}) { FILE: packages/ui/src/features/backups/hooks/use-backups.ts type BackupDestination (line 9) | type BackupDestination = type SetupBackupInput (line 13) | type SetupBackupInput = { type BackupRepository (line 19) | type BackupRepository = RouterOutput['backups']['getRepositories'][number] type Backup (line 21) | type Backup = RouterOutput['backups']['listBackups'][number] function useBackups (line 23) | function useBackups(options?: {repositoriesEnabled?: boolean}) { function useBackupProgress (line 142) | function useBackupProgress(refetchIntervalMs = 1000) { function useRestoreStatus (line 183) | function useRestoreStatus(refetchIntervalMs = 500) { function useRepositorySize (line 189) | function useRepositorySize(repositoryId: string | undefined, options?: {... function useRepositoryBackups (line 199) | function useRepositoryBackups( function useRestoreBackup (line 213) | function useRestoreBackup() { function useConnectToRepository (line 232) | function useConnectToRepository() { function useMountBackup (line 256) | function useMountBackup() { function useUnmountBackup (line 275) | function useUnmountBackup() { function useTriggerBackupForRepo (line 296) | function useTriggerBackupForRepo(repositoryId: string) { FILE: packages/ui/src/features/backups/hooks/use-existing-backup-detection.ts type ExistingRepoStatus (line 7) | type ExistingRepoStatus = 'none' | 'exists-not-configured' | 'already-co... function useExistingBackupDetection (line 9) | function useExistingBackupDetection(folder: string | undefined, reposito... FILE: packages/ui/src/features/backups/index.tsx function SplitDialog (line 13) | function SplitDialog({ function SplitLeftContent (line 45) | function SplitLeftContent({titleKey = 'backup'}: {titleKey?: string}) { function BackupsRestoreDialog (line 55) | function BackupsRestoreDialog() { FILE: packages/ui/src/features/backups/utils/backup-location-helpers.ts type DeviceKind (line 4) | type DeviceKind = 'NAS' | 'DRIVE' function getDeviceType (line 6) | function getDeviceType(path: string): DeviceKind { function getDeviceNameFromPath (line 17) | function getDeviceNameFromPath(path: string): string { function isRepoConnected (line 29) | function isRepoConnected( FILE: packages/ui/src/features/backups/utils/error-messages.ts function getUserFriendlyErrorMessage (line 4) | function getUserFriendlyErrorMessage(error: any): string { FILE: packages/ui/src/features/backups/utils/filepath-helpers.ts constant BACKUP_FILE_NAME (line 4) | const BACKUP_FILE_NAME = 'Umbrel Backup.backup' function getDisplayRepositoryPath (line 12) | function getDisplayRepositoryPath(path: string): string { function formatAppPathForDisplay (line 31) | function formatAppPathForDisplay(path: string) { function getLastPathSegment (line 38) | function getLastPathSegment(p?: string) { function getRelativePathFromRoot (line 47) | function getRelativePathFromRoot(path: string, root: string): string { function getRepositoryDisplayName (line 61) | function getRepositoryDisplayName(path: string): string { function getRepositoryRelativePath (line 74) | function getRepositoryRelativePath(path: string): string { function getRepositoryPathFromBackupFile (line 95) | function getRepositoryPathFromBackupFile(backupFilePath: string): string { FILE: packages/ui/src/features/backups/utils/sort.ts function sortBackupsByTimeDesc (line 4) | function sortBackupsByTimeDesc(backups: Backup[] | undefined | null): Ba... FILE: packages/ui/src/features/files/assets/file-items-thumbnails/index.tsx type ThumbnailProps (line 24) | type ThumbnailProps = React.ImgHTMLAttributes FILE: packages/ui/src/features/files/cmdk-search-provider.tsx constant MAX_RESULTS (line 10) | const MAX_RESULTS = 10 FILE: packages/ui/src/features/files/components/cards/server-cards.tsx function AddManuallyCard (line 3) | function AddManuallyCard({onClick, label}: {onClick?: () => void; label:... function ServerCard (line 23) | function ServerCard({ FILE: packages/ui/src/features/files/components/dialogs/add-network-share-dialog/index.tsx type Step (line 46) | enum Step { type ManualStep (line 53) | enum ManualStep { function AddNetworkShareDialog (line 61) | function AddNetworkShareDialog(props?: { function DiscoverStep (line 428) | function DiscoverStep({ function CredentialsStep (line 495) | function CredentialsStep() { function SelectShareStep (line 536) | function SelectShareStep({ FILE: packages/ui/src/features/files/components/dialogs/external-storage-unsupported-dialog/index.tsx function ExternalStorageUnsupportedDialog (line 16) | function ExternalStorageUnsupportedDialog() { FILE: packages/ui/src/features/files/components/dialogs/format-drive-dialog/index.tsx function FilesystemCard (line 24) | function FilesystemCard({ function FormatDriveDialog (line 61) | function FormatDriveDialog() { FILE: packages/ui/src/features/files/components/dialogs/permanently-delete-confirmation-dialog/index.tsx function PermanentlyDeleteConfirmationDialog (line 20) | function PermanentlyDeleteConfirmationDialog() { FILE: packages/ui/src/features/files/components/dialogs/share-info-dialog/index.tsx function ShareInfoDialog (line 30) | function ShareInfoDialog() { FILE: packages/ui/src/features/files/components/dialogs/share-info-dialog/platform-instructions/index.tsx type PlatformInstructionsProps (line 7) | interface PlatformInstructionsProps { function PlatformInstructions (line 16) | function PlatformInstructions({ FILE: packages/ui/src/features/files/components/dialogs/share-info-dialog/platform-instructions/inline-copyable-field.tsx function InlineCopyableField (line 10) | function InlineCopyableField({value, className}: {value: string; classNa... FILE: packages/ui/src/features/files/components/dialogs/share-info-dialog/platform-instructions/instruction.tsx function InstructionContainer (line 3) | function InstructionContainer({children}: {children: ReactNode}) { function InstructionItem (line 6) | function InstructionItem({children}: {children: ReactNode}) { FILE: packages/ui/src/features/files/components/dialogs/share-info-dialog/platform-instructions/ios-instructions.tsx type IOSInstructionsProps (line 10) | interface IOSInstructionsProps { function IOSInstructions (line 16) | function IOSInstructions({smbUrl, username, password}: IOSInstructionsPr... FILE: packages/ui/src/features/files/components/dialogs/share-info-dialog/platform-instructions/macos-instructions.tsx type MacOSInstructionsProps (line 13) | interface MacOSInstructionsProps { function MacOSInstructions (line 20) | function MacOSInstructions({smbUrl, username, password, name}: MacOSInst... FILE: packages/ui/src/features/files/components/dialogs/share-info-dialog/platform-instructions/umbrelos-instructions.tsx type Props (line 15) | interface Props { function UmbrelOSInstructions (line 21) | function UmbrelOSInstructions({username, password, sharename}: Props) { FILE: packages/ui/src/features/files/components/dialogs/share-info-dialog/platform-instructions/windows-instructions.tsx type WindowsInstructionsProps (line 10) | interface WindowsInstructionsProps { function WindowsInstructions (line 16) | function WindowsInstructions({smbUrl, username, password}: WindowsInstru... FILE: packages/ui/src/features/files/components/dialogs/share-info-dialog/platform-selector.tsx type Platform (line 11) | type Platform = { type PlatformSelectorProps (line 24) | interface PlatformSelectorProps { function PlatformSelector (line 29) | function PlatformSelector({selectedPlatform, onPlatformChange}: Platform... FILE: packages/ui/src/features/files/components/dialogs/share-info-dialog/share-toggle.tsx type ShareToggleProps (line 4) | interface ShareToggleProps { function ShareToggle (line 11) | function ShareToggle({name, isShared, isLoading, onToggle}: ShareToggleP... FILE: packages/ui/src/features/files/components/embedded/index.tsx function EmbeddedFiles (line 18) | function EmbeddedFiles({ FILE: packages/ui/src/features/files/components/file-viewer/audio-viewer/index.tsx type AudioViewerProps (line 6) | interface AudioViewerProps { FILE: packages/ui/src/features/files/components/file-viewer/downloader/index.tsx function DownloadDialog (line 9) | function DownloadDialog() { FILE: packages/ui/src/features/files/components/file-viewer/image-viewer/index.tsx type ImageViewerProps (line 4) | interface ImageViewerProps { function ImageViewer (line 8) | function ImageViewer({item}: ImageViewerProps) { FILE: packages/ui/src/features/files/components/file-viewer/pdf-viewer/index.tsx type PdfViewerProps (line 7) | interface PdfViewerProps { function PdfViewer (line 11) | function PdfViewer({item}: PdfViewerProps) { FILE: packages/ui/src/features/files/components/file-viewer/video-viewer/index.tsx type VideoViewerProps (line 8) | interface VideoViewerProps { function VideoViewer (line 12) | function VideoViewer({item}: VideoViewerProps) { FILE: packages/ui/src/features/files/components/file-viewer/viewer-wrapper.tsx type ViewerWrapperProps (line 5) | interface ViewerWrapperProps { FILE: packages/ui/src/features/files/components/files-dnd-wrapper/files-dnd-overlay.tsx function FilesDndOverlay (line 8) | function FilesDndOverlay() { FILE: packages/ui/src/features/files/components/files-dnd-wrapper/index.tsx function FilesDndWrapper (line 32) | function FilesDndWrapper({children}: {children: React.ReactNode}) { FILE: packages/ui/src/features/files/components/floating-islands/audio-island/equalizer.tsx constant RANGES (line 14) | const RANGES = [ type MusicEqualizerProps (line 40) | interface MusicEqualizerProps { FILE: packages/ui/src/features/files/components/floating-islands/audio-island/expanded.tsx type ExpandedContentProps (line 7) | interface ExpandedContentProps { FILE: packages/ui/src/features/files/components/floating-islands/audio-island/index.tsx type PlayerState (line 9) | interface PlayerState { function AudioIsland (line 16) | function AudioIsland() { FILE: packages/ui/src/features/files/components/floating-islands/audio-island/minimized.tsx type MinimizedContentProps (line 7) | interface MinimizedContentProps { FILE: packages/ui/src/features/files/components/floating-islands/formatting-island/expanded.tsx type FormattingDevice (line 8) | type FormattingDevice = { function ExpandedContent (line 14) | function ExpandedContent({devices}: {devices: FormattingDevice[]}) { FILE: packages/ui/src/features/files/components/floating-islands/formatting-island/index.tsx type FormattingDevice (line 7) | type FormattingDevice = { function FormattingIsland (line 13) | function FormattingIsland() { FILE: packages/ui/src/features/files/components/floating-islands/formatting-island/minimized.tsx function MinimizedContent (line 5) | function MinimizedContent({count}: {count: number}) { FILE: packages/ui/src/features/files/components/floating-islands/operations-island/expanded.tsx function ExpandedContent (line 10) | function ExpandedContent({progress, count, speed}: {progress: number; co... FILE: packages/ui/src/features/files/components/floating-islands/operations-island/index.tsx function OperationsIsland (line 7) | function OperationsIsland() { FILE: packages/ui/src/features/files/components/floating-islands/operations-island/minimized.tsx function MinimizedContent (line 7) | function MinimizedContent({ FILE: packages/ui/src/features/files/components/floating-islands/uploading-island/expanded.tsx function ExpandedContent (line 9) | function ExpandedContent() { FILE: packages/ui/src/features/files/components/floating-islands/uploading-island/index.tsx function UploadingIsland (line 5) | function UploadingIsland() { FILE: packages/ui/src/features/files/components/floating-islands/uploading-island/minimized.tsx function MinimizedContent (line 6) | function MinimizedContent() { FILE: packages/ui/src/features/files/components/listing/actions-bar/actions-bar-context.tsx type ActionsBarConfig (line 8) | interface ActionsBarConfig { type ActionsBarContextValue (line 26) | interface ActionsBarContextValue { function ActionsBarProvider (line 35) | function ActionsBarProvider({children}: {children: React.ReactNode}) { function useActionsBarConfig (line 44) | function useActionsBarConfig() { function useSetActionsBarConfig (line 53) | function useSetActionsBarConfig() { FILE: packages/ui/src/features/files/components/listing/actions-bar/index.tsx function ActionsBar (line 15) | function ActionsBar() { FILE: packages/ui/src/features/files/components/listing/actions-bar/mobile-actions.tsx function MobileActions (line 26) | function MobileActions({DropdownItems = null}: {DropdownItems?: React.Re... FILE: packages/ui/src/features/files/components/listing/actions-bar/navigation-controls.tsx function NavigationControls (line 17) | function NavigationControls() { FILE: packages/ui/src/features/files/components/listing/actions-bar/path-bar/index.tsx function PathBar (line 12) | function PathBar() { FILE: packages/ui/src/features/files/components/listing/actions-bar/path-bar/path-bar-desktop.tsx type PathSegment (line 20) | type PathSegment = { function PathBarDesktop (line 27) | function PathBarDesktop({path}: {path: string}) { type PathSegmentProps (line 199) | type PathSegmentProps = Omit & { FILE: packages/ui/src/features/files/components/listing/actions-bar/path-bar/path-bar-mobile.tsx type PathBarMobileProps (line 8) | interface PathBarMobileProps { function PathBarMobile (line 12) | function PathBarMobile({path}: PathBarMobileProps) { FILE: packages/ui/src/features/files/components/listing/actions-bar/path-bar/path-input.tsx type PathInputProps (line 8) | interface PathInputProps { function PathInput (line 13) | function PathInput({path, onClose}: PathInputProps) { FILE: packages/ui/src/features/files/components/listing/actions-bar/search-input.tsx function SearchInput (line 21) | function SearchInput() { FILE: packages/ui/src/features/files/components/listing/actions-bar/sort-dropdown.tsx function SortDropdown (line 10) | function SortDropdown() { FILE: packages/ui/src/features/files/components/listing/actions-bar/view-toggle.tsx function ViewToggle (line 9) | function ViewToggle() { FILE: packages/ui/src/features/files/components/listing/apps-listing/index.tsx function AppsListing (line 8) | function AppsListing() { FILE: packages/ui/src/features/files/components/listing/directory-listing/empty-state.tsx function EmptyStateDirectory (line 15) | function EmptyStateDirectory() { function EmptyStateNetwork (line 56) | function EmptyStateNetwork() { FILE: packages/ui/src/features/files/components/listing/directory-listing/index.tsx function DirectoryListing (line 27) | function DirectoryListing({marqueeScale = 1}: {marqueeScale?: number} = ... FILE: packages/ui/src/features/files/components/listing/file-item/circular-progress.tsx type CircularProgressProps (line 5) | interface CircularProgressProps { FILE: packages/ui/src/features/files/components/listing/file-item/editable-name.tsx type EditableNameProps (line 18) | interface EditableNameProps { FILE: packages/ui/src/features/files/components/listing/file-item/icons-view-file-item.tsx type IconsViewFileItemProps (line 16) | interface IconsViewFileItemProps { FILE: packages/ui/src/features/files/components/listing/file-item/index.tsx type FileItemProps (line 15) | interface FileItemProps { function whenTouchOrPen (line 21) | function whenTouchOrPen(handler: React.PointerEventHandler): React... function isInInput (line 164) | function isInInput(event: KeyboardEvent) { function handleKeyDown (line 170) | function handleKeyDown(event: KeyboardEvent) { FILE: packages/ui/src/features/files/components/listing/file-item/list-view-file-item.tsx type ListViewFileItemProps (line 19) | interface ListViewFileItemProps { function ListViewFileItem (line 26) | function ListViewFileItem({item, isEditingName, onEditingNameComplete, f... FILE: packages/ui/src/features/files/components/listing/file-item/truncated-filename.tsx type TruncatedFilenameProps (line 4) | interface TruncatedFilenameProps { function TruncatedFilename (line 10) | function TruncatedFilename({filename, className, view = 'list'}: Truncat... FILE: packages/ui/src/features/files/components/listing/index.tsx type ListingProps (line 22) | interface ListingProps { function ListingContent (line 37) | function ListingContent({ function Listing (line 111) | function Listing({ function ErrorView (line 187) | function ErrorView({error}: {error: unknown}) { function LoadingView (line 212) | function LoadingView() { function EmptyView (line 220) | function EmptyView() { FILE: packages/ui/src/features/files/components/listing/listing-and-file-item-context-menu.tsx type ListingAndFileItemContextMenuProps (line 38) | interface ListingAndFileItemContextMenuProps { function ListingAndFileItemContextMenu (line 43) | function ListingAndFileItemContextMenu({children, menuItems}: ListingAnd... FILE: packages/ui/src/features/files/components/listing/listing-body.tsx type ListingBodyProps (line 11) | interface ListingBodyProps { FILE: packages/ui/src/features/files/components/listing/marquee-selection.tsx class DOMVector (line 7) | class DOMVector { method constructor (line 8) | constructor( method getDiagonalLength (line 15) | getDiagonalLength(): number { method toDOMRect (line 19) | toDOMRect(): DOMRect { method toTerminalPoint (line 28) | toTerminalPoint(): DOMPoint { method add (line 32) | add(vector: DOMVector): DOMVector { method clamp (line 41) | clamp(rect: DOMRect): DOMVector { function rectsIntersect (line 51) | function rectsIntersect(rect1: DOMRect, rect2: DOMRect): boolean { type MarqueeSelectionProps (line 57) | interface MarqueeSelectionProps { FILE: packages/ui/src/features/files/components/listing/recents-listing/index.tsx function RecentsListing (line 7) | function RecentsListing() { FILE: packages/ui/src/features/files/components/listing/search-listing/index.tsx function SearchListing (line 17) | function SearchListing() { function EmptySearchView (line 61) | function EmptySearchView({query}: {query: string}) { FILE: packages/ui/src/features/files/components/listing/trash-listing/index.tsx function TrashListing (line 15) | function TrashListing() { FILE: packages/ui/src/features/files/components/listing/virtualized-list.tsx constant LIST_OVERSCAN_AMOUNT (line 76) | const LIST_OVERSCAN_AMOUNT = 20 constant GRID_OVERSCAN_AMOUNT (line 77) | const GRID_OVERSCAN_AMOUNT = 2 constant INFINITE_LOADER_THRESHOLD (line 80) | const INFINITE_LOADER_THRESHOLD = 100 type VirtualizedListProps (line 82) | interface VirtualizedListProps { type IndexRange (line 96) | interface IndexRange { type InfiniteLoaderRenderProps (line 108) | interface InfiniteLoaderRenderProps { type GridVisibleIndices (line 117) | interface GridVisibleIndices { type GridItemData (line 128) | interface GridItemData { FILE: packages/ui/src/features/files/components/mini-browser/index.tsx type MiniBrowserProps (line 21) | type MiniBrowserProps = { constant INDENT_PER_LEVEL (line 49) | const INDENT_PER_LEVEL = 16 constant MAX_INDENT_LEVELS (line 50) | const MAX_INDENT_LEVELS = 9 constant MOBILE_MAX_INDENT_LEVELS (line 51) | const MOBILE_MAX_INDENT_LEVELS = 6 constant PATH_ANCESTORS_TO_SHOW (line 53) | const PATH_ANCESTORS_TO_SHOW = 1 function formatCompactPath (line 57) | function formatCompactPath(path: string, ancestorsToShow: number) { function MiniBrowser (line 66) | function MiniBrowser({ function Tree (line 227) | function Tree({ function Node (line 319) | function Node({ function Subtree (line 441) | function Subtree({ function NewFolderNode (line 530) | function NewFolderNode({ FILE: packages/ui/src/features/files/components/rewind/index.tsx function SidebarRewind (line 39) | function SidebarRewind() { function RewindOverlay (line 59) | function RewindOverlay() { FILE: packages/ui/src/features/files/components/rewind/overlay-context.tsx type RewindOverlayContextValue (line 3) | type RewindOverlayContextValue = { function RewindOverlayProvider (line 12) | function RewindOverlayProvider({children}: {children: React.ReactNode}) { function useRewindOverlay (line 18) | function useRewindOverlay() { FILE: packages/ui/src/features/files/components/rewind/prerewind-dialog.tsx function PreRewindDialog (line 18) | function PreRewindDialog({ FILE: packages/ui/src/features/files/components/rewind/restore-grouping.ts function groupRestoreByDestination (line 25) | function groupRestoreByDestination(selectedItems: FileSystemItem[], moun... FILE: packages/ui/src/features/files/components/rewind/restore-progress-dialog.tsx function RestoreProgressDialog (line 15) | function RestoreProgressDialog({open, phase}: {open: boolean; phase: 'id... function RestoringItems (line 86) | function RestoringItems({ FILE: packages/ui/src/features/files/components/rewind/snapshot-carousel.tsx function SnapshotCarousel (line 15) | function SnapshotCarousel({ FILE: packages/ui/src/features/files/components/rewind/snapshot-date-label.ts function getSnapshotDateLabel (line 5) | function getSnapshotDateLabel( FILE: packages/ui/src/features/files/components/rewind/timeline-bar.tsx function TimelineBar (line 7) | function TimelineBar({ FILE: packages/ui/src/features/files/components/rewind/tooltip.tsx function TooltipProvider (line 8) | function TooltipProvider({delayDuration = 0, ...props}: React.ComponentP... function Tooltip (line 12) | function Tooltip({...props}: React.ComponentProps}) { FILE: packages/ui/src/features/files/components/sidebar/index.tsx function Sidebar (line 25) | function Sidebar({className}: {className?: string}) { FILE: packages/ui/src/features/files/components/sidebar/mobile-sidebar-wrapper.tsx type MobileSidebarProps (line 4) | interface MobileSidebarProps { function MobileSidebarWrapper (line 10) | function MobileSidebarWrapper({children, isOpen, onClose}: MobileSidebar... FILE: packages/ui/src/features/files/components/sidebar/sidebar-apps.tsx function SidebarApps (line 6) | function SidebarApps() { FILE: packages/ui/src/features/files/components/sidebar/sidebar-external-storage-item.tsx type SidebarExternalStorageItemProps (line 22) | interface SidebarExternalStorageItemProps { function SidebarExternalStorageItem (line 26) | function SidebarExternalStorageItem({item}: SidebarExternalStorageItemPr... FILE: packages/ui/src/features/files/components/sidebar/sidebar-external-storage.tsx function SidebarExternalStorage (line 11) | function SidebarExternalStorage() { FILE: packages/ui/src/features/files/components/sidebar/sidebar-favorites.tsx function SidebarFavorites (line 10) | function SidebarFavorites({favorites}: {favorites: (string | null)[]}) { FILE: packages/ui/src/features/files/components/sidebar/sidebar-home.tsx function SidebarHome (line 12) | function SidebarHome() { FILE: packages/ui/src/features/files/components/sidebar/sidebar-item.tsx type SidebarItem (line 14) | type SidebarItem = { type SidebarItemProps (line 20) | interface SidebarItemProps { function SidebarItem (line 27) | function SidebarItem({item, isActive, onClick, disabled = false}: Sideba... FILE: packages/ui/src/features/files/components/sidebar/sidebar-network-share-item.tsx type SidebarNetworkShareItemProps (line 16) | interface SidebarNetworkShareItemProps { function SidebarNetworkShareItem (line 23) | function SidebarNetworkShareItem({host, rootPath, onEject, disabled}: Si... FILE: packages/ui/src/features/files/components/sidebar/sidebar-network-storage.tsx function SidebarNetworkStorage (line 18) | function SidebarNetworkStorage() { function NetworkRootItem (line 86) | function NetworkRootItem() { FILE: packages/ui/src/features/files/components/sidebar/sidebar-recents.tsx function SidebarRecents (line 8) | function SidebarRecents() { FILE: packages/ui/src/features/files/components/sidebar/sidebar-shares.tsx function SidebarShares (line 12) | function SidebarShares({shares}: {shares: (Share | null)[]}) { FILE: packages/ui/src/features/files/components/sidebar/sidebar-trash.tsx function SidebarTrash (line 16) | function SidebarTrash() { FILE: packages/ui/src/features/files/constants.ts constant BASE_ROUTE_PATH (line 27) | const BASE_ROUTE_PATH = '/files' as const constant HOME_PATH (line 28) | const HOME_PATH = '/Home' as const constant TRASH_PATH (line 29) | const TRASH_PATH = '/Trash' as const constant APPS_PATH (line 30) | const APPS_PATH = '/Apps' as const constant EXTERNAL_STORAGE_PATH (line 31) | const EXTERNAL_STORAGE_PATH = '/External' as const constant NETWORK_STORAGE_PATH (line 32) | const NETWORK_STORAGE_PATH = '/Network' as const constant BACKUPS_PATH (line 33) | const BACKUPS_PATH = '/Backups' as const constant SEARCH_PATH (line 39) | const SEARCH_PATH = '/Search' as const constant RECENTS_PATH (line 40) | const RECENTS_PATH = '/Recents' as const constant USE_LIST_DIRECTORY_LOAD_ITEMS (line 43) | const USE_LIST_DIRECTORY_LOAD_ITEMS = { constant SUPPORTED_ARCHIVE_EXTRACT_EXTENSIONS (line 49) | const SUPPORTED_ARCHIVE_EXTRACT_EXTENSIONS = [ constant SORT_BY_OPTIONS (line 60) | const SORT_BY_OPTIONS = [ constant IMAGE_EXTENSIONS_WITH_IMAGE_THUMBNAILS (line 69) | const IMAGE_EXTENSIONS_WITH_IMAGE_THUMBNAILS = new Set(['.jpg', '.jpeg',... constant VIDEO_EXTENSIONS_WITH_IMAGE_THUMBNAILS (line 70) | const VIDEO_EXTENSIONS_WITH_IMAGE_THUMBNAILS = new Set(['.mov', '.mp4', ... constant FILE_TYPE_MAP (line 72) | const FILE_TYPE_MAP = { type FileType (line 190) | type FileType = keyof typeof FILE_TYPE_MAP FILE: packages/ui/src/features/files/hooks/use-drag-and-drop.ts function useDragAndDrop (line 9) | function useDragAndDrop() { FILE: packages/ui/src/features/files/hooks/use-external-storage.ts function useExternalStorage (line 18) | function useExternalStorage() { FILE: packages/ui/src/features/files/hooks/use-favorites.ts function useFavorites (line 13) | function useFavorites() { FILE: packages/ui/src/features/files/hooks/use-files-keyboard-shortcuts.ts function useFilesKeyboardShortcuts (line 19) | function useFilesKeyboardShortcuts({ FILE: packages/ui/src/features/files/hooks/use-files-operations.ts type OperationAsyncFn (line 15) | type OperationAsyncFn = (args: TArg... type GetOperationArgsFn (line 17) | type GetOperationArgsFn = (path: string) => TArgs type ErrorToastFn (line 19) | type ErrorToastFn = (message: string) => void function useFilesOperations (line 21) | function useFilesOperations() { FILE: packages/ui/src/features/files/hooks/use-home-directory-name.ts function useHomeDirectoryName (line 4) | function useHomeDirectoryName() { FILE: packages/ui/src/features/files/hooks/use-is-touch-device.ts function useIsTouchDevice (line 3) | function useIsTouchDevice() { FILE: packages/ui/src/features/files/hooks/use-list-directory.ts type UseListDirectoryOptions (line 11) | interface UseListDirectoryOptions { function useListDirectory (line 16) | function useListDirectory( FILE: packages/ui/src/features/files/hooks/use-list-recents.ts function useListRecents (line 13) | function useListRecents() { FILE: packages/ui/src/features/files/hooks/use-navigate.ts function toFsPath (line 19) | function toFsPath(urlPath: string): string { function encodePathSegments (line 24) | function encodePathSegments(fsPath: string): string { FILE: packages/ui/src/features/files/hooks/use-network-device-type.ts type NetworkDeviceType (line 7) | type NetworkDeviceType = 'umbrel' | 'nas' function useNetworkDeviceType (line 28) | function useNetworkDeviceType(path: string) { FILE: packages/ui/src/features/files/hooks/use-network-storage.ts function useNetworkStorage (line 16) | function useNetworkStorage(options?: {suppressNavigateOnAdd?: boolean}) { FILE: packages/ui/src/features/files/hooks/use-new-folder.ts function useNewFolder (line 12) | function useNewFolder() { function isNameAvailable (line 122) | function isNameAvailable(name: string, existingItems: FileSystemItem[]) { FILE: packages/ui/src/features/files/hooks/use-preferences.ts function usePreferences (line 9) | function usePreferences() { FILE: packages/ui/src/features/files/hooks/use-rewind-action.ts function useRewindAction (line 9) | function useRewindAction(selectedItems: FileSystemItem[]) { FILE: packages/ui/src/features/files/hooks/use-rewind.ts type ViewState (line 9) | type ViewState = 'preflight' | 'browsing' | 'switching-snapshot' | 'rest... function useRewind (line 11) | function useRewind({overlayOpen, repoOpen}: {overlayOpen: boolean; repoO... FILE: packages/ui/src/features/files/hooks/use-search-files.ts type UseSearchFilesReturn (line 13) | interface UseSearchFilesReturn { function useSearchFiles (line 20) | function useSearchFiles({ FILE: packages/ui/src/features/files/hooks/use-shares.ts function useShares (line 15) | function useShares() { FILE: packages/ui/src/features/files/index.tsx function FilesLayout (line 31) | function FilesLayout() { FILE: packages/ui/src/features/files/providers/files-capabilities-context.tsx type FilesMode (line 9) | type FilesMode = 'full' | 'read-only' type FilesCapabilities (line 11) | type FilesCapabilities = { function FilesCapabilitiesProvider (line 39) | function FilesCapabilitiesProvider({ function useFilesCapabilities (line 57) | function useFilesCapabilities() { function useIsFilesReadOnly (line 62) | function useIsFilesReadOnly() { function useIsFilesEmbedded (line 67) | function useIsFilesEmbedded() { FILE: packages/ui/src/features/files/store/slices/clipboard-slice.ts type ClipboardMode (line 9) | type ClipboardMode = 'copy' | 'cut' | null type ClipboardSlice (line 11) | interface ClipboardSlice { FILE: packages/ui/src/features/files/store/slices/drag-and-drop-slice.ts type DragAndDropSlice (line 9) | interface DragAndDropSlice { FILE: packages/ui/src/features/files/store/slices/file-viewer-slice.ts type FileViewerSlice (line 9) | interface FileViewerSlice { FILE: packages/ui/src/features/files/store/slices/interaction-slice.ts type InteractionSlice (line 10) | interface InteractionSlice { FILE: packages/ui/src/features/files/store/slices/new-folder-slice.ts type NewFolderSlice (line 9) | interface NewFolderSlice { FILE: packages/ui/src/features/files/store/slices/rename-slice.ts type RenameSlice (line 9) | interface RenameSlice { FILE: packages/ui/src/features/files/store/slices/selection-slice.ts type SelectionSlice (line 9) | interface SelectionSlice { FILE: packages/ui/src/features/files/store/use-files-store.ts type FilesStore (line 11) | type FilesStore = SelectionSlice & FILE: packages/ui/src/features/files/types.ts type UmbreldFileSystemItem (line 6) | type UmbreldFileSystemItem = RouterOutput['files']['list']['files'][number] type Favorite (line 8) | type Favorite = RouterOutput['files']['favorites'][number] type Share (line 10) | type Share = RouterOutput['files']['shares'][number] type ExternalStorageDevice (line 12) | type ExternalStorageDevice = RouterOutput['files']['externalDevices'][nu... type ViewPreferences (line 14) | type ViewPreferences = RouterOutput['files']['viewPreferences'] type FileSystemItem (line 18) | interface FileSystemItem extends UmbreldFileSystemItem { type UploadStats (line 25) | interface UploadStats { type PolymorphicPropsWithoutRef (line 33) | type PolymorphicPropsWithoutRef = P & type PolymorphicRef (line 39) | type PolymorphicRef = React.ComponentPropsW... type PolymorphicPropsWithRef (line 41) | type PolymorphicPropsWithRef = Polymorph... FILE: packages/ui/src/features/files/utils/error-messages.ts function getFilesErrorMessage (line 5) | function getFilesErrorMessage(message: string): string { FILE: packages/ui/src/features/files/utils/format-filesystem-date.ts function capitalize (line 7) | function capitalize(str: string): string { function formatFilesystemDate (line 16) | function formatFilesystemDate(date: number | undefined, languageCode: Su... function formatFilesystemDateOnly (line 34) | function formatFilesystemDateOnly(date: number | undefined, languageCode... FILE: packages/ui/src/features/files/utils/format-filesystem-name.ts function formatItemName (line 6) | function formatItemName({name, maxLength = 30}: {name: FileSystemItem['n... function splitFileName (line 23) | function splitFileName(fileName: string): {name: string; extension: stri... function truncateName (line 47) | function truncateName(name: string, maxLength: number): string { FILE: packages/ui/src/features/files/utils/format-filesystem-size.ts function formatFilesystemSize (line 3) | function formatFilesystemSize(size: number | undefined | null): string { FILE: packages/ui/src/features/files/utils/get-grid-column-count.ts function getGridColumnCount (line 6) | function getGridColumnCount(width: number): number { FILE: packages/ui/src/features/files/utils/get-item-key.ts function getItemKey (line 10) | function getItemKey(item: FileSystemItem): string { FILE: packages/ui/src/features/files/utils/path-alias.ts type PathAliases (line 5) | type PathAliases = Record | undefined function replaceLeadingPrefix (line 9) | function replaceLeadingPrefix(path: string, prefix: string, replacement:... function uiToVirtualPath (line 16) | function uiToVirtualPath(path: string, aliases: PathAliases): string { function virtualToUiPath (line 27) | function virtualToUiPath(path: string, aliases: PathAliases): string { FILE: packages/ui/src/features/files/utils/sort-filesystem-items.ts function sortFilesystemItems (line 40) | function sortFilesystemItems( FILE: packages/ui/src/features/files/widgets.tsx type FilesListWidget (line 15) | type FilesListWidget = BaseWidget & { type FilesGridWidget (line 22) | type FilesGridWidget = BaseWidget & { type FilesListWidgetProps (line 69) | interface FilesListWidgetProps { type FilesGridWidgetProps (line 76) | interface FilesGridWidgetProps { function FilesListWidget (line 84) | function FilesListWidget({ function SkeletonListItem (line 130) | function SkeletonListItem() { function ListItem (line 143) | function ListItem({item}: {item: FileSystemItem}) { function FilesGridWidget (line 168) | function FilesGridWidget({ function SkeletonGridItem (line 239) | function SkeletonGridItem() { function GridItem (line 250) | function GridItem({item, count}: {item: FileSystemItem; index: number; c... FILE: packages/ui/src/features/storage/components/dialogs/add-to-raid-dialog.tsx type InfoTextProps (line 41) | type InfoTextProps = { function InfoText (line 53) | function InfoText({ type AddToRaidDialogProps (line 179) | type AddToRaidDialogProps = { function AddToRaidDialog (line 190) | function AddToRaidDialog({ FILE: packages/ui/src/features/storage/components/dialogs/install-ssd-dialog.tsx type InstallSsdDialogProps (line 19) | type InstallSsdDialogProps = { function InstallSsdDialog (line 25) | function InstallSsdDialog({open, onOpenChange, isUmbrelPro}: InstallSsdD... FILE: packages/ui/src/features/storage/components/dialogs/install-tips-collapsible.tsx type InstallTipsCollapsibleProps (line 8) | type InstallTipsCollapsibleProps = { function InstallTipsCollapsible (line 13) | function InstallTipsCollapsible({isOpen, onToggle}: InstallTipsCollapsib... FILE: packages/ui/src/features/storage/components/dialogs/operation-in-progress-banner.tsx type OperationInProgressBannerProps (line 8) | type OperationInProgressBannerProps = { function OperationInProgressBanner (line 12) | function OperationInProgressBanner({variant}: OperationInProgressBannerP... FILE: packages/ui/src/features/storage/components/dialogs/replace-failed-drive-dialog.tsx type FailedRaidDevice (line 24) | type FailedRaidDevice = { type ReplaceFailedDriveDialogProps (line 32) | type ReplaceFailedDriveDialogProps = { function ReplaceFailedDriveDialog (line 44) | function ReplaceFailedDriveDialog({ FILE: packages/ui/src/features/storage/components/dialogs/shutdown-confirmation-dialog.tsx type ShutdownConfirmationDialogProps (line 15) | type ShutdownConfirmationDialogProps = { function ShutdownConfirmationDialog (line 20) | function ShutdownConfirmationDialog({open, onOpenChange}: ShutdownConfir... FILE: packages/ui/src/features/storage/components/dialogs/ssd-health-dialog.tsx type Warning (line 14) | type Warning = { type SsdHealthDialogProps (line 19) | type SsdHealthDialogProps = { function SsdHealthDialog (line 28) | function SsdHealthDialog({device, slotNumber, open, onOpenChange, raidDe... function useSsdHealthDialog (line 290) | function useSsdHealthDialog() { FILE: packages/ui/src/features/storage/components/dialogs/swap-dialog.tsx type SwapDialogProps (line 27) | type SwapDialogProps = { function SwapDialog (line 39) | function SwapDialog({ FILE: packages/ui/src/features/storage/components/floating-island/data-stream-icon.tsx type DataStreamIconProps (line 11) | interface DataStreamIconProps { function DataStreamIcon (line 16) | function DataStreamIcon({size = 32, isActive = true}: DataStreamIconProp... type DataStreamIconMiniProps (line 156) | interface DataStreamIconMiniProps { function DataStreamIconMini (line 161) | function DataStreamIconMini({size = 20, isActive = true}: DataStreamIcon... FILE: packages/ui/src/features/storage/components/floating-island/expanded.tsx function ExpandedContent (line 9) | function ExpandedContent({operation}: {operation: RaidProgress}) { FILE: packages/ui/src/features/storage/components/floating-island/index.tsx function RaidIsland (line 25) | function RaidIsland() { FILE: packages/ui/src/features/storage/components/floating-island/minimized.tsx function MinimizedContent (line 8) | function MinimizedContent({operation}: {operation: RaidProgress}) { FILE: packages/ui/src/features/storage/components/ssd-shape.tsx type SsdShapeProps (line 12) | type SsdShapeProps = { function SsdShape (line 24) | function SsdShape({ FILE: packages/ui/src/features/storage/components/storage-donut-chart.tsx type StorageDonutChartProps (line 7) | type StorageDonutChartProps = { function StorageDonutChart (line 17) | function StorageDonutChart({ FILE: packages/ui/src/features/storage/components/storage-mode-display.tsx type ModeOption (line 22) | type ModeOption = { type StorageModeDisplayProps (line 50) | type StorageModeDisplayProps = { function StorageModeDisplay (line 55) | function StorageModeDisplay({value, canEnableFailsafe}: StorageModeDispl... FILE: packages/ui/src/features/storage/hooks/use-active-raid-operation.ts function useActiveRaidOperation (line 9) | function useActiveRaidOperation(): RaidProgress | null { FILE: packages/ui/src/features/storage/hooks/use-raid-progress.ts type ExpansionStatus (line 8) | type ExpansionStatus = { type RebuildStatus (line 13) | type RebuildStatus = { type ReplaceStatus (line 18) | type ReplaceStatus = RebuildStatus type FailsafeTransitionStatus (line 20) | type FailsafeTransitionStatus = { type RaidOperationType (line 26) | type RaidOperationType = 'expansion' | 'rebuild' | 'replace' | 'failsafe... type RaidProgress (line 28) | type RaidProgress = { function useRaidProgress (line 36) | function useRaidProgress(): RaidProgress | null { FILE: packages/ui/src/features/storage/hooks/use-storage.ts type RaidStatus (line 4) | type RaidStatus = RouterOutput['hardware']['raid']['getStatus'] type StorageDevice (line 5) | type StorageDevice = RouterOutput['hardware']['internalStorage']['getDev... type RaidType (line 6) | type RaidType = 'storage' | 'failsafe' type RaidDeviceStatus (line 9) | type RaidDeviceStatus = 'ONLINE' | 'DEGRADED' | 'FAULTED' | 'OFFLINE' | ... constant LIFETIME_WARNING_THRESHOLD (line 28) | const LIFETIME_WARNING_THRESHOLD = 80 function getDeviceHealth (line 31) | function getDeviceHealth(device: StorageDevice) { type RaidDevice (line 65) | type RaidDevice = StorageDevice & { type UseStorageOptions (line 74) | type UseStorageOptions = { function useStorage (line 83) | function useStorage(options: UseStorageOptions = {}) { FILE: packages/ui/src/features/storage/index.tsx function StorageStats (line 40) | function StorageStats({ constant SLOT_INDICES (line 111) | const SLOT_INDICES = [0, 1, 2, 3] as const function StorageManagerDialog (line 113) | function StorageManagerDialog() { FILE: packages/ui/src/features/storage/providers/pending-operation-context.tsx type PendingRaidOperationContextType (line 5) | type PendingRaidOperationContextType = { function PendingRaidOperationProvider (line 13) | function PendingRaidOperationProvider({children}: {children: ReactNode}) { function usePendingRaidOperation (line 25) | function usePendingRaidOperation() { FILE: packages/ui/src/hooks/use-2fa.ts function use2fa (line 5) | function use2fa(onEnableChange?: (enabled: boolean) => void) { FILE: packages/ui/src/hooks/use-app-install.ts function useUninstallAllApps (line 21) | function useUninstallAllApps() { function useAppInstall (line 43) | function useAppInstall(id: string) { FILE: packages/ui/src/hooks/use-apps-with-updates.ts function useAppsWithUpdates (line 4) | function useAppsWithUpdates() { FILE: packages/ui/src/hooks/use-auto-height-animation.tsx function useAutoHeightAnimation (line 4) | function useAutoHeightAnimation(deps: any[]): [LegacyAnimationControls, ... FILE: packages/ui/src/hooks/use-color-thief.ts function useColorThief (line 8) | function useColorThief(ref: React.RefObject) { function processColors (line 54) | function processColors(colors: RGBColor[] | null) { function isNeutralBright (line 66) | function isNeutralBright(rgb: number[]) { function isNeutralDark (line 74) | function isNeutralDark(rgb: number[]) { function rgbToHsl (line 92) | function rgbToHsl(r: number, g: number, b: number) { FILE: packages/ui/src/hooks/use-cpu-temperature.ts function useCpuTemperature (line 3) | function useCpuTemperature() { FILE: packages/ui/src/hooks/use-cpu.ts function useCpu (line 7) | function useCpu(options: {poll?: boolean} = {}) { function useCpuForUi (line 34) | function useCpuForUi(options: {poll?: boolean} = {}) { FILE: packages/ui/src/hooks/use-debug-install-random-apps.ts function useDebugInstallRandomApps (line 6) | function useDebugInstallRandomApps() { FILE: packages/ui/src/hooks/use-device-info.ts type UiHostInfo (line 4) | type UiHostInfo = { type DeviceInfoT (line 9) | type DeviceInfoT = function useDeviceInfo (line 27) | function useDeviceInfo(): DeviceInfoT { type DeviceInfo (line 71) | type DeviceInfo = RouterOutput['system']['device'] function deviceInfoToHostEnvironment (line 73) | function deviceInfoToHostEnvironment(deviceInfo?: DeviceInfo): UmbrelHos... FILE: packages/ui/src/hooks/use-disk.ts constant ONE_SECOND (line 10) | const ONE_SECOND = 1000 function useDisk (line 12) | function useDisk(options: {poll?: boolean} = {}) { function useDiskForUi (line 46) | function useDiskForUi(options: {poll?: boolean} = {}) { function useSystemDisk (line 75) | function useSystemDisk(options: {poll?: boolean} = {}) { function useSystemDiskForUi (line 95) | function useSystemDiskForUi(options: {poll?: boolean} = {}) { FILE: packages/ui/src/hooks/use-is-externaldns.ts function useIsExternalDns (line 5) | function useIsExternalDns({onSuccess}: {onSuccess?: (enabled: boolean) =... FILE: packages/ui/src/hooks/use-is-home-or-pro.ts function useIsHomeOrPro (line 10) | function useIsHomeOrPro() { FILE: packages/ui/src/hooks/use-is-mobile.ts function useIsMobile (line 4) | function useIsMobile() { function useIsSmallMobile (line 11) | function useIsSmallMobile() { FILE: packages/ui/src/hooks/use-is-umbrel-home.tsx function useIsUmbrelHome (line 3) | function useIsUmbrelHome() { FILE: packages/ui/src/hooks/use-is-umbrel-pro.ts function useIsUmbrelPro (line 3) | function useIsUmbrelPro() { FILE: packages/ui/src/hooks/use-language.ts function useLanguage (line 18) | function useLanguage(): [SupportedLanguageCode, (code: SupportedLanguage... FILE: packages/ui/src/hooks/use-launch-app.ts function useLaunchApp (line 30) | function useLaunchApp() { FILE: packages/ui/src/hooks/use-memory.ts function useSystemMemory (line 10) | function useSystemMemory(options: {poll?: boolean} = {}) { function useMemory (line 29) | function useMemory(options: {poll?: boolean} = {}) { function useSystemMemoryForUi (line 58) | function useSystemMemoryForUi(options: {poll?: boolean} = {}) { function useMemoryForUi (line 83) | function useMemoryForUi(options: {poll?: boolean} = {}) { FILE: packages/ui/src/hooks/use-notifications.ts function useNotifications (line 8) | function useNotifications() { FILE: packages/ui/src/hooks/use-password.ts function usePassword (line 7) | function usePassword({onSuccess}: {onSuccess: () => void}) { FILE: packages/ui/src/hooks/use-prefixed-local-storage.ts function usePrefixedLocalStorage (line 10) | function usePrefixedLocalStorage(key: string, defaultValue?: TT) { FILE: packages/ui/src/hooks/use-query-params.ts type QueryObject (line 4) | type QueryObject = {[key: string]: string} function useQueryParams (line 7) | function useQueryParams() { FILE: packages/ui/src/hooks/use-scroll-restoration.ts type ScrollRestorationAction (line 6) | type ScrollRestorationAction = 'restore' | 'reset' | 'ignore' type ScrollRestorationHandler (line 12) | type ScrollRestorationHandler = ( function useScrollRestoration (line 23) | function useScrollRestoration( function getScrollPosition (line 72) | function getScrollPosition(key: string) { function setScrollPosition (line 77) | function setScrollPosition(key: string, pos: number) { function clearScrollPositions (line 85) | function clearScrollPositions() { FILE: packages/ui/src/hooks/use-settings-notification-count.ts function useMounted (line 11) | function useMounted() { function useSettingsNotificationCount (line 18) | function useSettingsNotificationCount() { FILE: packages/ui/src/hooks/use-software-update.ts type UpdateState (line 7) | type UpdateState = 'initial' | 'checking' | 'at-latest' | 'update-availa... function useSoftwareUpdate (line 9) | function useSoftwareUpdate() { FILE: packages/ui/src/hooks/use-temperature-unit.ts type TemperatureUnit (line 13) | type TemperatureUnit = (typeof temperatureDescriptions)[number]['id'] function useTemperatureUnit (line 17) | function useTemperatureUnit( FILE: packages/ui/src/hooks/use-tor-enabled.ts function useTorEnabled (line 5) | function useTorEnabled({onSuccess}: {onSuccess?: (enabled: boolean) => v... FILE: packages/ui/src/hooks/use-update-all-apps.ts function useUpdateAllApps (line 4) | function useUpdateAllApps() { FILE: packages/ui/src/hooks/use-user-name.ts function useUserName (line 7) | function useUserName({onSuccess}: {onSuccess: () => void}) { FILE: packages/ui/src/hooks/use-version.ts function useVersion (line 3) | function useVersion() { FILE: packages/ui/src/hooks/use-widgets.ts function useWidgets (line 9) | function useWidgets() { function useEnableWidgets (line 110) | function useEnableWidgets() { FILE: packages/ui/src/init.tsx function init (line 29) | function init(element: React.ReactNode) { FILE: packages/ui/src/layouts/app-store.tsx function AppStoreLayout (line 24) | function AppStoreLayout() { function SearchInput (line 71) | function SearchInput({ function CommunityAppsDropdown (line 107) | function CommunityAppsDropdown() { function SearchResults (line 129) | function SearchResults({query}: {query: string}) { FILE: packages/ui/src/layouts/bare/bare-page.tsx function BarePage (line 4) | function BarePage({children}: {children: React.ReactNode}) { FILE: packages/ui/src/layouts/bare/bare.tsx function BareLayout (line 6) | function BareLayout() { FILE: packages/ui/src/layouts/bare/onboarding-page.tsx function OnboardingPage (line 6) | function OnboardingPage({children}: {children: React.ReactNode}) { FILE: packages/ui/src/layouts/bare/onboarding.tsx function OnboardingLayout (line 6) | function OnboardingLayout() { FILE: packages/ui/src/layouts/bare/shared.tsx function Title (line 12) | function Title({children}: {children: React.ReactNode}) { function SubTitle (line 26) | function SubTitle({ function Layout (line 55) | function Layout({ FILE: packages/ui/src/layouts/desktop.tsx function Desktop (line 12) | function Desktop() { function InstallFirstAppPage (line 26) | function InstallFirstAppPage() { function prefetchRouteChunks (line 35) | function prefetchRouteChunks() { function DesktopPage (line 44) | function DesktopPage() { FILE: packages/ui/src/layouts/sheet.tsx function SheetLayout (line 38) | function SheetLayout() { function SheetCloseButton (line 107) | function SheetCloseButton() { FILE: packages/ui/src/lib/utils.ts function cn (line 18) | function cn(...inputs: ClassValue[]) { FILE: packages/ui/src/modules/app-store/app-page/app-content.tsx function AppContent (line 16) | function AppContent({ FILE: packages/ui/src/modules/app-store/app-page/app-settings-dialog.tsx function AppSettingsDialog (line 18) | function AppSettingsDialog() { function areSelectionsEqual (line 42) | function areSelectionsEqual(a?: Record, b?: Record) { FILE: packages/ui/src/modules/auth/ensure-backend-available.tsx function EnsureBackendAvailable (line 5) | function EnsureBackendAvailable({children}: {children: React.ReactNode}) { FILE: packages/ui/src/modules/auth/ensure-logged-in.tsx function EnsureLoggedIn (line 7) | function EnsureLoggedIn({children}: {children?: React.ReactNode}) { function EnsureLoggedOut (line 15) | function EnsureLoggedOut({children}: {children?: React.ReactNode}) { function EnsureLoggedInState (line 24) | function EnsureLoggedInState({ FILE: packages/ui/src/modules/auth/ensure-no-raid-mount-failure.tsx function EnsureNoRaidMountFailure (line 9) | function EnsureNoRaidMountFailure({children}: {children?: React.ReactNod... FILE: packages/ui/src/modules/auth/ensure-pro-device.tsx function EnsureProDevice (line 8) | function EnsureProDevice({children}: {children?: React.ReactNode}) { FILE: packages/ui/src/modules/auth/ensure-user-exists.tsx function EnsureUserDoesntExist (line 11) | function EnsureUserDoesntExist({children}: {children?: React.ReactNode}) { function EnsureUserExists (line 20) | function EnsureUserExists({children}: {children?: React.ReactNode}) { function EnsureUser (line 28) | function EnsureUser({ FILE: packages/ui/src/modules/auth/redirects.tsx constant SLEEP_TIME (line 8) | const SLEEP_TIME = IS_DEV ? 600 : 0 type Page (line 10) | type Page = 'onboarding' | 'login' | 'home' | 'raid-error' function RedirectOnboarding (line 25) | function RedirectOnboarding() { function RedirectLogin (line 43) | function RedirectLogin() { function RedirectHome (line 66) | function RedirectHome() { function RedirectRaidError (line 84) | function RedirectRaidError() { method createRedirectSearch (line 104) | createRedirectSearch() { method getRedirectPath (line 107) | getRedirectPath() { FILE: packages/ui/src/modules/auth/shared.ts constant JWT_LOCAL_STORAGE_KEY (line 5) | const JWT_LOCAL_STORAGE_KEY = 'jwt' constant JWT_REFRESH_LOCAL_STORAGE_KEY (line 6) | const JWT_REFRESH_LOCAL_STORAGE_KEY = 'jwt-last-refreshed' function initTokenRenewal (line 8) | function initTokenRenewal() { FILE: packages/ui/src/modules/auth/use-auth.tsx function useJwt (line 11) | function useJwt() { function useAuth (line 25) | function useAuth() { FILE: packages/ui/src/modules/bare/alert.tsx function Alert (line 5) | function Alert({children, className}: {children: React.ReactNode; classN... FILE: packages/ui/src/modules/bare/failed-layout.tsx function FailedLayout (line 10) | function FailedLayout({ FILE: packages/ui/src/modules/bare/progress-layout.tsx function ProgressLayout (line 8) | function ProgressLayout({ FILE: packages/ui/src/modules/bare/progress.tsx function Progress (line 7) | function Progress({value, children}: {value?: number; children?: ReactNo... FILE: packages/ui/src/modules/bare/success-layout.tsx function SuccessLayout (line 7) | function SuccessLayout({ FILE: packages/ui/src/modules/community-app-store/community-badge.tsx function CommunityBadge (line 4) | function CommunityBadge({className}: {className?: string}) { FILE: packages/ui/src/modules/desktop/app-grid/app-grid.tsx function AppGrid (line 10) | function AppGrid({ function ArrowButtonWrapper (line 112) | function ArrowButtonWrapper({side, children}: {side: 'left' | 'right'; c... function PageInner (line 126) | function PageInner({children, innerRef}: {children?: ReactNode; innerRef... FILE: packages/ui/src/modules/desktop/app-grid/app-pagination-utils.tsx type PageT (line 7) | type PageT = { function usePager (line 23) | function usePager({apps, widgets, forceBreakpoint}: PageT & {forceBreakp... FILE: packages/ui/src/modules/desktop/app-grid/paginator.tsx constant DATA_INDEX_ATTR (line 7) | const DATA_INDEX_ATTR = 'data-index' function usePaginator (line 9) | function usePaginator(pageCount: number) { function Page (line 66) | function Page({index, children, className}: {index: number; children: Re... function ArrowButton (line 75) | function ArrowButton({ function PaginatorPill (line 97) | function PaginatorPill({active, onClick}: {active?: boolean; onClick: ()... function PaginatorPills (line 115) | function PaginatorPills({ FILE: packages/ui/src/modules/desktop/app-icon.tsx constant APP_ICON_PLACEHOLDER_SRC (line 24) | const APP_ICON_PLACEHOLDER_SRC = '/assets/app-icon-placeholder.svg' function AppIcon (line 26) | function AppIcon({ function AppLabel (line 119) | function AppLabel({state, label = ''}: {state: AppStateOrLoading; label?... function AppIconConnected (line 149) | function AppIconConnected({appId}: {appId: string}) { function ContextMenuItemLinkToAppStore (line 300) | function ContextMenuItemLinkToAppStore({appId}: {appId: string}) { FILE: packages/ui/src/modules/desktop/desktop-content.tsx function DesktopContent (line 17) | function DesktopContent({onSearchClick}: {onSearchClick?: () => void}) { FILE: packages/ui/src/modules/desktop/desktop-context-menu.tsx function DesktopContextMenu (line 13) | function DesktopContextMenu({children}: {children: React.ReactNode}) { FILE: packages/ui/src/modules/desktop/desktop-misc.tsx function Search (line 8) | function Search({onClick}: {onClick?: () => void}) { function AppGridGradientMasking (line 21) | function AppGridGradientMasking() { function GradientMaskSide (line 36) | function GradientMaskSide({side}: {side: 'left' | 'right'}) { FILE: packages/ui/src/modules/desktop/desktop-preview.tsx function DesktopPreviewConnected (line 36) | function DesktopPreviewConnected() { function DesktopPreviewContent (line 104) | function DesktopPreviewContent() { function DesktopPreviewFrame (line 139) | function DesktopPreviewFrame({children}: {children: React.ReactNode}) { FILE: packages/ui/src/modules/desktop/dock-item.tsx type HTMLDivProps (line 8) | type HTMLDivProps = HTMLMotionProps<'div'> type DockItemProps (line 9) | type DockItemProps = { constant BOUNCE_DURATION (line 22) | const BOUNCE_DURATION = 0.4 function DockItem (line 24) | function DockItem({ function OpenPill (line 125) | function OpenPill() { FILE: packages/ui/src/modules/desktop/dock.tsx constant DOCK_BOTTOM_PADDING_PX (line 20) | const DOCK_BOTTOM_PADDING_PX = 10 constant DOCK_DIMENSIONS_PX (line 22) | const DOCK_DIMENSIONS_PX = { type DockDimensionsPx (line 40) | type DockDimensionsPx = { function useDockDimensions (line 47) | function useDockDimensions(options?: {isPreview?: boolean}): DockDimensi... function Dock (line 60) | function Dock() { function DockPreview (line 161) | function DockPreview() { function DockSpacer (line 214) | function DockSpacer({className}: {className?: string}) { function DockBottomPositioner (line 219) | function DockBottomPositioner({children}: {children: React.ReactNode}) { FILE: packages/ui/src/modules/desktop/greeting-message.ts function greetingMessage (line 4) | function greetingMessage(name: string) { function getPartofDay (line 16) | function getPartofDay() { FILE: packages/ui/src/modules/desktop/header.tsx function Header (line 5) | function Header({userName}: {userName: string}) { FILE: packages/ui/src/modules/desktop/install-first-app.tsx function InstallFirstApp (line 14) | function InstallFirstApp() { function Cards (line 46) | function Cards() { function CardsSkeleton (line 80) | function CardsSkeleton() { function SkeletonApps (line 99) | function SkeletonApps() { function SkeletonApp (line 110) | function SkeletonApp() { function AppApp (line 114) | function AppApp({app}: {app: RegistryApp}) { function App (line 119) | function App({ FILE: packages/ui/src/modules/desktop/logout-dialog.tsx function LogoutDialog (line 16) | function LogoutDialog() { FILE: packages/ui/src/modules/desktop/uninstall-confirmation-dialog.tsx function UninstallConfirmationDialog (line 14) | function UninstallConfirmationDialog({ FILE: packages/ui/src/modules/desktop/uninstall-these-first-dialog.tsx function UninstallTheseFirstDialog (line 10) | function UninstallTheseFirstDialog({ function AppWithName (line 61) | function AppWithName({icon, appName}: {icon: string; appName: ReactNode}) { FILE: packages/ui/src/modules/floating-island/bare-island.tsx type IslandProps (line 26) | interface IslandProps { type IslandChildProps (line 35) | interface IslandChildProps { FILE: packages/ui/src/modules/floating-island/container.tsx function FloatingIslandContainer (line 22) | function FloatingIslandContainer() { FILE: packages/ui/src/modules/immersive-picker/index.tsx function ImmersivePickerDialogContentInit (line 25) | function ImmersivePickerDialogContentInit({title, children}: {title: str... function ImmersivePickerItem (line 34) | function ImmersivePickerItem({ function BackLink (line 69) | function BackLink({to, children}: {to: string; children: React.ReactNode... function ImmersivePickerDialogContent (line 81) | function ImmersivePickerDialogContent({children}: {children: React.React... function AppDropdown (line 89) | function AppDropdown({ FILE: packages/ui/src/modules/migrate/migrate-image.tsx constant FROM_RASPBERRY_PI_URL (line 6) | const FROM_RASPBERRY_PI_URL = '/assets/migrate-raspberrypi-umbrel-home.png' constant FROM_UMBREL_URL (line 7) | const FROM_UMBREL_URL = '/assets/migrate-umbrel-home-umbrel-home.png' function MigrateImage (line 9) | function MigrateImage() { FILE: packages/ui/src/modules/migrate/migrate-inner.tsx function MigrateInner (line 8) | function MigrateInner({ FILE: packages/ui/src/modules/sheet-top-fixed.tsx constant SHEET_FIXED_ID (line 4) | const SHEET_FIXED_ID = 'sheet-fixed-id' function SheetFixedTarget (line 6) | function SheetFixedTarget() { function SheetFixedContent (line 9) | function SheetFixedContent({children}: {children: ReactNode}) { FILE: packages/ui/src/modules/widgets/four-stats-widget.tsx function FourStatsWidget (line 7) | function FourStatsWidget({ function Item (line 34) | function Item(item?: FourStatsItem) { FILE: packages/ui/src/modules/widgets/index.tsx function Widget (line 31) | function Widget({appId, config: manifestConfig}: {appId: string; config:... function SystemThreeUpWidget (line 115) | function SystemThreeUpWidget({items, ...props}: ComponentPropsWithRef({ function LoadingWidget (line 185) | function LoadingWidget({type, onClick... function ErrorWidget (line 218) | function ErrorWidget({error}: {error: string}) { FILE: packages/ui/src/modules/widgets/list-emoji-widget.tsx function ListEmojiWidget (line 6) | function ListEmojiWidget({ function ListEmojiItem (line 40) | function ListEmojiItem(item?: ListEmojiItem) { function limitToOneEmoji (line 51) | function limitToOneEmoji(str: string) { FILE: packages/ui/src/modules/widgets/list-widget.tsx function ListWidget (line 8) | function ListWidget({ function ListItem (line 42) | function ListItem(item?: ListWidgetItem) { FILE: packages/ui/src/modules/widgets/shared/backdrop-blur-context.tsx type Variant (line 3) | type Variant = 'with-backdrop-blur' | 'default' FILE: packages/ui/src/modules/widgets/shared/constants.ts constant DEFAULT_REFRESH_MS (line 5) | const DEFAULT_REFRESH_MS = 1000 * 60 * 5 type BaseWidget (line 7) | type BaseWidget = { type WidgetType (line 24) | type WidgetType = (typeof widgetTypes)[number] type Link (line 32) | type Link = string type FourStatsItem (line 34) | type FourStatsItem = BaseWidget & { type FourStatsWidget (line 39) | type FourStatsWidget = BaseWidget & { type FourStatsWidgetProps (line 44) | type FourStatsWidgetProps = Omit type ThreeStatsItem (line 46) | type ThreeStatsItem = { type ThreeStatsWidget (line 51) | type ThreeStatsWidget = BaseWidget & { type ThreeStatsWidgetProps (line 56) | type ThreeStatsWidgetProps = Omit type TwoStatsWithProgressItem (line 59) | type TwoStatsWithProgressItem = { type TwoStatsWithProgressWidget (line 66) | type TwoStatsWithProgressWidget = BaseWidget & { type TwoStatsWithProgressWidgetProps (line 71) | type TwoStatsWithProgressWidgetProps = Omit type TextWithButtonsWidget (line 85) | type TextWithButtonsWidget = BaseWidget & { type TextWithButtonsWidgetProps (line 96) | type TextWithButtonsWidgetProps = Omit type ListWidgetItem (line 98) | type ListWidgetItem = { type ListWidget (line 102) | type ListWidget = BaseWidget & { type ListWidgetProps (line 108) | type ListWidgetProps = Omit type ListEmojiItem (line 110) | type ListEmojiItem = { type ListEmojiWidget (line 114) | type ListEmojiWidget = BaseWidget & { type ListEmojiWidgetProps (line 120) | type ListEmojiWidgetProps = Omit type AnyWidgetConfig (line 122) | type AnyWidgetConfig = type WidgetConfig (line 135) | type WidgetConfig = Extract = T extends ... type RegistryWidget (line 146) | type RegistryWidget = { constant MAX_WIDGETS (line 156) | const MAX_WIDGETS = 3 FILE: packages/ui/src/modules/widgets/shared/shared.tsx type WidgetContainerButtonProps (line 40) | type WidgetContainerButtonProps = React.ComponentPropsWithoutRef<'button'> type WidgetContainerDivProps (line 41) | type WidgetContainerDivProps = React.ComponentPropsWithoutRef<'div'> type WidgetContainerProps (line 42) | type WidgetContainerProps = WidgetContainerButtonProps | WidgetContainer... FILE: packages/ui/src/modules/widgets/shared/stat-text.tsx function StatText (line 5) | function StatText({title, value, valueSub}: {title?: string; value?: str... FILE: packages/ui/src/modules/widgets/shared/tabler-icon.tsx function sanitizeIconName (line 5) | function sanitizeIconName(input: string) { function TablerIcon (line 11) | function TablerIcon({iconName, className, ...props}: {iconName: string} ... FILE: packages/ui/src/modules/widgets/shared/widget-wrapper.tsx function WidgetWrapper (line 5) | function WidgetWrapper({label, children}: {label: string; children?: Rea... FILE: packages/ui/src/modules/widgets/text-with-buttons-widget.tsx function TextWithButtonsWidget (line 11) | function TextWithButtonsWidget({ function WidgetButton (line 43) | function WidgetButton({onClick, children}: {onClick: () => void; childre... FILE: packages/ui/src/modules/widgets/text-with-progress-widget.tsx function TextWithProgressWidget (line 9) | function TextWithProgressWidget({ FILE: packages/ui/src/modules/widgets/three-stats-widget.tsx function ThreeStatsWidget (line 8) | function ThreeStatsWidget({ function Item (line 34) | function Item(item?: ThreeStatsItem) { FILE: packages/ui/src/modules/widgets/two-stats-with-guage-widget.tsx function TwoStatsWidget (line 8) | function TwoStatsWidget({ function Item (line 31) | function Item(item?: TwoStatsWithProgressItem) { FILE: packages/ui/src/modules/wifi/desktop-wifi-button-connected.tsx function DesktopWifiButtonConnected (line 8) | function DesktopWifiButtonConnected({className}: {className?: string}) { FILE: packages/ui/src/modules/wifi/icon.tsx function WifiIcon (line 6) | function WifiIcon({bars = 4, className}: {bars: number; className?: stri... function WifiIcon2 (line 27) | function WifiIcon2({bars = 4, ...props}: {bars: number} & SVGProps void type ConfirmationContextType (line 30) | type ConfirmationContextType = { FILE: packages/ui/src/providers/global-files.tsx type AudioState (line 16) | interface AudioState { type UploadStats (line 21) | interface UploadStats { type UploadStatus (line 30) | type UploadStatus = 'uploading' | 'collided' | 'retrying' | 'error' | 'c... type UploadingFileSystemItem (line 31) | interface UploadingFileSystemItem extends FileSystemItem { type OperationProgress (line 39) | type OperationProgress = RouterOutput['files']['operationProgress'][number] type OperationsInProgress (line 40) | type OperationsInProgress = OperationProgress[] type GlobalFilesContextValue (line 42) | interface GlobalFilesContextValue { function GlobalFilesProvider (line 109) | function GlobalFilesProvider({children}: {children: React.ReactNode}) { function useGlobalFiles (line 584) | function useGlobalFiles() { FILE: packages/ui/src/providers/global-system-state/index.tsx type SystemStatus (line 23) | type SystemStatus = RouterOutput['system']['status'] function GlobalSystemStateProvider (line 38) | function GlobalSystemStateProvider({children}: {children: ReactNode}) { function useGlobalSystemState (line 310) | function useGlobalSystemState() { FILE: packages/ui/src/providers/global-system-state/migrate.tsx function useMigrate (line 7) | function useMigrate({onMutate, onSuccess}: {onMutate?: () => void; onSuc... function MigratingCover (line 18) | function MigratingCover({onRetry}: {onRetry: () => void}) { function useSoftwareUpdate (line 57) | function useSoftwareUpdate({ FILE: packages/ui/src/providers/global-system-state/reset.tsx function useReset (line 6) | function useReset({onMutate, onError}: {onMutate?: () => void; onError?:... function ResettingCover (line 19) | function ResettingCover() { FILE: packages/ui/src/providers/global-system-state/restart.tsx function useRestart (line 6) | function useRestart({onMutate, onSuccess}: {onMutate?: () => void; onSuc... function RestartingCover (line 16) | function RestartingCover() { FILE: packages/ui/src/providers/global-system-state/restore.tsx function RestoreCover (line 8) | function RestoreCover() { FILE: packages/ui/src/providers/global-system-state/shutdown.tsx function useShutdown (line 6) | function useShutdown({onMutate, onSuccess}: {onMutate?: () => void; onSu... function ShuttingDownCover (line 16) | function ShuttingDownCover() { FILE: packages/ui/src/providers/global-system-state/update.tsx function useUpdate (line 7) | function useUpdate({onMutate, onSuccess}: {onMutate?: () => void; onSucc... function UpdatingCover (line 18) | function UpdatingCover({onRetry}: {onRetry: () => void}) { FILE: packages/ui/src/providers/immersive-dialog.tsx type ImmersiveDialogContextValue (line 12) | interface ImmersiveDialogContextValue { function ImmersiveDialogProvider (line 20) | function ImmersiveDialogProvider({children}: {children: ReactNode}) { function useImmersiveDialogOpen (line 28) | function useImmersiveDialogOpen() { function useImmersiveDialogCounter (line 34) | function useImmersiveDialogCounter() { FILE: packages/ui/src/providers/language.tsx function RemoteLanguageInjector (line 7) | function RemoteLanguageInjector() { FILE: packages/ui/src/providers/prefetch.tsx function Prefetcher (line 10) | function Prefetcher() { FILE: packages/ui/src/providers/sheet-sticky-header.tsx constant SCROLL_THRESHOLD (line 9) | const SCROLL_THRESHOLD = 110 constant SHEET_HEADER_ID (line 10) | const SHEET_HEADER_ID = 'sheet-header-root-id' type ContextT (line 12) | type ContextT = { function SheetStickyHeaderProvider (line 20) | function SheetStickyHeaderProvider({ function useSheetStickyHeader (line 50) | function useSheetStickyHeader() { function SheetStickyHeader (line 59) | function SheetStickyHeader(props: ComponentPropsWithoutRef<'div'>) { function SheetStickyHeaderTarget (line 70) | function SheetStickyHeaderTarget() { FILE: packages/ui/src/providers/wallpaper.tsx type WallpaperBase (line 11) | type WallpaperBase = { function getWallpaperThumbUrl (line 130) | function getWallpaperThumbUrl(wallpaper: WallpaperBase) { type Wallpaper (line 134) | type Wallpaper = (typeof wallpapers)[number] type WallpaperId (line 135) | type WallpaperId = (typeof wallpapers)[number]['id'] type WallpaperType (line 147) | type WallpaperType = { function WallpaperProviderConnected (line 170) | function WallpaperProviderConnected({children}: {children: ReactNode}) { function WallpaperProvider (line 188) | function WallpaperProvider({ function useWallpaperCssVars (line 231) | function useWallpaperCssVars(wallpaperId?: WallpaperId) { function Wallpaper (line 251) | function Wallpaper({ function useRemoteWallpaper (line 312) | function useRemoteWallpaper(onSuccess?: (id: WallpaperId) => void) { function RemoteWallpaperInjector (line 349) | function RemoteWallpaperInjector() { constant LIGHTEN_AMOUNT (line 364) | const LIGHTEN_AMOUNT = 8 function brandHslLighterByAmount (line 365) | function brandHslLighterByAmount(hsl: string, amount: number) { function brandHslLighter (line 374) | function brandHslLighter(hsl: string) { function brandHslLightest (line 377) | function brandHslLightest(hsl: string) { FILE: packages/ui/src/routes/app-store/app-page/index.tsx function AppPage (line 17) | function AppPage() { FILE: packages/ui/src/routes/app-store/category-page.tsx function CategoryPage (line 11) | function CategoryPage() { function CategoryContent (line 22) | function CategoryContent() { FILE: packages/ui/src/routes/app-store/discover.tsx function DiscoverUnavailable (line 28) | function DiscoverUnavailable() { function Discover (line 37) | function Discover() { function DiscoverContent (line 48) | function DiscoverContent() { FILE: packages/ui/src/routes/app-store/use-discover-query.tsx type Banner (line 5) | type Banner = { type Section (line 10) | type Section = { type DiscoverData (line 20) | type DiscoverData = { function useDiscoverQuery (line 25) | function useDiscoverQuery() { FILE: packages/ui/src/routes/community-app-store/app-page/index.tsx function CommunityAppPage (line 14) | function CommunityAppPage() { FILE: packages/ui/src/routes/community-app-store/index.tsx function CommunityAppStoreHome (line 14) | function CommunityAppStoreHome() { FILE: packages/ui/src/routes/edit-widgets/index.tsx function EditWidgetsPage (line 10) | function EditWidgetsPage() { FILE: packages/ui/src/routes/edit-widgets/widget-selector.tsx function WidgetSelector (line 19) | function WidgetSelector({open, onOpenChange}: {open: boolean; onOpenChan... function WidgetSheet (line 114) | function WidgetSheet({ function WidgetSection (line 157) | function WidgetSection({iconSrc, title, children}: {iconSrc: string; tit... function PlusIcon (line 170) | function PlusIcon({className}: {className?: string}) { function MinusIcon (line 178) | function MinusIcon({className}: {className?: string}) { function WidgetChecker (line 186) | function WidgetChecker({ FILE: packages/ui/src/routes/factory-reset/_components/confirm-with-password.tsx function ConfirmWithPassword (line 11) | function ConfirmWithPassword({ FILE: packages/ui/src/routes/factory-reset/_components/review-data.tsx function ReviewData (line 13) | function ReviewData() { FILE: packages/ui/src/routes/factory-reset/index.tsx function FactoryReset (line 13) | function FactoryReset() { function SplitDialog (line 52) | function SplitDialog({children}: {children: React.ReactNode}) { function SplitLeftContent (line 61) | function SplitLeftContent() { FILE: packages/ui/src/routes/live-usage.tsx function LiveUsageDialog (line 31) | function LiveUsageDialog() { type SelectedTab (line 50) | type SelectedTab = 'storage' | 'memory' | 'cpu' function LiveUsageContent (line 52) | function LiveUsageContent() { function StorageSection (line 155) | function StorageSection() { function MemorySection (line 182) | function MemorySection() { function CpuSection (line 202) | function CpuSection() { function UsageCard (line 216) | function UsageCard({ function ErrorMessage (line 308) | function ErrorMessage({children}: {children?: ReactNode}) { function AppList (line 319) | function AppList({apps, formatValue}: {apps?: {id: string; used: number}... function AppListSkeleton (line 344) | function AppListSkeleton({systemApps}: {systemApps?: Array}) { function AppListRow (line 359) | function AppListRow({icon, title, value, disabled}: {icon?: string; titl... FILE: packages/ui/src/routes/login.tsx type Step (line 11) | type Step = 'password' | '2fa' function Login (line 13) | function Login() { FILE: packages/ui/src/routes/not-found.tsx function NotFound (line 20) | function NotFound() { FILE: packages/ui/src/routes/notifications.tsx function NotificationContent (line 24) | function NotificationContent({children}: {children: string}) { type NotificationContent (line 78) | type NotificationContent = { function parseBackupNotificationId (line 91) | function parseBackupNotificationId(notification: string): {repoId: strin... function getBackupFailingContent (line 102) | function getBackupFailingContent( function getMigratedBackThatMacUpContent (line 155) | function getMigratedBackThatMacUpContent(): NotificationContent { function getDefaultNotificationContent (line 166) | function getDefaultNotificationContent(notification: string): Notificati... function Notifications (line 173) | function Notifications() { FILE: packages/ui/src/routes/onboarding/account-created.tsx function AccountCreated (line 12) | function AccountCreated() { FILE: packages/ui/src/routes/onboarding/create-account.tsx type AccountCredentials (line 17) | type AccountCredentials = { function CreateAccount (line 23) | function CreateAccount() { FILE: packages/ui/src/routes/onboarding/index.tsx function useAutoDetectLanguage (line 12) | function useAutoDetectLanguage() { function OnboardingStart (line 39) | function OnboardingStart() { FILE: packages/ui/src/routes/onboarding/onboarding-footer.tsx type OnboardingAction (line 14) | enum OnboardingAction { type OnboardingFooterProps (line 19) | interface OnboardingFooterProps { function OnboardingFooter (line 26) | function OnboardingFooter({action}: OnboardingFooterProps) { function OnboardingLanguageDropdownTrigger (line 60) | function OnboardingLanguageDropdownTrigger() { FILE: packages/ui/src/routes/onboarding/raid/index.tsx constant MIN_SCAN_DISPLAY_TIME (line 12) | const MIN_SCAN_DISPLAY_TIME = 3000 function Raid (line 16) | function Raid() { FILE: packages/ui/src/routes/onboarding/raid/raid-error.tsx type RaidErrorProps (line 8) | type RaidErrorProps = { function RaidError (line 18) | function RaidError({title, instructions, image}: RaidErrorProps) { FILE: packages/ui/src/routes/onboarding/raid/setup.tsx function getHealthWarningMessage (line 47) | function getHealthWarningMessage(device: StorageDevice): string | null { function FailSafeInfo (line 66) | function FailSafeInfo({ function RaidSetup (line 128) | function RaidSetup() { FILE: packages/ui/src/routes/onboarding/raid/ssd-health-dialog.tsx type Warning (line 13) | type Warning = { type SsdHealthDialogProps (line 18) | type SsdHealthDialogProps = { function SsdHealthDialog (line 25) | function SsdHealthDialog({device, slotNumber, open, onOpenChange}: SsdHe... function useSsdHealthDialog (line 263) | function useSsdHealthDialog() { FILE: packages/ui/src/routes/onboarding/raid/ssd-tray.tsx type SsdSlot (line 8) | type SsdSlot = { type SsdTrayProps (line 13) | type SsdTrayProps = { function SsdTray (line 32) | function SsdTray({slots, failsafeSlot = -1, onHealthClick}: SsdTrayProps) { FILE: packages/ui/src/routes/onboarding/raid/use-raid-setup.ts type StorageDevice (line 6) | type StorageDevice = RouterOutput['hardware']['internalStorage']['getDev... type RaidType (line 9) | type RaidType = 'storage' | 'failsafe' constant LIFETIME_WARNING_THRESHOLD (line 26) | const LIFETIME_WARNING_THRESHOLD = 80 constant FAILSAFE_COLOR (line 29) | const FAILSAFE_COLOR = '#FFFFFF' constant WASTED_COLOR (line 32) | const WASTED_COLOR = '#FF2F63' function getDeviceHealth (line 36) | function getDeviceHealth(device: StorageDevice) { function useDetectStorageDevices (line 70) | function useDetectStorageDevices() { FILE: packages/ui/src/routes/onboarding/restore.tsx function BackupsRestoreOnboarding (line 31) | function BackupsRestoreOnboarding() { function UmbrelProRestoreInstructions (line 61) | function UmbrelProRestoreInstructions() { function RegularRestoreFlow (line 106) | function RegularRestoreFlow() { function BackupSnapshot (line 391) | function BackupSnapshot({ FILE: packages/ui/src/routes/onboarding/use-onboarding-device.ts type OnboardingDevice (line 4) | type OnboardingDevice = { constant DEFAULT (line 33) | const DEFAULT: OnboardingDevice = { function useOnboardingDevice (line 40) | function useOnboardingDevice(): OnboardingDevice { FILE: packages/ui/src/routes/raid-error/index.tsx function TroubleshootingStep (line 31) | function TroubleshootingStep({ function RaidErrorScreen (line 62) | function RaidErrorScreen() { FILE: packages/ui/src/routes/settings/2fa-disable.tsx function TwoFactorDisableDialog (line 10) | function TwoFactorDisableDialog() { function Inner (line 43) | function Inner({onCodeCheck}: {onCodeCheck: (code: string) => Promise vo... FILE: packages/ui/src/routes/settings/mobile/account.tsx function AccountDrawer (line 21) | function AccountDrawer() { function ChangeName (line 53) | function ChangeName({closeDialog}: {closeDialog: () => void}) { function ChangePassword (line 80) | function ChangePassword({closeDialog}: {closeDialog: () => void}) { FILE: packages/ui/src/routes/settings/mobile/app-store-preferences.tsx function AppStorePreferencesDrawer (line 14) | function AppStorePreferencesDrawer() { FILE: packages/ui/src/routes/settings/mobile/backups-mobile-drawer.tsx function BackupsMobileDrawer (line 16) | function BackupsMobileDrawer() { FILE: packages/ui/src/routes/settings/mobile/device-info.tsx function DeviceInfoDrawer (line 15) | function DeviceInfoDrawer() { FILE: packages/ui/src/routes/settings/mobile/language.tsx function LanguageDrawer (line 18) | function LanguageDrawer() { FILE: packages/ui/src/routes/settings/mobile/software-update.tsx function SoftwareUpdateDrawer (line 18) | function SoftwareUpdateDrawer() { FILE: packages/ui/src/routes/settings/mobile/start-migration-drawer-or-dialog.tsx function StartMigrationDrawerOrDialog (line 12) | function StartMigrationDrawerOrDialog() { FILE: packages/ui/src/routes/settings/mobile/tor.tsx function TorDrawer (line 11) | function TorDrawer() { FILE: packages/ui/src/routes/settings/mobile/wallpaper.tsx function WallpaperDrawer (line 18) | function WallpaperDrawer() { function WallpaperItem (line 56) | function WallpaperItem({ FILE: packages/ui/src/routes/settings/restart.tsx function RestartDialog (line 17) | function RestartDialog() { FILE: packages/ui/src/routes/settings/shutdown.tsx function ShutdownDialog (line 16) | function ShutdownDialog() { FILE: packages/ui/src/routes/settings/software-update-confirm.tsx function SoftwareUpdateConfirmDialog (line 10) | function SoftwareUpdateConfirmDialog() { FILE: packages/ui/src/routes/settings/terminal/_shared.tsx function TerminalTitleBackLink (line 15) | function TerminalTitleBackLink() { constant MIN_COLS (line 20) | const MIN_COLS = 80 FILE: packages/ui/src/routes/settings/terminal/app.tsx function App (line 9) | function App() { FILE: packages/ui/src/routes/settings/terminal/index.tsx function TerminalDialog (line 14) | function TerminalDialog() { function PickerDialogContent (line 33) | function PickerDialogContent() { FILE: packages/ui/src/routes/settings/terminal/umbrelos.tsx function UmbrelOs (line 5) | function UmbrelOs() { FILE: packages/ui/src/routes/settings/troubleshoot/_shared.tsx type SystemLogType (line 11) | type SystemLogType = RouterInput['system']['logs']['type'] function TroubleshootTitleBackLink (line 13) | function TroubleshootTitleBackLink() { function useScrollToBottom (line 29) | function useScrollToBottom(ref: React.RefObject, ... function LogResults (line 38) | function LogResults({children}: {children: string}) { FILE: packages/ui/src/routes/settings/troubleshoot/app.tsx function TroubleshootApp (line 14) | function TroubleshootApp() { function useAppLogs (line 44) | function useAppLogs(appId: string) { FILE: packages/ui/src/routes/settings/troubleshoot/index.tsx function TroubleshootDialog (line 13) | function TroubleshootDialog() { function PickerDialogContent (line 32) | function PickerDialogContent() { FILE: packages/ui/src/routes/settings/troubleshoot/umbrelos.tsx function TroubleshootUmbrelOs (line 8) | function TroubleshootUmbrelOs() { function useSystemLogs (line 26) | function useSystemLogs(type: SystemLogType) { FILE: packages/ui/src/routes/settings/wifi-unsupported.tsx function WifiUnsupported (line 15) | function WifiUnsupported() { function Icon (line 38) | function Icon() { FILE: packages/ui/src/routes/settings/wifi.tsx function Wifi (line 4) | function Wifi() { FILE: packages/ui/src/routes/whats-new-modal.tsx constant VERSION (line 20) | const VERSION = 'umbrelOS 1.5' constant FEATURES (line 22) | const FEATURES = [ function DotIndicators (line 56) | function DotIndicators({ function WhatsNewModal (line 100) | function WhatsNewModal() { FILE: packages/ui/src/trpc/loading-indicator.tsx function LoadingIndicator (line 5) | function LoadingIndicator() { FILE: packages/ui/src/trpc/trpc.ts type RouterInput (line 94) | type RouterInput = inferRouterInputs type RouterOutput (line 95) | type RouterOutput = inferRouterOutputs type RouterError (line 96) | type RouterError = TRPCClientErrorLike type AppState (line 100) | type AppState = RouterOutput['apps']['state']['state'] type InstallState (line 115) | type InstallState = (typeof installStates)[number] type InstalledState (line 117) | type InstalledState = (typeof installedStates)[number] type AppStateOrLoading (line 133) | type AppStateOrLoading = 'loading' | AppState type WifiNetwork (line 137) | type WifiNetwork = Omit type WifiStatus (line 138) | type WifiStatus = Exclude[... type WifiStatusUi (line 140) | type WifiStatusUi = WifiStatus | 'loading' type RegistryApp (line 147) | type RegistryApp = RouterOutput['appStore']['registry'][number]['apps'][... type UserApp (line 152) | type UserApp = Exclude void) { function useAfterDelayedClose (line 32) | function useAfterDelayedClose(open: boolean, cb: () => void) { function useDialogOpenProps (line 44) | function useDialogOpenProps(dialogKey: DialogKey) { function useLinkToDialog (line 81) | function useLinkToDialog() { FILE: packages/ui/src/utils/language.ts type SupportedLanguageCode (line 20) | type SupportedLanguageCode = (typeof supportedLanguageCodes)[number] FILE: packages/ui/src/utils/logs.ts function pushLog (line 6) | function pushLog(log: any) { function monkeyPatchConsoleLog (line 18) | function monkeyPatchConsoleLog() { function downloadLogs (line 51) | function downloadLogs() { FILE: packages/ui/src/utils/misc.ts function firstNameFromFullName (line 5) | function firstNameFromFullName(name: string) { function sleep (line 9) | function sleep(milliseconds: number) { function isNormalNumber (line 13) | function isNormalNumber(value: number | null | undefined): value is numb... function assertUnreachable (line 19) | function assertUnreachable(x: never): never { function keyBy (line 26) | function keyBy(array: ReadonlyArray, key: U): R... function urlJoin (line 32) | function urlJoin(base: string, path: string) { function pathJoin (line 37) | function pathJoin(base: string, path: string) { function appToUrl (line 42) | function appToUrl(app: UserApp) { function appToUrlWithAppPath (line 48) | function appToUrlWithAppPath(app: UserApp) { function isOnionPage (line 52) | function isOnionPage() { function preloadImage (line 56) | function preloadImage(url: string): Promise { function isWindows (line 70) | function isWindows() { function isLinux (line 74) | function isLinux() { function isMac (line 78) | function isMac() { function platform (line 82) | function platform() { constant IS_ANDROID (line 90) | const IS_ANDROID = /Android/i.test(navigator.userAgent) constant IS_DEV (line 92) | const IS_DEV = localStorage.getItem('debug') === 'true' function cmdOrCtrl (line 94) | function cmdOrCtrl() { FILE: packages/ui/src/utils/number.ts function formatNumberI18n (line 3) | function formatNumberI18n({n, showDecimals = true}: {n: number; showDeci... FILE: packages/ui/src/utils/pretty-bytes.ts function maybePrettyBytes (line 6) | function maybePrettyBytes(n: number | undefined | null) { FILE: packages/ui/src/utils/search.ts type SearchKey (line 20) | type SearchKey = { function createSearch (line 25) | function createSearch(items: T[], keys: SearchKey[]) { FILE: packages/ui/src/utils/seconds-to-eta.ts function secondsToEta (line 1) | function secondsToEta(seconds: number | null | undefined): string { FILE: packages/ui/src/utils/system.ts function trpcDiskToLocal (line 3) | function trpcDiskToLocal( function trpcMemoryToLocal (line 19) | function trpcMemoryToLocal( function isTrpcDiskFull (line 34) | function isTrpcDiskFull(data?: RouterOutput['system']['systemDiskUsage']) { function isTrpcDiskLow (line 38) | function isTrpcDiskLow(data?: RouterOutput['system']['systemDiskUsage']) { function isTrpcMemoryLow (line 42) | function isTrpcMemoryLow(data?: RouterOutput['system']['systemMemoryUsag... function isDiskLow (line 48) | function isDiskLow(remaining?: number) { function isDiskFull (line 56) | function isDiskFull(remaining?: number) { function isCpuTooHot (line 62) | function isCpuTooHot(warning?: string) { function isMemoryLow (line 67) | function isMemoryLow({size, used}: {size?: number; used?: number}) { FILE: packages/ui/src/utils/temperature.ts function celciusToFahrenheit (line 4) | function celciusToFahrenheit(temperatureInCelcius?: number) { function formatTemperature (line 10) | function formatTemperature(tempCelcius: number | undefined, unit: 'c' | ... function temperatureWarningToColor (line 17) | function temperatureWarningToColor(warning?: string) { function temperatureWarningToMessage (line 29) | function temperatureWarningToMessage(warning?: string) { FILE: packages/ui/src/utils/wifi.ts function signalToBars (line 1) | function signalToBars(signal: number) { FILE: packages/ui/update-translations.js function getBaseEnglishContent (line 43) | function getBaseEnglishContent(baseBranch) { function getModifiedKeys (line 57) | function getModifiedKeys(currentContent, baseBranch) { function getLastCommitForKey (line 96) | function getLastCommitForKey(filePath, key, baseBranch) { function shouldRegenerateKey (line 125) | function shouldRegenerateKey(key, localeFile, baseBranch) { function getKeysNeedingRegeneration (line 163) | function getKeysNeedingRegeneration(modifiedEnKeys, localeFile, baseBran... function generateTranslation (line 176) | async function generateTranslation(englishReferenceContent, textToTransl... function removeUnusedTranslations (line 205) | async function removeUnusedTranslations(englishReferenceContent) { function generateAndWriteTranslations (line 248) | async function generateAndWriteTranslations( function checkAndGenerateTranslations (line 321) | async function checkAndGenerateTranslations(englishReferenceContent, mod... function start (line 329) | async function start() { FILE: packages/umbreld/source/cli.ts function cleanShutdown (line 64) | async function cleanShutdown(signal: string) { FILE: packages/umbreld/source/constants.ts constant UMBREL_APP_STORE_REPO (line 2) | const UMBREL_APP_STORE_REPO = 'https://github.com/getumbrel/umbrel-apps.... constant BACKUP_RESTORE_FIRST_START_FLAG (line 5) | const BACKUP_RESTORE_FIRST_START_FLAG = '.is-backups-restore-first-start' FILE: packages/umbreld/source/index.ts type StoreSchema (line 26) | type StoreSchema = { type UmbreldOptions (line 87) | type UmbreldOptions = { class Umbreld (line 94) | class Umbreld { method constructor (line 116) | constructor({ method start (line 141) | async start() { method setBackupRestoreFirstStartFlag (line 212) | private async setBackupRestoreFirstStartFlag() { method stop (line 225) | async stop() { FILE: packages/umbreld/source/modules/apps/app-repository.ts function readYaml (line 16) | async function readYaml(path: string) { function isValidUrl (line 23) | function isValidUrl(url: string) { class AppRepository (line 32) | class AppRepository { method constructor (line 38) | constructor(umbreld: Umbreld, url: string) { method cleanUrl (line 48) | cleanUrl() { method atomicClone (line 71) | async atomicClone() { method getCurrentCommit (line 94) | async getCurrentCommit() { method checkLatestCommit (line 100) | async checkLatestCommit() { method isUpdated (line 107) | async isUpdated() { method update (line 119) | async update() { method readRegistry (line 134) | async readRegistry() { FILE: packages/umbreld/source/modules/apps/app-store.ts class AppStore (line 7) | class AppStore { method constructor (line 15) | constructor(umbreld: Umbreld, {defaultAppStoreRepo}: {defaultAppStoreR... method start (line 22) | async start() { method stop (line 60) | async stop() { method getRepositories (line 64) | async getRepositories() { method getDefaultRepository (line 71) | async getDefaultRepository() { method update (line 76) | async update() { method registry (line 88) | async registry() { method addRepository (line 103) | async addRepository(url: string) { method removeRepository (line 127) | async removeRepository(url: string) { method getAppTemplateFilePath (line 151) | async getAppTemplateFilePath(appId: string) { FILE: packages/umbreld/source/modules/apps/app.ts function readYaml (line 20) | async function readYaml(path: string) { function writeYaml (line 24) | async function writeYaml(path: string, data: any) { function readManifestInDirectory (line 28) | async function readManifestInDirectory(dataDirectory: string) { type AppState (line 33) | type AppState = class App (line 50) | class App { method constructor (line 59) | constructor(umbreld: Umbreld, appId: string) { method readManifest (line 71) | readManifest() { method readCompose (line 75) | readCompose() { method readHiddenService (line 79) | async readHiddenService() { method deriveDeterministicPassword (line 88) | async deriveDeterministicPassword() { method writeCompose (line 96) | writeCompose(compose: Compose) { method patchComposeFile (line 100) | async patchComposeFile() { method pull (line 140) | async pull() { method install (line 155) | async install() { method update (line 177) | async update() { method start (line 213) | async start() { method stop (line 236) | async stop({persistState = false}: {persistState?: boolean} = {}) { method restart (line 257) | async restart() { method uninstall (line 269) | async uninstall() { method getPids (line 302) | async getPids() { method getDiskUsage (line 324) | async getDiskUsage() { method getLogs (line 337) | async getLogs() { method getContainerIp (line 343) | async getContainerIp(service: string) { method getBackupIgnoredFilePaths (line 360) | async getBackupIgnoredFilePaths() { method getWidgetMetadata (line 392) | async getWidgetMetadata(widgetName: string) { method getWidgetData (line 403) | async getWidgetData(widgetId: string) { method getDependencies (line 429) | async getDependencies() { method getSelectedDependencies (line 438) | async getSelectedDependencies() { method setSelectedDependencies (line 447) | async setSelectedDependencies(selectedDependencies: Record type AppManifest (line 65) | type AppManifest = z.infer function isRecord (line 67) | function isRecord(value: unknown): value is Record { function tryNormalizeVersion (line 71) | function tryNormalizeVersion(version: number | string) { function validateManifest (line 85) | function validateManifest(parsed: unknown): AppManifest { type AppSettings (line 107) | type AppSettings = z.infer FILE: packages/umbreld/source/modules/backups/backups.integration.test.ts function createBackupShare (line 25) | async function createBackupShare(umbreld: Awaited { FILE: packages/umbreld/source/modules/blacklist-uas/blacklist-uas.ts function blacklistUASDriver (line 15) | async function blacklistUASDriver() { FILE: packages/umbreld/source/modules/cli-client.ts function signJwt (line 14) | async function signJwt() { function parseValue (line 39) | function parseValue(value: string): any { function parseArgs (line 59) | function parseArgs(args: string[]): any { type CliClientOptions (line 74) | type CliClientOptions = { FILE: packages/umbreld/source/modules/dbus/dbus.ts class Dbus (line 8) | class Dbus { method constructor (line 13) | constructor(umbreld: Umbreld) { method start (line 19) | async start() { method addDiskEventListeners (line 27) | async addDiskEventListeners() { method stop (line 67) | async stop() { FILE: packages/umbreld/source/modules/development.ts function overrideDevelopmentHostname (line 7) | async function overrideDevelopmentHostname(umbreld: Umbreld, hostname: s... FILE: packages/umbreld/source/modules/event-bus/event-bus.ts type MissingInEvents (line 10) | type MissingInEvents = Exclude type _AssertEveryKeyIsListed (line 11) | type _AssertEveryKeyIsListed = MissingInEvents extends never ? true : [`... type EventTypes (line 29) | type EventTypes = { class EventBus (line 57) | class EventBus { method constructor (line 68) | constructor(umbreld: Umbreld) { method stream (line 75) | stream(event: keyof EventTypes, {signal}: {signal?: AbortSignal} = {}) { FILE: packages/umbreld/source/modules/files/api.download.integration.test.ts function extractZipBuffer (line 24) | function extractZipBuffer(buffer: Buffer): Record { FILE: packages/umbreld/source/modules/files/api.ts function api (line 9) | function api({publicApi, privateApi, umbreld}: ApiOptions) { FILE: packages/umbreld/source/modules/files/archive.integration.test.ts function extractZipBuffer (line 27) | function extractZipBuffer(buffer: Buffer): Record { FILE: packages/umbreld/source/modules/files/archive.ts type ZipEntryData (line 12) | type ZipEntryData = archiver.EntryData & {store?: boolean} class Archive (line 14) | class Archive { method constructor (line 18) | constructor(umbreld: Umbreld) { method start (line 25) | async start() {} method stop (line 26) | async stop() {} method zipName (line 29) | zipName(files: string[], {defaultName = 'Archive.zip'} = {}) { method #shouldSkipCompression (line 38) | #shouldSkipCompression(filePath: string): boolean { method createZipStream (line 45) | async createZipStream(systemPaths: string[]) { method createZipFile (line 83) | async createZipFile(virtualPaths: string[]) { method archive (line 104) | async archive(virtualPaths: string[]) { method isUnarchiveable (line 109) | isUnarchiveable(path: string) { method unarchive (line 115) | async unarchive(virtualPath: string) { FILE: packages/umbreld/source/modules/files/external-storage.integration.test.ts constant LSBLK_NO_EXTERNAL_DISK (line 462) | const LSBLK_NO_EXTERNAL_DISK = { constant LSBLK_EXTERNAL_DISK_ATTACHED (line 821) | const LSBLK_EXTERNAL_DISK_ATTACHED = { constant LSBLK_EXTERNAL_DISK_MOUNTED (line 1380) | const LSBLK_EXTERNAL_DISK_MOUNTED = { FILE: packages/umbreld/source/modules/files/external-storage.ts type BlockDevice (line 14) | type BlockDevice = { function getBlockDevices (line 33) | async function getBlockDevices() { class ExternalStorage (line 89) | class ExternalStorage { method constructor (line 96) | constructor(umbreld: Umbreld) { method supported (line 105) | async supported() { method start (line 111) | async start() { method stop (line 134) | async stop() { method #mountExternalDevices (line 156) | async #mountExternalDevices() { method unmountExternalDevice (line 226) | async unmountExternalDevice(deviceId: string, {remove = true} = {}) { method formatExternalDevice (line 270) | async formatExternalDevice({ method #getExternalDevices (line 334) | async #getExternalDevices() { method getExternalDevicesWithVirtualMountPoints (line 344) | async getExternalDevicesWithVirtualMountPoints() { method getMountedExternalDevices (line 370) | async getMountedExternalDevices() { method #unmountAllMountedExternalDevices (line 387) | async #unmountAllMountedExternalDevices() { method #cleanLeftOverMountPoints (line 401) | async #cleanLeftOverMountPoints() { method isExternalDeviceConnectedOnUnsupportedDevice (line 427) | async isExternalDeviceConnectedOnUnsupportedDevice() { FILE: packages/umbreld/source/modules/files/favorites.ts class Favorites (line 5) | class Favorites { method constructor (line 10) | constructor(umbreld: Umbreld) { method start (line 17) | async start() { method #get (line 28) | async #get() { method #handleFileChange (line 37) | async #handleFileChange(event: FileChangeEvent) { method listFavorites (line 46) | async listFavorites() { method addFavorite (line 65) | async addFavorite(virtualPath: string) { method removeFavorite (line 83) | async removeFavorite(virtualPath: string) { method stop (line 95) | async stop() { FILE: packages/umbreld/source/modules/files/files.ts constant ALL_OPERATIONS (line 43) | const ALL_OPERATIONS = [ type FileOperation (line 56) | type FileOperation = (typeof ALL_OPERATIONS)[number] type File (line 58) | type File = { type DirectoryListing (line 68) | type DirectoryListing = File & { type Trashmeta (line 73) | type Trashmeta = { type BaseDirectory (line 77) | type BaseDirectory = '/Home' | '/Trash' | '/Apps' | '/External' | '/Back... type ViewPreferences (line 79) | type ViewPreferences = { constant DEFAULT_VIEW_PREFERENCES (line 85) | const DEFAULT_VIEW_PREFERENCES: ViewPreferences = { type OperationProgress (line 91) | type OperationProgress = { type OperationsInProgress (line 100) | type OperationsInProgress = OperationProgress[] class Files (line 102) | class Files { method constructor (line 123) | constructor(umbreld: Umbreld) { method start (line 151) | async start() { method firstRun (line 182) | async firstRun() { method stop (line 199) | async stop() { method getBaseDirectory (line 213) | getBaseDirectory(virtualPath: BaseDirectory) { method createDirectory (line 221) | async createDirectory(virtualPath: string) { method chownSystemPath (line 249) | async chownSystemPath(systemPath: string) { method status (line 260) | async status(systemPath: string): Promise { method isHidden (line 309) | isHidden(filename: string) { method #listRoot (line 317) | async #listRoot() { method list (line 333) | async list(virtualPath: string): Promise { method streamContents (line 384) | async *streamContents(virtualPath: string) { method #copyWithProgress (line 391) | async #copyWithProgress(sourceSystemPath: string, destinationSystemPat... method copy (line 437) | async copy(sourceVirtualPath: string, destinationVirtualDirectory: str... method move (line 491) | async move(sourceVirtualPath: string, destinationVirtualDirectory: str... method rename (line 546) | async rename(sourceVirtualPath: string, newName: string): Promise { method updateViewPreferences (line 928) | async updateViewPreferences(newViewPreferences: Partial { method #mountShare (line 126) | async #mountShare(share: NetworkShare): Promise { method #unmountShare (line 153) | async #unmountShare(share: NetworkShare): Promise { method #unmountAllShares (line 179) | async #unmountAllShares(): Promise { method addShare (line 185) | async addShare(newShare: Omit) { method getShare (line 214) | async getShare(mountPath: string) { method removeShare (line 222) | async removeShare(sharePath: string) { method discoverServers (line 240) | async discoverServers() { method discoverSharesOnServer (line 260) | async discoverSharesOnServer(host: string, username: string, password:... method isServerAnUmbrelDevice (line 282) | async isServerAnUmbrelDevice(address: string) { FILE: packages/umbreld/source/modules/files/recents.ts class Recents (line 11) | class Recents { method constructor (line 22) | constructor(umbreld: Umbreld, {paths}: {paths: string[]}) { method start (line 30) | async start() { method get (line 52) | async get() { method #directWrite (line 67) | async #directWrite() { method #handleFileChange (line 72) | async #handleFileChange(event: FileChangeEvent) { method stop (line 113) | async stop() { FILE: packages/umbreld/source/modules/files/samba.integration.test.ts function createSmbClient (line 370) | async function createSmbClient(share: string) { FILE: packages/umbreld/source/modules/files/samba.ts constant SMB_CONFIG (line 12) | const SMB_CONFIG = `# Generated by umbreld class Samba (line 74) | class Samba { method constructor (line 79) | constructor(umbreld: Umbreld) { method start (line 86) | async start() { method stop (line 107) | async stop() { method getSharePassword (line 118) | async getSharePassword() { method applySharePassword (line 133) | async applySharePassword() { method applyShares (line 141) | async applyShares() { method #computeSharename (line 175) | async #computeSharename(name: string, path: string) { method #get (line 188) | async #get() { method #handleFileChange (line 197) | async #handleFileChange(event: FileChangeEvent) { method listShares (line 206) | async listShares() { method addShare (line 232) | async addShare(virtualPath: string) { method removeShare (line 270) | async removeShare(virtualPath: string) { FILE: packages/umbreld/source/modules/files/search.ts class Search (line 7) | class Search { method constructor (line 13) | constructor(umbreld: Umbreld) { method start (line 20) | async start() {} method stop (line 21) | async stop() {} method search (line 26) | async search(query: string, maxResults = 250) { FILE: packages/umbreld/source/modules/files/thumbnails.integration.test.ts function copyFixtureFile (line 33) | async function copyFixtureFile( function pollUntil (line 55) | async function pollUntil( FILE: packages/umbreld/source/modules/files/thumbnails.ts constant SUPPORTED_THUMBNAIL_EXTENSIONS (line 16) | const SUPPORTED_THUMBNAIL_EXTENSIONS = [ class Thumbnails (line 32) | class Thumbnails { method constructor (line 61) | constructor(umbreld: Umbreld) { method start (line 68) | async start() { method #debouncedGenerateThumbnail (line 98) | #debouncedGenerateThumbnail(systemPath: string): void { method #handleFileChange (line 125) | async #handleFileChange(event: FileChangeEvent) { method #isValidFileForThumbnail (line 142) | async #isValidFileForThumbnail(systemPath: string): Promise { method getFilesystemUuid (line 155) | async getFilesystemUuid(systemPath: string, deviceId: number): Promise... method getThumbnailHash (line 178) | async getThumbnailHash(systemPath: string): Promise { method hashToThumbnailSystemPath (line 202) | hashToThumbnailSystemPath(hash: string): string { method #generateThumbnail (line 211) | async #generateThumbnail(systemPath: string, {background = true}: {bac... method getThumbnailOnDemand (line 243) | async getThumbnailOnDemand(virtualPath: string): Promise { method getExistingThumbnail (line 260) | async getExistingThumbnail(systemPath: string): Promise { method stop (line 352) | async stop() { FILE: packages/umbreld/source/modules/files/watcher.ts type FileChangeEvent (line 8) | type FileChangeEvent = watcher.Event class Watcher (line 10) | class Watcher { method constructor (line 17) | constructor(umbreld: Umbreld, {paths}: {paths: string[]}) { method start (line 25) | async start() { method watch (line 49) | async watch(virtualPath: string) { method stop (line 66) | async stop() { FILE: packages/umbreld/source/modules/hardware/hardware.ts class Hardware (line 7) | class Hardware { method constructor (line 14) | constructor(umbreld: Umbreld) { method start (line 24) | async start() { method stop (line 35) | async stop() { FILE: packages/umbreld/source/modules/hardware/internal-storage.ts function kelvinToCelsius (line 9) | function kelvinToCelsius(kelvin: number): number { type NvmeDevice (line 13) | type NvmeDevice = { type NvmeSmartData (line 30) | type NvmeSmartData = { function getNvmeSmartData (line 39) | async function getNvmeSmartData(devicePath: string): Promise { class InternalStorage (line 218) | class InternalStorage { method constructor (line 222) | constructor(umbreld: Umbreld) { method start (line 228) | async start() { method stop (line 232) | async stop() { method getDevices (line 237) | async getDevices(): Promise { FILE: packages/umbreld/source/modules/hardware/raid.ts function getDeviceSize (line 15) | async function getDeviceSize(device: string): Promise { function getRoundedDeviceSize (line 22) | function getRoundedDeviceSize(sizeInBytes: number): number { type RaidType (line 31) | type RaidType = 'storage' | 'failsafe' type ExpansionStatus (line 33) | type ExpansionStatus = { type FailsafeTransitionStatus (line 38) | type FailsafeTransitionStatus = { type RebuildStatus (line 44) | type RebuildStatus = { type ReplaceStatus (line 49) | type ReplaceStatus = { type State (line 55) | type State = 'ONLINE' | 'DEGRADED' | 'FAULTED' | 'OFFLINE' | 'UNAVAIL' |... type Vdev (line 56) | type Vdev = { type ScanStats (line 74) | type ScanStats = { type RaidzExpandStats (line 91) | type RaidzExpandStats = { type Pool (line 101) | type Pool = { type ZpoolStatusOutput (line 117) | type ZpoolStatusOutput = { type ConfigStore (line 126) | type ConfigStore = { class Raid (line 141) | class Raid { method constructor (line 159) | constructor(umbreld: Umbreld) { method hasConfigStore (line 189) | async hasConfigStore() { method generatePoolName (line 195) | generatePoolName(): string { method start (line 200) | async start() { method stop (line 225) | async stop() { method #startPoolMonitor (line 230) | #startPoolMonitor() { method getStatus (line 263) | async getStatus() { method getPoolStatus (line 281) | async getPoolStatus(poolName: string): Promise<{ method triggerInitialRaidSetupBootFlow (line 468) | async triggerInitialRaidSetupBootFlow( method handlePostBootRaidSetupProcess (line 487) | async handlePostBootRaidSetupProcess() { method checkInitialRaidSetupStatus (line 510) | async checkInitialRaidSetupStatus(): Promise { method checkRaidMountFailure (line 530) | async checkRaidMountFailure(): Promise { method checkRaidMountFailureDevices (line 535) | async checkRaidMountFailureDevices(): Promise { method setup (line 654) | async setup(deviceIds: string[], raidType: RaidType): Promise { method addDevice (line 693) | async addDevice(deviceId: string): Promise { method replaceDevice (line 735) | async replaceDevice(oldDeviceId: string, newDeviceId: string): Promise... method transitionToFailsafe (line 841) | async transitionToFailsafe(newDeviceId: string): Promise { method #completeFailsafeTransition (line 1005) | async #completeFailsafeTransition(): Promise { FILE: packages/umbreld/source/modules/hardware/umbrel-pro.ts constant EC_STATUS_COMMAND_PORT_ADDRESS (line 26) | const EC_STATUS_COMMAND_PORT_ADDRESS = 0x66 constant EC_DATA_PORT_ADDRESS (line 27) | const EC_DATA_PORT_ADDRESS = 0x62 constant EC_INPUT_BUFFER_FULL_VALUE (line 30) | const EC_INPUT_BUFFER_FULL_VALUE = 0x02 function readPort (line 33) | async function readPort(port: number): Promise { function writePort (line 45) | async function writePort(port: number, value: number): Promise { function waitForEcReady (line 56) | async function waitForEcReady(): Promise { function writeEcRegister (line 66) | async function writeEcRegister(register: number, value: number): Promise... function readEcRegister (line 77) | async function readEcRegister(register: number): Promise { class UmbrelPro (line 87) | class UmbrelPro { method constructor (line 94) | constructor(umbreld: Umbreld) { method isUmbrelPro (line 101) | async isUmbrelPro(): Promise { method start (line 106) | async start() { method stop (line 125) | async stop() { method #writeEcRegister (line 133) | async #writeEcRegister(register: number, value: number): Promise { method #readEcRegister (line 139) | async #readEcRegister(register: number): Promise { method #manageFanSpeed (line 171) | async #manageFanSpeed(): Promise { method setMinFanSpeed (line 221) | async setMinFanSpeed(percent: number): Promise { method setFanManagementEnabled (line 237) | setFanManagementEnabled(enabled: boolean) { method setLedOff (line 257) | async setLedOff(): Promise { method setLedStatic (line 266) | async setLedStatic(): Promise { method setLedColor (line 272) | async setLedColor({red, green, blue}: {red: number; green: number; blu... method setLedWhite (line 288) | async setLedWhite(): Promise { method setLedDefault (line 295) | async setLedDefault(): Promise { method setLedBlinking (line 301) | async setLedBlinking(): Promise { method setLedBreathe (line 308) | async setLedBreathe(duration: number = 14): Promise { method wasBootedViaResetButton (line 328) | async wasBootedViaResetButton(): Promise { method clearResetBootFlag (line 334) | async clearResetBootFlag(): Promise { method getSsdSlotFromPciSlotNumber (line 352) | getSsdSlotFromPciSlotNumber(pciSlotNumber: number | undefined): number... FILE: packages/umbreld/source/modules/is-umbrel-home.ts function isUmbrelHome (line 4) | async function isUmbrelHome() { FILE: packages/umbreld/source/modules/jwt.ts constant ONE_MINUTE (line 3) | const ONE_MINUTE = 60 constant ONE_HOUR (line 4) | const ONE_HOUR = 60 * ONE_MINUTE constant ONE_DAY (line 5) | const ONE_DAY = 24 * ONE_HOUR constant ONE_WEEK (line 6) | const ONE_WEEK = 7 * ONE_DAY constant JWT_ALGORITHM (line 8) | const JWT_ALGORITHM = 'HS256' type jwtPayload (line 10) | type jwtPayload = { function sign (line 23) | async function sign(secret: string) { function verify (line 31) | async function verify(token: string, secret: string) { function signProxyToken (line 47) | async function signProxyToken(secret: string) { function verifyProxyToken (line 55) | async function verifyProxyToken(token: string, secret: string) { FILE: packages/umbreld/source/modules/migration/migration.ts function updateMigrationStatus (line 27) | function updateMigrationStatus(properties: Partial) { function getMigrationStatus (line 33) | function getMigrationStatus() { function bytesToGB (line 38) | function bytesToGB(bytes: number) { function getDirectorySize (line 43) | async function getDirectorySize(directoryPath: string) { function findExternalUmbrelInstall (line 65) | async function findExternalUmbrelInstall() { function unmountExternalDrives (line 107) | async function unmountExternalDrives() { function runPreMigrationChecks (line 131) | async function runPreMigrationChecks( function migrateData (line 190) | async function migrateData(currentInstall: string, externalUmbrelInstall... FILE: packages/umbreld/source/modules/notifications/notifications.ts class Notifications (line 3) | class Notifications { method constructor (line 7) | constructor(umbreld: Umbreld) { method get (line 14) | async get() { method add (line 18) | async add(notification: string) { method clear (line 38) | async clear(notification: string) { FILE: packages/umbreld/source/modules/server/index.ts type ServerOptions (line 27) | type ServerOptions = {umbreld: Umbreld} type ApiOptions (line 29) | type ApiOptions = { class Server (line 56) | class Server { method constructor (line 64) | constructor({umbreld}: ServerOptions) { method getJwtSecret (line 70) | async getJwtSecret() { method signToken (line 75) | async signToken() { method signProxyToken (line 79) | async signProxyToken() { method verifyToken (line 83) | async verifyToken(token: string) { method verifyProxyToken (line 87) | async verifyProxyToken(token: string) { method mountWebSocketServer (line 93) | mountWebSocketServer(path: string, setupHandler: (wss: WebSocketServer... method start (line 104) | async start() { FILE: packages/umbreld/source/modules/server/terminal-socket.ts constant DEFAULT_SHELL_CONTAINERS (line 10) | const DEFAULT_SHELL_CONTAINERS: Record = { function createTerminalWebSocketHandler (line 22) | function createTerminalWebSocketHandler({ FILE: packages/umbreld/source/modules/server/trpc/context.ts type Simplify (line 40) | type Simplify = {[K in keyof T]: T[K]} type Merge (line 47) | type Merge = Simplify< type ContextWss (line 56) | type ContextWss = ReturnType type ContextExpress (line 57) | type ContextExpress = ReturnType type Context (line 58) | type Context = Merge FILE: packages/umbreld/source/modules/server/trpc/index.ts type AppRouter (line 36) | type AppRouter = typeof appRouter method onError (line 41) | onError({error, ctx}) { method onError (line 59) | onError({error, ctx, path}) { FILE: packages/umbreld/source/modules/server/trpc/is-authenticated.ts type MiddlewareOptions (line 5) | type MiddlewareOptions = { FILE: packages/umbreld/source/modules/server/trpc/trpc.ts method errorFormatter (line 11) | errorFormatter(options) { FILE: packages/umbreld/source/modules/server/trpc/websocket-logger.ts type MiddlewareOptions (line 5) | type MiddlewareOptions = { FILE: packages/umbreld/source/modules/startup-migrations/index.ts function readYaml (line 10) | async function readYaml(path: string) { function writeYaml (line 14) | async function writeYaml(path: string, data: any) { class Migration (line 18) | class Migration { method constructor (line 22) | constructor(umbreld: Umbreld) { method finalizeMenderToRugixStateMigration (line 32) | async finalizeMenderToRugixStateMigration() { method migrateLegacyLinuxData (line 61) | async migrateLegacyLinuxData() { method activateImportedDataDirectory (line 89) | async activateImportedDataDirectory() { method migrateLegacyData (line 105) | async migrateLegacyData() { method migrateBackThatMacUpPort (line 149) | async migrateBackThatMacUpPort() { method migrateDownloadsDirectory (line 171) | async migrateDownloadsDirectory() { method start (line 184) | async start() { FILE: packages/umbreld/source/modules/startup-migrations/startup-migrations.integration.test.ts function readYaml (line 7) | async function readYaml(path: string) { FILE: packages/umbreld/source/modules/system/factory-reset.ts constant BACKUP_PREFIX (line 8) | const BACKUP_PREFIX = 'umbrel-factory-reset' function performReset (line 14) | async function performReset() { function cleanupFactoryResetBackups (line 20) | async function cleanupFactoryResetBackups(umbreld: Umbreld) { FILE: packages/umbreld/source/modules/system/routes.ts type SystemStatus (line 28) | type SystemStatus = 'running' | 'updating' | 'shutting-down' | 'restarti... function setSystemStatus (line 32) | function setSystemStatus(status: SystemStatus) { FILE: packages/umbreld/source/modules/system/system.integration.test.ts method error (line 9) | error() {} FILE: packages/umbreld/source/modules/system/system.ts function getCpuTemperature (line 14) | async function getCpuTemperature(): Promise<{ type DiskUsage (line 40) | type DiskUsage = { function getDiskUsageByPath (line 45) | async function getDiskUsageByPath(path: string): Promise<{size: number; ... function getSystemDiskUsage (line 55) | async function getSystemDiskUsage( function getDiskUsage (line 72) | async function getDiskUsage( function getProcessesMemory (line 108) | async function getProcessesMemory() { type MemoryUsage (line 129) | type MemoryUsage = { function getSystemMemoryUsage (line 134) | async function getSystemMemoryUsage(): Promise<{ function getMemoryUsage (line 153) | async function getMemoryUsage(umbreld: Umbreld): Promise<{ function getProcessesCpu (line 197) | async function getProcessesCpu() { type CpuUsage (line 224) | type CpuUsage = { function getCpuUsage (line 229) | async function getCpuUsage(umbreld: Umbreld): Promise<{ function shutdown (line 281) | async function shutdown(): Promise { function reboot (line 287) | async function reboot(): Promise { function commitOsPartition (line 293) | async function commitOsPartition(umbreld: Umbreld): Promise { function detectDevice (line 305) | async function detectDevice() { function isRaspberryPi (line 356) | async function isRaspberryPi() { function isUmbrelOS (line 361) | async function isUmbrelOS() { function setCpuGovernor (line 365) | async function setCpuGovernor(governor: string) { function setupPiCpuGovernor (line 369) | async function setupPiCpuGovernor(umbreld: Umbreld): Promise { function hasWifi (line 380) | async function hasWifi() { function getWifiNetworks (line 387) | async function getWifiNetworks() { function deleteWifiConnections (line 419) | async function deleteWifiConnections({inactiveOnly = false}: {inactiveOn... function connectToWiFiNetwork (line 430) | async function connectToWiFiNetwork({ssid, password}: {ssid: string; pas... function restoreWiFi (line 468) | async function restoreWiFi(umbreld: Umbreld): Promise { function getIpAddresses (line 486) | function getIpAddresses(): string[] { function syncDns (line 530) | async function syncDns() { function waitForSystemTime (line 547) | async function waitForSystemTime(umbreld: Umbreld, timeout: number): Pro... function getHostname (line 571) | async function getHostname() { FILE: packages/umbreld/source/modules/system/update.ts type UpdateStatus (line 6) | type UpdateStatus = ProgressStatus function resetUpdateStatus (line 11) | function resetUpdateStatus() { function setUpdateStatus (line 20) | function setUpdateStatus(properties: Partial) { function getUpdateStatus (line 24) | function getUpdateStatus() { function getLatestRelease (line 28) | async function getLatestRelease(umbreld: Umbreld) { function performUpdate (line 71) | async function performUpdate(umbreld: Umbreld) { FILE: packages/umbreld/source/modules/test-utilities/create-test-umbreld.ts function createTestHelpers (line 30) | function createTestHelpers(port: number) { function createTestUmbreld (line 145) | async function createTestUmbreld({autoLogin = false, autoStart = true} =... function createTestVm (line 200) | async function createTestVm() { FILE: packages/umbreld/source/modules/test-utilities/run-git-server.ts function runGitServer (line 13) | async function runGitServer() { FILE: packages/umbreld/source/modules/user/routes.ts constant ONE_SECOND (line 8) | const ONE_SECOND = 1000 constant ONE_MINUTE (line 9) | const ONE_MINUTE = 60 * ONE_SECOND constant ONE_HOUR (line 10) | const ONE_HOUR = 60 * ONE_MINUTE constant ONE_DAY (line 11) | const ONE_DAY = 24 * ONE_HOUR constant ONE_WEEK (line 12) | const ONE_WEEK = 7 * ONE_DAY function getDefaultWallpaper (line 16) | async function getDefaultWallpaper(): Promise { FILE: packages/umbreld/source/modules/user/user.ts class User (line 9) | class User { method constructor (line 13) | constructor(umbreld: Umbreld) { method start (line 20) | async start() { method stop (line 24) | async stop() { method get (line 29) | async get() { method exists (line 34) | async exists() { method setName (line 40) | async setName(name: string) { method setWallpaper (line 48) | async setWallpaper(wallpaper: string) { method setPassword (line 53) | async setPassword(password: string) { method syncSystemPassword (line 70) | async syncSystemPassword() { method setHashedPassword (line 103) | async setHashedPassword(hashedPassword: string) { method register (line 111) | async register(name: string, password: string, language: string) { method validatePassword (line 126) | async validatePassword(password: string) { method is2faEnabled (line 137) | async is2faEnabled() { method validate2faToken (line 142) | async validate2faToken(token: string) { method enable2fa (line 148) | async enable2fa(totpUri: string) { method disable2fa (line 153) | async disable2fa() { method setLanguage (line 158) | async setLanguage(language: string) { method setTemperatureUnit (line 166) | async setTemperatureUnit(temperatureUnit: string) { FILE: packages/umbreld/source/modules/utilities/copy-with-progress.ts function copyWithProgress (line 4) | async function copyWithProgress( FILE: packages/umbreld/source/modules/utilities/docker-pull.ts constant DOWNLOADING_PERCENT (line 5) | const DOWNLOADING_PERCENT = 0.75 constant EXTRACTING_PERCENT (line 6) | const EXTRACTING_PERCENT = 0.25 function pull (line 8) | async function pull( function pullAll (line 55) | async function pullAll(images: string[], updateProgress: (progress: numb... FILE: packages/umbreld/source/modules/utilities/file-store.integration.test.ts type LooseSchema (line 18) | type LooseSchema = Record type LooseSchema (line 180) | type LooseSchema = Record type LooseSchema (line 199) | type LooseSchema = Record type LooseSchema (line 216) | type LooseSchema = Record type LooseSchema (line 232) | type LooseSchema = Record type LooseSchema (line 253) | type LooseSchema = Record type LooseSchema (line 275) | type LooseSchema = Record FILE: packages/umbreld/source/modules/utilities/file-store.ts type DotProp (line 8) | type DotProp = P extends `${infer K}.${infer R}` type StorePath (line 16) | type StorePath = DotProp extends never ? 'The... type Primitive (line 18) | type Primitive = number | string | boolean | null | undefined type Serializable (line 19) | type Serializable = { class FileStore (line 23) | class FileStore { method constructor (line 32) | constructor({ method #read (line 54) | async #read() { method #write (line 74) | async #write(store: T): Promise { method #set (line 94) | async #set

(property: StorePath, value: DotProp... method #delete (line 101) | async #delete

(property: StorePath): Promise(property?: StorePath, defaultValue?:... method set (line 114) | async set

(property: StorePath, value: DotProp<... method delete (line 123) | async delete

(property: StorePath): Promise { FILE: packages/umbreld/source/modules/utilities/random-token.ts function randomToken (line 3) | function randomToken(bitLength: number) { FILE: packages/umbreld/source/modules/utilities/regexp.ts function escapeSpecialRegExpLiterals (line 2) | function escapeSpecialRegExpLiterals(string: string) { FILE: packages/umbreld/source/modules/utilities/run-every.ts function runEvery (line 6) | function runEvery(interval: string, job: () => Promise, options?: ... FILE: packages/umbreld/source/modules/utilities/temporary-directory.ts function temporaryDirectory (line 8) | function temporaryDirectory({parentDirectory}: {parentDirectory?: string... FILE: packages/umbreld/source/modules/utilities/totp.ts function generateUri (line 8) | function generateUri(label: string, issuer: string) { function verify (line 16) | function verify(uri: string, token: string) { function generateToken (line 26) | function generateToken(uri: string) { FILE: packages/umbreld/source/modules/widgets/routes.ts constant MAX_ALLOWED_WIDGETS (line 8) | const MAX_ALLOWED_WIDGETS = 3 function splitWidgetId (line 14) | function splitWidgetId(widgetId: string) {