TypeScript Types - Flowbite Svelte
Learn more about the value types and class interfaces that you can use and extend with Flowbite coupled with Svelte by leveraging the features of TypeScript
Typescript types #
Enhance the reliability and scalability of your user interface code by leveraging data types. Here’s an example of how to use them:
import { Button, type SizeType } from "flowbite-svelte";
export let size: SizeType = "lg";
The following excerpt shows you the full list of TypeScript types and interfaces that are being used with the Flowbite Svelte library.
import type { HTMLButtonAttributes, MouseEventHandler } from "svelte/elements";
import type { HTMLAnchorAttributes } from "svelte/elements";
import type { TransitionConfig, FadeParams, BlurParams, FlyParams, SlideParams, ScaleParams } from "svelte/transition";
import { tv } from "tailwind-variants";
export interface ThemeConfig {
slots?: Record;
variants?: Record;
compoundVariants?: Array>;
defaultVariants?: Record;
}
export interface ThemeType {
[key: string]: ReturnType;
}
export declare const xs = "xs";
export declare const sm = "sm";
export declare const md = "md";
export declare const lg = "lg";
export declare const xl = "xl";
export interface drawerTransitionParamTypes {
amount?: number;
delay?: number;
duration?: number;
easing?: (t: number) => number;
opacity?: number;
x?: number;
y?: number;
}
export type FormSizeType = "sm" | "md" | "lg";
// export type drawerTransitionTypes = 'fade' | 'fly' | 'slide' | 'blur' | 'in:fly' | 'out:fly' | 'in:slide' | 'out:slide' | 'in:fade' | 'out:fade' | 'in:blur' | 'out:blur' | undefined;
// export type PsizeType = 'xs' | 'sm' | 'base' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl' | '5xl' | '6xl' | '7xl' | '8xl' | '9xl';
// export type PweightType = 'thin' | 'extralight' | 'light' | 'normal' | 'medium' | 'semibold' | 'bold' | 'extrabold' | 'black';
// export type BlockQuoteType = 'xs' | 'sm' | 'base' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl' | '5xl' | '6xl' | '7xl' | '8xl' | '9xl';
// export type FormColorType = 'blue' | 'red' | 'green' | 'purple' | 'teal' | 'yellow' | 'orange' | 'primary' | 'secondary';
// export type ButtonColorType = 'alternative' | 'blue' | 'dark' | 'green' | 'light' | 'primary' | 'purple' | 'red' | 'yellow' | 'none';
// export type SidebarType = {
// activeClass: string | undefined | null;
// nonActiveClass: string | undefined | null;
// };
// export interface ButtonClassesTypes {
// default?: string;
// border?: string;
// application?: string;
// pagination?: string;
// group?: string;
// card?: string;
// meeting?: string;
// video?: string;
// custom?: string;
// }
export type NavbarType = {
navStatus: boolean | undefined;
breakPoint: "md" | "lg" | "xl" | "xxl";
activeClass: string | undefined | null;
nonActiveClass: string | undefined | null;
closeNav: () => void;
};
export type ColorVariant = "gray" | "red" | "yellow" | "green" | "indigo" | "purple" | "pink" | "blue" | "primary" | "none";
// export type BottomNavVariantType = 'default' | 'border' | 'application' | 'pagination' | 'group' | 'card' | 'meeting' | 'video';
export type DeviceVariantType = "default" | "ios" | "android" | "tablet" | "laptop" | "desktop" | "smartwatch";
// export type ProgressBarColorType = 'primary' | 'blue' | 'gray' | 'red' | 'green' | 'yellow' | 'purple' | 'indigo';
// export type SpinnerColorType = 'primary' | 'blue' | 'gray' | 'green' | 'red' | 'yellow' | 'pink' | 'purple' | 'white' | 'custom';
// export type ToastPositionType = 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right' | 'none';
// export type SpaceType = 'tighter' | 'tight' | 'normal' | 'wide' | 'wider' | 'widest' | undefined;
// export type ToolbarButtonType = 'dark' | 'default' | 'gray' | 'red' | 'yellow' | 'green' | 'indigo' | 'purple' | 'pink' | 'blue';
export declare type SizeType = typeof xs | typeof sm | typeof md | typeof lg | typeof xl;
export type TransitionTypes = "fade" | "fly" | "slide" | "blur" | "in:fly" | "out:fly" | "in:slide" | "out:slide" | "in:fade" | "out:fade" | "in:blur" | "out:blur";
export interface TransitionParamTypes {
delay?: number;
duration?: number;
easing?: (t: number) => number;
css?: (t: number, u: number) => string | undefined | null;
tick?: (t: number, u: number) => void;
}
export type ParamsType = FadeParams | BlurParams | FlyParams | SlideParams | ScaleParams;
export type TransitionFunc = (node: HTMLElement, params: ParamsType) => TransitionConfig;
export type ModalPlacementType = "top-left" | "top-center" | "top-right" | "center-left" | "center" | "center-right" | "bottom-left" | "bottom-center" | "bottom-right";
/* eslint-disable @typescript-eslint/no-explicit-any */
export interface LinkType {
name: string;
href?: string;
rel?: string;
active?: boolean;
[propName: string]: any;
}
interface AnchorAttributes extends Omit {
href: string;
onclick?: HTMLButtonAttributes["onclick"];
}
interface ButtonAttibutes extends Omit {
href?: undefined;
}
export type AnchorButtonAttributes = AnchorAttributes | ButtonAttibutes;