button and link (<a>) HTML elements each describe a specific intent. Understanding the distinction is important: if it goes somewhere, use a Link. If an action occurs, use a Button.
<dt-link href="#link">Base link</dt-link> <dt-link href="#link" tone="critical">Critical link</dt-link> <dt-link href="#link" tone="muted">Muted link</dt-link> <dt-link href="#link" tone="positive">Positive link</dt-link> <dt-link href="#link" tone="warning">Warning link</dt-link> <dt-link href="#link" tone="info">Info link</dt-link> <dt-link href="#link" tone="mention">@Mention link</dt-link> <dt-link href="#link" tone="unstyled">Unstyled link</dt-link>
This inverts the underline behavior. With underline="false", the link will not have an underline by default, but will show one on hover.
<dt-link href="#link" :underline="false">No underline link</dt-link>
In place of the inverted prop, use the v-dt-mode directive on the component element.
<dt-link v-dt-mode:invert {props}>Link</dt-link>
DtLink supports both external links and internal SPA navigation via Vue Router.
Use href for standard anchor links — external URLs, hash links, etc.
<dt-link href="https://github.com/dialpad/dialtone" target="_blank" rel="noopener noreferrer"> GitHub </dt-link> <dt-link href="#section">Jump to section</dt-link>
Use to for Vue Router navigation. DtLink renders as a <router-link> when to is provided.
<dt-link to="/components/">Browse Components</dt-link> <dt-link to="/components/button">Button docs</dt-link> <dt-link :to="{ name: 'component', params: { id: 'button' } }">Button docs</dt-link>
Use the replace prop to replace the current history entry instead of pushing a new one. Only applies when to is provided.
<dt-link to="/components/" replace>Browse Components</dt-link>
import { DtLink } from '@dialpad/dialtone-vue';
Name
|
Type
|
|---|---|
default | Slot for main content |
Name
|
Default
|
Type
|
|---|---|---|
href | null | string URL for anchor link navigation. Renders as a native element. |
replace | false |
"true"
|
"false"
When true, navigation replaces the current history entry instead of pushing.
Only applies when |
to | null | string|object Vue Router destination. Renders as a <router -link>.
Takes precedence over href when both are provided. |
tone | '' |
"null"
|
"critical"
|
"warning"
|
"positive"
|
"info"
|
"muted"
|
"mention"
|
"unstyled"
Applies the link variant styles |
underline | true |
"true"
|
"false"
Determines whether the link should display an underline. |
inverted Deprecated | false |
"true"
|
"false"
Determines whether the link should have inverted styling
default is false. Use v-dt-mode directive instead. |
kind Deprecated | string Use tone |
Class
|
Applies to
|
Description
|
|---|
Link documentation last updated Friday, September 4, 2026
fix/popover-modal-zindex-scope