@fluentcommerce/ai-skills 0.1.0 → 0.3.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.
Potentially problematic release.
This version of @fluentcommerce/ai-skills might be problematic. Click here for more details.
- package/README.md +866 -622
- package/bin/cli.mjs +2112 -1973
- package/content/cli/agents/fluent-cli/agent.json +149 -149
- package/content/cli/agents/fluent-cli.md +132 -132
- package/content/cli/skills/fluent-bootstrap/SKILL.md +214 -181
- package/content/cli/skills/fluent-cli-index/SKILL.md +1 -1
- package/content/cli/skills/fluent-cli-mcp-cicd/SKILL.md +117 -1
- package/content/cli/skills/fluent-cli-reference/SKILL.md +1040 -1031
- package/content/cli/skills/fluent-cli-retailer/SKILL.md +27 -2
- package/content/cli/skills/fluent-cli-settings/SKILL.md +21 -1
- package/content/cli/skills/fluent-connect/SKILL.md +937 -886
- package/content/cli/skills/fluent-module-deploy/SKILL.md +63 -5
- package/content/cli/skills/fluent-profile/SKILL.md +73 -0
- package/content/cli/skills/fluent-workflow/SKILL.md +360 -310
- package/content/dev/agents/fluent-backend-dev/AGENT.md +58 -0
- package/content/dev/agents/fluent-backend-dev/agent.json +69 -0
- package/content/dev/agents/fluent-backend-dev.md +287 -0
- package/content/dev/agents/fluent-dev/AGENT.md +98 -0
- package/content/dev/agents/fluent-dev/agent.json +14 -2
- package/content/dev/agents/fluent-dev.md +194 -525
- package/content/dev/agents/fluent-frontend-dev/AGENT.md +63 -0
- package/content/dev/agents/fluent-frontend-dev/agent.json +52 -0
- package/content/dev/agents/fluent-frontend-dev.md +323 -0
- package/content/dev/skills/fluent-archive/SKILL.md +234 -0
- package/content/dev/skills/fluent-build/SKILL.md +312 -192
- package/content/dev/skills/fluent-connection-analysis/SKILL.md +422 -386
- package/content/dev/skills/fluent-custom-code/SKILL.md +15 -9
- package/content/dev/skills/fluent-data-module-scaffold/SKILL.md +19 -2
- package/content/dev/skills/fluent-e2e-test/SKILL.md +501 -394
- package/content/dev/skills/fluent-event-api/SKILL.md +962 -945
- package/content/dev/skills/fluent-feature-explain/SKILL.md +680 -603
- package/content/dev/skills/fluent-feature-plan/PLAN_TEMPLATE.md +27 -2
- package/content/dev/skills/fluent-feature-plan/SKILL.md +478 -227
- package/content/dev/skills/fluent-feature-status/SKILL.md +335 -0
- package/content/dev/skills/fluent-feedback/SKILL.md +221 -0
- package/content/dev/skills/fluent-implementation-map/SKILL.md +644 -0
- package/content/dev/skills/fluent-job-batch/SKILL.md +10 -0
- package/content/dev/skills/fluent-module-scaffold/SKILL.md +64 -2
- package/content/dev/skills/fluent-module-validate/SKILL.md +778 -775
- package/content/dev/skills/fluent-mystique-analyze/SKILL.md +817 -0
- package/content/dev/skills/fluent-mystique-builder/COMPONENT_TEMPLATE.md +81 -0
- package/content/dev/skills/fluent-mystique-builder/README.md +63 -0
- package/content/dev/skills/fluent-mystique-builder/SKILL.md +1294 -0
- package/content/dev/skills/fluent-mystique-builder/components/INDEX.md +92 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.accordion.md +48 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.action.field.fulfilmentpack.md +20 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.action.field.multiparcel.md +21 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.action.field.returnitems.md +21 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.action.field.wavepick.md +21 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.action.inline.md +24 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.activity.entity.md +25 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.analytics.viz.md +20 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.attribute.column.md +111 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.attribute.json.md +20 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.attribute.jsoneditor.md +54 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.attribute.locationId.md +51 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.attribute.retailerId.md +52 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.button.bar.md +57 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.button.print.download.md +53 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.button.print.inline.compatibility.md +60 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.button.print.inline.md +53 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.button.print.md +24 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.button.print.pick.md +61 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.buttons.add.reject.md +20 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.card.attribute.md +73 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.card.attributes.grid.md +40 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.card.image.md +37 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.card.map.point.md +24 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.card.multi.md +79 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.card.product.md +27 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.chart.area.md +34 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.chart.area.wrapper.feed.md +98 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.chart.bar.md +52 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.chart.bar.wrapper.source.md +104 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.chart.gauge.md +28 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.chart.gauge.wrapper.threshold.md +118 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.chart.line.md +32 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.conditional.md +62 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.dashboard.threshold.md +65 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.daterange.wrapper.forwarder.md +56 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.drawer.button.md +21 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.event.detail.md +20 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.events.search.md +21 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.field.daterange.md +83 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.field.filterComplex.md +106 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.field.intrange.md +82 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.field.multistring.md +50 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.filterPanel.md +53 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.json.editor.md +22 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.json.viewer.md +21 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.list.customAction.md +79 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.list.md +116 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.list.wrapper.bppmetrics.md +69 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.list.wrapper.feed.md +65 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.list.wrapper.source.md +64 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.modal.button.addItem.md +60 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.modal.button.md +21 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.mutation.inline.md +88 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.mystique.collapsible.attributes.md +83 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.mystique.collapsible.text.md +33 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.mystique.link.md +30 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.order.itemDetails.md +20 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.order.shipmentDetails.md +20 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.page.filter.select.md +87 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.page.md +64 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.page.refresh.md +48 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.page.section.column.md +71 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.page.section.header.md +61 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.page.section.md +59 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.page.wizard.md +45 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.page.wizard.summary.md +56 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.progress.circular.md +20 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.provider.graphql.md +71 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.quantity.list.md +87 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.repeater.md +56 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.reports.ipuipc.md +54 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.return.rowExpansion.md +19 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.scanner.barcode.md +21 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.scanner.barcodeFilter.md +72 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.scanner.camera.md +20 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.settingForm.md +64 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.sourcing.profile.drawer.button.md +19 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.sourcing.profile.modal.button.md +64 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.sourcing.strategy.modal.button.md +20 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.stepper.md +20 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.tab.content.md +56 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.tabs.card.md +64 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.tabs.md +69 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.tile.metric.md +73 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.workflow.provider.md +77 -0
- package/content/dev/skills/fluent-mystique-builder/validate-docs.ps1 +260 -0
- package/content/dev/skills/fluent-mystique-scaffold/SKILL.md +1830 -0
- package/content/dev/skills/fluent-mystique-validate/SKILL.md +646 -0
- package/content/dev/skills/fluent-pre-deploy-check/SKILL.md +1144 -1108
- package/content/dev/skills/fluent-retailer-config/SKILL.md +1162 -1111
- package/content/dev/skills/fluent-rollback/SKILL.md +387 -0
- package/content/dev/skills/fluent-rule-scaffold/SKILL.md +515 -385
- package/content/dev/skills/fluent-scope-decompose/SKILL.md +1123 -1021
- package/content/dev/skills/fluent-session-audit-export/SKILL.md +880 -632
- package/content/dev/skills/fluent-session-summary/SKILL.md +320 -195
- package/content/dev/skills/fluent-settings/SKILL.md +160 -1
- package/content/dev/skills/fluent-source-onboard/SKILL.md +31 -3
- package/content/dev/skills/fluent-sourcing/SKILL.md +1185 -0
- package/content/dev/skills/fluent-system-monitoring/SKILL.md +771 -767
- package/content/dev/skills/fluent-test-data/SKILL.md +514 -513
- package/content/dev/skills/fluent-trace/SKILL.md +1169 -1143
- package/content/dev/skills/fluent-transition-api/SKILL.md +364 -346
- package/content/dev/skills/fluent-use-case-discover/SKILL.md +593 -0
- package/content/dev/skills/fluent-use-case-discover/SPEC_TEMPLATE.md +281 -0
- package/content/dev/skills/fluent-version-manage/SKILL.md +53 -2
- package/content/dev/skills/fluent-workflow-analyzer/SKILL.md +995 -959
- package/content/dev/skills/fluent-workflow-builder/SKILL.md +668 -319
- package/content/dev/skills/fluent-workflow-deploy/SKILL.md +480 -267
- package/content/dev/skills/fluent-workspace-tree/SKILL.md +281 -0
- package/content/mcp-extn/agents/fluent-mcp.md +133 -69
- package/content/mcp-extn/skills/fluent-mcp-tools/SKILL.md +812 -461
- package/content/mcp-official/agents/fluent-mcp-core.md +91 -91
- package/content/mcp-official/skills/fluent-mcp-core/SKILL.md +94 -94
- package/content/rfl/skills/fluent-rfl-assess/SKILL.md +172 -172
- package/docs/CAPABILITY_MAP.md +106 -77
- package/docs/DEPLOYMENT_PROMOTION_RUNBOOK.md +218 -0
- package/docs/DESIGN-implementation-map.md +698 -0
- package/docs/DEV_WORKFLOW.md +814 -802
- package/docs/FLOW_RUN.md +142 -142
- package/docs/GETTING_STARTED.md +427 -0
- package/docs/USE_CASES.md +909 -52
- package/metadata.json +184 -156
- package/package.json +3 -2
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
---
|
|
2
|
+
alias: "fc.list.wrapper.bppmetrics"
|
|
3
|
+
aliases:
|
|
4
|
+
- fc.list.wrapper.bppmetrics
|
|
5
|
+
category: wrapper
|
|
6
|
+
module: Core
|
|
7
|
+
---
|
|
8
|
+
# fc.list.wrapper.bppmetrics
|
|
9
|
+
|
|
10
|
+
List wrapper that transforms Metrics API batch-processing data into a format readable by the `fc.list` component, used for BPP (Batch Processing Pipeline) metrics dashboards.
|
|
11
|
+
|
|
12
|
+
## When to Use
|
|
13
|
+
- Displaying batch-processing pipeline metrics in a tabular list
|
|
14
|
+
- BPP Metrics Dashboard pages
|
|
15
|
+
- Any page that needs to render Metrics API batch data in an `fc.list` table
|
|
16
|
+
|
|
17
|
+
## Key Props
|
|
18
|
+
| Prop | Type | Required | What it controls |
|
|
19
|
+
|------|------|----------|------------------|
|
|
20
|
+
| `rowLimit` | number | No | Maximum number of rows displayed in the table (default: `100`) |
|
|
21
|
+
| `hideEmptyRecords` | boolean | No | When `true`, hides rows where all cells except the date column are empty |
|
|
22
|
+
|
|
23
|
+
## Data Binding
|
|
24
|
+
Transforms Metrics API batch-processing response data into the row/column format expected by `fc.list`. The page-level `data.query` should point to a Metrics API BPP endpoint.
|
|
25
|
+
|
|
26
|
+
## Descendants
|
|
27
|
+
Yes -- accepts `fc.list` (or other list-compatible components) as children. The wrapper feeds transformed data into its descendants.
|
|
28
|
+
|
|
29
|
+
## Composition Patterns
|
|
30
|
+
- `fc.page` > `fc.list.wrapper.bppmetrics` > `fc.list` for a BPP metrics table
|
|
31
|
+
- Combine with gauge or bar chart wrappers for a full BPP dashboard
|
|
32
|
+
- Use `hideEmptyRecords: true` with `rowLimit` to focus on active processing periods
|
|
33
|
+
|
|
34
|
+
## Gotchas
|
|
35
|
+
- Only transforms Metrics API BPP data -- will not work with standard GraphQL entity queries
|
|
36
|
+
- Must wrap an `fc.list` descendant to be useful -- the wrapper itself renders nothing visible
|
|
37
|
+
- `rowLimit` defaults to 100 -- set explicitly for pages with large datasets
|
|
38
|
+
- `hideEmptyRecords` only affects rows where non-date columns are all empty
|
|
39
|
+
|
|
40
|
+
## Manifest Example
|
|
41
|
+
```json
|
|
42
|
+
{
|
|
43
|
+
"component": "fc.list.wrapper.bppmetrics",
|
|
44
|
+
"props": {
|
|
45
|
+
"rowLimit": 50,
|
|
46
|
+
"hideEmptyRecords": true
|
|
47
|
+
},
|
|
48
|
+
"descendants": [
|
|
49
|
+
{
|
|
50
|
+
"component": "fc.list",
|
|
51
|
+
"props": {
|
|
52
|
+
"dataSource": "bppMetrics",
|
|
53
|
+
"attributes": [
|
|
54
|
+
{ "label": "Date", "value": "{{node.date}}" },
|
|
55
|
+
{ "label": "Processed", "value": "{{node.processed}}" },
|
|
56
|
+
{ "label": "Failed", "value": "{{node.failed}}" },
|
|
57
|
+
{ "label": "Pending", "value": "{{node.pending}}" }
|
|
58
|
+
]
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
]
|
|
62
|
+
}
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## AI Parse Notes
|
|
66
|
+
- **Primary intent:** Declarative Mystique component definition for manifests.
|
|
67
|
+
- **Selection signals:** Match by `alias`, category, and required `Key Props`.
|
|
68
|
+
- **Assembly hints:** Combine with compatible parent/child components listed in `Composition Patterns`.
|
|
69
|
+
- **Safety checks:** Validate required props and data bindings before manifest generation.
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
---
|
|
2
|
+
alias: "fc.list.wrapper.feed"
|
|
3
|
+
aliases:
|
|
4
|
+
- fc.list.wrapper.feed
|
|
5
|
+
category: wrapper
|
|
6
|
+
module: Core
|
|
7
|
+
---
|
|
8
|
+
# fc.list.wrapper.feed
|
|
9
|
+
|
|
10
|
+
List wrapper that converts Metrics API feed data into a format readable by the `fc.list` component, used for Feeds Dashboard displays.
|
|
11
|
+
|
|
12
|
+
## When to Use
|
|
13
|
+
- Displaying inventory feed metrics in a tabular list
|
|
14
|
+
- Any page that needs to render Metrics API feed data in an `fc.list` table
|
|
15
|
+
- Feeds Dashboard in the Big Inventory web app
|
|
16
|
+
|
|
17
|
+
## Key Props
|
|
18
|
+
| Prop | Type | Required | What it controls |
|
|
19
|
+
|------|------|----------|------------------|
|
|
20
|
+
|
|
21
|
+
No component-specific configuration properties. Uses standard `dataSource` and `descendants` configuration.
|
|
22
|
+
|
|
23
|
+
## Data Binding
|
|
24
|
+
Transforms Metrics API feed response data into the row/column format expected by `fc.list`. The page-level `data.query` should point to a Metrics API feed endpoint. This wrapper handles the data shape conversion automatically.
|
|
25
|
+
|
|
26
|
+
## Descendants
|
|
27
|
+
Yes -- accepts `fc.list` (or other list-compatible components) as children. The wrapper feeds transformed data into its descendants.
|
|
28
|
+
|
|
29
|
+
## Composition Patterns
|
|
30
|
+
- `fc.page` > `fc.list.wrapper.feed` > `fc.list` for a feeds metrics table
|
|
31
|
+
- Often paired with `fc.chart.area.wrapper.feed` on the same dashboard page
|
|
32
|
+
- Combine with `fc.daterange.wrapper.forwarder` for time-filtered feed data
|
|
33
|
+
|
|
34
|
+
## Gotchas
|
|
35
|
+
- Only transforms Metrics API feed data -- will not work with standard GraphQL entity queries
|
|
36
|
+
- Must wrap an `fc.list` descendant to be useful -- the wrapper itself renders nothing visible
|
|
37
|
+
- Designed specifically for the Feeds Dashboard use case in Fluent Big Inventory
|
|
38
|
+
- Similar to `fc.list.wrapper.source` but for feed data (different Metrics API shape)
|
|
39
|
+
|
|
40
|
+
## Manifest Example
|
|
41
|
+
```json
|
|
42
|
+
{
|
|
43
|
+
"component": "fc.list.wrapper.feed",
|
|
44
|
+
"descendants": [
|
|
45
|
+
{
|
|
46
|
+
"component": "fc.list",
|
|
47
|
+
"props": {
|
|
48
|
+
"dataSource": "feedMetrics",
|
|
49
|
+
"attributes": [
|
|
50
|
+
{ "label": "Feed", "value": "{{node.name}}" },
|
|
51
|
+
{ "label": "Total", "value": "{{node.total}}" },
|
|
52
|
+
{ "label": "Success", "value": "{{node.success}}" },
|
|
53
|
+
{ "label": "Failed", "value": "{{node.failed}}" }
|
|
54
|
+
]
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
]
|
|
58
|
+
}
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## AI Parse Notes
|
|
62
|
+
- **Primary intent:** Declarative Mystique component definition for manifests.
|
|
63
|
+
- **Selection signals:** Match by `alias`, category, and required `Key Props`.
|
|
64
|
+
- **Assembly hints:** Combine with compatible parent/child components listed in `Composition Patterns`.
|
|
65
|
+
- **Safety checks:** Validate required props and data bindings before manifest generation.
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
---
|
|
2
|
+
alias: "fc.list.wrapper.source"
|
|
3
|
+
aliases:
|
|
4
|
+
- fc.list.wrapper.source
|
|
5
|
+
category: wrapper
|
|
6
|
+
module: Core
|
|
7
|
+
---
|
|
8
|
+
# fc.list.wrapper.source
|
|
9
|
+
|
|
10
|
+
List wrapper that converts Metrics API data into a format readable by the `fc.list` component, used for Sources Dashboard displays.
|
|
11
|
+
|
|
12
|
+
## When to Use
|
|
13
|
+
- Displaying inventory source metrics in a tabular list
|
|
14
|
+
- Any page that needs to render Metrics API data in an `fc.list` table
|
|
15
|
+
- Sources Dashboard in the Big Inventory web app
|
|
16
|
+
|
|
17
|
+
## Key Props
|
|
18
|
+
| Prop | Type | Required | What it controls |
|
|
19
|
+
|------|------|----------|------------------|
|
|
20
|
+
|
|
21
|
+
No component-specific configuration properties. Uses standard `dataSource` and `descendants` configuration.
|
|
22
|
+
|
|
23
|
+
## Data Binding
|
|
24
|
+
Transforms Metrics API response data into the row/column format expected by `fc.list`. The page-level `data.query` should point to a Metrics API endpoint. This wrapper handles the data shape conversion automatically.
|
|
25
|
+
|
|
26
|
+
## Descendants
|
|
27
|
+
Yes -- accepts `fc.list` (or other list-compatible components) as children. The wrapper feeds transformed data into its descendants.
|
|
28
|
+
|
|
29
|
+
## Composition Patterns
|
|
30
|
+
- `fc.page` > `fc.list.wrapper.source` > `fc.list` for a sources metrics table
|
|
31
|
+
- Often paired with `fc.chart.bar.wrapper.source` on the same dashboard page
|
|
32
|
+
- Combine with `fc.daterange.wrapper.forwarder` for time-filtered source data
|
|
33
|
+
|
|
34
|
+
## Gotchas
|
|
35
|
+
- Only transforms Metrics API data -- will not work with standard GraphQL entity queries
|
|
36
|
+
- Must wrap an `fc.list` descendant to be useful -- the wrapper itself renders nothing visible
|
|
37
|
+
- Designed specifically for the Sources Dashboard use case in Fluent Big Inventory
|
|
38
|
+
|
|
39
|
+
## Manifest Example
|
|
40
|
+
```json
|
|
41
|
+
{
|
|
42
|
+
"component": "fc.list.wrapper.source",
|
|
43
|
+
"descendants": [
|
|
44
|
+
{
|
|
45
|
+
"component": "fc.list",
|
|
46
|
+
"props": {
|
|
47
|
+
"dataSource": "sourceMetrics",
|
|
48
|
+
"attributes": [
|
|
49
|
+
{ "label": "Source", "value": "{{node.name}}" },
|
|
50
|
+
{ "label": "Total", "value": "{{node.total}}" },
|
|
51
|
+
{ "label": "Success", "value": "{{node.success}}" },
|
|
52
|
+
{ "label": "Failed", "value": "{{node.failed}}" }
|
|
53
|
+
]
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
]
|
|
57
|
+
}
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## AI Parse Notes
|
|
61
|
+
- **Primary intent:** Declarative Mystique component definition for manifests.
|
|
62
|
+
- **Selection signals:** Match by `alias`, category, and required `Key Props`.
|
|
63
|
+
- **Assembly hints:** Combine with compatible parent/child components listed in `Composition Patterns`.
|
|
64
|
+
- **Safety checks:** Validate required props and data bindings before manifest generation.
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
---
|
|
2
|
+
alias: "fc.modal.button.addItem"
|
|
3
|
+
aliases:
|
|
4
|
+
- fc.modal.button.addItem
|
|
5
|
+
category: action
|
|
6
|
+
module: OMS
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# fc.modal.button.addItem
|
|
10
|
+
|
|
11
|
+
Add-item button used inside product search modals for order revision. Renders as an icon button (+) that calls an `onAddItem` callback with the current row's data.
|
|
12
|
+
|
|
13
|
+
## When to Use
|
|
14
|
+
- Inside a product search list within an order revision modal
|
|
15
|
+
- As an action column in a product search `fc.list` to add items to an order
|
|
16
|
+
- Part of the OMS order revision workflow
|
|
17
|
+
|
|
18
|
+
## Key Props
|
|
19
|
+
| Prop | Type | Required | What it controls |
|
|
20
|
+
|------|------|----------|------------------|
|
|
21
|
+
| `onAddItem` | `(item: any) => void` | Yes | Callback function invoked with the selected product's node data when the button is clicked |
|
|
22
|
+
|
|
23
|
+
## Data Binding
|
|
24
|
+
Reads the current row's data from the `useData()` hook (`context.data.node`). When clicked, passes the entire node object to the `onAddItem` callback.
|
|
25
|
+
|
|
26
|
+
## Descendants
|
|
27
|
+
No -- renders a single `IconButton` with a `+` icon.
|
|
28
|
+
|
|
29
|
+
## Composition Patterns
|
|
30
|
+
- Used internally by the OMS `ProductSearchModal` component
|
|
31
|
+
- Injected as a column in the product search list: `type: "component"` > `fc.modal.button.addItem`
|
|
32
|
+
- The `onAddItem` callback is typically wired to the order revision logic to add the selected product
|
|
33
|
+
|
|
34
|
+
## Gotchas
|
|
35
|
+
- This is an OMS module component -- requires the OMS plugin to be loaded.
|
|
36
|
+
- The `onAddItem` prop is a function reference, not a manifest-configurable string. It is typically injected programmatically by `ProductSearchModal`, not directly in manifest JSON.
|
|
37
|
+
- Reads from `useData().context.data.node` which means it must be inside a list row context where `node` is the current item.
|
|
38
|
+
- Renders as a small icon button with `GoPlus` icon -- not a full-size button.
|
|
39
|
+
- Registered with category `content` in the OMS component registry.
|
|
40
|
+
|
|
41
|
+
## Manifest Example
|
|
42
|
+
```json
|
|
43
|
+
{
|
|
44
|
+
"label": "",
|
|
45
|
+
"type": "component",
|
|
46
|
+
"align": "right",
|
|
47
|
+
"options": {
|
|
48
|
+
"component": "fc.modal.button.addItem",
|
|
49
|
+
"props": {
|
|
50
|
+
"onAddItem": "handleAddItem"
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## AI Parse Notes
|
|
57
|
+
- **Primary intent:** Declarative Mystique component definition for manifests.
|
|
58
|
+
- **Selection signals:** Match by `alias`, category, and required `Key Props`.
|
|
59
|
+
- **Assembly hints:** Combine with compatible parent/child components listed in `Composition Patterns`.
|
|
60
|
+
- **Safety checks:** Validate required props and data bindings before manifest generation.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
---
|
|
2
|
+
alias: "fc.modal.button"
|
|
3
|
+
aliases:
|
|
4
|
+
- fc.modal.button
|
|
5
|
+
category: action
|
|
6
|
+
module: Core
|
|
7
|
+
---
|
|
8
|
+
# fc.modal.button
|
|
9
|
+
|
|
10
|
+
Button that opens a modal dialog. Can execute a GraphQL query and display results in the modal.
|
|
11
|
+
|
|
12
|
+
## When to Use
|
|
13
|
+
- Show detail information in a popup
|
|
14
|
+
- Confirmation dialogs
|
|
15
|
+
- Secondary data display without page navigation
|
|
16
|
+
|
|
17
|
+
## AI Parse Notes
|
|
18
|
+
- **Primary intent:** Declarative Mystique component definition for manifests.
|
|
19
|
+
- **Selection signals:** Match by `alias`, category, and required `Key Props`.
|
|
20
|
+
- **Assembly hints:** Combine with compatible parent/child components listed in `Composition Patterns`.
|
|
21
|
+
- **Safety checks:** Validate required props and data bindings before manifest generation.
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
---
|
|
2
|
+
alias: "fc.mutation.inline"
|
|
3
|
+
aliases:
|
|
4
|
+
- fc.mutation.inline
|
|
5
|
+
category: action
|
|
6
|
+
module: Core
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# fc.mutation.inline
|
|
10
|
+
|
|
11
|
+
Inline mutation card that auto-generates a form from a GraphQL mutation schema, renders it in a card, and submits the mutation on form submit.
|
|
12
|
+
|
|
13
|
+
## When to Use
|
|
14
|
+
- Display an inline editable form for a GraphQL mutation (e.g. `updateOrder`, `createFulfilment`)
|
|
15
|
+
- Build quick-edit cards that introspect the mutation schema to generate form fields automatically
|
|
16
|
+
- Provide inline update forms on detail pages without requiring a drawer or modal
|
|
17
|
+
|
|
18
|
+
## Key Props
|
|
19
|
+
| Prop | Type | Required | What it controls |
|
|
20
|
+
|------|------|----------|------------------|
|
|
21
|
+
| `title` | string | No | Card title displayed above the form |
|
|
22
|
+
| `width` | CardWidth | No | Card width on 12-column grid |
|
|
23
|
+
| `highlight` | string | No | Top border highlight color |
|
|
24
|
+
| `mutation` | MutationConfig | Yes | Mutation configuration object (see below) |
|
|
25
|
+
|
|
26
|
+
### MutationConfig Structure
|
|
27
|
+
| Field | Type | Required | Description |
|
|
28
|
+
|-------|------|----------|-------------|
|
|
29
|
+
| `name` | string | Yes | GraphQL mutation name (e.g. `"updateOrder"`, `"createFulfilment"`) |
|
|
30
|
+
| `label` | string | Yes | Display label for the mutation action |
|
|
31
|
+
| `args` | Record<string, any> | No | Pre-filled argument values -- supports template strings `"{{id}}"` |
|
|
32
|
+
| `overrides` | Record<string, ExtendedFormField> | No | Per-field overrides for label, component, value, validation, etc. |
|
|
33
|
+
| `filter` | MutationFieldFilter | No | Include/exclude specific fields: `{ type: "include"\|"exclude", names: string[] }` |
|
|
34
|
+
| `postSubmit` | PostSubmitType | No | Action after successful submission (e.g. refresh page, navigate) |
|
|
35
|
+
|
|
36
|
+
## Data Binding
|
|
37
|
+
For update mutations, the component auto-generates a query from the mutation name (e.g. `updateOrder` -> `order` query) to pre-populate form fields. Template strings in `args` are resolved against the current data context.
|
|
38
|
+
|
|
39
|
+
## Descendants
|
|
40
|
+
No -- form fields are auto-generated from the GraphQL mutation schema.
|
|
41
|
+
|
|
42
|
+
## Composition Patterns
|
|
43
|
+
- `fc.page` > `fc.mutation.inline` for inline edit forms on detail pages
|
|
44
|
+
- `fc.column` > `fc.mutation.inline` alongside `fc.card.attribute` for view + edit layout
|
|
45
|
+
- For drawer-based mutations, use `fc.mutation.button` (MutationButton) instead
|
|
46
|
+
|
|
47
|
+
## Gotchas
|
|
48
|
+
- The `mutation.name` must exactly match a GraphQL mutation in the schema. The component introspects the schema via `getMutationInputArg()`.
|
|
49
|
+
- For `update` mutations (name starts with "update"), the component auto-fetches current entity data to pre-populate the form.
|
|
50
|
+
- Fields with pre-set values in `args` are hidden from the form (treated as locked values) and re-injected on submit.
|
|
51
|
+
- The `filter` prop allows include/exclude lists to control which fields appear in the generated form.
|
|
52
|
+
- `overrides` can customize individual field components, labels, default values, and validation rules.
|
|
53
|
+
- On submit, shows a loading overlay and calls `refreshPage()` after completion. Error toast appears on failure.
|
|
54
|
+
- Registered with category `content` in the component registry.
|
|
55
|
+
|
|
56
|
+
## Manifest Example
|
|
57
|
+
```json
|
|
58
|
+
{
|
|
59
|
+
"component": "fc.mutation.inline",
|
|
60
|
+
"props": {
|
|
61
|
+
"title": "Update Order",
|
|
62
|
+
"width": "half",
|
|
63
|
+
"mutation": {
|
|
64
|
+
"name": "updateOrder",
|
|
65
|
+
"label": "Save Changes",
|
|
66
|
+
"args": {
|
|
67
|
+
"id": "{{id}}"
|
|
68
|
+
},
|
|
69
|
+
"filter": {
|
|
70
|
+
"type": "include",
|
|
71
|
+
"names": ["status", "type", "attributes"]
|
|
72
|
+
},
|
|
73
|
+
"overrides": {
|
|
74
|
+
"type": {
|
|
75
|
+
"label": "Order Type",
|
|
76
|
+
"component": "fc.mutation.order.type"
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## AI Parse Notes
|
|
85
|
+
- **Primary intent:** Declarative Mystique component definition for manifests.
|
|
86
|
+
- **Selection signals:** Match by `alias`, category, and required `Key Props`.
|
|
87
|
+
- **Assembly hints:** Combine with compatible parent/child components listed in `Composition Patterns`.
|
|
88
|
+
- **Safety checks:** Validate required props and data bindings before manifest generation.
|
package/content/dev/skills/fluent-mystique-builder/components/fc.mystique.collapsible.attributes.md
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
---
|
|
2
|
+
alias: "fc.mystique.collapsible.attributes"
|
|
3
|
+
aliases:
|
|
4
|
+
- fc.mystique.collapsible.attributes
|
|
5
|
+
category: content
|
|
6
|
+
module: Core
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# fc.mystique.collapsible.attributes
|
|
10
|
+
|
|
11
|
+
Collapsible display for entity attributes with expand/collapse toggle, supporting both comma-separated character mode and line-by-line display modes.
|
|
12
|
+
|
|
13
|
+
## When to Use
|
|
14
|
+
- Displaying a large number of entity attributes in a compact, expandable format
|
|
15
|
+
- List row cells where space is limited but attributes need to be accessible
|
|
16
|
+
- Any component that shows entity attributes with a "More / Less" toggle pattern
|
|
17
|
+
|
|
18
|
+
## Key Props
|
|
19
|
+
| Prop | Type | Required | What it controls |
|
|
20
|
+
|------|------|----------|------------------|
|
|
21
|
+
| `collapseOn` | `"characters"` / `"lines"` | No | Display and collapse mode. `"characters"` shows comma-separated truncated by character count; `"lines"` shows one attribute per line truncated by line count. Default behavior is `"characters"` (fallback for no config or misconfiguration). |
|
|
22
|
+
| `collapseLimit` | number | Yes | Cutoff value: number of characters (when `collapseOn: "characters"`) or number of lines (when `collapseOn: "lines"`) before truncation |
|
|
23
|
+
| `hideKeys` | boolean | No | When `true`, hides attribute names and shows values only. Default: `false` -- shows **Name:** value format with bold keys. |
|
|
24
|
+
| `exclude` | string[] | No | Array of attribute names to exclude from the display |
|
|
25
|
+
|
|
26
|
+
## Data Binding
|
|
27
|
+
Requires `dataSource` pointing to an array of attributes or a GraphQL Connection of attributes. The data must be objects with `name` and `value` fields. The component handles both flat arrays and Connection format (with `edges[].node`).
|
|
28
|
+
|
|
29
|
+
Example: `"dataSource": "node.product.attributes"`
|
|
30
|
+
|
|
31
|
+
## Descendants
|
|
32
|
+
No -- self-contained display component.
|
|
33
|
+
|
|
34
|
+
## Composition Patterns
|
|
35
|
+
- `fc.list` column `type: "component"` > `fc.mystique.collapsible.attributes` for expandable attribute cells
|
|
36
|
+
- `fc.card.attribute` alongside `fc.mystique.collapsible.attributes` for mixed detail views
|
|
37
|
+
- Inside `fc.tabs.card` for an "Attributes" tab with collapsible display
|
|
38
|
+
|
|
39
|
+
## Gotchas
|
|
40
|
+
- `collapseLimit` is required -- without it, the component cannot determine when to truncate.
|
|
41
|
+
- In `"characters"` mode: counts the total character length of the comma-separated string, appends "..." when collapsed, and renders attribute keys as bold HTML (uses `dangerouslySetInnerHTML`).
|
|
42
|
+
- In `"lines"` mode: counts the number of attribute rows (one attribute per line), slices the array at the limit.
|
|
43
|
+
- The "More" / "Less" toggle only appears when the content exceeds the `collapseLimit`.
|
|
44
|
+
- If `collapseOn` is set to an invalid value, an error is logged and the component falls back to character-based truncation.
|
|
45
|
+
- The data prop accepts both `Attribute[]` and `Connection<Attribute>` -- it auto-detects Connection format via the `edges` property.
|
|
46
|
+
- Different from `fc.mystique.collapsible.text` which collapses a single text string by character count.
|
|
47
|
+
|
|
48
|
+
## Manifest Example
|
|
49
|
+
```json
|
|
50
|
+
{
|
|
51
|
+
"component": "fc.mystique.collapsible.attributes",
|
|
52
|
+
"dataSource": "node.product.attributes",
|
|
53
|
+
"props": {
|
|
54
|
+
"collapseOn": "lines",
|
|
55
|
+
"collapseLimit": 3,
|
|
56
|
+
"hideKeys": false,
|
|
57
|
+
"exclude": ["internalId", "systemRef"]
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### Inside a list column
|
|
63
|
+
```json
|
|
64
|
+
{
|
|
65
|
+
"label": "Attributes",
|
|
66
|
+
"type": "component",
|
|
67
|
+
"options": {
|
|
68
|
+
"component": "fc.mystique.collapsible.attributes",
|
|
69
|
+
"props": {
|
|
70
|
+
"collapseOn": "characters",
|
|
71
|
+
"collapseLimit": 80,
|
|
72
|
+
"hideKeys": true
|
|
73
|
+
},
|
|
74
|
+
"dataSource": "node.attributes"
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## AI Parse Notes
|
|
80
|
+
- **Primary intent:** Declarative Mystique component definition for manifests.
|
|
81
|
+
- **Selection signals:** Match by `alias`, category, and required `Key Props`.
|
|
82
|
+
- **Assembly hints:** Combine with compatible parent/child components listed in `Composition Patterns`.
|
|
83
|
+
- **Safety checks:** Validate required props and data bindings before manifest generation.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
alias: "fc.mystique.collapsible.text"
|
|
3
|
+
aliases:
|
|
4
|
+
- fc.mystique.collapsible.text
|
|
5
|
+
category: content
|
|
6
|
+
module: Core
|
|
7
|
+
---
|
|
8
|
+
# fc.mystique.collapsible.text
|
|
9
|
+
|
|
10
|
+
Show more/less text with character cutoff toggle.
|
|
11
|
+
|
|
12
|
+
## Key Props
|
|
13
|
+
| Prop | Type | Required | What it controls |
|
|
14
|
+
|------|------|----------|------------------|
|
|
15
|
+
| `text` | string | **Yes** | Content text |
|
|
16
|
+
| `charCutoff` | number | **Yes** | Character threshold for collapsing |
|
|
17
|
+
|
|
18
|
+
## Validation Rules
|
|
19
|
+
P13 (CRITICAL — both text and charCutoff required)
|
|
20
|
+
|
|
21
|
+
## Manifest Example
|
|
22
|
+
```json
|
|
23
|
+
{
|
|
24
|
+
"component": "fc.mystique.collapsible.text",
|
|
25
|
+
"props": { "text": "{{description}}", "charCutoff": 200 }
|
|
26
|
+
}
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## AI Parse Notes
|
|
30
|
+
- **Primary intent:** Declarative Mystique component definition for manifests.
|
|
31
|
+
- **Selection signals:** Match by `alias`, category, and required `Key Props`.
|
|
32
|
+
- **Assembly hints:** Combine with compatible parent/child components listed in `Composition Patterns`.
|
|
33
|
+
- **Safety checks:** Validate required props and data bindings before manifest generation.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
---
|
|
2
|
+
alias: "fc.mystique.link"
|
|
3
|
+
aliases:
|
|
4
|
+
- fc.mystique.link
|
|
5
|
+
category: content
|
|
6
|
+
module: Core
|
|
7
|
+
---
|
|
8
|
+
# fc.mystique.link
|
|
9
|
+
|
|
10
|
+
Styled hyperlink for navigation within the app or to external URLs.
|
|
11
|
+
|
|
12
|
+
## Key Props
|
|
13
|
+
| Prop | Type | Required | What it controls |
|
|
14
|
+
|------|------|----------|------------------|
|
|
15
|
+
| `label` | string | No | Display text |
|
|
16
|
+
| `link` | string | No | Destination URL (supports templates) |
|
|
17
|
+
|
|
18
|
+
## Manifest Example
|
|
19
|
+
```json
|
|
20
|
+
{
|
|
21
|
+
"component": "fc.mystique.link",
|
|
22
|
+
"props": { "label": "View Order", "link": "/orders/{{id}}" }
|
|
23
|
+
}
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## AI Parse Notes
|
|
27
|
+
- **Primary intent:** Declarative Mystique component definition for manifests.
|
|
28
|
+
- **Selection signals:** Match by `alias`, category, and required `Key Props`.
|
|
29
|
+
- **Assembly hints:** Combine with compatible parent/child components listed in `Composition Patterns`.
|
|
30
|
+
- **Safety checks:** Validate required props and data bindings before manifest generation.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
---
|
|
2
|
+
alias: "fc.order.itemDetails"
|
|
3
|
+
aliases:
|
|
4
|
+
- fc.order.itemDetails
|
|
5
|
+
category: content
|
|
6
|
+
module: OMS
|
|
7
|
+
---
|
|
8
|
+
# fc.order.itemDetails
|
|
9
|
+
|
|
10
|
+
Drawer showing detailed order item information — product, quantity, pricing, attributes.
|
|
11
|
+
|
|
12
|
+
## When to Use
|
|
13
|
+
- Order detail page — click item to see full details
|
|
14
|
+
- Item-level attribute inspection
|
|
15
|
+
|
|
16
|
+
## AI Parse Notes
|
|
17
|
+
- **Primary intent:** Declarative Mystique component definition for manifests.
|
|
18
|
+
- **Selection signals:** Match by `alias`, category, and required `Key Props`.
|
|
19
|
+
- **Assembly hints:** Combine with compatible parent/child components listed in `Composition Patterns`.
|
|
20
|
+
- **Safety checks:** Validate required props and data bindings before manifest generation.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
---
|
|
2
|
+
alias: "fc.order.shipmentDetails"
|
|
3
|
+
aliases:
|
|
4
|
+
- fc.order.shipmentDetails
|
|
5
|
+
category: content
|
|
6
|
+
module: OMS
|
|
7
|
+
---
|
|
8
|
+
# fc.order.shipmentDetails
|
|
9
|
+
|
|
10
|
+
Drawer showing shipment/consignment tracking details.
|
|
11
|
+
|
|
12
|
+
## When to Use
|
|
13
|
+
- Fulfilment detail page — shipment tracking view
|
|
14
|
+
- Consignment tracking display
|
|
15
|
+
|
|
16
|
+
## AI Parse Notes
|
|
17
|
+
- **Primary intent:** Declarative Mystique component definition for manifests.
|
|
18
|
+
- **Selection signals:** Match by `alias`, category, and required `Key Props`.
|
|
19
|
+
- **Assembly hints:** Combine with compatible parent/child components listed in `Composition Patterns`.
|
|
20
|
+
- **Safety checks:** Validate required props and data bindings before manifest generation.
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
---
|
|
2
|
+
alias: "fc.page.filter.select"
|
|
3
|
+
aliases:
|
|
4
|
+
- fc.page.filter.select
|
|
5
|
+
category: layout
|
|
6
|
+
module: Core
|
|
7
|
+
---
|
|
8
|
+
# fc.page.filter.select
|
|
9
|
+
|
|
10
|
+
Page-level dropdown select that changes a variable on the page GraphQL query, enabling dynamic data filtering.
|
|
11
|
+
|
|
12
|
+
## When to Use
|
|
13
|
+
- Filtering a list page by status, type, or category
|
|
14
|
+
- Switching data views on a dashboard (e.g., time period, entity type)
|
|
15
|
+
- Any page where the user should be able to select from predefined filter options that alter the page query
|
|
16
|
+
|
|
17
|
+
## Key Props
|
|
18
|
+
| Prop | Type | Required | What it controls |
|
|
19
|
+
|------|------|----------|------------------|
|
|
20
|
+
| `name` | string | No | Variable name on the GraphQL query (default: `"filter_value"`) |
|
|
21
|
+
| `options` | SelectOption[] | **Yes** | Dropdown options array: `[{ label, value }]` |
|
|
22
|
+
| `defaultValue` | string | No | Pre-selected value on page load |
|
|
23
|
+
|
|
24
|
+
### SelectOption
|
|
25
|
+
| Prop | Type | Required | What it controls |
|
|
26
|
+
|------|------|----------|------------------|
|
|
27
|
+
| `label` | string | **Yes** | Human-readable display text |
|
|
28
|
+
| `value` | string | **Yes** | Value passed to the GraphQL query variable |
|
|
29
|
+
|
|
30
|
+
## Data Binding
|
|
31
|
+
Sets a variable (named by `name` prop, default `"filter_value"`) on the page-level GraphQL query. The page query must reference this variable for the filter to take effect.
|
|
32
|
+
|
|
33
|
+
## Descendants
|
|
34
|
+
No -- this is a self-contained input component.
|
|
35
|
+
|
|
36
|
+
## Composition Patterns
|
|
37
|
+
- `fc.page` > `fc.page.filter.select` + `fc.list` for filtered list pages
|
|
38
|
+
- Multiple `fc.page.filter.select` components for multi-dimension filtering
|
|
39
|
+
- Combine with `fc.filterPanel` for advanced filtering setups
|
|
40
|
+
|
|
41
|
+
## Gotchas
|
|
42
|
+
- The `name` prop must match a variable in the page-level GraphQL query -- otherwise the selection has no effect
|
|
43
|
+
- `options` is required -- an empty options array renders a blank dropdown
|
|
44
|
+
- Default value must match one of the option `value` strings exactly
|
|
45
|
+
|
|
46
|
+
## Manifest Example
|
|
47
|
+
```json
|
|
48
|
+
{
|
|
49
|
+
"component": "fc.page",
|
|
50
|
+
"props": {
|
|
51
|
+
"title": "Orders"
|
|
52
|
+
},
|
|
53
|
+
"data": {
|
|
54
|
+
"query": "query ($filter_value: [String]) { orders(status: $filter_value) { edges { node { id ref status } } } }"
|
|
55
|
+
},
|
|
56
|
+
"descendants": [
|
|
57
|
+
{
|
|
58
|
+
"component": "fc.page.filter.select",
|
|
59
|
+
"props": {
|
|
60
|
+
"name": "filter_value",
|
|
61
|
+
"defaultValue": "CREATED",
|
|
62
|
+
"options": [
|
|
63
|
+
{ "label": "Created", "value": "CREATED" },
|
|
64
|
+
{ "label": "Complete", "value": "COMPLETE" },
|
|
65
|
+
{ "label": "All", "value": "" }
|
|
66
|
+
]
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"component": "fc.list",
|
|
71
|
+
"props": {
|
|
72
|
+
"dataSource": "orders",
|
|
73
|
+
"attributes": [
|
|
74
|
+
{ "label": "Ref", "value": "{{node.ref}}" },
|
|
75
|
+
{ "label": "Status", "value": "{{node.status}}" }
|
|
76
|
+
]
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
]
|
|
80
|
+
}
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## AI Parse Notes
|
|
84
|
+
- **Primary intent:** Declarative Mystique component definition for manifests.
|
|
85
|
+
- **Selection signals:** Match by `alias`, category, and required `Key Props`.
|
|
86
|
+
- **Assembly hints:** Combine with compatible parent/child components listed in `Composition Patterns`.
|
|
87
|
+
- **Safety checks:** Validate required props and data bindings before manifest generation.
|