fiboui 1.0.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 (141) hide show
  1. package/README.md +101 -0
  2. package/dist/content/Alert/index.d.ts +878 -0
  3. package/dist/content/Avatar/index.d.ts +886 -0
  4. package/dist/content/Badge/index.d.ts +887 -0
  5. package/dist/content/Image/index.d.ts +893 -0
  6. package/dist/content/Label/index.d.ts +879 -0
  7. package/dist/content/Progress/index.d.ts +898 -0
  8. package/dist/content/Skeleton/index.d.ts +879 -0
  9. package/dist/content/Spinner/index.d.ts +880 -0
  10. package/dist/content/Text/index.d.ts +878 -0
  11. package/dist/content/index.d.ts +9 -0
  12. package/dist/core/StateWrapper.d.ts +28 -0
  13. package/dist/core/builder.d.ts +50 -0
  14. package/dist/core/component.d.ts +7 -0
  15. package/dist/core/effects.d.ts +3 -0
  16. package/dist/core/icons.d.ts +11 -0
  17. package/dist/core/index.d.ts +5 -0
  18. package/dist/core/state.d.ts +37 -0
  19. package/dist/core/types.d.ts +51 -0
  20. package/dist/demo.d.ts +7 -0
  21. package/dist/effects-Co9C_Dyx.mjs +9 -0
  22. package/dist/examples/ScaffoldExamples.d.ts +3 -0
  23. package/dist/examples/StateExamples.d.ts +5 -0
  24. package/dist/index.d.ts +6 -0
  25. package/dist/index.esm.js +4622 -0
  26. package/dist/index.umd.js +251 -0
  27. package/dist/interactive/Button/index.d.ts +897 -0
  28. package/dist/interactive/Checkbox/index.d.ts +884 -0
  29. package/dist/interactive/Combobox/index.d.ts +898 -0
  30. package/dist/interactive/RadioGroup/index.d.ts +888 -0
  31. package/dist/interactive/Select/index.d.ts +895 -0
  32. package/dist/interactive/Switch/index.d.ts +881 -0
  33. package/dist/interactive/TextField/index.d.ts +892 -0
  34. package/dist/interactive/Textarea/index.d.ts +890 -0
  35. package/dist/interactive/index.d.ts +8 -0
  36. package/dist/layout/Center/index.d.ts +869 -0
  37. package/dist/layout/Column/index.d.ts +881 -0
  38. package/dist/layout/Container/index.d.ts +870 -0
  39. package/dist/layout/DashboardLayout/index.d.ts +870 -0
  40. package/dist/layout/Header/index.d.ts +870 -0
  41. package/dist/layout/Line/index.d.ts +872 -0
  42. package/dist/layout/Row/index.d.ts +879 -0
  43. package/dist/layout/Scaffold/index.d.ts +878 -0
  44. package/dist/layout/ScrollView/index.d.ts +879 -0
  45. package/dist/layout/Sidebar/index.d.ts +870 -0
  46. package/dist/layout/Spacer/index.d.ts +875 -0
  47. package/dist/layout/StakentComponents.d.ts +4 -0
  48. package/dist/layout/index.d.ts +11 -0
  49. package/dist/structure/Banner/index.d.ts +879 -0
  50. package/dist/structure/Box/index.d.ts +869 -0
  51. package/dist/structure/Card/index.d.ts +881 -0
  52. package/dist/structure/Collapse/index.d.ts +884 -0
  53. package/dist/structure/Grid/index.d.ts +1757 -0
  54. package/dist/structure/List/index.d.ts +888 -0
  55. package/dist/structure/Table/index.d.ts +895 -0
  56. package/dist/structure/Tags/index.d.ts +876 -0
  57. package/dist/structure/cards/AssetCard/index.d.ts +884 -0
  58. package/dist/structure/cards/CollectionCard/index.d.ts +880 -0
  59. package/dist/structure/cards/ContentCard/index.d.ts +884 -0
  60. package/dist/structure/cards/ProfileCard/index.d.ts +892 -0
  61. package/dist/structure/cards/index.d.ts +5 -0
  62. package/dist/structure/cards/variants/index.d.ts +3490 -0
  63. package/dist/structure/index.d.ts +9 -0
  64. package/dist/style.css +1 -0
  65. package/dist/theme/cupertino.d.ts +3 -0
  66. package/dist/theme/index.d.ts +5 -0
  67. package/dist/theme/material.d.ts +3 -0
  68. package/dist/theme/provider.d.ts +16 -0
  69. package/dist/theme/types.d.ts +57 -0
  70. package/dist/theme/web.d.ts +3 -0
  71. package/package.json +54 -0
  72. package/src/content/Alert/index.ts +110 -0
  73. package/src/content/Avatar/index.ts +116 -0
  74. package/src/content/Badge/index.ts +162 -0
  75. package/src/content/Image/index.ts +137 -0
  76. package/src/content/Label/index.ts +66 -0
  77. package/src/content/Progress/index.ts +378 -0
  78. package/src/content/Skeleton/index.ts +71 -0
  79. package/src/content/Spinner/index.ts +139 -0
  80. package/src/content/Text/index.ts +74 -0
  81. package/src/content/index.ts +9 -0
  82. package/src/core/StateWrapper.tsx +105 -0
  83. package/src/core/builder.ts +259 -0
  84. package/src/core/component.ts +49 -0
  85. package/src/core/effects.ts +27 -0
  86. package/src/core/icons.tsx +57 -0
  87. package/src/core/index.ts +5 -0
  88. package/src/core/state.ts +233 -0
  89. package/src/core/types.ts +62 -0
  90. package/src/demo.tsx +1045 -0
  91. package/src/examples/ScaffoldExamples.tsx +299 -0
  92. package/src/examples/StateExamples.tsx +149 -0
  93. package/src/index.ts +8 -0
  94. package/src/interactive/Button/index.ts +218 -0
  95. package/src/interactive/Checkbox/index.ts +145 -0
  96. package/src/interactive/Combobox/index.ts +278 -0
  97. package/src/interactive/RadioGroup/index.ts +124 -0
  98. package/src/interactive/Select/index.ts +227 -0
  99. package/src/interactive/Switch/index.ts +123 -0
  100. package/src/interactive/TextField/index.ts +200 -0
  101. package/src/interactive/Textarea/index.ts +129 -0
  102. package/src/interactive/index.ts +8 -0
  103. package/src/layout/Center/index.ts +34 -0
  104. package/src/layout/Column/index.ts +101 -0
  105. package/src/layout/Container/index.ts +28 -0
  106. package/src/layout/DashboardLayout/index.ts +106 -0
  107. package/src/layout/Header/index.ts +50 -0
  108. package/src/layout/Line/index.ts +41 -0
  109. package/src/layout/Row/index.ts +93 -0
  110. package/src/layout/Scaffold/index.ts +133 -0
  111. package/src/layout/ScrollView/index.ts +67 -0
  112. package/src/layout/Sidebar/index.ts +56 -0
  113. package/src/layout/Spacer/index.ts +46 -0
  114. package/src/layout/StakentComponents.tsx +57 -0
  115. package/src/layout/index.ts +11 -0
  116. package/src/structure/Banner/index.ts +92 -0
  117. package/src/structure/Box/index.ts +45 -0
  118. package/src/structure/Card/index.ts +113 -0
  119. package/src/structure/Collapse/index.ts +122 -0
  120. package/src/structure/Grid/index.ts +197 -0
  121. package/src/structure/List/index.ts +185 -0
  122. package/src/structure/Table/index.ts +165 -0
  123. package/src/structure/Tags/index.ts +69 -0
  124. package/src/structure/cards/AssetCard/index.ts +158 -0
  125. package/src/structure/cards/CollectionCard/index.ts +95 -0
  126. package/src/structure/cards/ContentCard/index.ts +127 -0
  127. package/src/structure/cards/ProfileCard/index.ts +152 -0
  128. package/src/structure/cards/index.ts +5 -0
  129. package/src/structure/cards/variants/index.ts +301 -0
  130. package/src/structure/index.ts +10 -0
  131. package/src/styles/base.css +186 -0
  132. package/src/styles/core.css +52 -0
  133. package/src/styles/themes/cupertino.css +197 -0
  134. package/src/styles/themes/material.css +322 -0
  135. package/src/styles/themes/web.css +196 -0
  136. package/src/theme/cupertino.ts +85 -0
  137. package/src/theme/index.ts +5 -0
  138. package/src/theme/material.ts +86 -0
  139. package/src/theme/provider.tsx +76 -0
  140. package/src/theme/types.ts +62 -0
  141. package/src/theme/web.ts +82 -0
@@ -0,0 +1,105 @@
1
+ import { useState, useEffect, createContext, useContext, ReactNode } from 'react';
2
+ import { Observable, Signal } from './state';
3
+
4
+
5
+
6
+
7
+
8
+ export const StateContext = createContext<Map<string, any>>(new Map());
9
+
10
+ export function useStateContext() {
11
+ return useContext(StateContext);
12
+ }
13
+
14
+
15
+
16
+
17
+
18
+ interface StateWrapperProps {
19
+ stateMap: Map<string, any>;
20
+ children: ReactNode;
21
+ }
22
+
23
+
24
+ export function StateWrapper({ stateMap, children }: StateWrapperProps) {
25
+ const [state] = useState(() => new Map(stateMap));
26
+
27
+ return (
28
+ <StateContext.Provider value={state}>
29
+ {children}
30
+ </StateContext.Provider>
31
+ );
32
+ }
33
+
34
+
35
+
36
+
37
+
38
+ interface ObserverWrapperProps {
39
+ observables: Set<Observable<any>>;
40
+ children: ReactNode;
41
+ }
42
+
43
+
44
+ export function ObserverWrapper({ observables, children }: ObserverWrapperProps) {
45
+ const [, forceUpdate] = useState({});
46
+
47
+ useEffect(() => {
48
+ const unsubscribers = Array.from(observables).map(obs =>
49
+ obs.subscribe(() => forceUpdate({}))
50
+ );
51
+
52
+ return () => unsubscribers.forEach(unsub => unsub());
53
+ }, [observables]);
54
+
55
+ return <>{children}</>;
56
+ }
57
+
58
+
59
+
60
+
61
+
62
+ interface SignalWrapperProps {
63
+ signals: Set<Signal<any>>;
64
+ children: ReactNode;
65
+ }
66
+
67
+
68
+ export function SignalWrapper({ signals, children }: SignalWrapperProps) {
69
+ const [, forceUpdate] = useState({});
70
+
71
+ useEffect(() => {
72
+ const unsubscribers = Array.from(signals).map(sig =>
73
+ sig.subscribe(() => forceUpdate({}))
74
+ );
75
+
76
+ return () => unsubscribers.forEach(unsub => unsub());
77
+ }, [signals]);
78
+
79
+ return <>{children}</>;
80
+ }
81
+
82
+
83
+
84
+
85
+
86
+ interface ProviderWrapperProps {
87
+ providers: Map<string, any>;
88
+ children: ReactNode;
89
+ }
90
+
91
+ export const ProviderContext = createContext<Map<string, any>>(new Map());
92
+
93
+ export function useProvider<T>(key: string): T | undefined {
94
+ const providers = useContext(ProviderContext);
95
+ return providers.get(key);
96
+ }
97
+
98
+
99
+ export function ProviderWrapper({ providers, children }: ProviderWrapperProps) {
100
+ return (
101
+ <ProviderContext.Provider value={providers}>
102
+ {children}
103
+ </ProviderContext.Provider>
104
+ );
105
+ }
@@ -0,0 +1,259 @@
1
+ import { CSSProperties, ReactElement, ReactNode } from 'react';
2
+ import { ResponsiveStyles } from './types';
3
+ import { Observable, Signal } from './state';
4
+ import clsx from 'clsx';
5
+
6
+ import { cssToTailwind } from '@metagptx/css-to-tailwind';
7
+
8
+ export abstract class FiboBuilder {
9
+ protected _props: Record<string, any> = {};
10
+ protected _style: CSSProperties = {};
11
+ protected _cssStyles: CSSProperties = {};
12
+ protected _classNames: string[] = [];
13
+ protected _children: ReactNode[] = [];
14
+ protected _responsive?: ResponsiveStyles;
15
+
16
+
17
+ protected _state: Map<string, any> = new Map();
18
+ protected _providers: Map<string, any> = new Map();
19
+ protected _observers: Set<Observable<any>> = new Set();
20
+ protected _signals: Set<Signal<any>> = new Set();
21
+ protected _isObserver: boolean = false;
22
+
23
+
24
+
25
+ id(value: string): this {
26
+ this._props.id = value;
27
+ return this;
28
+ }
29
+
30
+ paddingHorizontal(value: string | number): this {
31
+ if (typeof value === 'number') {
32
+ this._classNames.push(`px-[${value}px]`);
33
+ } else {
34
+ this._classNames.push(`px-${value}`);
35
+ }
36
+ return this;
37
+ }
38
+
39
+ paddingVertical(value: string | number): this {
40
+ if (typeof value === 'number') {
41
+ this._classNames.push(`py-[${value}px]`);
42
+ } else {
43
+ this._classNames.push(`py-${value}`);
44
+ }
45
+ return this;
46
+ }
47
+
48
+
49
+
50
+ marginHorizontal(value: string | number): this {
51
+ if (typeof value === 'number') {
52
+ this._classNames.push(`mx-[${value}px]`);
53
+ } else {
54
+ this._classNames.push(`mx-${value}`);
55
+ }
56
+ return this;
57
+ }
58
+
59
+ marginVertical(value: string | number): this {
60
+ if (typeof value === 'number') {
61
+ this._classNames.push(`my-[${value}px]`);
62
+ } else {
63
+ this._classNames.push(`my-${value}`);
64
+ }
65
+ return this;
66
+ }
67
+
68
+
69
+
70
+
71
+
72
+
73
+
74
+
75
+
76
+
77
+
78
+
79
+
80
+
81
+
82
+ flexDirection(direction: 'row' | 'column'): this {
83
+ this._classNames.push(`flex-${direction}`);
84
+ return this;
85
+ }
86
+
87
+ alignItems(alignment: 'start' | 'center' | 'end' | 'stretch'): this {
88
+ this._classNames.push(`items-${alignment}`);
89
+ return this;
90
+ }
91
+
92
+ justifyContent(justify: 'start' | 'center' | 'end' | 'between' | 'around' | 'evenly'): this {
93
+ this._classNames.push(`justify-${justify}`);
94
+ return this;
95
+ }
96
+
97
+
98
+
99
+
100
+
101
+
102
+
103
+ responsive(styles: ResponsiveStyles): this {
104
+ this._responsive = styles;
105
+ return this;
106
+ }
107
+
108
+
109
+
110
+
111
+
112
+
113
+ state<T>(key: string, initialValue: T): this {
114
+ this._state.set(key, initialValue);
115
+ return this;
116
+ }
117
+
118
+
119
+ getState<T>(key: string): T | undefined {
120
+ return this._state.get(key);
121
+ }
122
+
123
+
124
+ setState<T>(key: string, value: T): this {
125
+ this._state.set(key, value);
126
+ return this;
127
+ }
128
+
129
+
130
+ provide<T>(key: string, value: T): this {
131
+ this._providers.set(key, value);
132
+ return this;
133
+ }
134
+
135
+
136
+ consume<T>(key: string): T | undefined {
137
+ return this._providers.get(key);
138
+ }
139
+
140
+
141
+ observer(): this {
142
+ this._isObserver = true;
143
+ return this;
144
+ }
145
+
146
+
147
+ observe<T>(observable: Observable<T>): this {
148
+ this._observers.add(observable);
149
+ return this;
150
+ }
151
+
152
+
153
+ bindSignal<T>(signal: Signal<T>): this {
154
+ this._signals.add(signal);
155
+ return this;
156
+ }
157
+
158
+
159
+ protected hasStateManagement(): boolean {
160
+ return (
161
+ this._state.size > 0 ||
162
+ this._providers.size > 0 ||
163
+ this._observers.size > 0 ||
164
+ this._signals.size > 0 ||
165
+ this._isObserver
166
+ );
167
+ }
168
+
169
+ className(className: string): this {
170
+ this._classNames.push(className);
171
+ return this;
172
+ }
173
+
174
+ classNames(classNames: string[]): this {
175
+ this._classNames.push(...classNames);
176
+ return this;
177
+ }
178
+
179
+ css(styles: CSSProperties): this {
180
+ this._cssStyles = { ...this._cssStyles, ...styles };
181
+ return this;
182
+ }
183
+
184
+ style(style: CSSProperties): this {
185
+ this._style = { ...this._style, ...style };
186
+ return this;
187
+ }
188
+
189
+ props(props: Record<string, any>): this {
190
+ this._props = { ...this._props, ...props };
191
+ return this;
192
+ }
193
+
194
+ children(children: ReactNode | ReactNode[]): this {
195
+ const childArray = Array.isArray(children) ? children : [children];
196
+ this._children = childArray.map((child) => {
197
+ if (child && typeof child === 'object' && 'build' in child && typeof (child as any).build === 'function') {
198
+ return (child as any).build();
199
+ }
200
+ return child;
201
+ });
202
+ return this;
203
+ }
204
+
205
+ protected getClassName(): string {
206
+ if (Object.keys(this._cssStyles).length > 0) {
207
+
208
+ const tailwindClasses = cssToTailwind(this._cssStyles as Record<string, string | number | undefined>);
209
+ if (tailwindClasses) {
210
+ this._classNames.push(tailwindClasses);
211
+ }
212
+ }
213
+ return clsx(this._classNames);
214
+ }
215
+
216
+ protected getStyle(): CSSProperties {
217
+ let finalStyle = { ...this._style, ...this._cssStyles };
218
+
219
+ if (this._responsive) {
220
+ if (this._responsive.mobile) {
221
+ finalStyle = { ...finalStyle, ...this._responsive.mobile };
222
+ }
223
+ }
224
+
225
+ return finalStyle;
226
+ }
227
+
228
+ protected processChildren(): ReactNode[] {
229
+ return this._children;
230
+ }
231
+
232
+ abstract build(): ReactElement;
233
+ }
234
+
235
+ type StyleBuilder<T> = T & {
236
+ [K in keyof CSSProperties]-?: (value: CSSProperties[K]) => StyleBuilder<T>;
237
+ };
238
+
239
+ export function createBuilder<T extends FiboBuilder, Args extends any[]>(
240
+ BuilderClass: new (...args: Args) => T
241
+ ): (...args: Args) => StyleBuilder<T> {
242
+ return (...args: Args) => {
243
+ const instance = new BuilderClass(...args);
244
+
245
+ return new Proxy(instance, {
246
+ get(target, prop, receiver) {
247
+ if (Reflect.has(target, prop)) {
248
+ return Reflect.get(target, prop, receiver);
249
+ }
250
+
251
+
252
+ return (value: any) => {
253
+ target.css({ [prop]: value });
254
+ return receiver;
255
+ };
256
+ },
257
+ }) as StyleBuilder<T>;
258
+ };
259
+ }
@@ -0,0 +1,49 @@
1
+ import { ReactNode } from 'react';
2
+ import { ResponsiveStyles } from './types';
3
+
4
+ export function processChildren(children: ReactNode | ReactNode[]): ReactNode[] {
5
+ const childArray = Array.isArray(children) ? children : [children];
6
+
7
+ return childArray.map((child) => {
8
+ if (child && typeof child === 'object' && 'build' in child) {
9
+ return (child as any).build();
10
+ }
11
+ return child;
12
+ });
13
+ }
14
+
15
+ export function mergeStyles(...styles: (React.CSSProperties | undefined)[]): React.CSSProperties {
16
+ return styles.reduce<React.CSSProperties>((acc, style) => {
17
+ if (style) {
18
+ return { ...acc, ...style };
19
+ }
20
+ return acc;
21
+ }, {});
22
+ }
23
+
24
+ export function applyResponsiveStyles(
25
+ baseStyle: React.CSSProperties,
26
+ responsive?: ResponsiveStyles
27
+ ): React.CSSProperties {
28
+ if (!responsive) return baseStyle;
29
+
30
+ let finalStyle = { ...baseStyle };
31
+
32
+ if (typeof window !== 'undefined') {
33
+ const width = window.innerWidth;
34
+
35
+ if (width < 768 && responsive.mobile) {
36
+ finalStyle = { ...finalStyle, ...responsive.mobile };
37
+ } else if (width >= 768 && width < 1024 && responsive.tablet) {
38
+ finalStyle = { ...finalStyle, ...responsive.tablet };
39
+ } else if (width >= 1024 && responsive.desktop) {
40
+ finalStyle = { ...finalStyle, ...responsive.desktop };
41
+ }
42
+ }
43
+
44
+ return finalStyle;
45
+ }
46
+
47
+ export function normalizeValue(value: string | number, unit = 'px'): string {
48
+ return typeof value === 'number' ? `${value}${unit}` : value;
49
+ }
@@ -0,0 +1,27 @@
1
+ import { MouseEvent } from 'react';
2
+
3
+ export const createRipple = (event: MouseEvent<HTMLElement>, color: string = 'rgba(255, 255, 255, 0.3)') => {
4
+ const button = event.currentTarget;
5
+ const circle = document.createElement('span');
6
+ const diameter = Math.max(button.clientWidth, button.clientHeight);
7
+ const radius = diameter / 2;
8
+
9
+ const rect = button.getBoundingClientRect();
10
+
11
+ circle.style.width = circle.style.height = `${diameter}px`;
12
+ circle.style.left = `${event.clientX - rect.left - radius}px`;
13
+ circle.style.top = `${event.clientY - rect.top - radius}px`;
14
+ circle.style.position = 'absolute';
15
+ circle.style.borderRadius = '50%';
16
+ circle.style.transform = 'scale(0)';
17
+ circle.style.animation = 'fibo-ripple 600ms linear';
18
+ circle.style.backgroundColor = color;
19
+ circle.style.pointerEvents = 'none';
20
+
21
+ const rippleContainer = button.querySelector('.fibo-ripple-container') || button;
22
+ rippleContainer.appendChild(circle);
23
+
24
+ setTimeout(() => {
25
+ circle.remove();
26
+ }, 600);
27
+ };
@@ -0,0 +1,57 @@
1
+
2
+
3
+ export const Icons = {
4
+ Heart: (
5
+ <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2">
6
+ <path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"></path>
7
+ </svg>
8
+ ),
9
+ Eth: (
10
+ <svg width="14" height="24" viewBox="0 0 32 32" fill="currentColor">
11
+ <path d="M15.925 23.96l-9.815-5.8 9.815 13.84 9.825-13.84-9.825 5.8zm0-23.96l-9.815 16.275 9.815 5.675 9.825-5.675-9.825-16.275zm0 20.3l-8.915-5.265 8.915-12.42 8.925 12.42-8.925 5.265z" />
12
+ </svg>
13
+ ),
14
+ Verify: (
15
+ <svg width="16" height="16" viewBox="0 0 24 24" fill="#3B82F6" stroke="none">
16
+ <path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"></path>
17
+ </svg>
18
+ ),
19
+ More: (
20
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2">
21
+ <circle cx="12" cy="12" r="1" />
22
+ <circle cx="19" cy="12" r="1" />
23
+ <circle cx="5" cy="12" r="1" />
24
+ </svg>
25
+ ),
26
+ Clock: (
27
+ <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2">
28
+ <circle cx="12" cy="12" r="10"></circle>
29
+ <polyline points="12 6 12 12 16 14"></polyline>
30
+ </svg>
31
+ ),
32
+ Info: (
33
+ <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
34
+ <circle cx="12" cy="12" r="10"></circle>
35
+ <line x1="12" y1="16" x2="12" y2="12"></line>
36
+ <line x1="12" y1="8" x2="12.01" y2="8"></line>
37
+ </svg>
38
+ ),
39
+ Check: (
40
+ <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
41
+ <path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path>
42
+ <polyline points="22 4 12 14.01 9 11.01"></polyline>
43
+ </svg>
44
+ ),
45
+ Search: (
46
+ <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
47
+ <circle cx="11" cy="11" r="8"></circle>
48
+ <line x1="21" y1="21" x2="16.65" y2="16.65"></line>
49
+ </svg>
50
+ ),
51
+ Close: (
52
+ <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
53
+ <line x1="18" y1="6" x2="6" y2="18"></line>
54
+ <line x1="6" y1="6" x2="18" y2="18"></line>
55
+ </svg>
56
+ )
57
+ };
@@ -0,0 +1,5 @@
1
+ export * from './types';
2
+ export * from './builder';
3
+ export * from './component';
4
+ export * from './state';
5
+ export * from './StateWrapper';