@cxtms/cx-schema 1.9.264 → 1.9.266
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.
package/package.json
CHANGED
|
@@ -82,6 +82,7 @@
|
|
|
82
82
|
"avatar": { "$ref": "avatar.json" },
|
|
83
83
|
"infoLine": { "$ref": "infoLine.json" },
|
|
84
84
|
"progressBar": { "$ref": "progressBar.json" },
|
|
85
|
-
"planner": { "$ref": "planner.json" }
|
|
85
|
+
"planner": { "$ref": "planner.json" },
|
|
86
|
+
"passkeys": { "$ref": "passkeys.json" }
|
|
86
87
|
}
|
|
87
88
|
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"title": "Passkeys Component",
|
|
4
|
+
"description": "WebAuthn passkey credential manager for the authenticated user",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"properties": {
|
|
7
|
+
"component": {
|
|
8
|
+
"type": "string",
|
|
9
|
+
"const": "passkeys"
|
|
10
|
+
},
|
|
11
|
+
"name": {
|
|
12
|
+
"type": "string",
|
|
13
|
+
"description": "Component name identifier"
|
|
14
|
+
},
|
|
15
|
+
"props": {
|
|
16
|
+
"type": "object",
|
|
17
|
+
"description": "Standard component properties; passkeys has no type-specific properties",
|
|
18
|
+
"additionalProperties": true
|
|
19
|
+
},
|
|
20
|
+
"children": {
|
|
21
|
+
"$ref": "../schemas.json#/definitions/componentChildren"
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"required": ["component"],
|
|
25
|
+
"additionalProperties": false
|
|
26
|
+
}
|
|
@@ -175,7 +175,7 @@ Read the relevant category ref file when building specific component types:
|
|
|
175
175
|
| **Data Display** | `dataGrid`, `text`, `markup`, `badge`, `avatar`, `infoLine`, `progressBar`, `icon`, `image`, `photo`, `summary`, `diff`, `viewer`, `embed` | `skills/cxtms-module-builder/ref-components-display.md` |
|
|
176
176
|
| **Interactive & Nav** | `button`, `dropdown`, `menuButton`, `link`, `redirect`, `navbar`, `navbarItem`, `navbarLink`, `navDropdown` | `skills/cxtms-module-builder/ref-components-interactive.md` |
|
|
177
177
|
| **Data & Collections** | `collection`, `list`, `listItem`, `datasource`, `script` | `skills/cxtms-module-builder/ref-components-data.md` |
|
|
178
|
-
| **Specialized** | `calendar`, `notes`, `dashboard`, `dashboard-widget`, `widget`, `timeline`, `timeline-grid`, `planner`, `oauth2` | `skills/cxtms-module-builder/ref-components-specialized.md` |
|
|
178
|
+
| **Specialized** | `calendar`, `notes`, `dashboard`, `dashboard-widget`, `widget`, `timeline`, `timeline-grid`, `planner`, `oauth2`, `passkeys` | `skills/cxtms-module-builder/ref-components-specialized.md` |
|
|
179
179
|
|
|
180
180
|
### Templates
|
|
181
181
|
|
|
@@ -383,6 +383,8 @@ the common cases — use them first. Reach for `eval` only when nothing below fi
|
|
|
383
383
|
| `dateDiff` | `{{ dateDiff dueDate startDate }}` | Whole days, first minus second |
|
|
384
384
|
| `daysBetween` | `{{ daysBetween pickupDate deliveryDate }}` | Absolute day difference |
|
|
385
385
|
| `daysUntil` / `daysAgo` | `{{ daysUntil dueDate }}` | Days between now and the date |
|
|
386
|
+
| `minutesAgo` | `{{ minutesAgo arrivedAt }}` | Whole minutes from the date to now; null for missing/invalid dates |
|
|
387
|
+
| `elapsed` | `{{ elapsed arrivedAt departedAt }}` | Elapsed hours/minutes (`1h 05m`); optional end path, otherwise now |
|
|
386
388
|
| `isDateBefore` / `isDateAfter` | `{{ isDateBefore pickupDate deliveryDate }}` | Date comparison |
|
|
387
389
|
| `hasPermission` | `{{ hasPermission Orders/Update }}` | Current user permission check |
|
|
388
390
|
| `fromConfig` | `{{ fromConfig apps.myFeature key }}` | Organization config lookup |
|
|
@@ -588,6 +588,22 @@ props:
|
|
|
588
588
|
|
|
589
589
|
---
|
|
590
590
|
|
|
591
|
+
## passkeys
|
|
592
|
+
|
|
593
|
+
Web-only WebAuthn credential manager for the authenticated user. It lists registered passkeys and supports registration, rename, and deletion.
|
|
594
|
+
|
|
595
|
+
The component has no type-specific props. It renders its children above the credential manager, but renders nothing—including its children—when the tenant disables `enablePasskeys` or the browser lacks WebAuthn support. Native mobile does not currently render this component.
|
|
596
|
+
|
|
597
|
+
```yaml
|
|
598
|
+
component: passkeys
|
|
599
|
+
name: AccountPasskeys
|
|
600
|
+
children:
|
|
601
|
+
- component: text
|
|
602
|
+
name: Heading
|
|
603
|
+
props:
|
|
604
|
+
text: Passkeys
|
|
605
|
+
```
|
|
606
|
+
|
|
591
607
|
## oauth2
|
|
592
608
|
|
|
593
609
|
OAuth2 authorization flow button. Opens popup for auth, exchanges code for token.
|