diff --git a/packages/Code/README.md b/packages/code/README.md similarity index 100% rename from packages/Code/README.md rename to packages/code/README.md diff --git a/packages/Code/package.json b/packages/code/package.json similarity index 100% rename from packages/Code/package.json rename to packages/code/package.json diff --git a/packages/Code/src/Code.spec.tsx b/packages/code/src/Code.spec.tsx similarity index 81% rename from packages/Code/src/Code.spec.tsx rename to packages/code/src/Code.spec.tsx index 205807d3ba..4ed0d2d2ee 100644 --- a/packages/Code/src/Code.spec.tsx +++ b/packages/code/src/Code.spec.tsx @@ -11,9 +11,11 @@ const className = 'test-class'; describe('packages/Syntax', () => { describe('when multiline is true', () => { const { - container: { firstChild: codeRoot }, + container: { firstChild: containerRoot }, } = render({codeSnippet}); + const codeRoot = (containerRoot as HTMLElement).lastChild; + if (!codeRoot || !typeIs.element(codeRoot)) { throw new Error('Multiline code element not found'); } @@ -29,18 +31,20 @@ describe('packages/Syntax', () => { describe('when multiline is false', () => { const { - container: { firstChild: codeRoot }, + container: { firstChild: containerRoot }, } = render( {codeSnippet} , ); + const codeRoot = (containerRoot as HTMLElement).lastChild; + if (!codeRoot || !typeIs.element(codeRoot)) { throw new Error('Single line code element not found'); } - test('root element renders as a
tag', () => { + test('code wrapper element renders as a
tag', () => { expect(codeRoot.tagName).toBe('DIV'); }); diff --git a/packages/Code/src/Code.story.tsx b/packages/code/src/Code.story.tsx similarity index 100% rename from packages/Code/src/Code.story.tsx rename to packages/code/src/Code.story.tsx diff --git a/packages/Code/src/Code.tsx b/packages/code/src/Code.tsx similarity index 75% rename from packages/Code/src/Code.tsx rename to packages/code/src/Code.tsx index 65ab10c97d..6378300236 100644 --- a/packages/Code/src/Code.tsx +++ b/packages/code/src/Code.tsx @@ -8,7 +8,7 @@ import Syntax, { variantColors, } from '@leafygreen-ui/syntax'; import LineNumbers from './LineNumbers'; -import WindowChrome, { windowChromeHeight } from './WindowChrome'; +import WindowChrome from './WindowChrome'; function stringFragmentIsBlank(str: string): str is '' | ' ' { return str === '' || str === ' '; @@ -54,23 +54,20 @@ function useProcessedCodeSnippet(snippet: string): ProcessedCodeSnippet { const whiteSpace = 12; -const wrapperStyle = css` +const codeWrapperStyle = css` overflow-x: auto; - border: 1px solid; - border-left-width: 3px; - border-radius: 4px; + border-left: 2px solid; padding: ${whiteSpace}px; margin: 0; position: relative; `; -const wrapperStyleWithLineNumbers = css` +const codeWrapperStyleWithLineNumbers = css` padding-left: ${whiteSpace * 3.5}px; `; -const wrapperStyleWithWindowChrome = css` - padding-top: ${windowChromeHeight + whiteSpace}px; - border-left-width: 1px; +const codeWrapperStyleWithWindowChrome = css` + border-left: 0; `; function getWrapperVariantStyle(variant: Variant): string { @@ -143,62 +140,65 @@ function Code({ chromeTitle = '', ...rest }: CodeProps) { + const wrapperStyle = css` + display: inline-block; + border: 1px solid ${variantColors[variant][1]}; + border-radius: 4px; + overflow: hidden; + `; + const wrapperClassName = cx( - wrapperStyle, + codeWrapperStyle, getWrapperVariantStyle(variant), { - [wrapperStyleWithLineNumbers]: multiline && showLineNumbers, - [wrapperStyleWithWindowChrome]: showWindowChrome, + [codeWrapperStyleWithLineNumbers]: multiline && showLineNumbers, + [codeWrapperStyleWithWindowChrome]: showWindowChrome, }, className, ); const { content, lineCount } = useProcessedCodeSnippet(children); - const renderedCommonContent = ( - <> - {showWindowChrome && ( - - )} + const renderedWindowChrome = showWindowChrome && ( + + ); - - {content} - - + const renderedSyntaxComponent = ( + + {content} + ); if (!multiline) { return ( -
)} - className={wrapperClassName} - > - {renderedCommonContent} +
+ {renderedWindowChrome} + +
)} + className={wrapperClassName} + > + {renderedSyntaxComponent} +
); } return ( -
)}
-      className={wrapperClassName}
-    >
-      {showLineNumbers && (
-        
-      )}
-
-      {renderedCommonContent}
-    
+
+ {renderedWindowChrome} + +
)}
+        className={wrapperClassName}
+      >
+        {showLineNumbers && (
+          
+        )}
+
+        {renderedSyntaxComponent}
+      
+
); } diff --git a/packages/Code/src/LineNumbers.spec.tsx b/packages/code/src/LineNumbers.spec.tsx similarity index 100% rename from packages/Code/src/LineNumbers.spec.tsx rename to packages/code/src/LineNumbers.spec.tsx diff --git a/packages/Code/src/LineNumbers.tsx b/packages/code/src/LineNumbers.tsx similarity index 100% rename from packages/Code/src/LineNumbers.tsx rename to packages/code/src/LineNumbers.tsx diff --git a/packages/Code/src/WindowChrome.spec.tsx b/packages/code/src/WindowChrome.spec.tsx similarity index 100% rename from packages/Code/src/WindowChrome.spec.tsx rename to packages/code/src/WindowChrome.spec.tsx diff --git a/packages/Code/src/WindowChrome.tsx b/packages/code/src/WindowChrome.tsx similarity index 68% rename from packages/Code/src/WindowChrome.tsx rename to packages/code/src/WindowChrome.tsx index 1193fa02aa..2370f2634b 100644 --- a/packages/Code/src/WindowChrome.tsx +++ b/packages/code/src/WindowChrome.tsx @@ -5,34 +5,42 @@ import { Variant, variantColors } from '@leafygreen-ui/syntax'; import { darken } from 'polished'; export const windowChromeHeight = 28; +const controlSize = 12; +const controlSpacing = 8; +const borderRadius = 4; const windowChromeStyle = css` - height: ${windowChromeHeight}px; - position: absolute; - top: 0; - left: 0; - right: 0; display: flex; align-items: center; - justify-content: center; + justify-content: space-between; + height: ${windowChromeHeight}px; + padding-left: ${controlSize}px; + padding-right: ${controlSize}px; + border-radius: ${borderRadius}px ${borderRadius}px 0 0; `; const windowControlsStyle = css` - position: absolute; - left: 12px; - top: 0; - bottom: 0; - height: 12px; - margin: auto; display: flex; + height: ${controlSize}px; +`; + +const fakeControlsStyle = css` + height: ${controlSize}px; + width: ${controlSpacing * 3 + controlSize * 3}px; +`; + +const textStyle = css` + padding-left: ${controlSpacing}px; + padding-right: ${controlSpacing}px; + font-size: 14px; `; function WindowControl({ color }: { color: string }) { return (
- {chromeTitle} +
{chromeTitle}
+ +
); } diff --git a/packages/Code/src/index.ts b/packages/code/src/index.ts similarity index 100% rename from packages/Code/src/index.ts rename to packages/code/src/index.ts diff --git a/packages/Code/tsconfig.json b/packages/code/tsconfig.json similarity index 100% rename from packages/Code/tsconfig.json rename to packages/code/tsconfig.json diff --git a/packages/Syntax/README.md b/packages/syntax/README.md similarity index 100% rename from packages/Syntax/README.md rename to packages/syntax/README.md diff --git a/packages/Syntax/package.json b/packages/syntax/package.json similarity index 100% rename from packages/Syntax/package.json rename to packages/syntax/package.json diff --git a/packages/Syntax/src/Syntax.spec.tsx b/packages/syntax/src/Syntax.spec.tsx similarity index 100% rename from packages/Syntax/src/Syntax.spec.tsx rename to packages/syntax/src/Syntax.spec.tsx diff --git a/packages/Syntax/src/Syntax.story.tsx b/packages/syntax/src/Syntax.story.tsx similarity index 100% rename from packages/Syntax/src/Syntax.story.tsx rename to packages/syntax/src/Syntax.story.tsx diff --git a/packages/Syntax/src/Syntax.tsx b/packages/syntax/src/Syntax.tsx similarity index 100% rename from packages/Syntax/src/Syntax.tsx rename to packages/syntax/src/Syntax.tsx diff --git a/packages/Syntax/src/globalStyles.tsx b/packages/syntax/src/globalStyles.tsx similarity index 100% rename from packages/Syntax/src/globalStyles.tsx rename to packages/syntax/src/globalStyles.tsx diff --git a/packages/Syntax/src/index.ts b/packages/syntax/src/index.ts similarity index 100% rename from packages/Syntax/src/index.ts rename to packages/syntax/src/index.ts diff --git a/packages/Syntax/src/types.ts b/packages/syntax/src/types.ts similarity index 100% rename from packages/Syntax/src/types.ts rename to packages/syntax/src/types.ts diff --git a/packages/Syntax/tsconfig.json b/packages/syntax/tsconfig.json similarity index 100% rename from packages/Syntax/tsconfig.json rename to packages/syntax/tsconfig.json