{subtitle}
} ++ {children} +
+ ); +} + +/** Note shows the result of an action. */ +export function Note({ children }: { children: ReactNode }): ReactNode { + return ( ++ {children} +
+ ); +} + +/** Loading says what is being loaded. */ +export function Loading({ what }: { what: string }): ReactNode { + returnLoading {what}…
; +} + +/** Empty shows a message in place of a list that has no entries. */ +export function Empty({ children }: { children: ReactNode }): ReactNode { + return ( ++ {children} +
+ ); +} + +const LABEL: Record+ Copy this {created.link ? 'link' : 'code'} now. It will not be shown again. +
+Code: {created.invite_code}
} + {copied === true &&Copied.
} + {copied === false && ( ++ Copying is not available here; select it and copy. +
+ )} + +{c.note}
} + {c.status === 'active' && !confirm && ( + + )} + {confirm && ( +{i.note}
} + {i.status !== 'redeemed' && !confirm && ( + + )} + {confirm && ( ++ Members without an allowance of their own may invite {settings.data.default_allowance}{' '} + {settings.data.default_allowance === 1 ? 'person' : 'people'}. Their links work for{' '} + {Math.round(settings.data.member_code_ttl_seconds / 86400)} days. +
+ )} + + {action.error &&