@bloomreach/react-banana-ui 1.32.2 → 1.34.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 (110) hide show
  1. package/README.md +229 -50
  2. package/dist/bloomreach-react-banana-ui.es.js +12507 -11672
  3. package/dist/bloomreach-react-banana-ui.es.js.map +1 -1
  4. package/dist/bloomreach-react-banana-ui.umd.js +18 -43
  5. package/dist/bloomreach-react-banana-ui.umd.js.map +1 -1
  6. package/dist/components/data-display/actions-container/actions-container.types.d.ts +2 -2
  7. package/dist/components/data-display/badge/badge.types.d.ts +2 -2
  8. package/dist/components/data-display/description/description.types.d.ts +2 -2
  9. package/dist/components/data-display/header/header.types.d.ts +2 -2
  10. package/dist/components/data-display/index.d.ts +1 -11
  11. package/dist/components/data-display/internal.d.ts +1 -1
  12. package/dist/components/data-display/table/index.d.ts +8 -2
  13. package/dist/components/data-display/table/table/index.d.ts +2 -0
  14. package/dist/components/data-display/tags/index.d.ts +4 -0
  15. package/dist/components/data-display/{tag → tags/tag}/tag.types.d.ts +2 -2
  16. package/dist/components/data-display/{tag-group → tags/tag-group}/tag-group.types.d.ts +2 -2
  17. package/dist/components/date/date-range-quick-selections/date-range-quick-selections.d.ts +9 -0
  18. package/dist/components/date/date-range-quick-selections/date-range-quick-selections.types.d.ts +25 -0
  19. package/dist/components/date/date-range-quick-selections/index.d.ts +2 -0
  20. package/dist/components/date/date-time-picker/date-time-picker.stories.d.ts +6 -0
  21. package/dist/components/date/date-time-picker/date-time-picker.types.d.ts +23 -1
  22. package/dist/components/date/date-time-range-picker/date-time-range-picker.stories.d.ts +11 -0
  23. package/dist/components/date/date-time-range-picker/date-time-range-picker.types.d.ts +86 -1
  24. package/dist/components/date/date-time-range-picker/index.d.ts +1 -0
  25. package/dist/components/dropdowns/menu/menu.stories.d.ts +9 -1
  26. package/dist/components/inputs/autocomplete/autocomplete.qa.stories.d.ts +3 -1
  27. package/dist/components/inputs/autocomplete/autocomplete.stories.d.ts +3 -0
  28. package/dist/components/inputs/autocomplete/autocomplete.types.d.ts +42 -2
  29. package/dist/components/inputs/autocomplete-field/autocomplete-field.d.ts +26 -0
  30. package/dist/components/inputs/autocomplete-field/autocomplete-field.qa.stories.d.ts +34 -0
  31. package/dist/components/inputs/autocomplete-field/autocomplete-field.stories.d.ts +44 -0
  32. package/dist/components/inputs/autocomplete-field/autocomplete-field.types.d.ts +34 -0
  33. package/dist/components/inputs/autocomplete-field/index.d.ts +2 -0
  34. package/dist/components/inputs/base-field/base-field.types.d.ts +4 -0
  35. package/dist/components/inputs/index.d.ts +1 -0
  36. package/dist/components/inputs/input-field/input-field.stories.d.ts +1 -0
  37. package/dist/components/inputs/internal.d.ts +1 -0
  38. package/dist/components/inputs/select-field/select-field.stories.d.ts +1 -0
  39. package/dist/components/inputs/text-field/text-field.stories.d.ts +1 -0
  40. package/dist/components/lists/listbox-item/listbox-item.types.d.ts +9 -1
  41. package/dist/components/lists/listbox-separator/index.d.ts +2 -0
  42. package/dist/components/lists/listbox-separator/listbox-separator.d.ts +24 -0
  43. package/dist/components/lists/listbox-separator/listbox-separator.types.d.ts +6 -0
  44. package/dist/components/popovers/tooltip/tooltip.qa.stories.d.ts +8 -2
  45. package/dist/components/popovers/tooltip/tooltip.stories.d.ts +43 -13
  46. package/dist/components/popovers/tooltip/tooltip.types.d.ts +6 -0
  47. package/dist/react-banana-ui.css +1 -1
  48. package/dist/utils/date-range-presets.d.ts +144 -0
  49. package/dist/utils/hooks/index.d.ts +1 -0
  50. package/dist/utils/hooks/use-sync-max-height.d.ts +8 -0
  51. package/dist/utils/index.d.ts +2 -0
  52. package/dist/utils/use-id.d.ts +39 -0
  53. package/package.json +42 -42
  54. package/dist/components/dropdowns/menu/menu/menu.stories.d.ts +0 -6
  55. package/dist/components/dropdowns/menu/menu-button/menu-button.stories.d.ts +0 -6
  56. package/dist/components/dropdowns/menu/menu-content/menu-content.stories.d.ts +0 -10
  57. package/dist/components/dropdowns/menu/menu-group/menu-group.stories.d.ts +0 -6
  58. package/dist/components/dropdowns/menu/menu-group-label/menu-group-label.stories.d.ts +0 -6
  59. package/dist/components/dropdowns/menu/menu-item/menu-item.stories.d.ts +0 -6
  60. package/dist/components/dropdowns/menu/menu-separator/menu-separator.stories.d.ts +0 -6
  61. package/dist/components/inputs/base-field/generate-field-id.d.ts +0 -4
  62. /package/dist/components/data-display/table/{table-context.d.ts → table/table-context.d.ts} +0 -0
  63. /package/dist/components/data-display/table/{table-section-context.d.ts → table/table-section-context.d.ts} +0 -0
  64. /package/dist/components/data-display/table/{table.d.ts → table/table.d.ts} +0 -0
  65. /package/dist/components/data-display/table/{table.qa.stories.d.ts → table/table.qa.stories.d.ts} +0 -0
  66. /package/dist/components/data-display/table/{table.stories.d.ts → table/table.stories.d.ts} +0 -0
  67. /package/dist/components/data-display/table/{table.types.d.ts → table/table.types.d.ts} +0 -0
  68. /package/dist/components/data-display/{table-body → table/table-body}/index.d.ts +0 -0
  69. /package/dist/components/data-display/{table-body → table/table-body}/table-body.d.ts +0 -0
  70. /package/dist/components/data-display/{table-body → table/table-body}/table-body.types.d.ts +0 -0
  71. /package/dist/components/data-display/{table-cell → table/table-cell}/index.d.ts +0 -0
  72. /package/dist/components/data-display/{table-cell → table/table-cell}/table-cell.d.ts +0 -0
  73. /package/dist/components/data-display/{table-cell → table/table-cell}/table-cell.types.d.ts +0 -0
  74. /package/dist/components/data-display/{table-cell-action → table/table-cell-action}/index.d.ts +0 -0
  75. /package/dist/components/data-display/{table-cell-action → table/table-cell-action}/table-cell-action.d.ts +0 -0
  76. /package/dist/components/data-display/{table-cell-action → table/table-cell-action}/table-cell-action.types.d.ts +0 -0
  77. /package/dist/components/data-display/{table-foot → table/table-foot}/index.d.ts +0 -0
  78. /package/dist/components/data-display/{table-foot → table/table-foot}/table-foot.d.ts +0 -0
  79. /package/dist/components/data-display/{table-foot → table/table-foot}/table-foot.types.d.ts +0 -0
  80. /package/dist/components/data-display/{table-head → table/table-head}/index.d.ts +0 -0
  81. /package/dist/components/data-display/{table-head → table/table-head}/table-head.d.ts +0 -0
  82. /package/dist/components/data-display/{table-head → table/table-head}/table-head.types.d.ts +0 -0
  83. /package/dist/components/data-display/{table-row → table/table-row}/index.d.ts +0 -0
  84. /package/dist/components/data-display/{table-row → table/table-row}/table-row-context.d.ts +0 -0
  85. /package/dist/components/data-display/{table-row → table/table-row}/table-row.d.ts +0 -0
  86. /package/dist/components/data-display/{table-row → table/table-row}/table-row.types.d.ts +0 -0
  87. /package/dist/components/data-display/{table-sort-label → table/table-sort-label}/index.d.ts +0 -0
  88. /package/dist/components/data-display/{table-sort-label → table/table-sort-label}/table-sort-label.d.ts +0 -0
  89. /package/dist/components/data-display/{table-sort-label → table/table-sort-label}/table-sort-label.types.d.ts +0 -0
  90. /package/dist/components/data-display/{asset-tag → tags/asset-tag}/asset-tag.d.ts +0 -0
  91. /package/dist/components/data-display/{asset-tag → tags/asset-tag}/asset-tag.qa.stories.d.ts +0 -0
  92. /package/dist/components/data-display/{asset-tag → tags/asset-tag}/asset-tag.stories.d.ts +0 -0
  93. /package/dist/components/data-display/{asset-tag → tags/asset-tag}/asset-tag.types.d.ts +0 -0
  94. /package/dist/components/data-display/{asset-tag → tags/asset-tag}/index.d.ts +0 -0
  95. /package/dist/components/data-display/{filter-tag → tags/filter-tag}/filter-tag.d.ts +0 -0
  96. /package/dist/components/data-display/{filter-tag → tags/filter-tag}/filter-tag.qa.stories.d.ts +0 -0
  97. /package/dist/components/data-display/{filter-tag → tags/filter-tag}/filter-tag.stories.d.ts +0 -0
  98. /package/dist/components/data-display/{filter-tag → tags/filter-tag}/filter-tag.types.d.ts +0 -0
  99. /package/dist/components/data-display/{filter-tag → tags/filter-tag}/index.d.ts +0 -0
  100. /package/dist/components/data-display/{input-tag → tags/input-tag}/index.d.ts +0 -0
  101. /package/dist/components/data-display/{input-tag → tags/input-tag}/input-tag.d.ts +0 -0
  102. /package/dist/components/data-display/{input-tag → tags/input-tag}/input-tag.qa.stories.d.ts +0 -0
  103. /package/dist/components/data-display/{input-tag → tags/input-tag}/input-tag.stories.d.ts +0 -0
  104. /package/dist/components/data-display/{input-tag → tags/input-tag}/input-tag.types.d.ts +0 -0
  105. /package/dist/components/data-display/{tag → tags/tag}/index.d.ts +0 -0
  106. /package/dist/components/data-display/{tag → tags/tag}/tag.d.ts +0 -0
  107. /package/dist/components/data-display/{tag-group → tags/tag-group}/index.d.ts +0 -0
  108. /package/dist/components/data-display/{tag-group → tags/tag-group}/tag-group.d.ts +0 -0
  109. /package/dist/components/data-display/{tag-group → tags/tag-group}/tag-group.qa.stories.d.ts +0 -0
  110. /package/dist/components/data-display/{tag-group → tags/tag-group}/tag-group.stories.d.ts +0 -0
@@ -1,4 +1,5 @@
1
1
  export * from './autocomplete';
2
+ export * from './autocomplete-field';
2
3
  export * from './checkbox';
3
4
  export * from './checkbox-field';
4
5
  export * from './checkbox-group';
@@ -14,6 +14,7 @@ export declare const CompleteField: Story;
14
14
  export declare const Disabled: Story;
15
15
  export declare const ReadOnly: Story;
16
16
  export declare const Error: Story;
17
+ export declare const Required: Story;
17
18
  export declare const FullWidth: Story;
18
19
  export declare const CompleteFieldFullWidth: Story;
19
20
  export declare const Controlled: Story;
@@ -1,3 +1,4 @@
1
+ export * from './autocomplete';
1
2
  export * from './base-field';
2
3
  export * from './base-input';
3
4
  export * from './checkbox';
@@ -8,6 +8,7 @@ export declare const WithLabel: Story;
8
8
  export declare const WithTooltip: Story;
9
9
  export declare const WithHelperText: Story;
10
10
  export declare const CompleteField: Story;
11
+ export declare const Required: Story;
11
12
  export declare const FullWidth: Story;
12
13
  export declare const ControlledSingleSelect: Story;
13
14
  export declare const Multiple: Story<string, true>;
@@ -12,6 +12,7 @@ export declare const CompleteField: Story;
12
12
  export declare const Disabled: Story;
13
13
  export declare const ReadOnly: Story;
14
14
  export declare const Error: Story;
15
+ export declare const Required: Story;
15
16
  export declare const ManuallyResizable: Story;
16
17
  export declare const MinRows: Story;
17
18
  export declare const AutoSize: Story;
@@ -1,4 +1,4 @@
1
- import { HTMLAttributes, ReactNode } from 'react';
1
+ import { HTMLAttributes, MouseEventHandler, ReactNode } from 'react';
2
2
  export interface ListboxItemProps {
3
3
  /**
4
4
  * The type of the check mark icon.
@@ -21,6 +21,10 @@ export interface ListboxItemProps {
21
21
  * If `true`, the item will be highlighted.
22
22
  */
23
23
  highlighted?: boolean;
24
+ /**
25
+ * The onClick handler for the list box item.
26
+ */
27
+ onClick?: MouseEventHandler<HTMLLIElement>;
24
28
  /**
25
29
  * The role of the list box item.
26
30
  * @default 'option'
@@ -30,4 +34,8 @@ export interface ListboxItemProps {
30
34
  * If `true`, the item will be selected.
31
35
  */
32
36
  selected?: boolean;
37
+ /**
38
+ * Icon displayed at the start of the item (before the content).
39
+ */
40
+ startIcon?: ReactNode;
33
41
  }
@@ -0,0 +1,2 @@
1
+ export { default as ListboxSeparator } from './listbox-separator';
2
+ export type { ListboxSeparatorProps } from './listbox-separator.types';
@@ -0,0 +1,24 @@
1
+ import { ListboxSeparatorProps } from './listbox-separator.types';
2
+ /**
3
+ * @internal
4
+ * The `ListboxSeparator` component is used to display a separator between list items.
5
+ *
6
+ * ### Usage
7
+ *
8
+ * ```tsx
9
+ * import { Listbox, ListboxItem, ListboxSeparator } from '@bloomreach/react-banana-ui';
10
+ *
11
+ * export default function MyList() {
12
+ * return (
13
+ * <Listbox>
14
+ * <ListboxItem>Item 1</ListboxItem>
15
+ * <ListboxItem>Item 2</ListboxItem>
16
+ * <ListboxSeparator />
17
+ * <ListboxItem>Item 3</ListboxItem>
18
+ * </Listbox>
19
+ * );
20
+ * }
21
+ * ```
22
+ */
23
+ declare const ListboxSeparator: import('react').ForwardRefExoticComponent<ListboxSeparatorProps & import('react').RefAttributes<HTMLLIElement>>;
24
+ export default ListboxSeparator;
@@ -0,0 +1,6 @@
1
+ export interface ListboxSeparatorProps {
2
+ /**
3
+ * Custom class name for the container of the component.
4
+ */
5
+ className?: string;
6
+ }
@@ -3,6 +3,12 @@ import { Meta } from '@storybook/react-vite';
3
3
  import { Story } from './tooltip.stories';
4
4
  declare const meta: Meta<typeof Tooltip>;
5
5
  export default meta;
6
- export declare const Simple: Story;
7
- export declare const LongHtmlContent: Story;
6
+ export declare const Basic: Story;
7
+ export declare const RichContent: Story;
8
+ export declare const Placement: Story;
9
+ export declare const IconTooltips: Story;
10
+ export declare const RenderOnIcon: Story;
11
+ export declare const RenderOnCustomIcon: Story;
8
12
  export declare const AutoPlacement: Story;
13
+ export declare const OverflowContainer: Story;
14
+ export declare const ScrollContainer: Story;
@@ -3,23 +3,53 @@ import { Meta, StoryObj } from '@storybook/react-vite';
3
3
  declare const meta: Meta<typeof Tooltip>;
4
4
  export default meta;
5
5
  export type Story = StoryObj<typeof Tooltip>;
6
- export declare const Simple: Story;
7
- export declare const LongHtmlContent: Story;
8
6
  /**
9
- * Automatically place the tooltip in the most appropriate place. This example also shows how you can pass a
10
- * reference to a custom portal(container where the tooltip is rendered and used to calculate the tooltip position)
11
- * using id. You can also pass a ref or a HTML element to the portalRoot prop
7
+ * Basic tooltip with simple text content on hover.
12
8
  */
13
- export declare const AutoPlacement: Story;
14
- export declare const InsideContainerWithOverflowHidden: Story;
15
- export declare const InsideContainerWithCustomScroll: Story;
9
+ export declare const Basic: Story;
10
+ /**
11
+ * Tooltips can contain rich HTML content including bold, italic, and other formatting.
12
+ */
13
+ export declare const RichContent: Story;
14
+ /**
15
+ * Control tooltip placement with the `placement` prop. Placement automatically adjusts if there isn't enough space.
16
+ */
17
+ export declare const Placement: Story;
16
18
  /**
17
- * Story to check that the refs are being passed properly in the icons component
19
+ * Tooltips can be attached to icon components. All icon types are supported.
18
20
  */
19
21
  export declare const IconTooltips: Story;
20
- export declare const EmptyTitleNoTooltip: Story;
21
22
  /**
22
- * If you want to show a tooltip over an element that can be disabled, wrap it in another HTML element like a
23
- * \<span\> or a \<div\>, since disabled elements do not trigger the hover and focus events
23
+ * When `renderOnIcon` is `true`, the tooltip is triggered by an info icon next to the content.
24
+ * This is useful for labels, form fields, and informational text.
25
+ */
26
+ export declare const RenderOnIcon: Story;
27
+ /**
28
+ * Provide a custom icon to `renderOnIcon` instead of the default info icon.
29
+ */
30
+ export declare const RenderOnCustomIcon: Story;
31
+ /**
32
+ * Tooltips automatically adjust position when constrained by container boundaries.
33
+ * The arrow position updates accordingly to maintain visual connection to the trigger.
34
+ */
35
+ export declare const AutoPlacement: Story;
36
+ /**
37
+ * Tooltips render in a portal by default, making them visible outside containers with `overflow: hidden`.
38
+ */
39
+ export declare const OverflowContainer: Story;
40
+ /**
41
+ * Tooltips stay attached to their trigger element when scrolling inside custom scroll containers.
42
+ */
43
+ export declare const ScrollContainer: Story;
44
+ /**
45
+ * When title is empty, no tooltip is rendered and the child element is returned as-is.
46
+ */
47
+ export declare const EmptyTitle: Story;
48
+ /**
49
+ * Real-world usage examples showing tooltips in common UI patterns.
50
+ */
51
+ export declare const RealWorldExamples: Story;
52
+ /**
53
+ * Complex layout demonstrating multiple tooltips working together in a card-based interface.
24
54
  */
25
- export declare const DisabledTriggerShouldShowTooltip: Story;
55
+ export declare const ComplexLayout: Story;
@@ -24,6 +24,12 @@ export interface TooltipProps extends Omit<HTMLAttributes<HTMLDivElement>, 'titl
24
24
  * determine the placement of the tooltip
25
25
  */
26
26
  portalRoot?: HTMLElement | React.MutableRefObject<HTMLElement | null> | string;
27
+ /**
28
+ * If `true`, the tooltip will be rendered on the info-small icon after the children.
29
+ * Allows rendering on a different icon by passing the appropriate icon element.
30
+ * @default false
31
+ */
32
+ renderOnIcon?: boolean | ReactElement;
27
33
  /**
28
34
  * The tooltip message, it can be string or any valid React node
29
35
  */