@admin-layout/tailwind-ui 12.2.4-alpha.58 → 12.2.4-alpha.59

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.
@@ -21,8 +21,8 @@ export interface CharacterPicker {
21
21
  }
22
22
  /**
23
23
  * Return the active character (name + avatar) or null when none is installed
24
- * / we're not running under Tauri. Selection persists via localStorage and
25
- * follows changes made by `useCharacterPicker`.
24
+ * / we're not running under Tauri. Selection follows `pickActiveMerged` (file_name
25
+ * pref, then name pref) and stays in sync with `useCharacterPicker` / desktop settings.
26
26
  */
27
27
  export declare function useActiveCharacter(): ActiveCharacter | null;
28
28
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"useActiveCharacter.d.ts","sourceRoot":"","sources":["../../../../src/components/AIToolbar/hooks/useActiveCharacter.ts"],"names":[],"mappings":"AAyBA,MAAM,WAAW,eAAe;IAC5B,+DAA+D;IAC/D,IAAI,EAAE,MAAM,CAAC;IACb,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2EAA2E;IAC3E,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,kBAAkB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC5B,sDAAsD;IACtD,UAAU,EAAE,kBAAkB,EAAE,CAAC;IACjC,gFAAgF;IAChF,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,iFAAiF;IACjF,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;CAC5C;AA2GD;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,eAAe,GAAG,IAAI,CAiE3D;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,eAAe,CAqFpD"}
1
+ {"version":3,"file":"useActiveCharacter.d.ts","sourceRoot":"","sources":["../../../../src/components/AIToolbar/hooks/useActiveCharacter.ts"],"names":[],"mappings":"AAqCA,MAAM,WAAW,eAAe;IAC5B,+DAA+D;IAC/D,IAAI,EAAE,MAAM,CAAC;IACb,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2EAA2E;IAC3E,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,kBAAkB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC5B,sDAAsD;IACtD,UAAU,EAAE,kBAAkB,EAAE,CAAC;IACjC,gFAAgF;IAChF,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,iFAAiF;IACjF,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;CAC5C;AAmMD;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,eAAe,GAAG,IAAI,CAkC3D;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,eAAe,CAiEpD"}
@@ -1,4 +1,4 @@
1
- import*as React from'react';import {clearCharacterSpriteCache}from'./useCharacterSprite.js';// Active-character lookup for the AIToolbar.
1
+ import*as React from'react';import {ACTIVE_CHARACTER_CHANGE_EVENT,readPreferredActiveCharacterFileName,setPreferredActiveCharacterFileName,ACTIVE_CHARACTER_FILE_NAME_STORAGE_KEY}from'../../../hooks/activeCharacterPreference.js';import {clearCharacterSpriteCache}from'./useCharacterSprite.js';// Active-character lookup for the AIToolbar.
2
2
  //
3
3
  // Surfaces the currently-selected character (name + avatar data URL) so the
4
4
  // completion popover and message history can show "Seraphina" with her avatar
@@ -12,11 +12,17 @@ import*as React from'react';import {clearCharacterSpriteCache}from'./useCharacte
12
12
  // - Tauri with an extension but no avatar: returns name-only (avatarSrc = null).
13
13
  //
14
14
  // Re-fetches on the `yantra:character-refresh` Tauri event + the
15
- // `yantra:extensions-changed` window event (marketplace install/uninstall).
15
+ // `yantra:extensions-changed` window event (marketplace install/uninstall), and
16
+ // re-resolves when either persisted preference changes:
17
+ // - `yantra:active-character-name` (name-based — CharacterPicker / toolbar), and/or
18
+ // - `yantra:active-character:file-name` + `yantra:active-character-change` (file_name
19
+ // + cross-webview emit — desktop settings / `activeCharacterPreference.ts`).
16
20
  //
17
- // When multiple characters are installed, the active one is chosen by name
18
- // from localStorage (`yantra:active-character-name`). Use `useCharacterPicker`
19
- // to enumerate and switch.
21
+ // When multiple characters are installed, resolution order is: **file_name**
22
+ // preference first (so the dashboard bar and main app stay aligned), then
23
+ // **name** preference (`yantra:active-character-name`), then `character_list[0]`.
24
+ // Use `useCharacterPicker` to enumerate and switch by name (it also syncs
25
+ // the file_name preference + Tauri fan-out).
20
26
  // constants
21
27
  const CHARACTER_REFRESH_EVENT = 'yantra:character-refresh';
22
28
  /**
@@ -91,65 +97,111 @@ async function fetchAvatarSrc(fileName) {
91
97
  if (!dto || !dto.base64 || dto.base64.length <= 100) return null;
92
98
  return `data:${dto.mime_type || 'image/png'};base64,${dto.base64}`;
93
99
  }
94
- function pickActive(list, desiredName) {
100
+ /**
101
+ * Choose the active row: **file_name** preference (desktop settings / cross-webview),
102
+ * else **name** preference (toolbar picker), else first in list.
103
+ */
104
+ function pickActiveMerged(list) {
95
105
  if (list.length === 0) return null;
106
+ const filePref = readPreferredActiveCharacterFileName();
107
+ if (filePref) {
108
+ const byFile = list.find(c => c.file_name === filePref);
109
+ if (byFile) return byFile;
110
+ }
111
+ const desiredName = readStoredActiveName();
96
112
  if (desiredName) {
97
- const match = list.find(c => c.name === desiredName);
98
- if (match) return match;
113
+ const byName = list.find(c => c.name === desiredName);
114
+ if (byName) return byName;
99
115
  }
100
116
  return list[0];
101
117
  }
102
- // main API
103
- /**
104
- * Return the active character (name + avatar) or null when none is installed
105
- * / we're not running under Tauri. Selection persists via localStorage and
106
- * follows changes made by `useCharacterPicker`.
107
- */
108
- function useActiveCharacter() {
109
- const [list, setList] = React.useState([]);
110
- const [activeName, setActiveName] = React.useState(() => readStoredActiveName());
111
- const [avatarSrc, setAvatarSrc] = React.useState(null);
112
- const reload = React.useCallback(async () => {
113
- const next = await safeInvoke('character_list', {
114
- shallow: false
115
- });
116
- setList(next ?? []);
118
+ /** Subscribe to both preference schemes + cross-webview Tauri event; bump resets derived selection. */
119
+ function usePreferenceSyncBump() {
120
+ const [bump, setBump] = React.useState(0);
121
+ const bumpFn = React.useCallback(() => {
122
+ setBump(n => n + 1);
117
123
  }, []);
124
+ return [bump, bumpFn];
125
+ }
126
+ function useCharacterPreferenceListeners(reload, bump) {
118
127
  React.useEffect(() => {
119
- void reload();
120
- }, [reload]);
121
- React.useEffect(() => {
122
- let unlisten = null;
128
+ let unlistenChar = null;
129
+ let unlistenFilePref = null;
123
130
  let cancelled = false;
124
131
  safeListen(CHARACTER_REFRESH_EVENT, () => {
125
- // Sprites may have changed on disk (new install / uninstall); drop
126
- // cached data URLs so the next render re-fetches.
127
132
  clearCharacterSpriteCache();
128
133
  void reload();
134
+ bump();
129
135
  }).then(fn => {
130
- if (cancelled) fn();else unlisten = fn;
136
+ if (cancelled) fn();else unlistenChar = fn;
137
+ });
138
+ safeListen(ACTIVE_CHARACTER_CHANGE_EVENT, () => {
139
+ clearCharacterSpriteCache();
140
+ bump();
141
+ }).then(fn => {
142
+ if (cancelled) fn();else unlistenFilePref = fn;
131
143
  });
132
144
  function onExtensionsChanged(e) {
133
145
  if (!isCharacterRelevant(e)) return;
146
+ clearCharacterSpriteCache();
134
147
  void reload();
148
+ bump();
135
149
  }
136
150
  function onActiveChanged() {
137
- setActiveName(readStoredActiveName());
151
+ clearCharacterSpriteCache();
152
+ bump();
153
+ }
154
+ function onFilePrefLocal(e) {
155
+ clearCharacterSpriteCache();
156
+ bump();
157
+ }
158
+ function onStorageKey(ev) {
159
+ if (ev.key !== ACTIVE_CHARACTER_STORAGE_KEY && ev.key !== ACTIVE_CHARACTER_FILE_NAME_STORAGE_KEY && ev.key != null) {
160
+ return;
161
+ }
162
+ clearCharacterSpriteCache();
163
+ bump();
138
164
  }
139
165
  if (typeof window !== 'undefined') {
140
166
  window.addEventListener(EXTENSIONS_CHANGED_EVENT, onExtensionsChanged);
141
167
  window.addEventListener(ACTIVE_CHARACTER_CHANGED_EVENT, onActiveChanged);
168
+ window.addEventListener(ACTIVE_CHARACTER_CHANGE_EVENT, onFilePrefLocal);
169
+ window.addEventListener('storage', onStorageKey);
142
170
  }
143
171
  return () => {
144
172
  cancelled = true;
145
- if (unlisten) unlisten();
173
+ if (unlistenChar) unlistenChar();
174
+ if (unlistenFilePref) unlistenFilePref();
146
175
  if (typeof window !== 'undefined') {
147
176
  window.removeEventListener(EXTENSIONS_CHANGED_EVENT, onExtensionsChanged);
148
177
  window.removeEventListener(ACTIVE_CHARACTER_CHANGED_EVENT, onActiveChanged);
178
+ window.removeEventListener(ACTIVE_CHARACTER_CHANGE_EVENT, onFilePrefLocal);
179
+ window.removeEventListener('storage', onStorageKey);
149
180
  }
150
181
  };
182
+ }, [reload, bump]);
183
+ }
184
+ // main API
185
+ /**
186
+ * Return the active character (name + avatar) or null when none is installed
187
+ * / we're not running under Tauri. Selection follows `pickActiveMerged` (file_name
188
+ * pref, then name pref) and stays in sync with `useCharacterPicker` / desktop settings.
189
+ */
190
+ function useActiveCharacter() {
191
+ const [list, setList] = React.useState([]);
192
+ const [avatarSrc, setAvatarSrc] = React.useState(null);
193
+ const [bump, bumpFn] = usePreferenceSyncBump();
194
+ const reload = React.useCallback(async () => {
195
+ const next = await safeInvoke('character_list', {
196
+ shallow: false
197
+ });
198
+ setList(next ?? []);
199
+ }, []);
200
+ React.useEffect(() => {
201
+ void reload();
151
202
  }, [reload]);
152
- const active = React.useMemo(() => pickActive(list, activeName), [list, activeName]);
203
+ useCharacterPreferenceListeners(reload, bumpFn);
204
+ const active = React.useMemo(() => pickActiveMerged(list), [list, bump]);
153
205
  React.useEffect(() => {
154
206
  if (!active?.file_name) {
155
207
  setAvatarSrc(null);
@@ -177,7 +229,7 @@ function useActiveCharacter() {
177
229
  function useCharacterPicker() {
178
230
  const [list, setList] = React.useState([]);
179
231
  const [avatars, setAvatars] = React.useState({});
180
- const [activeName, setActiveNameState] = React.useState(() => readStoredActiveName());
232
+ const [bump, bumpFn] = usePreferenceSyncBump();
181
233
  const reload = React.useCallback(async () => {
182
234
  const next = await safeInvoke('character_list', {
183
235
  shallow: false
@@ -187,34 +239,8 @@ function useCharacterPicker() {
187
239
  React.useEffect(() => {
188
240
  void reload();
189
241
  }, [reload]);
190
- React.useEffect(() => {
191
- let unlisten = null;
192
- let cancelled = false;
193
- safeListen(CHARACTER_REFRESH_EVENT, () => {
194
- void reload();
195
- }).then(fn => {
196
- if (cancelled) fn();else unlisten = fn;
197
- });
198
- function onExtensionsChanged(e) {
199
- if (!isCharacterRelevant(e)) return;
200
- void reload();
201
- }
202
- function onActiveChanged() {
203
- setActiveNameState(readStoredActiveName());
204
- }
205
- if (typeof window !== 'undefined') {
206
- window.addEventListener(EXTENSIONS_CHANGED_EVENT, onExtensionsChanged);
207
- window.addEventListener(ACTIVE_CHARACTER_CHANGED_EVENT, onActiveChanged);
208
- }
209
- return () => {
210
- cancelled = true;
211
- if (unlisten) unlisten();
212
- if (typeof window !== 'undefined') {
213
- window.removeEventListener(EXTENSIONS_CHANGED_EVENT, onExtensionsChanged);
214
- window.removeEventListener(ACTIVE_CHARACTER_CHANGED_EVENT, onActiveChanged);
215
- }
216
- };
217
- }, [reload]);
242
+ useCharacterPreferenceListeners(reload, bumpFn);
243
+ const activeName = React.useMemo(() => pickActiveMerged(list)?.name ?? null, [list, bump]);
218
244
  // Resolve avatars for every character in the list (cached by file_name).
219
245
  React.useEffect(() => {
220
246
  let alive = true;
@@ -243,7 +269,10 @@ function useCharacterPicker() {
243
269
  })), [list, avatars]);
244
270
  const setActive = React.useCallback(name => {
245
271
  writeStoredActiveName(name);
246
- setActiveNameState(name);
272
+ const row = name ? list.find(c => c.name === name) : null;
273
+ void setPreferredActiveCharacterFileName(row?.file_name ?? null);
274
+ clearCharacterSpriteCache();
275
+ bumpFn();
247
276
  if (typeof window !== 'undefined') {
248
277
  window.dispatchEvent(new CustomEvent(ACTIVE_CHARACTER_CHANGED_EVENT, {
249
278
  detail: {
@@ -251,7 +280,7 @@ function useCharacterPicker() {
251
280
  }
252
281
  }));
253
282
  }
254
- }, []);
283
+ }, [list, bumpFn]);
255
284
  return {
256
285
  characters,
257
286
  activeName,
@@ -1 +1 @@
1
- {"version":3,"file":"useActiveCharacter.js","sources":["../../../../src/components/AIToolbar/hooks/useActiveCharacter.ts"],"sourcesContent":[null],"names":[],"mappings":"4FAyBA;;;;;;AAMI;AACH;AAED;;;AAGI;AACH;AAED;;;;AAII;;AA8GJ;;;;AAIG;AACH;AAmEA;;;AAGG,MAAA,8BAAA,GAAA,iCAAA;AACH,MAAA,4BAAgB,GAAA,8BAqFf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"useActiveCharacter.js","sources":["../../../../src/components/AIToolbar/hooks/useActiveCharacter.ts"],"sourcesContent":[null],"names":[],"mappings":"oSAqCA;;;;;;AAMI;AACH;AAED;;;AAGI;AACH;AAED;;;;AAII;;;AAGH;AAmMD;;;;;;AA4CG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Persisted preference for which installed character card is **active**
3
+ * across the toolbar + dashboard webviews (`character_list[].file_name` stem —
4
+ * e.g. `"Aria"`, `"Seraphina"`).
5
+ *
6
+ * Mirrors the `useChatBackground` pattern: localStorage + `storage` events +
7
+ * Tauri `emit`/`listen` so the dashboard sees the selection without sharing a
8
+ * `window` reference with the floating bar.
9
+ */
10
+ /** localStorage key — exported for `storage` listeners in other hooks. */
11
+ export declare const ACTIVE_CHARACTER_FILE_NAME_STORAGE_KEY = "yantra:active-character:file-name";
12
+ /** Event name broadcast when the preferred character changes (payload: `{ fileName: string | null }`). */
13
+ export declare const ACTIVE_CHARACTER_CHANGE_EVENT = "yantra:active-character-change";
14
+ export declare function readPreferredActiveCharacterFileName(): string | null;
15
+ /**
16
+ * Write the user's character choice and fan out so every webview recomputes
17
+ * active character (toolbar + `/chat`).
18
+ */
19
+ export declare function setPreferredActiveCharacterFileName(fileName: string | null): Promise<void>;
20
+ /** Pick the character row that matches the stored preference; otherwise list[0]. */
21
+ export declare function resolveActiveCharacterFromList<T extends {
22
+ file_name?: string | null;
23
+ }>(list: T[] | null | undefined): T | null;
24
+ //# sourceMappingURL=activeCharacterPreference.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activeCharacterPreference.d.ts","sourceRoot":"","sources":["../../src/hooks/activeCharacterPreference.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,0EAA0E;AAC1E,eAAO,MAAM,sCAAsC,sCAAsC,CAAC;AAE1F,0GAA0G;AAC1G,eAAO,MAAM,6BAA6B,mCAAmC,CAAC;AAE9E,wBAAgB,oCAAoC,IAAI,MAAM,GAAG,IAAI,CAOpE;AAYD;;;GAGG;AACH,wBAAsB,mCAAmC,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBhG;AAED,oFAAoF;AACpF,wBAAgB,8BAA8B,CAAC,CAAC,SAAS;IAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,EAClF,IAAI,EAAE,CAAC,EAAE,GAAG,IAAI,GAAG,SAAS,GAC7B,CAAC,GAAG,IAAI,CAQV"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Persisted preference for which installed character card is **active**
3
+ * across the toolbar + dashboard webviews (`character_list[].file_name` stem —
4
+ * e.g. `"Aria"`, `"Seraphina"`).
5
+ *
6
+ * Mirrors the `useChatBackground` pattern: localStorage + `storage` events +
7
+ * Tauri `emit`/`listen` so the dashboard sees the selection without sharing a
8
+ * `window` reference with the floating bar.
9
+ */
10
+ /** localStorage key — exported for `storage` listeners in other hooks. */
11
+ const ACTIVE_CHARACTER_FILE_NAME_STORAGE_KEY = 'yantra:active-character:file-name';
12
+ /** Event name broadcast when the preferred character changes (payload: `{ fileName: string | null }`). */
13
+ const ACTIVE_CHARACTER_CHANGE_EVENT = 'yantra:active-character-change';
14
+ function readPreferredActiveCharacterFileName() {
15
+ if (typeof window === 'undefined') return null;
16
+ try {
17
+ return window.localStorage.getItem(ACTIVE_CHARACTER_FILE_NAME_STORAGE_KEY);
18
+ } catch {
19
+ return null;
20
+ }
21
+ }
22
+ async function safeEmit(event, payload) {
23
+ try {
24
+ // @ts-ignore optional dynamic import
25
+ const mod = await import('@tauri-apps/api/event');
26
+ await mod.emit(event, payload);
27
+ } catch {
28
+ /* non-Tauri or event module missing */
29
+ }
30
+ }
31
+ /**
32
+ * Write the user's character choice and fan out so every webview recomputes
33
+ * active character (toolbar + `/chat`).
34
+ */
35
+ async function setPreferredActiveCharacterFileName(fileName) {
36
+ if (typeof window === 'undefined') return;
37
+ try {
38
+ if (fileName && fileName.trim()) {
39
+ window.localStorage.setItem(ACTIVE_CHARACTER_FILE_NAME_STORAGE_KEY, fileName.trim());
40
+ } else {
41
+ window.localStorage.removeItem(ACTIVE_CHARACTER_FILE_NAME_STORAGE_KEY);
42
+ }
43
+ } catch {
44
+ // ignore quota
45
+ }
46
+ window.dispatchEvent(new CustomEvent(ACTIVE_CHARACTER_CHANGE_EVENT, {
47
+ detail: {
48
+ fileName: fileName?.trim() || null
49
+ }
50
+ }));
51
+ await safeEmit(ACTIVE_CHARACTER_CHANGE_EVENT, {
52
+ fileName: fileName?.trim() || null
53
+ });
54
+ }
55
+ /** Pick the character row that matches the stored preference; otherwise list[0]. */
56
+ function resolveActiveCharacterFromList(list) {
57
+ if (!list?.length) return null;
58
+ const pref = readPreferredActiveCharacterFileName();
59
+ if (pref) {
60
+ const match = list.find(c => c.file_name === pref);
61
+ if (match) return match;
62
+ }
63
+ return list[0] ?? null;
64
+ }export{ACTIVE_CHARACTER_CHANGE_EVENT,ACTIVE_CHARACTER_FILE_NAME_STORAGE_KEY,readPreferredActiveCharacterFileName,resolveActiveCharacterFromList,setPreferredActiveCharacterFileName};//# sourceMappingURL=activeCharacterPreference.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activeCharacterPreference.js","sources":["../../src/hooks/activeCharacterPreference.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;;;;;;;;AAQG;AAEH;AACA,MAAA,sCAAa,GAAA;AAEb;AACA,MAAA,6BAAa,GAAA;AAEb,SAAA,oCAAgB,GAAA;AAmBhB,EAAA,IAAA,OAAA,MAAA,KAAA,WAAA,EAAA,OAAA,IAAA;;;AAGG,EAAA,CAAA,CAAA,MAAA;AACH,IAAA,OAAA,IAAA;AAqBA,EAAA;AACA;AAA2D,eAAU,QAAQ,CAAA,KAAO,EAAA,OAAA,EAAA;AAAE,EAAA,IAClF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,3 +1,4 @@
1
+ export * from './activeCharacterPreference';
1
2
  export * from './useTheme';
2
3
  export * from './useWindowSize';
3
4
  export * from './useToast';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC"}
package/lib/index.js CHANGED
@@ -1 +1 @@
1
- export{default as PageLoading}from'./components/PageLoading/index.js';export{ApplicationErrorHandler}from'./components/ErrorHandlers/ApplicationErrorHandler.js';export{ErrorBoundary}from'./components/ErrorHandlers/ErrorBoundary.js';export{LayoutErrorBoundary}from'./components/ErrorHandlers/LayoutErrorBoundary.js';export{RemixErrorBoundary}from'./components/ErrorHandlers/RemixErrorBoundary.js';export{SPAErrorBoundary}from'./components/ErrorHandlers/SPAErrorBoundary.js';export{ReactTable}from'./components/ReactTable/Table.js';export{DefaultColumnFilter,SelectColumnFilter}from'./components/ReactTable/TableFilters.js';export{Error404}from'./components/ErrorPages/404.js';export{Error500}from'./components/ErrorPages/500.js';export{Error403}from'./components/ErrorPages/403.js';export{PageContainer}from'./components/PageContainer/PageContainer.js';export{Spin}from'./components/Spin/index.js';export{OTPInput}from'./components/OTP/OTPInput.js';export{SingleInput}from'./components/OTP/SingleInput.js';export{useOTPInput}from'./components/OTP/hooks.js';export{OTPVerification}from'./components/OTP/OTPVerification.js';export{SearchInput}from'./components/Search/SearchInput.js';export{Select,SelectContent,SelectItem,SelectSearch,SelectTrigger,SelectValue}from'./components/Select/Select.js';export{DatePicker}from'./components/DatePicker/DatePicker.js';export{Dialog}from'./components/Dialog/Dialog.js';export{TailwindUiButton}from'./components/Button/Button.js';export{TailwindThemeProvider,ThemeContext,themes}from'./components/ThemeProvider/ThemeProvider.js';export{ThemeToggle}from'./components/ThemeProvider/ThemeToggle.js';export{LanguageMenuDropdown}from'./components/LanguageMenuDropdown/LanguageMenuDropdown.js';export{InputToolBar}from'./components/InputToolBar/InputToolBar.js';export{getDefaultLeftItems,getDefaultRightItems}from'./components/InputToolBar/defaults.js';export{AIToolbar,AIToolbarInputSurface,AIToolbarLeading,AIToolbarMain,AIToolbarStatusDot,AIToolbarTrailing}from'./components/AIToolbar/components/AIToolbarPrimitives.js';export{Completion}from'./components/AIToolbar/components/completion/index.js';export{SystemAudio}from'./components/AIToolbar/components/speech/index.js';export{AudioVisualizer}from'./components/AIToolbar/components/speech/audio-visualizer.js';export{StatusIndicator}from'./components/AIToolbar/components/speech/StatusIndicator.js';export{AIToolBar}from'./components/AIToolbar/components/AIToolBar.js';export{CustomCursor}from'./components/AIToolbar/components/CustomCursor.js';export{MessageHistory}from'./components/AIToolbar/components/completion/MessageHistory.js';export{Screenshot}from'./components/AIToolbar/components/completion/Screenshot.js';export{Header}from'./components/AIToolbar/components/speech/Header.js';export{ModeSwitcher}from'./components/AIToolbar/components/speech/ModeSwitcher.js';export{PermissionFlow}from'./components/AIToolbar/components/speech/PermissionFlow.js';export{YantraIcon}from'./components/YantraIcon.js';export{Markdown as AIToolbarMarkdown}from'./components/AIToolbar/components/Markdown/index.js';export{MarkdownBreadcrumbs}from'./components/Markdown/MarkdownBreadcrumbs.js';export{MarkdownCopyButton}from'./components/Markdown/MarkdownCopyButton.js';export{MarkdownHeader}from'./components/Markdown/MarkdownHeader.js';export{MarkdownNavigation}from'./components/Markdown/MarkdownNavigation.js';export{MarkdownPage}from'./components/Markdown/MarkdownPage.js';export{MarkdownTableOfContents}from'./components/Markdown/MarkdownTableOfContents.js';export{useTheme}from'./hooks/useTheme.js';export{useWindowSize}from'./hooks/useWindowSize.js';export{ToastContainer,useToast,useToastCloseAll}from'./hooks/useToast.js';export{useMediaQuery}from'./hooks/useMediaQuery.js';export{cn}from'./utils/util.js';export{AssistantMessageActions}from'./components/AIToolbar/components/completion/AssistantMessageActions.js';export{DragButton}from'./components/AIToolbar/components/DragButton.js';//# sourceMappingURL=index.js.map
1
+ export{default as PageLoading}from'./components/PageLoading/index.js';export{ApplicationErrorHandler}from'./components/ErrorHandlers/ApplicationErrorHandler.js';export{ErrorBoundary}from'./components/ErrorHandlers/ErrorBoundary.js';export{LayoutErrorBoundary}from'./components/ErrorHandlers/LayoutErrorBoundary.js';export{RemixErrorBoundary}from'./components/ErrorHandlers/RemixErrorBoundary.js';export{SPAErrorBoundary}from'./components/ErrorHandlers/SPAErrorBoundary.js';export{ReactTable}from'./components/ReactTable/Table.js';export{DefaultColumnFilter,SelectColumnFilter}from'./components/ReactTable/TableFilters.js';export{Error404}from'./components/ErrorPages/404.js';export{Error500}from'./components/ErrorPages/500.js';export{Error403}from'./components/ErrorPages/403.js';export{PageContainer}from'./components/PageContainer/PageContainer.js';export{Spin}from'./components/Spin/index.js';export{OTPInput}from'./components/OTP/OTPInput.js';export{SingleInput}from'./components/OTP/SingleInput.js';export{useOTPInput}from'./components/OTP/hooks.js';export{OTPVerification}from'./components/OTP/OTPVerification.js';export{SearchInput}from'./components/Search/SearchInput.js';export{Select,SelectContent,SelectItem,SelectSearch,SelectTrigger,SelectValue}from'./components/Select/Select.js';export{DatePicker}from'./components/DatePicker/DatePicker.js';export{Dialog}from'./components/Dialog/Dialog.js';export{TailwindUiButton}from'./components/Button/Button.js';export{TailwindThemeProvider,ThemeContext,themes}from'./components/ThemeProvider/ThemeProvider.js';export{ThemeToggle}from'./components/ThemeProvider/ThemeToggle.js';export{LanguageMenuDropdown}from'./components/LanguageMenuDropdown/LanguageMenuDropdown.js';export{InputToolBar}from'./components/InputToolBar/InputToolBar.js';export{getDefaultLeftItems,getDefaultRightItems}from'./components/InputToolBar/defaults.js';export{AIToolbar,AIToolbarInputSurface,AIToolbarLeading,AIToolbarMain,AIToolbarStatusDot,AIToolbarTrailing}from'./components/AIToolbar/components/AIToolbarPrimitives.js';export{Completion}from'./components/AIToolbar/components/completion/index.js';export{SystemAudio}from'./components/AIToolbar/components/speech/index.js';export{AudioVisualizer}from'./components/AIToolbar/components/speech/audio-visualizer.js';export{StatusIndicator}from'./components/AIToolbar/components/speech/StatusIndicator.js';export{AIToolBar}from'./components/AIToolbar/components/AIToolBar.js';export{CustomCursor}from'./components/AIToolbar/components/CustomCursor.js';export{MessageHistory}from'./components/AIToolbar/components/completion/MessageHistory.js';export{Screenshot}from'./components/AIToolbar/components/completion/Screenshot.js';export{Header}from'./components/AIToolbar/components/speech/Header.js';export{ModeSwitcher}from'./components/AIToolbar/components/speech/ModeSwitcher.js';export{PermissionFlow}from'./components/AIToolbar/components/speech/PermissionFlow.js';export{YantraIcon}from'./components/YantraIcon.js';export{Markdown as AIToolbarMarkdown}from'./components/AIToolbar/components/Markdown/index.js';export{MarkdownBreadcrumbs}from'./components/Markdown/MarkdownBreadcrumbs.js';export{MarkdownCopyButton}from'./components/Markdown/MarkdownCopyButton.js';export{MarkdownHeader}from'./components/Markdown/MarkdownHeader.js';export{MarkdownNavigation}from'./components/Markdown/MarkdownNavigation.js';export{MarkdownPage}from'./components/Markdown/MarkdownPage.js';export{MarkdownTableOfContents}from'./components/Markdown/MarkdownTableOfContents.js';export{ACTIVE_CHARACTER_CHANGE_EVENT,ACTIVE_CHARACTER_FILE_NAME_STORAGE_KEY,readPreferredActiveCharacterFileName,resolveActiveCharacterFromList,setPreferredActiveCharacterFileName}from'./hooks/activeCharacterPreference.js';export{useTheme}from'./hooks/useTheme.js';export{useWindowSize}from'./hooks/useWindowSize.js';export{ToastContainer,useToast,useToastCloseAll}from'./hooks/useToast.js';export{useMediaQuery}from'./hooks/useMediaQuery.js';export{cn}from'./utils/util.js';export{AssistantMessageActions}from'./components/AIToolbar/components/completion/AssistantMessageActions.js';export{DragButton}from'./components/AIToolbar/components/DragButton.js';//# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@admin-layout/tailwind-ui",
3
- "version": "12.2.4-alpha.58",
3
+ "version": "12.2.4-alpha.59",
4
4
  "description": "Sample core for higher packages to depend on",
5
5
  "license": "ISC",
6
6
  "author": "CDMBase LLC",
@@ -96,5 +96,5 @@
96
96
  "typescript": {
97
97
  "definition": "lib/index.d.ts"
98
98
  },
99
- "gitHead": "4cf5febc99804338d85d52ec12787d7bbb661bad"
99
+ "gitHead": "628dab51faaae1c1ab545c071a2252395659fe7e"
100
100
  }