highsoft-ui 1.0.173 → 1.0.174
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 +52 -0
- package/dist/{BrowserFrame-CisPLoTR.js → BrowserFrame-_qNod9an.js} +5 -5
- package/dist/{Button-CdrrwvXk.js → Button-DFcjZsF4.js} +1 -1
- package/dist/{ButtonGroup-JtJaVLlu.js → ButtonGroup-dTeFICBP.js} +1 -1
- package/dist/{Checkbox-DU_KGp-P.js → Checkbox-X7FrR_6F.js} +1 -1
- package/dist/{CodeBlock-CGBo8nwy.js → CodeBlock-rPC0sIvR.js} +4 -4
- package/dist/{CookiePolicyModal-xPb4G_hM.js → CookiePolicyModal-D-IOZSoU.js} +2 -2
- package/dist/{CopyCode-72gVieQO.js → CopyCode-DS2T69as.js} +2 -2
- package/dist/{Dropdown-DLRtYhFa.js → Dropdown-Ck7IASlc.js} +1 -1
- package/dist/{Features-BS-_cksu.js → Features-BQ5o3wcc.js} +8 -8
- package/dist/{Footer-CqtCkr_g.js → Footer-C2tXo3oR.js} +7 -7
- package/dist/{FooterBottom-B8GCRg2o.js → FooterBottom-BPuLsXI1.js} +24 -24
- package/dist/{FooterHelp-D5X2Pco9.js → FooterHelp-99gRcRar.js} +22 -22
- package/dist/{FooterLinks-yn_sgcbu.js → FooterLinks-DXTz-d8e.js} +7 -7
- package/dist/{Header-CQKgp8xy.js → Header-DqE0a41T.js} +49 -49
- package/dist/ImagePair-BH6ZnPcE.js +44 -0
- package/dist/{InputGrouped-DLghbzO7.js → InputGrouped-DNiMvxxa.js} +13 -13
- package/dist/{Label-B-Xt6XQQ.js → Label-DTIv_3zs.js} +1 -1
- package/dist/{List-B1zRI6pm.js → List-CdwPhveO.js} +11 -11
- package/dist/{LogoCarousel-TbyB0ot0.js → LogoCarousel-BsmxIlzx.js} +2 -2
- package/dist/{NewsletterSignup-BPLup66s.js → NewsletterSignup-CTbjNSnk.js} +12 -12
- package/dist/{Notification-DtqcW5FH.js → Notification-CTSGBhJk.js} +3 -3
- package/dist/{PrefPanel-6oTpfC5q.js → PrefPanel-CwrWfi3R.js} +8 -8
- package/dist/{PrevNextNav-XaxS2FTm.js → PrevNextNav-BwP-lRaG.js} +1 -1
- package/dist/{RoadmapDetails-CLQzIxv7.js → RoadmapDetails-B-2pgXHz.js} +5 -5
- package/dist/{SearchDropdown-Ow5_Hu21.js → SearchDropdown-g3g30peB.js} +1 -1
- package/dist/{VideoCover-25FfvhPg.js → VideoCover-DdN1nXfu.js} +5 -5
- package/dist/{VideoPlayer-CB2lOh95.js → VideoPlayer-C0pHiwYx.js} +7 -7
- package/dist/{VideoPlayerModal-CVJbPd6n.js → VideoPlayerModal-Bh2u5h8g.js} +2 -2
- package/dist/{YoutubeModal-j51vfjYk.js → YoutubeModal-CXSHjsEd.js} +2 -2
- package/dist/components/BrowserFrame/index.js +1 -1
- 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/Features/index.js +1 -1
- package/dist/components/Figure/ImagePair.js +2 -0
- package/dist/components/Figure/ZoomImage.js +70 -0
- package/dist/components/Figure/index.js +43 -0
- 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/List/index.js +1 -1
- package/dist/components/LogoCarousel/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/PrevNextNav/index.js +1 -1
- package/dist/components/RoadmapDetails/index.js +1 -1
- package/dist/components/Search/SearchDialog.js +10 -10
- package/dist/components/Search/index.js +2 -2
- package/dist/components/SearchDropdown/index.js +1 -1
- package/dist/components/Sidebar/NavDisclosure.js +1 -1
- package/dist/components/Sidebar/NavGroup.js +1 -1
- package/dist/components/Sidebar/Sidebar.js +10 -10
- package/dist/components/Sidebar/SidebarLayout.js +1 -1
- package/dist/components/Sidebar/SidebarSwitcher.js +1 -1
- package/dist/components/VideoCover/index.js +1 -1
- package/dist/components/VideoPlayer/VideoPlayerModal.js +1 -1
- package/dist/components/VideoPlayer/index.js +1 -1
- package/dist/{create-element-DvDqDt-f.js → create-element-DHbI55TT.js} +1 -1
- package/dist/{esm-zUd-Cmgs.js → esm-DQBytmnt.js} +24 -10
- package/dist/highsoft-ui.css +1 -1
- package/dist/lib/components/Figure/ImagePair.d.ts +20 -0
- package/dist/lib/components/Figure/ZoomImage.d.ts +18 -0
- package/dist/lib/components/Figure/index.d.ts +96 -0
- package/dist/lib/main.d.ts +2 -0
- package/dist/main.js +54 -53
- package/dist/{prism-light-oph9ikSp.js → prism-light-D9OePufj.js} +1 -1
- package/package.json +1 -1
package/CLAUDE.md
CHANGED
|
@@ -687,6 +687,46 @@ Browser-window chrome around embedded content — a real `<iframe>` via `src`, o
|
|
|
687
687
|
- The frame itself is a non-interactive `<div>` — nothing in the tab order beyond its controls; no authored motion, so there's nothing to gate on `prefers-reduced-motion` beyond the shared Button tokens.
|
|
688
688
|
- `background` is a static surface with no state, so it changes nothing for keyboard or AT. The named values are semantic tokens and remap in dark mode; a raw CSS value does not, so prefer the tokens unless the embed is a fixed colour in both themes.
|
|
689
689
|
|
|
690
|
+
### Figure
|
|
691
|
+
A `<figure>` with a `<figcaption>`: an image, or any wrapped content (a `BrowserFrame`, `VideoPlayer`, `CodeBlock`, a chart), with the sentence or two that explain it. The caption is what crawlers, AI agents and screen readers get instead of the image or the iframe's contents, so write it as the explanation, not as a label.
|
|
692
|
+
```tsx
|
|
693
|
+
// An image: alt says what it shows, caption says what to notice
|
|
694
|
+
<Figure
|
|
695
|
+
src="/images/pyramid-3d.png"
|
|
696
|
+
alt="A pyramid in three stacked segments labelled Leads, Trials and Customers."
|
|
697
|
+
width={640}
|
|
698
|
+
height={360}
|
|
699
|
+
caption="A 3D pyramid with one segment per data point. The largest values form the widest part of the pyramid."
|
|
700
|
+
/>
|
|
701
|
+
|
|
702
|
+
// A live demo: wrap the BrowserFrame, the paragraph under it becomes the figcaption
|
|
703
|
+
<Figure caption="This demo shows a 3D pyramid with one segment per data point.">
|
|
704
|
+
<BrowserFrame variant="mini" src={demoUrl} title="3D pyramid demo" aspectRatio="16 / 10" />
|
|
705
|
+
</Figure>
|
|
706
|
+
|
|
707
|
+
// Centered, smaller caption
|
|
708
|
+
<Figure src={src} alt={alt} caption={caption} align="center" captionSize={75} />
|
|
709
|
+
|
|
710
|
+
// A light/dark pair: the page's data-theme picks one
|
|
711
|
+
<Figure src="/images/diagram.svg" srcDark="/images/diagram.dark.svg" alt={alt} caption={caption} />
|
|
712
|
+
```
|
|
713
|
+
- **`src` + `alt`:** renders the `<img>`. `alt` is required with `src` (the types enforce it): one sentence on what the image shows, `""` for a decorative image. `width`/`height` reserve the space before load; `loading`, `srcSet` and `sizes` pass through.
|
|
714
|
+
- **`srcDark`:** dark-theme variant of the image. Both render with the same `alt`; `[data-theme='dark']` on `<html>` (ThemeLoader sets it before first paint) shows one and hides the other, and `prefers-color-scheme` decides when no attribute is set. Without it the one image serves both themes: nothing is dimmed or inverted, since a filter would distort a chart's colours.
|
|
715
|
+
- **`zoom`:** click to enlarge (default `false`). The image becomes a `<button>` (cursor `zoom-in`, the shared focus ring) that opens it in a native `<dialog>` over the page: the picture floats on the dimmed backdrop with its own shadow, the close button sits in a row above it, outside the picture, and the caption is repeated under it in white. Escape, the close button, or a click on the backdrop closes it; the browser returns focus to the image. Enter and exit are CSS on `--animations-fade-*` / `--animations-bounce-default` with `@starting-style`, off under `prefers-reduced-motion`; the page behind does not scroll. `zoomLabel` and `closeLabel` name the two controls. The enlarge badge is the VideoCover playback control: a 28px disc bottom-right on the themed surface, hidden at rest and shown on hover or keyboard focus, so a chart's credits or last label stay readable until the reader reaches for it. Hover or keyboard focus lifts the picture 2px and scales it 1% on `--animations-bounce-default`, the cover-tile gesture that says "clickable", and deepens the shadow to `--shadow-size-200`. Opt in for screenshots and diagrams whose detail matters, not for every image.
|
|
716
|
+
- **`children`:** the alternative to `src`: a `BrowserFrame`, `VideoPlayer`, `CodeBlock` or anything else. The figure only stops it from overflowing; the child draws its own frame.
|
|
717
|
+
- **`caption`:** rendered as `<figcaption>` under the content, in `Typography` size `100` (or `captionSize={75}`) and `secondary` color (`captionColor` takes any `TypographyColor`). Capped at 72ch (`--hsui-figure-caption-width`) so a line under a wide demo stays readable. No caption, no `<figcaption>`.
|
|
718
|
+
- **`align`:** `start` (default) or `center` for both content and caption.
|
|
719
|
+
- **`frame`:** how an image sits on the page. `hairline` (default): border-100 and 8px radius (`--hsui-figure-radius`), the BrowserFrame shell look. `card`: the same plus `--shadow-size-100`, the BrowserFrame shadow, for an illustration that should read as a picture placed on the page. `none`: the bare image. Ignored for wrapped children, which draw their own frame.
|
|
720
|
+
- 10px between content and caption (the List marker gap); no outer margin. The page sets the rhythm around a figure, as it does for a BrowserFrame.
|
|
721
|
+
|
|
722
|
+
**Accessibility:**
|
|
723
|
+
- A real `<figure>`; its accessible name is the `<figcaption>`, so assistive technology announces the figure by its caption and a screen-reader user can skip or jump to it as a landmark-like region.
|
|
724
|
+
- `alt` and `caption` have different jobs: `alt` describes the image for someone who cannot see it, the caption explains it for everyone. Do not repeat one in the other. An empty `alt` hides a decorative image from the reader while the caption still reads.
|
|
725
|
+
- With `zoom`, the trigger is a real `<button>` named "Enlarge image" (`zoomLabel`), so it is reachable by keyboard and announced as a button; the `<dialog>` is modal (`showModal`), named by the image's `alt`, trapped for focus, closed by Escape, and the browser returns focus to the button. The close control is a `Button` named by `closeLabel`. The zoom badge is `aria-hidden` decoration; the button's name carries the meaning, and keyboard focus shows the same lift and badge as hover, so the control is discoverable without a mouse; on touch there is no hover, and the whole picture is the tap target. Under `prefers-reduced-motion` the picture does not move. The transitions respect `prefers-reduced-motion`.
|
|
726
|
+
- With `srcDark` the hidden variant is `display: none`, so assistive technology meets one image, not two with the same `alt`.
|
|
727
|
+
- For wrapped content the child owns its own accessibility (a BrowserFrame's iframe `title`, a VideoPlayer's tracks); the figure adds the caption as the figure's name.
|
|
728
|
+
- Nothing is interactive, nothing animates, colours are tokens, so dark mode and reduced motion need nothing extra.
|
|
729
|
+
|
|
690
730
|
### Layout
|
|
691
731
|
```tsx
|
|
692
732
|
<Header />
|
|
@@ -1173,6 +1213,18 @@ All components use the same `iconLeft` / `iconRight` naming:
|
|
|
1173
1213
|
- **Do** pass an icon component to `icon` for a custom bullet
|
|
1174
1214
|
- **Don't** write bullets or numbers into the item text (`•`, `1.`) — the component draws them
|
|
1175
1215
|
|
|
1216
|
+
### Figure
|
|
1217
|
+
- **Do** put the explanation in `caption` and what the image shows in `alt`
|
|
1218
|
+
- **Don't** repeat the caption as the alt text, or leave the alt as a file name
|
|
1219
|
+
- **Do** wrap a `BrowserFrame` in a `Figure` when the demo needs a sentence under it
|
|
1220
|
+
- **Don't** add margins inside the figure — the page sets the spacing around it
|
|
1221
|
+
- **Do** pass `srcDark` for diagrams and UI screenshots that have a dark version
|
|
1222
|
+
- **Don't** dim or invert a light image for dark mode — a filter changes a chart's colours
|
|
1223
|
+
- **Do** turn on `zoom` for screenshots and diagrams whose detail matters
|
|
1224
|
+
- **Don't** zoom a small illustration or an icon — there is nothing more to see
|
|
1225
|
+
- **Do** use `frame="card"` for an illustration that should read as a picture on the page, the way a BrowserFrame does
|
|
1226
|
+
- **Don't** put `card` on every screenshot — the hairline is the default for a reason
|
|
1227
|
+
|
|
1176
1228
|
### Features
|
|
1177
1229
|
- **Do** swap the icon per feature, and color it with `iconColor` when the section calls for it
|
|
1178
1230
|
- **Do** keep `descriptionColor="tertiary"` for white/background-0 surfaces — on the page background or any grey it fails contrast
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { t as e } from "./clsx-BWCAbrjV.js";
|
|
3
|
-
import {
|
|
4
|
-
import { t as a } from "./Button-
|
|
3
|
+
import { A as t, K as n, R as r, z as i } from "./esm-DQBytmnt.js";
|
|
4
|
+
import { t as a } from "./Button-DFcjZsF4.js";
|
|
5
5
|
import { forwardRef as o, useCallback as s, useEffect as c, useRef as l, useState as u } from "react";
|
|
6
6
|
import { jsx as d, jsxs as f } from "react/jsx-runtime";
|
|
7
7
|
var p = {
|
|
@@ -52,13 +52,13 @@ var h = o(({ variant: o = "full", src: h, displayUrl: g, href: _, action: v = "v
|
|
|
52
52
|
}, [G]), X = o === "full" && v !== "none" ? v === "fullscreen" ? /* @__PURE__ */ d(a, {
|
|
53
53
|
variant: "soft",
|
|
54
54
|
size: 100,
|
|
55
|
-
iconRight: d(V ?
|
|
55
|
+
iconRight: d(V ? t : n, {}),
|
|
56
56
|
onClick: Y,
|
|
57
57
|
children: y ?? (V ? "Exit fullscreen" : "Fullscreen")
|
|
58
58
|
}) : G ? /* @__PURE__ */ d(a, {
|
|
59
59
|
variant: "soft",
|
|
60
60
|
size: 100,
|
|
61
|
-
iconRight: /* @__PURE__ */ d(
|
|
61
|
+
iconRight: /* @__PURE__ */ d(i, {}),
|
|
62
62
|
href: G,
|
|
63
63
|
target: "_blank",
|
|
64
64
|
rel: "noreferrer",
|
|
@@ -117,7 +117,7 @@ var h = o(({ variant: o = "full", src: h, displayUrl: g, href: _, action: v = "v
|
|
|
117
117
|
children: S.map((e) => /* @__PURE__ */ d(a, {
|
|
118
118
|
variant: "soft",
|
|
119
119
|
size: 100,
|
|
120
|
-
iconRight: /* @__PURE__ */ d(
|
|
120
|
+
iconRight: /* @__PURE__ */ d(r, {}),
|
|
121
121
|
href: e.href,
|
|
122
122
|
target: "_blank",
|
|
123
123
|
rel: "noreferrer",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { t as e } from "./clsx-BWCAbrjV.js";
|
|
3
|
-
import {
|
|
3
|
+
import { F as t } from "./esm-DQBytmnt.js";
|
|
4
4
|
import { createContext as n, useCallback as r, useContext as i, useEffect as a, useId as o, useRef as s, useState as c } from "react";
|
|
5
5
|
import { jsx as l, jsxs as u } from "react/jsx-runtime";
|
|
6
6
|
var d = {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { r as e, s as t } from "./utils-bAjntFD8.js";
|
|
3
3
|
import { t as n } from "./clsx-BWCAbrjV.js";
|
|
4
|
-
import {
|
|
5
|
-
import { t as a } from "./Button-
|
|
4
|
+
import { J as r, nt as i } from "./esm-DQBytmnt.js";
|
|
5
|
+
import { t as a } from "./Button-DFcjZsF4.js";
|
|
6
6
|
import { t as o } from "./FrameworkIcon-B8GmMx0r.js";
|
|
7
7
|
import { Fragment as s, forwardRef as c, useCallback as l, useEffect as u, useMemo as d, useState as f } from "react";
|
|
8
8
|
import { jsx as p, jsxs as m } from "react/jsx-runtime";
|
|
@@ -23,8 +23,8 @@ var h = {
|
|
|
23
23
|
}, g = null;
|
|
24
24
|
function _() {
|
|
25
25
|
return g ||= Promise.all([
|
|
26
|
-
import("./prism-light-
|
|
27
|
-
import("./create-element-
|
|
26
|
+
import("./prism-light-D9OePufj.js"),
|
|
27
|
+
import("./create-element-DHbI55TT.js").then((e) => e.n),
|
|
28
28
|
import("./jsx-B57trbk8.js"),
|
|
29
29
|
import("./tsx-CJFgwLf7.js"),
|
|
30
30
|
import("./json-Bfzk2Msc.js"),
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import {
|
|
3
|
-
import { t } from "./Button-
|
|
2
|
+
import { n as e } from "./esm-DQBytmnt.js";
|
|
3
|
+
import { t } from "./Button-DFcjZsF4.js";
|
|
4
4
|
import { a as n, i as r, n as i, o as a, r as o, s, t as c } from "./dist-DWZ0DflU.js";
|
|
5
5
|
import { useEffect as l, useRef as u, useState as d } from "react";
|
|
6
6
|
import { jsx as f, jsxs as p } from "react/jsx-runtime";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { r as e, s as t } from "./utils-bAjntFD8.js";
|
|
3
3
|
import { t as n } from "./clsx-BWCAbrjV.js";
|
|
4
|
-
import {
|
|
5
|
-
import { t as a } from "./Button-
|
|
4
|
+
import { J as r, nt as i } from "./esm-DQBytmnt.js";
|
|
5
|
+
import { t as a } from "./Button-DFcjZsF4.js";
|
|
6
6
|
import { forwardRef as o, useCallback as s } from "react";
|
|
7
7
|
import { jsx as c, jsxs as l } from "react/jsx-runtime";
|
|
8
8
|
var u = {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { t as e } from "./clsx-BWCAbrjV.js";
|
|
3
|
-
import {
|
|
3
|
+
import { nt as t } from "./esm-DQBytmnt.js";
|
|
4
4
|
import { t as n } from "./Icon-DJTgdvsG.js";
|
|
5
5
|
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-DGI5uxql.js";
|
|
6
6
|
import { a as b, i as x, n as S, r as C, t as w } from "./dist-BAH-0dTg.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { t as e } from "./clsx-BWCAbrjV.js";
|
|
3
|
-
import { t } from "./
|
|
4
|
-
import { t as n } from "./
|
|
3
|
+
import { t } from "./Typography-DI1AkqiO.js";
|
|
4
|
+
import { t as n } from "./Icon-DJTgdvsG.js";
|
|
5
5
|
import { createContext as r, forwardRef as i, useContext as a } from "react";
|
|
6
6
|
import { jsx as o, jsxs as s } from "react/jsx-runtime";
|
|
7
7
|
var c = {
|
|
@@ -14,10 +14,10 @@ var c = {
|
|
|
14
14
|
};
|
|
15
15
|
//#endregion
|
|
16
16
|
//#region lib/components/Features/index.tsx
|
|
17
|
-
function l({ iconColor: e, descriptionColor:
|
|
17
|
+
function l({ iconColor: e, descriptionColor: n }) {
|
|
18
18
|
return {
|
|
19
|
-
...e && { "--hsui-feature-icon-color":
|
|
20
|
-
...
|
|
19
|
+
...e && { "--hsui-feature-icon-color": t[e] },
|
|
20
|
+
...n && { "--hsui-feature-description-color": t[n] }
|
|
21
21
|
};
|
|
22
22
|
}
|
|
23
23
|
var u = r(!1), d = i(({ columns: t = 3, iconColor: n, descriptionColor: r, className: i, style: a, children: s, ...d }, f) => /* @__PURE__ */ o(u.Provider, {
|
|
@@ -39,7 +39,7 @@ var u = r(!1), d = i(({ columns: t = 3, iconColor: n, descriptionColor: r, class
|
|
|
39
39
|
})
|
|
40
40
|
}));
|
|
41
41
|
d.displayName = "Features";
|
|
42
|
-
var f = i(({ icon:
|
|
42
|
+
var f = i(({ icon: t, title: r, headingLevel: i, iconColor: d, descriptionColor: f, className: p, style: m, children: h, ...g }, _) => {
|
|
43
43
|
let v = a(u) ? "li" : "div", y = i ? `h${i}` : null;
|
|
44
44
|
return /* @__PURE__ */ s(v, {
|
|
45
45
|
className: e("hsui-feature-item", p, c.item),
|
|
@@ -55,8 +55,8 @@ var f = i(({ icon: n, title: r, headingLevel: i, iconColor: d, descriptionColor:
|
|
|
55
55
|
children: [/* @__PURE__ */ o("span", {
|
|
56
56
|
className: c.icon,
|
|
57
57
|
"aria-hidden": "true",
|
|
58
|
-
children: /* @__PURE__ */ o(
|
|
59
|
-
name:
|
|
58
|
+
children: /* @__PURE__ */ o(n, {
|
|
59
|
+
name: t,
|
|
60
60
|
size: 20
|
|
61
61
|
})
|
|
62
62
|
}), y ? /* @__PURE__ */ s("div", {
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { r as e } from "./utils-bAjntFD8.js";
|
|
3
|
-
import {
|
|
4
|
-
import { t as r } from "./Button-
|
|
3
|
+
import { Y as t, nt as n } from "./esm-DQBytmnt.js";
|
|
4
|
+
import { t as r } from "./Button-DFcjZsF4.js";
|
|
5
5
|
import { t as i } from "./Container-BDssaLig.js";
|
|
6
6
|
import { t as a } from "./DiscordInvite-DfPVlJ5G.js";
|
|
7
7
|
import { t as o } from "./Logo-Bz0G2G-k.js";
|
|
8
|
-
import { t as s } from "./NewsletterSignup-
|
|
9
|
-
import { t as c } from "./FooterBottom-
|
|
10
|
-
import { t as l } from "./FooterHelp-
|
|
11
|
-
import { t as u } from "./FooterLinks-
|
|
12
|
-
import { t as d } from "./YoutubeModal-
|
|
8
|
+
import { t as s } from "./NewsletterSignup-CTbjNSnk.js";
|
|
9
|
+
import { t as c } from "./FooterBottom-BPuLsXI1.js";
|
|
10
|
+
import { t as l } from "./FooterHelp-99gRcRar.js";
|
|
11
|
+
import { t as u } from "./FooterLinks-DXTz-d8e.js";
|
|
12
|
+
import { t as d } from "./YoutubeModal-CXSHjsEd.js";
|
|
13
13
|
import { jsx as f, jsxs as p } from "react/jsx-runtime";
|
|
14
14
|
var m = {
|
|
15
15
|
discordCard: "_4W4F3q_discordCard",
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { a as e, t } from "./utils-bAjntFD8.js";
|
|
3
|
-
import {
|
|
4
|
-
import { n as u } from "./
|
|
5
|
-
import { t as d } from "./CookiePolicyModal-
|
|
3
|
+
import { n } from "./Typography-DI1AkqiO.js";
|
|
4
|
+
import { a as r, c as i, i as a, n as o, o as s, r as c, s as l, t as u } from "./fa-B95RwBpz.js";
|
|
5
|
+
import { t as d } from "./CookiePolicyModal-D-IOZSoU.js";
|
|
6
6
|
import { Fragment as f, jsx as p, jsxs as m } from "react/jsx-runtime";
|
|
7
7
|
//#region node_modules/react-icons/fa6/index.mjs
|
|
8
8
|
function h(e) {
|
|
9
|
-
return
|
|
9
|
+
return i({
|
|
10
10
|
tag: "svg",
|
|
11
11
|
attr: { viewBox: "0 0 512 512" },
|
|
12
12
|
child: [{
|
|
@@ -30,12 +30,12 @@ function _(e, t) {
|
|
|
30
30
|
}
|
|
31
31
|
var v = [
|
|
32
32
|
{
|
|
33
|
-
icon: /* @__PURE__ */ p(
|
|
33
|
+
icon: /* @__PURE__ */ p(s, {}),
|
|
34
34
|
url: "https://stackoverflow.com/questions/tagged/highcharts",
|
|
35
35
|
label: "StackOverlow"
|
|
36
36
|
},
|
|
37
37
|
{
|
|
38
|
-
icon: /* @__PURE__ */ p(
|
|
38
|
+
icon: /* @__PURE__ */ p(c, {}),
|
|
39
39
|
url: "https://github.com/highcharts/highcharts",
|
|
40
40
|
label: "GitHub"
|
|
41
41
|
},
|
|
@@ -45,33 +45,33 @@ var v = [
|
|
|
45
45
|
label: "X"
|
|
46
46
|
},
|
|
47
47
|
{
|
|
48
|
-
icon: /* @__PURE__ */ p(
|
|
48
|
+
icon: /* @__PURE__ */ p(o, {}),
|
|
49
49
|
url: "https://www.facebook.com/Highcharts",
|
|
50
50
|
label: "Facebook"
|
|
51
51
|
},
|
|
52
52
|
{
|
|
53
|
-
icon: /* @__PURE__ */ p(
|
|
53
|
+
icon: /* @__PURE__ */ p(a, {}),
|
|
54
54
|
url: "https://www.instagram.com/highsoftcompany/",
|
|
55
55
|
label: "Instagram"
|
|
56
56
|
},
|
|
57
57
|
{
|
|
58
|
-
icon: /* @__PURE__ */ p(
|
|
58
|
+
icon: /* @__PURE__ */ p(r, {}),
|
|
59
59
|
url: "https://www.linkedin.com/company/highsoft",
|
|
60
60
|
label: "LinkedIn"
|
|
61
61
|
},
|
|
62
62
|
{
|
|
63
|
-
icon: /* @__PURE__ */ p(
|
|
63
|
+
icon: /* @__PURE__ */ p(u, {}),
|
|
64
64
|
url: "https://www.highcharts.com/highcharts-discord/",
|
|
65
65
|
label: "Discord"
|
|
66
66
|
},
|
|
67
67
|
{
|
|
68
|
-
icon: /* @__PURE__ */ p(
|
|
68
|
+
icon: /* @__PURE__ */ p(l, {}),
|
|
69
69
|
url: "https://www.youtube.com/channel/UCzxXofPTQ0DoT7uIy3Fxw7A",
|
|
70
70
|
label: "Youtube"
|
|
71
71
|
}
|
|
72
72
|
];
|
|
73
|
-
function y({ link:
|
|
74
|
-
let
|
|
73
|
+
function y({ link: r = "a", host: i = "https://www.highcharts.com" }) {
|
|
74
|
+
let a = e(`(min-width: ${t.tablet}px) and (max-width: ${t.laptop - 1}px)`), o = /* @__PURE__ */ m(f, { children: [/* @__PURE__ */ m(n, {
|
|
75
75
|
as: "span",
|
|
76
76
|
size: 100,
|
|
77
77
|
color: "secondary",
|
|
@@ -84,18 +84,18 @@ function y({ link: n = "a", host: r = "https://www.highcharts.com" }) {
|
|
|
84
84
|
}), /* @__PURE__ */ m("div", {
|
|
85
85
|
className: g.bottomLinks,
|
|
86
86
|
children: [
|
|
87
|
-
/* @__PURE__ */ p(
|
|
88
|
-
href: _("https://www.highcharts.com/blog/article/accessibility-statement/",
|
|
89
|
-
children: /* @__PURE__ */ p(
|
|
87
|
+
/* @__PURE__ */ p(r, {
|
|
88
|
+
href: _("https://www.highcharts.com/blog/article/accessibility-statement/", i),
|
|
89
|
+
children: /* @__PURE__ */ p(n, {
|
|
90
90
|
as: "span",
|
|
91
91
|
size: 100,
|
|
92
92
|
color: "secondary",
|
|
93
93
|
children: "Accessibility Statement"
|
|
94
94
|
})
|
|
95
95
|
}),
|
|
96
|
-
/* @__PURE__ */ p(
|
|
97
|
-
href: _("https://www.highcharts.com/sitemap.xml",
|
|
98
|
-
children: /* @__PURE__ */ p(
|
|
96
|
+
/* @__PURE__ */ p(r, {
|
|
97
|
+
href: _("https://www.highcharts.com/sitemap.xml", i),
|
|
98
|
+
children: /* @__PURE__ */ p(n, {
|
|
99
99
|
as: "span",
|
|
100
100
|
size: 100,
|
|
101
101
|
color: "secondary",
|
|
@@ -105,7 +105,7 @@ function y({ link: n = "a", host: r = "https://www.highcharts.com" }) {
|
|
|
105
105
|
/* @__PURE__ */ p("button", {
|
|
106
106
|
type: "button",
|
|
107
107
|
onClick: () => window.CookieConsent?.renew(),
|
|
108
|
-
children: /* @__PURE__ */ p(
|
|
108
|
+
children: /* @__PURE__ */ p(n, {
|
|
109
109
|
as: "span",
|
|
110
110
|
size: 100,
|
|
111
111
|
color: "secondary",
|
|
@@ -114,7 +114,7 @@ function y({ link: n = "a", host: r = "https://www.highcharts.com" }) {
|
|
|
114
114
|
}),
|
|
115
115
|
/* @__PURE__ */ p(d, {})
|
|
116
116
|
]
|
|
117
|
-
})] }),
|
|
117
|
+
})] }), s = /* @__PURE__ */ p("ul", {
|
|
118
118
|
className: g.socials,
|
|
119
119
|
children: v.map(({ icon: e, url: t, label: n }, r) => /* @__PURE__ */ p("li", { children: /* @__PURE__ */ p("a", {
|
|
120
120
|
href: t,
|
|
@@ -124,10 +124,10 @@ function y({ link: n = "a", host: r = "https://www.highcharts.com" }) {
|
|
|
124
124
|
});
|
|
125
125
|
return /* @__PURE__ */ p("div", {
|
|
126
126
|
className: g.bottom,
|
|
127
|
-
children:
|
|
127
|
+
children: a ? /* @__PURE__ */ m(f, { children: [/* @__PURE__ */ p("div", {
|
|
128
128
|
className: g.tabletBottomLeft,
|
|
129
|
-
children:
|
|
130
|
-
}),
|
|
129
|
+
children: o
|
|
130
|
+
}), s] }) : /* @__PURE__ */ m(f, { children: [o, s] })
|
|
131
131
|
});
|
|
132
132
|
}
|
|
133
133
|
//#endregion
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { a as e, t } from "./utils-bAjntFD8.js";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
3
|
+
import { _ as n, f as r } from "./esm-DQBytmnt.js";
|
|
4
|
+
import { n as i } from "./Typography-DI1AkqiO.js";
|
|
5
|
+
import { t as a } from "./Icon-DJTgdvsG.js";
|
|
6
|
+
import { o, r as s } from "./fa-B95RwBpz.js";
|
|
7
7
|
import { jsx as c, jsxs as l } from "react/jsx-runtime";
|
|
8
8
|
var u = {
|
|
9
9
|
help: "vfdIHG_help",
|
|
@@ -23,8 +23,8 @@ function d(e, t) {
|
|
|
23
23
|
}
|
|
24
24
|
var f = [
|
|
25
25
|
{
|
|
26
|
-
icon: /* @__PURE__ */ c(
|
|
27
|
-
name:
|
|
26
|
+
icon: /* @__PURE__ */ c(a, {
|
|
27
|
+
name: r,
|
|
28
28
|
size: 20
|
|
29
29
|
}),
|
|
30
30
|
subtitle: "Ask tech and sales questions with",
|
|
@@ -32,8 +32,8 @@ var f = [
|
|
|
32
32
|
url: "https://www.highcharts.com/chat/gpt/"
|
|
33
33
|
},
|
|
34
34
|
{
|
|
35
|
-
icon: /* @__PURE__ */ c(
|
|
36
|
-
name:
|
|
35
|
+
icon: /* @__PURE__ */ c(a, {
|
|
36
|
+
name: o,
|
|
37
37
|
size: 20
|
|
38
38
|
}),
|
|
39
39
|
subtitle: "Search answers on",
|
|
@@ -41,8 +41,8 @@ var f = [
|
|
|
41
41
|
url: "https://stackoverflow.com/questions/tagged/highcharts"
|
|
42
42
|
},
|
|
43
43
|
{
|
|
44
|
-
icon: /* @__PURE__ */ c(
|
|
45
|
-
name:
|
|
44
|
+
icon: /* @__PURE__ */ c(a, {
|
|
45
|
+
name: s,
|
|
46
46
|
size: 20
|
|
47
47
|
}),
|
|
48
48
|
subtitle: "Report issues on",
|
|
@@ -50,8 +50,8 @@ var f = [
|
|
|
50
50
|
url: "https://github.com/highcharts/highcharts/issues"
|
|
51
51
|
},
|
|
52
52
|
{
|
|
53
|
-
icon: /* @__PURE__ */ c(
|
|
54
|
-
name:
|
|
53
|
+
icon: /* @__PURE__ */ c(a, {
|
|
54
|
+
name: n,
|
|
55
55
|
size: 20
|
|
56
56
|
}),
|
|
57
57
|
subtitle: "Contact sales about",
|
|
@@ -60,53 +60,53 @@ var f = [
|
|
|
60
60
|
}
|
|
61
61
|
];
|
|
62
62
|
function p({ link: n = "a", host: r = "https://www.highcharts.com" }) {
|
|
63
|
-
let
|
|
63
|
+
let a = e(`(max-width: ${t.tablet - 1}px)`);
|
|
64
64
|
return /* @__PURE__ */ l("div", {
|
|
65
65
|
className: u.help,
|
|
66
66
|
children: [/* @__PURE__ */ l("div", {
|
|
67
67
|
className: u.helpWays,
|
|
68
|
-
children: [/* @__PURE__ */ c(
|
|
68
|
+
children: [/* @__PURE__ */ c(i, {
|
|
69
69
|
as: "span",
|
|
70
70
|
size: 100,
|
|
71
71
|
weight: "semi",
|
|
72
72
|
color: "primary",
|
|
73
73
|
className: u.helpEyebrow,
|
|
74
74
|
children: "Ways to get help"
|
|
75
|
-
}), /* @__PURE__ */ l(
|
|
75
|
+
}), /* @__PURE__ */ l(i, {
|
|
76
76
|
as: "p",
|
|
77
77
|
size: 75,
|
|
78
78
|
color: "secondary",
|
|
79
79
|
className: u.helpSchedule,
|
|
80
80
|
children: [
|
|
81
81
|
"We operate in CET",
|
|
82
|
-
|
|
82
|
+
a ? " " : /* @__PURE__ */ c("br", {}),
|
|
83
83
|
"Monday - Friday"
|
|
84
84
|
]
|
|
85
85
|
})]
|
|
86
|
-
}), f.map(({ icon: e, subtitle: t, title:
|
|
87
|
-
href: d(
|
|
86
|
+
}), f.map(({ icon: e, subtitle: t, title: a, url: o }, s) => /* @__PURE__ */ l(n, {
|
|
87
|
+
href: d(o, r),
|
|
88
88
|
className: u.helpItem,
|
|
89
89
|
children: [/* @__PURE__ */ c("div", {
|
|
90
90
|
className: u.helpBall,
|
|
91
91
|
children: e
|
|
92
92
|
}), /* @__PURE__ */ l("div", {
|
|
93
93
|
className: u.helpContent,
|
|
94
|
-
children: [/* @__PURE__ */ c(
|
|
94
|
+
children: [/* @__PURE__ */ c(i, {
|
|
95
95
|
as: "span",
|
|
96
96
|
size: 75,
|
|
97
97
|
color: "secondary",
|
|
98
98
|
className: u.helpSubtitle,
|
|
99
99
|
children: t
|
|
100
|
-
}), /* @__PURE__ */ c(
|
|
100
|
+
}), /* @__PURE__ */ c(i, {
|
|
101
101
|
as: "span",
|
|
102
102
|
size: 100,
|
|
103
103
|
weight: "semi",
|
|
104
104
|
color: "primary",
|
|
105
105
|
className: u.helpTitle,
|
|
106
|
-
children:
|
|
106
|
+
children: a
|
|
107
107
|
})]
|
|
108
108
|
})]
|
|
109
|
-
},
|
|
109
|
+
}, s))]
|
|
110
110
|
});
|
|
111
111
|
}
|
|
112
112
|
//#endregion
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { t as e } from "./clsx-BWCAbrjV.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { t as i } from "./Label-
|
|
2
|
+
import { L as t } from "./esm-DQBytmnt.js";
|
|
3
|
+
import { n } from "./Typography-DI1AkqiO.js";
|
|
4
|
+
import { t as r } from "./Icon-DJTgdvsG.js";
|
|
5
|
+
import { t as i } from "./Label-DTIv_3zs.js";
|
|
6
6
|
import { jsx as a, jsxs as o } from "react/jsx-runtime";
|
|
7
7
|
var s = {
|
|
8
8
|
externalIcon: "N4RQEq_externalIcon",
|
|
@@ -267,7 +267,7 @@ var l = {
|
|
|
267
267
|
function u({ link: u = "a", host: d = "https://www.highcharts.com" }) {
|
|
268
268
|
return /* @__PURE__ */ a("div", {
|
|
269
269
|
className: s.links,
|
|
270
|
-
children: Object.entries(l).map(([l, f], p) => /* @__PURE__ */ o("div", { children: [/* @__PURE__ */ a(
|
|
270
|
+
children: Object.entries(l).map(([l, f], p) => /* @__PURE__ */ o("div", { children: [/* @__PURE__ */ a(n, {
|
|
271
271
|
as: "h2",
|
|
272
272
|
size: 100,
|
|
273
273
|
weight: "medium",
|
|
@@ -278,12 +278,12 @@ function u({ link: u = "a", host: d = "https://www.highcharts.com" }) {
|
|
|
278
278
|
href: c(f, d),
|
|
279
279
|
className: e({ [s.tagged]: p }),
|
|
280
280
|
target: f.includes("highcharts.com") ? void 0 : "_blank",
|
|
281
|
-
children: [/* @__PURE__ */ o(
|
|
281
|
+
children: [/* @__PURE__ */ o(n, {
|
|
282
282
|
as: "span",
|
|
283
283
|
size: 100,
|
|
284
284
|
color: "secondary",
|
|
285
285
|
className: s.linkLabel,
|
|
286
|
-
children: [l, !f.includes("highcharts.com") && /* @__PURE__ */ a(
|
|
286
|
+
children: [l, !f.includes("highcharts.com") && /* @__PURE__ */ a(r, {
|
|
287
287
|
name: t,
|
|
288
288
|
size: 12,
|
|
289
289
|
className: s.externalIcon
|