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

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 (80) hide show
  1. package/dist/components/Avatar/StyledAvatar.d.ts +0 -7
  2. package/dist/components/Avatar/avatar.tokens.d.ts +6 -4
  3. package/dist/components/Avatar/avatarUtils.d.ts +7 -0
  4. package/dist/components/Avatar/types.d.ts +1 -1
  5. package/dist/components/Breadcrumb/types.d.ts +6 -0
  6. package/dist/components/Button/Button.d.ts +3 -0
  7. package/dist/components/Button/ButtonBase.d.ts +11 -0
  8. package/dist/components/Button/button.tokens.d.ts +4 -1
  9. package/dist/components/Button/types.d.ts +4 -0
  10. package/dist/components/ChatInput/ChatInput.d.ts +23 -2
  11. package/dist/components/ChatInput/types.d.ts +3 -4
  12. package/dist/components/ChatInput/utils.d.ts +0 -4
  13. package/dist/components/Checkbox/checkbox.animations.d.ts +2 -0
  14. package/dist/components/CodeEditor/CodeEditor.d.ts +3 -0
  15. package/dist/components/CodeEditor/CodeEditorHeader.d.ts +13 -0
  16. package/dist/components/CodeEditor/MonacoEditorWrapper.d.ts +18 -0
  17. package/dist/components/CodeEditor/index.d.ts +2 -0
  18. package/dist/components/CodeEditor/types.d.ts +27 -0
  19. package/dist/components/CodeEditor/utils.d.ts +9 -0
  20. package/dist/components/DataTable/types.d.ts +23 -6
  21. package/dist/components/DateRangePicker/TimeSelector.d.ts +0 -2
  22. package/dist/components/DateRangePicker/dateRangePicker.tokens.d.ts +7 -19
  23. package/dist/components/Directory/types.d.ts +5 -0
  24. package/dist/components/Inputs/MultiValueInput/MultiValueInput.d.ts +1 -1
  25. package/dist/components/Inputs/MultiValueInput/types.d.ts +2 -1
  26. package/dist/components/Menu/menu.animations.d.ts +8 -0
  27. package/dist/components/Modal/modal.animations.d.ts +3 -0
  28. package/dist/components/Modal/modal.utils.d.ts +2 -0
  29. package/dist/components/Modal/useModal.d.ts +5 -0
  30. package/dist/components/MultiSelect/multiSelect.animations.d.ts +12 -0
  31. package/dist/components/Popover/popover.animations.d.ts +1 -0
  32. package/dist/components/Primitives/PrimitiveInput/PrimitiveInput.d.ts +5 -0
  33. package/dist/components/Primitives/PrimitiveTextArea.d.ts +5 -0
  34. package/dist/components/Radio/radio.animations.d.ts +1 -0
  35. package/dist/components/Sidebar/SidebarMobile/MobileNavigationItem.d.ts +11 -0
  36. package/dist/components/Sidebar/SidebarMobile/MoreButton.d.ts +7 -0
  37. package/dist/components/Sidebar/SidebarMobile/PrimaryActionButton.d.ts +8 -0
  38. package/dist/components/Sidebar/SidebarMobile/hooks.d.ts +24 -0
  39. package/dist/components/Sidebar/SidebarMobile/index.d.ts +3 -0
  40. package/dist/components/Sidebar/SidebarMobile/mobile.tokens.d.ts +81 -0
  41. package/dist/components/Sidebar/SidebarMobile/utils.d.ts +29 -0
  42. package/dist/components/Sidebar/types.d.ts +35 -1
  43. package/dist/components/Sidebar/utils.d.ts +39 -1
  44. package/dist/components/SingleSelect/singleSelect.animations.d.ts +3 -0
  45. package/dist/components/Skeleton/SkeletonCompound.d.ts +0 -15
  46. package/dist/components/Skeleton/hooks/useSkeletonBase.d.ts +0 -4
  47. package/dist/components/Skeleton/index.d.ts +2 -2
  48. package/dist/components/Skeleton/types.d.ts +0 -12
  49. package/dist/components/Skeleton/utils.d.ts +18 -0
  50. package/dist/components/Snackbar/Snackbar.d.ts +6 -3
  51. package/dist/components/Snackbar/types.d.ts +9 -0
  52. package/dist/components/StatCard/statcard.tokens.d.ts +1 -1
  53. package/dist/components/Switch/switch.animations.d.ts +2 -0
  54. package/dist/components/Tags/Tag.d.ts +15 -0
  55. package/dist/components/Tags/TagBase.d.ts +20 -0
  56. package/dist/components/Tags/Tags.d.ts +11 -2
  57. package/dist/components/Tags/index.d.ts +1 -1
  58. package/dist/components/Tags/tag.tokens.d.ts +2 -1
  59. package/dist/components/Tags/types.d.ts +7 -2
  60. package/dist/components/Tooltip/tooltip.animations.d.ts +1 -0
  61. package/dist/components/Topbar/types.d.ts +7 -0
  62. package/dist/components/animations/ChevronAnimation/ChevronAnimation.d.ts +3 -0
  63. package/dist/components/animations/ChevronAnimation/index.d.ts +3 -0
  64. package/dist/components/animations/ChevronAnimation/types.d.ts +28 -0
  65. package/dist/components/animations/ChevronAnimation/utils.d.ts +3 -0
  66. package/dist/components/animations/Ripple/RippleContainer.d.ts +7 -0
  67. package/dist/components/animations/Ripple/index.d.ts +2 -0
  68. package/dist/components/common/error.animations.d.ts +4 -0
  69. package/dist/components/common/index.d.ts +2 -0
  70. package/dist/components/common/useErrorShake.d.ts +6 -0
  71. package/dist/context/ThemeContext.d.ts +4 -0
  72. package/dist/context/ThemeProvider.d.ts +6 -1
  73. package/dist/context/index.d.ts +1 -1
  74. package/dist/context/initComponentTokens.d.ts +2 -1
  75. package/dist/context/useComponentToken.d.ts +2 -1
  76. package/dist/hooks/useRipple.d.ts +11 -0
  77. package/dist/main.d.ts +1 -0
  78. package/dist/main.js +29842 -25999
  79. package/package.json +4 -2
  80. package/dist/components/Skeleton/SkeletonButton.d.ts +0 -13
@@ -1,8 +1 @@
1
- import { StyledAvatarContainerProps, StyledAvatarIndicatorProps } from './types';
2
- export declare const StyledAvatarContainer: import('styled-components/dist/types').IStyledComponentBase<"web", import('styled-components/dist/types').Substitute<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, StyledAvatarContainerProps>> & string;
3
1
  export declare const StyledAvatarImage: import('styled-components/dist/types').IStyledComponentBase<"web", import('styled-components').FastOmit<import('react').DetailedHTMLProps<import('react').ImgHTMLAttributes<HTMLImageElement>, HTMLImageElement>, never>> & string;
4
- export declare const StyledAvatarFallback: import('styled-components/dist/types').IStyledComponentBase<"web", import('styled-components').FastOmit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
5
- export declare const StyledAvatarIndicator: import('styled-components/dist/types').IStyledComponentBase<"web", import('styled-components/dist/types').Substitute<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, StyledAvatarIndicatorProps>> & string;
6
- export declare const StyledAvatarWrapper: import('styled-components/dist/types').IStyledComponentBase<"web", import('styled-components').FastOmit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
7
- export declare const StyledAvatarLeadingSlot: import('styled-components/dist/types').IStyledComponentBase<"web", import('styled-components').FastOmit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
8
- export declare const StyledAvatarTrailingSlot: import('styled-components/dist/types').IStyledComponentBase<"web", import('styled-components').FastOmit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
@@ -11,7 +11,7 @@ export type AvatarVariant = 'withImage' | 'withoutImage';
11
11
  *
12
12
  * Structure:
13
13
  * - gap: Spacing between avatar and slots
14
- * - container: Main avatar container properties
14
+ * - avatar: Main avatar container properties
15
15
  * - text: Fallback text styling
16
16
  * - indicator: Online status indicator
17
17
  * - slot: Leading and trailing slot styling
@@ -55,9 +55,11 @@ export type AvatarTokensType = {
55
55
  [key in AvatarState]: CSSObject['backgroundColor'];
56
56
  };
57
57
  border: {
58
- [key in AvatarState]: {
59
- color: CSSObject['borderColor'];
60
- width: CSSObject['borderWidth'];
58
+ [key in AvatarSize]: {
59
+ [key in AvatarState]: {
60
+ color: CSSObject['borderColor'];
61
+ width: CSSObject['borderWidth'];
62
+ };
61
63
  };
62
64
  };
63
65
  size: {
@@ -5,3 +5,10 @@ export declare const hexToRgb: (hex: string) => {
5
5
  g: number;
6
6
  b: number;
7
7
  } | null;
8
+ /**
9
+ * Get a consistent color for an avatar based on the full name/text
10
+ * Uses hash of the entire text to ensure unique colors for different names
11
+ * @param text - The text to generate color from (e.g., name or alt text)
12
+ * @returns A hex color code
13
+ */
14
+ export declare const getColorFromText: (text: string) => string;
@@ -1,7 +1,7 @@
1
1
  import { HTMLAttributes } from 'react';
2
2
  export declare enum AvatarSize {
3
- XS = "xs",
4
3
  SM = "sm",
4
+ REGULAR = "regular",
5
5
  MD = "md",
6
6
  LG = "lg",
7
7
  XL = "xl"
@@ -3,4 +3,10 @@ export type BreadcrumbItemType = {
3
3
  rightSlot?: React.ReactNode;
4
4
  label: string;
5
5
  href: string;
6
+ /**
7
+ * Optional click handler for custom routing (e.g., React Router).
8
+ * When provided, prevents default link behavior and calls this handler instead.
9
+ * Use this to avoid page reloads and handle navigation with client-side routing.
10
+ */
11
+ onClick?: (event: React.MouseEvent<HTMLAnchorElement>) => void;
6
12
  };
@@ -9,8 +9,11 @@ declare const Button: import('react').ForwardRefExoticComponent<{
9
9
  disabled?: boolean;
10
10
  onClick?: () => void;
11
11
  loading?: boolean;
12
+ showSkeleton?: boolean;
13
+ skeletonVariant?: import('../Skeleton').SkeletonVariant;
12
14
  buttonGroupPosition?: "center" | "left" | "right";
13
15
  fullWidth?: boolean;
16
+ width?: string | number;
14
17
  justifyContent?: import('styled-components').CSSObject["justifyContent"];
15
18
  state?: ButtonState;
16
19
  } & Omit<import('react').ButtonHTMLAttributes<HTMLButtonElement>, "style" | "className"> & import('react').RefAttributes<HTMLButtonElement>>;
@@ -0,0 +1,11 @@
1
+ import { ButtonProps } from './types';
2
+ import { ButtonTokensType } from './button.tokens';
3
+ export type ButtonBaseProps = Omit<ButtonProps, 'showSkeleton' | 'skeletonVariant'> & {
4
+ isSkeleton?: boolean;
5
+ tokens?: ButtonTokensType;
6
+ };
7
+ declare const ButtonBase: import('react').ForwardRefExoticComponent<Omit<ButtonProps, "showSkeleton" | "skeletonVariant"> & {
8
+ isSkeleton?: boolean;
9
+ tokens?: ButtonTokensType;
10
+ } & import('react').RefAttributes<HTMLButtonElement>>;
11
+ export default ButtonBase;
@@ -37,7 +37,10 @@ export type ButtonTokensType = {
37
37
  padding: {
38
38
  [key in ButtonSize]: {
39
39
  [key in ButtonType]: {
40
- [key in ButtonSubType]: CSSObject['padding'];
40
+ [key in ButtonSubType]: {
41
+ x: CSSObject['padding'];
42
+ y: CSSObject['padding'];
43
+ };
41
44
  };
42
45
  };
43
46
  };
@@ -1,5 +1,6 @@
1
1
  import { default as React } from 'react';
2
2
  import { CSSObject } from 'styled-components';
3
+ import { SkeletonVariant } from '../Skeleton/skeleton.tokens';
3
4
  export declare enum ButtonType {
4
5
  PRIMARY = "primary",
5
6
  SECONDARY = "secondary",
@@ -32,8 +33,11 @@ export type ButtonProps = {
32
33
  disabled?: boolean;
33
34
  onClick?: () => void;
34
35
  loading?: boolean;
36
+ showSkeleton?: boolean;
37
+ skeletonVariant?: SkeletonVariant;
35
38
  buttonGroupPosition?: 'center' | 'left' | 'right';
36
39
  fullWidth?: boolean;
40
+ width?: string | number;
37
41
  justifyContent?: CSSObject['justifyContent'];
38
42
  state?: ButtonState;
39
43
  } & Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'style' | 'className'>;
@@ -1,5 +1,26 @@
1
1
  import { default as React } from 'react';
2
- import { ChatInputProps, AttachedFile } from './types';
2
+ import { AttachedFile, TopQuery } from './types';
3
3
  export declare const getDocIcon: (fileType: AttachedFile["type"]) => React.ReactNode;
4
- declare const ChatInput: React.ForwardRefExoticComponent<ChatInputProps & React.RefAttributes<HTMLTextAreaElement>>;
4
+ declare const ChatInput: React.ForwardRefExoticComponent<Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, "value" | "onChange"> & {
5
+ value?: string;
6
+ slot1?: React.ReactNode;
7
+ onChange?: (value: string) => void;
8
+ onSend?: (message: string, files: AttachedFile[]) => void;
9
+ onAttachFiles?: (files: File[]) => void;
10
+ onVoiceRecord?: () => void;
11
+ onFileRemove?: (fileId: string) => void;
12
+ onFileClick?: (file: AttachedFile) => void;
13
+ placeholder?: string;
14
+ disabled?: boolean;
15
+ maxLength?: number;
16
+ autoResize?: boolean;
17
+ attachedFiles?: AttachedFile[];
18
+ topQueries?: TopQuery[];
19
+ onTopQuerySelect?: (query: TopQuery) => void;
20
+ topQueriesMaxHeight?: number;
21
+ attachButtonIcon?: React.ReactNode;
22
+ voiceButtonIcon?: React.ReactNode;
23
+ sendButtonIcon?: React.ReactNode;
24
+ overflowMenuProps?: Partial<import('../Menu').MenuProps>;
25
+ } & React.RefAttributes<HTMLTextAreaElement>>;
5
26
  export default ChatInput;
@@ -1,4 +1,4 @@
1
- import { ReactNode } from 'react';
1
+ import { ReactNode, TextareaHTMLAttributes } from 'react';
2
2
  import { MenuProps } from '../Menu/types';
3
3
  export type AttachedFile = {
4
4
  id: string;
@@ -12,8 +12,9 @@ export type TopQuery = {
12
12
  id: string;
13
13
  text: string;
14
14
  };
15
- export type ChatInputProps = {
15
+ export type ChatInputProps = Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, 'onChange' | 'value'> & {
16
16
  value?: string;
17
+ slot1?: ReactNode;
17
18
  onChange?: (value: string) => void;
18
19
  onSend?: (message: string, files: AttachedFile[]) => void;
19
20
  onAttachFiles?: (files: File[]) => void;
@@ -32,8 +33,6 @@ export type ChatInputProps = {
32
33
  voiceButtonIcon?: ReactNode;
33
34
  sendButtonIcon?: ReactNode;
34
35
  overflowMenuProps?: Partial<MenuProps>;
35
- 'aria-label'?: string;
36
- 'aria-describedby'?: string;
37
36
  };
38
37
  export type ChatInputTokens = {
39
38
  container: {
@@ -12,10 +12,6 @@ export declare const createOverflowMenuItems: (hiddenFiles: AttachedFile[], onFi
12
12
  * Handle textarea auto-resize functionality
13
13
  */
14
14
  export declare const handleAutoResize: (element: HTMLTextAreaElement | null, autoResize: boolean) => void;
15
- /**
16
- * Check if Enter key should trigger send
17
- */
18
- export declare const shouldSendOnEnter: (key: string, shiftKey: boolean, metaKey: boolean, ctrlKey: boolean) => boolean;
19
15
  /**
20
16
  * Validate message length against maxLength
21
17
  */
@@ -0,0 +1,2 @@
1
+ export declare const checkboxRootAnimations: import('styled-components').RuleSet<object>;
2
+ export declare const checkboxIndicatorAnimations: import('styled-components').RuleSet<object>;
@@ -0,0 +1,3 @@
1
+ import { CodeEditorProps } from './types';
2
+ declare const CodeEditor: import('react').ForwardRefExoticComponent<CodeEditorProps & import('react').RefAttributes<HTMLDivElement>>;
3
+ export default CodeEditor;
@@ -0,0 +1,13 @@
1
+ import { CodeBlockTokenType } from '../CodeBlock/codeBlock.token';
2
+ import { ReactNode } from 'react';
3
+ type CodeEditorHeaderProps = {
4
+ header: string;
5
+ headerLeftSlot?: ReactNode;
6
+ headerRightSlot?: ReactNode;
7
+ showCopyButton: boolean;
8
+ isCopied: boolean;
9
+ onCopy: () => void;
10
+ tokens: CodeBlockTokenType;
11
+ };
12
+ export declare const CodeEditorHeader: ({ header, headerLeftSlot, headerRightSlot, showCopyButton, isCopied, onCopy, tokens, }: CodeEditorHeaderProps) => import("react/jsx-runtime").JSX.Element;
13
+ export {};
@@ -0,0 +1,18 @@
1
+ import { CodeBlockTokenType } from '../CodeBlock/codeBlock.token';
2
+ type MonacoEditorWrapperProps = {
3
+ value: string;
4
+ language: string;
5
+ onChange?: (value: string) => void;
6
+ readOnly: boolean;
7
+ disabled: boolean;
8
+ placeholder?: string;
9
+ showLineNumbers: boolean;
10
+ minHeight: string | number;
11
+ maxHeight?: string | number;
12
+ height?: string | number;
13
+ tokens: CodeBlockTokenType;
14
+ onFocus?: () => void;
15
+ onBlur?: () => void;
16
+ };
17
+ export declare const MonacoEditorWrapper: ({ value, language, onChange, readOnly, disabled, placeholder, showLineNumbers, minHeight, maxHeight, height, tokens, onFocus, onBlur, }: MonacoEditorWrapperProps) => import("react/jsx-runtime").JSX.Element;
18
+ export {};
@@ -0,0 +1,2 @@
1
+ export { default as CodeEditor } from './CodeEditor';
2
+ export * from './types';
@@ -0,0 +1,27 @@
1
+ import { ReactNode } from 'react';
2
+ import { SupportedLanguage } from '../CodeBlock/types';
3
+ export declare enum CodeEditorVariant {
4
+ DEFAULT = "default",
5
+ NO_GUTTER = "no-gutter"
6
+ }
7
+ export type CodeEditorProps = {
8
+ value: string;
9
+ onChange?: (value: string) => void;
10
+ variant?: CodeEditorVariant;
11
+ showLineNumbers?: boolean;
12
+ showHeader?: boolean;
13
+ header?: string;
14
+ headerLeftSlot?: ReactNode;
15
+ headerRightSlot?: ReactNode;
16
+ showCopyButton?: boolean;
17
+ language?: SupportedLanguage;
18
+ placeholder?: string;
19
+ readOnly?: boolean;
20
+ disabled?: boolean;
21
+ minHeight?: string | number;
22
+ maxHeight?: string | number;
23
+ height?: string | number;
24
+ className?: string;
25
+ onBlur?: () => void;
26
+ onFocus?: () => void;
27
+ };
@@ -0,0 +1,9 @@
1
+ import { CodeEditorVariant } from './types';
2
+ /**
3
+ * Determines if line numbers should be shown
4
+ */
5
+ export declare const shouldShowLineNumbers: (showLineNumbers: boolean | undefined, variant: CodeEditorVariant) => boolean;
6
+ /**
7
+ * Calculates container styles with min/max height
8
+ */
9
+ export declare const getContainerStyles: (minHeight?: string | number, maxHeight?: string | number) => React.CSSProperties;
@@ -188,11 +188,12 @@ export type PaginationConfig = {
188
188
  totalRows: number;
189
189
  pageSizeOptions?: number[];
190
190
  };
191
- export type BulkAction = {
192
- id: string;
193
- label: string;
194
- variant: 'primary' | 'secondary' | 'danger';
195
- onClick: (selectedRowIds: string[]) => void;
191
+ export type BulkActionsConfig = {
192
+ showSelectAll?: boolean;
193
+ showDeselectAll?: boolean;
194
+ onSelectAll?: () => void;
195
+ onDeselectAll?: () => void;
196
+ customActions?: ReactNode;
196
197
  };
197
198
  export type RowActionConfig<T extends Record<string, unknown>> = {
198
199
  id: string;
@@ -274,8 +275,24 @@ export type DataTableProps<T extends Record<string, unknown>> = {
274
275
  isRowExpandable?: (row: T, index: number) => boolean;
275
276
  onRowExpansionChange?: (rowId: unknown, isExpanded: boolean, rowData: T) => void;
276
277
  enableRowSelection?: boolean;
277
- bulkActions?: BulkAction[];
278
+ onRowSelectionChange?: (selectedRowIds: string[], isSelected: boolean, rowId: string, rowData: T) => void;
279
+ bulkActions?: BulkActionsConfig;
278
280
  rowActions?: RowActionsConfig<T>;
279
281
  getRowStyle?: (row: T, index: number) => React.CSSProperties;
282
+ tableBodyHeight?: string | number;
283
+ /**
284
+ * Approximate height of a single row in pixels.
285
+ * Used to calculate minimum table height based on page size.
286
+ * Helps maintain consistent layout and prevent shifting.
287
+ * @default 52
288
+ */
289
+ rowHeight?: number;
290
+ /**
291
+ * Whether to maintain minimum height based on page size.
292
+ * When true, table maintains consistent height preventing layout shifts.
293
+ * When false, table height adjusts to content.
294
+ * @default true
295
+ */
296
+ maintainMinHeight?: boolean;
280
297
  mobileColumnsToShow?: number;
281
298
  };
@@ -1,12 +1,10 @@
1
1
  import { default as React } from 'react';
2
- import { CalendarTokenType } from './dateRangePicker.tokens';
3
2
  type TimeSelectorProps = {
4
3
  value: string;
5
4
  onChange: (time: string) => void;
6
5
  className?: string;
7
6
  autoFocus?: boolean;
8
7
  tabIndex?: number;
9
- calendarToken?: CalendarTokenType;
10
8
  };
11
9
  declare const TimeSelector: React.ForwardRefExoticComponent<TimeSelectorProps & React.RefAttributes<HTMLDivElement>>;
12
10
  export default TimeSelector;
@@ -83,7 +83,7 @@ export type CalendarTokenType = {
83
83
  border: CSSObject['border'];
84
84
  borderRadius: CSSObject['borderRadius'];
85
85
  boxShadow: CSSObject['boxShadow'];
86
- inputs: {
86
+ header: {
87
87
  padding: {
88
88
  x: CSSObject['padding'];
89
89
  y: CSSObject['padding'];
@@ -92,12 +92,9 @@ export type CalendarTokenType = {
92
92
  gap: CSSObject['gap'];
93
93
  label: {
94
94
  color: CSSObject['color'];
95
- width: CSSObject['width'];
96
95
  fontSize: CSSObject['fontSize'];
97
96
  fontWeight: CSSObject['fontWeight'];
98
97
  };
99
- fontSize: CSSObject['fontSize'];
100
- fontWeight: CSSObject['fontWeight'];
101
98
  };
102
99
  };
103
100
  calendarGrid: {
@@ -136,8 +133,8 @@ export type CalendarTokenType = {
136
133
  fontWeight: CSSObject['fontWeight'];
137
134
  fontSize: CSSObject['fontSize'];
138
135
  lineHeight: CSSObject['lineHeight'];
139
- outline: {
140
- [key in CalendarState]: CSSObject['outline'];
136
+ border: {
137
+ [key in CalendarState]: CSSObject['border'];
141
138
  };
142
139
  borderRadius: CSSObject['borderRadius'];
143
140
  };
@@ -166,14 +163,8 @@ export type CalendarTokenType = {
166
163
  todayDay: {
167
164
  fontWeight: CSSObject['fontWeight'];
168
165
  };
169
- hoverState: {
170
- boxShadow: CSSObject['boxShadow'];
171
- borderRadius: CSSObject['borderRadius'];
172
- };
173
166
  disabledDay: {
174
- opacity: CSSObject['opacity'];
175
- cursor: CSSObject['cursor'];
176
- pointerEvents: CSSObject['pointerEvents'];
167
+ color: CSSObject['color'];
177
168
  };
178
169
  };
179
170
  text: {
@@ -189,16 +180,13 @@ export type CalendarTokenType = {
189
180
  todayDay: {
190
181
  color: CSSObject['color'];
191
182
  };
183
+ disabledDate: {
184
+ color: CSSObject['color'];
185
+ };
192
186
  };
193
187
  todayIndicator: {
194
188
  width: CSSObject['width'];
195
- height: CSSObject['height'];
196
189
  backgroundColor: CSSObject['backgroundColor'];
197
- borderRadius: CSSObject['borderRadius'];
198
- position: CSSObject['position'];
199
- bottom: CSSObject['bottom'];
200
- left: CSSObject['left'];
201
- transform: CSSObject['transform'];
202
190
  };
203
191
  };
204
192
  };
@@ -17,6 +17,11 @@ export type NavbarItem = {
17
17
  onClick?: () => void;
18
18
  href?: string;
19
19
  isSelected?: boolean;
20
+ /**
21
+ * When true, the item appears in the Sidebar mobile navigation drawer.
22
+ * Desktop always renders all items regardless of this flag.
23
+ */
24
+ showOnMobile?: boolean;
20
25
  };
21
26
  export type SectionProps = {
22
27
  section: DirectoryData;
@@ -1,3 +1,3 @@
1
1
  import { MultiValueInputProps } from './types';
2
- declare const MultiValueInput: ({ 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, ...rest }: MultiValueInputProps) => import("react/jsx-runtime").JSX.Element;
3
3
  export default MultiValueInput;
@@ -12,6 +12,7 @@ export declare enum MultiValueInputState {
12
12
  DISABLED = "disabled"
13
13
  }
14
14
  export type MultiValueInputProps = {
15
+ value?: string;
15
16
  label?: string;
16
17
  sublabel?: string;
17
18
  helpIconHintText?: string;
@@ -24,4 +25,4 @@ export type MultiValueInputProps = {
24
25
  onTagRemove?: (tag: string) => void;
25
26
  onChange?: (value: string) => void;
26
27
  size?: TextInputSize;
27
- } & Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size' | 'style' | 'className' | 'onChange'>;
28
+ } & Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size' | 'style' | 'className' | 'onChange' | 'value'>;
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Menu dropdown content animations
3
+ */
4
+ export declare const menuContentAnimations = "\n transform-origin: var(--radix-dropdown-menu-content-transform-origin);\n\n &[data-side='bottom'][data-state='open'] {\n animation: slideInFromTop 400ms cubic-bezier(0.16, 1, 0.3, 1);\n }\n &[data-side='bottom'][data-state='closed'] {\n animation: slideOutToTop 300ms cubic-bezier(0.16, 1, 0.3, 1);\n }\n\n &[data-side='top'][data-state='open'] {\n animation: slideInFromBottom 400ms cubic-bezier(0.16, 1, 0.3, 1);\n }\n &[data-side='top'][data-state='closed'] {\n animation: slideOutToBottom 300ms cubic-bezier(0.16, 1, 0.3, 1);\n }\n\n &[data-side='right'][data-state='open'] {\n animation: slideInFromLeft 400ms cubic-bezier(0.16, 1, 0.3, 1);\n }\n &[data-side='right'][data-state='closed'] {\n animation: slideOutToLeft 300ms cubic-bezier(0.16, 1, 0.3, 1);\n }\n\n &[data-side='left'][data-state='open'] {\n animation: slideInFromRight 400ms cubic-bezier(0.16, 1, 0.3, 1);\n }\n &[data-side='left'][data-state='closed'] {\n animation: slideOutToRight 300ms cubic-bezier(0.16, 1, 0.3, 1);\n }\n\n /* Shadcn-style keyframes with zoom + slide + fade */\n @keyframes slideInFromTop {\n from {\n opacity: 0;\n transform: translateY(-8px) scale(0.95);\n }\n to {\n opacity: 1;\n transform: translateY(0) scale(1);\n }\n }\n\n @keyframes slideOutToTop {\n from {\n opacity: 1;\n transform: translateY(0) scale(1);\n }\n to {\n opacity: 0;\n transform: translateY(-8px) scale(0.95);\n }\n }\n\n @keyframes slideInFromBottom {\n from {\n opacity: 0;\n transform: translateY(8px) scale(0.95);\n }\n to {\n opacity: 1;\n transform: translateY(0) scale(1);\n }\n }\n\n @keyframes slideOutToBottom {\n from {\n opacity: 1;\n transform: translateY(0) scale(1);\n }\n to {\n opacity: 0;\n transform: translateY(8px) scale(0.95);\n }\n }\n\n @keyframes slideInFromLeft {\n from {\n opacity: 0;\n transform: translateX(-8px) scale(0.95);\n }\n to {\n opacity: 1;\n transform: translateX(0) scale(1);\n }\n }\n\n @keyframes slideOutToLeft {\n from {\n opacity: 1;\n transform: translateX(0) scale(1);\n }\n to {\n opacity: 0;\n transform: translateX(-8px) scale(0.95);\n }\n }\n\n @keyframes slideInFromRight {\n from {\n opacity: 0;\n transform: translateX(8px) scale(0.95);\n }\n to {\n opacity: 1;\n transform: translateX(0) scale(1);\n }\n }\n\n @keyframes slideOutToRight {\n from {\n opacity: 1;\n transform: translateX(0) scale(1);\n }\n to {\n opacity: 0;\n transform: translateX(8px) scale(0.95);\n }\n }\n";
5
+ /**
6
+ * Submenu animations
7
+ */
8
+ export declare const submenuContentAnimations = "\n transform-origin: var(--radix-dropdown-menu-content-transform-origin);\n\n &[data-side='right'][data-state='open'] {\n animation: slideInFromLeft 400ms cubic-bezier(0.16, 1, 0.3, 1);\n }\n &[data-side='right'][data-state='closed'] {\n animation: slideOutToLeft 300ms cubic-bezier(0.16, 1, 0.3, 1);\n }\n\n &[data-side='left'][data-state='open'] {\n animation: slideInFromRight 400ms cubic-bezier(0.16, 1, 0.3, 1);\n }\n &[data-side='left'][data-state='closed'] {\n animation: slideOutToRight 300ms cubic-bezier(0.16, 1, 0.3, 1);\n }\n";
@@ -0,0 +1,3 @@
1
+ export declare const modalBackdropAnimations: (isAnimatingIn: boolean) => import('styled-components').RuleSet<object>;
2
+ export declare const modalContentAnimations: (isAnimatingIn: boolean) => import('styled-components').RuleSet<object>;
3
+ export declare const ANIMATION_DURATION = 500;
@@ -0,0 +1,2 @@
1
+ export declare const getPortalContainer: () => HTMLElement;
2
+ export declare const cleanupPortalContainer: () => void;
@@ -0,0 +1,5 @@
1
+ export declare const useModal: (isOpen: boolean, onClose: () => void) => {
2
+ shouldRender: boolean;
3
+ isAnimatingIn: boolean;
4
+ portalContainer: HTMLElement | null;
5
+ };
@@ -0,0 +1,12 @@
1
+ /**
2
+ * MultiSelect Dropdown Animations
3
+ *
4
+ * Shadcn-style animations with zoom + slide + fade
5
+ * - Combined animation in single keyframe
6
+ * - Side-aware based on dropdown position
7
+ * - Smooth spring easing
8
+ */
9
+ /**
10
+ * Main dropdown content animations
11
+ */
12
+ export declare const dropdownContentAnimations = "\n transform-origin: var(--radix-dropdown-menu-content-transform-origin);\n\n /* Opening animations - Shadcn style with zoom */\n &[data-side='bottom'][data-state='open'] {\n animation: slideInFromTop 400ms cubic-bezier(0.16, 1, 0.3, 1);\n }\n &[data-side='bottom'][data-state='closed'] {\n animation: slideOutToTop 300ms cubic-bezier(0.16, 1, 0.3, 1);\n }\n\n &[data-side='top'][data-state='open'] {\n animation: slideInFromBottom 400ms cubic-bezier(0.16, 1, 0.3, 1);\n }\n &[data-side='top'][data-state='closed'] {\n animation: slideOutToBottom 300ms cubic-bezier(0.16, 1, 0.3, 1);\n }\n\n &[data-side='right'][data-state='open'] {\n animation: slideInFromLeft 400ms cubic-bezier(0.16, 1, 0.3, 1);\n }\n &[data-side='right'][data-state='closed'] {\n animation: slideOutToLeft 300ms cubic-bezier(0.16, 1, 0.3, 1);\n }\n\n &[data-side='left'][data-state='open'] {\n animation: slideInFromRight 400ms cubic-bezier(0.16, 1, 0.3, 1);\n }\n &[data-side='left'][data-state='closed'] {\n animation: slideOutToRight 300ms cubic-bezier(0.16, 1, 0.3, 1);\n }\n\n /* Shadcn-style keyframes with zoom + slide + fade */\n @keyframes slideInFromTop {\n from {\n opacity: 0;\n transform: translateY(-8px) scale(0.95);\n }\n to {\n opacity: 1;\n transform: translateY(0) scale(1);\n }\n }\n\n @keyframes slideOutToTop {\n from {\n opacity: 1;\n transform: translateY(0) scale(1);\n }\n to {\n opacity: 0;\n transform: translateY(-8px) scale(0.95);\n }\n }\n\n @keyframes slideInFromBottom {\n from {\n opacity: 0;\n transform: translateY(8px) scale(0.95);\n }\n to {\n opacity: 1;\n transform: translateY(0) scale(1);\n }\n }\n\n @keyframes slideOutToBottom {\n from {\n opacity: 1;\n transform: translateY(0) scale(1);\n }\n to {\n opacity: 0;\n transform: translateY(8px) scale(0.95);\n }\n }\n\n @keyframes slideInFromLeft {\n from {\n opacity: 0;\n transform: translateX(-8px) scale(0.95);\n }\n to {\n opacity: 1;\n transform: translateX(0) scale(1);\n }\n }\n\n @keyframes slideOutToLeft {\n from {\n opacity: 1;\n transform: translateX(0) scale(1);\n }\n to {\n opacity: 0;\n transform: translateX(-8px) scale(0.95);\n }\n }\n\n @keyframes slideInFromRight {\n from {\n opacity: 0;\n transform: translateX(8px) scale(0.95);\n }\n to {\n opacity: 1;\n transform: translateX(0) scale(1);\n }\n }\n\n @keyframes slideOutToRight {\n from {\n opacity: 1;\n transform: translateX(0) scale(1);\n }\n to {\n opacity: 0;\n transform: translateX(8px) scale(0.95);\n }\n }\n";
@@ -0,0 +1 @@
1
+ export declare const popoverContentAnimations: import('styled-components').RuleSet<object>;
@@ -84,6 +84,11 @@ type PrimitiveInputProps = StateStyles & {
84
84
  overflowY?: CSSObject['overflowY'];
85
85
  contentCentered?: boolean;
86
86
  cursor?: CSSObject['cursor'];
87
+ transition?: CSSObject['transition'];
88
+ transitionProperty?: CSSObject['transitionProperty'];
89
+ transitionDuration?: CSSObject['transitionDuration'];
90
+ transitionTimingFunction?: CSSObject['transitionTimingFunction'];
91
+ transitionDelay?: CSSObject['transitionDelay'];
87
92
  placeholderStyles?: CSSObject;
88
93
  };
89
94
  export type InputProps = React.InputHTMLAttributes<HTMLInputElement> & PrimitiveInputProps & {
@@ -79,6 +79,11 @@ type PrimitiveTextareaProps = StateStyles & {
79
79
  overflowY?: CSSObject['overflowY'];
80
80
  contentCentered?: boolean;
81
81
  cursor?: CSSObject['cursor'];
82
+ transition?: CSSObject['transition'];
83
+ transitionProperty?: CSSObject['transitionProperty'];
84
+ transitionDuration?: CSSObject['transitionDuration'];
85
+ transitionTimingFunction?: CSSObject['transitionTimingFunction'];
86
+ transitionDelay?: CSSObject['transitionDelay'];
82
87
  placeholderStyles?: CSSObject;
83
88
  resize?: CSSObject['resize'];
84
89
  fontFamily?: CSSObject['fontFamily'];
@@ -0,0 +1 @@
1
+ export declare const radioAnimations: import('styled-components').RuleSet<object>;
@@ -0,0 +1,11 @@
1
+ import { default as React } from 'react';
2
+ import { MobileNavigationItem as MobileNavigationItemType } from '../types';
3
+ import { MobileNavigationTokenType } from './mobile.tokens';
4
+ type MobileNavigationItemProps = {
5
+ item: MobileNavigationItemType;
6
+ index?: number;
7
+ tokens: MobileNavigationTokenType;
8
+ onSelect: (item: MobileNavigationItemType) => void;
9
+ };
10
+ declare const MobileNavigationItem: React.ForwardRefExoticComponent<MobileNavigationItemProps & React.RefAttributes<HTMLButtonElement>>;
11
+ export default MobileNavigationItem;
@@ -0,0 +1,7 @@
1
+ import { MobileNavigationTokenType } from './mobile.tokens';
2
+ type MoreButtonProps = {
3
+ tokens: MobileNavigationTokenType;
4
+ onClick: () => void;
5
+ };
6
+ declare const MoreButton: import('react').ForwardRefExoticComponent<MoreButtonProps & import('react').RefAttributes<HTMLButtonElement>>;
7
+ export default MoreButton;
@@ -0,0 +1,8 @@
1
+ import { default as React } from 'react';
2
+ import { MobileNavigationTokenType } from './mobile.tokens';
3
+ type PrimaryActionButtonProps = {
4
+ tokens: MobileNavigationTokenType;
5
+ buttonProps?: Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'type'>;
6
+ };
7
+ declare const PrimaryActionButton: React.ForwardRefExoticComponent<PrimaryActionButtonProps & React.RefAttributes<HTMLButtonElement>>;
8
+ export default PrimaryActionButton;
@@ -0,0 +1,24 @@
1
+ import { MobileNavigationItem } from '../types';
2
+ /**
3
+ * Custom hook to manage ordered items with smart property updates.
4
+ * Only resets order when items are added/removed, otherwise preserves order
5
+ * and just updates properties (like isSelected).
6
+ *
7
+ * This hook is extracted because:
8
+ * 1. It encapsulates complex state logic
9
+ * 2. The logic is reusable across different navigation contexts
10
+ * 3. It keeps the component clean and focused on rendering
11
+ */
12
+ export declare const useOrderedItems: <T extends {
13
+ label: string;
14
+ }>(items: T[]) => readonly [T[], import('react').Dispatch<import('react').SetStateAction<T[]>>];
15
+ /**
16
+ * Custom hook for item selection with smart swapping logic.
17
+ * Handles the complex behavior of swapping secondary items with primary items.
18
+ *
19
+ * This hook is extracted because:
20
+ * 1. It encapsulates business logic for item swapping
21
+ * 2. It reduces component complexity
22
+ * 3. The logic is testable in isolation
23
+ */
24
+ export declare const useItemSelection: (orderedItems: MobileNavigationItem[], setOrderedItems: (items: MobileNavigationItem[]) => void, primaryItems: MobileNavigationItem[], hasSecondaryItems: boolean, onCollapse: () => void) => (item: MobileNavigationItem, isSecondaryItem?: boolean) => void;
@@ -0,0 +1,3 @@
1
+ import { SidebarMobileNavigationProps } from '../types';
2
+ declare const SidebarMobileNavigation: import('react').ForwardRefExoticComponent<SidebarMobileNavigationProps & import('react').RefAttributes<HTMLDivElement>>;
3
+ export default SidebarMobileNavigation;