@allternit/ix 0.1.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 (170) hide show
  1. package/README.md +320 -0
  2. package/dist/adapters/json-render.d.ts +211 -0
  3. package/dist/adapters/json-render.d.ts.bak +211 -0
  4. package/dist/adapters/json-render.d.ts.map +1 -0
  5. package/dist/adapters/json-render.js +576 -0
  6. package/dist/adapters/json-render.js.bak +576 -0
  7. package/dist/adapters/json-render.js.map +1 -0
  8. package/dist/catalog/registry.d.ts +65 -0
  9. package/dist/catalog/registry.d.ts.bak +65 -0
  10. package/dist/catalog/registry.d.ts.map +1 -0
  11. package/dist/catalog/registry.js +388 -0
  12. package/dist/catalog/registry.js.bak +388 -0
  13. package/dist/catalog/registry.js.map +1 -0
  14. package/dist/collab/capsule-registry.d.ts +114 -0
  15. package/dist/collab/capsule-registry.d.ts.bak +114 -0
  16. package/dist/collab/capsule-registry.d.ts.map +1 -0
  17. package/dist/collab/capsule-registry.js +271 -0
  18. package/dist/collab/capsule-registry.js.bak +271 -0
  19. package/dist/collab/capsule-registry.js.map +1 -0
  20. package/dist/collab/index.d.ts +21 -0
  21. package/dist/collab/index.d.ts.bak +21 -0
  22. package/dist/collab/index.d.ts.map +1 -0
  23. package/dist/collab/index.js +32 -0
  24. package/dist/collab/index.js.bak +32 -0
  25. package/dist/collab/index.js.map +1 -0
  26. package/dist/collab/visual-editor.d.ts +199 -0
  27. package/dist/collab/visual-editor.d.ts.bak +199 -0
  28. package/dist/collab/visual-editor.d.ts.map +1 -0
  29. package/dist/collab/visual-editor.js +259 -0
  30. package/dist/collab/visual-editor.js.bak +259 -0
  31. package/dist/collab/visual-editor.js.map +1 -0
  32. package/dist/collab/yjs-adapter.d.ts +95 -0
  33. package/dist/collab/yjs-adapter.d.ts.bak +95 -0
  34. package/dist/collab/yjs-adapter.d.ts.map +1 -0
  35. package/dist/collab/yjs-adapter.js +282 -0
  36. package/dist/collab/yjs-adapter.js.bak +282 -0
  37. package/dist/collab/yjs-adapter.js.map +1 -0
  38. package/dist/collab/yjs-client.d.ts +101 -0
  39. package/dist/collab/yjs-client.d.ts.bak +101 -0
  40. package/dist/collab/yjs-client.d.ts.map +1 -0
  41. package/dist/collab/yjs-client.js +193 -0
  42. package/dist/collab/yjs-client.js.bak +193 -0
  43. package/dist/collab/yjs-client.js.map +1 -0
  44. package/dist/collab/yjs-protocols.d.ts +128 -0
  45. package/dist/collab/yjs-protocols.d.ts.bak +128 -0
  46. package/dist/collab/yjs-protocols.d.ts.map +1 -0
  47. package/dist/collab/yjs-protocols.js +245 -0
  48. package/dist/collab/yjs-protocols.js.bak +245 -0
  49. package/dist/collab/yjs-protocols.js.map +1 -0
  50. package/dist/collab/yjs-types.d.ts +201 -0
  51. package/dist/collab/yjs-types.d.ts.bak +201 -0
  52. package/dist/collab/yjs-types.d.ts.map +1 -0
  53. package/dist/collab/yjs-types.js +45 -0
  54. package/dist/collab/yjs-types.js.bak +45 -0
  55. package/dist/collab/yjs-types.js.map +1 -0
  56. package/dist/index.d.ts +38 -0
  57. package/dist/index.d.ts.bak +38 -0
  58. package/dist/index.d.ts.map +1 -0
  59. package/dist/index.js +48 -0
  60. package/dist/index.js.bak +48 -0
  61. package/dist/index.js.map +1 -0
  62. package/dist/pipeline/llm-to-ix.d.ts +249 -0
  63. package/dist/pipeline/llm-to-ix.d.ts.bak +249 -0
  64. package/dist/pipeline/llm-to-ix.d.ts.map +1 -0
  65. package/dist/pipeline/llm-to-ix.js +992 -0
  66. package/dist/pipeline/llm-to-ix.js.bak +992 -0
  67. package/dist/pipeline/llm-to-ix.js.map +1 -0
  68. package/dist/react/index.d.ts +18 -0
  69. package/dist/react/index.d.ts.bak +18 -0
  70. package/dist/react/index.d.ts.map +1 -0
  71. package/dist/react/index.js +18 -0
  72. package/dist/react/index.js.bak +18 -0
  73. package/dist/react/index.js.map +1 -0
  74. package/dist/react/renderer.d.ts +47 -0
  75. package/dist/react/renderer.d.ts.bak +47 -0
  76. package/dist/react/renderer.d.ts.map +1 -0
  77. package/dist/react/renderer.js +420 -0
  78. package/dist/react/renderer.js.bak +420 -0
  79. package/dist/react/renderer.js.map +1 -0
  80. package/dist/renderer/renderer.d.ts +55 -0
  81. package/dist/renderer/renderer.d.ts.bak +55 -0
  82. package/dist/renderer/renderer.d.ts.map +1 -0
  83. package/dist/renderer/renderer.js +232 -0
  84. package/dist/renderer/renderer.js.bak +232 -0
  85. package/dist/renderer/renderer.js.map +1 -0
  86. package/dist/runtime/capsule-runtime.d.ts +227 -0
  87. package/dist/runtime/capsule-runtime.d.ts.bak +227 -0
  88. package/dist/runtime/capsule-runtime.d.ts.map +1 -0
  89. package/dist/runtime/capsule-runtime.js +563 -0
  90. package/dist/runtime/capsule-runtime.js.bak +563 -0
  91. package/dist/runtime/capsule-runtime.js.map +1 -0
  92. package/dist/runtime/policy-gates.d.ts +116 -0
  93. package/dist/runtime/policy-gates.d.ts.bak +116 -0
  94. package/dist/runtime/policy-gates.d.ts.map +1 -0
  95. package/dist/runtime/policy-gates.js +317 -0
  96. package/dist/runtime/policy-gates.js.bak +317 -0
  97. package/dist/runtime/policy-gates.js.map +1 -0
  98. package/dist/schema/ui-ir.d.ts +26 -0
  99. package/dist/schema/ui-ir.d.ts.bak +26 -0
  100. package/dist/schema/ui-ir.d.ts.map +1 -0
  101. package/dist/schema/ui-ir.js +51 -0
  102. package/dist/schema/ui-ir.js.bak +51 -0
  103. package/dist/schema/ui-ir.js.map +1 -0
  104. package/dist/sdk/api.d.ts +101 -0
  105. package/dist/sdk/api.d.ts.bak +101 -0
  106. package/dist/sdk/api.d.ts.map +1 -0
  107. package/dist/sdk/api.js +177 -0
  108. package/dist/sdk/api.js.bak +177 -0
  109. package/dist/sdk/api.js.map +1 -0
  110. package/dist/sdk/index.d.ts +9 -0
  111. package/dist/sdk/index.d.ts.bak +9 -0
  112. package/dist/sdk/index.d.ts.map +1 -0
  113. package/dist/sdk/index.js +10 -0
  114. package/dist/sdk/index.js.bak +10 -0
  115. package/dist/sdk/index.js.map +1 -0
  116. package/dist/sdk/react.d.ts +63 -0
  117. package/dist/sdk/react.d.ts.bak +63 -0
  118. package/dist/sdk/react.d.ts.map +1 -0
  119. package/dist/sdk/react.js +161 -0
  120. package/dist/sdk/react.js.bak +161 -0
  121. package/dist/sdk/react.js.map +1 -0
  122. package/dist/state/index.d.ts +8 -0
  123. package/dist/state/index.d.ts.bak +8 -0
  124. package/dist/state/index.d.ts.map +1 -0
  125. package/dist/state/index.js +8 -0
  126. package/dist/state/index.js.bak +8 -0
  127. package/dist/state/index.js.map +1 -0
  128. package/dist/state/patch.d.ts +73 -0
  129. package/dist/state/patch.d.ts.bak +73 -0
  130. package/dist/state/patch.d.ts.map +1 -0
  131. package/dist/state/patch.js +437 -0
  132. package/dist/state/patch.js.bak +437 -0
  133. package/dist/state/patch.js.map +1 -0
  134. package/dist/state/store.d.ts +50 -0
  135. package/dist/state/store.d.ts.bak +50 -0
  136. package/dist/state/store.d.ts.map +1 -0
  137. package/dist/state/store.js +246 -0
  138. package/dist/state/store.js.bak +246 -0
  139. package/dist/state/store.js.map +1 -0
  140. package/dist/svelte/index.d.ts +15 -0
  141. package/dist/svelte/index.d.ts.bak +15 -0
  142. package/dist/svelte/index.d.ts.map +1 -0
  143. package/dist/svelte/index.js +15 -0
  144. package/dist/svelte/index.js.bak +15 -0
  145. package/dist/svelte/index.js.map +1 -0
  146. package/dist/svelte/renderer.d.ts +35 -0
  147. package/dist/svelte/renderer.d.ts.bak +35 -0
  148. package/dist/svelte/renderer.d.ts.map +1 -0
  149. package/dist/svelte/renderer.js +317 -0
  150. package/dist/svelte/renderer.js.bak +317 -0
  151. package/dist/svelte/renderer.js.map +1 -0
  152. package/dist/types/index.d.ts +349 -0
  153. package/dist/types/index.d.ts.bak +349 -0
  154. package/dist/types/index.d.ts.map +1 -0
  155. package/dist/types/index.js +152 -0
  156. package/dist/types/index.js.bak +152 -0
  157. package/dist/types/index.js.map +1 -0
  158. package/dist/vue/index.d.ts +18 -0
  159. package/dist/vue/index.d.ts.bak +18 -0
  160. package/dist/vue/index.d.ts.map +1 -0
  161. package/dist/vue/index.js +18 -0
  162. package/dist/vue/index.js.bak +18 -0
  163. package/dist/vue/index.js.map +1 -0
  164. package/dist/vue/renderer.d.ts +46 -0
  165. package/dist/vue/renderer.d.ts.bak +46 -0
  166. package/dist/vue/renderer.d.ts.map +1 -0
  167. package/dist/vue/renderer.js +302 -0
  168. package/dist/vue/renderer.js.bak +302 -0
  169. package/dist/vue/renderer.js.map +1 -0
  170. package/package.json +72 -0
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Component Catalog Registry
3
+ *
4
+ * Versioned component registry with semantic versioning support.
5
+ */
6
+ export interface PropDefinition {
7
+ name: string;
8
+ type: 'string' | 'number' | 'boolean' | 'array' | 'object' | 'function' | 'any';
9
+ required?: boolean;
10
+ default?: unknown;
11
+ enum?: unknown[];
12
+ description?: string;
13
+ }
14
+ export interface CatalogComponent {
15
+ name: string;
16
+ version: string;
17
+ props: PropDefinition[];
18
+ category: 'layout' | 'typography' | 'input' | 'display';
19
+ description?: string;
20
+ acceptChildren?: boolean;
21
+ allowedChildren?: string[];
22
+ }
23
+ /**
24
+ * Component Catalog
25
+ */
26
+ export declare class ComponentCatalog {
27
+ private components;
28
+ /**
29
+ * Register a component
30
+ */
31
+ register(component: CatalogComponent): void;
32
+ /**
33
+ * Resolve component by name and optional version
34
+ */
35
+ resolve(name: string, version?: string): CatalogComponent | undefined;
36
+ /**
37
+ * Get latest version of component
38
+ */
39
+ private getLatest;
40
+ /**
41
+ * Resolve version with semver range
42
+ */
43
+ private resolveVersion;
44
+ /**
45
+ * Validate props against component schema
46
+ */
47
+ validate(name: string, props: Record<string, unknown>, version?: string): boolean;
48
+ /**
49
+ * List all components
50
+ */
51
+ list(category?: string): CatalogComponent[];
52
+ /**
53
+ * Get available versions for component
54
+ */
55
+ getVersions(name: string): string[];
56
+ }
57
+ /**
58
+ * Built-in component definitions
59
+ */
60
+ export declare const BUILT_INS: Record<string, CatalogComponent>;
61
+ /**
62
+ * Create default catalog with built-ins
63
+ */
64
+ export declare function createDefaultCatalog(): ComponentCatalog;
65
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/catalog/registry.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,KAAK,CAAC;IAChF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,QAAQ,EAAE,QAAQ,GAAG,YAAY,GAAG,OAAO,GAAG,SAAS,CAAC;IACxD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,UAAU,CAAuC;IAEzD;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,gBAAgB,GAAG,IAAI;IAK3C;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;IAerE;;OAEG;IACH,OAAO,CAAC,SAAS;IAgBjB;;OAEG;IACH,OAAO,CAAC,cAAc;IAyCtB;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO;IA4BjF;;OAEG;IACH,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,gBAAgB,EAAE;IAU3C;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE;CAWpC;AA6CD;;GAEG;AACH,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CA0MtD,CAAC;AAEF;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,gBAAgB,CAQvD"}
@@ -0,0 +1,388 @@
1
+ /**
2
+ * Component Catalog Registry
3
+ *
4
+ * Versioned component registry with semantic versioning support.
5
+ */
6
+ /**
7
+ * Component Catalog
8
+ */
9
+ export class ComponentCatalog {
10
+ components = new Map();
11
+ /**
12
+ * Register a component
13
+ */
14
+ register(component) {
15
+ const key = `${component.name}@${component.version}`;
16
+ this.components.set(key, component);
17
+ }
18
+ /**
19
+ * Resolve component by name and optional version
20
+ */
21
+ resolve(name, version) {
22
+ if (version) {
23
+ // Exact version
24
+ if (!version.includes('^') && !version.includes('~') && !version.includes('*')) {
25
+ return this.components.get(`${name}@${version}`);
26
+ }
27
+ // Semantic version range
28
+ return this.resolveVersion(name, version);
29
+ }
30
+ // Get latest version
31
+ return this.getLatest(name);
32
+ }
33
+ /**
34
+ * Get latest version of component
35
+ */
36
+ getLatest(name) {
37
+ const versions = [];
38
+ for (const [key, component] of this.components) {
39
+ if (key.startsWith(`${name}@`)) {
40
+ versions.push(component);
41
+ }
42
+ }
43
+ if (versions.length === 0)
44
+ return undefined;
45
+ // Sort by version descending
46
+ versions.sort((a, b) => compareVersions(b.version, a.version));
47
+ return versions[0];
48
+ }
49
+ /**
50
+ * Resolve version with semver range
51
+ */
52
+ resolveVersion(name, range) {
53
+ const versions = [];
54
+ for (const [key, component] of this.components) {
55
+ if (key.startsWith(`${name}@`)) {
56
+ versions.push(component);
57
+ }
58
+ }
59
+ if (versions.length === 0)
60
+ return undefined;
61
+ // Sort by version descending
62
+ versions.sort((a, b) => compareVersions(b.version, a.version));
63
+ // Parse range
64
+ if (range.startsWith('^')) {
65
+ // ^1.2.3 matches >=1.2.3 <2.0.0
66
+ const baseVersion = range.slice(1);
67
+ const [major] = baseVersion.split('.').map(Number);
68
+ return versions.find((v) => {
69
+ const [vMajor] = v.version.split('.').map(Number);
70
+ return vMajor === major && compareVersions(v.version, baseVersion) >= 0;
71
+ });
72
+ }
73
+ if (range.startsWith('~')) {
74
+ // ~1.2.3 matches >=1.2.3 <1.3.0
75
+ const baseVersion = range.slice(1);
76
+ const [major, minor] = baseVersion.split('.').map(Number);
77
+ return versions.find((v) => {
78
+ const [vMajor, vMinor] = v.version.split('.').map(Number);
79
+ return vMajor === major && vMinor === minor && compareVersions(v.version, baseVersion) >= 0;
80
+ });
81
+ }
82
+ // Default: exact match or latest
83
+ return versions[0];
84
+ }
85
+ /**
86
+ * Validate props against component schema
87
+ */
88
+ validate(name, props, version) {
89
+ const component = this.resolve(name, version);
90
+ if (!component)
91
+ return false;
92
+ // Check required props
93
+ for (const prop of component.props) {
94
+ if (prop.required && !(prop.name in props)) {
95
+ return false;
96
+ }
97
+ }
98
+ // Validate prop types
99
+ for (const [key, value] of Object.entries(props)) {
100
+ const propDef = component.props.find((p) => p.name === key);
101
+ if (!propDef)
102
+ continue; // Allow unknown props
103
+ if (!validateType(value, propDef.type)) {
104
+ return false;
105
+ }
106
+ if (propDef.enum && !propDef.enum.includes(value)) {
107
+ return false;
108
+ }
109
+ }
110
+ return true;
111
+ }
112
+ /**
113
+ * List all components
114
+ */
115
+ list(category) {
116
+ const all = Array.from(this.components.values());
117
+ if (category) {
118
+ return all.filter((c) => c.category === category);
119
+ }
120
+ return all;
121
+ }
122
+ /**
123
+ * Get available versions for component
124
+ */
125
+ getVersions(name) {
126
+ const versions = [];
127
+ for (const key of this.components.keys()) {
128
+ if (key.startsWith(`${name}@`)) {
129
+ versions.push(key.slice(name.length + 1));
130
+ }
131
+ }
132
+ return versions.sort((a, b) => compareVersions(b, a));
133
+ }
134
+ }
135
+ /**
136
+ * Compare semantic versions
137
+ * Returns: positive if a > b, negative if a < b, 0 if equal
138
+ */
139
+ function compareVersions(a, b) {
140
+ const aParts = a.split('.').map(Number);
141
+ const bParts = b.split('.').map(Number);
142
+ for (let i = 0; i < Math.max(aParts.length, bParts.length); i++) {
143
+ const aPart = aParts[i] || 0;
144
+ const bPart = bParts[i] || 0;
145
+ if (aPart > bPart)
146
+ return 1;
147
+ if (aPart < bPart)
148
+ return -1;
149
+ }
150
+ return 0;
151
+ }
152
+ /**
153
+ * Validate value against type
154
+ */
155
+ function validateType(value, type) {
156
+ switch (type) {
157
+ case 'string':
158
+ return typeof value === 'string';
159
+ case 'number':
160
+ return typeof value === 'number' && !isNaN(value);
161
+ case 'boolean':
162
+ return typeof value === 'boolean';
163
+ case 'array':
164
+ return Array.isArray(value);
165
+ case 'object':
166
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
167
+ case 'function':
168
+ return typeof value === 'function';
169
+ case 'any':
170
+ return true;
171
+ default:
172
+ return false;
173
+ }
174
+ }
175
+ /**
176
+ * Built-in component definitions
177
+ */
178
+ export const BUILT_INS = {
179
+ // Layout
180
+ Box: {
181
+ name: 'Box',
182
+ version: '1.0.0',
183
+ category: 'layout',
184
+ props: [
185
+ { name: 'padding', type: 'number' },
186
+ { name: 'margin', type: 'number' },
187
+ { name: 'width', type: 'any' },
188
+ { name: 'height', type: 'any' },
189
+ { name: 'display', type: 'string', enum: ['block', 'flex', 'grid', 'none'] },
190
+ { name: 'flexDirection', type: 'string', enum: ['row', 'column'] },
191
+ { name: 'justifyContent', type: 'string' },
192
+ { name: 'alignItems', type: 'string' },
193
+ { name: 'gap', type: 'number' },
194
+ { name: 'backgroundColor', type: 'string' },
195
+ { name: 'borderRadius', type: 'number' },
196
+ ],
197
+ acceptChildren: true,
198
+ },
199
+ Stack: {
200
+ name: 'Stack',
201
+ version: '1.0.0',
202
+ category: 'layout',
203
+ props: [
204
+ { name: 'direction', type: 'string', enum: ['horizontal', 'vertical'], default: 'vertical' },
205
+ { name: 'spacing', type: 'number', default: 0 },
206
+ { name: 'align', type: 'string', enum: ['start', 'center', 'end', 'stretch'] },
207
+ { name: 'justify', type: 'string', enum: ['start', 'center', 'end', 'between', 'around'] },
208
+ ],
209
+ acceptChildren: true,
210
+ },
211
+ // Typography
212
+ Text: {
213
+ name: 'Text',
214
+ version: '1.0.0',
215
+ category: 'typography',
216
+ props: [
217
+ { name: 'children', type: 'any', required: true },
218
+ { name: 'variant', type: 'string', enum: ['body', 'heading', 'caption', 'label'] },
219
+ { name: 'size', type: 'string', enum: ['xs', 'sm', 'md', 'lg', 'xl'] },
220
+ { name: 'weight', type: 'string', enum: ['normal', 'medium', 'semibold', 'bold'] },
221
+ { name: 'color', type: 'string' },
222
+ { name: 'align', type: 'string', enum: ['left', 'center', 'right'] },
223
+ { name: 'truncate', type: 'boolean', default: false },
224
+ ],
225
+ acceptChildren: false,
226
+ },
227
+ Heading: {
228
+ name: 'Heading',
229
+ version: '1.0.0',
230
+ category: 'typography',
231
+ props: [
232
+ { name: 'children', type: 'any', required: true },
233
+ { name: 'level', type: 'number', enum: [1, 2, 3, 4, 5, 6], default: 1 },
234
+ { name: 'color', type: 'string' },
235
+ ],
236
+ acceptChildren: false,
237
+ },
238
+ Paragraph: {
239
+ name: 'Paragraph',
240
+ version: '1.0.0',
241
+ category: 'typography',
242
+ props: [
243
+ { name: 'children', type: 'any', required: true },
244
+ { name: 'size', type: 'string', enum: ['sm', 'md', 'lg'] },
245
+ { name: 'color', type: 'string' },
246
+ ],
247
+ acceptChildren: false,
248
+ },
249
+ // Input
250
+ Button: {
251
+ name: 'Button',
252
+ version: '1.0.0',
253
+ category: 'input',
254
+ props: [
255
+ { name: 'children', type: 'any', required: true },
256
+ { name: 'variant', type: 'string', enum: ['primary', 'secondary', 'ghost', 'danger'], default: 'primary' },
257
+ { name: 'size', type: 'string', enum: ['sm', 'md', 'lg'], default: 'md' },
258
+ { name: 'disabled', type: 'boolean', default: false },
259
+ { name: 'loading', type: 'boolean', default: false },
260
+ { name: 'onClick', type: 'function' },
261
+ ],
262
+ acceptChildren: false,
263
+ },
264
+ Input: {
265
+ name: 'Input',
266
+ version: '1.0.0',
267
+ category: 'input',
268
+ props: [
269
+ { name: 'value', type: 'string' },
270
+ { name: 'placeholder', type: 'string' },
271
+ { name: 'type', type: 'string', enum: ['text', 'password', 'email', 'number', 'tel'], default: 'text' },
272
+ { name: 'disabled', type: 'boolean', default: false },
273
+ { name: 'required', type: 'boolean', default: false },
274
+ { name: 'onChange', type: 'function' },
275
+ { name: 'onBlur', type: 'function' },
276
+ { name: 'onFocus', type: 'function' },
277
+ ],
278
+ acceptChildren: false,
279
+ },
280
+ TextArea: {
281
+ name: 'TextArea',
282
+ version: '1.0.0',
283
+ category: 'input',
284
+ props: [
285
+ { name: 'value', type: 'string' },
286
+ { name: 'placeholder', type: 'string' },
287
+ { name: 'rows', type: 'number', default: 3 },
288
+ { name: 'disabled', type: 'boolean', default: false },
289
+ { name: 'onChange', type: 'function' },
290
+ ],
291
+ acceptChildren: false,
292
+ },
293
+ Select: {
294
+ name: 'Select',
295
+ version: '1.0.0',
296
+ category: 'input',
297
+ props: [
298
+ { name: 'value', type: 'any' },
299
+ { name: 'options', type: 'array', required: true },
300
+ { name: 'placeholder', type: 'string' },
301
+ { name: 'disabled', type: 'boolean', default: false },
302
+ { name: 'onChange', type: 'function' },
303
+ ],
304
+ acceptChildren: false,
305
+ },
306
+ // Display
307
+ Image: {
308
+ name: 'Image',
309
+ version: '1.0.0',
310
+ category: 'display',
311
+ props: [
312
+ { name: 'src', type: 'string', required: true },
313
+ { name: 'alt', type: 'string', default: '' },
314
+ { name: 'width', type: 'any' },
315
+ { name: 'height', type: 'any' },
316
+ { name: 'objectFit', type: 'string', enum: ['cover', 'contain', 'fill', 'none'] },
317
+ ],
318
+ acceptChildren: false,
319
+ },
320
+ Icon: {
321
+ name: 'Icon',
322
+ version: '1.0.0',
323
+ category: 'display',
324
+ props: [
325
+ { name: 'name', type: 'string', required: true },
326
+ { name: 'size', type: 'number', default: 16 },
327
+ { name: 'color', type: 'string' },
328
+ ],
329
+ acceptChildren: false,
330
+ },
331
+ Badge: {
332
+ name: 'Badge',
333
+ version: '1.0.0',
334
+ category: 'display',
335
+ props: [
336
+ { name: 'children', type: 'any', required: true },
337
+ { name: 'variant', type: 'string', enum: ['default', 'success', 'warning', 'error', 'info'], default: 'default' },
338
+ { name: 'size', type: 'string', enum: ['sm', 'md'], default: 'md' },
339
+ ],
340
+ acceptChildren: false,
341
+ },
342
+ Card: {
343
+ name: 'Card',
344
+ version: '1.0.0',
345
+ category: 'display',
346
+ props: [
347
+ { name: 'padding', type: 'number', default: 16 },
348
+ { name: 'elevation', type: 'number', enum: [0, 1, 2, 3], default: 1 },
349
+ { name: 'borderRadius', type: 'number', default: 8 },
350
+ ],
351
+ acceptChildren: true,
352
+ },
353
+ List: {
354
+ name: 'List',
355
+ version: '1.0.0',
356
+ category: 'display',
357
+ props: [
358
+ { name: 'items', type: 'array', required: true },
359
+ { name: 'renderItem', type: 'function', required: true },
360
+ { name: 'keyExtractor', type: 'function' },
361
+ { name: 'emptyText', type: 'string' },
362
+ ],
363
+ acceptChildren: false,
364
+ },
365
+ Table: {
366
+ name: 'Table',
367
+ version: '1.0.0',
368
+ category: 'display',
369
+ props: [
370
+ { name: 'data', type: 'array', required: true },
371
+ { name: 'columns', type: 'array', required: true },
372
+ { name: 'onRowClick', type: 'function' },
373
+ { name: 'emptyText', type: 'string' },
374
+ ],
375
+ acceptChildren: false,
376
+ },
377
+ };
378
+ /**
379
+ * Create default catalog with built-ins
380
+ */
381
+ export function createDefaultCatalog() {
382
+ const catalog = new ComponentCatalog();
383
+ Object.values(BUILT_INS).forEach((component) => {
384
+ catalog.register(component);
385
+ });
386
+ return catalog;
387
+ }
388
+ //# sourceMappingURL=registry.js.map