highsoft-ui 1.0.144 → 1.0.146
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.
- package/CLAUDE.md +50 -0
- package/dist/{Button-awCDIEXQ.js → Button-DIGyNR41.js} +1 -1
- package/dist/{ButtonGroup-Cwn0djAz.js → ButtonGroup-BSQzx-sZ.js} +1 -1
- package/dist/{Checkbox-CrF45NBl.js → Checkbox-wlH6EGWW.js} +1 -1
- package/dist/{CodeBlock-BIdeK3gz.js → CodeBlock-DtTAC5ru.js} +5 -5
- package/dist/{CookiePolicyModal-CTA02JGV.js → CookiePolicyModal-CGRXL0wR.js} +2 -2
- package/dist/{CopyCode-QiPNPCQN.js → CopyCode-_MHQorJS.js} +3 -3
- package/dist/{Dropdown-0Vn7yro7.js → Dropdown-CVyrHJiC.js} +1 -1
- package/dist/{Footer-BlCmsIDd.js → Footer-DW2asf8g.js} +7 -7
- package/dist/{FooterBottom-CF5ctutk.js → FooterBottom-CP0f9kYj.js} +1 -1
- package/dist/{FooterHelp-BthIJ2ye.js → FooterHelp-BxDXmtHK.js} +1 -1
- package/dist/{FooterLinks-BBOOTdRf.js → FooterLinks-BZwAVSm4.js} +2 -2
- package/dist/{Header-DY4mJxHm.js → Header-DQ1xi25C.js} +32 -32
- package/dist/{InputGrouped-DyxraUpb.js → InputGrouped-BE3zLov9.js} +13 -13
- package/dist/{Label-DdXaM1Bo.js → Label-C_KZM-FN.js} +1 -1
- package/dist/{NewsletterSignup-BMRnrbw8.js → NewsletterSignup-CJAI81M3.js} +2 -2
- package/dist/{Notification-DM31Uzfz.js → Notification-C2kN_ceR.js} +3 -3
- package/dist/{PrefPanel-DDD8R_-o.js → PrefPanel-BZUX1nfw.js} +11 -11
- package/dist/{RoadmapDetails-DsLtsnqg.js → RoadmapDetails-CfayA5CZ.js} +3 -3
- package/dist/{Search-CDOpNByw.js → Search-Cw_e1PyF.js} +10 -10
- package/dist/{SearchDropdown-D65lySm_.js → SearchDropdown-ECOTZ1Uf.js} +1 -1
- package/dist/VideoCover-BN8wnHpf.js +92 -0
- package/dist/VideoPlayer-CKjq7IRq.js +324 -0
- package/dist/VideoPlayerModal-DbP3OjSF.js +55 -0
- package/dist/YoutubeModal-D_ZHayEn.js +35 -0
- package/dist/components/Button/index.js +1 -1
- package/dist/components/ButtonGroup/index.js +1 -1
- package/dist/components/Checkbox/index.js +1 -1
- package/dist/components/CodeBlock/index.js +1 -1
- package/dist/components/CopyCode/index.js +1 -1
- package/dist/components/Dropdown/index.js +1 -1
- package/dist/components/Footer/CookiePolicyModal.js +1 -1
- package/dist/components/Footer/FooterBottom.js +1 -1
- package/dist/components/Footer/FooterHelp.js +1 -1
- package/dist/components/Footer/FooterLinks.js +1 -1
- package/dist/components/Footer/YoutubeModal.js +1 -1
- package/dist/components/Footer/index.js +1 -1
- package/dist/components/Header/index.js +1 -1
- package/dist/components/InputGrouped/index.js +1 -1
- package/dist/components/Label/index.js +1 -1
- package/dist/components/Modal/ModalContactFooter.js +2 -2
- package/dist/components/Modal/index.js +2 -2
- package/dist/components/NewsletterSignup/index.js +1 -1
- package/dist/components/Notification/index.js +1 -1
- package/dist/components/PrefPanel/index.js +1 -1
- package/dist/components/RoadmapDetails/index.js +1 -1
- package/dist/components/Search/index.js +1 -1
- package/dist/components/SearchDropdown/index.js +1 -1
- package/dist/components/Sidebar/Sidebar.js +1 -1
- package/dist/components/VideoCover/index.js +2 -0
- package/dist/components/VideoPlayer/VideoPlayerModal.js +2 -0
- package/dist/components/VideoPlayer/index.js +2 -0
- package/dist/components/VideoPlayer/useMediaEngine.js +275 -0
- package/dist/{create-element-CWTzyETe.js → create-element-WbENDceu.js} +1 -1
- package/dist/{esm-VMwHsplm.js → esm-B0YmMAXt.js} +90 -20
- package/dist/highsoft-ui.css +1 -1
- package/dist/lib/components/VideoCover/index.d.ts +75 -0
- package/dist/lib/components/VideoPlayer/VideoPlayerModal.d.ts +27 -0
- package/dist/lib/components/VideoPlayer/index.d.ts +43 -0
- package/dist/lib/components/VideoPlayer/useMediaEngine.d.ts +44 -0
- package/dist/lib/main.d.ts +6 -0
- package/dist/main.js +32 -29
- package/dist/{prism-light-B3yrtgki.js → prism-light-C4xXs3Qn.js} +1 -1
- package/dist/scss/variables.scss +21 -20
- package/package.json +1 -1
- package/dist/YoutubeModal-CZgbaRB6.js +0 -92
package/CLAUDE.md
CHANGED
|
@@ -176,6 +176,8 @@ The foundational layout component. Use it instead of raw `<div>` with inline sty
|
|
|
176
176
|
- **`iconLeft`:** `ReactNode` — icon placed before the label
|
|
177
177
|
- **`iconRight`:** `ReactNode` — icon placed after the label
|
|
178
178
|
- **`as`:** polymorphic — auto-detects `<a>` when `href` is provided
|
|
179
|
+
- **`disabled` / `loading`:** both render the button non-interactive and share one **unified disabled treatment** across variants — the coloured variants (`brand`, `success`, `attention`, `danger`) fall back to the same neutral surface as `neutral`/`soft` rather than a greyed brand colour, so a disabled control never reads as active. In dark mode disabled buttons use a muted fill with lighter (`neutral-400`) label text and a defined (`neutral-1000`) border; `transparent` stays flat but keeps its border, and `plain` is borderless label-only.
|
|
180
|
+
- **Accessibility:** a real `<button>` uses the native `disabled` attribute (removed from the tab order, not clickable); when rendered as `<a>` (via `href`), disabled instead sets `aria-disabled`, drops `href`, forces `tabIndex={-1}`, and blocks the click — so the disabled meaning is exposed either way. Disabled label contrast is intentionally muted and is exempt from WCAG 1.4.3 (inactive controls). `:focus-visible` shows a 2px brand focus ring on every variant; transitions use the design-token animations and respect `prefers-reduced-motion` via the shared tokens.
|
|
179
181
|
|
|
180
182
|
### Heading
|
|
181
183
|
```tsx
|
|
@@ -316,6 +318,54 @@ const a = 2 // [!code ++]`} />
|
|
|
316
318
|
<Notification variant="danger" title="Error" message="Something went wrong" />
|
|
317
319
|
```
|
|
318
320
|
|
|
321
|
+
### VideoPlayer
|
|
322
|
+
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.
|
|
323
|
+
```tsx
|
|
324
|
+
<VideoPlayer src="/promo.mp4" poster="/promo.jpg" />
|
|
325
|
+
<VideoPlayer src="https://youtu.be/aqz-KE-bpKQ" /> // driven via the YouTube IFrame API
|
|
326
|
+
<VideoPlayer src="https://vimeo.com/76979871" autoPlay muted />
|
|
327
|
+
<VideoPlayer sources={[{ src: '/v.webm', type: 'video/webm' }, { src: '/v.mp4', type: 'video/mp4' }]} />
|
|
328
|
+
```
|
|
329
|
+
- **`src`** (or **`sources`**): self-hosted URL, or a YouTube/Vimeo link (auto-detected)
|
|
330
|
+
- **`poster`, `muted`, `autoPlay`, `loop`, `playsInline`, `preload`**: standard video props (`autoPlay` needs `muted`)
|
|
331
|
+
- **`aspectRatio`** (default `'16 / 9'`), **`radius`** (default `16`)
|
|
332
|
+
- **`accentGradient`**: scrubber/volume fill — defaults to the brand color; accepts any CSS color or gradient
|
|
333
|
+
- Keyboard: space/`k` play, `f` fullscreen, `m` mute, arrows seek; forwards a ref to the underlying `<video>`
|
|
334
|
+
- **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`.
|
|
335
|
+
|
|
336
|
+
### VideoCover
|
|
337
|
+
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.
|
|
338
|
+
```tsx
|
|
339
|
+
// Fill any sized box (hero background, tile). Size the parent.
|
|
340
|
+
<div style={{ height: 220 }}>
|
|
341
|
+
<VideoCover src="/loop.webm" />
|
|
342
|
+
</div>
|
|
343
|
+
|
|
344
|
+
// Overlay content on top (interactive; video stays click-through)
|
|
345
|
+
<VideoCover sources={[{ src: '/loop.webm', type: 'video/webm' }]} hoverZoom>
|
|
346
|
+
<button>Watch the film</button>
|
|
347
|
+
</VideoCover>
|
|
348
|
+
```
|
|
349
|
+
- **`fit`**: `'cover'` (default) | `'contain'` | `'fill'`
|
|
350
|
+
- **`lazy`** (default `true`): defer load until near viewport via `IntersectionObserver`, then fade in
|
|
351
|
+
- **`hoverZoom`**: zoom the video slightly on hover (preview-tile affordance)
|
|
352
|
+
- **`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.
|
|
353
|
+
- **`autoPlay`/`loop`/`muted`** default `true`; **`aspectRatio`**, **`radius`**, **`poster`**
|
|
354
|
+
- **`children`**: overlay content rendered above the video
|
|
355
|
+
- **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.
|
|
356
|
+
|
|
357
|
+
### VideoPlayerModal
|
|
358
|
+
Lightbox wrapping `VideoPlayer` in a Radix dialog. The player mounts on open (autoplay + SDKs kick in then) and unmounts on close.
|
|
359
|
+
```tsx
|
|
360
|
+
<VideoPlayerModal
|
|
361
|
+
src="https://vimeo.com/76979871"
|
|
362
|
+
title="Product overview"
|
|
363
|
+
trigger={<Button variant="brand">Watch video</Button>}
|
|
364
|
+
/>
|
|
365
|
+
```
|
|
366
|
+
- Accepts all **`VideoPlayer`** props, plus **`trigger`**, **`title`**, **`maxWidth`**, controlled **`open`/`onOpenChange`**
|
|
367
|
+
- **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.
|
|
368
|
+
|
|
319
369
|
### Sidebar (SidebarLayout, Sidebar, NavItem, NavGroup, …)
|
|
320
370
|
A composable, resizable sidebar-navigation shell for docs/app layouts. The
|
|
321
371
|
`<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 {
|
|
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 {
|
|
4
|
-
import { t as a } from "./Button-
|
|
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-
|
|
26
|
-
import("./create-element-
|
|
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 ?
|
|
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-
|
|
2
|
-
import { t } from "./Button-
|
|
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 {
|
|
4
|
-
import { t as a } from "./Button-
|
|
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 ?
|
|
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 {
|
|
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 {
|
|
3
|
-
import { t as r } from "./Button-
|
|
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-
|
|
8
|
-
import { t as c } from "./FooterBottom-
|
|
9
|
-
import { t as l } from "./FooterHelp-
|
|
10
|
-
import { t as u } from "./FooterLinks-
|
|
11
|
-
import { t as d } from "./YoutubeModal-
|
|
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-
|
|
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 {
|
|
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 {
|
|
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-
|
|
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 {
|
|
4
|
-
import { t as _ } from "./Button-
|
|
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-
|
|
8
|
-
import { t as x } from "./Search-
|
|
9
|
-
import { t as S } from "./Label-
|
|
10
|
-
import { t as C } from "./Notification-
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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:
|
|
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 = "",
|
|
203
|
-
e.style.transform = "",
|
|
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)`,
|
|
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 = "",
|
|
214
|
+
window.removeEventListener("scroll", u), c !== null && cancelAnimationFrame(c), e.style.transform = "", h && document.documentElement.style.removeProperty("--header-bottom");
|
|
215
215
|
};
|
|
216
216
|
}, [
|
|
217
|
-
|
|
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
|
-
}, [
|
|
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/",
|
|
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,
|
|
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/",
|
|
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(
|
|
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/",
|
|
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/",
|
|
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 :
|
|
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:
|
|
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/",
|
|
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/",
|
|
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(
|
|
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/",
|
|
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/",
|
|
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,
|
|
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,
|
|
3
|
-
import { t as i } from "./Button-
|
|
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:
|
|
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
|
-
|
|
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: [
|
|
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":
|
|
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 ?
|
|
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:
|
|
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
|
-
|
|
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: [
|
|
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":
|
|
193
|
-
"aria-required":
|
|
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(
|
|
217
|
+
children: /* @__PURE__ */ u(r, {})
|
|
218
218
|
})
|
|
219
219
|
})]
|
|
220
220
|
})
|
|
@@ -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 {
|
|
4
|
-
import { t as a } from "./Button-
|
|
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-
|
|
3
|
-
import { t as n } from "./Button-
|
|
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-
|
|
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 {
|
|
4
|
-
import { t as c } from "./Button-
|
|
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, ...
|
|
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
|
-
...
|
|
202
|
+
...r
|
|
203
203
|
}), /* @__PURE__ */ k("label", {
|
|
204
204
|
htmlFor: t,
|
|
205
205
|
className: Q.radio,
|
|
206
|
-
children: [e, /* @__PURE__ */ O(
|
|
206
|
+
children: [e, /* @__PURE__ */ O(i, { className: Q.check })]
|
|
207
207
|
})] });
|
|
208
208
|
}
|
|
209
209
|
function de() {
|
|
210
|
-
let { theme: n, systemTheme:
|
|
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(
|
|
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(
|
|
230
|
+
/* @__PURE__ */ O(r, {}),
|
|
231
231
|
"Auto (",
|
|
232
|
-
|
|
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(
|
|
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(
|
|
248
|
+
children: [/* @__PURE__ */ O(s, {}), "Dark"]
|
|
249
249
|
})
|
|
250
250
|
] })
|
|
251
251
|
}) })] });
|