@phillips/seldon 1.160.0 → 1.162.0

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.
@@ -0,0 +1,54 @@
1
+ import { ReactNode } from 'react';
2
+ import { ModalProps } from '../Modal/Modal';
3
+ export interface ModalButtonProps {
4
+ /**
5
+ * Callback click function for button
6
+ */
7
+ onClick?: () => void | unknown;
8
+ /**
9
+ * Button label text
10
+ */
11
+ buttonLabel?: string;
12
+ }
13
+ export interface ComposedModalProps extends Omit<ModalProps, 'onClose' | 'role' | 'style'> {
14
+ /**
15
+ * Title for Composed Modal
16
+ */
17
+ title: string;
18
+ /**
19
+ * The content of the modal.
20
+ */
21
+ children: React.ReactNode;
22
+ /**
23
+ * onClose handler for the modal
24
+ */
25
+ onClose?: () => void;
26
+ /**
27
+ * Maximum height value for the modal body
28
+ */
29
+ maxHeightValue?: string;
30
+ /**
31
+ * Left Button Props
32
+ */
33
+ secondaryButton?: ModalButtonProps;
34
+ /**
35
+ * Right Button Props
36
+ */
37
+ primaryButton?: ModalButtonProps;
38
+ /**
39
+ * Footer content for bottom of Viewings Details
40
+ */
41
+ footerContent?: ReactNode;
42
+ }
43
+ /**
44
+ * ## Overview
45
+ *
46
+ * A component for ComposedModal that extends the base Modal component.
47
+ *
48
+ * [Figma Link](https://www.figma.com/design/hMu9IWH5N3KamJy8tLFdyV/Design-System--Responsive-Web?node-id=25578-15048&p=f&m=dev)
49
+ *
50
+ * [Storybook Link](https://phillips-seldon.netlify.app/?path=/docs/components-composedmodal--overview)
51
+ *
52
+ */
53
+ declare const ComposedModal: import('react').ForwardRefExoticComponent<ComposedModalProps & import('react').RefAttributes<HTMLDivElement>>;
54
+ export default ComposedModal;
@@ -0,0 +1,38 @@
1
+ import { ComposedModalProps } from './ComposedModal';
2
+ declare const _default: {
3
+ title: string;
4
+ component: import('react').ForwardRefExoticComponent<ComposedModalProps & import('react').RefAttributes<HTMLDivElement>>;
5
+ };
6
+ export default _default;
7
+ export declare const Playground: {
8
+ (props: ComposedModalProps): import("react/jsx-runtime").JSX.Element;
9
+ args: {
10
+ id: string;
11
+ title: string;
12
+ viewingDetailsProps: {
13
+ label: string;
14
+ sessionTimesLabel: string;
15
+ sessionTimes: {
16
+ sessionLabel: string;
17
+ sessionTime: string;
18
+ }[];
19
+ viewingTimes: string[];
20
+ location: string;
21
+ mapLink: string;
22
+ };
23
+ };
24
+ };
25
+ export declare const ComposedModalScroll: {
26
+ (props: ComposedModalProps): import("react/jsx-runtime").JSX.Element;
27
+ args: {
28
+ id: string;
29
+ title: string;
30
+ };
31
+ };
32
+ export declare const ComposedModalSingleButton: {
33
+ (props: ComposedModalProps): import("react/jsx-runtime").JSX.Element;
34
+ args: {
35
+ id: string;
36
+ title: string;
37
+ };
38
+ };
@@ -0,0 +1 @@
1
+ export { default as ComposedModal, type ComposedModalProps } from './ComposedModal';
@@ -0,0 +1,51 @@
1
+ import { ComponentProps, ElementType, ReactNode } from 'react';
2
+ import { ButtonVariants } from '../Button/types';
3
+ export interface ExitGateCardProps extends ComponentProps<'div'> {
4
+ /**
5
+ * Image src to display at the right side of the article.
6
+ */
7
+ imageSrc?: string;
8
+ /**
9
+ * Top label for the article.
10
+ */
11
+ label?: ReactNode;
12
+ /**
13
+ * Header for the article.
14
+ */
15
+ header?: ReactNode;
16
+ /**
17
+ * Description for the article.
18
+ */
19
+ description?: ReactNode;
20
+ /**
21
+ * Custom link element to use for the link. Defaults to the `Link` component.
22
+ */
23
+ linkElement?: ElementType<ComponentProps<'a'>>;
24
+ /**
25
+ * Label for the link.
26
+ */
27
+ linkLabel?: ReactNode;
28
+ /**
29
+ * Href for the link.
30
+ */
31
+ linkHref?: string;
32
+ /**
33
+ * imageSrc alt text for accessibility.
34
+ */
35
+ altText?: string;
36
+ /**
37
+ * LinkVariants for the ExitGateCard.
38
+ */
39
+ variant?: ButtonVariants;
40
+ }
41
+ /**
42
+ * ## Overview
43
+ *
44
+ * Overview of this widget
45
+ *
46
+ * [Figma Link](https://www.figma.com/design/hMu9IWH5N3KamJy8tLFdyV/Design-System--Foundations--RW-to-be-depreciated-?node-id=24825-524&p=f&m=dev)
47
+ *
48
+ * [Storybook Link](https://phillips-seldon.netlify.app/?path=/docs/components-ExitGateCard-overview)
49
+ */
50
+ declare const ExitGateCard: import('react').ForwardRefExoticComponent<Omit<ExitGateCardProps, "ref"> & import('react').RefAttributes<HTMLDivElement>>;
51
+ export default ExitGateCard;
@@ -0,0 +1,18 @@
1
+ import { ExitGateCardProps } from './ExitGateCard';
2
+ declare const meta: {
3
+ title: string;
4
+ component: import('react').ForwardRefExoticComponent<Omit<ExitGateCardProps, "ref"> & import('react').RefAttributes<HTMLDivElement>>;
5
+ };
6
+ export default meta;
7
+ export declare const Playground: {
8
+ (props: ExitGateCardProps): import("react/jsx-runtime").JSX.Element;
9
+ args: {
10
+ imageSrc: string;
11
+ label: string;
12
+ header: string;
13
+ description: string;
14
+ linkLabel: string;
15
+ linkHref: string;
16
+ variant: string;
17
+ };
18
+ };
@@ -0,0 +1 @@
1
+ export { default as ExitGateCard, type ExitGateCardProps } from './ExitGateCard';
@@ -1,48 +1,48 @@
1
- import { jsxs as l, jsx as r } from "react/jsx-runtime";
1
+ import { jsxs as s, jsx as r } from "react/jsx-runtime";
2
2
  import { forwardRef as R } from "react";
3
3
  import { getCommonProps as V } from "../../utils/index.js";
4
4
  import $ from "../../node_modules/classnames/index.js";
5
5
  import { TextVariants as i } from "../Text/types.js";
6
6
  import e from "../Text/Text.js";
7
7
  import j from "../SeldonImage/SeldonImage.js";
8
- import t from "../Button/Button.js";
8
+ import n from "../Button/Button.js";
9
9
  import { ButtonVariants as m } from "../Button/types.js";
10
10
  import { SSRMediaQuery as D } from "../../providers/SeldonProvider/utils.js";
11
11
  import { SaleCardVariants as v } from "./types.js";
12
12
  const M = R(
13
13
  ({
14
14
  className: g,
15
- imageSrc: o,
15
+ imageSrc: c,
16
16
  imageAlt: b = "Auction Image",
17
17
  auctionType: C,
18
18
  titleText: S,
19
19
  date: E,
20
20
  location: k,
21
- primaryButtonText: c,
21
+ primaryButtonText: o,
22
22
  primaryButtonOnClick: d,
23
23
  secondaryButtonText: _,
24
- secondaryButtonHref: s,
24
+ secondaryButtonHref: l,
25
25
  secondaryButtonOnClick: u,
26
26
  badgeText: h,
27
27
  modalButtonOnClick: p,
28
28
  modalButtonText: f,
29
- variant: n = v.DEFAULT,
29
+ variant: t = v.DEFAULT,
30
30
  ...N
31
31
  }, A) => {
32
32
  const { className: a, ...L } = V(N, "SaleCard"), I = $(a, g, {
33
- [`${a}--${n}`]: n
33
+ [`${a}--${t}`]: t
34
34
  }), P = { ...L, ...N };
35
- return /* @__PURE__ */ l("div", { ...P, className: I, ref: A, children: [
36
- o ? /* @__PURE__ */ r(j, { src: o, alt: b, className: `${a}__image` }) : null,
37
- /* @__PURE__ */ l("div", { className: `${a}__details`, children: [
35
+ return /* @__PURE__ */ s("article", { ...P, className: I, ref: A, children: [
36
+ c ? /* @__PURE__ */ r(j, { src: c, alt: b, className: `${a}__image` }) : null,
37
+ /* @__PURE__ */ s("div", { className: `${a}__details`, children: [
38
38
  /* @__PURE__ */ r(e, { variant: i.badge, className: `${a}__auction-type`, children: C }),
39
39
  /* @__PURE__ */ r(e, { variant: i.title3, children: S }),
40
40
  h && /* @__PURE__ */ r(e, { variant: i.badge, className: `${a}__badge`, children: h }),
41
- /* @__PURE__ */ l("div", { className: `${a}__info`, children: [
41
+ /* @__PURE__ */ s("div", { className: `${a}__info`, children: [
42
42
  /* @__PURE__ */ r(e, { variant: i.string2, children: k }),
43
43
  /* @__PURE__ */ r(e, { variant: i.string2, children: E }),
44
44
  f && p && /* @__PURE__ */ r("div", { className: `${a}__modal-link`, children: /* @__PURE__ */ r(
45
- t,
45
+ n,
46
46
  {
47
47
  onClick: p,
48
48
  variant: m.tertiary,
@@ -52,25 +52,25 @@ const M = R(
52
52
  ) })
53
53
  ] })
54
54
  ] }),
55
- n !== v.RELATED_SALE_TILE && /* @__PURE__ */ r(D.Media, { greaterThanOrEqual: "md", children: /* @__PURE__ */ l("div", { className: `${a}__cta`, children: [
56
- c && d && /* @__PURE__ */ r(
57
- t,
55
+ t !== v.RELATED_SALE_TILE && /* @__PURE__ */ r(D.Media, { greaterThanOrEqual: "md", children: /* @__PURE__ */ s("div", { className: `${a}__cta`, children: [
56
+ o && d && /* @__PURE__ */ r(
57
+ n,
58
58
  {
59
59
  variant: m.primary,
60
60
  onClick: d,
61
61
  className: `${a}__cta-button`,
62
- children: c
62
+ children: o
63
63
  }
64
64
  ),
65
65
  _ && /* @__PURE__ */ r(
66
- t,
66
+ n,
67
67
  {
68
- variant: s ? m.tertiary : m.secondary,
69
- href: s,
70
- target: s ? "_blank" : void 0,
68
+ variant: l ? m.tertiary : m.secondary,
69
+ href: l,
70
+ target: l ? "_blank" : void 0,
71
71
  onClick: u,
72
72
  className: $(`${a}__cta-button`, {
73
- [`${a}__pdf-link`]: s
73
+ [`${a}__pdf-link`]: l
74
74
  }),
75
75
  children: _
76
76
  }
@@ -0,0 +1,62 @@
1
+ import { ComponentProps, ElementType } from 'react';
2
+ import { LinkProps } from '../../components/Link';
3
+ export interface ViewingSessionProps {
4
+ /**
5
+ * Session label for viewing session text
6
+ */
7
+ sessionLabel?: string;
8
+ /**
9
+ * Session time for viewing session text
10
+ */
11
+ sessionTime?: string;
12
+ }
13
+ export interface ViewingDetailsProps extends ComponentProps<'div'> {
14
+ /**
15
+ * Unique id for component
16
+ */
17
+ id?: string;
18
+ /**
19
+ * Label for Viewings Details
20
+ */
21
+ label?: string;
22
+ /**
23
+ * Session Times label text for Viewings Details
24
+ */
25
+ sessionTimesLabel?: string;
26
+ /**
27
+ * Session Times data array
28
+ */
29
+ sessionTimes?: ViewingSessionProps[];
30
+ /**
31
+ * Viewing Times string array
32
+ */
33
+ viewingTimes?: string[];
34
+ /**
35
+ * Location of Viewings Details
36
+ */
37
+ location?: string;
38
+ /**
39
+ * Custom link element to use for the link. Defaults to the `Link` component.
40
+ */
41
+ linkElement?: ElementType<LinkProps>;
42
+ /**
43
+ * Google maps link for Viewings Details
44
+ */
45
+ mapLink?: string;
46
+ /**
47
+ * Callback for onClose function
48
+ */
49
+ onClose?: () => void | unknown;
50
+ }
51
+ /**
52
+ * ## Overview
53
+ *
54
+ * A simple component for displaying viewing details such as session times, viewing times, location, and a map link.
55
+ *
56
+ * [Figma Link](https://www.figma.com/design/H1kCh6MXU8jasYbQuCbyBt/Calendar?node-id=6-17&p=f&m=dev)
57
+ *
58
+ * [Storybook Link](https://phillips-seldon.netlify.app/?path=/docs/components-viewingdetails--overview)
59
+ *
60
+ */
61
+ declare const ViewingDetails: import('react').ForwardRefExoticComponent<Omit<ViewingDetailsProps, "ref"> & import('react').RefAttributes<HTMLDivElement>>;
62
+ export default ViewingDetails;
@@ -0,0 +1,40 @@
1
+ import { ViewingDetailsProps } from './ViewingDetails';
2
+ declare const _default: {
3
+ title: string;
4
+ component: import('react').ForwardRefExoticComponent<Omit<ViewingDetailsProps, "ref"> & import('react').RefAttributes<HTMLDivElement>>;
5
+ };
6
+ export default _default;
7
+ export declare const Playground: {
8
+ (props: ViewingDetailsProps): import("react/jsx-runtime").JSX.Element;
9
+ args: {
10
+ label: string;
11
+ sessionTimesLabel: string;
12
+ sessionTimes: {
13
+ sessionLabel: string;
14
+ sessionTime: string;
15
+ }[];
16
+ viewingTimes: string[];
17
+ location: string;
18
+ mapLink: string;
19
+ };
20
+ };
21
+ export declare const CenterAlignText: {
22
+ (props: ViewingDetailsProps): import("react/jsx-runtime").JSX.Element;
23
+ args: {
24
+ id: string;
25
+ title: string;
26
+ label: string;
27
+ sessionTimesLabel: string;
28
+ children: import('react').ReactElement<{
29
+ src: string;
30
+ alt: string;
31
+ }, string | import('react').JSXElementConstructor<any>>;
32
+ sessionTimes: {
33
+ sessionLabel: string;
34
+ sessionTime: string;
35
+ }[];
36
+ viewingTimes: string[];
37
+ location: string;
38
+ mapLink: string;
39
+ };
40
+ };
@@ -0,0 +1,29 @@
1
+ import { default as React } from 'react';
2
+ export declare const viewingDetailsProps: {
3
+ label: string;
4
+ sessionTimesLabel: string;
5
+ sessionTimes: {
6
+ sessionLabel: string;
7
+ sessionTime: string;
8
+ }[];
9
+ viewingTimes: string[];
10
+ location: string;
11
+ mapLink: string;
12
+ };
13
+ export declare const viewingDetailsWithChildrenProps: {
14
+ id: string;
15
+ title: string;
16
+ label: string;
17
+ sessionTimesLabel: string;
18
+ children: React.ReactElement<{
19
+ src: string;
20
+ alt: string;
21
+ }, string | React.JSXElementConstructor<any>>;
22
+ sessionTimes: {
23
+ sessionLabel: string;
24
+ sessionTime: string;
25
+ }[];
26
+ viewingTimes: string[];
27
+ location: string;
28
+ mapLink: string;
29
+ };
@@ -0,0 +1 @@
1
+ export { default as ViewingDetails, type ViewingDetailsProps } from './ViewingDetails';
@@ -50,12 +50,15 @@
50
50
  @use 'components/Filter/filter';
51
51
  @use 'components/FavoritingTileButton/favoritingTileButton';
52
52
  @use 'components/Toast/toast';
53
+ @use 'components/ExitGateCard/exitGateCard';
54
+ @use 'components/ComposedModal/composedModal';
53
55
 
54
56
  // Patterns
55
57
  @use 'patterns/HeroBanner/heroBanner';
56
58
  @use 'patterns/LanguageSelector/languageSelector';
57
59
  @use 'patterns/UserManagement/userManagement';
58
60
  @use 'patterns/ViewingsList/viewingsList';
61
+ @use 'patterns/ViewingDetails/viewingDetails';
59
62
  @use 'patterns/Subscribe/subscribe';
60
63
  @use 'patterns/Social/social';
61
64
  @use 'patterns/SaleHeaderBanner/saleHeaderBanner';
@@ -0,0 +1,53 @@
1
+ @use '../../allPartials' as *;
2
+
3
+ .#{$px}-composed-modal {
4
+ border-radius: 1rem;
5
+ max-width: 95vw;
6
+ min-width: 0;
7
+ padding: $spacing-sm 0;
8
+ width: 95vw;
9
+
10
+ &__title {
11
+ margin-top: $spacing-md;
12
+ padding: 0 $spacing-md;
13
+ }
14
+
15
+ &__body {
16
+ max-height: var('--max-modal-body-height');
17
+ overflow-y: auto;
18
+ }
19
+
20
+ &__divider {
21
+ margin: 0;
22
+ }
23
+
24
+ &__btns-group {
25
+ display: flex;
26
+ gap: $spacing-sm;
27
+ justify-content: center;
28
+ padding: $spacing-sm $spacing-md;
29
+ }
30
+
31
+ &__btns-group > * {
32
+ flex: 1 1 50%;
33
+ max-width: 50%;
34
+ }
35
+
36
+ &__btns {
37
+ padding: 0 $spacing-md $spacing-sm;
38
+ }
39
+
40
+ &__disclaimer {
41
+ margin-top: $spacing-sm;
42
+ padding: 0 $spacing-md;
43
+ }
44
+
45
+ @media (min-width: $breakpoint-md) {
46
+ width: auto;
47
+ }
48
+ }
49
+
50
+ .#{$px}-composed-modal__body {
51
+ max-height: var(--max-modal-body-height);
52
+ overflow-y: auto;
53
+ }
@@ -0,0 +1,79 @@
1
+ @use '../../allPartials' as *;
2
+
3
+ .#{$px}-exit-gate-card {
4
+ display: flex;
5
+ flex-direction: row-reverse;
6
+ justify-content: space-between;
7
+ padding-left: $spacing-md;
8
+
9
+ @media (max-width: $breakpoint-md) {
10
+ flex-direction: column;
11
+
12
+ &__desktop_image {
13
+ max-width: unset;
14
+ overflow: visible;
15
+ }
16
+ }
17
+
18
+ @media (min-width: $breakpoint-md) {
19
+ flex-direction: row;
20
+ padding-left: $spacing-lg;
21
+
22
+ &__desktop_image {
23
+ max-width: 405px;
24
+ }
25
+ }
26
+
27
+ &__content {
28
+ align-items: flex-start;
29
+ color: $pure-black;
30
+ display: flex;
31
+ flex-direction: column;
32
+ gap: $spacing-sm;
33
+ margin: auto 0;
34
+
35
+ &-label {
36
+ @media (max-width: $breakpoint-md) {
37
+ font-variation-settings: 'wght' 500;
38
+ }
39
+ }
40
+
41
+ &-title {
42
+ margin: 0;
43
+ }
44
+
45
+ &-description {
46
+ @media (max-width: $breakpoint-md) {
47
+ font-size: $body-size1;
48
+ text-align: center;
49
+ }
50
+ }
51
+
52
+ &-link {
53
+ font-size: $body-size3;
54
+ padding: $padding-xsm $padding-xxl;
55
+
56
+ @media (max-width: $breakpoint-md) {
57
+ font-size: $body-size2;
58
+ }
59
+ }
60
+ }
61
+ }
62
+
63
+ .#{$px}-exit-gate-card {
64
+ display: flex;
65
+ flex-direction: row-reverse;
66
+
67
+ @media (max-width: $breakpoint-md) {
68
+ flex-direction: column;
69
+ padding: 0;
70
+ }
71
+
72
+ &__content {
73
+ @media (max-width: $breakpoint-md) {
74
+ align-items: center;
75
+ margin-top: $spacing-md;
76
+ padding: 0 $spacing-md;
77
+ }
78
+ }
79
+ }
@@ -18,7 +18,7 @@
18
18
 
19
19
  &__text {
20
20
  display: flex;
21
- gap: $spacing-xsm;
21
+ gap: $spacing-micro;
22
22
  overflow: hidden;
23
23
 
24
24
  span {
@@ -98,6 +98,7 @@
98
98
  background-color: $button-hover;
99
99
 
100
100
  & svg {
101
+ color: $pure-white;
101
102
  fill: $pure-white;
102
103
  margin-inline-end: unset;
103
104
 
@@ -4,11 +4,10 @@
4
4
  align-items: center;
5
5
  display: flex;
6
6
  flex-direction: column;
7
- gap: $spacing-sm;
7
+ gap: $spacing-md;
8
8
 
9
9
  @include media($breakpoint-md) {
10
10
  flex-direction: row;
11
- gap: $spacing-md;
12
11
  }
13
12
 
14
13
  &__image {
@@ -122,5 +121,8 @@
122
121
  max-width: calc($spacing-xxxl * 1.25);
123
122
  }
124
123
  }
124
+ .#{$px}-sale-card__auction-type {
125
+ font-size: 0.5rem;
126
+ }
125
127
  }
126
128
  }
@@ -0,0 +1,51 @@
1
+ @use '../../allPartials' as *;
2
+
3
+ .#{$px}-viewing-details {
4
+ &__content {
5
+ padding: 0 $spacing-md;
6
+ position: relative;
7
+ }
8
+
9
+ &__children {
10
+ margin-bottom: $spacing-md;
11
+ }
12
+
13
+ &__center-align {
14
+ text-align: center;
15
+ }
16
+
17
+ &__label {
18
+ margin-bottom: 0;
19
+ }
20
+
21
+ &__close-icon {
22
+ cursor: pointer;
23
+ position: absolute;
24
+ right: $spacing-sm;
25
+ top: $spacing-sm;
26
+ }
27
+
28
+ &__text {
29
+ margin-bottom: $spacing-sm;
30
+ }
31
+
32
+ &__location {
33
+ margin-bottom: $spacing-xsm;
34
+ margin-top: $spacing-md;
35
+ }
36
+
37
+ &__map-link {
38
+ margin-bottom: $spacing-md;
39
+ }
40
+ }
41
+
42
+ .#{$px}-viewing-details__content .#{$px}-viewing-details__label {
43
+ margin-bottom: 0;
44
+ }
45
+ .#{$px}-viewing-details__content .#{$px}-viewing-details__text {
46
+ margin-bottom: $spacing-sm;
47
+ }
48
+ .#{$px}-viewing-details__content .#{$px}-viewing-details__location {
49
+ margin-bottom: $spacing-xsm;
50
+ margin-top: $spacing-md;
51
+ }
@@ -0,0 +1,5 @@
1
+ @import '../../allPartials';
2
+
3
+ .story-center-align {
4
+ text-align: center;
5
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@phillips/seldon",
3
- "version": "1.160.0",
3
+ "version": "1.162.0",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/PhillipsAuctionHouse/seldon"