@flamingo-stack/openframe-frontend-core 0.0.734 → 0.0.736

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 (95) hide show
  1. package/dist/build/export-map.json +1 -1
  2. package/dist/{chunk-XKB7YGQM.cjs → chunk-77SD7RXY.cjs} +18 -6
  3. package/dist/{chunk-FA5SMA7L.cjs → chunk-7V2KP2TB.cjs} +4 -4
  4. package/dist/{chunk-KSXZABGH.cjs → chunk-BDF3FNOC.cjs} +38 -38
  5. package/dist/{chunk-3NANWZO3.cjs → chunk-BL5GOCHP.cjs} +14 -14
  6. package/dist/{chunk-DHIISS4W.cjs → chunk-EJOXXJJB.cjs} +62 -10
  7. package/dist/{chunk-TLQQP2EL.cjs → chunk-EX2GYIGW.cjs} +6 -6
  8. package/dist/{chunk-JRC3KXKV.cjs → chunk-FTGVG6FW.cjs} +30 -30
  9. package/dist/{chunk-4Q34V7MD.cjs → chunk-JGGSRCRD.cjs} +18 -18
  10. package/dist/{chunk-73ZW3265.cjs → chunk-JM54CNZZ.cjs} +85 -85
  11. package/dist/{chunk-HBUUCLQM.cjs → chunk-L535OD7V.cjs} +2 -2
  12. package/dist/{chunk-AOTOOGNX.cjs → chunk-LIH5OQLY.cjs} +3 -3
  13. package/dist/{chunk-OXJ57643.cjs → chunk-MGW5DO6P.cjs} +76 -17
  14. package/dist/{chunk-R65UD6BH.cjs → chunk-NONQUGRP.cjs} +14 -14
  15. package/dist/{chunk-4V672TEI.cjs → chunk-OJUMVOMP.cjs} +408 -355
  16. package/dist/{chunk-HAWQA5FI.cjs → chunk-OV6BGMEL.cjs} +151 -184
  17. package/dist/{chunk-5OGT7H2S.cjs → chunk-P6Z3EBPJ.cjs} +15 -15
  18. package/dist/{chunk-5DDFSGCE.cjs → chunk-SZFA2LQR.cjs} +33 -33
  19. package/dist/{chunk-EMBH2EJO.cjs → chunk-T27CVQBO.cjs} +65 -65
  20. package/dist/{chunk-CMUEFHM3.cjs → chunk-UBQSOB3X.cjs} +4 -4
  21. package/dist/{chunk-L7WJBJU7.cjs → chunk-URX2YTCL.cjs} +72 -72
  22. package/dist/{chunk-BP6R5WDW.cjs → chunk-VA7OMDZO.cjs} +41 -23
  23. package/dist/{chunk-D34BLEIR.cjs → chunk-VRNNIV5Y.cjs} +2 -2
  24. package/dist/{chunk-2OHBH6PS.cjs → chunk-XLSVQJBA.cjs} +44 -44
  25. package/dist/{chunk-OV7QQHLG.cjs → chunk-ZEX5WU35.cjs} +17 -17
  26. package/dist/{cloud-tenants-HU7YZD33.cjs → cloud-tenants-M55HMW6F.cjs} +8 -8
  27. package/dist/components/case-studies/index.cjs +20 -20
  28. package/dist/components/chat/entity-cards/program-card.d.ts.map +1 -1
  29. package/dist/components/chat/entity-cards/program-card.js +6 -6
  30. package/dist/components/chat/index.cjs +9 -9
  31. package/dist/components/contact/index.cjs +9 -9
  32. package/dist/components/docs/index.cjs +12 -12
  33. package/dist/components/embeds/index.cjs +9 -9
  34. package/dist/components/faq/index.cjs +9 -9
  35. package/dist/components/features/cards-strip.d.ts.map +1 -1
  36. package/dist/components/features/cards-strip.js +6 -2
  37. package/dist/components/features/index.cjs +8 -8
  38. package/dist/components/features/video-bites-strip.d.ts +6 -1
  39. package/dist/components/features/video-bites-strip.d.ts.map +1 -1
  40. package/dist/components/features/video-bites-strip.js +15 -3
  41. package/dist/components/help-center-pages/index.cjs +109 -109
  42. package/dist/components/index.cjs +68 -62
  43. package/dist/components/meeting-scheduler/index.cjs +35 -35
  44. package/dist/components/navigation/index.cjs +11 -11
  45. package/dist/components/onboarding-guides/index.cjs +11 -11
  46. package/dist/components/pagination.d.ts +9 -1
  47. package/dist/components/pagination.d.ts.map +1 -1
  48. package/dist/components/pagination.js +72 -17
  49. package/dist/components/product-demo/index.cjs +6 -6
  50. package/dist/components/related-content/index.cjs +5 -5
  51. package/dist/components/tickets/index.cjs +13 -13
  52. package/dist/components/ui/fade-preview.d.ts +5 -1
  53. package/dist/components/ui/fade-preview.d.ts.map +1 -1
  54. package/dist/components/ui/fade-preview.js +18 -1
  55. package/dist/components/ui/index.cjs +18 -12
  56. package/dist/components/ui/index.d.ts +1 -0
  57. package/dist/components/ui/index.d.ts.map +1 -1
  58. package/dist/components/ui/index.js +1 -0
  59. package/dist/components/ui/layout-hold.d.ts +31 -0
  60. package/dist/components/ui/layout-hold.d.ts.map +1 -0
  61. package/dist/components/ui/layout-hold.js +25 -0
  62. package/dist/components/ui/snap-carousel.d.ts.map +1 -1
  63. package/dist/components/ui/snap-carousel.js +28 -15
  64. package/dist/components/unified-pagination.d.ts.map +1 -1
  65. package/dist/components/unified-pagination.js +16 -4
  66. package/dist/{devices-CKLN7BHY.cjs → devices-WWJZFG6E.cjs} +9 -9
  67. package/dist/{embeddable-chat-FTAX4SVV.cjs → embeddable-chat-76IJ6TQZ.cjs} +72 -72
  68. package/dist/hooks/index.cjs +4 -2
  69. package/dist/hooks/ui/index.d.ts +1 -0
  70. package/dist/hooks/ui/index.d.ts.map +1 -1
  71. package/dist/hooks/ui/index.js +1 -0
  72. package/dist/hooks/ui/use-resumable-timeout.d.ts +22 -0
  73. package/dist/hooks/ui/use-resumable-timeout.d.ts.map +1 -0
  74. package/dist/hooks/ui/use-resumable-timeout.js +26 -0
  75. package/dist/hooks/use-scenario-player.d.ts +4 -3
  76. package/dist/hooks/use-scenario-player.d.ts.map +1 -1
  77. package/dist/hooks/use-scenario-player.js +17 -23
  78. package/dist/index.cjs +24 -16
  79. package/dist/{knowledge-NRLHSCC5.cjs → knowledge-F4YFQT3G.cjs} +9 -9
  80. package/dist/{logs-BR6SLYAF.cjs → logs-GAYEGEZM.cjs} +16 -16
  81. package/dist/{policies-MQRXBYG2.cjs → policies-ZOVJCJWX.cjs} +12 -12
  82. package/dist/{software-update-RUGIQP7N.cjs → software-update-H4YE5GMJ.cjs} +11 -11
  83. package/package.json +1 -1
  84. package/src/components/chat/entity-cards/program-card.tsx +9 -8
  85. package/src/components/features/cards-strip.tsx +11 -2
  86. package/src/components/features/video-bites-strip.tsx +22 -3
  87. package/src/components/pagination.tsx +117 -21
  88. package/src/components/ui/fade-preview.tsx +30 -1
  89. package/src/components/ui/index.ts +1 -0
  90. package/src/components/ui/layout-hold.tsx +55 -0
  91. package/src/components/ui/snap-carousel.tsx +36 -20
  92. package/src/components/unified-pagination.tsx +23 -7
  93. package/src/hooks/ui/index.ts +1 -0
  94. package/src/hooks/ui/use-resumable-timeout.ts +55 -0
  95. package/src/hooks/use-scenario-player.ts +28 -32
@@ -3,6 +3,7 @@ import { jsx, jsxs } from "react/jsx-runtime";
3
3
  import { useCallback, useEffect, useRef, useState } from "react";
4
4
  import { useAutoplay } from "../../hooks/ui/use-autoplay.js";
5
5
  import { useInView } from "../../hooks/ui/use-in-view.js";
6
+ import { useResumableTimeout } from "../../hooks/ui/use-resumable-timeout.js";
6
7
  import { cn } from "../../utils/cn.js";
7
8
  import { Chevron02LeftIcon } from "../icons-v2-generated/arrows/chevron-02-left-icon.js";
8
9
  import { Chevron02RightIcon } from "../icons-v2-generated/arrows/chevron-02-right-icon.js";
@@ -11,17 +12,26 @@ function SnapCarouselControlsSkeleton({ className }) {
11
12
  return /* @__PURE__ */ jsx("div", { "aria-hidden": true, className: cn(SNAP_CAROUSEL_CONTROLS_CLASS, "h-11", className) });
12
13
  }
13
14
  const GAP_PX = 12;
14
- function DotFill({ durationMs }) {
15
- const [full, setFull] = useState(false);
15
+ function DotFill({ durationMs, ranMs, running }) {
16
+ const [going, setGoing] = useState(false);
16
17
  useEffect(() => {
17
- const frame = requestAnimationFrame(() => setFull(true));
18
- return () => cancelAnimationFrame(frame);
19
- }, []);
18
+ if (!running) return void 0;
19
+ const frame = requestAnimationFrame(() => setGoing(true));
20
+ return () => {
21
+ cancelAnimationFrame(frame);
22
+ setGoing(false);
23
+ };
24
+ }, [running]);
25
+ const moving = running && going;
20
26
  return /* @__PURE__ */ jsx(
21
27
  "span",
22
28
  {
23
- className: "absolute inset-0 origin-left bg-ods-text-primary transition-transform ease-linear",
24
- style: { transform: full ? "scaleX(1)" : "scaleX(0)", transitionDuration: `${durationMs}ms` }
29
+ className: "absolute inset-0 origin-left bg-ods-text-primary ease-linear",
30
+ style: {
31
+ transform: `scaleX(${moving ? 1 : durationMs > 0 ? ranMs / durationMs : 0})`,
32
+ transitionProperty: moving ? "transform" : "none",
33
+ transitionDuration: `${Math.max(0, durationMs - ranMs)}ms`
34
+ }
25
35
  }
26
36
  );
27
37
  }
@@ -71,11 +81,13 @@ function SnapCarousel({
71
81
  }, [count, slideStep]);
72
82
  const canAutoAdvance = autoAdvanceMs > 0 && count > 1;
73
83
  const playing = auto.playing && canAutoAdvance;
74
- useEffect(() => {
75
- if (!playing) return void 0;
76
- const timer = setTimeout(() => goTo(index >= count - 1 ? 0 : index + 1), autoAdvanceMs);
77
- return () => clearTimeout(timer);
78
- }, [playing, index, count, autoAdvanceMs, goTo]);
84
+ const ranMs = useResumableTimeout({
85
+ running: playing,
86
+ durationMs: autoAdvanceMs,
87
+ resetKey: index,
88
+ onElapsed: () => goTo(index >= count - 1 ? 0 : index + 1)
89
+ });
90
+ const showsWait = canAutoAdvance && !auto.reducedMotion;
79
91
  const setRefs = useCallback(
80
92
  (node) => {
81
93
  trackRef.current = node;
@@ -116,10 +128,11 @@ function SnapCarousel({
116
128
  className: cn(
117
129
  "relative h-1.5 overflow-hidden rounded-full transition-[width] duration-200 motion-reduce:transition-none",
118
130
  dotIndex === index ? "w-6" : "w-1.5",
119
- dotIndex === index && !playing ? "bg-ods-text-primary" : "bg-ods-border"
131
+ // A carousel that never advances by itself marks its slide with a whole dot.
132
+ dotIndex === index && !showsWait ? "bg-ods-text-primary" : "bg-ods-border"
120
133
  ),
121
- children: dotIndex === index && playing && // Re-keyed per slide so the fill restarts from empty.
122
- /* @__PURE__ */ jsx(DotFill, { durationMs: autoAdvanceMs }, index)
134
+ children: dotIndex === index && showsWait && // Re-keyed per slide so a NEW slide starts from empty; a pause keeps its place.
135
+ /* @__PURE__ */ jsx(DotFill, { durationMs: autoAdvanceMs, ranMs, running: playing }, index)
123
136
  },
124
137
  dotIndex
125
138
  )) }),
@@ -1 +1 @@
1
- {"version":3,"file":"unified-pagination.d.ts","sourceRoot":"","sources":["../../src/components/unified-pagination.tsx"],"names":[],"mappings":"AAMA,UAAU,sBAAsB;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,wBAAgB,iBAAiB,CAAC,EAChC,WAAW,EACX,UAAU,EACV,YAAY,EACZ,SAA6C,EAC7C,OAAc,EACd,YAAoB,GACrB,EAAE,sBAAsB,sCAqDxB"}
1
+ {"version":3,"file":"unified-pagination.d.ts","sourceRoot":"","sources":["../../src/components/unified-pagination.tsx"],"names":[],"mappings":"AAMA,UAAU,sBAAsB;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,wBAAgB,iBAAiB,CAAC,EAChC,WAAW,EACX,UAAU,EACV,YAAY,EACZ,SAA6C,EAC7C,OAAc,EACd,YAAoB,GACrB,EAAE,sBAAsB,sCAqExB"}
@@ -13,15 +13,19 @@ function UnifiedPagination({
13
13
  }) {
14
14
  const searchParams = useSearchParams();
15
15
  const pathname = usePathname();
16
+ const pageHref = (page) => {
17
+ const params = new URLSearchParams(searchParams.toString());
18
+ if (page <= 1) params.delete("page");
19
+ else params.set("page", page.toString());
20
+ return withQuery(pathname, params.toString());
21
+ };
16
22
  const handlePageChange = (page) => {
17
23
  const currentScrollY = window.scrollY;
18
24
  if (onPageChange) {
19
25
  onPageChange(page);
20
26
  }
21
27
  if (syncUrl) {
22
- const params = new URLSearchParams(searchParams.toString());
23
- params.set("page", page.toString());
24
- window.history.replaceState(null, "", withQuery(pathname, params.toString()));
28
+ window.history.replaceState(null, "", pageHref(page));
25
29
  }
26
30
  setTimeout(() => {
27
31
  window.scrollTo({
@@ -35,7 +39,15 @@ function UnifiedPagination({
35
39
  return reserveSpace ? /* @__PURE__ */ jsx("div", { className, "aria-hidden": "true", children: /* @__PURE__ */ jsx("div", { className: "pointer-events-none invisible", children: /* @__PURE__ */ jsx(Pagination, { currentPage: 1, totalPages: 1, onPageChange: () => {
36
40
  } }) }) }) : null;
37
41
  }
38
- return /* @__PURE__ */ jsx("div", { className, children: /* @__PURE__ */ jsx(Pagination, { currentPage, totalPages, onPageChange: handlePageChange }) });
42
+ return /* @__PURE__ */ jsx("div", { className, children: /* @__PURE__ */ jsx(
43
+ Pagination,
44
+ {
45
+ currentPage,
46
+ totalPages,
47
+ onPageChange: handlePageChange,
48
+ getPageHref: syncUrl ? pageHref : void 0
49
+ }
50
+ ) });
39
51
  }
40
52
  export {
41
53
  UnifiedPagination
@@ -11,21 +11,21 @@ require('./chunk-KHXZFLIN.cjs');
11
11
 
12
12
 
13
13
 
14
- var _chunk4V672TEIcjs = require('./chunk-4V672TEI.cjs');
14
+ var _chunkOJUMVOMPcjs = require('./chunk-OJUMVOMP.cjs');
15
15
  require('./chunk-ZJNYWNCB.cjs');
16
16
  require('./chunk-3HPB4H4C.cjs');
17
17
  require('./chunk-L4ZNR5V7.cjs');
18
18
  require('./chunk-HQQE74RO.cjs');
19
19
  require('./chunk-DEY6XXGO.cjs');
20
- require('./chunk-BP6R5WDW.cjs');
20
+ require('./chunk-VA7OMDZO.cjs');
21
21
  require('./chunk-AAFW4STC.cjs');
22
22
  require('./chunk-24I6RFVU.cjs');
23
23
  require('./chunk-A6P6DHEZ.cjs');
24
24
  require('./chunk-MZ4KBSH7.cjs');
25
- require('./chunk-OXJ57643.cjs');
25
+ require('./chunk-MGW5DO6P.cjs');
26
26
  require('./chunk-YUMFVQIN.cjs');
27
- require('./chunk-EMBH2EJO.cjs');
28
- require('./chunk-HAWQA5FI.cjs');
27
+ require('./chunk-T27CVQBO.cjs');
28
+ require('./chunk-OV6BGMEL.cjs');
29
29
  require('./chunk-ZRYKDN2J.cjs');
30
30
  require('./chunk-HZJRERJW.cjs');
31
31
  require('./chunk-DUXLZPMJ.cjs');
@@ -1826,8 +1826,8 @@ require('./chunk-7DNL734S.cjs');
1826
1826
  require('./chunk-WWUSFOJ7.cjs');
1827
1827
  require('./chunk-SKI6NKOE.cjs');
1828
1828
  require('./chunk-EWPR7662.cjs');
1829
- require('./chunk-TLQQP2EL.cjs');
1830
- require('./chunk-DHIISS4W.cjs');
1829
+ require('./chunk-EX2GYIGW.cjs');
1830
+ require('./chunk-EJOXXJJB.cjs');
1831
1831
  require('./chunk-FCGLSWKR.cjs');
1832
1832
  require('./chunk-YADG5Q7C.cjs');
1833
1833
  require('./chunk-MYBTNOS6.cjs');
@@ -1865,14 +1865,14 @@ require('./chunk-3ATAYP36.cjs');
1865
1865
  // src/components/product-demo/screens/devices.tsx
1866
1866
  var _react = require('react');
1867
1867
  var _jsxruntime = require('react/jsx-runtime');
1868
- var TOOLBAR = { ..._chunk4V672TEIcjs.IDLE_DEVICES_TOOLBAR, searchValue: _chunkWFPCCBOMcjs.DEVICES_SEARCH_QUERY };
1868
+ var TOOLBAR = { ..._chunkOJUMVOMPcjs.IDLE_DEVICES_TOOLBAR, searchValue: _chunkWFPCCBOMcjs.DEVICES_SEARCH_QUERY };
1869
1869
  var NO_HEADER = /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _jsxruntime.Fragment, {});
1870
1870
  var HIDDEN_WHEN_COMPACT = ["organization"];
1871
1871
  function DevicesScreen({ compact = false }) {
1872
1872
  const cast = _chunkII4QMH26cjs.useProductDemoCast.call(void 0, );
1873
1873
  const fixture = _react.useMemo.call(void 0, () => _chunkWFPCCBOMcjs.buildWindowsDevicesFixture.call(void 0, cast), [cast]);
1874
1874
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-full bg-ods-bg", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1875
- _chunk4V672TEIcjs.DevicesPanelView,
1875
+ _chunkOJUMVOMPcjs.DevicesPanelView,
1876
1876
  {
1877
1877
  className: "p-[var(--spacing-system-l)]",
1878
1878
  headerSlot: NO_HEADER,