@scalably/ui 0.4.0 → 0.4.2

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/README.md CHANGED
@@ -184,10 +184,14 @@ This library exposes a set of composable, production-ready primitives. The full
184
184
  - **Form primitives**: `Form`, `FormField`, `FormErrorSummary`, `Input`, `SearchInput`, `QuantityInput`, `CheckBox`, `CheckBoxGroup`, `Radio`, `RadioGroup`, `Select`, `Switch`, `FileUpload`, `DateInput`, `DatePicker`, `TimePicker`
185
185
  - **Feedback & status**: `StatusBadge`, `Toast`, `ToastContainer`, `Skeleton`, `SkeletonText`, `Countdown`
186
186
  - **Layout & navigation**: `Tabs`, `TabsList`, `TabsTrigger`, `TabsContent`, `Pagination`, `BackToTop`, `ViewToggle`, `Divider`
187
- - **Content & rich text**: `RichTextEditor`, `RichTextViewer`, `Tooltip`, `AuthPrompt`, `LoadingScreen`
188
- - **Media & brand**: `AvatarPlaceholder`, `Logo`, `logoAssets`, `defaultAssets`
187
+ - **Content & rich text**: `RichTextEditor`, `RichTextViewer`, `Tooltip`, `AuthPrompt`, `LoadingScreen`, `WelcomeBackground`
188
+ - **Media & brand**: `AvatarPlaceholder`, `Logo`, `logoAssets`, `defaultAssets`, `welcomeAssets` (all inline React SVGs—no static paths required)
189
189
  - **Icons**: All icons from `@/icons` and `@/icons/company` are re-exported, e.g. `SearchIcon`, `CalendarIcon`, `SuccessIcon`, `ErrorIcon`, `DiscordIcon`, `FacebookIcon`, `XIcon`, `YoutubeIcon`, and more.
190
190
 
191
+ ## 🖼️ Assets
192
+
193
+ All library assets are inline React SVG components (welcome background, logos, avatar placeholders). You can use them directly via the exported asset maps (`welcomeAssets`, `logoAssets`, `defaultAssets`) or override props (size, className, aria-label). If you prefer external URLs (e.g., CDN), pass your own `backgroundImage`, `ellipsesData`, or `linesSrc` to `WelcomeBackground`.
194
+
191
195
  ## 🎨 Styling
192
196
 
193
197
  ### Style Isolation
package/dist/index.d.cts CHANGED
@@ -1,7 +1,5 @@
1
1
  import * as react from 'react';
2
- import react__default, { ReactNode, HTMLAttributes, ImgHTMLAttributes } from 'react';
3
- import * as class_variance_authority_types from 'class-variance-authority/types';
4
- import { VariantProps } from 'class-variance-authority';
2
+ import react__default, { ReactNode, HTMLAttributes, ForwardRefExoticComponent, SVGProps, RefAttributes, MemoExoticComponent } from 'react';
5
3
  import * as react_jsx_runtime from 'react/jsx-runtime';
6
4
  import * as date_fns from 'date-fns';
7
5
  export { addMonths, endOfMonth, isSameDay, startOfMonth } from 'date-fns';
@@ -146,34 +144,10 @@ interface AuthPromptProps {
146
144
  */
147
145
  declare const AuthPrompt: React.FC<AuthPromptProps>;
148
146
 
149
- /**
150
- * Accessible status badge with semantic color variants.
151
- *
152
- * Aligns with design system color semantics:
153
- * - `success`: Active/Complete/Done/Confirmed/Verified
154
- * - `warning`: In progress/Waiting for confirmation
155
- * - `error`: Needs attention/Important/Alert/Danger
156
- * - `inactive`: Closed/Passed/Not active/Too late
157
- * - `info`: Informational status
158
- *
159
- * @example
160
- * ```tsx
161
- * <StatusBadge status="success">Active</StatusBadge>
162
- * <StatusBadge status="warning" variant="outline">Pending</StatusBadge>
163
- * <StatusBadge status="inactive">Closed</StatusBadge>
164
- * <StatusBadge status="error" icon={<AlertIcon />}>Urgent</StatusBadge>
165
- * ```
166
- */
167
- declare const statusBadgeVariants: (props?: ({
168
- size?: "md" | "lg" | "sm" | null | undefined;
169
- status?: "error" | "success" | "warning" | "info" | "inactive" | null | undefined;
170
- variant?: "outline" | "solid" | "soft" | null | undefined;
171
- fullWidth?: boolean | null | undefined;
172
- } & class_variance_authority_types.ClassProp) | undefined) => string;
173
- type StatusBadgeStatus = NonNullable<VariantProps<typeof statusBadgeVariants>["status"]>;
174
- type StatusBadgeVariant = NonNullable<VariantProps<typeof statusBadgeVariants>["variant"]>;
175
- type StatusBadgeSize = NonNullable<VariantProps<typeof statusBadgeVariants>["size"]>;
176
- interface StatusBadgeProps extends Omit<React.HTMLAttributes<HTMLSpanElement>, "children">, VariantProps<typeof statusBadgeVariants> {
147
+ type StatusBadgeStatus = "success" | "warning" | "error" | "info" | "inactive";
148
+ type StatusBadgeVariant = "solid" | "soft" | "outline";
149
+ type StatusBadgeSize = "sm" | "md" | "lg";
150
+ interface StatusBadgeProps extends Omit<React.HTMLAttributes<HTMLSpanElement>, "children"> {
177
151
  /**
178
152
  * Badge size using design system typography.
179
153
  * - `sm`: 12px medium (label-12-medium) - default
@@ -181,7 +155,10 @@ interface StatusBadgeProps extends Omit<React.HTMLAttributes<HTMLSpanElement>, "
181
155
  * - `lg`: 16px medium (body-16-medium)
182
156
  * @default "sm"
183
157
  */
184
- size?: "sm" | "md" | "lg";
158
+ size?: StatusBadgeSize;
159
+ status?: StatusBadgeStatus;
160
+ variant?: StatusBadgeVariant;
161
+ fullWidth?: boolean;
185
162
  /**
186
163
  * Optional leading icon.
187
164
  */
@@ -198,16 +175,13 @@ interface StatusBadgeProps extends Omit<React.HTMLAttributes<HTMLSpanElement>, "
198
175
  }
199
176
  declare const StatusBadge: react.ForwardRefExoticComponent<StatusBadgeProps & react.RefAttributes<HTMLSpanElement>>;
200
177
 
201
- declare const buttonVariants: (props?: ({
202
- variant?: "link" | "text" | "default" | "destructive" | "outline" | "secondary" | null | undefined;
203
- size?: "icon" | "md" | "lg" | null | undefined;
204
- } & class_variance_authority_types.ClassProp) | undefined) => string;
205
- type ButtonVariant = VariantProps<typeof buttonVariants>["variant"];
206
- type ButtonSize = VariantProps<typeof buttonVariants>["size"];
178
+ type ButtonVariant = "default" | "destructive" | "outline" | "secondary" | "text" | "link";
179
+ type ButtonSize = "md" | "lg" | "icon";
207
180
  type ButtonBaseProps = Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, "size">;
208
- interface ButtonProps extends ButtonBaseProps, VariantProps<typeof buttonVariants> {
181
+ interface ButtonProps extends ButtonBaseProps {
182
+ variant?: ButtonVariant;
183
+ size?: ButtonSize;
209
184
  loading?: boolean;
210
- disabled?: boolean;
211
185
  leftIcon?: React.ReactNode;
212
186
  rightIcon?: React.ReactNode;
213
187
  }
@@ -447,11 +421,7 @@ interface CheckBoxGroupProps<T extends string = string> extends BaseFieldSetProp
447
421
  */
448
422
  declare const CheckBoxGroup: react.ForwardRefExoticComponent<CheckBoxGroupProps<string> & react.RefAttributes<HTMLFieldSetElement>>;
449
423
 
450
- declare const inputVariants: (props?: ({
451
- variant?: "error" | "default" | null | undefined;
452
- } & class_variance_authority_types.ClassProp) | undefined) => string;
453
- type InputVariants = VariantProps<typeof inputVariants>;
454
- type InputVariant = InputVariants["variant"];
424
+ type InputVariant = "default" | "error";
455
425
  type InputBaseProps = Omit<React.InputHTMLAttributes<HTMLInputElement>, "size" | "required">;
456
426
  interface InputProps extends InputBaseProps {
457
427
  variant?: InputVariant;
@@ -550,10 +520,7 @@ interface QuantityInputProps extends QuantityInputBaseProps {
550
520
  */
551
521
  declare const QuantityInput: react.ForwardRefExoticComponent<QuantityInputProps & react.RefAttributes<HTMLInputElement>>;
552
522
 
553
- declare const searchInputVariants: (props?: ({
554
- variant?: "full" | "compact" | null | undefined;
555
- } & class_variance_authority_types.ClassProp) | undefined) => string;
556
- type SearchInputVariant = VariantProps<typeof searchInputVariants>["variant"];
523
+ type SearchInputVariant = "compact" | "full";
557
524
  type SearchInputBaseProps = Omit<React.InputHTMLAttributes<HTMLInputElement>, "size" | "type">;
558
525
  interface SearchInputProps extends SearchInputBaseProps {
559
526
  variant?: SearchInputVariant;
@@ -715,35 +682,29 @@ type DateInputProps = SingleProps | RangeProps;
715
682
  */
716
683
  declare const DateInput: react.ForwardRefExoticComponent<DateInputProps & react.RefAttributes<HTMLInputElement>>;
717
684
 
718
- declare const dividerVariants: (props?: ({
719
- orientation?: "horizontal" | "vertical" | null | undefined;
720
- inset?: "end" | "none" | "both" | "start" | null | undefined;
721
- thickness?: "px" | "sm" | null | undefined;
722
- stretch?: "none" | "full" | null | undefined;
723
- } & class_variance_authority_types.ClassProp) | undefined) => string;
724
- type DividerVariant = VariantProps<typeof dividerVariants>;
725
- type DividerProps = React.HTMLAttributes<HTMLDivElement> & VariantProps<typeof dividerVariants> & {
685
+ type DividerOrientation = "horizontal" | "vertical";
686
+ type DividerInset = "none" | "start" | "end" | "both";
687
+ type DividerThickness = "px" | "sm";
688
+ type DividerStretch = "none" | "full";
689
+ type DividerVariant = {
690
+ orientation?: DividerOrientation;
691
+ inset?: DividerInset;
692
+ thickness?: DividerThickness;
693
+ stretch?: DividerStretch;
694
+ };
695
+ type DividerProps = React.HTMLAttributes<HTMLDivElement> & DividerVariant & {
726
696
  colorClassName?: string;
727
697
  };
728
698
  /**
729
699
  * - Themed horizontal or vertical separator with orientation, inset, thickness,
730
700
  * and stretch variants. Uses role="separator" for a11y.
731
701
  */
732
- declare const Divider: react.ForwardRefExoticComponent<react.HTMLAttributes<HTMLDivElement> & VariantProps<(props?: ({
733
- orientation?: "horizontal" | "vertical" | null | undefined;
734
- inset?: "end" | "none" | "both" | "start" | null | undefined;
735
- thickness?: "px" | "sm" | null | undefined;
736
- stretch?: "none" | "full" | null | undefined;
737
- } & class_variance_authority_types.ClassProp) | undefined) => string> & {
702
+ declare const Divider: react.ForwardRefExoticComponent<react.HTMLAttributes<HTMLDivElement> & DividerVariant & {
738
703
  colorClassName?: string;
739
704
  } & react.RefAttributes<HTMLDivElement>>;
740
705
 
741
- declare const fileUploadVariants: (props?: ({
742
- variant?: "error" | "default" | "disabled" | "dragOver" | null | undefined;
743
- size?: "md" | "lg" | "sm" | null | undefined;
744
- } & class_variance_authority_types.ClassProp) | undefined) => string;
745
- type FileUploadVariant = VariantProps<typeof fileUploadVariants>["variant"];
746
- type FileUploadSize = VariantProps<typeof fileUploadVariants>["size"];
706
+ type FileUploadVariant = "default" | "dragOver" | "error" | "disabled";
707
+ type FileUploadSize = "sm" | "md" | "lg";
747
708
  type FileUploadIconType = "file" | "image" | "video";
748
709
  interface FileUploadError {
749
710
  type: "fileType" | "fileSize" | "fileCount" | "network" | "unknown";
@@ -1099,10 +1060,7 @@ interface SwitchProps extends BaseInputProps {
1099
1060
  */
1100
1061
  declare const Switch: react.ForwardRefExoticComponent<SwitchProps & react.RefAttributes<HTMLInputElement>>;
1101
1062
 
1102
- declare const selectVariants: (props?: ({
1103
- variant?: "error" | "default" | null | undefined;
1104
- } & class_variance_authority_types.ClassProp) | undefined) => string;
1105
- type SelectVariant = VariantProps<typeof selectVariants>["variant"];
1063
+ type SelectVariant = "default" | "error";
1106
1064
  interface SelectOption {
1107
1065
  value: string;
1108
1066
  label: string;
@@ -1201,13 +1159,11 @@ interface SelectProps extends SelectBaseProps {
1201
1159
  */
1202
1160
  declare const Select: react.ForwardRefExoticComponent<SelectProps & react.RefAttributes<HTMLButtonElement | HTMLSelectElement>>;
1203
1161
 
1204
- declare const skeletonVariants: (props?: ({
1205
- variant?: "text" | "circle" | "rectangle" | null | undefined;
1206
- size?: "md" | "lg" | "sm" | null | undefined;
1207
- } & class_variance_authority_types.ClassProp) | undefined) => string;
1208
- type SkeletonVariant = NonNullable<VariantProps<typeof skeletonVariants>["variant"]>;
1209
- type SkeletonSize = NonNullable<VariantProps<typeof skeletonVariants>["size"]>;
1210
- interface SkeletonProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "width" | "height">, VariantProps<typeof skeletonVariants> {
1162
+ type SkeletonVariant = "text" | "circle" | "rectangle";
1163
+ type SkeletonSize = "sm" | "md" | "lg";
1164
+ interface SkeletonProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "width" | "height"> {
1165
+ variant?: SkeletonVariant;
1166
+ size?: SkeletonSize;
1211
1167
  /**
1212
1168
  * Width of the skeleton.
1213
1169
  * If a number is provided, it will be automatically converted to pixels.
@@ -1787,28 +1743,57 @@ interface ViewToggleProps {
1787
1743
  */
1788
1744
  declare const ViewToggle: React.FC<ViewToggleProps>;
1789
1745
 
1746
+ interface DefaultAssetProps extends Omit<SVGProps<SVGSVGElement>, "ref"> {
1747
+ /**
1748
+ * Optional square dimension override. Falls back to the intrinsic
1749
+ * width/height of the asset when not provided.
1750
+ */
1751
+ size?: number;
1752
+ }
1753
+ type DefaultAssetComponent = ForwardRefExoticComponent<DefaultAssetProps & RefAttributes<SVGSVGElement>> | MemoExoticComponent<ForwardRefExoticComponent<DefaultAssetProps & RefAttributes<SVGSVGElement>>>;
1754
+
1790
1755
  /**
1791
- * Centralized catalog of fallback imagery for avatars and generic image slots.
1792
- * Consumers can reference these to keep placeholder usage consistent.
1756
+ * Group avatar placeholder rendered as an inline SVG so consumers
1757
+ * don't need to manage static asset paths.
1758
+ */
1759
+ declare const GroupAvatar: react.MemoExoticComponent<react.ForwardRefExoticComponent<DefaultAssetProps & react.RefAttributes<SVGSVGElement>>>;
1760
+
1761
+ /**
1762
+ * Image placeholder illustration as an inline SVG.
1763
+ */
1764
+ declare const ImagePlaceholder: react.MemoExoticComponent<react.ForwardRefExoticComponent<DefaultAssetProps & react.RefAttributes<SVGSVGElement>>>;
1765
+
1766
+ /**
1767
+ * Profile avatar placeholder rendered as an inline SVG.
1793
1768
  */
1794
- declare const defaultAssets: {
1795
- readonly avatars: {
1796
- readonly group: string;
1797
- readonly profile: string;
1769
+ declare const ProfileAvatar: react.MemoExoticComponent<react.ForwardRefExoticComponent<DefaultAssetProps & react.RefAttributes<SVGSVGElement>>>;
1770
+
1771
+ type DefaultAssetCatalog = {
1772
+ avatars: {
1773
+ group: DefaultAssetComponent;
1774
+ profile: DefaultAssetComponent;
1798
1775
  };
1799
- readonly placeholders: {
1800
- readonly image: string;
1776
+ placeholders: {
1777
+ image: DefaultAssetComponent;
1801
1778
  };
1802
1779
  };
1780
+ /**
1781
+ * Centralized catalog of fallback imagery for avatars and generic image slots.
1782
+ * Provided as inline SVG React components to avoid bundling pitfalls for consumers.
1783
+ */
1784
+ declare const defaultAssets: DefaultAssetCatalog;
1785
+ type DefaultAssets = DefaultAssetCatalog;
1786
+ type DefaultAssetCategory = keyof DefaultAssetCatalog;
1787
+ type DefaultAssetVariant<C extends DefaultAssetCategory = DefaultAssetCategory> = keyof DefaultAssetCatalog[C];
1803
1788
 
1804
1789
  type AvatarPlaceholderCategory = keyof typeof defaultAssets;
1805
1790
  type AvatarPlaceholderVariantMap = {
1806
1791
  [K in AvatarPlaceholderCategory]: keyof (typeof defaultAssets)[K];
1807
1792
  };
1808
1793
  type AvatarPlaceholderVariant<C extends AvatarPlaceholderCategory = AvatarPlaceholderCategory> = AvatarPlaceholderVariantMap[C];
1809
- interface BaseAvatarPlaceholderProps extends Omit<ImgHTMLAttributes<HTMLImageElement>, "src" | "alt"> {
1794
+ interface BaseAvatarPlaceholderProps extends Omit<DefaultAssetProps, "children"> {
1810
1795
  /**
1811
- * Accessible text describing the placeholder image.
1796
+ * Accessible text describing the placeholder illustration.
1812
1797
  * Falls back to a generated description derived from category and variant.
1813
1798
  */
1814
1799
  alt?: string;
@@ -1824,44 +1809,69 @@ interface AvatarPlaceholderProps<C extends AvatarPlaceholderCategory = AvatarPla
1824
1809
  variant: AvatarPlaceholderVariant<C>;
1825
1810
  }
1826
1811
  /**
1827
- * Thin wrapper around the shared default asset catalog that renders placeholder imagery
1828
- * (e.g. generic avatars) as a standard `<img>` element with sensible defaults.
1812
+ * Thin wrapper around the shared default asset catalog that renders placeholder
1813
+ * imagery (e.g. generic avatars) as inline SVG React components with sensible defaults.
1829
1814
  */
1830
- declare const AvatarPlaceholder: react.ForwardRefExoticComponent<AvatarPlaceholderProps<"avatars" | "placeholders"> & react.RefAttributes<HTMLImageElement>>;
1815
+ declare const AvatarPlaceholder: react.ForwardRefExoticComponent<AvatarPlaceholderProps<keyof {
1816
+ avatars: {
1817
+ group: DefaultAssetComponent;
1818
+ profile: DefaultAssetComponent;
1819
+ };
1820
+ placeholders: {
1821
+ image: DefaultAssetComponent;
1822
+ };
1823
+ }> & react.RefAttributes<SVGSVGElement>>;
1824
+
1825
+ interface LogoAssetProps extends Omit<SVGProps<SVGSVGElement>, "ref"> {
1826
+ /**
1827
+ * Optional square dimension override; falls back to intrinsic size.
1828
+ */
1829
+ size?: number;
1830
+ /**
1831
+ * Optional alt text (mirrored to aria-label by consumers).
1832
+ */
1833
+ alt?: string;
1834
+ }
1835
+ type LogoAssetComponent = ForwardRefExoticComponent<LogoAssetProps & RefAttributes<SVGSVGElement>> | MemoExoticComponent<ForwardRefExoticComponent<LogoAssetProps & RefAttributes<SVGSVGElement>>>;
1831
1836
 
1832
- declare const logoAssets: {
1833
- readonly app: {
1834
- readonly png: string;
1835
- readonly svg: string;
1837
+ declare const AppLogo: react.MemoExoticComponent<react.ForwardRefExoticComponent<LogoAssetProps & react.RefAttributes<SVGSVGElement>>>;
1838
+
1839
+ declare const CampaignLogo: react.MemoExoticComponent<react.ForwardRefExoticComponent<LogoAssetProps & react.RefAttributes<SVGSVGElement>>>;
1840
+
1841
+ declare const IconBigLogo: react.MemoExoticComponent<react.ForwardRefExoticComponent<LogoAssetProps & react.RefAttributes<SVGSVGElement>>>;
1842
+
1843
+ declare const IconLogo: react.MemoExoticComponent<react.ForwardRefExoticComponent<LogoAssetProps & react.RefAttributes<SVGSVGElement>>>;
1844
+
1845
+ type LogoAssetCatalog = {
1846
+ app: {
1847
+ svg: LogoAssetComponent;
1836
1848
  };
1837
- readonly campaign: {
1838
- readonly png: string;
1839
- readonly svg: string;
1849
+ campaign: {
1850
+ svg: LogoAssetComponent;
1840
1851
  };
1841
- readonly membership: {
1842
- readonly png: string;
1843
- readonly svg: string;
1852
+ membership: {
1853
+ svg: LogoAssetComponent;
1844
1854
  };
1845
- readonly icon: {
1846
- readonly png: string;
1847
- readonly svg: string;
1855
+ icon: {
1856
+ svg: LogoAssetComponent;
1848
1857
  };
1849
- readonly "icon-big": {
1850
- readonly png: string;
1858
+ "icon-big": {
1859
+ svg: LogoAssetComponent;
1851
1860
  };
1852
1861
  };
1862
+ declare const logoAssets: LogoAssetCatalog;
1863
+ type LogoAssets = LogoAssetCatalog;
1853
1864
 
1854
1865
  type LogoVariant = keyof typeof logoAssets;
1855
- type LogoFormat = {
1856
- [K in LogoVariant]: keyof (typeof logoAssets)[K];
1857
- }[LogoVariant];
1858
- interface LogoProps extends Omit<ImgHTMLAttributes<HTMLImageElement>, "src" | "alt"> {
1866
+ type LogoFormat = "svg";
1867
+ interface LogoProps extends Omit<LogoAssetProps, "children"> {
1859
1868
  /**
1860
1869
  * Which logo variant to render (derived from logo assets).
1861
1870
  */
1862
1871
  variant: LogoVariant;
1863
1872
  /**
1864
- * File format to render. Defaults to SVG when available, otherwise PNG.
1873
+ * Logical format to render. Both formats map to inline SVG components.
1874
+ * Defaults to SVG when available.
1865
1875
  */
1866
1876
  format?: LogoFormat;
1867
1877
  /**
@@ -1872,7 +1882,7 @@ interface LogoProps extends Omit<ImgHTMLAttributes<HTMLImageElement>, "src" | "a
1872
1882
  /**
1873
1883
  * Branded logo renderer that stays tightly coupled to available assets.
1874
1884
  */
1875
- declare const Logo: react.ForwardRefExoticComponent<LogoProps & react.RefAttributes<HTMLImageElement>>;
1885
+ declare const Logo: react.ForwardRefExoticComponent<LogoProps & react.RefAttributes<SVGSVGElement>>;
1876
1886
 
1877
1887
  interface LoadingScreenProps extends Omit<react__default.HTMLAttributes<HTMLDivElement>, "children"> {
1878
1888
  /**
@@ -1931,6 +1941,24 @@ interface LoadingScreenProps extends Omit<react__default.HTMLAttributes<HTMLDivE
1931
1941
  */
1932
1942
  declare const LoadingScreen: react__default.ForwardRefExoticComponent<LoadingScreenProps & react__default.RefAttributes<HTMLDivElement>>;
1933
1943
 
1944
+ interface WelcomeAssetProps extends Omit<SVGProps<SVGSVGElement>, "ref"> {
1945
+ /**
1946
+ * Optional square dimension override; falls back to intrinsic size.
1947
+ */
1948
+ size?: number;
1949
+ }
1950
+ type WelcomeAssetComponent = ForwardRefExoticComponent<WelcomeAssetProps & RefAttributes<SVGSVGElement>> | MemoExoticComponent<ForwardRefExoticComponent<WelcomeAssetProps & RefAttributes<SVGSVGElement>>>;
1951
+
1952
+ type WelcomeAssetCatalog = {
1953
+ ellipses: readonly [WelcomeAssetComponent, WelcomeAssetComponent];
1954
+ multipleLine: WelcomeAssetComponent;
1955
+ background: WelcomeAssetComponent;
1956
+ };
1957
+ declare const welcomeAssets: WelcomeAssetCatalog;
1958
+
1959
+ type EllipseSource = string | WelcomeAssetComponent;
1960
+ type LineSource = string | WelcomeAssetComponent;
1961
+ type BackgroundSource = string | WelcomeAssetComponent;
1934
1962
  interface WelcomeBackgroundProps extends Omit<react__default.HTMLAttributes<HTMLDivElement>, "children"> {
1935
1963
  /**
1936
1964
  * Optional children rendered on top of the animated background.
@@ -1952,23 +1980,33 @@ interface WelcomeBackgroundProps extends Omit<react__default.HTMLAttributes<HTML
1952
1980
  */
1953
1981
  disableAnimation?: boolean;
1954
1982
  /**
1955
- * Override background image URL.
1983
+ * Background image URL or inline React SVG component.
1984
+ * Defaults to bundled inline SVG background.
1956
1985
  */
1957
- backgroundImage?: string;
1986
+ backgroundImage?: BackgroundSource;
1958
1987
  /**
1959
- * Override ellipse sources (defaults to bundled welcome assets).
1988
+ * Ellipse sources (URLs or inline React SVG components). Defaults to bundled inline SVGs.
1960
1989
  */
1961
- ellipsesData?: readonly string[];
1990
+ ellipsesData?: readonly EllipseSource[];
1962
1991
  /**
1963
- * Override lines overlay source (defaults to bundled welcome assets).
1992
+ * Lines overlay source (URL or inline React SVG component). Defaults to bundled inline SVG.
1964
1993
  */
1965
- linesSrc?: string;
1994
+ linesSrc?: LineSource;
1966
1995
  }
1967
1996
  /**
1968
1997
  * Animated background for welcome/landing experiences.
1969
1998
  * - Uses deterministic seeded randomness for stable ellipse paths.
1970
1999
  * - Honors reduced-motion preferences and optional animation disabling.
1971
2000
  * - Mobile-first; hides heavy layers on very small screens via consumer control.
2001
+ *
2002
+ * @remarks
2003
+ * **Asset handling**
2004
+ * - Recommended: host your own assets (e.g., place files in `/public/static/welcome`)
2005
+ * and pass them via `backgroundImage`, `ellipsesData`, and `linesSrc`.
2006
+ * - Bundled option: import `welcomeAssets` and copy the hashed files from
2007
+ * `node_modules/@scalably/ui/dist/` into a served location (e.g., via a
2008
+ * postinstall script) before using those paths.
2009
+ * Bundler setups differ; self-hosted URLs are the most reliable.
1972
2010
  */
1973
2011
  declare const WelcomeBackground: {
1974
2012
  ({ className, style, children, showEllipses, showLines, disableAnimation, backgroundImage, ellipsesData, linesSrc, ...props }: WelcomeBackgroundProps): react_jsx_runtime.JSX.Element;
@@ -2188,12 +2226,6 @@ interface ScalablyUIProviderProps {
2188
2226
  */
2189
2227
  declare const ScalablyUIProvider: React.FC<ScalablyUIProviderProps>;
2190
2228
 
2191
- declare const welcomeAssets: {
2192
- readonly ellipses: readonly [string, string];
2193
- readonly multipleLine: string;
2194
- readonly background: string;
2195
- };
2196
-
2197
2229
  /**
2198
2230
  * Type for class values accepted by clsx
2199
2231
  */
@@ -2370,6 +2402,12 @@ interface CloseIconProps extends React.SVGProps<SVGSVGElement> {
2370
2402
  */
2371
2403
  declare const CloseIcon: react.MemoExoticComponent<react.ForwardRefExoticComponent<Omit<CloseIconProps, "ref"> & react.RefAttributes<SVGSVGElement>>>;
2372
2404
 
2405
+ interface CopyIconProps extends React.SVGProps<SVGSVGElement> {
2406
+ size?: number;
2407
+ className?: string;
2408
+ }
2409
+ declare const CopyIcon: react.MemoExoticComponent<react.ForwardRefExoticComponent<Omit<CopyIconProps, "ref"> & react.RefAttributes<SVGSVGElement>>>;
2410
+
2373
2411
  interface DropdownIconProps extends React.SVGProps<SVGSVGElement> {
2374
2412
  /** Size of the icon in pixels. Defaults to 24. */
2375
2413
  size?: number;
@@ -3265,4 +3303,140 @@ interface YoutubeIconProps extends React.SVGProps<SVGSVGElement> {
3265
3303
  */
3266
3304
  declare const YoutubeIcon: react.MemoExoticComponent<react.ForwardRefExoticComponent<Omit<YoutubeIconProps, "ref"> & react.RefAttributes<SVGSVGElement>>>;
3267
3305
 
3268
- export { AuthPrompt, type AuthPromptProps, AvatarPlaceholder, type AvatarPlaceholderCategory, type AvatarPlaceholderProps, type AvatarPlaceholderVariant, BackToTop, type BackToTopProps, Button, type ButtonProps, type ButtonSize, type ButtonVariant, CalendarIcon, type CalendarIconProps, CaptureIcon, type CaptureIconProps, CheckBox, CheckBoxGroup, type CheckBoxGroupOption, type CheckBoxGroupProps, type CheckBoxProps, CheckIcon, type CheckIconProps, CloseIcon, type CloseIconProps, Countdown, type CountdownProps, type CountdownSize, type CountdownTimeValues, type CountdownUnit, 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, Switch, type SwitchProps, 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, WelcomeBackground, type WelcomeBackgroundProps, WhatsAppIcon, type WhatsAppIconProps, XIcon, type XIconProps, YoutubeIcon, type YoutubeIconProps, clampDate, cn, daysGrid, debounce, defaultAssets, fieldErrorToProps, formatDateLocalized, logoAssets, monthsForLocale, scopeClass, throttle, toDateKey, weekdaysForLocale, welcomeAssets, zodErrorsToSummary };
3306
+ interface AlignCenterIconProps extends React.SVGProps<SVGSVGElement> {
3307
+ /** Size of the icon in pixels. Defaults to 16. */
3308
+ size?: number;
3309
+ /** Additional CSS classes to apply to the icon */
3310
+ className?: string;
3311
+ /** Stroke width of the icon in pixels. Defaults to 1.5. */
3312
+ strokeWidth?: number;
3313
+ }
3314
+ declare const AlignCenterIcon: react.MemoExoticComponent<react.ForwardRefExoticComponent<Omit<AlignCenterIconProps, "ref"> & react.RefAttributes<SVGSVGElement>>>;
3315
+
3316
+ interface AlignLeftIconProps extends React.SVGProps<SVGSVGElement> {
3317
+ /** Size of the icon in pixels. Defaults to 16. */
3318
+ size?: number;
3319
+ /** Additional CSS classes to apply to the icon */
3320
+ className?: string;
3321
+ /** Stroke width of the icon in pixels. Defaults to 1.5. */
3322
+ strokeWidth?: number;
3323
+ }
3324
+ declare const AlignLeftIcon: react.MemoExoticComponent<react.ForwardRefExoticComponent<Omit<AlignLeftIconProps, "ref"> & react.RefAttributes<SVGSVGElement>>>;
3325
+
3326
+ interface AlignRightIconProps extends React.SVGProps<SVGSVGElement> {
3327
+ /** Size of the icon in pixels. Defaults to 16. */
3328
+ size?: number;
3329
+ /** Additional CSS classes to apply to the icon */
3330
+ className?: string;
3331
+ /** Stroke width of the icon in pixels. Defaults to 1.5. */
3332
+ strokeWidth?: number;
3333
+ }
3334
+ declare const AlignRightIcon: react.MemoExoticComponent<react.ForwardRefExoticComponent<Omit<AlignRightIconProps, "ref"> & react.RefAttributes<SVGSVGElement>>>;
3335
+
3336
+ interface BoldIconProps extends React.SVGProps<SVGSVGElement> {
3337
+ /** Size of the icon in pixels. Defaults to 16. */
3338
+ size?: number;
3339
+ /** Additional CSS classes to apply to the icon */
3340
+ className?: string;
3341
+ /** Stroke width of the icon in pixels. Defaults to 1.5. */
3342
+ strokeWidth?: number;
3343
+ }
3344
+ /**
3345
+ * Bold icon component - displays a bold icon.
3346
+ *
3347
+ * This icon uses `currentColor`, so it can be styled with Tailwind classes.
3348
+ *
3349
+ * @example
3350
+ * ```tsx
3351
+ * import { BoldIcon } from '@scalably/ui';
3352
+ *
3353
+ * <BoldIcon size={16} className="sui-text-primary" />
3354
+ * ```
3355
+ */
3356
+ declare const BoldIcon: react.MemoExoticComponent<react.ForwardRefExoticComponent<Omit<BoldIconProps, "ref"> & react.RefAttributes<SVGSVGElement>>>;
3357
+
3358
+ interface InsertImageIconProps extends React.SVGProps<SVGSVGElement> {
3359
+ /** Size of the icon in pixels. Defaults to 16. */
3360
+ size?: number;
3361
+ /** Additional CSS classes to apply to the icon */
3362
+ className?: string;
3363
+ }
3364
+ declare const InsertImageIcon: react.MemoExoticComponent<react.ForwardRefExoticComponent<Omit<InsertImageIconProps, "ref"> & react.RefAttributes<SVGSVGElement>>>;
3365
+
3366
+ interface InsertVideoIconProps extends React.SVGProps<SVGSVGElement> {
3367
+ /** Size of the icon in pixels. Defaults to 16. */
3368
+ size?: number;
3369
+ /** Additional CSS classes to apply to the icon */
3370
+ className?: string;
3371
+ }
3372
+ declare const InsertVideoIcon: react.MemoExoticComponent<react.ForwardRefExoticComponent<Omit<InsertVideoIconProps, "ref"> & react.RefAttributes<SVGSVGElement>>>;
3373
+
3374
+ interface ItalicIconProps extends React.SVGProps<SVGSVGElement> {
3375
+ /** Size of the icon in pixels. Defaults to 16. */
3376
+ size?: number;
3377
+ /** Additional CSS classes to apply to the icon */
3378
+ className?: string;
3379
+ /** Stroke width of the icon in pixels. Defaults to 1.5. */
3380
+ strokeWidth?: number;
3381
+ }
3382
+ /**
3383
+ * Italic icon component - displays an italic icon.
3384
+ *
3385
+ * This icon uses `currentColor`, so it can be styled with Tailwind classes.
3386
+ *
3387
+ * @example
3388
+ * ```tsx
3389
+ * import { ItalicIcon } from '@scalably/ui';
3390
+ *
3391
+ * <ItalicIcon size={16} className="sui-text-primary" />
3392
+ * ```
3393
+ */
3394
+ declare const ItalicIcon: react.MemoExoticComponent<react.ForwardRefExoticComponent<Omit<ItalicIconProps, "ref"> & react.RefAttributes<SVGSVGElement>>>;
3395
+
3396
+ interface LinkIconProps extends React.SVGProps<SVGSVGElement> {
3397
+ /** Size of the icon in pixels. Defaults to 16. */
3398
+ size?: number;
3399
+ /** Additional CSS classes to apply to the icon */
3400
+ className?: string;
3401
+ }
3402
+ declare const LinkIcon: react.MemoExoticComponent<react.ForwardRefExoticComponent<Omit<LinkIconProps, "ref"> & react.RefAttributes<SVGSVGElement>>>;
3403
+
3404
+ interface ListBulletIconProps extends React.SVGProps<SVGSVGElement> {
3405
+ /** Size of the icon in pixels. Defaults to 16. */
3406
+ size?: number;
3407
+ /** Additional CSS classes to apply to the icon */
3408
+ className?: string;
3409
+ }
3410
+ declare const ListBulletIcon: react.MemoExoticComponent<react.ForwardRefExoticComponent<Omit<ListBulletIconProps, "ref"> & react.RefAttributes<SVGSVGElement>>>;
3411
+
3412
+ interface ListNumberIconProps extends React.SVGProps<SVGSVGElement> {
3413
+ /** Size of the icon in pixels. Defaults to 16. */
3414
+ size?: number;
3415
+ /** Additional CSS classes to apply to the icon */
3416
+ className?: string;
3417
+ }
3418
+ declare const ListNumberIcon: react.MemoExoticComponent<react.ForwardRefExoticComponent<Omit<ListNumberIconProps, "ref"> & react.RefAttributes<SVGSVGElement>>>;
3419
+
3420
+ interface UnderlineIconProps extends React.SVGProps<SVGSVGElement> {
3421
+ /** Size of the icon in pixels. Defaults to 16. */
3422
+ size?: number;
3423
+ /** Additional CSS classes to apply to the icon */
3424
+ className?: string;
3425
+ /** Stroke width of the icon in pixels. Defaults to 1.5. */
3426
+ strokeWidth?: number;
3427
+ }
3428
+ /**
3429
+ * Underline icon component - displays an underline icon.
3430
+ *
3431
+ * This icon uses `currentColor`, so it can be styled with Tailwind classes.
3432
+ *
3433
+ * @example
3434
+ * ```tsx
3435
+ * import { UnderlineIcon } from '@scalably/ui';
3436
+ *
3437
+ * <UnderlineIcon size={16} className="sui-text-primary" />
3438
+ * ```
3439
+ */
3440
+ declare const UnderlineIcon: react.MemoExoticComponent<react.ForwardRefExoticComponent<Omit<UnderlineIconProps, "ref"> & react.RefAttributes<SVGSVGElement>>>;
3441
+
3442
+ export { AlignCenterIcon, type AlignCenterIconProps, AlignLeftIcon, type AlignLeftIconProps, AlignRightIcon, type AlignRightIconProps, AppLogo, AuthPrompt, type AuthPromptProps, AvatarPlaceholder, type AvatarPlaceholderCategory, type AvatarPlaceholderProps, type AvatarPlaceholderVariant, BackToTop, type BackToTopProps, BoldIcon, type BoldIconProps, Button, type ButtonProps, type ButtonSize, type ButtonVariant, CalendarIcon, type CalendarIconProps, CampaignLogo, CaptureIcon, type CaptureIconProps, CheckBox, CheckBoxGroup, type CheckBoxGroupOption, type CheckBoxGroupProps, type CheckBoxProps, CheckIcon, type CheckIconProps, CloseIcon, type CloseIconProps, CopyIcon, type CopyIconProps, Countdown, type CountdownProps, type CountdownSize, type CountdownTimeValues, type CountdownUnit, DateInput, type DateInputMode, type DateInputProps, DatePicker, type DatePickerMode, type DatePickerProps, type DefaultAssetCategory, type DefaultAssetComponent, type DefaultAssetProps, type DefaultAssetVariant, type DefaultAssets, 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, GroupAvatar, IconBigLogo, IconLogo, ImageIcon, type ImageIconProps, ImagePlaceholder, type ImageSourceMode, ImageUploadIcon, type ImageUploadIconProps, IndeterminateIcon, type IndeterminateIconProps, InfoIcon, type InfoIconProps, Input, type InputProps, type InputVariant, InsertImageIcon, type InsertImageIconProps, InsertVideoIcon, type InsertVideoIconProps, InstagramIcon, type InstagramIconProps, ItalicIcon, type ItalicIconProps, KakaoTalkIcon, type KakaoTalkIconProps, LineIcon, type LineIconProps, LinkIcon, type LinkIconProps, LinkedInIcon, type LinkedInIconProps, ListBulletIcon, type ListBulletIconProps, ListIcon, type ListIconProps, ListNumberIcon, type ListNumberIconProps, LoadingScreen, type LoadingScreenProps, Logo, type LogoAssetComponent, type LogoAssetProps, type LogoAssets, type LogoFormat, type LogoProps, type LogoVariant, MessengerIcon, type MessengerIconProps, MinusIcon, type MinusIconProps, MultipleSelectionButton, type MultipleSelectionButtonProps, MultipleSelectionIcon, type MultipleSelectionIconProps, Pagination, type PaginationProps, PlusIcon, type PlusIconProps, ProfileAvatar, 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, Switch, type SwitchProps, 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, UnderlineIcon, type UnderlineIconProps, VideoIcon, type VideoIconProps, VideoUploadIcon, type VideoUploadIconProps, type ViewMode, ViewToggle, type ViewToggleProps, WarnIcon, type WarnIconProps, WelcomeBackground, type WelcomeBackgroundProps, WhatsAppIcon, type WhatsAppIconProps, XIcon, type XIconProps, YoutubeIcon, type YoutubeIconProps, clampDate, cn, daysGrid, debounce, defaultAssets, fieldErrorToProps, formatDateLocalized, logoAssets, monthsForLocale, scopeClass, throttle, toDateKey, weekdaysForLocale, welcomeAssets, zodErrorsToSummary };