···11import Docs from './Documentation.md';
22import Example from './Example.svelte';
33import Card from './Card.svelte';
44+import api from './api';
4556export default {
67 slug: 'color-gradient-picker',
···89 docs: Docs,
910 example: Example,
1011 card: Card,
1212+ api,
1113};
+84
apps/docs/src/lib/docs/colors/color-picker/api.ts
···11+import type { APISchema } from '$lib/types/schema';
22+33+export default [
44+ {
55+ title: 'ColorPicker',
66+ description: 'A full color picker with a saturation/value area, hue slider, and optional quick-select swatches. Supports RGB, OKLab, and OKHsv color spaces.',
77+ props: {
88+ rgb: {
99+ type: { type: 'object', definition: '{ r: number; g: number; b: number }' },
1010+ description: 'The current color in RGB format (0-255).',
1111+ bindable: true
1212+ },
1313+ oklab: {
1414+ type: { type: 'object', definition: '{ l: number; a: number; b: number }' },
1515+ description: 'The current color in OKLab format.',
1616+ bindable: true
1717+ },
1818+ okhsv: {
1919+ type: { type: 'object', definition: '{ h: number; s: number; v: number }' },
2020+ description: 'The current color in OKHsv format.',
2121+ bindable: true
2222+ },
2323+ onchange: {
2424+ type: { type: 'function', definition: '(color: { hex: string; rgb: RGB; oklab: OKlab; okhsv: OKhsv; oklch: OKlch }) => void' },
2525+ description: 'Callback invoked when the color changes. Provides the color in all supported formats.'
2626+ },
2727+ quickSelects: {
2828+ type: { type: 'array', definition: '{ label: string; rgb?: RGB; oklab?: OKlab; okhsv?: OKhsv }[]' },
2929+ description: 'Quick-select color swatches displayed below the picker.',
3030+ default: '[]',
3131+ bindable: true
3232+ },
3333+ class: {
3434+ type: 'string',
3535+ description: 'Additional CSS classes to apply.'
3636+ }
3737+ }
3838+ },
3939+ {
4040+ title: 'PopoverColorPicker',
4141+ description: 'A color picker wrapped in a popover, triggered by a color swatch button.',
4242+ props: {
4343+ rgb: {
4444+ type: { type: 'object', definition: '{ r: number; g: number; b: number }' },
4545+ description: 'The current color in RGB format (0-255).',
4646+ bindable: true
4747+ },
4848+ oklab: {
4949+ type: { type: 'object', definition: '{ l: number; a: number; b: number }' },
5050+ description: 'The current color in OKLab format.',
5151+ bindable: true
5252+ },
5353+ okhsv: {
5454+ type: { type: 'object', definition: '{ h: number; s: number; v: number }' },
5555+ description: 'The current color in OKHsv format.',
5656+ bindable: true
5757+ },
5858+ onchange: {
5959+ type: { type: 'function', definition: '(color: { hex: string; rgb: RGB; oklab: OKlab; okhsv: OKhsv; oklch: OKlch }) => void' },
6060+ description: 'Callback invoked when the color changes.'
6161+ },
6262+ quickSelects: {
6363+ type: { type: 'array', definition: '{ label: string; rgb?: RGB; oklab?: OKlab; okhsv?: OKhsv }[]' },
6464+ description: 'Quick-select color swatches.',
6565+ default: '[]',
6666+ bindable: true
6767+ },
6868+ side: {
6969+ type: { type: 'enum', definition: "'top' | 'right' | 'bottom' | 'left'" },
7070+ description: 'The preferred side of the trigger to render the popover.',
7171+ default: "'bottom'"
7272+ },
7373+ sideOffset: {
7474+ type: 'number',
7575+ description: 'The distance in pixels from the trigger.',
7676+ default: '10'
7777+ },
7878+ class: {
7979+ type: 'string',
8080+ description: 'Additional CSS classes to apply.'
8181+ }
8282+ }
8383+ }
8484+] satisfies APISchema[];
···11import Docs from './Documentation.md';
22import Example from './Example.svelte';
33import Card from './Card.svelte';
44+import api from './api';
4556export default {
67 slug: 'color-picker',
···89 docs: Docs,
910 example: Example,
1011 card: Card,
1212+ api,
1113};
+43
apps/docs/src/lib/docs/colors/color-select/api.ts
···11+import type { APISchema } from '$lib/types/schema';
22+33+export default [
44+ {
55+ title: 'ColorSelect',
66+ description: 'A group of color swatches that allows selecting a single color.',
77+ props: {
88+ colors: {
99+ type: { type: 'array', definition: "(string | { class?: string; label: string; value?: string })[]" },
1010+ description: 'The list of selectable colors. Can be simple strings or objects with custom class, label, and value.',
1111+ required: true,
1212+ bindable: true
1313+ },
1414+ selected: {
1515+ type: { type: 'union', definition: "string | { class?: string; label: string; value?: string }" },
1616+ description: 'The currently selected color. Defaults to the first color.',
1717+ bindable: true
1818+ },
1919+ name: {
2020+ type: 'string',
2121+ description: 'The name attribute for the underlying radio inputs (auto-generated if not provided).',
2222+ bindable: true
2323+ },
2424+ onselected: {
2525+ type: { type: 'function', definition: '(color: Color, previous: Color) => void' },
2626+ description: 'Callback invoked when the selected color changes.'
2727+ },
2828+ colorsClass: {
2929+ type: 'string',
3030+ description: 'Additional CSS classes for the color swatches container.'
3131+ },
3232+ class: {
3333+ type: 'string',
3434+ description: 'Additional CSS classes to apply to the root element.'
3535+ },
3636+ ref: {
3737+ type: 'HTMLDivElement',
3838+ description: 'The underlying DOM element.',
3939+ bindable: true
4040+ }
4141+ }
4242+ }
4343+] satisfies APISchema[];
···11import Docs from './Documentation.md';
22import Example from './Example.svelte';
33import Card from './Card.svelte';
44+import api from './api';
4556export default {
67 slug: 'color-select',
···89 docs: Docs,
910 example: Example,
1011 card: Card,
1212+ api,
1113};
···11import Docs from './Documentation.md';
22import Example from './Example.svelte';
33import Card from './Card.svelte';
44+import api from './api';
4556export default {
67 slug: 'atproto-login',
···89 docs: Docs,
910 example: Example,
1011 card: Card,
1212+ api,
1113};
+63
apps/docs/src/lib/docs/social/card-swiper/api.ts
···11+import type { APISchema } from '$lib/types/schema';
22+33+export default [
44+ {
55+ title: 'CardSwiper',
66+ description: 'A Tinder-style swipeable card stack with touch and keyboard support.',
77+ props: {
88+ cardData: {
99+ type: { type: 'function', definition: '(index: number) => CardData' },
1010+ description: 'A function that returns card data for a given index. CardData: { title?: string; description?: string; image?: string; [key: string]: unknown }.',
1111+ required: true
1212+ },
1313+ card: {
1414+ type: 'Snippet<[CardData]>',
1515+ description: 'A custom snippet for rendering each card. Receives the card data as a parameter. Uses a default card template if not provided.'
1616+ },
1717+ onswipe: {
1818+ type: { type: 'function', definition: "(event: { direction: 'left' | 'right'; data: CardData; index: number; element: HTMLElement }) => void" },
1919+ description: 'Callback invoked when a card is swiped away.'
2020+ },
2121+ swipe: {
2222+ type: { type: 'function', definition: "(direction: 'left' | 'right') => void" },
2323+ description: 'A function to programmatically trigger a swipe. Bind to this to control swiping from outside.',
2424+ bindable: true
2525+ },
2626+ minSwipeDistance: {
2727+ type: 'number',
2828+ description: 'Minimum swipe distance (as a fraction of card width) to trigger a swipe.',
2929+ default: '0.5'
3030+ },
3131+ minSwipeVelocity: {
3232+ type: 'number',
3333+ description: 'Minimum swipe velocity to trigger a swipe.',
3434+ default: '0.5'
3535+ },
3636+ arrowKeys: {
3737+ type: 'boolean',
3838+ description: 'Whether arrow keys trigger swipes.',
3939+ default: 'true'
4040+ },
4141+ thresholdPassed: {
4242+ type: 'number',
4343+ description: 'A reactive value (-1 to 1) indicating how far past the swipe threshold the current card is. Negative for left, positive for right.',
4444+ default: '0',
4545+ bindable: true
4646+ },
4747+ anchor: {
4848+ type: { type: 'union', definition: 'number | null' },
4949+ description: 'The vertical anchor point of rotation during swipe (as a fraction of card height). null disables rotation anchoring.'
5050+ },
5151+ rotate: {
5252+ type: 'boolean',
5353+ description: 'Whether cards rotate during swipe.',
5454+ default: 'true'
5555+ },
5656+ cardCount: {
5757+ type: 'number',
5858+ description: 'The number of cards to render in the stack.',
5959+ default: '5'
6060+ }
6161+ }
6262+ }
6363+] satisfies APISchema[];
···11import Docs from './Documentation.md';
22import Example from './Example.svelte';
33import Card from './Card.svelte';
44+import api from './api';
4556export default {
67 slug: 'card-swiper',
···89 docs: Docs,
910 example: Example,
1011 card: Card,
1212+ api,
1113};
+62
apps/docs/src/lib/docs/social/emoji-picker/api.ts
···11+import type { APISchema } from '$lib/types/schema';
22+33+export default [
44+ {
55+ title: 'EmojiPicker',
66+ description: 'A searchable emoji picker grid with category tabs.',
77+ props: {
88+ onpicked: {
99+ type: { type: 'function', definition: '(emoji: NativeEmoji) => void' },
1010+ description: 'Callback invoked when an emoji is selected.'
1111+ },
1212+ height: {
1313+ type: 'number',
1414+ description: 'The height of the picker in pixels.',
1515+ default: '300'
1616+ },
1717+ width: {
1818+ type: 'number',
1919+ description: 'The width of the picker in pixels.',
2020+ default: '344'
2121+ },
2222+ columns: {
2323+ type: 'number',
2424+ description: 'The number of emoji columns.',
2525+ default: '8'
2626+ },
2727+ class: {
2828+ type: 'string',
2929+ description: 'Additional CSS classes to apply.'
3030+ }
3131+ }
3232+ },
3333+ {
3434+ title: 'PopoverEmojiPicker',
3535+ description: 'An emoji picker wrapped in a popover.',
3636+ props: {
3737+ onpicked: {
3838+ type: { type: 'function', definition: '(emoji: NativeEmoji) => void' },
3939+ description: 'Callback invoked when an emoji is selected.'
4040+ },
4141+ open: {
4242+ type: 'boolean',
4343+ description: 'Whether the popover is open.',
4444+ default: 'false',
4545+ bindable: true
4646+ },
4747+ triggerRef: {
4848+ type: 'HTMLElement',
4949+ description: 'Reference to the trigger element.',
5050+ bindable: true
5151+ },
5252+ children: {
5353+ type: 'Snippet',
5454+ description: 'Custom trigger content.'
5555+ },
5656+ class: {
5757+ type: 'string',
5858+ description: 'Additional CSS classes to apply.'
5959+ }
6060+ }
6161+ }
6262+] satisfies APISchema[];
···11import Docs from './Documentation.md';
22import Example from './Example.svelte';
33import Card from './Card.svelte';
44+import api from './api';
4556export default {
67 slug: 'emoji-picker',
···89 docs: Docs,
910 example: Example,
1011 card: Card,
1212+ api,
1113};
···11import Docs from './Documentation.md';
22import Example from './Example.svelte';
33import Card from './Card.svelte';
44+import api from './api';
4556export default {
67 slug: 'github-corner',
···89 docs: Docs,
910 example: Example,
1011 card: Card,
1212+ api,
1113};
+62
apps/docs/src/lib/docs/social/link-card/api.ts
···11+import type { APISchema } from '$lib/types/schema';
22+33+export default [
44+ {
55+ title: 'LinkCard',
66+ description: 'A rich preview card for URLs, displaying title, description, and media (image or video).',
77+ props: {
88+ meta: {
99+ type: { type: 'object', definition: '{ title: string; description?: string; image?: string; imageAlt?: string; video?: string; videoType?: string }' },
1010+ description: 'The metadata for the link preview.',
1111+ required: true
1212+ },
1313+ href: {
1414+ type: 'string',
1515+ description: 'The URL the card links to. When provided, the card becomes clickable.'
1616+ },
1717+ target: {
1818+ type: 'string',
1919+ description: 'The link target attribute.',
2020+ default: "'_blank'"
2121+ },
2222+ showMedia: {
2323+ type: 'boolean',
2424+ description: 'Whether to show the image or video.',
2525+ default: 'true'
2626+ },
2727+ showTitle: {
2828+ type: 'boolean',
2929+ description: 'Whether to show the title.',
3030+ default: 'true'
3131+ },
3232+ showDescription: {
3333+ type: 'boolean',
3434+ description: 'Whether to show the description.',
3535+ default: 'false'
3636+ },
3737+ showDomain: {
3838+ type: 'boolean',
3939+ description: 'Whether to show the domain name.',
4040+ default: 'true'
4141+ },
4242+ showGradient: {
4343+ type: 'boolean',
4444+ description: 'Whether to show a gradient overlay on the media.',
4545+ default: 'true'
4646+ },
4747+ children: {
4848+ type: 'Snippet',
4949+ description: 'Custom content to render inside the card.'
5050+ },
5151+ class: {
5252+ type: 'string',
5353+ description: 'Additional CSS classes to apply.'
5454+ },
5555+ ref: {
5656+ type: 'HTMLDivElement',
5757+ description: 'The underlying DOM element.',
5858+ bindable: true
5959+ }
6060+ }
6161+ }
6262+] satisfies APISchema[];
+2
apps/docs/src/lib/docs/social/link-card/index.ts
···11import Docs from './Documentation.md';
22import Example from './Example.svelte';
33import Card from './Card.svelte';
44+import api from './api';
4556export default {
67 slug: 'link-card',
···89 docs: Docs,
910 example: Example,
1011 card: Card,
1212+ api,
1113};
+150
apps/docs/src/lib/docs/social/post/api.ts
···11+import type { APISchema } from '$lib/types/schema';
22+33+export default [
44+ {
55+ title: 'Post',
66+ description: 'A social media post component with avatar, text, images, video, quotes, and action buttons.',
77+ props: {
88+ data: {
99+ type: { type: 'object', definition: 'PostData' },
1010+ description: 'The post data including author info, text, images, video, timestamp, and engagement counts. See PostData type for full structure.',
1111+ required: true
1212+ },
1313+ showAvatar: {
1414+ type: 'boolean',
1515+ description: 'Whether to show the author avatar.',
1616+ default: 'true'
1717+ },
1818+ compact: {
1919+ type: 'boolean',
2020+ description: 'Whether to use a compact layout.',
2121+ default: 'false'
2222+ },
2323+ showImages: {
2424+ type: 'boolean',
2525+ description: 'Whether to show attached images.',
2626+ default: 'true'
2727+ },
2828+ showVideo: {
2929+ type: 'boolean',
3030+ description: 'Whether to show attached video.',
3131+ default: 'true'
3232+ },
3333+ showExternal: {
3434+ type: 'boolean',
3535+ description: 'Whether to show external link cards.',
3636+ default: 'true'
3737+ },
3838+ showQuotes: {
3939+ type: 'boolean',
4040+ description: 'Whether to show quoted posts.',
4141+ default: 'true'
4242+ },
4343+ showReply: {
4444+ type: 'boolean',
4545+ description: 'Whether to show the reply action button.',
4646+ default: 'true',
4747+ bindable: true
4848+ },
4949+ showRepost: {
5050+ type: 'boolean',
5151+ description: 'Whether to show the repost action button.',
5252+ default: 'true',
5353+ bindable: true
5454+ },
5555+ showLike: {
5656+ type: 'boolean',
5757+ description: 'Whether to show the like action button.',
5858+ default: 'true',
5959+ bindable: true
6060+ },
6161+ showBookmark: {
6262+ type: 'boolean',
6363+ description: 'Whether to show the bookmark action button.',
6464+ default: 'true',
6565+ bindable: true
6666+ },
6767+ liked: {
6868+ type: 'boolean',
6969+ description: 'Whether the post is liked.',
7070+ default: 'false',
7171+ bindable: true
7272+ },
7373+ bookmarked: {
7474+ type: 'boolean',
7575+ description: 'Whether the post is bookmarked.',
7676+ default: 'false',
7777+ bindable: true
7878+ },
7979+ onReplyClick: {
8080+ type: { type: 'function', definition: '() => void' },
8181+ description: 'Callback when the reply button is clicked.'
8282+ },
8383+ onRepostClick: {
8484+ type: { type: 'function', definition: '() => void' },
8585+ description: 'Callback when the repost button is clicked.'
8686+ },
8787+ onLikeClick: {
8888+ type: { type: 'function', definition: '() => void' },
8989+ description: 'Callback when the like button is clicked.'
9090+ },
9191+ onBookmarkClick: {
9292+ type: { type: 'function', definition: '() => void' },
9393+ description: 'Callback when the bookmark button is clicked.'
9494+ },
9595+ onclickimage: {
9696+ type: { type: 'function', definition: '(image: PostImageData) => void' },
9797+ description: 'Callback when a post image is clicked.'
9898+ },
9999+ onclickpost: {
100100+ type: { type: 'function', definition: '(data: PostData | QuotedPostData, href?: string) => void' },
101101+ description: 'Callback when the post body is clicked.'
102102+ },
103103+ onclickhandle: {
104104+ type: { type: 'function', definition: '(handle: string, href?: string) => void' },
105105+ description: 'Callback when the author handle is clicked.'
106106+ },
107107+ replyHref: {
108108+ type: 'string',
109109+ description: 'URL for the reply action link.'
110110+ },
111111+ repostHref: {
112112+ type: 'string',
113113+ description: 'URL for the repost action link.'
114114+ },
115115+ likeHref: {
116116+ type: 'string',
117117+ description: 'URL for the like action link.'
118118+ },
119119+ timestampHref: {
120120+ type: 'string',
121121+ description: 'URL for the timestamp link.'
122122+ },
123123+ ontimestampclick: {
124124+ type: { type: 'function', definition: '() => void' },
125125+ description: 'Callback when the timestamp is clicked.'
126126+ },
127127+ customActions: {
128128+ type: 'Snippet',
129129+ description: 'Custom action buttons to display alongside the default actions.'
130130+ },
131131+ logo: {
132132+ type: 'Snippet',
133133+ description: 'Custom logo snippet displayed in the post header.'
134134+ },
135135+ children: {
136136+ type: 'Snippet',
137137+ description: 'Additional content rendered below the post.'
138138+ },
139139+ class: {
140140+ type: 'string',
141141+ description: 'Additional CSS classes to apply.'
142142+ },
143143+ ref: {
144144+ type: 'HTMLElement',
145145+ description: 'The underlying DOM element.',
146146+ bindable: true
147147+ }
148148+ }
149149+ }
150150+] satisfies APISchema[];
+2
apps/docs/src/lib/docs/social/post/index.ts
···11import Docs from './Documentation.md';
22import Example from './Example.svelte';
33import Card from './Card.svelte';
44+import api from './api';
4556export default {
67 slug: 'post',
···89 docs: Docs,
910 example: Example,
1011 card: Card,
1212+ api,
1113};
+48
apps/docs/src/lib/docs/social/star-rating/api.ts
···11+import type { APISchema } from '$lib/types/schema';
22+33+export default [
44+ {
55+ title: 'StarRating',
66+ description: 'An interactive star rating component with customizable appearance.',
77+ props: {
88+ rating: {
99+ type: 'number',
1010+ description: 'The current rating value (0-5).',
1111+ required: true,
1212+ bindable: true
1313+ },
1414+ changeable: {
1515+ type: 'boolean',
1616+ description: 'Whether the user can change the rating by clicking.',
1717+ default: 'true'
1818+ },
1919+ size: {
2020+ type: 'string',
2121+ description: 'Tailwind size class for the stars.',
2222+ default: "'size-8'"
2323+ },
2424+ strokeWidth: {
2525+ type: 'number',
2626+ description: 'The stroke width of the star SVG outlines.',
2727+ default: '0.8'
2828+ },
2929+ buttonClasses: {
3030+ type: 'string',
3131+ description: 'Additional CSS classes for each star button.'
3232+ },
3333+ svgClasses: {
3434+ type: 'string',
3535+ description: 'Additional CSS classes for each star SVG.'
3636+ },
3737+ class: {
3838+ type: 'string',
3939+ description: 'Additional CSS classes to apply to the container.'
4040+ },
4141+ ref: {
4242+ type: 'HTMLElement',
4343+ description: 'The underlying DOM element.',
4444+ bindable: true
4545+ }
4646+ }
4747+ }
4848+] satisfies APISchema[];
···11import Docs from './Documentation.md';
22import Example from './Example.svelte';
33import Card from './Card.svelte';
44+import api from './api';
4556export default {
67 slug: 'star-rating',
···89 docs: Docs,
910 example: Example,
1011 card: Card,
1212+ api,
1113};
+20
apps/docs/src/lib/docs/social/user-profile/api.ts
···11+import type { APISchema } from '$lib/types/schema';
22+33+export default [
44+ {
55+ title: 'UserProfile',
66+ description: 'A user profile card with banner, avatar, display name, handle, and bio.',
77+ props: {
88+ profile: {
99+ type: { type: 'object', definition: '{ banner?: string; avatar?: string; displayName?: string; handle?: string; description?: string }' },
1010+ description: 'The user profile data to display.',
1111+ required: true
1212+ },
1313+ class: {
1414+ type: 'string',
1515+ description: 'Additional CSS classes to apply.',
1616+ required: true
1717+ }
1818+ }
1919+ }
2020+] satisfies APISchema[];
···11import Docs from './Documentation.md';
22import Example from './Example.svelte';
33import Card from './Card.svelte';
44+import api from './api';
4556export default {
67 slug: 'user-profile',
···89 docs: Docs,
910 example: Example,
1011 card: Card,
1212+ api,
1113};
···11import Docs from './Documentation.md';
22import Example from './Example.svelte';
33import Card from './Card.svelte';
44+import api from './api';
4556export default {
67 slug: 'relative-time',
···89 docs: Docs,
910 example: Example,
1011 card: Card,
1212+ api,
1113 sources: [
1214 {
1315 href: 'https://github.com/CaptainCodeman/svelte-relative-time',
+39
apps/docs/src/lib/docs/time/stopwatch/api.ts
···11+import type { APISchema } from '$lib/types/schema';
22+33+export default [
44+ {
55+ title: 'Stopwatch',
66+ description: 'A stopwatch display with animated digits. Bind to the stopwatch prop to control it programmatically (start, pause, resume, reset).',
77+ props: {
88+ stopwatch: {
99+ type: 'StopwatchState',
1010+ description: 'The stopwatch state object. Provides methods: start(), pause(), resume(), reset(), and properties: isRunning, isPaused, elapsed.',
1111+ bindable: true
1212+ },
1313+ showHours: {
1414+ type: 'boolean',
1515+ description: 'Whether to display the hours digits.',
1616+ default: 'false'
1717+ },
1818+ showMinutes: {
1919+ type: 'boolean',
2020+ description: 'Whether to display the minutes digits.',
2121+ default: 'true'
2222+ },
2323+ showSeconds: {
2424+ type: 'boolean',
2525+ description: 'Whether to display the seconds digits.',
2626+ default: 'true'
2727+ },
2828+ class: {
2929+ type: 'string',
3030+ description: 'Additional CSS classes to apply.'
3131+ },
3232+ ref: {
3333+ type: 'HTMLDivElement',
3434+ description: 'The underlying DOM element.',
3535+ bindable: true
3636+ }
3737+ }
3838+ }
3939+] satisfies APISchema[];
+2
apps/docs/src/lib/docs/time/stopwatch/index.ts
···11import Docs from './Documentation.md';
22import Example from './Example.svelte';
33import Card from './Card.svelte';
44+import api from './api';
4556export default {
67 slug: 'stopwatch',
···89 docs: Docs,
910 example: Example,
1011 card: Card,
1212+ api,
1113 sources: [
1214 {
1315 href: 'https://github.com/joshnuss/svelte-reactive-timer',
+39
apps/docs/src/lib/docs/time/timer/api.ts
···11+import type { APISchema } from '$lib/types/schema';
22+33+export default [
44+ {
55+ title: 'Timer',
66+ description: 'A countdown timer display with animated digits. Bind to the timer prop to control it programmatically (start, pause, resume, reset).',
77+ props: {
88+ timer: {
99+ type: 'TimerState',
1010+ description: 'The timer state object. Constructor takes duration in ms (default 10 minutes). Provides methods: start(), pause(), resume(), reset(), and properties: isRunning, isPaused, remaining.',
1111+ bindable: true
1212+ },
1313+ showHours: {
1414+ type: 'boolean',
1515+ description: 'Whether to display the hours digits.',
1616+ default: 'false'
1717+ },
1818+ showMinutes: {
1919+ type: 'boolean',
2020+ description: 'Whether to display the minutes digits.',
2121+ default: 'true'
2222+ },
2323+ showSeconds: {
2424+ type: 'boolean',
2525+ description: 'Whether to display the seconds digits.',
2626+ default: 'true'
2727+ },
2828+ class: {
2929+ type: 'string',
3030+ description: 'Additional CSS classes to apply.'
3131+ },
3232+ ref: {
3333+ type: 'HTMLDivElement',
3434+ description: 'The underlying DOM element.',
3535+ bindable: true
3636+ }
3737+ }
3838+ }
3939+] satisfies APISchema[];
+2
apps/docs/src/lib/docs/time/timer/index.ts
···11import Docs from './Documentation.md';
22import Example from './Example.svelte';
33import Card from './Card.svelte';
44+import api from './api';
4556export default {
67 slug: 'timer',
···89 docs: Docs,
910 example: Example,
1011 card: Card,
1212+ api,
1113 sources: [
1214 {
1315 href: 'https://github.com/joshnuss/svelte-reactive-timer',
+20
apps/docs/src/lib/docs/visual/confetti/api.ts
···11+import type { APISchema } from '$lib/types/schema';
22+33+export default [
44+ {
55+ title: 'launchConfetti',
66+ description: 'A function (not a component) that launches a confetti animation using theme colors. Import and call it directly.',
77+ props: {
88+ color: {
99+ type: 'string',
1010+ description: "The theme color name to use for confetti particles (e.g. 'accent', 'red', 'blue').",
1111+ default: "'accent'"
1212+ },
1313+ brightnesses: {
1414+ type: { type: 'array', definition: '(50 | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 | 950)[]' },
1515+ description: 'The brightness levels of the color to use for confetti particles.',
1616+ default: '[300, 400, 500, 800]'
1717+ }
1818+ }
1919+ }
2020+] satisfies APISchema[];
+2
apps/docs/src/lib/docs/visual/confetti/index.ts
···11import Docs from './Documentation.md';
22import Example from './Example.svelte';
33import Card from './Card.svelte';
44+import api from './api';
4556export default {
67 slug: 'confetti',
···89 docs: Docs,
910 example: Example,
1011 card: Card,
1212+ api,
1113};
+37
apps/docs/src/lib/docs/visual/excalidraw/api.ts
···11+import type { APISchema } from '$lib/types/schema';
22+33+export default [
44+ {
55+ title: 'Excalidraw',
66+ description: 'Renders an Excalidraw SVG drawing with optional caption.',
77+ props: {
88+ svg: {
99+ type: 'string',
1010+ description: 'The Excalidraw SVG content as a string.',
1111+ required: true
1212+ },
1313+ alt: {
1414+ type: 'string',
1515+ description: 'Alt text for the drawing.',
1616+ required: true
1717+ },
1818+ caption: {
1919+ type: 'string',
2020+ description: 'Optional caption text displayed below the drawing.'
2121+ },
2222+ captionClass: {
2323+ type: 'string',
2424+ description: 'Additional CSS classes for the caption element.'
2525+ },
2626+ class: {
2727+ type: 'string',
2828+ description: 'Additional CSS classes to apply.'
2929+ },
3030+ ref: {
3131+ type: 'HTMLElement',
3232+ description: 'The underlying DOM element.',
3333+ bindable: true
3434+ }
3535+ }
3636+ }
3737+] satisfies APISchema[];
+2
apps/docs/src/lib/docs/visual/excalidraw/index.ts
···11import Docs from './Documentation.md';
22import Example from './Example.svelte';
33import Card from './Card.svelte';
44+import api from './api';
4556export default {
67 slug: 'excalidraw',
···89 docs: Docs,
910 example: Example,
1011 card: Card,
1212+ api,
1113};
···11import Docs from './Documentation.md';
22import Example from './Example.svelte';
33import Card from './Card.svelte';
44+import api from './api';
4556export default {
67 slug: 'image-masonry',
···89 docs: Docs,
910 example: Example,
1011 card: Card,
1212+ api,
1113};
+19
apps/docs/src/lib/docs/visual/phone/api.ts
···11+import type { APISchema } from '$lib/types/schema';
22+33+export default [
44+ {
55+ title: 'Phone',
66+ description: 'A decorative phone frame that wraps content to simulate a mobile device display.',
77+ props: {
88+ children: {
99+ type: 'Snippet',
1010+ description: 'The content to display inside the phone frame.',
1111+ required: true
1212+ },
1313+ class: {
1414+ type: 'string',
1515+ description: 'Additional CSS classes to apply.'
1616+ }
1717+ }
1818+ }
1919+] satisfies APISchema[];
+2
apps/docs/src/lib/docs/visual/phone/index.ts
···11import Docs from './Documentation.md';
22import Example from './Example.svelte';
33import Card from './Card.svelte';
44+import api from './api';
4556export default {
67 slug: 'phone',
···89 docs: Docs,
910 example: Example,
1011 card: Card,
1212+ api,
1113};
+32
apps/docs/src/lib/docs/visual/quote/api.ts
···11+import type { APISchema } from '$lib/types/schema';
22+33+export default [
44+ {
55+ title: 'Quote',
66+ description: 'A styled blockquote with optional author avatar and attribution.',
77+ props: {
88+ quote: {
99+ type: 'string',
1010+ description: 'The quote text.'
1111+ },
1212+ author: {
1313+ type: { type: 'object', definition: '{ src?: string; alt?: string; fallback?: string; role?: string; name?: string; avatarClass?: string; fallbackClass?: string; imageClass?: string }' },
1414+ description: 'The author information including avatar and name.'
1515+ },
1616+ useThemeColor: {
1717+ type: 'boolean',
1818+ description: 'Whether to apply theme color styling to the author avatar.',
1919+ default: 'false'
2020+ },
2121+ class: {
2222+ type: 'string',
2323+ description: 'Additional CSS classes to apply.'
2424+ },
2525+ ref: {
2626+ type: 'HTMLDivElement',
2727+ description: 'The underlying DOM element.',
2828+ bindable: true
2929+ }
3030+ }
3131+ }
3232+] satisfies APISchema[];
+2
apps/docs/src/lib/docs/visual/quote/index.ts
···11import Docs from './Documentation.md';
22import Example from './Example.svelte';
33import Card from './Card.svelte';
44+import api from './api';
4556export default {
67 slug: 'quote',
···89 docs: Docs,
910 example: Example,
1011 card: Card,
1212+ api,
1113};
+47
apps/docs/src/lib/docs/visual/undraw/api.ts
···11+import type { APISchema } from '$lib/types/schema';
22+33+export default [
44+ {
55+ title: 'Undraw',
66+ description: 'Renders an unDraw SVG illustration with optional color remapping and dark mode inversion.',
77+ props: {
88+ svg: {
99+ type: 'string',
1010+ description: 'The unDraw SVG content as a string.',
1111+ required: true
1212+ },
1313+ alt: {
1414+ type: 'string',
1515+ description: 'Alt text for the illustration.',
1616+ required: true
1717+ },
1818+ caption: {
1919+ type: 'string',
2020+ description: 'Optional caption text displayed below the illustration.'
2121+ },
2222+ captionClass: {
2323+ type: 'string',
2424+ description: 'Additional CSS classes for the caption element.'
2525+ },
2626+ autoInvert: {
2727+ type: 'boolean',
2828+ description: 'Whether to automatically invert colors in dark mode.',
2929+ default: 'false'
3030+ },
3131+ colorMap: {
3232+ type: { type: 'object', definition: 'Record<string, string>' },
3333+ description: 'A mapping of original SVG colors to replacement colors.',
3434+ default: '{}'
3535+ },
3636+ class: {
3737+ type: 'string',
3838+ description: 'Additional CSS classes to apply.'
3939+ },
4040+ ref: {
4141+ type: 'HTMLElement',
4242+ description: 'The underlying DOM element.',
4343+ bindable: true
4444+ }
4545+ }
4646+ }
4747+] satisfies APISchema[];
+2
apps/docs/src/lib/docs/visual/undraw/index.ts
···11import Docs from './Documentation.md';
22import Example from './Example.svelte';
33import Card from './Card.svelte';
44+import api from './api';
4556export default {
67 slug: 'undraw',
···89 docs: Docs,
910 example: Example,
1011 card: Card,
1212+ api,
1113};