@appaflytech/wappa-mcp 0.0.1

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 (68) hide show
  1. package/.env.example +5 -0
  2. package/LICENSE +21 -0
  3. package/README.md +200 -0
  4. package/dist/auth.d.ts +20 -0
  5. package/dist/auth.d.ts.map +1 -0
  6. package/dist/auth.js +58 -0
  7. package/dist/auth.js.map +1 -0
  8. package/dist/base-components.d.ts +52 -0
  9. package/dist/base-components.d.ts.map +1 -0
  10. package/dist/base-components.js +552 -0
  11. package/dist/base-components.js.map +1 -0
  12. package/dist/client.d.ts +141 -0
  13. package/dist/client.d.ts.map +1 -0
  14. package/dist/client.js +341 -0
  15. package/dist/client.js.map +1 -0
  16. package/dist/index.d.ts +10 -0
  17. package/dist/index.d.ts.map +1 -0
  18. package/dist/index.js +287 -0
  19. package/dist/index.js.map +1 -0
  20. package/dist/tools/components.d.ts +217 -0
  21. package/dist/tools/components.d.ts.map +1 -0
  22. package/dist/tools/components.js +258 -0
  23. package/dist/tools/components.js.map +1 -0
  24. package/dist/tools/dynamic-entities.d.ts +308 -0
  25. package/dist/tools/dynamic-entities.d.ts.map +1 -0
  26. package/dist/tools/dynamic-entities.js +278 -0
  27. package/dist/tools/dynamic-entities.js.map +1 -0
  28. package/dist/tools/entities.d.ts +212 -0
  29. package/dist/tools/entities.d.ts.map +1 -0
  30. package/dist/tools/entities.js +223 -0
  31. package/dist/tools/entities.js.map +1 -0
  32. package/dist/tools/general.d.ts +93 -0
  33. package/dist/tools/general.d.ts.map +1 -0
  34. package/dist/tools/general.js +218 -0
  35. package/dist/tools/general.js.map +1 -0
  36. package/dist/tools/languages.d.ts +157 -0
  37. package/dist/tools/languages.d.ts.map +1 -0
  38. package/dist/tools/languages.js +142 -0
  39. package/dist/tools/languages.js.map +1 -0
  40. package/dist/tools/layouts.d.ts +244 -0
  41. package/dist/tools/layouts.d.ts.map +1 -0
  42. package/dist/tools/layouts.js +218 -0
  43. package/dist/tools/layouts.js.map +1 -0
  44. package/dist/tools/menus.d.ts +154 -0
  45. package/dist/tools/menus.d.ts.map +1 -0
  46. package/dist/tools/menus.js +173 -0
  47. package/dist/tools/menus.js.map +1 -0
  48. package/dist/tools/pages.d.ts +472 -0
  49. package/dist/tools/pages.d.ts.map +1 -0
  50. package/dist/tools/pages.js +465 -0
  51. package/dist/tools/pages.js.map +1 -0
  52. package/dist/tools/queries.d.ts +221 -0
  53. package/dist/tools/queries.d.ts.map +1 -0
  54. package/dist/tools/queries.js +210 -0
  55. package/dist/tools/queries.js.map +1 -0
  56. package/dist/tools/sites.d.ts +187 -0
  57. package/dist/tools/sites.d.ts.map +1 -0
  58. package/dist/tools/sites.js +167 -0
  59. package/dist/tools/sites.js.map +1 -0
  60. package/dist/tools/themes.d.ts +182 -0
  61. package/dist/tools/themes.d.ts.map +1 -0
  62. package/dist/tools/themes.js +175 -0
  63. package/dist/tools/themes.js.map +1 -0
  64. package/dist/tools/widgets.d.ts +216 -0
  65. package/dist/tools/widgets.d.ts.map +1 -0
  66. package/dist/tools/widgets.js +182 -0
  67. package/dist/tools/widgets.js.map +1 -0
  68. package/package.json +50 -0
package/.env.example ADDED
@@ -0,0 +1,5 @@
1
+ WAP_ADMIN_API_URL=http://localhost:5002
2
+ WAP_SITE_ID=
3
+ WAP_EMAIL=email
4
+ WAP_PASSWORD=password
5
+ WAP_LANGUAGE=tr
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 AppaFlyTech
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,200 @@
1
+ # wappa-mcp
2
+
3
+ WAPPA (Content Management System & Web Site Tools) Admin API için [MCP (Model Context Protocol)](https://modelcontextprotocol.io) Server.
4
+
5
+ Claude Code'a WAPPA Admin API üzerinde doğrudan CRUD işlemleri yapma yeteneği kazandırır: site, sayfa, bileşen, layout, entity, query, menü, tema, dil ve daha fazlasını yönetin.
6
+
7
+ ## Kurulum
8
+
9
+ ### npx ile (Kurulum Gerektirmez)
10
+
11
+ Doğrudan MCP yapılandırmasında kullanabilirsiniz — ayrıca `npm install` yapmanıza gerek yok:
12
+
13
+ ```json
14
+ {
15
+ "mcpServers": {
16
+ "wap": {
17
+ "command": "npx",
18
+ "args": ["-y", "wappa-mcp"],
19
+ "env": {
20
+ "WAP_ADMIN_API_URL": "https://your-wap-admin-api-url.com",
21
+ "WAP_SITE_KEY": "your-site-slug",
22
+ "WAP_EMAIL": "admin@example.com",
23
+ "WAP_PASSWORD": "your-password",
24
+ "WAP_LANGUAGE": "en-us"
25
+ }
26
+ }
27
+ }
28
+ }
29
+ ```
30
+
31
+ ### Global Kurulum
32
+
33
+ ```bash
34
+ npm install -g wappa-mcp
35
+ ```
36
+
37
+ ### Proje İçi Kurulum
38
+
39
+ ```bash
40
+ npm install wappa-mcp
41
+ ```
42
+
43
+ ## Yapılandırma
44
+
45
+ ### Environment Variables
46
+
47
+ | Değişken | Zorunlu | Açıklama | Örnek |
48
+ | ------------------- | ------- | ------------------------------------------- | -------------------------------------- |
49
+ | `WAP_ADMIN_API_URL` | Evet | Admin API base URL | `https://wap-admin-api.example.com` |
50
+ | `WAP_SITE_KEY` | Evet | Site slug/key (URL'de kullanılan kısa isim) | `glomil` |
51
+ | `WAP_SITE_ID` | Hayır | `WAP_SITE_KEY` yoksa fallback site ID | `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx` |
52
+ | `WAP_EMAIL` | Evet | Admin kullanıcı e-postası | `admin@example.com` |
53
+ | `WAP_PASSWORD` | Evet | Admin kullanıcı şifresi | `your-password` |
54
+ | `WAP_LANGUAGE` | Hayır | API dili (Accept-Language header) | `tr` (varsayılan) |
55
+
56
+ ### Claude Code MCP Yapılandırması
57
+
58
+ Projenizin `.claude/mcp.json` dosyasına ekleyin:
59
+
60
+ ```json
61
+ {
62
+ "mcpServers": {
63
+ "wap": {
64
+ "command": "npx",
65
+ "args": ["-y", "wappa-mcp"],
66
+ "env": {
67
+ "WAP_ADMIN_API_URL": "https://wap-admin-api.example.com",
68
+ "WAP_SITE_KEY": "your-site-slug",
69
+ "WAP_EMAIL": "admin@example.com",
70
+ "WAP_PASSWORD": "your-password"
71
+ }
72
+ }
73
+ }
74
+ }
75
+ ```
76
+
77
+ ## Kullanılabilir Tool'lar
78
+
79
+ ### Sites (Siteler)
80
+
81
+ - `list_sites` — Tüm siteleri listele
82
+ - `get_site` — Site detayı getir
83
+ - `create_site` — Yeni site oluştur
84
+ - `update_site` — Site güncelle
85
+ - `delete_site` — Site sil
86
+ - `get_sites_with_entities` — Site + entity şemaları birlikte getir
87
+
88
+ ### Pages (Sayfalar)
89
+
90
+ - `list_pages` — Sayfaları listele (başlık/path/layout/status filtresi)
91
+ - `get_page` — Sayfa detayı getir (views, layout, meta dahil)
92
+ - `create_page` — Yeni sayfa oluştur (views, refs, layoutId ile)
93
+ - `update_page` — Sayfa güncelle
94
+ - `delete_page` — Sayfa sil
95
+ - `publish_page` — Sayfayı yayınla (Draft → Published)
96
+ - `unpublish_page` — Sayfayı yayından kaldır (Published → Draft)
97
+ - `get_page_versions` — Sayfa versiyonlarını listele
98
+ - `generate_page_path` — Benzersiz URL path öner
99
+ - `create_page_localization` — Sayfa çevirisi oluştur
100
+
101
+ ### Components (Bileşenler)
102
+
103
+ - `list_components` — API'deki özel bileşenleri listele
104
+ - `get_component` — Bileşen detayı getir; GUID verilirse API'ye gider, kebab-case isim (örn: `heading`) verilirse önce yerleşik base bileşenlerde arar
105
+ - `create_component` — Yeni bileşen oluştur (schema dahil)
106
+ - `update_component` — Bileşeni güncelle
107
+ - `delete_component` — Bileşeni sil
108
+ - `list_base_components` — Sistemde yerleşik gelen base (built-in) bileşenleri listele; `isMobile` ve `type` parametreleriyle filtrele. Schema değişikliği için `src/base-components.ts` düzenle.
109
+
110
+ ### Layouts
111
+
112
+ - `list_layouts` — Layout'ları listele
113
+ - `get_layout` — Layout detayı getir
114
+ - `create_layout` — Yeni layout oluştur
115
+ - `update_layout` — Layout güncelle
116
+ - `delete_layout` — Layout sil
117
+ - `clone_layout` — Layout kopyala
118
+ - `clone_layout_to_site` — Layout'u başka siteye kopyala
119
+
120
+ ### Entities (Varlık Şemaları)
121
+
122
+ - `list_entities` — Entity şemalarını listele
123
+ - `get_entity` — Entity detayı getir
124
+ - `create_entity` — Yeni entity şeması oluştur
125
+ - `update_entity` — Entity şemasını güncelle
126
+ - `delete_entity` — Entity sil
127
+ - `get_entity_relations` — Entity ilişkilerini getir
128
+
129
+ ### Dynamic Entities (Kayıtlar / İçerikler)
130
+
131
+ - `list_dynamic_entity_records` — Entity kayıtlarını listele
132
+ - `get_dynamic_entity_record` — Kayıt detayı getir
133
+ - `create_dynamic_entity_record` — Yeni kayıt oluştur
134
+ - `update_dynamic_entity_record` — Kaydı güncelle
135
+ - `update_dynamic_entity_status` — Kayıt durumunu değiştir
136
+ - `delete_dynamic_entity_record` — Kaydı sil
137
+ - `clone_dynamic_entity_record` — Kaydı kopyala
138
+ - `create_dynamic_entity_localization` — Kayıt çevirisi oluştur
139
+ - `get_dynamic_entity_versions` — Kayıt versiyonlarını listele
140
+
141
+ ### Queries
142
+
143
+ - `list_queries` — Query'leri listele
144
+ - `get_query` — Query detayı getir
145
+ - `run_query` — Query çalıştır
146
+ - `create_query` — Yeni query oluştur (sql/rest/js)
147
+ - `update_query` — Query güncelle
148
+ - `delete_query` — Query sil
149
+
150
+ ### Menus (Menüler)
151
+
152
+ - `list_menus` — Menüleri listele
153
+ - `get_menu` — Menü detayı getir
154
+ - `create_menu` — Yeni menü oluştur
155
+ - `update_menu` — Menü güncelle
156
+ - `delete_menu` — Menü sil
157
+ - `clone_menu` — Menü kopyala
158
+
159
+ ### Widgets
160
+
161
+ - `list_widgets` — Widget tanımlarını listele
162
+ - `get_widget` — Widget detayı getir
163
+ - `create_widget` — Yeni widget oluştur
164
+ - `update_widget` — Widget güncelle
165
+ - `delete_widget` — Widget sil
166
+
167
+ ### Themes (Temalar)
168
+
169
+ - `list_themes` — Tema ayarlarını listele
170
+ - `get_theme` — Tema detayı getir
171
+ - `create_theme` — Yeni tema oluştur (renkler, yazı boyutları)
172
+ - `update_theme` — Tema güncelle
173
+ - `delete_theme` — Tema sil
174
+
175
+ ### Languages (Diller)
176
+
177
+ - `list_languages` — Desteklenen dilleri listele
178
+ - `get_language` — Dil detayı getir
179
+ - `create_language` — Yeni dil ekle
180
+ - `update_language` — Dil güncelle
181
+ - `delete_language` — Dil sil
182
+
183
+ ### General
184
+
185
+ - `get_app_settings` — Uygulama ayarlarını getir
186
+ - `update_app_settings` — Uygulama ayarlarını güncelle
187
+ - `wap_custom_request` — Herhangi bir Admin API endpoint'ine özel istek gönder
188
+
189
+ ## Kimlik Doğrulama
190
+
191
+ Server, **email + şifre** ile doğrudan Admin API'ye giriş yapar:
192
+
193
+ 1. `WAP_ADMIN_API_URL/auth/sign-in` endpoint'ine POST `{ email, password }`
194
+ 2. Dönen JWT token'ı cache'ler
195
+ 3. Token'ın `exp` claim'inden süre hesaplanır, 5 dakika öncesinde yenilenir
196
+ 4. Her API isteğinde `Authorization: Bearer <token>` header'ı eklenir
197
+
198
+ ## Lisans
199
+
200
+ MIT
package/dist/auth.d.ts ADDED
@@ -0,0 +1,20 @@
1
+ /**
2
+ * WAP Admin API Token Management
3
+ * Uses email/password sign-in (POST /Auth/sign-in) — no separate Identity Server.
4
+ * The returned JWT is cached until 5 minutes before its expiry.
5
+ */
6
+ interface AuthConfig {
7
+ adminApiUrl: string;
8
+ email: string;
9
+ password: string;
10
+ }
11
+ export declare class TokenManager {
12
+ private token;
13
+ private tokenExpiry;
14
+ private config;
15
+ constructor(config: AuthConfig);
16
+ getToken(): Promise<string>;
17
+ invalidate(): void;
18
+ }
19
+ export {};
20
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,UAAU,UAAU;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAeD,qBAAa,YAAY;IACvB,OAAO,CAAC,KAAK,CAAuB;IACpC,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,MAAM,CAAa;gBAEf,MAAM,EAAE,UAAU;IAIxB,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC;IAuCjC,UAAU,IAAI,IAAI;CAInB"}
package/dist/auth.js ADDED
@@ -0,0 +1,58 @@
1
+ /**
2
+ * WAP Admin API Token Management
3
+ * Uses email/password sign-in (POST /Auth/sign-in) — no separate Identity Server.
4
+ * The returned JWT is cached until 5 minutes before its expiry.
5
+ */
6
+ /** Parse the `exp` claim from a JWT (seconds since epoch). Returns 0 on parse failure. */
7
+ function parseJwtExpiry(jwt) {
8
+ try {
9
+ const payload = jwt.split(".")[1];
10
+ const decoded = JSON.parse(Buffer.from(payload, "base64url").toString("utf-8"));
11
+ return typeof decoded.exp === "number" ? decoded.exp * 1000 : 0;
12
+ }
13
+ catch {
14
+ return 0;
15
+ }
16
+ }
17
+ export class TokenManager {
18
+ token = null;
19
+ tokenExpiry = 0;
20
+ config;
21
+ constructor(config) {
22
+ this.config = config;
23
+ }
24
+ async getToken() {
25
+ // Return cached token if still valid (with 5-minute buffer)
26
+ if (this.token && Date.now() < this.tokenExpiry - 5 * 60_000) {
27
+ return this.token;
28
+ }
29
+ const signInUrl = `${this.config.adminApiUrl}/Auth/sign-in`;
30
+ const response = await fetch(signInUrl, {
31
+ method: "POST",
32
+ headers: { "Content-Type": "application/json" },
33
+ body: JSON.stringify({
34
+ email: this.config.email,
35
+ password: this.config.password,
36
+ }),
37
+ });
38
+ if (!response.ok) {
39
+ const errorText = await response.text();
40
+ throw new Error(`Sign-in failed (${response.status}): ${errorText}`);
41
+ }
42
+ const data = await response.json();
43
+ const jwt = data.data || data.Data;
44
+ if (!jwt) {
45
+ throw new Error(`Sign-in response did not contain a token. Response: ${JSON.stringify(data)}`);
46
+ }
47
+ const expiry = parseJwtExpiry(jwt);
48
+ // Fallback: if expiry can't be parsed, cache for 23 hours
49
+ this.tokenExpiry = expiry > 0 ? expiry : Date.now() + 23 * 60 * 60_000;
50
+ this.token = jwt;
51
+ return this.token;
52
+ }
53
+ invalidate() {
54
+ this.token = null;
55
+ this.tokenExpiry = 0;
56
+ }
57
+ }
58
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAeH,0FAA0F;AAC1F,SAAS,cAAc,CAAC,GAAW;IACjC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CACxB,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CACpD,CAAC;QACF,OAAO,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAClE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC;AAED,MAAM,OAAO,YAAY;IACf,KAAK,GAAkB,IAAI,CAAC;IAC5B,WAAW,GAAW,CAAC,CAAC;IACxB,MAAM,CAAa;IAE3B,YAAY,MAAkB;QAC5B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,4DAA4D;QAC5D,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,WAAW,GAAG,CAAC,GAAG,MAAM,EAAE,CAAC;YAC7D,OAAO,IAAI,CAAC,KAAK,CAAC;QACpB,CAAC;QAED,MAAM,SAAS,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,eAAe,CAAC;QAE5D,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,SAAS,EAAE;YACtC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;gBACxB,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;aAC/B,CAAC;SACH,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,mBAAmB,QAAQ,CAAC,MAAM,MAAM,SAAS,EAAE,CAAC,CAAC;QACvE,CAAC;QAED,MAAM,IAAI,GAAmB,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnD,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC;QAEnC,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CACb,uDAAuD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAC9E,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;QACnC,0DAA0D;QAC1D,IAAI,CAAC,WAAW,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;QACvE,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;QAEjB,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,UAAU;QACR,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;IACvB,CAAC;CACF"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Base (built-in) system components for WAP.
3
+ *
4
+ * These components are NOT stored in the backend API — they are hard-coded in
5
+ * the admin UI (elements.ts) and rendered by the web/mobile engine.
6
+ * Keeping them here lets the MCP answer schema questions without an API call,
7
+ * and gives you one place to update their definitions.
8
+ *
9
+ * isMobile: true → available in BOTH web and mobile builders
10
+ * isMobile: false → web builder only
11
+ */
12
+ export interface BaseProp {
13
+ name: string;
14
+ title: string;
15
+ type: string;
16
+ description?: string;
17
+ required?: boolean;
18
+ options?: {
19
+ label: string;
20
+ value: unknown;
21
+ }[];
22
+ props?: BaseProp[];
23
+ }
24
+ export interface BaseComponent {
25
+ /** kebab-case name — also used as the lookup key */
26
+ id: string;
27
+ name: string;
28
+ title: string;
29
+ description: string;
30
+ type: "element" | "wrapper";
31
+ droppable: boolean;
32
+ icon: string;
33
+ /** true = also available in mobile builder; false = web only */
34
+ isMobile: boolean;
35
+ definition: {
36
+ props: BaseProp[];
37
+ groups?: {
38
+ title: string;
39
+ props: BaseProp[];
40
+ }[];
41
+ defaults?: Record<string, unknown>;
42
+ preview?: {
43
+ type: string;
44
+ value: string;
45
+ suffix?: string;
46
+ };
47
+ };
48
+ }
49
+ export declare const BASE_COMPONENTS: BaseComponent[];
50
+ /** Lookup by id/name (case-insensitive) */
51
+ export declare function findBaseComponent(nameOrId: string): BaseComponent | undefined;
52
+ //# sourceMappingURL=base-components.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-components.d.ts","sourceRoot":"","sources":["../src/base-components.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,EAAE,CAAC;IAC9C,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,oDAAoD;IACpD,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,SAAS,GAAG,SAAS,CAAC;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,gEAAgE;IAChE,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE;QACV,KAAK,EAAE,QAAQ,EAAE,CAAC;QAClB,MAAM,CAAC,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,QAAQ,EAAE,CAAA;SAAE,EAAE,CAAC;QAChD,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACnC,OAAO,CAAC,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;KAC5D,CAAC;CACH;AAiOD,eAAO,MAAM,eAAe,EAAE,aAAa,EAuU1C,CAAC;AAEF,2CAA2C;AAC3C,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAG7E"}