@lockerverse/react 0.2.108-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 +7 -2
- package/dist/public-events.css +145 -21
- 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/package.json +2 -2
package/README.md
CHANGED
|
@@ -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/public-events.css
CHANGED
|
@@ -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,18 +151,43 @@
|
|
|
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
|
|
|
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;
|
|
181
|
+
margin-top: 14px;
|
|
182
|
+
}
|
|
183
|
+
|
|
110
184
|
.lockerverse-public-events .lockerverse-public-events__link {
|
|
111
185
|
display: inline-flex;
|
|
112
186
|
gap: 8px;
|
|
113
187
|
align-items: center;
|
|
114
188
|
min-height: 44px;
|
|
115
189
|
padding: 8px 14px;
|
|
116
|
-
margin
|
|
190
|
+
margin: 0;
|
|
117
191
|
font-weight: 600;
|
|
118
192
|
color: var(--lockerverse-accent);
|
|
119
193
|
text-decoration: none;
|
|
@@ -125,6 +199,42 @@
|
|
|
125
199
|
border-color: var(--lockerverse-accent);
|
|
126
200
|
}
|
|
127
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;
|
|
236
|
+
}
|
|
237
|
+
|
|
128
238
|
.lockerverse-public-events a:focus-visible,
|
|
129
239
|
.lockerverse-public-events button:focus-visible {
|
|
130
240
|
outline: 2px solid var(--lockerverse-accent);
|
|
@@ -149,15 +259,29 @@
|
|
|
149
259
|
|
|
150
260
|
@media (max-width: 500px) {
|
|
151
261
|
.lockerverse-public-events {
|
|
152
|
-
padding: 20px;
|
|
262
|
+
padding: 20px 8px;
|
|
153
263
|
}
|
|
154
264
|
|
|
155
265
|
.lockerverse-public-events__row {
|
|
156
|
-
grid-template-columns:
|
|
157
|
-
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;
|
|
158
282
|
}
|
|
159
283
|
|
|
160
284
|
.lockerverse-public-events__day {
|
|
161
|
-
font-size:
|
|
285
|
+
font-size: 30px;
|
|
162
286
|
}
|
|
163
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\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 </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":"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"}
|
|
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/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",
|