@phillips/seldon 1.17.5 → 1.18.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.
Files changed (31) hide show
  1. package/dist/components/Button/Button.d.ts +8 -5
  2. package/dist/components/Button/Button.js +24 -9
  3. package/dist/components/Footer/Footer.d.ts +20 -0
  4. package/dist/components/Footer/Footer.js +18 -0
  5. package/dist/components/Grid/Grid.d.ts +3 -5
  6. package/dist/components/Grid/Grid.js +12 -13
  7. package/dist/components/Social/Social.d.ts +15 -0
  8. package/dist/components/Social/Social.js +10 -0
  9. package/dist/components/SplitPanel/SplitPanel.d.ts +19 -0
  10. package/dist/components/SplitPanel/SplitPanel.js +23 -0
  11. package/dist/components/Subscribe/Subscribe.d.ts +40 -0
  12. package/dist/components/Subscribe/Subscribe.js +42 -0
  13. package/dist/index.d.ts +4 -0
  14. package/dist/index.js +24 -16
  15. package/dist/scss/_type.scss +1 -1
  16. package/dist/scss/_utils.scss +25 -0
  17. package/dist/scss/_vars.scss +15 -2
  18. package/dist/scss/components/Button/_button.scss +4 -3
  19. package/dist/scss/components/Footer/_footer.scss +96 -0
  20. package/dist/scss/components/Grid/_grid.scss +1 -1
  21. package/dist/scss/components/Input/_input.scss +1 -1
  22. package/dist/scss/components/Social/_social.scss +40 -0
  23. package/dist/scss/components/SplitPanel/_splitPanel.scss +39 -0
  24. package/dist/scss/components/SplitPanel/_splitPanel.stories.scss +18 -0
  25. package/dist/scss/components/Subscribe/_subscribe.scss +37 -0
  26. package/dist/scss/components/Toggle/_toggle.scss +1 -1
  27. package/dist/scss/components/ViewingsList/_viewingsList.scss +1 -1
  28. package/dist/scss/styles.scss +6 -1
  29. package/dist/utils/index.d.ts +1 -0
  30. package/dist/utils/index.js +15 -13
  31. package/package.json +16 -15
@@ -1,9 +1,8 @@
1
- import { CommonProps } from '../../utils';
2
- export interface ButtonProps extends CommonProps, Record<string, unknown> {
1
+ export interface ButtonProps extends React.HTMLAttributes<HTMLButtonElement> {
3
2
  /**
4
3
  * Button contents
5
4
  */
6
- children: React.ReactNode;
5
+ children?: React.ReactNode;
7
6
  /**
8
7
  * True if button comes after text
9
8
  */
@@ -11,7 +10,7 @@ export interface ButtonProps extends CommonProps, Record<string, unknown> {
11
10
  /**
12
11
  * Optional click handler
13
12
  */
14
- onClick?: (e: React.MouseEvent<HTMLElement>) => void | unknown;
13
+ onClick?: React.MouseEventHandler<HTMLButtonElement> | undefined;
15
14
  /**
16
15
  * Is this the principal call to action on the page?
17
16
  */
@@ -20,6 +19,10 @@ export interface ButtonProps extends CommonProps, Record<string, unknown> {
20
19
  * How large should the button be?
21
20
  */
22
21
  size?: 'sm' | 'md' | 'lg';
22
+ /**
23
+ * The type of the button.
24
+ */
25
+ type?: 'button' | 'submit' | 'reset';
23
26
  }
24
- declare const Button: ({ buttonType, size, children, iconLast, id, ...props }: ButtonProps) => import("react/jsx-runtime").JSX.Element;
27
+ declare const Button: ({ buttonType, size, children, className, iconLast, id, type, ...props }: ButtonProps) => import("react/jsx-runtime").JSX.Element;
25
28
  export default Button;
@@ -1,19 +1,34 @@
1
- import { jsx as m } from "react/jsx-runtime";
2
- import b from "../../node_modules/classnames/index.js";
1
+ import { jsx as e } from "react/jsx-runtime";
2
+ import $ from "../../node_modules/classnames/index.js";
3
3
  import { px as t } from "../../utils/index.js";
4
- const f = ({ buttonType: n = "primary", size: a = "md", children: r, iconLast: s = !1, id: o, ...u }) => /* @__PURE__ */ m(
4
+ const c = ({
5
+ buttonType: n = "primary",
6
+ size: a = "md",
7
+ children: r,
8
+ className: s,
9
+ iconLast: u = !1,
10
+ id: o,
11
+ type: m = "button",
12
+ ...b
13
+ }) => /* @__PURE__ */ e(
5
14
  "button",
6
15
  {
7
16
  "data-testid": o ? `button-${o}` : "button",
8
17
  id: o,
9
- type: "button",
10
- className: b(`${t}-button`, `${t}-button--${a}`, `${t}-button--${n}`, {
11
- [`${t}-button--icon-last`]: s
12
- }),
13
- ...u,
18
+ type: m,
19
+ className: $(
20
+ `${t}-button`,
21
+ `${t}-button--${a}`,
22
+ `${t}-button--${n}`,
23
+ {
24
+ [`${t}-button--icon-last`]: u
25
+ },
26
+ s
27
+ ),
28
+ ...b,
14
29
  children: r
15
30
  }
16
31
  );
17
32
  export {
18
- f as default
33
+ c as default
19
34
  };
@@ -0,0 +1,20 @@
1
+ export interface FooterProps extends React.HTMLAttributes<HTMLElement> {
2
+ chidlren?: React.ReactNode;
3
+ /**
4
+ * Copyright data added to bottom of site
5
+ */
6
+ copyright?: string;
7
+ /**
8
+ * Navigation items
9
+ */
10
+ navigationComponent: React.ReactElement;
11
+ }
12
+ /**
13
+ * ## Overview
14
+ *
15
+ * A component for adding a footer to the bottom of the site.
16
+ *
17
+ * [Figma Link](https://www.figma.com/file/npS5ECbNut8hevUkGWSzUN/Site-Furniture-(Navigation)---SP24?type=design&node-id=4346-1981&mode=design&t=D7PpghvLOEpBYd3n-0)
18
+ */
19
+ declare const Footer: ({ children, className, copyright, id, navigationComponent, }: FooterProps) => import("react/jsx-runtime").JSX.Element;
20
+ export default Footer;
@@ -0,0 +1,18 @@
1
+ import { jsxs as f, jsx as r } from "react/jsx-runtime";
2
+ import i from "../../node_modules/classnames/index.js";
3
+ import { px as o, defaultYear as m } from "../../utils/index.js";
4
+ import n from "../SplitPanel/SplitPanel.js";
5
+ const _ = ({
6
+ children: t,
7
+ className: a,
8
+ copyright: s = `© ${m} Phillips Auctioneers, LLC`,
9
+ id: e,
10
+ navigationComponent: l
11
+ }) => /* @__PURE__ */ f("footer", { "data-testid": e || "footer", id: e, className: i(`${o}-footer`, { className: a }), children: [
12
+ /* @__PURE__ */ r("nav", { className: `${o}-footer__navigation`, children: l }),
13
+ /* @__PURE__ */ r(n, { className: `${o}-footer__content`, hasBorder: !1, children: t }),
14
+ /* @__PURE__ */ r("p", { className: `${o}-footer__copyright`, children: s })
15
+ ] });
16
+ export {
17
+ _ as default
18
+ };
@@ -1,14 +1,12 @@
1
- import { ElementType } from 'react';
2
- import { CommonProps } from '../../utils';
3
- export interface GridProps extends CommonProps {
1
+ export interface GridProps extends React.HTMLAttributes<HTMLElement> {
4
2
  /**
5
3
  * Button contents
6
4
  */
7
5
  children: React.ReactNode;
8
6
  /**
9
- * Optional element to render in place of a button e.g. React-Router, etc
7
+ * Optional element to render in place of a button e.g. 'div', 'span', CustomComponent, etc
10
8
  */
11
- element?: ElementType;
9
+ element?: React.ElementType<GridProps>;
12
10
  /**
13
11
  * Optional boolean to dictate if the grid has left and right margins
14
12
  */
@@ -1,24 +1,23 @@
1
- import { jsx as m } from "react/jsx-runtime";
2
- import s from "../../node_modules/classnames/index.js";
3
- import { px as n } from "../../utils/index.js";
1
+ import { jsx as s } from "react/jsx-runtime";
2
+ import m from "../../node_modules/classnames/index.js";
3
+ import { px as t } from "../../utils/index.js";
4
4
  function g({
5
5
  children: e,
6
- className: t,
7
- element: i = "section",
8
- hasMargins: o = !0,
6
+ className: n,
7
+ element: a = "section",
8
+ hasMargins: i = !0,
9
9
  id: r,
10
- ...a
10
+ ...o
11
11
  }) {
12
- return /* @__PURE__ */ m(
13
- i,
12
+ return /* @__PURE__ */ s(
13
+ a,
14
14
  {
15
15
  "data-testid": r ? `grid-container-${r}` : "grid-container",
16
16
  id: r,
17
- className: s(`${n}-grid__container`, {
18
- [`${t}`]: t,
19
- [`${n}-grid__container--has-margins`]: o
17
+ className: m(`${t}-grid__container`, n, {
18
+ [`${t}-grid__container--has-margins`]: i
20
19
  }),
21
- ...a,
20
+ ...o,
22
21
  children: e
23
22
  }
24
23
  );
@@ -0,0 +1,15 @@
1
+ export interface SocialProps extends React.HTMLAttributes<HTMLElement> {
2
+ /**
3
+ * Title text for the social section
4
+ */
5
+ titleText?: string;
6
+ }
7
+ /**
8
+ * ## Overview
9
+ *
10
+ * A component for displaying our social icons. Expects children to be an unordered list of social icons.
11
+ *
12
+ * [Figma Link](https://www.figma.com/file/npS5ECbNut8hevUkGWSzUN/Site-Furniture-(Navigation)---SP24?type=design&node-id=4357-7418&mode=design&t=D7PpghvLOEpBYd3n-0)
13
+ */
14
+ declare const Social: ({ className, children, id, titleText }: SocialProps) => import("react/jsx-runtime").JSX.Element;
15
+ export default Social;
@@ -0,0 +1,10 @@
1
+ import { jsxs as i, jsx as e } from "react/jsx-runtime";
2
+ import r from "../../node_modules/classnames/index.js";
3
+ import { px as o } from "../../utils/index.js";
4
+ const n = ({ className: s, children: l, id: a, titleText: c = "Follow on Social" }) => /* @__PURE__ */ i("div", { "data-testid": a || "social", className: r(`${o}-social`, s), children: [
5
+ /* @__PURE__ */ e("h3", { className: `${o}-social__header`, children: c }),
6
+ l
7
+ ] });
8
+ export {
9
+ n as default
10
+ };
@@ -0,0 +1,19 @@
1
+ export interface SplitPanelProps extends React.HTMLAttributes<HTMLElement> {
2
+ /**
3
+ * Optional element to render in place of a section e.g. div, span, etc
4
+ */
5
+ element?: React.ElementType;
6
+ /**
7
+ * Boolean that will determine if the split panel has a border between panels at large screens
8
+ */
9
+ hasBorder?: boolean;
10
+ }
11
+ /**
12
+ * ## Overview
13
+ *
14
+ * A component for splitting content into two sections. The sections are split 50/50 that stack on the default and 'sm' break points and are side by side at bigger screen sizes.
15
+ *
16
+ * [Figma Link](https://www.figma.com/file/Hp2FyltbOmRxTuw9kSwBAd/EPIC-About-Us?type=design&node-id=635-34713&mode=design&t=wKZW1vKP8WePUjrH-0)
17
+ */
18
+ declare const SplitPanel: ({ children, className, element: Element, hasBorder, id, ...props }: SplitPanelProps) => import("react/jsx-runtime").JSX.Element;
19
+ export default SplitPanel;
@@ -0,0 +1,23 @@
1
+ import { jsx as o } from "react/jsx-runtime";
2
+ import m from "../../node_modules/classnames/index.js";
3
+ import { px as t } from "../../utils/index.js";
4
+ const f = ({
5
+ children: s,
6
+ className: l,
7
+ element: a = "section",
8
+ hasBorder: p = !0,
9
+ id: e,
10
+ ...r
11
+ }) => /* @__PURE__ */ o(
12
+ a,
13
+ {
14
+ "data-testid": e || "split-panel",
15
+ id: e,
16
+ className: m(`${t}-split-panel`, l, { [`${t}-split-panel--borderless`]: !p }),
17
+ ...r,
18
+ children: s
19
+ }
20
+ );
21
+ export {
22
+ f as default
23
+ };
@@ -0,0 +1,40 @@
1
+ import { ButtonProps } from '../Button/Button';
2
+ export interface SubscribeProps extends React.HTMLAttributes<HTMLFormElement> {
3
+ /**
4
+ * Subscribe blurb
5
+ */
6
+ blurb?: string;
7
+ /**
8
+ * Subscribe button extra props to spread
9
+ */
10
+ buttonProps?: ButtonProps;
11
+ /**
12
+ * Subscribe button text
13
+ */
14
+ buttonText?: string;
15
+ /**
16
+ * Optional element to render in place of a form e.g. Remix Form, etc
17
+ */
18
+ element?: React.ElementType<SubscribeProps>;
19
+ /**
20
+ * Subscribe input label
21
+ */
22
+ inputLabelText?: string;
23
+ /**
24
+ * Subscribe input label
25
+ */
26
+ inputPlaceholder?: string;
27
+ /**
28
+ * Subscribe title text
29
+ */
30
+ title?: string;
31
+ }
32
+ /**
33
+ * ## Overview
34
+ *
35
+ * A component for adding an email signup form.
36
+ *
37
+ * [Figma Link](https://www.figma.com/file/npS5ECbNut8hevUkGWSzUN/Site-Furniture-(Navigation)---SP24?node-id=4347%3A4194&mode=dev)
38
+ */
39
+ declare const Subscribe: ({ blurb, buttonText, buttonProps, className, element: Element, id, inputLabelText, inputPlaceholder, title, ...props }: SubscribeProps) => import("react/jsx-runtime").JSX.Element;
40
+ export default Subscribe;
@@ -0,0 +1,42 @@
1
+ import { jsxs as n, jsx as s } from "react/jsx-runtime";
2
+ import p from "../../node_modules/classnames/index.js";
3
+ import { px as e } from "../../utils/index.js";
4
+ import f from "../Input/Input.js";
5
+ import _ from "../Button/Button.js";
6
+ const y = ({
7
+ blurb: t,
8
+ buttonText: i = "Sign Up",
9
+ buttonProps: l,
10
+ className: m,
11
+ element: a = "form",
12
+ id: r,
13
+ inputLabelText: c = "Email*",
14
+ inputPlaceholder: o = "example@email.com",
15
+ title: b = "Subscribe to Newsletter",
16
+ ...u
17
+ }) => /* @__PURE__ */ n(
18
+ a,
19
+ {
20
+ "data-testid": r || "subscribe-form",
21
+ id: r,
22
+ className: p(`${e}-subscribe`, m),
23
+ ...u,
24
+ children: [
25
+ /* @__PURE__ */ s("h3", { className: `${e}-subscribe__title`, children: b }),
26
+ t ? /* @__PURE__ */ s("p", { className: `${e}-subscribe__blurb`, children: t }) : null,
27
+ /* @__PURE__ */ s(
28
+ f,
29
+ {
30
+ className: `${e}-subscribe__input`,
31
+ type: "email",
32
+ placeholder: o,
33
+ labelText: c
34
+ }
35
+ ),
36
+ /* @__PURE__ */ s(_, { className: `${e}-subscribe__button ${m}`, buttonType: "secondary", type: "submit", ...l, children: i })
37
+ ]
38
+ }
39
+ );
40
+ export {
41
+ y as default
42
+ };
package/dist/index.d.ts CHANGED
@@ -1,10 +1,14 @@
1
1
  export { default as Button, type ButtonProps } from './components/Button/Button';
2
2
  export { default as ErrorBoundary, type ErrorBoundaryProps } from './components/ErrorBoundary/ErrorBoundary';
3
+ export { default as Footer, type FooterProps } from './components/Footer/Footer';
3
4
  export { default as Grid, type GridProps } from './components/Grid/Grid';
4
5
  export { default as Header, type HeaderProps } from './components/Header/Header';
5
6
  export { default as HeroBanner, type HeroBannerProps } from './components/HeroBanner/HeroBanner';
6
7
  export { default as Input, type InputProps } from './components/Input/Input';
7
8
  export { default as Select, type SelectProps } from './components/Select/Select';
9
+ export { default as SplitPanel, type SplitPanelProps } from './components/SplitPanel/SplitPanel';
10
+ export { default as Subscribe, type SubscribeProps } from './components/Subscribe/Subscribe';
11
+ export { default as Social, type SocialProps } from './components/Social/Social';
8
12
  export { default as ViewingsList, type ViewingsListProps } from './components/ViewingsList/ViewingsList';
9
13
  export { default as StatefulViewingsList, type StatefulViewingsListProps, } from './components/ViewingsList/StatefulViewingsList';
10
14
  export { default as Page } from './pages/Page';
package/dist/index.js CHANGED
@@ -1,22 +1,30 @@
1
1
  import { default as t } from "./components/Button/Button.js";
2
2
  import { default as a } from "./components/ErrorBoundary/ErrorBoundary.js";
3
- import { Grid as s } from "./components/Grid/Grid.js";
4
- import { default as d } from "./components/Header/Header.js";
5
- import { default as p } from "./components/HeroBanner/HeroBanner.js";
6
- import { default as x } from "./components/Input/Input.js";
7
- import { default as n } from "./components/Select/Select.js";
8
- import { default as B } from "./components/ViewingsList/ViewingsList.js";
9
- import { default as H } from "./components/ViewingsList/StatefulViewingsList.js";
10
- import { default as S } from "./pages/Page.js";
3
+ import { default as l } from "./components/Footer/Footer.js";
4
+ import { Grid as u } from "./components/Grid/Grid.js";
5
+ import { default as p } from "./components/Header/Header.js";
6
+ import { default as x } from "./components/HeroBanner/HeroBanner.js";
7
+ import { default as n } from "./components/Input/Input.js";
8
+ import { default as c } from "./components/Select/Select.js";
9
+ import { default as B } from "./components/SplitPanel/SplitPanel.js";
10
+ import { default as w } from "./components/Subscribe/Subscribe.js";
11
+ import { default as L } from "./components/Social/Social.js";
12
+ import { default as V } from "./components/ViewingsList/ViewingsList.js";
13
+ import { default as E } from "./components/ViewingsList/StatefulViewingsList.js";
14
+ import { default as G } from "./pages/Page.js";
11
15
  export {
12
16
  t as Button,
13
17
  a as ErrorBoundary,
14
- s as Grid,
15
- d as Header,
16
- p as HeroBanner,
17
- x as Input,
18
- S as Page,
19
- n as Select,
20
- H as StatefulViewingsList,
21
- B as ViewingsList
18
+ l as Footer,
19
+ u as Grid,
20
+ p as Header,
21
+ x as HeroBanner,
22
+ n as Input,
23
+ G as Page,
24
+ c as Select,
25
+ L as Social,
26
+ B as SplitPanel,
27
+ E as StatefulViewingsList,
28
+ w as Subscribe,
29
+ V as ViewingsList
22
30
  };
@@ -1,4 +1,4 @@
1
- @use './vars' as *;
1
+ @import './vars';
2
2
 
3
3
  @mixin hText($size: $heading-size1, $color: $primary-black, $transform-style: capitalize) {
4
4
  color: $color;
@@ -1,3 +1,5 @@
1
+ @import './vars';
2
+
1
3
  @mixin hidden {
2
4
  block-size: 1px;
3
5
  border: 0;
@@ -70,3 +72,26 @@
70
72
  }
71
73
  }
72
74
  }
75
+
76
+ @mixin media($breakpoint) {
77
+ @if $breakpoint == $sm {
78
+ // $breakpoint2: 961px;
79
+ @media (min-width: $breakpoint2) {
80
+ @content;
81
+ }
82
+ }
83
+
84
+ @if $breakpoint == $md {
85
+ // $breakpoint3: 1401px;
86
+ @media (min-width: $breakpoint3) {
87
+ @content;
88
+ }
89
+ }
90
+
91
+ @if $breakpoint == $lg {
92
+ // $breakpoint4: 1801px;
93
+ @media (min-width: $breakpoint4) {
94
+ @content;
95
+ }
96
+ }
97
+ }
@@ -118,7 +118,7 @@ $body3: 'body3';
118
118
  --label-size3: 0.56rem;
119
119
  }
120
120
 
121
- @media (width >= 1800px) {
121
+ @media (width >= 1801px) {
122
122
  --heading-size0: 4.06rem;
123
123
  --heading-size1: 3.05rem;
124
124
  --heading-size2: 2.44rem;
@@ -179,7 +179,7 @@ $text-badge-label-size: var(--label-size3);
179
179
  --spacing-xl: 4.8rem;
180
180
  }
181
181
 
182
- @media (width >= 1800px) {
182
+ @media (width >= 1801px) {
183
183
  --spacing-micro: 0.31rem;
184
184
  --spacing-xsm: 0.63rem;
185
185
  --spacing-small: 1.25rem;
@@ -219,3 +219,16 @@ $margin-xl: var(--spacing-xl);
219
219
  $breakpoint2: 961px;
220
220
  $breakpoint3: 1401px;
221
221
  $breakpoint4: 1801px;
222
+
223
+ ////////////////////////
224
+ /// max-site-width TOKEN:
225
+ ///////////////////////
226
+ $max-site-width: 1560px;
227
+
228
+ ////////////////////////////
229
+ /// Media breakpoint tokens:
230
+ ///////////////////////////
231
+
232
+ $sm: 'sm';
233
+ $md: 'md';
234
+ $lg: 'lg';
@@ -1,5 +1,6 @@
1
1
  @import '../../vars';
2
- @import '../../_utils';
2
+ @import '../../typography';
3
+ @import '../../utils';
3
4
 
4
5
  .#{$px}-button {
5
6
  @include bodyText;
@@ -12,8 +13,8 @@
12
13
  cursor: pointer;
13
14
  display: inline-flex;
14
15
  justify-content: center;
15
- min-width: 9rem;
16
- padding: 0.5em 1.75em;
16
+ min-width: 3rem;
17
+ padding: 0.5em $spacing-medium;
17
18
  transition:
18
19
  color 0.25s,
19
20
  background-color 0.25s,
@@ -0,0 +1,96 @@
1
+ @import '../../vars';
2
+ @import '../../utils';
3
+ @import '../../type';
4
+ @import '../../typography';
5
+
6
+ .#{$px}-footer {
7
+ background-color: $off-white;
8
+ border-top: 1px solid $keyline-gray;
9
+ width: 100%;
10
+
11
+ ul {
12
+ list-style: none;
13
+ padding: 0;
14
+ }
15
+
16
+ &__navigation {
17
+ background-color: $white;
18
+ padding: $spacing-medium $spacing-medium $spacing-small;
19
+ text-align: right;
20
+
21
+ @include media('md') {
22
+ padding: $spacing-medium $spacing-large $spacing-small;
23
+ }
24
+
25
+ @include media('lg') {
26
+ padding: $spacing-medium $spacing-xl $spacing-small;
27
+ }
28
+
29
+ ul {
30
+ display: inline-flex;
31
+ flex-wrap: wrap;
32
+ gap: $spacing-medium;
33
+ justify-content: center;
34
+ list-style: none;
35
+ padding: 0;
36
+ }
37
+
38
+ a,
39
+ button {
40
+ @include text('cta-sm');
41
+ @include bodyText;
42
+
43
+ cursor: pointer;
44
+ }
45
+ }
46
+
47
+ &__content {
48
+ align-items: center;
49
+ display: flex;
50
+ flex-direction: column;
51
+ padding: $spacing-large $spacing-medium 0;
52
+
53
+ @include media('sm') {
54
+ align-items: flex-start;
55
+ flex-direction: row;
56
+ justify-content: space-between;
57
+ }
58
+
59
+ @include media('md') {
60
+ padding: 3.75rem $spacing-large;
61
+ }
62
+
63
+ @include media('lg') {
64
+ padding: 3.75rem $spacing-xl;
65
+ }
66
+ }
67
+
68
+ &__content-split-panel__left {
69
+ margin-bottom: $spacing-medium;
70
+
71
+ @include media('sm') {
72
+ margin-bottom: 0;
73
+ }
74
+ }
75
+
76
+ &__content-split-panel__right {
77
+ display: flex;
78
+
79
+ @include media('sm') {
80
+ justify-content: flex-end;
81
+ }
82
+ }
83
+
84
+ &__copyright {
85
+ @include text($body3);
86
+
87
+ align-items: center;
88
+ background-color: $white;
89
+ display: flex;
90
+
91
+ // font-size: 0.875rem;
92
+ // height: 2.125rem;
93
+ justify-content: center;
94
+ padding: $spacing-xsm 0;
95
+ }
96
+ }
@@ -1,5 +1,5 @@
1
1
  @import '../../vars';
2
- @import '../../_utils';
2
+ @import '../../utils';
3
3
 
4
4
  .#{$px}-grid {
5
5
  &__container {
@@ -1,5 +1,5 @@
1
1
  @import '../../vars';
2
- @import '../../_utils';
2
+ @import '../../utils';
3
3
 
4
4
  $md: #{$px}-input--md;
5
5
  $lg: #{$px}-input--lg;
@@ -0,0 +1,40 @@
1
+ @import '../../vars';
2
+ @import '../../utils';
3
+ @import '../../type';
4
+
5
+ .#{$px}-social {
6
+ align-items: center;
7
+ display: inline-flex;
8
+ flex-direction: column;
9
+
10
+ @include media('sm') {
11
+ align-items: flex-end;
12
+ }
13
+
14
+ &__header {
15
+ @include text($heading3);
16
+
17
+ margin-bottom: $spacing-xsm;
18
+ }
19
+
20
+ ul {
21
+ align-items: center;
22
+ display: flex;
23
+ gap: 0 1.25rem;
24
+ list-style: none;
25
+ margin: 0 0 $spacing-medium;
26
+ padding: 0;
27
+
28
+ @include media('sm') {
29
+ gap: 0 1rem;
30
+ }
31
+
32
+ li {
33
+ cursor: pointer;
34
+ }
35
+ }
36
+
37
+ a {
38
+ display: inline-block;
39
+ }
40
+ }
@@ -0,0 +1,39 @@
1
+ @import '../../vars';
2
+ @import '../../utils';
3
+
4
+ .#{$px}-split-panel {
5
+ align-items: center;
6
+ display: flex;
7
+ flex-direction: column;
8
+ gap: $spacing-medium;
9
+
10
+ &:not(.#{$px}-split-panel--borderless) {
11
+ padding: 2.5rem $spacing-medium;
12
+ }
13
+
14
+ > * {
15
+ flex: 1 1 0px;
16
+ }
17
+
18
+ @include media('sm') {
19
+ align-items: stretch;
20
+ flex-direction: row;
21
+
22
+ & > :first-child,
23
+ & > :last-child {
24
+ width: 50%;
25
+ }
26
+
27
+ & > :not(:last-child) {
28
+ border-right: 1px solid $medium-gray;
29
+ padding-right: $spacing-medium;
30
+ }
31
+
32
+ &--borderless {
33
+ & > :not(:last-child) {
34
+ border-right: none;
35
+ padding-right: 0;
36
+ }
37
+ }
38
+ }
39
+ }
@@ -0,0 +1,18 @@
1
+ @import '../../vars';
2
+
3
+ .split-panel-story {
4
+ background-color: #f4f2f1;
5
+
6
+ &__text {
7
+ font-family: Montserrat, serif;
8
+ font-size: 0.75rem;
9
+ font-style: normal;
10
+ font-weight: 400;
11
+ letter-spacing: 0.0625rem;
12
+ line-height: 1.125rem; /* 150% */
13
+ }
14
+
15
+ & .split-panel-story__text:not(:last-child) {
16
+ margin-bottom: $spacing-medium;
17
+ }
18
+ }
@@ -0,0 +1,37 @@
1
+ @import '../../vars';
2
+ @import '../../utils';
3
+ @import '../../type';
4
+ @import '../../typography';
5
+
6
+ .#{$px}-subscribe {
7
+ max-width: 30rem;
8
+
9
+ &__title {
10
+ @include text($heading3);
11
+
12
+ margin-bottom: $spacing-xsm;
13
+ text-align: center;
14
+ }
15
+
16
+ &__blurb {
17
+ @include text($body2);
18
+
19
+ text-align: center;
20
+ }
21
+
22
+ @include media('sm') {
23
+ &__title,
24
+ &__blurb {
25
+ text-align: left;
26
+ }
27
+ }
28
+
29
+ &__blurb,
30
+ .#{$px}-input__input {
31
+ margin-bottom: $spacing-medium;
32
+ }
33
+
34
+ &__button {
35
+ margin: 0 0 $spacing-medium;
36
+ }
37
+ }
@@ -1,5 +1,5 @@
1
1
  @import '../../vars';
2
- @import '../../_utils';
2
+ @import '../../utils';
3
3
 
4
4
  $toggleBaseWidth: 3rem;
5
5
  $inline: #{$px}-input--inline;
@@ -1,5 +1,5 @@
1
1
  @import '../../vars';
2
- @import '../../_utils';
2
+ @import '../../utils';
3
3
  @import '../../typography';
4
4
 
5
5
  .#{$px}-viewings-list {
@@ -2,6 +2,7 @@
2
2
  @import './vars';
3
3
 
4
4
  // @TODO: add styles when we can do a site wide regressions QA
5
+
5
6
  // @use 'reset';
6
7
  @import './typography';
7
8
 
@@ -9,12 +10,16 @@
9
10
  @import 'components/Button/button';
10
11
 
11
12
  // @import 'components/DatePicker/datePicker';
13
+ @import 'components/Footer/footer';
14
+ @import 'components/Grid/grid';
12
15
  @import 'components/Header/header';
13
16
  @import 'components/HeroBanner/heroBanner';
14
17
  @import 'components/Input/input';
18
+ @import 'components/Social/social';
19
+ @import 'components/SplitPanel/splitPanel';
20
+ @import 'components/Subscribe/subscribe';
15
21
  @import 'components/Toggle/toggle';
16
22
  @import 'components/ViewingsList/viewingsList';
17
- @import 'components/Grid/grid';
18
23
 
19
24
  // 📑 Pages
20
25
  @import 'pages/page';
@@ -64,4 +64,5 @@ interface NormalizedProps {
64
64
 
65
65
  */
66
66
  export declare function useNormalizedInputProps({ disabled, id, invalid, invalidText, readOnly, type, warn, warnText, }: InputProps): NormalizedProps;
67
+ export declare const defaultYear: number;
67
68
  export {};
@@ -1,27 +1,29 @@
1
- import { jsx as s } from "react/jsx-runtime";
1
+ import { jsx as d } from "react/jsx-runtime";
2
2
  const n = "phillips";
3
3
  function c({
4
4
  disabled: l = !1,
5
- id: r,
6
- invalid: d = !1,
7
- invalidText: t = "invalid",
8
- readOnly: o = !1,
5
+ id: o,
6
+ invalid: t = !1,
7
+ invalidText: e = "invalid",
8
+ readOnly: r = !1,
9
9
  type: a,
10
- warn: v = !1,
11
- warnText: e
10
+ warn: s = !1,
11
+ warnText: v
12
12
  }) {
13
13
  const i = {
14
- disabled: !o && l,
15
- invalid: !o && !l && d,
16
- invalidId: `${r}-error-msg`,
14
+ disabled: !r && l,
15
+ invalid: !r && !l && t,
16
+ invalidId: `${o}-error-msg`,
17
17
  type: a === "toggle" ? "checkbox" : a,
18
- warn: !o && !l && !d && v,
19
- warnId: `${r}-warn-msg`,
18
+ warn: !r && !l && !t && s,
19
+ warnId: `${o}-warn-msg`,
20
20
  validation: null
21
21
  };
22
- return i.invalid && (i.validation = /* @__PURE__ */ s("div", { className: `${n}-input__validation ${n}-${a}-input--invalid`, id: i.invalidId, children: t })), i.warn && (i.validation = /* @__PURE__ */ s("div", { className: `${n}-input__validation ${n}-${a}-input--warn`, id: i.warnId, children: e })), i;
22
+ return i.invalid && (i.validation = /* @__PURE__ */ d("div", { className: `${n}-input__validation ${n}-${a}-input--invalid`, id: i.invalidId, children: e })), i.warn && (i.validation = /* @__PURE__ */ d("div", { className: `${n}-input__validation ${n}-${a}-input--warn`, id: i.warnId, children: v })), i;
23
23
  }
24
+ const p = (/* @__PURE__ */ new Date()).getFullYear();
24
25
  export {
26
+ p as defaultYear,
25
27
  n as px,
26
28
  c as useNormalizedInputProps
27
29
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@phillips/seldon",
3
- "version": "1.17.5",
3
+ "version": "1.18.0",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/PhillipsAuctionHouse/seldon"
@@ -51,48 +51,49 @@
51
51
  "@semantic-release/github": "^10.0.3",
52
52
  "@storybook/addon-essentials": "^7.6.18",
53
53
  "@storybook/addon-interactions": "^7.0.22",
54
- "@storybook/addon-links": "^7.0.22",
55
- "@storybook/addon-styling": "^1.3.0",
54
+ "@storybook/addon-links": "^7.6.18",
55
+ "@storybook/addon-styling": "^1.3.7",
56
56
  "@storybook/blocks": "^7.0.22",
57
57
  "@storybook/react": "^7.0.22",
58
58
  "@storybook/react-vite": "^7.6.18",
59
59
  "@testing-library/jest-dom": "^5.17.0",
60
60
  "@testing-library/react": "^14.0.0",
61
- "@testing-library/user-event": "^14.5.1",
62
- "@types/color": "^3.0.3",
61
+ "@testing-library/user-event": "^14.5.2",
62
+ "@types/color": "^3.0.6",
63
63
  "@types/jest": "^29.5.3",
64
- "@types/react": "^18.3.0",
64
+ "@types/react": "^18.3.1",
65
65
  "@types/react-dom": "^18.0.11",
66
66
  "@typescript-eslint/eslint-plugin": "^5.59.0",
67
67
  "@typescript-eslint/parser": "^5.59.0",
68
68
  "@vitejs/plugin-react": "^4.0.0",
69
69
  "color": "^4.2.3",
70
70
  "eslint": "^8.38.0",
71
- "eslint-plugin-react-hooks": "^4.6.0",
72
- "eslint-plugin-react-refresh": "^0.3.4",
73
- "eslint-plugin-storybook": "^0.6.12",
71
+ "eslint-plugin-react-hooks": "^4.6.2",
72
+ "eslint-plugin-react-refresh": "^0.4.6",
73
+ "eslint-plugin-storybook": "^0.8.0",
74
74
  "husky": "^9.0.11",
75
75
  "jest": "^29.6.1",
76
76
  "jest-environment-jsdom": "^29.6.1",
77
77
  "prettier": "3.0.3",
78
78
  "prop-types": "^15.8.1",
79
- "rimraf": "^5.0.1",
80
- "rollup-plugin-copy": "^3.4.0",
79
+ "rimraf": "^5.0.5",
80
+ "rollup-plugin-copy": "^3.5.0",
81
81
  "rollup-plugin-peer-deps-external": "^2.2.4",
82
82
  "sass": "^1.75.0",
83
83
  "semantic-release": "^21.0.5",
84
84
  "storybook": "^7.6.18",
85
- "stylelint": "^16.3.1",
85
+ "stylelint": "^16.4.0",
86
86
  "stylelint-config-standard": "^36.0.0",
87
87
  "stylelint-config-standard-scss": "^13.1.0",
88
88
  "stylelint-order": "^6.0.4",
89
89
  "stylelint-scss": "^6.2.1",
90
- "ts-jest": "^29.1.1",
91
- "ts-node": "^10.9.1",
90
+ "ts-jest": "^29.1.2",
91
+ "ts-node": "^10.9.2",
92
92
  "typescript": "^5.0.2",
93
93
  "vite": "^4.5.3",
94
94
  "vite-plugin-dts": "^2.3.0",
95
- "vite-plugin-svgr": "^4.2.0"
95
+ "vite-plugin-svgr": "^4.2.0",
96
+ "vite-tsconfig-paths": "^4.3.2"
96
97
  },
97
98
  "peerDependencies": {
98
99
  "react": "^18.3.1",