@kiwicom/orbit-components
Version:
Orbit-components is a React component library which provides developers with the easiest possible way of building Kiwi.com's products.
149 lines • 8.99 kB
TypeScript
import * as React from "react";
import type { Props } from "./types";
/**
* @orbit-doc-start
* README
* ----------
* # Heading
*
* To implement the Heading component into your project you'll need to add the import:
*
* ```jsx
* import Heading from "@kiwicom/orbit-components/lib/Heading";
* ```
*
* After adding import to your project you can use it simply like:
*
* ```jsx
* <Heading>Hello World!</Heading>
* ```
*
* ## Props
*
* The table below contains all types of props available in the Heading component.
*
* | Name | Type | Default | Description |
* | :-------------- | :------------------------- | :--------- | :-------------------------------------------------------------------------------------------------------------------------------- |
* | as | [`enum`](#enum) | `"div"` | Defines the HTML element to be rendered. See Accessibility tab. |
* | role | `"heading"` | | The role attribute of the element. Can only be defined if `as="div"`. If defined, `level` must be defined. See Accessibility tab. |
* | level | `number` | | The level of the Heading. Required if `role` is defined as `"heading"`. See Accessibility tab. |
* | children | `React.Node` | | The content of the Heading. |
* | dataTest | `string` | | Optional prop for testing purposes. |
* | align | [`enum`](#enum) | `start` | `text-align` of the Heading component. |
* | dataA11ySection | `string` | | ID for a SkipNavigation component. See Accessibility tab. |
* | id | `string` | | Adds `id` HTML attribute to an element. Expects a unique ID. |
* | inverted | `boolean` | | If `true`, the Heading color will be white. |
* | spaceAfter | `enum` | | Additional `margin-bottom` after component. |
* | type | [`enum`](#enum) | `"title0"` | The size type of the Heading. |
* | mediumMobile | [`Object`](#media-queries) | | Object for setting up properties for the mediumMobile viewport. [See Media queries](#media-queries) |
* | largeMobile | [`Object`](#media-queries) | | Object for setting up properties for the largeMobile viewport. [See Media queries](#media-queries) |
* | tablet | [`Object`](#media-queries) | | Object for setting up properties for the tablet viewport. [See Media queries](#media-queries) |
* | desktop | [`Object`](#media-queries) | | Object for setting up properties for the desktop viewport. [See Media queries](#media-queries) |
* | largeDesktop | [`Object`](#media-queries) | | Object for setting up properties for the largeDesktop viewport. [See Media queries](#media-queries) |
*
* ### enum
*
* | as | type | align | spaceAfter |
* | :------ | :------------------ | :-------- | :----------- |
* | `"h1"` | `"display"` | `start` | `"none"` |
* | `"h2"` | `"displaySubtitle"` | `end` | `"smallest"` |
* | `"h3"` | `"title0"` | `center` | `"small"` |
* | `"h4"` | `"title1"` | `justify` | `"normal"` |
* | `"h5"` | `"title2"` | | `"medium"` |
* | `"h6"` | `"title3"` | | `"large"` |
* | `"div"` | `"title4"` | | `"largest"` |
* | | `"title5"` | |
* | | `"title6"` | |
*
* ### Media Queries
*
* To make Heading responsive you can use props `mediumMobile`, `largeMobile`, `tablet`, `desktop` and `largeDesktop`,
* which match
* the [mediaQueries](https://github.com/kiwicom/orbit/tree/master/packages/orbit-components/src/utils/mediaQuery)
* functions and contain the following properties:
*
* | Name | Type | Default | Description |
* | :--------- | :-------------- | :--------- | :------------------------------------------ |
* | type | [`enum`](#enum) | `"title0"` | The size type of Heading. |
* | spaceAfter | `enum` | | Additional `margin-bottom` after component. |
*
*
* Accessibility
* -------------
* # Accessibility
*
* ## Heading
*
* The Heading component has been designed with accessibility in mind.
*
* The component offers flexibility in terms of the HTML element used for the root node, the `role` attribute, and the `level` attribute.
* These properties allow for the creation of semantic and accessible headings.
*
* | Name | Type | Description |
* | :---- | :------------------------------------------------------ | :--------------------------------------------------------------------------------------------------------------------- |
* | as | `"h1" \| "h2" \| "h3" \| "h4" \| "h5" \| "h6" \| "div"` | Defines the HTML element to be rendered. |
* | role | `"heading"` | Can only be used if `as="div"`. If defined, sets the role of the element to be "heading". |
* | level | `number` | Must be used if `as="div"` and `role="heading"`. Defines the `aria-level` of the rendered `div` with the heading role. |
*
* All the props above are optional by default.
*
* ### Example 1
*
* If the `as` prop is not provided, the component will render a `div` element.
* In this case, no `role` or `level` are defined by default, and the component will render just a `div` element.
*
* ```jsx
* <Heading>Hello World!</Heading>
* ```
*
* renders:
*
* ```html
* <div>Hello World!</div>
* ```
*
* It is not semantically wrong but won't tell screen readers that the element is a heading. This should be used only for decorative purposes.
*
* If the `as` prop is set to `"div"` (or undefined), it's possible to set the `role="heading` to indicate to assistive technologies that this element should be treated and formatted like a heading.
* This is the only accepted value for the `role` prop.
*
* In addition, if the `role` prop is set to `"heading"`, the `level` prop **must** be defined as well. It will tell assistive technologies the level of the heading.
* The `level` prop must be a number between 1 and 6 and cannot be used if the `role` prop is not set to `"heading"`.
*
* ```jsx
* <Heading as="div" role="heading" level={1}>
* Hello World!
* </Heading>
* ```
*
* renders:
*
* ```html
* <div role="heading" aria-level="1">Hello World!</div>
* ```
*
* ### Example 2
*
* If the `as` prop is set to `"h1"`, `"h2"`, `"h3"`, `"h4"`, `"h5"`, or `"h6"`, the component will render the corresponding HTML element.
* In that case, the `role` and `level` props **cannot** be used, since assistive technologies will recognize the element as a heading and its correct level automatically.
*
* ```jsx
* <Heading as="h1">Hello World!</Heading>
* ```
*
* renders:
*
* ```html
* <h1>Hello World!</h1>
* ```
*
* ### Compatibility with SkipNavigation
*
* The `dataA11ySection` prop can be used to link the Heading to a `SkipNavigation` component.
*
*
* @orbit-doc-end
*/
declare const Heading: ({ children, type, align, as: Component, level, role, dataTest, inverted, spaceAfter, dataA11ySection, id, mediumMobile, largeMobile, tablet, desktop, largeDesktop, }: Props) => React.JSX.Element;
export default Heading;
//# sourceMappingURL=index.d.ts.map