@lockerverse/react 0.2.106-dev.1 → 0.2.109-dev.1
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 +8 -3
- package/dist/auction-base.css +1 -1
- package/dist/auction-catalog.css +1 -1
- package/dist/public-events.css +158 -24
- package/dist/public-events.d.ts.map +1 -1
- package/dist/public-events.js +1 -1
- package/dist/public-events.js.map +1 -1
- package/dist/signup.css +1 -2
- package/dist/styles.css +1 -2
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -261,7 +261,7 @@ Auction checkout, payment, and signup use common email, phone, field-error, and
|
|
|
261
261
|
|
|
262
262
|
Payment and auction Stripe forms resolve the rendered SDK font and theme tokens before passing them to Stripe. Custom font files are not loaded into Stripe by a font family name alone. See [the shared form foundation](https://github.com/Lockerverse/lockerverse-sdk/blob/main/docs/shared-form-foundation.md) for module boundaries and bundle measurement.
|
|
263
263
|
|
|
264
|
-
Use `theme="dark"` or `theme="light"
|
|
264
|
+
Use `theme="dark"` or `theme="light"` to match the host background. The outer payment, signup, auction, and Events widgets are transparent, so the host controls their canvas. Lockerverse applies the community branding returned by the widget API. Pass the same `LockerverseStyle` object to payment, signup, and donate launcher components.
|
|
265
265
|
|
|
266
266
|
```tsx
|
|
267
267
|
import type { LockerverseStyle } from "@lockerverse/react";
|
|
@@ -458,8 +458,8 @@ Built-in styled UI is the default for Lovable. There is no automatic headless sw
|
|
|
458
458
|
|
|
459
459
|
## Public event listings
|
|
460
460
|
|
|
461
|
-
Use the public Events entry to show
|
|
462
|
-
load ticket or payment UI.
|
|
461
|
+
Use the public Events entry to show publicly listed Events that are happening
|
|
462
|
+
now or start in the future. It does not load ticket or payment UI.
|
|
463
463
|
|
|
464
464
|
```tsx
|
|
465
465
|
import {
|
|
@@ -480,3 +480,8 @@ states. `title` sets the visible heading, `showHeading` can hide it, and
|
|
|
480
480
|
`timeZone` controls date display. The default time zone is
|
|
481
481
|
`America/New_York`. Use `style` with `LockerverseStyle` tokens or `className`
|
|
482
482
|
to match the host site. Links open in a new tab when they use HTTP or HTTPS.
|
|
483
|
+
Events can include an optional `imageUrl`. The list uses image cards when an
|
|
484
|
+
image is present and a date tile when it is absent. It groups events into
|
|
485
|
+
"Happening now" and "Upcoming" and shows a share action on each card. Sharing
|
|
486
|
+
uses the event link when one exists; otherwise it uses a link to the event card
|
|
487
|
+
on the host page.
|
package/dist/auction-base.css
CHANGED
package/dist/auction-catalog.css
CHANGED
package/dist/public-events.css
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
padding: 28px;
|
|
11
11
|
font: 14px / 1.5 var(--lockerverse-font-family);
|
|
12
12
|
color: var(--lockerverse-text);
|
|
13
|
-
background:
|
|
13
|
+
background: transparent;
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
.lockerverse-public-events[data-lockerverse-theme="light"] {
|
|
@@ -29,51 +29,78 @@
|
|
|
29
29
|
|
|
30
30
|
.lockerverse-public-events h2,
|
|
31
31
|
.lockerverse-public-events h3,
|
|
32
|
+
.lockerverse-public-events h4,
|
|
32
33
|
.lockerverse-public-events p {
|
|
33
34
|
margin: 0;
|
|
34
35
|
}
|
|
35
36
|
|
|
36
37
|
.lockerverse-public-events h2 {
|
|
37
|
-
margin-bottom:
|
|
38
|
+
margin-bottom: 28px;
|
|
38
39
|
font-size: 24px;
|
|
39
40
|
font-weight: 600;
|
|
40
41
|
line-height: 1.2;
|
|
41
42
|
text-wrap: balance;
|
|
42
43
|
}
|
|
43
44
|
|
|
44
|
-
.lockerverse-public-events
|
|
45
|
-
|
|
46
|
-
font-
|
|
47
|
-
|
|
45
|
+
.lockerverse-public-events h4 {
|
|
46
|
+
margin-top: 8px;
|
|
47
|
+
font-size: 20px;
|
|
48
|
+
font-weight: 650;
|
|
49
|
+
line-height: 1.25;
|
|
48
50
|
overflow-wrap: anywhere;
|
|
49
51
|
}
|
|
50
52
|
|
|
53
|
+
.lockerverse-public-events__group + .lockerverse-public-events__group {
|
|
54
|
+
margin-top: 32px;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
.lockerverse-public-events .lockerverse-public-events__group-title {
|
|
58
|
+
margin: 0 0 14px;
|
|
59
|
+
font-size: 13px;
|
|
60
|
+
font-weight: 700;
|
|
61
|
+
color: var(--lockerverse-muted);
|
|
62
|
+
text-transform: uppercase;
|
|
63
|
+
letter-spacing: 0.08em;
|
|
64
|
+
}
|
|
65
|
+
|
|
51
66
|
.lockerverse-public-events__list {
|
|
67
|
+
display: grid;
|
|
68
|
+
gap: 14px;
|
|
52
69
|
padding: 0;
|
|
53
70
|
margin: 0;
|
|
54
71
|
list-style: none;
|
|
55
72
|
}
|
|
56
73
|
|
|
57
74
|
.lockerverse-public-events__item {
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
.lockerverse-public-events__item:last-child {
|
|
62
|
-
border-bottom: 1px solid var(--lockerverse-border);
|
|
75
|
+
scroll-margin-top: 24px;
|
|
76
|
+
border: 1px solid var(--lockerverse-border);
|
|
77
|
+
border-radius: 12px;
|
|
63
78
|
}
|
|
64
79
|
|
|
65
80
|
.lockerverse-public-events__row {
|
|
66
81
|
display: grid;
|
|
67
|
-
grid-template-columns:
|
|
82
|
+
grid-template-columns: 154px minmax(0, 1fr);
|
|
68
83
|
gap: 20px;
|
|
69
|
-
padding:
|
|
84
|
+
padding: 16px;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
.lockerverse-public-events__image {
|
|
88
|
+
display: block;
|
|
89
|
+
width: 100%;
|
|
90
|
+
height: 124px;
|
|
91
|
+
object-fit: cover;
|
|
92
|
+
border-radius: 7px;
|
|
70
93
|
}
|
|
71
94
|
|
|
72
95
|
.lockerverse-public-events__date {
|
|
73
96
|
display: flex;
|
|
74
97
|
flex-direction: column;
|
|
75
|
-
align-items:
|
|
98
|
+
align-items: center;
|
|
99
|
+
justify-content: center;
|
|
100
|
+
min-height: 124px;
|
|
76
101
|
line-height: 1;
|
|
102
|
+
border: 1px solid var(--lockerverse-border);
|
|
103
|
+
border-radius: 7px;
|
|
77
104
|
}
|
|
78
105
|
|
|
79
106
|
.lockerverse-public-events__month {
|
|
@@ -85,16 +112,38 @@
|
|
|
85
112
|
}
|
|
86
113
|
|
|
87
114
|
.lockerverse-public-events__day {
|
|
88
|
-
margin-top:
|
|
89
|
-
font-size:
|
|
115
|
+
margin-top: 7px;
|
|
116
|
+
font-size: 38px;
|
|
90
117
|
font-weight: 600;
|
|
91
118
|
letter-spacing: -0.04em;
|
|
92
119
|
}
|
|
93
120
|
|
|
94
121
|
.lockerverse-public-events__content {
|
|
122
|
+
display: flex;
|
|
123
|
+
flex-direction: column;
|
|
124
|
+
align-items: flex-start;
|
|
95
125
|
min-width: 0;
|
|
96
126
|
}
|
|
97
127
|
|
|
128
|
+
.lockerverse-public-events__meta {
|
|
129
|
+
display: flex;
|
|
130
|
+
flex-wrap: wrap;
|
|
131
|
+
gap: 8px;
|
|
132
|
+
align-items: center;
|
|
133
|
+
font-size: 12px;
|
|
134
|
+
font-weight: 700;
|
|
135
|
+
color: var(--lockerverse-accent);
|
|
136
|
+
text-transform: uppercase;
|
|
137
|
+
letter-spacing: 0.04em;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
.lockerverse-public-events__live {
|
|
141
|
+
padding: 2px 7px;
|
|
142
|
+
color: var(--lockerverse-bg);
|
|
143
|
+
background: var(--lockerverse-accent);
|
|
144
|
+
border-radius: 999px;
|
|
145
|
+
}
|
|
146
|
+
|
|
98
147
|
.lockerverse-public-events .lockerverse-public-events__time,
|
|
99
148
|
.lockerverse-public-events .lockerverse-public-events__place {
|
|
100
149
|
margin-top: 5px;
|
|
@@ -102,17 +151,88 @@
|
|
|
102
151
|
}
|
|
103
152
|
|
|
104
153
|
.lockerverse-public-events .lockerverse-public-events__description {
|
|
105
|
-
margin-top:
|
|
154
|
+
margin-top: 10px;
|
|
106
155
|
overflow-wrap: anywhere;
|
|
107
156
|
white-space: pre-line;
|
|
108
157
|
}
|
|
109
158
|
|
|
110
|
-
.lockerverse-public-events
|
|
111
|
-
display:
|
|
159
|
+
.lockerverse-public-events .lockerverse-public-events__description--clamped {
|
|
160
|
+
display: -webkit-box;
|
|
161
|
+
-webkit-box-orient: vertical;
|
|
162
|
+
overflow: hidden;
|
|
163
|
+
-webkit-line-clamp: 2;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
.lockerverse-public-events .lockerverse-public-events__more {
|
|
167
|
+
min-height: 36px;
|
|
168
|
+
padding: 0;
|
|
169
|
+
margin: 2px 0 0;
|
|
170
|
+
font-size: 13px;
|
|
171
|
+
font-weight: 600;
|
|
172
|
+
color: var(--lockerverse-accent);
|
|
173
|
+
border: 0;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
.lockerverse-public-events__actions {
|
|
177
|
+
display: flex;
|
|
178
|
+
flex-wrap: wrap;
|
|
179
|
+
gap: 10px;
|
|
180
|
+
align-items: center;
|
|
112
181
|
margin-top: 14px;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
.lockerverse-public-events .lockerverse-public-events__link {
|
|
185
|
+
display: inline-flex;
|
|
186
|
+
gap: 8px;
|
|
187
|
+
align-items: center;
|
|
188
|
+
min-height: 44px;
|
|
189
|
+
padding: 8px 14px;
|
|
190
|
+
margin: 0;
|
|
113
191
|
font-weight: 600;
|
|
114
192
|
color: var(--lockerverse-accent);
|
|
115
|
-
text-
|
|
193
|
+
text-decoration: none;
|
|
194
|
+
border: 1px solid var(--lockerverse-border);
|
|
195
|
+
border-radius: 8px;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
.lockerverse-public-events .lockerverse-public-events__link:hover {
|
|
199
|
+
border-color: var(--lockerverse-accent);
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
.lockerverse-public-events .lockerverse-public-events__share {
|
|
203
|
+
display: inline-flex;
|
|
204
|
+
gap: 8px;
|
|
205
|
+
align-items: center;
|
|
206
|
+
padding: 8px 10px;
|
|
207
|
+
margin: 0;
|
|
208
|
+
font-weight: 600;
|
|
209
|
+
color: var(--lockerverse-muted);
|
|
210
|
+
border: 1px solid transparent;
|
|
211
|
+
border-radius: 8px;
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
.lockerverse-public-events .lockerverse-public-events__share:hover {
|
|
215
|
+
color: var(--lockerverse-text);
|
|
216
|
+
border-color: var(--lockerverse-border);
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
.lockerverse-public-events__copy-link {
|
|
220
|
+
display: grid;
|
|
221
|
+
gap: 5px;
|
|
222
|
+
width: 100%;
|
|
223
|
+
margin-top: 12px;
|
|
224
|
+
font-size: 12px;
|
|
225
|
+
color: var(--lockerverse-muted);
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
.lockerverse-public-events__copy-link input {
|
|
229
|
+
width: 100%;
|
|
230
|
+
padding: 8px;
|
|
231
|
+
font: inherit;
|
|
232
|
+
color: var(--lockerverse-text);
|
|
233
|
+
background: transparent;
|
|
234
|
+
border: 1px solid var(--lockerverse-border);
|
|
235
|
+
border-radius: 6px;
|
|
116
236
|
}
|
|
117
237
|
|
|
118
238
|
.lockerverse-public-events a:focus-visible,
|
|
@@ -139,15 +259,29 @@
|
|
|
139
259
|
|
|
140
260
|
@media (max-width: 500px) {
|
|
141
261
|
.lockerverse-public-events {
|
|
142
|
-
padding: 20px;
|
|
262
|
+
padding: 20px 8px;
|
|
143
263
|
}
|
|
144
264
|
|
|
145
265
|
.lockerverse-public-events__row {
|
|
146
|
-
grid-template-columns:
|
|
147
|
-
gap:
|
|
266
|
+
grid-template-columns: 72px minmax(0, 1fr);
|
|
267
|
+
gap: 12px;
|
|
268
|
+
padding: 12px;
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
.lockerverse-public-events__row--with-image {
|
|
272
|
+
grid-template-columns: minmax(0, 1fr);
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
.lockerverse-public-events__image {
|
|
276
|
+
height: auto;
|
|
277
|
+
aspect-ratio: 16 / 9;
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
.lockerverse-public-events__date {
|
|
281
|
+
min-height: 72px;
|
|
148
282
|
}
|
|
149
283
|
|
|
150
284
|
.lockerverse-public-events__day {
|
|
151
|
-
font-size:
|
|
285
|
+
font-size: 30px;
|
|
152
286
|
}
|
|
153
287
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public-events.d.ts","names":[],"sources":["../src/use-lockerverse-public-events.ts","../src/lockerverse-public-events.tsx"],"mappings":";;;KAUY;EACV,QAAQ;EACR,QAAQ;EACR;EACA,OAAO;EACP;;;iBAIc,2BACd,SAAS,uCACR;;;
|
|
1
|
+
{"version":3,"file":"public-events.d.ts","names":[],"sources":["../src/use-lockerverse-public-events.ts","../src/lockerverse-public-events.tsx"],"mappings":";;;KAUY;EACV,QAAQ;EACR,QAAQ;EACR;EACA,OAAO;EACP;;;iBAIc,2BACd,SAAS,uCACR;;;KCfS;EACV,QAAQ;;EAER;EACA;EACA;;EAEA;EACA,QAAQ;EACR,QAAQ;EACR;;;iBA4Mc,0BACd,QACA,OACA,aACA,cACA,UACA,OACA,OACA,aACC,+CAA4B,IAAA"}
|
package/dist/public-events.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{t as e}from"./immutable-resource-identity.js";import{useCallback as
|
|
1
|
+
import{t as e}from"./immutable-resource-identity.js";import{Share2 as t}from"lucide-react";import{useCallback as n,useEffect as r,useRef as i,useState as a}from"react";import{Fragment as o,jsx as s,jsxs as c}from"react/jsx-runtime";import{createLockerversePublicEventsClient as l}from"@lockerverse/sdk/public-events";function u(e,t){return new Intl.DateTimeFormat(`en-US`,{day:`numeric`,month:`short`,timeZone:t,year:`numeric`}).format(new Date(e))}function d(e,t){return new Intl.DateTimeFormat(`en-US`,{hour:`numeric`,minute:`2-digit`,timeZone:t,timeZoneName:`short`}).format(new Date(e))}function f(e){if(!e)return null;try{let t=new URL(e);return t.protocol===`https:`||t.protocol===`http:`?t.toString():null}catch{return null}}function p(e){let t=f(e.link);if(t)return t;let n=new URL(window.location.href);return n.hash=`event-${e.id}`,n.toString()}function m({item:e,timeZone:n,active:r}){let[i,l]=a(!1),[m,h]=a(!1),[g,_]=a(null),v=new Date(e.startAt),y=new Intl.DateTimeFormat(`en-US`,{month:`short`,timeZone:n}).format(v),b=new Intl.DateTimeFormat(`en-US`,{day:`numeric`,timeZone:n}).format(v),x=u(e.startAt,n)===u(e.endAt,n)?d(e.endAt,n):`${u(e.endAt,n)} at ${d(e.endAt,n)}`,S=f(e.link),C=f(e.imageUrl),w=(e.description?.length??0)>130;async function T(){let t=p(e);if(navigator.share)try{await navigator.share({title:e.name,url:t});return}catch(e){if(e instanceof DOMException&&e.name===`AbortError`)return}try{await navigator.clipboard.writeText(t),h(!0)}catch{_(t)}}return s(`li`,{className:`lockerverse-public-events__item`,id:`event-${e.id}`,children:c(`article`,{className:[`lockerverse-public-events__row`,C?`lockerverse-public-events__row--with-image`:``].filter(Boolean).join(` `),children:[C?s(`img`,{alt:``,className:`lockerverse-public-events__image`,height:124,loading:`lazy`,src:C,width:154}):c(`div`,{"aria-hidden":`true`,className:`lockerverse-public-events__date`,children:[s(`span`,{className:`lockerverse-public-events__month`,children:y}),s(`span`,{className:`lockerverse-public-events__day`,children:b})]}),c(`div`,{className:`lockerverse-public-events__content`,children:[c(`div`,{className:`lockerverse-public-events__meta`,children:[s(`time`,{dateTime:e.startAt,children:u(e.startAt,n)}),r?s(`span`,{className:`lockerverse-public-events__live`,children:`Live now`}):null]}),s(`h4`,{children:e.name}),c(`p`,{className:`lockerverse-public-events__time`,children:[s(`time`,{dateTime:e.startAt,children:d(e.startAt,n)}),s(`span`,{"aria-hidden":`true`,children:` — `}),s(`time`,{dateTime:e.endAt,children:x})]}),e.location?s(`p`,{className:`lockerverse-public-events__place`,children:e.location}):null,e.description?c(o,{children:[s(`p`,{className:[`lockerverse-public-events__description`,w&&!i?`lockerverse-public-events__description--clamped`:``].filter(Boolean).join(` `),children:e.description}),w?s(`button`,{"aria-expanded":i,className:`lockerverse-public-events__more`,onClick:()=>l(!i),type:`button`,children:i?`Show less`:`Read more`}):null]}):null,c(`div`,{className:`lockerverse-public-events__actions`,children:[S?c(`a`,{className:`lockerverse-public-events__link`,href:S,rel:`noopener noreferrer`,target:`_blank`,children:[`View event `,s(`span`,{"aria-hidden":`true`,children:`↗`})]}):null,c(`button`,{"aria-label":`Share ${e.name}`,className:`lockerverse-public-events__share`,onClick:T,type:`button`,children:[s(t,{"aria-hidden":`true`,size:16,strokeWidth:1.8}),m?`Link copied`:`Share`]})]}),g?c(`label`,{className:`lockerverse-public-events__copy-link`,children:[`Copy event link`,s(`input`,{onFocus:e=>e.currentTarget.select(),readOnly:!0,value:g})]}):null]})]})})}function h({events:e,title:t=`Events`,showHeading:n=!0,emptyMessage:i=`No events yet.`,timeZone:o=`America/New_York`,theme:l=`dark`,style:u,className:d}){let[f,p]=a(()=>Date.now());r(()=>{let e=window.setInterval(()=>p(Date.now()),6e4);return()=>window.clearInterval(e)},[]);let h=e.events||[],g=h.filter(e=>new Date(e.startAt).getTime()<=f&&new Date(e.endAt).getTime()>f),_=h.filter(e=>new Date(e.startAt).getTime()>f);return c(`section`,{"aria-busy":e.loading,"aria-label":t,className:[`lockerverse-public-events`,d].filter(Boolean).join(` `),"data-lockerverse-theme":l,style:u,children:[n?s(`h2`,{children:t}):null,e.loading&&!e.events?s(`p`,{role:`status`,children:`Loading events…`}):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,e.events&&g.length===0&&_.length===0?s(`p`,{className:`lockerverse-public-events__empty`,children:i}):null,g.length>0?c(`div`,{className:`lockerverse-public-events__group`,children:[s(`h3`,{className:`lockerverse-public-events__group-title`,children:`Happening now`}),s(`ol`,{className:`lockerverse-public-events__list`,children:g.map(e=>s(m,{active:!0,item:e,timeZone:o},e.id))})]}):null,_.length>0?c(`div`,{className:`lockerverse-public-events__group`,children:[s(`h3`,{className:`lockerverse-public-events__group-title`,children:`Upcoming`}),s(`ol`,{className:`lockerverse-public-events__list`,children:_.map(e=>s(m,{active:!1,item:e,timeZone:o},e.id))})]}):null]})}function g(t){e(`public events`,{apiBaseUrl:t.apiBaseUrl,communitySlug:t.communitySlug,environment:t.environment,slug:``});let o=i(t.onError);o.current=t.onError;let[s]=a(()=>l({...t,onError:e=>o.current?.(e)})),[c,u]=a(0),[d,f]=a({error:null,events:null,loading:!0});r(()=>{let e=!0;return s.list().then(t=>{e&&f({error:null,events:t,loading:!1})},t=>{e&&f(e=>({...e,error:t,loading:!1}))}),()=>{e=!1}},[s,c]);let p=n(()=>{f(e=>({...e,error:null,loading:!0})),u(e=>e+1)},[]);return{...d,client:s,refresh:p}}export{h as LockerversePublicEvents,g as useLockerversePublicEvents};
|
|
2
2
|
//# sourceMappingURL=public-events.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public-events.js","names":[],"sources":["../src/lockerverse-public-events.tsx","../src/use-lockerverse-public-events.ts"],"sourcesContent":["import type { LockerversePublicEvent } from \"@lockerverse/sdk/public-events\";\nimport type { LockerverseStyle, LockerverseTheme } from \"./theme.ts\";\nimport type { UseLockerversePublicEventsResult } from \"./use-lockerverse-public-events.ts\";\n\nexport type LockerversePublicEventsProps = {\n events: UseLockerversePublicEventsResult;\n /** The visible heading. Defaults to Events. */\n title?: string;\n showHeading?: boolean;\n emptyMessage?: string;\n /** Used to show dates and times. Defaults to America/New_York. */\n timeZone?: string;\n theme?: LockerverseTheme;\n style?: LockerverseStyle;\n className?: string;\n};\n\nfunction formatDate(value: string, timeZone: string) {\n return new Intl.DateTimeFormat(\"en-US\", {\n day: \"numeric\",\n month: \"short\",\n timeZone,\n year: \"numeric\",\n }).format(new Date(value));\n}\n\nfunction formatTime(value: string, timeZone: string) {\n return new Intl.DateTimeFormat(\"en-US\", {\n hour: \"numeric\",\n minute: \"2-digit\",\n timeZone,\n timeZoneName: \"short\",\n }).format(new Date(value));\n}\n\nfunction getLink(value: string | null) {\n if (!value) {\n return null;\n }\n try {\n const url = new URL(value);\n return url.protocol === \"https:\" || url.protocol === \"http:\"\n ? url.toString()\n : null;\n } catch {\n return null;\n }\n}\n\nfunction PublicEventRow({\n item,\n timeZone,\n}: {\n item: LockerversePublicEvent;\n timeZone: string;\n}) {\n const start = new Date(item.startAt);\n const month = new Intl.DateTimeFormat(\"en-US\", {\n month: \"short\",\n timeZone,\n }).format(start);\n const day = new Intl.DateTimeFormat(\"en-US\", {\n day: \"numeric\",\n timeZone,\n }).format(start);\n const sameDay =\n formatDate(item.startAt, timeZone) === formatDate(item.endAt, timeZone);\n const endLabel = sameDay\n ? formatTime(item.endAt, timeZone)\n : `${formatDate(item.endAt, timeZone)} at ${formatTime(item.endAt, timeZone)}`;\n const link = getLink(item.link);\n\n return (\n <li className=\"lockerverse-public-events__item\">\n <article className=\"lockerverse-public-events__row\">\n <div aria-hidden=\"true\" className=\"lockerverse-public-events__date\">\n <span className=\"lockerverse-public-events__month\">{month}</span>\n <span className=\"lockerverse-public-events__day\">{day}</span>\n </div>\n <div className=\"lockerverse-public-events__content\">\n <h3>{item.name}</h3>\n <p className=\"lockerverse-public-events__time\">\n <time dateTime={item.startAt}>\n {formatDate(item.startAt, timeZone)} at{\" \"}\n {formatTime(item.startAt, timeZone)}\n </time>\n <span aria-hidden=\"true\"> — </span>\n <time dateTime={item.endAt}>{endLabel}</time>\n </p>\n {item.location ? (\n <p className=\"lockerverse-public-events__place\">{item.location}</p>\n ) : null}\n {item.description ? (\n <p className=\"lockerverse-public-events__description\">\n {item.description}\n </p>\n ) : null}\n {link ? (\n <a href={link} rel=\"noopener noreferrer\" target=\"_blank\">\n Event details <span aria-hidden=\"true\">↗</span>\n </a>\n ) : null}\n </div>\n </article>\n </li>\n );\n}\n\n/** Optional public list that can be embedded in any React site. */\nexport function LockerversePublicEvents({\n events,\n title = \"Events\",\n showHeading = true,\n emptyMessage = \"No events yet.\",\n timeZone = \"America/New_York\",\n theme = \"dark\",\n style,\n className,\n}: LockerversePublicEventsProps) {\n return (\n <section\n aria-busy={events.loading}\n aria-label={title}\n className={[\"lockerverse-public-events\", className]\n .filter(Boolean)\n .join(\" \")}\n data-lockerverse-theme={theme}\n style={style}\n >\n {showHeading ? <h2>{title}</h2> : null}\n {events.loading && !events.events ? (\n <p role=\"status\">Loading events…</p>\n ) : null}\n {events.error ? (\n <div role=\"alert\">\n <p>{events.error.message}</p>\n <button onClick={events.refresh} type=\"button\">\n Try again\n </button>\n </div>\n ) : null}\n {events.events?.length === 0 ? (\n <p className=\"lockerverse-public-events__empty\">{emptyMessage}</p>\n ) : null}\n {events.events && events.events.length > 0 ? (\n <ol className=\"lockerverse-public-events__list\">\n {events.events.map((item) => (\n <PublicEventRow item={item} key={item.id} timeZone={timeZone} />\n ))}\n </ol>\n ) : null}\n </section>\n );\n}\n","import {\n type CreateLockerversePublicEventsOptions,\n createLockerversePublicEventsClient,\n type LockerversePublicEvent,\n type LockerversePublicEventsClient,\n type LockerverseSdkError,\n} from \"@lockerverse/sdk/public-events\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport { useImmutableResourceIdentity } from \"./immutable-resource-identity.ts\";\n\nexport type UseLockerversePublicEventsResult = {\n client: LockerversePublicEventsClient;\n events: LockerversePublicEvent[] | null;\n loading: boolean;\n error: LockerverseSdkError | null;\n refresh: () => void;\n};\n\n/** Load the public events list for one community. */\nexport function useLockerversePublicEvents(\n options: CreateLockerversePublicEventsOptions\n): UseLockerversePublicEventsResult {\n useImmutableResourceIdentity(\"public events\", {\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 createLockerversePublicEventsClient({\n ...options,\n onError: (error) => onErrorRef.current?.(error),\n })\n );\n const [revision, setRevision] = useState(0);\n const [state, setState] = useState<\n Pick<UseLockerversePublicEventsResult, \"events\" | \"loading\" | \"error\">\n >({ error: null, events: null, loading: true });\n\n useEffect(() => {\n let active = true;\n client.list().then(\n (events) => {\n if (active) {\n setState({ error: null, events, loading: false });\n }\n },\n (error: LockerverseSdkError) => {\n if (active) {\n setState((current) => ({ ...current, error, loading: false }));\n }\n }\n );\n return () => {\n active = false;\n };\n }, [client, revision]);\n\n const refresh = useCallback(() => {\n setState((current) => ({ ...current, error: null, loading: true }));\n setRevision((current) => current + 1);\n }, []);\n\n return { ...state, client, refresh };\n}\n"],"mappings":"yQAiBA,SAAS,EAAW,EAAe,EAAkB,CACnD,OAAO,IAAI,KAAK,eAAe,QAAS,CACtC,IAAK,UACL,MAAO,QACP,WACA,KAAM,SACR,CAAC,CAAC,CAAC,OAAO,IAAI,KAAK,CAAK,CAAC,CAC3B,CAEA,SAAS,EAAW,EAAe,EAAkB,CACnD,OAAO,IAAI,KAAK,eAAe,QAAS,CACtC,KAAM,UACN,OAAQ,UACR,WACA,aAAc,OAChB,CAAC,CAAC,CAAC,OAAO,IAAI,KAAK,CAAK,CAAC,CAC3B,CAEA,SAAS,EAAQ,EAAsB,CACrC,GAAI,CAAC,EACH,OAAO,KAET,GAAI,CACF,IAAM,EAAM,IAAI,IAAI,CAAK,EACzB,OAAO,EAAI,WAAa,UAAY,EAAI,WAAa,QACjD,EAAI,SAAS,EACb,IACN,MAAQ,CACN,OAAO,IACT,CACF,CAEA,SAAS,EAAe,CACtB,OACA,YAIC,CACD,IAAM,EAAQ,IAAI,KAAK,EAAK,OAAO,EAC7B,EAAQ,IAAI,KAAK,eAAe,QAAS,CAC7C,MAAO,QACP,UACF,CAAC,CAAC,CAAC,OAAO,CAAK,EACT,EAAM,IAAI,KAAK,eAAe,QAAS,CAC3C,IAAK,UACL,UACF,CAAC,CAAC,CAAC,OAAO,CAAK,EAGT,EADJ,EAAW,EAAK,QAAS,CAAQ,IAAM,EAAW,EAAK,MAAO,CAAQ,EAEpE,EAAW,EAAK,MAAO,CAAQ,EAC/B,GAAG,EAAW,EAAK,MAAO,CAAQ,EAAE,MAAM,EAAW,EAAK,MAAO,CAAQ,IACvE,EAAO,EAAQ,EAAK,IAAI,EAE9B,OACE,EAAC,KAAD,CAAI,UAAU,kCACZ,SAAA,EAAC,UAAD,CAAS,UAAU,iCAAnB,SAAA,CACE,EAAC,MAAD,CAAK,cAAY,OAAO,UAAU,kCAAlC,SAAA,CACE,EAAC,OAAD,CAAM,UAAU,mCAAoC,SAAA,CAAY,CAAA,EAChE,EAAC,OAAD,CAAM,UAAU,iCAAkC,SAAA,CAAU,CAAA,CACzD,CACL,CAAA,EAAA,EAAC,MAAD,CAAK,UAAU,qCAAf,SAAA,CACE,EAAC,KAAD,CAAA,SAAK,EAAK,IAAS,CAAA,EACnB,EAAC,IAAD,CAAG,UAAU,kCAAb,SAAA,CACE,EAAC,OAAD,CAAM,SAAU,EAAK,QAArB,SAAA,CACG,EAAW,EAAK,QAAS,CAAQ,EAAE,MAAI,IACvC,EAAW,EAAK,QAAS,CAAQ,CAC9B,IACN,EAAC,OAAD,CAAM,cAAY,OAAO,SAAA,KAAS,CAAA,EAClC,EAAC,OAAD,CAAM,SAAU,EAAK,MAAQ,SAAA,CAAe,CAAA,CAC3C,IACF,EAAK,SACJ,EAAC,IAAD,CAAG,UAAU,mCAAoC,SAAA,EAAK,QAAY,CAAA,EAChE,KACH,EAAK,YACJ,EAAC,IAAD,CAAG,UAAU,yCACV,SAAA,EAAK,WACL,CAAA,EACD,KACH,EACC,EAAC,IAAD,CAAG,KAAM,EAAM,IAAI,sBAAsB,OAAO,SAAhD,SAAA,CAAyD,iBACzC,EAAC,OAAD,CAAM,cAAY,OAAO,SAAA,GAAO,CAAA,CAC7C,CACD,CAAA,EAAA,IACD,CACE,CAAA,CAAA,GACP,CAAA,CAER,CAGA,SAAgB,EAAwB,CACtC,SACA,QAAQ,SACR,cAAc,GACd,eAAe,iBACf,WAAW,mBACX,QAAQ,OACR,QACA,aAC+B,CAC/B,OACE,EAAC,UAAD,CACE,YAAW,EAAO,QAClB,aAAY,EACZ,UAAW,CAAC,4BAA6B,CAAS,CAAC,CAChD,OAAO,OAAO,CAAC,CACf,KAAK,GAAG,EACX,yBAAwB,EACjB,QAPT,SAAA,CASG,EAAc,EAAC,KAAD,CAAA,SAAK,CAAU,CAAA,EAAI,KACjC,EAAO,SAAW,CAAC,EAAO,OACzB,EAAC,IAAD,CAAG,KAAK,SAAS,SAAA,iBAAkB,CAAA,EACjC,KACH,EAAO,MACN,EAAC,MAAD,CAAK,KAAK,QAAV,SAAA,CACE,EAAC,IAAD,CAAA,SAAI,EAAO,MAAM,OAAW,CAAA,EAC5B,EAAC,SAAD,CAAQ,QAAS,EAAO,QAAS,KAAK,SAAS,SAAA,WAEvC,CAAA,CACL,CACH,CAAA,EAAA,KACH,EAAO,QAAQ,SAAW,EACzB,EAAC,IAAD,CAAG,UAAU,mCAAoC,SAAA,CAAgB,CAAA,EAC/D,KACH,EAAO,QAAU,EAAO,OAAO,OAAS,EACvC,EAAC,KAAD,CAAI,UAAU,kCACX,SAAA,EAAO,OAAO,IAAK,GAClB,EAAC,EAAD,CAAsB,OAA8B,UAAW,EAA9B,EAAK,EAAyB,CAChE,CACC,CAAA,EACF,IACG,GAEb,CCtIA,SAAgB,EACd,EACkC,CAClC,EAA6B,gBAAiB,CAC5C,WAAY,EAAQ,WACpB,cAAe,EAAQ,cACvB,YAAa,EAAQ,YACrB,KAAM,EACR,CAAC,EACD,IAAM,EAAa,EAAO,EAAQ,OAAO,EACzC,EAAW,QAAU,EAAQ,QAC7B,GAAM,CAAC,GAAU,MACf,EAAoC,CAClC,GAAG,EACH,QAAU,GAAU,EAAW,UAAU,CAAK,CAChD,CAAC,CACH,EACM,CAAC,EAAU,GAAe,EAAS,CAAC,EACpC,CAAC,EAAO,GAAY,EAExB,CAAE,MAAO,KAAM,OAAQ,KAAM,QAAS,EAAK,CAAC,EAE9C,MAAgB,CACd,IAAI,EAAS,GAab,OAZA,EAAO,KAAK,CAAC,CAAC,KACX,GAAW,CACN,GACF,EAAS,CAAE,MAAO,KAAM,SAAQ,QAAS,EAAM,CAAC,CAEpD,EACC,GAA+B,CAC1B,GACF,EAAU,IAAa,CAAE,GAAG,EAAS,QAAO,QAAS,EAAM,EAAE,CAEjE,CACF,MACa,CACX,EAAS,EACX,CACF,EAAG,CAAC,EAAQ,CAAQ,CAAC,EAErB,IAAM,EAAU,MAAkB,CAChC,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"}
|
|
1
|
+
{"version":3,"file":"public-events.js","names":[],"sources":["../src/lockerverse-public-events.tsx","../src/use-lockerverse-public-events.ts"],"sourcesContent":["import type { LockerversePublicEvent } from \"@lockerverse/sdk/public-events\";\nimport { Share2 } from \"lucide-react\";\nimport { useEffect, useState } from \"react\";\nimport type { LockerverseStyle, LockerverseTheme } from \"./theme.ts\";\nimport type { UseLockerversePublicEventsResult } from \"./use-lockerverse-public-events.ts\";\n\nexport type LockerversePublicEventsProps = {\n events: UseLockerversePublicEventsResult;\n /** The visible heading. Defaults to Events. */\n title?: string;\n showHeading?: boolean;\n emptyMessage?: string;\n /** Used to show dates and times. Defaults to America/New_York. */\n timeZone?: string;\n theme?: LockerverseTheme;\n style?: LockerverseStyle;\n className?: string;\n};\n\nfunction formatDate(value: string, timeZone: string) {\n return new Intl.DateTimeFormat(\"en-US\", {\n day: \"numeric\",\n month: \"short\",\n timeZone,\n year: \"numeric\",\n }).format(new Date(value));\n}\n\nfunction formatTime(value: string, timeZone: string) {\n return new Intl.DateTimeFormat(\"en-US\", {\n hour: \"numeric\",\n minute: \"2-digit\",\n timeZone,\n timeZoneName: \"short\",\n }).format(new Date(value));\n}\n\nfunction getLink(value: string | null) {\n if (!value) {\n return null;\n }\n try {\n const url = new URL(value);\n return url.protocol === \"https:\" || url.protocol === \"http:\"\n ? url.toString()\n : null;\n } catch {\n return null;\n }\n}\n\nfunction getShareUrl(item: LockerversePublicEvent) {\n const link = getLink(item.link);\n if (link) {\n return link;\n }\n const url = new URL(window.location.href);\n url.hash = `event-${item.id}`;\n return url.toString();\n}\n\nfunction PublicEventRow({\n item,\n timeZone,\n active,\n}: {\n item: LockerversePublicEvent;\n timeZone: string;\n active: boolean;\n}) {\n const [expanded, setExpanded] = useState(false);\n const [copied, setCopied] = useState(false);\n const [manualShareUrl, setManualShareUrl] = useState<string | null>(null);\n const start = new Date(item.startAt);\n const month = new Intl.DateTimeFormat(\"en-US\", {\n month: \"short\",\n timeZone,\n }).format(start);\n const day = new Intl.DateTimeFormat(\"en-US\", {\n day: \"numeric\",\n timeZone,\n }).format(start);\n const sameDay =\n formatDate(item.startAt, timeZone) === formatDate(item.endAt, timeZone);\n const endLabel = sameDay\n ? formatTime(item.endAt, timeZone)\n : `${formatDate(item.endAt, timeZone)} at ${formatTime(item.endAt, timeZone)}`;\n const link = getLink(item.link);\n const imageUrl = getLink(item.imageUrl);\n const canExpand = (item.description?.length ?? 0) > 130;\n\n async function shareEvent() {\n const url = getShareUrl(item);\n if (navigator.share) {\n try {\n await navigator.share({ title: item.name, url });\n return;\n } catch (error) {\n if (error instanceof DOMException && error.name === \"AbortError\") {\n return;\n }\n }\n }\n try {\n await navigator.clipboard.writeText(url);\n setCopied(true);\n } catch {\n setManualShareUrl(url);\n }\n }\n\n return (\n <li className=\"lockerverse-public-events__item\" id={`event-${item.id}`}>\n <article\n className={[\n \"lockerverse-public-events__row\",\n imageUrl ? \"lockerverse-public-events__row--with-image\" : \"\",\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n {imageUrl ? (\n <img\n alt=\"\"\n className=\"lockerverse-public-events__image\"\n height={124}\n loading=\"lazy\"\n src={imageUrl}\n width={154}\n />\n ) : (\n <div aria-hidden=\"true\" className=\"lockerverse-public-events__date\">\n <span className=\"lockerverse-public-events__month\">{month}</span>\n <span className=\"lockerverse-public-events__day\">{day}</span>\n </div>\n )}\n <div className=\"lockerverse-public-events__content\">\n <div className=\"lockerverse-public-events__meta\">\n <time dateTime={item.startAt}>\n {formatDate(item.startAt, timeZone)}\n </time>\n {active ? (\n <span className=\"lockerverse-public-events__live\">Live now</span>\n ) : null}\n </div>\n <h4>{item.name}</h4>\n <p className=\"lockerverse-public-events__time\">\n <time dateTime={item.startAt}>\n {formatTime(item.startAt, timeZone)}\n </time>\n <span aria-hidden=\"true\"> — </span>\n <time dateTime={item.endAt}>{endLabel}</time>\n </p>\n {item.location ? (\n <p className=\"lockerverse-public-events__place\">{item.location}</p>\n ) : null}\n {item.description ? (\n <>\n <p\n className={[\n \"lockerverse-public-events__description\",\n canExpand && !expanded\n ? \"lockerverse-public-events__description--clamped\"\n : \"\",\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n {item.description}\n </p>\n {canExpand ? (\n <button\n aria-expanded={expanded}\n className=\"lockerverse-public-events__more\"\n onClick={() => setExpanded(!expanded)}\n type=\"button\"\n >\n {expanded ? \"Show less\" : \"Read more\"}\n </button>\n ) : null}\n </>\n ) : null}\n <div className=\"lockerverse-public-events__actions\">\n {link ? (\n <a\n className=\"lockerverse-public-events__link\"\n href={link}\n rel=\"noopener noreferrer\"\n target=\"_blank\"\n >\n View event <span aria-hidden=\"true\">↗</span>\n </a>\n ) : null}\n <button\n aria-label={`Share ${item.name}`}\n className=\"lockerverse-public-events__share\"\n onClick={shareEvent}\n type=\"button\"\n >\n <Share2 aria-hidden=\"true\" size={16} strokeWidth={1.8} />\n {copied ? \"Link copied\" : \"Share\"}\n </button>\n </div>\n {manualShareUrl ? (\n <label className=\"lockerverse-public-events__copy-link\">\n Copy event link\n <input\n onFocus={(event) => event.currentTarget.select()}\n readOnly\n value={manualShareUrl}\n />\n </label>\n ) : null}\n </div>\n </article>\n </li>\n );\n}\n\n/** Optional public list that can be embedded in any React site. */\nexport function LockerversePublicEvents({\n events,\n title = \"Events\",\n showHeading = true,\n emptyMessage = \"No events yet.\",\n timeZone = \"America/New_York\",\n theme = \"dark\",\n style,\n className,\n}: LockerversePublicEventsProps) {\n const [now, setNow] = useState(() => Date.now());\n\n useEffect(() => {\n const interval = window.setInterval(() => setNow(Date.now()), 60_000);\n return () => window.clearInterval(interval);\n }, []);\n\n const availableEvents = events.events || [];\n const activeEvents = availableEvents.filter(\n (item) =>\n new Date(item.startAt).getTime() <= now &&\n new Date(item.endAt).getTime() > now\n );\n const upcomingEvents = availableEvents.filter(\n (item) => new Date(item.startAt).getTime() > now\n );\n\n return (\n <section\n aria-busy={events.loading}\n aria-label={title}\n className={[\"lockerverse-public-events\", className]\n .filter(Boolean)\n .join(\" \")}\n data-lockerverse-theme={theme}\n style={style}\n >\n {showHeading ? <h2>{title}</h2> : null}\n {events.loading && !events.events ? (\n <p role=\"status\">Loading events…</p>\n ) : null}\n {events.error ? (\n <div role=\"alert\">\n <p>{events.error.message}</p>\n <button onClick={events.refresh} type=\"button\">\n Try again\n </button>\n </div>\n ) : null}\n {events.events &&\n activeEvents.length === 0 &&\n upcomingEvents.length === 0 ? (\n <p className=\"lockerverse-public-events__empty\">{emptyMessage}</p>\n ) : null}\n {activeEvents.length > 0 ? (\n <div className=\"lockerverse-public-events__group\">\n <h3 className=\"lockerverse-public-events__group-title\">\n Happening now\n </h3>\n <ol className=\"lockerverse-public-events__list\">\n {activeEvents.map((item) => (\n <PublicEventRow\n active\n item={item}\n key={item.id}\n timeZone={timeZone}\n />\n ))}\n </ol>\n </div>\n ) : null}\n {upcomingEvents.length > 0 ? (\n <div className=\"lockerverse-public-events__group\">\n <h3 className=\"lockerverse-public-events__group-title\">Upcoming</h3>\n <ol className=\"lockerverse-public-events__list\">\n {upcomingEvents.map((item) => (\n <PublicEventRow\n active={false}\n item={item}\n key={item.id}\n timeZone={timeZone}\n />\n ))}\n </ol>\n </div>\n ) : null}\n </section>\n );\n}\n","import {\n type CreateLockerversePublicEventsOptions,\n createLockerversePublicEventsClient,\n type LockerversePublicEvent,\n type LockerversePublicEventsClient,\n type LockerverseSdkError,\n} from \"@lockerverse/sdk/public-events\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport { useImmutableResourceIdentity } from \"./immutable-resource-identity.ts\";\n\nexport type UseLockerversePublicEventsResult = {\n client: LockerversePublicEventsClient;\n events: LockerversePublicEvent[] | null;\n loading: boolean;\n error: LockerverseSdkError | null;\n refresh: () => void;\n};\n\n/** Load the public events list for one community. */\nexport function useLockerversePublicEvents(\n options: CreateLockerversePublicEventsOptions\n): UseLockerversePublicEventsResult {\n useImmutableResourceIdentity(\"public events\", {\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 createLockerversePublicEventsClient({\n ...options,\n onError: (error) => onErrorRef.current?.(error),\n })\n );\n const [revision, setRevision] = useState(0);\n const [state, setState] = useState<\n Pick<UseLockerversePublicEventsResult, \"events\" | \"loading\" | \"error\">\n >({ error: null, events: null, loading: true });\n\n useEffect(() => {\n let active = true;\n client.list().then(\n (events) => {\n if (active) {\n setState({ error: null, events, loading: false });\n }\n },\n (error: LockerverseSdkError) => {\n if (active) {\n setState((current) => ({ ...current, error, loading: false }));\n }\n }\n );\n return () => {\n active = false;\n };\n }, [client, revision]);\n\n const refresh = useCallback(() => {\n setState((current) => ({ ...current, error: null, loading: true }));\n setRevision((current) => current + 1);\n }, []);\n\n return { ...state, client, refresh };\n}\n"],"mappings":"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"}
|
package/dist/signup.css
CHANGED
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
font-size: 15px;
|
|
39
39
|
line-height: 1.4;
|
|
40
40
|
color: var(--lockerverse-text);
|
|
41
|
-
background:
|
|
41
|
+
background: transparent;
|
|
42
42
|
border-radius: var(--lockerverse-radius);
|
|
43
43
|
}
|
|
44
44
|
|
|
@@ -54,7 +54,6 @@
|
|
|
54
54
|
);
|
|
55
55
|
--lockerverse-subtle: var(--lockerverse-signup-subtle, rgb(18 20 22 / 8%));
|
|
56
56
|
--lockerverse-text: var(--lockerverse-signup-text, #121416);
|
|
57
|
-
box-shadow: 0 18px 55px rgb(20 25 32 / 10%);
|
|
58
57
|
}
|
|
59
58
|
|
|
60
59
|
.lockerverse-signup *,
|
package/dist/styles.css
CHANGED
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
font-size: 15px;
|
|
27
27
|
line-height: 1.4;
|
|
28
28
|
color: var(--lockerverse-text);
|
|
29
|
-
background:
|
|
29
|
+
background: transparent;
|
|
30
30
|
border-radius: var(--lockerverse-radius);
|
|
31
31
|
}
|
|
32
32
|
|
|
@@ -41,7 +41,6 @@
|
|
|
41
41
|
--lockerverse-subtle: rgb(18 20 22 / 8%);
|
|
42
42
|
--lockerverse-success: #157a42;
|
|
43
43
|
--lockerverse-text: #121416;
|
|
44
|
-
box-shadow: 0 18px 55px rgb(20 25 32 / 10%);
|
|
45
44
|
}
|
|
46
45
|
|
|
47
46
|
.lockerverse-payment *,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lockerverse/react",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.109-dev.1",
|
|
4
4
|
"description": "Tree-shakable React payment and signup UI for Lockerverse",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -117,7 +117,7 @@
|
|
|
117
117
|
"embla-carousel-react": "8.6.0",
|
|
118
118
|
"lucide-react": "0.536.0",
|
|
119
119
|
"valibot": "1.4.2",
|
|
120
|
-
"@lockerverse/sdk": "0.2.
|
|
120
|
+
"@lockerverse/sdk": "0.2.109-dev.1"
|
|
121
121
|
},
|
|
122
122
|
"devDependencies": {
|
|
123
123
|
"@size-limit/file": "13.0.3",
|