diff --git a/.markdownlint.json b/.markdownlint.json
index 72c4e44fa2..7edadb1d0f 100644
--- a/.markdownlint.json
+++ b/.markdownlint.json
@@ -4,5 +4,6 @@
"no-duplicate-heading": false,
"no-trailing-punctuation": false,
"no-inline-html": false,
- "first-line-h1": false
+ "first-line-h1": false,
+ "code-block-style": false
}
diff --git a/apps/dialtone-documentation/docs/.vuepress/exampleComponents/ExamplePopover.vue b/apps/dialtone-documentation/docs/.vuepress/exampleComponents/ExamplePopover.vue
index 6c1ce82e9c..fe23bb3140 100644
--- a/apps/dialtone-documentation/docs/.vuepress/exampleComponents/ExamplePopover.vue
+++ b/apps/dialtone-documentation/docs/.vuepress/exampleComponents/ExamplePopover.vue
@@ -2,7 +2,8 @@
['auto'],
+ },
},
};
diff --git a/apps/dialtone-documentation/docs/components/popover.md b/apps/dialtone-documentation/docs/components/popover.md
index 14e222e8f4..014fab9fc9 100644
--- a/apps/dialtone-documentation/docs/components/popover.md
+++ b/apps/dialtone-documentation/docs/components/popover.md
@@ -28,6 +28,8 @@ Your popover should be non-modal when:
- It is not scrollable.
- It contains only components that do not hold state (link, button).
+The content slot will be rendered lazily when the popover is open. By default, the popover content will be opened when the anchor is clicked, and closed when clicking outside the content or on `ESC` key press. You may override this behaviour by using `.sync` on the open prop (or `v-model:open` in Vue 3) in which you can open or close the content using whichever condition you wish.
+
@@ -329,6 +331,92 @@ vueCode='
'
showHtmlWarning />
+### Fallback placements
+
+The popover uses [headless-tippy](https://atomiks.github.io/tippyjs/v6/headless-tippy/) and
+[popper](https://popper.js.org/docs/v2/modifiers/flip/), if the popover opens in a placement where it will
+be clipped, it will move to a new position. It will do this automatically by default, but if you want to
+manually specify which position it will move to in what order you can do so via the fallbackPlacements prop.
+
+
+
+
+
+
+
+
+ View Popover
+
+
+
+
+
+ This is content rendered within the popover.
+
+
+ Button
+
+
+
+
+'
+/>
+
+### Padding
+
+Padding options for the popover content are provided via size classes "small", "medium" or "large" in order to standardize the look of the popover content between usages. To remove the padding from the content, you can pass "none". Setting none will also allow you to set custom padding via utility classes (Ex: you only want padding on the left.).
+
+
+
+
+
+
+
+
+ View Popover
+
+
+
+
+
+ This is content rendered within the popover.
+
+
+ Button
+
+
+
+
+'
+/>
+
+### Force close all opened instances
+
+When the popover is open, it will attach an event listener into the window object, so you can close the instances dispatching the `dt-popover-close` event in the window object:
+
+```js
+const e = new Event('dt-popover-close');
+window.dispatchEvent(e);
+```
+
## Vue API
@@ -343,8 +431,50 @@ Popover must contain an anchor and content element. d-modal--transparent can be
If your popover is modal, please see the accessibility section of this page regarding "focus trapping": Modal Accessibility. The same rules will apply here if your popover is modal.
+Popovers, in their current implementation, are accessible when used as interactive components. Content will be read to screen reader users, and the popover markup by is appended to the ``.
+
+There are a few important considerations to ensure popover controls are accessible:
+
+- The popover content will have a generic role of "dialog" ( "menu" and "listbox" are also possible roles as well).
+- On open, focus will be transferred to the first focusable element within the popover, after close the triggering element will be focused.
+- It is possible to include a screen reader visible only close button setting "visually-hidden-close" and "visually-hidden-close-label" props.
+
+## Anchor
+
+The anchor element that activates the popover should be fully accessible by keyboard. The easiest way to do this is by using an element like an `DtButton` that is already accessible. The user should also be able to close the popover content using the `ESC` key for most ARIA roles.
+
+There are some required ARIA attributes for the anchor element (such as `aria-expanded` set based on `open` and `aria-haspopup` that matches the `role`). To make this as straightforward as possible, these ARIA attributes are passed with the correct values as the `attrs` slot-scope to the anchor slot. Applying them is as simple as using `v-bind`:
+
+```vue
+
+ I'm accessible now!
+
+```
+
+By default, the dialog content will be labeled by the entire anchor element. To change this, you can do one of 2 things:
+
+- Pass `aria-label`, which is the text label that will be applied to the dialog content.
+- Pass `aria-labelledby`, which is an ID of the element that should be used as the descriptive label.
+
+### Keyboard support
+
+The below keyboard functionality is automatically implemented when using the popover component:
+
+- The user can dismiss the popover pressing the `ESC` key, after that the focus will be returned to the element that launched it.
+- The user can traverse focusable elements using the `TAB` key. If the popover has a defined header, the focus will be moved to the header buttons after the last focusable element inside content's container.
+
+Additionally you must use the "initialFocusElement" prop to set which element is initially focused when the popover opens. You can set this to "first" to focus the first focusable element, "dialog" to focus the dialog itself, a string starting with '#' to focus an element by id within the dialog or you may pass in an HTMLElement directly. If set to "none" the focus will remain on the anchor, however this is invalid behavior if the popover is modal.
+
+### References
+
+- [tippyjs](https://atomiks.github.io/tippyjs/)
+- [popper.js](https://popper.js.org/)
+- [Apple. Human Interface Guidelines](https://developer.apple.com/design/human-interface-guidelines/ios/views/popovers/)
+- [Spectrum. Accessibility overlay trigger](https://react-spectrum.adobe.com/react-aria/useOverlayTrigger.html)
+- [Slack Design. Accessibility, a powerful design tool](https://slack.design/articles/accessibility-a-powerful-design-tool/)
+
diff --git a/apps/dialtone-documentation/docs/components/presence.md b/apps/dialtone-documentation/docs/components/presence.md
index b11702284d..1fd0751132 100644
--- a/apps/dialtone-documentation/docs/components/presence.md
+++ b/apps/dialtone-documentation/docs/components/presence.md
@@ -109,6 +109,24 @@ showHtmlWarning />
You may wish to announce any live changes to this component via the screen reader since this is only a visual indicator.
+If you'd like for a screen reader to read out any changes to Presence, you should pass the `srText` prop so it is
+read by AT and set the `aria-live` attribute to either 'polite' or 'assertive'.
+Even though the component has a role of "status" to assist SR apps in reading out status changes, its default
+'aria-live' value is set to 'off'.
+
+[See W3C guidelines](https://www.w3.org/WAI/WCAG22/Techniques/aria/ARIA22) for more information.
+
+Example:
+
+```html
+
+```
+
+Abbreviations / symbols should be read out in full for voiceover / screen readers.
+
diff --git a/apps/dialtone-documentation/docs/components/radio-group.md b/apps/dialtone-documentation/docs/components/radio-group.md
index 16874cd050..2547eed79a 100644
--- a/apps/dialtone-documentation/docs/components/radio-group.md
+++ b/apps/dialtone-documentation/docs/components/radio-group.md
@@ -14,9 +14,9 @@ storybook: https://dialtone.dialpad.com/vue/?path=/story/components-radio-group-
name="fruits-radio-group-00"
legend="Fruits"
>
- Apple
- Banana
- Other
+ Apple
+ Banana
+ Other
@@ -88,6 +88,138 @@ vueCode='
'
showHtmlWarning />
+### With Options
+
+Passing in Radio components programmatically using an options object.
+
+
+
+
+ {{ option.label }}
+
+
+
+
+ $refs.optionsExample'
+vueCode='
+
+
+ {{ option.label }}
+
+
+'
+/>
+
+### Without Legend
+
+When no legend is provided it is expected that an `aria-label` is passed into the component.
+
+
+
+ Pear
+ Kiwi
+
+
+
+ $refs.ariaLabelExample'
+vueCode='
+
+ Pear
+ Kiwi
+
+'
+/>
+
+### With Slotted Legend
+
+The legend can also be passed by slot.
+
+
+
+ Pear
+ Kiwi
+
+ Fruits
+
+
+
+
+ $refs.slottedLegendExample'
+vueCode='
+
+ Pear
+ Kiwi
+
+ Fruits
+
+
+'
+/>
+
+### With Event Hander
+
+The event handler is only needed if you need to do additional processing. The v-model is automatically updated.
+
+
+
+ Pear
+ Kiwi
+
+
+
+ $refs.eventHandlerExample'
+vueCode='
+
+ Pear
+ Kiwi
+
+'
+/>
+
### With validation states
@@ -205,3 +337,21 @@ showHtmlWarning />
## Vue API
+
+## Accessibility
+
+Radio Groups are typically paired with a legend which identifies the group. If no legend is provided then it is expected
+that an `aria-label` will be given in order to provide an invisible label to screen readers.
+
+
diff --git a/apps/dialtone-documentation/docs/components/radio.md b/apps/dialtone-documentation/docs/components/radio.md
index aa014d8392..4bd3b59150 100644
--- a/apps/dialtone-documentation/docs/components/radio.md
+++ b/apps/dialtone-documentation/docs/components/radio.md
@@ -9,14 +9,10 @@ figma_url: https://www.figma.com/file/2adf7JhZOncRyjYiy2joil/DT-Core%3A-Componen
---
-
-
-
-
-
-
-
-
+
@@ -56,30 +52,9 @@ Radio buttons are a common way to allow users to make a single selection from a
@@ -128,24 +103,8 @@ showHtmlWarning />
@@ -185,33 +144,27 @@ showHtmlWarning />
@@ -268,15 +221,12 @@ vueCode='
label="To voicemail"
validation-state="warning"
:messages="[{ message: `So they can hear your voice`, type: `warning` }]"
- checked
/>
+### With slotted label
+
+
+
+ With Slotted Label
+
+
+
+ $refs.slottedLabel'
+vueCode='
+
+ With Slotted Label
+
+'
+/>
+
+### With slotted description
+
+
+
+
+ Slotted Description
+
+
+
+
+ $refs.slottedDescription'
+vueCode='
+
+
+ Slotted Description
+
+
+'
+/>
+
## Classes
diff --git a/packages/dialtone-vue2/components/popover/popover.mdx b/packages/dialtone-vue2/components/popover/popover.mdx
index 0eea6f21d1..90eb9e3ab8 100644
--- a/packages/dialtone-vue2/components/popover/popover.mdx
+++ b/packages/dialtone-vue2/components/popover/popover.mdx
@@ -1,158 +1,9 @@
import { Canvas, Story, Subtitle, Controls, Meta } from '@storybook/blocks';
-
import * as PopoverStories from './popover.stories';
+import RedirectToDocs from "@/common/snippets/redirect-to-docs.mdx"
# Popover
-
- A Popover displays a content overlay when its anchor element is activated.
-
-
-## Base Style
-
-- Activating the anchor will display a white content box with rounded corners, and a box shadow.
-- The popover may optionally have a header / footer.
- - Header / Footer is always placed at the top and bottom of the popover frame respectively and will remain in place as
-the main content is scrolled.
- - Header / Footer will remain in place as the main content is scrolled.
-- Setting the max height of the popover will make the content scrollable. Otherwise the popover will size to fit its
-content
-
-
-
-## Variants
-
-### Fallback Placements
-
-The popover uses [headless-tippy](https://atomiks.github.io/tippyjs/v6/headless-tippy/) and
-[popper](https://popper.js.org/docs/v2/modifiers/flip/), if the popover opens in a placement where it will
-be clipped, it will move to a new position. It will do this automatically by default, but if you want to
-manually specify which position it will move to in what order you can do so via the fallbackPlacements prop.
-
-### Padding
-
-Padding options for the popover content are provided via size classes `small`/`medium`/`large` in order to standardize
-the look of the popover content between usages. To remove the padding from the content, you can pass `none`. Setting
-`none` will also allow you to set custom padding via utility classes (Ex: you only want padding on the left.).
-
-### Variants
-
-
-
-## Slots, Props & Events
-
-
-
-## Basic Usage
-
-Popovers may be used standalone, or to create a dropdown menu or other complex control.
-Setting the `modal` prop will set an invisible overlay which will prevent interaction with anything rendered outside
-of the popover. Note we also have the [dt-modal](/story/components-modal--default) component which should be used
-for fullscreen modals that are not displayed relative to the anchor.
-
-A popover has 2 main required slots: the **anchor** and the **content**.
-
-The **anchor** is the control that the content will be positioned relative to and triggers the visibility of the
-content. Normally a button, the anchor can be any *interactive* element that could control the visibility of the popover
-content. For example, the anchor could be an input element with a conditionally displayed `listbox` content element to
-implement an auto-suggest form component.
-
-The **content** slot will be rendered lazily when the popover is open. By default, the popover content will
-be opened when the anchor is clicked, and closed when clicking outside the content or on `ESC` key press. You may
-override this behaviour by using `.sync` on the open prop (or `v-model:open` in Vue 3) in which you can open or close
-the content using whichever condition you wish.
-
-### Import
-
-```jsx
-import { DtPopover } from '@dialpad/dialtone-vue';
-```
-
-### Basic usage with named slots
-
-```jsx
-
-
-
- Click to open
-
-
-
-
I will be displayed in the popover!
-
-
-```
-
-### Force close all opened instances
-
-When the popover is open, it will attach an event listener into the window object, so you can close the instances
-dispatching the `dt-popover-close` event in the window object:
-
-```js
-const e = new Event('dt-popover-close');
-window.dispatchEvent(e);
-```
-
-## Accessibility
-
-Popovers, in their current implementation, are accessible when used as interactive components.
-Content will be read to screen reader users, and the popover markup by is appended to the ``
-
-There are a few important considerations to ensure popover controls are accessible.
-The popover, by default:
-
-- the popover content will have a generic role of "dialog" ( `menu`, `listbox` also possible roles as well).
-- on open, focus will be transferred to the first focusable element within the popover, after close the triggering
-element will be focused.
-- It is possible to include a screen reader visible only close button setting `visually-hidden-close`
-and `visually-hidden-close-label` props.
-
-### Anchor
-
-The anchor element that activates the popover should be fully accessible by keyboard. The easiest way to do this is by
-using an element like an `DtButton` that is already accessible. The user should also be able to close the popover
-content using the `ESC` key for most ARIA roles.
-
-There are some required ARIA attributes for the anchor element (such as `aria-expanded` set based on `open` and
-`aria-haspopup` that matches the `role`). To make this as straightforward as possible, these ARIA attributes are passed
-with the correct values as the `attrs` slot-scope to the anchor slot. Applying them is as simple as using `v-bind`:
-
-```jsx
-
- I'm accessible now!
-
-```
-
-By default, the dialog content will be labeled by the entire anchor element. To change this, you can do one of 2 things:
-
-1. Pass `aria-label`, which is the text label that will be applied to the dialog content.
-2. Pass `aria-labelledby`, which is an ID of the element that should be used as the descriptive label.
-
-### Keyboard support
-
-The below keyboard functionality is automatically implemented when using the popover component:
-
-- The user can dismiss the popover pressing the `ESC` key, after that the focus will be returned to the element
-that launched it.
-- The user can traverse focusable elements using the `TAB` key. If the popover has a defined header, the focus will be
-moved to the header buttons after the last focusable element inside content's container.
-
-Additionally you must use the "initialFocusElement" prop to set which element is initially focused when the popover
-opens. You can set this to "first" to focus the first focusable element, "dialog" to focus the dialog itself, a string
-starting with '#' to focus an element by id within the dialog or you may pass in an HTMLElement directly.
-If set to "none" the focus will remain on the anchor, however this is invalid behavior if the popover is modal.
-
-### References
-
-- [tippyjs](https://atomiks.github.io/tippyjs/), [popper.js](https://popper.js.org/)
-- [Apple. Human Interface Guidelines](https://developer.apple.com/design/human-interface-guidelines/ios/views/popovers/)
-, [Spectrum. Accessibility overlay trigger](https://react-spectrum.adobe.com/react-aria/useOverlayTrigger.html),
-[Slack Design. Accessibility, a powerful design tool](https://slack.design/articles/accessibility-a-powerful-design-tool/)
+
diff --git a/packages/dialtone-vue2/components/presence/presence.mdx b/packages/dialtone-vue2/components/presence/presence.mdx
index be7ac1efd0..efe03e2e9f 100644
--- a/packages/dialtone-vue2/components/presence/presence.mdx
+++ b/packages/dialtone-vue2/components/presence/presence.mdx
@@ -1,86 +1,10 @@
import { Canvas, Story, Subtitle, Controls, Meta } from '@storybook/blocks';
import * as PresenceStories from './presence.stories';
+import RedirectToDocs from "@/common/snippets/redirect-to-docs.mdx"
# Presence
-
- This component displays a presence circle indicating the current status.
-
-
-## Base Style
-
-Presence can be initialized by passing `presence` prop that can take one of 4 values: 'away', 'active', 'offline', and 'busy'.
-By default, it's set to 'active'.
-
-
-
-## Variants
-
-
-
-## Props, Slots & Events
-
-
-
-## Usage
-
-### Import
-
-```jsx
-import { DtPresence } from '@dialpad/dialtone-vue';
-```
-
-### With Presence Prop
-
-```html
-
-```
-
-### With SR text prop
-
-```html
-
-```
-
-### With Theme prop
-
-```html
-
-```
-
-### Accessibility
-
-The Presence component is purely visual by default, and will not be read out to a screen reader.
-
-If you'd like for a SR to read out any changes to Presence, you should pass the `srText` prop so it is
-read by AT and set the `aria-live` attribute to either 'polite' or 'assertive'.
-Even though the component has a role of "status" to assist SR apps in reading out status changes, its default
-'aria-live' value is set to 'off'.
-
-[See W3C guidelines](https://www.w3.org/WAI/WCAG22/Techniques/aria/ARIA22)
-for more information.
-
-Example:
-
-```html
-
-```
-
-Abbreviations / symbols should be read out in full for voiceover / screen readers.
+
diff --git a/packages/dialtone-vue2/components/radio/radio.mdx b/packages/dialtone-vue2/components/radio/radio.mdx
index 9bd4b5b7a9..fd2729059c 100644
--- a/packages/dialtone-vue2/components/radio/radio.mdx
+++ b/packages/dialtone-vue2/components/radio/radio.mdx
@@ -1,117 +1,9 @@
import { Canvas, Story, Subtitle, Controls, Meta } from '@storybook/blocks';
-
import * as RadioStories from './radio.stories';
+import RedirectToDocs from "@/common/snippets/redirect-to-docs.mdx"
# Radio
-
- Radios are control elements that allow the user to make a single selection. They are typically used in a Radio Group
- which allows the user to make a selection from a list of options.
-
-
-## Base Style
-
-Radios are typically paired with a label which identifies the option. There are times when they can be used with a
-description which describes the option.
-
-
-
-## Variants
-
-
-
-## Slots, Props & Events
-
-
-
-## Usage
-
-### Import
-
-```jsx
-import { DtRadio, VALIDATION_MESSAGE_TYPES } from '@dialpad/dialtone-vue';
-```
-
-### With Label Prop
-
-```html
-
-```
-
-### With Slotted Label
-
-```html
-
- My Label
-
-```
-
-### With Description
-
-```html
-
- My Label
-
-```
-
-### With Slotted Label and Description
-
-```html
-
- My Label
-
- My Description
-
-
-```
-
-### With Group
-
-```html
-
-```
-
-### With Validation State
-
-
Error
-
-```html
-
-```
-
-
Warning
-
-```html
-
-```
-
-
Success
-
-```html
-
-```
+
diff --git a/packages/dialtone-vue2/components/radio_group/radio_group.mdx b/packages/dialtone-vue2/components/radio_group/radio_group.mdx
index c4abc2928a..50b9533082 100644
--- a/packages/dialtone-vue2/components/radio_group/radio_group.mdx
+++ b/packages/dialtone-vue2/components/radio_group/radio_group.mdx
@@ -1,174 +1,9 @@
import { Canvas, Story, Subtitle, Controls, Meta } from '@storybook/blocks';
-
import * as RadioGroupStories from './radio_group.stories';
+import RedirectToDocs from "@/common/snippets/redirect-to-docs.mdx"
-# Radio Group
-
-
- Radio Groups are control elements that allow the user to make a single selection from a list of options.
-
-
-## Base Style
-
-Radio Groups are typically paired with a legend which identifies the group. If no legend is provided then it is expected
-that an `aria-label` will be given in order to provide an invisible label to screen readers. Each Radio Group will
-contain one or more Radios which users will make a selection from.
-
-
-
-## Variants
-
-
-
-## Slots, Props & Events
-
-
-
-## Usage
-
-### Import
-
-```jsx
-import { DtRadio, DtRadioGroup } from '@dialpad/dialtone-vue';
-```
-
-### With Slots
-
-Passing in Radio components by slot.
-
-```html
-
- Pear
- Kiwi
-
-```
-
-### With Options
-
-Passing in Radio components programmatically using an options object.
-
-```js
-const options = [
- { label: 'Apple', value: 'apple' },
- { label: 'Banana', value: 'banana' },
- { label: 'Other', value: 'other' }
-];
-```
-
-```html
-
-
- {{ option.label }}
-
-
-```
-
-### Without Legend
-
-When no legend is provided it is expected that an `aria-label` is passed into the component.
-
-```html
-
- Pear
- Kiwi
-
-```
-
-### With Slotted Legend
-
-The legend can also be passed by slot.
-
-```html
-
- Pear
- Kiwi
-
- Fruits
-
-
-```
-
-### With Event Hander
-
-The event handler is only needed if you need to do additional processing. The v-model is automatically updated.
-
-```html
-
- Pear
- Kiwi
-
-```
-
-### With Validation Messages
-
-
Error
-
-```html
-
- Pear
- Kiwi
-
-```
-
-
Warning
-
-```html
-
- Pear
- Kiwi
-
-```
-
-
Success
+# Radio group
-```html
-
- Pear
- Kiwi
-
-```
+
diff --git a/packages/dialtone-vue3/components/popover/popover.mdx b/packages/dialtone-vue3/components/popover/popover.mdx
index 0eea6f21d1..90eb9e3ab8 100644
--- a/packages/dialtone-vue3/components/popover/popover.mdx
+++ b/packages/dialtone-vue3/components/popover/popover.mdx
@@ -1,158 +1,9 @@
import { Canvas, Story, Subtitle, Controls, Meta } from '@storybook/blocks';
-
import * as PopoverStories from './popover.stories';
+import RedirectToDocs from "@/common/snippets/redirect-to-docs.mdx"
# Popover
-
- A Popover displays a content overlay when its anchor element is activated.
-
-
-## Base Style
-
-- Activating the anchor will display a white content box with rounded corners, and a box shadow.
-- The popover may optionally have a header / footer.
- - Header / Footer is always placed at the top and bottom of the popover frame respectively and will remain in place as
-the main content is scrolled.
- - Header / Footer will remain in place as the main content is scrolled.
-- Setting the max height of the popover will make the content scrollable. Otherwise the popover will size to fit its
-content
-
-
-
-## Variants
-
-### Fallback Placements
-
-The popover uses [headless-tippy](https://atomiks.github.io/tippyjs/v6/headless-tippy/) and
-[popper](https://popper.js.org/docs/v2/modifiers/flip/), if the popover opens in a placement where it will
-be clipped, it will move to a new position. It will do this automatically by default, but if you want to
-manually specify which position it will move to in what order you can do so via the fallbackPlacements prop.
-
-### Padding
-
-Padding options for the popover content are provided via size classes `small`/`medium`/`large` in order to standardize
-the look of the popover content between usages. To remove the padding from the content, you can pass `none`. Setting
-`none` will also allow you to set custom padding via utility classes (Ex: you only want padding on the left.).
-
-### Variants
-
-
-
-## Slots, Props & Events
-
-
-
-## Basic Usage
-
-Popovers may be used standalone, or to create a dropdown menu or other complex control.
-Setting the `modal` prop will set an invisible overlay which will prevent interaction with anything rendered outside
-of the popover. Note we also have the [dt-modal](/story/components-modal--default) component which should be used
-for fullscreen modals that are not displayed relative to the anchor.
-
-A popover has 2 main required slots: the **anchor** and the **content**.
-
-The **anchor** is the control that the content will be positioned relative to and triggers the visibility of the
-content. Normally a button, the anchor can be any *interactive* element that could control the visibility of the popover
-content. For example, the anchor could be an input element with a conditionally displayed `listbox` content element to
-implement an auto-suggest form component.
-
-The **content** slot will be rendered lazily when the popover is open. By default, the popover content will
-be opened when the anchor is clicked, and closed when clicking outside the content or on `ESC` key press. You may
-override this behaviour by using `.sync` on the open prop (or `v-model:open` in Vue 3) in which you can open or close
-the content using whichever condition you wish.
-
-### Import
-
-```jsx
-import { DtPopover } from '@dialpad/dialtone-vue';
-```
-
-### Basic usage with named slots
-
-```jsx
-
-
-
- Click to open
-
-
-
-
I will be displayed in the popover!
-
-
-```
-
-### Force close all opened instances
-
-When the popover is open, it will attach an event listener into the window object, so you can close the instances
-dispatching the `dt-popover-close` event in the window object:
-
-```js
-const e = new Event('dt-popover-close');
-window.dispatchEvent(e);
-```
-
-## Accessibility
-
-Popovers, in their current implementation, are accessible when used as interactive components.
-Content will be read to screen reader users, and the popover markup by is appended to the ``
-
-There are a few important considerations to ensure popover controls are accessible.
-The popover, by default:
-
-- the popover content will have a generic role of "dialog" ( `menu`, `listbox` also possible roles as well).
-- on open, focus will be transferred to the first focusable element within the popover, after close the triggering
-element will be focused.
-- It is possible to include a screen reader visible only close button setting `visually-hidden-close`
-and `visually-hidden-close-label` props.
-
-### Anchor
-
-The anchor element that activates the popover should be fully accessible by keyboard. The easiest way to do this is by
-using an element like an `DtButton` that is already accessible. The user should also be able to close the popover
-content using the `ESC` key for most ARIA roles.
-
-There are some required ARIA attributes for the anchor element (such as `aria-expanded` set based on `open` and
-`aria-haspopup` that matches the `role`). To make this as straightforward as possible, these ARIA attributes are passed
-with the correct values as the `attrs` slot-scope to the anchor slot. Applying them is as simple as using `v-bind`:
-
-```jsx
-
- I'm accessible now!
-
-```
-
-By default, the dialog content will be labeled by the entire anchor element. To change this, you can do one of 2 things:
-
-1. Pass `aria-label`, which is the text label that will be applied to the dialog content.
-2. Pass `aria-labelledby`, which is an ID of the element that should be used as the descriptive label.
-
-### Keyboard support
-
-The below keyboard functionality is automatically implemented when using the popover component:
-
-- The user can dismiss the popover pressing the `ESC` key, after that the focus will be returned to the element
-that launched it.
-- The user can traverse focusable elements using the `TAB` key. If the popover has a defined header, the focus will be
-moved to the header buttons after the last focusable element inside content's container.
-
-Additionally you must use the "initialFocusElement" prop to set which element is initially focused when the popover
-opens. You can set this to "first" to focus the first focusable element, "dialog" to focus the dialog itself, a string
-starting with '#' to focus an element by id within the dialog or you may pass in an HTMLElement directly.
-If set to "none" the focus will remain on the anchor, however this is invalid behavior if the popover is modal.
-
-### References
-
-- [tippyjs](https://atomiks.github.io/tippyjs/), [popper.js](https://popper.js.org/)
-- [Apple. Human Interface Guidelines](https://developer.apple.com/design/human-interface-guidelines/ios/views/popovers/)
-, [Spectrum. Accessibility overlay trigger](https://react-spectrum.adobe.com/react-aria/useOverlayTrigger.html),
-[Slack Design. Accessibility, a powerful design tool](https://slack.design/articles/accessibility-a-powerful-design-tool/)
+
diff --git a/packages/dialtone-vue3/components/presence/presence.mdx b/packages/dialtone-vue3/components/presence/presence.mdx
index be7ac1efd0..efe03e2e9f 100644
--- a/packages/dialtone-vue3/components/presence/presence.mdx
+++ b/packages/dialtone-vue3/components/presence/presence.mdx
@@ -1,86 +1,10 @@
import { Canvas, Story, Subtitle, Controls, Meta } from '@storybook/blocks';
import * as PresenceStories from './presence.stories';
+import RedirectToDocs from "@/common/snippets/redirect-to-docs.mdx"
# Presence
-
- This component displays a presence circle indicating the current status.
-
-
-## Base Style
-
-Presence can be initialized by passing `presence` prop that can take one of 4 values: 'away', 'active', 'offline', and 'busy'.
-By default, it's set to 'active'.
-
-
-
-## Variants
-
-
-
-## Props, Slots & Events
-
-
-
-## Usage
-
-### Import
-
-```jsx
-import { DtPresence } from '@dialpad/dialtone-vue';
-```
-
-### With Presence Prop
-
-```html
-
-```
-
-### With SR text prop
-
-```html
-
-```
-
-### With Theme prop
-
-```html
-
-```
-
-### Accessibility
-
-The Presence component is purely visual by default, and will not be read out to a screen reader.
-
-If you'd like for a SR to read out any changes to Presence, you should pass the `srText` prop so it is
-read by AT and set the `aria-live` attribute to either 'polite' or 'assertive'.
-Even though the component has a role of "status" to assist SR apps in reading out status changes, its default
-'aria-live' value is set to 'off'.
-
-[See W3C guidelines](https://www.w3.org/WAI/WCAG22/Techniques/aria/ARIA22)
-for more information.
-
-Example:
-
-```html
-
-```
-
-Abbreviations / symbols should be read out in full for voiceover / screen readers.
+
diff --git a/packages/dialtone-vue3/components/radio/radio.mdx b/packages/dialtone-vue3/components/radio/radio.mdx
index 9bd4b5b7a9..fd2729059c 100644
--- a/packages/dialtone-vue3/components/radio/radio.mdx
+++ b/packages/dialtone-vue3/components/radio/radio.mdx
@@ -1,117 +1,9 @@
import { Canvas, Story, Subtitle, Controls, Meta } from '@storybook/blocks';
-
import * as RadioStories from './radio.stories';
+import RedirectToDocs from "@/common/snippets/redirect-to-docs.mdx"
# Radio
-
- Radios are control elements that allow the user to make a single selection. They are typically used in a Radio Group
- which allows the user to make a selection from a list of options.
-
-
-## Base Style
-
-Radios are typically paired with a label which identifies the option. There are times when they can be used with a
-description which describes the option.
-
-
-
-## Variants
-
-
-
-## Slots, Props & Events
-
-
-
-## Usage
-
-### Import
-
-```jsx
-import { DtRadio, VALIDATION_MESSAGE_TYPES } from '@dialpad/dialtone-vue';
-```
-
-### With Label Prop
-
-```html
-
-```
-
-### With Slotted Label
-
-```html
-
- My Label
-
-```
-
-### With Description
-
-```html
-
- My Label
-
-```
-
-### With Slotted Label and Description
-
-```html
-
- My Label
-
- My Description
-
-
-```
-
-### With Group
-
-```html
-
-```
-
-### With Validation State
-
-
Error
-
-```html
-
-```
-
-
Warning
-
-```html
-
-```
-
-
Success
-
-```html
-
-```
+
diff --git a/packages/dialtone-vue3/components/radio_group/radio_group.mdx b/packages/dialtone-vue3/components/radio_group/radio_group.mdx
index c4abc2928a..50b9533082 100644
--- a/packages/dialtone-vue3/components/radio_group/radio_group.mdx
+++ b/packages/dialtone-vue3/components/radio_group/radio_group.mdx
@@ -1,174 +1,9 @@
import { Canvas, Story, Subtitle, Controls, Meta } from '@storybook/blocks';
-
import * as RadioGroupStories from './radio_group.stories';
+import RedirectToDocs from "@/common/snippets/redirect-to-docs.mdx"
-# Radio Group
-
-
- Radio Groups are control elements that allow the user to make a single selection from a list of options.
-
-
-## Base Style
-
-Radio Groups are typically paired with a legend which identifies the group. If no legend is provided then it is expected
-that an `aria-label` will be given in order to provide an invisible label to screen readers. Each Radio Group will
-contain one or more Radios which users will make a selection from.
-
-
-
-## Variants
-
-
-
-## Slots, Props & Events
-
-
-
-## Usage
-
-### Import
-
-```jsx
-import { DtRadio, DtRadioGroup } from '@dialpad/dialtone-vue';
-```
-
-### With Slots
-
-Passing in Radio components by slot.
-
-```html
-
- Pear
- Kiwi
-
-```
-
-### With Options
-
-Passing in Radio components programmatically using an options object.
-
-```js
-const options = [
- { label: 'Apple', value: 'apple' },
- { label: 'Banana', value: 'banana' },
- { label: 'Other', value: 'other' }
-];
-```
-
-```html
-
-
- {{ option.label }}
-
-
-```
-
-### Without Legend
-
-When no legend is provided it is expected that an `aria-label` is passed into the component.
-
-```html
-
- Pear
- Kiwi
-
-```
-
-### With Slotted Legend
-
-The legend can also be passed by slot.
-
-```html
-
- Pear
- Kiwi
-
- Fruits
-
-
-```
-
-### With Event Hander
-
-The event handler is only needed if you need to do additional processing. The v-model is automatically updated.
-
-```html
-
- Pear
- Kiwi
-
-```
-
-### With Validation Messages
-
-