From 862c03a3c31ee75b6af1bf81de6361497c9db625 Mon Sep 17 00:00:00 2001 From: Prarup Gurung Date: Fri, 12 Jan 2024 00:32:09 +0000 Subject: [PATCH] Bump ocis commit-id to include fix for ocis build pipeline (#10314) --- deployments/oc10-app.md | 1 - getting-started.md | 11 - testing/testing.md | 14 +- theming/_index.md | 509 ++++++++++++---------------------------- 4 files changed, 156 insertions(+), 379 deletions(-) diff --git a/deployments/oc10-app.md b/deployments/oc10-app.md index aeace71bf2f..ce9602fcfde 100644 --- a/deployments/oc10-app.md +++ b/deployments/oc10-app.md @@ -85,7 +85,6 @@ There are a few config values which need to be set in order for ownCloud Web to "apps" : [ "files", "preview", - "search", "draw-io" ], "applications" : [ diff --git a/getting-started.md b/getting-started.md index c2ed26b8e27..9bd27eb20e3 100644 --- a/getting-started.md +++ b/getting-started.md @@ -73,20 +73,9 @@ Depending on the backend you are using, there are sample config files provided i - `options.upload.xhr.timeout` Specifies the timeout for XHR uploads in milliseconds. - `options.editor.autosaveEnabled` Specifies if the autosave for the editor apps is enabled. - `options.editor.autosaveInterval` Specifies the time interval for the autosave of editor apps in seconds. -- `options.editor.openAsPreview` Specifies if non-personal files i.e. files in shares, spaces or public links are being opened in read only mode so the user needs to manually switch to edit mode. Can be set to `true`, `false` or an array of web app/editor names. - `options.contextHelpersReadMore` Specifies whether the "Read more" link should be displayed or not. - `options.openLinksWithDefaultApp` Specifies whether single file link shares should be opened with default app or not. - `options.tokenStorageLocal` Specifies whether the access token will be stored in the local storage when set to `true` or in the session storage when set to `false`. If stored in the local storage, login state will be persisted across multiple browser tabs, means no additional logins are required. Defaults to `true`. -- `options.loginUrl` Specifies the target URL to the login page. This is helpful when an external IdP is used. This option is disabled by default. Example URL like: 'https://www.myidp.com/login'. -- `options.logoutUrl` Adds a link to the user's profile page to point him to an external page, where he can manage his session and devices. This is helpful when an external IdP is used. This option is disabled by default. -- `options.ocm.openRemotely` Specifies whether opening files in remote shares in their original ocm instance should be enabled. Defaults to `false`. -- `options.userListRequiresFilter` Defines whether one or more filters must be set in order to list users in the Web admin settings. Set this option to 'true' if running in an environment with a lot of users and listing all users could slow down performance. Defaults to `false`. -- `options.concurrentRequests` This accepts an object with the following optional fields to customize the maximum number of concurrent requests in code paths where we limit concurrent requests - - `resourceBatchActions` Concurrent number of file/folder/space batch actions like e.g. accepting shares. Defaults to 4. - - `sse` Concurrent number of SSE event handlers. Defaults to 4. - - `shares` Accepts an object regarding the following sharing related options: - - `create` Concurrent number of share invites. Defaults to 4. - - `list` Concurrent number of individually loaded shares. Defaults to 2. #### Scripts and Styles diff --git a/testing/testing.md b/testing/testing.md index e948cb69839..aead5528136 100644 --- a/testing/testing.md +++ b/testing/testing.md @@ -61,7 +61,7 @@ Bundle the web frontend with the following command: $ pnpm build:w ``` -Our compose setup automatically mounts it into an oCIS backend, respectively. Web also gets recompiled on changes. +Our compose setup automatically mounts it into an oC10 and oCIS backend, respectively. Web also gets recompiled on changes. #### Run E2E Tests @@ -77,13 +77,11 @@ To run a particular test, simply add the feature file and line number to the tes Various options are available via ENV variables, e.g. -- `BASIC_AUTH=true` use basic authorization for api requests. - `RETRY=n` to retry failures `n` times - `SLOW_MO=n` to slow the execution time by `n` milliseconds - `TIMEOUT=n` to set tests to timeout after `n` milliseconds - `HEADLESS=bool` to open the browser while the tests run (defaults to true => headless mode) -- `BROWSER=name` to run tests against a specific browser. Defaults to chromium, available are chromium, firefox, webkit, chromium -- `ADMIN_PASSWORD` to set administrator password. By default, the `admin` password is used in the test +- `BROWSER=name` to run tests against a specific browser. Defaults to Chrome, available are Chrome, Firefox, Webkit, Chromium For debugging reasons, you may want to record a video or traces of your test run. Again, you can use the following ENV variables in your command: @@ -128,17 +126,17 @@ $ pnpm build:w The acceptance tests need additional docker containers to be running. ```shell -$ docker compose up ocis selenium middleware-ocis +$ docker compose up ocis vnc selenium middleware-ocis ``` and make sure there are no conflicting ports and everything runs smoothly. You can check if everything has worked by opening [https://host.docker.internal:9200](https://host.docker.internal:9200) and logging in using the demo user (admin/admin). -If you're using a M1 Mac, you need to use `seleniarm/standalone-chromium:4.7.0-20221206`for now. To do so, export `SELENIUM_IMAGE=seleniarm/standalone-chromium:4.7.0-20221206`. +If you're using a M1 Mac, you need to use `seleniarm/standalone-chromium:4.4.0-20220814`for now. To do so, export `SELENIUM_IMAGE=seleniarm/standalone-chromium:4.4.0-20220814`. #### Run acceptance tests - Change the directory to `tests/acceptance` -- Install all the test dependencies with `pnpm install` command +- Install all the test dependencies with `pnpm` command - Run the tests ```shell @@ -147,7 +145,7 @@ If you're using a M1 Mac, you need to use `seleniarm/standalone-chromium:4.7.0-2 #### Watch the Test Run -To watch the tests while running, open [http://host.docker.internal:7900/](http://host.docker.internal:7900/) in the browser to access your VNC client. +To watch the tests while running, open [http://host.docker.internal:6080/](http://host.docker.internal:6080/) in the browser to access your VNC client. ### Analyze the Test Report diff --git a/theming/_index.md b/theming/_index.md index bf9e1ed6c47..a4ac513155a 100644 --- a/theming/_index.md +++ b/theming/_index.md @@ -14,7 +14,7 @@ geekdocCollapseSection: true By providing your own theme, you can customize the user experience for your own ownCloud installation. This is being achieved by providing a `json` file that contains text snippets (like brand name and slogan), paths to images (e.g. logos or favicon) and design tokens for various color, sizing and spacing parameters. -This page documents the setup and configuration options, and provides a template for you to get started. +This page documents the setup and configuration options, and provides an empty template for you to get started. ## Ways of providing a theme @@ -25,137 +25,60 @@ To reference your theme, you have two options: - Using a URL, e.g. `"theme": "https://externalurl.example.com/theme-name/theme.json",`. To avoid CORS issues, please make sure that you host the URL on the same URL as your ownCloud web hosting. - For development and testing purposes, you can store your `theme.json` inside `packages/web-runtime/themes/{theme-name}/` and reference it in the `config.json`. However, this isn't recommended for production use since your changes may get lost when updating oCIS or the `web` app in OC10. -**Hint:** If no theme is provided, the loading of your custom theme fails or the theme can't be parsed correctly, the standard ownCloud theme will be loaded as a fallback and an error with further information will be logged on the browser console. +**Hint:** If no theme is provided or the loading of your custom theme fails, the standard ownCloud theme will be loaded as a fallback. However, this doesn't stop you from correctly loading a theme that is wrongly formatted, so please read the instructions below carefully. ## Configuring a theme -Inside your `theme.json`, there is a `common` key, which is explained in the next section, and a `clients` key: Here, you can find the available ownCloud clients - please note that the documentation below focuses on `web` and check the respective documentation for other clients for details on their themability. +Inside your `theme.json`, you can provide multiple themes as first-level objects. Currently, only the one called `"default"` gets applied when the frontend application is started. In the future, we'll provide functionality to dynamically switch between those themes. -The general top-level structure of a valid `theme.json` is outlined below: - -```json -{ - "common": {}, - "clients": { - "android": {}, - "desktop": {}, - "ios": {}, - "web": {} - } -} -``` - -### Common section - -The `common` section provides a set of information that is designed to be available for all clients. It gets merged "down" to the final themes and aims to reduce duplication, but can be overwritten by more specific information inside both the clients' defaults and actual themes. - -The structure of a valid `common` section is outlined below: - -```json -"common": { - "name": "ownCloud", - "slogan": "ownCloud – A safe home for all your data", - "logo": "themes/owncloud/assets/logo.svg", - "urls": { - "accessDeniedHelp": "", - "imprint": "", - "privacy": "" - } -} -``` - -All of the below parameters are required: -- `name` specifies the publicly visible name -- `slogan` specifies the publicly visible slogan -- `logo` specifies the logo in e.g. the top bar within the web UI -- `accessDeniedHelp` specifies the target URL for the access denied help link -- `imprintUrl` specifies the target URL for the imprint link -- `privacyUrl` specifies the target URL for the privacy link - -### Web Theme - -The structure of a valid `web` client section is outlined below: +You can use the snippet below as a base for writing your own theme by replacing the strings and image file paths accordingly. Also, make sure to delete the comments from the file. ```json { + "common": { + "name": "ownCloud", + "slogan": "ownCloud – A safe home for all your data", + "logo": "themes/owncloud/assets/logo.svg" + }, + "ios": {}, "web": { - "defaults": { - "appBanner": { - // Please see below for details - }, - "common": { - // Please see top level "common" section for details + "default": { + "general": { + "name": "ownCloud", + "slogan": "ownCloud – A safe home for all your data" }, "logo": { - // Please see below for details + "topbar": "https://externalurl.example.com/url/for/remote/theme/assets/logo.svg", + "favicon": "https://externalurl.example.com/url/for/remote/theme/assets/favicon.jpg", + "login": "relative/path/for/local/theme/logo.svg" }, "loginPage": { - // Please see below for details + "autoRedirect": true, + "backgroundImg": "relative/path/for/local/theme/background.jpg" }, - "designTokens": { - // Please see below for details - } + "designTokens": {} }, - "themes": [ - // Your custom web themes go here, see below for details - ] + "alternative": {}, + "dark": {} } } ``` -#### The "defaults" - -Similar to the top level `common` section, this object contains information that shall be shared among the available themes and can/should be defined only once. The top level `common` section first gets merged into the `defaults`, which then get merged into the individual themes. - -##### The "appBanner" options - -Configures a app banner that gets shown on mobile devices and suggests downloading the native client from the respective app store. Omitting the key disables the banner. - -Example structure: - -```json -{ - "appBanner": { - "title": "ownCloud", - "publisher": "ownCloud GmbH", - "additionalInformation": "", - "ctaText": "OPEN", - "icon": "themes/owncloud/assets/owncloud-app-icon.png", - "appScheme": "owncloud" - } -} -``` +See below for the meaning of all the first-level objects inside a single theme and recommendations on how to make best use of them: -- `title` is usually your app's name as shown in the App Store or Google Play. `publisher` is the app developer's name. -- `additionalInformation` can be used to specify pricing information, such as "FREE" or a catchphrase like "Don't miss out on our awesome app!". -- `ctaText` refers to the text in the call to action button on the right side. The `icon` directive may be used to specify your own app icon. -- `icon` links the icon to be displayed as a preview for the final app icon within the app banner -- `appScheme` is the first part of the URL that is used to tell the mobile OS which app to open, so using `ownCloud` will generate links such as `owncloud://yourdomain.com/f/2b61b822...`. +## The "general" options -##### The "logo" options +Here, you can specify a `"name"` and a `"slogan"` string. The name gets used in the HTML page ``, and both of them are shown on various screens (e.g. login, loading, error and public share pages). -Here, you can specify the images to be used in the `"topbar"`, for the `"favicon"` and on the `"login"` page. Various formats are supported and it's up to you to decide which one fits your use case best. +## The "logo" options -```json -"logo": { - "topbar": "themes/owncloud/assets/logo.svg", - "favicon": "themes/owncloud/assets/favicon.jpg", - "login": "themes/owncloud/assets/logo.svg" -}, -``` +Here, you can specify the images to be used in the `"topbar"`, for the `"favicon"` and on the `"login"` page. Various formats are supported and it's up to you to decide which one fits best to your use case. -##### The "loginPage" options +## The "loadingPage" options Using the `"autoRedirect"` boolean, you can specify whether the user is shown a login page before possible getting redirected to your LDAP/OIDC/OAuth provider. If it is set to true, you can set the background image for said login page by providing an image file in the `"backgroundImg"` option. -```json -"loginPage": { - "autoRedirect": true, - "backgroundImg": "themes/owncloud/assets/loginBackground.jpg" -}, -``` - -##### The "designTokens" options +## Design Tokens To further customize your ownCloud instance, you can provide your own styles. To give you an idea of how a working design system looks like, feel free to head over to the [ownCloud design tokens](https://owncloud.design/#/Design%20Tokens) for inspiration. @@ -164,27 +87,32 @@ To further customize your ownCloud instance, you can provide your own styles. To In general, the theme loader looks for a `designTokens` key inside your theme configuration. Inside the `designTokens`, it expects to find a `colorPalette`, `fontSizes` and `spacing` collection. The structure is outlined below: ```json -"designTokens": { - "breakpoints": { - // Please see below for details - }, - "colorPalette": { - // Please see below for details - }, - "fontFamily": "", // Please see below for details - "fontSizes": { - // Please see below for details - }, - "sizes": { - // Please see below for details - }, - "spacing": { - // Please see below for details +{ + "common": {}, + "ios": {}, + "web": { + "default": { + "general": {}, + "designTokens": { + "breakpoints": {}, + "colorPalette": {}, + "fontFamily": "", + "fontSizes": {}, + "sizes": {}, + "spacing": {} + } + } } } ``` -###### Breakpoints +Please follow this structure to make sure your theming configuration can be loaded correctly. + +### Extendability + +If you define different key-value pairs inside any of the objects in `"designTokens"`, they will get loaded and initialized as CSS custom properties but don't take any effect in the user interface. This gives you an opportunity to, for example, customize extensions from within the theme in the web runtime (and not the extension itself). + +### Breakpoints If you'd like to set different breakpoints than the default ones in the ownCloud design system, you can set them using theming variables. @@ -205,7 +133,7 @@ Breakpoint variables get prepended with `--oc-breakpoint-`, so e.g. _"large-defa } ``` -###### Colors +### Colors For the color values, you can use any valid CSS color format, e.g. **hex** (#fff), **rgb** (rgb(255,255,255)) or **color names** (white). @@ -263,7 +191,7 @@ Again, you can use the [ownCloud design tokens](https://owncloud.design/#/Design } ``` -###### Font sizes +### Font sizes You can change the `default`, `large` and `medium` font sizes according to your needs. If you need more customization options regarding font sizes, please [open an issue on GitHub](https://github.com/owncloud/web/issues/new) with a detailed description. @@ -279,7 +207,7 @@ Font size variables get prepended with `--oc-font-size-`, so e.g. _"default"_ cr } ``` -###### Font family +### Font family You can change the font family according to your needs. The font family gets written into the `--oc-font-family` CSS variable. @@ -291,7 +219,7 @@ You can change the font family according to your needs. The font family gets wri Please note that you also need to make the font available as a `font-face` via CSS. -###### Sizes +### Sizes Use sizing variables to change various UI elements, such as icon and logo appearance, table row or checkbox sizes, according to your needs. If you need more customization options regarding sizes, please [open an issue on GitHub](https://github.com/owncloud/web/issues/new) with a detailed description. @@ -307,14 +235,12 @@ Size variables get prepended with `--oc-size-`, so e.g. _"icon-default"_ creates "icon-default": "", "max-height-logo": "", "max-width-logo": "", - "width-medium": "", - "tiles-default": "", - "tiles-resize-step": "" + "width-medium": "" } } ``` -###### Spacing +### Spacing Use the six spacing options (`xsmall | small | medium | large | xlarge | xxlarge`) to create a more (or less) condensed version of the user interface. If you need more customization options regarding sizes, please [open an issue on GitHub](https://github.com/owncloud/web/issues/new) with a detailed description. @@ -333,245 +259,110 @@ Spacing variables get prepended with `--oc-space-`, so e.g. _"xlarge"_ creates t } ``` -#### Actual Themes - -Apart from the `defaults`, you need to provide one or more themes in the `themes` key within the `web`-`clients` in your `theme.json`. As a reminder, the general structure should be: - -```json -{ - "common": { ... }, - "clients": { - ..., - "web": { - "defaults": { - ... - }, - "themes": [ - { - "isDark": false, - "name": "Light Theme", - } - ] - } - } -} -``` - -Again, both the global `common` section as well as the `defaults` will get merged into your themes, but locally provided information takes precedence. - -Required information -- `name` for the visible name in the theme switcher and to save the current theme to localStorage -- `isDark` to provide the user agent with additional information - -Optional information -- `appBanner` see section above -- `common` see section above -- `designTokens` see section above -- `logo` see section above -- `loginPage` see section above - -## Extendability - -If you define different key-value pairs inside any of the objects (`breakpoints`, `colorPalette`, `fontSizes`, `sizes`, `spacing`) in `"designTokens"`, they will get loaded and initialized as CSS custom properties but don't necessarily take any effect in the user interface. This gives you an opportunity to, for example, customize extensions from within the theme in the web runtime (and not the extension itself). - ## Example theme -A full template for your custom theme is provided below, and you can use the instructions above to set it up according to your needs: +An empty template for your custom theme is provided below, and you can use the instructions above to set it up according to your needs. Please note that since changing themes at runtime is not yet supported it only consists of a `default` theme. ```json { "common": { - "name": "ownCloud", - "slogan": "ownCloud – A safe home for all your data", - "logo": "themes/owncloud/assets/logo.svg", - "urls": { - "accessDeniedHelp": "", - "imprint": "", - "privacy": "" - } + "name": "", + "slogan": "", + "logo": "" }, - "clients": { - "android": {}, - "desktop": {}, - "ios": {}, - "web": { - "defaults": { - "logo": { - "topbar": "themes/owncloud/assets/logo.svg", - "favicon": "themes/owncloud/assets/favicon.jpg", - "login": "themes/owncloud/assets/logo.svg" + "ios": {}, + "web": { + "default": { + "general": { + "name": "", + "slogan": "" + }, + "logo": { + "topbar": "", + "favicon": "", + "login": "" + }, + "loginPage": { + "autoRedirect": true, + "backgroundImg": "" + }, + "designTokens": { + "breakpoints": { + "xsmall-max": "", + "small-default": "", + "small-max": "", + "medium-default": "", + "medium-max": "", + "large-default": "", + "large-max": "", + "xlarge": "" }, - "loginPage": { - "autoRedirect": true, - "backgroundImg": "themes/owncloud/assets/loginBackground.jpg" + "colorPalette": { + "background-accentuate": "", + "background-default": "", + "background-highlight": "", + "background-muted": "", + "border": "", + "input-bg": "", + "input-border": "", + "input-text-default": "", + "input-text-muted": "", + "swatch-brand-default": "", + "swatch-brand-hover": "", + "swatch-brand-muted": "", + "swatch-brand-contrast": "", + "swatch-danger-default": "", + "swatch-danger-hover": "", + "swatch-danger-muted": "", + "swatch-danger-contrast": "", + "swatch-inverse-default": "", + "swatch-inverse-hover": "", + "swatch-inverse-muted": "", + "swatch-passive-default": "", + "swatch-passive-hover": "", + "swatch-passive-muted": "", + "swatch-passive-contrast": "", + "swatch-primary-default": "", + "swatch-primary-hover": "", + "swatch-primary-muted": "", + "swatch-primary-gradient": "", + "swatch-primary-contrast": "", + "swatch-success-default": "", + "swatch-success-hover": "", + "swatch-success-muted": "", + "swatch-success-contrast": "", + "swatch-warning-default": "", + "swatch-warning-hover": "", + "swatch-warning-muted": "", + "swatch-warning-contrast": "", + "text-default": "", + "text-inverse": "", + "text-muted": "" }, - "designTokens": { - "breakpoints": { - "xsmall-max": "", - "small-default": "", - "small-max": "", - "medium-default": "", - "medium-max": "", - "large-default": "", - "large-max": "", - "xlarge": "" - }, - "fontSizes": { - "default": "", - "large": "", - "medium": "" - }, - "sizes": { - "form-check-default": "", - "height-small": "", - "height-table-row": "", - "icon-default": "", - "max-height-logo": "", - "max-width-logo": "", - "width-medium": "", - "tiles-default": "", - "tiles-resize-step": "" - }, - "spacing": { - "xsmall": "", - "small": "", - "medium": "", - "large": "", - "xlarge": "", - "xxlarge": "" - } - } - }, - "themes": [ - { - "isDark": false, - "name": "Light Theme", - "designTokens": { - "colorPalette": { - "background-accentuate": "rgba(255, 255, 5, 0.1)", - "background-default": "#ffffff", - "background-highlight": "#edf3fa", - "background-muted": "#f8f8f8", - "background-secondary": "#ffffff", - "background-hover": "rgb(236, 236, 236)", - "color-components-apptopbar-background": "transparent", - "color-components-apptopbar-border": "#ceddee", - "border": "#ecebee", - "input-bg": "#ffffff", - "input-border": "#ceddee", - "input-text-default": "#041e42", - "input-text-muted": "#4c5f79", - "swatch-brand-default": "#041e42", - "swatch-brand-hover": "#223959", - "swatch-brand-contrast": "#ffffff", - "swatch-danger-contrast": "#ffffff", - "swatch-danger-default": "rgb(197, 48, 48)", - "swatch-danger-hover": "#b12b2b", - "swatch-danger-muted": "rgb(204, 117, 117)", - "swatch-inverse-default": "#ffffff", - "swatch-inverse-hover": "#ffffff", - "swatch-inverse-muted": "#bfbfbf", - "swatch-passive-default": "#4c5f79", - "swatch-passive-hover": "#43536b", - "swatch-passive-hover-outline": "#f7fafd", - "swatch-passive-muted": "#283e5d", - "swatch-passive-contrast": "#ffffff", - "swatch-primary-default": "#4a76ac", - "swatch-primary-hover": "#80a7d7", - "swatch-primary-muted": "#2c588e", - "swatch-primary-muted-hover": "rgb(36, 75, 119)", - "swatch-primary-gradient": "#4e85c8", - "swatch-primary-gradient-hover": "rgb(59, 118, 194)", - "swatch-primary-contrast": "#ffffff", - "swatch-success-default": "rgb(3, 84, 63)", - "swatch-success-hover": "#023b2c", - "swatch-success-muted": "rgb(83, 150, 10)", - "swatch-success-contrast": "#ffffff", - "swatch-warning-default": "rgb(183, 76, 27)", - "swatch-warning-hover": "#a04318", - "swatch-warning-muted": "rgba(183, 76, 27, .5)", - "swatch-warning-contrast": "#ffffff", - "text-default": "#041e42", - "text-inverse": "#ffffff", - "text-muted": "#4c5f79", - "icon-folder": "#4d7eaf", - "icon-archive": "#fbbe54", - "icon-image": "#ee6b3b", - "icon-spreadsheet": "#15c286", - "icon-document": "#3b44a6", - "icon-video": "#045459", - "icon-audio": "#700460", - "icon-presentation": "#ee6b3b", - "icon-pdf": "#ec0d47" - } - } + "fontSizes": { + "default": "", + "large": "", + "medium": "" }, - { - "isDark": true, - "name": "Dark Theme", - "designTokens": { - "colorPalette": { - "background-accentuate": "#696969", - "background-default": "#292929", - "background-highlight": "#383838", - "background-muted": "#383838", - "background-secondary": "#4f4f4f", - "background-hover": "#383838", - "color-components-apptopbar-background": "transparent", - "color-components-apptopbar-border": "#ceddee", - "border": "#383838", - "input-bg": "#4f4f4f", - "input-border": "#696969", - "input-text-default": "#dadcdf", - "input-text-muted": "#bdbfc3", - "swatch-brand-default": "#212121", - "swatch-brand-hover": "#ffffff", - "swatch-brand-contrast": "#dadcdf", - "swatch-inverse-default": "", - "swatch-inverse-hover": "", - "swatch-inverse-muted": "#696969", - "swatch-passive-default": "#c2c2c2", - "swatch-passive-hover": "", - "swatch-passive-hover-outline": "#3B3B3B", - "swatch-passive-muted": "#bdbfc3", - "swatch-passive-contrast": "#000000", - "swatch-primary-default": "#73b0f2", - "swatch-primary-hover": "#7bafef", - "swatch-primary-muted": "", - "swatch-primary-muted-hover": "#2282f7", - "swatch-primary-gradient": "#4e85c8", - "swatch-primary-gradient-hover": "#76a1d5", - "swatch-primary-contrast": "#dadcdf", - "swatch-success-background": "rgba(0, 188, 140, 0)", - "swatch-success-default": "rgb(0, 188, 140)", - "swatch-success-hover": "#00f0b4", - "swatch-success-muted": "rgba(0, 188, 140, .5)", - "swatch-success-contrast": "#000000", - "swatch-warning-background": "rgba(0,0,0,0)", - "swatch-warning-default": "rgb(232, 191, 73)", - "swatch-warning-hover": "#eed077", - "swatch-warning-muted": "rgba(232, 178, 19, .5)", - "swatch-danger-default": "rgb(255, 72, 53)", - "swatch-danger-hover": "#ff7566", - "swatch-danger-muted": "rgba(255, 72, 53, .5)", - "swatch-danger-contrast": "#dadcdf", - "swatch-warning-contrast": "#000000", - "text-default": "#dadcdf", - "text-inverse": "#000000", - "text-muted": "#c2c2c2", - "icon-folder": "rgb(44, 101, 255)", - "icon-archive": "rgb(255, 207, 1)", - "icon-image": "rgb(255, 111, 0)", - "icon-spreadsheet": "rgb(0, 182, 87)", - "icon-document": "rgb(44, 101, 255)", - "icon-video": "rgb(0, 187, 219)", - "icon-audio": "rgb(208, 67, 236)", - "icon-presentation": "rgb(255, 64, 6)", - "icon-pdf": "rgb(225, 5, 14)" - } - } + "fontFamily": "", + "sizes": { + "form-check-default": "", + "height-small": "", + "height-table-row": "", + "icon-default": "", + "max-height-logo": "", + "max-width-logo": "", + "width-medium": "" + }, + "spacing": { + "xsmall": "", + "small": "", + "medium": "", + "large": "", + "xlarge": "", + "xxlarge": "" } - ] + } } } }