diff --git a/src/lib/ui/shared/button/ButtonGroup.svelte b/src/lib/ui/shared/button/ButtonGroup.svelte new file mode 100644 --- /dev/null +++ b/src/lib/ui/shared/button/ButtonGroup.svelte @@ -0,0 +1,50 @@ + + +
+ {@render children?.()} +
+ + diff --git a/src/lib/ui/shared/index.ts b/src/lib/ui/shared/index.ts --- a/src/lib/ui/shared/index.ts +++ b/src/lib/ui/shared/index.ts @@ -1,33 +1,38 @@ // Reexport your entry components here -export { default as Button } from './button/Button.svelte' -export { buttonColor, buttonSize, buttonShadow } from './button/Button.svelte' +export { + default as Button, + buttonColor, + buttonShadow, + buttonSize, +} from './button/Button.svelte' +export { default as ButtonGroup } from './button/ButtonGroup.svelte' export { default as Spinner } from './loader/Spinner.svelte' export { default as TextLoader } from './loader/TextLoader.svelte' export { default as Material } from './materials/Material.svelte' +export { default as FileInput } from './forms/FileInput.svelte' export { default as Label } from './forms/Label.svelte' -export { default as FileInput } from './forms/FileInput.svelte' +export { default as TextArea } from './forms/TextArea.svelte' export { default as TextInput } from './forms/TextInput.svelte' -export { default as TextArea } from './forms/TextArea.svelte' +export { default as Option } from './forms/select/Option.svelte' export { default as Select } from './forms/select/Select.svelte' -export { default as Option } from './forms/select/Option.svelte' export { default as Switch } from './forms/Switch.svelte' -export { default as Popover } from './popover/Popover.svelte' -export { default as Menu } from './popover/Menu.svelte' -export { default as MenuDivider } from './popover/MenuDivider.svelte' -export { default as MenuButton } from './popover/MenuButton.svelte' export { default as Disclosure } from './disclosure/Disclosure.svelte' export { default as Expandable } from './disclosure/Expandable.svelte' export { default as Modal } from './modal/Modal.svelte' -export { modal, action } from './modal/modal.js' export { default as ModalContainer } from './modal/ModalContainer.svelte' +export { action, modal } from './modal/modal.js' +export { default as Menu } from './popover/Menu.svelte' +export { default as MenuButton } from './popover/MenuButton.svelte' +export { default as MenuDivider } from './popover/MenuDivider.svelte' +export { default as Popover } from './popover/Popover.svelte' -export { toast, removeToast, toasts, toastColors } from './toast/toasts.js' export { default as ToastContainer } from './toast/ToastContainer.svelte' +export { removeToast, toast, toastColors, toasts } from './toast/toasts.js' +export { default as Badge } from './badge/Badge.svelte' export { default as Note } from './note/Note.svelte' -export { default as Badge } from './badge/Badge.svelte' export { default as Search } from './search/Search.svelte' diff --git a/src/lib/ui/shared/modal/Modal.svelte b/src/lib/ui/shared/modal/Modal.svelte --- a/src/lib/ui/shared/modal/Modal.svelte +++ b/src/lib/ui/shared/modal/Modal.svelte @@ -5,7 +5,7 @@ import { Button } from 'mono-svelte' import Portal from 'mono-svelte/popover/Portal.svelte' import type { Snippet } from 'svelte' import { XMark } from 'svelte-hero-icons/dist' - import { backOut } from 'svelte/easing' + import { expoOut } from 'svelte/easing' import type { ClassValue } from 'svelte/elements' import { fade, scale } from 'svelte/transition' import { trapFocus } from 'trap-focus-svelte' @@ -97,7 +97,7 @@ bind:this={el} use:trapFocus={true} transition:scale|global={{ start: 0.97, - easing: backOut, + easing: expoOut, duration: 300, }} class={[ diff --git a/src/routes/inbox/+page.svelte b/src/routes/inbox/+page.svelte --- a/src/routes/inbox/+page.svelte +++ b/src/routes/inbox/+page.svelte @@ -102,10 +102,17 @@ description={$t('routes.inbox.empty.description')} class="self-center justify-self-center my-auto" /> {:else} - - {#snippet item(item)} - - {/snippet} + + {#each data.inbox.value as item} +
  • + +
  • + {/each}
    {/if} {#if !(data.page == 1 && (data?.inbox?.value.length ?? 0) == 0)} diff --git a/src/routes/inbox/+page.ts b/src/routes/inbox/+page.ts --- a/src/routes/inbox/+page.ts +++ b/src/routes/inbox/+page.ts @@ -19,7 +19,7 @@ (url.searchParams.get('type') as InboxFeedType) || 'all' const client = getClient(undefined, fetch) const page = Number(url.searchParams.get('page')) || 1 const unreadOnly: boolean = - (url.searchParams.get('unreadOnly') || 'true') == 'true' + (url.searchParams.get('unreadOnly') || 'false') == 'true' const params = { limit: 20, diff --git a/src/routes/inbox/InboxItem.svelte b/src/routes/inbox/InboxItem.svelte --- a/src/routes/inbox/InboxItem.svelte +++ b/src/routes/inbox/InboxItem.svelte @@ -9,7 +9,7 @@ import type { InboxItem } from '$lib/feature/inbox' import PrivateMessage from '$lib/feature/inbox/PrivateMessage.svelte' import Avatar from '$lib/ui/generic/Avatar.svelte' import { publishedToDate } from '$lib/ui/util/date' - import { Button, Expandable } from 'mono-svelte' + import { Button, ButtonGroup, Expandable } from 'mono-svelte' import RelativeDate from 'mono-svelte/util/RelativeDate.svelte' import { Eye, EyeSlash } from 'svelte-hero-icons/dist' @@ -22,7 +22,7 @@ let loading = $state(false) async function markAsRead(isRead: boolean) { - if (!profile.current?.jwt) return + if (isRead && item.read) return loading = true @@ -96,7 +96,7 @@
    -
    +
    + {/snippet} {#snippet extended()} -
    + -
    + {/snippet} {#snippet content()} {#if item.type == 'comment_reply' || item.type == 'person_mention'} diff --git a/src/routes/inbox/messages/+page.svelte b/src/routes/inbox/messages/+page.svelte --- a/src/routes/inbox/messages/+page.svelte +++ b/src/routes/inbox/messages/+page.svelte @@ -137,7 +137,10 @@ {/if} {#snippet item(preview)} - +
    {preview.user.name}