@lockerverse/react 0.2.101 → 0.2.103
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 +128 -0
- package/dist/auction-catalog.css +8 -1
- package/dist/auction-checkout.css +2 -2
- 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 +302 -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/README.md
CHANGED
|
@@ -328,6 +328,14 @@ Malformed host selections and invalid custom tips render customer-safe validatio
|
|
|
328
328
|
|
|
329
329
|
## Auctions
|
|
330
330
|
|
|
331
|
+
For a page containing one auction, use `LockerverseAuction` from
|
|
332
|
+
`@lockerverse/react/auction` and `@lockerverse/react/auction.css`. Its header,
|
|
333
|
+
filters, and lineup can be hidden independently; `renderItem` can keep the
|
|
334
|
+
built-in card or supply a custom card. See the [auction composition reference](https://sdk.lockerverse.com/react/auctions)
|
|
335
|
+
and [complete example](https://sdk.lockerverse.com/examples/auctions).
|
|
336
|
+
The [State Lab](https://sdk.lockerverse.com/examples/state-lab) provides visibly
|
|
337
|
+
labelled local simulations of bid uncertainty and purchase recovery.
|
|
338
|
+
|
|
331
339
|
Browse auctions and open the built-in item checkout. The catalog entry does not
|
|
332
340
|
load Stripe. The checkout entry uses the optional Stripe peers listed above.
|
|
333
341
|
Import `auctions.css` for both components. Built-in auction checkout accepts
|
|
@@ -347,27 +355,33 @@ export function AuctionPage() {
|
|
|
347
355
|
auction: LockerverseAuction;
|
|
348
356
|
itemId: string;
|
|
349
357
|
} | null>(null);
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
358
|
+
const [locked, setLocked] = useState(false);
|
|
359
|
+
const [message, setMessage] = useState("");
|
|
360
|
+
|
|
361
|
+
return <>
|
|
362
|
+
<div hidden={Boolean(selected)}>
|
|
363
|
+
<LockerverseAuctions
|
|
364
|
+
auctions={auctions}
|
|
365
|
+
onSelectItem={(auction, item) => {
|
|
366
|
+
if (!locked) setSelected({ auction, itemId: item.id });
|
|
367
|
+
}}
|
|
368
|
+
theme="light"
|
|
369
|
+
/>
|
|
370
|
+
</div>
|
|
371
|
+
{selected && <LockerverseAuctionItem
|
|
372
|
+
key={`${selected.auction.id}:${selected.itemId}`}
|
|
353
373
|
auction={selected.auction}
|
|
354
374
|
client={auctions.client}
|
|
355
375
|
itemId={selected.itemId}
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
}}
|
|
362
|
-
theme="light"
|
|
363
|
-
/>
|
|
364
|
-
) : (
|
|
365
|
-
<LockerverseAuctions
|
|
366
|
-
auctions={auctions}
|
|
367
|
-
onSelectItem={(auction, item) => setSelected({ auction, itemId: item.id })}
|
|
376
|
+
onBack={locked ? undefined : () => setSelected(null)}
|
|
377
|
+
onInteractionLockChange={setLocked}
|
|
378
|
+
onBidSubmitted={() => { setMessage("Bid submitted; this is not a winning bid."); auctions.refresh(); }}
|
|
379
|
+
onPurchaseComplete={() => { setMessage("Payment complete."); auctions.refresh(); }}
|
|
380
|
+
onUncertain={(kind) => setMessage(`The ${kind} result is unknown. Keep this page open; do not submit another bid.`)}
|
|
368
381
|
theme="light"
|
|
369
|
-
/>
|
|
370
|
-
|
|
382
|
+
/>}
|
|
383
|
+
<p role="status">{message}</p>
|
|
384
|
+
</>;
|
|
371
385
|
}
|
|
372
386
|
```
|
|
373
387
|
|
|
@@ -389,7 +403,12 @@ the backend can reconcile Stripe status and send the purchase notification.
|
|
|
389
403
|
A `null` status lookup is not proof that an original in-flight request ended.
|
|
390
404
|
Any retry must keep the original `clientRequestId` and purchase details.
|
|
391
405
|
If a bid result is unknown, block a new bid and keep the support message visible.
|
|
392
|
-
|
|
406
|
+
Connect `onInteractionLockChange` to all host navigation, resource selectors, and
|
|
407
|
+
reset controls. A true lock covers submission and unresolved outcomes. Keep host
|
|
408
|
+
callback state above checkout. If checkout is unexpectedly removed after send,
|
|
409
|
+
known completion or uncertainty is still reported once for that operation;
|
|
410
|
+
no new Stripe action starts after unmount. Full page reload or browser shutdown
|
|
411
|
+
cannot guarantee callback delivery.
|
|
393
412
|
Never automatically retry a bid: the backend has no public bid recovery API.
|
|
394
413
|
|
|
395
414
|
For a host that needs recovery after navigation, connect
|
|
@@ -414,3 +433,21 @@ recovery in memory only and asks the customer to keep the page open.
|
|
|
414
433
|
|
|
415
434
|
The raw receipt endpoint returns amounts, not payment status. Do not use a
|
|
416
435
|
receipt response alone to show a payment as complete.
|
|
436
|
+
|
|
437
|
+
### Direct auction pages
|
|
438
|
+
|
|
439
|
+
Import `useLockerverseAuction` from `@lockerverse/react/auction-data` and call
|
|
440
|
+
`useLockerverseAuction({ communitySlug }, auctionSlug)` to load one auction.
|
|
441
|
+
This uses the detail endpoint; it never fetches the full community list.
|
|
442
|
+
Render `LockerverseAuction` from `@lockerverse/react/auction` with the result,
|
|
443
|
+
and import `@lockerverse/react/auction.css`. Use `auction-item` and its stylesheet
|
|
444
|
+
when opening built-in item details and checkout.
|
|
445
|
+
|
|
446
|
+
The singular hook returns `client`, `auction`, `loading`, `error`, and `refresh`.
|
|
447
|
+
Refresh retains the last good data. Keep checkout mounted across refresh and
|
|
448
|
+
errors. The item component applies new same-ID data while idle and preserves
|
|
449
|
+
its payment snapshot while payment is open. Connect `onInteractionLockChange`
|
|
450
|
+
to host navigation. Resource identity changes require a new React key.
|
|
451
|
+
|
|
452
|
+
[Complete direct-auction example](https://sdk.lockerverse.com/examples/auctions?community=lckrvrs-internal&auction=auction).
|
|
453
|
+
Built-in styled UI is the default for Lovable. There is no automatic headless switch.
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/* Reference: lockerverse-web-app-next auction pages at 8ead019. */
|
|
2
|
+
.lockerverse-auctions {
|
|
3
|
+
--lockerverse-auction-stat-bg: rgb(0 0 0 / 18%);
|
|
4
|
+
--lockerverse-auction-amount-bg: rgb(0 0 0 / 25%);
|
|
5
|
+
--lockerverse-auction-card-shadow: 0 28px 80px rgb(0 0 0 / 42%);
|
|
6
|
+
--lockerverse-auction-selection-shadow: 0 30px 90px rgb(0 0 0 / 20%);
|
|
7
|
+
--lockerverse-auction-checkout-shadow: 0 30px 90px rgb(0 0 0 / 45%);
|
|
8
|
+
--lockerverse-auction-action-shadow: 0 18px 40px rgb(0 0 0 / 32%);
|
|
9
|
+
--lockerverse-accent: #6f8f6d;
|
|
10
|
+
--lockerverse-bg: #050505;
|
|
11
|
+
--lockerverse-border: rgb(255 255 255 / 10%);
|
|
12
|
+
--lockerverse-control: #111216;
|
|
13
|
+
--lockerverse-muted: #bbb7c2;
|
|
14
|
+
--lockerverse-radius: 24px;
|
|
15
|
+
--lockerverse-text: #fff;
|
|
16
|
+
--lockerverse-font-family: ui-sans-serif, system-ui, sans-serif;
|
|
17
|
+
box-sizing: border-box;
|
|
18
|
+
width: 100%;
|
|
19
|
+
max-width: 1520px;
|
|
20
|
+
padding: 40px 32px;
|
|
21
|
+
margin-inline: auto;
|
|
22
|
+
container-type: inline-size;
|
|
23
|
+
font: 14px / 1.5 var(--lockerverse-font-family);
|
|
24
|
+
color: var(--lockerverse-text);
|
|
25
|
+
background: var(--lockerverse-bg);
|
|
26
|
+
border-radius: 0;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.lockerverse-auctions[data-lockerverse-theme="light"] {
|
|
30
|
+
--lockerverse-auction-stat-bg: var(--lockerverse-bg);
|
|
31
|
+
--lockerverse-auction-amount-bg: var(--lockerverse-bg);
|
|
32
|
+
--lockerverse-auction-card-shadow: 0 8px 24px rgb(0 0 0 / 6%);
|
|
33
|
+
--lockerverse-auction-selection-shadow: 0 8px 24px rgb(0 0 0 / 6%);
|
|
34
|
+
--lockerverse-auction-checkout-shadow: 0 8px 24px rgb(0 0 0 / 6%);
|
|
35
|
+
--lockerverse-auction-action-shadow: 0 4px 12px rgb(0 0 0 / 10%);
|
|
36
|
+
--lockerverse-bg: #fff;
|
|
37
|
+
--lockerverse-border: rgb(18 20 22 / 14%);
|
|
38
|
+
--lockerverse-control: #f5f6f7;
|
|
39
|
+
--lockerverse-muted: rgb(18 20 22 / 64%);
|
|
40
|
+
--lockerverse-text: #121416;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.lockerverse-auctions * {
|
|
44
|
+
box-sizing: border-box;
|
|
45
|
+
}
|
|
46
|
+
.lockerverse-auctions h2 {
|
|
47
|
+
margin: 0;
|
|
48
|
+
font-size: 24px;
|
|
49
|
+
line-height: 1.25;
|
|
50
|
+
text-wrap: balance;
|
|
51
|
+
}
|
|
52
|
+
.lockerverse-auctions h3 {
|
|
53
|
+
margin: 0;
|
|
54
|
+
font-size: 19px;
|
|
55
|
+
line-height: 1.3;
|
|
56
|
+
overflow-wrap: anywhere;
|
|
57
|
+
}
|
|
58
|
+
.lockerverse-auctions p {
|
|
59
|
+
margin: 8px 0;
|
|
60
|
+
color: var(--lockerverse-muted);
|
|
61
|
+
overflow-wrap: anywhere;
|
|
62
|
+
white-space: pre-line;
|
|
63
|
+
}
|
|
64
|
+
.lockerverse-auctions button {
|
|
65
|
+
font-family: inherit;
|
|
66
|
+
touch-action: manipulation;
|
|
67
|
+
cursor: pointer;
|
|
68
|
+
}
|
|
69
|
+
.lockerverse-auctions button:hover {
|
|
70
|
+
border-color: var(--lockerverse-text);
|
|
71
|
+
}
|
|
72
|
+
.lockerverse-auctions button:focus-visible,
|
|
73
|
+
.lockerverse-auctions h2:focus-visible {
|
|
74
|
+
outline: 2px solid var(--lockerverse-accent);
|
|
75
|
+
outline-offset: 3px;
|
|
76
|
+
}
|
|
77
|
+
.lockerverse-auctions__description {
|
|
78
|
+
line-height: 2;
|
|
79
|
+
overflow-wrap: anywhere;
|
|
80
|
+
}
|
|
81
|
+
.lockerverse-auctions__description p {
|
|
82
|
+
color: inherit;
|
|
83
|
+
}
|
|
84
|
+
.lockerverse-auctions__description ul {
|
|
85
|
+
padding-left: 20px;
|
|
86
|
+
list-style: disc;
|
|
87
|
+
}
|
|
88
|
+
.lockerverse-auctions__description ol {
|
|
89
|
+
padding-left: 20px;
|
|
90
|
+
list-style: decimal;
|
|
91
|
+
}
|
|
92
|
+
.lockerverse-auctions__description li {
|
|
93
|
+
margin-block: 4px;
|
|
94
|
+
}
|
|
95
|
+
.lockerverse-auctions__description a {
|
|
96
|
+
color: inherit;
|
|
97
|
+
text-decoration: underline;
|
|
98
|
+
}
|
|
99
|
+
.lockerverse-auctions__description blockquote {
|
|
100
|
+
padding-left: 16px;
|
|
101
|
+
margin-inline: 0;
|
|
102
|
+
border-left: 2px solid currentColor;
|
|
103
|
+
}
|
|
104
|
+
.lockerverse-auctions__description pre {
|
|
105
|
+
overflow-x: auto;
|
|
106
|
+
}
|
|
107
|
+
.lockerverse-auctions__description-clamped {
|
|
108
|
+
display: -webkit-box;
|
|
109
|
+
-webkit-box-orient: vertical;
|
|
110
|
+
overflow: hidden;
|
|
111
|
+
-webkit-line-clamp: 4;
|
|
112
|
+
}
|
|
113
|
+
.lockerverse-auctions .lockerverse-auctions__description-toggle {
|
|
114
|
+
display: inline-flex;
|
|
115
|
+
gap: 8px;
|
|
116
|
+
align-items: center;
|
|
117
|
+
min-height: 32px;
|
|
118
|
+
padding: 6px 12px;
|
|
119
|
+
margin-top: 12px;
|
|
120
|
+
font-size: 10px;
|
|
121
|
+
font-weight: 500;
|
|
122
|
+
color: var(--lockerverse-text);
|
|
123
|
+
text-transform: uppercase;
|
|
124
|
+
letter-spacing: 0.14em;
|
|
125
|
+
background: var(--lockerverse-control);
|
|
126
|
+
border: 1px solid var(--lockerverse-border);
|
|
127
|
+
border-radius: 999px;
|
|
128
|
+
}
|
package/dist/auction-catalog.css
CHANGED
|
@@ -104,7 +104,7 @@
|
|
|
104
104
|
background: var(--lockerverse-control, #0a0a0c);
|
|
105
105
|
border: 1px solid var(--lockerverse-border);
|
|
106
106
|
border-radius: 30px;
|
|
107
|
-
box-shadow:
|
|
107
|
+
box-shadow: var(--lockerverse-auction-card-shadow);
|
|
108
108
|
transition:
|
|
109
109
|
transform 0.3s,
|
|
110
110
|
border-color 0.3s;
|
|
@@ -346,3 +346,10 @@
|
|
|
346
346
|
transform: none;
|
|
347
347
|
}
|
|
348
348
|
}
|
|
349
|
+
|
|
350
|
+
.lockerverse-auctions.lockerverse-auctions--card {
|
|
351
|
+
width: 100%;
|
|
352
|
+
max-width: none;
|
|
353
|
+
padding: 0;
|
|
354
|
+
background: transparent;
|
|
355
|
+
}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
background: var(--lockerverse-control, #111216);
|
|
7
7
|
border: 1px solid var(--lockerverse-border);
|
|
8
8
|
border-radius: 32px;
|
|
9
|
-
box-shadow:
|
|
9
|
+
box-shadow: var(--lockerverse-auction-checkout-shadow);
|
|
10
10
|
}
|
|
11
11
|
.lockerverse-auctions__checkout-header,
|
|
12
12
|
.lockerverse-auctions__checkout-body {
|
|
@@ -197,7 +197,7 @@
|
|
|
197
197
|
text-transform: uppercase;
|
|
198
198
|
letter-spacing: 0.14em;
|
|
199
199
|
border-radius: 999px;
|
|
200
|
-
box-shadow:
|
|
200
|
+
box-shadow: var(--lockerverse-auction-action-shadow);
|
|
201
201
|
}
|
|
202
202
|
@media (max-width: 639px) {
|
|
203
203
|
.lockerverse-auctions__checkout-header,
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { n as useLockerverseAuctions, t as UseLockerverseAuctionsResult } from "./use-lockerverse-auctions.js";
|
|
2
|
+
import { CreateLockerverseAuctionOptions, LockerverseAuction, LockerverseAuctionClient, LockerverseSdkError } from "@lockerverse/sdk/auctions";
|
|
3
|
+
//#region src/use-lockerverse-auction.d.ts
|
|
4
|
+
type UseLockerverseAuctionResult = {
|
|
5
|
+
client: LockerverseAuctionClient;
|
|
6
|
+
/** Last successful snapshot, retained during refresh and refresh errors. */
|
|
7
|
+
auction: LockerverseAuction | null;
|
|
8
|
+
loading: boolean;
|
|
9
|
+
error: LockerverseSdkError | null;
|
|
10
|
+
refresh: () => void;
|
|
11
|
+
};
|
|
12
|
+
/** Load one auction by slug without requesting the community auction list. */
|
|
13
|
+
declare function useLockerverseAuction(options: CreateLockerverseAuctionOptions, auctionSlug: string): UseLockerverseAuctionResult;
|
|
14
|
+
//#endregion
|
|
15
|
+
export { type UseLockerverseAuctionResult, type UseLockerverseAuctionsResult, useLockerverseAuction, useLockerverseAuctions };
|
|
16
|
+
//# sourceMappingURL=auction-data.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auction-data.d.ts","names":[],"sources":["../src/use-lockerverse-auction.ts"],"mappings":";;;KAUY;EACV,QAAQ;;EAER,SAAS;EACT;EACA,OAAO;EACP;;;iBAIc,sBACd,SAAS,iCACT,sBACC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{t as e}from"./immutable-resource-identity.js";import{t}from"./use-lockerverse-auctions.js";import{useCallback as n,useEffect as r,useRef as i,useState as a}from"react";import{createLockerverseAuctionClient as o}from"@lockerverse/sdk/auctions";function s(t,s){e(`auction`,{apiBaseUrl:t.apiBaseUrl,communitySlug:t.communitySlug,environment:t.environment,slug:s});let c=i(t.onError);c.current=t.onError;let[l]=a(()=>o({...t,onError:e=>c.current?.(e)})),u=i(0),[d,f]=a(0),[p,m]=a({auction:null,error:null,loading:!0});r(()=>{let e=!0,t=u.current;return l.load(s).then(n=>{e&&t===u.current&&m({auction:n,error:null,loading:!1})},n=>{e&&t===u.current&&m(e=>({...e,error:n,loading:!1}))}),()=>{e=!1}},[l,s,d]);let h=n(()=>{u.current+=1,m(e=>({...e,error:null,loading:!0})),f(e=>e+1)},[]);return{...p,client:l,refresh:h}}export{s as useLockerverseAuction,t as useLockerverseAuctions};
|
|
2
|
+
//# sourceMappingURL=auction-data.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auction-data.js","names":[],"sources":["../src/use-lockerverse-auction.ts"],"sourcesContent":["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 UseLockerverseAuctionResult = {\n client: LockerverseAuctionClient;\n /** Last successful snapshot, retained during refresh and refresh errors. */\n auction: LockerverseAuction | null;\n loading: boolean;\n error: LockerverseSdkError | null;\n refresh: () => void;\n};\n\n/** Load one auction by slug without requesting the community auction list. */\nexport function useLockerverseAuction(\n options: CreateLockerverseAuctionOptions,\n auctionSlug: string\n): UseLockerverseAuctionResult {\n useImmutableResourceIdentity(\"auction\", {\n apiBaseUrl: options.apiBaseUrl,\n communitySlug: options.communitySlug,\n environment: options.environment,\n slug: auctionSlug,\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 generation = useRef(0);\n const [revision, setRevision] = useState(0);\n const [state, setState] = useState<\n Pick<UseLockerverseAuctionResult, \"auction\" | \"loading\" | \"error\">\n >({ auction: null, error: null, loading: true });\n\n useEffect(() => {\n let active = true;\n const requestGeneration = generation.current;\n client.load(auctionSlug).then(\n (auction) => {\n if (active && requestGeneration === generation.current) {\n setState({ auction, error: null, loading: false });\n }\n },\n (error: LockerverseSdkError) => {\n if (active && requestGeneration === generation.current) {\n setState((current) => ({ ...current, error, loading: false }));\n }\n }\n );\n return () => {\n active = false;\n };\n }, [client, auctionSlug, revision]);\n\n const refresh = useCallback(() => {\n generation.current += 1;\n setState((current) => ({ ...current, error: null, loading: true }));\n setRevision((current) => current + 1);\n }, []);\n\n return { ...state, client, refresh };\n}\n"],"mappings":"0PAoBA,SAAgB,EACd,EACA,EAC6B,CAC7B,EAA6B,UAAW,CACtC,WAAY,EAAQ,WACpB,cAAe,EAAQ,cACvB,YAAa,EAAQ,YACrB,KAAM,CACR,CAAC,EACD,IAAM,EAAa,EAAO,EAAQ,OAAO,EACzC,EAAW,QAAU,EAAQ,QAC7B,GAAM,CAAC,GAAU,MACf,EAA+B,CAC7B,GAAG,EACH,QAAU,GAAU,EAAW,UAAU,CAAK,CAChD,CAAC,CACH,EACM,EAAa,EAAO,CAAC,EACrB,CAAC,EAAU,GAAe,EAAS,CAAC,EACpC,CAAC,EAAO,GAAY,EAExB,CAAE,QAAS,KAAM,MAAO,KAAM,QAAS,EAAK,CAAC,EAE/C,MAAgB,CACd,IAAI,EAAS,GACP,EAAoB,EAAW,QAarC,OAZA,EAAO,KAAK,CAAW,CAAC,CAAC,KACtB,GAAY,CACP,GAAU,IAAsB,EAAW,SAC7C,EAAS,CAAE,UAAS,MAAO,KAAM,QAAS,EAAM,CAAC,CAErD,EACC,GAA+B,CAC1B,GAAU,IAAsB,EAAW,SAC7C,EAAU,IAAa,CAAE,GAAG,EAAS,QAAO,QAAS,EAAM,EAAE,CAEjE,CACF,MACa,CACX,EAAS,EACX,CACF,EAAG,CAAC,EAAQ,EAAa,CAAQ,CAAC,EAElC,IAAM,EAAU,MAAkB,CAChC,EAAW,SAAW,EACtB,EAAU,IAAa,CAAE,GAAG,EAAS,MAAO,KAAM,QAAS,EAAK,EAAE,EAClE,EAAa,GAAY,EAAU,CAAC,CACtC,EAAG,CAAC,CAAC,EAEL,MAAO,CAAE,GAAG,EAAO,SAAQ,SAAQ,CACrC"}
|
|
@@ -0,0 +1,302 @@
|
|
|
1
|
+
.lockerverse-auctions__field {
|
|
2
|
+
display: grid;
|
|
3
|
+
gap: 8px;
|
|
4
|
+
}
|
|
5
|
+
.lockerverse-auctions__field input {
|
|
6
|
+
width: 100%;
|
|
7
|
+
min-width: 0;
|
|
8
|
+
min-height: 48px;
|
|
9
|
+
padding: 10px 12px;
|
|
10
|
+
font: inherit;
|
|
11
|
+
font-size: 16px;
|
|
12
|
+
color: var(--lockerverse-text);
|
|
13
|
+
background: var(--lockerverse-control);
|
|
14
|
+
border: 1px solid var(--lockerverse-border);
|
|
15
|
+
border-radius: var(--lockerverse-radius);
|
|
16
|
+
}
|
|
17
|
+
.lockerverse-auctions__notice {
|
|
18
|
+
padding: 12px;
|
|
19
|
+
border: 1px solid var(--lockerverse-border);
|
|
20
|
+
border-radius: var(--lockerverse-radius);
|
|
21
|
+
}
|
|
22
|
+
.lockerverse-auctions input:focus-visible {
|
|
23
|
+
outline: 2px solid var(--lockerverse-accent);
|
|
24
|
+
outline-offset: 3px;
|
|
25
|
+
}
|
|
26
|
+
.lockerverse-auctions__detail {
|
|
27
|
+
display: grid;
|
|
28
|
+
grid-template-columns: minmax(360px, 0.9fr) minmax(540px, 1.1fr);
|
|
29
|
+
gap: 32px;
|
|
30
|
+
align-items: start;
|
|
31
|
+
}
|
|
32
|
+
.lockerverse-auctions__item-summary {
|
|
33
|
+
min-width: 0;
|
|
34
|
+
overflow: hidden;
|
|
35
|
+
background: var(--lockerverse-control);
|
|
36
|
+
border: 1px solid var(--lockerverse-border);
|
|
37
|
+
border-radius: 12px;
|
|
38
|
+
}
|
|
39
|
+
.lockerverse-auctions__item-copy {
|
|
40
|
+
padding: 20px 24px;
|
|
41
|
+
border-top: 1px solid var(--lockerverse-border);
|
|
42
|
+
}
|
|
43
|
+
.lockerverse-auctions__item-copy h2 {
|
|
44
|
+
margin-top: 16px;
|
|
45
|
+
font-size: 36px;
|
|
46
|
+
font-weight: 600;
|
|
47
|
+
line-height: 1.12;
|
|
48
|
+
}
|
|
49
|
+
.lockerverse-auctions .lockerverse-auctions__eyebrow {
|
|
50
|
+
margin: 0;
|
|
51
|
+
font-size: 11px;
|
|
52
|
+
font-weight: 500;
|
|
53
|
+
line-height: 1.7;
|
|
54
|
+
text-transform: uppercase;
|
|
55
|
+
letter-spacing: 0.18em;
|
|
56
|
+
}
|
|
57
|
+
.lockerverse-auctions__item-description {
|
|
58
|
+
margin-top: 16px;
|
|
59
|
+
}
|
|
60
|
+
.lockerverse-auctions__stat-panel {
|
|
61
|
+
margin: 20px 0 0;
|
|
62
|
+
overflow: hidden;
|
|
63
|
+
background: var(--lockerverse-auction-stat-bg);
|
|
64
|
+
border: 1px solid var(--lockerverse-border);
|
|
65
|
+
border-radius: 24px;
|
|
66
|
+
}
|
|
67
|
+
.lockerverse-auctions__stat-row {
|
|
68
|
+
display: flex;
|
|
69
|
+
gap: 16px;
|
|
70
|
+
align-items: center;
|
|
71
|
+
justify-content: space-between;
|
|
72
|
+
padding: 16px 24px;
|
|
73
|
+
border-bottom: 1px solid var(--lockerverse-border);
|
|
74
|
+
}
|
|
75
|
+
.lockerverse-auctions__stat-row:last-child {
|
|
76
|
+
border-bottom: 0;
|
|
77
|
+
}
|
|
78
|
+
.lockerverse-auctions__stat-panel dt {
|
|
79
|
+
font-size: 11px;
|
|
80
|
+
font-weight: 500;
|
|
81
|
+
color: var(--lockerverse-muted);
|
|
82
|
+
text-transform: uppercase;
|
|
83
|
+
letter-spacing: 0.12em;
|
|
84
|
+
}
|
|
85
|
+
.lockerverse-auctions__stat-panel dd {
|
|
86
|
+
margin: 0;
|
|
87
|
+
font-size: 20px;
|
|
88
|
+
font-weight: 500;
|
|
89
|
+
font-variant-numeric: tabular-nums;
|
|
90
|
+
text-align: right;
|
|
91
|
+
}
|
|
92
|
+
.lockerverse-auctions__stat-panel .lockerverse-auctions__stat-date {
|
|
93
|
+
font-size: 15px;
|
|
94
|
+
}
|
|
95
|
+
.lockerverse-auctions__stat-footer {
|
|
96
|
+
display: grid;
|
|
97
|
+
grid-template-columns: 1fr 1fr;
|
|
98
|
+
}
|
|
99
|
+
.lockerverse-auctions__stat-footer > div {
|
|
100
|
+
padding: 12px 24px;
|
|
101
|
+
}
|
|
102
|
+
.lockerverse-auctions__stat-footer > div + div {
|
|
103
|
+
border-left: 1px solid var(--lockerverse-border);
|
|
104
|
+
}
|
|
105
|
+
.lockerverse-auctions__stat-footer dd {
|
|
106
|
+
margin-top: 4px;
|
|
107
|
+
font-size: 14px;
|
|
108
|
+
text-align: left;
|
|
109
|
+
}
|
|
110
|
+
.lockerverse-auctions__transaction {
|
|
111
|
+
display: grid;
|
|
112
|
+
gap: 24px;
|
|
113
|
+
min-width: 0;
|
|
114
|
+
}
|
|
115
|
+
.lockerverse-auctions__progress {
|
|
116
|
+
display: flex;
|
|
117
|
+
flex-wrap: wrap;
|
|
118
|
+
gap: 8px;
|
|
119
|
+
padding: 24px;
|
|
120
|
+
background: rgb(128 128 128 / 4%);
|
|
121
|
+
border: 1px solid var(--lockerverse-border);
|
|
122
|
+
border-radius: 28px;
|
|
123
|
+
}
|
|
124
|
+
.lockerverse-auctions__progress span {
|
|
125
|
+
padding: 10px 16px;
|
|
126
|
+
font-size: 14px;
|
|
127
|
+
font-weight: 500;
|
|
128
|
+
border: 1px solid var(--lockerverse-border);
|
|
129
|
+
border-radius: 999px;
|
|
130
|
+
}
|
|
131
|
+
.lockerverse-auctions__selection {
|
|
132
|
+
overflow: hidden;
|
|
133
|
+
background: var(--lockerverse-control);
|
|
134
|
+
border: 1px solid var(--lockerverse-border);
|
|
135
|
+
border-radius: 32px;
|
|
136
|
+
box-shadow: var(--lockerverse-auction-selection-shadow);
|
|
137
|
+
}
|
|
138
|
+
.lockerverse-auctions__selection-header,
|
|
139
|
+
.lockerverse-auctions__selection-body {
|
|
140
|
+
padding: 28px;
|
|
141
|
+
}
|
|
142
|
+
.lockerverse-auctions__selection-header {
|
|
143
|
+
border-bottom: 1px solid var(--lockerverse-border);
|
|
144
|
+
}
|
|
145
|
+
.lockerverse-auctions__selection h3 {
|
|
146
|
+
margin-top: 12px;
|
|
147
|
+
font-size: 30px;
|
|
148
|
+
font-weight: 600;
|
|
149
|
+
letter-spacing: -0.04em;
|
|
150
|
+
}
|
|
151
|
+
.lockerverse-auctions__selection p {
|
|
152
|
+
margin-top: 12px;
|
|
153
|
+
font-size: 14px;
|
|
154
|
+
line-height: 2;
|
|
155
|
+
}
|
|
156
|
+
.lockerverse-auctions__selection strong {
|
|
157
|
+
color: var(--lockerverse-text);
|
|
158
|
+
}
|
|
159
|
+
.lockerverse-auctions__amount-control {
|
|
160
|
+
position: relative;
|
|
161
|
+
display: block;
|
|
162
|
+
}
|
|
163
|
+
.lockerverse-auctions__amount-control > span {
|
|
164
|
+
position: absolute;
|
|
165
|
+
top: 50%;
|
|
166
|
+
left: 20px;
|
|
167
|
+
font-size: 24px;
|
|
168
|
+
color: var(--lockerverse-muted);
|
|
169
|
+
transform: translateY(-50%);
|
|
170
|
+
}
|
|
171
|
+
.lockerverse-auctions__amount-control input {
|
|
172
|
+
height: 78px;
|
|
173
|
+
padding-left: 24px;
|
|
174
|
+
font-size: 36px;
|
|
175
|
+
font-weight: 600;
|
|
176
|
+
letter-spacing: -0.05em;
|
|
177
|
+
background: var(--lockerverse-auction-amount-bg);
|
|
178
|
+
border-radius: 24px;
|
|
179
|
+
}
|
|
180
|
+
.lockerverse-auctions__amount-control > span + input {
|
|
181
|
+
padding-left: 48px;
|
|
182
|
+
}
|
|
183
|
+
.lockerverse-auctions__selection-footer {
|
|
184
|
+
display: flex;
|
|
185
|
+
flex-wrap: wrap;
|
|
186
|
+
gap: 16px;
|
|
187
|
+
align-items: center;
|
|
188
|
+
justify-content: space-between;
|
|
189
|
+
padding-top: 20px;
|
|
190
|
+
margin-top: 24px;
|
|
191
|
+
border-top: 1px solid var(--lockerverse-border);
|
|
192
|
+
}
|
|
193
|
+
.lockerverse-auctions__selection-footer > p {
|
|
194
|
+
flex: 1 1 220px;
|
|
195
|
+
margin: 0;
|
|
196
|
+
}
|
|
197
|
+
.lockerverse-auctions .lockerverse-auctions__button {
|
|
198
|
+
display: inline-flex;
|
|
199
|
+
gap: 8px;
|
|
200
|
+
align-items: center;
|
|
201
|
+
justify-content: center;
|
|
202
|
+
min-height: 48px;
|
|
203
|
+
padding: 12px 24px;
|
|
204
|
+
font-size: 14px;
|
|
205
|
+
font-weight: 600;
|
|
206
|
+
color: #fff;
|
|
207
|
+
text-transform: uppercase;
|
|
208
|
+
letter-spacing: 0.14em;
|
|
209
|
+
background: var(--lockerverse-accent);
|
|
210
|
+
border: 0;
|
|
211
|
+
border-radius: 999px;
|
|
212
|
+
}
|
|
213
|
+
.lockerverse-auctions button:disabled {
|
|
214
|
+
cursor: not-allowed;
|
|
215
|
+
opacity: 0.5;
|
|
216
|
+
}
|
|
217
|
+
.lockerverse-auctions .lockerverse-auctions__back {
|
|
218
|
+
display: inline-flex;
|
|
219
|
+
gap: 8px;
|
|
220
|
+
align-items: center;
|
|
221
|
+
min-height: 40px;
|
|
222
|
+
padding: 8px 12px;
|
|
223
|
+
margin-bottom: 16px;
|
|
224
|
+
font-size: 14px;
|
|
225
|
+
font-weight: 500;
|
|
226
|
+
color: var(--lockerverse-text);
|
|
227
|
+
background: rgb(128 128 128 / 6%);
|
|
228
|
+
border: 1px solid var(--lockerverse-border);
|
|
229
|
+
border-radius: 999px;
|
|
230
|
+
}
|
|
231
|
+
.lockerverse-auctions .lockerverse-auctions__footer-back {
|
|
232
|
+
display: inline-flex;
|
|
233
|
+
gap: 8px;
|
|
234
|
+
align-items: center;
|
|
235
|
+
justify-self: end;
|
|
236
|
+
min-height: 44px;
|
|
237
|
+
padding: 0;
|
|
238
|
+
font-size: 14px;
|
|
239
|
+
font-weight: 500;
|
|
240
|
+
color: var(--lockerverse-muted);
|
|
241
|
+
background: transparent;
|
|
242
|
+
border: 0;
|
|
243
|
+
}
|
|
244
|
+
.lockerverse-auctions__read-only {
|
|
245
|
+
padding: 24px;
|
|
246
|
+
}
|
|
247
|
+
.lockerverse-auctions__read-only > p {
|
|
248
|
+
line-height: 2;
|
|
249
|
+
}
|
|
250
|
+
.lockerverse-auctions__read-only .lockerverse-auctions__button {
|
|
251
|
+
margin-top: 20px;
|
|
252
|
+
}
|
|
253
|
+
@media (max-width: 1279px) {
|
|
254
|
+
.lockerverse-auctions__detail {
|
|
255
|
+
grid-template-columns: minmax(0, 1fr);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
@media (max-width: 720px) {
|
|
259
|
+
.lockerverse-auctions__detail {
|
|
260
|
+
gap: 24px;
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
@media (max-width: 639px) {
|
|
264
|
+
.lockerverse-auctions {
|
|
265
|
+
padding: 32px 16px;
|
|
266
|
+
}
|
|
267
|
+
.lockerverse-auctions__item-copy {
|
|
268
|
+
padding: 20px;
|
|
269
|
+
}
|
|
270
|
+
.lockerverse-auctions__item-copy h2 {
|
|
271
|
+
font-size: 30px;
|
|
272
|
+
}
|
|
273
|
+
.lockerverse-auctions__selection-header,
|
|
274
|
+
.lockerverse-auctions__selection-body {
|
|
275
|
+
padding: 24px;
|
|
276
|
+
}
|
|
277
|
+
.lockerverse-auctions__selection-footer {
|
|
278
|
+
flex-direction: column;
|
|
279
|
+
align-items: stretch;
|
|
280
|
+
}
|
|
281
|
+
.lockerverse-auctions__selection-footer > p {
|
|
282
|
+
flex-basis: auto;
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
@container (max-width: 1150px) {
|
|
287
|
+
.lockerverse-auctions__detail {
|
|
288
|
+
grid-template-columns: minmax(0, 1fr);
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
.lockerverse-auctions__stat-row dt,
|
|
293
|
+
.lockerverse-auctions__progress span {
|
|
294
|
+
display: flex;
|
|
295
|
+
gap: 10px;
|
|
296
|
+
align-items: center;
|
|
297
|
+
}
|
|
298
|
+
.lockerverse-auctions__progress svg,
|
|
299
|
+
.lockerverse-auctions__stat-row dt svg {
|
|
300
|
+
flex-shrink: 0;
|
|
301
|
+
opacity: 0.65;
|
|
302
|
+
}
|
package/dist/auction-item.d.ts
CHANGED
|
@@ -17,6 +17,9 @@ type LockerverseAuctionItemProps = {
|
|
|
17
17
|
itemId: string;
|
|
18
18
|
/** Host navigation; the SDK does not depend on a router. */
|
|
19
19
|
onBack?: (() => void) | undefined;
|
|
20
|
+
/** Disable host navigation/reset while submitting or resolving an uncertain operation.
|
|
21
|
+
* This callback can run after unmount when a sent request resolves. */
|
|
22
|
+
onInteractionLockChange?: (locked: boolean) => void;
|
|
20
23
|
communityName?: string | undefined;
|
|
21
24
|
className?: string;
|
|
22
25
|
theme?: LockerverseTheme;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auction-item.d.ts","names":[],"sources":["../src/auction-item-types.ts","../src/lockerverse-auction-item.tsx"],"mappings":";;;;;KAaY;EACV;EACA;EACA,MAAM;EACN,SAAS,YAAY;EACrB,SAAS;EACT,YAAY;;KAGF;EACV,SAAS;EACT,QAAQ;EACR;;EAEA;
|
|
1
|
+
{"version":3,"file":"auction-item.d.ts","names":[],"sources":["../src/auction-item-types.ts","../src/lockerverse-auction-item.tsx"],"mappings":";;;;;KAaY;EACV;EACA;EACA,MAAM;EACN,SAAS,YAAY;EACrB,SAAS;EACT,YAAY;;KAGF;EACV,SAAS;EACT,QAAQ;EACR;;EAEA;;;EAGA,2BAA2B;EAC3B;EACA;EACA,QAAQ;EACR,QAAQ;EACR,eAAe;;EAEf,kBAAkB,QAAQ;;EAE1B,sBAAsB,QAAQ;EAC9B,4BACE,UAAU;EAEZ,eAAe;;EAEf,iBAAiB;;;;iBC4TH,uBAAuB,OAAO,8CAA2B,IAAA"}
|