@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,54 @@
|
|
|
1
|
+
---
|
|
2
|
+
alias: "fc.reports.ipuipc"
|
|
3
|
+
aliases:
|
|
4
|
+
- fc.reports.ipuipc
|
|
5
|
+
category: content
|
|
6
|
+
module: Analytics
|
|
7
|
+
---
|
|
8
|
+
# fc.reports.ipuipc
|
|
9
|
+
|
|
10
|
+
IPU (Inventory Position Update) and IPC (Inventory Position Change) reporting component with line chart visualization, configurable filters for report type, date range, and granularity.
|
|
11
|
+
|
|
12
|
+
## When to Use
|
|
13
|
+
- Inventory analytics dashboards
|
|
14
|
+
- Monitoring inventory update volumes over time
|
|
15
|
+
- Capacity planning and IPU/IPC usage tracking
|
|
16
|
+
|
|
17
|
+
## Key Props
|
|
18
|
+
| Prop | Type | Required | What it controls |
|
|
19
|
+
|------|------|----------|------------------|
|
|
20
|
+
| `width` | CardWidth | No | Card width on 12-column grid. Named widths: `"quarter"`, `"third"`, `"half"`, `"two-thirds"`, `"full"`, or number `1-12`. Default: `"full"`. Mobile auto-adjusts to 12. |
|
|
21
|
+
|
|
22
|
+
## Data Binding
|
|
23
|
+
The component self-manages its data fetching based on three user-configurable filters:
|
|
24
|
+
|
|
25
|
+
- **Display**: Report type -- "Inventory Position Update" (default) or "Inventory Position Change"
|
|
26
|
+
- **Date/time range**: Visualization period, default last 31 days. Based on UTC time.
|
|
27
|
+
- **Granularity**: Detail level -- "Minute", "Hour", or "Day" (default)
|
|
28
|
+
|
|
29
|
+
The line chart displays data points across the selected date range. X-axis shows the date range (UTC), Y-axis shows quantity of inventory updates. A "Total Updates" summary shows the cumulative sum of all usages within the selected range.
|
|
30
|
+
|
|
31
|
+
## Descendants
|
|
32
|
+
No.
|
|
33
|
+
|
|
34
|
+
## Gotchas
|
|
35
|
+
- Data older than 185 days cannot be displayed. Exceeding this limit shows: "The maximum time frame is 185 days."
|
|
36
|
+
- Granularity constrains the date range: Minute granularity max 12 hours, Hour granularity max 31 days. Day granularity has no additional constraint beyond 185 days.
|
|
37
|
+
- Mismatched granularity/range shows: "The time frame for your chosen granularity is too long."
|
|
38
|
+
- Both chart start and end points use UTC timestamps.
|
|
39
|
+
|
|
40
|
+
## Manifest Example
|
|
41
|
+
```json
|
|
42
|
+
{
|
|
43
|
+
"component": "fc.reports.ipuipc",
|
|
44
|
+
"props": {
|
|
45
|
+
"width": "full"
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## AI Parse Notes
|
|
51
|
+
- **Primary intent:** Declarative Mystique component definition for manifests.
|
|
52
|
+
- **Selection signals:** Match by `alias`, category, and required `Key Props`.
|
|
53
|
+
- **Assembly hints:** Combine with compatible parent/child components listed in `Composition Patterns`.
|
|
54
|
+
- **Safety checks:** Validate required props and data bindings before manifest generation.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
---
|
|
2
|
+
alias: "fc.return.rowExpansion"
|
|
3
|
+
aliases:
|
|
4
|
+
- fc.return.rowExpansion
|
|
5
|
+
category: content
|
|
6
|
+
module: Returns
|
|
7
|
+
---
|
|
8
|
+
# fc.return.rowExpansion
|
|
9
|
+
|
|
10
|
+
Expandable detail row for return items in a list.
|
|
11
|
+
|
|
12
|
+
## When to Use
|
|
13
|
+
- Return list page — expand to see item details
|
|
14
|
+
|
|
15
|
+
## AI Parse Notes
|
|
16
|
+
- **Primary intent:** Declarative Mystique component definition for manifests.
|
|
17
|
+
- **Selection signals:** Match by `alias`, category, and required `Key Props`.
|
|
18
|
+
- **Assembly hints:** Combine with compatible parent/child components listed in `Composition Patterns`.
|
|
19
|
+
- **Safety checks:** Validate required props and data bindings before manifest generation.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
---
|
|
2
|
+
alias: "fc.scanner.barcode"
|
|
3
|
+
aliases:
|
|
4
|
+
- fc.scanner.barcode
|
|
5
|
+
- fc.barcode.scanner
|
|
6
|
+
category: content
|
|
7
|
+
module: Core
|
|
8
|
+
---
|
|
9
|
+
# fc.scanner.barcode
|
|
10
|
+
|
|
11
|
+
USB barcode scanner input field for warehouse operations.
|
|
12
|
+
|
|
13
|
+
## When to Use
|
|
14
|
+
- Warehouse pick/pack barcode scanning
|
|
15
|
+
- Desktop scanner hardware integration
|
|
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,72 @@
|
|
|
1
|
+
---
|
|
2
|
+
alias: "fc.scanner.barcodeFilter"
|
|
3
|
+
aliases:
|
|
4
|
+
- fc.scanner.barcodeFilter
|
|
5
|
+
category: content
|
|
6
|
+
module: Core
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# fc.scanner.barcodeFilter
|
|
10
|
+
|
|
11
|
+
Combined barcode scanner and text filter component that renders a sticky filter bar with hardware barcode scanner support, text input filtering, and optional camera scanner integration.
|
|
12
|
+
|
|
13
|
+
## When to Use
|
|
14
|
+
- Add barcode scanning and text filtering above a list (pick, pack, count workflows)
|
|
15
|
+
- Enable hardware barcode scanner input on store/warehouse pages
|
|
16
|
+
- Provide a combined scan + filter experience with match count display
|
|
17
|
+
|
|
18
|
+
## Key Props
|
|
19
|
+
| Prop | Type | Required | What it controls |
|
|
20
|
+
|------|------|----------|------------------|
|
|
21
|
+
| `onFilter` | `(value: string) => void` | Yes* | Callback when the text filter value changes |
|
|
22
|
+
| `onScan` | `(value: string) => boolean \| undefined` | Yes* | Callback when a barcode is scanned. Return `true` to indicate a match. |
|
|
23
|
+
| `setValue` | `(value: string) => void` | Yes* | Setter for the filter input value |
|
|
24
|
+
| `value` | string | No | Current filter input value |
|
|
25
|
+
| `debounceTimeout` | number | No | Debounce timeout for hardware scanner input (ms) |
|
|
26
|
+
| `placeholderText` | string[] | No | i18n key array for the filter placeholder text. Default: `["fc.barcodeFilter.placeholder", "Filter results"]` |
|
|
27
|
+
| `showingText` | string[] | No | i18n key array for the match count text. Supports `{{currentCount}}` and `{{totalCount}}` template vars. Default: `["fc.barcodeFilter.list.count", "Showing {{currentCount}} of {{totalCount}} items"]` |
|
|
28
|
+
| `currentCount` | number | No | Current number of filtered/matching items |
|
|
29
|
+
| `totalCount` | number | No | Total number of items before filtering |
|
|
30
|
+
| `enableCameraScanner` | boolean | No | Enable the camera scanner button on mobile devices (opens `fc.scanner.camera`) |
|
|
31
|
+
| `camera` | object | No | Camera configuration props passed to `fc.scanner.camera` |
|
|
32
|
+
|
|
33
|
+
*These callbacks are typically provided by the parent `fc.quantity.list` or a custom wrapper, not directly in manifest JSON.
|
|
34
|
+
|
|
35
|
+
## Data Binding
|
|
36
|
+
This component does not consume data directly. It provides filter/scan callbacks that the parent list component uses to filter its data.
|
|
37
|
+
|
|
38
|
+
## Descendants
|
|
39
|
+
No -- self-contained filter/scanner component.
|
|
40
|
+
|
|
41
|
+
## Composition Patterns
|
|
42
|
+
- `fc.quantity.list` automatically renders `fc.scanner.barcodeFilter` when `scannerProps` is provided
|
|
43
|
+
- Can be used standalone above any list via programmatic integration
|
|
44
|
+
- Integrates with `fc.scanner.camera` on mobile for camera-based barcode scanning
|
|
45
|
+
|
|
46
|
+
## Gotchas
|
|
47
|
+
- If any of `onFilter`, `onScan`, or `setValue` are missing, the component renders nothing (returns `null`).
|
|
48
|
+
- The filter bar is sticky (`position: sticky`, `top: -21px`) and floats above the list content as the user scrolls.
|
|
49
|
+
- Hardware barcode scanner detection is handled by `SimpleScanner` (a hidden input that captures rapid keystrokes).
|
|
50
|
+
- The camera scanner button only appears on mobile devices (`isMobile` from `react-device-detect`) and only when `enableCameraScanner` is `true`.
|
|
51
|
+
- When active, the filter bar shows a count indicator (e.g. "Showing 3 of 15 items") styled as a secondary-colored banner.
|
|
52
|
+
- When stuck to the top (scrolled), the card changes to square corners with elevation 3 and wider width to span the page.
|
|
53
|
+
- Registered with category `content` in the component registry.
|
|
54
|
+
|
|
55
|
+
## Manifest Example
|
|
56
|
+
```json
|
|
57
|
+
{
|
|
58
|
+
"component": "fc.scanner.barcodeFilter",
|
|
59
|
+
"props": {
|
|
60
|
+
"placeholderText": ["fc.barcodeFilter.placeholder", "Scan or type to filter..."],
|
|
61
|
+
"showingText": ["fc.barcodeFilter.list.count", "Showing {{currentCount}} of {{totalCount}} items"],
|
|
62
|
+
"enableCameraScanner": true,
|
|
63
|
+
"debounceTimeout": 300
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## AI Parse Notes
|
|
69
|
+
- **Primary intent:** Declarative Mystique component definition for manifests.
|
|
70
|
+
- **Selection signals:** Match by `alias`, category, and required `Key Props`.
|
|
71
|
+
- **Assembly hints:** Combine with compatible parent/child components listed in `Composition Patterns`.
|
|
72
|
+
- **Safety checks:** Validate required props and data bindings before manifest generation.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
---
|
|
2
|
+
alias: "fc.scanner.camera"
|
|
3
|
+
aliases:
|
|
4
|
+
- fc.scanner.camera
|
|
5
|
+
category: content
|
|
6
|
+
module: Core
|
|
7
|
+
---
|
|
8
|
+
# fc.scanner.camera
|
|
9
|
+
|
|
10
|
+
Mobile camera barcode scanner using device camera API.
|
|
11
|
+
|
|
12
|
+
## When to Use
|
|
13
|
+
- Mobile warehouse/store scanning
|
|
14
|
+
- Camera-based barcode input on tablets/phones
|
|
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,64 @@
|
|
|
1
|
+
---
|
|
2
|
+
alias: "fc.settingForm"
|
|
3
|
+
aliases:
|
|
4
|
+
- fc.settingForm
|
|
5
|
+
category: content
|
|
6
|
+
module: Core
|
|
7
|
+
---
|
|
8
|
+
# fc.settingForm
|
|
9
|
+
|
|
10
|
+
Form for creating and updating Fluent Commerce settings. Renders fields based on a schema definition and the setting's current value. Supports create (override default) and update operations.
|
|
11
|
+
|
|
12
|
+
## When to Use
|
|
13
|
+
- Settings editor pages
|
|
14
|
+
- Retailer/account/location configuration forms
|
|
15
|
+
- Any page where a user needs to view and edit a Fluent setting value
|
|
16
|
+
|
|
17
|
+
## Key Props
|
|
18
|
+
| Prop | Type | Required | What it controls |
|
|
19
|
+
|------|------|----------|------------------|
|
|
20
|
+
| `setting` | string | **Yes** | Setting name to load and edit (e.g., `"orderWorkflowConfig"`) |
|
|
21
|
+
| `schema` | string | **Yes** | Schema setting name that defines the form field structure |
|
|
22
|
+
| `context` | string | **Yes** | Setting context: `"ACCOUNT"`, `"RETAILER"`, or `"AGENT"` (location) |
|
|
23
|
+
| `contextId` | number / string | Recommended | Context ID (retailer ID, account ID, or location ID). Supports template strings: `"{{activeRetailer.id}}"`, `"{{params.id}}"` |
|
|
24
|
+
| `title` | string | No | Card header title (inherited from Card) |
|
|
25
|
+
| `width` | CardWidth | No | Card width (inherited from Card) |
|
|
26
|
+
| `highlight` | string | No | Card border highlight color (inherited from Card) |
|
|
27
|
+
|
|
28
|
+
## Data Binding
|
|
29
|
+
`contextId` supports template strings with access to `{{activeContext.id}}`, `{{activeLocation.id}}`, `{{activeRetailer.id}}`, `{{activeUser}}`, and `{{params.*}}` (route params).
|
|
30
|
+
|
|
31
|
+
## Descendants
|
|
32
|
+
No.
|
|
33
|
+
|
|
34
|
+
## Gotchas
|
|
35
|
+
- **The prop is `setting`, NOT `settingName`** -- the source code uses `setting` as the prop name for the setting key
|
|
36
|
+
- `schema` is also a setting name (not an inline object) -- it references a separate Fluent setting that contains the JSON schema definition
|
|
37
|
+
- The component validates that `context` is one of `ACCOUNT`, `RETAILER`, or `AGENT` -- invalid values cause the form to not render
|
|
38
|
+
- `contextId` is required to be a valid integer -- if the template string evaluates to NaN, the form will not render and submit will be blocked
|
|
39
|
+
- When the setting does not yet exist at the specified context level, the form shows an "Override Default" button (create mode). When it exists, it shows "Submit" (update mode)
|
|
40
|
+
- Schema and setting value types must match (JSON/INTEGER/BOOLEAN/STRING) -- a mismatch logs an error and the form does not render
|
|
41
|
+
- The form uses the `useSchema` hook to dynamically generate form fields from the schema setting's value
|
|
42
|
+
|
|
43
|
+
## Validation Rules
|
|
44
|
+
P18 (needs setting name or reference)
|
|
45
|
+
|
|
46
|
+
## Manifest Example
|
|
47
|
+
```json
|
|
48
|
+
{
|
|
49
|
+
"component": "fc.settingForm",
|
|
50
|
+
"props": {
|
|
51
|
+
"setting": "orderWorkflowConfig",
|
|
52
|
+
"schema": "orderWorkflowConfig_schema",
|
|
53
|
+
"context": "RETAILER",
|
|
54
|
+
"contextId": "{{activeRetailer.id}}",
|
|
55
|
+
"title": "Order Workflow Configuration"
|
|
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.
|
package/content/dev/skills/fluent-mystique-builder/components/fc.sourcing.profile.drawer.button.md
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
---
|
|
2
|
+
alias: "fc.sourcing.profile.drawer.button"
|
|
3
|
+
aliases:
|
|
4
|
+
- fc.sourcing.profile.drawer.button
|
|
5
|
+
category: action
|
|
6
|
+
module: Core
|
|
7
|
+
---
|
|
8
|
+
# fc.sourcing.profile.drawer.button
|
|
9
|
+
|
|
10
|
+
Drawer button for viewing and editing sourcing profiles.
|
|
11
|
+
|
|
12
|
+
## When to Use
|
|
13
|
+
- Sourcing profile detail/edit UI
|
|
14
|
+
|
|
15
|
+
## AI Parse Notes
|
|
16
|
+
- **Primary intent:** Declarative Mystique component definition for manifests.
|
|
17
|
+
- **Selection signals:** Match by `alias`, category, and required `Key Props`.
|
|
18
|
+
- **Assembly hints:** Combine with compatible parent/child components listed in `Composition Patterns`.
|
|
19
|
+
- **Safety checks:** Validate required props and data bindings before manifest generation.
|
package/content/dev/skills/fluent-mystique-builder/components/fc.sourcing.profile.modal.button.md
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
---
|
|
2
|
+
alias: "fc.sourcing.profile.modal.button"
|
|
3
|
+
aliases:
|
|
4
|
+
- fc.sourcing.profile.modal.button
|
|
5
|
+
category: action
|
|
6
|
+
module: Core
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# fc.sourcing.profile.modal.button
|
|
10
|
+
|
|
11
|
+
Modal confirmation button for sourcing profile activation. Opens a confirmation modal and executes the `activateSourcingProfile` GraphQL mutation.
|
|
12
|
+
|
|
13
|
+
## When to Use
|
|
14
|
+
- Add an "Activate" action button on a sourcing profile detail page
|
|
15
|
+
- Trigger sourcing profile activation with a confirmation dialog
|
|
16
|
+
- Provide a safe activation workflow with cancel/confirm options
|
|
17
|
+
|
|
18
|
+
## Key Props
|
|
19
|
+
| Prop | Type | Required | What it controls |
|
|
20
|
+
|------|------|----------|------------------|
|
|
21
|
+
| `action` | `"activate"` | Yes | Action type (currently only `"activate"` is supported) |
|
|
22
|
+
| `label` | string | Yes | Button label text (translatable) |
|
|
23
|
+
| `title` | string | Yes | Modal title text (translatable) |
|
|
24
|
+
| `description` | string | No | Description text shown in the modal body (translatable) |
|
|
25
|
+
| `style` | `"Primary"` / `"Secondary"` | No | Button visual style. Defaults to the context style from `useStyle()` or `"Primary"`. |
|
|
26
|
+
|
|
27
|
+
## Data Binding
|
|
28
|
+
Reads route parameters from `useData().variables.routeParams` to construct the mutation input for `activateSourcingProfile`. After successful activation, navigates to the activated profile's detail page using the returned `ref` and `version`.
|
|
29
|
+
|
|
30
|
+
## Descendants
|
|
31
|
+
No -- renders a single button that opens a modal on click.
|
|
32
|
+
|
|
33
|
+
## Composition Patterns
|
|
34
|
+
- `fc.page.section.header` > `fc.sourcing.profile.modal.button` as a header action
|
|
35
|
+
- `fc.button.bar` > `fc.sourcing.profile.modal.button` alongside other sourcing profile actions
|
|
36
|
+
- Typically used on sourcing profile detail pages as a page-level or section-level action
|
|
37
|
+
|
|
38
|
+
## Gotchas
|
|
39
|
+
- Only supports `action: "activate"` -- the component hardcodes the `activateSourcingProfile` mutation.
|
|
40
|
+
- On success, clears all modals and drawers, then navigates to `sourcingProfiles/{ref}/{version}` via hash routing.
|
|
41
|
+
- On error, shows an error snackbar with translated message `fc.sourcingProfileModalButton.error.confirmError`.
|
|
42
|
+
- The modal uses translated labels: `fc.sourcingProfileModalButton.cancel.label` (Cancel) and `fc.sourcingProfileModalButton.confirm.label` (Confirm).
|
|
43
|
+
- Button style defaults to the page context style (from `useStyle()` which reads the page actions context), falling back to `"Primary"`.
|
|
44
|
+
- Registered with category `content` in the component registry.
|
|
45
|
+
|
|
46
|
+
## Manifest Example
|
|
47
|
+
```json
|
|
48
|
+
{
|
|
49
|
+
"component": "fc.sourcing.profile.modal.button",
|
|
50
|
+
"props": {
|
|
51
|
+
"action": "activate",
|
|
52
|
+
"label": "fc.sourcingProfile.activate.label",
|
|
53
|
+
"title": "fc.sourcingProfile.activate.title",
|
|
54
|
+
"description": "fc.sourcingProfile.activate.description",
|
|
55
|
+
"style": "Primary"
|
|
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.
|
package/content/dev/skills/fluent-mystique-builder/components/fc.sourcing.strategy.modal.button.md
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
---
|
|
2
|
+
alias: "fc.sourcing.strategy.modal.button"
|
|
3
|
+
aliases:
|
|
4
|
+
- fc.sourcing.strategy.modal.button
|
|
5
|
+
category: action
|
|
6
|
+
module: Core
|
|
7
|
+
---
|
|
8
|
+
# fc.sourcing.strategy.modal.button
|
|
9
|
+
|
|
10
|
+
Modal button for configuring sourcing strategies — conditions, criteria, and scoring.
|
|
11
|
+
|
|
12
|
+
## When to Use
|
|
13
|
+
- Sourcing profile management pages
|
|
14
|
+
- Strategy configuration UI
|
|
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.stepper"
|
|
3
|
+
aliases:
|
|
4
|
+
- fc.stepper
|
|
5
|
+
category: content
|
|
6
|
+
module: Core
|
|
7
|
+
---
|
|
8
|
+
# fc.stepper
|
|
9
|
+
|
|
10
|
+
Linear step progress bar showing completed/current/pending steps.
|
|
11
|
+
|
|
12
|
+
## When to Use
|
|
13
|
+
- Order lifecycle status display
|
|
14
|
+
- Multi-step process visualization
|
|
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,56 @@
|
|
|
1
|
+
---
|
|
2
|
+
alias: "fc.tab.content"
|
|
3
|
+
aliases:
|
|
4
|
+
- fc.tab.content
|
|
5
|
+
- shared.components.material.SubLayoutContent
|
|
6
|
+
category: layout
|
|
7
|
+
module: Core
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# fc.tab.content
|
|
11
|
+
|
|
12
|
+
Transparent content wrapper for a single tab panel inside `fc.tabs`.
|
|
13
|
+
|
|
14
|
+
## When to Use
|
|
15
|
+
- Wrap the content of each tab panel inside `fc.tabs`
|
|
16
|
+
- Group multiple components under a single tab
|
|
17
|
+
|
|
18
|
+
## Key Props
|
|
19
|
+
|
|
20
|
+
This component has no props. It is a pure pass-through that renders `<Children />`.
|
|
21
|
+
|
|
22
|
+
## Descendants
|
|
23
|
+
Yes -- accepts any components as children. All descendants are rendered directly.
|
|
24
|
+
|
|
25
|
+
## Composition Patterns
|
|
26
|
+
- `fc.tabs` > `fc.tab.content` (one per tab, each containing the tab's components)
|
|
27
|
+
- `fc.tab.content` > `fc.column` + `fc.column` for multi-column tab content
|
|
28
|
+
- `fc.tab.content` > `fc.list` for a list-based tab
|
|
29
|
+
|
|
30
|
+
## Gotchas
|
|
31
|
+
- This component renders no DOM of its own -- it is a pure `<Children />` pass-through.
|
|
32
|
+
- Must be used as a direct descendant of `fc.tabs` for correct tab index mapping.
|
|
33
|
+
- Registered with category `layout`.
|
|
34
|
+
|
|
35
|
+
## Manifest Example
|
|
36
|
+
```json
|
|
37
|
+
{
|
|
38
|
+
"component": "fc.tab.content",
|
|
39
|
+
"descendants": [
|
|
40
|
+
{
|
|
41
|
+
"component": "fc.card.attribute",
|
|
42
|
+
"props": { "title": "Order Details" }
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"component": "fc.list",
|
|
46
|
+
"props": { "title": "Line Items" }
|
|
47
|
+
}
|
|
48
|
+
]
|
|
49
|
+
}
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## AI Parse Notes
|
|
53
|
+
- **Primary intent:** Declarative Mystique component definition for manifests.
|
|
54
|
+
- **Selection signals:** Match by `alias`, category, and required `Key Props`.
|
|
55
|
+
- **Assembly hints:** Combine with compatible parent/child components listed in `Composition Patterns`.
|
|
56
|
+
- **Safety checks:** Validate required props and data bindings before manifest generation.
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
---
|
|
2
|
+
alias: "fc.tabs.card"
|
|
3
|
+
aliases:
|
|
4
|
+
- fc.tabs.card
|
|
5
|
+
category: layout
|
|
6
|
+
module: Core
|
|
7
|
+
---
|
|
8
|
+
# fc.tabs.card
|
|
9
|
+
|
|
10
|
+
Material-UI Card with internal tab navigation. Each tab displays different descendant content by index.
|
|
11
|
+
|
|
12
|
+
## When to Use
|
|
13
|
+
- Organize entity detail page into sections (Items, Fulfilments, Activity)
|
|
14
|
+
- Group related content with tab navigation
|
|
15
|
+
|
|
16
|
+
## Key Props
|
|
17
|
+
| Prop | Type | Required | What it controls |
|
|
18
|
+
|------|------|----------|------------------|
|
|
19
|
+
| `tabs` | TabInfo[] | **Yes** | Tab definitions: `[{ label: "Items" }, { label: "Fulfilments" }]`. Alias: `layouts` also accepted |
|
|
20
|
+
| `width` | CardWidth | No | Card width (quarter/third/half/full or 1-12) |
|
|
21
|
+
| `urlKey` | string | No | URL parameter key for tab state persistence |
|
|
22
|
+
| `noCard` | boolean | No | Remove the card wrapper (transparent background, no elevation) |
|
|
23
|
+
|
|
24
|
+
## Data Binding
|
|
25
|
+
None — descendants inherit parent data context.
|
|
26
|
+
|
|
27
|
+
## Descendants
|
|
28
|
+
Yes — each descendant corresponds to a tab by index (descendant[0] = tab[0]).
|
|
29
|
+
|
|
30
|
+
## Composition Patterns
|
|
31
|
+
- Tab "Items" -> `fc.list` (dataSource: entity.items)
|
|
32
|
+
- Tab "Fulfilments" -> `fc.list` (dataSource: entity.fulfilments)
|
|
33
|
+
- Tab "Activity" -> `fc.activity.entity`
|
|
34
|
+
- Tab "Attributes" -> `fc.card.attributes.grid`
|
|
35
|
+
|
|
36
|
+
## Gotchas
|
|
37
|
+
- Number of tabs MUST match number of descendants -- mismatch causes empty tabs
|
|
38
|
+
- Each tab `label` is required
|
|
39
|
+
- Tab content is lazy-rendered (only active tab mounts)
|
|
40
|
+
- **Internal prop name is `layouts`** -- the component internally uses `layouts: TabInfo[]`, but `tabs` is also accepted in the manifest. Internally resolved as `tabs || layouts || []`. Either name works in the manifest, but `tabs` is the conventional choice
|
|
41
|
+
|
|
42
|
+
## Validation Rules
|
|
43
|
+
P10 (CRITICAL — tabs required), P11 (tab count should match descendants)
|
|
44
|
+
|
|
45
|
+
## Manifest Example
|
|
46
|
+
```json
|
|
47
|
+
{
|
|
48
|
+
"component": "fc.tabs.card",
|
|
49
|
+
"props": {
|
|
50
|
+
"tabs": [{ "label": "Items" }, { "label": "Fulfilments" }, { "label": "Activity" }]
|
|
51
|
+
},
|
|
52
|
+
"descendants": [
|
|
53
|
+
{ "component": "fc.list", "props": { "dataSource": "orderById.items.edges", "attributes": [] } },
|
|
54
|
+
{ "component": "fc.list", "props": { "dataSource": "orderById.fulfilments.edges", "attributes": [] } },
|
|
55
|
+
{ "component": "fc.activity.entity" }
|
|
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,69 @@
|
|
|
1
|
+
---
|
|
2
|
+
alias: "fc.tabs"
|
|
3
|
+
aliases:
|
|
4
|
+
- fc.tabs
|
|
5
|
+
- shared.components.material.MaterialTabsSet
|
|
6
|
+
category: layout
|
|
7
|
+
module: Core
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# fc.tabs
|
|
11
|
+
|
|
12
|
+
Page-level tab bar that creates URL-driven tab navigation with scrollable Material-UI tabs.
|
|
13
|
+
|
|
14
|
+
## When to Use
|
|
15
|
+
- Create top-level tab navigation on a page where each tab has its own URL segment
|
|
16
|
+
- Switch between different content views using browser-navigable tabs
|
|
17
|
+
- Build tabbed layouts where tab state persists in the URL
|
|
18
|
+
|
|
19
|
+
## Key Props
|
|
20
|
+
| Prop | Type | Required | What it controls |
|
|
21
|
+
|------|------|----------|------------------|
|
|
22
|
+
| `layouts` | TabInfo[] | Yes | Array of tab definitions: `{ label: string, urlValue?: string }` |
|
|
23
|
+
| `urlKey` | string | No | URL query parameter key used to track the active tab in the browser URL |
|
|
24
|
+
|
|
25
|
+
### TabInfo Structure
|
|
26
|
+
| Field | Type | Required | Description |
|
|
27
|
+
|-------|------|----------|-------------|
|
|
28
|
+
| `label` | string | Yes | Display text for the tab |
|
|
29
|
+
| `urlValue` | string | No | Value written to the URL when this tab is active |
|
|
30
|
+
|
|
31
|
+
## Descendants
|
|
32
|
+
Yes -- each descendant corresponds to a tab panel. The active tab index determines which descendant is rendered via `<Children index={value} />`.
|
|
33
|
+
|
|
34
|
+
## Composition Patterns
|
|
35
|
+
- `fc.page` > `fc.tabs` > `fc.tab.content` (one per tab)
|
|
36
|
+
- `fc.tabs` > any component (rendered as indexed tab panels)
|
|
37
|
+
|
|
38
|
+
## Gotchas
|
|
39
|
+
- This is DIFFERENT from `fc.tabs.card` -- `fc.tabs` creates URL segments for navigation, while `fc.tabs.card` is a visual-only card-level tab set.
|
|
40
|
+
- The `layouts` prop defines the tab labels and URL values; descendants define the tab content. The count of `layouts` must match the count of descendants.
|
|
41
|
+
- Tab state is managed via `useTabs` hook which syncs with the URL. Changing tabs updates the browser URL.
|
|
42
|
+
- The tab bar is scrollable (`variant="scrollable"`) to handle many tabs without overflow.
|
|
43
|
+
- Registered with category `layout`.
|
|
44
|
+
|
|
45
|
+
## Manifest Example
|
|
46
|
+
```json
|
|
47
|
+
{
|
|
48
|
+
"component": "fc.tabs",
|
|
49
|
+
"props": {
|
|
50
|
+
"layouts": [
|
|
51
|
+
{ "label": "Details", "urlValue": "details" },
|
|
52
|
+
{ "label": "Items", "urlValue": "items" },
|
|
53
|
+
{ "label": "History", "urlValue": "history" }
|
|
54
|
+
],
|
|
55
|
+
"urlKey": "tab"
|
|
56
|
+
},
|
|
57
|
+
"descendants": [
|
|
58
|
+
{ "component": "fc.tab.content", "descendants": [...] },
|
|
59
|
+
{ "component": "fc.tab.content", "descendants": [...] },
|
|
60
|
+
{ "component": "fc.tab.content", "descendants": [...] }
|
|
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,73 @@
|
|
|
1
|
+
---
|
|
2
|
+
alias: "fc.tile.metric"
|
|
3
|
+
aliases:
|
|
4
|
+
- fc.tile.metric
|
|
5
|
+
category: content
|
|
6
|
+
module: Core
|
|
7
|
+
---
|
|
8
|
+
# fc.tile.metric
|
|
9
|
+
|
|
10
|
+
> **NOTE: `fc.tile.metric` is NOT a registered component in the Mystique core source.** It is not found in `ComponentRegistry.register()`. The closest match is `fc.dashboard.threshold` (registered as `ThresholdTile`), which provides identical functionality. Use `fc.dashboard.threshold` instead and simply omit `thresholdLow`/`thresholdHigh` for a simple metric tile without threshold coloring.
|
|
11
|
+
|
|
12
|
+
Simple KPI tile displaying a label and value. Equivalent to `fc.dashboard.threshold` with no threshold props set -- the tile renders green (#4CAF50) by default when thresholds are omitted.
|
|
13
|
+
|
|
14
|
+
## When to Use
|
|
15
|
+
- Use `fc.dashboard.threshold` instead -- this alias is not registered in core Mystique
|
|
16
|
+
- Simple count tiles (Orders Today, Pending Fulfilments) work by using `fc.dashboard.threshold` without threshold props
|
|
17
|
+
|
|
18
|
+
## Key Props
|
|
19
|
+
Same as `fc.dashboard.threshold` -- see that component for the full prop reference.
|
|
20
|
+
|
|
21
|
+
| Prop | Type | Required | What it controls |
|
|
22
|
+
|------|------|----------|------------------|
|
|
23
|
+
| `label` | string | No | Metric label text (supports templates) |
|
|
24
|
+
| `value` | string/number | No | Metric value (supports templates) |
|
|
25
|
+
| `link` | string | No | Click navigation URL (supports templates) |
|
|
26
|
+
| `width` | CardWidth | No | Tile width (default: `quarter` / 3) |
|
|
27
|
+
| `variant` | `'large'` or `'small'` | No | Value font size: `large` = 54px center, `small` = 36px left (default: `large`) |
|
|
28
|
+
| `options` | TileOptions | No | Conditional styling based on value (see below) |
|
|
29
|
+
|
|
30
|
+
### Expression-Based Conditional Styling
|
|
31
|
+
|
|
32
|
+
Use `options.styles[]` to change tile text/icon color based on data values:
|
|
33
|
+
|
|
34
|
+
```json
|
|
35
|
+
{
|
|
36
|
+
"options": {
|
|
37
|
+
"styles": [
|
|
38
|
+
{
|
|
39
|
+
"expression": "{{gt orders.edges.length 10}}",
|
|
40
|
+
"text": { "color": "error" }
|
|
41
|
+
}
|
|
42
|
+
]
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
When `expression` evaluates to truthy, the style is applied. This works on both `fc.tile.metric` and `fc.dashboard.threshold`.
|
|
48
|
+
|
|
49
|
+
## Data Binding
|
|
50
|
+
Value supports template strings.
|
|
51
|
+
|
|
52
|
+
## Descendants
|
|
53
|
+
No.
|
|
54
|
+
|
|
55
|
+
## Gotchas
|
|
56
|
+
- **Not a distinct component registration** -- `fc.tile.metric` does not appear in the Mystique core component registry. If a deployment uses this name, it may be registered via a custom plugin or extension. The standard approach is to use `fc.dashboard.threshold` without threshold props
|
|
57
|
+
|
|
58
|
+
## Validation Rules
|
|
59
|
+
P12 (CRITICAL -- both label and value required)
|
|
60
|
+
|
|
61
|
+
## Manifest Example
|
|
62
|
+
```json
|
|
63
|
+
{
|
|
64
|
+
"component": "fc.dashboard.threshold",
|
|
65
|
+
"props": { "label": "Orders Today", "value": "{{todayCount}}", "link": "/orders?created=today" }
|
|
66
|
+
}
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## AI Parse Notes
|
|
70
|
+
- **Primary intent:** Declarative Mystique component definition for manifests.
|
|
71
|
+
- **Selection signals:** Match by `alias`, category, and required `Key Props`.
|
|
72
|
+
- **Assembly hints:** Combine with compatible parent/child components listed in `Composition Patterns`.
|
|
73
|
+
- **Safety checks:** Validate required props and data bindings before manifest generation.
|