@razorpay/blade 12.91.0 → 12.92.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.
Files changed (41) hide show
  1. package/build/lib/web/development/_virtual/cloneDeep.js +1 -1
  2. package/build/lib/web/development/_virtual/cloneDeep3.js +1 -1
  3. package/build/lib/web/development/components/ChatInput/ChatInput.web.js +17 -11
  4. package/build/lib/web/development/components/ChatInput/ChatInput.web.js.map +1 -1
  5. package/build/lib/web/development/components/ChatInput/useChatInput.js +12 -1
  6. package/build/lib/web/development/components/ChatInput/useChatInput.js.map +1 -1
  7. package/build/lib/web/development/components/ChatMessage/SelfMessageBubble.web.js +1 -1
  8. package/build/lib/web/development/components/ChatMessage/SelfMessageBubble.web.js.map +1 -1
  9. package/build/lib/web/development/components/SideNav/SideNav.web.js +143 -53
  10. package/build/lib/web/development/components/SideNav/SideNav.web.js.map +1 -1
  11. package/build/lib/web/development/components/SideNav/SideNavItems/SideNavLink.web.js +33 -18
  12. package/build/lib/web/development/components/SideNav/SideNavItems/SideNavLink.web.js.map +1 -1
  13. package/build/lib/web/development/node_modules/es-toolkit/dist/compat/object/cloneDeep.js +1 -1
  14. package/build/lib/web/development/node_modules/es-toolkit/dist/compat/predicate/matches.js +2 -2
  15. package/build/lib/web/development/node_modules/es-toolkit/dist/compat/predicate/matchesProperty.js +2 -2
  16. package/build/lib/web/development/node_modules/es-toolkit/dist/object/cloneDeep.js +1 -1
  17. package/build/lib/web/production/_virtual/cloneDeep.js +1 -1
  18. package/build/lib/web/production/_virtual/cloneDeep3.js +1 -1
  19. package/build/lib/web/production/_virtual/flatten.js +1 -1
  20. package/build/lib/web/production/_virtual/flatten3.js +1 -1
  21. package/build/lib/web/production/components/ChatInput/ChatInput.web.js +17 -11
  22. package/build/lib/web/production/components/ChatInput/ChatInput.web.js.map +1 -1
  23. package/build/lib/web/production/components/ChatInput/useChatInput.js +12 -1
  24. package/build/lib/web/production/components/ChatInput/useChatInput.js.map +1 -1
  25. package/build/lib/web/production/components/ChatMessage/SelfMessageBubble.web.js +1 -1
  26. package/build/lib/web/production/components/ChatMessage/SelfMessageBubble.web.js.map +1 -1
  27. package/build/lib/web/production/components/SideNav/SideNav.web.js +143 -53
  28. package/build/lib/web/production/components/SideNav/SideNav.web.js.map +1 -1
  29. package/build/lib/web/production/components/SideNav/SideNavItems/SideNavLink.web.js +33 -18
  30. package/build/lib/web/production/components/SideNav/SideNavItems/SideNavLink.web.js.map +1 -1
  31. package/build/lib/web/production/node_modules/es-toolkit/dist/array/flatten.js +1 -1
  32. package/build/lib/web/production/node_modules/es-toolkit/dist/compat/array/flatten.js +1 -1
  33. package/build/lib/web/production/node_modules/es-toolkit/dist/compat/array/sortBy.js +2 -2
  34. package/build/lib/web/production/node_modules/es-toolkit/dist/compat/object/cloneDeep.js +1 -1
  35. package/build/lib/web/production/node_modules/es-toolkit/dist/compat/object/omit.js +2 -2
  36. package/build/lib/web/production/node_modules/es-toolkit/dist/compat/predicate/matches.js +2 -2
  37. package/build/lib/web/production/node_modules/es-toolkit/dist/compat/predicate/matchesProperty.js +2 -2
  38. package/build/lib/web/production/node_modules/es-toolkit/dist/object/cloneDeep.js +1 -1
  39. package/build/types/components/index.d.ts +123 -74
  40. package/build/types/components/index.native.d.ts +79 -40
  41. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  /// <reference types="react" />
2
2
  import * as React$1 from 'react';
3
- import React__default, { ReactNode, ReactElement, CSSProperties, SyntheticEvent, ImgHTMLAttributes, HTMLAttributeReferrerPolicy, ReactChild, ComponentProps, KeyboardEvent } from 'react';
3
+ import React__default, { ReactNode, ReactElement, CSSProperties, SyntheticEvent, ImgHTMLAttributes, HTMLAttributeReferrerPolicy, ReactChild, KeyboardEvent, ComponentProps } from 'react';
4
4
  import { View, ViewStyle, AccessibilityRole, GestureResponderEvent, TouchableOpacity } from 'react-native';
5
5
  import { CSSObject } from 'styled-components';
6
6
  import * as csstype from 'csstype';
@@ -13691,6 +13691,45 @@ type FileUploadItemProps = Pick<FileUploadProps, 'onPreview' | 'onRemove' | 'onD
13691
13691
  flexBasis?: BoxProps['flexBasis'];
13692
13692
  } & StyledPropsBlade & DataAnalyticsAttribute;
13693
13693
 
13694
+ type FormInputOnEvent = ({ name, value, rawValue, }: {
13695
+ name?: string;
13696
+ value?: string;
13697
+ rawValue?: string;
13698
+ }) => void;
13699
+ type FormInputHandleOnKeyDownEvent = ({ name, key, code, event, }: FormInputOnKeyDownEvent) => void;
13700
+ type FormInputOnKeyDownEvent = {
13701
+ name?: string;
13702
+ key?: string;
13703
+ code?: string;
13704
+ event: KeyboardEvent<HTMLInputElement>;
13705
+ };
13706
+ type FormInputValidationProps = {
13707
+ /**
13708
+ * Help text for the input
13709
+ */
13710
+ helpText?: string;
13711
+ /**
13712
+ * Error text for the input
13713
+ *
13714
+ * Renders when `validationState` is set to 'error'
13715
+ */
13716
+ errorText?: string;
13717
+ /**
13718
+ * success text for the input
13719
+ *
13720
+ * Renders when `validationState` is set to 'success'
13721
+ */
13722
+ successText?: string;
13723
+ /**
13724
+ * If `error`, the input is marked as invalid,
13725
+ * and `invalid` attribute will be added
13726
+ *
13727
+ * If `success`, the input is marked as valid,
13728
+ *
13729
+ */
13730
+ validationState?: 'success' | 'error' | 'none';
13731
+ };
13732
+
13694
13733
  type ChatInputProps = {
13695
13734
  /**
13696
13735
  * Controlled value of the text input
@@ -13706,6 +13745,14 @@ type ChatInputProps = {
13706
13745
  onChange?: ({ value }: {
13707
13746
  value: string;
13708
13747
  }) => void;
13748
+ /**
13749
+ * Callback fired when the text input receives focus
13750
+ */
13751
+ onFocus?: FormInputOnEvent;
13752
+ /**
13753
+ * Callback fired when the text input loses focus
13754
+ */
13755
+ onBlur?: FormInputOnEvent;
13709
13756
  /**
13710
13757
  * Callback fired when the user submits the input (via submit button or Enter key).
13711
13758
  * Receives the current text value and the list of attached files.
@@ -13795,12 +13842,48 @@ type ChatInputProps = {
13795
13842
  accessibilityLabel?: string;
13796
13843
  } & TestID & DataAnalyticsAttribute & StyledPropsBlade;
13797
13844
 
13845
+ type FormInputLabelProps = {
13846
+ /**
13847
+ * Label to be shown for the input field
13848
+ */
13849
+ label?: string;
13850
+ /**
13851
+ * Desktop only prop. Default value on mobile will be `top`
13852
+ */
13853
+ labelPosition?: 'left' | 'top';
13854
+ /**
13855
+ * Displays `(optional)` when `optional` is passed or `*` when `required` is passed
13856
+ */
13857
+ necessityIndicator?: 'required' | 'optional' | 'none';
13858
+ /**
13859
+ * Suffix element to be shown for the input field
13860
+ *
13861
+ * @example
13862
+ * ```jsx
13863
+ * labelSuffix={
13864
+ * <Tooltip content="This is a tooltip" placement="right">
13865
+ * <TooltipInteractiveWrapper>
13866
+ * <InfoIcon size="small" color="surface.icon.gray.subtle" />
13867
+ * </TooltipInteractiveWrapper>
13868
+ * </Tooltip>
13869
+ * }
13870
+ * ```
13871
+ */
13872
+ labelSuffix?: React__default.ReactNode;
13873
+ /**
13874
+ * Trailing element to be shown for the input field
13875
+ */
13876
+ labelTrailing?: React__default.ReactNode;
13877
+ };
13878
+
13798
13879
  declare const ChatInput: React__default.ForwardRefExoticComponent<{
13799
13880
  value?: string | undefined;
13800
13881
  defaultValue?: string | undefined;
13801
13882
  onChange?: (({ value }: {
13802
13883
  value: string;
13803
13884
  }) => void) | undefined;
13885
+ onFocus?: FormInputOnEvent | undefined;
13886
+ onBlur?: FormInputOnEvent | undefined;
13804
13887
  onSubmit?: (({ value, fileList }: {
13805
13888
  value: string;
13806
13889
  fileList: BladeFileList;
@@ -15581,79 +15664,6 @@ type CollapsibleBodyProps = {
15581
15664
 
15582
15665
  declare const CollapsibleBody: ({ children, testID, width, _hasMargin, ...rest }: CollapsibleBodyProps) => ReactElement;
15583
15666
 
15584
- type FormInputLabelProps = {
15585
- /**
15586
- * Label to be shown for the input field
15587
- */
15588
- label?: string;
15589
- /**
15590
- * Desktop only prop. Default value on mobile will be `top`
15591
- */
15592
- labelPosition?: 'left' | 'top';
15593
- /**
15594
- * Displays `(optional)` when `optional` is passed or `*` when `required` is passed
15595
- */
15596
- necessityIndicator?: 'required' | 'optional' | 'none';
15597
- /**
15598
- * Suffix element to be shown for the input field
15599
- *
15600
- * @example
15601
- * ```jsx
15602
- * labelSuffix={
15603
- * <Tooltip content="This is a tooltip" placement="right">
15604
- * <TooltipInteractiveWrapper>
15605
- * <InfoIcon size="small" color="surface.icon.gray.subtle" />
15606
- * </TooltipInteractiveWrapper>
15607
- * </Tooltip>
15608
- * }
15609
- * ```
15610
- */
15611
- labelSuffix?: React__default.ReactNode;
15612
- /**
15613
- * Trailing element to be shown for the input field
15614
- */
15615
- labelTrailing?: React__default.ReactNode;
15616
- };
15617
-
15618
- type FormInputOnEvent = ({ name, value, rawValue, }: {
15619
- name?: string;
15620
- value?: string;
15621
- rawValue?: string;
15622
- }) => void;
15623
- type FormInputHandleOnKeyDownEvent = ({ name, key, code, event, }: FormInputOnKeyDownEvent) => void;
15624
- type FormInputOnKeyDownEvent = {
15625
- name?: string;
15626
- key?: string;
15627
- code?: string;
15628
- event: KeyboardEvent<HTMLInputElement>;
15629
- };
15630
- type FormInputValidationProps = {
15631
- /**
15632
- * Help text for the input
15633
- */
15634
- helpText?: string;
15635
- /**
15636
- * Error text for the input
15637
- *
15638
- * Renders when `validationState` is set to 'error'
15639
- */
15640
- errorText?: string;
15641
- /**
15642
- * success text for the input
15643
- *
15644
- * Renders when `validationState` is set to 'success'
15645
- */
15646
- successText?: string;
15647
- /**
15648
- * If `error`, the input is marked as invalid,
15649
- * and `invalid` attribute will be added
15650
- *
15651
- * If `success`, the input is marked as valid,
15652
- *
15653
- */
15654
- validationState?: 'success' | 'error' | 'none';
15655
- };
15656
-
15657
15667
  type CommonAutoCompleteSuggestionTypes = 'none' | 'name' | 'email' | 'username' | 'password' | 'newPassword' | 'oneTimeCode' | 'telephone' | 'postalCode' | 'countryName' | 'creditCardNumber' | 'creditCardCSC' | 'creditCardExpiry' | 'creditCardExpiryMonth' | 'creditCardExpiryYear';
15658
15668
  type WebAutoCompleteSuggestionType = CommonAutoCompleteSuggestionTypes | 'on';
15659
15669
  type BaseInputCommonProps = FormInputLabelProps & DataAnalyticsAttribute & FormInputValidationProps & {
@@ -22756,7 +22766,15 @@ declare const SideNav: React__default.ForwardRefExoticComponent<{
22756
22766
  onVisibleLevelChange?: (({ visibleLevel }: {
22757
22767
  visibleLevel: number;
22758
22768
  }) => void) | undefined;
22769
+ onExpandChange?: (({ isExpanded }: {
22770
+ isExpanded: boolean;
22771
+ }) => void) | undefined;
22772
+ onExpandTransitionEnd?: (({ isExpanded }: {
22773
+ isExpanded: boolean;
22774
+ }) => void) | undefined;
22775
+ isExpanded?: boolean | undefined;
22759
22776
  banner?: React__default.ReactElement<any, string | React__default.JSXElementConstructor<any>> | undefined;
22777
+ backgroundColor?: "surface.background.gray.subtle" | "surface.background.gray.moderate" | "surface.background.gray.intense" | undefined;
22760
22778
  } & Partial<Omit<MarginProps & Pick<FlexboxProps, "alignSelf" | "flexWrap" | "justifySelf" | "order" | "placeSelf"> & {
22761
22779
  top: SpacingValueType | {
22762
22780
  readonly base?: SpacingValueType | undefined;
@@ -23237,6 +23255,7 @@ type TooltipifyComponentProps = {
23237
23255
  tooltip?: Pick<TooltipProps, 'title' | 'content' | 'onOpenChange'>;
23238
23256
  };
23239
23257
 
23258
+ type SideNavBackgroundColor = `surface.background.gray.${DotNotationToken<Theme['colors']['surface']['background']['gray']>}`;
23240
23259
  type SideNavProps = {
23241
23260
  /**
23242
23261
  * Children slot.
@@ -23266,12 +23285,42 @@ type SideNavProps = {
23266
23285
  onVisibleLevelChange?: ({ visibleLevel }: {
23267
23286
  visibleLevel: number;
23268
23287
  }) => void;
23288
+ /**
23289
+ * Callback that gets triggered when controlled full expand state changes.
23290
+ *
23291
+ * **Only applicable in desktop**
23292
+ */
23293
+ onExpandChange?: ({ isExpanded }: {
23294
+ isExpanded: boolean;
23295
+ }) => void;
23296
+ /**
23297
+ * Callback that gets triggered when controlled full expand/collapse transition ends.
23298
+ *
23299
+ * **Only applicable in desktop**
23300
+ */
23301
+ onExpandTransitionEnd?: ({ isExpanded }: {
23302
+ isExpanded: boolean;
23303
+ }) => void;
23304
+ /**
23305
+ * **Only applicable in desktop**
23306
+ *
23307
+ * Controls whether SideNav should remain fully expanded.
23308
+ * - `true` (default): existing behavior with hover-based temporary expansion.
23309
+ * - `false`: keeps SideNav collapsed and disables hover/focus-based expansion.
23310
+ */
23311
+ isExpanded?: boolean;
23269
23312
  /**
23270
23313
  * Banner slot for usecases like adding Activation Panel
23271
23314
  *
23272
23315
  * **IMPORTANT** Avoid adding promotional items in this
23273
23316
  */
23274
23317
  banner?: React__default.ReactElement;
23318
+ /**
23319
+ * Sets background color of the SideNav surface.
23320
+ *
23321
+ * @default `surface.background.gray.moderate`
23322
+ */
23323
+ backgroundColor?: SideNavBackgroundColor;
23275
23324
  } & StyledPropsBlade & TestID;
23276
23325
  type SideNavLinkProps = {
23277
23326
  /**
@@ -1,7 +1,7 @@
1
1
  /// <reference types="react" />
2
2
  import * as react_native_types from 'react-native/types';
3
3
  import * as react from 'react';
4
- import react__default, { ReactNode, ReactElement, CSSProperties, SyntheticEvent, ImgHTMLAttributes, HTMLAttributeReferrerPolicy, ReactChild, ComponentProps, KeyboardEvent } from 'react';
4
+ import react__default, { ReactNode, ReactElement, CSSProperties, SyntheticEvent, ImgHTMLAttributes, HTMLAttributeReferrerPolicy, ReactChild, KeyboardEvent, ComponentProps } from 'react';
5
5
  import * as react_native from 'react-native';
6
6
  import { View, ViewStyle, AccessibilityRole, GestureResponderEvent, TouchableOpacity, ImageSourcePropType, PressableProps } from 'react-native';
7
7
  import { CSSObject } from 'styled-components';
@@ -10007,6 +10007,45 @@ type FileUploadItemProps = Pick<FileUploadProps, 'onPreview' | 'onRemove' | 'onD
10007
10007
  flexBasis?: BoxProps['flexBasis'];
10008
10008
  } & StyledPropsBlade & DataAnalyticsAttribute;
10009
10009
 
10010
+ type FormInputOnEvent = ({ name, value, rawValue, }: {
10011
+ name?: string;
10012
+ value?: string;
10013
+ rawValue?: string;
10014
+ }) => void;
10015
+ type FormInputHandleOnKeyDownEvent = ({ name, key, code, event, }: FormInputOnKeyDownEvent) => void;
10016
+ type FormInputOnKeyDownEvent = {
10017
+ name?: string;
10018
+ key?: string;
10019
+ code?: string;
10020
+ event: KeyboardEvent<HTMLInputElement>;
10021
+ };
10022
+ type FormInputValidationProps = {
10023
+ /**
10024
+ * Help text for the input
10025
+ */
10026
+ helpText?: string;
10027
+ /**
10028
+ * Error text for the input
10029
+ *
10030
+ * Renders when `validationState` is set to 'error'
10031
+ */
10032
+ errorText?: string;
10033
+ /**
10034
+ * success text for the input
10035
+ *
10036
+ * Renders when `validationState` is set to 'success'
10037
+ */
10038
+ successText?: string;
10039
+ /**
10040
+ * If `error`, the input is marked as invalid,
10041
+ * and `invalid` attribute will be added
10042
+ *
10043
+ * If `success`, the input is marked as valid,
10044
+ *
10045
+ */
10046
+ validationState?: 'success' | 'error' | 'none';
10047
+ };
10048
+
10010
10049
  type ChatInputProps = {
10011
10050
  /**
10012
10051
  * Controlled value of the text input
@@ -10022,6 +10061,14 @@ type ChatInputProps = {
10022
10061
  onChange?: ({ value }: {
10023
10062
  value: string;
10024
10063
  }) => void;
10064
+ /**
10065
+ * Callback fired when the text input receives focus
10066
+ */
10067
+ onFocus?: FormInputOnEvent;
10068
+ /**
10069
+ * Callback fired when the text input loses focus
10070
+ */
10071
+ onBlur?: FormInputOnEvent;
10025
10072
  /**
10026
10073
  * Callback fired when the user submits the input (via submit button or Enter key).
10027
10074
  * Receives the current text value and the list of attached files.
@@ -11329,45 +11376,6 @@ type FormInputLabelProps = {
11329
11376
  labelTrailing?: react__default.ReactNode;
11330
11377
  };
11331
11378
 
11332
- type FormInputOnEvent = ({ name, value, rawValue, }: {
11333
- name?: string;
11334
- value?: string;
11335
- rawValue?: string;
11336
- }) => void;
11337
- type FormInputHandleOnKeyDownEvent = ({ name, key, code, event, }: FormInputOnKeyDownEvent) => void;
11338
- type FormInputOnKeyDownEvent = {
11339
- name?: string;
11340
- key?: string;
11341
- code?: string;
11342
- event: KeyboardEvent<HTMLInputElement>;
11343
- };
11344
- type FormInputValidationProps = {
11345
- /**
11346
- * Help text for the input
11347
- */
11348
- helpText?: string;
11349
- /**
11350
- * Error text for the input
11351
- *
11352
- * Renders when `validationState` is set to 'error'
11353
- */
11354
- errorText?: string;
11355
- /**
11356
- * success text for the input
11357
- *
11358
- * Renders when `validationState` is set to 'success'
11359
- */
11360
- successText?: string;
11361
- /**
11362
- * If `error`, the input is marked as invalid,
11363
- * and `invalid` attribute will be added
11364
- *
11365
- * If `success`, the input is marked as valid,
11366
- *
11367
- */
11368
- validationState?: 'success' | 'error' | 'none';
11369
- };
11370
-
11371
11379
  type CommonAutoCompleteSuggestionTypes = 'none' | 'name' | 'email' | 'username' | 'password' | 'newPassword' | 'oneTimeCode' | 'telephone' | 'postalCode' | 'countryName' | 'creditCardNumber' | 'creditCardCSC' | 'creditCardExpiry' | 'creditCardExpiryMonth' | 'creditCardExpiryYear';
11372
11380
  type WebAutoCompleteSuggestionType = CommonAutoCompleteSuggestionTypes | 'on';
11373
11381
  type BaseInputCommonProps = FormInputLabelProps & DataAnalyticsAttribute & FormInputValidationProps & {
@@ -14847,6 +14855,7 @@ type TooltipifyComponentProps = {
14847
14855
  tooltip?: Pick<TooltipProps, 'title' | 'content' | 'onOpenChange'>;
14848
14856
  };
14849
14857
 
14858
+ type SideNavBackgroundColor = `surface.background.gray.${DotNotationToken<Theme['colors']['surface']['background']['gray']>}`;
14850
14859
  type SideNavProps = {
14851
14860
  /**
14852
14861
  * Children slot.
@@ -14876,12 +14885,42 @@ type SideNavProps = {
14876
14885
  onVisibleLevelChange?: ({ visibleLevel }: {
14877
14886
  visibleLevel: number;
14878
14887
  }) => void;
14888
+ /**
14889
+ * Callback that gets triggered when controlled full expand state changes.
14890
+ *
14891
+ * **Only applicable in desktop**
14892
+ */
14893
+ onExpandChange?: ({ isExpanded }: {
14894
+ isExpanded: boolean;
14895
+ }) => void;
14896
+ /**
14897
+ * Callback that gets triggered when controlled full expand/collapse transition ends.
14898
+ *
14899
+ * **Only applicable in desktop**
14900
+ */
14901
+ onExpandTransitionEnd?: ({ isExpanded }: {
14902
+ isExpanded: boolean;
14903
+ }) => void;
14904
+ /**
14905
+ * **Only applicable in desktop**
14906
+ *
14907
+ * Controls whether SideNav should remain fully expanded.
14908
+ * - `true` (default): existing behavior with hover-based temporary expansion.
14909
+ * - `false`: keeps SideNav collapsed and disables hover/focus-based expansion.
14910
+ */
14911
+ isExpanded?: boolean;
14879
14912
  /**
14880
14913
  * Banner slot for usecases like adding Activation Panel
14881
14914
  *
14882
14915
  * **IMPORTANT** Avoid adding promotional items in this
14883
14916
  */
14884
14917
  banner?: react__default.ReactElement;
14918
+ /**
14919
+ * Sets background color of the SideNav surface.
14920
+ *
14921
+ * @default `surface.background.gray.moderate`
14922
+ */
14923
+ backgroundColor?: SideNavBackgroundColor;
14885
14924
  } & StyledPropsBlade & TestID;
14886
14925
  type SideNavLinkProps = {
14887
14926
  /**
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@razorpay/blade",
3
3
  "description": "The Design System that powers Razorpay",
4
- "version": "12.91.0",
4
+ "version": "12.92.0",
5
5
  "license": "MIT",
6
6
  "engines": {
7
7
  "node": ">=18.12.1"