@seeqdev/qomponents 0.0.125 → 0.0.127

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 (240) hide show
  1. package/dist/Carousel/Carousel.d.ts +9 -0
  2. package/dist/Carousel/Carousel.js +17 -12
  3. package/dist/Carousel/Carousel.js.map +1 -1
  4. package/dist/Carousel/Carousel.stories.d.ts +5 -0
  5. package/dist/Carousel/Carousel.stories.js +48 -48
  6. package/dist/Carousel/Carousel.stories.js.map +1 -1
  7. package/dist/Carousel/Carousel.test.d.ts +1 -0
  8. package/dist/Carousel/Carousel.test.js +1 -1
  9. package/dist/Carousel/Carousel.test.js.map +1 -1
  10. package/dist/Carousel/Carousel.types.d.ts +23 -0
  11. package/dist/Carousel/index.d.ts +1 -0
  12. package/dist/index.d.ts +2 -0
  13. package/dist/index.esm.js +319 -2
  14. package/dist/index.esm.js.map +1 -1
  15. package/dist/index.js +319 -1
  16. package/dist/index.js.map +1 -1
  17. package/dist/styles.css +53 -0
  18. package/package.json +1 -1
  19. package/dist/Accordion/Accordion.js +0 -9
  20. package/dist/Accordion/Accordion.js.map +0 -1
  21. package/dist/Accordion/Accordion.stories.js +0 -115
  22. package/dist/Accordion/Accordion.stories.js.map +0 -1
  23. package/dist/Accordion/Accordion.test.js +0 -55
  24. package/dist/Accordion/Accordion.test.js.map +0 -1
  25. package/dist/Accordion/Accordion.types.js +0 -2
  26. package/dist/Accordion/Accordion.types.js.map +0 -1
  27. package/dist/Accordion/index.js +0 -2
  28. package/dist/Accordion/index.js.map +0 -1
  29. package/dist/Alert/Alert.js +0 -34
  30. package/dist/Alert/Alert.js.map +0 -1
  31. package/dist/Alert/Alert.stories.js +0 -52
  32. package/dist/Alert/Alert.stories.js.map +0 -1
  33. package/dist/Alert/Alert.test.js +0 -51
  34. package/dist/Alert/Alert.test.js.map +0 -1
  35. package/dist/Alert/Alert.types.js +0 -2
  36. package/dist/Alert/Alert.types.js.map +0 -1
  37. package/dist/Alert/index.js +0 -2
  38. package/dist/Alert/index.js.map +0 -1
  39. package/dist/Button/Button.js +0 -92
  40. package/dist/Button/Button.js.map +0 -1
  41. package/dist/Button/Button.stories.js +0 -100
  42. package/dist/Button/Button.stories.js.map +0 -1
  43. package/dist/Button/Button.test.js +0 -49
  44. package/dist/Button/Button.test.js.map +0 -1
  45. package/dist/Button/Button.types.js +0 -5
  46. package/dist/Button/Button.types.js.map +0 -1
  47. package/dist/Button/index.js +0 -2
  48. package/dist/Button/index.js.map +0 -1
  49. package/dist/ButtonGroup/ButtonGroup.js +0 -33
  50. package/dist/ButtonGroup/ButtonGroup.js.map +0 -1
  51. package/dist/ButtonGroup/ButtonGroup.stories.js +0 -385
  52. package/dist/ButtonGroup/ButtonGroup.stories.js.map +0 -1
  53. package/dist/ButtonGroup/ButtonGroup.test.js +0 -67
  54. package/dist/ButtonGroup/ButtonGroup.test.js.map +0 -1
  55. package/dist/ButtonGroup/ButtonGroup.types.js +0 -2
  56. package/dist/ButtonGroup/ButtonGroup.types.js.map +0 -1
  57. package/dist/ButtonGroup/index.js +0 -2
  58. package/dist/ButtonGroup/index.js.map +0 -1
  59. package/dist/ButtonWithDropdown/ButtonWithDropdown.js +0 -60
  60. package/dist/ButtonWithDropdown/ButtonWithDropdown.js.map +0 -1
  61. package/dist/ButtonWithDropdown/ButtonWithDropdown.stories.js +0 -143
  62. package/dist/ButtonWithDropdown/ButtonWithDropdown.stories.js.map +0 -1
  63. package/dist/ButtonWithDropdown/ButtonWithDropdown.test.js +0 -93
  64. package/dist/ButtonWithDropdown/ButtonWithDropdown.test.js.map +0 -1
  65. package/dist/ButtonWithDropdown/ButtonWithDropdown.types.js +0 -2
  66. package/dist/ButtonWithDropdown/ButtonWithDropdown.types.js.map +0 -1
  67. package/dist/ButtonWithDropdown/index.js +0 -2
  68. package/dist/ButtonWithDropdown/index.js.map +0 -1
  69. package/dist/ButtonWithPopover/ButtonWithPopover.js +0 -53
  70. package/dist/ButtonWithPopover/ButtonWithPopover.js.map +0 -1
  71. package/dist/ButtonWithPopover/ButtonWithPopover.stories.js +0 -75
  72. package/dist/ButtonWithPopover/ButtonWithPopover.stories.js.map +0 -1
  73. package/dist/ButtonWithPopover/ButtonWithPopover.test.js +0 -82
  74. package/dist/ButtonWithPopover/ButtonWithPopover.test.js.map +0 -1
  75. package/dist/ButtonWithPopover/ButtonWithPopover.types.js +0 -2
  76. package/dist/ButtonWithPopover/ButtonWithPopover.types.js.map +0 -1
  77. package/dist/ButtonWithPopover/index.js +0 -2
  78. package/dist/ButtonWithPopover/index.js.map +0 -1
  79. package/dist/Checkbox/Checkbox.js +0 -26
  80. package/dist/Checkbox/Checkbox.js.map +0 -1
  81. package/dist/Checkbox/Checkbox.stories.js +0 -34
  82. package/dist/Checkbox/Checkbox.stories.js.map +0 -1
  83. package/dist/Checkbox/Checkbox.test.js +0 -94
  84. package/dist/Checkbox/Checkbox.test.js.map +0 -1
  85. package/dist/Checkbox/Checkbox.types.js +0 -2
  86. package/dist/Checkbox/Checkbox.types.js.map +0 -1
  87. package/dist/Checkbox/index.js +0 -2
  88. package/dist/Checkbox/index.js.map +0 -1
  89. package/dist/Collapse/Collapse.js +0 -18
  90. package/dist/Collapse/Collapse.js.map +0 -1
  91. package/dist/Collapse/Collapse.stories.js +0 -37
  92. package/dist/Collapse/Collapse.stories.js.map +0 -1
  93. package/dist/Collapse/Collapse.test.js +0 -19
  94. package/dist/Collapse/Collapse.test.js.map +0 -1
  95. package/dist/Collapse/Collapse.types.js +0 -2
  96. package/dist/Collapse/Collapse.types.js.map +0 -1
  97. package/dist/Collapse/index.js +0 -2
  98. package/dist/Collapse/index.js.map +0 -1
  99. package/dist/Icon/Icon.js +0 -55
  100. package/dist/Icon/Icon.js.map +0 -1
  101. package/dist/Icon/Icon.stories.js +0 -50
  102. package/dist/Icon/Icon.stories.js.map +0 -1
  103. package/dist/Icon/Icon.test.js +0 -55
  104. package/dist/Icon/Icon.test.js.map +0 -1
  105. package/dist/Icon/Icon.types.js +0 -16
  106. package/dist/Icon/Icon.types.js.map +0 -1
  107. package/dist/Icon/index.js +0 -2
  108. package/dist/Icon/index.js.map +0 -1
  109. package/dist/InputGroup/InputGroup.js +0 -32
  110. package/dist/InputGroup/InputGroup.js.map +0 -1
  111. package/dist/InputGroup/InputGroup.stories.js +0 -168
  112. package/dist/InputGroup/InputGroup.stories.js.map +0 -1
  113. package/dist/InputGroup/InputGroup.test.js +0 -43
  114. package/dist/InputGroup/InputGroup.test.js.map +0 -1
  115. package/dist/InputGroup/InputGroup.types.js +0 -2
  116. package/dist/InputGroup/InputGroup.types.js.map +0 -1
  117. package/dist/InputGroup/index.js +0 -2
  118. package/dist/InputGroup/index.js.map +0 -1
  119. package/dist/Modal/Modal.js +0 -100
  120. package/dist/Modal/Modal.js.map +0 -1
  121. package/dist/Modal/Modal.stories.js +0 -127
  122. package/dist/Modal/Modal.stories.js.map +0 -1
  123. package/dist/Modal/Modal.test.js +0 -108
  124. package/dist/Modal/Modal.test.js.map +0 -1
  125. package/dist/Modal/Modal.types.js +0 -2
  126. package/dist/Modal/Modal.types.js.map +0 -1
  127. package/dist/Modal/index.js +0 -2
  128. package/dist/Modal/index.js.map +0 -1
  129. package/dist/ProgressBar/ProgressBar.js +0 -30
  130. package/dist/ProgressBar/ProgressBar.js.map +0 -1
  131. package/dist/ProgressBar/ProgressBar.stories.js +0 -73
  132. package/dist/ProgressBar/ProgressBar.stories.js.map +0 -1
  133. package/dist/ProgressBar/ProgressBar.test.js +0 -38
  134. package/dist/ProgressBar/ProgressBar.test.js.map +0 -1
  135. package/dist/ProgressBar/ProgressBar.types.js +0 -2
  136. package/dist/ProgressBar/ProgressBar.types.js.map +0 -1
  137. package/dist/ProgressBar/index.js +0 -2
  138. package/dist/ProgressBar/index.js.map +0 -1
  139. package/dist/SeeqActionDropdown/SeeqActionDropdown.js +0 -48
  140. package/dist/SeeqActionDropdown/SeeqActionDropdown.js.map +0 -1
  141. package/dist/SeeqActionDropdown/SeeqActionDropdown.stories.js +0 -80
  142. package/dist/SeeqActionDropdown/SeeqActionDropdown.stories.js.map +0 -1
  143. package/dist/SeeqActionDropdown/SeeqActionDropdown.test.js +0 -73
  144. package/dist/SeeqActionDropdown/SeeqActionDropdown.test.js.map +0 -1
  145. package/dist/SeeqActionDropdown/SeeqActionDropdown.types.js +0 -2
  146. package/dist/SeeqActionDropdown/SeeqActionDropdown.types.js.map +0 -1
  147. package/dist/SeeqActionDropdown/index.js +0 -2
  148. package/dist/SeeqActionDropdown/index.js.map +0 -1
  149. package/dist/SeeqActionDropdown/variants.js +0 -23
  150. package/dist/SeeqActionDropdown/variants.js.map +0 -1
  151. package/dist/Select/Select.js +0 -174
  152. package/dist/Select/Select.js.map +0 -1
  153. package/dist/Select/Select.stories.js +0 -80
  154. package/dist/Select/Select.stories.js.map +0 -1
  155. package/dist/Select/Select.test.js +0 -182
  156. package/dist/Select/Select.test.js.map +0 -1
  157. package/dist/Select/Select.types.js +0 -2
  158. package/dist/Select/Select.types.js.map +0 -1
  159. package/dist/Select/index.js +0 -3
  160. package/dist/Select/index.js.map +0 -1
  161. package/dist/Slider/Slider.js +0 -13
  162. package/dist/Slider/Slider.js.map +0 -1
  163. package/dist/Slider/Slider.stories.js +0 -58
  164. package/dist/Slider/Slider.stories.js.map +0 -1
  165. package/dist/Slider/Slider.test.js +0 -33
  166. package/dist/Slider/Slider.test.js.map +0 -1
  167. package/dist/Slider/Slider.types.js +0 -2
  168. package/dist/Slider/Slider.types.js.map +0 -1
  169. package/dist/Slider/index.js +0 -2
  170. package/dist/Slider/index.js.map +0 -1
  171. package/dist/Tabs/Tabs.js +0 -22
  172. package/dist/Tabs/Tabs.js.map +0 -1
  173. package/dist/Tabs/Tabs.stories.js +0 -91
  174. package/dist/Tabs/Tabs.stories.js.map +0 -1
  175. package/dist/Tabs/Tabs.test.js +0 -91
  176. package/dist/Tabs/Tabs.test.js.map +0 -1
  177. package/dist/Tabs/Tabs.types.js +0 -2
  178. package/dist/Tabs/Tabs.types.js.map +0 -1
  179. package/dist/Tabs/index.js +0 -2
  180. package/dist/Tabs/index.js.map +0 -1
  181. package/dist/TextArea/TextArea.js +0 -25
  182. package/dist/TextArea/TextArea.js.map +0 -1
  183. package/dist/TextArea/TextArea.stories.js +0 -46
  184. package/dist/TextArea/TextArea.stories.js.map +0 -1
  185. package/dist/TextArea/TextArea.test.js +0 -68
  186. package/dist/TextArea/TextArea.test.js.map +0 -1
  187. package/dist/TextArea/TextArea.types.js +0 -2
  188. package/dist/TextArea/TextArea.types.js.map +0 -1
  189. package/dist/TextArea/index.js +0 -2
  190. package/dist/TextArea/index.js.map +0 -1
  191. package/dist/TextField/TextField.js +0 -79
  192. package/dist/TextField/TextField.js.map +0 -1
  193. package/dist/TextField/TextField.stories.js +0 -70
  194. package/dist/TextField/TextField.stories.js.map +0 -1
  195. package/dist/TextField/TextField.test.js +0 -39
  196. package/dist/TextField/TextField.test.js.map +0 -1
  197. package/dist/TextField/TextField.types.js +0 -2
  198. package/dist/TextField/TextField.types.js.map +0 -1
  199. package/dist/TextField/index.js +0 -2
  200. package/dist/TextField/index.js.map +0 -1
  201. package/dist/ToolbarButton/ToolbarButton.js +0 -75
  202. package/dist/ToolbarButton/ToolbarButton.js.map +0 -1
  203. package/dist/ToolbarButton/ToolbarButton.stories.js +0 -94
  204. package/dist/ToolbarButton/ToolbarButton.stories.js.map +0 -1
  205. package/dist/ToolbarButton/ToolbarButton.test.js +0 -93
  206. package/dist/ToolbarButton/ToolbarButton.test.js.map +0 -1
  207. package/dist/ToolbarButton/ToolbarButton.types.js +0 -2
  208. package/dist/ToolbarButton/ToolbarButton.types.js.map +0 -1
  209. package/dist/ToolbarButton/index.js +0 -2
  210. package/dist/ToolbarButton/index.js.map +0 -1
  211. package/dist/Tooltip/QTip.stories.js +0 -45
  212. package/dist/Tooltip/QTip.stories.js.map +0 -1
  213. package/dist/Tooltip/QTip.types.js +0 -2
  214. package/dist/Tooltip/QTip.types.js.map +0 -1
  215. package/dist/Tooltip/QTipPerformance.stories.js +0 -30
  216. package/dist/Tooltip/QTipPerformance.stories.js.map +0 -1
  217. package/dist/Tooltip/Qtip.js +0 -168
  218. package/dist/Tooltip/Qtip.js.map +0 -1
  219. package/dist/Tooltip/Tooltip.js +0 -36
  220. package/dist/Tooltip/Tooltip.js.map +0 -1
  221. package/dist/Tooltip/Tooltip.stories.js +0 -32
  222. package/dist/Tooltip/Tooltip.stories.js.map +0 -1
  223. package/dist/Tooltip/Tooltip.types.js +0 -3
  224. package/dist/Tooltip/Tooltip.types.js.map +0 -1
  225. package/dist/Tooltip/TooltipPerformance.stories.js +0 -30
  226. package/dist/Tooltip/TooltipPerformance.stories.js.map +0 -1
  227. package/dist/Tooltip/index.js +0 -3
  228. package/dist/Tooltip/index.js.map +0 -1
  229. package/dist/Tooltip/qTip.utilities.js +0 -11
  230. package/dist/Tooltip/qTip.utilities.js.map +0 -1
  231. package/dist/types.js +0 -2
  232. package/dist/types.js.map +0 -1
  233. package/dist/utils/browserId.js +0 -29
  234. package/dist/utils/browserId.js.map +0 -1
  235. package/dist/utils/svg.js +0 -20
  236. package/dist/utils/svg.js.map +0 -1
  237. package/dist/utils/validateStyleDimension.js +0 -14
  238. package/dist/utils/validateStyleDimension.js.map +0 -1
  239. package/dist/utils/validateStyleDimension.test.js +0 -20
  240. package/dist/utils/validateStyleDimension.test.js.map +0 -1
package/dist/index.js CHANGED
@@ -18978,6 +18978,260 @@ function useSpring(props, deps) {
18978
18978
  );
18979
18979
  return isFn || arguments.length == 2 ? [values, ref] : values;
18980
18980
  }
18981
+ function useTransition(data, props, deps) {
18982
+ const propsFn = is.fun(props) && props;
18983
+ const {
18984
+ reset,
18985
+ sort,
18986
+ trail = 0,
18987
+ expires = true,
18988
+ exitBeforeEnter = false,
18989
+ onDestroyed,
18990
+ ref: propsRef,
18991
+ config: propsConfig
18992
+ } = propsFn ? propsFn() : props;
18993
+ const ref = React.useMemo(
18994
+ () => propsFn || arguments.length == 3 ? SpringRef() : void 0,
18995
+ []
18996
+ );
18997
+ const items = toArray(data);
18998
+ const transitions = [];
18999
+ const usedTransitions = React.useRef(null);
19000
+ const prevTransitions = reset ? null : usedTransitions.current;
19001
+ useIsomorphicLayoutEffect(() => {
19002
+ usedTransitions.current = transitions;
19003
+ });
19004
+ useOnce(() => {
19005
+ each(transitions, (t) => {
19006
+ ref?.add(t.ctrl);
19007
+ t.ctrl.ref = ref;
19008
+ });
19009
+ return () => {
19010
+ each(usedTransitions.current, (t) => {
19011
+ if (t.expired) {
19012
+ clearTimeout(t.expirationId);
19013
+ }
19014
+ detachRefs(t.ctrl, ref);
19015
+ t.ctrl.stop(true);
19016
+ });
19017
+ };
19018
+ });
19019
+ const keys = getKeys(items, propsFn ? propsFn() : props, prevTransitions);
19020
+ const expired = reset && usedTransitions.current || [];
19021
+ useIsomorphicLayoutEffect(
19022
+ () => each(expired, ({ ctrl, item, key }) => {
19023
+ detachRefs(ctrl, ref);
19024
+ callProp(onDestroyed, item, key);
19025
+ })
19026
+ );
19027
+ const reused = [];
19028
+ if (prevTransitions)
19029
+ each(prevTransitions, (t, i) => {
19030
+ if (t.expired) {
19031
+ clearTimeout(t.expirationId);
19032
+ expired.push(t);
19033
+ } else {
19034
+ i = reused[i] = keys.indexOf(t.key);
19035
+ if (~i)
19036
+ transitions[i] = t;
19037
+ }
19038
+ });
19039
+ each(items, (item, i) => {
19040
+ if (!transitions[i]) {
19041
+ transitions[i] = {
19042
+ key: keys[i],
19043
+ item,
19044
+ phase: "mount" /* MOUNT */,
19045
+ ctrl: new Controller()
19046
+ };
19047
+ transitions[i].ctrl.item = item;
19048
+ }
19049
+ });
19050
+ if (reused.length) {
19051
+ let i = -1;
19052
+ const { leave } = propsFn ? propsFn() : props;
19053
+ each(reused, (keyIndex, prevIndex) => {
19054
+ const t = prevTransitions[prevIndex];
19055
+ if (~keyIndex) {
19056
+ i = transitions.indexOf(t);
19057
+ transitions[i] = { ...t, item: items[keyIndex] };
19058
+ } else if (leave) {
19059
+ transitions.splice(++i, 0, t);
19060
+ }
19061
+ });
19062
+ }
19063
+ if (is.fun(sort)) {
19064
+ transitions.sort((a, b) => sort(a.item, b.item));
19065
+ }
19066
+ let delay = -trail;
19067
+ const forceUpdate = useForceUpdate();
19068
+ const defaultProps = getDefaultProps(props);
19069
+ const changes = /* @__PURE__ */ new Map();
19070
+ const exitingTransitions = React.useRef(/* @__PURE__ */ new Map());
19071
+ const forceChange = React.useRef(false);
19072
+ each(transitions, (t, i) => {
19073
+ const key = t.key;
19074
+ const prevPhase = t.phase;
19075
+ const p = propsFn ? propsFn() : props;
19076
+ let to2;
19077
+ let phase;
19078
+ const propsDelay = callProp(p.delay || 0, key);
19079
+ if (prevPhase == "mount" /* MOUNT */) {
19080
+ to2 = p.enter;
19081
+ phase = "enter" /* ENTER */;
19082
+ } else {
19083
+ const isLeave = keys.indexOf(key) < 0;
19084
+ if (prevPhase != "leave" /* LEAVE */) {
19085
+ if (isLeave) {
19086
+ to2 = p.leave;
19087
+ phase = "leave" /* LEAVE */;
19088
+ } else if (to2 = p.update) {
19089
+ phase = "update" /* UPDATE */;
19090
+ } else
19091
+ return;
19092
+ } else if (!isLeave) {
19093
+ to2 = p.enter;
19094
+ phase = "enter" /* ENTER */;
19095
+ } else
19096
+ return;
19097
+ }
19098
+ to2 = callProp(to2, t.item, i);
19099
+ to2 = is.obj(to2) ? inferTo(to2) : { to: to2 };
19100
+ if (!to2.config) {
19101
+ const config2 = propsConfig || defaultProps.config;
19102
+ to2.config = callProp(config2, t.item, i, phase);
19103
+ }
19104
+ delay += trail;
19105
+ const payload = {
19106
+ ...defaultProps,
19107
+ // we need to add our props.delay value you here.
19108
+ delay: propsDelay + delay,
19109
+ ref: propsRef,
19110
+ immediate: p.immediate,
19111
+ // This prevents implied resets.
19112
+ reset: false,
19113
+ // Merge any phase-specific props.
19114
+ ...to2
19115
+ };
19116
+ if (phase == "enter" /* ENTER */ && is.und(payload.from)) {
19117
+ const p2 = propsFn ? propsFn() : props;
19118
+ const from = is.und(p2.initial) || prevTransitions ? p2.from : p2.initial;
19119
+ payload.from = callProp(from, t.item, i);
19120
+ }
19121
+ const { onResolve } = payload;
19122
+ payload.onResolve = (result) => {
19123
+ callProp(onResolve, result);
19124
+ const transitions2 = usedTransitions.current;
19125
+ const t2 = transitions2.find((t3) => t3.key === key);
19126
+ if (!t2)
19127
+ return;
19128
+ if (result.cancelled && t2.phase != "update" /* UPDATE */) {
19129
+ return;
19130
+ }
19131
+ if (t2.ctrl.idle) {
19132
+ const idle = transitions2.every((t3) => t3.ctrl.idle);
19133
+ if (t2.phase == "leave" /* LEAVE */) {
19134
+ const expiry = callProp(expires, t2.item);
19135
+ if (expiry !== false) {
19136
+ const expiryMs = expiry === true ? 0 : expiry;
19137
+ t2.expired = true;
19138
+ if (!idle && expiryMs > 0) {
19139
+ if (expiryMs <= 2147483647)
19140
+ t2.expirationId = setTimeout(forceUpdate, expiryMs);
19141
+ return;
19142
+ }
19143
+ }
19144
+ }
19145
+ if (idle && transitions2.some((t3) => t3.expired)) {
19146
+ exitingTransitions.current.delete(t2);
19147
+ if (exitBeforeEnter) {
19148
+ forceChange.current = true;
19149
+ }
19150
+ forceUpdate();
19151
+ }
19152
+ }
19153
+ };
19154
+ const springs = getSprings(t.ctrl, payload);
19155
+ if (phase === "leave" /* LEAVE */ && exitBeforeEnter) {
19156
+ exitingTransitions.current.set(t, { phase, springs, payload });
19157
+ } else {
19158
+ changes.set(t, { phase, springs, payload });
19159
+ }
19160
+ });
19161
+ const context = React.useContext(SpringContext);
19162
+ const prevContext = usePrev(context);
19163
+ const hasContext = context !== prevContext && hasProps(context);
19164
+ useIsomorphicLayoutEffect(() => {
19165
+ if (hasContext) {
19166
+ each(transitions, (t) => {
19167
+ t.ctrl.start({ default: context });
19168
+ });
19169
+ }
19170
+ }, [context]);
19171
+ each(changes, (_, t) => {
19172
+ if (exitingTransitions.current.size) {
19173
+ const ind = transitions.findIndex((state) => state.key === t.key);
19174
+ transitions.splice(ind, 1);
19175
+ }
19176
+ });
19177
+ useIsomorphicLayoutEffect(
19178
+ () => {
19179
+ each(
19180
+ exitingTransitions.current.size ? exitingTransitions.current : changes,
19181
+ ({ phase, payload }, t) => {
19182
+ const { ctrl } = t;
19183
+ t.phase = phase;
19184
+ ref?.add(ctrl);
19185
+ if (hasContext && phase == "enter" /* ENTER */) {
19186
+ ctrl.start({ default: context });
19187
+ }
19188
+ if (payload) {
19189
+ replaceRef(ctrl, payload.ref);
19190
+ if ((ctrl.ref || ref) && !forceChange.current) {
19191
+ ctrl.update(payload);
19192
+ } else {
19193
+ ctrl.start(payload);
19194
+ if (forceChange.current) {
19195
+ forceChange.current = false;
19196
+ }
19197
+ }
19198
+ }
19199
+ }
19200
+ );
19201
+ },
19202
+ reset ? void 0 : deps
19203
+ );
19204
+ const renderTransitions = (render) => /* @__PURE__ */ React__namespace.createElement(React__namespace.Fragment, null, transitions.map((t, i) => {
19205
+ const { springs } = changes.get(t) || t.ctrl;
19206
+ const elem = render({ ...springs }, t.item, t, i);
19207
+ return elem && elem.type ? /* @__PURE__ */ React__namespace.createElement(
19208
+ elem.type,
19209
+ {
19210
+ ...elem.props,
19211
+ key: is.str(t.key) || is.num(t.key) ? t.key : t.ctrl.id,
19212
+ ref: elem.ref
19213
+ }
19214
+ ) : elem;
19215
+ }));
19216
+ return ref ? [renderTransitions, ref] : renderTransitions;
19217
+ }
19218
+ var nextKey = 1;
19219
+ function getKeys(items, { key, keys = key }, prevTransitions) {
19220
+ if (keys === null) {
19221
+ const reused = /* @__PURE__ */ new Set();
19222
+ return items.map((item) => {
19223
+ const t = prevTransitions && prevTransitions.find(
19224
+ (t2) => t2.item === item && t2.phase !== "leave" /* LEAVE */ && !reused.has(t2)
19225
+ );
19226
+ if (t) {
19227
+ reused.add(t);
19228
+ return t.key;
19229
+ }
19230
+ return nextKey++;
19231
+ });
19232
+ }
19233
+ return is.und(keys) ? items : is.fun(keys) ? items.map(keys) : toArray(keys);
19234
+ }
18981
19235
  var Interpolation = class extends FrameValue {
18982
19236
  constructor(source, args) {
18983
19237
  super();
@@ -20691,7 +20945,7 @@ const ProgressIndicator = (props) => {
20691
20945
  }, 100);
20692
20946
  return () => clearTimeout(timeout);
20693
20947
  }, [value]);
20694
- return (React.createElement(Indicator, { className: `tw-ease-[cubic-bezier(0.65, 0, 0.35, 1)] tw-w-full tw-h-full tw-duration-[660ms] tw-flex tw-bg-sq-color-dark ${extraClasses}`, ...tooltipData, "data-qtip-text": tooltipProps.tooltip ? tooltipProps.tooltip : `${value}%`, "data-testid": `progress-bar-indicator-${testId ? testId : value}`, key: `${index}-${value}`, style: {
20948
+ return (React.createElement(Indicator, { className: `tw-ease-[cubic-bezier(0.65, 0, 0.35, 1)] tw-w-full tw-h-full tw-duration-[660ms] tw-flex tw-bg-sq-color-dark tw-justify-center tw-items-center ${extraClasses}`, ...tooltipData, "data-qtip-text": tooltipProps.tooltip ? tooltipProps.tooltip : `${value}%`, "data-testid": `progress-bar-indicator-${testId ? testId : value}`, key: `${index}-${value}`, style: {
20695
20949
  // Background color will default to the theme color if undefined
20696
20950
  backgroundColor: color ? color : undefined,
20697
20951
  animation: 'width 660ms forwards',
@@ -20733,12 +20987,76 @@ const ButtonGroup = (props) => {
20733
20987
  : ''} ${item.buttonProps.extraClassNames}`, onClick: () => onChange && onChange(item?.buttonProps?.value) })) : (React.createElement("div", { key: index, className: ` tw-flex tw-items-center tw-justify-center tw-rounded-none tw-ml-[-1px] active:tw-z-30 ${item?.extraClassNames || ''}` }, item?.element)))));
20734
20988
  };
20735
20989
 
20990
+ /**
20991
+ * Carousel:
20992
+ * - Easily create a carousel with custom slides.
20993
+ * - Supports automatic sliding, navigation arrows, and slide indicators.
20994
+ */
20995
+ const Carousel = ({ testId = 'carousel-id', activeIndex = 0, extraClassNames = '', onSlide = () => { }, autoSlide, showIndicators = true, continuous = true, interval = 4000, prevIcon = 'fc-arrow-dropdown tw-rotate-90', nextIcon = 'fc-arrow-dropdown -tw-rotate-90', showArrows = true, iconExtraClassNames = '', carouselItems = [], }) => {
20996
+ const [currentIndex, setCurrentIndex] = React.useState(activeIndex);
20997
+ const changeSlide = (nextIndex) => {
20998
+ const newIndex = nextIndex % carouselItems.length;
20999
+ setCurrentIndex(newIndex);
21000
+ onSlide(newIndex, newIndex > currentIndex ? 'right' : 'left');
21001
+ };
21002
+ React.useEffect(() => {
21003
+ if (autoSlide) {
21004
+ const currentInterval = setInterval(() => {
21005
+ if (continuous) {
21006
+ setCurrentIndex((prevCurrentIndex) => {
21007
+ onSlide((prevCurrentIndex + 1) % carouselItems.length, (prevCurrentIndex + 1) % carouselItems.length > prevCurrentIndex ? 'right' : 'left');
21008
+ return (prevCurrentIndex + 1) % carouselItems.length;
21009
+ });
21010
+ }
21011
+ else if (currentIndex === carouselItems.length - 1) {
21012
+ clearInterval(currentInterval);
21013
+ }
21014
+ else {
21015
+ changeSlide(currentIndex + 1);
21016
+ }
21017
+ }, interval);
21018
+ return () => clearInterval(currentInterval);
21019
+ }
21020
+ }, [autoSlide]);
21021
+ React.useEffect(() => {
21022
+ if (activeIndex && activeIndex !== currentIndex) {
21023
+ setCurrentIndex(activeIndex);
21024
+ }
21025
+ }, [activeIndex]);
21026
+ const transitions = useTransition([currentIndex], {
21027
+ keys: null,
21028
+ exitBeforeEnter: true,
21029
+ from: { transform: 'translate3d(100%,0,0)' },
21030
+ enter: { transform: 'translate3d(0%,0,0)' },
21031
+ leave: { transform: 'translate3d(0%,0,0)' },
21032
+ });
21033
+ const onBackClick = () => {
21034
+ if (currentIndex === 0 && !continuous) {
21035
+ return;
21036
+ }
21037
+ changeSlide((currentIndex - 1) % carouselItems.length);
21038
+ };
21039
+ const onForwardClick = () => {
21040
+ if (currentIndex === carouselItems.length - 1 && !continuous) {
21041
+ return;
21042
+ }
21043
+ changeSlide((currentIndex + 1) % carouselItems.length);
21044
+ };
21045
+ return (React.createElement("div", { "data-testid": testId, className: `tw-flex tw-flex-col tw-items-center tw-justify-center tw-w-full ${extraClassNames}` },
21046
+ React.createElement("div", { className: "tw-flex tw-items-center tw-w-full tw-h-max tw-gap-1" },
21047
+ showArrows && (React.createElement(Button, { icon: prevIcon, size: "lg", variant: "no-border", testId: "carousel-prev", extraClassNames: `${currentIndex === 0 && !continuous ? 'tw-invisible' : ''} ${iconExtraClassNames} tw-animate-fadeIn`, onClick: onBackClick })),
21048
+ transitions((style, i) => (React.createElement(animated.div, { "data-testid": `${testId}-${currentIndex}`, style: style }, carouselItems[currentIndex]))),
21049
+ showArrows && (React.createElement(Button, { icon: nextIcon, testId: "carousel-next", size: "lg", variant: "no-border", extraClassNames: `${currentIndex === carouselItems.length - 1 && !continuous ? 'tw-invisible' : ''} ${iconExtraClassNames} tw-animate-fadeIn`, onClick: onForwardClick }))),
21050
+ showIndicators && (React.createElement("div", { className: "tw-flex tw-gap-1 tw-mt-2" }, carouselItems.map((_, i) => (React.createElement("div", { key: i, className: `tw-w-2 tw-h-2 tw-rounded-full tw-cursor-pointer ${i === currentIndex ? 'tw-bg-sq-color-dark' : 'tw-bg-sq-darkish-gray'}`, onClick: () => changeSlide(i) })))))));
21051
+ };
21052
+
20736
21053
  exports.Accordion = Accordion;
20737
21054
  exports.Alert = Alert;
20738
21055
  exports.Button = Button;
20739
21056
  exports.ButtonGroup = ButtonGroup;
20740
21057
  exports.ButtonWithDropdown = ButtonWithDropdown;
20741
21058
  exports.ButtonWithPopover = ButtonWithPopover;
21059
+ exports.Carousel = Carousel;
20742
21060
  exports.Checkbox = Checkbox;
20743
21061
  exports.Collapse = Collapse;
20744
21062
  exports.Icon = Icon;