{"data":{"allMdx":{"nodes":[{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/index.mdx","frontmatter":{"title":""},"rawBody":"import {HeroLayout} from '@primer/gatsby-theme-doctocat'\nimport InlineCode from '@primer/gatsby-theme-doctocat/src/components/inline-code'\n\nimport {Box as PRCBox} from '@primer/react'\nimport {Link, Button, Heading, InlineLink, Text} from '@primer/react-brand'\nimport {version} from '../../../packages/react/package.json'\nimport {LinkExternalIcon} from '@primer/octicons-react'\n\n<PRCBox\n  sx={{\n    p: 5,\n    mt: 5,\n  }}\n>\n  <Heading as=\"h4\">Primer Brand</Heading>\n  <Text as=\"p\">Read the installation instructions to get started.</Text>\n  <PRCBox\n    sx={{\n      mt: 4,\n      flexDirection: 'row',\n      display: 'flex',\n      flexWrap: 'wrap',\n      alignItems: 'stretch',\n      columnGap: '0.75rem',\n    }}\n  >\n    <p>\n      <Button as=\"a\" variant=\"primary\" href=\"/brand/getting-started\">\n        Installation instructions\n      </Button>\n    </p>\n    <p>\n      <Button\n        as=\"a\"\n        variant=\"secondary\"\n        href=\"/brand/storybook\"\n        target=\"_blank\"\n      >\n        Storybook\n      </Button>\n    </p>\n    <p>\n      <Button\n        as=\"a\"\n        variant=\"secondary\"\n        href=\"https://github.com/primer/brand\"\n        target=\"_blank\"\n      >\n        Contribute\n      </Button>\n    </p>\n  </PRCBox>\n  <PRCBox\n    sx={{\n      mt: 5,\n    }}\n  >\n    <Text as=\"p\">\n      <Text weight=\"semibold\">Latest release:</Text>{' '}\n      <PRCBox as=\"span\" sx={{mr: 3, display: 'inline-block'}}>\n        <InlineCode sx={{mr: 2}}>\n          <a href=\"https://github.com/primer/brand/releases\">v{version}</a>\n        </InlineCode>\n        .\n      </PRCBox>\n      <Text size=\"100\">\n        <a href=\"https://github.com/primer/brand/blob/main/packages/react/CHANGELOG.md\">\n          Read the change log <LinkExternalIcon />\n        </a>\n      </Text>\n    </Text>\n  </PRCBox>\n</PRCBox>\n\nexport default HeroLayout\n","parent":{"relativeDirectory":"","name":"index"}},{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/components/ActionMenu.mdx","frontmatter":{"title":"Action menu"},"rawBody":"---\ntitle: Action menu\nstatus: Experimental\nfigma: 'https://www.figma.com/file/BJ95AjraesmRCWsKA013GS/Primer-Brand?node-id=4912%3A32799'\nsource: https://github.com/primer/brand/tree/main/packages/react/src/ActionMenu/ActionMenu.tsx\nstorybook: '/brand/storybook/?path=/story/components-actionmenu-features--default'\ndescription: Use the action menu component to display a list of actions or selections that expand through a trigger button.\n---\n\nimport {Label} from '@primer/react'\nimport {PropTableValues} from '../../src/components'\nimport {actionMenuOverlaySides} from '@primer/react-brand'\n\n```js\nimport {ActionMenu} from '@primer/react-brand'\n```\n\n## Examples\n\n### Default\n\n```jsx live\n<ActionMenu onSelect={(newValue) => alert(`Pressed ${newValue}`)}>\n  <ActionMenu.Button>Open menu</ActionMenu.Button>\n  <ActionMenu.Overlay aria-label=\"GitHub features\">\n    <ActionMenu.Item value=\"Copilot\" selected>\n      Copilot\n    </ActionMenu.Item>\n    <ActionMenu.Item value=\"Codespaces\">Codespaces</ActionMenu.Item>\n    <ActionMenu.Item value=\"CodeQL\">CodeQL</ActionMenu.Item>\n  </ActionMenu.Overlay>\n</ActionMenu>\n```\n\n### Single selection\n\nIn single selection mode it is important to apply an `aria-label` to the\n`ActionMenu.Button` child. This provides the user with important and durable\ncontext on the selection they need to make.\n\n```javascript live noinline\nconst App = () => {\n  const [selection, setSelection] = React.useState('Copilot')\n\n  return (\n    <ActionMenu\n      onSelect={(newValue) => setSelection(newValue)}\n      selectionVariant=\"single\"\n    >\n      <ActionMenu.Button aria-label=\"Select a GitHub feature\">\n        {selection}\n      </ActionMenu.Button>\n      <ActionMenu.Overlay>\n        <ActionMenu.Item value=\"Copilot\" selected={'Copilot' === selection}>\n          Copilot\n        </ActionMenu.Item>\n        <ActionMenu.Item\n          value=\"Codespaces\"\n          selected={'Codespaces' === selection}\n        >\n          Codespaces\n        </ActionMenu.Item>\n        <ActionMenu.Item value=\"CodeQL\" selected={'CodeQL' === selection}>\n          CodeQL\n        </ActionMenu.Item>\n      </ActionMenu.Overlay>\n    </ActionMenu>\n  )\n}\n\nrender(<App />)\n```\n\n### Sizes\n\n`ActionMenu` is currently available in `small` and `medium` sizes, with the latter being the default.\n\n```jsx live\n<Stack direction=\"horizontal\" alignItems=\"center\" gap={112}>\n  <ActionMenu size=\"small\">\n    <ActionMenu.Button>Small</ActionMenu.Button>\n    <ActionMenu.Overlay aria-label=\"Menu items\">\n      <ActionMenu.Item value=\"Item 1\">Item 1</ActionMenu.Item>\n      <ActionMenu.Item value=\"Item 2\">Item 2</ActionMenu.Item>\n    </ActionMenu.Overlay>\n  </ActionMenu>\n  <ActionMenu size=\"medium\">\n    <ActionMenu.Button>Medium</ActionMenu.Button>\n    <ActionMenu.Overlay aria-label=\"Menu items\">\n      <ActionMenu.Item value=\"Item 1\">Item 1</ActionMenu.Item>\n      <ActionMenu.Item value=\"Item 2\">Item 2</ActionMenu.Item>\n    </ActionMenu.Overlay>\n  </ActionMenu>\n</Stack>\n```\n\n## Component props\n\n### ActionMenu <Label>Required</Label>\n\n| name               | type                                                              | default     | required | description                                                           |\n| ------------------ | ----------------------------------------------------------------- | ----------- | -------- | --------------------------------------------------------------------- |\n| `disabled`         | `boolean`                                                         | `false`     | `false`  | Controls the ActionMenu active/inactive state                         |\n| `open`             | `boolean`                                                         | `false`     | `false`  | Determines whether the ActionMenu is open by default                  |\n| `onSelect`         | `(newValue: string) => void`                                      |             | `false`  | Callback that is called when an item is selected                      |\n| `selectionVariant` | <PropTableValues values={['single', 'none']} addLineBreaks />     | `'none'`    | `false`  | The selection variant of the ActionMenu                               |\n| `menuAlignment`    | <PropTableValues values={['start', 'end']} addLineBreaks />       | `start`     | `false`  | Horizontal alignment of the menu relative to the bottom of the button |\n| `size`             | <PropTableValues values={['small', 'medium']} addLineBreaks />    | `medium`    | `false`  | Size configuration of the ActionMenu                                  |\n| `menuSide`         | <PropTableValues values={actionMenuOverlaySides} addLineBreaks /> | `undefined` | `false`  | Location of the menu overlay                                          |\n\n### ActionMenu.Button <Label>Required</Label>\n\n| name        | type           | default | required | description                        |\n| ----------- | -------------- | ------- | -------- | ---------------------------------- |\n| `className` | `string`       |         |          | Sets a custom class on the element |\n| `children`  | `ReactElement` |         |          |\n| `id`        | `string`       |         |          | Sets a custom `id`                 |\n\n### ActionMenu.Overlay <Label>Required</Label>\n\n| name         | type           | default | required | description                                                      |\n| ------------ | -------------- | ------- | -------- | ---------------------------------------------------------------- |\n| `aria-label` | `string`       |         | `true`   | Required for describing the relationship between button and menu |\n| `className`  | `string`       |         |          | Sets a custom class on the element                               |\n| `children`   | `ReactElement` |         |          |\n| `id`         | `string`       |         |          | Sets a custom `id`                                               |\n\n### ActionMenu.Item <Label>Required</Label>\n\n| name        | type           | default | required | description                                                   |\n| ----------- | -------------- | ------- | -------- | ------------------------------------------------------------- |\n| `className` | `string`       |         |          | Sets a custom class on the element                            |\n| `children`  | `ReactElement` |         |          |\n| `disabled`  | `boolean`      | `false` | `false`  | Allows control over an individual items active/inactive state |\n| `id`        | `string`       |         |          | Sets a custom `id`                                            |\n| `selected`  | `boolean`      |         |          | Indicates the item is selected in `single` selection mode     |\n| `value`     | `string`       |         |          | The underlying value passed to the selection handler          |\n","parent":{"relativeDirectory":"components","name":"ActionMenu"}},{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/components/Bento.mdx","frontmatter":{"title":"Bento"},"rawBody":"---\ntitle: Bento\nstatus: Alpha\na11yReviewed: true\nsource: https://github.com/primer/brand/blob/main/packages/react/src/Bento/Bento.tsx\nstorybook: '/brand/storybook/?path=/story/components-bento--default'\ndescription: Use the bento to present content in a responsive grid layout.\n---\n\n```js\nimport {Bento} from '@primer/react-brand'\n```\n\n### Default\n\n```jsx live\n<Box\n  style={{backgroundColor: 'var(--base-color-scale-gray-2)'}}\n  padding=\"normal\"\n>\n  <Bento>\n    <Bento.Item />\n    <Bento.Item />\n    <Bento.Item />\n  </Bento>\n</Box>\n```\n\n### Example layout\n\n## Examples\n\n```jsx live\n<Box\n  style={{backgroundColor: 'var(--base-color-scale-gray-2)'}}\n  padding=\"normal\"\n>\n  <Bento>\n    <Bento.Item columnSpan={12} rowSpan={2} />\n    <Bento.Item columnSpan={7} rowSpan={2} />\n    <Bento.Item columnSpan={5} rowSpan={2} />\n    <Bento.Item columnSpan={12} rowSpan={2} />\n  </Bento>\n</Box>\n```\n\n### Dark mode items\n\n```jsx live\n<Bento>\n  <Bento.Item columnSpan={7} rowSpan={2} colorMode=\"dark\" />\n  <Bento.Item columnSpan={5} rowSpan={2} colorMode=\"dark\" />\n  <Bento.Item columnSpan={12} rowSpan={2} colorMode=\"dark\" />\n  <Bento.Item columnSpan={12} rowSpan={2} colorMode=\"dark\" />\n</Bento>\n```\n\n### Responsive behavior\n\nUse `columnSpan`, `rowSpan`, `columnStart`, `rowStart`, `flow`, `verticalAlign`, `horizontalAlign` with an `Object` of breakpoint-specific keys and values corresponding to each type to enable responsive behavior for each of these properties.\n\nBreakpoints use `min-width`, where it will also apply your chosen `span` value to all larger breakpoints.\n\n<Note>\n  Bento items can render in a different source order to what is presented\n  visually. It's important to ensure that the content of each item is\n  self-contained and can be read independently of its adjacent items.\n</Note>\n\n```jsx live\n<Box\n  style={{backgroundColor: 'var(--base-color-scale-gray-2)'}}\n  padding=\"normal\"\n>\n  <Bento>\n    <Bento.Item\n      columnSpan={{\n        xsmall: 12,\n        small: 6,\n        large: 3,\n      }}\n      rowSpan={{\n        xsmall: 4,\n        large: 4,\n      }}\n    />\n    <Bento.Item\n      columnSpan={{\n        xsmall: 12,\n        small: 6,\n        large: 3,\n      }}\n      rowSpan={{\n        xsmall: 4,\n        large: 2,\n      }}\n    />\n    <Bento.Item\n      columnSpan={{\n        xsmall: 12,\n        small: 6,\n        large: 6,\n      }}\n      rowSpan={{\n        xsmall: 4,\n        large: 4,\n      }}\n    />\n    <Bento.Item\n      columnSpan={{\n        xsmall: 12,\n        small: 6,\n        large: 3,\n      }}\n      rowSpan={{\n        xsmall: 4,\n        large: 3,\n      }}\n      rowStart={{\n        large: 5,\n      }}\n    />\n    <Bento.Item\n      columnSpan={{\n        xsmall: 12,\n        small: 6,\n        large: 3,\n      }}\n      rowSpan={{\n        xsmall: 4,\n        large: 5,\n      }}\n    />\n    <Bento.Item\n      columnSpan={{\n        xsmall: 12,\n        small: 6,\n        large: 6,\n      }}\n      rowSpan={{\n        xsmall: 4,\n        large: 3,\n      }}\n    />\n  </Bento>\n</Box>\n```\n\n#### Responsive flow\n\n```jsx live\n<Box\n  style={{backgroundColor: 'var(--base-color-scale-gray-2)'}}\n  padding=\"normal\"\n>\n  <Bento>\n    <Bento.Item\n      flow={{\n        xsmall: 'row',\n        small: 'row',\n        medium: 'column',\n      }}\n    >\n      <Bento.Content padding=\"normal\">\n        <Bento.Heading as=\"h3\">Heading</Bento.Heading>\n        <Link href=\"#\">Call to action</Link>\n      </Bento.Content>\n      <Bento.Visual>\n        <img\n          alt=\"placeholder, blank area with an gray background color\"\n          src=\"https://via.placeholder.com/600x400/f5f5f5/f5f5f5.png\"\n        />\n      </Bento.Visual>\n    </Bento.Item>\n  </Bento>\n</Box>\n```\n\n## Component props\n\n### Bento\n\n| Name        | Type     | Default | Required | Description                             |\n| :---------- | :------- | :-----: | :------- | --------------------------------------- |\n| `className` | `string` |         | `false`  | Sets a custom class on the root element |\n\nThe Bento component API supports all standard HTML attribute props for the interface `HTMLDivElement`.\n\n### Bento.Item\n\n| Name                 | Type                                                                                   |  Default  | Required | Description                                                                                                                     |\n| :------------------- | :------------------------------------------------------------------------------------- | :-------: | :------- | ------------------------------------------------------------------------------------------------------------------------------- |\n| `className`          | `string`                                                                               |           | `false`  | Sets a custom class on the root element                                                                                         |\n| `children`           | `React.ReactNode`, `React.ReactNode[]`                                                 |           | `false`  | The children to be rendered within the `Bento.Item`                                                                             |\n| `columnStart`        | `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`, `11`, `12`, `ResponsiveColumnIndex` |           | `false`  | The column number in which this content should start                                                                            |\n| `columnSpan`         | `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`, `11`, `12`, `ResponsiveColumnIndex` |           | `false`  | The number of columns this content should span                                                                                  |\n| `rowStart`           | `number`, `ResponsiveRowIndex`                                                         |           | `false`  | The row number in which this content should start                                                                               |\n| `rowSpan`            | `number`, `ResponsiveRowIndex`                                                         |           | `false`  | The number of rows this content should span                                                                                     |\n| `flow`               | `\"row\"`, `\"column\"`, `ResponsiveFlow`                                                  |           | `false`  | The flow of the `Bento.Content` and `Bento.Visual` within the `Bento.Item`                                                      |\n| `colorMode`          | `\"light\"`, `\"dark\"`                                                                    | `\"light\"` | `false`  | The color mode specified for this `Bento.Item`                                                                                  |\n| `visualAsBackground` | `boolean`                                                                              |  `false`  | `false`  | Determines if the `Bento.Visual` child element is set as the background for the `Bento.Item` with the `Bento.Content` overlayed |\n| `order`              | `\"default\"`, `\"reversed\"`, `ResponsiveOrder`                                           | `default` | `false`  | Determines the visual order for the `Bento.Item`. This changes the semantic ordering of elements for accessibility.             |\n\nThe Bento.Item component API supports all standard HTML attribute props for the interface `HTMLDivElement`, while providing some additional behavior as described above.\n\n### Bento.Content\n\n| Name              | Type                                                                                                                       |  Default   | Required | Description                                                     |\n| :---------------- | :------------------------------------------------------------------------------------------------------------------------- | :--------: | :------- | --------------------------------------------------------------- |\n| `className`       | `string`                                                                                                                   |            | `false`  | Sets a custom class on the root element                         |\n| `children`        | [`Text`](https://primer.style/brand/components/Text),`Bento.Heading`, [`Link`](https://primer.style/brand/components/Link) |            | `false`  | The children to be rendered within the `Bento.Content`          |\n| `leadingVisual`   | `ReactElement`, `Icon`                                                                                                     |            | `false`  | Sets the icon before the heading text                           |\n| `padding`         | `\"condensed\"`, `\"normal\"`, `\"spacious\"`, `ResponsivePadding`                                                               | `\"normal\"` | `false`  | Sets a custom class on the root element                         |\n| `horizontalAlign` | `\"start\"`, `\"center\"`, `\"end\"`, `ResponsiveAlign`                                                                          | `\"start\"`  | `false`  | The horizontal alignment of children within the `Bento.Content` |\n| `verticalAlign`   | `\"start\"`, `\"center\"`, `\"end\"`, `ResponsiveAlign`                                                                          | `\"start\"`  | `false`  | The vertical alignment of children within the `Bento.Content`.  |\n\nThe Bento.Content component API supports all standard HTML attribute props for the interface `HTMLDivElement`, while providing some additional behavior as described above.\n\n### Bento.Heading\n\nRequired node that is used to provide a heading for the `Bento.Content`.\n\n| name        | type                       | default     | required | description                                           |\n| ----------- | -------------------------- | ----------- | -------- | ----------------------------------------------------- |\n| `className` | `string`                   |             | `false`  | Custom class name for the heading component           |\n| `children`  | `ReactNode`, `ReactNode[]` | `undefined` | `true`   | Content to be displayed inside the heading component. |\n\nForwards all props from the [Heading component](/components/Heading), including `as`, `size`, and `weight`.\n\n### Bento.Visual\n\n| Name        | Type                                                         |   Default   | Required | Description                                                                                              |\n| :---------- | :----------------------------------------------------------- | :---------: | :------- | -------------------------------------------------------------------------------------------------------- |\n| `className` | `string`                                                     |             | `false`  | Sets a custom class on the root element                                                                  |\n| `fillMedia` | `boolean`                                                    |   `true`    | `false`  | Determines how the visual reacts within its container. Either filling the container or contained within. |\n| `position`  | `string`                                                     | `\"50% 50%\"` | `false`  | The positioning of the visual.                                                                           |\n| `padding`   | `\"condensed\"`, `\"normal\"`, `\"spacious\"`, `ResponsivePadding` |             | `false`  | Sets a custom class on the root element                                                                  |\n\nThe Bento.Visual component API supports all standard HTML attribute props for the interface `HTMLDivElement`, while providing some additional behavior as described above.\n","parent":{"relativeDirectory":"components","name":"Bento"}},{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/components/AnchorNav.mdx","frontmatter":{"title":"Anchor nav"},"rawBody":"---\ntitle: Anchor nav\nstatus: Experimental\nfigma: https://www.figma.com/file/BJ95AjraesmRCWsKA013GS/Primer-Brand?node-id=3359%3A30494&t=7vT79cAF1kbiMd2j-4\nsource: https://github.com/primer/brand/blob/main/packages/react/src/AnchorNav/AnchorNav.tsx\nstorybook: '/brand/storybook/?path=/story/components-anchornav--playground'\ndescription: Use the anchor nav component for prompt navigation to different sections of a page.\n---\n\nimport InlineCode from '@primer/gatsby-theme-doctocat/src/components/inline-code'\nimport {PropTableValues} from '../../src/components'\nimport {Label} from '@primer/react'\nimport {Link} from 'gatsby'\n\n```js\nimport {AnchorNav} from '@primer/react-brand'\n```\n\n## Examples\n\n<Note>\n\n`AnchorNav` is designed to fix to the top of the viewport, and requires markup outside of the scope of the component to behave correctly.\n\nPlease refer to our [Storybook examples](https://primer.style/brand/storybook/?path=/story/components-anchornav--playground) to see the component in a full-screen context as originally intended.\n\n</Note>\n\n### Basic\n\n```jsx live\n<Container sx={{position: 'relative', overflowX: 'scroll'}}>\n  <AnchorNav>\n    <AnchorNav.Link href=\"#basic-section1\">Section one</AnchorNav.Link>\n    <AnchorNav.Link href=\"#basic-section2\">Section two</AnchorNav.Link>\n    <AnchorNav.Link href=\"#basic-section3\">Section three</AnchorNav.Link>\n    <AnchorNav.Link href=\"#basic-section4\">Section four</AnchorNav.Link>\n    <AnchorNav.Link href=\"#basic-section5\">Section five</AnchorNav.Link>\n    <AnchorNav.Action href=\"#\">Sign up</AnchorNav.Action>\n  </AnchorNav>\n\n  <section\n    id=\"basic-section1\"\n    style={{\n      padding: '100px 2rem',\n      backgroundColor: 'var(--base-color-scale-lemon-0)',\n    }}\n  >\n    Section 1\n  </section>\n  <section\n    id=\"basic-section2\"\n    style={{\n      padding: '100px 2rem',\n      backgroundColor: 'var(--base-color-scale-yellow-0)',\n    }}\n  >\n    Section 2\n  </section>\n  <section\n    id=\"basic-section3\"\n    style={{\n      padding: '100px 2rem',\n      backgroundColor: 'var(--base-color-scale-lime-0)',\n    }}\n  >\n    Section 3\n  </section>\n  <section\n    id=\"basic-section4\"\n    style={{\n      padding: '100px 2rem',\n      backgroundColor: 'var(--base-color-scale-green-0)',\n    }}\n  >\n    Section 4\n  </section>\n  <section\n    id=\"basic-section5\"\n    style={{\n      padding: '100px 2rem',\n      backgroundColor: 'var(--base-color-scale-teal-0)',\n    }}\n  >\n    Section 5\n  </section>\n</Container>\n```\n\n### Secondary action\n\n`AnchorNav` can also feature secondary actions. When two actions are present, the first will be presented as the `primary` variant.\n\n```jsx live\n<Container sx={{position: 'relative', overflowX: 'scroll'}}>\n  <AnchorNav>\n    <AnchorNav.Link href=\"#fewer-links-section1\">Section one</AnchorNav.Link>\n    <AnchorNav.Link href=\"#fewer-links-section2\">Section two</AnchorNav.Link>\n    <AnchorNav.Link href=\"#fewer-links-section3\">Section three</AnchorNav.Link>\n    <AnchorNav.Action href=\"#\">Sign up</AnchorNav.Action>\n    <AnchorNav.SecondaryAction href=\"#\">Learn more</AnchorNav.SecondaryAction>\n  </AnchorNav>\n\n  <section\n    id=\"fewer-links-section1\"\n    style={{\n      padding: '100px 2rem',\n      backgroundColor: 'var(--base-color-scale-lemon-0)',\n    }}\n  >\n    Section 1\n  </section>\n  <section\n    id=\"fewer-links-section2\"\n    style={{\n      padding: '100px 2rem',\n      backgroundColor: 'var(--base-color-scale-yellow-0)',\n    }}\n  >\n    Section 2\n  </section>\n  <section\n    id=\"fewer-links-section3\"\n    style={{\n      padding: '100px 2rem',\n      backgroundColor: 'var(--base-color-scale-lime-0)',\n    }}\n  >\n    Section 3\n  </section>\n</Container>\n```\n\n### Fewer links\n\n`AnchorNav` implementations with fewer than `5` links, will automatically align links to the `start`.\n\n```jsx live\n<Container sx={{position: 'relative', overflowX: 'scroll'}}>\n  <AnchorNav>\n    <AnchorNav.Link href=\"#fewer-links-section1\">Section one</AnchorNav.Link>\n    <AnchorNav.Link href=\"#fewer-links-section2\">Section two</AnchorNav.Link>\n    <AnchorNav.Link href=\"#fewer-links-section3\">Section three</AnchorNav.Link>\n    <AnchorNav.Action href=\"#\">Sign up</AnchorNav.Action>\n  </AnchorNav>\n\n  <section\n    id=\"fewer-links-section1\"\n    style={{\n      padding: '100px 2rem',\n      backgroundColor: 'var(--base-color-scale-lemon-0)',\n    }}\n  >\n    Section 1\n  </section>\n  <section\n    id=\"fewer-links-section2\"\n    style={{\n      padding: '100px 2rem',\n      backgroundColor: 'var(--base-color-scale-yellow-0)',\n    }}\n  >\n    Section 2\n  </section>\n  <section\n    id=\"fewer-links-section3\"\n    style={{\n      padding: '100px 2rem',\n      backgroundColor: 'var(--base-color-scale-lime-0)',\n    }}\n  >\n    Section 3\n  </section>\n</Container>\n```\n\n## Component props\n\n### AnchorNav <Label>Required</Label>\n\n| Name                   | Type                                                                                            | Default | Description                                                             |\n| :--------------------- | :---------------------------------------------------------------------------------------------- | :-----: | :---------------------------------------------------------------------- |\n| `children`             | <PropTableValues values={['AnchorNav.Link','AnchorNav.Action', 'ReactNode' ]} addLineBreaks />, |         | Valid child nodes                                                       |\n| `className`            | `string`                                                                                        |         | Sets a custom class                                                     |\n| `enableDefaultBgColor` | `boolean`                                                                                       | `false` | Enable the idle state background color, which is transparent by default |\n| `hideUntilSticky`      | `boolean`                                                                                       | `false` | When true, the anchor nav will hide until it is sticky.                 |\n| `id`                   | `string`                                                                                        |         | Sets a custom id                                                        |\n| `ref`                  | `React.RefObject`                                                                               |         | Forward a Ref to the underlying DOM node                                |\n\n<h3 id=\"AnchorNav-link\">\n  AnchorNav.Link <Label>Required</Label>\n</h3>\n\n`AnchorNav.Link` are anchor links that feature in the menubar\n\n| Name        | Type              | Default | Description                                         |\n| :---------- | :---------------- | :-----: | :-------------------------------------------------- |\n| `children`  | `string`          |         | Required. Label text                                |\n| `className` | `string`          |         | Applies a custom class                              |\n| `href`      | `string`          |         | Required. Local identifier for the anchored element |\n| `id`        | `string`          |         | Sets a custom id                                    |\n| `isActive`  | `boolean`         | `false` | Manually indicate that the link is active           |\n| `ref`       | `React.RefObject` |         | Forward a Ref to the underlying DOM node            |\n\nAdditional props can be passed to the `<a>` element. [See MDN for a list of props](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#attributes) accepted by the `<anchor>` element.\n\n<h3 id=\"AnchorNav-action\">AnchorNav.Action</h3>\n\n`AnchorNav.Action` is the primary call to action for the AnchorNav\n\n| Name        | Type              | Default | Description                                         |\n| :---------- | :---------------- | :-----: | :-------------------------------------------------- |\n| `children`  | `string`          |         | Required. Label text                                |\n| `className` | `string`          |         | Applies a custom class                              |\n| `href`      | `string`          |         | Required. Local identifier for the anchored element |\n| `id`        | `string`          |         | Sets a custom id                                    |\n| `ref`       | `React.RefObject` |         | Forward a Ref to the underlying DOM node            |\n\nAdditional props can be passed to the `<a>` element. [See MDN for a list of props](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#attributes) accepted by the `<anchor>` element.\n\n<h3 id=\"AnchorNav-secondary-action\">AnchorNav.SecondaryAction</h3>\n\n`AnchorNav.SecondaryAction` is an alternative call to action available for the AnchorNav\n\n| Name        | Type              | Default | Description                                         |\n| :---------- | :---------------- | :-----: | :-------------------------------------------------- |\n| `children`  | `string`          |         | Required. Label text                                |\n| `className` | `string`          |         | Applies a custom class                              |\n| `href`      | `string`          |         | Required. Local identifier for the anchored element |\n| `id`        | `string`          |         | Sets a custom id                                    |\n| `ref`       | `React.RefObject` |         | Forward a Ref to the underlying DOM node            |\n\nAdditional props can be passed to the `<a>` element. [See MDN for a list of props](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#attributes) accepted by the `<anchor>` element.\n","parent":{"relativeDirectory":"components","name":"AnchorNav"}},{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/components/ComparisonTable.mdx","frontmatter":{"title":"Comparison table"},"rawBody":"---\ntitle: Comparison table\nstatus: Experimental\nfigma: https://www.figma.com/file/BJ95AjraesmRCWsKA013GS/Primer-Brand?node-id=375%3A8130\nsource: https://github.com/primer/brand/blob/main/packages/react/src/ComparisonTable/ComparisonTable.tsx\nstorybook: '/brand/storybook/?path=/story/components-comparisontable--playground'\ndescription: Use the comparison table component to compare two products or features in a table format.\n---\n\nimport InlineCode from '@primer/gatsby-theme-doctocat/src/components/inline-code'\nimport {Box as Container} from '@primer/react'\nimport {PropTableValues} from '../../src/components'\nimport {Label} from '@primer/react'\n\n```js\nimport {ComparisonTable} from '@primer/react-brand'\n```\n\n## Examples\n\n### Default\n\n```jsx live\n<ComparisonTable>\n  <ComparisonTable.Row>\n    <ComparisonTable.Cell>Use case</ComparisonTable.Cell>\n    <ComparisonTable.Cell>GitHub</ComparisonTable.Cell>\n    <ComparisonTable.Cell>Jenkins</ComparisonTable.Cell>\n  </ComparisonTable.Row>\n  <ComparisonTable.Row>\n    <ComparisonTable.Cell>Automation & CI/CD</ComparisonTable.Cell>\n    <ComparisonTable.Cell>\n      <Text as=\"p\" size=\"300\">\n        Comparable native core capabilities\n      </Text>\n      <Text as=\"p\" size=\"300\">\n        <a href=\"#\">Over 13,000 GitHub Actions are available</a> in the GitHub\n        Marketplace to automate your development workflow.\n      </Text>\n    </ComparisonTable.Cell>\n    <ComparisonTable.Cell>\n      <Text as=\"p\" size=\"300\">\n        Comparable native capabilities\n      </Text>\n      <Text as=\"p\" size=\"300\">\n        1,800+ community contributed Jenkins plugins{' '}\n        <a href=\"#\">in Jenkins Plugin Marketplace.</a>\n      </Text>\n    </ComparisonTable.Cell>\n  </ComparisonTable.Row>\n  <ComparisonTable.Row>\n    <ComparisonTable.Cell>Deployment models</ComparisonTable.Cell>\n    <ComparisonTable.Cell>Cloud or self-hosted</ComparisonTable.Cell>\n    <ComparisonTable.Cell>\n      <Text as=\"p\" size=\"300\">\n        Self-hosted only\n      </Text>\n      <Text as=\"p\" size=\"300\">\n        CloudBees is the cloud alternative\n      </Text>\n    </ComparisonTable.Cell>\n  </ComparisonTable.Row>\n  <ComparisonTable.Footnote>\n    *** This is a biased overview of capabilities by use case, based on publicly\n    available information as of 2022-05-16.\n  </ComparisonTable.Footnote>\n</ComparisonTable>\n```\n\n### Optional heading\n\nA heading can be provided using the `heading` prop on the root `<ComparisonTable>`. This will render a heading at an appropriate size relative to the table, and present it accordingly.\n\nFor granular control over heading markup or appearance, we recommend using [`Heading`](./Heading).\n\n```jsx live\n<ComparisonTable heading=\"GitHub vs Jenkins\">\n  <ComparisonTable.Row>\n    <ComparisonTable.Cell>Use case</ComparisonTable.Cell>\n    <ComparisonTable.Cell>GitHub</ComparisonTable.Cell>\n    <ComparisonTable.Cell>Jenkins</ComparisonTable.Cell>\n  </ComparisonTable.Row>\n  <ComparisonTable.Row>\n    <ComparisonTable.Cell>Automation & CI/CD</ComparisonTable.Cell>\n    <ComparisonTable.Cell>\n      <Text as=\"p\" size=\"300\">\n        Comparable native core capabilities\n      </Text>\n      <Text as=\"p\" size=\"300\">\n        <a href=\"#\">Over 13,000 GitHub Actions are available</a> in the GitHub\n        Marketplace to automate your development workflow.\n      </Text>\n    </ComparisonTable.Cell>\n    <ComparisonTable.Cell>\n      <Text as=\"p\" size=\"300\">\n        Comparable native capabilities\n      </Text>\n      <Text as=\"p\" size=\"300\">\n        1,800+ community contributed Jenkins plugins{' '}\n        <a href=\"#\">in Jenkins Plugin Marketplace.</a>\n      </Text>\n    </ComparisonTable.Cell>\n  </ComparisonTable.Row>\n  <ComparisonTable.Row>\n    <ComparisonTable.Cell>Deployment models</ComparisonTable.Cell>\n    <ComparisonTable.Cell>Cloud or self-hosted</ComparisonTable.Cell>\n    <ComparisonTable.Cell>\n      <Text as=\"p\" size=\"300\">\n        Self-hosted only\n      </Text>\n      <Text as=\"p\" size=\"300\">\n        CloudBees is the cloud alternative\n      </Text>\n    </ComparisonTable.Cell>\n  </ComparisonTable.Row>\n  <ComparisonTable.Footnote>\n    *** This is a biased overview of capabilities by use case, based on publicly\n    available information as of 2022-05-16.\n  </ComparisonTable.Footnote>\n</ComparisonTable>\n```\n\n### Featured columns\n\nBy default, the first data column will be marked as `featured`. This is to draw attention to a particular product as the basis of a comparison against adjacent columns.\n\nUse `featuredColumn` to alternate the highlighted column if needed.\n\n#### Color customization\n\nThe default colors can be customized through dedicated CSS variables.\n\n| Name                                           | Default                       |\n| :--------------------------------------------- | :---------------------------- |\n| `--brand-ComparisonTable-featured-color-start` | `--base-color-scale-pink-4`   |\n| `--brand-ComparisonTable-featured-color-end`   | `--base-color-scale-indigo-5` |\n\n```javascript live noinline\nconst App = () => {\n  const designTokenOverrides = `\n  .custom-colors[data-color-mode='dark'] {\n\n    /*\n     * Modify the value of these tokens.\n     * Remember to apply light mode equivalents if you're enabling theme switching.\n     */\n    --brand-ComparisonTable-featured-color-start: var(--base-color-scale-green-2);\n    --brand-ComparisonTable-featured-color-end: var(--base-color-scale-blue-3);\n\n    /*\n     * For example only\n     */\n    padding: 3rem;\n    background-color: var(--brand-color-canvas-default);\n  }\n\n  .custom-heading {\n    background: linear-gradient(271.72deg, var(--brand-ComparisonTable-featured-color-end) 7.09%, var(--brand-ComparisonTable-featured-color-start) 96.61%);\n    -webkit-background-clip: text;\n    background-clip: text;\n    -webkit-text-fill-color: transparent;\n    text-align: center;\n    margin-bottom: var(--base-size-32);\n  }\n`\n\n  return (\n    <ThemeProvider colorMode=\"dark\" className=\"custom-colors\">\n      <style>{designTokenOverrides}</style>\n      <Heading as=\"h3\" className=\"custom-heading\">\n        GitHub vs Jenkins\n      </Heading>\n      <ComparisonTable>\n        <ComparisonTable.Row>\n          <ComparisonTable.Cell>Use case</ComparisonTable.Cell>\n          <ComparisonTable.Cell>GitHub</ComparisonTable.Cell>\n          <ComparisonTable.Cell>Jenkins</ComparisonTable.Cell>\n        </ComparisonTable.Row>\n        <ComparisonTable.Row>\n          <ComparisonTable.Cell>Automation & CI/CD</ComparisonTable.Cell>\n          <ComparisonTable.Cell>\n            <Text as=\"p\" size=\"300\">\n              Comparable native core capabilities\n            </Text>\n            <Text as=\"p\" size=\"300\">\n              Over 13,000 GitHub Actions are available in the GitHub Marketplace\n              to automate your development workflow.\n            </Text>\n          </ComparisonTable.Cell>\n          <ComparisonTable.Cell>\n            <Text as=\"p\" size=\"300\">\n              Comparable native capabilities\n            </Text>\n            <Text as=\"p\" size=\"300\">\n              1,800+ community contributed Jenkins plugins in Jenkins Plugin\n              Marketplace.\n            </Text>\n          </ComparisonTable.Cell>\n        </ComparisonTable.Row>\n        <ComparisonTable.Row>\n          <ComparisonTable.Cell>Deployment models</ComparisonTable.Cell>\n          <ComparisonTable.Cell>Cloud or self-hosted</ComparisonTable.Cell>\n          <ComparisonTable.Cell>\n            <Text as=\"p\" size=\"300\">\n              Self-hosted only\n            </Text>\n            <Text as=\"p\" size=\"300\">\n              CloudBees is the cloud alternative\n            </Text>\n          </ComparisonTable.Cell>\n        </ComparisonTable.Row>\n        <ComparisonTable.Footnote>\n          *** This is a biased overview of capabilities by use case, based on\n          publicly available information as of 2022-05-16.\n        </ComparisonTable.Footnote>\n      </ComparisonTable>\n    </ThemeProvider>\n  )\n}\n\nrender(<App />)\n```\n\n### Dynamic data\n\nComparison tables are typically generated using data from an API or content management system.\n\n`ComparisonTable` accepts `ReactNode` as a valid child, to facilitate conditional and dynamic rendering.\n\n```javascript live noinline\nconst App = () => {\n  const comparisonTableData = {\n    heading: 'GitHub vs Jenkins',\n    footnotes:\n      '*** This is a biased overview of capabilities by use case, based on publicly available information as of 2022-05-16.',\n    headingLabels: ['', 'GitHub', 'Jenkins'],\n    features: [\n      {\n        label: 'Automation & CI/CD',\n        values: [\n          {\n            name: 'GitHub',\n            value:\n              'Over 13,000 GitHub Actions are available in the GitHub Marketplace to automate your development workflow.',\n          },\n          {\n            name: 'Jenkins',\n            value:\n              '1,800+ community contributed Jenkins plugins in Jenkins Plugin Marketplace.',\n          },\n        ],\n      },\n      {\n        label: 'Deployment models',\n        values: [\n          {\n            name: 'GitHub',\n            value: 'Cloud or self-hosted',\n          },\n          {\n            name: 'Jenkins',\n            value: 'Self-hosted only. CloudBees is the cloud alternative',\n          },\n        ],\n      },\n    ],\n  }\n\n  return (\n    <ComparisonTable heading={comparisonTableData.heading}>\n      <ComparisonTable.Row>\n        {comparisonTableData.headingLabels.map((label) => (\n          <ComparisonTable.Cell key={label}>{label}</ComparisonTable.Cell>\n        ))}\n      </ComparisonTable.Row>\n      {comparisonTableData.features.map(({label, values}) => {\n        return (\n          <ComparisonTable.Row key={label}>\n            <ComparisonTable.Cell key={label}>{label}</ComparisonTable.Cell>\n            {values.map(({value, name}) => (\n              <ComparisonTable.Cell key={name}>{value}</ComparisonTable.Cell>\n            ))}\n          </ComparisonTable.Row>\n        )\n      })}\n      <ComparisonTable.Footnote>\n        {comparisonTableData.footnotes}\n      </ComparisonTable.Footnote>\n    </ComparisonTable>\n  )\n}\n\nrender(<App />)\n```\n\n### Minimal layout\n\n`ComparisonTable` has an alternative visual presentation mode called `minimal`. This will display the data without the featured columns.\n\nThis variant is suitable for embedding into long-form content, or in situations where usage of on-screen color needs to be minimized.\n\n```jsx live\n<ComparisonTable heading=\"What is containerization?\" variant=\"minimal\">\n  <ComparisonTable.Row>\n    <ComparisonTable.Cell></ComparisonTable.Cell>\n    <ComparisonTable.Cell>Containerization</ComparisonTable.Cell>\n    <ComparisonTable.Cell>Virtualization</ComparisonTable.Cell>\n  </ComparisonTable.Row>\n  <ComparisonTable.Row>\n    <ComparisonTable.Cell>Operating system (OS) </ComparisonTable.Cell>\n    <ComparisonTable.Cell>\n      Containers use the host OS, meaning all containers must be compatible with\n      that OS.\n    </ComparisonTable.Cell>\n    <ComparisonTable.Cell>\n      VMs are effectively separate computers that run their own OS. For example,\n      a VM can run Windows even if the host OS is Ubuntu.\n    </ComparisonTable.Cell>\n  </ComparisonTable.Row>\n  <ComparisonTable.Row>\n    <ComparisonTable.Cell>Computing resources </ComparisonTable.Cell>\n    <ComparisonTable.Cell>\n      Containers are lightweight, taking only the resources needed to run the\n      application and the container manager.{' '}\n    </ComparisonTable.Cell>\n    <ComparisonTable.Cell>\n      VMs emulate a full computer, meaning that they replicate much of the host\n      environment. That uses more memory, CPU cycles, and disk space.\n    </ComparisonTable.Cell>\n  </ComparisonTable.Row>\n  <ComparisonTable.Row>\n    <ComparisonTable.Cell>Shareability </ComparisonTable.Cell>\n    <ComparisonTable.Cell>\n      Container images are relatively small in size, making them easy to share.\n    </ComparisonTable.Cell>\n    <ComparisonTable.Cell>\n      VM images are often much larger as they include a full OS.\n    </ComparisonTable.Cell>\n  </ComparisonTable.Row>\n  <ComparisonTable.Row>\n    <ComparisonTable.Cell>Security</ComparisonTable.Cell>\n    <ComparisonTable.Cell>\n      Containers might be isolated only very lightly from each other. A process\n      in one container could access memory used by another container, for\n      example.\n    </ComparisonTable.Cell>\n    <ComparisonTable.Cell>\n      By running a separate OS, VMs running on the same hardware are more\n      isolated from one another than containers.\n    </ComparisonTable.Cell>\n  </ComparisonTable.Row>\n</ComparisonTable>\n```\n\n## Component props\n\n### ComparisonTable <Label>Required</Label>\n\n| name             | type                                                                                    | default     | required | description                                                                                                                                               |\n| ---------------- | --------------------------------------------------------------------------------------- | ----------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `children`       | `ComparisonTable.Row`, `ComparisonTable.Cell`, `ComparisonTable.Footnotes`, `ReactNode` | undefined   | `true`   | Valid children. Accepts `ReactNode` for conditional rendering.                                                                                            |\n| `heading`        | `string`                                                                                | undefined   | `false`  | Optional heading that appears above table, preconfigured as a `h3`.                                                                                       |\n| `featuredColumn` | `number`                                                                                | `1`         | `false`  | Indicates that the data column at the specified index is visually important and unique in relation to its adjacent cells, and will be styled accordingly. |\n| `variant`        | `\"default\"`, `\"minimal\"`                                                                | `\"default\"` | `false`  | Applies alternative presentation.                                                                                                                         |\n\n### ComparisonTable.Row <Label>Required</Label>\n\nThe first row in a table is automatically styled as a table header row.\n\n| name       | type                   | default   | required | description                                     |\n| ---------- | ---------------------- | --------- | -------- | ----------------------------------------------- |\n| `children` | `ComparisonTable.Cell` | undefined | `true`   | Cells (columns) to be displayed inside the row. |\n\n### ComparisonTable.Cell <Label>Required</Label>\n\nThe first cell in a row is automatically styled as a header cell.\n\n| name       | type        | default   | required | description                                     |\n| ---------- | ----------- | --------- | -------- | ----------------------------------------------- |\n| `children` | `ReactNode` | undefined | `true`   | Content to be displayed inside the column cell. |\n\n### ComparisonTable.Footnote\n\nOptional node that appears below the table. This is useful for adding additional context or disclaimers.\n\n| name       | type        | default   | required | description                                     |\n| ---------- | ----------- | --------- | -------- | ----------------------------------------------- |\n| `children` | `ReactNode` | undefined | `true`   | Content to be displayed inside the column cell. |\n\n`id`, `className` and `ref` are forwarded by default to all children.\n\n## Design tokens\n\n| css                                            | js                                           |\n| ---------------------------------------------- | -------------------------------------------- |\n| `--brand-ComparisonTable-featured-color-start` | `brand.ComparisonTable.featured.color.start` |\n| `--brand-ComparisonTable-featured-color-end`   | `brand.ComparisonTable.featured.color.end`   |\n","parent":{"relativeDirectory":"components","name":"ComparisonTable"}},{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/components/EyebrowBanner.mdx","frontmatter":{"title":"Eyebrow banner"},"rawBody":"---\ntitle: Eyebrow banner\nstatus: Experimental\na11yReviewed: false\nsource: https://github.com/primer/brand/blob/main/packages/react/src/EyebrowBanner/EyebrowBanner.tsx\nstorybook: '/brand/storybook/?path=/story/components-eyebrowbanner--playground'\ndescription: Use the eyebrow banner to highlight important information at the top of a page.\n---\n\nimport {Label} from '@primer/react'\nimport {StarIcon, CopilotIcon} from '@primer/octicons-react'\n\nimport {PropTableValues} from '../../src/components'\nimport {\n  EyebrowBannerIconColors,\n  EyebrowBannerLabelColors,\n} from '@primer/react-brand'\n\n```js\nimport {EyebrowBanner} from '@primer/react-brand'\n```\n\n## Examples\n\n### Default\n\nThis is the default variant for the eyebrow banner component.\n\n```jsx live\n<EyebrowBanner href=\"http://githubuniverse.com\">\n  <EyebrowBanner.Visual>\n    <img\n      src=\"https://github.githubassets.com/assets/eyebrow-23@2x-563f292d9e30.png\"\n      alt=\"Badge featuring a GitHub logo surrounded by Universe-themed shapes\"\n    />\n  </EyebrowBanner.Visual>\n  <EyebrowBanner.Heading>\n    GitHub Universe: Dive in to AI, security, and DevEx\n  </EyebrowBanner.Heading>\n  <EyebrowBanner.SubHeading>\n    Get your tickets now to join us on Nov. 8-9.\n  </EyebrowBanner.SubHeading>\n</EyebrowBanner>\n```\n\n### Color modes\n\nUse `ThemeProvider` to automatically adjust the visual presentation of the component to light or dark variants.\n\n```jsx live\n<Stack gap=\"none\" padding=\"none\">\n  <ThemeProvider colorMode=\"light\">\n    <Box\n      backgroundColor=\"default\"\n      padding=\"normal\"\n      borderWidth=\"thin\"\n      borderStyle=\"solid\"\n      borderColor=\"default\"\n    >\n      <EyebrowBanner href=\"http://githubuniverse.com\">\n        <EyebrowBanner.Visual>\n          <img\n            src=\"https://github.githubassets.com/assets/eyebrow-23@2x-563f292d9e30.png\"\n            alt=\"Badge featuring a GitHub logo surrounded by Universe-themed shapes\"\n          />\n        </EyebrowBanner.Visual>\n        <EyebrowBanner.Heading>\n          GitHub Universe: Dive in to AI, security, and DevEx\n        </EyebrowBanner.Heading>\n        <EyebrowBanner.SubHeading>\n          Get your tickets now to join us on Nov. 8-9.\n        </EyebrowBanner.SubHeading>\n      </EyebrowBanner>\n    </Box>\n  </ThemeProvider>\n  <ThemeProvider colorMode=\"dark\">\n    <Box backgroundColor=\"default\" padding=\"normal\">\n      <EyebrowBanner href=\"http://githubuniverse.com\">\n        <EyebrowBanner.Visual>\n          <img\n            src=\"https://github.githubassets.com/assets/eyebrow-23@2x-563f292d9e30.png\"\n            alt=\"Badge featuring a GitHub logo surrounded by Universe-themed shapes\"\n          />\n        </EyebrowBanner.Visual>\n        <EyebrowBanner.Heading>\n          GitHub Universe: Dive in to AI, security, and DevEx\n        </EyebrowBanner.Heading>\n        <EyebrowBanner.SubHeading>\n          Get your tickets now to join us on Nov. 8-9.\n        </EyebrowBanner.SubHeading>\n      </EyebrowBanner>\n    </Box>\n  </ThemeProvider>\n</Stack>\n```\n\n### Text labels\n\nUse `EyebrowBanner.Label` to display a leading text for additional context.\n\nA `color` prop is available to customise the color of the label.\n\n```jsx live\n<Stack>\n  <EyebrowBanner href=\"http://githubuniverse.com\">\n    <EyebrowBanner.Label>NEW</EyebrowBanner.Label>\n    <EyebrowBanner.Heading>\n      GitHub Copilot now available for Business\n    </EyebrowBanner.Heading>\n  </EyebrowBanner>\n  <EyebrowBanner href=\"http://githubuniverse.com\">\n    <EyebrowBanner.Label color=\"blue-purple\">NEW</EyebrowBanner.Label>\n    <EyebrowBanner.Heading>\n      GitHub Copilot now available for Business\n    </EyebrowBanner.Heading>\n  </EyebrowBanner>\n  <EyebrowBanner href=\"http://githubuniverse.com\">\n    <EyebrowBanner.Label color=\"red\">NEW</EyebrowBanner.Label>\n    <EyebrowBanner.Heading>\n      GitHub Copilot now available for Business\n    </EyebrowBanner.Heading>\n  </EyebrowBanner>\n</Stack>\n```\n\n### Icon visuals\n\nUse `EyebrowBanner.Visual` with an `icon` prop to display a leading icon for additional context.\n\nIcons can be SVGs or ideally Octicons. If using Octicons, import the icon from `@primer/octicons-react` and pass it as the `icon` prop.\n\nA `color` option is available to customise the color of the icon.\n\nAn optional `hasBackground` prop can be used to fill the surrounding circle with the lighter hue of the selected color.\n\n```jsx live\n<Stack>\n  <EyebrowBanner href=\"/\">\n    <EyebrowBanner.Visual icon={<StarIcon />} color=\"blue\" hasBackground />\n    <EyebrowBanner.Heading>\n      GitHub Universe: Dive in to AI, security, and DevEx\n    </EyebrowBanner.Heading>\n    <EyebrowBanner.SubHeading>\n      Get your tickets now to join us on Nov. 8-9.\n    </EyebrowBanner.SubHeading>\n  </EyebrowBanner>\n  <EyebrowBanner href=\"/\">\n    <EyebrowBanner.Visual icon={<CopilotIcon />} color=\"blue\" />\n    <EyebrowBanner.Heading>\n      GitHub Copilot now available for Business\n    </EyebrowBanner.Heading>\n  </EyebrowBanner>\n</Stack>\n```\n\n## Component props\n\n### EyebrowBanner <Label>Required</Label>\n\n| Name   | Type     |   Default   | required | Description                               |\n| :----- | :------- | :---------: | :------: | :---------------------------------------- |\n| `href` | `string` | `undefined` |  `true`  | The URL that the eyebrow banner points to |\n\n### EyebrowBanner.Heading <Label>Required</Label>\n\nPlease note that this is not a HTML-based heading element.\n\n| Name       | Type        |   Default   | required | Description                                             |\n| :--------- | :---------- | :---------: | :------: | :------------------------------------------------------ |\n| `children` | `ReactNode` | `undefined` |  `true`  | The primary messaging that appears on the top-most line |\n\n### EyebrowBanner.SubHeading\n\n| Name       | Type        |   Default   | required | Description                                                   |\n| :--------- | :---------- | :---------: | :------: | :------------------------------------------------------------ |\n| `children` | `ReactNode` | `undefined` | `false`  | Optional secondary messaging that appears beneath the heading |\n\n### EyebrowBanner.Visual\n\n| Name            | Type                                                                     |   Default   | required | Description                                 |\n| :-------------- | :----------------------------------------------------------------------- | :---------: | :------: | :------------------------------------------ |\n| `icon`          | <PropTableValues values={[`ReactNode`, `IconProps` ]} addLineBreaks />   | `undefined` | `false`  | Optional icon. Accepts React-based Octicons |\n| `color`         | <PropTableValues values={[...EyebrowBannerIconColors ]} addLineBreaks /> | `undefined` | `false`  | Optional icon color.                        |\n| `hasBackground` | `boolean`                                                                | `undefined` | `false`  | Optional background color.                  |\n| `children`      | `ReactNode`                                                              | `undefined` | `false`  | Accepts `img`, `picture` or `svg` elements  |\n\n### EyebrowBanner.Label\n\n| Name       | Type                                                                      |   Default   | required | Description                      |\n| :--------- | :------------------------------------------------------------------------ | :---------: | :------: | :------------------------------- |\n| `color`    | <PropTableValues values={[...EyebrowBannerLabelColors ]} addLineBreaks /> | `undefined` | `false`  | Optional label color.            |\n| `children` | `ReactNode`                                                               | `undefined` | `false`  | Text to appear in the label slot |\n","parent":{"relativeDirectory":"components","name":"EyebrowBanner"}},{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/components/Breadcrumbs.mdx","frontmatter":{"title":"Breadcrumbs"},"rawBody":"---\ntitle: Breadcrumbs\nstatus: Experimental\nsource: https://github.com/primer/brand/tree/main/packages/react/src/Breadcrumbs/Breadcrumbs.tsx\nstorybook: '/brand/storybook/?path=/story/components-breadcrumbs--default'\ndescription: Use breadcrumbs to enable wayfinding through navigational links\n---\n\nimport {Label} from '@primer/react'\nimport {BreadcrumbVariants} from '@primer/react-brand'\nimport {PropTableValues} from '../../src/components'\n\n```js\nimport {Breadcrumbs} from '@primer/react-brand'\n```\n\n## Examples\n\n### Default\n\n```jsx live\n<Breadcrumbs>\n  <Breadcrumbs.Item href=\"/\">Resources</Breadcrumbs.Item>\n  <Breadcrumbs.Item href=\"/copilot\">GitHub Copilot</Breadcrumbs.Item>\n  <Breadcrumbs.Item href=\"/copilot/chat\" selected>\n    Chat\n  </Breadcrumbs.Item>\n</Breadcrumbs>\n```\n\n### Accent\n\n```jsx live\n<Breadcrumbs variant=\"accent\">\n  <Breadcrumbs.Item href=\"/\">Resources</Breadcrumbs.Item>\n  <Breadcrumbs.Item href=\"/copilot\">GitHub Copilot</Breadcrumbs.Item>\n  <Breadcrumbs.Item href=\"/copilot/chat\" selected>\n    Chat\n  </Breadcrumbs.Item>\n</Breadcrumbs>\n```\n\n## Component props\n\n### Breadcrumbs <Label>Required</Label>\n\n| name      | type                                                          | default | required | description                               |\n| --------- | ------------------------------------------------------------- | ------- | -------- | ----------------------------------------- |\n| `variant` | <PropTableValues values={BreadcrumbVariants} addLineBreaks /> |         | `false`  | Specify alternative breadcrumb appearance |\n\n### Breadcrumbs.Item <Label>Required</Label>\n\n| name       | type      | default | required | description                         |\n| ---------- | --------- | ------- | -------- | ----------------------------------- |\n| `selected` | `boolean` |         | `false`  | Used for indicating the active link |\n| `href`     | `string`  |         | `true`   | URL of the page the link goes to    |\n","parent":{"relativeDirectory":"components","name":"Breadcrumbs"}},{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/components/FormControl.mdx","frontmatter":{"title":"Form control"},"rawBody":"---\ntitle: Form control\nstatus: Experimental\nfigma: 'https://www.figma.com/file/BJ95AjraesmRCWsKA013GS/Primer-Brand?node-id=1793%3A27781'\nsource: https://github.com/primer/brand/blob/main/packages/react/src/forms/FormControl/FormControl.tsx\nstorybook: '/brand/storybook/?path=/story/components-forms-formcontrol--playground'\ndescription: Use the form control component to display form inputs alongside labels, validation and more.\n---\n\nimport InlineCode from '@primer/gatsby-theme-doctocat/src/components/inline-code'\nimport {PropTableValues} from '../../src/components'\nimport {Label} from '@primer/react'\nimport {Heading} from '@primer/react-brand'\nimport {Link} from 'gatsby'\n\n```js\nimport {FormControl} from '@primer/react-brand'\n```\n\n## Examples\n\n### Basic\n\n`FormControl` is responsible for layout and ensuring that relevant IDs and ARIA attributes are passed to its `children`.\n\n```jsx live\n<FormControl>\n  <FormControl.Label>Name</FormControl.Label>\n  <TextInput />\n</FormControl>\n```\n\n### Alternative inputs\n\n```jsx live\n<Stack direction=\"vertical\" gap=\"spacious\">\n  {/* Select */}\n  <FormControl>\n    <FormControl.Label>Select</FormControl.Label>\n    <Select defaultValue=\"\">\n      <Select.Option value=\"\" disabled>\n        Select a handle\n      </Select.Option>\n      <Select.Option value=\"mona\">Monalisa</Select.Option>\n      <Select.Option value=\"hubot\">Hubot</Select.Option>\n    </Select>\n  </FormControl>\n  {/* Checkbox */}\n  <FormControl>\n    <FormControl.Label>\n      Checkbox <FormControl.Hint>With an optional message</FormControl.Hint>\n    </FormControl.Label>\n    <Checkbox />\n  </FormControl>\n  {/* Radio */}\n  <FormControl>\n    <FormControl.Label>\n      Radio <FormControl.Hint>With an optional message</FormControl.Hint>\n    </FormControl.Label>\n    <Radio />\n  </FormControl>\n  {/* Textarea */}\n  <FormControl fullWidth>\n    <FormControl.Label>Textarea</FormControl.Label>\n    <Textarea />\n  </FormControl>\n</Stack>\n```\n\n## Layout\n\n`FormControl` can help compose form layouts quickly, while ensuring the inputs are accessible for assistive technologies.\n\nAn example of a typical layout composed using `FormControl`:\n\n```jsx live\n<form>\n  <Container\n    sx={{\n      alignItems: 'center',\n      display: 'grid',\n      gap: 16,\n      margin: '0 auto ',\n      maxWidth: 600,\n      paddingBottom: 3,\n    }}\n  >\n    <Container\n      sx={{\n        display: 'grid',\n        gridTemplateColumns: '0.5fr 1fr 1fr',\n        gap: 16,\n      }}\n    >\n      <FormControl fullWidth>\n        <FormControl.Label>Title</FormControl.Label>\n        <Select defaultValue=\"\">\n          <Select.Option value=\"\" disabled>\n            Title\n          </Select.Option>\n          <Select.Option value=\"miss\">Miss</Select.Option>\n          <Select.Option value=\"mr\">Mr</Select.Option>\n          <Select.Option value=\"mrs\">Mrs</Select.Option>\n          <Select.Option value=\"mx\">Mx</Select.Option>\n        </Select>\n      </FormControl>\n      <FormControl fullWidth required>\n        <FormControl.Label>First name</FormControl.Label>\n        <TextInput required />\n      </FormControl>\n      <FormControl fullWidth required>\n        <FormControl.Label>Last name</FormControl.Label>\n        <TextInput required />\n      </FormControl>\n    </Container>\n\n    <FormControl fullWidth required>\n      <FormControl.Label>Enterprise name</FormControl.Label>\n      <TextInput required />\n    </FormControl>\n\n    <FormControl fullWidth required>\n      <FormControl.Label>Enterprise URL</FormControl.Label>\n      <TextInput leadingText=\"github.com/\" required />\n    </FormControl>\n\n    <FormControl fullWidth required>\n      <FormControl.Label>Country</FormControl.Label>\n      <Select defaultValue=\"\">\n        <Select.Option value=\"\" disabled>\n          Country\n        </Select.Option>\n        <Select.Option value=\"us\">United States of America</Select.Option>\n        <Select.Option value=\"uk\">United Kingdom</Select.Option>\n      </Select>\n    </FormControl>\n    <FormControl hasBorder required>\n      <FormControl.Label>\n        Contact me about GitHub Enterprise Server{' '}\n        <FormControl.Hint>\n          <Text size=\"200\" variant=\"muted\">\n            I&apos;m interested in learning more about{' '}\n            <InlineLink\n              size=\"200\"\n              href=\"https://github.com/enterprise\"\n              target=\"_blank\"\n            >\n              GitHub Enterprise Server\n            </InlineLink>{' '}\n            and would like to be contacted by GitHub’s sales team.\n          </Text>\n        </FormControl.Hint>\n      </FormControl.Label>\n      <Checkbox />\n    </FormControl>\n    <Container\n      sx={{\n        borderWidth: 1,\n        borderStyle: 'solid',\n        borderColor: 'var(--brand-control-color-border-default)',\n        backgroundColor: 'var(--brand-color-canvas-inset)',\n        height: 150,\n        width: '100%',\n        borderRadius: 6,\n        display: 'flex',\n        justifyContent: 'center',\n        alignItems: 'center',\n      }}\n    >\n      <Text size=\"200\" variant=\"muted\">\n        Captcha\n      </Text>\n    </Container>\n    <FormControl required>\n      <FormControl.Label>\n        <Text size=\"200\" variant=\"muted\">\n          I hereby accept the{' '}\n          <InlineLink\n            size=\"200\"\n            href=\"https://github.com/customer-terms\"\n            target=\"_blank\"\n          >\n            GitHub Customer Agreement\n          </InlineLink>{' '}\n          on behalf of my organization and confirm that I have the authority to\n          do so. For more information about GitHub&apos;s privacy practices, see\n          the{' '}\n          <InlineLink\n            size=\"200\"\n            href=\"https://docs.github.com/en/site-policy/privacy-policies/github-privacy-statement\"\n            target=\"_blank\"\n          >\n            GitHub Privacy Statement.\n          </InlineLink>{' '}\n        </Text>\n      </FormControl.Label>\n\n      <Checkbox />\n    </FormControl>\n    <Container\n      sx={{\n        justifyContent: 'end',\n        display: 'inline-grid',\n        gap: 16,\n      }}\n    >\n      <Button variant=\"primary\" type=\"submit\">\n        Start trial\n      </Button>\n    </Container>\n  </Container>\n</form>\n```\n\n### Visually hidden label\n\n```jsx live\n<FormControl>\n  <FormControl.Label visuallyHidden>Name</FormControl.Label>\n  <TextInput />\n</FormControl>\n```\n\n### Validation\n\nThe following example demonstrates declarative form validation in [controlled mode](https://reactjs.org/docs/forms.html#controlled-components).\n\nTry changing the input value to to `monalisa` to show the `success` state.\n\n```javascript live noinline\nconst App = () => {\n  const [value, setValue] = React.useState()\n  const [validationState, setValidationState] = React.useState()\n\n  React.useEffect(() => {\n    const defaultHandle = 'mona lisa'\n    setValue(defaultHandle)\n    validate(defaultHandle)\n  }, [])\n\n  const validate = (inputValue) => {\n    if (/\\s/g.test(inputValue)) {\n      setValidationState('error')\n    } else {\n      setValidationState('success')\n    }\n  }\n\n  const handleChange = (event) => {\n    event.preventDefault()\n    if (!event.target.value) {\n      setValue(undefined)\n      setValidationState(undefined)\n      return\n    }\n    setValue(event.target.value)\n    validate(event.target.value)\n  }\n\n  return (\n    <FormControl validationStatus={validationState}>\n      <FormControl.Label>GitHub handle</FormControl.Label>\n      <TextInput onChange={handleChange} value={value} fullWidth />\n      {validationState && validationState === 'error' && (\n        <FormControl.Validation>\n          GitHub handles cannot contain spaces.{' '}\n          {value && `Did you mean \"${value.replaceAll(' ', '')}\"`}\n        </FormControl.Validation>\n      )}\n      {validationState && validationState === 'success' && (\n        <FormControl.Validation>Valid name</FormControl.Validation>\n      )}\n    </FormControl>\n  )\n}\n\nrender(App)\n```\n\n### Hint\n\n```jsx live\n<FormControl>\n  <FormControl.Label>Select</FormControl.Label>\n  <Select>\n    <Select.Option value=\"\" disabled>\n      Select a handle\n    </Select.Option>\n    <Select.Option value=\"mona\">Monalisa</Select.Option>\n    <Select.Option value=\"hubot\">Hubot</Select.Option>\n  </Select>\n  <FormControl.Hint>With an optional message</FormControl.Hint>\n</FormControl>\n```\n\n### Full width\n\nPass the `fullWidth` prop to `FormControl` to provide additional behavior and state context to all `children`, rather than the input only.\n\n```jsx live\n<FormControl fullWidth>\n  <FormControl.Label>Name</FormControl.Label>\n  <TextInput />\n</FormControl>\n```\n\n### Sizes\n\n`FormControl` can appear in `medium` and `large` dimensions using the `size` prop.\n\n```jsx live\n<Container sx={{display: 'grid', gap: 3}}>\n  <FormControl size=\"medium\">\n    <FormControl.Label>Medium</FormControl.Label>\n    <TextInput />\n  </FormControl>\n\n  <FormControl size=\"large\">\n    <FormControl.Label>Large</FormControl.Label>\n    <TextInput />\n  </FormControl>\n</Container>\n```\n\n### Required\n\nPass the `required` prop to `FormControl` to provide additional behavior and state context to all `children`, rather than the input only.\n\n```jsx live\n<FormControl required>\n  <FormControl.Label>Name</FormControl.Label>\n  <TextInput />\n</FormControl>\n```\n\n### Using `refs`\n\n`FormControl` inputs can be used in [uncontrolled mode](https://reactjs.org/docs/uncontrolled-components.html) by forwarding a `ref` to the underlying element.\n\n```javascript live noinline\nconst App = () => {\n  const inputRef = React.useRef(null)\n\n  const handleSubmit = (e) => {\n    e.preventDefault()\n    if (inputRef.current) {\n      alert(`Name: ${inputRef.current.value}`)\n    }\n  }\n\n  return (\n    <form onSubmit={handleSubmit}>\n      <Container\n        sx={{\n          display: 'grid',\n          gap: 'var(--base-size-16)',\n          maxWidth: 400,\n          marginX: 'auto',\n        }}\n      >\n        <FormControl fullWidth>\n          <FormControl.Label>Name</FormControl.Label>\n          <TextInput ref={inputRef} defaultValue=\"Mona Lisa\" />\n        </FormControl>\n        <Button type=\"submit\" variant=\"primary\">\n          Submit\n        </Button>\n      </Container>\n    </form>\n  )\n}\n\nrender(App)\n```\n\n## Component props\n\n### FormControl <Label>Required</Label>\n\n`FormControl` passes contextual data to its child inputs, labels, validation messaging and more.\n\n| Name               | Type                                                                                                                                                 | Default | Description                                                       |\n| :----------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------- | :-----: | :---------------------------------------------------------------- |\n| `children`         | <PropTableValues values={['FormControl.Label','Checkbox', 'Select', 'TextInput', 'FormControl.Validation', 'React.ReactElement' ]} addLineBreaks />, |         | Valid child nodes                                                 |\n| `className`        | `string`                                                                                                                                             |         | Sets a custom class                                               |\n| `id`               | `string`                                                                                                                                             |         | Sets a custom id                                                  |\n| `fullWidth`        | `boolean`                                                                                                                                            |         | Stretches elements visually to the edges of its parent container. |\n| `ref`              | `React.RefObject`                                                                                                                                    |         | Forward a Ref to the underlying DOM node                          |\n| `size`             | <PropTableValues values={['medium', 'large' ]} addLineBreaks />                                                                                      |         | Visual dimensions for input and label                             |\n| `validationStatus` | <PropTableValues values={['error', 'success' ]} addLineBreaks />                                                                                     |         | Applies visual and semantic state to the underlying elements      |\n\n<h3 id=\"FormControl-label\">\n  FormControl.Label <Label>Required</Label>\n</h3>\n\n`FormControl.Label` should be provided for the `FormControl` to be accessible to assistive technology, but it may be visually hidden.\n\n| Name             | Type                                                            |  Default   | Description                              |\n| :--------------- | :-------------------------------------------------------------- | :--------: | :--------------------------------------- |\n| `children`       | `string`                                                        |            | Label text                               |\n| `className`      | `string`                                                        |            | Applies a custom class                   |\n| `id`             | `string`                                                        |            | Sets a custom id                         |\n| `ref`            | `React.RefObject`                                               |            | Forward a Ref to the underlying DOM node |\n| `size`           | <PropTableValues values={['medium', 'large' ]} addLineBreaks /> | `'medium'` | Set visual dimensions                    |\n| `visuallyHidden` | `boolean`                                                       |  `false`   | Hide for sighted users                   |\n\nAdditional props can be passed to the `<label>` element. [See MDN for a list of props](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/label#attributes) accepted by the `<label>` element.\n\n<h3 id=\"FormControl-validation\">FormControl.Validation</h3>\n\n| Name               | Type                                                             | Default | Description                                                               |\n| :----------------- | :--------------------------------------------------------------- | :-----: | :------------------------------------------------------------------------ |\n| `children`         | `string`                                                         |         | Validation message                                                        |\n| `className`        | `string`                                                         |         | FormControl.Validation custom class                                       |\n| `id`               | `string`                                                         |         | Sets a custom id                                                          |\n| `ref`              | `React.RefObject`                                                |         | Forward a Ref to the underlying DOM node                                  |\n| `validationStatus` | <PropTableValues values={['error', 'success' ]} addLineBreaks /> |         | Applies a visual and semantic validation state to the underlying elements |\n\n## Related components\n\n- <Link to=\"/components/Checkbox\">Checkbox</Link>\n- <Link to=\"/components/Select\">Select</Link>\n- <Link to=\"/components/TextInput\">TextInput</Link>\n","parent":{"relativeDirectory":"components","name":"FormControl"}},{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/components/IDE.mdx","frontmatter":{"title":"IDE"},"rawBody":"---\ntitle: IDE\nstatus: Experimental\nsource: https://github.com/primer/brand/tree/main/packages/react/src/IDE/IDE.tsx\nstorybook: '/brand/storybook/?path=/story/components-ide--default'\ndescription: Use the IDE to showcase a simulated integrated developer environment, complete with a code editor and AI chat that's intended to enhancing code representation in marketing contexts.\n---\n\nimport {Label} from '@primer/react'\nimport {PropTableValues} from '../../src/components'\nimport {Link, IDEFileExtensions} from '@primer/react-brand'\n\n```js\nimport {IDE} from '@primer/react-brand'\n```\n\n## Examples\n\n### Default\n\n<Note variant=\"warning\">\n\nThe IDE does not automatically apply syntax highlighting to code snippets. Usage of this component in GitHub.com is expected to use the proprietary tokenizer and highlighter, the output of which can be passed directly into IDE as a parameter.\n\n</Note>\n\n<Note variant=\"info\">\n\nSee Storybook for examples of IDE using `highlight.js` syntax highlighter.\n\n<Link href=\"https://primer.style/brand/storybook/?path=/story/components-ide--default\">\n  See syntax highlighter examples\n</Link>\n\n</Note>\n\n```jsx live\n<IDE\n  alternativeText=\"An interactive development environment displaying two code files: 'index.js' and 'parse_expenses.py'. The 'index.js' file contains JavaScript code for a function that fetches data and draws a scatterplot. The 'parse_expenses.py' file contains Python code for a function that parses expense data.\"\n  height={500}\n>\n  <IDE.Editor\n    showReplayButton={false}\n    files={[\n      {\n        name: 'index.js',\n        code: `import { fetch } from \"fetch-h2\";\n\nasync function isPositive(text: string): Promise<boolean> {\n  const response = await fetch(...)\n  const drawScatterplot = (data, height, width) => {\n    const svg = d3.select(\"#scatterplot\")\n      .data(data)\n      .attr(\"cx\", d => d.x)\n      .attr(\"cy\", d => d.y)\n      .attr(\"r\", 5)\n  }\n  const json = await response.json();\n  return json.label === \"pos\";\n}`,\n      },\n      {\n        name: 'parse_expenses.py',\n        code: `import datetime\n  \ndef parse_expenses(expenses_string):\nIgnore lines starting with #.\nParse the date using datetime.\nExample expenses_string:\n2016-01-02 -34.01 USD\n2016-01-03 2.59 DKK\n2016-01-03 -2.72 EUR\n\"\"\"\nexpenses = []\nfor line in expenses_string.splitlines():\nif line.startswith(\"#\"):\ncontinue\ndate, value, currency = line.split(\" \")\nexpenses.append((datetime.datetime.strptime(date, \"%Y-%m-%d\"),\n          float(value),\n          currency))\nreturn expenses`,\n      },\n    ]}\n  />\n</IDE>\n```\n\n### Animations\n\nLine-by-line animations can be enabled using pre-formatted prop values. A replay button is enabled by default.\n\n```jsx live\n<IDE\n  alternativeText=\"An interactive development environment displaying one code file: 'index.js'. The 'index.js' file contains JavaScript code for a function that fetches data and draws a scatterplot. Each line animates into view line-by-line.\"\n  height={500}\n>\n  <IDE.Editor\n    files={[\n      {\n        name: 'index.js',\n        code: `import { fetch } from \"fetch-h2\";\n\nasync function isPositive(text: string): Promise<boolean> {\n  const response = await fetch(...)\n  const drawScatterplot = (data, height, width) => {\n    const svg = d3.select(\"#scatterplot\")\n      .data(data)\n      .attr(\"cx\", d => d.x)\n      .attr(\"cy\", d => d.y)\n      .attr(\"r\", 5)\n  }\n  const json = await response.json();\n  return json.label === \"pos\";\n}`\n          .split('\\n')\n          .map((line) => line || ' '),\n      },\n    ]}\n  />\n</IDE>\n```\n\n### GitHub Copilot suggestions\n\nSimulate GitHub Copilot suggestions using the `suggestedLineStart` property.\n\n```jsx live\n<IDE\n  alternativeText=\"An interactive development environment displaying one code file: 'index.js'. The 'index.js' file contains JavaScript code for a function that fetches data and draws a scatterplot. Line 6 onwards contains a GitHub Copilot auto suggestion.\"\n  height={500}\n>\n  <IDE.Editor\n    files={[\n      {\n        name: 'index.js',\n        // Line number at which the suggestion will apply\n        suggestedLineStart: 6,\n        code: `import { fetch } from \"fetch-h2\";\n\nasync function isPositive(text: string): Promise<boolean> {\n  const response = await fetch(...)\n  const drawScatterplot = (data, height, width) => {\n    const svg = d3.select(\"#scatterplot\")\n      .data(data)\n      .attr(\"cx\", d => d.x)\n      .attr(\"cy\", d => d.y)\n      .attr(\"r\", 5)\n  }\n  const json = await response.json();\n  return json.label === \"pos\";\n}`\n          .split('\\n')\n          .map((line) => line || ' '),\n      },\n    ]}\n  />\n</IDE>\n```\n\n### GitHub Copilot chat\n\nSimulate GitHub Copilot Chat using the `IDE.Chat` sub-component. The script is fully customizable, and code snippets will require pre-formatting to enable syntax highlighting.\n\n<Note variant=\"info\">\n\nSee Storybook for a comprehensive example of the Chat feature, inclusive of syntax highlighting.\n\n<Link href=\"https://primer.style/brand/storybook/?path=/story/components-ide-features--chat-only\">\n  See Chat example in Storybook\n</Link>\n\n</Note>\n\n```jsx live\n<IDE\n  alternativeText=\"A chat interface showing a conversation between a user named 'monalisa' and an assistant named 'GitHub Copilot'. Monalisa asks 'How do I concatenate two arrays in JavaScript\"\n  height={700}\n>\n  <IDE.Chat\n    script={[\n      {\n        role: 'user',\n        handle: 'monalisa',\n        avatar: 'https://github.com/mona.png',\n        message: 'How do I concatenate two arrays in JavaScript?',\n      },\n      {\n        role: 'assistant',\n        handle: 'GitHub Copilot',\n        avatar: 'https://github.com/copilot.png',\n        message:\n          \"To concatenate two arrays in JavaScript, you can use the `concat` method. Here's an example:\",\n        codeSnippet: `const array1 = [1, 2, 3];\\nconst array2 = [4, 5, 6];\\nconst resultArray = array1.concat(array2);\\nconsole.log(resultArray); // Output: [1, 2, 3, 4, 5, 6]`,\n      },\n      {\n        role: 'user',\n        handle: 'monalisa',\n        avatar: 'https://github.com/mona.png',\n        message: 'It worked!',\n      },\n    ]}\n  />\n</IDE>\n```\n\n### Glass variant\n\nA `glass` variant is available to simplify placement of the IDE on background images. This variant adds alpha transparency and background blurring.\n\n```jsx live\n<Box\n  padding={48}\n  borderRadius=\"large\"\n  style={{\n    backgroundImage: `url(https://github.com/primer/brand/assets/13340707/7fe496dc-f6e0-417e-9453-32cec638ca68)`,\n    backgroundRepeat: 'no-repeat',\n    backgroundSize: 'cover',\n    backgroundPosition: 'center',\n  }}\n>\n  <IDE height={400} variant=\"glass\">\n    <IDE.Editor\n      showReplayButton={false}\n      files={[\n        {\n          name: 'index.js',\n          code: `import { fetch } from \"fetch-h2\";\n\nasync function isPositive(text: string): Promise<boolean> {\n  const response = await fetch(...)\n  const drawScatterplot = (data, height, width) => {\n    const svg = d3.select(\"#scatterplot\")\n      .data(data)\n      .attr(\"cx\", d => d.x)\n      .attr(\"cy\", d => d.y)\n      .attr(\"r\", 5)\n  }\n  const json = await response.json();\n  return json.label === \"pos\";\n}`,\n        },\n        {\n          name: 'parse_expenses.py',\n          code: `import datetime\n  \ndef parse_expenses(expenses_string):\nIgnore lines starting with #.\nParse the date using datetime.\nExample expenses_string:\n2016-01-02 -34.01 USD\n2016-01-03 2.59 DKK\n2016-01-03 -2.72 EUR\n\"\"\"`,\n        },\n      ]}\n    />\n  </IDE>\n</Box>\n```\n\n## Component props\n\n### IDE <Label>Required</Label>\n\n| name              | type                                                            | default   | required | description                                   |\n| ----------------- | --------------------------------------------------------------- | --------- | -------- | --------------------------------------------- |\n| `alternativeText` | `string`                                                        |           | `true`   | Alternative description of the IDE            |\n| `height`          | `number`                                                        | `800`     | `false`  | The optionally configurable height of the IDE |\n| `variant`         | <PropTableValues values={['default', 'glass']} addLineBreaks /> | `default` | `false`  | Alternative presentation of the IDE           |\n\n### IDE.Editor\n\n| name               | type                                                                      | default | required | description                     |\n| ------------------ | ------------------------------------------------------------------------- | ------- | -------- | ------------------------------- |\n| `activeTab`        | `number`                                                                  |         | `false`  | Active tab index                |\n| `files`            | [`IDEEditorFile[]`](#)                                                    |         | `true`   | Array of editor files           |\n| `showLineNumbers`  | `boolean`                                                                 |         | `false`  | Show line numbers in the editor |\n| `size`             | <PropTableValues values={['small' , 'medium' , 'large']} addLineBreaks /> |         | `false`  | Controls editor text size       |\n| `triggerAnimation` | `boolean`                                                                 |         | `false`  | Trigger animation externally    |\n| `showReplayButton` | `boolean`                                                                 |         | `false`  | Show replay button              |\n\nSupported file extensions in the editor include: <PropTableValues values={IDEFileExtensions} removeApostrophes commaSeparated />\n\n### IDE.Chat\n\n| name             | type                    | default | required | description                  |\n| ---------------- | ----------------------- | ------- | -------- | ---------------------------- |\n| `script`         | [`IDEChatMessage[]`](#) |         | `false`  | Array of chat messages       |\n| `animationDelay` | `number`                | `3000`  | `false`  | Delay for the chat animation |\n","parent":{"relativeDirectory":"components","name":"IDE"}},{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/components/Pagination.mdx","frontmatter":{"title":"Pagination"},"rawBody":"---\ntitle: Pagination\nstatus: Experimental\nsource: https://github.com/primer/brand/tree/main/packages/react/src/Pagination/Pagination.tsx\nstorybook: '/brand/storybook/?path=/story/components-pagination--default'\ndescription: Use Pagination to display a sequence of links that allow navigation to discrete, related pages.\n---\n\nimport {Label} from '@primer/react'\nimport {BreadcrumbVariants} from '@primer/react-brand'\nimport {PropTableValues} from '../../src/components'\n\n```js\nimport {Pagination} from '@primer/react-brand'\n```\n\n## Examples\n\n### Default\n\n```javascript live noinline\nconst App = () => {\n  const [currentPage, setCurrentPage] = React.useState(5)\n  const totalPages = 10\n\n  const handlePageChange = (e, pageNumber) => {\n    if (pageNumber === currentPage + 1 && currentPage < totalPages) {\n      // Next page handler\n      setCurrentPage(currentPage + 1)\n    } else if (pageNumber === currentPage - 1 && currentPage > 1) {\n      // Previous page handler\n      setCurrentPage(currentPage - 1)\n    } else if (pageNumber >= 1 && pageNumber <= totalPages) {\n      setCurrentPage(pageNumber)\n    }\n  }\n\n  return (\n    <Pagination\n      pageCount={10}\n      currentPage={currentPage}\n      onPageChange={handlePageChange}\n    />\n  )\n}\n\nrender(<App />)\n```\n\n### Hide page numbers\n\n```jsx live\n<Pagination pageCount={15} currentPage={5} showPages={false} />\n```\n\n### Hide page numbers at specific breakpoints\n\n```jsx live\n<Pagination\n  pageCount={15}\n  currentPage={5}\n  showPages={{narrow: false, regular: true, wide: true}}\n/>\n```\n\n### Custom href\n\n```jsx live\n<Pagination\n  pageCount={3}\n  currentPage={1}\n  hrefBuilder={(n) => `https://primer.style/brand/page/${n}`}\n/>\n```\n\n## Component props\n\n### Pagination <Label>Required</Label>\n\n| name                   | type                                                                                   | default | required | description                                                                       |\n| ---------------------- | -------------------------------------------------------------------------------------- | ------- | -------- | --------------------------------------------------------------------------------- |\n| `pageCount`            | `number`                                                                               |         | `true`   | The total number of pages                                                         |\n| `currentPage`          | `number`                                                                               |         | `true`   | The current page number                                                           |\n| `onPageChange`         | `(e: React.MouseEvent, n: number) => void`                                             |         | `false`  | Callback function for when the page changes                                       |\n| `hrefBuilder`          | `(n: number) => string`                                                                |         | `false`  | Function to build the href for each page                                          |\n| `marginPageCount`      | `number`                                                                               |         | `false`  | Defines how many pages are to be displayed on the left and right of the component |\n| `showPages`            | <PropTableValues values={['boolean', 'ResponsivePageVisibilityMap'] } addLineBreaks /> |         | `false`  | Whether to show the page numbers                                                  |\n| `surroundingPageCount` | `number`                                                                               |         | `false`  | The number of pages to show on each side of the current page                      |\n","parent":{"relativeDirectory":"components","name":"Pagination"}},{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/components/MinimalFooter.mdx","frontmatter":{"title":"Minimal footer"},"rawBody":"---\ntitle: Minimal footer\nstatus: Experimental\nsource: https://github.com/primer/brand/blob/main/packages/react/src/MinimalFooter/MinimalFooter.tsx\nfigma: https://www.figma.com/file/BJ95AjraesmRCWsKA013GS/Primer-Brand?node-id=4686%3A30927&t=QKh20cPDVIFtBCHj-0\nstorybook: '/brand/storybook/?path=/story/components-minimalfooter--default'\ndescription: Use the minimal footer component to provide a global footer featuring legal links, GitHub logomarks and footnotes.\n---\n\nimport {MinimalFooterSocialLinks} from '@primer/react-brand'\nimport {PropTableValues} from '../../src/components'\n\n```js\nimport {MinimalFooter} from '@primer/react-brand'\n```\n\n## Examples\n\n### Default\n\n```jsx live\n<MinimalFooter />\n```\n\n### Footer links\n\n```jsx live\n<MinimalFooter>\n  <MinimalFooter.Link href=\"https://github.com/organizations/enterprise_plan\">\n    Try GitHub for free\n  </MinimalFooter.Link>\n  <MinimalFooter.Link href=\"https://github.com/enterprise\">\n    Enterprise\n  </MinimalFooter.Link>\n  <MinimalFooter.Link href=\"https://github.com/enterprise/contact\">\n    Email us\n  </MinimalFooter.Link>\n</MinimalFooter>\n```\n\n### Footnotes\n\n```jsx live\n<MinimalFooter>\n  <MinimalFooter.Footnotes>\n    <Text>\n      <sup>1</sup>By signing up, GitHub may use your information to personalize\n      and measure the effectiveness of enterprise business ads, including those\n      you see off of GitHub, promotional communications or marketing you receive\n      related to the Enterprise Marketing Pages. We will send you relevant\n      emails and promotional information based on your GitHub profile and any\n      additional information provided in the sign-up form. If you change your\n      mind, you can unsubscribe at any time (an unsubscribe link is provided in\n      every email). For more information on how GitHub uses your personal\n      information, please see the{' '}\n      <InlineLink\n        href=\"https://docs.github.com/en/site-policy/privacy-policies/github-privacy-statement\"\n        target=\"_blank\"\n      >\n        GitHub Privacy Statement\n      </InlineLink>\n      .\n    </Text>\n  </MinimalFooter.Footnotes>\n</MinimalFooter>\n```\n\n### Footer social links\n\n`MinimalFooter` will render all supported social links by default. Social links can be removed however, by passing `socialLinks={false}`. Alteratively, pass an array of valid social links to filter the default list.\n\n```jsx live\nHide all social links:\n<MinimalFooter socialLinks={false} />\n<br />\nOnly show GitHub social link:\n<MinimalFooter socialLinks={['github']} />\n```\n\n## Component props\n\n### MinimalFooter\n\n| Name                 | Type                                                                                             |                                        Default                                        | Description                                            |\n| :------------------- | :----------------------------------------------------------------------------------------------- | :-----------------------------------------------------------------------------------: | :----------------------------------------------------- |\n| `className`          | `string`                                                                                         |                                                                                       | Sets a custom class on the root element                |\n| `children`           | <PropTableValues values={['MinimalFooter.Link', 'MinimalFooter.Footnotes', ]} addLineBreaks />   |                                      `undefined`                                      | Valid child components                                 |\n| `copyrightStatement` | `string` \\| `ReactElement`                                                                       |                                                                                       | The copyright statement to be displayed in the footer. |\n| `logoHref`           | `string`                                                                                         |                                `'https://github.com'`                                 | The href for the GitHub logo.                          |\n| `socialLinks`        | `['x', 'github', 'linkedin', 'youtube', 'facebook', 'twitch', 'tiktok', 'instagram']` \\| `false` | `['x', 'github', 'linkedin', 'youtube', 'facebook', 'twitch', 'tiktok', 'instagram']` | Array of valid strings or `false` to hide all links    |\n\n### MinimalFooter.Link\n\n| Name       | Type              |   Default   | Description                         |\n| :--------- | :---------------- | :---------: | :---------------------------------- |\n| `as`       | `'a'`, `'button'` |    `'a'`    | Applies the underlying HTML element |\n| `children` | `string`          | `undefined` | Link label text                     |\n\n### MinimalFooter.Footnotes\n\n| Name       | Type         |   Default   | Description                                                           |\n| :--------- | :----------- | :---------: | :-------------------------------------------------------------------- |\n| `children` | ReactElement | `undefined` | Use Primer Brand `Text` components to benefit from inherited styling. |\n","parent":{"relativeDirectory":"components","name":"MinimalFooter"}},{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/components/Prose.mdx","frontmatter":{"title":"Prose"},"rawBody":"---\ntitle: Prose\nstatus: Experimental\nsource: https://github.com/primer/brand/blob/main/packages/react/src/Prose/Prose.tsx\nstorybook: '/brand/storybook/?path=/story/components-prose--default'\ndescription: Use the prose component to apply Primer Brand styles to HTML markup.\n---\n\n```js\nimport {Prose} from '@primer/react-brand'\n```\n\n## Examples\n\n<Note>\n\nThe `Prose` component renders native HTML elements with Primer Brand styling. `Prose` doesn't sanitize the input data. We recommend sanitizing the data before passing it into `Prose`.\n\n`Prose` currently supports styling the following HTML elements: `<h1>`, `<h2>`, `<h3>`, `<h4>`, `<h5>`, `<h6>`, `<p>`, `<strong>`, `<em>`, `<a>`, `<ul>`, `<ol>`, `<li>`, `<img>`, `<blockquote>`, `<code>`, `<figure>`, `<figcaption>` and `<div>`.\n\n</Note>\n\n### Default\n\n```jsx live\n<Prose\n  html={`\n    <h2>Heading level 2</h2>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut tempor lectus ipsum, consectetur convallis diam pretium quis. Proin ut felis ut eros tristique tincidunt.</p>\n    <figure>\n      <blockquote>\n        <p>Nulla ac odio eu magna hendrerit porta. Donec nec eros quis tortor tincidunt vulputate. Aenean id pharetra diam, sit amet auctor leo. Aliquam erat volutpat.</p>\n        <figcaption>Lisa Vanderschuit, Engineering Program Manager, Shopify</figcaption>\n      </blockquote>\n    </figure>\n    <p>Integer pellentesque pretium nulla viverra molestie. Praesent quis pretium sapien. Sed convallis eget lectus et pulvinar:</p>\n    <ul>\n      <li>\n        Vivamus eu risus nec lectus consequat rutrum at vel lacus.\n      </li>\n      <li>Donec at dolor ut metus imperdiet congue vel porta nunc.\n      </li>\n      <li>Quisque eu tortor suscipit, congue quam in, bibendum tellus.</li>\n    </ul>\n    <h3>Heading level 3</h3>\n    <p>Pellentesque non ornare ligula. Suspendisse nibh purus, pretium id tortor sit amet, tincidunt gravida augue. Ut malesuada, nisl vel dignissim mollis</p>\n    <img\n      src=\"https://via.placeholder.com/400x400/f5f5f5/f5f5f5.png\"\n      alt=\"placeholder, blank area with an off-white background color\"\n      />\n    <h4>Heading level  4</h4>\n    <p>\n      Secure code as you write it. Automatically review every change to your codebase and identify vulnerabilities\n      before they reach production. <a href=\"/#\">Learn more here.</a>\n    </p>\n    <h5>Heading level 5</h5>\n    <ol>\n      <li>\n        Vivamus eu risus nec lectus consequat rutrum at vel lacus.\n      </li>\n      <li>Donec at dolor ut metus imperdiet congue vel porta nunc.\n      </li>\n      <li>Quisque eu tortor suscipit, congue quam in, bibendum tellus.</li>\n    </ol>\n    <p><code>for-each-ref</code> is extremely useful for listing references, finding which references point at a given object (with <code>--points-at</code>), which references have been merged into a given branch (with <code>--merged</code>), or which references contain a given commit (with <code>--contains</code>).</p>\n    <h6>Heading level 6</h6>\n    <p>Pellentesque non ornare ligula. Suspendisse nibh purus, pretium id tortor sit amet, tincidunt gravida augue.</p>\n    <p>Nunc velit odio, posuere eu felis eget, consectetur fermentum nisi. Aenean tempor odio id ornare ultrices. Quisque blandit condimentum tellus, semper efficitur sapien dapibus nec. </p>\n    `}\n/>\n```\n\n### Full Width\n\n```jsx live\n<Prose\n  enableFullWidth\n  html={`<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut tempor lectus ipsum, consectetur convallis diam pretium quis. Proin ut felis ut eros tristique tincidunt.</p><p>Nulla ac odio eu magna hendrerit porta. Donec nec eros quis tortor tincidunt vulputate. Aenean id pharetra diam, sit amet auctor leo. Aliquam erat volutpat.</p>`}\n/>\n```\n\n## Component props\n\n### Prose\n\n| Name              | Type      | Default | Required | Description                                        |\n| :---------------- | :-------- | :-----: | :------- | -------------------------------------------------- |\n| `html`            | `string`  |         | `true`   | Content to be displayed within the Prose component |\n| `enableFullWidth` | `boolean` | `false` |          | A toggle to remove the default max-width           |\n| `className`       | `string`  |         |          | Sets a custom class on the root element            |\n","parent":{"relativeDirectory":"components","name":"Prose"}},{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/components/PricingOptions.mdx","frontmatter":{"title":"Pricing options"},"rawBody":"---\ntitle: Pricing options\nstatus: Experimental\na11yReviewed: false\nsource: https://github.com/primer/brand/blob/main/packages/react/src/PricingOptions/PricingOptions.tsx\nstorybook: '/brand/storybook/?path=/story/components-pricingoptions--default'\ndescription: Use the pricing options to display pricing plan information on a page.\n---\n\nimport {Label} from '@primer/react'\nimport {StarIcon, CopilotIcon} from '@primer/octicons-react'\n\nimport {PropTableValues} from '../../src/components'\nimport {PricingOptions} from '@primer/react-brand'\n\n## Examples\n\n### Default\n\n```jsx live\n<PricingOptions>\n  <PricingOptions.Item>\n    <PricingOptions.Label>Recommended</PricingOptions.Label>\n    <PricingOptions.Heading>Copilot</PricingOptions.Heading>\n    <PricingOptions.Description>\n      Copilot in the coding environment.\n    </PricingOptions.Description>\n    <PricingOptions.Price\n      currencySymbol=\"$\"\n      originalPrice=\"20\"\n      trailingText=\"per month / $100 per year\"\n    >\n      10\n    </PricingOptions.Price>\n    <PricingOptions.FeatureList>\n      <PricingOptions.FeatureListItem>\n        Everything in Copilot Business plus:\n      </PricingOptions.FeatureListItem>\n      <PricingOptions.FeatureListItem>\n        Chat in IDE and Mobile\n      </PricingOptions.FeatureListItem>\n      <PricingOptions.FeatureListItem>\n        CLI assistance\n      </PricingOptions.FeatureListItem>\n      <PricingOptions.FeatureListItem>\n        Code completions\n      </PricingOptions.FeatureListItem>\n    </PricingOptions.FeatureList>\n    <PricingOptions.PrimaryAction href=\"/buy\">\n      Buy now\n    </PricingOptions.PrimaryAction>\n    <PricingOptions.SecondaryAction href=\"/contact\">\n      Contact sales\n    </PricingOptions.SecondaryAction>\n  </PricingOptions.Item>\n\n  <PricingOptions.Item>\n    <PricingOptions.Label>Recommended</PricingOptions.Label>\n    <PricingOptions.Heading>Copilot Business</PricingOptions.Heading>\n    <PricingOptions.Description>\n      Copilot personalized to your organization throughout the software\n      development lifecycle. Requires GitHub Enterprise Cloud.\n    </PricingOptions.Description>\n    <PricingOptions.Price\n      currencySymbol=\"$\"\n      trailingText=\"per user / month\"\n      originalPrice=\"49\"\n    >\n      39\n    </PricingOptions.Price>\n    <PricingOptions.FeatureList>\n      <PricingOptions.FeatureListItem>\n        Everything in Copilot Business plus:\n      </PricingOptions.FeatureListItem>\n      <PricingOptions.FeatureListItem>\n        Chat in IDE and Mobile\n      </PricingOptions.FeatureListItem>\n      <PricingOptions.FeatureListItem>\n        CLI assistance\n      </PricingOptions.FeatureListItem>\n      <PricingOptions.FeatureListItem>\n        Code completions\n      </PricingOptions.FeatureListItem>\n    </PricingOptions.FeatureList>\n    <PricingOptions.PrimaryAction href=\"/buy\">\n      Join waitlist\n    </PricingOptions.PrimaryAction>\n  </PricingOptions.Item>\n</PricingOptions>\n```\n\n### Cards variant\n\n```jsx live\n<PricingOptions variant=\"cards\">\n  <PricingOptions.Item>\n    <PricingOptions.Label>Recommended</PricingOptions.Label>\n    <PricingOptions.Heading>Copilot</PricingOptions.Heading>\n    <PricingOptions.Description>\n      Copilot in the coding environment.\n    </PricingOptions.Description>\n    <PricingOptions.Price\n      currencySymbol=\"$\"\n      trailingText=\"per month / $100 per year\"\n    >\n      10\n    </PricingOptions.Price>\n    <PricingOptions.FeatureList>\n      <PricingOptions.FeatureListItem>\n        Everything in Copilot Business plus:\n      </PricingOptions.FeatureListItem>\n      <PricingOptions.FeatureListItem>\n        Chat in IDE and Mobile\n      </PricingOptions.FeatureListItem>\n      <PricingOptions.FeatureListItem>\n        CLI assistance\n      </PricingOptions.FeatureListItem>\n      <PricingOptions.FeatureListItem>\n        Code completions\n      </PricingOptions.FeatureListItem>\n    </PricingOptions.FeatureList>\n    <PricingOptions.PrimaryAction href=\"/buy\">\n      Buy now\n    </PricingOptions.PrimaryAction>\n    <PricingOptions.SecondaryAction href=\"/contact\">\n      Contact sales\n    </PricingOptions.SecondaryAction>\n  </PricingOptions.Item>\n\n  <PricingOptions.Item>\n    <PricingOptions.Label>Recommended</PricingOptions.Label>\n    <PricingOptions.Heading>Copilot Business</PricingOptions.Heading>\n    <PricingOptions.Description>\n      Copilot personalized to your organization throughout the software\n      development lifecycle. Requires GitHub Enterprise Cloud.\n    </PricingOptions.Description>\n    <PricingOptions.Price currencySymbol=\"$\" trailingText=\"per user / month\">\n      39\n    </PricingOptions.Price>\n    <PricingOptions.FeatureList>\n      <PricingOptions.FeatureListItem>\n        Everything in Copilot Business plus:\n      </PricingOptions.FeatureListItem>\n      <PricingOptions.FeatureListItem>\n        Chat in IDE and Mobile\n      </PricingOptions.FeatureListItem>\n      <PricingOptions.FeatureListItem>\n        CLI assistance\n      </PricingOptions.FeatureListItem>\n      <PricingOptions.FeatureListItem>\n        Code completions\n      </PricingOptions.FeatureListItem>\n    </PricingOptions.FeatureList>\n    <PricingOptions.PrimaryAction href=\"/buy\">\n      Join waitlist\n    </PricingOptions.PrimaryAction>\n  </PricingOptions.Item>\n</PricingOptions>\n```\n\n### One option\n\nThis is the one-option layout for the pricing options component\n\n```jsx live\n<PricingOptions>\n  <PricingOptions.Item>\n    <PricingOptions.Heading>Copilot Individual</PricingOptions.Heading>\n    <PricingOptions.Description>\n      Code completions, Chat, and more for indie developers and freelancers.\n    </PricingOptions.Description>\n    <PricingOptions.Price\n      currencySymbol=\"$\"\n      trailingText=\"per month / $100 per year\"\n    >\n      10\n    </PricingOptions.Price>\n    <PricingOptions.PrimaryAction href=\"/buy\">\n      Buy now\n    </PricingOptions.PrimaryAction>\n    <PricingOptions.SecondaryAction href=\"/contact\">\n      Contact sales\n    </PricingOptions.SecondaryAction>\n  </PricingOptions.Item>\n</PricingOptions>\n```\n\n### Two options\n\nThis is the two-item layout for the pricing options component.\n\n```jsx live\n<PricingOptions>\n  <PricingOptions.Item>\n    <PricingOptions.Label>Recommended</PricingOptions.Label>\n    <PricingOptions.Heading>Copilot</PricingOptions.Heading>\n    <PricingOptions.Description>\n      Copilot in the coding environment.\n    </PricingOptions.Description>\n    <PricingOptions.Price\n      currencySymbol=\"$\"\n      trailingText=\"per month / $100 per year\"\n    >\n      10\n    </PricingOptions.Price>\n    <PricingOptions.FeatureList>\n      <PricingOptions.FeatureListItem>\n        Everything in Copilot Business plus:\n      </PricingOptions.FeatureListItem>\n      <PricingOptions.FeatureListItem>\n        Chat in IDE and Mobile\n      </PricingOptions.FeatureListItem>\n      <PricingOptions.FeatureListItem>\n        CLI assistance\n      </PricingOptions.FeatureListItem>\n      <PricingOptions.FeatureListItem>\n        Code completions\n      </PricingOptions.FeatureListItem>\n    </PricingOptions.FeatureList>\n    <PricingOptions.PrimaryAction href=\"/buy\">\n      Buy now\n    </PricingOptions.PrimaryAction>\n    <PricingOptions.SecondaryAction href=\"/contact\">\n      Contact sales\n    </PricingOptions.SecondaryAction>\n  </PricingOptions.Item>\n\n  <PricingOptions.Item>\n    <PricingOptions.Label>Recommended</PricingOptions.Label>\n    <PricingOptions.Heading>Copilot Business</PricingOptions.Heading>\n    <PricingOptions.Description>\n      Copilot personalized to your organization throughout the software\n      development lifecycle. Requires GitHub Enterprise Cloud.\n    </PricingOptions.Description>\n    <PricingOptions.Price currencySymbol=\"$\" trailingText=\"per user / month\">\n      39\n    </PricingOptions.Price>\n    <PricingOptions.FeatureList>\n      <PricingOptions.FeatureListItem>\n        Everything in Copilot Business plus:\n      </PricingOptions.FeatureListItem>\n      <PricingOptions.FeatureListItem>\n        Chat in IDE and Mobile\n      </PricingOptions.FeatureListItem>\n      <PricingOptions.FeatureListItem>\n        CLI assistance\n      </PricingOptions.FeatureListItem>\n      <PricingOptions.FeatureListItem>\n        Code completions\n      </PricingOptions.FeatureListItem>\n    </PricingOptions.FeatureList>\n    <PricingOptions.PrimaryAction href=\"/buy\">\n      Join waitlist\n    </PricingOptions.PrimaryAction>\n  </PricingOptions.Item>\n</PricingOptions>\n```\n\n### Three options\n\nThis is the three-option layout for the pricing options component.\n\n<Note>\n\n`PricingOptions` is designed to fill the width of the page's main container,\nthus it cannot be accurately represented within the narrower container of this\ndocumentation.\n\nPlease refer to our [Storybook\nexamples](https://primer.style/brand/storybook/?path=/story/components-pricingoptions-features--three-options)\nto see the component in a full-width context as originally intended.\n\n</Note>\n\n### Feature list sets\n\nUse `PricingOptions.FeatureListHeading` to group feature items together.\n\n```jsx live\n<PricingOptions>\n  <PricingOptions.Item>\n    <PricingOptions.Heading>Copilot Individual</PricingOptions.Heading>\n    <PricingOptions.Description>\n      Code completions, Chat, and more for indie developers and freelancers.\n    </PricingOptions.Description>\n    <PricingOptions.Price\n      currencySymbol=\"$\"\n      trailingText=\"per month / $100 per year\"\n    >\n      10\n    </PricingOptions.Price>\n    <PricingOptions.FeatureList>\n      <PricingOptions.FeatureListHeading>\n        Base features\n      </PricingOptions.FeatureListHeading>\n      <PricingOptions.FeatureListItem>\n        Code completions\n      </PricingOptions.FeatureListItem>\n      <PricingOptions.FeatureListItem>\n        Chat in IDE and Mobile\n      </PricingOptions.FeatureListItem>\n      <PricingOptions.FeatureListItem>\n        CLI assistance\n      </PricingOptions.FeatureListItem>\n\n      <PricingOptions.FeatureListHeading>\n        Security\n      </PricingOptions.FeatureListHeading>\n      <PricingOptions.FeatureListItem>\n        Security vulnerability filter\n      </PricingOptions.FeatureListItem>\n    </PricingOptions.FeatureList>\n\n    <PricingOptions.Footnote>\n      Free for verified students, teachers, and maintainers of popular open\n      source projects.\n    </PricingOptions.Footnote>\n\n    <PricingOptions.PrimaryAction href=\"/buy\">\n      Start a free trial\n    </PricingOptions.PrimaryAction>\n  </PricingOptions.Item>\n\n  <PricingOptions.Item>\n    <PricingOptions.Label>Recommended</PricingOptions.Label>\n    <PricingOptions.Heading>Copilot Business</PricingOptions.Heading>\n    <PricingOptions.Description>\n      Copilot personalized to your organization.\n    </PricingOptions.Description>\n    <PricingOptions.Price currencySymbol=\"$\" trailingText=\"per user / month\">\n      19\n    </PricingOptions.Price>\n    <PricingOptions.PrimaryAction href=\"/buy\">\n      Buy now\n    </PricingOptions.PrimaryAction>\n    <PricingOptions.SecondaryAction href=\"/contact\">\n      Contact sales\n    </PricingOptions.SecondaryAction>\n    <PricingOptions.FeatureList>\n      <PricingOptions.FeatureListHeading>\n        Base features\n      </PricingOptions.FeatureListHeading>\n      <PricingOptions.FeatureListItem>\n        Everything in Copilot Individual\n      </PricingOptions.FeatureListItem>\n      <PricingOptions.FeatureListItem>\n        Code referencing\n      </PricingOptions.FeatureListItem>\n\n      <PricingOptions.FeatureListHeading>\n        Security\n      </PricingOptions.FeatureListHeading>\n      <PricingOptions.FeatureListItem>\n        Security vulnerability filter\n      </PricingOptions.FeatureListItem>\n      <PricingOptions.FeatureListItem>\n        Public code filter\n      </PricingOptions.FeatureListItem>\n      <PricingOptions.FeatureListItem>\n        IP indemnity\n      </PricingOptions.FeatureListItem>\n      <PricingOptions.FeatureListItem>\n        Enterprise-grade security, safety, and privacy\n      </PricingOptions.FeatureListItem>\n    </PricingOptions.FeatureList>\n  </PricingOptions.Item>\n</PricingOptions>\n```\n\n### Included and excluded features\n\nUse `PricingOptions.FeatureListItem` with `variant=\"included\"` and `variant=\"excluded\"` to list included and excluded features.\n\n```jsx live\n<PricingOptions>\n  <PricingOptions.Item>\n    <PricingOptions.Heading>Copilot Individual</PricingOptions.Heading>\n    <PricingOptions.Description>\n      Code completions, Chat, and more for indie developers and freelancers.\n    </PricingOptions.Description>\n    <PricingOptions.Price\n      currencySymbol=\"$\"\n      trailingText=\"per month / $100 per year\"\n    >\n      10\n    </PricingOptions.Price>\n    <PricingOptions.FeatureList>\n      <PricingOptions.FeatureListHeading>\n        Chat\n      </PricingOptions.FeatureListHeading>\n      <PricingOptions.FeatureListItem>\n        Unlimited messages, interactions, and history\n      </PricingOptions.FeatureListItem>\n      <PricingOptions.FeatureListItem>\n        Context-aware coding support and explanations\n      </PricingOptions.FeatureListItem>\n      <PricingOptions.FeatureListItem variant=\"excluded\">\n        Debugging and security remediation assistance\n      </PricingOptions.FeatureListItem>\n      <PricingOptions.FeatureListItem variant=\"excluded\">\n        Repository-based semantic search\n      </PricingOptions.FeatureListItem>\n      <PricingOptions.FeatureListItem variant=\"excluded\">\n        Access your knowledge base\n      </PricingOptions.FeatureListItem>\n      <PricingOptions.FeatureListHeading>\n        Code completion\n      </PricingOptions.FeatureListHeading>\n      <PricingOptions.FeatureListItem>\n        Code suggestions as you type\n      </PricingOptions.FeatureListItem>\n      <PricingOptions.FeatureListItem>\n        Comments to code\n      </PricingOptions.FeatureListItem>\n      <PricingOptions.FeatureListItem variant=\"excluded\">\n        Fine-tuned models (coming soon)\n      </PricingOptions.FeatureListItem>\n    </PricingOptions.FeatureList>\n\n    <PricingOptions.Footnote>\n      Free for verified students, teachers, and maintainers of popular open\n      source projects.\n    </PricingOptions.Footnote>\n\n    <PricingOptions.PrimaryAction href=\"/buy\">\n      Start a free trial\n    </PricingOptions.PrimaryAction>\n  </PricingOptions.Item>\n\n  <PricingOptions.Item>\n    <PricingOptions.Label>Available Feb 2024</PricingOptions.Label>\n    <PricingOptions.Heading>Copilot Enterprise</PricingOptions.Heading>\n    <PricingOptions.Description>\n      Copilot personalized to your organization throughout the software\n      development lifecycle. Requires GitHub Enterprise Cloud.\n    </PricingOptions.Description>\n    <PricingOptions.Price currencySymbol=\"$\" trailingText=\"per user / month\">\n      39\n    </PricingOptions.Price>\n    <PricingOptions.FeatureList>\n      <PricingOptions.FeatureListHeading>\n        Chat\n      </PricingOptions.FeatureListHeading>\n      <PricingOptions.FeatureListItem>\n        Unlimited messages, interactions, and history\n      </PricingOptions.FeatureListItem>\n      <PricingOptions.FeatureListItem>\n        Context-aware coding support and explanations\n      </PricingOptions.FeatureListItem>\n      <PricingOptions.FeatureListItem>\n        Debugging and security remediation assistance\n      </PricingOptions.FeatureListItem>\n      <PricingOptions.FeatureListItem>\n        Repository-based semantic search\n      </PricingOptions.FeatureListItem>\n      <PricingOptions.FeatureListItem>\n        Access your knowledge base\n      </PricingOptions.FeatureListItem>\n      <PricingOptions.FeatureListHeading>\n        Code completion\n      </PricingOptions.FeatureListHeading>\n      <PricingOptions.FeatureListItem>\n        Code suggestions as you type\n      </PricingOptions.FeatureListItem>\n      <PricingOptions.FeatureListItem>\n        Comments to code\n      </PricingOptions.FeatureListItem>\n      <PricingOptions.FeatureListItem>\n        Fine-tuned models (coming soon)\n      </PricingOptions.FeatureListItem>\n    </PricingOptions.FeatureList>\n    <PricingOptions.PrimaryAction href=\"/waitlist\">\n      Join waitlist\n    </PricingOptions.PrimaryAction>\n  </PricingOptions.Item>\n</PricingOptions>\n```\n\n## Component props\n\n### PricingOptions <Label>Required</Label>\n\n| Name       | Type                                                             |  Default  | required | Description                         |\n| :--------- | :--------------------------------------------------------------- | :-------: | :------: | :---------------------------------- |\n| `as`       | <PropTableValues values={[`section`, `div` ]} addLineBreaks />   | `section` | `false`  | Applies the underlying HTML element |\n| `children` | `PricingOptions.Item`                                            |           |  `true`  | Applies the underlying HTML element |\n| `variant`  | <PropTableValues values={[`default`, `cards` ]} addLineBreaks /> |           | `false`  | The variant styling                 |\n\n### PricingOptions.Item <Label>Required</Label>\n\nOne item per pricing plan to be displayed. Maximum of 3 items.\n\n| Name       | Type                                                                                                                                                                           |   Default   | required | Description              |\n| :--------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------: | :------: | :----------------------- |\n| `children` | <PropTableValues values={['PricingOptions.Heading', 'PricingOptions.Label', 'PricingOptions.Price', 'PricingOptions.FeatureList', 'PricingOptions.Footnote']} addLineBreaks /> | `undefined` |  `true`  | The contents of the item |\n\n### PricingOptions.Heading <Label>Required</Label>\n\n| Name       | Type             |   Default   | required | Description                                       |\n| :--------- | :--------------- | :---------: | :------: | :------------------------------------------------ |\n| `as`       | `h3, h4, h5, h6` |    `h3`     | `false`  | Applies the underlying HTML heading level element |\n| `children` | `ReactNode`      | `undefined` |  `true`  | The heading of the item                           |\n\n### PricingOptions.Label\n\n| Name       | Type        |   Default   | required | Description           |\n| :--------- | :---------- | :---------: | :------: | :-------------------- |\n| `children` | `ReactNode` | `undefined` |  `true`  | The label of the item |\n\n### PricingOptions.Description\n\n| Name       | Type        |   Default   | required | Description                 |\n| :--------- | :---------- | :---------: | :------: | :-------------------------- |\n| `children` | `ReactNode` | `undefined` |  `true`  | The description of the item |\n\n### PricingOptions.Price\n\n| Name             | Type        |   Default   | required | Description                                        |\n| :--------------- | :---------- | :---------: | :------: | :------------------------------------------------- |\n| `children`       | `ReactNode` | `undefined` |  `true`  | The price of the item                              |\n| `currencyCode`   | `string`    |    `USD`    | `false`  | The currency code                                  |\n| `currencySymbol` | `string`    |     `$`     | `false`  | The currency symbol                                |\n| `originalPrice`  | `string`    | `undefined` | `false`  | The initial price before any discounts are applied |\n| `trailingText`   | `string`    |             | `false`  | The trailing text                                  |\n\n### PricingOptions.FeatureList\n\n| Name       | Type                                                                                           |   Default   | required | Description          |\n| :--------- | :--------------------------------------------------------------------------------------------- | :---------: | :------: | :------------------- |\n| `children` | <PropTableValues values={['PricingOptions.Heading', 'PricingOptions.Item', ]} addLineBreaks /> | `undefined` |  `true`  | The list of features |\n\n### PricingOptions.FeatureListHeading\n\n| Name       | Type         |   Default   | required | Description                                       |\n| :--------- | :----------- | :---------: | :------: | :------------------------------------------------ |\n| `as`       | `h4, h5, h6` |    `h4`     | `false`  | Applies the underlying HTML heading level element |\n| `children` | `ReactNode`  | `undefined` |  `true`  | The heading of the feature list set               |\n\n### PricingOptions.FeatureListItem\n\n| Name       | Type                                                                 |   Default   | required | Description                         |\n| :--------- | :------------------------------------------------------------------- | :---------: | :------: | :---------------------------------- |\n| `children` | `ReactNode`                                                          | `undefined` |  `true`  | The item of the feature list set    |\n| `variant`  | <PropTableValues values={[`included`, `excluded` ]} addLineBreaks /> | `included`  | `false`  | The variant of the feature list set |\n\n### PricingOptions.Footnote\n\n| Name       | Type        |   Default   | required | Description              |\n| :--------- | :---------- | :---------: | :------: | :----------------------- |\n| `children` | `ReactNode` | `undefined` |  `true`  | The footnote of the item |\n","parent":{"relativeDirectory":"components","name":"PricingOptions"}},{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/components/Select.mdx","frontmatter":{"title":"Select"},"rawBody":"---\ntitle: Select\nstatus: Experimental\nfigma: 'https://www.figma.com/file/BJ95AjraesmRCWsKA013GS/Primer-Brand?node-id=1793%3A28117'\nsource: https://github.com/primer/brand/blob/main/packages/react/src/forms/Select/Select.tsx\nstorybook: '/brand/storybook/?path=/story/components-forms-formcontrol--playground'\ndescription: Use the select component to enable selection of one option from a list.\n---\n\nimport InlineCode from '@primer/gatsby-theme-doctocat/src/components/inline-code'\nimport {PropTableValues} from '../../src/components'\nimport {Label} from '@primer/react'\nimport {Link} from 'gatsby'\n\n```js\nimport {Select} from '@primer/react-brand'\n```\n\n## Examples\n\n### Default\n\n```jsx live\n<Select>\n  <Select.Option value=\"mona\">Monalisa</Select.Option>\n  <Select.Option value=\"hubot\">Hubot</Select.Option>\n</Select>\n```\n\n### Placeholder\n\n```jsx live\n<Select defaultValue=\"\">\n  <Select.Option value=\"\" disabled>\n    Select a handle\n  </Select.Option>\n  <Select.Option value=\"mona\">Monalisa</Select.Option>\n  <Select.Option value=\"hubot\">Hubot</Select.Option>\n</Select>\n```\n\n### Option groups\n\n```jsx live\n<Select defaultValue=\"\">\n  <Select.Option value=\"\" disabled>\n    Select a country\n  </Select.Option>\n\n  <Select.OptGroup label=\"Asia\">\n    <Select.Option value=\"cn\">China</Select.Option>\n  </Select.OptGroup>\n  <Select.OptGroup label=\"Europe\">\n    <Select.Option value=\"fr\">France</Select.Option>\n    <Select.Option value=\"it\">Italy</Select.Option>\n    <Select.Option value=\"es\">Spain</Select.Option>\n    <Select.Option value=\"uk\">United Kingdom</Select.Option>\n  </Select.OptGroup>\n  <Select.OptGroup label=\"Americas\">\n    <Select.Option value=\"mx\">Mexico</Select.Option>\n    <Select.Option value=\"us\">United States</Select.Option>\n  </Select.OptGroup>\n</Select>\n```\n\n### Use with `FormControl`\n\nUse `Select` alongside `FormControl` to ensure the control has a corresponding form label.\n\n[See FormControl for additional usage examples.](.FormControl.mdx)\n\n```jsx live\n<FormControl>\n  <FormControl.Label>Country</FormControl.Label>\n  <Select defaultValue=\"\">\n    <Select.Option value=\"\" disabled>\n      Select a country\n    </Select.Option>\n    <Select.Option value=\"cn\">China</Select.Option>\n    <Select.Option value=\"fr\">France</Select.Option>\n    <Select.Option value=\"it\">Italy</Select.Option>\n    <Select.Option value=\"mx\">Mexico</Select.Option>\n    <Select.Option value=\"es\">Spain</Select.Option>\n    <Select.Option value=\"uk\">United Kingdom</Select.Option>\n    <Select.Option value=\"us\">United States</Select.Option>\n  </Select>\n</FormControl>\n```\n\n### Validation\n\n```jsx live\n<Container sx={{display: 'inline-grid', gap: 3}}>\n  <FormControl validationStatus=\"error\">\n    <FormControl.Label>Error</FormControl.Label>\n    <Select>\n      <Select.Option value=\"mona\">Monalisa</Select.Option>\n      <Select.Option value=\"hubot\">Hubot</Select.Option>\n    </Select>\n    <FormControl.Validation>This is an error message</FormControl.Validation>\n  </FormControl>\n  <FormControl validationStatus=\"success\">\n    <FormControl.Label>Success</FormControl.Label>\n    <Select>\n      <Select.Option value=\"mona\">Monalisa</Select.Option>\n      <Select.Option value=\"hubot\">Hubot</Select.Option>\n    </Select>\n    <FormControl.Validation>This is a success message</FormControl.Validation>\n  </FormControl>\n</Container>\n```\n\n### Full width\n\n```jsx live\n<Select fullWidth>\n  <Select.Option value=\"mona\">Monalisa</Select.Option>\n  <Select.Option value=\"hubot\">Hubot</Select.Option>\n</Select>\n```\n\n### Sizes\n\n`FormControl` can appear in `medium` and `large` dimensions using the `size` prop.\n\n```jsx live\n<Container sx={{display: 'inline-grid', gap: 3}}>\n  <FormControl size=\"medium\">\n    <FormControl.Label>Medium</FormControl.Label>\n    <Select>\n      <Select.Option value=\"mona\">Monalisa</Select.Option>\n      <Select.Option value=\"hubot\">Hubot</Select.Option>\n    </Select>\n  </FormControl>\n\n  <FormControl size=\"large\">\n    <FormControl.Label>Large</FormControl.Label>\n    <Select>\n      <Select.Option value=\"mona\">Monalisa</Select.Option>\n      <Select.Option value=\"hubot\">Hubot</Select.Option>\n    </Select>\n  </FormControl>\n</Container>\n```\n\n### Required\n\nPass the `required` prop to ensure that the input field must be filled out before submitting the form.\n\n```jsx live\n<Select required defaultValue=\"\">\n  <Select.Option value=\"\" disabled>\n    Select a handle\n  </Select.Option>\n  <Select.Option value=\"mona\">Monalisa</Select.Option>\n  <Select.Option value=\"hubot\">Hubot</Select.Option>\n</Select>\n```\n\n### Using `refs`\n\n`Select` inputs can be used in [uncontrolled mode](https://reactjs.org/docs/uncontrolled-components.html) by forwarding a `ref` to the underlying element.\n\n```javascript live noinline\nconst App = () => {\n  const selectRef = React.useRef(null)\n\n  const handleSubmit = (e) => {\n    e.preventDefault()\n    if (!selectRef.current.value) {\n      alert(`Select a handle to continue`)\n      return\n    }\n\n    alert(`Name: ${selectRef.current.value}`)\n  }\n\n  return (\n    <form onSubmit={handleSubmit}>\n      <Container\n        sx={{\n          display: 'grid',\n          gap: 'var(--base-size-16)',\n          maxWidth: 400,\n          marginX: 'auto',\n        }}\n      >\n        <FormControl fullWidth>\n          <FormControl.Label>Name</FormControl.Label>\n          <Select ref={selectRef} defaultValue=\"\">\n            <Select.Option value=\"\" disabled>\n              Select a handle\n            </Select.Option>\n            <Select.Option value=\"mona\">Monalisa</Select.Option>\n            <Select.Option value=\"hubot\">Hubot</Select.Option>\n          </Select>\n        </FormControl>\n        <Button type=\"submit\" variant=\"primary\">\n          Submit\n        </Button>\n      </Container>\n    </form>\n  )\n}\n\nrender(App)\n```\n\n## Component props\n\n`Select` provides a React-based alternative to the native HTML `<select>`, `<option>` and `<optgroup>` elements.\n\nThe component API supports all standard HTML attribute props, while providing some additional behaviour as described below.\n\n### Select <Label>Required</Label>\n\n| Name               | Type                                                                              | Default | Description                                                       |\n| :----------------- | :-------------------------------------------------------------------------------- | :-----: | :---------------------------------------------------------------- |\n| `children`         | <PropTableValues values={['Select.Option','Select.OptGroup', ]} addLineBreaks />, |         | Valid child nodes                                                 |\n| `className`        | `string`                                                                          |         | Sets a custom class                                               |\n| `id`               | `string`                                                                          |         | Sets a custom id                                                  |\n| `fullWidth`        | `boolean`                                                                         |         | Stretches elements visually to the edges of its parent container. |\n| `ref`              | `React.RefObject`                                                                 |         | Forward a Ref to the underlying DOM node                          |\n| `size`             | <PropTableValues values={['medium', 'large' ]} addLineBreaks />                   |         | Visual dimensions for the input                                   |\n| `validationStatus` | <PropTableValues values={['error', 'success' ]} addLineBreaks />                  |         | Applies visual and semantic state to the underlying elements      |\n\nAdditional props can be passed to the `<select>` element. [See MDN for a list of props](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select) accepted by the `<select>` element.\n\n<h3 id=\"Select-option\">\n  Select.Option <Label>Required</Label>\n</h3>\n\n| Name    | Type     | Default | Description                                       |\n| :------ | :------- | :-----: | :------------------------------------------------ |\n| `value` | `string` |         | The value to be supplied during form subsmission. |\n\nAdditional props can be passed to the `<option>` element. [See MDN for a list of props](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/option) accepted by the `<option>` element.\n\n<h3 id=\"Select-optgroup\">Select.OptGroup</h3>\n\n| Name    | Type     | Default | Description                       |\n| :------ | :------- | :-----: | :-------------------------------- |\n| `label` | `string` |         | The name of the group of options. |\n\nAdditional props can be passed to the `<optgroup>` element. [See MDN for a list of props](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/optgroup) accepted by the `<optgroup>` element.\n\n## Related components\n\n- <Link to=\"/components/Checkbox\">Checkbox</Link>\n- <Link to=\"/components/FormControl\">FormControl</Link>\n- <Link to=\"/components/TextInput\">TextInput</Link>\n","parent":{"relativeDirectory":"components","name":"Select"}},{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/components/SubNav.mdx","frontmatter":{"title":"Sub nav"},"rawBody":"---\ntitle: Sub nav\nstatus: Experimental\nsource: https://github.com/primer/brand/tree/main/packages/react/src/SubNav/SubNav.tsx\nstorybook: '/brand/storybook/?path=/story/components-subnav--default'\ndescription: A sub nav is a secondary navigation element, typically positioned beneath a primary navigation.\n---\n\nimport {Label} from '@primer/react'\nimport {PropTableValues} from '../../src/components'\n\n```js\nimport {SubNav} from '@primer/react-brand'\n```\n\n## Examples\n\n### Default\n\n```jsx live\n<Container sx={{position: 'relative', height: 100}}>\n  <SubNav>\n    <SubNav.Heading href=\"#\">Features</SubNav.Heading>\n    <SubNav.Link href=\"#\">Actions</SubNav.Link>\n    <SubNav.Link href=\"#\">Packages</SubNav.Link>\n    <SubNav.Link href=\"#\" aria-current=\"page\">\n      Copilot\n    </SubNav.Link>\n    <SubNav.Link href=\"#\">Code review</SubNav.Link>\n  </SubNav>\n</Container>\n```\n\n### Shadow\n\n```jsx live\n<Container sx={{position: 'relative', height: 100}}>\n  <SubNav hasShadow>\n    <SubNav.Heading href=\"#\">Features</SubNav.Heading>\n    <SubNav.Link href=\"#\">Actions</SubNav.Link>\n    <SubNav.Link href=\"#\">Packages</SubNav.Link>\n    <SubNav.Link href=\"#\" aria-current=\"page\">\n      Copilot\n    </SubNav.Link>\n    <SubNav.Link href=\"#\">Code review</SubNav.Link>\n  </SubNav>\n</Container>\n```\n\n### Optional CTA\n\n```jsx live\n<Container sx={{position: 'relative', height: 100}}>\n  <SubNav hasShadow>\n    <SubNav.Heading href=\"#\">Features</SubNav.Heading>\n    <SubNav.Link href=\"#\">Actions</SubNav.Link>\n    <SubNav.Link href=\"#\">Packages</SubNav.Link>\n    <SubNav.Link href=\"#\" aria-current=\"page\">\n      Copilot\n    </SubNav.Link>\n    <SubNav.Link href=\"#\">Code review</SubNav.Link>\n    <SubNav.Action href=\"#\">CTA</SubNav.Action>\n  </SubNav>\n</Container>\n```\n\n### Optional sub menu\n\n```jsx live\n<Container sx={{position: 'relative', height: 300}}>\n  <SubNav hasShadow>\n    <SubNav.Heading href=\"#\">Features</SubNav.Heading>\n    <SubNav.Link href=\"#\">\n      Actions\n      <SubNav.SubMenu>\n        <SubNav.Link href=\"#\">Actions feature one</SubNav.Link>\n        <SubNav.Link href=\"#\">Actions feature two</SubNav.Link>\n        <SubNav.Link href=\"#\">Actions feature three</SubNav.Link>\n        <SubNav.Link href=\"#\">Actions feature four</SubNav.Link>\n      </SubNav.SubMenu>\n    </SubNav.Link>\n    <SubNav.Link href=\"#\">Packages</SubNav.Link>\n    <SubNav.Link href=\"#\" aria-current=\"page\">\n      Copilot\n    </SubNav.Link>\n    <SubNav.Link href=\"#\">Code review</SubNav.Link>\n  </SubNav>\n</Container>\n```\n\n## Component props\n\n### SubNav <Label>Required</Label>\n\n| name        | type      | default | required | description                                                                   |\n| ----------- | --------- | ------- | -------- | ----------------------------------------------------------------------------- |\n| `hasShadow` | `boolean` | `false` | `false`  | Applies optional shadow, along with a fixed background color                  |\n| `fullWidth` | `boolean` | `false` | `false`  | Allows the SubNav to be used at full width, removing default internal padding |\n\n### SubNav.Heading <Label>Required</Label>\n\n| name   | type     | default | required | description                      |\n| ------ | -------- | ------- | -------- | -------------------------------- |\n| `href` | `string` |         |          | URL of the page the link goes to |\n\n### SubNav.Link <Label>Required</Label>\n\n| name           | type     | default | required | description                                     |\n| -------------- | -------- | ------- | -------- | ----------------------------------------------- |\n| `aria-current` | `string` |         | `true`   | Required for indicating the current active link |\n| `href`         | `string` |         | `true`   | URL of the page the link goes to                |\n\n### SubNav.Action\n\n| name   | type     | default | required | description                        |\n| ------ | -------- | ------- | -------- | ---------------------------------- |\n| `href` | `string` |         | `false`  | URL of the page the action goes to |\n\n### SubNav.SubMenu\n\n| name       | type          | default | required | description                  |\n| ---------- | ------------- | ------- | -------- | ---------------------------- |\n| `children` | `SubNav.Link` |         | `false`  | Container for sub menu links |\n","parent":{"relativeDirectory":"components","name":"SubNav"}},{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/components/SubdomainNavBar.mdx","frontmatter":{"title":"Subdomain nav bar"},"rawBody":"---\ntitle: Subdomain nav bar\nstatus: Experimental\nfigma: https://www.figma.com/file/BJ95AjraesmRCWsKA013GS/Primer-Brand?node-id=1024%3A32796\nsource: https://github.com/primer/brand/blob/main/packages/react/src/SubdomainNavBar/SubdomainNavBar.tsx\nstorybook: '/brand/storybook/?path=/story/components-subdomainnavbar--default'\ndescription: Use the subdomain nav bar component for top level navigation for subdomain sites.\n---\n\nimport InlineCode from '@primer/gatsby-theme-doctocat/src/components/inline-code'\nimport {PropTableValues} from '../../src/components'\nimport {Label} from '@primer/react'\nimport {Heading} from '@primer/react-brand'\nimport {Link} from 'gatsby'\n\n```js\nimport {SubdomainNavBar} from '@primer/react-brand'\n```\n\n## Examples\n\n<Note>\n\n`SubdomainNavBar` is designed to fix to the top of the viewport.\n\nPlease refer to our [Storybook examples](https://primer.style/brand/storybook/?path=/story/components-subdomainnavbar--playground) to see the component in a full-screen browser as originally intended.\n\n</Note>\n\n### Basic\n\n```jsx live\n<Container sx={{position: 'relative', overflowX: 'scroll'}}>\n  <SubdomainNavBar title=\"Subdomain\" fixed={false}>\n    <SubdomainNavBar.Link href=\"#\">Collections</SubdomainNavBar.Link>\n    <SubdomainNavBar.Link href=\"#\">Topics</SubdomainNavBar.Link>\n    <SubdomainNavBar.Link href=\"#\">Articles</SubdomainNavBar.Link>\n    <SubdomainNavBar.Link href=\"#\">Events</SubdomainNavBar.Link>\n    <SubdomainNavBar.Link href=\"#\">Video</SubdomainNavBar.Link>\n    <SubdomainNavBar.Link href=\"#\">Social</SubdomainNavBar.Link>\n    <SubdomainNavBar.Search />\n    <SubdomainNavBar.PrimaryAction href=\"#\">\n      Primary CTA\n    </SubdomainNavBar.PrimaryAction>\n    <SubdomainNavBar.SecondaryAction href=\"#\">\n      Secondary CTA\n    </SubdomainNavBar.SecondaryAction>\n  </SubdomainNavBar>\n</Container>\n```\n\n### Search\n\n`SubdomainNavBar` offers an optional search form control. The form can operate in both `onSubmit` and `onChange` modes, with the latter facilitating inline results to appear.\n\n```javascript live noinline\nconst App = () => {\n  const inputRef = React.useRef(null)\n  const [searchResults, setSearchResults] = React.useState([])\n  const [searchTerm, setSearchTerm] = React.useState('')\n\n  const mockSearchData = [\n    {\n      title: 'How to transform your business in a digital world',\n      description:\n        'GitHub Enterprise empowers developers with tools they already know and love, accelerates high-quality software development and secure delivery, and enhances the speed and power of innovation.\\n',\n      url: 'https://resources.github.com/devops/github-enterprise-ebook',\n      date: '2022-08-29T00:00+02:00',\n    },\n    {\n      title: 'The fundamentals of continuous deployment in DevOps',\n      description:\n        'What is continuous deployment?\\nContinuous deployment (CD) is an automated software release practice where code changes are deployed to different stages as they pass predefined tests. The goal of CD is to facilitate faster releases by using automation to help remove the need for human intervention as much as possible during the deployment process.',\n      url: 'https://resources.github.com/devops/fundamentals/ci-cd/deployment',\n      date: '2022-05-23T12:00+00:00',\n    },\n  ]\n\n  const handleChange = () => {\n    if (!inputRef.current) return\n    if (inputRef.current.value.length === 0) {\n      setSearchResults(undefined)\n      return\n    }\n    if (inputRef.current.value.length > 2) {\n      setTimeout(() => setSearchResults(mockSearchData), 1000)\n      setSearchTerm(inputRef.current.value)\n      return\n    }\n  }\n\n  const handleSubmit = (e) => {\n    e.preventDefault()\n    if (!inputRef.current) return\n    if (!inputRef.current.value) {\n      alert(`Enter a value and try again.`)\n      return\n    }\n\n    alert(`Name: ${inputRef.current.value}`)\n  }\n\n  return (\n    <Container sx={{position: 'relative', overflowX: 'scroll'}}>\n      <SubdomainNavBar title=\"Subdomain\" fixed={false}>\n        <SubdomainNavBar.Link href=\"#collections\">\n          Collections\n        </SubdomainNavBar.Link>\n        <SubdomainNavBar.Link href=\"#topics\">Topics</SubdomainNavBar.Link>\n        <SubdomainNavBar.Search\n          ref={inputRef}\n          searchTerm={searchTerm}\n          onSubmit={handleSubmit}\n          onChange={handleChange}\n          searchResults={searchResults}\n        />\n      </SubdomainNavBar>\n    </Container>\n  )\n}\n\nrender(App)\n```\n\n## Component props\n\n### SubdomainNavBar <Label>Required</Label>\n\n| Name        | Type                                                                                                                                                                                   |       Default       | Description                                                                                                                            |\n| :---------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-----------------: | :------------------------------------------------------------------------------------------------------------------------------------- |\n| `children`  | <PropTableValues values={['SubdomainNavBar.Link','SubdomainNavBar.Search','SubdomainNavBar.PrimaryAction','SubdomainNavBar.SecondaryAction', 'React.ReactElement' ]} addLineBreaks />, |                     | Valid child nodes                                                                                                                      |\n| `className` | `string`                                                                                                                                                                               |                     | Sets a custom class                                                                                                                    |\n| `id`        | `string`                                                                                                                                                                               |                     | Sets a custom id                                                                                                                       |\n| `logoHref`  | `string`                                                                                                                                                                               | `https//github.com` | Optionally change the URL of the logo                                                                                                  |\n| `title`     | `string`                                                                                                                                                                               |                     | The title or name of the subdomain. Appears adjacent to the logo and is required for communicating content to assisitive technologies. |\n| `titleHref` | `string`                                                                                                                                                                               |         `/`         | The URL for the site. Typically used to link the title prop value to the site root.                                                    |\n| `ref`       | `React.RefObject`                                                                                                                                                                      |                     | Forward a Ref to the underlying DOM node                                                                                               |\n\n<h3 id=\"SubdomainNavBar-link\">\n  SubdomainNavBar.Link <Label>Required</Label>\n</h3>\n\n`SubdomainNavBar.Link` are anchor links.\n\n| Name        | Type              | Default | Description                              |\n| :---------- | :---------------- | :-----: | :--------------------------------------- |\n| `children`  | `string`          |         | Label text                               |\n| `className` | `string`          |         | Applies a custom class                   |\n| `href`      | `string`          |         | Destination path for the anchor element  |\n| `id`        | `string`          |         | Sets a custom id                         |\n| `ref`       | `React.RefObject` |         | Forward a Ref to the underlying DOM node |\n\nAdditional props can be passed to the `<a>` element. [See MDN for a list of props](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#attributes) accepted by the `<anchor>` element.\n","parent":{"relativeDirectory":"components","name":"SubdomainNavBar"}},{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/components/TextInput.mdx","frontmatter":{"title":"Text input"},"rawBody":"---\ntitle: Text input\nstatus: Experimental\nfigma: 'https://www.figma.com/file/BJ95AjraesmRCWsKA013GS/Primer-Brand?node-id=1377%3A30676'\nsource: https://github.com/primer/brand/blob/main/packages/react/src/forms/TextInput/TextInput.tsx\nstorybook: '/brand/storybook/?path=/story/components-forms-textinput--playground'\ndescription: Use the text input component for single-line text field.\n---\n\nimport InlineCode from '@primer/gatsby-theme-doctocat/src/components/inline-code'\nimport {PropTableValues} from '../../src/components'\nimport {Label} from '@primer/react'\nimport {Link} from 'gatsby'\n\n```js\nimport {TextInput} from '@primer/react-brand'\n```\n\n## Examples\n\n### Default\n\n```jsx live\n<TextInput />\n```\n\n### Variants\n\n```jsx live\n<Container\n  sx={{\n    display: 'grid',\n    gridTemplateColumns: '1fr 1fr',\n    gridTemplateRows: 'repeat(2,minmax(40px,auto))',\n    gridGap: 4,\n  }}\n>\n  <FormControl fullWidth>\n    <FormControl.Label>Text (default)</FormControl.Label>\n    <TextInput type=\"text\" placeholder=\"alphanumeric\" />\n  </FormControl>\n  <FormControl fullWidth>\n    <FormControl.Label>Number</FormControl.Label>\n    <TextInput type=\"number\" placeholder=\"123\" />\n  </FormControl>\n  <FormControl fullWidth>\n    <FormControl.Label>Email</FormControl.Label>\n    <TextInput type=\"email\" placeholder=\"mona@github.com\" />\n  </FormControl>\n  <FormControl fullWidth>\n    <FormControl.Label>Password</FormControl.Label>\n    <TextInput type=\"password\" value=\"monalisa\" />\n  </FormControl>\n  <FormControl fullWidth>\n    <FormControl.Label>Month</FormControl.Label>\n    <TextInput type=\"month\" />\n  </FormControl>\n  <FormControl fullWidth>\n    <FormControl.Label>Telephone</FormControl.Label>\n    <TextInput type=\"tel\" />\n  </FormControl>\n  <FormControl fullWidth>\n    <FormControl.Label>Time</FormControl.Label>\n    <TextInput type=\"time\" />\n  </FormControl>\n  <FormControl fullWidth>\n    <FormControl.Label>Date</FormControl.Label>\n    <TextInput type=\"date\" />\n  </FormControl>\n  <FormControl fullWidth>\n    <FormControl.Label>Date (local)</FormControl.Label>\n    <TextInput type=\"datetime-local\" />\n  </FormControl>\n  <FormControl fullWidth>\n    <FormControl.Label>URL</FormControl.Label>\n    <TextInput type=\"url\" value=\"https://github.com\" />\n  </FormControl>\n</Container>\n```\n\n### Placeholder\n\n```jsx live\n<TextInput placeholder=\"First name\" />\n```\n\n### Use with `FormControl`\n\nUse `TextInput` alongside `FormControl` to ensure the control always has a corresponding form label.\n\n[See FormControl for additional usage examples.](.FormControl.mdx)\n\n```jsx live\n<FormControl>\n  <FormControl.Label>First name</FormControl.Label>\n  <TextInput />\n</FormControl>\n```\n\n### Validation\n\n```jsx live\n<Container sx={{display: 'inline-grid', gap: 3}}>\n  <FormControl validationStatus=\"error\">\n    <FormControl.Label>Error</FormControl.Label>\n    <TextInput />\n    <FormControl.Validation>This is an error message</FormControl.Validation>\n  </FormControl>\n  <FormControl validationStatus=\"success\">\n    <FormControl.Label>Success</FormControl.Label>\n    <TextInput />\n    <FormControl.Validation>This is a success message</FormControl.Validation>\n  </FormControl>\n</Container>\n```\n\n### Full width\n\n```jsx live\n<TextInput fullWidth />\n```\n\n### Sizes\n\n`FormControl` can appear in `medium` (default) and `large` dimensions using the `size` prop.\n\n```jsx live\n<Container sx={{display: 'inline-grid', gap: 3}}>\n  <TextInput size=\"medium\" />\n\n  <TextInput size=\"large\" />\n</Container>\n```\n\n### Required\n\nPass the `required` prop to ensure that the input field must be filled out before submitting the form.\n\n```jsx live\n<TextInput required />\n```\n\n### Using `refs`\n\n`TextInput` inputs can be used in [uncontrolled mode](https://reactjs.org/docs/uncontrolled-components.html) by forwarding a `ref` to the underlying element.\n\n```javascript live noinline\nconst App = () => {\n  const inputRef = React.useRef(null)\n\n  const handleSubmit = (e) => {\n    e.preventDefault()\n    if (!inputRef.current.value) {\n      alert(`Enter a value and try again.`)\n      return\n    }\n\n    alert(`Name: ${inputRef.current.value}`)\n  }\n\n  return (\n    <form onSubmit={handleSubmit}>\n      <Container\n        sx={{\n          display: 'grid',\n          gap: 'var(--base-size-16)',\n          maxWidth: 400,\n          marginX: 'auto',\n        }}\n      >\n        <FormControl fullWidth>\n          <FormControl.Label>Name</FormControl.Label>\n          <TextInput ref={inputRef} />\n        </FormControl>\n        <Button type=\"submit\" variant=\"primary\">\n          Submit\n        </Button>\n      </Container>\n    </form>\n  )\n}\n\nrender(App)\n```\n\n## Component props\n\n`TextInput` provides a React alternative to the native HTML `<input>` in single-line mode.\n\nThe component API supports all standard HTML attribute props, while providing some additional behaviour as described below.\n\n### TextInput <Label>Required</Label>\n\n| Name               | Type                                                                                                                                                   | Default | Description                                                       |\n| :----------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------- | :-----: | :---------------------------------------------------------------- |\n| `children`         | <PropTableValues values={['TextInput.Option','TextInput.OptGroup', ]} addLineBreaks />,                                                                |         | Valid child nodes                                                 |\n| `className`        | `string`                                                                                                                                               |         | Sets a custom class                                               |\n| `id`               | `string`                                                                                                                                               |         | Sets a custom id                                                  |\n| `fullWidth`        | `boolean`                                                                                                                                              |         | Stretches elements visually to the edges of its parent container. |\n| `ref`              | `React.RefObject`                                                                                                                                      |         | Forward a Ref to the underlying DOM node                          |\n| `size`             | <PropTableValues values={['medium', 'large' ]} addLineBreaks />                                                                                        |         | Visual dimensions for the input                                   |\n| `type`             | <PropTableValues values={['text' , 'number' , 'email' , 'password' , 'search' , 'tel' , 'url' , 'date' , 'time' , 'datetime-local' ]} addLineBreaks /> | `text`  | Alternative text inputs                                           |\n| `validationStatus` | <PropTableValues values={['error', 'success' ]} addLineBreaks />                                                                                       |         | Applies visual and semantic state to the underlying elements      |\n\nAdditional props can be passed to the `<input>` element. [See MDN for a list of props](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input) accepted by the `<input>` element.\n\n## Related components\n\n- <Link to=\"/components/FormControl\">FormControl</Link>\n- <Link to=\"/components/Select\">Select</Link>\n- <Link to=\"/components/TextInput\">TextInput</Link>\n","parent":{"relativeDirectory":"components","name":"TextInput"}},{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/components/Textarea.mdx","frontmatter":{"title":"Textarea"},"rawBody":"---\ntitle: Textarea\ndescription: Use the textarea component for multi-line text input form fields.\nstatus: Experimental\nsource: https://github.com/primer/brand/blob/main/packages/react/src/forms/Textarea/Textarea.tsx\nstorybook: '/react/storybook?path=/story/components-forms-textarea--playground'\n---\n\nimport {PropTableValues} from '../../src/components'\nimport {Textarea} from '@primer/react-brand'\n\n```js\nimport {Textarea} from '@primer/react'\n```\n\n## Examples\n\n<Note variant=\"warning\">\n\nTextarea components **must always** be accompanied by a corresponding label to improve support for assistive\ntechnologies. Examples below are provided for conciseness and may not reflect accessibility best practices.\n\nUse the [FormControl](./FormControl) component to render a Textarea with a corresponding label.\n\n</Note>\n\n### Controlled mode\n\n```javascript live noinline\nconst TextareaExample = () => {\n  // Running in controlled mode (recommended)\n  const [value, setValue] = React.useState(\n    'This value was initially set through state.',\n  )\n\n  const handleChange = (event) => {\n    setValue(event.target.value)\n  }\n\n  return (\n    <Textarea\n      placeholder=\"Enter a description\"\n      onChange={handleChange}\n      value={value}\n    />\n  )\n}\n\nrender(<TextareaExample />)\n```\n\n### Uncontrolled mode\n\n```javascript live noinline\nconst TextareaExample = () => {\n  const ref = React.useRef()\n\n  const handleSubmit = (event) => {\n    event.preventDefault()\n    if (!ref.current.value) {\n      alert(`Enter a value into the Textarea and press submit`)\n      return\n    }\n\n    alert(`Current Textarea value: ${ref.current.value}`)\n  }\n\n  return (\n    <form onSubmit={handleSubmit}>\n      <Textarea\n        cols={40}\n        rows={8}\n        ref={ref}\n        defaultValue=\"Set the initial state in uncontrolled mode using the defaultValue prop\"\n      />\n      <br /> <br />\n      <Button variant=\"primary\" type=\"submit\">\n        Submit\n      </Button>\n    </form>\n  )\n}\n\nrender(<TextareaExample />)\n```\n\n### Displaying form validation state\n\n```jsx live\n<Stack direction=\"vertical\">\n  <FormControl validationStatus=\"success\">\n    <FormControl.Label>Success state</FormControl.Label>\n    <Textarea />\n    <FormControl.Validation>This is a success message</FormControl.Validation>\n  </FormControl>\n</Stack>\n<Stack direction=\"vertical\">\n  <FormControl validationStatus=\"error\">\n    <FormControl.Label>Error state</FormControl.Label>\n    <Textarea />\n    <FormControl.Validation>This is an error message</FormControl.Validation>\n  </FormControl>\n</Stack>\n```\n\n### Inactive\n\n```jsx live\n<Textarea disabled>This text is inactive</Textarea>\n```\n\n### Resize\n\nBy default, `Textarea` can be resized by the user vertically and horizontally. Resizing can be prevented by setting `resize` to `none`\n\n```jsx live\n<Textarea resize=\"none\" />\n```\n\n## Props\n\n### Textarea\n\n| Name               | Type                                                                                     | Default  | Description                                                                        |\n| :----------------- | :--------------------------------------------------------------------------------------- | :------: | :--------------------------------------------------------------------------------- |\n| `className`        | `string`                                                                                 |          | Sets a custom class                                                                |\n| `cols`             | `number`                                                                                 |   `30`   | Specifies the visible width of a textarea.                                         |\n| `id`               | `string`                                                                                 |          | Sets a custom id                                                                   |\n| `ref`              | `React.RefObject`                                                                        |          | Forward a Ref to the underlying DOM node                                           |\n| `required`         | `boolean`                                                                                |          | Indicates to the user and assistive technologies that the field value is required. |\n| `resize`           | <PropTableValues values={['both' , 'horizontal' , 'vertical' , 'none']} addLineBreaks /> | `'both'` | Sets whether an element is resizable, and if so, in which directions.              |\n| `rows`             | `number`                                                                                 |   `7`    | Specifies the visible height of a text area.                                       |\n| `size`             | <PropTableValues values={['medium', 'large' ]} addLineBreaks />                          |          | Provides alternate visual presentation.                                            |\n| `validationStatus` | <PropTableValues values={['error', 'success' ]} addLineBreaks />                         |          | Applies visual and semantic state to the underlying elements                       |\n\nAdditional props can be passed to the `<textarea>` element. [See MDN for a list of props](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea) accepted by the `<textarea>` element.\n","parent":{"relativeDirectory":"components","name":"Textarea"}},{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/components/Timeline.mdx","frontmatter":{"title":"Timeline"},"rawBody":"---\ntitle: Timeline\nstatus: Experimental\nsource: https://github.com/primer/brand/tree/main/packages/react/src/Timeline/Timeline.tsx\nstorybook: '/brand/storybook/?path=/story/components-timeline--default'\ndescription: Use the timeline component to display a list of connected items as a vertical timeline.\na11yReviewed: false\n---\n\nimport {PropTableValues} from '../../src/components'\n\n```js\nimport {Timeline} from '@primer/react-brand'\n```\n\n## Examples\n\n<Note>\n\nTimeline requires the `dir` attribute to be set on the `<html>` element to ensure the correct visual appearance of timeline items.\n\n</Note>\n\n### Default\n\n```jsx live\n<Timeline>\n  <Timeline.Item>\n    GitHub Codespaces offers a complete dev environment in seconds, so you can\n    code, build, test, and open pull requests from any repo anywhere.\n  </Timeline.Item>\n  <Timeline.Item>\n    GitHub Copilot is your AI pair programmer that empowers you to complete\n    tasks 55% faster by turning natural language prompts into coding\n    suggestions.\n  </Timeline.Item>\n  <Timeline.Item>\n    GitHub Actions automates your build, test, and deployment workflow with\n    simple and secure CI/CD.\n  </Timeline.Item>\n</Timeline>\n```\n\n### With emphasis\n\nUse an `<em>` element within the timeline items to apply a duotone style and emphasize part of the text.\n\n```jsx live\n<Timeline>\n  <Timeline.Item>\n    <em>GitHub Codespaces</em> offers a complete dev environment in seconds, so\n    you can code, build, test, and open pull requests from any repo anywhere.\n  </Timeline.Item>\n  <Timeline.Item>\n    <em>GitHub Copilot</em> is your AI pair programmer that empowers you to\n    complete tasks 55% faster by turning natural language prompts into coding\n    suggestions.\n  </Timeline.Item>\n  <Timeline.Item>\n    <em>GitHub Actions</em> automates your build, test, and deployment workflow\n    with simple and secure CI/CD.\n  </Timeline.Item>\n</Timeline>\n```\n\n### Timeline\n\n| Name        | Type                               | Default | Description                                  |\n| :---------- | :--------------------------------- | :-----: | :------------------------------------------- |\n| `className` | `string`                           |         | Sets a custom class on the root element      |\n| `children`  | `Timeline.Item`, `Timeline.Item[]` |         | Content to be displayed within the component |\n| `fullWidth` | `boolean`                          | `false` | Fills available space                        |\n\n### Timeline.Item\n\n| Name        | Type                                   | Default | Description                              |\n| :---------- | :------------------------------------- | :-----: | :--------------------------------------- |\n| `className` | `string`                               |         | Sets a custom class on the root element  |\n| `children`  | `React.ReactNode`, `React.ReactNode[]` |         | Content to be displayed within the item. |\n","parent":{"relativeDirectory":"components","name":"Timeline"}},{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/components/Tooltip.mdx","frontmatter":{"title":"Tooltip"},"rawBody":"---\ntitle: Tooltip\nstatus: Experimental\nsource: https://github.com/primer/brand/tree/main/packages/react/src/Tooltip/Tooltip.tsx\nstorybook: '/brand/storybook/?path=/story/components-tooltip--default'\ndescription: Use the tooltip component to display a short message when a user hovers or focuses an interactive element.\n---\n\nimport {ScreenFullIcon} from '@primer/octicons-react'\nimport {PropTableValues} from '../../src/components'\n\n```js\nimport {Tooltip} from '@primer/react-brand'\n```\n\n## Examples\n\n### Default\n\n```jsx\n<Tooltip text=\"Sample tooltip content\">\n    <Button>Action</Button>\n</Tooltip>\n```\n\n### Custom direction\n\nBy default, tooltips appear below the element. You can change the direction by passing the `direction` prop with a value of `n`, `e`, `s`, or `w`.\n\nAs long as there is enough room in the viewport, the tooltip will appear in the specified direction. If there is not enough room, the tooltip will appear in whatever direction it can place the tooltip without overflowing the viewport.\n\n```jsx\n<Tooltip text=\"Sample tooltip content\" direction=\"e\">\n    <Button>Action</Button>\n</Tooltip>\n```\n\n### Substitute a visible label\n\nIf a ubiquitously understood icon is used in place of a text label, you can use the `type` to provide a text label for assistive technologies such as screen readers.\n\nUse this with caution. It is generally better to use a visible label for better usability and accessibility.\n\n```jsx\n<Tooltip text=\"Go fullscreen\" type=\"label\">\n    <Button hasArrow={false}><ScreenFullIcon /></Button>\n</Tooltip>\n```\n\n## Component props\n\n| name         | type                                                              | default         | required | description                             |\n| ------------ | ----------------------------------------------------------------- | --------------- | -------- | --------------------------------------- |\n| `direction`  | <PropTableValues values={['n', 'e', 's', 'w']} />                 | `'s'`           | `false`  | The side the tooltip appears on |\n| `text`       | `string`                                                          | `undefined`     | `true`   |  The text to be displayed in the tooltip |\n| `type`       | <PropTableValues values={['description', 'label']} />             | `'description'` | `false`  | The type of tooltip. `label` is used for labelling the element that triggers tooltip. `description` is used for describing or adding a suplementary information to the element that triggers the tooltip. |\n\n","parent":{"relativeDirectory":"components","name":"Tooltip"}},{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/getting-started/animation.mdx","frontmatter":{"title":"Animation"},"rawBody":"---\ntitle: Animation\nstorybook: '/brand/storybook/?path=/story/components-animations--playground'\ndescription: Use animations to add visual interest and interactivity to a web page or application.\n---\n\nimport {PropTableValues} from '../../src/components'\nimport {Link} from 'gatsby'\nimport {AnimationVariants, Label} from '@primer/react-brand'\nimport {supportedComponents} from '../../scripts/components-with-animation'\n\n### Animate prop\n\nCertain Primer Brand components include animation presets. These components are:\n\n<p>\n  <PropTableValues\n    values={supportedComponents}\n    commaSeparated\n    removeApostrophes\n  />\n</p>\n\nYou can use the `animate` prop available on these components to apply one of the available animation presets directly to the component.\n\n```jsx\n<Image animate=\"fade-in\" />\n```\n\n### Animate component\n\nYou can alternatively compose animations into your React application using the `Animate` wrapper component. This can be useful in situations where you need to animate native HTML elements, or components that don't support the `animate` prop.\n\n```js\nimport {Animate} from '@primer/react-brand'\n```\n\n```jsx\n<AnimationProvider>\n  <Animate animate=\"fade-in\">\n    <Text>This text will fade-in</Text>\n  </Animate>\n</AnimationProvider>\n```\n\n### AnimationProvider\n\nAn `AnimationProvider` is first required to enable animations on the page. This component should wrap specific parts of your application code, or the entire app.\nThe `AnimationProvider` assumes responsibility for triggering animations and automatically applying effects such as staggering.\n\nBy default, the `AnimationProvider` will stagger animations in order of DOM appearance. This behavior can be turned off by setting `autoStaggerChildren` to `false`.\n\nThe increment delta can also be increased or decreased using `staggerDelayIncrement`, which is set to 100ms by default.\n\n```js\nimport {AnimationProvider} from '@primer/react-brand'\n```\n\n### Animation variants\n\nSupported animations types include:\n\n<PropTableValues values={AnimationVariants} commaSeparated removeApostrophes />\n\n<br />\n<br />\n\nTo use a specific animation variant, simply pass the `animate` prop with the desired variant. This value can either be a `string` or and `Object`. The latter provides more granular control over the animation delay, durations and easing.\n\nUse the example below to try each animation variant.\n\n<br />\n\n```javascript live noinline\nconst App = () => {\n  const [animationVariant, setAnimationVariant] = React.useState('fade-in')\n\n  const handleAnimationChange = (event) =>\n    setAnimationVariant(event.target.value)\n\n  return (\n    <AnimationProvider key={animationVariant}>\n      <Stack\n        direction=\"horizontal\"\n        alignItems=\"center\"\n        justifyContent=\"center\"\n        style={{height: 200}}\n      >\n        <Image\n          animate={{\n            variant: animationVariant,\n          }}\n          src=\"https://via.placeholder.com/150x75/D0D7DE/D0D7DE.png\"\n          alt=\"placeholder with gray background and no foreground text\"\n        />\n        <Image\n          animate={{\n            variant: animationVariant,\n          }}\n          src=\"https://via.placeholder.com/150x75/D0D7DE/D0D7DE.png\"\n          alt=\"placeholder with gray background and no foreground text\"\n        />\n        <Image\n          animate={{\n            variant: animationVariant,\n          }}\n          src=\"https://via.placeholder.com/150x75/D0D7DE/D0D7DE.png\"\n          alt=\"placeholder with gray background and no foreground text\"\n        />\n      </Stack>\n\n      <Stack direction=\"horizontal\" gap=\"spacious\" justifyContent=\"center\">\n        <FormControl>\n          <FormControl.Label>Animation</FormControl.Label>\n          <Select\n            defaultValue={animationVariant}\n            onChange={handleAnimationChange}\n          >\n            {AnimationVariants.map((option) => (\n              <Select.Option key={option} value={option}>\n                {option}\n              </Select.Option>\n            ))}\n          </Select>\n        </FormControl>\n      </Stack>\n    </AnimationProvider>\n  )\n}\n\nrender(App)\n```\n\n## Examples\n\nAnimations should be used sparingly. The examples below demonstrate some valid use-cases.\n\n### River\n\nApply animation to `River.Content` instead of the entire element.\n\n```jsx live\n<AnimationProvider>\n  <River>\n    <River.Visual>\n      <img\n        src=\"https://via.placeholder.com/600x400/f5f5f5/f5f5f5.png\"\n        alt=\"placeholder, blank area with an off-white background color\"\n      />\n    </River.Visual>\n    <River.Content animate=\"slide-in-right\">\n      <Heading>Heading</Heading>\n      <Text>\n        Lorem ipsum dolor sit amet, consectetur adipiscing elit. In sapien sit\n        ullamcorper id. Aliquam luctus sed turpis felis nam pulvinar risus\n        elementum.\n      </Text>\n      <Link href=\"#\">Call to action</Link>\n    </River.Content>\n  </River>\n</AnimationProvider>\n```\n\n### Cards and staggering\n\n`AnimationProvider` automatically applies a delay increment to all `children` that have `animation` presets defined. Extend the duration of each delay using `staggerDelayIncrement`.\n\nAlternatively, use `delay` to stagger animations on adjacent elements if this feature is toggled off.\n\n```jsx live\n<AnimationProvider staggerDelayIncrement={200}>\n  <Grid>\n    <Grid.Column\n      span={{\n        xsmall: 12,\n        large: 6,\n      }}\n    >\n      <Animate animate=\"scale-in-up\">\n        <Card href=\"https://github.com\">\n          <Card.Icon icon={<CopilotIcon />} color=\"indigo\" hasBackground />\n          <Card.Label>Limited</Card.Label>\n          <Card.Heading>\n            Collaboration is the key to DevOps success\n          </Card.Heading>\n          <Card.Description>\n            Everything you need to know about getting started with GitHub\n            Actions.\n          </Card.Description>\n        </Card>\n      </Animate>\n    </Grid.Column>\n    <Grid.Column\n      span={{\n        xsmall: 12,\n        large: 6,\n      }}\n    >\n      <Animate animate=\"scale-in-up\">\n        <Card href=\"https://github.com\">\n          <Card.Icon icon={<RocketIcon />} hasBackground color=\"blue\" />\n          <Card.Label>Limited</Card.Label>\n          <Card.Heading>GitHub Actions cheat sheet and more</Card.Heading>\n          <Card.Description>\n            In a recent study, 70% of organizations reported they had adopted\n            DevOps.\n          </Card.Description>\n        </Card>\n      </Animate>\n    </Grid.Column>\n  </Grid>\n</AnimationProvider>\n```\n\n[See Storybook for more examples of animation](/brand/storybook/?path=/story/components-animations--playground).\n\n## Props\n\n### AnimationProvider <Label>Required</Label>\n\n| Name                    | Type                                                                                                            | Default              | Required | Description                                                                    |\n| ----------------------- | --------------------------------------------------------------------------------------------------------------- | -------------------- | -------- | ------------------------------------------------------------------------------ |\n| `children`              | `ReactNode`                                                                                                     |                      | `true`   | The children to render within the `AnimationProvider`                          |\n| `disableAnimations`     | `boolean`                                                                                                       |                      | `false`  | Prevents animations from running inside the provider                           |\n| `animationTrigger`      | <PropTableValues values={['click', 'on-visible']} addLineBreaks />                                              | `'on-visible'`       | `false`  | Controls the trigger method for the animation. One of `click` or `on-visible`. |\n| `visibilityOptions`     | <PropTableValues values={['bottom-of-screen', 'middle-of-screen', 'about-to-leave', 'number']} addLineBreaks /> | `'bottom-of-screen'` | `false`  | Controls the intersection observer options for the animation.                  |\n| `runOnce`               | `boolean`                                                                                                       | `false`              | `false`  | Will persist the animation end-state after the animation has completed.        |\n| `autoStaggerChildren`   | `boolean`                                                                                                       | `true`               |          | Will stagger the animations of the children using an incrementing delay        |\n| `staggerDelayIncrement` | `number`                                                                                                        | `100`                |          | Stagger delay increment. Should be used alongside `autoStaggerChildren`.       |\n\n### Animate\n\n`animate` is a prop available on the following components:\n\n<p>\n  <PropTableValues\n    values={supportedComponents}\n    commaSeparated\n    removeApostrophes\n  />\n</p>\n\n| Name      | Type                                                                     |\n| --------- | ------------------------------------------------------------------------ |\n| `animate` | <PropTableValues values={AnimationVariants} addLineBreaks /> \\| `Object` |\n","parent":{"relativeDirectory":"getting-started","name":"animation"}},{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/components/VideoPlayer.mdx","frontmatter":{"title":"Video player"},"rawBody":"---\ntitle: Video player\nstatus: Experimental\nsource: https://github.com/primer/brand/blob/main/packages/react/src/VideoPlayer/VideoPlayer.tsx\nstorybook: '/brand/storybook/?path=/story/components-videoplayer--playground'\ndescription: Use the video player component to enable playback of self-hosted videos\n---\n\nimport {Label} from '@primer/react'\n\n```js\nimport {VideoPlayer} from '@primer/react-brand'\n```\n\n## Examples\n\n<!---\nTODO: Fix asset loading in environments that don't use `pathPrefix`. This is a temporary solution to load assets in production deployments, but currently doesn't work in dev mode or preview URLs\n-->\n\n### Default\n\n```jsx live\n<VideoPlayer title=\"GitHub media player\">\n  <VideoPlayer.Source src=\"/brand/assets/example.mp4\" />\n  <VideoPlayer.Track src=\"/brand/assets/example.vtt\" />\n</VideoPlayer>\n```\n\n## With poster\n\n```jsx live\n<VideoPlayer\n  poster=\"/brand/assets/example-poster.png\"\n  title=\"GitHub media player\"\n>\n  <VideoPlayer.Source src=\"/brand/assets/example.mp4\" />\n  <VideoPlayer.Track src=\"/brand/assets/example.vtt\" />\n</VideoPlayer>\n```\n\n## Without branding\n\n```jsx live\n<VideoPlayer branding={false} title=\"GitHub media player\">\n  <VideoPlayer.Source src=\"/brand/assets/example.mp4\" />\n  <VideoPlayer.Track src=\"/brand/assets/example.vtt\" />\n</VideoPlayer>\n```\n\n## Component props\n\n<h3>\n  VideoPlayer <Label>Required</Label>\n</h3>\n\n`VideoPlayer` provides a React alternative to the native HTML `<video />`.\n\n| Name        | Type                                   | Default | Required | Description                                                          |\n| :---------- | :------------------------------------- | :-----: | :------: | :------------------------------------------------------------------- |\n| `title`     | `string`                               |         |  `true`  | Sets the title of the video                                          |\n| `children`  | `React.ReactNode`, `React.ReactNode[]` |         |  `true`  | Takes `<source>` and `<track>` elements to present video information |\n| `poster`    | `string`                               |         | `false`  | Sets an image as the starting frame for the video element            |\n| `branding`  | `boolean`                              |         | `false`  | Displays GitHub branding next to video title                         |\n| `className` | `string`                               |         | `false`  | Sets a custom class                                                  |\n\nThe component API supports all standard HTML attribute props, while providing some additional behavior as described above.\n\n<h3>\n  VideoPlayer.Source <Label>Required</Label>\n</h3>\n\n`VideoPlayer.Source` provides a React alternative to the native HTML `<source />`.\n\n| Name   | Type     | Default | Required | Description                           |\n| :----- | :------- | :-----: | :------: | :------------------------------------ |\n| `src`  | `string` |         |  `true`  | Sets the URL of the video content     |\n| `type` | `string` |         | `false`  | Sets media type for the video content |\n\nThe component API supports all standard HTML attribute props, while providing some additional behavior as described above.\n\n<h3>\n  VideoPlayer.Track <Label>Required</Label>\n</h3>\n\n`VideoPlayer.Track` provides a React alternative to the native HTML `<track />`.\n\n| Name      | Type                                                                      | Default | Required | Description                                                                                                                              |\n| :-------- | :------------------------------------------------------------------------ | :-----: | :------: | :--------------------------------------------------------------------------------------------------------------------------------------- |\n| `src`     | `string`                                                                  |         |  `true`  | Sets the source of the VTT file containing captions                                                                                      |\n| `kind`    | `'subtitles'`, `'captions'`, `'descriptions'`, `'chapters'`, `'metadata'` |         | `false`  | Sets how the text track is meant to be used                                                                                              |\n| `srcLang` | `string`                                                                  |         | `false`  | Language of the text data. It must be a valid [BCP 47](https://r12a.github.io/app-subtags/) language tag.                                |\n| `label`   | `string`                                                                  |         | `false`  | A user-readable title of the text track which is used by the browser when listing available text tracks.                                 |\n| `default` | `boolean`                                                                 |         | `false`  | This attribute indicates that the track should be enabled unless the user's preferences indicate that another track is more appropriate. |\n\nThe component API supports all standard HTML attribute props, while providing some additional behavior as described above.\n","parent":{"relativeDirectory":"components","name":"VideoPlayer"}},{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/getting-started/theming.mdx","frontmatter":{"title":"Theming"},"rawBody":"---\ntitle: Theming\n---\n\nPrimer Brand defines various global styling defaults using CSS variables, while also allowing app-level customization through its `ThemeProvider`.\n\nCSS variables are available for most styling dimensions such as typography, color and sizing. They are defined in the primary stylesheet: `main.css`.\n\n`ThemeProvider` extends theming capabilities at runtime by enabling real-time color mode switching among other things.\n\nUsing the CSS stylesheet and `ThemeProvider` in tandem is crucial to make theming work correctly.\n\n## Configure the `ThemeProvider`\n\nThe `ThemeProvider` should wrap your React application root to enable theming correctly. It can also be nested to apply isolated behavior to `children`.\n\n```js\nimport {ThemeProvider} from '@primer/react-brand'\n\nfunction App() {\n  return (\n    <ThemeProvider>\n      <div>...</div>\n    </ThemeProvider>\n  )\n}\n```\n\n## Load the stylesheet\n\nThe stylesheet contains all of the required rules for design tokens and components. It also includes a CSS reset, so we recommend loading this as early as possible in your HTML `<head>` to minimize undesirable rendering behavior.\n\n```js\nimport '@primer/react-brand/lib/css/main.css'\n```\n\n## Set a color mode\n\nPrimer Brand supports the following color modes through a dedicated prop by applying HTML `data-*` attributes:\n\n| Theme | `colorMode` prop value | Data attribute applied    |\n| ----- | ---------------------- | ------------------------- |\n| Light | `light`                | `data-color-mode=\"light\"` |\n| Dark  | `dark`                 | `data-color-mode=\"dark\"`  |\n\nThe `ThemeProvider` applies the data attributes and handles state-changes internally.\n\n**`ThemeProvider` will apply `light` mode by default if the `colorMode` is not specified. This is recommended for top-level placement.**\n\nThe following example demonstrates how `light` mode will enable by default, and can also be changed to `dark` declaratively:\n\n```javascript live noinline\nconst Example = () => {\n  const [colorMode, setColorMode] = React.useState()\n\n  const handleChange = (event) => {\n    event.preventDefault()\n    setColorMode('dark')\n  }\n\n  return (\n    <ThemeProvider\n      colorMode={colorMode}\n      style={{backgroundColor: 'var(--brand-color-canvas-default)'}}\n    >\n      <River>\n        <River.Visual>\n          <img\n            src=\"https://via.placeholder.com/600x400/f5f5f5/f5f5f5.png\"\n            alt=\"placeholder, blank area with an off-white background color\"\n          />\n        </River.Visual>\n        <River.Content>\n          <Heading>Heading</Heading>\n          <Text>\n            Lorem ipsum dolor sit amet, consectetur adipiscing elit. In sapien\n            sit ullamcorper id. Aliquam luctus sed turpis felis nam pulvinar\n            risus elementum.\n          </Text>\n          <Link href=\"#\" onClick={handleChange}>\n            {colorMode === 'dark'\n              ? \"I'm in dark mode now\"\n              : 'Switch to dark mode'}\n          </Link>\n        </River.Content>\n      </River>\n    </ThemeProvider>\n  )\n}\n\nrender(Example)\n```\n\n### Locking the color mode\n\nFor tighter control over appearance - such as forcing areas of a layout to appear in dark mode - we recommend nesting `ThemeProvider` and explicitly applying a color mode.\n\n```jsx live\n<>\n  <ThemeProvider\n    colorMode=\"dark\"\n    style={{\n      backgroundColor: 'var(--brand-color-canvas-default)',\n    }}\n  >\n    <River align=\"center\">\n      <River.Visual>\n        <img\n          src=\"https://via.placeholder.com/600x400/f5f5f5/f5f5f5.png\"\n          alt=\"placeholder, blank area with an off-white background color\"\n        />\n      </River.Visual>\n      <River.Content>\n        <Heading>Heading</Heading>\n        <Text>\n          Lorem ipsum dolor sit amet, consectetur adipiscing elit. In sapien sit\n          ullamcorper id. Aliquam luctus sed turpis felis nam pulvinar risus\n          elementum.\n        </Text>\n        <Link href=\"#\">Call to action</Link>\n      </River.Content>\n    </River>\n  </ThemeProvider>\n  <ThemeProvider\n    colorMode=\"light\"\n    style={{\n      backgroundColor: 'var(--brand-color-canvas-default)',\n    }}\n  >\n    <Container>\n      <River align=\"right\">\n        <River.Visual>\n          <img\n            src=\"https://via.placeholder.com/600x400/f5f5f5/f5f5f5.png\"\n            alt=\"placeholder, blank area with an off-white background color\"\n          />\n        </River.Visual>\n        <River.Content>\n          <Heading>Heading</Heading>\n          <Text>\n            Lorem ipsum dolor sit amet, consectetur adipiscing elit. In sapien\n            sit ullamcorper id. Aliquam luctus sed turpis felis nam pulvinar\n            risus elementum.\n          </Text>\n          <Link href=\"#\">Call to action</Link>\n        </River.Content>\n      </River>\n    </Container>\n  </ThemeProvider>\n</>\n```\n","parent":{"relativeDirectory":"getting-started","name":"theming"}},{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/getting-started/index.mdx","frontmatter":{"title":"Getting started"},"rawBody":"---\ntitle: Getting started\npath: getting-started/index\n---\n\nPrimer Brand is [open-sourced on GitHub](https://github.com/primer/brand) and [available on npm](https://www.npmjs.com/package/@primer/react-brand).\n\n### 1. Install Primer Brand\n\nInstall Primer Brand with [npm](https://www.npmjs.com/).\n\n```shell\nnpm install @primer/react-brand\n```\n\n### 2. Import global stylesheets\n\nPrimer Brand requires a global stylesheet to be loaded ahead-of-time.\n\n#### a. Using an application bundler (e.g. Webpack)\n\nImport the `main` stylesheet at the earliest rendering opportunity:\n\n```js\nimport '@primer/react-brand/lib/css/main.css'\n```\n\nor\n\n#### b. Using a static stylesheet\n\nLoad the static stylesheet if you're unable to import stylesheets using a bundler\n\n```html\n<link\n  href=\"https://unpkg.com/browse/@primer/react-brand@<version>/lib/css/main.css\"\n  rel=\"stylesheet\"\n/>\n```\n\n### 3. (Optional) Import the custom font assets\n\nPrimer Brand references the `Mona Sans` typeface, which will need to be loaded alongside the main stylesheet.\n\n```js\nimport '@primer/react-brand/fonts/fonts.css'\n```\n\nor\n\n```html\n<link\n  href=\"https://unpkg.com/browse/@primer/react-brand@<version>/fonts/fonts.css\"\n  rel=\"stylesheet\"\n/>\n```\n\n### 4. Use the ThemeProvider\n\nYou must add the `ThemeProvider` to the root of your application for theming to work correctly.\n\nE.g.\n\n```js\nimport {ThemeProvider} from '@primer/react-brand'\n\nfunction App() {\n  return (\n    <ThemeProvider>\n      <div>...</div>\n    </ThemeProvider>\n  )\n}\n```\n\n### 5. Import components\n\nComponents can be imported into any React-based application.\n\nE.g.\n\n```js\nimport {Hero} from '@primer/react-brand'\n```\n\n```jsx\n<Hero {...props} />\n```\n","parent":{"relativeDirectory":"getting-started","name":"index"}},{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/github-staff/storybook.mdx","frontmatter":{"title":"Storybook"},"rawBody":"---\ntitle: Storybook\ndescription: Storybook access is restricted to GitHub staff only.\n---\n\nimport {Button, Stack} from '@primer/react-brand'\n\n<Note>This information is only relevant to GitHub staff.</Note>\n\n## Using Storybook\n\nAdditional examples for Primer Brand component layouts and recipes are avaialble in our private Storybook instance.\n\nPlease note that access to this instance is restricted to signed-in collaborators of the `primer/primer-brand-storybook` repository. If you are a GitHub staff member and would like access to Storybook, please request it in the [#primer-brand](https://github.slack.com/archives/C03FY9G00NS) Slack channel.\n\n<p>\n  <Stack padding=\"none\" direction=\"horizontal\">\n    <Button\n      as=\"a\"\n      variant=\"primary\"\n      href=\"https://gh.io/primer-brand-storybook\"\n    >\n      Go to Storybook\n    </Button>\n    <Button as=\"a\" href=\"https://github.slack.com/archives/C03FY9G00NS\">\n      Request access\n    </Button>\n  </Stack>\n</p>\n","parent":{"relativeDirectory":"github-staff","name":"storybook"}},{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/components/Avatar/index.mdx","frontmatter":{"title":"Avatar"},"rawBody":"---\ntitle: Avatar\ndescription: Use the avatar component to display a thumbnail representation of a person.\n---\n\nimport ComponentLayout from '../../../src/layouts/component-layout'\nexport default ComponentLayout\n\n![An image showing two different avatars, a circular and a square one.](https://user-images.githubusercontent.com/175638/234820833-c803cb11-2bc3-4597-88f3-2cf630a46702.png)\n\n## Usage\n\nUse avatars to display a thumbnail that represents individuals in various contexts, such as testimonials, speaker sessions, blog post authors, and beyond.\n\n## Options\n\n### Size\n\nAvatar offers various sizes to fit different layout and visual scale needs. Sizes range from 32 to 80 pixels. Ensure the avatar is proportionate to its accompanying text.\n\n![An image showing the size scale of the avatar component: 32, 40, 48, 64, and 80 pixels](https://user-images.githubusercontent.com/175638/234826575-1d1d5019-f714-41b1-b8bc-c0d312a46cfe.png)\n\n### Shape\n\nAvatars appear as two different shapes: circle and square. The choice depends on the desired visual impression and the overall design aesthetic of your project.\n\n![An image showing the two different shapes of the avatar component: circle and square](https://user-images.githubusercontent.com/175638/234827120-da548115-450b-4ec8-a6e6-5dcbe98e77c5.png)\n\n## Related components\n\n- [Image](/components/Image)\n- [Testimonial](/components/Testimonial)\n","parent":{"relativeDirectory":"components/Avatar","name":"index"}},{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/components/Avatar/react.mdx","frontmatter":{"title":"Avatar"},"rawBody":"---\ntitle: Avatar\nstatus: Experimental\nfigma: 'https://www.figma.com/file/BJ95AjraesmRCWsKA013GS/Primer-Brand?node-id=543%3A19830&t=Be91VGjX2BANJnQc-11'\nsource: https://github.com/primer/brand/tree/main/packages/react/src/Avatar/Avatar.tsx\nstorybook: '/brand/storybook/?path=/story/components-Avatar--playground'\ndescription: Use the avatar component to display a thumbnail representation of a person.\n---\n\nimport ComponentLayout from '../../../src/layouts/component-layout'\nexport default ComponentLayout\n\nimport {Label} from '@primer/react'\nimport {PropTableValues} from '../../../src/components'\nimport {AvatarSizes, AvatarShapes} from '@primer/react-brand'\n\n```js\nimport {Avatar, Stack} from '@primer/react-brand'\n```\n\n## Examples\n\n### Default\n\n```jsx live\n<Avatar\n  src=\"https://avatars.githubusercontent.com/u/92997159?v=4\"\n  alt=\"Mona profile\"\n/>\n```\n\n### Sizes\n\nThe size of the avatar can be controlled by the `size` prop.\n\n```jsx live\n<Stack\n  direction=\"horizontal\"\n  alignItems=\"center\"\n  justifyContent=\"center\"\n  gap=\"spacious\"\n  style={{height: 200}}\n>\n  <Avatar\n    size={32}\n    src=\"https://avatars.githubusercontent.com/u/92997159?v=4\"\n    alt=\"Mona avatar at 32px\"\n  />\n  <Avatar\n    size={40}\n    src=\"https://avatars.githubusercontent.com/u/92997159?v=4\"\n    alt=\"Mona avatar at 40px\"\n  />\n  <Avatar\n    size={48}\n    src=\"https://avatars.githubusercontent.com/u/92997159?v=4\"\n    alt=\"Mona avatar at 48px\"\n  />\n  <Avatar\n    size={64}\n    src=\"https://avatars.githubusercontent.com/u/92997159?v=4\"\n    alt=\"Mona avatar at 64px\"\n  />\n  <Avatar\n    size={80}\n    src=\"https://avatars.githubusercontent.com/u/92997159?v=4\"\n    alt=\"Mona avatar at 80px\"\n  />\n</Stack>\n```\n\n#### Responsive Sizes\n\nPassing an Object of a particular shape will allow granular control of `size` at various supported breakpoints.\n\nSupported breakpoints are `narrow`, `regular` and `wide`.\n\nThe Object value does not require all properties be passed, but rather operates on the basis of `min-width`.\n\nE.g. Providing only `narrow` will apply that value to all larger breakpoints, but not the other way.\n\n```jsx live\n<Avatar\n  size={{narrow: 32, regular: 40, wide: 80}}\n  src=\"https://avatars.githubusercontent.com/u/92997159?v=4\"\n  alt=\"Mona avatar at 32px\"\n/>\n```\n\n### Shapes\n\nThe shape of the avatar can be controlled by the `shape` prop.\n\n```jsx live\n<Stack\n  direction=\"horizontal\"\n  alignItems=\"center\"\n  justifyContent=\"center\"\n  gap=\"spacious\"\n  style={{height: 200}}\n>\n  <Avatar\n    size={64}\n    shape=\"circle\"\n    src=\"https://avatars.githubusercontent.com/u/92997159?v=4\"\n    alt=\"A circular avatar picture\"\n  />\n  <Avatar\n    size={64}\n    shape=\"square\"\n    src=\"https://avatars.githubusercontent.com/u/92997159?v=4\"\n    alt=\"A square avatar picture\"\n  />\n</Stack>\n```\n\n## Component props\n\n### Avatar <Label>Required</Label>\n\n| name        | type                                                                             | default  | required | description                       |\n| ----------- | -------------------------------------------------------------------------------- | -------- | -------- | --------------------------------- |\n| `alt`       | `string`                                                                         |          | `true`   | The alt text of the image         |\n| `className` | `string`                                                                         |          | `false`  | Avatar custom class               |\n| `size`      | <PropTableValues values={[...AvatarSizes, 'ResponsiveSizeMap']} addLineBreaks /> | `40`     | `false`  | The size (in pixels) of the image |\n| `shape`     | <PropTableValues values={AvatarShapes} addLineBreaks />                          | `circle` | `false`  | The shape of the image            |\n| `src`       | `string`                                                                         |          | `true`   | A url to the person's image       |\n","parent":{"relativeDirectory":"components/Avatar","name":"react"}},{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/primitives/color.mdx","frontmatter":{"title":"Color"},"rawBody":"---\ntitle: Color\nstatus: Experimental\nfigma: 'https://www.figma.com/file/BJ95AjraesmRCWsKA013GS/Primer-Brand?node-id=387%3A8439'\n---\n\nimport {HeadingTags, defaultHeadingTag} from '@primer/react-brand'\nimport {Box as Container} from '@primer/react'\nimport {ColorThemePicker} from '../../src/components/content/ColorThemePicker'\nimport {ColorScales} from '../../src/components'\n\n## Themes\n\n<ColorThemePicker />\n\n## Scales\n\n<Note variant=\"warning\">\n  Avoid referencing scale variables directly when building UI that needs to\n  adapt to different color themes. Instead, use the functional variables. In\n  rare cases, you may need to use scale variables to define custom functional\n  variables in your application.\n</Note>\n\n<ColorScales />\n","parent":{"relativeDirectory":"primitives","name":"color"}},{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/components/Box/index.mdx","frontmatter":{"title":"Box"},"rawBody":"---\ntitle: Box\ndescription: Use a box to simplify the process of applying one-off styles to an element\n---\n\nimport CustomVideoPlayer from '../../../src/components/custom-video-player'\nimport ComponentLayout from '../../../src/layouts/component-layout'\nexport default ComponentLayout\n\n## Usage\n\nThe box component is a versatile layout component that is intended to simplify the process of adding one-off styles such as padding, margin, background color, and border to (or around) an element.\n\nThe box provides convenient and comprehensive access to Primer Brand's underlying Primitives, such as the spacing scale and functional design tokens for color and borders.\n\nWhile the box component is highly customizable and can be used to create complex layouts, it is important to use it judiciously and only when necessary.\n\n## Options\n\n### Padding\n\nInner spacing is configurable on all sides or specific directions. Box utilises the CSS padding specification, using logical operators to aid bi-directional reading support.\n\nAdditionally, fine-grained control over padding at specific viewports is available to ensure optimal, responsive layout on different screen sizes.\n\n### Margin\n\nOuter spacing is also configurable on all sides or specific directions. Box utilises the CSS margin specification, similarly using logical operators to aid bi-directional reading support.\n\n### Background color\n\nBox enables first-class customisation of its background-color property. Options are limited to background-oriented, functional design tokens such as `default` and `subtle`, to ensure maximum color contrast with foreground text.\n\n### Border\n\nBox offers various border customisations options, including configuration of `border-style`, `border-radius` and `border-colors`.\n\nIn most cases, the available options corrospond to border-oriented design tokens available within the system. The exception is border style, which is limited to a subset of the official CSS `border-style` values.\n\n## Accessibility\n\nBox is a purely decorative element by default. It sets no intrinsic roles, ARIA attributes, or keyboard shortcuts.\n\nAny interactive content within a box should be given their own appropriate accessibility treatment based on the specific workflow of your application.\n\n## Related components\n\n- [Stack](/components/Stack): to enable layout of its immediate children along the vertical or horizontal axis.\n- [Grid](/components/Grid): to create flexible and responsive grid-based layouts.\n","parent":{"relativeDirectory":"components/Box","name":"index"}},{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/components/Box/react.mdx","frontmatter":{"title":"Box"},"rawBody":"---\ntitle: Box\nstatus: Experimental\na11yReviewed: false\nsource: https://github.com/primer/brand/blob/main/packages/react/src/Box/Box.tsx\nstorybook: '/brand/storybook/?path=/story/components-box--default'\ndescription: Use a box to simplify the process of applying one-off styles to an element\n---\n\nimport ComponentLayout from '../../../src/layouts/component-layout'\nexport default ComponentLayout\n\nimport {\n  BoxSpacingValues,\n  BoxBackgroundColors,\n  BoxBorderColorOptions,\n  BoxBorderRadiusOptions,\n  BoxBorderWidthOptions,\n  AnimationVariants,\n} from '@primer/react-brand'\nimport {Box as Container} from '@primer/react'\nimport {PropTableValues} from '../../../src/components'\n\n```js\nimport {Box} from '@primer/react-brand'\n```\n\n## Examples\n\n<Note>\n\nBox requires the `dir` attribute to be set on the `<html>` element to ensure that directional padding and margin values are applied correctly.\n\n</Note>\n\n### Default\n\nThe `Box` component, by default, represents an empty `<div>` element with no predefined styles applied to it.\n\n```jsx live\n<Box>With GitHub Copilot, you’re always in charge.</Box>\n```\n\n### Uniform padding\n\nUse `padding` to apply equal inner spacing to all sides of an element.\n\n```jsx live\n<>\n  <Stack direction=\"horizontal\" alignItems=\"center\" flexWrap=\"wrap\">\n    <Box padding=\"condensed\" className=\"bg-red-lines\">\n      condensed\n    </Box>\n    <Box padding=\"normal\" className=\"bg-red-lines\">\n      normal\n    </Box>\n    <Box padding=\"spacious\" className=\"bg-red-lines\">\n      spacious\n    </Box>\n  </Stack>\n  <Stack direction=\"horizontal\" alignItems=\"center\" flexWrap=\"wrap\">\n    <Box padding={24} className=\"bg-red-lines\">\n      24\n    </Box>\n    <Box padding={32} className=\"bg-red-lines\">\n      32\n    </Box>\n    <Box padding={48} className=\"bg-red-lines\">\n      48\n    </Box>\n    <Box padding={64} className=\"bg-red-lines\">\n      64\n    </Box>\n    <Box padding={96} className=\"bg-red-lines\">\n      96\n    </Box>\n  </Stack>\n</>\n```\n\n### Directional padding\n\nApply internal spacing to a specific side. Directional padding is implemented with CSS logical properties and accepts functional spacing names, or values from the base scale.\n\n```jsx live\n<Stack direction=\"horizontal\" alignItems=\"center\" flexWrap=\"wrap\">\n  <Box paddingBlockStart={64} className=\"bg-red-lines\">\n    block start\n  </Box>\n  <Box paddingInlineEnd={64} className=\"bg-red-lines\">\n    inline end\n  </Box>\n  <Box paddingBlockEnd={64} className=\"bg-red-lines\">\n    block end\n  </Box>\n  <Box paddingInlineStart={64} className=\"bg-red-lines\">\n    inline start\n  </Box>\n</Stack>\n```\n\n### Uniform margin\n\nUse `margin` to apply equal outer spacing to all sides of an element.\n\n```jsx live\n<>\n  <Stack direction=\"horizontal\" alignItems=\"center\" flexWrap=\"wrap\">\n    <Box className=\"bg-yellow-lines\">\n      <Box margin=\"condensed\" className=\"bg-red-lines\">\n        condensed\n      </Box>\n    </Box>\n    <Box className=\"bg-yellow-lines\">\n      <Box margin=\"normal\" className=\"bg-red-lines\">\n        normal\n      </Box>\n    </Box>\n    <Box className=\"bg-yellow-lines\">\n      <Box margin=\"spacious\" className=\"bg-red-lines\">\n        spacious\n      </Box>\n    </Box>\n  </Stack>\n  <Stack direction=\"horizontal\" alignItems=\"center\" flexWrap=\"wrap\">\n    <Box className=\"bg-yellow-lines\">\n      <Box margin={24} className=\"bg-red-lines\">\n        24\n      </Box>\n    </Box>\n    <Box className=\"bg-yellow-lines\">\n      <Box margin={32} className=\"bg-red-lines\">\n        32\n      </Box>\n    </Box>\n    <Box className=\"bg-yellow-lines\">\n      <Box margin={48} className=\"bg-red-lines\">\n        48\n      </Box>\n    </Box>\n    <Box className=\"bg-yellow-lines\">\n      <Box margin={64} className=\"bg-red-lines\">\n        64\n      </Box>\n    </Box>\n    <Box className=\"bg-yellow-lines\">\n      <Box margin={96} className=\"bg-red-lines\">\n        96\n      </Box>\n    </Box>\n  </Stack>\n</>\n```\n\n### Directional margin\n\nApply external spacing to a specific side. Directional margins are implemented with CSS logical properties and accepts functional spacing names, or values from the base scale.\n\n```jsx live\n<Stack direction=\"horizontal\" alignItems=\"center\" flexWrap=\"wrap\">\n  <Box className=\"bg-yellow-lines\">\n    <Box marginBlockStart={64} className=\"bg-red-lines\">\n      block start\n    </Box>\n  </Box>\n  <Box className=\"bg-yellow-lines\">\n    <Box marginInlineEnd={64} className=\"bg-red-lines\">\n      inline end\n    </Box>\n  </Box>\n  <Box className=\"bg-yellow-lines\">\n    <Box marginBlockEnd={64} className=\"bg-red-lines\">\n      block end\n    </Box>\n  </Box>\n  <Box className=\"bg-yellow-lines\">\n    <Box marginInlineStart={64} className=\"bg-red-lines\">\n      inline start\n    </Box>\n  </Box>\n</Stack>\n```\n\n### Responsive spacing\n\nAll padding and margin options can be configured for indivisual viewports: Each viewport entry is applied using a `min-width` media query.\n\n```jsx live\n<Stack direction=\"horizontal\" alignItems=\"center\" flexWrap=\"wrap\">\n  <Box className=\"bg-yellow-lines\">\n    <Box\n      margin={{\n        narrow: 48,\n        regular: 96,\n        wide: 128,\n      }}\n      className=\"bg-red-lines\"\n    >\n      margin\n    </Box>\n  </Box>\n  <Box\n    padding={{\n      narrow: 48,\n      regular: 96,\n      wide: 128,\n    }}\n    className=\"bg-red-lines\"\n  >\n    padding\n  </Box>\n</Stack>\n```\n\n### Animation\n\n```jsx live\n<AnimationProvider>\n  <Stack direction=\"horizontal\" flexWrap=\"wrap\">\n    <Box animate=\"slide-in-right\" padding={96} className=\"bg-red-lines\" />\n    <Box animate=\"slide-in-right\" padding={96} className=\"bg-red-lines\" />\n    <Box animate=\"slide-in-right\" padding={96} className=\"bg-red-lines\" />\n  </Stack>\n</AnimationProvider>\n```\n\n### Border radius\n\n```jsx live\n<Stack direction=\"horizontal\" flexWrap=\"wrap\">\n  <Box borderRadius=\"small\" padding=\"spacious\" className=\"bg-red-lines\">\n    small\n  </Box>\n  <Box borderRadius=\"medium\" padding=\"spacious\" className=\"bg-red-lines\">\n    medium\n  </Box>\n  <Box borderRadius=\"large\" padding=\"spacious\" className=\"bg-red-lines\">\n    large\n  </Box>\n  <Box borderRadius=\"full\" padding=\"spacious\" className=\"bg-red-lines\">\n    full\n  </Box>\n</Stack>\n```\n\n### Borders\n\n```jsx live\n<Stack direction=\"horizontal\" flexWrap=\"wrap\">\n  <Box\n    backgroundColor=\"subtle\"\n    borderWidth=\"thin\"\n    borderColor=\"default\"\n    borderStyle=\"solid\"\n    padding=\"spacious\"\n  >\n    thin\n  </Box>\n  <Box\n    backgroundColor=\"subtle\"\n    borderWidth=\"thick\"\n    borderColor=\"default\"\n    borderStyle=\"solid\"\n    padding=\"spacious\"\n  >\n    thick\n  </Box>\n  <Box\n    backgroundColor=\"subtle\"\n    borderWidth=\"thicker\"\n    borderColor=\"default\"\n    borderStyle=\"solid\"\n    padding=\"spacious\"\n  >\n    thicker\n  </Box>\n</Stack>\n```\n\n### Background colors\n\n```jsx live\n<Stack direction=\"horizontal\" flexWrap=\"wrap\">\n  <Box\n    backgroundColor=\"default\"\n    borderWidth=\"thin\"\n    borderColor=\"default\"\n    borderStyle=\"solid\"\n    padding=\"spacious\"\n  >\n    default\n  </Box>\n  <Box\n    backgroundColor=\"subtle\"\n    borderWidth=\"thin\"\n    borderColor=\"default\"\n    borderStyle=\"solid\"\n    padding=\"spacious\"\n  >\n    subtle\n  </Box>\n  <Box\n    backgroundColor=\"inset\"\n    borderWidth=\"thin\"\n    borderColor=\"default\"\n    borderStyle=\"solid\"\n    padding=\"spacious\"\n  >\n    inset\n  </Box>\n  <Box\n    backgroundColor=\"overlay\"\n    borderWidth=\"thin\"\n    borderColor=\"default\"\n    borderStyle=\"solid\"\n    padding=\"spacious\"\n  >\n    overlay\n  </Box>\n</Stack>\n```\n\n## Component props\n\n### Box\n\n| Name                     | Type                                                                     |   Default   | Description                                                                 |\n| :----------------------- | :----------------------------------------------------------------------- | :---------: | :-------------------------------------------------------------------------- |\n| `padding`                | <PropTableValues values={[...BoxSpacingValues]} commaSeparated  />       | `undefined` | Adds padding to all internal sides of the Box.                              |\n| `paddingBlockStart`      | <PropTableValues values={[...BoxSpacingValues]} commaSeparated  />       | `undefined` | Adds padding to the internal block start (top) side of the Box.             |\n| `paddingRight`           | <PropTableValues values={[...BoxSpacingValues]} commaSeparated  />       | `undefined` | Adds padding to the internal inline end (right) of the Box.                 |\n| `paddingBlockEnd`        | <PropTableValues values={[...BoxSpacingValues]} commaSeparated  />       | `undefined` | Adds padding to the internal block end (bottom) side of the Box.            |\n| `paddingLeft`            | <PropTableValues values={[...BoxSpacingValues]} commaSeparated  />       | `undefined` | Adds padding to the internal inline start (left) side of the Box.           |\n| `margin`                 | <PropTableValues values={[...BoxSpacingValues]} commaSeparated  />       | `undefined` | Adds margin to all external sides of the Box.                               |\n| `marginBlockStart`       | <PropTableValues values={[...BoxSpacingValues]} commaSeparated  />       | `undefined` | Adds margin to the external block start (top) side of the Box.              |\n| `marginInlineEnd`        | <PropTableValues values={[...BoxSpacingValues]} commaSeparated  />       | `undefined` | Adds margin to the external inline end (right) side of the Box.             |\n| `marginBlockEnd`         | <PropTableValues values={[...BoxSpacingValues]} commaSeparated  />       | `undefined` | Adds margin to the external block end (bottom) side of the Box.             |\n| `marginInlineStart`      | <PropTableValues values={[...BoxSpacingValues]} commaSeparated  />       | `undefined` | Adds margin to the external inline start (left) side of the Box.            |\n| `backgroundColor`        | <PropTableValues values={[...BoxBackgroundColors]} commaSeparated  />    | `undefined` | Applies a system-level background color to the Box.                         |\n| `borderRadius`           | <PropTableValues values={[...BoxBorderRadiusOptions]} commaSeparated  /> | `undefined` | Applies a system-level border radius value to the Box.                      |\n| `borderWidth`            | <PropTableValues values={[...BoxBorderWidthOptions]} commaSeparated  />  | `undefined` | Applies a system-level border width value to the Box.                       |\n| `borderBlockStartWidth`  | <PropTableValues values={[...BoxBorderWidthOptions]} commaSeparated  />  | `undefined` | Applies a system-level border width value to block-start side of the Box.   |\n| `borderInlineEndWidth`   | <PropTableValues values={[...BoxBorderWidthOptions]} commaSeparated  />  | `undefined` | Applies a system-level border width value to inline-end side of the Box.    |\n| `borderBlockEndWidth`    | <PropTableValues values={[...BoxBorderWidthOptions]} commaSeparated  />  | `undefined` | Applies a system-level border width value to block-end side of the Box.     |\n| `borderInlineStartWidth` | <PropTableValues values={[...BoxBorderWidthOptions]} commaSeparated  />  | `undefined` | Applies a system-level border width value to inline-start side of the Box.  |\n| `borderColor`            | <PropTableValues values={[...BoxBorderColorOptions]} commaSeparated  />  | `undefined` | Applies a system-level border color value to the Box.                       |\n| `borderStyle`            | <PropTableValues values={['solid', 'none']} commaSeparated />            | `undefined` | Applies border style. Values correspond to the CSS `border-style` property. |\n| `animate`                | <PropTableValues values={[...AnimationVariants]} commaSeparated />       | `undefined` | Applies one-off animations to direct children of the Box.                   |\n","parent":{"relativeDirectory":"components/Box","name":"react"}},{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/components/Button/react.mdx","frontmatter":{"title":"Button"},"rawBody":"---\ntitle: Button\nstatus: Experimental\na11yReviewed: true\nfigma: 'https://www.figma.com/file/BJ95AjraesmRCWsKA013GS/Primer-Brand?node-id=2931%3A30104'\nsource: https://github.com/primer/brand/blob/main/packages/react/src/Button/Button.tsx\nstorybook: '/brand/storybook/?path=/story/components-button--playground'\ndescription: Use the button component for the main actions on a page or form.\n---\n\nimport ComponentLayout from '../../../src/layouts/component-layout'\nexport default ComponentLayout\n\nimport {ButtonVariants, ButtonSizes} from '@primer/react-brand'\nimport {SearchIcon, ChevronDownIcon, FilterIcon} from '@primer/octicons-react'\nimport {PropTableValues} from '../../../src/components'\n\n```js\nimport {Button} from '@primer/react-brand'\n```\n\n## Examples\n\n### Default\n\nThis is the default variant for the Button component. It corresponds to the `secondary` variant appearance.\n\n```jsx live\n<Button>Default</Button>\n```\n\n### Primary\n\nThe `primary` variant of Button indicates that the action is of high priority, and should be used sparingly.\n\n```jsx live\n<Button variant=\"primary\">Primary</Button>\n```\n\n### Subtle\n\nThe `subtle` variant of Button indicates that the action is a low priority one.\n\n```jsx live\n<Button variant=\"subtle\">Primary</Button>\n```\n\n### Sizes\n\n```jsx live\n<Stack direction=\"vertical\" alignItems=\"flex-start\">\n  <Button size=\"small\">Register now</Button>\n  <Button size=\"medium\">Register now</Button>\n  <Button size=\"large\">Register now</Button>\n</Stack>\n```\n\n### Block\n\n```jsx live\n<Button block>Full-width button</Button>\n```\n\n### Removing the arrow\n\nThe animated arrow indicator can be removed using the `hasArrow` prop.\n\n```jsx live\n<Button hasArrow={false}>No arrow</Button>\n```\n\n### Using an icon\n\nYou can place an icon inside the Button in either the leading or the trailing position to enhance the visual context. It is recommended to use an [Octicon](https://primer.style/octicons) here.\n\n```jsx live\n<Stack direction=\"vertical\" alignItems=\"flex-start\">\n  <Button leadingVisual={<SearchIcon />}>Search</Button>\n  <Button trailingVisual={<ChevronDownIcon />}>Select</Button>\n  <Button leadingVisual={<FilterIcon />} trailingVisual={<ChevronDownIcon />}>\n    Filter\n  </Button>\n</Stack>\n```\n\n### Polymorphism\n\nThe `Button` component can render as a `button` or `a` HTML element. By default, it will render as a `button`.\n\n```jsx live\n<Button as=\"a\" href=\"https://github.com\">\n  Register now\n</Button>\n```\n\n## Component props\n\n### Button\n\n| Name             | Type                                                      |    Default    | Description                                          |\n| :--------------- | :-------------------------------------------------------- | :-----------: | :--------------------------------------------------- |\n| `leadingVisual`  | `ReactElement`                                            |  `undefined`  | The leading visual appears before the button content |\n| `trailingVisual` | `ReactElement`                                            |  `undefined`  | The trailing visual appears after the button content |\n| `variants`       | <PropTableValues values={ButtonVariants} addLineBreaks /> | `'secondary'` | The styling variations available in Button           |\n| `size`           | <PropTableValues values={ButtonSizes} addLineBreaks />    |  `'medium'`   | The size variations available in Button              |\n| `block`          | `boolean`                                                 |    `false`    | The full-width option available in Button            |\n| `hasArrow`       | `boolean`                                                 |    `true`     | A flag to show/hide the arrow icon                   |\n","parent":{"relativeDirectory":"components/Button","name":"react"}},{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/components/Button/index.mdx","frontmatter":{"title":"Button"},"rawBody":"---\ntitle: Button\ndescription: Use the button component for the main actions on a page or form.\n---\n\nimport ComponentLayout from '../../../src/layouts/component-layout'\nexport default ComponentLayout\n\n![An image showing different button types.](https://github.com/primer/brand/assets/6951037/fcc3b962-1b4a-416b-be29-4a70ef503f2a)\n\n## Usage\n\nButtons allow users to initiate an action or command when clicked. The button's label or text description indicates the purpose of the action to the user. Most of the time, we use the \"Default\" button type, but other types of buttons may be used to indicate something special about the button's hierarchy or functionality.\n\n<DoDontContainer>\n  <Do>\n    <img src=\"https://github.com/primer/brand/assets/6951037/83f703f5-d02c-45f1-82d2-e819613a6638\" />\n    <Caption>Keep button labels succinct with no line breaks.</Caption>\n  </Do>\n  <Dont>\n    <img src=\"https://github.com/primer/brand/assets/6951037/e0b67dea-712b-4483-9222-0b499e539415\" />\n    <Caption>\n      Buttons should never contain line breaks and lose their button shape.\n    </Caption>\n  </Dont>\n</DoDontContainer>\n\n<DoDontContainer>\n  <Do>\n    <img src=\"https://github.com/primer/brand/assets/6951037/96da1bd5-d537-40c1-9103-96254813648f\" />\n    <Caption>Show focus styles on keyboard :focus</Caption>\n  </Do>\n  <Dont>\n    <img src=\"https://github.com/primer/brand/assets/6951037/edc931cf-06ed-4814-8ad0-24a8344902c0\" />\n    <Caption>Don't remove default button :focus styles.</Caption>\n  </Dont>\n</DoDontContainer>\n\n<DoDontContainer>\n  <Do>\n    <img src=\"https://github.com/primer/brand/assets/6951037/56824212-3622-4546-b437-53dbced734a6\" />\n    <Caption>Use sentence case for labels.</Caption>\n  </Do>\n  <Dont>\n    <img src=\"https://github.com/primer/brand/assets/6951037/515e833e-fad2-44fd-aae8-fae6301974c1\" />\n    <Caption>Don't use all-caps or other text formats.</Caption>\n  </Dont>\n</DoDontContainer>\n\n## Anatomy\n\n![An image showing the different parts of a button with annotations.](https://github.com/primer/brand/assets/6951037/ef74e834-2650-424e-b382-bdcd4a09c113)\n\n## Options\n\n### Variants\n\n#### Primary\n\nPrimary buttons have top priority in visual hierarchy, and using too many of them on a single view dilutes their effectiveness. We recommend to limit the primary button to one button per view, and place it in the visible section, whenever possible, to indicate its emphasis relative to other actions. Use multiple primary buttons only when the action is repeated in multiple places of the same page. E,g a \"Log in\" button in the header and in the footer area.\n\n![An image showing all primary states.](https://github.com/primer/brand/assets/6951037/dfad0124-4cdc-4230-b442-4ee9c747d0f0)\n\n#### Secondary\n\nSecondary buttons are the default button type. Use them for the main actions on a page or form. Secondary buttons are the most common button type and should be used in most cases. They can be paired with a primary button to perform a secondary action, or used on their own.\n\n![An image showing all secondary states.](https://github.com/primer/brand/assets/6951037/71f5a85d-4e63-4a3b-b7fc-2492ceae2b30)\n\n#### Subtle\n\nSubtle buttons have a transparent background with translucent hover and active states, making them useful for compound components like [Button Group](/components/ButtonGroup) when paired with secondary or primary variants.\n\n![An image showing all subtle states.](https://github.com/primer/brand/assets/912236/7420969a-e561-4fd6-9bef-7340e2b0a7e8)\n\n#### Block\n\nTurning on the block option for button allows the button to span the full width of its container. This feature can be particularly useful when you want the button to occupy more space. Block button can continue to pair with secondary or primary variants.\n\n![An image showing block button with all subtle states.](https://github.com/primer/brand/assets/6951037/2fe48284-7c3d-4262-9992-3fc029237fe6)\n\n### Trailing and leading icons\n\nYou can place an icon inside the button in either the leading or the trailing position to enhance the visual context. It is recommended to use an use an [Octicon](https://primer.style/octicons) here.\n\nUse a trailing visual if the button action involves selecting items (dropdown, select, filter, etc), and a leading visual to provide visual context to the adjacent label. E.g. Use a search icon for a search field submit action.\n\n<DoDontContainer>\n  <Do>\n    <img src=\"https://github.com/primer/brand/assets/6951037/558dd2c0-22b9-4e0b-aa0d-6394eae29e6c\" />\n    <Caption>\n      Use a leading icon that provides context and reinforces the label.\n    </Caption>\n  </Do>\n  <Dont>\n    <img src=\"https://github.com/primer/brand/assets/6951037/2b4b06e5-5e54-4d8d-885a-b0d3faaa1298\" />\n    <Caption>\n      Don't use a trailing icons to add a visual cue to the label. Use the\n      leading icon for better scanability.\n    </Caption>\n  </Dont>\n</DoDontContainer>\n\n<DoDontContainer>\n  <Do>\n    <img src=\"https://github.com/primer/brand/assets/6951037/5e534c85-0dcd-44b2-8c21-f80f2f14a4d0\" />\n    <Caption>\n      Use a trailing icon for select, dropdown, or filter actions to reinforce\n      its direction.\n    </Caption>\n  </Do>\n  <Dont>\n    <img src=\"https://github.com/primer/brand/assets/6951037/2b3ad072-d3dd-4b34-b7fa-a915fd84d03d\" />\n    <Caption>\n      Don't use a leading icon or the arrow for select, dropdown, or filter\n      actions.\n    </Caption>\n  </Dont>\n</DoDontContainer>\n\n### Size\n\nButton default to a medium size. Medium is suitable for most interfaces and is considered the preferred size.\n\nLarge buttons increase the significance of an action and should be used sparingly. Use the large option when you need to emphasize the button on a big sized heading, for example in a [Hero](/components/Hero) component.\n\nSmall buttons are meant to be used sparingly. Some use cases can be:\n\n- Contained inside other components like dropdowns or small popups.\n- Areas where very low priority information might display a CTA. \n- Brand presence inside products where information is compact. For example for in-product banner.\n\n### Arrow\n\nThe arrow is shown by default in all buttons. Hide the arrow only to save horizontal space or to diminish the importance of the button.\n\nWhen used in a group, the arrow should be used or hide consistently across all buttons.\n\n## Accessibility\n\n### Descriptive buttons\n\nLabeling buttons properly lets users know what will happen when they activate the control, lessens errors, and increases confidence.\n\nRead more about [descriptive buttons](https://primer.style/design/guides/accessibility/descriptive-buttons/).\n\n## Related components\n\n- [ButtonGroup](/components/ButtonGroup): To display a group of related buttons.\n- [Link](/components/Link): To display a link that navigates to another page.\n- [Hero](/components/Hero): To display a large heading and a description with a ButtonGroup.\n","parent":{"relativeDirectory":"components/Button","name":"index"}},{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/components/ButtonGroup/index.mdx","frontmatter":{"title":"Button group"},"rawBody":"---\ntitle: Button group\ndescription: Use the button group component to group related buttons together.\n---\n\nimport ComponentLayout from '../../../src/layouts/component-layout'\nexport default ComponentLayout\n\n![An image showing a button group with a primary and a secondary button.](https://github.com/primer/brand/assets/6951037/3b8d5346-31d5-4820-baaf-056d9063f203)\n\n## Usage\n\nUse button group to group a set of actions that are related between them or to a single application. E,g, \"Log in\" and \"Sign up\" or \"Try it out\" and \"Learn more\".\n\nUse button group to display a pair of primary and a secondary actions. The primary button is used for the main call to action while the secondary button is a related, less important action.\n\n<DoDontContainer>\n  <Do>\n    <img src=\"https://github.com/primer/brand/assets/6951037/c69ae38e-819b-4e03-9b92-665a479f188a\" />\n    <Caption>Use a primary button with a secondary button.</Caption>\n  </Do>\n  <Dont>\n    <img src=\"https://github.com/primer/brand/assets/6951037/c4c5c0de-2a46-4dbb-802a-0a6739d31d3a\" />\n    <Caption>Don’t place multiple primary buttons together.</Caption>\n  </Dont>\n</DoDontContainer>\n\n<DoDontContainer>\n  <Do>\n    <img src=\"https://github.com/primer/brand/assets/6951037/9918ba9b-57ea-4a32-b51b-2460554900a9\" />\n    <Caption>\n      Place the primary button at the beginning of a button group.\n    </Caption>\n  </Do>\n  <Dont>\n    <img src=\"https://github.com/primer/brand/assets/6951037/cb151d26-2597-45e7-b271-62d64c3c292d\" />\n    <Caption>\n      Don't place the primary button at the end of a button group.\n    </Caption>\n  </Dont>\n</DoDontContainer>\n\n<DoDontContainer>\n  <Do>\n    <img src=\"https://github.com/primer/brand/assets/6951037/97f95652-8802-418a-bf4b-7d9800c038fc\" />\n    <Caption>\n      Stack the buttons vertically when there's not enough horizontal space.\n    </Caption>\n  </Do>\n  <Dont>\n    <img src=\"https://github.com/primer/brand/assets/6951037/ef165552-94e1-4377-a9db-d8e9355af4eb\" />\n    <Caption>\n      Don't stack the buttons horizontally when there's not enough space to\n      avoid text wrapping.\n    </Caption>\n  </Dont>\n</DoDontContainer>\n\n## Options\n\n### Size\n\nThe button group component has two sizes: `medium` and `large`. The `medium` size should be used for most cases. The `large` size should be used when the button group is used in large headings that introduces a page, as in the [Hero](/components/Hero) component.\n\n## Related components\n\n- [Button](/components/Button): To display a button that performs an action.\n- [Link](/components/Link): To display a link that navigates to another page.\n- [Hero](/components/Hero): To display a large heading and a description with a button group.\n- [CTA banner](/components/CTABanner): To draw attention to or create urgency around a user action.\n","parent":{"relativeDirectory":"components/ButtonGroup","name":"index"}},{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/components/ButtonGroup/react.mdx","frontmatter":{"title":"Button group"},"rawBody":"---\ntitle: Button group\ndescription: Use the button group component to group related buttons together.\nstatus: Experimental\nsource: https://github.com/primer/brand/tree/main/packages/react/src/ButtonGroup/ButtonGroup.tsx\nstorybook: '/brand/storybook/?path=/story/components-buttongroup--playground'\n---\n\nimport ComponentLayout from '../../../src/layouts/component-layout'\nexport default ComponentLayout\n\nimport {ButtonSizes} from '@primer/react-brand'\nimport {PropTableValues} from '../../../src/components'\n\n```js\nimport {ButtonGroup, Button} from '@primer/react-brand'\n```\n\n## Examples\n\n### Default\n\nThis is the default variant for the ButtonGroup component. The first button in the group is the primary button and the second button is the secondary button.\n\n```jsx live\n<ButtonGroup>\n  <Button>This is one button</Button>\n  <Button>This is another button</Button>\n</ButtonGroup>\n```\n\n### Sizes\n\nThe ButtonGroup component can be rendered in different sizes in `medium` and `large` sizes. The default size is `medium`.\n\n```jsx live\n<ButtonGroup buttonSize=\"large\">\n  <Button>This is one large button</Button>\n  <Button>This is another large button</Button>\n</ButtonGroup>\n```\n\n### Polymorphism\n\nThe `Button` component can render as a `button` or `a` HTML element. By default, it will render as a `button`.\n\n```jsx live\n<ButtonGroup buttonsAs=\"a\">\n  <Button>This is one link</Button>\n  <Button>This is another link</Button>\n</ButtonGroup>\n```\n\n## Component props\n\n### ButtonGroup\n\n| Name         | Type                                                   |  Default   | Description                             |\n| :----------- | :----------------------------------------------------- | :--------: | :-------------------------------------- |\n| `buttonSize` | <PropTableValues values={ButtonSizes} addLineBreaks /> | `'medium'` | The size variations available in Button |\n| `buttonsAs`  | `'button'`, `'a'`                                      | `'button'` | The HTML variations available in Button |\n","parent":{"relativeDirectory":"components/ButtonGroup","name":"react"}},{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/components/CTABanner/index.mdx","frontmatter":{"title":"CTA banner"},"rawBody":"---\ntitle: CTA banner\ndescription: Use the CTA banner component to draw attention to or create urgency around a user action.\n---\n\nimport ComponentLayout from '../../../src/layouts/component-layout'\nexport default ComponentLayout\n\n## Anatomy\n\n![An image showing the CTA banner anatomy with a heading, a description and a button group.](https://github.com/primer/brand/assets/6951037/a33f3b89-1a4d-4bd3-8533-99b0cd2275e8)\n\n- Heading: The main title of the CTA banner. It should be short and concise.\n- Description: Short text that extends the information provided by the heading.\n- Button group: The call to actions available to users\n\n## Usage\n\nUse the CTA banner to draw attention around the main user actions. The CTA banner should be used sparingly and is typically placed at the bottom of the page to close the user journey,\nmake a short summary of the page, and to persist the main actions. The CTA banner can also be used between other sections on lengthy pages.\n\nThe CTA banner can include primary and secondary actions. These actions are rendered as a [button group](/components/ButtonGroup) and follow the same guidelines as the button group component.\n\nThe actions used in a CTA banner are normally the same as the ones used on the [hero](/components/Hero) component on the top of the page. This repetition provides consistency and helps the user to remember what the main actions are.\n\n<DoDontContainer>\n  <Do>\n    <img\n      src=\"https://github.com/primer/brand/assets/6951037/89acfdad-c39f-4613-9555-6a9661c53845\"\n      alt=\"\"\n    />\n    <Caption>\n      Use the CTA banner on the bottom of the page to close the user journey and\n      reinforce the main actions.\n    </Caption>\n  </Do>\n  <Dont>\n    <img\n      src=\"https://github.com/primer/brand/assets/6951037/f1bec42f-dad0-4eb2-80f9-83ef0a1310ad\"\n      alt=\"\"\n    />\n    <Caption>\n      Don't use the CTA early on in the user journey, use a hero or a section\n      intro component instead.\n    </Caption>\n  </Dont>\n</DoDontContainer>\n\n## Options\n\n### Align\n\nThe CTA banner elements can be aligned to the start or center of the page. By default, the CTA banner is aligned to the start of the page. Use the center alignment if context calls for it. E.g. Use the left alignement if there's a background image on the right side of the page or center align if the CTA banner is placed between two sections that are centered aligned to not break the visual flow.\n\n### Styles\n\n#### Background\n\nThe CTA banner uses a solid background color by default. This is the recommended style for most cases. However, the background can be removed to allow the content to blend with the background of the page.\n\n<DoDontContainer>\n  <Do>\n    <img\n      src=\"https://github.com/primer/brand/assets/6951037/036f540a-b8f6-4ccb-8a1a-b3a27c265308\"\n      alt=\"\"\n    />\n    <Caption>\n      Use the background by default to ensure that the content is legible.\n    </Caption>\n  </Do>\n  <Dont>\n    <img\n      src=\"https://github.com/primer/brand/assets/6951037/8bcc95cc-4d3b-49f5-a74d-f46062f690b5\"\n      alt=\"\"\n    />\n    <Caption>\n      Don't remove the background and keep the shadow, it will make the content\n      hard to read.\n    </Caption>\n  </Dont>\n</DoDontContainer>\n\nAvoid using noisy or textured images that will make the content hard to read. Make sure that the combination of background and foreground guarantees compliance with WCAG contrast guidelines. Use an [online contrast checker](https://webaim.org/resources/contrastchecker/) or a [Figma plugin](/guides/accessibility/tools#contrast-plugin) to test your contrast.\n\n<DoDontContainer>\n  <Do>\n    <img\n      src=\"https://github.com/primer/brand/assets/912236/db46a0b4-5bf9-4024-8788-6227762510a9\"\n      alt=\"\"\n    />\n    <Caption>\n      Use background images or colors that guarantee optimal contrast between\n      the background and the foreground.\n    </Caption>\n  </Do>\n  <Dont>\n    <img\n      src=\"https://github.com/primer/brand/assets/912236/dfc50baa-9b2a-4dc5-8412-20548cf2e7ed\"\n      alt=\"\"\n    />\n    <Caption>\n      Don't use images that interfere with the legibility of the content.\n    </Caption>\n  </Dont>\n</DoDontContainer>\n\n#### Shadow\n\nThe CTA banner has a shadow around the component to give it a sense of depth and separation from the background.\n\n<DoDontContainer>\n  <Do>\n    <img\n      src=\"https://github.com/primer/brand/assets/912236/798a3355-252c-4745-8692-267c9a16d45f\"\n      alt=\"\"\n    />\n    <Caption>\n      Remove the shadow and the background to diminish the sense of depth and\n      separation from the background or to allow the content to blend with the\n      background of the page.\n    </Caption>\n  </Do>\n  <Dont>\n    <img\n      src=\"https://github.com/primer/brand/assets/912236/336f8e27-44e9-48a5-b308-a9686aa03484\"\n      alt=\"\"\n    />\n    <Caption>\n      Don't use the shadow and the background together if you want the content\n      to blend with the background and the sections that sorround the CTA\n      banner.\n    </Caption>\n  </Dont>\n</DoDontContainer>\n\n#### Border\n\nThe CTA banner can render a border around the component giving further separation between the foreground and background. This is especially useful when there is no shadow present on the background.\n\n<DoDontContainer>\n  <Do>\n    <img\n      src=\"https://github.com/primer/brand/assets/912236/583528ad-e3ab-4bf1-a34a-e0f9bf17d0a1\"\n      alt=\"\"\n    />\n    <Caption>\n      Use the border only when there is no shadow present on the background.\n    </Caption>\n  </Do>\n  <Dont>\n    <img\n      src=\"https://github.com/primer/brand/assets/912236/845ee118-3575-4db8-b7ea-1ac248678005\"\n      alt=\"\"\n    />\n    <Caption>\n      Don't use the border when there is a shadow present on the background. The\n      shadow will provide enough separation between the foreground and\n      background.\n    </Caption>\n  </Dont>\n</DoDontContainer>\n\n## Related components\n\n- [Hero](/components/Hero): To display a large heading and a description with a button group.\n- [Section intro](/components/SectionIntro): To provide a title, description and a link to a new section in the page.\n- [River](/components/River): To display a list of content items with a visual asset.\n","parent":{"relativeDirectory":"components/CTABanner","name":"index"}},{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/components/CTABanner/react.mdx","frontmatter":{"title":"CTA banner"},"rawBody":"---\ntitle: CTA banner\nstatus: Experimental\nfigma: https://www.figma.com/file/BJ95AjraesmRCWsKA013GS/Primer-Brand?node-id=539%3A14285&t=RJEWZhVUtrRQ0pKh-0\nsource: https://github.com/primer/brand/blob/main/packages/react/src/CTABanner/CTABanner.tsx\nstorybook: '/brand/storybook/?path=/story/components-ctabanner--playground'\ndescription: Use the CTA banner component to draw attention to or create urgency around a user action.\n---\n\nimport {Label} from '@primer/react'\nimport ComponentLayout from '../../../src/layouts/component-layout'\nexport default ComponentLayout\n\n```js\nimport {CTABanner, Button} from '@primer/react-brand'\n```\n\n## Examples\n\n### Default\n\n```jsx live\n<CTABanner>\n  <CTABanner.Heading>\n    Where the most ambitious teams build great things\n  </CTABanner.Heading>\n  <CTABanner.Description>\n    Lorem ipsum dolor sit amet, consectetur adipiscing elit. In sapien sit\n    ullamcorper id. Aliquam luctus sed turpis felis nam pulvinar risus\n    elementum.\n  </CTABanner.Description>\n  <CTABanner.ButtonGroup>\n    <Button>Primary Action</Button>\n    <Button>Secondary Action</Button>\n  </CTABanner.ButtonGroup>\n</CTABanner>\n```\n\n### Alignment\n\nThe content alignment can be changed using the `align` prop on the root `CTABanner`. This can be configured to either `start` or `center`.\n\n```jsx live\n<CTABanner align=\"center\">\n  <CTABanner.Heading>\n    Where the most ambitious teams build great things\n  </CTABanner.Heading>\n  <CTABanner.Description>\n    Lorem ipsum dolor sit amet, consectetur adipiscing elit. In sapien sit\n    ullamcorper id. Aliquam luctus sed turpis felis nam pulvinar risus\n    elementum.\n  </CTABanner.Description>\n  <CTABanner.ButtonGroup>\n    <Button>Primary Action</Button>\n    <Button>Secondary Action</Button>\n  </CTABanner.ButtonGroup>\n</CTABanner>\n```\n\n### Optional border\n\nA border can be provided using the `hasBorder` prop on the root `<CTABanner>`. This will render a border around the CTABanner component giving further separation between the foreground and background. Especially when there is no shadow present on the background.\n\n```jsx live\n<CTABanner hasBorder>\n  <CTABanner.Heading>\n    Where the most ambitious teams build great things\n  </CTABanner.Heading>\n  <CTABanner.Description>\n    Lorem ipsum dolor sit amet, consectetur adipiscing elit. In sapien sit\n    ullamcorper id. Aliquam luctus sed turpis felis nam pulvinar risus\n    elementum.\n  </CTABanner.Description>\n  <CTABanner.ButtonGroup>\n    <Button>Primary Action</Button>\n    <Button>Secondary Action</Button>\n  </CTABanner.ButtonGroup>\n</CTABanner>\n```\n\n### Optional background\n\nA background can be removed using the `hasBackground` prop on the root `<ComparisonTable>`. This will render the CTABanner component without a background allowing it to blend in with its parent.\n\n```jsx live\n<CTABanner hasBackground={false} hasShadow={false}>\n  <CTABanner.Heading>\n    Where the most ambitious teams build great things\n  </CTABanner.Heading>\n  <CTABanner.Description>\n    Lorem ipsum dolor sit amet, consectetur adipiscing elit. In sapien sit\n    ullamcorper id. Aliquam luctus sed turpis felis nam pulvinar risus\n    elementum.\n  </CTABanner.Description>\n  <CTABanner.ButtonGroup>\n    <Button>Primary Action</Button>\n    <Button>Secondary Action</Button>\n  </CTABanner.ButtonGroup>\n</CTABanner>\n```\n\n### Optional shadow\n\nThe shadow can be removed using the `hasShadow` prop on the root `CTABanner`. This will render the component without the background shadow.\n\n```jsx live\n<CTABanner hasShadow={false}>\n  <CTABanner.Heading>\n    Where the most ambitious teams build great things\n  </CTABanner.Heading>\n  <CTABanner.Description>\n    Lorem ipsum dolor sit amet, consectetur adipiscing elit. In sapien sit\n    ullamcorper id. Aliquam luctus sed turpis felis nam pulvinar risus\n    elementum.\n  </CTABanner.Description>\n  <CTABanner.ButtonGroup>\n    <Button>Primary Action</Button>\n    <Button>Secondary Action</Button>\n  </CTABanner.ButtonGroup>\n</CTABanner>\n```\n\n### Shadow color customization\n\nThe default colors can be customized through dedicated CSS variables.\n\n| Name                                   | Default Light                    | Default Dark                     |\n| :------------------------------------- | :------------------------------- | :------------------------------- |\n| `--brand-CTABanner-shadow-color-start` | `--base-color-scale-green-5-hsl` | `--base-color-scale-green-2-hsl` |\n| `--brand-CTABanner-shadow-color-end`   | `--base-color-scale-blue-5-hsl`  | `--base-color-scale-blue-3-hsl`  |\n\n```javascript live noinline\nconst App = () => {\n  const designTokenOverrides = `\n  .custom-colors[data-color-mode='dark'] {\n\n    /*\n     * Modify the value of these tokens.\n     * Remember to apply light mode equivalents if you're enabling theme switching.\n     */\n    --brand-CTABanner-shadow-color-start: var(--base-color-scale-purple-5-hsl);\n    --brand-CTABanner-shadow-color-end: var(--base-color-scale-red-5-hsl);\n\n  }\n`\n  return (\n    <ThemeProvider colorMode=\"dark\" className=\"custom-colors\">\n      <style>{designTokenOverrides}</style>\n      <CTABanner>\n        <CTABanner.Heading>\n          Where the most ambitious teams build great things\n        </CTABanner.Heading>\n        <CTABanner.Description>\n          Lorem ipsum dolor sit amet, consectetur adipiscing elit. In sapien sit\n          ullamcorper id. Aliquam luctus sed turpis felis nam pulvinar risus\n          elementum.\n        </CTABanner.Description>\n        <CTABanner.ButtonGroup>\n          <Button>Primary Action</Button>\n          <Button>Secondary Action</Button>\n        </CTABanner.ButtonGroup>\n      </CTABanner>\n    </ThemeProvider>\n  )\n}\n\nrender(<App />)\n```\n\n## Component props\n\n### CTABanner <Label>Required</Label>\n\nThe first row in a table is automatically styled as a table header row.\n\n| name            | type                       | default     | required | description                                                  |\n| --------------- | -------------------------- | ----------- | -------- | ------------------------------------------------------------ |\n| `children`      | `ReactNode`, `ReactNode[]` | `undefined` | `true`   | Content to include within the banner component               |\n| `align`         | `start`, `center`          | `start`     | `true`   | The layout applied to the content wihin the banner component |\n| `hasBorder`     | `boolean`                  | `false`     | `false`  | A flag used to provide a border to the banner component      |\n| `hasShadow`     | `boolean`                  | `true`      | `false`  | A flag used to provide a shadow to the banner component      |\n| `hasBackground` | `boolean`                  | `true`      | `false`  | A flag used to add a background to the banner component      |\n| `className`     | `string`                   |             | `false`  | CTABanner custom class                                       |\n\n### CTABanner.Heading\n\nOptional node that can be used to provide a heading for the banner.\n\n| name        | type                               | default   | required | description                                                           |\n| ----------- | ---------------------------------- | --------- | -------- | --------------------------------------------------------------------- |\n| `className` | `string`                           |           | `false`  | Custom class name for the ComparisonTable.Heading component           |\n| `children`  | `ReactNode`, `ReactNode[]`         | undefined | `true`   | Content to be displayed inside the ComparisonTable.Heading component. |\n| `as`        | `h1`, `h2`, `h3`, `h4`, `h5`, `h6` | `h3`      | `false`  | True symantic element to be use as the text wrapper. cell.            |\n| `size`      | `1`, `2`, `3`, `4`, `5`, `6`       | `2`       | `false`  | Content size to be displayed inside the column                        |\n\n### CTABanner.Description\n\nOptional node that can be used to provide a description for the banner.\n\n| name       | type                       | default   | required | description                                         |\n| ---------- | -------------------------- | --------- | -------- | --------------------------------------------------- |\n| `children` | `ReactNode`, `ReactNode[]` | undefined | `true`   | Content to be displayed inside the banner component |\n\n`id`, `className` and `ref` are forwarded by default to all children.\n\n### CTABanner.ButtonGroup\n\nOptional node that can be used to provide a description for the banner.\n\n| name         | type                     | default   | required | description                                             |\n| ------------ | ------------------------ | --------- | -------- | ------------------------------------------------------- |\n| `className`  | `string`                 | undefined | `false`  | Sets a custom class on the root element                 |\n| `children`   | `<Button>`, `<Button>[]` | undefined | `true`   | The buttons to be displayed within the group            |\n| `buttonSize` | `medium`, `large`        | `large`   | `false`  | The size of the buttons in the group                    |\n| `buttonsAs`  | `ReactElement`           |           | `false`  | The semantic element that the button will be created as |\n\n`id`, `className` and `ref` are forwarded by default to all children.\n\n## Design tokens\n\n| css                                    | js                                   |\n| -------------------------------------- | ------------------------------------ |\n| `--brand-CTABanner-shadow-color-start` | `brand.CTABanner.shadow.color.start` |\n| `--brand-CTABanner-shadow-color-end`   | `brand.CTABanner.shadow.color.end`   |\n","parent":{"relativeDirectory":"components/CTABanner","name":"react"}},{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/components/CTAForm/index.mdx","frontmatter":{"title":"CTA form"},"rawBody":"---\ntitle: CTA form\ndescription: Use CTA form to capture user input and call to action button.\n---\n\nimport ComponentLayout from '../../../src/layouts/component-layout'\nexport default ComponentLayout\n\n## Anatomy\n\n![An image displaying a the CTA form anatomy, with a label on top of an input form, followed by a CTA button and optional checkbox underneath the input.](https://github.com/primer/brand/assets/6951037/d018c27f-847d-4011-b920-d15acb1e5efc)\n\n- Label: Short text that describes the required input form.\n- Text input: Single-line text field\n- Action: Call-to-action button that corresponds after completing the input form.\n- Checkbox: An optional checkbox to request additional behavior.\n\n## Usage\n\nThe CTA form is designed to capture user input and call to actions on a website. It serves as an efficient tool to prompt user engagement and action. While it can be placed throughout the page, it is encouraged to be positioned at the bottom to conclude the user journey, summarize key information, and encourage users to take action.\n\nThe CTA form presents a concise label, prompting users to provide specific input in the form field. Once users enter the required information, they can trigger the call-to-action through the button. Additionally, the CTA form supports an optional checkbox to seek additional user behavior or acknowledge certain terms.\n\nBy adopting the same guidelines as the respective [text input](/components/TextInput) component, [button](/components/Button) component, and [checkbox](/components/Checkbox) component, the CTA form ensures consistency in design and enhances user familiarity with the interface.\n\nWe recommend the CTA form over the [CTA banner](/components/CTABanner) when the main action for a user to take is to submit a form (e.g subscribe to a newsletter) vs taking actions (sign in or bring the user to a pricing page).\n\n<DoDontContainer stacked>\n  <Do>\n    <img src=\"https://github.com/primer/brand/assets/6951037/220b211e-f61f-4afb-83de-6a58980cdd6f\" />\n    <Caption>\n      Place the CTA form near the end of the page to conclude the user journey\n      and encourage users to take action.\n    </Caption>\n  </Do>\n  <Dont>\n    <img src=\"https://github.com/primer/brand/assets/6951037/3f202055-75ae-44be-82ca-f5388d0d3a1c\" />\n    <Caption>\n      Don't place the CTA Form early on in the user journey. Use the Hero\n      instead for early on.\n    </Caption>\n  </Dont>\n</DoDontContainer>\n\n### Setting Context\n\nKeep the CTA Form simple and intuitive to minimize friction and encourage user engagement. Ensure there is enough context surrounding the component. Utilize the label as a description of the form input.\n\n<DoDontContainer stacked>\n  <Do>\n    <img src=\"https://github.com/primer/brand/assets/6951037/04aeb96e-2c24-413e-94be-3608a0e41ec7\" />\n    <Caption>\n      Include context in areas surrounding the CTA Form to encourage user\n      engagement.\n    </Caption>\n  </Do>\n  <Dont>\n    <img src=\"https://github.com/primer/brand/assets/6951037/f0daf653-30ef-42d1-afac-354959c112c7\" />\n    <Caption>\n      Don't use the CTA Form without context. The label should be used to\n      describe the input, not to provide context.\n    </Caption>\n  </Dont>\n</DoDontContainer>\n\n### Component length\n\nWhen implementing CTA form, it's important to consider the length of the input field in order to maintain consistency and enhance user familiarity with the interface. Keeping the string length (width) of the component relative to the expected input is a recommended practice. Pair the component with additional information or context instead of spanning in wide viewports.\n\n<DoDontContainer stacked>\n  <Do>\n    <img src=\"https://github.com/primer/brand/assets/6951037/ba970b9c-cef8-4cf3-987f-15a11d6e27d2\" />\n    <Caption>\n      Keep the string length (width) of the component relative to the expected\n      input.\n    </Caption>\n  </Do>\n  <Dont>\n    <img src=\"https://github.com/primer/brand/assets/6951037/199c7caa-e605-4f53-9f41-e3d2460f7c55\" />\n    <Caption>Don't over extend or compress the CTA form when possible.</Caption>\n  </Dont>\n</DoDontContainer>\n\n## Options\n\n### Checkbox\n\nUse the checkbox property in the CTA form to prompt additional user behavior or seek acknowledgment– examples include to gather consent, confirm agreement to terms, or request optional actions.\n\nIt is crucial to provide a clear description of the checkbox's purpose and hyperlink to relevant resources. When using the checkbox, completion of the checkbox must be a requirement (not optional) to proceed with the CTA.\n\n<DoDontContainer>\n  <Do>\n    <img src=\"https://github.com/primer/brand/assets/6951037/0db61c2b-ad25-4dee-9c6f-eea294315d22\" />\n    <Caption>\n      Use short and concise text for the checkbox and inline links to relevant\n      resources.\n    </Caption>\n  </Do>\n  <Dont>\n    <img src=\"https://github.com/primer/brand/assets/6951037/59f8566f-8679-46b3-8b10-148c9fec104a\" />\n    <Caption>Don't use lengthy text or unstlyed links.</Caption>\n  </Dont>\n</DoDontContainer>\n\n## Related components\n\n- [Button](/components/Button): To display a button that preforms an action.\n- [Text input](/components/TextInput): To create an input form for single-line text field.\n- [Checkbox](/components/Checkbox): To select options or acknowledge information.\n- [CTA Banner](/components/CTABanner): To draw attention to or create urgency around a user action.\n","parent":{"relativeDirectory":"components/CTAForm","name":"index"}},{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/components/CTAForm/react.mdx","frontmatter":{"title":"CTA form"},"rawBody":"---\ntitle: CTA form\nstatus: Experimental\nsource: https://github.com/primer/brand/tree/main/packages/react/src/CTAForm/CTAForm.tsx\nfigma: 'https://www.figma.com/file/BJ95AjraesmRCWsKA013GS/Primer-Brand?node-id=1377%3A30754'\nstorybook: '/brand/storybook/?path=/story/components-CTAForm--playground'\ndescription: Use the CTA form component to create a form that is used to collect minimal information from users.\n---\n\nimport {\n  CTAForm,\n  InlineLink,\n  FormControl,\n  TextInput,\n  Checkbox,\n  Text,\n} from '@primer/react-brand'\n\nimport ComponentLayout from '../../../src/layouts/component-layout'\nexport default ComponentLayout\n\n```js\nimport {CTAForm} from '@primer/react-brand'\n```\n\n## Examples\n\n### Default\n\n```jsx live\n<CTAForm>\n  <CTAForm.Input>\n    <FormControl required>\n      <FormControl.Label>Your work email address</FormControl.Label>\n      <TextInput placeholder=\"name\" />\n    </FormControl>\n  </CTAForm.Input>\n  <CTAForm.Confirm>\n    <FormControl required>\n      <FormControl.Label>\n        <Text size=\"300\" variant=\"muted\">\n          I agree to the{' '}\n          <InlineLink href=\"www.github.com\">Privacy Policy</InlineLink> and{' '}\n          <InlineLink href=\"www.github.com\">Terms of Service</InlineLink>\n        </Text>\n      </FormControl.Label>\n      <Checkbox name=\"confirm\" />\n    </FormControl>\n  </CTAForm.Confirm>\n  <CTAForm.Action>Subscribe</CTAForm.Action>\n</CTAForm>\n```\n\n### Component without confirm block\n\n```jsx live\n<CTAForm>\n  <CTAForm.Input>\n    <FormControl required>\n      <FormControl.Label>Your work email address</FormControl.Label>\n      <TextInput placeholder=\"name\" />\n    </FormControl>\n  </CTAForm.Input>\n  <CTAForm.Action>Subscribe</CTAForm.Action>\n</CTAForm>\n```\n\n### Using onChange & onSubmit handlers\n\n```jsx live\n<CTAForm onSubmit={() => alert('onSubmit event triggered')}>\n  <CTAForm.Input onChange={() => console.log('onChange event triggered')}>\n    <FormControl required>\n      <FormControl.Label>Your work email address</FormControl.Label>\n      <TextInput placeholder=\"name\" />\n    </FormControl>\n  </CTAForm.Input>\n  <CTAForm.Action>Subscribe</CTAForm.Action>\n</CTAForm>\n```\n\n## Component props\n\n### CTAForm\n\n| name        | type     | default     | required | description                                                        |\n| ----------- | -------- | ----------- | -------- | ------------------------------------------------------------------ |\n| `action`    | `string` | `undefined` | `false`  | The URL that processes the form submission                         |\n| `method`    | `string` | `undefined` | `false`  | The HTTP method to submit the form with                            |\n| `target`    | `string` | `undefined` | `false`  | Indicates where to display the response after submitting the form. |\n| `className` | `string` | `undefined` | `false`  | Sets a custom class                                                |\n\nAdditional props can be passed to the `<form>` element. [See MDN for a list of props](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form) accepted by the `<form>` element.\n\n### CTAForm.Input\n\n| name        | type     | default     | required | description         |\n| ----------- | -------- | ----------- | -------- | ------------------- |\n| `className` | `string` | `undefined` | `false`  | Sets a custom class |\n\n### CTAForm.Confirm\n\n| name        | type     | default     | required | description         |\n| ----------- | -------- | ----------- | -------- | ------------------- |\n| `className` | `string` | `undefined` | `false`  | Sets a custom class |\n\n### CTAForm.Action\n\n| name        | type     | default     | required | description         |\n| ----------- | -------- | ----------- | -------- | ------------------- |\n| `className` | `string` | `undefined` | `false`  | Sets a custom class |\n\n<!-- TODO: Add all button properties here -->\n","parent":{"relativeDirectory":"components/CTAForm","name":"react"}},{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/components/Card/index.mdx","frontmatter":{"title":"Card"},"rawBody":"---\ntitle: Card\ndescription: Use the card component to display information in a compact way and link to other internal pages.\n---\n\nimport CustomVideoPlayer from '../../../src/components/custom-video-player'\nimport ComponentLayout from '../../../src/layouts/component-layout'\nexport default ComponentLayout\n\n![An image showing a card with a Copilot Octicon.](https://github.com/primer/brand/assets/6951037/5bb4e3dd-8f53-44c5-a5ed-987c732eaf8f)\n\n## Usage\n\nUse cards to summarize the central idea behind some content and provide a link to its corresponding detailed resource. It is important to present the information in a concise manner, avoiding lengthy and complex descriptions.\n\nCards should always be used in groups of two or more related concepts.\n\n<DoDontContainer>\n  <Do>\n    <img src=\"https://github.com/primer/brand/assets/6951037/139deb0e-0143-4051-a8c8-49b854b58727\" />\n    <Caption>Use cards in groups to display related information.</Caption>\n  </Do>\n  <Dont>\n    <img src=\"https://github.com/primer/brand/assets/6951037/1f009b98-01b8-4cb3-af30-83ccac31c8c9\" />\n    <Caption>\n      Don't use isolated cards. Consider using a CTABanner instead.\n    </Caption>\n  </Dont>\n</DoDontContainer>\n\n### Stacked\n\nCards should be stacked to display a list of items that are related to each other. If displaying a visual asset, do so for all cards to achieve a visually balanced layout. The visual asset should be the same type for all cards, either an icon or an image.\n\nFor a better visual experience, we recommend using similar length size for the heading and description in all stacked cards.\n\n<DoDontContainer>\n  <Do>\n    <img src=\"https://github.com/primer/brand/assets/6951037/28b8dbfa-9ed5-40ba-b1a3-d501ac3be4b8\" />\n    <Caption>\n      Use the same type of visual asset for all cards and a similar length size\n      for the content.\n    </Caption>\n  </Do>\n  <Dont>\n    <img src=\"https://github.com/primer/brand/assets/6951037/6d494165-312e-4e84-94df-199d1d82fd50\" />\n    <Caption>\n      Don't use different length sizes for the title or the description.\n    </Caption>\n  </Dont>\n</DoDontContainer>\n\nWhen using an image as the visual asset, we recommend using the same aspect ratio for all images. This will create a more balanced visual experience.\n\n<DoDontContainer>\n  <Do>\n    <img src=\"https://github.com/primer/brand/assets/6951037/1a6decfc-a840-440b-8ec7-bf25b7716711\" />\n    <Caption>\n      Use the same image ratio and a similar length sizes for the content.\n    </Caption>\n  </Do>\n  <Dont>\n    <img src=\"https://github.com/primer/brand/assets/6951037/cffafadf-2e9d-47f0-a6db-6f89fb48fabe\" />\n    <Caption>\n      Don't use different image ratios and a different length size for the\n      content.\n    </Caption>\n  </Dont>\n</DoDontContainer>\n\nCards typically appear in groups of three or four in desktop viewports. For smaller viewports, or when more than four cards are needed, we recommend stacking the cards vertically. You can use the [Grid](/components/Grid) or the [Stack](/components/Stack) component to achieve this.\n\n<div>\n  <CustomVideoPlayer\n    width=\"100%\"\n    src=\"https://github.com/primer/brand/assets/6951037/a9ceec00-59c9-4471-a274-f516790f43c9\"\n  />\n  <Caption>\n    Stack cards vertically so that the content has enough line length.\n  </Caption>\n</div>\n\n## Anatomy\n\n![An image showing the card anatomy with an icon as a visual asset, a heading, a description and a CTA text in a vertical order.](https://github.com/primer/brand/assets/6951037/2ae395d0-227d-4794-8e0b-f709a431e636)\n\n### Visual asset\n\nThe visual asset is optional and can be an image or an icon. It can be used to provide a visual cue to the user about the content of the card. To avoid visual noise, we recommend using only one icon or image, but not both in the same card.\n\n![An image showing two cards, one with an Icon and another with an Image as the visual assets options.](https://github.com/primer/brand/assets/6951037/21623e82-2ea5-499a-a78f-82b09915af16)\n\n<DoDontContainer>\n  <Do>\n    <img src=\"https://github.com/primer/brand/assets/6951037/e5494fd3-76b1-45fd-8aa7-4acfe834b159\" />\n    <Caption>Use only one visual asset per card.</Caption>\n  </Do>\n  <Dont>\n    <img src=\"https://github.com/primer/brand/assets/6951037/bc29b10b-ee0b-421d-8bc4-0a95fad3791b\" />\n    <Caption>Don't use both icon and image as the visual asset.</Caption>\n  </Dont>\n</DoDontContainer>\n\n### Label\n\nThe label can be used to indicate the type of content or its status. For example, use it to indicate that the content is `new` or that it is a `beta` feature. The label is optional and can be used along with a visual asset.\n\n![An image showing two cards, one with a Label and another one with Label and Icon.](https://github.com/primer/brand/assets/6951037/3e16bb51-9e19-4a98-a9c2-e289d4bf540c)\n\n### Heading\n\nThe heading is the main title of the card. It should be short and concise.\n\n### Description\n\nThe description is an optional short text that extends the information provided by the heading.\n\n### Call to action\n\nThe call to action label indicates the action or resource the card links to. It defaults to \"Learn more\".\n\n## Options\n\n### Border\n\nCard offers a variation with a border. Border is disabled by default. \n\n## Related components\n\n- [Pillar](/components/Pillar): To display related content with less visual emphasis.\n- [River](/components/River): To display a list of content items with a visual asset.\n- [CTABanner](/components/CTABanner): To display a single block of content to draw attention or create urgency around a user action.\n- [UnorderedList](/components/UnorderedList) or the [OrderedList](/components/OrderedList): to display a list of plain content items.\n","parent":{"relativeDirectory":"components/Card","name":"index"}},{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/components/Card/react.mdx","frontmatter":{"title":"Card"},"rawBody":"---\ntitle: Card\nstatus: Experimental\nsource: https://github.com/primer/brand/tree/main/packages/react/src/Card/Card.tsx\nstorybook: '/brand/storybook/?path=/story/components-card--default'\ndescription: Use the card component to display information in a compact way and link to other internal pages.\na11yReviewed: true\n---\n\nimport ComponentLayout from '../../../src/layouts/component-layout'\nexport default ComponentLayout\n\nimport {LabelColors, CardIconColors} from '@primer/react-brand'\nimport {IconColors} from '@primer/react-brand'\nimport {PropTableValues} from '../../../src/components'\nimport {CopilotIcon, RocketIcon, GitBranchIcon} from '@primer/octicons-react'\n\n```js\nimport {Card} from '@primer/react-brand'\n```\n\n## Examples\n\n### Default\n\nThe default card displays a heading and description. The link text defaults to `Read more`, but can be customized using the `label` prop.\n\n```jsx live\n<Card href=\"https://github.com\">\n  <Card.Heading>Collaboration is the key to DevOps success</Card.Heading>\n  <Card.Description>\n    Everything you need to know about getting started with GitHub Actions.\n  </Card.Description>\n</Card>\n```\n\n### Minimal\n\nThe `minimal` card variant applies alternative presentation to the default card.\n\n```jsx live\n<Card href=\"https://github.com\" variant=\"minimal\">\n  <Card.Heading>Collaboration is the key to DevOps success</Card.Heading>\n  <Card.Description>\n    Everything you need to know about getting started with GitHub Actions.\n  </Card.Description>\n</Card>\n```\n\n### Cta text\n\nThe cta text defaults to `Learn more` and can be customized using the `ctaText` component.\n\n```jsx live\n<Card ctaText=\"Discover how\" href=\"https://github.com\">\n  <Card.Heading>Collaboration is the key to DevOps success</Card.Heading>\n  <Card.Description>\n    Everything you need to know about getting started with GitHub Actions.\n  </Card.Description>\n</Card>\n```\n\n### Border\n\nA border can be provided using the `hasBorder` prop. This will render a border around the Card component giving further separation between the foreground and background. Especially when there is no shadow present on the background.\n\n```jsx live\n<Card href=\"https://github.com\" hasBorder>\n  <Card.Heading>Code search & code view</Card.Heading>\n  <Card.Label>Limited</Card.Label>\n  <Card.Description>\n    Enables you to rapidly search, navigate, and understand code, right from\n    GitHub.com.\n  </Card.Description>\n</Card>\n```\n\n### Icon\n\nYou can add an `icon` to enhance the visual context. We recommend using an [Octicon](https://primer.style/design/foundations/icons). The `Icon` can be customized using the `color` prop and used with or without a background color by using the `hasBackground` prop.\n\n```jsx live\n<Card href=\"https://github.com\">\n  <Card.Icon icon={<CopilotIcon />} color=\"purple\" hasBackground />\n  <Card.Heading>Code search & code view</Card.Heading>\n  <Card.Description>\n    Enables you to rapidly search, navigate, and understand code, right from\n    GitHub.com.\n  </Card.Description>\n</Card>\n```\n\n### Label\n\nUse the `Label` to add metadata to the `Card`. The `Label` is optional and can be used to indicate the status of the content. The `Label` can be customized using the `color` prop.\n\n```jsx live\n<Card href=\"https://github.com\">\n  <Card.Heading>Code search & code view</Card.Heading>\n  <Card.Label>Limited</Card.Label>\n  <Card.Description>\n    Enables you to rapidly search, navigate, and understand code, right from\n    GitHub.com.\n  </Card.Description>\n</Card>\n```\n\n### Icons and Labels\n\nCombine `Icon` and `Label` when you need to add more metadata or context to the `Card`.\n\n```jsx live\n<Card href=\"https://github.com\">\n  <Card.Icon icon={<CopilotIcon />} color=\"green\" hasBackground />\n  <Card.Label color=\"blue-purple\">Beta</Card.Label>\n  <Card.Heading>Code search & code view</Card.Heading>\n  <Card.Description>\n    Enables you to rapidly search, navigate, and understand code, right from\n    GitHub.com.\n  </Card.Description>\n</Card>\n```\n\n### Image\n\nUse the `Image` component to add an image to the `Card`. The `Image` component is optional and provides a visual context to the `Card`.\n\n```jsx live\n<Card href=\"https://github.com\">\n  <Card.Image\n    src=\"https://via.placeholder.com/600x400/d3d9df/d3d9df.png\"\n    alt=\"placeholder, blank area with an gray background color\"\n    aspectRatio=\"16:9\"\n  />\n  <Card.Heading>Code search & code view</Card.Heading>\n  <Card.Description>\n    Enables you to rapidly search, navigate, and understand code, right from\n    GitHub.com.\n  </Card.Description>\n</Card>\n```\n\n### Torchlight effect\n\n`Card` components in dark mode feature a unique \"torchlight\" effect.\n\nThe color of the lit area corrosponds to the nearest active, primary accent color. The color can modified by changing the value of the respective CSS variable.\n\n```jsx live\n<ThemeProvider colorMode=\"dark\">\n  <Box padding=\"spacious\" backgroundColor=\"default\">\n    <Stack direction=\"horizontal\" padding=\"none\">\n      <Card href=\"https://github.com\">\n        <Card.Icon icon={<CopilotIcon />} color=\"pink\" hasBackground />\n        <Card.Heading>Code search & code view</Card.Heading>\n        <Card.Description>\n          Enables you to rapidly search, navigate, and understand code, right\n          from GitHub.com.\n        </Card.Description>\n      </Card>\n      <Card\n        href=\"https://github.com\"\n        style={{\n          ['--brand-color-accent-primary']: 'var(--base-color-scale-lime-2)',\n        }}\n      >\n        <Card.Icon icon={<ZapIcon />} color=\"lime\" hasBackground />\n        <Card.Heading>Code search & code view</Card.Heading>\n        <Card.Description>\n          Enables you to rapidly search, navigate, and understand code, right\n          from GitHub.com.\n        </Card.Description>\n      </Card>\n    </Stack>\n  </Box>\n</ThemeProvider>\n```\n\n### Image and Label\n\nCombine `Image` and `Label` when you need to add more metadata or context to the `Card`. Use either the `Icon` or `Image` as the primary visual context, but not both.\n\n```jsx live\n<Card href=\"https://github.com\">\n  <Card.Image\n    src=\"https://via.placeholder.com/600x400/d3d9df/d3d9df.png\"\n    alt=\"placeholder, blank area with an gray background color\"\n  />\n  <Card.Heading>Code search & code view</Card.Heading>\n  <Card.Label color=\"blue\">Beta</Card.Label>\n  <Card.Description>\n    Enables you to rapidly search, navigate, and understand code, right from\n    GitHub.com.\n  </Card.Description>\n</Card>\n```\n\n### Stacked cards\n\nUse the `Stack` component to stack multiple cards horizontally or vertically.\n\n```jsx live\n<Stack\n  direction=\"horizontal\"\n  alignItems=\"center\"\n  justifyContent=\"center\"\n  gap=\"normal\"\n>\n  <Card href=\"https://github.com\">\n    <Card.Icon icon={<CopilotIcon />} color=\"indigo\" hasBackground />\n    <Card.Heading>Heading</Card.Heading>\n    <Card.Description>\n      Everything you need to know about getting started with GitHub Actions.\n    </Card.Description>\n  </Card>\n  <Card href=\"https://github.com\">\n    <Card.Icon icon={<RocketIcon />} color=\"purple\" hasBackground />\n    <Card.Heading>Heading</Card.Heading>\n    <Card.Description>\n      Everything you need to know about getting started with GitHub Actions.\n    </Card.Description>\n  </Card>\n  <Card href=\"https://github.com\">\n    <Card.Icon icon={<GitBranchIcon />} color=\"teal\" hasBackground />\n    <Card.Heading>Heading</Card.Heading>\n    <Card.Description>\n      Everything you need to know about getting started with GitHub Actions.\n    </Card.Description>\n  </Card>\n</Stack>\n```\n\n## Component props\n\n### Card\n\n| name               | type      | default     | required | description                                                      |\n| ------------------ | --------- | ----------- | -------- | ---------------------------------------------------------------- |\n| `ctaText`          | `string`  | `Read more` | `false`  | Label of the link at the bottom of the card                      |\n| `disableAnimation` | `boolean` | `false`     | `false`  | A flag to disable the default hover animation effect of the card |\n| `hasBorder`        | `boolean` | `false`     | `false`  | A flag used to provide a border to the card                      |\n| `href`             | `string`  |             | `true`   | URL to the card content                                          |\n\n### Card.Image\n\nForwards all the props from the [Image component](/components/Image), including `src`, `alt`, and `aspecRatio`.\n\n### Card.Icon\n\n| name            | type                                                      | default   | required | description                                  |\n| --------------- | --------------------------------------------------------- | --------- | -------- | -------------------------------------------- |\n| `icon`          | React.Node                                                |           | `true`   | Octicon                                      |\n| `color`         | <PropTableValues values={CardIconColors} addLineBreaks /> | `default` | `false`  | The color of the icon                        |\n| `hasBackground` | boolean                                                   | `false`   | `false`  | Adds a filled colored background to the icon |\n\n### Card.Label\n\n| name    | type                                                   | default   | required | description            |\n| ------- | ------------------------------------------------------ | --------- | -------- | ---------------------- |\n| `color` | <PropTableValues values={LabelColors} addLineBreaks /> | `default` | `false`  | The color of the label |\n\n### Card.Heading\n\n| name        | type                         | default     | required | description                                           |\n| ----------- | ---------------------------- | ----------- | -------- | ----------------------------------------------------- |\n| `as`        | `h2`, `h3`, `h4`, `h5`, `h6` | `h3`        | `false`  |                                                       |\n| `className` | `string`                     |             | `false`  | Custom class name for the heading component           |\n| `children`  | `ReactNode`, `ReactNode[]`   | `undefined` | `true`   | Content to be displayed inside the heading component. |\n\nForwards all the props from the [Heading component](/components/Heading), including `as`, `size`, and `weight`.\n\n### Card.Description\n\n| name       | type                       | default     | required | description                                         |\n| ---------- | -------------------------- | ----------- | -------- | --------------------------------------------------- |\n| `children` | `ReactNode`, `ReactNode[]` | `undefined` | `true`   | Content to be displayed inside the pillar component |\n\n`id`, `className` and `ref` are forwarded by default to all children.\n","parent":{"relativeDirectory":"components/Card","name":"react"}},{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/components/Checkbox/index.mdx","frontmatter":{"title":"Checkbox"},"rawBody":"---\ntitle: Checkbox\ndescription: Use the checkbox component to select one or more options of a limited number of choices.\n---\n\nimport ComponentLayout from '../../../src/layouts/component-layout'\nexport default ComponentLayout\n\n## Anatomy\n\n![An image displaying a checkbox with a checkbox and label.](https://github.com/primer/brand/assets/912236/a3c10059-1c76-4d51-8e83-0be9a7b8588b)\n\n- Checkbox: A selection control.\n- Label: A description for the checkbox.\n\n## Usage\n\nUse checkboxes to allow users to select multiple items from a list of individual items, or to mark one individual item as selected. Unlike the [Radio](/components/Radio) component or [Select](/components/Select) component, Checkbox does not restrict users to choosing just a single option.\n\nCheckbox labels should be descriptive and concise. Write labels in sentence case.\n\n<DoDontContainer>\n  <Do>\n    <img src=\"https://github.com/primer/brand/assets/912236/59d4b8da-1b59-418f-ae59-d2c6347376db\" />\n    <Caption>Checkbox labels should be descriptive and concise.</Caption>\n  </Do>\n  <Dont>\n    <img src=\"https://github.com/primer/brand/assets/912236/15d2412e-0adf-4449-97c1-fa51f7d0c2a7\" />\n    <Caption>\n      Don't make checkbox labels confusing, indirect, and avoid negative\n      statements.\n    </Caption>\n  </Dont>\n</DoDontContainer>\n\n<DoDontContainer>\n  <Do>\n    <img src=\"https://github.com/primer/brand/assets/912236/01763c28-bccf-4aad-8179-1669667b4be0\" />\n    <Caption>\n      Use consistent styling (starting with capitalization and not ending with\n      punctuation).\n    </Caption>\n  </Do>\n  <Dont>\n    <img src=\"https://github.com/primer/brand/assets/912236/da0effd9-8111-44e6-a633-85f4baf2cb7a\" />\n    <Caption>\n      Don't have inconsistent styling (not starting with capitalization or\n      ending in punctuation).\n    </Caption>\n  </Dont>\n</DoDontContainer>\n\n<DoDontContainer>\n  <Do>\n    <img src=\"https://github.com/primer/brand/assets/912236/20a8d220-0875-49e6-a522-96192f51cc3b\" />\n    <Caption>\n      Use first-person when asking users for acknowledgement or consent.\n    </Caption>\n  </Do>\n  <Dont>\n    <img src=\"https://github.com/primer/brand/assets/912236/8ee9b08c-0a3d-4ff4-a6fa-224632597461\" />\n    <Caption>\n      Don't use third-person when asking users for acknowledgement or consent.\n    </Caption>\n  </Dont>\n</DoDontContainer>\n\n<DoDontContainer>\n  <Do>\n    <img src=\"https://github.com/primer/brand/assets/912236/845c98ad-3c22-4ba1-8c14-5d978e39d51c\" />\n    <Caption>\n      Create checkbox options that are non-exclusive and allow for multiple\n      selections.\n    </Caption>\n  </Do>\n  <Dont>\n    <img src=\"https://github.com/primer/brand/assets/912236/9747bf90-8e45-45f0-9ff7-80e70effd1c8\" />\n    <Caption>\n      Don't use checkbox options exclusive to one another. They should not be\n      automatically deselected.\n    </Caption>\n  </Dont>\n</DoDontContainer>\n\n### States\n\nCheckboxes have static dimensions and four different states: rest (default), checked, indeterminate, and disabled.\n\nAn indeterminate checkbox state should be used if the input value is neither true nor false. This can be useful in situations where you are required to display an incomplete state, or one that is dependent on other input selections to determine a value.\n\n![](https://github.com/primer/brand/assets/912236/172e18b6-449e-4d3b-b3d0-a750df56fb77)\n\n## Accessibility\n\nPlease use [FormControl](/components/FormControl) to display accessible checkboxes in the UI. This Checkbox component is intended only as an ingredient for other custom components, or as a drop-in replacement for native HTML checkboxes outside of form use-cases.\n\nIf you intend to use this component as part of another component, it should always be accompanied by a corresponding `<label>` to improve support for assistive technologies.\n\n## Related components\n\n- [Radio](/components/Radio): Use the radio component when a user needs to select one option from a list.\n- [Select](/components/Select): Use the select component to enable selection of one option from a list.\n- [FormControl](/components/FormControl): Use the form control component to display form inputs alongside labels, validation and more.\n","parent":{"relativeDirectory":"components/Checkbox","name":"index"}},{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/components/Checkbox/react.mdx","frontmatter":{"title":"Checkbox"},"rawBody":"---\ntitle: Checkbox\nstatus: Experimental\nsource: https://github.com/primer/brand/blob/main/packages/react/src/forms/Checkbox/Checkbox.tsx\nfigma: 'https://www.figma.com/file/BJ95AjraesmRCWsKA013GS/Primer-Brand?node-id=1377%3A30754'\nstorybook: '/brand/storybook/?path=/story/components-forms-textinput--playground'\ndescription: Use the checkbox component to select one or more options of a limited number of choices.\n---\n\nimport InlineCode from '@primer/gatsby-theme-doctocat/src/components/inline-code'\nimport {PropTableValues} from '../../../src/components'\nimport {Label} from '@primer/react'\nimport {Link} from 'gatsby'\nimport ComponentLayout from '../../../src/layouts/component-layout'\nexport default ComponentLayout\n\n## Examples\n\n<Note variant=\"warning\">\n\n**Please use [FormControl](/components/FormControl) to display accessible checkboxes in the UI**. This `Checkbox` component is intended only as an ingredient for other custom components, or as a drop-in replacement for native HTML checkboxes outside of form use-cases.\n\nIf you intend to use this component as part of another component, it should always be accompanied by a corresponding `<label>` to improve support for assistive technologies.\n\n</Note>\n\nThe `Checkbox` component can be used in controlled and uncontrolled modes.\n\n```jsx live\n<form>\n  <FormControl>\n    <FormControl.Label>Default checkbox</FormControl.Label>\n    <Checkbox />\n  </FormControl>\n  <FormControl>\n    <FormControl.Label>Always checked</FormControl.Label>\n    <Checkbox checked />\n  </FormControl>\n  <FormControl>\n    <FormControl.Label>Always unchecked</FormControl.Label>\n    <Checkbox checked={false} />\n  </FormControl>\n  <FormControl>\n    <FormControl.Label>Inactive</FormControl.Label>\n    <Checkbox checked disabled />\n  </FormControl>\n</form>\n```\n\n## Indeterminate\n\nAn `indeterminate` checkbox state should be used if the input value is neither `true` nor `false`. This can be useful in situations where you are required to display an incomplete state, or one that is dependent on other input selections to determine a value.\n\n```jsx live\n<form>\n  <FormControl>\n    <FormControl.Label>Indeterminate checkbox</FormControl.Label>\n    <Checkbox onChange={() => {}} indeterminate={true} />\n  </FormControl>\n</form>\n```\n\n## Optional border\n\nApply an optional border using `FormControl` and `hasBorder`.\n\n```jsx live\n<FormControl hasBorder required>\n  <FormControl.Label>\n    Contact me about GitHub Enterprise Server\n  </FormControl.Label>\n  <Checkbox />\n</FormControl>\n```\n\n## Custom label usage\n\n```jsx live\n<FormControl required>\n  <FormControl.Label>\n    <Text size=\"200\" variant=\"muted\">\n      I hereby accept the{' '}\n      <InlineLink\n        size=\"200\"\n        href=\"https://github.com/customer-terms\"\n        target=\"_blank\"\n      >\n        GitHub Customer Agreement\n      </InlineLink>{' '}\n      on behalf of my organization and confirm that I have the authority to do\n      so. For more information about GitHub&apos;s privacy practices, see the{' '}\n      <InlineLink\n        size=\"200\"\n        href=\"https://docs.github.com/en/site-policy/privacy-policies/github-privacy-statement\"\n        target=\"_blank\"\n      >\n        GitHub Privacy Statement.\n      </InlineLink>{' '}\n    </Text>\n  </FormControl.Label>\n  <Checkbox />\n</FormControl>\n```\n\n## Component props\n\n`Checkbox` provides a React alternative to the native HTML `<input type=\"checkbox\">`.\n\nThe component API supports all standard HTML attribute props, while providing some additional behavior as described below.\n\n| Name               | Type                                                             | Default | Description                                                                                                                                   |\n| :----------------- | :--------------------------------------------------------------- | :-----: | :-------------------------------------------------------------------------------------------------------------------------------------------- |\n| `checked`          | `boolean`                                                        |         | Modifies true/false value of the native checkbox                                                                                              |\n| `className`        | `string`                                                         |         | Sets a custom class                                                                                                                           |\n| `defaultChecked`   | `boolean`                                                        |         | Checks the input by default in uncontrolled mode                                                                                              |\n| `disabled`         | `boolean`                                                        |         | Modifies the native disabled state of the native checkbox                                                                                     |\n| `id`               | `string`                                                         |         | Sets a custom id                                                                                                                              |\n| `indeterminate`    | `boolean`                                                        |         | Applies an [indeterminate state](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/checkbox#attr-indeterminate) to the checkbox |\n| `ref`              | `React.RefObject`                                                |         | Forward a Ref to the underlying DOM node                                                                                                      |\n| `validationStatus` | <PropTableValues values={['error', 'success' ]} addLineBreaks /> |         | Ussed to inform ARIA attributes. Individual checkboxes do not have validation styles.                                                         |\n\nAdditional props can be passed to the `<input>` element. [See MDN for a list of props](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input) accepted by the `<input>` element.\n\n## Related components\n\n- <Link to=\"/components/FormControl\">FormControl</Link>\n","parent":{"relativeDirectory":"components/Checkbox","name":"react"}},{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/components/FAQ/index.mdx","frontmatter":{"title":"FAQ"},"rawBody":"---\ntitle: FAQ\ndescription: Use the FAQ component to display content in a Q&A format.\n---\n\nimport ComponentLayout from '../../../src/layouts/component-layout'\nexport default ComponentLayout\n\n## Anatomy\n\n![The FAQ component has a heading, optional subheading, and a list of questions that are interactive to expand and display answers](https://github.com/primer/brand/assets/912236/cfc22774-7348-4e2b-9887-2157e1a17e16)\n\n- Heading: The main title of the FAQ.\n- Subheading: An optional short description that extends the information provided by the heading and helps group the items in the list.\n- Question: The question being answered.\n- Answer: The answer to the question.\n\n## Usage\n\nUse the FAQ to provide answers to common questions about a product or a feature presented on a page. The FAQ is a good way to provide additional information that may be beyond the scope of the main content of the page. We recommend placing the FAQ at the bottom of the page, after the main content. Avoid using the FAQ to provide information that is already available in the page.\n\nAnswers should be clear and no longer than 2-3 paragraphs. If the answer is longer than the suggested, needs visual assets, or a specific layout treatment, consider using a different component. For instance, if the answer needs an image, we recommend using a list of [cards](/components/Card) or a [river](/components/River) component instead.\n\nFor answers that need to provide a list of tasks, we recommend using an [ordered list](/components/OrderedList). To split the content into different items, we recommend using an [unordered list](/components/UnorderedList).\n\n<DoDontContainer stacked>\n  <Do>\n    <img\n      src=\"https://github.com/primer/brand/assets/912236/5566161b-439b-4e13-b41c-188723b0bae6\"\n      alt=\"\"\n    />\n    <Caption>\n      Use the FAQ to provide clear answers to common questions. Link to other\n      resources and use ordered/unordered lists if necessary.\n    </Caption>\n  </Do>\n  <Dont>\n    <img\n      src=\"https://github.com/primer/brand/assets/912236/a42230be-ee4b-4905-885b-dab98f4889c9\"\n      alt=\"\"\n    />\n    <Caption>\n      Don't use visual assets or other content-related components within the\n      answers.\n    </Caption>\n  </Dont>\n</DoDontContainer>\n\n## FAQ group\n\nWhen using long lists of questions and answers, consider using the FAQ group to organize items into content-related categories to make it easier for the user to scan the list.\n\n<DoDontContainer stacked>\n  <Do>\n    <img\n      src=\"https://github.com/primer/brand/assets/912236/a659524d-4574-4880-8f00-c6846438492e\"\n      alt=\"\"\n    />\n    <Caption>Use the FAQ group for related questions and answers.</Caption>\n  </Do>\n  <Dont>\n    <img\n      src=\"https://github.com/primer/brand/assets/912236/315a9a4e-95de-4dc5-9129-ff31108d5dfd\"\n      alt=\"\"\n    />\n    <Caption>\n      Don't use long lists of questions and answers. We recommend using FAQ\n      groups to group them and to help the user scan the list.\n    </Caption>\n  </Dont>\n</DoDontContainer>\n\n## Related components\n\n- [Card](/components/Card): to display navigational related content with higher visual weight.\n- [River](/components/River): To display a list of content items with a visual asset.\n- [Pillar](/components/Pillar): To display related content with less visual emphasis.\n","parent":{"relativeDirectory":"components/FAQ","name":"index"}},{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/components/FAQ/react.mdx","frontmatter":{"title":"FAQ"},"rawBody":"---\ntitle: FAQ\nstatus: Experimental\nfigma: https://www.figma.com/file/BJ95AjraesmRCWsKA013GS/Primer-Brand?node-id=375%3A8130\nsource: https://github.com/primer/brand/blob/main/packages/react/src/FAQ/FAQ.tsx\nstorybook: '/brand/storybook/?path=/story/components-faq--default'\ndescription: Use the FAQ component to display content in a Q&A format.\n---\n\nimport ComponentLayout from '../../../src/layouts/component-layout'\nexport default ComponentLayout\n\nimport InlineCode from '@primer/gatsby-theme-doctocat/src/components/inline-code'\nimport {HeadingTags} from '@primer/react-brand'\nimport {Box as Container} from '@primer/react'\nimport {PropTableValues} from '../../../src/components'\nimport {Label} from '@primer/react'\n\n```js\nimport {FAQ, FAQGroup} from '@primer/react-brand'\n```\n\n## Examples\n\n### Default\n\n```jsx live\n<>\n  <FAQ>\n    <FAQ.Heading>Frequently asked questions</FAQ.Heading>\n    <FAQ.Item>\n      <FAQ.Question>\n        What&apos;s included in the GitHub for Startups offer?\n      </FAQ.Question>\n      <FAQ.Answer>\n        <p>\n          All GitHub for Startups companies receive up to 20 seats of GitHub\n          Enterprise for free for year one and 50% off year two. Learn more\n          about the features and capabilities of GitHub Enterprise{' '}\n          <a href=\"https://www.github.com\" target=\"_blank\" rel=\"noreferrer\">\n            here\n          </a>\n          .\n        </p>\n      </FAQ.Answer>\n    </FAQ.Item>\n    <FAQ.Item>\n      <FAQ.Question>Who is eligible to apply?</FAQ.Question>\n      <FAQ.Answer>\n        <p>\n          Startups who meet the following criteria are eligible to apply for the\n          program:\n        </p>\n        <ol>\n          <li>\n            <Text size=\"300\" variant=\"muted\">\n              Must be associated with a current GitHub for Startups partner.\n            </Text>\n          </li>\n          <li>\n            <Text size=\"300\" variant=\"muted\">\n              Self-funded or funded (Seed-Series A)\n            </Text>\n          </li>\n          <li>\n            <Text size=\"300\" variant=\"muted\">\n              Not a current GitHub Enterprise customer\n            </Text>\n          </li>\n          <li>\n            <Text size=\"300\" variant=\"muted\">\n              Must not have previously received credits for GitHub Enterprise\n            </Text>\n          </li>\n        </ol>\n      </FAQ.Answer>\n    </FAQ.Item>\n    <FAQ.Item>\n      <FAQ.Question>\n        What if my startup is not eligible? Are there other resources for me?\n      </FAQ.Question>\n      <FAQ.Answer>\n        <p>\n          If you’re not currently eligible for the GitHub for Startups but would\n          like to try GitHub Enterprise, please feel to sign up for a trial\n          <a href=\"https://www.github.com\" target=\"_blank\" rel=\"noreferrer\">\n            here\n          </a>.\n        </p>\n      </FAQ.Answer>\n    </FAQ.Item>\n    <FAQ.Item>\n      <FAQ.Question>\n        How can my organization become a GitHub for Startups partner?\n      </FAQ.Question>\n      <FAQ.Answer>\n        <p>\n          Any investor, accelerator, or startup support organization is eligible\n          to apply for the GitHub for Startups program.\n        </p>\n        <p>\n          <a href=\"https://www.github.com\" target=\"_blank\" rel=\"noreferrer\">\n            Apply here\n          </a>\n          .\n        </p>\n      </FAQ.Answer>\n    </FAQ.Item>\n  </FAQ>\n</>\n```\n\n### Grouped FAQs\n\nUse `FAQGroup` to display multiple `FAQ` components together.\n\n```jsx live\n<FAQGroup>\n  <FAQGroup.Heading>\n    Frequently asked <br /> questions\n  </FAQGroup.Heading>\n  <FAQ>\n    <FAQ.Heading>Using GitHub Enterprise</FAQ.Heading>\n    <FAQ.Item>\n      <FAQ.Question>What is GitHub Enterprise?</FAQ.Question>\n      <FAQ.Answer>\n        <p>\n          Lorem ipsum dolor sit amet, consectetur adipiscing elit. In sapien sit\n          ullamcorper id. Aliquam luctus sed turpis felis nam pulvinar risus\n          elementum.\n        </p>\n      </FAQ.Answer>\n    </FAQ.Item>\n    <FAQ.Item>\n      <FAQ.Question>How can GitHub Enterprise be deployed?</FAQ.Question>\n      <FAQ.Answer>\n        <p>\n          Lorem ipsum dolor sit amet, consectetur adipiscing elit. In sapien sit\n          ullamcorper id. Aliquam luctus sed turpis felis nam pulvinar risus\n          elementum.\n        </p>\n      </FAQ.Answer>\n    </FAQ.Item>\n    <FAQ.Item>\n      <FAQ.Question>What is GitHub Enterprise Cloud?</FAQ.Question>\n      <FAQ.Answer>\n        <p>\n          Lorem ipsum dolor sit amet, consectetur adipiscing elit. In sapien sit\n          ullamcorper id. Aliquam luctus sed turpis felis nam pulvinar risus\n          elementum.\n        </p>\n      </FAQ.Answer>\n    </FAQ.Item>\n  </FAQ>\n\n  <FAQ>\n    <FAQ.Heading>About GitHub Enterprise</FAQ.Heading>\n    <FAQ.Item>\n      <FAQ.Question>\n        What is the difference between GitHub and GitHub Enterprise?\n      </FAQ.Question>\n      <FAQ.Answer>\n        <p>\n          Lorem ipsum dolor sit amet, consectetur adipiscing elit. In sapien sit\n          ullamcorper id. Aliquam luctus sed turpis felis nam pulvinar risus\n          elementum.\n        </p>\n      </FAQ.Answer>\n    </FAQ.Item>\n    <FAQ.Item>\n      <FAQ.Question>\n        Why should organizations use GitHub Enterprise?\n      </FAQ.Question>\n      <FAQ.Answer>\n        <p>\n          Lorem ipsum dolor sit amet, consectetur adipiscing elit. In sapien sit\n          ullamcorper id. Aliquam luctus sed turpis felis nam pulvinar risus\n          elementum.\n        </p>\n      </FAQ.Answer>\n    </FAQ.Item>\n    <FAQ.Item>\n      <FAQ.Question>Who uses GitHub Enterprise?</FAQ.Question>\n      <FAQ.Answer>\n        <p>\n          Lorem ipsum dolor sit amet, consectetur adipiscing elit. In sapien sit\n          ullamcorper id. Aliquam luctus sed turpis felis nam pulvinar risus\n          elementum.\n        </p>\n      </FAQ.Answer>\n    </FAQ.Item>\n  </FAQ>\n</FAQGroup>\n```\n\n### Rendering with dynamic data\n\n```javascript live noinline\nconst App = () => {\n  const fixtureData = [\n    {\n      question: 'How do I render a single paragraph?',\n      answer: (\n        <p>\n          Vestibulum at dolor justo.{' '}\n          <a href=\"https://www.github.com\" target=\"_blank\" rel=\"noreferrer\">\n            Curabitur\n          </a>{' '}\n          dictum feugiat elit, vitae vestibulum orci vestibulum sed. Donec\n          interdum ligula at nisi rhoncus malesuada et non eros.\n        </p>\n      ),\n    },\n    {\n      question: 'What about multiple paragraphs?',\n      answer: (\n        <React.Fragment>\n          <p>\n            Vestibulum at dolor justo.{' '}\n            <a href=\"https://www.github.com\" target=\"_blank\" rel=\"noreferrer\">\n              Curabitur\n            </a>{' '}\n            dictum feugiat elit, vitae vestibulum orci vestibulum sed. Donec\n            interdum ligula at nisi rhoncus malesuada et non eros.\n          </p>\n          <p>\n            Pellentesque habitant morbi tristique senectus et netus et malesuada\n            fames ac turpis egestas.\n          </p>\n        </React.Fragment>\n      ),\n    },\n    {\n      question: 'Can I render a React Fragment?',\n      answer: (\n        <React.Fragment>\n          <p>\n            Vestibulum at dolor justo.{' '}\n            <a href=\"https://www.github.com\" target=\"_blank\" rel=\"noreferrer\">\n              Curabitur\n            </a>{' '}\n            dictum feugiat elit, vitae vestibulum orci vestibulum sed. Donec\n            interdum ligula at nisi rhoncus malesuada et non eros.\n          </p>\n          <ol>\n            <li>\n              <Text size=\"300\" variant=\"muted\">\n                Must be associated with a current GitHub for Startups partner.\n              </Text>\n            </li>\n            <li>\n              <Text size=\"300\" variant=\"muted\">\n                Self-funded or funded (Seed-Series A)\n              </Text>\n            </li>\n            <li>\n              <Text size=\"300\" variant=\"muted\">\n                Not a current GitHub Enterprise customer\n              </Text>\n            </li>\n            <li>\n              <Text size=\"300\" variant=\"muted\">\n                Must not have previously received credits for GitHub Enterprise\n              </Text>\n            </li>\n          </ol>\n        </React.Fragment>\n      ),\n    },\n  ]\n\n  return (\n    <FAQ>\n      <FAQ.Heading>Frequently asked questions</FAQ.Heading>\n      <>\n        {fixtureData.map(({question, answer}) => {\n          return (\n            <FAQ.Item key={question} open={false}>\n              <FAQ.Question>{question}</FAQ.Question>\n              <FAQ.Answer>{answer}</FAQ.Answer>\n            </FAQ.Item>\n          )\n        })}\n      </>\n    </FAQ>\n  )\n}\n\nrender(<App />)\n```\n\n### Color customization\n\n`FAQ` surfaces component-specific css variables that can be used to adjust the color where needed.\n\n```javascript live noinline\nconst App = () => {\n  const designTokenOverrides = `\n  .custom-colors[data-color-mode='dark'] {\n\n    /*\n     * Modify the value of these tokens.\n     * Remember to apply light mode equivalents if you're enabling theme switching.\n     */\n    --brand-Accordion-toggle-color-start: var(--base-color-scale-green-1);\n    --brand-Accordion-toggle-color-end: var(--base-color-scale-blue-3);\n    --brand-FAQ-color-heading: linear-gradient(271.72deg, var(--base-color-scale-green-1) 7.09%, var(--base-color-scale-blue-3) 96.61%);\n\n    padding: 3rem;\n    background-color: var(--brand-color-canvas-default);\n  }\n\n\n  .custom-heading {\n    background: var(--brand-FAQ-color-heading);\n    -webkit-background-clip: text;\n    background-clip: text;\n    -webkit-text-fill-color: transparent;\n  }\n`\n\n  return (\n    <ThemeProvider colorMode=\"dark\" className=\"custom-colors\">\n      <style>{designTokenOverrides}</style>\n      <FAQ>\n        <FAQ.Heading className=\"custom-heading\">\n          Frequently asked questions\n        </FAQ.Heading>\n        <FAQ.Subheading>Subscriptions & Payments</FAQ.Subheading>\n        <FAQ.Item>\n          <FAQ.Question>\n            What are the differences between GitHub Free, GitHub Pro, GitHub\n            Team and GitHub Enterprise plans?\n          </FAQ.Question>\n          <FAQ.Answer>\n            <p>\n              GitHub Free is our basic plan created for individuals and small\n              teams to collaborate on private and public repositories.\n            </p>\n          </FAQ.Answer>\n        </FAQ.Item>\n        <FAQ.Item>\n          <FAQ.Question>How do I view and manage my subscription?</FAQ.Question>\n          <FAQ.Answer>\n            <p>\n              You can view your account's subscription, your other paid features\n              and products, and your next billing date in your account's billing\n              settings.\n            </p>\n          </FAQ.Answer>\n        </FAQ.Item>\n        <FAQ.Item>\n          <FAQ.Question>How can I change my GitHub subscription?</FAQ.Question>\n          <FAQ.Answer>\n            <p>\n              You can upgrade or downgrade your subscription, add and remove\n              seats, or change the billing cadence on\n              https://github.com/settings/billing.\n            </p>\n          </FAQ.Answer>\n        </FAQ.Item>\n      </FAQ>\n    </ThemeProvider>\n  )\n}\n\nrender(<App />)\n```\n\n## Component props\n\n### FAQ <Label>Required</Label>\n\n| Name        | Type                                                                                                                                                                | Default | Description                              |\n| :---------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :-----: | :--------------------------------------- |\n| `className` | `string`                                                                                                                                                            |         | Sets a custom class                      |\n| `id`        | `string`                                                                                                                                                            |         | Sets a custom id                         |\n| `ref`       | `React.RefObject`                                                                                                                                                   |         | Forward a Ref to the underlying DOM node |\n| `children`  | <PropTableValues values={[<a href=\"#faq-heading\">FAQ.Heading</a>, <a href=\"#faq-subheading\">FAQ.Subheading</a>, <a href=\"#faq-item\">FAQ.Item</a>]} addLineBreaks /> |         | Root element for the FAQ component.      |\n\n<h3 id=\"faq-heading\">\n  FAQ.Heading <Label>Required</Label>\n</h3>\n\n| Name        | Type                                                            |  Default   | Description                              |\n| :---------- | :-------------------------------------------------------------- | :--------: | :--------------------------------------- |\n| `align`     | <PropTableValues values={['start', 'center' ]} addLineBreaks /> | `'center'` | Heading text alignment                   |\n| `children`  | `string`                                                        |            | Heading text                             |\n| `className` | `string`                                                        |            | Heading custom class                     |\n| `id`        | `string`                                                        |            | Sets a custom id                         |\n| `ref`       | `React.RefObject`                                               |            | Forward a Ref to the underlying DOM node |\n| `size`      | <PropTableValues values={['medium', 'large' ]} addLineBreaks /> | `'medium'` | Heading text size                        |\n| `as`        | <PropTableValues values={HeadingTags} addLineBreaks />          |            | Applies the underlying HTML element      |\n\n<h3 id=\"faq-subheading\">FAQ.Subheading</h3>\n\n| Name        | Type                                                            | Default | Description                              |\n| :---------- | :-------------------------------------------------------------- | :-----: | :--------------------------------------- |\n| `children`  | `string`                                                        |         | Sub-heading text                         |\n| `className` | `string`                                                        |         | Sub-heading custom class                 |\n| `id`        | `string`                                                        |         | Sets a custom id                         |\n| `as`        | <PropTableValues values={HeadingTags.slice(1)} addLineBreaks /> | `'h3'`  | Applies the underlying HTML element      |\n| `ref`       | `React.RefObject`                                               |         | Forward a Ref to the underlying DOM node |\n\n<h3 id=\"faq-item\">FAQ.Item</h3>\n\n| Name        | Type                                                                                                                        | Default | Description                              |\n| :---------- | :-------------------------------------------------------------------------------------------------------------------------- | :-----: | :--------------------------------------- |\n| `open`      | `boolean`                                                                                                                   | `false` | Sets answer visibility                   |\n| `className` | `string`                                                                                                                    |         | Sets a custom class                      |\n| `children`  | <PropTableValues values={[<a href=\"#faq-question\">FAQ.Question</a>, <a href=\"#faq-answer\">FAQ.Answer</a>]} addLineBreaks /> |         | FAQ question and answer pair             |\n| `id`        | `string`                                                                                                                    |         | Sets a custom id                         |\n| `ref`       | `React.RefObject`                                                                                                           |         | Forward a Ref to the underlying DOM node |\n\n<h3 id=\"faq-question\">FAQ.Question</h3>\n\n| Name        | Type                                                            | Default | Description                              |\n| :---------- | :-------------------------------------------------------------- | :-----: | :--------------------------------------- |\n| `className` | `string`                                                        |         | Sets a custom class on the root element  |\n| `children`  | `string`                                                        |         | Question text                            |\n| `id`        | `string`                                                        |         | Sets a custom id                         |\n| `as`        | <PropTableValues values={HeadingTags.slice(1)} addLineBreaks /> | `'h4'`  | Applies the underlying HTML element      |\n| `ref`       | `React.RefObject`                                               |         | Forward a Ref to the underlying DOM node |\n\n<h3 id=\"faq-answer\">FAQ.Answer</h3>\n\n| Name        | Type              | Default | Description                                  |\n| :---------- | :---------------- | :-----: | :------------------------------------------- |\n| `className` | `string`          |         | Sets a custom class on the root element      |\n| `children`  | `ReactElement`    |         | `<p>` or `<Text>` components are recommended |\n| `id`        | `string`          |         | Sets a custom id                             |\n| `ref`       | `React.RefObject` |         | Forward a Ref to the underlying DOM node     |\n\n### FAQGroup\n\n| Name        | Type                                                                                                                           | Default | Description                              |\n| :---------- | :----------------------------------------------------------------------------------------------------------------------------- | :-----: | :--------------------------------------- |\n| `className` | `string`                                                                                                                       |         | Sets a custom class                      |\n| `id`        | `string`                                                                                                                       |         | Sets a custom id                         |\n| `ref`       | `React.RefObject`                                                                                                              |         | Forward a Ref to the underlying DOM node |\n| `children`  | <PropTableValues values={[<a href=\"#faq-required\">FAQ</a>, <a href=\"#faqgroup-heading\">FAQGroup.Heading</a>]} addLineBreaks /> |         | Root element for the FAQGroup component. |\n\n### FAQGroup.Heading\n\n| Name | Type                                                   | Default | Description                         |\n| :--- | :----------------------------------------------------- | :-----: | :---------------------------------- |\n| `as` | <PropTableValues values={HeadingTags} addLineBreaks /> |         | Applies the underlying HTML element |\n\nForwards all the props from the [Heading component](/components/Heading), including `size`, and `weight`.\n","parent":{"relativeDirectory":"components/FAQ","name":"react"}},{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/components/Grid/index.mdx","frontmatter":{"title":"Grid"},"rawBody":"---\ntitle: Grid\ndescription: Use the grid component to create flexible and responsive grid-based layouts.\n---\n\nimport {Text} from '@primer/react'\nimport CustomVideoPlayer from '../../../src/components/custom-video-player'\nimport ComponentLayout from '../../../src/layouts/component-layout'\nexport default ComponentLayout\n\n![The grid component applied to a section with different elements that spans in columns](https://github.com/primer/brand/assets/912236/6cd2805e-0148-4a1d-b373-07acd1aa7f51)\n\n## Usage\n\nUse the grid component to define a layout that maintains consistent element positioning and sizing across pages. The grid is based on a 12-column layout and uses vertical and horizontal gaps to separate content units consistently[^1].\n\nUse the grid for general page layout, and grouping related elements with a similar purpose. E.g. A \"contact us\" form or a list of [cards](/components/Card).\n\nIn most cases, we recommend using the same column span for each element to create a consistent layout.\n\n[^1]: The grid component is implemented using the [CSS Grid Layout](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Grid_Layout) specification.\n\n<DoDontContainer>\n  <Do>\n    <img\n      src=\"https://github.com/primer/brand/assets/912236/b4870b2e-5cf0-440c-9f51-0b1f81258b9b\"\n      alt=\"\"\n    />\n    <Caption>\n      Use the same column span for each content unit to create a consistent\n      layout and spacing.\n    </Caption>\n  </Do>\n  <Dont>\n    <img\n      src=\"https://github.com/primer/brand/assets/912236/0703ba43-7f47-4ad1-bc1d-020bc095e362\"\n      alt=\"\"\n    />\n    <Caption>\n      Don't use different column spans when grouping the same element type.\n    </Caption>\n  </Dont>\n</DoDontContainer>\n\nUse different column spans instead of an even distribution when creating a visual hierarchy between items or when defining a general page or a section layout. E.g. A section with an [image](/components/Image) and [text](/components/text), a layout with main content and a sidebar or a form with inputs and text areas.\n\n<DoDontContainer stacked>\n  <Do>\n    <img\n      src=\"https://github.com/primer/brand/assets/912236/bc442c41-3546-4341-bab3-1c649ccfe7d2\"\n      alt=\"\"\n    />\n    <Caption>\n      Use different column spans to create a visual hierarchy between a large\n      image and text.\n    </Caption>\n  </Do>\n  <Dont>\n    <img\n      src=\"https://github.com/primer/brand/assets/912236/f6307bee-3236-435a-a74d-b6d942a7925b\"\n      alt=\"\"\n    />\n    <Caption>\n      Don't span in few columns large images or long content text that will\n      create unbalanced layouts.\n    </Caption>\n  </Dont>\n</DoDontContainer>\n\n<DoDontContainer stacked>\n  <Do>\n    <img\n      src=\"https://github.com/primer/brand/assets/912236/83e4eedf-5cc2-4dcc-a9dd-48d563744dd2\"\n      alt=\"\"\n    />\n    <Caption>\n      Use different column spans when you want to create a visual hierarchy on a\n      section between different elements. Like a footer with notes and\n      navigational lists.\n    </Caption>\n  </Do>\n  <Dont>\n    <img\n      src=\"https://github.com/primer/brand/assets/912236/911a6b4b-791a-4186-8079-6296e17c65d0\"\n      alt=\"\"\n    />\n    <Caption>\n      Don't use equal column spans when the content is not related or the\n      elements are different.\n    </Caption>\n  </Dont>\n</DoDontContainer>\n\n### Responsive\n\nThe grid component provides control over the number of columns at each breakpoint. For most of the cases, we recommend using the same column span on each child at each breakpoint to create a consistent layout and spacing in all screen sizes.\n\nFor example, a group of cards might span 3 columns on a extra large viewport, 4 columns on large viewports, 6 on medium and 12 columns on small viewports.\n\n<div>\n  <CustomVideoPlayer\n    width=\"100%\"\n    src=\"https://github.com/primer/brand/assets/912236/a99beba9-b22f-4e2b-a5fa-66c2db246965\"\n  />\n  <Caption>\n    Use the same column span for each content unit at each breakpoint to create\n    visually consistent layouts.\n  </Caption>\n</div>\n\nWhen using even column spans, we recommend to span each item full width on small viewports and stacking the items vertically to ensure that the content is readable and accessible on small screens.\n\n<div>\n  <CustomVideoPlayer\n    width=\"100%\"\n    src=\"https://github.com/primer/brand/assets/912236/cd0d4335-03b2-48f2-98f0-2c53ef61544b\"\n  />\n  <Caption>\n    Use full width on small viewports to ensure that the content is readable and\n    accessible.\n  </Caption>\n</div>\n\n## Grid vs Stack\n\nWe recommend using either the grid or stack component, depending on how the child items are displayed and how they work on different screen sizes. If the element is a sequential list of items in a vertical or horizontal order, we recommend using the stack component. Otherwise, if the element needs columns and rows or for general page layout, we recommend using the grid component instead[^2].\n\n### Grid examples\n\n#### Page or section layout\n\nWhen defining the page or a section layout. E.g. A page with navigation, main content and footer areas.\n\n![](https://github.com/primer/brand/assets/912236/76e816de-1ec7-40c2-993f-61fe05f97656)\n\n#### Sub sections\n\nWhen dividing an area into two areas. E.g. A \"Send feedback\" sidebar and a form, and the form uses the grid for the form layout itself.\n\n![](https://github.com/primer/brand/assets/912236/d617bfea-0758-4066-9ccc-7853eeb35cf3)\n\n#### Card or pillar grids\n\nWhen laying out cards, pillars, or similar content-based elements.\n\n![](https://github.com/primer/brand/assets/912236/56dfbcd8-72ff-401c-a530-25f11f671f7f)\n\n### Stack examples\n\n#### Navigation\n\nFor the page navigation or a list of links. E.g. Having a logo on the left side and the navigation on the right.\n\n![](https://github.com/primer/brand/assets/912236/022fc146-6286-4074-abc5-7341743da82e)\n\n#### List of actions\n\nFor a group of action or buttons, where items are displayed next to each other, and they are distributed horizontally or vertically, depending on the content length and the screen size.\n\n![](https://github.com/primer/brand/assets/912236/10ae15dd-f8f9-4174-9c89-2e9355120204)\n\n#### Form elements\n\nFor combinations of input fields with a button next to it.\n\n![](https://github.com/primer/brand/assets/912236/78a81f0e-55d5-4db5-8a8b-3184394fac51)\n\n#### Profile cards\n\nFor combinations of an avatar and descriptive content, where the information takes the remaining space from its parent element. This could be applied to any combinations of an icon and text too.\n\n![](https://github.com/primer/brand/assets/912236/c53f2ee7-93f1-416f-8fd5-bd965fd37f86)\n\n[^2]: This section is based on the article [Grid for layout, Flexbox for components](https://ishadeed.com/article/grid-layout-flexbox-components/) by [@shadeed](https://github.com/shadeed)\n\n## Accessibility\n\nBy default, the grid assumes that it will be used in a purely decorative fashion and thus sets no roles, ARIA attributes, or keyboard shortcuts. This is equivalent to having a sequence of `<div>` elements on the page by default. Any interactive content within the grid should be given an appropriate accessibility treatment based on the specific workflow of your application.\n\n## Related components\n\n- [Stack](/components/Stack): To enable layout of its immediate children along the vertical or horizontal axis.\n","parent":{"relativeDirectory":"components/Grid","name":"index"}},{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/components/Grid/react.mdx","frontmatter":{"title":"Grid"},"rawBody":"---\ntitle: Grid\nstatus: Experimental\nsource: https://github.com/primer/brand/tree/main/packages/react/src/Grid/Grid.tsx\nstorybook: '/brand/storybook/?path=/story/components-grid--default'\ndescription: Use the grid component to create flexible and responsive grid-based layouts.\n---\n\nimport ComponentLayout from '../../../src/layouts/component-layout'\nexport default ComponentLayout\n\nimport {Label} from '@primer/react'\nimport {PropTableValues} from '../../../src/components'\n\n```js\nimport {Grid} from '@primer/react-brand'\n```\n\n## Examples\n\n### Default\n\nThe `Grid` component uses a 12-column layout system. Use `span` to control the number of columns that should be displayed.\n\n```jsx live\n<Grid enableOverlay>\n  <Grid.Column span={1}></Grid.Column>\n  <Grid.Column span={11}></Grid.Column>\n  <Grid.Column span={2}></Grid.Column>\n  <Grid.Column span={10}></Grid.Column>\n  <Grid.Column span={3}></Grid.Column>\n  <Grid.Column span={9}></Grid.Column>\n  <Grid.Column span={4}></Grid.Column>\n  <Grid.Column span={8}></Grid.Column>\n  <Grid.Column span={5}></Grid.Column>\n  <Grid.Column span={7}></Grid.Column>\n  <Grid.Column span={6}></Grid.Column>\n  <Grid.Column span={6}></Grid.Column>\n  <Grid.Column span={7}></Grid.Column>\n  <Grid.Column span={5}></Grid.Column>\n  <Grid.Column span={8}></Grid.Column>\n  <Grid.Column span={4}></Grid.Column>\n  <Grid.Column span={9}></Grid.Column>\n  <Grid.Column span={3}></Grid.Column>\n  <Grid.Column span={10}></Grid.Column>\n  <Grid.Column span={2}></Grid.Column>\n</Grid>\n```\n\n### Nested grids\n\n```jsx live\n<Grid enableOverlay>\n  <Grid.Column>\n    <Grid enableOverlay>\n      <Grid.Column span={4}></Grid.Column>\n      <Grid.Column span={4}></Grid.Column>\n      <Grid.Column span={4}></Grid.Column>\n    </Grid>\n  </Grid.Column>\n</Grid>\n```\n\n### Responsive behavior\n\nUse `span` with an `Object` of breakpoint-specific keys and `number` values to enable responsive behavior.\n\nBreakpoints use `min-width`, where it will also apply your chosen `span` value to all larger breakpoints.\n\n```jsx live\n<Grid enableOverlay>\n  <Grid.Column\n    span={{xsmall: 12, small: 12, medium: 6, large: 4, xlarge: 3, xxlarge: 2}}\n  />\n  <Grid.Column\n    span={{xsmall: 6, small: 6, medium: 6, large: 4, xlarge: 3, xxlarge: 2}}\n  />\n  <Grid.Column\n    span={{xsmall: 6, small: 6, medium: 6, large: 4, xlarge: 3, xxlarge: 2}}\n  />\n  <Grid.Column\n    span={{xsmall: 12, small: 12, medium: 6, large: 4, xlarge: 3, xxlarge: 2}}\n  />\n  <Grid.Column\n    span={{xsmall: 6, small: 6, medium: 6, large: 4, xlarge: 3, xxlarge: 2}}\n  />\n  <Grid.Column\n    span={{xsmall: 6, small: 6, medium: 6, large: 4, xlarge: 3, xxlarge: 2}}\n  />\n  <Grid.Column\n    span={{xsmall: 12, small: 12, medium: 6, large: 4, xlarge: 3, xxlarge: 2}}\n  />\n  <Grid.Column\n    span={{xsmall: 6, small: 6, medium: 6, large: 4, xlarge: 3, xxlarge: 2}}\n  />\n  <Grid.Column\n    span={{xsmall: 6, small: 6, medium: 6, large: 4, xlarge: 3, xxlarge: 2}}\n  />\n  <Grid.Column\n    span={{xsmall: 12, small: 12, medium: 6, large: 4, xlarge: 3, xxlarge: 2}}\n  />\n  <Grid.Column\n    span={{xsmall: 6, small: 6, medium: 6, large: 4, xlarge: 3, xxlarge: 2}}\n  />\n  <Grid.Column\n    span={{xsmall: 6, small: 6, medium: 6, large: 4, xlarge: 3, xxlarge: 2}}\n  />\n</Grid>\n```\n\n### Column offset\n\nUse `start` to provide a positioning offset.\n\n```jsx live\n<Grid enableOverlay>\n  <Grid.Column span={3}></Grid.Column>\n  <Grid.Column span={5} start={8}></Grid.Column>\n</Grid>\n```\n\n## Component props\n\n### Grid <Label>Required</Label>\n\n| name            | type                                                                  | default | required | description                               |\n| --------------- | --------------------------------------------------------------------- | ------- | -------- | ----------------------------------------- |\n| `as`            | <PropTableValues values={['div', 'section', 'span']} addLineBreaks /> | `'div'` | `false`  | The HTML element used to render the grid. |\n| `enableOverlay` | `boolean`                                                             | `false` | `false`  | Visual aid to help with alignment.        |\n| `className`     | `string`                                                              |         | `false`  | Sets a custom class on the element.       |\n| `children`      | `Grid.Column`                                                         |         | `true`   |\n| `id`            | `string`                                                              |         | `false`  | Sets a custom `id` attribute.             |\n\n### Grid.Column <Label>Required</Label>\n\n| name        | type                                                                                    | default | required | description                                                        |\n| ----------- | --------------------------------------------------------------------------------------- | ------- | -------- | ------------------------------------------------------------------ |\n| `as`        | <PropTableValues values={['div', 'section', 'span']} addLineBreaks />                   | `'div'` | `false`  | The HTML element used to render the column.                        |\n| `span`      | <PropTableValues values={[1,2,3,4,5,6,7,8,9,10,11,12]} addLineBreaks /> `ResponsiveMap` | `12`    | `false`  | The number of columns the element should span or a responsive map. |\n| `start`     | <PropTableValues values={[1,2,3,4,5,6,7,8,9,10,11,12]} addLineBreaks /> `ResponsiveMap` |         | `false`  | The column index to start the element or a responsive map.         |\n| `className` | `string`                                                                                |         | `false`  | Sets a custom class on the element                                 |\n| `children`  | `ReactElement`                                                                          |         | `false`  |\n| `id`        | `string`                                                                                |         | `false`  | Sets a custom `id`                                                 |\n","parent":{"relativeDirectory":"components/Grid","name":"react"}},{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/components/Heading/index.mdx","frontmatter":{"title":"Heading"},"rawBody":"---\ntitle: Heading\ndescription: Use the heading component to render title or subtitle text\n---\n\nimport CustomVideoPlayer from '../../../src/components/custom-video-player'\nimport ComponentLayout from '../../../src/layouts/component-layout'\nexport default ComponentLayout\n\n![An image displaying each header from h1 to h6.](https://github.com/primer/brand/assets/912236/9947878f-4d2f-439f-ab6e-8349115f6888)\n\n## Usage\n\nHeadings are used to structure the content on the page, with each heading representing a different level of importance. It is recommended to use headings in a logical manner to create a clear hierarchy and improve accessibility.\n\n- Heading should be used to communicate page organization and hierarchy.\n- Use heading as the title that introduces a page, a section or an article.\n- The heading component will render an html h2 tag without any default styling.\n\n## Options\n\n### Scale and size\n\nThe heading scale ranges from 1 to 6 and maps to the HTML heading elements h1 to h6 respectively. The size is determined by the type of HTML element specified, although you can override this when the scenario calls for it. E.g. use a `h2` heading size on a `<h3>` to highlight an article that might be relevant to the user.\n\n### Weight, stretch and letter spacing\n\nThe heading component also supports the following options: `weight`, `stretch` and `letterSpacing`. Each of these options are determined by the heading scale and size, but can be overridden when the scenario calls for it.\n\n### Responsive\n\nThe heading component is responsive by default and the size will scale down on smaller screens. Weight, stretch and letter spacing will remain the same across all screen sizes but can be overridden for each breakpoint.\n\n<div>\n  <CustomVideoPlayer\n    width=\"100%\"\n    src=\"https://github.com/primer/brand/assets/912236/d0e7ef2b-d52f-413e-8580-579a9129696c\"\n  />\n</div>\n\n## Accessibility\n\nWhile sighted users rely on visual cues such as font size changes to determine what the heading is, assistive technology users rely on programatic cues that can be read out. When text on a page is visually implied to be a heading, ensure that it is coded as a heading. Additionally, visually implied heading level and coded heading level should be consistent. See [WCAG success criteria: 1.3.1: Info and Relationships](https://www.w3.org/WAI/WCAG21/Understanding/info-and-relationships.html).\n\nHeadings allow assistive technology users to quickly navigate around a page. Navigation as text that is not meant to be a heading can be a confusing experience. [Learn more about best heading practices (WAI Headings)](https://www.w3.org/WAI/tutorials/page-structure/headings/).\n\n<DoDontContainer>\n  <Do>\n    <img src=\"https://github.com/primer/brand/assets/912236/05b615e0-9f07-4718-8ce5-80109119b92a\" />\n    <Caption>\n      Use headings with a lower rank to start new subsections that are part of\n      the higher ranked section.\n    </Caption>\n  </Do>\n  <Dont>\n    <img src=\"https://github.com/primer/brand/assets/912236/876097cc-27a9-41c4-adab-24db8a3c6432\" />\n    <Caption>\n      Don't skip heading ranks. Make sure that a h2 is not followed directly by\n      an h4, for example.\n    </Caption>\n  </Dont>\n</DoDontContainer>\n\n## Related components\n\n- [Text](/components/Text): to render body content\n","parent":{"relativeDirectory":"components/Heading","name":"index"}},{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/components/Heading/react.mdx","frontmatter":{"title":"Heading"},"rawBody":"---\ntitle: Heading\nstatus: Experimental\na11yReviewed: true\nfigma: 'https://www.figma.com/file/BJ95AjraesmRCWsKA013GS/Primer-Brand?node-id=354%3A8982'\nsource: https://github.com/primer/brand/blob/main/packages/react/src/Heading/Heading.tsx\nstorybook: '/brand/storybook/?path=/story/components-heading--default'\ndescription: Use the heading component to render title or subtitle text.\n---\n\nimport ComponentLayout from '../../../src/layouts/component-layout'\nexport default ComponentLayout\n\nimport {\n  HeadingTags,\n  HeadingSizes,\n  HeadingWeights,\n  HeadingStretch,\n  defaultHeadingTag,\n  HeadingLetterSpacing,\n} from '@primer/react-brand'\nimport {Box as Container} from '@primer/react'\nimport {PropTableValues} from '../../../src/components'\n\n```js\nimport {Heading} from '@primer/react-brand'\n```\n\n## Examples\n\n### Default\n\n```jsx live\n<Heading>This is my super sweet heading</Heading>\n```\n\n### Scale\n\n```jsx live\n<>\n  <Heading size=\"display\">Display: 96px</Heading>\n  <Heading size=\"1\">1: 72px</Heading>\n  <Heading size=\"2\">2: 64px</Heading>\n  <Heading size=\"3\">3: 48px</Heading>\n  <Heading size=\"4\">4: 40px</Heading>\n  <Heading size=\"5\">5: 32px</Heading>\n  <Heading size=\"6\">6: 24px</Heading>\n  <Heading size=\"subhead-large\">subhead-large: 20px</Heading>\n  <Heading size=\"subhead-medium\">subhead-medium: 16px</Heading>\n</>\n```\n\n### Levels\n\nThe `Heading` level can be assigned using the `as` prop, which accepts any valid HTML heading tag.\n\nIts visual appearance corresponds to the `1-6` scale values, but can be overridden using the `size` prop.\n\n```jsx live\n<Heading as=\"h6\">This is my super sweet heading as a h6</Heading>\n\n<Heading as=\"h2\" size=\"4\">\n  This h2 will appear visually identical to a h4\n</Heading>\n```\n\n### Weight\n\nThe recommended text weight is automatically applied to Headings based on their position on the type scale.\n\nUse the `weight` prop to override the default visual appearance if required.\n\n```jsx live\n<>\n  <Heading as=\"h3\" weight=\"heavy\">\n    heavy\n  </Heading>\n  <Heading as=\"h3\" weight=\"extrabold\">\n    extrabold\n  </Heading>\n  <Heading as=\"h3\" weight=\"bold\">\n    bold\n  </Heading>\n  <Heading as=\"h3\" weight=\"semibold\">\n    semibold\n  </Heading>\n  <Heading as=\"h3\" weight=\"medium\">\n    medium\n  </Heading>\n  <Heading as=\"h3\" weight=\"normal\">\n    normal\n  </Heading>\n  <Heading as=\"h3\" weight=\"light\">\n    light\n  </Heading>\n\n  {/* Responsive */}\n  <br />\n  <br />\n  <Heading\n    as=\"h4\"\n    weight={{\n      narrow: 'heavy',\n      regular: 'semibold',\n      wide: 'light',\n    }}\n  >\n    Responsive\n  </Heading>\n</>\n```\n\n### Width / Stretch\n\nThe recommended text width value is automatically applied to Headings based on their position on the type scale.\n\nUse the `stretch` prop to override the default visual appearance if required.\n\n```jsx live\n<>\n  <Heading as=\"h3\" stretch=\"condensed\">\n    condensed\n  </Heading>\n  <Heading as=\"h3\" stretch=\"normal\">\n    normal\n  </Heading>\n  <Heading as=\"h3\" stretch=\"expanded\">\n    expanded\n  </Heading>\n\n  {/* Responsive */}\n  <br />\n  <br />\n  <Heading\n    as=\"h4\"\n    stretch={{\n      narrow: 'condensed',\n      regular: 'normal',\n      wide: 'expanded',\n    }}\n  >\n    Responsive\n  </Heading>\n</>\n```\n\n### Letter spacing\n\nThe recommended character letter spacing is automatically applied to Headings based on their position on the type scale.\n\nUse the `letterSpacing` prop to override the default settings if required.\n\n```jsx live\n<>\n  <Heading as=\"h3\" letterSpacing=\"condensed\">\n    condensed\n  </Heading>\n  <Heading as=\"h3\" letterSpacing=\"normal\">\n    normal\n  </Heading>\n  <Heading as=\"h3\" letterSpacing=\"none\">\n    none\n  </Heading>\n\n  {/* Responsive */}\n  <br />\n  <br />\n  <Heading\n    as=\"h4\"\n    letterSpacing={{\n      narrow: 'condensed',\n      regular: 'normal',\n      wide: 'none',\n    }}\n  >\n    Responsive\n  </Heading>\n</>\n```\n\n## Component props\n\n### Heading\n\n| Name            | Type                                                                                               |                     Default                      | Description                                    |\n| :-------------- | :------------------------------------------------------------------------------------------------- | :----------------------------------------------: | :--------------------------------------------- |\n| `as`            | <PropTableValues values={HeadingTags} addLineBreaks />                                             | <PropTableValues values={[defaultHeadingTag]} /> | Applies the underlying HTML element            |\n| `className`     | `string`                                                                                           |                                                  | Sets a custom class on the root element        |\n| `id`            | `string`                                                                                           |                                                  | Sets a custom id                               |\n| `ref`           | `React.RefObject`                                                                                  |                                                  | Forward a Ref to the underlying DOM node       |\n| `size`          | <PropTableValues values={HeadingSizes} addLineBreaks />                                            |                                                  | Override the default visual text size          |\n| `weight`        | <PropTableValues values={[...HeadingWeights, 'ResponsiveWeightMap']} addLineBreaks />              |                                                  | Override the default visual text weight        |\n| `stretch`       | <PropTableValues values={[...HeadingStretch, 'ResponsiveStretchMap']} addLineBreaks />             |                                                  | Override the default visual text stretch value |\n| `letterSpacing` | <PropTableValues values={[...HeadingLetterSpacing, 'ResponsiveLetterSpacingMap']} addLineBreaks /> |                                                  | Override the default visual character spacing  |\n","parent":{"relativeDirectory":"components/Heading","name":"react"}},{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/components/Image/index.mdx","frontmatter":{"title":"Image"},"rawBody":"---\ntitle: Image\ndescription: Use the image component to display a graphical representation.\n---\n\nimport ComponentLayout from '../../../src/layouts/component-layout'\nexport default ComponentLayout\n\n## Usage\n\nUse an image to display a graphical representation, such as a photograph or a visual illustration, on a web page. Use it in combination with text to provide context or additional information.\n\n<DoDontContainer>\n  <Do>\n    <img\n      src=\"https://github.com/primer/brand/assets/912236/3ffc80cb-4d7d-4ef4-b66f-10e902d8f17c\"\n      alt=\"\"\n    />\n    <Caption>\n      Use an image to display a photograph in combination with descriptive text\n      to provide context.\n    </Caption>\n  </Do>\n  <Dont>\n    <img\n      src=\"https://github.com/primer/brand/assets/912236/6f29d849-9379-4327-a4aa-e1233e19861b\"\n      alt=\"\"\n    />\n    <Caption>Don't use an icon as an image or illustration.</Caption>\n  </Dont>\n</DoDontContainer>\n\n## Options\n\n### Size\n\nChoose the appropriate dimensions for the image to fit the desired layout using the `width/height` or the `aspect-ratio` properties. Avoid using images that are too large or too small for their intended display. When using images in a list, make sure they are all the same size to achieve a visually balanced layout.\n\n<DoDontContainer stacked>\n  <Do>\n    <img\n      src=\"https://github.com/primer/brand/assets/912236/7e9cf19c-1545-4b47-9ac8-0442050eb509\"\n      alt=\"\"\n    />\n    <Caption>\n      In a list or group, use images of the same size and aspect ratio.\n    </Caption>\n  </Do>\n  <Dont>\n    <img\n      src=\"https://github.com/primer/brand/assets/912236/6efc49d3-f982-4f9f-9951-413a05f329cc\"\n      alt=\"\"\n    />\n    <Caption>Don't use images of different sizes in the same section.</Caption>\n  </Dont>\n</DoDontContainer>\n\n## Accessibility\n\nUse the `alt` attribute to provide alternative text that is displayed if the image cannot be loaded or for accessibility purposes. It is important to include descriptive alternative text that conveys the meaning or content of the image. For more info, see [alternative text for images](https://primer.style/design/guides/accessibility/alternative-text-for-images).\n\nOptimize your images to reduce file size without compromising quality. Smaller file sizes improve page loading speed.\n\n## Related components\n\n- [Card](/components/Card): to display navigational related content with higher visual weight.\n- [River](/components/River): To display a list of content items with a visual asset.\n- [Avatar](/components/Avatar): Use avatar to display a thumbnail representation of a person.\n","parent":{"relativeDirectory":"components/Image","name":"index"}},{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/components/Hero/react.mdx","frontmatter":{"title":"Hero"},"rawBody":"---\ntitle: Hero\nstatus: Experimental\nfigma: https://www.figma.com/file/BJ95AjraesmRCWsKA013GS/Primer-Brand?node-id=431%3A8481\nsource: https://github.com/primer/brand/blob/main/packages/react/src/Hero/Hero.tsx\nstorybook: '/brand/storybook/?path=/story/components-hero--default'\ndescription: Use the hero component to render a full-width banner at the top of a page.\n---\n\nimport ComponentLayout from '../../../src/layouts/component-layout'\nexport default ComponentLayout\n\nimport {\n  HeadingTags,\n  HeadingSizes,\n  HeadingWeights,\n  HeadingStretch,\n  defaultHeadingTag,\n  HeadingLetterSpacing,\n} from '@primer/react-brand'\nimport {Label} from '@primer/react'\nimport {PropTableValues} from '../../../src/components'\n\n```js\nimport {Hero} from '@primer/react-brand'\n```\n\n## Examples\n\n### Default\n\n```jsx live\n<Hero>\n  <Hero.Label>Label</Hero.Label>\n  <Hero.Heading>This is my super sweet hero heading</Hero.Heading>\n  <Hero.Description>\n    Lorem ipsum dolor sit amet, consectetur adipiscing elit. In sapien sit\n    ullamcorper id. Aliquam luctus sed turpis felis nam pulvinar risus\n    elementum.\n  </Hero.Description>\n  <Hero.PrimaryAction href=\"#\">Primary action</Hero.PrimaryAction>\n  <Hero.SecondaryAction href=\"#\">Secondary action</Hero.SecondaryAction>\n</Hero>\n```\n\n### Images\n\n`Hero` can display an optional foreground image. Use `position` to alternate between various layouts.\n\n```jsx live\n<>\n  <Hero>\n    <Hero.Label>Actions</Hero.Label>\n    <Hero.Heading>Automate your workflow from idea to production</Hero.Heading>\n    <Hero.PrimaryAction href=\"#\">Get started with Actions</Hero.PrimaryAction>\n    <Hero.Image\n      src=\"https://via.placeholder.com/600x400/d3d9df/d3d9df.png\"\n      alt=\"placeholder, blank area with an off-white background color\"\n    />\n  </Hero>\n  <br />\n  <Hero align=\"center\">\n    <Hero.Label>Actions</Hero.Label>\n    <Hero.Heading size=\"2\">\n      Automate your workflow from idea to production\n    </Hero.Heading>\n    <Hero.PrimaryAction href=\"#\">Get started with Actions</Hero.PrimaryAction>\n    <Hero.Image\n      position=\"inline-end\"\n      src=\"https://via.placeholder.com/300x450/d3d9df/d3d9df.png\"\n      alt=\"placeholder, blank area with an off-white background color\"\n    />\n  </Hero>\n</>\n```\n\n### Alignment\n\n`Hero` text alignment can be adjusted by changing the `align` prop.\n\n```jsx live\n<Hero align=\"center\">\n  <Hero.Label>Label</Hero.Label>\n  <Hero.Heading>\n    Blazing fast cloud\n    <br />\n    developer environments\n  </Hero.Heading>\n  <Hero.PrimaryAction href=\"#\">Primary action</Hero.PrimaryAction>\n</Hero>\n```\n\n## Component props\n\n### Hero\n\n| Name        | Type                  |  Default  | Description                              |\n| :---------- | :-------------------- | :-------: | :--------------------------------------- |\n| `align`     | `'center'`, `'start'` | `'start'` | Optional text alignment                  |\n| `className` | `string`              |           | Sets a custom class on the root element  |\n| `ref`       | `React.RefObject`     |           | Forward a Ref to the underlying DOM node |\n\n### Hero.Label\n\n| name        | type              | default | description                                  |\n| ----------- | ----------------- | ------- | -------------------------------------------- |\n| `className` | `string`          |         | Sets a custom class on the root of the label |\n| `id`        | `string`          |         | Sets a custom id on the root of the label    |\n| `ref`       | `React.RefObject` |         | Forward a Ref to the underlying DOM node     |\n\nForwards all props from the [Label component](/components/Label), including `size` and `color`.\n\n### Hero.Heading\n\n| name        | type              | default | description                              |\n| ----------- | ----------------- | ------- | ---------------------------------------- |\n| `className` | `string`          |         | Sets a custom class on the root element  |\n| `id`        | `string`          |         | Sets a custom id                         |\n| `ref`       | `React.RefObject` |         | Forward a Ref to the underlying DOM node |\n\nForwards all props from the [Heading component](/components/Heading), including `as`, `size`, and `weight`.\n\n### Hero.Description\n\n| name        | type     | default | description             |\n| ----------- | -------- | ------- | ----------------------- |\n| `className` | `string` |         | Sets a custom CSS class |\n\nForwards `size` and `weight` props from the [Text component](/components/Text).\n\n### Hero.PrimaryAction\n\n| name        | type          | default | description                         |\n| ----------- | ------------- | ------- | ----------------------------------- |\n| `className` | `string`      |         | Primary link custom class           |\n| `href`      | `string`      |         | `href` for primary link             |\n| `as`        | `a`, `button` | `a`     | Applies the underlying HTML element |\n\nForwards all props from the [Button component](/components/Button).\n\n### Hero.SecondaryAction\n\n| name        | type          | default | description                         |\n| ----------- | ------------- | ------- | ----------------------------------- |\n| `className` | `string`      |         | Secondary link custom class         |\n| `href`      | `string`      |         | `href` for secondary link           |\n| `as`        | `a`, `button` | `a`     | Applies the underlying HTML element |\n\nForwards all props from the [Button component](/components/Button).\n\n### Hero.Image\n\n| name       | type                                                                   | default       | description                                  |\n| ---------- | ---------------------------------------------------------------------- | ------------- | -------------------------------------------- |\n| `position` | <PropTableValues values={['inline-end', 'block-end']} addLineBreaks /> | `'block-end'` | Controls positioning of the foreground image |\n\nForwards all props from the [Image component](/components/Image), including `src`, `alt`, and `aspectRatio`.\n","parent":{"relativeDirectory":"components/Hero","name":"react"}},{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/components/Hero/index.mdx","frontmatter":{"title":"Hero"},"rawBody":"---\ntitle: Hero\ndescription: Use the hero component to render a full-width banner at the top of a page.\n---\n\nimport CustomVideoPlayer from '../../../src/components/custom-video-player'\nimport ComponentLayout from '../../../src/layouts/component-layout'\nexport default ComponentLayout\n\n## Anatomy\n\n![An image displaying a hero with a heading, description, primary and secondary actions.](https://github.com/primer/brand/assets/6951037/14759331-3908-4eaf-9d67-db594b2407f0)\n\n- Label: an optional label to provide leading context to the hero.\n- Heading: the main title of the hero.\n- Description: a short description of the hero.\n- Actions: the main and secondary actions the user should take on the page.\n- Image: an optional foreground image that appears adjacent to the text\n\n## Usage\n\nUse the hero component to provide a title, description and action that introduces the main content of a page. The hero component is designed to be positioned at the top of a page and spans the full width of the viewport. Consider using the [CTA banner](/components/CTABanner) to replicate the content and actions in other parts of the page.\n\nBoth heading and description of the hero should be short and descriptive. Heading should be not be longer than 2 lines, and description should be no longer than 3-4 lines.\n\nThe hero component is not designed to provide a lot of information to the user. Consider using other components, such as the [section intro](/components/SectionIntro) or the [river](/components/River) component instead.\n\nThe hero heading is rendered as an `h1` element by default. You can modify the heading level but be aware that this will affect the page's heading structure and may impact accessibility. [See heading accesibility](/components/Heading#accessibility) for more information.\n\nThe hero can optionally include primary and secondary actions. These actions are rendered as a [button group](/components/ButtonGroup) and follow the same guidelines as the button group component.\n\n<DoDontContainer>\n  <Do>\n    <img src=\"https://github.com/primer/brand/assets/6951037/7ea1041a-6b3e-4a7c-a7da-a889ee642023\" />\n    <Caption>\n      Use the hero component to introduce the page with short, descriptive text.\n    </Caption>\n  </Do>\n  <Dont>\n    <img src=\"https://github.com/primer/brand/assets/6951037/ed440ce6-a708-4196-b40b-30a2b6f03c13\" />\n    <Caption>\n      Don't use long, complex text in the hero. Consider splitting the content\n      using other components.\n    </Caption>\n  </Dont>\n</DoDontContainer>\n\n## Options\n\n\n\n### Alignment\n\nHero elements can be aligned to the start or center of the page. By default, the hero is aligned to the start of the page to allow for an image or a visual asset to be positioned on the right of the hero. Use the center alignment if the asset is centered or not present, or the scenario calls for it.\n\n<DoDontContainer stacked>\n  <Do>\n    <img src=\"https://github.com/primer/brand/assets/6951037/d3ce9fb3-e455-4535-8613-72d52d8961dc\" />\n    <Caption>\n      Use left alignment if the hero includes an image or visual asset on the\n      right.\n    </Caption>\n  </Do>\n  <Dont>\n    <img src=\"https://github.com/primer/brand/assets/6951037/4e3db6e1-cdb8-4a1e-a81c-b22f431b0738\" />\n    <Caption>\n      Don't use center alignment if the background interfere with the legibility\n      of the content.\n    </Caption>\n  </Dont>\n</DoDontContainer>\n\n## Related components\n\n- [Section intro](/components/SectionIntro): To provide a title, description and a link to a new section in the page.\n- [River](/components/River): To display a list of content items with a visual asset.\n- [CTABanner](/components/CTABanner): To draw attention to or create urgency around a user action.\n","parent":{"relativeDirectory":"components/Hero","name":"index"}},{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/components/Image/react.mdx","frontmatter":{"title":"Image"},"rawBody":"---\ntitle: Image\nstatus: Experimental\nsource: https://github.com/primer/brand/blob/main/packages/react/src/Image/Image.tsx\nstorybook: '/brand/storybook/?path=/story/components-image--playground'\ndescription: Use the image component to display a graphical representation.\n---\n\nimport ComponentLayout from '../../../src/layouts/component-layout'\nimport {ImageBorderRadiusOptions} from '@primer/react-brand'\nexport default ComponentLayout\n\nimport {Label} from '@primer/react'\n\n```js\nimport {Image} from '@primer/react-brand'\n```\n\n## Examples\n\n### Default\n\nThis component uses the `img` element by default.\n\n```jsx live\n<Image\n  src=\"https://via.placeholder.com/600x400/d3d9df/d3d9df.png\"\n  alt=\"placeholder, blank area with an off-white background color\"\n/>\n```\n\n### Picture\n\nThe `as` prop can be used to set the container of the image to use `picture`.\n\n```jsx live\n<Image\n  as=\"picture\"\n  src=\"https://via.placeholder.com/600x400/d3d9df/d3d9df.png\"\n  alt=\"placeholder, blank area with an off-white background color\"\n/>\n```\n\n### Picture with sources\n\nThe `sources` prop can be used to set the source elements within the `picture` component. This can only be used when `as` is set to `picture`.\n\n```jsx live\n<Image\n  as=\"picture\"\n  src=\"https://via.placeholder.com/600x400/d3d9df/d3d9df.png\"\n  alt=\"placeholder, blank area with an off-white background color\"\n  sources={[\n    {\n      srcset: 'https://via.placeholder.com/600x400/d3d9df/d3d9df.png',\n      media: '(min-width: 600px)',\n    },\n    {\n      srcset: 'https://via.placeholder.com/900x600/d3d9df/d3d9df.png',\n      media: '(min-width: 900px)',\n    },\n  ]}\n/>\n```\n\n### Image with source set\n\nThe `srcSet` prop can be used to set the srcSet of the image. This can only be used when `as` is set to `img`.\n\n```jsx live\n<Image\n  src=\"https://via.placeholder.com/600x400/d3d9df/d3d9df.png\"\n  srcSet=\"https://via.placeholder.com/600x400/d3d9df/d3d9df.png, https://via.placeholder.com/900x600/d3d9df/d3d9df.png 1.5x\"\n  alt=\"placeholder, blank area with an off-white background color\"\n/>\n```\n\n### Aspect ratio\n\nThe `aspectRatio` prop can be used to set the aspect ratio of the image. This is useful when the image is not the same aspect ratio as the container.\n\n```jsx live\n<Image\n  src=\"https://via.placeholder.com/600x400/d3d9df/d3d9df.png\"\n  alt=\"placeholder, blank area with an off-white background color\"\n  aspectRatio=\"16:9\"\n/>\n```\n\n### Height\n\nThe `height` prop can be used to set the height of the image. This can be used along side the `aspectRatio` prop to create a responsive image the same size as other images.\n\n```jsx live\n<Image\n  src=\"https://via.placeholder.com/600x400/d3d9df/d3d9df.png\"\n  alt=\"placeholder, blank area with an off-white background color\"\n  height={200}\n  aspectRatio=\"16:9\"\n/>\n```\n\n### Border radius\n\nThe `borderRadius` prop can be used to apply rounded corners to images using preset values.\n\n```jsx live\n<Stack direction=\"horizontal\">\n  <Image\n    src=\"https://via.placeholder.com/600x400/d3d9df/d3d9df.png\"\n    alt=\"placeholder, blank area with an off-white background color\"\n    height={100}\n    width={100}\n    borderRadius=\"small\"\n  />\n  <Image\n    src=\"https://via.placeholder.com/600x400/d3d9df/d3d9df.png\"\n    alt=\"placeholder, blank area with an off-white background color\"\n    height={100}\n    width={100}\n    borderRadius=\"medium\"\n  />\n  <Image\n    src=\"https://via.placeholder.com/600x400/d3d9df/d3d9df.png\"\n    alt=\"placeholder, blank area with an off-white background color\"\n    height={100}\n    width={100}\n    borderRadius=\"large\"\n  />\n  <Image\n    src=\"https://via.placeholder.com/600x400/d3d9df/d3d9df.png\"\n    alt=\"placeholder, blank area with an off-white background color\"\n    height={100}\n    width={100}\n    borderRadius=\"xlarge\"\n  />\n  <Image\n    src=\"https://via.placeholder.com/600x400/d3d9df/d3d9df.png\"\n    alt=\"placeholder, blank area with an off-white background color\"\n    height={100}\n    width={100}\n    borderRadius=\"full\"\n  />\n</Stack>\n```\n\n### Width\n\nThe `width` prop can be used to set the width of the image. This can be used along side the `aspectRatio` prop to create a responsive image the same size as other images.\n\n```jsx live\n<Image\n  src=\"https://via.placeholder.com/600x400/d3d9df/d3d9df.png\"\n  alt=\"placeholder, blank area with an off-white background color\"\n  width={200}\n  aspectRatio=\"16:9\"\n/>\n```\n\n## Component props\n\n### Image <Label>Required</Label>\n\n| name           | type                                                                       | default     | required | description                                                                                                                                                               |\n| -------------- | -------------------------------------------------------------------------- | ----------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `src`          | `string`                                                                   |             | `true`   | Specifies the path to the image                                                                                                                                           |\n| `alt`          | `string`                                                                   |             | `true`   | Specifies a text value explaining the nature of the image for users of assistive technology                                                                               |\n| `as`           | `img`, `picture`                                                           | `img`       | `false`  | Specification to create a picture component                                                                                                                               |\n| `sources`      | `{srcset: string, media: string}[]`                                        |             | `false`  | When picture is specified in the `as` prop sources allows you to set the source elements.                                                                                 |\n| `aspectRatio`  | `'1:1'`, `'16:9'`, `'16:10'`, `'4:3'`, `'custom'`                          | `undefined` | `false`  | Sets the image aspect ratio. A custom ratio can be provided in the design tokens.                                                                                         |\n| `borderRadius` | <PropTableValues values={[...ImageBorderRadiusOptions]} commaSeparated  /> | `undefined` | `false`  | Applies a system-level border radius value to the Image.                                                                                                                  |\n| `height`       | `number`                                                                   |             | `false`  | The height of the image element or its container if it has an aspect ratio                                                                                                |\n| `width`        | `number`                                                                   |             | `false`  | The width of the image element or its container if it has an aspect ratio                                                                                                 |\n| `loading`      | `eager`, `lazy`                                                            | `eager`     | `false`  | The loading attribute specifies whether a browser should load an image immediately or to defer loading of off-screen images until for example the user scrolls near them. |\n| `decoding`     | `sync`, `async`, `auto`                                                    | `sync`      | `false`  | Sets the image decoding strategy. Representing a hint given to the browser on how it should decode the image.                                                             |\n| `className`    | `string`                                                                   |             | `false`  | Sets a custom CSS class                                                                                                                                                   |\n","parent":{"relativeDirectory":"components/Image","name":"react"}},{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/components/Label/index.mdx","frontmatter":{"title":"Label"},"rawBody":"---\ntitle: Label\ndescription: Use the label component to add metadata or indicate the status of items.\n---\n\nimport {Box as Container} from '@primer/react'\nimport ComponentLayout from '../../../src/layouts/component-layout'\nexport default ComponentLayout\n\n![An image showing a group of labels with different styles, colors, leading icons and content.](https://github.com/primer/brand/assets/6951037/1c9c6b81-0a2a-4a56-a9f5-a9608f89e220)\n\n## Usage\n\nUse labels to indicate the status of an item or to help oraganize and categorize them. E.g, using \"New\" or \"Recommended\". Labels aren't meant to be used as interactive elements. Instead use the [Button](/components/Button) component.\n\n<DoDontContainer>\n  <Do>\n    <img src=\"https://github.com/primer/brand/assets/6951037/5da25ec0-a780-4add-972a-246bf9462e07\" />\n    <Caption>Use labels to categorize an item.</Caption>\n  </Do>\n  <Dont>\n    <img src=\"https://github.com/primer/brand/assets/6951037/976d645c-17ba-45ff-97ea-03c81a4c3b53\" />\n    <Caption>\n      Don't use labels as an interactive or navigational element. Use a button\n      or a link component.\n    </Caption>\n  </Dont>\n</DoDontContainer>\n\nPosition the labels to clearly identify the object they’re informing.\n\n<DoDontContainer>\n  <Do>\n    <img src=\"https://github.com/primer/brand/assets/6951037/467449ad-013d-4b9c-9eec-a4655c4d13ec\" />\n    <Caption>\n      Give labels enough space to be clearly identified. Use size or color to\n      differentiate them if needed.\n    </Caption>\n  </Do>\n  <Dont>\n    <img src=\"https://github.com/primer/brand/assets/6951037/5a32b608-2bc7-417b-b064-42c2308075ea\" />\n    <Caption>\n      When used along with other items, don't place the label too close to them.\n    </Caption>\n  </Dont>\n</DoDontContainer>\n\n### Content\n\nUse Label with with short, scannable text. If possible, use a single word to describe the status of an object. Use two or more words if you need to describe a complex state or category. For example, “Limited availability\" or \"Enterprise only\".\n\n## Options\n\n### Size\n\nLabels come in two sizes: `medium`, and `large`.\n\n### Medium\n\nUse the `medium` size when paired with medium-sized headings or in components such as `Card`.\n\n<Container\n  display=\"grid\"\n  gridTemplateColumns={['1fr', null, null, null, '1fr 1fr']}\n  gridGap={5}\n>\n  <div>\n    <img\n      src=\"https://github.com/primer/brand/assets/912236/2bca5ddd-2422-41a1-a32c-dc6be243f9ce\"\n      alt=\"\"\n    />\n    <Caption>\n      The Card component allows for a medium label to provide extra meta data to\n      the content. In a group of stacked cards, the label helps to quickly scan\n      certain items.\n    </Caption>\n  </div>\n  <div>\n    <img\n      src=\"https://github.com/primer/brand/assets/6951037/c51e151c-d93a-42f8-bf73-6bd15b1c3781\"\n      alt=\"\"\n    />\n    <Caption>\n      Medium labels are great for headings that introduce a section. They help\n      categorize the main topic and provide a visual break.\n    </Caption>\n  </div>\n</Container>\n\n### Large\n\nUse the `large` size when paired with large headings, such as in the `Hero` component.\n\n<div>\n  <img\n    src=\"https://github.com/primer/brand/assets/6951037/13f9debc-3b20-4f77-a509-b8291ca677ae\"\n    alt=\"\"\n  />\n  <Caption>\n    Use large labels with headings that introduce a page. Use it to introduce\n    the main topic or application.\n  </Caption>\n</div>\n\n### Color\n\nThe label offers color options from the [Primer Brand color palette](/primitives/color). These color choices are carefully curated to ensure optimal contrast with the background or surrounding elements. Colors options doesn't follow a strict functional meaning. We recommend using the colors that best fit the context of your application. For example, blue and purple gradient for `Copilot` examples.\n\n![An image showing multiple label options with different colors.](https://github.com/primer/brand/assets/6951037/41817520-87bb-41bc-9586-95155604b83d)\n\n### Leading visual\n\nYou can add a leading icon to enhance the visual context. It is recommended you use an [Octicon](https://primer.style/octicons). Use an icon that reinforces the meaning of the label. For example, a `StarIcon` for a \"Starred\" label.\n\n![An image showing multiple label options with different leading visuals.](https://github.com/primer/brand/assets/6951037/d5fdf463-f5ce-4806-886d-1b8f44278308)\n\n## Related components\n\n- [Button](/components/Button): To provide an action.\n- [Link](/components/Link): To provide navigation.\n","parent":{"relativeDirectory":"components/Label","name":"index"}},{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/components/Label/react.mdx","frontmatter":{"title":"Label"},"rawBody":"---\ntitle: Label\nstatus: Experimental\nfigma: 'https://www.figma.com/file/BJ95AjraesmRCWsKA013GS/Primer-Brand?node-id=6084-28401'\nsource: https://github.com/primer/brand/blob/main/packages/react/src/Label/Label.tsx\nstorybook: '/brand/storybook/?path=/story/components-label--default'\na11yReviewed: true\ndescription: Use the label component to add metadata or indicate the status of items.\n---\n\nimport ComponentLayout from '../../../src/layouts/component-layout'\nexport default ComponentLayout\n\nimport {Label, LabelColors, LabelSizes} from '@primer/react-brand'\nimport {StarIcon, CopilotIcon} from '@primer/octicons-react'\nimport {PropTableValues} from '../../../src/components'\n\n```js\nimport {Label} from '@primer/react-brand'\n```\n\n## Examples\n\n### Default\n\nThis is the default variant for the Label component. It corresponds to the `medium`  size and `default` color.\n\n```jsx live\n<Label>Default</Label>\n```\n\n### Sizes\n\nUse the `size` prop to change the size of the `Label` component. The `medium` size is recommended for small titles or headings and the `large` size is recommended for large titles or section intros.\n\n```jsx live\n<Stack direction=\"horizontal\" alignItems=\"flex-start\" padding=\"none\">\n  <Label size=\"medium\">Medium</Label>\n  <Label size=\"large\">Large</Label>\n</Stack>\n```\n\n### Color\n\nUse the `color` prop to change the color of the `Label` component. The `default` color is recommended for use with neutral backgrounds.\n\n```jsx live\n<Stack direction=\"horizontal\" alignItems=\"flex-start\" padding=\"none\">\n  <Label color=\"blue\">Blue</Label>\n  <Label color=\"red\">Red</Label>\n  <Label color=\"green-blue\">Green blue</Label>\n  <Label color=\"red\">Red</Label>\n  <Label color=\"pink-blue\">Pink blue</Label>\n  <Label color=\"orange\">Orange</Label>\n</Stack>\n```\n\n### Leading visual\n\nYou can add a leading icon to enhance the visual context. It is recommended you use an [Octicon](https://primer.style/octicons) here.\n\n```jsx live\n<Stack direction=\"horizontal\" alignItems=\"flex-start\" padding=\"none\">\n  <Label color=\"yellow\" leadingVisual={<StarIcon />}>\n    Starred\n  </Label>\n  <Label color=\"blue-purple\" leadingVisual={<CopilotIcon />}>\n    Copilot\n  </Label>\n</Stack>\n```\n\n## Component props\n\n### Label\n\n| Name            | Type                                                   |   Default   | Description                                         |\n| :-------------- | :----------------------------------------------------- | :---------: | :-------------------------------------------------- |\n| `leadingVisual` | `ReactElement`                                         | `undefined` | The leading visual appears before the Label content |\n| `size`          | <PropTableValues values={LabelSizes} addLineBreaks />  | `'medium'`  | The size variations available in Label              |\n| `color`         | <PropTableValues values={LabelColors} addLineBreaks /> | `'default'` | The color variations available in Label             |\n","parent":{"relativeDirectory":"components/Label","name":"react"}},{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/components/LogoSuite/index.mdx","frontmatter":{"title":"Logo suite"},"rawBody":"---\ntitle: Logo suite\ndescription: Use a logo suite to present a list logos, such as sponsors or vendors.\n---\n\nimport CustomVideoPlayer from '../../../src/components/custom-video-player'\nimport ComponentLayout from '../../../src/layouts/component-layout'\nexport default ComponentLayout\n\n## Anatomy\n\n![A complete logo suite component, featuring a heading, description and two rows of 6 vendor logos in their default muted colors](https://github.com/primer/brand/assets/13340707/1a5e494f-7bd3-497c-933c-6c809a78422c)\n\n- **Heading:** an optional main title of the logo suite.\n- **Description:** optional information that describes the logos shown.\n- **Logobar:** a space for a list of logos, with three appearance options.\n- **Divider:** an optional divider to separate the logo suite from following content.\n\n## Usage\n\nUse the logo suite component to showcase a list of logos, such as for clients, sponsors, or related enterprises.\n\nA logo suite is intended to build credibility, trust, and provide social proof by displaying consistent logos.\n\nLogo suite should be used for groups of logos more than 4 and less than 12. In scenarios hoping to showcase more than 12 logos, considering stacking two components together. To create the best visual consistency and balance, rearrange and resize the logos when necessary to create similar area distribution and attention to each of the logos.\n\n### Arrangement\n\n<DoDontContainer stacked>\n  <Do>\n    <img\n      src=\"https://github.com/primer/brand/assets/131988618/da2bd3f3-c7d8-4880-b30d-c05dd4897ba6\"\n      alt=\"\"\n    />\n    <Caption>\n      Arrange the logos so that the sizes, heights, colors, and areas of the\n      separate logos create consistency and balance.\n    </Caption>\n  </Do>\n  <Dont>\n    <img\n      src=\"https://github.com/primer/brand/assets/13340707/d7ac28ec-e341-4d77-8220-fd4197d5613b\"\n      alt=\"\"\n    />\n    <Caption>\n      Don’t place logos without considering the spatial balance of the logo\n      suite. Rearrange the logos to prevent using more than two rows or\n      imbalance.\n    </Caption>\n  </Dont>\n</DoDontContainer>\n\n### Contextual information\n\n<DoDontContainer stacked>\n  <Do>\n    <img\n      src=\"https://github.com/primer/brand/assets/131988618/79680b75-9e3b-4eb1-9371-2d8ee45a6dc1\"\n      alt=\"\"\n    />\n    <Caption>\n      Do publish the logo suite with context. Introduce the logos and, when\n      applicable, share how the logos have been grouped together.\n    </Caption>\n  </Do>\n  <Dont>\n    <img\n      src=\"https://github.com/primer/brand/assets/131988618/5ab14ace-9c9e-425f-8b5c-73de82340733\"\n      alt=\"\"\n    />\n    <Caption>\n      Don’t use the logo suite without a heading/description. Consider turning\n      off a visible description if needed.\n    </Caption>\n  </Dont>\n</DoDontContainer>\n\n### Color uniformity\n\n<DoDontContainer stacked>\n  <Do>\n    <img\n      src=\"https://github.com/primer/brand/assets/13340707/b7126430-0d81-4fb6-bd7d-8f35cff923dd\"\n      alt=\"\"\n    />\n    <Caption>\n      Ensure that the colors are consistent across the logos to match the logo\n      bar option. Ensure spacing between logos are consistent.\n    </Caption>\n  </Do>\n  <Dont>\n    <img\n      src=\"https://github.com/primer/brand/assets/13340707/85f477d5-9c3d-4db3-847c-1bcf3539ab67\"\n      alt=\"\"\n    />\n    <Caption>\n      Don’t use logos with inconsistent colors or don’t match the logo bar\n      option. Don’t use inconsistent spacing.\n    </Caption>\n  </Dont>\n</DoDontContainer>\n\n## Options\n\n### Logo bar appearance\n\nThe logo suite offers three appearance options:\n\n- `muted`: The muted option is suitable for displaying 6+ logos and displays logos in a `secondary` color. It allows for two rows of logos, maintaining a clean and organized appearance.\n- `emphasis`: The emphasis option is designed for spotlighting ~5 logos in the `primary` color. It displays logos larger, drawing more attention to the logos.\n- `marquee`: The marquee option provides a flowing logo animation and can accommodate up to 12 logos. It is ideal for scenarios with limited page real estate.\n\nAll three options on the logo bar contains an optional divider. This divider can serve as a visual separator. These three options can be used adjacently.\n\n<div>\n  <img\n    src=\"https://github.com/primer/brand/assets/131988618/d525e6b1-bf67-4684-9300-401ef7686b47\"\n    alt=\"\"\n  />\n  <Caption>\n    Use the default muted option when displaying 6-12 logos across two rows. 2\n    rows (when using 6-12 logos).\n  </Caption>\n</div>\n\n<div>\n  <img\n    src=\"https://github.com/primer/brand/assets/131988618/ce3e22f1-9852-4869-830b-5d54b6a1a039\"\n    alt=\"\"\n  />\n  <Caption>\n    The emphasis option can be used to spotlight logos. It is best used with 6\n    or less logos to create 1 row.\n  </Caption>\n</div>\n\n<div>\n  <img\n    src=\"https://github.com/primer/brand/assets/131988618/409d7a90-d086-438b-80ab-31350f6c42fa\"\n    alt=\"\"\n  />\n  <Caption>The marquee options allows for different speed options.</Caption>\n</div>\n\n### Alignment\n\nThe logo suite comes with start and center align options. Only the heading and description will have visible changes to their alignment as logos will be consistently center aligned to create balance. By default, the logo suite is aligned to the start of the page.\n\n## Accessibility\n\nAlways ensure that a heading is provided to the logo suite. Headings provide leading context to the logos shown, and serve as a navigation hook for assistive technologies. It can be visually hidden if needed.\n\n## Related components\n\n- [Image](/components/Image): to display a graphical representation.\n- [Ordered List](/components/OrderedList): to display a list of numbered items.\n- [Unordered List](/components/UnorderedList): to present a collection of items without specific ordering.\n","parent":{"relativeDirectory":"components/LogoSuite","name":"index"}},{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/components/LogoSuite/react.mdx","frontmatter":{"title":"Logo suite"},"rawBody":"---\ntitle: Logo suite\nstatus: Experimental\na11yReviewed: false\nsource: https://github.com/primer/brand/blob/main/packages/react/src/LogoSuite/LogoSuite.tsx\nstorybook: '/brand/storybook/?path=/story/components-logosuite--default'\ndescription: Use a logo suite to present a list logos, such as sponsors or vendors.\n---\n\nimport ComponentLayout from '../../../src/layouts/component-layout'\nexport default ComponentLayout\n\nimport {Label} from '@primer/react'\nimport {Box as Container} from '@primer/react'\nimport {PropTableValues} from '../../../src/components'\n\n```js\nimport {LogoSuite} from '@primer/react-brand'\n```\n\n## Examples\n\n### Default\n\n```jsx live\n<LogoSuite>\n  <LogoSuite.Heading>\n    The ultimate developer experience is here.\n  </LogoSuite.Heading>\n  <LogoSuite.Description>\n    Trusted by the world’s leading organizations\n  </LogoSuite.Description>\n  <LogoSuite.Logobar>\n    <svg\n      role=\"img\"\n      focusable=\"false\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      viewBox=\"0 0 45 16\"\n      width=\"45\"\n      height=\"16\"\n    >\n      <title>GitHub</title>\n      <path d=\"M8.81 7.35v5.74c0 .04-.01.11-.06.13 0 0-1.25.89-3.31.89-2.49 0-5.44-.78-5.44-5.92S2.58 1.99 5.1 2c2.18 0 3.06.49 3.2.58.04.05.06.09.06.14L7.94 4.5c0 .09-.09.2-.2.17-.36-.11-.9-.33-2.17-.33-1.47 0-3.05.42-3.05 3.73s1.5 3.7 2.58 3.7c.92 0 1.25-.11 1.25-.11v-2.3H4.88c-.11 0-.19-.08-.19-.17V7.35c0-.09.08-.17.19-.17h3.74c.11 0 .19.08.19.17Zm35.85 2.33c0 3.43-1.11 4.41-3.05 4.41-1.64 0-2.52-.83-2.52-.83s-.04.46-.09.52c-.03.06-.08.08-.14.08h-1.48c-.1 0-.19-.08-.19-.17l.02-11.11c0-.09.08-.17.17-.17h2.13c.09 0 .17.08.17.17v3.77s.82-.53 2.02-.53l-.01-.02c1.2 0 2.97.45 2.97 3.88ZM27.68 2.43c.09 0 .17.08.17.17v11.11c0 .09-.08.17-.17.17h-2.13c-.09 0-.17-.08-.17-.17l.02-4.75h-3.31v4.75c0 .09-.08.17-.17.17h-2.13c-.08 0-.17-.08-.17-.17V2.6c0-.09.08-.17.17-.17h2.13c.09 0 .17.08.17.17v4.09h3.31V2.6c0-.09.08-.17.17-.17Zm8.26 3.64c.11 0 .19.08.19.17l-.02 7.47c0 .09-.06.17-.17.17H34.6c-.07 0-.14-.04-.16-.09-.03-.06-.08-.45-.08-.45s-1.13.77-2.52.77c-1.69 0-2.92-.55-2.92-2.75V6.25c0-.09.08-.17.17-.17h2.14c.09 0 .17.08.17.17V11c0 .75.22 1.09.97 1.09s1.3-.39 1.3-.39V6.26c0-.11.06-.19.17-.19Zm-17.406 5.971h.005a.177.177 0 0 1 .141.179v1.5c0 .07-.03.14-.09.16-.1.05-.74.22-1.27.22-1.16 0-2.86-.25-2.86-2.69V8.13h-1.11c-.09 0-.17-.08-.17-.19V6.58c0-.08.05-.15.13-.17.07-.01 1.16-.28 1.16-.28V3.96c0-.08.05-.13.14-.13h2.16c.09 0 .14.05.14.13v2.11h1.59c.08 0 .16.08.16.17v1.7c0 .11-.07.19-.16.19h-1.59v3.131c0 .47.27.83 1.05.83.247 0 .481-.049.574-.05ZM12.24 6.06c.09 0 .17.08.17.17v7.37c0 .18-.05.27-.25.27h-1.92c-.17 0-.3-.07-.3-.27V6.26c0-.11.08-.2.17-.2Zm29.99 3.78c0-1.81-.73-2.05-1.5-1.97-.6.04-1.08.34-1.08.34v3.52s.49.34 1.22.36c1.03.03 1.36-.34 1.36-2.25ZM11.19 2.68c.75 0 1.36.61 1.36 1.38 0 .77-.61 1.38-1.36 1.38-.77 0-1.38-.61-1.38-1.38 0-.77.61-1.38 1.38-1.38Zm7.34 9.35v.001l.01.01h-.001l-.005-.001v.001c-.009-.001-.015-.011-.024-.011Z\"></path>\n    </svg>\n    <svg\n      role=\"img\"\n      focusable=\"false\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      viewBox=\"0 0 337.6 72\"\n    >\n      <title>Microsoft</title>\n      <path\n        fill=\"#737373\"\n        d=\"M140.4 14.4v43.2h-7.5V23.7h-.1l-13.4 33.9h-5l-13.7-33.9h-.1v33.9h-6.9V14.4h10.8l12.4 32h.2l13.1-32h10.2zm6.2 3.3c0-1.2.4-2.2 1.3-3 .9-.8 1.9-1.2 3.1-1.2 1.3 0 2.4.4 3.2 1.2s1.3 1.8 1.3 3-.4 2.2-1.3 3c-.9.8-1.9 1.2-3.2 1.2s-2.3-.4-3.1-1.2c-.8-.9-1.3-1.9-1.3-3zm8.1 8.9v31h-7.3v-31h7.3zm22.1 25.7c1.1 0 2.3-.2 3.6-.8 1.3-.5 2.5-1.2 3.6-2v6.8c-1.2.7-2.5 1.2-4 1.5-1.5.3-3.1.5-4.9.5-4.6 0-8.3-1.4-11.1-4.3-2.9-2.9-4.3-6.6-4.3-11 0-5 1.5-9.1 4.4-12.3 2.9-3.2 7-4.8 12.4-4.8 1.4 0 2.8.2 4.1.5 1.4.3 2.5.8 3.3 1.2v7c-1.1-.8-2.3-1.5-3.4-1.9-1.2-.4-2.4-.7-3.6-.7-2.9 0-5.2.9-7 2.8s-2.6 4.4-2.6 7.6c0 3.1.9 5.6 2.6 7.3 1.7 1.7 4 2.6 6.9 2.6zm27.9-26.2c.6 0 1.1 0 1.6.1s.9.2 1.2.3v7.4c-.4-.3-.9-.6-1.7-.8s-1.6-.4-2.7-.4c-1.8 0-3.3.8-4.5 2.3s-1.9 3.8-1.9 7v15.6h-7.3v-31h7.3v4.9h.1c.7-1.7 1.7-3 3-4 1.4-.9 3-1.4 4.9-1.4zm3.2 16.5c0-5.1 1.5-9.2 4.3-12.2 2.9-3 6.9-4.5 12-4.5 4.8 0 8.6 1.4 11.3 4.3s4.1 6.8 4.1 11.7c0 5-1.5 9-4.3 12-2.9 3-6.8 4.5-11.8 4.5-4.8 0-8.6-1.4-11.4-4.2-2.8-2.9-4.2-6.8-4.2-11.6zm7.6-.3c0 3.2.7 5.7 2.2 7.4s3.6 2.6 6.3 2.6c2.6 0 4.7-.8 6.1-2.6 1.4-1.7 2.1-4.2 2.1-7.6 0-3.3-.7-5.8-2.1-7.6-1.4-1.7-3.5-2.6-6-2.6-2.7 0-4.7.9-6.2 2.7-1.7 1.9-2.4 4.4-2.4 7.7zm35-7.5c0 1 .3 1.9 1 2.5.7.6 2.1 1.3 4.4 2.2 2.9 1.2 5 2.5 6.1 3.9 1.2 1.5 1.8 3.2 1.8 5.3 0 2.9-1.1 5.2-3.4 7-2.2 1.8-5.3 2.6-9.1 2.6-1.3 0-2.7-.2-4.3-.5-1.6-.3-2.9-.7-4-1.2v-7.2c1.3.9 2.8 1.7 4.3 2.2 1.5.5 2.9.8 4.2.8 1.6 0 2.9-.2 3.6-.7.8-.5 1.2-1.2 1.2-2.3 0-1-.4-1.8-1.2-2.6-.8-.7-2.4-1.5-4.6-2.4-2.7-1.1-4.6-2.4-5.7-3.8s-1.7-3.2-1.7-5.4c0-2.8 1.1-5.1 3.3-6.9 2.2-1.8 5.1-2.7 8.6-2.7 1.1 0 2.3.1 3.6.4s2.5.6 3.4.9V34c-1-.6-2.1-1.2-3.4-1.7-1.3-.5-2.6-.7-3.8-.7-1.4 0-2.5.3-3.2.8-.7.7-1.1 1.4-1.1 2.4zm16.4 7.8c0-5.1 1.5-9.2 4.3-12.2 2.9-3 6.9-4.5 12-4.5 4.8 0 8.6 1.4 11.3 4.3s4.1 6.8 4.1 11.7c0 5-1.5 9-4.3 12-2.9 3-6.8 4.5-11.8 4.5-4.8 0-8.6-1.4-11.4-4.2-2.7-2.9-4.2-6.8-4.2-11.6zm7.6-.3c0 3.2.7 5.7 2.2 7.4s3.6 2.6 6.3 2.6c2.6 0 4.7-.8 6.1-2.6 1.4-1.7 2.1-4.2 2.1-7.6 0-3.3-.7-5.8-2.1-7.6-1.4-1.7-3.5-2.6-6-2.6-2.7 0-4.7.9-6.2 2.7-1.6 1.9-2.4 4.4-2.4 7.7zm48.4-9.7H312v25h-7.4v-25h-5.2v-6h5.2v-4.3c0-3.2 1.1-5.9 3.2-8s4.8-3.1 8.1-3.1c.9 0 1.7.1 2.4.1s1.3.2 1.8.4V18c-.2-.1-.7-.3-1.3-.5-.6-.2-1.3-.3-2.1-.3-1.5 0-2.7.5-3.5 1.4-.8.9-1.2 2.4-1.2 4.2v3.7h10.9v-7l7.3-2.2v9.2h7.4v6h-7.4V47c0 1.9.4 3.2 1 4 .7.8 1.8 1.2 3.3 1.2.4 0 .9-.1 1.5-.3.6-.2 1.1-.4 1.5-.7v6c-.5.3-1.2.5-2.3.7-1.1.2-2.1.3-3.2.3-3.1 0-5.4-.8-6.9-2.4-1.5-1.6-2.3-4.1-2.3-7.4l.1-15.8z\"\n      />\n      <path fill=\"#F25022\" d=\"M0 0h34.2v34.2H0z\" />\n      <path fill=\"#7FBA00\" d=\"M37.8 0H72v34.2H37.8z\" />\n      <path fill=\"#00A4EF\" d=\"M0 37.8h34.2V72H0z\" />\n      <path fill=\"#FFB900\" d=\"M37.8 37.8H72V72H37.8z\" />\n    </svg>\n    <svg\n      role=\"img\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      viewBox=\"0 0 291 79.46\"\n      width=\"291\"\n      height=\"79.46\"\n    >\n      <title>LinkedIn</title>\n      <path\n        d=\"M239.33 95.036c0 2.96 2.46 5.361 5.495 5.361h63.376c3.035 0 5.496-2.401 5.496-5.361V30.919c0-2.961-2.46-5.361-5.496-5.361h-63.376c-3.035 0-5.495 2.4-5.495 5.361v64.117z\"\n        style={{\n          fill: 'inherit',\n          fillOpacity: 1,\n          fillRule: 'nonzero',\n          stroke: 'none',\n        }}\n        transform=\"matrix(1.01883 0 0 -1.01883 -29.952 104.07)\"\n      />\n      <path\n        d=\"M31.152 37.709h31.035v10.189H42.383v38.874H31.152V37.709zM77.9 37.709v33.793H66.668V37.709H77.9zm-5.616 38.407c3.917 0 6.355 2.595 6.355 5.84-.073 3.315-2.438 5.837-6.28 5.837-3.843 0-6.355-2.522-6.355-5.837 0-3.245 2.437-5.84 6.207-5.84h.073zM83.115 37.709h11.233v18.872c0 1.01.073 2.019.37 2.741.811 2.017 2.66 4.107 5.763 4.107 4.065 0 5.69-3.1 5.69-7.64v-18.08h11.232v19.377c0 10.38-5.542 15.21-12.932 15.21-6.06 0-8.72-3.387-10.198-5.694h.075v4.9H83.116c.147-3.171 0-33.793 0-33.793zM133.249 86.772h-11.233V37.709h11.233v10.956l2.807 3.534 8.794-14.49h13.818l-14.779 20.977 12.932 14.272h-13.522s-9.237-12.769-10.05-14.283v28.097z\"\n        style={{\n          fill: 'inherit',\n          fillOpacity: 1,\n          fillRule: 'evenodd',\n          stroke: 'none',\n        }}\n        transform=\"matrix(1.01883 0 0 -1.01883 -29.952 104.07)\"\n      />\n      <path\n        d=\"M188.706 51.805c.148.868.37 2.533.37 4.415 0 8.736-4.435 17.604-16.11 17.604-12.488 0-18.252-9.877-18.252-18.835 0-11.08 7.02-18 19.287-18 4.877 0 9.384.72 13.08 2.234l-1.48 7.418c-3.029-1.005-6.132-1.507-9.974-1.507-5.247 0-9.828 2.153-10.198 6.743l23.277-.07zm-23.35 7.599c.295 2.884 2.216 7.138 7.02 7.138 5.097 0 6.28-4.543 6.28-7.138h-13.3zM216.801 86.772V69.788h-.147c-1.627 2.377-5.026 3.963-9.533 3.963-8.646 0-16.257-6.92-16.184-18.741 0-10.958 6.873-18.094 15.444-18.094 4.656 0 9.09 2.019 11.306 5.912h.222l.444-5.119h9.976c-.148 2.379-.297 6.488-.297 10.524v38.539h-11.231zm0-33.421c0-.864-.074-1.73-.222-2.45-.664-3.1-3.325-5.262-6.576-5.262-4.656 0-7.685 3.748-7.685 9.659 0 5.55 2.586 10.019 7.758 10.019 3.473 0 5.912-2.378 6.578-5.333.147-.65.147-1.371.147-2.019v-4.614z\"\n        style={{\n          fill: 'inherit',\n          fillOpacity: 1,\n          fillRule: 'evenodd',\n          stroke: 'none',\n        }}\n        transform=\"matrix(1.01883 0 0 -1.01883 -29.952 104.07)\"\n      />\n      <path\n        d=\"M261.873 37.749v33.794H250.64V37.749h11.233zm-5.617 38.408c3.917 0 6.355 2.595 6.355 5.838-.073 3.316-2.438 5.839-6.28 5.839-3.843 0-6.355-2.523-6.355-5.839 0-3.243 2.438-5.838 6.207-5.838h.073zM268.088 37.749h11.232v18.872c0 1.01.073 2.019.37 2.741.812 2.018 2.66 4.108 5.763 4.108 4.065 0 5.69-3.099 5.69-7.642V37.749h11.232v19.377c0 10.38-5.541 15.21-12.931 15.21-6.06 0-8.72-3.387-10.198-5.694h.075v4.901h-11.233c.148-3.171 0-33.794 0-33.794z\"\n        style={{\n          fill: 'var(--brand-color-canvas-default)',\n          fillOpacity: 1,\n          fillRule: 'evenodd',\n          stroke: 'none',\n        }}\n        transform=\"matrix(1.01883 0 0 -1.01883 -29.952 104.07)\"\n      />\n    </svg>\n  </LogoSuite.Logobar>\n</LogoSuite>\n```\n\n### Marquee\n\n```jsx live\n<>\n  <LogoSuite>\n    <LogoSuite.Heading visuallyHidden>Featured sponsors</LogoSuite.Heading>\n    <LogoSuite.Description>Speed: Default</LogoSuite.Description>\n    <LogoSuite.Logobar marquee>\n      <svg role=\"img\" viewBox=\"0 0 300 100\">\n        <title>Placeholder logo</title>\n        <rect width=\"100%\" height=\"100%\" />\n      </svg>\n      <svg role=\"img\" viewBox=\"0 0 300 100\">\n        <title>Placeholder logo</title>\n        <rect width=\"100%\" height=\"100%\" />\n      </svg>\n      <svg role=\"img\" viewBox=\"0 0 300 100\">\n        <title>Placeholder logo</title>\n        <rect width=\"100%\" height=\"100%\" />\n      </svg>\n    </LogoSuite.Logobar>\n    <LogoSuite.Logobar marquee marqueeSpeed=\"slow\">\n      <svg role=\"img\" viewBox=\"0 0 300 100\">\n        <title>Placeholder logo</title>\n        <rect width=\"100%\" height=\"100%\" />\n      </svg>\n      <svg role=\"img\" viewBox=\"0 0 300 100\">\n        <title>Placeholder logo</title>\n        <rect width=\"100%\" height=\"100%\" />\n      </svg>\n      <svg role=\"img\" viewBox=\"0 0 300 100\">\n        <title>Placeholder logo</title>\n        <rect width=\"100%\" height=\"100%\" />\n      </svg>\n    </LogoSuite.Logobar>\n  </LogoSuite>\n  <br />\n  <LogoSuite>\n    <LogoSuite.Heading visuallyHidden>Featured sponsors</LogoSuite.Heading>\n    <LogoSuite.Description>Speed: Slow</LogoSuite.Description>\n    <LogoSuite.Logobar marquee marqueeSpeed=\"slow\">\n      <svg role=\"img\" viewBox=\"0 0 300 100\">\n        <title>Placeholder logo</title>\n        <rect width=\"100%\" height=\"100%\" />\n      </svg>\n      <svg role=\"img\" viewBox=\"0 0 300 100\">\n        <title>Placeholder logo</title>\n        <rect width=\"100%\" height=\"100%\" />\n      </svg>\n      <svg role=\"img\" viewBox=\"0 0 300 100\">\n        <title>Placeholder logo</title>\n        <rect width=\"100%\" height=\"100%\" />\n      </svg>\n      <svg role=\"img\" viewBox=\"0 0 300 100\">\n        <title>Placeholder logo</title>\n        <rect width=\"100%\" height=\"100%\" />\n      </svg>\n      <svg role=\"img\" viewBox=\"0 0 300 100\">\n        <title>Placeholder logo</title>\n        <rect width=\"100%\" height=\"100%\" />\n      </svg>\n      <svg role=\"img\" viewBox=\"0 0 300 100\">\n        <title>Placeholder logo</title>\n        <rect width=\"100%\" height=\"100%\" />\n      </svg>\n    </LogoSuite.Logobar>\n  </LogoSuite>\n</>\n```\n\n### Stacking for hierarchy\n\n```jsx live\n<LogoSuite>\n  <LogoSuite.Heading>\n    Build with us\n  </LogoSuite.Heading>\n  <LogoSuite.Description>\n    We're trusted by the world's leading organizations\n  </LogoSuite.Description>\n  <LogoSuite.Logobar variant=\"emphasis\">\n    <svg role=\"img\" viewBox=\"0 0 300 100\">\n      <title>Placeholder logo</title>\n      <rect width=\"100%\" height=\"100%\" />\n    </svg>\n    <svg role=\"img\" viewBox=\"0 0 300 100\">\n      <title>Placeholder logo</title>\n      <rect width=\"100%\" height=\"100%\" />\n    </svg>\n    <svg role=\"img\" viewBox=\"0 0 300 100\">\n      <title>Placeholder logo</title>\n      <rect width=\"100%\" height=\"100%\" />\n    </svg>\n  </LogoSuite.Logobar>\n</LogoSuite>\n<LogoSuite>\n  <LogoSuite.Heading visuallyHidden>\n    Other partners\n  </LogoSuite.Heading>\n  <LogoSuite.Logobar>\n    <svg role=\"img\" viewBox=\"0 0 300 100\">\n      <title>Placeholder logo</title>\n      <rect width=\"100%\" height=\"100%\" />\n    </svg>\n    <svg role=\"img\" viewBox=\"0 0 300 100\">\n      <title>Placeholder logo</title>\n      <rect width=\"100%\" height=\"100%\" />\n    </svg>\n    <svg role=\"img\" viewBox=\"0 0 300 100\">\n      <title>Placeholder logo</title>\n      <rect width=\"100%\" height=\"100%\" />\n    </svg>\n     <svg role=\"img\" viewBox=\"0 0 300 100\">\n      <title>Placeholder logo</title>\n      <rect width=\"100%\" height=\"100%\" />\n    </svg>\n    <svg role=\"img\" viewBox=\"0 0 300 100\">\n      <title>Placeholder logo</title>\n      <rect width=\"100%\" height=\"100%\" />\n    </svg>\n    <svg role=\"img\" viewBox=\"0 0 300 100\">\n      <title>Placeholder logo</title>\n      <rect width=\"100%\" height=\"100%\" />\n    </svg>\n    <svg role=\"img\" viewBox=\"0 0 300 100\">\n      <title>Placeholder logo</title>\n      <rect width=\"100%\" height=\"100%\" />\n    </svg>\n    <svg role=\"img\" viewBox=\"0 0 300 100\">\n      <title>Placeholder logo</title>\n      <rect width=\"100%\" height=\"100%\" />\n    </svg>\n  </LogoSuite.Logobar>\n</LogoSuite>\n\n```\n\n### Visually hidden heading\n\nA heading element must be present as it serves as a navigation hook for assistive technology. Use the `visuallyHidden` prop if you need to hide the heading.\n\n```jsx live\n<LogoSuite>\n  <LogoSuite.Heading visuallyHidden>\n    The ultimate developer experience is here.\n  </LogoSuite.Heading>\n  <LogoSuite.Description>\n    Trusted by the world’s leading organizations\n  </LogoSuite.Description>\n  <LogoSuite.Logobar>\n    <svg role=\"img\" viewBox=\"0 0 300 100\">\n      <title>Placeholder logo</title>\n      <rect width=\"100%\" height=\"100%\" />\n    </svg>\n    <svg role=\"img\" viewBox=\"0 0 300 100\">\n      <title>Placeholder logo</title>\n      <rect width=\"100%\" height=\"100%\" />\n    </svg>\n    <svg role=\"img\" viewBox=\"0 0 300 100\">\n      <title>Placeholder logo</title>\n      <rect width=\"100%\" height=\"100%\" />\n    </svg>\n    <svg role=\"img\" viewBox=\"0 0 300 100\">\n      <title>Placeholder logo</title>\n      <rect width=\"100%\" height=\"100%\" />\n    </svg>\n  </LogoSuite.Logobar>\n</LogoSuite>\n```\n\n### Alternative alignment\n\n`LogoSuite` will center content by default. You may optionally align the content to the `start`, or `justify` it.\n\n```jsx live\n<>\n  <LogoSuite align=\"start\">\n    <LogoSuite.Heading>Start</LogoSuite.Heading>\n    <LogoSuite.Logobar>\n      <svg role=\"img\" viewBox=\"0 0 300 100\">\n        <title>Placeholder logo</title>\n        <rect width=\"100%\" height=\"100%\" />\n      </svg>\n      <svg role=\"img\" viewBox=\"0 0 300 100\">\n        <title>Placeholder logo</title>\n        <rect width=\"100%\" height=\"100%\" />\n      </svg>\n      <svg role=\"img\" viewBox=\"0 0 300 100\">\n        <title>Placeholder logo</title>\n        <rect width=\"100%\" height=\"100%\" />\n      </svg>\n    </LogoSuite.Logobar>\n  </LogoSuite>\n  <br />\n  <LogoSuite align=\"justify\">\n    <LogoSuite.Heading>Justified</LogoSuite.Heading>\n    <LogoSuite.Logobar>\n      <svg role=\"img\" viewBox=\"0 0 300 100\">\n        <title>Placeholder logo</title>\n        <rect width=\"100%\" height=\"100%\" />\n      </svg>\n      <svg role=\"img\" viewBox=\"0 0 300 100\">\n        <title>Placeholder logo</title>\n        <rect width=\"100%\" height=\"100%\" />\n      </svg>\n      <svg role=\"img\" viewBox=\"0 0 300 100\">\n        <title>Placeholder logo</title>\n        <rect width=\"100%\" height=\"100%\" />\n      </svg>\n    </LogoSuite.Logobar>\n  </LogoSuite>\n</>\n```\n\n### Emphasis\n\nLogobars using the `emphasis` variant will appear with relatively higher contrast, and in a larger size.\n\n```jsx live\n<LogoSuite>\n  <LogoSuite.Heading visuallyHidden>Emphasis</LogoSuite.Heading>\n  <LogoSuite.Logobar variant=\"emphasis\">\n    <svg\n      role=\"img\"\n      focusable=\"false\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      viewBox=\"0 0 45 16\"\n      width=\"45\"\n      height=\"16\"\n    >\n      <title>GitHub</title>\n      <path d=\"M8.81 7.35v5.74c0 .04-.01.11-.06.13 0 0-1.25.89-3.31.89-2.49 0-5.44-.78-5.44-5.92S2.58 1.99 5.1 2c2.18 0 3.06.49 3.2.58.04.05.06.09.06.14L7.94 4.5c0 .09-.09.2-.2.17-.36-.11-.9-.33-2.17-.33-1.47 0-3.05.42-3.05 3.73s1.5 3.7 2.58 3.7c.92 0 1.25-.11 1.25-.11v-2.3H4.88c-.11 0-.19-.08-.19-.17V7.35c0-.09.08-.17.19-.17h3.74c.11 0 .19.08.19.17Zm35.85 2.33c0 3.43-1.11 4.41-3.05 4.41-1.64 0-2.52-.83-2.52-.83s-.04.46-.09.52c-.03.06-.08.08-.14.08h-1.48c-.1 0-.19-.08-.19-.17l.02-11.11c0-.09.08-.17.17-.17h2.13c.09 0 .17.08.17.17v3.77s.82-.53 2.02-.53l-.01-.02c1.2 0 2.97.45 2.97 3.88ZM27.68 2.43c.09 0 .17.08.17.17v11.11c0 .09-.08.17-.17.17h-2.13c-.09 0-.17-.08-.17-.17l.02-4.75h-3.31v4.75c0 .09-.08.17-.17.17h-2.13c-.08 0-.17-.08-.17-.17V2.6c0-.09.08-.17.17-.17h2.13c.09 0 .17.08.17.17v4.09h3.31V2.6c0-.09.08-.17.17-.17Zm8.26 3.64c.11 0 .19.08.19.17l-.02 7.47c0 .09-.06.17-.17.17H34.6c-.07 0-.14-.04-.16-.09-.03-.06-.08-.45-.08-.45s-1.13.77-2.52.77c-1.69 0-2.92-.55-2.92-2.75V6.25c0-.09.08-.17.17-.17h2.14c.09 0 .17.08.17.17V11c0 .75.22 1.09.97 1.09s1.3-.39 1.3-.39V6.26c0-.11.06-.19.17-.19Zm-17.406 5.971h.005a.177.177 0 0 1 .141.179v1.5c0 .07-.03.14-.09.16-.1.05-.74.22-1.27.22-1.16 0-2.86-.25-2.86-2.69V8.13h-1.11c-.09 0-.17-.08-.17-.19V6.58c0-.08.05-.15.13-.17.07-.01 1.16-.28 1.16-.28V3.96c0-.08.05-.13.14-.13h2.16c.09 0 .14.05.14.13v2.11h1.59c.08 0 .16.08.16.17v1.7c0 .11-.07.19-.16.19h-1.59v3.131c0 .47.27.83 1.05.83.247 0 .481-.049.574-.05ZM12.24 6.06c.09 0 .17.08.17.17v7.37c0 .18-.05.27-.25.27h-1.92c-.17 0-.3-.07-.3-.27V6.26c0-.11.08-.2.17-.2Zm29.99 3.78c0-1.81-.73-2.05-1.5-1.97-.6.04-1.08.34-1.08.34v3.52s.49.34 1.22.36c1.03.03 1.36-.34 1.36-2.25ZM11.19 2.68c.75 0 1.36.61 1.36 1.38 0 .77-.61 1.38-1.36 1.38-.77 0-1.38-.61-1.38-1.38 0-.77.61-1.38 1.38-1.38Zm7.34 9.35v.001l.01.01h-.001l-.005-.001v.001c-.009-.001-.015-.011-.024-.011Z\"></path>\n    </svg>\n    <svg\n      role=\"img\"\n      focusable=\"false\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      viewBox=\"0 0 337.6 72\"\n    >\n      <title>Microsoft</title>\n      <path\n        fill=\"#737373\"\n        d=\"M140.4 14.4v43.2h-7.5V23.7h-.1l-13.4 33.9h-5l-13.7-33.9h-.1v33.9h-6.9V14.4h10.8l12.4 32h.2l13.1-32h10.2zm6.2 3.3c0-1.2.4-2.2 1.3-3 .9-.8 1.9-1.2 3.1-1.2 1.3 0 2.4.4 3.2 1.2s1.3 1.8 1.3 3-.4 2.2-1.3 3c-.9.8-1.9 1.2-3.2 1.2s-2.3-.4-3.1-1.2c-.8-.9-1.3-1.9-1.3-3zm8.1 8.9v31h-7.3v-31h7.3zm22.1 25.7c1.1 0 2.3-.2 3.6-.8 1.3-.5 2.5-1.2 3.6-2v6.8c-1.2.7-2.5 1.2-4 1.5-1.5.3-3.1.5-4.9.5-4.6 0-8.3-1.4-11.1-4.3-2.9-2.9-4.3-6.6-4.3-11 0-5 1.5-9.1 4.4-12.3 2.9-3.2 7-4.8 12.4-4.8 1.4 0 2.8.2 4.1.5 1.4.3 2.5.8 3.3 1.2v7c-1.1-.8-2.3-1.5-3.4-1.9-1.2-.4-2.4-.7-3.6-.7-2.9 0-5.2.9-7 2.8s-2.6 4.4-2.6 7.6c0 3.1.9 5.6 2.6 7.3 1.7 1.7 4 2.6 6.9 2.6zm27.9-26.2c.6 0 1.1 0 1.6.1s.9.2 1.2.3v7.4c-.4-.3-.9-.6-1.7-.8s-1.6-.4-2.7-.4c-1.8 0-3.3.8-4.5 2.3s-1.9 3.8-1.9 7v15.6h-7.3v-31h7.3v4.9h.1c.7-1.7 1.7-3 3-4 1.4-.9 3-1.4 4.9-1.4zm3.2 16.5c0-5.1 1.5-9.2 4.3-12.2 2.9-3 6.9-4.5 12-4.5 4.8 0 8.6 1.4 11.3 4.3s4.1 6.8 4.1 11.7c0 5-1.5 9-4.3 12-2.9 3-6.8 4.5-11.8 4.5-4.8 0-8.6-1.4-11.4-4.2-2.8-2.9-4.2-6.8-4.2-11.6zm7.6-.3c0 3.2.7 5.7 2.2 7.4s3.6 2.6 6.3 2.6c2.6 0 4.7-.8 6.1-2.6 1.4-1.7 2.1-4.2 2.1-7.6 0-3.3-.7-5.8-2.1-7.6-1.4-1.7-3.5-2.6-6-2.6-2.7 0-4.7.9-6.2 2.7-1.7 1.9-2.4 4.4-2.4 7.7zm35-7.5c0 1 .3 1.9 1 2.5.7.6 2.1 1.3 4.4 2.2 2.9 1.2 5 2.5 6.1 3.9 1.2 1.5 1.8 3.2 1.8 5.3 0 2.9-1.1 5.2-3.4 7-2.2 1.8-5.3 2.6-9.1 2.6-1.3 0-2.7-.2-4.3-.5-1.6-.3-2.9-.7-4-1.2v-7.2c1.3.9 2.8 1.7 4.3 2.2 1.5.5 2.9.8 4.2.8 1.6 0 2.9-.2 3.6-.7.8-.5 1.2-1.2 1.2-2.3 0-1-.4-1.8-1.2-2.6-.8-.7-2.4-1.5-4.6-2.4-2.7-1.1-4.6-2.4-5.7-3.8s-1.7-3.2-1.7-5.4c0-2.8 1.1-5.1 3.3-6.9 2.2-1.8 5.1-2.7 8.6-2.7 1.1 0 2.3.1 3.6.4s2.5.6 3.4.9V34c-1-.6-2.1-1.2-3.4-1.7-1.3-.5-2.6-.7-3.8-.7-1.4 0-2.5.3-3.2.8-.7.7-1.1 1.4-1.1 2.4zm16.4 7.8c0-5.1 1.5-9.2 4.3-12.2 2.9-3 6.9-4.5 12-4.5 4.8 0 8.6 1.4 11.3 4.3s4.1 6.8 4.1 11.7c0 5-1.5 9-4.3 12-2.9 3-6.8 4.5-11.8 4.5-4.8 0-8.6-1.4-11.4-4.2-2.7-2.9-4.2-6.8-4.2-11.6zm7.6-.3c0 3.2.7 5.7 2.2 7.4s3.6 2.6 6.3 2.6c2.6 0 4.7-.8 6.1-2.6 1.4-1.7 2.1-4.2 2.1-7.6 0-3.3-.7-5.8-2.1-7.6-1.4-1.7-3.5-2.6-6-2.6-2.7 0-4.7.9-6.2 2.7-1.6 1.9-2.4 4.4-2.4 7.7zm48.4-9.7H312v25h-7.4v-25h-5.2v-6h5.2v-4.3c0-3.2 1.1-5.9 3.2-8s4.8-3.1 8.1-3.1c.9 0 1.7.1 2.4.1s1.3.2 1.8.4V18c-.2-.1-.7-.3-1.3-.5-.6-.2-1.3-.3-2.1-.3-1.5 0-2.7.5-3.5 1.4-.8.9-1.2 2.4-1.2 4.2v3.7h10.9v-7l7.3-2.2v9.2h7.4v6h-7.4V47c0 1.9.4 3.2 1 4 .7.8 1.8 1.2 3.3 1.2.4 0 .9-.1 1.5-.3.6-.2 1.1-.4 1.5-.7v6c-.5.3-1.2.5-2.3.7-1.1.2-2.1.3-3.2.3-3.1 0-5.4-.8-6.9-2.4-1.5-1.6-2.3-4.1-2.3-7.4l.1-15.8z\"\n      />\n      <path fill=\"#F25022\" d=\"M0 0h34.2v34.2H0z\" />\n      <path fill=\"#7FBA00\" d=\"M37.8 0H72v34.2H37.8z\" />\n      <path fill=\"#00A4EF\" d=\"M0 37.8h34.2V72H0z\" />\n      <path fill=\"#FFB900\" d=\"M37.8 37.8H72V72H37.8z\" />\n    </svg>\n    <svg\n      role=\"img\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      viewBox=\"0 0 291 79.46\"\n      width=\"291\"\n      height=\"79.46\"\n    >\n      <title>LinkedIn</title>\n      <path\n        d=\"M239.33 95.036c0 2.96 2.46 5.361 5.495 5.361h63.376c3.035 0 5.496-2.401 5.496-5.361V30.919c0-2.961-2.46-5.361-5.496-5.361h-63.376c-3.035 0-5.495 2.4-5.495 5.361v64.117z\"\n        style={{\n          fill: 'inherit',\n          fillOpacity: 1,\n          fillRule: 'nonzero',\n          stroke: 'none',\n        }}\n        transform=\"matrix(1.01883 0 0 -1.01883 -29.952 104.07)\"\n      />\n      <path\n        d=\"M31.152 37.709h31.035v10.189H42.383v38.874H31.152V37.709zM77.9 37.709v33.793H66.668V37.709H77.9zm-5.616 38.407c3.917 0 6.355 2.595 6.355 5.84-.073 3.315-2.438 5.837-6.28 5.837-3.843 0-6.355-2.522-6.355-5.837 0-3.245 2.437-5.84 6.207-5.84h.073zM83.115 37.709h11.233v18.872c0 1.01.073 2.019.37 2.741.811 2.017 2.66 4.107 5.763 4.107 4.065 0 5.69-3.1 5.69-7.64v-18.08h11.232v19.377c0 10.38-5.542 15.21-12.932 15.21-6.06 0-8.72-3.387-10.198-5.694h.075v4.9H83.116c.147-3.171 0-33.793 0-33.793zM133.249 86.772h-11.233V37.709h11.233v10.956l2.807 3.534 8.794-14.49h13.818l-14.779 20.977 12.932 14.272h-13.522s-9.237-12.769-10.05-14.283v28.097z\"\n        style={{\n          fill: 'inherit',\n          fillOpacity: 1,\n          fillRule: 'evenodd',\n          stroke: 'none',\n        }}\n        transform=\"matrix(1.01883 0 0 -1.01883 -29.952 104.07)\"\n      />\n      <path\n        d=\"M188.706 51.805c.148.868.37 2.533.37 4.415 0 8.736-4.435 17.604-16.11 17.604-12.488 0-18.252-9.877-18.252-18.835 0-11.08 7.02-18 19.287-18 4.877 0 9.384.72 13.08 2.234l-1.48 7.418c-3.029-1.005-6.132-1.507-9.974-1.507-5.247 0-9.828 2.153-10.198 6.743l23.277-.07zm-23.35 7.599c.295 2.884 2.216 7.138 7.02 7.138 5.097 0 6.28-4.543 6.28-7.138h-13.3zM216.801 86.772V69.788h-.147c-1.627 2.377-5.026 3.963-9.533 3.963-8.646 0-16.257-6.92-16.184-18.741 0-10.958 6.873-18.094 15.444-18.094 4.656 0 9.09 2.019 11.306 5.912h.222l.444-5.119h9.976c-.148 2.379-.297 6.488-.297 10.524v38.539h-11.231zm0-33.421c0-.864-.074-1.73-.222-2.45-.664-3.1-3.325-5.262-6.576-5.262-4.656 0-7.685 3.748-7.685 9.659 0 5.55 2.586 10.019 7.758 10.019 3.473 0 5.912-2.378 6.578-5.333.147-.65.147-1.371.147-2.019v-4.614z\"\n        style={{\n          fill: 'inherit',\n          fillOpacity: 1,\n          fillRule: 'evenodd',\n          stroke: 'none',\n        }}\n        transform=\"matrix(1.01883 0 0 -1.01883 -29.952 104.07)\"\n      />\n      <path\n        d=\"M261.873 37.749v33.794H250.64V37.749h11.233zm-5.617 38.408c3.917 0 6.355 2.595 6.355 5.838-.073 3.316-2.438 5.839-6.28 5.839-3.843 0-6.355-2.523-6.355-5.839 0-3.243 2.438-5.838 6.207-5.838h.073zM268.088 37.749h11.232v18.872c0 1.01.073 2.019.37 2.741.812 2.018 2.66 4.108 5.763 4.108 4.065 0 5.69-3.099 5.69-7.642V37.749h11.232v19.377c0 10.38-5.541 15.21-12.931 15.21-6.06 0-8.72-3.387-10.198-5.694h.075v4.901h-11.233c.148-3.171 0-33.794 0-33.794z\"\n        style={{\n          fill: 'var(--brand-color-canvas-default)',\n          fillOpacity: 1,\n          fillRule: 'evenodd',\n          stroke: 'none',\n        }}\n        transform=\"matrix(1.01883 0 0 -1.01883 -29.952 104.07)\"\n      />\n    </svg>\n  </LogoSuite.Logobar>\n</LogoSuite>\n```\n\n## Component props\n\n### LogoSuite\n\n| Name         | Type                                                                      | Default    | Description                                                 |\n| :----------- | :------------------------------------------------------------------------ | :--------- | :---------------------------------------------------------- |\n| `align`      | <PropTableValues values={['start', 'center', 'justify']} addLineBreaks /> | `'center'` | The horizontal alignment of the LogoSuite.                  |\n| `hasDivider` | `boolean`                                                                 | `true`     | Whether to render a divider immediately after the LogoSuite |\n\n### LogoSuite.Heading <Label>Required</Label>\n\n| Name             | Type      | Default     | Description                                |\n| :--------------- | :-------- | :---------- | :----------------------------------------- |\n| `visuallyHidden` | `boolean` | `undefined` | The horizontal alignment of the LogoSuite. |\n\nForwards all props from the [Heading component](/components/Heading), including `as`, `size`, and `weight`.\n\n### LogoSuite.Description\n\nForwards all props from the [Text component](/components/Text), including `as`, `size`, and `variant`.\n\n### LogoSuite.Logobar\n\n| Name           | Type                                                                      | Default     | Description                                       |\n| :------------- | :------------------------------------------------------------------------ | :---------- | :------------------------------------------------ |\n| `children`     | <PropTableValues values={[`SVGElement`, `SVGElement[]`]} addLineBreaks /> | `undefined` | Logobar requires SVG elements to render correctly |\n| `marquee`      | `boolean`                                                                 | `false`     | Enables an optional marquee effect.               |\n| `marqueeSpeed` | <PropTableValues values={['slow', 'normal']} addLineBreaks />             | `'normal'`  | The speed of the marquee effect.                  |\n| `variant`      | <PropTableValues values={['muted', 'emphasis']} addLineBreaks />          | `'muted'`   | The stylistic variant of the LogoBar.             |\n","parent":{"relativeDirectory":"components/LogoSuite","name":"react"}},{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/components/OrderedList/index.mdx","frontmatter":{"title":"Ordered list"},"rawBody":"---\ntitle: Ordered list\ndescription: Use the ordered list component to display a list of numbered items.\n---\n\nimport ComponentLayout from '../../../src/layouts/component-layout'\nexport default ComponentLayout\n\n## Anatomy\n\n![Ordered list renders as a numbered list of items](https://github.com/primer/brand/assets/912236/5cda0c94-c120-4fc6-8306-8b55012dee0a)\n\n## Usage\n\nUse an ordered list to represent a list of items in a numerical order.\n\nA number indicating the items relative position in the sequence will be prepended to each item in the list.\n\nThe ordered list is commonly used when presenting sequential or step-by-step information. It is suitable for instructions, procedures, tutorials, or any content that follows a specific order. Ensure that the items in the ordered list are logically organized and follow a clear progression. This helps readers understand the sequence of information and makes it easier to follow.\n\nAvoid overusing ordered lists. Reserve them for situations where the order of items is genuinely meaningful or where a clear sequence needs to be conveyed. For\nlists that don't require a specific order, consider using an [unordered list](/components/UnorderedList) instead.\n\n<DoDontContainer>\n  <Do>\n    <img\n      src=\"https://github.com/primer/brand/assets/912236/40022d10-248f-45d5-acce-2917a72d7b12\"\n      alt=\"\"\n    />\n    <Caption>Use an ordered list to present a sequence of steps.</Caption>\n  </Do>\n  <Dont>\n    <img\n      src=\"https://github.com/primer/brand/assets/912236/e9dd1ee2-cfa7-40d4-a8b6-2416cf99cdae\"\n      alt=\"\"\n    />\n    <Caption>\n      Don't use an ordered list to present a list of items that don't require a\n      specific order. Use an unordered list instead.\n    </Caption>\n  </Dont>\n</DoDontContainer>\n\nThe ordered list should have concise and short items. Avoid using long sentences or paragraphs as they can be difficult to scan and comprehend. If you need to include a long item or even headings and links, consider using a [pillar](/components/Pillar), a [card](/components/Card) or a [river](/components/River) instead.\n\n<DoDontContainer>\n  <Do>\n    <img\n      src=\"https://github.com/primer/brand/assets/912236/181f1cb9-05bc-4010-a80b-a978b7ffbe56\"\n      alt=\"\"\n    />\n    <Caption>Use an ordered list for short and concise content items.</Caption>\n  </Do>\n  <Dont>\n    <img\n      src=\"https://github.com/primer/brand/assets/912236/28950f6a-d7f0-4d9d-bb70-02c062d309f3\"\n      alt=\"\"\n    />\n    <Caption>\n      Don't use an ordered list for long and rich sentences, paragraphs,\n      headings or links. Use a pillar, card or river components instead.\n    </Caption>\n  </Dont>\n</DoDontContainer>\n\n## Related components\n\n- [Unordered list](/components/UnorderedList): to display a list of plain content items.\n- [Pillar](/components/Pillar): To display related content with less visual emphasis.\n- [Card](/components/Card): to display navigational related content with higher visual weight.\n- [River](/components/River): To display a list of content items with a visual asset.\n","parent":{"relativeDirectory":"components/OrderedList","name":"index"}},{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/components/OrderedList/react.mdx","frontmatter":{"title":"Ordered list"},"rawBody":"---\ntitle: Ordered list\nstatus: Experimental\nfigma: https://www.figma.com/file/BJ95AjraesmRCWsKA013GS/branch/NzBMPIfPrFU9I87d3k7KVq/Primer-Brand?node-id=4045%3A17560&t=W8B9ArDngbzJCC2m-0\nsource: https://github.com/primer/brand/blob/main/packages/react/src/list/OrderedList/OrderedList.tsx\nstorybook: '/brand/storybook/?path=/story/components-orderedlist--default'\ndescription: Use the ordered list component to display a list of numbered items.\n---\n\nimport ComponentLayout from '../../../src/layouts/component-layout'\nexport default ComponentLayout\n\n```js\nimport {OrderedList} from '@primer/react-brand'\n```\n\n## Examples\n\n### Default\n\n```jsx live\n<OrderedList>\n  <OrderedList.Item>Automatic security and version updates</OrderedList.Item>\n  <OrderedList.Item>GitHub Security Advisories</OrderedList.Item>\n  <OrderedList.Item>Code and secret scanning</OrderedList.Item>\n  <OrderedList.Item>Dependency review</OrderedList.Item>\n  <OrderedList.Item>\n    Automated authentication and identity management\n  </OrderedList.Item>\n</OrderedList>\n```\n\n## Component props\n\n### OrderedList\n\n| Name        | Type                                   |  Default  | Description                                              |\n| :---------- | :------------------------------------- | :-------: | :------------------------------------------------------- |\n| `className` | `string`                               |           | Sets a custom class on the root element                  |\n| `children`  | `React.ReactNode`, `React.ReactNode[]` | `default` | Content to be displayed within the OrderedList component |\n\n### OrderedList.Item\n\n| Name        | Type                                   |  Default  | Description                                              |\n| :---------- | :------------------------------------- | :-------: | :------------------------------------------------------- |\n| `className` | `string`                               |           | Sets a custom class on the root element                  |\n| `children`  | `React.ReactNode`, `React.ReactNode[]` | `default` | Content to be displayed within the OrderedList component |\n","parent":{"relativeDirectory":"components/OrderedList","name":"react"}},{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/components/Pillar/index.mdx","frontmatter":{"title":"Pillar"},"rawBody":"---\ntitle: Pillar\ndescription: Use the pillar component to group related content together.\n---\n\nimport ComponentLayout from '../../../src/layouts/component-layout'\nexport default ComponentLayout\n\n## Anatomy\n\n![An image showing the Pillar anatomy with an icon, a heading and a description in a vertical order.](https://github.com/primer/brand/assets/912236/785baf0f-4800-476e-8f90-b032851714c4)\n\n- Icon: An optional visual cue related to the content of the Pillar.\n- Heading: The main title of the Pillar. It should be short and concise.\n- Description: Short text that extends the information provided by the heading.\n- Link: An optional link to extended the information.\n\n## Usage\n\nUse pillars to group similar features or benefits together to easily scan and read. Pillars display content in a familiar and recognizable style.\n\n### Stacked\n\nPillars should be stacked to display a list of items that are related to each other. Use consistent pillar sizes within a row or group. A group or a row of content pillars is more visually appealing when the widths and heights of all elements match, so keep the content lenght of each pillar consistent.\n\n<DoDontContainer>\n  <Do>\n    <img src=\"https://github.com/primer/brand/assets/912236/cd9679ab-cfa0-4c6d-8a55-21d16668f1ca\" />\n    <Caption>\n      Use a similar content size to achieve a visually balanced layout.\n    </Caption>\n  </Do>\n  <Dont>\n    <img src=\"https://github.com/primer/brand/assets/912236/cd6e471f-98cf-4c70-801f-c0aeb4d2bdf5\" />\n    <Caption>\n      Don't use different length sizes for the title or the description.\n    </Caption>\n  </Dont>\n</DoDontContainer>\n\nIf displaying an icon, do so for all cards to achieve a visually balanced layout.\n\n<DoDontContainer>\n  <Do>\n    <img src=\"https://github.com/primer/brand/assets/912236/cdceda67-a911-40a0-839a-4620c83fe510\" />\n    <Caption>\n      Use icons either for all pillars or none for a visually balanced layout.\n    </Caption>\n  </Do>\n  <Dont>\n    <img src=\"https://github.com/primer/brand/assets/912236/20955ac2-6aee-40ee-bcdf-605bc07f9b1d\" />\n    <Caption>Don't use icons sparingly.</Caption>\n  </Dont>\n</DoDontContainer>\n\nWhen presenting more than four pillars, we recommend displaying them in multiple rows. You can use the [Grid](/components/Grid) or the [Stack](/components/Stack) component to achieve this. We recommend using a grid with 3 or 4 columns and balancing the number of pillars on each row.\n\n![An image showing a group of numerous Pillars stacked in a 3 column grid.](https://github.com/primer/brand/assets/912236/350c5eab-bd21-450c-a7a3-60e29c828a3f)\n\n### Pillar and Card\n\nPillar and Card are both components that are used to present related and/or condensed information. They have distinct use-cases however, with the main differences between them being:\n\n#### Interaction\n\nPillars are used mainly for non-interactive content and might include an optional link for extended information. On the other hand, Cards are primarily navigational elements.\n\n#### Hierarchy\n\nCards should be used for noteworthy information to immediately draw user attention. Pillars, on the other hand, should be used for lower priority information compared to Cards.\n\n#### Group size\n\nCards should be used in small groups (3, 4 or 5 items maximum), whereas Pillars can be used in larger (more than 5 items) or smaller groups. As users encounter an increasing number of items within a group, the distinctiveness of each individual element diminishes.\n\n<DoDontContainer>\n  <Do>\n    <img src=\"https://github.com/primer/brand/assets/912236/bc33c846-71c2-4af6-a3ac-f886bad71995\" />\n    <Caption>Pillars are more suitable for groups of 5 or more items.</Caption>\n  </Do>\n  <Dont>\n    <img src=\"https://github.com/primer/brand/assets/912236/302dbc4d-6199-4c0c-96d5-76ac2e35fdea\" />\n    <Caption>\n      Don't use Cards for groups of 5 or more items. Use them sparingly in\n      groups of 3 or 4.\n    </Caption>\n  </Dont>\n</DoDontContainer>\n\n## Options\n\n### Align\n\nPillars can be aligned to the start or center of the container. Aligning to the start is the default and recommended behavior. Use center alignment only when displaying a maximum of 4 pillars and the overall page design calls for this alignment, so that the content is visually balanced and easy to scan.\n\n<DoDontContainer>\n  <Do>\n    <img src=\"https://github.com/primer/brand/assets/912236/8762f31e-d39d-458f-b016-85b450251685\" />\n    <Caption>\n      Center align pillars when in groups of 3 or 4 and if their title and\n      descriptions are short.\n    </Caption>\n  </Do>\n  <Dont>\n    <img src=\"https://github.com/primer/brand/assets/912236/87eb975f-b165-49ad-82bf-2f1e329c46bf\" />\n    <Caption>Don't use center alignment when in groups of 5 or more.</Caption>\n  </Dont>\n</DoDontContainer>\n\n## Related components\n\n- [Card](/components/Card): To display navigational related content with higher visual weight.\n- [River](/components/River): To display a list of content items with a visual asset.\n- [CTABanner](/components/CTABanner): To display a single block of content to draw attention or create urgency around a user action.\n- [UnorderedList](/components/UnorderedList) or the [OrderedList](/components/OrderedList): To display a list of plain content items.\n","parent":{"relativeDirectory":"components/Pillar","name":"index"}},{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/components/Pillar/react.mdx","frontmatter":{"title":"Pillar"},"rawBody":"---\ntitle: Pillar\nstatus: Experimental\nsource: https://github.com/primer/brand/tree/main/packages/react/src/Pillar/Pillar.tsx\nstorybook: '/brand/storybook/?path=/story/components-pillar--default'\na11yReviewed: true\ndescription: Use the pillar component to group related content together.\nfigma: https://www.figma.com/file/BJ95AjraesmRCWsKA013GS/Primer-Brand?node-id=6849-31364&mode=design\n---\n\nimport {PillarIconColors} from '@primer/react-brand'\nimport {IconColors} from '@primer/react-brand'\nimport {CopilotIcon, RocketIcon, GitBranchIcon} from '@primer/octicons-react'\nimport {PropTableValues} from '../../../src/components'\n\nimport ComponentLayout from '../../../src/layouts/component-layout'\nexport default ComponentLayout\n\n```js\nimport {Pillar} from '@primer/react-brand'\n```\n\n## Examples\n\n### Default\n\nThe default Pillar displays a heading and description.\n\n```jsx live\n<Pillar>\n  <Pillar.Heading>Collaboration is the key to DevOps success</Pillar.Heading>\n  <Pillar.Description>\n    Everything you need to know about getting started with GitHub Actions.\n  </Pillar.Description>\n</Pillar>\n```\n\n### Icon\n\nYou can add an `icon` to enhance the visual context. We recommend using an [Octicon](https://primer.style/design/foundations/icons). The `Icon` can be customized using the `color` prop.\n\n```jsx live\n<Pillar>\n  <Pillar.Icon icon={<CopilotIcon />} color=\"purple\" />\n  <Pillar.Heading>Code search & code view</Pillar.Heading>\n  <Pillar.Description>\n    Enables you to rapidly search, navigate, and understand code, right from\n    GitHub.com.\n  </Pillar.Description>\n</Pillar>\n```\n\n### Link\n\nYou can add an external link to the Pillar using the `Link` component.\n\n```jsx live\n<Pillar>\n  <Pillar.Heading>Code search & code view</Pillar.Heading>\n  <Pillar.Description>\n    Enables you to rapidly search, navigate, and understand code, right from\n    GitHub.com.\n  </Pillar.Description>\n  <Pillar.Link href=\"https://github.com\">Learn more</Pillar.Link>\n</Pillar>\n```\n\n### Align\n\nThe content alignment can be changed using the `align` prop on the root `Pillar`. This can be configured to either `start` or `center`.\n\n```jsx live\n<Pillar align=\"center\">\n  <Pillar.Icon icon={<CopilotIcon />} color=\"purple\" />\n  <Pillar.Heading>Code search & code view</Pillar.Heading>\n  <Pillar.Description>\n    Enables you to rapidly search, navigate, and understand code, right from\n    GitHub.com.\n  </Pillar.Description>\n</Pillar>\n```\n\n### Stacked Pillars\n\nUse the `Stack` component to stack multiple Pillars horizontally or vertically.\n\n```jsx live\n<Stack\n  direction=\"horizontal\"\n  alignItems=\"center\"\n  justifyContent=\"center\"\n  gap=\"normal\"\n>\n  <Pillar>\n    <Pillar.Icon icon={<CopilotIcon />} color=\"blue\" />\n    <Pillar.Heading>Heading</Pillar.Heading>\n    <Pillar.Description>\n      Everything you need to know about getting started with GitHub Actions.\n    </Pillar.Description>\n  </Pillar>\n  <Pillar>\n    <Pillar.Icon icon={RocketIcon} color=\"blue\" />\n    <Pillar.Heading>Heading</Pillar.Heading>\n    <Pillar.Description>\n      Everything you need to know about getting started with GitHub Actions.\n    </Pillar.Description>\n  </Pillar>\n  <Pillar>\n    <Pillar.Icon icon={GitBranchIcon} color=\"blue\" />\n    <Pillar.Heading>Heading</Pillar.Heading>\n    <Pillar.Description>\n      Everything you need to know about getting started with GitHub Actions.\n    </Pillar.Description>\n  </Pillar>\n</Stack>\n```\n\n## Component props\n\n### Pillar\n\n| name    | type                                                          | default | required | description                                 |\n| ------- | ------------------------------------------------------------- | ------- | -------- | ------------------------------------------- |\n| `align` | `start`, `center`                                             | `start` | `false`  | Aligns the pillar content                   |\n| `as`    | <PropTableValues values={['div', 'article']} addLineBreaks /> | `'div'` | `false`  | The HTML element used to render the pillar. |\n\n### Pillar.Icon\n\n| name    | type                                                        | default   | required | description                  |\n| ------- | ----------------------------------------------------------- | --------- | -------- | ---------------------------- |\n| `icon`  | `React.Node`                                                |           | `true`   | Octicon                      |\n| `color` | <PropTableValues values={PillarIconColors} addLineBreaks /> | `default` | `false`  | The color of the Pillar icon |\n\n### Pillar.Heading\n\n| name        | type                         | default     | required | description                                           |\n| ----------- | ---------------------------- | ----------- | -------- | ----------------------------------------------------- |\n| `as`        | `h2`, `h3`, `h4`, `h5`, `h6` | `h3`        | `false`  |                                                       |\n| `className` | `string`                     |             | `false`  | Custom class name for the heading component           |\n| `children`  | `ReactNode`, `ReactNode[]`   | `undefined` | `true`   | Content to be displayed inside the heading component. |\n\nForwards all the props from the [Heading component](/components/Heading), including `as`, `size`, and `weight`.\n\n### Pillar.Description\n\nOptional node that can be used to provide a description for the section.\n\n| name       | type                       | default     | required | description                                         |\n| ---------- | -------------------------- | ----------- | -------- | --------------------------------------------------- |\n| `children` | `ReactNode`, `ReactNode[]` | `undefined` | `true`   | Content to be displayed inside the pillar component |\n\n`id`, `className` and `ref` are forwarded by default to all children.\n\n### Pillar.Link\n\nOptional node that can be used to provide a link.\n\n| name        | type     | default     | required | description                               |\n| ----------- | -------- | ----------- | -------- | ----------------------------------------- |\n| `className` | `string` | `undefined` | `false`  | Sets a custom class on the root element   |\n| `href`      | `string` |             | `true`   | Local identifier for the anchored element |\n\n`id`, `className` and `ref` are forwarded by default to all children.\n","parent":{"relativeDirectory":"components/Pillar","name":"react"}},{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/components/Radio/index.mdx","frontmatter":{"title":"Radio"},"rawBody":"---\ntitle: Radio\ndescription: Use the radio component when a user needs to select one option from a list.\n---\n\nimport ComponentLayout from '../../../src/layouts/component-layout'\nexport default ComponentLayout\n\n\n## Anatomy\n\n![An image displaying a Radio with a radio and label.](https://github.com/primer/brand/assets/131988618/d25dafb9-87f8-4b6a-a205-57a851d47b5e)\n\n- Radio: A selection control.\n- Label: A description for the radio. \n\n## Usage\n\nUse the radio component to enable users to select a single option from a list.\n\nFor scenarios that allow for multiple selections, use the [Checkbox](/components/Checkbox) component instead. Keep the radio label descriptive and concise: aim for no more than 3 words. Write labels in sentence case and without ending in punctuation.\n\n### Grouping\nTo group related radio components together in a list, use the [Stack](/components/Stack) and [FormControl](/components/FormControl) components. When rendering a group of radio components, make sure to consider all potential option. Remember to include \"None\" or \"Other\" options when necessary. \n\n<DoDontContainer>\n  <Do>\n    <img src=\"https://github.com/primer/brand/assets/131988618/151c50cb-c3ac-4790-901d-a5be38fad46e\" />\n    <Caption>\n        Ensure radio options are are mutually exclusive. Include \"None\" or \"Other\" options when necessary. \n    </Caption>\n  </Do>\n  <Dont>\n    <img src=\"https://github.com/primer/brand/assets/131988618/5d25cfee-bf8e-4b93-93da-5dd40f38f3be\" />\n    <Caption>\n        Don't overlap or leave out potential radio options from the list.\n    </Caption>\n  </Dont>\n</DoDontContainer>\n\n<DoDontContainer>\n  <Do>\n    <img src=\"https://github.com/primer/brand/assets/131988618/433d5deb-0395-4d24-8f5d-513178d9e944\" />\n    <Caption>\n        When used in groups, order the radio options in a logical order (e.g. smallest to largest).\n    </Caption>\n  </Do>\n  <Dont>\n    <img src=\"https://github.com/primer/brand/assets/131988618/9d3f4639-c064-4b18-bcce-89a05a29b4e1\" />\n    <Caption>\n        Don't order radio options without logic in a group.\n    </Caption>\n  </Dont>\n</DoDontContainer>\n\n### States\n\nRadios have static dimensions and three different states: default, checked, and disabled.\n\n<img src=\"https://github.com/primer/brand/assets/131988618/94a893a6-0063-4204-a7ab-da7b5aaaa96b\" />\n\n\n## Accessibility \n\nPlease use [FormControl](/components/FormControl) to render a standard radio input field. If using standalone, it should always be accompanied by a corresponding `<label>` to improve support for assistive technologies.\n\n## Related components\n\n- [Checkbox](/components/Checkbox): Use the checkbox component to select one or more options of a limited number of choices.\n- [Select](/components/Select): Use the select component to enable selection of one option from a list.\n- [FormControl](/components/FormControl): Use the form control component to display form inputs alongside labels, validation and more.\n- [Stack](/components/Stack): Use the stack component to create a layout for its immediate children along the vertical or horizontal axis.\n","parent":{"relativeDirectory":"components/Radio","name":"index"}},{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/components/Radio/react.mdx","frontmatter":{"title":"Radio"},"rawBody":"---\ntitle: Radio\ndescription: Use the radio component when a user needs to select one option from a list.\nstatus: Experimental\nsource: https://github.com/primer/brand/blob/main/packages/react/src/forms/Radio/Radio.tsx\nfigma: https://www.figma.com/file/BJ95AjraesmRCWsKA013GS/Primer-Brand?node-id=3063%3A30198&t=QKh20cPDVIFtBCHj-0\nstorybook: '/react/storybook?path=/story/components-forms-radio--playground'\n---\n\nimport ComponentLayout from '../../../src/layouts/component-layout'\nexport default ComponentLayout\n\n## Examples\n\n<Note variant=\"warning\">\n\n**Use [FormControl](./FormControl) to render a standard radio input field.** If using standalone, it should always be accompanied by a corresponding `<label>` to improve support for assistive technologies.\n\n</Note>\n\n```jsx live\n<>\n  <Radio value=\"one\" name=\"radio-group-name\" />\n  <Radio value=\"two\" name=\"radio-group-name\" />\n  <Radio disabled value=\"three\" name=\"radio-group-name\" />\n</>\n```\n\n<Note>\n\nPlease use a [Checkbox](./Checkbox) if the user needs to select more than one option in a list\n\n</Note>\n\n### Grouping Radio components\n\nUse the `name` prop to group together related `Radio` components in a list.\n\nIf you're not building something custom, you should use the [Stack](./Stack) and [FormControl](./FormControl) component to render a group of radio inputs.\n\n#### Using `FormControl`\n\n```jsx live\n<form>\n  <Stack\n    direction={{narrow: 'vertical', regular: 'horizontal'}}\n    gap=\"condensed\"\n    padding=\"condensed\"\n  >\n    <FormControl>\n      <FormControl.Label>Mona</FormControl.Label>\n      <Radio name=\"radio-group\" value=\"mona\" />\n    </FormControl>\n    <FormControl>\n      <FormControl.Label>Hubot</FormControl.Label>\n      <Radio name=\"radio-group\" value=\"hubot\" />\n    </FormControl>\n  </Stack>\n</form>\n```\n\n## Props\n\n### Radio\n\n| Name               | Type                                                                                     | Default  | Description                                                                       |\n| :----------------- | :--------------------------------------------------------------------------------------- | :------: | :-------------------------------------------------------------------------------- |\n| `checked`          | `string`                                                                                 |          | Modifies true/false value of the native radio                                     |\n| `className`        | `string`                                                                                 |          | Sets a custom class                                                               |\n| `cols`             | `number`                                                                                 |   `30`   | Specifies the visible width of a textarea                                         |\n| `defaultChecked`   | `boolean`                                                                                |          | Selects the radio by default in uncontrolled mode                                 |\n| `id`               | `string`                                                                                 |          | Sets a custom id                                                                  |\n| `name`             | `string`                                                                                 |          | Required for grouping multiple radios                                             |\n| `onChange`         | `(event: React.ChangeEvent) => void`                                                     |          | A callback function that is triggered when the input state has been changed       |\n| `ref`              | `React.RefObject`                                                                        |          | Forward a Ref to the underlying DOM node                                          |\n| `required`         | `boolean`                                                                                |          | Indicates to the user and assistive technologies that the field value is required |\n| `resize`           | <PropTableValues values={['both' , 'horizontal' , 'vertical' , 'none']} addLineBreaks /> | `'both'` | Sets whether an element is resizable, and if so, in which directions              |\n| `rows`             | `number`                                                                                 |   `7`    | Specifies the visible height of a text area                                       |\n| `size`             | <PropTableValues values={['medium', 'large' ]} addLineBreaks />                          |          | Provides alternate visual presentation                                            |\n| `validationStatus` | <PropTableValues values={['error', 'success' ]} addLineBreaks />                         |          | Applies visual and semantic state to the underlying elements                      |\n| `value`            | `string`                                                                                 |          | A unique value that is never shown to the user                                    |\n\nAdditional props can be passed to the `<input>` element. [See MDN for a list of props](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input) accepted by the `<input>` element.\n","parent":{"relativeDirectory":"components/Radio","name":"react"}},{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/components/River/index.mdx","frontmatter":{"title":"River"},"rawBody":"---\ntitle: River\ndescription: Use the river component to introduce a feature using a type and media pairing.\n---\n\nimport ComponentLayout from '../../../src/layouts/component-layout'\nexport default ComponentLayout\n\n![A river component used to showcase a security feature. The title reads \"Get security feedback with every git push\" and it includes an image showing screenshots of of a CLI prompt with the git push command and a code scanning screenshot.](https://github.com/primer/brand/assets/912236/e01c2743-54cd-4ed0-9a6e-2afdadabb66e)\n\n## Usage\n\nUse rivers to showcase features and introduce topics. Rivers are composed of images or videos paired alongside text content like headings, paragraphs, and links.\n\nA river’s content should be short and concise, no longer than 3 or 4 sentences and in a single paragraph when possible.\n\n<DoDontContainer>\n  <Do>\n    <img\n      alt=\"\"\n      src=\"https://github.com/primer/brand/assets/912236/55e56aa1-2a04-4cc4-b708-08c480ba5943\"\n    />\n    <Caption>Write short and concise text content.</Caption>\n  </Do>\n  <Dont>\n    <img\n      alt=\"\"\n      src=\"https://github.com/primer/brand/assets/912236/bd3585bc-a79b-4ca2-bbc4-ff59bc8c75cf\"\n    />\n    <Caption>Don't overload the river with too much content.</Caption>\n  </Dont>\n</DoDontContainer>\n\n### Stacked\n\nTwo or more rivers can be stacked to guide the user through a set of features. When stacking rivers, alternate between left and right alignments to create a more dynamic reading flow. When alternating alignments, use a `40:60` image to text ratio, otherwise keep the ratio to `50:50`.\n\nIt is possible to use 2 or more following left or right river to create a simple alignment promoting easy scroll scan.\n\n<DoDontContainer>\n  <Do>\n    <img\n      alt=\"\"\n      src=\"https://github.com/primer/brand/assets/912236/a7f8bca8-78e6-4e29-a44b-5a305ffeeeae\"\n    />\n    <Caption>Alternate rivers with left and right alignments.</Caption>\n  </Do>\n  <Dont>\n    <img\n      alt=\"\"\n      src=\"https://github.com/primer/brand/assets/6951037/169d5c19-67f4-4f15-8e3b-80c877b34af1\"\n    />\n    <Caption>\n      Don't break the flow in a stack of rivers that would otherwise stay\n      aligned.\n    </Caption>\n  </Dont>\n</DoDontContainer>\n\nNote that too many rivers can make the design feel repetitive. In that situation, consider introducing a breakout section or break the content with a different component, such as [pillar](/components/Pillar) or [card](/components/Card) to provide a better visual hierarchy and experience. For example, use the river for the top features you want to highlight and then use pillars to showcase the rest.\n\n<DoDontContainer>\n  <Do>\n    <img\n      alt=\"\"\n      src=\"https://github.com/primer/brand/assets/912236/12739a14-1775-44ff-b5a5-d87a8820a29e\"\n    />\n    <Caption>\n      Use pillars or cards to breakout a multiple river section and provide a\n      better visual hierarchy.\n    </Caption>\n  </Do>\n  <Dont>\n    <img\n      alt=\"\"\n      src=\"https://github.com/primer/brand/assets/912236/a2e43864-3cde-441e-b992-05e7c037e306\"\n    />\n    <Caption>\n      Don't stack numerous rivers without breaking the content to avoid\n      repetitive a layout that can make the design feel repetitive.\n    </Caption>\n  </Dont>\n</DoDontContainer>\n\n### Sections with rivers\n\nA single river component acts as a section and it should not include any child sections within in. Multiple rivers can be used to conform a section. In that case, the section should include a [section intro](/components/SectionIntro) that introduces the main topic or features.\n\n<DoDontContainer>\n  <Do>\n    <img\n      alt=\"\"\n      src=\"https://github.com/primer/brand/assets/912236/67cd0c85-ab9a-4736-ae29-bcb4d2ec7845\"\n    />\n    <Caption>Use a section intro to introduce multiple rivers.</Caption>\n  </Do>\n  <Dont>\n    <img\n      alt=\"\"\n      src=\"https://github.com/primer/brand/assets/912236/7654c23c-8337-4ab1-af82-ec4b6934b3b7\"\n    />\n    <Caption>\n      Don't add child sections or other components to the river body content.\n    </Caption>\n  </Dont>\n</DoDontContainer>\n\n### River breakout\n\nA river breakout component has an image that fills the width of the container while providing more space for content such as text and lists.\n\nThis is useful when you want to create a highlight which can be used to create more emphasis or simply break a monotonous vertical flow of left/right rivers. It can also be helpful on smaller viewports to avoid stacking two images or two chunks of text from adjacent river components.\n\nAs its name suggest, a river breakout should not be the first in the stack, it should be positioned in-between two standard rivers.\n\nSome examples of when to use a river breakout:\n\n- Expand on more complex feature that require more room for content\n- Give designer a tool to emphasize the feature story\n- Use a branded wallpaper in a more cinematic way than the standard 50/50 or 60/40 text-to-image column ratios\n\n<DoDontContainer>\n  <Do>\n    <img\n      alt=\"\"\n      src=\"https://github.com/primer/brand/assets/6951037/409b7e4e-a7b4-4126-b1ff-91e038565bc3\"\n    />\n    <Caption>\n      Use a river breakout to emphasize a part of the river or break up a series\n      of river components.\n    </Caption>\n  </Do>\n  <Dont>\n    <img\n      alt=\"\"\n      src=\"https://github.com/primer/brand/assets/6951037/eda1e0fa-7424-4ad4-8484-7c89c9c09192\"\n    />\n    <Caption>\n      Don't stack river breakouts on top of other river breakout components or\n      center-aligned river components. These both show a full-width image. This\n      diminishes the visual impact the river breakout is intended to provide.\n    </Caption>\n  </Dont>\n</DoDontContainer>\n\nThe headline in the river component must always be present, but the supplemental content is optional.\n\n<DoDontContainer>\n  <Do>\n    <img\n      alt=\"\"\n      src=\"https://github.com/primer/brand/assets/2313998/433b1fba-4505-452b-8f8c-7cda69cc316d\"\n    />\n    <Caption>Exclude the supplemental content if it's not needed.</Caption>\n  </Do>\n  <Dont>\n    <img\n      alt=\"\"\n      src=\"https://github.com/primer/brand/assets/2313998/62cf1c98-6b7d-46e9-a2d4-6d211a9103ad\"\n    />\n    <Caption>Don't exclude the headline.</Caption>\n  </Dont>\n</DoDontContainer>\n\nLimit supplemental content to a maximum of 500 characters or two timeline items to avoid overwhelming the user and disrupting the layout's balance.\n\n<DoDontContainer>\n  <Do>\n    <img\n      alt=\"\"\n      src=\"https://github.com/primer/brand/assets/175638/c5879e94-09c3-4494-aa42-87543570dfb4\"\n    />\n    <Caption>Limit supplemental timeline content to two items.</Caption>\n  </Do>\n  <Dont>\n    <img\n      alt=\"\"\n      src=\"https://github.com/primer/design/assets/175638/8a083960-e12a-4f11-b282-45d663be2e28\"\n    />\n    <Caption>Avoid unbalanced river breakout content.</Caption>\n  </Dont>\n</DoDontContainer>\n\n## Anatomy\n\n![A river component used to showcase a security feature. The title reads \"Get security feedback with every git push\" and it includes an image showing screenshots of of a CLI prompt with the git push command and a code scanning screenshot.](https://github.com/primer/brand/assets/10632534/bf32364f-02b7-4f0d-8784-471eaf97b4bb)\n\n### Content\n\nRiver provides a heading as the main title and a body text as the main content that describes the adjacent visual. The heading should be short and concise and the body should describe the feature or topic in a short paragraph.\n\n### Visual\n\nA river can include either an image or video to illustrate the feature or topic. The media should be relevant to the content and should not be used as a decorative element.\n\nAlways use high quality images and videos. Avoid using images with text or single logos. Ensure the image fills the provided container.\n\nThe image is automatically styled to fit the width of the parent container. If you have bespoke styling requirements, you can disable the provided default styles and style the image manually.\n\n### Additional guidance\n\n- We recommend using a river left as the first river of the flow to start with a visual and avoid stacking text with above section on mobile\n- River components stacks create a unit, the set should be considered to be the main parent section. The parent section should be spaced as a regular section with the largest spacing while internal elements should use smaller spacing\n- If the image is critical for the user to understand the message, default to right aligned. If the text is critical for the user to understand the image, choose left aligned.\n\n### Link\n\nRiver can include an optional call to action to link to more detailed content about the feature or topic.\n\n## Related components\n\n- [Pillar](/components/Pillar): To display non-navigational related content in a compact way.\n- [Card](/components/Card): To display navigational related content in a compact way.\n","parent":{"relativeDirectory":"components/River","name":"index"}},{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/components/River/react.mdx","frontmatter":{"title":"River"},"rawBody":"---\ntitle: River\nstatus: Experimental\nfigma: https://www.figma.com/file/BJ95AjraesmRCWsKA013GS/Primer-Brand?node-id=418%3A8416\nsource: https://github.com/primer/brand/blob/main/packages/react/src/River/River.tsx\nstorybook: '/brand/storybook/?path=/story/components-river--default'\ndescription: Use the river component to introduce a feature using a type and media pairing.\n---\n\nimport ComponentLayout from '../../../src/layouts/component-layout'\nexport default ComponentLayout\n\nimport {Label} from '@primer/react'\nimport {\n  defaultRiverImageTextRatio,\n  defaultRiverAlign,\n} from '@primer/react-brand'\nimport {PropTableValues} from '../../../src/components'\n\n```js\nimport {River, RiverBreakout} from '@primer/react-brand'\n```\n\n## Examples\n\n### Default\n\n```jsx live\n<>\n  <River>\n    <River.Visual>\n      <img\n        src=\"https://via.placeholder.com/600x400/f5f5f5/f5f5f5.png\"\n        alt=\"placeholder, blank area with an off-white background color\"\n      />\n    </River.Visual>\n    <River.Content>\n      <Heading>Heading</Heading>\n      <Text>\n        Lorem ipsum dolor sit amet, consectetur adipiscing elit. In sapien sit\n        ullamcorper id. Aliquam luctus sed turpis felis nam pulvinar risus\n        elementum.\n      </Text>\n      <Link href=\"#\">Call to action</Link>\n    </River.Content>\n  </River>\n  <River align=\"end\">\n    <River.Visual>\n      <img\n        src=\"https://via.placeholder.com/600x400/f5f5f5/f5f5f5.png\"\n        alt=\"placeholder, blank area with an off-white background color\"\n      />\n    </River.Visual>\n    <River.Content>\n      <Heading>Heading</Heading>\n      <Text>\n        Lorem ipsum dolor sit amet, consectetur adipiscing elit. In sapien sit\n        ullamcorper id. Aliquam luctus sed turpis felis nam pulvinar risus\n        elementum.\n      </Text>\n      <Link href=\"#\">Call to action</Link>\n    </River.Content>\n  </River>\n  <River align=\"center\">\n    <River.Visual>\n      <img\n        src=\"https://via.placeholder.com/600x400/f5f5f5/f5f5f5.png\"\n        alt=\"placeholder, blank area with an off-white background color\"\n      />\n    </River.Visual>\n    <River.Content>\n      <Label>Label</Label>\n      <Heading>Heading</Heading>\n      <Text>\n        Lorem ipsum dolor sit amet, consectetur adipiscing elit. In sapien sit\n        ullamcorper id. Aliquam luctus sed turpis felis nam pulvinar risus\n        elementum.\n      </Text>\n      <Link href=\"#\">Call to action</Link>\n    </River.Content>\n  </River>\n</>\n```\n\n### Image to text ratio\n\n```jsx live\n<>\n  {/* 50/50 (default) example */}\n  <River>\n    <River.Visual>\n      <img\n        src=\"https://via.placeholder.com/600x400/f5f5f5/f5f5f5.png\"\n        alt=\"placeholder, blank area with an off-white background color\"\n      />\n    </River.Visual>\n    <River.Content>\n      <Heading>50/50</Heading>\n      <Text>\n        <strong>By default</strong>, River applies a 50/50 image to text split.\n      </Text>\n    </River.Content>\n  </River>\n  {/* 60/40 example */}\n  <River imageTextRatio=\"60:40\">\n    <River.Visual>\n      <img\n        src=\"https://via.placeholder.com/600x400/f5f5f5/f5f5f5.png\"\n        alt=\"placeholder, blank area with an off-white background color\"\n      />\n    </River.Visual>\n    <River.Content>\n      <Heading>60/40</Heading>\n      <Text>This example applies an optional 60/40 image to text split.</Text>\n    </River.Content>\n  </River>\n</>\n```\n\n### Video\n\n```jsx live\n<River imageTextRatio=\"60:40\">\n  <River.Visual hasShadow={false}>\n    <video\n      loop\n      playsInline\n      autoPlay\n      muted\n      aria-hidden=\"true\"\n      poster=\"https://github.githubassets.com/images/modules/site/issues/issue-tasks-progress-placeholder.png\"\n    >\n      <source\n        type=\"video/mp4; codecs=hevc,mp4a.40.2\"\n        src=\"https://github.githubassets.com/images/modules/site/issues/issue-tasks-progress.hevc.mp4\"\n      />\n      <source\n        type=\"video/mp4; codecs=avc1.4D401E,mp4a.40.2\"\n        src=\"https://github.githubassets.com/images/modules/site/issues/issue-tasks-progress.h264.mp4\"\n      />\n    </video>\n  </River.Visual>\n  <River.Content>\n    <Heading>Break issues into actionable tasks</Heading>\n    <Text>\n      Tackle complex issues with task lists and track their status with new\n      progress indicators. Convert tasks into their own issues and navigate your\n      work hierarchy.\n    </Text>\n  </River.Content>\n</River>\n```\n\n### Alternative heading levels\n\n```jsx live\n<River imageTextRatio=\"60:40\">\n  <River.Visual>\n    <img\n      src=\"https://via.placeholder.com/600x400/f5f5f5/f5f5f5.png\"\n      alt=\"placeholder with an off-white background color\"\n    />\n  </River.Visual>\n  <River.Content>\n    <Heading as=\"h1\">Alternative heading levels</Heading>\n    <Text>\n      Use the 'as' prop to specify alternative heading levels. The default is\n      'h3'.\n    </Text>\n  </River.Content>\n</River>\n```\n\n### River breakout\n\n```jsx live\n<RiverBreakout>\n  <RiverBreakout.A11yHeading>Accelerate workflows</RiverBreakout.A11yHeading>\n  <RiverBreakout.Visual>\n    <img\n      src=\"https://via.placeholder.com/600x400/f5f5f5/f5f5f5.png\"\n      alt=\"placeholder, blank area with an off-white background color\"\n    />\n  </RiverBreakout.Visual>\n  <RiverBreakout.Content\n    trailingComponent={() => (\n      <Timeline>\n        <Timeline.Item>\n          <em>GitHub Codespaces</em> offers a complete dev environment in\n          seconds.\n        </Timeline.Item>\n        <Timeline.Item>\n          <em>GitHub Copilot</em> is your AI pair programmer that empowers you\n          to complete tasks.\n        </Timeline.Item>\n      </Timeline>\n    )}\n  >\n    <Text>\n      <em>This first sentence is a river breakout headline.</em> And this is\n      where the body copy starts. Remember to keep these nice and succinct.\n    </Text>\n    <Link href=\"#\">Call to action</Link>\n  </RiverBreakout.Content>\n</RiverBreakout>\n```\n\n## Component props\n\n### River <Label>Required</Label>\n\n| Name             | Type                           |                          Default                          | Description                                                                                                 |\n| :--------------- | :----------------------------- | :-------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------- |\n| `align`          | `'start'`, `'end'`, `'center'` |     <PropTableValues values={[defaultRiverAlign]} />      | Alignment of text content relative to the Visual position                                                   |\n| `imageTextRatio` | `'50:50'`, `'60:40'`           | <PropTableValues values={[defaultRiverImageTextRatio]} /> | The aspect ratio applied to the image in relation to the adjacent text. Affects overall layout proportions. |\n| `className`      | `string`                       |                                                           | Sets a custom class on the root element                                                                     |\n| `id`             | `string`                       |                                                           | Sets a custom id                                                                                            |\n| `ref`            | `React.RefObject`              |                                                           | Forward a Ref to the underlying DOM node                                                                    |\n\n### River.Visual and RiverBreakout.Visual <Label>Required</Label>\n\n| Name        | Type              | Default | Description                                                                                                                                   |\n| :---------- | :---------------- | :-----: | :-------------------------------------------------------------------------------------------------------------------------------------------- |\n| `fillMedia` | `boolean`         |  true   | Automatically styles images and video to fill and fit the width of the parent. Disable this setting if you have bespoke styling requirements. |\n| `children`  | `ReactElement`    |         | Bring your own component (BYOC) `img` or `ReactElement` (E.g. Next.js `Image` component)                                                      |\n| `hasShadow` | `boolean`         | `false` | Shadow applied to the `children`. Set be `false` when the child node has a transparent background.                                            |\n| `className` | `string`          |         | Sets a custom class on the root element                                                                                                       |\n| `id`        | `string`          |         | Sets a custom id                                                                                                                              |\n| `ref`       | `React.RefObject` |         | Forward a Ref to the underlying DOM node                                                                                                      |\n| `rounded`   | `boolean`         | `true`  | Toggle visually rounded corners. Enabled by default.                                                                                          |\n\n### River.Content and RiverBreakout.Content <Label>Required</Label>\n\n[`Label`](https://primer.style/brand/components/Label), [`Text`](https://primer.style/brand/components/Text),[`Heading`](https://primer.style/brand/components/Heading), [`Link`](https://primer.style/brand/components/Link) are the only `children` accepted. They can be composed in any order, but their rendered output will always be in a predetermined order.\n\n| Name        | Type                                                                                                                                                                  | Default | Description                                      |\n| :---------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-----: | :----------------------------------------------- |\n| `children`  | [`Text`](https://primer.style/brand/components/Text),[`Heading`](https://primer.style/brand/components/Heading), [`Link`](https://primer.style/brand/components/Link) |         | Content that corrosponds to the adjacent visual. |\n| `className` | `string`                                                                                                                                                              |         | Sets a custom class on the root element          |\n| `id`        | `string`                                                                                                                                                              |         | Sets a custom id                                 |\n| `ref`       | `React.RefObject`                                                                                                                                                     |         | Forward a Ref to the underlying DOM node         |\n\n### RiverBreakout\n\n| Name        | Type              | Default | Description                              |\n| :---------- | :---------------- | :-----: | :--------------------------------------- |\n| `className` | `string`          |         | Sets a custom class on the root element  |\n| `id`        | `string`          |         | Sets a custom id                         |\n| `ref`       | `React.RefObject` |         | Forward a Ref to the underlying DOM node |\n\n### RiverBreakout.A11yHeading <Label>Required</Label>\n\n| Name       | Type        | Default | Description                                                                         |\n| :--------- | :---------- | :-----: | :---------------------------------------------------------------------------------- |\n| `children` | `ReactNode` |         | The heading text that will be read aloud to screen readers, but is visually hidden. |\n","parent":{"relativeDirectory":"components/River","name":"react"}},{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/components/SectionIntro/index.mdx","frontmatter":{"title":"Section intro"},"rawBody":"---\ntitle: Section intro\ndescription: Use the section intro component to provide a title, optional description and link to a new section in the page.\n---\n\nimport CustomVideoPlayer from '../../../src/components/custom-video-player'\nimport ComponentLayout from '../../../src/layouts/component-layout'\nexport default ComponentLayout\n\n## Anatomy\n\n![An image displaying a section intro with a title, description and a link.](https://github.com/primer/brand/assets/6951037/8b973760-6ddc-441a-a36a-8c4c282bfdcf)\n\n- Label: An optional label to provide leading context to the section intro.\n- Heading: The title of the section.\n- Description: An optional description of the section.\n- Link: An optional link to expand on the content introduced.\n\n## Usage\n\nUse the section intro to introduce a new section element in the page. The section intro uses the full-width of the screen and can be used in conjunction with other components that expand the content introduced. For example, the [card](/components/Card) or the [pillar](/components/Pillar) components.\n\nWe recommmend using the section intro as a header of an HTML `<section>` element. Sections divide the content of the page into thematic groups and represent standalone elements that are typically related to a specific topic or subject within the document.\n\nSections are designed to be self-contained, meaning they should make sense and be meaningful even when viewed independently from the rest of the page. They provide a way to divide the content into meaningful and structured blocks.\n\nEnsure the description is concise, keeping it to one paragraph. Use a link to direct users to a page with further details if needed.\n\n<DoDontContainer>\n  <Do>\n    <img src=\"https://github.com/primer/brand/assets/6951037/6cfa8d47-7fe6-4ead-8c3b-d1ccf5e2fc36\" />\n    <Caption>\n      Use section intros to introduce a new topic in a section and combine it\n      with other components and content.\n    </Caption>\n  </Do>\n  <Dont>\n    <img src=\"https://github.com/primer/brand/assets/6951037/f9ee0d4f-5ad5-4b31-9a8c-6533cd199096\" />\n    <Caption>\n      Don't use it as standalone element followed by other section intros.\n    </Caption>\n  </Dont>\n</DoDontContainer>\n\n<DoDontContainer>\n  <Do>\n    <img src=\"https://github.com/primer/design/assets/175638/f8bd5ed9-d716-40c2-aef6-33979a87784d\" />\n    <Caption>Use a short description to introduce the section.</Caption>\n  </Do>\n  <Dont>\n    <img src=\"https://github.com/primer/design/assets/175638/c2985d40-94c0-436c-9947-6c98611a0c77\" />\n    <Caption>Don't use section intro for long form content.</Caption>\n  </Dont>\n</DoDontContainer>\n\n## Options\n\n### Align\n\nSection intro can be aligned to the start or center of the page. By default, the section intro is aligned to the start of the page to allow for an image or a visual asset to be positioned on the left. Use the center alignment if the asset is centered, not present, or the scenario calls for it.\n\n<DoDontContainer stacked>\n  <Do>\n    <img src=\"https://github.com/primer/brand/assets/6951037/06f00622-baf4-45b8-b044-b90642d837e9\" />\n    <Caption>\n      Use center alignment if the section intro is paired with a centered image\n      or visual asset.\n    </Caption>\n  </Do>\n  <Dont>\n    <img src=\"https://github.com/primer/brand/assets/6951037/67da7e5d-4535-4f80-bbce-b6e0a7708dee\" />\n    <Caption>\n      Don't use center alignment if the section intro is paired with an image or\n      visual asset aligned to the left.\n    </Caption>\n  </Dont>\n</DoDontContainer>\n\n### Emphasized text\n\nSection intro allows for only one portion of the heading to be highlighted. Use strategically to highlight key ideas and guide effectively through a story.\n\n![An image displaying a section intro with emphasized text.](https://github.com/primer/brand/assets/6951037/d583e4f4-7ce6-426d-be08-5afc704ac611)\n\n## Related components\n\n- [Hero](/components/Hero): Use the hero component to render a full-width banner on a webpage.\n- [CTABanner](/components/CTABanner): To draw attention to or create urgency around a user action.\n","parent":{"relativeDirectory":"components/SectionIntro","name":"index"}},{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/components/Stack/index.mdx","frontmatter":{"title":"Stack"},"rawBody":"---\ntitle: Stack\ndescription: Use the stack component to create a layout for its immediate children along the vertical or horizontal axis.\n---\n\nimport CustomVideoPlayer from '../../../src/components/custom-video-player'\nimport ComponentLayout from '../../../src/layouts/component-layout'\nexport default ComponentLayout\n\n![](https://github.com/primer/brand/assets/912236/f04a87ce-a4ca-403b-8732-a8575a39437a)\n\n## Usage\n\nUse the stack component to distribute space and alignment between items in a vertical or horizontal direction (one-dimensional layout)[^1]. If you need both vertical and horizontal layout (two-dimensional layout), use the [grid](/components/Grid) component instead. When in doubt, we recommend reading the [grid vs stack](/components/Grid#grid-vs-stack) documentation.\n\nWe recommend using the stack component for inline or text based elements. Stack enables items to scale, wrap, and shrink depending on each item's content and the available space.\n\n[^1]: The stack component is implemented using the [CSS Flexbox Layout](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Flexible_Box_Layout) specification.\n\n<DoDontContainer>\n  <Do>\n    <img\n      src=\"https://github.com/primer/brand/assets/912236/3cfb1fc3-071c-478e-8104-543dcc823927\"\n      alt=\"\"\n    />\n    <Caption>\n      Use the stack component for inline or text based elements. Like a\n      navigational list or a button group.\n    </Caption>\n  </Do>\n  <Dont>\n    <img\n      src=\"https://github.com/primer/brand/assets/912236/53436826-515f-49d6-b33c-d84124f29aa4\"\n      alt=\"\"\n    />\n    <Caption>\n      Don't use the stack component to create a grid of items. Use the grid\n      component instead.\n    </Caption>\n  </Dont>\n</DoDontContainer>\n\n## Options\n\n### Gap\n\nUse the gap to change the space between items. Use small values when grouping closed related items, and larger values to separate sections or non-related items between them.\n\n<DoDontContainer>\n  <Do>\n    <img\n      src=\"https://github.com/primer/brand/assets/912236/dd508033-0435-48af-9b0b-ab1881608d8e\"\n      alt=\"\"\n    />\n    <Caption>\n      Use large gap values to separate sections or non-related items.\n    </Caption>\n  </Do>\n  <Dont>\n    <img\n      src=\"https://github.com/primer/brand/assets/912236/3e6974eb-2f80-4fee-9000-dc9fa31432a7\"\n      alt=\"\"\n    />\n    <Caption>Don't use large gap values for related items.</Caption>\n  </Dont>\n</DoDontContainer>\n\n### Direction, alignment, and justification\n\nUse the direction to control the rendering direction of items. The direction can be adjusted on different viewports. For example, an icon and a label might be rendered horizontally on large viewports, but vertically on small viewports for better readability and composition.\n\nUse the align and justify options for determining the rendering alignment on the cross-axis and main-axis respectively. Taking the example above, the icon and label might be aligned to the center on mobile viewports, but aligned to the start on large viewports.\n\n<div>\n  <CustomVideoPlayer\n    width=\"100%\"\n    src=\"https://github.com/primer/brand/assets/912236/cd8eb55f-0f7e-40fd-bfdb-47ab8507370f\"\n  />\n  <Caption>\n    Use vertical layout on small viewports to ensure that the content is\n    readable. Combine it with center alignment if the text is short and the\n    context calls for it.\n  </Caption>\n</div>\n\n## Related components\n\n- [Grid](/components/Grid): Use the grid component to create flexible and responsive grid-based layouts.\n","parent":{"relativeDirectory":"components/Stack","name":"index"}},{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/components/SectionIntro/react.mdx","frontmatter":{"title":"Section intro"},"rawBody":"---\ntitle: Section intro\nstatus: Experimental\nfigma: https://www.figma.com/file/BJ95AjraesmRCWsKA013GS/Primer-Brand?node-id=3891%3A17104&t=j6zvLXblgsO36Wmu-11\nsource: https://github.com/primer/brand/blob/main/packages/react/src/SectionIntro/SectionIntro.tsx\nstorybook: '/brand/storybook/?path=/story/components-SectionIntro--playground'\ndescription: Use the section intro component to provide a title, optional description and link to a new section in the page.\n---\n\nimport ComponentLayout from '../../../src/layouts/component-layout'\nexport default ComponentLayout\n\nimport {Label} from '@primer/react'\n\n```js\nimport {SectionIntro} from '@primer/react-brand'\n```\n\n## Examples\n\n### Default\n\n<div>\n  <Box></Box>\n</div>\n\n```jsx live\n<section>\n  <SectionIntro>\n    <SectionIntro.Label>Label</SectionIntro.Label>\n    <SectionIntro.Heading>\n      Focus on solving bigger problems\n    </SectionIntro.Heading>\n    <SectionIntro.Description>\n      Spend less time creating boilerplate and repetitive code patterns, and\n      more time on what matters: building great software. Write a comment\n      describing the logic you want and GitHub Copilot will immediately suggest\n      code to implement the solution.\n    </SectionIntro.Description>\n    <SectionIntro.Link href=\"#\">Explore docs</SectionIntro.Link>\n  </SectionIntro>\n</section>\n```\n\n### Alignment\n\nThe content alignment can be changed using the `align` prop on the root `SectionIntro`. This can be configured to either `start` or `center`.\n\n```jsx live\n<section>\n  <SectionIntro align=\"center\">\n    <SectionIntro.Label>Label</SectionIntro.Label>\n    <SectionIntro.Heading>\n      Focus on solving bigger problems\n    </SectionIntro.Heading>\n    <SectionIntro.Description>\n      Spend less time creating boilerplate and repetitive code patterns, and\n      more time on what matters: building great software. Write a comment\n      describing the logic you want and GitHub Copilot will immediately suggest\n      code to implement the solution.\n    </SectionIntro.Description>\n    <SectionIntro.Link href=\"#\">Explore docs</SectionIntro.Link>\n  </SectionIntro>\n</section>\n```\n\n## Component props\n\n### SectionIntro <Label>Required</Label>\n\n| name        | type                       | default     | required | description                                                   |\n| ----------- | -------------------------- | ----------- | -------- | ------------------------------------------------------------- |\n| `children`  | `ReactNode`, `ReactNode[]` | `undefined` | `true`   | Content to include within the section intro component         |\n| `align`     | `start`, `center`          | `start`     | `true`   | The layout applied to the content wihin the section component |\n| `className` | `string`                   |             | `false`  | SectionIntro custom class                                     |\n| `fullWidth` | `boolean`                  |             | `false`  | Fills available space                                         |\n\n### Hero.Label\n\n| name        | type              | default | description                                  |\n| ----------- | ----------------- | ------- | -------------------------------------------- |\n| `className` | `string`          |         | Sets a custom class on the root of the label |\n| `id`        | `string`          |         | Sets a custom id on the root of the label    |\n| `ref`       | `React.RefObject` |         | Forward a Ref to the underlying DOM node     |\n\nForwards all props from the [Label component](/components/Label), including `size` and `color`.\n\n### SectionIntro.Heading <Label>Required</Label>\n\nRequired node that is used to provide a heading for the section.\n\n| name        | type                       | default     | required | description                                           |\n| ----------- | -------------------------- | ----------- | -------- | ----------------------------------------------------- |\n| `className` | `string`                   |             | `false`  | Custom class name for the heading component           |\n| `children`  | `ReactNode`, `ReactNode[]` | `undefined` | `true`   | Content to be displayed inside the heading component. |\n\nForwards all props from the [Heading component](/components/Heading), including `as`, `size`, and `weight`.\n\n### SectionIntro.Description\n\nOptional node that can be used to provide a description for the section.\n\n| name       | type                       | default     | required | description                                                |\n| ---------- | -------------------------- | ----------- | -------- | ---------------------------------------------------------- |\n| `children` | `ReactNode`, `ReactNode[]` | `undefined` | `true`   | Content to be displayed inside the section intro component |\n\n`id`, `className` and `ref` are forwarded by default to all children.\n\n### SectionIntro.Link\n\nOptional node that can be used to provide a link.\n\n| name        | type     | default     | required | description                             |\n| ----------- | -------- | ----------- | -------- | --------------------------------------- |\n| `className` | `string` | `undefined` | `false`  | Sets a custom class on the root element |\n\n`id`, `className` and `ref` are forwarded by default to all children.\n","parent":{"relativeDirectory":"components/SectionIntro","name":"react"}},{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/components/Stack/react.mdx","frontmatter":{"title":"Stack"},"rawBody":"---\ntitle: Stack\nstatus: Experimental\nsource: https://github.com/primer/brand/tree/main/src/Text/Text.tsx\nstorybook: https://github.com/primer/brand/blob/main/packages/react/src/Stack/Stack.tsx\ndescription: Use the stack component to enable layout of its immediate children along the vertical or horizontal axis.\n---\n\nimport ComponentLayout from '../../../src/layouts/component-layout'\nexport default ComponentLayout\n\nimport {\n  defaultStackDirection,\n  defaultStackSpacing,\n  StackAlignItemVariants,\n  StackSpacingVariants,\n  StackDirectionVariants,\n  StackJustifyContentVariants,\n} from '@primer/react-brand'\nimport {PropTableValues} from '../../../src/components'\n\n```js\nimport {Stack} from '@primer/react-brand'\n```\n\n## Examples\n\n### Default\n\n`Stack` is a layout helper component intended for rendering `children` in a single direction.\n\nUse the `direction` prop to alternate between `vertical` and `horizontal` directions.\n\nMany `Stack` props - including `direction` - accept both `string` and `Object` values. The former will apply the value across all viewports, while the latter will permit granular control at specific breakpoints. See [Responsive](#Responsive) below for more details.\n\n```jsx live\n<Stack direction=\"horizontal\">\n  <img\n    src=\"https://via.placeholder.com/150x75/D0D7DE/D0D7DE.png\"\n    alt=\"placeholder with gray background and no foreground text\"\n  />\n  <img\n    src=\"https://via.placeholder.com/150x75/D0D7DE/D0D7DE.png\"\n    alt=\"placeholder with gray background and no foreground text\"\n  />\n  <img\n    src=\"https://via.placeholder.com/150x75/D0D7DE/D0D7DE.png\"\n    alt=\"placeholder with gray background and no foreground text\"\n  />\n</Stack>\n```\n\n### Alignment\n\n`Stack` provides `alignItems` and `justifyContent` props for determining the rendering direction on the cross-axis and main-axis respectively.\n\nUse the playground below to experiment with the various options.\n\n```javascript live noinline\nconst App = () => {\n  const [alignItemsValue, setAlignItemsValue] = React.useState('center')\n  const [justifyContentValue, setJustifyContentValue] =\n    React.useState('space-between')\n\n  const handleMainAxisChange = (event) =>\n    setJustifyContentValue(event.target.value)\n  const handleCrossAxisChange = (event) =>\n    setAlignItemsValue(event.target.value)\n\n  return (\n    <Container>\n      <Stack\n        direction=\"horizontal\"\n        alignItems={alignItemsValue}\n        justifyContent={justifyContentValue}\n        style={{height: 400}}\n      >\n        <img\n          src=\"https://via.placeholder.com/150x75/D0D7DE/D0D7DE.png\"\n          alt=\"placeholder with gray background and no foreground text\"\n        />\n        <img\n          src=\"https://via.placeholder.com/150x75/D0D7DE/D0D7DE.png\"\n          alt=\"placeholder with gray background and no foreground text\"\n        />\n        <img\n          src=\"https://via.placeholder.com/150x75/D0D7DE/D0D7DE.png\"\n          alt=\"placeholder with gray background and no foreground text\"\n        />\n      </Stack>\n\n      <Stack direction=\"horizontal\" gap=\"spacious\" justifyContent=\"center\">\n        <FormControl>\n          <FormControl.Label>Main axis</FormControl.Label>\n          <Select\n            defaultValue={justifyContentValue}\n            onChange={handleMainAxisChange}\n          >\n            <Select.Option value=\"center\">center</Select.Option>\n            <Select.Option value=\"flex-start\">flex-start</Select.Option>\n            <Select.Option value=\"flex-end\">flex-end</Select.Option>\n            <Select.Option value=\"space-between\">space-between</Select.Option>\n            <Select.Option value=\"space-around\">space-around</Select.Option>\n            <Select.Option value=\"space-evenly\">space-evenly</Select.Option>\n          </Select>\n        </FormControl>\n\n        <FormControl>\n          <FormControl.Label>Cross axis</FormControl.Label>\n          <Select\n            defaultValue={alignItemsValue}\n            onChange={handleCrossAxisChange}\n          >\n            <Select.Option value=\"center\">center</Select.Option>\n            <Select.Option value=\"flex-start\">flex-start</Select.Option>\n            <Select.Option value=\"flex-end\">flex-end</Select.Option>\n          </Select>\n        </FormControl>\n      </Stack>\n    </Container>\n  )\n}\n\nrender(App)\n```\n\n### Responsive\n\nPassing an Object of a particular shape will allow granular control of `direction`, `gap`, `alignItems`, `justifyContent` and `padding` at various supported breakpoints.\n\nSupported breakpoints are `narrow`, `regular` and `wide`.\n\nThe Object value does not require all properties be passed, but rather operates on the basis of `min-width`.\n\nE.g. Providing only `narrow` will apply that value to all larger breakpoints, but not the other way.\n\n```jsx live\n<Stack\n  style={{height: 400}}\n  direction={{\n    narrow: 'vertical',\n    regular: 'vertical',\n    wide: 'horizontal',\n  }}\n  gap={{\n    narrow: 'condensed',\n    regular: 'normal',\n    wide: 'spacious',\n  }}\n  padding={{\n    narrow: 'condensed',\n    regular: 'normal',\n    wide: 'spacious',\n  }}\n  alignItems={{\n    narrow: 'flex-start',\n    regular: 'center',\n    wide: 'center',\n  }}\n  justifyContent={{\n    narrow: 'center',\n    regular: 'center',\n    wide: 'space-between',\n  }}\n>\n  <img\n    src=\"https://via.placeholder.com/150x75/D0D7DE/D0D7DE.png\"\n    alt=\"placeholder with gray background and no foreground text\"\n  />\n  <img\n    src=\"https://via.placeholder.com/150x75/D0D7DE/D0D7DE.png\"\n    alt=\"placeholder with gray background and no foreground text\"\n  />\n  <img\n    src=\"https://via.placeholder.com/150x75/D0D7DE/D0D7DE.png\"\n    alt=\"placeholder with gray background and no foreground text\"\n  />\n</Stack>\n```\n\n## Component props\n\n### Stack\n\n| Name             | Type                                                                   |                       Default                        | Description                                |\n| :--------------- | :--------------------------------------------------------------------- | :--------------------------------------------------: | :----------------------------------------- |\n| `direction`      | <PropTableValues values={StackDirectionVariants} addLineBreaks />      | <PropTableValues values={[defaultStackDirection]} /> | Determines layout direction                |\n| `gap`            | <PropTableValues values={StackSpacingVariants} addLineBreaks />        |  <PropTableValues values={[defaultStackSpacing]} />  | Determines gap between items               |\n| `padding`        | <PropTableValues values={StackSpacingVariants} addLineBreaks />        |  <PropTableValues values={[defaultStackSpacing]} />  | Determines padding applied to Stack parent |\n| `justifyContent` | <PropTableValues values={StackJustifyContentVariants} addLineBreaks /> |                                                      | Determines rendering on the main-axis      |\n| `alignItems`     | <PropTableValues values={StackAlignItemVariants} addLineBreaks />      |                                                      | Determines rendering on the cross-axis     |\n","parent":{"relativeDirectory":"components/Stack","name":"react"}},{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/components/Testimonial/index.mdx","frontmatter":{"title":"Testimonial"},"rawBody":"---\ntitle: Testimonial\ndescription: Use testimonial to display a quote from a customer or user.\n---\n\nimport ComponentLayout from '../../../src/layouts/component-layout'\nexport default ComponentLayout\n\n## Anatomy\n\n![An image displaying a testimonial anatomy.](https://github.com/primer/brand/assets/912236/5072db4b-446f-4091-be35-48cc020d51ba)\n\n- Quote: The quote from the customer.\n- Name: The name of the customer.\n- Position: The position or role of the customer.\n- Avatar or Logo: Optional avatar of the customer or the company logo.\n\n## Usage\n\nUse the testimonial component to showcase a quote or a review from a customer. Use the testimonials to build credibility, trust, and provide social proof by displaying customers' sentiments about the product.\n\nTestimonials should be short and concise. Quotes should be not be longer than 3-4 lines. Avoid using long quotes that can be hard to understand or that don't provide enough context.\n\n<DoDontContainer>\n  <Do>\n    <img src=\"https://github.com/primer/brand/assets/912236/ca8b16f9-ada6-49b7-a627-db039f5bd3d9\" />\n    <Caption>Use short and concise quotes.</Caption>\n  </Do>\n  <Dont>\n    <img src=\"https://github.com/primer/brand/assets/912236/bb0ae79c-244f-4cdb-83e2-655bd99ee67e\" />\n    <Caption>\n      Don't use long quotes that can be hard to read and understand.\n    </Caption>\n  </Dont>\n</DoDontContainer>\n\nUse highlitghts to alternate the color of the quote mark and emphasize specific parts of the quote.\n\n<DoDontContainer>\n  <Do>\n    <img src=\"https://github.com/primer/brand/assets/912236/0f81c397-c992-41be-8242-4d8500744213\" />\n    <Caption>\n      Use emphasis to highlight te beginning of the quote and provide extra\n      visual weight.\n    </Caption>\n  </Do>\n  <Dont>\n    <img src=\"https://github.com/primer/brand/assets/912236/107d6fc4-7010-4a7c-859b-6a15b2ad6cc8\" />\n    <Caption>\n      Don't use multiple highlights in the same quote to avoid visual noise.\n    </Caption>\n  </Dont>\n</DoDontContainer>\n\nAvatars and logos are optional and can be used to provide more credibility about the customer or the company. When using an avatar, use an image of the customer to make the testimonial more personal. If an image is not available, use a logo or a similar visual asset that represents the customer company or the organization.\n\n<DoDontContainer>\n  <Do>\n    <img src=\"https://github.com/primer/brand/assets/912236/ed537938-cc59-4d02-9285-878ea03c6f5f\" />\n    <Caption>\n      Use a real life image of the customer or the logo of the company.\n    </Caption>\n  </Do>\n  <Dont>\n    <img src=\"https://github.com/primer/brand/assets/912236/6320c943-64e7-4ed3-b337-3734372dcf16\" />\n    <Caption>\n      Don't use illustrations or generic images. Use real life images to provide\n      trust.\n    </Caption>\n  </Dont>\n</DoDontContainer>\n\nTestimonials can be used individually or in a group. When using a group of testimonials, use the same size and alignment for all of them. When including an avatar or a logo, use them in all testimonials of the group and keep the same style and size— don't alternate between logos and avatars. We recommend using a maximum of 4 testimonials per group to avoid visual noise and to keep the quotes relevant.\n\n<DoDontContainer stacked>\n  <Do>\n    <img src=\"https://github.com/primer/brand/assets/912236/fc8eb38a-c765-4730-8c27-98d460d2c03e\" />\n    <Caption>\n      Use a maximum of 3 or 4 testimonials per group, with the same size and\n      alginment.\n    </Caption>\n  </Do>\n  <Dont>\n    <img src=\"https://github.com/primer/brand/assets/912236/b8b84d81-e71e-4d44-87c7-d227222f2bc7\" />\n    <Caption>\n      Don't use different sizes, alignments or alternate avatars and logos for\n      groups of testimonials.\n    </Caption>\n  </Dont>\n</DoDontContainer>\n\nUse a single testimonial to highlight a specific feature or benefit of the product. Use multiple testimonials to showcase each feature when in a list or a [river](/components/River).\n\n<DoDontContainer>\n  <Do>\n    <img src=\"https://github.com/primer/brand/assets/912236/e6e233fd-46e1-4d7f-8b07-39bb9169d8d8\" />\n    <Caption>\n      Use testimonials to enhance the credibility of an specific feature or\n      benefit.\n    </Caption>\n  </Do>\n  <Dont>\n    <img src=\"https://github.com/primer/brand/assets/912236/841d578b-e353-4dee-acbb-5c8bc3e7c356\" />\n    <Caption>\n      Don't use multiple testimonials to showcase the same feature to avoid\n      visual noise.\n    </Caption>\n  </Dont>\n</DoDontContainer>\n\n## Options\n\n### Size\n\nThe testimonial component uses the small size by default. Use the large size to provide more visual weight.\n\n<DoDontContainer>\n  <Do>\n    <img src=\"https://github.com/primer/brand/assets/912236/3eae1c3c-9a8d-4452-8f3a-a973fa103bd3\" />\n    <Caption>\n      Use the large size when using a single, full-width testimonial.\n    </Caption>\n  </Do>\n  <Dont>\n    <img src=\"https://github.com/primer/brand/assets/912236/163324a6-0276-4aa9-94f0-e38d4aea8a3e\" />\n    <Caption>Don't use small size for full-width testimonials.</Caption>\n  </Dont>\n</DoDontContainer>\n\n<DoDontContainer>\n  <Do>\n    <img src=\"https://github.com/primer/brand/assets/912236/58036813-77a1-4af6-a2dc-d2ce05ac085d\" />\n    <Caption>\n      Use the small size when paired with other components that showcase\n      features, like rivers.\n    </Caption>\n  </Do>\n  <Dont>\n    <img src=\"https://github.com/primer/brand/assets/912236/626bae6a-4bdb-42cb-8b82-2f6615f83283\" />\n    <Caption>\n      Don't use the large size in small sized areas or components like rivers,\n      so they don't conflict with the main content. Even if the quote is short,\n      use the small size instead.\n    </Caption>\n  </Dont>\n</DoDontContainer>\n\n<DoDontContainer stacked>\n  <Do>\n    <img src=\"https://github.com/primer/brand/assets/912236/5ac744e5-045c-4acc-8dee-38ebc740a8e4\" />\n    <Caption>Use the small size for single row groups of testimonials.</Caption>\n  </Do>\n  <Dont>\n    <img src=\"https://github.com/primer/brand/assets/912236/ef1e9bdb-2ab8-457f-b54b-ae224c9119c1\" />\n    <Caption>\n      Don't use the large size in single row groups, even if the content is\n      short. Stack them vertically and use 2 columns instead.\n    </Caption>\n  </Dont>\n</DoDontContainer>\n\n## Related components\n\n- [Pillar](/components/Pillar): To display related content with less visual emphasis.\n- [Card](/components/Card): To display navigational related content with higher visual weight.\n- [River](/components/River): To display navigational related content with higher visual weight.\n","parent":{"relativeDirectory":"components/Testimonial","name":"index"}},{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/components/Testimonial/react.mdx","frontmatter":{"title":"Testimonial"},"rawBody":"---\ntitle: Testimonial\nstatus: Experimental\nfigma: 'https://www.figma.com/file/BJ95AjraesmRCWsKA013GS/Primer-Brand?node-id=1852%3A27522'\nsource: https://github.com/primer/brand/blob/main/packages/react/src/Testimonial/Testimonial.tsx\nstorybook: '/brand/storybook/?path=/story/components-testimonial'\ndescription: Use the testimonial component to display a quote from a customer or user.\n---\n\nimport ComponentLayout from '../../../src/layouts/component-layout'\nexport default ComponentLayout\n\nimport {TestimonialQuoteMarkColors} from '@primer/react-brand'\nimport {Box as Container, Label} from '@primer/react'\nimport {PropTableValues} from '../../../src/components'\n\n```js\nimport {Testimonial} from '@primer/react-brand'\n```\n\n## Examples\n\n### Default\n\n```jsx live\n<Testimonial>\n  <Testimonial.Quote>\n    GitHub helps us ensure that we have our security controls baked into our\n    pipelines all the way from the first line of code we&apos;re writing.\n  </Testimonial.Quote>\n  <Testimonial.Name position=\"Staff Security Engineer\">\n    David Ross\n  </Testimonial.Name>\n  <Testimonial.Avatar\n    src=\"https://avatars.githubusercontent.com/u/92997159?v=4\"\n    alt=\"Circular avatar from David Ross's GitHub profile\"\n  />\n</Testimonial>\n```\n\n### Logo\n\nA logo (or similar) visual can be provided as an alternative to avatars.\n\n```jsx live\n<Testimonial>\n  <Testimonial.Quote>\n    GitHub helps us ensure that we have our security controls baked into our\n    pipelines all the way from the first line of code we&apos;re writing.\n  </Testimonial.Quote>\n  <Testimonial.Name>David Ross</Testimonial.Name>\n  <Testimonial.Logo>\n    <img\n      alt=\"GitHub Logo\"\n      src=\"https://github.githubassets.com/images/modules/logos_page/GitHub-Logo.png\"\n      width={60}\n    />\n  </Testimonial.Logo>\n</Testimonial>\n```\n\n### Size\n\nUse `size` to alternate the text size. Available options are `small` (default) and `large`.\n\n```jsx live\n<Testimonial size=\"large\">\n  <Testimonial.Quote>\n    GitHub helps us ensure that we have our security controls baked into our\n    pipelines all the way from the first line of code we&apos;re writing.\n  </Testimonial.Quote>\n  <Testimonial.Name position=\"Staff Software Engineer\">\n    David Ross\n  </Testimonial.Name>\n</Testimonial>\n```\n\n### Layout\n\n`Testimonial` will expand to fill the width of its parent by default.\n\nUse `Stack` to help position multiple, adjacent Testimonials alongside one another.\n\n```jsx live\n<Stack direction=\"horizontal\" gap=\"spacious\" padding=\"spacious\">\n  <Testimonial>\n    <Testimonial.Quote>\n      GitHub helps us ensure that we have our security controls baked into our\n      pipelines all the way from the first line of code we&apos;re writing.\n    </Testimonial.Quote>\n    <Testimonial.Name>David Ross</Testimonial.Name>\n  </Testimonial>\n  <Testimonial>\n    <Testimonial.Quote>\n      GitHub helps us ensure that we have our security controls baked into our\n      pipelines all the way from the first line of code we&apos;re writing.\n    </Testimonial.Quote>\n    <Testimonial.Name>David Ross</Testimonial.Name>\n  </Testimonial>\n</Stack>\n```\n\n### Position\n\nPass additional content about the testimonial provider using `position`.\n\n```jsx live\n<Testimonial>\n  <Testimonial.Quote>\n    GitHub helps us ensure that we have our security controls baked into our\n    pipelines all the way from the first line of code we&apos;re writing.\n  </Testimonial.Quote>\n  <Testimonial.Name position=\"Staff Software Engineer\">\n    David Ross\n  </Testimonial.Name>\n</Testimonial>\n```\n\n## Component props\n\n### Testimonial <Label>Required</Label>\n\n`Testimonial` passes contextual data to its child inputs, labels, validation messaging and more.\n\n| Name             | Type                                                                                                                                                         |   Default   | Description                                   |\n| :--------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------: | :-------------------------------------------- |\n| `children`       | <PropTableValues addLineBreaks values={['Testimonial.Quote','Testimonial.Name','Testimonial.Logo','Testimonial.Avatar','React.ReactNode' ]} addLineBreaks /> |             | Valid child nodes                             |\n| `className`      | `string`                                                                                                                                                     |             | Sets a custom class                           |\n| `id`             | `string`                                                                                                                                                     |             | Sets a custom id                              |\n| `ref`            | `React.RefObject`                                                                                                                                            |             | Forward a Ref to the underlying DOM node      |\n| `size`           | <PropTableValues addLineBreaks values={['small','large']}/>                                                                                                  |  `'small'`  | Set size of quote's text                      |\n| `quoteMarkColor` | <PropTableValues addLineBreaks values={TestimonialQuoteMarkColors}/>                                                                                         | `'default'` | Color or gradient fill of the the quote mark. |\n\n<h3 id=\"Testimonial-name\">\n  Testimonial.Name <Label>Required</Label>\n</h3>\n\n`Testimonial.Name` indicates the name of the person (or organisation) that provided the testimonial.\n\n| Name        | Type              | Default | Description                                                         |\n| :---------- | :---------------- | :-----: | :------------------------------------------------------------------ |\n| `children`  | `string`          |         | Label text                                                          |\n| `className` | `string`          |         | Applies a custom class                                              |\n| `id`        | `string`          |         | Sets a custom id                                                    |\n| `ref`       | `React.RefObject` |         | Forward a Ref to the underlying DOM node                            |\n| `position`  | `string`          |         | Optional. Applies additional content adjancent to the primary text. |\n\n<h3 id=\"Testimonial-avatar\">Testimonial.Avatar</h3>\n\n`Testimonial.Avatar` represent users or organizations.\n\n| Name        | Type              | Default | Description                                                        |\n| :---------- | :---------------- | :-----: | :----------------------------------------------------------------- |\n| `children`  | `string`          |         | Label text                                                         |\n| `className` | `string`          |         | Applies a custom class                                             |\n| `id`        | `string`          |         | Sets a custom id                                                   |\n| `ref`       | `React.RefObject` |         | Forward a Ref to the underlying DOM node                           |\n| `src`       | `string`          |         | Required. A url to the user or organisations GitHub profile avatar |\n| `alt`       | `string`          |         | Required. Applied as alt text to the avatar.                       |\n\n<h3 id=\"Testimonial-logo\">Testimonial.Logo</h3>\n\n`Testimonial.Logo` passes a visual that represents the users or organizations.\n\n| Name        | Type                                                                          | Default | Description                                            |\n| :---------- | :---------------------------------------------------------------------------- | :-----: | :----------------------------------------------------- |\n| `children`  | <PropTableValues addLineBreaks values={['SVGElement', 'HTMLImageElement']} /> |         | Accepts `<img>` and `<svg>` HTML elements as children. |\n| `className` | `string`                                                                      |         | Applies a custom class                                 |\n| `id`        | `string`                                                                      |         | Sets a custom id                                       |\n| `ref`       | `React.RefObject`                                                             |         | Forward a Ref to the underlying DOM node               |\n","parent":{"relativeDirectory":"components/Testimonial","name":"react"}},{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/components/Text/index.mdx","frontmatter":{"title":"Text"},"rawBody":"---\ntitle: Text\ndescription: Use the text component create a range of body text\n---\n\nimport CustomVideoPlayer from '../../../src/components/custom-video-player'\nimport ComponentLayout from '../../../src/layouts/component-layout'\nexport default ComponentLayout\n\n![The text component has size ranges from 100 to 700 with 100 being the smallest, and 700 being the largest.](https://github.com/primer/brand/assets/912236/67d89861-7a1e-4df9-a801-01d11f4dfb17)\n\n## Usage\n\nUse the text component to provide content and a clear hierarchy structure. The text component renders an HTML `<span>` tag without any default styling. Use `<p>` for any text that is meant to be a paragraph of text. Use multiple text components to represent paragraphs as distinct blocks of text. This helps with readability and makes it easier for search engines and assistive technologies to understand the content.\n\n## Options\n\n### Variant\n\nThe text component provides two variant options: `default` and `muted`. The `muted` variant is used to de-emphasize text or to provide visual contrast when paired with a title.\n\n<DoDontContainer>\n  <Do>\n    <img src=\"https://github.com/primer/brand/assets/912236/b7fa8c0d-0877-4edd-a8b3-4eea2e16fe26\" />\n    <Caption>\n      Use muted text to de-emphasize text and provide additional context.\n    </Caption>\n  </Do>\n  <Dont>\n    <img src=\"https://github.com/primer/brand/assets/912236/01f1e3a8-5058-4a73-a69f-6f424382fb63\" />\n    <Caption>\n      Don't use standalone muted text. Muted text should always be paired with\n      emphasized text or a title.\n    </Caption>\n  </Dont>\n</DoDontContainer>\n\n### Size\n\nThe text size ranges from 100 to 700, with 400 as the default size. This scale is built to provide hierarchy for all types of scenarios.\n\n<DoDontContainer>\n  <Do>\n    <img src=\"https://github.com/primer/brand/assets/912236/e029b053-eab8-47a7-bd49-b6ce49ac8bdf\" />\n    <Caption>\n      Use a smaller size to provide visual hierarchy when the text is paired\n      with a title. Use as many text components as needed to represent different\n      blocks of content.\n    </Caption>\n  </Do>\n  <Dont>\n    <img src=\"https://github.com/primer/brand/assets/912236/bfc9aaba-5a48-4053-a4a0-2209a9d7f082\" />\n    <Caption>\n      When the text is paired with a title, use a smaller size to provide visual\n      hierarchy.\n    </Caption>\n  </Dont>\n</DoDontContainer>\n\n### Alignment\n\nText alignment options offer a convenient way to control the positioning of content within block level elements.\n\nAvailable options include `start`, `center`, and `end`, which are recommended for supporting bidirectional reading.\n\n### Weight\n\nThe text component also supports `weight` options. Weight is automatically determined by the text size, but can be overridden when the scenario calls for it.\n\n### Responsive\n\nThe text component is responsive by default and the size will scale down on smaller screens. Weight options will remain the same across all screen sizes but can be overridden for each breakpoint.\n\n<div>\n  <CustomVideoPlayer\n    width=\"100%\"\n    src=\"https://github.com/primer/brand/assets/912236/f14167c9-2acc-4e7b-9d3d-a722e8a61e7f\"\n  />\n</div>\n\n## Related components\n\n- [Heading](/components/Heading): to render headings.\n- [Ordered list](/components/OrderedList): to render ordered lists.\n- [Unordered list](/components/UnorderedList): to render unordered lists.\n","parent":{"relativeDirectory":"components/Text","name":"index"}},{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/components/UnorderedList/index.mdx","frontmatter":{"title":"Unordered list"},"rawBody":"---\ntitle: Unordered list\ndescription: Use the unordered list component to present a collection of items without specific ordering.\n---\n\nimport ComponentLayout from '../../../src/layouts/component-layout'\nexport default ComponentLayout\n\n## Anatomy\n\n![Unordered list renders as a list with a visual indicator such as a checkmark](https://github.com/primer/brand/assets/912236/646a4719-dddf-47f5-9b34-85f6addb828e)\n\n## Usage\n\nUse an unordered list to group related items together. It is suitable for presenting a collection of items that do not require a specific order or ranking. The unordered list provides visual dashes for each item, which helps to emphasize the individuality of each point and makes it easier for users to scan and comprehend the information.\n\n<DoDontContainer>\n  <Do>\n    <img\n      src=\"https://github.com/primer/brand/assets/912236/3746552a-8fd2-4fbf-9ad5-ed9b1bdcff0d\"\n      alt=\"\"\n    />\n    <Caption>\n      Use an unordered list to present and group a list of items that don't\n      require a specific order.\n    </Caption>\n  </Do>\n  <Dont>\n    <img\n      src=\"https://github.com/primer/brand/assets/912236/5df3fd9d-5508-48b1-a4e4-7891d6ecabb3\"\n      alt=\"\"\n    />\n    <Caption>\n      Don't use an unordered list to present a sequence of steps. Use an ordered\n      list instead.\n    </Caption>\n  </Dont>\n</DoDontContainer>\n\nUse the unordered list to effectively provide a quick reference or highlight key points. This allows users to easily grasp the main ideas or features without having to read lengthy paragraphs. For lists that require a linear order, consider using an [ordered list](/components/OrderedList) instead.\n\nThe unordered list should have concise and short items. Avoid using long sentences or paragraphs as they can be difficult to scan and comprehend. If you need to include a long item or even headings and links, consider using a [pillar](/components/Pillar), a [card](/components/Card) or a [river](/components/River) instead.\n\n<DoDontContainer>\n  <Do>\n    <img\n      src=\"https://github.com/primer/brand/assets/912236/990a350b-cc8c-42f1-88db-662b5609a179\"\n      alt=\"\"\n    />\n    <Caption>\n      Use an unordered list for short and concise content items.\n    </Caption>\n  </Do>\n  <Dont>\n    <img\n      src=\"https://github.com/primer/brand/assets/912236/a416e1e6-58e6-4710-a2f9-646513853dcc\"\n      alt=\"\"\n    />\n    <Caption>\n      Don't use an unordered list for long and rich sentences, paragraphs,\n      headings or links. Use a pillar, card or river components instead.\n    </Caption>\n  </Dont>\n</DoDontContainer>\n\n## Options\n\n### Variant\n\nThe unordered list uses a dash to indicate each item in the list. The dash is the default variant and is suitable for most use cases. You can use check icons to indicate a list of features or benefits that are supported by the application. This way users can easily check off or easily compare the features that they might be interested in.\n\n<DoDontContainer>\n  <Do>\n    <img\n      src=\"https://github.com/primer/brand/assets/912236/afd68e16-0345-4085-b549-82647ca8136a\"\n      alt=\"\"\n    />\n    <Caption>\n      Use the check variant to indicate a list of features that are supported.\n    </Caption>\n  </Do>\n  <Dont>\n    <img\n      src=\"https://github.com/primer/brand/assets/912236/7d8ddb4b-1a37-4b7b-a773-1eaeb9027d46\"\n      alt=\"\"\n    />\n    <Caption>\n      Don't include mutliple benefits in one single items, split them into\n      multiple ones for better readability.\n    </Caption>\n  </Dont>\n</DoDontContainer>\n\n## Related components\n\n- [Ordered list](/components/OrderedList): to display a list of plain content items.\n- [Pillar](/components/Pillar): To display related content with less visual emphasis.\n- [Card](/components/Card): to display navigational related content with higher visual weight.\n- [River](/components/River): To display a list of content items with a visual asset.\n","parent":{"relativeDirectory":"components/UnorderedList","name":"index"}},{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/components/Text/react.mdx","frontmatter":{"title":"Text"},"rawBody":"---\ntitle: Text\nstatus: Experimental\na11yReviewed: true\nfigma: 'https://www.figma.com/file/BJ95AjraesmRCWsKA013GS/Primer-Brand?node-id=354%3A9513'\nsource: https://github.com/primer/brand/blob/main/packages/react/src/Text/Text.tsx\nstorybook: '/brand/storybook/?path=/story/components-text--scale'\ndescription: Use the text component create a range of body text\n---\n\nimport ComponentLayout from '../../../src/layouts/component-layout'\nexport default ComponentLayout\n\nimport {\n  TextSizes,\n  TextTags,\n  TextVariants,\n  TextWeights,\n  defaultTextVariant,\n  defaultTextTag,\n  defaultTextSize,\n} from '@primer/react-brand'\nimport {Box as Container} from '@primer/react'\nimport {PropTableValues} from '../../../src/components'\n\n```js\nimport {Text} from '@primer/react-brand'\n```\n\n## Examples\n\n### Default\n\n```jsx live\n<Text>With GitHub Copilot, you’re always in charge.</Text>\n```\n\n### Scale\n\n```jsx live\n<>\n  {TextSizes.map((size) => (\n    <Text key={size} size={size} as=\"p\">\n      Text {size}\n    </Text>\n  ))}\n</>\n```\n\n### Variants\n\n```jsx live\n<>\n  <Text as=\"p\">With GitHub Copilot, you’re always in charge.</Text>\n  <Text as=\"p\" variant=\"muted\">\n    With GitHub Copilot, you’re always in charge.\n  </Text>\n</>\n```\n\n### Alignment\n\nUse `align` to set the horizontal alignment of content inside a block element.\n\n```jsx live\n<Stack direction=\"vertical\">\n  <Text as=\"p\" align=\"start\">\n    Start\n  </Text>\n  <Text as=\"p\" align=\"center\">\n    Center\n  </Text>\n  <Text as=\"p\" align=\"end\">\n    End\n  </Text>\n</Stack>\n```\n\n### Polymorphism\n\nThe `Text` component can render as a `span`, `p` or `div` HTML element.\n\n```jsx live\n<Text as=\"p\">With GitHub Copilot, you’re always in charge.</Text>\n```\n\n### Weight\n\nThe recommended text weight is automatically applied through Text based on its position on the type scale.\nUse the `weight` prop to adjust the default visual appearance if required.\n\n```jsx live\n<>\n  <Text as=\"p\" weight=\"heavy\">\n    heavy\n  </Text>\n  <Text as=\"p\" weight=\"extrabold\">\n    extrabold\n  </Text>\n  <Text as=\"p\" weight=\"bold\">\n    bold\n  </Text>\n  <Text as=\"p\" weight=\"semibold\">\n    semibold\n  </Text>\n  <Text as=\"p\" weight=\"medium\">\n    medium\n  </Text>\n  <Text as=\"p\" weight=\"regular\">\n    regular\n  </Text>\n  <Text as=\"p\" weight=\"light\">\n    light\n  </Text>\n\n  {/* Responsive */}\n  <br />\n  <br />\n  <Text\n    as=\"p\"\n    weight={{\n      narrow: 'heavy',\n      regular: 'semibold',\n      wide: 'light',\n    }}\n  >\n    Responsive\n  </Text>\n</>\n```\n\n## Component props\n\n### Text\n\n| Name      | Type                                                                               |                      Default                      | Description                             |\n| :-------- | :--------------------------------------------------------------------------------- | :-----------------------------------------------: | :-------------------------------------- |\n| `as`      | <PropTableValues values={TextTags} addLineBreaks />                                |   <PropTableValues values={[defaultTextTag]} />   | Applies the underlying HTML element     |\n| `size`    | <PropTableValues values={TextSizes} addLineBreaks />                               |  <PropTableValues values={[defaultTextSize]} />   | Specify the text size                   |\n| `variant` | <PropTableValues values={TextVariants} addLineBreaks />                            | <PropTableValues values={[defaultTextVariant]} /> | Specify alternative text appearance     |\n| `weight`  | <PropTableValues values={[...TextWeights, 'ResponsiveWeightMap']} addLineBreaks /> |                                                   | Override the default visual text weight |\n","parent":{"relativeDirectory":"components/Text","name":"react"}},{"fileAbsolutePath":"/home/runner/work/brand/brand/apps/docs/content/components/UnorderedList/react.mdx","frontmatter":{"title":"Unordered list"},"rawBody":"---\ntitle: Unordered list\nstatus: Experimental\nfigma: 'https://www.figma.com/file/BJ95AjraesmRCWsKA013GS/branch/NzBMPIfPrFU9I87d3k7KVq/Primer-Brand?node-id=4045%3A17093&t=XJ9W58VgtbVo74gb-0'\nsource: https://github.com/primer/brand/tree/main/packages/react/src/list/UnorderedList/UnorderedList.tsx\nstorybook: '/brand/storybook/?path=/story/components-unorderedlist--default'\ndescription: Use the unordered list component to present a collection of items without specific ordering.\n---\n\nimport ComponentLayout from '../../../src/layouts/component-layout'\nexport default ComponentLayout\n\n```js\nimport {UnorderedList} from '@primer/react-brand'\n```\n\n## Examples\n\n### Default\n\n```jsx live\n<UnorderedList>\n  <UnorderedList.Item>\n    Automatic security and version updates\n  </UnorderedList.Item>\n  <UnorderedList.Item>GitHub Security Advisories</UnorderedList.Item>\n  <UnorderedList.Item>Code and secret scanning</UnorderedList.Item>\n  <UnorderedList.Item>Dependency review</UnorderedList.Item>\n  <UnorderedList.Item>\n    Automated authentication and identity management\n  </UnorderedList.Item>\n</UnorderedList>\n```\n\n### Checked variant\n\n```jsx live\n<UnorderedList variant=\"checked\">\n  <UnorderedList.Item>\n    Automatic security and version updates\n  </UnorderedList.Item>\n  <UnorderedList.Item>GitHub Security Advisories</UnorderedList.Item>\n  <UnorderedList.Item>Code and secret scanning</UnorderedList.Item>\n  <UnorderedList.Item>Dependency review</UnorderedList.Item>\n  <UnorderedList.Item>\n    Automated authentication and identity management\n  </UnorderedList.Item>\n</UnorderedList>\n```\n\n### `x` variant\n\n```jsx live\n<UnorderedList variant=\"x\">\n  <UnorderedList.Item>\n    Automatic security and version updates\n  </UnorderedList.Item>\n  <UnorderedList.Item>GitHub Security Advisories</UnorderedList.Item>\n  <UnorderedList.Item>Code and secret scanning</UnorderedList.Item>\n  <UnorderedList.Item>Dependency review</UnorderedList.Item>\n  <UnorderedList.Item>\n    Automated authentication and identity management\n  </UnorderedList.Item>\n</UnorderedList>\n```\n\n### Custom colors\n\n```jsx live\n<UnorderedList variant=\"checked\">\n  <UnorderedList.Item leadingVisualFill=\"var(--brand-color-success-fg)\">\n    Automatic security and version updates\n  </UnorderedList.Item>\n  <UnorderedList.Item leadingVisualFill=\"var(--brand-color-success-fg)\">\n    GitHub Security Advisories\n  </UnorderedList.Item>\n  <UnorderedList.Item leadingVisualFill=\"var(--brand-color-success-fg)\">\n    Code and secret scanning\n  </UnorderedList.Item>\n  <UnorderedList.Item leadingVisualFill=\"var(--brand-color-success-fg)\">\n    Dependency review\n  </UnorderedList.Item>\n  <UnorderedList.Item leadingVisualFill=\"var(--brand-color-success-fg)\">\n    Automated authentication and identity management\n  </UnorderedList.Item>\n</UnorderedList>\n```\n\n## Component props\n\n### UnorderedList\n\n| Name        | Type                                   |  Default  | Description                                                |\n| :---------- | :------------------------------------- | :-------: | :--------------------------------------------------------- |\n| `className` | `string`                               |           | Sets a custom class on the root element                    |\n| `variant`   | `default`, `checked` , `x`             | `default` | Specify alternative leading visual for list items          |\n| `children`  | `React.ReactNode`, `React.ReactNode[]` |           | Content to be displayed within the UnorderedList component |\n\n### UnorderedList.Item\n\n| Name                     | Type                                   |   Default   | Description                                                                                         |\n| :----------------------- | :------------------------------------- | :---------: | :-------------------------------------------------------------------------------------------------- |\n| `className`              | `string`                               |             | Sets a custom class on the root element                                                             |\n| `children`               | `React.ReactNode`, `React.ReactNode[]` |  `default`  | Content to be displayed within the OrderedList component                                            |\n| `leadingVisual`          | `Icon`                                 | `undefined` | Sets a custom leading visual ([Octicon](https://primer.style/foundations/icons/)) for the list item |\n| `leadingVisualFill`      | `string`                               | `undefined` | Sets a custom color value for the leading visual                                                    |\n| `leadingVisualAriaLabel` | `string`                               | `undefined` | Sets `aria-label` on the leading visual icon                                                        |\n\nAlso forwards the `variant` prop from the [Text component](/components/Text).\n","parent":{"relativeDirectory":"components/UnorderedList","name":"react"}}]},"allCustomSearchDoc":{"nodes":[]}}}