highsoft-ui 1.0.143 → 1.0.145

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 (65) hide show
  1. package/CLAUDE.md +48 -0
  2. package/dist/{Button-awCDIEXQ.js → Button-DIGyNR41.js} +1 -1
  3. package/dist/{ButtonGroup-Cwn0djAz.js → ButtonGroup-BSQzx-sZ.js} +1 -1
  4. package/dist/{Checkbox-CrF45NBl.js → Checkbox-wlH6EGWW.js} +1 -1
  5. package/dist/{CodeBlock-BIdeK3gz.js → CodeBlock-DtTAC5ru.js} +5 -5
  6. package/dist/{CookiePolicyModal-CTA02JGV.js → CookiePolicyModal-CGRXL0wR.js} +2 -2
  7. package/dist/{CopyCode-QiPNPCQN.js → CopyCode-_MHQorJS.js} +3 -3
  8. package/dist/{Dropdown-0Vn7yro7.js → Dropdown-CVyrHJiC.js} +1 -1
  9. package/dist/{Footer-BlCmsIDd.js → Footer-DW2asf8g.js} +7 -7
  10. package/dist/{FooterBottom-CF5ctutk.js → FooterBottom-CP0f9kYj.js} +1 -1
  11. package/dist/{FooterHelp-BthIJ2ye.js → FooterHelp-BxDXmtHK.js} +1 -1
  12. package/dist/{FooterLinks-BBOOTdRf.js → FooterLinks-BZwAVSm4.js} +2 -2
  13. package/dist/{Header-DY4mJxHm.js → Header-DQ1xi25C.js} +32 -32
  14. package/dist/{InputGrouped-DyxraUpb.js → InputGrouped-BE3zLov9.js} +13 -13
  15. package/dist/{Label-DdXaM1Bo.js → Label-C_KZM-FN.js} +1 -1
  16. package/dist/{NewsletterSignup-BMRnrbw8.js → NewsletterSignup-CJAI81M3.js} +2 -2
  17. package/dist/{Notification-DM31Uzfz.js → Notification-C2kN_ceR.js} +3 -3
  18. package/dist/{PrefPanel-DDD8R_-o.js → PrefPanel-BZUX1nfw.js} +11 -11
  19. package/dist/{RoadmapDetails-DsLtsnqg.js → RoadmapDetails-CfayA5CZ.js} +3 -3
  20. package/dist/{Search-CDOpNByw.js → Search-Cw_e1PyF.js} +10 -10
  21. package/dist/{SearchDropdown-D65lySm_.js → SearchDropdown-ECOTZ1Uf.js} +1 -1
  22. package/dist/VideoCover-BN8wnHpf.js +92 -0
  23. package/dist/VideoPlayer-CKjq7IRq.js +324 -0
  24. package/dist/VideoPlayerModal-DbP3OjSF.js +55 -0
  25. package/dist/YoutubeModal-D_ZHayEn.js +35 -0
  26. package/dist/components/Button/index.js +1 -1
  27. package/dist/components/ButtonGroup/index.js +1 -1
  28. package/dist/components/Checkbox/index.js +1 -1
  29. package/dist/components/CodeBlock/index.js +1 -1
  30. package/dist/components/CopyCode/index.js +1 -1
  31. package/dist/components/Dropdown/index.js +1 -1
  32. package/dist/components/Footer/CookiePolicyModal.js +1 -1
  33. package/dist/components/Footer/FooterBottom.js +1 -1
  34. package/dist/components/Footer/FooterHelp.js +1 -1
  35. package/dist/components/Footer/FooterLinks.js +1 -1
  36. package/dist/components/Footer/YoutubeModal.js +1 -1
  37. package/dist/components/Footer/index.js +1 -1
  38. package/dist/components/Header/index.js +1 -1
  39. package/dist/components/InputGrouped/index.js +1 -1
  40. package/dist/components/Label/index.js +1 -1
  41. package/dist/components/Modal/ModalContactFooter.js +2 -2
  42. package/dist/components/Modal/index.js +2 -2
  43. package/dist/components/NewsletterSignup/index.js +1 -1
  44. package/dist/components/Notification/index.js +1 -1
  45. package/dist/components/PrefPanel/index.js +1 -1
  46. package/dist/components/RoadmapDetails/index.js +1 -1
  47. package/dist/components/Search/index.js +1 -1
  48. package/dist/components/SearchDropdown/index.js +1 -1
  49. package/dist/components/Sidebar/Sidebar.js +1 -1
  50. package/dist/components/VideoCover/index.js +2 -0
  51. package/dist/components/VideoPlayer/VideoPlayerModal.js +2 -0
  52. package/dist/components/VideoPlayer/index.js +2 -0
  53. package/dist/components/VideoPlayer/useMediaEngine.js +275 -0
  54. package/dist/{create-element-CWTzyETe.js → create-element-WbENDceu.js} +1 -1
  55. package/dist/{esm-VMwHsplm.js → esm-B0YmMAXt.js} +90 -20
  56. package/dist/highsoft-ui.css +1 -1
  57. package/dist/lib/components/VideoCover/index.d.ts +75 -0
  58. package/dist/lib/components/VideoPlayer/VideoPlayerModal.d.ts +27 -0
  59. package/dist/lib/components/VideoPlayer/index.d.ts +43 -0
  60. package/dist/lib/components/VideoPlayer/useMediaEngine.d.ts +44 -0
  61. package/dist/lib/main.d.ts +6 -0
  62. package/dist/main.js +32 -29
  63. package/dist/{prism-light-B3yrtgki.js → prism-light-C4xXs3Qn.js} +1 -1
  64. package/package.json +1 -1
  65. package/dist/YoutubeModal-CZgbaRB6.js +0 -92
package/CLAUDE.md CHANGED
@@ -316,6 +316,54 @@ const a = 2 // [!code ++]`} />
316
316
  <Notification variant="danger" title="Error" message="Something went wrong" />
317
317
  ```
318
318
 
319
+ ### VideoPlayer
320
+ Sutro-inspired media player with a brand-accent scrubber, floating volume, auto-hiding chrome, and fullscreen. One custom control bar drives **self-hosted files, YouTube and Vimeo** — provider SDKs load lazily and their branded start screens are masked with an unbranded thumbnail until first play.
321
+ ```tsx
322
+ <VideoPlayer src="/promo.mp4" poster="/promo.jpg" />
323
+ <VideoPlayer src="https://youtu.be/aqz-KE-bpKQ" /> // driven via the YouTube IFrame API
324
+ <VideoPlayer src="https://vimeo.com/76979871" autoPlay muted />
325
+ <VideoPlayer sources={[{ src: '/v.webm', type: 'video/webm' }, { src: '/v.mp4', type: 'video/mp4' }]} />
326
+ ```
327
+ - **`src`** (or **`sources`**): self-hosted URL, or a YouTube/Vimeo link (auto-detected)
328
+ - **`poster`, `muted`, `autoPlay`, `loop`, `playsInline`, `preload`**: standard video props (`autoPlay` needs `muted`)
329
+ - **`aspectRatio`** (default `'16 / 9'`), **`radius`** (default `16`)
330
+ - **`accentGradient`**: scrubber/volume fill — defaults to the brand color; accepts any CSS color or gradient
331
+ - Keyboard: space/`k` play, `f` fullscreen, `m` mute, arrows seek; forwards a ref to the underlying `<video>`
332
+ - **Accessibility:** labelled `role="region"` (with an `sr-only` name); scrubber + volume are `role="slider"` with `aria-valuemin/max/now/valuetext`; mute exposes `aria-pressed`; decorative layers are `aria-hidden`; controls respect `prefers-reduced-motion`.
333
+
334
+ ### VideoCover
335
+ Chrome-less background/cover video — autoplays muted, loops, and stretches to fill its box like `object-fit: cover` on an image. No controls, no engine, no provider SDKs; self-hosted `<video>` only. Built-in lazy loading + fade-in, an overlay slot for `children`, and optional hover zoom.
336
+ ```tsx
337
+ // Fill any sized box (hero background, tile). Size the parent.
338
+ <div style={{ height: 220 }}>
339
+ <VideoCover src="/loop.webm" />
340
+ </div>
341
+
342
+ // Overlay content on top (interactive; video stays click-through)
343
+ <VideoCover sources={[{ src: '/loop.webm', type: 'video/webm' }]} hoverZoom>
344
+ <button>Watch the film</button>
345
+ </VideoCover>
346
+ ```
347
+ - **`fit`**: `'cover'` (default) | `'contain'` | `'fill'`
348
+ - **`lazy`** (default `true`): defer load until near viewport via `IntersectionObserver`, then fade in
349
+ - **`hoverZoom`**: zoom the video slightly on hover (preview-tile affordance)
350
+ - **`reducedMotion`**: `boolean | 'no-animation' | 'skip-to-end'`. Defaults to the user's `prefers-reduced-motion` setting — when on, the video doesn't autoplay and shows one static frame (first frame for `'no-animation'`/`true`, last for `'skip-to-end'`). Pass `false` to force normal playback, or a value to force a mode.
351
+ - **`autoPlay`/`loop`/`muted`** default `true`; **`aspectRatio`**, **`radius`**, **`poster`**
352
+ - **`children`**: overlay content rendered above the video
353
+ - **Accessibility:** decorative by default (`role="presentation"`, `aria-hidden`) — pass `aria-label` to expose it as `role="img"`; honors `prefers-reduced-motion` (see `reducedMotion`); the video/poster are `pointer-events: none` so overlay `children` and the parent stay clickable.
354
+
355
+ ### VideoPlayerModal
356
+ Lightbox wrapping `VideoPlayer` in a Radix dialog. The player mounts on open (autoplay + SDKs kick in then) and unmounts on close.
357
+ ```tsx
358
+ <VideoPlayerModal
359
+ src="https://vimeo.com/76979871"
360
+ title="Product overview"
361
+ trigger={<Button variant="brand">Watch video</Button>}
362
+ />
363
+ ```
364
+ - Accepts all **`VideoPlayer`** props, plus **`trigger`**, **`title`**, **`maxWidth`**, controlled **`open`/`onOpenChange`**
365
+ - **Accessibility:** the Radix `Dialog` provides a focus trap, `Esc` to close, focus return to the trigger, and `aria-modal`; the dialog has a visually-hidden `title` and a labelled close button.
366
+
319
367
  ### Sidebar (SidebarLayout, Sidebar, NavItem, NavGroup, …)
320
368
  A composable, resizable sidebar-navigation shell for docs/app layouts. The
321
369
  `<SidebarLayout>` is a two-column grid that owns the resize width and the mobile
@@ -1,5 +1,5 @@
1
1
  import { t as e } from "./clsx-BWCAbrjV.js";
2
- import { w as t } from "./esm-VMwHsplm.js";
2
+ import { k as t } from "./esm-B0YmMAXt.js";
3
3
  import { forwardRef as n } from "react";
4
4
  import { jsx as r, jsxs as i } from "react/jsx-runtime";
5
5
  var a = {
@@ -1,5 +1,5 @@
1
1
  import { t as e } from "./clsx-BWCAbrjV.js";
2
- import { t } from "./Button-awCDIEXQ.js";
2
+ import { t } from "./Button-DIGyNR41.js";
3
3
  import { useEffect as n, useState as r } from "react";
4
4
  import { jsx as i } from "react/jsx-runtime";
5
5
  var a = {
@@ -1,5 +1,5 @@
1
1
  import { t as e } from "./clsx-BWCAbrjV.js";
2
- import { C as t } from "./esm-VMwHsplm.js";
2
+ import { O as t } from "./esm-B0YmMAXt.js";
3
3
  import { createContext as n, useCallback as r, useContext as i, useEffect as a, useId as o, useRef as s, useState as c } from "react";
4
4
  import { jsx as l, jsxs as u } from "react/jsx-runtime";
5
5
  var d = {
@@ -1,7 +1,7 @@
1
1
  import { r as e, s as t } from "./utils-K9S_6_Eq.js";
2
2
  import { t as n } from "./clsx-BWCAbrjV.js";
3
- import { P as r, R as i } from "./esm-VMwHsplm.js";
4
- import { t as a } from "./Button-awCDIEXQ.js";
3
+ import { U as r, z as i } from "./esm-B0YmMAXt.js";
4
+ import { t as a } from "./Button-DIGyNR41.js";
5
5
  import { t as o } from "./FrameworkIcon-Ds6WrxO0.js";
6
6
  import { Fragment as s, forwardRef as c, useCallback as l, useEffect as u, useMemo as d, useState as f } from "react";
7
7
  import { jsx as p, jsxs as m } from "react/jsx-runtime";
@@ -22,8 +22,8 @@ var h = {
22
22
  }, g = null;
23
23
  function _() {
24
24
  return g ||= Promise.all([
25
- import("./prism-light-B3yrtgki.js"),
26
- import("./create-element-CWTzyETe.js").then((e) => e.n),
25
+ import("./prism-light-C4xXs3Qn.js"),
26
+ import("./create-element-WbENDceu.js").then((e) => e.n),
27
27
  import("./jsx-B57trbk8.js"),
28
28
  import("./tsx-CJFgwLf7.js"),
29
29
  import("./json-Bfzk2Msc.js"),
@@ -195,7 +195,7 @@ var C = {}, w = ({ children: e }) => /* @__PURE__ */ p("pre", {
195
195
  }), /* @__PURE__ */ p(a, {
196
196
  variant: B ? "success" : "transparent",
197
197
  size: 100,
198
- iconRight: p(B ? i : r, {}),
198
+ iconRight: p(B ? r : i, {}),
199
199
  onClick: U,
200
200
  "aria-label": B ? "Copied" : A,
201
201
  className: h.copyBtn,
@@ -1,5 +1,5 @@
1
- import { t as e } from "./esm-VMwHsplm.js";
2
- import { t } from "./Button-awCDIEXQ.js";
1
+ import { t as e } from "./esm-B0YmMAXt.js";
2
+ import { t } from "./Button-DIGyNR41.js";
3
3
  import { a as n, i as r, n as i, o as a, r as o, s, t as c } from "./dist-f0z6DapB.js";
4
4
  import { useEffect as l, useRef as u, useState as d } from "react";
5
5
  import { jsx as f, jsxs as p } from "react/jsx-runtime";
@@ -1,7 +1,7 @@
1
1
  import { r as e, s as t } from "./utils-K9S_6_Eq.js";
2
2
  import { t as n } from "./clsx-BWCAbrjV.js";
3
- import { P as r, R as i } from "./esm-VMwHsplm.js";
4
- import { t as a } from "./Button-awCDIEXQ.js";
3
+ import { U as r, z as i } from "./esm-B0YmMAXt.js";
4
+ import { t as a } from "./Button-DIGyNR41.js";
5
5
  import { forwardRef as o, useCallback as s } from "react";
6
6
  import { jsx as c, jsxs as l } from "react/jsx-runtime";
7
7
  var u = {
@@ -26,7 +26,7 @@ var u = {
26
26
  }), /* @__PURE__ */ c(a, {
27
27
  variant: x ? "success" : "soft",
28
28
  size: 200,
29
- iconLeft: c(x ? i : r, {}),
29
+ iconLeft: c(x ? r : i, {}),
30
30
  onClick: (e) => {
31
31
  e.stopPropagation(), S();
32
32
  },
@@ -1,5 +1,5 @@
1
1
  import { t as e } from "./clsx-BWCAbrjV.js";
2
- import { R as t } from "./esm-VMwHsplm.js";
2
+ import { U as t } from "./esm-B0YmMAXt.js";
3
3
  import { t as n } from "./Icon-VeXJMj8Q.js";
4
4
  import { _ as r, a as i, c as a, d as o, g as s, h as c, i as l, l as u, m as d, n as f, o as p, p as m, r as h, t as g, u as _, v, y } from "./es2015-DWa0ZZ7A.js";
5
5
  import { a as ee, i as b, n as te, r as x, t as S } from "./dist-CE9LFbij.js";
@@ -1,14 +1,14 @@
1
1
  import { r as e } from "./utils-K9S_6_Eq.js";
2
- import { F as t, R as n } from "./esm-VMwHsplm.js";
3
- import { t as r } from "./Button-awCDIEXQ.js";
2
+ import { B as t, U as n } from "./esm-B0YmMAXt.js";
3
+ import { t as r } from "./Button-DIGyNR41.js";
4
4
  import { t as i } from "./Container-BDssaLig.js";
5
5
  import { t as a } from "./DiscordInvite-CLYxexdH.js";
6
6
  import { t as o } from "./Logo-Bz0G2G-k.js";
7
- import { t as s } from "./NewsletterSignup-BMRnrbw8.js";
8
- import { t as c } from "./FooterBottom-CF5ctutk.js";
9
- import { t as l } from "./FooterHelp-BthIJ2ye.js";
10
- import { t as u } from "./FooterLinks-BBOOTdRf.js";
11
- import { t as d } from "./YoutubeModal-CZgbaRB6.js";
7
+ import { t as s } from "./NewsletterSignup-CJAI81M3.js";
8
+ import { t as c } from "./FooterBottom-CP0f9kYj.js";
9
+ import { t as l } from "./FooterHelp-BxDXmtHK.js";
10
+ import { t as u } from "./FooterLinks-BZwAVSm4.js";
11
+ import { t as d } from "./YoutubeModal-D_ZHayEn.js";
12
12
  import { jsx as f, jsxs as p } from "react/jsx-runtime";
13
13
  var m = {
14
14
  discordCard: "_4W4F3q_discordCard",
@@ -1,7 +1,7 @@
1
1
  import { a as e, t } from "./utils-K9S_6_Eq.js";
2
2
  import { a as n, c as r, i, n as a, o, r as s, s as c, t as l } from "./fa-B95RwBpz.js";
3
3
  import { t as u } from "./Typography-AvvBRu-u.js";
4
- import { t as d } from "./CookiePolicyModal-CTA02JGV.js";
4
+ import { t as d } from "./CookiePolicyModal-CGRXL0wR.js";
5
5
  import { Fragment as f, jsx as p, jsxs as m } from "react/jsx-runtime";
6
6
  //#region node_modules/react-icons/fa6/index.mjs
7
7
  function h(e) {
@@ -1,5 +1,5 @@
1
1
  import { a as e, t } from "./utils-K9S_6_Eq.js";
2
- import { f as n, s as r } from "./esm-VMwHsplm.js";
2
+ import { h as n, u as r } from "./esm-B0YmMAXt.js";
3
3
  import { t as i } from "./Icon-VeXJMj8Q.js";
4
4
  import { o as a, r as o } from "./fa-B95RwBpz.js";
5
5
  import { t as s } from "./Typography-AvvBRu-u.js";
@@ -1,8 +1,8 @@
1
1
  import { t as e } from "./clsx-BWCAbrjV.js";
2
- import { T as t } from "./esm-VMwHsplm.js";
2
+ import { A as t } from "./esm-B0YmMAXt.js";
3
3
  import { t as n } from "./Icon-VeXJMj8Q.js";
4
4
  import { t as r } from "./Typography-AvvBRu-u.js";
5
- import { t as i } from "./Label-DdXaM1Bo.js";
5
+ import { t as i } from "./Label-C_KZM-FN.js";
6
6
  import a from "./components/icons/MadeInNorway.js";
7
7
  import { jsx as o, jsxs as s } from "react/jsx-runtime";
8
8
  var c = {
@@ -1,13 +1,13 @@
1
1
  import { a as e, d as t, i as n, o as r, u as i } from "./utils-K9S_6_Eq.js";
2
2
  import { t as a } from "./clsx-BWCAbrjV.js";
3
- import { V as o, W as s, b as c, c as l, g as u, k as d, l as f, r as p, t as m, x as h, z as g } from "./esm-VMwHsplm.js";
4
- import { t as _ } from "./Button-awCDIEXQ.js";
3
+ import { K as o, P as s, T as c, W as l, Y as u, d, f, o as p, t as m, w as h, y as g } from "./esm-B0YmMAXt.js";
4
+ import { t as _ } from "./Button-DIGyNR41.js";
5
5
  import { t as v } from "./Container-BDssaLig.js";
6
6
  import { t as y } from "./Logo-Bz0G2G-k.js";
7
- import { t as b } from "./PrefPanel-DDD8R_-o.js";
8
- import { t as x } from "./Search-CDOpNByw.js";
9
- import { t as S } from "./Label-DdXaM1Bo.js";
10
- import { t as C } from "./Notification-DM31Uzfz.js";
7
+ import { t as b } from "./PrefPanel-BZUX1nfw.js";
8
+ import { t as x } from "./Search-Cw_e1PyF.js";
9
+ import { t as S } from "./Label-C_KZM-FN.js";
10
+ import { t as C } from "./Notification-C2kN_ceR.js";
11
11
  import { useEffect as w, useRef as T, useState as E } from "react";
12
12
  import { Fragment as D, jsx as O, jsxs as k } from "react/jsx-runtime";
13
13
  var A = {
@@ -75,22 +75,22 @@ var A = {
75
75
  {
76
76
  title: "Products",
77
77
  url: "https://www.highcharts.com/products/",
78
- icon: /* @__PURE__ */ O(g, {})
78
+ icon: /* @__PURE__ */ O(l, {})
79
79
  },
80
80
  {
81
81
  title: "Demos",
82
82
  url: "https://www.highcharts.com/demo",
83
- icon: /* @__PURE__ */ O(u, {})
83
+ icon: /* @__PURE__ */ O(g, {})
84
84
  },
85
85
  {
86
86
  title: "Support",
87
87
  url: "https://www.highcharts.com/support/",
88
- icon: /* @__PURE__ */ O(c, {})
88
+ icon: /* @__PURE__ */ O(h, {})
89
89
  },
90
90
  {
91
91
  title: "Resources",
92
92
  url: "https://www.highcharts.com/resources/",
93
- icon: /* @__PURE__ */ O(d, {})
93
+ icon: /* @__PURE__ */ O(s, {})
94
94
  },
95
95
  {
96
96
  title: "Pricing",
@@ -100,7 +100,7 @@ var A = {
100
100
  {
101
101
  title: "Blog",
102
102
  url: "https://www.highcharts.com/blog/home/",
103
- icon: /* @__PURE__ */ O(s, {})
103
+ icon: /* @__PURE__ */ O(u, {})
104
104
  }
105
105
  ];
106
106
  function B(e, t) {
@@ -193,17 +193,17 @@ function Y() {
193
193
  e && R(M, e);
194
194
  }, [e]), null;
195
195
  }
196
- function X({ subItems: t, children: r, notifications: o = J, link: s = "a", host: c = "https://www.highcharts.com", pathname: u, cssVariable: d, position: g = "sticky" }) {
196
+ function X({ subItems: t, children: r, notifications: o = J, link: s = "a", host: l = "https://www.highcharts.com", pathname: u, cssVariable: h, position: g = "sticky" }) {
197
197
  let S = e("(max-width: 374px)"), w = e("(max-width: 849px)"), M = e("(max-width: 1300px)"), N = G(t), P = T(null), [F, L] = E(!1), [V, H] = E([]);
198
198
  n(() => {
199
199
  let e = P.current;
200
200
  if (!e) return;
201
201
  let n = t?.length ? N ? U : W : 0, r = 82 + V.length * 48 + n, i = -(82 + V.length * 48);
202
- if (g === "static") return e.style.transform = "", d && document.documentElement.style.setProperty("--header-bottom", `${r}px`), () => {
203
- e.style.transform = "", d && document.documentElement.style.removeProperty("--header-bottom");
202
+ if (g === "static") return e.style.transform = "", h && document.documentElement.style.setProperty("--header-bottom", `${r}px`), () => {
203
+ e.style.transform = "", h && document.documentElement.style.removeProperty("--header-bottom");
204
204
  };
205
205
  let a = window.scrollY, o = 0, s = null, c = null, l = () => {
206
- c = null, !(!e || s === o) && (e.style.transform = `translate3d(0, ${o}px, 0)`, d && document.documentElement.style.setProperty("--header-bottom", `${r + o}px`), s = o);
206
+ c = null, !(!e || s === o) && (e.style.transform = `translate3d(0, ${o}px, 0)`, h && document.documentElement.style.setProperty("--header-bottom", `${r + o}px`), s = o);
207
207
  };
208
208
  l();
209
209
  let u = () => {
@@ -211,10 +211,10 @@ function X({ subItems: t, children: r, notifications: o = J, link: s = "a", host
211
211
  a = e, o = Math.min(0, Math.max(i, o - t)), c === null && (c = window.requestAnimationFrame(l));
212
212
  };
213
213
  return window.addEventListener("scroll", u, { passive: !0 }), () => {
214
- window.removeEventListener("scroll", u), c !== null && cancelAnimationFrame(c), e.style.transform = "", d && document.documentElement.style.removeProperty("--header-bottom");
214
+ window.removeEventListener("scroll", u), c !== null && cancelAnimationFrame(c), e.style.transform = "", h && document.documentElement.style.removeProperty("--header-bottom");
215
215
  };
216
216
  }, [
217
- d,
217
+ h,
218
218
  N,
219
219
  V.length,
220
220
  g,
@@ -223,7 +223,7 @@ function X({ subItems: t, children: r, notifications: o = J, link: s = "a", host
223
223
  if (!o.length) return;
224
224
  let e = I();
225
225
  H(e ? o.filter((t) => !t.id || !e.closed.includes(t.id)) : o);
226
- }, [c, o]);
226
+ }, [l, o]);
227
227
  let q = (e) => {
228
228
  if (e.preventDefault(), !(e.nativeEvent instanceof KeyboardEvent) || e.nativeEvent.code === "Enter" || e.nativeEvent.code === "Space") {
229
229
  let e = document.querySelector("main");
@@ -266,7 +266,7 @@ function X({ subItems: t, children: r, notifications: o = J, link: s = "a", host
266
266
  }),
267
267
  /* @__PURE__ */ O(s, {
268
268
  className: A.logo,
269
- href: B("https://www.highcharts.com/", c),
269
+ href: B("https://www.highcharts.com/", l),
270
270
  children: /* @__PURE__ */ O(y, { showText: !M || w && !S })
271
271
  }),
272
272
  /* @__PURE__ */ O("ul", {
@@ -275,7 +275,7 @@ function X({ subItems: t, children: r, notifications: o = J, link: s = "a", host
275
275
  variant: "plain",
276
276
  size: 300,
277
277
  as: s,
278
- href: B(t, c),
278
+ href: B(t, l),
279
279
  children: e
280
280
  }) }, n))
281
281
  }),
@@ -285,11 +285,11 @@ function X({ subItems: t, children: r, notifications: o = J, link: s = "a", host
285
285
  /* @__PURE__ */ O("li", { children: /* @__PURE__ */ k(_, {
286
286
  variant: "transparent",
287
287
  as: s,
288
- href: B("https://www.highcharts.com/chat/gpt/", c),
288
+ href: B("https://www.highcharts.com/chat/gpt/", l),
289
289
  children: [/* @__PURE__ */ O("span", {
290
290
  className: A.gpt,
291
291
  children: "Highcharts Assist"
292
- }), /* @__PURE__ */ O(l, {})]
292
+ }), /* @__PURE__ */ O(d, {})]
293
293
  }) }),
294
294
  /* @__PURE__ */ O("li", { children: /* @__PURE__ */ O(x, {}) }),
295
295
  /* @__PURE__ */ O("li", { children: /* @__PURE__ */ O(b, {}) }),
@@ -297,7 +297,7 @@ function X({ subItems: t, children: r, notifications: o = J, link: s = "a", host
297
297
  className: A.cta,
298
298
  variant: "success",
299
299
  as: s,
300
- href: B("https://shop.highcharts.com/", c),
300
+ href: B("https://shop.highcharts.com/", l),
301
301
  "aria-label": "Buy Now",
302
302
  children: [/* @__PURE__ */ O(f, {}), "Buy Now"]
303
303
  }) }),
@@ -305,14 +305,14 @@ function X({ subItems: t, children: r, notifications: o = J, link: s = "a", host
305
305
  className: A.cta,
306
306
  variant: "brand",
307
307
  as: s,
308
- href: B("https://www.highcharts.com/download/", c),
308
+ href: B("https://www.highcharts.com/download/", l),
309
309
  children: [/* @__PURE__ */ O(p, {}), "Try for Free"]
310
310
  }) }),
311
311
  /* @__PURE__ */ O("li", { children: /* @__PURE__ */ k(_, {
312
312
  variant: F ? "soft" : "transparent",
313
313
  className: A.menu,
314
314
  onClick: X,
315
- children: [F ? "Close" : "Menu", O(F ? m : h, {})]
315
+ children: [F ? "Close" : "Menu", O(F ? m : c, {})]
316
316
  }) })
317
317
  ]
318
318
  })
@@ -322,7 +322,7 @@ function X({ subItems: t, children: r, notifications: o = J, link: s = "a", host
322
322
  !!t?.length && /* @__PURE__ */ O(K, {
323
323
  items: t,
324
324
  link: s,
325
- host: c,
325
+ host: l,
326
326
  pathname: u
327
327
  }),
328
328
  r
@@ -337,7 +337,7 @@ function X({ subItems: t, children: r, notifications: o = J, link: s = "a", host
337
337
  className: A.container,
338
338
  children: [/* @__PURE__ */ O(s, {
339
339
  className: A.logo,
340
- href: B("https://www.highcharts.com/", c),
340
+ href: B("https://www.highcharts.com/", l),
341
341
  children: /* @__PURE__ */ O(y, { showText: !S })
342
342
  }), /* @__PURE__ */ k("ul", {
343
343
  className: A.buttons,
@@ -345,11 +345,11 @@ function X({ subItems: t, children: r, notifications: o = J, link: s = "a", host
345
345
  /* @__PURE__ */ O("li", { children: /* @__PURE__ */ k(_, {
346
346
  variant: "transparent",
347
347
  as: s,
348
- href: B("https://www.highcharts.com/chat/gpt/", c),
348
+ href: B("https://www.highcharts.com/chat/gpt/", l),
349
349
  children: [/* @__PURE__ */ O("span", {
350
350
  className: A.gpt,
351
351
  children: "Highcharts Assist"
352
- }), /* @__PURE__ */ O(l, {})]
352
+ }), /* @__PURE__ */ O(d, {})]
353
353
  }) }),
354
354
  /* @__PURE__ */ O("li", { children: /* @__PURE__ */ O(x, {}) }),
355
355
  /* @__PURE__ */ O("li", { children: /* @__PURE__ */ O(b, {}) })
@@ -362,13 +362,13 @@ function X({ subItems: t, children: r, notifications: o = J, link: s = "a", host
362
362
  variant: "brand",
363
363
  fullWidth: !0,
364
364
  as: s,
365
- href: B("https://shop.highcharts.com/", c),
365
+ href: B("https://shop.highcharts.com/", l),
366
366
  children: [/* @__PURE__ */ O(f, {}), "Buy Now"]
367
367
  }) }), /* @__PURE__ */ O("li", { children: /* @__PURE__ */ k(_, {
368
368
  variant: "success",
369
369
  fullWidth: !0,
370
370
  as: s,
371
- href: B("https://www.highcharts.com/download/", c),
371
+ href: B("https://www.highcharts.com/download/", l),
372
372
  children: [/* @__PURE__ */ O(p, {}), "Try for Free"]
373
373
  }) })]
374
374
  }),
@@ -379,7 +379,7 @@ function X({ subItems: t, children: r, notifications: o = J, link: s = "a", host
379
379
  size: 500,
380
380
  fullWidth: !0,
381
381
  as: s,
382
- href: B(t, c),
382
+ href: B(t, l),
383
383
  children: [n, e]
384
384
  }) }, r))
385
385
  })
@@ -1,6 +1,6 @@
1
1
  import { t as e } from "./clsx-BWCAbrjV.js";
2
- import { I as t, M as n, j as r } from "./esm-VMwHsplm.js";
3
- import { t as i } from "./Button-awCDIEXQ.js";
2
+ import { I as t, L as n, V as r } from "./esm-B0YmMAXt.js";
3
+ import { t as i } from "./Button-DIGyNR41.js";
4
4
  import { forwardRef as a, useCallback as o, useEffect as s, useRef as c, useState as l } from "react";
5
5
  import { jsx as u, jsxs as d } from "react/jsx-runtime";
6
6
  var f = {
@@ -41,7 +41,7 @@ function m({ children: t, className: n }) {
41
41
  children: t
42
42
  });
43
43
  }
44
- var h = a(({ label: t, required: a = !1, helpText: p, showHelpText: m = !1, labelIcon: h, iconRight: g, button: _, hasError: v = !1, success: y = !1, disabled: b = !1, className: x, wrapperClassName: S, type: C, onFocus: w, onBlur: T, onChange: E, value: D, defaultValue: O, ...k }, A) => {
44
+ var h = a(({ label: r, required: a = !1, helpText: p, showHelpText: m = !1, labelIcon: h, iconRight: g, button: _, hasError: v = !1, success: y = !1, disabled: b = !1, className: x, wrapperClassName: S, type: C, onFocus: w, onBlur: T, onChange: E, value: D, defaultValue: O, ...k }, A) => {
45
45
  let j = c(null), M = A || j, [N, P] = l(!1), [F, I] = l(!1), [L, R] = l(!1), z = C === "password", [B, V] = l(O === void 0 ? "" : String(O)), H = D !== void 0, U = H ? String(D).length > 0 : B.length > 0, W = o((e) => {
46
46
  P(!0), w?.(e);
47
47
  }, [w]), G = o((e) => {
@@ -81,14 +81,14 @@ var h = a(({ label: t, required: a = !1, helpText: p, showHelpText: m = !1, labe
81
81
  children: [/* @__PURE__ */ d("div", {
82
82
  className: f.leftContent,
83
83
  children: [
84
- t && /* @__PURE__ */ d("div", {
84
+ r && /* @__PURE__ */ d("div", {
85
85
  className: f.labelRow,
86
86
  children: [h && /* @__PURE__ */ u("span", {
87
87
  className: f.labelIcon,
88
88
  children: h
89
89
  }), /* @__PURE__ */ d("span", {
90
90
  className: f.label,
91
- children: [t, a && /* @__PURE__ */ u("span", {
91
+ children: [r, a && /* @__PURE__ */ u("span", {
92
92
  className: f.required,
93
93
  children: " *"
94
94
  })]
@@ -99,7 +99,7 @@ var h = a(({ label: t, required: a = !1, helpText: p, showHelpText: m = !1, labe
99
99
  type: Y,
100
100
  className: e(f.inputElement, x),
101
101
  disabled: b,
102
- "aria-label": t,
102
+ "aria-label": r,
103
103
  "aria-required": a,
104
104
  "aria-invalid": v,
105
105
  value: D,
@@ -130,7 +130,7 @@ var h = a(({ label: t, required: a = !1, helpText: p, showHelpText: m = !1, labe
130
130
  e.stopPropagation(), R((e) => !e);
131
131
  },
132
132
  "aria-label": L ? "Hide password" : "Show password",
133
- children: u(L ? r : n, {})
133
+ children: u(L ? t : n, {})
134
134
  }),
135
135
  _
136
136
  ]
@@ -139,7 +139,7 @@ var h = a(({ label: t, required: a = !1, helpText: p, showHelpText: m = !1, labe
139
139
  });
140
140
  });
141
141
  h.displayName = "InputGrouped";
142
- var g = a(({ label: n, required: r = !1, helpText: i, showHelpText: a = !1, labelIcon: s, hasError: p = !1, success: m = !1, disabled: h = !1, className: g, wrapperClassName: _, placeholder: v, children: y, onFocus: b, onBlur: x, onChange: S, value: C, defaultValue: w, ...T }, E) => {
142
+ var g = a(({ label: t, required: n = !1, helpText: i, showHelpText: a = !1, labelIcon: s, hasError: p = !1, success: m = !1, disabled: h = !1, className: g, wrapperClassName: _, placeholder: v, children: y, onFocus: b, onBlur: x, onChange: S, value: C, defaultValue: w, ...T }, E) => {
143
143
  let D = c(null), O = E || D, [k, A] = l(!1), [j, M] = l(!1), [N, P] = l(w === void 0 ? "" : String(w)), F = C !== void 0, I = F ? String(C).length > 0 : N.length > 0, L = o((e) => {
144
144
  A(!0), b?.(e);
145
145
  }, [b]), R = o((e) => {
@@ -172,14 +172,14 @@ var g = a(({ label: n, required: r = !1, helpText: i, showHelpText: a = !1, labe
172
172
  children: [/* @__PURE__ */ d("div", {
173
173
  className: f.leftContent,
174
174
  children: [
175
- n && /* @__PURE__ */ d("div", {
175
+ t && /* @__PURE__ */ d("div", {
176
176
  className: f.labelRow,
177
177
  children: [s && /* @__PURE__ */ u("span", {
178
178
  className: f.labelIcon,
179
179
  children: s
180
180
  }), /* @__PURE__ */ d("span", {
181
181
  className: f.label,
182
- children: [n, r && /* @__PURE__ */ u("span", {
182
+ children: [t, n && /* @__PURE__ */ u("span", {
183
183
  className: f.required,
184
184
  children: " *"
185
185
  })]
@@ -189,8 +189,8 @@ var g = a(({ label: n, required: r = !1, helpText: i, showHelpText: a = !1, labe
189
189
  ref: O,
190
190
  className: e(f.inputElement, f.selectElement, g),
191
191
  disabled: h,
192
- "aria-label": n,
193
- "aria-required": r,
192
+ "aria-label": t,
193
+ "aria-required": n,
194
194
  "aria-invalid": p,
195
195
  value: C,
196
196
  defaultValue: w,
@@ -214,7 +214,7 @@ var g = a(({ label: n, required: r = !1, helpText: i, showHelpText: a = !1, labe
214
214
  className: f.rightContent,
215
215
  children: /* @__PURE__ */ u("span", {
216
216
  className: e(f.iconRight, f.chevron),
217
- children: /* @__PURE__ */ u(t, {})
217
+ children: /* @__PURE__ */ u(r, {})
218
218
  })
219
219
  })]
220
220
  })
@@ -1,5 +1,5 @@
1
1
  import { t as e } from "./clsx-BWCAbrjV.js";
2
- import { o as t } from "./esm-VMwHsplm.js";
2
+ import { l as t } from "./esm-B0YmMAXt.js";
3
3
  import { jsx as n, jsxs as r } from "react/jsx-runtime";
4
4
  var i = {
5
5
  attention: "UwHMOW_attention",
@@ -1,7 +1,7 @@
1
1
  import { l as e } from "./utils-K9S_6_Eq.js";
2
2
  import { t } from "./clsx-BWCAbrjV.js";
3
- import { L as n, O as r, W as i } from "./esm-VMwHsplm.js";
4
- import { t as a } from "./Button-awCDIEXQ.js";
3
+ import { H as n, N as r, Y as i } from "./esm-B0YmMAXt.js";
4
+ import { t as a } from "./Button-DIGyNR41.js";
5
5
  import { t as o } from "./Icon-VeXJMj8Q.js";
6
6
  import { t as s } from "./Link-CYR92_U0.js";
7
7
  import { t as c } from "./InputSolo-DUdKtZjX.js";
@@ -1,8 +1,8 @@
1
1
  import { t as e } from "./clsx-BWCAbrjV.js";
2
- import { t } from "./esm-VMwHsplm.js";
3
- import { t as n } from "./Button-awCDIEXQ.js";
2
+ import { t } from "./esm-B0YmMAXt.js";
3
+ import { t as n } from "./Button-DIGyNR41.js";
4
4
  import { t as r } from "./Container-BDssaLig.js";
5
- import { t as i } from "./Label-DdXaM1Bo.js";
5
+ import { t as i } from "./Label-C_KZM-FN.js";
6
6
  import { useEffect as a, useState as o } from "react";
7
7
  import { Fragment as s, jsx as c, jsxs as l } from "react/jsx-runtime";
8
8
  var u = {
@@ -1,7 +1,7 @@
1
1
  import { d as e, o as t } from "./utils-K9S_6_Eq.js";
2
2
  import { t as n } from "./clsx-BWCAbrjV.js";
3
- import { R as r, a as i, d as a, v as o, y as s } from "./esm-VMwHsplm.js";
4
- import { t as c } from "./Button-awCDIEXQ.js";
3
+ import { S as r, U as i, c as a, m as o, x as s } from "./esm-B0YmMAXt.js";
4
+ import { t as c } from "./Button-DIGyNR41.js";
5
5
  import { _ as l, a as u, d, h as f, i as p, l as m, m as h, n as ee, o as g, p as _, r as v, t as y, u as b, y as x } from "./es2015-DWa0ZZ7A.js";
6
6
  import { a as S, i as te, n as C, r as w, t as T } from "./dist-B04QoImH.js";
7
7
  import * as E from "react";
@@ -194,26 +194,26 @@ var oe = P, se = I, ce = R, le = H, ue = W, Q = {
194
194
  };
195
195
  //#endregion
196
196
  //#region lib/components/PrefPanel/index.tsx
197
- function $({ children: e, id: t, ...i }) {
197
+ function $({ children: e, id: t, ...r }) {
198
198
  return /* @__PURE__ */ k(D, { children: [/* @__PURE__ */ O("input", {
199
199
  type: "radio",
200
200
  id: t,
201
201
  className: n(Q.radioInput, "sr-only"),
202
- ...i
202
+ ...r
203
203
  }), /* @__PURE__ */ k("label", {
204
204
  htmlFor: t,
205
205
  className: Q.radio,
206
- children: [e, /* @__PURE__ */ O(r, { className: Q.check })]
206
+ children: [e, /* @__PURE__ */ O(i, { className: Q.check })]
207
207
  })] });
208
208
  }
209
209
  function de() {
210
- let { theme: n, systemTheme: r, setTheme: l } = e(), u = t();
210
+ let { theme: n, systemTheme: i, setTheme: l } = e(), u = t();
211
211
  return /* @__PURE__ */ k(oe, { children: [/* @__PURE__ */ O(ce, {
212
212
  asChild: !0,
213
213
  children: /* @__PURE__ */ k(c, {
214
214
  variant: "transparent",
215
215
  "aria-label": "Preferences",
216
- children: [/* @__PURE__ */ O(a, {}), /* @__PURE__ */ O(se, { className: Q.anchor })]
216
+ children: [/* @__PURE__ */ O(o, {}), /* @__PURE__ */ O(se, { className: Q.anchor })]
217
217
  })
218
218
  }), /* @__PURE__ */ O(le, { children: /* @__PURE__ */ O(ue, {
219
219
  sideOffset: 8,
@@ -227,9 +227,9 @@ function de() {
227
227
  checked: n === "system",
228
228
  onChange: () => l("system"),
229
229
  children: [
230
- /* @__PURE__ */ O(s, {}),
230
+ /* @__PURE__ */ O(r, {}),
231
231
  "Auto (",
232
- r,
232
+ i,
233
233
  ")"
234
234
  ]
235
235
  }),
@@ -238,14 +238,14 @@ function de() {
238
238
  name: "theme",
239
239
  checked: n === "light",
240
240
  onChange: () => l("light"),
241
- children: [/* @__PURE__ */ O(i, {}), "Light"]
241
+ children: [/* @__PURE__ */ O(a, {}), "Light"]
242
242
  }),
243
243
  /* @__PURE__ */ k($, {
244
244
  id: "dark",
245
245
  name: "theme",
246
246
  checked: n === "dark",
247
247
  onChange: () => l("dark"),
248
- children: [/* @__PURE__ */ O(o, {}), "Dark"]
248
+ children: [/* @__PURE__ */ O(s, {}), "Dark"]
249
249
  })
250
250
  ] })
251
251
  }) })] });
@@ -1,6 +1,6 @@
1
1
  import { t as e } from "./clsx-BWCAbrjV.js";
2
- import { E as t, I as n, S as r, i } from "./esm-VMwHsplm.js";
3
- import { t as a } from "./Button-awCDIEXQ.js";
2
+ import { D as t, V as n, j as r, s as i } from "./esm-B0YmMAXt.js";
3
+ import { t as a } from "./Button-DIGyNR41.js";
4
4
  import { t as o } from "./Typography-AvvBRu-u.js";
5
5
  import { useEffect as s, useRef as c } from "react";
6
6
  import { jsx as l, jsxs as u } from "react/jsx-runtime";
@@ -68,7 +68,7 @@ function f({ title: f, items: p, primaryAction: m, meta: h, open: g, defaultOpen
68
68
  (m || h) && /* @__PURE__ */ u("div", {
69
69
  className: d.actions,
70
70
  children: [m && ((e) => {
71
- let n = e.variant ?? "neutral", i = l(n === "soft" ? t : r, {}), o = e.icon === null ? void 0 : e.icon === void 0 ? i : e.icon;
71
+ let n = e.variant ?? "neutral", i = l(n === "soft" ? r : t, {}), o = e.icon === null ? void 0 : e.icon === void 0 ? i : e.icon;
72
72
  return /* @__PURE__ */ l(a, {
73
73
  variant: n,
74
74
  size: 200,