aha-components 1.7.12 → 1.8.1

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 (47) hide show
  1. package/README.md +10 -0
  2. package/dist/Avatar.esm.js +2 -0
  3. package/dist/Avatar.esm.js.map +1 -0
  4. package/dist/Avatar.js +2 -0
  5. package/dist/Avatar.js.map +1 -0
  6. package/dist/Badge.esm.js +2 -0
  7. package/dist/Badge.esm.js.map +1 -0
  8. package/dist/Badge.js +2 -0
  9. package/dist/Badge.js.map +1 -0
  10. package/dist/Checkbox.esm.js +1 -1
  11. package/dist/Checkbox.esm.js.map +1 -1
  12. package/dist/Checkbox.js +1 -1
  13. package/dist/Checkbox.js.map +1 -1
  14. package/dist/Radio.esm.js +1 -1
  15. package/dist/Radio.esm.js.map +1 -1
  16. package/dist/Radio.js +1 -1
  17. package/dist/Radio.js.map +1 -1
  18. package/dist/Table.esm.js +1 -1
  19. package/dist/Table.esm.js.map +1 -1
  20. package/dist/Table.js +1 -1
  21. package/dist/Table.js.map +1 -1
  22. package/dist/Tag.esm.js +1 -1
  23. package/dist/Tag.esm.js.map +1 -1
  24. package/dist/Tag.js +1 -1
  25. package/dist/Tag.js.map +1 -1
  26. package/dist/components/Avatar/Avatar.stories.d.ts +12 -0
  27. package/dist/components/Avatar/index.d.ts +42 -0
  28. package/dist/components/Badge/Badge.stories.d.ts +15 -0
  29. package/dist/components/Badge/index.d.ts +71 -0
  30. package/dist/components/Checkbox/Checkbox.stories.d.ts +5 -4
  31. package/dist/components/Checkbox/index.d.ts +6 -0
  32. package/dist/components/Radio/Radio.stories.d.ts +6 -4
  33. package/dist/components/Radio/index.d.ts +6 -0
  34. package/dist/components/Tag/Tag.stories.d.ts +5 -8
  35. package/dist/components/Tag/index.d.ts +24 -2
  36. package/dist/design-tokens/theme.css +26 -0
  37. package/dist/design-tokens/theme.tailwind4.css +26 -0
  38. package/dist/index.css +3848 -0
  39. package/dist/index.d.ts +142 -4
  40. package/dist/index.esm.css +3848 -0
  41. package/dist/index.esm.js +1 -1
  42. package/dist/index.esm.js.map +1 -1
  43. package/dist/index.js +1 -1
  44. package/dist/index.js.map +1 -1
  45. package/dist/theme.css +26 -0
  46. package/dist/tokens.d.ts +28 -0
  47. package/package.json +1 -1
@@ -0,0 +1,42 @@
1
+ import React, { type FC } from 'react';
2
+ export type AvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';
3
+ export interface AvatarProps {
4
+ size?: AvatarSize;
5
+ src?: string | null;
6
+ alt?: string;
7
+ /** Two-letter initials displayed when no image is provided */
8
+ initials?: string;
9
+ /** Custom icon component displayed as placeholder */
10
+ placeholderIcon?: FC<{
11
+ style?: React.CSSProperties;
12
+ }>;
13
+ /** Online/offline status indicator dot */
14
+ status?: 'online' | 'offline';
15
+ /** Company logo badge displayed bottom-right */
16
+ companyIcon?: {
17
+ src: string;
18
+ alt?: string;
19
+ };
20
+ /** Blue verified checkmark badge */
21
+ verified?: boolean;
22
+ style?: React.CSSProperties;
23
+ className?: string;
24
+ }
25
+ export interface AvatarLabelGroupProps {
26
+ size?: 'sm' | 'md' | 'lg' | 'xl';
27
+ name: string;
28
+ supportingText?: string;
29
+ avatarSrc?: string | null;
30
+ avatarInitials?: string;
31
+ status?: 'online' | 'offline';
32
+ companyIcon?: {
33
+ src: string;
34
+ alt?: string;
35
+ };
36
+ verified?: boolean;
37
+ style?: React.CSSProperties;
38
+ className?: string;
39
+ }
40
+ declare const Avatar: React.FC<AvatarProps>;
41
+ export declare const AvatarLabelGroup: React.FC<AvatarLabelGroupProps>;
42
+ export default Avatar;
@@ -0,0 +1,15 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { Badge } from './index';
3
+ declare const meta: Meta<typeof Badge>;
4
+ export default meta;
5
+ export declare const AllColors: StoryObj;
6
+ export declare const AllSizes: StoryObj;
7
+ export declare const WithDot: StoryObj;
8
+ export declare const WithIcon: StoryObj;
9
+ export declare const WithButton: StoryObj;
10
+ export declare const PillIconOnly: StoryObj;
11
+ export declare const BadgeColorIconOnly: StoryObj;
12
+ export declare const ModernIconOnly: StoryObj;
13
+ export declare const WithAvatar: StoryObj;
14
+ export declare const ModernWithButton: StoryObj;
15
+ export declare const Modern: StoryObj;
@@ -0,0 +1,71 @@
1
+ import React from 'react';
2
+ import type { MouseEventHandler, ReactNode } from 'react';
3
+ export type BadgeColor = 'gray' | 'brand' | 'error' | 'warning' | 'success' | 'grayBlue' | 'blueLight' | 'blue' | 'indigo' | 'purple' | 'pink' | 'orange';
4
+ export type BadgeVariant = 'pill' | 'badge' | 'modern';
5
+ export type BadgeSize = 'sm' | 'md' | 'lg';
6
+ export type BadgeIconComponent = React.FC<{
7
+ style?: React.CSSProperties;
8
+ className?: string;
9
+ }>;
10
+ export interface BadgeProps {
11
+ variant?: BadgeVariant;
12
+ size?: BadgeSize;
13
+ color?: BadgeColor;
14
+ children: ReactNode;
15
+ style?: React.CSSProperties;
16
+ className?: string;
17
+ }
18
+ export declare const Badge: React.FC<BadgeProps>;
19
+ export interface BadgeWithDotProps {
20
+ variant?: BadgeVariant;
21
+ size?: BadgeSize;
22
+ color?: BadgeColor;
23
+ children: ReactNode;
24
+ style?: React.CSSProperties;
25
+ className?: string;
26
+ }
27
+ export declare const BadgeWithDot: React.FC<BadgeWithDotProps>;
28
+ export interface BadgeWithIconProps {
29
+ variant?: BadgeVariant;
30
+ size?: BadgeSize;
31
+ color?: BadgeColor;
32
+ iconLeading?: BadgeIconComponent;
33
+ iconTrailing?: BadgeIconComponent;
34
+ children: ReactNode;
35
+ style?: React.CSSProperties;
36
+ className?: string;
37
+ }
38
+ export declare const BadgeWithIcon: React.FC<BadgeWithIconProps>;
39
+ export interface BadgeWithButtonProps {
40
+ variant?: BadgeVariant;
41
+ size?: BadgeSize;
42
+ color?: BadgeColor;
43
+ icon?: BadgeIconComponent;
44
+ children: ReactNode;
45
+ buttonLabel?: string;
46
+ onButtonClick?: MouseEventHandler<HTMLButtonElement>;
47
+ style?: React.CSSProperties;
48
+ className?: string;
49
+ }
50
+ export declare const BadgeWithButton: React.FC<BadgeWithButtonProps>;
51
+ export interface BadgeIconProps {
52
+ variant?: BadgeVariant;
53
+ size?: BadgeSize;
54
+ color?: BadgeColor;
55
+ icon: BadgeIconComponent;
56
+ style?: React.CSSProperties;
57
+ className?: string;
58
+ }
59
+ export declare const BadgeIcon: React.FC<BadgeIconProps>;
60
+ export interface BadgeWithImageProps {
61
+ variant?: Exclude<BadgeVariant, 'modern'>;
62
+ size?: BadgeSize;
63
+ color?: BadgeColor;
64
+ imgSrc: string;
65
+ imgAlt?: string;
66
+ children: ReactNode;
67
+ style?: React.CSSProperties;
68
+ className?: string;
69
+ }
70
+ export declare const BadgeWithImage: React.FC<BadgeWithImageProps>;
71
+ export default Badge;
@@ -3,10 +3,11 @@ import Checkbox from './index';
3
3
  declare const meta: Meta<typeof Checkbox>;
4
4
  export default meta;
5
5
  type Story = StoryObj<typeof Checkbox>;
6
- export declare const Basic: Story;
6
+ export declare const Default: Story;
7
7
  export declare const WithLabel: Story;
8
- export declare const Checked: Story;
9
- export declare const Indeterminate: Story;
10
- export declare const Disabled: Story;
8
+ export declare const WithHint: Story;
9
+ export declare const Sizes: Story;
11
10
  export declare const AllStates: Story;
11
+ export declare const Focused: Story;
12
+ export declare const WithHintAllStates: Story;
12
13
  export declare const Controlled: Story;
@@ -7,6 +7,12 @@ export interface CheckboxProps {
7
7
  className?: string;
8
8
  style?: React.CSSProperties;
9
9
  children?: React.ReactNode;
10
+ /** sm = 16px, md = 20px */
11
+ size?: 'sm' | 'md';
12
+ /** Secondary description rendered below the label */
13
+ hint?: React.ReactNode;
14
+ /** Force focused appearance (useful for Storybook demos) */
15
+ isFocused?: boolean;
10
16
  }
11
17
  declare const Checkbox: React.FC<CheckboxProps>;
12
18
  export default Checkbox;
@@ -3,8 +3,10 @@ import Radio from './index';
3
3
  declare const meta: Meta<typeof Radio>;
4
4
  export default meta;
5
5
  type Story = StoryObj<typeof Radio>;
6
- export declare const Basic: Story;
7
- export declare const Checked: Story;
8
- export declare const Disabled: Story;
9
- export declare const RadioGroup: Story;
6
+ export declare const Default: Story;
7
+ export declare const WithHint: Story;
10
8
  export declare const Sizes: Story;
9
+ export declare const AllStates: Story;
10
+ export declare const Focused: Story;
11
+ export declare const RadioGroup: Story;
12
+ export declare const RadioGroupWithHint: Story;
@@ -8,6 +8,12 @@ export interface RadioProps {
8
8
  children?: React.ReactNode;
9
9
  value?: any;
10
10
  name?: string;
11
+ /** sm = 16px, md = 20px */
12
+ size?: 'sm' | 'md';
13
+ /** Secondary description rendered below the label */
14
+ hint?: React.ReactNode;
15
+ /** Force focused appearance (useful for Storybook demos) */
16
+ isFocused?: boolean;
11
17
  }
12
18
  declare const Radio: React.FC<RadioProps>;
13
19
  export default Radio;
@@ -4,11 +4,8 @@ declare const meta: Meta<typeof Tag>;
4
4
  export default meta;
5
5
  type Story = StoryObj<typeof meta>;
6
6
  export declare const Default: Story;
7
- export declare const AllColors: Story;
8
- export declare const Variants: Story;
9
- export declare const WithStroke: Story;
10
- export declare const Sizes: Story;
11
- export declare const WithIcons: Story;
12
- export declare const Clickable: Story;
13
- export declare const CustomColors: Story;
14
- export declare const ComplexExample: Story;
7
+ export declare const Overview: Story;
8
+ export declare const Size: Story;
9
+ export declare const Icons: Story;
10
+ export declare const Actions: Story;
11
+ export declare const Checkbox: Story;
@@ -1,19 +1,41 @@
1
1
  import React from 'react';
2
2
  export type TagColor = 'Green' | 'Red' | 'Orange' | 'Cyan' | 'Violet' | 'Pink' | 'Gray' | 'Yellow' | 'Blue' | string;
3
3
  export type TagVariant = 'light' | 'fill';
4
- export type TagSize = 'large' | 'small';
4
+ /** sm/md/lg are the canonical sizes; large/small are legacy aliases */
5
+ export type TagSize = 'sm' | 'md' | 'lg' | 'large' | 'small';
6
+ /** Leading icon variant */
7
+ export type TagIconType = 'none' | 'dot' | 'avatar' | 'icon';
8
+ /** Right-side action */
9
+ export type TagAction = 'none' | 'x-close' | 'count';
10
+ /** @deprecated Use iconType instead */
5
11
  export type IconPosition = 'leading' | 'after' | 'none';
6
12
  export interface TagProps {
7
13
  children: React.ReactNode;
8
- color: TagColor;
14
+ color?: TagColor;
9
15
  variant?: TagVariant;
10
16
  size?: TagSize;
11
17
  stroke?: boolean;
18
+ iconType?: TagIconType;
12
19
  icon?: React.ReactElement;
20
+ avatarSrc?: string;
21
+ dotColor?: string;
22
+ action?: TagAction;
23
+ count?: number;
24
+ onClose?: () => void;
25
+ checkbox?: boolean;
26
+ checked?: boolean;
27
+ onCheckedChange?: (checked: boolean) => void;
28
+ /** @deprecated use iconType='icon' */
13
29
  iconPosition?: IconPosition;
14
30
  className?: string;
15
31
  onClick?: () => void;
16
32
  [key: string]: any;
17
33
  }
34
+ export interface TagAvatarProps {
35
+ src?: string;
36
+ alt?: string;
37
+ size?: number;
38
+ }
39
+ export declare const TagAvatar: React.FC<TagAvatarProps>;
18
40
  declare const Tag: React.FC<TagProps>;
19
41
  export default Tag;
@@ -85,6 +85,20 @@
85
85
  --color-gray-900: #1c1917;
86
86
  --color-gray-950: #171412;
87
87
 
88
+ /* gray-blue */
89
+ --color-gray-blue-25: #fcfcfd;
90
+ --color-gray-blue-50: #f8f9fc;
91
+ --color-gray-blue-100: #eaecf5;
92
+ --color-gray-blue-200: #d5d9eb;
93
+ --color-gray-blue-300: #b3b8db;
94
+ --color-gray-blue-400: #717bbc;
95
+ --color-gray-blue-500: #4e5ba6;
96
+ --color-gray-blue-600: #3e4784;
97
+ --color-gray-blue-700: #363f72;
98
+ --color-gray-blue-800: #293056;
99
+ --color-gray-blue-900: #101323;
100
+ --color-gray-blue-950: #0d0f1c;
101
+
88
102
  /* moss */
89
103
  --color-moss-25: #fafdf7;
90
104
  --color-moss-50: #f5fbee;
@@ -580,6 +594,18 @@
580
594
  --color-gray-800: var(--color-gray-800);
581
595
  --color-gray-900: var(--color-gray-900);
582
596
  --color-gray-950: var(--color-gray-950);
597
+ --color-gray-blue-25: var(--color-gray-blue-25);
598
+ --color-gray-blue-50: var(--color-gray-blue-50);
599
+ --color-gray-blue-100: var(--color-gray-blue-100);
600
+ --color-gray-blue-200: var(--color-gray-blue-200);
601
+ --color-gray-blue-300: var(--color-gray-blue-300);
602
+ --color-gray-blue-400: var(--color-gray-blue-400);
603
+ --color-gray-blue-500: var(--color-gray-blue-500);
604
+ --color-gray-blue-600: var(--color-gray-blue-600);
605
+ --color-gray-blue-700: var(--color-gray-blue-700);
606
+ --color-gray-blue-800: var(--color-gray-blue-800);
607
+ --color-gray-blue-900: var(--color-gray-blue-900);
608
+ --color-gray-blue-950: var(--color-gray-blue-950);
583
609
  --color-moss-25: var(--color-moss-25);
584
610
  --color-moss-50: var(--color-moss-50);
585
611
  --color-moss-100: var(--color-moss-100);
@@ -85,6 +85,20 @@
85
85
  --color-gray-900: #1c1917;
86
86
  --color-gray-950: #171412;
87
87
 
88
+ /* gray-blue */
89
+ --color-gray-blue-25: #fcfcfd;
90
+ --color-gray-blue-50: #f8f9fc;
91
+ --color-gray-blue-100: #eaecf5;
92
+ --color-gray-blue-200: #d5d9eb;
93
+ --color-gray-blue-300: #b3b8db;
94
+ --color-gray-blue-400: #717bbc;
95
+ --color-gray-blue-500: #4e5ba6;
96
+ --color-gray-blue-600: #3e4784;
97
+ --color-gray-blue-700: #363f72;
98
+ --color-gray-blue-800: #293056;
99
+ --color-gray-blue-900: #101323;
100
+ --color-gray-blue-950: #0d0f1c;
101
+
88
102
  /* moss */
89
103
  --color-moss-25: #fafdf7;
90
104
  --color-moss-50: #f5fbee;
@@ -580,6 +594,18 @@
580
594
  --color-gray-800: var(--color-gray-800);
581
595
  --color-gray-900: var(--color-gray-900);
582
596
  --color-gray-950: var(--color-gray-950);
597
+ --color-gray-blue-25: var(--color-gray-blue-25);
598
+ --color-gray-blue-50: var(--color-gray-blue-50);
599
+ --color-gray-blue-100: var(--color-gray-blue-100);
600
+ --color-gray-blue-200: var(--color-gray-blue-200);
601
+ --color-gray-blue-300: var(--color-gray-blue-300);
602
+ --color-gray-blue-400: var(--color-gray-blue-400);
603
+ --color-gray-blue-500: var(--color-gray-blue-500);
604
+ --color-gray-blue-600: var(--color-gray-blue-600);
605
+ --color-gray-blue-700: var(--color-gray-blue-700);
606
+ --color-gray-blue-800: var(--color-gray-blue-800);
607
+ --color-gray-blue-900: var(--color-gray-blue-900);
608
+ --color-gray-blue-950: var(--color-gray-blue-950);
583
609
  --color-moss-25: var(--color-moss-25);
584
610
  --color-moss-50: var(--color-moss-50);
585
611
  --color-moss-100: var(--color-moss-100);