From 7eecbd220646097df78f4684f0e2e64f15797dce Mon Sep 17 00:00:00 2001 From: TZGyn Date: Sun, 10 May 2026 10:19:55 +0800 Subject: [PATCH] add desktop and read bnb balance from user seed --- apps/desktop/.gitignore | 26 + apps/desktop/.prettierignore | 9 + apps/desktop/.prettierrc | 22 + apps/desktop/README.md | 9 + apps/desktop/components.json | 20 + apps/desktop/electrobun.config.ts | 27 + apps/desktop/icon.iconset/Contents.json | 68 ++ apps/desktop/icon.iconset/generator_link.txt | 1 + apps/desktop/icon.iconset/icon_128x128.png | Bin 0 -> 7512 bytes apps/desktop/icon.iconset/icon_128x128@2x.png | Bin 0 -> 21407 bytes apps/desktop/icon.iconset/icon_16x16.png | Bin 0 -> 494 bytes apps/desktop/icon.iconset/icon_16x16@2x.png | Bin 0 -> 1024 bytes apps/desktop/icon.iconset/icon_256x256.png | Bin 0 -> 21407 bytes apps/desktop/icon.iconset/icon_256x256@2x.png | Bin 0 -> 57316 bytes apps/desktop/icon.iconset/icon_32x32.png | Bin 0 -> 1024 bytes apps/desktop/icon.iconset/icon_32x32@2x.png | Bin 0 -> 2627 bytes apps/desktop/icon.iconset/icon_512x512.png | Bin 0 -> 57316 bytes apps/desktop/icon.iconset/icon_512x512@2x.png | Bin 0 -> 163704 bytes apps/desktop/index.html | 13 + apps/desktop/package.json | 51 ++ apps/desktop/src/App.svelte | 13 + apps/desktop/src/app.css | 130 +++ apps/desktop/src/bun/index.ts | 111 +++ apps/desktop/src/lib/components/button.svelte | 80 ++ .../ui/accordion/accordion-content.svelte | 27 + .../ui/accordion/accordion-item.svelte | 17 + .../ui/accordion/accordion-trigger.svelte | 32 + .../components/ui/accordion/accordion.svelte | 19 + .../src/lib/components/ui/accordion/index.ts | 16 + .../alert-dialog/alert-dialog-action.svelte | 27 + .../alert-dialog/alert-dialog-cancel.svelte | 27 + .../alert-dialog/alert-dialog-content.svelte | 32 + .../alert-dialog-description.svelte | 17 + .../alert-dialog/alert-dialog-footer.svelte | 23 + .../alert-dialog/alert-dialog-header.svelte | 20 + .../ui/alert-dialog/alert-dialog-media.svelte | 20 + .../alert-dialog/alert-dialog-overlay.svelte | 17 + .../alert-dialog/alert-dialog-portal.svelte | 7 + .../ui/alert-dialog/alert-dialog-title.svelte | 17 + .../alert-dialog/alert-dialog-trigger.svelte | 7 + .../ui/alert-dialog/alert-dialog.svelte | 7 + .../lib/components/ui/alert-dialog/index.ts | 40 + .../components/ui/alert/alert-action.svelte | 20 + .../ui/alert/alert-description.svelte | 23 + .../components/ui/alert/alert-title.svelte | 23 + .../src/lib/components/ui/alert/alert.svelte | 43 + .../src/lib/components/ui/alert/index.ts | 17 + .../ui/aspect-ratio/aspect-ratio.svelte | 7 + .../lib/components/ui/aspect-ratio/index.ts | 3 + .../components/ui/avatar/avatar-badge.svelte | 26 + .../ui/avatar/avatar-fallback.svelte | 20 + .../ui/avatar/avatar-group-count.svelte | 23 + .../components/ui/avatar/avatar-group.svelte | 23 + .../components/ui/avatar/avatar-image.svelte | 17 + .../lib/components/ui/avatar/avatar.svelte | 26 + .../src/lib/components/ui/avatar/index.ts | 22 + .../src/lib/components/ui/badge/badge.svelte | 49 + .../src/lib/components/ui/badge/index.ts | 2 + .../ui/breadcrumb/breadcrumb-ellipsis.svelte | 23 + .../ui/breadcrumb/breadcrumb-item.svelte | 20 + .../ui/breadcrumb/breadcrumb-link.svelte | 31 + .../ui/breadcrumb/breadcrumb-list.svelte | 20 + .../ui/breadcrumb/breadcrumb-page.svelte | 23 + .../ui/breadcrumb/breadcrumb-separator.svelte | 27 + .../ui/breadcrumb/breadcrumb.svelte | 22 + .../src/lib/components/ui/breadcrumb/index.ts | 25 + .../button-group-separator.svelte | 23 + .../ui/button-group/button-group-text.svelte | 28 + .../ui/button-group/button-group.svelte | 46 + .../lib/components/ui/button-group/index.ts | 15 + .../lib/components/ui/button/button.svelte | 89 ++ .../src/lib/components/ui/button/index.ts | 17 + .../ui/calendar/calendar-caption.svelte | 76 ++ .../ui/calendar/calendar-cell.svelte | 19 + .../ui/calendar/calendar-day.svelte | 33 + .../ui/calendar/calendar-grid-body.svelte | 12 + .../ui/calendar/calendar-grid-head.svelte | 12 + .../ui/calendar/calendar-grid-row.svelte | 12 + .../ui/calendar/calendar-grid.svelte | 16 + .../ui/calendar/calendar-head-cell.svelte | 19 + .../ui/calendar/calendar-header.svelte | 19 + .../ui/calendar/calendar-heading.svelte | 16 + .../ui/calendar/calendar-month-select.svelte | 48 + .../ui/calendar/calendar-month.svelte | 15 + .../ui/calendar/calendar-months.svelte | 19 + .../ui/calendar/calendar-nav.svelte | 19 + .../ui/calendar/calendar-next-button.svelte | 36 + .../ui/calendar/calendar-prev-button.svelte | 36 + .../ui/calendar/calendar-year-select.svelte | 47 + .../components/ui/calendar/calendar.svelte | 115 +++ .../src/lib/components/ui/calendar/index.ts | 40 + .../lib/components/ui/card/card-action.svelte | 23 + .../components/ui/card/card-content.svelte | 20 + .../ui/card/card-description.svelte | 20 + .../lib/components/ui/card/card-footer.svelte | 20 + .../lib/components/ui/card/card-header.svelte | 23 + .../lib/components/ui/card/card-title.svelte | 20 + .../src/lib/components/ui/card/card.svelte | 22 + .../src/lib/components/ui/card/index.ts | 25 + .../ui/carousel/carousel-content.svelte | 43 + .../ui/carousel/carousel-item.svelte | 30 + .../ui/carousel/carousel-next.svelte | 39 + .../ui/carousel/carousel-previous.svelte | 39 + .../components/ui/carousel/carousel.svelte | 94 ++ .../src/lib/components/ui/carousel/context.ts | 58 ++ .../src/lib/components/ui/carousel/index.ts | 19 + .../ui/chart/chart-container.svelte | 80 ++ .../components/ui/chart/chart-style.svelte | 37 + .../components/ui/chart/chart-tooltip.svelte | 184 ++++ .../lib/components/ui/chart/chart-utils.ts | 68 ++ .../src/lib/components/ui/chart/index.ts | 6 + .../components/ui/checkbox/checkbox.svelte | 39 + .../src/lib/components/ui/checkbox/index.ts | 6 + .../ui/collapsible/collapsible-content.svelte | 7 + .../ui/collapsible/collapsible-trigger.svelte | 7 + .../ui/collapsible/collapsible.svelte | 11 + .../lib/components/ui/collapsible/index.ts | 13 + .../ui/command/command-dialog.svelte | 42 + .../ui/command/command-empty.svelte | 17 + .../ui/command/command-group.svelte | 32 + .../ui/command/command-input.svelte | 34 + .../components/ui/command/command-item.svelte | 25 + .../ui/command/command-link-item.svelte | 20 + .../components/ui/command/command-list.svelte | 17 + .../ui/command/command-loading.svelte | 7 + .../ui/command/command-separator.svelte | 17 + .../ui/command/command-shortcut.svelte | 20 + .../lib/components/ui/command/command.svelte | 25 + .../src/lib/components/ui/command/index.ts | 37 + .../context-menu-checkbox-item.svelte | 41 + .../context-menu/context-menu-content.svelte | 28 + .../context-menu-group-heading.svelte | 21 + .../ui/context-menu/context-menu-group.svelte | 7 + .../ui/context-menu/context-menu-item.svelte | 27 + .../ui/context-menu/context-menu-label.svelte | 24 + .../context-menu/context-menu-portal.svelte | 7 + .../context-menu-radio-group.svelte | 16 + .../context-menu-radio-item.svelte | 35 + .../context-menu-separator.svelte | 17 + .../context-menu/context-menu-shortcut.svelte | 20 + .../context-menu-sub-content.svelte | 17 + .../context-menu-sub-trigger.svelte | 29 + .../ui/context-menu/context-menu-sub.svelte | 7 + .../context-menu/context-menu-trigger.svelte | 17 + .../ui/context-menu/context-menu.svelte | 7 + .../lib/components/ui/context-menu/index.ts | 52 ++ .../ui/copy-button/copy-button.svelte | 95 ++ .../lib/components/ui/copy-button/index.ts | 3 + .../ui/data-table/data-table.svelte.ts | 142 +++ .../ui/data-table/flex-render.svelte | 40 + .../src/lib/components/ui/data-table/index.ts | 3 + .../ui/data-table/render-helpers.ts | 111 +++ .../components/ui/dialog/dialog-close.svelte | 11 + .../ui/dialog/dialog-content.svelte | 48 + .../ui/dialog/dialog-description.svelte | 17 + .../components/ui/dialog/dialog-footer.svelte | 32 + .../components/ui/dialog/dialog-header.svelte | 20 + .../ui/dialog/dialog-overlay.svelte | 17 + .../components/ui/dialog/dialog-portal.svelte | 7 + .../components/ui/dialog/dialog-title.svelte | 17 + .../ui/dialog/dialog-trigger.svelte | 11 + .../lib/components/ui/dialog/dialog.svelte | 7 + .../src/lib/components/ui/dialog/index.ts | 34 + .../components/ui/drawer/drawer-close.svelte | 7 + .../ui/drawer/drawer-content.svelte | 33 + .../ui/drawer/drawer-description.svelte | 17 + .../components/ui/drawer/drawer-footer.svelte | 20 + .../components/ui/drawer/drawer-header.svelte | 20 + .../components/ui/drawer/drawer-nested.svelte | 12 + .../ui/drawer/drawer-overlay.svelte | 17 + .../components/ui/drawer/drawer-portal.svelte | 7 + .../components/ui/drawer/drawer-title.svelte | 17 + .../ui/drawer/drawer-trigger.svelte | 7 + .../lib/components/ui/drawer/drawer.svelte | 12 + .../src/lib/components/ui/drawer/index.ts | 38 + .../dropdown-menu-checkbox-group.svelte | 16 + .../dropdown-menu-checkbox-item.svelte | 44 + .../dropdown-menu-content.svelte | 31 + .../dropdown-menu-group-heading.svelte | 22 + .../dropdown-menu/dropdown-menu-group.svelte | 7 + .../dropdown-menu/dropdown-menu-item.svelte | 27 + .../dropdown-menu/dropdown-menu-label.svelte | 24 + .../dropdown-menu/dropdown-menu-portal.svelte | 7 + .../dropdown-menu-radio-group.svelte | 16 + .../dropdown-menu-radio-item.svelte | 34 + .../dropdown-menu-separator.svelte | 17 + .../dropdown-menu-shortcut.svelte | 20 + .../dropdown-menu-sub-content.svelte | 17 + .../dropdown-menu-sub-trigger.svelte | 29 + .../ui/dropdown-menu/dropdown-menu-sub.svelte | 7 + .../dropdown-menu-trigger.svelte | 7 + .../ui/dropdown-menu/dropdown-menu.svelte | 7 + .../lib/components/ui/dropdown-menu/index.ts | 54 ++ .../components/ui/empty/empty-content.svelte | 23 + .../ui/empty/empty-description.svelte | 23 + .../components/ui/empty/empty-header.svelte | 20 + .../components/ui/empty/empty-media.svelte | 41 + .../components/ui/empty/empty-title.svelte | 20 + .../src/lib/components/ui/empty/empty.svelte | 23 + .../src/lib/components/ui/empty/index.ts | 22 + .../components/ui/field/field-content.svelte | 20 + .../ui/field/field-description.svelte | 25 + .../components/ui/field/field-error.svelte | 58 ++ .../components/ui/field/field-group.svelte | 23 + .../components/ui/field/field-label.svelte | 25 + .../components/ui/field/field-legend.svelte | 24 + .../ui/field/field-separator.svelte | 35 + .../lib/components/ui/field/field-set.svelte | 20 + .../components/ui/field/field-title.svelte | 20 + .../src/lib/components/ui/field/field.svelte | 47 + .../src/lib/components/ui/field/index.ts | 33 + .../lib/components/ui/form/form-button.svelte | 7 + .../ui/form/form-description.svelte | 17 + .../ui/form/form-element-field.svelte | 24 + .../ui/form/form-field-errors.svelte | 30 + .../lib/components/ui/form/form-field.svelte | 29 + .../components/ui/form/form-fieldset.svelte | 15 + .../lib/components/ui/form/form-label.svelte | 24 + .../lib/components/ui/form/form-legend.svelte | 16 + .../src/lib/components/ui/form/index.ts | 33 + .../ui/hover-card/hover-card-content.svelte | 31 + .../ui/hover-card/hover-card-portal.svelte | 7 + .../ui/hover-card/hover-card-trigger.svelte | 7 + .../ui/hover-card/hover-card.svelte | 7 + .../src/lib/components/ui/hover-card/index.ts | 15 + .../lib/components/ui/input-group/index.ts | 22 + .../ui/input-group/input-group-addon.svelte | 52 ++ .../ui/input-group/input-group-button.svelte | 49 + .../ui/input-group/input-group-input.svelte | 20 + .../ui/input-group/input-group-text.svelte | 19 + .../input-group/input-group-textarea.svelte | 20 + .../ui/input-group/input-group.svelte | 24 + .../src/lib/components/ui/input-otp/index.ts | 15 + .../ui/input-otp/input-otp-group.svelte | 20 + .../ui/input-otp/input-otp-separator.svelte | 27 + .../ui/input-otp/input-otp-slot.svelte | 31 + .../components/ui/input-otp/input-otp.svelte | 23 + .../src/lib/components/ui/input/index.ts | 7 + .../src/lib/components/ui/input/input.svelte | 48 + .../src/lib/components/ui/item/index.ts | 34 + .../components/ui/item/item-actions.svelte | 20 + .../components/ui/item/item-content.svelte | 23 + .../ui/item/item-description.svelte | 23 + .../lib/components/ui/item/item-footer.svelte | 20 + .../lib/components/ui/item/item-group.svelte | 21 + .../lib/components/ui/item/item-header.svelte | 20 + .../lib/components/ui/item/item-media.svelte | 42 + .../components/ui/item/item-separator.svelte | 19 + .../lib/components/ui/item/item-title.svelte | 20 + .../src/lib/components/ui/item/item.svelte | 61 ++ .../src/lib/components/ui/kbd/index.ts | 10 + .../lib/components/ui/kbd/kbd-group.svelte | 20 + .../src/lib/components/ui/kbd/kbd.svelte | 23 + .../src/lib/components/ui/label/index.ts | 7 + .../src/lib/components/ui/label/label.svelte | 20 + .../src/lib/components/ui/menubar/index.ts | 55 ++ .../ui/menubar/menubar-checkbox-item.svelte | 46 + .../ui/menubar/menubar-content.svelte | 35 + .../ui/menubar/menubar-group-heading.svelte | 22 + .../ui/menubar/menubar-group.svelte | 12 + .../components/ui/menubar/menubar-item.svelte | 24 + .../ui/menubar/menubar-label.svelte | 25 + .../components/ui/menubar/menubar-menu.svelte | 7 + .../ui/menubar/menubar-portal.svelte | 7 + .../ui/menubar/menubar-radio-group.svelte | 11 + .../ui/menubar/menubar-radio-item.svelte | 37 + .../ui/menubar/menubar-separator.svelte | 17 + .../ui/menubar/menubar-shortcut.svelte | 20 + .../ui/menubar/menubar-sub-content.svelte | 17 + .../ui/menubar/menubar-sub-trigger.svelte | 29 + .../components/ui/menubar/menubar-sub.svelte | 7 + .../ui/menubar/menubar-trigger.svelte | 17 + .../lib/components/ui/menubar/menubar.svelte | 17 + .../lib/components/ui/native-select/index.ts | 12 + .../native-select-opt-group.svelte | 14 + .../native-select/native-select-option.svelte | 20 + .../ui/native-select/native-select.svelte | 39 + .../components/ui/navigation-menu/index.ts | 28 + .../navigation-menu-content.svelte | 20 + .../navigation-menu-indicator.svelte | 22 + .../navigation-menu-item.svelte | 17 + .../navigation-menu-link.svelte | 17 + .../navigation-menu-list.svelte | 20 + .../navigation-menu-trigger.svelte | 29 + .../navigation-menu-viewport.svelte | 22 + .../ui/navigation-menu/navigation-menu.svelte | 31 + .../src/lib/components/ui/pagination/index.ts | 31 + .../ui/pagination/pagination-content.svelte | 20 + .../ui/pagination/pagination-ellipsis.svelte | 22 + .../ui/pagination/pagination-item.svelte | 14 + .../ui/pagination/pagination-link.svelte | 42 + .../pagination/pagination-next-button.svelte | 31 + .../ui/pagination/pagination-next.svelte | 20 + .../pagination/pagination-prev-button.svelte | 31 + .../ui/pagination/pagination-previous.svelte | 20 + .../ui/pagination/pagination.svelte | 28 + .../src/lib/components/ui/popover/index.ts | 28 + .../ui/popover/popover-close.svelte | 7 + .../ui/popover/popover-content.svelte | 31 + .../ui/popover/popover-description.svelte | 20 + .../ui/popover/popover-header.svelte | 20 + .../ui/popover/popover-portal.svelte | 7 + .../ui/popover/popover-title.svelte | 20 + .../ui/popover/popover-trigger.svelte | 17 + .../lib/components/ui/popover/popover.svelte | 7 + .../src/lib/components/ui/progress/index.ts | 7 + .../components/ui/progress/progress.svelte | 27 + .../lib/components/ui/radio-group/index.ts | 10 + .../ui/radio-group/radio-group-item.svelte | 29 + .../ui/radio-group/radio-group.svelte | 19 + .../lib/components/ui/range-calendar/index.ts | 40 + .../range-calendar-caption.svelte | 76 ++ .../range-calendar/range-calendar-cell.svelte | 19 + .../range-calendar/range-calendar-day.svelte | 36 + .../range-calendar-grid-body.svelte | 7 + .../range-calendar-grid-head.svelte | 7 + .../range-calendar-grid-row.svelte | 12 + .../range-calendar/range-calendar-grid.svelte | 16 + .../range-calendar-head-cell.svelte | 19 + .../range-calendar-header.svelte | 19 + .../range-calendar-heading.svelte | 16 + .../range-calendar-month-select.svelte | 44 + .../range-calendar-month.svelte | 15 + .../range-calendar-months.svelte | 19 + .../range-calendar/range-calendar-nav.svelte | 19 + .../range-calendar-next-button.svelte | 36 + .../range-calendar-prev-button.svelte | 36 + .../range-calendar-year-select.svelte | 43 + .../ui/range-calendar/range-calendar.svelte | 112 +++ .../src/lib/components/ui/resizable/index.ts | 13 + .../ui/resizable/resizable-handle.svelte | 27 + .../ui/resizable/resizable-pane-group.svelte | 24 + .../lib/components/ui/scroll-area/index.ts | 10 + .../scroll-area/scroll-area-scrollbar.svelte | 30 + .../ui/scroll-area/scroll-area.svelte | 43 + .../src/lib/components/ui/select/index.ts | 37 + .../ui/select/select-content.svelte | 45 + .../ui/select/select-group-heading.svelte | 21 + .../components/ui/select/select-group.svelte | 17 + .../components/ui/select/select-item.svelte | 38 + .../components/ui/select/select-label.svelte | 20 + .../components/ui/select/select-portal.svelte | 7 + .../select/select-scroll-down-button.svelte | 20 + .../ui/select/select-scroll-up-button.svelte | 20 + .../ui/select/select-separator.svelte | 18 + .../ui/select/select-trigger.svelte | 29 + .../lib/components/ui/select/select.svelte | 11 + .../src/lib/components/ui/separator/index.ts | 7 + .../components/ui/separator/separator.svelte | 23 + .../src/lib/components/ui/sheet/index.ts | 34 + .../components/ui/sheet/sheet-close.svelte | 7 + .../components/ui/sheet/sheet-content.svelte | 55 ++ .../ui/sheet/sheet-description.svelte | 17 + .../components/ui/sheet/sheet-footer.svelte | 20 + .../components/ui/sheet/sheet-header.svelte | 20 + .../components/ui/sheet/sheet-overlay.svelte | 17 + .../components/ui/sheet/sheet-portal.svelte | 7 + .../components/ui/sheet/sheet-title.svelte | 17 + .../components/ui/sheet/sheet-trigger.svelte | 7 + .../src/lib/components/ui/sheet/sheet.svelte | 7 + .../lib/components/ui/sidebar/constants.ts | 6 + .../components/ui/sidebar/context.svelte.ts | 81 ++ .../src/lib/components/ui/sidebar/index.ts | 75 ++ .../ui/sidebar/sidebar-content.svelte | 24 + .../ui/sidebar/sidebar-footer.svelte | 21 + .../ui/sidebar/sidebar-group-action.svelte | 33 + .../ui/sidebar/sidebar-group-content.svelte | 21 + .../ui/sidebar/sidebar-group-label.svelte | 33 + .../ui/sidebar/sidebar-group.svelte | 21 + .../ui/sidebar/sidebar-header.svelte | 21 + .../ui/sidebar/sidebar-input.svelte | 21 + .../ui/sidebar/sidebar-inset.svelte | 20 + .../ui/sidebar/sidebar-menu-action.svelte | 37 + .../ui/sidebar/sidebar-menu-badge.svelte | 24 + .../ui/sidebar/sidebar-menu-button.svelte | 102 +++ .../ui/sidebar/sidebar-menu-item.svelte | 21 + .../ui/sidebar/sidebar-menu-skeleton.svelte | 36 + .../ui/sidebar/sidebar-menu-sub-button.svelte | 39 + .../ui/sidebar/sidebar-menu-sub-item.svelte | 21 + .../ui/sidebar/sidebar-menu-sub.svelte | 21 + .../components/ui/sidebar/sidebar-menu.svelte | 21 + .../ui/sidebar/sidebar-provider.svelte | 53 ++ .../components/ui/sidebar/sidebar-rail.svelte | 36 + .../ui/sidebar/sidebar-separator.svelte | 19 + .../ui/sidebar/sidebar-trigger.svelte | 36 + .../lib/components/ui/sidebar/sidebar.svelte | 108 +++ .../src/lib/components/ui/skeleton/index.ts | 7 + .../components/ui/skeleton/skeleton.svelte | 17 + .../src/lib/components/ui/slider/index.ts | 7 + .../lib/components/ui/slider/slider.svelte | 52 ++ .../src/lib/components/ui/sonner/index.ts | 1 + .../lib/components/ui/sonner/sonner.svelte | 34 + .../src/lib/components/ui/spinner/index.ts | 1 + .../lib/components/ui/spinner/spinner.svelte | 26 + .../src/lib/components/ui/switch/index.ts | 7 + .../lib/components/ui/switch/switch.svelte | 31 + .../src/lib/components/ui/table/index.ts | 28 + .../lib/components/ui/table/table-body.svelte | 15 + .../components/ui/table/table-caption.svelte | 20 + .../lib/components/ui/table/table-cell.svelte | 15 + .../components/ui/table/table-footer.svelte | 20 + .../lib/components/ui/table/table-head.svelte | 15 + .../components/ui/table/table-header.svelte | 20 + .../lib/components/ui/table/table-row.svelte | 15 + .../src/lib/components/ui/table/table.svelte | 17 + .../src/lib/components/ui/tabs/index.ts | 18 + .../components/ui/tabs/tabs-content.svelte | 17 + .../lib/components/ui/tabs/tabs-list.svelte | 40 + .../components/ui/tabs/tabs-trigger.svelte | 23 + .../src/lib/components/ui/tabs/tabs.svelte | 19 + .../src/lib/components/ui/textarea/index.ts | 7 + .../components/ui/textarea/textarea.svelte | 23 + .../lib/components/ui/toggle-group/index.ts | 10 + .../ui/toggle-group/toggle-group-item.svelte | 35 + .../ui/toggle-group/toggle-group.svelte | 75 ++ .../src/lib/components/ui/toggle/index.ts | 13 + .../lib/components/ui/toggle/toggle.svelte | 51 ++ .../src/lib/components/ui/tooltip/index.ts | 19 + .../ui/tooltip/tooltip-content.svelte | 52 ++ .../ui/tooltip/tooltip-portal.svelte | 7 + .../ui/tooltip/tooltip-provider.svelte | 7 + .../ui/tooltip/tooltip-trigger.svelte | 7 + .../lib/components/ui/tooltip/tooltip.svelte | 7 + apps/desktop/src/lib/electrobun.ts | 36 + .../desktop/src/lib/hooks/is-mobile.svelte.ts | 9 + .../src/lib/hooks/use-clipboard.svelte.ts | 99 ++ apps/desktop/src/lib/states/wallet.svelte.ts | 110 +++ apps/desktop/src/lib/utils.ts | 13 + apps/desktop/src/main.ts | 6 + apps/desktop/src/routes/about.svelte | 5 + apps/desktop/src/routes/index.svelte | 86 ++ apps/desktop/src/vite-env.d.ts | 2 + apps/desktop/svelte.config.js | 6 + apps/desktop/tsconfig.json | 17 + apps/desktop/vite.config.ts | 14 + bun.lock | 861 +++++------------- package.json | 1 + turbo.json | 74 +- 438 files changed, 11515 insertions(+), 680 deletions(-) create mode 100644 apps/desktop/.gitignore create mode 100644 apps/desktop/.prettierignore create mode 100644 apps/desktop/.prettierrc create mode 100644 apps/desktop/README.md create mode 100644 apps/desktop/components.json create mode 100644 apps/desktop/electrobun.config.ts create mode 100644 apps/desktop/icon.iconset/Contents.json create mode 100644 apps/desktop/icon.iconset/generator_link.txt create mode 100644 apps/desktop/icon.iconset/icon_128x128.png create mode 100644 apps/desktop/icon.iconset/icon_128x128@2x.png create mode 100644 apps/desktop/icon.iconset/icon_16x16.png create mode 100644 apps/desktop/icon.iconset/icon_16x16@2x.png create mode 100644 apps/desktop/icon.iconset/icon_256x256.png create mode 100644 apps/desktop/icon.iconset/icon_256x256@2x.png create mode 100644 apps/desktop/icon.iconset/icon_32x32.png create mode 100644 apps/desktop/icon.iconset/icon_32x32@2x.png create mode 100644 apps/desktop/icon.iconset/icon_512x512.png create mode 100644 apps/desktop/icon.iconset/icon_512x512@2x.png create mode 100644 apps/desktop/index.html create mode 100644 apps/desktop/package.json create mode 100644 apps/desktop/src/App.svelte create mode 100644 apps/desktop/src/app.css create mode 100644 apps/desktop/src/bun/index.ts create mode 100644 apps/desktop/src/lib/components/button.svelte create mode 100644 apps/desktop/src/lib/components/ui/accordion/accordion-content.svelte create mode 100644 apps/desktop/src/lib/components/ui/accordion/accordion-item.svelte create mode 100644 apps/desktop/src/lib/components/ui/accordion/accordion-trigger.svelte create mode 100644 apps/desktop/src/lib/components/ui/accordion/accordion.svelte create mode 100644 apps/desktop/src/lib/components/ui/accordion/index.ts create mode 100644 apps/desktop/src/lib/components/ui/alert-dialog/alert-dialog-action.svelte create mode 100644 apps/desktop/src/lib/components/ui/alert-dialog/alert-dialog-cancel.svelte create mode 100644 apps/desktop/src/lib/components/ui/alert-dialog/alert-dialog-content.svelte create mode 100644 apps/desktop/src/lib/components/ui/alert-dialog/alert-dialog-description.svelte create mode 100644 apps/desktop/src/lib/components/ui/alert-dialog/alert-dialog-footer.svelte create mode 100644 apps/desktop/src/lib/components/ui/alert-dialog/alert-dialog-header.svelte create mode 100644 apps/desktop/src/lib/components/ui/alert-dialog/alert-dialog-media.svelte create mode 100644 apps/desktop/src/lib/components/ui/alert-dialog/alert-dialog-overlay.svelte create mode 100644 apps/desktop/src/lib/components/ui/alert-dialog/alert-dialog-portal.svelte create mode 100644 apps/desktop/src/lib/components/ui/alert-dialog/alert-dialog-title.svelte create mode 100644 apps/desktop/src/lib/components/ui/alert-dialog/alert-dialog-trigger.svelte create mode 100644 apps/desktop/src/lib/components/ui/alert-dialog/alert-dialog.svelte create mode 100644 apps/desktop/src/lib/components/ui/alert-dialog/index.ts create mode 100644 apps/desktop/src/lib/components/ui/alert/alert-action.svelte create mode 100644 apps/desktop/src/lib/components/ui/alert/alert-description.svelte create mode 100644 apps/desktop/src/lib/components/ui/alert/alert-title.svelte create mode 100644 apps/desktop/src/lib/components/ui/alert/alert.svelte create mode 100644 apps/desktop/src/lib/components/ui/alert/index.ts create mode 100644 apps/desktop/src/lib/components/ui/aspect-ratio/aspect-ratio.svelte create mode 100644 apps/desktop/src/lib/components/ui/aspect-ratio/index.ts create mode 100644 apps/desktop/src/lib/components/ui/avatar/avatar-badge.svelte create mode 100644 apps/desktop/src/lib/components/ui/avatar/avatar-fallback.svelte create mode 100644 apps/desktop/src/lib/components/ui/avatar/avatar-group-count.svelte create mode 100644 apps/desktop/src/lib/components/ui/avatar/avatar-group.svelte create mode 100644 apps/desktop/src/lib/components/ui/avatar/avatar-image.svelte create mode 100644 apps/desktop/src/lib/components/ui/avatar/avatar.svelte create mode 100644 apps/desktop/src/lib/components/ui/avatar/index.ts create mode 100644 apps/desktop/src/lib/components/ui/badge/badge.svelte create mode 100644 apps/desktop/src/lib/components/ui/badge/index.ts create mode 100644 apps/desktop/src/lib/components/ui/breadcrumb/breadcrumb-ellipsis.svelte create mode 100644 apps/desktop/src/lib/components/ui/breadcrumb/breadcrumb-item.svelte create mode 100644 apps/desktop/src/lib/components/ui/breadcrumb/breadcrumb-link.svelte create mode 100644 apps/desktop/src/lib/components/ui/breadcrumb/breadcrumb-list.svelte create mode 100644 apps/desktop/src/lib/components/ui/breadcrumb/breadcrumb-page.svelte create mode 100644 apps/desktop/src/lib/components/ui/breadcrumb/breadcrumb-separator.svelte create mode 100644 apps/desktop/src/lib/components/ui/breadcrumb/breadcrumb.svelte create mode 100644 apps/desktop/src/lib/components/ui/breadcrumb/index.ts create mode 100644 apps/desktop/src/lib/components/ui/button-group/button-group-separator.svelte create mode 100644 apps/desktop/src/lib/components/ui/button-group/button-group-text.svelte create mode 100644 apps/desktop/src/lib/components/ui/button-group/button-group.svelte create mode 100644 apps/desktop/src/lib/components/ui/button-group/index.ts create mode 100644 apps/desktop/src/lib/components/ui/button/button.svelte create mode 100644 apps/desktop/src/lib/components/ui/button/index.ts create mode 100644 apps/desktop/src/lib/components/ui/calendar/calendar-caption.svelte create mode 100644 apps/desktop/src/lib/components/ui/calendar/calendar-cell.svelte create mode 100644 apps/desktop/src/lib/components/ui/calendar/calendar-day.svelte create mode 100644 apps/desktop/src/lib/components/ui/calendar/calendar-grid-body.svelte create mode 100644 apps/desktop/src/lib/components/ui/calendar/calendar-grid-head.svelte create mode 100644 apps/desktop/src/lib/components/ui/calendar/calendar-grid-row.svelte create mode 100644 apps/desktop/src/lib/components/ui/calendar/calendar-grid.svelte create mode 100644 apps/desktop/src/lib/components/ui/calendar/calendar-head-cell.svelte create mode 100644 apps/desktop/src/lib/components/ui/calendar/calendar-header.svelte create mode 100644 apps/desktop/src/lib/components/ui/calendar/calendar-heading.svelte create mode 100644 apps/desktop/src/lib/components/ui/calendar/calendar-month-select.svelte create mode 100644 apps/desktop/src/lib/components/ui/calendar/calendar-month.svelte create mode 100644 apps/desktop/src/lib/components/ui/calendar/calendar-months.svelte create mode 100644 apps/desktop/src/lib/components/ui/calendar/calendar-nav.svelte create mode 100644 apps/desktop/src/lib/components/ui/calendar/calendar-next-button.svelte create mode 100644 apps/desktop/src/lib/components/ui/calendar/calendar-prev-button.svelte create mode 100644 apps/desktop/src/lib/components/ui/calendar/calendar-year-select.svelte create mode 100644 apps/desktop/src/lib/components/ui/calendar/calendar.svelte create mode 100644 apps/desktop/src/lib/components/ui/calendar/index.ts create mode 100644 apps/desktop/src/lib/components/ui/card/card-action.svelte create mode 100644 apps/desktop/src/lib/components/ui/card/card-content.svelte create mode 100644 apps/desktop/src/lib/components/ui/card/card-description.svelte create mode 100644 apps/desktop/src/lib/components/ui/card/card-footer.svelte create mode 100644 apps/desktop/src/lib/components/ui/card/card-header.svelte create mode 100644 apps/desktop/src/lib/components/ui/card/card-title.svelte create mode 100644 apps/desktop/src/lib/components/ui/card/card.svelte create mode 100644 apps/desktop/src/lib/components/ui/card/index.ts create mode 100644 apps/desktop/src/lib/components/ui/carousel/carousel-content.svelte create mode 100644 apps/desktop/src/lib/components/ui/carousel/carousel-item.svelte create mode 100644 apps/desktop/src/lib/components/ui/carousel/carousel-next.svelte create mode 100644 apps/desktop/src/lib/components/ui/carousel/carousel-previous.svelte create mode 100644 apps/desktop/src/lib/components/ui/carousel/carousel.svelte create mode 100644 apps/desktop/src/lib/components/ui/carousel/context.ts create mode 100644 apps/desktop/src/lib/components/ui/carousel/index.ts create mode 100644 apps/desktop/src/lib/components/ui/chart/chart-container.svelte create mode 100644 apps/desktop/src/lib/components/ui/chart/chart-style.svelte create mode 100644 apps/desktop/src/lib/components/ui/chart/chart-tooltip.svelte create mode 100644 apps/desktop/src/lib/components/ui/chart/chart-utils.ts create mode 100644 apps/desktop/src/lib/components/ui/chart/index.ts create mode 100644 apps/desktop/src/lib/components/ui/checkbox/checkbox.svelte create mode 100644 apps/desktop/src/lib/components/ui/checkbox/index.ts create mode 100644 apps/desktop/src/lib/components/ui/collapsible/collapsible-content.svelte create mode 100644 apps/desktop/src/lib/components/ui/collapsible/collapsible-trigger.svelte create mode 100644 apps/desktop/src/lib/components/ui/collapsible/collapsible.svelte create mode 100644 apps/desktop/src/lib/components/ui/collapsible/index.ts create mode 100644 apps/desktop/src/lib/components/ui/command/command-dialog.svelte create mode 100644 apps/desktop/src/lib/components/ui/command/command-empty.svelte create mode 100644 apps/desktop/src/lib/components/ui/command/command-group.svelte create mode 100644 apps/desktop/src/lib/components/ui/command/command-input.svelte create mode 100644 apps/desktop/src/lib/components/ui/command/command-item.svelte create mode 100644 apps/desktop/src/lib/components/ui/command/command-link-item.svelte create mode 100644 apps/desktop/src/lib/components/ui/command/command-list.svelte create mode 100644 apps/desktop/src/lib/components/ui/command/command-loading.svelte create mode 100644 apps/desktop/src/lib/components/ui/command/command-separator.svelte create mode 100644 apps/desktop/src/lib/components/ui/command/command-shortcut.svelte create mode 100644 apps/desktop/src/lib/components/ui/command/command.svelte create mode 100644 apps/desktop/src/lib/components/ui/command/index.ts create mode 100644 apps/desktop/src/lib/components/ui/context-menu/context-menu-checkbox-item.svelte create mode 100644 apps/desktop/src/lib/components/ui/context-menu/context-menu-content.svelte create mode 100644 apps/desktop/src/lib/components/ui/context-menu/context-menu-group-heading.svelte create mode 100644 apps/desktop/src/lib/components/ui/context-menu/context-menu-group.svelte create mode 100644 apps/desktop/src/lib/components/ui/context-menu/context-menu-item.svelte create mode 100644 apps/desktop/src/lib/components/ui/context-menu/context-menu-label.svelte create mode 100644 apps/desktop/src/lib/components/ui/context-menu/context-menu-portal.svelte create mode 100644 apps/desktop/src/lib/components/ui/context-menu/context-menu-radio-group.svelte create mode 100644 apps/desktop/src/lib/components/ui/context-menu/context-menu-radio-item.svelte create mode 100644 apps/desktop/src/lib/components/ui/context-menu/context-menu-separator.svelte create mode 100644 apps/desktop/src/lib/components/ui/context-menu/context-menu-shortcut.svelte create mode 100644 apps/desktop/src/lib/components/ui/context-menu/context-menu-sub-content.svelte create mode 100644 apps/desktop/src/lib/components/ui/context-menu/context-menu-sub-trigger.svelte create mode 100644 apps/desktop/src/lib/components/ui/context-menu/context-menu-sub.svelte create mode 100644 apps/desktop/src/lib/components/ui/context-menu/context-menu-trigger.svelte create mode 100644 apps/desktop/src/lib/components/ui/context-menu/context-menu.svelte create mode 100644 apps/desktop/src/lib/components/ui/context-menu/index.ts create mode 100644 apps/desktop/src/lib/components/ui/copy-button/copy-button.svelte create mode 100644 apps/desktop/src/lib/components/ui/copy-button/index.ts create mode 100644 apps/desktop/src/lib/components/ui/data-table/data-table.svelte.ts create mode 100644 apps/desktop/src/lib/components/ui/data-table/flex-render.svelte create mode 100644 apps/desktop/src/lib/components/ui/data-table/index.ts create mode 100644 apps/desktop/src/lib/components/ui/data-table/render-helpers.ts create mode 100644 apps/desktop/src/lib/components/ui/dialog/dialog-close.svelte create mode 100644 apps/desktop/src/lib/components/ui/dialog/dialog-content.svelte create mode 100644 apps/desktop/src/lib/components/ui/dialog/dialog-description.svelte create mode 100644 apps/desktop/src/lib/components/ui/dialog/dialog-footer.svelte create mode 100644 apps/desktop/src/lib/components/ui/dialog/dialog-header.svelte create mode 100644 apps/desktop/src/lib/components/ui/dialog/dialog-overlay.svelte create mode 100644 apps/desktop/src/lib/components/ui/dialog/dialog-portal.svelte create mode 100644 apps/desktop/src/lib/components/ui/dialog/dialog-title.svelte create mode 100644 apps/desktop/src/lib/components/ui/dialog/dialog-trigger.svelte create mode 100644 apps/desktop/src/lib/components/ui/dialog/dialog.svelte create mode 100644 apps/desktop/src/lib/components/ui/dialog/index.ts create mode 100644 apps/desktop/src/lib/components/ui/drawer/drawer-close.svelte create mode 100644 apps/desktop/src/lib/components/ui/drawer/drawer-content.svelte create mode 100644 apps/desktop/src/lib/components/ui/drawer/drawer-description.svelte create mode 100644 apps/desktop/src/lib/components/ui/drawer/drawer-footer.svelte create mode 100644 apps/desktop/src/lib/components/ui/drawer/drawer-header.svelte create mode 100644 apps/desktop/src/lib/components/ui/drawer/drawer-nested.svelte create mode 100644 apps/desktop/src/lib/components/ui/drawer/drawer-overlay.svelte create mode 100644 apps/desktop/src/lib/components/ui/drawer/drawer-portal.svelte create mode 100644 apps/desktop/src/lib/components/ui/drawer/drawer-title.svelte create mode 100644 apps/desktop/src/lib/components/ui/drawer/drawer-trigger.svelte create mode 100644 apps/desktop/src/lib/components/ui/drawer/drawer.svelte create mode 100644 apps/desktop/src/lib/components/ui/drawer/index.ts create mode 100644 apps/desktop/src/lib/components/ui/dropdown-menu/dropdown-menu-checkbox-group.svelte create mode 100644 apps/desktop/src/lib/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte create mode 100644 apps/desktop/src/lib/components/ui/dropdown-menu/dropdown-menu-content.svelte create mode 100644 apps/desktop/src/lib/components/ui/dropdown-menu/dropdown-menu-group-heading.svelte create mode 100644 apps/desktop/src/lib/components/ui/dropdown-menu/dropdown-menu-group.svelte create mode 100644 apps/desktop/src/lib/components/ui/dropdown-menu/dropdown-menu-item.svelte create mode 100644 apps/desktop/src/lib/components/ui/dropdown-menu/dropdown-menu-label.svelte create mode 100644 apps/desktop/src/lib/components/ui/dropdown-menu/dropdown-menu-portal.svelte create mode 100644 apps/desktop/src/lib/components/ui/dropdown-menu/dropdown-menu-radio-group.svelte create mode 100644 apps/desktop/src/lib/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte create mode 100644 apps/desktop/src/lib/components/ui/dropdown-menu/dropdown-menu-separator.svelte create mode 100644 apps/desktop/src/lib/components/ui/dropdown-menu/dropdown-menu-shortcut.svelte create mode 100644 apps/desktop/src/lib/components/ui/dropdown-menu/dropdown-menu-sub-content.svelte create mode 100644 apps/desktop/src/lib/components/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte create mode 100644 apps/desktop/src/lib/components/ui/dropdown-menu/dropdown-menu-sub.svelte create mode 100644 apps/desktop/src/lib/components/ui/dropdown-menu/dropdown-menu-trigger.svelte create mode 100644 apps/desktop/src/lib/components/ui/dropdown-menu/dropdown-menu.svelte create mode 100644 apps/desktop/src/lib/components/ui/dropdown-menu/index.ts create mode 100644 apps/desktop/src/lib/components/ui/empty/empty-content.svelte create mode 100644 apps/desktop/src/lib/components/ui/empty/empty-description.svelte create mode 100644 apps/desktop/src/lib/components/ui/empty/empty-header.svelte create mode 100644 apps/desktop/src/lib/components/ui/empty/empty-media.svelte create mode 100644 apps/desktop/src/lib/components/ui/empty/empty-title.svelte create mode 100644 apps/desktop/src/lib/components/ui/empty/empty.svelte create mode 100644 apps/desktop/src/lib/components/ui/empty/index.ts create mode 100644 apps/desktop/src/lib/components/ui/field/field-content.svelte create mode 100644 apps/desktop/src/lib/components/ui/field/field-description.svelte create mode 100644 apps/desktop/src/lib/components/ui/field/field-error.svelte create mode 100644 apps/desktop/src/lib/components/ui/field/field-group.svelte create mode 100644 apps/desktop/src/lib/components/ui/field/field-label.svelte create mode 100644 apps/desktop/src/lib/components/ui/field/field-legend.svelte create mode 100644 apps/desktop/src/lib/components/ui/field/field-separator.svelte create mode 100644 apps/desktop/src/lib/components/ui/field/field-set.svelte create mode 100644 apps/desktop/src/lib/components/ui/field/field-title.svelte create mode 100644 apps/desktop/src/lib/components/ui/field/field.svelte create mode 100644 apps/desktop/src/lib/components/ui/field/index.ts create mode 100644 apps/desktop/src/lib/components/ui/form/form-button.svelte create mode 100644 apps/desktop/src/lib/components/ui/form/form-description.svelte create mode 100644 apps/desktop/src/lib/components/ui/form/form-element-field.svelte create mode 100644 apps/desktop/src/lib/components/ui/form/form-field-errors.svelte create mode 100644 apps/desktop/src/lib/components/ui/form/form-field.svelte create mode 100644 apps/desktop/src/lib/components/ui/form/form-fieldset.svelte create mode 100644 apps/desktop/src/lib/components/ui/form/form-label.svelte create mode 100644 apps/desktop/src/lib/components/ui/form/form-legend.svelte create mode 100644 apps/desktop/src/lib/components/ui/form/index.ts create mode 100644 apps/desktop/src/lib/components/ui/hover-card/hover-card-content.svelte create mode 100644 apps/desktop/src/lib/components/ui/hover-card/hover-card-portal.svelte create mode 100644 apps/desktop/src/lib/components/ui/hover-card/hover-card-trigger.svelte create mode 100644 apps/desktop/src/lib/components/ui/hover-card/hover-card.svelte create mode 100644 apps/desktop/src/lib/components/ui/hover-card/index.ts create mode 100644 apps/desktop/src/lib/components/ui/input-group/index.ts create mode 100644 apps/desktop/src/lib/components/ui/input-group/input-group-addon.svelte create mode 100644 apps/desktop/src/lib/components/ui/input-group/input-group-button.svelte create mode 100644 apps/desktop/src/lib/components/ui/input-group/input-group-input.svelte create mode 100644 apps/desktop/src/lib/components/ui/input-group/input-group-text.svelte create mode 100644 apps/desktop/src/lib/components/ui/input-group/input-group-textarea.svelte create mode 100644 apps/desktop/src/lib/components/ui/input-group/input-group.svelte create mode 100644 apps/desktop/src/lib/components/ui/input-otp/index.ts create mode 100644 apps/desktop/src/lib/components/ui/input-otp/input-otp-group.svelte create mode 100644 apps/desktop/src/lib/components/ui/input-otp/input-otp-separator.svelte create mode 100644 apps/desktop/src/lib/components/ui/input-otp/input-otp-slot.svelte create mode 100644 apps/desktop/src/lib/components/ui/input-otp/input-otp.svelte create mode 100644 apps/desktop/src/lib/components/ui/input/index.ts create mode 100644 apps/desktop/src/lib/components/ui/input/input.svelte create mode 100644 apps/desktop/src/lib/components/ui/item/index.ts create mode 100644 apps/desktop/src/lib/components/ui/item/item-actions.svelte create mode 100644 apps/desktop/src/lib/components/ui/item/item-content.svelte create mode 100644 apps/desktop/src/lib/components/ui/item/item-description.svelte create mode 100644 apps/desktop/src/lib/components/ui/item/item-footer.svelte create mode 100644 apps/desktop/src/lib/components/ui/item/item-group.svelte create mode 100644 apps/desktop/src/lib/components/ui/item/item-header.svelte create mode 100644 apps/desktop/src/lib/components/ui/item/item-media.svelte create mode 100644 apps/desktop/src/lib/components/ui/item/item-separator.svelte create mode 100644 apps/desktop/src/lib/components/ui/item/item-title.svelte create mode 100644 apps/desktop/src/lib/components/ui/item/item.svelte create mode 100644 apps/desktop/src/lib/components/ui/kbd/index.ts create mode 100644 apps/desktop/src/lib/components/ui/kbd/kbd-group.svelte create mode 100644 apps/desktop/src/lib/components/ui/kbd/kbd.svelte create mode 100644 apps/desktop/src/lib/components/ui/label/index.ts create mode 100644 apps/desktop/src/lib/components/ui/label/label.svelte create mode 100644 apps/desktop/src/lib/components/ui/menubar/index.ts create mode 100644 apps/desktop/src/lib/components/ui/menubar/menubar-checkbox-item.svelte create mode 100644 apps/desktop/src/lib/components/ui/menubar/menubar-content.svelte create mode 100644 apps/desktop/src/lib/components/ui/menubar/menubar-group-heading.svelte create mode 100644 apps/desktop/src/lib/components/ui/menubar/menubar-group.svelte create mode 100644 apps/desktop/src/lib/components/ui/menubar/menubar-item.svelte create mode 100644 apps/desktop/src/lib/components/ui/menubar/menubar-label.svelte create mode 100644 apps/desktop/src/lib/components/ui/menubar/menubar-menu.svelte create mode 100644 apps/desktop/src/lib/components/ui/menubar/menubar-portal.svelte create mode 100644 apps/desktop/src/lib/components/ui/menubar/menubar-radio-group.svelte create mode 100644 apps/desktop/src/lib/components/ui/menubar/menubar-radio-item.svelte create mode 100644 apps/desktop/src/lib/components/ui/menubar/menubar-separator.svelte create mode 100644 apps/desktop/src/lib/components/ui/menubar/menubar-shortcut.svelte create mode 100644 apps/desktop/src/lib/components/ui/menubar/menubar-sub-content.svelte create mode 100644 apps/desktop/src/lib/components/ui/menubar/menubar-sub-trigger.svelte create mode 100644 apps/desktop/src/lib/components/ui/menubar/menubar-sub.svelte create mode 100644 apps/desktop/src/lib/components/ui/menubar/menubar-trigger.svelte create mode 100644 apps/desktop/src/lib/components/ui/menubar/menubar.svelte create mode 100644 apps/desktop/src/lib/components/ui/native-select/index.ts create mode 100644 apps/desktop/src/lib/components/ui/native-select/native-select-opt-group.svelte create mode 100644 apps/desktop/src/lib/components/ui/native-select/native-select-option.svelte create mode 100644 apps/desktop/src/lib/components/ui/native-select/native-select.svelte create mode 100644 apps/desktop/src/lib/components/ui/navigation-menu/index.ts create mode 100644 apps/desktop/src/lib/components/ui/navigation-menu/navigation-menu-content.svelte create mode 100644 apps/desktop/src/lib/components/ui/navigation-menu/navigation-menu-indicator.svelte create mode 100644 apps/desktop/src/lib/components/ui/navigation-menu/navigation-menu-item.svelte create mode 100644 apps/desktop/src/lib/components/ui/navigation-menu/navigation-menu-link.svelte create mode 100644 apps/desktop/src/lib/components/ui/navigation-menu/navigation-menu-list.svelte create mode 100644 apps/desktop/src/lib/components/ui/navigation-menu/navigation-menu-trigger.svelte create mode 100644 apps/desktop/src/lib/components/ui/navigation-menu/navigation-menu-viewport.svelte create mode 100644 apps/desktop/src/lib/components/ui/navigation-menu/navigation-menu.svelte create mode 100644 apps/desktop/src/lib/components/ui/pagination/index.ts create mode 100644 apps/desktop/src/lib/components/ui/pagination/pagination-content.svelte create mode 100644 apps/desktop/src/lib/components/ui/pagination/pagination-ellipsis.svelte create mode 100644 apps/desktop/src/lib/components/ui/pagination/pagination-item.svelte create mode 100644 apps/desktop/src/lib/components/ui/pagination/pagination-link.svelte create mode 100644 apps/desktop/src/lib/components/ui/pagination/pagination-next-button.svelte create mode 100644 apps/desktop/src/lib/components/ui/pagination/pagination-next.svelte create mode 100644 apps/desktop/src/lib/components/ui/pagination/pagination-prev-button.svelte create mode 100644 apps/desktop/src/lib/components/ui/pagination/pagination-previous.svelte create mode 100644 apps/desktop/src/lib/components/ui/pagination/pagination.svelte create mode 100644 apps/desktop/src/lib/components/ui/popover/index.ts create mode 100644 apps/desktop/src/lib/components/ui/popover/popover-close.svelte create mode 100644 apps/desktop/src/lib/components/ui/popover/popover-content.svelte create mode 100644 apps/desktop/src/lib/components/ui/popover/popover-description.svelte create mode 100644 apps/desktop/src/lib/components/ui/popover/popover-header.svelte create mode 100644 apps/desktop/src/lib/components/ui/popover/popover-portal.svelte create mode 100644 apps/desktop/src/lib/components/ui/popover/popover-title.svelte create mode 100644 apps/desktop/src/lib/components/ui/popover/popover-trigger.svelte create mode 100644 apps/desktop/src/lib/components/ui/popover/popover.svelte create mode 100644 apps/desktop/src/lib/components/ui/progress/index.ts create mode 100644 apps/desktop/src/lib/components/ui/progress/progress.svelte create mode 100644 apps/desktop/src/lib/components/ui/radio-group/index.ts create mode 100644 apps/desktop/src/lib/components/ui/radio-group/radio-group-item.svelte create mode 100644 apps/desktop/src/lib/components/ui/radio-group/radio-group.svelte create mode 100644 apps/desktop/src/lib/components/ui/range-calendar/index.ts create mode 100644 apps/desktop/src/lib/components/ui/range-calendar/range-calendar-caption.svelte create mode 100644 apps/desktop/src/lib/components/ui/range-calendar/range-calendar-cell.svelte create mode 100644 apps/desktop/src/lib/components/ui/range-calendar/range-calendar-day.svelte create mode 100644 apps/desktop/src/lib/components/ui/range-calendar/range-calendar-grid-body.svelte create mode 100644 apps/desktop/src/lib/components/ui/range-calendar/range-calendar-grid-head.svelte create mode 100644 apps/desktop/src/lib/components/ui/range-calendar/range-calendar-grid-row.svelte create mode 100644 apps/desktop/src/lib/components/ui/range-calendar/range-calendar-grid.svelte create mode 100644 apps/desktop/src/lib/components/ui/range-calendar/range-calendar-head-cell.svelte create mode 100644 apps/desktop/src/lib/components/ui/range-calendar/range-calendar-header.svelte create mode 100644 apps/desktop/src/lib/components/ui/range-calendar/range-calendar-heading.svelte create mode 100644 apps/desktop/src/lib/components/ui/range-calendar/range-calendar-month-select.svelte create mode 100644 apps/desktop/src/lib/components/ui/range-calendar/range-calendar-month.svelte create mode 100644 apps/desktop/src/lib/components/ui/range-calendar/range-calendar-months.svelte create mode 100644 apps/desktop/src/lib/components/ui/range-calendar/range-calendar-nav.svelte create mode 100644 apps/desktop/src/lib/components/ui/range-calendar/range-calendar-next-button.svelte create mode 100644 apps/desktop/src/lib/components/ui/range-calendar/range-calendar-prev-button.svelte create mode 100644 apps/desktop/src/lib/components/ui/range-calendar/range-calendar-year-select.svelte create mode 100644 apps/desktop/src/lib/components/ui/range-calendar/range-calendar.svelte create mode 100644 apps/desktop/src/lib/components/ui/resizable/index.ts create mode 100644 apps/desktop/src/lib/components/ui/resizable/resizable-handle.svelte create mode 100644 apps/desktop/src/lib/components/ui/resizable/resizable-pane-group.svelte create mode 100644 apps/desktop/src/lib/components/ui/scroll-area/index.ts create mode 100644 apps/desktop/src/lib/components/ui/scroll-area/scroll-area-scrollbar.svelte create mode 100644 apps/desktop/src/lib/components/ui/scroll-area/scroll-area.svelte create mode 100644 apps/desktop/src/lib/components/ui/select/index.ts create mode 100644 apps/desktop/src/lib/components/ui/select/select-content.svelte create mode 100644 apps/desktop/src/lib/components/ui/select/select-group-heading.svelte create mode 100644 apps/desktop/src/lib/components/ui/select/select-group.svelte create mode 100644 apps/desktop/src/lib/components/ui/select/select-item.svelte create mode 100644 apps/desktop/src/lib/components/ui/select/select-label.svelte create mode 100644 apps/desktop/src/lib/components/ui/select/select-portal.svelte create mode 100644 apps/desktop/src/lib/components/ui/select/select-scroll-down-button.svelte create mode 100644 apps/desktop/src/lib/components/ui/select/select-scroll-up-button.svelte create mode 100644 apps/desktop/src/lib/components/ui/select/select-separator.svelte create mode 100644 apps/desktop/src/lib/components/ui/select/select-trigger.svelte create mode 100644 apps/desktop/src/lib/components/ui/select/select.svelte create mode 100644 apps/desktop/src/lib/components/ui/separator/index.ts create mode 100644 apps/desktop/src/lib/components/ui/separator/separator.svelte create mode 100644 apps/desktop/src/lib/components/ui/sheet/index.ts create mode 100644 apps/desktop/src/lib/components/ui/sheet/sheet-close.svelte create mode 100644 apps/desktop/src/lib/components/ui/sheet/sheet-content.svelte create mode 100644 apps/desktop/src/lib/components/ui/sheet/sheet-description.svelte create mode 100644 apps/desktop/src/lib/components/ui/sheet/sheet-footer.svelte create mode 100644 apps/desktop/src/lib/components/ui/sheet/sheet-header.svelte create mode 100644 apps/desktop/src/lib/components/ui/sheet/sheet-overlay.svelte create mode 100644 apps/desktop/src/lib/components/ui/sheet/sheet-portal.svelte create mode 100644 apps/desktop/src/lib/components/ui/sheet/sheet-title.svelte create mode 100644 apps/desktop/src/lib/components/ui/sheet/sheet-trigger.svelte create mode 100644 apps/desktop/src/lib/components/ui/sheet/sheet.svelte create mode 100644 apps/desktop/src/lib/components/ui/sidebar/constants.ts create mode 100644 apps/desktop/src/lib/components/ui/sidebar/context.svelte.ts create mode 100644 apps/desktop/src/lib/components/ui/sidebar/index.ts create mode 100644 apps/desktop/src/lib/components/ui/sidebar/sidebar-content.svelte create mode 100644 apps/desktop/src/lib/components/ui/sidebar/sidebar-footer.svelte create mode 100644 apps/desktop/src/lib/components/ui/sidebar/sidebar-group-action.svelte create mode 100644 apps/desktop/src/lib/components/ui/sidebar/sidebar-group-content.svelte create mode 100644 apps/desktop/src/lib/components/ui/sidebar/sidebar-group-label.svelte create mode 100644 apps/desktop/src/lib/components/ui/sidebar/sidebar-group.svelte create mode 100644 apps/desktop/src/lib/components/ui/sidebar/sidebar-header.svelte create mode 100644 apps/desktop/src/lib/components/ui/sidebar/sidebar-input.svelte create mode 100644 apps/desktop/src/lib/components/ui/sidebar/sidebar-inset.svelte create mode 100644 apps/desktop/src/lib/components/ui/sidebar/sidebar-menu-action.svelte create mode 100644 apps/desktop/src/lib/components/ui/sidebar/sidebar-menu-badge.svelte create mode 100644 apps/desktop/src/lib/components/ui/sidebar/sidebar-menu-button.svelte create mode 100644 apps/desktop/src/lib/components/ui/sidebar/sidebar-menu-item.svelte create mode 100644 apps/desktop/src/lib/components/ui/sidebar/sidebar-menu-skeleton.svelte create mode 100644 apps/desktop/src/lib/components/ui/sidebar/sidebar-menu-sub-button.svelte create mode 100644 apps/desktop/src/lib/components/ui/sidebar/sidebar-menu-sub-item.svelte create mode 100644 apps/desktop/src/lib/components/ui/sidebar/sidebar-menu-sub.svelte create mode 100644 apps/desktop/src/lib/components/ui/sidebar/sidebar-menu.svelte create mode 100644 apps/desktop/src/lib/components/ui/sidebar/sidebar-provider.svelte create mode 100644 apps/desktop/src/lib/components/ui/sidebar/sidebar-rail.svelte create mode 100644 apps/desktop/src/lib/components/ui/sidebar/sidebar-separator.svelte create mode 100644 apps/desktop/src/lib/components/ui/sidebar/sidebar-trigger.svelte create mode 100644 apps/desktop/src/lib/components/ui/sidebar/sidebar.svelte create mode 100644 apps/desktop/src/lib/components/ui/skeleton/index.ts create mode 100644 apps/desktop/src/lib/components/ui/skeleton/skeleton.svelte create mode 100644 apps/desktop/src/lib/components/ui/slider/index.ts create mode 100644 apps/desktop/src/lib/components/ui/slider/slider.svelte create mode 100644 apps/desktop/src/lib/components/ui/sonner/index.ts create mode 100644 apps/desktop/src/lib/components/ui/sonner/sonner.svelte create mode 100644 apps/desktop/src/lib/components/ui/spinner/index.ts create mode 100644 apps/desktop/src/lib/components/ui/spinner/spinner.svelte create mode 100644 apps/desktop/src/lib/components/ui/switch/index.ts create mode 100644 apps/desktop/src/lib/components/ui/switch/switch.svelte create mode 100644 apps/desktop/src/lib/components/ui/table/index.ts create mode 100644 apps/desktop/src/lib/components/ui/table/table-body.svelte create mode 100644 apps/desktop/src/lib/components/ui/table/table-caption.svelte create mode 100644 apps/desktop/src/lib/components/ui/table/table-cell.svelte create mode 100644 apps/desktop/src/lib/components/ui/table/table-footer.svelte create mode 100644 apps/desktop/src/lib/components/ui/table/table-head.svelte create mode 100644 apps/desktop/src/lib/components/ui/table/table-header.svelte create mode 100644 apps/desktop/src/lib/components/ui/table/table-row.svelte create mode 100644 apps/desktop/src/lib/components/ui/table/table.svelte create mode 100644 apps/desktop/src/lib/components/ui/tabs/index.ts create mode 100644 apps/desktop/src/lib/components/ui/tabs/tabs-content.svelte create mode 100644 apps/desktop/src/lib/components/ui/tabs/tabs-list.svelte create mode 100644 apps/desktop/src/lib/components/ui/tabs/tabs-trigger.svelte create mode 100644 apps/desktop/src/lib/components/ui/tabs/tabs.svelte create mode 100644 apps/desktop/src/lib/components/ui/textarea/index.ts create mode 100644 apps/desktop/src/lib/components/ui/textarea/textarea.svelte create mode 100644 apps/desktop/src/lib/components/ui/toggle-group/index.ts create mode 100644 apps/desktop/src/lib/components/ui/toggle-group/toggle-group-item.svelte create mode 100644 apps/desktop/src/lib/components/ui/toggle-group/toggle-group.svelte create mode 100644 apps/desktop/src/lib/components/ui/toggle/index.ts create mode 100644 apps/desktop/src/lib/components/ui/toggle/toggle.svelte create mode 100644 apps/desktop/src/lib/components/ui/tooltip/index.ts create mode 100644 apps/desktop/src/lib/components/ui/tooltip/tooltip-content.svelte create mode 100644 apps/desktop/src/lib/components/ui/tooltip/tooltip-portal.svelte create mode 100644 apps/desktop/src/lib/components/ui/tooltip/tooltip-provider.svelte create mode 100644 apps/desktop/src/lib/components/ui/tooltip/tooltip-trigger.svelte create mode 100644 apps/desktop/src/lib/components/ui/tooltip/tooltip.svelte create mode 100644 apps/desktop/src/lib/electrobun.ts create mode 100644 apps/desktop/src/lib/hooks/is-mobile.svelte.ts create mode 100644 apps/desktop/src/lib/hooks/use-clipboard.svelte.ts create mode 100644 apps/desktop/src/lib/states/wallet.svelte.ts create mode 100644 apps/desktop/src/lib/utils.ts create mode 100644 apps/desktop/src/main.ts create mode 100644 apps/desktop/src/routes/about.svelte create mode 100644 apps/desktop/src/routes/index.svelte create mode 100644 apps/desktop/src/vite-env.d.ts create mode 100644 apps/desktop/svelte.config.js create mode 100644 apps/desktop/tsconfig.json create mode 100644 apps/desktop/vite.config.ts diff --git a/apps/desktop/.gitignore b/apps/desktop/.gitignore new file mode 100644 index 0000000..3aee7df --- /dev/null +++ b/apps/desktop/.gitignore @@ -0,0 +1,26 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? + +.router diff --git a/apps/desktop/.prettierignore b/apps/desktop/.prettierignore new file mode 100644 index 0000000..7d74fe2 --- /dev/null +++ b/apps/desktop/.prettierignore @@ -0,0 +1,9 @@ +# Package Managers +package-lock.json +pnpm-lock.yaml +yarn.lock +bun.lock +bun.lockb + +# Miscellaneous +/static/ diff --git a/apps/desktop/.prettierrc b/apps/desktop/.prettierrc new file mode 100644 index 0000000..f305c48 --- /dev/null +++ b/apps/desktop/.prettierrc @@ -0,0 +1,22 @@ +{ + "useTabs": true, + "singleQuote": true, + "semi": false, + "trailingComma": "all", + "printWidth": 70, + "bracketSameLine": true, + "htmlWhitespaceSensitivity": "ignore", + "plugins": [ + "prettier-plugin-tailwindcss", + "prettier-plugin-svelte" + ], + "tailwindStylesheet": "./src/app.css", + "overrides": [ + { + "files": "*.svelte", + "options": { + "parser": "svelte" + } + } + ] +} diff --git a/apps/desktop/README.md b/apps/desktop/README.md new file mode 100644 index 0000000..e004545 --- /dev/null +++ b/apps/desktop/README.md @@ -0,0 +1,9 @@ +# sv-router | File-Based Template + +Check the [documentation](https://sv-router.vercel.app/guide/file-based/route-definition). + +Start the dev server: + +``` +npm run dev +``` diff --git a/apps/desktop/components.json b/apps/desktop/components.json new file mode 100644 index 0000000..afd7794 --- /dev/null +++ b/apps/desktop/components.json @@ -0,0 +1,20 @@ +{ + "$schema": "https://shadcn-svelte.com/schema.json", + "tailwind": { + "css": "src/app.css", + "baseColor": "neutral" + }, + "aliases": { + "components": "$lib/components", + "utils": "$lib/utils", + "ui": "$lib/components/ui", + "hooks": "$lib/hooks", + "lib": "$lib" + }, + "typescript": true, + "registry": "https://shadcn-svelte.com/registry", + "style": "lyra", + "iconLibrary": "remixicon", + "menuColor": "default", + "menuAccent": "bold" +} diff --git a/apps/desktop/electrobun.config.ts b/apps/desktop/electrobun.config.ts new file mode 100644 index 0000000..6076d67 --- /dev/null +++ b/apps/desktop/electrobun.config.ts @@ -0,0 +1,27 @@ +import type { ElectrobunConfig } from 'electrobun' + +export default { + app: { + name: 'koins', + identifier: 'koins.tzgyn.com', + version: '0.0.1', + }, + build: { + // Vite builds to dist/, we copy from there + copy: { + 'dist/index.html': 'views/mainview/index.html', + 'dist/assets': 'views/mainview/assets', + }, + // Ignore Vite output in watch mode — HMR handles view rebuilds separately + watchIgnore: ['dist/**'], + mac: { + bundleCEF: false, + }, + linux: { + bundleCEF: false, + }, + win: { + bundleCEF: false, + }, + }, +} satisfies ElectrobunConfig diff --git a/apps/desktop/icon.iconset/Contents.json b/apps/desktop/icon.iconset/Contents.json new file mode 100644 index 0000000..927f576 --- /dev/null +++ b/apps/desktop/icon.iconset/Contents.json @@ -0,0 +1,68 @@ +{ + "images": [ + { + "idiom": "mac", + "filename": "icon_16x16.png", + "scale": "1x", + "size": "16x16" + }, + { + "idiom": "mac", + "filename": "icon_16x16@2x.png", + "scale": "2x", + "size": "16x16" + }, + { + "idiom": "mac", + "filename": "icon_32x32.png", + "scale": "1x", + "size": "32x32" + }, + { + "idiom": "mac", + "filename": "icon_32x32@2x.png", + "scale": "2x", + "size": "32x32" + }, + { + "idiom": "mac", + "filename": "icon_128x128.png", + "scale": "1x", + "size": "128x128" + }, + { + "idiom": "mac", + "filename": "icon_128x128@2x.png", + "scale": "2x", + "size": "128x128" + }, + { + "idiom": "mac", + "filename": "icon_256x256.png", + "scale": "1x", + "size": "256x256" + }, + { + "idiom": "mac", + "filename": "icon_256x256@2x.png", + "scale": "2x", + "size": "256x256" + }, + { + "idiom": "mac", + "filename": "icon_512x512.png", + "scale": "1x", + "size": "512x512" + }, + { + "idiom": "mac", + "filename": "icon_512x512@2x.png", + "scale": "2x", + "size": "512x512" + } + ], + "info": { + "author": "icon-generator", + "version": 1 + } +} \ No newline at end of file diff --git a/apps/desktop/icon.iconset/generator_link.txt b/apps/desktop/icon.iconset/generator_link.txt new file mode 100644 index 0000000..5315add --- /dev/null +++ b/apps/desktop/icon.iconset/generator_link.txt @@ -0,0 +1 @@ +https://icon.msgbyte.com/ \ No newline at end of file diff --git a/apps/desktop/icon.iconset/icon_128x128.png b/apps/desktop/icon.iconset/icon_128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..d7d00ebe2055ff19e037406b0b00550a55494cdf GIT binary patch literal 7512 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 Ef=5&}ZvX%Q literal 0 HcmV?d00001 diff --git a/apps/desktop/icon.iconset/icon_16x16.png b/apps/desktop/icon.iconset/icon_16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..7a6b1ecb7bb85b6f2a6611ea31ea38518b0bcefd GIT binary patch literal 494 zcmV1S%_nlHxA!^efq+@D`QeQPL7dqh^-yJ?4PO$ADz?yf2;s5{tU^XKoBg5}WHefc$WuLx$XP7j9lS*w~ z#9f>Q;EEi)25`-HBPvqACGNuR0*Vdb=jDR?6_-;$Ve|3xH{4->9AM~%zycN{5Rs!1 zJ=9@_Ajb+uG%_%RGM~HFe#B5y*#e$Kk)jS+Gf4i@jr+&-HOqnVz4|XKB{D8wzSUSm zPorN-Tu6t5om~K=P*G74Y~KC*_rdg!pFcl5eew3{wF}n@V`BWy0EPY|XC@%qfjO-_ zP>SjAFFtI6_>Y8-rG%zwVMnX0@ML9G#M*V_?jsO4v07*qoM6N<$f+e8b&Hw-a literal 0 HcmV?d00001 diff --git a/apps/desktop/icon.iconset/icon_16x16@2x.png b/apps/desktop/icon.iconset/icon_16x16@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..2d9a796d3befacfbb2987b4a90cb9d4db9f0de35 GIT binary patch literal 1024 zcmV+b1poVqP)nZe)`+H8mM7XNfSdnQ5K ze*gJv$H7y6A)a=-ffD~fk}wA_M(0lAt;+SEr==70m#7#GXY;T z5Tl+X2cQQhvLmo%2UuD`mqQLUq8)(EH$>$@EQ*jrjc5nJ@;kd*m{NpaYgHn$M8-cR9HsjaT0+=17K^xJ1I`z<@^qxRyey z11Jp+va%ty9D!bP5=;ZgbpfT0z*cON>;Q5dfve8I>440#PSuvm%(Lj#F)aQ`NfY=g zEKqe^(>~pJdRO^vl-e*ct3|q@I&HU{l&CtcL`RGx2sK(BJ$rq#p>>w){Ao2$ksZJo z7?&;7R$IPYLq*mVU#iFF2tt;F%)N2v@$RbT&dBwProIDm5lu1%24j{j`=-V^nCs60 zwutd|Scs|jv3Ua6GX8(?#KmN9=j7fNnBiybIs;u{f64gNkB(16B`o5 z_#9~Y-}6`R&I|F4Dt!6!(sxksgA+KCB|x?@i=ZF_*VI`ZL8d0!Ih>qqlAIjuf-KC; z9M~MAsHg}QzJLEdR=587`}fE9A3xuJ|NiUw=`&ZSWT#cEd;gvR*h7N&9^C;@zA=lG z6a%ZKi6JjHA1^OEGdusE|NjvUMG}fd7DmSJKmY#x`1RB0&)3hK|NQJ3!*68Eu{i)H z2JWH(Lxc(Bm|wrX;EfJkZenBO`3toa6x<*m!!TS6q24jnAtZPkQz?d}$Vvce>N7t& uHHlmR000nVWkN?eF*q literal 0 HcmV?d00001 diff --git a/apps/desktop/icon.iconset/icon_256x256.png b/apps/desktop/icon.iconset/icon_256x256.png new file mode 100644 index 0000000000000000000000000000000000000000..15229bd59ade1eba4dfe80ca5dd051c3066f2b8a GIT binary patch literal 21407 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 Ef=5&}ZvX%Q literal 0 HcmV?d00001 diff --git a/apps/desktop/icon.iconset/icon_256x256@2x.png b/apps/desktop/icon.iconset/icon_256x256@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..d3e86c3defcc8f9f6c7131ff58eeabb422872fcb GIT binary patch literal 57316 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 aIYLA=Ml?i9IRtnZe)`+H8mM7XNfSdnQ5K ze*gJv$H7y6A)a=-ffD~fk}wA_M(0lAt;+SEr==70m#7#GXY;T z5Tl+X2cQQhvLmo%2UuD`mqQLUq8)(EH$>$@EQ*jrjc5nJ@;kd*m{NpaYgHn$M8-cR9HsjaT0+=17K^xJ1I`z<@^qxRyey z11Jp+va%ty9D!bP5=;ZgbpfT0z*cON>;Q5dfve8I>440#PSuvm%(Lj#F)aQ`NfY=g zEKqe^(>~pJdRO^vl-e*ct3|q@I&HU{l&CtcL`RGx2sK(BJ$rq#p>>w){Ao2$ksZJo z7?&;7R$IPYLq*mVU#iFF2tt;F%)N2v@$RbT&dBwProIDm5lu1%24j{j`=-V^nCs60 zwutd|Scs|jv3Ua6GX8(?#KmN9=j7fNnBiybIs;u{f64gNkB(16B`o5 z_#9~Y-}6`R&I|F4Dt!6!(sxksgA+KCB|x?@i=ZF_*VI`ZL8d0!Ih>qqlAIjuf-KC; z9M~MAsHg}QzJLEdR=587`}fE9A3xuJ|NiUw=`&ZSWT#cEd;gvR*h7N&9^C;@zA=lG z6a%ZKi6JjHA1^OEGdusE|NjvUMG}fd7DmSJKmY#x`1RB0&)3hK|NQJ3!*68Eu{i)H z2JWH(Lxc(Bm|wrX;EfJkZenBO`3toa6x<*m!!TS6q24jnAtZPkQz?d}$Vvce>N7t& uHHlmR000nVWkN?eF*q literal 0 HcmV?d00001 diff --git a/apps/desktop/icon.iconset/icon_32x32@2x.png b/apps/desktop/icon.iconset/icon_32x32@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..af8ea2728802da320aeb432c05505e7216b5fedb GIT binary patch literal 2627 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 literal 0 HcmV?d00001 diff --git a/apps/desktop/icon.iconset/icon_512x512.png b/apps/desktop/icon.iconset/icon_512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..d3e86c3defcc8f9f6c7131ff58eeabb422872fcb GIT binary patch literal 57316 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 aIYLA=Ml?i9IRtEzB%!k{( z_xrBzdH#QYKGwY!EY{3@-{*CmaU92aUJ+UvO87W5H~;_uU-_}T4gdhY`x6Yn!nped zqks4c0AK}Ws(Eqrw2mo9lA^`CJzQO?@SAcxmJ*)8lyde_+ z6EFe5g8#=Q4*-e+Sf0l7$^YNCyL$i}4dCz}kH32%7C3+oK>VneisirDu?+|p`foN7 zLjeSEtmNl-#Q(*nB|sa^e_8|x#=3iPC|HgE4c32IC0D>x{QtBF4h7%6I1`ASS`Pdl zYxLXNGK~LRQz#P%s|`p5OnA#2@*ivT+gd}k|FWn=K=2YE9IpJ0=)Y|g0pRO@c|Otq z-=;qc{QqQ|+6KXg2a#F9d18OLdvF>15XnSd=hB@=AXESrW4DpC(ZNtHqP82U`yYWB zf4gLG_MIEbX{n)!13^e;0P_;#fGs+Bj0JvCX8imak#B>j!TaZ70B{f+U<2?0gjFaHSdnKddqnF7J~WT4x~FCKnzeCP04*(36RT%SSMrENdhbgY#)bu{!h5SlLcr1IjasGyGY^55tnQLfH~HZ zWC$DRe?l%t0iY2)l*)TL5esH=MqtsZqe}vt7(;?0hh+ZOjqW}LG@8=loWp`1zMg$+ zDWQY)^j0+|)aKt8f-(hQwJ{S(xkto3W&!~30Vx>peL;o?%+jG$|10haWdQ_0y|ND5 zGGaIrP7SpT?EO9XS@AvfDbT+m75tqU5C&cS=_wyg2I9>92-(GqI-~P@@>UGDSxheW z&m#jk0B&0lIhaXX`c<0f%#%<+OF&Twx#I0(fP*3R)KVdyk|FTVErXx31Bi=$?!xo< z>7KCxz=s9WfT7|1L2#M#JS&(oD~ST{-(=&%1Q_07z^hy0Ce;BmQOVjjuryT0HR-eZ z?h-d|^7;I|CRj3{IIi%!e=^tUvR3vHQN)QIn|ZmVLzmViDe1Uq}e<@Kk@ZQx}kIuZ#Xah7*80^aR6p>dFG--T~y5u{4aSyu{Kc zo{2`Y;U&?$0spgaL?Pe~WoX!_p{y%sP9M=jL$u&~MB6*OV>gW7>o1gMlNn)JinPD; z8c_?FX)MIwSuQY0wi(slEItH@1s|eQM|CcOWj*^t?OWFdT=Jt0csRz;{#`91I~D=m z9@;Or1nbqYExt@}-YY{IBok5O4j0+YTo8|3GYV;#WQ+EX$7VZ#a(L9_%27E}Hchdz z;Q)DAEOmV>FQNAn28E|Wy4PD9YvSF5dpUo{=J$JL_xZ#20>^S#jO7Zl(tYlqjo;w3 zlgh{eELm(nvV0XM!P$9WctZug4M`>_@@BfP&u)2+mJ~tI3$o8T@{5GBMkRxGWgdw1K5@*H)I}R&pq9aYV5^5M_x57X)O|h z5%&}kk4OZG?}OSK-hk$L6K4qX%Xkg!)Pjv0Z2t-VjtHnRpgYGtCIk?pY)BjIyf_NN zp9l&arG4Po6T*A?3{w4tkc(9z$}E%Y7d~pSzy{Bz9(lvaY&Egt2xVfu@BQOD&}{7c%a63W#Fku` zcMr~+)IG}1dQ4zPegN$IOxB<&f5AOXPFU8T^WklM-7v*JUx(9x1Kfx% zSE&v^F`e6(EU>e1IsaXoste-#=-G`t33-jpP@up zZ-jEJ8Sl+}V7WwNK4)G>J7Skf`}-C|(_qlD;JX#Fce_MdPwp4lne6i8y^#vvdzkqo z1uoB*|I+2D)H^V!nPSY|BG;@uWYNNs5oEEDmaDwd)aQU+{Rb3uWWcFAlqbk;`ec|U zIEe%af}y3KptZaXLOJmj;6pYeqs$yz?jZ+g^f}uU8SCXZ*-iU{!&&T2nVh<>!!~~h zez+E>aV8dGNKa)ij@2cKeoqWMM$~UV^}b>WZNBAw%ZgDb_G2OyoLW5hb|{n9NvUEZ zixY;*A*Spm>cI;0(yQg>H&TCR8>lUjtveIA!#Del6;wM6PSat8pJq8>oIOK6Dk71` z0*uR5?q+E7V8R01FC;n}6n z6&^#NWek1jq`7O1uiI#O6ShId&ZGn7oO|#SJrc^aZn7n;Fm;l&WFWVTnNwFgE&qsc zEMBqkUnE42m8{mzwyEn*a(|6XtBW~X(7j+U!Z!h&tIl`ZA%H{LM(H0KjPbc1`m-|L zDY9&haJV#o=^}3^3{E&w%hrJYcczkg+-5-l?xsgm5e0_~P!nNkGlUDjI*cZ2F(YCA z+Tndj%+C)SERWywEid@EY4CWLP=}K?FhA;g-I{IE=r!UA{MjGWc3%Tp8tYh||E3bE z-2>;<0A^(XRZ8&LoFaT_FB>KK0`FdmxGl*x6pE2U4I3=h*}G!84ixJup5zLtvC!xu`svd7;3mN%gr0ZiHNZBKG= z3%`JXuz?~Sr(QB7kmOcncejZ9n0ZCd$D#e7IF-i&R%c+Uh+=wO#lyAmZJ>tYpd~O? zWo?tr3ir>l*SoF=u`HD;wkM}2S8=R}wf*Cpy2jF~p^M70K^5g;_U^NhZ`QQcZhT^? z9vO;7llD~vmA!k2l)c9^R28U@>|cMjMMf#RcT?(fR!;B4$gaIxqL_(kbpKjOs@#VU z_I=C-$}bA~N?&QsXfH)swSBq|6e9>OiNU_?re4x?+aIh!G`wal=3|pL&F90NIJ$P= zNwih^czBVtnZ$XSNOH}OE=9SGrW7N%`tkG;`?ut1@h9opi(iNB-tur)Q&q`x8>>gD z773&Yz4<^$2Q2Qyppz6oo`c`NA zith)N)!3$x;;V({_qeI2VN+gBeM=*mWSfY*tWAU9S>=s}^pYp*vK(A3q^Pw}yFj*e z({J&L&GssIDOL6_ zjLccOREbP+>xVUeuK5{MRz8LtjU*>fzCG_2TM`L_FQx-k!X4Ng!&78o)vOIN_O&kdt1C7%93!a5EFXXPsW&GJ4St`n85tQ_W8|u zSI|~9Mh)A6pk2mK1yoU;3+Z`)64HRV)T(2?KvHk4mhx1l#%q}V9~*+R*<8OgLU%@L zsv3yFJ;6&{qFeWuG(hX_wsylij=Q!Y8Qqjqdjk}W{lm82GiiIC6Eyw`%JojYU)a>m z!?-8;n8rDo#KPdZHt%d}aXtgAwTruLFp zuG#jF`-lsaMluH>Eh$-UM76lLcocE)vX-YK$W7BFdE8dheo zVg~vP(ELR}ACMCLx^K(Q9mT$c1l6PrchqpvsS_ks*G~@*O=;P1e=e~#Y~F_Hm)7I1 zilXO>g6}a>9!3eYQO515nsM%Yv)FsQMVh%60_O!0K1GvjV{~6vrG0=4OO$WbZ9h=h zwU7vE;uCRsswQh`@9}n+uJimX&uG8Nb~!x|5?6XeWewvelYZ2!PPQwxRlZu1Cu=Vy21`)NMD^Lb3yTN}2^-RWt;SEgaH%XoZE^S~S;cRY z5$zCZjZ-r{e9)Fue^yX3#kLkJ+;xsV=*zqmHH2o0B020ay&6$`hXuoi-0H}~C_`XB z){>My6|8pM>tU}j3-l7TD2g4f4=-4-`g{x{zu_Vz#9clJ__)x@!U$Subup~M_&Xct z$hV;gUdIdoGb`b1jLz;jW%LOYVF~mcWwT%VY5e8%e50!oK5m`4Yf&^tRr&tyoZZaX zkpfT^T>u?0=M;(cspXpGvLiySELLI9_qe-7ewml;bJo;+P+YDBuzj#Q$oyp~I8W>W z`wSU*@$i;bbikE|xRg8~4(X*%+jc<6Ex;Vw@vn|O| zODQ~9mn;atgfw_8lePXFjSE3eam(O!iFrm&VYejdy+Tm3dbFs6)c3xETrQ)^3vU zH|ahBQIpSwh1t2eEDyN2@;gFg#b2&s>FMgfn|HQ(^6AsqnC_4M-U0?me=T$K%)^`0 zx2H>Vcz%ECbhcf|nHFza-_{Y}xNI`sBSNx5#4-h?hBr6=cBG|`j9<5cd@@l~-BR_Yms zmx7FYUcYq_cj?zJSH8a{g=SAq=EZp=6bU>snfQi*xfwv2Ei5gQ{30i5-9;UlVVC+9 z-uvQ=>ls@9&H?2IIVFunh_3z1sJT7Lgl3CfjaJNI)ThP4xBaU9%7Q&Kr0Ra|O|H&a zPI(Tm)ew7w?KeE!`wH_}9d_X(YD+r{!2k~bAe$xtiB*qm~!o{{iT zB`sZDGQI_=GhpH$iV>0k@3zeGQ+_rS2M!5&AA4tX=bt)R5+gi? z))K3Q<_h@-f@9)9+zk}WD)2x`Tem7v`?T#np-}Q}p)BOh9!714g`)@jz75Ao(JLA+`_@r{)_`YI4^F4Igq>O!>cu`Qm)9Sa^NF!na!x)U zTcbI9Lr0-bRJ;%$iPy*FK;*Poo}piAuD&x-ocHDp#xt8RH)(W$`_{Wm`i1bA2#Odq zwR9gIe0p*DDWL2hZjL1lD$*~>9hd(4F+QH;%a^Y#s?7@Fc)zlUcfZq?ySs&KYN{(2 z{QRmWjzXN+&DFUrW3oV5EgR4E8|Sqh9lR)}QympN&+xm+$IldQ2q?%a2cI+hwTbk! zDTl#{nA?y&&ODB8HMXgaHE(7ximI(|-}DPfJ6X7GmjGN$-^#V62|$ku0j;8-F^Vnw zS;C=6f_dvToc1Alx5Eq5ez7iT#!4{IZDyDpP2_ou1Fl(C2F%ZG=>*c0L+0s{#k{#o>hzDI)o-{nx!SF5DUKc%HX zOf}D6SPz#iciLWOeSD(f95ZF_L+}^nVgh3wK0-Oo)(oc#IoR%eDAqN5qVAY9V>LL- z()I0a&e5;I+~v+U*aMbio>*lPXi7$1(DHt3-Y>PrQAG~L3Q92_C?>~*#;(@MMEQCo zVga!POUf9&9?-nL7v*9!_FrPhCz`HCZ79UOc6EclgbP5`bfH=b;6l!^@v7p14m_)( zm*~%^Sg|*U#?lGJYS5SvTEp~XIBJu+{29H!J z5yh6RHW#NqPv5VmUrrUy72bCzP%W99w-sDHl=lOgX%ml$LT;4M(a}%m+y{r3<-&|e z@(7fO8}GGy2k|$&7@GH9RDXp*z(SEiEVKGZ_ct=ZaseSKm-k@J>i!pd1wVeM48KxW zRn2>*hOmImpM57~O-foaaUTJ;i4#h>qVm?dIy?8yLo=uVp@pg z!^~0d^SeeZt$sGEVaU0B2eood=EtE=awIXA`e)Sr^jNCmte+xB7j<0Fr; z9jA|R%|vd*#a)*GVyW{=u*RK+;iqKBolPg_kg+1~gC$yeNJATWqU%rfOX(X%)b#QJ z?6y&(^axW^7hjD(8YGfLeH!bc7a@Jj#d|LY|2B^ zU>0vv-sNajlqqs}HUR(9klJt@Y7wBT&BejrRwU47q6;@wg0EZw$H;cI)gTOK8Rh9IJC>bKLLbON+4j|_^0meNKg20VbLmr7P;Pe=2YWi$SkbK(S8UDmEs}ezC z;GIlTw0bW@3IY;U=No_zh=IsF!H-QIjZnZ-YYNWpfwBk+4lb5OCGC%rtPJuGH%6JP zCl{kG4^%GwA+raHmxOz>2Hx#r2|A>fq@(J7W)gk-A0>S=Ef5+ohsUrihWVEj{3F*K z-;^$5`O`4UT!Y3Bz$=g)daxwrMaXw)=FKZ-DU_tUb^6rsf!1rMKoJ;Yj0^3B)%ENm zQZZKIIQ(7zwAqNX%e~k6@ZHEZ-;?#>QBCQ+J+~%;KWZBYoawWI?YEX_06tnAuZL;M zE!P6?ad3>jB9wYuyBOq;_0}+h2giPI6(%m&kpbjL2XoMYI}Xq{ppY=&O{Fv$BShFW zTmiiM`E%tyHz)U^fA*3O-@#YGu(pWr@Cg%iIxi(Br$F`TPf;65NxJ%(G!)By#KC4N z^5DYE`&z}HpY)Z8yM#Qdc%XFu&F~?bI9c^nU-{0*n7N0yx+F*juNz%P<@)fSq{mhXJbOU89z@jllI;& zk$l}eCFXP7%dwRc#t_ejG?`t}0Ayk=P1|IV&vIq{5k#>pL4*>Afab#vTn3ldM-ylI z8;5zZQYv#4DwALdF`UcA%IC0MtT&aNn){Emipu%{QPsmOv1>$APqd91y)D{@n>{It z^u7ozbwz`A!=X{%o_S9Fz*WKdA#GYVC+io{i`E#4b6Cm>jXC`AMCs?)mlpB_0f%gE^JXy(?Y$m(|(+vs5;9Wcbu37*xrXcg6n2u%@NPriWKEQ?a5dm5*;`^SX4 z8MCactOe4lb0SPX9Crr?j=T+AV`kN=aROv^1>y!__R|AFw1^3TYkNTkpzxI*%%sLK z2X?z-aoUc_cqy@BH~Min!+Sv)4U-_hPINo~Ds@5ncT-J*w9JsJ%KyUIZ>u25wmk%0 zDz9NZ)nW5`r}PsstD=^g+S|c%mhm=h%y#Ae9#-@j2s+)a7smd5tvpe>ekGc;U4J9l zcFBT*M1OBat_Mqd;oexHz6|$*;-IQg^VXa$UwIdg`+ijD(TWIXjVzYrf)M*ySl3oS zS5RU3QezpXlHhfH)U)w)!sc zaf7PB8?P*gp#9kW<*yv5iln5ZjY>(XKdque>EMnI*>=t*$7z0Mk+-EUHivRNj=CvF z>AmM1|2{GC1NV)a+a6~G8rnJ*Q6LvI=JK}}q#E>JGwBmFu_B*4lT5pT(bO-tD%7^*3#9s-gTFi5J)wb%L67EmtxoGHbf4`jCjAPGx z_D<)?Psh07Y!}j7L=#fEj_5|k?c91}sr{7)Yu`favrdc^h*Zmmw{P)Q?p*)L)5E3q zJ4*upk_LhSL{q)aZ|YIV8}uU!W8-aiLLd35WIn6c&nuf>9Vr5`l&AtQ?)KT|Aazy& zx2zJ`B9S_+hVBRmm1x;Z)wgNr2Eak=CFZ( zAqIY7!`4;(TJ%EXlEMeze@{;WqpXN|zKSOO&gsi{4!GwQrGGnp&Kq}jgp`2P%)30# zZBIu^vtRa&ErTb84`u`-GwLtIKBR>mq`mdC#0G|DInB#p z!P*wm&(6-OoMwd^uGV#oTX+7M1xT}-EHR5THF_?b_St2z<#fOC0H+p|{YSWZ%@Ew5 zCNf$*X|8&8bu~8Tu|2-8qtumfNI)YPzTooDZZ)aCx_eJu$`xr$x zpP2=-{}eJw%%l|1_xYC-Tj8@&lQiP920CJDZ8#a#SDLp4GrF)z3k`jk2n1;)_r|uA z-rdei%~G~TKTn_x?`!VBc`XiV6f;Y>&ct}7P_$;&MR5D(k{>4FvDoEx8JZEqe(CGe z3Lpttr2HB=vDS$CO;$c-`b82jN_|b?MO+?rm14^O4bkaA`bCMCXRu0} z!H;+JvRizi(nfPx816nONvREp)IRIi@(%+HvbE6ziwS}$7=NMdp0A@(P>{PeHCd1H zLM{%-cCel%ap2U0($B5^J)O*YdsLC0x+8nQ3RX~)87-C0Fu)abc|NgOQKQTJ+0vk6 zq>3is&Q|Y93+ClP8x)fEpg%HN^*i6YZ(|+5wwmvqIgsDhr`S<9`#+CXQwgW1CUv6e zMGgz~nyE|3SQIUZlo!D?=oXbkTTL_VCrzqsiJQ+ROk^)%W@Z_d{YMY8d@4Tm@ie~u z7ESvp*^KH>>rpGKZKm46Zfm4K_N8IaZI%w3l$5zBhHEFj$k2PveP>mjFKknBs@Z2# z0F<58BuIdGFdam|Je)n(QFG>muRpuKJ#*cUiK`+^N&k>?;JuG3L*ZI4$ah#!WMXXm zeL&T2r`4xbtfe<(u~=GN#7uf{)j;!~9)-`Is5L%Az18KTK8KRgWz#qoOzA$IY%Ov{ zvE%!StGiUzyUcd#1zij_<(UMi7z@uH##+)Mcelr%@OC;#^A>l&ejWy~j_Q!So)2Q5 zb6@*O-^bbJb)~s`=)OG2Lq_y7U2Tq|=fU=66hISsaXPArYjH@o`^x-thxhGOQd5e6 z&B$A7f%p8lkUwxKi0Ke{b1>?E(99tk<|_!->27P`b;aasC3weyCXXEiQVYV(SiM54 zW6d6CW)jI^a=%A*R0u!*F{4gfvp>rfU^7-xhT{2wtpv{top&A5vM|#=9zG5&h!h2R z9VzykRm~@|LUjej!%J`Xs0(tp-=j zw!n*dj#c1N7UlgMne0FvnIK&_1f1$fFkO$9>Ugd`ey85yMyZM%NC)VOI*cR=WRDZK z5nzq!(LLles#}pJ{~-!m6$kpn%5@L}IN%*Fe4jgXme)H+(nr(^W=^yb-gh~TbIv07 zuyyCh>=PY+{t8dOK#6jCSWsHlr^KNL2mt||ctwK!+ndYFWL!hpRv)p496ucIA)|0% z3rt>DYg%|Q;zB|~r+c-FBT9^c_e_uSJ(eBhN+(Cnyyw|OskQznV6tHV$_*ImW^r2Y zC6{VIBV;3y2H5)G{7X?uE-p_UoP?A#@ovY1*oPW~>qxVQt!;W)=(!x=9>rTP>r)MN z+afcrl#u>~hlUX%N`OYmcWgKw^}peor>{(JF1dv+`owPovy#l)(h?rm{L-eYN+}w<=O>l7YUe1Lb>42AOnhq) zCIKB$3G#{fmBj|%i35N`GgHmLB2Z{;Z4F(3EAoaP}vuf>)?!N6;enHs0G2OAI*yXViJ4;5b+V*WfjD23W z-WWDk?c7GlDZxawv~=!I5I=P&qq8{cRzfer!O?Kiie!a)2?Ejq@$BMY#t$rla;`o> zTNUwm1vAIYs}?zxNav1Q_o+oQsoR?OyG?TpG#OG~LNiXhMM(F&5hoR+0yh`Ece)QF zq}^8VlnCN(Y~A2gyVyp0bY~z}qgLSl9h|DNAAjJt62VcJoedp-mfUYGzE?H6d8ccT z(*ghHq3x=0T$Dp;^M~_;#lZo0kv@N?fTY+9*VZO%<%n`pHAO3n@}k!q$E5MszS)#^U%id6=dlV(_ z$E%Z#(L0SQoC8g_admYSivV6ZARd*Qn>*%AaQ;UYeNJTS=$Ow4Luk7K$S5iM%9x6A zG?Cut(>9}b^nCNUk2gu5S~H9b$Uxpk4|385?y>{RRmQAqHw+9WOBYfs>aGoq^j;Xm z0D`RG32Zo3bHHL_mnKep<0hdDn* zyB6o&gK*Z2VP7T1FE4hMpjNjg**yF9=R30nx~t0G24--yG#_eeyp5veE1Z12ntzGC zE8f~}Nr~*?vOx{B%^aJ8OXy`gnx$~^PE z6D7aYhW$;F@<|OFy^38Q{xorEW($xiG{eI{I~okTIcUw=Z#vPaPJ4CB#L9GEa~*q0 z8+bOsUQwO~?)swb6}U9;nO-Nq0n&JG4Qpu_K+rg@qvMhNv^Nqpo>)kM zKcpAZmMulXMB)FgIJ?aY^IDk!##XOfzV_d8d(FBq69q!*83qlGIUA`Eq;2Wv4Rg~B#u-vL?&KG)QI$b=z%mnmCk zjqEKM#5!YQVm=BCh`zG^naqs%N3fLw9kimPjx2U2OF4?hzxZKZc@t;iF5RJKiXgUo z_pl~=a^)F-NVBeQEWqtzVasJ?E%e7wQgRB^mrdk7b(3T zrrH>*I+VMlSGh4mjrv({5YP`Xd^Pr27nIXN_^#g>eP zfD`rWrB{TA2?r!PFB@B^bMu+L-(4=fo#3JQg8+#%m&$t>@+QswqaQqcsHaXaTdy=} z>W)9}F{&=;v8fdq5kb88OoG}Ae20A^6hMdJ08VVQv{bs;6GF=V#hRPL1^xT`c|cR1 zuyJjZ^w!p=(-pPbs&5q&U!sLaV;qX{!s8n+RAz7*tEYXTI$+zWP9i=ioA2HJF&-W8 zbhd`M!UpWu_h7vd5vl`hA66_zl{0E7k@JlO`S>(LJ0tJA>QtxPb9tVKJmM86JQJyO zM-m}f^sT`X9fKanjTuS278;G-xRX2A1&3w~Ek&Jj5?O)gMy*v5ihp21K5^Z}f`0@f z@vmV^WH^Dt-h5jy+ExcHZ+^Y|2FW1xD-bB)_UL)=9PyH^7tEtofUTy_<@49_fO?0) z9NrkZQm%_tEZZoILM~p@n$0tk#XO({8`f)5rgVb}GGdwmx~{kC%KAEvy=v#50=~l> z>QLxO7WA`?2SXAW1IdM3RXdC3m+pmDnvAZB`iega_=Z0YTQcpOiAP5B<6~U2e8qQN1rFCgyo};-lDIMw%18~Sw7o{2c8N(gPd56`%#gF{p zow%*A3B1{WD1mL$xn#0OwLO_&HtmrGj5s#t8e$YgQ>;K8uhjyH9sIobnx<; zDTSIx!kFS2`b5ZKZT982(lJ;5tQ1D2Cp+miPP6RKO@1>fD2DXQ)yJt4zWio)TEzRL zB+7SE+1h`IcnlZ^7k8_ZP&%JY^~2D5e;QhdO&c88u_xI12Hz?!Y8`$GjK<&yo_GjO zDWhZoB|Bft46j?;ywFphr%bD1yv(h*UX4+*;eaP7P}-i+C^@MswAZ41H+<~u?4n%i zf%%GPKK-~%3U5_?Curr^oO~S~-m^$zQIvZL$MG;$R@8As5507mKWjbg;MA^vrFrm- zUxCAa_KZ=ga56lzex4^HIzqgU7RKGk#q=QpN#!-b*s(}k{5|kC$s#CcP#R_WeLvuI za~KZ){{4HlcAnyIsZsrR^?%GbbpH>UQvyM}cC#@VeBi$UfEoZDtm)-d<7)ErAm{=j zetSBKHi9WgGj|tza7O$k4LHVm)W+F~{x&TQOv2Oy(O29^;ADsTI%^9^tF$~=XT%A* zT!yJ5jIMsOOP{nPS0A%TCj79YAJngO-sVqj$s&@xpY_O1wI*kvcm}RDGu#a9jceyd zr=B4QY;GZ8Hz#pKS<_2TXwH)6XiT;ZHiG2CNdUed`H@Q3+ zfK)lpi!Zaop=5Va*9q~J_Nn9e8>KE`A6h-TBhTzXYHyXI&~p!I0pDWiAD&wMc+VNU z37Wwp2AN(o8j`i$5vFK*^356IC0D_u_XcADSEK9m7G>a9^b|h+O7M5IZ3^e{xpJ66 z$e?G5o3?<2tucb#_-*jg;j9u`dOY1wW9_e1gtBiAkcSSfHyie`Z~Jy z^M=87`NsFQ7$WGUe_rUMSa2)q_COXSl{r7X?D{>VBTv2VVm@hADu(3Rv2-_603z#vb|Z zb$h&BhAInHo8>_%E}>R2hpqx@PRGf`!h@}72UE58uEkj&*e>OOz;bYAz_Id*frQ%; zuTq=)(V+KX1{Zd0Kf7u5!=m3Bc(lmE;{tkW5ZsDT~fkHCMaF61=eOK)_k-2!YnnJ$h*8&BxE?7((Cq46uADqktW!Jf`UZS zi@lW(VTbLQ747m03d46GHk3CUlaS%P6Nk9CF%c56ut6nX$90Bq1-k(#Bj*hNyJXAqc1~2M&o^;*){Qh2?0vs2X)|{e%CRpKs zmex$r@^RvLJh&sC_k5Rk|1k7pXBL_35{a~nlWH5 z6-UmeP~N1ASgTAQO=x^?;?d83^Ak?CS*W9yKNaV;ZXtHG7&O_cndR0Hkz_hINkpI4 z!GD6gvN&IY^8FQd%Pz@wq?6D)wMgsU@@vo=c}Ksa$;=Pb;2a45JH>aasI-N|8Tigb zCm~@o^>flNQZDp#?Lrz0BC#N`w?DH2k(c;+^1;M8M~T5#-q~A=@UIpe6bOoyy1w6x zyx!?Jdc?5IR(*(%&A{x{>oSlt>bEwGiJPROpjWLc;52w*0^n)6v`iJSAvj{Sy3fQE z3P726WB@E*qD?uTH@`>}viN#wH+zwp3-mDun8*cA+b|YSS?E<)>;*(kvI4guzmce;w;#+<3RBqY-L z_9-s8zTkHTB2A3%E>X)G5iNl?KYqJ_DjWhdtdMRe9^&fwtY>7_xOs9Q{PW-k_LA$= z7jHxrD{OBjcCYw(vpDebRR%pUJ^>9w@7~?PoV^8o%TW9LCep+u=I%GL5L65MP2UTH zNmJq^0j9=M4VUnV!zx5Zm$dZGVzY_LO!%|gPxrnlp$29{!k-!3boVG)O)k>jZ`zLo z5TX_If)T__5ES8Ed#F?ffuVvWNJj`m)@aJ?s!H@YJb)b;v#9*!CY~$wlqaVlTG4KgiphhO$&{_rE zbTu#PWDsRDZhxCXrxiB~d{1(qGL3zu@Ic|~8^qIQJSZoH<=&+x!rQHzQThOOb=u3h zRbL;7pD#c(TkT!Dv)HQXH5eS|rx6hql{!VPB#9fh-iX{)f$m<1-9QxAj_9QVlJ!eW zm1CumqU2;`-<^wN$=l{7u`93_y;Z{7WwdAZZV_z&F#+#b~^g_Y%?(_( zHkrjQ=G;HqXqMK;t$ER(vA_Yb7`9c@p9e-BbCp^ovDO&U80<;8`V23iDG@eCV?5OW z7({*iyn8u}2<OEal z_yFTUe(FzO;Qnl4&zlkRV#BIC<5D{C@j-iYgNUi9Kq&kZsPdLqw%Bfp|m8t zA7QsQxb5XkwOu_uqjhe-Y|nS61z-FitGB*ODPWLk0VIQ`qRbZl?PEzE&~P8F9u`Aq zcG(y63L+^6Os9!1YP#G+3N4o0e|S5N-8OsVcMs}e4$u?>pheZ{+uOLiI{t@YJSUkddxmD_zgOK+%+rE^NHr*d`m;VL`SvQlq$2$+ zZiOe={1m_WD2u!zq5HTABw@5Gc`+yFzA=y}Caa4U90T?dgeQstwz>3c5)Q=Tn|rMn zpXln;9B!!lPq^dm$AAwVKt&I?31By^1#ATcXhFS0rEJhm8kX22PMT^IJ^{Gx4$t7o){A<%gS_VE`!i1 z^r$?fEHQ5U<-hQ;(H2hOrT$bdufTS?Cn`o)&uHo@B-|Y&?;!<$oaCtT*5Ye)HW7-N z`g5x4M>WZQItP`FNrW%ST~!FYelb51|FO&_Uh?+U3+w4yQc}y!$yrd~tvCLe43w!& z;Pj*tWopW6QlloEI5lNRBk3pDPiLLK)vUqp@x_B`Ykp!j>cP=+_>XE)VY<#7shq(mSvJa7Mi!nT+0m;S9DX@LxnNZXUhb8ruqy*k%ICsMw zzDuhv*d&WOUyhxQy_PN`vX7ljMKr-==_(Ma=AMO1iBN5A;^xy4)vAE2mowF>-vwEV zJXB)}AndUPQGT?xuIUB+idIpR{x%LFVuuX z!lW;k(3qw1Vkr_#tjz=?OC)P~@dX(3?)UdvSwpzpPS0d8o131~)0f5{0H_3QiGEAg z9(S!b9p{oBs7n33QZp7uTP#>tfCHNFjOC6#DST@W+P6mgtUkRXWK!Qi#k7#X`rHhwu#|A) z$pEbAa!^fEgHGt{!Psh7-Cftr$Fa&t^aQoz6uev`{3sJZI#uh!IRCPbTh`j9z8B?F zw`RAceR_m!sZin)SXB|PN1`ne-Zsb0~ z#uuU<{lub^3NRE!p{A^2iCZ^}oR_JuIS3BqE@Eu+&5!mE25t|SS)0qdl}&1$3ucV3 z3_!m-GW*RJ=G&v62)nzxd-wRaga10`=^@i*Sw0kuhPin+MpJ-}OYz-0@!dOUXBgq9 zG^NeWi)M|?TNjr@t&9(u^CSvIH4H?~H1AA~kB>K(!x$-!0jImuPfDoA(1LleU8R$& zhZU>OCU`OcXA>W*F>xa)o#s7#ctxhf#IkEb(_i%bIBvaNtiTZkcK8oR5LYbALnDqN z%a<9C7MXu$ZLSWWl#ft1MIYI{cNUtn?z-f4q$tOp#ek!(Va*h^H^@x()G*tO&3|SA z!k*lXQ;}+3hh?B#{UG2)L#dlx0p_d4?eU^OlC@T`4YgFScB+PZUc3c6b6LxCWAEkq zRN^-~L!&;|$s;94B)Z&>S9?9~CZ=>^86-mpANc)sWb+v`J3AXLg}k&fu6Q2dDzE0; z+qujdc1#{c7V{1RpNfs|XMc==O^WSWyuNIG{)61j zH_(q@#Nq6leo%2E5-}*T3!BPbsBD2vRJC5m?hm$wOe z*QBcGI5xpwe2KL4SY-R8{iP)MEzO0&+F1S1s=PUc+Q70DFS6cPz~)3T?eB5@-{kuD z=!Es3Q+zzK?wV>5-G8~C@?4?cbC#gA-!U=y`(2c^hx!kBU>%*Pnx~z%VsntgNz^V5KflW zCim~0>@z${>+g!CYq}GZ>Ik$bWOV-$rVqe>#xE#jkJD1;aJ}!;Mt0JSVS%`X+b0Zb zY}I?wK3~s&{=o5b^GqR%V;5OwLYc0tpjvMBSu?5LZD8D$Qz2~8)C`UiY!9D-ye@ap z*ZC&@AUg&1S+i89VZbgVB|*@0vDmZ)0_!C3Ptt%7L;xWi=&NYt^w@V@-qfAkW~cJp z35#3pB6_xOoZsFYtYl3Mz&1?zNV;KznbQrppAgToHEdMIkf~oZ~C~F#9YxAQf_AlH`)C;bAbsokTL?pWvOAleE zRq*o@&zP6aFu!!7d(q>+IG5aNqJ)}pB$vwis$aD0b>&%JyWm%Jctu9~3u#R={Y{$~ zJV)f(U@Cj>PIkjRtSatz!8B~K|K;x$R>@7R=+6P~T>gT%*igOD-C%rqwF)M3_Mq^G zzy~z|Y+gr+WyE7U{3K%;Bvxcra=DiqJGt(gt#|8U(!4wXxk>x^Mt7vV^X6+6C5k8M ziF>cF)km9rHj6F07vJPl?n?>NtVkCwHY|_V-;LBT7oAL6z__2Il1%D|T7ShrHan_t zXy(cWic(a<;ug4n6uj6uA8znm$hvs`&gOl~)q2`iMIVnG8Qfso=dXjt`NT_&s5`V( zAhO^iS68p#ObzkkQm2`XE$QdZC3|%PhVMBYyrov{>wB`bmSl0>d(`HFR=1fO_1eVh zrMu>;-CcX98vF3^51Ob%8rpi&w&suA+@;r-edM%K!}gv|gjM1|Q?3+v-mr1Q<}ELw zu0hc!`Kkv);N?LzI&Zk!4$D!tg23`Z?$P>FFq zWc6fMUElCZBY~h~D(qRm(%v2BA@@?coYttPzVfa3VJ^0H8tY$@!>8;?X0bLOH#B9L z&8==E2-A~lz8F`W9?Q$k{e6le|4y_qp33>VBc&Ash%LK5>?GXU$bwm0e$=j6PN9tb zXheE5g5{2_U`J=ZH^xTz5r6#1W7eHRZQg9E;e3a;5g zFvyJfPFMai<41wrR`P#%`pU4V*0$|o=x!-#5R?`WX#_z)8tF#58_5}zkVd*gO1itH zySqgR>8@esTlnnv`?C*^{f{;Gy6*EjYmK^{)A_7ws_CAt36uzMo&QF$vaw=^A9P=1 zm6UM2cnd};BL;d;2>fkB36Ix;S^8vJEDLIDw2pGh9pw-!8Mix;W67>k*9$j|`eni9 zM<4Ug#~vxEtfaUUvG;}3&swPX#Lu(R3BofVj%?rxHhJj!pH}nXC%@=p@2?Ky?9;M( zY2&Gt9T8Q+xJMR=W;;Qo%oiKgVESX|$_jE(Q4v6A2uvCw?zH6Ww@m(lkAQN_6NuJ2 zz&;fJ_z~mxBx~LDVkVD<@3@s+uF;dm@%uj9FVKU!EH1+bDzH#tB)<7|`70sgSC&V! z7ld%5AF0^pujn?4laPT%Z~xGC#f|koma-Dm`~BgjIW0u(R|~PkfhtI;f6E!f^Gkn( zcdbAIxLKAk2KG&R>?MQ>By!~=6eDm$TM&Q0BG??;>3MlL%aald4?P*-{Q%n_6TRY4 z6M^<+d4boEL-5-l?6*I~Q4?ttWa&G55oAWbZz?+A&C2wNe)m`T>k$XVz^MktY(t?&r?OECJ%CUpx?! z_2;$qZO1t5$D9;d-t_3lIHoGj%H6%*jH-)=ZQr5s@uUw858be@OB@X=l1YZ%MH?u< zsDu!0gdzd2!1N)=BP91n_U;WV>(!C&@ffDWNVtlQW;-Iy9KlxdcT2Mbi21$2h= zqfVv=L%(iGbGf|YBeA+TYY!s6q(V+{^k`12Vj82!T=*Ck{dCIGX?<vc!5&Ji^l~Pst<;Rb;@s}ocw-k zTfKPwn^xp(ZJQe1!`lTMPm*+K_;9&1OZXcFW0)1h!=QB}gl#5j)X!Ytuk!VgzOw(& z@l7hk_ELyGv$W=hcA>!szW{F8+mkHgl}f+~SCnC_QdA%zI1vsYGyL>sfxn`(G`{YB zOn4+i8z1&61nw>8sq?VD@Cd8acDJO%i*~I-*{NEm0Jq4aU!ZVrx=F7bGTTu{X{AKlMB08;a42}PdNzv@72nMT6cGuF|y30tK4p$xa$dXsE>issx zezqZHXK-bmW1Wz^`2Ftr1Iz-nR&=EV#lr)^znif@f9F9>+h2!y6|l9p&uQ5m#lIwp zDjuKb2`xI_I)W7L!_C4FY!z+Kgsb!{@XLbTGI}AVc5X9GmeHvxn&mZ+%HbXIdF8@j&x1Qsj?ic*WU;ifFn6DYj6ivgU7Ge@c${IBLUe!jlw`%P* zBRa_1!b^L^JGHEr8klPeJAd!6iRrjAk|G6o;hEsKL0~ZaS?9GbJ8tBM@ux_cuMBPe zmS$Dx*X*^WdfR@qWC3;1oP4t03z!`i6CaBPpTLJbzz4tTgm+M!c2F=ri9st}z+VYl z;D$-_Vf1_ColpIpFcH=CaQ%xGN)<_hf)wY)g4=2dsN zLW#qM9DzE=I=F^$-Tml+{2>z){QhrAMIhG)m-o6hVFXKpP49>!qhG|>21n_pyIs3r zm#wMGKjQMk6IPJF!7Q*!#O&$3lKudw=3m{w05AoXnxK6Rzr_b-AXbHm{Brjedy7?A zX&{ch1U9qqC6OcyC|ys{QN(k0gy+#wx~Mec5d9WwLY?{$0wYk>)2 zX?C*CW?$V7|F)GQjDEr!vX+15-v|oE|2R7dCgMldlEa|+gA>X98HIBnh2=zEm7leT z15ZAAJ~PN}ykm(%dOuod_v%_;a`Vi4QN3H7Q6}o?^S2$B$LmJ*)WCB!!aP}pWa4Ls z{y}xx0UHZHTz!w7(ptQPuD7^?7yfdPW^w8@kGtIbm@XlfI8y~VsH!nRlc~LV#@&Ku z=kMB;QcN$q<&f@#o&ZnfD@5#F##0c{*n`i~?anVqUwWF$FQVA2m zO#k?jV%5JmIZ}a%x#y*FX7c8X`Y~e+6d{6*%{cv=^-o)oKkMY#!=#_&?Cx3t6CiZ$ zPU;D+tiWLPq;64FuY_J|wH3Vh;bKjT%4|6-ER5)-sFC}u#-n1p=%Mnj&y69a6W}Jf z-m0HcnNm{y5%#n+6bZIa6p55ce$Oh;xQ^7hW2&4I>2RZrIZUcPI`*c)-d8^LS!Qjb zk>33{1g`FcvOx}I^8KW3@<{DCqHPGEG_t))^E;063o%-)+Bq?Sd*91~7$QpwE^czT z$hgEb4eYJ&8FqMxB&vx)w;+6?tx$^CJ$MQ9yctt!z}UCs9(%iMS?Eo(LQ1QXDHzUV5ug)F}^eN%m3BcR^&UUUer@2{Z@k<6^ zIT>w+`3lv*_2k`##N!s*ksZrR3i{hQh$WS7DLw#Vz%;Ko+T*q_Ulz6VKOu-5$zNj) zFf%^84<`3Nq`_~1+?Vt6r~XI|)48eKND8qW zjvz$##wVZY*eOHHZ7&o)Vky7p<#BAxvOpb$N|2#E`rY079lPBMavPti zVZFT>H>(^TXPjs+L5Nyq&-+^!943{Ci^HD=z_cZJhU}VmTX`MKbsivF4*4#dw2>XiRoNWkdh`1)Q^sP7&`ZoUKENygnD1O z?I*=O-VVT4N~e$c)Z$&F_``*|ZtEu=`=wgBD{fcUYOA|=w%zKHM|2iz-*3=c*uj-= z*&+VyH&RSmckpuCar-@R0k6<^iqHRhcW<^K?gnlBdC(ETlZSb>xsJJsg&7Ym7h5JM zKmmq$(yUZ{I%Ro+phn%O)s04G{~Ixu)_Hx^+)#8<*Di2h+#kCQTPb3Bd5T=ZL|j~+ zjy%3lDX1k6y=M+U>^pj-R%LQ*+} zw3M12>zie!<*1ghESiY#o(+O1=%~@!F?!DwQ{UEDjDB|=6AX!si~I8^x2Qx&@D4Yq zs+!XmhWs93?tign2=6ZFEyJxB$J(%~p7lM=LT$mqiV|`cl1h_EOdxS0bL?7?Gkf1m z3Z*)EHr3X46j@Sn*|w;4=Gx{6LgJO~ zLr=szyggyxPU}@ie)0;_Dhn-m=Jj*c?B!&mVd%wC))}k7`2S~A9=O--v!!k7TRpvH zJ9luURq_*C_tkIXVh@!+3i^J<9-v^f<$|0*tW76xm(Db%y-SXlk04q)2xg{-7Q3a3 z_}0wT`zj7!Kg-js)OZ5O(amNTZCE4=eg?DIwtw)}MV;6ZZuU?XVv{MCz?i+-wbH)wgS^8Z0OF-kLE% zr#0MmPsR}b=LTh)@g+!J^KDG17k^PCNT5X6ooN`F-*M~gZl*kW-2WWI+1&oD$Iw4q z?C76Cy4@-5`PA{LJ>Y^f@5iWkIT$%^Z9Jh~^@y3gPaXvdBPz403;_KHh`Xk3CFRXw zfch;33(rjdd8|N_nWW%o_)YF%I$?cr)34ZteD{!X@uK4r-D*81qa|#y~614HuSsHSX43{vj!B#3y9@K&VDm(zS)}Wvbv=v1 zG%;ZrJ?xSnIXQ3UE}Z&Lph(DoI3-3z^yE8KqLN_a9q2|CS;@Ejn#P5{D7$ZQWd z6R+(&hPA@QR?7!eL2Eb91(0O{_`aA=b{B2M12ktA&qlfaL#+9IF5IMf6X}?(3 zGw29}`v_k{y39MmX}O(Fj6HJ@fQh*vl3MilT(Z@)m1irk-2rJ)i8;u(aLnl2kWR}i zKN(uz6QnZTx}n01jPqydit6LE(s8Dq>ZwX=<>3p29ktbgM|!$+!oxLDESqLpqN_kO z?@Ve-Www#7+SJSxdG&!gVs|XR zWz(!6G^jZLBBEyZt0&ZLlz$#Wpg;THfhex8ACuQiB<@^Qg`$<%Z#72>8w$I$em^Yz zJ(vrkoL|GGYVbWD75GWU|K}V@HVnLB@NbN+&DP$i3D8X+D&nB$sT)#W=8v2H9a?|5 zK3xG;8!OxU=H(-DQxl`QCB~;%emHiyrfZ}a&CW&o^oh&e$T=x_q)hXl zM7`Z!GNTX0dX@kBGEL-+k5-y4fPi+~>ev{~x$q#<6aNevvYBYZT7x5fcRW0rqdjS@xwz)xFM<6V@+^?Jh)n=P3? ze0Ax1xncD$O6ANvtr2Xk8kwITRkG2dgm|N;4AgqVPYX?ksPu?zVb*ZD&n7o>+J_PL z_#b~D!@XNFa=a8hfG4#SSqferlVCj{I*PQIE)P~cLF*64>~Q7%lsIAkiw&*Da;N_1 z{LiBlWTd!9Dej0iQEqe~;k}Z|qL=X-pp6zGm-dCz)r-c)*Ui_h4sPQ;A39VX4ze>1 zAA03PJdr%X0~`?87VRFeh158)fjWK?p#HP(Z7?DEC(w-FApqiN3b3>~E?PC->{#yY zq?hNic@GcsGS;2$XlhKeaGmnOJ{UC&uxgTss(=( z*RO4PHe}r6t#>%@w^L_ifMA+XzZMS%z4lK7CK=yI$AZ6{khGyYAq=Ov62pTzIm%)G@H$DSl?U7|2 zhxaV|_I5-0%>8P6)6!Y0s;8=pXzwB^nFBol{Z`TG|6L*_K8`xGVKX7%pl7MKJLuH}F$J3^5@I0sk z!pGbZm4I=oS7giD#q4AAnv$wvcBzp>=7cI?mI6oNdF`UF;vR0tr`PFUHhekI^cJ=SKe)Y>SuNDhBYOc>BQgLPB( z5u{0e*5-u&gJ@s7&ti9vwW15?i#Xzc*vH$ylkYv;{&wN+)$EjD1XOj!7gJ~c`G!qq z;P%bQjGc>1`5!aDk8v_E8fJsNNPWa;ixvG8;?=uUwqEO)CJg#SBC#0&%XqI@yTAOqUocVp;kTB} zN6q_zA3=(Wiq*k(FH?3$)&L+@D>5W^vCbju{#?o`4v5ttmVK8XzmpI0s$e%i0d*me zjQ|~&k|`YNMF2Dv#m)m=W3Evg%h=v->Ff}{LquIe-E!{$rBZjF4e_uDxz@#s!U{!! zxsuS8We{AK02&J@h%85da9zW7?Qe1WJ=e1f1fo1MHgmph$9m?wp!8stxPQ;Fi|b1V z4*^-T2dz)}UFoJMH(mpe$^A#X1SBhC?2}lgs8WfQkKsk=xC7k7^^AqTc*5h3?urvN zk2#26st&D z%BMHF+bb)_4@IQ%&8*4U*0|R)2i|9~mgOMIOc1c+r4ab}DkANu$ub#e(6bCh2ruj< zrp607!%lp3u%PPtKYcCvM42=HU?0SA(rItwK74foi$rf*t2@bB)b8-#%l2nxz_)|d-3B&i*UoL2bE$fU#Lv9htHQnyJf(d z034DWdE>3V$XcKuW7G9#l39smx-*)hP%gefl9uEk+O5Foz~-ks!*}EM;RU36cvymt zzY`yM>n!3VeHYBA@WG(3-o->#7F5FK3GNQW;A#?3i{?Y^<>D6UY~exT>$C$6gx<|* z=C5DX^}Hy+L|y0&u|8s|Z)v6^Pz4>51q(Qr{$+?YUPf0gbh#GPmS1#5OUh`pJuWi)fZMKxL%D#WDLEILz5khF4fsV zTu8VmmFNN1TMkfVX{j!|UuN(3+PLNisllfoK>%W@C&2BB6aCNl6>~z-<=J+-6S#5$ z8FSud{vDaVm$_nOes>+T)$uD>#U;3P`RrL# zo1O{+)97xutQ@wAxYB|nvX>MrxlYV>JiKuabKxzRdV~*K6Zr}fL*s+w1+eijv9Wsv&A=eK~B`MPoW=RC0tXC=G z)1A2goC1rmkB_onIY}ws#-}@kMb_BIr~AuF-x>%cv3a=#x~n10l?r_5lG!3)HqBCK zo$dVDZ?6Hm5}WQMdYlYIrKjjkc1T9?FUmv2^5qBZQ)Lm_@4DJQ?)He#rS*jP_zpsb&9iSr?1_l zOT6p`0%Dy*32Y^ox>in-*)LIER=d!%u_zyTzTy-!UtYJYI82BHZ#+f&m6x1s$%2pm zO!hm-2`8usG-ZyYD$&fhA*C?|QfZ7JmY57L`aaI~MV4Bp%u&ohfOMt8b}b*Sbfudc3wQw|l4U3lv;z;jjRfAHD~I{Wk(F!1m+*_7RZO|B9!VLEww zqGMxYD=J1`5IjB#m0W^>p`p(wCr;XJ-ux&iDBR=Jkq}>{kwZEtVPtV4qm0MYau#`~ zW5fB)4vHAM4pjkYBukt&27#9KWd;MuKnkRcAXb}d`avz0+M&S4%8JwByfe5|n4|iw zS_xG3<2A2SA>v_RK$|cT^X;3260oc=NF_jC2^0pF7$Bh-oNZg50Um-5vob=1^}e6r zPTYR(o-?sNk*1p6e-}hPRWY3BeKoiBo8xm`zF=|+<@6rJ{aA(4h!gzn+qV;7)SjR~ zua8zg$`sL%VF@~1$dVr=qOK}*r(9Y|o>*kEJq>e*ir(W%&I~7wyzuk&eO%$W9adhq z^U?83LJ8(y+J+_=XC1_3G#|vR# zZ`|oYlHE{S*VapWW&eqxbFs!!sylc#4c_OC%cONrI50H!CE`H8Nfm@CXYCV}-rOuT zhm<`ojnu=!5(2AnbWCq$1-(`L^8xCD2by7ckD+a%BO%Rl875X?moxiq_Ai>68I!HM z6Y9`xN*Zu71Rs({?;RJbtKJ;b=L+po?NYq|7|_?@$vZA{sO#ltW@V+qnKK%L9bVs1 zl{by}yOP1@k&hwbdlMtx*64TtDzBj6W$vFpR+#I`M;Ps6XvQo9CUd!%U3}l3qp<9E ze?Ju1ba;zZBhSLZ(%v&&tWk24Iu87*z;pQ#jIrl232FZ!s*+ z(s~%yr5jUHoBm4ZS@_6?i~=Dd9V7H3OM6{aRlwEZ^0}%Thh8EZC_l0&PDxV29EIB) zoegYk4qDXI)+TY?c{4EIr7USQAcXW56;<%v)j=yGH7fMXTpdY1-HR)~8D-f970@dnTeM223 zJ-!qbn=5zkG=v}NnX{w>6$X%`?~J4pFrF*bAs{09>1-5_kFRc_udc3cwPS(Y5$O?7 zfM@P&HuTjtU)jwYNnx29Ps=FpycLZdw*<-f1_5BbY}@&A_7}3jz-hqmxbkQA*&zZN3H^h?=5){@fAQ_}Q7M38iqh+$V*w|-t zvM-=&=19-6B&z+JZKR5MxumO81s}BHZYtax@cKl(uWTzS3LRM=%q7t!S~L~Y8XS(U z2;V_1xbCHSU;b8-JiW+DM(lEy=3)Sev@Rf%3?!({Pt+n+Zqf9$Ew2;HE34DQK4Fmh zm6f1HEGQ7Ni)5maWip*b%$DNnWO^R2;kNl)_k}Q&P{uN%0B0jxh5;I7;;R%vE1p?F z)V)+$EkAC7SLu+=|5_(;Q`JJFs9s;YnOsw!Gx$Az?uk&N1SzCsbT z@(BsBOihkpFzwh=udvvujKwST;=glmEd)z^5?q#1)qH+{E0r9Vx{rX=Isf`H&KVnHk~q zy}Ai;)38X(>0oJUWkqiSPYQ&4+D(5~9Jats!nn8$swT6xGsCE#d*XIiF`DtNc~%BA z3^!S0$oyNGINYr!d(MIzEX~;R+2DYgn_X7j$1qhThV4~gb}L%tp(%#l!@ZG3LNeM! zn~!HQP@qA#%=_PzBm!$wTkMQwIPFa_Z=XPVZ2zWJbj8ycZhSl=Qn>uUHC~K6f*n~( zzgQ&f3)#RbU3ZQb2-6;>GOZ;)+cVaYunB~gGe8wQ^&7=WND@7NhK7Yt(~5=a`<$;a zW)kWyVa6n-WqFvcmxqu#BgJ0`{F-r{-M!`c43VEcDO?wegg z7JQf&jvnnl+}9>I{p8O3^VBE)q7{T^;|gN)4BAjrk3zilk^*_QN{sIrJslZP`rcJJ zmj6BpEQF*@72NaDaHkqRcA{#;qRFqDuZ6Rv<}X-ODiQ2@bl--oi6`s0MYuB z&F+yO+Pb=D2RFP+ls{i{z4|V?-IYMH;wwrjcF#gHH9eh@`!pgV;)Y0B9Cq?0HdjsH z-$iMI4#s}MzVW{I2?+_epc>#heZxxfvsmD7cZAX_ASy`EqA)8_tfrM=a_H_vC^Vzr8`U%iL$QPROPfzY*3$KzqzHQ&9*Ud|QC@G* z&p0d`{(=RZax4(Pq=Xis#Iqfs&%8?<0Yk>85i!mz2yY{>z~2WWi(X_$k_v}_&QanC zL~bNORG-6c_TRFAY^eZirx6sk4M2qX(Yex$nCbDPTO7F6fI&@$byXBpHF8 z@15m>zMB#?q_;Z7vGlSMqpC2CiP!oKm+kJp6@z4(N=hgup_VQK-ER@w#cLl+&sCWU zZ>J%_)ewyB>0UXhf}$4n8IkSR(+Wi4xO~8WWf1=`-Io&2|BQj}-G7sglX~ zt-?qRb_gBI>#ZIp8K@o$DA>W4*kjf-d(BoRiwxl6a0Z=>*AHaj;TLNL zXC}4*owBUl1o6ReMvsi8x`T=0lx2CZ*SdNsUs8&ASes>WOOcA`P?8Bdx%;217j#Y+ zDyRJXS}fDfZP$`7X0k0S?`cR!wd^w4W-iR9=DMy^Jhc~u)w95}5LN<(h+?8ql=Rud7-oNdzmd@_Uzy27SN^G~-*JAU8Ttkh zhD`@-gXY(3(EgNfRlcwBrID;4LGFVEW*OlOf}>gRt!5Y*(nK~NQD*}0F1CDsEb!C2 zASQ2)MXh2q_Uoy2KTC{*G-R{j__PZjn={I0xfhw=O(orVNFEJm@4l?-(6K_1%w|9V zx`S>~$A%L*)Ju-4LPF3lY!1GyUu#nC|4)aWo}z0wJYg>6+SGGb)r%d7y3 z6WkvqFer$pLLJZwjR6DXM2n}Rle@e5oYdz)Xg%SEHiACjz1Jq*)i7>CdMx3m-J4#H zYE_Ud+Ret_S>c^=qk&iqjXqSUpL{MTuLOAmodh*|hG;)lV^D}p+C|9q4l&jmlxdOp zWGtPhf`td}oIoigJa@d9e<{x>^#!fE#KOS_Ecsp?3!!BrtX}w6as!CpSAOird+oX% zq066fe{qDGdsiE>`2@equ+u|VO@qA0GSnEpUgQLqV*m;Wc=5w$K^_3$@w>YKm{?$D zKW<1=z&wEgT@ycVPPe?SAafR$mgsG%f}M8)_Sx;y);!Fb?z#!@iBh_AN)sy)2llUh zjzrG2H8nLS8XS$1`K*Z|fL!x`?}fyReq^WyQX@FoJa|hD+0d}j+f&+1K@!F$)xktW zC(6%wwo%Wanv&vGCyFJ(qSQb_F|JXi?1baKog=Fmg-oX!g|kzT;J|Ti_>h@}_=~`4 z0=DP%?0`7qymcJf33Rb?ox2OfB@H!tW6K=Gh-TsHmFCl1T3T+2NP-C+l=g=!Juz`Y zDIsj^MO&T@gp6zQ`Z~5g&dW|&Wr5HPrtla|D^N$UVAr>_9H)mn_wBl_Vsz~tFTlwK zO$YtA8AM_jk3o!$=}L_{3^_DmN*O|3F;SV^!;DW#afj!r=a~<%dca>ft3Lzf!5jS$ z8eV1GX%M$Lj+e(1F2j-15ERUSVhK8~ju=Mdk=Qge0vb}p)?T=Pa(pB@^9PO=>QPgyJu-9swVMG2^ce42!Ug#Q7dbH0Q+{`%(A-eeA~ZIlnFGQ&8*# zf{4+mCpsDr$`e;O=jmd<5%e1})hF&RW?_|O4jk?bbLU?SV9+8W6s8{;zVa}k=xsHmL zrM?VEKJCx!thfNeoL=x7Yn3w6IMo7wV$Bp zWiWP`z*ex1Pp4oY=OUb${k6`7vlVE~896jVn%3R-kS#pmcX&;UO#2ka zyvd%lh zvaY`Ue_PmyAM{-2`zpTJ4TzH8rbieFU}l=bBrH5Q%`A2jgh_tkg`ORYdRH;*9>s+K zL&7ViNv;L|&?}XYP(wi#v}B-Tz|EnvlP#+>I1NG37J?a_7a~N_aB8il>-}u~qyi+a zE+D{8Snzs5FFMh{;^Iok<#OUVi*}0f zR<VDb zfvyd!_`Md*yMUEmliRk;y~-nG#^p2*7nnNH{+I@;u2eo)8dp`pQ|s z8tfK{w(rS1F}SWUz}uKV=#w4h(HwS!e!{o}y5lBTpP^&mIojLfmgzNY3wpM;waq3I zh7y67-qA60V4t0R!>P0z9_R9PK3f?jJq79*fZyKQd2llX49n$xSsfn+W-UX5O8w9v zggyl=trJ$rsF?L=y-FG~GZ%|{T4@^%tN6YGIkG4d*j)7#ru^LQ4B(|`vcNuZ_`!6( z0j)BAQqURa)YuY{LWFxutD=Sj3FZ51f==S6Ozx818X0FYpNglO1DJ1=F9HiL72J*` zNk?{N02V32^|Rmo^?81oHWdJyDEYBuqG@me*i>pG8}$z_WJuES@sR+K0sX$ohe?cA zn<`O(dUTcX-Rr*36>=mcsWx#wsWIsO!cv>?VTA%Kp240feNG{@lax14RcGtd`6`Jp zjG3V`5q3>@6%&=a?v@p6g5frK8K7H1fF(hO9S<=g_p}31k+4r7m6jgNO69A+FNPPj zSh9?$b(l4?e{udL->|`jWpVG{g#Dfof9S{5l!q6t>>(xwx2P$bU)eCkyn_qmjhnKu z)nrynP`dPRUeza_WOYaozmCI`l-R;B9zXz}W4Wok3=BlEcmPO~;C6daW4RU)r@9|H zg+iYupEK}&ig^L;U3Tou;J$K!4xFsyNTJ^V{5Cq^=CkaJL&1C`k0zK=9M;=M*XIE- zqE{=-#Qsp^U}Jf(ePT!krT+6%P5#+uWC{8Bw#UhxDJ>=^uv^z{ubC1peC`a>iR?Gf z=SYvtq70qbb82pCiF$Lh-}(zazYiL2Jat}no=g?2=c%FAid7bPK`Yi&LzKvu{J4)e-fOs>N{+{TUbeig7*|6E_LFtux! z-KWf%B8c1FlU(0B6Ak$MhJp$mAwwqcouO8WX3yiXyf1W6V0G@jt#8R1#{L<-`TF4d|qfi z`8QOH!2uDa`U6AHmC;yVaE`UQAMb_TM;o53aa*%USXfy6go|H^j}NdaqkZ)&p~sS# zlxqVh=Fh1bN{9LCX0j!s63kdL6ncXv5Nij~#S?_Q3&MGd^7X^|+ct+@loPvP z>M$fDJh9UK(lLPLa>Nz*{KJ-%F!1PxOTYa8V*u^bVBwrb51NKp^k9xd;;x-9tQ&gbPrmlKg*LL?T#0;hQoVc~VUE`EF5(j~O+n zw^#ZXu}`!i1P&8}y!e3p9W=x9d-j{Tp`?3+)Akz#u^F}AxAd`ecyv1VU{yei4^8_c2<^ny%I~!=FOI`XW0y#Lem*npk|5BcDn`m$Mx-!oc-3Z9fCiu}lOzGev!V0#a`0_;~ccpX-q#!N$0`zwa(LXxaD~ zgxy+`T&GCALi)_z79~R=xASdkiOz8J3R93J=&*Z=Y>K6NAcG1xEK!*KoRuA>!!s&G*g1ECg;gcShk7K zB?i|c8at!|)bv4EULciR{g?j{>KK-qf^~C|vlv>oD*7K~P=T4qf{4QdE=zb4Vm&(^ zeIo%myBet8HT|~Ms+@TDmx7!!mooI!XhZ`HvsfPnO0QB^r^eZgd*)>Lc zmX3giW^AX35ou$!1tywSG+SYmW!Xx*nTofn*q!XQn>x{l%~QE6!FpbMae0Y^nYre* zLoKvuBJ=I>m5|UP=#;HmhafUo!v3s5k_#^%WR;Vbr&DwclTf(+cz1TO(i>6Gi-~1= z*#I9b`V$KJX4JL1n(-f00F}tlQ_v+{8#(;A`90GX(9e0eu?G1hrTq(qfQ;0fcH!#2 zZDHZ97|?~x2RhLDi;^7+P2enH_@b-l^VwZr+GUmq9^KcD!aBHzpmM|^es#358pa0G zdIqDV1`)rzGO~BDn9_Zs&jhcj=FUHX*dGc_l@OwQ{_@3S^JkFL&KPyw*=pKr%+0jH zjLvyE`~%cQ$`n0!wnYFbCDKL%Z$CD+hIoE#pa<~U69Z)>Myp9uTmNIvo`8WM9#xWCWJMh$@Cv3C(aDG$APUyTghAhXR#RK@R zw9v`bmBr&SDWO3Z)0coeGRUzp1sbCHwDWs=b-4=hyRaG$^k7UeB{tJlW|;<|S+3Q9!^PS>HqnhbFlz`mUryKuWA6E^cOY;s`+sBkqa%g9w+ zK4;17BL--Zsj8}KrD-o#XBbbZA}h&Rktwz?h)KflJq!;k@{oTJX4rXbUCI>LAc3Y5V-MzRrk>Hx#n*m zx`^M{*tol7KIMxMpoYSYiZKmp{PN)P1uy^u4!Pi~PF+PadSx9a05KI%=uCP@!~ zX}F?~8I%Ye6jiP4Jr)+>E}f-S%clJ&*+a*@)vG3|NLFch6Oj;ykds6>lj_#ln6CJo z?BdZ)@OG}}Q-g9tu2L)+Yd;xy)WzJ4%g7!e6k3u4i*W+JpyU4>%Mjk2DN?uL5n>#E z=s~J@ll48Ej>PiABCJkS1*rc1td47fNw(xA%pU6X+ASuVcmv3A*@(5HUV_ae_-?n5lXCDlMM*<&otvSZ?!TiO6DT#J_z)!(W(Q|8M&|!Gc`p^84muj zWeu>6HuiQHb37%?u&f}MI^%g^|tO(*ElHZZ4IZ(1kO+$B=WBF6eqQAOgG% zoQyFk8Q3X{UVpB<-@GxIF)D-`q$kEEvhAaM#qm1ZSUDxOCe26MxYVRXRUyO&VZCqz z&#du5i(d)o^s6&zacm;a1`sEX$0K?h<_^|>SgGLa`MI9Unxi6`gZD0THN>BDkjBYm z{}C!cV;dOAhU1>YxGf3gGQ_ARK#3R9GCMCKKbdAWy!aft$dK&GM=>U*q!!LZh?xln zgEubchf#5gUQ+*k|4150BrrPNU09O~dz3C+cZ!W3nsgfrJ8@S;9>4Rhyi&j^6*`S& ziPR{R{|PvnF#sX5?99CY2@^?!fR&XU9088mIq*JVI;bfT_;NfX1e#J;Goo36zk92x z=>XgUPqpsNpmhSc65mY9hMHeYC%KDAyWnghyu2sWY=)-(Acp=R*vQ~q&KRxNgKD%= z69S~Jw}{tZ091_UIJ!~qXpcL5W>>Mg5nj+Gyzh7^{Ppew_CGP)ZBcO6I?r; zdVzx3&QgzH?((X??6)JxS~m?dHYk))=?BN!&n0ZRa_j~=p)?oR3g}}c}9RrZ~)!EAMvWS7K z#%JIyLl%mD)KtPGeAOsPLWhXG`CYccGwqU6l>pHGC;4DRbRwmgs!RdV6+%7|^5J#} ziH?Xg@oxe-EEWcVwdo;{o*eoK*KWTmln{c^)+vxrLV|*ti#)gYE14PvmVWn6OB5S)Z)@aJ|}Y3y58y~*9I!BYhEcNb*_v7^m!Lh zfuDRC^EeI(z#5^Q)#k$+KuzTDCes;ATZF$EV=^F6wWMh-3Oj53?1>K2x?-ote+IuL zKa#fOjgJ09)YjH!0=VWT>h1OZF>_W_{{hP9Nobv`Y}K4=t%%JU%Wsp_)*wt()$wSA zJDuTAWT@*5z_GZYfNT;Y!9OyrK^nJsV?v1xf@tUx5e z-=~9_HxYh59tYDua;CwHTu+F;3ofbOircR{$#!^S(8Zkt;FgYwDR5lF%zAr!dt$O1 z&7XP?C)1;Dee<$^^nprcRoPSTAffFW9 zuj4NWe4e>VJiW>3oPEpykXSP^6B<2jJ8L2$l6s5ZBDKap1C@ToIiZizyq*Gx*7?*G z@zRfb`Zo~i-w-85DvF4wf>pUtHUtY5T-?U$*wa2J5!oDxpXVh?1gJB~?{V5PK$(Gc zOAwjX?}D(WukWSu}-455#F7xx<5HtpbO7`RU&21Hdfb&0r)&ex%`}j9|`g9YMK)HH)RU z(PD0HZoV*KUR@j<#B2u)$-B!9T*l9J{)dHt0BJtNF-`t?prZqK`*y^UldNcXywlizWjeoePvXX;kx!a!;sR_4T5y4 zbP3X_fP^S1-Q5f-B_Z9Z0@5uYH4=h!NT)$bi%K)!GwyxPcmBGTOXscUy05y^*l79d z(dEil$Lmq#>~Jm^tZ;+*1ctI$1VWsz#yymhc4 z2nWQS)mn1@d-~ha!+yN{c)kQE2-urXMvuVUeR{sc)n{~YC-`$&@uz+cV7HN1)|d^w z5&(>Gy#KOl-9l$*Xa~pb)hLZ>-ebT@PNvE z*1zQ?)9zKf{uyfg2B9>}h1ZR(^`D3+;k+Lp;3YL@R7uQv*oCG~c?i?ZyCA6!{CU1F zT36@emPCX;cAj}wj^5x9i>97K#}N|U4!^aXfzbC9q7oazdW0 zIwTM)H>QlK(a{H$1|~QlG<-~-FBGa()Esh3Y$8r}>PO$vLAPH1XJ+GEqn5uO**NuwWt*7?BlESPP4?;9|^?PC_T`}yo-58P+-cyIfP(?~C zodu*xlXX9e@s>hJ>-aWD-k9gKdeO<7s9XLh++BE`fGeMR8~UP`MIdhv6+Kc&467_{ z@0N^D`id6UQp1LJ>(GW2SFdjQfu{R;db*5^m_Hi7t~kgb*T4HB14SK|6vjeC2ypAA zcu%TL3W{rP%Dg}-lafZ?3zGfzl9JaPKpR~IGKVBk_*T)g`8Cqd`sUwTY2+f#pXjNYhFz(d;X_7y$^MkgTKv51MK z+pB``+UEEyMruQzrA25;I+Trlh>5N_v*trD_HI;`5$UNN`b*i4Fc^Wc0{qd+e|!d} zmUK}s2h*`)<8|i$9)B)BcOQ8=2wQ*3u(XRVIGcn9io^_jEJp*fMtMqpKd7f$S0_0z zQ<-*8@q+B$T;w}^MKcC^i-uNuu81<6%Z26$3SS+9-uB;*Z0ud;)u?WJ>RFMRWZl2& zENhKEGsK6VkUu+(0?=eFI@~BbGn3ZO&kuDm!)I=?{o#*7dItZqQo@qbl=Y`h#vZvxEfu)pn9uAYHLa1bXiu#K{-9@?Xn}8-ovNI>^y~D9a8%+r|Mu`BxuvC<^REfDJ-*qSEal zplZ@QA(*d$*M`K^nz2)IZQ>gC!BI?r8#@>LA8kYljF(2B+MbYJlyJVubrhq7{bNgU z;7zV85h#@W30M-w%F7$$k7s6PM)U1E&c3KRR9N`4WOWE@8@bAOndZj#89xMl=_~v4 zS)&Cl3P6nR1=r4DssG-1QA1*($J!F|RqFEdry5PNL1dKlW|lqMN3w94JzFokljO-z z;G#==C`tuI9T4 z9oRW;uh`vT5JsDw{az{2s;An0BzCI4tRyLEso7TNa+2|g_7^oGuE8*$As2oJ zM@LqeDIeq01zxex&`?a`Ge<5oPY~TVUrfA3eEmZ}mt!%R`2*Z$%eU_8O|I8`ubEnW zr0zs@Z+z9{_I)=xKTijw1>oHxLXJTHPAOe|_GgGHI%M0I3EQv2D>7oAOH{cDbkbexs1l1oc16J z1ABv^odDU$H+TM_ppa@X0hSn=ZYB{Ju*-snCFC?=WiR;D+}av z)w}%n4S9?JK17_*t5Z(Uc5Fq!UjM=SP21`cleQ^0M`g#k$f!>CGfSCZzeIf~L@KX) zH_D5PhsW%uR_5XOVSFlukaGp710IOdWmYIKAyri!0q(nVX<3OoEC;hixk+kjIgmul zoLV5ljp6hRz(LC@A&9e}NB3J=Jop0@)b@wfAL9F1TC z)Lh$M`{{B@aAHr0MgYc1_o)No|E5CNQ_>6|k1~JA zOE>IjNEi9lZ|(}rd1k~OFYFneQ^-nFgDva+tj4h15cd>>D=5t7egaFy#k!FRyI?BaMk(U`hx2fQPBsY+1}K#V?Prig0TI1G`|k9UK^=$6^rY1Es`O~_ z*p&#90Bwt357jq+DuAcKHAm(ADmzZ9Y#9*Z&X zIpSoW;`ymx3{<3pkB=5xLT>jVWWAOWBQiWH7<;f17*zG!hz7gButM-^W9(zLPF_Da zWv_TjU^MjUcN&c)mdpYAjGw%-2g~>N(1Di$d37*xRqMyXk ziT~Z2xZ-qyoen?~m3g_OghW57x+`zG(!JGa#VbfW1-nWPzvfg}M2UB&K3}p>lQSgU zjNWdj-&U@=w)4s}0+1;R_wFH%zMY<&pum1qbCC8~-P-#6zaLEmys)qksHw2oR$oB` zHnwoNm#61*ur(LO)kkx1C(dSCZxZ{^*^GVqd1J|I^WJf{^}&z7r8Mb56yex!gAh2y zsLA>Txt{%K(Db)2Rw}7p^q0GRo9Cg3s~R0Dd9{zEDpxKsLK-?T{!;||vg3iQ!1+*j z9%ay}Ee_p#-8JE_iU;+6W4miTKrmh`kxw2&z*=YyH2YdZ&-+;KnGq~Z$}$Z3*Q zfuiL8oy#cB{2(}R?AsD=^rVw$XlNKMkCLr>*H89pR7^+!aK|D(Oe4D-LgW&DQ{>g| z&JN*!U{Zl%B=P@Dg)l7^x9w?uqecfx*NeWM9-;D`)h)wZlV0ONVTa;{a^KV&0d+ zGBVVBx9V9W8MM&kYRkmbO(LA*sjYH7V>ZWFtCC!^pXXUA5K6m_ZgX*QnST%kW^Ffj zcg)_{BLj?80OQNa#ben<0}Ra~DM|NFUjso2gbYSsi_X&>eQk-NUie@9Zd3$cg`A<(EfeQmb#;QtqOYaI>jRd}&YdBb8D0sb|7PMWg;hW?2APn1 zWY;{5scmcw@4&D|q*66vZ@#FSW^2q5S%jwC$rq)frtWJq1x5VNSrsEt;O~3{#PNT$ z1O*ljnV1++B{ozY{~iACKRRw~h^e6|C!t?QN|}+qF2wQC(bOQlcVzi;0{Z z8_%#ZjEfP5RIJZiuOBe@VEr=I*?T(Mph^1$`g^#>1Bk~H0xSDIzB|r-9{ii=E{g^v z?*AJpDDhfuYZi-1=l0dGmXLm15l!)TnP!Oz^km8CnP{71o)07)agQERj9)VWlF5tn2%=Z5KEHL5~B#R3P zk%Agedeo-y^mMJ23e8V|pZqzVrCOXO%Rg+tV=Qpj8YcGr_v&}XnN>9}o};4Kxw*Tb zBlj!F20aJ#mC!cpT?P3^c))?8VB>T8lNGqMU-|5yH>|eY{h6S|Cx^1=8#9)cF5J72 zJR>K z`N|QG>3z^sO$P?Jza>_4);4i#)r)87#F(KB^Jb@f*z+WsVL+7V`ft=B zNCGoS3$XsjxjMJT7Im+;cPorjusuH|Babz+`UT#>Rcb*iK=Gd^X2jm5;E}Fb`$Gq= zMcUB12l7rnE^5Q;n+%Diku?R6Y3#Eqg2YbdZfu>tzRn`T{_Aw^JMOp1$y+^i8dzgX9!PICxI7jyG<|_KY(Y1V zr{JUeLi9ES?Vaph9x(Gls;*-*fhWI@ygUW;y2<6lR@Ko{^^LDDLLYxPA2ans2+fe{ zc*Zl!RZ(q?0fN*bNRD}vvx7jP;2?Bv_s_<#{>jO{QQlHZO^xo_5~qbP=tpk?#Jk9r zJI^*7W{O}z7?EXwjW`#Feau5smV`t^rw+nq?OTXR$@v=XH`4<}&#`kRw&ATh*dM=k zM`l)ESMvuc-hP!hRxuKA7|xJJX=q~Y^>i*aD7>*0&68#JQlEw;3-%_IowptbH$5T1^7t1^%l8p?RzkJ9j)c&-wbD#ey89Lq+v36!yJKN*Hk#BG&>FFR@pwY5LVq?p6kk2*2&w?LIwy5P z8+vG!XHeBuWOL^WNs`?;de^ zC=k@61OQQe0FceD?%AFkeEq+0NEbV7Y)n_&Ym<~&7})dQzO>8iaB*?rn6mt-^1RxZ zus&~|_Z@C8L-+3wp5ry&?8KRcKV>`;Y_;`HTV!T{cdE*ya>NsSw z&Wf7Zm6ST2+jNi;i=yq8&)6$aG&xcyKS#h1y@4<`zh_X|Tg8WG`5|X&l|qVyYrjEq z@mPwcE8~+B;@O91(V`oP>>`o4_BR@O>vhHoR($)bMf8N{6!mt@XikgA_Q$x%pi{D^lMqE3R)wN8 zkjh-9+dsZG1hWt^vTO+56n6i*^0cqJ<0_ydX5ZEZc0b8|G^jOF>B{-T|3AMI1(v$5 zf@OVS*EzLO0MKTXteLD(fe9Ap`BF?ly8*X7Z+*u+Uq;GfM2M8a*Ts7Mn@mv8r!QYp zIK41?Z-6LJF50a$gQ0{aU!cHxSPNj*Z#&G-&K|sdE0$_|sR!qR)Bjn!f95TUo5797 zn?4bg3`AncN)-V`{UCy)qW2C{1UQ5=5U?*tD96zW|2yF(@hB*$V8yV0NyshdXl8HJ z|F5)kT`U$-1IzE?_v!a-PC?F+5)~dTM3iI{ZUI6~Nm*>0u71-%8ar&drtbcAB@5Zw68jioQlM(#w*f3-Lw%s3oso+hY~SDiYuFv^K;`CNqoOP zDMy&wI^RVg4Lqa@@1`iNp8eSt0^5u5u3fW|jT03Ui`32&J=o@=c5C8Rj4s@{{Zqel zNFjLk_aZEQ@tcFR=N5Iv@X!z;Mu7x8$8*5`*Zog&B}HKsfGbiO8jN0u%?^xPG!e3I z6%{ik#mV@HN-y%+7`pYYSxjHqH8W*l6of5u8gD?U!vGq34*cBQbV;(Dh%$<>o)kiq zDl|uRJ-zw+ft=yr&%dA_Kd9Ju@WoH0v;Clq>F6n=YA2zGxjd4PbzEppk{3cgkEtOg z%O)fwIwbF~^DXyxh%`pytn(!fm+)Ue9qcEcGTvp@eEU%z7d2}UOg(S(=x-AC=dK|{ z1z!S`K*?5o=O(K{fdV4o5WO>3U*q;wK~+`NT$$i=&Y7PW674;XWqZx$j<>RqnG=-m zxnyxX<#r$!ly~|e4kVW5NBrnE{x1~5!9XF|pPK+hFgW^#iLiN`pAhY0e{XG86q|Gt znzkyJ?3VT;qKN%Ue1-NkAhdmMR;I-CsQQVFQIiYf@2$zmYC;TwK#6#8tF9&G^)ruq z$Wr^v4J`O*MY1*I|4&B02kwa1v4znKqhSysR>&hBGy&ua8S5l3z<> z6A25p=U+wjnv47H<&cyAYBe%4LKWP7uFl&p#LEUiarb|NEG{h#uiGvzHXa=_nDK2x zq{zF6X0604cqAli(ut+&QjpucK>|(zm$ljW#;>ubiKT9-6tv5HgM+X25@Saspa7Dc zr%PqQ+f);j5IZq4GdU8+jlNOS8iH?`J7OzG-1F(KD^*pN!ZWAYaP7Rr0TJ&ZK+)Gr zJU8jyk&Qzw38iX#>Km0+-Yq>CA2-UIqt%cuofpdL@99AlYh~leU7frs`}QUOpQw~d zirKCB6=;Vq+S;UxFG2|w`(6s0k@!3-l@;ZQdz>z1^~K1qkm$nWFSe7UPd+U{PbZ)Z zg+NiOY;Y`y@9^UNSff@@4@g@)A1Jh<=Iry7fY(VwcW3sNTRhI#d;^q-A%mIwiC-(r zWOqhi>-8RlG8CWvLc^TQXEU09-udn342QdO2NFp_CZd1b_Lp0R1B_P>l$OSqvyLQd zQQdWf;2WkNi&SO*HkW;P8glUSf@fy&EFNc-`^ct zop-(S81FF#s)A-B<^<~hS`f4DK}VP0zkmMdEmu|vfG5@>7w=%h_p5vgscDf zd4l??d#;$N`U}cFjWWSiPg9USc#VUD6T|_<(sgf$$@T%BVk!>EWrX;jw>+XD!N;v) z=&zGCZoo!UQzFP@Dj6(ckf{#&1=rm}o;0N=9iRy&p|^UFu7W6$d=ea)Z-0kKzT^gE zw7*X01L-HAUpXEz<03ztqODdkf0(X}FF&`!;`$D4P82>}n69L&PPt^mN1P!!AZ~Q$ z2Up?SvTR6p1>nxVxP}5Mf9Bo0R+B(al-;z1>6y?AZv(i{ z7zRB2-C#F3_WyNbx8S{qi0A^>2)osHKcb+3#U>>|&<21ep?P7tpkYfeY#V%ZKEAfv zT5b$1eN|NW-+_nb6bmvXVLvPaI1mo6#V_?>gpQe|&D{S?ceess0IY(Rl?vX>M^qq? zN7YPBNHFlOaySg(qa11s8+45Rlx{+x6?-3c3^&bUQiw!xY4kGT|^k`67HB=Vd_VXik z@&{y-5cLkWlhfa!=QHq+3*U+leCw{|N03oc_68{#;kflDunKwq)b9|%Bqym!qc+%} zmoEoY-b<4NpLS0W`1^PErjySi0Ch)IrOAlT*7wuU;)hh`H6}^IS_PttFeq8~zL{ zxaLcfg|*lbOb>KkToPv47Yz-!Z{8Ei>TNCMyg1mBKA64++h+GsflneFqIErd$WC?% z!|QeQGW{S@9K!EjK0fQG3<*n_|FPhL=fAwyeA!P^laM)NWI_ntrlUuHkiUuVv)&Wg z^UNYESPG9S@Z+;lG5Lc@-Qq7Y3^PC`FnRBUPcQ0(1jhY(&2W%-i@TAKl7)YYy>^=L zExOY%AxpQ>rtP^o!es1` z94j=nNfzLVrWlnj8=s+oJnm0rF8$f!smCX21!iBzgZz2WEcEAYb%we`E#E^27vUk9 zBt!`l2Zkn!A-L+W1eAE--<>cR7LL#s3+umukVjz^Jk%GrFcp|{n+<>{3gO?e_)Z#F zBg{XX$3A8tFJIvbS=jfkHvJ((gqIv%$nX*I_M88pk-hc7Ypd&D0uWq}fkbG1oidFV zJ0l^7&hKC|Tn;=H611mkfy7J!S&YeV^%2m(AlSMW2eIHH2OP`$Gtx_R!Pij#{vQO= z(p@cDu6Fh%T4Ljk|1ME1!X_y>^z-Op_c=egN#=1%yDslFy&9ogYfruyd`baIXdD|@ z--U&$3st4-b8!3i0tAE*)lKfl7tkr1dEqt1~HHsL2P zWR;o!I9v5ZXpEJtf^b%w)$R^d(>7UTN-`UKhwwe4>?k3A#0>C2Yzu*O&i~cURR4w1 zP8LzNI2tVvqN}(S13#V!FpVwUjveSNtL+teNx16w8Vg~HA9jO!PH#VA&EG{ZwY*l_C+T^Bh#7eYyeswN!3S*mNfo#GqsAb=&jMy%v6V=pcfBMrD3=X7U!- zQ6P~ov|42Uqemg5K6NDDZ-VQ_DiBCbkL~BUV`3) z{A|A^{85gGaH%t6lXBD$5*GMFt$*wr`>DDck0tT?`b#STPRA3Lt|o^lPQIN5DE3dx z=h~uAAzf1btQ&}vT@OOO#p77x>k(dTBq(6E@v9T~FXDm2*r}J^JJX|w%(ZB{{VV8~ z5H>!ZIEw9T0XFYyg-(Y01*apuZJ%`6swiaMv7lp?y_K*4o5`SK)m;LOA(Zka%03df z@^>vPdiJGW4TU~kOs6@`X)$X%K1MmZyIYtdpuB_YWCeAO{SFO-lcQxCTDbBy#{OFb z5c%KGoZZkh^g$;F2lTiF*BF+JRq&{3WZgN?%i+d0G$wYNv`xlk>>*ZgFt0K4=bT9x zt06u(#KFI8-oFB1%!#gct&z71TgPn>)9-qD6@L(7*!r_0$K+N=s4fqm1l_gF%uLM^ zr+zGROUo|9rze2&aU>G(V#Uzn?RahIt8?k?peIk5CU0TANj}J|^{KgjayqNO-}~kD zcxYP^A+OG-!%;#iTUps#Lf%fmy%VGk%5VxkkjcYQKN>1Ljx%3>`xYzrmm%B4)aU`5 zyd=TuKs2uyV6F!Yr(n9TOH866gHV{DG0Vdik-z>}*Q{}ic-_-td@KGTSG7}RL zP@XZsI25sD!r`q@m=J2ix8;Ozy;E!(p}uM`;Xh*~T+x{~D0i!_t}bIrJ5QPxQ*0wk zhs>iL5=tt-Aw`iR@wtCRE0g4ZIP=leRPc!YDi94p&7R-)+G99JZNO((h3~aE99oOU zt2vW^C}i+&??GG=mwkVE;PRpu%yOygPyz=Oo$?0Y?VP0ca-)z1w{{GM0WP0&$qgT zae{`eGXEr)8zTg4?;zXni-IFSG>y@a4+{`Py7DTJ%q_cg15S8vuVs{u`g2Q(@lrz< z8B>ajRf*96KyKp^1)iOJ8z1~kOKZ%4Z;lfx`J{_dSK*BFE5wypPQZrBx=)~+OvN1| zK-rCUKW#9B$&62uMD zU-~6^?k~%zs;gTnzYQIM_8!iH6-{{pqF2UBV_)_ed2mW|5X!eAX-2E-gNL2HAhy=)rInRY0d zTUDqxT<^*2-c2koGtD>HcdNt~-om_Wxp+Ms#bNK7gHjVfoGK_}?Nj?B0BY~M*9wm8 zNKx@_LkXfMjL2b9o2tTwDY-`yH}jmeB>#Ays=y z?w2mc#>ExZm)yA!9wDNerzz#rfv4U`NYeYq2@OqRIH51`61g-3r(pS~!b(RlzQ@1Q zJ%beF+6h4>H73-i2E?Z>&>dRNsL&+N*(@>=@<|1KHi}FW$aOy&=~!rw9Q9ATxk_Am zka-9;Pbh+YKT!S=<}HDx@_yWa$gf||EI|t5x0{G}r3Y)G=AMc3XM|PA3-LG6tTU*+(0i4{$`QVM4|o5T zYI7sdA!x+i3W`fq&oDl!cosKMyhtPF!k{D4r$7@UWKnqvfRFhkDQ=Buk!?hAleXqV z!264mjL5zG&UmL{7{r*t9>tYTxqU*w0Rt2MXZy^YTjezjlaDo>zQv0B zJ&Y&22Qd{DeyNO*U);_;B!&{d=?=G>f+4X=cM)SLN&{so;3$|fgiu__Oy*(d;ncHw z1sr*MT-0V^aLK{~0q$UkJ>QTfYM?8H0h;m_D|A0)xO*E9+!DaV?677iMi7S8wlARM zKN8hU46<6^iIsntDC-pDa4picU7vS@svH&sNdBN@{s^D{ybtn}2q6Q)e0sCsKa`_a zqw@*L)^?FNLQVDrMl>lT+fS!7JUH;IqlQEk0OV7caA=GW@;zA5K$#q8Alg0o1 z=u%T!)Z!w1q>JD2`^}=a%uBu}LsUQ#cCmOeQ007{Z{5dHZc32A0R5~MiNTUjjQxZU z9f~~FfYiZFuK)Hei8R!o8?vmO3eAuHy)IxjdzbmQrUuwcbRJl{{Nn4S90dXYhk-8c z1|cj@u=ooG{dB!Ofr>x@mh&sfpM8&hW;B4Ey2$>=;&3SXU^yXPSMC>rhQg*sE8;EB zJr=>e1~ycOE{3;gGiAh7x@KcD$O0rapB(a6qDInZN=0@;wv$wbl? zZpCv{^UPvFq%jT6b}GqsW%j1SURexbB}>Ow=wz#3>*Q}!?uqumTZX}NwvYROD6#-8 z`~M;dV+c5{aZ5s~UdIo+fPm@L$C270-~i|1;p(5?@01c}WsU3n$U?SSF8eeZ;$TP4 zR#zE<0O||g)-=8ViqCe7umVkNNC|+rct$3O1jmVrQR`!OPe%tQYXW-0<9!qeGuOs|m=U9@^f8!^wQv*dvP!ru^@t z>+lLXTalh{rw;OK*N$bMM&Qm|>lRO(qE&1Ak0x3`09R#uX<#K(ku&wK=WsgCp5WF8 z$uKh8i%F>j9^L|Lvps7ycA+q$jn@|b=6L(7wvPpWz%fpnibqY_pFft;V>H@2iSKf` zp78!+#-SV~1^@m?QafIcC* zZ|h+wHuBSBy6m=bN8P|+85AK>gc!MXJ@U%V&Tf_M+`Fc!7Qqe&MsfW+@C=ps9kktr z)v4UH4H#tjO&X9bvdTim_zU=0+q2&HT^<44BTL>r<0HVwr%wz20h1R&VTxV=xl>Um zjgQGuEGe%p`L2Y60pRdQDBmfXCfwS>0=7cz9>Fau>P zMrFf7Lf#8*eh2#Dig^R>z+3#Wk@isCaW0SqHuZ*+)#oJU=&Q>ibNp}xyTxYVpo=UrLPyOXp+oXK+d3XQ!Xf|!Ap8Dc>R^fRJn%_llWG8Zt^3pY@CDrB8?`OCvC&m_3Yo0 zBfXT6CMNjEUbpn6YZa3EUeG&T7-VZ?fsZm=L)T=3gR<@-R3NIe0kOJ@kF`S|aNE&= zMGrnUJY2L~u$&u`e5~Z|QS((=w?fF^kKwCNX&F#hl8Qe0L70CT;Y-}00its9swt(mT^a}_O!3Z3nypSG4|NI)a z1SSjpn5Zwq!$g4W$Fa(_M9oN7xgZVW42^XwNLW9cs-c`;tv*BqB9L)$M8Ld2(1E@R zL~Y;#G+ai;MNX-x;PGLx|Bcl~)o5%~ly-tQv>56qc(Pbn06f%ufay58(mTBk%V~X$ zhfI=HHeKQBErM!~6mz+-qi)^jC6K@Vkh`3CR|0C#hm-O`v3a7O$H(Ui6J@Ebco|`1 z@4delS2rGCnf#4;*3umRSD_5jo$@86d!@1p3P&-_OjK;_3$Tyxraov6EQm=ba$;J7 z=j69hSREI? zG@AX7Zi0~BEid#0@rBQ@xR>tn7$P*WVNEvOqWC;A>m{Y0BXPr z04G}Gz5Q@=zLBBCoAF+%Knt+%jG>!*ZgZt|-}du#@@1J)Iii@25$n1~9n$ zoaM<*9o`6{??4;W`nbB10B=?#uwNc-S^awrSOmD^V#WlRozH$KeevB8SZZV6hN5C) zf&9MON#lOlP}}TFbx6GnUHi(562fl{wa1s| zONa z*_Vi75TOxz?dVBkdrVP*eQMy3?;TLl(1uaP$gcb|dU86#jv0ZI3}cZcq`Uo2`@0&o z4v@uOl8O85(140YCXri%8>>8N0$X7gKU^CcBI6VpQS&c;p;LRcmO|{=tY(uJDTtr= z6M||#tB1BOE+ZvzaUhtm9I(y*FFjMk27F?~N^JKf4smr9I-0$9uZWhBYYG<}_mGDG zEMLjGvkUM_rXSPkKO`WPtA0n0(%4!=gDf_N7S1k;W!*bi**|}~QQdE3_`5}#%h+1| zk6jnf)A2%8cKdrU9l7Uum z^_^)XY|PCe&}Z?ldwCyrB8xe(@$z>Q)%q=E(85)GNBS)K!*zjBIH3%Cx69DhgU;` z(-;?pl+8U4yzLdDLnUP8J^Rx*}+X70V<+s~kgbE~Tru$h<`5S|tySMF@8SCN_{ z%s%xmJ})cNWzuusXM(lWV_FMdmDkp=tVaKOCL)sKJ?eqk&Kit1j- z?<$yYO%!2D!tyR&-H@>9XlDK-`n;)CJS_T2q4F=yOwI=?*iE?9D6#ZgrvxGu*2ql+ zX0pIkK}vJ86k~&C&@uuTA6AB$u8~V~O@Btdc22ubT~B{{&Bb;MW{!fB?7a$DgLEs& zkv?pYTUrq&b_+7cgU`Xhq)!raC?JJT#R$}rA6s`dO6?7d;H1rwCYKYn2K=xnGDz>H zjw4?~V->E_(;E=ZAAjeXM~Wp|b*mX!G+}Yzn_2d=`0jVeoR*XC>x;r15G1gPKro-# z-6n2)6+w(62$FOK0eDWGsRYan@nIDee8qYaL5YeYsL#oq-GZGLua~V=vjA{#;D=*O z0-(j^2%x9?Ry5B4&=Zk&#Aik)2Y&4jAr?(9={|mCr(Vu{LriN9dOl9S2=j4hJhk=? zo^qVINJ4u;{U*(1f>uooQkVPpF}~ zg?XbSWE2}3vcyC5=1cJZcmd|h)L)?AH0UGbHGntF-h>Z^r-0;k9kt_WpqTe`pDN;p zK#P(Qdas-Q_B%PHzaNG)V?WLh#IivSGwo_6)i{G<{6;kplUzszmA~l%mDcL{D3v_# zxK)j|r7!#DZKFHp9+COf-PDFhtnBOvOxvZcw8Iy!j`z1jq~9q1_w z#o2NPYt}$ZGYFUWm`Be^k$^V!>bTCD-|=`+=B~A374|o4eS2TtanOwYEGJV;6Zh$! z)@Zs*MbzV+$H^HPG}oq$EL~aHc-p)7nl{*8M%4xSgz?+vsn{P6<(>}j?6vR9aA0R< z8Xr@Bc=dsf{=Ls&)l|wwbpbA_^2JHU6q$zL+nyh(u(zS|K`=qsS!Nr~PD*unGPHg< za`(K6SLqt$g_2=Ibt522qy2lx#ccno+>gt~4>_S&raQ$|F|CFzU2ypofn6K~B8A!X zr1$I39XuUhGDv+}OK}A2;&dbbrDZ7S6Maw5*^6#0yAJ~2qW36CcImCEtkHty?TvC% z%o#0whozru%hRf4(#bs^BOu0TPuJC>){S}kO;~~1g&fh}yByG# z>*-VIS{n3rMekYXGfHUF*Q&40X!PS;X-?eV($Fj6AHZUAKB;(dG4Q8V2Xb?NR+3%s z2W>X9t_gMH<%qk(>BU_1E!(e?lh5WRwwgsMhh=;*!IGo)5wo;Iz-K&{4qTIXW%1DT z=cA@p$EyC&CO5GG!fvjPqm@~h0k54+$k!yw?9LjM}bgzpTinVRTpufqe#qI5KsKCnTH=SV5h zy@x#me>%gdS)m?#Y~(F&dlMK7H`+e*0ZcILwG3pZ%aeNPTn$y>LVqmXxaIefgQ{{{ z0w5Y4sK4`cv^8_|zRS-o-_yCveQM~_9XB_hzicoTGz~d~^E+tWc;(l!%(ZZ&cS3d$*H`Hr#B> z;jog9EEIN5^4zKU`hhtO?a4%cwHoNHE3z8TD8+*h0|rLBAy#!Wh1D0$?jFamlPg1T4SF8n%do9C@A`zSinGXhYT62rGuNJvLL@u#47hi(k%1b} zM3)TuLPLvTXJ;`r^-BcanBgyoX0d5fW36p5pS!L3_wSYAa0Tf1+?huO=_;8Y*x8k; zxvzf~>B*|X{5Pfd^o;<_uP~0pmDKX77rb;n=MCC-;@URx<2zi+Gao;~0C1B9&FRm< zI7SzoGf_xN3SU=R1&uhpfCWmesU6Y`siGbbo~XB1x~O)6o9>=)AckY|wqE@$33d7Q zd|3EpbN6R#c?0YIYe=4ZL06|6#c~$3g-WD;2~fc>(ZP076#oh(1!UJXe_VC)hn`Kl zM;e8NB19m+A)et@mU9q5m)A5!tHyRcjlndMEipUCi+%qZ0i<~59kMjoy?fZj`(tYz zZs<&d#Dk~~^Q`NV`}_Olot!FOkLj^-y1dCo13hwe_`Lv)zTu*H3qzc9deMCgTN5I_ z1y5QFN8g%O&alWuiO;E?CkN**(`wEs6~WCON|rY=qT%w2?fN7x7Ij+Bv|KKO^S&z9 zM_^;sJlQc%h|ledhR*u8qa}Nc2Zs&rM$eJJL81uUOX3m|?yY1}tOeJ@-lllHefxCr zn1xrE+uQJDVAyP#6Z&CuvntLgL|SyuW^aiBIx~QCS&=|wPy^^-+sV#@3dUu(LftQT zhj*L|)J+6wnHH4eT;I6=a3}J?&QXlTIO0m37&S4tmcm1#PaCxWqD#eo z@!=5>>Xfts_i86I0dSB^(gWY2q@>Be0;aY0$`&vdUQSN`seuD4cd_dpni^06_X<81 z*Irz0b0>B0E2}rZt=?Hl_B|Or38h=_mWD)}bUUHsp`o@b&tK$c_XkN}y5*Pq7Xo5p z=h|IzlEv=`p!s*AyZc9$Xl`8jJm?^xCYPV$G#LSTpiA~6Np}8*i7s~8 z;3b1KHEkcC_sg8DzS`_(r>R69Dt0S*Yo=1=XlVEwr^`RR2XQvv)FR|jWSq|?KqQ=J?Po__T)gt(a++E zodF_%=aFevG?|g_O=@OzZZv?JY}{&(HZ$iG6ci4??q^hApUR>{CSk88UdAmL0evf= zDW3SRQQo_EucqYN*RNsVA^CQx!Z==^_9CwKZd!qbmnBu+;~=uod=2Qapj(!D(St?w z#&C9|&+dF!74=*Euq3vGGD?U%h7s{2a-_&*AXalOx zxqeDbOdAAR0tNPRoL+*@_fR?%9_Kt;bJzcjnf9~bb;Cvn0}dxAH~HHp&5y;*Sg53b z&FbH|d65;d65q#D#MDx0+Tx+kh5{bVurBPPe?KxS4__T&G>gS@EyW&Vg6ARH8-eqVG+-j|;X0#{jW31O{r z<<11@ke9cIZXDfF(lnO5v!T!xv#!NZf{U4?q@+IYh2_DaM`ZGwV6}GTw`Q!ELC~`I zC8hdJ+kvZ5XRlkc=;*V}uYS;;DD9$4PZa{+bkw_hoZYuK*As1j70$2*vm1XMPA)nD zIz7l4YQ6XY0N^H{ZE|I{8OjI)BRTIOdU5)-50YGTy8i}k2v10o#NKIdl^^^w9cRU; zQ#@rTli@vP7f_g#f?E)ZzS^8Br~Ze9ddXD>`xO)({0xSJQpD--xfsz7;vYOfI!la; z`&%A&({U>a8+>9k#O{6ybg)>%v?2-o`IO63Ywb&4H(B8FwbecnNG8wKJJRuga4iiEu+B2&p#X9%D}B|OM@PU3zipDFs+B^>EI zGQr__Ow9rPh(Um7p*2%n=iu63RIQjUG**pZArckDUj^q!_;qMPI0aF&I*D#u@n2Mf zROJlI42BDROJs**$e~Zf`-k=Ixw&RvXUeLZB1IpnN7E$SM5w<&p|6hRI11@g-M+EA zzs?T*kZ{iagDf^w1g~s|qB3J(6z4Hpa*Fmosp^Qn)y2HHlSByC;o%{lNDATD)RaLf z!`(dQeo>JVtY1Uf|;NfacvMldB4vuR%rKN^6fHQWCeae5LkLZ3H{=Qq%|R~4{+2aTz>dN zW6lTZ$v5`*;i#kTz>)fTJ^v+6C}olW`pX6xjh{a()%pXv;>81gb76>9j+;3PT+w=9 zN63K*ugdT0;a#O2^%(iAhocu~Z>gsl+X%|8P|hhm_Fz})OAXuSILB*(Yd*X_3i5av z;$c>O@!YId`ZKxN6!FEXbE|=(1fFzpbt9(lu(aoyX4y>58LXPig#Jj(T~2;07fjte+Yp zSUy;o{n2hAqY4#tE|ns5YuHd&$xu=_h_>!x)l))QVh%qi&T2WcW*<1HIpfP`**&3^ zr~DMRLs_+itP1Dc-}sInDCHi<>!R1c@`n@CWHpp4MGeLy#N#pdM{AJT3!gyp_OiD( zX7#dV4YJg(_fNb#2*jYJK+V=C-y3$CS3Vr5gbYpr>t>1U%W(F(y7V}E;#mYxw zMZa`+=YM@cwfTnI$IJ5a;);H-6Zet=%G+%>JwHExc6r$dM^4`=I7v;o z@dBBL;EJB4cWuK&Jdka$=1L_4oePmRS%;MR=gF1LSDq4SX}O{cL=#{BW;AWkJ$V%H zEZF4#vGv{YShj!I*L}OQWk<+fAtSQKjgT#bvPVW_D|=^VWD6myY}vB2OQ^`sj#5VU zy5IBiJpF#Z_x-$oJ)h^FT=#XI=XV_6<9i&g-%E`euLJ(a7Vtx?gp)Za5To0{f=YOI zG}R*5b1AK?I+^gl@rwS%Lt_MQ-NfW$wnt(Q{si0fB#ru`X53*UYk^}V=1V}zV4(D=zz^(i`&-?zEMIu+!t)^ zGg49U&pjbY-*AIuX!zwF+Q$!j*2C(497{nxaX+e?ICamKTg-|Q#zl4f^8~(Dfi+SB zFgVt|F6uTTdbMQ3@!d(Fvz*4#$*E$A6W0=q%VNF~;@gHgVbWiX4UkJ#Gv8j-G z5_g*|9jv=70%B9WcEa^v39Rv1Sl8 z9p?!42CBYx08@}4H;Qs(jwu=1|6-tz6eM&{ACvNs-h&*GbD++qlq8AphTB$Q0FTe+ z09PrlJ95X^l$%?L7dJiTn=@7Y%U#1>;+0AyM%xA4p93~n*xhbnp`mj?Y2yOhj;pIH z*)+JN2An}a$d%1y73heA*%0m?&s8V27@8aWTLK(ArEK)E4)OQRs8b6&jsvXBd#mgl zT!E(xN6|B?b|4xV2l`hPdgvm$%8L_G4sCAq2M9XU971qq`+8Oxb-=HGHI|mLSJB*Q zl~Sg+b?E}c_A|hQ9D$y_&-1Ju_%kF?Yp5(G0pac!3p$!oPoy6{Fpt={>-j2a_^O?? zoLN8=UrHD1Djp-BNpl~)hqE)k;#2A%AW8Akd-un`x9l@Jta9uyS%U{u%+W9qQwg-g zF0cjD(vdv5x(9W|t218xiilo#V6iJ>vkAx})yGU50xFEEVpc!`zyG%q;S=<2 z)J5Ay1;nfdS&JyH35oGh2o#%lOc2dSSMq}pv}PcQq=Jksndc4>FGV! zxE0U6$Oo?$NjQ`<8%W;w@d|$>!m#_8xgPMYOI&$Jf1%M8R-y%zM0AN>+4yM$+$|QW zn{CXtq=~t)?`?dm2#s|yd_RduyT0QhW;_{zP+|7rdQbJ|tU1u>>z|T7 zEiv>qGMB&W@vK)7p*3?+jTN#97ZM5>IMZZ1TlK+5Z~`5`AChfkPzgTdVRn}u>hV9) z40YUpZI2sRjzqIPtUD`}SR5Q2Y|ZMxJW7yJf6*IwFAF0$Gfu^T1T`aD+iBX$G}uB< z_6*?a5Cnoe%PXdNBc{-oR=duT5mG@Pz0L-uQ#H3Y*NZLiSZ$UpRy(W5A6R;T#`)lyQ-?{mZrYk{ar`*#jjQ6BAwx*p>Go#Fh7Zg zZxZ^S9E-D;z6}Oj{>9b>`>!}7d44?sl>m1^#8p1%PRcWO)Kl4dhpW{o5;c`^{XRY*pZ7E!7X5j4On*Nx;JeFXLc7&hLnKQEzRHC+jZLhkKtC<-pD-*u?au(`*Rof21uvt&02ZYg7jj3oEG^5X?`L^t#TOO~MwI1plCRFlC-(rqZp-IzwztZv1IR zIXqmmIm(!kk}1*Md+gZEzy-y-v{JRZ9LYK%0-vfe6GPwGr2`&{)roguboLLC=y_D& zPCZf?`e`o(ZD+)u|LE&)kGn7(^iVeej3u0#pg%4q3rfO+&wr*EycIb~Zs>L8uH zXLbhrJIijCfPl7M%ycs!fW)g4LQuu1W~ke2ZHZyw!-ls_rQ%`BK;Ed(2go8g#R#s zSrQu1fQD@)leQ?>pz);#N#1r~dz~5lo^D>hRYf!4bQpDv3Ba88`Y)&!`&EZ|Y;}h_ z<@&FfdvxiB z=)G>@VcE_!)w*DFv=~Ss{7_J^g609i3IwW>?Xwhj4$bxuNoZ9R0Ce9TUHXM^R)RJg zvZ!*kZP^`qH>Dd2@%9&W#hMMY7C)+aFOm$~ z<~3-4xoA)c=icIjyegVVISMi|8k#6g>BG>`aB4gRlUWlAEQd<*m^2%>9Ih0aRg4_TKT~{r4;+`PhaUuJbmti`*vvB?0Y=ZR+?*HXn1%?F}^bV zk<2O~w8)wA;qNnMh@zG~GvnaIU$hQ845Dzx6x~h&kFJ=QI$;W5rqBXnOR}7zGm3Z0 zyqU_%%IoDNcS^!yiMSWuDLvGhO`nOOeohkfZ&KBYjaXlI80+KY>xyTR=eHl@Noo1_ z!NJ;NG|<$nT5P$h7Gcrc_WMc%(_pjul`Kfo}Ym37nwR4f2NZt*Ef>EU

qd{+aTtCL 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 LN3}%RD&YSCX6LeN literal 0 HcmV?d00001 diff --git a/apps/desktop/index.html b/apps/desktop/index.html new file mode 100644 index 0000000..466f110 --- /dev/null +++ b/apps/desktop/index.html @@ -0,0 +1,13 @@ + + + + + + + sv-router Starter + + +

+ + + diff --git a/apps/desktop/package.json b/apps/desktop/package.json new file mode 100644 index 0000000..cc9cacf --- /dev/null +++ b/apps/desktop/package.json @@ -0,0 +1,51 @@ +{ + "name": "koins", + "private": true, + "type": "module", + "scripts": { + "start": "vite build && electrobun dev", + "dev": "electrobun dev --watch", + "dev:hmr": "concurrently \"bun run hmr\" \"bun run start\"", + "hmr": "vite --port 5173", + "build:dev": "vite build && electrobun build", + "build:canary": "vite build && electrobun build --env=canary", + "build:stable": "vite build && electrobun build --env=stable" + }, + "dependencies": { + "electrobun": "^1.18.1", + "ethers": "^6.16.0", + "mode-watcher": "^1.1.0", + "sv-router": "latest" + }, + "devDependencies": { + "@fontsource-variable/geist-mono": "^5.2.7", + "@internationalized/date": "^3.12.0", + "@lucide/svelte": "^1.7.0", + "@sveltejs/vite-plugin-svelte": "^7.0.0", + "@tailwindcss/vite": "^4.2.2", + "@tanstack/table-core": "^8.21.3", + "bits-ui": "^2.16.5", + "clsx": "^2.1.1", + "concurrently": "^9.2.1", + "embla-carousel-svelte": "^8.6.0", + "formsnap": "^2.0.1", + "layerchart": "2.0.0-next.48", + "paneforge": "^1.0.2", + "prettier": "^3.8.1", + "prettier-plugin-svelte": "^3.5.1", + "prettier-plugin-tailwindcss": "^0.7.2", + "remixicon-svelte": "^0.0.5", + "shadcn-svelte": "^1.2.7", + "svelte": "^5.55.3", + "svelte-check": "^4.4.6", + "svelte-sonner": "^1.1.0", + "sveltekit-superforms": "^2.30.0", + "tailwind-merge": "^3.5.0", + "tailwind-variants": "^3.2.2", + "tailwindcss": "^4.2.2", + "tw-animate-css": "^1.4.0", + "typescript": "^6.0.2", + "vaul-svelte": "^1.0.0-next.7", + "vite": "^8.0.8" + } +} diff --git a/apps/desktop/src/App.svelte b/apps/desktop/src/App.svelte new file mode 100644 index 0000000..f0087fe --- /dev/null +++ b/apps/desktop/src/App.svelte @@ -0,0 +1,13 @@ + + + + Koins + + + + diff --git a/apps/desktop/src/app.css b/apps/desktop/src/app.css new file mode 100644 index 0000000..e19f266 --- /dev/null +++ b/apps/desktop/src/app.css @@ -0,0 +1,130 @@ +@import "tailwindcss"; +@import "tw-animate-css"; +@import "shadcn-svelte/tailwind.css"; +@import "@fontsource-variable/geist-mono"; + +@custom-variant dark (&:is(.dark *)); + +:root { + --background: oklch(1 0 0); + --foreground: oklch(0.145 0 0); + --card: oklch(1 0 0); + --card-foreground: oklch(0.145 0 0); + --popover: oklch(1 0 0); + --popover-foreground: oklch(0.145 0 0); + --primary: oklch(0.553 0.195 38.402); + --primary-foreground: oklch(0.98 0.016 73.684); + --secondary: oklch(0.967 0.001 286.375); + --secondary-foreground: oklch(0.21 0.006 285.885); + --muted: oklch(0.97 0 0); + --muted-foreground: oklch(0.556 0 0); + --accent: oklch(0.553 0.195 38.402); + --accent-foreground: oklch(0.98 0.016 73.684); + --destructive: oklch(0.577 0.245 27.325); + --border: oklch(0.922 0 0); + --input: oklch(0.922 0 0); + --ring: oklch(0.708 0 0); + --chart-1: oklch(0.837 0.128 66.29); + --chart-2: oklch(0.705 0.213 47.604); + --chart-3: oklch(0.646 0.222 41.116); + --chart-4: oklch(0.553 0.195 38.402); + --chart-5: oklch(0.47 0.157 37.304); + --radius: 0rem; + --sidebar: oklch(0.985 0 0); + --sidebar-foreground: oklch(0.145 0 0); + --sidebar-primary: oklch(0.646 0.222 41.116); + --sidebar-primary-foreground: oklch(0.98 0.016 73.684); + --sidebar-accent: oklch(0.97 0 0); + --sidebar-accent-foreground: oklch(0.205 0 0); + --sidebar-border: oklch(0.922 0 0); + --sidebar-ring: oklch(0.708 0 0); +} + +.dark { + --background: oklch(0.145 0 0); + --foreground: oklch(0.985 0 0); + --card: oklch(0.205 0 0); + --card-foreground: oklch(0.985 0 0); + --popover: oklch(0.205 0 0); + --popover-foreground: oklch(0.985 0 0); + --primary: oklch(0.47 0.157 37.304); + --primary-foreground: oklch(0.98 0.016 73.684); + --secondary: oklch(0.274 0.006 286.033); + --secondary-foreground: oklch(0.985 0 0); + --muted: oklch(0.269 0 0); + --muted-foreground: oklch(0.708 0 0); + --accent: oklch(0.47 0.157 37.304); + --accent-foreground: oklch(0.98 0.016 73.684); + --destructive: oklch(0.704 0.191 22.216); + --border: oklch(1 0 0 / 10%); + --input: oklch(1 0 0 / 15%); + --ring: oklch(0.556 0 0); + --chart-1: oklch(0.837 0.128 66.29); + --chart-2: oklch(0.705 0.213 47.604); + --chart-3: oklch(0.646 0.222 41.116); + --chart-4: oklch(0.553 0.195 38.402); + --chart-5: oklch(0.47 0.157 37.304); + --sidebar: oklch(0.205 0 0); + --sidebar-foreground: oklch(0.985 0 0); + --sidebar-primary: oklch(0.705 0.213 47.604); + --sidebar-primary-foreground: oklch(0.98 0.016 73.684); + --sidebar-accent: oklch(0.269 0 0); + --sidebar-accent-foreground: oklch(0.985 0 0); + --sidebar-border: oklch(1 0 0 / 10%); + --sidebar-ring: oklch(0.556 0 0); +} + +@theme inline { + --font-mono: 'Geist Mono Variable', monospace; + --font-heading: 'Geist Mono Variable', monospace; + --color-sidebar-ring: var(--sidebar-ring); + --color-sidebar-border: var(--sidebar-border); + --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); + --color-sidebar-accent: var(--sidebar-accent); + --color-sidebar-primary-foreground: var(--sidebar-primary-foreground); + --color-sidebar-primary: var(--sidebar-primary); + --color-sidebar-foreground: var(--sidebar-foreground); + --color-sidebar: var(--sidebar); + --color-chart-5: var(--chart-5); + --color-chart-4: var(--chart-4); + --color-chart-3: var(--chart-3); + --color-chart-2: var(--chart-2); + --color-chart-1: var(--chart-1); + --color-ring: var(--ring); + --color-input: var(--input); + --color-border: var(--border); + --color-destructive: var(--destructive); + --color-accent-foreground: var(--accent-foreground); + --color-accent: var(--accent); + --color-muted-foreground: var(--muted-foreground); + --color-muted: var(--muted); + --color-secondary-foreground: var(--secondary-foreground); + --color-secondary: var(--secondary); + --color-primary-foreground: var(--primary-foreground); + --color-primary: var(--primary); + --color-popover-foreground: var(--popover-foreground); + --color-popover: var(--popover); + --color-card-foreground: var(--card-foreground); + --color-card: var(--card); + --color-foreground: var(--foreground); + --color-background: var(--background); + --radius-sm: calc(var(--radius) * 0.6); + --radius-md: calc(var(--radius) * 0.8); + --radius-lg: var(--radius); + --radius-xl: calc(var(--radius) * 1.4); + --radius-2xl: calc(var(--radius) * 1.8); + --radius-3xl: calc(var(--radius) * 2.2); + --radius-4xl: calc(var(--radius) * 2.6); +} + +@layer base { + * { + @apply border-border outline-ring/50; + } + body { + @apply bg-background text-foreground; + } + html { + @apply font-mono; + } +} diff --git a/apps/desktop/src/bun/index.ts b/apps/desktop/src/bun/index.ts new file mode 100644 index 0000000..64f241c --- /dev/null +++ b/apps/desktop/src/bun/index.ts @@ -0,0 +1,111 @@ +import { + ApplicationMenu, + BrowserView, + BrowserWindow, + Updater, + defineElectrobunRPC, + type RPCSchema, +} from 'electrobun/bun' + +const DEV_SERVER_PORT = 5173 +const DEV_SERVER_URL = `http://localhost:${DEV_SERVER_PORT}` + +async function getMainViewUrl(): Promise { + const channel = await Updater.localInfo.channel() + if (channel === 'dev') { + try { + await fetch(DEV_SERVER_URL, { method: 'HEAD' }) + console.log( + `HMR enabled: Using Vite dev server at ${DEV_SERVER_URL}`, + ) + return DEV_SERVER_URL + } catch { + console.log( + "Vite dev server not running. Run 'bun run dev:hmr' for HMR support.", + ) + } + } + return 'views://mainview/index.html' +} + +ApplicationMenu.setApplicationMenu([ + { + label: 'File', + submenu: [{ role: 'quit' }], + }, + { + label: 'Edit', + submenu: [ + { role: 'undo' }, + { role: 'redo' }, + { type: 'divider' }, + { role: 'cut' }, + { role: 'copy' }, + { role: 'paste' }, + { role: 'delete' }, + { type: 'divider' }, + { role: 'selectAll' }, + ], + }, + { + label: 'Window', + submenu: [{ role: 'minimize' }, { role: 'zoom' }], + }, +]) + +const url = await getMainViewUrl() + +type RPC = { + bun: RPCSchema<{ + requests: { + getSecret: { + params: { + service: string + name: string + } + response: Promise + } + setSecret: { + params: { + service: string + name: string + value: string + } + response: Promise + } + } + messages: {} + }> + webview: RPCSchema<{ + requests: {} + messages: {} + }> +} +const rpc = BrowserView.defineRPC({ + maxRequestTime: 10000, + handlers: { + requests: { + getSecret: async ({ name, service }) => { + return await Bun.secrets.get({ name, service }) + }, + setSecret: async ({ name, service, value }) => { + await Bun.secrets.set({ name, service, value }) + }, + }, + messages: {}, + }, +}) + +const win = new BrowserWindow({ + title: 'Koins', + url, + rpc, + frame: { + width: 900, + height: 700, + x: 200, + y: 200, + }, +}) + +console.log('Svelte app started!') diff --git a/apps/desktop/src/lib/components/button.svelte b/apps/desktop/src/lib/components/button.svelte new file mode 100644 index 0000000..d0d3b32 --- /dev/null +++ b/apps/desktop/src/lib/components/button.svelte @@ -0,0 +1,80 @@ + + + + + diff --git a/apps/desktop/src/lib/components/ui/accordion/accordion-content.svelte b/apps/desktop/src/lib/components/ui/accordion/accordion-content.svelte new file mode 100644 index 0000000..24f1f41 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/accordion/accordion-content.svelte @@ -0,0 +1,27 @@ + + + +
+ {@render children?.()} +
+
diff --git a/apps/desktop/src/lib/components/ui/accordion/accordion-item.svelte b/apps/desktop/src/lib/components/ui/accordion/accordion-item.svelte new file mode 100644 index 0000000..9d3919d --- /dev/null +++ b/apps/desktop/src/lib/components/ui/accordion/accordion-item.svelte @@ -0,0 +1,17 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/accordion/accordion-trigger.svelte b/apps/desktop/src/lib/components/ui/accordion/accordion-trigger.svelte new file mode 100644 index 0000000..8a35dc5 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/accordion/accordion-trigger.svelte @@ -0,0 +1,32 @@ + + + + + {@render children?.()} + + + diff --git a/apps/desktop/src/lib/components/ui/accordion/accordion.svelte b/apps/desktop/src/lib/components/ui/accordion/accordion.svelte new file mode 100644 index 0000000..b19a3c5 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/accordion/accordion.svelte @@ -0,0 +1,19 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/accordion/index.ts b/apps/desktop/src/lib/components/ui/accordion/index.ts new file mode 100644 index 0000000..ac343a1 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/accordion/index.ts @@ -0,0 +1,16 @@ +import Root from "./accordion.svelte"; +import Content from "./accordion-content.svelte"; +import Item from "./accordion-item.svelte"; +import Trigger from "./accordion-trigger.svelte"; + +export { + Root, + Content, + Item, + Trigger, + // + Root as Accordion, + Content as AccordionContent, + Item as AccordionItem, + Trigger as AccordionTrigger, +}; diff --git a/apps/desktop/src/lib/components/ui/alert-dialog/alert-dialog-action.svelte b/apps/desktop/src/lib/components/ui/alert-dialog/alert-dialog-action.svelte new file mode 100644 index 0000000..7e63004 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/alert-dialog/alert-dialog-action.svelte @@ -0,0 +1,27 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/alert-dialog/alert-dialog-cancel.svelte b/apps/desktop/src/lib/components/ui/alert-dialog/alert-dialog-cancel.svelte new file mode 100644 index 0000000..a4ce03c --- /dev/null +++ b/apps/desktop/src/lib/components/ui/alert-dialog/alert-dialog-cancel.svelte @@ -0,0 +1,27 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/alert-dialog/alert-dialog-content.svelte b/apps/desktop/src/lib/components/ui/alert-dialog/alert-dialog-content.svelte new file mode 100644 index 0000000..710727d --- /dev/null +++ b/apps/desktop/src/lib/components/ui/alert-dialog/alert-dialog-content.svelte @@ -0,0 +1,32 @@ + + + + + + diff --git a/apps/desktop/src/lib/components/ui/alert-dialog/alert-dialog-description.svelte b/apps/desktop/src/lib/components/ui/alert-dialog/alert-dialog-description.svelte new file mode 100644 index 0000000..7b26f8a --- /dev/null +++ b/apps/desktop/src/lib/components/ui/alert-dialog/alert-dialog-description.svelte @@ -0,0 +1,17 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/alert-dialog/alert-dialog-footer.svelte b/apps/desktop/src/lib/components/ui/alert-dialog/alert-dialog-footer.svelte new file mode 100644 index 0000000..4d133b7 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/alert-dialog/alert-dialog-footer.svelte @@ -0,0 +1,23 @@ + + +
+ {@render children?.()} +
diff --git a/apps/desktop/src/lib/components/ui/alert-dialog/alert-dialog-header.svelte b/apps/desktop/src/lib/components/ui/alert-dialog/alert-dialog-header.svelte new file mode 100644 index 0000000..d6df4d3 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/alert-dialog/alert-dialog-header.svelte @@ -0,0 +1,20 @@ + + +
+ {@render children?.()} +
diff --git a/apps/desktop/src/lib/components/ui/alert-dialog/alert-dialog-media.svelte b/apps/desktop/src/lib/components/ui/alert-dialog/alert-dialog-media.svelte new file mode 100644 index 0000000..4db6d7e --- /dev/null +++ b/apps/desktop/src/lib/components/ui/alert-dialog/alert-dialog-media.svelte @@ -0,0 +1,20 @@ + + +
+ {@render children?.()} +
diff --git a/apps/desktop/src/lib/components/ui/alert-dialog/alert-dialog-overlay.svelte b/apps/desktop/src/lib/components/ui/alert-dialog/alert-dialog-overlay.svelte new file mode 100644 index 0000000..9ffcc85 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/alert-dialog/alert-dialog-overlay.svelte @@ -0,0 +1,17 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/alert-dialog/alert-dialog-portal.svelte b/apps/desktop/src/lib/components/ui/alert-dialog/alert-dialog-portal.svelte new file mode 100644 index 0000000..f0a19a8 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/alert-dialog/alert-dialog-portal.svelte @@ -0,0 +1,7 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/alert-dialog/alert-dialog-title.svelte b/apps/desktop/src/lib/components/ui/alert-dialog/alert-dialog-title.svelte new file mode 100644 index 0000000..8e55d89 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/alert-dialog/alert-dialog-title.svelte @@ -0,0 +1,17 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/alert-dialog/alert-dialog-trigger.svelte b/apps/desktop/src/lib/components/ui/alert-dialog/alert-dialog-trigger.svelte new file mode 100644 index 0000000..b22d1d5 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/alert-dialog/alert-dialog-trigger.svelte @@ -0,0 +1,7 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/alert-dialog/alert-dialog.svelte b/apps/desktop/src/lib/components/ui/alert-dialog/alert-dialog.svelte new file mode 100644 index 0000000..7ea78bb --- /dev/null +++ b/apps/desktop/src/lib/components/ui/alert-dialog/alert-dialog.svelte @@ -0,0 +1,7 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/alert-dialog/index.ts b/apps/desktop/src/lib/components/ui/alert-dialog/index.ts new file mode 100644 index 0000000..ca81c2a --- /dev/null +++ b/apps/desktop/src/lib/components/ui/alert-dialog/index.ts @@ -0,0 +1,40 @@ +import Root from "./alert-dialog.svelte"; +import Portal from "./alert-dialog-portal.svelte"; +import Trigger from "./alert-dialog-trigger.svelte"; +import Title from "./alert-dialog-title.svelte"; +import Action from "./alert-dialog-action.svelte"; +import Cancel from "./alert-dialog-cancel.svelte"; +import Footer from "./alert-dialog-footer.svelte"; +import Header from "./alert-dialog-header.svelte"; +import Overlay from "./alert-dialog-overlay.svelte"; +import Content from "./alert-dialog-content.svelte"; +import Description from "./alert-dialog-description.svelte"; +import Media from "./alert-dialog-media.svelte"; + +export { + Root, + Title, + Action, + Cancel, + Portal, + Footer, + Header, + Trigger, + Overlay, + Content, + Description, + Media, + // + Root as AlertDialog, + Title as AlertDialogTitle, + Action as AlertDialogAction, + Cancel as AlertDialogCancel, + Portal as AlertDialogPortal, + Footer as AlertDialogFooter, + Header as AlertDialogHeader, + Trigger as AlertDialogTrigger, + Overlay as AlertDialogOverlay, + Content as AlertDialogContent, + Description as AlertDialogDescription, + Media as AlertDialogMedia, +}; diff --git a/apps/desktop/src/lib/components/ui/alert/alert-action.svelte b/apps/desktop/src/lib/components/ui/alert/alert-action.svelte new file mode 100644 index 0000000..0f90609 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/alert/alert-action.svelte @@ -0,0 +1,20 @@ + + +
+ {@render children?.()} +
diff --git a/apps/desktop/src/lib/components/ui/alert/alert-description.svelte b/apps/desktop/src/lib/components/ui/alert/alert-description.svelte new file mode 100644 index 0000000..e62a009 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/alert/alert-description.svelte @@ -0,0 +1,23 @@ + + +
+ {@render children?.()} +
diff --git a/apps/desktop/src/lib/components/ui/alert/alert-title.svelte b/apps/desktop/src/lib/components/ui/alert/alert-title.svelte new file mode 100644 index 0000000..7591a87 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/alert/alert-title.svelte @@ -0,0 +1,23 @@ + + +
svg]/alert:col-start-2 [&_a]:hover:text-foreground [&_a]:underline [&_a]:underline-offset-3", + className + )} + {...restProps} +> + {@render children?.()} +
diff --git a/apps/desktop/src/lib/components/ui/alert/alert.svelte b/apps/desktop/src/lib/components/ui/alert/alert.svelte new file mode 100644 index 0000000..b2eecfa --- /dev/null +++ b/apps/desktop/src/lib/components/ui/alert/alert.svelte @@ -0,0 +1,43 @@ + + + + + diff --git a/apps/desktop/src/lib/components/ui/alert/index.ts b/apps/desktop/src/lib/components/ui/alert/index.ts new file mode 100644 index 0000000..071b113 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/alert/index.ts @@ -0,0 +1,17 @@ +import Root from "./alert.svelte"; +import Description from "./alert-description.svelte"; +import Title from "./alert-title.svelte"; +import Action from "./alert-action.svelte"; +export { alertVariants, type AlertVariant } from "./alert.svelte"; + +export { + Root, + Description, + Title, + Action, + // + Root as Alert, + Description as AlertDescription, + Title as AlertTitle, + Action as AlertAction, +}; diff --git a/apps/desktop/src/lib/components/ui/aspect-ratio/aspect-ratio.svelte b/apps/desktop/src/lib/components/ui/aspect-ratio/aspect-ratio.svelte new file mode 100644 index 0000000..815aab0 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/aspect-ratio/aspect-ratio.svelte @@ -0,0 +1,7 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/aspect-ratio/index.ts b/apps/desktop/src/lib/components/ui/aspect-ratio/index.ts new file mode 100644 index 0000000..985c75f --- /dev/null +++ b/apps/desktop/src/lib/components/ui/aspect-ratio/index.ts @@ -0,0 +1,3 @@ +import Root from "./aspect-ratio.svelte"; + +export { Root, Root as AspectRatio }; diff --git a/apps/desktop/src/lib/components/ui/avatar/avatar-badge.svelte b/apps/desktop/src/lib/components/ui/avatar/avatar-badge.svelte new file mode 100644 index 0000000..ca9d9ed --- /dev/null +++ b/apps/desktop/src/lib/components/ui/avatar/avatar-badge.svelte @@ -0,0 +1,26 @@ + + +svg]:hidden", + "group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2", + "group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2", + className + )} + {...restProps} +> + {@render children?.()} + diff --git a/apps/desktop/src/lib/components/ui/avatar/avatar-fallback.svelte b/apps/desktop/src/lib/components/ui/avatar/avatar-fallback.svelte new file mode 100644 index 0000000..63c8b02 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/avatar/avatar-fallback.svelte @@ -0,0 +1,20 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/avatar/avatar-group-count.svelte b/apps/desktop/src/lib/components/ui/avatar/avatar-group-count.svelte new file mode 100644 index 0000000..536c308 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/avatar/avatar-group-count.svelte @@ -0,0 +1,23 @@ + + +
svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3 ring-background relative flex shrink-0 items-center justify-center ring-2", + className + )} + {...restProps} +> + {@render children?.()} +
diff --git a/apps/desktop/src/lib/components/ui/avatar/avatar-group.svelte b/apps/desktop/src/lib/components/ui/avatar/avatar-group.svelte new file mode 100644 index 0000000..78714fc --- /dev/null +++ b/apps/desktop/src/lib/components/ui/avatar/avatar-group.svelte @@ -0,0 +1,23 @@ + + +
+ {@render children?.()} +
diff --git a/apps/desktop/src/lib/components/ui/avatar/avatar-image.svelte b/apps/desktop/src/lib/components/ui/avatar/avatar-image.svelte new file mode 100644 index 0000000..f41cf8f --- /dev/null +++ b/apps/desktop/src/lib/components/ui/avatar/avatar-image.svelte @@ -0,0 +1,17 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/avatar/avatar.svelte b/apps/desktop/src/lib/components/ui/avatar/avatar.svelte new file mode 100644 index 0000000..ea6fde5 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/avatar/avatar.svelte @@ -0,0 +1,26 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/avatar/index.ts b/apps/desktop/src/lib/components/ui/avatar/index.ts new file mode 100644 index 0000000..38ccef8 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/avatar/index.ts @@ -0,0 +1,22 @@ +import Root from "./avatar.svelte"; +import Image from "./avatar-image.svelte"; +import Fallback from "./avatar-fallback.svelte"; +import Badge from "./avatar-badge.svelte"; +import Group from "./avatar-group.svelte"; +import GroupCount from "./avatar-group-count.svelte"; + +export { + Root, + Image, + Fallback, + Badge, + Group, + GroupCount, + // + Root as Avatar, + Image as AvatarImage, + Fallback as AvatarFallback, + Badge as AvatarBadge, + Group as AvatarGroup, + GroupCount as AvatarGroupCount, +}; diff --git a/apps/desktop/src/lib/components/ui/badge/badge.svelte b/apps/desktop/src/lib/components/ui/badge/badge.svelte new file mode 100644 index 0000000..2cfe06f --- /dev/null +++ b/apps/desktop/src/lib/components/ui/badge/badge.svelte @@ -0,0 +1,49 @@ + + + + + + {@render children?.()} + diff --git a/apps/desktop/src/lib/components/ui/badge/index.ts b/apps/desktop/src/lib/components/ui/badge/index.ts new file mode 100644 index 0000000..64e0aa9 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/badge/index.ts @@ -0,0 +1,2 @@ +export { default as Badge } from "./badge.svelte"; +export { badgeVariants, type BadgeVariant } from "./badge.svelte"; diff --git a/apps/desktop/src/lib/components/ui/breadcrumb/breadcrumb-ellipsis.svelte b/apps/desktop/src/lib/components/ui/breadcrumb/breadcrumb-ellipsis.svelte new file mode 100644 index 0000000..17e314a --- /dev/null +++ b/apps/desktop/src/lib/components/ui/breadcrumb/breadcrumb-ellipsis.svelte @@ -0,0 +1,23 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/breadcrumb/breadcrumb-item.svelte b/apps/desktop/src/lib/components/ui/breadcrumb/breadcrumb-item.svelte new file mode 100644 index 0000000..e9c77ea --- /dev/null +++ b/apps/desktop/src/lib/components/ui/breadcrumb/breadcrumb-item.svelte @@ -0,0 +1,20 @@ + + +
  • + {@render children?.()} +
  • diff --git a/apps/desktop/src/lib/components/ui/breadcrumb/breadcrumb-link.svelte b/apps/desktop/src/lib/components/ui/breadcrumb/breadcrumb-link.svelte new file mode 100644 index 0000000..e6bc17d --- /dev/null +++ b/apps/desktop/src/lib/components/ui/breadcrumb/breadcrumb-link.svelte @@ -0,0 +1,31 @@ + + +{#if child} + {@render child({ props: attrs })} +{:else} +
    + {@render children?.()} + +{/if} diff --git a/apps/desktop/src/lib/components/ui/breadcrumb/breadcrumb-list.svelte b/apps/desktop/src/lib/components/ui/breadcrumb/breadcrumb-list.svelte new file mode 100644 index 0000000..44fd50b --- /dev/null +++ b/apps/desktop/src/lib/components/ui/breadcrumb/breadcrumb-list.svelte @@ -0,0 +1,20 @@ + + +
      + {@render children?.()} +
    diff --git a/apps/desktop/src/lib/components/ui/breadcrumb/breadcrumb-page.svelte b/apps/desktop/src/lib/components/ui/breadcrumb/breadcrumb-page.svelte new file mode 100644 index 0000000..5fb6979 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/breadcrumb/breadcrumb-page.svelte @@ -0,0 +1,23 @@ + + + + {@render children?.()} + diff --git a/apps/desktop/src/lib/components/ui/breadcrumb/breadcrumb-separator.svelte b/apps/desktop/src/lib/components/ui/breadcrumb/breadcrumb-separator.svelte new file mode 100644 index 0000000..f6307ec --- /dev/null +++ b/apps/desktop/src/lib/components/ui/breadcrumb/breadcrumb-separator.svelte @@ -0,0 +1,27 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/breadcrumb/breadcrumb.svelte b/apps/desktop/src/lib/components/ui/breadcrumb/breadcrumb.svelte new file mode 100644 index 0000000..29ea3f5 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/breadcrumb/breadcrumb.svelte @@ -0,0 +1,22 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/breadcrumb/index.ts b/apps/desktop/src/lib/components/ui/breadcrumb/index.ts new file mode 100644 index 0000000..dc914ec --- /dev/null +++ b/apps/desktop/src/lib/components/ui/breadcrumb/index.ts @@ -0,0 +1,25 @@ +import Root from "./breadcrumb.svelte"; +import Ellipsis from "./breadcrumb-ellipsis.svelte"; +import Item from "./breadcrumb-item.svelte"; +import Separator from "./breadcrumb-separator.svelte"; +import Link from "./breadcrumb-link.svelte"; +import List from "./breadcrumb-list.svelte"; +import Page from "./breadcrumb-page.svelte"; + +export { + Root, + Ellipsis, + Item, + Separator, + Link, + List, + Page, + // + Root as Breadcrumb, + Ellipsis as BreadcrumbEllipsis, + Item as BreadcrumbItem, + Separator as BreadcrumbSeparator, + Link as BreadcrumbLink, + List as BreadcrumbList, + Page as BreadcrumbPage, +}; diff --git a/apps/desktop/src/lib/components/ui/button-group/button-group-separator.svelte b/apps/desktop/src/lib/components/ui/button-group/button-group-separator.svelte new file mode 100644 index 0000000..a13f023 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/button-group/button-group-separator.svelte @@ -0,0 +1,23 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/button-group/button-group-text.svelte b/apps/desktop/src/lib/components/ui/button-group/button-group-text.svelte new file mode 100644 index 0000000..d5b607f --- /dev/null +++ b/apps/desktop/src/lib/components/ui/button-group/button-group-text.svelte @@ -0,0 +1,28 @@ + + +{#if child} + {@render child({ props: mergedProps })} +{:else} +
    + {@render mergedProps.children?.()} +
    +{/if} diff --git a/apps/desktop/src/lib/components/ui/button-group/button-group.svelte b/apps/desktop/src/lib/components/ui/button-group/button-group.svelte new file mode 100644 index 0000000..6137433 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/button-group/button-group.svelte @@ -0,0 +1,46 @@ + + + + +
    + {@render children?.()} +
    diff --git a/apps/desktop/src/lib/components/ui/button-group/index.ts b/apps/desktop/src/lib/components/ui/button-group/index.ts new file mode 100644 index 0000000..664167f --- /dev/null +++ b/apps/desktop/src/lib/components/ui/button-group/index.ts @@ -0,0 +1,15 @@ +import Root, { buttonGroupVariants, type ButtonGroupOrientation } from "./button-group.svelte"; +import Text from "./button-group-text.svelte"; +import Separator from "./button-group-separator.svelte"; + +export { + Root, + Text, + Separator, + buttonGroupVariants, + type ButtonGroupOrientation, + // + Root as ButtonGroup, + Text as ButtonGroupText, + Separator as ButtonGroupSeparator, +}; diff --git a/apps/desktop/src/lib/components/ui/button/button.svelte b/apps/desktop/src/lib/components/ui/button/button.svelte new file mode 100644 index 0000000..9d3b378 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/button/button.svelte @@ -0,0 +1,89 @@ + + + + +{#if href} + + {@render children?.()} + +{:else} + +{/if} diff --git a/apps/desktop/src/lib/components/ui/button/index.ts b/apps/desktop/src/lib/components/ui/button/index.ts new file mode 100644 index 0000000..5414d9d --- /dev/null +++ b/apps/desktop/src/lib/components/ui/button/index.ts @@ -0,0 +1,17 @@ +import Root, { + type ButtonProps, + type ButtonSize, + type ButtonVariant, + buttonVariants +} from './button.svelte'; + +export { + Root, + type ButtonProps as Props, + // + Root as Button, + buttonVariants, + type ButtonProps, + type ButtonSize, + type ButtonVariant +}; diff --git a/apps/desktop/src/lib/components/ui/calendar/calendar-caption.svelte b/apps/desktop/src/lib/components/ui/calendar/calendar-caption.svelte new file mode 100644 index 0000000..5c93037 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/calendar/calendar-caption.svelte @@ -0,0 +1,76 @@ + + +{#snippet MonthSelect()} + { + if (!placeholder) return; + const v = Number.parseInt(e.currentTarget.value); + const newPlaceholder = placeholder.set({ month: v }); + placeholder = newPlaceholder.subtract({ months: monthIndex }); + }} + /> +{/snippet} + +{#snippet YearSelect()} + +{/snippet} + +{#if captionLayout === "dropdown"} + {@render MonthSelect()} + {@render YearSelect()} +{:else if captionLayout === "dropdown-months"} + {@render MonthSelect()} + {#if placeholder} + {formatYear(placeholder)} + {/if} +{:else if captionLayout === "dropdown-years"} + {#if placeholder} + {formatMonth(placeholder)} + {/if} + {@render YearSelect()} +{:else} + {formatMonth(month)} {formatYear(month)} +{/if} diff --git a/apps/desktop/src/lib/components/ui/calendar/calendar-cell.svelte b/apps/desktop/src/lib/components/ui/calendar/calendar-cell.svelte new file mode 100644 index 0000000..7ceb5e1 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/calendar/calendar-cell.svelte @@ -0,0 +1,19 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/calendar/calendar-day.svelte b/apps/desktop/src/lib/components/ui/calendar/calendar-day.svelte new file mode 100644 index 0000000..edc8c9d --- /dev/null +++ b/apps/desktop/src/lib/components/ui/calendar/calendar-day.svelte @@ -0,0 +1,33 @@ + + +span]:text-xs [&>span]:opacity-70", + className + )} + {...restProps} +/> diff --git a/apps/desktop/src/lib/components/ui/calendar/calendar-grid-body.svelte b/apps/desktop/src/lib/components/ui/calendar/calendar-grid-body.svelte new file mode 100644 index 0000000..8cd86de --- /dev/null +++ b/apps/desktop/src/lib/components/ui/calendar/calendar-grid-body.svelte @@ -0,0 +1,12 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/calendar/calendar-grid-head.svelte b/apps/desktop/src/lib/components/ui/calendar/calendar-grid-head.svelte new file mode 100644 index 0000000..333edc4 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/calendar/calendar-grid-head.svelte @@ -0,0 +1,12 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/calendar/calendar-grid-row.svelte b/apps/desktop/src/lib/components/ui/calendar/calendar-grid-row.svelte new file mode 100644 index 0000000..9032236 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/calendar/calendar-grid-row.svelte @@ -0,0 +1,12 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/calendar/calendar-grid.svelte b/apps/desktop/src/lib/components/ui/calendar/calendar-grid.svelte new file mode 100644 index 0000000..5fbb18f --- /dev/null +++ b/apps/desktop/src/lib/components/ui/calendar/calendar-grid.svelte @@ -0,0 +1,16 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/calendar/calendar-head-cell.svelte b/apps/desktop/src/lib/components/ui/calendar/calendar-head-cell.svelte new file mode 100644 index 0000000..131807e --- /dev/null +++ b/apps/desktop/src/lib/components/ui/calendar/calendar-head-cell.svelte @@ -0,0 +1,19 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/calendar/calendar-header.svelte b/apps/desktop/src/lib/components/ui/calendar/calendar-header.svelte new file mode 100644 index 0000000..c39e955 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/calendar/calendar-header.svelte @@ -0,0 +1,19 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/calendar/calendar-heading.svelte b/apps/desktop/src/lib/components/ui/calendar/calendar-heading.svelte new file mode 100644 index 0000000..a9b9810 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/calendar/calendar-heading.svelte @@ -0,0 +1,16 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/calendar/calendar-month-select.svelte b/apps/desktop/src/lib/components/ui/calendar/calendar-month-select.svelte new file mode 100644 index 0000000..a8f2abb --- /dev/null +++ b/apps/desktop/src/lib/components/ui/calendar/calendar-month-select.svelte @@ -0,0 +1,48 @@ + + + + + {#snippet child({ props, monthItems, selectedMonthItem })} + + + {/snippet} + + diff --git a/apps/desktop/src/lib/components/ui/calendar/calendar-month.svelte b/apps/desktop/src/lib/components/ui/calendar/calendar-month.svelte new file mode 100644 index 0000000..7bdafe7 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/calendar/calendar-month.svelte @@ -0,0 +1,15 @@ + + +
    + {@render children?.()} +
    diff --git a/apps/desktop/src/lib/components/ui/calendar/calendar-months.svelte b/apps/desktop/src/lib/components/ui/calendar/calendar-months.svelte new file mode 100644 index 0000000..f717a9d --- /dev/null +++ b/apps/desktop/src/lib/components/ui/calendar/calendar-months.svelte @@ -0,0 +1,19 @@ + + +
    + {@render children?.()} +
    diff --git a/apps/desktop/src/lib/components/ui/calendar/calendar-nav.svelte b/apps/desktop/src/lib/components/ui/calendar/calendar-nav.svelte new file mode 100644 index 0000000..27f33d7 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/calendar/calendar-nav.svelte @@ -0,0 +1,19 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/calendar/calendar-next-button.svelte b/apps/desktop/src/lib/components/ui/calendar/calendar-next-button.svelte new file mode 100644 index 0000000..0368d85 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/calendar/calendar-next-button.svelte @@ -0,0 +1,36 @@ + + +{#snippet Fallback()} + +{/snippet} + + + {#if children} + {@render children?.()} + {:else} + {@render Fallback()} + {/if} + diff --git a/apps/desktop/src/lib/components/ui/calendar/calendar-prev-button.svelte b/apps/desktop/src/lib/components/ui/calendar/calendar-prev-button.svelte new file mode 100644 index 0000000..1e08d77 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/calendar/calendar-prev-button.svelte @@ -0,0 +1,36 @@ + + +{#snippet Fallback()} + +{/snippet} + + + {#if children} + {@render children?.()} + {:else} + {@render Fallback()} + {/if} + diff --git a/apps/desktop/src/lib/components/ui/calendar/calendar-year-select.svelte b/apps/desktop/src/lib/components/ui/calendar/calendar-year-select.svelte new file mode 100644 index 0000000..bd65651 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/calendar/calendar-year-select.svelte @@ -0,0 +1,47 @@ + + + + + {#snippet child({ props, yearItems, selectedYearItem })} + + + {/snippet} + + diff --git a/apps/desktop/src/lib/components/ui/calendar/calendar.svelte b/apps/desktop/src/lib/components/ui/calendar/calendar.svelte new file mode 100644 index 0000000..b80f67b --- /dev/null +++ b/apps/desktop/src/lib/components/ui/calendar/calendar.svelte @@ -0,0 +1,115 @@ + + + + + {#snippet children({ months, weekdays })} + + + + + + {#each months as month, monthIndex (month)} + + + + + + + + {#each weekdays as weekday, i (i)} + + {weekday.slice(0, 2)} + + {/each} + + + + {#each month.weeks as weekDates (weekDates)} + + {#each weekDates as date (date)} + + {#if day} + {@render day({ + day: date, + outsideMonth: !isEqualMonth(date, month.value), + })} + {:else} + + {/if} + + {/each} + + {/each} + + + + {/each} + + {/snippet} + diff --git a/apps/desktop/src/lib/components/ui/calendar/index.ts b/apps/desktop/src/lib/components/ui/calendar/index.ts new file mode 100644 index 0000000..f3a16d2 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/calendar/index.ts @@ -0,0 +1,40 @@ +import Root from "./calendar.svelte"; +import Cell from "./calendar-cell.svelte"; +import Day from "./calendar-day.svelte"; +import Grid from "./calendar-grid.svelte"; +import Header from "./calendar-header.svelte"; +import Months from "./calendar-months.svelte"; +import GridRow from "./calendar-grid-row.svelte"; +import Heading from "./calendar-heading.svelte"; +import GridBody from "./calendar-grid-body.svelte"; +import GridHead from "./calendar-grid-head.svelte"; +import HeadCell from "./calendar-head-cell.svelte"; +import NextButton from "./calendar-next-button.svelte"; +import PrevButton from "./calendar-prev-button.svelte"; +import MonthSelect from "./calendar-month-select.svelte"; +import YearSelect from "./calendar-year-select.svelte"; +import Month from "./calendar-month.svelte"; +import Nav from "./calendar-nav.svelte"; +import Caption from "./calendar-caption.svelte"; + +export { + Day, + Cell, + Grid, + Header, + Months, + GridRow, + Heading, + GridBody, + GridHead, + HeadCell, + NextButton, + PrevButton, + Nav, + Month, + YearSelect, + MonthSelect, + Caption, + // + Root as Calendar, +}; diff --git a/apps/desktop/src/lib/components/ui/card/card-action.svelte b/apps/desktop/src/lib/components/ui/card/card-action.svelte new file mode 100644 index 0000000..7c48844 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/card/card-action.svelte @@ -0,0 +1,23 @@ + + +
    + {@render children?.()} +
    diff --git a/apps/desktop/src/lib/components/ui/card/card-content.svelte b/apps/desktop/src/lib/components/ui/card/card-content.svelte new file mode 100644 index 0000000..4f60ee3 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/card/card-content.svelte @@ -0,0 +1,20 @@ + + +
    + {@render children?.()} +
    diff --git a/apps/desktop/src/lib/components/ui/card/card-description.svelte b/apps/desktop/src/lib/components/ui/card/card-description.svelte new file mode 100644 index 0000000..8366534 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/card/card-description.svelte @@ -0,0 +1,20 @@ + + +

    + {@render children?.()} +

    diff --git a/apps/desktop/src/lib/components/ui/card/card-footer.svelte b/apps/desktop/src/lib/components/ui/card/card-footer.svelte new file mode 100644 index 0000000..17aa09a --- /dev/null +++ b/apps/desktop/src/lib/components/ui/card/card-footer.svelte @@ -0,0 +1,20 @@ + + +
    + {@render children?.()} +
    diff --git a/apps/desktop/src/lib/components/ui/card/card-header.svelte b/apps/desktop/src/lib/components/ui/card/card-header.svelte new file mode 100644 index 0000000..4ec42c5 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/card/card-header.svelte @@ -0,0 +1,23 @@ + + +
    + {@render children?.()} +
    diff --git a/apps/desktop/src/lib/components/ui/card/card-title.svelte b/apps/desktop/src/lib/components/ui/card/card-title.svelte new file mode 100644 index 0000000..8c862d9 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/card/card-title.svelte @@ -0,0 +1,20 @@ + + +
    + {@render children?.()} +
    diff --git a/apps/desktop/src/lib/components/ui/card/card.svelte b/apps/desktop/src/lib/components/ui/card/card.svelte new file mode 100644 index 0000000..86226bb --- /dev/null +++ b/apps/desktop/src/lib/components/ui/card/card.svelte @@ -0,0 +1,22 @@ + + +
    img:first-child]:pt-0 data-[size=sm]:gap-2 data-[size=sm]:py-3 data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-none *:[img:last-child]:rounded-none group/card flex flex-col", className)} + {...restProps} +> + {@render children?.()} +
    diff --git a/apps/desktop/src/lib/components/ui/card/index.ts b/apps/desktop/src/lib/components/ui/card/index.ts new file mode 100644 index 0000000..4d3fce4 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/card/index.ts @@ -0,0 +1,25 @@ +import Root from "./card.svelte"; +import Content from "./card-content.svelte"; +import Description from "./card-description.svelte"; +import Footer from "./card-footer.svelte"; +import Header from "./card-header.svelte"; +import Title from "./card-title.svelte"; +import Action from "./card-action.svelte"; + +export { + Root, + Content, + Description, + Footer, + Header, + Title, + Action, + // + Root as Card, + Content as CardContent, + Description as CardDescription, + Footer as CardFooter, + Header as CardHeader, + Title as CardTitle, + Action as CardAction, +}; diff --git a/apps/desktop/src/lib/components/ui/carousel/carousel-content.svelte b/apps/desktop/src/lib/components/ui/carousel/carousel-content.svelte new file mode 100644 index 0000000..84c71f8 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/carousel/carousel-content.svelte @@ -0,0 +1,43 @@ + + +
    +
    + {@render children?.()} +
    +
    diff --git a/apps/desktop/src/lib/components/ui/carousel/carousel-item.svelte b/apps/desktop/src/lib/components/ui/carousel/carousel-item.svelte new file mode 100644 index 0000000..ebf1649 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/carousel/carousel-item.svelte @@ -0,0 +1,30 @@ + + +
    + {@render children?.()} +
    diff --git a/apps/desktop/src/lib/components/ui/carousel/carousel-next.svelte b/apps/desktop/src/lib/components/ui/carousel/carousel-next.svelte new file mode 100644 index 0000000..4840386 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/carousel/carousel-next.svelte @@ -0,0 +1,39 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/carousel/carousel-previous.svelte b/apps/desktop/src/lib/components/ui/carousel/carousel-previous.svelte new file mode 100644 index 0000000..1c34aca --- /dev/null +++ b/apps/desktop/src/lib/components/ui/carousel/carousel-previous.svelte @@ -0,0 +1,39 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/carousel/carousel.svelte b/apps/desktop/src/lib/components/ui/carousel/carousel.svelte new file mode 100644 index 0000000..b3933b8 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/carousel/carousel.svelte @@ -0,0 +1,94 @@ + + +
    + {@render children?.()} +
    diff --git a/apps/desktop/src/lib/components/ui/carousel/context.ts b/apps/desktop/src/lib/components/ui/carousel/context.ts new file mode 100644 index 0000000..a5fd74f --- /dev/null +++ b/apps/desktop/src/lib/components/ui/carousel/context.ts @@ -0,0 +1,58 @@ +import type { WithElementRef } from "$lib/utils.js"; +import type { + EmblaCarouselSvelteType, + default as emblaCarouselSvelte, +} from "embla-carousel-svelte"; +import { getContext, hasContext, setContext } from "svelte"; +import type { HTMLAttributes } from "svelte/elements"; + +export type CarouselAPI = + NonNullable["on:emblaInit"]> extends ( + evt: CustomEvent + ) => void + ? CarouselAPI + : never; + +type EmblaCarouselConfig = NonNullable[1]>; + +export type CarouselOptions = EmblaCarouselConfig["options"]; +export type CarouselPlugins = EmblaCarouselConfig["plugins"]; + +//// + +export type CarouselProps = { + opts?: CarouselOptions; + plugins?: CarouselPlugins; + setApi?: (api: CarouselAPI | undefined) => void; + orientation?: "horizontal" | "vertical"; +} & WithElementRef>; + +const EMBLA_CAROUSEL_CONTEXT = Symbol("EMBLA_CAROUSEL_CONTEXT"); + +export type EmblaContext = { + api: CarouselAPI | undefined; + orientation: "horizontal" | "vertical"; + scrollNext: () => void; + scrollPrev: () => void; + canScrollNext: boolean; + canScrollPrev: boolean; + handleKeyDown: (e: KeyboardEvent) => void; + options: CarouselOptions; + plugins: CarouselPlugins; + onInit: (e: CustomEvent) => void; + scrollTo: (index: number, jump?: boolean) => void; + scrollSnaps: number[]; + selectedIndex: number; +}; + +export function setEmblaContext(config: EmblaContext): EmblaContext { + setContext(EMBLA_CAROUSEL_CONTEXT, config); + return config; +} + +export function getEmblaContext(name = "This component") { + if (!hasContext(EMBLA_CAROUSEL_CONTEXT)) { + throw new Error(`${name} must be used within a component`); + } + return getContext>(EMBLA_CAROUSEL_CONTEXT); +} diff --git a/apps/desktop/src/lib/components/ui/carousel/index.ts b/apps/desktop/src/lib/components/ui/carousel/index.ts new file mode 100644 index 0000000..957fc74 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/carousel/index.ts @@ -0,0 +1,19 @@ +import Root from "./carousel.svelte"; +import Content from "./carousel-content.svelte"; +import Item from "./carousel-item.svelte"; +import Previous from "./carousel-previous.svelte"; +import Next from "./carousel-next.svelte"; + +export { + Root, + Content, + Item, + Previous, + Next, + // + Root as Carousel, + Content as CarouselContent, + Item as CarouselItem, + Previous as CarouselPrevious, + Next as CarouselNext, +}; diff --git a/apps/desktop/src/lib/components/ui/chart/chart-container.svelte b/apps/desktop/src/lib/components/ui/chart/chart-container.svelte new file mode 100644 index 0000000..1eb8e39 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/chart/chart-container.svelte @@ -0,0 +1,80 @@ + + +
    + + {@render children?.()} +
    diff --git a/apps/desktop/src/lib/components/ui/chart/chart-style.svelte b/apps/desktop/src/lib/components/ui/chart/chart-style.svelte new file mode 100644 index 0000000..ea1b3b2 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/chart/chart-style.svelte @@ -0,0 +1,37 @@ + + +{#if themeContents} + {#key id} + + {themeContents} + + {/key} +{/if} diff --git a/apps/desktop/src/lib/components/ui/chart/chart-tooltip.svelte b/apps/desktop/src/lib/components/ui/chart/chart-tooltip.svelte new file mode 100644 index 0000000..e0da9ca --- /dev/null +++ b/apps/desktop/src/lib/components/ui/chart/chart-tooltip.svelte @@ -0,0 +1,184 @@ + + +{#snippet TooltipLabel()} + {#if formattedLabel} +
    + {#if typeof formattedLabel === "function"} + {@render formattedLabel()} + {:else} + {formattedLabel} + {/if} +
    + {/if} +{/snippet} + + +
    + {#if !nestLabel} + {@render TooltipLabel()} + {/if} +
    + {#each visibleSeries as item, i (item.key + i)} + {@const key = `${nameKey || item.key || item.label || "value"}`} + {@const itemConfig = getPayloadConfigFromPayload( + chart.config, + item, + key, + chartCtx.tooltip.data + )} + {@const indicatorColor = color || item.config?.color || item.color} +
    svg]:text-muted-foreground flex w-full flex-wrap items-stretch gap-2 [&>svg]:size-2.5", + indicator === "dot" && "items-center" + )} + > + {#if formatter && item.value !== undefined && item.label} + {@render formatter({ + value: item.value, + name: item.label, + item, + index: i, + payload: visibleSeries, + })} + {:else} + {#if itemConfig?.icon} + + {:else if !hideIndicator} +
    + {/if} +
    +
    + {#if nestLabel} + {@render TooltipLabel()} + {/if} + + {itemConfig?.label || item.label} + +
    + {#if item.value !== undefined} + + {item.value.toLocaleString()} + + {/if} +
    + {/if} +
    + {/each} +
    +
    +
    diff --git a/apps/desktop/src/lib/components/ui/chart/chart-utils.ts b/apps/desktop/src/lib/components/ui/chart/chart-utils.ts new file mode 100644 index 0000000..a289e35 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/chart/chart-utils.ts @@ -0,0 +1,68 @@ +import type { Tooltip } from "layerchart"; +import { getContext, setContext, type Component, type Snippet } from "svelte"; + +export const THEMES = { light: "", dark: ".dark" } as const; + +export type ChartConfig = { + [k in string]: { + label?: string; + icon?: Component; + } & ( + | { color?: string; theme?: never } + | { color?: never; theme: Record } + ); +}; + +export type ExtractSnippetParams = T extends Snippet<[infer P]> ? P : never; + +export type TooltipPayload = Tooltip.TooltipSeries; + +// Helper to extract item config from a payload. +export function getPayloadConfigFromPayload( + config: ChartConfig, + payload: TooltipPayload, + key: string, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + data?: Record | null +) { + if (typeof payload !== "object" || payload === null) return undefined; + + const payloadConfig = + "config" in payload && typeof payload.config === "object" && payload.config !== null + ? payload.config + : undefined; + + let configLabelKey: string = key; + + if (payload.key === key) { + configLabelKey = payload.key; + } else if (payload.label === key) { + configLabelKey = payload.label; + } else if (key in payload && typeof payload[key as keyof typeof payload] === "string") { + configLabelKey = payload[key as keyof typeof payload] as string; + } else if ( + payloadConfig !== undefined && + key in payloadConfig && + typeof payloadConfig[key as keyof typeof payloadConfig] === "string" + ) { + configLabelKey = payloadConfig[key as keyof typeof payloadConfig] as string; + } else if (data != null && key in data && typeof data[key] === "string") { + configLabelKey = data[key] as string; + } + + return configLabelKey in config ? config[configLabelKey] : config[key as keyof typeof config]; +} + +type ChartContextValue = { + config: ChartConfig; +}; + +const chartContextKey = Symbol("chart-context"); + +export function setChartContext(value: ChartContextValue) { + return setContext(chartContextKey, value); +} + +export function useChart() { + return getContext(chartContextKey); +} diff --git a/apps/desktop/src/lib/components/ui/chart/index.ts b/apps/desktop/src/lib/components/ui/chart/index.ts new file mode 100644 index 0000000..f22375e --- /dev/null +++ b/apps/desktop/src/lib/components/ui/chart/index.ts @@ -0,0 +1,6 @@ +import ChartContainer from "./chart-container.svelte"; +import ChartTooltip from "./chart-tooltip.svelte"; + +export { getPayloadConfigFromPayload, type ChartConfig } from "./chart-utils.js"; + +export { ChartContainer, ChartTooltip, ChartContainer as Container, ChartTooltip as Tooltip }; diff --git a/apps/desktop/src/lib/components/ui/checkbox/checkbox.svelte b/apps/desktop/src/lib/components/ui/checkbox/checkbox.svelte new file mode 100644 index 0000000..7ed665d --- /dev/null +++ b/apps/desktop/src/lib/components/ui/checkbox/checkbox.svelte @@ -0,0 +1,39 @@ + + + + {#snippet children({ checked, indeterminate })} +
    + {#if checked} + + {:else if indeterminate} + + {/if} +
    + {/snippet} +
    diff --git a/apps/desktop/src/lib/components/ui/checkbox/index.ts b/apps/desktop/src/lib/components/ui/checkbox/index.ts new file mode 100644 index 0000000..6d92d94 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/checkbox/index.ts @@ -0,0 +1,6 @@ +import Root from "./checkbox.svelte"; +export { + Root, + // + Root as Checkbox, +}; diff --git a/apps/desktop/src/lib/components/ui/collapsible/collapsible-content.svelte b/apps/desktop/src/lib/components/ui/collapsible/collapsible-content.svelte new file mode 100644 index 0000000..bdabb55 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/collapsible/collapsible-content.svelte @@ -0,0 +1,7 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/collapsible/collapsible-trigger.svelte b/apps/desktop/src/lib/components/ui/collapsible/collapsible-trigger.svelte new file mode 100644 index 0000000..ece7ad6 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/collapsible/collapsible-trigger.svelte @@ -0,0 +1,7 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/collapsible/collapsible.svelte b/apps/desktop/src/lib/components/ui/collapsible/collapsible.svelte new file mode 100644 index 0000000..39cdd4e --- /dev/null +++ b/apps/desktop/src/lib/components/ui/collapsible/collapsible.svelte @@ -0,0 +1,11 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/collapsible/index.ts b/apps/desktop/src/lib/components/ui/collapsible/index.ts new file mode 100644 index 0000000..169b479 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/collapsible/index.ts @@ -0,0 +1,13 @@ +import Root from "./collapsible.svelte"; +import Trigger from "./collapsible-trigger.svelte"; +import Content from "./collapsible-content.svelte"; + +export { + Root, + Content, + Trigger, + // + Root as Collapsible, + Content as CollapsibleContent, + Trigger as CollapsibleTrigger, +}; diff --git a/apps/desktop/src/lib/components/ui/command/command-dialog.svelte b/apps/desktop/src/lib/components/ui/command/command-dialog.svelte new file mode 100644 index 0000000..024c76c --- /dev/null +++ b/apps/desktop/src/lib/components/ui/command/command-dialog.svelte @@ -0,0 +1,42 @@ + + + + + {title} + {description} + + + + + diff --git a/apps/desktop/src/lib/components/ui/command/command-empty.svelte b/apps/desktop/src/lib/components/ui/command/command-empty.svelte new file mode 100644 index 0000000..4cfd990 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/command/command-empty.svelte @@ -0,0 +1,17 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/command/command-group.svelte b/apps/desktop/src/lib/components/ui/command/command-group.svelte new file mode 100644 index 0000000..0712eee --- /dev/null +++ b/apps/desktop/src/lib/components/ui/command/command-group.svelte @@ -0,0 +1,32 @@ + + + + {#if heading} + + {heading} + + {/if} + + diff --git a/apps/desktop/src/lib/components/ui/command/command-input.svelte b/apps/desktop/src/lib/components/ui/command/command-input.svelte new file mode 100644 index 0000000..1c15468 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/command/command-input.svelte @@ -0,0 +1,34 @@ + + +
    + + + {#snippet child({ props })} + + {/snippet} + + + + + +
    diff --git a/apps/desktop/src/lib/components/ui/command/command-item.svelte b/apps/desktop/src/lib/components/ui/command/command-item.svelte new file mode 100644 index 0000000..128ceb3 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/command/command-item.svelte @@ -0,0 +1,25 @@ + + + + {@render children?.()} + + diff --git a/apps/desktop/src/lib/components/ui/command/command-link-item.svelte b/apps/desktop/src/lib/components/ui/command/command-link-item.svelte new file mode 100644 index 0000000..ada6d2c --- /dev/null +++ b/apps/desktop/src/lib/components/ui/command/command-link-item.svelte @@ -0,0 +1,20 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/command/command-list.svelte b/apps/desktop/src/lib/components/ui/command/command-list.svelte new file mode 100644 index 0000000..e97747f --- /dev/null +++ b/apps/desktop/src/lib/components/ui/command/command-list.svelte @@ -0,0 +1,17 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/command/command-loading.svelte b/apps/desktop/src/lib/components/ui/command/command-loading.svelte new file mode 100644 index 0000000..19dd298 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/command/command-loading.svelte @@ -0,0 +1,7 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/command/command-separator.svelte b/apps/desktop/src/lib/components/ui/command/command-separator.svelte new file mode 100644 index 0000000..35c4c95 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/command/command-separator.svelte @@ -0,0 +1,17 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/command/command-shortcut.svelte b/apps/desktop/src/lib/components/ui/command/command-shortcut.svelte new file mode 100644 index 0000000..5322e6a --- /dev/null +++ b/apps/desktop/src/lib/components/ui/command/command-shortcut.svelte @@ -0,0 +1,20 @@ + + + + {@render children?.()} + diff --git a/apps/desktop/src/lib/components/ui/command/command.svelte b/apps/desktop/src/lib/components/ui/command/command.svelte new file mode 100644 index 0000000..74a415b --- /dev/null +++ b/apps/desktop/src/lib/components/ui/command/command.svelte @@ -0,0 +1,25 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/command/index.ts b/apps/desktop/src/lib/components/ui/command/index.ts new file mode 100644 index 0000000..5435fbe --- /dev/null +++ b/apps/desktop/src/lib/components/ui/command/index.ts @@ -0,0 +1,37 @@ +import Root from "./command.svelte"; +import Loading from "./command-loading.svelte"; +import Dialog from "./command-dialog.svelte"; +import Empty from "./command-empty.svelte"; +import Group from "./command-group.svelte"; +import Item from "./command-item.svelte"; +import Input from "./command-input.svelte"; +import List from "./command-list.svelte"; +import Separator from "./command-separator.svelte"; +import Shortcut from "./command-shortcut.svelte"; +import LinkItem from "./command-link-item.svelte"; + +export { + Root, + Dialog, + Empty, + Group, + Item, + LinkItem, + Input, + List, + Separator, + Shortcut, + Loading, + // + Root as Command, + Dialog as CommandDialog, + Empty as CommandEmpty, + Group as CommandGroup, + Item as CommandItem, + LinkItem as CommandLinkItem, + Input as CommandInput, + List as CommandList, + Separator as CommandSeparator, + Shortcut as CommandShortcut, + Loading as CommandLoading, +}; diff --git a/apps/desktop/src/lib/components/ui/context-menu/context-menu-checkbox-item.svelte b/apps/desktop/src/lib/components/ui/context-menu/context-menu-checkbox-item.svelte new file mode 100644 index 0000000..71972e2 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/context-menu/context-menu-checkbox-item.svelte @@ -0,0 +1,41 @@ + + + + {#snippet children({ checked })} + + {#if checked} + + {/if} + + {@render childrenProp?.()} + {/snippet} + diff --git a/apps/desktop/src/lib/components/ui/context-menu/context-menu-content.svelte b/apps/desktop/src/lib/components/ui/context-menu/context-menu-content.svelte new file mode 100644 index 0000000..fb34a60 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/context-menu/context-menu-content.svelte @@ -0,0 +1,28 @@ + + + + + diff --git a/apps/desktop/src/lib/components/ui/context-menu/context-menu-group-heading.svelte b/apps/desktop/src/lib/components/ui/context-menu/context-menu-group-heading.svelte new file mode 100644 index 0000000..0c0f459 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/context-menu/context-menu-group-heading.svelte @@ -0,0 +1,21 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/context-menu/context-menu-group.svelte b/apps/desktop/src/lib/components/ui/context-menu/context-menu-group.svelte new file mode 100644 index 0000000..c7c1e06 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/context-menu/context-menu-group.svelte @@ -0,0 +1,7 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/context-menu/context-menu-item.svelte b/apps/desktop/src/lib/components/ui/context-menu/context-menu-item.svelte new file mode 100644 index 0000000..d1601b6 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/context-menu/context-menu-item.svelte @@ -0,0 +1,27 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/context-menu/context-menu-label.svelte b/apps/desktop/src/lib/components/ui/context-menu/context-menu-label.svelte new file mode 100644 index 0000000..4b3b1fe --- /dev/null +++ b/apps/desktop/src/lib/components/ui/context-menu/context-menu-label.svelte @@ -0,0 +1,24 @@ + + +
    + {@render children?.()} +
    diff --git a/apps/desktop/src/lib/components/ui/context-menu/context-menu-portal.svelte b/apps/desktop/src/lib/components/ui/context-menu/context-menu-portal.svelte new file mode 100644 index 0000000..96b1e3e --- /dev/null +++ b/apps/desktop/src/lib/components/ui/context-menu/context-menu-portal.svelte @@ -0,0 +1,7 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/context-menu/context-menu-radio-group.svelte b/apps/desktop/src/lib/components/ui/context-menu/context-menu-radio-group.svelte new file mode 100644 index 0000000..964cb55 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/context-menu/context-menu-radio-group.svelte @@ -0,0 +1,16 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/context-menu/context-menu-radio-item.svelte b/apps/desktop/src/lib/components/ui/context-menu/context-menu-radio-item.svelte new file mode 100644 index 0000000..509d30d --- /dev/null +++ b/apps/desktop/src/lib/components/ui/context-menu/context-menu-radio-item.svelte @@ -0,0 +1,35 @@ + + + + {#snippet children({ checked })} + + {#if checked} + + {/if} + + {@render childrenProp?.({ checked })} + {/snippet} + diff --git a/apps/desktop/src/lib/components/ui/context-menu/context-menu-separator.svelte b/apps/desktop/src/lib/components/ui/context-menu/context-menu-separator.svelte new file mode 100644 index 0000000..e675367 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/context-menu/context-menu-separator.svelte @@ -0,0 +1,17 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/context-menu/context-menu-shortcut.svelte b/apps/desktop/src/lib/components/ui/context-menu/context-menu-shortcut.svelte new file mode 100644 index 0000000..3305abc --- /dev/null +++ b/apps/desktop/src/lib/components/ui/context-menu/context-menu-shortcut.svelte @@ -0,0 +1,20 @@ + + + + {@render children?.()} + diff --git a/apps/desktop/src/lib/components/ui/context-menu/context-menu-sub-content.svelte b/apps/desktop/src/lib/components/ui/context-menu/context-menu-sub-content.svelte new file mode 100644 index 0000000..fd85c70 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/context-menu/context-menu-sub-content.svelte @@ -0,0 +1,17 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/context-menu/context-menu-sub-trigger.svelte b/apps/desktop/src/lib/components/ui/context-menu/context-menu-sub-trigger.svelte new file mode 100644 index 0000000..a14cb6c --- /dev/null +++ b/apps/desktop/src/lib/components/ui/context-menu/context-menu-sub-trigger.svelte @@ -0,0 +1,29 @@ + + + + {@render children?.()} + + diff --git a/apps/desktop/src/lib/components/ui/context-menu/context-menu-sub.svelte b/apps/desktop/src/lib/components/ui/context-menu/context-menu-sub.svelte new file mode 100644 index 0000000..a03827b --- /dev/null +++ b/apps/desktop/src/lib/components/ui/context-menu/context-menu-sub.svelte @@ -0,0 +1,7 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/context-menu/context-menu-trigger.svelte b/apps/desktop/src/lib/components/ui/context-menu/context-menu-trigger.svelte new file mode 100644 index 0000000..f6a1542 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/context-menu/context-menu-trigger.svelte @@ -0,0 +1,17 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/context-menu/context-menu.svelte b/apps/desktop/src/lib/components/ui/context-menu/context-menu.svelte new file mode 100644 index 0000000..cfaefb3 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/context-menu/context-menu.svelte @@ -0,0 +1,7 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/context-menu/index.ts b/apps/desktop/src/lib/components/ui/context-menu/index.ts new file mode 100644 index 0000000..cbeaee1 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/context-menu/index.ts @@ -0,0 +1,52 @@ +import Root from "./context-menu.svelte"; +import Sub from "./context-menu-sub.svelte"; +import Portal from "./context-menu-portal.svelte"; +import Trigger from "./context-menu-trigger.svelte"; +import Group from "./context-menu-group.svelte"; +import RadioGroup from "./context-menu-radio-group.svelte"; +import Item from "./context-menu-item.svelte"; +import GroupHeading from "./context-menu-group-heading.svelte"; +import Content from "./context-menu-content.svelte"; +import Shortcut from "./context-menu-shortcut.svelte"; +import RadioItem from "./context-menu-radio-item.svelte"; +import Separator from "./context-menu-separator.svelte"; +import SubContent from "./context-menu-sub-content.svelte"; +import SubTrigger from "./context-menu-sub-trigger.svelte"; +import CheckboxItem from "./context-menu-checkbox-item.svelte"; +import Label from "./context-menu-label.svelte"; + +export { + Root, + Sub, + Portal, + Item, + GroupHeading, + Label, + Group, + Trigger, + Content, + Shortcut, + Separator, + RadioItem, + SubContent, + SubTrigger, + RadioGroup, + CheckboxItem, + // + Root as ContextMenu, + Sub as ContextMenuSub, + Portal as ContextMenuPortal, + Item as ContextMenuItem, + GroupHeading as ContextMenuGroupHeading, + Group as ContextMenuGroup, + Content as ContextMenuContent, + Trigger as ContextMenuTrigger, + Shortcut as ContextMenuShortcut, + RadioItem as ContextMenuRadioItem, + Separator as ContextMenuSeparator, + RadioGroup as ContextMenuRadioGroup, + SubContent as ContextMenuSubContent, + SubTrigger as ContextMenuSubTrigger, + CheckboxItem as ContextMenuCheckboxItem, + Label as ContextMenuLabel, +}; diff --git a/apps/desktop/src/lib/components/ui/copy-button/copy-button.svelte b/apps/desktop/src/lib/components/ui/copy-button/copy-button.svelte new file mode 100644 index 0000000..1ba0141 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/copy-button/copy-button.svelte @@ -0,0 +1,95 @@ + + + + + diff --git a/apps/desktop/src/lib/components/ui/copy-button/index.ts b/apps/desktop/src/lib/components/ui/copy-button/index.ts new file mode 100644 index 0000000..37158fa --- /dev/null +++ b/apps/desktop/src/lib/components/ui/copy-button/index.ts @@ -0,0 +1,3 @@ +import CopyButton from './copy-button.svelte'; + +export { CopyButton }; diff --git a/apps/desktop/src/lib/components/ui/data-table/data-table.svelte.ts b/apps/desktop/src/lib/components/ui/data-table/data-table.svelte.ts new file mode 100644 index 0000000..f3c30a7 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/data-table/data-table.svelte.ts @@ -0,0 +1,142 @@ +import { + type RowData, + type TableOptions, + type TableOptionsResolved, + type TableState, + type Updater, + createTable, +} from "@tanstack/table-core"; + +/** + * Creates a reactive TanStack table object for Svelte. + * @param options Table options to create the table with. + * @returns A reactive table object. + * @example + * ```svelte + * + * + * + * + * {#each table.getHeaderGroups() as headerGroup} + * + * {#each headerGroup.headers as header} + * + * {/each} + * + * {/each} + * + * + *
    + * + *
    + * ``` + */ +export function createSvelteTable(options: TableOptions) { + const resolvedOptions: TableOptionsResolved = mergeObjects( + { + state: {}, + onStateChange() {}, + renderFallbackValue: null, + mergeOptions: ( + defaultOptions: TableOptions, + options: Partial> + ) => { + return mergeObjects(defaultOptions, options); + }, + }, + options + ); + + const table = createTable(resolvedOptions); + let state = $state(table.initialState); + + function updateOptions() { + table.setOptions(() => { + return mergeObjects(resolvedOptions, options, { + state: mergeObjects(state, options.state || {}), + + onStateChange: (updater: Updater) => { + if (updater instanceof Function) state = updater(state); + else state = mergeObjects(state, updater); + + options.onStateChange?.(updater); + }, + }); + }); + } + + updateOptions(); + + $effect.pre(() => { + updateOptions(); + }); + + return table; +} + +type MaybeThunk = T | (() => T | null | undefined); +type Intersection = (T extends [infer H, ...infer R] + ? H & Intersection + : unknown) & {}; + +/** + * Lazily merges several objects (or thunks) while preserving + * getter semantics from every source. + * + * Proxy-based to avoid known WebKit recursion issue. + */ +// eslint-disable-next-line @typescript-eslint/no-explicit-any +export function mergeObjects[]>( + ...sources: Sources +): Intersection<{ [K in keyof Sources]: Sources[K] }> { + const resolve = (src: MaybeThunk): T | undefined => + typeof src === "function" ? (src() ?? undefined) : src; + + const findSourceWithKey = (key: PropertyKey) => { + for (let i = sources.length - 1; i >= 0; i--) { + const obj = resolve(sources[i]); + if (obj && key in obj) return obj; + } + return undefined; + }; + + return new Proxy(Object.create(null), { + get(_, key) { + const src = findSourceWithKey(key); + + return src?.[key as never]; + }, + + has(_, key) { + return !!findSourceWithKey(key); + }, + + ownKeys(): (string | symbol)[] { + // eslint-disable-next-line svelte/prefer-svelte-reactivity + const all = new Set(); + for (const s of sources) { + const obj = resolve(s); + if (obj) { + for (const k of Reflect.ownKeys(obj) as (string | symbol)[]) { + all.add(k); + } + } + } + return [...all]; + }, + + getOwnPropertyDescriptor(_, key) { + const src = findSourceWithKey(key); + if (!src) return undefined; + return { + configurable: true, + enumerable: true, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + value: (src as any)[key], + writable: true, + }; + }, + }) as Intersection<{ [K in keyof Sources]: Sources[K] }>; +} diff --git a/apps/desktop/src/lib/components/ui/data-table/flex-render.svelte b/apps/desktop/src/lib/components/ui/data-table/flex-render.svelte new file mode 100644 index 0000000..ac82a58 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/data-table/flex-render.svelte @@ -0,0 +1,40 @@ + + +{#if typeof content === "string"} + {content} +{:else if content instanceof Function} + + + {@const result = content(context as any)} + {#if result instanceof RenderComponentConfig} + {@const { component: Component, props } = result} + + {:else if result instanceof RenderSnippetConfig} + {@const { snippet, params } = result} + {@render snippet({ ...params, attach })} + {:else} + {result} + {/if} +{/if} diff --git a/apps/desktop/src/lib/components/ui/data-table/index.ts b/apps/desktop/src/lib/components/ui/data-table/index.ts new file mode 100644 index 0000000..5f4e77e --- /dev/null +++ b/apps/desktop/src/lib/components/ui/data-table/index.ts @@ -0,0 +1,3 @@ +export { default as FlexRender } from "./flex-render.svelte"; +export { renderComponent, renderSnippet } from "./render-helpers.js"; +export { createSvelteTable } from "./data-table.svelte.js"; diff --git a/apps/desktop/src/lib/components/ui/data-table/render-helpers.ts b/apps/desktop/src/lib/components/ui/data-table/render-helpers.ts new file mode 100644 index 0000000..fa036d6 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/data-table/render-helpers.ts @@ -0,0 +1,111 @@ +import type { Component, ComponentProps, Snippet } from "svelte"; + +/** + * A helper class to make it easy to identify Svelte components in + * `columnDef.cell` and `columnDef.header` properties. + * + * > NOTE: This class should only be used internally by the adapter. If you're + * reading this and you don't know what this is for, you probably don't need it. + * + * @example + * ```svelte + * {@const result = content(context as any)} + * {#if result instanceof RenderComponentConfig} + * {@const { component: Component, props } = result} + * + * {/if} + * ``` + */ +export class RenderComponentConfig { + component: TComponent; + props: ComponentProps | Record; + constructor( + component: TComponent, + props: ComponentProps | Record = {} + ) { + this.component = component; + this.props = props; + } +} + +/** + * A helper class to make it easy to identify Svelte Snippets in `columnDef.cell` and `columnDef.header` properties. + * + * > NOTE: This class should only be used internally by the adapter. If you're + * reading this and you don't know what this is for, you probably don't need it. + * + * @example + * ```svelte + * {@const result = content(context as any)} + * {#if result instanceof RenderSnippetConfig} + * {@const { snippet, params } = result} + * {@render snippet(params)} + * {/if} + * ``` + */ +export class RenderSnippetConfig { + snippet: Snippet<[TProps]>; + params: TProps; + constructor(snippet: Snippet<[TProps]>, params: TProps) { + this.snippet = snippet; + this.params = params; + } +} + +/** + * A helper function to help create cells from Svelte components through ColumnDef's `cell` and `header` properties. + * + * This is only to be used with Svelte Components - use `renderSnippet` for Svelte Snippets. + * + * @param component A Svelte component + * @param props The props to pass to `component` + * @returns A `RenderComponentConfig` object that helps svelte-table know how to render the header/cell component. + * @example + * ```ts + * // +page.svelte + * const defaultColumns = [ + * columnHelper.accessor('name', { + * header: header => renderComponent(SortHeader, { label: 'Name', header }), + * }), + * columnHelper.accessor('state', { + * header: header => renderComponent(SortHeader, { label: 'State', header }), + * }), + * ] + * ``` + * @see {@link https://tanstack.com/table/latest/docs/guide/column-defs} + */ +export function renderComponent< + // eslint-disable-next-line @typescript-eslint/no-explicit-any + T extends Component, + Props extends ComponentProps, +>(component: T, props: Props = {} as Props) { + return new RenderComponentConfig(component, props); +} + +/** + * A helper function to help create cells from Svelte Snippets through ColumnDef's `cell` and `header` properties. + * + * The snippet must only take one parameter. + * + * This is only to be used with Snippets - use `renderComponent` for Svelte Components. + * + * @param snippet + * @param params + * @returns - A `RenderSnippetConfig` object that helps svelte-table know how to render the header/cell snippet. + * @example + * ```ts + * // +page.svelte + * const defaultColumns = [ + * columnHelper.accessor('name', { + * cell: cell => renderSnippet(nameSnippet, { name: cell.row.name }), + * }), + * columnHelper.accessor('state', { + * cell: cell => renderSnippet(stateSnippet, { state: cell.row.state }), + * }), + * ] + * ``` + * @see {@link https://tanstack.com/table/latest/docs/guide/column-defs} + */ +export function renderSnippet(snippet: Snippet<[TProps]>, params: TProps = {} as TProps) { + return new RenderSnippetConfig(snippet, params); +} diff --git a/apps/desktop/src/lib/components/ui/dialog/dialog-close.svelte b/apps/desktop/src/lib/components/ui/dialog/dialog-close.svelte new file mode 100644 index 0000000..de68f2f --- /dev/null +++ b/apps/desktop/src/lib/components/ui/dialog/dialog-close.svelte @@ -0,0 +1,11 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/dialog/dialog-content.svelte b/apps/desktop/src/lib/components/ui/dialog/dialog-content.svelte new file mode 100644 index 0000000..a66b54c --- /dev/null +++ b/apps/desktop/src/lib/components/ui/dialog/dialog-content.svelte @@ -0,0 +1,48 @@ + + + + + + {@render children?.()} + {#if showCloseButton} + + {#snippet child({ props })} + + {/snippet} + + {/if} + + diff --git a/apps/desktop/src/lib/components/ui/dialog/dialog-description.svelte b/apps/desktop/src/lib/components/ui/dialog/dialog-description.svelte new file mode 100644 index 0000000..bd220ac --- /dev/null +++ b/apps/desktop/src/lib/components/ui/dialog/dialog-description.svelte @@ -0,0 +1,17 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/dialog/dialog-footer.svelte b/apps/desktop/src/lib/components/ui/dialog/dialog-footer.svelte new file mode 100644 index 0000000..2f54b2c --- /dev/null +++ b/apps/desktop/src/lib/components/ui/dialog/dialog-footer.svelte @@ -0,0 +1,32 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/dialog/dialog-header.svelte b/apps/desktop/src/lib/components/ui/dialog/dialog-header.svelte new file mode 100644 index 0000000..8164f0f --- /dev/null +++ b/apps/desktop/src/lib/components/ui/dialog/dialog-header.svelte @@ -0,0 +1,20 @@ + + +
    + {@render children?.()} +
    diff --git a/apps/desktop/src/lib/components/ui/dialog/dialog-overlay.svelte b/apps/desktop/src/lib/components/ui/dialog/dialog-overlay.svelte new file mode 100644 index 0000000..19f69f0 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/dialog/dialog-overlay.svelte @@ -0,0 +1,17 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/dialog/dialog-portal.svelte b/apps/desktop/src/lib/components/ui/dialog/dialog-portal.svelte new file mode 100644 index 0000000..ccfa79c --- /dev/null +++ b/apps/desktop/src/lib/components/ui/dialog/dialog-portal.svelte @@ -0,0 +1,7 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/dialog/dialog-title.svelte b/apps/desktop/src/lib/components/ui/dialog/dialog-title.svelte new file mode 100644 index 0000000..a17f573 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/dialog/dialog-title.svelte @@ -0,0 +1,17 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/dialog/dialog-trigger.svelte b/apps/desktop/src/lib/components/ui/dialog/dialog-trigger.svelte new file mode 100644 index 0000000..589ee0c --- /dev/null +++ b/apps/desktop/src/lib/components/ui/dialog/dialog-trigger.svelte @@ -0,0 +1,11 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/dialog/dialog.svelte b/apps/desktop/src/lib/components/ui/dialog/dialog.svelte new file mode 100644 index 0000000..211672c --- /dev/null +++ b/apps/desktop/src/lib/components/ui/dialog/dialog.svelte @@ -0,0 +1,7 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/dialog/index.ts b/apps/desktop/src/lib/components/ui/dialog/index.ts new file mode 100644 index 0000000..076cef5 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/dialog/index.ts @@ -0,0 +1,34 @@ +import Root from "./dialog.svelte"; +import Portal from "./dialog-portal.svelte"; +import Title from "./dialog-title.svelte"; +import Footer from "./dialog-footer.svelte"; +import Header from "./dialog-header.svelte"; +import Overlay from "./dialog-overlay.svelte"; +import Content from "./dialog-content.svelte"; +import Description from "./dialog-description.svelte"; +import Trigger from "./dialog-trigger.svelte"; +import Close from "./dialog-close.svelte"; + +export { + Root, + Title, + Portal, + Footer, + Header, + Trigger, + Overlay, + Content, + Description, + Close, + // + Root as Dialog, + Title as DialogTitle, + Portal as DialogPortal, + Footer as DialogFooter, + Header as DialogHeader, + Trigger as DialogTrigger, + Overlay as DialogOverlay, + Content as DialogContent, + Description as DialogDescription, + Close as DialogClose, +}; diff --git a/apps/desktop/src/lib/components/ui/drawer/drawer-close.svelte b/apps/desktop/src/lib/components/ui/drawer/drawer-close.svelte new file mode 100644 index 0000000..95c2479 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/drawer/drawer-close.svelte @@ -0,0 +1,7 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/drawer/drawer-content.svelte b/apps/desktop/src/lib/components/ui/drawer/drawer-content.svelte new file mode 100644 index 0000000..c389dd6 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/drawer/drawer-content.svelte @@ -0,0 +1,33 @@ + + + + + + + {@render children?.()} + + diff --git a/apps/desktop/src/lib/components/ui/drawer/drawer-description.svelte b/apps/desktop/src/lib/components/ui/drawer/drawer-description.svelte new file mode 100644 index 0000000..ded26d2 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/drawer/drawer-description.svelte @@ -0,0 +1,17 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/drawer/drawer-footer.svelte b/apps/desktop/src/lib/components/ui/drawer/drawer-footer.svelte new file mode 100644 index 0000000..56a1fc6 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/drawer/drawer-footer.svelte @@ -0,0 +1,20 @@ + + +
    + {@render children?.()} +
    diff --git a/apps/desktop/src/lib/components/ui/drawer/drawer-header.svelte b/apps/desktop/src/lib/components/ui/drawer/drawer-header.svelte new file mode 100644 index 0000000..861f956 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/drawer/drawer-header.svelte @@ -0,0 +1,20 @@ + + +
    + {@render children?.()} +
    diff --git a/apps/desktop/src/lib/components/ui/drawer/drawer-nested.svelte b/apps/desktop/src/lib/components/ui/drawer/drawer-nested.svelte new file mode 100644 index 0000000..834af94 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/drawer/drawer-nested.svelte @@ -0,0 +1,12 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/drawer/drawer-overlay.svelte b/apps/desktop/src/lib/components/ui/drawer/drawer-overlay.svelte new file mode 100644 index 0000000..84df1e8 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/drawer/drawer-overlay.svelte @@ -0,0 +1,17 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/drawer/drawer-portal.svelte b/apps/desktop/src/lib/components/ui/drawer/drawer-portal.svelte new file mode 100644 index 0000000..5a0dd74 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/drawer/drawer-portal.svelte @@ -0,0 +1,7 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/drawer/drawer-title.svelte b/apps/desktop/src/lib/components/ui/drawer/drawer-title.svelte new file mode 100644 index 0000000..48c450e --- /dev/null +++ b/apps/desktop/src/lib/components/ui/drawer/drawer-title.svelte @@ -0,0 +1,17 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/drawer/drawer-trigger.svelte b/apps/desktop/src/lib/components/ui/drawer/drawer-trigger.svelte new file mode 100644 index 0000000..f1877d8 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/drawer/drawer-trigger.svelte @@ -0,0 +1,7 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/drawer/drawer.svelte b/apps/desktop/src/lib/components/ui/drawer/drawer.svelte new file mode 100644 index 0000000..0cb57ff --- /dev/null +++ b/apps/desktop/src/lib/components/ui/drawer/drawer.svelte @@ -0,0 +1,12 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/drawer/index.ts b/apps/desktop/src/lib/components/ui/drawer/index.ts new file mode 100644 index 0000000..1656cac --- /dev/null +++ b/apps/desktop/src/lib/components/ui/drawer/index.ts @@ -0,0 +1,38 @@ +import Root from "./drawer.svelte"; +import Content from "./drawer-content.svelte"; +import Description from "./drawer-description.svelte"; +import Overlay from "./drawer-overlay.svelte"; +import Footer from "./drawer-footer.svelte"; +import Header from "./drawer-header.svelte"; +import Title from "./drawer-title.svelte"; +import NestedRoot from "./drawer-nested.svelte"; +import Close from "./drawer-close.svelte"; +import Trigger from "./drawer-trigger.svelte"; +import Portal from "./drawer-portal.svelte"; + +export { + Root, + NestedRoot, + Content, + Description, + Overlay, + Footer, + Header, + Title, + Trigger, + Portal, + Close, + + // + Root as Drawer, + NestedRoot as DrawerNestedRoot, + Content as DrawerContent, + Description as DrawerDescription, + Overlay as DrawerOverlay, + Footer as DrawerFooter, + Header as DrawerHeader, + Title as DrawerTitle, + Trigger as DrawerTrigger, + Portal as DrawerPortal, + Close as DrawerClose, +}; diff --git a/apps/desktop/src/lib/components/ui/dropdown-menu/dropdown-menu-checkbox-group.svelte b/apps/desktop/src/lib/components/ui/dropdown-menu/dropdown-menu-checkbox-group.svelte new file mode 100644 index 0000000..e0e1971 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/dropdown-menu/dropdown-menu-checkbox-group.svelte @@ -0,0 +1,16 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte b/apps/desktop/src/lib/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte new file mode 100644 index 0000000..e56a65a --- /dev/null +++ b/apps/desktop/src/lib/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte @@ -0,0 +1,44 @@ + + + + {#snippet children({ checked, indeterminate })} + + {#if indeterminate} + + {:else if checked} + + {/if} + + {@render childrenProp?.()} + {/snippet} + diff --git a/apps/desktop/src/lib/components/ui/dropdown-menu/dropdown-menu-content.svelte b/apps/desktop/src/lib/components/ui/dropdown-menu/dropdown-menu-content.svelte new file mode 100644 index 0000000..1442e33 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/dropdown-menu/dropdown-menu-content.svelte @@ -0,0 +1,31 @@ + + + + + diff --git a/apps/desktop/src/lib/components/ui/dropdown-menu/dropdown-menu-group-heading.svelte b/apps/desktop/src/lib/components/ui/dropdown-menu/dropdown-menu-group-heading.svelte new file mode 100644 index 0000000..433540f --- /dev/null +++ b/apps/desktop/src/lib/components/ui/dropdown-menu/dropdown-menu-group-heading.svelte @@ -0,0 +1,22 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/dropdown-menu/dropdown-menu-group.svelte b/apps/desktop/src/lib/components/ui/dropdown-menu/dropdown-menu-group.svelte new file mode 100644 index 0000000..aca1f7b --- /dev/null +++ b/apps/desktop/src/lib/components/ui/dropdown-menu/dropdown-menu-group.svelte @@ -0,0 +1,7 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/dropdown-menu/dropdown-menu-item.svelte b/apps/desktop/src/lib/components/ui/dropdown-menu/dropdown-menu-item.svelte new file mode 100644 index 0000000..20713df --- /dev/null +++ b/apps/desktop/src/lib/components/ui/dropdown-menu/dropdown-menu-item.svelte @@ -0,0 +1,27 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/dropdown-menu/dropdown-menu-label.svelte b/apps/desktop/src/lib/components/ui/dropdown-menu/dropdown-menu-label.svelte new file mode 100644 index 0000000..05a9e64 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/dropdown-menu/dropdown-menu-label.svelte @@ -0,0 +1,24 @@ + + +
    + {@render children?.()} +
    diff --git a/apps/desktop/src/lib/components/ui/dropdown-menu/dropdown-menu-portal.svelte b/apps/desktop/src/lib/components/ui/dropdown-menu/dropdown-menu-portal.svelte new file mode 100644 index 0000000..274cfef --- /dev/null +++ b/apps/desktop/src/lib/components/ui/dropdown-menu/dropdown-menu-portal.svelte @@ -0,0 +1,7 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/dropdown-menu/dropdown-menu-radio-group.svelte b/apps/desktop/src/lib/components/ui/dropdown-menu/dropdown-menu-radio-group.svelte new file mode 100644 index 0000000..189aef4 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/dropdown-menu/dropdown-menu-radio-group.svelte @@ -0,0 +1,16 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte b/apps/desktop/src/lib/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte new file mode 100644 index 0000000..e04807a --- /dev/null +++ b/apps/desktop/src/lib/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte @@ -0,0 +1,34 @@ + + + + {#snippet children({ checked })} + + {#if checked} + + {/if} + + {@render childrenProp?.({ checked })} + {/snippet} + diff --git a/apps/desktop/src/lib/components/ui/dropdown-menu/dropdown-menu-separator.svelte b/apps/desktop/src/lib/components/ui/dropdown-menu/dropdown-menu-separator.svelte new file mode 100644 index 0000000..45f82af --- /dev/null +++ b/apps/desktop/src/lib/components/ui/dropdown-menu/dropdown-menu-separator.svelte @@ -0,0 +1,17 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/dropdown-menu/dropdown-menu-shortcut.svelte b/apps/desktop/src/lib/components/ui/dropdown-menu/dropdown-menu-shortcut.svelte new file mode 100644 index 0000000..ed7cc85 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/dropdown-menu/dropdown-menu-shortcut.svelte @@ -0,0 +1,20 @@ + + + + {@render children?.()} + diff --git a/apps/desktop/src/lib/components/ui/dropdown-menu/dropdown-menu-sub-content.svelte b/apps/desktop/src/lib/components/ui/dropdown-menu/dropdown-menu-sub-content.svelte new file mode 100644 index 0000000..8de5cf1 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/dropdown-menu/dropdown-menu-sub-content.svelte @@ -0,0 +1,17 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte b/apps/desktop/src/lib/components/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte new file mode 100644 index 0000000..16f09e3 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte @@ -0,0 +1,29 @@ + + + + {@render children?.()} + + diff --git a/apps/desktop/src/lib/components/ui/dropdown-menu/dropdown-menu-sub.svelte b/apps/desktop/src/lib/components/ui/dropdown-menu/dropdown-menu-sub.svelte new file mode 100644 index 0000000..f044581 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/dropdown-menu/dropdown-menu-sub.svelte @@ -0,0 +1,7 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/dropdown-menu/dropdown-menu-trigger.svelte b/apps/desktop/src/lib/components/ui/dropdown-menu/dropdown-menu-trigger.svelte new file mode 100644 index 0000000..cb05344 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/dropdown-menu/dropdown-menu-trigger.svelte @@ -0,0 +1,7 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/dropdown-menu/dropdown-menu.svelte b/apps/desktop/src/lib/components/ui/dropdown-menu/dropdown-menu.svelte new file mode 100644 index 0000000..cb4bc62 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/dropdown-menu/dropdown-menu.svelte @@ -0,0 +1,7 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/dropdown-menu/index.ts b/apps/desktop/src/lib/components/ui/dropdown-menu/index.ts new file mode 100644 index 0000000..7850c6a --- /dev/null +++ b/apps/desktop/src/lib/components/ui/dropdown-menu/index.ts @@ -0,0 +1,54 @@ +import Root from "./dropdown-menu.svelte"; +import Sub from "./dropdown-menu-sub.svelte"; +import CheckboxGroup from "./dropdown-menu-checkbox-group.svelte"; +import CheckboxItem from "./dropdown-menu-checkbox-item.svelte"; +import Content from "./dropdown-menu-content.svelte"; +import Group from "./dropdown-menu-group.svelte"; +import Item from "./dropdown-menu-item.svelte"; +import Label from "./dropdown-menu-label.svelte"; +import RadioGroup from "./dropdown-menu-radio-group.svelte"; +import RadioItem from "./dropdown-menu-radio-item.svelte"; +import Separator from "./dropdown-menu-separator.svelte"; +import Shortcut from "./dropdown-menu-shortcut.svelte"; +import Trigger from "./dropdown-menu-trigger.svelte"; +import SubContent from "./dropdown-menu-sub-content.svelte"; +import SubTrigger from "./dropdown-menu-sub-trigger.svelte"; +import GroupHeading from "./dropdown-menu-group-heading.svelte"; +import Portal from "./dropdown-menu-portal.svelte"; + +export { + CheckboxGroup, + CheckboxItem, + Content, + Portal, + Root as DropdownMenu, + CheckboxGroup as DropdownMenuCheckboxGroup, + CheckboxItem as DropdownMenuCheckboxItem, + Content as DropdownMenuContent, + Portal as DropdownMenuPortal, + Group as DropdownMenuGroup, + Item as DropdownMenuItem, + Label as DropdownMenuLabel, + RadioGroup as DropdownMenuRadioGroup, + RadioItem as DropdownMenuRadioItem, + Separator as DropdownMenuSeparator, + Shortcut as DropdownMenuShortcut, + Sub as DropdownMenuSub, + SubContent as DropdownMenuSubContent, + SubTrigger as DropdownMenuSubTrigger, + Trigger as DropdownMenuTrigger, + GroupHeading as DropdownMenuGroupHeading, + Group, + GroupHeading, + Item, + Label, + RadioGroup, + RadioItem, + Root, + Separator, + Shortcut, + Sub, + SubContent, + SubTrigger, + Trigger, +}; diff --git a/apps/desktop/src/lib/components/ui/empty/empty-content.svelte b/apps/desktop/src/lib/components/ui/empty/empty-content.svelte new file mode 100644 index 0000000..cc17823 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/empty/empty-content.svelte @@ -0,0 +1,23 @@ + + +
    + {@render children?.()} +
    diff --git a/apps/desktop/src/lib/components/ui/empty/empty-description.svelte b/apps/desktop/src/lib/components/ui/empty/empty-description.svelte new file mode 100644 index 0000000..9e8cd78 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/empty/empty-description.svelte @@ -0,0 +1,23 @@ + + +
    a:hover]:text-primary text-sm/relaxed [&>a]:underline [&>a]:underline-offset-4", + className + )} + {...restProps} +> + {@render children?.()} +
    diff --git a/apps/desktop/src/lib/components/ui/empty/empty-header.svelte b/apps/desktop/src/lib/components/ui/empty/empty-header.svelte new file mode 100644 index 0000000..7112f66 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/empty/empty-header.svelte @@ -0,0 +1,20 @@ + + +
    + {@render children?.()} +
    diff --git a/apps/desktop/src/lib/components/ui/empty/empty-media.svelte b/apps/desktop/src/lib/components/ui/empty/empty-media.svelte new file mode 100644 index 0000000..24fe55d --- /dev/null +++ b/apps/desktop/src/lib/components/ui/empty/empty-media.svelte @@ -0,0 +1,41 @@ + + + + +
    + {@render children?.()} +
    diff --git a/apps/desktop/src/lib/components/ui/empty/empty-title.svelte b/apps/desktop/src/lib/components/ui/empty/empty-title.svelte new file mode 100644 index 0000000..5e84e30 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/empty/empty-title.svelte @@ -0,0 +1,20 @@ + + +
    + {@render children?.()} +
    diff --git a/apps/desktop/src/lib/components/ui/empty/empty.svelte b/apps/desktop/src/lib/components/ui/empty/empty.svelte new file mode 100644 index 0000000..e16c45c --- /dev/null +++ b/apps/desktop/src/lib/components/ui/empty/empty.svelte @@ -0,0 +1,23 @@ + + +
    + {@render children?.()} +
    diff --git a/apps/desktop/src/lib/components/ui/empty/index.ts b/apps/desktop/src/lib/components/ui/empty/index.ts new file mode 100644 index 0000000..ae4c106 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/empty/index.ts @@ -0,0 +1,22 @@ +import Root from "./empty.svelte"; +import Header from "./empty-header.svelte"; +import Media from "./empty-media.svelte"; +import Title from "./empty-title.svelte"; +import Description from "./empty-description.svelte"; +import Content from "./empty-content.svelte"; + +export { + Root, + Header, + Media, + Title, + Description, + Content, + // + Root as Empty, + Header as EmptyHeader, + Media as EmptyMedia, + Title as EmptyTitle, + Description as EmptyDescription, + Content as EmptyContent, +}; diff --git a/apps/desktop/src/lib/components/ui/field/field-content.svelte b/apps/desktop/src/lib/components/ui/field/field-content.svelte new file mode 100644 index 0000000..1545c43 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/field/field-content.svelte @@ -0,0 +1,20 @@ + + +
    + {@render children?.()} +
    diff --git a/apps/desktop/src/lib/components/ui/field/field-description.svelte b/apps/desktop/src/lib/components/ui/field/field-description.svelte new file mode 100644 index 0000000..f033c10 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/field/field-description.svelte @@ -0,0 +1,25 @@ + + +

    a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4", + className + )} + {...restProps} +> + {@render children?.()} +

    diff --git a/apps/desktop/src/lib/components/ui/field/field-error.svelte b/apps/desktop/src/lib/components/ui/field/field-error.svelte new file mode 100644 index 0000000..326cf59 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/field/field-error.svelte @@ -0,0 +1,58 @@ + + +{#if hasContent} + +{/if} diff --git a/apps/desktop/src/lib/components/ui/field/field-group.svelte b/apps/desktop/src/lib/components/ui/field/field-group.svelte new file mode 100644 index 0000000..3795195 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/field/field-group.svelte @@ -0,0 +1,23 @@ + + +
    + {@render children?.()} +
    diff --git a/apps/desktop/src/lib/components/ui/field/field-label.svelte b/apps/desktop/src/lib/components/ui/field/field-label.svelte new file mode 100644 index 0000000..8ccdbea --- /dev/null +++ b/apps/desktop/src/lib/components/ui/field/field-label.svelte @@ -0,0 +1,25 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/field/field-legend.svelte b/apps/desktop/src/lib/components/ui/field/field-legend.svelte new file mode 100644 index 0000000..e3d8deb --- /dev/null +++ b/apps/desktop/src/lib/components/ui/field/field-legend.svelte @@ -0,0 +1,24 @@ + + + + {@render children?.()} + diff --git a/apps/desktop/src/lib/components/ui/field/field-separator.svelte b/apps/desktop/src/lib/components/ui/field/field-separator.svelte new file mode 100644 index 0000000..a1ab858 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/field/field-separator.svelte @@ -0,0 +1,35 @@ + + +
    + + {#if children} + + {@render children()} + + {/if} +
    diff --git a/apps/desktop/src/lib/components/ui/field/field-set.svelte b/apps/desktop/src/lib/components/ui/field/field-set.svelte new file mode 100644 index 0000000..27ee330 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/field/field-set.svelte @@ -0,0 +1,20 @@ + + +
    [data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3 flex flex-col", className)} + {...restProps} +> + {@render children?.()} +
    diff --git a/apps/desktop/src/lib/components/ui/field/field-title.svelte b/apps/desktop/src/lib/components/ui/field/field-title.svelte new file mode 100644 index 0000000..93c2dcf --- /dev/null +++ b/apps/desktop/src/lib/components/ui/field/field-title.svelte @@ -0,0 +1,20 @@ + + +
    + {@render children?.()} +
    diff --git a/apps/desktop/src/lib/components/ui/field/field.svelte b/apps/desktop/src/lib/components/ui/field/field.svelte new file mode 100644 index 0000000..03d23c0 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/field/field.svelte @@ -0,0 +1,47 @@ + + + + +
    + {@render children?.()} +
    diff --git a/apps/desktop/src/lib/components/ui/field/index.ts b/apps/desktop/src/lib/components/ui/field/index.ts new file mode 100644 index 0000000..a644a95 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/field/index.ts @@ -0,0 +1,33 @@ +import Field from "./field.svelte"; +import Set from "./field-set.svelte"; +import Legend from "./field-legend.svelte"; +import Group from "./field-group.svelte"; +import Content from "./field-content.svelte"; +import Label from "./field-label.svelte"; +import Title from "./field-title.svelte"; +import Description from "./field-description.svelte"; +import Separator from "./field-separator.svelte"; +import Error from "./field-error.svelte"; + +export { + Field, + Set, + Legend, + Group, + Content, + Label, + Title, + Description, + Separator, + Error, + // + Set as FieldSet, + Legend as FieldLegend, + Group as FieldGroup, + Content as FieldContent, + Label as FieldLabel, + Title as FieldTitle, + Description as FieldDescription, + Separator as FieldSeparator, + Error as FieldError, +}; diff --git a/apps/desktop/src/lib/components/ui/form/form-button.svelte b/apps/desktop/src/lib/components/ui/form/form-button.svelte new file mode 100644 index 0000000..48d3936 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/form/form-button.svelte @@ -0,0 +1,7 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/input-group/input-group-input.svelte b/apps/desktop/src/lib/components/ui/input-group/input-group-input.svelte new file mode 100644 index 0000000..316c0cb --- /dev/null +++ b/apps/desktop/src/lib/components/ui/input-group/input-group-input.svelte @@ -0,0 +1,20 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/input-group/input-group-text.svelte b/apps/desktop/src/lib/components/ui/input-group/input-group-text.svelte new file mode 100644 index 0000000..d6ab315 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/input-group/input-group-text.svelte @@ -0,0 +1,19 @@ + + + + {@render children?.()} + diff --git a/apps/desktop/src/lib/components/ui/input-group/input-group-textarea.svelte b/apps/desktop/src/lib/components/ui/input-group/input-group-textarea.svelte new file mode 100644 index 0000000..9fbabe6 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/input-group/input-group-textarea.svelte @@ -0,0 +1,20 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/toggle-group/index.ts b/apps/desktop/src/lib/components/ui/toggle-group/index.ts new file mode 100644 index 0000000..12b14b9 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/toggle-group/index.ts @@ -0,0 +1,10 @@ +import Root from "./toggle-group.svelte"; +import Item from "./toggle-group-item.svelte"; + +export { + Root, + Item, + // + Root as ToggleGroup, + Item as ToggleGroupItem, +}; diff --git a/apps/desktop/src/lib/components/ui/toggle-group/toggle-group-item.svelte b/apps/desktop/src/lib/components/ui/toggle-group/toggle-group-item.svelte new file mode 100644 index 0000000..904bf70 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/toggle-group/toggle-group-item.svelte @@ -0,0 +1,35 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/toggle-group/toggle-group.svelte b/apps/desktop/src/lib/components/ui/toggle-group/toggle-group.svelte new file mode 100644 index 0000000..3d67cb8 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/toggle-group/toggle-group.svelte @@ -0,0 +1,75 @@ + + + + + + diff --git a/apps/desktop/src/lib/components/ui/toggle/index.ts b/apps/desktop/src/lib/components/ui/toggle/index.ts new file mode 100644 index 0000000..8cb2936 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/toggle/index.ts @@ -0,0 +1,13 @@ +import Root from "./toggle.svelte"; +export { + toggleVariants, + type ToggleSize, + type ToggleVariant, + type ToggleVariants, +} from "./toggle.svelte"; + +export { + Root, + // + Root as Toggle, +}; diff --git a/apps/desktop/src/lib/components/ui/toggle/toggle.svelte b/apps/desktop/src/lib/components/ui/toggle/toggle.svelte new file mode 100644 index 0000000..eca68b1 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/toggle/toggle.svelte @@ -0,0 +1,51 @@ + + + + + diff --git a/apps/desktop/src/lib/components/ui/tooltip/index.ts b/apps/desktop/src/lib/components/ui/tooltip/index.ts new file mode 100644 index 0000000..1718604 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/tooltip/index.ts @@ -0,0 +1,19 @@ +import Root from "./tooltip.svelte"; +import Trigger from "./tooltip-trigger.svelte"; +import Content from "./tooltip-content.svelte"; +import Provider from "./tooltip-provider.svelte"; +import Portal from "./tooltip-portal.svelte"; + +export { + Root, + Trigger, + Content, + Provider, + Portal, + // + Root as Tooltip, + Content as TooltipContent, + Trigger as TooltipTrigger, + Provider as TooltipProvider, + Portal as TooltipPortal, +}; diff --git a/apps/desktop/src/lib/components/ui/tooltip/tooltip-content.svelte b/apps/desktop/src/lib/components/ui/tooltip/tooltip-content.svelte new file mode 100644 index 0000000..4f27fa3 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/tooltip/tooltip-content.svelte @@ -0,0 +1,52 @@ + + + + + {@render children?.()} + + {#snippet child({ props })} +
    + {/snippet} +
    +
    +
    diff --git a/apps/desktop/src/lib/components/ui/tooltip/tooltip-portal.svelte b/apps/desktop/src/lib/components/ui/tooltip/tooltip-portal.svelte new file mode 100644 index 0000000..d234f7d --- /dev/null +++ b/apps/desktop/src/lib/components/ui/tooltip/tooltip-portal.svelte @@ -0,0 +1,7 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/tooltip/tooltip-provider.svelte b/apps/desktop/src/lib/components/ui/tooltip/tooltip-provider.svelte new file mode 100644 index 0000000..6dba9a6 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/tooltip/tooltip-provider.svelte @@ -0,0 +1,7 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/tooltip/tooltip-trigger.svelte b/apps/desktop/src/lib/components/ui/tooltip/tooltip-trigger.svelte new file mode 100644 index 0000000..1acdaa4 --- /dev/null +++ b/apps/desktop/src/lib/components/ui/tooltip/tooltip-trigger.svelte @@ -0,0 +1,7 @@ + + + diff --git a/apps/desktop/src/lib/components/ui/tooltip/tooltip.svelte b/apps/desktop/src/lib/components/ui/tooltip/tooltip.svelte new file mode 100644 index 0000000..0b0f9ce --- /dev/null +++ b/apps/desktop/src/lib/components/ui/tooltip/tooltip.svelte @@ -0,0 +1,7 @@ + + + diff --git a/apps/desktop/src/lib/electrobun.ts b/apps/desktop/src/lib/electrobun.ts new file mode 100644 index 0000000..cae1e25 --- /dev/null +++ b/apps/desktop/src/lib/electrobun.ts @@ -0,0 +1,36 @@ +import { Electroview } from 'electrobun/view' + +type RPC = { + bun: { + requests: { + getSecret: { + params: { + service: string + name: string + } + response: Promise + } + setSecret: { + params: { + service: string + name: string + value: string + } + response: Promise + } + } + messages: {} + } + webview: { + requests: {} + messages: {} + } +} + +const rpc = Electroview.defineRPC({ + handlers: { + requests: {}, + messages: {}, + }, +}) +export const electrobun = new Electroview({ rpc }) diff --git a/apps/desktop/src/lib/hooks/is-mobile.svelte.ts b/apps/desktop/src/lib/hooks/is-mobile.svelte.ts new file mode 100644 index 0000000..4829c00 --- /dev/null +++ b/apps/desktop/src/lib/hooks/is-mobile.svelte.ts @@ -0,0 +1,9 @@ +import { MediaQuery } from "svelte/reactivity"; + +const DEFAULT_MOBILE_BREAKPOINT = 768; + +export class IsMobile extends MediaQuery { + constructor(breakpoint: number = DEFAULT_MOBILE_BREAKPOINT) { + super(`max-width: ${breakpoint - 1}px`); + } +} diff --git a/apps/desktop/src/lib/hooks/use-clipboard.svelte.ts b/apps/desktop/src/lib/hooks/use-clipboard.svelte.ts new file mode 100644 index 0000000..ab1b7d1 --- /dev/null +++ b/apps/desktop/src/lib/hooks/use-clipboard.svelte.ts @@ -0,0 +1,99 @@ +type Options = { + /** The time before the copied status is reset. */ + delay: number; +}; + +/** Use this hook to copy text to the clipboard and show a copied state. + * + * ## Usage + * ```svelte + * + * + * + * ``` + * + */ +export class UseClipboard { + #copiedStatus = $state<'success' | 'failure'>(); + private delay: number; + private timeout: ReturnType | undefined = undefined; + + constructor({ delay = 500 }: Partial = {}) { + this.delay = delay; + } + + /** Copies the given text to the users clipboard. + * + * ## Usage + * ```ts + * clipboard.copy('Hello, World!'); + * ``` + * + * @param text + * @returns + */ + async copy(text: string) { + if (this.timeout) { + this.#copiedStatus = undefined; + clearTimeout(this.timeout); + } + + this.#copiedStatus = await copyText(text); + + this.timeout = setTimeout(() => { + this.#copiedStatus = undefined; + }, this.delay); + + return this.#copiedStatus; + } + + /** true when the user has just copied to the clipboard. */ + get copied() { + return this.#copiedStatus === 'success'; + } + + /** Indicates whether a copy has occurred + * and gives a status of either `success` or `failure`. */ + get status() { + return this.#copiedStatus; + } +} + +export async function copyText(text: string): Promise<'success' | 'failure'> { + try { + if (navigator.clipboard && window.isSecureContext) { + await navigator.clipboard.writeText(text); + return 'success'; + } + + // when navigator.clipboard is unavailable we fallback to this for wider browser compatibility + const textArea = document.createElement('textarea'); + textArea.value = text; + textArea.style.position = 'fixed'; + textArea.style.top = '0'; + textArea.style.left = '0'; + document.body.appendChild(textArea); + textArea.focus(); + textArea.select(); + + const successful = document.execCommand('copy'); + + document.body.removeChild(textArea); + + return successful ? 'success' : 'failure'; + } catch { + return 'failure'; + } +} diff --git a/apps/desktop/src/lib/states/wallet.svelte.ts b/apps/desktop/src/lib/states/wallet.svelte.ts new file mode 100644 index 0000000..68c066b --- /dev/null +++ b/apps/desktop/src/lib/states/wallet.svelte.ts @@ -0,0 +1,110 @@ +import { JsonRpcProvider, HDNodeWallet, formatEther } from 'ethers' +import { electrobun } from '$lib/electrobun' + +const BNB_RPC = 'https://bsc-dataseed.binance.org' + +export const Wallet = () => { + let seed = $state('') + let address = $state('') + let balance = $state('0') + let loading = $state(false) + let error = $state('') + let vaultExists = $state(false) + let ready = $state(false) + + const init = async () => { + try { + const raw = await electrobun.rpc?.request.getSecret({ + service: 'koins', + name: 'vault', + }) + vaultExists = raw !== null && raw !== undefined + if (raw) { + seed = raw + await refresh() + } + } catch (e) { + console.log(e) + error = + e instanceof Error ? e.message : 'Failed to access keychain' + } finally { + ready = true + } + } + + const saveVault = async (phrase: string) => { + loading = true + error = '' + try { + HDNodeWallet.fromPhrase(phrase.trim()) + await electrobun.rpc?.request.setSecret({ + service: 'koins', + name: 'vault', + value: phrase.trim(), + }) + seed = phrase.trim() + vaultExists = true + await refresh() + } catch (e) { + error = e instanceof Error ? e.message : 'Invalid seed phrase' + } finally { + loading = false + } + } + + const lock = () => { + seed = '' + address = '' + balance = '0' + error = '' + } + + const refresh = async () => { + if (!seed) return + loading = true + error = '' + try { + const wallet = HDNodeWallet.fromPhrase(seed) + address = wallet.address + const provider = new JsonRpcProvider(BNB_RPC) + const bal = await provider.getBalance(wallet.address) + balance = formatEther(bal) + } catch (e) { + error = + e instanceof Error ? e.message : 'Failed to fetch balance' + } finally { + loading = false + } + } + + return { + get isLocked() { + return vaultExists && !seed + }, + get seed() { + return seed + }, + get address() { + return address + }, + get balance() { + return balance + }, + get loading() { + return loading + }, + get error() { + return error + }, + get vaultExists() { + return vaultExists + }, + get ready() { + return ready + }, + refresh, + init, + lock, + saveVault, + } +} diff --git a/apps/desktop/src/lib/utils.ts b/apps/desktop/src/lib/utils.ts new file mode 100644 index 0000000..f92bfcb --- /dev/null +++ b/apps/desktop/src/lib/utils.ts @@ -0,0 +1,13 @@ +import { clsx, type ClassValue } from 'clsx'; +import { twMerge } from 'tailwind-merge'; + +export function cn(...inputs: ClassValue[]) { + return twMerge(clsx(inputs)); +} + +// eslint-disable-next-line @typescript-eslint/no-explicit-any +export type WithoutChild = T extends { child?: any } ? Omit : T; +// eslint-disable-next-line @typescript-eslint/no-explicit-any +export type WithoutChildren = T extends { children?: any } ? Omit : T; +export type WithoutChildrenOrChild = WithoutChildren>; +export type WithElementRef = T & { ref?: U | null }; diff --git a/apps/desktop/src/main.ts b/apps/desktop/src/main.ts new file mode 100644 index 0000000..121c709 --- /dev/null +++ b/apps/desktop/src/main.ts @@ -0,0 +1,6 @@ +import { mount } from 'svelte' +import App from './App.svelte' + +mount(App, { + target: document.querySelector('#app')!, +}) diff --git a/apps/desktop/src/routes/about.svelte b/apps/desktop/src/routes/about.svelte new file mode 100644 index 0000000..3f14839 --- /dev/null +++ b/apps/desktop/src/routes/about.svelte @@ -0,0 +1,5 @@ + + +

    About

    + +

    This is another page

    diff --git a/apps/desktop/src/routes/index.svelte b/apps/desktop/src/routes/index.svelte new file mode 100644 index 0000000..fe5f517 --- /dev/null +++ b/apps/desktop/src/routes/index.svelte @@ -0,0 +1,86 @@ + + +
    + {#if !w.ready} + + {:else if !w.vaultExists} + + + Import Wallet + + Enter your seed phrase to save it securely in your system + keychain + + + +
    +