[READ-ONLY] Mirror of https://github.com/flo-bit/ui-kit. 🦊 fox ui, svelte 5 and tailwind 4 flo-bit.dev/ui-kit/
svelte tailwindcss ui-components
0

Configure Feed

Select the types of activity you want to include in your feed.

formatting

Florian (Mar 29, 2025, 9:35 AM +0100) 43f8fbb4 eb537560

+154 -154
+1 -1
README.md
··· 75 75 npm run dev 76 76 ``` 77 77 78 - The ui-kit library is located in `src/lib`, the documentation is in `src/docs`. 78 + The ui-kit library is located in `src/lib`, the documentation is in `src/docs`.
+1 -1
src/lib/cli.ts
··· 2 2 3 3 /** 4 4 * TODO: 5 - * 5 + * 6 6 * - add exports to lib/fuchs/index.ts 7 7 * - add dependent components to each component 8 8 * - add option to also add dependent components
+1 -1
src/lib/components.json
··· 28 28 "tooltip": "components/base/tooltip", 29 29 "popover": "components/base/popover", 30 30 "subheading": "components/base/heading" 31 - } 31 + }
-1
src/lib/index.ts
··· 39 39 40 40 export { default as AddCopyCodeButtons } from '$lib/components/base/copy-code-button/AddCopyCodeButtons.svelte'; 41 41 42 - 43 42 // colors components 44 43 export { default as ColorGradientPicker } from '$lib/components/colors/color-gradient-picker/ColorGradientPicker.svelte'; 45 44 export { ColorPicker, PopoverColorPicker } from '$lib/components/colors/color-picker';
+1 -1
src/routes/+layout.svelte
··· 3 3 import Head from '$lib/components/base/head/Head.svelte'; 4 4 import BodyScrollArea from '$lib/components/base/scroll-area/BodyScrollArea.svelte'; 5 5 import { Toaster } from '$lib/components/base/sonner'; 6 - 6 + 7 7 import '../app.css'; 8 8 import '../prism.css'; 9 9
+2 -2
src/routes/+page.svelte
··· 15 15 16 16 <div class="mx-auto flex w-full max-w-6xl flex-col items-start justify-center gap-8 px-8 py-24"> 17 17 <h1 18 - class="text-base-950 dark:text-base-50 mb-4 mt-16 max-w-2xl text-4xl font-bold tracking-tight text-pretty md:text-5xl md:leading-14" 18 + class="text-base-950 dark:text-base-50 mt-16 mb-4 max-w-2xl text-4xl font-bold tracking-tight text-pretty md:text-5xl md:leading-14" 19 19 > 20 20 {count} UI components built with Tailwind 4 and Svelte 5 21 21 </h1> 22 22 23 - <div class="flex gap-2 mb-16"> 23 + <div class="mb-16 flex gap-2"> 24 24 <Button href={base + '/docs/quick-start'} class="mb-8">Quick Start</Button> 25 25 <Button variant="link" href={base + '/docs/philosophy'} class="mb-8" 26 26 >Learn more <span>&rarr;</span></Button
+1 -1
src/docs/preview/VideoPlayerPreview.svelte
··· 4 4 import FullscreenVideoPlayer, { 5 5 videoPlayer 6 6 } from '$lib/components/extra/video-player/FullscreenVideoPlayer.svelte'; 7 - 7 + 8 8 import VideoPlayer from '$lib/components/extra/video-player/VideoPlayer.svelte'; 9 9 </script> 10 10
+2 -1
src/docs/site-components/Cards.svelte
··· 32 32 href={base + `/components/${category.href}/${card.href}`} 33 33 class="focus-visible:outline-accent-500 rounded-xl focus-visible:outline-2 focus-visible:outline-offset-2" 34 34 > 35 - <span class="text-base-900 dark:text-base-50 mx-2 text-sm font-semibold group-hover:text-accent-600 group-hover:dark:text-accent-400 transition-colors duration-150" 35 + <span 36 + class="text-base-900 dark:text-base-50 group-hover:text-accent-600 group-hover:dark:text-accent-400 mx-2 text-sm font-semibold transition-colors duration-150" 36 37 >{card.label}</span 37 38 > 38 39 <span class="absolute inset-0"></span>
+7 -2
src/docs/cards/3d/CardModelPicker.svelte
··· 9 9 </script> 10 10 11 11 <div class="flex h-44 max-h-44 w-full max-w-full items-center justify-center gap-6"> 12 - <Image src={image} alt="Vehicle Monster Truck" class="scale-125" /> 13 - <Image src={image2} alt="Vehicle Racer" class="scale-125" containerClasses="bg-base-200 rounded-xl dark:bg-base-900" /> 12 + <Image src={image} alt="Vehicle Monster Truck" class="scale-125" /> 13 + <Image 14 + src={image2} 15 + alt="Vehicle Racer" 16 + class="scale-125" 17 + containerClasses="bg-base-200 rounded-xl dark:bg-base-900" 18 + /> 14 19 <Image src={image3} alt="Vehicle Racer Low" class="scale-125" /> 15 20 </div>
+1 -1
src/docs/cards/base/CardCard.svelte
··· 1 1 <script> 2 2 import { Image, Paragraph } from '$lib'; 3 - 3 + 4 4 import nature from '$docs/assets/images/nature2.jpg?as=run'; 5 5 </script> 6 6
+10 -10
src/docs/cards/extras/CardSwiperCards.svelte
··· 1 1 <script> 2 - 3 - import { Button } from "$lib"; 4 - 2 + import { Button } from '$lib'; 5 3 </script> 6 4 7 - <div class="flex relative p-8"> 8 - <div class="bg-base-200/50 dark:bg-base-800/50 rounded-xl p-4 h-24 w-16 border border-base-300/50 dark:border-base-700/50"> 9 - </div> 10 - <div class="-ml-8 bg-base-200 dark:bg-base-800 rounded-xl p-4 h-24 w-16 rotate-12 border border-base-300 dark:border-base-700"> 11 - </div> 5 + <div class="relative flex p-8"> 6 + <div 7 + class="bg-base-200/50 dark:bg-base-800/50 border-base-300/50 dark:border-base-700/50 h-24 w-16 rounded-xl border p-4" 8 + ></div> 9 + <div 10 + class="bg-base-200 dark:bg-base-800 border-base-300 dark:border-base-700 -ml-8 h-24 w-16 rotate-12 rounded-xl border p-4" 11 + ></div> 12 12 13 - <div class="absolute bottom-2 flex w-full justify-between px-2 -ml-10"> 13 + <div class="absolute bottom-2 -ml-10 flex w-full justify-between px-2"> 14 14 <Button size="iconSm"> 15 15 <svg 16 16 xmlns="http://www.w3.org/2000/svg" ··· 36 36 </svg> 37 37 </Button> 38 38 </div> 39 - </div> 39 + </div>
+1 -1
src/lib/components/base/number-input/NumberInput.svelte
··· 89 89 90 90 let animated = $state(true); 91 91 let showCaret = $state(true); 92 - 92 + 93 93 function handleInput() { 94 94 if (!inputRef) return; 95 95 animated = false;
+1 -1
src/lib/components/base/popover/index.ts
··· 16 16 Close as PopoverClose 17 17 }; 18 18 19 - export { default as Popover } from './Popover.svelte'; 19 + export { default as Popover } from './Popover.svelte';
+1 -1
src/lib/components/base/prose/Prose.svelte
··· 1 1 <script lang="ts"> 2 2 import { AddCopyCodeButtons } from '$lib'; 3 - 3 + 4 4 let { children } = $props(); 5 5 6 6 // this is fucking hacky, todo fix that
+11 -11
src/routes/(main)/components/base/alert/Example.svelte
··· 36 36 37 37 <h3>Preset Alerts</h3> 38 38 39 - <div class="grid grid-cols-1 md:grid-cols-2 gap-2"> 39 + <div class="grid grid-cols-1 gap-2 md:grid-cols-2"> 40 40 <Alert title="Warning alert" type="warning"> 41 41 <span>Alert Description</span> 42 42 </Alert> 43 43 44 - <Alert title="Error alert" type="error"> 45 - <span>Alert Description</span> 46 - </Alert> 44 + <Alert title="Error alert" type="error"> 45 + <span>Alert Description</span> 46 + </Alert> 47 47 48 - <Alert title="Success alert" type="success"> 49 - <span>Alert Description</span> 50 - </Alert> 48 + <Alert title="Success alert" type="success"> 49 + <span>Alert Description</span> 50 + </Alert> 51 51 52 - <Alert title="Info alert" type="info"> 53 - <span>Alert Description</span> 54 - </Alert> 55 - </div> 52 + <Alert title="Info alert" type="info"> 53 + <span>Alert Description</span> 54 + </Alert> 55 + </div>
+1 -1
src/routes/(main)/components/base/avatar/Example.svelte
··· 4 4 5 5 <h3>Single Avatar</h3> 6 6 7 - <div class="flex items-center gap-2 not-prose"> 7 + <div class="not-prose flex items-center gap-2"> 8 8 <Avatar fallback="AB" /> 9 9 <Avatar /> 10 10 <Avatar src="https://github.com/flo-bit.png" alt="flo-bit" fallback="FB" />
+53 -55
src/routes/(main)/components/base/button/Example.svelte
··· 19 19 </svg>small</Button 20 20 > 21 21 22 - <Button 23 - ><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"> 24 - <path 25 - d="M11.7 2.805a.75.75 0 0 1 .6 0A60.65 60.65 0 0 1 22.83 8.72a.75.75 0 0 1-.231 1.337 49.948 49.948 0 0 0-9.902 3.912l-.003.002c-.114.06-.227.119-.34.18a.75.75 0 0 1-.707 0A50.88 50.88 0 0 0 7.5 12.173v-.224c0-.131.067-.248.172-.311a54.615 54.615 0 0 1 4.653-2.52.75.75 0 0 0-.65-1.352 56.123 56.123 0 0 0-4.78 2.589 1.858 1.858 0 0 0-.859 1.228 49.803 49.803 0 0 0-4.634-1.527.75.75 0 0 1-.231-1.337A60.653 60.653 0 0 1 11.7 2.805Z" 26 - /> 27 - <path 28 - d="M13.06 15.473a48.45 48.45 0 0 1 7.666-3.282c.134 1.414.22 2.843.255 4.284a.75.75 0 0 1-.46.711 47.87 47.87 0 0 0-8.105 4.342.75.75 0 0 1-.832 0 47.87 47.87 0 0 0-8.104-4.342.75.75 0 0 1-.461-.71c.035-1.442.121-2.87.255-4.286.921.304 1.83.634 2.726.99v1.27a1.5 1.5 0 0 0-.14 2.508c-.09.38-.222.753-.397 1.11.452.213.901.434 1.346.66a6.727 6.727 0 0 0 .551-1.607 1.5 1.5 0 0 0 .14-2.67v-.645a48.549 48.549 0 0 1 3.44 1.667 2.25 2.25 0 0 0 2.12 0Z" 29 - /> 30 - <path 31 - d="M4.462 19.462c.42-.419.753-.89 1-1.395.453.214.902.435 1.347.662a6.742 6.742 0 0 1-1.286 1.794.75.75 0 0 1-1.06-1.06Z" 32 - /> 33 - </svg>normal</Button 34 - > 22 + <Button 23 + ><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"> 24 + <path 25 + d="M11.7 2.805a.75.75 0 0 1 .6 0A60.65 60.65 0 0 1 22.83 8.72a.75.75 0 0 1-.231 1.337 49.948 49.948 0 0 0-9.902 3.912l-.003.002c-.114.06-.227.119-.34.18a.75.75 0 0 1-.707 0A50.88 50.88 0 0 0 7.5 12.173v-.224c0-.131.067-.248.172-.311a54.615 54.615 0 0 1 4.653-2.52.75.75 0 0 0-.65-1.352 56.123 56.123 0 0 0-4.78 2.589 1.858 1.858 0 0 0-.859 1.228 49.803 49.803 0 0 0-4.634-1.527.75.75 0 0 1-.231-1.337A60.653 60.653 0 0 1 11.7 2.805Z" 26 + /> 27 + <path 28 + d="M13.06 15.473a48.45 48.45 0 0 1 7.666-3.282c.134 1.414.22 2.843.255 4.284a.75.75 0 0 1-.46.711 47.87 47.87 0 0 0-8.105 4.342.75.75 0 0 1-.832 0 47.87 47.87 0 0 0-8.104-4.342.75.75 0 0 1-.461-.71c.035-1.442.121-2.87.255-4.286.921.304 1.83.634 2.726.99v1.27a1.5 1.5 0 0 0-.14 2.508c-.09.38-.222.753-.397 1.11.452.213.901.434 1.346.66a6.727 6.727 0 0 0 .551-1.607 1.5 1.5 0 0 0 .14-2.67v-.645a48.549 48.549 0 0 1 3.44 1.667 2.25 2.25 0 0 0 2.12 0Z" 29 + /> 30 + <path 31 + d="M4.462 19.462c.42-.419.753-.89 1-1.395.453.214.902.435 1.347.662a6.742 6.742 0 0 1-1.286 1.794.75.75 0 0 1-1.06-1.06Z" 32 + /> 33 + </svg>normal</Button 34 + > 35 35 36 - <Button size="lg" 37 - ><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"> 38 - <path 39 - d="M11.7 2.805a.75.75 0 0 1 .6 0A60.65 60.65 0 0 1 22.83 8.72a.75.75 0 0 1-.231 1.337 49.948 49.948 0 0 0-9.902 3.912l-.003.002c-.114.06-.227.119-.34.18a.75.75 0 0 1-.707 0A50.88 50.88 0 0 0 7.5 12.173v-.224c0-.131.067-.248.172-.311a54.615 54.615 0 0 1 4.653-2.52.75.75 0 0 0-.65-1.352 56.123 56.123 0 0 0-4.78 2.589 1.858 1.858 0 0 0-.859 1.228 49.803 49.803 0 0 0-4.634-1.527.75.75 0 0 1-.231-1.337A60.653 60.653 0 0 1 11.7 2.805Z" 40 - /> 41 - <path 42 - d="M13.06 15.473a48.45 48.45 0 0 1 7.666-3.282c.134 1.414.22 2.843.255 4.284a.75.75 0 0 1-.46.711 47.87 47.87 0 0 0-8.105 4.342.75.75 0 0 1-.832 0 47.87 47.87 0 0 0-8.104-4.342.75.75 0 0 1-.461-.71c.035-1.442.121-2.87.255-4.286.921.304 1.83.634 2.726.99v1.27a1.5 1.5 0 0 0-.14 2.508c-.09.38-.222.753-.397 1.11.452.213.901.434 1.346.66a6.727 6.727 0 0 0 .551-1.607 1.5 1.5 0 0 0 .14-2.67v-.645a48.549 48.549 0 0 1 3.44 1.667 2.25 2.25 0 0 0 2.12 0Z" 43 - /> 44 - <path 45 - d="M4.462 19.462c.42-.419.753-.89 1-1.395.453.214.902.435 1.347.662a6.742 6.742 0 0 1-1.286 1.794.75.75 0 0 1-1.06-1.06Z" 46 - /> 47 - </svg>large</Button 48 - > 49 - 36 + <Button size="lg" 37 + ><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"> 38 + <path 39 + d="M11.7 2.805a.75.75 0 0 1 .6 0A60.65 60.65 0 0 1 22.83 8.72a.75.75 0 0 1-.231 1.337 49.948 49.948 0 0 0-9.902 3.912l-.003.002c-.114.06-.227.119-.34.18a.75.75 0 0 1-.707 0A50.88 50.88 0 0 0 7.5 12.173v-.224c0-.131.067-.248.172-.311a54.615 54.615 0 0 1 4.653-2.52.75.75 0 0 0-.65-1.352 56.123 56.123 0 0 0-4.78 2.589 1.858 1.858 0 0 0-.859 1.228 49.803 49.803 0 0 0-4.634-1.527.75.75 0 0 1-.231-1.337A60.653 60.653 0 0 1 11.7 2.805Z" 40 + /> 41 + <path 42 + d="M13.06 15.473a48.45 48.45 0 0 1 7.666-3.282c.134 1.414.22 2.843.255 4.284a.75.75 0 0 1-.46.711 47.87 47.87 0 0 0-8.105 4.342.75.75 0 0 1-.832 0 47.87 47.87 0 0 0-8.104-4.342.75.75 0 0 1-.461-.71c.035-1.442.121-2.87.255-4.286.921.304 1.83.634 2.726.99v1.27a1.5 1.5 0 0 0-.14 2.508c-.09.38-.222.753-.397 1.11.452.213.901.434 1.346.66a6.727 6.727 0 0 0 .551-1.607 1.5 1.5 0 0 0 .14-2.67v-.645a48.549 48.549 0 0 1 3.44 1.667 2.25 2.25 0 0 0 2.12 0Z" 43 + /> 44 + <path 45 + d="M4.462 19.462c.42-.419.753-.89 1-1.395.453.214.902.435 1.347.662a6.742 6.742 0 0 1-1.286 1.794.75.75 0 0 1-1.06-1.06Z" 46 + /> 47 + </svg>large</Button 48 + > 50 49 </div> 51 50 52 51 <h3>Secondary</h3> ··· 118 117 </svg></Button 119 118 > 120 119 121 - <Button size="icon" 122 - ><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"> 123 - <path 124 - d="M11.7 2.805a.75.75 0 0 1 .6 0A60.65 60.65 0 0 1 22.83 8.72a.75.75 0 0 1-.231 1.337 49.948 49.948 0 0 0-9.902 3.912l-.003.002c-.114.06-.227.119-.34.18a.75.75 0 0 1-.707 0A50.88 50.88 0 0 0 7.5 12.173v-.224c0-.131.067-.248.172-.311a54.615 54.615 0 0 1 4.653-2.52.75.75 0 0 0-.65-1.352 56.123 56.123 0 0 0-4.78 2.589 1.858 1.858 0 0 0-.859 1.228 49.803 49.803 0 0 0-4.634-1.527.75.75 0 0 1-.231-1.337A60.653 60.653 0 0 1 11.7 2.805Z" 125 - /> 126 - <path 127 - d="M13.06 15.473a48.45 48.45 0 0 1 7.666-3.282c.134 1.414.22 2.843.255 4.284a.75.75 0 0 1-.46.711 47.87 47.87 0 0 0-8.105 4.342.75.75 0 0 1-.832 0 47.87 47.87 0 0 0-8.104-4.342.75.75 0 0 1-.461-.71c.035-1.442.121-2.87.255-4.286.921.304 1.83.634 2.726.99v1.27a1.5 1.5 0 0 0-.14 2.508c-.09.38-.222.753-.397 1.11.452.213.901.434 1.346.66a6.727 6.727 0 0 0 .551-1.607 1.5 1.5 0 0 0 .14-2.67v-.645a48.549 48.549 0 0 1 3.44 1.667 2.25 2.25 0 0 0 2.12 0Z" 128 - /> 129 - <path 130 - d="M4.462 19.462c.42-.419.753-.89 1-1.395.453.214.902.435 1.347.662a6.742 6.742 0 0 1-1.286 1.794.75.75 0 0 1-1.06-1.06Z" 131 - /> 132 - </svg></Button 133 - > 120 + <Button size="icon" 121 + ><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"> 122 + <path 123 + d="M11.7 2.805a.75.75 0 0 1 .6 0A60.65 60.65 0 0 1 22.83 8.72a.75.75 0 0 1-.231 1.337 49.948 49.948 0 0 0-9.902 3.912l-.003.002c-.114.06-.227.119-.34.18a.75.75 0 0 1-.707 0A50.88 50.88 0 0 0 7.5 12.173v-.224c0-.131.067-.248.172-.311a54.615 54.615 0 0 1 4.653-2.52.75.75 0 0 0-.65-1.352 56.123 56.123 0 0 0-4.78 2.589 1.858 1.858 0 0 0-.859 1.228 49.803 49.803 0 0 0-4.634-1.527.75.75 0 0 1-.231-1.337A60.653 60.653 0 0 1 11.7 2.805Z" 124 + /> 125 + <path 126 + d="M13.06 15.473a48.45 48.45 0 0 1 7.666-3.282c.134 1.414.22 2.843.255 4.284a.75.75 0 0 1-.46.711 47.87 47.87 0 0 0-8.105 4.342.75.75 0 0 1-.832 0 47.87 47.87 0 0 0-8.104-4.342.75.75 0 0 1-.461-.71c.035-1.442.121-2.87.255-4.286.921.304 1.83.634 2.726.99v1.27a1.5 1.5 0 0 0-.14 2.508c-.09.38-.222.753-.397 1.11.452.213.901.434 1.346.66a6.727 6.727 0 0 0 .551-1.607 1.5 1.5 0 0 0 .14-2.67v-.645a48.549 48.549 0 0 1 3.44 1.667 2.25 2.25 0 0 0 2.12 0Z" 127 + /> 128 + <path 129 + d="M4.462 19.462c.42-.419.753-.89 1-1.395.453.214.902.435 1.347.662a6.742 6.742 0 0 1-1.286 1.794.75.75 0 0 1-1.06-1.06Z" 130 + /> 131 + </svg></Button 132 + > 134 133 135 - <Button size="iconLg" 136 - ><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"> 137 - <path 138 - d="M11.7 2.805a.75.75 0 0 1 .6 0A60.65 60.65 0 0 1 22.83 8.72a.75.75 0 0 1-.231 1.337 49.948 49.948 0 0 0-9.902 3.912l-.003.002c-.114.06-.227.119-.34.18a.75.75 0 0 1-.707 0A50.88 50.88 0 0 0 7.5 12.173v-.224c0-.131.067-.248.172-.311a54.615 54.615 0 0 1 4.653-2.52.75.75 0 0 0-.65-1.352 56.123 56.123 0 0 0-4.78 2.589 1.858 1.858 0 0 0-.859 1.228 49.803 49.803 0 0 0-4.634-1.527.75.75 0 0 1-.231-1.337A60.653 60.653 0 0 1 11.7 2.805Z" 139 - /> 140 - <path 141 - d="M13.06 15.473a48.45 48.45 0 0 1 7.666-3.282c.134 1.414.22 2.843.255 4.284a.75.75 0 0 1-.46.711 47.87 47.87 0 0 0-8.105 4.342.75.75 0 0 1-.832 0 47.87 47.87 0 0 0-8.104-4.342.75.75 0 0 1-.461-.71c.035-1.442.121-2.87.255-4.286.921.304 1.83.634 2.726.99v1.27a1.5 1.5 0 0 0-.14 2.508c-.09.38-.222.753-.397 1.11.452.213.901.434 1.346.66a6.727 6.727 0 0 0 .551-1.607 1.5 1.5 0 0 0 .14-2.67v-.645a48.549 48.549 0 0 1 3.44 1.667 2.25 2.25 0 0 0 2.12 0Z" 142 - /> 143 - <path 144 - d="M4.462 19.462c.42-.419.753-.89 1-1.395.453.214.902.435 1.347.662a6.742 6.742 0 0 1-1.286 1.794.75.75 0 0 1-1.06-1.06Z" 145 - /> 146 - </svg></Button 147 - > 148 - 134 + <Button size="iconLg" 135 + ><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"> 136 + <path 137 + d="M11.7 2.805a.75.75 0 0 1 .6 0A60.65 60.65 0 0 1 22.83 8.72a.75.75 0 0 1-.231 1.337 49.948 49.948 0 0 0-9.902 3.912l-.003.002c-.114.06-.227.119-.34.18a.75.75 0 0 1-.707 0A50.88 50.88 0 0 0 7.5 12.173v-.224c0-.131.067-.248.172-.311a54.615 54.615 0 0 1 4.653-2.52.75.75 0 0 0-.65-1.352 56.123 56.123 0 0 0-4.78 2.589 1.858 1.858 0 0 0-.859 1.228 49.803 49.803 0 0 0-4.634-1.527.75.75 0 0 1-.231-1.337A60.653 60.653 0 0 1 11.7 2.805Z" 138 + /> 139 + <path 140 + d="M13.06 15.473a48.45 48.45 0 0 1 7.666-3.282c.134 1.414.22 2.843.255 4.284a.75.75 0 0 1-.46.711 47.87 47.87 0 0 0-8.105 4.342.75.75 0 0 1-.832 0 47.87 47.87 0 0 0-8.104-4.342.75.75 0 0 1-.461-.71c.035-1.442.121-2.87.255-4.286.921.304 1.83.634 2.726.99v1.27a1.5 1.5 0 0 0-.14 2.508c-.09.38-.222.753-.397 1.11.452.213.901.434 1.346.66a6.727 6.727 0 0 0 .551-1.607 1.5 1.5 0 0 0 .14-2.67v-.645a48.549 48.549 0 0 1 3.44 1.667 2.25 2.25 0 0 0 2.12 0Z" 141 + /> 142 + <path 143 + d="M4.462 19.462c.42-.419.753-.89 1-1.395.453.214.902.435 1.347.662a6.742 6.742 0 0 1-1.286 1.794.75.75 0 0 1-1.06-1.06Z" 144 + /> 145 + </svg></Button 146 + > 149 147 </div> 150 148 151 149 <h3>Colors</h3> ··· 168 166 <Button variant="teal">Teal</Button> 169 167 <Button variant="cyan">Cyan</Button> 170 168 <Button variant="sky">Sky</Button> 171 - </div> 169 + </div>
+1 -1
src/routes/(main)/components/base/cards/Example.svelte
··· 20 20 21 21 <h3>In a grid</h3> 22 22 23 - <div class="grid w-full grid-cols-1 gap-6 sm:grid-cols-2 md:grid-cols-3 not-prose"> 23 + <div class="not-prose grid w-full grid-cols-1 gap-6 sm:grid-cols-2 md:grid-cols-3"> 24 24 <ImageCard 25 25 src={nature1} 26 26 alt="Nature 1"
+17 -18
src/routes/(main)/components/base/chat-bubble/Example.svelte
··· 4 4 import cute from '$docs/assets/images/cute.jpg?as=run'; 5 5 </script> 6 6 7 - 8 - <Box class="flex flex-col gap-3 not-prose"> 7 + <Box class="not-prose flex flex-col gap-3"> 9 8 <ChatBubble side="right"> 10 9 <p>Hello there</p> 11 10 </ChatBubble> 12 11 13 - <ChatBubble> 14 - <p>General Kenobi</p> 15 - </ChatBubble> 12 + <ChatBubble> 13 + <p>General Kenobi</p> 14 + </ChatBubble> 16 15 17 - <ChatBubble side="right"> 18 - <p>This is a really long message that should wrap around the chat bubble and not overflow</p> 19 - </ChatBubble> 20 - <ChatBubble> 21 - <p> 22 - This is another really long message that should wrap around the chat bubble and not overflow 23 - </p> 24 - </ChatBubble> 16 + <ChatBubble side="right"> 17 + <p>This is a really long message that should wrap around the chat bubble and not overflow</p> 18 + </ChatBubble> 19 + <ChatBubble> 20 + <p> 21 + This is another really long message that should wrap around the chat bubble and not overflow 22 + </p> 23 + </ChatBubble> 25 24 26 - <ChatBubble side="right"> 27 - <p>This is me sending you an image</p> 25 + <ChatBubble side="right"> 26 + <p>This is me sending you an image</p> 28 27 29 - <ImageContainer src={cute} alt="cute cat" containerClasses="-mx-1.5 rounded-xl" /> 30 - </ChatBubble> 31 - </Box> 28 + <ImageContainer src={cute} alt="cute cat" containerClasses="-mx-1.5 rounded-xl" /> 29 + </ChatBubble> 30 + </Box>
+1 -1
src/routes/(main)/components/base/checkbox/Example.svelte
··· 20 20 21 21 <h3>With Label</h3> 22 22 23 - <div class="flex items-center space-x-2 not-prose"> 23 + <div class="not-prose flex items-center space-x-2"> 24 24 <Checkbox id="terms" aria-labelledby="terms-label" variant="secondary" /> 25 25 <Label 26 26 id="terms-label"
+6 -2
src/routes/(main)/components/base/image/Example.svelte
··· 5 5 import cute2 from '$docs/assets/images/cute2.jpg?as=run'; 6 6 </script> 7 7 8 - 9 8 <ImageContainer src={cute} alt="Such a cute animal" containerClasses="not-prose max-w-64" /> 10 9 11 10 <h3>Overlay theme color</h3> 12 11 13 - <ImageContainer src={cute2} alt="Another cute animal" useThemeColor={true} containerClasses="max-w-44 not-prose" /> 12 + <ImageContainer 13 + src={cute2} 14 + alt="Another cute animal" 15 + useThemeColor={true} 16 + containerClasses="max-w-44 not-prose" 17 + /> 14 18 15 19 <h3>Show normal image on hover</h3> 16 20
+3 -3
src/routes/(main)/components/base/input/Example.svelte
··· 4 4 5 5 <h3>Primary</h3> 6 6 7 - <div class="flex flex-col gap-4 w-fit"> 7 + <div class="flex w-fit flex-col gap-4"> 8 8 <Input sizeVariant="sm" placeholder="Enter text here (small)" /> 9 9 <Input placeholder="Enter text here (default)" /> 10 10 <Input sizeVariant="lg" placeholder="Enter text here (large)" /> ··· 12 12 13 13 <h3>Secondary</h3> 14 14 15 - <div class="flex flex-col gap-4 w-fit"> 15 + <div class="flex w-fit flex-col gap-4"> 16 16 <Input variant="secondary" sizeVariant="sm" placeholder="Enter text here (small)" /> 17 17 <Input variant="secondary" placeholder="Enter text here (default)" /> 18 18 <Input variant="secondary" sizeVariant="lg" placeholder="Enter text here (large)" /> 19 - </div> 19 + </div>
+1 -1
src/routes/(main)/components/base/slider/Example.svelte
··· 7 7 let value2 = $state(42); 8 8 </script> 9 9 10 - <Slider bind:value={value} type="single" /> 10 + <Slider bind:value type="single" /> 11 11 12 12 <h3>With Number</h3> 13 13 <SliderNumber bind:value={value2} type="single" />
+23 -24
src/routes/(main)/components/base/sonner/Example.svelte
··· 2 2 import { Button, toast } from '$lib'; 3 3 </script> 4 4 5 - <div class="flex flex-wrap gap-4 not-prose"> 5 + <div class="not-prose flex flex-wrap gap-4"> 6 6 <Button 7 7 onclick={() => 8 8 toast('Hello there', { ··· 10 10 })}>Default</Button 11 11 > 12 12 13 - <Button 14 - variant="green" 15 - onclick={() => 16 - toast.success('Success!', { 17 - description: "You are strong and wise and I'm very proud of you!" 18 - })}>Success</Button 19 - > 20 - <Button 21 - variant="red" 22 - onclick={() => 23 - toast.error('Error!', { 24 - description: 'These are not the droids you are looking for.' 25 - })}>Error</Button 26 - > 27 - <Button 28 - variant="blue" 29 - onclick={() => 30 - toast.info('Info!', { 31 - description: 'I heard spinning is a good trick.' 32 - })}>Info</Button 33 - > 34 - 35 - </div> 13 + <Button 14 + variant="green" 15 + onclick={() => 16 + toast.success('Success!', { 17 + description: "You are strong and wise and I'm very proud of you!" 18 + })}>Success</Button 19 + > 20 + <Button 21 + variant="red" 22 + onclick={() => 23 + toast.error('Error!', { 24 + description: 'These are not the droids you are looking for.' 25 + })}>Error</Button 26 + > 27 + <Button 28 + variant="blue" 29 + onclick={() => 30 + toast.info('Info!', { 31 + description: 'I heard spinning is a good trick.' 32 + })}>Info</Button 33 + > 34 + </div>
+2 -2
src/routes/(main)/components/base/switch/Example.svelte
··· 5 5 let checked2 = $state(true); 6 6 </script> 7 7 8 - <div class="flex flex-col gap-2 not-prose"> 8 + <div class="not-prose flex flex-col gap-2"> 9 9 <Switch bind:checked onCheckedChange={() => (checked2 = !checked2)} /> 10 10 <Switch bind:checked={checked2} onCheckedChange={() => (checked = !checked)} /> 11 11 <Switch disabled /> ··· 13 13 14 14 <h3>With Label</h3> 15 15 16 - <div class="flex items-center space-x-2 not-prose"> 16 + <div class="not-prose flex items-center space-x-2"> 17 17 <Switch id="terms-switch" aria-labelledby="terms-switch-label" /> 18 18 <Label 19 19 id="terms-switch-label"
+2 -3
src/routes/(main)/components/base/tooltip/Example.svelte
··· 2 2 import { Tooltip, Button, toast } from '$lib'; 3 3 4 4 function handleClick() { 5 - toast.error('Don\'t click, just hover!') 5 + toast.error("Don't click, just hover!"); 6 6 } 7 7 </script> 8 - 9 8 10 9 <div class="flex w-full flex-col items-start gap-2 py-12"> 11 10 <Tooltip text="Hello there!" withContext> ··· 13 12 <Button {...props} onclick={handleClick}>Hover me</Button> 14 13 {/snippet} 15 14 </Tooltip> 16 - </div> 15 + </div>
+1 -1
src/routes/(main)/components/colors/color-gradient-picker/Example.svelte
··· 39 39 } 40 40 </script> 41 41 42 - <ColorGradientPicker class="mt-8 not-prose" bind:colors /> 42 + <ColorGradientPicker class="not-prose mt-8" bind:colors />
+1 -1
src/routes/(main)/components/extras/swiper-cards/Example.svelte
··· 28 28 let swipe: (direction: 'left' | 'right') => void; 29 29 </script> 30 30 31 - <div class="relative h-[70vh] w-full not-prose"> 31 + <div class="not-prose relative h-[70vh] w-full"> 32 32 <CardSwiper 33 33 cardData={(i) => ({ 34 34 title: `Card ${i}`,
+1 -5
src/routes/(main)/components/extras/swiper-cards/SwiperCards.md
··· 14 14 <script lang="ts"> 15 15 import { CardSwiper } from 'fuchs'; 16 16 17 - const profiles = [ 18 - 'image1.webp', 19 - 'image2.webp', 20 - 'image3.webp', 21 - ]; 17 + const profiles = ['image1.webp', 'image2.webp', 'image3.webp']; 22 18 </script> 23 19 24 20 <div class="h-[70vh] w-full">