diff --git a/infrastructure/docker-compose/configs/ocis/themes/dezky/assets/favicon.svg b/infrastructure/docker-compose/configs/ocis/themes/dezky/assets/favicon.svg new file mode 100644 index 0000000..52d9da5 --- /dev/null +++ b/infrastructure/docker-compose/configs/ocis/themes/dezky/assets/favicon.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/infrastructure/docker-compose/configs/ocis/themes/dezky/assets/logo-dark.svg b/infrastructure/docker-compose/configs/ocis/themes/dezky/assets/logo-dark.svg new file mode 100644 index 0000000..1c80500 --- /dev/null +++ b/infrastructure/docker-compose/configs/ocis/themes/dezky/assets/logo-dark.svg @@ -0,0 +1,10 @@ + + + + + + + + + dezky + diff --git a/infrastructure/docker-compose/configs/ocis/themes/dezky/assets/logo-light.svg b/infrastructure/docker-compose/configs/ocis/themes/dezky/assets/logo-light.svg new file mode 100644 index 0000000..ac8f0d7 --- /dev/null +++ b/infrastructure/docker-compose/configs/ocis/themes/dezky/assets/logo-light.svg @@ -0,0 +1,10 @@ + + + + + + + + + dezky + diff --git a/infrastructure/docker-compose/configs/ocis/themes/dezky/theme.json b/infrastructure/docker-compose/configs/ocis/themes/dezky/theme.json new file mode 100644 index 0000000..21e2e60 --- /dev/null +++ b/infrastructure/docker-compose/configs/ocis/themes/dezky/theme.json @@ -0,0 +1,186 @@ +{ + "clients": { + "android": {}, + "desktop": {}, + "ios": {}, + "web": { + "defaults": { + "appBanner": {}, + "designTokens": { + "breakpoints": { + "large-default": "", + "large-max": "", + "medium-default": "", + "medium-max": "", + "small-default": "", + "small-max": "", + "xlarge": "", + "xsmall-max": "" + }, + "fontSizes": { + "default": "", + "large": "", + "medium": "" + }, + "sizes": { + "form-check-default": "", + "height-small": "", + "height-table-row": "", + "icon-default": "", + "max-height-logo": "", + "max-width-logo": "", + "tiles-default": "", + "tiles-resize-step": "", + "width-medium": "" + }, + "spacing": { + "large": "", + "medium": "", + "small": "", + "xlarge": "", + "xsmall": "", + "xxlarge": "" + } + }, + "loginPage": { + "backgroundImg": "" + }, + "logo": { + "topbar": "themes/dezky/assets/logo-light.svg", + "login": "themes/dezky/assets/logo-dark.svg", + "favicon": "themes/dezky/assets/favicon.svg" + } + }, + "themes": [ + { + "designTokens": { + "colorPalette": { + "background-accentuate": "rgba(212,255,58,0.12)", + "background-default": "#FAFAF7", + "background-highlight": "rgba(212,255,58,0.18)", + "background-hover": "rgba(10,10,10,0.03)", + "background-muted": "#F4F3EE", + "background-secondary": "#FFFFFF", + "border": "#E6E4DC", + "color-components-apptopbar-background": "transparent", + "color-components-apptopbar-border": "rgba(244,243,238,0.12)", + "icon-archive": "#fbbe54", + "icon-audio": "#700460", + "icon-document": "#3b44a6", + "icon-folder": "#0A0A0A", + "icon-image": "#ee6b3b", + "icon-medical": "#0984db", + "icon-pdf": "#ec0d47", + "icon-presentation": "#ee6b3b", + "icon-spreadsheet": "#15c286", + "icon-video": "#045459", + "input-bg": "#FFFFFF", + "input-border": "#D4D2C8", + "input-text-default": "#0A0A0A", + "input-text-muted": "rgba(10,10,10,0.4)", + "swatch-brand-contrast": "#F4F3EE", + "swatch-brand-default": "#0A0A0A", + "swatch-brand-hover": "#1F1F1C", + "swatch-danger-contrast": "#FFFFFF", + "swatch-danger-default": "#E23030", + "swatch-danger-hover": "#C52525", + "swatch-danger-muted": "rgb(204, 117, 117)", + "swatch-inverse-default": "#ffffff", + "swatch-inverse-hover": "#ffffff", + "swatch-inverse-muted": "#bfbfbf", + "swatch-passive-contrast": "#ffffff", + "swatch-passive-default": "#4c5f79", + "swatch-passive-hover": "#43536b", + "swatch-passive-hover-outline": "#f7fafd", + "swatch-passive-muted": "#283e5d", + "swatch-primary-contrast": "#F4F3EE", + "swatch-primary-default": "#0A0A0A", + "swatch-primary-gradient": "#0A0A0A", + "swatch-primary-gradient-hover": "#1F1F1C", + "swatch-primary-hover": "#1F1F1C", + "swatch-primary-muted": "rgba(10,10,10,0.08)", + "swatch-primary-muted-hover": "rgba(10,10,10,0.12)", + "swatch-success-contrast": "#FFFFFF", + "swatch-success-default": "#1F8A5B", + "swatch-success-hover": "#18774E", + "swatch-success-muted": "rgb(83, 150, 10)", + "swatch-warning-contrast": "#0A0A0A", + "swatch-warning-default": "#E89A1F", + "swatch-warning-hover": "#CE8714", + "swatch-warning-muted": "rgba(183, 76, 27, .5)", + "text-default": "#0A0A0A", + "text-inverse": "#F4F3EE", + "text-muted": "rgba(10,10,10,0.55)" + } + }, + "isDark": false, + "name": "dezky" + } + ] + } + }, + "common": { + "logo": "themes/dezky/assets/logo-dark.svg", + "name": "dezky", + "shareRoles": { + "1c996275-f1c9-4e71-abdf-a42f6495e960": { + "iconName": "upload", + "label": "UnifiedRoleEditorLite" + }, + "2d00ce52-1fc2-4dbc-8b95-a73b73395f5a": { + "iconName": "pencil", + "label": "UnifiedRoleFileEditor" + }, + "312c0871-5ef7-4b3a-85b6-0e4074c64049": { + "iconName": "user-star", + "label": "UnifiedRoleManager" + }, + "3284f2d5-0070-4ad8-ac40-c247f7c1fb27": { + "iconName": "pencil", + "label": "UnifiedRoleSpaceEditorWithoutVersions" + }, + "58c63c02-1d89-4572-916a-870abc5a1b7d": { + "iconName": "pencil", + "label": "UnifiedRoleSpaceEditor" + }, + "63e64e19-8d43-42ec-a738-2b6af2610efa": { + "iconName": "stop-circle", + "label": "UnifiedRoleFullDenial" + }, + "a8d5fe5e-96e3-418d-825b-534dbdf22b99": { + "iconName": "eye", + "label": "UnifiedRoleSpaceViewer" + }, + "aa97fe03-7980-45ac-9e50-b325749fd7e6": { + "iconName": "shield", + "label": "UnifiedRoleSecureView" + }, + "b1e2218d-eef8-4d4c-b82d-0f1a1b48f3b5": { + "iconName": "eye", + "name": "UnifiedRoleViewer" + }, + "c1235aea-d106-42db-8458-7d5610fb0a67": { + "iconName": "pencil", + "label": "UnifiedRoleFileEditorListGrants" + }, + "d5041006-ebb3-4b4a-b6a4-7c180ecfb17d": { + "iconName": "eye", + "name": "UnifiedRoleViewerListGrants" + }, + "e8ea8b21-abd4-45d2-b893-8d1546378e9e": { + "iconName": "pencil", + "label": "UnifiedRoleEditorListGrants" + }, + "fb6c3e19-e378-47e5-b277-9732f9de6e21": { + "iconName": "pencil", + "label": "UnifiedRoleEditor" + } + }, + "slogan": "dezky – sikker plads til dine data", + "urls": { + "accessDeniedHelp": "https://dezky.eu", + "imprint": "https://dezky.eu/terms", + "privacy": "https://dezky.eu/privacy" + } + } +} diff --git a/infrastructure/docker-compose/configs/ocis/web-core/index.html b/infrastructure/docker-compose/configs/ocis/web-core/index.html new file mode 100644 index 0000000..4cf106d --- /dev/null +++ b/infrastructure/docker-compose/configs/ocis/web-core/index.html @@ -0,0 +1,185 @@ + + + + + + + + + dezky + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + + +

Your browser is not supported

+
+
+ +
+ + +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/infrastructure/docker-compose/docker-compose.yml b/infrastructure/docker-compose/docker-compose.yml index c69eb03..05fc0f5 100644 --- a/infrastructure/docker-compose/docker-compose.yml +++ b/infrastructure/docker-compose/docker-compose.yml @@ -357,11 +357,25 @@ services: OCIS_ADD_RUN_SERVICES: audit AUDIT_LOG_FILE_PATH: /var/log/ocis/audit.log AUDIT_LOG_FORMAT: json + # Whitelabel: serve our dezky theme dir under /themes/ and make it the + # active web theme (replaces the built-in ownCloud branding — name, logos, + # favicon, colours). Apache-2.0 lets us drop the ownCloud marks entirely. + WEB_ASSET_THEMES_PATH: /etc/ocis/web-themes + WEB_UI_THEME_PATH: /themes/dezky/theme.json + # Override ONLY index.html (OCIS layers WEB_ASSET_CORE_PATH over the + # embedded core via a fallback FS, so every other asset still serves from + # the binary). Our index hides the version footer (.versions) and sets the + # pre-hydration /theme-color to dezky. NOTE: index.html pins the + # built bundle hashes — refresh it from the live `/` after an OCIS image + # bump (or drop this mount) so the script refs stay valid. + WEB_ASSET_CORE_PATH: /etc/ocis/web-core volumes: - ocis_config:/etc/ocis - ocis_data:/var/lib/ocis - ocis_audit_log:/var/log/ocis - ./configs/ocis/csp.yaml:/etc/ocis/csp.yaml:ro + - ./configs/ocis/themes:/etc/ocis/web-themes:ro + - ./configs/ocis/web-core:/etc/ocis/web-core:ro networks: [dezky] depends_on: - authentik-server