@bloom-housing/ui-components 10.0.15 → 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.
@@ -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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bloom-housing/ui-components",
3
- "version": "10.0.15",
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,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
- }