@moshevents/copy 0.4.0 → 0.5.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.
Files changed (3) hide show
  1. package/lib/copy.d.ts +169 -1
  2. package/lib/copy.js +139 -1
  3. package/package.json +1 -1
package/lib/copy.d.ts CHANGED
@@ -10,6 +10,143 @@ export declare const copy: {
10
10
  count: number;
11
11
  }) => string;
12
12
  };
13
+ readonly tickets: {
14
+ readonly sectionTitle: "Tickets";
15
+ readonly getTickets: "Get tickets";
16
+ readonly noBookingFees: "No booking fees";
17
+ readonly soldOut: "Sold out";
18
+ readonly notYetOnSale: "Not yet on sale";
19
+ readonly remaining: (p: {
20
+ count: string | number;
21
+ }) => string;
22
+ readonly accessCodePlaceholder: "Access code";
23
+ readonly checkoutTitle: "Checkout";
24
+ readonly total: "Total";
25
+ readonly pay: (p: {
26
+ amount: string | number;
27
+ }) => string;
28
+ readonly success: {
29
+ readonly heading: "You're going";
30
+ readonly subtitle: "Your tickets are ready.";
31
+ };
32
+ readonly viewTickets: "View tickets";
33
+ readonly yourTickets: (p: {
34
+ count: string | number;
35
+ }) => string;
36
+ readonly ticketNofM: (p: {
37
+ n: string | number;
38
+ m: string | number;
39
+ }) => string;
40
+ readonly doorHint: "Show this at the door";
41
+ };
42
+ readonly ticketsManage: {
43
+ readonly title: "Tickets";
44
+ readonly pickEvent: "Choose an event to manage its ticketing.";
45
+ readonly upcomingSection: "Upcoming";
46
+ readonly pastSection: "Past";
47
+ readonly noEvents: "No events yet — create an event to start selling tickets.";
48
+ readonly loadFailed: "Couldn't load ticketing. Try again.";
49
+ readonly backToEvents: "All events";
50
+ readonly setup: {
51
+ readonly title: "Sell tickets on Mosh";
52
+ readonly subtitle: "Turn on ticketing to create tiers and start selling — no booking fees for your fans.";
53
+ readonly capacityLabel: "Total capacity (optional)";
54
+ readonly capacityHint: "Caps tickets across all tiers. Leave blank for no cap.";
55
+ readonly capacitySave: "Update capacity";
56
+ readonly enable: "Enable ticketing";
57
+ readonly disable: "Disable ticketing";
58
+ readonly disableConfirm: "Disable ticketing? Sales go offline and the event returns to draft.";
59
+ };
60
+ readonly stripe: {
61
+ readonly title: "Get paid with Stripe";
62
+ readonly body: "Connect your venue's Stripe account so ticket revenue can be paid out to you. It only takes a few minutes.";
63
+ readonly cta: "Set up payouts";
64
+ readonly refresh: "Refresh status";
65
+ readonly ready: "Stripe connected — payments enabled.";
66
+ readonly notReady: "Stripe onboarding incomplete — tickets can't go on sale until it's done.";
67
+ };
68
+ readonly sales: {
69
+ readonly title: "Sales status";
70
+ readonly summary: (p: {
71
+ sold: string | number;
72
+ gross: string | number;
73
+ }) => string;
74
+ readonly goOnSale: "Go on sale";
75
+ readonly pause: "Pause sales";
76
+ readonly resume: "Resume sales";
77
+ readonly close: "Close sales";
78
+ readonly closeConfirm: "Close ticket sales? Buyers will no longer be able to purchase tickets for this event.";
79
+ readonly status: {
80
+ readonly draft: "Draft";
81
+ readonly onSale: "On sale";
82
+ readonly paused: "Paused";
83
+ readonly closed: "Closed";
84
+ };
85
+ };
86
+ readonly tiers: {
87
+ readonly title: "Ticket tiers";
88
+ readonly add: "Add tier";
89
+ readonly empty: "No tiers yet. Add one to start selling.";
90
+ readonly colTier: "Tier";
91
+ readonly colPrice: "Price";
92
+ readonly colSold: "Sold";
93
+ readonly colStatus: "Status";
94
+ readonly held: (p: {
95
+ count: string | number;
96
+ }) => string;
97
+ readonly codeRequired: "Access code";
98
+ readonly edit: "Edit";
99
+ readonly archive: "Archive";
100
+ readonly pause: "Pause";
101
+ readonly activate: "Activate";
102
+ readonly archiveConfirm: (p: {
103
+ name: string | number;
104
+ }) => string;
105
+ readonly availability: {
106
+ readonly onSale: "On sale";
107
+ readonly upcoming: "Upcoming";
108
+ readonly soldOut: "Sold out";
109
+ readonly ended: "Ended";
110
+ readonly paused: "Paused";
111
+ };
112
+ };
113
+ readonly tierForm: {
114
+ readonly addTitle: "Add tier";
115
+ readonly editTitle: "Edit tier";
116
+ readonly name: "Name";
117
+ readonly namePlaceholder: "General admission";
118
+ readonly price: "Price (USD)";
119
+ readonly quantity: "Quantity";
120
+ readonly maxPerOrder: "Max per order";
121
+ readonly salesStart: "Sales start (optional)";
122
+ readonly salesEnd: "Sales end (optional)";
123
+ readonly requireCode: "Require an access code";
124
+ readonly codeLabel: "Access code";
125
+ readonly codeKeepHint: "Leave blank to keep the current code.";
126
+ readonly create: "Create tier";
127
+ readonly save: "Save changes";
128
+ };
129
+ readonly payout: {
130
+ readonly title: "Payout";
131
+ readonly gross: "Gross sales";
132
+ readonly fees: "Stripe fees";
133
+ readonly refunds: "Refunds";
134
+ readonly net: "Net payout";
135
+ readonly status: {
136
+ readonly held: "Held";
137
+ readonly eligible: "Eligible";
138
+ readonly transferred: "Transferred";
139
+ readonly failed: "Failed";
140
+ };
141
+ readonly heldHint: "Funds are released 24 hours after the event ends.";
142
+ readonly transferredOn: (p: {
143
+ date: string | number;
144
+ }) => string;
145
+ readonly manualHold: "This payout is on hold — contact Mosh support.";
146
+ readonly blockersTitle: "Waiting on";
147
+ readonly empty: "No sales yet — payout details will appear here.";
148
+ };
149
+ };
13
150
  readonly account: {
14
151
  readonly deactivate: {
15
152
  readonly title: "Deactivate or delete?";
@@ -159,11 +296,29 @@ export declare const copy: {
159
296
  readonly cancel: "Cancel";
160
297
  readonly ok: "OK";
161
298
  readonly delete: "Delete";
299
+ readonly add: "Add";
300
+ readonly remove: "Remove";
162
301
  readonly follow: "Follow";
163
302
  readonly sortBy: "Sort by";
164
303
  readonly following: "Following";
165
304
  readonly block: "Block";
166
305
  readonly unblock: "Unblock";
306
+ readonly couldntRefresh: "Couldn't refresh — check your connection";
307
+ readonly relativeTime: {
308
+ readonly today: "today";
309
+ readonly daysAgo: (p: {
310
+ count: string | number;
311
+ }) => string;
312
+ readonly weeksAgo: (p: {
313
+ count: string | number;
314
+ }) => string;
315
+ readonly monthsAgo: (p: {
316
+ count: string | number;
317
+ }) => string;
318
+ readonly yearsAgo: (p: {
319
+ count: string | number;
320
+ }) => string;
321
+ };
167
322
  };
168
323
  readonly settings: {
169
324
  readonly title: "Settings";
@@ -343,7 +498,7 @@ export declare const copy: {
343
498
  readonly happeningNow: "Happening now";
344
499
  readonly liveNow: "Now";
345
500
  readonly createEvent: "+ Create";
346
- readonly viewList: "View list";
501
+ readonly guestList: "Guest list";
347
502
  readonly going: "going";
348
503
  readonly legendGoing: "Going";
349
504
  readonly legendCheckedIn: "Checked in";
@@ -367,6 +522,19 @@ export declare const copy: {
367
522
  readonly audienceEmptySubtitle: (p: {
368
523
  venue: string | number;
369
524
  }) => string;
525
+ readonly blacklistAdd: "Add to blacklist";
526
+ readonly blacklistAddPrompt: "Enter the username to blacklist.";
527
+ readonly blacklistEditReason: "Edit reason";
528
+ readonly blacklistRemove: "Remove from blacklist";
529
+ readonly blacklistRemoveConfirm: (p: {
530
+ name: string | number;
531
+ }) => string;
532
+ readonly vipMake: "Make VIP";
533
+ readonly vipRemove: "Remove VIP";
534
+ readonly vipEditNote: "Edit note";
535
+ readonly vipRemoveConfirm: (p: {
536
+ name: string | number;
537
+ }) => string;
370
538
  };
371
539
  readonly button: {
372
540
  readonly editProfile: "Edit profile";
package/lib/copy.js CHANGED
@@ -17,6 +17,125 @@ export const copy = {
17
17
  return `${p.count} going`;
18
18
  },
19
19
  },
20
+ tickets: {
21
+ sectionTitle: "Tickets",
22
+ getTickets: "Get tickets",
23
+ noBookingFees: "No booking fees",
24
+ soldOut: "Sold out",
25
+ notYetOnSale: "Not yet on sale",
26
+ remaining: (p) => `${p.count} left`,
27
+ accessCodePlaceholder: "Access code",
28
+ checkoutTitle: "Checkout",
29
+ total: "Total",
30
+ pay: (p) => `Pay ${p.amount}`,
31
+ success: {
32
+ heading: "You're going",
33
+ subtitle: "Your tickets are ready.",
34
+ },
35
+ viewTickets: "View tickets",
36
+ yourTickets: (p) => `Your tickets (${p.count})`,
37
+ ticketNofM: (p) => `Ticket ${p.n} of ${p.m}`,
38
+ doorHint: "Show this at the door",
39
+ },
40
+ ticketsManage: {
41
+ title: "Tickets",
42
+ pickEvent: "Choose an event to manage its ticketing.",
43
+ upcomingSection: "Upcoming",
44
+ pastSection: "Past",
45
+ noEvents: "No events yet — create an event to start selling tickets.",
46
+ loadFailed: "Couldn't load ticketing. Try again.",
47
+ backToEvents: "All events",
48
+ setup: {
49
+ title: "Sell tickets on Mosh",
50
+ subtitle: "Turn on ticketing to create tiers and start selling — no booking fees for your fans.",
51
+ capacityLabel: "Total capacity (optional)",
52
+ capacityHint: "Caps tickets across all tiers. Leave blank for no cap.",
53
+ capacitySave: "Update capacity",
54
+ enable: "Enable ticketing",
55
+ disable: "Disable ticketing",
56
+ disableConfirm: "Disable ticketing? Sales go offline and the event returns to draft.",
57
+ },
58
+ stripe: {
59
+ title: "Get paid with Stripe",
60
+ body: "Connect your venue's Stripe account so ticket revenue can be paid out to you. It only takes a few minutes.",
61
+ cta: "Set up payouts",
62
+ refresh: "Refresh status",
63
+ ready: "Stripe connected — payments enabled.",
64
+ notReady: "Stripe onboarding incomplete — tickets can't go on sale until it's done.",
65
+ },
66
+ sales: {
67
+ title: "Sales status",
68
+ summary: (p) => `${p.sold} sold · ${p.gross} gross`,
69
+ goOnSale: "Go on sale",
70
+ pause: "Pause sales",
71
+ resume: "Resume sales",
72
+ close: "Close sales",
73
+ closeConfirm: "Close ticket sales? Buyers will no longer be able to purchase tickets for this event.",
74
+ status: {
75
+ draft: "Draft",
76
+ onSale: "On sale",
77
+ paused: "Paused",
78
+ closed: "Closed",
79
+ },
80
+ },
81
+ tiers: {
82
+ title: "Ticket tiers",
83
+ add: "Add tier",
84
+ empty: "No tiers yet. Add one to start selling.",
85
+ colTier: "Tier",
86
+ colPrice: "Price",
87
+ colSold: "Sold",
88
+ colStatus: "Status",
89
+ held: (p) => `${p.count} held`,
90
+ codeRequired: "Access code",
91
+ edit: "Edit",
92
+ archive: "Archive",
93
+ pause: "Pause",
94
+ activate: "Activate",
95
+ archiveConfirm: (p) => `Archive "${p.name}"? It keeps its sales history but can never sell again.`,
96
+ availability: {
97
+ onSale: "On sale",
98
+ upcoming: "Upcoming",
99
+ soldOut: "Sold out",
100
+ ended: "Ended",
101
+ paused: "Paused",
102
+ },
103
+ },
104
+ tierForm: {
105
+ addTitle: "Add tier",
106
+ editTitle: "Edit tier",
107
+ name: "Name",
108
+ namePlaceholder: "General admission",
109
+ price: "Price (USD)",
110
+ quantity: "Quantity",
111
+ maxPerOrder: "Max per order",
112
+ salesStart: "Sales start (optional)",
113
+ salesEnd: "Sales end (optional)",
114
+ requireCode: "Require an access code",
115
+ codeLabel: "Access code",
116
+ codeKeepHint: "Leave blank to keep the current code.",
117
+ create: "Create tier",
118
+ save: "Save changes",
119
+ },
120
+ payout: {
121
+ title: "Payout",
122
+ gross: "Gross sales",
123
+ fees: "Stripe fees",
124
+ refunds: "Refunds",
125
+ net: "Net payout",
126
+ status: {
127
+ held: "Held",
128
+ eligible: "Eligible",
129
+ transferred: "Transferred",
130
+ failed: "Failed",
131
+ },
132
+ heldHint: "Funds are released 24 hours after the event ends.",
133
+ transferredOn: (p) => `Transferred ${p.date}`,
134
+ manualHold: "This payout is on hold — contact Mosh support.",
135
+ blockersTitle: "Waiting on",
136
+ empty: "No sales yet — payout details will appear here.",
137
+ },
138
+ },
20
139
  account: {
21
140
  deactivate: {
22
141
  title: "Deactivate or delete?",
@@ -154,11 +273,21 @@ export const copy = {
154
273
  cancel: "Cancel",
155
274
  ok: "OK",
156
275
  delete: "Delete",
276
+ add: "Add",
277
+ remove: "Remove",
157
278
  follow: "Follow",
158
279
  sortBy: "Sort by",
159
280
  following: "Following",
160
281
  block: "Block",
161
282
  unblock: "Unblock",
283
+ couldntRefresh: "Couldn't refresh — check your connection",
284
+ relativeTime: {
285
+ today: "today",
286
+ daysAgo: (p) => `${p.count}d ago`,
287
+ weeksAgo: (p) => `${p.count}w ago`,
288
+ monthsAgo: (p) => `${p.count}mo ago`,
289
+ yearsAgo: (p) => `${p.count}y ago`,
290
+ },
162
291
  },
163
292
  settings: {
164
293
  title: "Settings",
@@ -324,7 +453,7 @@ export const copy = {
324
453
  happeningNow: "Happening now",
325
454
  liveNow: "Now",
326
455
  createEvent: "+ Create",
327
- viewList: "View list",
456
+ guestList: "Guest list",
328
457
  going: "going",
329
458
  legendGoing: "Going",
330
459
  legendCheckedIn: "Checked in",
@@ -342,6 +471,15 @@ export const copy = {
342
471
  vipBadge: "VIP",
343
472
  audienceEmptyTitle: "No visitors yet",
344
473
  audienceEmptySubtitle: (p) => `Users who check in to events at ${p.venue} will appear here.`,
474
+ blacklistAdd: "Add to blacklist",
475
+ blacklistAddPrompt: "Enter the username to blacklist.",
476
+ blacklistEditReason: "Edit reason",
477
+ blacklistRemove: "Remove from blacklist",
478
+ blacklistRemoveConfirm: (p) => `Remove ${p.name} from the blacklist?`,
479
+ vipMake: "Make VIP",
480
+ vipRemove: "Remove VIP",
481
+ vipEditNote: "Edit note",
482
+ vipRemoveConfirm: (p) => `Remove ${p.name} from the VIP list?`,
345
483
  },
346
484
  button: {
347
485
  editProfile: "Edit profile",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@moshevents/copy",
3
- "version": "0.4.0",
3
+ "version": "0.5.1",
4
4
  "description": "Mosh — single source of truth for user-facing copy. Typed `copy` for web/admin; iOS consumes the SwiftPM target.",
5
5
  "type": "module",
6
6
  "files": [