@meith/plugin-dues 0.3.0 → 0.3.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 +6 -0
- package/package.json +2 -2
- package/src/definition.tsx +1 -1
- package/src/ui/admin.tsx +7 -2
- package/src/ui/pages.tsx +10 -5
package/README.md
CHANGED
|
@@ -24,6 +24,12 @@ the old primary group straight back. A member who would rather be shown as
|
|
|
24
24
|
something else can pick any group they are in under UserCP → Profile; the
|
|
25
25
|
choice is theirs, and it drops away with the membership it names.
|
|
26
26
|
|
|
27
|
+
**Staff are the exception, and they are meant to be.** A moderator or
|
|
28
|
+
administrator who buys gets the group and everything it carries, as a secondary
|
|
29
|
+
membership — but their standing does not move, and they are still shown as
|
|
30
|
+
staff. Selling a badge is fine; selling somebody out of the one that says who
|
|
31
|
+
answers for the board is not.
|
|
32
|
+
|
|
27
33
|
**Try it before you read any of this**: [demo.meith.dev](https://demo.meith.dev)
|
|
28
34
|
runs this plugin against a Stripe that is not Stripe — a shop with a year of
|
|
29
35
|
history behind it, and a checkout a visitor can actually go through. See
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@meith/plugin-dues",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.1",
|
|
4
4
|
"description": "Membership dues for a Meith board: Stripe-backed subscriptions as a contained plugin.",
|
|
5
5
|
"license": "LGPL-3.0-or-later",
|
|
6
6
|
"repository": {
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"access": "public"
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@meith/plugin-kit": "^0.3.
|
|
23
|
+
"@meith/plugin-kit": "^0.3.1"
|
|
24
24
|
},
|
|
25
25
|
"peerDependencies": {
|
|
26
26
|
"react": "^19.2.0"
|
package/src/definition.tsx
CHANGED
|
@@ -39,7 +39,7 @@ export function dues(input: DuesConfigInput): PluginDefinition {
|
|
|
39
39
|
return definePlugin({
|
|
40
40
|
key: 'dues',
|
|
41
41
|
name: 'Dues',
|
|
42
|
-
version: '0.1
|
|
42
|
+
version: '0.3.1',
|
|
43
43
|
description:
|
|
44
44
|
`Sells ${config.label.toLowerCase()} — time-limited membership of a group — ` +
|
|
45
45
|
'through Stripe, for yourself or as a gift.',
|
package/src/ui/admin.tsx
CHANGED
|
@@ -19,7 +19,12 @@ import {
|
|
|
19
19
|
} from '../store'
|
|
20
20
|
import { SUBSCRIBED_EVENT_TYPES } from '../stripe/events'
|
|
21
21
|
|
|
22
|
-
const
|
|
22
|
+
const QUIET_PANEL =
|
|
23
|
+
'rounded-lg border border-border bg-card p-4 text-sm text-muted-foreground'
|
|
24
|
+
|
|
25
|
+
const CARD =
|
|
26
|
+
'flex flex-col gap-3 rounded-lg border border-border bg-card p-4 text-card-foreground ' +
|
|
27
|
+
'shadow-elevation'
|
|
23
28
|
const TH = 'px-2 py-1.5 text-left text-xs font-medium text-muted-foreground'
|
|
24
29
|
const TD = 'px-2 py-1.5 align-top'
|
|
25
30
|
const INPUT =
|
|
@@ -352,7 +357,7 @@ export async function MembersPage({ context }: { context: PluginAdminPageContext
|
|
|
352
357
|
its own.
|
|
353
358
|
</p>
|
|
354
359
|
{memberships.length === 0 ? (
|
|
355
|
-
<p className=
|
|
360
|
+
<p className={QUIET_PANEL}>
|
|
356
361
|
Nothing sold yet.
|
|
357
362
|
</p>
|
|
358
363
|
) : (
|
package/src/ui/pages.tsx
CHANGED
|
@@ -14,7 +14,12 @@ import {
|
|
|
14
14
|
type PlanRow,
|
|
15
15
|
} from '../store'
|
|
16
16
|
|
|
17
|
-
const
|
|
17
|
+
const QUIET_PANEL =
|
|
18
|
+
'rounded-lg border border-border bg-card p-4 text-sm text-muted-foreground'
|
|
19
|
+
|
|
20
|
+
const CARD =
|
|
21
|
+
'flex flex-col gap-3 rounded-lg border border-border bg-card p-4 text-card-foreground ' +
|
|
22
|
+
'shadow-elevation'
|
|
18
23
|
const INPUT =
|
|
19
24
|
'w-full rounded-md border border-border bg-background px-3 py-2 text-sm ' +
|
|
20
25
|
'focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring'
|
|
@@ -263,7 +268,7 @@ export async function PlansPage({
|
|
|
263
268
|
<Notice query={context.query} />
|
|
264
269
|
<HeldCard memberships={memberships} />
|
|
265
270
|
{plans.length === 0 && (
|
|
266
|
-
<p className=
|
|
271
|
+
<p className={QUIET_PANEL}>
|
|
267
272
|
Nothing is on sale just now.
|
|
268
273
|
</p>
|
|
269
274
|
)}
|
|
@@ -311,7 +316,7 @@ export function GoPage({
|
|
|
311
316
|
|
|
312
317
|
if (!allowed) {
|
|
313
318
|
return (
|
|
314
|
-
<p className=
|
|
319
|
+
<p className={QUIET_PANEL}>
|
|
315
320
|
That is not somewhere this board sends people.{' '}
|
|
316
321
|
<a href="/plugins/dues" className="font-medium underline underline-offset-2">
|
|
317
322
|
Back to safety.
|
|
@@ -356,7 +361,7 @@ export async function ReturnPage({
|
|
|
356
361
|
(order.buyerUserId !== viewerId && order.recipientUserId !== viewerId)
|
|
357
362
|
) {
|
|
358
363
|
return (
|
|
359
|
-
<p className=
|
|
364
|
+
<p className={QUIET_PANEL}>
|
|
360
365
|
There is no order of yours here.{' '}
|
|
361
366
|
<a href="/plugins/dues" className="font-medium underline underline-offset-2">
|
|
362
367
|
Back to {config.label.toLowerCase()}
|
|
@@ -489,7 +494,7 @@ export async function ManagePage({
|
|
|
489
494
|
)}
|
|
490
495
|
|
|
491
496
|
{memberships.length === 0 ? (
|
|
492
|
-
<p className=
|
|
497
|
+
<p className={QUIET_PANEL}>
|
|
493
498
|
You hold no {config.label.toLowerCase()} yet.{' '}
|
|
494
499
|
<a href="/plugins/dues" className="font-medium underline underline-offset-2">
|
|
495
500
|
The plans are here.
|