diff --git a/.changeset/giant-scissors-grab.md b/.changeset/giant-scissors-grab.md
new file mode 100644
index 000000000..c51520580
--- /dev/null
+++ b/.changeset/giant-scissors-grab.md
@@ -0,0 +1,10 @@
+---
+'@lion/ui/checkbox-group': patch
+'@lion/ui/core': patch
+'@lion/ui/drawer': patch
+'@lion/ui/form-core': patch
+'@lion/ui/input-tel': patch
+'@lion/ui/input-tel-dropdown': patch
+---
+
+replaced import('lit-element') with import('lit') to fix tests, fixed test for SlotMixin
diff --git a/.changeset/hot-poets-shout.md b/.changeset/hot-poets-shout.md
new file mode 100644
index 000000000..eb26bdbee
--- /dev/null
+++ b/.changeset/hot-poets-shout.md
@@ -0,0 +1,5 @@
+---
+'@lion/ui/drawer': patch
+---
+
+implemented lion-drawer
diff --git a/docs/components/drawer/index.md b/docs/components/drawer/index.md
new file mode 100644
index 000000000..a00890323
--- /dev/null
+++ b/docs/components/drawer/index.md
@@ -0,0 +1,3 @@
+# Drawer ||20
+
+-> go to Overview
diff --git a/docs/components/drawer/overview.md b/docs/components/drawer/overview.md
new file mode 100644
index 000000000..75c31f73e
--- /dev/null
+++ b/docs/components/drawer/overview.md
@@ -0,0 +1,68 @@
+# Drawer >> Overview ||10
+
+A combination of a button (the invoker) and a chunk of 'extra content'. This web component can be extended with an
+animation to disclose the extra content.
+
+There are three slots available respectively; `invoker` to specify the
+drawer's invoker, `headline` for the optional headline and `content` for the content of the drawer.
+
+Through the `position` property, the drawer can be placed on the `top`, `left` or `right` of the viewport.
+
+```js script
+import { html } from '@mdjs/mdjs-preview';
+import '@lion/ui/define/lion-drawer.js';
+import '@lion/ui/define/lion-icon.js';
+import { icons } from '@lion/ui/icon.js';
+import { demoStyle } from './src/demoStyle.js';
+
+icons.addIconResolver('lion', (iconset, name) => {
+ switch (iconset) {
+ case 'misc':
+ return import('../icon/assets/iconset-misc.js').then(module => module[name]);
+ default:
+ throw new Error(`Unknown iconset ${iconset}`);
+ }
+});
+```
+
+```js preview-story
+export const main = () => html`
+
+
+
+
+
Headline
+
Hello! This is the content of the drawer
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum convallis, lorem sit amet
+ sollicitudin egestas, dui lectus sodales leo, quis luctus nulla metus vitae lacus. In at
+ imperdiet augue. Mauris mauris dolor, faucibus non nulla vel, vulputate hendrerit mauris.
+ Praesent dapibus leo nec libero scelerisque, ac venenatis ante tincidunt. Nulla maximus
+ vestibulum orci, ac viverra nisi molestie vel. Vivamus eget elit et turpis elementum tempor
+ ultricies at turpis. Ut pretium aliquet finibus. Duis ullamcorper ultrices velit id luctus.
+ Phasellus in ex luctus, interdum ex vel, eleifend dolor. Cras massa odio, sodales quis
+ consectetur a, blandit eu purus. Donec ut gravida libero, sed accumsan arcu.
+
+
+`;
+```
+
+## Installation
+
+```bash
+npm i --save @lion/ui
+```
+
+```js
+import { LionDrawer } from '@lion/ui/drawer.js';
+// or
+import '@lion/ui/define/lion-drawer.js';
+```
diff --git a/docs/components/drawer/src/demoStyle.js b/docs/components/drawer/src/demoStyle.js
new file mode 100644
index 000000000..763a89c60
--- /dev/null
+++ b/docs/components/drawer/src/demoStyle.js
@@ -0,0 +1,71 @@
+import { css } from 'lit';
+
+export const demoStyle = css`
+ .demo-container {
+ height: 400px;
+ display: flex;
+ flex-direction: row;
+ }
+
+ .demo-container > div {
+ padding: 8px;
+ background-color: #f6f8fa;
+ }
+
+ lion-drawer {
+ height: 400px;
+ }
+
+ button {
+ all: revert !important;
+ border: 2px solid #000000;
+ background-color: rgb(239, 239, 239);
+ }
+
+ .demo-container-top {
+ height: 400px;
+ display: flex;
+ flex-direction: column;
+ }
+
+ .demo-container-top > div {
+ padding: 8px;
+ height: 100%;
+ background-color: #f6f8fa;
+ }
+
+ .demo-container-top lion-drawer {
+ height: auto;
+ width: 100%;
+ }
+
+ .demo-container-right {
+ height: 400px;
+ display: flex;
+ flex-direction: row-reverse;
+ }
+
+ .demo-container-right > div {
+ padding: 8px;
+ background-color: #f6f8fa;
+ }
+
+ .demo-container-right lion-drawer {
+ height: 400px;
+ }
+
+ .demo-container-opened {
+ height: 400px;
+ display: flex;
+ flex-direction: row;
+ }
+
+ .demo-container-opened > div {
+ padding: 8px;
+ background-color: #f6f8fa;
+ }
+
+ .demo-container-opened lion-drawer {
+ height: 400px;
+ }
+`;
diff --git a/docs/components/drawer/use-cases.md b/docs/components/drawer/use-cases.md
new file mode 100644
index 000000000..4ca44531d
--- /dev/null
+++ b/docs/components/drawer/use-cases.md
@@ -0,0 +1,194 @@
+# Drawer >> Use Cases ||20
+
+```js script
+import { html } from '@mdjs/mdjs-preview';
+import { icons } from '@lion/ui/icon.js';
+import '@lion/ui/define/lion-drawer.js';
+import '@lion/ui/define/lion-icon.js';
+import { demoStyle } from './src/demoStyle.js';
+
+icons.addIconResolver('lion', (iconset, name) => {
+ switch (iconset) {
+ case 'misc':
+ return import('../icon/assets/iconset-misc.js').then(module => module[name]);
+ default:
+ throw new Error(`Unknown iconset ${iconset}`);
+ }
+});
+```
+
+## Positioning
+
+### Default left
+
+By default, the drawer is positioned on the left side of the viewport.
+
+With the `position` property it can be positioned at the top or on the right of the screen.
+
+### Top
+
+```js preview-story
+export const top = () => html`
+
+
+
+
+
Headline
+
Hello! This is the content of the drawer
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum convallis, lorem sit amet
+ sollicitudin egestas, dui lectus sodales leo, quis luctus nulla metus vitae lacus. In at
+ imperdiet augue. Mauris mauris dolor, faucibus non nulla vel, vulputate hendrerit mauris.
+ Praesent dapibus leo nec libero scelerisque, ac venenatis ante tincidunt. Nulla maximus
+ vestibulum orci, ac viverra nisi molestie vel. Vivamus eget elit et turpis elementum tempor
+ ultricies at turpis. Ut pretium aliquet finibus. Duis ullamcorper ultrices velit id luctus.
+ Phasellus in ex luctus, interdum ex vel, eleifend dolor. Cras massa odio, sodales quis
+ consectetur a, blandit eu purus. Donec ut gravida libero, sed accumsan arcu.
+
+
+`;
+```
+
+### Right
+
+```js preview-story
+export const right = () => html`
+
+
+
+
+
Headline
+
Hello! This is the content of the drawer
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum convallis, lorem sit amet
+ sollicitudin egestas, dui lectus sodales leo, quis luctus nulla metus vitae lacus. In at
+ imperdiet augue. Mauris mauris dolor, faucibus non nulla vel, vulputate hendrerit mauris.
+ Praesent dapibus leo nec libero scelerisque, ac venenatis ante tincidunt. Nulla maximus
+ vestibulum orci, ac viverra nisi molestie vel. Vivamus eget elit et turpis elementum tempor
+ ultricies at turpis. Ut pretium aliquet finibus. Duis ullamcorper ultrices velit id luctus.
+ Phasellus in ex luctus, interdum ex vel, eleifend dolor. Cras massa odio, sodales quis
+ consectetur a, blandit eu purus. Donec ut gravida libero, sed accumsan arcu.
+
+
+`;
+```
+
+## Opened
+
+Add the `opened` attribute to display the drawer opened.
+
+```js preview-story
+export const opened = () => html`
+
+
+
+
Headline
+
Hello! This is the content of the drawer
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum convallis, lorem sit amet
+ sollicitudin egestas, dui lectus sodales leo, quis luctus nulla metus vitae lacus. In at
+ imperdiet augue. Mauris mauris dolor, faucibus non nulla vel, vulputate hendrerit mauris.
+ Praesent dapibus leo nec libero scelerisque, ac venenatis ante tincidunt. Nulla maximus
+ vestibulum orci, ac viverra nisi molestie vel. Vivamus eget elit et turpis elementum tempor
+ ultricies at turpis. Ut pretium aliquet finibus. Duis ullamcorper ultrices velit id luctus.
+ Phasellus in ex luctus, interdum ex vel, eleifend dolor. Cras massa odio, sodales quis
+ consectetur a, blandit eu purus. Donec ut gravida libero, sed accumsan arcu.
+
+
+`;
+```
+
+## Methods
+
+There are the following methods available to control the extra content for the drawer.
+
+- `toggle()`: toggle the extra content
+- `show()`: show the extra content
+- `hide()`: hide the extra content
+
+```js preview-story
+export const methods = ({ shadowRoot }) => html`
+
+
+
+
+
+
+
+
+
+
+
Headline
+
Hello! This is the content of the drawer
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum convallis, lorem sit amet
+ sollicitudin egestas, dui lectus sodales leo, quis luctus nulla metus vitae lacus. In at
+ imperdiet augue. Mauris mauris dolor, faucibus non nulla vel, vulputate hendrerit mauris.
+ Praesent dapibus leo nec libero scelerisque, ac venenatis ante tincidunt. Nulla maximus
+ vestibulum orci, ac viverra nisi molestie vel. Vivamus eget elit et turpis elementum tempor
+ ultricies at turpis. Ut pretium aliquet finibus. Duis ullamcorper ultrices velit id luctus.
+ Phasellus in ex luctus, interdum ex vel, eleifend dolor. Cras massa odio, sodales quis
+ consectetur a, blandit eu purus. Donec ut gravida libero, sed accumsan arcu.
+
+
+`;
+```
+
+## Events
+
+`lion-drawer` fires an event on `invoker` click to notify the component's current state. It is useful for analytics purposes or to perform some actions while expanding and collapsing the component.
+
+- `@opened-changed`: triggers when drawer either gets opened or closed
+
+```js preview-story
+export const events = ({ shadowRoot }) => html`
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum convallis, lorem sit amet
+ sollicitudin egestas, dui lectus sodales leo, quis luctus nulla metus vitae lacus. In at
+ imperdiet augue. Mauris mauris dolor, faucibus non nulla vel, vulputate hendrerit mauris.
+ Praesent dapibus leo nec libero scelerisque, ac venenatis ante tincidunt. Nulla maximus
+ vestibulum orci, ac viverra nisi molestie vel. Vivamus eget elit et turpis elementum tempor
+ ultricies at turpis. Ut pretium aliquet finibus. Duis ullamcorper ultrices velit id luctus.
+ Phasellus in ex luctus, interdum ex vel, eleifend dolor. Cras massa odio, sodales quis
+ consectetur a, blandit eu purus. Donec ut gravida libero, sed accumsan arcu.
+