@imj_media/ui 1.11.5 → 1.12.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.
Files changed (29) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +1 -1
  3. package/catalog/design-index.json +2 -2
  4. package/catalog/install-registry.json +7 -2
  5. package/catalog/semantic-catalog.json +187 -0
  6. package/catalog/semantic-catalog.schema.json +130 -0
  7. package/dist/index.esm.js +14667 -14565
  8. package/dist/index.esm.js.map +1 -1
  9. package/dist/index.js +33 -33
  10. package/dist/index.js.map +1 -1
  11. package/dist/modules/DatePicker/DatePicker.d.ts.map +1 -1
  12. package/dist/modules/DatePicker/hooks/useDatePicker.d.ts +5 -1
  13. package/dist/modules/DatePicker/hooks/useDatePicker.d.ts.map +1 -1
  14. package/dist/modules/DatePicker/hooks/usePortal.d.ts +2 -2
  15. package/dist/modules/DatePicker/hooks/usePortal.d.ts.map +1 -1
  16. package/dist/modules/DatePicker/organisms/DatePickerPortal.d.ts +2 -1
  17. package/dist/modules/DatePicker/organisms/DatePickerPortal.d.ts.map +1 -1
  18. package/dist/modules/DatePicker/utils/computePortalPosition.d.ts +31 -0
  19. package/dist/modules/DatePicker/utils/computePortalPosition.d.ts.map +1 -0
  20. package/dist/modules/DatePicker/utils/computePortalPosition.test.d.ts +2 -0
  21. package/dist/modules/DatePicker/utils/computePortalPosition.test.d.ts.map +1 -0
  22. package/dist/modules/Modal/Modal.d.ts.map +1 -1
  23. package/dist/modules/Modal/hooks/useModal.d.ts +3 -1
  24. package/dist/modules/Modal/hooks/useModal.d.ts.map +1 -1
  25. package/dist/shared/utils/modalStack.d.ts +17 -0
  26. package/dist/shared/utils/modalStack.d.ts.map +1 -0
  27. package/dist/shared/utils/modalStack.test.d.ts +2 -0
  28. package/dist/shared/utils/modalStack.test.d.ts.map +1 -0
  29. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -7,6 +7,22 @@ y este proyecto adhiere a [Semantic Versioning](https://semver.org/lang/es/).
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [1.12.0] - 2026-07-02
11
+
12
+ ### Added
13
+
14
+ - **Catálogo semántico Forge:** `semantic-catalog.json` (y esquema asociado) para mapeo entidad Forge → componentes UI; generado con el flujo de catálogo del paquete.
15
+ - **Integración `@imj_media/ds-mcp` (capa semántica):** herramientas MCP `list_components`, `resolve_entity_ui` y `validate_entity_mapping` para descubrir componentes y validar mapeos entidad→UI desde Forge.
16
+
17
+ ### Fixed
18
+
19
+ - **`Modal`:** apilado correcto de modales anidados (`modalStack`).
20
+ - **`DatePicker`:** posicionamiento del portal dentro del viewport (`computePortalPosition`).
21
+
22
+ ### Documentation
23
+
24
+ - Especificación **`docs/specs/ds-mcp-semantic-forge-v1.md`** (contrato Forge ↔ catálogo semántico y flujo ds-mcp).
25
+
10
26
  ## [1.11.5] - 2026-07-01
11
27
 
12
28
  ### Added
package/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  Biblioteca de componentes UI moderna y accesible para React, construida con TypeScript y Tailwind CSS.
6
6
 
7
- > **Versión publicada:** `1.11.5` — actualizar este número y `CHANGELOG.md` antes de cada release (orden y scripts: regla **`imj-ui-obligations-release`**; atajo `npm run publish:patch|minor|major` o pasos `bump:*` → `release:git` → `release:publish`).
7
+ > **Versión publicada:** `1.12.0` — actualizar este número y `CHANGELOG.md` antes de cada release (orden y scripts: regla **`imj-ui-obligations-release`**; atajo `npm run publish:patch|minor|major` o pasos `bump:*` → `release:git` → `release:publish`).
8
8
 
9
9
  ## 📦 Instalación
10
10
 
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schemaVersion": "1.0.0",
3
3
  "package": "@imj_media/ui",
4
- "version": "1.11.5",
5
- "indexedAt": "2026-07-01T19:14:31.935Z",
4
+ "version": "1.12.0",
5
+ "indexedAt": "2026-07-02T19:01:02.102Z",
6
6
  "orbitTokensVersion": "1.3.1",
7
7
  "modules": [
8
8
  {
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schemaVersion": "1.0.0",
3
3
  "consumerRoot": "../../ds-mcp/src/indexer/consumer",
4
- "generatedAt": "2026-07-01T19:14:32.010Z",
5
- "uiVersion": "1.11.5",
4
+ "generatedAt": "2026-07-02T19:01:02.192Z",
5
+ "uiVersion": "1.12.0",
6
6
  "entries": {
7
7
  "accordion": {
8
8
  "name": "Accordion",
@@ -1129,6 +1129,11 @@
1129
1129
  "source": "DatePicker/types/index.ts",
1130
1130
  "sourceKind": "module"
1131
1131
  },
1132
+ {
1133
+ "target": "modules/DatePicker/utils/computePortalPosition.ts",
1134
+ "source": "DatePicker/utils/computePortalPosition.ts",
1135
+ "sourceKind": "module"
1136
+ },
1132
1137
  {
1133
1138
  "target": "modules/DatePicker/utils/datetimeFormat.ts",
1134
1139
  "source": "DatePicker/utils/datetimeFormat.ts",
@@ -0,0 +1,187 @@
1
+ {
2
+ "schemaVersion": "1.0.0",
3
+ "entries": [
4
+ {
5
+ "id": "table-data-registry",
6
+ "moduleId": "Table",
7
+ "exportName": "Table",
8
+ "displayName": "Table",
9
+ "importPath": "@imj_media/ui",
10
+ "importSymbol": "Table",
11
+ "replacesGeneric": ["DataTable", "ReferenceTable", "OrbitDataGrid"],
12
+ "semantic": {
13
+ "classification": ["DataRegistry", "Configuration", "AuditLog"],
14
+ "capabilities": ["search", "pagination", "advancedFilter", "export", "selection"]
15
+ },
16
+ "dataBinding": {
17
+ "kind": "rest",
18
+ "rowsProp": "rows",
19
+ "columnsProp": "columns",
20
+ "toolbarSearchProp": "toolbar.showSearch",
21
+ "paginationProp": "pagination"
22
+ },
23
+ "entityHints": {
24
+ "preferredKeyFields": ["id", "name", "created_at", "status"],
25
+ "statusFieldCandidates": ["status", "state", "estado"]
26
+ }
27
+ },
28
+ {
29
+ "id": "table-workflow-fallback",
30
+ "moduleId": "Table",
31
+ "exportName": "Table",
32
+ "displayName": "Table",
33
+ "importPath": "@imj_media/ui",
34
+ "importSymbol": "Table",
35
+ "replacesGeneric": ["KanbanBoard", "KanbanOrderBoard", "OrbitKanban"],
36
+ "semantic": {
37
+ "classification": ["WorkflowProcess"],
38
+ "capabilities": ["stateTracking", "search", "pagination"]
39
+ },
40
+ "dataBinding": {
41
+ "kind": "stateMachine",
42
+ "rowsProp": "rows",
43
+ "columnsProp": "columns",
44
+ "stateField": "status",
45
+ "lifecycleToColumn": true
46
+ },
47
+ "entityHints": {
48
+ "preferredKeyFields": ["id", "status", "name", "updated_at"],
49
+ "statusFieldCandidates": ["status", "state", "estado"]
50
+ },
51
+ "limitations": ["no_native_drag_drop", "use_table_with_status_column"]
52
+ },
53
+ {
54
+ "id": "ghantt-timeline",
55
+ "moduleId": "Ghantt",
56
+ "exportName": "Ghantt",
57
+ "displayName": "Ghantt",
58
+ "importPath": "@imj_media/ui",
59
+ "importSymbol": "Ghantt",
60
+ "replacesGeneric": ["GanttChart", "TimelineBoard"],
61
+ "semantic": {
62
+ "classification": ["TimelineEntity"],
63
+ "capabilities": ["timeline", "search", "pagination"]
64
+ },
65
+ "dataBinding": {
66
+ "kind": "rest",
67
+ "rowsProp": "rows",
68
+ "columnsProp": "columns"
69
+ },
70
+ "entityHints": {
71
+ "preferredKeyFields": ["id", "start_date", "end_date", "name"]
72
+ }
73
+ },
74
+ {
75
+ "id": "lists-master",
76
+ "moduleId": "Lists",
77
+ "exportName": "Lists",
78
+ "displayName": "Lists",
79
+ "importPath": "@imj_media/ui",
80
+ "importSymbol": "Lists",
81
+ "replacesGeneric": ["ListView", "MasterListView"],
82
+ "semantic": {
83
+ "classification": ["MasterList"],
84
+ "capabilities": ["search", "selection"]
85
+ },
86
+ "dataBinding": {
87
+ "kind": "rest",
88
+ "itemsProp": "list.items"
89
+ },
90
+ "entityHints": {
91
+ "preferredKeyFields": ["id", "title", "name"]
92
+ }
93
+ },
94
+ {
95
+ "id": "lists-notification-feed",
96
+ "moduleId": "Lists",
97
+ "exportName": "Lists",
98
+ "displayName": "Lists",
99
+ "importPath": "@imj_media/ui",
100
+ "importSymbol": "Lists",
101
+ "replacesGeneric": ["FeedList", "NotificationList"],
102
+ "semantic": {
103
+ "classification": ["NotificationFeed"],
104
+ "capabilities": ["notification", "search"]
105
+ },
106
+ "dataBinding": {
107
+ "kind": "rest",
108
+ "itemsProp": "list.items"
109
+ },
110
+ "entityHints": {
111
+ "preferredKeyFields": ["id", "message", "created_at", "read"]
112
+ }
113
+ },
114
+ {
115
+ "id": "filters-bar",
116
+ "moduleId": "Filters",
117
+ "exportName": "Filters",
118
+ "displayName": "Filters",
119
+ "importPath": "@imj_media/ui",
120
+ "importSymbol": "Filters",
121
+ "replacesGeneric": ["SearchBar", "FilterPanel"],
122
+ "semantic": {
123
+ "classification": ["FilterBar"],
124
+ "capabilities": ["advancedFilter", "search"]
125
+ },
126
+ "dataBinding": {
127
+ "kind": "static",
128
+ "filtersProp": "filters"
129
+ }
130
+ },
131
+ {
132
+ "id": "header-filter-bar",
133
+ "moduleId": "Header",
134
+ "exportName": "Header",
135
+ "displayName": "Header",
136
+ "importPath": "@imj_media/ui",
137
+ "importSymbol": "Header",
138
+ "replacesGeneric": ["PageHeader", "FilterHeader"],
139
+ "semantic": {
140
+ "classification": ["FilterBar"],
141
+ "capabilities": ["advancedFilter", "search"]
142
+ },
143
+ "dataBinding": {
144
+ "kind": "static",
145
+ "filtersProp": "filters"
146
+ }
147
+ },
148
+ {
149
+ "id": "form-entity-stack",
150
+ "moduleId": "Modal",
151
+ "exportName": "Modal",
152
+ "displayName": "Modal",
153
+ "importPath": "@imj_media/ui",
154
+ "importSymbol": "Modal",
155
+ "replacesGeneric": ["EntityForm", "EditDialog"],
156
+ "semantic": {
157
+ "classification": ["FormEntity"],
158
+ "capabilities": ["formFields"]
159
+ },
160
+ "dataBinding": {
161
+ "kind": "composition",
162
+ "compositionModules": ["Modal", "Input", "Dropdown", "Button"]
163
+ },
164
+ "limitations": ["compose_modal_with_input_dropdown_button"]
165
+ },
166
+ {
167
+ "id": "datepicker-form-field",
168
+ "moduleId": "DatePicker",
169
+ "exportName": "DatePicker",
170
+ "displayName": "DatePicker",
171
+ "importPath": "@imj_media/ui",
172
+ "importSymbol": "DatePicker",
173
+ "replacesGeneric": ["DateInput", "DateRangePicker"],
174
+ "semantic": {
175
+ "classification": ["FormEntity", "DateField"],
176
+ "capabilities": ["formFields", "dateRange"]
177
+ },
178
+ "dataBinding": {
179
+ "kind": "static",
180
+ "valueProp": "selectedDate"
181
+ },
182
+ "entityHints": {
183
+ "preferredKeyFields": ["date", "start_date", "end_date"]
184
+ }
185
+ }
186
+ ]
187
+ }
@@ -0,0 +1,130 @@
1
+ {
2
+ "title": "IMJ UI Semantic Catalog",
3
+ "type": "object",
4
+ "required": ["schemaVersion", "entries"],
5
+ "additionalProperties": false,
6
+ "properties": {
7
+ "schemaVersion": { "type": "string", "pattern": "^\\d+\\.\\d+\\.\\d+$" },
8
+ "entries": {
9
+ "type": "array",
10
+ "minItems": 1,
11
+ "items": { "$ref": "#/$defs/semanticEntry" }
12
+ }
13
+ },
14
+ "$defs": {
15
+ "classification": {
16
+ "type": "string",
17
+ "enum": [
18
+ "DataRegistry",
19
+ "Configuration",
20
+ "AuditLog",
21
+ "WorkflowProcess",
22
+ "TimelineEntity",
23
+ "MasterList",
24
+ "NotificationFeed",
25
+ "FilterBar",
26
+ "FormEntity",
27
+ "DateField"
28
+ ]
29
+ },
30
+ "capability": {
31
+ "type": "string",
32
+ "enum": [
33
+ "search",
34
+ "pagination",
35
+ "advancedFilter",
36
+ "export",
37
+ "selection",
38
+ "stateTracking",
39
+ "timeline",
40
+ "dragDrop",
41
+ "formFields",
42
+ "dateRange",
43
+ "notification"
44
+ ]
45
+ },
46
+ "dataBinding": {
47
+ "type": "object",
48
+ "required": ["kind"],
49
+ "properties": {
50
+ "kind": { "type": "string", "enum": ["rest", "stateMachine", "static", "composition"] },
51
+ "rowsProp": { "type": "string" },
52
+ "columnsProp": { "type": "string" },
53
+ "toolbarSearchProp": { "type": "string" },
54
+ "paginationProp": { "type": "string" },
55
+ "stateField": { "type": ["string", "null"] },
56
+ "lifecycleToColumn": { "type": "boolean" },
57
+ "valueProp": { "type": "string" },
58
+ "itemsProp": { "type": "string" },
59
+ "filtersProp": { "type": "string" },
60
+ "compositionModules": {
61
+ "type": "array",
62
+ "items": { "type": "string" }
63
+ }
64
+ },
65
+ "additionalProperties": false
66
+ },
67
+ "entityHints": {
68
+ "type": "object",
69
+ "properties": {
70
+ "preferredKeyFields": {
71
+ "type": "array",
72
+ "items": { "type": "string" }
73
+ },
74
+ "statusFieldCandidates": {
75
+ "type": "array",
76
+ "items": { "type": "string" }
77
+ }
78
+ },
79
+ "additionalProperties": false
80
+ },
81
+ "semanticEntry": {
82
+ "type": "object",
83
+ "required": [
84
+ "id",
85
+ "moduleId",
86
+ "exportName",
87
+ "displayName",
88
+ "importPath",
89
+ "importSymbol",
90
+ "semantic",
91
+ "dataBinding"
92
+ ],
93
+ "additionalProperties": false,
94
+ "properties": {
95
+ "id": { "type": "string", "minLength": 1 },
96
+ "moduleId": { "type": "string", "minLength": 1 },
97
+ "exportName": { "type": "string", "minLength": 1 },
98
+ "displayName": { "type": "string", "minLength": 1 },
99
+ "importPath": { "type": "string", "const": "@imj_media/ui" },
100
+ "importSymbol": { "type": "string", "minLength": 1 },
101
+ "replacesGeneric": {
102
+ "type": "array",
103
+ "items": { "type": "string" }
104
+ },
105
+ "semantic": {
106
+ "type": "object",
107
+ "required": ["classification", "capabilities"],
108
+ "properties": {
109
+ "classification": {
110
+ "type": "array",
111
+ "items": { "$ref": "#/$defs/classification" },
112
+ "minItems": 1
113
+ },
114
+ "capabilities": {
115
+ "type": "array",
116
+ "items": { "$ref": "#/$defs/capability" }
117
+ }
118
+ },
119
+ "additionalProperties": false
120
+ },
121
+ "dataBinding": { "$ref": "#/$defs/dataBinding" },
122
+ "entityHints": { "$ref": "#/$defs/entityHints" },
123
+ "limitations": {
124
+ "type": "array",
125
+ "items": { "type": "string" }
126
+ }
127
+ }
128
+ }
129
+ }
130
+ }