@juspay/blend-design-system 0.0.25-beta → 0.0.25

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.
@@ -1,4 +1,4 @@
1
- import { AvatarSize, AvatarShape } from './types';
1
+ import { AvatarSize, AvatarShape, AvatarOnlinePosition } from './types';
2
2
  declare const Avatar: import('react').ForwardRefExoticComponent<{
3
3
  src?: string;
4
4
  alt?: string;
@@ -6,6 +6,7 @@ declare const Avatar: import('react').ForwardRefExoticComponent<{
6
6
  size?: AvatarSize;
7
7
  shape?: AvatarShape;
8
8
  online?: boolean;
9
+ onlinePosition?: AvatarOnlinePosition;
9
10
  leadingSlot?: React.ReactNode;
10
11
  trailingSlot?: React.ReactNode;
11
12
  } & Omit<import('react').HTMLAttributes<HTMLDivElement>, "children"> & import('react').RefAttributes<HTMLDivElement>>;
@@ -10,6 +10,10 @@ export declare enum AvatarShape {
10
10
  CIRCULAR = "circular",
11
11
  ROUNDED = "rounded"
12
12
  }
13
+ export declare enum AvatarOnlinePosition {
14
+ TOP = "top",
15
+ BOTTOM = "bottom"
16
+ }
13
17
  export type AvatarProps = {
14
18
  src?: string;
15
19
  alt?: string;
@@ -17,6 +21,7 @@ export type AvatarProps = {
17
21
  size?: AvatarSize;
18
22
  shape?: AvatarShape;
19
23
  online?: boolean;
24
+ onlinePosition?: AvatarOnlinePosition;
20
25
  leadingSlot?: React.ReactNode;
21
26
  trailingSlot?: React.ReactNode;
22
27
  } & Omit<HTMLAttributes<HTMLDivElement>, 'children'>;
@@ -7,7 +7,7 @@ declare const Button: import('react').ForwardRefExoticComponent<{
7
7
  leadingIcon?: React.ReactNode;
8
8
  trailingIcon?: React.ReactNode;
9
9
  disabled?: boolean;
10
- onClick?: () => void;
10
+ onClick?: (event?: React.MouseEvent<HTMLButtonElement>) => void;
11
11
  loading?: boolean;
12
12
  showSkeleton?: boolean;
13
13
  skeletonVariant?: import('../Skeleton').SkeletonVariant;
@@ -31,7 +31,7 @@ export type ButtonProps = {
31
31
  leadingIcon?: React.ReactNode;
32
32
  trailingIcon?: React.ReactNode;
33
33
  disabled?: boolean;
34
- onClick?: () => void;
34
+ onClick?: (event?: React.MouseEvent<HTMLButtonElement>) => void;
35
35
  loading?: boolean;
36
36
  showSkeleton?: boolean;
37
37
  skeletonVariant?: SkeletonVariant;
@@ -0,0 +1,9 @@
1
+ interface DraggableColumnHeaderProps {
2
+ id: string;
3
+ children: React.ReactNode;
4
+ style?: React.CSSProperties;
5
+ disabled?: boolean;
6
+ 'data-table-column-heading'?: string;
7
+ }
8
+ export declare const DraggableColumnHeader: React.FC<DraggableColumnHeaderProps>;
9
+ export {};
@@ -1,3 +1,4 @@
1
+ import { default as React } from 'react';
1
2
  import { TableHeaderProps } from './types';
2
- declare const TableHeader: import('react').ForwardRefExoticComponent<TableHeaderProps<Record<string, unknown>> & import('react').RefAttributes<HTMLTableSectionElement>>;
3
+ declare const TableHeader: React.ForwardRefExoticComponent<TableHeaderProps<Record<string, unknown>> & React.RefAttributes<HTMLTableSectionElement>>;
3
4
  export default TableHeader;
@@ -8,6 +8,7 @@ export type TableHeaderProps<T extends Record<string, unknown>> = {
8
8
  sortConfig?: SortConfig | null;
9
9
  enableInlineEdit?: boolean;
10
10
  enableColumnManager?: boolean;
11
+ enableColumnReordering?: boolean;
11
12
  columnManagerMaxSelections?: number;
12
13
  columnManagerAlwaysSelected?: string[];
13
14
  columnManagerPrimaryAction?: {
@@ -36,6 +37,7 @@ export type TableHeaderProps<T extends Record<string, unknown>> = {
36
37
  onSortDescending?: (field: keyof T) => void;
37
38
  onSelectAll: (checked: boolean | 'indeterminate') => void;
38
39
  onColumnChange: (columns: ColumnDefinition<T>[]) => void;
40
+ onColumnReorder?: (columns: ColumnDefinition<T>[]) => void;
39
41
  onColumnFilter?: (field: string, type: FilterType, value: string | string[] | {
40
42
  min: number;
41
43
  max: number;
@@ -235,6 +235,8 @@ export type DataTableProps<T extends Record<string, unknown>> = {
235
235
  onAdvancedFiltersChange?: (filters: unknown[]) => void;
236
236
  columnFreeze?: number;
237
237
  enableColumnManager?: boolean;
238
+ enableColumnReordering?: boolean;
239
+ onColumnReorder?: (columns: ColumnDefinition<T>[]) => void;
238
240
  columnManagerMaxSelections?: number;
239
241
  columnManagerAlwaysSelected?: (keyof T)[];
240
242
  columnManagerPrimaryAction?: {
@@ -0,0 +1,86 @@
1
+ import { CSSObject } from 'styled-components';
2
+ import { FoundationTokenType } from '../../tokens/theme.token';
3
+ import { BreakpointType } from '../../breakpoints/breakPoints';
4
+ export type DirectoryState = 'default' | 'hover' | 'active';
5
+ /**
6
+ * Directory Tokens following the pattern: [target].CSSProp.[state]
7
+ *
8
+ * Hierarchical Structure:
9
+ * - Container level: gap, paddingX, paddingY (spacing for the entire directory)
10
+ * - Section level: Contains header, label, chevron, and item
11
+ * - header: Controls section header layout
12
+ * - label: Controls section label text styling
13
+ * - chevron: Controls section collapse/expand icon
14
+ * - item: Navigation items within the section (NavItem)
15
+ * - nested: Child items within navigation items
16
+ *
17
+ * Pattern examples:
18
+ * - gap (space between sections)
19
+ * - paddingX (container horizontal padding)
20
+ * - section.header.padding (section header spacing)
21
+ * - section.item.backgroundColor.[state] (nav item background with states)
22
+ * - section.item.nested.paddingLeft (nested item indentation)
23
+ */
24
+ export type DirectoryTokenType = {
25
+ gap: CSSObject['gap'];
26
+ paddingX: CSSObject['padding'];
27
+ paddingY: CSSObject['padding'];
28
+ section: {
29
+ gap: CSSObject['gap'];
30
+ header: {
31
+ padding: {
32
+ x: CSSObject['padding'];
33
+ y: CSSObject['padding'];
34
+ };
35
+ label: {
36
+ fontSize: CSSObject['fontSize'];
37
+ color: CSSObject['color'];
38
+ fontWeight: CSSObject['fontWeight'];
39
+ };
40
+ chevron: {
41
+ width: CSSObject['width'];
42
+ color: CSSObject['color'];
43
+ };
44
+ };
45
+ itemList: {
46
+ gap: CSSObject['gap'];
47
+ item: {
48
+ padding: {
49
+ x: CSSObject['padding'];
50
+ y: CSSObject['padding'];
51
+ };
52
+ gap: CSSObject['gap'];
53
+ borderRadius: CSSObject['borderRadius'];
54
+ fontWeight: CSSObject['fontWeight'];
55
+ fontSize: CSSObject['fontSize'];
56
+ transition: CSSObject['transition'];
57
+ backgroundColor: {
58
+ [key in DirectoryState]: CSSObject['backgroundColor'];
59
+ };
60
+ color: {
61
+ [key in DirectoryState]: CSSObject['color'];
62
+ };
63
+ icon: {
64
+ width: CSSObject['width'];
65
+ };
66
+ chevron: {
67
+ width: CSSObject['width'];
68
+ color: CSSObject['color'];
69
+ };
70
+ };
71
+ nested: {
72
+ paddingLeft: CSSObject['paddingLeft'];
73
+ marginTop: CSSObject['marginTop'];
74
+ border: {
75
+ width: CSSObject['width'];
76
+ color: CSSObject['color'];
77
+ leftOffset: CSSObject['left'];
78
+ };
79
+ };
80
+ };
81
+ };
82
+ };
83
+ export type ResponsiveDirectoryTokens = {
84
+ [key in keyof BreakpointType]: DirectoryTokenType;
85
+ };
86
+ export declare const getDirectoryTokens: (foundationToken: FoundationTokenType) => ResponsiveDirectoryTokens;
@@ -105,6 +105,14 @@ export type DrawerContentProps = {
105
105
  * Custom styles
106
106
  */
107
107
  style?: React.CSSProperties;
108
+ /**
109
+ * Accessibility label for the drawer content
110
+ */
111
+ 'aria-label'?: string;
112
+ /**
113
+ * ID of the element describing the drawer content
114
+ */
115
+ 'aria-describedby'?: string;
108
116
  };
109
117
  export type DrawerHeaderProps = {
110
118
  /**
@@ -125,6 +133,10 @@ export type DrawerTitleProps = {
125
133
  * Custom class name
126
134
  */
127
135
  className?: string;
136
+ /**
137
+ * ID for ARIA labeling
138
+ */
139
+ id?: string;
128
140
  };
129
141
  export type DrawerDescriptionProps = {
130
142
  /**
@@ -135,6 +147,10 @@ export type DrawerDescriptionProps = {
135
147
  * Custom class name
136
148
  */
137
149
  className?: string;
150
+ /**
151
+ * ID for ARIA description
152
+ */
153
+ id?: string;
138
154
  };
139
155
  export type DrawerFooterProps = {
140
156
  /**
@@ -1,3 +1,3 @@
1
1
  import { MultiValueInputProps } from './types';
2
- declare const MultiValueInput: ({ value, label, sublabel, disabled, required, error, errorMessage, hintText, tags, onTagAdd, onTagRemove, onChange, size, ...rest }: MultiValueInputProps) => import("react/jsx-runtime").JSX.Element;
2
+ declare const MultiValueInput: ({ value, label, sublabel, disabled, required, error, errorMessage, hintText, tags, onTagAdd, onTagRemove, onChange, size, onFocus, onBlur, ...rest }: MultiValueInputProps) => import("react/jsx-runtime").JSX.Element;
3
3
  export default MultiValueInput;
@@ -25,4 +25,6 @@ export type MultiValueInputProps = {
25
25
  onTagRemove?: (tag: string) => void;
26
26
  onChange?: (value: string) => void;
27
27
  size?: TextInputSize;
28
- } & Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size' | 'style' | 'className' | 'onChange' | 'value'>;
28
+ onFocus?: (e: React.FocusEvent<HTMLInputElement>) => void;
29
+ onBlur?: (e: React.FocusEvent<HTMLInputElement>) => void;
30
+ } & Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size' | 'style' | 'className' | 'onChange' | 'value' | 'onFocus' | 'onBlur'>;
@@ -5,6 +5,7 @@ type TenantPanelProps = {
5
5
  selected: string;
6
6
  onSelect: (label: string) => void;
7
7
  maxVisibleItems?: number;
8
+ tenantFooter?: React.ReactNode;
8
9
  };
9
10
  declare const TenantPanel: React.FC<TenantPanelProps>;
10
11
  declare const TenantItem: React.FC<{
@@ -11,6 +11,7 @@ export type LeftPanelInfo = {
11
11
  selected: string;
12
12
  onSelect: (value: string) => void;
13
13
  maxVisibleItems?: number;
14
+ tenantFooter?: ReactNode;
14
15
  };
15
16
  export type TenantItem = {
16
17
  label: string;
@@ -1,16 +1,7 @@
1
- import { ReactNode } from 'react';
2
- import { TagColor, TagProps, TagShape, TagSize, TagVariant } from '../Tags';
3
- export type TagConfig = {
4
- text: string;
5
- variant?: TagVariant;
6
- style?: TagColor;
7
- onClick?: () => void;
8
- };
1
+ import { TagProps, TagShape, TagSize } from '../Tags';
9
2
  export type SplitTagProps = {
10
3
  primaryTag: Omit<TagProps, 'splitTagPosition' | 'size' | 'shape'>;
11
4
  secondaryTag?: Omit<TagProps, 'splitTagPosition' | 'size' | 'shape'>;
12
- leadingSlot?: ReactNode;
13
- trailingSlot?: ReactNode;
14
5
  size?: TagSize;
15
6
  shape?: TagShape;
16
7
  };
@@ -11,6 +11,10 @@ export declare enum ChangeType {
11
11
  INCREASE = "increase",
12
12
  DECREASE = "decrease"
13
13
  }
14
+ export declare enum StatCardArrowDirection {
15
+ UP = "up",
16
+ DOWN = "down"
17
+ }
14
18
  export type ChartDataPoint = {
15
19
  value: number;
16
20
  name: string;
@@ -18,6 +22,7 @@ export type ChartDataPoint = {
18
22
  export type StatCardChange = {
19
23
  value: number;
20
24
  valueType: ChangeType;
25
+ arrowDirection?: StatCardArrowDirection;
21
26
  tooltip?: ReactNode;
22
27
  };
23
28
  export declare enum StatCardDirection {
@@ -3,7 +3,6 @@ import { FoundationTokenType } from '../../tokens/theme.token';
3
3
  import { BreakpointType } from '../../breakpoints/breakPoints';
4
4
  export type TopbarState = 'default' | 'hover' | 'active';
5
5
  export type TopbarTokensType = {
6
- position: CSSObject['position'];
7
6
  top: CSSObject['top'];
8
7
  zIndex: CSSObject['zIndex'];
9
8
  borderBottom: CSSObject['borderBottom'];
@@ -23,7 +23,6 @@ export type TopbarProps = {
23
23
  defaultIsVisible?: boolean;
24
24
  sidebarTopSlot?: ReactNode;
25
25
  topbar?: ReactNode;
26
- title?: string;
27
26
  leftAction?: ReactNode;
28
27
  rightActions?: ReactNode;
29
28
  showBackButton?: boolean;
@@ -34,6 +34,7 @@ import { ResponsiveTopbarTokens } from '../components/Topbar/topbar.tokens';
34
34
  import { ResponsiveAvatarTokens } from '../components/Avatar/avatar.tokens';
35
35
  import { ResponsiveAvatarGroupTokens } from '../components/AvatarGroup/avatarGroup.tokens';
36
36
  import { ResponsiveSidebarTokens } from '../components/Sidebar/sidebar.tokens';
37
+ import { ResponsiveDirectoryTokens } from '../components/Directory/directory.tokens';
37
38
  import { ResponsiveUploadTokens } from '../components/Upload/upload.tokens';
38
39
  import { ResponsiveCodeBlockTokens } from '../components/CodeBlock/codeBlock.token';
39
40
  import { ThemeType } from '../tokens';
@@ -82,6 +83,7 @@ export type ComponentTokenType = {
82
83
  AVATAR?: ResponsiveAvatarTokens;
83
84
  AVATAR_GROUP?: ResponsiveAvatarGroupTokens;
84
85
  SIDEBAR?: ResponsiveSidebarTokens;
86
+ DIRECTORY?: ResponsiveDirectoryTokens;
85
87
  MOBILE_NAVIGATION?: ResponsiveMobileNavigationTokens;
86
88
  UPLOAD?: ResponsiveUploadTokens;
87
89
  CODE_BLOCK?: ResponsiveCodeBlockTokens;
@@ -41,4 +41,5 @@ import { ResponsiveUploadTokens } from '../components/Upload/upload.tokens';
41
41
  import { ResponsiveCodeBlockTokens } from '../components/CodeBlock/codeBlock.token';
42
42
  import { ResponsiveWorkflowTokens } from '../components/WorkflowCanvas/workflow.tokens';
43
43
  import { ResponsiveMobileNavigationTokens } from '../components/Sidebar/SidebarMobile/mobile.tokens';
44
- export declare const useComponentToken: (component: keyof ComponentTokenType) => ResponsiveSearchInputTokens | ResponsiveTagTokens | ResponsiveTextAreaTokens | ResponsiveTextInputTokens | ResponsiveNumberInputTokens | ResponsiveAlertTokens | ResponsiveRadioTokens | ResponsiveOTPInputTokens | ResponsiveUnitInputTokens | ResponsiveMultiValueInputTokens | ResponsiveSwitchTokens | ResponsiveCheckboxTokens | ResponsiveTabsTokens | ResponsiveTooltipTokens | ResponsiveDropdownInputTokens | ResponsiveButtonTokens | ResponsiveModalTokens | ResponsiveBreadcrumbTokens | ResponsivePopoverTokens | ResponsiveMenuTokensType | ResponsiveMultiSelectTokens | ResponsiveSingleSelectTokens | ResponsiveTableTokens | ResponsiveCalendarTokens | ResponsiveAccordionTokens | ResponsiveStatCardTokens | ResponsiveProgressBarTokens | ResponsiveDrawerTokens | ResponsiveChartTokens | ResponsiveSnackbarTokens | ResponsiveStepperTokens | ResponsiveKeyValuePairTokens | ResponsiveCardTokens | ResponsiveSkeletonTokens | ResponsiveTopbarTokens | ResponsiveAvatarTokens | ResponsiveAvatarGroupTokens | ResponsiveSidebarTokens | ResponsiveUploadTokens | ResponsiveCodeBlockTokens | ResponsiveWorkflowTokens | ResponsiveMobileNavigationTokens;
44
+ import { ResponsiveDirectoryTokens } from '../components/Directory/directory.tokens';
45
+ export declare const useComponentToken: (component: keyof ComponentTokenType) => ResponsiveSearchInputTokens | ResponsiveTagTokens | ResponsiveTextAreaTokens | ResponsiveTextInputTokens | ResponsiveNumberInputTokens | ResponsiveAlertTokens | ResponsiveRadioTokens | ResponsiveOTPInputTokens | ResponsiveUnitInputTokens | ResponsiveMultiValueInputTokens | ResponsiveSwitchTokens | ResponsiveCheckboxTokens | ResponsiveTabsTokens | ResponsiveTooltipTokens | ResponsiveDropdownInputTokens | ResponsiveButtonTokens | ResponsiveModalTokens | ResponsiveBreadcrumbTokens | ResponsivePopoverTokens | ResponsiveMenuTokensType | ResponsiveMultiSelectTokens | ResponsiveSingleSelectTokens | ResponsiveTableTokens | ResponsiveCalendarTokens | ResponsiveAccordionTokens | ResponsiveStatCardTokens | ResponsiveProgressBarTokens | ResponsiveDrawerTokens | ResponsiveChartTokens | ResponsiveSnackbarTokens | ResponsiveStepperTokens | ResponsiveKeyValuePairTokens | ResponsiveCardTokens | ResponsiveSkeletonTokens | ResponsiveTopbarTokens | ResponsiveAvatarTokens | ResponsiveAvatarGroupTokens | ResponsiveSidebarTokens | ResponsiveUploadTokens | ResponsiveCodeBlockTokens | ResponsiveWorkflowTokens | ResponsiveMobileNavigationTokens | ResponsiveDirectoryTokens;
package/dist/main.d.ts CHANGED
@@ -24,6 +24,7 @@ export * from './components/Inputs';
24
24
  export * from './components/Menu';
25
25
  export * from './components/DataTable';
26
26
  export * from './components/Sidebar';
27
+ export * from './components/Directory';
27
28
  export * from './components/MultiSelect';
28
29
  export * from './components/SingleSelect';
29
30
  export * from './components/Slider';