aloha-ui-library 0.2.0 → 0.2.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.
Files changed (42) hide show
  1. package/dist/colors.d.ts +106 -0
  2. package/dist/components/Avatar.d.ts +9 -0
  3. package/dist/components/Badge.d.ts +9 -0
  4. package/dist/components/Button.d.ts +28 -0
  5. package/dist/components/Card.d.ts +32 -0
  6. package/dist/components/ChatMessage.d.ts +28 -0
  7. package/dist/components/Checkbox.d.ts +6 -0
  8. package/dist/components/ColorPalette.d.ts +18 -0
  9. package/dist/components/Emoji.d.ts +23 -0
  10. package/dist/components/Error.d.ts +11 -0
  11. package/dist/components/ErrorFullScreen.d.ts +11 -0
  12. package/dist/components/FriendListItem.d.ts +27 -0
  13. package/dist/components/FullPage.d.ts +8 -0
  14. package/dist/components/Grid.d.ts +50 -0
  15. package/dist/components/Icon.d.ts +11 -0
  16. package/dist/components/Image.d.ts +22 -0
  17. package/dist/components/Input.d.ts +7 -0
  18. package/dist/components/Link.d.ts +27 -0
  19. package/dist/components/Loading.d.ts +8 -0
  20. package/dist/components/LoadingFullScreen.d.ts +8 -0
  21. package/dist/components/Logo.d.ts +11 -0
  22. package/dist/components/Navbar.d.ts +60 -0
  23. package/dist/components/Notification.d.ts +15 -0
  24. package/dist/components/Pattern.d.ts +34 -0
  25. package/dist/components/PatternFill.d.ts +31 -0
  26. package/dist/components/PatternGroup.d.ts +35 -0
  27. package/dist/components/Popup.d.ts +22 -0
  28. package/dist/components/QuestionCard.d.ts +54 -0
  29. package/dist/components/SearchInput.d.ts +6 -0
  30. package/dist/components/Streak.d.ts +13 -0
  31. package/dist/components/Switch.d.ts +10 -0
  32. package/dist/components/TextDivider.d.ts +29 -0
  33. package/dist/components/Typography.d.ts +34 -0
  34. package/dist/index.css +5 -0
  35. package/dist/index.d.ts +35 -0
  36. package/dist/index.esm.css +5 -0
  37. package/dist/index.esm.js +5310 -0
  38. package/dist/index.esm.js.map +1 -0
  39. package/dist/index.js +5367 -0
  40. package/dist/index.js.map +1 -0
  41. package/dist/lib/utils.d.ts +2 -0
  42. package/package.json +2 -1
@@ -0,0 +1,106 @@
1
+ /**
2
+ * Paleta de colores de Aloha UI
3
+ * Importa estos colores para usarlos en tus componentes
4
+ *
5
+ * @example
6
+ * import { colors, cssVars } from '@srteam-dev/aloha-ui';
7
+ *
8
+ * // Usar con valor hexadecimal directo
9
+ * <div style={{ backgroundColor: colors.olivo }}>
10
+ * Contenido
11
+ * </div>
12
+ *
13
+ * // Usar con variable CSS
14
+ * <div style={{ backgroundColor: cssVars.olivo }}>
15
+ * Contenido
16
+ * </div>
17
+ */
18
+ export declare const colors: {
19
+ readonly olivo: "#383517";
20
+ readonly lima: "#B4DE6E";
21
+ readonly bosque: "#648C2C";
22
+ readonly hueso: "#F5F5DC";
23
+ readonly piedra: "#4A443F";
24
+ readonly corteza: "#6B5B3E";
25
+ readonly girasol: "#FFD400";
26
+ readonly coral: "#FF6F61";
27
+ readonly aqua: "#66FFCC";
28
+ readonly lavanda: "#B388D3";
29
+ readonly electrico: "#0084FF";
30
+ readonly marmol: "#D8D8C1";
31
+ readonly ice: "#FEFEFC";
32
+ readonly koala: "#A69C8A";
33
+ };
34
+ /**
35
+ * Variables CSS para usar los colores
36
+ * Usa estas variables para aprovechar las CSS custom properties
37
+ *
38
+ * @example
39
+ * import { cssVars } from '@srteam-dev/aloha-ui';
40
+ *
41
+ * <div style={{ backgroundColor: cssVars.olivo }}>
42
+ * Contenido con variable CSS
43
+ * </div>
44
+ */
45
+ export declare const cssVars: {
46
+ readonly olivo: "var(--colors-olivo)";
47
+ readonly lima: "var(--colors-lima)";
48
+ readonly bosque: "var(--colors-bosque)";
49
+ readonly hueso: "var(--colors-hueso)";
50
+ readonly piedra: "var(--colors-piedra)";
51
+ readonly corteza: "var(--colors-corteza)";
52
+ readonly girasol: "var(--colors-girasol)";
53
+ readonly coral: "var(--colors-coral)";
54
+ readonly aqua: "var(--colors-aqua)";
55
+ readonly lavanda: "var(--colors-lavanda)";
56
+ readonly electrico: "var(--colors-electrico)";
57
+ readonly marmol: "var(--colors-marmol)";
58
+ readonly ice: "var(--colors-ice)";
59
+ readonly koala: "var(--colors-koala)";
60
+ };
61
+ export type ColorName = keyof typeof colors;
62
+ export type ColorValue = typeof colors[ColorName];
63
+ /**
64
+ * Obtiene el valor hexadecimal de un color por su nombre
65
+ */
66
+ export declare const getColor: (colorName: ColorName) => ColorValue;
67
+ /**
68
+ * Lista de todos los colores disponibles
69
+ */
70
+ export declare const colorEntries: [ColorName, ColorValue][];
71
+ /**
72
+ * Obtiene la variable CSS de un color por su nombre
73
+ */
74
+ export declare const getCssVar: (colorName: ColorName) => string;
75
+ /**
76
+ * Variables CSS para el tema (se adaptan automáticamente a modo claro/oscuro)
77
+ *
78
+ * Modo claro:
79
+ * - background: hueso (#F5F5DC)
80
+ * - text: olivo (#383517)
81
+ * - highlight: corteza (#6B5B3E)
82
+ * - primary: lima (#B4DE6E)
83
+ *
84
+ * Modo oscuro:
85
+ * - background: piedra (#4A443F)
86
+ * - text: hueso (#F5F5DC)
87
+ * - highlight: corteza (#6B5B3E)
88
+ * - primary: bosque (#648C2C)
89
+ *
90
+ * @example
91
+ * import { themeVars } from '@srteam-dev/aloha-ui';
92
+ *
93
+ * <div style={{
94
+ * backgroundColor: themeVars.background,
95
+ * color: themeVars.text
96
+ * }}>
97
+ * Este div se adapta automáticamente al tema
98
+ * </div>
99
+ */
100
+ export declare const themeVars: {
101
+ readonly background: "var(--theme-background)";
102
+ readonly text: "var(--theme-text)";
103
+ readonly highlight: "var(--theme-highlight)";
104
+ readonly primary: "var(--theme-primary)";
105
+ };
106
+ export type ThemeName = keyof typeof themeVars;
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ export interface AvatarProps extends React.HTMLAttributes<HTMLDivElement> {
3
+ src?: string;
4
+ alt?: string;
5
+ fallback?: string;
6
+ size?: 'sm' | 'md' | 'lg' | 'xl';
7
+ }
8
+ declare const Avatar: React.ForwardRefExoticComponent<AvatarProps & React.RefAttributes<HTMLDivElement>>;
9
+ export { Avatar };
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ import { type VariantProps } from 'class-variance-authority';
3
+ declare const badgeVariants: (props?: ({
4
+ variant?: "default" | "destructive" | "outline" | "secondary" | null | undefined;
5
+ } & import("class-variance-authority/dist/types").ClassProp) | undefined) => string;
6
+ export interface BadgeProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof badgeVariants> {
7
+ }
8
+ declare function Badge({ className, variant, ...props }: BadgeProps): import("react/jsx-runtime").JSX.Element;
9
+ export { Badge, badgeVariants };
@@ -0,0 +1,28 @@
1
+ import React from 'react';
2
+ import { type VariantProps } from 'class-variance-authority';
3
+ import { type ColorName } from '../colors';
4
+ declare const buttonVariants: (props?: ({
5
+ variant?: "default" | "destructive" | "outline" | "secondary" | "ghost" | "link" | null | undefined;
6
+ size?: "default" | "sm" | "lg" | "icon" | null | undefined;
7
+ } & import("class-variance-authority/dist/types").ClassProp) | undefined) => string;
8
+ export interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {
9
+ asChild?: boolean;
10
+ /** Click handler function */
11
+ onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void;
12
+ /** Disabled state */
13
+ disabled?: boolean;
14
+ /** Loading state */
15
+ loading?: boolean;
16
+ /** Background color from Aloha palette */
17
+ color?: ColorName;
18
+ /** Text color from Aloha palette */
19
+ textColor?: ColorName;
20
+ /** Border color from Aloha palette */
21
+ borderColor?: ColorName;
22
+ /** Icon or image element to show on the left */
23
+ icon?: React.ReactNode;
24
+ /** Border width (1-4px) */
25
+ borderWidth?: 1 | 2 | 3 | 4;
26
+ }
27
+ declare const Button: React.ForwardRefExoticComponent<ButtonProps & React.RefAttributes<HTMLButtonElement>>;
28
+ export { Button, buttonVariants };
@@ -0,0 +1,32 @@
1
+ import React from 'react';
2
+ import { FontFamily, FontWeight, ColorOption } from './Typography';
3
+ export type CardSize = 'full' | 'constrained' | 'auto';
4
+ export type BorderRadius = 'none' | 'sm' | 'md' | 'lg' | 'xl' | 'full';
5
+ export type TitleComponent = 'h1' | 'h2' | 'h3' | 'h4';
6
+ export interface CardProps extends React.HTMLAttributes<HTMLDivElement> {
7
+ size?: CardSize;
8
+ borderRadius?: BorderRadius;
9
+ showBorder?: boolean;
10
+ backgroundColor?: ColorOption;
11
+ borderColor?: ColorOption;
12
+ shadow?: boolean;
13
+ }
14
+ declare const Card: React.ForwardRefExoticComponent<CardProps & React.RefAttributes<HTMLDivElement>>;
15
+ declare const CardHeader: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
16
+ export interface CardTitleProps extends React.HTMLAttributes<HTMLHeadingElement> {
17
+ component?: TitleComponent;
18
+ font?: FontFamily;
19
+ weight?: FontWeight;
20
+ titleColor?: ColorOption;
21
+ }
22
+ declare const CardTitle: React.ForwardRefExoticComponent<CardTitleProps & React.RefAttributes<HTMLHeadingElement>>;
23
+ export interface CardDescriptionProps extends React.HTMLAttributes<HTMLParagraphElement> {
24
+ font?: FontFamily;
25
+ weight?: FontWeight;
26
+ descriptionColor?: ColorOption;
27
+ small?: boolean;
28
+ }
29
+ declare const CardDescription: React.ForwardRefExoticComponent<CardDescriptionProps & React.RefAttributes<HTMLParagraphElement>>;
30
+ declare const CardContent: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
31
+ declare const CardFooter: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
32
+ export { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent };
@@ -0,0 +1,28 @@
1
+ import React from 'react';
2
+ import { type ColorName } from '../colors';
3
+ export type ChatMessageVariant = 'sent' | 'received';
4
+ export interface ChatMessageProps extends React.HTMLAttributes<HTMLDivElement> {
5
+ /** Texto del mensaje */
6
+ message: string;
7
+ /** Nombre del usuario */
8
+ name: string;
9
+ /** Hora del mensaje, ej: "16:34" */
10
+ time: string;
11
+ /** URL del avatar del usuario (se muestra dentro de la burbuja) */
12
+ avatarSrc?: string;
13
+ /** Fallback del avatar si no hay imagen (iniciales) */
14
+ avatarFallback?: string;
15
+ /**
16
+ * 'received' = izquierda, verde lima | 'sent' = derecha, verde bosque
17
+ * @default 'received'
18
+ */
19
+ variant?: ChatMessageVariant;
20
+ /** Color de fondo de la burbuja (nombre del color Aloha) */
21
+ bgColor?: ColorName;
22
+ /** Color del texto del mensaje */
23
+ messageColor?: ColorName;
24
+ /** Color del texto del header (nombre + hora) */
25
+ headerColor?: ColorName;
26
+ }
27
+ declare const ChatMessage: React.ForwardRefExoticComponent<ChatMessageProps & React.RefAttributes<HTMLDivElement>>;
28
+ export { ChatMessage };
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ export interface CheckboxProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type'> {
3
+ label?: string;
4
+ }
5
+ declare const Checkbox: React.ForwardRefExoticComponent<CheckboxProps & React.RefAttributes<HTMLInputElement>>;
6
+ export { Checkbox };
@@ -0,0 +1,18 @@
1
+ import React from 'react';
2
+ import { colors, ColorName } from '../colors';
3
+ export interface ColorSwatchProps {
4
+ name: ColorName;
5
+ value: string;
6
+ size?: 'sm' | 'md' | 'lg';
7
+ showHex?: boolean;
8
+ className?: string;
9
+ }
10
+ export declare const ColorSwatch: React.FC<ColorSwatchProps>;
11
+ export interface ColorPaletteProps {
12
+ size?: 'sm' | 'md' | 'lg';
13
+ showHex?: boolean;
14
+ columns?: 2 | 3 | 4 | 5 | 6;
15
+ className?: string;
16
+ }
17
+ export declare const ColorPalette: React.FC<ColorPaletteProps>;
18
+ export { colors };
@@ -0,0 +1,23 @@
1
+ import React from 'react';
2
+ declare const emojiMap: {
3
+ readonly crazy: string;
4
+ readonly explosion: string;
5
+ readonly happy: string;
6
+ readonly hi: string;
7
+ readonly impact: string;
8
+ readonly interesting: string;
9
+ readonly melt: string;
10
+ readonly mewing: string;
11
+ };
12
+ export type EmojiName = keyof typeof emojiMap;
13
+ export type EmojiSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl';
14
+ export interface EmojiProps extends React.HTMLAttributes<HTMLImageElement> {
15
+ /** Name of the emoji */
16
+ name: EmojiName;
17
+ /** Size of the emoji */
18
+ size?: EmojiSize;
19
+ /** Alt text for accessibility */
20
+ alt?: string;
21
+ }
22
+ declare const Emoji: React.ForwardRefExoticComponent<EmojiProps & React.RefAttributes<HTMLImageElement>>;
23
+ export { Emoji, emojiMap };
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ export interface ErrorProps {
3
+ title?: string;
4
+ message?: string;
5
+ onRetry?: () => void;
6
+ retryText?: string;
7
+ className?: string;
8
+ variant?: 'inline' | 'card';
9
+ showIcon?: boolean;
10
+ }
11
+ export declare const Error: React.FC<ErrorProps>;
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ export interface ErrorFullScreenProps {
3
+ title?: string;
4
+ message?: string;
5
+ onRetry?: () => void;
6
+ retryText?: string;
7
+ className?: string;
8
+ background?: 'white' | 'gray' | 'dark' | 'transparent';
9
+ showIcon?: boolean;
10
+ }
11
+ export declare const ErrorFullScreen: React.FC<ErrorFullScreenProps>;
@@ -0,0 +1,27 @@
1
+ import React from 'react';
2
+ import { type ColorName } from '../colors';
3
+ export type FriendItemVariant = 'user' | 'group';
4
+ export interface FriendAvatar {
5
+ src?: string;
6
+ fallback?: string;
7
+ }
8
+ export interface FriendListItemProps extends React.HTMLAttributes<HTMLButtonElement> {
9
+ /**
10
+ * 'user' → avatar + nombre de usuario
11
+ * 'group' → stack de avatares + nombre del grupo
12
+ */
13
+ variant?: FriendItemVariant;
14
+ /** Nombre del usuario o del grupo */
15
+ name?: string;
16
+ avatarSrc?: string;
17
+ avatarFallback?: string;
18
+ /** Array de avatares para el stack (variant='group') */
19
+ avatars?: FriendAvatar[];
20
+ bgColor?: ColorName;
21
+ nameColor?: ColorName;
22
+ chevronColor?: ColorName;
23
+ /** Color del borde/ring de cada avatar en el stack */
24
+ avatarRingColor?: ColorName;
25
+ }
26
+ declare const FriendListItem: React.ForwardRefExoticComponent<FriendListItemProps & React.RefAttributes<HTMLButtonElement>>;
27
+ export { FriendListItem };
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ export interface FullPageProps {
3
+ children: React.ReactNode;
4
+ className?: string;
5
+ centered?: boolean;
6
+ background?: 'white' | 'gray' | 'dark' | 'transparent';
7
+ }
8
+ export declare const FullPage: React.FC<FullPageProps>;
@@ -0,0 +1,50 @@
1
+ import React from 'react';
2
+ import { type ColorName } from '../colors';
3
+ export interface GridProps extends React.HTMLAttributes<HTMLDivElement> {
4
+ /** Number of columns (1-12 for full control) */
5
+ columns?: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;
6
+ /** Number of rows (auto by default) */
7
+ rows?: 'auto' | number;
8
+ /** Gap between grid items (in pixels or tailwind spacing) */
9
+ gap?: number | string;
10
+ /** Children components */
11
+ children: React.ReactNode;
12
+ /** Make grid responsive (auto-adjusts columns on mobile) */
13
+ responsive?: boolean;
14
+ /** Minimum column width for auto-fit (e.g., '250px') */
15
+ autoFit?: string;
16
+ /** Background color */
17
+ backgroundColor?: ColorName | 'transparent';
18
+ /** Padding */
19
+ padding?: number | string;
20
+ /** Border radius */
21
+ rounded?: 'none' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'full';
22
+ }
23
+ export declare const Grid: React.ForwardRefExoticComponent<GridProps & React.RefAttributes<HTMLDivElement>>;
24
+ export interface GridItemProps extends React.HTMLAttributes<HTMLDivElement> {
25
+ /** Children components */
26
+ children: React.ReactNode;
27
+ /** Number of columns to span (1-12) */
28
+ colSpan?: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 'full';
29
+ /** Number of rows to span (1-12) */
30
+ rowSpan?: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 'full';
31
+ /** Column start position (1-12) */
32
+ colStart?: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;
33
+ /** Row start position (1-12) */
34
+ rowStart?: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;
35
+ /** Background color */
36
+ backgroundColor?: ColorName | 'transparent' | string;
37
+ /** Padding */
38
+ padding?: number | string;
39
+ /** Border radius */
40
+ rounded?: 'none' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'full';
41
+ /** Display flex content */
42
+ flex?: boolean;
43
+ /** Flex direction */
44
+ flexDirection?: 'row' | 'col';
45
+ /** Align items */
46
+ align?: 'start' | 'center' | 'end' | 'stretch';
47
+ /** Justify content */
48
+ justify?: 'start' | 'center' | 'end' | 'between' | 'around';
49
+ }
50
+ export declare const GridItem: React.ForwardRefExoticComponent<GridItemProps & React.RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ import { ColorOption } from './Typography';
3
+ export type IconName = 'chat' | 'friends' | 'home' | 'lang' | 'location' | 'mail' | 'music' | 'notify' | 'settings' | 'streak';
4
+ export type IconSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';
5
+ export interface IconProps extends React.HTMLAttributes<HTMLDivElement> {
6
+ name: IconName;
7
+ size?: IconSize;
8
+ color?: ColorOption;
9
+ }
10
+ declare const Icon: React.ForwardRefExoticComponent<IconProps & React.RefAttributes<HTMLDivElement>>;
11
+ export { Icon };
@@ -0,0 +1,22 @@
1
+ import React from 'react';
2
+ export interface ImageProps extends React.ImgHTMLAttributes<HTMLImageElement> {
3
+ /** Image source URL */
4
+ src: string;
5
+ /** Alternative text for accessibility */
6
+ alt: string;
7
+ /** Width of the image */
8
+ width?: number | string;
9
+ /** Height of the image */
10
+ height?: number | string;
11
+ /** Object fit style */
12
+ objectFit?: 'contain' | 'cover' | 'fill' | 'none' | 'scale-down';
13
+ /** Image loading strategy */
14
+ loading?: 'lazy' | 'eager';
15
+ /** Fallback image URL if main image fails to load */
16
+ fallbackSrc?: string;
17
+ /** Callback when image fails to load */
18
+ onError?: () => void;
19
+ /** Additional CSS classes */
20
+ className?: string;
21
+ }
22
+ export declare const Image: React.ForwardRefExoticComponent<ImageProps & React.RefAttributes<HTMLImageElement>>;
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ export interface InputProps extends React.InputHTMLAttributes<HTMLInputElement> {
3
+ label?: string;
4
+ helperText?: string;
5
+ }
6
+ declare const Input: React.ForwardRefExoticComponent<InputProps & React.RefAttributes<HTMLInputElement>>;
7
+ export { Input };
@@ -0,0 +1,27 @@
1
+ import React from 'react';
2
+ import { LinkProps as RouterLinkProps } from 'react-router-dom';
3
+ export type ColorOption = 'olivo' | 'lima' | 'bosque' | 'hueso' | 'piedra' | 'corteza' | 'girasol' | 'coral' | 'aqua' | 'lavanda' | 'electrico' | 'marmol' | 'ice' | 'koala' | 'default';
4
+ export type UnderlineOption = 'none' | 'always' | 'hover';
5
+ type BaseLinkProps = {
6
+ /** Color del texto del enlace */
7
+ color?: ColorOption;
8
+ /** Color del texto en hover (si no se especifica, usa una versión más oscura del color) */
9
+ hoverColor?: ColorOption;
10
+ /** Estilo del subrayado */
11
+ underline?: UnderlineOption;
12
+ /** Si se abre en una nueva pestaña (solo para enlaces externos con href) */
13
+ external?: boolean;
14
+ children?: React.ReactNode;
15
+ className?: string;
16
+ };
17
+ type RouterLinkVariant = BaseLinkProps & {
18
+ to: string | Partial<Location>;
19
+ href?: never;
20
+ } & Omit<RouterLinkProps, 'to' | 'className' | 'children'>;
21
+ type AnchorLinkVariant = BaseLinkProps & {
22
+ href: string;
23
+ to?: never;
24
+ } & Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, 'href' | 'className' | 'children'>;
25
+ export type LinkProps = RouterLinkVariant | AnchorLinkVariant;
26
+ declare const Link: React.ForwardRefExoticComponent<LinkProps & React.RefAttributes<HTMLAnchorElement>>;
27
+ export { Link };
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ export interface LoadingProps {
3
+ message?: string;
4
+ className?: string;
5
+ size?: 'sm' | 'md' | 'lg';
6
+ centered?: boolean;
7
+ }
8
+ export declare const Loading: React.FC<LoadingProps>;
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ export interface LoadingFullScreenProps {
3
+ message?: string;
4
+ className?: string;
5
+ spinnerSize?: 'sm' | 'md' | 'lg' | 'xl';
6
+ background?: 'white' | 'gray' | 'dark' | 'transparent';
7
+ }
8
+ export declare const LoadingFullScreen: React.FC<LoadingFullScreenProps>;
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ import { ColorOption } from './Typography';
3
+ export type LogoVariant = 'horizontal' | 'vertical' | 'icon';
4
+ export type LogoSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';
5
+ export interface LogoProps extends React.HTMLAttributes<HTMLDivElement> {
6
+ variant?: LogoVariant;
7
+ size?: LogoSize;
8
+ color?: ColorOption;
9
+ }
10
+ declare const Logo: React.ForwardRefExoticComponent<LogoProps & React.RefAttributes<HTMLDivElement>>;
11
+ export { Logo };
@@ -0,0 +1,60 @@
1
+ import React from 'react';
2
+ import { LogoVariant, LogoSize } from './Logo';
3
+ import { IconName } from './Icon';
4
+ import { ColorOption } from './Typography';
5
+ import { ColorName } from '../colors';
6
+ export type NavbarVariant = 'nologin' | 'onlogin';
7
+ export interface NavItem {
8
+ /** Icon name */
9
+ icon: IconName;
10
+ /** Label text */
11
+ label: string;
12
+ /** Click handler */
13
+ onClick?: () => void;
14
+ /** Navigation path (for use with router navigate) */
15
+ to?: string;
16
+ /** If true, this item is active/selected */
17
+ active?: boolean;
18
+ }
19
+ export interface NavbarProps extends React.HTMLAttributes<HTMLElement> {
20
+ /** Navbar variant */
21
+ variant?: NavbarVariant;
22
+ /** Logo variant to display */
23
+ logoVariant?: LogoVariant;
24
+ /** Logo size */
25
+ logoSize?: LogoSize;
26
+ /** Logo color */
27
+ logoColor?: ColorOption;
28
+ /** Background color from Aloha palette (only for nologin) */
29
+ backgroundColor?: ColorName;
30
+ /** Text color */
31
+ textColor?: ColorName;
32
+ /** Active item indicator color (border around icon) */
33
+ activeColor?: ColorName;
34
+ /** Nav items background color (onlogin only) */
35
+ navItemsBgColor?: ColorName;
36
+ /** Button background color (nologin only) */
37
+ buttonColor?: ColorName;
38
+ /** Button text color (nologin only) */
39
+ buttonTextColor?: ColorName;
40
+ /** Button border color (nologin only) */
41
+ buttonBorderColor?: ColorName;
42
+ /** Current language label (e.g., "ES", "EN") (nologin only) */
43
+ currentLanguage?: string;
44
+ /** Language selector click handler (nologin only) */
45
+ onLanguageClick?: () => void;
46
+ /** Action button click handler (nologin only) */
47
+ onActionClick?: () => void;
48
+ /** Custom logo element (overrides default Logo component) */
49
+ customLogo?: React.ReactNode;
50
+ /** If true, shows "Register" instead of "Login" (nologin only) */
51
+ isRegister?: boolean;
52
+ /** Button text (overrides default "Iniciar Sesión" or "Registrarse") (nologin only) */
53
+ buttonText?: string;
54
+ /** Navigation items (onlogin only) */
55
+ navItems?: NavItem[];
56
+ /** Navigate function from router (onlogin only) */
57
+ navigate?: (path: string) => void;
58
+ }
59
+ declare const Navbar: React.ForwardRefExoticComponent<NavbarProps & React.RefAttributes<HTMLElement>>;
60
+ export { Navbar };
@@ -0,0 +1,15 @@
1
+ import React from 'react';
2
+ export interface NotificationProps {
3
+ id?: string;
4
+ type: 'like' | 'comment' | 'follow' | 'mention' | 'info';
5
+ title: string;
6
+ message: string;
7
+ timestamp: string;
8
+ avatar?: string;
9
+ read?: boolean;
10
+ onClose?: () => void;
11
+ onClick?: () => void;
12
+ className?: string;
13
+ }
14
+ declare const Notification: React.ForwardRefExoticComponent<NotificationProps & React.RefAttributes<HTMLDivElement>>;
15
+ export { Notification };
@@ -0,0 +1,34 @@
1
+ import React from 'react';
2
+ import { ColorName } from '../colors';
3
+ declare const patternMap: {
4
+ readonly face1: string;
5
+ readonly face2: string;
6
+ readonly face3: string;
7
+ readonly face4: string;
8
+ readonly face5: string;
9
+ readonly face6: string;
10
+ };
11
+ export type PatternName = keyof typeof patternMap;
12
+ export type PatternSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl';
13
+ export interface PatternProps extends React.HTMLAttributes<HTMLDivElement> {
14
+ /** Name of the pattern */
15
+ name: PatternName;
16
+ /** Size of the pattern */
17
+ size?: PatternSize;
18
+ /** Primary color (will replace the pattern's main color) */
19
+ color?: ColorName;
20
+ /** Background color */
21
+ backgroundColor?: ColorName | 'transparent';
22
+ /** If true, the pattern will be used as a repeating background */
23
+ repeat?: boolean;
24
+ /** Custom width (only used when repeat is false) */
25
+ width?: number;
26
+ /** Custom height (only used when repeat is false) */
27
+ height?: number;
28
+ /** Padding around the pattern (in pixels) */
29
+ padding?: number;
30
+ /** Border radius (rounded corners) */
31
+ rounded?: 'none' | 'sm' | 'md' | 'lg' | 'xl' | 'full';
32
+ }
33
+ declare const Pattern: React.ForwardRefExoticComponent<PatternProps & React.RefAttributes<HTMLDivElement>>;
34
+ export { Pattern, patternMap };
@@ -0,0 +1,31 @@
1
+ import React from 'react';
2
+ import { type PatternName } from './Pattern';
3
+ import { type ColorName } from '../colors';
4
+ export interface PatternFillProps extends React.HTMLAttributes<HTMLDivElement> {
5
+ /** Width of the container (px or '100%') */
6
+ width?: number | string;
7
+ /** Height of the container (px or '100%') */
8
+ height?: number | string;
9
+ /** Size of each pattern (px) */
10
+ patternSize?: number;
11
+ /** Gap between patterns (px) */
12
+ gap?: number;
13
+ /** Array of patterns to use (if empty, uses all patterns randomly) */
14
+ patterns?: PatternName[];
15
+ /** Array of colors to use (if empty, uses random colors) */
16
+ colors?: ColorName[];
17
+ /** If true, patterns will be randomly rotated (only 0°, 90°, 180°, 270°) */
18
+ randomRotation?: boolean;
19
+ /** If true, patterns will have random scales */
20
+ randomScale?: boolean;
21
+ /** If true, patterns will have random opacity */
22
+ randomOpacity?: boolean;
23
+ /** Background color of the container */
24
+ backgroundColor?: ColorName | 'transparent';
25
+ /** Border radius */
26
+ rounded?: 'none' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'full';
27
+ /** Padding around the container */
28
+ padding?: number;
29
+ }
30
+ declare const PatternFill: React.ForwardRefExoticComponent<PatternFillProps & React.RefAttributes<HTMLDivElement>>;
31
+ export { PatternFill };