@hypothesis/frontend-shared
Version:
Shared components, styles and utilities for Hypothesis projects
225 lines • 7.83 kB
JavaScript
var _jsxFileName = "/home/runner/work/frontend-shared/frontend-shared/src/pattern-library/components/patterns/UsingComponents.js";
import Library from '../Library';
import Next from '../LibraryNext';
import { jsxDEV as _jsxDEV } from "preact/jsx-dev-runtime";
import { Fragment as _Fragment } from "preact/jsx-dev-runtime";
export default function UsingComponentsPage() {
return _jsxDEV(Library.Page, {
title: "Using components",
intro: _jsxDEV(_Fragment, {
children: _jsxDEV("p", {
children: ["This guide applies to updated (", '"next"', ") components only."]
}, void 0, true, {
fileName: _jsxFileName,
lineNumber: 11,
columnNumber: 11
}, this)
}, void 0, false),
children: [_jsxDEV(Library.Pattern, {
title: "Component categories",
children: _jsxDEV("ul", {
children: [_jsxDEV("li", {
children: [_jsxDEV("strong", {
children: "Simple components"
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 18,
columnNumber: 13
}, this), ": Opinionated, simple components that apply design patterns. Example: ", _jsxDEV("code", {
children: "Spinner"
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 19,
columnNumber: 50
}, this), "."]
}, void 0, true, {
fileName: _jsxFileName,
lineNumber: 17,
columnNumber: 11
}, this), _jsxDEV("li", {
children: [_jsxDEV("strong", {
children: "Presentational components"
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 22,
columnNumber: 13
}, this), ": Composable components with customization flexibility. Example: ", _jsxDEV("code", {
children: "Button"
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 23,
columnNumber: 54
}, this), ",", ' ', _jsxDEV("code", {
children: "Link"
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 24,
columnNumber: 13
}, this), "."]
}, void 0, true, {
fileName: _jsxFileName,
lineNumber: 21,
columnNumber: 11
}, this), _jsxDEV("li", {
children: [_jsxDEV("strong", {
children: "Composite components"
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 27,
columnNumber: 13
}, this), ": These components are combinations of presentational components arranged and styled in a particular way to satisfy a use case. Example:", ' ', _jsxDEV("code", {
children: "ScrollBox"
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 30,
columnNumber: 13
}, this), "."]
}, void 0, true, {
fileName: _jsxFileName,
lineNumber: 26,
columnNumber: 11
}, this)]
}, void 0, true, {
fileName: _jsxFileName,
lineNumber: 16,
columnNumber: 9
}, this)
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 15,
columnNumber: 7
}, this), _jsxDEV(Library.Pattern, {
title: "Component API",
children: [_jsxDEV("p", {
children: "The props accepted by a component combine:"
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 35,
columnNumber: 9
}, this), _jsxDEV("ul", {
children: [_jsxDEV("li", {
children: [_jsxDEV("strong", {
children: "Common props"
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 38,
columnNumber: 13
}, this), " available to all components in its category"]
}, void 0, true, {
fileName: _jsxFileName,
lineNumber: 37,
columnNumber: 11
}, this), _jsxDEV("li", {
children: [_jsxDEV("strong", {
children: "Specific props"
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 42,
columnNumber: 13
}, this), " for the component"]
}, void 0, true, {
fileName: _jsxFileName,
lineNumber: 41,
columnNumber: 11
}, this)]
}, void 0, true, {
fileName: _jsxFileName,
lineNumber: 36,
columnNumber: 9
}, this), _jsxDEV("p", {
children: ["Documentation pages for components cover the props specific to the component, and call out any deviation of the component from its", ' ', "category's", " common props."]
}, void 0, true, {
fileName: _jsxFileName,
lineNumber: 46,
columnNumber: 9
}, this), _jsxDEV(Library.Example, {
title: "Simple components"
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 52,
columnNumber: 9
}, this), _jsxDEV("p", {
children: [_jsxDEV("strong", {
children: "Simple components"
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 54,
columnNumber: 11
}, this), " are opinionated and take only documented, component-specific props."]
}, void 0, true, {
fileName: _jsxFileName,
lineNumber: 53,
columnNumber: 9
}, this), _jsxDEV(Library.Example, {
title: "Presentational components"
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 57,
columnNumber: 9
}, this), _jsxDEV("p", {
children: [_jsxDEV("strong", {
children: "Presentational components"
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 59,
columnNumber: 11
}, this), " have more customization flexibility and take these common props:"]
}, void 0, true, {
fileName: _jsxFileName,
lineNumber: 58,
columnNumber: 9
}, this), _jsxDEV(Next.Code, {
size: "sm",
content: `/**
* @typedef PresentationalProps
* @prop {import('preact').ComponentChildren} [children]
* @prop {string|string[]} [classes] - Optional extra CSS classes to append to the
* component's default classes
* @prop {never} [className] - Use variants, props, unstyled component (when
* available) or classes instead
* @prop {import('preact').Ref<HTMLElement>} [elementRef] - Ref for component's
* outermost element.
*/
`
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 62,
columnNumber: 9
}, this), _jsxDEV(Library.Example, {
title: "Composite components",
children: _jsxDEV("p", {
children: ["Composite components accept the same common props as presentational components with the exception of", ' ', _jsxDEV("s", {
children: _jsxDEV("code", {
children: "classes"
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 81,
columnNumber: 15
}, this)
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 80,
columnNumber: 13
}, this), "."]
}, void 0, true, {
fileName: _jsxFileName,
lineNumber: 77,
columnNumber: 11
}, this)
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 76,
columnNumber: 9
}, this)]
}, void 0, true, {
fileName: _jsxFileName,
lineNumber: 34,
columnNumber: 7
}, this)]
}, void 0, true, {
fileName: _jsxFileName,
lineNumber: 7,
columnNumber: 5
}, this);
}
//# sourceMappingURL=UsingComponents.js.map