diff --git a/.storybook/manager.js b/.storybook/manager.js index b6a521c..b797428 100644 --- a/.storybook/manager.js +++ b/.storybook/manager.js @@ -1,6 +1,8 @@ // .storybook/manager.js import { addons } from '@storybook/addons' +import { themes } from '@storybook/theming' +import theme from './theme' addons.setConfig({ isFullscreen: false, @@ -10,7 +12,7 @@ addons.setConfig({ sidebarAnimations: true, enableShortcuts: true, isToolshown: true, - theme: undefined, + theme: theme, selectedPanel: undefined, initialActive: 'sidebar', sidebar: { diff --git a/.storybook/preview-head.html b/.storybook/preview-head.html index 8eaf97c..b2d7173 100644 --- a/.storybook/preview-head.html +++ b/.storybook/preview-head.html @@ -1 +1,3 @@ - + + + diff --git a/.storybook/preview.js b/.storybook/preview.js index 5eba9da..e91e9df 100644 --- a/.storybook/preview.js +++ b/.storybook/preview.js @@ -1 +1,14 @@ -export const parameters = {} +import { themes } from '@storybook/theming' +import theme from './theme' + +// or global addParameters +export const parameters = { + docs: { + theme: theme, + }, + previewTabs: { + 'storybook/docs/panel': { + hidden: true, + }, + }, +} diff --git a/.storybook/theme.js b/.storybook/theme.js new file mode 100644 index 0000000..e520853 --- /dev/null +++ b/.storybook/theme.js @@ -0,0 +1,16 @@ +import { create } from '@storybook/theming' + +export default create({ + base: 'light', + colorPrimary: '#24292f', + colorSecondary: '#0969da', + fontCode: + 'ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace', + textColor: '#24292f', + barTextColor: '#24292f', + barSelectedColor: '#24292f', + // brandTitle: 'SplitType', + // brandImage: '', + // brandUrl: '', + // brandTarget: '_self', +}) diff --git a/__stories__/01-basic.stories.js b/__stories__/01-basic.stories.js index e1b86a2..5ce09e4 100644 --- a/__stories__/01-basic.stories.js +++ b/__stories__/01-basic.stories.js @@ -8,11 +8,6 @@ const { words, chars } = count(children) export default { title: 'Tests/Basic', argTypes: { ...baseArgTypes }, - parameters: { - docs: { - page: null, - }, - }, } const Template = getTemplate({ children }) diff --git a/__stories__/assets/docs.css b/__stories__/assets/docs.css new file mode 100644 index 0000000..3b02a7a --- /dev/null +++ b/__stories__/assets/docs.css @@ -0,0 +1,77 @@ +@import 'variables.css'; + +body { + font-size: var(--font-body) !important; +} + +#docs-root .sbdocs { + font-size: var(--font-size); +} +.sbdocs-content > *:first-child { + margin-top: 0 !important; +} + +#docs-root .sbdocs-h1, +#docs-root .sbdocs-h2, +#docs-root .sbdocs-h3, +#docs-root .sbdocs-h4, +#docs-root .sbdocs-h5, +#docs-root .sbdocs-h5 { + margin-top: 24px; + margin-bottom: 16px; + font-weight: 600; + line-height: 1.25; +} + +#docs-root .sbdocs-h1 { + padding-bottom: 0.3em; + font-size: 2em; + border-bottom: 1px solid var(--color-border-muted); +} + +#docs-root .sbdocs-h2 { + padding-bottom: 0.3em; + font-size: 1.5em; + border-bottom: 1px solid var(--color-border-muted); +} + +#docs-root .sbdocs-h3 { + font-size: 1.25em; +} + +#docs-root .sbdocs-h4 { + font-size: 1em; +} + +/* Top level wrapper for documentation pages */ +#docs-root .sbdocs.sbdocs-wrapper { + padding: 2rem 20px; +} + +/* Inline code styles */ +#docs-root code { + font-family: var(--font-mono); + color: inherit; + padding: 0.2em 0.4em; + margin: 0; + font-size: var(--code-font-size); + background-color: var(--color-canvas-subtle); + border-radius: 6px; + -webkit-font-smoothing: auto !important; +} + +/* Code block container */ +#docs-root .docblock-source { + margin-top: 0; + margin-bottom: 16px; + box-shadow: none; + background-color: var(--color-canvas-subtle); + border: none; + font-size: var(--font-size); +} + +/* Code block */ +#docs-root pre.prismjs { + font-size: var(--code-font-size); + -webkit-font-smoothing: auto !important; +} diff --git a/__stories__/assets/prism.css b/__stories__/assets/prism.css new file mode 100644 index 0000000..9e01866 --- /dev/null +++ b/__stories__/assets/prism.css @@ -0,0 +1,203 @@ +/* PrismJS 1.28.0 +https://prismjs.com/download.html#themes=prism-coy&languages=markup+css+clike+javascript&plugins=highlight-keywords */ +code[class*='language-'], +pre[class*='language-'] { + color: #000; + background: 0 0; + font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; + font-size: 1em; + text-align: left; + white-space: pre; + word-spacing: normal; + word-break: normal; + word-wrap: normal; + line-height: 1.5; + -moz-tab-size: 4; + -o-tab-size: 4; + tab-size: 4; + -webkit-hyphens: none; + -moz-hyphens: none; + -ms-hyphens: none; + hyphens: none; +} +pre[class*='language-'] { + position: relative; + margin: 0.5em 0; + overflow: visible; + padding: 1px; +} +pre[class*='language-'] > code { + position: relative; + z-index: 1; + border-left: 10px solid #358ccb; + box-shadow: -1px 0 0 0 #358ccb, 0 0 0 1px #dfdfdf; + background-color: #fdfdfd; + background-image: linear-gradient( + transparent 50%, + rgba(69, 142, 209, 0.04) 50% + ); + background-size: 3em 3em; + background-origin: content-box; + background-attachment: local; +} +code[class*='language-'] { + max-height: inherit; + height: inherit; + padding: 0 1em; + display: block; + overflow: auto; +} +:not(pre) > code[class*='language-'], +pre[class*='language-'] { + background-color: #fdfdfd; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + margin-bottom: 1em; +} +:not(pre) > code[class*='language-'] { + position: relative; + padding: 0.2em; + border-radius: 0.3em; + color: #c92c2c; + border: 1px solid rgba(0, 0, 0, 0.1); + display: inline; + white-space: normal; +} +pre[class*='language-']:after, +pre[class*='language-']:before { + content: ''; + display: block; + position: absolute; + bottom: 0.75em; + left: 0.18em; + width: 40%; + height: 20%; + max-height: 13em; + box-shadow: 0 13px 8px #979797; + -webkit-transform: rotate(-2deg); + -moz-transform: rotate(-2deg); + -ms-transform: rotate(-2deg); + -o-transform: rotate(-2deg); + transform: rotate(-2deg); +} +pre[class*='language-']:after { + right: 0.75em; + left: auto; + -webkit-transform: rotate(2deg); + -moz-transform: rotate(2deg); + -ms-transform: rotate(2deg); + -o-transform: rotate(2deg); + transform: rotate(2deg); +} +#docs-root .token.block-comment, +#docs-root .token.cdata, +#docs-root .token.comment, +#docs-root .token.doctype, +#docs-root .token.prolog { + font-style: normal; + color: #7d8b99; +} +#docs-root .token.punctuation { + color: #5f6364; +} +#docs-root .token.boolean, +#docs-root .token.constant, +#docs-root .token.deleted, +#docs-root .token.function-name, +#docs-root .token.number, +#docs-root .token.symbol { + color: #c92c2c; +} + +#docs-root .token.builtin, +#docs-root .token.char, +#docs-root .token.inserted, +#docs-root .token.selector, +#docs-root .token.string, +#docs-root .token.tag.attr-value, +#docs-root .token.regex, +#docs-root .token.important { + color: #0a3069; +} + +#docs-root .token.entity, +#docs-root .token.url { + color: #a67f59; + background: rgba(255, 255, 255, 0.5); +} + +#docs-root .token.variable, +#docs-root .token.class-name { + color: #953800; +} + +#docs-root .token.tag { + color: #116329; +} +#docs-root .token.atrule, +#docs-root .token.attr-value, +#docs-root .token.keyword, +#docs-root .token.operator { + color: #cf222e; +} +#docs-root .token.module #docs-root .token.method, +#docs-root .token.property-access, +#docs-root .token.function { + color: #8250df; +} + +#docs-root .token.attr-name, +#docs-root .token.number, +#docs-root .token.property { + color: #0550ae; +} + +#docs-root .language-css .token.string, +#docs-root .style .token.string { + color: #a67f59; + background: rgba(255, 255, 255, 0.5); +} +#docs-root .token.important { + font-weight: 400; +} +#docs-root .token.bold { + font-weight: 700; +} +#docs-root .token.italic { + font-style: italic; +} +#docs-root .token.entity { + cursor: help; +} +#docs-root .token.namespace { + opacity: 0.7; +} +@media screen and (max-width: 767px) { + pre[class*='language-']:after, + pre[class*='language-']:before { + bottom: 14px; + box-shadow: none; + } +} +pre[class*='language-'].line-numbers.line-numbers { + padding-left: 0; +} +pre[class*='language-'].line-numbers.line-numbers code { + padding-left: 3.8em; +} +pre[class*='language-'].line-numbers.line-numbers .line-numbers-rows { + left: 0; +} +pre[class*='language-'][data-line] { + padding-top: 0; + padding-bottom: 0; + padding-left: 0; +} +pre[data-line] code { + position: relative; + padding-left: 4em; +} +pre .line-highlight { + margin-top: 0; +} diff --git a/__stories__/assets/styles.css b/__stories__/assets/stories.css similarity index 75% rename from __stories__/assets/styles.css rename to __stories__/assets/stories.css index cb1e5e2..e925e43 100644 --- a/__stories__/assets/styles.css +++ b/__stories__/assets/stories.css @@ -1,11 +1,6 @@ +@import 'variables.css'; :root { - --text: #333; - --code: #787282; - --accent: #fb7a7a; - --primary: #1ea7fd; - --primaryDark: #077cc5; - --primaryLight: #3bb4ff; - --fontSize: 32px; + --example-font-size: 32px; } body { @@ -13,6 +8,9 @@ body { padding: 0 !important; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji'; + font-size: var(--font-size); + line-height: 1.5; + color: var(--color-default-fg); } .container { @@ -38,12 +36,12 @@ body { } .target { - color: var(--text); + color: var(--color-default-fg); line-height: 1.5; letter-spacing: normal; font-kerning: none; font-variant-ligatures: none; - font-size: var(--fontSize); + font-size: var(--example-font-size); } /* Make sure nested elements have same font size */ @@ -67,13 +65,13 @@ Buttons and Links } .target a { - color: var(--primary); + color: var(--color-accent-fg); } .target a:hover, .target a:active { transition: all 100ms ease-in-out; - color: var(--primaryDark); + color: var(--color-accent-dark-fg); } .target button { @@ -84,8 +82,8 @@ Buttons and Links appearance: none; cursor: pointer; outline: none; - color: var(--primary); - border: solid 1px var(--primary); + color: var(--color-accent-fg); + border: solid 1px var(--color-accent-fg); padding: 4px 10px; border-radius: 6px; font-size: inherit; @@ -94,16 +92,16 @@ Buttons and Links } .target button:hover { - background: var(--primary); + background: var(--color-accent-fg); transition: all 100ms ease-in-out; color: #fff; } .target strong { - color: var(--accent); + color: var(--color-secondary-fg); } .target code { font-family: Courier; - color: var(--code); + color: var(--color-code-fg); } diff --git a/__stories__/assets/variables.css b/__stories__/assets/variables.css new file mode 100644 index 0000000..a8d25cf --- /dev/null +++ b/__stories__/assets/variables.css @@ -0,0 +1,15 @@ +:root { + --font-mono: ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, + Liberation Mono, monospace; + --font-body: -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, + sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji'; + --font-size: 16px; + --code-font-size: 85%; + --color-canvas-subtle: #f6f8fa; + --color-border-muted: #d8dee4; + --color-default-fg: #24292f; + --color-code-fg: #24292f; + --color-accent-fg: #0969da; + --color-accent-dark-fg: #0661c8; + --color-secondary-fg: #fb7a7a; +} diff --git a/__stories__/components/Example.svelte b/__stories__/components/Example.svelte index 2917200..66a7338 100644 --- a/__stories__/components/Example.svelte +++ b/__stories__/components/Example.svelte @@ -14,8 +14,6 @@ // Coerce children to an array const childrenArray = Array.isArray(children) ? children : [children] - // Reference the target element(s) - let targetElement // Reference to the container element let containerElement // Resizer observer @@ -48,7 +46,7 @@ // If supported, create a resize observer for the container element if (window.ResizeObserver !== undefined) { - resizeObserver = new ResizeObserver(debounce(handleResize, 350)) + resizeObserver = new ResizeObserver(debounce(handleResize, 100)) } // Support "types=none" as an alias for types="" @@ -56,7 +54,7 @@ onMount(() => { // Split the the target element(s) using the provided options - instance = SplitType.create(targetElement, options) + instance = SplitType.create('.target', options) resizeObserver.observe(containerElement) console.log(instance) }) @@ -68,6 +66,6 @@
Foo Bar
+``` + +```js +SplitType.create('#target') +``` + +Result + +```html +