@seeqdev/qomponents 0.0.184 → 0.0.185

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 (247) hide show
  1. package/dist/src/Accordion/Accordion.d.ts +4 -0
  2. package/dist/src/Accordion/Accordion.js +8 -0
  3. package/dist/src/Accordion/Accordion.stories.d.ts +5 -0
  4. package/dist/src/Accordion/Accordion.stories.js +96 -0
  5. package/dist/src/Accordion/Accordion.test.d.ts +1 -0
  6. package/dist/src/Accordion/Accordion.test.js +54 -0
  7. package/dist/src/Accordion/Accordion.types.d.ts +86 -0
  8. package/dist/src/Accordion/Accordion.types.js +1 -0
  9. package/dist/src/Accordion/index.d.ts +1 -0
  10. package/dist/src/Accordion/index.js +1 -0
  11. package/dist/src/Alert/Alert.d.ts +7 -0
  12. package/dist/src/Alert/Alert.js +33 -0
  13. package/dist/src/Alert/Alert.stories.d.ts +14 -0
  14. package/dist/src/Alert/Alert.stories.js +72 -0
  15. package/dist/src/Alert/Alert.test.d.ts +1 -0
  16. package/dist/src/Alert/Alert.test.js +49 -0
  17. package/dist/src/Alert/Alert.types.d.ts +62 -0
  18. package/dist/src/Alert/Alert.types.js +1 -0
  19. package/dist/src/Alert/index.d.ts +1 -0
  20. package/dist/src/Alert/index.js +1 -0
  21. package/dist/src/Button/Button.d.ts +10 -0
  22. package/dist/src/Button/Button.js +107 -0
  23. package/dist/src/Button/Button.stories.d.ts +9 -0
  24. package/dist/src/Button/Button.stories.js +74 -0
  25. package/dist/src/Button/Button.test.d.ts +1 -0
  26. package/dist/src/Button/Button.test.js +65 -0
  27. package/dist/src/Button/Button.types.d.ts +148 -0
  28. package/dist/src/Button/Button.types.js +4 -0
  29. package/dist/src/Button/index.d.ts +1 -0
  30. package/dist/src/Button/index.js +1 -0
  31. package/dist/src/ButtonGroup/ButtonGroup.d.ts +7 -0
  32. package/dist/src/ButtonGroup/ButtonGroup.js +34 -0
  33. package/dist/src/ButtonGroup/ButtonGroup.stories.d.ts +5 -0
  34. package/dist/src/ButtonGroup/ButtonGroup.stories.js +328 -0
  35. package/dist/src/ButtonGroup/ButtonGroup.test.d.ts +1 -0
  36. package/dist/src/ButtonGroup/ButtonGroup.test.js +65 -0
  37. package/dist/src/ButtonGroup/ButtonGroup.types.d.ts +80 -0
  38. package/dist/src/ButtonGroup/ButtonGroup.types.js +1 -0
  39. package/dist/src/ButtonGroup/index.d.ts +1 -0
  40. package/dist/src/ButtonGroup/index.js +1 -0
  41. package/dist/src/ButtonWithDropdown/ButtonWithDropdown.d.ts +4 -0
  42. package/dist/src/ButtonWithDropdown/ButtonWithDropdown.js +46 -0
  43. package/dist/src/ButtonWithDropdown/ButtonWithDropdown.stories.d.ts +5 -0
  44. package/dist/src/ButtonWithDropdown/ButtonWithDropdown.stories.js +119 -0
  45. package/dist/src/ButtonWithDropdown/ButtonWithDropdown.test.d.ts +1 -0
  46. package/dist/src/ButtonWithDropdown/ButtonWithDropdown.test.js +92 -0
  47. package/dist/src/ButtonWithDropdown/ButtonWithDropdown.types.d.ts +232 -0
  48. package/dist/src/ButtonWithDropdown/ButtonWithDropdown.types.js +1 -0
  49. package/dist/src/ButtonWithDropdown/index.d.ts +1 -0
  50. package/dist/src/ButtonWithDropdown/index.js +1 -0
  51. package/dist/src/ButtonWithPopover/ButtonWithPopover.d.ts +4 -0
  52. package/dist/src/ButtonWithPopover/ButtonWithPopover.js +54 -0
  53. package/dist/src/ButtonWithPopover/ButtonWithPopover.stories.d.ts +5 -0
  54. package/dist/src/ButtonWithPopover/ButtonWithPopover.stories.js +51 -0
  55. package/dist/src/ButtonWithPopover/ButtonWithPopover.test.d.ts +1 -0
  56. package/dist/src/ButtonWithPopover/ButtonWithPopover.test.js +80 -0
  57. package/dist/src/ButtonWithPopover/ButtonWithPopover.types.d.ts +134 -0
  58. package/dist/src/ButtonWithPopover/ButtonWithPopover.types.js +1 -0
  59. package/dist/src/ButtonWithPopover/index.d.ts +1 -0
  60. package/dist/src/ButtonWithPopover/index.js +1 -0
  61. package/dist/src/Carousel/Carousel.d.ts +9 -0
  62. package/dist/src/Carousel/Carousel.js +80 -0
  63. package/dist/src/Carousel/Carousel.stories.d.ts +5 -0
  64. package/dist/src/Carousel/Carousel.stories.js +100 -0
  65. package/dist/src/Carousel/Carousel.test.d.ts +1 -0
  66. package/dist/src/Carousel/Carousel.test.js +47 -0
  67. package/dist/src/Carousel/Carousel.types.d.ts +85 -0
  68. package/dist/src/Carousel/Carousel.types.js +1 -0
  69. package/dist/src/Carousel/index.d.ts +1 -0
  70. package/dist/src/Carousel/index.js +1 -0
  71. package/dist/src/Checkbox/Checkbox.d.ts +7 -0
  72. package/dist/src/Checkbox/Checkbox.js +24 -0
  73. package/dist/src/Checkbox/Checkbox.stories.d.ts +5 -0
  74. package/dist/src/Checkbox/Checkbox.stories.js +21 -0
  75. package/dist/src/Checkbox/Checkbox.test.d.ts +1 -0
  76. package/dist/src/Checkbox/Checkbox.test.js +93 -0
  77. package/dist/src/Checkbox/Checkbox.types.d.ts +91 -0
  78. package/dist/src/Checkbox/Checkbox.types.js +1 -0
  79. package/dist/src/Checkbox/index.d.ts +1 -0
  80. package/dist/src/Checkbox/index.js +1 -0
  81. package/dist/src/Collapse/Collapse.d.ts +4 -0
  82. package/dist/src/Collapse/Collapse.js +16 -0
  83. package/dist/src/Collapse/Collapse.stories.d.ts +5 -0
  84. package/dist/src/Collapse/Collapse.stories.js +28 -0
  85. package/dist/src/Collapse/Collapse.test.d.ts +1 -0
  86. package/dist/src/Collapse/Collapse.test.js +16 -0
  87. package/dist/src/Collapse/Collapse.types.d.ts +18 -0
  88. package/dist/src/Collapse/Collapse.types.js +1 -0
  89. package/dist/src/Collapse/index.d.ts +1 -0
  90. package/dist/src/Collapse/index.js +1 -0
  91. package/dist/src/Icon/Icon.d.ts +10 -0
  92. package/dist/src/Icon/Icon.js +55 -0
  93. package/dist/src/Icon/Icon.stories.d.ts +5 -0
  94. package/dist/src/Icon/Icon.stories.js +31 -0
  95. package/dist/src/Icon/Icon.test.d.ts +1 -0
  96. package/dist/src/Icon/Icon.test.js +54 -0
  97. package/dist/src/Icon/Icon.types.d.ts +90 -0
  98. package/dist/src/Icon/Icon.types.js +15 -0
  99. package/dist/src/Icon/index.d.ts +1 -0
  100. package/dist/src/Icon/index.js +1 -0
  101. package/dist/src/InputGroup/InputGroup.d.ts +7 -0
  102. package/dist/src/InputGroup/InputGroup.js +33 -0
  103. package/dist/src/InputGroup/InputGroup.stories.d.ts +5 -0
  104. package/dist/src/InputGroup/InputGroup.stories.js +144 -0
  105. package/dist/src/InputGroup/InputGroup.test.d.ts +1 -0
  106. package/dist/src/InputGroup/InputGroup.test.js +41 -0
  107. package/dist/src/InputGroup/InputGroup.types.d.ts +61 -0
  108. package/dist/src/InputGroup/InputGroup.types.js +1 -0
  109. package/dist/src/InputGroup/index.d.ts +2 -0
  110. package/dist/src/InputGroup/index.js +1 -0
  111. package/dist/src/Modal/Modal.d.ts +5 -0
  112. package/dist/src/Modal/Modal.js +86 -0
  113. package/dist/src/Modal/Modal.stories.d.ts +10 -0
  114. package/dist/src/Modal/Modal.stories.js +79 -0
  115. package/dist/src/Modal/Modal.test.d.ts +1 -0
  116. package/dist/src/Modal/Modal.test.js +107 -0
  117. package/dist/src/Modal/Modal.types.d.ts +244 -0
  118. package/dist/src/Modal/Modal.types.js +1 -0
  119. package/dist/src/Modal/index.d.ts +1 -0
  120. package/dist/src/Modal/index.js +1 -0
  121. package/dist/src/ProgressBar/ProgressBar.d.ts +4 -0
  122. package/dist/src/ProgressBar/ProgressBar.js +71 -0
  123. package/dist/src/ProgressBar/ProgressBar.stories.d.ts +5 -0
  124. package/dist/src/ProgressBar/ProgressBar.stories.js +46 -0
  125. package/dist/src/ProgressBar/ProgressBar.test.d.ts +1 -0
  126. package/dist/src/ProgressBar/ProgressBar.test.js +42 -0
  127. package/dist/src/ProgressBar/ProgressBar.types.d.ts +77 -0
  128. package/dist/src/ProgressBar/ProgressBar.types.js +1 -0
  129. package/dist/src/ProgressBar/index.d.ts +1 -0
  130. package/dist/src/ProgressBar/index.js +1 -0
  131. package/dist/src/SeeqActionDropdown/SeeqActionDropdown.d.ts +4 -0
  132. package/dist/src/SeeqActionDropdown/SeeqActionDropdown.js +41 -0
  133. package/dist/src/SeeqActionDropdown/SeeqActionDropdown.stories.d.ts +5 -0
  134. package/dist/src/SeeqActionDropdown/SeeqActionDropdown.stories.js +73 -0
  135. package/dist/src/SeeqActionDropdown/SeeqActionDropdown.test.d.ts +1 -0
  136. package/dist/src/SeeqActionDropdown/SeeqActionDropdown.test.js +72 -0
  137. package/dist/src/SeeqActionDropdown/SeeqActionDropdown.types.d.ts +159 -0
  138. package/dist/src/SeeqActionDropdown/SeeqActionDropdown.types.js +1 -0
  139. package/dist/src/SeeqActionDropdown/index.d.ts +1 -0
  140. package/dist/src/SeeqActionDropdown/index.js +1 -0
  141. package/dist/src/SeeqActionDropdown/variants.d.ts +5 -0
  142. package/dist/src/SeeqActionDropdown/variants.js +34 -0
  143. package/dist/src/Select/Select.d.ts +15 -0
  144. package/dist/src/Select/Select.js +171 -0
  145. package/dist/src/Select/Select.stories.d.ts +5 -0
  146. package/dist/src/Select/Select.stories.js +50 -0
  147. package/dist/src/Select/Select.test.d.ts +1 -0
  148. package/dist/src/Select/Select.test.js +176 -0
  149. package/dist/src/Select/Select.types.d.ts +220 -0
  150. package/dist/src/Select/Select.types.js +1 -0
  151. package/dist/src/Select/index.d.ts +2 -0
  152. package/dist/src/Select/index.js +2 -0
  153. package/dist/src/Slider/Slider.d.ts +6 -0
  154. package/dist/src/Slider/Slider.js +11 -0
  155. package/dist/src/Slider/Slider.stories.d.ts +5 -0
  156. package/dist/src/Slider/Slider.stories.js +37 -0
  157. package/dist/src/Slider/Slider.test.d.ts +1 -0
  158. package/dist/src/Slider/Slider.test.js +31 -0
  159. package/dist/src/Slider/Slider.types.d.ts +84 -0
  160. package/dist/src/Slider/Slider.types.js +1 -0
  161. package/dist/src/Slider/index.d.ts +1 -0
  162. package/dist/src/Slider/index.js +1 -0
  163. package/dist/src/SvgIcon/SvgIcon.d.ts +20 -0
  164. package/dist/src/SvgIcon/SvgIcon.js +27 -0
  165. package/dist/src/SvgIcon/SvgIcon.stories.d.ts +5 -0
  166. package/dist/src/SvgIcon/SvgIcon.stories.js +26 -0
  167. package/dist/src/SvgIcon/SvgIcon.test.d.ts +1 -0
  168. package/dist/src/SvgIcon/SvgIcon.test.js +40 -0
  169. package/dist/src/SvgIcon/SvgIcon.types.d.ts +75 -0
  170. package/dist/src/SvgIcon/SvgIcon.types.js +2 -0
  171. package/dist/src/SvgIcon/index.d.ts +1 -0
  172. package/dist/src/SvgIcon/index.js +1 -0
  173. package/dist/src/Tabs/Tabs.d.ts +4 -0
  174. package/dist/src/Tabs/Tabs.js +18 -0
  175. package/dist/src/Tabs/Tabs.stories.d.ts +5 -0
  176. package/dist/src/Tabs/Tabs.stories.js +83 -0
  177. package/dist/src/Tabs/Tabs.test.d.ts +1 -0
  178. package/dist/src/Tabs/Tabs.test.js +91 -0
  179. package/dist/src/Tabs/Tabs.types.d.ts +100 -0
  180. package/dist/src/Tabs/Tabs.types.js +1 -0
  181. package/dist/src/Tabs/index.d.ts +1 -0
  182. package/dist/src/Tabs/index.js +1 -0
  183. package/dist/src/TextArea/TextArea.d.ts +7 -0
  184. package/dist/src/TextArea/TextArea.js +54 -0
  185. package/dist/src/TextArea/TextArea.stories.d.ts +5 -0
  186. package/dist/src/TextArea/TextArea.stories.js +21 -0
  187. package/dist/src/TextArea/TextArea.test.d.ts +1 -0
  188. package/dist/src/TextArea/TextArea.test.js +129 -0
  189. package/dist/src/TextArea/TextArea.types.d.ts +115 -0
  190. package/dist/src/TextArea/TextArea.types.js +1 -0
  191. package/dist/src/TextArea/index.d.ts +1 -0
  192. package/dist/src/TextArea/index.js +1 -0
  193. package/dist/src/TextField/TextField.d.ts +7 -0
  194. package/dist/src/TextField/TextField.js +85 -0
  195. package/dist/src/TextField/TextField.stories.d.ts +5 -0
  196. package/dist/src/TextField/TextField.stories.js +30 -0
  197. package/dist/src/TextField/TextField.test.d.ts +1 -0
  198. package/dist/src/TextField/TextField.test.js +40 -0
  199. package/dist/src/TextField/TextField.types.d.ts +198 -0
  200. package/dist/src/TextField/TextField.types.js +1 -0
  201. package/dist/src/TextField/index.d.ts +1 -0
  202. package/dist/src/TextField/index.js +1 -0
  203. package/dist/src/ToolbarButton/ToolbarButton.d.ts +3 -0
  204. package/dist/src/ToolbarButton/ToolbarButton.js +58 -0
  205. package/dist/src/ToolbarButton/ToolbarButton.stories.d.ts +5 -0
  206. package/dist/src/ToolbarButton/ToolbarButton.stories.js +63 -0
  207. package/dist/src/ToolbarButton/ToolbarButton.test.d.ts +1 -0
  208. package/dist/src/ToolbarButton/ToolbarButton.test.js +89 -0
  209. package/dist/src/ToolbarButton/ToolbarButton.types.d.ts +122 -0
  210. package/dist/src/ToolbarButton/ToolbarButton.types.js +1 -0
  211. package/dist/src/ToolbarButton/index.d.ts +1 -0
  212. package/dist/src/ToolbarButton/index.js +1 -0
  213. package/dist/src/Tooltip/QTip.stories.d.ts +5 -0
  214. package/dist/src/Tooltip/QTip.stories.js +22 -0
  215. package/dist/src/Tooltip/QTip.types.d.ts +13 -0
  216. package/dist/src/Tooltip/QTip.types.js +1 -0
  217. package/dist/src/Tooltip/QTipPerformance.stories.d.ts +5 -0
  218. package/dist/src/Tooltip/QTipPerformance.stories.js +27 -0
  219. package/dist/src/Tooltip/Qtip.d.ts +26 -0
  220. package/dist/src/Tooltip/Qtip.js +168 -0
  221. package/dist/src/Tooltip/Tooltip.d.ts +13 -0
  222. package/dist/src/Tooltip/Tooltip.js +34 -0
  223. package/dist/src/Tooltip/Tooltip.stories.d.ts +5 -0
  224. package/dist/src/Tooltip/Tooltip.stories.js +20 -0
  225. package/dist/src/Tooltip/Tooltip.types.d.ts +22 -0
  226. package/dist/src/Tooltip/Tooltip.types.js +2 -0
  227. package/dist/src/Tooltip/TooltipPerformance.stories.d.ts +5 -0
  228. package/dist/src/Tooltip/TooltipPerformance.stories.js +25 -0
  229. package/dist/src/Tooltip/index.d.ts +2 -0
  230. package/dist/src/Tooltip/index.js +2 -0
  231. package/dist/src/Tooltip/qTip.utilities.d.ts +3 -0
  232. package/dist/src/Tooltip/qTip.utilities.js +10 -0
  233. package/dist/src/index.d.ts +46 -0
  234. package/dist/src/index.js +47 -0
  235. package/dist/src/setupTests.d.ts +1 -0
  236. package/dist/src/setupTests.js +5 -0
  237. package/dist/src/types.d.ts +27 -0
  238. package/dist/src/types.js +25 -0
  239. package/dist/src/utils/browserId.d.ts +9 -0
  240. package/dist/src/utils/browserId.js +28 -0
  241. package/dist/src/utils/svg.d.ts +15 -0
  242. package/dist/src/utils/svg.js +19 -0
  243. package/dist/src/utils/validateStyleDimension.d.ts +2 -0
  244. package/dist/src/utils/validateStyleDimension.js +13 -0
  245. package/dist/src/utils/validateStyleDimension.test.d.ts +1 -0
  246. package/dist/src/utils/validateStyleDimension.test.js +19 -0
  247. package/package.json +11 -5
@@ -0,0 +1,244 @@
1
+ import { FormControlElement } from '../types';
2
+ import React from 'react';
3
+ import { ButtonVariant } from '../Button/Button.types';
4
+ export type ModalSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl' | '5xl' | '6xl';
5
+ export type TitleIconPosition = 'left' | 'right';
6
+ export interface ModalProps {
7
+ /**
8
+ * Main title text displayed prominently in the modal header.
9
+ * This is the primary heading that identifies the purpose or content of the modal.
10
+ */
11
+ title: string;
12
+ /**
13
+ * Additional text to append after the main title.
14
+ * Useful for adding context, version numbers, or secondary information to the title.
15
+ */
16
+ titleSuffixLabel?: string;
17
+ /**
18
+ * Secondary text displayed below the main title in the header.
19
+ * Use this for additional context, descriptions, or instructions for the modal content.
20
+ */
21
+ subtitle?: string;
22
+ /**
23
+ * Icon to display next to the title in the header.
24
+ * Can be an icon class name (string) for font icons or a React element for custom icons.
25
+ * Helps provide visual context for the modal's purpose.
26
+ */
27
+ titleIcon?: string | React.ReactElement;
28
+ /**
29
+ * Position of the title icon relative to the title text:
30
+ * - `left`: Icon appears before the title text
31
+ * - `right`: Icon appears after the title text
32
+ * @default 'left'
33
+ */
34
+ titleIconPosition?: TitleIconPosition;
35
+ /**
36
+ * Main content of the modal body.
37
+ * This is where you place the primary content, forms, information, or interactive elements.
38
+ * Must be a single React element (wrap multiple elements in a container if needed).
39
+ */
40
+ children: React.ReactElement;
41
+ /**
42
+ * Custom footer content that completely replaces the default button footer.
43
+ * When provided, all default buttons (submit, cancel, custom) are hidden.
44
+ * Use this when you need complete control over the footer layout and actions.
45
+ */
46
+ modalFooter?: React.ReactElement;
47
+ /**
48
+ * Controls whether the modal is currently visible and open.
49
+ * When true, the modal is displayed with overlay. When false, the modal is hidden.
50
+ * Use this prop to control modal visibility from parent components.
51
+ */
52
+ open: boolean;
53
+ /**
54
+ * Callback function triggered when the user attempts to close the modal.
55
+ * Called when clicking the X button, cancel button, or clicking outside the modal.
56
+ * Use this to handle modal closure logic and update the `open` state.
57
+ */
58
+ onClose?: () => any;
59
+ /**
60
+ * When true, displays an additional custom button in the footer alongside default buttons.
61
+ * The custom button appears before the submit and cancel buttons.
62
+ * Configure the button's appearance and behavior with related custom button props.
63
+ */
64
+ customButton?: boolean;
65
+ /**
66
+ * Text label for the custom button when `customButton` is true.
67
+ * This text will be displayed on the button to indicate its purpose or action.
68
+ */
69
+ customButtonLabel?: string;
70
+ /**
71
+ * Callback function triggered when the custom button is clicked.
72
+ * Use this to define the action that should occur when users click the custom button.
73
+ */
74
+ onClickCustomButton?: () => any;
75
+ /**
76
+ * Text label for the primary submit/confirmation button.
77
+ * This button typically confirms the modal action or submits form data.
78
+ * @default "OK"
79
+ */
80
+ submitButtonLabel?: string;
81
+ /**
82
+ * Text label for the cancel/dismiss button.
83
+ * This button typically closes the modal without saving changes or performing actions.
84
+ * @default "Cancel"
85
+ */
86
+ cancelButtonLabel?: string;
87
+ /**
88
+ * When true, disables the submit button preventing user interaction.
89
+ * Useful when form validation fails or when an operation is in progress.
90
+ * The button will appear visually disabled and won't respond to clicks.
91
+ */
92
+ disableSubmitButton?: boolean;
93
+ /**
94
+ * Controls whether the submit button click event should stop propagation.
95
+ * When true, prevents the click event from bubbling up to parent elements.
96
+ * @default true
97
+ */
98
+ stopPropagationSubmitButton?: boolean;
99
+ /**
100
+ * Callback function triggered when the submit button is clicked.
101
+ * Receives the click event as a parameter for additional event handling.
102
+ * Use this to handle form submission, data processing, or confirmation actions.
103
+ */
104
+ onSubmit?: (event: React.MouseEvent) => any;
105
+ /**
106
+ * When true, allows the title text to be edited inline by clicking on it.
107
+ * The title becomes an input field that users can modify directly in the modal header.
108
+ * Useful for renaming operations or title customization workflows.
109
+ */
110
+ isTitleEditable?: boolean;
111
+ /**
112
+ * Callback function triggered when the editable title text changes.
113
+ * Only relevant when `isTitleEditable` is true. Receives the change event
114
+ * which contains the new title value. Use this to update your title state.
115
+ */
116
+ onTitleChanged?: React.ChangeEventHandler<FormControlElement>;
117
+ /**
118
+ * Additional CSS classes to apply to the title input field.
119
+ * Only used when `isTitleEditable` is true. Use this to customize
120
+ * the appearance of the editable title input beyond default styling.
121
+ */
122
+ inputExtraClassNames?: string;
123
+ /**
124
+ * When true, hides the X close icon button in the modal header.
125
+ * Users will only be able to close the modal using footer buttons or by clicking outside.
126
+ * Useful when you want to force users to make an explicit choice via footer buttons.
127
+ */
128
+ hideCloseIcon?: boolean;
129
+ /**
130
+ * Size variant that controls the modal's width and maximum dimensions:
131
+ * - `xs`: Extra small modal (280px max width)
132
+ * - `sm`: Small modal (384px max width)
133
+ * - `md`: Medium modal (448px max width)
134
+ * - `lg`: Large modal (512px max width)
135
+ * - `xl`: Extra large modal (576px max width)
136
+ * - `2xl` through `6xl`: Progressively larger sizes up to full screen
137
+ */
138
+ size?: ModalSize;
139
+ /**
140
+ * When true, completely hides all default footer buttons (submit, cancel, custom).
141
+ * The modal will only have header and body content. Useful when you provide
142
+ * custom actions within the modal body or use a custom footer.
143
+ */
144
+ hideFooterButtons?: boolean;
145
+ /**
146
+ * When true, hides only the submit button while keeping other footer buttons visible.
147
+ * Useful for information-only modals that don't require a confirmation action.
148
+ */
149
+ hideSubmitButton?: boolean;
150
+ /**
151
+ * When true, hides only the cancel button while keeping other footer buttons visible.
152
+ * Useful for critical operations where cancellation should not be easily accessible.
153
+ */
154
+ hideCancelButton?: boolean;
155
+ /**
156
+ * Test ID attribute for the modal container element.
157
+ * Used for automated testing to identify and interact with the modal.
158
+ * Applied to the modal's root element for test targeting.
159
+ */
160
+ testId?: string;
161
+ /**
162
+ * Additional CSS classes to apply to the modal dialog container.
163
+ * Use this to customize the modal's positioning, sizing, or appearance
164
+ * beyond the built-in size variants and default styling.
165
+ */
166
+ dialogClassName?: string;
167
+ /**
168
+ * Placeholder text displayed in the title input when `isTitleEditable` is true.
169
+ * Shows helpful text when the title field is empty, guiding users on what to enter.
170
+ */
171
+ titlePlaceholder?: string;
172
+ /**
173
+ * When true, makes the title field required when `isTitleEditable` is true.
174
+ * Prevents submission or validation if the title is empty. Usually combined
175
+ * with validation feedback and error handling.
176
+ */
177
+ titleRequired?: boolean;
178
+ /**
179
+ * Error message to display when the editable title has validation issues.
180
+ * Only shown when `isTitleEditable` is true and there's a title validation error.
181
+ * Provides user feedback about what needs to be corrected.
182
+ */
183
+ titleError?: string;
184
+ /**
185
+ * Tooltip text to display when hovering over the submit button.
186
+ * Provides additional context or instructions about what the submit action will do.
187
+ * Helpful for clarifying the button's purpose in complex workflows.
188
+ */
189
+ submitButtonTooltip?: string;
190
+ /**
191
+ * Tooltip text to display when hovering over the cancel button.
192
+ * Can provide information about what happens when canceling or any data loss warnings.
193
+ */
194
+ cancelButtonTooltip?: string;
195
+ /**
196
+ * When true, disables the custom button preventing user interaction.
197
+ * Only relevant when `customButton` is true. The button will appear
198
+ * visually disabled and won't respond to clicks.
199
+ */
200
+ disableCustomButton?: boolean;
201
+ /**
202
+ * Custom header content that completely replaces the default modal header.
203
+ * When provided, the default title, subtitle, and close button are not rendered.
204
+ * Use this when you need complete control over the header layout and content.
205
+ */
206
+ customHeader?: React.ReactElement;
207
+ /**
208
+ * Content to display in the center area of the footer between buttons.
209
+ * Useful for adding status messages, progress indicators, or additional
210
+ * information that should be visible alongside the action buttons.
211
+ */
212
+ middleFooterSection?: React.ReactElement;
213
+ /**
214
+ * Visual style variant for the custom button when `customButton` is true.
215
+ * Determines the button's appearance and color scheme. Uses the same
216
+ * variants as the standard Button component (outline, theme, danger, etc.).
217
+ */
218
+ customButtonVariant?: ButtonVariant;
219
+ /**
220
+ * Controls whether focus should be trapped within the modal when open.
221
+ * When true (default), focus cycles through modal elements only. Set to false
222
+ * if you need to interact with elements outside the modal (like tooltips with inputs).
223
+ * @default true
224
+ */
225
+ keepFocusInsideModal?: boolean;
226
+ /**
227
+ * Visual style variant for the submit button.
228
+ * Determines the button's appearance and color scheme. Use 'theme' for primary
229
+ * actions, 'danger' for destructive actions, or other variants as appropriate.
230
+ */
231
+ submitButtonVariant?: ButtonVariant;
232
+ /**
233
+ * Callback function triggered when the user clicks/taps outside the modal dialog.
234
+ * Receives the pointer event. Use this to customize outside-click behavior,
235
+ * such as preventing closure in certain conditions or showing warnings.
236
+ */
237
+ onPointerDownOutside?: (e: Event) => void;
238
+ /**
239
+ * Callback function triggered when the user interacts outside the modal.
240
+ * This includes clicks, taps, and other interactions outside the modal area.
241
+ * More general than `onPointerDownOutside` and covers additional interaction types.
242
+ */
243
+ onInteractOutside?: (e: Event) => void;
244
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export { default } from './Modal';
@@ -0,0 +1 @@
1
+ export { default } from './Modal';
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import { ProgressBarProps } from './ProgressBar.types';
3
+ declare const ProgressBar: React.FunctionComponent<ProgressBarProps>;
4
+ export default ProgressBar;
@@ -0,0 +1,71 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { createElement as _createElement } from "react";
3
+ import React, { useEffect, useRef } from 'react';
4
+ import * as Progress from '@radix-ui/react-progress';
5
+ import { getQTipData } from '../Tooltip/qTip.utilities';
6
+ import tinycolor from 'tinycolor2';
7
+ const baseLabelClasses = 'tw-left-1 tw-text-xs tw-text-sq-text-color dark:tw-text-sq-dark-text tw-items-center tw-h-[18px]';
8
+ const ProgressIndicator = (props) => {
9
+ const { value, color = undefined, testId, label, extraClasses = '', labelClasses = '', valuesLength, max, index, totalValue, ...tooltipProps } = props;
10
+ const tooltipData = getQTipData(tooltipProps);
11
+ const previousWidth = useRef(0);
12
+ const indicatorElementRef = useRef(null);
13
+ const [textColorClass, setTextColorClass] = React.useState('');
14
+ const [animatedWidth, setAnimatedWidth] = React.useState(previousWidth.current);
15
+ // Determine which corners to round based on position and total value
16
+ let roundedCorners = '';
17
+ if (totalValue >= max) {
18
+ // If progress is 100%, round both ends
19
+ if (index === 0 && valuesLength === 1) {
20
+ roundedCorners = 'tw-rounded-[15px]';
21
+ }
22
+ else if (index === 0) {
23
+ roundedCorners = 'tw-rounded-l-[15px]';
24
+ }
25
+ else if (index === valuesLength - 1) {
26
+ roundedCorners = 'tw-rounded-r-[15px]';
27
+ }
28
+ }
29
+ else {
30
+ // Otherwise, only round the leftmost indicator
31
+ if (index === 0) {
32
+ roundedCorners = 'tw-rounded-l-[15px]';
33
+ }
34
+ }
35
+ useEffect(() => {
36
+ const timeout = setTimeout(() => {
37
+ const newWidth = (Number(value) / Number(max)) * 100;
38
+ setAnimatedWidth(newWidth);
39
+ previousWidth.current = newWidth;
40
+ }, 100);
41
+ return () => clearTimeout(timeout);
42
+ }, [value]);
43
+ const bgColor = color || undefined;
44
+ const bgClass = color ? '' : 'tw-bg-sq-color-dark';
45
+ const computeTextClass = (elem) => {
46
+ const computedStyle = getComputedStyle(elem);
47
+ const backgroundColor = computedStyle.backgroundColor;
48
+ const textColorClass = tinycolor(backgroundColor).isDark()
49
+ ? 'tw-text-sq-white dark:tw-text-sq-white'
50
+ : 'tw-text-sq-text-color dark:tw-text-sq-text-color';
51
+ setTextColorClass(textColorClass);
52
+ };
53
+ useEffect(() => {
54
+ if (indicatorElementRef.current) {
55
+ computeTextClass(indicatorElementRef.current);
56
+ }
57
+ }, [!!indicatorElementRef.current]);
58
+ return (_createElement(Progress.Indicator, { className: `tw-ease-[cubic-bezier(0.65, 0, 0.35, 1)] tw-w-full tw-h-[18px] tw-duration-[660ms] tw-flex tw-justify-center tw-items-center ${valuesLength === 1 ? '' : 'tw-overflow-hidden'} ${roundedCorners} ${bgClass} ${extraClasses}`, ...tooltipData, "data-qtip-text": tooltipProps.tooltip ? tooltipProps.tooltip : `${value}%`, "data-testid": `progress-bar-indicator-${testId ? testId : value}`, key: `${index}-${value}`, ref: indicatorElementRef, style: {
59
+ // Background color will default to the theme color if undefined
60
+ backgroundColor: bgColor,
61
+ animation: 'width 660ms forwards',
62
+ width: `${animatedWidth}%`,
63
+ } }, label ? (_jsx("span", { className: `${baseLabelClasses} ${labelClasses} ${textColorClass} ${valuesLength === 1 ? 'tw-absolute tw-z-50' : ''}`, children: label })) : undefined));
64
+ };
65
+ const ProgressBar = ({ values = [], max = 100, containerExtraClasses = '', zeroValueLabel = 'No progress yet', }) => {
66
+ const totalValue = values.reduce((acc, { value }) => acc + value, 0);
67
+ return (_jsx(Progress.Root, { className: `tw-relative tw-h-[18px] tw-w-full tw-overflow-hidden tw-rounded-[15px] tw-bg-sq-dark-gray dark:tw-bg-sq-dark-disabled-gray tw-flex tw-flex-1 ${containerExtraClasses}`, max: max, value: totalValue, children: totalValue > 0 ? (values.map((props, i) => {
68
+ return (_createElement(ProgressIndicator, { ...props, max: max, valuesLength: values.length, index: i, totalValue: totalValue, key: i }));
69
+ })) : (_jsx("div", { className: `${baseLabelClasses} tw-mx-auto tw-overflow-hidden`, children: zeroValueLabel })) }));
70
+ };
71
+ export default ProgressBar;
@@ -0,0 +1,5 @@
1
+ declare const _default: {
2
+ title: string;
3
+ };
4
+ export default _default;
5
+ export declare const AllProgressBars: () => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,46 @@
1
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import React, { useEffect } from 'react';
3
+ import ProgressBar from './ProgressBar';
4
+ import { QTip } from '../Tooltip';
5
+ export default {
6
+ title: 'ProgressBar',
7
+ };
8
+ export const AllProgressBars = () => {
9
+ const [values, setValues] = React.useState([
10
+ { value: 20, label: 'RGB' },
11
+ { value: 15, color: 'brown', label: 'Brown' },
12
+ { value: 40, color: '#435abc', label: 'Hex' },
13
+ ]);
14
+ useEffect(() => {
15
+ const timeout = setTimeout(() => {
16
+ setValues([
17
+ { value: 40, label: 'RGB' },
18
+ { value: 5, color: 'brown', label: 'Brown' },
19
+ { value: 50, color: '#435abc', label: 'Hex' },
20
+ ]);
21
+ }, 2000);
22
+ return () => clearTimeout(timeout);
23
+ });
24
+ const renderAllVariations = () => (_jsxs(_Fragment, { children: [
25
+ _jsxs("div", { className: "tw-p-4 light", children: [
26
+ _jsx("div", { className: "tw-p-4", children: _jsx(ProgressBar, { max: 100, values: [{ value: 40 }] }) }), _jsx("div", { className: "tw-p-4", children: _jsx(ProgressBar, { max: 100, values: [{ value: 10 }] }) }), _jsx("div", { className: "tw-p-4", children: _jsx(ProgressBar, { values: [{ value: 0 }], max: 100 }) }), _jsx("div", { className: "tw-p-4", children: _jsx(ProgressBar, { values: [{ value: 70, tooltip: 'this is an indicator tooltip' }], max: 100, containerExtraClasses: "tw-bg-sq-text-color" }) }), _jsx("div", { className: "tw-p-4", children: _jsx(ProgressBar, { values: [
27
+ { value: 20, label: 'RGB' },
28
+ { value: 15, color: 'brown', label: 'Brown' },
29
+ { value: 40, color: '#435abc', label: 'Hex' },
30
+ ], max: 100, containerExtraClasses: "tw-bg-sq-text-color" }) }), _jsx("div", { className: "tw-p-4", children: _jsx(ProgressBar, { values: [{ value: 5, label: 'A very long text' }], max: 100 }) }), _jsx("div", { className: "tw-p-4", children: _jsx(ProgressBar, { values: values, max: 100, containerExtraClasses: "tw-bg-sq-text-color" }) }), _jsx("div", { className: "tw-p-4", children: _jsx(ProgressBar, { values: [{ value: 0, label: 'zero label' }], max: 100 }) }), _jsx("div", { className: "tw-p-4", children: _jsx(ProgressBar, { values: [{ value: 0 }], zeroValueLabel: "default zero level label deliberately long to test overflow", max: 100 }) })
31
+ ] }), _jsxs("div", { className: "tw-p-4 tw-dark tw-bg-sq-dark-background", children: [
32
+ _jsx("div", { className: "tw-p-4", children: _jsx(ProgressBar, { max: 100, values: [{ value: 40 }] }) }), _jsx("div", { className: "tw-p-4", children: _jsx(ProgressBar, { max: 100, values: [{ value: 10 }] }) }), _jsx("div", { className: "tw-p-4", children: _jsx(ProgressBar, { values: [{ value: 0 }], max: 100 }) }), _jsx("div", { className: "tw-p-4", children: _jsx(ProgressBar, { values: [{ value: 70, tooltip: 'this is an indicator tooltip' }], max: 100, containerExtraClasses: "tw-bg-sq-text-color" }) }), _jsx("div", { className: "tw-p-4", children: _jsx(ProgressBar, { values: [
33
+ { value: 20, color: 'rgb(44,200,190)', label: 'RGB' },
34
+ { value: 15, color: 'brown', label: 'Brown' },
35
+ { value: 40, color: '#435abc', label: 'Hex' },
36
+ ], max: 100, containerExtraClasses: "tw-bg-sq-text-color" }) }), _jsx("div", { className: "tw-p-4", children: _jsx(ProgressBar, { values: values, max: 100, containerExtraClasses: "tw-bg-sq-text-color" }) }), _jsx("div", { className: "tw-p-4", children: _jsx(ProgressBar, { values: [{ value: 0, label: 'zero label' }], max: 100, containerExtraClasses: "tw-bg-sq-text-color" }) }), _jsx("div", { className: "tw-p-4", children: _jsx(ProgressBar, { values: [{ value: 0 }], zeroValueLabel: "default zero level label is made deliberately long to test overflow", max: 100, containerExtraClasses: "tw-bg-sq-text-color" }) })
37
+ ] })
38
+ ] }));
39
+ return (_jsxs("div", { className: "tw-grid tw-grid-cols-4 tw-gap-4", children: [
40
+ _jsx(QTip, {}), _jsxs("div", { className: "color_topic", children: [
41
+ _jsx("b", { children: "Topic Colors" }), renderAllVariations()] }), _jsxs("div", { className: "color_analysis", children: [
42
+ _jsx("b", { children: "Analysis Colors" }), renderAllVariations()] }), _jsxs("div", { className: "color_datalab", children: [
43
+ _jsx("b", { children: "Datalab Colors" }), renderAllVariations()] }), _jsxs("div", { className: "color_vantage", children: [
44
+ _jsx("b", { children: "Vantage Colors" }), renderAllVariations()] })
45
+ ] }));
46
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,42 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { render, screen, waitFor } from '@testing-library/react';
3
+ import ProgressBar from './ProgressBar';
4
+ import userEvent from '@testing-library/user-event';
5
+ describe('ProgressBar', () => {
6
+ it('renders without crashing', () => {
7
+ render(_jsx(ProgressBar, { values: [{ value: 50 }] }));
8
+ const progressBar = screen.getByRole('progressbar');
9
+ expect(progressBar).toBeInTheDocument();
10
+ });
11
+ it('displays the correct progress value', () => {
12
+ render(_jsx(ProgressBar, { values: [{ value: 75 }] }));
13
+ const progressBarIndicator = screen.getByRole('progressbar').firstChild;
14
+ waitFor(() => {
15
+ expect(progressBarIndicator).toHaveStyle('transform: translateX(-25%)');
16
+ });
17
+ });
18
+ it('applies the correct max value', () => {
19
+ render(_jsx(ProgressBar, { values: [{ value: 50 }], max: 200 }));
20
+ const progressBar = screen.getByRole('progressbar');
21
+ expect(progressBar).toHaveAttribute('data-max', '200');
22
+ });
23
+ it('displays the tooltip with the correct label', () => {
24
+ render(_jsx(ProgressBar, { values: [{ value: 50, tooltip: 'Progress' }] }));
25
+ userEvent.hover(screen.getByTestId('progress-bar-indicator-50'));
26
+ waitFor(() => {
27
+ expect(screen.getByText('Progress')).toBeInTheDocument();
28
+ });
29
+ });
30
+ it('displays the no progress level for zero value', () => {
31
+ render(_jsx(ProgressBar, { values: [{ value: 0, tooltip: '0%' }], zeroValueLabel: "No progress" }));
32
+ waitFor(() => {
33
+ expect(screen.getByText('No progress')).toBeInTheDocument();
34
+ });
35
+ });
36
+ it('applies the multiple values of the Progress bar', () => {
37
+ render(_jsx(ProgressBar, { values: [{ value: 20 }, { value: 15 }, { value: 40 }], max: 200 }));
38
+ for (const val of [20, 15, 40]) {
39
+ expect(screen.getByTestId(`progress-bar-indicator-${val}`)).toBeInTheDocument();
40
+ }
41
+ });
42
+ });
@@ -0,0 +1,77 @@
1
+ import { TooltipComponentProps } from '../Tooltip/Tooltip.types';
2
+ /**
3
+ * Props for individual progress indicators within a ProgressBar.
4
+ * Each indicator represents a segment of the overall progress with its own value and styling.
5
+ * Extends TooltipComponentProps to support tooltip functionality on individual indicators.
6
+ */
7
+ export interface ProgressIndicatorProps extends TooltipComponentProps {
8
+ /**
9
+ * Additional CSS classes to apply to this specific progress indicator.
10
+ * Use this to customize the appearance of individual indicators within the progress bar.
11
+ */
12
+ extraClasses?: string;
13
+ /**
14
+ * Test ID attribute for this progress indicator used in automated testing.
15
+ * Helps identify and interact with specific indicators in test suites.
16
+ */
17
+ testId?: string;
18
+ /**
19
+ * Current value of this progress indicator.
20
+ * Should be between 0 and the progress bar's max value. The indicator's width
21
+ * will be calculated as a percentage based on this value relative to the max.
22
+ */
23
+ value: number;
24
+ /**
25
+ * Custom color for this progress indicator.
26
+ * Can be any valid CSS color value (hex, rgb, color names, etc.).
27
+ * If not provided, uses the default theme color for progress indicators.
28
+ */
29
+ color?: string;
30
+ /**
31
+ * Text label to display on or next to this progress indicator.
32
+ * Useful for showing the indicator's name, category, or current value.
33
+ * Can be positioned and styled using labelClasses.
34
+ */
35
+ label?: string;
36
+ /**
37
+ * Additional CSS classes to apply specifically to the indicator's label.
38
+ * Use this to customize the label's typography, positioning, or styling
39
+ * independently from the indicator itself.
40
+ */
41
+ labelClasses?: string;
42
+ }
43
+ /**
44
+ * Props for the ProgressBar component that displays one or more progress indicators.
45
+ * Supports multiple indicators for showing different categories or segments of progress.
46
+ */
47
+ export interface ProgressBarProps {
48
+ /**
49
+ * Array of progress indicators to display within the progress bar.
50
+ * Each indicator can have its own value, color, label, and styling.
51
+ * Indicators are rendered in the order they appear in the array.
52
+ */
53
+ values: ProgressIndicatorProps[];
54
+ /**
55
+ * Maximum value for the progress bar scale.
56
+ * All indicator values are calculated as percentages relative to this maximum.
57
+ * Determines the full width (100%) of the progress bar.
58
+ * @default 100
59
+ */
60
+ max?: number;
61
+ /**
62
+ * Additional CSS classes to apply to the progress bar container.
63
+ * Use this to customize the overall appearance, spacing, or layout of the entire progress bar.
64
+ */
65
+ containerExtraClasses?: string;
66
+ /**
67
+ * Test ID attribute for the progress bar container used in automated testing.
68
+ * Applied to the main container element for test targeting and interaction.
69
+ */
70
+ testId?: string;
71
+ /**
72
+ * Text label to display when all progress indicators have a value of zero.
73
+ * Useful for providing context or instructions when no progress has been made.
74
+ * Only shown when the total progress is zero.
75
+ */
76
+ zeroValueLabel?: string;
77
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export { default } from './ProgressBar';
@@ -0,0 +1 @@
1
+ export { default } from './ProgressBar';
@@ -0,0 +1,4 @@
1
+ import * as React from 'react';
2
+ import { SeeqActionDropdownProps } from './SeeqActionDropdown.types';
3
+ declare const SeeqActionDropdown: React.FunctionComponent<SeeqActionDropdownProps>;
4
+ export default SeeqActionDropdown;
@@ -0,0 +1,41 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import * as DropdownMenu from '@radix-ui/react-dropdown-menu';
3
+ import { getQTipData } from '../Tooltip/qTip.utilities';
4
+ import { InsertSeeqContent, SeeqActionDropdownItem, ViewWorkbench } from './variants';
5
+ const borderStyles = [
6
+ 'tw-border-solid',
7
+ 'tw-border',
8
+ 'tw-rounded-md',
9
+ 'tw-border-sq-disabled-gray',
10
+ 'dark:tw-border-gray-500',
11
+ ].join(' ');
12
+ const bgStyles = ['tw-bg-sq-white', 'dark:tw-bg-sq-dark-background'].join(' ');
13
+ const disabledClasses = ['tw-opacity-50', 'tw-cursor-not-allowed'].join(' ');
14
+ const renderItem = (variant, item) => {
15
+ switch (variant) {
16
+ case 'create-workbench':
17
+ return _jsx(SeeqActionDropdownItem, { ...item });
18
+ case 'view-workbench':
19
+ return _jsx(ViewWorkbench, { ...item });
20
+ case 'insert-seeq-content':
21
+ return _jsx(InsertSeeqContent, { ...item });
22
+ default:
23
+ return _jsx(SeeqActionDropdownItem, { ...item });
24
+ }
25
+ };
26
+ const SeeqActionDropdown = ({ seeqActionDropdownItems, trigger, id, extraClassNames, containerTestId, disabled = false, align = 'end', placement = 'bottom', placementOffset = 5, alignOffset = -35, hasArrow = false, onOpenChange, isOpen, setFocusOnTriggerOnClose = true, keepFocusInsideDropdown = true, variant, ...tooltipProps }) => {
27
+ const tooltipData = getQTipData(tooltipProps);
28
+ return (_jsxs(DropdownMenu.Root, { defaultOpen: false, open: isOpen, onOpenChange: onOpenChange, modal: keepFocusInsideDropdown, children: [
29
+ _jsx(DropdownMenu.Trigger, { id: id, "data-testid": id, className: `tw-border-none focus-visible:tw-outline-none focus:tw-outline-none focus-within:tw-outline-none`, asChild: true, disabled: disabled, children: _jsx("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 || ''}`, children: trigger }) }), _jsx(DropdownMenu.Content, { sideOffset: placementOffset, side: placement, align: align, alignOffset: alignOffset, asChild: true, onCloseAutoFocus: (e) => !setFocusOnTriggerOnClose && e.preventDefault(), className: "focus-visible:tw-outline-none tw-outline-none", children: _jsxs("div", { "data-testid": containerTestId, className: bgStyles +
30
+ ' tw-relative tw-z-[1200] tw-min-w-6 tw-py-2 focus-visible:tw-outline-none tw-outline-none' +
31
+ ' data-[state=open]:tw-animate-in data-[state=closed]:tw-animate-out' +
32
+ ' 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 ' +
33
+ borderStyles, children: [hasArrow && (_jsx(DropdownMenu.Arrow, { asChild: true, children: _jsx("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]" }) })), seeqActionDropdownItems.map((item, index) => {
34
+ return (_jsxs("div", { children: [
35
+ _jsx(DropdownMenu.Item, { onSelect: (e) => {
36
+ item.action(e);
37
+ }, 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-relative tw-select-none tw-outline-none data-[disabled]:tw-text-sq-disabled-gray data-[disabled]:tw-pointer-events-none`, "data-testid": item.testId, disabled: !item.enabled, children: renderItem(variant, item) }), item.divider && (_jsx(DropdownMenu.Separator, { "data-testid": `dropdown-divider-${index}`, className: "tw-h-[1px] tw-bg-sq-disabled-gray dark:tw-bg-gray-500 tw-my-[8px]" }))] }, item.display + index));
38
+ })] }) })
39
+ ] }));
40
+ };
41
+ export default SeeqActionDropdown;
@@ -0,0 +1,5 @@
1
+ declare const _default: {
2
+ title: string;
3
+ };
4
+ export default _default;
5
+ export declare const AllSeeqActionDropdownVariants: () => import("react/jsx-runtime").JSX.Element;