@lockerverse/react 0.2.100 → 0.2.101

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.
package/dist/auctions.css CHANGED
@@ -1,19 +1,27 @@
1
+ @import "./auction-catalog.css";
2
+ @import "./auction-gallery.css";
3
+ @import "./auction-checkout.css";
4
+
5
+ /* Reference: lockerverse-web-app-next auction pages at 8ead019. */
1
6
  .lockerverse-auctions {
2
- --lockerverse-accent: #5751f2;
3
- --lockerverse-bg: #080808;
4
- --lockerverse-border: rgb(255 255 255 / 12%);
5
- --lockerverse-control: #101010;
6
- --lockerverse-muted: rgb(255 255 255 / 66%);
7
- --lockerverse-radius: 10px;
7
+ --lockerverse-accent: #6f8f6d;
8
+ --lockerverse-bg: #050505;
9
+ --lockerverse-border: rgb(255 255 255 / 10%);
10
+ --lockerverse-control: #111216;
11
+ --lockerverse-muted: #bbb7c2;
12
+ --lockerverse-radius: 24px;
8
13
  --lockerverse-text: #fff;
9
14
  --lockerverse-font-family: ui-sans-serif, system-ui, sans-serif;
10
15
  box-sizing: border-box;
11
16
  width: 100%;
12
- padding: clamp(16px, 4%, 24px);
13
- font: 15px / 1.5 var(--lockerverse-font-family);
17
+ max-width: 1520px;
18
+ padding: 40px 32px;
19
+ margin-inline: auto;
20
+ container-type: inline-size;
21
+ font: 14px / 1.5 var(--lockerverse-font-family);
14
22
  color: var(--lockerverse-text);
15
23
  background: var(--lockerverse-bg);
16
- border-radius: var(--lockerverse-radius);
24
+ border-radius: 0;
17
25
  }
18
26
 
19
27
  .lockerverse-auctions[data-lockerverse-theme="light"] {
@@ -45,177 +53,357 @@
45
53
  overflow-wrap: anywhere;
46
54
  white-space: pre-line;
47
55
  }
48
- .lockerverse-auctions__header {
49
- margin-bottom: 24px;
56
+ .lockerverse-auctions button {
57
+ font-family: inherit;
58
+ touch-action: manipulation;
59
+ cursor: pointer;
60
+ }
61
+ .lockerverse-auctions button:hover {
62
+ border-color: var(--lockerverse-text);
63
+ }
64
+ .lockerverse-auctions button:focus-visible,
65
+ .lockerverse-auctions h2:focus-visible {
66
+ outline: 2px solid var(--lockerverse-accent);
67
+ outline-offset: 3px;
50
68
  }
51
- .lockerverse-auctions__grid {
69
+ .lockerverse-auctions__field {
52
70
  display: grid;
53
- grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr));
54
- gap: 20px;
55
- padding: 0;
56
- margin: 0;
57
- list-style: none;
71
+ gap: 8px;
58
72
  }
59
- .lockerverse-auctions__card {
60
- display: flex;
61
- flex-direction: column;
62
- height: 100%;
63
- overflow: hidden;
73
+ .lockerverse-auctions__field input {
74
+ width: 100%;
75
+ min-width: 0;
76
+ min-height: 48px;
77
+ padding: 10px 12px;
78
+ font: inherit;
79
+ font-size: 16px;
80
+ color: var(--lockerverse-text);
64
81
  background: var(--lockerverse-control);
65
82
  border: 1px solid var(--lockerverse-border);
66
83
  border-radius: var(--lockerverse-radius);
67
84
  }
68
- .lockerverse-auctions__image {
69
- display: block;
70
- width: 100%;
71
- height: auto;
72
- aspect-ratio: 1.28;
73
- object-fit: cover;
85
+ .lockerverse-auctions__notice {
86
+ padding: 12px;
87
+ border: 1px solid var(--lockerverse-border);
88
+ border-radius: var(--lockerverse-radius);
74
89
  }
75
- .lockerverse-auctions__body {
76
- display: flex;
77
- flex: 1;
78
- flex-direction: column;
79
- gap: 12px;
80
- padding: 20px;
90
+ .lockerverse-auctions input:focus-visible {
91
+ outline: 2px solid var(--lockerverse-accent);
92
+ outline-offset: 3px;
81
93
  }
82
- .lockerverse-auctions__meta {
83
- font-size: 13px;
84
- color: var(--lockerverse-muted);
94
+ .lockerverse-auctions__detail {
95
+ display: grid;
96
+ grid-template-columns: minmax(360px, 0.9fr) minmax(540px, 1.1fr);
97
+ gap: 32px;
98
+ align-items: start;
99
+ }
100
+ .lockerverse-auctions__item-summary {
101
+ min-width: 0;
102
+ overflow: hidden;
103
+ background: var(--lockerverse-control);
104
+ border: 1px solid var(--lockerverse-border);
105
+ border-radius: 12px;
106
+ }
107
+ .lockerverse-auctions__item-copy {
108
+ padding: 20px 24px;
109
+ border-top: 1px solid var(--lockerverse-border);
110
+ }
111
+ .lockerverse-auctions__item-copy h2 {
112
+ margin-top: 16px;
113
+ font-size: 36px;
114
+ font-weight: 600;
115
+ line-height: 1.12;
116
+ }
117
+ .lockerverse-auctions .lockerverse-auctions__eyebrow {
118
+ margin: 0;
119
+ font-size: 11px;
120
+ font-weight: 500;
121
+ line-height: 1.7;
122
+ text-transform: uppercase;
123
+ letter-spacing: 0.18em;
124
+ }
125
+ .lockerverse-auctions__item-description {
126
+ margin-top: 16px;
127
+ }
128
+ .lockerverse-auctions__description {
129
+ line-height: 2;
130
+ overflow-wrap: anywhere;
131
+ }
132
+ .lockerverse-auctions__description p {
133
+ color: inherit;
134
+ }
135
+ .lockerverse-auctions__description ul {
136
+ padding-left: 20px;
137
+ list-style: disc;
138
+ }
139
+ .lockerverse-auctions__description ol {
140
+ padding-left: 20px;
141
+ list-style: decimal;
142
+ }
143
+ .lockerverse-auctions__description li {
144
+ margin-block: 4px;
145
+ }
146
+ .lockerverse-auctions__description a {
147
+ color: inherit;
148
+ text-decoration: underline;
149
+ }
150
+ .lockerverse-auctions__description blockquote {
151
+ padding-left: 16px;
152
+ margin-inline: 0;
153
+ border-left: 2px solid currentColor;
154
+ }
155
+ .lockerverse-auctions__description pre {
156
+ overflow-x: auto;
157
+ }
158
+ .lockerverse-auctions__description-clamped {
159
+ display: -webkit-box;
160
+ -webkit-box-orient: vertical;
161
+ overflow: hidden;
162
+ -webkit-line-clamp: 4;
163
+ }
164
+ .lockerverse-auctions .lockerverse-auctions__description-toggle {
165
+ min-height: 32px;
166
+ padding: 6px 12px;
167
+ margin-top: 12px;
168
+ font-size: 10px;
169
+ font-weight: 500;
170
+ color: var(--lockerverse-text);
171
+ text-transform: uppercase;
172
+ letter-spacing: 0.14em;
173
+ background: var(--lockerverse-control);
174
+ border: 1px solid var(--lockerverse-border);
175
+ border-radius: 999px;
176
+ }
177
+ .lockerverse-auctions__stat-panel {
178
+ margin: 20px 0 0;
179
+ overflow: hidden;
180
+ background: rgb(0 0 0 / 18%);
181
+ border: 1px solid var(--lockerverse-border);
182
+ border-radius: 24px;
85
183
  }
86
- .lockerverse-auctions__metrics {
184
+ .lockerverse-auctions__stat-row {
87
185
  display: flex;
88
- flex-wrap: wrap;
89
186
  gap: 16px;
90
- margin: 0 0 4px;
187
+ align-items: center;
188
+ justify-content: space-between;
189
+ padding: 16px 24px;
190
+ border-bottom: 1px solid var(--lockerverse-border);
191
+ }
192
+ .lockerverse-auctions__stat-row:last-child {
193
+ border-bottom: 0;
91
194
  }
92
- .lockerverse-auctions__metrics dt {
93
- font-size: 13px;
195
+ .lockerverse-auctions__stat-panel dt {
196
+ font-size: 11px;
197
+ font-weight: 500;
94
198
  color: var(--lockerverse-muted);
199
+ text-transform: uppercase;
200
+ letter-spacing: 0.12em;
95
201
  }
96
- .lockerverse-auctions__metrics dd {
202
+ .lockerverse-auctions__stat-panel dd {
97
203
  margin: 0;
98
- font-size: 18px;
99
- font-weight: 600;
204
+ font-size: 20px;
205
+ font-weight: 500;
100
206
  font-variant-numeric: tabular-nums;
207
+ text-align: right;
101
208
  }
102
- .lockerverse-auctions button {
103
- min-height: 44px;
104
- padding: 10px 16px;
105
- font: inherit;
106
- font-weight: 600;
107
- color: var(--lockerverse-text);
108
- touch-action: manipulation;
109
- cursor: pointer;
110
- background: var(--lockerverse-control);
111
- border: 1px solid var(--lockerverse-border);
112
- border-radius: var(--lockerverse-radius);
209
+ .lockerverse-auctions__stat-panel .lockerverse-auctions__stat-date {
210
+ font-size: 15px;
113
211
  }
114
- .lockerverse-auctions button:hover {
115
- border-color: var(--lockerverse-text);
212
+ .lockerverse-auctions__stat-footer {
213
+ display: grid;
214
+ grid-template-columns: 1fr 1fr;
116
215
  }
117
- .lockerverse-auctions button:focus-visible,
118
- .lockerverse-auctions h2:focus-visible {
119
- outline: 2px solid var(--lockerverse-accent);
120
- outline-offset: 3px;
216
+ .lockerverse-auctions__stat-footer > div {
217
+ padding: 12px 24px;
121
218
  }
122
- .lockerverse-auctions__body > button {
123
- width: 100%;
124
- margin-top: auto;
219
+ .lockerverse-auctions__stat-footer > div + div {
220
+ border-left: 1px solid var(--lockerverse-border);
125
221
  }
126
- .lockerverse-auctions__back {
127
- margin-bottom: 20px;
222
+ .lockerverse-auctions__stat-footer dd {
223
+ margin-top: 4px;
224
+ font-size: 14px;
225
+ text-align: left;
128
226
  }
129
-
130
- .lockerverse-auctions__detail {
227
+ .lockerverse-auctions__transaction {
131
228
  display: grid;
132
- grid-template-columns: repeat(2, minmax(0, 1fr));
133
- gap: 32px;
229
+ gap: 24px;
230
+ min-width: 0;
134
231
  }
135
- .lockerverse-auctions__gallery {
232
+ .lockerverse-auctions__progress {
136
233
  display: flex;
234
+ flex-wrap: wrap;
137
235
  gap: 8px;
138
- min-width: 0;
139
- padding: 0;
236
+ padding: 24px;
237
+ background: rgb(128 128 128 / 4%);
238
+ border: 1px solid var(--lockerverse-border);
239
+ border-radius: 28px;
240
+ }
241
+ .lockerverse-auctions__progress span {
242
+ padding: 10px 16px;
243
+ font-size: 14px;
244
+ font-weight: 500;
245
+ border: 1px solid var(--lockerverse-border);
246
+ border-radius: 999px;
247
+ }
248
+ .lockerverse-auctions__selection {
249
+ overflow: hidden;
250
+ background: var(--lockerverse-control);
251
+ border: 1px solid var(--lockerverse-border);
252
+ border-radius: 32px;
253
+ box-shadow: 0 30px 90px rgb(0 0 0 / 20%);
254
+ }
255
+ .lockerverse-auctions__selection-header,
256
+ .lockerverse-auctions__selection-body {
257
+ padding: 28px;
258
+ }
259
+ .lockerverse-auctions__selection-header {
260
+ border-bottom: 1px solid var(--lockerverse-border);
261
+ }
262
+ .lockerverse-auctions__selection h3 {
140
263
  margin-top: 12px;
141
- overflow-x: auto;
142
- border: 0;
264
+ font-size: 30px;
265
+ font-weight: 600;
266
+ letter-spacing: -0.04em;
143
267
  }
144
- .lockerverse-auctions__gallery button {
145
- padding: 2px;
146
- cursor: pointer;
147
- background: none;
148
- border: 2px solid transparent;
149
- border-radius: 4px;
268
+ .lockerverse-auctions__selection p {
269
+ margin-top: 12px;
270
+ font-size: 14px;
271
+ line-height: 2;
150
272
  }
151
- .lockerverse-auctions__gallery button[aria-pressed="true"] {
152
- border-color: var(--lockerverse-accent);
273
+ .lockerverse-auctions__selection strong {
274
+ color: var(--lockerverse-text);
153
275
  }
154
- .lockerverse-auctions__gallery img {
276
+ .lockerverse-auctions__amount-control {
277
+ position: relative;
155
278
  display: block;
156
- object-fit: cover;
157
279
  }
158
- .lockerverse-auctions__checkout {
159
- display: grid;
160
- gap: 16px;
161
- padding: 24px;
162
- border: 1px solid var(--lockerverse-border);
163
- border-radius: var(--lockerverse-radius);
280
+ .lockerverse-auctions__amount-control > span {
281
+ position: absolute;
282
+ top: 50%;
283
+ left: 20px;
284
+ font-size: 24px;
285
+ color: var(--lockerverse-muted);
286
+ transform: translateY(-50%);
164
287
  }
165
- .lockerverse-auctions__checkout fieldset {
166
- display: grid;
167
- gap: 16px;
168
- min-width: 0;
169
- padding: 0;
170
- margin: 0;
171
- border: 0;
288
+ .lockerverse-auctions__amount-control input {
289
+ height: 78px;
290
+ padding-left: 24px;
291
+ font-size: 36px;
292
+ font-weight: 600;
293
+ letter-spacing: -0.05em;
294
+ background: rgb(0 0 0 / 25%);
295
+ border-radius: 24px;
172
296
  }
173
- .lockerverse-auctions__checkout h4 {
174
- margin: 4px 0 0;
297
+ .lockerverse-auctions__amount-control > span + input {
298
+ padding-left: 48px;
175
299
  }
176
- .lockerverse-auctions__field {
177
- display: grid;
178
- gap: 8px;
300
+ .lockerverse-auctions__selection-footer {
301
+ display: flex;
302
+ flex-wrap: wrap;
303
+ gap: 16px;
304
+ align-items: center;
305
+ justify-content: space-between;
306
+ padding-top: 20px;
307
+ margin-top: 24px;
308
+ border-top: 1px solid var(--lockerverse-border);
179
309
  }
180
- .lockerverse-auctions__field input {
181
- width: 100%;
182
- min-width: 0;
310
+ .lockerverse-auctions__selection-footer > p {
311
+ flex: 1 1 220px;
312
+ margin: 0;
313
+ }
314
+ .lockerverse-auctions .lockerverse-auctions__button {
183
315
  min-height: 48px;
184
- padding: 10px 12px;
185
- font: inherit;
186
- font-size: 16px;
316
+ padding: 12px 24px;
317
+ font-size: 14px;
318
+ font-weight: 600;
319
+ color: #fff;
320
+ text-transform: uppercase;
321
+ letter-spacing: 0.14em;
322
+ background: var(--lockerverse-accent);
323
+ border: 0;
324
+ border-radius: 999px;
325
+ }
326
+ .lockerverse-auctions button:disabled {
327
+ cursor: not-allowed;
328
+ opacity: 0.5;
329
+ }
330
+ .lockerverse-auctions .lockerverse-auctions__back {
331
+ min-height: 40px;
332
+ padding: 8px 12px;
333
+ margin-bottom: 16px;
334
+ font-size: 14px;
335
+ font-weight: 500;
187
336
  color: var(--lockerverse-text);
188
- background: var(--lockerverse-control);
337
+ background: rgb(128 128 128 / 6%);
189
338
  border: 1px solid var(--lockerverse-border);
190
- border-radius: var(--lockerverse-radius);
339
+ border-radius: 999px;
191
340
  }
192
- .lockerverse-auctions__fee {
193
- display: flex;
194
- gap: 10px;
195
- align-items: center;
341
+ .lockerverse-auctions .lockerverse-auctions__footer-back {
342
+ justify-self: end;
196
343
  min-height: 44px;
344
+ padding: 0;
345
+ font-size: 14px;
346
+ font-weight: 500;
347
+ color: var(--lockerverse-muted);
348
+ background: transparent;
349
+ border: 0;
197
350
  }
198
- .lockerverse-auctions__fee input {
199
- width: 20px;
200
- height: 20px;
201
- accent-color: var(--lockerverse-accent);
351
+ .lockerverse-auctions__read-only {
352
+ padding: 24px;
202
353
  }
203
- .lockerverse-auctions__notice {
204
- padding: 12px;
205
- border: 1px solid var(--lockerverse-border);
206
- border-radius: var(--lockerverse-radius);
354
+ .lockerverse-auctions__read-only > p {
355
+ line-height: 2;
207
356
  }
208
- .lockerverse-auctions input:focus-visible,
209
- .lockerverse-auctions__gallery button:focus-visible {
210
- outline: 2px solid var(--lockerverse-accent);
211
- outline-offset: 3px;
357
+ .lockerverse-auctions__read-only .lockerverse-auctions__button {
358
+ margin-top: 20px;
212
359
  }
213
- @media (max-width: 720px) {
360
+ @media (max-width: 1279px) {
214
361
  .lockerverse-auctions__detail {
215
362
  grid-template-columns: minmax(0, 1fr);
363
+ }
364
+ }
365
+ @media (max-width: 720px) {
366
+ .lockerverse-auctions__detail {
216
367
  gap: 24px;
217
368
  }
218
- .lockerverse-auctions__checkout {
219
- padding: 16px;
369
+ }
370
+ @media (max-width: 639px) {
371
+ .lockerverse-auctions {
372
+ padding: 32px 16px;
373
+ }
374
+ .lockerverse-auctions__item-copy {
375
+ padding: 20px;
376
+ }
377
+ .lockerverse-auctions__item-copy h2 {
378
+ font-size: 30px;
379
+ }
380
+ .lockerverse-auctions__selection-header,
381
+ .lockerverse-auctions__selection-body {
382
+ padding: 24px;
383
+ }
384
+ .lockerverse-auctions__selection-footer {
385
+ flex-direction: column;
386
+ align-items: stretch;
387
+ }
388
+ .lockerverse-auctions__selection-footer > p {
389
+ flex-basis: auto;
220
390
  }
221
391
  }
392
+
393
+ @container (max-width: 1150px) {
394
+ .lockerverse-auctions__detail {
395
+ grid-template-columns: minmax(0, 1fr);
396
+ }
397
+ }
398
+
399
+ .lockerverse-auctions__stat-row dt,
400
+ .lockerverse-auctions__progress span {
401
+ display: flex;
402
+ gap: 10px;
403
+ align-items: center;
404
+ }
405
+ .lockerverse-auctions__progress svg,
406
+ .lockerverse-auctions__stat-row dt svg {
407
+ flex-shrink: 0;
408
+ opacity: 0.65;
409
+ }
@@ -18,7 +18,7 @@ type LockerverseAuctionsProps = {
18
18
  style?: LockerverseStyle;
19
19
  className?: string;
20
20
  };
21
- /** Optional catalog UI. Use onSelectItem to open your item view or LockerverseAuctionItem. */
21
+ /** Optional catalog UI, shared with the Lockerverse auction design. */
22
22
  declare function LockerverseAuctions({ auctions, onSelectItem, theme, style, className }: LockerverseAuctionsProps): import("react").JSX.Element;
23
23
  //#endregion
24
24
  export { LockerverseAuctions, type LockerverseStyle, type LockerverseTheme, type UseLockerverseAuctionsResult, useLockerverseAuctions };
@@ -1 +1 @@
1
- {"version":3,"file":"auctions.d.ts","names":[],"sources":["../src/use-lockerverse-auctions.ts","../src/lockerverse-auctions.tsx"],"mappings":";;;KAUY;EACV,QAAQ;EACR,UAAU;EACV;EACA,OAAO;EACP;;iBAQc,uBACd,SAAS,kCACR;;;KCfS;EACV,UAAU;EACV,eACE,SAAS,oBACT,MAAM;EAER,QAAQ;EACR,QAAQ;EACR;;;iBAwIc,sBACd,UACA,cACA,OACA,OACA,aACC,2CAAwB,IAAA"}
1
+ {"version":3,"file":"auctions.d.ts","names":[],"sources":["../src/use-lockerverse-auctions.ts","../src/lockerverse-auctions.tsx"],"mappings":";;;KAUY;EACV,QAAQ;EACR,UAAU;EACV;EACA,OAAO;EACP;;iBAQc,uBACd,SAAS,kCACR;;;KCTS;EACV,UAAU;EACV,eACE,SAAS,oBACT,MAAM;EAER,QAAQ;EACR,QAAQ;EACR;;;iBA4Sc,sBACd,UACA,cACA,OACA,OACA,aACC,2CAAwB,IAAA"}
package/dist/auctions.js CHANGED
@@ -1,2 +1,2 @@
1
- import{t as e}from"./format-money.js";import{t}from"./immutable-resource-identity.js";import{useCallback as n,useEffect as r,useRef as i,useState as a}from"react";import{createLockerverseAuctionClient as o}from"@lockerverse/sdk/auctions";import{jsx as s,jsxs as c}from"react/jsx-runtime";const l={active:`Live now`,draft:`Coming soon`,finished:`Closed`},u=new Intl.DateTimeFormat(`en-US`,{dateStyle:`medium`,timeStyle:`short`,timeZone:`UTC`});function d({auction:e}){let t=e.status===`draft`?e.startAt:e.endAt,n=new Date(t);if(!Number.isFinite(n.getTime()))return null;let r={active:`Ends`,draft:`Opens`,finished:`Ended`}[e.status];return c(`span`,{className:`lockerverse-auctions__meta`,children:[r,` `,c(`time`,{dateTime:t,children:[u.format(n),` UTC`]})]})}function f({src:e}){return e?s(`img`,{alt:``,className:`lockerverse-auctions__image`,height:250,loading:`lazy`,src:e,width:320}):null}function p({auction:e,onSelect:t}){return c(`article`,{className:`lockerverse-auctions__card`,children:[s(f,{src:e.configuration.image??e.items.find(e=>e.image)?.image}),c(`div`,{className:`lockerverse-auctions__body`,children:[c(`span`,{className:`lockerverse-auctions__meta`,children:[l[e.status],` · `,e.items.length,` `,e.items.length===1?`item`:`items`]}),s(`h3`,{children:e.name}),s(d,{auction:e}),s(`button`,{"aria-label":`View items in ${e.name}`,onClick:t,type:`button`,children:`View items`})]})]})}function m({auction:t,item:n,onSelect:r}){let i=t.status===`active`?n.status:t.status,a=n.saleMode!==`auction`,o=n.saleMode!==`buy_now`;return c(`article`,{className:`lockerverse-auctions__card`,children:[s(f,{src:n.image??n.images[0]??t.configuration.image}),c(`div`,{className:`lockerverse-auctions__body`,children:[s(`span`,{className:`lockerverse-auctions__meta`,children:a&&n.isSoldOut?`Sold out`:l[i]}),s(`h3`,{children:n.name}),c(`dl`,{className:`lockerverse-auctions__metrics`,children:[o?c(`div`,{children:[s(`dt`,{children:n.maxBidAmount===null?`Starting bid`:`Current bid`}),s(`dd`,{children:e(n.maxBidAmount??n.minBidAmount??0)})]}):null,a&&n.buyNowPriceAmount!==null?c(`div`,{children:[s(`dt`,{children:`Buy now`}),s(`dd`,{children:e(n.buyNowPriceAmount)})]}):null,a&&n.availableQuantity!==null?c(`div`,{children:[s(`dt`,{children:`Available`}),s(`dd`,{children:n.availableQuantity})]}):null]}),s(`button`,{"aria-label":`View ${n.name}`,onClick:r,type:`button`,children:`View item`})]})]})}function h({auctions:e,onSelectItem:t,theme:n=`dark`,style:o,className:l}){let[u,f]=a(null),h=i(null),g=i(u),_=e.auctions?.find(e=>e.id===u);return r(()=>{g.current!==u&&(h.current?.focus(),g.current=u)},[u]),c(`section`,{"aria-busy":e.loading,"aria-label":`Auctions`,className:[`lockerverse-auctions`,l].filter(Boolean).join(` `),"data-lockerverse-theme":n,style:o,children:[c(`header`,{className:`lockerverse-auctions__header`,children:[_?s(`button`,{className:`lockerverse-auctions__back`,onClick:()=>f(null),type:`button`,children:`Back to auctions`}):null,s(`h2`,{ref:h,tabIndex:-1,children:_?.name??`Auctions`}),_?.description?s(`p`,{children:_.description}):null,_?s(d,{auction:_}):null]}),e.loading?s(`p`,{role:`status`,children:`Loading auctions…`}):null,e.error?c(`div`,{role:`alert`,children:[s(`p`,{children:e.error.message}),s(`button`,{onClick:e.refresh,type:`button`,children:`Try again`})]}):null,_&&_.items.length===0?s(`p`,{children:`No items are available in this auction.`}):null,_&&_.items.length>0?s(`ul`,{className:`lockerverse-auctions__grid`,children:_.items.map(e=>s(`li`,{children:s(m,{auction:_,item:e,onSelect:()=>t(_,e)})},e.id))}):null,!_&&e.auctions?.length===0?s(`p`,{children:`No auctions are available.`}):null,!_&&e.auctions&&e.auctions.length>0?s(`ul`,{className:`lockerverse-auctions__grid`,children:e.auctions.map(e=>s(`li`,{children:s(p,{auction:e,onSelect:()=>f(e.id)})},e.id))}):null]})}function g(e){t(`auctions`,{apiBaseUrl:e.apiBaseUrl,communitySlug:e.communitySlug,environment:e.environment,slug:``});let s=i(e.onError);s.current=e.onError;let[c]=a(()=>o({...e,onError:e=>s.current?.(e)})),[l,u]=a(0),[d,f]=a({auctions:null,error:null});r(()=>{let e=!0;return c.list().then(t=>{e&&f({auctions:t,error:null})},t=>{e&&f({auctions:null,error:t})}),()=>{e=!1}},[c,l]);let p=n(()=>{f({auctions:null,error:null}),u(e=>e+1)},[]);return{...d,client:c,loading:d.auctions===null&&d.error===null,refresh:p}}export{h as LockerverseAuctions,g as useLockerverseAuctions};
1
+ import{a as e,i as t,o as n,r,t as i}from"./auction-description.js";import{t as a}from"./immutable-resource-identity.js";import{useCallback as o,useEffect as s,useRef as c,useState as l}from"react";import{createLockerverseAuctionClient as u}from"@lockerverse/sdk/auctions";import{Fragment as d,jsx as f,jsxs as p}from"react/jsx-runtime";const m={active:`Live now`,draft:`Coming soon`,finished:`Closed`},h=[{label:`All`,value:`all`},{label:`Live`,value:`active`},{label:`Upcoming`,value:`draft`},{label:`Closed`,value:`finished`}];function g({images:e,fallback:t,name:n}){let r=[...new Set(e?.filter(Boolean))];!r.length&&t&&r.push(t);let[i,a]=l(0),o=c(null),u=c(new Set),d=r.length,p=d?i%d:0;return s(()=>{if(d<2)return;let e=window.matchMedia(`(prefers-reduced-motion: reduce)`),t=window.setInterval(()=>{document.hidden||e.matches||o.current?.closest(`article`)?.matches(`:hover, :focus-within`)||a(e=>u.current.has(r[(e+1)%d]??``)?(e+1)%d:e)},5e3);return()=>window.clearInterval(t)},[d,r]),f(`div`,{className:`lockerverse-auctions__catalog-images`,ref:o,children:d?[p,...d>1?[(p+1)%d]:[]].map(e=>f(`img`,{alt:e===p?n:``,"aria-hidden":e!==p,className:`lockerverse-auctions__catalog-photo`,"data-visible":e===p,height:500,loading:`lazy`,onLoad:()=>u.current.add(r[e]??``),src:r[e],width:640},r[e])):null})}function _({icon:e,label:t,value:n}){return p(`div`,{className:`lockerverse-auctions__catalog-metric`,children:[p(`dt`,{children:[f(r,{kind:e}),t]}),f(`dd`,{children:n})]})}function v({auction:e,status:r=n(e),item:i=!1}){let a=``;return r===`draft`&&(a=`Opens `),r===`active`&&(a=i?`Closes `:`Ends `),p(`span`,{className:`lockerverse-auctions__catalog-timing`,children:[a,t(e,r)]})}function y({auction:e,onSelect:t}){let a=e.configuration.image||e.items.find(e=>e.image||e.images.length)?.image||e.items.find(e=>e.images.length)?.images[0]||e.community?.banner||e.community?.thumbnail,o=e.description||{active:`Bidding is open across this auction's items.`,draft:`Preview the lineup before bidding opens.`,finished:`Bidding has wrapped. Review the completed items.`}[n(e)];return p(`article`,{className:`lockerverse-auctions__catalog-card`,children:[f(`button`,{"aria-label":`View items in ${e.name}`,className:`lockerverse-auctions__catalog-select`,onClick:t,type:`button`}),p(`div`,{className:`lockerverse-auctions__catalog-media`,children:[f(g,{fallback:a,name:e.name}),p(`div`,{className:`lockerverse-auctions__catalog-chips`,children:[f(`span`,{className:`lockerverse-auctions__catalog-chip`,children:m[n(e)]}),f(v,{auction:e})]}),p(`dl`,{className:`lockerverse-auctions__catalog-metrics`,children:[f(_,{icon:`items`,label:`Items`,value:String(e.items.length)}),f(_,{icon:`gavel`,label:`Bids`,value:String(e.items.reduce((e,t)=>e+t.bidCount,0))})]})]}),p(`div`,{className:`lockerverse-auctions__catalog-body`,children:[f(`h3`,{children:e.name}),f(i,{className:`lockerverse-auctions__catalog-description`,description:o,links:!1}),p(`div`,{className:`lockerverse-auctions__catalog-footer`,children:[f(`span`,{className:`lockerverse-auctions__catalog-cta`,children:n(e)===`draft`?`Preview items`:`View items`}),f(`span`,{className:`lockerverse-auctions__catalog-arrow`,children:f(r,{kind:`arrow`})})]})]})]})}function b(t,n){if(t.saleMode===`buy_now`){let n=t.isSoldOut?`Sold out`:`Buy now`;return{chip:n,cta:n,price:e(t.buyNowPriceAmount??0),priceLabel:`Buy Now`,secondary:t.availableQuantity===null?`Available`:String(t.availableQuantity)}}return{chip:n===`active`?`Live`:m[n],cta:{active:`Bid now`,draft:`Preview item`,finished:`View item`}[n],price:n===`finished`&&!t.maxBidAmount?`No bids`:e(t.maxBidAmount??0),priceLabel:n===`finished`?`Final bid`:`Current`,secondary:e(t.minBidAmount??0)}}function x({auction:e,item:t,onSelect:a}){let o=n(e,t),s=t.saleMode===`buy_now`,c=b(t,o);return p(`article`,{className:`lockerverse-auctions__catalog-card`,children:[f(`button`,{"aria-label":`View ${t.name}`,className:`lockerverse-auctions__catalog-select`,onClick:a,type:`button`}),p(`div`,{className:`lockerverse-auctions__catalog-media`,children:[f(g,{fallback:t.image||e.configuration.image||e.community?.banner||e.community?.thumbnail,images:t.images,name:t.name}),p(`div`,{className:`lockerverse-auctions__catalog-chips`,children:[f(`span`,{className:`lockerverse-auctions__catalog-chip`,"data-live":o===`active`,children:c.chip}),f(v,{auction:t.finishedAt&&o===`finished`?{...e,endAt:t.finishedAt}:e,item:!0,status:o})]}),p(`dl`,{className:`lockerverse-auctions__catalog-metrics`,children:[f(_,{icon:s?`bag`:`gavel`,label:c.priceLabel,value:c.price}),f(_,{icon:`clock`,label:s?`Available`:`Floor`,value:c.secondary})]})]}),p(`div`,{className:`lockerverse-auctions__catalog-body`,children:[f(`h3`,{children:t.name}),f(i,{className:`lockerverse-auctions__catalog-description`,description:t.description||`View auction item details.`,links:!1}),f(`div`,{className:`lockerverse-auctions__catalog-footer lockerverse-auctions__catalog-footer--item`,children:p(`span`,{className:`lockerverse-auctions__catalog-cta`,children:[c.cta,f(r,{kind:`arrow`})]})})]})]})}function S({auctions:e,onSelectItem:t,theme:a=`dark`,style:o,className:u}){let[m,g]=l(null),[_,v]=l(`all`),y=c(null),b=c(m),x=e.auctions?.find(e=>e.id===m);s(()=>{b.current!==m&&(y.current?.focus(),b.current=m)},[m]);let S=[...x?.items??[]].sort((e,t)=>e.position-t.position||e.createdAt.localeCompare(t.createdAt)),w=x?S.filter(e=>_===`all`||n(x,e)===_):[];return p(`section`,{"aria-busy":e.loading,"aria-label":`Auctions`,className:[`lockerverse-auctions`,`lockerverse-auctions--catalog`,u].filter(Boolean).join(` `),"data-lockerverse-theme":a,style:o,children:[p(`header`,{className:`lockerverse-auctions__catalog-header`,children:[x?p(`button`,{className:`lockerverse-auctions__catalog-back`,onClick:()=>{g(null),v(`all`)},type:`button`,children:[f(r,{kind:`back`}),`Auctions`]}):null,f(`h2`,{ref:y,tabIndex:-1,children:x?.name??`Auctions`}),x?.description?f(i,{description:x.description}):null]}),e.loading?f(`p`,{role:`status`,children:`Loading auctions…`}):null,e.error?p(`div`,{role:`alert`,children:[f(`p`,{children:e.error.message}),f(`button`,{onClick:e.refresh,type:`button`,children:`Try again`})]}):null,e.auctions&&(x||e.auctions.length>0)?p(d,{children:[p(`div`,{className:`lockerverse-auctions__catalog-lineup`,children:[p(`div`,{children:[f(`h3`,{children:`Auction lineup`}),f(`p`,{children:`Browse the current collection.`})]}),f(`span`,{children:x?`${w.length} ${w.length===1?`item`:`items`}`:`${e.auctions.length} ${e.auctions.length===1?`auction`:`auctions`}`})]}),x?f(`fieldset`,{"aria-label":`Filter auction items`,className:`lockerverse-auctions__catalog-filters`,children:h.map(e=>p(`button`,{"aria-pressed":_===e.value,onClick:()=>v(e.value),type:`button`,children:[e.label,f(`span`,{children:e.value===`all`?S.length:S.filter(t=>n(x,t)===e.value).length})]},e.value))}):null]}):null,f(C,{auctions:e.auctions,filtered:w,onSelectAuction:e=>{g(e),v(`all`)},onSelectItem:t,selected:x})]})}function C({selected:e,filtered:t,auctions:n,onSelectItem:r,onSelectAuction:i}){return e?t.length?f(`ul`,{className:`lockerverse-auctions__catalog-grid`,children:t.map(t=>f(`li`,{children:f(x,{auction:e,item:t,onSelect:()=>r(e,t)})},t.id))}):f(`p`,{className:`lockerverse-auctions__catalog-empty`,children:`No items match this auction view.`}):n?n.length?f(`ul`,{className:`lockerverse-auctions__catalog-grid`,children:n.map(e=>f(`li`,{children:f(y,{auction:e,onSelect:()=>i(e.id)})},e.id))}):p(`div`,{className:`lockerverse-auctions__catalog-empty`,children:[f(`h3`,{children:`No auctions yet.`}),f(`p`,{children:`Published auctions will appear here once they are available.`})]}):null}function w(e){a(`auctions`,{apiBaseUrl:e.apiBaseUrl,communitySlug:e.communitySlug,environment:e.environment,slug:``});let t=c(e.onError);t.current=e.onError;let[n]=l(()=>u({...e,onError:e=>t.current?.(e)})),[r,i]=l(0),[d,f]=l({auctions:null,error:null});s(()=>{let e=!0;return n.list().then(t=>{e&&f({auctions:t,error:null})},t=>{e&&f({auctions:null,error:t})}),()=>{e=!1}},[n,r]);let p=o(()=>{f({auctions:null,error:null}),i(e=>e+1)},[]);return{...d,client:n,loading:d.auctions===null&&d.error===null,refresh:p}}export{S as LockerverseAuctions,w as useLockerverseAuctions};
2
2
  //# sourceMappingURL=auctions.js.map