# Download Trigger URL: https://ark-ui.com/docs/utilities/download-trigger Source: https://raw.githubusercontent.com/chakra-ui/ark/refs/heads/main/website/src/content/pages/utilities/download-trigger.mdx Trigger file downloads programmatically. --- ## Motivation The `DownloadTrigger` component provides a convenient way to programmatically trigger file downloads in web applications. It handles the complexities of downloading files, whether they are URLs, Blobs, or other data types. ## Examples ### Basic Pass the data you want to download to the `data` prop, and specify the `fileName` and `mimeType` of the file. **Example: basic** ```ripple import { DownloadTrigger } from 'ark-ripple/download-trigger'; import { Download, File } from 'lucide-ripple'; import button from 'styles/button.module.css'; import styles from 'styles/download-trigger.module.css'; const content = 'Hello, World! This is a sample text file.'; export component Basic() {
{content}
{' Download txt'}
} ``` ### Download SVG Here's an example of how to download an SVG file. **Example: svg** ```ripple import { DownloadTrigger } from 'ark-ripple/download-trigger'; import { Download, File } from 'lucide-ripple'; import button from 'styles/button.module.css'; import styles from 'styles/download-trigger.module.css'; const svgContent = ` `; export component Svg() {
{'circle.svg'}
{' Download SVG'}
} ``` ### Promise You can also trigger downloads from a promise that returns a `Blob`, `File`, or `string`. **Example: with-promise** ```ripple import { DownloadTrigger } from 'ark-ripple/download-trigger'; import { Download, Image } from 'lucide-ripple'; import button from 'styles/button.module.css'; import styles from 'styles/download-trigger.module.css'; const fetchImage = async () => { const response = await fetch('https://picsum.photos/200/300'); return response.blob(); }; export component WithPromise() {
{'random-image.jpg (fetched on download)'}
{' Download Image'}
} ``` ## API Reference **Component API Reference** **DownloadTrigger Props:** | Prop | Type | Required | Description | |------|------|----------|-------------| | `data` | `DownloadableData | (() => MaybePromise)` | Yes | The data to download | | `fileName` | `string` | Yes | The name of the file to download | | `mimeType` | `FileMimeType` | Yes | The MIME type of the data to download | | `asChild` | `boolean` | No | Use the provided child element as the default rendered element, combining their props and behavior. |