From 305ee8a4df5eea937cfc67982908aefa66fddf00 Mon Sep 17 00:00:00 2001 From: Artur Paikin Date: Wed, 25 Mar 2020 11:32:40 +0100 Subject: [PATCH] website: add Dark Mode docs and example demo --- website/src/docs/dashboard.md | 22 ++++++++++++++---- website/src/examples/dashboard/app.es6 | 2 +- website/src/examples/dashboard/app.html | 10 ++++---- .../images/uppy-dashboard-dark-mar-2020.png | Bin 0 -> 23250 bytes 4 files changed, 23 insertions(+), 11 deletions(-) create mode 100644 website/src/images/uppy-dashboard-dark-mar-2020.png diff --git a/website/src/docs/dashboard.md b/website/src/docs/dashboard.md index 0bea92816..4bd44f75b 100644 --- a/website/src/docs/dashboard.md +++ b/website/src/docs/dashboard.md @@ -11,11 +11,11 @@ tagline: "full-featured sleek UI with file previews, metadata editing, upload/pa `@uppy/dashboard` is a universal UI plugin for Uppy, offering several useful features: - Drag and drop, paste, select from local disk / my device -- UI for the Webcam plugin and remote sources, such as Google Drive, Dropbox, Instagram (all optional, added via plugins) -- File previews and info +- UI for the Webcam plugin and remote sources, such as Google Drive, Dropbox, Instagram, Facebook and OneDrive (all optional, added via plugins) +- Image previews - Metadata editor -- Progress: total and for individual files -- Ability to pause/resume or cancel (depending on uploader plugin) individual or all files +- Upload progress +- Ability to pause or cancel (depending on the uploader plugin) uploads ```js const Dashboard = require('@uppy/dashboard') @@ -92,7 +92,8 @@ uppy.use(Dashboard, { onRequestCloseModal: () => this.closeModal(), showSelectedFiles: true, locale: defaultLocale, - browserBackButtonClose: false + browserBackButtonClose: false, + theme: 'light' }) ``` @@ -360,6 +361,17 @@ strings: { Remove all children of the `target` element before mounting the Dashboard. By default, Uppy will append any UI to the `target` DOM element. This is the least dangerous option. However, there might be cases when you would want to clear the container element before placing Uppy UI in there (for example, to provide a fallback `
` that will be shown if Uppy or JavaScript is not available). Set `replaceTargetContent: true` to clear the `target` before appending. +### `theme: 'light'` + +Uppy Dashboard supports “Dark Mode”. You can try it live on [the Dashboard example page](http://localhost:4000/examples/dashboard/). + +There are three options: +- `light` — the default +- `dark` +- `auto` — will respect the user’s system settings and switch automatically + +![Uppy dark mode screenshot](/images/uppy-dashboard-dark-mar-2020.png) + ## Methods ### `openModal()` diff --git a/website/src/examples/dashboard/app.es6 b/website/src/examples/dashboard/app.es6 index afd601f8e..8c0d99deb 100644 --- a/website/src/examples/dashboard/app.es6 +++ b/website/src/examples/dashboard/app.es6 @@ -80,7 +80,7 @@ function uppySetOptions () { window.uppy.getPlugin('Dashboard').setOptions({ note: opts.restrictions ? 'Images and video only, 2–3 files, up to 1 MB' : '', - browserBackButtonClose: opts.browserBackButtonClose + theme: opts.darkMode ? 'dark' : 'light' }) const GoogleDriveInstance = window.uppy.getPlugin('GoogleDrive') diff --git a/website/src/examples/dashboard/app.html b/website/src/examples/dashboard/app.html index d6956e2ff..b2c04d5e3 100644 --- a/website/src/examples/dashboard/app.html +++ b/website/src/examples/dashboard/app.html @@ -6,15 +6,15 @@
  • -
  • +
  • @@ -45,7 +45,7 @@ Url: document.querySelector('#opts-Url'), autoProceed: document.querySelector('#opts-autoProceed'), restrictions: document.querySelector('#opts-restrictions'), - browserBackButtonClose: document.querySelector('#opts-browserBackButtonClose') + darkMode: document.querySelector('#opts-darkMode') } var defaultOpts = { @@ -59,7 +59,7 @@ Url: true, autoProceed: false, restrictions: false, - browserBackButtonClose: false + darkMode: true } // try to get options from localStorage, if its empty, set to defaultOpts diff --git a/website/src/images/uppy-dashboard-dark-mar-2020.png b/website/src/images/uppy-dashboard-dark-mar-2020.png new file mode 100644 index 0000000000000000000000000000000000000000..49e96605ccc002a7de0e1c80dcf5a95dd02a7281 GIT binary patch literal 23250 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