@haneinfo/frontend-instances 0.2.0 → 0.4.0

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.
@@ -1,4 +1,5 @@
1
1
  import type { ComponentType, ReactNode } from 'react';
2
+ import { type ErrorCode } from './messages.js';
2
3
  /** HTTP-only contracts. No runtime dependency on the backend packages. */
3
4
  export type ApiFetch = <T>(path: string, init?: RequestInit) => Promise<T>;
4
5
  export type LinkComponent = ComponentType<{
@@ -111,7 +112,7 @@ export interface InstanceDetail {
111
112
  }
112
113
  export interface TimelineEvent {
113
114
  id: string;
114
- kind: 'START' | 'TRANSITION' | 'CHOICE' | 'NUMBER' | 'NOTIFICATION_FAILURE' | 'COMMENT';
115
+ kind: 'START' | 'TRANSITION' | 'CHOICE' | 'NUMBER' | 'NOTIFICATION_FAILURE' | 'COMMENT' | 'ATTACHMENT' | 'ACCESS';
115
116
  at: string;
116
117
  actorId: string | null;
117
118
  details: Record<string, unknown>;
@@ -174,6 +175,41 @@ export interface ImportInput {
174
175
  duplicateKey?: string[];
175
176
  }
176
177
  export type InstanceRequest = {
178
+ kind: 'attachments';
179
+ id: string;
180
+ } | {
181
+ kind: 'deleteAttachment';
182
+ id: string;
183
+ attachmentId: string;
184
+ } | {
185
+ kind: 'lookupUsers';
186
+ q: string;
187
+ } | {
188
+ kind: 'lookupRoles';
189
+ q: string;
190
+ } | {
191
+ kind: 'delegations';
192
+ all?: boolean;
193
+ offset: number;
194
+ } | {
195
+ kind: 'createDelegation';
196
+ input: DelegationInput;
197
+ } | {
198
+ kind: 'revokeDelegation';
199
+ id: string;
200
+ } | {
201
+ kind: 'access';
202
+ id: string;
203
+ } | {
204
+ kind: 'grantAccess';
205
+ id: string;
206
+ input: AccessGrant;
207
+ } | {
208
+ kind: 'removeAccess';
209
+ id: string;
210
+ principalType: 'USER' | 'ROLE';
211
+ principalId: string;
212
+ } | {
177
213
  kind: 'query';
178
214
  machineCode: string;
179
215
  query: InstanceQuery;
@@ -223,7 +259,7 @@ export type InstanceRequest = {
223
259
  id: string;
224
260
  };
225
261
  export interface ActionError {
226
- key: 'unauthorized' | 'forbidden' | 'notFound' | 'invalidInput' | 'requestFailed';
262
+ key: 'unauthorized' | 'forbidden' | 'notFound' | 'invalidInput' | 'requestFailed' | ErrorCode;
227
263
  message?: string;
228
264
  }
229
265
  export interface ActionResult {
@@ -232,8 +268,67 @@ export interface ActionResult {
232
268
  }
233
269
  export type InstanceAction = (request: InstanceRequest) => Promise<ActionResult>;
234
270
  export type UploadAction = (form: FormData) => Promise<ActionResult>;
235
- export declare const labelKeys: readonly ["listTitle", "detailTitle", "importTitle", "back", "open", "state", "number", "submitter", "createdAt", "filters", "field", "operator", "value", "AND", "OR", "EQ", "NEQ", "GT", "GTE", "LT", "LTE", "IN", "NOT_EMPTY", "addRule", "addGroup", "addRange", "remove", "apply", "sort", "asc", "desc", "columns", "limit", "previous", "next", "total", "empty", "savedViews", "saveView", "viewName", "PRIVATE", "ALL", "ROLES", "share", "roles", "export", "format", "csv", "xlsx", "download", "downloadErrors", "timeline", "loadMore", "comment", "sendComment", "mentionSearch", "search", "mention", "noPeople", "unnamed", "aiGenerated", "follow", "unfollow", "following", "notFollowing", "machine", "file", "readHeaders", "mapping", "skip", "duplicateKey", "duplicateHint", "preflight", "confirmImport", "confirmHint", "valid", "failed", "success", "row", "code", "reason", "job", "PENDING", "RUNNING", "SUCCEEDED", "FAILED", "CANCELLED", "loading", "retry", "unauthorized", "forbidden", "notFound", "invalidInput", "requestFailed", "rangeFrom", "rangeTo", "required", "importHint", "pollStopped", "START", "TRANSITION", "CHOICE", "NUMBER", "NOTIFICATION_FAILURE", "COMMENT"];
271
+ export declare const labelKeys: readonly [...("attachmentDownload" | "attachmentRefresh" | "attachmentsTitle" | "attachmentName" | "attachmentSize" | "attachmentType" | "attachmentStatus" | "uploadedBy" | "uploadAttachments" | "attachmentDrop" | "attachmentPrecheck" | "attachmentLimit" | "attachmentRemaining" | "deleteAttachment" | "confirmDeleteAttachment" | "cancelDeleteAttachment" | "confirmAttachmentDeletion" | "attachmentQueued" | "attachmentUploading" | "attachmentUploaded" | "attachmentReady" | "attachmentPending" | "attachmentRejected" | "ATTACHMENT_TOO_LARGE" | "ATTACHMENT_TYPE_NOT_ALLOWED" | "ATTACHMENT_TYPE_MISMATCH" | "ATTACHMENT_LIMIT_EXCEEDED" | "ATTACHMENT_NAME_INVALID" | "ATTACHMENT_NOT_FOUND" | "ATTACHMENT_MULTIPART_INVALID" | "ATTACHMENT_UPLOAD_ABORTED" | "INVALID_INPUT" | "FORBIDDEN" | "INSTANCE_NOT_FOUND" | "MACHINE_NOT_FOUND" | "VIEW_NOT_FOUND" | "JOB_NOT_FOUND" | "UNDECLARED_QUERY_FIELD" | "INVALID_QUERY" | "INVALID_VIEW" | "INVALID_VIEW_SHARING" | "PREFLIGHT_REJECTED" | "PREFLIGHT_REQUIRED" | "DUPLICATE_KEY_EXISTING" | "DUPLICATE_KEY_IN_FILE" | "DUPLICATE_ROW" | "INVALID_DUPLICATE_KEY" | "DUPLICATE_MAPPING" | "INVALID_FIELD_MAPPING" | "MISSING_COLUMN" | "MISSING_FIELD" | "FORBIDDEN_COLUMN" | "REQUIRED" | "TYPE_MISMATCH" | "INVALID_CELL" | "INVALID_ENCODING" | "INVALID_FILE" | "INVALID_HEADERS" | "FILE_TOO_LARGE" | "EXPORT_FILE_TOO_LARGE" | "EXPORT_LIMIT_EXCEEDED" | "EXPORT_NOT_AVAILABLE" | "IMPORT_REPORT_NOT_AVAILABLE" | "DEFINITION_CHANGED" | "DEFINITION_NOT_FOUND" | "SUBJECT_REQUIRED" | "INVALID_COMMENT" | "INVALID_MENTION" | "MENTION_NOT_ALLOWED" | "IDENTITY_SEARCH_UNAVAILABLE" | "DELEGATE_INVALID" | "DELEGATOR_INVALID" | "DELEGATION_PERIOD_INVALID" | "DELEGATION_DURATION_EXCEEDED" | "DELEGATION_OVERLAP" | "DELEGATION_CYCLE" | "DELEGATION_NOT_FOUND" | "ACCESS_NOT_MANAGEABLE" | "ACCESS_LIMIT_EXCEEDED" | "ACCESS_PRINCIPAL_INVALID" | "ATTACHMENT" | "attachmentUploadedEvent" | "attachmentDeletedEvent" | "delegationsTitle" | "outgoing" | "incoming" | "allDelegations" | "statusFilter" | "allStatuses" | "upcoming" | "active" | "ended" | "revoked" | "delegate" | "delegator" | "startsAt" | "endsAt" | "utcHint" | "assignmentCodes" | "delegationReason" | "createDelegation" | "revokeDelegation" | "peopleHint" | "accessTitle" | "principalType" | "USER" | "ROLE" | "principal" | "READ" | "WRITE" | "accessLevel" | "source" | "ASSIGNED" | "DELEGATED" | "GRANTED" | "grantedBy" | "grantAccess" | "adjustAccess" | "removeAccess" | "ACCESS")[], "listTitle", "detailTitle", "importTitle", "back", "open", "state", "number", "submitter", "createdAt", "filters", "field", "operator", "value", "AND", "OR", "EQ", "NEQ", "GT", "GTE", "LT", "LTE", "IN", "NOT_EMPTY", "addRule", "addGroup", "addRange", "remove", "apply", "sort", "asc", "desc", "columns", "limit", "previous", "next", "total", "empty", "savedViews", "saveView", "viewName", "PRIVATE", "ALL", "ROLES", "share", "roles", "export", "format", "csv", "xlsx", "download", "downloadErrors", "timeline", "loadMore", "comment", "sendComment", "mentionSearch", "search", "mention", "noPeople", "unnamed", "aiGenerated", "follow", "unfollow", "following", "notFollowing", "machine", "file", "readHeaders", "mapping", "skip", "duplicateKey", "duplicateHint", "preflight", "confirmImport", "confirmHint", "valid", "failed", "success", "row", "code", "reason", "job", "PENDING", "RUNNING", "SUCCEEDED", "FAILED", "CANCELLED", "loading", "retry", "unauthorized", "forbidden", "notFound", "invalidInput", "requestFailed", "rangeFrom", "rangeTo", "required", "importHint", "pollStopped", "START", "TRANSITION", "CHOICE", "NUMBER", "NOTIFICATION_FAILURE", "COMMENT"];
236
272
  export type LabelKey = (typeof labelKeys)[number];
237
273
  export type Labels = Record<LabelKey, string>;
238
274
  export type Translation = (key: LabelKey) => string;
275
+ export interface DelegationInput {
276
+ delegateId: string;
277
+ delegatorId?: string;
278
+ startsAt: string;
279
+ endsAt: string;
280
+ assignmentCodes?: string[];
281
+ reason?: string;
282
+ }
283
+ export interface Delegation extends DelegationInput {
284
+ id: string;
285
+ delegatorId: string;
286
+ status: 'ACTIVE' | 'REVOKED';
287
+ reason?: string;
288
+ }
289
+ export interface DelegationList {
290
+ items: Delegation[];
291
+ total: number;
292
+ offset: number;
293
+ limit: number;
294
+ hasMore: boolean;
295
+ }
296
+ export interface AccessGrant {
297
+ principalType: 'USER' | 'ROLE';
298
+ principalId: string;
299
+ level: 'READ' | 'WRITE';
300
+ }
301
+ export interface AccessEntry extends AccessGrant {
302
+ source: 'ASSIGNED' | 'DELEGATED' | 'GRANTED';
303
+ principalName: string | null;
304
+ grantedBy: string | null;
305
+ grantedByName: string | null;
306
+ createdAt: string;
307
+ }
308
+ export interface AccessList {
309
+ canManage: boolean;
310
+ items: AccessEntry[];
311
+ }
312
+ export interface Attachment {
313
+ id: string;
314
+ fileName: string;
315
+ size: number;
316
+ detectedContentType: string;
317
+ status: 'READY' | 'PENDING_SCAN' | 'REJECTED';
318
+ uploadedBy: string;
319
+ uploadedByName: string | null;
320
+ createdAt: string;
321
+ canDelete: boolean;
322
+ }
323
+ export interface AttachmentList {
324
+ items: Attachment[];
325
+ canUpload?: boolean;
326
+ limits?: {
327
+ maxFileBytes: number;
328
+ maxAttachmentsPerInstance: number;
329
+ allowedTypes: string[];
330
+ count: number;
331
+ remaining: number;
332
+ };
333
+ }
239
334
  //# sourceMappingURL=contracts.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../src/contracts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../src/contracts.ts"],"names":[],"mappings":"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"}
package/dist/contracts.js CHANGED
@@ -1,5 +1,10 @@
1
+ import { attachmentKeys } from './attachment-messages.js';
2
+ import { errorLabelKeys, managementKeys } from './messages.js';
1
3
  export const operators = ['EQ', 'NEQ', 'GT', 'GTE', 'LT', 'LTE', 'IN', 'NOT_EMPTY'];
2
4
  export const labelKeys = [
5
+ ...attachmentKeys,
6
+ ...errorLabelKeys,
7
+ ...managementKeys,
3
8
  'listTitle',
4
9
  'detailTitle',
5
10
  'importTitle',
@@ -1 +1 @@
1
- {"version":3,"file":"contracts.js","sourceRoot":"","sources":["../src/contracts.ts"],"names":[],"mappings":"AAiBA,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,CAAU,CAAC;AA2J7F,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,WAAW;IACX,aAAa;IACb,aAAa;IACb,MAAM;IACN,MAAM;IACN,OAAO;IACP,QAAQ;IACR,WAAW;IACX,WAAW;IACX,SAAS;IACT,OAAO;IACP,UAAU;IACV,OAAO;IACP,KAAK;IACL,IAAI;IACJ,GAAG,SAAS;IACZ,SAAS;IACT,UAAU;IACV,UAAU;IACV,QAAQ;IACR,OAAO;IACP,MAAM;IACN,KAAK;IACL,MAAM;IACN,SAAS;IACT,OAAO;IACP,UAAU;IACV,MAAM;IACN,OAAO;IACP,OAAO;IACP,YAAY;IACZ,UAAU;IACV,UAAU;IACV,SAAS;IACT,KAAK;IACL,OAAO;IACP,OAAO;IACP,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,KAAK;IACL,MAAM;IACN,UAAU;IACV,gBAAgB;IAChB,UAAU;IACV,UAAU;IACV,SAAS;IACT,aAAa;IACb,eAAe;IACf,QAAQ;IACR,SAAS;IACT,UAAU;IACV,SAAS;IACT,aAAa;IACb,QAAQ;IACR,UAAU;IACV,WAAW;IACX,cAAc;IACd,SAAS;IACT,MAAM;IACN,aAAa;IACb,SAAS;IACT,MAAM;IACN,cAAc;IACd,eAAe;IACf,WAAW;IACX,eAAe;IACf,aAAa;IACb,OAAO;IACP,QAAQ;IACR,SAAS;IACT,KAAK;IACL,MAAM;IACN,QAAQ;IACR,KAAK;IACL,SAAS;IACT,SAAS;IACT,WAAW;IACX,QAAQ;IACR,WAAW;IACX,SAAS;IACT,OAAO;IACP,cAAc;IACd,WAAW;IACX,UAAU;IACV,cAAc;IACd,eAAe;IACf,WAAW;IACX,SAAS;IACT,UAAU;IACV,YAAY;IACZ,aAAa;IACb,OAAO;IACP,YAAY;IACZ,QAAQ;IACR,QAAQ;IACR,sBAAsB;IACtB,SAAS;CACD,CAAC"}
1
+ {"version":3,"file":"contracts.js","sourceRoot":"","sources":["../src/contracts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAkB,cAAc,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAiB/E,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,CAAU,CAAC;AA6K7F,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,GAAG,cAAc;IACjB,GAAG,cAAc;IACjB,GAAG,cAAc;IACjB,WAAW;IACX,aAAa;IACb,aAAa;IACb,MAAM;IACN,MAAM;IACN,OAAO;IACP,QAAQ;IACR,WAAW;IACX,WAAW;IACX,SAAS;IACT,OAAO;IACP,UAAU;IACV,OAAO;IACP,KAAK;IACL,IAAI;IACJ,GAAG,SAAS;IACZ,SAAS;IACT,UAAU;IACV,UAAU;IACV,QAAQ;IACR,OAAO;IACP,MAAM;IACN,KAAK;IACL,MAAM;IACN,SAAS;IACT,OAAO;IACP,UAAU;IACV,MAAM;IACN,OAAO;IACP,OAAO;IACP,YAAY;IACZ,UAAU;IACV,UAAU;IACV,SAAS;IACT,KAAK;IACL,OAAO;IACP,OAAO;IACP,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,KAAK;IACL,MAAM;IACN,UAAU;IACV,gBAAgB;IAChB,UAAU;IACV,UAAU;IACV,SAAS;IACT,aAAa;IACb,eAAe;IACf,QAAQ;IACR,SAAS;IACT,UAAU;IACV,SAAS;IACT,aAAa;IACb,QAAQ;IACR,UAAU;IACV,WAAW;IACX,cAAc;IACd,SAAS;IACT,MAAM;IACN,aAAa;IACb,SAAS;IACT,MAAM;IACN,cAAc;IACd,eAAe;IACf,WAAW;IACX,eAAe;IACf,aAAa;IACb,OAAO;IACP,QAAQ;IACR,SAAS;IACT,KAAK;IACL,MAAM;IACN,QAAQ;IACR,KAAK;IACL,SAAS;IACT,SAAS;IACT,WAAW;IACX,QAAQ;IACR,WAAW;IACX,SAAS;IACT,OAAO;IACP,cAAc;IACd,WAAW;IACX,UAAU;IACV,cAAc;IACd,eAAe;IACf,WAAW;IACX,SAAS;IACT,UAAU;IACV,YAAY;IACZ,aAAa;IACb,OAAO;IACP,YAAY;IACZ,QAAQ;IACR,QAAQ;IACR,sBAAsB;IACtB,SAAS;CACD,CAAC"}
@@ -0,0 +1,26 @@
1
+ import type { AccessList, Delegation, DelegationList, InstanceAction, Labels } from './contracts.js';
2
+ export declare function delegationStatus(record: Delegation, now: string): "revoked" | "ended" | "upcoming" | "active";
3
+ /** Explicit bounded search. Editing invalidates the selected identity and any stale response. */
4
+ export declare function PrincipalPicker({ label, roles, labels: t, action, onPick, }: {
5
+ label: string;
6
+ roles?: boolean;
7
+ labels: Labels;
8
+ action: InstanceAction;
9
+ onPick: (id: string) => void;
10
+ }): import("react").JSX.Element;
11
+ export declare function InstanceAccessPanel({ id, initial, labels: t, action, onChanged, }: {
12
+ id: string;
13
+ initial: AccessList;
14
+ labels: Labels;
15
+ action: InstanceAction;
16
+ onChanged?: () => Promise<void>;
17
+ }): import("react").JSX.Element;
18
+ export declare function DelegationsClient({ initial, all, userId, labels: t, action, now, }: {
19
+ initial: DelegationList;
20
+ all?: DelegationList;
21
+ userId: string;
22
+ labels: Labels;
23
+ action: InstanceAction;
24
+ now: string;
25
+ }): import("react").JSX.Element;
26
+ //# sourceMappingURL=management-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"management-client.d.ts","sourceRoot":"","sources":["../src/management-client.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,UAAU,EACV,UAAU,EACV,cAAc,EACd,cAAc,EACd,MAAM,EAEP,MAAM,gBAAgB,CAAC;AAKxB,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,+CAI/D;AAED,iGAAiG;AACjG,wBAAgB,eAAe,CAAC,EAC9B,KAAK,EACL,KAAa,EACb,MAAM,EAAE,CAAC,EACT,MAAM,EACN,MAAM,GACP,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9B,+BAuHA;AAED,wBAAgB,mBAAmB,CAAC,EAClC,EAAE,EACF,OAAO,EACP,MAAM,EAAE,CAAC,EACT,MAAM,EACN,SAAS,GACV,EAAE;IACD,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,UAAU,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,cAAc,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACjC,+BAwJA;AAED,wBAAgB,iBAAiB,CAAC,EAChC,OAAO,EACP,GAAG,EACH,MAAM,EACN,MAAM,EAAE,CAAC,EACT,MAAM,EACN,GAAG,GACJ,EAAE;IACD,OAAO,EAAE,cAAc,CAAC;IACxB,GAAG,CAAC,EAAE,cAAc,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,cAAc,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;CACb,+BAgPA"}
@@ -0,0 +1,185 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { Button, Input } from '@haneinfo/frontend-shell';
4
+ import { useEffect, useId, useRef, useState } from 'react';
5
+ import { call, ErrorMessage, useTask } from './action-client.js';
6
+ const box = 'min-w-0 rounded-md border bg-card p-4';
7
+ const selectClass = 'min-w-0 rounded-md border bg-background px-3 py-2 text-foreground';
8
+ export function delegationStatus(record, now) {
9
+ if (record.status === 'REVOKED')
10
+ return 'revoked';
11
+ if (record.endsAt <= now)
12
+ return 'ended';
13
+ return record.startsAt > now ? 'upcoming' : 'active';
14
+ }
15
+ /** Explicit bounded search. Editing invalidates the selected identity and any stale response. */
16
+ export function PrincipalPicker({ label, roles = false, labels: t, action, onPick, }) {
17
+ const id = useId(), task = useTask(), sequence = useRef(0);
18
+ const [q, setQ] = useState(''), [items, setItems] = useState([]);
19
+ const [open, setOpen] = useState(false), [active, setActive] = useState(-1);
20
+ const [searched, setSearched] = useState(false);
21
+ const choose = (item) => {
22
+ sequence.current++;
23
+ setQ(item.name ?? item.id);
24
+ onPick(item.id);
25
+ setOpen(false);
26
+ setItems([]);
27
+ setActive(-1);
28
+ };
29
+ return (_jsxs("div", { className: "flex min-w-0 flex-col gap-2", children: [_jsx("label", { htmlFor: id, children: label }), _jsx(Input, { id: id, role: "combobox", autoComplete: "off", "aria-autocomplete": "list", "aria-expanded": open, "aria-controls": `${id}-list`, "aria-describedby": `${id}-hint`, "aria-activedescendant": open && active >= 0 ? `${id}-option-${active}` : undefined, value: q, onChange: (event) => {
30
+ sequence.current++;
31
+ setQ(event.target.value);
32
+ onPick('');
33
+ setItems([]);
34
+ setOpen(false);
35
+ setActive(-1);
36
+ setSearched(false);
37
+ }, onKeyDown: (event) => {
38
+ if (event.key === 'Escape') {
39
+ setOpen(false);
40
+ return;
41
+ }
42
+ if ((event.key === 'ArrowDown' || event.key === 'ArrowUp') && items.length) {
43
+ event.preventDefault();
44
+ setOpen(true);
45
+ setActive((index) => (index + (event.key === 'ArrowDown' ? 1 : -1) + items.length) % items.length);
46
+ }
47
+ else if (event.key === 'Enter' && open && active >= 0) {
48
+ event.preventDefault();
49
+ choose(items[active]);
50
+ }
51
+ } }), _jsx("p", { id: `${id}-hint`, className: "text-muted-foreground text-sm", children: roles ? t.roles : t.peopleHint }), _jsx(Button, { type: "button", variant: "outline", disabled: task.pending || (!roles && q.trim().length < 2), onClick: () => {
52
+ const current = ++sequence.current;
53
+ void task.run(async () => {
54
+ const rows = roles
55
+ ? (await call(action, {
56
+ kind: 'lookupRoles',
57
+ q,
58
+ })).map((r) => ({ id: r.name, name: r.displayName }))
59
+ : await call(action, { kind: 'lookupUsers', q });
60
+ if (current !== sequence.current)
61
+ return;
62
+ setItems(rows.slice(0, 20));
63
+ setOpen(true);
64
+ setActive(-1);
65
+ setSearched(true);
66
+ });
67
+ }, children: t.search }), task.pending && _jsx("p", { role: "status", children: t.loading }), _jsx(ErrorMessage, { error: task.error, labels: t }), _jsx("div", { id: `${id}-list`, role: "listbox", tabIndex: -1, "aria-label": label, hidden: !open, className: "max-h-60 overflow-auto", children: items.map((item, index) => (_jsx("div", { id: `${id}-option-${index}`, role: "option", tabIndex: -1, onKeyDown: (event) => {
68
+ if (event.key === 'Enter' || event.key === ' ') {
69
+ event.preventDefault();
70
+ choose(item);
71
+ }
72
+ }, "aria-selected": index === active, className: "break-words rounded border p-2", onMouseDown: (event) => event.preventDefault(), onClick: () => choose(item), children: item.name ?? item.id }, item.id))) }), searched && !items.length && open && _jsx("p", { role: "status", children: t.noPeople })] }));
73
+ }
74
+ export function InstanceAccessPanel({ id, initial, labels: t, action, onChanged, }) {
75
+ const task = useTask();
76
+ const [list, setList] = useState(initial), [type, setType] = useState('USER');
77
+ const [principalId, setPrincipalId] = useState(''), [level, setLevel] = useState('READ');
78
+ const refresh = async () => {
79
+ setList(await call(action, { kind: 'access', id }));
80
+ await onChanged?.();
81
+ };
82
+ return (_jsxs("section", { className: `${box} flex flex-col gap-4`, "aria-label": t.accessTitle, "aria-busy": task.pending, children: [_jsx("h2", { className: "font-semibold text-lg", children: t.accessTitle }), _jsx(ErrorMessage, { error: task.error, labels: t }), task.pending && _jsx("p", { role: "status", children: t.loading }), !list.items.length && _jsx("p", { children: t.empty }), list.items.map((entry) => (_jsxs("div", { className: "min-w-0 space-y-2 rounded border p-3", "data-source": entry.source, children: [_jsxs("dl", { className: "grid min-w-0 gap-2 break-words sm:grid-cols-2", children: [_jsxs("div", { children: [_jsx("dt", { children: t.principal }), _jsx("dd", { children: entry.principalName ?? entry.principalId })] }), _jsxs("div", { children: [_jsx("dt", { children: t.accessLevel }), _jsx("dd", { children: t[entry.level] })] }), _jsxs("div", { children: [_jsx("dt", { children: t.source }), _jsx("dd", { children: t[entry.source] })] }), _jsxs("div", { children: [_jsx("dt", { children: t.grantedBy }), _jsx("dd", { children: entry.grantedByName ?? entry.grantedBy ?? '—' })] }), _jsxs("div", { children: [_jsx("dt", { children: t.createdAt }), _jsx("dd", { children: entry.createdAt })] })] }), list.canManage && entry.source === 'GRANTED' && (_jsxs("div", { className: "flex flex-wrap gap-2", children: [_jsx(Button, { type: "button", variant: "outline", disabled: task.pending, onClick: () => void task.run(async () => {
83
+ await call(action, {
84
+ kind: 'grantAccess',
85
+ id,
86
+ input: {
87
+ principalType: entry.principalType,
88
+ principalId: entry.principalId,
89
+ level: entry.level === 'READ' ? 'WRITE' : 'READ',
90
+ },
91
+ });
92
+ await refresh();
93
+ }), children: t.adjustAccess }), _jsx(Button, { type: "button", variant: "outline", disabled: task.pending, onClick: () => void task.run(async () => {
94
+ await call(action, {
95
+ kind: 'removeAccess',
96
+ id,
97
+ principalType: entry.principalType,
98
+ principalId: entry.principalId,
99
+ });
100
+ await refresh();
101
+ }), children: t.removeAccess })] }))] }, `${entry.principalType}:${entry.principalId}:${entry.source}`))), list.canManage && (_jsx("form", { onSubmit: (event) => {
102
+ event.preventDefault();
103
+ if (!principalId)
104
+ return;
105
+ void task.run(async () => {
106
+ await call(action, {
107
+ kind: 'grantAccess',
108
+ id,
109
+ input: { principalType: type, principalId, level },
110
+ });
111
+ await refresh();
112
+ });
113
+ }, children: _jsxs("fieldset", { disabled: task.pending, className: "flex min-w-0 flex-col gap-3", children: [_jsxs("label", { children: [t.principalType, _jsxs("select", { "aria-label": t.principalType, className: `${selectClass} ml-2`, value: type, onChange: (e) => {
114
+ setType(e.target.value);
115
+ setPrincipalId('');
116
+ }, children: [_jsx("option", { value: "USER", children: t.USER }), _jsx("option", { value: "ROLE", children: t.ROLE })] })] }), _jsx(PrincipalPicker, { label: t.principal, roles: type === 'ROLE', labels: t, action: action, onPick: setPrincipalId }, type), _jsxs("label", { children: [t.accessLevel, _jsxs("select", { "aria-label": t.accessLevel, className: `${selectClass} ml-2`, value: level, onChange: (e) => setLevel(e.target.value), children: [_jsx("option", { value: "READ", children: t.READ }), _jsx("option", { value: "WRITE", children: t.WRITE })] })] }), _jsx(Button, { type: "submit", disabled: !principalId || task.pending, children: t.grantAccess })] }) }))] }));
117
+ }
118
+ export function DelegationsClient({ initial, all, userId, labels: t, action, now, }) {
119
+ const task = useTask();
120
+ const formId = useId();
121
+ const [mine, setMine] = useState(initial), [allRows, setAll] = useState(all);
122
+ const [tab, setTab] = useState('outgoing');
123
+ const [status, setStatus] = useState(''), [clock, setClock] = useState(now);
124
+ const [delegateId, setDelegate] = useState(''), [delegatorId, setDelegator] = useState('');
125
+ useEffect(() => {
126
+ const timer = setInterval(() => setClock(new Date().toISOString()), 30000);
127
+ return () => clearInterval(timer);
128
+ }, []);
129
+ const rows = tab === 'allDelegations' ? (allRows ?? mine) : mine;
130
+ const load = async (offset) => {
131
+ const next = await call(action, {
132
+ kind: 'delegations',
133
+ all: tab === 'allDelegations',
134
+ offset,
135
+ });
136
+ if (tab === 'allDelegations')
137
+ setAll(next);
138
+ else
139
+ setMine(next);
140
+ };
141
+ const refresh = async () => {
142
+ setMine(await call(action, { kind: 'delegations', offset: mine.offset }));
143
+ if (allRows)
144
+ setAll(await call(action, {
145
+ kind: 'delegations',
146
+ all: true,
147
+ offset: allRows.offset,
148
+ }));
149
+ setClock(new Date().toISOString());
150
+ };
151
+ const visible = rows.items.filter((r) => (tab === 'allDelegations' ||
152
+ (tab === 'outgoing' ? r.delegatorId === userId : r.delegateId === userId)) &&
153
+ (!status || delegationStatus(r, clock) === status));
154
+ return (_jsxs("div", { className: "flex min-w-0 flex-col gap-4", "aria-busy": task.pending, children: [_jsx("h1", { className: "font-bold text-2xl", children: t.delegationsTitle }), _jsx(ErrorMessage, { error: task.error, labels: t }), task.pending && _jsx("p", { role: "status", children: t.loading }), _jsx("fieldset", { className: "flex flex-wrap gap-2", "aria-label": t.delegationsTitle, children: ['outgoing', 'incoming', ...(allRows ? ['allDelegations'] : [])].map((key) => (_jsx(Button, { type: "button", variant: tab === key ? 'default' : 'outline', "aria-pressed": tab === key, disabled: task.pending, onClick: () => setTab(key), children: t[key] }, key))) }), _jsxs("label", { children: [t.statusFilter, _jsxs("select", { "aria-label": t.statusFilter, className: `${selectClass} ml-2`, value: status, onChange: (e) => setStatus(e.target.value), children: [_jsx("option", { value: "", children: t.allStatuses }), ['upcoming', 'active', 'ended', 'revoked'].map((key) => (_jsx("option", { value: key, children: t[key] }, key)))] })] }), _jsxs("section", { "aria-label": t[tab], className: "flex min-w-0 flex-col gap-3", children: [!visible.length && _jsx("p", { children: t.empty }), visible.map((r) => {
155
+ const state = delegationStatus(r, clock);
156
+ return (_jsxs("article", { className: `${box} space-y-2 break-words`, children: [_jsxs("dl", { className: "grid gap-2 sm:grid-cols-2", children: [_jsxs("div", { children: [_jsx("dt", { children: t.delegator }), _jsx("dd", { children: r.delegatorId })] }), _jsxs("div", { children: [_jsx("dt", { children: t.delegate }), _jsx("dd", { children: r.delegateId })] }), _jsxs("div", { children: [_jsx("dt", { children: t.startsAt }), _jsx("dd", { children: r.startsAt })] }), _jsxs("div", { children: [_jsx("dt", { children: t.endsAt }), _jsx("dd", { children: r.endsAt })] }), _jsxs("div", { children: [_jsx("dt", { children: t.state }), _jsx("dd", { children: t[state] })] }), _jsxs("div", { children: [_jsx("dt", { children: t.assignmentCodes }), _jsx("dd", { children: r.assignmentCodes?.join(', ') || '—' })] }), _jsxs("div", { className: "whitespace-pre-wrap", children: [_jsx("dt", { children: t.delegationReason }), _jsx("dd", { children: r.reason ?? '—' })] })] }), (r.delegatorId === userId || allRows) &&
157
+ (state === 'upcoming' || state === 'active') && (_jsx(Button, { type: "button", variant: "outline", disabled: task.pending, onClick: () => void task.run(async () => {
158
+ await call(action, { kind: 'revokeDelegation', id: r.id });
159
+ await refresh();
160
+ }), children: t.revokeDelegation }))] }, r.id));
161
+ })] }), _jsxs("div", { className: "flex flex-wrap items-center gap-3", children: [_jsxs("span", { children: [t.total, ": ", rows.total] }), _jsx(Button, { type: "button", variant: "outline", disabled: task.pending || rows.offset === 0, onClick: () => void task.run(() => load(Math.max(0, rows.offset - rows.limit))), children: t.previous }), _jsx(Button, { type: "button", variant: "outline", disabled: task.pending || !rows.hasMore, onClick: () => void task.run(() => load(rows.offset + rows.limit)), children: t.next }), _jsx(Button, { type: "button", variant: "outline", disabled: task.pending, onClick: () => void task.run(refresh), children: t.retry })] }), _jsxs("section", { className: box, "aria-label": t.createDelegation, children: [_jsx("h2", { className: "mb-4 font-semibold text-lg", children: t.createDelegation }), _jsx("form", { onSubmit: (event) => {
162
+ event.preventDefault();
163
+ const form = event.currentTarget, data = new FormData(form);
164
+ if (!delegateId)
165
+ return;
166
+ void task.run(async () => {
167
+ await call(action, {
168
+ kind: 'createDelegation',
169
+ input: {
170
+ delegateId,
171
+ ...(delegatorId && allRows ? { delegatorId } : {}),
172
+ startsAt: new Date(`${data.get('startsAt')}Z`).toISOString(),
173
+ endsAt: new Date(`${data.get('endsAt')}Z`).toISOString(),
174
+ assignmentCodes: String(data.get('codes') ?? '')
175
+ .split(',')
176
+ .map((s) => s.trim())
177
+ .filter(Boolean),
178
+ reason: String(data.get('reason') ?? ''),
179
+ },
180
+ });
181
+ await refresh();
182
+ });
183
+ }, children: _jsxs("fieldset", { disabled: task.pending, className: "flex min-w-0 flex-col gap-3", children: [allRows && (_jsx(PrincipalPicker, { label: t.delegator, labels: t, action: action, onPick: setDelegator })), _jsx(PrincipalPicker, { label: t.delegate, labels: t, action: action, onPick: setDelegate }), _jsx("p", { className: "text-muted-foreground text-sm", children: t.utcHint }), _jsxs("label", { htmlFor: `${formId}-starts`, children: [t.startsAt, _jsx(Input, { "aria-label": t.startsAt, id: `${formId}-starts`, name: "startsAt", type: "datetime-local", required: true, className: "max-w-full" })] }), _jsxs("label", { htmlFor: `${formId}-ends`, children: [t.endsAt, _jsx(Input, { "aria-label": t.endsAt, id: `${formId}-ends`, name: "endsAt", type: "datetime-local", required: true, className: "max-w-full" })] }), _jsxs("label", { htmlFor: `${formId}-codes`, children: [t.assignmentCodes, _jsx(Input, { id: `${formId}-codes`, name: "codes" })] }), _jsxs("label", { children: [t.delegationReason, _jsx("textarea", { name: "reason", maxLength: 2000, className: `${selectClass} w-full` })] }), _jsx(Button, { type: "submit", disabled: task.pending || !delegateId, children: t.createDelegation })] }) })] })] }));
184
+ }
185
+ //# sourceMappingURL=management-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"management-client.js","sourceRoot":"","sources":["../src/management-client.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,108 @@
1
+ /** Stable allowlist. Unknown codes, HTTP statuses and backend prose never select a message. */
2
+ export declare const errorMessages: {
3
+ readonly ATTACHMENT_TOO_LARGE: readonly ["The file exceeds the size limit.", "檔案超過大小上限。"];
4
+ readonly ATTACHMENT_TYPE_NOT_ALLOWED: readonly ["This file type is not allowed.", "不允許此檔案型別。"];
5
+ readonly ATTACHMENT_TYPE_MISMATCH: readonly ["The file content does not match its extension.", "檔案內容與副檔名不符。"];
6
+ readonly ATTACHMENT_LIMIT_EXCEEDED: readonly ["The attachment limit has been reached.", "附件數量已達上限。"];
7
+ readonly ATTACHMENT_NAME_INVALID: readonly ["The file name is invalid.", "檔名無效。"];
8
+ readonly ATTACHMENT_NOT_FOUND: readonly ["This attachment is unavailable.", "找不到此附件。"];
9
+ readonly ATTACHMENT_MULTIPART_INVALID: readonly ["The upload could not be read.", "無法讀取上傳內容。"];
10
+ readonly ATTACHMENT_UPLOAD_ABORTED: readonly ["The upload was interrupted. Try again.", "上傳已中斷,請重試。"];
11
+ readonly INVALID_INPUT: readonly ["Check the entered values.", "請檢查輸入內容。"];
12
+ readonly FORBIDDEN: readonly ["You do not have permission for this action.", "你沒有執行此操作的權限。"];
13
+ readonly INSTANCE_NOT_FOUND: readonly ["This record is unavailable.", "找不到這筆單據。"];
14
+ readonly MACHINE_NOT_FOUND: readonly ["This workflow is unavailable.", "找不到這個流程。"];
15
+ readonly VIEW_NOT_FOUND: readonly ["This saved view is unavailable.", "找不到這個已儲存檢視。"];
16
+ readonly JOB_NOT_FOUND: readonly ["This job is unavailable.", "找不到這個作業。"];
17
+ readonly UNDECLARED_QUERY_FIELD: readonly ["A selected field cannot be queried. Update the query.", "所選欄位無法查詢,請調整查詢條件。"];
18
+ readonly INVALID_QUERY: readonly ["Check the query conditions.", "請檢查查詢條件。"];
19
+ readonly INVALID_VIEW: readonly ["Check the saved view settings.", "請檢查檢視設定。"];
20
+ readonly INVALID_VIEW_SHARING: readonly ["Check the sharing settings.", "請檢查共用設定。"];
21
+ readonly PREFLIGHT_REJECTED: readonly ["Resolve the preflight errors before importing.", "請先修正預檢錯誤再匯入。"];
22
+ readonly PREFLIGHT_REQUIRED: readonly ["Run preflight before confirming the import.", "請先執行預檢再確認匯入。"];
23
+ readonly DUPLICATE_KEY_EXISTING: readonly ["The duplicate key already exists.", "重複鍵已存在於既有單據。"];
24
+ readonly DUPLICATE_KEY_IN_FILE: readonly ["The duplicate key occurs more than once in this file.", "檔案內有相同的重複鍵。"];
25
+ readonly DUPLICATE_ROW: readonly ["This row is duplicated in the file.", "檔案內有完全相同的資料列。"];
26
+ readonly INVALID_DUPLICATE_KEY: readonly ["Select one to five mapped fields as duplicate keys.", "請選取一至五個已對應欄位作為重複鍵。"];
27
+ readonly DUPLICATE_MAPPING: readonly ["Map each field only once.", "同一欄位只能對應一次。"];
28
+ readonly INVALID_FIELD_MAPPING: readonly ["Check the field mapping.", "請檢查欄位對應。"];
29
+ readonly MISSING_COLUMN: readonly ["A mapped column is missing.", "缺少已對應的欄。"];
30
+ readonly MISSING_FIELD: readonly ["A required field is missing.", "缺少必要欄位。"];
31
+ readonly FORBIDDEN_COLUMN: readonly ["This column cannot be imported.", "此欄無法匯入。"];
32
+ readonly REQUIRED: readonly ["A required value is missing.", "缺少必填值。"];
33
+ readonly TYPE_MISMATCH: readonly ["The value has an invalid type.", "資料型別不符。"];
34
+ readonly INVALID_CELL: readonly ["A cell contains an unsupported value.", "儲存格含不支援的值。"];
35
+ readonly INVALID_ENCODING: readonly ["Use a UTF-8 encoded file.", "請使用 UTF-8 編碼的檔案。"];
36
+ readonly INVALID_FILE: readonly ["The file cannot be read.", "無法讀取此檔案。"];
37
+ readonly INVALID_HEADERS: readonly ["Check the file headers.", "請檢查檔案標題列。"];
38
+ readonly FILE_TOO_LARGE: readonly ["The file is too large.", "檔案太大。"];
39
+ readonly EXPORT_FILE_TOO_LARGE: readonly ["The export is too large. Narrow the query.", "匯出檔案太大,請縮小查詢範圍。"];
40
+ readonly EXPORT_LIMIT_EXCEEDED: readonly ["Too many records. Narrow the export query.", "筆數超過匯出上限,請縮小查詢範圍。"];
41
+ readonly EXPORT_NOT_AVAILABLE: readonly ["The export is unavailable or has expired.", "匯出檔案尚未就緒或已過期。"];
42
+ readonly IMPORT_REPORT_NOT_AVAILABLE: readonly ["The import report is unavailable or has expired.", "匯入報表尚未就緒或已過期。"];
43
+ readonly DEFINITION_CHANGED: readonly ["The definition changed. Run preflight again.", "定義已變更,請重新預檢。"];
44
+ readonly DEFINITION_NOT_FOUND: readonly ["The definition is unavailable.", "找不到所需定義。"];
45
+ readonly SUBJECT_REQUIRED: readonly ["This workflow needs an importable form.", "此流程需要可匯入的表單。"];
46
+ readonly INVALID_COMMENT: readonly ["Check the comment.", "請檢查留言內容。"];
47
+ readonly INVALID_MENTION: readonly ["Check the selected mention.", "請檢查提及對象。"];
48
+ readonly MENTION_NOT_ALLOWED: readonly ["This person cannot be mentioned on this record.", "無法在這筆單據提及此人。"];
49
+ readonly IDENTITY_SEARCH_UNAVAILABLE: readonly ["People search is temporarily unavailable.", "人員查詢暫時無法使用。"];
50
+ readonly DELEGATE_INVALID: readonly ["Select an active delegate other than yourself.", "請選擇本人以外的啟用中代理人。"];
51
+ readonly DELEGATOR_INVALID: readonly ["Select an active delegator.", "請選擇啟用中的被代理人。"];
52
+ readonly DELEGATION_PERIOD_INVALID: readonly ["Check the start and end times.", "請檢查代理開始與結束時間。"];
53
+ readonly DELEGATION_DURATION_EXCEEDED: readonly ["The delegation period exceeds the allowed duration.", "代理期間超過允許上限。"];
54
+ readonly DELEGATION_OVERLAP: readonly ["This delegation overlaps an existing period.", "代理期間與既有設定重疊。"];
55
+ readonly DELEGATION_CYCLE: readonly ["This delegation would create a cycle.", "此代理設定會形成代理循環。"];
56
+ readonly DELEGATION_NOT_FOUND: readonly ["This delegation is unavailable.", "找不到這筆代理設定。"];
57
+ readonly ACCESS_NOT_MANAGEABLE: readonly ["Permanent access cannot be changed or removed.", "永久存取資格無法調整或移除。"];
58
+ readonly ACCESS_LIMIT_EXCEEDED: readonly ["The access list has reached its limit.", "存取名單已達上限。"];
59
+ readonly ACCESS_PRINCIPAL_INVALID: readonly ["Select a valid person or role and access level.", "請選擇有效的人員或角色與存取等級。"];
60
+ };
61
+ export type ErrorCode = keyof typeof errorMessages;
62
+ export declare const errorLabelKeys: ErrorCode[];
63
+ export declare function errorKey(code: unknown): ErrorCode | 'requestFailed';
64
+ export declare const managementMessages: {
65
+ readonly ATTACHMENT: readonly ["Attachment", "附件"];
66
+ readonly attachmentUploadedEvent: readonly ["Uploaded attachment", "已上傳附件"];
67
+ readonly attachmentDeletedEvent: readonly ["Deleted attachment", "已刪除附件"];
68
+ readonly delegationsTitle: readonly ["Delegations", "代理設定"];
69
+ readonly outgoing: readonly ["Set by me", "我設定的"];
70
+ readonly incoming: readonly ["Set for me", "設定給我的"];
71
+ readonly allDelegations: readonly ["All delegations", "全部代理"];
72
+ readonly statusFilter: readonly ["Status filter", "狀態篩選"];
73
+ readonly allStatuses: readonly ["All statuses", "全部狀態"];
74
+ readonly upcoming: readonly ["Upcoming", "未開始"];
75
+ readonly active: readonly ["Active", "進行中"];
76
+ readonly ended: readonly ["Ended", "已結束"];
77
+ readonly revoked: readonly ["Revoked", "已撤銷"];
78
+ readonly delegate: readonly ["Delegate", "代理人"];
79
+ readonly delegator: readonly ["Delegator", "被代理人"];
80
+ readonly startsAt: readonly ["Start time (UTC)", "開始時間(UTC)"];
81
+ readonly endsAt: readonly ["End time (UTC)", "結束時間(UTC)"];
82
+ readonly utcHint: readonly ["Enter UTC times, not your local time.", "請輸入 UTC 時間,並非本地時間。"];
83
+ readonly assignmentCodes: readonly ["Assignment codes (comma separated, optional)", "Assignment 代碼(逗號分隔,選填)"];
84
+ readonly delegationReason: readonly ["Reason (optional)", "原因(選填)"];
85
+ readonly createDelegation: readonly ["Create delegation", "建立代理"];
86
+ readonly revokeDelegation: readonly ["Revoke delegation", "撤銷代理"];
87
+ readonly peopleHint: readonly ["Type at least 2 characters, then search.", "輸入至少 2 個字元後查詢。"];
88
+ readonly accessTitle: readonly ["Access list", "存取名單"];
89
+ readonly principalType: readonly ["Principal type", "主體類型"];
90
+ readonly USER: readonly ["Person", "個人"];
91
+ readonly ROLE: readonly ["Role", "角色"];
92
+ readonly principal: readonly ["Person or role", "人員或角色"];
93
+ readonly READ: readonly ["Read", "讀取"];
94
+ readonly WRITE: readonly ["Read and write", "讀寫"];
95
+ readonly accessLevel: readonly ["Access level", "存取等級"];
96
+ readonly source: readonly ["Source", "來源"];
97
+ readonly ASSIGNED: readonly ["Assigned", "被指派"];
98
+ readonly DELEGATED: readonly ["Delegated", "被代理"];
99
+ readonly GRANTED: readonly ["Manually granted", "手動授予"];
100
+ readonly grantedBy: readonly ["Granted by", "授予者"];
101
+ readonly grantAccess: readonly ["Grant access", "授予存取"];
102
+ readonly adjustAccess: readonly ["Change level", "調整等級"];
103
+ readonly removeAccess: readonly ["Remove access", "移除存取"];
104
+ readonly ACCESS: readonly ["Access changed", "存取名單變更"];
105
+ };
106
+ export type ManagementKey = keyof typeof managementMessages;
107
+ export declare const managementKeys: ManagementKey[];
108
+ //# sourceMappingURL=messages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../src/messages.ts"],"names":[],"mappings":"AAAA,+FAA+F;AAC/F,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoGhB,CAAC;AACX,MAAM,MAAM,SAAS,GAAG,MAAM,OAAO,aAAa,CAAC;AACnD,eAAO,MAAM,cAAc,EAAiC,SAAS,EAAE,CAAC;AAExE,wBAAgB,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,SAAS,GAAG,eAAe,CAInE;AACD,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4CrB,CAAC;AACX,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,kBAAkB,CAAC;AAC5D,eAAO,MAAM,cAAc,EAAsC,aAAa,EAAE,CAAC"}