@mbpockets/shared-ui 0.2.0 → 0.2.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/EventPage/editMode/index.cjs.map +1 -1
- package/dist/EventPage/editMode/index.d.cts +1 -1
- package/dist/EventPage/editMode/index.d.ts +1 -1
- package/dist/EventPage/editMode/index.mjs.map +1 -1
- package/dist/EventPage/editMode.cjs.map +1 -1
- package/dist/EventPage/editMode.d.cts +1 -1
- package/dist/EventPage/editMode.d.ts +1 -1
- package/dist/EventPage/editMode.mjs.map +1 -1
- package/dist/EventPage/index.cjs +121 -63
- package/dist/EventPage/index.cjs.map +1 -1
- package/dist/EventPage/index.d.cts +1 -1
- package/dist/EventPage/index.d.ts +1 -1
- package/dist/EventPage/index.mjs +121 -63
- package/dist/EventPage/index.mjs.map +1 -1
- package/dist/EventPage.cjs +121 -63
- package/dist/EventPage.cjs.map +1 -1
- package/dist/EventPage.d.cts +4 -4
- package/dist/EventPage.d.ts +4 -4
- package/dist/EventPage.mjs +121 -63
- package/dist/EventPage.mjs.map +1 -1
- package/dist/PlayerPage/index.cjs +12 -8
- package/dist/PlayerPage/index.cjs.map +1 -1
- package/dist/PlayerPage/index.mjs +12 -8
- package/dist/PlayerPage/index.mjs.map +1 -1
- package/dist/PlayerPage.cjs +12 -8
- package/dist/PlayerPage.cjs.map +1 -1
- package/dist/PlayerPage.mjs +12 -8
- package/dist/PlayerPage.mjs.map +1 -1
- package/dist/ProfilePage/index.cjs +12 -8
- package/dist/ProfilePage/index.cjs.map +1 -1
- package/dist/ProfilePage/index.mjs +12 -8
- package/dist/ProfilePage/index.mjs.map +1 -1
- package/dist/ProfilePage.cjs +12 -8
- package/dist/ProfilePage.cjs.map +1 -1
- package/dist/ProfilePage.mjs +12 -8
- package/dist/ProfilePage.mjs.map +1 -1
- package/dist/SearchPage/Filters/index.cjs +38 -18
- package/dist/SearchPage/Filters/index.cjs.map +1 -1
- package/dist/SearchPage/Filters/index.d.cts +2 -1
- package/dist/SearchPage/Filters/index.d.ts +2 -1
- package/dist/SearchPage/Filters/index.mjs +34 -17
- package/dist/SearchPage/Filters/index.mjs.map +1 -1
- package/dist/SearchPage/Filters.cjs +38 -18
- package/dist/SearchPage/Filters.cjs.map +1 -1
- package/dist/SearchPage/Filters.d.cts +13 -1
- package/dist/SearchPage/Filters.d.ts +13 -1
- package/dist/SearchPage/Filters.mjs +34 -17
- package/dist/SearchPage/Filters.mjs.map +1 -1
- package/dist/SearchPage/Results/index.cjs +87 -48
- package/dist/SearchPage/Results/index.cjs.map +1 -1
- package/dist/SearchPage/Results/index.mjs +87 -48
- package/dist/SearchPage/Results/index.mjs.map +1 -1
- package/dist/SearchPage/Results.cjs +87 -48
- package/dist/SearchPage/Results.cjs.map +1 -1
- package/dist/SearchPage/Results.d.cts +10 -3
- package/dist/SearchPage/Results.d.ts +10 -3
- package/dist/SearchPage/Results.mjs +87 -48
- package/dist/SearchPage/Results.mjs.map +1 -1
- package/dist/SearchPage/index.cjs +207 -99
- package/dist/SearchPage/index.cjs.map +1 -1
- package/dist/SearchPage/index.d.cts +2 -2
- package/dist/SearchPage/index.d.ts +2 -2
- package/dist/SearchPage/index.mjs +203 -98
- package/dist/SearchPage/index.mjs.map +1 -1
- package/dist/SearchPage.cjs +207 -99
- package/dist/SearchPage.cjs.map +1 -1
- package/dist/SearchPage.d.cts +25 -3
- package/dist/SearchPage.d.ts +25 -3
- package/dist/SearchPage.mjs +203 -98
- package/dist/SearchPage.mjs.map +1 -1
- package/dist/TablePage/EditComponents/index.cjs +296 -0
- package/dist/TablePage/EditComponents/index.cjs.map +1 -0
- package/dist/TablePage/EditComponents/index.d.cts +3 -0
- package/dist/TablePage/EditComponents/index.d.ts +3 -0
- package/dist/TablePage/EditComponents/index.mjs +286 -0
- package/dist/TablePage/EditComponents/index.mjs.map +1 -0
- package/dist/TablePage/EditComponents.cjs +296 -0
- package/dist/TablePage/EditComponents.cjs.map +1 -0
- package/dist/TablePage/EditComponents.d.cts +21 -0
- package/dist/TablePage/EditComponents.d.ts +21 -0
- package/dist/TablePage/EditComponents.mjs +286 -0
- package/dist/TablePage/EditComponents.mjs.map +1 -0
- package/dist/TablePage/ModalProvider/index.cjs +59 -58
- package/dist/TablePage/ModalProvider/index.cjs.map +1 -1
- package/dist/TablePage/ModalProvider/index.d.cts +1 -1
- package/dist/TablePage/ModalProvider/index.d.ts +1 -1
- package/dist/TablePage/ModalProvider/index.mjs +50 -59
- package/dist/TablePage/ModalProvider/index.mjs.map +1 -1
- package/dist/TablePage/ModalProvider.cjs +59 -58
- package/dist/TablePage/ModalProvider.cjs.map +1 -1
- package/dist/TablePage/ModalProvider.d.cts +7 -2
- package/dist/TablePage/ModalProvider.d.ts +7 -2
- package/dist/TablePage/ModalProvider.mjs +50 -59
- package/dist/TablePage/ModalProvider.mjs.map +1 -1
- package/dist/TablePage/index.cjs +555 -331
- package/dist/TablePage/index.cjs.map +1 -1
- package/dist/TablePage/index.d.cts +3 -2
- package/dist/TablePage/index.d.ts +3 -2
- package/dist/TablePage/index.mjs +539 -320
- package/dist/TablePage/index.mjs.map +1 -1
- package/dist/TablePage/players/index.cjs +24 -4
- package/dist/TablePage/players/index.cjs.map +1 -1
- package/dist/TablePage/players/index.mjs +24 -4
- package/dist/TablePage/players/index.mjs.map +1 -1
- package/dist/TablePage/players.cjs +24 -4
- package/dist/TablePage/players.cjs.map +1 -1
- package/dist/TablePage/players.mjs +24 -4
- package/dist/TablePage/players.mjs.map +1 -1
- package/dist/TablePage.cjs +555 -331
- package/dist/TablePage.cjs.map +1 -1
- package/dist/TablePage.d.cts +4 -1
- package/dist/TablePage.d.ts +4 -1
- package/dist/TablePage.mjs +539 -320
- package/dist/TablePage.mjs.map +1 -1
- package/dist/{index-D7WHhl3Q.d.ts → index-B23RQop0.d.ts} +12 -12
- package/dist/{index-DC0kK3aC.d.cts → index-Csj8S4A4.d.cts} +12 -12
- package/dist/index.cjs +889 -424
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +5 -4
- package/dist/index.d.ts +5 -4
- package/dist/index.mjs +870 -421
- package/dist/index.mjs.map +1 -1
- package/dist/mocks/{EventDB.cjs → EventDetails.cjs} +203 -3
- package/dist/mocks/EventDetails.cjs.map +1 -0
- package/dist/mocks/EventDetails.d.cts +6 -0
- package/dist/mocks/EventDetails.d.ts +6 -0
- package/dist/mocks/{EventDB.mjs → EventDetails.mjs} +203 -3
- package/dist/mocks/EventDetails.mjs.map +1 -0
- package/dist/mocks/Tables.cjs +1 -1
- package/dist/mocks/Tables.cjs.map +1 -1
- package/dist/mocks/Tables.mjs +1 -1
- package/dist/mocks/Tables.mjs.map +1 -1
- package/dist/mocks/Tags.cjs +200 -0
- package/dist/mocks/Tags.cjs.map +1 -1
- package/dist/mocks/Tags.mjs +200 -0
- package/dist/mocks/Tags.mjs.map +1 -1
- package/dist/mocks/index.cjs +202 -2
- package/dist/mocks/index.cjs.map +1 -1
- package/dist/mocks/index.d.cts +1 -1
- package/dist/mocks/index.d.ts +1 -1
- package/dist/mocks/index.mjs +202 -2
- package/dist/mocks/index.mjs.map +1 -1
- package/dist/mocks.cjs +202 -2
- package/dist/mocks.cjs.map +1 -1
- package/dist/mocks.d.cts +1 -1
- package/dist/mocks.d.ts +1 -1
- package/dist/mocks.mjs +202 -2
- package/dist/mocks.mjs.map +1 -1
- package/dist/shared/index.cjs +327 -64
- package/dist/shared/index.cjs.map +1 -1
- package/dist/shared/index.d.cts +1 -1
- package/dist/shared/index.d.ts +1 -1
- package/dist/shared/index.mjs +324 -64
- package/dist/shared/index.mjs.map +1 -1
- package/dist/shared.cjs +327 -64
- package/dist/shared.cjs.map +1 -1
- package/dist/shared.d.cts +25 -2
- package/dist/shared.d.ts +25 -2
- package/dist/shared.mjs +324 -64
- package/dist/shared.mjs.map +1 -1
- package/dist/types/event.d.cts +2 -3
- package/dist/types/event.d.ts +2 -3
- package/dist/types/index.d.cts +2 -2
- package/dist/types/index.d.ts +2 -2
- package/dist/types/search.d.cts +7 -1
- package/dist/types/search.d.ts +7 -1
- package/dist/types/tables.d.cts +1 -0
- package/dist/types/tables.d.ts +1 -0
- package/dist/types.d.cts +2 -2
- package/dist/types.d.ts +2 -2
- package/package.json +9 -2
- package/dist/TablePage/ModalProvider/index.css +0 -49
- package/dist/TablePage/ModalProvider/index.css.map +0 -1
- package/dist/TablePage/ModalProvider.css +0 -49
- package/dist/TablePage/ModalProvider.css.map +0 -1
- package/dist/TablePage/index.css +0 -49
- package/dist/TablePage/index.css.map +0 -1
- package/dist/TablePage.css +0 -49
- package/dist/TablePage.css.map +0 -1
- package/dist/index.css +0 -49
- package/dist/index.css.map +0 -1
- package/dist/mocks/EventDB.cjs.map +0 -1
- package/dist/mocks/EventDB.d.cts +0 -6
- package/dist/mocks/EventDB.d.ts +0 -6
- package/dist/mocks/EventDB.mjs.map +0 -1
- package/dist/shared/Modal/index.cjs +0 -64
- package/dist/shared/Modal/index.cjs.map +0 -1
- package/dist/shared/Modal/index.css +0 -49
- package/dist/shared/Modal/index.css.map +0 -1
- package/dist/shared/Modal/index.d.cts +0 -2
- package/dist/shared/Modal/index.d.ts +0 -2
- package/dist/shared/Modal/index.mjs +0 -62
- package/dist/shared/Modal/index.mjs.map +0 -1
- package/dist/shared/Modal.cjs +0 -64
- package/dist/shared/Modal.cjs.map +0 -1
- package/dist/shared/Modal.css +0 -49
- package/dist/shared/Modal.css.map +0 -1
- package/dist/shared/Modal.d.cts +0 -9
- package/dist/shared/Modal.d.ts +0 -9
- package/dist/shared/Modal.mjs +0 -62
- package/dist/shared/Modal.mjs.map +0 -1
- package/dist/shared/index.css +0 -49
- package/dist/shared/index.css.map +0 -1
- package/dist/shared.css +0 -49
- package/dist/shared.css.map +0 -1
package/dist/shared.d.ts
CHANGED
|
@@ -15,12 +15,18 @@ declare function Chip({ tag, removeCallback }: {
|
|
|
15
15
|
removeCallback?: (tagId: number) => void;
|
|
16
16
|
}): react_jsx_runtime.JSX.Element;
|
|
17
17
|
|
|
18
|
+
declare const getRandomTitle: () => string;
|
|
19
|
+
declare const getRandomTagline: () => string;
|
|
20
|
+
|
|
18
21
|
declare const NextGameCountdown: ({ nextGameTime }: {
|
|
19
22
|
nextGameTime?: Date | string;
|
|
20
23
|
}) => react_jsx_runtime.JSX.Element | null;
|
|
21
24
|
|
|
22
25
|
declare function generateTagsDisplay(tag: Tag): react_jsx_runtime.JSX.Element;
|
|
23
|
-
declare function renderTagsFromIds(ids: number[] | undefined, legalTags: Tag[]
|
|
26
|
+
declare function renderTagsFromIds(ids: number[] | undefined, legalTags: Tag[], options?: {
|
|
27
|
+
showEventTag?: boolean;
|
|
28
|
+
eventTagId?: number;
|
|
29
|
+
}): react_jsx_runtime.JSX.Element | react_jsx_runtime.JSX.Element[];
|
|
24
30
|
|
|
25
31
|
interface TagEditorProps {
|
|
26
32
|
title?: string;
|
|
@@ -30,4 +36,21 @@ interface TagEditorProps {
|
|
|
30
36
|
}
|
|
31
37
|
declare function TagEditor({ title, selectedTags, possibleTags, onToggleTag, }: TagEditorProps): react_jsx_runtime.JSX.Element;
|
|
32
38
|
|
|
33
|
-
|
|
39
|
+
type AgreementRequirement = {
|
|
40
|
+
statement: string;
|
|
41
|
+
link?: string;
|
|
42
|
+
linkText?: string;
|
|
43
|
+
required: boolean;
|
|
44
|
+
};
|
|
45
|
+
type UserAgreementModalProps = {
|
|
46
|
+
open: boolean;
|
|
47
|
+
onClose?: () => void;
|
|
48
|
+
markdownContent: string;
|
|
49
|
+
requirements: AgreementRequirement[];
|
|
50
|
+
onAccept: () => void;
|
|
51
|
+
title?: string;
|
|
52
|
+
forceAgreement?: boolean;
|
|
53
|
+
};
|
|
54
|
+
declare const UserAgreementModal: React__default.FC<UserAgreementModalProps>;
|
|
55
|
+
|
|
56
|
+
export { type AgreementRequirement, AutoResizingTextarea, Chip, NextGameCountdown, TagEditor, type TagEditorProps, UserAgreementModal, type UserAgreementModalProps, generateTagsDisplay, getRandomTagline, getRandomTitle, renderTagsFromIds };
|
package/dist/shared.mjs
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { useEffect, useState, useMemo } from 'react';
|
|
3
3
|
import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
|
|
4
|
-
import { Typography } from '@mui/material';
|
|
5
|
-
import Autocomplete from '@mui/material/Autocomplete';
|
|
4
|
+
import { Typography, Dialog, DialogTitle, DialogContent, Box, Link, FormControlLabel, Checkbox, DialogActions, Button } from '@mui/material';
|
|
6
5
|
import Card from '@mui/material/Card';
|
|
7
6
|
import CardContent from '@mui/material/CardContent';
|
|
8
7
|
import CardHeader from '@mui/material/CardHeader';
|
|
9
8
|
import Grid from '@mui/material/Grid';
|
|
10
|
-
import Popper from '@mui/material/Popper';
|
|
11
9
|
import TextField from '@mui/material/TextField';
|
|
10
|
+
import Autocomplete from '@mui/material/Autocomplete';
|
|
11
|
+
import ReactMarkdown from 'react-markdown';
|
|
12
12
|
|
|
13
13
|
// src/components/shared/AutoResizingTextarea.tsx
|
|
14
14
|
var AutoResizingTextarea = (props) => {
|
|
@@ -68,6 +68,137 @@ function Chip({ tag, removeCallback }) {
|
|
|
68
68
|
tag.id
|
|
69
69
|
) });
|
|
70
70
|
}
|
|
71
|
+
|
|
72
|
+
// src/components/shared/NameGenerator.ts
|
|
73
|
+
var getRandomTitle = () => {
|
|
74
|
+
const randomPrefix = titlePrefixes[Math.random() * titlePrefixes.length | 0];
|
|
75
|
+
const randomMiddle = tileMiddle[Math.random() * tileMiddle.length | 0];
|
|
76
|
+
const randomSuffix = titleSuffixes[Math.random() * titleSuffixes.length | 0];
|
|
77
|
+
return `${randomPrefix} ${randomMiddle} ${randomSuffix}`;
|
|
78
|
+
};
|
|
79
|
+
var getRandomTagline = () => taglines[Math.random() * taglines.length | 0];
|
|
80
|
+
var titlePrefixes = [
|
|
81
|
+
"The Knights of The",
|
|
82
|
+
"The Fellowship of The",
|
|
83
|
+
"The Order of The",
|
|
84
|
+
"The Infamous",
|
|
85
|
+
"The Legendary",
|
|
86
|
+
"The Dubious",
|
|
87
|
+
"The Sworn Guardians of The",
|
|
88
|
+
"The Ancient Guild of The",
|
|
89
|
+
"The Unstoppable",
|
|
90
|
+
"The Misfit",
|
|
91
|
+
"The Chaotic",
|
|
92
|
+
"The Brave",
|
|
93
|
+
"The Forgotten",
|
|
94
|
+
"The Wandering",
|
|
95
|
+
"The Noble Council of The",
|
|
96
|
+
"The Dread Pirates of The",
|
|
97
|
+
"The Honorable Society of The",
|
|
98
|
+
"The Cursed",
|
|
99
|
+
"The Unlikely Heroes of The",
|
|
100
|
+
"The Elders of The",
|
|
101
|
+
"The Seekers of The",
|
|
102
|
+
"The Champions of The",
|
|
103
|
+
"The Heralds of The",
|
|
104
|
+
"The Disciples of The",
|
|
105
|
+
"The Ragtag Band of The",
|
|
106
|
+
"The Cult of The"
|
|
107
|
+
];
|
|
108
|
+
var tileMiddle = [
|
|
109
|
+
"Round",
|
|
110
|
+
"Kitchen",
|
|
111
|
+
"Deepest",
|
|
112
|
+
"Sorcery",
|
|
113
|
+
"Munchkin",
|
|
114
|
+
"Shenanigan",
|
|
115
|
+
"Secret",
|
|
116
|
+
"Dungeon",
|
|
117
|
+
"Fireside",
|
|
118
|
+
"Tabletop",
|
|
119
|
+
"Midnight",
|
|
120
|
+
"Tavern",
|
|
121
|
+
"Goblin",
|
|
122
|
+
"Dragon",
|
|
123
|
+
"Critical",
|
|
124
|
+
"Natural Twenty",
|
|
125
|
+
"Counterspell",
|
|
126
|
+
"Nat One",
|
|
127
|
+
"Cardboard",
|
|
128
|
+
"Dice Tower",
|
|
129
|
+
"Campaign",
|
|
130
|
+
"Lore",
|
|
131
|
+
"Awkward",
|
|
132
|
+
"Unhinged",
|
|
133
|
+
"Chaotic Neutral",
|
|
134
|
+
"Homebrew",
|
|
135
|
+
"Side Quest"
|
|
136
|
+
];
|
|
137
|
+
var titleSuffixes = [
|
|
138
|
+
"Table",
|
|
139
|
+
"Dungeon",
|
|
140
|
+
"Cave",
|
|
141
|
+
"Crew",
|
|
142
|
+
"Team",
|
|
143
|
+
"League",
|
|
144
|
+
"Horde",
|
|
145
|
+
"Party",
|
|
146
|
+
"Conclave",
|
|
147
|
+
"Collective",
|
|
148
|
+
"Alliance",
|
|
149
|
+
"Syndicate",
|
|
150
|
+
"Guild",
|
|
151
|
+
"Cabal",
|
|
152
|
+
"Council",
|
|
153
|
+
"Expedition",
|
|
154
|
+
"Enclave",
|
|
155
|
+
"Consortium",
|
|
156
|
+
"Troupe",
|
|
157
|
+
"Vanguard",
|
|
158
|
+
"Cohort",
|
|
159
|
+
"Brotherhood",
|
|
160
|
+
"Sisterhood",
|
|
161
|
+
"Pantheon",
|
|
162
|
+
"Assembly",
|
|
163
|
+
"Coven"
|
|
164
|
+
];
|
|
165
|
+
var taglines = [
|
|
166
|
+
"Everyone is welcome!",
|
|
167
|
+
"Looking for serious players.",
|
|
168
|
+
"Get in nerds, we're gaming!",
|
|
169
|
+
"If you aren't there, you're square.",
|
|
170
|
+
"It will be legendary!",
|
|
171
|
+
"Beginners welcome \u2014 we were all level 1 once.",
|
|
172
|
+
"No experience necessary. Snacks encouraged.",
|
|
173
|
+
"Roleplayers, board gamers, and chaos gremlins welcome.",
|
|
174
|
+
"We don't metagame. Much.",
|
|
175
|
+
"All alignments accepted. True Neutral gets the snacks.",
|
|
176
|
+
"Where every session is a one-shot... until it isn't.",
|
|
177
|
+
"Homebrew rules may apply.",
|
|
178
|
+
"Warning: may contain excessive lore.",
|
|
179
|
+
"Critical failures celebrated as much as critical hits.",
|
|
180
|
+
"No powergamers. Okay, maybe one powergamer.",
|
|
181
|
+
"We finish campaigns. (Eventually.)",
|
|
182
|
+
"Veteran players seeking worthy companions.",
|
|
183
|
+
"Casuals only \u2014 we're here for the vibes.",
|
|
184
|
+
"Serious about fun, not about rules.",
|
|
185
|
+
"Min-maxers need not apply.",
|
|
186
|
+
"For those who read the rulebook... and those who definitely didn't.",
|
|
187
|
+
"Roll for initiative. Arrive on time.",
|
|
188
|
+
"Side quests are the main quest here.",
|
|
189
|
+
"Chaotic good energy required.",
|
|
190
|
+
"If you bring snacks, you can name the first NPC.",
|
|
191
|
+
"We read the rulebook so you don't have to.",
|
|
192
|
+
"Wargamers only \u2014 no take-backs, no mercy.",
|
|
193
|
+
"Everyone welcome. Meeple provided.",
|
|
194
|
+
"We always play the longest game on the shelf.",
|
|
195
|
+
"Worker placement. Resource management. Existential dread.",
|
|
196
|
+
"No phones at the table! We're here for the game.",
|
|
197
|
+
"Someone always flips the table. Metaphorically. Usually.",
|
|
198
|
+
"We have a designated rules lawyer. It's fine.",
|
|
199
|
+
"Cooperative games only \u2014 we can't handle another Monopoly incident.",
|
|
200
|
+
"Teaching time is half the fun!"
|
|
201
|
+
];
|
|
71
202
|
var NextGameCountdown = ({ nextGameTime }) => {
|
|
72
203
|
const [timeLeft, setTimeLeft] = useState("");
|
|
73
204
|
useEffect(() => {
|
|
@@ -101,27 +232,99 @@ var NextGameCountdown = ({ nextGameTime }) => {
|
|
|
101
232
|
function generateTagsDisplay(tag) {
|
|
102
233
|
return /* @__PURE__ */ jsx(Chip, { tag }, tag.id);
|
|
103
234
|
}
|
|
104
|
-
function renderTagsFromIds(ids, legalTags) {
|
|
235
|
+
function renderTagsFromIds(ids, legalTags, options = {}) {
|
|
105
236
|
if (!ids || !legalTags || legalTags.length === 0) {
|
|
106
237
|
return /* @__PURE__ */ jsx(Fragment, {});
|
|
107
238
|
}
|
|
239
|
+
const { showEventTag = false, eventTagId } = options;
|
|
108
240
|
const validTags = ids.map((id) => legalTags.find((tag) => tag.id === id)).filter((tag) => Boolean(tag));
|
|
109
|
-
|
|
241
|
+
const sortedTags = [...validTags].sort((a, b) => {
|
|
242
|
+
if (showEventTag && eventTagId !== void 0) {
|
|
243
|
+
if (a.id === eventTagId && b.id === eventTagId) return 0;
|
|
244
|
+
if (a.id === eventTagId) return -1;
|
|
245
|
+
if (b.id === eventTagId) return 1;
|
|
246
|
+
}
|
|
247
|
+
const priorityOrder = ["Organizer Run", "Display Only"];
|
|
248
|
+
const aIndex = priorityOrder.indexOf(a.label);
|
|
249
|
+
const bIndex = priorityOrder.indexOf(b.label);
|
|
250
|
+
if (aIndex !== -1 && bIndex !== -1) {
|
|
251
|
+
return aIndex - bIndex;
|
|
252
|
+
}
|
|
253
|
+
if (aIndex !== -1) return -1;
|
|
254
|
+
if (bIndex !== -1) return 1;
|
|
255
|
+
return 0;
|
|
256
|
+
});
|
|
257
|
+
return sortedTags.map((tag) => generateTagsDisplay(tag));
|
|
258
|
+
}
|
|
259
|
+
function TagSelector({ initialTagIDs, allTags, onTagChange }) {
|
|
260
|
+
const [tagList, updateTagList] = useState(initialTagIDs);
|
|
261
|
+
const [inputValue, setInputValue] = useState("");
|
|
262
|
+
const toggleTag = (id) => tagList.find((t) => t === id) ? removeTag(id) : addTag(id);
|
|
263
|
+
const addTag = (id) => {
|
|
264
|
+
const newList = [...tagList, id];
|
|
265
|
+
updateTagList(newList);
|
|
266
|
+
onTagChange(newList);
|
|
267
|
+
};
|
|
268
|
+
const removeTag = (id) => {
|
|
269
|
+
const newList = tagList.filter((t) => t !== id);
|
|
270
|
+
updateTagList(newList);
|
|
271
|
+
onTagChange(newList);
|
|
272
|
+
};
|
|
273
|
+
const selectedTags = useMemo(() => allTags.filter((tag) => tagList.includes(tag.id)), [allTags, tagList]);
|
|
274
|
+
const options = useMemo(
|
|
275
|
+
() => allTags.map((tag) => ({ value: tag.id, label: tag.label })),
|
|
276
|
+
[allTags]
|
|
277
|
+
);
|
|
278
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
279
|
+
/* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-2", children: selectedTags.map((tag) => /* @__PURE__ */ jsx(
|
|
280
|
+
Chip,
|
|
281
|
+
{
|
|
282
|
+
tag,
|
|
283
|
+
removeCallback: () => toggleTag(tag.id)
|
|
284
|
+
},
|
|
285
|
+
tag.id
|
|
286
|
+
)) }),
|
|
287
|
+
/* @__PURE__ */ jsx(Grid, { container: true, spacing: 3, children: /* @__PURE__ */ jsx(Grid, { sx: { marginTop: 3, width: "100%", minWidth: "550px" }, children: /* @__PURE__ */ jsx(
|
|
288
|
+
Autocomplete,
|
|
289
|
+
{
|
|
290
|
+
options,
|
|
291
|
+
filterOptions: (availableOptions, state) => availableOptions.filter(
|
|
292
|
+
(option) => !tagList.includes(option.value) && option.label.toLowerCase().includes(state.inputValue.toLowerCase())
|
|
293
|
+
),
|
|
294
|
+
value: null,
|
|
295
|
+
inputValue,
|
|
296
|
+
onInputChange: (event, newInputValue) => {
|
|
297
|
+
if (event && event.type === "change") {
|
|
298
|
+
setInputValue(newInputValue);
|
|
299
|
+
}
|
|
300
|
+
},
|
|
301
|
+
onChange: (event, newValue) => {
|
|
302
|
+
if (newValue) {
|
|
303
|
+
toggleTag(newValue.value);
|
|
304
|
+
}
|
|
305
|
+
setInputValue("");
|
|
306
|
+
},
|
|
307
|
+
renderInput: (params) => /* @__PURE__ */ jsx(TextField, { ...params, label: "Select Tags" })
|
|
308
|
+
},
|
|
309
|
+
tagList.join("-")
|
|
310
|
+
) }) })
|
|
311
|
+
] });
|
|
110
312
|
}
|
|
111
313
|
function TagEditor({
|
|
112
|
-
title
|
|
314
|
+
title,
|
|
113
315
|
selectedTags,
|
|
114
316
|
possibleTags,
|
|
115
317
|
onToggleTag
|
|
116
318
|
}) {
|
|
117
|
-
const [inputValue, setInputValue] = useState("");
|
|
118
319
|
const selectedIds = useMemo(() => selectedTags.map((tag) => tag.id), [selectedTags]);
|
|
119
|
-
const
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
320
|
+
const onTagChange = (newSelectedIds) => {
|
|
321
|
+
const addedTags = newSelectedIds.filter((id) => !selectedIds.includes(id));
|
|
322
|
+
const removedTags = selectedIds.filter((id) => !newSelectedIds.includes(id));
|
|
323
|
+
addedTags.forEach((id) => onToggleTag(id));
|
|
324
|
+
removedTags.forEach((id) => onToggleTag(id));
|
|
325
|
+
};
|
|
123
326
|
return /* @__PURE__ */ jsx(Grid, { container: true, children: /* @__PURE__ */ jsx(Grid, { size: { xs: 12 }, children: /* @__PURE__ */ jsxs(Card, { children: [
|
|
124
|
-
/* @__PURE__ */ jsx(
|
|
327
|
+
title ? /* @__PURE__ */ jsx(
|
|
125
328
|
CardHeader,
|
|
126
329
|
{
|
|
127
330
|
title,
|
|
@@ -132,64 +335,121 @@ function TagEditor({
|
|
|
132
335
|
textShadow: "0px 3px 6px rgba(0, 0, 0, 0.5)"
|
|
133
336
|
}
|
|
134
337
|
}
|
|
135
|
-
),
|
|
136
|
-
/* @__PURE__ */
|
|
137
|
-
/* @__PURE__ */ jsx("div", { className: "mt-2 flex flex-wrap gap-2", children: selectedTags.map((tag) => /* @__PURE__ */ jsx(
|
|
138
|
-
Chip,
|
|
139
|
-
{
|
|
140
|
-
tag,
|
|
141
|
-
removeCallback: () => onToggleTag(tag.id)
|
|
142
|
-
},
|
|
143
|
-
tag.id
|
|
144
|
-
)) }),
|
|
145
|
-
/* @__PURE__ */ jsx(Grid, { container: true, spacing: 3, children: /* @__PURE__ */ jsx(Grid, { sx: { marginTop: 3, width: "100%" }, children: /* @__PURE__ */ jsx(
|
|
146
|
-
Autocomplete,
|
|
147
|
-
{
|
|
148
|
-
options,
|
|
149
|
-
filterOptions: (availableOptions, state) => availableOptions.filter(
|
|
150
|
-
(option) => !selectedIds.includes(option.value) && option.label.toLowerCase().includes(state.inputValue.toLowerCase())
|
|
151
|
-
).slice(0, 3),
|
|
152
|
-
value: null,
|
|
153
|
-
inputValue,
|
|
154
|
-
onInputChange: (event, newInputValue) => {
|
|
155
|
-
if (event && event.type === "change") {
|
|
156
|
-
setInputValue(newInputValue);
|
|
157
|
-
}
|
|
158
|
-
},
|
|
159
|
-
onChange: (event, newValue) => {
|
|
160
|
-
if (newValue) {
|
|
161
|
-
onToggleTag(newValue.value);
|
|
162
|
-
}
|
|
163
|
-
setInputValue("");
|
|
164
|
-
},
|
|
165
|
-
slots: { popper: CustomPopper },
|
|
166
|
-
renderInput: (params) => /* @__PURE__ */ jsx(TextField, { ...params, label: "Select Tags" })
|
|
167
|
-
},
|
|
168
|
-
selectedIds.join("-")
|
|
169
|
-
) }) })
|
|
170
|
-
] })
|
|
338
|
+
) : "",
|
|
339
|
+
/* @__PURE__ */ jsx(CardContent, { children: /* @__PURE__ */ jsx(TagSelector, { initialTagIDs: selectedIds, allTags: possibleTags, onTagChange }) })
|
|
171
340
|
] }) }) });
|
|
172
341
|
}
|
|
173
|
-
var
|
|
174
|
-
|
|
175
|
-
|
|
342
|
+
var UserAgreementModal = ({
|
|
343
|
+
open,
|
|
344
|
+
onClose,
|
|
345
|
+
markdownContent,
|
|
346
|
+
requirements,
|
|
347
|
+
onAccept,
|
|
348
|
+
title = "User Agreement",
|
|
349
|
+
forceAgreement = false
|
|
350
|
+
}) => {
|
|
351
|
+
const [checkedState, setCheckedState] = useState(
|
|
352
|
+
new Array(requirements.length).fill(false)
|
|
353
|
+
);
|
|
354
|
+
const handleCheckboxChange = (index) => {
|
|
355
|
+
const updatedCheckedState = checkedState.map(
|
|
356
|
+
(item, i) => i === index ? !item : item
|
|
357
|
+
);
|
|
358
|
+
setCheckedState(updatedCheckedState);
|
|
359
|
+
};
|
|
360
|
+
const isAllRequiredChecked = requirements.every((req, index) => {
|
|
361
|
+
if (req.required) {
|
|
362
|
+
return checkedState[index];
|
|
363
|
+
}
|
|
364
|
+
return true;
|
|
365
|
+
});
|
|
366
|
+
const handleAccept = () => {
|
|
367
|
+
if (isAllRequiredChecked) {
|
|
368
|
+
onAccept();
|
|
369
|
+
}
|
|
370
|
+
};
|
|
371
|
+
const handleClose = (event, reason) => {
|
|
372
|
+
if (forceAgreement) return;
|
|
373
|
+
if (onClose) onClose();
|
|
374
|
+
};
|
|
375
|
+
return /* @__PURE__ */ jsxs(
|
|
376
|
+
Dialog,
|
|
176
377
|
{
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
{
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
378
|
+
open,
|
|
379
|
+
onClose: handleClose,
|
|
380
|
+
maxWidth: "md",
|
|
381
|
+
fullWidth: true,
|
|
382
|
+
disableEscapeKeyDown: forceAgreement,
|
|
383
|
+
children: [
|
|
384
|
+
/* @__PURE__ */ jsx(DialogTitle, { children: title }),
|
|
385
|
+
/* @__PURE__ */ jsxs(DialogContent, { dividers: true, children: [
|
|
386
|
+
/* @__PURE__ */ jsx(Box, { sx: { mb: 3 }, children: /* @__PURE__ */ jsx(
|
|
387
|
+
ReactMarkdown,
|
|
388
|
+
{
|
|
389
|
+
components: {
|
|
390
|
+
h1: ({ node, ...props }) => /* @__PURE__ */ jsx(Typography, { variant: "h4", gutterBottom: true, ...props }),
|
|
391
|
+
h2: ({ node, ...props }) => /* @__PURE__ */ jsx(Typography, { variant: "h5", gutterBottom: true, ...props }),
|
|
392
|
+
h3: ({ node, ...props }) => /* @__PURE__ */ jsx(Typography, { variant: "h6", gutterBottom: true, ...props }),
|
|
393
|
+
h4: ({ node, ...props }) => /* @__PURE__ */ jsx(Typography, { variant: "subtitle1", gutterBottom: true, ...props }),
|
|
394
|
+
h5: ({ node, ...props }) => /* @__PURE__ */ jsx(Typography, { variant: "subtitle2", gutterBottom: true, ...props }),
|
|
395
|
+
h6: ({ node, ...props }) => /* @__PURE__ */ jsx(Typography, { variant: "caption", gutterBottom: true, ...props }),
|
|
396
|
+
p: ({ node, ...props }) => /* @__PURE__ */ jsx(Typography, { variant: "body1", gutterBottom: true, ...props }),
|
|
397
|
+
li: ({ node, ...props }) => /* @__PURE__ */ jsx(Box, { component: "li", sx: { mb: 1, ml: 2 }, ...props }),
|
|
398
|
+
ul: ({ node, ...props }) => /* @__PURE__ */ jsx(Box, { component: "ul", sx: { mb: 2 }, ...props }),
|
|
399
|
+
ol: ({ node, ...props }) => /* @__PURE__ */ jsx(Box, { component: "ol", sx: { mb: 2 }, ...props }),
|
|
400
|
+
a: ({ node, ...props }) => /* @__PURE__ */ jsx(Link, { ...props, target: "_blank", rel: "noopener" })
|
|
401
|
+
},
|
|
402
|
+
children: markdownContent
|
|
403
|
+
}
|
|
404
|
+
) }),
|
|
405
|
+
/* @__PURE__ */ jsx(Box, { sx: { display: "flex", flexDirection: "column", gap: 1 }, children: requirements.map((req, index) => /* @__PURE__ */ jsx(Box, { sx: { display: "flex", alignItems: "flex-start" }, children: /* @__PURE__ */ jsx(
|
|
406
|
+
FormControlLabel,
|
|
407
|
+
{
|
|
408
|
+
control: /* @__PURE__ */ jsx(
|
|
409
|
+
Checkbox,
|
|
410
|
+
{
|
|
411
|
+
checked: checkedState[index],
|
|
412
|
+
onChange: () => handleCheckboxChange(index)
|
|
413
|
+
}
|
|
414
|
+
),
|
|
415
|
+
label: /* @__PURE__ */ jsxs(Typography, { variant: "body2", children: [
|
|
416
|
+
req.statement,
|
|
417
|
+
req.link && req.linkText && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
418
|
+
" ",
|
|
419
|
+
/* @__PURE__ */ jsx(Link, { href: req.link, target: "_blank", rel: "noopener", children: req.linkText })
|
|
420
|
+
] }),
|
|
421
|
+
req.required && /* @__PURE__ */ jsx(
|
|
422
|
+
Typography,
|
|
423
|
+
{
|
|
424
|
+
component: "span",
|
|
425
|
+
color: "error",
|
|
426
|
+
sx: { ml: 0.5 },
|
|
427
|
+
children: "*"
|
|
428
|
+
}
|
|
429
|
+
)
|
|
430
|
+
] })
|
|
431
|
+
}
|
|
432
|
+
) }, index)) })
|
|
433
|
+
] }),
|
|
434
|
+
/* @__PURE__ */ jsxs(DialogActions, { children: [
|
|
435
|
+
!forceAgreement && /* @__PURE__ */ jsx(Button, { onClick: onClose, color: "inherit", children: "Cancel" }),
|
|
436
|
+
/* @__PURE__ */ jsx(
|
|
437
|
+
Button,
|
|
438
|
+
{
|
|
439
|
+
onClick: handleAccept,
|
|
440
|
+
variant: "contained",
|
|
441
|
+
disabled: !isAllRequiredChecked,
|
|
442
|
+
fullWidth: forceAgreement,
|
|
443
|
+
children: "Accept"
|
|
444
|
+
}
|
|
445
|
+
)
|
|
446
|
+
] })
|
|
447
|
+
]
|
|
189
448
|
}
|
|
190
449
|
);
|
|
191
450
|
};
|
|
451
|
+
var UserAgreementModal_default = UserAgreementModal;
|
|
192
452
|
|
|
193
|
-
export { AutoResizingTextarea_default as AutoResizingTextarea, Chip, NextGameCountdown, TagEditor, generateTagsDisplay, renderTagsFromIds };
|
|
453
|
+
export { AutoResizingTextarea_default as AutoResizingTextarea, Chip, NextGameCountdown, TagEditor, UserAgreementModal_default as UserAgreementModal, generateTagsDisplay, getRandomTagline, getRandomTitle, renderTagsFromIds };
|
|
194
454
|
//# sourceMappingURL=shared.mjs.map
|
|
195
455
|
//# sourceMappingURL=shared.mjs.map
|
package/dist/shared.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/shared/AutoResizingTextarea.tsx","../src/components/shared/Chip.tsx","../src/components/shared/NextGameCountdown.tsx","../src/components/shared/TagComponents.tsx","../src/components/shared/TagEditor.tsx"],"names":["jsx","useEffect","jsxs","Fragment","useState"],"mappings":"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","file":"shared.mjs","sourcesContent":["\"use client\"\r\n\r\nimport React, {Dispatch, SetStateAction, useEffect} from 'react';\r\n\r\ninterface IAutoResizingTextareaProps {\r\n isInEditMode: boolean;\r\n onChange: Dispatch<SetStateAction<string>>;\r\n textareaRef: React.RefObject<HTMLTextAreaElement | null>;\r\n value: string;\r\n}\r\n\r\nconst AutoResizingTextarea: React.FC<IAutoResizingTextareaProps> = (props: IAutoResizingTextareaProps) => {\r\n const { isInEditMode, onChange, textareaRef, value } = props;\r\n\r\n useEffect(() => {\r\n if (isInEditMode && textareaRef.current) {\r\n const textarea = textareaRef.current;\r\n\r\n textarea.style.height = 'auto';\r\n textarea.style.height = `${textarea.scrollHeight}px`;\r\n }\r\n }, [isInEditMode, textareaRef, value]); // Run effect when entering edit mode or value changes\r\n\r\n return (\r\n <textarea\r\n ref={textareaRef}\r\n value={value}\r\n onChange={(e) => onChange(e.target.value)}\r\n style={{\r\n backgroundColor: '#fffbea',\r\n overflow: 'hidden',\r\n resize: 'none',\r\n width: '100%'\r\n }}\r\n />\r\n );\r\n}\r\n\r\nexport default AutoResizingTextarea;\r\n","import React from \"react\";\r\nimport {Tag} from \"@/types/tag\";\r\n\r\nexport default function Chip({ tag, removeCallback }: { tag: Tag, removeCallback?: (tagId: number) => void }) {\r\n const color = tag.color ?? \"#bfbcbb\";\r\n return (\r\n <>\r\n <span\r\n key={tag.id}\r\n className=\"inline-block text-sm px-3 py-1 rounded-full border-2 font-outlined text-white m-0.5 font-stretch-105% font-sans\"\r\n style={{\r\n borderColor: `color-mix(in srgb, ${color}, black 50%)`,\r\n background: `linear-gradient(160deg, color-mix(in srgb, ${color}, white 10%) 0%, color-mix(in srgb, ${color}, black 60%) 100%)`,\r\n textShadow: \"black 1.5px 1px 1.5px\",\r\n filter: `drop-shadow(2px 2px 1.5px color-mix(in srgb, ${color}, black 80%))`\r\n }}\r\n >\r\n {tag.label}\r\n {removeCallback && (\r\n <button\r\n type=\"button\"\r\n onClick={() => removeCallback(tag.id)}\r\n className=\"ml-2 text-white hover:text-red-700 focus:outline-none pl-0.5 pr-1 cursor-pointer hover:bg-white rounded-full\"\r\n style={{\r\n textShadow: \"black 1px 1px 1px\"\r\n }}\r\n >\r\n X\r\n </button>\r\n )}\r\n </span>\r\n </>\r\n )\r\n\r\n}","\"use client\";\r\n\r\nimport React, { useState, useEffect } from 'react';\r\nimport { Typography } from '@mui/material';\r\n\r\nexport const NextGameCountdown = ({ nextGameTime }: { nextGameTime?: Date | string }) => {\r\n const [timeLeft, setTimeLeft] = useState<string>('');\r\n\r\n useEffect(() => {\r\n if (!nextGameTime) return;\r\n\r\n const timer = setInterval(() => {\r\n const now = new Date().getTime();\r\n const distance = new Date(nextGameTime).getTime() - now;\r\n\r\n if (distance < 0) {\r\n clearInterval(timer);\r\n setTimeLeft('Started');\r\n return;\r\n }\r\n\r\n const days = Math.floor(distance / (1000 * 60 * 60 * 24));\r\n const hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));\r\n const minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));\r\n const seconds = Math.floor((distance % (1000 * 60)) / 1000);\r\n\r\n let timeString = '';\r\n if (days > 0) timeString += `${days}d `;\r\n if (hours > 0 || days > 0) timeString += `${hours}h `;\r\n timeString += `${minutes}m ${seconds}s`;\r\n\r\n setTimeLeft(timeString);\r\n }, 1000);\r\n\r\n return () => clearInterval(timer);\r\n }, [nextGameTime]);\r\n\r\n if (!nextGameTime) return null;\r\n\r\n return (\r\n <Typography variant=\"body2\" color=\"primary\" sx={{ fontWeight: 'bold' }}>\r\n Next Game: {timeLeft}\r\n </Typography>\r\n );\r\n};\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport type { Tag } from \"@/types/tag\";\r\nimport Chip from \"@/components/shared/Chip\";\r\n\r\nexport function generateTagsDisplay(tag: Tag) {\r\n return (\r\n <Chip tag={tag} key={tag.id} />\r\n )\r\n}\r\n\r\nexport function renderTagsFromIds(ids: number[] | undefined, legalTags: Tag[]) {\r\n if (!ids || !legalTags || legalTags.length === 0) { return ( <></>) }\r\n const validTags = ids\r\n .map((id) => legalTags.find((tag) => tag.id === id))\r\n .filter((tag): tag is Tag => Boolean(tag));\r\n\r\n return validTags.map((tag) => generateTagsDisplay(tag));\r\n}\r\n","\"use client\";\r\n\r\nimport React, { useMemo, useState } from \"react\";\r\nimport Autocomplete from \"@mui/material/Autocomplete\";\r\nimport Card from \"@mui/material/Card\";\r\nimport CardContent from \"@mui/material/CardContent\";\r\nimport CardHeader from \"@mui/material/CardHeader\";\r\nimport Grid from \"@mui/material/Grid\";\r\nimport Popper, { PopperProps } from \"@mui/material/Popper\";\r\nimport TextField from \"@mui/material/TextField\";\r\nimport type { Tag } from \"@/types/tag\";\r\nimport Chip from \"@/components/shared/Chip\";\r\n\r\nexport interface TagEditorProps {\r\n title?: string;\r\n selectedTags: Tag[];\r\n possibleTags: Tag[];\r\n onToggleTag: (id: number) => void;\r\n}\r\n\r\nexport function TagEditor({\r\n title = \"Tags\",\r\n selectedTags,\r\n possibleTags,\r\n onToggleTag,\r\n}: TagEditorProps) {\r\n const [inputValue, setInputValue] = useState(\"\");\r\n const selectedIds = useMemo(() => selectedTags.map((tag) => tag.id), [selectedTags]);\r\n\r\n const options = useMemo(\r\n () => possibleTags.map((tag) => ({ value: tag.id, label: tag.label })),\r\n [possibleTags]\r\n );\r\n\r\n return (\r\n <Grid container>\r\n <Grid size={{ xs: 12 }}>\r\n <Card>\r\n <CardHeader\r\n title={title}\r\n style={{\r\n background: \"linear-gradient(135deg, rgba(25, 118, 210, 0.8), rgba(25, 118, 210, 1))\",\r\n color: \"#FFFFFF\",\r\n fontSize: \"1.5rem\",\r\n textShadow: \"0px 3px 6px rgba(0, 0, 0, 0.5)\",\r\n }}\r\n />\r\n <CardContent>\r\n <div className=\"mt-2 flex flex-wrap gap-2\">\r\n {selectedTags.map((tag) => (\r\n <Chip\r\n key={tag.id}\r\n tag={tag}\r\n removeCallback={() => onToggleTag(tag.id)}\r\n />\r\n ))}\r\n </div>\r\n <Grid container spacing={3}>\r\n <Grid sx={{ marginTop: 3, width: \"100%\" }}>\r\n <Autocomplete\r\n key={selectedIds.join(\"-\")}\r\n options={options}\r\n filterOptions={(availableOptions, state) =>\r\n availableOptions\r\n .filter(\r\n (option) =>\r\n !selectedIds.includes(option.value) &&\r\n option.label.toLowerCase().includes(state.inputValue.toLowerCase())\r\n )\r\n .slice(0, 3)\r\n }\r\n value={null}\r\n inputValue={inputValue}\r\n onInputChange={(event, newInputValue) => {\r\n if (event && event.type === \"change\") {\r\n setInputValue(newInputValue);\r\n }\r\n }}\r\n onChange={(event, newValue) => {\r\n if (newValue) {\r\n onToggleTag(newValue.value);\r\n }\r\n setInputValue(\"\");\r\n }}\r\n slots={{ popper: CustomPopper }}\r\n renderInput={(params) => <TextField {...params} label=\"Select Tags\" />}\r\n />\r\n </Grid>\r\n </Grid>\r\n </CardContent>\r\n </Card>\r\n </Grid>\r\n </Grid>\r\n );\r\n}\r\n\r\nconst CustomPopper = (props: PopperProps) => {\r\n return (\r\n <Popper\r\n {...props}\r\n modifiers={[\r\n {\r\n name: \"preventOverflow\",\r\n options: { boundary: \"viewport\" },\r\n },\r\n {\r\n name: \"offset\",\r\n options: { offset: [0, -10] },\r\n },\r\n ]}\r\n placement=\"top-start\"\r\n />\r\n );\r\n};\r\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/shared/AutoResizingTextarea.tsx","../src/components/shared/Chip.tsx","../src/components/shared/NameGenerator.ts","../src/components/shared/NextGameCountdown.tsx","../src/components/shared/TagComponents.tsx","../src/components/TablePage/EditComponents/TagSelector.tsx","../src/components/shared/TagEditor.tsx","../src/components/shared/UserAgreementModal.tsx"],"names":["jsx","useEffect","jsxs","Fragment","useState","useMemo","Grid","Typography"],"mappings":"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","file":"shared.mjs","sourcesContent":["\"use client\"\r\n\r\nimport React, {Dispatch, SetStateAction, useEffect} from 'react';\r\n\r\ninterface IAutoResizingTextareaProps {\r\n isInEditMode: boolean;\r\n onChange: Dispatch<SetStateAction<string>>;\r\n textareaRef: React.RefObject<HTMLTextAreaElement | null>;\r\n value: string;\r\n}\r\n\r\nconst AutoResizingTextarea: React.FC<IAutoResizingTextareaProps> = (props: IAutoResizingTextareaProps) => {\r\n const { isInEditMode, onChange, textareaRef, value } = props;\r\n\r\n useEffect(() => {\r\n if (isInEditMode && textareaRef.current) {\r\n const textarea = textareaRef.current;\r\n\r\n textarea.style.height = 'auto';\r\n textarea.style.height = `${textarea.scrollHeight}px`;\r\n }\r\n }, [isInEditMode, textareaRef, value]); // Run effect when entering edit mode or value changes\r\n\r\n return (\r\n <textarea\r\n ref={textareaRef}\r\n value={value}\r\n onChange={(e) => onChange(e.target.value)}\r\n style={{\r\n backgroundColor: '#fffbea',\r\n overflow: 'hidden',\r\n resize: 'none',\r\n width: '100%'\r\n }}\r\n />\r\n );\r\n}\r\n\r\nexport default AutoResizingTextarea;\r\n","import React from \"react\";\r\nimport {Tag} from \"@/types/tag\";\r\n\r\nexport default function Chip({ tag, removeCallback }: { tag: Tag, removeCallback?: (tagId: number) => void }) {\r\n const color = tag.color ?? \"#bfbcbb\";\r\n return (\r\n <>\r\n <span\r\n key={tag.id}\r\n className=\"inline-block text-sm px-3 py-1 rounded-full border-2 font-outlined text-white m-0.5 font-stretch-105% font-sans\"\r\n style={{\r\n borderColor: `color-mix(in srgb, ${color}, black 50%)`,\r\n background: `linear-gradient(160deg, color-mix(in srgb, ${color}, white 10%) 0%, color-mix(in srgb, ${color}, black 60%) 100%)`,\r\n textShadow: \"black 1.5px 1px 1.5px\",\r\n filter: `drop-shadow(2px 2px 1.5px color-mix(in srgb, ${color}, black 80%))`\r\n }}\r\n >\r\n {tag.label}\r\n {removeCallback && (\r\n <button\r\n type=\"button\"\r\n onClick={() => removeCallback(tag.id)}\r\n className=\"ml-2 text-white hover:text-red-700 focus:outline-none pl-0.5 pr-1 cursor-pointer hover:bg-white rounded-full\"\r\n style={{\r\n textShadow: \"black 1px 1px 1px\"\r\n }}\r\n >\r\n X\r\n </button>\r\n )}\r\n </span>\r\n </>\r\n )\r\n\r\n}","\r\nexport const getRandomTitle = () => {\r\n const randomPrefix = titlePrefixes[Math.random() * titlePrefixes.length | 0];\r\n const randomMiddle = tileMiddle[Math.random() * tileMiddle.length | 0];\r\n const randomSuffix = titleSuffixes[Math.random() * titleSuffixes.length | 0];\r\n return `${randomPrefix} ${randomMiddle} ${randomSuffix}`;\r\n}\r\n\r\nexport const getRandomTagline = () => taglines[Math.random() * taglines.length | 0];\r\n\r\n\r\nconst titlePrefixes = [\r\n \"The Knights of The\",\r\n \"The Fellowship of The\",\r\n \"The Order of The\",\r\n \"The Infamous\",\r\n \"The Legendary\",\r\n \"The Dubious\",\r\n \"The Sworn Guardians of The\",\r\n \"The Ancient Guild of The\",\r\n \"The Unstoppable\",\r\n \"The Misfit\",\r\n \"The Chaotic\",\r\n \"The Brave\",\r\n \"The Forgotten\",\r\n \"The Wandering\",\r\n \"The Noble Council of The\",\r\n \"The Dread Pirates of The\",\r\n \"The Honorable Society of The\",\r\n \"The Cursed\",\r\n \"The Unlikely Heroes of The\",\r\n \"The Elders of The\",\r\n \"The Seekers of The\",\r\n \"The Champions of The\",\r\n \"The Heralds of The\",\r\n \"The Disciples of The\",\r\n \"The Ragtag Band of The\",\r\n \"The Cult of The\",\r\n];\r\n\r\nconst tileMiddle = [\r\n \"Round\",\r\n \"Kitchen\",\r\n \"Deepest\",\r\n \"Sorcery\",\r\n \"Munchkin\",\r\n \"Shenanigan\",\r\n \"Secret\",\r\n \"Dungeon\",\r\n \"Fireside\",\r\n \"Tabletop\",\r\n \"Midnight\",\r\n \"Tavern\",\r\n \"Goblin\",\r\n \"Dragon\",\r\n \"Critical\",\r\n \"Natural Twenty\",\r\n \"Counterspell\",\r\n \"Nat One\",\r\n \"Cardboard\",\r\n \"Dice Tower\",\r\n \"Campaign\",\r\n \"Lore\",\r\n \"Awkward\",\r\n \"Unhinged\",\r\n \"Chaotic Neutral\",\r\n \"Homebrew\",\r\n \"Side Quest\",\r\n];\r\n\r\nconst titleSuffixes = [\r\n \"Table\",\r\n \"Dungeon\",\r\n \"Cave\",\r\n \"Crew\",\r\n \"Team\",\r\n \"League\",\r\n \"Horde\",\r\n \"Party\",\r\n \"Conclave\",\r\n \"Collective\",\r\n \"Alliance\",\r\n \"Syndicate\",\r\n \"Guild\",\r\n \"Cabal\",\r\n \"Council\",\r\n \"Expedition\",\r\n \"Enclave\",\r\n \"Consortium\",\r\n \"Troupe\",\r\n \"Vanguard\",\r\n \"Cohort\",\r\n \"Brotherhood\",\r\n \"Sisterhood\",\r\n \"Pantheon\",\r\n \"Assembly\",\r\n \"Coven\",\r\n];\r\n\r\nconst taglines = [\r\n \"Everyone is welcome!\",\r\n \"Looking for serious players.\",\r\n \"Get in nerds, we're gaming!\",\r\n \"If you aren't there, you're square.\",\r\n \"It will be legendary!\",\r\n \"Beginners welcome — we were all level 1 once.\",\r\n \"No experience necessary. Snacks encouraged.\",\r\n \"Roleplayers, board gamers, and chaos gremlins welcome.\",\r\n \"We don't metagame. Much.\",\r\n \"All alignments accepted. True Neutral gets the snacks.\",\r\n \"Where every session is a one-shot... until it isn't.\",\r\n \"Homebrew rules may apply.\",\r\n \"Warning: may contain excessive lore.\",\r\n \"Critical failures celebrated as much as critical hits.\",\r\n \"No powergamers. Okay, maybe one powergamer.\",\r\n \"We finish campaigns. (Eventually.)\",\r\n \"Veteran players seeking worthy companions.\",\r\n \"Casuals only — we're here for the vibes.\",\r\n \"Serious about fun, not about rules.\",\r\n \"Min-maxers need not apply.\",\r\n \"For those who read the rulebook... and those who definitely didn't.\",\r\n \"Roll for initiative. Arrive on time.\",\r\n \"Side quests are the main quest here.\",\r\n \"Chaotic good energy required.\",\r\n \"If you bring snacks, you can name the first NPC.\",\r\n \"We read the rulebook so you don't have to.\",\r\n \"Wargamers only — no take-backs, no mercy.\",\r\n \"Everyone welcome. Meeple provided.\",\r\n \"We always play the longest game on the shelf.\",\r\n \"Worker placement. Resource management. Existential dread.\",\r\n \"No phones at the table! We're here for the game.\",\r\n \"Someone always flips the table. Metaphorically. Usually.\",\r\n \"We have a designated rules lawyer. It's fine.\",\r\n \"Cooperative games only — we can't handle another Monopoly incident.\",\r\n \"Teaching time is half the fun!\",\r\n];\r\n","\"use client\";\r\n\r\nimport React, { useState, useEffect } from 'react';\r\nimport { Typography } from '@mui/material';\r\n\r\nexport const NextGameCountdown = ({ nextGameTime }: { nextGameTime?: Date | string }) => {\r\n const [timeLeft, setTimeLeft] = useState<string>('');\r\n\r\n useEffect(() => {\r\n if (!nextGameTime) return;\r\n\r\n const timer = setInterval(() => {\r\n const now = new Date().getTime();\r\n const distance = new Date(nextGameTime).getTime() - now;\r\n\r\n if (distance < 0) {\r\n clearInterval(timer);\r\n setTimeLeft('Started');\r\n return;\r\n }\r\n\r\n const days = Math.floor(distance / (1000 * 60 * 60 * 24));\r\n const hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));\r\n const minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));\r\n const seconds = Math.floor((distance % (1000 * 60)) / 1000);\r\n\r\n let timeString = '';\r\n if (days > 0) timeString += `${days}d `;\r\n if (hours > 0 || days > 0) timeString += `${hours}h `;\r\n timeString += `${minutes}m ${seconds}s`;\r\n\r\n setTimeLeft(timeString);\r\n }, 1000);\r\n\r\n return () => clearInterval(timer);\r\n }, [nextGameTime]);\r\n\r\n if (!nextGameTime) return null;\r\n\r\n return (\r\n <Typography variant=\"body2\" color=\"primary\" sx={{ fontWeight: 'bold' }}>\r\n Next Game: {timeLeft}\r\n </Typography>\r\n );\r\n};\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport type { Tag } from \"@/types/tag\";\r\nimport Chip from \"@/components/shared/Chip\";\r\n\r\nexport function generateTagsDisplay(tag: Tag) {\r\n return (\r\n <Chip tag={tag} key={tag.id} />\r\n )\r\n}\r\n\r\nexport function renderTagsFromIds(ids: number[] | undefined, legalTags: Tag[], options: { showEventTag?: boolean, eventTagId?: number } = {}) {\r\n if (!ids || !legalTags || legalTags.length === 0) { return ( <></>) }\r\n const { showEventTag = false, eventTagId } = options;\r\n const validTags = ids\r\n .map((id) => legalTags.find((tag) => tag.id === id))\r\n .filter((tag): tag is Tag => Boolean(tag));\r\n\r\n // Sort tags: event tag (if shown) first, then \"Organizer Run\", then \"Display Only\", then others\r\n const sortedTags = [...validTags].sort((a, b) => {\r\n // Handle event tag priority if enabled\r\n if (showEventTag && eventTagId !== undefined) {\r\n if (a.id === eventTagId && b.id === eventTagId) return 0;\r\n if (a.id === eventTagId) return -1;\r\n if (b.id === eventTagId) return 1;\r\n }\r\n\r\n const priorityOrder = [\"Organizer Run\", \"Display Only\"];\r\n const aIndex = priorityOrder.indexOf(a.label);\r\n const bIndex = priorityOrder.indexOf(b.label);\r\n\r\n if (aIndex !== -1 && bIndex !== -1) {\r\n return aIndex - bIndex;\r\n }\r\n if (aIndex !== -1) return -1;\r\n if (bIndex !== -1) return 1;\r\n return 0;\r\n });\r\n\r\n return sortedTags.map((tag) => generateTagsDisplay(tag));\r\n}\r\n","import React, {useMemo, useState} from \"react\";\r\nimport TextField from \"@mui/material/TextField\";\r\nimport Grid from \"@mui/material/Grid\";\r\nimport Autocomplete from \"@mui/material/Autocomplete\";\r\nimport Chip from \"../../shared/Chip\";\r\nimport {Tag} from \"@/types/tag\";\r\n\r\nexport function TagSelector({initialTagIDs, allTags, onTagChange}: {\r\n initialTagIDs: number[];\r\n allTags: Tag[];\r\n onTagChange: (tagIDs: number[]) => void;\r\n}) {\r\n const [tagList, updateTagList] = useState(initialTagIDs);\r\n const [inputValue, setInputValue] = useState(\"\");\r\n\r\n const toggleTag = (id: number) => tagList.find(t => t === id) ? removeTag(id) : addTag(id);\r\n const addTag = (id: number) => {\r\n const newList = [...tagList, id];\r\n updateTagList(newList);\r\n onTagChange(newList);\r\n };\r\n const removeTag = (id: number) => {\r\n const newList = tagList.filter(t => t !== id);\r\n updateTagList(newList);\r\n onTagChange(newList);\r\n }\r\n const selectedTags = useMemo(() => allTags.filter(tag => tagList.includes(tag.id)), [allTags, tagList]);\r\n const options = useMemo(\r\n () => allTags.map((tag) => ({ value: tag.id, label: tag.label })),\r\n [allTags]\r\n );\r\n\r\n return (\r\n <>\r\n <div className=\"flex flex-wrap gap-2\">\r\n {selectedTags.map((tag) => (\r\n <Chip\r\n key={tag.id}\r\n tag={tag}\r\n removeCallback={() => toggleTag(tag.id)}\r\n />\r\n ))}\r\n </div>\r\n <Grid container spacing={3}>\r\n <Grid sx={{ marginTop: 3, width: \"100%\", minWidth: \"550px\" }}>\r\n <Autocomplete\r\n key={tagList.join(\"-\")}\r\n options={options}\r\n filterOptions={(availableOptions, state) =>\r\n availableOptions\r\n .filter(\r\n (option) =>\r\n !tagList.includes(option.value) &&\r\n option.label.toLowerCase().includes(state.inputValue.toLowerCase())\r\n )\r\n }\r\n value={null}\r\n inputValue={inputValue}\r\n onInputChange={(event, newInputValue) => {\r\n if (event && event.type === \"change\") {\r\n setInputValue(newInputValue);\r\n }\r\n }}\r\n onChange={(event, newValue) => {\r\n if (newValue) {\r\n toggleTag(newValue.value);\r\n }\r\n setInputValue(\"\");\r\n }}\r\n renderInput={(params) => <TextField {...params} label=\"Select Tags\" />}\r\n />\r\n </Grid>\r\n </Grid>\r\n </>\r\n );\r\n}\r\n","\"use client\";\r\n\r\nimport React, { useMemo } from \"react\";\r\nimport Card from \"@mui/material/Card\";\r\nimport CardContent from \"@mui/material/CardContent\";\r\nimport CardHeader from \"@mui/material/CardHeader\";\r\nimport Grid from \"@mui/material/Grid\";\r\nimport type { Tag } from \"@/types/tag\";\r\nimport {TagSelector} from \"@/components/TablePage/EditComponents/TagSelector\";\r\n\r\nexport interface TagEditorProps {\r\n title?: string;\r\n selectedTags: Tag[];\r\n possibleTags: Tag[];\r\n onToggleTag: (id: number) => void;\r\n}\r\n\r\nexport function TagEditor({\r\n title,\r\n selectedTags,\r\n possibleTags,\r\n onToggleTag,\r\n}: TagEditorProps) {\r\n const selectedIds = useMemo(() => selectedTags.map((tag) => tag.id), [selectedTags]);\r\n\r\n const onTagChange = (newSelectedIds: number[]) => {\r\n const addedTags = newSelectedIds.filter((id) => !selectedIds.includes(id));\r\n const removedTags = selectedIds.filter((id) => !newSelectedIds.includes(id));\r\n\r\n addedTags.forEach((id) => onToggleTag(id));\r\n removedTags.forEach((id) => onToggleTag(id));\r\n }\r\n\r\n return (\r\n <Grid container>\r\n <Grid size={{ xs: 12 }}>\r\n <Card>\r\n {title ? (<CardHeader\r\n title={title}\r\n style={{\r\n background: \"linear-gradient(135deg, rgba(25, 118, 210, 0.8), rgba(25, 118, 210, 1))\",\r\n color: \"#FFFFFF\",\r\n fontSize: \"1.5rem\",\r\n textShadow: \"0px 3px 6px rgba(0, 0, 0, 0.5)\",\r\n }}\r\n />) : \"\"}\r\n <CardContent>\r\n <TagSelector initialTagIDs={selectedIds} allTags={possibleTags} onTagChange={onTagChange} />\r\n </CardContent>\r\n </Card>\r\n </Grid>\r\n </Grid>\r\n );\r\n}\r\n","\"use client\";\r\n\r\nimport React, { useState } from \"react\";\r\nimport {\r\n Dialog,\r\n DialogTitle,\r\n DialogContent,\r\n DialogActions,\r\n Button,\r\n Checkbox,\r\n FormControlLabel,\r\n Link,\r\n Typography,\r\n Box,\r\n} from \"@mui/material\";\r\nimport ReactMarkdown from \"react-markdown\";\r\n\r\nexport type AgreementRequirement = {\r\n statement: string;\r\n link?: string;\r\n linkText?: string;\r\n required: boolean;\r\n};\r\n\r\nexport type UserAgreementModalProps = {\r\n open: boolean;\r\n onClose?: () => void;\r\n markdownContent: string;\r\n requirements: AgreementRequirement[];\r\n onAccept: () => void;\r\n title?: string;\r\n forceAgreement?: boolean;\r\n};\r\n\r\nconst UserAgreementModal: React.FC<UserAgreementModalProps> = ({\r\n open,\r\n onClose,\r\n markdownContent,\r\n requirements,\r\n onAccept,\r\n title = \"User Agreement\",\r\n forceAgreement = false,\r\n}) => {\r\n const [checkedState, setCheckedState] = useState<boolean[]>(\r\n new Array(requirements.length).fill(false)\r\n );\r\n\r\n const handleCheckboxChange = (index: number) => {\r\n const updatedCheckedState = checkedState.map((item, i) =>\r\n i === index ? !item : item\r\n );\r\n setCheckedState(updatedCheckedState);\r\n };\r\n\r\n const isAllRequiredChecked = requirements.every((req, index) => {\r\n if (req.required) {\r\n return checkedState[index];\r\n }\r\n return true;\r\n });\r\n\r\n const handleAccept = () => {\r\n if (isAllRequiredChecked) {\r\n onAccept();\r\n }\r\n };\r\n\r\n const handleClose = (event: {}, reason: \"backdropClick\" | \"escapeKeyDown\") => {\r\n if (forceAgreement) return;\r\n if (onClose) onClose();\r\n };\r\n\r\n return (\r\n <Dialog\r\n open={open}\r\n onClose={handleClose}\r\n maxWidth=\"md\"\r\n fullWidth\r\n disableEscapeKeyDown={forceAgreement}\r\n >\r\n <DialogTitle>{title}</DialogTitle>\r\n <DialogContent dividers>\r\n <Box sx={{ mb: 3 }}>\r\n <ReactMarkdown\r\n components={{\r\n h1: ({ node, ...props }) => <Typography variant=\"h4\" gutterBottom {...props} />,\r\n h2: ({ node, ...props }) => <Typography variant=\"h5\" gutterBottom {...props} />,\r\n h3: ({ node, ...props }) => <Typography variant=\"h6\" gutterBottom {...props} />,\r\n h4: ({ node, ...props }) => <Typography variant=\"subtitle1\" gutterBottom {...props} />,\r\n h5: ({ node, ...props }) => <Typography variant=\"subtitle2\" gutterBottom {...props} />,\r\n h6: ({ node, ...props }) => <Typography variant=\"caption\" gutterBottom {...props} />,\r\n p: ({ node, ...props }) => <Typography variant=\"body1\" gutterBottom {...props} />,\r\n li: ({ node, ...props }) => <Box component=\"li\" sx={{ mb: 1, ml: 2 }} {...props} />,\r\n ul: ({ node, ...props }) => <Box component=\"ul\" sx={{ mb: 2 }} {...props} />,\r\n ol: ({ node, ...props }) => <Box component=\"ol\" sx={{ mb: 2 }} {...props} />,\r\n a: ({ node, ...props }) => <Link {...props} target=\"_blank\" rel=\"noopener\" />,\r\n }}\r\n >\r\n {markdownContent}\r\n </ReactMarkdown>\r\n </Box>\r\n <Box sx={{ display: \"flex\", flexDirection: \"column\", gap: 1 }}>\r\n {requirements.map((req, index) => (\r\n <Box key={index} sx={{ display: \"flex\", alignItems: \"flex-start\" }}>\r\n <FormControlLabel\r\n control={\r\n <Checkbox\r\n checked={checkedState[index]}\r\n onChange={() => handleCheckboxChange(index)}\r\n />\r\n }\r\n label={\r\n <Typography variant=\"body2\">\r\n {req.statement}\r\n {req.link && req.linkText && (\r\n <>\r\n {\" \"}\r\n <Link href={req.link} target=\"_blank\" rel=\"noopener\">\r\n {req.linkText}\r\n </Link>\r\n </>\r\n )}\r\n {req.required && (\r\n <Typography\r\n component=\"span\"\r\n color=\"error\"\r\n sx={{ ml: 0.5 }}\r\n >\r\n *\r\n </Typography>\r\n )}\r\n </Typography>\r\n }\r\n />\r\n </Box>\r\n ))}\r\n </Box>\r\n </DialogContent>\r\n <DialogActions>\r\n {!forceAgreement && (\r\n <Button onClick={onClose} color=\"inherit\">\r\n Cancel\r\n </Button>\r\n )}\r\n <Button\r\n onClick={handleAccept}\r\n variant=\"contained\"\r\n disabled={!isAllRequiredChecked}\r\n fullWidth={forceAgreement}\r\n >\r\n Accept\r\n </Button>\r\n </DialogActions>\r\n </Dialog>\r\n );\r\n};\r\n\r\nexport default UserAgreementModal;\r\n"]}
|
package/dist/types/event.d.cts
CHANGED
|
@@ -28,10 +28,9 @@ interface EventDetails {
|
|
|
28
28
|
}
|
|
29
29
|
type EventEditContextValue = {
|
|
30
30
|
isOwner: boolean;
|
|
31
|
-
updateEvent: (patch: Partial<
|
|
31
|
+
updateEvent: (patch: Partial<EventDetails>) => Promise<boolean> | void | boolean;
|
|
32
32
|
updateImages?: () => void;
|
|
33
33
|
};
|
|
34
|
-
type EventDB = EventDetails;
|
|
35
34
|
type EventResult = EventDetails;
|
|
36
35
|
|
|
37
|
-
export type { EventBannerImage,
|
|
36
|
+
export type { EventBannerImage, EventDetails, EventEditContextValue, EventLink, EventResult };
|
package/dist/types/event.d.ts
CHANGED
|
@@ -28,10 +28,9 @@ interface EventDetails {
|
|
|
28
28
|
}
|
|
29
29
|
type EventEditContextValue = {
|
|
30
30
|
isOwner: boolean;
|
|
31
|
-
updateEvent: (patch: Partial<
|
|
31
|
+
updateEvent: (patch: Partial<EventDetails>) => Promise<boolean> | void | boolean;
|
|
32
32
|
updateImages?: () => void;
|
|
33
33
|
};
|
|
34
|
-
type EventDB = EventDetails;
|
|
35
34
|
type EventResult = EventDetails;
|
|
36
35
|
|
|
37
|
-
export type { EventBannerImage,
|
|
36
|
+
export type { EventBannerImage, EventDetails, EventEditContextValue, EventLink, EventResult };
|
package/dist/types/index.d.cts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { EventBannerImage,
|
|
1
|
+
export { EventBannerImage, EventDetails, EventEditContextValue, EventLink, EventResult } from './event';
|
|
2
2
|
export { Player, PlayerFormat, WaitlistPlayer } from './player';
|
|
3
|
-
export { PaginationData, SearchCriteria, SearchResultItem, SearchResultType } from './search';
|
|
3
|
+
export { DistanceOption, PaginationData, SearchCriteria, SearchResultItem, SearchResultType } from './search';
|
|
4
4
|
export { TableFormat } from './table';
|
|
5
5
|
export { TableRecord } from './tables';
|
|
6
6
|
export { Tag } from './tag';
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { EventBannerImage,
|
|
1
|
+
export { EventBannerImage, EventDetails, EventEditContextValue, EventLink, EventResult } from './event';
|
|
2
2
|
export { Player, PlayerFormat, WaitlistPlayer } from './player';
|
|
3
|
-
export { PaginationData, SearchCriteria, SearchResultItem, SearchResultType } from './search';
|
|
3
|
+
export { DistanceOption, PaginationData, SearchCriteria, SearchResultItem, SearchResultType } from './search';
|
|
4
4
|
export { TableFormat } from './table';
|
|
5
5
|
export { TableRecord } from './tables';
|
|
6
6
|
export { Tag } from './tag';
|