@moshevents/copy 0.5.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 +153 -0
  2. package/lib/copy.js +131 -0
  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,14 @@ 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";
167
307
  readonly relativeTime: {
168
308
  readonly today: "today";
169
309
  readonly daysAgo: (p: {
@@ -382,6 +522,19 @@ export declare const copy: {
382
522
  readonly audienceEmptySubtitle: (p: {
383
523
  venue: string | number;
384
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;
385
538
  };
386
539
  readonly button: {
387
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,14 @@ 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",
162
284
  relativeTime: {
163
285
  today: "today",
164
286
  daysAgo: (p) => `${p.count}d ago`,
@@ -349,6 +471,15 @@ export const copy = {
349
471
  vipBadge: "VIP",
350
472
  audienceEmptyTitle: "No visitors yet",
351
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?`,
352
483
  },
353
484
  button: {
354
485
  editProfile: "Edit profile",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@moshevents/copy",
3
- "version": "0.5.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": [