@phillips/seldon 1.92.0 → 1.93.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 (42) hide show
  1. package/dist/assets/PhillipsLogo.svg.js +2 -2
  2. package/dist/assets/favorite.svg.js +5 -0
  3. package/dist/assets/icons.d.ts +1 -0
  4. package/dist/components/Countdown/Countdown.d.ts +4 -0
  5. package/dist/components/Countdown/Countdown.js +54 -42
  6. package/dist/components/Countdown/Duration.d.ts +2 -1
  7. package/dist/components/Countdown/Duration.js +7 -8
  8. package/dist/components/Detail/Detail.d.ts +2 -0
  9. package/dist/components/Detail/Detail.js +19 -13
  10. package/dist/components/Detail/Detail.stories.d.ts +1 -0
  11. package/dist/components/SeldonImage/SeldonImage.js +27 -26
  12. package/dist/index.d.ts +3 -0
  13. package/dist/index.js +199 -190
  14. package/dist/patterns/BidSnapshot/BidMessage.d.ts +27 -0
  15. package/dist/patterns/BidSnapshot/BidMessage.js +22 -0
  16. package/dist/patterns/BidSnapshot/BidMessage.test.d.ts +1 -0
  17. package/dist/patterns/BidSnapshot/BidSnapshot.d.ts +67 -0
  18. package/dist/patterns/BidSnapshot/BidSnapshot.js +61 -0
  19. package/dist/patterns/BidSnapshot/BidSnapshot.stories.d.ts +27 -0
  20. package/dist/patterns/BidSnapshot/BidSnapshot.test.d.ts +1 -0
  21. package/dist/patterns/BidSnapshot/index.d.ts +2 -0
  22. package/dist/patterns/BidSnapshot/types.d.ts +4 -0
  23. package/dist/patterns/BidSnapshot/types.js +4 -0
  24. package/dist/patterns/ObjectTile/ObjectTile.d.ts +69 -0
  25. package/dist/patterns/ObjectTile/ObjectTile.js +94 -0
  26. package/dist/patterns/ObjectTile/ObjectTile.stories.d.ts +41 -0
  27. package/dist/patterns/ObjectTile/ObjectTile.test.d.ts +1 -0
  28. package/dist/patterns/ObjectTile/index.d.ts +1 -0
  29. package/dist/patterns/SaleHeaderBanner/SaleHeaderBanner.d.ts +2 -2
  30. package/dist/patterns/SaleHeaderBanner/SaleHeaderBanner.js +17 -17
  31. package/dist/patterns/SaleHeaderBanner/SaleHeaderBanner.stories.d.ts +3 -3
  32. package/dist/scss/_vars.scss +5 -1
  33. package/dist/scss/componentStyles.scss +2 -0
  34. package/dist/scss/components/Countdown/_countdown.scss +8 -0
  35. package/dist/scss/components/Countdown/_duration.scss +5 -4
  36. package/dist/scss/components/Detail/_detail.scss +20 -0
  37. package/dist/scss/components/SeldonImage/_seldonImage.scss +12 -4
  38. package/dist/scss/patterns/BidSnapshot/_bidSnapshot.scss +48 -0
  39. package/dist/scss/patterns/ObjectTile/_objectTile.scss +61 -0
  40. package/dist/types/commonTypes.d.ts +5 -0
  41. package/dist/types/commonTypes.js +2 -1
  42. package/package.json +1 -1
@@ -0,0 +1,4 @@
1
+ var r = /* @__PURE__ */ ((e) => (e.positive = "POSITIVE", e.negative = "NEGATIVE", e))(r || {});
2
+ export {
3
+ r as BidMessageVariants
4
+ };
@@ -0,0 +1,69 @@
1
+ import { ComponentProps, ElementType } from 'react';
2
+ type ObjectTileElement = ElementType<Omit<ObjectTileProps, 'imageUrl' | 'lotNumber' | 'referenceNumber'> & {
3
+ 'data-testid': string;
4
+ }>;
5
+ export interface ObjectTileProps extends ComponentProps<'a'> {
6
+ /**
7
+ * Optional Object badge.
8
+ */
9
+ badgeText?: string;
10
+ /**
11
+ * Optional Element to render at the top level.
12
+ */
13
+ element?: ObjectTileElement;
14
+ /**
15
+ * Estimate for object.
16
+ */
17
+ estimate?: string;
18
+ /**
19
+ * Estimate label text.
20
+ */
21
+ estimateLabelText?: string;
22
+ /**
23
+ * Element used for favoriting object
24
+ */
25
+ favoriteElement?: React.ElementType;
26
+ /**
27
+ * Image alt text for the object.
28
+ */
29
+ imageAlt?: string;
30
+ /**
31
+ * Image URL for the object.
32
+ */
33
+ imageUrl?: string;
34
+ /**
35
+ * Object Lot number.
36
+ */
37
+ lotNumber: string;
38
+ /**
39
+ * Object Maker name.
40
+ */
41
+ makerText?: string;
42
+ /**
43
+ * Object Model text.
44
+ */
45
+ modelText?: string;
46
+ /**
47
+ * Object reference number.
48
+ */
49
+ referenceNumber?: string;
50
+ /**
51
+ * Object title.
52
+ */
53
+ titleText?: string;
54
+ /**
55
+ * Withdrawn Text
56
+ */
57
+ withdrawnText?: string;
58
+ }
59
+ /**
60
+ * ## Overview
61
+ *
62
+ * The ObjectTile component is used to display an object tile with an image, title, and other information in a grid
63
+ *
64
+ * [Figma Link](https://www.figma.com/design/hMu9IWH5N3KamJy8tLFdyV/EASEL-Compendium%3A-Tokens%2C-Components-%26-Patterns?node-id=10914-34792&node-type=canvas&m=dev)
65
+ *
66
+ * [Storybook Link](https://phillips-seldon.netlify.app//?path=/story/patterns-objecttile--playground)
67
+ */
68
+ declare const ObjectTile: import('react').ForwardRefExoticComponent<Omit<ObjectTileProps, "ref"> & import('react').RefAttributes<HTMLAnchorElement>>;
69
+ export default ObjectTile;
@@ -0,0 +1,94 @@
1
+ import { jsxs as s, jsx as e, Fragment as x } from "react/jsx-runtime";
2
+ import { forwardRef as y } from "react";
3
+ import C from "../../node_modules/classnames/index.js";
4
+ import { getCommonProps as O } from "../../utils/index.js";
5
+ import { TextVariants as l } from "../../components/Text/types.js";
6
+ import i from "../../components/Text/Text.js";
7
+ import P from "../DetailList/DetailList.js";
8
+ import D from "../../components/Detail/Detail.js";
9
+ import R from "../../components/SeldonImage/SeldonImage.js";
10
+ const S = y(
11
+ ({
12
+ badgeText: f,
13
+ className: p,
14
+ children: $,
15
+ element: r,
16
+ estimate: m,
17
+ estimateLabelText: N = "Estimate",
18
+ favoriteElement: o,
19
+ imageAlt: u = "Brought to you by Phillips",
20
+ imageUrl: g = "",
21
+ lotNumber: v,
22
+ makerText: c,
23
+ modelText: _,
24
+ referenceNumber: d,
25
+ titleText: h,
26
+ withdrawnText: n,
27
+ ...t
28
+ }, b) => {
29
+ const { className: a, ...j } = O(t, "ObjectTile"), k = r != null ? r : t.href ? "a" : "div";
30
+ return /* @__PURE__ */ s(k, { ...j, className: C(a, p), ...t, ref: b, children: [
31
+ /* @__PURE__ */ e(
32
+ R,
33
+ {
34
+ alt: u,
35
+ aspectRatio: "1/1",
36
+ className: `${a}__img`,
37
+ objectFit: "cover",
38
+ src: g
39
+ }
40
+ ),
41
+ n ? null : /* @__PURE__ */ e(i, { className: `${a}__badge`, variant: l.badge, children: f }),
42
+ /* @__PURE__ */ s("div", { className: `${a}__lot-number-like`, children: [
43
+ /* @__PURE__ */ e(i, { className: `${a}__lot-number`, variant: l.heading3, element: "p", children: v }),
44
+ o && /* @__PURE__ */ e(o, {})
45
+ ] }),
46
+ n ? /* @__PURE__ */ e(i, { className: `${a}__withdrawn`, variant: l.heading4, children: n }) : /* @__PURE__ */ s(x, { children: [
47
+ /* @__PURE__ */ s("div", { className: `${a}__meta`, children: [
48
+ c ? /* @__PURE__ */ e(i, { className: `${a}__maker`, variant: l.heading3, children: c }) : null,
49
+ h ? /* @__PURE__ */ e(
50
+ i,
51
+ {
52
+ className: `${a}__title ${a}__token-fix`,
53
+ variant: l.heading4,
54
+ element: "cite",
55
+ children: h
56
+ }
57
+ ) : null,
58
+ d ? /* @__PURE__ */ e(
59
+ i,
60
+ {
61
+ className: `${a}__reference-number ${a}__token-fix`,
62
+ variant: l.heading4,
63
+ element: "p",
64
+ children: d
65
+ }
66
+ ) : null,
67
+ _ ? /* @__PURE__ */ e(
68
+ i,
69
+ {
70
+ className: `${a}__model ${a}__token-fix`,
71
+ variant: l.heading4,
72
+ element: "p",
73
+ children: _
74
+ }
75
+ ) : null
76
+ ] }),
77
+ m ? /* @__PURE__ */ e(P, { hasSeparators: !0, className: `${a}__estimate ${a}__section`, children: /* @__PURE__ */ e(
78
+ D,
79
+ {
80
+ className: `${a}__estimate__label`,
81
+ label: N,
82
+ value: m,
83
+ hasWrap: !1
84
+ }
85
+ ) }) : null,
86
+ /* @__PURE__ */ e("div", { className: `${a}__section`, children: $ })
87
+ ] })
88
+ ] });
89
+ }
90
+ );
91
+ S.displayName = "ObjectTile";
92
+ export {
93
+ S as default
94
+ };
@@ -0,0 +1,41 @@
1
+ import { ObjectTileProps } from './ObjectTile';
2
+ declare const meta: {
3
+ title: string;
4
+ component: import('react').ForwardRefExoticComponent<Omit<ObjectTileProps, "ref"> & import('react').RefAttributes<HTMLAnchorElement>>;
5
+ };
6
+ export default meta;
7
+ export declare const NoImage: {
8
+ (props: ObjectTileProps): import("react/jsx-runtime").JSX.Element;
9
+ args: {
10
+ badgeText: string;
11
+ favoriteElement: () => import("react/jsx-runtime").JSX.Element;
12
+ estimate: string;
13
+ element: string;
14
+ children: import("react/jsx-runtime").JSX.Element;
15
+ href: string;
16
+ imageUrl: string;
17
+ lotNumber: string;
18
+ makerText: string;
19
+ titleText: string;
20
+ referenceNumber: string;
21
+ modelText: string;
22
+ };
23
+ };
24
+ export declare const Playground: {
25
+ (props: ObjectTileProps): import("react/jsx-runtime").JSX.Element;
26
+ args: {
27
+ badgeText: string;
28
+ favoriteElement: () => import("react/jsx-runtime").JSX.Element;
29
+ estimate: string;
30
+ element: string;
31
+ children: import("react/jsx-runtime").JSX.Element;
32
+ href: string;
33
+ imageUrl: string;
34
+ lotNumber: string;
35
+ makerText: string;
36
+ titleText: string;
37
+ referenceNumber: string;
38
+ modelText: string;
39
+ };
40
+ argTypes: {};
41
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export { default as ObjectTile, type ObjectTileProps } from './ObjectTile';
@@ -1,5 +1,5 @@
1
1
  import { ComponentProps } from 'react';
2
- import { AuctionState } from './types';
2
+ import { AuctionStatus } from '../../types/commonTypes';
3
3
  export interface SaleHeaderBannerProps extends ComponentProps<'div'> {
4
4
  /**
5
5
  * What is the title of the auction?
@@ -26,7 +26,7 @@ export interface SaleHeaderBannerProps extends ComponentProps<'div'> {
26
26
  /**
27
27
  * What is the current state of the auction?
28
28
  */
29
- auctionState: AuctionState;
29
+ auctionState: AuctionStatus;
30
30
  /**
31
31
  * What text should the CTA button display?
32
32
  */
@@ -3,25 +3,25 @@ import { forwardRef as S } from "react";
3
3
  import { getCommonProps as u } from "../../utils/index.js";
4
4
  import C from "../../node_modules/classnames/index.js";
5
5
  import j from "../../components/SeldonImage/SeldonImage.js";
6
- import { AuctionState as _ } from "./types.js";
6
+ import { AuctionStatus as _ } from "../../types/commonTypes.js";
7
7
  import { TextVariants as s } from "../../components/Text/types.js";
8
8
  import t from "../../components/Text/Text.js";
9
- import F from "../../components/PageContentWrapper/PageContentWrapper.js";
10
- import H from "../../components/Button/Button.js";
11
- const P = S(
9
+ import H from "../../components/PageContentWrapper/PageContentWrapper.js";
10
+ import P from "../../components/Button/Button.js";
11
+ const R = S(
12
12
  ({
13
13
  auctionTitle: o,
14
14
  imageSrcUrl: f,
15
- location: g,
15
+ location: N,
16
16
  auctionState: n,
17
- occurrenceInformation: N,
18
- ctaLabel: h = "Register to Bid",
19
- onClick: v,
17
+ occurrenceInformation: g,
18
+ ctaLabel: v = "Register to Bid",
19
+ onClick: h,
20
20
  children: m,
21
21
  className: $,
22
22
  ...i
23
23
  }, c) => {
24
- const { className: a, ...l } = u(i, "SaleHeaderBanner"), B = n === _.openForBidding, d = n === _.past;
24
+ const { className: a, ...l } = u(i, "SaleHeaderBanner"), x = n === _.live, d = n === _.past;
25
25
  return /* @__PURE__ */ r("div", { ...l, className: C(a, $), ...i, ref: c, children: [
26
26
  /* @__PURE__ */ e(
27
27
  j,
@@ -33,23 +33,23 @@ const P = S(
33
33
  className: `${a}__image`
34
34
  }
35
35
  ),
36
- /* @__PURE__ */ e(F, { className: `${a}__stack-wrapper`, ...l, ...i, ref: c, children: /* @__PURE__ */ r("div", { className: `${a}__stack`, children: [
37
- B && m,
36
+ /* @__PURE__ */ e(H, { className: `${a}__stack-wrapper`, ...l, ...i, ref: c, children: /* @__PURE__ */ r("div", { className: `${a}__stack`, children: [
37
+ x && m,
38
38
  /* @__PURE__ */ e(t, { variant: s.title1, children: o }),
39
- /* @__PURE__ */ e(t, { variant: s.string2, className: `${a}__location`, children: g }),
39
+ /* @__PURE__ */ e(t, { variant: s.string2, className: `${a}__location`, children: N }),
40
40
  /* @__PURE__ */ r("div", { className: `${a}__occurrence-details`, children: [
41
- N.map(({ date: p, occurrenceLabel: x }) => /* @__PURE__ */ r("div", { className: `${a}__occurrence-details-text`, children: [
42
- /* @__PURE__ */ e(t, { variant: s.string2, children: x }),
41
+ g.map(({ date: p, occurrenceLabel: B }) => /* @__PURE__ */ r("div", { className: `${a}__occurrence-details-text`, children: [
42
+ /* @__PURE__ */ e(t, { variant: s.string2, children: B }),
43
43
  /* @__PURE__ */ e(t, { variant: s.string2, className: `${a}__date`, children: p })
44
44
  ] }, String(p))),
45
45
  d && m
46
46
  ] }),
47
- !d && /* @__PURE__ */ e(H, { className: `${a}__cta`, onClick: v, children: h })
47
+ !d && /* @__PURE__ */ e(P, { className: `${a}__cta`, onClick: h, children: v })
48
48
  ] }) })
49
49
  ] });
50
50
  }
51
51
  );
52
- P.displayName = "SaleHeaderBanner";
52
+ R.displayName = "SaleHeaderBanner";
53
53
  export {
54
- P as default
54
+ R as default
55
55
  };
@@ -1,5 +1,5 @@
1
1
  import { SaleHeaderBannerProps } from './SaleHeaderBanner';
2
- import { AuctionState } from './types';
2
+ import { AuctionStatus } from '../../types/commonTypes';
3
3
  declare const meta: {
4
4
  title: string;
5
5
  component: import('react').ForwardRefExoticComponent<Omit<SaleHeaderBannerProps, "ref"> & import('react').RefAttributes<HTMLDivElement>>;
@@ -14,12 +14,12 @@ export declare const Playground: {
14
14
  date: string;
15
15
  }[];
16
16
  location: string;
17
- auctionState: AuctionState;
17
+ auctionState: AuctionStatus;
18
18
  imageSrcUrl: string;
19
19
  };
20
20
  argTypes: {
21
21
  auctionState: {
22
- options: AuctionState[];
22
+ options: AuctionStatus[];
23
23
  control: {
24
24
  type: string;
25
25
  };
@@ -55,6 +55,9 @@ $text-color: $soft-black;
55
55
  // Interactive Colors
56
56
  $button-hover: #75716f;
57
57
 
58
+ // Misc. Colors
59
+ $countdown-compact: #b40919;
60
+
58
61
  ////////////////////////
59
62
  /// FONTS:
60
63
  ///////////////////////
@@ -115,7 +118,8 @@ $breakpoint-xl: 1801px;
115
118
  ////////////////////////
116
119
  /// FONT SIZE TOKENS:
117
120
  ///////////////////////
118
-
121
+ // @TODO: These tokens need to be aligned with the new values from the design system https://www.figma.com/design/hMu9IWH5N3KamJy8tLFdyV/EASEL-Compendium%3A-Tokens%2C-Components-%26-Patterns?node-id=7263-1361&node-type=canvas&m=dev
122
+ // Once we update ObjectTile and other components will need to be updated to match the new token.
119
123
  :root {
120
124
  --desktop-max-width: 120rem;
121
125
  --quote-size: 1.5rem;
@@ -57,3 +57,5 @@
57
57
  @use 'components/PinchZoom/pinchZoom';
58
58
  @use 'components/Tabs/tabs';
59
59
  @use 'components/SeldonImage/seldonImage';
60
+ @use 'patterns/ObjectTile/objectTile';
61
+ @use 'patterns/BidSnapshot/bidSnapshot';
@@ -22,4 +22,12 @@
22
22
  justify-content: center;
23
23
  text-transform: inherit;
24
24
  }
25
+
26
+ &--compact {
27
+ .#{$px}-countdown__countdown-container {
28
+ @include Montserrat;
29
+
30
+ gap: $spacing-xsm;
31
+ }
32
+ }
25
33
  }
@@ -5,9 +5,10 @@
5
5
 
6
6
  display: flex;
7
7
  gap: $spacing-micro;
8
+ }
9
+
10
+ .#{$px}-countdown--compact .#{$px}-duration {
11
+ @include Montserrat;
8
12
 
9
- &--fixed-width {
10
- min-width: 1.75rem;
11
- text-align: right;
12
- }
13
+ color: $countdown-compact;
13
14
  }
@@ -26,6 +26,26 @@
26
26
  @media (max-width: $breakpoint-sm) {
27
27
  width: 96px;
28
28
  }
29
+
30
+ &--no-wrap {
31
+ width: unset;
32
+
33
+ @media (max-width: $breakpoint-lg) {
34
+ width: unset;
35
+ }
36
+
37
+ @media (max-width: $breakpoint-md) {
38
+ width: unset;
39
+ }
40
+
41
+ @media (max-width: $breakpoint-sm) {
42
+ width: unset;
43
+ }
44
+ }
45
+
46
+ span {
47
+ font-variation-settings: 'wght' 400;
48
+ }
29
49
  }
30
50
 
31
51
  &__value {
@@ -17,10 +17,18 @@
17
17
  }
18
18
 
19
19
  &--error {
20
- left: 50%;
21
- position: absolute;
22
- top: 50%;
23
- transform: translate(-50%, -50%);
20
+ width: 100%;
21
+
22
+ .phillips-logo {
23
+ fill: $medium-gray;
24
+ }
25
+
26
+ svg {
27
+ left: 50%;
28
+ position: absolute;
29
+ top: 50%;
30
+ transform: translate(-50%, -50%);
31
+ }
24
32
  }
25
33
 
26
34
  &-img {
@@ -0,0 +1,48 @@
1
+ @use '../../allPartials' as *;
2
+
3
+ .#{$px}-bid-snapshot {
4
+ padding-bottom: $spacing-sm;
5
+ position: relative;
6
+
7
+ &__text .#{$px}-has-separators .#{$px}-detail {
8
+ flex-wrap: wrap;
9
+ gap: 0 $spacing-sm;
10
+ padding-bottom: $spacing-xsm;
11
+ }
12
+
13
+ .#{$px}-countdown {
14
+ align-items: flex-start;
15
+ border-bottom: none;
16
+ padding: 0;
17
+ position: absolute;
18
+ top: calc(100% + $spacing-micro);
19
+ }
20
+
21
+ .#{$px}-countdown__countdown-container,
22
+ .#{$px}-duration {
23
+ @include Montserrat;
24
+ }
25
+
26
+ &--live {
27
+ border-bottom: 1px solid $light-gray;
28
+ }
29
+ &--has-bids .#{$px}-detail__value {
30
+ font-variation-settings: 'wght' 600;
31
+ }
32
+ }
33
+
34
+ .#{$px}-bid-message {
35
+ align-items: center;
36
+ display: flex;
37
+ gap: 6px;
38
+
39
+ // Override the default text style being too specific
40
+ &.#{$px}-bid-message {
41
+ font-variation-settings: 'wght' 600;
42
+ margin-bottom: 0;
43
+ }
44
+
45
+ &__icon {
46
+ font-size: 0.5em;
47
+ }
48
+ }
@@ -0,0 +1,61 @@
1
+ @use '../../allPartials' as *;
2
+
3
+ .#{$px}-object-tile {
4
+ display: flex;
5
+ flex-direction: column;
6
+ max-width: 24.5rem;
7
+
8
+ &__img {
9
+ margin-bottom: $spacing-sm;
10
+ max-width: 100%;
11
+ }
12
+
13
+ &__badge {
14
+ color: $widget-red;
15
+ }
16
+
17
+ &__lot-number-like {
18
+ position: relative;
19
+
20
+ & > :not(.#{$px}-object-tile__lot-number) {
21
+ position: absolute;
22
+ right: 0;
23
+ top: 50%;
24
+ transform: translateY(-50%);
25
+ }
26
+ }
27
+
28
+ & .#{$px}-object-tile__lot-number {
29
+ margin-bottom: $spacing-xsm;
30
+ }
31
+
32
+ & .#{$px}-object-tile__maker,
33
+ & .#{$px}-object-tile__model,
34
+ & .#{$px}-object-tile__reference-number {
35
+ margin-bottom: 0;
36
+ }
37
+
38
+ &__meta {
39
+ margin-bottom: $spacing-sm;
40
+ }
41
+
42
+ & .#{$px}-object-tile__token-fix {
43
+ // @Todo: remove when tokens have been updated. heading 4 should have the font sizes of heading 5
44
+ @include text($heading5);
45
+ }
46
+
47
+ &__withdrawn {
48
+ font-family: $Distinct;
49
+ }
50
+
51
+ &__section {
52
+ .#{$px}-has-separators .#{$px}-detail {
53
+ flex-wrap: wrap;
54
+ gap: 0 $spacing-sm;
55
+
56
+ .#{$px}-detail__value {
57
+ text-align: unset;
58
+ }
59
+ }
60
+ }
61
+ }
@@ -2,3 +2,8 @@ export declare enum SupportedLanguages {
2
2
  en = "en",
3
3
  zh = "zh"
4
4
  }
5
+ export declare enum AuctionStatus {
6
+ ready = "READY",
7
+ live = "LIVE",
8
+ past = "PAST"
9
+ }
@@ -1,4 +1,5 @@
1
- var e = /* @__PURE__ */ ((r) => (r.en = "en", r.zh = "zh", r))(e || {});
1
+ var e = /* @__PURE__ */ ((r) => (r.en = "en", r.zh = "zh", r))(e || {}), v = /* @__PURE__ */ ((r) => (r.ready = "READY", r.live = "LIVE", r.past = "PAST", r))(v || {});
2
2
  export {
3
+ v as AuctionStatus,
3
4
  e as SupportedLanguages
4
5
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@phillips/seldon",
3
- "version": "1.92.0",
3
+ "version": "1.93.0",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/PhillipsAuctionHouse/seldon"