@xyd-js/components 0.0.0-build-8b31648-20250923204702 → 0.0.0-build-ec04de2-20250930214016

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 (37) hide show
  1. package/CHANGELOG.md +2 -2
  2. package/dist/{Button-6A7unxBT.js → Button-DaGbohmU.js} +2 -2
  3. package/dist/{Button-6A7unxBT.js.map → Button-DaGbohmU.js.map} +1 -1
  4. package/dist/{CodeSample-DA-TjeYa.js → CodeSample-CR2M8ZSQ.js} +2 -2
  5. package/dist/{CodeSample-DA-TjeYa.js.map → CodeSample-CR2M8ZSQ.js.map} +1 -1
  6. package/dist/{Icon-Dc8GILYQ.js → Icon-DNVZYQRd.js} +2 -2
  7. package/dist/{Icon-Dc8GILYQ.js.map → Icon-DNVZYQRd.js.map} +1 -1
  8. package/dist/{PageFirstSlide-CWQbuuIw.js → PageFirstSlide-cMlCilou.js} +2 -2
  9. package/dist/{PageFirstSlide-CWQbuuIw.js.map → PageFirstSlide-cMlCilou.js.map} +1 -1
  10. package/dist/{TabsAnalytics-D88SsAna.js → TabsAnalytics-CTn2UVp2.js} +2 -2
  11. package/dist/{TabsAnalytics-D88SsAna.js.map → TabsAnalytics-CTn2UVp2.js.map} +1 -1
  12. package/dist/{Update-ITj2CgIR.js → Update-C5JrIUtZ.js} +2 -2
  13. package/dist/{Update-ITj2CgIR.js.map → Update-C5JrIUtZ.js.map} +1 -1
  14. package/dist/{VideoGuide-B5GYVCMy.js → VideoGuide-KhfKuGJQ.js} +2 -2
  15. package/dist/{VideoGuide-B5GYVCMy.js.map → VideoGuide-KhfKuGJQ.js.map} +1 -1
  16. package/dist/{_rollupPluginBabelHelpers-iq1gUDHm.js → _rollupPluginBabelHelpers-jB-N4e5C.js} +1 -1
  17. package/dist/_rollupPluginBabelHelpers-jB-N4e5C.js.map +1 -0
  18. package/dist/coder.d.ts +1 -0
  19. package/dist/coder.js +1 -1
  20. package/dist/content.d.ts +1 -0
  21. package/dist/content.js +1 -1
  22. package/dist/index.css +17 -17
  23. package/dist/layouts.js +1 -1
  24. package/dist/pages.js +1 -1
  25. package/dist/system.js +1 -1
  26. package/dist/{useUXClick-BytfW2o9.js → useUXClick-ClOrrTc_.js} +2 -2
  27. package/dist/{useUXClick-BytfW2o9.js.map → useUXClick-ClOrrTc_.js.map} +1 -1
  28. package/dist/{useUXEvents-CnzubHLH.js → useUXEvents-Cf7JR4Jf.js} +1 -1
  29. package/dist/{useUXEvents-CnzubHLH.js.map → useUXEvents-Cf7JR4Jf.js.map} +1 -1
  30. package/dist/{useUXScrollDepth-CIw1SSDV.js → useUXScrollDepth-C9D0GGmR.js} +1 -1
  31. package/dist/{useUXScrollDepth-CIw1SSDV.js.map → useUXScrollDepth-C9D0GGmR.js.map} +1 -1
  32. package/dist/uxsdk.js +1 -1
  33. package/dist/writer.js +1 -1
  34. package/package.json +2 -2
  35. package/src/coder/CodeSample/CodeSample.tsx +5 -1
  36. package/src/coder/CodeTabs/CodeTabs.tsx +120 -105
  37. package/dist/_rollupPluginBabelHelpers-iq1gUDHm.js.map +0 -1
@@ -24,16 +24,18 @@ export interface CodeSampleProps {
24
24
  descriptionHead?: string
25
25
  descriptionContent?: string | React.ReactNode
26
26
  descriptionIcon?: string
27
+ markdownFormat?: boolean
27
28
  kind?: "secondary"
28
29
  controlByMeta?: boolean // TODO: BETTER IN THE FUTURE
29
30
  }
30
31
 
31
- const CodeContext = React.createContext<{
32
+ export const CodeContext = React.createContext<{
32
33
  size?: "full"
33
34
  lineNumbers?: boolean
34
35
  descriptionHead?: string
35
36
  descriptionContent?: string | React.ReactNode
36
37
  descriptionIcon?: string
38
+ markdownFormat?: boolean
37
39
  }>({})
38
40
 
39
41
  export function CodeSample(props: CodeSampleProps) {
@@ -58,6 +60,7 @@ function $ThemedCodeSample(props: CodeSampleProps) {
58
60
  descriptionHead: props.descriptionHead,
59
61
  descriptionContent: props.descriptionContent,
60
62
  descriptionIcon: props.descriptionIcon,
63
+ markdownFormat: props.markdownFormat,
61
64
  }}>
62
65
  <Code.Pre
63
66
  codeblock={highlighted[0]}
@@ -85,6 +88,7 @@ function $ThemedCodeSample(props: CodeSampleProps) {
85
88
  descriptionHead: props.descriptionHead,
86
89
  descriptionContent: props.descriptionContent,
87
90
  descriptionIcon: props.descriptionIcon,
91
+ markdownFormat: props.markdownFormat,
88
92
  }}>
89
93
  <$CodeSampleTabs
90
94
  description={props.description}
@@ -1,128 +1,143 @@
1
- import React, { useState, useEffect } from "react";
2
- import {Tabs as TabsPrimitive} from "radix-ui"; // TODO: remove and use separation
3
- import {
4
- HighlightedCode,
5
- } from "codehike/code"
1
+ import React, { useState, useEffect, useContext } from "react";
2
+ import { Tabs as TabsPrimitive } from "radix-ui"; // TODO: remove and use separation
3
+ import { HighlightedCode } from "codehike/code";
6
4
 
7
- import {
8
- CodeCopy,
9
- } from "../CodeCopy";
5
+ import { CodeCopy } from "../CodeCopy";
10
6
  import * as cn from "./CodeTabs.styles"; // TODO: style by highlighted?
11
7
  import { SyntaxHighlightedCode } from "../CodeTheme/CodeTheme";
12
8
  import { useCodeSampleAnalytics } from "../CodeSample/CodeSampleAnalytics";
13
9
  import { useUXEvents } from "../../uxsdk";
10
+ import { CodeContext } from "../CodeSample/CodeSample";
14
11
 
15
12
  export interface CodeTabsProps {
16
- description: string;
17
- highlighted: SyntaxHighlightedCode[]
18
- className?: string
19
- controlByMeta?: boolean // TODO: BETTER IN THE FUTURE
13
+ description: string;
14
+ highlighted: SyntaxHighlightedCode[];
15
+ className?: string;
16
+ controlByMeta?: boolean; // TODO: BETTER IN THE FUTURE
20
17
  }
21
18
 
22
19
  export function withCodeTabs(PreComponent) {
23
- return function CodeTabs(props: CodeTabsProps) {
24
- const isSingle = props?.highlighted?.length === 1 && !props.description
25
- const defaultValue = props.highlighted[0]?.meta || props.highlighted[0]?.lang
26
- const [activeTab, setActiveTab] = useState(defaultValue)
27
-
28
- const codeSampleAnalytics = useCodeSampleAnalytics()
29
- const ux = useUXEvents()
30
-
31
- // Reset active tab when highlighted prop changes
32
- useEffect(() => {
33
- setActiveTab(defaultValue)
34
- }, [defaultValue])
35
-
36
- useEffect(() => {
37
- codeSampleAnalytics.setActiveTab(activeTab)
38
- }, [])
39
-
40
- function changeTab(value: string) {
41
- setActiveTab(value)
42
- codeSampleAnalytics.setActiveTab(value)
43
- ux.docs.code.tab_change({tab: value})
44
- }
45
-
46
- if (props?.highlighted?.length === 0) {
47
- return null
48
- }
20
+ return function CodeTabs(props: CodeTabsProps) {
21
+ const isSingle = props?.highlighted?.length === 1 && !props.description;
22
+ const defaultValue =
23
+ props.highlighted[0]?.meta || props.highlighted[0]?.lang;
24
+ const [activeTab, setActiveTab] = useState(defaultValue);
25
+ const {markdownFormat} = useContext(CodeContext);
26
+
27
+ const codeSampleAnalytics = useCodeSampleAnalytics();
28
+ const ux = useUXEvents();
29
+
30
+ // Reset active tab when highlighted prop changes
31
+ useEffect(() => {
32
+ setActiveTab(defaultValue);
33
+ }, [defaultValue]);
34
+
35
+ useEffect(() => {
36
+ codeSampleAnalytics.setActiveTab(activeTab);
37
+ }, []);
38
+
39
+ function changeTab(value: string) {
40
+ setActiveTab(value);
41
+ codeSampleAnalytics.setActiveTab(value);
42
+ ux.docs.code.tab_change({ tab: value });
43
+ }
49
44
 
50
- return (
51
- <xyd-codetabs className={`${cn.CodeTabsHost} ${props.className || ""}`}>
52
- <TabsPrimitive.Root
53
- part="root"
54
- data-single={String(isSingle)}
55
- data-nodescription={!props.description ? "true" : undefined}
56
- className={`${cn.CodeTabsRoot}`}
57
- style={props.highlighted[0]?.style}
58
- value={activeTab}
59
- onValueChange={changeTab}
60
- >
61
- <$LanguageTabSwitcher
62
- description={props.description}
63
- highlighted={props.highlighted}
64
- />
45
+ if (props?.highlighted?.length === 0) {
46
+ return null;
47
+ }
65
48
 
66
- {props.highlighted?.map((codeblock, i) => (
67
- <TabsPrimitive.Content value={codeblock.meta || codeblock.lang} key={i}>
68
- <PreComponent
69
- style={codeblock?.style || codeblock?.style}
70
- codeblock={codeblock}
71
- />
72
- </TabsPrimitive.Content>
73
- ))}
74
- </TabsPrimitive.Root>
75
- </xyd-codetabs>
76
- )
49
+ let ContentRoot = TabsPrimitive.Content
50
+ if (markdownFormat) { // TODO: BETTER IN THE FUTURE
51
+ ContentRoot = React.Fragment
77
52
  }
53
+
54
+ return (
55
+ <xyd-codetabs className={`${cn.CodeTabsHost} ${props.className || ""}`}>
56
+ <TabsPrimitive.Root
57
+ part="root"
58
+ data-single={String(isSingle)}
59
+ data-nodescription={!props.description ? "true" : undefined}
60
+ className={`${cn.CodeTabsRoot}`}
61
+ style={props.highlighted[0]?.style}
62
+ value={activeTab}
63
+ onValueChange={changeTab}
64
+ >
65
+ <$LanguageTabSwitcher
66
+ description={props.description}
67
+ highlighted={props.highlighted}
68
+ />
69
+
70
+ {props.highlighted?.map((codeblock, i) => (
71
+ <ContentRoot
72
+ value={codeblock.meta || codeblock.lang}
73
+ key={i}
74
+ >
75
+ <PreComponent
76
+ style={codeblock?.style || codeblock?.style}
77
+ codeblock={codeblock}
78
+ />
79
+ </ContentRoot>
80
+ ))}
81
+ </TabsPrimitive.Root>
82
+ </xyd-codetabs>
83
+ );
84
+ };
78
85
  }
79
86
 
80
87
  interface LanguageTabSwitcherProps {
81
- description: string;
82
- highlighted: HighlightedCode[]
88
+ description: string;
89
+ highlighted: HighlightedCode[];
83
90
  }
84
91
 
85
92
  function $LanguageTabSwitcher(props: LanguageTabSwitcherProps) {
86
- const isSingle = props?.highlighted?.length === 1 && !props.description
87
-
88
- const highlighted = props.highlighted.filter((item, index, self) =>
89
- index === self.findIndex((t) => (t.meta || t.lang) === (item.meta || item.lang))
90
- );
91
- return <xyd-codetabs-languages
92
- data-single={String(isSingle)}
93
- className={`
93
+ const isSingle = props?.highlighted?.length === 1 && !props.description;
94
+
95
+ const highlighted = props.highlighted.filter(
96
+ (item, index, self) =>
97
+ index ===
98
+ self.findIndex((t) => (t.meta || t.lang) === (item.meta || item.lang))
99
+ );
100
+ return (
101
+ <xyd-codetabs-languages
102
+ data-single={String(isSingle)}
103
+ className={`
94
104
  ${cn.CodeTabsLanguagesHost}
95
- `}>
96
-
97
- {
98
- props.description && <div part="description">
99
- <div part="description-item">
100
- {props.description}
101
- </div>
102
- </div>
103
- }
104
-
105
- <TabsPrimitive.List part="languages-list">
106
- {highlighted?.map(({ meta, lang }, i) => {
107
- if (isSingle) {
108
- return null
109
- }
110
- return <TabsPrimitive.Trigger
111
- part="language-trigger"
112
- value={meta || lang}
113
- key={i}
114
- >
115
- {meta || lang}
116
- </TabsPrimitive.Trigger>
117
- })}
118
- </TabsPrimitive.List>
119
-
120
- <div part="copy">
121
- {highlighted?.map((codeblock, i) => (
122
- <TabsPrimitive.Content value={codeblock.meta || codeblock.lang} asChild key={i}>
123
- <CodeCopy text={codeblock.value} />
124
- </TabsPrimitive.Content>
125
- ))}
105
+ `}
106
+ >
107
+ {props.description && (
108
+ <div part="description">
109
+ <div part="description-item">{props.description}</div>
126
110
  </div>
111
+ )}
112
+
113
+ <TabsPrimitive.List part="languages-list">
114
+ {highlighted?.map(({ meta, lang }, i) => {
115
+ if (isSingle) {
116
+ return null;
117
+ }
118
+ return (
119
+ <TabsPrimitive.Trigger
120
+ part="language-trigger"
121
+ value={meta || lang}
122
+ key={i}
123
+ >
124
+ {meta || lang}
125
+ </TabsPrimitive.Trigger>
126
+ );
127
+ })}
128
+ </TabsPrimitive.List>
129
+
130
+ <div part="copy">
131
+ {highlighted?.map((codeblock, i) => (
132
+ <TabsPrimitive.Content
133
+ value={codeblock.meta || codeblock.lang}
134
+ asChild
135
+ key={i}
136
+ >
137
+ <CodeCopy text={codeblock.value} />
138
+ </TabsPrimitive.Content>
139
+ ))}
140
+ </div>
127
141
  </xyd-codetabs-languages>
142
+ );
128
143
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"_rollupPluginBabelHelpers-iq1gUDHm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}