diff --git a/docs/contributor-docs/adding-icons.md b/docs/contributor-docs/adding-icons.md
new file mode 100644
index 0000000000..62a239c617
--- /dev/null
+++ b/docs/contributor-docs/adding-icons.md
@@ -0,0 +1,97 @@
+---
+title: Adding new icons
+category: Contributor Guides
+order: 9
+---
+
+## Adding and Modifying Icons
+
+- Use dashes in the name of the .svg files (e.g `calendar-month`).
+ Use the same name for the "line" and "solid" variants, and save them in the respective folder, e.g. `Solid/calendar-month` and `Line/calendar-month`.
+
+- Copy the new icon files in the `/svg/Solid` and `/svg/Line` directories.
+
+- Double-check that the SVG size is 1920x1920.
+
+```html
+---
+type: code
+---
+
+
+```
+
+- The files cannot contain [clipping paths](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/clipPath)! Sadly, when the Designers export icons from Figma, most of the time they have a clipping path around the whole canvas. If the source code has them, manually refactor the code, e.g:
+
+```html
+---
+type: code
+---
+
+// Before:
+
+
+// After:
+
+```
+
+- If the icon has to bidirectional (being mirrored in RTL mode, typically arrow icons), add the icon name to the bidirectional list in `packages/ui-icons/icons.config.js`. Deprecated icons are handled here as well.
+
+- Run `npm run export:icons` from the repository root directory to generate the icons. This script will also take care of further optimizations on the SVG files (e.g. removing the `fill`s). The configs for this are located in `packages/ui-icons-build/lib/tasks/optimize-svgs/index.js` and `packages/ui-icons/svgo.config.js`.
+
+- Run `npm install && npm run bootstrap`.
+
+- Finally, run `npm run dev` from the repository root directory to start the local server and check the generated output.
+
+- Verify icons display correctly by checking under [Icons](/#icons) in the main nav. Check all 3 versions (React, SVG and icon font).
+
+(Note: The fonts are sometimes not rendered correctly, but we decided not to fix them, because they are not really used anywhere, and we might stop supporting icon fonts in the future in general.)
+
+### Guidelines for Drawing Icons
+
+- Draw your icons on the 1920 x 1920 art-boards.
+
+- Before you flatten shapes or vectorize strokes as described below, make a hidden copy of the original paths off
+ to the side so that you can more easily come back and make changes later.
+
+- Flatten your shapes.
+
+- Export strokes to vector.
+
+- Don’t use borders on vectors, especially not inside/outside borders which aren’t supported in SVG. Do not use clipping paths.
+
+- Make sure none of the paths go outside of the art-board. If so, the glyph in the icon font will be misaligned.
+ Draw inside the lines.
+
+- Fill the space edge-to-edge as much as possible. The build process will add margins as needed.
diff --git a/docs/patterns/DrilldownMenu.md b/docs/patterns/DrilldownMenu.md
deleted file mode 100644
index 01d2c1b379..0000000000
--- a/docs/patterns/DrilldownMenu.md
+++ /dev/null
@@ -1,223 +0,0 @@
----
-title: Drilldown Menu
-category: Patterns
-id: DrilldownMenu
----
-
-## Drilldown Menu
-
-> Note: We have added the official [Drilldown](#Drilldown) component to the InstUI library. Feel free to try it!
-
-This example shows an accessible implementation of a multi level menu using InstUI components. ([Popover](#Popover), [Menu](#Menu))
-This component is useful when you want to display large amounts of data in a compact manner and using [Menu.SubMenu](#Menu) would be too cumbersome to use.
-
-```js
----
-type: example
----
-
-const dataMap = {
- 1: {
- id: 1,
- subAccounts: {
- accounts: [
- {
- id: 2,
- accountName: 'Submenu Item 1'
- },
- {
- id: 7,
- accountName: 'Item 7'
- }
- ]
- }
- },
- 2: {
- id: 2,
- accountName: 'Submenu Item 1',
- parentAccount: 1,
- subAccounts: {
- accounts: [
- {
- id: 3,
- accountName: 'Submenu Item 2'
- },
- {
- id: 4,
- accountName: 'Item 3'
- },
- {
- id: 5,
- accountName: 'Item 4'
- }
- ]
- }
- },
- 3: {
- id: 3,
- accountName: 'Submenu Item 2',
- parentAccount: 2,
- subAccounts: {
- accounts: [
- {
- id: 6,
- accountName: 'Item 5'
- }
- ]
- }
- },
- 4: {
- id: 4,
- accountName: 'Item 3',
- parentAccount: 2,
- subAccounts: {
- accounts: []
- }
- },
- 5: {
- id: 5,
- accountName: 'Item 4',
- parentAccount: 2,
- subAccounts: {
- accounts: []
- }
- },
- 6: {
- id: 6,
- accountName: 'Item 5',
- parentAccount: 3,
- subAccounts: {
- accounts: []
- }
- },
- 7: {
- id: 7,
- accountName: 'Item 7',
- parentAccount: 1,
- subAccounts: {
- accounts: []
- }
- }
-}
-
-const useResetState = (initialState) => {
- const [value, setValue] = React.useState(initialState)
- React.useEffect(() => {
- setValue(initialState)
- }, [initialState])
-
- return [value, setValue]
-}
-
-const Example = ({ rootId, onChange = (_id) => {}, data }) => {
- const [tempAccountId, setTempAccountId] = useResetState(data[rootId].id)
- const [isShowingContent, setIsShowingContent] = React.useState(false)
- const menuRef = React.useRef()
- const accountObj = {
- ...data[tempAccountId]
- }
- const hasParentAccount = accountObj?.parentAccount
- const hasChildAccounts = accountObj?.subAccounts?.accounts.length > 0
- const childAccounts = accountObj?.subAccounts?.accounts
-
- const setAccountId = (id) => {
- setTempAccountId(id)
- onChange(id)
-
- menuRef.current.focus()
- }
-
- const renderBackNavigation = () => {
- if (hasParentAccount) {
- return (
-
{
- setAccountId(accountObj.parentAccount)
- }}
- >
-
-
-
-
- Back
-
-
- )
- }
- }
-
- const renderChildList = () => {
- return childAccounts
- ?.concat()
- .sort((a, b) => a.id - b.id)
- .map((a) => {
- if (data[a.id] && data[a.id]?.subAccounts?.accounts?.length) {
- return (
- setAccountId(a.id)}>
-
- {a.accountName}
-
-
-
-
-
- )
- } else {
- return (
- {console.log(`Selected account: ${a.accountName}`)}}>
- {a.accountName}
-
- )
- }
- }) || null
- }
-
- const handleTabbingOut = (event) => {
- // Drilldown should close when Tab is pressed
- if (isShowingContent && (event?.keyCode === 9)) { // 9 = Tab
- setIsShowingContent(false)
- }
- }
-
- return (
-
-
-
-
-
-
- }
- shouldRenderOffscreen={false}
- on="click"
- placement="bottom start"
- constrain="parent"
- offsetY={16}
- isShowingContent={isShowingContent}
- onShowContent={() => { setIsShowingContent(true) }}
- onHideContent={() => { setIsShowingContent(false) }}
- >
-
-
-
- )
-}
-
-
-render( console.log(`Selected account: ${dataMap[selectedId].accountName}`)} data={dataMap}/>)
-```
diff --git a/packages/ui-icons/README.md b/packages/ui-icons/README.md
index 70431c3b09..0b8a5ef3e3 100644
--- a/packages/ui-icons/README.md
+++ b/packages/ui-icons/README.md
@@ -29,97 +29,7 @@ const MyComponent = () => {
}
```
-### Adding and Modifying Icons
-
-- Use dashes in the name of the .svg files (e.g `calendar-month`).
- Use the same name for the "line" and "solid" variants, and save them in the respective folder, e.g. `Solid/calendar-month` and `Line/calendar-month`.
-
-- Copy the new icon files in the `/svg/Solid` and `/svg/Line` directories.
-
-- Double-check that the SVG size is 1920x1920.
-
-```html
----
-type: code
----
-
-
-```
-
-- The files cannot contain [clipping paths](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/clipPath)! Sadly, when the Designers export icons from Figma, most of the time they have a clipping path around the whole canvas. If the source code has them, manually refactor the code, e.g:
-
-```html
----
-type: code
----
-
-// Before:
-
-
-// After:
-
-```
-
-- If the icon has to bidirectional (being mirrored in RTL mode, typically arrow icons), add the icon name to the bidirectional list in `packages/ui-icons/icons.config.js`. Deprecated icons are handled here as well.
-
-- Run `npm run export:icons` from the repository root directory to generate the icons. This script will also take care of further optimizations on the SVG files (e.g. removing the `fill`s). The configs for this are located in `packages/ui-icons-build/lib/tasks/optimize-svgs/index.js` and `packages/ui-icons/svgo.config.js`.
-
-- Run `npm install && npm run bootstrap`.
-
-- Finally, run `npm run dev` from the repository root directory to start the local server and check the generated output.
-
-- Verify icons display correctly by checking under [Icons](/#icons) in the main nav. Check all 3 versions (React, SVG and icon font).
-
-(Note: The fonts are sometimes not rendered correctly, but we decided not to fix them, because they are not really used anywhere, and we might stop supporting icon fonts in the future in general.)
-
-### Guidelines for Drawing Icons
-
-- Draw your icons on the 1920 x 1920 art-boards.
-
-- Before you flatten shapes or vectorize strokes as described below, make a hidden copy of the original paths off
- to the side so that you can more easily come back and make changes later.
-
-- Flatten your shapes.
-
-- Export strokes to vector.
-
-- Don’t use borders on vectors, especially not inside/outside borders which aren’t supported in SVG. Do not use clipping paths.
-
-- Make sure none of the paths go outside of the art-board. If so, the glyph in the icon font will be misaligned.
- Draw inside the lines.
-
-- Fill the space edge-to-edge as much as possible. The build process will add margins as needed.
+For a guide on how to add/modify icons see [Adding Icons](#adding-icons)
[npm]: https://img.shields.io/npm/v/@instructure/ui-icons.svg
[npm-url]: https://npmjs.com/package/@instructure/ui-icons
diff --git a/packages/ui-icons/svg/Line/give-award.svg b/packages/ui-icons/svg/Line/give-award.svg
new file mode 100644
index 0000000000..aeb7c87983
--- /dev/null
+++ b/packages/ui-icons/svg/Line/give-award.svg
@@ -0,0 +1,6 @@
+
diff --git a/packages/ui-icons/svg/Line/grid-view.svg b/packages/ui-icons/svg/Line/grid-view.svg
new file mode 100644
index 0000000000..134515408b
--- /dev/null
+++ b/packages/ui-icons/svg/Line/grid-view.svg
@@ -0,0 +1,3 @@
+
diff --git a/packages/ui-icons/svg/Line/list-view.svg b/packages/ui-icons/svg/Line/list-view.svg
new file mode 100644
index 0000000000..2375d9426e
--- /dev/null
+++ b/packages/ui-icons/svg/Line/list-view.svg
@@ -0,0 +1,3 @@
+
diff --git a/packages/ui-icons/svg/Solid/give-award.svg b/packages/ui-icons/svg/Solid/give-award.svg
new file mode 100644
index 0000000000..c093765bfa
--- /dev/null
+++ b/packages/ui-icons/svg/Solid/give-award.svg
@@ -0,0 +1,6 @@
+
diff --git a/packages/ui-icons/svg/Solid/grid-view.svg b/packages/ui-icons/svg/Solid/grid-view.svg
new file mode 100644
index 0000000000..db6b58e878
--- /dev/null
+++ b/packages/ui-icons/svg/Solid/grid-view.svg
@@ -0,0 +1,3 @@
+
diff --git a/packages/ui-icons/svg/Solid/list-view.svg b/packages/ui-icons/svg/Solid/list-view.svg
new file mode 100644
index 0000000000..101008cc92
--- /dev/null
+++ b/packages/ui-icons/svg/Solid/list-view.svg
@@ -0,0 +1,3 @@
+