瀏覽代碼

Proposal for new doc menu structure (#1405)

* website: New doc menu layout

* Merge sources

* Operate HR via menu_prefix too

* Fix categories in /examples
Kevin van Zonneveld 6 年之前
父節點
當前提交
bab4b9de1f
共有 48 個文件被更改,包括 145 次插入75 次删除
  1. 2 1
      website/src/docs/aws-s3-multipart.md
  2. 2 1
      website/src/docs/aws-s3.md
  3. 1 0
      website/src/docs/companion.md
  4. 1 0
      website/src/docs/contributing.md
  5. 2 1
      website/src/docs/dashboard.md
  6. 2 1
      website/src/docs/dragdrop.md
  7. 3 1
      website/src/docs/dropbox.md
  8. 2 2
      website/src/docs/fileinput.md
  9. 2 1
      website/src/docs/form.md
  10. 2 1
      website/src/docs/golden-retriever.md
  11. 3 1
      website/src/docs/google-drive.md
  12. 1 0
      website/src/docs/index.md
  13. 2 1
      website/src/docs/informer.md
  14. 3 1
      website/src/docs/instagram.md
  15. 2 1
      website/src/docs/plugins.md
  16. 2 1
      website/src/docs/progressbar.md
  17. 2 1
      website/src/docs/providers.md
  18. 2 1
      website/src/docs/react-dashboard-modal.md
  19. 2 1
      website/src/docs/react-dashboard.md
  20. 2 1
      website/src/docs/react-dragdrop.md
  21. 2 1
      website/src/docs/react-progressbar.md
  22. 2 1
      website/src/docs/react-statusbar.md
  23. 2 1
      website/src/docs/react.md
  24. 2 1
      website/src/docs/redux.md
  25. 3 2
      website/src/docs/robodog-form.md
  26. 3 2
      website/src/docs/robodog-picker.md
  27. 3 2
      website/src/docs/robodog-upload.md
  28. 3 2
      website/src/docs/robodog.md
  29. 2 1
      website/src/docs/statusbar.md
  30. 1 0
      website/src/docs/stores.md
  31. 2 1
      website/src/docs/transloadit.md
  32. 2 1
      website/src/docs/tus.md
  33. 1 0
      website/src/docs/uppy.md
  34. 3 1
      website/src/docs/url.md
  35. 2 1
      website/src/docs/webcam.md
  36. 2 1
      website/src/docs/writing-plugins.md
  37. 3 1
      website/src/docs/xhrupload.md
  38. 1 0
      website/src/examples/bundle/index.ejs
  39. 1 0
      website/src/examples/dashboard/index.ejs
  40. 1 0
      website/src/examples/dragdrop/index.ejs
  41. 1 0
      website/src/examples/i18n/index.ejs
  42. 2 1
      website/src/examples/markdown-snippets/index.ejs
  43. 1 0
      website/src/examples/statusbar/index.ejs
  44. 2 1
      website/src/examples/transloadit/index.ejs
  45. 1 0
      website/src/examples/xhrupload/index.ejs
  46. 1 0
      website/src/stats.ejs
  47. 46 36
      website/themes/uppy/layout/partials/sidebar.ejs
  48. 10 0
      website/themes/uppy/source/css/_page.scss

+ 2 - 1
website/src/docs/aws-s3-multipart.md

@@ -1,9 +1,10 @@
 ---
 ---
 type: docs
 type: docs
-order: 53
+order: 3
 title: "AWS S3 Multipart"
 title: "AWS S3 Multipart"
 module: "@uppy/aws-s3-multipart"
 module: "@uppy/aws-s3-multipart"
 permalink: docs/aws-s3-multipart/
 permalink: docs/aws-s3-multipart/
+category: 'Destinations'
 ---
 ---
 
 
 The `@uppy/aws-s3-multipart` plugin can be used to upload files directly to an S3 bucket using S3's Multipart upload strategy. With this strategy, files are chopped up in parts of 5MB+ each, so they can be uploaded concurrently. It is also very reliable: if a single part fails to upload, only that 5MB chunk has to be retried.
 The `@uppy/aws-s3-multipart` plugin can be used to upload files directly to an S3 bucket using S3's Multipart upload strategy. With this strategy, files are chopped up in parts of 5MB+ each, so they can be uploaded concurrently. It is also very reliable: if a single part fails to upload, only that 5MB chunk has to be retried.

+ 2 - 1
website/src/docs/aws-s3.md

@@ -1,9 +1,10 @@
 ---
 ---
 type: docs
 type: docs
-order: 52
+order: 2
 title: "AWS S3"
 title: "AWS S3"
 module: "@uppy/aws-s3"
 module: "@uppy/aws-s3"
 permalink: docs/aws-s3/
 permalink: docs/aws-s3/
+category: 'Destinations'
 ---
 ---
 
 
 The `@uppy/aws-s3` plugin can be used to upload files directly to an S3 bucket.
 The `@uppy/aws-s3` plugin can be used to upload files directly to an S3 bucket.

+ 1 - 0
website/src/docs/companion.md

@@ -5,6 +5,7 @@ title: "Companion"
 module: "@uppy/companion"
 module: "@uppy/companion"
 permalink: docs/companion/
 permalink: docs/companion/
 alias: docs/server/
 alias: docs/server/
+category: 'Docs'
 ---
 ---
 
 
 > Companion was previously known as Uppy Server. It was renamed in v0.14.0.
 > Companion was previously known as Uppy Server. It was renamed in v0.14.0.

+ 1 - 0
website/src/docs/contributing.md

@@ -2,6 +2,7 @@
 title: "Contributing"
 title: "Contributing"
 type: docs
 type: docs
 order: 5
 order: 5
+category: 'Docs'
 ---
 ---
 
 
 <!-- md contributing.md -->
 <!-- md contributing.md -->

+ 2 - 1
website/src/docs/dashboard.md

@@ -1,9 +1,10 @@
 ---
 ---
 type: docs
 type: docs
-order: 30
+order: 0
 title: "Dashboard"
 title: "Dashboard"
 module: "@uppy/dashboard"
 module: "@uppy/dashboard"
 permalink: docs/dashboard/
 permalink: docs/dashboard/
+category: 'UI Elements'
 ---
 ---
 
 
 `@uppy/dashboard` is a universal UI plugin for Uppy, offering several useful features:
 `@uppy/dashboard` is a universal UI plugin for Uppy, offering several useful features:

+ 2 - 1
website/src/docs/dragdrop.md

@@ -1,10 +1,11 @@
 ---
 ---
 type: docs
 type: docs
-order: 31
+order: 1
 title: "Drag & Drop"
 title: "Drag & Drop"
 module: "@uppy/drag-drop"
 module: "@uppy/drag-drop"
 permalink: docs/drag-drop/
 permalink: docs/drag-drop/
 alias: docs/dragdrop/
 alias: docs/dragdrop/
+category: 'Sources'
 ---
 ---
 
 
 The `@uppy/drag-drop` plugin renders a simple drag and drop area for file selection. it can be useful when you only want the local device as a file source, don’t need file previews and a UI for metadata editing, and the [Dashboard](/docs/dashboard/) feels like overkill.
 The `@uppy/drag-drop` plugin renders a simple drag and drop area for file selection. it can be useful when you only want the local device as a file source, don’t need file previews and a UI for metadata editing, and the [Dashboard](/docs/dashboard/) feels like overkill.

+ 3 - 1
website/src/docs/dropbox.md

@@ -1,9 +1,11 @@
 ---
 ---
 type: docs
 type: docs
-order: 41
+order: 11
 title: "Dropbox"
 title: "Dropbox"
+menu_prefix: "<span title='Requires Companion'>ⓒ </span>"
 module: "@uppy/dropbox"
 module: "@uppy/dropbox"
 permalink: docs/dropbox/
 permalink: docs/dropbox/
+category: 'Sources'
 ---
 ---
 
 
 The `@uppy/dropbox` plugin lets users import files from their Dropbox account.
 The `@uppy/dropbox` plugin lets users import files from their Dropbox account.

+ 2 - 2
website/src/docs/fileinput.md

@@ -1,11 +1,11 @@
 ---
 ---
 type: docs
 type: docs
-order: 32
+order: 2
 title: "File Input"
 title: "File Input"
 module: "@uppy/file-input"
 module: "@uppy/file-input"
 permalink: docs/file-input/
 permalink: docs/file-input/
 alias: docs/fileinput/
 alias: docs/fileinput/
-
+category: 'Sources'
 ---
 ---
 
 
 `@uppy/file-input` is the most barebones UI for selecting files — it shows a single button that, when clicked, opens up the browser's file selector.
 `@uppy/file-input` is the most barebones UI for selecting files — it shows a single button that, when clicked, opens up the browser's file selector.

+ 2 - 1
website/src/docs/form.md

@@ -1,9 +1,10 @@
 ---
 ---
 type: docs
 type: docs
-order: 80
+order: 0
 title: "Form"
 title: "Form"
 module: "@uppy/form"
 module: "@uppy/form"
 permalink: docs/form/
 permalink: docs/form/
+category: 'Miscellaneous'
 ---
 ---
 
 
 The `@uppy/form` plugin has several features to integrate with HTML `<form>` elements.
 The `@uppy/form` plugin has several features to integrate with HTML `<form>` elements.

+ 2 - 1
website/src/docs/golden-retriever.md

@@ -3,7 +3,8 @@ title: "Golden Retriever"
 module: "@uppy/golden-retriever"
 module: "@uppy/golden-retriever"
 type: docs
 type: docs
 permalink: docs/golden-retriever/
 permalink: docs/golden-retriever/
-order: 81
+order: 1
+category: 'Miscellaneous'
 ---
 ---
 
 
 The `@uppy/golden-retriever` plugin saves selected files in your browser cache, so that if the browser crashes, Uppy can restore everything and continue uploading as if nothing happened. You can read more about it [on our blog](https://uppy.io/blog/2017/07/golden-retriever/).
 The `@uppy/golden-retriever` plugin saves selected files in your browser cache, so that if the browser crashes, Uppy can restore everything and continue uploading as if nothing happened. You can read more about it [on our blog](https://uppy.io/blog/2017/07/golden-retriever/).

+ 3 - 1
website/src/docs/google-drive.md

@@ -1,9 +1,11 @@
 ---
 ---
 type: docs
 type: docs
-order: 42
+order: 12
 title: "Google Drive"
 title: "Google Drive"
+menu_prefix: "<span title='Requires Companion'>ⓒ </span>"
 module: "@uppy/google-drive"
 module: "@uppy/google-drive"
 permalink: docs/google-drive/
 permalink: docs/google-drive/
+category: 'Sources'
 ---
 ---
 
 
 The `@uppy/google-drive` plugin lets users import files from their Google Drive account.
 The `@uppy/google-drive` plugin lets users import files from their Google Drive account.

+ 1 - 0
website/src/docs/index.md

@@ -4,6 +4,7 @@ type: docs
 permalink: docs/
 permalink: docs/
 alias: api/
 alias: api/
 order: 0
 order: 0
+category: 'Docs'
 ---
 ---
 
 
 Uppy is a sleek and modular file uploader. It fetches files from local disk, Google Drive, Instagram, remote urls, cameras etc, and then uploads them to the final destination. It’s fast, easy to use and lets you worry about more important problems than building a file uploader.
 Uppy is a sleek and modular file uploader. It fetches files from local disk, Google Drive, Instagram, remote urls, cameras etc, and then uploads them to the final destination. It’s fast, easy to use and lets you worry about more important problems than building a file uploader.

+ 2 - 1
website/src/docs/informer.md

@@ -1,9 +1,10 @@
 ---
 ---
 type: docs
 type: docs
-order: 62
+order: 2
 title: "Informer"
 title: "Informer"
 module: "@uppy/informer"
 module: "@uppy/informer"
 permalink: docs/informer/
 permalink: docs/informer/
+category: 'UI Elements'
 ---
 ---
 
 
 The `@uppy/informer` plugin is a pop-up bar for showing notifications. When plugins have some exciting news (or error) to share, they can show a notification here.
 The `@uppy/informer` plugin is a pop-up bar for showing notifications. When plugins have some exciting news (or error) to share, they can show a notification here.

+ 3 - 1
website/src/docs/instagram.md

@@ -1,9 +1,11 @@
 ---
 ---
 type: docs
 type: docs
-order: 43
+order: 13
 title: "Instagram"
 title: "Instagram"
+menu_prefix: "<span title='Requires Companion'>ⓒ </span>"
 module: "@uppy/instagram"
 module: "@uppy/instagram"
 permalink: docs/instagram/
 permalink: docs/instagram/
+category: 'Sources'
 ---
 ---
 
 
 The `@uppy/instagram` plugin lets users import files from their Instagram account.
 The `@uppy/instagram` plugin lets users import files from their Instagram account.

+ 2 - 1
website/src/docs/plugins.md

@@ -2,7 +2,8 @@
 title: "List & Common Options"
 title: "List & Common Options"
 type: docs
 type: docs
 permalink: docs/plugins/
 permalink: docs/plugins/
-order: 20
+order: 0
+category: 'Plugins'
 ---
 ---
 
 
 Plugins are what makes Uppy useful: they help select, manipulate and upload files.
 Plugins are what makes Uppy useful: they help select, manipulate and upload files.

+ 2 - 1
website/src/docs/progressbar.md

@@ -1,10 +1,11 @@
 ---
 ---
 type: docs
 type: docs
-order: 61
+order: 1
 title: "Progress Bar"
 title: "Progress Bar"
 module: "@uppy/progress-bar"
 module: "@uppy/progress-bar"
 permalink: docs/progress-bar/
 permalink: docs/progress-bar/
 alias: docs/progressbar/
 alias: docs/progressbar/
+category: 'UI Elements'
 ---
 ---
 
 
 `@uppy/progress-bar` is a minimalist plugin that shows the current upload progress in a thin bar element, similar to the ones used by YouTube and GitHub when navigating between pages.
 `@uppy/progress-bar` is a minimalist plugin that shows the current upload progress in a thin bar element, similar to the ones used by YouTube and GitHub when navigating between pages.

+ 2 - 1
website/src/docs/providers.md

@@ -2,7 +2,8 @@
 title: "Provider Plugins"
 title: "Provider Plugins"
 type: docs
 type: docs
 permalink: docs/providers/
 permalink: docs/providers/
-order: 40
+order: 10
+category: 'Sources'
 ---
 ---
 
 
 The Provider plugins help you connect to your accounts with remote file providers such as [Dropbox](https://dropbox.com), [Google Drive](https://drive.google.com), [Instagram](https://instagram.com) and remote URLs (importing a file by pasting a direct link to it). Because this requires server-to-server communication, they work tightly with [Companion](https://github.com/transloadit/companion) to manage the server-to-server authorization for your account. Almost all of the communication (file download/upload) is done on the server-to-server end, so this saves you the stress and bills of data consumption on the client.
 The Provider plugins help you connect to your accounts with remote file providers such as [Dropbox](https://dropbox.com), [Google Drive](https://drive.google.com), [Instagram](https://instagram.com) and remote URLs (importing a file by pasting a direct link to it). Because this requires server-to-server communication, they work tightly with [Companion](https://github.com/transloadit/companion) to manage the server-to-server authorization for your account. Almost all of the communication (file download/upload) is done on the server-to-server end, so this saves you the stress and bills of data consumption on the client.

+ 2 - 1
website/src/docs/react-dashboard-modal.md

@@ -2,7 +2,8 @@
 title: "&lt;DashboardModal />"
 title: "&lt;DashboardModal />"
 type: docs
 type: docs
 permalink: docs/react/dashboard-modal/
 permalink: docs/react/dashboard-modal/
-order: 95
+order: 5
+category: 'React'
 ---
 ---
 
 
 The `<DashboardModal />` component wraps the [`@uppy/dashboard`][] plugin, allowing control over the modal `open` state using a prop.
 The `<DashboardModal />` component wraps the [`@uppy/dashboard`][] plugin, allowing control over the modal `open` state using a prop.

+ 2 - 1
website/src/docs/react-dashboard.md

@@ -2,7 +2,8 @@
 title: "&lt;Dashboard />"
 title: "&lt;Dashboard />"
 type: docs
 type: docs
 permalink: docs/react/dashboard/
 permalink: docs/react/dashboard/
-order: 94
+order: 4
+category: 'React'
 ---
 ---
 
 
 The `<Dashboard />` component wraps the [`@uppy/dashboard`][] plugin. It only renders the Dashboard inline. To use the Dashboard modal (`inline: false`), use the [`<DashboardModal />`](/docs/react/dashboard-modal) component.
 The `<Dashboard />` component wraps the [`@uppy/dashboard`][] plugin. It only renders the Dashboard inline. To use the Dashboard modal (`inline: false`), use the [`<DashboardModal />`](/docs/react/dashboard-modal) component.

+ 2 - 1
website/src/docs/react-dragdrop.md

@@ -3,7 +3,8 @@ title: "&lt;DragDrop />"
 type: docs
 type: docs
 permalink: docs/react/drag-drop/
 permalink: docs/react/drag-drop/
 alias: docs/react/dragdrop/
 alias: docs/react/dragdrop/
-order: 92
+order: 2
+category: 'React'
 ---
 ---
 
 
 The `<DragDrop />` component wraps the [`@uppy/drag-drop`][] plugin.
 The `<DragDrop />` component wraps the [`@uppy/drag-drop`][] plugin.

+ 2 - 1
website/src/docs/react-progressbar.md

@@ -3,7 +3,8 @@ title: "&lt;ProgressBar />"
 type: docs
 type: docs
 permalink: docs/react/progress-bar/
 permalink: docs/react/progress-bar/
 alias: docs/react/progressbar/
 alias: docs/react/progressbar/
-order: 93
+order: 3
+category: 'React'
 ---
 ---
 
 
 The `<ProgressBar />` component wraps the [`@uppy/progress-bar`][] plugin.
 The `<ProgressBar />` component wraps the [`@uppy/progress-bar`][] plugin.

+ 2 - 1
website/src/docs/react-statusbar.md

@@ -3,7 +3,8 @@ title: "&lt;StatusBar />"
 type: docs
 type: docs
 permalink: docs/react/status-bar/
 permalink: docs/react/status-bar/
 alias: docs/react/statusbar/
 alias: docs/react/statusbar/
-order: 91
+order: 1
+category: 'React'
 ---
 ---
 
 
 The `<StatusBar />` component wraps the [`@uppy/status-bar`][] plugin.
 The `<StatusBar />` component wraps the [`@uppy/status-bar`][] plugin.

+ 2 - 1
website/src/docs/react.md

@@ -2,7 +2,8 @@
 title: "Introduction"
 title: "Introduction"
 type: docs
 type: docs
 permalink: docs/react/
 permalink: docs/react/
-order: 90
+order: 0
+category: 'React'
 ---
 ---
 
 
 Uppy provides [React][] components for the included UI plugins.
 Uppy provides [React][] components for the included UI plugins.

+ 2 - 1
website/src/docs/redux.md

@@ -2,7 +2,8 @@
 title: "Redux"
 title: "Redux"
 type: docs
 type: docs
 permalink: docs/redux/
 permalink: docs/redux/
-order: 97
+order: 9
+category: 'React'
 ---
 ---
 
 
 Uppy supports the popular [Redux](https://redux.js.org/) state management library in two ways:
 Uppy supports the popular [Redux](https://redux.js.org/) state management library in two ways:

+ 3 - 2
website/src/docs/robodog-form.md

@@ -1,9 +1,10 @@
 ---
 ---
 type: docs
 type: docs
 title: "Robodog: Form API"
 title: "Robodog: Form API"
-menu: "Form"
+menu: "Robodog Form"
 permalink: docs/robodog/form/
 permalink: docs/robodog/form/
-order: 102
+order: 2
+category: 'File Processing'
 ---
 ---
 
 
 Add resumable uploads and Transloadit's processing to your existing HTML upload forms. Selected files will be uploaded to Transloadit, and the Assembly information will be submitted to your form endpoint.
 Add resumable uploads and Transloadit's processing to your existing HTML upload forms. Selected files will be uploaded to Transloadit, and the Assembly information will be submitted to your form endpoint.

+ 3 - 2
website/src/docs/robodog-picker.md

@@ -1,9 +1,10 @@
 ---
 ---
 type: docs
 type: docs
 title: "Robodog: File Picker API"
 title: "Robodog: File Picker API"
-menu: "File Picker"
+menu: "Robodog File Picker"
 permalink: docs/robodog/picker/
 permalink: docs/robodog/picker/
-order: 101
+order: 1
+category: 'File Processing'
 ---
 ---
 
 
 Show a modal UI that allows users to pick files from their device and from the web. It uploads files to Transloadit for processing.
 Show a modal UI that allows users to pick files from their device and from the web. It uploads files to Transloadit for processing.

+ 3 - 2
website/src/docs/robodog-upload.md

@@ -1,9 +1,10 @@
 ---
 ---
 type: docs
 type: docs
 title: "Robodog: Upload API"
 title: "Robodog: Upload API"
-menu: "Upload"
+menu: "Robodog Upload"
 permalink: docs/robodog/upload/
 permalink: docs/robodog/upload/
-order: 103
+order: 3
+category: 'File Processing'
 ---
 ---
 
 
 Upload files straight to Transloadit from your own custom UI. Give us an array of files, and we'll give you an array of results!
 Upload files straight to Transloadit from your own custom UI. Give us an array of files, and we'll give you an array of results!

+ 3 - 2
website/src/docs/robodog.md

@@ -1,10 +1,11 @@
 ---
 ---
 type: docs
 type: docs
-order: 100
+order: 0
 title: "Robodog"
 title: "Robodog"
-menu: "Introduction"
+menu: "Robodog Introduction"
 module: "@uppy/robodog"
 module: "@uppy/robodog"
 permalink: docs/robodog/
 permalink: docs/robodog/
+category: 'File Processing'
 ---
 ---
 
 
 [Transloadit][transloadit] is a service that helps you handle file uploads, resize, crop and watermark your images, make GIFs, transcode your videos, extract thumbnails, generate audio waveforms, and so much more. In short, [Transloadit][transloadit] is the Swiss Army Knife for your files.
 [Transloadit][transloadit] is a service that helps you handle file uploads, resize, crop and watermark your images, make GIFs, transcode your videos, extract thumbnails, generate audio waveforms, and so much more. In short, [Transloadit][transloadit] is the Swiss Army Knife for your files.

+ 2 - 1
website/src/docs/statusbar.md

@@ -1,10 +1,11 @@
 ---
 ---
 type: docs
 type: docs
-order: 60
+order: 0
 title: "Status Bar"
 title: "Status Bar"
 module: "@uppy/status-bar"
 module: "@uppy/status-bar"
 permalink: docs/status-bar/
 permalink: docs/status-bar/
 alias: docs/statusbar/
 alias: docs/statusbar/
+category: 'UI Elements'
 ---
 ---
 
 
 The `@uppy/status-bar` plugin shows upload progress and speed, ETAs, pre- and post-processing information, and allows users to control (pause/resume/cancel) the upload.
 The `@uppy/status-bar` plugin shows upload progress and speed, ETAs, pre- and post-processing information, and allows users to control (pause/resume/cancel) the upload.

+ 1 - 0
website/src/docs/stores.md

@@ -3,6 +3,7 @@ type: docs
 order: 3
 order: 3
 title: "Custom Stores"
 title: "Custom Stores"
 permalink: docs/stores/
 permalink: docs/stores/
+category: 'Docs'
 ---
 ---
 
 
 > This section concerns storing the internal application state, if you work with React/Redux, for example. If none of this rings a bell, you can safely skip this section.
 > This section concerns storing the internal application state, if you work with React/Redux, for example. If none of this rings a bell, you can safely skip this section.

+ 2 - 1
website/src/docs/transloadit.md

@@ -1,9 +1,10 @@
 ---
 ---
 type: docs
 type: docs
-order: 70
+order: 10
 title: "Transloadit"
 title: "Transloadit"
 module: "@uppy/transloadit"
 module: "@uppy/transloadit"
 permalink: docs/transloadit/
 permalink: docs/transloadit/
+category: 'File Processing'
 ---
 ---
 
 
 The `@uppy/transloadit` plugin can be used to upload files to [Transloadit](https://transloadit.com/) for all kinds of processing, such as transcoding video, resizing images, zipping/unzipping, [and much more](https://transloadit.com/services/).
 The `@uppy/transloadit` plugin can be used to upload files to [Transloadit](https://transloadit.com/) for all kinds of processing, such as transcoding video, resizing images, zipping/unzipping, [and much more](https://transloadit.com/services/).

+ 2 - 1
website/src/docs/tus.md

@@ -1,9 +1,10 @@
 ---
 ---
 type: docs
 type: docs
-order: 50
+order: 0
 title: "Tus"
 title: "Tus"
 module: "@uppy/tus"
 module: "@uppy/tus"
 permalink: docs/tus/
 permalink: docs/tus/
+category: 'Destinations'
 ---
 ---
 
 
 The `@uppy/tus` plugin brings resumable file uploading by [tus.io](http://tus.io) to Uppy by wrapping the [tus-js-client][].
 The `@uppy/tus` plugin brings resumable file uploading by [tus.io](http://tus.io) to Uppy by wrapping the [tus-js-client][].

+ 1 - 0
website/src/docs/uppy.md

@@ -4,6 +4,7 @@ order: 1
 title: "Uppy"
 title: "Uppy"
 module: "@uppy/core"
 module: "@uppy/core"
 permalink: docs/uppy/
 permalink: docs/uppy/
+category: 'Docs'
 ---
 ---
 
 
 This is the core module that orchestrates everything in Uppy, managing state and events and providing methods.
 This is the core module that orchestrates everything in Uppy, managing state and events and providing methods.

+ 3 - 1
website/src/docs/url.md

@@ -1,9 +1,11 @@
 ---
 ---
 type: docs
 type: docs
-order: 44
+order: 14
 title: "Import From URL"
 title: "Import From URL"
+menu_prefix: "<span title='Requires Companion'>ⓒ </span>"
 module: "@uppy/url"
 module: "@uppy/url"
 permalink: docs/url/
 permalink: docs/url/
+category: 'Sources'
 ---
 ---
 
 
 The `@uppy/url` plugin allows users to import files from the internet. Paste any URL and it will be added!
 The `@uppy/url` plugin allows users to import files from the internet. Paste any URL and it will be added!

+ 2 - 1
website/src/docs/webcam.md

@@ -1,9 +1,10 @@
 ---
 ---
 type: docs
 type: docs
-order: 36
+order: 3
 title: "Webcam"
 title: "Webcam"
 module: "@uppy/webcam"
 module: "@uppy/webcam"
 permalink: docs/webcam/
 permalink: docs/webcam/
+category: 'Sources'
 ---
 ---
 
 
 The `@uppy/webcam` plugin lets you take photos and record videos with a built-in camera on desktop and mobile devices.
 The `@uppy/webcam` plugin lets you take photos and record videos with a built-in camera on desktop and mobile devices.

+ 2 - 1
website/src/docs/writing-plugins.md

@@ -2,7 +2,8 @@
 type: docs
 type: docs
 title: "Writing Plugins"
 title: "Writing Plugins"
 permalink: docs/writing-plugins/
 permalink: docs/writing-plugins/
-order: 21
+order: 1
+category: 'Plugins'
 ---
 ---
 
 
 There are already a few useful Uppy plugins out there, but there might come a time when you will want to build your own. Plugins can hook into the upload process or render a custom UI, typically to:
 There are already a few useful Uppy plugins out there, but there might come a time when you will want to build your own. Plugins can hook into the upload process or render a custom UI, typically to:

+ 3 - 1
website/src/docs/xhrupload.md

@@ -1,10 +1,12 @@
 ---
 ---
 type: docs
 type: docs
-order: 51
+order: 1
 title: "XHR Upload"
 title: "XHR Upload"
+menu: "XHR"
 module: "@uppy/xhr-upload"
 module: "@uppy/xhr-upload"
 permalink: docs/xhr-upload/
 permalink: docs/xhr-upload/
 alias: docs/xhrupload/
 alias: docs/xhrupload/
+category: 'Destinations'
 ---
 ---
 
 
 The `@uppy/xhr-upload` plugin handles classic HTML multipart form uploads, as well as uploads using the HTTP `PUT` method.
 The `@uppy/xhr-upload` plugin handles classic HTML multipart form uploads, as well as uploads using the HTTP `PUT` method.

+ 1 - 0
website/src/examples/bundle/index.ejs

@@ -2,6 +2,7 @@
 title: Bundle
 title: Bundle
 layout: example
 layout: example
 order: 2
 order: 2
+category: 'Examples'
 ---
 ---
 
 
 {% blockquote %}
 {% blockquote %}

+ 1 - 0
website/src/examples/dashboard/index.ejs

@@ -3,6 +3,7 @@ title: Dashboard
 layout: example
 layout: example
 type: examples
 type: examples
 order: 0
 order: 0
+category: 'Examples'
 ---
 ---
 
 
 {% blockquote %}
 {% blockquote %}

+ 1 - 0
website/src/examples/dragdrop/index.ejs

@@ -3,6 +3,7 @@ title: Drag and Drop
 layout: example
 layout: example
 type: examples
 type: examples
 order: 1
 order: 1
+category: 'Examples'
 ---
 ---
 
 
 {% blockquote %}
 {% blockquote %}

+ 1 - 0
website/src/examples/i18n/index.ejs

@@ -2,6 +2,7 @@
 title: Bundle & i18n
 title: Bundle & i18n
 layout: example
 layout: example
 type: examples
 type: examples
+category: 'Examples'
 order: 4
 order: 4
 ---
 ---
 
 

+ 2 - 1
website/src/examples/markdown-snippets/index.ejs

@@ -2,7 +2,8 @@
 title: Robodog Markdown Snippets
 title: Robodog Markdown Snippets
 layout: example
 layout: example
 type: examples
 type: examples
-order: 6
+order: 0
+category: 'File Processing'
 ---
 ---
 
 
 {% blockquote %}
 {% blockquote %}

+ 1 - 0
website/src/examples/statusbar/index.ejs

@@ -3,6 +3,7 @@ title: Status Bar
 layout: example
 layout: example
 type: examples
 type: examples
 order: 5
 order: 5
+category: 'Examples'
 ---
 ---
 
 
 {% blockquote %}
 {% blockquote %}

+ 2 - 1
website/src/examples/transloadit/index.ejs

@@ -2,7 +2,8 @@
 title: Transloadit
 title: Transloadit
 layout: example
 layout: example
 type: examples
 type: examples
-order: 5
+order: 1
+category: 'File Processing'
 ---
 ---
 
 
 {% blockquote %}
 {% blockquote %}

+ 1 - 0
website/src/examples/xhrupload/index.ejs

@@ -3,6 +3,7 @@ title: XHR Upload
 layout: example
 layout: example
 type: examples
 type: examples
 order: 3
 order: 3
+category: 'Examples'
 alias: /examples/multipart/
 alias: /examples/multipart/
 ---
 ---
 
 

+ 1 - 0
website/src/stats.ejs

@@ -2,6 +2,7 @@
 title: Stats
 title: Stats
 type: docs
 type: docs
 layout: stats
 layout: stats
+category: 'Docs'
 permalink: docs/stats/
 permalink: docs/stats/
 alias:
 alias:
   - guide/stats/
   - guide/stats/

+ 46 - 36
website/themes/uppy/layout/partials/sidebar.ejs

@@ -1,24 +1,34 @@
 <%
 <%
-var categories = [
-  // order: 2x
-  { path: 'docs/plugins/', name: 'Plugins', link: true },
-  // order: 3x
-  { path: 'docs/dashboard/', name: 'Local Sources', link: false },
-  // order: 4x
-  { path: 'docs/providers/', name: 'Remote Providers', link: true },
-  // order: 5x
-  { path: 'docs/tus/', name: 'Uploaders', link: false },
-  // order: 6x
-  { path: 'docs/status-bar/', name: 'UI Elements', link: false },
-  // order: 7x
-  { path: 'docs/transloadit/', name: 'File Processing', link: false },
-  // order: 8x
-  { path: 'docs/form/', name: 'Miscellaneous', link: false },
-  // order: 9x
-  { path: 'docs/react/', name: 'React Components', link: true },
-  // order: 10x
-  { path: 'docs/robodog/', name: 'Robodog', link: true }
-]
+var categories = []
+
+if (page.type === 'docs') {
+  categories = [
+    { category: 'Docs', path: 'docs/', link: true, hidden: true },
+    { category: 'Plugins', path: 'docs/plugins/', link: true },
+    { category: 'UI Elements', path: 'docs/dashboard/', link: false },
+    { category: 'Sources', path: 'docs/drag-drop/', link: false },
+    { category: 'Destinations', path: 'docs/tus/', link: false },
+    { category: 'File Processing', path: 'docs/robodog/', link: true },
+    { category: 'Miscellaneous', path: 'docs/form/', link: false },
+    { category: 'React', path: 'docs/react/', link: true },
+    ]
+  } else if (page.type === 'examples') {
+    categories = [
+    { category: 'Examples', path: 'examples/', link: true, hidden: true },
+    { category: 'File Processing', path: 'examples/markdown-snippets/', link: true },
+  ]
+} else {
+  categories = [
+    { category: 'Unknown Type: ' + page.type, path: 'unknown/unknown/', link: false },
+  ]
+}
+
+var catPages = {}
+site.pages.find({ type }).each((p) => {
+  var path = (p.path || '').replace(/index\.html$/, '');
+  catPages[p.category] = catPages[p.category] || [];
+  catPages[p.category].push(p);
+})
 %>
 %>
 <div class="Sidebar js-Sidebar">
 <div class="Sidebar js-Sidebar">
   <ul class="main-menu">
   <ul class="main-menu">
@@ -30,30 +40,30 @@ var categories = [
         <a href="/<%- type %>"><%- type === 'api' ? 'API' : (type.charAt(0).toUpperCase() + type.slice(1)) %></a>
         <a href="/<%- type %>"><%- type === 'api' ? 'API' : (type.charAt(0).toUpperCase() + type.slice(1)) %></a>
       <% } %>
       <% } %>
     </h2>
     </h2>
+
     <ul class="menu-root">
     <ul class="menu-root">
-      <% site.pages.find({ type }).sort('order').each((p) => { %>
-        <% if (p.hidden) return; %>
-        <% var path = p.path.replace(/index\.html$/, ''); %>
-        <% var category = categories.find((c) => c.path === path) %>
-        <% // see https://github.com/vuejs/vuejs.org/blob/master/themes/vue/layout/partials/toc.ejs %>
-        <% if (category) { %>
+      <% for (var i in categories) { %>
+        <% var sorted = (catPages[categories[i].category] || ['No catPages for: ' + i]).sort((a, b) => {return a.order - b.order}) %>
+        <% if (!categories[i].hidden) { %>
           <li>
           <li>
-            <% if (category.link) { %>
-              <h3><a href="/<%- category.path %>"><%- category.name %></a></h3>
+            <% if (categories[i].link) { %>
+            <h3><a href="/<%- categories[i].path %>"><%- categories[i].category %></a></h3>
             <% } else { %>
             <% } else { %>
-              <h3><%- category.name %></h3>
+            <h3><%- categories[i].category %></h3>
             <% } %>
             <% } %>
           </li>
           </li>
+        <% } %>
+        <% sorted.forEach((p) => { %>
+          <% var path = (p.path || '').replace(/index\.html$/, ''); %>
+          <% var firstInCategory = categories.find((c) => c.path === path) %>
+          <% // see https://github.com/vuejs/vuejs.org/blob/master/themes/vue/layout/partials/toc.ejs %>
           <li>
           <li>
-            <a href="/<%- path %>" class="sidebar-link<%- page.title === p.title ? ' current' : '' %><%- p.is_new ? ' new' : '' %>"><%- p.menu || p.title %></a>
-          </li>
-        <% } else { %>
-          <li>
-            <a href="/<%- path %>" class="sidebar-link<%- page.title === p.title ? ' current' : '' %><%- p.is_new ? ' new' : '' %>"><%- p.menu || p.title %></a>
+            <%- p.menu_prefix %><a href="/<%- path %>" class="sidebar-link<%- page.title === p.title ? ' current' : '' %>"><%- p.menu || p.title %></a>
           </li>
           </li>
-        <% } %>
-      <% }) %>
+        <% }) %>
+      <% } %>
     </ul>
     </ul>
     <%- partial('partials/social') %>
     <%- partial('partials/social') %>
   </div>
   </div>
 </div>
 </div>
+

+ 10 - 0
website/themes/uppy/source/css/_page.scss

@@ -80,6 +80,16 @@
     margin: 0.8em 0;
     margin: 0.8em 0;
   }
   }
 
 
+  ul.menu-root {
+    hr {
+      margin-top: -4px;
+      margin-bottom: 4px;
+      width: 85%;
+      border: 1px solid #e9e9e9;
+      margin-left: -1px;
+    }
+  }
+
   .sidebar-link {
   .sidebar-link {
     color: $color-light;
     color: $color-light;