@flamingo-stack/openframe-frontend-core 0.0.731 → 0.0.732

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 (132) hide show
  1. package/dist/build/export-map.json +1 -1
  2. package/dist/{chunk-2UNQJVYN.cjs → chunk-22ZK7BA3.cjs} +1221 -1006
  3. package/dist/{chunk-Y4QRK3CB.cjs → chunk-3BLBWZ6A.cjs} +4 -4
  4. package/dist/{chunk-ZV6473Z4.cjs → chunk-5HMGK3N6.cjs} +18 -18
  5. package/dist/{chunk-HI7EFAFQ.cjs → chunk-5HSMTSHU.cjs} +28 -28
  6. package/dist/{chunk-XDBHGWFH.cjs → chunk-6HHUU56Y.cjs} +16 -16
  7. package/dist/{chunk-A4HNF4MP.cjs → chunk-6KDGIOLP.cjs} +80 -80
  8. package/dist/chunk-AEVGCB3Y.cjs +417 -0
  9. package/dist/{chunk-CLILWI6O.cjs → chunk-BDTX2OEE.cjs} +32 -32
  10. package/dist/{chunk-YDGBRI3Y.cjs → chunk-BS4EZZCN.cjs} +13 -13
  11. package/dist/{chunk-JPZ4Y6X3.cjs → chunk-C5NERNE6.cjs} +89 -89
  12. package/dist/{chunk-YUXRIR45.cjs → chunk-CC3LINHF.cjs} +95 -47
  13. package/dist/{chunk-53XZ6MJ5.cjs → chunk-CUF3IYIB.cjs} +28 -28
  14. package/dist/{chunk-FKKUQK4C.cjs → chunk-G37LT2ID.cjs} +5 -1
  15. package/dist/chunk-HELVKMRG.cjs +28 -0
  16. package/dist/{chunk-HEOD765R.cjs → chunk-HH4BMYDX.cjs} +23 -370
  17. package/dist/{chunk-4YPV4OI4.cjs → chunk-I46MQ4R5.cjs} +80 -80
  18. package/dist/{chunk-RAHRDJBP.cjs → chunk-MEDDKM3A.cjs} +2 -2
  19. package/dist/{chunk-3SWLL4IM.cjs → chunk-MVZ6XFPK.cjs} +6 -6
  20. package/dist/{chunk-TH4N726A.cjs → chunk-N466AJGN.cjs} +17 -17
  21. package/dist/{chunk-QP6QS3YU.cjs → chunk-OI7VCXYU.cjs} +48 -50
  22. package/dist/{chunk-25H2SZH7.cjs → chunk-OJ3XU3YZ.cjs} +4 -4
  23. package/dist/{chunk-JK75ZZP3.cjs → chunk-PRWBVIWW.cjs} +43 -43
  24. package/dist/chunk-PX7FY655.cjs +114 -0
  25. package/dist/{chunk-HLIJ3U2T.cjs → chunk-QMTC3BK3.cjs} +13 -11
  26. package/dist/{chunk-YJFN2W7A.cjs → chunk-RIXGLS5Y.cjs} +3 -3
  27. package/dist/{chunk-BFHLGEJK.cjs → chunk-SJRR745G.cjs} +61 -58
  28. package/dist/{chunk-6V4GEE55.cjs → chunk-TLDCSTTQ.cjs} +8 -8
  29. package/dist/{chunk-RBOIGJYF.cjs → chunk-XOQ2UUVS.cjs} +4 -4
  30. package/dist/{chunk-32ENYVFA.cjs → chunk-YGKVHSNQ.cjs} +42 -42
  31. package/dist/{chunk-HY2KTQSL.cjs → chunk-ZWMPAFGB.cjs} +183 -183
  32. package/dist/{cloud-tenants-SC4FNAC2.cjs → cloud-tenants-ILRE74JY.cjs} +16 -16
  33. package/dist/components/agent-identity.d.ts +8 -0
  34. package/dist/components/agent-identity.d.ts.map +1 -1
  35. package/dist/components/agent-identity.js +13 -1
  36. package/dist/components/case-studies/index.cjs +29 -29
  37. package/dist/components/chat/index.cjs +11 -11
  38. package/dist/components/contact/index.cjs +17 -17
  39. package/dist/components/docs/index.cjs +20 -20
  40. package/dist/components/embeds/index.cjs +17 -17
  41. package/dist/components/faq/index.cjs +17 -17
  42. package/dist/components/features/index.cjs +16 -16
  43. package/dist/components/help-center-pages/index.cjs +127 -127
  44. package/dist/components/index.cjs +79 -72
  45. package/dist/components/meeting-scheduler/index.cjs +47 -47
  46. package/dist/components/navigation/index.cjs +19 -19
  47. package/dist/components/onboarding-guides/index.cjs +19 -19
  48. package/dist/components/product-demo/index.cjs +8 -8
  49. package/dist/components/product-demo/screens/remote-desktop-picture.d.ts.map +1 -1
  50. package/dist/components/product-demo/screens/remote-desktop-picture.js +2 -1
  51. package/dist/components/related-content/index.cjs +6 -6
  52. package/dist/components/tickets/index.cjs +20 -20
  53. package/dist/components/ui/device-wallpaper.d.ts +7 -0
  54. package/dist/components/ui/device-wallpaper.d.ts.map +1 -0
  55. package/dist/components/ui/device-wallpaper.js +5 -0
  56. package/dist/components/ui/feature-list.d.ts +9 -4
  57. package/dist/components/ui/feature-list.d.ts.map +1 -1
  58. package/dist/components/ui/feature-list.js +26 -35
  59. package/dist/components/ui/index.cjs +22 -16
  60. package/dist/components/ui/index.d.ts +3 -1
  61. package/dist/components/ui/index.d.ts.map +1 -1
  62. package/dist/components/ui/index.js +3 -1
  63. package/dist/components/ui/notification-stack.d.ts +33 -0
  64. package/dist/components/ui/notification-stack.d.ts.map +1 -0
  65. package/dist/components/ui/notification-stack.js +78 -0
  66. package/dist/components/ui/numbered-step.d.ts +29 -0
  67. package/dist/components/ui/numbered-step.d.ts.map +1 -0
  68. package/dist/components/ui/numbered-step.js +57 -0
  69. package/dist/components/ui/phone-frame.d.ts +14 -9
  70. package/dist/components/ui/phone-frame.d.ts.map +1 -1
  71. package/dist/components/ui/phone-frame.js +50 -6
  72. package/dist/components/ui/phone-glyphs/lock-camera-glyph.d.ts +5 -0
  73. package/dist/components/ui/phone-glyphs/lock-camera-glyph.d.ts.map +1 -0
  74. package/dist/components/ui/phone-glyphs/lock-camera-glyph.js +14 -0
  75. package/dist/components/ui/phone-glyphs/lock-flashlight-glyph.d.ts +5 -0
  76. package/dist/components/ui/phone-glyphs/lock-flashlight-glyph.d.ts.map +1 -0
  77. package/dist/components/ui/phone-glyphs/lock-flashlight-glyph.js +14 -0
  78. package/dist/components/ui/phone-glyphs/status-bar-glyphs.d.ts +5 -0
  79. package/dist/components/ui/phone-glyphs/status-bar-glyphs.d.ts.map +1 -0
  80. package/dist/components/ui/phone-glyphs/status-bar-glyphs.js +68 -0
  81. package/dist/components/ui/snap-carousel.d.ts +5 -8
  82. package/dist/components/ui/snap-carousel.d.ts.map +1 -1
  83. package/dist/components/ui/snap-carousel.js +2 -27
  84. package/dist/components/ui/tab-navigation.d.ts +8 -1
  85. package/dist/components/ui/tab-navigation.d.ts.map +1 -1
  86. package/dist/components/ui/tab-navigation.js +30 -20
  87. package/dist/{devices-7MHSJNXS.cjs → devices-A6SFNGE4.cjs} +17 -17
  88. package/dist/{embeddable-chat-VPIG3F7E.cjs → embeddable-chat-BKPYNOIM.cjs} +80 -80
  89. package/dist/hooks/index.cjs +6 -6
  90. package/dist/hooks/ui/use-autoplay.d.ts +50 -13
  91. package/dist/hooks/ui/use-autoplay.d.ts.map +1 -1
  92. package/dist/hooks/ui/use-autoplay.js +76 -13
  93. package/dist/hooks/ui/use-in-view.d.ts +8 -0
  94. package/dist/hooks/ui/use-in-view.d.ts.map +1 -1
  95. package/dist/hooks/ui/use-in-view.js +21 -36
  96. package/dist/hooks/use-agent-identities.d.ts +6 -0
  97. package/dist/hooks/use-agent-identities.d.ts.map +1 -1
  98. package/dist/hooks/use-scenario-player.d.ts +26 -9
  99. package/dist/hooks/use-scenario-player.d.ts.map +1 -1
  100. package/dist/hooks/use-scenario-player.js +12 -9
  101. package/dist/index.cjs +51 -44
  102. package/dist/{knowledge-4DREGSOZ.cjs → knowledge-5ZCVKUYV.cjs} +17 -17
  103. package/dist/{logs-BWXNT2KP.cjs → logs-CL4OJASB.cjs} +24 -24
  104. package/dist/{policies-MGFUI23M.cjs → policies-7D44ZVS5.cjs} +20 -20
  105. package/dist/{remote-session-O6QGXV2N.cjs → remote-session-QB3CIZRM.cjs} +5 -4
  106. package/dist/{software-update-7LF7XEYC.cjs → software-update-AX6TZL26.cjs} +20 -20
  107. package/dist/{tickets-board-KNXK747O.cjs → tickets-board-7FAV2YWF.cjs} +10 -10
  108. package/package.json +1 -1
  109. package/src/components/agent-identity.tsx +20 -1
  110. package/src/components/product-demo/screens/remote-desktop-picture.tsx +2 -1
  111. package/src/components/ui/device-wallpaper.ts +7 -0
  112. package/src/components/ui/feature-list.tsx +24 -30
  113. package/src/components/ui/index.ts +3 -1
  114. package/src/components/ui/notification-stack.tsx +133 -0
  115. package/src/components/ui/numbered-step.tsx +81 -0
  116. package/src/components/ui/phone-frame.tsx +83 -19
  117. package/src/components/ui/phone-glyphs/lock-camera-glyph.tsx +14 -0
  118. package/src/components/ui/phone-glyphs/lock-flashlight-glyph.tsx +14 -0
  119. package/src/components/ui/phone-glyphs/status-bar-glyphs.tsx +45 -0
  120. package/src/components/ui/snap-carousel.tsx +6 -38
  121. package/src/components/ui/tab-navigation.tsx +49 -21
  122. package/src/hooks/ui/use-autoplay.ts +144 -27
  123. package/src/hooks/ui/use-in-view.ts +31 -38
  124. package/src/hooks/use-agent-identities.ts +6 -0
  125. package/src/hooks/use-scenario-player.ts +44 -20
  126. package/dist/chunk-2WXLQ5R5.cjs +0 -99
  127. package/dist/chunk-BE2WAMG5.cjs +0 -54
  128. package/dist/chunk-LCTDHLDL.cjs +0 -43
  129. package/dist/components/ui/playback-toggle.d.ts +0 -24
  130. package/dist/components/ui/playback-toggle.d.ts.map +0 -1
  131. package/dist/components/ui/playback-toggle.js +0 -32
  132. package/src/components/ui/playback-toggle.tsx +0 -53
@@ -130,7 +130,23 @@ const TabBar = memo(function TabBarImpl({
130
130
  const isPlaced = indicator.width > 0;
131
131
  const activeProgress = tabs.find((tab) => tab.id === activeTab)?.progress;
132
132
  const hasProgress = typeof activeProgress === "number";
133
- const progress = hasProgress ? Math.max(0, Math.min(1, activeProgress)) : 1;
133
+ const target = hasProgress ? Math.max(0, Math.min(1, activeProgress)) : 1;
134
+ const [run, setRun] = useState({ tab: null, progress: 0 });
135
+ const startsOver = hasProgress && (run.tab !== activeTab || target < run.progress);
136
+ if (hasProgress && !startsOver && run.progress !== target) setRun({ tab: activeTab, progress: target });
137
+ useEffect(() => {
138
+ if (!startsOver) return void 0;
139
+ let second = 0;
140
+ const first = requestAnimationFrame(() => {
141
+ second = requestAnimationFrame(() => setRun({ tab: activeTab, progress: target }));
142
+ });
143
+ return () => {
144
+ cancelAnimationFrame(first);
145
+ cancelAnimationFrame(second);
146
+ };
147
+ }, [startsOver, activeTab, target]);
148
+ const progress = startsOver ? 0 : target;
149
+ const activeAccent = tabs.find((tab) => tab.id === activeTab)?.accent;
134
150
  const indicatorStyle = {
135
151
  width: `${indicator.width * progress}px`,
136
152
  transform: `translateX(${indicator.left}px)`,
@@ -152,7 +168,7 @@ const TabBar = memo(function TabBarImpl({
152
168
  "div",
153
169
  {
154
170
  ref: scrollRef,
155
- className: "scrollbar-hide relative flex h-full items-center justify-start gap-[var(--spacing-system-xxs)] overflow-x-auto overflow-y-hidden",
171
+ className: "scrollbar-hide relative flex h-full items-center justify-start overflow-x-auto overflow-y-hidden",
156
172
  children: [
157
173
  tabs.map((tab) => {
158
174
  const isActive = activeTab === tab.id;
@@ -164,26 +180,19 @@ const TabBar = memo(function TabBarImpl({
164
180
  onClick: () => onTabChange(tab.id),
165
181
  "aria-label": tab.badge ? `${tab.label} (${tab.badge})` : void 0,
166
182
  className: cn(
167
- "relative flex shrink-0 cursor-pointer items-center gap-[var(--spacing-system-xxs)] p-[var(--spacing-system-m)]",
183
+ "group relative flex shrink-0 cursor-pointer items-center gap-[var(--spacing-system-xxs)] p-[var(--spacing-system-m)]",
168
184
  tabAlign === "start" ? "justify-start text-left" : "justify-center",
169
185
  // Named rather than `transition-all`: the only thing that moves
170
- // here is colour. `all` also made the browser re-check every
171
- // property each frame, including the background GRADIENT — which
172
- // never animated anyway, since the inactive state has no
173
- // background-image to interpolate from.
186
+ // here is colour.
174
187
  "border-none bg-transparent outline-none transition-colors duration-200",
175
188
  // `outline-none` above drops the browser's own focus ring, so
176
189
  // put one back or the strip is un-navigable by keyboard — you
177
190
  // can tab through it with nothing to show where you are. Inset,
178
- // so it stays within the button instead of overlapping the tab
179
- // sitting 4px away.
191
+ // so it stays within the button: the tabs touch.
180
192
  "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ods-focus",
181
193
  stretchTabs && "flex-1",
182
- tab.avatar && "gap-[var(--spacing-system-xsf)]",
183
- // Known limitation: ODS color vars hold hex values, so Tailwind
184
- // alpha modifiers (to-ods-accent/10) silently produce no CSS.
185
- // color-mix() accepts hex, so we derive the 10%-alpha stop from the token.
186
- isActive ? "bg-gradient-to-b from-transparent to-[color-mix(in_srgb,var(--color-accent-primary)_10%,transparent)]" : "hover:bg-gradient-to-b hover:from-transparent hover:to-[color-mix(in_srgb,var(--color-accent-primary)_10%,transparent)]"
194
+ tab.avatar && "gap-[var(--spacing-system-xsf)]"
195
+ // The open tab is marked by the underline alone: no surface of its own.
187
196
  ),
188
197
  children: [
189
198
  tab.avatar ? /* @__PURE__ */ jsxs("div", { className: "relative flex shrink-0 items-center justify-center", children: [
@@ -195,8 +204,9 @@ const TabBar = memo(function TabBarImpl({
195
204
  {
196
205
  className: cn(
197
206
  "h-4 w-4 transition-colors content-md:h-6 content-md:w-6",
198
- isActive ? "text-ods-accent" : "text-ods-text-secondary"
199
- )
207
+ isActive ? !tab.accent && "text-ods-accent" : "text-ods-text-secondary group-hover:text-ods-text-primary"
208
+ ),
209
+ style: isActive && tab.accent ? { color: tab.accent } : void 0
200
210
  }
201
211
  ),
202
212
  tab.indicator && /* @__PURE__ */ jsx(StatusDot, { indicator: tab.indicator, className: "absolute right-0 top-[-3px]" })
@@ -211,7 +221,7 @@ const TabBar = memo(function TabBarImpl({
211
221
  {
212
222
  className: cn(
213
223
  "whitespace-nowrap transition-colors text-h4",
214
- isActive ? "text-ods-text-primary" : "text-ods-text-secondary"
224
+ isActive ? "text-ods-text-primary" : "text-ods-text-secondary group-hover:text-ods-text-primary"
215
225
  ),
216
226
  children: tab.label
217
227
  }
@@ -252,11 +262,11 @@ const TabBar = memo(function TabBarImpl({
252
262
  "aria-hidden": true,
253
263
  "data-testid": "tab-navigation-underline",
254
264
  className: cn(
255
- "pointer-events-none absolute bottom-0 left-0 bg-ods-accent motion-reduce:transition-none",
256
- hasProgress ? "h-0.5" : "h-1",
265
+ "pointer-events-none absolute bottom-0 left-0 h-1 motion-reduce:transition-none",
266
+ !activeAccent && "bg-ods-accent",
257
267
  !hasProgress && shouldAnimateIndicator && "transition-[transform,width,opacity] duration-200 ease-out"
258
268
  ),
259
- style: indicatorStyle
269
+ style: activeAccent ? { ...indicatorStyle, backgroundColor: activeAccent } : indicatorStyle
260
270
  }
261
271
  )
262
272
  ]
@@ -11,22 +11,22 @@ require('./chunk-KHXZFLIN.cjs');
11
11
 
12
12
 
13
13
 
14
- var _chunk2UNQJVYNcjs = require('./chunk-2UNQJVYN.cjs');
15
- require('./chunk-HLIJ3U2T.cjs');
16
- require('./chunk-RAHRDJBP.cjs');
17
- require('./chunk-FKKUQK4C.cjs');
14
+ var _chunk22ZK7BA3cjs = require('./chunk-22ZK7BA3.cjs');
15
+ require('./chunk-QMTC3BK3.cjs');
16
+ require('./chunk-MEDDKM3A.cjs');
17
+ require('./chunk-G37LT2ID.cjs');
18
18
  require('./chunk-HQQE74RO.cjs');
19
19
  require('./chunk-DEY6XXGO.cjs');
20
- require('./chunk-BFHLGEJK.cjs');
20
+ require('./chunk-SJRR745G.cjs');
21
21
  require('./chunk-GID62YEN.cjs');
22
22
  require('./chunk-24I6RFVU.cjs');
23
23
  require('./chunk-A6P6DHEZ.cjs');
24
24
  require('./chunk-MZ4KBSH7.cjs');
25
25
  require('./chunk-OXJ57643.cjs');
26
26
  require('./chunk-YUMFVQIN.cjs');
27
- require('./chunk-A4HNF4MP.cjs');
28
- require('./chunk-HY2KTQSL.cjs');
29
- require('./chunk-HEOD765R.cjs');
27
+ require('./chunk-6KDGIOLP.cjs');
28
+ require('./chunk-ZWMPAFGB.cjs');
29
+ require('./chunk-HH4BMYDX.cjs');
30
30
  require('./chunk-HZJRERJW.cjs');
31
31
  require('./chunk-E3N24573.cjs');
32
32
  require('./chunk-MJGX357L.cjs');
@@ -1818,17 +1818,17 @@ require('./chunk-LMBYZITR.cjs');
1818
1818
  require('./chunk-TMVC7S2R.cjs');
1819
1819
  require('./chunk-IYHH5EIO.cjs');
1820
1820
  require('./chunk-XIBCMGBW.cjs');
1821
- require('./chunk-YJFN2W7A.cjs');
1822
- require('./chunk-YUXRIR45.cjs');
1823
- require('./chunk-2WXLQ5R5.cjs');
1821
+ require('./chunk-RIXGLS5Y.cjs');
1822
+ require('./chunk-CC3LINHF.cjs');
1823
+ require('./chunk-HELVKMRG.cjs');
1824
1824
  require('./chunk-JKX2C3I2.cjs');
1825
1825
  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-6V4GEE55.cjs');
1830
- require('./chunk-RBOIGJYF.cjs');
1831
- require('./chunk-BE2WAMG5.cjs');
1829
+ require('./chunk-TLDCSTTQ.cjs');
1830
+ require('./chunk-XOQ2UUVS.cjs');
1831
+ require('./chunk-AEVGCB3Y.cjs');
1832
1832
  require('./chunk-YADG5Q7C.cjs');
1833
1833
  require('./chunk-NYY25425.cjs');
1834
1834
  require('./chunk-KLXHCNDC.cjs');
@@ -1841,7 +1841,7 @@ require('./chunk-ORO54HDF.cjs');
1841
1841
  require('./chunk-RUHKTWGB.cjs');
1842
1842
  require('./chunk-BLH2SFOO.cjs');
1843
1843
  require('./chunk-EAY6ZUES.cjs');
1844
- require('./chunk-LCTDHLDL.cjs');
1844
+ require('./chunk-PX7FY655.cjs');
1845
1845
  require('./chunk-CW3ML76U.cjs');
1846
1846
  require('./chunk-7DUXR4HL.cjs');
1847
1847
  require('./chunk-MANNIJ42.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 = { ..._chunk2UNQJVYNcjs.IDLE_DEVICES_TOOLBAR, searchValue: _chunkWFPCCBOMcjs.DEVICES_SEARCH_QUERY };
1868
+ var TOOLBAR = { ..._chunk22ZK7BA3cjs.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
- _chunk2UNQJVYNcjs.DevicesPanelView,
1875
+ _chunk22ZK7BA3cjs.DevicesPanelView,
1876
1876
  {
1877
1877
  className: "p-[var(--spacing-system-l)]",
1878
1878
  headerSlot: NO_HEADER,