chiperos-ai-components-library 0.0.1 → 0.1.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.
@@ -0,0 +1,66 @@
1
+ import { StoryObj } from '@storybook/react';
2
+
3
+ declare const meta: {
4
+ title: string;
5
+ component: import('react').ForwardRefExoticComponent<import('./index').InputProps & import('react').RefAttributes<HTMLInputElement>>;
6
+ parameters: {
7
+ layout: string;
8
+ };
9
+ tags: string[];
10
+ argTypes: {
11
+ value: {
12
+ control: "text";
13
+ description: string;
14
+ };
15
+ placeholder: {
16
+ control: "text";
17
+ description: string;
18
+ };
19
+ type: {
20
+ control: "select";
21
+ options: string[];
22
+ description: string;
23
+ };
24
+ disabled: {
25
+ control: "boolean";
26
+ description: string;
27
+ };
28
+ error: {
29
+ control: "text";
30
+ description: string;
31
+ };
32
+ showPasswordToggle: {
33
+ control: "boolean";
34
+ description: string;
35
+ };
36
+ onChange: {
37
+ action: string;
38
+ description: string;
39
+ };
40
+ };
41
+ };
42
+ export default meta;
43
+ type Story = StoryObj<typeof meta>;
44
+ export declare const Default: Story;
45
+ export declare const WithValue: Story;
46
+ export declare const Disabled: Story;
47
+ export declare const WithError: Story;
48
+ export declare const WithErrorMessage: Story;
49
+ export declare const PasswordInput: Story;
50
+ export declare const EmailInput: Story;
51
+ export declare const NumberInput: Story;
52
+ export declare const Required: Story;
53
+ export declare const WithAutoComplete: Story;
54
+ export declare const LongValue: Story;
55
+ export declare const AllStates: Story;
56
+ export declare const ResponsiveWidth: Story;
57
+ export declare const ValidationEmail: Story;
58
+ export declare const ValidationNumber: Story;
59
+ export declare const ValidationPhone: Story;
60
+ export declare const ValidationMinLength: Story;
61
+ export declare const ValidationMaxLength: Story;
62
+ export declare const ValidationRequired: Story;
63
+ export declare const ValidationCustomRegex: Story;
64
+ export declare const ValidationMultiple: Story;
65
+ export declare const AllValidations: Story;
66
+ export declare const FormExample: Story;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,94 @@
1
+ import { default as React, InputHTMLAttributes } from 'react';
2
+ import { CountryCode } from 'libphonenumber-js';
3
+
4
+ export interface InputValidation {
5
+ /**
6
+ * Validate as email
7
+ */
8
+ email?: boolean | string;
9
+ /**
10
+ * Validate as number
11
+ */
12
+ number?: boolean | string;
13
+ /**
14
+ * Validate as phone number for specific country
15
+ */
16
+ phone?: {
17
+ country?: CountryCode;
18
+ message?: string;
19
+ };
20
+ /**
21
+ * Minimum length validation
22
+ */
23
+ minLength?: {
24
+ value: number;
25
+ message?: string;
26
+ };
27
+ /**
28
+ * Maximum length validation
29
+ */
30
+ maxLength?: {
31
+ value: number;
32
+ message?: string;
33
+ };
34
+ /**
35
+ * Custom regex validation
36
+ */
37
+ regex?: {
38
+ pattern: RegExp;
39
+ message?: string;
40
+ };
41
+ /**
42
+ * Required field validation
43
+ */
44
+ required?: boolean | string;
45
+ }
46
+ export interface InputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'onChange'> {
47
+ /**
48
+ * The current value of the input
49
+ */
50
+ value?: string;
51
+ /**
52
+ * Callback fired when the value changes
53
+ */
54
+ onChange?: (text: string) => void;
55
+ /**
56
+ * Whether the input is disabled
57
+ */
58
+ disabled?: boolean;
59
+ /**
60
+ * Error message or state - shows error styling when truthy
61
+ * External error (overrides validation errors)
62
+ */
63
+ error?: string | boolean;
64
+ /**
65
+ * Placeholder text
66
+ */
67
+ placeholder?: string;
68
+ /**
69
+ * Input type (text, password, email, etc.)
70
+ */
71
+ type?: string;
72
+ /**
73
+ * Additional CSS classes
74
+ */
75
+ className?: string;
76
+ /**
77
+ * Show password toggle for password inputs
78
+ */
79
+ showPasswordToggle?: boolean;
80
+ /**
81
+ * Validation rules
82
+ */
83
+ validation?: InputValidation;
84
+ /**
85
+ * Validate on change (default: true)
86
+ */
87
+ validateOnChange?: boolean;
88
+ /**
89
+ * Validate on blur (default: true)
90
+ */
91
+ validateOnBlur?: boolean;
92
+ }
93
+ export declare const Input: React.ForwardRefExoticComponent<InputProps & React.RefAttributes<HTMLInputElement>>;
94
+ export default Input;
@@ -0,0 +1,50 @@
1
+ import { StoryObj } from '@storybook/react';
2
+
3
+ declare const meta: {
4
+ title: string;
5
+ component: import('react').ForwardRefExoticComponent<import('./index').SelectProps & import('react').RefAttributes<HTMLButtonElement>>;
6
+ parameters: {
7
+ layout: string;
8
+ };
9
+ tags: string[];
10
+ argTypes: {
11
+ value: {
12
+ control: "text";
13
+ description: string;
14
+ };
15
+ placeholder: {
16
+ control: "text";
17
+ description: string;
18
+ };
19
+ label: {
20
+ control: "text";
21
+ description: string;
22
+ };
23
+ disabled: {
24
+ control: "boolean";
25
+ description: string;
26
+ };
27
+ options: {
28
+ control: "object";
29
+ description: string;
30
+ };
31
+ onChange: {
32
+ action: string;
33
+ description: string;
34
+ };
35
+ };
36
+ };
37
+ export default meta;
38
+ type Story = StoryObj<typeof meta>;
39
+ export declare const Default: Story;
40
+ export declare const WithLabel: Story;
41
+ export declare const WithValue: Story;
42
+ export declare const Disabled: Story;
43
+ export declare const DisabledWithValue: Story;
44
+ export declare const ManyOptions: Story;
45
+ export declare const CountrySelector: Story;
46
+ export declare const LongTextOptions: Story;
47
+ export declare const CustomWidth: Story;
48
+ export declare const AllStates: Story;
49
+ export declare const FormExample: Story;
50
+ export declare const Interactive: Story;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,36 @@
1
+ export interface SelectOption {
2
+ id: string;
3
+ text: string;
4
+ }
5
+ export interface SelectProps {
6
+ /**
7
+ * The currently selected value (id)
8
+ */
9
+ value?: string;
10
+ /**
11
+ * Callback fired when selection changes
12
+ */
13
+ onChange?: (text: string) => void;
14
+ /**
15
+ * Whether the select is disabled
16
+ */
17
+ disabled?: boolean;
18
+ /**
19
+ * Array of options to display
20
+ */
21
+ options: SelectOption[];
22
+ /**
23
+ * Placeholder text when no option is selected
24
+ */
25
+ placeholder?: string;
26
+ /**
27
+ * Label text shown above the selected value
28
+ */
29
+ label?: string;
30
+ /**
31
+ * Additional CSS classes
32
+ */
33
+ className?: string;
34
+ }
35
+ export declare const Select: import('react').ForwardRefExoticComponent<SelectProps & import('react').RefAttributes<HTMLButtonElement>>;
36
+ export default Select;
@@ -0,0 +1,35 @@
1
+ import { Meta, StoryObj } from '@storybook/react';
2
+ import { TableProps } from './index';
3
+
4
+ interface User {
5
+ id: number;
6
+ name: string;
7
+ email: string;
8
+ role: string;
9
+ status: string;
10
+ }
11
+ declare const meta: Meta<TableProps<User>>;
12
+ export default meta;
13
+ type Story = StoryObj<TableProps<User>>;
14
+ export declare const Default: Story;
15
+ export declare const WithPagination: Story;
16
+ export declare const CustomRowsPerPage: Story;
17
+ export declare const Loading: Story;
18
+ export declare const Empty: Story;
19
+ export declare const CustomEmptyMessage: Story;
20
+ export declare const WithCustomRender: Story;
21
+ export declare const WithTwoLineCell: Story;
22
+ interface ExtendedUser {
23
+ id: number;
24
+ firstName: string;
25
+ lastName: string;
26
+ email: string;
27
+ phone: string;
28
+ department: string;
29
+ role: string;
30
+ }
31
+ export declare const ManyColumns: StoryObj<TableProps<ExtendedUser>>;
32
+ export declare const RowHighlighting: Story;
33
+ export declare const Interactive: Story;
34
+ export declare const ClickableRows: Story;
35
+ export declare const SortableExample: Story;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,64 @@
1
+ import { default as React } from 'react';
2
+
3
+ export interface TableColumn<T = any> {
4
+ /**
5
+ * Unique key for the column
6
+ */
7
+ key: string;
8
+ /**
9
+ * Header label for the column
10
+ */
11
+ label: string;
12
+ /**
13
+ * Custom render function for cell content
14
+ */
15
+ render?: (row: T, rowIndex: number) => React.ReactNode;
16
+ /**
17
+ * Additional CSS classes for the column
18
+ */
19
+ className?: string;
20
+ }
21
+ export interface TableProps<T = any> {
22
+ /**
23
+ * Array of column definitions
24
+ */
25
+ columns: TableColumn<T>[];
26
+ /**
27
+ * Array of data rows
28
+ */
29
+ data: T[];
30
+ /**
31
+ * Number of rows per page
32
+ */
33
+ rowsPerPage?: number;
34
+ /**
35
+ * Show pagination (default: true)
36
+ */
37
+ showPagination?: boolean;
38
+ /**
39
+ * Custom className for the table container
40
+ */
41
+ className?: string;
42
+ /**
43
+ * Custom className for table rows
44
+ */
45
+ rowClassName?: string | ((row: T, rowIndex: number) => string);
46
+ /**
47
+ * Callback when page changes
48
+ */
49
+ onPageChange?: (page: number) => void;
50
+ /**
51
+ * Current page (for controlled component)
52
+ */
53
+ currentPage?: number;
54
+ /**
55
+ * Loading state
56
+ */
57
+ loading?: boolean;
58
+ /**
59
+ * Empty state message
60
+ */
61
+ emptyMessage?: string;
62
+ }
63
+ export declare function Table<T = any>({ columns, data, rowsPerPage, showPagination, className, rowClassName, onPageChange, currentPage: controlledPage, loading, emptyMessage, }: TableProps<T>): import("react/jsx-runtime").JSX.Element;
64
+ export default Table;
@@ -0,0 +1,48 @@
1
+ import { StoryObj } from '@storybook/react';
2
+
3
+ declare const meta: {
4
+ title: string;
5
+ component: import('react').FC<import('./index').TableHeaderProps>;
6
+ parameters: {
7
+ layout: string;
8
+ };
9
+ tags: string[];
10
+ argTypes: {
11
+ title: {
12
+ control: "text";
13
+ description: string;
14
+ };
15
+ showTitle: {
16
+ control: "boolean";
17
+ description: string;
18
+ };
19
+ searchPlaceholder: {
20
+ control: "text";
21
+ description: string;
22
+ };
23
+ showFilters: {
24
+ control: "boolean";
25
+ description: string;
26
+ };
27
+ showButtons: {
28
+ control: "boolean";
29
+ description: string;
30
+ };
31
+ showCards: {
32
+ control: "boolean";
33
+ description: string;
34
+ };
35
+ };
36
+ };
37
+ export default meta;
38
+ type Story = StoryObj<typeof meta>;
39
+ export declare const Default: Story;
40
+ export declare const WithTitle: Story;
41
+ export declare const WithFilters: Story;
42
+ export declare const WithButtons: Story;
43
+ export declare const WithCards: Story;
44
+ export declare const Complete: Story;
45
+ export declare const OnlySearch: Story;
46
+ export declare const SearchAndButtons: Story;
47
+ export declare const ManyFilters: Story;
48
+ export declare const CustomCards: Story;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,125 @@
1
+ import { default as React } from 'react';
2
+ import { SelectOption } from '../Select';
3
+
4
+ export interface TableHeaderFilter {
5
+ /**
6
+ * Unique key for the filter
7
+ */
8
+ key: string;
9
+ /**
10
+ * Label for the filter (used as placeholder if placeholder not provided)
11
+ */
12
+ label: string;
13
+ /**
14
+ * Placeholder text shown when no option is selected
15
+ */
16
+ placeholder?: string;
17
+ /**
18
+ * Options for dropdown filter
19
+ */
20
+ options?: SelectOption[];
21
+ /**
22
+ * Selected value
23
+ */
24
+ value?: string;
25
+ /**
26
+ * Callback when filter changes
27
+ */
28
+ onChange?: (value: string) => void;
29
+ }
30
+ export interface TableHeaderButton {
31
+ /**
32
+ * Button label
33
+ */
34
+ label: string;
35
+ /**
36
+ * Button variant (primary = green, outline = white with border)
37
+ */
38
+ variant?: 'primary' | 'outline';
39
+ /**
40
+ * Is this a dropdown button?
41
+ */
42
+ isDropdown?: boolean;
43
+ /**
44
+ * Dropdown options (if isDropdown is true)
45
+ */
46
+ dropdownOptions?: SelectOption[];
47
+ /**
48
+ * Selected dropdown value
49
+ */
50
+ dropdownValue?: string;
51
+ /**
52
+ * Click handler for regular button
53
+ */
54
+ onClick?: () => void;
55
+ /**
56
+ * Change handler for dropdown button
57
+ */
58
+ onDropdownChange?: (value: string) => void;
59
+ }
60
+ export interface TableHeaderCard {
61
+ /**
62
+ * Card label
63
+ */
64
+ label: string;
65
+ /**
66
+ * Card value
67
+ */
68
+ value: string | number;
69
+ /**
70
+ * Icon element
71
+ */
72
+ icon?: React.ReactNode;
73
+ }
74
+ export interface TableHeaderProps {
75
+ /**
76
+ * Title shown at the top (optional)
77
+ */
78
+ title?: string;
79
+ /**
80
+ * Show title
81
+ */
82
+ showTitle?: boolean;
83
+ /**
84
+ * Search placeholder
85
+ */
86
+ searchPlaceholder?: string;
87
+ /**
88
+ * Search value
89
+ */
90
+ searchValue?: string;
91
+ /**
92
+ * Search callback
93
+ */
94
+ onSearchChange?: (value: string) => void;
95
+ /**
96
+ * Array of filters
97
+ */
98
+ filters?: TableHeaderFilter[];
99
+ /**
100
+ * Show filters row
101
+ */
102
+ showFilters?: boolean;
103
+ /**
104
+ * Array of buttons
105
+ */
106
+ buttons?: TableHeaderButton[];
107
+ /**
108
+ * Show buttons
109
+ */
110
+ showButtons?: boolean;
111
+ /**
112
+ * Array of KPI cards to show
113
+ */
114
+ cards?: TableHeaderCard[];
115
+ /**
116
+ * Show cards
117
+ */
118
+ showCards?: boolean;
119
+ /**
120
+ * Additional CSS classes
121
+ */
122
+ className?: string;
123
+ }
124
+ export declare const TableHeader: React.FC<TableHeaderProps>;
125
+ export default TableHeader;
@@ -4,11 +4,15 @@ export * from './ButtonRadix';
4
4
  export * from './BrandIcons';
5
5
  export * from './CardsGrid';
6
6
  export * from './FeatureCard';
7
+ export * from './Input';
7
8
  export * from './KPIComparison';
8
9
  export * from './KPICard';
9
10
  export * from './Loader';
10
11
  export * from './OptionCard';
11
12
  export * from './OrderCard';
12
13
  export * from './PaginationLib';
14
+ export * from './Select';
13
15
  export * from './Switcher';
16
+ export * from './Table';
17
+ export * from './TableHeader';
14
18
  export * from './Toasts';
package/package.json CHANGED
@@ -1,16 +1,17 @@
1
1
  {
2
2
  "name": "chiperos-ai-components-library",
3
3
  "private": false,
4
- "version": "0.0.1",
5
- "description": "Chiper Components Library - A modern React component library built with Vite, TypeScript and Tailwind CSS.",
4
+ "version": "0.1.0",
5
+ "description": "Chiperos AI Components Library - A modern React component library built with Vite, TypeScript and Tailwind CSS.",
6
6
  "type": "module",
7
- "main": "./dist/chiper-components-library.cjs",
8
- "module": "./dist/chiper-components-library.js",
7
+ "main": "./dist/chiperos-ai-components-library.cjs",
8
+ "module": "./dist/chiperos-ai-components-library.js",
9
9
  "types": "./dist/index.d.ts",
10
10
  "exports": {
11
11
  ".": {
12
- "import": "./dist/chiper-components-library.js",
13
- "require": "./dist/chiper-components-library.cjs"
12
+ "types": "./dist/index.d.ts",
13
+ "import": "./dist/chiperos-ai-components-library.js",
14
+ "require": "./dist/chiperos-ai-components-library.cjs"
14
15
  }
15
16
  },
16
17
  "files": [
@@ -25,19 +26,47 @@
25
26
  "build-storybook": "storybook build"
26
27
  },
27
28
  "dependencies": {
29
+ "class-variance-authority": "^0.7.1",
30
+ "libphonenumber-js": "^1.12.31",
31
+ "zod": "^4.1.13"
32
+ },
33
+ "peerDependencies": {
34
+ "react": "^18.2.0",
35
+ "react-dom": "^18.2.0",
28
36
  "@radix-ui/react-radio-group": "^1.3.8",
29
37
  "@radix-ui/react-slot": "^1.2.4",
30
38
  "@radix-ui/react-switch": "^1.2.6",
31
- "class-variance-authority": "^0.7.1",
32
39
  "lucide-react": "^0.534.0",
33
40
  "next-intl": "^4.3.4",
34
41
  "radix-ui": "^1.4.3"
35
42
  },
36
- "peerDependencies": {
37
- "react": "^18.2.0",
38
- "react-dom": "^18.2.0"
43
+ "peerDependenciesMeta": {
44
+ "@radix-ui/react-radio-group": {
45
+ "optional": true
46
+ },
47
+ "@radix-ui/react-slot": {
48
+ "optional": true
49
+ },
50
+ "@radix-ui/react-switch": {
51
+ "optional": true
52
+ },
53
+ "lucide-react": {
54
+ "optional": true
55
+ },
56
+ "next-intl": {
57
+ "optional": true
58
+ },
59
+ "radix-ui": {
60
+ "optional": true
61
+ }
39
62
  },
40
63
  "devDependencies": {
64
+ "@radix-ui/react-radio-group": "^1.3.8",
65
+ "@radix-ui/react-slot": "^1.2.4",
66
+ "@radix-ui/react-switch": "^1.2.6",
67
+ "lucide-react": "^0.534.0",
68
+ "next-intl": "^4.3.4",
69
+ "radix-ui": "^1.4.3",
41
70
  "@chromatic-com/storybook": "^1.5.0",
42
71
  "@storybook/addon-essentials": "^8.1.10",
43
72
  "@storybook/addon-interactions": "^8.1.10",
@@ -87,10 +116,10 @@
87
116
  "license": "MIT",
88
117
  "repository": {
89
118
  "type": "git",
90
- "url": "https://github.com/chiper-team/chiper-components-library.git"
119
+ "url": "https://github.com/chiperos-ai/chiperos-ai-components-library.git"
91
120
  },
92
- "homepage": "https://github.com/chiper-team/chiper-components-library#readme",
121
+ "homepage": "https://github.com/chiperos-ai/chiperos-ai-components-library#readme",
93
122
  "bugs": {
94
- "url": "https://github.com/chiper-team/chiper-components-library/issues"
123
+ "url": "https://github.com/chiperos-ai/chiperos-ai-components-library/issues"
95
124
  }
96
125
  }