@agentiffai/design 1.5.5 → 1.5.6

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.
@@ -211,4 +211,124 @@ interface WorkflowDiscoveryCardProps {
211
211
  }
212
212
  declare const WorkflowDiscoveryCard: React__default.FC<WorkflowDiscoveryCardProps>;
213
213
 
214
- export { type CustomIndicator, type PaidIntegrationInfo, type PopularityInfo, type ProvenanceSource, type SetupRequirement, type SetupRequirementType, type SupportPlacement, type VotesInfo, type VotesPlacement, WorkflowDiscoveryCard, type WorkflowDiscoveryCardProps, type WorkflowDiscoveryIntegration, type WorkflowReadiness };
214
+ /**
215
+ * WorkflowDiscoveryPage — the page-level layout that hosts WorkflowDiscoveryCard instances.
216
+ *
217
+ * Linear: APP-263 — Design subtask: Workflow list search, filters, tags, and voting
218
+ * (note: this PR is the list-integration step that Nick asked for; search/filters/voting
219
+ * themselves are a later piece of APP-263 — we just reserve the slot here)
220
+ *
221
+ * What this file ships:
222
+ * 1. `WorkflowDiscoveryPage` — the page chrome (header, tabs, filter slot, footer slot)
223
+ * 2. `WorkflowDiscoverySection` — a labelled section that lays out cards in a 1/2/3-col grid
224
+ * 3. `WorkflowDiscoveryEmptyState` — empty state body
225
+ * 4. `WorkflowDiscoveryErrorState` — error state body
226
+ * 5. `WorkflowDiscoveryLoadingState` — skeleton state body (matches the new card shape)
227
+ * 6. `WorkflowDiscoveryUpgradeBanner` — the "these need a higher plan" banner for Unavailable tab
228
+ *
229
+ * Layout decisions (settled in Step 2 planning):
230
+ * - Tabs: Available / Unavailable (kept from current app for now; can become filter chips later)
231
+ * - Sections by category (Trending → Social Media → Ops → CRM)
232
+ * - Filter slot reserved above the list for the eventual APP-263 search/filter UI
233
+ * - Responsive grid: 1-col mobile, 2-col tablet, 3-col desktop
234
+ * - Expanded card spans the full row of the section's grid (handled in WorkflowDiscoveryCard via GridCell)
235
+ *
236
+ * The Page itself is "headless" in the sense that the BODY is a children slot — each story
237
+ * decides whether to render sections, an empty state, an error, or a loading skeleton. That
238
+ * makes the chrome reusable across all 5 states without prop-bloat.
239
+ */
240
+
241
+ interface WorkflowDiscoveryPageTab {
242
+ /** Unique tab id, used as the controlled value */
243
+ id: string;
244
+ /** Visible label, e.g. "Available" */
245
+ label: string;
246
+ /** Optional count shown in parentheses */
247
+ count?: number;
248
+ }
249
+ interface WorkflowDiscoveryPageProps {
250
+ /** Page heading text (defaults to "Workflows") */
251
+ title?: string;
252
+ /**
253
+ * Optional subtitle / supporting copy under the title. Keep it short — the
254
+ * cards do the heavy lifting.
255
+ */
256
+ subtitle?: string;
257
+ /** Tabs to render in the segmented control. Pass 0–N tabs. */
258
+ tabs?: WorkflowDiscoveryPageTab[];
259
+ /** Currently selected tab id (controlled) */
260
+ activeTabId?: string;
261
+ /** Called when the user switches tabs */
262
+ onTabChange?: (id: string) => void;
263
+ /**
264
+ * Slot reserved for the eventual APP-263 filters / search bar. Pass any
265
+ * ReactNode and it renders between the header and the body. Pass nothing
266
+ * and the slot is collapsed — no empty space.
267
+ */
268
+ filterSlot?: React__default.ReactNode;
269
+ /**
270
+ * Slot rendered at the bottom of the page, AFTER the body. Used for the
271
+ * "Upgrade your plan" banner on the Unavailable tab.
272
+ */
273
+ footerSlot?: React__default.ReactNode;
274
+ /** Body content — sections, empty state, error state, etc. */
275
+ children?: React__default.ReactNode;
276
+ /** Custom className */
277
+ className?: string;
278
+ }
279
+ interface WorkflowDiscoverySectionProps {
280
+ /** Section label (e.g. "Trending", "Social Media"). Pass undefined for an unlabelled section. */
281
+ label?: string;
282
+ /** Optional count shown next to the label */
283
+ count?: number;
284
+ /**
285
+ * Workflows to render inside this section. Each is rendered as a
286
+ * WorkflowDiscoveryCard inside a responsive grid cell. The expanded card
287
+ * (if any) spans the full grid row.
288
+ */
289
+ workflows: WorkflowDiscoveryCardProps[];
290
+ /** Which card id is currently expanded (controlled) */
291
+ expandedId?: string | null;
292
+ /** Called when a card toggles expansion */
293
+ onToggle?: (id: string, next: boolean) => void;
294
+ }
295
+ interface WorkflowDiscoveryEmptyStateProps {
296
+ /** Headline message */
297
+ title?: string;
298
+ /** Supporting text */
299
+ message?: string;
300
+ /** Optional CTA label */
301
+ ctaLabel?: string;
302
+ /** Optional CTA handler */
303
+ onCta?: () => void;
304
+ }
305
+ interface WorkflowDiscoveryErrorStateProps {
306
+ /** Headline */
307
+ title?: string;
308
+ /** Error message */
309
+ message?: string;
310
+ /** Retry handler */
311
+ onRetry?: () => void;
312
+ }
313
+ interface WorkflowDiscoveryLoadingStateProps {
314
+ /** How many skeleton cards to render (defaults to a sensible count) */
315
+ count?: number;
316
+ }
317
+ interface WorkflowDiscoveryUpgradeBannerProps {
318
+ /** Top line, e.g. "These workflows require a higher plan" */
319
+ title?: string;
320
+ /** Optional supporting copy */
321
+ message?: string;
322
+ /** CTA label */
323
+ ctaLabel?: string;
324
+ /** CTA handler */
325
+ onLearnMore?: () => void;
326
+ }
327
+ declare const WorkflowDiscoveryPage: React__default.FC<WorkflowDiscoveryPageProps>;
328
+ declare const WorkflowDiscoverySection: React__default.FC<WorkflowDiscoverySectionProps>;
329
+ declare const WorkflowDiscoveryEmptyState: React__default.FC<WorkflowDiscoveryEmptyStateProps>;
330
+ declare const WorkflowDiscoveryErrorState: React__default.FC<WorkflowDiscoveryErrorStateProps>;
331
+ declare const WorkflowDiscoveryLoadingState: React__default.FC<WorkflowDiscoveryLoadingStateProps>;
332
+ declare const WorkflowDiscoveryUpgradeBanner: React__default.FC<WorkflowDiscoveryUpgradeBannerProps>;
333
+
334
+ export { type CustomIndicator, type PaidIntegrationInfo, type PopularityInfo, type ProvenanceSource, type SetupRequirement, type SetupRequirementType, type SupportPlacement, type VotesInfo, type VotesPlacement, WorkflowDiscoveryCard, type WorkflowDiscoveryCardProps, WorkflowDiscoveryEmptyState, type WorkflowDiscoveryEmptyStateProps, WorkflowDiscoveryErrorState, type WorkflowDiscoveryErrorStateProps, type WorkflowDiscoveryIntegration, WorkflowDiscoveryLoadingState, type WorkflowDiscoveryLoadingStateProps, WorkflowDiscoveryPage, type WorkflowDiscoveryPageProps, type WorkflowDiscoveryPageTab, WorkflowDiscoverySection, type WorkflowDiscoverySectionProps, WorkflowDiscoveryUpgradeBanner, type WorkflowDiscoveryUpgradeBannerProps, type WorkflowReadiness };
@@ -211,4 +211,124 @@ interface WorkflowDiscoveryCardProps {
211
211
  }
212
212
  declare const WorkflowDiscoveryCard: React__default.FC<WorkflowDiscoveryCardProps>;
213
213
 
214
- export { type CustomIndicator, type PaidIntegrationInfo, type PopularityInfo, type ProvenanceSource, type SetupRequirement, type SetupRequirementType, type SupportPlacement, type VotesInfo, type VotesPlacement, WorkflowDiscoveryCard, type WorkflowDiscoveryCardProps, type WorkflowDiscoveryIntegration, type WorkflowReadiness };
214
+ /**
215
+ * WorkflowDiscoveryPage — the page-level layout that hosts WorkflowDiscoveryCard instances.
216
+ *
217
+ * Linear: APP-263 — Design subtask: Workflow list search, filters, tags, and voting
218
+ * (note: this PR is the list-integration step that Nick asked for; search/filters/voting
219
+ * themselves are a later piece of APP-263 — we just reserve the slot here)
220
+ *
221
+ * What this file ships:
222
+ * 1. `WorkflowDiscoveryPage` — the page chrome (header, tabs, filter slot, footer slot)
223
+ * 2. `WorkflowDiscoverySection` — a labelled section that lays out cards in a 1/2/3-col grid
224
+ * 3. `WorkflowDiscoveryEmptyState` — empty state body
225
+ * 4. `WorkflowDiscoveryErrorState` — error state body
226
+ * 5. `WorkflowDiscoveryLoadingState` — skeleton state body (matches the new card shape)
227
+ * 6. `WorkflowDiscoveryUpgradeBanner` — the "these need a higher plan" banner for Unavailable tab
228
+ *
229
+ * Layout decisions (settled in Step 2 planning):
230
+ * - Tabs: Available / Unavailable (kept from current app for now; can become filter chips later)
231
+ * - Sections by category (Trending → Social Media → Ops → CRM)
232
+ * - Filter slot reserved above the list for the eventual APP-263 search/filter UI
233
+ * - Responsive grid: 1-col mobile, 2-col tablet, 3-col desktop
234
+ * - Expanded card spans the full row of the section's grid (handled in WorkflowDiscoveryCard via GridCell)
235
+ *
236
+ * The Page itself is "headless" in the sense that the BODY is a children slot — each story
237
+ * decides whether to render sections, an empty state, an error, or a loading skeleton. That
238
+ * makes the chrome reusable across all 5 states without prop-bloat.
239
+ */
240
+
241
+ interface WorkflowDiscoveryPageTab {
242
+ /** Unique tab id, used as the controlled value */
243
+ id: string;
244
+ /** Visible label, e.g. "Available" */
245
+ label: string;
246
+ /** Optional count shown in parentheses */
247
+ count?: number;
248
+ }
249
+ interface WorkflowDiscoveryPageProps {
250
+ /** Page heading text (defaults to "Workflows") */
251
+ title?: string;
252
+ /**
253
+ * Optional subtitle / supporting copy under the title. Keep it short — the
254
+ * cards do the heavy lifting.
255
+ */
256
+ subtitle?: string;
257
+ /** Tabs to render in the segmented control. Pass 0–N tabs. */
258
+ tabs?: WorkflowDiscoveryPageTab[];
259
+ /** Currently selected tab id (controlled) */
260
+ activeTabId?: string;
261
+ /** Called when the user switches tabs */
262
+ onTabChange?: (id: string) => void;
263
+ /**
264
+ * Slot reserved for the eventual APP-263 filters / search bar. Pass any
265
+ * ReactNode and it renders between the header and the body. Pass nothing
266
+ * and the slot is collapsed — no empty space.
267
+ */
268
+ filterSlot?: React__default.ReactNode;
269
+ /**
270
+ * Slot rendered at the bottom of the page, AFTER the body. Used for the
271
+ * "Upgrade your plan" banner on the Unavailable tab.
272
+ */
273
+ footerSlot?: React__default.ReactNode;
274
+ /** Body content — sections, empty state, error state, etc. */
275
+ children?: React__default.ReactNode;
276
+ /** Custom className */
277
+ className?: string;
278
+ }
279
+ interface WorkflowDiscoverySectionProps {
280
+ /** Section label (e.g. "Trending", "Social Media"). Pass undefined for an unlabelled section. */
281
+ label?: string;
282
+ /** Optional count shown next to the label */
283
+ count?: number;
284
+ /**
285
+ * Workflows to render inside this section. Each is rendered as a
286
+ * WorkflowDiscoveryCard inside a responsive grid cell. The expanded card
287
+ * (if any) spans the full grid row.
288
+ */
289
+ workflows: WorkflowDiscoveryCardProps[];
290
+ /** Which card id is currently expanded (controlled) */
291
+ expandedId?: string | null;
292
+ /** Called when a card toggles expansion */
293
+ onToggle?: (id: string, next: boolean) => void;
294
+ }
295
+ interface WorkflowDiscoveryEmptyStateProps {
296
+ /** Headline message */
297
+ title?: string;
298
+ /** Supporting text */
299
+ message?: string;
300
+ /** Optional CTA label */
301
+ ctaLabel?: string;
302
+ /** Optional CTA handler */
303
+ onCta?: () => void;
304
+ }
305
+ interface WorkflowDiscoveryErrorStateProps {
306
+ /** Headline */
307
+ title?: string;
308
+ /** Error message */
309
+ message?: string;
310
+ /** Retry handler */
311
+ onRetry?: () => void;
312
+ }
313
+ interface WorkflowDiscoveryLoadingStateProps {
314
+ /** How many skeleton cards to render (defaults to a sensible count) */
315
+ count?: number;
316
+ }
317
+ interface WorkflowDiscoveryUpgradeBannerProps {
318
+ /** Top line, e.g. "These workflows require a higher plan" */
319
+ title?: string;
320
+ /** Optional supporting copy */
321
+ message?: string;
322
+ /** CTA label */
323
+ ctaLabel?: string;
324
+ /** CTA handler */
325
+ onLearnMore?: () => void;
326
+ }
327
+ declare const WorkflowDiscoveryPage: React__default.FC<WorkflowDiscoveryPageProps>;
328
+ declare const WorkflowDiscoverySection: React__default.FC<WorkflowDiscoverySectionProps>;
329
+ declare const WorkflowDiscoveryEmptyState: React__default.FC<WorkflowDiscoveryEmptyStateProps>;
330
+ declare const WorkflowDiscoveryErrorState: React__default.FC<WorkflowDiscoveryErrorStateProps>;
331
+ declare const WorkflowDiscoveryLoadingState: React__default.FC<WorkflowDiscoveryLoadingStateProps>;
332
+ declare const WorkflowDiscoveryUpgradeBanner: React__default.FC<WorkflowDiscoveryUpgradeBannerProps>;
333
+
334
+ export { type CustomIndicator, type PaidIntegrationInfo, type PopularityInfo, type ProvenanceSource, type SetupRequirement, type SetupRequirementType, type SupportPlacement, type VotesInfo, type VotesPlacement, WorkflowDiscoveryCard, type WorkflowDiscoveryCardProps, WorkflowDiscoveryEmptyState, type WorkflowDiscoveryEmptyStateProps, WorkflowDiscoveryErrorState, type WorkflowDiscoveryErrorStateProps, type WorkflowDiscoveryIntegration, WorkflowDiscoveryLoadingState, type WorkflowDiscoveryLoadingStateProps, WorkflowDiscoveryPage, type WorkflowDiscoveryPageProps, type WorkflowDiscoveryPageTab, WorkflowDiscoverySection, type WorkflowDiscoverySectionProps, WorkflowDiscoveryUpgradeBanner, type WorkflowDiscoveryUpgradeBannerProps, type WorkflowReadiness };