@cat-factory/integrations 0.134.1 → 0.135.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,5 +1,5 @@
1
1
  import type { DocumentSourceDescriptor } from '@cat-factory/kernel';
2
- import { type DesignBlock, type DesignComponent, type DesignContext, type DesignToken } from './design.logic.js';
2
+ import { type DesignBlock, type DesignComponent, type DesignContext, type DesignToken, type DesignTokenOrigin } from './design.logic.js';
3
3
  /** Figma's REST API host. The PAT is sent to this host only — see {@link assertSafeFigmaUrl}. */
4
4
  export declare const FIGMA_API_HOST = "api.figma.com";
5
5
  /** What the connect UI renders, and which credentials the provider needs. */
@@ -45,7 +45,33 @@ export declare function splitFigmaExternalId(externalId: string): {
45
45
  * stored URL matches the kind of link a teammate pastes into a task description.
46
46
  */
47
47
  export declare function figmaUrlFor(externalId: string): string;
48
- /** The subset of a Figma node we read for the layout/text/component rendering. */
48
+ /** A Figma paint (a fill or a stroke). Only a SOLID paint carries a colour we can name. */
49
+ export interface FigmaPaint {
50
+ type?: string;
51
+ visible?: boolean;
52
+ opacity?: number;
53
+ color?: {
54
+ r?: number;
55
+ g?: number;
56
+ b?: number;
57
+ a?: number;
58
+ } | null;
59
+ }
60
+ /** The `style` block Figma puts on a TEXT node: the typography facts we render. */
61
+ export interface FigmaTypeStyle {
62
+ fontFamily?: string;
63
+ fontWeight?: number;
64
+ fontSize?: number;
65
+ lineHeightPx?: number;
66
+ }
67
+ /** A component instance's property assignments (`{ 'Size#1:0': { value, type } }`). */
68
+ export interface FigmaComponentProperties {
69
+ [name: string]: {
70
+ value?: unknown;
71
+ type?: string;
72
+ } | undefined;
73
+ }
74
+ /** The subset of a Figma node we read for the layout/text/component/styling rendering. */
49
75
  export interface FigmaNode {
50
76
  id?: string;
51
77
  name?: string;
@@ -57,22 +83,105 @@ export interface FigmaNode {
57
83
  height?: number;
58
84
  } | null;
59
85
  children?: FigmaNode[];
86
+ fills?: FigmaPaint[];
87
+ strokes?: FigmaPaint[];
88
+ style?: FigmaTypeStyle;
89
+ cornerRadius?: number;
90
+ rectangleCornerRadii?: number[];
91
+ layoutMode?: string;
92
+ itemSpacing?: number;
93
+ paddingTop?: number;
94
+ paddingRight?: number;
95
+ paddingBottom?: number;
96
+ paddingLeft?: number;
97
+ /** Published-style ids by role (`fill`, `text`, `stroke`, `effect`, `grid`). */
98
+ styles?: Record<string, string | undefined>;
99
+ componentProperties?: FigmaComponentProperties;
60
100
  }
61
101
  /** A `componentId → { name }` map (Figma returns it alongside the node tree). */
62
102
  export interface FigmaComponentMap {
63
103
  [id: string]: {
64
104
  name?: string;
105
+ description?: string;
106
+ componentSetId?: string;
65
107
  } | undefined;
66
108
  }
109
+ /** A `componentSetId → { name }` map: the identity a variant's own name does not carry. */
110
+ export interface FigmaComponentSetMap {
111
+ [id: string]: {
112
+ name?: string;
113
+ description?: string;
114
+ } | undefined;
115
+ }
116
+ /** The file/nodes response `styles` map: a published style id → its metadata. */
117
+ export interface FigmaStyleMap {
118
+ [id: string]: {
119
+ name?: string;
120
+ styleType?: string;
121
+ description?: string;
122
+ } | undefined;
123
+ }
124
+ /**
125
+ * Levels of descendants rendered below a frame's own children. Exported because the provider
126
+ * derives the API `depth=` it requests from it: the two must not drift, or the tree is cut by
127
+ * the fetch at a depth the renderer never states.
128
+ */
129
+ export declare const MAX_TREE_DEPTH = 6;
130
+ /** Top-level frames a whole-file import fetches as subtrees. */
131
+ export declare const MAX_FILE_FRAMES = 12;
132
+ /** Figma's 0–1 colour channels → `#rrggbb`, with an alpha qualifier below full opacity. */
133
+ export declare function figmaColorHex(color: {
134
+ r?: number;
135
+ g?: number;
136
+ b?: number;
137
+ a?: number;
138
+ } | null | undefined, paintOpacity?: number): string | null;
139
+ /**
140
+ * The styling clause appended to a node's layout line. Everything here is a fact the agent
141
+ * would otherwise invent: the colour, the type ramp, the radius, and the auto-layout that
142
+ * decides whether the implementation is a flex row or a stack.
143
+ */
144
+ export declare function figmaStylingFacts(node: FigmaNode): string[];
145
+ /** The blocks a set of frames renders to, plus the caps that cut them. */
146
+ export interface FigmaBlocksResult {
147
+ blocks: DesignBlock[];
148
+ /** Coverage notes for the caps that actually bit; empty when nothing was dropped. */
149
+ notes: string[];
150
+ }
67
151
  /**
68
152
  * Map the fetched Figma frames into the source-neutral {@link DesignBlock}s: one block
69
153
  * per frame, with a `Layout` bullet tree and the frame's `Text content`. The
70
154
  * design-system components are collected separately ({@link figmaComponents}) into the
71
155
  * shared global `### Components` section rather than per-frame.
72
156
  */
73
- export declare function figmaBlocks(roots: FigmaNode[]): DesignBlock[];
74
- /** Collect the distinct design-system components instantiated across the frames. */
75
- export declare function figmaComponents(roots: FigmaNode[], components?: FigmaComponentMap): DesignComponent[];
157
+ export declare function figmaBlocks(roots: FigmaNode[]): FigmaBlocksResult;
158
+ /**
159
+ * The top-level frames of a whole file, in document order: the page children a
160
+ * {@link figmaBlocks} block is rendered from. The whole-file file read is shallow (it
161
+ * returns these with no grandchildren), so the caller fetches their subtrees separately.
162
+ */
163
+ export declare function figmaTopLevelFrames(document: FigmaNode | undefined): FigmaNode[];
164
+ /**
165
+ * How many importable frames each page contributes, in the same document order
166
+ * {@link figmaTopLevelFrames} flattens. The frame cap counts frames, so on its own it cannot
167
+ * say whether it stopped mid-page or dropped a whole page of the design: this is what lets the
168
+ * cap note name the pages, which is the difference between "some frames are missing" and "you
169
+ * imported none of page 2".
170
+ */
171
+ export declare function figmaPageSummary(document: FigmaNode | undefined): {
172
+ name: string;
173
+ frames: number;
174
+ }[];
175
+ /**
176
+ * Collect the distinct design-system components instantiated across the frames, each with
177
+ * the variants and properties the design actually uses. That signal is what lets an agent
178
+ * match "reuse the existing component" against a repo component rather than a bare name.
179
+ *
180
+ * Ordered by instance count (ties by name, so the result is deterministic) because that order
181
+ * is what the component cap slices: the components the design leans on survive it. The
182
+ * renderer sorts alphabetically for display, so the order here is a RANKING, not a layout.
183
+ */
184
+ export declare function figmaComponents(roots: FigmaNode[], components?: FigmaComponentMap, componentSets?: FigmaComponentSetMap): DesignComponent[];
76
185
  interface FigmaVariable {
77
186
  name?: string;
78
187
  resolvedType?: string;
@@ -97,6 +206,27 @@ export interface FigmaVariablesMeta {
97
206
  * shared renderer drops the `### Design tokens` section entirely.
98
207
  */
99
208
  export declare function figmaTokens(meta: FigmaVariablesMeta | undefined | null): DesignToken[];
209
+ /**
210
+ * Derive tokens from the file's PUBLISHED STYLES, the token source every Figma plan
211
+ * serves: the `styles` map names each published style and the nodes referencing one carry
212
+ * the concrete value, so the join produces `name = value` without the Enterprise-gated
213
+ * variables API. Deliberately NOT merged with {@link figmaTokens}: the two are different
214
+ * sources with different coverage, and a merged section could not say which one it came
215
+ * from.
216
+ */
217
+ export declare function figmaStyleTokens(roots: FigmaNode[], styles?: FigmaStyleMap): DesignToken[];
218
+ /** Whether the Enterprise-gated variables read succeeded, was plan-gated, or failed. */
219
+ export type FigmaVariablesStatus = 'ok' | 'gated' | 'failed';
220
+ /**
221
+ * State which token path produced the section. A 403 from the variables API is a PLAN
222
+ * GATE, not an error, and neither of those reads the same as a design that simply defines
223
+ * no tokens, so the three cases must not collapse into one silent omission.
224
+ */
225
+ export declare function figmaTokenOrigin(input: {
226
+ status: FigmaVariablesStatus;
227
+ variableTokens: number;
228
+ styleTokens: number;
229
+ }): DesignTokenOrigin | undefined;
100
230
  export interface FigmaContextInput {
101
231
  /** The composite external id (`<fileKey>` or `<fileKey>:<nodeId>`). */
102
232
  externalId: string;
@@ -108,10 +238,18 @@ export interface FigmaContextInput {
108
238
  roots: FigmaNode[];
109
239
  /** The `componentId → { name }` map returned alongside the nodes. */
110
240
  components: FigmaComponentMap;
241
+ /** The `componentSetId → { name }` map: a variant's real identity. */
242
+ componentSets?: FigmaComponentSetMap;
243
+ /** The file's published styles, the plan-independent token source. */
244
+ styles?: FigmaStyleMap;
111
245
  /** Local-variables payload, or null when the plan doesn't expose it. */
112
246
  variablesMeta?: FigmaVariablesMeta | null;
247
+ /** Whether the variables read succeeded, was plan-gated, or failed. */
248
+ variablesStatus?: FigmaVariablesStatus;
113
249
  /** Best-effort short-lived rendered-preview URL, or null. */
114
250
  previewUrl?: string | null;
251
+ /** Coverage caveats the fetch itself produced (dropped frames, a failed subtree read). */
252
+ fetchNotes?: string[];
115
253
  }
116
254
  /** Assemble the fetched Figma pieces into the shared {@link DesignContext}. */
117
255
  export declare function buildFigmaDesignContext(input: FigmaContextInput): DesignContext;
@@ -1 +1 @@
1
- {"version":3,"file":"figma.logic.d.ts","sourceRoot":"","sources":["../../../src/modules/documents/figma.logic.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"figma.logic.d.ts","sourceRoot":"","sources":["../../../src/modules/documents/figma.logic.ts"],"names":[],"mappings":"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"}