@kerfjs/ui 5.0.0-beta.18 → 5.0.0-beta.22
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/README.md +114 -3
- package/ai/application-ui-diagnostic-ids-v1.json +92 -0
- package/ai/application-ui-profile-sync.cjs +529 -0
- package/ai/application-ui-profile.d.mts +1 -0
- package/ai/application-ui-profile.d.ts +102 -0
- package/ai/application-ui-profile.defaults.json +41 -0
- package/ai/application-ui-profile.mjs +626 -0
- package/ai/application-ui-profile.schema.json +130 -0
- package/ai/catalog-authoring.json +25 -0
- package/ai/catalog-authoring.schema.json +61 -0
- package/ai/compile-time-contracts-v1.json +101 -0
- package/ai/compile-time-contracts-v1.schema.json +49 -0
- package/ai/component-catalog-extension-v2.d.ts +7 -0
- package/ai/component-catalog-extension-v2.schema.json +7 -0
- package/ai/component-catalog-v2-overrides.json +326 -0
- package/ai/component-catalog-v2.d.ts +67 -0
- package/ai/component-catalog-v2.json +4441 -0
- package/ai/component-catalog-v2.schema.json +246 -0
- package/ai/component-catalog.json +150 -6
- package/ai/public-api-signatures-v1.md +294 -64
- package/ai/skill.md +41 -5
- package/ai/webawesome-jsx-signatures-v1.md +1 -1
- package/analyzer/cli.mjs +46 -0
- package/analyzer/index.d.mts +45 -0
- package/analyzer/index.mjs +743 -0
- package/analyzer/report.schema.json +66 -0
- package/dist/browser/pane.js +3 -0
- package/dist/browser/sunken-panel.js +3 -0
- package/dist/catalog-resources.d.ts +34 -0
- package/dist/catalog-resources.js +22 -0
- package/dist/catalog-resources.js.map +1 -0
- package/dist/catalog.d.ts +21 -3
- package/dist/catalog.js +239 -210
- package/dist/catalog.js.map +1 -1
- package/dist/{chunk-ZK2G3VR5.js → chunk-5VTB2BKP.js} +1 -1
- package/dist/chunk-5VTB2BKP.js.map +1 -0
- package/dist/{chunk-S3HKPI7I.js → chunk-7KEUJIIC.js} +1 -1
- package/dist/chunk-7KEUJIIC.js.map +1 -0
- package/dist/{chunk-NVWXKU37.js → chunk-AASLYRGE.js} +1 -1
- package/dist/chunk-AASLYRGE.js.map +1 -0
- package/dist/{chunk-QIRXYKCE.js → chunk-DSNIYOZ3.js} +3 -2
- package/dist/chunk-DSNIYOZ3.js.map +1 -0
- package/dist/{chunk-ENVTNLYC.js → chunk-GP5DP5DL.js} +55 -15
- package/dist/chunk-GP5DP5DL.js.map +1 -0
- package/dist/chunk-JRKSK2HX.js +79 -0
- package/dist/chunk-JRKSK2HX.js.map +1 -0
- package/dist/{chunk-U5IFGQCD.js → chunk-K57KRAOV.js} +1 -1
- package/dist/chunk-K57KRAOV.js.map +1 -0
- package/dist/{chunk-ZVI5YST2.js → chunk-M7JBER5U.js} +1 -1
- package/dist/chunk-M7JBER5U.js.map +1 -0
- package/dist/{chunk-43FUQH35.js → chunk-OHU6CI22.js} +2 -2
- package/dist/{chunk-43FUQH35.js.map → chunk-OHU6CI22.js.map} +1 -1
- package/dist/{chunk-4TRDV6RL.js → chunk-OZWU5ZPZ.js} +1 -1
- package/dist/chunk-OZWU5ZPZ.js.map +1 -0
- package/dist/{chunk-JTHUXDN2.js → chunk-RYRIFZCT.js} +3 -3
- package/dist/chunk-RYRIFZCT.js.map +1 -0
- package/dist/{chunk-6ETZKKAE.js → chunk-VLYV65LK.js} +1 -1
- package/dist/chunk-VLYV65LK.js.map +1 -0
- package/dist/chunk-W4CXQYSG.js +23 -0
- package/dist/chunk-W4CXQYSG.js.map +1 -0
- package/dist/{chunk-S3PCZ7NV.js → chunk-W7YD6E4N.js} +1 -1
- package/dist/chunk-W7YD6E4N.js.map +1 -0
- package/dist/index.d.ts +6 -4
- package/dist/index.js +14 -12
- package/dist/list-header.d.ts +29 -8
- package/dist/list-header.js +1 -1
- package/dist/nav-stack.js +1 -1
- package/dist/pane.d.ts +49 -0
- package/dist/pane.js +4 -0
- package/dist/pane.js.map +1 -0
- package/dist/panel-header.d.ts +9 -3
- package/dist/panel-header.js +1 -1
- package/dist/segmented-control.d.ts +6 -6
- package/dist/segmented-control.js +1 -1
- package/dist/select.d.ts +10 -4
- package/dist/select.js +1 -1
- package/dist/split-view.js +2 -2
- package/dist/state-banner.d.ts +3 -2
- package/dist/state-banner.js +1 -1
- package/dist/styles/catalog.css +6 -6
- package/dist/styles/layout.css +2 -20
- package/dist/styles/pane.css +62 -0
- package/dist/styles/segmented-control.css +3 -7
- package/dist/styles/sunken-panel.css +18 -0
- package/dist/sunken-panel.d.ts +16 -0
- package/dist/sunken-panel.js +3 -0
- package/dist/sunken-panel.js.map +1 -0
- package/dist/tab-bar.d.ts +3 -2
- package/dist/tab-bar.js +1 -1
- package/dist/tab-scaffold.d.ts +6 -6
- package/dist/tab-scaffold.js.map +1 -1
- package/dist/token-search-field.d.ts +25 -9
- package/dist/token-search-field.js +1 -1
- package/dist/toolbar-control-group.d.ts +9 -5
- package/dist/toolbar-control-group.js +1 -1
- package/dist/toolbar-text.d.ts +10 -11
- package/dist/toolbar-text.js +1 -1
- package/dist/wire-tab-bars.d.ts +5 -2
- package/dist/wire-tab-bars.js +1 -1
- package/dist/wire-token-search-fields.d.ts +11 -6
- package/dist/wire-token-search-fields.js +1 -1
- package/docs/catalog.md +186 -67
- package/docs/component-contract.md +102 -5
- package/docs/component-selection.md +9 -5
- package/docs/design/templates/panel-header/icon-actions-dark.svg +1 -1
- package/docs/design/templates/panel-header/icon-actions.svg +1 -1
- package/docs/design/templates/panel-header/icon-summary-actions-dark.svg +1 -1
- package/docs/design/templates/panel-header/icon-summary-actions.svg +1 -1
- package/docs/design/templates/panel-header/no-icon-dark.svg +1 -1
- package/docs/design/templates/panel-header/no-icon.svg +1 -1
- package/docs/design/templates/panel-header/page-heading-dark.svg +1 -1
- package/docs/design/templates/panel-header/page-heading.svg +1 -1
- package/docs/design/templates/panel-header/title-only-dark.svg +1 -1
- package/docs/design/templates/panel-header/title-only.svg +1 -1
- package/docs/design/templates/panel-header-dark.svg +5 -5
- package/docs/design/templates/panel-header.svg +5 -5
- package/docs/design/templates/segmented-control/equal-dark.svg +1 -1
- package/docs/design/templates/segmented-control/equal.svg +1 -1
- package/docs/design/templates/segmented-control-dark.svg +1 -1
- package/docs/design/templates/segmented-control.svg +1 -1
- package/docs/design/templates/toolbar/title-and-actions-dark.svg +1 -1
- package/docs/design/templates/toolbar/title-and-actions.svg +1 -1
- package/docs/design/templates/toolbar-control-group/with-text-dark.svg +1 -1
- package/docs/design/templates/toolbar-control-group/with-text.svg +1 -1
- package/docs/design/templates/toolbar-control-group-dark.svg +1 -1
- package/docs/design/templates/toolbar-control-group.svg +1 -1
- package/docs/design/templates/toolbar-dark.svg +1 -1
- package/docs/design/templates/toolbar-text/default-dark.svg +1 -1
- package/docs/design/templates/toolbar-text/default.svg +1 -1
- package/docs/design/templates/toolbar-text/large-dark.svg +1 -1
- package/docs/design/templates/toolbar-text/large.svg +1 -1
- package/docs/design/templates/toolbar-text/small-dark.svg +1 -1
- package/docs/design/templates/toolbar-text/small.svg +1 -1
- package/docs/design/templates/toolbar-text-dark.svg +3 -3
- package/docs/design/templates/toolbar-text.svg +3 -3
- package/docs/design/templates/toolbar.svg +1 -1
- package/docs/design/templates.md +11 -6
- package/docs/design-philosophy.md +2 -4
- package/docs/examples/application-ui-profile.json +60 -0
- package/docs/examples/component-catalog-extension-v2.json +81 -0
- package/docs/layout.md +42 -23
- package/docs/sunken-panel.md +43 -0
- package/docs/type-contracts.md +99 -0
- package/docs/ui-analyzer.md +81 -0
- package/docs/ui-doctor.md +77 -0
- package/docs/ui-evaluator.md +122 -0
- package/doctor/cli.mjs +115 -0
- package/doctor/config.schema.json +68 -0
- package/doctor/index.d.mts +116 -0
- package/doctor/index.mjs +1256 -0
- package/doctor/report.schema.json +118 -0
- package/evaluator/cli.mjs +89 -0
- package/evaluator/index.d.mts +90 -0
- package/evaluator/index.mjs +1138 -0
- package/evaluator/report.schema.json +152 -0
- package/llms.txt +40 -3
- package/package.json +66 -8
- package/ux-demo/recipes/compact-toolbar.tsx +2 -2
- package/ux-demo/recipes/composer-form.tsx +1 -1
- package/dist/chunk-4TRDV6RL.js.map +0 -1
- package/dist/chunk-6ETZKKAE.js.map +0 -1
- package/dist/chunk-ENVTNLYC.js.map +0 -1
- package/dist/chunk-JTHUXDN2.js.map +0 -1
- package/dist/chunk-NVWXKU37.js.map +0 -1
- package/dist/chunk-QIRXYKCE.js.map +0 -1
- package/dist/chunk-S3HKPI7I.js.map +0 -1
- package/dist/chunk-S3PCZ7NV.js.map +0 -1
- package/dist/chunk-U5IFGQCD.js.map +0 -1
- package/dist/chunk-ZK2G3VR5.js.map +0 -1
- package/dist/chunk-ZVI5YST2.js.map +0 -1
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://raw.githubusercontent.com/brianwestphal/kerf/main/ui/ai/application-ui-profile.schema.json",
|
|
4
|
+
"title": "Kerf application UI profile",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"required": ["schemaVersion", "scope"],
|
|
7
|
+
"properties": {
|
|
8
|
+
"$schema": { "type": "string" },
|
|
9
|
+
"schemaVersion": { "const": 1 },
|
|
10
|
+
"scope": { "enum": ["package", "workspace", "directory"] },
|
|
11
|
+
"catalogs": {
|
|
12
|
+
"type": "array",
|
|
13
|
+
"items": { "$ref": "#/$defs/catalog" },
|
|
14
|
+
"uniqueItems": true
|
|
15
|
+
},
|
|
16
|
+
"preferences": {
|
|
17
|
+
"type": "object",
|
|
18
|
+
"propertyNames": { "pattern": "^[a-z][a-z0-9-]*$" },
|
|
19
|
+
"additionalProperties": { "$ref": "#/$defs/preference" }
|
|
20
|
+
},
|
|
21
|
+
"theme": { "$ref": "#/$defs/theme" },
|
|
22
|
+
"tokens": {
|
|
23
|
+
"type": "object",
|
|
24
|
+
"propertyNames": { "pattern": "^--kui-[a-z0-9-]+$" },
|
|
25
|
+
"additionalProperties": { "type": "string", "minLength": 1 }
|
|
26
|
+
},
|
|
27
|
+
"layout": { "$ref": "#/$defs/layout" },
|
|
28
|
+
"exceptions": {
|
|
29
|
+
"type": "array",
|
|
30
|
+
"items": { "$ref": "#/$defs/exception" }
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
"additionalProperties": false,
|
|
34
|
+
"$defs": {
|
|
35
|
+
"stringList": {
|
|
36
|
+
"type": "array",
|
|
37
|
+
"items": { "type": "string", "minLength": 1 },
|
|
38
|
+
"uniqueItems": true
|
|
39
|
+
},
|
|
40
|
+
"catalogLocation": {
|
|
41
|
+
"type": "object",
|
|
42
|
+
"required": ["path", "schemaVersion"],
|
|
43
|
+
"properties": {
|
|
44
|
+
"path": { "type": "string", "minLength": 1 },
|
|
45
|
+
"schemaVersion": { "type": "integer", "minimum": 1 }
|
|
46
|
+
},
|
|
47
|
+
"additionalProperties": false
|
|
48
|
+
},
|
|
49
|
+
"catalog": {
|
|
50
|
+
"type": "object",
|
|
51
|
+
"required": ["package", "composition"],
|
|
52
|
+
"properties": {
|
|
53
|
+
"package": { "type": "string", "minLength": 1 },
|
|
54
|
+
"selection": { "$ref": "#/$defs/catalogLocation" },
|
|
55
|
+
"composition": { "$ref": "#/$defs/catalogLocation" }
|
|
56
|
+
},
|
|
57
|
+
"additionalProperties": false,
|
|
58
|
+
"allOf": [
|
|
59
|
+
{
|
|
60
|
+
"if": {
|
|
61
|
+
"required": ["package"],
|
|
62
|
+
"properties": { "package": { "const": "@kerfjs/ui" } }
|
|
63
|
+
},
|
|
64
|
+
"then": { "required": ["selection"] }
|
|
65
|
+
}
|
|
66
|
+
]
|
|
67
|
+
},
|
|
68
|
+
"preference": {
|
|
69
|
+
"type": "object",
|
|
70
|
+
"required": ["preferred"],
|
|
71
|
+
"properties": {
|
|
72
|
+
"preferred": { "type": "string", "pattern": "^.+:.+$" },
|
|
73
|
+
"avoid": { "$ref": "#/$defs/stringList" },
|
|
74
|
+
"rationale": { "type": "string", "minLength": 1 }
|
|
75
|
+
},
|
|
76
|
+
"additionalProperties": false
|
|
77
|
+
},
|
|
78
|
+
"theme": {
|
|
79
|
+
"type": "object",
|
|
80
|
+
"properties": {
|
|
81
|
+
"colorScheme": { "enum": ["light", "dark", "invert", "system"] },
|
|
82
|
+
"allowedColorSchemes": {
|
|
83
|
+
"type": "array",
|
|
84
|
+
"items": { "enum": ["light", "dark", "invert", "system"] },
|
|
85
|
+
"minItems": 1,
|
|
86
|
+
"uniqueItems": true
|
|
87
|
+
},
|
|
88
|
+
"density": { "enum": ["standard", "compact"] },
|
|
89
|
+
"allowedDensities": {
|
|
90
|
+
"type": "array",
|
|
91
|
+
"items": { "enum": ["standard", "compact"] },
|
|
92
|
+
"minItems": 1,
|
|
93
|
+
"uniqueItems": true
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
"additionalProperties": false
|
|
97
|
+
},
|
|
98
|
+
"layout": {
|
|
99
|
+
"type": "object",
|
|
100
|
+
"properties": {
|
|
101
|
+
"shell": { "type": "string", "pattern": "^.+:.+$" },
|
|
102
|
+
"pane": { "type": "string", "pattern": "^.+:.+$" },
|
|
103
|
+
"responsiveStrategy": {
|
|
104
|
+
"enum": ["device-class", "container", "application"]
|
|
105
|
+
},
|
|
106
|
+
"compactNavigation": {
|
|
107
|
+
"enum": ["nav-stack", "tab-scaffold", "application"]
|
|
108
|
+
},
|
|
109
|
+
"scrollOwnership": { "enum": ["one-per-pane", "application"] },
|
|
110
|
+
"spacingScale": { "enum": ["kerf-five-step", "application"] }
|
|
111
|
+
},
|
|
112
|
+
"additionalProperties": false
|
|
113
|
+
},
|
|
114
|
+
"exception": {
|
|
115
|
+
"type": "object",
|
|
116
|
+
"required": ["id", "rules", "target", "rationale"],
|
|
117
|
+
"properties": {
|
|
118
|
+
"id": { "type": "string", "pattern": "^[a-z][a-z0-9-]*$" },
|
|
119
|
+
"rules": { "$ref": "#/$defs/stringList" },
|
|
120
|
+
"target": {
|
|
121
|
+
"type": "string",
|
|
122
|
+
"minLength": 1,
|
|
123
|
+
"pattern": "^(?!/)(?!.*(^|/)\\.\\.(/|$))(?!.*[?*]).+"
|
|
124
|
+
},
|
|
125
|
+
"rationale": { "type": "string", "minLength": 12 }
|
|
126
|
+
},
|
|
127
|
+
"additionalProperties": false
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "./catalog-authoring.schema.json",
|
|
3
|
+
"schemaVersion": 1,
|
|
4
|
+
"package": "@kerfjs/ui",
|
|
5
|
+
"scope": "catalog-demo-authoring",
|
|
6
|
+
"authoritativeGuide": "docs/catalog.md#catalog-demo-authoring-contract",
|
|
7
|
+
"apiSignatures": "ai/public-api-signatures-v1.md#kerfjsuicatalog",
|
|
8
|
+
"imports": {
|
|
9
|
+
"layout": "@kerfjs/ui/catalog",
|
|
10
|
+
"wiring": "@kerfjs/ui/wire-catalog"
|
|
11
|
+
},
|
|
12
|
+
"helpers": [
|
|
13
|
+
"Catalog",
|
|
14
|
+
"CatalogExample",
|
|
15
|
+
"CatalogExampleStack",
|
|
16
|
+
"wireCatalog",
|
|
17
|
+
"wireCatalogGeometryOverlay",
|
|
18
|
+
"revealCatalogEntry"
|
|
19
|
+
],
|
|
20
|
+
"metadata": {
|
|
21
|
+
"slot": "rootAttributes",
|
|
22
|
+
"demo": "data-demo",
|
|
23
|
+
"geometryOverlaySkip": "data-catalog-geometry-overlay-skip"
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://raw.githubusercontent.com/brianwestphal/kerf/main/ui/ai/catalog-authoring.schema.json",
|
|
4
|
+
"title": "Kerf UI Catalog authoring discovery",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"required": [
|
|
7
|
+
"schemaVersion",
|
|
8
|
+
"package",
|
|
9
|
+
"scope",
|
|
10
|
+
"authoritativeGuide",
|
|
11
|
+
"apiSignatures",
|
|
12
|
+
"imports",
|
|
13
|
+
"helpers",
|
|
14
|
+
"metadata"
|
|
15
|
+
],
|
|
16
|
+
"properties": {
|
|
17
|
+
"$schema": { "type": "string" },
|
|
18
|
+
"schemaVersion": { "const": 1 },
|
|
19
|
+
"package": { "const": "@kerfjs/ui" },
|
|
20
|
+
"scope": { "const": "catalog-demo-authoring" },
|
|
21
|
+
"authoritativeGuide": { "type": "string", "minLength": 1 },
|
|
22
|
+
"apiSignatures": { "type": "string", "minLength": 1 },
|
|
23
|
+
"imports": {
|
|
24
|
+
"type": "object",
|
|
25
|
+
"required": ["layout", "wiring"],
|
|
26
|
+
"properties": {
|
|
27
|
+
"layout": { "const": "@kerfjs/ui/catalog" },
|
|
28
|
+
"wiring": { "const": "@kerfjs/ui/wire-catalog" }
|
|
29
|
+
},
|
|
30
|
+
"additionalProperties": false
|
|
31
|
+
},
|
|
32
|
+
"helpers": {
|
|
33
|
+
"type": "array",
|
|
34
|
+
"items": {
|
|
35
|
+
"enum": [
|
|
36
|
+
"Catalog",
|
|
37
|
+
"CatalogExample",
|
|
38
|
+
"CatalogExampleStack",
|
|
39
|
+
"wireCatalog",
|
|
40
|
+
"wireCatalogGeometryOverlay",
|
|
41
|
+
"revealCatalogEntry"
|
|
42
|
+
]
|
|
43
|
+
},
|
|
44
|
+
"minItems": 6,
|
|
45
|
+
"uniqueItems": true
|
|
46
|
+
},
|
|
47
|
+
"metadata": {
|
|
48
|
+
"type": "object",
|
|
49
|
+
"required": ["slot", "demo", "geometryOverlaySkip"],
|
|
50
|
+
"properties": {
|
|
51
|
+
"slot": { "const": "rootAttributes" },
|
|
52
|
+
"demo": { "const": "data-demo" },
|
|
53
|
+
"geometryOverlaySkip": {
|
|
54
|
+
"const": "data-catalog-geometry-overlay-skip"
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
"additionalProperties": false
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
"additionalProperties": false
|
|
61
|
+
}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "./compile-time-contracts-v1.schema.json",
|
|
3
|
+
"schemaVersion": 1,
|
|
4
|
+
"package": "@kerfjs/ui",
|
|
5
|
+
"fixture": "tests/consumer-types/contracts/consumer.ts",
|
|
6
|
+
"contracts": [
|
|
7
|
+
{
|
|
8
|
+
"id": "KUI-T001",
|
|
9
|
+
"catalogKey": "@kerfjs/ui:list-header",
|
|
10
|
+
"publicImport": "@kerfjs/ui/list-header",
|
|
11
|
+
"symbols": ["ListHeaderProps"],
|
|
12
|
+
"kind": "discriminated-union",
|
|
13
|
+
"summary": "ListHeader passive, trailing-action, and disclosure modes require only the inputs their rendered behavior uses."
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"id": "KUI-T002",
|
|
17
|
+
"catalogKey": "@kerfjs/ui:select",
|
|
18
|
+
"publicImport": "@kerfjs/ui/select",
|
|
19
|
+
"symbols": ["SelectProps"],
|
|
20
|
+
"kind": "accessible-name",
|
|
21
|
+
"summary": "Select requires either a visible label or an explicit ARIA label."
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"id": "KUI-T003",
|
|
25
|
+
"catalogKey": "@kerfjs/ui:select",
|
|
26
|
+
"publicImport": "@kerfjs/ui/select",
|
|
27
|
+
"symbols": ["SelectChoice", "SelectProps"],
|
|
28
|
+
"kind": "literal-identity",
|
|
29
|
+
"summary": "Literal Select values are constrained to the declared choice values; dynamic integrations may widen the generic to string."
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"id": "KUI-T004",
|
|
33
|
+
"catalogKey": "@kerfjs/ui:segmented-control",
|
|
34
|
+
"publicImport": "@kerfjs/ui/segmented-control",
|
|
35
|
+
"symbols": ["SegmentedControlChoice", "SegmentedControlProps"],
|
|
36
|
+
"kind": "literal-identity",
|
|
37
|
+
"summary": "Literal SegmentedControl values are constrained to the declared choice values; dynamic integrations may widen the generic to string."
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"id": "KUI-T005",
|
|
41
|
+
"catalogKey": "@kerfjs/ui:token-search-field",
|
|
42
|
+
"publicImport": "@kerfjs/ui/token-search-field",
|
|
43
|
+
"symbols": ["TokenSearchFieldProps"],
|
|
44
|
+
"kind": "discriminated-union",
|
|
45
|
+
"summary": "Expanded state and expand-action inputs exist only for collapsible TokenSearchField variants."
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"id": "KUI-T006",
|
|
49
|
+
"catalogKey": "@kerfjs/ui:token-search-field",
|
|
50
|
+
"publicImport": "@kerfjs/ui/token-search-field",
|
|
51
|
+
"symbols": ["TokenSearchEditorAttributes"],
|
|
52
|
+
"kind": "protected-attributes",
|
|
53
|
+
"summary": "TokenSearchField editor metadata cannot replace component-owned identity, morph, count, or placeholder attributes."
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"id": "KUI-T007",
|
|
57
|
+
"catalogKey": "@kerfjs/ui:panel-header",
|
|
58
|
+
"publicImport": "@kerfjs/ui/panel-header",
|
|
59
|
+
"symbols": ["PanelHeaderProps"],
|
|
60
|
+
"kind": "conditional-property",
|
|
61
|
+
"summary": "PanelHeader summaryId cannot be supplied without rendered summary content."
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"id": "KUI-T008",
|
|
65
|
+
"catalogKey": "@kerfjs/ui:toolbar-text",
|
|
66
|
+
"publicImport": "@kerfjs/ui/toolbar-text",
|
|
67
|
+
"symbols": ["ToolbarTextProps"],
|
|
68
|
+
"kind": "conditional-property",
|
|
69
|
+
"summary": "ToolbarText maxLines is accepted only when wrapping is enabled."
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"id": "KUI-T009",
|
|
73
|
+
"publicImport": "@kerfjs/ui/tab-scaffold",
|
|
74
|
+
"symbols": ["TabScaffoldTab", "TabScaffoldProps"],
|
|
75
|
+
"kind": "literal-identity",
|
|
76
|
+
"summary": "Literal TabScaffold active ids are constrained to the declared tab ids; dynamic integrations may widen the generic to string."
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"id": "KUI-T010",
|
|
80
|
+
"catalogKey": "@kerfjs/ui:token-search-field",
|
|
81
|
+
"publicImport": "@kerfjs/ui/wire-token-search-fields",
|
|
82
|
+
"symbols": ["TokenSearchKeyboardOptions", "WireTokenSearchFieldsOptions"],
|
|
83
|
+
"kind": "controlled-callback",
|
|
84
|
+
"summary": "Adjacent-token removal requires the callback that commits removal to application-owned state."
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"id": "KUI-T011",
|
|
88
|
+
"publicImport": "@kerfjs/ui",
|
|
89
|
+
"symbols": [
|
|
90
|
+
"StateBannerUrgency",
|
|
91
|
+
"TabActivation",
|
|
92
|
+
"ToolbarControlGroupAppearance",
|
|
93
|
+
"ToolbarControlGroupButtonAppearance",
|
|
94
|
+
"ToolbarControlGroupShape",
|
|
95
|
+
"ToolbarControlGroupTone"
|
|
96
|
+
],
|
|
97
|
+
"kind": "finite-vocabulary",
|
|
98
|
+
"summary": "Finite public variant vocabularies are named exported unions rather than anonymous string sets."
|
|
99
|
+
}
|
|
100
|
+
]
|
|
101
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://raw.githubusercontent.com/brianwestphal/kerf/main/ui/ai/compile-time-contracts-v1.schema.json",
|
|
4
|
+
"title": "Kerf UI compile-time contracts",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"required": ["schemaVersion", "package", "fixture", "contracts"],
|
|
7
|
+
"properties": {
|
|
8
|
+
"$schema": { "type": "string" },
|
|
9
|
+
"schemaVersion": { "const": 1 },
|
|
10
|
+
"package": { "const": "@kerfjs/ui" },
|
|
11
|
+
"fixture": { "type": "string", "minLength": 1 },
|
|
12
|
+
"contracts": {
|
|
13
|
+
"type": "array",
|
|
14
|
+
"minItems": 1,
|
|
15
|
+
"items": {
|
|
16
|
+
"type": "object",
|
|
17
|
+
"required": ["id", "publicImport", "symbols", "kind", "summary"],
|
|
18
|
+
"properties": {
|
|
19
|
+
"id": { "type": "string", "pattern": "^KUI-T[0-9]{3}$" },
|
|
20
|
+
"catalogKey": { "type": "string", "minLength": 1 },
|
|
21
|
+
"publicImport": {
|
|
22
|
+
"type": "string",
|
|
23
|
+
"pattern": "^@kerfjs/ui(?:/[-a-z]+)?$"
|
|
24
|
+
},
|
|
25
|
+
"symbols": {
|
|
26
|
+
"type": "array",
|
|
27
|
+
"minItems": 1,
|
|
28
|
+
"uniqueItems": true,
|
|
29
|
+
"items": { "type": "string", "minLength": 1 }
|
|
30
|
+
},
|
|
31
|
+
"kind": {
|
|
32
|
+
"enum": [
|
|
33
|
+
"accessible-name",
|
|
34
|
+
"conditional-property",
|
|
35
|
+
"controlled-callback",
|
|
36
|
+
"discriminated-union",
|
|
37
|
+
"finite-vocabulary",
|
|
38
|
+
"literal-identity",
|
|
39
|
+
"protected-attributes"
|
|
40
|
+
]
|
|
41
|
+
},
|
|
42
|
+
"summary": { "type": "string", "minLength": 1 }
|
|
43
|
+
},
|
|
44
|
+
"additionalProperties": false
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
"additionalProperties": false
|
|
49
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://raw.githubusercontent.com/brianwestphal/kerf/main/ui/ai/component-catalog-extension-v2.schema.json",
|
|
4
|
+
"title": "Kerf UI consumer composition catalog extension v2",
|
|
5
|
+
"allOf": [{ "$ref": "./component-catalog-v2.schema.json" }],
|
|
6
|
+
"description": "Consumer catalogs use the v2 entry contract with their own non-empty package identity; keys are always package:id."
|
|
7
|
+
}
|