@seeqdev/qomponents 0.0.64 → 0.0.66

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 (152) hide show
  1. package/dist/ButtonWithDropdown/ButtonWithDropdown.types.d.ts +23 -8
  2. package/dist/ButtonWithPopover/ButtonWithPopover.types.d.ts +8 -0
  3. package/dist/index.esm.js +336 -27
  4. package/dist/index.esm.js.map +1 -1
  5. package/dist/index.js +336 -27
  6. package/dist/index.js.map +1 -1
  7. package/dist/styles.css +41 -50
  8. package/package.json +1 -1
  9. package/dist/Accordion/Accordion.js +0 -9
  10. package/dist/Accordion/Accordion.js.map +0 -1
  11. package/dist/Accordion/Accordion.stories.js +0 -109
  12. package/dist/Accordion/Accordion.stories.js.map +0 -1
  13. package/dist/Accordion/Accordion.test.js +0 -55
  14. package/dist/Accordion/Accordion.test.js.map +0 -1
  15. package/dist/Accordion/Accordion.types.js +0 -2
  16. package/dist/Accordion/Accordion.types.js.map +0 -1
  17. package/dist/Accordion/index.js +0 -2
  18. package/dist/Accordion/index.js.map +0 -1
  19. package/dist/Button/Button.js +0 -87
  20. package/dist/Button/Button.js.map +0 -1
  21. package/dist/Button/Button.stories.js +0 -77
  22. package/dist/Button/Button.stories.js.map +0 -1
  23. package/dist/Button/Button.test.js +0 -49
  24. package/dist/Button/Button.test.js.map +0 -1
  25. package/dist/Button/Button.types.js +0 -4
  26. package/dist/Button/Button.types.js.map +0 -1
  27. package/dist/Button/index.js +0 -2
  28. package/dist/Button/index.js.map +0 -1
  29. package/dist/ButtonWithDropdown/ButtonWithDropdown.js +0 -39
  30. package/dist/ButtonWithDropdown/ButtonWithDropdown.js.map +0 -1
  31. package/dist/ButtonWithDropdown/ButtonWithDropdown.stories.js +0 -66
  32. package/dist/ButtonWithDropdown/ButtonWithDropdown.stories.js.map +0 -1
  33. package/dist/ButtonWithDropdown/ButtonWithDropdown.test.js +0 -72
  34. package/dist/ButtonWithDropdown/ButtonWithDropdown.test.js.map +0 -1
  35. package/dist/ButtonWithDropdown/ButtonWithDropdown.types.js +0 -2
  36. package/dist/ButtonWithDropdown/ButtonWithDropdown.types.js.map +0 -1
  37. package/dist/ButtonWithDropdown/index.js +0 -2
  38. package/dist/ButtonWithDropdown/index.js.map +0 -1
  39. package/dist/ButtonWithPopover/ButtonWithPopover.js +0 -27
  40. package/dist/ButtonWithPopover/ButtonWithPopover.js.map +0 -1
  41. package/dist/ButtonWithPopover/ButtonWithPopover.stories.js +0 -50
  42. package/dist/ButtonWithPopover/ButtonWithPopover.stories.js.map +0 -1
  43. package/dist/ButtonWithPopover/ButtonWithPopover.test.js +0 -61
  44. package/dist/ButtonWithPopover/ButtonWithPopover.test.js.map +0 -1
  45. package/dist/ButtonWithPopover/ButtonWithPopover.types.js +0 -2
  46. package/dist/ButtonWithPopover/ButtonWithPopover.types.js.map +0 -1
  47. package/dist/ButtonWithPopover/index.js +0 -2
  48. package/dist/ButtonWithPopover/index.js.map +0 -1
  49. package/dist/Checkbox/Checkbox.js +0 -26
  50. package/dist/Checkbox/Checkbox.js.map +0 -1
  51. package/dist/Checkbox/Checkbox.stories.js +0 -34
  52. package/dist/Checkbox/Checkbox.stories.js.map +0 -1
  53. package/dist/Checkbox/Checkbox.test.js +0 -94
  54. package/dist/Checkbox/Checkbox.test.js.map +0 -1
  55. package/dist/Checkbox/Checkbox.types.js +0 -2
  56. package/dist/Checkbox/Checkbox.types.js.map +0 -1
  57. package/dist/Checkbox/index.js +0 -2
  58. package/dist/Checkbox/index.js.map +0 -1
  59. package/dist/Icon/Icon.js +0 -55
  60. package/dist/Icon/Icon.js.map +0 -1
  61. package/dist/Icon/Icon.stories.js +0 -41
  62. package/dist/Icon/Icon.stories.js.map +0 -1
  63. package/dist/Icon/Icon.test.js +0 -55
  64. package/dist/Icon/Icon.test.js.map +0 -1
  65. package/dist/Icon/Icon.types.js +0 -16
  66. package/dist/Icon/Icon.types.js.map +0 -1
  67. package/dist/Icon/index.js +0 -2
  68. package/dist/Icon/index.js.map +0 -1
  69. package/dist/Modal/Modal.js +0 -99
  70. package/dist/Modal/Modal.js.map +0 -1
  71. package/dist/Modal/Modal.stories.js +0 -176
  72. package/dist/Modal/Modal.stories.js.map +0 -1
  73. package/dist/Modal/Modal.test.js +0 -108
  74. package/dist/Modal/Modal.test.js.map +0 -1
  75. package/dist/Modal/Modal.types.js +0 -2
  76. package/dist/Modal/Modal.types.js.map +0 -1
  77. package/dist/Modal/index.js +0 -2
  78. package/dist/Modal/index.js.map +0 -1
  79. package/dist/Select/Select.js +0 -168
  80. package/dist/Select/Select.js.map +0 -1
  81. package/dist/Select/Select.stories.js +0 -72
  82. package/dist/Select/Select.stories.js.map +0 -1
  83. package/dist/Select/Select.test.js +0 -161
  84. package/dist/Select/Select.test.js.map +0 -1
  85. package/dist/Select/Select.types.js +0 -2
  86. package/dist/Select/Select.types.js.map +0 -1
  87. package/dist/Select/index.js +0 -2
  88. package/dist/Select/index.js.map +0 -1
  89. package/dist/Tabs/Tabs.js +0 -22
  90. package/dist/Tabs/Tabs.js.map +0 -1
  91. package/dist/Tabs/Tabs.stories.js +0 -91
  92. package/dist/Tabs/Tabs.stories.js.map +0 -1
  93. package/dist/Tabs/Tabs.test.js +0 -91
  94. package/dist/Tabs/Tabs.test.js.map +0 -1
  95. package/dist/Tabs/Tabs.types.js +0 -2
  96. package/dist/Tabs/Tabs.types.js.map +0 -1
  97. package/dist/Tabs/index.js +0 -2
  98. package/dist/Tabs/index.js.map +0 -1
  99. package/dist/TextArea/TextArea.js +0 -23
  100. package/dist/TextArea/TextArea.js.map +0 -1
  101. package/dist/TextArea/TextArea.stories.js +0 -39
  102. package/dist/TextArea/TextArea.stories.js.map +0 -1
  103. package/dist/TextArea/TextArea.test.js +0 -68
  104. package/dist/TextArea/TextArea.test.js.map +0 -1
  105. package/dist/TextArea/TextArea.types.js +0 -2
  106. package/dist/TextArea/TextArea.types.js.map +0 -1
  107. package/dist/TextArea/index.js +0 -2
  108. package/dist/TextArea/index.js.map +0 -1
  109. package/dist/TextField/TextField.js +0 -64
  110. package/dist/TextField/TextField.js.map +0 -1
  111. package/dist/TextField/TextField.stories.js +0 -41
  112. package/dist/TextField/TextField.stories.js.map +0 -1
  113. package/dist/TextField/TextField.test.js +0 -35
  114. package/dist/TextField/TextField.test.js.map +0 -1
  115. package/dist/TextField/TextField.types.js +0 -2
  116. package/dist/TextField/TextField.types.js.map +0 -1
  117. package/dist/TextField/index.js +0 -2
  118. package/dist/TextField/index.js.map +0 -1
  119. package/dist/ToolbarButton/ToolbarButton.js +0 -76
  120. package/dist/ToolbarButton/ToolbarButton.js.map +0 -1
  121. package/dist/ToolbarButton/ToolbarButton.stories.js +0 -89
  122. package/dist/ToolbarButton/ToolbarButton.stories.js.map +0 -1
  123. package/dist/ToolbarButton/ToolbarButton.test.js +0 -93
  124. package/dist/ToolbarButton/ToolbarButton.test.js.map +0 -1
  125. package/dist/ToolbarButton/ToolbarButton.types.js +0 -2
  126. package/dist/ToolbarButton/ToolbarButton.types.js.map +0 -1
  127. package/dist/ToolbarButton/index.js +0 -2
  128. package/dist/ToolbarButton/index.js.map +0 -1
  129. package/dist/Tooltip/QTip.stories.js +0 -40
  130. package/dist/Tooltip/QTip.stories.js.map +0 -1
  131. package/dist/Tooltip/QTip.types.js +0 -2
  132. package/dist/Tooltip/QTip.types.js.map +0 -1
  133. package/dist/Tooltip/QTipPerformance.stories.js +0 -30
  134. package/dist/Tooltip/QTipPerformance.stories.js.map +0 -1
  135. package/dist/Tooltip/Qtip.js +0 -154
  136. package/dist/Tooltip/Qtip.js.map +0 -1
  137. package/dist/Tooltip/Tooltip.js +0 -36
  138. package/dist/Tooltip/Tooltip.js.map +0 -1
  139. package/dist/Tooltip/Tooltip.stories.js +0 -32
  140. package/dist/Tooltip/Tooltip.stories.js.map +0 -1
  141. package/dist/Tooltip/Tooltip.types.js +0 -3
  142. package/dist/Tooltip/Tooltip.types.js.map +0 -1
  143. package/dist/Tooltip/TooltipPerformance.stories.js +0 -30
  144. package/dist/Tooltip/TooltipPerformance.stories.js.map +0 -1
  145. package/dist/Tooltip/index.js +0 -3
  146. package/dist/Tooltip/index.js.map +0 -1
  147. package/dist/Tooltip/qTip.utilities.js +0 -11
  148. package/dist/Tooltip/qTip.utilities.js.map +0 -1
  149. package/dist/types.js +0 -2
  150. package/dist/types.js.map +0 -1
  151. package/dist/utils/browserId.js +0 -29
  152. package/dist/utils/browserId.js.map +0 -1
@@ -1,23 +1,36 @@
1
1
  import { TooltipComponentProps } from '../Tooltip/Tooltip.types';
2
- interface DropdownSubItems {
3
- /** icon class to be used with the dropdown subitems - if available (i.e. 'fc-zoom') */
2
+ interface DropdownSubItem {
3
+ /** icon class to be used with the dropdown subitems - if available (i.e. 'fc-zoom') */
4
+ iconClass?: string;
5
+ /** label for the dropdown subitems */
6
+ label: string;
7
+ /** function called when the dropdown subitem is clicked on */
8
+ onClick?: (e?: Event) => void;
9
+ /** is subitem disabled */
10
+ disabled?: boolean;
11
+ /** tooltip for the dropdown subitem */
12
+ tooltip?: string;
13
+ }
14
+ interface DropdownItems {
15
+ id?: string;
16
+ /** icon class to be used with the dropdown items - if available (i.e. 'fc-zoom') */
4
17
  icon?: string;
5
- /** icon type to be used with the dropdown subitems - if available (i.e. 'fc') */
18
+ /** icon type to be used with the dropdown items - if available (i.e. 'fc') */
6
19
  iconType?: string;
7
- /** icon color to be used with the dropdown subitems - if available */
20
+ /** icon color to be used with the dropdown items - if available */
8
21
  iconColor?: string;
9
22
  /** custom id for the icon */
10
23
  iconCustomId?: string;
11
24
  /** icon extra class names */
12
25
  iconExtraClassNames?: string;
13
- /** label for the dropdown subitems */
26
+ /** label for the dropdown items */
14
27
  label: string;
15
28
  /** custom id for the dropdown label */
16
29
  labelCustomId?: string;
17
30
  /** is the dropdown subitem a label */
18
31
  isLabel?: boolean;
19
- /** function called when the dropdown subitem is clicked on */
20
- onClick: (e: Event) => void;
32
+ /** function called when the dropdown item is clicked on */
33
+ onClick: (e?: Event) => void;
21
34
  /** dropdown subitem container classes */
22
35
  itemContainerClasses?: string;
23
36
  /** dropdown subitem label classes */
@@ -36,10 +49,12 @@ interface DropdownSubItems {
36
49
  hasDivider?: boolean;
37
50
  /** test id for the dropdown subitem */
38
51
  testId?: string;
52
+ /** subitems for the dropdown */
53
+ subMenuItems?: DropdownSubItem[];
39
54
  }
40
55
  export interface ButtonWithDropdownProps extends TooltipComponentProps {
41
56
  /** items for the dropdown content */
42
- dropdownItems: DropdownSubItems[];
57
+ dropdownItems: DropdownItems[];
43
58
  /** icon element to be used as the trigger */
44
59
  triggerIcon: React.ReactNode;
45
60
  /** id of the dropdown trigger */
@@ -29,6 +29,10 @@ export interface ButtonWithPopoverProps extends TooltipComponentProps {
29
29
  onOpenChange?: (isOpen: boolean) => void;
30
30
  /** set to display arrow or not */
31
31
  hasArrow?: boolean;
32
+ /** displays the popover when we hover over trigger */
33
+ isHoverEnabled?: boolean;
34
+ /** delay before popover is displayed when isHoverEnabled is true */
35
+ hoverOpenDelay?: number;
32
36
  /** extra trigger container classnames */
33
37
  extraTriggerClassNames?: string;
34
38
  /** extra popover container classnames */
@@ -37,4 +41,8 @@ export interface ButtonWithPopoverProps extends TooltipComponentProps {
37
41
  isCloseOnContentClick?: boolean;
38
42
  /** sets focus on the trigger button after the dropdown is closed */
39
43
  setFocusOnTriggerOnClose?: boolean;
44
+ /** calls the function if click or focus happens outside popover content */
45
+ onInteractOutside?: () => void;
46
+ /** calls the function if pointer down happens outside popover content */
47
+ onPointerDownOutside?: () => void;
40
48
  }
package/dist/index.esm.js CHANGED
@@ -89,7 +89,7 @@ const Icon = ({ onClick, icon, iconPrefix = undefined, type = 'theme', extraClas
89
89
  const iconPrefixString = icon.startsWith('fc') ? 'fc' : fontAwesomePrefix;
90
90
  const style = type === 'color' && color ? { color } : {};
91
91
  const appliedClassNames = `${iconPrefixString} ${icon} ${small ? 'fa-sm' : ''} ${large ? 'fa-lg' : ''}
92
- ${colorClassesThemeLight[type]} ${colorClassesThemeDark[type]} ${onClick ? 'cursor-pointer' : ''} ${extraClassNames}`;
92
+ ${colorClassesThemeLight[type]} ${colorClassesThemeDark[type]} ${onClick ? 'cursor-pointer' : ''} ${extraClassNames} focus:tw-outline-none focus-visible:tw-outline-none tw-outline-none`;
93
93
  const tooltipData = getQTipData(tooltipProps);
94
94
  return (React__default.createElement("i", { className: appliedClassNames, style: style, onClick: onClick, "data-testid": testId, "data-customid": customId, id: id, "data-number": number, ...tooltipData }));
95
95
  };
@@ -4548,12 +4548,8 @@ const borderStyles$3 = [
4548
4548
  'tw-border-solid',
4549
4549
  'tw-border',
4550
4550
  'tw-rounded-sm',
4551
- 'hover:tw-border-sq-light-gray',
4552
- 'focus:tw-border-sq-light-gray',
4553
- 'active:tw-border-sq-sq-light-gray',
4554
- 'dark:hover:tw-border-sq-color-dark-dark',
4555
- 'dark:focus:tw-border-sq-color-dark-dark',
4556
- 'dark:active:tw-border-sq-color-dark-dark',
4551
+ 'tw-border-sq-disabled-gray',
4552
+ 'dark:tw-border-gray-500',
4557
4553
  ].join(' ');
4558
4554
  const triggerBorderStyles = [
4559
4555
  'tw-border-solid',
@@ -4612,7 +4608,8 @@ const ToolbarButton = ({ isSmall = false, label, icon, secondIcon, forceSmallIco
4612
4608
  ' tw-relative tw-z-[1000] tw-min-w-6 tw-p-[0.5rem] focus-visible:tw-outline-none tw-outline-none data-[state=open]:animate-in data-[state=closed]:animate-out' +
4613
4609
  ' data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2' +
4614
4610
  borderStyles$3 },
4615
- hasArrow && (React.createElement($cb5cc270b50c6fcd$export$21b07c8f274aebd5, { className: "tw-fill-white tw-stroke-2 dark:tw-fill-sq-dark-background tw-stroke-slate-300 dark:tw-stroke-sq-color-dark-dark" })),
4611
+ hasArrow && (React.createElement($cb5cc270b50c6fcd$export$21b07c8f274aebd5, { asChild: true },
4612
+ React.createElement("div", { className: " tw-fill-transparent tw-bg-white tw-w-[15px] tw-h-[15px] tw-mt-[-7px] tw-rotate-45 dark:tw-bg-sq-dark-background tw-border-b tw-border-r tw-border-sq-disabled-gray dark:tw-border-gray-500" }))),
4616
4613
  popoverContent))) : undefined));
4617
4614
  };
4618
4615
 
@@ -4695,7 +4692,7 @@ const Checkbox = (props) => {
4695
4692
  const assignedId = id ?? 'checkbox_' + Math.random();
4696
4693
  const tooltipData = getQTipData(tooltipProps);
4697
4694
  return (React__default.createElement("span", { className: `${alignment} ${extraClassNames}` },
4698
- React__default.createElement("input", { value: value, type: type, "data-testid": testId, name: name, id: assignedId, checked: checked, defaultChecked: defaultChecked, className: `${type === 'checkbox' ? checkboxClasses : radioClasses} ${disabled ? 'tw-cursor-not-allowed' : 'tw-cursor-pointer'}`, disabled: disabled, onClick: onClick, onChange: onChange, onKeyDown: onKeyDown, ...tooltipData }),
4695
+ React__default.createElement("input", { value: value, type: type, "data-testid": testId, name: name, id: assignedId, readOnly: !onChange, checked: checked, defaultChecked: defaultChecked, className: `${type === 'checkbox' ? checkboxClasses : radioClasses} ${disabled ? 'tw-cursor-not-allowed' : 'tw-cursor-pointer'}`, disabled: disabled, onClick: onClick, onChange: onChange, onKeyDown: onKeyDown, ...tooltipData }),
4699
4696
  React__default.createElement("label", { htmlFor: assignedId, className: `${labelClasses} ${extraLabelClassNames} ${disabled
4700
4697
  ? 'tw-cursor-not-allowed dark:tw-text-sq-fairly-dark-gray tw-text-sq-fairly-dark-gray'
4701
4698
  : 'tw-cursor-pointer tw-text-sq-text-color dark:tw-text-sq-dark-text'}` }, label)));
@@ -15000,20 +14997,39 @@ const borderStyles$1 = [
15000
14997
  'tw-border',
15001
14998
  'tw-rounded-sm',
15002
14999
  'tw-border-sq-disabled-gray',
15003
- 'dark:tw-border-gray-700',
15000
+ 'dark:tw-border-gray-500',
15004
15001
  ].join(' ');
15005
15002
  const disabledClasses$1 = ['tw-opacity-50', 'tw-cursor-not-allowed'].join(' ');
15006
- const ButtonWithPopover = ({ children, trigger, id, hasArrow, extraTriggerClassNames, extraPopoverClassNames, containerTestId, disabled = false, align = 'end', alignOffset = -5, placement = 'bottom', placementOffset = 2, onOpenChange, isOpen, isCloseOnContentClick = false, setFocusOnTriggerOnClose = true, ...tooltipProps }) => {
15003
+ const ButtonWithPopover = ({ children, trigger, id, hasArrow, extraTriggerClassNames, extraPopoverClassNames, containerTestId, onInteractOutside, onPointerDownOutside, disabled = false, align = 'end', alignOffset = -35, placement = 'bottom', placementOffset = 2, isHoverEnabled = false, hoverOpenDelay = 300, onOpenChange, isOpen, isCloseOnContentClick = false, setFocusOnTriggerOnClose = true, ...tooltipProps }) => {
15007
15004
  const tooltipData = getQTipData(tooltipProps);
15008
- return (React.createElement($cb5cc270b50c6fcd$export$be92b6f5f03c0fe9, { open: isOpen, defaultOpen: false, onOpenChange: onOpenChange },
15005
+ let timeout;
15006
+ const [isHoveredOpen, setIsHoveredOpen] = React.useState();
15007
+ const onHoverStart = () => {
15008
+ if (isHoverEnabled) {
15009
+ timeout = setTimeout(() => {
15010
+ setIsHoveredOpen(true);
15011
+ onOpenChange && onOpenChange(true);
15012
+ }, hoverOpenDelay);
15013
+ }
15014
+ };
15015
+ const onHoverEnd = () => {
15016
+ if (isHoverEnabled) {
15017
+ timeout = setTimeout(() => {
15018
+ setIsHoveredOpen(false);
15019
+ onOpenChange && onOpenChange(false);
15020
+ }, 200);
15021
+ }
15022
+ };
15023
+ React.useEffect(() => () => timeout && clearTimeout(timeout), []);
15024
+ return (React.createElement($cb5cc270b50c6fcd$export$be92b6f5f03c0fe9, { open: isOpen || isHoveredOpen, defaultOpen: false, onOpenChange: onOpenChange },
15009
15025
  React.createElement($cb5cc270b50c6fcd$export$41fb9f06171c75f4, { id: id, className: `tw-border-none`, disabled: disabled },
15010
- React.createElement("div", { ...tooltipData, className: `tw-bg-transparent tw-flex tw-flex-col tw-items-center tw-justify-center ${disabled ? disabledClasses$1 : ''} ${extraTriggerClassNames || ''}` }, trigger)),
15011
- React.createElement($cb5cc270b50c6fcd$export$7c6e2c02157bb7d2, { sideOffset: placementOffset, align: align, side: placement, alignOffset: alignOffset, onCloseAutoFocus: (e) => !setFocusOnTriggerOnClose && e.preventDefault(), asChild: true, onClick: () => isCloseOnContentClick && onOpenChange && onOpenChange(false), className: "focus-visible:tw-outline-none tw-outline-none" },
15012
- React.createElement("div", { "data-testid": containerTestId, className: `${bgStyles$1} ${borderStyles$1} tw-relative tw-z-[1000] tw-min-w-6 tw-p-[0.5rem] focus-visible:tw-outline-none tw-outline-none data-[state=open]:tw-animate-in data-[state=closed]:tw-animate-out
15013
- data-[side=top]:tw-animate-slideDownAndFade data-[side=right]:tw-animate-slideLeftAndFade data-[side=bottom]:tw-animate-slideUpAndFade data-[side=left]:tw-animate-slideRightAndFade
15026
+ React.createElement("div", { ...tooltipData, onMouseOver: onHoverStart, onMouseOut: onHoverEnd, className: `tw-bg-transparent tw-flex tw-flex-col tw-items-center tw-justify-center focus-visible:tw-outline-none tw-outline-none ${disabled ? disabledClasses$1 : ''} ${extraTriggerClassNames || ''}` }, trigger)),
15027
+ React.createElement($cb5cc270b50c6fcd$export$7c6e2c02157bb7d2, { sideOffset: placementOffset, align: align, side: placement, onInteractOutside: onInteractOutside, onPointerDownOutside: onPointerDownOutside, alignOffset: isHoverEnabled ? -10 : alignOffset, asChild: true, onClick: () => isCloseOnContentClick && onOpenChange && onOpenChange(false), className: "focus-visible:tw-outline-none tw-outline-none" },
15028
+ React.createElement("div", { "data-testid": containerTestId, className: `${bgStyles$1} ${borderStyles$1} tw-relative tw-z-[1000] tw-min-w-6 focus-visible:tw-outline-none tw-outline-none data-[state=open]:tw-animate-in data-[state=closed]:tw-animate-out
15029
+ data-[side=top]:tw-animate-slideDownAndFade data-[side=right]:tw-animate-slideLeftAndFade data-[side=bottom]:tw-animate-slideUpAndFade data-[side=left]:tw-animate-slideRightAndFade tw-text-sq-text-color
15014
15030
  ${extraPopoverClassNames || ''}` },
15015
15031
  hasArrow && (React.createElement($cb5cc270b50c6fcd$export$21b07c8f274aebd5, { asChild: true },
15016
- React.createElement("div", { className: " tw-fill-transparent tw-bg-white tw-w-[6px] tw-h-[6px] tw-rotate-45 dark:tw-bg-sq-dark-background tw-border-b tw-border-r tw-border-sq-disabled-gray dark:tw-border-gray-700 tw-mt-[-2px]" }))),
15032
+ React.createElement("div", { className: " tw-fill-transparent tw-bg-white tw-w-[15px] tw-h-[15px] tw-mt-[-7px] tw-rotate-45 dark:tw-bg-sq-dark-background tw-border-b tw-border-r tw-border-sq-disabled-gray dark:tw-border-gray-500" }))),
15017
15033
  children))));
15018
15034
  };
15019
15035
 
@@ -15035,6 +15051,24 @@ const $6cc32821e9371a1c$var$FIRST_LAST_KEYS = [
15035
15051
  ...$6cc32821e9371a1c$var$FIRST_KEYS,
15036
15052
  ...$6cc32821e9371a1c$var$LAST_KEYS
15037
15053
  ];
15054
+ const $6cc32821e9371a1c$var$SUB_OPEN_KEYS = {
15055
+ ltr: [
15056
+ ...$6cc32821e9371a1c$var$SELECTION_KEYS,
15057
+ 'ArrowRight'
15058
+ ],
15059
+ rtl: [
15060
+ ...$6cc32821e9371a1c$var$SELECTION_KEYS,
15061
+ 'ArrowLeft'
15062
+ ]
15063
+ };
15064
+ const $6cc32821e9371a1c$var$SUB_CLOSE_KEYS = {
15065
+ ltr: [
15066
+ 'ArrowLeft'
15067
+ ],
15068
+ rtl: [
15069
+ 'ArrowRight'
15070
+ ]
15071
+ };
15038
15072
  /* -------------------------------------------------------------------------------------------------
15039
15073
  * Menu
15040
15074
  * -----------------------------------------------------------------------------------------------*/ const $6cc32821e9371a1c$var$MENU_NAME = 'Menu';
@@ -15482,7 +15516,218 @@ const $6cc32821e9371a1c$export$bcdda4773debf5fa = /*#__PURE__*/ forwardRef((prop
15482
15516
  /* -------------------------------------------------------------------------------------------------
15483
15517
  * MenuSub
15484
15518
  * -----------------------------------------------------------------------------------------------*/ const $6cc32821e9371a1c$var$SUB_NAME = 'MenuSub';
15485
- $6cc32821e9371a1c$var$createMenuContext($6cc32821e9371a1c$var$SUB_NAME);
15519
+ const [$6cc32821e9371a1c$var$MenuSubProvider, $6cc32821e9371a1c$var$useMenuSubContext] = $6cc32821e9371a1c$var$createMenuContext($6cc32821e9371a1c$var$SUB_NAME);
15520
+ const $6cc32821e9371a1c$export$71bdb9d1e2909932 = (props)=>{
15521
+ const { __scopeMenu: __scopeMenu , children: children , open: open = false , onOpenChange: onOpenChange } = props;
15522
+ const parentMenuContext = $6cc32821e9371a1c$var$useMenuContext($6cc32821e9371a1c$var$SUB_NAME, __scopeMenu);
15523
+ const popperScope = $6cc32821e9371a1c$var$usePopperScope(__scopeMenu);
15524
+ const [trigger, setTrigger] = useState(null);
15525
+ const [content, setContent] = useState(null);
15526
+ const handleOpenChange = $b1b2314f5f9a1d84$export$25bec8c6f54ee79a(onOpenChange); // Prevent the parent menu from reopening with open submenus.
15527
+ useEffect(()=>{
15528
+ if (parentMenuContext.open === false) handleOpenChange(false);
15529
+ return ()=>handleOpenChange(false)
15530
+ ;
15531
+ }, [
15532
+ parentMenuContext.open,
15533
+ handleOpenChange
15534
+ ]);
15535
+ return /*#__PURE__*/ createElement($cf1ac5d9fe0e8206$export$be92b6f5f03c0fe9, popperScope, /*#__PURE__*/ createElement($6cc32821e9371a1c$var$MenuProvider, {
15536
+ scope: __scopeMenu,
15537
+ open: open,
15538
+ onOpenChange: handleOpenChange,
15539
+ content: content,
15540
+ onContentChange: setContent
15541
+ }, /*#__PURE__*/ createElement($6cc32821e9371a1c$var$MenuSubProvider, {
15542
+ scope: __scopeMenu,
15543
+ contentId: $1746a345f3d73bb7$export$f680877a34711e37(),
15544
+ triggerId: $1746a345f3d73bb7$export$f680877a34711e37(),
15545
+ trigger: trigger,
15546
+ onTriggerChange: setTrigger
15547
+ }, children)));
15548
+ };
15549
+ /* -------------------------------------------------------------------------------------------------
15550
+ * MenuSubTrigger
15551
+ * -----------------------------------------------------------------------------------------------*/ const $6cc32821e9371a1c$var$SUB_TRIGGER_NAME = 'MenuSubTrigger';
15552
+ const $6cc32821e9371a1c$export$5fbbb3ba7297405f = /*#__PURE__*/ forwardRef((props, forwardedRef)=>{
15553
+ const context = $6cc32821e9371a1c$var$useMenuContext($6cc32821e9371a1c$var$SUB_TRIGGER_NAME, props.__scopeMenu);
15554
+ const rootContext = $6cc32821e9371a1c$var$useMenuRootContext($6cc32821e9371a1c$var$SUB_TRIGGER_NAME, props.__scopeMenu);
15555
+ const subContext = $6cc32821e9371a1c$var$useMenuSubContext($6cc32821e9371a1c$var$SUB_TRIGGER_NAME, props.__scopeMenu);
15556
+ const contentContext = $6cc32821e9371a1c$var$useMenuContentContext($6cc32821e9371a1c$var$SUB_TRIGGER_NAME, props.__scopeMenu);
15557
+ const openTimerRef = useRef(null);
15558
+ const { pointerGraceTimerRef: pointerGraceTimerRef , onPointerGraceIntentChange: onPointerGraceIntentChange } = contentContext;
15559
+ const scope = {
15560
+ __scopeMenu: props.__scopeMenu
15561
+ };
15562
+ const clearOpenTimer = useCallback(()=>{
15563
+ if (openTimerRef.current) window.clearTimeout(openTimerRef.current);
15564
+ openTimerRef.current = null;
15565
+ }, []);
15566
+ useEffect(()=>clearOpenTimer
15567
+ , [
15568
+ clearOpenTimer
15569
+ ]);
15570
+ useEffect(()=>{
15571
+ const pointerGraceTimer = pointerGraceTimerRef.current;
15572
+ return ()=>{
15573
+ window.clearTimeout(pointerGraceTimer);
15574
+ onPointerGraceIntentChange(null);
15575
+ };
15576
+ }, [
15577
+ pointerGraceTimerRef,
15578
+ onPointerGraceIntentChange
15579
+ ]);
15580
+ return /*#__PURE__*/ createElement($6cc32821e9371a1c$export$9fa5ebd18bee4d43, _extends({
15581
+ asChild: true
15582
+ }, scope), /*#__PURE__*/ createElement($6cc32821e9371a1c$var$MenuItemImpl, _extends({
15583
+ id: subContext.triggerId,
15584
+ "aria-haspopup": "menu",
15585
+ "aria-expanded": context.open,
15586
+ "aria-controls": subContext.contentId,
15587
+ "data-state": $6cc32821e9371a1c$var$getOpenState(context.open)
15588
+ }, props, {
15589
+ ref: $6ed0406888f73fc4$export$43e446d32b3d21af(forwardedRef, subContext.onTriggerChange) // This is redundant for mouse users but we cannot determine pointer type from
15590
+ ,
15591
+ onClick: (event)=>{
15592
+ var _props$onClick;
15593
+ (_props$onClick = props.onClick) === null || _props$onClick === void 0 || _props$onClick.call(props, event);
15594
+ if (props.disabled || event.defaultPrevented) return;
15595
+ /**
15596
+ * We manually focus because iOS Safari doesn't always focus on click (e.g. buttons)
15597
+ * and we rely heavily on `onFocusOutside` for submenus to close when switching
15598
+ * between separate submenus.
15599
+ */ event.currentTarget.focus();
15600
+ if (!context.open) context.onOpenChange(true);
15601
+ },
15602
+ onPointerMove: $e42e1063c40fb3ef$export$b9ecd428b558ff10(props.onPointerMove, $6cc32821e9371a1c$var$whenMouse((event)=>{
15603
+ contentContext.onItemEnter(event);
15604
+ if (event.defaultPrevented) return;
15605
+ if (!props.disabled && !context.open && !openTimerRef.current) {
15606
+ contentContext.onPointerGraceIntentChange(null);
15607
+ openTimerRef.current = window.setTimeout(()=>{
15608
+ context.onOpenChange(true);
15609
+ clearOpenTimer();
15610
+ }, 100);
15611
+ }
15612
+ })),
15613
+ onPointerLeave: $e42e1063c40fb3ef$export$b9ecd428b558ff10(props.onPointerLeave, $6cc32821e9371a1c$var$whenMouse((event)=>{
15614
+ var _context$content;
15615
+ clearOpenTimer();
15616
+ const contentRect = (_context$content = context.content) === null || _context$content === void 0 ? void 0 : _context$content.getBoundingClientRect();
15617
+ if (contentRect) {
15618
+ var _context$content2;
15619
+ // TODO: make sure to update this when we change positioning logic
15620
+ const side = (_context$content2 = context.content) === null || _context$content2 === void 0 ? void 0 : _context$content2.dataset.side;
15621
+ const rightSide = side === 'right';
15622
+ const bleed = rightSide ? -5 : 5;
15623
+ const contentNearEdge = contentRect[rightSide ? 'left' : 'right'];
15624
+ const contentFarEdge = contentRect[rightSide ? 'right' : 'left'];
15625
+ contentContext.onPointerGraceIntentChange({
15626
+ area: [
15627
+ // consistently within polygon bounds
15628
+ {
15629
+ x: event.clientX + bleed,
15630
+ y: event.clientY
15631
+ },
15632
+ {
15633
+ x: contentNearEdge,
15634
+ y: contentRect.top
15635
+ },
15636
+ {
15637
+ x: contentFarEdge,
15638
+ y: contentRect.top
15639
+ },
15640
+ {
15641
+ x: contentFarEdge,
15642
+ y: contentRect.bottom
15643
+ },
15644
+ {
15645
+ x: contentNearEdge,
15646
+ y: contentRect.bottom
15647
+ }
15648
+ ],
15649
+ side: side
15650
+ });
15651
+ window.clearTimeout(pointerGraceTimerRef.current);
15652
+ pointerGraceTimerRef.current = window.setTimeout(()=>contentContext.onPointerGraceIntentChange(null)
15653
+ , 300);
15654
+ } else {
15655
+ contentContext.onTriggerLeave(event);
15656
+ if (event.defaultPrevented) return; // There's 100ms where the user may leave an item before the submenu was opened.
15657
+ contentContext.onPointerGraceIntentChange(null);
15658
+ }
15659
+ })),
15660
+ onKeyDown: $e42e1063c40fb3ef$export$b9ecd428b558ff10(props.onKeyDown, (event)=>{
15661
+ const isTypingAhead = contentContext.searchRef.current !== '';
15662
+ if (props.disabled || isTypingAhead && event.key === ' ') return;
15663
+ if ($6cc32821e9371a1c$var$SUB_OPEN_KEYS[rootContext.dir].includes(event.key)) {
15664
+ var _context$content3;
15665
+ context.onOpenChange(true); // The trigger may hold focus if opened via pointer interaction
15666
+ // so we ensure content is given focus again when switching to keyboard.
15667
+ (_context$content3 = context.content) === null || _context$content3 === void 0 || _context$content3.focus(); // prevent window from scrolling
15668
+ event.preventDefault();
15669
+ }
15670
+ })
15671
+ })));
15672
+ });
15673
+ /* -------------------------------------------------------------------------------------------------
15674
+ * MenuSubContent
15675
+ * -----------------------------------------------------------------------------------------------*/ const $6cc32821e9371a1c$var$SUB_CONTENT_NAME = 'MenuSubContent';
15676
+ const $6cc32821e9371a1c$export$e7142ab31822bde6 = /*#__PURE__*/ forwardRef((props, forwardedRef)=>{
15677
+ const portalContext = $6cc32821e9371a1c$var$usePortalContext($6cc32821e9371a1c$var$CONTENT_NAME, props.__scopeMenu);
15678
+ const { forceMount: forceMount = portalContext.forceMount , ...subContentProps } = props;
15679
+ const context = $6cc32821e9371a1c$var$useMenuContext($6cc32821e9371a1c$var$CONTENT_NAME, props.__scopeMenu);
15680
+ const rootContext = $6cc32821e9371a1c$var$useMenuRootContext($6cc32821e9371a1c$var$CONTENT_NAME, props.__scopeMenu);
15681
+ const subContext = $6cc32821e9371a1c$var$useMenuSubContext($6cc32821e9371a1c$var$SUB_CONTENT_NAME, props.__scopeMenu);
15682
+ const ref = useRef(null);
15683
+ const composedRefs = $6ed0406888f73fc4$export$c7b2cbe3552a0d05(forwardedRef, ref);
15684
+ return /*#__PURE__*/ createElement($6cc32821e9371a1c$var$Collection.Provider, {
15685
+ scope: props.__scopeMenu
15686
+ }, /*#__PURE__*/ createElement($921a889cee6df7e8$export$99c2b779aa4e8b8b, {
15687
+ present: forceMount || context.open
15688
+ }, /*#__PURE__*/ createElement($6cc32821e9371a1c$var$Collection.Slot, {
15689
+ scope: props.__scopeMenu
15690
+ }, /*#__PURE__*/ createElement($6cc32821e9371a1c$var$MenuContentImpl, _extends({
15691
+ id: subContext.contentId,
15692
+ "aria-labelledby": subContext.triggerId
15693
+ }, subContentProps, {
15694
+ ref: composedRefs,
15695
+ align: "start",
15696
+ side: rootContext.dir === 'rtl' ? 'left' : 'right',
15697
+ disableOutsidePointerEvents: false,
15698
+ disableOutsideScroll: false,
15699
+ trapFocus: false,
15700
+ onOpenAutoFocus: (event)=>{
15701
+ var _ref$current;
15702
+ // when opening a submenu, focus content for keyboard users only
15703
+ if (rootContext.isUsingKeyboardRef.current) (_ref$current = ref.current) === null || _ref$current === void 0 || _ref$current.focus();
15704
+ event.preventDefault();
15705
+ } // The menu might close because of focusing another menu item in the parent menu. We
15706
+ ,
15707
+ onCloseAutoFocus: (event)=>event.preventDefault()
15708
+ ,
15709
+ onFocusOutside: $e42e1063c40fb3ef$export$b9ecd428b558ff10(props.onFocusOutside, (event)=>{
15710
+ // We prevent closing when the trigger is focused to avoid triggering a re-open animation
15711
+ // on pointer interaction.
15712
+ if (event.target !== subContext.trigger) context.onOpenChange(false);
15713
+ }),
15714
+ onEscapeKeyDown: $e42e1063c40fb3ef$export$b9ecd428b558ff10(props.onEscapeKeyDown, (event)=>{
15715
+ rootContext.onClose(); // ensure pressing escape in submenu doesn't escape full screen mode
15716
+ event.preventDefault();
15717
+ }),
15718
+ onKeyDown: $e42e1063c40fb3ef$export$b9ecd428b558ff10(props.onKeyDown, (event)=>{
15719
+ // Submenu key events bubble through portals. We only care about keys in this menu.
15720
+ const isKeyDownInside = event.currentTarget.contains(event.target);
15721
+ const isCloseKey = $6cc32821e9371a1c$var$SUB_CLOSE_KEYS[rootContext.dir].includes(event.key);
15722
+ if (isKeyDownInside && isCloseKey) {
15723
+ var _subContext$trigger;
15724
+ context.onOpenChange(false); // We focus manually because we prevented it in `onCloseAutoFocus`
15725
+ (_subContext$trigger = subContext.trigger) === null || _subContext$trigger === void 0 || _subContext$trigger.focus(); // prevent window from scrolling
15726
+ event.preventDefault();
15727
+ }
15728
+ })
15729
+ })))));
15730
+ });
15486
15731
  /* -----------------------------------------------------------------------------------------------*/ function $6cc32821e9371a1c$var$getOpenState(open) {
15487
15732
  return open ? 'open' : 'closed';
15488
15733
  }
@@ -15565,6 +15810,9 @@ const $6cc32821e9371a1c$export$b04be29aa201d4f5 = $6cc32821e9371a1c$export$dd37b
15565
15810
  const $6cc32821e9371a1c$export$6d08773d2e66f8f2 = $6cc32821e9371a1c$export$2ce376c2cc3355c8;
15566
15811
  const $6cc32821e9371a1c$export$1ff3c3f08ae963c0 = $6cc32821e9371a1c$export$1cec7dcdd713e220;
15567
15812
  const $6cc32821e9371a1c$export$21b07c8f274aebd5 = $6cc32821e9371a1c$export$bcdda4773debf5fa;
15813
+ const $6cc32821e9371a1c$export$d7a01e11500dfb6f = $6cc32821e9371a1c$export$71bdb9d1e2909932;
15814
+ const $6cc32821e9371a1c$export$2ea8a7a591ac5eac = $6cc32821e9371a1c$export$5fbbb3ba7297405f;
15815
+ const $6cc32821e9371a1c$export$6d4de93b380beddf = $6cc32821e9371a1c$export$e7142ab31822bde6;
15568
15816
 
15569
15817
  /* -------------------------------------------------------------------------------------------------
15570
15818
  * DropdownMenu
@@ -15711,6 +15959,43 @@ const $d08ef79370b62062$export$34b8980744021ec5 = /*#__PURE__*/ forwardRef((prop
15711
15959
  ref: forwardedRef
15712
15960
  }));
15713
15961
  });
15962
+ /* -------------------------------------------------------------------------------------------------
15963
+ * DropdownMenuSub
15964
+ * -----------------------------------------------------------------------------------------------*/ const $d08ef79370b62062$export$2f307d81a64f5442 = (props)=>{
15965
+ const { __scopeDropdownMenu: __scopeDropdownMenu , children: children , open: openProp , onOpenChange: onOpenChange , defaultOpen: defaultOpen } = props;
15966
+ const menuScope = $d08ef79370b62062$var$useMenuScope(__scopeDropdownMenu);
15967
+ const [open = false, setOpen] = $71cd76cc60e0454e$export$6f32135080cb4c3({
15968
+ prop: openProp,
15969
+ defaultProp: defaultOpen,
15970
+ onChange: onOpenChange
15971
+ });
15972
+ return /*#__PURE__*/ createElement($6cc32821e9371a1c$export$d7a01e11500dfb6f, _extends({}, menuScope, {
15973
+ open: open,
15974
+ onOpenChange: setOpen
15975
+ }), children);
15976
+ };
15977
+ const $d08ef79370b62062$export$21dcb7ec56f874cf = /*#__PURE__*/ forwardRef((props, forwardedRef)=>{
15978
+ const { __scopeDropdownMenu: __scopeDropdownMenu , ...subTriggerProps } = props;
15979
+ const menuScope = $d08ef79370b62062$var$useMenuScope(__scopeDropdownMenu);
15980
+ return /*#__PURE__*/ createElement($6cc32821e9371a1c$export$2ea8a7a591ac5eac, _extends({}, menuScope, subTriggerProps, {
15981
+ ref: forwardedRef
15982
+ }));
15983
+ });
15984
+ const $d08ef79370b62062$export$f34ec8bc2482cc5f = /*#__PURE__*/ forwardRef((props, forwardedRef)=>{
15985
+ const { __scopeDropdownMenu: __scopeDropdownMenu , ...subContentProps } = props;
15986
+ const menuScope = $d08ef79370b62062$var$useMenuScope(__scopeDropdownMenu);
15987
+ return /*#__PURE__*/ createElement($6cc32821e9371a1c$export$6d4de93b380beddf, _extends({}, menuScope, subContentProps, {
15988
+ ref: forwardedRef,
15989
+ style: {
15990
+ ...props.style,
15991
+ '--radix-dropdown-menu-content-transform-origin': 'var(--radix-popper-transform-origin)',
15992
+ '--radix-dropdown-menu-content-available-width': 'var(--radix-popper-available-width)',
15993
+ '--radix-dropdown-menu-content-available-height': 'var(--radix-popper-available-height)',
15994
+ '--radix-dropdown-menu-trigger-width': 'var(--radix-popper-anchor-width)',
15995
+ '--radix-dropdown-menu-trigger-height': 'var(--radix-popper-anchor-height)'
15996
+ }
15997
+ }));
15998
+ });
15714
15999
  /* -----------------------------------------------------------------------------------------------*/ const $d08ef79370b62062$export$be92b6f5f03c0fe9 = $d08ef79370b62062$export$e44a253a59704894;
15715
16000
  const $d08ef79370b62062$export$41fb9f06171c75f4 = $d08ef79370b62062$export$d2469213b3befba9;
15716
16001
  const $d08ef79370b62062$export$7c6e2c02157bb7d2 = $d08ef79370b62062$export$6e76d93a37c01248;
@@ -15718,38 +16003,62 @@ const $d08ef79370b62062$export$b04be29aa201d4f5 = $d08ef79370b62062$export$76e48
15718
16003
  const $d08ef79370b62062$export$6d08773d2e66f8f2 = $d08ef79370b62062$export$ed97964d1871885d;
15719
16004
  const $d08ef79370b62062$export$1ff3c3f08ae963c0 = $d08ef79370b62062$export$da160178fd3bc7e9;
15720
16005
  const $d08ef79370b62062$export$21b07c8f274aebd5 = $d08ef79370b62062$export$34b8980744021ec5;
16006
+ const $d08ef79370b62062$export$d7a01e11500dfb6f = $d08ef79370b62062$export$2f307d81a64f5442;
16007
+ const $d08ef79370b62062$export$2ea8a7a591ac5eac = $d08ef79370b62062$export$21dcb7ec56f874cf;
16008
+ const $d08ef79370b62062$export$6d4de93b380beddf = $d08ef79370b62062$export$f34ec8bc2482cc5f;
15721
16009
 
15722
16010
  const borderStyles = [
15723
16011
  'tw-border-solid',
15724
16012
  'tw-border',
15725
16013
  'tw-rounded-sm',
15726
16014
  'tw-border-sq-disabled-gray',
15727
- 'dark:tw-border-gray-700',
16015
+ 'dark:tw-border-gray-500',
15728
16016
  ].join(' ');
15729
16017
  const bgStyles = ['tw-bg-sq-white', 'dark:tw-bg-sq-dark-background'].join(' ');
15730
16018
  const disabledClasses = ['tw-opacity-50', 'tw-cursor-not-allowed'].join(' ');
15731
- const ButtonWithDropdown = ({ dropdownItems, triggerIcon, id, extraClassNames, containerTestId, disabled = false, align = 'end', placement = 'bottom', placementOffset = 2, alignOffset = -5, hasArrow = false, onOpenChange, isOpen, setFocusOnTriggerOnClose = true, keepFocusInsideDropdown = true, ...tooltipProps }) => {
16019
+ const ButtonWithDropdown = ({ dropdownItems, triggerIcon, id, extraClassNames, containerTestId, disabled = false, align = 'end', placement = 'bottom', placementOffset = 5, alignOffset = -35, hasArrow = false, onOpenChange, isOpen, setFocusOnTriggerOnClose = true, keepFocusInsideDropdown = true, ...tooltipProps }) => {
15732
16020
  const tooltipData = getQTipData(tooltipProps);
15733
16021
  return (React.createElement($d08ef79370b62062$export$be92b6f5f03c0fe9, { defaultOpen: false, open: isOpen, onOpenChange: onOpenChange, modal: keepFocusInsideDropdown },
15734
16022
  React.createElement($d08ef79370b62062$export$41fb9f06171c75f4, { id: id, className: `tw-border-none focus-visible:tw-outline-none focus:tw-outline-none focus-within:tw-outline-none`, disabled: disabled },
15735
16023
  React.createElement("div", { ...tooltipData, className: `tw-bg-transparent tw-flex tw-flex-col tw-items-center focus-visible:tw-outline-none focus:tw-outline-none focus-within:tw-outline-none ${disabled ? disabledClasses : ''} ${extraClassNames || ''}` }, triggerIcon)),
15736
16024
  React.createElement($d08ef79370b62062$export$7c6e2c02157bb7d2, { sideOffset: placementOffset, side: placement, align: align, alignOffset: alignOffset, asChild: true, onCloseAutoFocus: (e) => !setFocusOnTriggerOnClose && e.preventDefault(), className: "focus-visible:tw-outline-none tw-outline-none" },
15737
16025
  React.createElement("div", { "data-testid": containerTestId, className: bgStyles +
15738
- ' tw-relative tw-z-[1000] tw-min-w-6 focus-visible:tw-outline-none tw-outline-none data-[state=open]:tw-animate-in data-[state=closed]:tw-animate-out' +
16026
+ ' tw-relative tw-z-[1000] tw-min-w-6 tw-py-2 focus-visible:tw-outline-none tw-outline-none' +
16027
+ ' data-[state=open]:tw-animate-in data-[state=closed]:tw-animate-out' +
15739
16028
  ' forceFont data-[side=top]:tw-animate-slideDownAndFade data-[side=right]:tw-animate-slideLeftAndFade data-[side=bottom]:tw-animate-slideUpAndFade data-[side=left]:tw-animate-slideRightAndFade ' +
15740
16029
  borderStyles },
15741
16030
  hasArrow && (React.createElement($d08ef79370b62062$export$21b07c8f274aebd5, { asChild: true },
15742
- React.createElement("div", { className: " tw-fill-transparent tw-bg-white tw-w-[6px] tw-h-[6px] tw-rotate-45 dark:tw-bg-sq-dark-background tw-border-b tw-border-r tw-border-sq-disabled-gray dark:tw-border-gray-700 tw-mt-[-2px]" }))),
16031
+ React.createElement("div", { className: " tw-fill-transparent tw-bg-white tw-w-[15px] tw-h-[15px] tw-rotate-45 dark:tw-bg-sq-dark-background tw-border-b tw-border-r tw-border-sq-disabled-gray dark:tw-border-gray-500 tw-mt-[-7px]" }))),
15743
16032
  dropdownItems.map((item, index) => {
15744
- return item.isLabel ? (React.createElement($d08ef79370b62062$export$b04be29aa201d4f5, { key: (item.label || '') + index, className: item.containerExtraClassNames },
15745
- item.icon && (React.createElement(Icon, { icon: item.icon, testId: item.iconTestId, type: "text", color: item.iconColor, extraClassNames: "tw-text-sq-text-color dark:tw-text-sq-white tw-w-[18px]" })),
15746
- React.createElement("div", { "data-testid": item.labelTestId, className: "tw-text-[13px] tw-ml-1" }, item.label))) : (React.createElement("div", { key: item.label + index },
16033
+ if (item.isLabel) {
16034
+ return (React.createElement($d08ef79370b62062$export$b04be29aa201d4f5, { key: (item.label || '') + index, className: item.containerExtraClassNames },
16035
+ item.icon && (React.createElement(Icon, { icon: item.icon, testId: item.iconTestId, type: "text", color: item.iconColor, extraClassNames: "tw-text-sq-text-color dark:tw-text-sq-white tw-w-[18px]" })),
16036
+ React.createElement("div", { "data-testid": item.labelTestId, className: "tw-text-[13px] tw-ml-1" }, item.label)));
16037
+ }
16038
+ if (Array.isArray(item.subMenuItems) && item.subMenuItems.length > 0) {
16039
+ return (React.createElement($d08ef79370b62062$export$d7a01e11500dfb6f, { key: item.label + index },
16040
+ React.createElement($d08ef79370b62062$export$2ea8a7a591ac5eac, { id: id, className: `tw-cursor-pointer tw-flex tw-justify-between dark:tw-text-sq-white hover:tw-bg-sq-gray-highlight dark:hover:tw-bg-sq-gray-highlight-dark tw-leading-none tw-items-center tw-h-[27px] tw-pl-[19px] tw-relative tw-select-none tw-outline-none data-[disabled]:tw-text-sq-disabled-gray data-[disabled]:tw-pointer-events-none ${item.containerExtraClassNames || ''}`, "data-testid": item.testId, disabled: item.disabled },
16041
+ React.createElement("div", { className: "tw-flex" },
16042
+ item.icon && (React.createElement(Icon, { icon: item.icon, extraClassNames: `tw-text-sq-text-color dark:tw-text-sq-white tw-w-[18px] ${item.iconExtraClassNames || ''}` })),
16043
+ React.createElement("div", { "data-testid": item.labelTestId, "data-customid": item.labelCustomId, className: `tw-text-[13px] tw-ml-1 ${item.labelClasses}` }, item.label)),
16044
+ React.createElement(Icon, { small: true, icon: "fc-arrow-dropdown -tw-rotate-90", extraClassNames: "tw-text-sq-text-color dark:tw-text-sq-white tw-w-[18px] tw-ml-4 tw-text-[8px] tw-justify-center tw-flex" })),
16045
+ React.createElement($d08ef79370b62062$export$6d4de93b380beddf, { className: "focus-visible:tw-outline-none tw-outline-none" },
16046
+ React.createElement("div", { "data-testid": containerTestId, className: bgStyles +
16047
+ ' tw-relative tw-z-[1000] tw-min-w-6 tw-py-2 focus-visible:tw-outline-none tw-outline-none data-[state=open]:tw-animate-in data-[state=closed]:tw-animate-out' +
16048
+ ' forceFont data-[side=top]:tw-animate-slideDownAndFade data-[side=right]:tw-animate-slideLeftAndFade data-[side=bottom]:tw-animate-slideUpAndFade data-[side=left]:tw-animate-slideRightAndFade ' +
16049
+ borderStyles }, item.subMenuItems.map((subItem, subIndex) => {
16050
+ return (React.createElement($d08ef79370b62062$export$6d08773d2e66f8f2, { key: subItem.label + subIndex, onSelect: subItem.onClick, "data-qtip-text": subItem.tooltip, className: "tw-cursor-pointer tw-flex dark:tw-text-sq-white hover:tw-bg-sq-gray-highlight dark:hover:tw-bg-sq-gray-highlight-dark tw-leading-none tw-items-center tw-h-[27px] tw-px-[19px] tw-relative tw-select-none tw-outline-none data-[disabled]:tw-text-sq-disabled-gray data-[disabled]:tw-pointer-events-none", disabled: subItem.disabled },
16051
+ subItem.iconClass && (React.createElement(Icon, { icon: subItem.iconClass, extraClassNames: `tw-text-sq-text-color dark:tw-text-sq-white tw-w-[18px]` })),
16052
+ React.createElement("div", { className: `tw-text-[13px] tw-ml-1` }, subItem.label)));
16053
+ })))));
16054
+ }
16055
+ return (React.createElement("div", { key: item.label + index },
15747
16056
  React.createElement($d08ef79370b62062$export$6d08773d2e66f8f2, { key: item.label + index, "data-customid": item.itemCustomId, onSelect: (e) => {
15748
16057
  item.onClick(e);
15749
- }, className: `tw-cursor-pointer tw-flex dark:tw-text-sq-white hover:tw-bg-sq-colored-hover hover:dark:tw-bg-sq-colored-hover-dark tw-leading-none tw-items-center tw-h-[27px] tw-px-[19px] tw-relative tw-select-none tw-outline-none data-[disabled]:tw-text-sq-disabled-gray data-[disabled]:tw-pointer-events-none ${item.containerExtraClassNames || ''}`, "data-testid": item.testId, disabled: item.disabled },
16058
+ }, className: `tw-cursor-pointer tw-flex dark:tw-text-sq-white hover:tw-bg-sq-gray-highlight dark:hover:tw-bg-sq-gray-highlight-dark tw-leading-none tw-items-center tw-h-[27px] tw-px-[19px] tw-relative tw-select-none tw-outline-none data-[disabled]:tw-text-sq-disabled-gray data-[disabled]:tw-pointer-events-none ${item.containerExtraClassNames || ''}`, "data-testid": item.testId, disabled: item.disabled },
15750
16059
  item.icon && (React.createElement(Icon, { icon: item.icon, testId: item.iconTestId, type: (item.iconType || 'text'), color: item.iconColor, customId: item.iconCustomId, extraClassNames: `tw-text-sq-text-color dark:tw-text-sq-white tw-w-[18px] ${item.iconExtraClassNames || ''}` })),
15751
16060
  React.createElement("div", { "data-testid": item.labelTestId, "data-customid": item.labelCustomId, className: `tw-text-[13px] tw-ml-1 ${item.labelClasses}` }, item.label)),
15752
- item.hasDivider && (React.createElement($d08ef79370b62062$export$1ff3c3f08ae963c0, { "data-testid": `dropdown-divider-${index}`, className: "tw-h-[1px] tw-bg-sq-disabled-gray dark:tw-bg-gray-700 tw-my-[8px]" }))));
16061
+ item.hasDivider && (React.createElement($d08ef79370b62062$export$1ff3c3f08ae963c0, { "data-testid": `dropdown-divider-${index}`, className: "tw-h-[1px] tw-bg-sq-disabled-gray dark:tw-bg-gray-500 tw-my-[8px]" }))));
15753
16062
  })))));
15754
16063
  };
15755
16064