From e4328ac41f7a64921bcb1a717f90ab44e0dc6385 Mon Sep 17 00:00:00 2001 From: Cade Date: Sat, 5 Nov 2022 16:23:12 +0100 Subject: [PATCH] Added theme and base config for desk --- config/docker-compose.yml | 62 +++++++++++ theme/README.md | 2 + theme/src/custom.css | 228 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 292 insertions(+) create mode 100644 config/docker-compose.yml create mode 100644 theme/README.md create mode 100644 theme/src/custom.css diff --git a/config/docker-compose.yml b/config/docker-compose.yml new file mode 100644 index 0000000..ad58292 --- /dev/null +++ b/config/docker-compose.yml @@ -0,0 +1,62 @@ +version: "3" + +networks: + nginx_net: + external: + name: nginx_net + desk_net: + external: + name: desk_net + +services: + nextcloud: + image: ghcr.io/linuxserver/nextcloud + container_name: desk + environment: + - PUID=${USER_PUID} + - PGID=${USER_PGID} + - TZ=${USER_TZ} + volumes: + - ./nextcloud_data/config:/config + - ./nextcloud_data/data:/data + # - ./solvable_files.sh:/solvable_files.sh + restart: unless-stopped + networks: + - desk_net + + mariadb: + image: ghcr.io/linuxserver/mariadb + container_name: desk-db + environment: + - PUID=${USER_PUID} + - PGID=${USER_PGID} + - MYSQL_ROOT_PASSWORD=#{MYSQL_ROOT_PASSWORD} + - TZ=${USER_TZ} + - MYSQL_DATABASE=#{MYSQL_DATABASE} + - MYSQL_USER=#{MYSQL_USER} + - MYSQL_PASSWORD=#{MYSQL_PASSWORD} + volumes: + - ./mariadb_data/config:/config + - ./mariadb_data/backup:/backup + restart: unless-stopped + networks: + - desk_net + + onlyoffice: + container_name: onlyoffice + image: onlyoffice/documentserver:latest + stdin_open: true + ports: + - 85:80 + environment: + - PUID=${USER_PUID} + - PGID=${USER_PGID} + - JWT_ENABLED=true + - JWT_SECRET=${JWT_SECRET} + cap_add: + - MKNOD + networks: + - desk_net + restart: always + volumes: + - ./onlyoffice_data/fonts:/usr/share/fonts diff --git a/theme/README.md b/theme/README.md new file mode 100644 index 0000000..1b56cd9 --- /dev/null +++ b/theme/README.md @@ -0,0 +1,2 @@ +# Underscore Desk theme +Useage: install theming in Nextcloud and insert custom theming. Requires Nextcloud 25 or higher. \ No newline at end of file diff --git a/theme/src/custom.css b/theme/src/custom.css new file mode 100644 index 0000000..84ec8bd --- /dev/null +++ b/theme/src/custom.css @@ -0,0 +1,228 @@ +/* karla-regular - latin-ext_latin */ +@font-face { + font-family: 'Karla'; + font-style: normal; + font-weight: normal; + src: url('/fonts/karla-v23-latin-ext_latin-regular.eot'); /* IE9 Compat Modes */ + src: local(''), + url('/fonts/karla-v23-latin-ext_latin-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ + url('/fonts/karla-v23-latin-ext_latin-regular.woff2') format('woff2'), /* Super Modern Browsers */ + url('/fonts/karla-v23-latin-ext_latin-regular.woff') format('woff'), /* Modern Browsers */ + url('/fonts/karla-v23-latin-ext_latin-regular.ttf') format('truetype'), /* Safari, Android, iOS */ + url('/fonts/karla-v23-latin-ext_latin-regular.svg#Karla') format('svg'); /* Legacy iOS */ +} +/* karla-700 - latin-ext_latin */ +@font-face { + font-family: 'Karla'; + font-style: normal; + font-weight: bold; + src: url('/fonts/karla-v23-latin-ext_latin-700.eot'); /* IE9 Compat Modes */ + src: local(''), + url('/fonts/karla-v23-latin-ext_latin-700.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ + url('/fonts/karla-v23-latin-ext_latin-700.woff2') format('woff2'), /* Super Modern Browsers */ + url('/fonts/karla-v23-latin-ext_latin-700.woff') format('woff'), /* Modern Browsers */ + url('/fonts/karla-v23-latin-ext_latin-700.ttf') format('truetype'), /* Safari, Android, iOS */ + url('/fonts/karla-v23-latin-ext_latin-700.svg#Karla') format('svg'); /* Legacy iOS */ +} +/* karla-italic - latin-ext_latin */ +@font-face { + font-family: 'Karla'; + font-style: italic; + font-weight: normal; + src: url('/fonts/karla-v23-latin-ext_latin-italic.eot'); /* IE9 Compat Modes */ + src: local(''), + url('/fonts/karla-v23-latin-ext_latin-italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ + url('/fonts/karla-v23-latin-ext_latin-italic.woff2') format('woff2'), /* Super Modern Browsers */ + url('/fonts/karla-v23-latin-ext_latin-italic.woff') format('woff'), /* Modern Browsers */ + url('/fonts/karla-v23-latin-ext_latin-italic.ttf') format('truetype'), /* Safari, Android, iOS */ + url('/fonts/karla-v23-latin-ext_latin-italic.svg#Karla') format('svg'); /* Legacy iOS */ +} +/* karla-700italic - latin-ext_latin */ +@font-face { + font-family: 'Karla'; + font-style: italic; + font-weight: bold; + src: url('/fonts/karla-v23-latin-ext_latin-700italic.eot'); /* IE9 Compat Modes */ + src: local(''), + url('/fonts/karla-v23-latin-ext_latin-700italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ + url('/fonts/karla-v23-latin-ext_latin-700italic.woff2') format('woff2'), /* Super Modern Browsers */ + url('/fonts/karla-v23-latin-ext_latin-700italic.woff') format('woff'), /* Modern Browsers */ + url('/fonts/karla-v23-latin-ext_latin-700italic.ttf') format('truetype'), /* Safari, Android, iOS */ + url('/fonts/karla-v23-latin-ext_latin-700italic.svg#Karla') format('svg'); /* Legacy iOS */ +} + +.theme--dark, .theme--light, [data-theme-dark], [data-theme-light], [data-theme-default] { + --font-face: 'Karla'; +} + +:root { + --body-container-margin: calc(var(--default-grid-baseline) * 1.5); + --body-container-radius: calc(var(--default-clickable-area) / 4 + var(--default-grid-baseline) * 2 - 2px); +} + +.theme--dark, .theme--light, [data-theme-dark], [data-theme-light], [data-theme-default], :root { + --color-main-background: #233B4A; + --color-main-background-not-plain: #0082c9; + --color-main-background-rgb: 35,59,74; + --color-main-background-translucent: rgba(var(--color-main-background-rgb), .97); + --color-main-background-blur: rgba(var(--color-main-background-rgb), .9); + --filter-background-blur: blur(25px); + --gradient-main-background: var(--color-main-background) 0%, var(--color-main-background-translucent) 85%, transparent 100%; + --color-background-hover: #1D2D37; + --color-background-dark: #1D2D37; + --color-background-darker: #3b3b3b; + --color-placeholder-light: #313131; + --color-placeholder-dark: #4a4a4a; + --color-main-text: #DBDBDB; + --color-text-maxcontrast: #DBDBDB; + --color-text-maxcontrast-default: #DBDBDB; + --color-text-maxcontrast-background-blur: #919191; + --color-text-light: #DBDBDB; + --color-text-lighter: #DBDBDB; + --color-scrollbar: #3C5565; + --color-error: #e9322d; + --color-error-rgb: 233,50,45; + --color-error-hover: #ed5a56; + --color-warning: #eca700; + --color-warning-rgb: 236,167,0; + --color-warning-hover: #efb832; + --color-success: #46ba61; + --color-success-rgb: 70,186,97; + --color-success-hover: #6ac780; + --color-loading-light: #777; + --color-loading-dark: #CCC; + --color-box-shadow-rgb: 0,0,0; + --color-box-shadow: #000000; + --color-border: #3C5565; + --color-border-dark: #3C5565; + --default-font-size: 15px; + --animation-quick: 100ms; + --animation-slow: 300ms; + --border-radius: 2px; + --border-radius-large: 8px; + --border-radius-pill: 72px; + --default-clickable-area: 44px; + --default-line-height: 24px; + --default-grid-baseline: 4px; + --header-height: 50px; + --navigation-width: 300px; + --sidebar-min-width: 300px; + --sidebar-max-width: 500px; + --list-min-width: 200px; + --list-max-width: 300px; + --header-menu-item-height: 44px; + --header-menu-profile-item-height: 66px; + --breakpoint-mobile: 1024px; + --primary-invert-if-bright: invert(100%); + --background-invert-if-dark: invert(100%); + --background-invert-if-bright: invert(100%); + --color-primary: #FEB9B3; + --color-primary-default: #1D3949; + --color-primary-text: #233B4A; + --color-primary-hover: #04537f; + --color-primary-light: #141e24; + --color-primary-light-text: #99c0d6; + --color-primary-light-hover: #1d272d; + --color-primary-text-dark: #ededed; + --color-primary-element: #03A59E; + --color-primary-element-text: #ffffff; + --color-primary-element-hover: #04537f; + --color-primary-element-light: #141e24; + --color-primary-element-light-text: #99c0d6; + --color-primary-element-light-hover: #1d272d; + --color-primary-element-text-dark: #141e24; + --gradient-primary-background: linear-gradient(40deg, var(--color-primary) 0%, var(--color-primary-hover) 100%); +} + +.header-menu.notifications-button > a > span > svg, +.header-menu.unified-search > a > span > svg { + --color-primary-text: #233B4A; +} + +#body-login .login-box > div > div { + display: none; +} + +#header, #header .app-menu-entry, #header #header-left, #header .header-right { + --primary-invert-if-bright: invert(100%); +} + +#body-login .guest-box { + background-color: rgba(248, 240, 239, 0.75) !important; + box-shadow: none !important; + border: 1px solid #6385ac; +} + +#body-login #alternative-logins:before { + content: "Welcome to Underscore Desk"; + margin: 0 auto; + left: 0; + right: 0; + top: 0; + height: 32px; + color: #1D3949; + overflow: visible; + font-size: 18px; + font-weight: bold; +} + +.app-menu-main .app-menu-entry .app-menu-entry--label[data-v-df2c884a], +.app-menu-main .app-menu-entry a[data-v-df2c884a] { + color: var(--color-main-background) !important; +} + +#body-login #alternative-logins .button-vue:first-child { + background-color: #1D3949; + color: #C6B2A7 !important; +} + +#body-login #alternative-logins .button-vue:first-child:after { + content: "Not an Underscore member? Continue as a guest…"; + position: absolute; + margin: 0 auto; + left: 0; + right: 0; + top: 7rem; + height: 24px; + color: #1D3949; + overflow: visible; + font-size: 13px; +} + +.app-menu-main:hover img[data-v-df2c884a], .app-menu-main:focus-within img[data-v-df2c884a], .app-menu-main .app-menu-entry:hover img[data-v-df2c884a], .app-menu-main .app-menu-entry:focus img[data-v-df2c884a] { + margin-top: 0px !important; +} + +.app-menu-main:hover .app-menu-entry--label[data-v-df2c884a], .app-menu-main:focus-within .app-menu-entry--label[data-v-df2c884a], .app-menu-main .app-menu-entry:hover .app-menu-entry--label[data-v-df2c884a], .app-menu-main .app-menu-entry:focus .app-menu-entry--label[data-v-df2c884a] { + opacity: 0 !important; + bottom: 0; +} + +/* Collectives */ +.text-menubar, .editor__content, .page-title { + max-width: none !important; +} + +.text-menubar .text-menubar__entries { + margin-left: 0 !important; +} + +.user-bubble__content { + margin-right: 2px !important; + top: 2px !important; + position: relative !important; +} + +.app-content-list-item.toplevel { + margin: 0 !important; + border-radius: 0 !important; + font-size: 1em !important; +} + +.app-content-list-item .app-content-list-item-icon .item-icon-emoji.landing-page { + margin: 0 !important; +} + +.app-content-list .app-content-list-item .app-content-list-item-icon { + font-size: 1.25em !important; +} \ No newline at end of file