highsoft-ui 1.0.136 → 1.0.138

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 (50) hide show
  1. package/CLAUDE.md +22 -0
  2. package/dist/{Button-CTdphXmG.js → Button-Dc8NFRWQ.js} +1 -1
  3. package/dist/{ButtonGroup-D5_sI3QL.js → ButtonGroup-CYmrw7gQ.js} +1 -1
  4. package/dist/{Checkbox-Yg8sUFcu.js → Checkbox-CErz7eBz.js} +1 -1
  5. package/dist/CodeBlock-DtYddgyU.js +3044 -0
  6. package/dist/{CookiePolicyModal-DGM4bMoR.js → CookiePolicyModal-DdXZ2d36.js} +2 -2
  7. package/dist/{CopyCode-DS-3fQBn.js → CopyCode-DH9Jh7PD.js} +2 -2
  8. package/dist/{Dropdown-CgbtoeLA.js → Dropdown-DbXr3sb-.js} +1 -1
  9. package/dist/{Footer-DSJzETEs.js → Footer-CcrBEAxZ.js} +7 -7
  10. package/dist/{FooterBottom-BHQ-77CT.js → FooterBottom-Dtttgp4F.js} +1 -1
  11. package/dist/{FooterHelp-B1zOPX-K.js → FooterHelp-CfoW8dhY.js} +1 -1
  12. package/dist/{FooterLinks-BxVVi8kz.js → FooterLinks-CSAfsyJP.js} +2 -2
  13. package/dist/{Header-4bkW4MNM.js → Header-Ga_hYsOa.js} +6 -6
  14. package/dist/{InputGrouped-RLCBTqtp.js → InputGrouped-CIokpRn5.js} +2 -2
  15. package/dist/{Label-gTAMwE0j.js → Label-BM4vL0vA.js} +1 -1
  16. package/dist/{NewsletterSignup-BawMuwkc.js → NewsletterSignup-Dw9YbhEh.js} +2 -2
  17. package/dist/{Notification-icY33paf.js → Notification-BgmhEw6w.js} +3 -3
  18. package/dist/{PrefPanel-0iwUb8OU.js → PrefPanel-BG4jW8wc.js} +2 -2
  19. package/dist/{RoadmapDetails-BPt5Ava0.js → RoadmapDetails-DXxJNZh9.js} +2 -2
  20. package/dist/{Search-CF_Qyaff.js → Search-CpJ2XTLG.js} +2 -2
  21. package/dist/{YoutubeModal-CiBt7a4G.js → YoutubeModal-DGj2INF0.js} +1 -1
  22. package/dist/components/Button/index.js +1 -1
  23. package/dist/components/ButtonGroup/index.js +1 -1
  24. package/dist/components/Checkbox/index.js +1 -1
  25. package/dist/components/CodeBlock/index.js +2 -0
  26. package/dist/components/CopyCode/index.js +1 -1
  27. package/dist/components/Dropdown/index.js +1 -1
  28. package/dist/components/Footer/CookiePolicyModal.js +1 -1
  29. package/dist/components/Footer/FooterBottom.js +1 -1
  30. package/dist/components/Footer/FooterHelp.js +1 -1
  31. package/dist/components/Footer/FooterLinks.js +1 -1
  32. package/dist/components/Footer/YoutubeModal.js +1 -1
  33. package/dist/components/Footer/index.js +1 -1
  34. package/dist/components/Header/index.js +1 -1
  35. package/dist/components/InputGrouped/index.js +1 -1
  36. package/dist/components/Label/index.js +1 -1
  37. package/dist/components/Modal/ModalContactFooter.js +2 -2
  38. package/dist/components/Modal/index.js +2 -2
  39. package/dist/components/NewsletterSignup/index.js +1 -1
  40. package/dist/components/Notification/index.js +1 -1
  41. package/dist/components/PrefPanel/index.js +1 -1
  42. package/dist/components/RoadmapDetails/index.js +1 -1
  43. package/dist/components/Search/index.js +1 -1
  44. package/dist/{esm-Co_Guu6S.js → esm-CDDjSK4f.js} +1 -1
  45. package/dist/highsoft-ui.css +1 -1
  46. package/dist/lib/components/CodeBlock/index.d.ts +48 -0
  47. package/dist/lib/main.d.ts +2 -0
  48. package/dist/main.js +31 -30
  49. package/dist/scss/variables.scss +22 -0
  50. package/package.json +4 -3
@@ -0,0 +1,48 @@
1
+ import { HTMLAttributes } from 'react';
2
+ export interface CodeBlockProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {
3
+ /**
4
+ * Raw code text, also used by the copy button. Lines ending with a
5
+ * `// [!code ++]` or `// [!code --]` marker render as added (green) / removed
6
+ * (red). The copy button copies the resulting code (markers stripped, removed
7
+ * lines dropped).
8
+ */
9
+ code: string;
10
+ /**
11
+ * Pre-highlighted HTML (e.g. from Shiki). Takes precedence over the built-in
12
+ * highlighter — use it for SSR or custom themes. Rendered as-is.
13
+ */
14
+ html?: string;
15
+ /** Language key — drives the header icon/badge/label and the highlighter grammar. */
16
+ lang?: string;
17
+ /** Show line numbers in a left gutter (default: `true`). */
18
+ showLines?: boolean;
19
+ /** Syntax-highlight the code with the built-in Prism highlighter (default: `true`). */
20
+ syntax?: boolean;
21
+ /**
22
+ * Parse `[!code ++]` / `[!code --]` diff markers in `code` (default: `true`).
23
+ * Set `false` to render code that literally contains those tokens.
24
+ */
25
+ diff?: boolean;
26
+ /** Soft-wrap long lines (default: `true`). Set `false` for horizontal scrolling. */
27
+ wrap?: boolean;
28
+ /** Accessible label for the copy button (default: `'Copy code'`). */
29
+ copyLabel?: string;
30
+ }
31
+ /**
32
+ * Code viewer — gray outer frame, white inner card, a language badge/icon and an
33
+ * integrated copy button. Syntax colors, line numbers and diff lines all work
34
+ * out of the box from plain `code`; all colors come from `--HS-*` / token-driven
35
+ * CSS vars, so light/dark mode is automatic.
36
+ *
37
+ * @example
38
+ * ```tsx
39
+ * <CodeBlock lang="ts" code={src} />
40
+ *
41
+ * <CodeBlock
42
+ * lang="ts"
43
+ * code={`const a = 1 // [!code --]
44
+ * const a = 2 // [!code ++]`}
45
+ * />
46
+ * ```
47
+ */
48
+ export declare const CodeBlock: import('react').ForwardRefExoticComponent<CodeBlockProps & import('react').RefAttributes<HTMLDivElement>>;
@@ -16,6 +16,8 @@ export type { HeaderProps, HeaderPosition, SubHeaderItem } from './components/He
16
16
  export { Box } from './components/Box';
17
17
  export { CopyCode } from './components/CopyCode';
18
18
  export type { CopyCodeProps } from './components/CopyCode';
19
+ export { CodeBlock } from './components/CodeBlock';
20
+ export type { CodeBlockProps } from './components/CodeBlock';
19
21
  export { Icon } from './components/Icon';
20
22
  export { Link } from './components/Link';
21
23
  export { ProductIcon } from './components/ProductIcon';
package/dist/main.js CHANGED
@@ -1,32 +1,33 @@
1
1
  import { c as e, d as t, r as n, s as r, u as i } from "./utils-K9S_6_Eq.js";
2
2
  import { t as a } from "./Box-BZgeSeCV.js";
3
- import { t as o } from "./Button-CTdphXmG.js";
4
- import { t as s } from "./CopyCode-DS-3fQBn.js";
5
- import { t as c } from "./Icon-VeXJMj8Q.js";
6
- import { t as l } from "./Link-CYR92_U0.js";
7
- import { t as u } from "./ProductIcon-DFLAYWbu.js";
8
- import { t as d } from "./FrameworkIcon-Ds6WrxO0.js";
9
- import { t as f } from "./ButtonGroup-D5_sI3QL.js";
10
- import { t as p } from "./InputSolo-2RPRX0wM.js";
11
- import { i as m, n as h, r as g, t as _ } from "./InputGrouped-RLCBTqtp.js";
12
- import { t as v } from "./Container-BDssaLig.js";
13
- import { t as y } from "./DiscordInvite-CLYxexdH.js";
14
- import { t as b } from "./Heading-DNDHqYWO.js";
15
- import { t as x } from "./Typography-AvvBRu-u.js";
16
- import { t as S } from "./Logo-DTfFHBgU.js";
17
- import { t as C } from "./NewsletterSignup-BawMuwkc.js";
18
- import { n as w, r as T, t as E } from "./Dropdown-CgbtoeLA.js";
19
- import { t as D } from "./PrefPanel-0iwUb8OU.js";
20
- import { n as O, t as k } from "./Label-gTAMwE0j.js";
21
- import { t as A } from "./Footer-DSJzETEs.js";
22
- import { n as j } from "./GPTInput-C0YG1990.js";
23
- import { t as M } from "./Notification-icY33paf.js";
24
- import { n as N, t as P } from "./Header-4bkW4MNM.js";
25
- import { t as F } from "./Tabs-BuDaPqdN.js";
26
- import { n as I, t as L } from "./RadioBox-o1Ssyj0s.js";
27
- import { n as R, t as z } from "./Checkbox-Yg8sUFcu.js";
28
- import { Modal as B } from "./components/Modal/index.js";
29
- import { t as V } from "./RoadmapDetails-BPt5Ava0.js";
30
- import { ModalContactFooter as H } from "./components/Modal/ModalContactFooter.js";
31
- import { ThemeLoader as U, themeLoaderScript as W } from "./components/ThemeLoader/index.js";
32
- export { a as Box, o as Button, f as ButtonGroup, z as Checkbox, R as CheckboxGroup, v as Container, s as CopyCode, y as DiscordInvite, E as Dropdown, w as DropdownItem, T as DropdownSeparator, A as Footer, _ as FormGroup, h as FormRow, d as FrameworkIcon, j as GPTInput, P as Header, b as Heading, c as Icon, g as InputGrouped, p as InputSolo, k as Label, l as Link, S as Logo, B as Modal, H as ModalContactFooter, O as NewTag, C as NewsletterSignup, M as Notification, D as PrefPanel, u as ProductIcon, L as RadioBox, I as RadioBoxGroup, V as RoadmapDetails, m as SelectGrouped, N as SubHeader, F as Tabs, U as ThemeLoader, i as ThemeProvider, x as Typography, W as themeLoaderScript, n as useClipboard, t as useNextTheme, r as useSuccessFlash, e as useTheme };
3
+ import { t as o } from "./Button-Dc8NFRWQ.js";
4
+ import { t as s } from "./CopyCode-DH9Jh7PD.js";
5
+ import { t as c } from "./CodeBlock-DtYddgyU.js";
6
+ import { t as l } from "./FrameworkIcon-Ds6WrxO0.js";
7
+ import { t as u } from "./Icon-VeXJMj8Q.js";
8
+ import { t as d } from "./Link-CYR92_U0.js";
9
+ import { t as f } from "./ProductIcon-DFLAYWbu.js";
10
+ import { t as p } from "./ButtonGroup-CYmrw7gQ.js";
11
+ import { t as m } from "./InputSolo-2RPRX0wM.js";
12
+ import { i as h, n as g, r as _, t as v } from "./InputGrouped-CIokpRn5.js";
13
+ import { t as y } from "./Container-BDssaLig.js";
14
+ import { t as b } from "./DiscordInvite-CLYxexdH.js";
15
+ import { t as x } from "./Heading-DNDHqYWO.js";
16
+ import { t as S } from "./Typography-AvvBRu-u.js";
17
+ import { t as C } from "./Logo-DTfFHBgU.js";
18
+ import { t as w } from "./NewsletterSignup-Dw9YbhEh.js";
19
+ import { n as T, r as E, t as D } from "./Dropdown-DbXr3sb-.js";
20
+ import { t as O } from "./PrefPanel-BG4jW8wc.js";
21
+ import { n as k, t as A } from "./Label-BM4vL0vA.js";
22
+ import { t as j } from "./Footer-CcrBEAxZ.js";
23
+ import { n as M } from "./GPTInput-C0YG1990.js";
24
+ import { t as N } from "./Notification-BgmhEw6w.js";
25
+ import { n as P, t as F } from "./Header-Ga_hYsOa.js";
26
+ import { t as I } from "./Tabs-BuDaPqdN.js";
27
+ import { n as L, t as R } from "./RadioBox-o1Ssyj0s.js";
28
+ import { n as z, t as B } from "./Checkbox-CErz7eBz.js";
29
+ import { Modal as V } from "./components/Modal/index.js";
30
+ import { t as H } from "./RoadmapDetails-DXxJNZh9.js";
31
+ import { ModalContactFooter as U } from "./components/Modal/ModalContactFooter.js";
32
+ import { ThemeLoader as W, themeLoaderScript as G } from "./components/ThemeLoader/index.js";
33
+ export { a as Box, o as Button, p as ButtonGroup, B as Checkbox, z as CheckboxGroup, c as CodeBlock, y as Container, s as CopyCode, b as DiscordInvite, D as Dropdown, T as DropdownItem, E as DropdownSeparator, j as Footer, v as FormGroup, g as FormRow, l as FrameworkIcon, M as GPTInput, F as Header, x as Heading, u as Icon, _ as InputGrouped, m as InputSolo, A as Label, d as Link, C as Logo, V as Modal, U as ModalContactFooter, k as NewTag, w as NewsletterSignup, N as Notification, O as PrefPanel, f as ProductIcon, R as RadioBox, L as RadioBoxGroup, H as RoadmapDetails, h as SelectGrouped, P as SubHeader, I as Tabs, W as ThemeLoader, i as ThemeProvider, S as Typography, G as themeLoaderScript, n as useClipboard, t as useNextTheme, r as useSuccessFlash, e as useTheme };
@@ -840,6 +840,17 @@ $body-1000: var(--typography-size-1000);
840
840
  --icon-multicolor-multicolor-brand-key-50: var(--primitives-neutral-50);
841
841
  --icon-multicolor-multicolor-brand-key-500: var(--primitives-neutral-500);
842
842
  --icon-single-line-color: var(--primitives-neutral-1000);
843
+
844
+ /* Code Block & Boxes - Light Mode */
845
+ --boxes-stroke: var(--primitives-neutral-100);
846
+ --code-block-background-inner: var(--primitives-neutral-0);
847
+ --code-block-background-outer: var(--primitives-neutral-75);
848
+ --code-block-markdown-code-background: var(--primitives-success-100);
849
+ --code-block-markdown-code-stroke: var(--primitives-success-200);
850
+ --code-block-markdown-code-text: var(--primitives-success-800);
851
+ --code-block-stroke-inner: var(--primitives-neutral-100);
852
+ --code-block-text-line-numbers: var(--primitives-neutral-300);
853
+ --code-block-text-primary: var(--primitives-neutral-1000);
843
854
  }
844
855
 
845
856
  /* Semantics - Dark */
@@ -950,4 +961,15 @@ $body-1000: var(--typography-size-1000);
950
961
  --icon-multicolor-multicolor-brand-key-50: var(--primitives-neutral-850);
951
962
  --icon-multicolor-multicolor-brand-key-500: var(--primitives-neutral-400);
952
963
  --icon-single-line-color: var(--primitives-neutral-0);
964
+
965
+ /* Code Block & Boxes - Dark Mode */
966
+ --boxes-stroke: var(--primitives-neutral-900);
967
+ --code-block-background-inner: var(--primitives-neutral-950);
968
+ --code-block-background-outer: var(--primitives-neutral-1000);
969
+ --code-block-markdown-code-background: var(--primitives-success-300);
970
+ --code-block-markdown-code-stroke: var(--primitives-success-400);
971
+ --code-block-markdown-code-text: var(--primitives-success-800);
972
+ --code-block-stroke-inner: var(--primitives-neutral-800);
973
+ --code-block-text-line-numbers: var(--primitives-neutral-400);
974
+ --code-block-text-primary: var(--primitives-neutral-200);
953
975
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "highsoft-ui",
3
- "version": "1.0.136",
3
+ "version": "1.0.138",
4
4
  "description": "Highsoft UI",
5
5
  "type": "module",
6
6
  "repository": {
@@ -70,12 +70,14 @@
70
70
  "modern-normalize": "^3.0.1",
71
71
  "next-themes": "^0.4.6",
72
72
  "radix-ui": "^1.4.1",
73
- "react-icons": "^5.5.0"
73
+ "react-icons": "^5.5.0",
74
+ "react-syntax-highlighter": "^16.1.1"
74
75
  },
75
76
  "devDependencies": {
76
77
  "@babel/runtime": "^7.27.0",
77
78
  "@eslint/js": "^9.2.0",
78
79
  "@fontsource-variable/ibm-plex-sans": "^5.2.5",
80
+ "@fontsource/ibm-plex-mono": "^5.2.7",
79
81
  "@storybook/react": "^10.2.19",
80
82
  "@storybook/react-vite": "^10.2.19",
81
83
  "@types/node": "^20.12.7",
@@ -98,7 +100,6 @@
98
100
  "prettier": "^3.5.3",
99
101
  "react": "^19.2.0",
100
102
  "react-dom": "^19.2.0",
101
- "react-syntax-highlighter": "^16.1.1",
102
103
  "sass": "^1.75.0",
103
104
  "storybook": "^10.2.19",
104
105
  "stylelint": "^17.0.0",