Svelte Device Mockups - Flowbite
Use the device mockups component to add content and screenshot previews of your application inside phone and tablet frames coded with Tailwind CSS and Flowbite
The device mockup component can be used to feature a preview and screenshot of your application as if you would already use it on a mobile phone and it’s a great use case for hero and CTA sections.
This component is built using only the utility classes from Tailwind CSS and has built-in dark mode support so it’s easy to customize, it loads very fast and integrates perfectly with Tailwind CSS and Flowbite.
You can choose from multiple examples of mockups including phone, tablet, laptop, and even desktop devices with iOS or Android support.
Setup #
- Svelte
<script>
import { DeviceMockup } from 'flowbite-svelte';
</script>Default mockup #
Use this example to show a standard phone mockup based on Tailwind CSS and add your app screenshot inside of it with dark mode support included.

- Svelte
<script>
import { DeviceMockup } from 'flowbite-svelte';
</script>
<DeviceMockup>
<img
src="https://flowbite.s3.amazonaws.com/blocks/marketing-ui/hero/mockup-1-light.png"
class="dark:hidden w-[272px] h-[572px]"
alt="default example 1" />
<img
src="https://flowbite.s3.amazonaws.com/blocks/marketing-ui/hero/mockup-1-dark.png"
class="hidden dark:block w-[272px] h-[572px]"
alt="default example 2" />
</DeviceMockup>iPhone 12 mockup (iOS) #
Use this example to clearly show that the preview of your application is being used on an iPhone with iOS.

- Svelte
<script>
import { DeviceMockup } from 'flowbite-svelte';
</script>
<DeviceMockup device="ios">
<img
src="https://flowbite.s3.amazonaws.com/blocks/marketing-ui/hero/mockup-2-light.png"
class="dark:hidden w-[272px] h-[572px]"
alt="ios example 1" />
<img
src="https://flowbite.s3.amazonaws.com/blocks/marketing-ui/hero/mockup-2-dark.png"
class="hidden dark:block w-[272px] h-[572px]"
alt="ios example 2" />
</DeviceMockup>Google Pixel mockup (Android) #
Use this alternative phone mockup example if you want to feature previews for android gadgets.

- Svelte
<script>
import { DeviceMockup } from 'flowbite-svelte';
</script>
<DeviceMockup device="android">
<img
src="https://flowbite.s3.amazonaws.com/blocks/marketing-ui/hero/mockup-1-light.png"
class="dark:hidden w-[272px] h-[572px]"
alt="android example 1" />
<img
src="https://flowbite.s3.amazonaws.com/blocks/marketing-ui/hero/mockup-1-dark.png"
class="hidden dark:block w-[272px] h-[572px]"
alt="android example 2" />
</DeviceMockup>Tablet mockup #
This component can be used to show an application preview inside of a responsive tablet mockup.

- Svelte
<script>
import { DeviceMockup } from 'flowbite-svelte';
</script>
<DeviceMockup device="tablet">
<img
src="https://flowbite.s3.amazonaws.com/docs/device-mockups/tablet-mockup-image.png"
class="dark:hidden h-[426px] md:h-[654px]"
alt="tablet example 1" />
<img
src="https://flowbite.s3.amazonaws.com/docs/device-mockups/tablet-mockup-image-dark.png"
class="hidden dark:block h-[426px] md:h-[654px]"
alt="tablet example 2" />
</DeviceMockup>Laptop mockup #
This example can be used to show a screenshot of your application inside a laptop mockup.

- Svelte
<script>
import { DeviceMockup } from 'flowbite-svelte';
</script>
<DeviceMockup device="laptop">
<img
src="https://flowbite.s3.amazonaws.com/docs/device-mockups/laptop-screen.png"
class="dark:hidden h-[156px] md:h-[278px] w-full rounded-xl"
alt="laptop example 1" />
<img
src="https://flowbite.s3.amazonaws.com/docs/device-mockups/laptop-screen-dark.png"
class="hidden dark:block h-[156px] md:h-[278px] w-full rounded-lg"
alt="laptop example 2" />
</DeviceMockup>Desktop mockup #
Use this example to show a preview of your applicaiton inside a desktop device such as an iMac.

- Svelte
<script>
import { DeviceMockup } from 'flowbite-svelte';
</script>
<DeviceMockup device="desktop">
<img
src="https://flowbite.s3.amazonaws.com/docs/device-mockups/screen-image-imac.png"
class="dark:hidden h-[140px] md:h-[262px] w-full rounded-xl"
alt="desktop example 1" />
<img
src="https://flowbite.s3.amazonaws.com/docs/device-mockups/screen-image-imac-dark.png"
class="hidden dark:block h-[140px] md:h-[262px] w-full rounded-xl"
alt="desktop example 2" />
</DeviceMockup>Smartwatch mockup #
This component can be used to showcase applications built for smartwatches.

- Svelte
<script>
import { DeviceMockup } from 'flowbite-svelte';
</script>
<DeviceMockup device="smartwatch">
<img
src="https://flowbite.s3.amazonaws.com/docs/device-mockups/watch-screen-image.png"
class="dark:hidden h-[193px] w-[188px"
alt="smartwatch example 1" />
<img
src="https://flowbite.s3.amazonaws.com/docs/device-mockups/watch-screen-image-dark.png"
class="hidden dark:block h-[193px] w-[188px]"
alt="smartwatch example 2" />
</DeviceMockup>Props #
The component has the following props, type, and default values. See types page for type information.
DeviceMockup #
- Use the
classprop to overwrite the outer div class.
| Name | Type | Default |
|---|---|---|
| device | 'default' | 'ios' | 'android' | 'tablet' | 'laptop' | 'desktop' | 'smartwatch' | 'default' |
| androidDiv | string | 'relative mx-auto border-gray-800 dark:border-gray-800 bg-gray-800 border-[14px] rounded-xl h-[600px] w-[300px] shadow-xl' |
| androidSlot | string | 'rounded-xl overflow-hidden w-[272px] h-[572px] bg-white dark:bg-gray-800' |
| androidTop | string | 'w-[148px] h-[18px] bg-gray-800 top-0 rounded-b-[1rem] left-1/2 -translate-x-1/2 absolute' |
| androidLeftTop | string | 'h-[32px] w-[3px] bg-gray-800 absolute -left-[17px] top-[72px] rounded-l-lg' |
| androidLeftMid | string | 'h-[46px] w-[3px] bg-gray-800 absolute -left-[17px] top-[124px] rounded-l-lg' |
| androidLeftBot | string | 'h-[46px] w-[3px] bg-gray-800 absolute -left-[17px] top-[178px] rounded-l-lg' |
| androidRight | string | 'h-[64px] w-[3px] bg-gray-800 absolute -right-[17px] top-[142px] rounded-r-lg' |
| defaultDiv | string | 'relative mx-auto border-gray-800 dark:border-gray-800 bg-gray-800 border-[14px] rounded-[2.5rem] h-[600px] w-[300px]' |
| defaultSlot | string | 'rounded-[2rem] overflow-hidden w-[272px] h-[572px] bg-white dark:bg-gray-800' |
| defaultTop | string | 'h-[32px] w-[3px] bg-gray-800 dark:bg-gray-800 absolute -left-[17px] top-[72px] rounded-l-lg' |
| defaultLeftTop | string | 'h-[46px] w-[3px] bg-gray-800 dark:bg-gray-800 absolute -left-[17px] top-[124px] rounded-l-lg' |
| defaultLeftBot | string | 'h-[46px] w-[3px] bg-gray-800 dark:bg-gray-800 absolute -left-[17px] top-[178px] rounded-l-lg' |
| defaultRight | string | 'h-[64px] w-[3px] bg-gray-800 dark:bg-gray-800 absolute -right-[17px] top-[142px] rounded-r-lg' |
| desktopInner | string | 'rounded-xl overflow-hidden h-[140px] md:h-[262px]' |
| desktopBot | string | 'relative mx-auto bg-gray-900 dark:bg-gray-700 rounded-b-xl h-[24px] max-w-[301px] md:h-[42px] md:max-w-[512px]' |
| desktopBotUnder | string | 'relative mx-auto bg-gray-800 rounded-b-xl h-[55px] max-w-[83px] md:h-[95px] md:max-w-[142px]' |
| destopDiv | string | 'relative mx-auto border-gray-800 dark:border-gray-800 bg-gray-800 border-[16px] rounded-t-xl h-[172px] max-w-[301px] md:h-[294px] md:max-w-[512px]' |
| desktopSlot | string | 'rounded-xl overflow-hidden h-[140px] md:h-[262px]' |
| iosDiv | string | 'relative mx-auto border-gray-800 dark:border-gray-800 bg-gray-800 border-[14px] rounded-[2.5rem] h-[600px] w-[300px] shadow-xl' |
| iosSlot | string | 'rounded-[2rem] overflow-hidden w-[272px] h-[572px] bg-white dark:bg-gray-800' |
| iosTop | string | 'w-[148px] h-[18px] bg-gray-800 top-0 rounded-b-[1rem] left-1/2 -translate-x-1/2 absolute' |
| iosLeftTop | string | 'h-[46px] w-[3px] bg-gray-800 absolute -left-[17px] top-[124px] rounded-l-lg' |
| iosLeftBot | string | 'h-[46px] w-[3px] bg-gray-800 absolute -left-[17px] top-[178px] rounded-l-lg' |
| iosRight | string | 'h-[64px] w-[3px] bg-gray-800 absolute -right-[17px] top-[142px] rounded-r-lg' |
| laptopDiv | string | 'relative mx-auto border-gray-800 dark:border-gray-800 bg-gray-800 border-[8px] rounded-t-xl h-[172px] max-w-[301px] md:h-[294px] md:max-w-[512px]' |
| laptopSlot | string | 'rounded-lg overflow-hidden h-[156px] md:h-[278px] bg-white dark:bg-gray-800' |
| laptopInner | string | 'rounded-lg overflow-hidden h-[156px] md:h-[278px] bg-white dark:bg-gray-800' |
| laptopBot | string | 'relative mx-auto bg-gray-900 dark:bg-gray-700 rounded-b-xl rounded-t-sm h-[17px] max-w-[351px] md:h-[21px] md:max-w-[597px]' |
| laptopBotCen | string | 'absolute left-1/2 top-0 -translate-x-1/2 rounded-b-xl w-[56px] h-[5px] md:w-[96px] md:h-[8px] bg-gray-800' |
| smartwatchDiv | string | 'relative mx-auto bg-gray-800 dark:bg-gray-700 rounded-t-[2.5rem] h-[63px] max-w-[133px]' |
| smartwatchSlot | string | 'rounded-[2rem] overflow-hidden h-[193px] w-[188px]' |
| smartRightTop | string | 'h-[41px] w-[6px] bg-gray-800 dark:bg-gray-800 absolute -right-[16px] top-[40px] rounded-r-lg' |
| smartRightBot | string | 'h-[32px] w-[6px] bg-gray-800 dark:bg-gray-800 absolute -right-[16px] top-[88px] rounded-r-lg' |
| smartTop | string | 'relative mx-auto border-gray-900 dark:bg-gray-800 dark:border-gray-800 border-[10px] rounded-[2.5rem] h-[213px] w-[208px]' |
| smartBot | string | 'relative mx-auto bg-gray-800 dark:bg-gray-700 rounded-b-[2.5rem] h-[63px] max-w-[133px]' |
| smartwatchInner | string | 'rounded-[2rem] overflow-hidden h-[193px] w-[188px]' |
| tabletDiv | string | 'relative mx-auto border-gray-800 dark:border-gray-800 bg-gray-800 border-[14px] rounded-[2.5rem] h-[454px] max-w-[341px] md:h-[682px] md:max-w-[512px]' |
| tabletSlot | string | 'rounded-[2rem] overflow-hidden h-[426px] md:h-[654px] bg-white dark:bg-gray-800' |
| tabletLeftTop | string | 'h-[32px] w-[3px] bg-gray-800 dark:bg-gray-800 absolute -left-[17px] top-[72px] rounded-l-lg' |
| tabletLeftMid | string | 'h-[46px] w-[3px] bg-gray-800 dark:bg-gray-800 absolute -left-[17px] top-[124px] rounded-l-lg' |
| tabletLeftBot | string | 'h-[46px] w-[3px] bg-gray-800 dark:bg-gray-800 absolute -left-[17px] top-[178px] rounded-l-lg' |
| tabletRight | string | 'h-[64px] w-[3px] bg-gray-800 dark:bg-gray-800 absolute -right-[17px] top-[142px] rounded-r-lg' |
DefaultMockup #
- Use the
classDefaultDivprop to overwritedefaultDiv. - Use the
classDefaultSlotprop to overwritedefaultSlot. - Use the
classDefaultTopprop to overwritedefaultTop. - Use the
classDefaultLeftTopprop to overwritedefaultLeftTop. - Use the
classDefaultLeftBotprop to overwritedefaultLeftBot. - Use the
classDefaultRightprop to overwritedefaultRight.
| Name | Type | Default |
|---|---|---|
| defaultTop | string | |
| defaultLeftTop | string | |
| defaultLeftBot | string | |
| defaultRight | string |
Android #
- Use the
classAndroidDivprop to overwriteandroidDiv. - Use the
classAndroidSlotprop to overwriteandroidSlot. - Use the
classAndroidTopprop to overwriteandroidTop. - Use the
classAndroidLeftTopprop to overwriteandroidLeftTop. - Use the
classAndroidLeftMidprop to overwriteandroidLeftMid. - Use the
classAndroidLeftBotprop to overwriteandroidLeftBot. - Use the
classAndroidRightprop to overwriteandroidRight.
| Name | Type | Default |
|---|---|---|
| androidTop | string | |
| androidLeftTop | string | |
| androidLeftMid | string | |
| androidLeftBot | string | |
| androidRight | string |
Desktop #
- Use the
classDesktopInnerprop to overwritedesktopInner. - Use the
classDesktopBotprop to overwritedesktopBot. - Use the
classDesktopBotUnderprop to overwritedesktopBotUnder. - Use the
classDestopDivprop to overwritedestopDiv. - Use the
classDesktopSlotprop to overwritedesktopSlot.
Ios #
- Use the
classIosDivprop to overwriteiosDiv. - Use the
classIosSlotprop to overwriteiosSlot. - Use the
classIosTopprop to overwriteiosTop. - Use the
classIosLeftTopprop to overwriteiosLeftTop. - Use the
classIosLeftBotprop to overwriteiosLeftBot. - Use the
classIosRightprop to overwriteiosRight.
| Name | Type | Default |
|---|---|---|
| iosTop | string | |
| iosLeftTop | string | |
| iosLeftBot | string | |
| iosRight | string |
Laptop #
- Use the
classAndroidDivprop to overwriteandroidDiv. - Use the
classAndroidDivprop to overwriteandroidDiv. - Use the
classAndroidDivprop to overwriteandroidDiv. - Use the
classAndroidDivprop to overwriteandroidDiv. - Use the
classAndroidDivprop to overwriteandroidDiv. - Use the
classAndroidDivprop to overwriteandroidDiv.
Smartwatch #
- Use the
classAndroidDivprop to overwriteandroidDiv. - Use the
classAndroidDivprop to overwriteandroidDiv. - Use the
classAndroidDivprop to overwriteandroidDiv. - Use the
classAndroidDivprop to overwriteandroidDiv. - Use the
classAndroidDivprop to overwriteandroidDiv. - Use the
classAndroidDivprop to overwriteandroidDiv.
| Name | Type | Default |
|---|---|---|
| smartRightTop | string | |
| smartRightBot | string |
Tablet #
- Use the
classAndroidDivprop to overwriteandroidDiv. - Use the
classAndroidDivprop to overwriteandroidDiv. - Use the
classAndroidDivprop to overwriteandroidDiv. - Use the
classAndroidDivprop to overwriteandroidDiv. - Use the
classAndroidDivprop to overwriteandroidDiv. - Use the
classAndroidDivprop to overwriteandroidDiv.
| Name | Type | Default |
|---|---|---|
| tabletLeftTop | string | |
| tabletLeftMid | string | |
| tabletLeftBot | string | |
| tabletRight | string |