sibujs 1.3.0 → 1.5.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 (87) hide show
  1. package/README.md +105 -119
  2. package/dist/browser.cjs +53 -14
  3. package/dist/browser.d.cts +14 -9
  4. package/dist/browser.d.ts +14 -9
  5. package/dist/browser.js +4 -4
  6. package/dist/build.cjs +125 -135
  7. package/dist/build.d.cts +1 -1
  8. package/dist/build.d.ts +1 -1
  9. package/dist/build.js +11 -91
  10. package/dist/cdn.global.js +6 -6
  11. package/dist/chunk-5ZYQ6KDD.js +154 -0
  12. package/dist/chunk-6BMPXPUW.js +26 -0
  13. package/dist/chunk-7GRNSCFT.js +1097 -0
  14. package/dist/chunk-BGTHZHJ5.js +1016 -0
  15. package/dist/chunk-BMPL52BF.js +654 -0
  16. package/dist/chunk-CNZ35WI2.js +178 -0
  17. package/dist/chunk-GJPXRJ45.js +37 -0
  18. package/dist/chunk-JCDUJN2F.js +2779 -0
  19. package/dist/chunk-K4G4ZQNR.js +286 -0
  20. package/dist/chunk-M4NLBH4I.js +725 -0
  21. package/dist/chunk-MB6QFH3I.js +2776 -0
  22. package/dist/chunk-MYRV7VDM.js +742 -0
  23. package/dist/chunk-NZIIMDWI.js +84 -0
  24. package/dist/chunk-P3XWXJZU.js +282 -0
  25. package/dist/chunk-PDZQY43A.js +616 -0
  26. package/dist/chunk-RJ46C3CS.js +1293 -0
  27. package/dist/chunk-SFKNRVCU.js +292 -0
  28. package/dist/chunk-TDGZL5CU.js +365 -0
  29. package/dist/chunk-UHNL42EF.js +2730 -0
  30. package/dist/chunk-VAPYJN4X.js +368 -0
  31. package/dist/chunk-VQDZK23A.js +1023 -0
  32. package/dist/chunk-VQNQZCWJ.js +61 -0
  33. package/dist/chunk-XHK6BDAJ.js +76 -0
  34. package/dist/chunk-XUEEGU5O.js +409 -0
  35. package/dist/chunk-ZWKZCBO6.js +317 -0
  36. package/dist/contracts-ey_Qh8ef.d.cts +239 -0
  37. package/dist/contracts-ey_Qh8ef.d.ts +239 -0
  38. package/dist/contracts-xo5ckdRP.d.cts +240 -0
  39. package/dist/contracts-xo5ckdRP.d.ts +240 -0
  40. package/dist/customElement-BL3Uo8dL.d.cts +318 -0
  41. package/dist/customElement-BL3Uo8dL.d.ts +318 -0
  42. package/dist/data.cjs +52 -11
  43. package/dist/data.js +6 -6
  44. package/dist/devtools.cjs +22 -24
  45. package/dist/devtools.d.cts +1 -1
  46. package/dist/devtools.d.ts +1 -1
  47. package/dist/devtools.js +26 -28
  48. package/dist/ecosystem.cjs +31 -6
  49. package/dist/ecosystem.d.cts +4 -4
  50. package/dist/ecosystem.d.ts +4 -4
  51. package/dist/ecosystem.js +7 -7
  52. package/dist/extras.cjs +305 -131
  53. package/dist/extras.d.cts +3 -3
  54. package/dist/extras.d.ts +3 -3
  55. package/dist/extras.js +21 -29
  56. package/dist/index.cjs +124 -56
  57. package/dist/index.d.cts +60 -72
  58. package/dist/index.d.ts +60 -72
  59. package/dist/index.js +10 -14
  60. package/dist/motion.cjs +13 -2
  61. package/dist/motion.d.cts +1 -1
  62. package/dist/motion.d.ts +1 -1
  63. package/dist/motion.js +3 -3
  64. package/dist/patterns.cjs +91 -46
  65. package/dist/patterns.d.cts +46 -60
  66. package/dist/patterns.d.ts +46 -60
  67. package/dist/patterns.js +6 -14
  68. package/dist/performance.cjs +97 -12
  69. package/dist/performance.d.cts +6 -1
  70. package/dist/performance.d.ts +6 -1
  71. package/dist/performance.js +5 -3
  72. package/dist/plugins.cjs +20 -14
  73. package/dist/plugins.d.cts +3 -3
  74. package/dist/plugins.d.ts +3 -3
  75. package/dist/plugins.js +17 -19
  76. package/dist/ssr.cjs +9 -0
  77. package/dist/ssr.d.cts +1 -1
  78. package/dist/ssr.d.ts +1 -1
  79. package/dist/ssr.js +7 -7
  80. package/dist/testing.js +2 -2
  81. package/dist/ui.cjs +130 -53
  82. package/dist/ui.d.cts +13 -16
  83. package/dist/ui.d.ts +13 -16
  84. package/dist/ui.js +7 -9
  85. package/dist/widgets.cjs +31 -6
  86. package/dist/widgets.js +5 -5
  87. package/package.json +1 -1
@@ -0,0 +1,292 @@
1
+ import {
2
+ bindAttribute,
3
+ registerDisposer
4
+ } from "./chunk-5ZYQ6KDD.js";
5
+ import {
6
+ isUrlAttribute,
7
+ sanitizeCSSValue,
8
+ sanitizeUrl
9
+ } from "./chunk-CMBFNA7L.js";
10
+ import {
11
+ track
12
+ } from "./chunk-K4G4ZQNR.js";
13
+ import {
14
+ devWarn,
15
+ isDev
16
+ } from "./chunk-5X6PP2UK.js";
17
+
18
+ // src/reactivity/bindChildNode.ts
19
+ var _isDev = isDev();
20
+ function bindChildNode(placeholder, getter) {
21
+ let lastNodes = [];
22
+ function commit() {
23
+ let result;
24
+ try {
25
+ result = getter();
26
+ } catch (err) {
27
+ if (_isDev) devWarn(`bindChildNode: getter threw: ${err instanceof Error ? err.message : String(err)}`);
28
+ return;
29
+ }
30
+ if (result == null || typeof result === "boolean") {
31
+ for (let i = 0; i < lastNodes.length; i++) {
32
+ const node = lastNodes[i];
33
+ if (node.parentNode) node.parentNode.removeChild(node);
34
+ }
35
+ lastNodes.length = 0;
36
+ return;
37
+ }
38
+ const parent = placeholder.parentNode;
39
+ if (!parent) {
40
+ lastNodes.length = 0;
41
+ return;
42
+ }
43
+ let newNodes;
44
+ if (Array.isArray(result)) {
45
+ newNodes = [];
46
+ for (let i = 0; i < result.length; i++) {
47
+ const item = result[i];
48
+ if (item == null || typeof item === "boolean") continue;
49
+ newNodes.push(item instanceof Node ? item : document.createTextNode(String(item)));
50
+ }
51
+ } else {
52
+ const node = result instanceof Node ? result : document.createTextNode(String(result));
53
+ newNodes = [node];
54
+ }
55
+ const reused = lastNodes.length > 0 && newNodes.length > 0 ? /* @__PURE__ */ new Set() : void 0;
56
+ if (reused) {
57
+ for (let i = 0; i < newNodes.length; i++) {
58
+ for (let j = 0; j < lastNodes.length; j++) {
59
+ if (newNodes[i] === lastNodes[j]) {
60
+ reused.add(newNodes[i]);
61
+ break;
62
+ }
63
+ }
64
+ }
65
+ }
66
+ for (let i = 0; i < lastNodes.length; i++) {
67
+ const node = lastNodes[i];
68
+ if (reused?.has(node)) continue;
69
+ if (node.parentNode) node.parentNode.removeChild(node);
70
+ }
71
+ const anchor = placeholder.nextSibling;
72
+ for (let i = 0; i < newNodes.length; i++) {
73
+ const node = newNodes[i];
74
+ if (reused?.has(node) && node.parentNode === parent) {
75
+ if (node.nextSibling !== anchor) {
76
+ parent.insertBefore(node, anchor);
77
+ }
78
+ } else {
79
+ parent.insertBefore(node, anchor);
80
+ }
81
+ }
82
+ lastNodes = newNodes;
83
+ }
84
+ return track(commit);
85
+ }
86
+
87
+ // src/core/rendering/tagFactory.ts
88
+ var SVG_NS = "http://www.w3.org/2000/svg";
89
+ var kebabCache = /* @__PURE__ */ new Map();
90
+ function toKebab(prop) {
91
+ let cached = kebabCache.get(prop);
92
+ if (cached !== void 0) return cached;
93
+ cached = prop.replace(/[A-Z]/g, (m) => `-${m.toLowerCase()}`);
94
+ kebabCache.set(prop, cached);
95
+ return cached;
96
+ }
97
+ function applyStyle(el, style) {
98
+ if (typeof style === "function") {
99
+ const teardown = track(() => {
100
+ el.setAttribute("style", style());
101
+ });
102
+ registerDisposer(el, teardown);
103
+ return;
104
+ }
105
+ if (typeof style === "string") {
106
+ el.setAttribute("style", style);
107
+ return;
108
+ }
109
+ const htmlEl = el;
110
+ for (const prop in style) {
111
+ const val = style[prop];
112
+ const name = toKebab(prop);
113
+ if (typeof val === "function") {
114
+ const getter = val;
115
+ const teardown = track(() => {
116
+ htmlEl.style.setProperty(name, sanitizeCSSValue(String(getter())));
117
+ });
118
+ registerDisposer(el, teardown);
119
+ } else {
120
+ htmlEl.style.setProperty(name, sanitizeCSSValue(String(val)));
121
+ }
122
+ }
123
+ }
124
+ function applyClass(el, cls) {
125
+ if (typeof cls === "string") {
126
+ el.setAttribute("class", cls);
127
+ return;
128
+ }
129
+ if (typeof cls === "function") {
130
+ const teardown = track(() => {
131
+ el.setAttribute("class", cls());
132
+ });
133
+ registerDisposer(el, teardown);
134
+ return;
135
+ }
136
+ const obj = cls;
137
+ let hasReactive = false;
138
+ let result = "";
139
+ for (const name in obj) {
140
+ const val = obj[name];
141
+ if (typeof val === "function") {
142
+ hasReactive = true;
143
+ break;
144
+ }
145
+ if (val) result = result ? `${result} ${name}` : name;
146
+ }
147
+ if (hasReactive) {
148
+ const update = () => {
149
+ let r = "";
150
+ for (const name in obj) {
151
+ const val = obj[name];
152
+ const active = typeof val === "function" ? val() : val;
153
+ if (active) r = r ? `${r} ${name}` : name;
154
+ }
155
+ el.setAttribute("class", r);
156
+ };
157
+ const teardown = track(update);
158
+ registerDisposer(el, teardown);
159
+ } else {
160
+ el.setAttribute("class", result);
161
+ }
162
+ }
163
+ function appendChildren(el, nodes) {
164
+ if (typeof nodes === "string") {
165
+ el.textContent = nodes;
166
+ return;
167
+ }
168
+ if (typeof nodes === "number") {
169
+ el.textContent = String(nodes);
170
+ return;
171
+ }
172
+ if (typeof nodes === "boolean" || nodes == null) {
173
+ return;
174
+ }
175
+ if (typeof nodes === "function") {
176
+ const ph = document.createComment("");
177
+ el.appendChild(ph);
178
+ registerDisposer(el, bindChildNode(ph, nodes));
179
+ return;
180
+ }
181
+ if (nodes instanceof Node) {
182
+ el.appendChild(nodes);
183
+ return;
184
+ }
185
+ if (Array.isArray(nodes)) {
186
+ for (let i = 0; i < nodes.length; i++) {
187
+ const c = nodes[i];
188
+ if (typeof c === "function") {
189
+ const ph = document.createComment("");
190
+ el.appendChild(ph);
191
+ registerDisposer(el, bindChildNode(ph, c));
192
+ } else if (c instanceof Node) {
193
+ el.appendChild(c);
194
+ } else if (Array.isArray(c)) {
195
+ for (let j = 0; j < c.length; j++) {
196
+ const inner = c[j];
197
+ if (typeof inner === "function") {
198
+ const ph = document.createComment("");
199
+ el.appendChild(ph);
200
+ registerDisposer(el, bindChildNode(ph, inner));
201
+ } else if (inner instanceof Node) {
202
+ el.appendChild(inner);
203
+ } else if (inner != null && typeof inner !== "boolean") {
204
+ el.appendChild(document.createTextNode(String(inner)));
205
+ }
206
+ }
207
+ } else if (c != null && typeof c !== "boolean") {
208
+ el.appendChild(document.createTextNode(String(c)));
209
+ }
210
+ }
211
+ }
212
+ }
213
+ var tagFactory = (tag, ns) => (first, second) => {
214
+ const el = ns ? document.createElementNS(ns, tag) : document.createElement(tag);
215
+ if (first === void 0) return el;
216
+ if (typeof first === "string") {
217
+ if (second !== void 0) {
218
+ el.setAttribute("class", first);
219
+ appendChildren(el, second);
220
+ return el;
221
+ }
222
+ el.textContent = first;
223
+ return el;
224
+ }
225
+ if (typeof first === "number") {
226
+ el.textContent = String(first);
227
+ return el;
228
+ }
229
+ if (Array.isArray(first) || first instanceof Node || typeof first === "function") {
230
+ appendChildren(el, first);
231
+ return el;
232
+ }
233
+ const props = first;
234
+ const pClass = props.class;
235
+ if (pClass != null) applyClass(el, pClass);
236
+ const pId = props.id;
237
+ if (pId != null) el.id = pId;
238
+ const pNodes = second !== void 0 ? second : props.nodes;
239
+ if (pNodes != null) appendChildren(el, pNodes);
240
+ const pOn = props.on;
241
+ if (pOn) {
242
+ for (const ev in pOn) {
243
+ el.addEventListener(ev, pOn[ev]);
244
+ }
245
+ }
246
+ const pStyle = props.style;
247
+ if (pStyle != null) applyStyle(el, pStyle);
248
+ const pRef = props.ref;
249
+ if (pRef) pRef.current = el;
250
+ for (const key in props) {
251
+ switch (key) {
252
+ case "class":
253
+ case "id":
254
+ case "nodes":
255
+ case "on":
256
+ case "style":
257
+ case "ref":
258
+ case "onElement":
259
+ continue;
260
+ // already handled above / below
261
+ default: {
262
+ const value = props[key];
263
+ if (value == null) continue;
264
+ if (key[0] === "o" && key[1] === "n") continue;
265
+ if (typeof value === "function") {
266
+ registerDisposer(el, bindAttribute(el, key, value));
267
+ } else if (typeof value === "boolean") {
268
+ if (key in el && (key === "checked" || key === "disabled" || key === "selected")) {
269
+ el[key] = value;
270
+ } else if (value) {
271
+ el.setAttribute(key, "");
272
+ } else {
273
+ el.removeAttribute(key);
274
+ }
275
+ } else {
276
+ const str = String(value);
277
+ el.setAttribute(key, isUrlAttribute(key) ? sanitizeUrl(str) : str);
278
+ }
279
+ }
280
+ }
281
+ }
282
+ if (props.onElement && typeof props.onElement === "function") {
283
+ props.onElement(el);
284
+ }
285
+ return el;
286
+ };
287
+
288
+ export {
289
+ bindChildNode,
290
+ SVG_NS,
291
+ tagFactory
292
+ };
@@ -0,0 +1,365 @@
1
+ import {
2
+ createPlugin
3
+ } from "./chunk-K5ZUMYVS.js";
4
+ import {
5
+ tagFactory
6
+ } from "./chunk-SFKNRVCU.js";
7
+ import {
8
+ derived
9
+ } from "./chunk-XHK6BDAJ.js";
10
+ import {
11
+ effect
12
+ } from "./chunk-VQNQZCWJ.js";
13
+ import {
14
+ batch,
15
+ signal
16
+ } from "./chunk-NZIIMDWI.js";
17
+
18
+ // src/ecosystem/adapters/mobx.ts
19
+ function mobXAdapter(options) {
20
+ return createPlugin("sibu-mobx", (ctx) => {
21
+ const { autorun } = options;
22
+ const disposers = [];
23
+ function fromMobX(expression) {
24
+ const [getValue, setValue] = signal(expression());
25
+ const disposer = autorun(() => {
26
+ const newValue = expression();
27
+ batch(() => {
28
+ setValue(newValue);
29
+ });
30
+ });
31
+ disposers.push(disposer);
32
+ return getValue;
33
+ }
34
+ function toMobX(sibuGetter, callback) {
35
+ return effect(() => {
36
+ callback(sibuGetter());
37
+ });
38
+ }
39
+ function destroy() {
40
+ for (const disposer of disposers) {
41
+ disposer();
42
+ }
43
+ disposers.length = 0;
44
+ }
45
+ const api = { fromMobX, toMobX, destroy };
46
+ ctx.provide("mobx", api);
47
+ });
48
+ }
49
+
50
+ // src/ecosystem/adapters/redux.ts
51
+ function reduxAdapter(options) {
52
+ return createPlugin("sibu-redux", (ctx) => {
53
+ const { store } = options;
54
+ const [getState, setState] = signal(store.getState());
55
+ const unsubscribe = store.subscribe(() => {
56
+ batch(() => {
57
+ setState(store.getState());
58
+ });
59
+ });
60
+ function useSelector(selector) {
61
+ return derived(() => selector(getState()));
62
+ }
63
+ const api = {
64
+ getState,
65
+ useSelector,
66
+ dispatch: store.dispatch.bind(store),
67
+ destroy: unsubscribe
68
+ };
69
+ ctx.provide("redux", api);
70
+ });
71
+ }
72
+
73
+ // src/ecosystem/adapters/zustand.ts
74
+ function zustandAdapter(options) {
75
+ return createPlugin("sibu-zustand", (ctx) => {
76
+ const { store } = options;
77
+ const [getState, setSibuState] = signal(store.getState());
78
+ const unsubscribe = store.subscribe((state) => {
79
+ batch(() => {
80
+ setSibuState(state);
81
+ });
82
+ });
83
+ function useSelector(selector) {
84
+ return derived(() => selector(getState()));
85
+ }
86
+ const api = {
87
+ getState,
88
+ useSelector,
89
+ setState: store.setState.bind(store),
90
+ destroy() {
91
+ unsubscribe();
92
+ store.destroy();
93
+ }
94
+ };
95
+ ctx.provide("zustand", api);
96
+ });
97
+ }
98
+
99
+ // src/ecosystem/ui/componentAdapter.ts
100
+ function createTheme(initial) {
101
+ const [getConfig, setConfig] = signal(initial);
102
+ function resolveClass(component, variant) {
103
+ const config = getConfig();
104
+ const overrideKey = variant ? `${component}-${variant}` : component;
105
+ if (config.classOverrides?.[overrideKey]) {
106
+ return config.classOverrides[overrideKey];
107
+ }
108
+ const base = `${config.prefix}-${component}`;
109
+ return variant ? `${base} ${config.prefix}-${component}--${variant}` : base;
110
+ }
111
+ function setTheme(partial) {
112
+ setConfig((prev) => ({ ...prev, ...partial }));
113
+ }
114
+ return { config: getConfig, setTheme, resolveClass };
115
+ }
116
+ function componentAdapter(config) {
117
+ const theme = createTheme({ prefix: config.prefix });
118
+ const components = {};
119
+ for (const [name, mapping] of Object.entries(config.components)) {
120
+ const factory = tagFactory(mapping.tag || "div");
121
+ components[name] = (props = {}) => {
122
+ const { variant, size, class: userClass, ...rest } = props;
123
+ const classes = [mapping.baseClass];
124
+ if (variant && mapping.variants?.[variant]) {
125
+ classes.push(mapping.variants[variant]);
126
+ }
127
+ if (size && mapping.sizes?.[size]) {
128
+ classes.push(mapping.sizes[size]);
129
+ }
130
+ let finalClass;
131
+ if (typeof userClass === "function") {
132
+ finalClass = () => {
133
+ const extra = userClass();
134
+ return extra ? `${classes.join(" ")} ${extra}` : classes.join(" ");
135
+ };
136
+ } else if (typeof userClass === "string" && userClass) {
137
+ finalClass = `${classes.join(" ")} ${userClass}`;
138
+ } else {
139
+ finalClass = classes.join(" ");
140
+ }
141
+ const mergedProps = {
142
+ ...mapping.defaultProps,
143
+ ...rest,
144
+ class: finalClass
145
+ };
146
+ return factory(mergedProps);
147
+ };
148
+ }
149
+ return { name: config.name, components, theme };
150
+ }
151
+
152
+ // src/ecosystem/ui/antd.ts
153
+ var antdConfig = {
154
+ name: "antd",
155
+ prefix: "ant",
156
+ components: {
157
+ Button: {
158
+ tag: "button",
159
+ baseClass: "ant-btn",
160
+ variants: {
161
+ primary: "ant-btn-primary",
162
+ dashed: "ant-btn-dashed",
163
+ text: "ant-btn-text",
164
+ link: "ant-btn-link",
165
+ default: "ant-btn-default",
166
+ danger: "ant-btn-dangerous"
167
+ },
168
+ sizes: {
169
+ sm: "ant-btn-sm",
170
+ lg: "ant-btn-lg"
171
+ },
172
+ defaultProps: { type: "button" }
173
+ },
174
+ Input: {
175
+ tag: "input",
176
+ baseClass: "ant-input",
177
+ sizes: {
178
+ sm: "ant-input-sm",
179
+ lg: "ant-input-lg"
180
+ }
181
+ },
182
+ Card: {
183
+ tag: "div",
184
+ baseClass: "ant-card",
185
+ variants: {
186
+ bordered: "ant-card-bordered"
187
+ }
188
+ },
189
+ Modal: {
190
+ tag: "div",
191
+ baseClass: "ant-modal"
192
+ },
193
+ Tag: {
194
+ tag: "span",
195
+ baseClass: "ant-tag",
196
+ variants: {
197
+ success: "ant-tag-success",
198
+ error: "ant-tag-error",
199
+ warning: "ant-tag-warning",
200
+ processing: "ant-tag-processing"
201
+ }
202
+ },
203
+ Badge: {
204
+ tag: "span",
205
+ baseClass: "ant-badge"
206
+ },
207
+ Avatar: {
208
+ tag: "span",
209
+ baseClass: "ant-avatar",
210
+ sizes: {
211
+ sm: "ant-avatar-sm",
212
+ lg: "ant-avatar-lg"
213
+ }
214
+ }
215
+ }
216
+ };
217
+ var antdAdapter = componentAdapter(antdConfig);
218
+
219
+ // src/ecosystem/ui/chakra.ts
220
+ var chakraConfig = {
221
+ name: "chakra",
222
+ prefix: "chakra",
223
+ components: {
224
+ Button: {
225
+ tag: "button",
226
+ baseClass: "chakra-button",
227
+ variants: {
228
+ solid: "chakra-button--solid",
229
+ outline: "chakra-button--outline",
230
+ ghost: "chakra-button--ghost",
231
+ link: "chakra-button--link"
232
+ },
233
+ sizes: {
234
+ xs: "chakra-button--xs",
235
+ sm: "chakra-button--sm",
236
+ md: "chakra-button--md",
237
+ lg: "chakra-button--lg"
238
+ },
239
+ defaultProps: { type: "button" }
240
+ },
241
+ Input: {
242
+ tag: "input",
243
+ baseClass: "chakra-input",
244
+ variants: {
245
+ outline: "chakra-input--outline",
246
+ filled: "chakra-input--filled",
247
+ flushed: "chakra-input--flushed",
248
+ unstyled: "chakra-input--unstyled"
249
+ },
250
+ sizes: {
251
+ xs: "chakra-input--xs",
252
+ sm: "chakra-input--sm",
253
+ md: "chakra-input--md",
254
+ lg: "chakra-input--lg"
255
+ }
256
+ },
257
+ Card: {
258
+ tag: "div",
259
+ baseClass: "chakra-card",
260
+ variants: {
261
+ elevated: "chakra-card--elevated",
262
+ outline: "chakra-card--outline",
263
+ filled: "chakra-card--filled",
264
+ unstyled: "chakra-card--unstyled"
265
+ }
266
+ },
267
+ Modal: {
268
+ tag: "div",
269
+ baseClass: "chakra-modal__content"
270
+ },
271
+ Badge: {
272
+ tag: "span",
273
+ baseClass: "chakra-badge",
274
+ variants: {
275
+ solid: "chakra-badge--solid",
276
+ subtle: "chakra-badge--subtle",
277
+ outline: "chakra-badge--outline"
278
+ }
279
+ },
280
+ Stack: {
281
+ tag: "div",
282
+ baseClass: "chakra-stack",
283
+ variants: {
284
+ horizontal: "chakra-stack--horizontal",
285
+ vertical: "chakra-stack--vertical"
286
+ }
287
+ }
288
+ }
289
+ };
290
+ var chakraAdapter = componentAdapter(chakraConfig);
291
+
292
+ // src/ecosystem/ui/material.ts
293
+ var materialConfig = {
294
+ name: "material",
295
+ prefix: "mdc",
296
+ components: {
297
+ Button: {
298
+ tag: "button",
299
+ baseClass: "mdc-button",
300
+ variants: {
301
+ raised: "mdc-button--raised",
302
+ outlined: "mdc-button--outlined",
303
+ text: "mdc-button--text",
304
+ unelevated: "mdc-button--unelevated"
305
+ },
306
+ sizes: {
307
+ sm: "mdc-button--dense"
308
+ },
309
+ defaultProps: { type: "button" }
310
+ },
311
+ Input: {
312
+ tag: "div",
313
+ baseClass: "mdc-text-field",
314
+ variants: {
315
+ outlined: "mdc-text-field--outlined",
316
+ filled: "mdc-text-field--filled"
317
+ }
318
+ },
319
+ Card: {
320
+ tag: "div",
321
+ baseClass: "mdc-card",
322
+ variants: {
323
+ outlined: "mdc-card--outlined",
324
+ elevated: "mdc-card--elevated"
325
+ }
326
+ },
327
+ Modal: {
328
+ tag: "div",
329
+ baseClass: "mdc-dialog",
330
+ variants: {
331
+ fullscreen: "mdc-dialog--fullscreen"
332
+ }
333
+ },
334
+ Chip: {
335
+ tag: "span",
336
+ baseClass: "mdc-chip",
337
+ variants: {
338
+ outlined: "mdc-chip--outlined"
339
+ }
340
+ },
341
+ List: {
342
+ tag: "ul",
343
+ baseClass: "mdc-list",
344
+ variants: {
345
+ dense: "mdc-list--dense"
346
+ }
347
+ },
348
+ ListItem: {
349
+ tag: "li",
350
+ baseClass: "mdc-list-item"
351
+ }
352
+ }
353
+ };
354
+ var materialAdapter = componentAdapter(materialConfig);
355
+
356
+ export {
357
+ mobXAdapter,
358
+ reduxAdapter,
359
+ zustandAdapter,
360
+ createTheme,
361
+ componentAdapter,
362
+ antdAdapter,
363
+ chakraAdapter,
364
+ materialAdapter
365
+ };