({ codeObject, componentName })
| 103 | } |
| 104 | |
| 105 | const CodeExample = ({ codeObject, componentName }) => { |
| 106 | const { tailwind, css, tsTailwind, tsCode, code, usage, dependencies } = codeObject; |
| 107 | const { props, hasChanges, demoOnlyProps, computedProps } = useComponentPropsContext(); |
| 108 | |
| 109 | const dynamicUsage = useMemo(() => { |
| 110 | if (!usage || !componentName || !props || Object.keys(props).length === 0) return usage; |
| 111 | |
| 112 | const mergedProps = { ...props, ...computedProps }; |
| 113 | return injectPropsIntoCode(usage, mergedProps, {}, componentName, demoOnlyProps); |
| 114 | }, [usage, props, computedProps, componentName, demoOnlyProps]); |
| 115 | |
| 116 | const renderCssSection = () => |
| 117 | css && ( |
| 118 | <> |
| 119 | <h2 className="demo-title">CSS</h2> |
| 120 | <CodeHighlighter snippetId="css" language="css" codeString={css} /> |
| 121 | </> |
| 122 | ); |
| 123 | |
| 124 | return ( |
| 125 | <> |
| 126 | <CliInstallation deps={dependencies} /> |
| 127 | |
| 128 | {dynamicUsage && ( |
| 129 | <div> |
| 130 | <h2 className="demo-title"> |
| 131 | Usage {hasChanges && <span style={{ color: colors.accent, fontSize: '12px' }}>(with your settings)</span>} |
| 132 | </h2> |
| 133 | <CodeHighlighter snippetId="usage" language="jsx" codeString={dynamicUsage} /> |
| 134 | </div> |
| 135 | )} |
| 136 | |
| 137 | {Object.entries(codeObject).map(([name, snippet]) => { |
| 138 | if (SKIP_KEYS.has(name)) return null; |
| 139 | if (name === 'usage') return null; |
| 140 | |
| 141 | if (name === 'code' || name === 'tsCode') { |
| 142 | return ( |
| 143 | <div key={name}> |
| 144 | <h2 className="demo-title">{name}</h2> |
| 145 | <CodeOptions> |
| 146 | {tailwind && ( |
| 147 | <Tailwind> |
| 148 | <CodeHighlighter snippetId="code" language="jsx" codeString={tailwind} /> |
| 149 | </Tailwind> |
| 150 | )} |
| 151 | {code && ( |
| 152 | <CSS> |
| 153 | <CodeHighlighter snippetId="code" language="jsx" codeString={code} /> |
| 154 | {css && renderCssSection()} |
| 155 | </CSS> |
| 156 | )} |
| 157 | {tsTailwind && ( |
| 158 | <TSTailwind> |
| 159 | <CodeHighlighter snippetId="code" language="tsx" codeString={tsTailwind} /> |
| 160 | </TSTailwind> |
| 161 | )} |
| 162 | {tsCode && ( |
nothing calls this directly
no test coverage detected