Skip to content
File

Blob: src/client/lib/affordance/action-state.ts

typescript19 lines
1export type UiActionState = { kind: "enabled" } | { kind: "disabled"; reason?: string } | { kind: "hidden" };
2 
3export const ENABLED_ACTION: UiActionState = { kind: "enabled" };
4export const HIDDEN_ACTION: UiActionState = { kind: "hidden" };
5export const OFFLINE_ACTION_REASON = "You're offline";
6export const ARCHIVE_OWNERSHIP_ACTION_REASON = "Only the page creator can archive this";
7 
8export function disabledAction(reason?: string): UiActionState {
9 return { kind: "disabled", reason };
10}
11 
12export function isActionVisible(action: UiActionState): boolean {
13 return action.kind !== "hidden";
14}
15 
16export function isActionEnabled(action: UiActionState): boolean {
17 return action.kind === "enabled";
18}