@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.esm.js CHANGED
@@ -18958,6 +18958,260 @@ function useSpring(props, deps) {
18958
18958
  );
18959
18959
  return isFn || arguments.length == 2 ? [values, ref] : values;
18960
18960
  }
18961
+ function useTransition(data, props, deps) {
18962
+ const propsFn = is.fun(props) && props;
18963
+ const {
18964
+ reset,
18965
+ sort,
18966
+ trail = 0,
18967
+ expires = true,
18968
+ exitBeforeEnter = false,
18969
+ onDestroyed,
18970
+ ref: propsRef,
18971
+ config: propsConfig
18972
+ } = propsFn ? propsFn() : props;
18973
+ const ref = useMemo(
18974
+ () => propsFn || arguments.length == 3 ? SpringRef() : void 0,
18975
+ []
18976
+ );
18977
+ const items = toArray(data);
18978
+ const transitions = [];
18979
+ const usedTransitions = useRef(null);
18980
+ const prevTransitions = reset ? null : usedTransitions.current;
18981
+ useIsomorphicLayoutEffect(() => {
18982
+ usedTransitions.current = transitions;
18983
+ });
18984
+ useOnce(() => {
18985
+ each(transitions, (t) => {
18986
+ ref?.add(t.ctrl);
18987
+ t.ctrl.ref = ref;
18988
+ });
18989
+ return () => {
18990
+ each(usedTransitions.current, (t) => {
18991
+ if (t.expired) {
18992
+ clearTimeout(t.expirationId);
18993
+ }
18994
+ detachRefs(t.ctrl, ref);
18995
+ t.ctrl.stop(true);
18996
+ });
18997
+ };
18998
+ });
18999
+ const keys = getKeys(items, propsFn ? propsFn() : props, prevTransitions);
19000
+ const expired = reset && usedTransitions.current || [];
19001
+ useIsomorphicLayoutEffect(
19002
+ () => each(expired, ({ ctrl, item, key }) => {
19003
+ detachRefs(ctrl, ref);
19004
+ callProp(onDestroyed, item, key);
19005
+ })
19006
+ );
19007
+ const reused = [];
19008
+ if (prevTransitions)
19009
+ each(prevTransitions, (t, i) => {
19010
+ if (t.expired) {
19011
+ clearTimeout(t.expirationId);
19012
+ expired.push(t);
19013
+ } else {
19014
+ i = reused[i] = keys.indexOf(t.key);
19015
+ if (~i)
19016
+ transitions[i] = t;
19017
+ }
19018
+ });
19019
+ each(items, (item, i) => {
19020
+ if (!transitions[i]) {
19021
+ transitions[i] = {
19022
+ key: keys[i],
19023
+ item,
19024
+ phase: "mount" /* MOUNT */,
19025
+ ctrl: new Controller()
19026
+ };
19027
+ transitions[i].ctrl.item = item;
19028
+ }
19029
+ });
19030
+ if (reused.length) {
19031
+ let i = -1;
19032
+ const { leave } = propsFn ? propsFn() : props;
19033
+ each(reused, (keyIndex, prevIndex) => {
19034
+ const t = prevTransitions[prevIndex];
19035
+ if (~keyIndex) {
19036
+ i = transitions.indexOf(t);
19037
+ transitions[i] = { ...t, item: items[keyIndex] };
19038
+ } else if (leave) {
19039
+ transitions.splice(++i, 0, t);
19040
+ }
19041
+ });
19042
+ }
19043
+ if (is.fun(sort)) {
19044
+ transitions.sort((a, b) => sort(a.item, b.item));
19045
+ }
19046
+ let delay = -trail;
19047
+ const forceUpdate = useForceUpdate();
19048
+ const defaultProps = getDefaultProps(props);
19049
+ const changes = /* @__PURE__ */ new Map();
19050
+ const exitingTransitions = useRef(/* @__PURE__ */ new Map());
19051
+ const forceChange = useRef(false);
19052
+ each(transitions, (t, i) => {
19053
+ const key = t.key;
19054
+ const prevPhase = t.phase;
19055
+ const p = propsFn ? propsFn() : props;
19056
+ let to2;
19057
+ let phase;
19058
+ const propsDelay = callProp(p.delay || 0, key);
19059
+ if (prevPhase == "mount" /* MOUNT */) {
19060
+ to2 = p.enter;
19061
+ phase = "enter" /* ENTER */;
19062
+ } else {
19063
+ const isLeave = keys.indexOf(key) < 0;
19064
+ if (prevPhase != "leave" /* LEAVE */) {
19065
+ if (isLeave) {
19066
+ to2 = p.leave;
19067
+ phase = "leave" /* LEAVE */;
19068
+ } else if (to2 = p.update) {
19069
+ phase = "update" /* UPDATE */;
19070
+ } else
19071
+ return;
19072
+ } else if (!isLeave) {
19073
+ to2 = p.enter;
19074
+ phase = "enter" /* ENTER */;
19075
+ } else
19076
+ return;
19077
+ }
19078
+ to2 = callProp(to2, t.item, i);
19079
+ to2 = is.obj(to2) ? inferTo(to2) : { to: to2 };
19080
+ if (!to2.config) {
19081
+ const config2 = propsConfig || defaultProps.config;
19082
+ to2.config = callProp(config2, t.item, i, phase);
19083
+ }
19084
+ delay += trail;
19085
+ const payload = {
19086
+ ...defaultProps,
19087
+ // we need to add our props.delay value you here.
19088
+ delay: propsDelay + delay,
19089
+ ref: propsRef,
19090
+ immediate: p.immediate,
19091
+ // This prevents implied resets.
19092
+ reset: false,
19093
+ // Merge any phase-specific props.
19094
+ ...to2
19095
+ };
19096
+ if (phase == "enter" /* ENTER */ && is.und(payload.from)) {
19097
+ const p2 = propsFn ? propsFn() : props;
19098
+ const from = is.und(p2.initial) || prevTransitions ? p2.from : p2.initial;
19099
+ payload.from = callProp(from, t.item, i);
19100
+ }
19101
+ const { onResolve } = payload;
19102
+ payload.onResolve = (result) => {
19103
+ callProp(onResolve, result);
19104
+ const transitions2 = usedTransitions.current;
19105
+ const t2 = transitions2.find((t3) => t3.key === key);
19106
+ if (!t2)
19107
+ return;
19108
+ if (result.cancelled && t2.phase != "update" /* UPDATE */) {
19109
+ return;
19110
+ }
19111
+ if (t2.ctrl.idle) {
19112
+ const idle = transitions2.every((t3) => t3.ctrl.idle);
19113
+ if (t2.phase == "leave" /* LEAVE */) {
19114
+ const expiry = callProp(expires, t2.item);
19115
+ if (expiry !== false) {
19116
+ const expiryMs = expiry === true ? 0 : expiry;
19117
+ t2.expired = true;
19118
+ if (!idle && expiryMs > 0) {
19119
+ if (expiryMs <= 2147483647)
19120
+ t2.expirationId = setTimeout(forceUpdate, expiryMs);
19121
+ return;
19122
+ }
19123
+ }
19124
+ }
19125
+ if (idle && transitions2.some((t3) => t3.expired)) {
19126
+ exitingTransitions.current.delete(t2);
19127
+ if (exitBeforeEnter) {
19128
+ forceChange.current = true;
19129
+ }
19130
+ forceUpdate();
19131
+ }
19132
+ }
19133
+ };
19134
+ const springs = getSprings(t.ctrl, payload);
19135
+ if (phase === "leave" /* LEAVE */ && exitBeforeEnter) {
19136
+ exitingTransitions.current.set(t, { phase, springs, payload });
19137
+ } else {
19138
+ changes.set(t, { phase, springs, payload });
19139
+ }
19140
+ });
19141
+ const context = useContext(SpringContext);
19142
+ const prevContext = usePrev(context);
19143
+ const hasContext = context !== prevContext && hasProps(context);
19144
+ useIsomorphicLayoutEffect(() => {
19145
+ if (hasContext) {
19146
+ each(transitions, (t) => {
19147
+ t.ctrl.start({ default: context });
19148
+ });
19149
+ }
19150
+ }, [context]);
19151
+ each(changes, (_, t) => {
19152
+ if (exitingTransitions.current.size) {
19153
+ const ind = transitions.findIndex((state) => state.key === t.key);
19154
+ transitions.splice(ind, 1);
19155
+ }
19156
+ });
19157
+ useIsomorphicLayoutEffect(
19158
+ () => {
19159
+ each(
19160
+ exitingTransitions.current.size ? exitingTransitions.current : changes,
19161
+ ({ phase, payload }, t) => {
19162
+ const { ctrl } = t;
19163
+ t.phase = phase;
19164
+ ref?.add(ctrl);
19165
+ if (hasContext && phase == "enter" /* ENTER */) {
19166
+ ctrl.start({ default: context });
19167
+ }
19168
+ if (payload) {
19169
+ replaceRef(ctrl, payload.ref);
19170
+ if ((ctrl.ref || ref) && !forceChange.current) {
19171
+ ctrl.update(payload);
19172
+ } else {
19173
+ ctrl.start(payload);
19174
+ if (forceChange.current) {
19175
+ forceChange.current = false;
19176
+ }
19177
+ }
19178
+ }
19179
+ }
19180
+ );
19181
+ },
19182
+ reset ? void 0 : deps
19183
+ );
19184
+ const renderTransitions = (render) => /* @__PURE__ */ React.createElement(React.Fragment, null, transitions.map((t, i) => {
19185
+ const { springs } = changes.get(t) || t.ctrl;
19186
+ const elem = render({ ...springs }, t.item, t, i);
19187
+ return elem && elem.type ? /* @__PURE__ */ React.createElement(
19188
+ elem.type,
19189
+ {
19190
+ ...elem.props,
19191
+ key: is.str(t.key) || is.num(t.key) ? t.key : t.ctrl.id,
19192
+ ref: elem.ref
19193
+ }
19194
+ ) : elem;
19195
+ }));
19196
+ return ref ? [renderTransitions, ref] : renderTransitions;
19197
+ }
19198
+ var nextKey = 1;
19199
+ function getKeys(items, { key, keys = key }, prevTransitions) {
19200
+ if (keys === null) {
19201
+ const reused = /* @__PURE__ */ new Set();
19202
+ return items.map((item) => {
19203
+ const t = prevTransitions && prevTransitions.find(
19204
+ (t2) => t2.item === item && t2.phase !== "leave" /* LEAVE */ && !reused.has(t2)
19205
+ );
19206
+ if (t) {
19207
+ reused.add(t);
19208
+ return t.key;
19209
+ }
19210
+ return nextKey++;
19211
+ });
19212
+ }
19213
+ return is.und(keys) ? items : is.fun(keys) ? items.map(keys) : toArray(keys);
19214
+ }
18961
19215
  var Interpolation = class extends FrameValue {
18962
19216
  constructor(source, args) {
18963
19217
  super();
@@ -20671,7 +20925,7 @@ const ProgressIndicator = (props) => {
20671
20925
  }, 100);
20672
20926
  return () => clearTimeout(timeout);
20673
20927
  }, [value]);
20674
- return (React__default.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: {
20928
+ return (React__default.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: {
20675
20929
  // Background color will default to the theme color if undefined
20676
20930
  backgroundColor: color ? color : undefined,
20677
20931
  animation: 'width 660ms forwards',
@@ -20713,5 +20967,68 @@ const ButtonGroup = (props) => {
20713
20967
  : ''} ${item.buttonProps.extraClassNames}`, onClick: () => onChange && onChange(item?.buttonProps?.value) })) : (React__default.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)))));
20714
20968
  };
20715
20969
 
20716
- export { Accordion, Alert, Button, ButtonGroup, ButtonWithDropdown, ButtonWithPopover, Checkbox, Collapse, Icon, InputGroup, Modal, ProgressBar, QTip, SeeqActionDropdown, Select, components as SelectCompoents, Slider, Tabs, TextArea, TextField, ToolbarButton, Tooltip };
20970
+ /**
20971
+ * Carousel:
20972
+ * - Easily create a carousel with custom slides.
20973
+ * - Supports automatic sliding, navigation arrows, and slide indicators.
20974
+ */
20975
+ 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 = [], }) => {
20976
+ const [currentIndex, setCurrentIndex] = useState(activeIndex);
20977
+ const changeSlide = (nextIndex) => {
20978
+ const newIndex = nextIndex % carouselItems.length;
20979
+ setCurrentIndex(newIndex);
20980
+ onSlide(newIndex, newIndex > currentIndex ? 'right' : 'left');
20981
+ };
20982
+ useEffect(() => {
20983
+ if (autoSlide) {
20984
+ const currentInterval = setInterval(() => {
20985
+ if (continuous) {
20986
+ setCurrentIndex((prevCurrentIndex) => {
20987
+ onSlide((prevCurrentIndex + 1) % carouselItems.length, (prevCurrentIndex + 1) % carouselItems.length > prevCurrentIndex ? 'right' : 'left');
20988
+ return (prevCurrentIndex + 1) % carouselItems.length;
20989
+ });
20990
+ }
20991
+ else if (currentIndex === carouselItems.length - 1) {
20992
+ clearInterval(currentInterval);
20993
+ }
20994
+ else {
20995
+ changeSlide(currentIndex + 1);
20996
+ }
20997
+ }, interval);
20998
+ return () => clearInterval(currentInterval);
20999
+ }
21000
+ }, [autoSlide]);
21001
+ useEffect(() => {
21002
+ if (activeIndex && activeIndex !== currentIndex) {
21003
+ setCurrentIndex(activeIndex);
21004
+ }
21005
+ }, [activeIndex]);
21006
+ const transitions = useTransition([currentIndex], {
21007
+ keys: null,
21008
+ exitBeforeEnter: true,
21009
+ from: { transform: 'translate3d(100%,0,0)' },
21010
+ enter: { transform: 'translate3d(0%,0,0)' },
21011
+ leave: { transform: 'translate3d(0%,0,0)' },
21012
+ });
21013
+ const onBackClick = () => {
21014
+ if (currentIndex === 0 && !continuous) {
21015
+ return;
21016
+ }
21017
+ changeSlide((currentIndex - 1) % carouselItems.length);
21018
+ };
21019
+ const onForwardClick = () => {
21020
+ if (currentIndex === carouselItems.length - 1 && !continuous) {
21021
+ return;
21022
+ }
21023
+ changeSlide((currentIndex + 1) % carouselItems.length);
21024
+ };
21025
+ return (React__default.createElement("div", { "data-testid": testId, className: `tw-flex tw-flex-col tw-items-center tw-justify-center tw-w-full ${extraClassNames}` },
21026
+ React__default.createElement("div", { className: "tw-flex tw-items-center tw-w-full tw-h-max tw-gap-1" },
21027
+ showArrows && (React__default.createElement(Button, { icon: prevIcon, size: "lg", variant: "no-border", testId: "carousel-prev", extraClassNames: `${currentIndex === 0 && !continuous ? 'tw-invisible' : ''} ${iconExtraClassNames} tw-animate-fadeIn`, onClick: onBackClick })),
21028
+ transitions((style, i) => (React__default.createElement(animated.div, { "data-testid": `${testId}-${currentIndex}`, style: style }, carouselItems[currentIndex]))),
21029
+ showArrows && (React__default.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 }))),
21030
+ showIndicators && (React__default.createElement("div", { className: "tw-flex tw-gap-1 tw-mt-2" }, carouselItems.map((_, i) => (React__default.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) })))))));
21031
+ };
21032
+
21033
+ export { Accordion, Alert, Button, ButtonGroup, ButtonWithDropdown, ButtonWithPopover, Carousel, Checkbox, Collapse, Icon, InputGroup, Modal, ProgressBar, QTip, SeeqActionDropdown, Select, components as SelectCompoents, Slider, Tabs, TextArea, TextField, ToolbarButton, Tooltip };
20717
21034
  //# sourceMappingURL=index.esm.js.map