fix(nubus): Update customization for improved UX.

This commit is contained in:
Thorsten Roßner
2024-09-30 10:04:38 +02:00
parent ef1dad7433
commit b9db81f69d
31 changed files with 129 additions and 16 deletions

View File

@@ -3,11 +3,6 @@
version = 1 version = 1
[[annotations]]
path = "helmfile/files/theme/*"
SPDX-FileCopyrightText = "2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH"
SPDX-License-Identifier = "Apache-2.0"
[[annotations]] [[annotations]]
path = "cspell.json" path = "cspell.json"
SPDX-FileCopyrightText = "2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH" SPDX-FileCopyrightText = "2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH"
@@ -17,3 +12,13 @@ SPDX-License-Identifier = "Apache-2.0"
path = "helmfile/files/gpg-pubkeys/*" path = "helmfile/files/gpg-pubkeys/*"
SPDX-FileCopyrightText = "2023 Bundesministerium des Innern und für Heimat, PG ZenDiS \"Projektgruppe für Aufbau ZenDiS\"" SPDX-FileCopyrightText = "2023 Bundesministerium des Innern und für Heimat, PG ZenDiS \"Projektgruppe für Aufbau ZenDiS\""
SPDX-License-Identifier = "CC0-1.0" SPDX-License-Identifier = "CC0-1.0"
[[annotations]]
path = "helmfile/files/theme/*"
SPDX-FileCopyrightText = "2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH"
SPDX-License-Identifier = "Apache-2.0"
[[annotations]]
path = "helmfile/files/portal-tiles/*"
SPDX-FileCopyrightText = "2024 Google LLC"
SPDX-License-Identifier = "Apache-2.0"

View File

@@ -36,6 +36,9 @@ component's log level to debug and it get some features like:
- An ingress for `http://minio-console.<your_domain>` is configured. - An ingress for `http://minio-console.<your_domain>` is configured.
and set the log level for components to "Debug". and set the log level for components to "Debug".
**Note**: When enabling debug and running upgrades you must manually delete all jobs before the upgrade. As with debug
we keep the jobs and some job fields are immutable it could otherwise lead into an upgrade failure.
**Note:** All containers should write their log output to STDOUT, if you find (valuable) logs inside a container, please let us know! **Note:** All containers should write their log output to STDOUT, if you find (valuable) logs inside a container, please let us know!
# Adding containers to a pod for debugging purposes # Adding containers to a pod for debugging purposes

View File

@@ -13,6 +13,8 @@ SPDX-License-Identifier: Apache-2.0
* [File-share configurability](#file-share-configurability) * [File-share configurability](#file-share-configurability)
* [Updated default subdomains in `global.hosts`](#updated-default-subdomains-in-globalhosts) * [Updated default subdomains in `global.hosts`](#updated-default-subdomains-in-globalhosts)
* [Updated `global.imagePullSecrets`](#updated-globalimagepullsecrets) * [Updated `global.imagePullSecrets`](#updated-globalimagepullsecrets)
* [Removal of unnecessary OX-Profiles in Nubus](#removal-of-unnecessary-ox-profiles-in-nubus)
* [Dedicated group for access of the UDM REST API](#dedicated-group-for-access-of-the-udm-rest-api)
* [Automated migrations](#automated-migrations) * [Automated migrations](#automated-migrations)
* [Local Postfix as Relay](#local-postfix-as-relay) * [Local Postfix as Relay](#local-postfix-as-relay)
* [Updated IAM component Nubus](#updated-iam-component-nubus) * [Updated IAM component Nubus](#updated-iam-component-nubus)
@@ -163,6 +165,49 @@ global:
- "external-registry" - "external-registry"
``` ```
#### Removal of unnecessary OX-Profiles in Nubus
The update will remove unnecessary OX-Profiles in Nubus, but can't as long as these profiles are in use.
So please ensure that only the following two supported profiles are assigned to your users:
- `opendesk_standard`: "opendesk Standard"
- `none`: "Login disabled"
You can check and update the profiles as follows:
- Login as IAM admin.
- Open the user module.
- Open the extended search by clicking the funnel (Trichter) icon next to the search input field.
- Open the "Property" (Eigenschaft) list and select "OX Access" (OX-Berechtigung).
- In the input field right next to the list enter an asterisk (*).
- Start the search by clicking once more on the funnel icon.
- Sort the result list for the "OX Access" column
- Edit every user that has a value different to `opendesk_standard` or `none`:
- Open the user.
- Go to section "OX App Suite".
- Change the value in the dropdown "OX Access" to either:
- "openDesk Standard" if the user should be able to use the Groupware module or
- "Login disabled" if the user should not user the Groupware module.
- Update the user account with the green "SAVE" button on top of the page.
#### Dedicated group for access of the UDM REST API
Prerequisite: You allow the use of the [IAM's API](https://docs.software-univention.de/developer-reference/5.0/en/udm/rest-api.html)
with the following settings:
```
functional:
externalServices:
nubus:
udmRestApi:
enabled: true
```
With 0.9.0 all members of the group "Domain Admins" were able to successfully authenticate with the API.
This has been changed and there is now a dedicated group required for using the API: `IAM API - Full Access`
If you need specific accounts to make use of the API, please go ahead and assign them to the aforementioned group.
### Automated migrations ### Automated migrations
#### Local Postfix as Relay #### Local Postfix as Relay

View File

@@ -82,23 +82,27 @@ global:
configUcr: configUcr:
directory: directory:
manager: manager:
rest:
authorized-groups:
domain-admins: __DELETE_KEY__
iam-api-full-access: "cn=IAM API - Full Access,cn=groups,{{ .Values.ldap.baseDn }}"
web: web:
modules: modules:
users: users:
user: user:
add: add:
default: cn=openDesk User,cn=templates,cn=univention,{{ .Values.ldap.baseDn }} default: "cn=openDesk User,cn=templates,cn=univention,{{ .Values.ldap.baseDn }}"
properties: properties:
description: description:
syntax: TextArea syntax: "TextArea"
firstname: firstname:
required: "true" required: "true"
mailPrimaryAddress: mailPrimaryAddress:
required: "true" required: "true"
username: username:
syntax: uid syntax: "uid"
search: search:
autosearch: "False" autosearch: "True"
wizard: wizard:
property: property:
invite: invite:
@@ -114,7 +118,7 @@ global:
ucs: ucs:
web: web:
theme: light theme: "light"
umc: umc:
cookie-banner: cookie-banner:
@@ -132,8 +136,12 @@ global:
all: all:
disabled: "True" disabled: "True"
self-service: self-service:
account-registration:
usertemplate: __DELETE_KEY__
passwordreset: passwordreset:
token_validity_period: 172800 token_validity_period: 172800
blacklist:
groups: __DELETE_KEY__
ingress: ingress:
certManager: certManager:
@@ -417,6 +425,10 @@ nubusStackDataUms:
smtpStartTls: false smtpStartTls: false
ldapBase: {{ .Values.ldap.baseDn }} ldapBase: {{ .Values.ldap.baseDn }}
templateContext: templateContext:
# creates the default.user and default.admin
loadDevData: true
portalHeaderLogo: {{ toYaml .Values.theme.imagery.logoHeaderSvgB64 | quote }}
portalTiles: {{ toYaml .Values.theme.portalTiles | nindent 6 }}
portalRealtimeCollaborationLinkBase: {{ printf "https://%s.%s" .Values.global.hosts.element .Values.global.domain }} portalRealtimeCollaborationLinkBase: {{ printf "https://%s.%s" .Values.global.hosts.element .Values.global.domain }}
portalRealtimeVideoconferenceLinkBase: {{ printf "https://%s.%s" .Values.global.hosts.jitsi .Values.global.domain }} portalRealtimeVideoconferenceLinkBase: {{ printf "https://%s.%s" .Values.global.hosts.jitsi .Values.global.domain }}
portalManagementProjectLinkBase: {{ printf "https://%s.%s" .Values.global.hosts.openproject .Values.global.domain }} portalManagementProjectLinkBase: {{ printf "https://%s.%s" .Values.global.hosts.openproject .Values.global.domain }}
@@ -455,12 +467,11 @@ nubusStackDataUms:
portaltileGroupLiveCollaboration: portaltileGroupLiveCollaboration:
- 'cn=managed-by-attribute-Livecollaboration,cn=groups,{{ .Values.ldap.baseDn }}' - 'cn=managed-by-attribute-Livecollaboration,cn=groups,{{ .Values.ldap.baseDn }}'
systemInformation: systemInformation:
enabled: true
releaseVersion: "Release: {{ .Values.global.systemInformation.releaseVersion }}" releaseVersion: "Release: {{ .Values.global.systemInformation.releaseVersion }}"
{{- if .Values.functional.admin.portal.deploymentInformation.enabled }} {{- if .Values.functional.admin.portal.deploymentTimestamp.enabled }}
deployDate: "Deployed: {{ now | date "2006-01-02T15:04:05-0700" }}" deployDate: "Deployed: {{ now | date "2006-01-02T15:04:05-0700" }}"
{{- else }} {{- else }}
deployDate: "not available" deployDate: false
{{- end }} {{- end }}
# In openDesk the external memcache does not expect a username to be set. Overwriting # In openDesk the external memcache does not expect a username to be set. Overwriting
# the default username of `selfservice` is part of the customizing: # the default username of `selfservice` is part of the customizing:

View File

@@ -4,8 +4,9 @@
functional: functional:
admin: admin:
portal: portal:
deploymentInformation: deploymentTimestamp:
# Disable to not provide and update openDesk release version and deployment timestamp for admins in the portal. # Set to `false` to disable to not provide and update openDesk deployment timestamp for admins in the portal.
# This is helpful in GitOps deployments as with the timestamp there will always be a change detected.
enabled: true enabled: true
authentication: authentication:

View File

@@ -369,7 +369,7 @@ images:
# upstreamRepository: "bmi/opendesk/components/platform-development/images/opendesk-nubus" # upstreamRepository: "bmi/opendesk/components/platform-development/images/opendesk-nubus"
registry: "registry.opencode.de" registry: "registry.opencode.de"
repository: "bmi/opendesk/components/platform-development/images/opendesk-nubus" repository: "bmi/opendesk/components/platform-development/images/opendesk-nubus"
tag: "1.5.1@sha256:d4b97a6438e89e747ab38d975895347eec5ecd771af4d35dd0865d98fd585029" tag: "1.6.8@sha256:cb93cab805aee16b6a1c6dea2442173ce87fe1241731926ac231f7eb27550a1b"
nubusOpenPolicyAgent: nubusOpenPolicyAgent:
# providerCategory: "Supplier" # providerCategory: "Supplier"
# providerResponsible: "Univention" # providerResponsible: "Univention"

View File

@@ -53,4 +53,29 @@ theme:
logoPortalBackgroundSvgB64: {{ readFile "./../../files/theme/logoPortalBackground.svg" | b64enc | quote }} logoPortalBackgroundSvgB64: {{ readFile "./../../files/theme/logoPortalBackground.svg" | b64enc | quote }}
portalCss: {{ readFile "./../../files/theme/portal.css" | b64enc }} portalCss: {{ readFile "./../../files/theme/portal.css" | b64enc }}
portalTiles:
adminAnnouncement: {{ readFile "./../../files/portal-tiles/admin_announcement.svg" | b64enc | quote }}
adminContext: {{ readFile "./../../files/portal-tiles/admin_context.svg" | b64enc | quote }}
adminFunctionalmailbox: {{ readFile "./../../files/portal-tiles/admin_functionalmailbox.svg" | b64enc | quote }}
adminGroup: {{ readFile "./../../files/portal-tiles/admin_group.svg" | b64enc | quote }}
adminResource: {{ readFile "./../../files/portal-tiles/admin_resource.svg" | b64enc | quote }}
adminUser: {{ readFile "./../../files/portal-tiles/admin_user.svg" | b64enc | quote }}
anonymousLogin: {{ readFile "./../../files/portal-tiles/anonymous_login.svg" | b64enc | quote }}
dummyCircle: {{ readFile "./../../files/portal-tiles/dummy_circle.svg" | b64enc | quote }}
fileshareActivity: {{ readFile "./../../files/portal-tiles/fileshare_activity.svg" | b64enc | quote }}
fileshareDirectdocOdp: {{ readFile "./../../files/portal-tiles/fileshare_directdoc_odp.svg" | b64enc | quote }}
fileshareDirectdocOds: {{ readFile "./../../files/portal-tiles/fileshare_directdoc_ods.svg" | b64enc | quote }}
fileshareDirectdocOdt: {{ readFile "./../../files/portal-tiles/fileshare_directdoc_odt.svg" | b64enc | quote }}
fileshareFiles: {{ readFile "./../../files/portal-tiles/fileshare_files.svg" | b64enc | quote }}
groupwareCalendar: {{ readFile "./../../files/portal-tiles/groupware_calendar.svg" | b64enc | quote }}
groupwareContacts: {{ readFile "./../../files/portal-tiles/groupware_contacts.svg" | b64enc | quote }}
groupwareMail: {{ readFile "./../../files/portal-tiles/groupware_mail.svg" | b64enc | quote }}
groupwareTasks: {{ readFile "./../../files/portal-tiles/groupware_tasks.svg" | b64enc | quote }}
managementKnowledge: {{ readFile "./../../files/portal-tiles/management_knowledge.svg" | b64enc | quote }}
managementProject: {{ readFile "./../../files/portal-tiles/management_project.svg" | b64enc | quote }}
realtimeCollaboration: {{ readFile "./../../files/portal-tiles/realtime_collaboration.svg" | b64enc | quote }}
realtimeVideoconference: {{ readFile "./../../files/portal-tiles/realtime_videoconference.svg" | b64enc | quote }}
selfserviceChangepassword: {{ readFile "./../../files/portal-tiles/selfservice_changepassword.svg" | b64enc | quote }}
selfserviceEditprofile: {{ readFile "./../../files/portal-tiles/selfservice_editprofile.svg" | b64enc | quote }}
selfserviceProtectaccount: {{ readFile "./../../files/portal-tiles/selfservice_protectaccount.svg" | b64enc | quote }}
... ...

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#5e27dd"><path d="M716.92-460v-40h129.23v40H716.92Zm43.39 258.46-103.39-77.54 24.93-31.69 103.38 77.54-24.92 31.69Zm-81.54-450.77L653.85-684l103.38-77.54 24.92 31.69-103.38 77.54ZM220-241.54v-152.31h-41.54q-26.84 0-45.73-18.88-18.88-18.89-18.88-45.73v-43.08q0-26.84 18.88-45.73 18.89-18.88 45.73-18.88h149.23L486.15-660v360l-158.46-93.85H260v152.31h-40Zm226.15-129.69v-217.54l-107.23 62.62H178.46q-9.23 0-16.92 7.69-7.69 7.69-7.69 16.92v43.08q0 9.23 7.69 16.92 7.69 7.69 16.92 7.69h160.46l107.23 62.62Zm110.77 6.77v-231.08q20.08 18.62 32.35 48.89 12.27 30.27 12.27 66.65 0 36.38-12.27 66.65-12.27 30.27-32.35 48.89ZM300-480Z"/></svg>

After

Width:  |  Height:  |  Size: 732 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#5e27dd"><path d="M160-440v-295.38q0-27.62 18.5-46.12Q197-800 224.62-800H440v360H160Zm240-40Zm120-320h215.38q27.62 0 46.12 18.5Q800-763 800-735.13V-600H520v-200Zm0 640v-360h280v295.38q0 27.62-18.5 46.12Q763-160 735.38-160H520ZM160-360h280v200H224.62q-27.62 0-46.12-18.5Q160-197 160-224.87V-360Zm240 40Zm160-320Zm0 160Zm-360 0h200v-280H224.62q-10.77 0-17.7 6.92-6.92 6.93-6.92 17.7V-480Zm360-160h200v-95.38q0-10.77-6.92-17.7-6.93-6.92-17.7-6.92H560v120Zm0 160v280h175.38q10.77 0 17.7-6.92 6.92-6.93 6.92-17.7V-480H560ZM200-320v95.38q0 10.77 6.92 17.7 6.93 6.92 17.7 6.92H400v-120H200Z"/></svg>

After

Width:  |  Height:  |  Size: 690 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#5e27dd"><path d="M600-240v89.23q0 12.39-9.19 21.58-9.19 9.19-21.58 9.19H150.77q-12.39 0-21.58-9.19-9.19-9.19-9.19-21.58v-258.46q0-12.39 9.19-21.58 9.19-9.19 21.58-9.19H280v-200q0-83.08 58.46-141.54Q396.92-840 480-840h160q83.08 0 141.54 58.46Q840-723.08 840-640v520h-40v-120H600Zm0-40h200v-360q0-66-47-113t-113-47H480q-66 0-113 47t-47 113v200h249.23q12.39 0 21.58 9.19 9.19 9.19 9.19 21.58V-280ZM420-580v-40h280v40H420Zm-60 294 200-114H160l200 114Zm0 40.77-200-114V-160h400v-199.23l-200 114ZM160-400v240-240Z"/></svg>

After

Width:  |  Height:  |  Size: 615 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#5e27dd"><path d="M103.85-215.38v-65.85q0-27.85 14.42-47.89 14.42-20.03 38.76-32.02 52.05-24.78 103.35-39.51 51.31-14.73 123.47-14.73 72.15 0 123.46 14.73 51.31 14.73 103.35 39.51 24.34 11.99 38.76 32.02 14.43 20.04 14.43 47.89v65.85h-560Zm640 0v-67.7q0-34.77-14.08-65.64-14.07-30.87-39.92-52.97 29.46 6 56.77 16.65 27.3 10.66 54 23.96 26 13.08 40.77 33.47 14.76 20.4 14.76 44.53v67.7h-112.3Zm-360-289.24q-49.5 0-84.75-35.25t-35.25-84.75q0-49.5 35.25-84.75t84.75-35.25q49.5 0 84.75 35.25t35.25 84.75q0 49.5-35.25 84.75t-84.75 35.25Zm290.77-120q0 49.5-35.25 84.75t-84.75 35.25q-2.54 0-6.47-.57-3.92-.58-6.46-1.27 20.33-24.9 31.24-55.24 10.92-30.34 10.92-63.01t-11.43-62.44q-11.42-29.77-30.73-55.62 3.23-1.15 6.46-1.5 3.23-.35 6.47-.35 49.5 0 84.75 35.25t35.25 84.75ZM143.85-255.38h480v-25.85q0-14.08-7.04-24.62-7.04-10.53-25.27-20.15-44.77-23.92-94.39-36.65-49.61-12.73-113.3-12.73-63.7 0-113.31 12.73-49.62 12.73-94.39 36.65-18.23 9.62-25.27 20.15-7.03 10.54-7.03 24.62v25.85Zm240-289.24q33 0 56.5-23.5t23.5-56.5q0-33-23.5-56.5t-56.5-23.5q-33 0-56.5 23.5t-23.5 56.5q0 33 23.5 56.5t56.5 23.5Zm0 289.24Zm0-369.24Z"/></svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#5e27dd"><path d="M180-160v-40h80v-600h320v40h120v560h80v40H660v-560h-80v560H180Zm120-600v560-560Zm160 310.77q12.38 0 21.58-9.19 9.19-9.2 9.19-21.58 0-12.38-9.19-21.58-9.2-9.19-21.58-9.19-12.38 0-21.58 9.19-9.19 9.2-9.19 21.58 0 12.38 9.19 21.58 9.2 9.19 21.58 9.19ZM300-200h240v-560H300v560Z"/></svg>

After

Width:  |  Height:  |  Size: 399 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#5e27dd"><path d="M480-504.62q-49.5 0-84.75-35.25T360-624.62q0-49.5 35.25-84.75T480-744.62q49.5 0 84.75 35.25T600-624.62q0 49.5-35.25 84.75T480-504.62ZM200-215.38v-65.85q0-24.77 14.42-46.35 14.43-21.57 38.81-33.5 56.62-27.15 113.31-40.73 56.69-13.57 113.46-13.57 56.77 0 113.46 13.57 56.69 13.58 113.31 40.73 24.38 11.93 38.81 33.5Q760-306 760-281.23v65.85H200Zm40-40h480v-25.85q0-13.31-8.58-25-8.57-11.69-23.73-19.77-49.38-23.92-101.83-36.65-52.45-12.73-105.86-12.73t-105.86 12.73Q321.69-349.92 272.31-326q-15.16 8.08-23.73 19.77-8.58 11.69-8.58 25v25.85Zm240-289.24q33 0 56.5-23.5t23.5-56.5q0-33-23.5-56.5t-56.5-23.5q-33 0-56.5 23.5t-23.5 56.5q0 33 23.5 56.5t56.5 23.5Zm0-80Zm0 369.24Z"/></svg>

After

Width:  |  Height:  |  Size: 794 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#5e27dd"><path d="M280-430.77q-20.69 0-34.96-14.27T230.77-480q0-20.69 14.27-34.96T280-529.23q20.69 0 34.96 14.27T329.23-480q0 20.69-14.27 34.96T280-430.77ZM280-280q-83.08 0-141.54-58.46Q80-396.92 80-480q0-83.08 58.46-141.54Q196.92-680 280-680q61.62 0 111.12 33.38 49.5 33.39 72.26 86.62h368.16l80 80-127.69 126.15-68.47-51.53-72.3 53.07L571.92-400H463.38q-22.76 52.46-72.26 86.23T280-280Zm0-40q59.08 0 100.81-35.54 41.73-35.54 53.42-84.46h150.39l57.23 38.69 74.3-53.31L781-405.77 855.23-480l-40-40h-381q-11.69-48.92-53.42-84.46Q339.08-640 280-640q-66 0-113 47t-47 113q0 66 47 113t113 47Z"/></svg>

After

Width:  |  Height:  |  Size: 694 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#5e27dd"><path d="M120-561.54v-155.38q0-27.62 18.5-46.12 18.5-18.5 46.12-18.5h590.76q27.62 0 46.12 18.5 18.5 18.5 18.5 46.12v155.38h-40v-155.38q0-9.23-7.69-16.93-7.69-7.69-16.93-7.69H184.62q-9.24 0-16.93 7.69-7.69 7.7-7.69 16.93v155.38h-40Zm64.62 300q-27.62 0-46.12-18.5-18.5-18.5-18.5-46.11v-195.39h40v195.39q0 9.23 7.69 16.92 7.69 7.69 16.93 7.69h590.76q9.24 0 16.93-7.69 7.69-7.69 7.69-16.92v-195.39h40v195.39q0 27.61-18.5 46.11t-46.12 18.5H184.62Zm-113.85 80v-40h818.46v40H70.77Zm409.23-340Zm-360 0v-40h200q5.62 0 10.62 2.92 5 2.93 7.69 8.31L403-421.15l139.15-249.62q2.7-5.15 7.47-7.19Q554.38-680 560-680q5.62 0 10.62 2.04 5 2.04 7.69 7.65l54.38 108.77H840v40H627.69q-8.69 0-16.77-4.73-8.07-4.73-12.3-13.42L558-620.38 418.08-372.31q-2.7 5.39-7.7 8.08-5 2.69-10.61 2.69-5.62 0-10.5-2.92-4.89-2.92-7.58-8.31l-74.38-148.77H120Z"/></svg>

After

Width:  |  Height:  |  Size: 935 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#5e27dd"><path d="M480-480ZM224.62-160q-27.62 0-46.12-18.5Q160-197 160-224.62v-510.76q0-27.62 18.5-46.12Q197-800 224.62-800h280v40h-280q-10.77 0-17.7 6.92-6.92 6.93-6.92 17.7v510.76q0 10.77 6.92 17.7 6.93 6.92 17.7 6.92h510.76q10.77 0 17.7-6.92 6.92-6.93 6.92-17.7v-280h40v280q0 27.62-18.5 46.12Q763-160 735.38-160H224.62Zm46.15-144.62h418.46L560-476.92 440-325.38l-80-96.16-89.23 116.92ZM680-600v-80h-80v-40h80v-80h40v80h80v40h-80v80h-40Z"/></svg>

After

Width:  |  Height:  |  Size: 546 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#5e27dd"><path d="M204.62-160q-27.62 0-46.12-18.5Q140-197 140-224.62v-510.76q0-27.62 18.5-46.12Q177-800 204.62-800h372.3v40h-372.3q-10.77 0-17.7 6.92-6.92 6.93-6.92 17.7v510.76q0 10.77 6.92 17.7 6.93 6.92 17.7 6.92h510.76q10.77 0 17.7-6.92 6.92-6.93 6.92-17.7v-372.3h40v372.3q0 27.62-18.5 46.12Q743-160 715.38-160H204.62Zm84.61-140h40v-240h-40v240ZM440-300h40v-360h-40v360Zm150.77 0h40v-120h-40v120ZM700-640v-80h-80v-40h80v-80h40v80h80v40h-80v80h-40ZM460-480Z"/></svg>

After

Width:  |  Height:  |  Size: 566 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#5e27dd"><path d="M204.62-160q-27.62 0-46.12-18.5Q140-197 140-224.62v-510.76q0-27.62 18.5-46.12Q177-800 204.62-800h372.3v40h-372.3q-9.24 0-16.93 7.69-7.69 7.69-7.69 16.93v510.76q0 9.24 7.69 16.93 7.69 7.69 16.93 7.69h510.76q9.24 0 16.93-7.69 7.69-7.69 7.69-16.93v-372.3h40v372.3q0 27.62-18.5 46.12Q743-160 715.38-160H204.62ZM320-300v-40h280v40H320Zm0-120v-40h280v40H320Zm0-120v-40h280v40H320Zm380-100v-80h-80v-40h80v-80h40v80h80v40h-80v80h-40Z"/></svg>

After

Width:  |  Height:  |  Size: 550 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#5e27dd"><path d="M180-200q-25.31 0-42.65-17.35Q120-234.69 120-260v-435.38q0-25.31 19.65-44.97Q159.31-760 184.62-760h199.23l80 80h311.53q20.7 0 36.12 11.19 15.42 11.19 21.58 28.81H447.77l-80-80H184.62q-10.77 0-17.7 6.92-6.92 6.93-6.92 17.7v430.76q0 8.47 4.23 13.85 4.23 5.39 11.15 9.23L266-544.62h648.62l-90.7 302.24q-5.69 19.07-21.8 30.73Q786-200 766.15-200H180Zm37.08-40h564.46l78.92-264.62H296L217.08-240Zm0 0L296-504.62 217.08-240ZM160-640v-80 80Z"/></svg>

After

Width:  |  Height:  |  Size: 558 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#5e27dd"><path d="M224.62-120q-27.62 0-46.12-18.5Q160-157 160-184.62v-510.76q0-27.62 18.5-46.12Q197-760 224.62-760h70.76v-89.23h43.08V-760h286.16v-89.23h40V-760h70.76q27.62 0 46.12 18.5Q800-723 800-695.38v510.76q0 27.62-18.5 46.12Q763-120 735.38-120H224.62Zm0-40h510.76q9.24 0 16.93-7.69 7.69-7.69 7.69-16.93v-350.76H200v350.76q0 9.24 7.69 16.93 7.69 7.69 16.93 7.69ZM200-575.39h560v-119.99q0-9.24-7.69-16.93-7.69-7.69-16.93-7.69H224.62q-9.24 0-16.93 7.69-7.69 7.69-7.69 16.93v119.99Zm0 0V-720-575.39Zm280 181.54q-12.38 0-21.58-9.19-9.19-9.19-9.19-21.58 0-12.38 9.19-21.57 9.2-9.19 21.58-9.19 12.38 0 21.58 9.19 9.19 9.19 9.19 21.57 0 12.39-9.19 21.58-9.2 9.19-21.58 9.19Zm-160 0q-12.38 0-21.58-9.19-9.19-9.19-9.19-21.58 0-12.38 9.19-21.57 9.2-9.19 21.58-9.19 12.38 0 21.58 9.19 9.19 9.19 9.19 21.57 0 12.39-9.19 21.58-9.2 9.19-21.58 9.19Zm320 0q-12.38 0-21.58-9.19-9.19-9.19-9.19-21.58 0-12.38 9.19-21.57 9.2-9.19 21.58-9.19 12.38 0 21.58 9.19 9.19 9.19 9.19 21.57 0 12.39-9.19 21.58-9.2 9.19-21.58 9.19ZM480-240q-12.38 0-21.58-9.19-9.19-9.19-9.19-21.58 0-12.38 9.19-21.58 9.2-9.19 21.58-9.19 12.38 0 21.58 9.19 9.19 9.2 9.19 21.58 0 12.39-9.19 21.58Q492.38-240 480-240Zm-160 0q-12.38 0-21.58-9.19-9.19-9.19-9.19-21.58 0-12.38 9.19-21.58 9.2-9.19 21.58-9.19 12.38 0 21.58 9.19 9.19 9.2 9.19 21.58 0 12.39-9.19 21.58Q332.38-240 320-240Zm320 0q-12.38 0-21.58-9.19-9.19-9.19-9.19-21.58 0-12.38 9.19-21.58 9.2-9.19 21.58-9.19 12.38 0 21.58 9.19 9.19 9.2 9.19 21.58 0 12.39-9.19 21.58Q652.38-240 640-240Z"/></svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#5e27dd"><path d="M480-418.46q25.31 0 42.65-17.35Q540-453.15 540-478.46t-17.35-42.66q-17.34-17.34-42.65-17.34t-42.65 17.34Q420-503.77 420-478.46q0 25.31 17.35 42.65 17.34 17.35 42.65 17.35ZM340-283.08h280v-6.07q0-18.62-9.92-31.7-9.93-13.07-26.77-20.77-23.69-10.23-49.66-15.84-25.96-5.62-53.65-5.62-27.69 0-53.65 5.62-25.97 5.61-49.66 15.84-16.84 7.7-26.77 20.77-9.92 13.08-9.92 31.7v6.07ZM695.38-120H264.62q-27.62 0-46.12-18.5Q200-157 200-184.62v-590.76q0-27.62 18.5-46.12Q237-840 264.62-840h278.46L760-623.08v438.46q0 27.62-18.5 46.12Q723-120 695.38-120Zm0-40q9.24 0 16.93-7.69 7.69-7.69 7.69-16.93V-606L526-800H264.62q-9.24 0-16.93 7.69-7.69 7.69-7.69 16.93v590.76q0 9.24 7.69 16.93 7.69 7.69 16.93 7.69h430.76ZM240-160v-640 640Z"/></svg>

After

Width:  |  Height:  |  Size: 838 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#5e27dd"><path d="M184.62-200q-27.62 0-46.12-18.5Q120-237 120-264.62v-430.76q0-27.62 18.5-46.12Q157-760 184.62-760h590.76q27.62 0 46.12 18.5Q840-723 840-695.38v430.76q0 27.62-18.5 46.12Q803-200 775.38-200H184.62ZM480-475.38 160-684.62v420q0 10.77 6.92 17.7 6.93 6.92 17.7 6.92h590.76q10.77 0 17.7-6.92 6.92-6.93 6.92-17.7v-420L480-475.38Zm0-44.62 307.69-200H172.31L480-520ZM160-684.62V-720v455.38q0 10.77 6.92 17.7 6.93 6.92 17.7 6.92H160v-444.62Z"/></svg>

After

Width:  |  Height:  |  Size: 554 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#5e27dd"><path d="M645.36-248.05 531.82-361.59l23.33-23.33 89.88 89.2 172.41-172.92 23.33 24.33-195.41 196.26Zm0-289.23L531.82-650.82l23.33-23.33 89.88 89.2 172.41-172.92 23.33 24.33-195.41 196.26ZM120-318.46v-33.85h320v33.85H120Zm0-289.23v-33.85h320v33.85H120Z"/></svg>

After

Width:  |  Height:  |  Size: 368 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#5e27dd"><path d="M480-113.85q-27.62 0-48.04-18.5-20.42-18.5-24.27-46.11h144.62q-3.85 27.61-24.27 46.11-20.42 18.5-48.04 18.5ZM340-249.23v-40h280v40H340ZM342.31-360q-56.69-37.15-89.5-94.23Q220-511.31 220-580q0-108.85 75.58-184.42Q371.15-840 480-840t184.42 75.58Q740-688.85 740-580q0 68.69-32.81 125.77T617.69-360H342.31ZM354-400h252q45-32 69.5-79T700-580q0-92-64-156t-156-64q-92 0-156 64t-64 156q0 54 24.5 101t69.5 79Zm126 0Z"/></svg>

After

Width:  |  Height:  |  Size: 532 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#5e27dd"><path d="M264.62-299.85h190.76v-33.84H264.62v33.84Zm120-163.23h190.76v-33.84H384.62v33.84Zm120-163.23h190.76v-33.84H504.62v33.84ZM218.46-160q-24.58 0-41.52-16.94Q160-193.88 160-218.46v-523.08q0-24.58 16.94-41.52Q193.88-800 218.46-800h523.08q24.58 0 41.52 16.94Q800-766.12 800-741.54v523.08q0 24.58-16.94 41.52Q766.12-160 741.54-160H218.46Zm0-33.85h523.08q9.23 0 16.92-7.69 7.69-7.69 7.69-16.92v-523.08q0-9.23-7.69-16.92-7.69-7.69-16.92-7.69H218.46q-9.23 0-16.92 7.69-7.69 7.69-7.69 16.92v523.08q0 9.23 7.69 16.92 7.69 7.69 16.92 7.69Zm-24.61-572.3V-193.85-766.15Z"/></svg>

After

Width:  |  Height:  |  Size: 679 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#5e27dd"><path d="M824.62-187.69 701.54-310.77H320q-25.38 0-43.46-18.08-18.08-18.07-18.08-43.46v-9.23h430.77q26.65 0 45.64-18.98 18.98-18.98 18.98-45.63V-720h9.23q25.38 0 43.46 18.08 18.08 18.07 18.08 43.46v470.77ZM175.38-435.31l66.24-66.23h367.61q10.77 0 17.69-6.92 6.93-6.92 6.93-17.69v-249.23q0-10.77-6.93-17.7Q620-800 609.23-800H200q-10.77 0-17.69 6.92-6.93 6.93-6.93 17.7v340.07Zm-40 96.85v-436.92q0-26.66 18.99-45.64Q173.35-840 200-840h409.23q26.65 0 45.64 18.98 18.98 18.98 18.98 45.64v249.23q0 26.65-18.98 45.63-18.99 18.98-45.64 18.98H258.46L135.38-338.46Zm40-187.69V-800-526.15Z"/></svg>

After

Width:  |  Height:  |  Size: 695 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#5e27dd"><path d="M820.09-310.77q-16.63 0-28.36-11.67Q780-334.1 780-350.77v-100q0-16.67 11.64-28.33 11.64-11.67 28.27-11.67t28.36 11.67Q860-467.44 860-450.77v100q0 16.67-11.64 28.33-11.64 11.67-28.27 11.67Zm-15.47 146.15v-61.23q-49.47-8-78.97-41.88-29.5-33.89-31.8-83.04h30.77q0 39.69 27.66 67.54 27.66 27.85 67.72 27.85t67.72-27.67q27.66-27.66 27.66-67.72h30.77q-2.3 49.15-31.42 83.04-29.11 33.88-79.35 41.8v61.31h-30.76ZM346.15-506.15q-44.46-1.54-76.84-35.47-32.39-33.92-32.39-83 0-49.07 32.39-83 32.38-33.92 76.84-35.46 2.97 0 5.83.46 2.87.47 6.64 1.62-19.08 21-28.85 49.88-9.77 28.89-9.77 66.5 0 37.62 9.38 65.74 9.39 28.11 29.24 50.65-3 1.15-6.12 1.61-3.12.47-6.35.47ZM76.92-215.38V-281q0-20.92 11.23-40.69 11.23-19.77 34.31-34.77 18-10.77 40.58-19.5t47.11-13.66q-23.84 17.24-37 44.85Q160-317.15 160-281v65.62H76.92ZM520-504.62q-49.5 0-84.75-35.25T400-624.62q0-49.5 35.25-84.75T520-744.62q49.5 0 84.75 35.25T640-624.62q0 49.5-35.25 84.75T520-504.62Zm0-40q33 0 56.5-23.5t23.5-56.5q0-33-23.5-56.5t-56.5-23.5q-33 0-56.5 23.5t-23.5 56.5q0 33 23.5 56.5t56.5 23.5ZM240-215.38V-281q0-24.77 14.31-46.46t38.92-33.62q47.92-23.69 107.42-39 59.5-15.3 119.35-15.3 25.85 0 54.65 3.96 28.81 3.96 53.66 10.34-3.85 8-6.12 18.66-2.27 10.65-3.5 20.11-24.23-6.92-49.73-10-25.5-3.07-48.96-3.07-63.54 0-116.73 15.3-53.19 15.31-90.73 34.08-15.39 7.31-23.96 19.5Q280-294.31 280-281v25.62h360.08q6.54 12.15 14.69 21.76 8.15 9.62 18.23 18.24H240Zm280-409.24Zm0 369.24Z"/></svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#5e27dd"><path d="M186.15-186.15v-40h123.62Q238-288.62 209-349.08q-29-60.46-29-127.84 0-98.16 56.08-176.35Q292.15-731.46 380-762.31v42.46q-71.54 29.62-115.77 96.12Q220-557.23 220-476.92q0 60.92 25.73 112.19 25.73 51.27 91.19 108.88v-121.07h40v190.77H186.15ZM740-478.46q0-62.54-25.88-114.35-25.89-51.81-91.04-110.57v120.3h-40v-190.77h190.77v40H650.23q75.92 64.54 103.5 129.27T780-478.46h-40ZM646.15-90.77q-14.69 0-25.8-11.11-11.12-11.12-11.12-25.81v-107.69q0-14.7 11.12-25.81 11.11-11.12 25.8-11.12H650v-40q0-29.92 20.42-50.34 20.43-20.43 50.35-20.43t50.35 20.43q20.42 20.42 20.42 50.34v40h3.84q14.7 0 25.04 11.12 10.35 11.11 10.35 25.81v107.69q0 14.69-11.12 25.81-11.11 11.11-25.8 11.11h-147.7Zm34.62-181.54h80v-40q0-17-11.5-28.5t-28.5-11.5q-17 0-28.5 11.5t-11.5 28.5v40Z"/></svg>

After

Width:  |  Height:  |  Size: 878 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#5e27dd"><path d="M184.62-120q-27.62 0-46.12-18.5Q120-157 120-184.62v-390.76q0-27.62 18.5-46.12Q157-640 184.62-640H400v-160q0-16.85 11.58-28.42Q423.15-840 440-840h80q16.85 0 28.42 11.58Q560-816.85 560-800v160h215.38q27.62 0 46.12 18.5Q840-603 840-575.38v390.76q0 27.62-18.5 46.12Q803-120 775.38-120H184.62Zm0-40h590.76q10.77 0 17.7-6.92 6.92-6.93 6.92-17.7v-390.76q0-10.77-6.92-17.7-6.93-6.92-17.7-6.92H560v30.77q0 16.08-11.96 28.04T520-529.23h-80q-16.08 0-28.04-11.96T400-569.23V-600H184.62q-10.77 0-17.7 6.92-6.92 6.93-6.92 17.7v390.76q0 10.77 6.92 17.7 6.93 6.92 17.7 6.92Zm67.69-103.08h215.38v-5.69q0-13.92-7.57-25.35-7.58-11.42-20.74-17.88-19.23-8.23-38.96-12.35-19.73-4.11-40.42-4.11t-40.42 4.11q-19.73 4.12-38.96 12.35-13.16 6.46-20.74 17.88-7.57 11.43-7.57 25.35v5.69ZM560-324.62h160V-360H560v35.38ZM360-360q19.62 0 33.65-14.04 14.04-14.04 14.04-33.65 0-19.62-14.04-33.66-14.03-14.03-33.65-14.03-19.62 0-33.65 14.03-14.04 14.04-14.04 33.66 0 19.61 14.04 33.65Q340.38-360 360-360Zm200-60h160v-35.38H560V-420ZM440-569.23h80V-800h-80v230.77ZM480-380Z"/></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#5e27dd"><path d="M184.62-200q-27.62 0-46.12-18.5Q120-237 120-264.62v-430.76q0-27.62 18.5-46.12Q157-760 184.62-760h590.76q27.62 0 46.12 18.5Q840-723 840-695.38V-591h-40v-93.62L480-475.38 160-684.62v420q0 10.77 6.92 17.7 6.93 6.92 17.7 6.92h440v40h-440ZM480-520l307.69-200H172.31L480-520ZM160-240v-480 480Zm580 40q-14.69 0-25.04-10.35-10.34-10.34-10.34-25.03v-120q0-14.7 11.5-25.04 11.5-10.35 28.5-10.35v-44.61q0-31.47 21.96-53.43T820-510.77q31.46 0 53.42 21.96t21.96 53.43v44.61q17 0 28.5 10.35 11.5 10.34 11.5 25.04v120q0 14.69-10.34 25.03Q914.69-200 900-200H740Zm35.38-190.77h89.24v-44.61q0-18.54-13.04-31.58T820-480q-18.54 0-31.58 13.04t-13.04 31.58v44.61Z"/></svg>

After

Width:  |  Height:  |  Size: 766 B