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,233 @@
1
+
2
+
3
+
4
+
5
+
6
+
7
+ export type StateGetter<T> = () => T;
8
+ export type StateSetter<T> = (value: T | ((prev: T) => T)) => void;
9
+ export type StateHook<T> = [T, StateSetter<T>];
10
+
11
+
12
+
13
+
14
+
15
+ export interface Signal<T> {
16
+ value: T;
17
+ subscribe(callback: (value: T) => void): () => void;
18
+ }
19
+
20
+ export interface ComputedSignal<T> extends Omit<Signal<T>, 'value'> {
21
+ readonly value: T;
22
+ }
23
+
24
+ type EffectCleanup = void | (() => void);
25
+
26
+
27
+ class SignalImpl<T> implements Signal<T> {
28
+ private _value: T;
29
+ private subscribers = new Set<(value: T) => void>();
30
+
31
+ constructor(initialValue: T) {
32
+ this._value = initialValue;
33
+ }
34
+
35
+ get value(): T {
36
+ return this._value;
37
+ }
38
+
39
+ set value(newValue: T) {
40
+ if (this._value !== newValue) {
41
+ this._value = newValue;
42
+ this.notify();
43
+ }
44
+ }
45
+
46
+ subscribe(callback: (value: T) => void): () => void {
47
+ this.subscribers.add(callback);
48
+ return () => this.subscribers.delete(callback);
49
+ }
50
+
51
+ private notify() {
52
+ this.subscribers.forEach(callback => callback(this._value));
53
+ }
54
+ }
55
+
56
+
57
+ class ComputedSignalImpl<T> implements ComputedSignal<T> {
58
+ private _value: T;
59
+ private subscribers = new Set<(value: T) => void>();
60
+ private dependencies = new Set<Signal<any>>();
61
+ private unsubscribers: (() => void)[] = [];
62
+
63
+ constructor(private compute: () => T) {
64
+ this._value = this.recompute();
65
+ }
66
+
67
+ get value(): T {
68
+ return this._value;
69
+ }
70
+
71
+ subscribe(callback: (value: T) => void): () => void {
72
+ this.subscribers.add(callback);
73
+ return () => this.subscribers.delete(callback);
74
+ }
75
+
76
+ private recompute(): T {
77
+
78
+ this.unsubscribers.forEach(unsub => unsub());
79
+ this.unsubscribers = [];
80
+ this.dependencies.clear();
81
+
82
+
83
+ const newValue = this.compute();
84
+
85
+ if (this._value !== newValue) {
86
+ this._value = newValue;
87
+ this.notify();
88
+ }
89
+
90
+ return newValue;
91
+ }
92
+
93
+ private notify() {
94
+ this.subscribers.forEach(callback => callback(this._value));
95
+ }
96
+ }
97
+
98
+
99
+ export function signal<T>(initialValue: T): Signal<T> {
100
+ return new SignalImpl(initialValue);
101
+ }
102
+
103
+
104
+ export function computed<T>(fn: () => T): ComputedSignal<T> {
105
+ return new ComputedSignalImpl(fn);
106
+ }
107
+
108
+
109
+ export function effect(fn: () => EffectCleanup): () => void {
110
+ let cleanup: EffectCleanup;
111
+
112
+ const run = () => {
113
+ if (typeof cleanup === 'function') {
114
+ cleanup();
115
+ }
116
+ cleanup = fn();
117
+ };
118
+
119
+ run();
120
+
121
+ return () => {
122
+ if (typeof cleanup === 'function') {
123
+ cleanup();
124
+ }
125
+ };
126
+ }
127
+
128
+
129
+
130
+
131
+
132
+ export interface Observable<T> {
133
+ get(): T;
134
+ set(value: T): void;
135
+ subscribe(listener: (value: T) => void): () => void;
136
+ }
137
+
138
+ class ObservableImpl<T> implements Observable<T> {
139
+ private _value: T;
140
+ private listeners = new Set<(value: T) => void>();
141
+
142
+ constructor(initialValue: T) {
143
+ this._value = initialValue;
144
+ }
145
+
146
+ get(): T {
147
+ return this._value;
148
+ }
149
+
150
+ set(value: T): void {
151
+ if (this._value !== value) {
152
+ this._value = value;
153
+ this.listeners.forEach(listener => listener(value));
154
+ }
155
+ }
156
+
157
+ subscribe(listener: (value: T) => void): () => void {
158
+ this.listeners.add(listener);
159
+ return () => this.listeners.delete(listener);
160
+ }
161
+ }
162
+
163
+
164
+ export function observable<T>(initialValue: T): Observable<T> {
165
+ return new ObservableImpl(initialValue);
166
+ }
167
+
168
+
169
+
170
+
171
+
172
+ export interface Store<T> {
173
+ getState(): T;
174
+ setState(updater: Partial<T> | ((state: T) => Partial<T>)): void;
175
+ subscribe(listener: (state: T) => void): () => void;
176
+ }
177
+
178
+ class StoreImpl<T> implements Store<T> {
179
+ private state: T;
180
+ private listeners = new Set<(state: T) => void>();
181
+
182
+ constructor(initialState: T) {
183
+ this.state = initialState;
184
+ }
185
+
186
+ getState(): T {
187
+ return this.state;
188
+ }
189
+
190
+ setState(updater: Partial<T> | ((state: T) => Partial<T>)): void {
191
+ const updates = typeof updater === 'function' ? updater(this.state) : updater;
192
+ this.state = { ...this.state, ...updates };
193
+ this.listeners.forEach(listener => listener(this.state));
194
+ }
195
+
196
+ subscribe(listener: (state: T) => void): () => void {
197
+ this.listeners.add(listener);
198
+ return () => this.listeners.delete(listener);
199
+ }
200
+ }
201
+
202
+
203
+ export function createStore<T extends object>(initialState: T): Store<T> {
204
+ return new StoreImpl(initialState);
205
+ }
206
+
207
+
208
+
209
+
210
+
211
+ export interface ProviderConfig<T = any> {
212
+ key: string;
213
+ value: T;
214
+ }
215
+
216
+ export interface ConsumerConfig {
217
+ key: string;
218
+ }
219
+
220
+
221
+ const providerRegistry = new Map<string, any>();
222
+
223
+ export function registerProvider<T>(key: string, value: T): void {
224
+ providerRegistry.set(key, value);
225
+ }
226
+
227
+ export function getProvider<T>(key: string): T | undefined {
228
+ return providerRegistry.get(key);
229
+ }
230
+
231
+ export function clearProviders(): void {
232
+ providerRegistry.clear();
233
+ }
@@ -0,0 +1,62 @@
1
+ import { CSSProperties, ReactNode, ReactElement } from 'react';
2
+
3
+ export type FiboThemeName = 'material' | 'cupertino' | 'web';
4
+
5
+ export interface ResponsiveStyles {
6
+ mobile?: CSSProperties;
7
+ tablet?: CSSProperties;
8
+ desktop?: CSSProperties;
9
+ }
10
+
11
+ export interface BaseProps {
12
+ key?: string | number;
13
+ className?: string;
14
+ style?: CSSProperties;
15
+ responsive?: ResponsiveStyles;
16
+ }
17
+
18
+ export interface ChildrenProps extends BaseProps {
19
+ children?: ReactNode | ReactNode[];
20
+ child?: ReactNode;
21
+ }
22
+
23
+ export type Alignment = 'start' | 'center' | 'end' | 'stretch';
24
+ export type MainAxisAlignment = 'start' | 'center' | 'end' | 'spaceBetween' | 'spaceAround' | 'spaceEvenly';
25
+ export type CrossAxisAlignment = Alignment;
26
+
27
+ export interface LayoutProps extends BaseProps {
28
+ width?: string | number;
29
+ height?: string | number;
30
+ padding?: string | number;
31
+ margin?: string | number;
32
+ backgroundColor?: string;
33
+ }
34
+
35
+ export interface EdgeInsets {
36
+ top?: string | number;
37
+ right?: string | number;
38
+ bottom?: string | number;
39
+ left?: string | number;
40
+ all?: string | number;
41
+ horizontal?: string | number;
42
+ vertical?: string | number;
43
+ }
44
+
45
+ export interface TextStyle {
46
+ fontSize?: string | number;
47
+ fontWeight?: string | number;
48
+ fontFamily?: string;
49
+ color?: string;
50
+ lineHeight?: string | number;
51
+ letterSpacing?: string | number;
52
+ }
53
+
54
+ export type TextType = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'body' | 'caption' | 'label';
55
+
56
+ export type ButtonVariant = 'elevated' | 'filled' | 'outlined' | 'text';
57
+
58
+ export type StatusType = 'success' | 'warning' | 'error' | 'info';
59
+
60
+ export interface FiboComponent<T = any> {
61
+ (props?: T): ReactElement;
62
+ }