@vezham/react 26.1.0 → 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 (140) 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 +10 -8
  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 +1 -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/index.d.ts +6 -3
  45. package/dist/lib/layouts/app/index.d.ts.map +1 -1
  46. package/dist/lib/layouts/app/index.js +36 -6
  47. package/dist/lib/layouts/menu-layout/home-navigation-bubble.js +3 -3
  48. package/dist/lib/layouts/menu-layout/index-md.d.ts.map +1 -1
  49. package/dist/lib/layouts/menu-layout/index-md.js +13 -27
  50. package/dist/lib/layouts/menu-layout/index-sm.d.ts.map +1 -1
  51. package/dist/lib/layouts/menu-layout/index-sm.js +7 -19
  52. package/dist/lib/layouts/section/toolbar.js +1 -1
  53. package/dist/lib/pages/settings/settings-content.d.ts.map +1 -1
  54. package/dist/lib/pages/settings/settings-content.js +14 -26
  55. package/dist/lib/workspace/action-dialog.d.ts +9 -0
  56. package/dist/lib/workspace/action-dialog.d.ts.map +1 -0
  57. package/dist/lib/workspace/action-dialog.js +86 -0
  58. package/dist/lib/workspace/actions-menu.d.ts +8 -0
  59. package/dist/lib/workspace/actions-menu.d.ts.map +1 -0
  60. package/dist/lib/workspace/actions-menu.js +47 -0
  61. package/dist/lib/workspace/create-dialog.d.ts +5 -0
  62. package/dist/lib/workspace/create-dialog.d.ts.map +1 -0
  63. package/dist/lib/workspace/create-dialog.js +108 -0
  64. package/dist/lib/workspace/index.d.ts +34 -0
  65. package/dist/lib/workspace/index.d.ts.map +1 -0
  66. package/dist/lib/workspace/index.js +128 -0
  67. package/dist/lib/workspace/menu.d.ts +18 -0
  68. package/dist/lib/workspace/menu.d.ts.map +1 -0
  69. package/dist/lib/workspace/menu.js +148 -0
  70. package/dist/lib/workspace/model.d.ts +17 -0
  71. package/dist/lib/workspace/model.d.ts.map +1 -0
  72. package/dist/lib/workspace/model.js +35 -0
  73. package/package.json +3 -2
  74. package/dist/lib/components/command/index.js +0 -3
  75. package/dist/lib/components/panel/footer/ai/chat-header.d.ts +0 -9
  76. package/dist/lib/components/panel/footer/ai/chat-header.d.ts.map +0 -1
  77. package/dist/lib/components/panel/footer/ai/chat-header.js +0 -63
  78. package/dist/lib/components/panel/footer/ai/composer.d.ts +0 -7
  79. package/dist/lib/components/panel/footer/ai/composer.d.ts.map +0 -1
  80. package/dist/lib/components/panel/footer/ai/composer.js +0 -77
  81. package/dist/lib/components/panel/footer/ai/content.d.ts +0 -13
  82. package/dist/lib/components/panel/footer/ai/content.d.ts.map +0 -1
  83. package/dist/lib/components/panel/footer/ai/content.js +0 -148
  84. package/dist/lib/components/panel/footer/ai/conversation.d.ts +0 -47
  85. package/dist/lib/components/panel/footer/ai/conversation.d.ts.map +0 -1
  86. package/dist/lib/components/panel/footer/ai/conversation.js +0 -222
  87. package/dist/lib/components/panel/footer/ai/index.d.ts +0 -3
  88. package/dist/lib/components/panel/footer/ai/index.d.ts.map +0 -1
  89. package/dist/lib/components/panel/footer/ai/index.js +0 -41
  90. package/dist/lib/components/panel/footer/ai/message-actions.d.ts +0 -8
  91. package/dist/lib/components/panel/footer/ai/message-actions.d.ts.map +0 -1
  92. package/dist/lib/components/panel/footer/ai/message-actions.js +0 -63
  93. package/dist/lib/components/panel/footer/ai/mock-result.d.ts +0 -6
  94. package/dist/lib/components/panel/footer/ai/mock-result.d.ts.map +0 -1
  95. package/dist/lib/components/panel/footer/ai/mock-result.js +0 -121
  96. package/dist/lib/components/panel/footer/ai/model-logo.d.ts +0 -5
  97. package/dist/lib/components/panel/footer/ai/model-logo.d.ts.map +0 -1
  98. package/dist/lib/components/panel/footer/ai/model-logo.js +0 -13
  99. package/dist/lib/components/panel/footer/ai/model-logos.d.ts +0 -2
  100. package/dist/lib/components/panel/footer/ai/model-logos.d.ts.map +0 -1
  101. package/dist/lib/components/panel/footer/ai/model-logos.js +0 -10
  102. package/dist/lib/components/panel/footer/ai/model-picker.d.ts +0 -8
  103. package/dist/lib/components/panel/footer/ai/model-picker.d.ts.map +0 -1
  104. package/dist/lib/components/panel/footer/ai/model-picker.js +0 -166
  105. package/dist/lib/components/panel/footer/ai/models.d.ts +0 -9
  106. package/dist/lib/components/panel/footer/ai/models.d.ts.map +0 -1
  107. package/dist/lib/components/panel/footer/ai/models.js +0 -72
  108. package/dist/lib/components/panel/footer/ai/permission-picker.d.ts +0 -5
  109. package/dist/lib/components/panel/footer/ai/permission-picker.d.ts.map +0 -1
  110. package/dist/lib/components/panel/footer/ai/permission-picker.js +0 -63
  111. package/dist/lib/components/panel/footer/ai/use-chat-scroll.d.ts +0 -9
  112. package/dist/lib/components/panel/footer/ai/use-chat-scroll.d.ts.map +0 -1
  113. package/dist/lib/components/panel/footer/ai/use-chat-scroll.js +0 -57
  114. package/dist/lib/components/panel/footer/preferences/data.d.ts +0 -14
  115. package/dist/lib/components/panel/footer/preferences/data.d.ts.map +0 -1
  116. package/dist/lib/components/panel/footer/preferences/data.js +0 -304
  117. package/dist/lib/components/panel/footer/preferences/modal.d.ts +0 -8
  118. package/dist/lib/components/panel/footer/preferences/modal.d.ts.map +0 -1
  119. package/dist/lib/components/panel/footer/preferences/modal.js +0 -75
  120. package/dist/lib/components/panel/footer/preferences/sidebar.d.ts +0 -9
  121. package/dist/lib/components/panel/footer/preferences/sidebar.d.ts.map +0 -1
  122. package/dist/lib/components/panel/footer/preferences/sidebar.js +0 -105
  123. package/dist/lib/components/panel/footer/preferences/user-settings/account/index.d.ts +0 -3
  124. package/dist/lib/components/panel/footer/preferences/user-settings/account/index.d.ts.map +0 -1
  125. package/dist/lib/components/panel/footer/preferences/user-settings/account/index.js +0 -16
  126. package/dist/lib/components/panel/footer/preferences/user-settings/content-social/index.d.ts +0 -3
  127. package/dist/lib/components/panel/footer/preferences/user-settings/content-social/index.d.ts.map +0 -1
  128. package/dist/lib/components/panel/footer/preferences/user-settings/content-social/index.js +0 -16
  129. package/dist/lib/components/panel/footer/preferences/user-settings/data-privacy/index.d.ts +0 -3
  130. package/dist/lib/components/panel/footer/preferences/user-settings/data-privacy/index.d.ts.map +0 -1
  131. package/dist/lib/components/panel/footer/preferences/user-settings/data-privacy/index.js +0 -101
  132. package/dist/lib/components/panel/footer/preferences/user-settings/family-center/index.d.ts +0 -3
  133. package/dist/lib/components/panel/footer/preferences/user-settings/family-center/index.d.ts.map +0 -1
  134. package/dist/lib/components/panel/footer/preferences/user-settings/family-center/index.js +0 -24
  135. package/dist/lib/components/panel/footer/preferences/user-settings/profiles/index.d.ts +0 -3
  136. package/dist/lib/components/panel/footer/preferences/user-settings/profiles/index.d.ts.map +0 -1
  137. package/dist/lib/components/panel/footer/preferences/user-settings/profiles/index.js +0 -103
  138. package/dist/lib/components/panel/footer/tabs.d.ts +0 -12
  139. package/dist/lib/components/panel/footer/tabs.d.ts.map +0 -1
  140. package/dist/lib/components/panel/footer/tabs.js +0 -23
@@ -1,4 +1,5 @@
1
- import { createContext, useCallback, useContext, useEffect, useMemo, useState } from "react";
1
+ import { createContext, useCallback, useContext, useMemo } from "react";
2
+ import { useLocalStore } from "@vezham/hooks";
2
3
  import { jsx } from "react/jsx-runtime";
3
4
  import { useHotkey } from "@tanstack/react-hotkeys";
4
5
  //#region src/lib/components/panel/info-panel/provider.tsx
@@ -7,57 +8,42 @@ var STORAGE_KEY = "vx-app:info-panel";
7
8
  var VALID_INFO_PANELS = [
8
9
  "bookmarks",
9
10
  "storage",
10
- "ai"
11
+ "tamizhi"
11
12
  ];
12
13
  var isInfoPanel = (panel) => typeof panel === "string" && VALID_INFO_PANELS.includes(panel);
13
- var readStoredInfoPanelState = () => {
14
- if (typeof window === "undefined") return {
15
- activeInfoPanel: null,
16
- isOpen: false
14
+ var INITIAL_PANEL_STATE = {
15
+ activeInfoPanel: null,
16
+ isOpen: false
17
+ };
18
+ var parsePanelState = (value) => {
19
+ if (!value || typeof value !== "object") return INITIAL_PANEL_STATE;
20
+ const parsedValue = value;
21
+ const storedPanel = parsedValue.activeInfoPanel;
22
+ const activeInfoPanel = isInfoPanel(storedPanel) ? storedPanel : null;
23
+ return {
24
+ activeInfoPanel,
25
+ isOpen: Boolean(parsedValue.isOpen && activeInfoPanel)
17
26
  };
18
- try {
19
- const storedValue = window.localStorage.getItem(STORAGE_KEY);
20
- if (!storedValue) return {
21
- activeInfoPanel: null,
22
- isOpen: false
23
- };
24
- const parsedValue = JSON.parse(storedValue);
25
- const storedPanel = parsedValue.activeInfoPanel;
26
- const migratedPanel = storedPanel === "disc" ? "storage" : storedPanel;
27
- const activeInfoPanel = isInfoPanel(migratedPanel) ? migratedPanel : null;
28
- return {
29
- activeInfoPanel,
30
- isOpen: Boolean(parsedValue.isOpen && activeInfoPanel)
31
- };
32
- } catch {
33
- return {
34
- activeInfoPanel: null,
35
- isOpen: false
36
- };
37
- }
38
27
  };
39
28
  var InfoPanelProvider = ({ children }) => {
40
- const [state, setState] = useState(readStoredInfoPanelState);
29
+ const { value: state, setValue: setState } = useLocalStore(STORAGE_KEY, INITIAL_PANEL_STATE, { parse: parsePanelState });
41
30
  const { activeInfoPanel, isOpen } = state;
42
- useEffect(() => {
43
- window.localStorage.setItem(STORAGE_KEY, JSON.stringify(state));
44
- }, [state]);
45
31
  const setActiveInfoPanel = useCallback((panel) => {
46
32
  setState({
47
33
  activeInfoPanel: panel,
48
34
  isOpen: Boolean(panel)
49
35
  });
50
- }, []);
36
+ }, [setState]);
51
37
  const openInfoPanel = useCallback((panel) => setState({
52
38
  activeInfoPanel: panel,
53
39
  isOpen: true
54
- }), []);
40
+ }), [setState]);
55
41
  const closeInfoPanel = useCallback(() => {
56
42
  setState((current) => ({
57
43
  ...current,
58
44
  isOpen: false
59
45
  }));
60
- }, []);
46
+ }, [setState]);
61
47
  const toggleInfoPanel = useCallback((panel) => {
62
48
  setState((current) => current.activeInfoPanel === panel && current.isOpen ? {
63
49
  ...current,
@@ -66,7 +52,7 @@ var InfoPanelProvider = ({ children }) => {
66
52
  activeInfoPanel: panel,
67
53
  isOpen: true
68
54
  });
69
- }, []);
55
+ }, [setState]);
70
56
  useHotkey("Mod+Shift+B", () => toggleInfoPanel("bookmarks"), {
71
57
  preventDefault: true,
72
58
  ignoreInputs: true
@@ -1,5 +1,5 @@
1
1
  import { ReactNode } from 'react';
2
- export type ActiveInfoPanel = 'bookmarks' | 'storage' | 'ai' | null;
2
+ export type ActiveInfoPanel = 'bookmarks' | 'storage' | 'tamizhi' | null;
3
3
  export interface InfoPanelContextValue {
4
4
  activeInfoPanel: ActiveInfoPanel;
5
5
  isOpen: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/lib/components/panel/info-panel/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEjC,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG,SAAS,GAAG,IAAI,GAAG,IAAI,CAAA;AAEnE,MAAM,WAAW,qBAAqB;IACpC,eAAe,EAAE,eAAe,CAAA;IAChC,MAAM,EAAE,OAAO,CAAA;IACf,kBAAkB,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAA;IACpD,aAAa,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,eAAe,EAAE,IAAI,CAAC,KAAK,IAAI,CAAA;IAC9D,cAAc,EAAE,MAAM,IAAI,CAAA;IAC1B,eAAe,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,eAAe,EAAE,IAAI,CAAC,KAAK,IAAI,CAAA;CACjE;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,OAAO,EAAE,SAAS,CAAA;IAClB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,IAAI,CAAA;KAAE,KAAK,SAAS,CAAA;CAC/E"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/lib/components/panel/info-panel/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEjC,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,IAAI,CAAA;AAExE,MAAM,WAAW,qBAAqB;IACpC,eAAe,EAAE,eAAe,CAAA;IAChC,MAAM,EAAE,OAAO,CAAA;IACf,kBAAkB,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAA;IACpD,aAAa,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,eAAe,EAAE,IAAI,CAAC,KAAK,IAAI,CAAA;IAC9D,cAAc,EAAE,MAAM,IAAI,CAAA;IAC1B,eAAe,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,eAAe,EAAE,IAAI,CAAC,KAAK,IAAI,CAAA;CACjE;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,OAAO,EAAE,SAAS,CAAA;IAClB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,IAAI,CAAA;KAAE,KAAK,SAAS,CAAA;CAC/E"}
@@ -50,13 +50,13 @@ var Menu = forwardRef((props, ref) => {
50
50
  return /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsxs("button", {
51
51
  type: "button",
52
52
  onClick: () => handleDrawerItemClick(item),
53
- className: cn("flex w-full cursor-pointer items-center gap-3 rounded-lg border-0 bg-transparent px-4 py-2.5 text-left transition-all duration-200", "hover:bg-default-100", !hasSubmenu && selectedKey === item.key && "bg-primary/10 text-primary"),
53
+ className: cn("flex w-full cursor-pointer items-center gap-3 rounded-lg border-0 bg-transparent px-4 py-2.5 text-left transition-all duration-200", "hover:bg-default", !hasSubmenu && selectedKey === item.key && "bg-accent/10 text-accent"),
54
54
  style: { paddingLeft: `${paddingLeft}px` },
55
55
  children: [
56
56
  item.icon && /* @__PURE__ */ jsx(AppIcon, {
57
57
  icon: item.icon,
58
58
  size: 18,
59
- className: "text-default-600",
59
+ className: "text-muted",
60
60
  "aria-hidden": "true"
61
61
  }),
62
62
  /* @__PURE__ */ jsx("span", {
@@ -66,7 +66,7 @@ var Menu = forwardRef((props, ref) => {
66
66
  hasSubmenu && /* @__PURE__ */ jsx(AppIcon, {
67
67
  icon: isExpanded ? "vx:chevron-down" : "vx:chevron-right",
68
68
  size: 16,
69
- className: "text-default-400 transition-transform duration-200",
69
+ className: "text-muted transition-transform duration-200",
70
70
  "aria-hidden": "true"
71
71
  })
72
72
  ]
@@ -133,7 +133,7 @@ var Menu = forwardRef((props, ref) => {
133
133
  children: [
134
134
  /* @__PURE__ */ jsx(Drawer.CloseTrigger, {}),
135
135
  /* @__PURE__ */ jsx("div", {
136
- className: "border-default-200 flex items-center justify-between border-b p-4",
136
+ className: "border-border flex items-center justify-between border-b p-4",
137
137
  children: /* @__PURE__ */ jsx(Drawer.Header, {
138
138
  className: "text-lg font-semibold",
139
139
  children: currentTitle
@@ -21,8 +21,8 @@ var tva = tv({
21
21
  label: "text-muted"
22
22
  },
23
23
  primary: {
24
- icon: "text-primary",
25
- label: "text-primary font-medium"
24
+ icon: "text-accent",
25
+ label: "text-accent font-medium"
26
26
  },
27
27
  muted: {
28
28
  icon: "text-muted-foreground",
@@ -86,8 +86,8 @@ var tva = tv({
86
86
  {
87
87
  variant: "primary",
88
88
  class: {
89
- icon: "data-[active=true]:text-primary",
90
- label: "data-[active=true]:text-primary data-[active=true]:font-medium"
89
+ icon: "data-[active=true]:text-accent",
90
+ label: "data-[active=true]:text-accent data-[active=true]:font-medium"
91
91
  }
92
92
  },
93
93
  {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/workspace-navigation/index.tsx"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,SAAS,EAQf,MAAM,OAAO,CAAA;AAKd,KAAK,oBAAoB,GAAG;IAC1B,MAAM,EAAE,OAAO,CAAA;IACf,QAAQ,EAAE,MAAM,IAAI,CAAA;CACrB,CAAA;AAED,KAAK,+BAA+B,GAAG;IACrC,qBAAqB,EAAE,OAAO,CAAA;IAC9B,gBAAgB,EAAE,MAAM,IAAI,CAAA;IAC5B,uBAAuB,EAAE,CAAC,OAAO,EAAE,MAAM,IAAI,KAAK,MAAM,IAAI,CAAA;IAC5D,aAAa,EAAE,oBAAoB,GAAG,IAAI,CAAA;IAC1C,qBAAqB,EAAE,CAAC,OAAO,EAAE,oBAAoB,KAAK,MAAM,IAAI,CAAA;CACrE,CAAA;AAKD;;;;GAIG;AACH,QAAA,MAAM,2BAA2B,GAAI,cAAc;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,gCAwDzE,CAAA;AAED,OAAO,EAAE,2BAA2B,EAAE,CAAA;AAEtC,eAAO,MAAM,sBAAsB,uCAUlC,CAAA;AAED,eAAO,MAAM,kBAAkB,GAAI,SAAS,MAAM,IAAI,EAAE,iBAAc,SAMrE,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/workspace-navigation/index.tsx"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,SAAS,EAQf,MAAM,OAAO,CAAA;AAMd,KAAK,oBAAoB,GAAG;IAC1B,MAAM,EAAE,OAAO,CAAA;IACf,QAAQ,EAAE,MAAM,IAAI,CAAA;CACrB,CAAA;AAED,KAAK,+BAA+B,GAAG;IACrC,qBAAqB,EAAE,OAAO,CAAA;IAC9B,gBAAgB,EAAE,MAAM,IAAI,CAAA;IAC5B,uBAAuB,EAAE,CAAC,OAAO,EAAE,MAAM,IAAI,KAAK,MAAM,IAAI,CAAA;IAC5D,aAAa,EAAE,oBAAoB,GAAG,IAAI,CAAA;IAC1C,qBAAqB,EAAE,CAAC,OAAO,EAAE,oBAAoB,KAAK,MAAM,IAAI,CAAA;CACrE,CAAA;AAKD;;;;GAIG;AACH,QAAA,MAAM,2BAA2B,GAAI,cAAc;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,gCAwDzE,CAAA;AAED,OAAO,EAAE,2BAA2B,EAAE,CAAA;AAEtC,eAAO,MAAM,sBAAsB,uCAUlC,CAAA;AAED,eAAO,MAAM,kBAAkB,GAAI,SAAS,MAAM,IAAI,EAAE,iBAAc,SAMrE,CAAA"}
@@ -1,6 +1,6 @@
1
- import { useCommand } from "../command/index.js";
2
1
  import { useInfoPanel } from "../panel/info-panel/provider.js";
3
2
  import { createContext, useCallback, useContext, useEffect, useMemo, useRef, useState } from "react";
3
+ import { useCommand } from "@vezham/hooks";
4
4
  import { jsx } from "react/jsx-runtime";
5
5
  import { useHotkey } from "@tanstack/react-hotkeys";
6
6
  //#region src/lib/components/workspace-navigation/index.tsx
@@ -1,10 +1,13 @@
1
1
  import { type ReactElement, type ReactNode } from 'react';
2
+ import { type TamizhiSessionProviderProps } from '@vezham/tamizhi-ui';
2
3
  import { type AppMenuItem } from '../../components/app-menu';
3
4
  import type { ControlCenterConfig, ControlCenterI18n } from '../../components/panel/footer/control-center/types';
4
5
  import type { AppNavigationItem } from '../../navigation';
5
6
  import { type User } from '../../store/users/useUserStore';
6
7
  import { type AppFrameProps } from './frame';
7
- export type AppLayoutProps = Omit<AppFrameProps, 'navigation' | 'children' | 'hasBottomNavigation'> & {
8
+ export type AppLayoutProps = {
9
+ tamizhi?: Pick<TamizhiSessionProviderProps, 'client' | 'appId' | 'profiles'>;
10
+ } & Omit<AppFrameProps, 'navigation' | 'children' | 'hasBottomNavigation'> & {
8
11
  children?: ReactNode;
9
12
  navigationItems: AppNavigationItem[];
10
13
  appMenu?: AppMenuItem[];
@@ -18,9 +21,9 @@ type AppLayoutViewProps = Omit<AppFrameProps, 'navigation' | 'hasBottomNavigatio
18
21
  navigationItems: AppNavigationItem[];
19
22
  controlCenterSlot?: ReactElement;
20
23
  };
21
- export declare const AppLayoutProviders: ({ children, navigationItems, appMenu, user }: Pick<AppLayoutProps, "children" | "navigationItems" | "appMenu" | "user">) => import("react").JSX.Element;
24
+ export declare const AppLayoutProviders: ({ children, navigationItems, appMenu, user, tamizhi }: Pick<AppLayoutProps, "children" | "navigationItems" | "appMenu" | "user" | "tamizhi">) => import("react").JSX.Element;
22
25
  export declare const AppLayoutView: ({ children, navigationItems, controlCenterSlot, ...frameProps }: AppLayoutViewProps) => import("react").JSX.Element;
23
- declare const AppLayout: ({ children, navigationItems, appMenu, user, settings, controlCenter, controlCenterSlot, i18n, ...frameProps }: AppLayoutProps) => import("react").JSX.Element;
26
+ declare const AppLayout: ({ children, navigationItems, appMenu, user, settings, controlCenter, controlCenterSlot, tamizhi, i18n, ...frameProps }: AppLayoutProps) => import("react").JSX.Element;
24
27
  export { AppLayout };
25
28
  export { AppFrame } from './frame';
26
29
  export type { AppFrameProps } from './frame';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/layouts/app/index.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,SAAS,EAAe,MAAM,OAAO,CAAA;AAItE,OAAO,EAAE,KAAK,WAAW,EAAmB,MAAM,2BAA2B,CAAA;AAI7E,OAAO,KAAK,EACV,mBAAmB,EACnB,iBAAiB,EAClB,MAAM,oDAAoD,CAAA;AAQ3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAMzD,OAAO,EAAE,KAAK,IAAI,EAAgB,MAAM,gCAAgC,CAAA;AAGxE,OAAO,EAAY,KAAK,aAAa,EAAE,MAAM,SAAS,CAAA;AAEtD,MAAM,MAAM,cAAc,GAAG,IAAI,CAC/B,aAAa,EACb,YAAY,GAAG,UAAU,GAAG,qBAAqB,CAClD,GAAG;IACF,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,eAAe,EAAE,iBAAiB,EAAE,CAAA;IACpC,OAAO,CAAC,EAAE,WAAW,EAAE,CAAA;IACvB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,aAAa,CAAC,EAAE,mBAAmB,CAAA;IACnC,iBAAiB,CAAC,EAAE,YAAY,CAAA;IAChC,IAAI,CAAC,EAAE,iBAAiB,CAAA;CACzB,CAAA;AAED,KAAK,kBAAkB,GAAG,IAAI,CAC5B,aAAa,EACb,YAAY,GAAG,qBAAqB,CACrC,GAAG;IACF,eAAe,EAAE,iBAAiB,EAAE,CAAA;IACpC,iBAAiB,CAAC,EAAE,YAAY,CAAA;CACjC,CAAA;AAED,eAAO,MAAM,kBAAkB,GAAI,8CAKhC,IAAI,CACL,cAAc,EACd,UAAU,GAAG,iBAAiB,GAAG,SAAS,GAAG,MAAM,CACpD,gCAkBA,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,iEAK3B,kBAAkB,gCASpB,CAAA;AAED,QAAA,MAAM,SAAS,GAAI,+GAUhB,cAAc,gCA2ChB,CAAA;AA+BD,OAAO,EAAE,SAAS,EAAE,CAAA;AACpB,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAClC,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/layouts/app/index.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,SAAS,EAAe,MAAM,OAAO,CAAA;AAItE,OAAO,EAEL,KAAK,2BAA2B,EACjC,MAAM,oBAAoB,CAAA;AAE3B,OAAO,EAAE,KAAK,WAAW,EAAmB,MAAM,2BAA2B,CAAA;AAI7E,OAAO,KAAK,EACV,mBAAmB,EACnB,iBAAiB,EAClB,MAAM,oDAAoD,CAAA;AAQ3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAMzD,OAAO,EACL,KAAK,IAAI,EAGV,MAAM,gCAAgC,CAAA;AAKvC,OAAO,EAAY,KAAK,aAAa,EAAE,MAAM,SAAS,CAAA;AAEtD,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,CAAC,EAAE,IAAI,CAAC,2BAA2B,EAAE,QAAQ,GAAG,OAAO,GAAG,UAAU,CAAC,CAAA;CAC7E,GAAG,IAAI,CAAC,aAAa,EAAE,YAAY,GAAG,UAAU,GAAG,qBAAqB,CAAC,GAAG;IACzE,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,eAAe,EAAE,iBAAiB,EAAE,CAAA;IACpC,OAAO,CAAC,EAAE,WAAW,EAAE,CAAA;IACvB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,aAAa,CAAC,EAAE,mBAAmB,CAAA;IACnC,iBAAiB,CAAC,EAAE,YAAY,CAAA;IAChC,IAAI,CAAC,EAAE,iBAAiB,CAAA;CACzB,CAAA;AAEH,KAAK,kBAAkB,GAAG,IAAI,CAC5B,aAAa,EACb,YAAY,GAAG,qBAAqB,CACrC,GAAG;IACF,eAAe,EAAE,iBAAiB,EAAE,CAAA;IACpC,iBAAiB,CAAC,EAAE,YAAY,CAAA;CACjC,CAAA;AAED,eAAO,MAAM,kBAAkB,GAAI,uDAMhC,IAAI,CACL,cAAc,EACd,UAAU,GAAG,iBAAiB,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAChE,gCAsBA,CAAA;AASD,eAAO,MAAM,aAAa,GAAI,iEAK3B,kBAAkB,gCASpB,CAAA;AAED,QAAA,MAAM,SAAS,GAAI,wHAWhB,cAAc,gCA4ChB,CAAA;AA+BD,OAAO,EAAE,SAAS,EAAE,CAAA;AACpB,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAClC,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA"}
@@ -8,26 +8,41 @@ import { InfoPanelProvider } from "../../components/panel/info-panel/provider.js
8
8
  import { ResponsiveToolbarActionProvider } from "../../components/responsive-toolbar-action/index.js";
9
9
  import { WorkspaceNavigationProvider } from "../../components/workspace-navigation/index.js";
10
10
  import { getNavigationPageKey } from "../../navigation.js";
11
- import { UserProvider } from "../../store/users/useUserStore.js";
11
+ import { UserProvider, useUser } from "../../store/users/useUserStore.js";
12
+ import { workspaceDataKey } from "../../workspace/model.js";
13
+ import { WorkspaceProvider, useOptionalWorkspace } from "../../workspace/index.js";
12
14
  import { MenuLayout } from "../menu-layout/index.js";
13
15
  import { AppFrame } from "./frame.js";
14
16
  import { SettingsLayout } from "../settings/index.js";
15
17
  import { Outlet, useLocation, useMatches, useNavigate } from "@tanstack/react-router";
16
18
  import { useCallback } from "react";
19
+ import { useApp } from "@vezham/hooks";
17
20
  import { toast } from "@vezham/react-v3";
21
+ import { TamizhiSessionProvider } from "@vezham/tamizhi-ui";
18
22
  import { jsx } from "react/jsx-runtime";
19
23
  //#region src/lib/layouts/app/index.tsx
20
- var AppLayoutProviders = ({ children, navigationItems, appMenu = [], user }) => /* @__PURE__ */ jsx(ToolbarActionsProvider, { children: /* @__PURE__ */ jsx(AppMenuShell, {
24
+ var AppLayoutProviders = ({ children, navigationItems, appMenu = [], user, tamizhi }) => /* @__PURE__ */ jsx(ToolbarActionsProvider, { children: /* @__PURE__ */ jsx(AppMenuShell, {
21
25
  items: appMenu,
22
26
  navigationItems,
23
- children: /* @__PURE__ */ jsx(UserProvider, {
27
+ children: /* @__PURE__ */ jsx(AppWorkspaces, { children: /* @__PURE__ */ jsx(UserProvider, {
24
28
  initialUser: user,
25
29
  children: /* @__PURE__ */ jsx(CommandProvider, {
26
30
  items: navigationItems,
27
- children: /* @__PURE__ */ jsx(InfoPanelProvider, { children: /* @__PURE__ */ jsx(WorkspaceNavigationProvider, { children: /* @__PURE__ */ jsx(MobileControlsProvider, { children: /* @__PURE__ */ jsx(ResponsiveToolbarActionProvider, { children }) }) }) })
31
+ children: /* @__PURE__ */ jsx(InfoPanelProvider, { children: /* @__PURE__ */ jsx(EmbeddedSession, {
32
+ ...tamizhi,
33
+ children: /* @__PURE__ */ jsx(WorkspaceNavigationProvider, { children: /* @__PURE__ */ jsx(MobileControlsProvider, { children: /* @__PURE__ */ jsx(ResponsiveToolbarActionProvider, { children }) }) })
34
+ }) })
28
35
  })
29
- })
36
+ }) })
30
37
  }) });
38
+ var AppWorkspaces = ({ children }) => {
39
+ const app = useApp();
40
+ if (useOptionalWorkspace() || !app?.id) return children;
41
+ return /* @__PURE__ */ jsx(WorkspaceProvider, {
42
+ appId: app.id,
43
+ children
44
+ });
45
+ };
31
46
  var AppLayoutView = ({ children, navigationItems, controlCenterSlot, ...frameProps }) => /* @__PURE__ */ jsx(AppFrame, {
32
47
  ...frameProps,
33
48
  hasBottomNavigation: navigationItems.length > 1,
@@ -37,7 +52,7 @@ var AppLayoutView = ({ children, navigationItems, controlCenterSlot, ...framePro
37
52
  }),
38
53
  children
39
54
  });
40
- var AppLayout = ({ children, navigationItems, appMenu, user, settings = false, controlCenter, controlCenterSlot, i18n, ...frameProps }) => {
55
+ var AppLayout = ({ children, navigationItems, appMenu, user, settings = false, controlCenter, controlCenterSlot, tamizhi, i18n, ...frameProps }) => {
41
56
  const navigate = useNavigate();
42
57
  const isSettings = useMatches({ select: (matches) => settings && matches.some((match) => match.routeId === "/settings") });
43
58
  const openSettings = useCallback((section) => navigate({
@@ -55,6 +70,7 @@ var AppLayout = ({ children, navigationItems, appMenu, user, settings = false, c
55
70
  navigationItems,
56
71
  appMenu,
57
72
  user,
73
+ tamizhi,
58
74
  children: /* @__PURE__ */ jsx(SettingsNavigationContext.Provider, {
59
75
  value: settings ? openSettings : null,
60
76
  children: isSettings ? /* @__PURE__ */ jsx(SettingsLayout, { children: content }) : /* @__PURE__ */ jsx(AppLayoutView, {
@@ -86,5 +102,19 @@ var AppMenuShell = ({ items, navigationItems, children }) => {
86
102
  children
87
103
  });
88
104
  };
105
+ var EmbeddedSession = ({ children, client, appId, profiles }) => {
106
+ const { user } = useUser();
107
+ const app = useApp();
108
+ const workspace = useOptionalWorkspace();
109
+ const sessionKey = `tamizhi.embed.${user?.id ?? "guest"}.v1`;
110
+ const storageKey = workspace ? workspaceDataKey(workspace.appId, workspace.active.id, sessionKey) : sessionKey;
111
+ return /* @__PURE__ */ jsx(TamizhiSessionProvider, {
112
+ storageKey,
113
+ client,
114
+ appId: appId ?? app?.id,
115
+ profiles,
116
+ children
117
+ }, storageKey);
118
+ };
89
119
  //#endregion
90
120
  export { AppFrame, AppLayout, AppLayoutProviders, AppLayoutView };
@@ -1,4 +1,4 @@
1
- import { Header } from "../../components/panel/header/index.js";
1
+ import { Header as Header$1 } from "../../components/panel/header/index.js";
2
2
  import { Surface } from "@vezham/react-v3";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
  //#region src/lib/layouts/menu-layout/home-navigation-bubble.tsx
@@ -7,8 +7,8 @@ var HomeNavigationBubble = ({ onToggleDock, users }) => {
7
7
  variant: "transparent",
8
8
  role: "group",
9
9
  "aria-label": "Home navigation",
10
- className: "border-default-200 bg-background/90 fixed top-3 left-3 z-40 flex h-[50px] w-fit items-center rounded-full border px-2 py-0 shadow-[0_14px_28px_rgba(15,23,42,0.14)] backdrop-blur-xl",
11
- children: /* @__PURE__ */ jsx(Header, {
10
+ className: "border-border bg-background/90 fixed top-3 left-3 z-40 flex h-[50px] w-fit items-center rounded-full border px-2 py-0 shadow-[0_14px_28px_rgba(15,23,42,0.14)] backdrop-blur-xl",
11
+ children: /* @__PURE__ */ jsx(Header$1, {
12
12
  compact: true,
13
13
  users,
14
14
  isDockHidden: true,
@@ -1 +1 @@
1
- {"version":3,"file":"index-md.d.ts","sourceRoot":"","sources":["../../../../src/lib/layouts/menu-layout/index-md.tsx"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAS9C,QAAA,MAAM,MAAM,GAAI,0BAA0B,eAAe,gCAgFxD,CAAA;AAwGD,OAAO,EAAE,MAAM,EAAE,CAAA"}
1
+ {"version":3,"file":"index-md.d.ts","sourceRoot":"","sources":["../../../../src/lib/layouts/menu-layout/index-md.tsx"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAS9C,QAAA,MAAM,MAAM,GAAI,0BAA0B,eAAe,gCAoExD,CAAA;AAqGD,OAAO,EAAE,MAAM,EAAE,CAAA"}
@@ -1,20 +1,19 @@
1
- import { useCommand } from "../../components/command/index.js";
2
1
  import { useInfoPanel } from "../../components/panel/info-panel/provider.js";
3
2
  import { InfoPanelContainer } from "../../components/panel/info-panel/container.js";
4
3
  import { useSidebarShortcut, useWorkspaceNavigation } from "../../components/workspace-navigation/index.js";
5
4
  import { getSelectedMenuKey } from "../../navigation.js";
6
5
  import { useUser } from "../../store/users/useUserStore.js";
7
6
  import { Footer } from "../../components/panel/footer/index.js";
8
- import { aiPanel } from "../../components/panel/footer/ai/index.js";
9
7
  import { NotificationDrawer } from "../../components/panel/footer/notification-center/index.js";
10
- import { UserInfoModal } from "../../components/panel/footer/preferences/modal.js";
8
+ import { tamizhiPanel } from "../../components/panel/footer/tamizhi/index.js";
11
9
  import { bookmarksPanel } from "../../components/panel/header/bookmarks/index.js";
12
10
  import { storagePanel } from "../../components/panel/header/storage/index.js";
13
- import { Header } from "../../components/panel/header/index.js";
11
+ import { Header as Header$1 } from "../../components/panel/header/index.js";
14
12
  import { Menu } from "../../components/panel/menu/index.js";
15
13
  import { HomeNavigationBubble } from "./home-navigation-bubble.js";
16
14
  import { useLocation } from "@tanstack/react-router";
17
15
  import { useState } from "react";
16
+ import { useCommand } from "@vezham/hooks";
18
17
  import { Surface } from "@vezham/react-v3";
19
18
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
20
19
  //#region src/lib/layouts/menu-layout/index-md.tsx
@@ -24,8 +23,6 @@ var headerUsers = {
24
23
  avatar: "https://heroui-assets.nyc3.cdn.digitaloceanspaces.com/avatars/blue.jpg"
25
24
  };
26
25
  var MenuMD = ({ items, controlCenter }) => {
27
- const [openSettings, setOpenSettings] = useState(false);
28
- const [settingsEntryPoint, setSettingsEntryPoint] = useState("account");
29
26
  const location = useLocation();
30
27
  const [notificationsOpen, setNotificationsOpen] = useState(false);
31
28
  const { openInfoPanel, closeInfoPanel } = useInfoPanel();
@@ -41,7 +38,6 @@ var MenuMD = ({ items, controlCenter }) => {
41
38
  closeInfoPanel();
42
39
  closeCommand();
43
40
  } else toggleNavigation();
44
- setOpenSettings(false);
45
41
  setNotificationsOpen(false);
46
42
  };
47
43
  useSidebarShortcut(toggleDock, isHome);
@@ -60,24 +56,15 @@ var MenuMD = ({ items, controlCenter }) => {
60
56
  controlCenter,
61
57
  navigationWidth,
62
58
  selectedKey,
63
- onAI: () => openInfoPanel("ai"),
59
+ onTamizhi: () => openInfoPanel("tamizhi"),
64
60
  onToggleDock: toggleDock,
65
- onNotifications: () => setNotificationsOpen(true),
66
- onUser: (entryPoint) => {
67
- setSettingsEntryPoint(entryPoint);
68
- setOpenSettings(true);
69
- }
61
+ onNotifications: () => setNotificationsOpen(true)
70
62
  }),
71
63
  /* @__PURE__ */ jsx(CollapsedNavigation, {
72
64
  collapsed: isNavigationCollapsed,
73
65
  isHome,
74
66
  onToggleDock: toggleDock
75
67
  }),
76
- /* @__PURE__ */ jsx(UserInfoModal, {
77
- open: openSettings && !isNavigationCollapsed,
78
- onClose: () => setOpenSettings(false),
79
- defaultActiveTab: settingsEntryPoint
80
- }),
81
68
  /* @__PURE__ */ jsx(NotificationDrawer, {
82
69
  isOpen: notificationsOpen && !isNavigationCollapsed,
83
70
  onClose: () => setNotificationsOpen(false)
@@ -85,16 +72,16 @@ var MenuMD = ({ items, controlCenter }) => {
85
72
  /* @__PURE__ */ jsx(InfoPanelContainer, { panels: {
86
73
  bookmarks: bookmarksPanel,
87
74
  storage: storagePanel,
88
- ai: aiPanel
75
+ tamizhi: tamizhiPanel
89
76
  } })
90
77
  ] });
91
78
  };
92
- var NavigationPanel = ({ collapsed, footerUser, items, controlCenter, navigationWidth, selectedKey, onAI, onToggleDock, onNotifications, onUser }) => /* @__PURE__ */ jsx(Surface, {
79
+ var NavigationPanel = ({ collapsed, footerUser, items, controlCenter, navigationWidth, selectedKey, onTamizhi, onToggleDock, onNotifications }) => /* @__PURE__ */ jsx(Surface, {
93
80
  variant: "transparent",
94
- className: `border-default-300 sticky top-0 left-0 z-[10] flex h-[100dvh] shrink-0 flex-col overflow-hidden transition-[width,padding,gap] duration-300 ease-out ${navigationWidth} ${collapsed ? "border-0 p-0" : "gap-6 px-4 pt-3 pb-4"}`,
81
+ className: `border-border-secondary sticky top-0 left-0 z-[10] flex h-[100dvh] shrink-0 flex-col overflow-hidden transition-[width,padding,gap] duration-300 ease-out ${navigationWidth} ${collapsed ? "border-0 p-0" : "gap-6 px-4 pt-3 pb-4"}`,
95
82
  "data-vx": "menu-layout",
96
83
  children: !collapsed && /* @__PURE__ */ jsxs(Fragment$1, { children: [
97
- /* @__PURE__ */ jsx(Header, {
84
+ /* @__PURE__ */ jsx(Header$1, {
98
85
  users: headerUsers,
99
86
  showSearch: true,
100
87
  showBookamarks: true,
@@ -118,9 +105,8 @@ var NavigationPanel = ({ collapsed, footerUser, items, controlCenter, navigation
118
105
  controlCenter,
119
106
  showNotifications: true,
120
107
  showUserInfo: true,
121
- onAI,
122
- onNotificationsClick: onNotifications,
123
- onUserClick: (_user, entryPoint = "account") => onUser(entryPoint)
108
+ onTamizhi,
109
+ onNotificationsClick: onNotifications
124
110
  })
125
111
  ] })
126
112
  });
@@ -132,8 +118,8 @@ var CollapsedNavigation = ({ collapsed, isHome, onToggleDock }) => {
132
118
  });
133
119
  return /* @__PURE__ */ jsx(Surface, {
134
120
  variant: "transparent",
135
- className: "border-default-200 bg-background/90 fixed top-3 left-3 z-40 flex h-[45px] w-fit items-center rounded-full border px-2 py-0 shadow-[0_14px_28px_rgba(15,23,42,0.14)] backdrop-blur-xl",
136
- children: /* @__PURE__ */ jsx(Header, {
121
+ className: "border-border bg-background/90 fixed top-3 left-3 z-40 flex h-[45px] w-fit items-center rounded-full border px-2 py-0 shadow-[0_14px_28px_rgba(15,23,42,0.14)] backdrop-blur-xl",
122
+ children: /* @__PURE__ */ jsx(Header$1, {
137
123
  compact: true,
138
124
  users: headerUsers,
139
125
  isDockHidden: true,
@@ -1 +1 @@
1
- {"version":3,"file":"index-sm.d.ts","sourceRoot":"","sources":["../../../../src/lib/layouts/menu-layout/index-sm.tsx"],"names":[],"mappings":"AACA,OAAO,KAAmB,MAAM,OAAO,CAAA;AAuBvC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAE9C,QAAA,MAAM,MAAM,GAAI,0BAA0B,eAAe,sBAsHxD,CAAA;AAED,OAAO,EAAE,MAAM,EAAE,CAAA"}
1
+ {"version":3,"file":"index-sm.d.ts","sourceRoot":"","sources":["../../../../src/lib/layouts/menu-layout/index-sm.tsx"],"names":[],"mappings":"AACA,OAAO,KAAmB,MAAM,OAAO,CAAA;AAsBvC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAE9C,QAAA,MAAM,MAAM,GAAI,0BAA0B,eAAe,sBA2GxD,CAAA;AAED,OAAO,EAAE,MAAM,EAAE,CAAA"}
@@ -7,12 +7,11 @@ import { useWorkspaceNavigation } from "../../components/workspace-navigation/in
7
7
  import { getNavigationPageKey } from "../../navigation.js";
8
8
  import { useUser } from "../../store/users/useUserStore.js";
9
9
  import { Footer } from "../../components/panel/footer/index.js";
10
- import { aiPanel } from "../../components/panel/footer/ai/index.js";
11
10
  import { NotificationDrawer } from "../../components/panel/footer/notification-center/index.js";
12
- import { UserInfoModal } from "../../components/panel/footer/preferences/modal.js";
11
+ import { tamizhiPanel } from "../../components/panel/footer/tamizhi/index.js";
13
12
  import { bookmarksPanel } from "../../components/panel/header/bookmarks/index.js";
14
13
  import { storagePanel } from "../../components/panel/header/storage/index.js";
15
- import { Header } from "../../components/panel/header/index.js";
14
+ import { Header as Header$1 } from "../../components/panel/header/index.js";
16
15
  import { BottomNavbar } from "../../components/menu/index.js";
17
16
  import { getNavigationToolbar } from "../../navigation-toolbar.js";
18
17
  import { useLocation } from "@tanstack/react-router";
@@ -22,8 +21,6 @@ import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
22
21
  //#region src/lib/layouts/menu-layout/index-sm.tsx
23
22
  var MenuSM = ({ items, controlCenter }) => {
24
23
  const [selectedKey, setSelectedKey] = React.useState(items[0]?.key ?? "");
25
- const [openSettings, setOpenSettings] = useState(false);
26
- const [settingsEntryPoint, setSettingsEntryPoint] = useState("account");
27
24
  const [notificationsOpen, setNotificationsOpen] = useState(false);
28
25
  const { openInfoPanel } = useInfoPanel();
29
26
  const { isFooterHidden } = useMobileControls();
@@ -56,8 +53,8 @@ var MenuSM = ({ items, controlCenter }) => {
56
53
  variant: "transparent",
57
54
  role: "group",
58
55
  "aria-label": "Mobile navigation controls",
59
- className: "border-default-200 bg-background/90 pointer-events-auto flex h-12 shrink-0 items-center rounded-full border px-2 shadow-[0_14px_28px_rgba(15,23,42,0.14)] backdrop-blur-xl",
60
- children: /* @__PURE__ */ jsx(Header, {
56
+ className: "border-border bg-background/90 pointer-events-auto flex h-12 shrink-0 items-center rounded-full border px-2 shadow-[0_14px_28px_rgba(15,23,42,0.14)] backdrop-blur-xl",
57
+ children: /* @__PURE__ */ jsx(Header$1, {
61
58
  compact: true,
62
59
  className: "flex-shrink-0",
63
60
  users,
@@ -70,7 +67,7 @@ var MenuSM = ({ items, controlCenter }) => {
70
67
  variant: "transparent",
71
68
  role: "group",
72
69
  "aria-label": "Mobile account actions",
73
- className: "border-default-200 bg-background/90 pointer-events-auto flex h-12 shrink-0 items-center rounded-full border px-2 shadow-[0_14px_28px_rgba(15,23,42,0.14)] backdrop-blur-xl",
70
+ className: "border-border bg-background/90 pointer-events-auto flex h-12 shrink-0 items-center rounded-full border px-2 shadow-[0_14px_28px_rgba(15,23,42,0.14)] backdrop-blur-xl",
74
71
  children: /* @__PURE__ */ jsx(Footer, {
75
72
  user: {
76
73
  id: user?.id ?? "",
@@ -83,21 +80,12 @@ var MenuSM = ({ items, controlCenter }) => {
83
80
  controlCenter,
84
81
  showNotifications: true,
85
82
  showUserInfo: true,
86
- onAI: () => openInfoPanel("ai"),
83
+ onTamizhi: () => openInfoPanel("tamizhi"),
87
84
  onNotificationsClick: () => setNotificationsOpen(true),
88
- onUserClick: (_user, entryPoint = "account") => {
89
- setSettingsEntryPoint(entryPoint);
90
- setOpenSettings(true);
91
- },
92
85
  toolbarAction
93
86
  })
94
87
  })]
95
88
  }),
96
- /* @__PURE__ */ jsx(UserInfoModal, {
97
- open: openSettings,
98
- onClose: () => setOpenSettings(false),
99
- defaultActiveTab: settingsEntryPoint
100
- }),
101
89
  /* @__PURE__ */ jsx(NotificationDrawer, {
102
90
  isOpen: notificationsOpen,
103
91
  onClose: () => setNotificationsOpen(false)
@@ -105,7 +93,7 @@ var MenuSM = ({ items, controlCenter }) => {
105
93
  /* @__PURE__ */ jsx(InfoPanelContainer, { panels: {
106
94
  bookmarks: bookmarksPanel,
107
95
  storage: storagePanel,
108
- ai: aiPanel
96
+ tamizhi: tamizhiPanel
109
97
  } }),
110
98
  !isFooterHidden && items.length > 1 && /* @__PURE__ */ jsx("div", {
111
99
  className: "shrink-0",
@@ -290,7 +290,7 @@ var SectionSearchField = ({ search }) => {
290
290
  var ToolbarActions = ({ search, toolbar, sync = true, onSync, filterAction, hasFilters, isMobile, isFilterMenuOpen, onFilterOpenChange, selectedFilters, onToggleFilter, sort = false, sortValue = DEFAULT_SORT, onSortChange, view: viewModeActions = EMPTY_VIEW_ACTIONS, viewMode, onViewModeChange, primaryAction, menuActions, isMenuOpen, onMenuOpenChange }) => /* @__PURE__ */ jsxs("div", {
291
291
  role: "group",
292
292
  "aria-label": "Toolbar actions",
293
- className: "scrollbar-hide col-start-2 row-start-1 -m-1 hidden max-w-[calc(100vw-2rem)] min-w-0 items-center gap-2 overflow-x-auto p-1 md:flex",
293
+ className: "col-start-2 row-start-1 -m-1 hidden max-w-[calc(100vw-2rem)] min-w-0 [scrollbar-width:none] items-center gap-2 overflow-x-auto p-1 md:flex [&::-webkit-scrollbar]:hidden",
294
294
  children: [
295
295
  search && /* @__PURE__ */ jsx(SectionSearchField, { search }),
296
296
  sync && /* @__PURE__ */ jsx(ShortcutButton, {
@@ -1 +1 @@
1
- {"version":3,"file":"settings-content.d.ts","sourceRoot":"","sources":["../../../../src/lib/pages/settings/settings-content.tsx"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAoOnD,eAAO,MAAM,eAAe,GAAI,YAAY;IAAE,MAAM,EAAE,eAAe,CAAA;CAAE,gCAItE,CAAA"}
1
+ {"version":3,"file":"settings-content.d.ts","sourceRoot":"","sources":["../../../../src/lib/pages/settings/settings-content.tsx"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAiNnD,eAAO,MAAM,eAAe,GAAI,YAAY;IAAE,MAAM,EAAE,eAAe,CAAA;CAAE,gCAItE,CAAA"}
@@ -1,20 +1,23 @@
1
1
  import { AppearanceProvider, useAppearance } from "../../components/panel/footer/control-center/appearance.js";
2
2
  import { useRootAttribute } from "../../components/panel/footer/control-center/document.js";
3
3
  import { useUser } from "../../store/users/useUserStore.js";
4
- import { useState, useSyncExternalStore } from "react";
4
+ import { useState } from "react";
5
+ import { useLocalStore } from "@vezham/hooks";
5
6
  import { Button, Input, Label, ListBox, Select, Surface, Switch, TextField } from "@vezham/react-v3";
6
7
  import { jsx, jsxs } from "react/jsx-runtime";
7
8
  //#region src/lib/pages/settings/settings-content.tsx
8
- var subscribeNotifications = (onChange) => {
9
- window.addEventListener("storage", onChange);
10
- window.addEventListener("vx:notification-settings", onChange);
11
- return () => {
12
- window.removeEventListener("storage", onChange);
13
- window.removeEventListener("vx:notification-settings", onChange);
14
- };
9
+ var INITIAL_NOTIFICATIONS = {
10
+ sounds: true,
11
+ badges: true
12
+ };
13
+ var parseNotifications = (data) => {
14
+ if (!data || typeof data !== "object") return INITIAL_NOTIFICATIONS;
15
+ const value = data;
16
+ return typeof value.sounds === "boolean" && typeof value.badges === "boolean" ? {
17
+ sounds: value.sounds,
18
+ badges: value.badges
19
+ } : INITIAL_NOTIFICATIONS;
15
20
  };
16
- var readNotifications = () => localStorage.getItem("demo:notification-settings") ?? "";
17
- var serverNotifications = () => "";
18
21
  var useSettingsPreferences = () => {
19
22
  const { user, updateUser } = useUser();
20
23
  const { value: language, onChange: setLanguage } = useRootAttribute("lang", "en");
@@ -23,22 +26,7 @@ var useSettingsPreferences = () => {
23
26
  const [lastName, setLastName] = useState(user?.lastName ?? "");
24
27
  const [email, setEmail] = useState(user?.email ?? "");
25
28
  const [saved, setSaved] = useState(false);
26
- const snapshot = useSyncExternalStore(subscribeNotifications, readNotifications, serverNotifications);
27
- let notifications = {
28
- sounds: true,
29
- badges: true
30
- };
31
- try {
32
- const value = JSON.parse(snapshot || "null");
33
- if (value && typeof value.sounds === "boolean" && typeof value.badges === "boolean") notifications = {
34
- sounds: value.sounds,
35
- badges: value.badges
36
- };
37
- } catch {}
38
- const setNotifications = (next) => {
39
- localStorage.setItem("demo:notification-settings", JSON.stringify(next));
40
- window.dispatchEvent(new Event("vx:notification-settings"));
41
- };
29
+ const { value: notifications, setValue: setNotifications } = useLocalStore("demo:notification-settings", INITIAL_NOTIFICATIONS, { parse: parseNotifications });
42
30
  return {
43
31
  updateUser,
44
32
  language,
@@ -0,0 +1,9 @@
1
+ export type WorkspaceAction = {
2
+ id: string;
3
+ type: 'rename' | 'delete';
4
+ };
5
+ export declare const WorkspaceActionDialog: ({ action, onClose }: {
6
+ action: WorkspaceAction;
7
+ onClose: () => void;
8
+ }) => import("react").JSX.Element;
9
+ //# sourceMappingURL=action-dialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action-dialog.d.ts","sourceRoot":"","sources":["../../../src/lib/workspace/action-dialog.tsx"],"names":[],"mappings":"AAcA,MAAM,MAAM,eAAe,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAA;CAAE,CAAA;AAEvE,eAAO,MAAM,qBAAqB,GAAI,qBAGnC;IACD,MAAM,EAAE,eAAe,CAAA;IACvB,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB,gCAwGA,CAAA"}