@lockerverse/react 0.2.101 → 0.2.102
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/README.md +55 -18
- package/dist/auction-base.css +116 -0
- package/dist/auction-catalog.css +7 -0
- package/dist/auction-data.d.ts +16 -0
- package/dist/auction-data.d.ts.map +1 -0
- package/dist/auction-data.js +2 -0
- package/dist/auction-data.js.map +1 -0
- package/dist/auction-item-layout.css +298 -0
- package/dist/auction-item.css +4 -0
- package/dist/auction-item.d.ts +3 -0
- package/dist/auction-item.d.ts.map +1 -1
- package/dist/auction-item.js +1 -1
- package/dist/auction-item.js.map +1 -1
- package/dist/auction.css +2 -0
- package/dist/auction.d.ts +3 -0
- package/dist/auction.js +1 -0
- package/dist/auctions.css +2 -406
- package/dist/auctions.d.ts +6 -19
- package/dist/auctions.d.ts.map +1 -1
- package/dist/auctions.js +1 -1
- package/dist/auctions.js.map +1 -1
- package/dist/immutable-resource-identity.js.map +1 -1
- package/dist/lockerverse-auction-item-card.d.ts +47 -0
- package/dist/lockerverse-auction-item-card.d.ts.map +1 -0
- package/dist/lockerverse-auction.js +2 -0
- package/dist/lockerverse-auction.js.map +1 -0
- package/dist/lockerverse-payment.js +1 -1
- package/dist/lockerverse-payment.js.map +1 -1
- package/dist/phone.js +1 -1
- package/dist/signup.js +1 -1
- package/dist/signup.js.map +1 -1
- package/dist/use-auction-boundary.js +2 -0
- package/dist/use-auction-boundary.js.map +1 -0
- package/dist/use-lockerverse-auctions.d.ts +13 -0
- package/dist/use-lockerverse-auctions.d.ts.map +1 -0
- package/dist/use-lockerverse-auctions.js +2 -0
- package/dist/use-lockerverse-auctions.js.map +1 -0
- package/package.json +26 -3
- package/dist/auction-description.js +0 -2
- package/dist/auction-description.js.map +0 -1
package/dist/auctions.css
CHANGED
|
@@ -1,409 +1,5 @@
|
|
|
1
1
|
@import "./auction-catalog.css";
|
|
2
2
|
@import "./auction-gallery.css";
|
|
3
3
|
@import "./auction-checkout.css";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
.lockerverse-auctions {
|
|
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;
|
|
13
|
-
--lockerverse-text: #fff;
|
|
14
|
-
--lockerverse-font-family: ui-sans-serif, system-ui, sans-serif;
|
|
15
|
-
box-sizing: border-box;
|
|
16
|
-
width: 100%;
|
|
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);
|
|
22
|
-
color: var(--lockerverse-text);
|
|
23
|
-
background: var(--lockerverse-bg);
|
|
24
|
-
border-radius: 0;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
.lockerverse-auctions[data-lockerverse-theme="light"] {
|
|
28
|
-
--lockerverse-bg: #fff;
|
|
29
|
-
--lockerverse-border: rgb(18 20 22 / 14%);
|
|
30
|
-
--lockerverse-control: #f5f6f7;
|
|
31
|
-
--lockerverse-muted: rgb(18 20 22 / 64%);
|
|
32
|
-
--lockerverse-text: #121416;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
.lockerverse-auctions * {
|
|
36
|
-
box-sizing: border-box;
|
|
37
|
-
}
|
|
38
|
-
.lockerverse-auctions h2 {
|
|
39
|
-
margin: 0;
|
|
40
|
-
font-size: 24px;
|
|
41
|
-
line-height: 1.25;
|
|
42
|
-
text-wrap: balance;
|
|
43
|
-
}
|
|
44
|
-
.lockerverse-auctions h3 {
|
|
45
|
-
margin: 0;
|
|
46
|
-
font-size: 19px;
|
|
47
|
-
line-height: 1.3;
|
|
48
|
-
overflow-wrap: anywhere;
|
|
49
|
-
}
|
|
50
|
-
.lockerverse-auctions p {
|
|
51
|
-
margin: 8px 0;
|
|
52
|
-
color: var(--lockerverse-muted);
|
|
53
|
-
overflow-wrap: anywhere;
|
|
54
|
-
white-space: pre-line;
|
|
55
|
-
}
|
|
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;
|
|
68
|
-
}
|
|
69
|
-
.lockerverse-auctions__field {
|
|
70
|
-
display: grid;
|
|
71
|
-
gap: 8px;
|
|
72
|
-
}
|
|
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);
|
|
81
|
-
background: var(--lockerverse-control);
|
|
82
|
-
border: 1px solid var(--lockerverse-border);
|
|
83
|
-
border-radius: var(--lockerverse-radius);
|
|
84
|
-
}
|
|
85
|
-
.lockerverse-auctions__notice {
|
|
86
|
-
padding: 12px;
|
|
87
|
-
border: 1px solid var(--lockerverse-border);
|
|
88
|
-
border-radius: var(--lockerverse-radius);
|
|
89
|
-
}
|
|
90
|
-
.lockerverse-auctions input:focus-visible {
|
|
91
|
-
outline: 2px solid var(--lockerverse-accent);
|
|
92
|
-
outline-offset: 3px;
|
|
93
|
-
}
|
|
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;
|
|
183
|
-
}
|
|
184
|
-
.lockerverse-auctions__stat-row {
|
|
185
|
-
display: flex;
|
|
186
|
-
gap: 16px;
|
|
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;
|
|
194
|
-
}
|
|
195
|
-
.lockerverse-auctions__stat-panel dt {
|
|
196
|
-
font-size: 11px;
|
|
197
|
-
font-weight: 500;
|
|
198
|
-
color: var(--lockerverse-muted);
|
|
199
|
-
text-transform: uppercase;
|
|
200
|
-
letter-spacing: 0.12em;
|
|
201
|
-
}
|
|
202
|
-
.lockerverse-auctions__stat-panel dd {
|
|
203
|
-
margin: 0;
|
|
204
|
-
font-size: 20px;
|
|
205
|
-
font-weight: 500;
|
|
206
|
-
font-variant-numeric: tabular-nums;
|
|
207
|
-
text-align: right;
|
|
208
|
-
}
|
|
209
|
-
.lockerverse-auctions__stat-panel .lockerverse-auctions__stat-date {
|
|
210
|
-
font-size: 15px;
|
|
211
|
-
}
|
|
212
|
-
.lockerverse-auctions__stat-footer {
|
|
213
|
-
display: grid;
|
|
214
|
-
grid-template-columns: 1fr 1fr;
|
|
215
|
-
}
|
|
216
|
-
.lockerverse-auctions__stat-footer > div {
|
|
217
|
-
padding: 12px 24px;
|
|
218
|
-
}
|
|
219
|
-
.lockerverse-auctions__stat-footer > div + div {
|
|
220
|
-
border-left: 1px solid var(--lockerverse-border);
|
|
221
|
-
}
|
|
222
|
-
.lockerverse-auctions__stat-footer dd {
|
|
223
|
-
margin-top: 4px;
|
|
224
|
-
font-size: 14px;
|
|
225
|
-
text-align: left;
|
|
226
|
-
}
|
|
227
|
-
.lockerverse-auctions__transaction {
|
|
228
|
-
display: grid;
|
|
229
|
-
gap: 24px;
|
|
230
|
-
min-width: 0;
|
|
231
|
-
}
|
|
232
|
-
.lockerverse-auctions__progress {
|
|
233
|
-
display: flex;
|
|
234
|
-
flex-wrap: wrap;
|
|
235
|
-
gap: 8px;
|
|
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 {
|
|
263
|
-
margin-top: 12px;
|
|
264
|
-
font-size: 30px;
|
|
265
|
-
font-weight: 600;
|
|
266
|
-
letter-spacing: -0.04em;
|
|
267
|
-
}
|
|
268
|
-
.lockerverse-auctions__selection p {
|
|
269
|
-
margin-top: 12px;
|
|
270
|
-
font-size: 14px;
|
|
271
|
-
line-height: 2;
|
|
272
|
-
}
|
|
273
|
-
.lockerverse-auctions__selection strong {
|
|
274
|
-
color: var(--lockerverse-text);
|
|
275
|
-
}
|
|
276
|
-
.lockerverse-auctions__amount-control {
|
|
277
|
-
position: relative;
|
|
278
|
-
display: block;
|
|
279
|
-
}
|
|
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%);
|
|
287
|
-
}
|
|
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;
|
|
296
|
-
}
|
|
297
|
-
.lockerverse-auctions__amount-control > span + input {
|
|
298
|
-
padding-left: 48px;
|
|
299
|
-
}
|
|
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);
|
|
309
|
-
}
|
|
310
|
-
.lockerverse-auctions__selection-footer > p {
|
|
311
|
-
flex: 1 1 220px;
|
|
312
|
-
margin: 0;
|
|
313
|
-
}
|
|
314
|
-
.lockerverse-auctions .lockerverse-auctions__button {
|
|
315
|
-
min-height: 48px;
|
|
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;
|
|
336
|
-
color: var(--lockerverse-text);
|
|
337
|
-
background: rgb(128 128 128 / 6%);
|
|
338
|
-
border: 1px solid var(--lockerverse-border);
|
|
339
|
-
border-radius: 999px;
|
|
340
|
-
}
|
|
341
|
-
.lockerverse-auctions .lockerverse-auctions__footer-back {
|
|
342
|
-
justify-self: end;
|
|
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;
|
|
350
|
-
}
|
|
351
|
-
.lockerverse-auctions__read-only {
|
|
352
|
-
padding: 24px;
|
|
353
|
-
}
|
|
354
|
-
.lockerverse-auctions__read-only > p {
|
|
355
|
-
line-height: 2;
|
|
356
|
-
}
|
|
357
|
-
.lockerverse-auctions__read-only .lockerverse-auctions__button {
|
|
358
|
-
margin-top: 20px;
|
|
359
|
-
}
|
|
360
|
-
@media (max-width: 1279px) {
|
|
361
|
-
.lockerverse-auctions__detail {
|
|
362
|
-
grid-template-columns: minmax(0, 1fr);
|
|
363
|
-
}
|
|
364
|
-
}
|
|
365
|
-
@media (max-width: 720px) {
|
|
366
|
-
.lockerverse-auctions__detail {
|
|
367
|
-
gap: 24px;
|
|
368
|
-
}
|
|
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;
|
|
390
|
-
}
|
|
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
|
-
}
|
|
4
|
+
@import "./auction-base.css";
|
|
5
|
+
@import "./auction-item-layout.css";
|
package/dist/auctions.d.ts
CHANGED
|
@@ -1,25 +1,12 @@
|
|
|
1
|
+
import { n as useLockerverseAuctions, t as UseLockerverseAuctionsResult } from "./use-lockerverse-auctions.js";
|
|
1
2
|
import { n as LockerverseTheme, t as LockerverseStyle } from "./theme.js";
|
|
2
|
-
import {
|
|
3
|
-
//#region src/use-lockerverse-auctions.d.ts
|
|
4
|
-
type UseLockerverseAuctionsResult = {
|
|
5
|
-
client: LockerverseAuctionClient;
|
|
6
|
-
auctions: LockerverseAuction[] | null;
|
|
7
|
-
loading: boolean;
|
|
8
|
-
error: LockerverseSdkError | null;
|
|
9
|
-
refresh: () => void;
|
|
10
|
-
};
|
|
11
|
-
declare function useLockerverseAuctions(options: CreateLockerverseAuctionOptions): UseLockerverseAuctionsResult;
|
|
12
|
-
//#endregion
|
|
3
|
+
import { a as LockerverseAuctionProps, i as LockerverseAuctionItemRenderContext, n as LockerverseAuctionItemCardProps, r as LockerverseAuction, t as LockerverseAuctionItemCard } from "./lockerverse-auction-item-card.js";
|
|
13
4
|
//#region src/lockerverse-auctions.d.ts
|
|
14
|
-
type LockerverseAuctionsProps = {
|
|
5
|
+
type LockerverseAuctionsProps = Omit<LockerverseAuctionProps, "auction" | "onBack"> & {
|
|
15
6
|
auctions: UseLockerverseAuctionsResult;
|
|
16
|
-
onSelectItem: (auction: LockerverseAuction, item: LockerverseAuctionItem) => void;
|
|
17
|
-
theme?: LockerverseTheme;
|
|
18
|
-
style?: LockerverseStyle;
|
|
19
|
-
className?: string;
|
|
20
7
|
};
|
|
21
|
-
/** Optional
|
|
22
|
-
declare function LockerverseAuctions({ auctions, onSelectItem, theme, style, className }: LockerverseAuctionsProps): import("react").JSX.Element;
|
|
8
|
+
/** Optional auction browser. Select an auction to show its items. */
|
|
9
|
+
declare function LockerverseAuctions({ auctions, onSelectItem, theme, style, className, showFilters, showHeader, showLineup, renderItem }: LockerverseAuctionsProps): import("react").JSX.Element;
|
|
23
10
|
//#endregion
|
|
24
|
-
export { LockerverseAuctions, type LockerverseStyle, type LockerverseTheme, type UseLockerverseAuctionsResult, useLockerverseAuctions };
|
|
11
|
+
export { LockerverseAuction, LockerverseAuctionItemCard, type LockerverseAuctionItemCardProps, type LockerverseAuctionItemRenderContext, type LockerverseAuctionProps, LockerverseAuctions, type LockerverseAuctionsProps, type LockerverseStyle, type LockerverseTheme, type UseLockerverseAuctionsResult, useLockerverseAuctions };
|
|
25
12
|
//# sourceMappingURL=auctions.d.ts.map
|
package/dist/auctions.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auctions.d.ts","names":[],"sources":["../src/
|
|
1
|
+
{"version":3,"file":"auctions.d.ts","names":[],"sources":["../src/lockerverse-auctions.tsx"],"mappings":";;;;KAkBY,2BAA2B,KACrC;EAGA,UAAU;;;iBA+EI,sBACd,UACA,cACA,OACA,OACA,WACA,aACA,YACA,YACA,cACC,2CAAwB,IAAA"}
|
package/dist/auctions.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as e,
|
|
1
|
+
import{a as e,s as t,t as n}from"./use-auction-boundary.js";import{a as r,i,n as a,o,r as s,s as c,t as l}from"./lockerverse-auction.js";import{t as u}from"./use-lockerverse-auctions.js";import{ArrowRight as d,Gavel as f,ListChecks as p}from"lucide-react";import{useEffect as m,useRef as h,useState as g}from"react";import{Fragment as _,jsx as v,jsxs as y}from"react/jsx-runtime";function b({auction:a,onSelect:s}){n(a.startAt,a.endAt);let l=a.configuration.image||a.items.find(e=>e.image||e.images.length)?.image||a.items.find(e=>e.images.length)?.images[0]||a.community?.banner||a.community?.thumbnail,u=a.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.`}[e(a)];return y(`article`,{className:`lockerverse-auctions__catalog-card`,children:[v(`button`,{"aria-label":`View items in ${a.name}`,className:`lockerverse-auctions__catalog-select`,"data-auction-id":a.id,onClick:s,type:`button`}),y(`div`,{className:`lockerverse-auctions__catalog-media`,children:[v(i,{fallback:l,name:a.name}),y(`div`,{className:`lockerverse-auctions__catalog-chips`,children:[v(`span`,{className:`lockerverse-auctions__catalog-chip`,children:o[e(a)]}),v(c,{auction:a})]}),y(`dl`,{className:`lockerverse-auctions__catalog-metrics`,children:[v(r,{icon:v(p,{"aria-hidden":`true`,size:16}),label:`Items`,value:String(a.items.length)}),v(r,{icon:v(f,{"aria-hidden":`true`,size:16}),label:`Bids`,value:String(a.items.reduce((e,t)=>e+t.bidCount,0))})]})]}),y(`div`,{className:`lockerverse-auctions__catalog-body`,children:[v(`h3`,{children:a.name}),v(t,{className:`lockerverse-auctions__catalog-description`,description:u,links:!1}),y(`div`,{className:`lockerverse-auctions__catalog-footer`,children:[v(`span`,{className:`lockerverse-auctions__catalog-cta`,children:e(a)===`draft`?`Preview items`:`View items`}),v(`span`,{className:`lockerverse-auctions__catalog-arrow`,children:v(d,{"aria-hidden":`true`,size:16})})]})]})]})}function x({auctions:e,onSelectItem:t,theme:n=`dark`,style:r,className:i,showFilters:a=!0,showHeader:o=!0,showLineup:s=!0,renderItem:c}){let[u,d]=g(null),f=h(null),p=h(null),_=h(u),b=e.auctions?.find(e=>e.id===u);return m(()=>{if(_.current!==u){if(u===null){let e=[...p.current?.querySelectorAll(`button[data-auction-id]`)??[]].find(e=>e.dataset.auctionId===_.current);(f.current??e??p.current)?.focus()}_.current=u}},[u]),y(`section`,{"aria-busy":e.loading,"aria-label":`Auctions`,className:[`lockerverse-auctions`,`lockerverse-auctions--catalog`,i].filter(Boolean).join(` `),"data-lockerverse-theme":n,ref:p,style:r,tabIndex:-1,children:[!b&&o?v(`header`,{className:`lockerverse-auctions__catalog-header`,children:v(`h2`,{ref:f,tabIndex:-1,children:`Auctions`})}):null,e.loading?v(`p`,{role:`status`,children:`Loading auctions…`}):null,e.error?y(`div`,{role:`alert`,children:[v(`p`,{children:e.error.message}),v(`button`,{onClick:e.refresh,type:`button`,children:`Try again`})]}):null,b?v(l,{auction:b,onBack:()=>d(null),onSelectItem:t,showFilters:a,showHeader:o,showLineup:s,theme:n,...r?{style:r}:{},...c?{renderItem:c}:{}},b.id):v(S,{auctions:e.auctions,onSelectAuction:d,showLineup:s})]})}function S({auctions:e,showLineup:t,onSelectAuction:n}){return e?e.length?y(_,{children:[t?y(`div`,{className:`lockerverse-auctions__catalog-lineup`,children:[y(`div`,{children:[v(`h3`,{children:`Auction lineup`}),v(`p`,{children:`Browse the current collection.`})]}),y(`span`,{children:[e.length,` `,e.length===1?`auction`:`auctions`]})]}):null,v(`ul`,{className:`lockerverse-auctions__catalog-grid`,children:e.map(e=>v(`li`,{children:v(b,{auction:e,onSelect:()=>n(e.id)})},e.id))})]}):y(`div`,{className:`lockerverse-auctions__catalog-empty`,children:[v(`h3`,{children:`No auctions yet.`}),v(`p`,{children:`Published auctions will appear here once they are available.`})]}):null}export{a as LockerverseAuction,s as LockerverseAuctionItemCard,x as LockerverseAuctions,u as useLockerverseAuctions};
|
|
2
2
|
//# sourceMappingURL=auctions.js.map
|
package/dist/auctions.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auctions.js","names":["Icon","formatMoney"],"sources":["../src/lockerverse-auctions.tsx","../src/use-lockerverse-auctions.ts"],"sourcesContent":["import type {\n LockerverseAuction,\n LockerverseAuctionItem,\n LockerverseAuctionStatus,\n} from \"@lockerverse/sdk/auctions\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { AuctionDescription } from \"./auction-description.tsx\";\nimport {\n formatAuctionBoundary,\n formatAuctionMoney as formatMoney,\n getAuctionDisplayStatus,\n} from \"./auction-display.ts\";\nimport { AuctionIcon as Icon } from \"./auction-icons.tsx\";\nimport type { LockerverseStyle, LockerverseTheme } from \"./theme.ts\";\nimport type { UseLockerverseAuctionsResult } from \"./use-lockerverse-auctions.ts\";\n\nexport type LockerverseAuctionsProps = {\n auctions: UseLockerverseAuctionsResult;\n onSelectItem: (\n auction: LockerverseAuction,\n item: LockerverseAuctionItem\n ) => void;\n theme?: LockerverseTheme;\n style?: LockerverseStyle;\n className?: string;\n};\nconst STATUS_LABELS = {\n active: \"Live now\",\n draft: \"Coming soon\",\n finished: \"Closed\",\n} satisfies Record<LockerverseAuctionStatus, string>;\nconst FILTERS = [\n { label: \"All\", value: \"all\" },\n { label: \"Live\", value: \"active\" },\n { label: \"Upcoming\", value: \"draft\" },\n { label: \"Closed\", value: \"finished\" },\n] as const;\ntype ItemFilter = (typeof FILTERS)[number][\"value\"];\n\nfunction CatalogImage({\n images,\n fallback,\n name,\n}: {\n images?: string[];\n fallback?: string | null | undefined;\n name: string;\n}) {\n const photos = [...new Set(images?.filter(Boolean))];\n if (!photos.length && fallback) {\n photos.push(fallback);\n }\n const [index, setIndex] = useState(0);\n const imageRef = useRef<HTMLDivElement>(null);\n const loaded = useRef(new Set<string>());\n const count = photos.length;\n const current = count ? index % count : 0;\n useEffect(() => {\n if (count < 2) {\n return;\n }\n const motion = window.matchMedia(\"(prefers-reduced-motion: reduce)\");\n const timer = window.setInterval(() => {\n if (\n document.hidden ||\n motion.matches ||\n imageRef.current?.closest(\"article\")?.matches(\":hover, :focus-within\")\n ) {\n return;\n }\n setIndex((previous) =>\n loaded.current.has(photos[(previous + 1) % count] ?? \"\")\n ? (previous + 1) % count\n : previous\n );\n }, 5000);\n return () => window.clearInterval(timer);\n }, [count, photos]);\n return (\n <div className=\"lockerverse-auctions__catalog-images\" ref={imageRef}>\n {count\n ? [current, ...(count > 1 ? [(current + 1) % count] : [])].map(\n (photo) => (\n <img\n alt={photo === current ? name : \"\"}\n aria-hidden={photo !== current}\n className=\"lockerverse-auctions__catalog-photo\"\n data-visible={photo === current}\n height={500}\n key={photos[photo]}\n loading=\"lazy\"\n onLoad={() => loaded.current.add(photos[photo] ?? \"\")}\n src={photos[photo]}\n width={640}\n />\n )\n )\n : null}\n </div>\n );\n}\nfunction Metric({\n icon,\n label,\n value,\n}: {\n icon: \"items\" | \"gavel\" | \"clock\" | \"bag\";\n label: string;\n value: string;\n}) {\n return (\n <div className=\"lockerverse-auctions__catalog-metric\">\n <dt>\n <Icon kind={icon} />\n {label}\n </dt>\n <dd>{value}</dd>\n </div>\n );\n}\nfunction Timing({\n auction,\n status = getAuctionDisplayStatus(auction),\n item = false,\n}: {\n auction: LockerverseAuction;\n status?: LockerverseAuctionStatus;\n item?: boolean;\n}) {\n let label = \"\";\n if (status === \"draft\") {\n label = \"Opens \";\n }\n if (status === \"active\") {\n label = item ? \"Closes \" : \"Ends \";\n }\n return (\n <span className=\"lockerverse-auctions__catalog-timing\">\n {label}\n {formatAuctionBoundary(auction, status)}\n </span>\n );\n}\nfunction AuctionCard({\n auction,\n onSelect,\n}: {\n auction: LockerverseAuction;\n onSelect: () => void;\n}) {\n const fallback =\n auction.configuration.image ||\n auction.items.find((item) => item.image || item.images.length)?.image ||\n auction.items.find((item) => item.images.length)?.images[0] ||\n auction.community?.banner ||\n auction.community?.thumbnail;\n const description =\n auction.description ||\n {\n active: \"Bidding is open across this auction's items.\",\n draft: \"Preview the lineup before bidding opens.\",\n finished: \"Bidding has wrapped. Review the completed items.\",\n }[getAuctionDisplayStatus(auction)];\n return (\n <article className=\"lockerverse-auctions__catalog-card\">\n <button\n aria-label={`View items in ${auction.name}`}\n className=\"lockerverse-auctions__catalog-select\"\n onClick={onSelect}\n type=\"button\"\n />\n <div className=\"lockerverse-auctions__catalog-media\">\n <CatalogImage fallback={fallback} name={auction.name} />\n <div className=\"lockerverse-auctions__catalog-chips\">\n <span className=\"lockerverse-auctions__catalog-chip\">\n {STATUS_LABELS[getAuctionDisplayStatus(auction)]}\n </span>\n <Timing auction={auction} />\n </div>\n <dl className=\"lockerverse-auctions__catalog-metrics\">\n <Metric\n icon=\"items\"\n label=\"Items\"\n value={String(auction.items.length)}\n />\n <Metric\n icon=\"gavel\"\n label=\"Bids\"\n value={String(\n auction.items.reduce((sum, item) => sum + item.bidCount, 0)\n )}\n />\n </dl>\n </div>\n <div className=\"lockerverse-auctions__catalog-body\">\n <h3>{auction.name}</h3>\n <AuctionDescription\n className=\"lockerverse-auctions__catalog-description\"\n description={description}\n links={false}\n />\n <div className=\"lockerverse-auctions__catalog-footer\">\n <span className=\"lockerverse-auctions__catalog-cta\">\n {getAuctionDisplayStatus(auction) === \"draft\"\n ? \"Preview items\"\n : \"View items\"}\n </span>\n <span className=\"lockerverse-auctions__catalog-arrow\">\n <Icon kind=\"arrow\" />\n </span>\n </div>\n </div>\n </article>\n );\n}\nfunction itemCardDisplay(\n item: LockerverseAuctionItem,\n status: LockerverseAuctionStatus\n) {\n if (item.saleMode === \"buy_now\") {\n const label = item.isSoldOut ? \"Sold out\" : \"Buy now\";\n return {\n chip: label,\n cta: label,\n price: formatMoney(item.buyNowPriceAmount ?? 0),\n priceLabel: \"Buy Now\",\n secondary:\n item.availableQuantity === null\n ? \"Available\"\n : String(item.availableQuantity),\n };\n }\n return {\n chip: status === \"active\" ? \"Live\" : STATUS_LABELS[status],\n cta: { active: \"Bid now\", draft: \"Preview item\", finished: \"View item\" }[\n status\n ],\n price:\n status === \"finished\" && !item.maxBidAmount\n ? \"No bids\"\n : formatMoney(item.maxBidAmount ?? 0),\n priceLabel: status === \"finished\" ? \"Final bid\" : \"Current\",\n secondary: formatMoney(item.minBidAmount ?? 0),\n };\n}\nfunction ItemCard({\n auction,\n item,\n onSelect,\n}: {\n auction: LockerverseAuction;\n item: LockerverseAuctionItem;\n onSelect: () => void;\n}) {\n const status = getAuctionDisplayStatus(auction, item);\n const buyNow = item.saleMode === \"buy_now\";\n const display = itemCardDisplay(item, status);\n return (\n <article className=\"lockerverse-auctions__catalog-card\">\n <button\n aria-label={`View ${item.name}`}\n className=\"lockerverse-auctions__catalog-select\"\n onClick={onSelect}\n type=\"button\"\n />\n <div className=\"lockerverse-auctions__catalog-media\">\n <CatalogImage\n fallback={\n item.image ||\n auction.configuration.image ||\n auction.community?.banner ||\n auction.community?.thumbnail\n }\n images={item.images}\n name={item.name}\n />\n <div className=\"lockerverse-auctions__catalog-chips\">\n <span\n className=\"lockerverse-auctions__catalog-chip\"\n data-live={status === \"active\"}\n >\n {display.chip}\n </span>\n <Timing\n auction={\n item.finishedAt && status === \"finished\"\n ? { ...auction, endAt: item.finishedAt }\n : auction\n }\n item\n status={status}\n />\n </div>\n <dl className=\"lockerverse-auctions__catalog-metrics\">\n <Metric\n icon={buyNow ? \"bag\" : \"gavel\"}\n label={display.priceLabel}\n value={display.price}\n />\n <Metric\n icon=\"clock\"\n label={buyNow ? \"Available\" : \"Floor\"}\n value={display.secondary}\n />\n </dl>\n </div>\n <div className=\"lockerverse-auctions__catalog-body\">\n <h3>{item.name}</h3>\n <AuctionDescription\n className=\"lockerverse-auctions__catalog-description\"\n description={item.description || \"View auction item details.\"}\n links={false}\n />\n <div className=\"lockerverse-auctions__catalog-footer lockerverse-auctions__catalog-footer--item\">\n <span className=\"lockerverse-auctions__catalog-cta\">\n {display.cta}\n <Icon kind=\"arrow\" />\n </span>\n </div>\n </div>\n </article>\n );\n}\n/** Optional catalog UI, shared with the Lockerverse auction design. */\nexport function LockerverseAuctions({\n auctions,\n onSelectItem,\n theme = \"dark\",\n style,\n className,\n}: LockerverseAuctionsProps) {\n const [selectedId, setSelectedId] = useState<string | null>(null);\n const [filter, setFilter] = useState<ItemFilter>(\"all\");\n const headingRef = useRef<HTMLHeadingElement>(null);\n const previousId = useRef(selectedId);\n const selected = auctions.auctions?.find(\n (auction) => auction.id === selectedId\n );\n useEffect(() => {\n if (previousId.current !== selectedId) {\n headingRef.current?.focus();\n previousId.current = selectedId;\n }\n }, [selectedId]);\n const items = [...(selected?.items ?? [])].sort(\n (left, right) =>\n left.position - right.position ||\n left.createdAt.localeCompare(right.createdAt)\n );\n const filtered = selected\n ? items.filter(\n (item) =>\n filter === \"all\" || getAuctionDisplayStatus(selected, item) === filter\n )\n : [];\n return (\n <section\n aria-busy={auctions.loading}\n aria-label=\"Auctions\"\n className={[\n \"lockerverse-auctions\",\n \"lockerverse-auctions--catalog\",\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n data-lockerverse-theme={theme}\n style={style}\n >\n <header className=\"lockerverse-auctions__catalog-header\">\n {selected ? (\n <button\n className=\"lockerverse-auctions__catalog-back\"\n onClick={() => {\n setSelectedId(null);\n setFilter(\"all\");\n }}\n type=\"button\"\n >\n <Icon kind=\"back\" />\n Auctions\n </button>\n ) : null}\n <h2 ref={headingRef} tabIndex={-1}>\n {selected?.name ?? \"Auctions\"}\n </h2>\n {selected?.description ? (\n <AuctionDescription description={selected.description} />\n ) : null}\n </header>\n {auctions.loading ? <p role=\"status\">Loading auctions…</p> : null}\n {auctions.error ? (\n <div role=\"alert\">\n <p>{auctions.error.message}</p>\n <button onClick={auctions.refresh} type=\"button\">\n Try again\n </button>\n </div>\n ) : null}\n {auctions.auctions && (selected || auctions.auctions.length > 0) ? (\n <>\n <div className=\"lockerverse-auctions__catalog-lineup\">\n <div>\n <h3>Auction lineup</h3>\n <p>Browse the current collection.</p>\n </div>\n <span>\n {selected\n ? `${filtered.length} ${filtered.length === 1 ? \"item\" : \"items\"}`\n : `${auctions.auctions.length} ${auctions.auctions.length === 1 ? \"auction\" : \"auctions\"}`}\n </span>\n </div>\n {selected ? (\n <fieldset\n aria-label=\"Filter auction items\"\n className=\"lockerverse-auctions__catalog-filters\"\n >\n {FILTERS.map((option) => (\n <button\n aria-pressed={filter === option.value}\n key={option.value}\n onClick={() => setFilter(option.value)}\n type=\"button\"\n >\n {option.label}\n <span>\n {option.value === \"all\"\n ? items.length\n : items.filter(\n (item) =>\n getAuctionDisplayStatus(selected, item) ===\n option.value\n ).length}\n </span>\n </button>\n ))}\n </fieldset>\n ) : null}\n </>\n ) : null}\n <CatalogResults\n auctions={auctions.auctions}\n filtered={filtered}\n onSelectAuction={(id) => {\n setSelectedId(id);\n setFilter(\"all\");\n }}\n onSelectItem={onSelectItem}\n selected={selected}\n />\n </section>\n );\n}\n\nfunction CatalogResults({\n selected,\n filtered,\n auctions,\n onSelectItem,\n onSelectAuction,\n}: {\n selected: LockerverseAuction | undefined;\n filtered: LockerverseAuctionItem[];\n auctions: LockerverseAuction[] | null;\n onSelectItem: LockerverseAuctionsProps[\"onSelectItem\"];\n onSelectAuction: (id: string) => void;\n}) {\n if (selected) {\n if (!filtered.length) {\n return (\n <p className=\"lockerverse-auctions__catalog-empty\">\n No items match this auction view.\n </p>\n );\n }\n return (\n <ul className=\"lockerverse-auctions__catalog-grid\">\n {filtered.map((item) => (\n <li key={item.id}>\n <ItemCard\n auction={selected}\n item={item}\n onSelect={() => onSelectItem(selected, item)}\n />\n </li>\n ))}\n </ul>\n );\n }\n if (!auctions) {\n return null;\n }\n if (!auctions.length) {\n return (\n <div className=\"lockerverse-auctions__catalog-empty\">\n <h3>No auctions yet.</h3>\n <p>Published auctions will appear here once they are available.</p>\n </div>\n );\n }\n return (\n <ul className=\"lockerverse-auctions__catalog-grid\">\n {auctions.map((auction) => (\n <li key={auction.id}>\n <AuctionCard\n auction={auction}\n onSelect={() => onSelectAuction(auction.id)}\n />\n </li>\n ))}\n </ul>\n );\n}\n","import {\n type CreateLockerverseAuctionOptions,\n createLockerverseAuctionClient,\n type LockerverseAuction,\n type LockerverseAuctionClient,\n type LockerverseSdkError,\n} from \"@lockerverse/sdk/auctions\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport { useImmutableResourceIdentity } from \"./immutable-resource-identity.ts\";\n\nexport type UseLockerverseAuctionsResult = {\n client: LockerverseAuctionClient;\n auctions: LockerverseAuction[] | null;\n loading: boolean;\n error: LockerverseSdkError | null;\n refresh: () => void;\n};\n\ntype AuctionLoadState = Pick<\n UseLockerverseAuctionsResult,\n \"auctions\" | \"error\"\n>;\n\nexport function useLockerverseAuctions(\n options: CreateLockerverseAuctionOptions\n): UseLockerverseAuctionsResult {\n useImmutableResourceIdentity(\"auctions\", {\n apiBaseUrl: options.apiBaseUrl,\n communitySlug: options.communitySlug,\n environment: options.environment,\n slug: \"\",\n });\n const onErrorRef = useRef(options.onError);\n onErrorRef.current = options.onError;\n const [client] = useState(() =>\n createLockerverseAuctionClient({\n ...options,\n onError: (error) => onErrorRef.current?.(error),\n })\n );\n const [revision, setRevision] = useState(0);\n const [state, setState] = useState<AuctionLoadState>({\n auctions: null,\n error: null,\n });\n useEffect(() => {\n let active = true;\n client.list().then(\n (auctions) => {\n if (active) {\n setState({ auctions, error: null });\n }\n },\n (error: LockerverseSdkError) => {\n if (active) {\n setState({ auctions: null, error });\n }\n }\n );\n return () => {\n active = false;\n };\n }, [client, revision]);\n const refresh = useCallback(() => {\n setState({ auctions: null, error: null });\n setRevision((value) => value + 1);\n }, []);\n return {\n ...state,\n client,\n loading: state.auctions === null && state.error === null,\n refresh,\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"auctions.js","names":[],"sources":["../src/lockerverse-auctions.tsx"],"sourcesContent":["import type { LockerverseAuction as Auction } from \"@lockerverse/sdk/auctions\";\nimport { ArrowRight, Gavel, ListChecks } from \"lucide-react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport {\n CatalogImage,\n Metric,\n STATUS_LABELS,\n Timing,\n} from \"./auction-catalog-parts.tsx\";\nimport { AuctionDescription } from \"./auction-description.tsx\";\nimport { getAuctionDisplayStatus } from \"./auction-display.ts\";\nimport {\n AuctionContent,\n type LockerverseAuctionProps,\n} from \"./lockerverse-auction.tsx\";\nimport { useAuctionBoundary } from \"./use-auction-boundary.ts\";\nimport type { UseLockerverseAuctionsResult } from \"./use-lockerverse-auctions.ts\";\n\nexport type LockerverseAuctionsProps = Omit<\n LockerverseAuctionProps,\n \"auction\" | \"onBack\"\n> & {\n auctions: UseLockerverseAuctionsResult;\n};\n\nfunction AuctionCard({\n auction,\n onSelect,\n}: {\n auction: Auction;\n onSelect: () => void;\n}) {\n useAuctionBoundary(auction.startAt, auction.endAt);\n const fallback =\n auction.configuration.image ||\n auction.items.find((item) => item.image || item.images.length)?.image ||\n auction.items.find((item) => item.images.length)?.images[0] ||\n auction.community?.banner ||\n auction.community?.thumbnail;\n const description =\n auction.description ||\n {\n active: \"Bidding is open across this auction's items.\",\n draft: \"Preview the lineup before bidding opens.\",\n finished: \"Bidding has wrapped. Review the completed items.\",\n }[getAuctionDisplayStatus(auction)];\n return (\n <article className=\"lockerverse-auctions__catalog-card\">\n <button\n aria-label={`View items in ${auction.name}`}\n className=\"lockerverse-auctions__catalog-select\"\n data-auction-id={auction.id}\n onClick={onSelect}\n type=\"button\"\n />\n <div className=\"lockerverse-auctions__catalog-media\">\n <CatalogImage fallback={fallback} name={auction.name} />\n <div className=\"lockerverse-auctions__catalog-chips\">\n <span className=\"lockerverse-auctions__catalog-chip\">\n {STATUS_LABELS[getAuctionDisplayStatus(auction)]}\n </span>\n <Timing auction={auction} />\n </div>\n <dl className=\"lockerverse-auctions__catalog-metrics\">\n <Metric\n icon={<ListChecks aria-hidden=\"true\" size={16} />}\n label=\"Items\"\n value={String(auction.items.length)}\n />\n <Metric\n icon={<Gavel aria-hidden=\"true\" size={16} />}\n label=\"Bids\"\n value={String(\n auction.items.reduce((sum, item) => sum + item.bidCount, 0)\n )}\n />\n </dl>\n </div>\n <div className=\"lockerverse-auctions__catalog-body\">\n <h3>{auction.name}</h3>\n <AuctionDescription\n className=\"lockerverse-auctions__catalog-description\"\n description={description}\n links={false}\n />\n <div className=\"lockerverse-auctions__catalog-footer\">\n <span className=\"lockerverse-auctions__catalog-cta\">\n {getAuctionDisplayStatus(auction) === \"draft\"\n ? \"Preview items\"\n : \"View items\"}\n </span>\n <span className=\"lockerverse-auctions__catalog-arrow\">\n <ArrowRight aria-hidden=\"true\" size={16} />\n </span>\n </div>\n </div>\n </article>\n );\n}\n\n/** Optional auction browser. Select an auction to show its items. */\nexport function LockerverseAuctions({\n auctions,\n onSelectItem,\n theme = \"dark\",\n style,\n className,\n showFilters = true,\n showHeader = true,\n showLineup = true,\n renderItem,\n}: LockerverseAuctionsProps) {\n const [selectedId, setSelectedId] = useState<string | null>(null);\n const headingRef = useRef<HTMLHeadingElement>(null);\n const sectionRef = useRef<HTMLElement>(null);\n const previousId = useRef(selectedId);\n const selected = auctions.auctions?.find(\n (auction) => auction.id === selectedId\n );\n useEffect(() => {\n if (previousId.current !== selectedId) {\n if (selectedId === null) {\n const card = [\n ...(sectionRef.current?.querySelectorAll<HTMLButtonElement>(\n \"button[data-auction-id]\"\n ) ?? []),\n ].find((button) => button.dataset.auctionId === previousId.current);\n (headingRef.current ?? card ?? sectionRef.current)?.focus();\n }\n previousId.current = selectedId;\n }\n }, [selectedId]);\n return (\n <section\n aria-busy={auctions.loading}\n aria-label=\"Auctions\"\n className={[\n \"lockerverse-auctions\",\n \"lockerverse-auctions--catalog\",\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n data-lockerverse-theme={theme}\n ref={sectionRef}\n style={style}\n tabIndex={-1}\n >\n {!selected && showHeader ? (\n <header className=\"lockerverse-auctions__catalog-header\">\n <h2 ref={headingRef} tabIndex={-1}>\n Auctions\n </h2>\n </header>\n ) : null}\n {auctions.loading ? <p role=\"status\">Loading auctions…</p> : null}\n {auctions.error ? (\n <div role=\"alert\">\n <p>{auctions.error.message}</p>\n <button onClick={auctions.refresh} type=\"button\">\n Try again\n </button>\n </div>\n ) : null}\n {selected ? (\n <AuctionContent\n auction={selected}\n key={selected.id}\n onBack={() => setSelectedId(null)}\n onSelectItem={onSelectItem}\n showFilters={showFilters}\n showHeader={showHeader}\n showLineup={showLineup}\n theme={theme}\n {...(style ? { style } : {})}\n {...(renderItem ? { renderItem } : {})}\n />\n ) : (\n <AuctionList\n auctions={auctions.auctions}\n onSelectAuction={setSelectedId}\n showLineup={showLineup}\n />\n )}\n </section>\n );\n}\n\nfunction AuctionList({\n auctions,\n showLineup,\n onSelectAuction,\n}: {\n auctions: Auction[] | null;\n showLineup: boolean;\n onSelectAuction: (id: string) => void;\n}) {\n if (!auctions) {\n return null;\n }\n if (!auctions.length) {\n return (\n <div className=\"lockerverse-auctions__catalog-empty\">\n <h3>No auctions yet.</h3>\n <p>Published auctions will appear here once they are available.</p>\n </div>\n );\n }\n return (\n <>\n {showLineup ? (\n <div className=\"lockerverse-auctions__catalog-lineup\">\n <div>\n <h3>Auction lineup</h3>\n <p>Browse the current collection.</p>\n </div>\n <span>\n {auctions.length} {auctions.length === 1 ? \"auction\" : \"auctions\"}\n </span>\n </div>\n ) : null}\n <ul className=\"lockerverse-auctions__catalog-grid\">\n {auctions.map((auction) => (\n <li key={auction.id}>\n <AuctionCard\n auction={auction}\n onSelect={() => onSelectAuction(auction.id)}\n />\n </li>\n ))}\n </ul>\n </>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"immutable-resource-identity.js","names":[],"sources":["../src/immutable-resource-identity.ts"],"sourcesContent":["import { useRef } from \"react\";\n\ntype LockerverseResourceIdentity = {\n apiBaseUrl: string | undefined;\n communitySlug: string;\n environment: string | undefined;\n slug: string;\n};\n\nfunction hasSameIdentity(\n initial: LockerverseResourceIdentity,\n current: LockerverseResourceIdentity\n) {\n return (\n initial.apiBaseUrl === current.apiBaseUrl &&\n initial.communitySlug === current.communitySlug &&\n initial.environment === current.environment &&\n initial.slug === current.slug\n );\n}\n\nexport function useImmutableResourceIdentity(\n resource: \"payment widget\" | \"signup\" | \"auctions\",\n identity: LockerverseResourceIdentity\n) {\n const initial = useRef(identity);\n if (!hasSameIdentity(initial.current, identity)) {\n throw new TypeError(\n `Lockerverse ${resource} identity cannot change after initialization. Remount with a new React key.`\n );\n }\n}\n"],"mappings":"+BASA,SAAS,EACP,EACA,EACA,CACA,OACE,EAAQ,aAAe,EAAQ,YAC/B,EAAQ,gBAAkB,EAAQ,eAClC,EAAQ,cAAgB,EAAQ,aAChC,EAAQ,OAAS,EAAQ,IAE7B,CAEA,SAAgB,EACd,EACA,EACA,CAEA,GAAI,CAAC,EADW,EAAO,CACI,CAAC,CAAC,QAAS,CAAQ,EAC5C,MAAU,UACR,eAAe,EAAS,4EAC1B,CAEJ"}
|
|
1
|
+
{"version":3,"file":"immutable-resource-identity.js","names":[],"sources":["../src/immutable-resource-identity.ts"],"sourcesContent":["import { useRef } from \"react\";\n\ntype LockerverseResourceIdentity = {\n apiBaseUrl: string | undefined;\n communitySlug: string;\n environment: string | undefined;\n slug: string;\n};\n\nfunction hasSameIdentity(\n initial: LockerverseResourceIdentity,\n current: LockerverseResourceIdentity\n) {\n return (\n initial.apiBaseUrl === current.apiBaseUrl &&\n initial.communitySlug === current.communitySlug &&\n initial.environment === current.environment &&\n initial.slug === current.slug\n );\n}\n\nexport function useImmutableResourceIdentity(\n resource: \"payment widget\" | \"signup\" | \"auctions\" | \"auction\",\n identity: LockerverseResourceIdentity\n) {\n const initial = useRef(identity);\n if (!hasSameIdentity(initial.current, identity)) {\n throw new TypeError(\n `Lockerverse ${resource} identity cannot change after initialization. Remount with a new React key.`\n );\n }\n}\n"],"mappings":"+BASA,SAAS,EACP,EACA,EACA,CACA,OACE,EAAQ,aAAe,EAAQ,YAC/B,EAAQ,gBAAkB,EAAQ,eAClC,EAAQ,cAAgB,EAAQ,aAChC,EAAQ,OAAS,EAAQ,IAE7B,CAEA,SAAgB,EACd,EACA,EACA,CAEA,GAAI,CAAC,EADW,EAAO,CACI,CAAC,CAAC,QAAS,CAAQ,EAC5C,MAAU,UACR,eAAe,EAAS,4EAC1B,CAEJ"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { n as LockerverseTheme, t as LockerverseStyle } from "./theme.js";
|
|
2
|
+
import { ReactNode } from "react";
|
|
3
|
+
import { LockerverseAuction, LockerverseAuctionItem, LockerverseAuctionStatus } from "@lockerverse/sdk/auctions";
|
|
4
|
+
//#region src/lockerverse-auction.d.ts
|
|
5
|
+
type LockerverseAuctionItemRenderContext = {
|
|
6
|
+
auction: LockerverseAuction;
|
|
7
|
+
item: LockerverseAuctionItem;
|
|
8
|
+
/** Effective auction and item status, including elapsed closing dates. */
|
|
9
|
+
status: LockerverseAuctionStatus;
|
|
10
|
+
onSelect: () => void;
|
|
11
|
+
/** Parent theme and Lockerverse CSS custom properties for default-card reuse. */
|
|
12
|
+
theme: LockerverseTheme;
|
|
13
|
+
style?: LockerverseStyle;
|
|
14
|
+
};
|
|
15
|
+
type LockerverseAuctionProps = {
|
|
16
|
+
auction: LockerverseAuction;
|
|
17
|
+
onSelectItem: (auction: LockerverseAuction, item: LockerverseAuctionItem) => void;
|
|
18
|
+
theme?: LockerverseTheme;
|
|
19
|
+
style?: LockerverseStyle;
|
|
20
|
+
className?: string;
|
|
21
|
+
showFilters?: boolean;
|
|
22
|
+
showHeader?: boolean;
|
|
23
|
+
showLineup?: boolean;
|
|
24
|
+
onBack?: () => void;
|
|
25
|
+
/** Replace the card inside each list item. Keep onSelect connected to your item view. */
|
|
26
|
+
renderItem?: (context: LockerverseAuctionItemRenderContext) => ReactNode;
|
|
27
|
+
};
|
|
28
|
+
/** Display one loaded auction. Fetching and item navigation stay with the host. */
|
|
29
|
+
declare function LockerverseAuction$1({ auction, onSelectItem, theme, style, className, showFilters, showHeader, showLineup, onBack, renderItem }: LockerverseAuctionProps): import("react").JSX.Element;
|
|
30
|
+
//#endregion
|
|
31
|
+
//#region src/lockerverse-auction-item-card.d.ts
|
|
32
|
+
type LockerverseAuctionItemCardProps = {
|
|
33
|
+
auction: LockerverseAuction;
|
|
34
|
+
item: LockerverseAuctionItem;
|
|
35
|
+
onSelect: () => void;
|
|
36
|
+
theme?: LockerverseTheme;
|
|
37
|
+
/** Applied to the scoped card container. */
|
|
38
|
+
className?: string;
|
|
39
|
+
style?: LockerverseStyle;
|
|
40
|
+
showDescription?: boolean;
|
|
41
|
+
showMetrics?: boolean;
|
|
42
|
+
showTiming?: boolean;
|
|
43
|
+
};
|
|
44
|
+
declare function LockerverseAuctionItemCard({ auction, item, onSelect, theme, className, style, showDescription, showMetrics, showTiming }: LockerverseAuctionItemCardProps): import("react").JSX.Element;
|
|
45
|
+
//#endregion
|
|
46
|
+
export { LockerverseAuctionProps as a, LockerverseAuctionItemRenderContext as i, LockerverseAuctionItemCardProps as n, LockerverseAuction$1 as r, LockerverseAuctionItemCard as t };
|
|
47
|
+
//# sourceMappingURL=lockerverse-auction-item-card.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lockerverse-auction-item-card.d.ts","names":[],"sources":["../src/lockerverse-auction.tsx","../src/lockerverse-auction-item-card.tsx"],"mappings":";;;;KAaY;EACV,SAAS;EACT,MAAM;;EAEN,QAAQ;EACR;;EAEA,OAAO;EACP,QAAQ;;KAEE;EACV,SAAS;EACT,eAAe,SAAS,oBAAS,MAAM;EACvC,QAAQ;EACR,QAAQ;EACR;EACA;EACA;EACA;EACA;;EAEA,cAAc,SAAS,wCAAwC;;;iBAWjD,uBACd,SACA,cACA,OACA,OACA,WACA,aACA,YACA,YACA,QACA,cACC,0CAAuB,IAAA;;;KCnCd;EACV,SAAS;EACT,MAAM;EACN;EACA,QAAQ;;EAER;EACA,QAAQ;EACR;EACA;EACA;;iBAoCc,6BACd,SACA,MACA,UACA,OACA,WACA,OACA,iBACA,aACA,cACC,kDAA+B,IAAA"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{a as e,i as t,n,o as r,r as i,s as a,t as o}from"./use-auction-boundary.js";import{ArrowRight as s,ChevronLeft as c,Clock3 as l,Gavel as u,ShoppingBag as d}from"lucide-react";import{useEffect as f,useMemo as p,useRef as m,useState as h}from"react";import{Fragment as g,jsx as _,jsxs as v}from"react/jsx-runtime";const y={active:`Live now`,draft:`Coming soon`,finished:`Closed`};function b({images:e,fallback:t,name:r}){let i=p(()=>{let n=[...new Set(e?.filter(Boolean))];return!n.length&&t&&n.push(t),n},[e,t]),[a,o]=h(0),{ref:s,visible:c}=n(),[l,u]=h(!0),[d,g]=h(!1),v=m(new Set),y=i.length,b=y?a%y:0;return f(()=>{let e=window.matchMedia(`(prefers-reduced-motion: reduce)`),t=()=>u(e.matches);t(),e.addEventListener(`change`,t);let n=s.current?.closest(`article`),r=()=>g(!!n?.matches(`:hover, :focus-within`)),i=e=>g(!!(n?.matches(`:hover`)||e.relatedTarget instanceof Node&&n?.contains(e.relatedTarget)));return r(),n?.addEventListener(`mouseenter`,r),n?.addEventListener(`mouseleave`,r),n?.addEventListener(`focusin`,r),n?.addEventListener(`focusout`,i),()=>{e.removeEventListener(`change`,t),n?.removeEventListener(`mouseenter`,r),n?.removeEventListener(`mouseleave`,r),n?.removeEventListener(`focusin`,r),n?.removeEventListener(`focusout`,i)}},[s]),f(()=>{if(y<2||!c||l||d)return;let e=window.setInterval(()=>{o(e=>v.current.has(i[(e+1)%y]??``)?(e+1)%y:e)},5e3);return()=>window.clearInterval(e)},[y,i,c,l,d]),_(`div`,{className:`lockerverse-auctions__catalog-images`,ref:s,children:y?[b,...y>1?[(b+1)%y]:[]].map(e=>_(`img`,{alt:e===b?r:``,"aria-hidden":e!==b,className:`lockerverse-auctions__catalog-photo`,"data-visible":e===b,height:500,loading:`lazy`,onLoad:()=>v.current.add(i[e]??``),src:i[e],width:640},i[e])):null})}function x({icon:e,label:t,value:n}){return v(`div`,{className:`lockerverse-auctions__catalog-metric`,children:[v(`dt`,{children:[e,t]}),_(`dd`,{children:n})]})}function S({auction:t,status:n=e(t),item:r=!1}){let a=``;return n===`draft`&&(a=`Opens `),n===`active`&&(a=r?`Closes `:`Ends `),v(`span`,{className:`lockerverse-auctions__catalog-timing`,children:[a,i(t,n)]})}function C(e,n){if(e.saleMode===`buy_now`){let i=r(e),a=n===`active`?`Buy now`:y[n];return{chip:i?`Sold out`:a,cta:i?`Sold out`:{active:`Buy now`,draft:`Preview item`,finished:`View item`}[n],price:t(e.buyNowPriceAmount??0),priceLabel:`Buy Now`,secondary:e.availableQuantity===null?`Available`:String(e.availableQuantity)}}return{chip:n===`active`?`Live`:y[n],cta:{active:`Bid now`,draft:`Preview item`,finished:`View item`}[n],price:n===`finished`&&!e.maxBidAmount?`No bids`:t(e.maxBidAmount??0),priceLabel:n===`finished`?`Final bid`:`Current`,secondary:t(e.minBidAmount??0)}}function w({auction:t,item:n,onSelect:r,theme:i=`dark`,className:c,style:f,showDescription:p=!0,showMetrics:m=!0,showTiming:h=!0}){o(t.startAt,t.endAt);let g=e(t,n),y=n.saleMode===`buy_now`,w=C(n,g);return _(`div`,{className:[`lockerverse-auctions`,`lockerverse-auctions--card`,c].filter(Boolean).join(` `),"data-lockerverse-theme":i,style:f,children:v(`article`,{className:`lockerverse-auctions__catalog-card`,children:[_(`button`,{"aria-label":`View ${n.name}`,className:`lockerverse-auctions__catalog-select`,onClick:r,type:`button`}),v(`div`,{className:`lockerverse-auctions__catalog-media`,children:[_(b,{fallback:n.image||t.configuration.image||t.community?.banner||t.community?.thumbnail,images:n.images,name:n.name}),v(`div`,{className:`lockerverse-auctions__catalog-chips`,children:[_(`span`,{className:`lockerverse-auctions__catalog-chip`,"data-live":g===`active`,children:w.chip}),h?_(S,{auction:n.finishedAt&&g===`finished`?{...t,endAt:n.finishedAt}:t,item:!0,status:g}):null]}),m?v(`dl`,{className:`lockerverse-auctions__catalog-metrics`,children:[_(x,{icon:_(y?d:u,{"aria-hidden":`true`,size:16}),label:w.priceLabel,value:w.price}),_(x,{icon:_(l,{"aria-hidden":`true`,size:16}),label:y?`Available`:`Floor`,value:w.secondary})]}):null]}),v(`div`,{className:`lockerverse-auctions__catalog-body`,children:[_(`h3`,{children:n.name}),p?_(a,{className:`lockerverse-auctions__catalog-description`,description:n.description||`View auction item details.`,links:!1}):null,_(`div`,{className:`lockerverse-auctions__catalog-footer lockerverse-auctions__catalog-footer--item`,children:v(`span`,{className:`lockerverse-auctions__catalog-cta`,children:[w.cta,_(s,{"aria-hidden":`true`,size:16})]})})]})]})})}const T=[{label:`All`,value:`all`},{label:`Live`,value:`active`},{label:`Upcoming`,value:`draft`},{label:`Closed`,value:`finished`}];function E({auction:e,onSelectItem:t,theme:n=`dark`,style:r,className:i,showFilters:a=!0,showHeader:o=!0,showLineup:s=!0,onBack:c,renderItem:l}){return _(`section`,{"aria-label":e.name,className:[`lockerverse-auctions`,`lockerverse-auctions--catalog`,i].filter(Boolean).join(` `),"data-lockerverse-theme":n,style:r,children:_(D,{auction:e,onSelectItem:t,showFilters:a,showHeader:o,showLineup:s,theme:n,...r?{style:r}:{},...c?{onBack:c}:{},...l?{renderItem:l}:{}})})}function D({auction:t,onSelectItem:n,theme:r=`dark`,style:i,showFilters:s=!0,showHeader:l=!0,showLineup:u=!0,onBack:d,renderItem:p}){o(t.startAt,t.endAt);let[y,b]=h({auctionId:t.id,value:`all`}),x=m(null),S=m(null),C=s&&y.auctionId===t.id?y.value:`all`;f(()=>{b({auctionId:t.id,value:`all`})},[t.id,s]);let E=!!d;f(()=>{E&&(x.current??S.current)?.focus()},[t.id,E,l]);let D=i?Object.fromEntries(Object.entries(i).filter(([e])=>e.startsWith(`--lockerverse-`))):void 0,O=[...t.items].sort((e,t)=>e.position-t.position||e.createdAt.localeCompare(t.createdAt)),k=O.filter(n=>C===`all`||e(t,n)===C);return v(g,{children:[d?v(`button`,{className:`lockerverse-auctions__catalog-back`,onClick:d,ref:S,type:`button`,children:[_(c,{"aria-hidden":`true`,size:16}),`Auctions`]}):null,l?v(`header`,{className:`lockerverse-auctions__catalog-header`,children:[_(`h2`,{ref:x,tabIndex:-1,children:t.name}),t.description?_(a,{description:t.description}):null]}):null,u?v(`div`,{className:`lockerverse-auctions__catalog-lineup`,children:[v(`div`,{children:[_(`h3`,{children:`Auction lineup`}),_(`p`,{children:`Browse the current collection.`})]}),v(`span`,{children:[k.length,` `,k.length===1?`item`:`items`]})]}):null,s?_(`fieldset`,{"aria-label":`Filter auction items`,className:`lockerverse-auctions__catalog-filters`,children:T.map(n=>v(`button`,{"aria-pressed":C===n.value,onClick:()=>b({auctionId:t.id,value:n.value}),type:`button`,children:[n.label,_(`span`,{children:n.value===`all`?O.length:O.filter(r=>e(t,r)===n.value).length})]},n.value))}):null,k.length?_(`ul`,{className:`lockerverse-auctions__catalog-grid`,children:k.map(i=>{let a={auction:t,item:i,onSelect:()=>n(t,i),status:e(t,i),theme:r};return D&&(a.style=D),_(`li`,{children:p?p(a):_(w,{...a})},i.id)})}):_(`p`,{className:`lockerverse-auctions__catalog-empty`,children:`No items match this auction view.`})]})}export{x as a,b as i,E as n,y as o,w as r,S as s,D as t};
|
|
2
|
+
//# sourceMappingURL=lockerverse-auction.js.map
|