@onehaul/ui 0.1.151 → 0.1.153

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,120 @@
1
+ import React from 'react';
2
+
3
+ type Breakpoint = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl';
4
+
5
+ interface ColSize {
6
+ /**
7
+ * Raster number of cells to occupy, 0 corresponds to display: none
8
+ */
9
+ span?: number;
10
+
11
+ /**
12
+ * Raster order
13
+ */
14
+ order?: number;
15
+
16
+ /**
17
+ * The number of cells to offset Col from the left
18
+ */
19
+ offset?: number;
20
+
21
+ /**
22
+ * The number of cells that raster is moved to the left
23
+ */
24
+ pull?: number;
25
+
26
+ /**
27
+ * The number of cells that raster is moved to the right
28
+ */
29
+ push?: number;
30
+
31
+ /**
32
+ * Flex layout style
33
+ */
34
+ flex?: string | number;
35
+ }
36
+
37
+ export interface ColProps extends React.HTMLAttributes<HTMLDivElement> {
38
+ /**
39
+ * Flex layout style
40
+ */
41
+ flex?: string | number;
42
+
43
+ /**
44
+ * Raster number of cells to occupy, 0 corresponds to display: none
45
+ */
46
+ span?: number;
47
+
48
+ /**
49
+ * Raster order
50
+ * @default 0
51
+ */
52
+ order?: number;
53
+
54
+ /**
55
+ * The number of cells to offset Col from the left
56
+ * @default 0
57
+ */
58
+ offset?: number;
59
+
60
+ /**
61
+ * The number of cells that raster is moved to the left
62
+ * @default 0
63
+ */
64
+ pull?: number;
65
+
66
+ /**
67
+ * The number of cells that raster is moved to the right
68
+ * @default 0
69
+ */
70
+ push?: number;
71
+
72
+ /**
73
+ * screen < 576px and also default setting, could be a span value or an object containing above props
74
+ */
75
+ xs?: number | ColSize;
76
+
77
+ /**
78
+ * screen ≥ 576px, could be a span value or an object containing above props
79
+ */
80
+ sm?: number | ColSize;
81
+
82
+ /**
83
+ * screen ≥ 768px, could be a span value or an object containing above props
84
+ */
85
+ md?: number | ColSize;
86
+
87
+ /**
88
+ * screen ≥ 992px, could be a span value or an object containing above props
89
+ */
90
+ lg?: number | ColSize;
91
+
92
+ /**
93
+ * screen ≥ 1200px, could be a span value or an object containing above props
94
+ */
95
+ xl?: number | ColSize;
96
+
97
+ /**
98
+ * screen ≥ 1600px, could be a span value or an object containing above props
99
+ */
100
+ xxl?: number | ColSize;
101
+
102
+ /**
103
+ * Custom CSS class name
104
+ */
105
+ className?: string;
106
+
107
+ /**
108
+ * Inline style
109
+ */
110
+ style?: React.CSSProperties;
111
+
112
+ /**
113
+ * Children nodes
114
+ */
115
+ children?: React.ReactNode;
116
+ }
117
+
118
+ declare const Col: React.FC<ColProps>;
119
+
120
+ export default Col;
@@ -0,0 +1,79 @@
1
+ import React from 'react';
2
+ import { DatePickerProps as AntDatePickerProps, RangePickerProps } from 'antd';
3
+
4
+ export type DatePickerVariant = 'outlined' | 'borderless' | 'filled' | 'underlined';
5
+ export type DatePickerPicker = 'date' | 'week' | 'month' | 'quarter' | 'year';
6
+
7
+ export const DatePickerVariants = ['outlined', 'borderless', 'filled', 'underlined'] as const;
8
+ export const DatePickerPickers = ['date', 'week', 'month', 'quarter', 'year'] as const;
9
+
10
+ export interface DatePickerProps extends Omit<AntDatePickerProps, 'size' | 'variant' | 'picker'> {
11
+ clearable?: boolean;
12
+ suffixIcon?: React.ReactNode;
13
+ prefix?: React.ReactNode;
14
+ format?: string;
15
+ showTime?: boolean;
16
+ picker?: DatePickerPicker;
17
+ className?: string;
18
+ variant?: DatePickerVariant;
19
+ disabled?: boolean;
20
+ floated?: boolean;
21
+ placeholder?: string;
22
+ value?: string;
23
+ onChange?: (value: string) => void;
24
+ onBlur?: (event: React.FocusEvent<HTMLInputElement>) => void;
25
+ onFocus?: (event: React.FocusEvent<HTMLInputElement>) => void;
26
+ onClear?: () => void;
27
+ onToday?: () => void;
28
+ onCalendarChange?: (date: moment.Moment | null) => void;
29
+ showToday?: boolean;
30
+ showTime?: boolean;
31
+ error?: boolean;
32
+ }
33
+
34
+ interface DatePickerComponent extends React.FC<DatePickerProps> {
35
+ /**
36
+ * OneHaul DatePicker component - A wrapper around Ant Design DatePicker
37
+ *
38
+ * @example
39
+ * ```jsx
40
+ * <DatePicker
41
+ * size="lg"
42
+ * variant="primary"
43
+ * placeholder="Select date"
44
+ * onChange={handleDateChange}
45
+ * />
46
+ * ```
47
+ *
48
+ * @example Range picker
49
+ * ```jsx
50
+ * <DatePicker
51
+ * mode="range"
52
+ * placeholder={['Start date', 'End date']}
53
+ * onChange={handleRangeChange}
54
+ * />
55
+ * ```
56
+ *
57
+ * @example With time picker
58
+ * ```jsx
59
+ * <DatePicker
60
+ * showTime
61
+ * placeholder="Select date and time"
62
+ * onChange={handleDateTimeChange}
63
+ * />
64
+ * ```
65
+ *
66
+ * @example Month picker
67
+ * ```jsx
68
+ * <DatePicker
69
+ * picker="month"
70
+ * placeholder="Select month"
71
+ * onChange={handleMonthChange}
72
+ * />
73
+ * ```
74
+ */
75
+ }
76
+
77
+ declare const DatePicker: DatePickerComponent;
78
+
79
+ export default DatePicker;
@@ -0,0 +1,38 @@
1
+ import React from 'react';
2
+
3
+ export interface InputNumberProps {
4
+ placeholder?: string;
5
+ className?: string;
6
+ prefix?: React.ReactNode;
7
+ suffix?: React.ReactNode;
8
+ max?: number;
9
+ min?: number;
10
+ size?: 'md' | 'lg';
11
+ style?: React.CSSProperties;
12
+ disabled?: boolean;
13
+ type?: 'text' | 'password' | 'textarea' | 'otp' | 'email' | 'number' | 'tel' | 'url';
14
+ floated?: boolean;
15
+ onChange?: (e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => void;
16
+ onPressEnter?: (e: React.FocusEvent<HTMLInputElement | HTMLTextAreaElement>) => void;
17
+ value?: number;
18
+ defaultValue?: number;
19
+ error?: boolean;
20
+ helperText?: string;
21
+ }
22
+
23
+ interface InputNumberComponent extends React.FC<InputNumberProps> {
24
+ /**
25
+ * OneHaul InputNumber component
26
+ *
27
+ * @example
28
+ * ```jsx
29
+ * <InputNumber
30
+ * placeholder="Enter a number"
31
+ * onChange={handleChange}
32
+ * />
33
+ * ```
34
+ */
35
+ }
36
+
37
+ declare const InputNumber: InputNumberComponent;
38
+ export default InputNumber;
@@ -0,0 +1,51 @@
1
+ import React from 'react';
2
+
3
+ type Breakpoint = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl';
4
+
5
+ type Gutter = number | Partial<Record<Breakpoint, number>>;
6
+
7
+ export interface RowProps extends React.HTMLAttributes<HTMLDivElement> {
8
+ /**
9
+ * Vertical alignment of flex layout
10
+ * @default 'top'
11
+ */
12
+ align?: 'top' | 'middle' | 'bottom' | 'stretch';
13
+
14
+ /**
15
+ * Spacing between grids, could be a number or a object like { xs: 8, sm: 16, md: 24}
16
+ * Or you can use array to make horizontal and vertical spacing work at the same time [horizontal, vertical]
17
+ * @default 0
18
+ */
19
+ gutter?: Gutter | [Gutter, Gutter];
20
+
21
+ /**
22
+ * Horizontal arrangement of flex layout
23
+ * @default 'start'
24
+ */
25
+ justify?: 'start' | 'end' | 'center' | 'space-around' | 'space-between' | 'space-evenly';
26
+
27
+ /**
28
+ * Auto wrap line
29
+ * @default true
30
+ */
31
+ wrap?: boolean;
32
+
33
+ /**
34
+ * Custom CSS class name
35
+ */
36
+ className?: string;
37
+
38
+ /**
39
+ * Inline style
40
+ */
41
+ style?: React.CSSProperties;
42
+
43
+ /**
44
+ * Children nodes
45
+ */
46
+ children?: React.ReactNode;
47
+ }
48
+
49
+ declare const Row: React.FC<RowProps>;
50
+
51
+ export default Row;
@@ -0,0 +1,63 @@
1
+ import React from 'react';
2
+
3
+ export interface SliderMarks {
4
+ [key: number]: React.ReactNode | { style?: React.CSSProperties; label?: React.ReactNode };
5
+ }
6
+
7
+ export interface SliderProps {
8
+ value?: number | [number, number];
9
+ defaultValue?: number | [number, number];
10
+ disabled?: boolean;
11
+ min?: number;
12
+ max?: number;
13
+ step?: number | null;
14
+ marks?: SliderMarks;
15
+ dots?: boolean;
16
+ included?: boolean;
17
+ range?: boolean;
18
+ reverse?: boolean;
19
+ tooltip?: {
20
+ open?: boolean;
21
+ placement?: 'top' | 'left' | 'right' | 'bottom';
22
+ getPopupContainer?: (triggerNode: HTMLElement) => HTMLElement;
23
+ formatter?: ((value?: number) => React.ReactNode) | null;
24
+ };
25
+ onChange?: (value: number | [number, number]) => void;
26
+ onChangeComplete?: (value: number | [number, number]) => void;
27
+ className?: string;
28
+ style?: React.CSSProperties;
29
+ size?: 'md' | 'lg';
30
+ id?: string;
31
+ autoFocus?: boolean;
32
+ keyboard?: boolean;
33
+ }
34
+
35
+ interface SliderComponent extends React.FC<SliderProps> {
36
+ /**
37
+ * OneHaul Slider component
38
+ *
39
+ * @example
40
+ * ```jsx
41
+ * <Slider
42
+ * min={0}
43
+ * max={100}
44
+ * value={value}
45
+ * onChange={handleChange}
46
+ * />
47
+ * ```
48
+ *
49
+ * @example Range Slider
50
+ * ```jsx
51
+ * <Slider
52
+ * range
53
+ * min={0}
54
+ * max={100}
55
+ * value={[20, 50]}
56
+ * onChange={handleChange}
57
+ * />
58
+ * ```
59
+ */
60
+ }
61
+
62
+ declare const Slider: SliderComponent;
63
+ export default Slider;
@@ -0,0 +1,72 @@
1
+ import React from 'react';
2
+ import { TreeProps as AntTreeProps, TreeNodeProps } from 'antd/es/tree';
3
+
4
+ export type TreeSize = 'sm' | 'md' | 'lg';
5
+
6
+ export const TreeSizes = ['sm', 'md', 'lg'] as const;
7
+
8
+ export interface TreeNodeData {
9
+ label: string | React.ReactNode;
10
+ value: string;
11
+ icon?: React.ReactNode;
12
+ children?: TreeNodeData[];
13
+ disabled?: boolean;
14
+ disableCheckbox?: boolean;
15
+ selectable?: boolean;
16
+ checkable?: boolean;
17
+ isLeaf?: boolean;
18
+ [key: string]: any;
19
+ }
20
+
21
+ export interface TreeProps extends Omit<AntTreeProps, 'size'> {
22
+ className?: string;
23
+ size?: TreeSize;
24
+ disabled?: boolean;
25
+ checkable?: boolean;
26
+ selectable?: boolean;
27
+ showLine?: boolean;
28
+ showIcon?: boolean;
29
+ draggable?: boolean;
30
+ multiple?: boolean;
31
+ children?: React.ReactNode;
32
+ treeData?: TreeNodeData[];
33
+ /**
34
+ * Function to load data asynchronously when a node is expanded
35
+ * @param node - The node that was expanded
36
+ * @returns Promise that resolves to an array of child nodes
37
+ */
38
+ onLoadData?: (node: { key: string; title: string; [key: string]: any }) => Promise<TreeNodeData[]>;
39
+ /**
40
+ * Callback when tree data changes (useful for async loading)
41
+ * @param newTreeData - The updated tree data
42
+ */
43
+ onTreeDataChange?: (newTreeData: TreeNodeData[]) => void;
44
+ }
45
+
46
+ interface TreeComponent extends React.FC<TreeProps> {
47
+ TreeNode: typeof TreeNodeProps;
48
+ DirectoryTree: any;
49
+ /**
50
+ * OneHaul Tree component with async loading support
51
+ *
52
+ * @example
53
+ * ```jsx
54
+ * <Tree
55
+ * size="md"
56
+ * checkable
57
+ * treeData={treeData}
58
+ * onLoadData={async (node) => {
59
+ * // Load children for the node
60
+ * const children = await fetchChildren(node.key);
61
+ * return children;
62
+ * }}
63
+ * onSelect={handleSelect}
64
+ * onCheck={handleCheck}
65
+ * />
66
+ * ```
67
+ */
68
+ }
69
+
70
+ declare const Tree: TreeComponent;
71
+
72
+ export default Tree;
@@ -97,3 +97,9 @@ export declare const ProductUnit: IconComponent;
97
97
  export declare const Pricing: IconComponent;
98
98
  export declare const ServiceDisc: IconComponent;
99
99
  export declare const Share: IconComponent;
100
+ export declare const Email: IconComponent;
101
+ export declare const Flash: IconComponent;
102
+ export declare const RFQ: IconComponent;
103
+ export declare const Block: IconComponent;
104
+ export declare const Lock: IconComponent;
105
+ export declare const Unlock: IconComponent;