@flamingo-stack/openframe-frontend-core 0.0.847 → 0.0.848
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/dist/build/export-map.json +1 -1
- package/dist/{case-study-card-DJOHIHYU.cjs → case-study-card-X2HKPKT7.cjs} +5 -5
- package/dist/{chunk-N2A24FDF.cjs → chunk-2V6FCVUL.cjs} +955 -932
- package/dist/{chunk-CNMXP77I.cjs → chunk-36DUCHI7.cjs} +4 -4
- package/dist/{chunk-J2IXYCEH.cjs → chunk-3W4ASAXN.cjs} +15 -15
- package/dist/{chunk-6LDL3UZE.cjs → chunk-4YBS4HIO.cjs} +20 -20
- package/dist/{chunk-QK2A334V.cjs → chunk-5HOWR4TG.cjs} +12 -12
- package/dist/{chunk-2FUTZKLB.cjs → chunk-74Z34I2C.cjs} +6 -6
- package/dist/{chunk-PV3NKXWS.cjs → chunk-7DW3LZ52.cjs} +57 -57
- package/dist/{chunk-ZTO7KNYV.cjs → chunk-7LE4HWHA.cjs} +35 -35
- package/dist/{chunk-URP6GYTD.cjs → chunk-7YJQTQPV.cjs} +56 -56
- package/dist/{chunk-4R4HAFXI.cjs → chunk-ALRYVZ3E.cjs} +6 -6
- package/dist/{chunk-57JYB3E2.cjs → chunk-C3WZXOZJ.cjs} +3 -3
- package/dist/{chunk-SSSI2RBV.cjs → chunk-FNQWL4W4.cjs} +14 -14
- package/dist/{chunk-J2ZSGOUC.cjs → chunk-GASFYPGH.cjs} +27 -27
- package/dist/{chunk-3V5JWG27.cjs → chunk-GG466XFQ.cjs} +2 -2
- package/dist/{chunk-XCVH5BCZ.cjs → chunk-GRCOEICK.cjs} +6 -6
- package/dist/{chunk-5GBLXY5F.cjs → chunk-HTYJUMFB.cjs} +7 -7
- package/dist/{chunk-HBDLJUI3.cjs → chunk-I3YRYS23.cjs} +5 -5
- package/dist/{chunk-HPXET3LH.cjs → chunk-IIUZE73M.cjs} +27 -27
- package/dist/{chunk-WCK5T3UD.cjs → chunk-IKOL6NJY.cjs} +101 -69
- package/dist/{chunk-DGQDGCQH.cjs → chunk-INA2FX2N.cjs} +2 -2
- package/dist/{chunk-PQDCSZ3W.cjs → chunk-IUZVOQXP.cjs} +85 -85
- package/dist/{chunk-BIOSHDXQ.cjs → chunk-MDLT6D46.cjs} +61 -61
- package/dist/{chunk-DEEQSVLX.cjs → chunk-MWYEROAP.cjs} +90 -90
- package/dist/{chunk-D5DMWXF2.cjs → chunk-NYT6IBIX.cjs} +4 -4
- package/dist/{chunk-TBOWFTEN.cjs → chunk-O4BXHCMK.cjs} +22 -22
- package/dist/{chunk-YC52LSPP.cjs → chunk-OCJXOSIH.cjs} +40 -40
- package/dist/{chunk-3TOWCFIK.cjs → chunk-PMUCEUFQ.cjs} +13 -1
- package/dist/{chunk-BZZE4KIV.cjs → chunk-QUSCSYHJ.cjs} +135 -135
- package/dist/{chunk-744JXTDP.cjs → chunk-SA2NNWIJ.cjs} +23 -23
- package/dist/{chunk-BHOVF4KP.cjs → chunk-SOSIXRQ3.cjs} +2 -2
- package/dist/{chunk-PZNWIJRZ.cjs → chunk-TIVPOVIM.cjs} +2 -2
- package/dist/{chunk-FLW4WULE.cjs → chunk-U7UBYJEZ.cjs} +17 -61
- package/dist/{chunk-Y2OEC7UW.cjs → chunk-VW4446JR.cjs} +40 -40
- package/dist/{chunk-NFNSPLGC.cjs → chunk-W7OFAROY.cjs} +14 -9
- package/dist/{chunk-RAJ5FYFL.cjs → chunk-Y2ZWWIUA.cjs} +14 -14
- package/dist/{chunk-MPVOPSU6.cjs → chunk-Y4BG7SPX.cjs} +96 -96
- package/dist/{chunk-SIFRIUPW.cjs → chunk-YAW7CHLV.cjs} +340 -354
- package/dist/{chunk-ABL5OBSF.cjs → chunk-YXKAHQYS.cjs} +294 -249
- package/dist/{chunk-SWF6TNZ3.cjs → chunk-ZGEWT3SF.cjs} +2 -2
- package/dist/{chunk-5SZ4ILU3.cjs → chunk-ZZDFMUEU.cjs} +3 -3
- package/dist/{cloud-tenants-XEUUMABT.cjs → cloud-tenants-YAZHLPOQ.cjs} +21 -21
- package/dist/components/case-studies/index.cjs +36 -36
- package/dist/components/chat/chat-composer.d.ts.map +1 -1
- package/dist/components/chat/chat-composer.js +4 -3
- package/dist/components/chat/chat-container.d.ts.map +1 -1
- package/dist/components/chat/chat-container.js +2 -2
- package/dist/components/chat/entity-cards/design-doc-card.d.ts.map +1 -1
- package/dist/components/chat/entity-cards/design-doc-card.js +5 -17
- package/dist/components/chat/entity-cards/dispatch.d.ts.map +1 -1
- package/dist/components/chat/entity-cards/dispatch.js +4 -7
- package/dist/components/chat/index.cjs +15 -15
- package/dist/components/contact/index.cjs +22 -22
- package/dist/components/docs/index.cjs +25 -25
- package/dist/components/embeds/index.cjs +22 -22
- package/dist/components/faq/index.cjs +23 -23
- package/dist/components/features/index.cjs +21 -21
- package/dist/components/features/status-filter-component.d.ts +7 -1
- package/dist/components/features/status-filter-component.d.ts.map +1 -1
- package/dist/components/features/status-filter-component.js +9 -3
- package/dist/components/help-center-pages/index.cjs +140 -140
- package/dist/components/index.cjs +137 -135
- package/dist/components/layout/back-button.d.ts +7 -1
- package/dist/components/layout/back-button.d.ts.map +1 -1
- package/dist/components/layout/back-button.js +34 -2
- package/dist/components/loading/unified-skeleton.d.ts +6 -1
- package/dist/components/loading/unified-skeleton.d.ts.map +1 -1
- package/dist/components/loading/unified-skeleton.js +13 -1
- package/dist/components/meeting-scheduler/index.cjs +119 -119
- package/dist/components/navigation/index.cjs +24 -24
- package/dist/components/onboarding-guides/index.cjs +24 -24
- package/dist/components/product-demo/index.cjs +33 -33
- package/dist/components/related-content/index.cjs +11 -11
- package/dist/components/tickets/index.cjs +28 -28
- package/dist/components/ui/file-manager/file-manager-table.d.ts.map +1 -1
- package/dist/components/ui/file-manager/file-manager-table.js +59 -50
- package/dist/components/ui/file-manager/index.cjs +71 -62
- package/dist/components/ui/index.cjs +23 -21
- package/dist/components/ui/markdown/engine.d.ts +5 -4
- package/dist/components/ui/markdown/engine.d.ts.map +1 -1
- package/dist/components/ui/markdown/engine.js +15 -15
- package/dist/components/ui/people-cell.d.ts +9 -2
- package/dist/components/ui/people-cell.d.ts.map +1 -1
- package/dist/components/ui/people-cell.js +39 -23
- package/dist/components/ui/progress-bar.d.ts +6 -0
- package/dist/components/ui/progress-bar.d.ts.map +1 -1
- package/dist/components/ui/progress-bar.js +2 -0
- package/dist/components/ui/tag.d.ts +8 -0
- package/dist/components/ui/tag.d.ts.map +1 -1
- package/dist/components/ui/tag.js +5 -0
- package/dist/{devices-7YDIHVVP.cjs → devices-IZROCLFK.cjs} +22 -22
- package/dist/embed-shims/index.cjs +3 -3
- package/dist/embed-shims/next-image.cjs +3 -3
- package/dist/{embeddable-chat-Z3S37SSM.cjs → embeddable-chat-ETW6S22E.cjs} +94 -94
- package/dist/hooks/index.cjs +6 -6
- package/dist/index.cjs +30 -32
- package/dist/{knowledge-SQVPQSKM.cjs → knowledge-4IRWLTNW.cjs} +22 -22
- package/dist/{logs-M5DFGUBC.cjs → logs-EFDGY5IO.cjs} +28 -28
- package/dist/{policies-T3VQEJUD.cjs → policies-3KEXZ5BP.cjs} +25 -25
- package/dist/{remote-session-EE6477O3.cjs → remote-session-NT4NG7EF.cjs} +10 -10
- package/dist/{scripts-JFRFJKPH.cjs → scripts-PCGTZLZL.cjs} +28 -28
- package/dist/{software-update-E7W3AAIY.cjs → software-update-YCDNVFJE.cjs} +25 -25
- package/dist/{tickets-board-44HO3LR4.cjs → tickets-board-7FLGQEHF.cjs} +10 -10
- package/dist/types/design-doc.d.ts +45 -8
- package/dist/types/design-doc.d.ts.map +1 -1
- package/dist/utils/design-doc-readiness.d.ts +17 -15
- package/dist/utils/design-doc-readiness.d.ts.map +1 -1
- package/dist/utils/design-doc-readiness.js +5 -11
- package/dist/utils/index.cjs +5 -11
- package/package.json +1 -1
- package/src/components/chat/chat-composer.tsx +10 -3
- package/src/components/chat/chat-container.tsx +6 -4
- package/src/components/chat/entity-cards/design-doc-card.tsx +12 -17
- package/src/components/chat/entity-cards/dispatch.tsx +7 -10
- package/src/components/features/status-filter-component.tsx +15 -0
- package/src/components/layout/back-button.tsx +54 -2
- package/src/components/loading/unified-skeleton.tsx +18 -2
- package/src/components/ui/file-manager/file-manager-table.tsx +8 -3
- package/src/components/ui/markdown/engine.tsx +21 -30
- package/src/components/ui/people-cell.tsx +53 -17
- package/src/components/ui/progress-bar.tsx +8 -0
- package/src/components/ui/tag.tsx +14 -0
- package/src/types/design-doc.ts +59 -10
- package/src/utils/design-doc-readiness.ts +22 -23
package/src/types/design-doc.ts
CHANGED
|
@@ -3,9 +3,11 @@
|
|
|
3
3
|
//
|
|
4
4
|
// Participant sections are keyed by the employee DEPARTMENT (FK to the ONE
|
|
5
5
|
// `departments` table — see department.ts); there is no function enum.
|
|
6
|
-
// A doc
|
|
7
|
-
// blocking comment is open. That math lives in the hub's
|
|
6
|
+
// A doc's READINESS is derived: it is ready when every section is signed off and
|
|
7
|
+
// no blocking comment is open. That math lives in the hub's
|
|
8
8
|
// `lib/utils/design-doc-gate.ts` (isomorphic, shared by server + client).
|
|
9
|
+
// Beside it a PERSON may set a lifecycle status (`lifecycle_status`: postponed,
|
|
10
|
+
// shipped, archived), which replaces readiness on every surface while it is set.
|
|
9
11
|
|
|
10
12
|
// MIGRATION NOTE (2026-09-11). This file dropped `status`, `DesignDocStatus`,
|
|
11
13
|
// `DesignDocStatusTransition`, `approved_at`, `dri_vacated_by`, `by_status` and
|
|
@@ -53,7 +55,15 @@ import type { EntityAuthor } from './entity-author';
|
|
|
53
55
|
/** One value of `design_doc_vocabulary.kind` — the STRUCTURAL list (one per
|
|
54
56
|
* value column), the only design-doc vocabulary that is code. */
|
|
55
57
|
export type DesignDocVocabularyKind =
|
|
56
|
-
|
|
58
|
+
| 'tier'
|
|
59
|
+
| 'spec_mode'
|
|
60
|
+
| 'participant_status'
|
|
61
|
+
| 'comment_type'
|
|
62
|
+
| 'comment_status'
|
|
63
|
+
| 'link_type'
|
|
64
|
+
| 'media_type'
|
|
65
|
+
| 'lifecycle_status'
|
|
66
|
+
| 'readiness';
|
|
57
67
|
|
|
58
68
|
/** A `design_doc_vocabulary` row, as the DAL and the vocabulary API return it. */
|
|
59
69
|
export interface DesignDocVocabularyOption {
|
|
@@ -107,6 +117,24 @@ export type DesignDocCommentStatus = string;
|
|
|
107
117
|
export type DesignDocLinkType = string;
|
|
108
118
|
/** A `design_doc_vocabulary.value` of kind `media_type`. */
|
|
109
119
|
export type DesignDocMediaType = string;
|
|
120
|
+
/**
|
|
121
|
+
* A `design_doc_vocabulary.value` of kind `lifecycle_status`: a status a PERSON sets (postponed, shipped, archived),
|
|
122
|
+
* beside the readiness the sign-offs decide. Null on a doc = active, and its readiness shows.
|
|
123
|
+
*/
|
|
124
|
+
export type DesignDocLifecycleStatus = string;
|
|
125
|
+
/**
|
|
126
|
+
* A `design_doc_vocabulary.value` of kind `readiness`: the stage the sign-offs put a doc in (not ready, in active
|
|
127
|
+
* work, blocked, ready to build). The hub picks the row by its role; the words and the colour are the row's.
|
|
128
|
+
*/
|
|
129
|
+
export type DesignDocReadiness = string;
|
|
130
|
+
|
|
131
|
+
/** A vocabulary value as a card shows it, resolved by the hub so a surface without the vocabulary can draw it. */
|
|
132
|
+
export interface DesignDocVocabularyDisplay {
|
|
133
|
+
value: string;
|
|
134
|
+
label: string;
|
|
135
|
+
/** A `StatusBadge` colorScheme name. */
|
|
136
|
+
color_scheme: string;
|
|
137
|
+
}
|
|
110
138
|
|
|
111
139
|
// ---------------------------------------------------------------------------
|
|
112
140
|
// Rows (as returned by the hub DAL — hydrated)
|
|
@@ -258,6 +286,15 @@ export interface DesignDoc {
|
|
|
258
286
|
comments: DesignDocComment[];
|
|
259
287
|
completion: DesignDocCompletion;
|
|
260
288
|
my_open_work?: DesignDocMyOpenWork;
|
|
289
|
+
/** The status a person set (postponed, shipped, archived); null = active, its readiness shows. */
|
|
290
|
+
lifecycle_status: DesignDocLifecycleStatus | null;
|
|
291
|
+
/** That status as the vocabulary words it, resolved by the hub (null when none is set). */
|
|
292
|
+
lifecycle?: DesignDocVocabularyDisplay | null;
|
|
293
|
+
/** When the status was last set or cleared, and by whom. */
|
|
294
|
+
lifecycle_status_changed_at: string | null;
|
|
295
|
+
lifecycle_status_changed_by?: DesignDocPerson | null;
|
|
296
|
+
/** The stage its sign-offs put it in, as the vocabulary words it, resolved by the hub. */
|
|
297
|
+
readiness?: DesignDocVocabularyDisplay | null;
|
|
261
298
|
}
|
|
262
299
|
|
|
263
300
|
// ---------------------------------------------------------------------------
|
|
@@ -328,6 +365,8 @@ export interface UpdateDesignDocData {
|
|
|
328
365
|
*/
|
|
329
366
|
feature_lead_ids?: string[];
|
|
330
367
|
links?: DesignDocLinkInput[];
|
|
368
|
+
/** A `lifecycle_status` value, or null to make the doc active again. Anyone who may edit the doc may set it. */
|
|
369
|
+
lifecycle_status?: DesignDocLifecycleStatus | null;
|
|
331
370
|
/** OCC token — the `updated_at` the editor seeded from; mismatch → 409. */
|
|
332
371
|
expected_updated_at?: string;
|
|
333
372
|
}
|
|
@@ -358,10 +397,18 @@ export interface AddDesignDocCommentData {
|
|
|
358
397
|
body: string;
|
|
359
398
|
}
|
|
360
399
|
|
|
361
|
-
/** The dashboard's readiness filter (`?ready=`). */
|
|
362
|
-
export type DesignDocReadyFilter =
|
|
400
|
+
/** The dashboard's readiness filter (`?ready=`): one `readiness` value. */
|
|
401
|
+
export type DesignDocReadyFilter = DesignDocReadiness;
|
|
402
|
+
|
|
403
|
+
/**
|
|
404
|
+
* The dashboard's status filter (`?status=`): `active` (no lifecycle status set, the default) or one
|
|
405
|
+
* `lifecycle_status` value.
|
|
406
|
+
*/
|
|
407
|
+
export type DesignDocLifecycleFilter = 'active' | DesignDocLifecycleStatus;
|
|
363
408
|
|
|
364
409
|
export interface DesignDocFilters {
|
|
410
|
+
/** Defaults to `active`: a doc a person postponed, shipped or archived is listed only under its own status. */
|
|
411
|
+
lifecycle?: DesignDocLifecycleFilter;
|
|
365
412
|
ready?: DesignDocReadyFilter;
|
|
366
413
|
/** One or more `spec_mode` values (CSV on the wire). */
|
|
367
414
|
spec_mode?: string;
|
|
@@ -378,16 +425,18 @@ export interface DesignDocListResponse {
|
|
|
378
425
|
* filter itself — so a filtered row still shows what the other value holds. */
|
|
379
426
|
facets: {
|
|
380
427
|
spec_mode: Record<string, number>;
|
|
381
|
-
/** The same over readiness (`
|
|
382
|
-
ready: Record<
|
|
428
|
+
/** The same over readiness (each `readiness` value), MINUS the ready filter itself: the filter row's options. */
|
|
429
|
+
ready: Record<DesignDocReadiness, number>;
|
|
430
|
+
/** The same over the status filter (`active` and each `lifecycle_status` value), MINUS the status filter itself. */
|
|
431
|
+
lifecycle: Record<string, number>;
|
|
383
432
|
};
|
|
384
433
|
}
|
|
385
434
|
|
|
435
|
+
/** Counted over ACTIVE docs (no lifecycle status), so postponed, shipped and archived docs never inflate open work. */
|
|
386
436
|
export interface DesignDocStats {
|
|
387
437
|
total: number;
|
|
388
|
-
/**
|
|
389
|
-
|
|
390
|
-
not_ready: number;
|
|
438
|
+
/** How many active docs each `readiness` value holds, zeros included. */
|
|
439
|
+
readiness: Record<DesignDocReadiness, number>;
|
|
391
440
|
waiting_on_me_docs: number;
|
|
392
441
|
waiting_on_me_tasks: number;
|
|
393
442
|
}
|
|
@@ -1,34 +1,33 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* A design doc's
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* A design doc's status as every surface draws it (the hub's design-docs screens, its doc page, the lib's design-doc
|
|
3
|
+
* cards), and its sign-off caption.
|
|
4
|
+
*
|
|
5
|
+
* Both halves of the status are vocabulary rows the hub resolves onto the doc, so no surface holds a word or a colour:
|
|
6
|
+
* - its READINESS (`doc.readiness`): the stage the sign-offs put it in (not ready, in active work, blocked, ready to
|
|
7
|
+
* build), picked by the hub from the `readiness` rows by role;
|
|
8
|
+
* - a LIFECYCLE status a person set (`doc.lifecycle`: postponed, shipped, archived). While one is set it is what the
|
|
9
|
+
* doc shows; cleared, the readiness shows again.
|
|
10
|
+
*
|
|
11
|
+
* The sign-off caption is counts only ("4/6 signed off · 1 blocking"): the status has its own badge.
|
|
12
|
+
* Pure, zero-import beyond the type.
|
|
5
13
|
*/
|
|
6
|
-
import type { DesignDocCompletion } from '../types/design-doc';
|
|
14
|
+
import type { DesignDoc, DesignDocCompletion, DesignDocVocabularyDisplay } from '../types/design-doc';
|
|
7
15
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
> = {
|
|
16
|
-
ready: { label: 'Ready to build', scheme: 'success' },
|
|
17
|
-
not_ready: { label: 'Not ready', scheme: 'default' },
|
|
18
|
-
};
|
|
19
|
-
|
|
20
|
-
/** Ready to build ⇔ `completion.isComplete` (every section signed off, no open blocking comment). */
|
|
21
|
-
export const designDocReadiness = (completion: Pick<DesignDocCompletion, 'isComplete'>): DesignDocReadiness =>
|
|
22
|
-
completion.isComplete ? 'ready' : 'not_ready';
|
|
16
|
+
/** What the doc's status badge says: its lifecycle status when a person set one, else its readiness (null from a hub
|
|
17
|
+
* that resolves neither). */
|
|
18
|
+
export function designDocStatusDisplay(
|
|
19
|
+
doc: Pick<DesignDoc, 'lifecycle' | 'readiness'>,
|
|
20
|
+
): DesignDocVocabularyDisplay | null {
|
|
21
|
+
return doc.lifecycle ?? doc.readiness ?? null;
|
|
22
|
+
}
|
|
23
23
|
|
|
24
|
-
/** "4/6
|
|
24
|
+
/** "4/6 signed off" */
|
|
25
25
|
export function formatCompletionLabel(completion: Pick<DesignDocCompletion, 'total' | 'completed'>): string {
|
|
26
|
-
return `${completion.completed}/${completion.total}
|
|
26
|
+
return `${completion.completed}/${completion.total} signed off`;
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
-
/** The SAME
|
|
29
|
+
/** The SAME count plus the blocking veto ("4/6 signed off · 1 blocking"): the dashboard row, the doc page, the card. */
|
|
30
30
|
export function formatCompletionLabelWithBlockers(completion: DesignDocCompletion): string {
|
|
31
31
|
const base = formatCompletionLabel(completion);
|
|
32
|
-
if (completion.isComplete) return `${DESIGN_DOC_READINESS_DISPLAY.ready.label} · ${base}`;
|
|
33
32
|
return completion.openBlocking > 0 ? `${base} · ${completion.openBlocking} blocking` : base;
|
|
34
33
|
}
|