@cratis/event-models 0.233.0 → 0.235.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.
Files changed (44) hide show
  1. package/dist/Cards/ArtifactCard.d.ts +2 -1
  2. package/dist/Collections/CollectionGrid.d.ts +1 -1
  3. package/dist/Collections/CollectionGridEditor.d.ts +2 -0
  4. package/dist/Collections/collectionGridLayout.d.ts +3 -2
  5. package/dist/Collections/estimateCollectionSize.d.ts +2 -1
  6. package/dist/Descriptions/Description.d.ts +13 -0
  7. package/dist/Descriptions/index.d.ts +2 -0
  8. package/dist/Descriptions/shownText.d.ts +1 -0
  9. package/dist/Features/FeatureHeader.d.ts +3 -1
  10. package/dist/Headers/PillHeader.d.ts +3 -0
  11. package/dist/Layout/cardHeight.d.ts +1 -1
  12. package/dist/Layout/sliceLayout.d.ts +2 -2
  13. package/dist/Model/CommandItem.d.ts +2 -0
  14. package/dist/Model/EventItem.d.ts +2 -0
  15. package/dist/Model/Feature.d.ts +2 -0
  16. package/dist/Model/Module.d.ts +2 -0
  17. package/dist/Model/ReadModelItem.d.ts +2 -0
  18. package/dist/Model/Slice.d.ts +1 -0
  19. package/dist/Model/SliceSpecification.d.ts +2 -0
  20. package/dist/Modules/ModuleHeader.d.ts +3 -1
  21. package/dist/Modules/moduleWidth.d.ts +1 -1
  22. package/dist/Presentation/BoardDensity.d.ts +7 -0
  23. package/dist/Presentation/BoardTextSize.d.ts +3 -0
  24. package/dist/Presentation/EventModelPresentation.d.ts +4 -0
  25. package/dist/Presentation/index.d.ts +2 -0
  26. package/dist/Reading/readDescriptions.d.ts +8 -0
  27. package/dist/Rows/Interaction/InteractionCard.d.ts +3 -1
  28. package/dist/Slices/ArtifactNames.d.ts +5 -0
  29. package/dist/Slices/SliceHeaderSlice.d.ts +1 -1
  30. package/dist/Slices/SlicesArea.d.ts +3 -1
  31. package/dist/Slices/createOptimisticSlice.d.ts +2 -1
  32. package/dist/Slices/duplicatedSlice.d.ts +4 -0
  33. package/dist/Slices/index.d.ts +4 -0
  34. package/dist/Slices/sliceAreaState.d.ts +0 -1
  35. package/dist/Slices/takenArtifactNames.d.ts +5 -0
  36. package/dist/Slices/uniqueName.d.ts +1 -0
  37. package/dist/Specifications/SpecificationHeader.d.ts +3 -1
  38. package/dist/Tooltips/GridTooltip.d.ts +3 -0
  39. package/dist/event-model-document.schema.json +52 -0
  40. package/dist/event-models.css +1 -1
  41. package/dist/index.d.ts +1 -0
  42. package/dist/index.js +4120 -3927
  43. package/dist/index.js.map +1 -1
  44. package/package.json +4 -4
@@ -8,6 +8,7 @@ export interface ArtifactCardProps extends Omit<CardProps, 'backgroundColor' | '
8
8
  kind: ArtifactCardKind;
9
9
  artifactId?: Guid;
10
10
  summary?: string;
11
+ description?: string;
11
12
  tags?: readonly string[];
12
13
  marker?: ReactNode;
13
14
  schema?: string | JsonSchema;
@@ -15,4 +16,4 @@ export interface ArtifactCardProps extends Omit<CardProps, 'backgroundColor' | '
15
16
  actions?: readonly CardAction[];
16
17
  onActivate?: (artifactId: Guid, host: DOMRect) => void;
17
18
  }
18
- export declare const ArtifactCard: ({ kind, artifactId, summary, tags, marker, schema, showDetails, actions, onActivate, onSelected, ...cardProps }: ArtifactCardProps) => React.JSX.Element;
19
+ export declare const ArtifactCard: ({ kind, artifactId, summary, description, tags, marker, schema, showDetails, actions, onActivate, onSelected, ...cardProps }: ArtifactCardProps) => React.JSX.Element;
@@ -25,4 +25,4 @@ export interface CollectionGridProps extends CollectionGridEditor {
25
25
  rowLabels?: (props: RowLabelsColumnProps) => ReactNode;
26
26
  onActorsReordered?: RowLabelsColumnProps['onActorsReordered'];
27
27
  }
28
- export declare const CollectionGrid: ({ collection, getZoom, slots, onDeselect, onCollectionMoving, onCollectionMoved, canMove, onAddModule, onModulesReordered, onCollapseChanged, onRenameModule, onModulesChanged, onFeaturesChanged, onPersistenceError, rowLabels, onActorsReordered, onAddFeature, onRenameFeature, onFeatureCollapseChanged, onFeaturesReordered, onAddSlice, onReorderSlices, onMoveSlice, validateSliceDrop, onSliceCollapseChanged, onSliceRenamed, onSliceDuplicated }: CollectionGridProps) => import("react").JSX.Element;
28
+ export declare const CollectionGrid: ({ collection, getZoom, slots, onDeselect, onCollectionMoving, onCollectionMoved, canMove, onAddModule, onModulesReordered, onCollapseChanged, onRenameModule, onModulesChanged, onFeaturesChanged, onPersistenceError, rowLabels, onActorsReordered, onAddFeature, onRenameFeature, onFeatureCollapseChanged, onFeaturesReordered, onAddSlice, onReorderSlices, onMoveSlice, validateSliceDrop, onSliceCollapseChanged, onSliceRenamed, onSliceDuplicated, takenArtifactNames }: CollectionGridProps) => import("react").JSX.Element;
@@ -1,6 +1,7 @@
1
1
  import type { Guid } from '@cratis/fundamentals';
2
2
  import type { Feature, Slice } from '../Model';
3
3
  import type { ValidateSliceDrop } from '../SliceDragging';
4
+ import type { ArtifactNames } from '../Slices/ArtifactNames';
4
5
  export interface CollectionGridEditor {
5
6
  onAddFeature?: (moduleId: Guid, name?: string, parentId?: Guid) => Promise<Feature | undefined>;
6
7
  onRenameFeature?: (featureId: Guid, name: string) => Promise<void>;
@@ -13,4 +14,5 @@ export interface CollectionGridEditor {
13
14
  onSliceCollapseChanged?: (featureId: Guid, sliceId: Guid, collapsed: boolean) => void;
14
15
  onSliceRenamed?: (featureId: Guid, sliceId: Guid, name: string) => void;
15
16
  onSliceDuplicated?: (featureId: Guid, sourceSliceId: Guid, newSliceId: Guid) => void;
17
+ takenArtifactNames?: () => ArtifactNames;
16
18
  }
@@ -1,5 +1,6 @@
1
1
  import { type Feature, type ModuleCollection, type Slice } from '../Model';
2
2
  import { RowType } from '../Rows';
3
+ import { type BoardDensity, type BoardTextSize } from '../Presentation';
3
4
  export interface CollectionSlice {
4
5
  slice: Slice;
5
6
  moduleId: string;
@@ -8,8 +9,8 @@ export interface CollectionSlice {
8
9
  export declare const collectionSlices: (collection: ModuleCollection) => CollectionSlice[];
9
10
  export type SliceDetailsVisibility = (slice: CollectionSlice) => boolean;
10
11
  export declare const collectionRows: (collection: ModuleCollection) => RowType[];
11
- export declare const collectionRowHeights: (collection: ModuleCollection, showsDetails?: SliceDetailsVisibility) => Record<RowType, number>;
12
+ export declare const collectionRowHeights: (collection: ModuleCollection, showsDetails?: SliceDetailsVisibility, textSize?: BoardTextSize) => Record<RowType, number>;
12
13
  export declare const collectionContentHeight: (collection: ModuleCollection, rows: readonly RowType[], heights: Readonly<Record<RowType, number>>) => number;
13
14
  export declare const featureWidth: (feature: Feature) => number;
14
15
  export declare const featureColumns: (features: Feature[]) => Feature[];
15
- export declare const collectionModuleWidth: (name: string, features: Feature[]) => number;
16
+ export declare const collectionModuleWidth: (name: string, features: Feature[], density?: BoardDensity) => number;
@@ -1,8 +1,9 @@
1
1
  import type { ModuleCollection } from '../Model';
2
+ import { type BoardDensity, type BoardTextSize } from '../Presentation';
2
3
  import { type SliceDetailsVisibility } from './collectionGridLayout';
3
4
  export interface CollectionSizeEstimate {
4
5
  width: number;
5
6
  height: number;
6
7
  moduleWidths: number[];
7
8
  }
8
- export declare const estimateCollectionSize: (collection: ModuleCollection, showsDetails?: SliceDetailsVisibility) => CollectionSizeEstimate;
9
+ export declare const estimateCollectionSize: (collection: ModuleCollection, showsDetails?: SliceDetailsVisibility, density?: BoardDensity, textSize?: BoardTextSize) => CollectionSizeEstimate;
@@ -0,0 +1,13 @@
1
+ export interface DescriptionProps {
2
+ description?: string;
3
+ documentation?: string;
4
+ lines?: 1 | 2;
5
+ tooltipPosition?: 'top' | 'bottom';
6
+ plain?: boolean;
7
+ }
8
+ export interface DescriptionFullProps {
9
+ description?: string;
10
+ documentation?: string;
11
+ }
12
+ export declare const DescriptionFull: ({ description, documentation }: DescriptionFullProps) => import("react").JSX.Element | null;
13
+ export declare const Description: ({ description, documentation, lines, tooltipPosition, plain }: DescriptionProps) => import("react").JSX.Element | null;
@@ -0,0 +1,2 @@
1
+ export * from './Description';
2
+ export * from './shownText';
@@ -0,0 +1 @@
1
+ export declare const shownText: (text: string | undefined) => string | undefined;
@@ -5,6 +5,8 @@ import { type HeaderDragStart } from '../HeaderDragging';
5
5
  export interface FeatureHeaderProps {
6
6
  featureId: Guid;
7
7
  name: string;
8
+ description?: string;
9
+ documentation?: string;
8
10
  height: number;
9
11
  collapsed: boolean;
10
12
  onToggleCollapse?: () => void;
@@ -20,4 +22,4 @@ export interface FeatureHeaderProps {
20
22
  onAddSubFeature?: () => void;
21
23
  onAddSlice?: (sliceType: SliceType) => void;
22
24
  }
23
- export declare const FeatureHeader: ({ featureId, name, height, collapsed, onToggleCollapse, onRenamed, status, selectableStatuses, unselectableStatusReason, detailsVisible, onToggleDetails, dragging, onDragStart, error, onAddSubFeature, onAddSlice, }: FeatureHeaderProps) => import("react").JSX.Element;
25
+ export declare const FeatureHeader: ({ featureId, name, description, documentation, height, collapsed, onToggleCollapse, onRenamed, status, selectableStatuses, unselectableStatusReason, detailsVisible, onToggleDetails, dragging, onDragStart, error, onAddSubFeature, onAddSlice, }: FeatureHeaderProps) => import("react").JSX.Element;
@@ -15,6 +15,9 @@ export interface PillHeaderProps {
15
15
  /** Extra affordances rendered right after the collapse button, before the label — such as the conversation button. */
16
16
  leadingContent?: React.ReactNode;
17
17
  marker?: React.ReactNode;
18
+ /** Host-supplied text drawn under the label, clamped to one line, with the documentation in its tooltip. Nothing is drawn without it, or while collapsed. */
19
+ description?: string;
20
+ documentation?: string;
18
21
  children?: React.ReactNode;
19
22
  draggable?: boolean;
20
23
  onPointerDown?: React.PointerEventHandler<HTMLDivElement>;
@@ -2,4 +2,4 @@ import type { JsonSchema } from '@cratis/components/SchemaEditor';
2
2
  export interface CardLayoutInput {
3
3
  schema?: string | JsonSchema;
4
4
  }
5
- export declare function detailedCardHeight(card: CardLayoutInput): number;
5
+ export declare function detailedCardHeight(card: CardLayoutInput, textScale?: number): number;
@@ -12,8 +12,8 @@ export declare function sliceColumnWidth(slice: SliceLayoutInput | {
12
12
  sliceType: SliceType;
13
13
  eventCount: number;
14
14
  }): number;
15
- export declare function rowHeightForSlice(rowType: RowType, slice: SliceLayoutInput, showDetails?: boolean): number;
15
+ export declare function rowHeightForSlice(rowType: RowType, slice: SliceLayoutInput, showDetails?: boolean, textScale?: number): number;
16
16
  export declare function computeGlobalRowHeights(slices: readonly {
17
17
  slice: SliceLayoutInput;
18
18
  showDetails?: boolean;
19
- }[], contentRows: readonly RowType[]): Record<RowType, number>;
19
+ }[], contentRows: readonly RowType[], textScale?: number): Record<RowType, number>;
@@ -5,6 +5,8 @@ import type { CommandPropertyRules } from './CommandPropertyRules';
5
5
  export interface CommandItem {
6
6
  id: Guid;
7
7
  name: string;
8
+ description?: string;
9
+ documentation?: string;
8
10
  schema: JsonSchema;
9
11
  stateSchema: JsonSchema;
10
12
  logicDescription: string;
@@ -5,6 +5,8 @@ import type { EventVisibility } from './EventVisibility';
5
5
  export interface EventItem {
6
6
  id: Guid;
7
7
  name: string;
8
+ description?: string;
9
+ documentation?: string;
8
10
  schema: JsonSchema;
9
11
  sourceEventId?: string;
10
12
  tags?: string[];
@@ -4,6 +4,8 @@ import type { Slice } from './Slice';
4
4
  export interface Feature {
5
5
  id: Guid;
6
6
  name: string;
7
+ description?: string;
8
+ documentation?: string;
7
9
  subFeatures: Feature[];
8
10
  slices: Slice[];
9
11
  collapsed: boolean;
@@ -4,6 +4,8 @@ import type { ScreenTemplate } from './ScreenTemplate';
4
4
  export interface Module {
5
5
  id: Guid;
6
6
  name: string;
7
+ description?: string;
8
+ documentation?: string;
7
9
  features: Feature[];
8
10
  collapsed: boolean;
9
11
  sortOrder: number;
@@ -3,6 +3,8 @@ import type { JsonSchema } from '@cratis/components/types';
3
3
  export interface ReadModelItem {
4
4
  id: Guid;
5
5
  name: string;
6
+ description?: string;
7
+ documentation?: string;
6
8
  schema: JsonSchema;
7
9
  materializes: boolean;
8
10
  }
@@ -19,6 +19,7 @@ export interface Slice {
19
19
  name: string;
20
20
  sliceType: SliceType;
21
21
  description: string;
22
+ documentation?: string;
22
23
  status: SliceStatus;
23
24
  collapsed: boolean;
24
25
  sortOrder: number;
@@ -12,6 +12,8 @@ import type { SpecificationWhenEvent } from './SpecificationWhenEvent';
12
12
  export interface SliceSpecification {
13
13
  id: Guid;
14
14
  name: string;
15
+ description?: string;
16
+ documentation?: string;
15
17
  given: SpecificationGivenEvent[];
16
18
  givenContexts?: SpecificationGivenContext[];
17
19
  when?: SpecificationCommand;
@@ -4,6 +4,8 @@ import { type HeaderDragStart } from '../HeaderDragging';
4
4
  export interface ModuleHeaderProps {
5
5
  moduleId: Guid;
6
6
  name: string;
7
+ description?: string;
8
+ documentation?: string;
7
9
  height: number;
8
10
  collapsed: boolean;
9
11
  onToggleCollapse?: () => void;
@@ -17,4 +19,4 @@ export interface ModuleHeaderProps {
17
19
  onDragStart?: (start: HeaderDragStart) => void;
18
20
  error?: string;
19
21
  }
20
- export declare const ModuleHeader: ({ moduleId, name, height, collapsed, onToggleCollapse, onAddModule, onAddFeature, onRenamed, validateName, status, detailsVisible, onToggleDetails, onDragStart, error, }: ModuleHeaderProps) => import("react").JSX.Element;
22
+ export declare const ModuleHeader: ({ moduleId, name, description, documentation, height, collapsed, onToggleCollapse, onAddModule, onAddFeature, onRenamed, validateName, status, detailsVisible, onToggleDetails, onDragStart, error, }: ModuleHeaderProps) => import("react").JSX.Element;
@@ -1,2 +1,2 @@
1
1
  import { type MeasureLabelWidth } from '../Geometry';
2
- export declare function moduleWidth(featureWidths: readonly number[], name: string, measure?: MeasureLabelWidth): number;
2
+ export declare function moduleWidth(featureWidths: readonly number[], name: string, measure?: MeasureLabelWidth, featureGap?: number): number;
@@ -0,0 +1,7 @@
1
+ export type BoardDensity = 'compact' | 'comfortable' | 'spacious';
2
+ export declare const defaultBoardDensity: BoardDensity;
3
+ export interface BoardGaps {
4
+ module: number;
5
+ feature: number;
6
+ }
7
+ export declare const boardGaps: (density?: BoardDensity) => BoardGaps;
@@ -0,0 +1,3 @@
1
+ export type BoardTextSize = 'small' | 'medium' | 'large';
2
+ export declare const defaultBoardTextSize: BoardTextSize;
3
+ export declare const boardTextScale: (size?: BoardTextSize) => number;
@@ -1,3 +1,5 @@
1
+ import type { BoardDensity } from './BoardDensity';
2
+ import type { BoardTextSize } from './BoardTextSize';
1
3
  import type { DetailLevel } from './DetailLevel';
2
4
  import type { DetailsVisibilityState } from './detailsVisibility';
3
5
  import type { VisualizationMode } from './VisualizationMode';
@@ -6,4 +8,6 @@ export interface EventModelPresentation {
6
8
  visualizationMode: VisualizationMode;
7
9
  detailsVisibility: DetailsVisibilityState;
8
10
  showStatuses?: boolean;
11
+ density?: BoardDensity;
12
+ textSize?: BoardTextSize;
9
13
  }
@@ -1,5 +1,7 @@
1
1
  export * from './VisualizationMode';
2
2
  export * from './DetailLevel';
3
+ export * from './BoardDensity';
4
+ export * from './BoardTextSize';
3
5
  export * from './detailsVisibility';
4
6
  export * from './EventModelPresentation';
5
7
  export * from './defaultEventModelPresentation';
@@ -0,0 +1,8 @@
1
+ import type { DocumentNode } from './DocumentNode';
2
+ export declare const readDescriptions: (node: DocumentNode) => {
3
+ description?: string;
4
+ documentation?: string;
5
+ };
6
+ export declare const readDocumentation: (node: DocumentNode) => {
7
+ documentation?: string;
8
+ };
@@ -8,7 +8,9 @@ export interface InteractionCardProps {
8
8
  artifactId: Guid;
9
9
  name: string;
10
10
  schema: JsonSchema;
11
+ description?: string;
12
+ documentation?: string;
11
13
  showDetails?: boolean;
12
14
  onRenamed?: (name: string) => void;
13
15
  }
14
- export declare const InteractionCard: ({ sliceId, kind, artifactId, name, schema, showDetails, onRenamed }: InteractionCardProps) => import("react").JSX.Element;
16
+ export declare const InteractionCard: ({ sliceId, kind, artifactId, name, schema, description, documentation, showDetails, onRenamed }: InteractionCardProps) => import("react").JSX.Element;
@@ -0,0 +1,5 @@
1
+ export interface ArtifactNames {
2
+ commands: readonly string[];
3
+ events: readonly string[];
4
+ readModels: readonly string[];
5
+ }
@@ -1,2 +1,2 @@
1
1
  import type { Slice } from '../Model';
2
- export type SliceHeaderSlice = Pick<Slice, 'id' | 'name' | 'sliceType' | 'status' | 'translationDirection' | 'annotations'>;
2
+ export type SliceHeaderSlice = Pick<Slice, 'id' | 'name' | 'sliceType' | 'status' | 'translationDirection' | 'annotations'> & Partial<Pick<Slice, 'description' | 'documentation'>>;
@@ -3,6 +3,7 @@ import type { Guid } from '@cratis/fundamentals';
3
3
  import { useSliceDrag, type ValidateSliceDrop } from '../SliceDragging';
4
4
  import type { Slice, SliceType } from '../Model';
5
5
  import type { SliceNames } from './SliceNames';
6
+ import type { ArtifactNames } from './ArtifactNames';
6
7
  import { type SliceAreaItem } from './sliceAreaState';
7
8
  export interface SlicesAreaHandle<T extends SliceAreaItem> {
8
9
  addSlice: (sliceType: SliceType, afterSliceId?: Guid, names?: SliceNames) => void;
@@ -21,6 +22,7 @@ export interface SlicesAreaProps<T extends SliceAreaItem> {
21
22
  featureCollapsed: boolean;
22
23
  hideEmptyPlaceholder?: boolean;
23
24
  onSlicesChanged?: (slices: T[]) => void;
25
+ takenArtifactNames?: (slices: T[]) => ArtifactNames;
24
26
  createSlice: (slice: Slice) => T;
25
27
  onAddSlice?: (slice: T, afterSliceId?: Guid) => Promise<Guid | undefined>;
26
28
  onReorderSlices?: (sliceIds: Guid[]) => Promise<boolean>;
@@ -35,4 +37,4 @@ export interface SlicesAreaProps<T extends SliceAreaItem> {
35
37
  updateSlices: SlicesAreaHandle<T>['updateSlices'];
36
38
  }) => ReactNode;
37
39
  }
38
- export declare function SlicesArea<T extends SliceAreaItem>({ ref, initialSlices, moduleId, featureId, featureCollapsed, hideEmptyPlaceholder, onSlicesChanged, createSlice, onAddSlice, onReorderSlices, onMoveSlice, validateSliceDrop, renderSlice, }: SlicesAreaProps<T>): import("react").JSX.Element | null;
40
+ export declare function SlicesArea<T extends SliceAreaItem>({ ref, initialSlices, moduleId, featureId, featureCollapsed, hideEmptyPlaceholder, onSlicesChanged, takenArtifactNames, createSlice, onAddSlice, onReorderSlices, onMoveSlice, validateSliceDrop, renderSlice, }: SlicesAreaProps<T>): import("react").JSX.Element | null;
@@ -1,3 +1,4 @@
1
1
  import { SliceType, type Slice } from '../Model';
2
+ import type { ArtifactNames } from './ArtifactNames';
2
3
  import type { SliceNames } from './SliceNames';
3
- export declare const createOptimisticSlice: (sliceType: SliceType, names?: SliceNames) => Slice;
4
+ export declare const createOptimisticSlice: (sliceType: SliceType, names?: SliceNames, sliceNames?: readonly string[], artifactNames?: ArtifactNames) => Slice;
@@ -0,0 +1,4 @@
1
+ import type { Guid } from '@cratis/fundamentals';
2
+ import type { Slice } from '../Model';
3
+ import type { ArtifactNames } from './ArtifactNames';
4
+ export declare const duplicatedSlice: (source: Slice, id: Guid, sliceNames: readonly string[], artifactNames: ArtifactNames) => Slice;
@@ -11,6 +11,10 @@ export * from './SlicesArea';
11
11
  export * from './SliceNames';
12
12
  export * from './createOptimisticSlice';
13
13
  export * from './sliceAreaState';
14
+ export * from './uniqueName';
15
+ export * from './ArtifactNames';
16
+ export * from './takenArtifactNames';
17
+ export * from './duplicatedSlice';
14
18
  export * from './SliceColumnFrame';
15
19
  export * from './SliceRows';
16
20
  export * from './SlicePlaceholder';
@@ -39,5 +39,4 @@ export declare const completeMoveOut: <T extends SliceAreaItem>(state: SliceArea
39
39
  export declare const movePendingSliceIn: <T extends SliceAreaItem>(state: SliceAreaState<T>, slice: T, index: number) => SliceAreaState<T>;
40
40
  export declare const completeMoveIn: <T extends SliceAreaItem>(state: SliceAreaState<T>, id: Guid, succeeded: boolean) => SliceAreaState<T>;
41
41
  export declare const reconcileSliceSnapshot: <T extends SliceAreaItem>(state: SliceAreaState<T>, snapshot: T[]) => SliceAreaState<T>;
42
- export declare const duplicateSliceName: (names: string[], original: string) => string;
43
42
  export {};
@@ -0,0 +1,5 @@
1
+ import type { Slice } from '../Model';
2
+ import type { ArtifactNames } from './ArtifactNames';
3
+ export declare const noArtifactNames: ArtifactNames;
4
+ export declare const artifactNamesOf: (slices: readonly Slice[]) => ArtifactNames;
5
+ export declare const combineArtifactNames: (...names: ArtifactNames[]) => ArtifactNames;
@@ -0,0 +1 @@
1
+ export declare function uniqueName(base: string, taken: readonly string[]): string;
@@ -2,6 +2,8 @@ import type { ReactNode } from 'react';
2
2
  import { SpecificationRunState } from './SpecificationRunState';
3
3
  export interface SpecificationHeaderProps {
4
4
  name: string;
5
+ description?: string;
6
+ documentation?: string;
5
7
  collapsed: boolean;
6
8
  onToggleCollapse?: () => void;
7
9
  runState: SpecificationRunState;
@@ -13,4 +15,4 @@ export interface SpecificationHeaderProps {
13
15
  runControl?: ReactNode;
14
16
  gutter?: ReactNode;
15
17
  }
16
- export declare const SpecificationHeader: ({ name, collapsed, onToggleCollapse, runState, runMessage, nameNotice, executionLabel, onRenamed, onDeleted, runControl, gutter, }: SpecificationHeaderProps) => import("react").JSX.Element;
18
+ export declare const SpecificationHeader: ({ name, description, documentation, collapsed, onToggleCollapse, runState, runMessage, nameNotice, executionLabel, onRenamed, onDeleted, runControl, gutter, }: SpecificationHeaderProps) => import("react").JSX.Element;
@@ -3,6 +3,7 @@ export type GridTooltipPosition = 'top' | 'bottom' | 'left' | 'right';
3
3
  export interface GridTooltipProps {
4
4
  content: React.ReactNode;
5
5
  position?: GridTooltipPosition;
6
+ openOnFocus?: boolean;
6
7
  children: React.ReactNode;
7
8
  }
8
9
  /**
@@ -18,6 +19,8 @@ export interface GridTooltipProps {
18
19
  * The bubble closes when the card is no longer under the pointer even if no leave arrives: the canvas pans and
19
20
  * zooms under a still pointer, and the browser reports a pointer leaving only when the pointer moves.
20
21
  *
22
+ * With openOnFocus, keyboard focus on anything inside the anchor opens the bubble too, and Escape closes it.
23
+ *
21
24
  * Hover is tracked for mouse pointers only: a touch tap synthesizes an enter with no matching leave,
22
25
  * which would strand the bubble on screen on a tablet.
23
26
  */
@@ -117,6 +117,14 @@
117
117
  "name": {
118
118
  "type": "string"
119
119
  },
120
+ "description": {
121
+ "type": "string",
122
+ "description": "Short host-supplied text drawn on the board. Absent or blank draws nothing."
123
+ },
124
+ "documentation": {
125
+ "type": "string",
126
+ "description": "Longer host-supplied text shown with the description on hover or focus. Absent or blank draws nothing."
127
+ },
120
128
  "features": {
121
129
  "type": "array",
122
130
  "items": {
@@ -149,6 +157,14 @@
149
157
  "name": {
150
158
  "type": "string"
151
159
  },
160
+ "description": {
161
+ "type": "string",
162
+ "description": "Short host-supplied text drawn on the board. Absent or blank draws nothing."
163
+ },
164
+ "documentation": {
165
+ "type": "string",
166
+ "description": "Longer host-supplied text shown with the description on hover or focus. Absent or blank draws nothing."
167
+ },
152
168
  "subFeatures": {
153
169
  "type": "array",
154
170
  "items": {
@@ -212,6 +228,10 @@
212
228
  "description": {
213
229
  "type": "string"
214
230
  },
231
+ "documentation": {
232
+ "type": "string",
233
+ "description": "Longer host-supplied text shown with the description on hover or focus. Absent or blank draws nothing."
234
+ },
215
235
  "status": {
216
236
  "type": "integer",
217
237
  "description": "Where the slice is in its workflow. Known values: 0 = notStarted, 1 = draft, 2 = readyForImplementation, 3 = inProgress, 4 = readyForReview, 5 = done, 6 = analysis. Any other integer is drawn as an explicit unknown."
@@ -390,6 +410,14 @@
390
410
  "name": {
391
411
  "type": "string"
392
412
  },
413
+ "description": {
414
+ "type": "string",
415
+ "description": "Short host-supplied text drawn on the board. Absent or blank draws nothing."
416
+ },
417
+ "documentation": {
418
+ "type": "string",
419
+ "description": "Longer host-supplied text shown with the description on hover or focus. Absent or blank draws nothing."
420
+ },
393
421
  "schema": {
394
422
  "$ref": "#/$defs/JsonSchema"
395
423
  },
@@ -485,6 +513,14 @@
485
513
  "name": {
486
514
  "type": "string"
487
515
  },
516
+ "description": {
517
+ "type": "string",
518
+ "description": "Short host-supplied text drawn on the board. Absent or blank draws nothing."
519
+ },
520
+ "documentation": {
521
+ "type": "string",
522
+ "description": "Longer host-supplied text shown with the description on hover or focus. Absent or blank draws nothing."
523
+ },
488
524
  "schema": {
489
525
  "$ref": "#/$defs/JsonSchema"
490
526
  },
@@ -605,6 +641,14 @@
605
641
  "name": {
606
642
  "type": "string"
607
643
  },
644
+ "description": {
645
+ "type": "string",
646
+ "description": "Short host-supplied text drawn on the board. Absent or blank draws nothing."
647
+ },
648
+ "documentation": {
649
+ "type": "string",
650
+ "description": "Longer host-supplied text shown with the description on hover or focus. Absent or blank draws nothing."
651
+ },
608
652
  "schema": {
609
653
  "$ref": "#/$defs/JsonSchema"
610
654
  },
@@ -779,6 +823,14 @@
779
823
  "name": {
780
824
  "type": "string"
781
825
  },
826
+ "description": {
827
+ "type": "string",
828
+ "description": "Short host-supplied text drawn on the board. Absent or blank draws nothing."
829
+ },
830
+ "documentation": {
831
+ "type": "string",
832
+ "description": "Longer host-supplied text shown with the description on hover or focus. Absent or blank draws nothing."
833
+ },
782
834
  "given": {
783
835
  "type": "array",
784
836
  "items": {