@proyecto-viviana/solid-stately 0.1.5 → 0.2.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 (217) hide show
  1. package/dist/index.js +226 -504
  2. package/dist/index.jsx +6407 -0
  3. package/package.json +3 -5
  4. package/dist/index.js.map +0 -1
  5. package/src/autocomplete/createAutocompleteState.d.ts +0 -46
  6. package/src/autocomplete/createAutocompleteState.d.ts.map +0 -1
  7. package/src/autocomplete/createAutocompleteState.ts +0 -90
  8. package/src/autocomplete/index.d.ts +0 -2
  9. package/src/autocomplete/index.d.ts.map +0 -1
  10. package/src/autocomplete/index.ts +0 -5
  11. package/src/calendar/createCalendarState.d.ts +0 -130
  12. package/src/calendar/createCalendarState.d.ts.map +0 -1
  13. package/src/calendar/createCalendarState.ts +0 -461
  14. package/src/calendar/createDateFieldState.d.ts +0 -110
  15. package/src/calendar/createDateFieldState.d.ts.map +0 -1
  16. package/src/calendar/createDateFieldState.ts +0 -562
  17. package/src/calendar/createRangeCalendarState.d.ts +0 -146
  18. package/src/calendar/createRangeCalendarState.d.ts.map +0 -1
  19. package/src/calendar/createRangeCalendarState.ts +0 -535
  20. package/src/calendar/createTimeFieldState.d.ts +0 -95
  21. package/src/calendar/createTimeFieldState.d.ts.map +0 -1
  22. package/src/calendar/createTimeFieldState.ts +0 -483
  23. package/src/calendar/index.d.ts +0 -7
  24. package/src/calendar/index.d.ts.map +0 -1
  25. package/src/calendar/index.ts +0 -81
  26. package/src/checkbox/createCheckboxGroupState.d.ts +0 -71
  27. package/src/checkbox/createCheckboxGroupState.d.ts.map +0 -1
  28. package/src/checkbox/createCheckboxGroupState.ts +0 -193
  29. package/src/checkbox/index.d.ts +0 -2
  30. package/src/checkbox/index.d.ts.map +0 -1
  31. package/src/checkbox/index.ts +0 -5
  32. package/src/collections/ListCollection.d.ts +0 -37
  33. package/src/collections/ListCollection.d.ts.map +0 -1
  34. package/src/collections/ListCollection.ts +0 -146
  35. package/src/collections/createListState.d.ts +0 -79
  36. package/src/collections/createListState.d.ts.map +0 -1
  37. package/src/collections/createListState.ts +0 -264
  38. package/src/collections/createMenuState.d.ts +0 -50
  39. package/src/collections/createMenuState.d.ts.map +0 -1
  40. package/src/collections/createMenuState.ts +0 -106
  41. package/src/collections/createSelectionState.d.ts +0 -76
  42. package/src/collections/createSelectionState.d.ts.map +0 -1
  43. package/src/collections/createSelectionState.ts +0 -336
  44. package/src/collections/index.d.ts +0 -6
  45. package/src/collections/index.d.ts.map +0 -1
  46. package/src/collections/index.ts +0 -46
  47. package/src/collections/types.d.ts +0 -147
  48. package/src/collections/types.d.ts.map +0 -1
  49. package/src/collections/types.ts +0 -169
  50. package/src/color/Color.d.ts +0 -28
  51. package/src/color/Color.d.ts.map +0 -1
  52. package/src/color/Color.ts +0 -951
  53. package/src/color/createColorAreaState.d.ts +0 -76
  54. package/src/color/createColorAreaState.d.ts.map +0 -1
  55. package/src/color/createColorAreaState.ts +0 -293
  56. package/src/color/createColorFieldState.d.ts +0 -55
  57. package/src/color/createColorFieldState.d.ts.map +0 -1
  58. package/src/color/createColorFieldState.ts +0 -292
  59. package/src/color/createColorSliderState.d.ts +0 -67
  60. package/src/color/createColorSliderState.d.ts.map +0 -1
  61. package/src/color/createColorSliderState.ts +0 -241
  62. package/src/color/createColorWheelState.d.ts +0 -51
  63. package/src/color/createColorWheelState.d.ts.map +0 -1
  64. package/src/color/createColorWheelState.ts +0 -211
  65. package/src/color/index.d.ts +0 -10
  66. package/src/color/index.d.ts.map +0 -1
  67. package/src/color/index.ts +0 -47
  68. package/src/color/types.d.ts +0 -106
  69. package/src/color/types.d.ts.map +0 -1
  70. package/src/color/types.ts +0 -127
  71. package/src/combobox/createComboBoxState.d.ts +0 -125
  72. package/src/combobox/createComboBoxState.d.ts.map +0 -1
  73. package/src/combobox/createComboBoxState.ts +0 -703
  74. package/src/combobox/index.d.ts +0 -5
  75. package/src/combobox/index.d.ts.map +0 -1
  76. package/src/combobox/index.ts +0 -13
  77. package/src/disclosure/createDisclosureState.d.ts +0 -64
  78. package/src/disclosure/createDisclosureState.d.ts.map +0 -1
  79. package/src/disclosure/createDisclosureState.ts +0 -193
  80. package/src/disclosure/index.d.ts +0 -2
  81. package/src/disclosure/index.d.ts.map +0 -1
  82. package/src/disclosure/index.ts +0 -9
  83. package/src/dnd/createDragState.d.ts +0 -59
  84. package/src/dnd/createDragState.d.ts.map +0 -1
  85. package/src/dnd/createDragState.ts +0 -153
  86. package/src/dnd/createDraggableCollectionState.d.ts +0 -57
  87. package/src/dnd/createDraggableCollectionState.d.ts.map +0 -1
  88. package/src/dnd/createDraggableCollectionState.ts +0 -165
  89. package/src/dnd/createDropState.d.ts +0 -61
  90. package/src/dnd/createDropState.d.ts.map +0 -1
  91. package/src/dnd/createDropState.ts +0 -212
  92. package/src/dnd/createDroppableCollectionState.d.ts +0 -78
  93. package/src/dnd/createDroppableCollectionState.d.ts.map +0 -1
  94. package/src/dnd/createDroppableCollectionState.ts +0 -357
  95. package/src/dnd/index.d.ts +0 -11
  96. package/src/dnd/index.d.ts.map +0 -1
  97. package/src/dnd/index.ts +0 -76
  98. package/src/dnd/types.d.ts +0 -264
  99. package/src/dnd/types.d.ts.map +0 -1
  100. package/src/dnd/types.ts +0 -317
  101. package/src/form/createFormValidationState.d.ts +0 -100
  102. package/src/form/createFormValidationState.d.ts.map +0 -1
  103. package/src/form/createFormValidationState.ts +0 -389
  104. package/src/form/index.d.ts +0 -2
  105. package/src/form/index.d.ts.map +0 -1
  106. package/src/form/index.ts +0 -15
  107. package/src/grid/createGridState.d.ts +0 -12
  108. package/src/grid/createGridState.d.ts.map +0 -1
  109. package/src/grid/createGridState.ts +0 -327
  110. package/src/grid/index.d.ts +0 -7
  111. package/src/grid/index.d.ts.map +0 -1
  112. package/src/grid/index.ts +0 -13
  113. package/src/grid/types.d.ts +0 -156
  114. package/src/grid/types.d.ts.map +0 -1
  115. package/src/grid/types.ts +0 -179
  116. package/src/index.d.ts +0 -26
  117. package/src/index.d.ts.map +0 -1
  118. package/src/index.ts +0 -383
  119. package/src/numberfield/createNumberFieldState.d.ts +0 -65
  120. package/src/numberfield/createNumberFieldState.d.ts.map +0 -1
  121. package/src/numberfield/createNumberFieldState.ts +0 -383
  122. package/src/numberfield/index.d.ts +0 -2
  123. package/src/numberfield/index.d.ts.map +0 -1
  124. package/src/numberfield/index.ts +0 -5
  125. package/src/overlays/createOverlayTriggerState.d.ts +0 -32
  126. package/src/overlays/createOverlayTriggerState.d.ts.map +0 -1
  127. package/src/overlays/createOverlayTriggerState.ts +0 -67
  128. package/src/overlays/index.d.ts +0 -2
  129. package/src/overlays/index.d.ts.map +0 -1
  130. package/src/overlays/index.ts +0 -5
  131. package/src/radio/createRadioGroupState.d.ts +0 -77
  132. package/src/radio/createRadioGroupState.d.ts.map +0 -1
  133. package/src/radio/createRadioGroupState.ts +0 -201
  134. package/src/radio/index.d.ts +0 -2
  135. package/src/radio/index.d.ts.map +0 -1
  136. package/src/radio/index.ts +0 -6
  137. package/src/searchfield/createSearchFieldState.d.ts +0 -25
  138. package/src/searchfield/createSearchFieldState.d.ts.map +0 -1
  139. package/src/searchfield/createSearchFieldState.ts +0 -62
  140. package/src/searchfield/index.d.ts +0 -3
  141. package/src/searchfield/index.d.ts.map +0 -1
  142. package/src/searchfield/index.ts +0 -5
  143. package/src/select/createSelectState.d.ts +0 -73
  144. package/src/select/createSelectState.d.ts.map +0 -1
  145. package/src/select/createSelectState.ts +0 -181
  146. package/src/select/index.d.ts +0 -2
  147. package/src/select/index.d.ts.map +0 -1
  148. package/src/select/index.ts +0 -5
  149. package/src/slider/createSliderState.d.ts +0 -72
  150. package/src/slider/createSliderState.d.ts.map +0 -1
  151. package/src/slider/createSliderState.ts +0 -211
  152. package/src/slider/index.d.ts +0 -3
  153. package/src/slider/index.d.ts.map +0 -1
  154. package/src/slider/index.ts +0 -6
  155. package/src/ssr/index.d.ts +0 -28
  156. package/src/ssr/index.d.ts.map +0 -1
  157. package/src/ssr/index.ts +0 -41
  158. package/src/table/TableCollection.d.ts +0 -52
  159. package/src/table/TableCollection.d.ts.map +0 -1
  160. package/src/table/TableCollection.ts +0 -388
  161. package/src/table/createTableState.d.ts +0 -12
  162. package/src/table/createTableState.d.ts.map +0 -1
  163. package/src/table/createTableState.ts +0 -127
  164. package/src/table/index.d.ts +0 -8
  165. package/src/table/index.d.ts.map +0 -1
  166. package/src/table/index.ts +0 -18
  167. package/src/table/types.d.ts +0 -139
  168. package/src/table/types.d.ts.map +0 -1
  169. package/src/table/types.ts +0 -150
  170. package/src/tabs/createTabListState.d.ts +0 -68
  171. package/src/tabs/createTabListState.d.ts.map +0 -1
  172. package/src/tabs/createTabListState.ts +0 -240
  173. package/src/tabs/index.d.ts +0 -2
  174. package/src/tabs/index.d.ts.map +0 -1
  175. package/src/tabs/index.ts +0 -7
  176. package/src/textfield/createTextFieldState.d.ts +0 -30
  177. package/src/textfield/createTextFieldState.d.ts.map +0 -1
  178. package/src/textfield/createTextFieldState.ts +0 -75
  179. package/src/textfield/index.d.ts +0 -2
  180. package/src/textfield/index.d.ts.map +0 -1
  181. package/src/textfield/index.ts +0 -5
  182. package/src/toast/createToastState.d.ts +0 -118
  183. package/src/toast/createToastState.d.ts.map +0 -1
  184. package/src/toast/createToastState.ts +0 -316
  185. package/src/toast/index.d.ts +0 -2
  186. package/src/toast/index.d.ts.map +0 -1
  187. package/src/toast/index.ts +0 -11
  188. package/src/toggle/createToggleState.d.ts +0 -34
  189. package/src/toggle/createToggleState.d.ts.map +0 -1
  190. package/src/toggle/createToggleState.ts +0 -94
  191. package/src/toggle/index.d.ts +0 -2
  192. package/src/toggle/index.d.ts.map +0 -1
  193. package/src/toggle/index.ts +0 -5
  194. package/src/tooltip/createTooltipTriggerState.d.ts +0 -39
  195. package/src/tooltip/createTooltipTriggerState.d.ts.map +0 -1
  196. package/src/tooltip/createTooltipTriggerState.ts +0 -183
  197. package/src/tooltip/index.d.ts +0 -2
  198. package/src/tooltip/index.d.ts.map +0 -1
  199. package/src/tooltip/index.ts +0 -6
  200. package/src/tree/TreeCollection.d.ts +0 -40
  201. package/src/tree/TreeCollection.d.ts.map +0 -1
  202. package/src/tree/TreeCollection.ts +0 -175
  203. package/src/tree/createTreeState.d.ts +0 -14
  204. package/src/tree/createTreeState.d.ts.map +0 -1
  205. package/src/tree/createTreeState.ts +0 -392
  206. package/src/tree/index.d.ts +0 -7
  207. package/src/tree/index.d.ts.map +0 -1
  208. package/src/tree/index.ts +0 -13
  209. package/src/tree/types.d.ts +0 -157
  210. package/src/tree/types.d.ts.map +0 -1
  211. package/src/tree/types.ts +0 -174
  212. package/src/utils/index.d.ts +0 -2
  213. package/src/utils/index.d.ts.map +0 -1
  214. package/src/utils/index.ts +0 -1
  215. package/src/utils/reactivity.d.ts +0 -28
  216. package/src/utils/reactivity.d.ts.map +0 -1
  217. package/src/utils/reactivity.ts +0 -36
@@ -1,118 +0,0 @@
1
- /**
2
- * Toast state management for SolidJS
3
- * Based on @react-stately/toast useToastState
4
- */
5
- import { type Accessor } from 'solid-js';
6
- export interface ToastOptions {
7
- /** A timeout to automatically close the toast, in milliseconds. */
8
- timeout?: number;
9
- /** The priority of the toast relative to other toasts. */
10
- priority?: number;
11
- /** Handler called when the toast is closed. */
12
- onClose?: () => void;
13
- }
14
- export interface QueuedToast<T> {
15
- /** The content of the toast. */
16
- content: T;
17
- /** A unique key for the toast. */
18
- key: string;
19
- /** The timer for the toast. */
20
- timer: Timer | null;
21
- /** Whether the toast should be animated. */
22
- animation?: 'entering' | 'exiting' | 'queued';
23
- /** The priority of the toast. */
24
- priority: number;
25
- /** Handler called when the toast is closed. */
26
- onClose?: () => void;
27
- /** The timeout for the toast. */
28
- timeout?: number;
29
- }
30
- export interface ToastQueueOptions {
31
- /** The maximum number of toasts to display at once. */
32
- maxVisibleToasts?: number;
33
- /** Whether toasts should stack (true) or queue (false). */
34
- hasExitAnimation?: boolean;
35
- }
36
- export interface ToastStateProps<T> {
37
- /** The toast queue to use. */
38
- queue: ToastQueue<T>;
39
- }
40
- export interface ToastState<T> {
41
- /** The currently visible toasts. */
42
- visibleToasts: Accessor<QueuedToast<T>[]>;
43
- /** Adds a toast to the queue. */
44
- add: (content: T, options?: ToastOptions) => string;
45
- /** Closes a toast by key. */
46
- close: (key: string) => void;
47
- /** Pauses all toast timers. */
48
- pauseAll: () => void;
49
- /** Resumes all toast timers. */
50
- resumeAll: () => void;
51
- }
52
- /**
53
- * A Timer that supports pause and resume.
54
- */
55
- export declare class Timer {
56
- private timerId;
57
- private startTime;
58
- private remaining;
59
- private callback;
60
- constructor(callback: () => void, delay: number);
61
- pause(): void;
62
- resume(): void;
63
- reset(delay: number): void;
64
- cancel(): void;
65
- }
66
- type SubscribeCallback<T> = (toasts: QueuedToast<T>[]) => void;
67
- /**
68
- * A queue that manages toast notifications.
69
- * Can be created once and shared across the app (singleton pattern).
70
- */
71
- export declare class ToastQueue<T> {
72
- private queue;
73
- private subscriptions;
74
- private maxVisibleToasts;
75
- private hasExitAnimation;
76
- private keyCounter;
77
- constructor(options?: ToastQueueOptions);
78
- /**
79
- * Subscribe to queue changes.
80
- */
81
- subscribe(callback: SubscribeCallback<T>): () => void;
82
- /**
83
- * Add a toast to the queue.
84
- */
85
- add(content: T, options?: ToastOptions): string;
86
- /**
87
- * Close a toast by key.
88
- */
89
- close(key: string): void;
90
- /**
91
- * Remove a toast after exit animation completes.
92
- */
93
- remove(key: string): void;
94
- /**
95
- * Pause all toast timers.
96
- */
97
- pauseAll(): void;
98
- /**
99
- * Resume all toast timers.
100
- */
101
- resumeAll(): void;
102
- private updateVisibility;
103
- private notify;
104
- }
105
- /**
106
- * Creates reactive toast state from a ToastQueue.
107
- * Use this hook to subscribe to toast changes in your component.
108
- */
109
- export declare function createToastState<T>(props: ToastStateProps<T>): ToastState<T>;
110
- /**
111
- * Creates a new ToastQueue and returns reactive state.
112
- * Use this if you don't need a global queue.
113
- */
114
- export declare function createToastQueue<T>(options?: ToastQueueOptions): ToastState<T> & {
115
- queue: ToastQueue<T>;
116
- };
117
- export {};
118
- //# sourceMappingURL=createToastState.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createToastState.d.ts","sourceRoot":"","sources":["createToastState.ts"],"names":[],"mappings":"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"}
@@ -1,316 +0,0 @@
1
- /**
2
- * Toast state management for SolidJS
3
- * Based on @react-stately/toast useToastState
4
- */
5
-
6
- import { createSignal, onCleanup, type Accessor } from 'solid-js';
7
-
8
- // ============================================
9
- // TYPES
10
- // ============================================
11
-
12
- export interface ToastOptions {
13
- /** A timeout to automatically close the toast, in milliseconds. */
14
- timeout?: number;
15
- /** The priority of the toast relative to other toasts. */
16
- priority?: number;
17
- /** Handler called when the toast is closed. */
18
- onClose?: () => void;
19
- }
20
-
21
- export interface QueuedToast<T> {
22
- /** The content of the toast. */
23
- content: T;
24
- /** A unique key for the toast. */
25
- key: string;
26
- /** The timer for the toast. */
27
- timer: Timer | null;
28
- /** Whether the toast should be animated. */
29
- animation?: 'entering' | 'exiting' | 'queued';
30
- /** The priority of the toast. */
31
- priority: number;
32
- /** Handler called when the toast is closed. */
33
- onClose?: () => void;
34
- /** The timeout for the toast. */
35
- timeout?: number;
36
- }
37
-
38
- export interface ToastQueueOptions {
39
- /** The maximum number of toasts to display at once. */
40
- maxVisibleToasts?: number;
41
- /** Whether toasts should stack (true) or queue (false). */
42
- hasExitAnimation?: boolean;
43
- }
44
-
45
- export interface ToastStateProps<T> {
46
- /** The toast queue to use. */
47
- queue: ToastQueue<T>;
48
- }
49
-
50
- export interface ToastState<T> {
51
- /** The currently visible toasts. */
52
- visibleToasts: Accessor<QueuedToast<T>[]>;
53
- /** Adds a toast to the queue. */
54
- add: (content: T, options?: ToastOptions) => string;
55
- /** Closes a toast by key. */
56
- close: (key: string) => void;
57
- /** Pauses all toast timers. */
58
- pauseAll: () => void;
59
- /** Resumes all toast timers. */
60
- resumeAll: () => void;
61
- }
62
-
63
- // ============================================
64
- // TIMER CLASS
65
- // ============================================
66
-
67
- /**
68
- * A Timer that supports pause and resume.
69
- */
70
- export class Timer {
71
- private timerId: number | null = null;
72
- private startTime: number = 0;
73
- private remaining: number;
74
- private callback: () => void;
75
-
76
- constructor(callback: () => void, delay: number) {
77
- this.callback = callback;
78
- this.remaining = delay;
79
- this.resume();
80
- }
81
-
82
- pause() {
83
- if (this.timerId === null) {
84
- return;
85
- }
86
- clearTimeout(this.timerId);
87
- this.timerId = null;
88
- this.remaining -= Date.now() - this.startTime;
89
- }
90
-
91
- resume() {
92
- if (this.timerId !== null) {
93
- return;
94
- }
95
- this.startTime = Date.now();
96
- this.timerId = window.setTimeout(() => {
97
- this.timerId = null;
98
- this.callback();
99
- }, this.remaining);
100
- }
101
-
102
- reset(delay: number) {
103
- this.pause();
104
- this.remaining = delay;
105
- this.resume();
106
- }
107
-
108
- cancel() {
109
- if (this.timerId !== null) {
110
- clearTimeout(this.timerId);
111
- this.timerId = null;
112
- }
113
- }
114
- }
115
-
116
- // ============================================
117
- // TOAST QUEUE CLASS
118
- // ============================================
119
-
120
- type SubscribeCallback<T> = (toasts: QueuedToast<T>[]) => void;
121
-
122
- /**
123
- * A queue that manages toast notifications.
124
- * Can be created once and shared across the app (singleton pattern).
125
- */
126
- export class ToastQueue<T> {
127
- private queue: QueuedToast<T>[] = [];
128
- private subscriptions = new Set<SubscribeCallback<T>>();
129
- private maxVisibleToasts: number;
130
- private hasExitAnimation: boolean;
131
- private keyCounter = 0;
132
-
133
- constructor(options: ToastQueueOptions = {}) {
134
- this.maxVisibleToasts = options.maxVisibleToasts ?? 5;
135
- this.hasExitAnimation = options.hasExitAnimation ?? false;
136
- }
137
-
138
- /**
139
- * Subscribe to queue changes.
140
- */
141
- subscribe(callback: SubscribeCallback<T>): () => void {
142
- this.subscriptions.add(callback);
143
- return () => {
144
- this.subscriptions.delete(callback);
145
- };
146
- }
147
-
148
- /**
149
- * Add a toast to the queue.
150
- */
151
- add(content: T, options: ToastOptions = {}): string {
152
- const key = String(this.keyCounter++);
153
-
154
- const toast: QueuedToast<T> = {
155
- content,
156
- key,
157
- timer: null,
158
- priority: options.priority ?? 0,
159
- onClose: options.onClose,
160
- timeout: options.timeout,
161
- animation: 'entering',
162
- };
163
-
164
- // Find insertion point based on priority
165
- let low = 0;
166
- let high = this.queue.length;
167
- while (low < high) {
168
- const mid = Math.floor((low + high) / 2);
169
- if (toast.priority > this.queue[mid].priority) {
170
- high = mid;
171
- } else {
172
- low = mid + 1;
173
- }
174
- }
175
-
176
- // Insert at the correct position
177
- this.queue = [
178
- ...this.queue.slice(0, low),
179
- toast,
180
- ...this.queue.slice(low),
181
- ];
182
-
183
- // Start timer for visible toasts
184
- this.updateVisibility();
185
-
186
- return key;
187
- }
188
-
189
- /**
190
- * Close a toast by key.
191
- */
192
- close(key: string): void {
193
- const toast = this.queue.find((t) => t.key === key);
194
- if (!toast) return;
195
-
196
- // Cancel any existing timer
197
- toast.timer?.cancel();
198
- toast.timer = null;
199
-
200
- if (this.hasExitAnimation && toast.animation !== 'queued') {
201
- // Mark as exiting for animation
202
- toast.animation = 'exiting';
203
- this.notify();
204
- } else {
205
- // Remove immediately
206
- this.remove(key);
207
- }
208
- }
209
-
210
- /**
211
- * Remove a toast after exit animation completes.
212
- */
213
- remove(key: string): void {
214
- const toast = this.queue.find((t) => t.key === key);
215
- if (toast) {
216
- toast.onClose?.();
217
- toast.timer?.cancel();
218
- }
219
-
220
- this.queue = this.queue.filter((t) => t.key !== key);
221
- this.updateVisibility();
222
- }
223
-
224
- /**
225
- * Pause all toast timers.
226
- */
227
- pauseAll(): void {
228
- for (const toast of this.queue) {
229
- toast.timer?.pause();
230
- }
231
- }
232
-
233
- /**
234
- * Resume all toast timers.
235
- */
236
- resumeAll(): void {
237
- for (const toast of this.queue) {
238
- toast.timer?.resume();
239
- }
240
- }
241
-
242
- private updateVisibility(): void {
243
- // Mark toasts as visible or queued based on maxVisibleToasts
244
- const visibleCount = this.queue.filter(
245
- (t) => t.animation !== 'queued' && t.animation !== 'exiting'
246
- ).length;
247
-
248
- let promoted = 0;
249
- for (const toast of this.queue) {
250
- if (toast.animation === 'queued' && visibleCount + promoted < this.maxVisibleToasts) {
251
- toast.animation = 'entering';
252
- promoted++;
253
- }
254
- if (toast.animation === 'queued') continue;
255
-
256
- // Start timer for visible toasts
257
- if (toast.timeout != null && toast.timer === null && toast.animation !== 'exiting') {
258
- toast.timer = new Timer(() => {
259
- this.close(toast.key);
260
- }, toast.timeout);
261
- }
262
- }
263
-
264
- this.notify();
265
- }
266
-
267
- private notify(): void {
268
- const toasts = [...this.queue];
269
- for (const callback of this.subscriptions) {
270
- callback(toasts);
271
- }
272
- }
273
- }
274
-
275
- // ============================================
276
- // HOOK
277
- // ============================================
278
-
279
- /**
280
- * Creates reactive toast state from a ToastQueue.
281
- * Use this hook to subscribe to toast changes in your component.
282
- */
283
- export function createToastState<T>(props: ToastStateProps<T>): ToastState<T> {
284
- const [visibleToasts, setVisibleToasts] = createSignal<QueuedToast<T>[]>([]);
285
-
286
- // Subscribe to queue changes
287
- const unsubscribe = props.queue.subscribe((toasts) => {
288
- setVisibleToasts(toasts);
289
- });
290
-
291
- onCleanup(() => {
292
- unsubscribe();
293
- });
294
-
295
- return {
296
- visibleToasts,
297
- add: (content, options) => props.queue.add(content, options),
298
- close: (key) => props.queue.close(key),
299
- pauseAll: () => props.queue.pauseAll(),
300
- resumeAll: () => props.queue.resumeAll(),
301
- };
302
- }
303
-
304
- // ============================================
305
- // CONVENIENCE HOOKS
306
- // ============================================
307
-
308
- /**
309
- * Creates a new ToastQueue and returns reactive state.
310
- * Use this if you don't need a global queue.
311
- */
312
- export function createToastQueue<T>(options?: ToastQueueOptions): ToastState<T> & { queue: ToastQueue<T> } {
313
- const queue = new ToastQueue<T>(options);
314
- const state = createToastState({ queue });
315
- return { ...state, queue };
316
- }
@@ -1,2 +0,0 @@
1
- export { createToastState, createToastQueue, ToastQueue, Timer, type ToastOptions, type QueuedToast, type ToastQueueOptions, type ToastStateProps, type ToastState, } from './createToastState';
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,EACV,KAAK,EACL,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,UAAU,GAChB,MAAM,oBAAoB,CAAC"}
@@ -1,11 +0,0 @@
1
- export {
2
- createToastState,
3
- createToastQueue,
4
- ToastQueue,
5
- Timer,
6
- type ToastOptions,
7
- type QueuedToast,
8
- type ToastQueueOptions,
9
- type ToastStateProps,
10
- type ToastState,
11
- } from './createToastState';
@@ -1,34 +0,0 @@
1
- /**
2
- * Toggle state for Solid Stately
3
- *
4
- * Provides state management for toggle components like checkboxes and switches.
5
- *
6
- * This is a 1:1 port of @react-stately/toggle's useToggleState.
7
- */
8
- import { Accessor } from 'solid-js';
9
- import { type MaybeAccessor } from '../utils';
10
- export interface ToggleStateOptions {
11
- /** Whether the element should be selected (controlled). */
12
- isSelected?: boolean;
13
- /** Whether the element should be selected by default (uncontrolled). */
14
- defaultSelected?: boolean;
15
- /** Handler that is called when the element's selection state changes. */
16
- onChange?: (isSelected: boolean) => void;
17
- /** Whether the element is read only. */
18
- isReadOnly?: boolean;
19
- }
20
- export interface ToggleState {
21
- /** Whether the toggle is selected. */
22
- readonly isSelected: Accessor<boolean>;
23
- /** Whether the toggle is selected by default. */
24
- readonly defaultSelected: boolean;
25
- /** Updates selection state. */
26
- setSelected(isSelected: boolean): void;
27
- /** Toggle the selection state. */
28
- toggle(): void;
29
- }
30
- /**
31
- * Provides state management for toggle components like checkboxes and switches.
32
- */
33
- export declare function createToggleState(props?: MaybeAccessor<ToggleStateOptions>): ToggleState;
34
- //# sourceMappingURL=createToggleState.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createToggleState.d.ts","sourceRoot":"","sources":["createToggleState.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAgB,QAAQ,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,EAAE,KAAK,aAAa,EAAU,MAAM,UAAU,CAAC;AAMtD,MAAM,WAAW,kBAAkB;IACjC,2DAA2D;IAC3D,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,wEAAwE;IACxE,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,yEAAyE;IACzE,QAAQ,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC,wCAAwC;IACxC,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,sCAAsC;IACtC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;IACvC,iDAAiD;IACjD,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,+BAA+B;IAC/B,WAAW,CAAC,UAAU,EAAE,OAAO,GAAG,IAAI,CAAC;IACvC,kCAAkC;IAClC,MAAM,IAAI,IAAI,CAAC;CAChB;AAMD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,GAAE,aAAa,CAAC,kBAAkB,CAAM,GAAG,WAAW,CAiD5F"}
@@ -1,94 +0,0 @@
1
- /**
2
- * Toggle state for Solid Stately
3
- *
4
- * Provides state management for toggle components like checkboxes and switches.
5
- *
6
- * This is a 1:1 port of @react-stately/toggle's useToggleState.
7
- */
8
-
9
- import { createSignal, Accessor } from 'solid-js';
10
- import { type MaybeAccessor, access } from '../utils';
11
-
12
- // ============================================
13
- // TYPES
14
- // ============================================
15
-
16
- export interface ToggleStateOptions {
17
- /** Whether the element should be selected (controlled). */
18
- isSelected?: boolean;
19
- /** Whether the element should be selected by default (uncontrolled). */
20
- defaultSelected?: boolean;
21
- /** Handler that is called when the element's selection state changes. */
22
- onChange?: (isSelected: boolean) => void;
23
- /** Whether the element is read only. */
24
- isReadOnly?: boolean;
25
- }
26
-
27
- export interface ToggleState {
28
- /** Whether the toggle is selected. */
29
- readonly isSelected: Accessor<boolean>;
30
- /** Whether the toggle is selected by default. */
31
- readonly defaultSelected: boolean;
32
- /** Updates selection state. */
33
- setSelected(isSelected: boolean): void;
34
- /** Toggle the selection state. */
35
- toggle(): void;
36
- }
37
-
38
- // ============================================
39
- // IMPLEMENTATION
40
- // ============================================
41
-
42
- /**
43
- * Provides state management for toggle components like checkboxes and switches.
44
- */
45
- export function createToggleState(props: MaybeAccessor<ToggleStateOptions> = {}): ToggleState {
46
- const getProps = () => access(props);
47
-
48
- // Get initial values
49
- const initialProps = getProps();
50
- const initialSelected = initialProps.isSelected ?? initialProps.defaultSelected ?? false;
51
-
52
- // Create internal signal for uncontrolled mode
53
- const [internalSelected, setInternalSelected] = createSignal(initialSelected);
54
-
55
- // Determine if controlled
56
- const isControlled = () => getProps().isSelected !== undefined;
57
-
58
- // Get current selection state
59
- const isSelected: Accessor<boolean> = () => {
60
- const p = getProps();
61
- return isControlled() ? (p.isSelected ?? false) : internalSelected();
62
- };
63
-
64
- // Update selection state
65
- function setSelected(value: boolean): void {
66
- const p = getProps();
67
- if (p.isReadOnly) {
68
- return;
69
- }
70
-
71
- if (!isControlled()) {
72
- setInternalSelected(value);
73
- }
74
-
75
- p.onChange?.(value);
76
- }
77
-
78
- // Toggle selection state
79
- function toggle(): void {
80
- const p = getProps();
81
- if (p.isReadOnly) {
82
- return;
83
- }
84
-
85
- setSelected(!isSelected());
86
- }
87
-
88
- return {
89
- isSelected,
90
- defaultSelected: initialProps.defaultSelected ?? initialSelected,
91
- setSelected,
92
- toggle,
93
- };
94
- }
@@ -1,2 +0,0 @@
1
- export { createToggleState, type ToggleStateOptions, type ToggleState, } from './createToggleState';
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,KAAK,kBAAkB,EACvB,KAAK,WAAW,GACjB,MAAM,qBAAqB,CAAC"}
@@ -1,5 +0,0 @@
1
- export {
2
- createToggleState,
3
- type ToggleStateOptions,
4
- type ToggleState,
5
- } from './createToggleState';
@@ -1,39 +0,0 @@
1
- /**
2
- * Manages state for a tooltip trigger.
3
- * Based on @react-stately/tooltip useTooltipTriggerState.
4
- *
5
- * Tracks whether the tooltip is open, and provides methods to toggle this state.
6
- * Ensures only one tooltip is open at a time and controls the delay for showing a tooltip.
7
- */
8
- import { type Accessor } from 'solid-js';
9
- import { type OverlayTriggerProps } from '../overlays';
10
- export interface TooltipTriggerProps extends OverlayTriggerProps {
11
- /** The delay time in milliseconds for the tooltip to show up. */
12
- delay?: number;
13
- /** The delay time in milliseconds for the tooltip to close. */
14
- closeDelay?: number;
15
- }
16
- export interface TooltipTriggerState {
17
- /** Whether the tooltip is currently showing. */
18
- readonly isOpen: Accessor<boolean>;
19
- /**
20
- * Shows the tooltip. By default, the tooltip becomes visible after a delay
21
- * depending on a global warmup timer. The `immediate` option shows the
22
- * tooltip immediately instead.
23
- */
24
- open(immediate?: boolean): void;
25
- /** Hides the tooltip. */
26
- close(immediate?: boolean): void;
27
- }
28
- /**
29
- * Resets the global tooltip state. Useful for testing.
30
- * @internal
31
- */
32
- export declare function resetTooltipState(): void;
33
- /**
34
- * Manages state for a tooltip trigger. Tracks whether the tooltip is open, and provides
35
- * methods to toggle this state. Ensures only one tooltip is open at a time and controls
36
- * the delay for showing a tooltip.
37
- */
38
- export declare function createTooltipTriggerState(props?: TooltipTriggerProps): TooltipTriggerState;
39
- //# sourceMappingURL=createTooltipTriggerState.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createTooltipTriggerState.d.ts","sourceRoot":"","sources":["createTooltipTriggerState.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAA2B,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;AAClE,OAAO,EAA6B,KAAK,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAOlF,MAAM,WAAW,mBAAoB,SAAQ,mBAAmB;IAC9D,iEAAiE;IACjE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+DAA+D;IAC/D,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,gDAAgD;IAChD,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;IACnC;;;;OAIG;IACH,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAChC,yBAAyB;IACzB,KAAK,CAAC,SAAS,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CAClC;AASD;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAYxC;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,GAAE,mBAAwB,GAC9B,mBAAmB,CAkHrB"}