@vezham/react 26.0.3 → 26.3.1

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 (143) hide show
  1. package/dist/index.css +2 -0
  2. package/dist/index.d.ts +2 -0
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +2 -1
  5. package/dist/lib/components/command/command-dialog.js +1 -1
  6. package/dist/lib/components/command/command-provider.js +1 -1
  7. package/dist/lib/components/command/index.d.ts +0 -1
  8. package/dist/lib/components/command/index.d.ts.map +1 -1
  9. package/dist/lib/components/panel/footer/control-center/control-center.js +1 -1
  10. package/dist/lib/components/panel/footer/control-center/editor.d.ts.map +1 -1
  11. package/dist/lib/components/panel/footer/control-center/editor.js +19 -24
  12. package/dist/lib/components/panel/footer/control-center/theme.d.ts.map +1 -1
  13. package/dist/lib/components/panel/footer/control-center/theme.js +2 -15
  14. package/dist/lib/components/panel/footer/control-center/variant.d.ts +3 -3
  15. package/dist/lib/components/panel/footer/control-center/variant.js +1 -1
  16. package/dist/lib/components/panel/footer/data.d.ts +1 -1
  17. package/dist/lib/components/panel/footer/data.js +1 -1
  18. package/dist/lib/components/panel/footer/index.d.ts +1 -1
  19. package/dist/lib/components/panel/footer/index.d.ts.map +1 -1
  20. package/dist/lib/components/panel/footer/index.js +11 -9
  21. package/dist/lib/components/panel/footer/notification-center/index.js +1 -1
  22. package/dist/lib/components/panel/footer/tamizhi/index.d.ts +3 -0
  23. package/dist/lib/components/panel/footer/tamizhi/index.d.ts.map +1 -0
  24. package/dist/lib/components/panel/footer/tamizhi/index.js +20 -0
  25. package/dist/lib/components/panel/footer/types.d.ts +2 -3
  26. package/dist/lib/components/panel/footer/types.d.ts.map +1 -1
  27. package/dist/lib/components/panel/footer/user-menu.d.ts +2 -2
  28. package/dist/lib/components/panel/footer/user-menu.d.ts.map +1 -1
  29. package/dist/lib/components/panel/footer/user-menu.js +127 -59
  30. package/dist/lib/components/panel/header/bookmarks/favorites/variant.js +2 -2
  31. package/dist/lib/components/panel/header/bookmarks/folder-modal/index.js +6 -6
  32. package/dist/lib/components/panel/header/bookmarks/index.js +1 -1
  33. package/dist/lib/components/panel/header/bookmarks/quick-access/index.js +9 -9
  34. package/dist/lib/components/panel/header/bookmarks/variant.js +22 -22
  35. package/dist/lib/components/panel/header/index.js +3 -3
  36. package/dist/lib/components/panel/info-panel/provider.d.ts.map +1 -1
  37. package/dist/lib/components/panel/info-panel/provider.js +20 -34
  38. package/dist/lib/components/panel/info-panel/types.d.ts +1 -1
  39. package/dist/lib/components/panel/info-panel/types.d.ts.map +1 -1
  40. package/dist/lib/components/panel/menu/index.js +4 -4
  41. package/dist/lib/components/panel/menu/variant.js +4 -4
  42. package/dist/lib/components/workspace-navigation/index.d.ts.map +1 -1
  43. package/dist/lib/components/workspace-navigation/index.js +1 -1
  44. package/dist/lib/layouts/app/frame.d.ts +2 -1
  45. package/dist/lib/layouts/app/frame.d.ts.map +1 -1
  46. package/dist/lib/layouts/app/frame.js +2 -2
  47. package/dist/lib/layouts/app/index.d.ts +7 -4
  48. package/dist/lib/layouts/app/index.d.ts.map +1 -1
  49. package/dist/lib/layouts/app/index.js +37 -6
  50. package/dist/lib/layouts/menu-layout/home-navigation-bubble.js +3 -3
  51. package/dist/lib/layouts/menu-layout/index-md.d.ts.map +1 -1
  52. package/dist/lib/layouts/menu-layout/index-md.js +19 -28
  53. package/dist/lib/layouts/menu-layout/index-sm.d.ts.map +1 -1
  54. package/dist/lib/layouts/menu-layout/index-sm.js +8 -20
  55. package/dist/lib/layouts/section/toolbar.js +1 -1
  56. package/dist/lib/pages/settings/settings-content.d.ts.map +1 -1
  57. package/dist/lib/pages/settings/settings-content.js +14 -26
  58. package/dist/lib/workspace/action-dialog.d.ts +9 -0
  59. package/dist/lib/workspace/action-dialog.d.ts.map +1 -0
  60. package/dist/lib/workspace/action-dialog.js +86 -0
  61. package/dist/lib/workspace/actions-menu.d.ts +8 -0
  62. package/dist/lib/workspace/actions-menu.d.ts.map +1 -0
  63. package/dist/lib/workspace/actions-menu.js +47 -0
  64. package/dist/lib/workspace/create-dialog.d.ts +5 -0
  65. package/dist/lib/workspace/create-dialog.d.ts.map +1 -0
  66. package/dist/lib/workspace/create-dialog.js +108 -0
  67. package/dist/lib/workspace/index.d.ts +34 -0
  68. package/dist/lib/workspace/index.d.ts.map +1 -0
  69. package/dist/lib/workspace/index.js +128 -0
  70. package/dist/lib/workspace/menu.d.ts +18 -0
  71. package/dist/lib/workspace/menu.d.ts.map +1 -0
  72. package/dist/lib/workspace/menu.js +148 -0
  73. package/dist/lib/workspace/model.d.ts +17 -0
  74. package/dist/lib/workspace/model.d.ts.map +1 -0
  75. package/dist/lib/workspace/model.js +35 -0
  76. package/package.json +3 -2
  77. package/dist/lib/components/command/index.js +0 -3
  78. package/dist/lib/components/panel/footer/ai/chat-header.d.ts +0 -9
  79. package/dist/lib/components/panel/footer/ai/chat-header.d.ts.map +0 -1
  80. package/dist/lib/components/panel/footer/ai/chat-header.js +0 -63
  81. package/dist/lib/components/panel/footer/ai/composer.d.ts +0 -7
  82. package/dist/lib/components/panel/footer/ai/composer.d.ts.map +0 -1
  83. package/dist/lib/components/panel/footer/ai/composer.js +0 -77
  84. package/dist/lib/components/panel/footer/ai/content.d.ts +0 -13
  85. package/dist/lib/components/panel/footer/ai/content.d.ts.map +0 -1
  86. package/dist/lib/components/panel/footer/ai/content.js +0 -148
  87. package/dist/lib/components/panel/footer/ai/conversation.d.ts +0 -47
  88. package/dist/lib/components/panel/footer/ai/conversation.d.ts.map +0 -1
  89. package/dist/lib/components/panel/footer/ai/conversation.js +0 -222
  90. package/dist/lib/components/panel/footer/ai/index.d.ts +0 -3
  91. package/dist/lib/components/panel/footer/ai/index.d.ts.map +0 -1
  92. package/dist/lib/components/panel/footer/ai/index.js +0 -41
  93. package/dist/lib/components/panel/footer/ai/message-actions.d.ts +0 -8
  94. package/dist/lib/components/panel/footer/ai/message-actions.d.ts.map +0 -1
  95. package/dist/lib/components/panel/footer/ai/message-actions.js +0 -63
  96. package/dist/lib/components/panel/footer/ai/mock-result.d.ts +0 -6
  97. package/dist/lib/components/panel/footer/ai/mock-result.d.ts.map +0 -1
  98. package/dist/lib/components/panel/footer/ai/mock-result.js +0 -121
  99. package/dist/lib/components/panel/footer/ai/model-logo.d.ts +0 -5
  100. package/dist/lib/components/panel/footer/ai/model-logo.d.ts.map +0 -1
  101. package/dist/lib/components/panel/footer/ai/model-logo.js +0 -13
  102. package/dist/lib/components/panel/footer/ai/model-logos.d.ts +0 -2
  103. package/dist/lib/components/panel/footer/ai/model-logos.d.ts.map +0 -1
  104. package/dist/lib/components/panel/footer/ai/model-logos.js +0 -10
  105. package/dist/lib/components/panel/footer/ai/model-picker.d.ts +0 -8
  106. package/dist/lib/components/panel/footer/ai/model-picker.d.ts.map +0 -1
  107. package/dist/lib/components/panel/footer/ai/model-picker.js +0 -166
  108. package/dist/lib/components/panel/footer/ai/models.d.ts +0 -9
  109. package/dist/lib/components/panel/footer/ai/models.d.ts.map +0 -1
  110. package/dist/lib/components/panel/footer/ai/models.js +0 -72
  111. package/dist/lib/components/panel/footer/ai/permission-picker.d.ts +0 -5
  112. package/dist/lib/components/panel/footer/ai/permission-picker.d.ts.map +0 -1
  113. package/dist/lib/components/panel/footer/ai/permission-picker.js +0 -63
  114. package/dist/lib/components/panel/footer/ai/use-chat-scroll.d.ts +0 -9
  115. package/dist/lib/components/panel/footer/ai/use-chat-scroll.d.ts.map +0 -1
  116. package/dist/lib/components/panel/footer/ai/use-chat-scroll.js +0 -57
  117. package/dist/lib/components/panel/footer/preferences/data.d.ts +0 -14
  118. package/dist/lib/components/panel/footer/preferences/data.d.ts.map +0 -1
  119. package/dist/lib/components/panel/footer/preferences/data.js +0 -304
  120. package/dist/lib/components/panel/footer/preferences/modal.d.ts +0 -8
  121. package/dist/lib/components/panel/footer/preferences/modal.d.ts.map +0 -1
  122. package/dist/lib/components/panel/footer/preferences/modal.js +0 -75
  123. package/dist/lib/components/panel/footer/preferences/sidebar.d.ts +0 -9
  124. package/dist/lib/components/panel/footer/preferences/sidebar.d.ts.map +0 -1
  125. package/dist/lib/components/panel/footer/preferences/sidebar.js +0 -105
  126. package/dist/lib/components/panel/footer/preferences/user-settings/account/index.d.ts +0 -3
  127. package/dist/lib/components/panel/footer/preferences/user-settings/account/index.d.ts.map +0 -1
  128. package/dist/lib/components/panel/footer/preferences/user-settings/account/index.js +0 -16
  129. package/dist/lib/components/panel/footer/preferences/user-settings/content-social/index.d.ts +0 -3
  130. package/dist/lib/components/panel/footer/preferences/user-settings/content-social/index.d.ts.map +0 -1
  131. package/dist/lib/components/panel/footer/preferences/user-settings/content-social/index.js +0 -16
  132. package/dist/lib/components/panel/footer/preferences/user-settings/data-privacy/index.d.ts +0 -3
  133. package/dist/lib/components/panel/footer/preferences/user-settings/data-privacy/index.d.ts.map +0 -1
  134. package/dist/lib/components/panel/footer/preferences/user-settings/data-privacy/index.js +0 -101
  135. package/dist/lib/components/panel/footer/preferences/user-settings/family-center/index.d.ts +0 -3
  136. package/dist/lib/components/panel/footer/preferences/user-settings/family-center/index.d.ts.map +0 -1
  137. package/dist/lib/components/panel/footer/preferences/user-settings/family-center/index.js +0 -24
  138. package/dist/lib/components/panel/footer/preferences/user-settings/profiles/index.d.ts +0 -3
  139. package/dist/lib/components/panel/footer/preferences/user-settings/profiles/index.d.ts.map +0 -1
  140. package/dist/lib/components/panel/footer/preferences/user-settings/profiles/index.js +0 -103
  141. package/dist/lib/components/panel/footer/tabs.d.ts +0 -12
  142. package/dist/lib/components/panel/footer/tabs.d.ts.map +0 -1
  143. package/dist/lib/components/panel/footer/tabs.js +0 -23
package/dist/index.css CHANGED
@@ -1,3 +1,5 @@
1
+ @import '@vezham/tamizhi-ui';
2
+
1
3
  @source './**/*.js';
2
4
 
3
5
  ._panel_inr1p_1 {
package/dist/index.d.ts CHANGED
@@ -4,4 +4,6 @@ export * from './lib/navigation-toolbar';
4
4
  export type { AppMenuItem, AppMenuAction } from './lib/components/app-menu';
5
5
  export { ControlCenter } from './lib/components/panel/footer/control-center';
6
6
  export type { ControlCenterProps } from './lib/components/panel/footer/control-center';
7
+ export { WorkspaceProvider, useWorkspace, useWorkspaceStore } from './lib/workspace';
8
+ export type { LocalWorkspace, WorkspaceProviderProps } from './lib/workspace';
7
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,SAAS,EACT,KAAK,aAAa,EAClB,KAAK,cAAc,EACpB,MAAM,mBAAmB,CAAA;AAC1B,YAAY,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACzD,cAAc,0BAA0B,CAAA;AAExC,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,8CAA8C,CAAA;AAC5E,YAAY,EAAE,kBAAkB,EAAE,MAAM,8CAA8C,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,SAAS,EACT,KAAK,aAAa,EAClB,KAAK,cAAc,EACpB,MAAM,mBAAmB,CAAA;AAC1B,YAAY,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACzD,cAAc,0BAA0B,CAAA;AAExC,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,8CAA8C,CAAA;AAC5E,YAAY,EAAE,kBAAkB,EAAE,MAAM,8CAA8C,CAAA;AAEtF,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,EAClB,MAAM,iBAAiB,CAAA;AACxB,YAAY,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAA"}
package/dist/index.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import { ControlCenter } from "./lib/components/panel/footer/control-center/control-center.js";
2
+ import { WorkspaceProvider, useWorkspace, useWorkspaceStore } from "./lib/workspace/index.js";
2
3
  import { getNavigationToolbar } from "./lib/navigation-toolbar.js";
3
4
  import { AppFrame } from "./lib/layouts/app/frame.js";
4
5
  import { AppLayout } from "./lib/layouts/app/index.js";
5
- export { AppFrame, AppLayout, ControlCenter, getNavigationToolbar };
6
+ export { AppFrame, AppLayout, ControlCenter, WorkspaceProvider, getNavigationToolbar, useWorkspace, useWorkspaceStore };
@@ -107,7 +107,7 @@ var CommandItemContent = ({ label, description, icon }) => {
107
107
  return /* @__PURE__ */ jsxs("div", {
108
108
  className: "flex min-w-0 items-center gap-3",
109
109
  children: [/* @__PURE__ */ jsx("div", {
110
- className: "bg-default-100 text-default-600 flex h-8 w-8 shrink-0 items-center justify-center rounded-md",
110
+ className: "bg-default text-muted flex h-8 w-8 shrink-0 items-center justify-center rounded-md",
111
111
  children: /* @__PURE__ */ jsx(AppIcon, {
112
112
  icon,
113
113
  size: 18,
@@ -1,7 +1,7 @@
1
1
  import { CommandPaletteDialog } from "./command-dialog.js";
2
2
  import { useCallback, useEffect, useMemo, useState } from "react";
3
- import { jsx, jsxs } from "react/jsx-runtime";
4
3
  import { CommandContext } from "@vezham/hooks";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
5
  //#region src/lib/components/command/command-provider.tsx
6
6
  var CommandProvider = ({ children, items }) => {
7
7
  const [isOpen, setIsOpen] = useState(false);
@@ -1,3 +1,2 @@
1
1
  export * from './command-provider';
2
- export { useCommand } from '@vezham/hooks';
3
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/command/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAA;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/command/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAA"}
@@ -68,7 +68,7 @@ var ControlCenter = ({ context, tiles, trigger, placement = "bottom end", onOpen
68
68
  changeOpen(false);
69
69
  openSettings("Control Center");
70
70
  },
71
- children: "Control Center"
71
+ children: "Edit Controls"
72
72
  })
73
73
  })] });
74
74
  return /* @__PURE__ */ jsx(AppearanceProvider, {
@@ -1 +1 @@
1
- {"version":3,"file":"editor.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/components/panel/footer/control-center/editor.tsx"],"names":[],"mappings":"AAEA,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,SAAS;QACd,EAAE,EAAE,MAAM,CAAA;QACV,KAAK,EAAE,MAAM,CAAA;QACb,OAAO,EAAE,OAAO,CAAA;QAChB,QAAQ,EAAE,OAAO,CAAA;KAClB,EAAE,CAAA;IACH,kBAAkB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAA;IAC1D,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IAC5C,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IAC3C,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;CAC/D,CAAA;AACD,KAAK,YAAY,GAAG;IAClB,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AASD,eAAO,MAAM,aAAa,GAAI,IAAI,SAAS,YAAY,EACrD,OAAO,SAAS,IAAI,EAAE,EACtB,mBAAgC;;;;CA6GjC,CAAA"}
1
+ {"version":3,"file":"editor.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/components/panel/footer/control-center/editor.tsx"],"names":[],"mappings":"AAEA,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,SAAS;QACd,EAAE,EAAE,MAAM,CAAA;QACV,KAAK,EAAE,MAAM,CAAA;QACb,OAAO,EAAE,OAAO,CAAA;QAChB,QAAQ,EAAE,OAAO,CAAA;KAClB,EAAE,CAAA;IACH,kBAAkB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAA;IAC1D,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IAC5C,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IAC3C,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;CAC/D,CAAA;AACD,KAAK,YAAY,GAAG;IAClB,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AA+BD,eAAO,MAAM,aAAa,GAAI,IAAI,SAAS,YAAY,EACrD,OAAO,SAAS,IAAI,EAAE,EACtB,mBAAgC;;;;CA2FjC,CAAA"}
@@ -1,26 +1,22 @@
1
- import { useSyncExternalStore } from "react";
1
+ import { useLocalStore } from "@vezham/hooks";
2
2
  //#region src/lib/components/panel/footer/control-center/editor.tsx
3
- var subscribe = (onChange) => {
4
- window.addEventListener("storage", onChange);
5
- window.addEventListener("vx:tile-preferences", onChange);
6
- return () => {
7
- window.removeEventListener("storage", onChange);
8
- window.removeEventListener("vx:tile-preferences", onChange);
3
+ var INITIAL_PREFERENCES = {
4
+ order: [],
5
+ hidden: [],
6
+ spans: {}
7
+ };
8
+ var parsePreferences = (data) => {
9
+ if (!data || typeof data !== "object") return INITIAL_PREFERENCES;
10
+ const value = data;
11
+ return {
12
+ order: Array.isArray(value.order) ? [...new Set(value.order.filter((id) => typeof id === "string"))] : [],
13
+ hidden: Array.isArray(value.hidden) ? value.hidden.filter((id) => typeof id === "string") : [],
14
+ spans: value.spans && typeof value.spans === "object" ? Object.fromEntries(Object.entries(value.spans).filter(([, span]) => typeof span === "string")) : {}
9
15
  };
10
16
  };
11
17
  var useTileEditor = (tiles, storageKey = "vx:control-center") => {
12
- const snapshot = useSyncExternalStore(subscribe, () => localStorage.getItem(storageKey) ?? "", () => "");
13
- let order = [];
14
- let hidden = [];
15
- const spans = {};
16
- try {
17
- const value = JSON.parse(snapshot || "{}");
18
- if (Array.isArray(value.order)) order = [...new Set(value.order.filter((id) => typeof id === "string"))];
19
- if (Array.isArray(value.hidden)) hidden = value.hidden.filter((id) => typeof id === "string");
20
- if (value.spans && typeof value.spans === "object") {
21
- for (const [id, span] of Object.entries(value.spans)) if (typeof span === "string") spans[id] = span;
22
- }
23
- } catch {}
18
+ const { value: preferences, setValue } = useLocalStore(storageKey, INITIAL_PREFERENCES, { parse: parsePreferences });
19
+ const { order, hidden, spans } = preferences;
24
20
  const tilesById = new Map(tiles.map((tile) => [tile.id, tile]));
25
21
  const orderedIds = new Set(order);
26
22
  const hiddenIds = new Set(hidden);
@@ -32,12 +28,11 @@ var useTileEditor = (tiles, storageKey = "vx:control-center") => {
32
28
  span: spans[tile.id]
33
29
  } : tile);
34
30
  const save = (nextOrder, nextHidden, nextSpans = spans) => {
35
- localStorage.setItem(storageKey, JSON.stringify({
36
- order: nextOrder,
37
- hidden: nextHidden,
31
+ setValue({
32
+ order: [...nextOrder],
33
+ hidden: [...nextHidden],
38
34
  spans: nextSpans
39
- }));
40
- window.dispatchEvent(new Event("vx:tile-preferences"));
35
+ });
41
36
  };
42
37
  return {
43
38
  editor: {
@@ -1 +1 @@
1
- {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/components/panel/footer/control-center/theme.tsx"],"names":[],"mappings":"AA4EA,eAAO,MAAM,SAAS,GAAI,mBAGvB;IACD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,IAAI,CAAA;CACnB,gCAqBA,CAAA;AAED,eAAO,MAAM,aAAa,mCA4CzB,CAAA"}
1
+ {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/components/panel/footer/control-center/theme.tsx"],"names":[],"mappings":"AAqDA,eAAO,MAAM,SAAS,GAAI,mBAGvB;IACD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,IAAI,CAAA;CACnB,gCAqBA,CAAA;AAED,eAAO,MAAM,aAAa,mCA4CzB,CAAA"}
@@ -1,7 +1,7 @@
1
1
  import { controlCenterVariants, optionTileVariants } from "./variant.js";
2
2
  import { ActionTile } from "./tile.js";
3
3
  import { useRootAttribute } from "./document.js";
4
- import { Button, ColorSwatch, ColorSwatchPicker, parseColor } from "@vezham/react-v3";
4
+ import { Button, ColorSwatch, ColorSwatchPicker } from "@vezham/react-v3";
5
5
  import { jsx, jsxs } from "react/jsx-runtime";
6
6
  import { Palette } from "@vezham/icons-react";
7
7
  //#region src/lib/components/panel/footer/control-center/theme.tsx
@@ -55,19 +55,9 @@ var colors = [
55
55
  foreground: "#ffffff"
56
56
  }
57
57
  ];
58
- var properties = [
59
- "--accent",
60
- "--accent-foreground",
61
- "--heroui-primary",
62
- "--heroui-primary-foreground",
63
- "--heroui-focus"
64
- ];
58
+ var properties = ["--accent", "--accent-foreground"];
65
59
  var originalStyles = /* @__PURE__ */ new WeakMap();
66
60
  var styles = controlCenterVariants();
67
- var hslChannels = (color) => {
68
- const hsl = parseColor(color).toFormat("hsl");
69
- return `${hsl.getChannelValue("hue")} ${hsl.getChannelValue("saturation")}% ${hsl.getChannelValue("lightness")}%`;
70
- };
71
61
  var applyColor = (id) => {
72
62
  const root = document.documentElement;
73
63
  const option = colors.find((color) => color.id === id);
@@ -78,9 +68,6 @@ var applyColor = (id) => {
78
68
  })));
79
69
  root.style.setProperty("--accent", option.color);
80
70
  root.style.setProperty("--accent-foreground", option.foreground);
81
- root.style.setProperty("--heroui-primary", hslChannels(option.color));
82
- root.style.setProperty("--heroui-primary-foreground", hslChannels(option.foreground));
83
- root.style.setProperty("--heroui-focus", hslChannels(option.color));
84
71
  } else {
85
72
  originalStyles.get(root)?.forEach((original, index) => {
86
73
  root.style.setProperty(properties[index], original.value, original.priority);
@@ -278,17 +278,17 @@ export declare const controlCenterTileVariants: import("tailwind-variants").TVRe
278
278
  }>>;
279
279
  export declare const optionTileVariants: import("tailwind-variants").TVReturnType<{
280
280
  selected: {
281
- true: "bg-primary/10 text-primary";
281
+ true: "bg-accent/10 text-accent";
282
282
  false: "hover:bg-surface text-muted hover:text-foreground";
283
283
  };
284
284
  }, undefined, "h-auto w-full justify-start rounded-lg px-3 py-2 text-start text-sm font-normal transition-colors", {
285
285
  selected: {
286
- true: "bg-primary/10 text-primary";
286
+ true: "bg-accent/10 text-accent";
287
287
  false: "hover:bg-surface text-muted hover:text-foreground";
288
288
  };
289
289
  }, undefined, import("tailwind-variants").TVReturnTypeLike<{
290
290
  selected: {
291
- true: "bg-primary/10 text-primary";
291
+ true: "bg-accent/10 text-accent";
292
292
  false: "hover:bg-surface text-muted hover:text-foreground";
293
293
  };
294
294
  }, undefined>>;
@@ -101,7 +101,7 @@ var controlCenterTileVariants = tv({
101
101
  var optionTileVariants = tv({
102
102
  base: "h-auto w-full justify-start rounded-lg px-3 py-2 text-start text-sm font-normal transition-colors",
103
103
  variants: { selected: {
104
- true: "bg-primary/10 text-primary",
104
+ true: "bg-accent/10 text-accent",
105
105
  false: "hover:bg-surface text-muted hover:text-foreground"
106
106
  } },
107
107
  defaultVariants: { selected: false }
@@ -13,7 +13,7 @@ declare const STATUS_OPTIONS: readonly [{
13
13
  readonly id: "idle";
14
14
  readonly label: "Idle";
15
15
  readonly icon: "💤";
16
- readonly color: "bg-primary";
16
+ readonly color: "bg-accent";
17
17
  }, {
18
18
  readonly id: "busy";
19
19
  readonly label: "Busy";
@@ -16,7 +16,7 @@ var STATUS_OPTIONS = [
16
16
  id: "idle",
17
17
  label: "Idle",
18
18
  icon: "💤",
19
- color: "bg-primary"
19
+ color: "bg-accent"
20
20
  },
21
21
  {
22
22
  id: "busy",
@@ -1,4 +1,4 @@
1
1
  import type { FooterActionsProps } from './types';
2
- declare const Footer: ({ user, showAI, showControlCenter, controlCenter, showNotifications, showUserInfo, notificationCount, onAI, onNotificationsClick, onUserClick, toolbarAction, className }: FooterActionsProps) => import("react").JSX.Element;
2
+ declare const Footer: ({ user, showAI, showControlCenter, controlCenter, showNotifications, showUserInfo, hideSeparator, notificationCount, onTamizhi, onNotificationsClick, toolbarAction, className }: FooterActionsProps) => import("react").JSX.Element;
3
3
  export { Footer };
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/lib/components/panel/footer/index.tsx"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAoFjD,QAAA,MAAM,MAAM,GAAI,2KAab,kBAAkB,gCAsFpB,CAAA;AAED,OAAO,EAAE,MAAM,EAAE,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/lib/components/panel/footer/index.tsx"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAoFjD,QAAA,MAAM,MAAM,GAAI,kLAab,kBAAkB,gCAsFpB,CAAA;AAED,OAAO,EAAE,MAAM,EAAE,CAAA"}
@@ -1,3 +1,4 @@
1
+ import { useSettingsNavigation } from "../../../pages/settings/navigation.js";
1
2
  import { FooterControlCenterContext } from "./control-center/footer-context.js";
2
3
  import { ACCOUNT_BUBBLE_MEDIA_QUERY } from "../responsive.js";
3
4
  import { useUser } from "../../../store/users/useUserStore.js";
@@ -29,7 +30,7 @@ var FooterAction = ({ children, label, onPress }) => {
29
30
  })]
30
31
  });
31
32
  };
32
- var CompactActions = ({ showAI, showControlCenter, onControlCenter, showNotifications, notificationCount = 0, onAI, onNotificationsClick }) => {
33
+ var CompactActions = ({ showAI, showControlCenter, onControlCenter, showNotifications, notificationCount = 0, onTamizhi, onNotificationsClick }) => {
33
34
  if (!showAI && !showNotifications && !showControlCenter) return null;
34
35
  return /* @__PURE__ */ jsxs(Dropdown, { children: [/* @__PURE__ */ jsx(Dropdown.Trigger, {
35
36
  "aria-label": "Open footer actions",
@@ -67,7 +68,7 @@ var CompactActions = ({ showAI, showControlCenter, onControlCenter, showNotifica
67
68
  ]
68
69
  }) : null,
69
70
  showAI ? /* @__PURE__ */ jsxs(Dropdown.Item, {
70
- onPress: onAI,
71
+ onPress: onTamizhi,
71
72
  children: [/* @__PURE__ */ jsx(VezhamTamizhi, {
72
73
  size: 20,
73
74
  "aria-hidden": "true"
@@ -76,8 +77,9 @@ var CompactActions = ({ showAI, showControlCenter, onControlCenter, showNotifica
76
77
  ]
77
78
  }) })] });
78
79
  };
79
- var Footer = ({ user, showAI = false, showControlCenter = false, controlCenter, showNotifications = false, showUserInfo = true, notificationCount = 0, onAI, onNotificationsClick, onUserClick, toolbarAction, className }) => {
80
+ var Footer = ({ user, showAI = false, showControlCenter = false, controlCenter, showNotifications = false, showUserInfo = true, hideSeparator = false, notificationCount = 0, onTamizhi, onNotificationsClick, toolbarAction, className }) => {
80
81
  const { clearUser } = useUser();
82
+ const openSettings = useSettingsNavigation();
81
83
  const compact = useMediaQuery(ACCOUNT_BUBBLE_MEDIA_QUERY, { initializeWithValue: false });
82
84
  const [controlCenterOpen, setControlCenterOpen] = useState(false);
83
85
  const controlCenterContext = useMemo(() => ({
@@ -85,7 +87,7 @@ var Footer = ({ user, showAI = false, showControlCenter = false, controlCenter,
85
87
  isOpen: controlCenterOpen,
86
88
  onOpenChange: setControlCenterOpen
87
89
  }), [compact, controlCenterOpen]);
88
- return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(Separator, { className: "hidden md:block" }), /* @__PURE__ */ jsxs(Surface, {
90
+ return /* @__PURE__ */ jsxs(Fragment$1, { children: [!hideSeparator && /* @__PURE__ */ jsx(Separator, { className: "hidden md:block" }), /* @__PURE__ */ jsxs(Surface, {
89
91
  variant: "transparent",
90
92
  className: `flex items-center justify-center gap-2 md:flex-col md:gap-3 ${className ?? ""}`,
91
93
  children: [
@@ -93,7 +95,7 @@ var Footer = ({ user, showAI = false, showControlCenter = false, controlCenter,
93
95
  className: "hidden md:contents",
94
96
  children: [showAI ? /* @__PURE__ */ jsx(FooterAction, {
95
97
  label: "Tamizhi AI",
96
- onPress: onAI,
98
+ onPress: onTamizhi,
97
99
  children: /* @__PURE__ */ jsx(VezhamTamizhi, {
98
100
  size: 20,
99
101
  "aria-hidden": "true"
@@ -123,11 +125,11 @@ var Footer = ({ user, showAI = false, showControlCenter = false, controlCenter,
123
125
  showControlCenter,
124
126
  showNotifications,
125
127
  notificationCount,
126
- onAI,
128
+ onTamizhi,
127
129
  onControlCenter: () => setControlCenterOpen(true),
128
130
  onNotifications: onNotificationsClick,
129
- onProfile: () => onUserClick?.(user, "profiles"),
130
- onPreferences: () => onUserClick?.(user, "account"),
131
+ onProfile: () => openSettings?.("Account"),
132
+ onPreferences: () => openSettings?.("Account"),
131
133
  onLogout: clearUser
132
134
  }) : /* @__PURE__ */ jsx("div", {
133
135
  className: "md:hidden",
@@ -137,7 +139,7 @@ var Footer = ({ user, showAI = false, showControlCenter = false, controlCenter,
137
139
  showAI,
138
140
  showNotifications,
139
141
  notificationCount,
140
- onAI,
142
+ onTamizhi,
141
143
  onNotificationsClick
142
144
  })
143
145
  }),
@@ -44,7 +44,7 @@ var NotificationDrawer = forwardRef((props, ref) => {
44
44
  size: "sm",
45
45
  ...getEditButtonProps(),
46
46
  onPress: handleEdit,
47
- children: "Widget Center"
47
+ children: "Edit Widgets"
48
48
  });
49
49
  if (compact) return /* @__PURE__ */ jsx(InfoPanelSheet, {
50
50
  isOpen,
@@ -0,0 +1,3 @@
1
+ import type { InfoPanelDefinition } from '../../info-panel';
2
+ export declare const tamizhiPanel: InfoPanelDefinition;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/components/panel/footer/tamizhi/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAG3D,eAAO,MAAM,YAAY,EAAE,mBAO1B,CAAA"}
@@ -0,0 +1,20 @@
1
+ import { InfoPanelSheet } from "../../info-panel/sheet.js";
2
+ import { TamizhiEmbed } from "@vezham/tamizhi-ui";
3
+ import { jsx } from "react/jsx-runtime";
4
+ import { VezhamTamizhi } from "@vezham/icons-react";
5
+ //#region src/lib/components/panel/footer/tamizhi/index.tsx
6
+ var tamizhiPanel = {
7
+ title: "Tamizhi AI",
8
+ titleIcon: /* @__PURE__ */ jsx(VezhamTamizhi, {
9
+ size: 20,
10
+ "aria-hidden": "true"
11
+ }),
12
+ scrollable: false,
13
+ content: /* @__PURE__ */ jsx(TamizhiEmbed, {}),
14
+ renderCompact: ({ isOpen, onClose }) => isOpen ? /* @__PURE__ */ jsx(InfoPanelSheet, {
15
+ onClose,
16
+ panel: tamizhiPanel
17
+ }) : null
18
+ };
19
+ //#endregion
20
+ export { tamizhiPanel };
@@ -21,7 +21,6 @@ export interface StatusTimingOption {
21
21
  id: string;
22
22
  label: string;
23
23
  }
24
- export type UserSettingsEntryPoint = 'account' | 'profiles';
25
24
  export interface FooterActionsProps {
26
25
  user: UserInfo;
27
26
  showAI?: boolean;
@@ -29,10 +28,10 @@ export interface FooterActionsProps {
29
28
  controlCenter?: ReactElement;
30
29
  showNotifications?: boolean;
31
30
  showUserInfo?: boolean;
31
+ hideSeparator?: boolean;
32
32
  notificationCount?: number;
33
- onAI?: () => void;
33
+ onTamizhi?: () => void;
34
34
  onNotificationsClick?: () => void;
35
- onUserClick?: (user: UserInfo, entryPoint?: UserSettingsEntryPoint) => void;
36
35
  toolbarAction?: ReactNode;
37
36
  className?: string;
38
37
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/lib/components/panel/footer/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEpD,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAA;AAEpE,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,UAAU,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,MAAM,sBAAsB,GAAG,SAAS,GAAG,UAAU,CAAA;AAE3D,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,QAAQ,CAAA;IAEd,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,aAAa,CAAC,EAAE,YAAY,CAAA;IAC5B,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,YAAY,CAAC,EAAE,OAAO,CAAA;IAEtB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAE1B,IAAI,CAAC,EAAE,MAAM,IAAI,CAAA;IACjB,oBAAoB,CAAC,EAAE,MAAM,IAAI,CAAA;IACjC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,CAAC,EAAE,sBAAsB,KAAK,IAAI,CAAA;IAE3E,aAAa,CAAC,EAAE,SAAS,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/lib/components/panel/footer/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEpD,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAA;AAEpE,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,UAAU,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,QAAQ,CAAA;IAEd,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,aAAa,CAAC,EAAE,YAAY,CAAA;IAC5B,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,aAAa,CAAC,EAAE,OAAO,CAAA;IAEvB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAE1B,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,oBAAoB,CAAC,EAAE,MAAM,IAAI,CAAA;IAEjC,aAAa,CAAC,EAAE,SAAS,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB"}
@@ -8,10 +8,10 @@ type Props = {
8
8
  showControlCenter?: boolean;
9
9
  showNotifications?: boolean;
10
10
  notificationCount?: number;
11
- onAI?: () => void;
11
+ onTamizhi?: () => void;
12
12
  onControlCenter?: () => void;
13
13
  onNotifications?: () => void;
14
14
  };
15
- declare const UserMenu: ({ user, onLogout, onProfile, onPreferences, showAI, showControlCenter, showNotifications, notificationCount, onAI, onControlCenter, onNotifications }: Props) => import("react").JSX.Element;
15
+ declare const UserMenu: ({ user, onLogout, onProfile, onPreferences, showAI, showControlCenter, showNotifications, notificationCount, onTamizhi, onControlCenter, onNotifications }: Props) => import("react").JSX.Element;
16
16
  export { UserMenu };
17
17
  //# sourceMappingURL=user-menu.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"user-menu.d.ts","sourceRoot":"","sources":["../../../../../src/lib/components/panel/footer/user-menu.tsx"],"names":[],"mappings":"AAiCA,OAAO,KAAK,EAGV,QAAQ,EAGT,MAAM,SAAS,CAAA;AAEhB,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,QAAQ,CAAA;IACd,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,aAAa,CAAC,EAAE,MAAM,IAAI,CAAA;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,IAAI,CAAC,EAAE,MAAM,IAAI,CAAA;IACjB,eAAe,CAAC,EAAE,MAAM,IAAI,CAAA;IAC5B,eAAe,CAAC,EAAE,MAAM,IAAI,CAAA;CAC7B,CAAA;AA4XD,QAAA,MAAM,QAAQ,GAAI,uJAYf,KAAK,gCA6GP,CAAA;AAED,OAAO,EAAE,QAAQ,EAAE,CAAA"}
1
+ {"version":3,"file":"user-menu.d.ts","sourceRoot":"","sources":["../../../../../src/lib/components/panel/footer/user-menu.tsx"],"names":[],"mappings":"AA6CA,OAAO,KAAK,EAGV,QAAQ,EAGT,MAAM,SAAS,CAAA;AAEhB,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,QAAQ,CAAA;IACd,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,aAAa,CAAC,EAAE,MAAM,IAAI,CAAA;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,eAAe,CAAC,EAAE,MAAM,IAAI,CAAA;IAC5B,eAAe,CAAC,EAAE,MAAM,IAAI,CAAA;CAC7B,CAAA;AAgdD,QAAA,MAAM,QAAQ,GAAI,4JAYf,KAAK,gCA+IP,CAAA;AAED,OAAO,EAAE,QAAQ,EAAE,CAAA"}