diff --git a/web/jest.config.mjs b/web/jest.config.mjs index 5eeb60f95..307c955b7 100644 --- a/web/jest.config.mjs +++ b/web/jest.config.mjs @@ -186,7 +186,7 @@ export default { }, // An array of regexp pattern strings that are matched against all source file paths, matched files will skip transformation - transformIgnorePatterns: ['/node_modules/(?!svelte-material-icons).*/', '\\.pnp\\.[^\\/]+$'], + transformIgnorePatterns: ['\\.pnp\\.[^\\/]+$'], // An array of regexp pattern strings that are matched against all modules before the module loader will automatically return a mock for them // unmockedModulePathPatterns: undefined, diff --git a/web/package-lock.json b/web/package-lock.json index dd3aad6bb..a79f648de 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -9,6 +9,7 @@ "version": "1.0.0", "dependencies": { "@egjs/svelte-view360": "^4.0.0-beta.7", + "@mdi/js": "^7.3.67", "@zoom-image/svelte": "^0.1.8", "axios": "^0.27.2", "buffer": "^6.0.3", @@ -23,7 +24,6 @@ "socket.io-client": "^4.6.1", "svelte-loading-spinners": "^0.3.4", "svelte-local-storage-store": "^0.5.0", - "svelte-material-icons": "^3.0.5", "thumbhash": "^0.1.1" }, "devDependencies": { @@ -3197,6 +3197,11 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@mdi/js": { + "version": "7.3.67", + "resolved": "https://registry.npmjs.org/@mdi/js/-/js-7.3.67.tgz", + "integrity": "sha512-MnRjknFqpTC6FifhGHjZ0+QYq2bAkZFQqIj8JA2AdPZbBxUvr8QSgB2yPAJ8/ob/XkR41xlg5majDR3c1JP1hw==" + }, "node_modules/@namnode/store": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/@namnode/store/-/store-0.1.0.tgz", @@ -11418,14 +11423,6 @@ "svelte": "^3.48.0 || ^4.0.0" } }, - "node_modules/svelte-material-icons": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/svelte-material-icons/-/svelte-material-icons-3.0.5.tgz", - "integrity": "sha512-UbhAa+Btd5y6e6DMljVccP+cbJ8lvesltMippiCOvfIUtYe2TsQqM+P6osfrVsZHV47b1tY6AmqCuSpMKnwMOQ==", - "peerDependencies": { - "svelte": "^3.0.0 || ^4.0.0" - } - }, "node_modules/svelte-preprocess": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-5.0.4.tgz", @@ -14495,6 +14492,11 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "@mdi/js": { + "version": "7.3.67", + "resolved": "https://registry.npmjs.org/@mdi/js/-/js-7.3.67.tgz", + "integrity": "sha512-MnRjknFqpTC6FifhGHjZ0+QYq2bAkZFQqIj8JA2AdPZbBxUvr8QSgB2yPAJ8/ob/XkR41xlg5majDR3c1JP1hw==" + }, "@namnode/store": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/@namnode/store/-/store-0.1.0.tgz", @@ -20512,12 +20514,6 @@ "integrity": "sha512-SEDrpapeia6fUqta+r1NvSLlJYPkZ4pBcl15EYIOSPNzy6vhpoXu8cnzUDmZxsWl7fZGAHxrVH9UyZCbyO4W+g==", "requires": {} }, - "svelte-material-icons": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/svelte-material-icons/-/svelte-material-icons-3.0.5.tgz", - "integrity": "sha512-UbhAa+Btd5y6e6DMljVccP+cbJ8lvesltMippiCOvfIUtYe2TsQqM+P6osfrVsZHV47b1tY6AmqCuSpMKnwMOQ==", - "requires": {} - }, "svelte-preprocess": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-5.0.4.tgz", diff --git a/web/package.json b/web/package.json index d1d4d25c0..7934c28b2 100644 --- a/web/package.json +++ b/web/package.json @@ -62,6 +62,7 @@ "type": "module", "dependencies": { "@egjs/svelte-view360": "^4.0.0-beta.7", + "@mdi/js": "^7.3.67", "@zoom-image/svelte": "^0.1.8", "axios": "^0.27.2", "buffer": "^6.0.3", @@ -76,7 +77,6 @@ "socket.io-client": "^4.6.1", "svelte-loading-spinners": "^0.3.4", "svelte-local-storage-store": "^0.5.0", - "svelte-material-icons": "^3.0.5", "thumbhash": "^0.1.1" } } diff --git a/web/src/lib/components/admin-page/jobs/job-tile.svelte b/web/src/lib/components/admin-page/jobs/job-tile.svelte index ec1375607..1be188cd2 100644 --- a/web/src/lib/components/admin-page/jobs/job-tile.svelte +++ b/web/src/lib/components/admin-page/jobs/job-tile.svelte @@ -1,25 +1,27 @@ - + {/if} diff --git a/web/src/lib/components/assets/thumbnail/thumbnail.svelte b/web/src/lib/components/assets/thumbnail/thumbnail.svelte index 42266a805..6398e1a36 100644 --- a/web/src/lib/components/assets/thumbnail/thumbnail.svelte +++ b/web/src/lib/components/assets/thumbnail/thumbnail.svelte @@ -4,16 +4,19 @@ import { timeToSeconds } from '$lib/utils/time-to-seconds'; import { api, AssetResponseDto, AssetTypeEnum, ThumbnailFormat } from '@api'; import { createEventDispatcher } from 'svelte'; - import ArchiveArrowDownOutline from 'svelte-material-icons/ArchiveArrowDownOutline.svelte'; - import CheckCircle from 'svelte-material-icons/CheckCircle.svelte'; - import Heart from 'svelte-material-icons/Heart.svelte'; - import ImageBrokenVariant from 'svelte-material-icons/ImageBrokenVariant.svelte'; - import MotionPauseOutline from 'svelte-material-icons/MotionPauseOutline.svelte'; - import MotionPlayOutline from 'svelte-material-icons/MotionPlayOutline.svelte'; import { fade } from 'svelte/transition'; import ImageThumbnail from './image-thumbnail.svelte'; import VideoThumbnail from './video-thumbnail.svelte'; - import Rotate360Icon from 'svelte-material-icons/Rotate360.svelte'; + import { + mdiArchiveArrowDownOutline, + mdiCheckCircle, + mdiHeart, + mdiImageBrokenVariant, + mdiMotionPauseOutline, + mdiMotionPlayOutline, + mdiRotate360, + } from '@mdi/js'; + import Icon from '$lib/components/elements/icon.svelte'; const dispatch = createEventDispatcher(); @@ -93,13 +96,13 @@ {disabled} > {#if disabled} - + {:else if selected}
- +
{:else} - + {/if} {/if} @@ -119,20 +122,20 @@ {#if !api.isSharedLink && asset.isFavorite}
- +
{/if} {#if !api.isSharedLink && showArchiveIcon && asset.isArchived}
- +
{/if} {#if asset.type === AssetTypeEnum.Image && asset.exifInfo?.projectionType === ProjectionType.EQUIRECTANGULAR}
- +
{/if} @@ -148,7 +151,7 @@ /> {:else}
- +
{/if} @@ -167,8 +170,8 @@
import { Duration } from 'luxon'; - import PauseCircleOutline from 'svelte-material-icons/PauseCircleOutline.svelte'; - import PlayCircleOutline from 'svelte-material-icons/PlayCircleOutline.svelte'; - import AlertCircleOutline from 'svelte-material-icons/AlertCircleOutline.svelte'; import LoadingSpinner from '$lib/components/shared-components/loading-spinner.svelte'; + import { mdiAlertCircleOutline, mdiPauseCircleOutline, mdiPlayCircleOutline } from '@mdi/js'; + import Icon from '$lib/components/elements/icon.svelte'; export let url: string; export let durationInSeconds = 0; @@ -11,8 +10,8 @@ export let playbackOnIconHover = false; export let showTime = true; export let curve = false; - export let playIcon = PlayCircleOutline; - export let pauseIcon = PauseCircleOutline; + export let playIcon = mdiPlayCircleOutline; + export let pauseIcon = mdiPauseCircleOutline; let remainingSeconds = durationInSeconds; let loading = true; @@ -55,12 +54,12 @@ {#if loading} {:else if error} - + {:else} - + {/if} {:else} - + {/if}
diff --git a/web/src/lib/components/elements/buttons/circle-icon-button.svelte b/web/src/lib/components/elements/buttons/circle-icon-button.svelte index 344793bab..ef9259d50 100644 --- a/web/src/lib/components/elements/buttons/circle-icon-button.svelte +++ b/web/src/lib/components/elements/buttons/circle-icon-button.svelte @@ -1,7 +1,7 @@ + + + {#if title} + {title} + {/if} + {#if desc} + {desc} + {/if} + + diff --git a/web/src/lib/components/faces-page/merge-face-selector.svelte b/web/src/lib/components/faces-page/merge-face-selector.svelte index c087ac2d2..2bf15b1bc 100644 --- a/web/src/lib/components/faces-page/merge-face-selector.svelte +++ b/web/src/lib/components/faces-page/merge-face-selector.svelte @@ -6,15 +6,14 @@ import { fly } from 'svelte/transition'; import ControlAppBar from '../shared-components/control-app-bar.svelte'; import Button from '../elements/buttons/button.svelte'; - import Merge from 'svelte-material-icons/Merge.svelte'; - import CallMerge from 'svelte-material-icons/CallMerge.svelte'; import { flip } from 'svelte/animate'; import { NotificationType, notificationController } from '../shared-components/notification/notification'; import ConfirmDialogue from '../shared-components/confirm-dialogue.svelte'; import { handleError } from '$lib/utils/handle-error'; import { goto, invalidateAll } from '$app/navigation'; import { AppRoute } from '$lib/constants'; - import SwapHorizontal from 'svelte-material-icons/SwapHorizontal.svelte'; + import { mdiCallMerge, mdiMerge, mdiSwapHorizontal } from '@mdi/js'; + import Icon from '$lib/components/elements/icon.svelte'; export let person: PersonResponseDto; let people: PersonResponseDto[] = []; @@ -104,7 +103,7 @@ isShowConfirmation = true; }} > - + Merge @@ -123,10 +122,10 @@ {#if hasSelection} + > {#if selectedPeople.length === 1} {/if} diff --git a/web/src/lib/components/faces-page/merge-suggestion-modal.svelte b/web/src/lib/components/faces-page/merge-suggestion-modal.svelte index de0a45452..4300708ae 100644 --- a/web/src/lib/components/faces-page/merge-suggestion-modal.svelte +++ b/web/src/lib/components/faces-page/merge-suggestion-modal.svelte @@ -2,12 +2,11 @@ import FullScreenModal from '$lib/components/shared-components/full-screen-modal.svelte'; import { api, type PersonResponseDto } from '@api'; import { createEventDispatcher } from 'svelte'; - import ArrowLeft from 'svelte-material-icons/ArrowLeft.svelte'; - import Close from 'svelte-material-icons/Close.svelte'; - import Merge from 'svelte-material-icons/Merge.svelte'; import ImageThumbnail from '../assets/thumbnail/image-thumbnail.svelte'; import Button from '../elements/buttons/button.svelte'; import CircleIconButton from '../elements/buttons/circle-icon-button.svelte'; + import { mdiArrowLeft, mdiClose, mdiMerge } from '@mdi/js'; + import Icon from '$lib/components/elements/icon.svelte'; const dispatch = createEventDispatcher<{ reject: void; @@ -40,7 +39,7 @@ Merge faces - {title}
- dispatch('close')} /> + dispatch('close')} />
@@ -57,7 +56,7 @@
([personMerge1, personMerge2] = [personMerge2, personMerge1])} />
@@ -83,7 +82,7 @@ {:else}
- +
diff --git a/web/src/lib/components/faces-page/people-card.svelte b/web/src/lib/components/faces-page/people-card.svelte index 574c14b88..289234366 100644 --- a/web/src/lib/components/faces-page/people-card.svelte +++ b/web/src/lib/components/faces-page/people-card.svelte @@ -3,12 +3,13 @@ import { getContextMenuPosition } from '$lib/utils/context-menu'; import ImageThumbnail from '../assets/thumbnail/image-thumbnail.svelte'; import IconButton from '../elements/buttons/icon-button.svelte'; - import DotsVertical from 'svelte-material-icons/DotsVertical.svelte'; import ContextMenu from '../shared-components/context-menu/context-menu.svelte'; import MenuOption from '../shared-components/context-menu/menu-option.svelte'; import Portal from '../shared-components/portal/portal.svelte'; import { createEventDispatcher } from 'svelte'; import { AppRoute } from '$lib/constants'; + import { mdiDotsVertical } from '@mdi/js'; + import Icon from '$lib/components/elements/icon.svelte'; export let person: PersonResponseDto; @@ -71,7 +72,7 @@ id={`icon-${person.id}`} > - +
diff --git a/web/src/lib/components/faces-page/set-birth-date-modal.svelte b/web/src/lib/components/faces-page/set-birth-date-modal.svelte index 20ce4d382..630c60a74 100644 --- a/web/src/lib/components/faces-page/set-birth-date-modal.svelte +++ b/web/src/lib/components/faces-page/set-birth-date-modal.svelte @@ -1,8 +1,9 @@ - (showModal = true)} /> + (showModal = true)} /> {#if showModal} {:else if loading} - + {:else} - + {/if} {#if isShowConfirmation} diff --git a/web/src/lib/components/photos-page/actions/download-action.svelte b/web/src/lib/components/photos-page/actions/download-action.svelte index 56f24cee6..f4e7f685e 100644 --- a/web/src/lib/components/photos-page/actions/download-action.svelte +++ b/web/src/lib/components/photos-page/actions/download-action.svelte @@ -1,9 +1,9 @@ - (removing = true)} logo={DeleteOutline} /> + (removing = true)} icon={mdiDeleteOutline} /> {#if removing} diff --git a/web/src/lib/components/photos-page/actions/select-all-assets.svelte b/web/src/lib/components/photos-page/actions/select-all-assets.svelte index 0956e9a09..f06f499a2 100644 --- a/web/src/lib/components/photos-page/actions/select-all-assets.svelte +++ b/web/src/lib/components/photos-page/actions/select-all-assets.svelte @@ -3,9 +3,8 @@ import type { AssetInteractionStore } from '$lib/stores/asset-interaction.store'; import { BucketPosition, type AssetStore } from '$lib/stores/assets.store'; import { handleError } from '$lib/utils/handle-error'; - import SelectAll from 'svelte-material-icons/SelectAll.svelte'; - import TimerSand from 'svelte-material-icons/TimerSand.svelte'; import { get } from 'svelte/store'; + import { mdiTimerSand, mdiSelectAll } from '@mdi/js'; export let assetStore: AssetStore; export let assetInteractionStore: AssetInteractionStore; @@ -32,8 +31,8 @@ {#if selecting} - + {/if} {#if !selecting} - + {/if} diff --git a/web/src/lib/components/photos-page/asset-date-group.svelte b/web/src/lib/components/photos-page/asset-date-group.svelte index 9207cd924..147febbca 100644 --- a/web/src/lib/components/photos-page/asset-date-group.svelte +++ b/web/src/lib/components/photos-page/asset-date-group.svelte @@ -5,14 +5,14 @@ import type { AssetResponseDto } from '@api'; import justifiedLayout from 'justified-layout'; import { createEventDispatcher } from 'svelte'; - import CheckCircle from 'svelte-material-icons/CheckCircle.svelte'; - import CircleOutline from 'svelte-material-icons/CircleOutline.svelte'; + import Icon from '$lib/components/elements/icon.svelte'; import { fly } from 'svelte/transition'; import Thumbnail from '../assets/thumbnail/thumbnail.svelte'; import { assetViewingStore } from '$lib/stores/asset-viewing.store'; import type { AssetStore } from '$lib/stores/assets.store'; import type { AssetInteractionStore } from '$lib/stores/asset-interaction.store'; import type { Viewport } from '$lib/stores/assets.store'; + import { mdiCheckCircle, mdiCircleOutline } from '@mdi/js'; export let assets: AssetResponseDto[]; export let bucketDate: string; @@ -154,9 +154,9 @@ on:keydown={() => handleSelectGroup(groupTitle, groupAssets)} > {#if $selectedGroup.has(groupTitle)} - + {:else} - + {/if}
{/if} diff --git a/web/src/lib/components/photos-page/asset-select-context-menu.svelte b/web/src/lib/components/photos-page/asset-select-context-menu.svelte index 7729aa347..9af4ff931 100644 --- a/web/src/lib/components/photos-page/asset-select-context-menu.svelte +++ b/web/src/lib/components/photos-page/asset-select-context-menu.svelte @@ -9,10 +9,9 @@
(showContextMenu = false)}> - + {#if showContextMenu}
diff --git a/web/src/lib/components/photos-page/asset-select-control-bar.svelte b/web/src/lib/components/photos-page/asset-select-control-bar.svelte index 3d9d94b08..6708b335c 100644 --- a/web/src/lib/components/photos-page/asset-select-control-bar.svelte +++ b/web/src/lib/components/photos-page/asset-select-control-bar.svelte @@ -19,8 +19,8 @@ - +

Selected {assets.size.toLocaleString($locale)}

diff --git a/web/src/lib/components/photos-page/memory-lane.svelte b/web/src/lib/components/photos-page/memory-lane.svelte index 1ade070eb..2424de320 100644 --- a/web/src/lib/components/photos-page/memory-lane.svelte +++ b/web/src/lib/components/photos-page/memory-lane.svelte @@ -1,11 +1,11 @@ - + - + - + - +
diff --git a/web/src/lib/components/shared-components/side-bar/side-bar-button.svelte b/web/src/lib/components/shared-components/side-bar/side-bar-button.svelte index 0dae86bfa..a23eeed03 100644 --- a/web/src/lib/components/shared-components/side-bar/side-bar-button.svelte +++ b/web/src/lib/components/shared-components/side-bar/side-bar-button.svelte @@ -1,11 +1,11 @@ - goto(AppRoute.SHARING)}> + goto(AppRoute.SHARING)}> Shared links diff --git a/web/src/routes/(user)/trash/+page.svelte b/web/src/routes/(user)/trash/+page.svelte index cce565767..5d0f6cc2f 100644 --- a/web/src/routes/(user)/trash/+page.svelte +++ b/web/src/routes/(user)/trash/+page.svelte @@ -16,13 +16,13 @@ import LinkButton from '$lib/components/elements/buttons/link-button.svelte'; import { AssetStore } from '$lib/stores/assets.store'; import { api, TimeBucketSize } from '@api'; - import DeleteOutline from 'svelte-material-icons/DeleteOutline.svelte'; - import HistoryOutline from 'svelte-material-icons/History.svelte'; + import Icon from '$lib/components/elements/icon.svelte'; import type { PageData } from './$types'; import { featureFlags, serverConfig } from '$lib/stores/server-config.store'; import { goto } from '$app/navigation'; import empty3Url from '$lib/assets/empty-3.svg'; import ConfirmDialogue from '$lib/components/shared-components/confirm-dialogue.svelte'; + import { mdiDeleteOutline, mdiHistory } from '@mdi/js'; export let data: PageData; @@ -74,13 +74,13 @@
- + Restore All
(isShowEmptyConfirmation = true)}>
- + Empty Trash
diff --git a/web/src/routes/+error.svelte b/web/src/routes/+error.svelte index 7a1915153..93cadacca 100644 --- a/web/src/routes/+error.svelte +++ b/web/src/routes/+error.svelte @@ -1,10 +1,8 @@