@bloom-housing/ui-components 10.0.14 → 10.0.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (26) hide show
  1. package/dist/src/page_components/listing/ListingDetailHeader.d.ts +1 -0
  2. package/dist/src/page_components/listing/ListingDetailHeader.js +4 -2
  3. package/dist/src/page_components/listing/ListingDetailHeader.js.map +1 -1
  4. package/dist/src/page_components/listing/ListingDetailHeader.stories.d.ts +9 -0
  5. package/dist/src/page_components/listing/ListingDetailHeader.stories.js +14 -0
  6. package/dist/src/page_components/listing/ListingDetailHeader.stories.js.map +1 -0
  7. package/dist/src/page_components/listing/ListingDetails.d.ts +1 -0
  8. package/dist/src/page_components/listing/ListingDetails.js +2 -1
  9. package/dist/src/page_components/listing/ListingDetails.js.map +1 -1
  10. package/dist/src/text/Description.d.ts +2 -1
  11. package/dist/src/text/Description.js.map +1 -1
  12. package/dist/src/text/Description.stories.d.ts +11 -0
  13. package/dist/src/text/Description.stories.js +21 -0
  14. package/dist/src/text/Description.stories.js.map +1 -0
  15. package/package.json +1 -1
  16. package/src/global/app-css.scss +0 -1
  17. package/src/page_components/listing/ContentAccordion.scss +6 -0
  18. package/src/page_components/listing/ListingDetailHeader.scss +97 -0
  19. package/src/page_components/listing/ListingDetailHeader.stories.tsx +24 -0
  20. package/src/page_components/listing/ListingDetailHeader.tsx +5 -2
  21. package/src/page_components/listing/ListingDetails.scss +11 -0
  22. package/src/page_components/listing/ListingDetails.tsx +2 -1
  23. package/src/text/Description.scss +34 -41
  24. package/src/text/Description.stories.tsx +47 -0
  25. package/src/text/Description.tsx +2 -2
  26. package/src/global/headers.scss +0 -93
@@ -1,4 +1,5 @@
1
1
  import * as React from "react";
2
+ import "./ListingDetailHeader.scss";
2
3
  export interface ListingDetailHeaderProps {
3
4
  imageAlt: string;
4
5
  imageSrc: string;
@@ -1,7 +1,9 @@
1
1
  import * as React from "react";
2
2
  import { Icon } from "../../icons/Icon";
3
- var ListingDetailHeader = function (props) { return (React.createElement("header", { className: props.hideHeader ? "detail-header md:hidden" : "detail-header" },
4
- React.createElement("img", { alt: props.imageAlt, className: "detail-header__image ", src: props.imageSrc }),
3
+ import "./ListingDetailHeader.scss";
4
+ var ListingDetailHeader = function (props) { return (React.createElement("header", { className: "detail-header ".concat(props.hideHeader ? "md:hidden" : "") },
5
+ React.createElement("span", { className: "detail-header__image-container" },
6
+ React.createElement("img", { alt: props.imageAlt, className: "detail-header__image ", src: props.imageSrc })),
5
7
  React.createElement("hgroup", { className: "detail-header__hgroup" },
6
8
  React.createElement("h2", { className: "detail-header__title" }, props.title),
7
9
  React.createElement("span", { className: "detail-header__subtitle" }, props.subtitle),
@@ -1 +1 @@
1
- {"version":3,"file":"ListingDetailHeader.js","sourceRoot":"","sources":["../../../../src/page_components/listing/ListingDetailHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAYvC,IAAM,mBAAmB,GAAG,UAAC,KAA+B,IAAK,OAAA,CAC/D,gCAAQ,SAAS,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,eAAe;IAC/E,6BAAK,GAAG,EAAE,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAC,uBAAuB,EAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,GAAI;IACnF,gCAAQ,SAAS,EAAC,uBAAuB;QACvC,4BAAI,SAAS,EAAC,sBAAsB,IAAE,KAAK,CAAC,KAAK,CAAM;QACvD,8BAAM,SAAS,EAAC,yBAAyB,IAAE,KAAK,CAAC,QAAQ,CAAQ;QACjE,oBAAC,IAAI,IAAC,MAAM,EAAC,WAAW,EAAC,IAAI,EAAC,QAAQ,GAAG,CAClC,CACF,CACV,EATgE,CAShE,CAAA;AAED,OAAO,EAAE,mBAAmB,IAAI,OAAO,EAAE,mBAAmB,EAAE,CAAA"}
1
+ {"version":3,"file":"ListingDetailHeader.js","sourceRoot":"","sources":["../../../../src/page_components/listing/ListingDetailHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AACvC,OAAO,4BAA4B,CAAA;AAYnC,IAAM,mBAAmB,GAAG,UAAC,KAA+B,IAAK,OAAA,CAC/D,gCAAQ,SAAS,EAAE,wBAAiB,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAE;IACvE,8BAAM,SAAS,EAAE,gCAAgC;QAC/C,6BAAK,GAAG,EAAE,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAC,uBAAuB,EAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,GAAI,CAC9E;IACP,gCAAQ,SAAS,EAAC,uBAAuB;QACvC,4BAAI,SAAS,EAAC,sBAAsB,IAAE,KAAK,CAAC,KAAK,CAAM;QACvD,8BAAM,SAAS,EAAC,yBAAyB,IAAE,KAAK,CAAC,QAAQ,CAAQ;QACjE,oBAAC,IAAI,IAAC,MAAM,EAAC,WAAW,EAAC,IAAI,EAAC,QAAQ,GAAG,CAClC,CACF,CACV,EAXgE,CAWhE,CAAA;AAED,OAAO,EAAE,mBAAmB,IAAI,OAAO,EAAE,mBAAmB,EAAE,CAAA"}
@@ -0,0 +1,9 @@
1
+ import { BADGES } from "../../../.storybook/constants";
2
+ declare const _default: {
3
+ title: string;
4
+ parameters: {
5
+ badges: BADGES[];
6
+ };
7
+ };
8
+ export default _default;
9
+ export declare const Default: () => JSX.Element;
@@ -0,0 +1,14 @@
1
+ import * as React from "react";
2
+ import { BADGES } from "../../../.storybook/constants";
3
+ import { ListingDetailHeader } from "./ListingDetailHeader";
4
+ export default {
5
+ title: "Listing/ListingDetailHeader 🚩",
6
+ parameters: {
7
+ badges: [BADGES.GEN2],
8
+ },
9
+ };
10
+ export var Default = function () {
11
+ return (React.createElement("div", { style: { maxWidth: "500px" } },
12
+ React.createElement(ListingDetailHeader, { imageAlt: "Building", imageSrc: "https://res.cloudinary.com/exygy/image/upload/w_400,c_limit,q_65/dev/listing-eligibility_advdnd.jpg", title: "Title", subtitle: "Subtitle" })));
13
+ };
14
+ //# sourceMappingURL=ListingDetailHeader.stories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ListingDetailHeader.stories.js","sourceRoot":"","sources":["../../../../src/page_components/listing/ListingDetailHeader.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA;AAEtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAE3D,eAAe;IACb,KAAK,EAAE,gCAAgC;IACvC,UAAU,EAAE;QACV,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;KACtB;CACF,CAAA;AAED,MAAM,CAAC,IAAM,OAAO,GAAG;IACrB,OAAO,CACL,6BAAK,KAAK,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE;QAC/B,oBAAC,mBAAmB,IAClB,QAAQ,EAAE,UAAU,EACpB,QAAQ,EAAC,qGAAqG,EAC9G,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,UAAU,GACpB,CACE,CACP,CAAA;AACH,CAAC,CAAA"}
@@ -1,3 +1,4 @@
1
1
  import { ListingDetailHeaderProps } from "./ListingDetailHeader";
2
+ import "./ListingDetails.scss";
2
3
  export declare const ListingDetails: (props: any) => JSX.Element;
3
4
  export declare const ListingDetailItem: (props: ListingDetailHeaderProps) => JSX.Element;
@@ -1,7 +1,8 @@
1
1
  import * as React from "react";
2
2
  import { ResponsiveContentList, ResponsiveContentItem, ResponsiveContentItemHeader, ResponsiveContentItemBody, } from "../../sections/ResponsiveContentList";
3
3
  import { ListingDetailHeader } from "./ListingDetailHeader";
4
- export var ListingDetails = function (props) { return (React.createElement("div", { className: "w-full md:w-2/3 md:pr-8 md:pt-8" },
4
+ import "./ListingDetails.scss";
5
+ export var ListingDetails = function (props) { return (React.createElement("div", { className: "details" },
5
6
  React.createElement(ResponsiveContentList, null, props.children))); };
6
7
  export var ListingDetailItem = function (props) { return (React.createElement(ResponsiveContentItem, { desktopClass: props.desktopClass },
7
8
  React.createElement(ResponsiveContentItemHeader, null,
@@ -1 +1 @@
1
- {"version":3,"file":"ListingDetails.js","sourceRoot":"","sources":["../../../../src/page_components/listing/ListingDetails.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,2BAA2B,EAC3B,yBAAyB,GAC1B,MAAM,sCAAsC,CAAA;AAC7C,OAAO,EAAE,mBAAmB,EAA4B,MAAM,uBAAuB,CAAA;AAErF,MAAM,CAAC,IAAM,cAAc,GAAG,UAAC,KAAU,IAAK,OAAA,CAC5C,6BAAK,SAAS,EAAC,iCAAiC;IAC9C,oBAAC,qBAAqB,QAAE,KAAK,CAAC,QAAQ,CAAyB,CAC3D,CACP,EAJ6C,CAI7C,CAAA;AAED,MAAM,CAAC,IAAM,iBAAiB,GAAG,UAAC,KAA+B,IAAK,OAAA,CACpE,oBAAC,qBAAqB,IAAC,YAAY,EAAE,KAAK,CAAC,YAAY;IACrD,oBAAC,2BAA2B;QAC1B,oBAAC,mBAAmB,IAClB,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,UAAU,EAAE,KAAK,CAAC,UAAU,GAC5B,CAC0B;IAC9B,oBAAC,yBAAyB,QAAE,KAAK,CAAC,QAAQ,CAA6B,CACjD,CACzB,EAbqE,CAarE,CAAA"}
1
+ {"version":3,"file":"ListingDetails.js","sourceRoot":"","sources":["../../../../src/page_components/listing/ListingDetails.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,2BAA2B,EAC3B,yBAAyB,GAC1B,MAAM,sCAAsC,CAAA;AAC7C,OAAO,EAAE,mBAAmB,EAA4B,MAAM,uBAAuB,CAAA;AACrF,OAAO,uBAAuB,CAAA;AAE9B,MAAM,CAAC,IAAM,cAAc,GAAG,UAAC,KAAU,IAAK,OAAA,CAC5C,6BAAK,SAAS,EAAC,SAAS;IACtB,oBAAC,qBAAqB,QAAE,KAAK,CAAC,QAAQ,CAAyB,CAC3D,CACP,EAJ6C,CAI7C,CAAA;AAED,MAAM,CAAC,IAAM,iBAAiB,GAAG,UAAC,KAA+B,IAAK,OAAA,CACpE,oBAAC,qBAAqB,IAAC,YAAY,EAAE,KAAK,CAAC,YAAY;IACrD,oBAAC,2BAA2B;QAC1B,oBAAC,mBAAmB,IAClB,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,UAAU,EAAE,KAAK,CAAC,UAAU,GAC5B,CAC0B;IAC9B,oBAAC,yBAAyB,QAAE,KAAK,CAAC,QAAQ,CAA6B,CACjD,CACzB,EAbqE,CAarE,CAAA"}
@@ -1,8 +1,9 @@
1
+ import * as React from "react";
1
2
  import "./Description.scss";
2
3
  import { MarkdownToJSX } from "markdown-to-jsx";
3
4
  export interface DescriptionProps {
4
5
  term: string;
5
- description: any;
6
+ description: string | React.ReactNode;
6
7
  dtClassName?: string;
7
8
  markdown?: boolean;
8
9
  markdownProps?: MarkdownToJSX.Options;
@@ -1 +1 @@
1
- {"version":3,"file":"Description.js","sourceRoot":"","sources":["../../../src/text/Description.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,oBAAoB,CAAA;AAC3B,OAAO,QAA2B,MAAM,iBAAiB,CAAA;AAUzD,MAAM,CAAC,IAAM,WAAW,GAAG,UAAC,KAAuB;IACjD,IAAM,SAAS,GAAG,CAAC,mBAAmB,CAAC,CAAA;IACvC,IAAI,KAAK,CAAC,WAAW;QAAE,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;IAExD,OAAO,CACL;QACE,4BAAI,SAAS,EAAC,oBAAoB,IAAE,KAAK,CAAC,IAAI,CAAM;QACnD,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAChB,4BAAI,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC;YAChC,oBAAC,QAAQ,IACP,OAAO,aAAI,qBAAqB,EAAE,IAAI,IAAK,KAAK,CAAC,aAAa,GAC9D,QAAQ,EAAE,KAAK,CAAC,WAAW,GAC3B,CACC,CACN,CAAC,CAAC,CAAC,CACF,4BAAI,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,IAAG,KAAK,CAAC,WAAW,CAAM,CAC7D,CACA,CACJ,CAAA;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"Description.js","sourceRoot":"","sources":["../../../src/text/Description.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,oBAAoB,CAAA;AAC3B,OAAO,QAA2B,MAAM,iBAAiB,CAAA;AAUzD,MAAM,CAAC,IAAM,WAAW,GAAG,UAAC,KAAuB;IACjD,IAAM,SAAS,GAAG,CAAC,mBAAmB,CAAC,CAAA;IACvC,IAAI,KAAK,CAAC,WAAW;QAAE,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;IAExD,OAAO,CACL;QACE,4BAAI,SAAS,EAAC,oBAAoB,IAAE,KAAK,CAAC,IAAI,CAAM;QACnD,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAChB,4BAAI,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC;YAChC,oBAAC,QAAQ,IACP,OAAO,aAAI,qBAAqB,EAAE,IAAI,IAAK,KAAK,CAAC,aAAa,GAC9D,QAAQ,EAAE,KAAK,CAAC,WAAqB,GACrC,CACC,CACN,CAAC,CAAC,CAAC,CACF,4BAAI,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,IAAG,KAAK,CAAC,WAAW,CAAM,CAC7D,CACA,CACJ,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,11 @@
1
+ import { BADGES } from "../../.storybook/constants";
2
+ declare const _default: {
3
+ title: string;
4
+ decorators: ((storyFn: any) => JSX.Element)[];
5
+ parameters: {
6
+ badges: BADGES[];
7
+ };
8
+ };
9
+ export default _default;
10
+ export declare const Default: () => JSX.Element;
11
+ export declare const LongStrings: () => JSX.Element;
@@ -0,0 +1,21 @@
1
+ import * as React from "react";
2
+ import { Description } from "./Description";
3
+ import { BADGES } from "../../.storybook/constants";
4
+ export default {
5
+ title: "Text/Description 🚩",
6
+ decorators: [function (storyFn) { return React.createElement("div", { style: { padding: "1rem" } }, storyFn()); }],
7
+ parameters: {
8
+ badges: [BADGES.GEN2],
9
+ },
10
+ };
11
+ export var Default = function () { return (React.createElement("dl", { className: "column-definition-list" },
12
+ React.createElement(Description, { term: "Title", description: "Description" }),
13
+ React.createElement(Description, { term: "Title", description: "Description" }),
14
+ React.createElement(Description, { term: "Title", description: "Description" }),
15
+ React.createElement(Description, { term: "Title", description: "This last description takes up the full width" }))); };
16
+ export var LongStrings = function () { return (React.createElement("dl", { className: "column-definition-list" },
17
+ React.createElement(Description, { term: "Natoque penatibus", description: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Leo a diam sollicitudin tempor id eu. Porttitor lacus luctus accumsan tortor. Viverra mauris in aliquam sem fringilla. At augue eget arcu dictum. Penatibus et magnis dis parturient montes nascetur ridiculus mus mauris. Velit euismod in pellentesque massa placerat duis ultricies lacus sed. Aliquam vestibulum morbi blandit cursus risus. Tellus at urna condimentum mattis pellentesque id nibh. Interdum consectetur libero id faucibus." }),
18
+ React.createElement(Description, { term: "Sed vulputate", description: "Platea dictumst vestibulum rhoncus est pellentesque elit ullamcorper. Tristique senectus et netus et malesuada." }),
19
+ React.createElement(Description, { term: "Quam lacus suspendisse faucibus interdum", description: "Ultrices neque ornare aenean euismod elementum. Tellus elementum sagittis vitae et leo duis. In egestas erat imperdiet sed euismod nisi porta. Nisl purus in mollis nunc sed id semper risus. Ac turpis egestas sed tempus urna et pharetra pharetra. Nibh mauris cursus mattis molestie a iaculis at erat pellentesque. Ultricies mi eget mauris pharetra et ultrices. Enim facilisis gravida neque convallis a cras semper auctor. Risus pretium quam vulputate dignissim suspendisse in est ante. Cursus vitae congue mauris rhoncus aenean vel." }),
20
+ React.createElement(Description, { term: "Auctor", description: "Bibendum arcu vitae elementum curabitur vitae nunc sed velit dignissim." }))); };
21
+ //# sourceMappingURL=Description.stories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Description.stories.js","sourceRoot":"","sources":["../../../src/text/Description.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAEnD,eAAe;IACb,KAAK,EAAE,qBAAqB;IAC5B,UAAU,EAAE,CAAC,UAAC,OAAY,IAAK,OAAA,6BAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,IAAG,OAAO,EAAE,CAAO,EAAlD,CAAkD,CAAC;IAClF,UAAU,EAAE;QACV,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;KACtB;CACF,CAAA;AAED,MAAM,CAAC,IAAM,OAAO,GAAG,cAAM,OAAA,CAC3B,4BAAI,SAAS,EAAC,wBAAwB;IACpC,oBAAC,WAAW,IAAC,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,aAAa,GAAI;IAC1D,oBAAC,WAAW,IAAC,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,aAAa,GAAI;IAC1D,oBAAC,WAAW,IAAC,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,aAAa,GAAI;IAC1D,oBAAC,WAAW,IAAC,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,+CAA+C,GAAI,CACzF,CACN,EAP4B,CAO5B,CAAA;AAED,MAAM,CAAC,IAAM,WAAW,GAAG,cAAM,OAAA,CAC/B,4BAAI,SAAS,EAAC,wBAAwB;IACpC,oBAAC,WAAW,IACV,IAAI,EAAE,mBAAmB,EACzB,WAAW,EACT,+iBAA+iB,GAEjjB;IACF,oBAAC,WAAW,IACV,IAAI,EAAE,eAAe,EACrB,WAAW,EACT,iHAAiH,GAEnH;IACF,oBAAC,WAAW,IACV,IAAI,EAAE,0CAA0C,EAChD,WAAW,EACT,qhBAAqhB,GAEvhB;IACF,oBAAC,WAAW,IACV,IAAI,EAAE,QAAQ,EACd,WAAW,EAAE,yEAAyE,GACtF,CACC,CACN,EAzBgC,CAyBhC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bloom-housing/ui-components",
3
- "version": "10.0.14",
3
+ "version": "10.0.16",
4
4
  "author": "Sean Albert <sean.albert@exygy.com>",
5
5
  "description": "Shared user interface components for Bloom affordable housing system",
6
6
  "homepage": "https://github.com/bloom-housing/ui-components",
@@ -54,7 +54,6 @@ main {
54
54
  @import "mixins.scss";
55
55
  @import "markdown.scss";
56
56
  @import "text.scss";
57
- @import "headers.scss";
58
57
  @import "blocks.scss";
59
58
  @import "accordion.scss";
60
59
  @import "accessibility.scss";
@@ -32,3 +32,9 @@
32
32
  .accordion-gray-theme__bar.accordion-open {
33
33
  border-radius: 8px 8px 0px 0px;
34
34
  }
35
+
36
+ .toggle-header-content {
37
+ @apply font-sans;
38
+ @apply text-sm;
39
+ @apply text-gray-800;
40
+ }
@@ -0,0 +1,97 @@
1
+ .detail-header {
2
+ --text-color: var(--bloom-color-primary-darker);
3
+ --subtitle-desktop-font-size: var(--bloom-font-size-sm);
4
+ --subtitle-mobile-font-size: var(--bloom-font-size-sm);
5
+ --title-desktop-font-size: var(--bloom-font-size-2xl);
6
+ --title-mobile-font-size: var(--bloom-font-size-sm);
7
+ --title-desktop-font-family: var(--bloom-font-serif);
8
+ --title-mobile-font-family: var(--bloom-font-alt-sans);
9
+ position: relative;
10
+ padding: var(--bloom-s4) var(--bloom-s4) var(--bloom-s6) var(--bloom-s4);
11
+ border-bottom: 1px solid var(--bloom-color-gray-400);
12
+ color: var(--text-color);
13
+ display: flex;
14
+ justify-content: start;
15
+
16
+ @media (min-width: $screen-md) {
17
+ padding-top: 0;
18
+ padding-bottom: var(--bloom-s8);
19
+ border: none;
20
+ color: var(--bloom-color-gray-800);
21
+ }
22
+ }
23
+
24
+ .detail-header__image {
25
+ position: absolute;
26
+ width: var(--bloom-s12);
27
+ margin-right: var(--bloom-s2);
28
+ margin-left: 0;
29
+
30
+ @media (min-width: $screen-md) {
31
+ left: 0;
32
+ }
33
+ }
34
+
35
+ .detail-header__image-container {
36
+ width: auto;
37
+ [dir="rtl"] & {
38
+ width: var(--bloom-s14);
39
+ }
40
+ }
41
+
42
+ .detail-header__hgroup {
43
+ margin-left: var(--bloom-s12);
44
+ padding-left: var(--bloom-s4);
45
+
46
+ @media (min-width: $screen-md) {
47
+ border-left: 2px solid var(--bloom-color-primary);
48
+ }
49
+
50
+ [dir="rtl"] & {
51
+ margin-right: var(--bloom-s4);
52
+ }
53
+
54
+ .ui-icon {
55
+ position: absolute;
56
+ top: var(--bloom-s4);
57
+ right: var(--bloom-s4);
58
+
59
+ [dir="rtl"] & {
60
+ left: var(--bloom-s4);
61
+ right: auto;
62
+ }
63
+
64
+ @media (min-width: $screen-md) {
65
+ display: none;
66
+ }
67
+
68
+ svg {
69
+ width: var(--bloom-s3);
70
+ height: var(--bloom-s3);
71
+ }
72
+ }
73
+ }
74
+
75
+ .detail-header__title {
76
+ font-family: var(--title-mobile-font-family);
77
+ text-transform: uppercase;
78
+ font-size: var(--title-mobile-font-size);
79
+ letter-spacing: 0.1rem;
80
+ color: var(--text-color);
81
+ @media (min-width: $screen-md) {
82
+ font-family: var(--title-desktop-font-family);
83
+ font-size: var(--title-desktop-font-size);
84
+ text-transform: none;
85
+ letter-spacing: 0rem;
86
+ color: var(--bloom-color-gray-950);
87
+ }
88
+ }
89
+
90
+ .detail-header__subtitle {
91
+ font-size: var(--subtitle-mobile-font-size);
92
+
93
+ @media (min-width: $screen-md) {
94
+ color: var(--bloom-color-gray-800);
95
+ font-size: var(--subtitle-desktop-font-size);
96
+ }
97
+ }
@@ -0,0 +1,24 @@
1
+ import * as React from "react"
2
+ import { BADGES } from "../../../.storybook/constants"
3
+
4
+ import { ListingDetailHeader } from "./ListingDetailHeader"
5
+
6
+ export default {
7
+ title: "Listing/ListingDetailHeader 🚩",
8
+ parameters: {
9
+ badges: [BADGES.GEN2],
10
+ },
11
+ }
12
+
13
+ export const Default = () => {
14
+ return (
15
+ <div style={{ maxWidth: "500px" }}>
16
+ <ListingDetailHeader
17
+ imageAlt={"Building"}
18
+ imageSrc="https://res.cloudinary.com/exygy/image/upload/w_400,c_limit,q_65/dev/listing-eligibility_advdnd.jpg"
19
+ title={"Title"}
20
+ subtitle={"Subtitle"}
21
+ />
22
+ </div>
23
+ )
24
+ }
@@ -1,5 +1,6 @@
1
1
  import * as React from "react"
2
2
  import { Icon } from "../../icons/Icon"
3
+ import "./ListingDetailHeader.scss"
3
4
 
4
5
  export interface ListingDetailHeaderProps {
5
6
  imageAlt: string
@@ -12,8 +13,10 @@ export interface ListingDetailHeaderProps {
12
13
  }
13
14
 
14
15
  const ListingDetailHeader = (props: ListingDetailHeaderProps) => (
15
- <header className={props.hideHeader ? "detail-header md:hidden" : "detail-header"}>
16
- <img alt={props.imageAlt} className="detail-header__image " src={props.imageSrc} />
16
+ <header className={`detail-header ${props.hideHeader ? "md:hidden" : ""}`}>
17
+ <span className={"detail-header__image-container"}>
18
+ <img alt={props.imageAlt} className="detail-header__image " src={props.imageSrc} />
19
+ </span>
17
20
  <hgroup className="detail-header__hgroup">
18
21
  <h2 className="detail-header__title">{props.title}</h2>
19
22
  <span className="detail-header__subtitle">{props.subtitle}</span>
@@ -0,0 +1,11 @@
1
+ .details {
2
+ --desktop-width: calc(100% * (2 / 3));
3
+ --mobile-width: 100%;
4
+
5
+ width: var(--mobile-width);
6
+ @media (min-width: $screen-md) {
7
+ width: var(--desktop-width);
8
+ padding-right: var(--bloom-s8);
9
+ padding-top: var(--bloom-s8);
10
+ }
11
+ }
@@ -6,9 +6,10 @@ import {
6
6
  ResponsiveContentItemBody,
7
7
  } from "../../sections/ResponsiveContentList"
8
8
  import { ListingDetailHeader, ListingDetailHeaderProps } from "./ListingDetailHeader"
9
+ import "./ListingDetails.scss"
9
10
 
10
11
  export const ListingDetails = (props: any) => (
11
- <div className="w-full md:w-2/3 md:pr-8 md:pt-8">
12
+ <div className="details">
12
13
  <ResponsiveContentList>{props.children}</ResponsiveContentList>
13
14
  </div>
14
15
  )
@@ -1,61 +1,54 @@
1
1
  @import "../global/mixins.scss";
2
2
 
3
- // Description
4
- .description__title {
5
- @apply font-serif;
6
- @apply text-xl;
7
- }
8
-
9
- .description__body {
10
- @apply mb-4;
11
-
12
- @screen md {
13
- padding-top: 0.4em;
14
- }
15
- }
16
-
17
- // Data lists
18
3
  .column-definition-list {
19
4
  @include clearfix;
20
5
 
21
- @screen md {
22
- @apply grid;
6
+ --title-font-family: var(--bloom-font-serif);
7
+ --title-font-size-desktop: var(--bloom-font-size-xl);
8
+ --title-font-size-mobile: var(--bloom-font-size-lg);
9
+ --title-text-color: var(--bloom-color-gray-800);
10
+ --body-font-size: var(--bloom-font-size-sm);
11
+ --border-color: var(--bloom-color-gray-450);
12
+ --last-row-grid: span 2 / span 2;
13
+
14
+ @media (min-width: $screen-md) {
15
+ display: grid;
23
16
  grid-template-columns: 1fr 1fr;
24
- @apply gap-x-4;
17
+ column-gap: var(--bloom-s4);
25
18
  grid-row-gap: 0.15rem;
26
19
  }
27
-
20
+
28
21
  .description__title {
29
- @apply text-xl;
30
- @apply text-gray-800;
31
- @apply mb-3;
22
+ font-family: var(--title-font-family);
23
+ font-size: var(--title-font-size-mobile);
24
+ color: var(--title-text-color);
25
+ margin-bottom: var(--bloom-s1);
32
26
  clear: left;
33
- height: max-content;
34
- @apply w-full;
35
-
36
- @screen md {
37
- @apply pl-4;
38
- @apply border-l-2;
39
- @apply border-gray-450;
40
- @apply float-left;
27
+ height: auto;
28
+ width: 100%;
29
+
30
+ @media (min-width: $screen-md) {
31
+ padding-left: var(--bloom-s4);
32
+ border-left: 2px solid var(--border-color);
33
+ float: left;
34
+ margin-bottom: var(--bloom-s3);
35
+ font-size: var(--title-font-size-desktop);
41
36
  }
42
37
  }
43
38
 
44
39
  .description__body {
45
- @apply text-sm;
46
- @apply mb-5;
47
- @apply w-full;
40
+ font-size: var(--body-font-size);
41
+ margin-bottom: var(--bloom-s5);
42
+ width: 100%;
43
+
44
+ @media (min-width: $screen-md) {
45
+ margin-bottom: 0;
46
+ float: left;
47
+ padding-top: 0.4em;
48
48
 
49
- @screen md {
50
- @apply mb-0;
51
- @apply float-left;
52
49
  &:last-of-type {
53
- @apply col-span-2;
50
+ grid-column: var(--last-row-grid);
54
51
  }
55
52
  }
56
-
57
- &:last-of-type {
58
- @apply w-full
59
- }
60
53
  }
61
54
  }
@@ -0,0 +1,47 @@
1
+ import * as React from "react"
2
+ import { Description } from "./Description"
3
+ import { BADGES } from "../../.storybook/constants"
4
+
5
+ export default {
6
+ title: "Text/Description 🚩",
7
+ decorators: [(storyFn: any) => <div style={{ padding: "1rem" }}>{storyFn()}</div>],
8
+ parameters: {
9
+ badges: [BADGES.GEN2],
10
+ },
11
+ }
12
+
13
+ export const Default = () => (
14
+ <dl className="column-definition-list">
15
+ <Description term={"Title"} description={"Description"} />
16
+ <Description term={"Title"} description={"Description"} />
17
+ <Description term={"Title"} description={"Description"} />
18
+ <Description term={"Title"} description={"This last description takes up the full width"} />
19
+ </dl>
20
+ )
21
+
22
+ export const LongStrings = () => (
23
+ <dl className="column-definition-list">
24
+ <Description
25
+ term={"Natoque penatibus"}
26
+ description={
27
+ "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Leo a diam sollicitudin tempor id eu. Porttitor lacus luctus accumsan tortor. Viverra mauris in aliquam sem fringilla. At augue eget arcu dictum. Penatibus et magnis dis parturient montes nascetur ridiculus mus mauris. Velit euismod in pellentesque massa placerat duis ultricies lacus sed. Aliquam vestibulum morbi blandit cursus risus. Tellus at urna condimentum mattis pellentesque id nibh. Interdum consectetur libero id faucibus."
28
+ }
29
+ />
30
+ <Description
31
+ term={"Sed vulputate"}
32
+ description={
33
+ "Platea dictumst vestibulum rhoncus est pellentesque elit ullamcorper. Tristique senectus et netus et malesuada."
34
+ }
35
+ />
36
+ <Description
37
+ term={"Quam lacus suspendisse faucibus interdum"}
38
+ description={
39
+ "Ultrices neque ornare aenean euismod elementum. Tellus elementum sagittis vitae et leo duis. In egestas erat imperdiet sed euismod nisi porta. Nisl purus in mollis nunc sed id semper risus. Ac turpis egestas sed tempus urna et pharetra pharetra. Nibh mauris cursus mattis molestie a iaculis at erat pellentesque. Ultricies mi eget mauris pharetra et ultrices. Enim facilisis gravida neque convallis a cras semper auctor. Risus pretium quam vulputate dignissim suspendisse in est ante. Cursus vitae congue mauris rhoncus aenean vel."
40
+ }
41
+ />
42
+ <Description
43
+ term={"Auctor"}
44
+ description={"Bibendum arcu vitae elementum curabitur vitae nunc sed velit dignissim."}
45
+ />
46
+ </dl>
47
+ )
@@ -4,7 +4,7 @@ import Markdown, { MarkdownToJSX } from "markdown-to-jsx"
4
4
 
5
5
  export interface DescriptionProps {
6
6
  term: string
7
- description: any
7
+ description: string | React.ReactNode
8
8
  dtClassName?: string
9
9
  markdown?: boolean
10
10
  markdownProps?: MarkdownToJSX.Options
@@ -21,7 +21,7 @@ export const Description = (props: DescriptionProps) => {
21
21
  <dd className={dtClasses.join(" ")}>
22
22
  <Markdown
23
23
  options={{ disableParsingRawHTML: true, ...props.markdownProps }}
24
- children={props.description}
24
+ children={props.description as string}
25
25
  />
26
26
  </dd>
27
27
  ) : (
@@ -1,93 +0,0 @@
1
- // Listing Detail
2
- .detail-header {
3
- @apply relative;
4
- @apply pr-4;
5
- @apply pb-6;
6
- @apply pl-4;
7
- @apply pt-4;
8
- @apply border-b;
9
- @apply border-gray-400;
10
- @apply text-primary-darker;
11
-
12
- @screen md {
13
- @apply pt-0;
14
- @apply pb-8;
15
- @apply text-xs;
16
- @apply border-none;
17
- @apply text-gray-800;
18
- }
19
- }
20
-
21
- .detail-header__image {
22
- @apply absolute;
23
- @apply w-12;
24
- @apply mr-2;
25
-
26
- @screen md {
27
- @apply left-0;
28
- }
29
- }
30
-
31
- .detail-header__hgroup {
32
- @apply ml-12;
33
- @apply pl-4;
34
-
35
- @screen md {
36
- @apply border-l-2;
37
- @apply border-primary;
38
- }
39
-
40
- .ui-icon {
41
- @apply absolute;
42
- top: 1rem;
43
- right: 1rem;
44
-
45
- @screen md {
46
- @apply hidden;
47
- }
48
-
49
- svg {
50
- @apply w-3;
51
- @apply h-3;
52
- }
53
- }
54
- }
55
-
56
- .detail-header__title {
57
- @apply font-alt-sans;
58
- @apply uppercase;
59
- @apply text-sm;
60
- @apply tracking-widest;
61
- @apply text-primary-darker;
62
-
63
- @screen md {
64
- @apply text-black;
65
- @apply font-serif;
66
- @apply text-2xl;
67
- @apply normal-case;
68
- @apply tracking-normal;
69
- @apply text-gray-950;
70
- }
71
- }
72
-
73
- .detail-header__subtitle {
74
- @apply text-sm;
75
-
76
- @screen md {
77
- @apply text-gray-750;
78
- }
79
- }
80
-
81
- .toggle-header {
82
- @apply bg-primary-light;
83
- @apply p-4;
84
- @apply border-b;
85
- @apply border-primary;
86
- display: flex;
87
- justify-content: space-between;
88
- }
89
- .toggle-header-content {
90
- @apply font-sans;
91
- @apply text-sm;
92
- @apply text-gray-800;
93
- }