fiboui 1.0.0 → 1.0.2

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/README.md +144 -73
  2. package/dist/content/Alert/index.d.ts +29 -29
  3. package/dist/content/Avatar/index.d.ts +29 -29
  4. package/dist/content/Badge/index.d.ts +29 -29
  5. package/dist/content/Image/index.d.ts +29 -29
  6. package/dist/content/Label/index.d.ts +29 -29
  7. package/dist/content/Progress/index.d.ts +29 -29
  8. package/dist/content/Skeleton/index.d.ts +29 -29
  9. package/dist/content/Spinner/index.d.ts +29 -29
  10. package/dist/content/Text/index.d.ts +29 -29
  11. package/dist/core/StateWrapper.d.ts +3 -0
  12. package/dist/core/builder.d.ts +10 -2
  13. package/dist/core/effects.d.ts +4 -3
  14. package/dist/core/hooks.d.ts +5 -0
  15. package/dist/core/index.d.ts +1 -0
  16. package/dist/core/state.d.ts +76 -27
  17. package/dist/effects-D16XdB_d.mjs +10 -0
  18. package/dist/index.esm.js +1181 -1026
  19. package/dist/index.umd.js +4 -4
  20. package/dist/interactive/Button/index.d.ts +29 -29
  21. package/dist/interactive/Checkbox/index.d.ts +29 -29
  22. package/dist/interactive/Combobox/index.d.ts +29 -29
  23. package/dist/interactive/RadioGroup/index.d.ts +29 -29
  24. package/dist/interactive/Select/index.d.ts +29 -29
  25. package/dist/interactive/Switch/index.d.ts +29 -29
  26. package/dist/interactive/TextField/index.d.ts +32 -31
  27. package/dist/interactive/Textarea/index.d.ts +29 -29
  28. package/dist/layout/Center/index.d.ts +29 -29
  29. package/dist/layout/Column/index.d.ts +29 -29
  30. package/dist/layout/Container/index.d.ts +29 -29
  31. package/dist/layout/DashboardLayout/index.d.ts +29 -29
  32. package/dist/layout/Header/index.d.ts +29 -29
  33. package/dist/layout/Line/index.d.ts +29 -29
  34. package/dist/layout/Row/index.d.ts +29 -29
  35. package/dist/layout/Scaffold/index.d.ts +29 -29
  36. package/dist/layout/ScrollView/index.d.ts +29 -29
  37. package/dist/layout/Sidebar/index.d.ts +29 -29
  38. package/dist/layout/Spacer/index.d.ts +29 -29
  39. package/dist/structure/Banner/index.d.ts +29 -29
  40. package/dist/structure/Box/index.d.ts +29 -29
  41. package/dist/structure/Card/index.d.ts +29 -29
  42. package/dist/structure/Collapse/index.d.ts +29 -29
  43. package/dist/structure/Grid/index.d.ts +58 -58
  44. package/dist/structure/List/index.d.ts +29 -29
  45. package/dist/structure/Table/index.d.ts +29 -29
  46. package/dist/structure/Tags/index.d.ts +29 -29
  47. package/dist/structure/cards/AssetCard/index.d.ts +29 -29
  48. package/dist/structure/cards/CollectionCard/index.d.ts +29 -29
  49. package/dist/structure/cards/ContentCard/index.d.ts +29 -29
  50. package/dist/structure/cards/ProfileCard/index.d.ts +29 -29
  51. package/dist/structure/cards/variants/index.d.ts +116 -116
  52. package/dist/style.css +1 -1
  53. package/package.json +1 -1
  54. package/src/core/StateWrapper.tsx +28 -2
  55. package/src/core/builder.ts +53 -11
  56. package/src/core/effects.ts +3 -3
  57. package/src/core/hooks.ts +48 -0
  58. package/src/core/index.ts +1 -0
  59. package/src/core/state.ts +203 -139
  60. package/src/demo.tsx +5 -0
  61. package/src/interactive/Button/index.ts +2 -1
  62. package/src/interactive/TextField/index.ts +29 -6
  63. package/src/structure/Box/index.ts +3 -2
  64. package/dist/effects-Co9C_Dyx.mjs +0 -9
  65. package/dist/examples/ScaffoldExamples.d.ts +0 -3
  66. package/dist/examples/StateExamples.d.ts +0 -5
  67. package/src/examples/ScaffoldExamples.tsx +0 -299
  68. package/src/examples/StateExamples.tsx +0 -149
@@ -1,37 +1,86 @@
1
- export type StateGetter<T> = () => T;
2
- export type StateSetter<T> = (value: T | ((prev: T) => T)) => void;
3
- export type StateHook<T> = [T, StateSetter<T>];
4
- export interface Signal<T> {
5
- value: T;
6
- subscribe(callback: (value: T) => void): () => void;
1
+ export type Listener<T> = (value: T) => void;
2
+ export type Unsubscribe = () => void;
3
+ export interface Subscribable<T> {
4
+ subscribe(listener: Listener<T>): Unsubscribe;
5
+ subscribeEffect(effect: Effect): void;
6
+ unsubscribeEffect(effect: Effect): void;
7
7
  }
8
- export interface ComputedSignal<T> extends Omit<Signal<T>, 'value'> {
9
- readonly value: T;
8
+ export declare class Effect {
9
+ private fn;
10
+ private dependencies;
11
+ private _onDispose?;
12
+ constructor(fn: () => void);
13
+ run(): void;
14
+ track(dep: Subscribable<any>): void;
15
+ trigger(): void;
16
+ cleanup(): void;
17
+ dispose(): void;
18
+ }
19
+ export declare class Tracker {
20
+ private _onInvalidate;
21
+ private dependencies;
22
+ constructor(_onInvalidate: () => void);
23
+ execute<T>(fn: () => T): T;
24
+ track(dep: Subscribable<any>): void;
25
+ trigger(): void;
26
+ cleanup(): void;
27
+ dispose(): void;
28
+ }
29
+ export declare class Signal<T> implements Subscribable<T> {
30
+ private _value;
31
+ private listeners;
32
+ private effects;
33
+ constructor(_value: T);
34
+ get value(): T;
35
+ set value(newValue: T);
36
+ subscribe(listener: Listener<T>): Unsubscribe;
37
+ subscribeEffect(effect: Effect): void;
38
+ unsubscribeEffect(effect: Effect): void;
39
+ private notify;
10
40
  }
11
- type EffectCleanup = void | (() => void);
12
41
  export declare function signal<T>(initialValue: T): Signal<T>;
42
+ export declare class ComputedSignal<T> implements Subscribable<T> {
43
+ private fn;
44
+ private listeners;
45
+ private effects;
46
+ private _value;
47
+ private _dirty;
48
+ private internalEffect;
49
+ constructor(fn: () => T);
50
+ get value(): T;
51
+ subscribe(listener: Listener<T>): Unsubscribe;
52
+ subscribeEffect(effect: Effect): void;
53
+ unsubscribeEffect(effect: Effect): void;
54
+ private notify;
55
+ }
13
56
  export declare function computed<T>(fn: () => T): ComputedSignal<T>;
14
- export declare function effect(fn: () => EffectCleanup): () => void;
15
- export interface Observable<T> {
57
+ export declare class Observable<T> implements Subscribable<T> {
58
+ private _value;
59
+ private listeners;
60
+ private effects;
61
+ constructor(_value: T);
16
62
  get(): T;
17
- set(value: T): void;
18
- subscribe(listener: (value: T) => void): () => void;
63
+ set(newValue: T): void;
64
+ subscribe(listener: Listener<T>): Unsubscribe;
65
+ subscribeEffect(effect: Effect): void;
66
+ unsubscribeEffect(effect: Effect): void;
67
+ private notify;
19
68
  }
20
69
  export declare function observable<T>(initialValue: T): Observable<T>;
21
- export interface Store<T> {
70
+ export interface Store<T> extends Subscribable<T> {
22
71
  getState(): T;
23
- setState(updater: Partial<T> | ((state: T) => Partial<T>)): void;
24
- subscribe(listener: (state: T) => void): () => void;
72
+ setState(fn: Partial<T> | ((state: T) => Partial<T>)): void;
25
73
  }
26
- export declare function createStore<T extends object>(initialState: T): Store<T>;
27
- export interface ProviderConfig<T = any> {
28
- key: string;
29
- value: T;
30
- }
31
- export interface ConsumerConfig {
32
- key: string;
74
+ export declare class StoreImpl<T> implements Store<T> {
75
+ private state;
76
+ private listeners;
77
+ private effects;
78
+ constructor(state: T);
79
+ getState(): T;
80
+ setState(partial: Partial<T> | ((state: T) => Partial<T>)): void;
81
+ subscribe(listener: Listener<T>): Unsubscribe;
82
+ subscribeEffect(effect: Effect): void;
83
+ unsubscribeEffect(effect: Effect): void;
84
+ private notify;
33
85
  }
34
- export declare function registerProvider<T>(key: string, value: T): void;
35
- export declare function getProvider<T>(key: string): T | undefined;
36
- export declare function clearProviders(): void;
37
- export {};
86
+ export declare function createStore<T>(initialState: T): Store<T>;
@@ -0,0 +1,10 @@
1
+ const c = (i, t, s = "rgba(255, 255, 255, 0.3)") => {
2
+ if (!t) return;
3
+ const e = document.createElement("span"), l = Math.max(t.clientWidth, t.clientHeight), n = l / 2, r = t.getBoundingClientRect();
4
+ e.style.width = e.style.height = `${l}px`, e.style.left = `${i.clientX - r.left - n}px`, e.style.top = `${i.clientY - r.top - n}px`, e.style.position = "absolute", e.style.borderRadius = "50%", e.style.transform = "scale(0)", e.style.animation = "fibo-ripple 600ms linear", e.style.backgroundColor = s, e.style.pointerEvents = "none", (t.querySelector(".fibo-ripple-container") || t).appendChild(e), setTimeout(() => {
5
+ e.remove();
6
+ }, 600);
7
+ };
8
+ export {
9
+ c as createRipple
10
+ };