@scalably/ui 0.2.1 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.cts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as react from 'react';
2
- import { ReactNode } from 'react';
2
+ import react__default, { ReactNode, ImgHTMLAttributes } from 'react';
3
3
  import * as class_variance_authority_types from 'class-variance-authority/types';
4
4
  import { VariantProps } from 'class-variance-authority';
5
5
  import * as react_jsx_runtime from 'react/jsx-runtime';
@@ -1092,6 +1092,98 @@ interface SelectProps extends SelectBaseProps {
1092
1092
  */
1093
1093
  declare const Select: react.ForwardRefExoticComponent<SelectProps & react.RefAttributes<HTMLButtonElement | HTMLSelectElement>>;
1094
1094
 
1095
+ declare const skeletonVariants: (props?: ({
1096
+ variant?: "text" | "circle" | "rectangle" | null | undefined;
1097
+ size?: "sm" | "md" | "lg" | null | undefined;
1098
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
1099
+ type SkeletonVariant = NonNullable<VariantProps<typeof skeletonVariants>["variant"]>;
1100
+ type SkeletonSize = NonNullable<VariantProps<typeof skeletonVariants>["size"]>;
1101
+ interface SkeletonProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "width" | "height">, VariantProps<typeof skeletonVariants> {
1102
+ /**
1103
+ * Width of the skeleton.
1104
+ * If a number is provided, it will be automatically converted to pixels.
1105
+ * @example width={40} → width="40px"
1106
+ * @example width="100%" → width="100%"
1107
+ */
1108
+ width?: string | number;
1109
+ /**
1110
+ * Height of the skeleton.
1111
+ * If a number is provided, it will be automatically converted to pixels.
1112
+ * @example height={40} → height="40px"
1113
+ * @example height="100%" → height="100%"
1114
+ */
1115
+ height?: string | number;
1116
+ /**
1117
+ * Accessible label for screen readers.
1118
+ * Falls back to a generic "Loading" label if not provided.
1119
+ */
1120
+ "aria-label"?: string;
1121
+ }
1122
+ /**
1123
+ * Skeleton component for displaying loading placeholders with shimmer animation.
1124
+ *
1125
+ * Features:
1126
+ * - Multiple variants: text, circle, rectangle
1127
+ * - Responsive sizes: sm, md, lg
1128
+ * - Custom dimensions via width/height props
1129
+ * - Shimmer animation with reduced motion support
1130
+ * - Full accessibility support
1131
+ *
1132
+ * @example
1133
+ * ```tsx
1134
+ * // Basic text skeleton
1135
+ * <Skeleton variant="text" size="md" width="100%" />
1136
+ *
1137
+ * // Circle avatar skeleton
1138
+ * <Skeleton variant="circle" width={40} height={40} />
1139
+ *
1140
+ * // Custom rectangle
1141
+ * <Skeleton variant="rectangle" width={200} height={100} />
1142
+ * ```
1143
+ */
1144
+ declare const Skeleton: react.ForwardRefExoticComponent<SkeletonProps & react.RefAttributes<HTMLDivElement>>;
1145
+
1146
+ interface SkeletonTextProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "children"> {
1147
+ /**
1148
+ * Number of lines to render.
1149
+ * @default 3
1150
+ */
1151
+ lines?: number;
1152
+ /**
1153
+ * Spacing between lines.
1154
+ * If a number is provided, it will be automatically converted to pixels.
1155
+ * @default "0.5rem"
1156
+ * @example gap={8} → gap="8px"
1157
+ * @example gap="1rem" → gap="1rem"
1158
+ */
1159
+ gap?: string | number;
1160
+ }
1161
+ /**
1162
+ * SkeletonText component for creating multi-line text skeleton placeholders.
1163
+ *
1164
+ * Features:
1165
+ * - Configurable number of lines
1166
+ * - Customizable gap between lines
1167
+ * - Natural paragraph ending (last line is 80% width when multiple lines)
1168
+ * - Composed from Skeleton components
1169
+ *
1170
+ * This component saves you from repeating the "flex-col gap + last line width" pattern
1171
+ * and enforces UI consistency across your application.
1172
+ *
1173
+ * @example
1174
+ * ```tsx
1175
+ * // Default 3-line paragraph skeleton
1176
+ * <SkeletonText />
1177
+ *
1178
+ * // Custom 5-line skeleton with larger gap
1179
+ * <SkeletonText lines={5} gap="1rem" />
1180
+ *
1181
+ * // Compact 2-line skeleton
1182
+ * <SkeletonText lines={2} gap={4} />
1183
+ * ```
1184
+ */
1185
+ declare const SkeletonText: react.ForwardRefExoticComponent<SkeletonTextProps & react.RefAttributes<HTMLDivElement>>;
1186
+
1095
1187
  type TabsProps = {
1096
1188
  className?: string;
1097
1189
  value?: string;
@@ -1573,6 +1665,301 @@ interface ViewToggleProps {
1573
1665
  */
1574
1666
  declare const ViewToggle: React.FC<ViewToggleProps>;
1575
1667
 
1668
+ /**
1669
+ * Centralized catalog of fallback imagery for avatars and generic image slots.
1670
+ * Consumers can reference these to keep placeholder usage consistent.
1671
+ */
1672
+ declare const defaultAssets: {
1673
+ readonly avatars: {
1674
+ readonly group: string;
1675
+ readonly profile: string;
1676
+ };
1677
+ readonly placeholders: {
1678
+ readonly image: string;
1679
+ };
1680
+ };
1681
+
1682
+ type AvatarPlaceholderCategory = keyof typeof defaultAssets;
1683
+ type AvatarPlaceholderVariantMap = {
1684
+ [K in AvatarPlaceholderCategory]: keyof (typeof defaultAssets)[K];
1685
+ };
1686
+ type AvatarPlaceholderVariant<C extends AvatarPlaceholderCategory = AvatarPlaceholderCategory> = AvatarPlaceholderVariantMap[C];
1687
+ interface BaseAvatarPlaceholderProps extends Omit<ImgHTMLAttributes<HTMLImageElement>, "src" | "alt"> {
1688
+ /**
1689
+ * Accessible text describing the placeholder image.
1690
+ * Falls back to a generated description derived from category and variant.
1691
+ */
1692
+ alt?: string;
1693
+ }
1694
+ interface AvatarPlaceholderProps<C extends AvatarPlaceholderCategory = AvatarPlaceholderCategory> extends BaseAvatarPlaceholderProps {
1695
+ /**
1696
+ * Asset grouping to load from (`avatars` or `placeholders`).
1697
+ */
1698
+ category: C;
1699
+ /**
1700
+ * Asset key within the selected category (e.g. `group`, `profile`, `image`).
1701
+ */
1702
+ variant: AvatarPlaceholderVariant<C>;
1703
+ }
1704
+ /**
1705
+ * Thin wrapper around the shared default asset catalog that renders placeholder imagery
1706
+ * (e.g. generic avatars) as a standard `<img>` element with sensible defaults.
1707
+ */
1708
+ declare const AvatarPlaceholder: react.ForwardRefExoticComponent<AvatarPlaceholderProps<"avatars" | "placeholders"> & react.RefAttributes<HTMLImageElement>>;
1709
+
1710
+ declare const logoAssets: {
1711
+ readonly app: {
1712
+ readonly png: string;
1713
+ readonly svg: string;
1714
+ };
1715
+ readonly campaign: {
1716
+ readonly png: string;
1717
+ readonly svg: string;
1718
+ };
1719
+ readonly membership: {
1720
+ readonly png: string;
1721
+ readonly svg: string;
1722
+ };
1723
+ readonly icon: {
1724
+ readonly png: string;
1725
+ readonly svg: string;
1726
+ };
1727
+ readonly "icon-big": {
1728
+ readonly png: string;
1729
+ };
1730
+ };
1731
+
1732
+ type LogoVariant = keyof typeof logoAssets;
1733
+ type LogoFormat = {
1734
+ [K in LogoVariant]: keyof (typeof logoAssets)[K];
1735
+ }[LogoVariant];
1736
+ interface LogoProps extends Omit<ImgHTMLAttributes<HTMLImageElement>, "src" | "alt"> {
1737
+ /**
1738
+ * Which logo variant to render (derived from logo assets).
1739
+ */
1740
+ variant: LogoVariant;
1741
+ /**
1742
+ * File format to render. Defaults to SVG when available, otherwise PNG.
1743
+ */
1744
+ format?: LogoFormat;
1745
+ /**
1746
+ * Accessible description. Falls back to "Scalably {variant} logo".
1747
+ */
1748
+ alt?: string;
1749
+ }
1750
+ /**
1751
+ * Branded logo renderer that stays tightly coupled to available assets.
1752
+ */
1753
+ declare const Logo: react.ForwardRefExoticComponent<LogoProps & react.RefAttributes<HTMLImageElement>>;
1754
+
1755
+ interface LoadingScreenProps extends Omit<react__default.HTMLAttributes<HTMLDivElement>, "children"> {
1756
+ /**
1757
+ * Optional loading message displayed below the logo.
1758
+ */
1759
+ message?: string;
1760
+ /**
1761
+ * Backdrop blur amount. Set to 0 to disable blur.
1762
+ * @default 8
1763
+ */
1764
+ backdropBlur?: number;
1765
+ /**
1766
+ * Backdrop opacity (0-1).
1767
+ * @default 0.8
1768
+ */
1769
+ backdropOpacity?: number;
1770
+ /**
1771
+ * Logo size in pixels. Responsive: smaller on mobile, larger on desktop.
1772
+ * @default { mobile: 64, desktop: 80 }
1773
+ */
1774
+ size?: number | {
1775
+ mobile: number;
1776
+ desktop: number;
1777
+ };
1778
+ /**
1779
+ * Accessible label for screen readers.
1780
+ * Falls back to "Loading" or includes message if provided.
1781
+ */
1782
+ "aria-label"?: string;
1783
+ }
1784
+ /**
1785
+ * Full-screen loading overlay component with animated Scalably logo.
1786
+ *
1787
+ * Features:
1788
+ * - Full-screen overlay with customizable backdrop
1789
+ * - Animated logo with pulse and rotate combination
1790
+ * - Optional loading message
1791
+ * - Full accessibility support
1792
+ * - Respects reduced motion preferences
1793
+ * - Mobile-first responsive design
1794
+ *
1795
+ * @example
1796
+ * ```tsx
1797
+ * // Basic usage
1798
+ * <LoadingScreen />
1799
+ *
1800
+ * // With message
1801
+ * <LoadingScreen message="Loading your data..." />
1802
+ *
1803
+ * // Custom backdrop
1804
+ * <LoadingScreen backdropBlur={12} backdropOpacity={0.9} />
1805
+ *
1806
+ * // Custom size
1807
+ * <LoadingScreen size={{ mobile: 48, desktop: 96 }} />
1808
+ * ```
1809
+ */
1810
+ declare const LoadingScreen: react__default.ForwardRefExoticComponent<LoadingScreenProps & react__default.RefAttributes<HTMLDivElement>>;
1811
+
1812
+ type ImageSourceMode = "both" | "url-only" | "upload-only";
1813
+ interface RichTextEditorProps {
1814
+ /** Controlled HTML value of the editor */
1815
+ value: string;
1816
+ /** Called whenever the content changes (HTML string) */
1817
+ onChange: (html: string) => void;
1818
+ /** Optional label rendered above the editor */
1819
+ label?: string;
1820
+ /** Error message shown below the editor and applied to border */
1821
+ error?: string;
1822
+ /** Helper text shown when there is no error */
1823
+ helperText?: string;
1824
+ /** Placeholder text rendered when editor is empty */
1825
+ placeholder?: string;
1826
+ /** Minimum height of the content area (e.g. "160px") */
1827
+ minHeight?: string;
1828
+ /** When true, renders a reduced toolbar (basic formatting only) */
1829
+ simple?: boolean;
1830
+ /** Disables editing and toolbar interaction */
1831
+ disabled?: boolean;
1832
+ /** Optional test id for querying in tests */
1833
+ "data-testid"?: string;
1834
+ /** Additional className for the outer container */
1835
+ containerClassName?: string;
1836
+ /**
1837
+ * Optional handler for image uploads.
1838
+ *
1839
+ * The editor **always** inserts images by URL. This callback is an
1840
+ * optional helper that lets you plug in your own upload flow:
1841
+ *
1842
+ * - When **not provided**:
1843
+ * - The image popover only shows a "Source URL" field and "Alt text".
1844
+ * - Users can paste any public image URL and click "Save" to insert it.
1845
+ *
1846
+ * - When **provided**:
1847
+ * - The image popover also shows an "Upload file" button.
1848
+ * - After the user selects a file, this function is called with that File.
1849
+ * - You upload the file (e.g. S3, Firebase, your API) and return a
1850
+ * Promise that resolves to the public image URL.
1851
+ * - The returned URL is written into the "Source URL" field, and the
1852
+ * user can then confirm insertion with "Save".
1853
+ */
1854
+ onImageUpload?: (file: File) => Promise<string>;
1855
+ /**
1856
+ * Controls how users are allowed to provide image sources.
1857
+ *
1858
+ * The editor always stores images as URLs; this setting only affects the UI:
1859
+ *
1860
+ * - "both" (default):
1861
+ * - Users can type or paste into the Source URL field.
1862
+ * - If `onImageUpload` is provided, they can also use the Upload file helper.
1863
+ *
1864
+ * - "url-only":
1865
+ * - Users can only type/paste a URL.
1866
+ * - The Upload file helper is hidden even if `onImageUpload` is provided.
1867
+ *
1868
+ * - "upload-only":
1869
+ * - Users can only upload via `onImageUpload`; the Source URL field is
1870
+ * rendered read-only to display the resolved URL.
1871
+ * - If `onImageUpload` is not provided, this mode gracefully behaves like
1872
+ * "url-only" so the image feature is still usable.
1873
+ */
1874
+ imageSourceMode?: ImageSourceMode;
1875
+ }
1876
+ /**
1877
+ * RichTextEditor - Controlled rich text editor built on top of Tiptap.
1878
+ *
1879
+ * - Exposes a simple HTML-based value/onChange API.
1880
+ * - Renders a toolbar with common formatting controls.
1881
+ * - Mimics the design system's input styling (label, error, helper text).
1882
+ *
1883
+ * **Viewing Content:**
1884
+ * To display the HTML content created with this editor in read-only mode,
1885
+ * use the `RichTextViewer` component. It ensures content rendered in "view"
1886
+ * mode matches "edit" mode styling exactly.
1887
+ *
1888
+ * @example
1889
+ * ```tsx
1890
+ * import { RichTextEditor, RichTextViewer } from '@scalably/ui';
1891
+ *
1892
+ * function BlogPost({ post }) {
1893
+ * const [content, setContent] = useState(post.content);
1894
+ *
1895
+ * return (
1896
+ * <div>
1897
+ * <RichTextEditor value={content} onChange={setContent} />
1898
+ * <RichTextViewer content={content} />
1899
+ * </div>
1900
+ * );
1901
+ * }
1902
+ * ```
1903
+ *
1904
+ * @see RichTextViewer - Read-only viewer component for displaying rich text content
1905
+ */
1906
+ declare const RichTextEditor: {
1907
+ ({ value, onChange, label, error, helperText, placeholder, minHeight, simple, disabled, "data-testid": dataTestId, containerClassName, onImageUpload, imageSourceMode, }: RichTextEditorProps): react_jsx_runtime.JSX.Element;
1908
+ displayName: string;
1909
+ };
1910
+
1911
+ interface RichTextViewerProps {
1912
+ /**
1913
+ * HTML content string to render (typically from RichTextEditor's value prop).
1914
+ * This content will be rendered as-is, so ensure it's sanitized if it comes
1915
+ * from untrusted sources.
1916
+ */
1917
+ content: string;
1918
+ /**
1919
+ * Additional CSS classes to apply to the container.
1920
+ */
1921
+ className?: string;
1922
+ /**
1923
+ * Optional test id for querying in tests.
1924
+ */
1925
+ "data-testid"?: string;
1926
+ }
1927
+ /**
1928
+ * RichTextViewer - Read-only component for displaying rich text content.
1929
+ *
1930
+ * This component renders HTML content with the same styling as RichTextEditor,
1931
+ * ensuring a consistent appearance between "edit" and "view" modes.
1932
+ *
1933
+ * **Security Note:** This component uses `dangerouslySetInnerHTML` to render
1934
+ * the provided HTML. If the content comes from untrusted sources (e.g., user
1935
+ * input, external APIs), you should sanitize it first using a library like
1936
+ * DOMPurify:
1937
+ *
1938
+ * ```tsx
1939
+ * import DOMPurify from 'isomorphic-dompurify';
1940
+ *
1941
+ * <RichTextViewer content={DOMPurify.sanitize(userContent)} />
1942
+ * ```
1943
+ *
1944
+ * @example
1945
+ * ```tsx
1946
+ * import { RichTextEditor, RichTextViewer } from '@scalably/ui';
1947
+ *
1948
+ * function BlogPost({ post }) {
1949
+ * return (
1950
+ * <div>
1951
+ * <RichTextEditor value={post.content} onChange={setContent} />
1952
+ * <RichTextViewer content={post.content} />
1953
+ * </div>
1954
+ * );
1955
+ * }
1956
+ * ```
1957
+ */
1958
+ declare const RichTextViewer: {
1959
+ ({ content, className, "data-testid": dataTestId, }: RichTextViewerProps): react_jsx_runtime.JSX.Element;
1960
+ displayName: string;
1961
+ };
1962
+
1576
1963
  interface ScalablyUIProviderProps {
1577
1964
  children: React.ReactNode;
1578
1965
  /**
@@ -1696,4 +2083,997 @@ declare const zodErrorsToSummary: (errors: Record<string, FieldErrorLike>) => {
1696
2083
  message: string;
1697
2084
  }[];
1698
2085
 
1699
- export { BackToTop, type BackToTopProps, Button, type ButtonProps, type ButtonSize, type ButtonVariant, Checkbox, CheckboxGroup, type CheckboxGroupOption, type CheckboxGroupProps, type CheckboxProps, DateInput, type DateInputMode, type DateInputProps, DatePicker, type DatePickerMode, type DatePickerProps, Divider, type DividerProps, type DividerVariant, type FieldErrorLike, FileUpload, type FileUploadError, type FileUploadFile, type FileUploadIconType, type FileUploadProps, type FileUploadSize, type FileUploadVariant, Form, type FormErrorItem, FormErrorSummary, type FormErrorSummaryProps, FormField, type FormFieldProps, type FormProps, Input, type InputProps, type InputVariant, MultipleSelectionButton, type MultipleSelectionButtonProps, Pagination, type PaginationProps, QuantityInput, type QuantityInputProps, Radio, RadioGroup, type RadioGroupOption, type RadioGroupProps, type RadioProps, type RangeValue, ScalablyUIProvider, type ScalablyUIProviderProps, SearchInput, type SearchInputProps, type SearchInputVariant, Select, type SelectOption, type SelectProps, type SelectVariant, StatusBadge, type StatusBadgeProps, type StatusBadgeSize, type StatusBadgeStatus, type StatusBadgeVariant, Tabs, TabsContent, type TabsContentProps, TabsList, type TabsListProps, type TabsProps, TabsTrigger, type TabsTriggerProps, TimePicker, type TimePickerProps, Toast, type ToastAction, ToastContainer, type ToastContainerProps, type ToastPosition, type ToastProps, type ToastStatus, Tooltip, type TooltipAlign, type TooltipProps, type TooltipSide, type ViewMode, ViewToggle, type ViewToggleProps, clampDate, cn, daysGrid, debounce, fieldErrorToProps, formatDateLocalized, monthsForLocale, scopeClass, throttle, toDateKey, weekdaysForLocale, zodErrorsToSummary };
2086
+ /**
2087
+ * Props for the CalendarIcon component
2088
+ */
2089
+ interface CalendarIconProps extends React.SVGProps<SVGSVGElement> {
2090
+ /** Size of the icon in pixels. Defaults to 24. */
2091
+ size?: number;
2092
+ /** Additional CSS classes to apply to the icon */
2093
+ className?: string;
2094
+ /** Stroke width of the icon in pixels. Defaults to 1.5. */
2095
+ strokeWidth?: number;
2096
+ }
2097
+ /**
2098
+ * Calendar icon component - displays a calendar with date indicators.
2099
+ *
2100
+ * This icon uses `currentColor`, so it can be styled with Tailwind classes.
2101
+ *
2102
+ * @example
2103
+ * ```tsx
2104
+ * import { CalendarIcon } from '@scalably/ui';
2105
+ *
2106
+ * <CalendarIcon size={32} className="sui-text-primary" />
2107
+ * ```
2108
+ */
2109
+ declare const CalendarIcon: react.MemoExoticComponent<react.ForwardRefExoticComponent<Omit<CalendarIconProps, "ref"> & react.RefAttributes<SVGSVGElement>>>;
2110
+
2111
+ /**
2112
+ * Props for the CaptureIcon component
2113
+ */
2114
+ interface CaptureIconProps extends React.SVGProps<SVGSVGElement> {
2115
+ /** Size of the icon in pixels. Defaults to 24. */
2116
+ size?: number;
2117
+ /** Additional CSS classes to apply to the icon */
2118
+ className?: string;
2119
+ }
2120
+ /**
2121
+ * Capture icon component - displays a camera icon with a capture button.
2122
+ *
2123
+ * This icon uses `currentColor`, so it can be styled with Tailwind classes.
2124
+ *
2125
+ * @example
2126
+ * ```tsx
2127
+ * import { CaptureIcon } from '@scalably/ui';
2128
+ *
2129
+ * <CaptureIcon size={24} className="sui-text-primary" />
2130
+ * ```
2131
+ */
2132
+ declare const CaptureIcon: react.MemoExoticComponent<react.ForwardRefExoticComponent<Omit<CaptureIconProps, "ref"> & react.RefAttributes<SVGSVGElement>>>;
2133
+
2134
+ /**
2135
+ * Props for the CheckIcon component
2136
+ */
2137
+ interface CheckIconProps extends React.SVGProps<SVGSVGElement> {
2138
+ /** Size of the icon in pixels. Defaults to 20. */
2139
+ size?: number;
2140
+ /** Additional CSS classes to apply to the icon */
2141
+ className?: string;
2142
+ /** Stroke width of the icon in pixels. Defaults to 2.2. */
2143
+ strokeWidth?: number;
2144
+ }
2145
+ /**
2146
+ * Check icon component - displays a checkmark in a green gradient circle.
2147
+ *
2148
+ * This icon uses `currentColor`, so it can be styled with Tailwind classes.
2149
+ *
2150
+ * @example
2151
+ * ```tsx
2152
+ * import { CheckIcon } from '@scalably/ui';
2153
+ *
2154
+ * <CheckIcon size={24} className="sui-text-primary" />
2155
+ * ```
2156
+ */
2157
+ declare const CheckIcon: react.MemoExoticComponent<react.ForwardRefExoticComponent<Omit<CheckIconProps, "ref"> & react.RefAttributes<SVGSVGElement>>>;
2158
+
2159
+ /**
2160
+ * Props for the CloseIcon component
2161
+ */
2162
+ interface CloseIconProps extends React.SVGProps<SVGSVGElement> {
2163
+ /** Size of the icon in pixels. Defaults to 24. */
2164
+ size?: number;
2165
+ /** Additional CSS classes to apply to the icon */
2166
+ className?: string;
2167
+ /** Stroke width of the icon in pixels. Defaults to 1.5. */
2168
+ strokeWidth?: number;
2169
+ }
2170
+ /**
2171
+ * Close icon component - displays a cross icon.
2172
+ *
2173
+ * This icon uses `currentColor`, so it can be styled with Tailwind classes.
2174
+ *
2175
+ * @example
2176
+ * ```tsx
2177
+ * import { CloseIcon } from '@scalably/ui';
2178
+ *
2179
+ * <CloseIcon size={24} className="sui-text-primary" />
2180
+ * ```
2181
+ */
2182
+ declare const CloseIcon: react.MemoExoticComponent<react.ForwardRefExoticComponent<Omit<CloseIconProps, "ref"> & react.RefAttributes<SVGSVGElement>>>;
2183
+
2184
+ interface DropdownIconProps extends React.SVGProps<SVGSVGElement> {
2185
+ /** Size of the icon in pixels. Defaults to 24. */
2186
+ size?: number;
2187
+ /** Additional CSS classes to apply to the icon */
2188
+ className?: string;
2189
+ /** Stroke width of the icon in pixels. Defaults to 2. */
2190
+ strokeWidth?: number;
2191
+ }
2192
+ /**
2193
+ * Dropdown icon component - displays a down arrow icon.
2194
+ *
2195
+ * This icon uses `currentColor`, so it can be styled with Tailwind classes.
2196
+ *
2197
+ * @example
2198
+ * ```tsx
2199
+ * import { DropdownIcon } from '@scalably/ui';
2200
+ *
2201
+ * <DropdownIcon size={24} className="sui-text-primary" />
2202
+ * ```
2203
+ */
2204
+ declare const DropdownIcon: react.MemoExoticComponent<react.ForwardRefExoticComponent<Omit<DropdownIconProps, "ref"> & react.RefAttributes<SVGSVGElement>>>;
2205
+
2206
+ interface DropUpIconProps extends React.SVGProps<SVGSVGElement> {
2207
+ /** Size of the icon in pixels. Defaults to 24. */
2208
+ size?: number;
2209
+ /** Additional CSS classes to apply to the icon */
2210
+ className?: string;
2211
+ /** Stroke width of the icon in pixels. Defaults to 2. */
2212
+ strokeWidth?: number;
2213
+ }
2214
+ /**
2215
+ * DropUp icon component - displays an up arrow icon.
2216
+ *
2217
+ * This icon uses `currentColor`, so it can be styled with Tailwind classes.
2218
+ *
2219
+ * @example
2220
+ * ```tsx
2221
+ * import { DropUpIcon } from '@scalably/ui';
2222
+ *
2223
+ * <DropUpIcon size={24} className="sui-text-primary" />
2224
+ * ```
2225
+ */
2226
+ declare const DropUpIcon: react.MemoExoticComponent<react.ForwardRefExoticComponent<Omit<DropUpIconProps, "ref"> & react.RefAttributes<SVGSVGElement>>>;
2227
+
2228
+ interface ErrorIconProps extends React.SVGProps<SVGSVGElement> {
2229
+ /** Size of the icon in pixels. Defaults to 24. */
2230
+ size?: number;
2231
+ /** Additional CSS classes to apply to the icon */
2232
+ className?: string;
2233
+ /** Stroke width of the icon in pixels. Defaults to 1.5. */
2234
+ strokeWidth?: number;
2235
+ }
2236
+ /**
2237
+ * Error icon component - displays an error icon.
2238
+ *
2239
+ * This icon uses `currentColor`, so it can be styled with Tailwind classes.
2240
+ *
2241
+ * @example
2242
+ * ```tsx
2243
+ * import { ErrorIcon } from '@scalably/ui';
2244
+ *
2245
+ * <ErrorIcon size={24} className="sui-text-primary" />
2246
+ * ```
2247
+ */
2248
+ declare const ErrorIcon: react.MemoExoticComponent<react.ForwardRefExoticComponent<Omit<ErrorIconProps, "ref"> & react.RefAttributes<SVGSVGElement>>>;
2249
+
2250
+ interface FileIconProps extends React.SVGProps<SVGSVGElement> {
2251
+ /** Size of the icon in pixels. Defaults to 24. */
2252
+ size?: number;
2253
+ /** Additional CSS classes to apply to the icon */
2254
+ className?: string;
2255
+ }
2256
+ /**
2257
+ * File icon component - displays a file icon.
2258
+ *
2259
+ * This icon uses `currentColor`, so it can be styled with Tailwind classes.
2260
+ *
2261
+ * @example
2262
+ * ```tsx
2263
+ * import { FileIcon } from '@scalably/ui';
2264
+ *
2265
+ * <FileIcon size={24} className="sui-text-primary" />
2266
+ * ```
2267
+ */
2268
+ declare const FileIcon: react.MemoExoticComponent<react.ForwardRefExoticComponent<Omit<FileIconProps, "ref"> & react.RefAttributes<SVGSVGElement>>>;
2269
+
2270
+ interface FileUploadIconProps extends React.SVGProps<SVGSVGElement> {
2271
+ /** Size of the icon in pixels. Defaults to 24. */
2272
+ size?: number;
2273
+ /** Stroke width of the icon in pixels. Defaults to 1.5. */
2274
+ strokeWidth?: number;
2275
+ /** Additional CSS classes to apply to the icon */
2276
+ className?: string;
2277
+ }
2278
+ /**
2279
+ * FileUpload icon component - displays a file upload icon.
2280
+ *
2281
+ * This icon uses `currentColor`, so it can be styled with Tailwind classes.
2282
+ *
2283
+ * @example
2284
+ * ```tsx
2285
+ * import { FileUploadIcon } from '@scalably/ui';
2286
+ *
2287
+ * <FileUploadIcon size={24} className="sui-text-primary" />
2288
+ * ```
2289
+ */
2290
+ declare const FileUploadIcon: react.MemoExoticComponent<react.ForwardRefExoticComponent<Omit<FileUploadIconProps, "ref"> & react.RefAttributes<SVGSVGElement>>>;
2291
+
2292
+ interface GridIconProps extends React.SVGProps<SVGSVGElement> {
2293
+ /** Size of the icon in pixels. Defaults to 24. */
2294
+ size?: number;
2295
+ /** Additional CSS classes to apply to the icon */
2296
+ className?: string;
2297
+ /** Stroke width of the icon in pixels. Defaults to 1.5. */
2298
+ strokeWidth?: number;
2299
+ }
2300
+ /**
2301
+ * Grid icon component - displays a grid icon.
2302
+ *
2303
+ * This icon uses `currentColor`, so it can be styled with Tailwind classes.
2304
+ *
2305
+ * @example
2306
+ * ```tsx
2307
+ * import { GridIcon } from '@scalably/ui';
2308
+ *
2309
+ * <GridIcon size={24} className="sui-text-primary" />
2310
+ * ```
2311
+ */
2312
+ declare const GridIcon: react.MemoExoticComponent<react.ForwardRefExoticComponent<Omit<GridIconProps, "ref"> & react.RefAttributes<SVGSVGElement>>>;
2313
+
2314
+ interface ImageIconProps extends React.SVGProps<SVGSVGElement> {
2315
+ /** Size of the icon in pixels. Defaults to 24. */
2316
+ size?: number;
2317
+ /** Additional CSS classes to apply to the icon */
2318
+ className?: string;
2319
+ }
2320
+ /**
2321
+ * Image icon component - displays an image icon.
2322
+ *
2323
+ * This icon uses `currentColor`, so it can be styled with Tailwind classes.
2324
+ *
2325
+ * @example
2326
+ * ```tsx
2327
+ * import { ImageIcon } from '@scalably/ui';
2328
+ *
2329
+ * <ImageIcon size={24} className="sui-text-primary" />
2330
+ * ```
2331
+ */
2332
+ declare const ImageIcon: react.MemoExoticComponent<react.ForwardRefExoticComponent<Omit<ImageIconProps, "ref"> & react.RefAttributes<SVGSVGElement>>>;
2333
+
2334
+ interface ImageUploadIconProps extends React.SVGProps<SVGSVGElement> {
2335
+ /** Size of the icon in pixels. Defaults to 24. */
2336
+ size?: number;
2337
+ /** Stroke width of the icon in pixels. Defaults to 1.5. */
2338
+ strokeWidth?: number;
2339
+ /** Additional CSS classes to apply to the icon */
2340
+ className?: string;
2341
+ }
2342
+ /**
2343
+ * ImageUpload icon component - displays an image upload icon.
2344
+ *
2345
+ * This icon uses `currentColor`, so it can be styled with Tailwind classes.
2346
+ *
2347
+ * @example
2348
+ * ```tsx
2349
+ * import { ImageUploadIcon } from '@scalably/ui';
2350
+ *
2351
+ * <ImageUploadIcon size={24} className="sui-text-primary" />
2352
+ * ```
2353
+ */
2354
+ declare const ImageUploadIcon: react.MemoExoticComponent<react.ForwardRefExoticComponent<Omit<ImageUploadIconProps, "ref"> & react.RefAttributes<SVGSVGElement>>>;
2355
+
2356
+ interface IndeterminateIconProps extends React.SVGProps<SVGSVGElement> {
2357
+ /** Size of the icon in pixels. Defaults to 20. */
2358
+ size?: number;
2359
+ /** Additional CSS classes to apply to the icon */
2360
+ className?: string;
2361
+ /** Stroke width of the icon in pixels. Defaults to 2. */
2362
+ strokeWidth?: number;
2363
+ }
2364
+ /**
2365
+ * Indeterminate icon component - displays an indeterminate icon.
2366
+ *
2367
+ * This icon uses `currentColor`, so it can be styled with Tailwind classes.
2368
+ *
2369
+ * @example
2370
+ * ```tsx
2371
+ * import { IndeterminateIcon } from '@scalably/ui';
2372
+ *
2373
+ * <IndeterminateIcon size={20} className="sui-text-primary" />
2374
+ * ```
2375
+ */
2376
+ declare const IndeterminateIcon: react.MemoExoticComponent<react.ForwardRefExoticComponent<Omit<IndeterminateIconProps, "ref"> & react.RefAttributes<SVGSVGElement>>>;
2377
+
2378
+ interface InfoIconProps extends React.SVGProps<SVGSVGElement> {
2379
+ /** Size of the icon in pixels. Defaults to 24. */
2380
+ size?: number;
2381
+ /** Additional CSS classes to apply to the icon */
2382
+ className?: string;
2383
+ /** Stroke width of the icon in pixels. Defaults to 1.5. */
2384
+ strokeWidth?: number;
2385
+ }
2386
+ /**
2387
+ * Info icon component - displays an info icon.
2388
+ *
2389
+ * This icon uses `currentColor`, so it can be styled with Tailwind classes.
2390
+ *
2391
+ * @example
2392
+ * ```tsx
2393
+ * import { InfoIcon } from '@scalably/ui';
2394
+ *
2395
+ * <InfoIcon size={24} className="sui-text-primary" />
2396
+ * ```
2397
+ */
2398
+ declare const InfoIcon: react.MemoExoticComponent<react.ForwardRefExoticComponent<Omit<InfoIconProps, "ref"> & react.RefAttributes<SVGSVGElement>>>;
2399
+
2400
+ interface ListIconProps extends React.SVGProps<SVGSVGElement> {
2401
+ /** Size of the icon in pixels. Defaults to 24. */
2402
+ size?: number;
2403
+ /** Additional CSS classes to apply to the icon */
2404
+ className?: string;
2405
+ /** Stroke width of the icon in pixels. Defaults to 1.5. */
2406
+ strokeWidth?: number;
2407
+ }
2408
+ /**
2409
+ * List icon component - displays a list icon.
2410
+ *
2411
+ * This icon uses `currentColor`, so it can be styled with Tailwind classes.
2412
+ *
2413
+ * @example
2414
+ * ```tsx
2415
+ * import { ListIcon } from '@scalably/ui';
2416
+ *
2417
+ * <ListIcon size={24} className="sui-text-primary" />
2418
+ * ```
2419
+ */
2420
+ declare const ListIcon: react.MemoExoticComponent<react.ForwardRefExoticComponent<Omit<ListIconProps, "ref"> & react.RefAttributes<SVGSVGElement>>>;
2421
+
2422
+ interface MinusIconProps extends React.SVGProps<SVGSVGElement> {
2423
+ /** Size of the icon in pixels. Defaults to 16. */
2424
+ size?: number;
2425
+ /** Additional CSS classes to apply to the icon */
2426
+ className?: string;
2427
+ /** Stroke width of the icon in pixels. Defaults to 1.5. */
2428
+ strokeWidth?: number;
2429
+ }
2430
+ /**
2431
+ * Minus icon component - displays a minus icon.
2432
+ *
2433
+ * This icon uses `currentColor`, so it can be styled with Tailwind classes.
2434
+ *
2435
+ * @example
2436
+ * ```tsx
2437
+ * import { MinusIcon } from '@scalably/ui';
2438
+ *
2439
+ * <MinusIcon size={16} className="sui-text-primary" />
2440
+ * ```
2441
+ */
2442
+ declare const MinusIcon: react.MemoExoticComponent<react.ForwardRefExoticComponent<Omit<MinusIconProps, "ref"> & react.RefAttributes<SVGSVGElement>>>;
2443
+
2444
+ interface MultipleSelectionIconProps extends React.SVGProps<SVGSVGElement> {
2445
+ /** Size of the icon in pixels. Defaults to 24. */
2446
+ size?: number;
2447
+ /** Additional CSS classes to apply to the icon */
2448
+ className?: string;
2449
+ }
2450
+ /**
2451
+ * MultipleSelection icon component - displays a multiple selection icon.
2452
+ *
2453
+ * This icon uses `currentColor`, so it can be styled with Tailwind classes.
2454
+ *
2455
+ * @example
2456
+ * ```tsx
2457
+ * import { MultipleSelectionIcon } from '@scalably/ui';
2458
+ *
2459
+ * <MultipleSelectionIcon size={24} className="sui-text-primary" />
2460
+ * ```
2461
+ */
2462
+ declare const MultipleSelectionIcon: react.MemoExoticComponent<react.ForwardRefExoticComponent<Omit<MultipleSelectionIconProps, "ref"> & react.RefAttributes<SVGSVGElement>>>;
2463
+
2464
+ /**
2465
+ * Props for the PlusIcon component
2466
+ */
2467
+ interface PlusIconProps extends React.SVGProps<SVGSVGElement> {
2468
+ /** Size of the icon in pixels. Defaults to 16. */
2469
+ size?: number;
2470
+ /** Additional CSS classes to apply to the icon */
2471
+ className?: string;
2472
+ /** Stroke width of the icon in pixels. Defaults to 1.5. */
2473
+ strokeWidth?: number;
2474
+ }
2475
+ /**
2476
+ * Plus icon component - displays a plus icon.
2477
+ *
2478
+ * This icon uses `currentColor`, so it can be styled with Tailwind classes.
2479
+ *
2480
+ * @example
2481
+ * ```tsx
2482
+ * import { PlusIcon } from '@scalably/ui';
2483
+ *
2484
+ * <PlusIcon size={16} className="sui-text-primary" />
2485
+ * ```
2486
+ */
2487
+ declare const PlusIcon: react.MemoExoticComponent<react.ForwardRefExoticComponent<Omit<PlusIconProps, "ref"> & react.RefAttributes<SVGSVGElement>>>;
2488
+
2489
+ /**
2490
+ * Props for the SearchIcon component
2491
+ */
2492
+ interface SearchIconProps extends React.SVGProps<SVGSVGElement> {
2493
+ /** Size of the icon in pixels. Defaults to 24. */
2494
+ size?: number;
2495
+ /** Additional CSS classes to apply to the icon */
2496
+ className?: string;
2497
+ /** Stroke width of the icon in pixels. Defaults to 1.5. */
2498
+ strokeWidth?: number;
2499
+ }
2500
+ /**
2501
+ * Search icon component - a magnifying glass icon for search functionality.
2502
+ *
2503
+ * This icon uses `currentColor`, so it can be styled with Tailwind classes.
2504
+ *
2505
+ * @example
2506
+ * ```tsx
2507
+ * import { SearchIcon } from '@scalably/ui';
2508
+ *
2509
+ * <SearchIcon size={20} className="sui-text-blue-500" />
2510
+ * ```
2511
+ */
2512
+ declare const SearchIcon: react.MemoExoticComponent<react.ForwardRefExoticComponent<Omit<SearchIconProps, "ref"> & react.RefAttributes<SVGSVGElement>>>;
2513
+
2514
+ interface SettingsIconProps extends React.SVGProps<SVGSVGElement> {
2515
+ /** Size of the icon in pixels. Defaults to 24. */
2516
+ size?: number;
2517
+ /** Additional CSS classes to apply to the icon */
2518
+ className?: string;
2519
+ /** Stroke width of the icon in pixels. Defaults to 1.5. */
2520
+ strokeWidth?: number;
2521
+ }
2522
+ /**
2523
+ * Settings icon component - displays a settings icon.
2524
+ *
2525
+ * This icon uses `currentColor`, so it can be styled with Tailwind classes.
2526
+ *
2527
+ * @example
2528
+ * ```tsx
2529
+ * import { SettingsIcon } from '@scalably/ui';
2530
+ *
2531
+ * <SettingsIcon size={24} className="sui-text-primary" />
2532
+ * ```
2533
+ */
2534
+ declare const SettingsIcon: react.MemoExoticComponent<react.ForwardRefExoticComponent<Omit<SettingsIconProps, "ref"> & react.RefAttributes<SVGSVGElement>>>;
2535
+
2536
+ /**
2537
+ * Props for the SuccessIcon component
2538
+ */
2539
+ interface SuccessIconProps extends React.SVGProps<SVGSVGElement> {
2540
+ /** Size of the icon in pixels. Defaults to 24. */
2541
+ size?: number;
2542
+ /** Additional CSS classes to apply to the icon */
2543
+ className?: string;
2544
+ /** Stroke width of the icon in pixels. Defaults to 1.5. */
2545
+ strokeWidth?: number;
2546
+ }
2547
+ /**
2548
+ * Success icon component - displays a checkmark in a green gradient circle.
2549
+ *
2550
+ * **Note:** This icon has fixed brand colors (green gradient with white checkmark)
2551
+ * and cannot be customized. Use for success/confirmation states.
2552
+ *
2553
+ * @example
2554
+ * ```tsx
2555
+ * import { SuccessIcon } from '@scalably/ui';
2556
+ *
2557
+ * <SuccessIcon size={24} />
2558
+ * ```
2559
+ */
2560
+ declare const SuccessIcon: react.MemoExoticComponent<react.ForwardRefExoticComponent<Omit<SuccessIconProps, "ref"> & react.RefAttributes<SVGSVGElement>>>;
2561
+
2562
+ interface TickIconProps extends React.SVGProps<SVGSVGElement> {
2563
+ /** Size of the icon in pixels. Defaults to 16. */
2564
+ size?: number;
2565
+ /** Additional CSS classes to apply to the icon */
2566
+ className?: string;
2567
+ /** Stroke width of the icon in pixels. Defaults to 1.5. */
2568
+ strokeWidth?: number;
2569
+ }
2570
+ /**
2571
+ * Tick icon component - displays a tick icon.
2572
+ *
2573
+ * This icon uses `currentColor`, so it can be styled with Tailwind classes.
2574
+ *
2575
+ * @example
2576
+ * ```tsx
2577
+ * import { TickIcon } from '@scalably/ui';
2578
+ *
2579
+ * <TickIcon size={16} className="sui-text-primary" />
2580
+ * ```
2581
+ */
2582
+ declare const TickIcon: react.MemoExoticComponent<react.ForwardRefExoticComponent<Omit<TickIconProps, "ref"> & react.RefAttributes<SVGSVGElement>>>;
2583
+
2584
+ interface ToFirstIconProps extends React.SVGProps<SVGSVGElement> {
2585
+ /** Size of the icon in pixels. Defaults to 24. */
2586
+ size?: number;
2587
+ /** Additional CSS classes to apply to the icon */
2588
+ className?: string;
2589
+ /** Stroke width of the icon in pixels. Defaults to 1.5. */
2590
+ strokeWidth?: number;
2591
+ }
2592
+ /**
2593
+ * ToFirst icon component - displays a to first icon.
2594
+ *
2595
+ * This icon uses `currentColor`, so it can be styled with Tailwind classes.
2596
+ *
2597
+ * @example
2598
+ * ```tsx
2599
+ * import { ToFirstIcon } from '@scalably/ui';
2600
+ *
2601
+ * <ToFirstIcon size={24} className="sui-text-primary" />
2602
+ * ```
2603
+ */
2604
+ declare const ToFirstIcon: react.MemoExoticComponent<react.ForwardRefExoticComponent<Omit<ToFirstIconProps, "ref"> & react.RefAttributes<SVGSVGElement>>>;
2605
+
2606
+ interface ToLastIconProps extends React.SVGProps<SVGSVGElement> {
2607
+ /** Size of the icon in pixels. Defaults to 24. */
2608
+ size?: number;
2609
+ /** Additional CSS classes to apply to the icon */
2610
+ className?: string;
2611
+ /** Stroke width of the icon in pixels. Defaults to 1.5. */
2612
+ strokeWidth?: number;
2613
+ }
2614
+ /**
2615
+ * ToLast icon component - displays a to last icon.
2616
+ *
2617
+ * This icon uses `currentColor`, so it can be styled with Tailwind classes.
2618
+ *
2619
+ * @example
2620
+ * ```tsx
2621
+ * import { ToLastIcon } from '@scalably/ui';
2622
+ *
2623
+ * <ToLastIcon size={24} className="sui-text-primary" />
2624
+ * ```
2625
+ */
2626
+ declare const ToLastIcon: react.MemoExoticComponent<react.ForwardRefExoticComponent<Omit<ToLastIconProps, "ref"> & react.RefAttributes<SVGSVGElement>>>;
2627
+
2628
+ interface ToNextIconProps extends React.SVGProps<SVGSVGElement> {
2629
+ /** Size of the icon in pixels. Defaults to 24. */
2630
+ size?: number;
2631
+ /** Additional CSS classes to apply to the icon */
2632
+ className?: string;
2633
+ /** Stroke width of the icon in pixels. Defaults to 1.5. */
2634
+ strokeWidth?: number;
2635
+ }
2636
+ /**
2637
+ * ToNext icon component - displays a to next icon.
2638
+ *
2639
+ * This icon uses `currentColor`, so it can be styled with Tailwind classes.
2640
+ *
2641
+ * @example
2642
+ * ```tsx
2643
+ * import { ToNextIcon } from '@scalably/ui';
2644
+ *
2645
+ * <ToNextIcon size={24} className="sui-text-primary" />
2646
+ * ```
2647
+ */
2648
+ declare const ToNextIcon: react.MemoExoticComponent<react.ForwardRefExoticComponent<Omit<ToNextIconProps, "ref"> & react.RefAttributes<SVGSVGElement>>>;
2649
+
2650
+ interface ToPreviousIconProps extends React.SVGProps<SVGSVGElement> {
2651
+ /** Size of the icon in pixels. Defaults to 24. */
2652
+ size?: number;
2653
+ /** Additional CSS classes to apply to the icon */
2654
+ className?: string;
2655
+ /** Stroke width of the icon in pixels. Defaults to 1.5. */
2656
+ strokeWidth?: number;
2657
+ }
2658
+ /**
2659
+ * ToPrevious icon component - displays a to previous icon.
2660
+ *
2661
+ * This icon uses `currentColor`, so it can be styled with Tailwind classes.
2662
+ *
2663
+ * @example
2664
+ * ```tsx
2665
+ * import { ToPreviousIcon } from '@scalably/ui';
2666
+ *
2667
+ * <ToPreviousIcon size={24} className="sui-text-primary" />
2668
+ * ```
2669
+ */
2670
+ declare const ToPreviousIcon: react.MemoExoticComponent<react.ForwardRefExoticComponent<Omit<ToPreviousIconProps, "ref"> & react.RefAttributes<SVGSVGElement>>>;
2671
+
2672
+ interface VideoIconProps extends React.SVGProps<SVGSVGElement> {
2673
+ /** Size of the icon in pixels. Defaults to 24. */
2674
+ size?: number;
2675
+ /** Additional CSS classes to apply to the icon */
2676
+ className?: string;
2677
+ }
2678
+ /**
2679
+ * Video icon component - displays a video icon.
2680
+ *
2681
+ * This icon uses `currentColor`, so it can be styled with Tailwind classes.
2682
+ *
2683
+ * @example
2684
+ * ```tsx
2685
+ * import { VideoIcon } from '@scalably/ui';
2686
+ *
2687
+ * <VideoIcon size={24} className="sui-text-primary" />
2688
+ * ```
2689
+ */
2690
+ declare const VideoIcon: react.MemoExoticComponent<react.ForwardRefExoticComponent<Omit<VideoIconProps, "ref"> & react.RefAttributes<SVGSVGElement>>>;
2691
+
2692
+ interface VideoUploadIconProps extends React.SVGProps<SVGSVGElement> {
2693
+ /** Size of the icon in pixels. Defaults to 24. */
2694
+ size?: number;
2695
+ /** Stroke width of the icon in pixels. Defaults to 1.5. */
2696
+ strokeWidth?: number;
2697
+ /** Additional CSS classes to apply to the icon */
2698
+ className?: string;
2699
+ }
2700
+ /**
2701
+ * VideoUpload icon component - displays a video upload icon.
2702
+ *
2703
+ * This icon uses `currentColor`, so it can be styled with Tailwind classes.
2704
+ *
2705
+ * @example
2706
+ * ```tsx
2707
+ * import { VideoUploadIcon } from '@scalably/ui';
2708
+ *
2709
+ * <VideoUploadIcon size={24} className="sui-text-primary" />
2710
+ * ```
2711
+ */
2712
+ declare const VideoUploadIcon: react.MemoExoticComponent<react.ForwardRefExoticComponent<Omit<VideoUploadIconProps, "ref"> & react.RefAttributes<SVGSVGElement>>>;
2713
+
2714
+ interface WarnIconProps extends React.SVGProps<SVGSVGElement> {
2715
+ /** Size of the icon in pixels. Defaults to 24. */
2716
+ size?: number;
2717
+ /** Additional CSS classes to apply to the icon */
2718
+ className?: string;
2719
+ /** Stroke width of the icon in pixels. Defaults to 1.5. */
2720
+ strokeWidth?: number;
2721
+ }
2722
+ /**
2723
+ * Warn icon component - displays a warn icon.
2724
+ *
2725
+ * This icon uses `currentColor`, so it can be styled with Tailwind classes.
2726
+ *
2727
+ * @example
2728
+ * ```tsx
2729
+ * import { WarnIcon } from '@scalably/ui';
2730
+ *
2731
+ * <WarnIcon size={24} className="sui-text-primary" />
2732
+ * ```
2733
+ */
2734
+ declare const WarnIcon: react.MemoExoticComponent<react.ForwardRefExoticComponent<Omit<WarnIconProps, "ref"> & react.RefAttributes<SVGSVGElement>>>;
2735
+
2736
+ /**
2737
+ * Props for the DiscordIcon component
2738
+ */
2739
+ interface DiscordIconProps extends React.SVGProps<SVGSVGElement> {
2740
+ /** Size of the icon in pixels. Defaults to 32. */
2741
+ size?: number;
2742
+ /** Additional CSS classes to apply to the icon */
2743
+ className?: string;
2744
+ }
2745
+ /**
2746
+ * Discord icon component - displays the Discord logo.
2747
+ *
2748
+ * This icon uses `currentColor`, so it can be styled with Tailwind classes.
2749
+ *
2750
+ * @example
2751
+ * ```tsx
2752
+ * import { DiscordIcon } from '@scalably/ui';
2753
+ *
2754
+ * <DiscordIcon size={32} className="sui-text-primary" />
2755
+ * ```
2756
+ */
2757
+ declare const DiscordIcon: react.MemoExoticComponent<react.ForwardRefExoticComponent<Omit<DiscordIconProps, "ref"> & react.RefAttributes<SVGSVGElement>>>;
2758
+
2759
+ interface FacebookIconProps extends React.SVGProps<SVGSVGElement> {
2760
+ /** Size of the icon in pixels. Defaults to 32. */
2761
+ size?: number;
2762
+ /** Additional CSS classes to apply to the icon */
2763
+ className?: string;
2764
+ }
2765
+ /**
2766
+ * Facebook icon component - displays the Facebook logo.
2767
+ *
2768
+ * This icon uses `currentColor`, so it can be styled with Tailwind classes.
2769
+ *
2770
+ * @example
2771
+ * ```tsx
2772
+ * import { FacebookIcon } from '@scalably/ui';
2773
+ *
2774
+ * <FacebookIcon size={32} className="sui-text-primary" />
2775
+ * ```
2776
+ */
2777
+ declare const FacebookIcon: react.MemoExoticComponent<react.ForwardRefExoticComponent<Omit<FacebookIconProps, "ref"> & react.RefAttributes<SVGSVGElement>>>;
2778
+
2779
+ interface GmailIconProps extends React.SVGProps<SVGSVGElement> {
2780
+ /** Size of the icon in pixels. Defaults to 32. */
2781
+ size?: number;
2782
+ /** Additional CSS classes to apply to the icon */
2783
+ className?: string;
2784
+ }
2785
+ /**
2786
+ * Gmail icon component - displays the Gmail logo.
2787
+ *
2788
+ * This icon uses `currentColor`, so it can be styled with Tailwind classes.
2789
+ *
2790
+ * @example
2791
+ * ```tsx
2792
+ * import { GmailIcon } from '@scalably/ui';
2793
+ *
2794
+ * <GmailIcon size={32} className="sui-text-primary" />
2795
+ * ```
2796
+ */
2797
+ declare const GmailIcon: react.MemoExoticComponent<react.ForwardRefExoticComponent<Omit<GmailIconProps, "ref"> & react.RefAttributes<SVGSVGElement>>>;
2798
+
2799
+ interface InstagramIconProps extends React.SVGProps<SVGSVGElement> {
2800
+ /** Size of the icon in pixels. Defaults to 32. */
2801
+ size?: number;
2802
+ /** Additional CSS classes to apply to the icon */
2803
+ className?: string;
2804
+ }
2805
+ /**
2806
+ * Instagram icon component - displays the Instagram logo.
2807
+ *
2808
+ * This icon uses `currentColor`, so it can be styled with Tailwind classes.
2809
+ *
2810
+ * @example
2811
+ * ```tsx
2812
+ * import { InstagramIcon } from '@scalably/ui';
2813
+ *
2814
+ * <InstagramIcon size={32} className="sui-text-primary" />
2815
+ * ```
2816
+ */
2817
+ declare const InstagramIcon: react.MemoExoticComponent<react.ForwardRefExoticComponent<Omit<InstagramIconProps, "ref"> & react.RefAttributes<SVGSVGElement>>>;
2818
+
2819
+ interface KakaoTalkIconProps extends React.SVGProps<SVGSVGElement> {
2820
+ /** Size of the icon in pixels. Defaults to 32. */
2821
+ size?: number;
2822
+ /** Additional CSS classes to apply to the icon */
2823
+ className?: string;
2824
+ }
2825
+ /**
2826
+ * KakaoTalk icon component - displays the KakaoTalk logo.
2827
+ *
2828
+ * This icon uses `currentColor`, so it can be styled with Tailwind classes.
2829
+ *
2830
+ * @example
2831
+ * ```tsx
2832
+ * import { KakaoTalkIcon } from '@scalably/ui';
2833
+ *
2834
+ * <KakaoTalkIcon size={32} className="sui-text-primary" />
2835
+ * ```
2836
+ */
2837
+ declare const KakaoTalkIcon: react.MemoExoticComponent<react.ForwardRefExoticComponent<Omit<KakaoTalkIconProps, "ref"> & react.RefAttributes<SVGSVGElement>>>;
2838
+
2839
+ interface LineIconProps extends React.SVGProps<SVGSVGElement> {
2840
+ /** Size of the icon in pixels. Defaults to 32. */
2841
+ size?: number;
2842
+ /** Additional CSS classes to apply to the icon */
2843
+ className?: string;
2844
+ }
2845
+ /**
2846
+ * Line icon component - displays the Line logo.
2847
+ *
2848
+ * This icon uses `currentColor`, so it can be styled with Tailwind classes.
2849
+ *
2850
+ * @example
2851
+ * ```tsx
2852
+ * import { LineIcon } from '@scalably/ui';
2853
+ *
2854
+ * <LineIcon size={32} className="sui-text-primary" />
2855
+ * ```
2856
+ */
2857
+ declare const LineIcon: react.MemoExoticComponent<react.ForwardRefExoticComponent<Omit<LineIconProps, "ref"> & react.RefAttributes<SVGSVGElement>>>;
2858
+
2859
+ interface LinkedInIconProps extends React.SVGProps<SVGSVGElement> {
2860
+ /** Size of the icon in pixels. Defaults to 32. */
2861
+ size?: number;
2862
+ /** Additional CSS classes to apply to the icon */
2863
+ className?: string;
2864
+ }
2865
+ /**
2866
+ * LinkedIn icon component - displays the LinkedIn logo.
2867
+ *
2868
+ * This icon uses `currentColor`, so it can be styled with Tailwind classes.
2869
+ *
2870
+ * @example
2871
+ * ```tsx
2872
+ * import { LinkedInIcon } from '@scalably/ui';
2873
+ *
2874
+ * <LinkedInIcon size={32} className="sui-text-primary" />
2875
+ * ```
2876
+ */
2877
+ declare const LinkedInIcon: react.MemoExoticComponent<react.ForwardRefExoticComponent<Omit<LinkedInIconProps, "ref"> & react.RefAttributes<SVGSVGElement>>>;
2878
+
2879
+ interface MessengerIconProps extends React.SVGProps<SVGSVGElement> {
2880
+ /** Size of the icon in pixels. Defaults to 32. */
2881
+ size?: number;
2882
+ /** Additional CSS classes to apply to the icon */
2883
+ className?: string;
2884
+ }
2885
+ /**
2886
+ * Messenger icon component - displays the Messenger logo.
2887
+ *
2888
+ * This icon uses `currentColor`, so it can be styled with Tailwind classes.
2889
+ *
2890
+ * @example
2891
+ * ```tsx
2892
+ * import { MessengerIcon } from '@scalably/ui';
2893
+ *
2894
+ * <MessengerIcon size={32} className="sui-text-primary" />
2895
+ * ```
2896
+ */
2897
+ declare const MessengerIcon: react.MemoExoticComponent<react.ForwardRefExoticComponent<Omit<MessengerIconProps, "ref"> & react.RefAttributes<SVGSVGElement>>>;
2898
+
2899
+ interface RedditIconProps extends React.SVGProps<SVGSVGElement> {
2900
+ /** Size of the icon in pixels. Defaults to 32. */
2901
+ size?: number;
2902
+ /** Additional CSS classes to apply to the icon */
2903
+ className?: string;
2904
+ }
2905
+ /**
2906
+ * Reddit icon component - displays the Reddit logo.
2907
+ *
2908
+ * This icon uses `currentColor`, so it can be styled with Tailwind classes.
2909
+ *
2910
+ * @example
2911
+ * ```tsx
2912
+ * import { RedditIcon } from '@scalably/ui';
2913
+ *
2914
+ * <RedditIcon size={32} className="sui-text-primary" />
2915
+ * ```
2916
+ */
2917
+ declare const RedditIcon: react.MemoExoticComponent<react.ForwardRefExoticComponent<Omit<RedditIconProps, "ref"> & react.RefAttributes<SVGSVGElement>>>;
2918
+
2919
+ interface SignalIconProps extends React.SVGProps<SVGSVGElement> {
2920
+ /** Size of the icon in pixels. Defaults to 32. */
2921
+ size?: number;
2922
+ /** Additional CSS classes to apply to the icon */
2923
+ className?: string;
2924
+ }
2925
+ /**
2926
+ * Signal icon component - displays the Signal logo.
2927
+ *
2928
+ * This icon uses `currentColor`, so it can be styled with Tailwind classes.
2929
+ *
2930
+ * @example
2931
+ * ```tsx
2932
+ * import { SignalIcon } from '@scalably/ui';
2933
+ *
2934
+ * <SignalIcon size={32} className="sui-text-primary" />
2935
+ * ```
2936
+ */
2937
+ declare const SignalIcon: react.MemoExoticComponent<react.ForwardRefExoticComponent<Omit<SignalIconProps, "ref"> & react.RefAttributes<SVGSVGElement>>>;
2938
+
2939
+ interface SlackIconProps extends React.SVGProps<SVGSVGElement> {
2940
+ /** Size of the icon in pixels. Defaults to 32. */
2941
+ size?: number;
2942
+ /** Additional CSS classes to apply to the icon */
2943
+ className?: string;
2944
+ }
2945
+ /**
2946
+ * Slack icon component - displays the Slack logo.
2947
+ *
2948
+ * This icon uses `currentColor`, so it can be styled with Tailwind classes.
2949
+ *
2950
+ * @example
2951
+ * ```tsx
2952
+ * import { SlackIcon } from '@scalably/ui';
2953
+ *
2954
+ * <SlackIcon size={32} className="sui-text-primary" />
2955
+ * ```
2956
+ */
2957
+ declare const SlackIcon: react.MemoExoticComponent<react.ForwardRefExoticComponent<Omit<SlackIconProps, "ref"> & react.RefAttributes<SVGSVGElement>>>;
2958
+
2959
+ interface TelegramIconProps extends React.SVGProps<SVGSVGElement> {
2960
+ /** Size of the icon in pixels. Defaults to 32. */
2961
+ size?: number;
2962
+ /** Additional CSS classes to apply to the icon */
2963
+ className?: string;
2964
+ }
2965
+ /**
2966
+ * Telegram icon component - displays the Telegram logo.
2967
+ *
2968
+ * This icon uses `currentColor`, so it can be styled with Tailwind classes.
2969
+ *
2970
+ * @example
2971
+ * ```tsx
2972
+ * import { TelegramIcon } from '@scalably/ui';
2973
+ *
2974
+ * <TelegramIcon size={32} className="sui-text-primary" />
2975
+ * ```
2976
+ */
2977
+ declare const TelegramIcon: react.MemoExoticComponent<react.ForwardRefExoticComponent<Omit<TelegramIconProps, "ref"> & react.RefAttributes<SVGSVGElement>>>;
2978
+
2979
+ interface TiktokIconProps extends React.SVGProps<SVGSVGElement> {
2980
+ /** Size of the icon in pixels. Defaults to 32. */
2981
+ size?: number;
2982
+ /** Additional CSS classes to apply to the icon */
2983
+ className?: string;
2984
+ }
2985
+ /**
2986
+ * Tiktok icon component - displays the Tiktok logo.
2987
+ *
2988
+ * This icon uses `currentColor`, so it can be styled with Tailwind classes.
2989
+ *
2990
+ * @example
2991
+ * ```tsx
2992
+ * import { TiktokIcon } from '@scalably/ui';
2993
+ *
2994
+ * <TiktokIcon size={32} className="sui-text-primary" />
2995
+ * ```
2996
+ */
2997
+ declare const TiktokIcon: react.MemoExoticComponent<react.ForwardRefExoticComponent<Omit<TiktokIconProps, "ref"> & react.RefAttributes<SVGSVGElement>>>;
2998
+
2999
+ interface TwitchIconProps extends React.SVGProps<SVGSVGElement> {
3000
+ /** Size of the icon in pixels. Defaults to 32. */
3001
+ size?: number;
3002
+ /** Additional CSS classes to apply to the icon */
3003
+ className?: string;
3004
+ }
3005
+ /**
3006
+ * Twitch icon component - displays the Twitch logo.
3007
+ *
3008
+ * This icon uses `currentColor`, so it can be styled with Tailwind classes.
3009
+ *
3010
+ * @example
3011
+ * ```tsx
3012
+ * import { TwitchIcon } from '@scalably/ui';
3013
+ *
3014
+ * <TwitchIcon size={32} className="sui-text-primary" />
3015
+ * ```
3016
+ */
3017
+ declare const TwitchIcon: react.MemoExoticComponent<react.ForwardRefExoticComponent<Omit<TwitchIconProps, "ref"> & react.RefAttributes<SVGSVGElement>>>;
3018
+
3019
+ interface WhatsAppIconProps extends React.SVGProps<SVGSVGElement> {
3020
+ /** Size of the icon in pixels. Defaults to 32. */
3021
+ size?: number;
3022
+ /** Additional CSS classes to apply to the icon */
3023
+ className?: string;
3024
+ }
3025
+ /**
3026
+ * WhatsApp icon component - displays the WhatsApp logo.
3027
+ *
3028
+ * This icon uses `currentColor`, so it can be styled with Tailwind classes.
3029
+ *
3030
+ * @example
3031
+ * ```tsx
3032
+ * import { WhatsAppIcon } from '@scalably/ui';
3033
+ *
3034
+ * <WhatsAppIcon size={32} className="sui-text-primary" />
3035
+ * ```
3036
+ */
3037
+ declare const WhatsAppIcon: react.MemoExoticComponent<react.ForwardRefExoticComponent<Omit<WhatsAppIconProps, "ref"> & react.RefAttributes<SVGSVGElement>>>;
3038
+
3039
+ interface XIconProps extends React.SVGProps<SVGSVGElement> {
3040
+ /** Size of the icon in pixels. Defaults to 32. */
3041
+ size?: number;
3042
+ /** Additional CSS classes to apply to the icon */
3043
+ className?: string;
3044
+ }
3045
+ /**
3046
+ * X icon component - displays the X logo.
3047
+ *
3048
+ * This icon uses `currentColor`, so it can be styled with Tailwind classes.
3049
+ *
3050
+ * @example
3051
+ * ```tsx
3052
+ * import { XIcon } from '@scalably/ui';
3053
+ *
3054
+ * <XIcon size={32} className="sui-text-primary" />
3055
+ * ```
3056
+ */
3057
+ declare const XIcon: react.MemoExoticComponent<react.ForwardRefExoticComponent<Omit<XIconProps, "ref"> & react.RefAttributes<SVGSVGElement>>>;
3058
+
3059
+ interface YoutubeIconProps extends React.SVGProps<SVGSVGElement> {
3060
+ /** Size of the icon in pixels. Defaults to 32. */
3061
+ size?: number;
3062
+ /** Additional CSS classes to apply to the icon */
3063
+ className?: string;
3064
+ }
3065
+ /**
3066
+ * Youtube icon component - displays the Youtube logo.
3067
+ *
3068
+ * This icon uses `currentColor`, so it can be styled with Tailwind classes.
3069
+ *
3070
+ * @example
3071
+ * ```tsx
3072
+ * import { YoutubeIcon } from '@scalably/ui';
3073
+ *
3074
+ * <YoutubeIcon size={32} className="sui-text-primary" />
3075
+ * ```
3076
+ */
3077
+ declare const YoutubeIcon: react.MemoExoticComponent<react.ForwardRefExoticComponent<Omit<YoutubeIconProps, "ref"> & react.RefAttributes<SVGSVGElement>>>;
3078
+
3079
+ export { AvatarPlaceholder, type AvatarPlaceholderCategory, type AvatarPlaceholderProps, type AvatarPlaceholderVariant, BackToTop, type BackToTopProps, Button, type ButtonProps, type ButtonSize, type ButtonVariant, CalendarIcon, type CalendarIconProps, CaptureIcon, type CaptureIconProps, CheckIcon, type CheckIconProps, Checkbox, CheckboxGroup, type CheckboxGroupOption, type CheckboxGroupProps, type CheckboxProps, CloseIcon, type CloseIconProps, DateInput, type DateInputMode, type DateInputProps, DatePicker, type DatePickerMode, type DatePickerProps, DiscordIcon, type DiscordIconProps, Divider, type DividerProps, type DividerVariant, DropUpIcon, type DropUpIconProps, DropdownIcon, type DropdownIconProps, ErrorIcon, type ErrorIconProps, FacebookIcon, type FacebookIconProps, type FieldErrorLike, FileIcon, type FileIconProps, FileUpload, type FileUploadError, type FileUploadFile, FileUploadIcon, type FileUploadIconProps, type FileUploadIconType, type FileUploadProps, type FileUploadSize, type FileUploadVariant, Form, type FormErrorItem, FormErrorSummary, type FormErrorSummaryProps, FormField, type FormFieldProps, type FormProps, GmailIcon, type GmailIconProps, GridIcon, type GridIconProps, ImageIcon, type ImageIconProps, type ImageSourceMode, ImageUploadIcon, type ImageUploadIconProps, IndeterminateIcon, type IndeterminateIconProps, InfoIcon, type InfoIconProps, Input, type InputProps, type InputVariant, InstagramIcon, type InstagramIconProps, KakaoTalkIcon, type KakaoTalkIconProps, LineIcon, type LineIconProps, LinkedInIcon, type LinkedInIconProps, ListIcon, type ListIconProps, LoadingScreen, type LoadingScreenProps, Logo, type LogoFormat, type LogoProps, type LogoVariant, MessengerIcon, type MessengerIconProps, MinusIcon, type MinusIconProps, MultipleSelectionButton, type MultipleSelectionButtonProps, MultipleSelectionIcon, type MultipleSelectionIconProps, Pagination, type PaginationProps, PlusIcon, type PlusIconProps, QuantityInput, type QuantityInputProps, Radio, RadioGroup, type RadioGroupOption, type RadioGroupProps, type RadioProps, type RangeValue, RedditIcon, type RedditIconProps, RichTextEditor, type RichTextEditorProps, RichTextViewer, type RichTextViewerProps, ScalablyUIProvider, type ScalablyUIProviderProps, SearchIcon, type SearchIconProps, SearchInput, type SearchInputProps, type SearchInputVariant, Select, type SelectOption, type SelectProps, type SelectVariant, SettingsIcon, type SettingsIconProps, SignalIcon, type SignalIconProps, Skeleton, type SkeletonProps, type SkeletonSize, SkeletonText, type SkeletonTextProps, type SkeletonVariant, SlackIcon, type SlackIconProps, StatusBadge, type StatusBadgeProps, type StatusBadgeSize, type StatusBadgeStatus, type StatusBadgeVariant, SuccessIcon, type SuccessIconProps, Tabs, TabsContent, type TabsContentProps, TabsList, type TabsListProps, type TabsProps, TabsTrigger, type TabsTriggerProps, TelegramIcon, type TelegramIconProps, TickIcon, type TickIconProps, TiktokIcon, type TiktokIconProps, TimePicker, type TimePickerProps, ToFirstIcon, type ToFirstIconProps, ToLastIcon, type ToLastIconProps, ToNextIcon, type ToNextIconProps, ToPreviousIcon, type ToPreviousIconProps, Toast, type ToastAction, ToastContainer, type ToastContainerProps, type ToastPosition, type ToastProps, type ToastStatus, Tooltip, type TooltipAlign, type TooltipProps, type TooltipSide, TwitchIcon, type TwitchIconProps, VideoIcon, type VideoIconProps, VideoUploadIcon, type VideoUploadIconProps, type ViewMode, ViewToggle, type ViewToggleProps, WarnIcon, type WarnIconProps, WhatsAppIcon, type WhatsAppIconProps, XIcon, type XIconProps, YoutubeIcon, type YoutubeIconProps, clampDate, cn, daysGrid, debounce, defaultAssets, fieldErrorToProps, formatDateLocalized, logoAssets, monthsForLocale, scopeClass, throttle, toDateKey, weekdaysForLocale, zodErrorsToSummary };