diff --git a/REUSE.toml b/REUSE.toml index 35feb1c0332..302c6380c0b 100644 --- a/REUSE.toml +++ b/REUSE.toml @@ -71,6 +71,12 @@ precedence = "aggregate" SPDX-FileCopyrightText = "2018-2025 Google LLC" SPDX-License-Identifier = "Apache-2.0" +[[annotations]] +path = "img/dashboard/**.png" +precedence = "aggregate" +SPDX-FileCopyrightText = "Nextcloud GmbH " +SPDX-License-Identifier = "LicenseRef-NextcloudTrademarks" + [[annotations]] path = "img/emojis/**.gif" precedence = "aggregate" diff --git a/img/dashboard/meetings.png b/img/dashboard/meetings.png new file mode 100644 index 00000000000..5d5f9342c99 Binary files /dev/null and b/img/dashboard/meetings.png differ diff --git a/img/dashboard/mentions.png b/img/dashboard/mentions.png new file mode 100644 index 00000000000..73a642557bf Binary files /dev/null and b/img/dashboard/mentions.png differ diff --git a/img/dashboard/reminders.png b/img/dashboard/reminders.png new file mode 100644 index 00000000000..3bf94746994 Binary files /dev/null and b/img/dashboard/reminders.png differ diff --git a/img/dashboard/welcome.png b/img/dashboard/welcome.png new file mode 100644 index 00000000000..8a056145fdb Binary files /dev/null and b/img/dashboard/welcome.png differ diff --git a/src/components/Dashboard/DashboardSection.vue b/src/components/Dashboard/DashboardSection.vue new file mode 100644 index 00000000000..e522974cf7f --- /dev/null +++ b/src/components/Dashboard/DashboardSection.vue @@ -0,0 +1,117 @@ + + + + + + + diff --git a/src/components/Dashboard/EventCard.vue b/src/components/Dashboard/EventCard.vue index 735cb8a437b..a8b293d90e8 100644 --- a/src/components/Dashboard/EventCard.vue +++ b/src/components/Dashboard/EventCard.vue @@ -246,7 +246,7 @@ function handleJoin({ call }: { call: boolean }) { flex-direction: column; flex: 0 0 100%; max-width: 300px; - border: 3px solid var(--color-border); + border: 2px solid var(--color-border); padding: calc(var(--default-grid-baseline) * 2); border-radius: var(--border-radius-large); background-color: var(--color-main-background); @@ -255,7 +255,7 @@ function handleJoin({ call }: { call: boolean }) { background-color: var(--color-primary-light); &:not(.event-card--in-call) { - border-color: var(--color-primary-light) !important; + border-color: var(--color-primary-element-light-hover) !important; } } diff --git a/src/components/Dashboard/TalkDashboard.vue b/src/components/Dashboard/TalkDashboard.vue index 40c48c02f2e..233ec226695 100644 --- a/src/components/Dashboard/TalkDashboard.vue +++ b/src/components/Dashboard/TalkDashboard.vue @@ -6,18 +6,16 @@ import { showError } from '@nextcloud/dialogs' import { emit } from '@nextcloud/event-bus' import { isRTL, t } from '@nextcloud/l10n' -import { generateUrl } from '@nextcloud/router' -import { computed, nextTick, onBeforeUnmount, onMounted, ref, watch } from 'vue' +import { generateUrl, imagePath } from '@nextcloud/router' +import { useIsMobile, useIsSmallMobile } from '@nextcloud/vue/composables/useIsMobile' +import { computed, nextTick, onBeforeUnmount, ref, watch } from 'vue' import { useRouter } from 'vue-router' import { useStore } from 'vuex' import NcButton from '@nextcloud/vue/components/NcButton' -import NcEmptyContent from '@nextcloud/vue/components/NcEmptyContent' import NcInputField from '@nextcloud/vue/components/NcInputField' import NcPopover from '@nextcloud/vue/components/NcPopover' -import IconAlarm from 'vue-material-design-icons/Alarm.vue' import IconArrowLeft from 'vue-material-design-icons/ArrowLeft.vue' import IconArrowRight from 'vue-material-design-icons/ArrowRight.vue' -import IconAt from 'vue-material-design-icons/At.vue' import IconCalendarBlankOutline from 'vue-material-design-icons/CalendarBlankOutline.vue' import IconList from 'vue-material-design-icons/FormatListBulleted.vue' import IconMicrophoneOutline from 'vue-material-design-icons/MicrophoneOutline.vue' @@ -27,6 +25,7 @@ import IconVideoOutline from 'vue-material-design-icons/VideoOutline.vue' import ConversationsListVirtual from '../LeftSidebar/ConversationsList/ConversationsListVirtual.vue' import SearchMessageItem from '../RightSidebar/SearchMessages/SearchMessageItem.vue' import LoadingPlaceholder from '../UIShared/LoadingPlaceholder.vue' +import DashboardSection from './DashboardSection.vue' import EventCard from './EventCard.vue' import { CONVERSATION } from '../../constants.ts' import { getTalkConfig, hasTalkFeature } from '../../services/CapabilitiesManager.ts' @@ -43,6 +42,8 @@ const canModerateSipDialOut = hasTalkFeature('local', 'sip-support-dialout') && getTalkConfig('local', 'call', 'can-enable-sip') const canStartConversations = getTalkConfig('local', 'conversations', 'can-create') const isDirectionRTL = isRTL() +const isMobile = useIsMobile() +const isSmallMobile = useIsSmallMobile() const store = useStore() const router = useRouter() @@ -177,171 +178,190 @@ function scrollEventCards({ direction }: { direction: 'backward' | 'forward' })