diff --git a/ui-components/src/forms/MultiSelectField.scss b/ui-components/src/forms/MultiSelectField.scss
index b2ddeab92c..f9edb5a839 100644
--- a/ui-components/src/forms/MultiSelectField.scss
+++ b/ui-components/src/forms/MultiSelectField.scss
@@ -82,7 +82,7 @@
width: 100%;
padding: var(--bloom-s1) var(--bloom-s2);
font-size: var(--bloom-font-size-sm);
- color: var(--bloom-color-gray-750);
+ color: var(--bloom-text-color);
text-align: right;
}
@@ -126,7 +126,7 @@
.multi-select-field__option--no-results,
.multi-select-field__option[aria-disabled="true"] {
- color: var(--bloom-color-gray-750) !important;
+ color: var(--bloom-text-color) !important;
cursor: not-allowed !important;
text-decoration: none !important;
}
diff --git a/ui-components/src/forms/PhoneField.tsx b/ui-components/src/forms/PhoneField.tsx
index 8ab9dc3930..439beacb28 100644
--- a/ui-components/src/forms/PhoneField.tsx
+++ b/ui-components/src/forms/PhoneField.tsx
@@ -22,7 +22,7 @@ export const PhoneField = (props: {
dataTestId?: string
}) => {
const labelClasses = ["label"]
- if (props.caps) labelClasses.push("field-label--caps")
+ if (props.caps) labelClasses.push("text__caps-spaced")
if (props.readerOnly) labelClasses.push("sr-only")
/**
* we need to handle two different use cases,
diff --git a/ui-components/src/global/forms.scss b/ui-components/src/global/forms.scss
index f4a3204834..44565fa1e3 100644
--- a/ui-components/src/global/forms.scss
+++ b/ui-components/src/global/forms.scss
@@ -23,7 +23,7 @@
}
label.sr-only + .control,
- label.field-label--caps + .control {
+ label.text__caps-spaced + .control {
@apply mt-0;
}
@@ -31,7 +31,7 @@
@apply mt-2;
}
- .field-label--caps.label + .field-note {
+ .text__caps-spaced.label + .field-note {
@apply mt-0;
}
@@ -256,10 +256,9 @@
}
}
-/* Restore previous Tailwind v1 color */
input::placeholder,
textarea::placeholder {
- color: #a0aec0;
+ color: var(--bloom-color-gray-650);
}
input[type],
@@ -298,17 +297,6 @@ input[type="number"] {
@apply text-gray-800;
}
-.field-label--caps {
- @apply font-sans;
- @apply uppercase;
- @apply text-gray-750;
- @apply tracking-widest;
- @apply font-semibold;
- @apply text-tiny;
- @apply mb-3;
- @apply inline-block;
-}
-
.field--inline {
display: inline-block;
}
diff --git a/ui-components/src/global/mixins.scss b/ui-components/src/global/mixins.scss
index 90ad32f08d..3db3517f98 100644
--- a/ui-components/src/global/mixins.scss
+++ b/ui-components/src/global/mixins.scss
@@ -116,7 +116,7 @@
&.is-warning {
background-color: var(--warning-appearance-background-color, var(--bloom-color-warn));
border-color: var(--warning-appearance-border-color, var(--bloom-color-warn));
- color: var(--warning-appearance-label-color, var(--bloom-color-gray-800));
+ color: var(--warning-appearance-label-color, var(--bloom-text-color-dark));
&:hover {
background-color: var(
@@ -176,7 +176,7 @@
}
&.is-warning {
- color: var(--bloom-color-gray-800);
+ color: var(--bloom-text-color-dark);
&:hover {
color: var(--bloom-color-white);
diff --git a/ui-components/src/global/text.scss b/ui-components/src/global/text.scss
index 004303675e..ac2468de66 100644
--- a/ui-components/src/global/text.scss
+++ b/ui-components/src/global/text.scss
@@ -72,31 +72,6 @@ h1.title {
@apply text-4xl;
}
-.text-caps-underline {
- @apply font-alt-sans;
- @apply uppercase;
- @apply text-tiny;
- @apply mb-5;
- @apply pb-2;
- @apply border-0;
- @apply border-b-4;
- @apply border-primary;
- @apply font-semibold;
- @apply text-gray-800;
- @apply tracking-widest;
- @apply inline-block;
-}
-
-.text-caps-tiny {
- @apply mb-3;
- @apply text-gray-750;
- @apply uppercase;
- @apply font-sans;
- @apply font-bold;
- @apply text-tiny;
- @apply tracking-wide;
-}
-
.text-serif-lg {
@apply font-serif;
@apply text-lg;
@@ -140,42 +115,85 @@ h1.title {
@apply block;
}
-.card-header {
- font-family: var(--card-header-font-family, var(--bloom-font-alt-sans));
- font-weight: var(--card-header-font-weight, 600);
- color: var(--card-header-color, var(--bloom-color-blue-700));
- font-size: var(--card-header-font-size, var(--bloom-font-size-3xl));
- margin-block: var(--card-header-margin-block, 0 var(--bloom-s3));
- line-height: var(--card-header-line-height, var(--bloom-line-height-tight));
-}
-
-.card-subheader {
- font-family: var(--card-subheader-font-family, var(--bloom-font-alt-sans));
- font-weight: var(--card-subheader-font-weight, normal);
- color: var(--card-subheader-color, var(--bloom-color-black));
- font-size: var(--card-subheader-font-size, var(--bloom-font-size-base));
- margin-block: var(--card-subheader-margin-block, 0 var(--bloom-s3));
-}
-
-.table-header {
- font-family: var(--table-header-font-family, var(--bloom-font-alt-sans));
- font-weight: var(--table-header-font-weight, 600);
- color: var(--table-header-color, var(--bloom-color-gray-800));
- font-size: var(--table-header-font-size, var(--bloom-font-size-sm));
- margin-block: var(--table-header-margin-block, 0 var(--bloom-s1));
-}
-
-.table-subheader {
- font-family: var(--table-subheader-font-family, var(--bloom-font-alt-sans));
- font-weight: var(--table-subheader-font-weight, normal);
- color: var(--table-subheader-color, var(--bloom-color-gray-750));
- font-size: var(--table-subheader-font-size, var(--bloom-font-size-sm));
- margin-block: var(--table-header-margin-block, 0 var(--bloom-s3));
-}
-
-.category-header {
- font-family: var(--category-header-font-family, var(--bloom-font-alt-sans));
- font-weight: var(--category-header-font-weight, 600);
- color: var(--category-header-color, var(--bloom-color-gray-700));
- font-size: var(--category-header-font-size, var(--bloom-font-size-sm));
+:root {
+ --bloom-text-color-light: var(--bloom-color-gray-700);
+ --bloom-text-color: var(--bloom-color-gray-750);
+ --bloom-text-color-dark: var(--bloom-color-gray-800);
+ --bloom-text-color-darker: var(--bloom-color-gray-850);
+ --bloom-text-color-darkest: var(--bloom-color-black);
+}
+
+.text__large-primary {
+ font-family: var(--text-large-primary-font-family, var(--bloom-font-alt-sans));
+ font-weight: var(--text-large-primary-font-weight, 600);
+ color: var(--text-large-primary--color, var(--bloom-color-primary-dark));
+ font-size: var(--text-large-primary-font-size, var(--bloom-font-size-3xl));
+ margin-block: var(--text-large-primary-margin-block, 0 var(--bloom-s3));
+ line-height: var(--text-large-primary-line-height, var(--bloom-line-height-tight));
+}
+
+.text__medium-normal {
+ font-family: var(--text-medium-normal-font-family, var(--bloom-font-alt-sans));
+ font-weight: var(--text-medium-normal-font-weight, normal);
+ color: var(--text-medium-normal-color, var(--bloom-text-color-darkest));
+ font-size: var(--text-medium-normal-font-size, var(--bloom-font-size-base));
+ margin-block: var(--text-medium-normal-margin-block, 0 var(--bloom-s3));
+}
+
+.text__small-weighted {
+ font-family: var(--text-small-weighted-font-family, var(--bloom-font-alt-sans));
+ font-weight: var(--text-small-weighted-font-weight, 600);
+ color: var(--text-small-weighted-color, var(--bloom-text-color-dark));
+ font-size: var(--text-small-weighted-font-size, var(--bloom-font-size-sm));
+ margin-block: var(--text-small-weighted-margin-block, 0 var(--bloom-s1));
+}
+
+.text__small-normal {
+ font-family: var(--text-small-normal-font-family, var(--bloom-font-alt-sans));
+ font-weight: var(--text-small-normal-font-weight, normal);
+ color: var(--text-small-normal-color, var(--bloom-text-color));
+ font-size: var(--text-small-normal-font-size, var(--bloom-font-size-sm));
+ margin-block: var(--text-small-normal-margin-block, 0 var(--bloom-s3));
+}
+
+.text__light-weighted {
+ font-family: var(--text-light-weighted-font-family, var(--bloom-font-alt-sans));
+ font-weight: var(--text-light-weighted-font-weight, 600);
+ color: var(--text-light-weighted-color, var(--bloom-text-color-light));
+ font-size: var(--text-light-weighted-font-size, var(--bloom-font-size-sm));
+}
+
+.text__caps-spaced {
+ font-family: var(--text-caps-spaced-font-family, var(--bloom-font-sans));
+ text-transform: uppercase;
+ color: var(--text-caps-spaced-color, var(--bloom-text-color));
+ letter-spacing: var(--text-caps-spaced-letter-spacing, var(--bloom-letter-spacing-widest));
+ font-weight: var(--text-caps-spaced-font-weight, 600);
+ font-size: var(--text-caps-spaced-font-size, var(--bloom-font-size-tiny));
+ margin-bottom: var(--text-caps-spaced-margin-bottom, var(--bloom-s3));
+ display: inline-block;
+}
+
+.text__underline-weighted {
+ font-family: var(--text-underline-weighted-font-family, var(--bloom-font-alt-sans));
+ text-transform: var(--text-underline-weighted-transform, uppercase);
+ font-size: var(--text-underline-weighted-font-size, var(--bloom-font-size-tiny));
+ margin-bottom: var(--text-underline-weighted-bottom-margin, var(--bloom-s5));
+ padding-bottom: var(--text-underline-weighted-bottom-padding, var(--bloom-s2));
+ border: var(--text-underline-weighted-border, 0);
+ border-bottom: var(--text-underline-weighted-border, 4px solid var(--bloom-color-primary));
+ font-weight: var(--text-underline-weighted-font-weight, 600);
+ color: var(--text-underline-weighted-color, var(--bloom-text-color-dark));
+ letter-spacing: var(--text-underline-weighted-letter-spacing, var(--bloom-letter-spacing-widest));
+ display: inline-block;
+}
+
+.text__caps-weighted {
+ margin-bottom: var(--text-caps-weighted-bottom-margin, var(--bloom-s3));
+ color: var(--text-caps-weighted-color, var(--bloom-text-color));
+ text-transform: var(--text-caps-weighted-text-transform, uppercase);
+ font-family: var(--text-caps-weighted-font-family, var(--bloom-font-sans));
+ font-weight: var(--text-caps-weighted-font-weight, 700);
+ font-size: var(--text-caps-weighted-font-size, var(--bloom-font-size-tiny));
+ letter-spacing: var(--text-caps-weighted-letter-spacing, var(--bloom-letter-spacing-wide));
}
diff --git a/ui-components/src/global/tokens/colors.scss b/ui-components/src/global/tokens/colors.scss
index 21e52aabc7..b24e001048 100644
--- a/ui-components/src/global/tokens/colors.scss
+++ b/ui-components/src/global/tokens/colors.scss
@@ -26,6 +26,7 @@
--bloom-color-gray-800: #30383a;
--bloom-color-gray-750: #555555;
--bloom-color-gray-700: #767676;
+ --bloom-color-gray-650: #888888;
--bloom-color-gray-600: #999999;
--bloom-color-gray-550: #aaaaaa;
--bloom-color-gray-500: #cccccc;
diff --git a/ui-components/src/headers/Heading.stories.tsx b/ui-components/src/headers/Heading.stories.tsx
deleted file mode 100644
index ce1ce02ef6..0000000000
--- a/ui-components/src/headers/Heading.stories.tsx
+++ /dev/null
@@ -1,27 +0,0 @@
-import * as React from "react"
-import { Heading } from "./Heading"
-
-export default {
- title: "Headers/Heading",
-}
-export const base1 = () =>
Test Header
-export const base2 = () =>
Test Header
-export const base3 = () =>
Test Header
-export const base4 = () =>
Test Header
-export const base5 = () =>
Test Header
-export const base6 = () =>
Test Header
-export const cardHeader = () =>
Card Header
-export const cardSubheader = () =>
Card Subheader
-export const tableHeader = () =>
Table Header
-export const tableSubheader = () =>
Table Subheader
-export const sidebarHeader = () =>
Sidebar Header
-export const categoryHeader = () =>
Category Header
-export const sidebarSubHeader = () => (
-
Sidebar Subheader
-)
-
-export const customPriority = () => (
-
- Custom Priority
-
-)
diff --git a/ui-components/src/headers/Heading.tsx b/ui-components/src/headers/Heading.tsx
deleted file mode 100644
index 071896cef3..0000000000
--- a/ui-components/src/headers/Heading.tsx
+++ /dev/null
@@ -1,31 +0,0 @@
-import * as React from "react"
-
-export interface HeadingProps {
- children?: React.ReactNode
- className?: string
- priority?: number
- style?: HeaderType
-}
-
-export type HeaderType = keyof typeof HeaderStyleMap
-
-const HeaderStyleMap = {
- cardHeader: "card-header",
- cardSubheader: "card-subheader",
- tableHeader: "table-header",
- tableSubheader: "table-subheader",
- sidebarHeader: "text-caps-underline",
- categoryHeader: "category-header",
- sidebarSubHeader: "text-caps-tiny",
-}
-
-const Heading = (props: HeadingProps) => {
- const priority = props.priority && props.priority >= 1 && props.priority <= 6 ? props.priority : 1
- const Tag = `h${priority}` as keyof JSX.IntrinsicElements
- const classNames = `${props.style && HeaderStyleMap[props.style]} ${
- props.className && props.className
- }`
- return
{props.children}
-}
-
-export { Heading as default, Heading }
diff --git a/ui-components/src/headers/HeadingGroup.docs.mdx b/ui-components/src/headers/HeadingGroup.docs.mdx
new file mode 100644
index 0000000000..8e8298971c
--- /dev/null
+++ b/ui-components/src/headers/HeadingGroup.docs.mdx
@@ -0,0 +1,25 @@
+import { Canvas, Story, ArgsTable } from "@storybook/addon-docs"
+import { HeadingGroup } from "./HeadingGroup"
+
+# Heading Group
+
+
+
+The HeadingGroup component provides a heading tag (h1-h6) combined with a paragraph tag as a subheading in an aria-minded fashion. Good for use in Card header components and other headers.
+
+## Heading Group Properties
+
+
+
+## Theming Variables
+
+You can apply CSS variables to the `.heading-group` selector to customize the appearance of the component.
+
+| Name | Type | Description | Default |
+| --------------------- | ----- | --------------------------------------------------- | ------------ |
+| `--heading-margin` | Size | Vertical space added around the top heading, if any | `0rem` |
+| `--subheading-margin` | Size | The space between the heading and subheading | `--bloom-s3` |
+| `--heading-color` | Color | Override to set a specific heading text color | `inherit` |
+| `--subheading-color` | Color | Override to set a specific subheading text color | `inherit` |
diff --git a/ui-components/src/headers/HeadingGroup.scss b/ui-components/src/headers/HeadingGroup.scss
new file mode 100644
index 0000000000..bf4f44962c
--- /dev/null
+++ b/ui-components/src/headers/HeadingGroup.scss
@@ -0,0 +1,23 @@
+.heading-group {
+ /* Component Variables */
+ --heading-margin: 0rem;
+ --subheading-margin: var(--bloom-s3);
+ --heading-color: inherit;
+ --subheading-color: inherit;
+
+ h1,
+ h2,
+ h3,
+ h4,
+ h5,
+ h6 {
+ margin-block: var(--heading-margin);
+ color: var(--heading-color);
+ }
+
+ p {
+ margin-block: var(--subheading-margin);
+ font-size: var(--bloom-font-size-base);
+ color: var(--subheading-color);
+ }
+}
diff --git a/ui-components/src/headers/HeadingGroup.stories.tsx b/ui-components/src/headers/HeadingGroup.stories.tsx
new file mode 100644
index 0000000000..46aa3bc2a0
--- /dev/null
+++ b/ui-components/src/headers/HeadingGroup.stories.tsx
@@ -0,0 +1,49 @@
+import React from "react"
+import { BADGES } from "../../.storybook/constants"
+import HeadingGroup from "./HeadingGroup"
+import HeadingGroupDocumentation from "./HeadingGroup.docs.mdx"
+
+export default {
+ title: "Headers/Heading Group 🚩",
+ id: "headers/heading-group",
+ parameters: {
+ docs: {
+ page: HeadingGroupDocumentation,
+ },
+ badges: [BADGES.GEN2],
+ },
+}
+
+export const withContent = () => (
+
+
+
+)
+
+export const customStyled = () => {
+ const customStyles = `
+ .custom-heading-group {
+ --heading-margin: 2rem;
+ --heading-color: maroon;
+ --subheading-color: forestgreen;
+ --subheading-margin: var(--heading-margin);
+ }
+ `
+ return (
+
+
+
+
More content here.
+
+
+ )
+}
diff --git a/ui-components/src/headers/HeadingGroup.tsx b/ui-components/src/headers/HeadingGroup.tsx
new file mode 100644
index 0000000000..d0462402b0
--- /dev/null
+++ b/ui-components/src/headers/HeadingGroup.tsx
@@ -0,0 +1,31 @@
+import React from "react"
+import { Heading } from "../text/Heading"
+import "./HeadingGroup.scss"
+
+export interface HeadingGroupProps {
+ /** A string or element to display in an `h2` tag (overridable via `headingPriority`) */
+ heading: React.ReactNode
+ /** A string or element to display in an `p` tag (using `aria-roledescription="subtitle"`) */
+ subheading: React.ReactNode
+ /**
+ * The heading level (1 through 6)
+ * @default 2
+ */
+ headingPriority?: number
+ /** Additional class name for the whole group */
+ className?: string
+}
+
+const HeadingGroup = (props: HeadingGroupProps) => {
+ const classNames = ["heading-group"]
+ if (props.className) classNames.push(props.className)
+
+ return (
+
+ {props.heading}
+ {props.subheading}
+
+ )
+}
+
+export { HeadingGroup as default, HeadingGroup }
diff --git a/ui-components/src/navigation/ProgressNav.scss b/ui-components/src/navigation/ProgressNav.scss
index 4bd536db8a..a4661abedc 100644
--- a/ui-components/src/navigation/ProgressNav.scss
+++ b/ui-components/src/navigation/ProgressNav.scss
@@ -4,7 +4,7 @@
--active-step-color: var(--bloom-color-primary);
--active-step-font-color: var(--bloom-color-gray-900);
--future-step-color: var(--bloom-color-gray-450);
- --future-step-font-color: var(--bloom-color-gray-750);
+ --future-step-font-color: var(--bloom-text-color);
--dot-size: var(--bloom-s3);
--dot-padding-left-mobile: var(--bloom-s2);
diff --git a/ui-components/src/page_components/listing/ListingCard.stories.tsx b/ui-components/src/page_components/listing/ListingCard.stories.tsx
index 37282ee54c..33f119d3c6 100644
--- a/ui-components/src/page_components/listing/ListingCard.stories.tsx
+++ b/ui-components/src/page_components/listing/ListingCard.stories.tsx
@@ -110,6 +110,22 @@ export const WithHeaders = () => {
)
}
+export const WithPillHeader = () => {
+ return (
+
+ )
+}
+
export const WithTags = () => {
return (
{
tableProps={{ ...standardTableProps }}
footerButtons={[{ text: "See Details", href: "see-details-link" }]}
contentProps={{
- contentHeader: { text: "Optional content header" },
- contentSubheader: { text: "Optional content subheader" },
+ contentHeader: { content: "Optional content header" },
+ contentSubheader: { content: "Optional content subheader" },
}}
cardTags={[
{ text: "Tag 1 text" },
diff --git a/ui-components/src/page_components/listing/ListingCard.tsx b/ui-components/src/page_components/listing/ListingCard.tsx
index 52578847d4..2be13aa2cd 100644
--- a/ui-components/src/page_components/listing/ListingCard.tsx
+++ b/ui-components/src/page_components/listing/ListingCard.tsx
@@ -3,7 +3,7 @@ import { ImageCard, ImageCardProps, ImageTag } from "../../blocks/ImageCard"
import { LinkButton } from "../../actions/LinkButton"
import { StackedTable, StackedTableProps } from "../../tables/StackedTable"
import { StandardTable, StandardTableProps } from "../../tables/StandardTable"
-import { Heading, HeaderType } from "../../headers/Heading"
+import { Heading, HeaderType } from "../../text/Heading"
import { Tag } from "../../text/Tag"
import { AppearanceShadeType, AppearanceStyleType } from "../../global/AppearanceTypes"
import { Icon, IconFillColors } from "../../icons/Icon"
@@ -12,24 +12,25 @@ import { NavigationContext } from "../../config/NavigationContext"
interface ListingCardTableProps extends StandardTableProps, StackedTableProps {}
-export interface CardHeader {
+export interface ListingCardHeader {
content: string | React.ReactNode
href?: string
customClass?: string
styleType?: AppearanceStyleType
+ isPillType?: boolean
}
-export interface FooterButton {
+export interface ListingFooterButton {
href: string
text: string
ariaHidden?: boolean
}
export interface ListingCardContentProps {
- contentHeader?: CardHeader
- contentSubheader?: CardHeader
- tableHeader?: CardHeader
- tableSubheader?: CardHeader
+ contentHeader?: ListingCardHeader
+ contentSubheader?: ListingCardHeader
+ tableHeader?: ListingCardHeader
+ tableSubheader?: ListingCardHeader
}
export interface ListingCardProps {
/** A list of tags to be rendered below the content header, a Tag component is rendered for each */
@@ -39,7 +40,7 @@ export interface ListingCardProps {
/** An object containing fields that render optional headers above the content section's table */
contentProps?: ListingCardContentProps
/** A list of buttons to render in the footer of the content section */
- footerButtons?: FooterButton[]
+ footerButtons?: ListingFooterButton[]
/** A class name applied to the footer container of the content section */
footerContainerClass?: string
/** Custom content rendered below the content table */
@@ -73,14 +74,13 @@ const ListingCard = (props: ListingCardProps) => {
const { LinkComponent } = useContext(NavigationContext)
const getHeader = (
- header: CardHeader | undefined,
+ header: ListingCardHeader | undefined,
priority: number,
styleType?: HeaderType,
- pillStyle?: boolean,
customClass?: string
) => {
if (header && header.content) {
- if (pillStyle) {
+ if (header.isPillType) {
return (
{
)
}
return (
-
+
{header.href ? (
{header.content}
@@ -112,8 +112,8 @@ const ListingCard = (props: ListingCardProps) => {
const getContentHeader = () => {
return (
- {getHeader(contentProps?.contentHeader, 2, "cardHeader", false, "order-1")}
- {getHeader(contentProps?.contentSubheader, 3, "cardSubheader", false, "order-2")}
+ {getHeader(contentProps?.contentHeader, 2, "largePrimary", "order-1")}
+ {getHeader(contentProps?.contentSubheader, 3, "mediumNormal", "order-2")}
{cardTags && cardTags?.length > 0 && (
{cardTags?.map((cardTag, index) => {
@@ -145,8 +145,8 @@ const ListingCard = (props: ListingCardProps) => {
)}
- {getHeader(contentProps?.tableHeader, 4, "tableHeader", true)}
- {getHeader(contentProps?.tableSubheader, 5, "tableSubheader")}
+ {getHeader(contentProps?.tableHeader, 4, "smallWeighted")}
+ {getHeader(contentProps?.tableSubheader, 5, "smallNormal")}
{children && children}
{tableProps && (tableProps.data || tableProps.stackedData) && (
diff --git a/ui-components/src/page_components/listing/ListingMap.tsx b/ui-components/src/page_components/listing/ListingMap.tsx
index d1bd80f317..5c0d2b4996 100644
--- a/ui-components/src/page_components/listing/ListingMap.tsx
+++ b/ui-components/src/page_components/listing/ListingMap.tsx
@@ -5,7 +5,7 @@ import MapGL, { Marker } from "react-map-gl"
import "./ListingMap.scss"
import { MultiLineAddress, Address } from "../../helpers/MultiLineAddress"
import { useIntersect } from "../../.."
-import { Heading } from "../../headers/Heading"
+import { Heading } from "../../text/Heading"
export interface ListingMapProps {
address?: Address
@@ -109,7 +109,7 @@ const ListingMap = (props: ListingMapProps) => {
{props.listingName && (
-
+
{props.listingName}
)}
diff --git a/ui-components/src/page_components/listing/listing_sidebar/Contact.tsx b/ui-components/src/page_components/listing/listing_sidebar/Contact.tsx
index ecd63297a9..6a8f6e0973 100644
--- a/ui-components/src/page_components/listing/listing_sidebar/Contact.tsx
+++ b/ui-components/src/page_components/listing/listing_sidebar/Contact.tsx
@@ -2,7 +2,7 @@ import * as React from "react"
import { ContactAddress } from "./ContactAddress"
import { Icon, IconFillColors } from "../../../icons/Icon"
import { Address } from "../../../helpers/MultiLineAddress"
-import { Heading } from "../../../headers/Heading"
+import { Heading } from "../../../text/Heading"
export interface ContactProps {
/** Any number of text sections rendered after the contact information */
@@ -49,7 +49,7 @@ const Contact = ({
return (
-
+
{sectionTitle}
@@ -96,7 +96,7 @@ const Contact = ({
{additionalInformation?.map((info) => {
return (
-
+
{info.title}
{info.content}
diff --git a/ui-components/src/page_components/listing/listing_sidebar/ExpandableSection.tsx b/ui-components/src/page_components/listing/listing_sidebar/ExpandableSection.tsx
index a31300df8e..c13388bf01 100644
--- a/ui-components/src/page_components/listing/listing_sidebar/ExpandableSection.tsx
+++ b/ui-components/src/page_components/listing/listing_sidebar/ExpandableSection.tsx
@@ -1,6 +1,7 @@
import * as React from "react"
import Markdown from "markdown-to-jsx"
import { ExpandableContent } from "../../../actions/ExpandableContent"
+import { Heading } from "../../../text/Heading"
export interface ExpandableSectionProps {
content: string | React.ReactNode
@@ -28,7 +29,9 @@ const ExpandableSection = ({ content, expandableContent, strings }: ExpandableSe
}
return (
- {strings.title}
+
+ {strings.title}
+
{getTextContent(content)}
{expandableContent && (
diff --git a/ui-components/src/page_components/listing/listing_sidebar/GetApplication.tsx b/ui-components/src/page_components/listing/listing_sidebar/GetApplication.tsx
index bdef9e01b6..e421b0293e 100644
--- a/ui-components/src/page_components/listing/listing_sidebar/GetApplication.tsx
+++ b/ui-components/src/page_components/listing/listing_sidebar/GetApplication.tsx
@@ -4,7 +4,7 @@ import { Button } from "../../../actions/Button"
import { LinkButton } from "../../../actions/LinkButton"
import { AppearanceStyleType } from "../../../global/AppearanceTypes"
import { Address } from "../../../helpers/MultiLineAddress"
-import { Heading } from "../../../headers/Heading"
+import { Heading } from "../../../text/Heading"
import { t } from "../../../helpers/translator"
import { OrDivider } from "./OrDivider"
import { ContactAddress } from "./ContactAddress"
@@ -56,9 +56,10 @@ const GetApplication = (props: ApplicationsProps) => {
return (
-
+
{props.strings?.howToApply ?? t("listings.apply.howToApply")}
-
+
+
{!props.applicationsOpen && (
{props.strings?.applicationsOpenInFuture ??
@@ -121,7 +122,7 @@ const GetApplication = (props: ApplicationsProps) => {
{props.applicationsOpen && (props.onlineApplicationURL || props.paperMethod) && (
)}
-
+
{props.strings?.pickUpApplication ?? t("listings.apply.pickUpAnApplication")}
{
/>
{props.applicationPickUpAddressOfficeHours && (
<>
-
+
{props.strings?.officeHoursHeading ?? t("leasingAgent.officeHours")}
diff --git a/ui-components/src/page_components/listing/listing_sidebar/QuantityRowSection.tsx b/ui-components/src/page_components/listing/listing_sidebar/QuantityRowSection.tsx
index 10da363003..b10b6783be 100644
--- a/ui-components/src/page_components/listing/listing_sidebar/QuantityRowSection.tsx
+++ b/ui-components/src/page_components/listing/listing_sidebar/QuantityRowSection.tsx
@@ -1,4 +1,5 @@
import * as React from "react"
+import { Heading } from "../../../text/Heading"
export interface QuantityRow {
amount: number | null
@@ -33,7 +34,9 @@ const QuantityRowSection = ({ quantityRows, strings }: QuantityRowSectionProps)
return (
- {strings.sectionTitle}
+
+ {strings.sectionTitle}
+
{strings.description && (
{strings.description}
diff --git a/ui-components/src/page_components/listing/listing_sidebar/ReferralApplication.tsx b/ui-components/src/page_components/listing/listing_sidebar/ReferralApplication.tsx
index 856342f6e7..eb0a1374eb 100644
--- a/ui-components/src/page_components/listing/listing_sidebar/ReferralApplication.tsx
+++ b/ui-components/src/page_components/listing/listing_sidebar/ReferralApplication.tsx
@@ -1,4 +1,5 @@
import * as React from "react"
+import { Heading } from "../../../text/Heading"
import { t } from "../../../helpers/translator"
import { Icon, IconFillColors } from "../../../icons/Icon"
@@ -16,7 +17,9 @@ const ReferralApplication = (props: ReferralApplicationProps) => {
return (
- {props.strings.title}
+
+ {props.strings.title}
+
{" "}
diff --git a/ui-components/src/page_components/listing/listing_sidebar/SidebarBlock.stories.tsx b/ui-components/src/page_components/listing/listing_sidebar/SidebarBlock.stories.tsx
index b3d738d22b..9d059c0073 100644
--- a/ui-components/src/page_components/listing/listing_sidebar/SidebarBlock.stories.tsx
+++ b/ui-components/src/page_components/listing/listing_sidebar/SidebarBlock.stories.tsx
@@ -22,7 +22,7 @@ export const Default = () => {
export const Styled = () => {
return (
-
+
Content
)
diff --git a/ui-components/src/page_components/listing/listing_sidebar/SidebarBlock.tsx b/ui-components/src/page_components/listing/listing_sidebar/SidebarBlock.tsx
index 64409f7d95..94705c62bd 100644
--- a/ui-components/src/page_components/listing/listing_sidebar/SidebarBlock.tsx
+++ b/ui-components/src/page_components/listing/listing_sidebar/SidebarBlock.tsx
@@ -1,5 +1,5 @@
import * as React from "react"
-import { Heading, HeadingProps } from "../../../headers/Heading"
+import { Heading, HeadingProps } from "../../../text/Heading"
export interface SidebarBlockProps extends Omit {
children: React.ReactNode
@@ -7,11 +7,11 @@ export interface SidebarBlockProps extends Omit {
+const SidebarBlock = ({ children, className, title, priority, styleType }: SidebarBlockProps) => {
return (
{title && (
-
+
{title}
)}
diff --git a/ui-components/src/page_components/listing/listing_sidebar/SubmitApplication.tsx b/ui-components/src/page_components/listing/listing_sidebar/SubmitApplication.tsx
index fe6a419d8f..bc983bd9b8 100644
--- a/ui-components/src/page_components/listing/listing_sidebar/SubmitApplication.tsx
+++ b/ui-components/src/page_components/listing/listing_sidebar/SubmitApplication.tsx
@@ -3,7 +3,7 @@ import Markdown from "markdown-to-jsx"
import { Address } from "../../../helpers/MultiLineAddress"
import { ContactAddress } from "./ContactAddress"
import { OrDivider } from "./OrDivider"
-import { Heading } from "../../../headers/Heading"
+import { Heading } from "../../../text/Heading"
export interface ApplicationAddressesProps {
/** The dropoff address for paper applications */
@@ -38,7 +38,7 @@ const SubmitApplication = ({
{strings.sectionHeader}
{applicationMailingAddress && (
<>
-
+
{strings.mailHeader}
<>
@@ -51,13 +51,13 @@ const SubmitApplication = ({
{applicationDropOffAddress && (
<>
{applicationMailingAddress && }
-
+
{strings.dropOffHeader}
{applicationDropOffAddressOfficeHours && (
<>
-
+
{strings.officeHoursHeader}
diff --git a/ui-components/src/page_components/listing/listing_sidebar/events/EventSection.tsx b/ui-components/src/page_components/listing/listing_sidebar/events/EventSection.tsx
index d413c12831..b5f0fda32c 100644
--- a/ui-components/src/page_components/listing/listing_sidebar/events/EventSection.tsx
+++ b/ui-components/src/page_components/listing/listing_sidebar/events/EventSection.tsx
@@ -1,5 +1,5 @@
import * as React from "react"
-import { Heading } from "../../../../headers/Heading"
+import { Heading } from "../../../../text/Heading"
export type EventType = {
timeString?: string
@@ -28,7 +28,10 @@ const EventSection = (props: EventSectionProps) => {
return (
{props.headerText && (
-
+
{props.headerText}
)}
diff --git a/ui-components/src/sections/InfoCardGrid.tsx b/ui-components/src/sections/InfoCardGrid.tsx
index 2d0c6f4283..fecea68857 100644
--- a/ui-components/src/sections/InfoCardGrid.tsx
+++ b/ui-components/src/sections/InfoCardGrid.tsx
@@ -1,5 +1,5 @@
import * as React from "react"
-import { Heading } from "../headers/Heading"
+import { Heading } from "../text/Heading"
import "./InfoCardGrid.scss"
export interface InfoCardGridProps {
@@ -11,7 +11,7 @@ export interface InfoCardGridProps {
const InfoCardGrid = (props: InfoCardGridProps) => (
-
+
{props.title}
{props.subtitle && {props.subtitle}
}
diff --git a/ui-components/src/tables/CategoryTable.tsx b/ui-components/src/tables/CategoryTable.tsx
index cb6db1f721..44a11b6b8c 100644
--- a/ui-components/src/tables/CategoryTable.tsx
+++ b/ui-components/src/tables/CategoryTable.tsx
@@ -1,6 +1,6 @@
import * as React from "react"
import { StackedTable, StackedTableProps } from "./StackedTable"
-import { Heading } from "../headers/Heading"
+import { Heading } from "../text/Heading"
export interface CategoryTableSection {
/** The header text for a category */
@@ -18,7 +18,7 @@ const CategoryTable = (props: CategoryTableProps) => {
const tables = props.categoryData.map((category, index) => {
return (
-
+
{category.header}
diff --git a/ui-components/src/text/Heading.docs.mdx b/ui-components/src/text/Heading.docs.mdx
new file mode 100644
index 0000000000..4c00b0d342
--- /dev/null
+++ b/ui-components/src/text/Heading.docs.mdx
@@ -0,0 +1,18 @@
+import { Canvas, Story, ArgsTable } from "@storybook/addon-docs"
+import { Swatch } from "../prototypes/Swatch"
+import { Heading } from "./Heading"
+
+# Heading
+
+The heading component renders an HTML heading with a flexible priority and style. Each style available maps to a [Typography](?path=/story/theming-typography--page) variant.
+
+
+
+
+
+
+## Component Properties
+
+
diff --git a/ui-components/src/text/Heading.stories.tsx b/ui-components/src/text/Heading.stories.tsx
new file mode 100644
index 0000000000..fee5ef08ce
--- /dev/null
+++ b/ui-components/src/text/Heading.stories.tsx
@@ -0,0 +1,31 @@
+import * as React from "react"
+import { BADGES } from "../../.storybook/constants"
+import HeadingDocumentation from "./Heading.docs.mdx"
+import { Heading } from "./Heading"
+
+export default {
+ title: "Text/Heading 🚩",
+ id: "text/heading",
+ decorators: [(storyFn: any) => {storyFn()}
],
+ parameters: {
+ docs: {
+ page: HeadingDocumentation,
+ },
+ badges: [BADGES.GEN2],
+ },
+}
+export const base1 = () => Test Header
+export const base2 = () => Test Header
+export const base3 = () => Test Header
+export const base4 = () => Test Header
+export const base5 = () => Test Header
+export const base6 = () => Test Header
+export const largeHeader = () => Large Header
+export const mediumHeader = () => Medium Header
+export const smallWeighted = () => Small Weighted
+export const smallNormal = () => Small Normal
+export const underlineHeader = () => (
+ Underline Header
+)
+export const lightWeighted = () => Light Weighted
+export const capsWeighted = () => Caps Weighted
diff --git a/ui-components/src/text/Heading.tsx b/ui-components/src/text/Heading.tsx
new file mode 100644
index 0000000000..4fedac5b46
--- /dev/null
+++ b/ui-components/src/text/Heading.tsx
@@ -0,0 +1,32 @@
+import * as React from "react"
+
+export interface HeadingProps {
+ children?: React.ReactNode
+ className?: string
+ priority?: number
+ styleType?: HeaderType
+}
+
+export type HeaderType = keyof typeof HeaderStyleMap
+
+const HeaderStyleMap = {
+ largePrimary: "text__large-primary",
+ mediumNormal: "text__medium-normal",
+ smallWeighted: "text__small-weighted",
+ smallNormal: "text__small-normal",
+ underlineWeighted: "text__underline-weighted",
+ lightWeighted: "text__light-weighted",
+ capsWeighted: "text__caps-weighted",
+}
+
+const Heading = (props: HeadingProps) => {
+ const priority = props.priority && props.priority >= 1 && props.priority <= 6 ? props.priority : 1
+ const Tag = `h${priority}` as keyof JSX.IntrinsicElements
+ const classNames = []
+ if (props.styleType) classNames.push(HeaderStyleMap[props.styleType])
+ if (props.className) classNames.push(props.className)
+
+ return {props.children}
+}
+
+export { Heading as default, Heading }
diff --git a/ui-components/src/text/Message.stories.tsx b/ui-components/src/text/Message.stories.tsx
index 4692baab2a..d4cb123ecd 100644
--- a/ui-components/src/text/Message.stories.tsx
+++ b/ui-components/src/text/Message.stories.tsx
@@ -2,7 +2,7 @@ import * as React from "react"
import { Message } from "./Message"
export default {
- title: "Prototypes/Message",
+ title: "Text/Message",
decorators: [(storyFn: any) => {storyFn()}
],
}
diff --git a/ui-components/src/text/Tag.scss b/ui-components/src/text/Tag.scss
index 795c00d0dc..4a50fd6a0f 100644
--- a/ui-components/src/text/Tag.scss
+++ b/ui-components/src/text/Tag.scss
@@ -122,7 +122,7 @@
}
&.is-info {
- color: var(--info-appearance-label-color, var(--bloom-color-gray-800));
+ color: var(--info-appearance-label-color, var(--bloom-text-color-dark));
background-color: var(--info-appearance-background-color, var(--bloom-color-warn-light));
}
diff --git a/ui-components/src/text/Tag.stories.tsx b/ui-components/src/text/Tag.stories.tsx
index 4fb4625261..4b7760be84 100644
--- a/ui-components/src/text/Tag.stories.tsx
+++ b/ui-components/src/text/Tag.stories.tsx
@@ -1,10 +1,10 @@
+import * as React from "react"
import {
AppearanceSizeType,
AppearanceStyleType,
AppearanceShadeType,
} from "../global/AppearanceTypes"
import { BADGES } from "../../.storybook/constants"
-import * as React from "react"
import { Tag } from "./Tag"
import TagDocumentation from "./Tag.docs.mdx"
diff --git a/ui-components/tailwind.config.js b/ui-components/tailwind.config.js
index 2bf85d5959..b214cf548c 100644
--- a/ui-components/tailwind.config.js
+++ b/ui-components/tailwind.config.js
@@ -89,6 +89,7 @@ module.exports = {
800: "var(--bloom-color-gray-800)",
750: "var(--bloom-color-gray-750)",
700: "var(--bloom-color-gray-700)",
+ 650: "var(--bloom-color-gray-650)",
600: "var(--bloom-color-gray-600)",
550: "var(--bloom-color-gray-550)",
500: "var(--bloom-color-gray-500)",
diff --git a/yarn.lock b/yarn.lock
index 8dcf083efd..c95f771206 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -7337,6 +7337,11 @@
resolved "https://registry.yarnpkg.com/@types/pretty-hrtime/-/pretty-hrtime-1.0.0.tgz#c5a2d644a135e988b2932f99737e67b3c62528d0"
integrity sha512-xl+5r2rcrxdLViAYkkiLMYsoUs3qEyrAnHFyEzYysgRxdVp3WbhysxIvJIxZp9FvZ2CYezh0TaHZorivH+voOQ==
+"@types/pretty@2.0.1":
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/@types/pretty/-/pretty-2.0.1.tgz#192426eb6f640239e3e0224f60ebec39d4e125e4"
+ integrity sha512-l18spTC0Q2OEUIHGPyw37XBOacFI4Kng1fgfFjgDTg2FR9wqJ/NY9zWyXv87NRUlFDU6JA+E/GVnNJiWgyon6A==
+
"@types/prop-types@*":
version "15.7.3"
resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7"
@@ -8013,7 +8018,7 @@ abab@^2.0.3, abab@^2.0.5:
resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291"
integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==
-abbrev@1:
+abbrev@1, abbrev@^1.0.0:
version "1.1.1"
resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==
@@ -9218,6 +9223,13 @@ brace-expansion@^1.1.7:
balanced-match "^1.0.0"
concat-map "0.0.1"
+brace-expansion@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae"
+ integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==
+ dependencies:
+ balanced-match "^1.0.0"
+
braces@^2.3.1, braces@^2.3.2:
version "2.3.2"
resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729"
@@ -10546,6 +10558,15 @@ concurrently@^5.3.0:
tree-kill "^1.2.2"
yargs "^13.3.0"
+condense-newlines@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/condense-newlines/-/condense-newlines-0.2.1.tgz#3de985553139475d32502c83b02f60684d24c55f"
+ integrity sha512-P7X+QL9Hb9B/c8HI5BFFKmjgBu2XpQuF98WZ9XkO+dBGgk5XgwiQz7o1SmpglNWId3581UcS0SFAWfoIhMHPfg==
+ dependencies:
+ extend-shallow "^2.0.1"
+ is-whitespace "^0.3.0"
+ kind-of "^3.0.2"
+
config-chain@^1.1.11:
version "1.1.12"
resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.12.tgz#0fde8d091200eb5e808caf25fe618c02f48e4efa"
@@ -10554,7 +10575,7 @@ config-chain@^1.1.11:
ini "^1.3.4"
proto-list "~1.2.1"
-config-chain@^1.1.12:
+config-chain@^1.1.12, config-chain@^1.1.13:
version "1.1.13"
resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4"
integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==
@@ -11903,6 +11924,16 @@ ecdsa-sig-formatter@1.0.11, ecdsa-sig-formatter@^1.0.11:
dependencies:
safe-buffer "^5.0.1"
+editorconfig@^0.15.3:
+ version "0.15.3"
+ resolved "https://registry.yarnpkg.com/editorconfig/-/editorconfig-0.15.3.tgz#bef84c4e75fb8dcb0ce5cee8efd51c15999befc5"
+ integrity sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==
+ dependencies:
+ commander "^2.19.0"
+ lru-cache "^4.1.5"
+ semver "^5.6.0"
+ sigmund "^1.0.1"
+
ee-first@1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
@@ -13898,6 +13929,17 @@ glob@^7.0.0, glob@^7.1.0, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, gl
once "^1.3.0"
path-is-absolute "^1.0.0"
+glob@^8.0.3:
+ version "8.0.3"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-8.0.3.tgz#415c6eb2deed9e502c68fa44a272e6da6eeca42e"
+ integrity sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==
+ dependencies:
+ fs.realpath "^1.0.0"
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "^5.0.1"
+ once "^1.3.0"
+
global-agent@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/global-agent/-/global-agent-3.0.0.tgz#ae7cd31bd3583b93c5a16437a1afe27cc33a1ab6"
@@ -15678,6 +15720,11 @@ is-whitespace-character@^1.0.0:
resolved "https://registry.yarnpkg.com/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz#0858edd94a95594c7c9dd0b5c174ec6e45ee4aa7"
integrity sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==
+is-whitespace@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/is-whitespace/-/is-whitespace-0.3.0.tgz#1639ecb1be036aec69a54cbb401cfbed7114ab7f"
+ integrity sha512-RydPhl4S6JwAyj0JJjshWJEFG6hNye3pZFBRZaTUfZFwGHxzppNaNOVgQuS/E/SlhrApuMXrpnK1EEIXfdo3Dg==
+
is-window@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/is-window/-/is-window-1.0.2.tgz#2c896ca53db97de45d3c33133a65d8c9f563480d"
@@ -16399,6 +16446,16 @@ joi@^17.3.0:
"@sideway/formula" "^3.0.0"
"@sideway/pinpoint" "^2.0.0"
+js-beautify@^1.6.12:
+ version "1.14.6"
+ resolved "https://registry.yarnpkg.com/js-beautify/-/js-beautify-1.14.6.tgz#b23ca5d74a462c282c7711bb51150bcc97f2b507"
+ integrity sha512-GfofQY5zDp+cuHc+gsEXKPpNw2KbPddreEo35O6jT6i0RVK6LhsoYBhq5TvK4/n74wnA0QbK8gGd+jUZwTMKJw==
+ dependencies:
+ config-chain "^1.1.13"
+ editorconfig "^0.15.3"
+ glob "^8.0.3"
+ nopt "^6.0.0"
+
js-levenshtein@^1.1.6:
version "1.1.6"
resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.6.tgz#c6cee58eb3550372df8deb85fad5ce66ce01d59d"
@@ -17274,6 +17331,14 @@ lru-cache@6.0.0, lru-cache@^6.0.0:
dependencies:
yallist "^4.0.0"
+lru-cache@^4.1.5:
+ version "4.1.5"
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd"
+ integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==
+ dependencies:
+ pseudomap "^1.0.2"
+ yallist "^2.1.2"
+
lru-cache@^5.1.1:
version "5.1.1"
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920"
@@ -17768,6 +17833,13 @@ minimatch@3.0.4, minimatch@^3.0.2, minimatch@^3.0.4:
dependencies:
brace-expansion "^1.1.7"
+minimatch@^5.0.1:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.0.tgz#1717b464f4971b144f6aabe8f2d0b8e4511e09c7"
+ integrity sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==
+ dependencies:
+ brace-expansion "^2.0.1"
+
minimist-options@4.1.0, minimist-options@^4.0.2:
version "4.1.0"
resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619"
@@ -18472,6 +18544,13 @@ nopt@^5.0.0:
dependencies:
abbrev "1"
+nopt@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/nopt/-/nopt-6.0.0.tgz#245801d8ebf409c6df22ab9d95b65e1309cdb16d"
+ integrity sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==
+ dependencies:
+ abbrev "^1.0.0"
+
normalize-package-data@^2.0.0, normalize-package-data@^2.3.2, normalize-package-data@^2.5.0:
version "2.5.0"
resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8"
@@ -20017,6 +20096,15 @@ pretty-hrtime@^1.0.3:
resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1"
integrity sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=
+pretty@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/pretty/-/pretty-2.0.0.tgz#adbc7960b7bbfe289a557dc5f737619a220d06a5"
+ integrity sha512-G9xUchgTEiNpormdYBl+Pha50gOUovT18IvAe7EYMZ1/f9W/WWMPRn+xI68yXNMUk3QXHDwo/1wV/4NejVNe1w==
+ dependencies:
+ condense-newlines "^0.2.1"
+ extend-shallow "^2.0.1"
+ js-beautify "^1.6.12"
+
prismjs@^1.21.0, prismjs@~1.22.0:
version "1.22.0"
resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.22.0.tgz#73c3400afc58a823dd7eed023f8e1ce9fd8977fa"
@@ -20210,6 +20298,11 @@ prr@~1.0.1:
resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476"
integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY=
+pseudomap@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
+ integrity sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==
+
psl@^1.1.28, psl@^1.1.33:
version "1.8.0"
resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24"
@@ -20556,6 +20649,11 @@ react-docgen@^5.0.0:
node-dir "^0.1.10"
strip-indent "^3.0.0"
+react-dom-server@0.0.5:
+ version "0.0.5"
+ resolved "https://registry.yarnpkg.com/react-dom-server/-/react-dom-server-0.0.5.tgz#75b6c0f5946e08e84db9dda6eca5e48fed25f723"
+ integrity sha512-MI/kjsunWm+7K0buGxYCr685xLseLbfLXtX5I76rhcWNy6T+iEuRELTj59L+4JefR57gZLnxBPVfU2Sqy7XxHw==
+
react-dom@^17.0.2:
version "17.0.2"
resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.2.tgz#ecffb6845e3ad8dbfcdc498f0d0a939736502c23"
@@ -22005,6 +22103,11 @@ side-channel@^1.0.4:
get-intrinsic "^1.0.2"
object-inspect "^1.9.0"
+sigmund@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590"
+ integrity sha512-fCvEXfh6NWpm+YSuY2bpXb/VIihqWA6hLsgboC+0nl71Q7N7o2eaCW8mJa/NLvQhs6jpd3VZV4UiUQlV6+lc8g==
+
signal-exit@^3.0.0, signal-exit@^3.0.2:
version "3.0.3"
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c"
@@ -24944,6 +25047,11 @@ y18n@^5.0.5:
resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55"
integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==
+yallist@^2.1.2:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
+ integrity sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==
+
yallist@^3.0.0, yallist@^3.0.2, yallist@^3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd"