@vuu-ui/vuu-shell 0.13.9 → 0.13.11

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 (225) hide show
  1. package/cjs/ShellContextProvider.js +25 -0
  2. package/cjs/ShellContextProvider.js.map +1 -0
  3. package/cjs/app-header/AppHeader.css.js +6 -0
  4. package/cjs/app-header/AppHeader.css.js.map +1 -0
  5. package/cjs/app-header/AppHeader.js +85 -0
  6. package/cjs/app-header/AppHeader.js.map +1 -0
  7. package/cjs/app-status-bar/AppStatusBar.css.js +6 -0
  8. package/cjs/app-status-bar/AppStatusBar.css.js.map +1 -0
  9. package/cjs/app-status-bar/AppStatusBar.js +47 -0
  10. package/cjs/app-status-bar/AppStatusBar.js.map +1 -0
  11. package/cjs/application-provider/ApplicationContext.js +18 -0
  12. package/cjs/application-provider/ApplicationContext.js.map +1 -0
  13. package/cjs/application-provider/ApplicationProvider.js +104 -0
  14. package/cjs/application-provider/ApplicationProvider.js.map +1 -0
  15. package/cjs/connection-status/ConnectionRetryCountdown.js +36 -0
  16. package/cjs/connection-status/ConnectionRetryCountdown.js.map +1 -0
  17. package/cjs/connection-status/ConnectionStateDisplay.css.js +6 -0
  18. package/cjs/connection-status/ConnectionStateDisplay.css.js.map +1 -0
  19. package/cjs/connection-status/ConnectionStateDisplay.js +65 -0
  20. package/cjs/connection-status/ConnectionStateDisplay.js.map +1 -0
  21. package/cjs/connection-status/ConnectionStatusIndicator.css.js +6 -0
  22. package/cjs/connection-status/ConnectionStatusIndicator.css.js.map +1 -0
  23. package/cjs/connection-status/ConnectionStatusIndicator.js +81 -0
  24. package/cjs/connection-status/ConnectionStatusIndicator.js.map +1 -0
  25. package/cjs/feature/Feature.js +55 -0
  26. package/cjs/feature/Feature.js.map +1 -0
  27. package/cjs/feature/FeatureErrorBoundary.js +30 -0
  28. package/cjs/feature/FeatureErrorBoundary.js.map +1 -0
  29. package/cjs/feature/Loader.js +8 -0
  30. package/cjs/feature/Loader.js.map +1 -0
  31. package/cjs/feature-and-layout-provider/FeatureAndLayoutProvider.js +60 -0
  32. package/cjs/feature-and-layout-provider/FeatureAndLayoutProvider.js.map +1 -0
  33. package/cjs/feature-list/FeatureList.css.js +6 -0
  34. package/cjs/feature-list/FeatureList.css.js.map +1 -0
  35. package/cjs/feature-list/FeatureList.js +97 -0
  36. package/cjs/feature-list/FeatureList.js.map +1 -0
  37. package/cjs/index.js +77 -2826
  38. package/cjs/index.js.map +1 -1
  39. package/cjs/left-nav/LeftNav.css.js +6 -0
  40. package/cjs/left-nav/LeftNav.css.js.map +1 -0
  41. package/cjs/left-nav/LeftNav.js +199 -0
  42. package/cjs/left-nav/LeftNav.js.map +1 -0
  43. package/cjs/login/LoginPanel.css.js +6 -0
  44. package/cjs/login/LoginPanel.css.js.map +1 -0
  45. package/cjs/login/LoginPanel.js +108 -0
  46. package/cjs/login/LoginPanel.js.map +1 -0
  47. package/cjs/login/VuuLogo.js +134 -0
  48. package/cjs/login/VuuLogo.js.map +1 -0
  49. package/cjs/login/login-utils.js +31 -0
  50. package/cjs/login/login-utils.js.map +1 -0
  51. package/cjs/persistence-manager/LocalPersistenceManager.js +197 -0
  52. package/cjs/persistence-manager/LocalPersistenceManager.js.map +1 -0
  53. package/cjs/persistence-manager/PersistenceProvider.js +21 -0
  54. package/cjs/persistence-manager/PersistenceProvider.js.map +1 -0
  55. package/cjs/persistence-manager/RemotePersistenceManager.js +175 -0
  56. package/cjs/persistence-manager/RemotePersistenceManager.js.map +1 -0
  57. package/cjs/persistence-manager/StaticPersistenceManager.js +71 -0
  58. package/cjs/persistence-manager/StaticPersistenceManager.js.map +1 -0
  59. package/cjs/shell-layout-templates/context-panel/ContextPanel.css.js +6 -0
  60. package/cjs/shell-layout-templates/context-panel/ContextPanel.css.js.map +1 -0
  61. package/cjs/shell-layout-templates/context-panel/ContextPanel.js +94 -0
  62. package/cjs/shell-layout-templates/context-panel/ContextPanel.js.map +1 -0
  63. package/cjs/shell-layout-templates/full-height-left-panel/useFullHeightLeftPanel.js +53 -0
  64. package/cjs/shell-layout-templates/full-height-left-panel/useFullHeightLeftPanel.js.map +1 -0
  65. package/cjs/shell-layout-templates/inlay-left-panel/useInlayLeftPanel.js +83 -0
  66. package/cjs/shell-layout-templates/inlay-left-panel/useInlayLeftPanel.js.map +1 -0
  67. package/cjs/shell-layout-templates/left-main-tabs/useLeftMainTabs.js +46 -0
  68. package/cjs/shell-layout-templates/left-main-tabs/useLeftMainTabs.js.map +1 -0
  69. package/cjs/shell-layout-templates/side-panel/SidePanel.css.js +6 -0
  70. package/cjs/shell-layout-templates/side-panel/SidePanel.css.js.map +1 -0
  71. package/cjs/shell-layout-templates/side-panel/SidePanel.js +36 -0
  72. package/cjs/shell-layout-templates/side-panel/SidePanel.js.map +1 -0
  73. package/cjs/shell-layout-templates/simple-content-pane/useSimpleContentPane.js +48 -0
  74. package/cjs/shell-layout-templates/simple-content-pane/useSimpleContentPane.js.map +1 -0
  75. package/cjs/shell-layout-templates/useShellLayout.js +23 -0
  76. package/cjs/shell-layout-templates/useShellLayout.js.map +1 -0
  77. package/cjs/shell.css.js +6 -0
  78. package/cjs/shell.css.js.map +1 -0
  79. package/cjs/shell.js +161 -0
  80. package/cjs/shell.js.map +1 -0
  81. package/cjs/theme-switch/ThemeSwitch.css.js +6 -0
  82. package/cjs/theme-switch/ThemeSwitch.css.js.map +1 -0
  83. package/cjs/theme-switch/ThemeSwitch.js +56 -0
  84. package/cjs/theme-switch/ThemeSwitch.js.map +1 -0
  85. package/cjs/user-settings/SettingsForm.css.js +6 -0
  86. package/cjs/user-settings/SettingsForm.css.js.map +1 -0
  87. package/cjs/user-settings/SettingsForm.js +168 -0
  88. package/cjs/user-settings/SettingsForm.js.map +1 -0
  89. package/cjs/user-settings/UserSettingsPanel.css.js +6 -0
  90. package/cjs/user-settings/UserSettingsPanel.css.js.map +1 -0
  91. package/cjs/user-settings/UserSettingsPanel.js +42 -0
  92. package/cjs/user-settings/UserSettingsPanel.js.map +1 -0
  93. package/cjs/workspace-management/LayoutList.css.js +6 -0
  94. package/cjs/workspace-management/LayoutList.css.js.map +1 -0
  95. package/cjs/workspace-management/LayoutList.js +116 -0
  96. package/cjs/workspace-management/LayoutList.js.map +1 -0
  97. package/cjs/workspace-management/LayoutTile.css.js +6 -0
  98. package/cjs/workspace-management/LayoutTile.css.js.map +1 -0
  99. package/cjs/workspace-management/LayoutTile.js +41 -0
  100. package/cjs/workspace-management/LayoutTile.js.map +1 -0
  101. package/cjs/workspace-management/SaveLayoutPanel.css.js +6 -0
  102. package/cjs/workspace-management/SaveLayoutPanel.css.js.map +1 -0
  103. package/cjs/workspace-management/SaveLayoutPanel.js +129 -0
  104. package/cjs/workspace-management/SaveLayoutPanel.js.map +1 -0
  105. package/cjs/workspace-management/WorkspaceProvider.js +264 -0
  106. package/cjs/workspace-management/WorkspaceProvider.js.map +1 -0
  107. package/cjs/workspace-management/defaultWorkspaceJSON.js +101 -0
  108. package/cjs/workspace-management/defaultWorkspaceJSON.js.map +1 -0
  109. package/cjs/workspace-management/screenshot-utils.js +25 -0
  110. package/cjs/workspace-management/screenshot-utils.js.map +1 -0
  111. package/cjs/workspace-management/useWorkspaceContextMenuItems.js +72 -0
  112. package/cjs/workspace-management/useWorkspaceContextMenuItems.js.map +1 -0
  113. package/esm/ShellContextProvider.js +23 -0
  114. package/esm/ShellContextProvider.js.map +1 -0
  115. package/esm/app-header/AppHeader.css.js +4 -0
  116. package/esm/app-header/AppHeader.css.js.map +1 -0
  117. package/esm/app-header/AppHeader.js +83 -0
  118. package/esm/app-header/AppHeader.js.map +1 -0
  119. package/esm/app-status-bar/AppStatusBar.css.js +4 -0
  120. package/esm/app-status-bar/AppStatusBar.css.js.map +1 -0
  121. package/esm/app-status-bar/AppStatusBar.js +45 -0
  122. package/esm/app-status-bar/AppStatusBar.js.map +1 -0
  123. package/esm/application-provider/ApplicationContext.js +16 -0
  124. package/esm/application-provider/ApplicationContext.js.map +1 -0
  125. package/esm/application-provider/ApplicationProvider.js +98 -0
  126. package/esm/application-provider/ApplicationProvider.js.map +1 -0
  127. package/esm/connection-status/ConnectionRetryCountdown.js +34 -0
  128. package/esm/connection-status/ConnectionRetryCountdown.js.map +1 -0
  129. package/esm/connection-status/ConnectionStateDisplay.css.js +4 -0
  130. package/esm/connection-status/ConnectionStateDisplay.css.js.map +1 -0
  131. package/esm/connection-status/ConnectionStateDisplay.js +63 -0
  132. package/esm/connection-status/ConnectionStateDisplay.js.map +1 -0
  133. package/esm/connection-status/ConnectionStatusIndicator.css.js +4 -0
  134. package/esm/connection-status/ConnectionStatusIndicator.css.js.map +1 -0
  135. package/esm/connection-status/ConnectionStatusIndicator.js +79 -0
  136. package/esm/connection-status/ConnectionStatusIndicator.js.map +1 -0
  137. package/esm/feature/Feature.js +53 -0
  138. package/esm/feature/Feature.js.map +1 -0
  139. package/esm/feature/FeatureErrorBoundary.js +28 -0
  140. package/esm/feature/FeatureErrorBoundary.js.map +1 -0
  141. package/esm/feature/Loader.js +6 -0
  142. package/esm/feature/Loader.js.map +1 -0
  143. package/esm/feature-and-layout-provider/FeatureAndLayoutProvider.js +56 -0
  144. package/esm/feature-and-layout-provider/FeatureAndLayoutProvider.js.map +1 -0
  145. package/esm/feature-list/FeatureList.css.js +4 -0
  146. package/esm/feature-list/FeatureList.css.js.map +1 -0
  147. package/esm/feature-list/FeatureList.js +95 -0
  148. package/esm/feature-list/FeatureList.js.map +1 -0
  149. package/esm/index.js +27 -2780
  150. package/esm/index.js.map +1 -1
  151. package/esm/left-nav/LeftNav.css.js +4 -0
  152. package/esm/left-nav/LeftNav.css.js.map +1 -0
  153. package/esm/left-nav/LeftNav.js +197 -0
  154. package/esm/left-nav/LeftNav.js.map +1 -0
  155. package/esm/login/LoginPanel.css.js +4 -0
  156. package/esm/login/LoginPanel.css.js.map +1 -0
  157. package/esm/login/LoginPanel.js +106 -0
  158. package/esm/login/LoginPanel.js.map +1 -0
  159. package/esm/login/VuuLogo.js +132 -0
  160. package/esm/login/VuuLogo.js.map +1 -0
  161. package/esm/login/login-utils.js +26 -0
  162. package/esm/login/login-utils.js.map +1 -0
  163. package/esm/persistence-manager/LocalPersistenceManager.js +195 -0
  164. package/esm/persistence-manager/LocalPersistenceManager.js.map +1 -0
  165. package/esm/persistence-manager/PersistenceProvider.js +17 -0
  166. package/esm/persistence-manager/PersistenceProvider.js.map +1 -0
  167. package/esm/persistence-manager/RemotePersistenceManager.js +173 -0
  168. package/esm/persistence-manager/RemotePersistenceManager.js.map +1 -0
  169. package/esm/persistence-manager/StaticPersistenceManager.js +69 -0
  170. package/esm/persistence-manager/StaticPersistenceManager.js.map +1 -0
  171. package/esm/shell-layout-templates/context-panel/ContextPanel.css.js +4 -0
  172. package/esm/shell-layout-templates/context-panel/ContextPanel.css.js.map +1 -0
  173. package/esm/shell-layout-templates/context-panel/ContextPanel.js +92 -0
  174. package/esm/shell-layout-templates/context-panel/ContextPanel.js.map +1 -0
  175. package/esm/shell-layout-templates/full-height-left-panel/useFullHeightLeftPanel.js +51 -0
  176. package/esm/shell-layout-templates/full-height-left-panel/useFullHeightLeftPanel.js.map +1 -0
  177. package/esm/shell-layout-templates/inlay-left-panel/useInlayLeftPanel.js +81 -0
  178. package/esm/shell-layout-templates/inlay-left-panel/useInlayLeftPanel.js.map +1 -0
  179. package/esm/shell-layout-templates/left-main-tabs/useLeftMainTabs.js +44 -0
  180. package/esm/shell-layout-templates/left-main-tabs/useLeftMainTabs.js.map +1 -0
  181. package/esm/shell-layout-templates/side-panel/SidePanel.css.js +4 -0
  182. package/esm/shell-layout-templates/side-panel/SidePanel.css.js.map +1 -0
  183. package/esm/shell-layout-templates/side-panel/SidePanel.js +34 -0
  184. package/esm/shell-layout-templates/side-panel/SidePanel.js.map +1 -0
  185. package/esm/shell-layout-templates/simple-content-pane/useSimpleContentPane.js +46 -0
  186. package/esm/shell-layout-templates/simple-content-pane/useSimpleContentPane.js.map +1 -0
  187. package/esm/shell-layout-templates/useShellLayout.js +21 -0
  188. package/esm/shell-layout-templates/useShellLayout.js.map +1 -0
  189. package/esm/shell.css.js +4 -0
  190. package/esm/shell.css.js.map +1 -0
  191. package/esm/shell.js +159 -0
  192. package/esm/shell.js.map +1 -0
  193. package/esm/theme-switch/ThemeSwitch.css.js +4 -0
  194. package/esm/theme-switch/ThemeSwitch.css.js.map +1 -0
  195. package/esm/theme-switch/ThemeSwitch.js +54 -0
  196. package/esm/theme-switch/ThemeSwitch.js.map +1 -0
  197. package/esm/user-settings/SettingsForm.css.js +4 -0
  198. package/esm/user-settings/SettingsForm.css.js.map +1 -0
  199. package/esm/user-settings/SettingsForm.js +162 -0
  200. package/esm/user-settings/SettingsForm.js.map +1 -0
  201. package/esm/user-settings/UserSettingsPanel.css.js +4 -0
  202. package/esm/user-settings/UserSettingsPanel.css.js.map +1 -0
  203. package/esm/user-settings/UserSettingsPanel.js +40 -0
  204. package/esm/user-settings/UserSettingsPanel.js.map +1 -0
  205. package/esm/workspace-management/LayoutList.css.js +4 -0
  206. package/esm/workspace-management/LayoutList.css.js.map +1 -0
  207. package/esm/workspace-management/LayoutList.js +114 -0
  208. package/esm/workspace-management/LayoutList.js.map +1 -0
  209. package/esm/workspace-management/LayoutTile.css.js +4 -0
  210. package/esm/workspace-management/LayoutTile.css.js.map +1 -0
  211. package/esm/workspace-management/LayoutTile.js +39 -0
  212. package/esm/workspace-management/LayoutTile.js.map +1 -0
  213. package/esm/workspace-management/SaveLayoutPanel.css.js +4 -0
  214. package/esm/workspace-management/SaveLayoutPanel.css.js.map +1 -0
  215. package/esm/workspace-management/SaveLayoutPanel.js +127 -0
  216. package/esm/workspace-management/SaveLayoutPanel.js.map +1 -0
  217. package/esm/workspace-management/WorkspaceProvider.js +261 -0
  218. package/esm/workspace-management/WorkspaceProvider.js.map +1 -0
  219. package/esm/workspace-management/defaultWorkspaceJSON.js +95 -0
  220. package/esm/workspace-management/defaultWorkspaceJSON.js.map +1 -0
  221. package/esm/workspace-management/screenshot-utils.js +23 -0
  222. package/esm/workspace-management/screenshot-utils.js.map +1 -0
  223. package/esm/workspace-management/useWorkspaceContextMenuItems.js +70 -0
  224. package/esm/workspace-management/useWorkspaceContextMenuItems.js.map +1 -0
  225. package/package.json +13 -13
@@ -0,0 +1,53 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var vuuLayout = require('@vuu-ui/vuu-layout');
5
+ var vuuUtils = require('@vuu-ui/vuu-utils');
6
+ var ContextPanel = require('../context-panel/ContextPanel.js');
7
+ var SidePanel = require('../side-panel/SidePanel.js');
8
+ var React = require('react');
9
+ var AppStatusBar = require('../../app-status-bar/AppStatusBar.js');
10
+
11
+ const useFullHeightLeftPanel = ({
12
+ appHeader,
13
+ SidePanelProps: LeftSidePanelProps,
14
+ htmlAttributes
15
+ }) => React.useMemo(
16
+ () => /* @__PURE__ */ jsxRuntime.jsxs(
17
+ vuuLayout.Flexbox,
18
+ {
19
+ ...htmlAttributes,
20
+ style: {
21
+ ...htmlAttributes?.style,
22
+ flexDirection: "row"
23
+ },
24
+ children: [
25
+ /* @__PURE__ */ jsxRuntime.jsx(SidePanel.SidePanel, { ...LeftSidePanelProps, id: vuuUtils.VuuShellLocation.SidePanel }),
26
+ /* @__PURE__ */ jsxRuntime.jsxs(
27
+ vuuLayout.Flexbox,
28
+ {
29
+ className: "vuuShell-content",
30
+ style: { flex: 1, flexDirection: "column" },
31
+ children: [
32
+ appHeader,
33
+ /* @__PURE__ */ jsxRuntime.jsx(
34
+ vuuLayout.LayoutContainer,
35
+ {
36
+ id: vuuUtils.VuuShellLocation.WorkspaceContainer,
37
+ style: { flex: 1 }
38
+ },
39
+ "main-content"
40
+ ),
41
+ /* @__PURE__ */ jsxRuntime.jsx(AppStatusBar.ApplicationStatusBar, {})
42
+ ]
43
+ }
44
+ ),
45
+ /* @__PURE__ */ jsxRuntime.jsx(ContextPanel.ContextPanel, { id: vuuUtils.VuuShellLocation.ContextPanel, overlay: true })
46
+ ]
47
+ }
48
+ ),
49
+ [LeftSidePanelProps, appHeader, htmlAttributes]
50
+ );
51
+
52
+ exports.useFullHeightLeftPanel = useFullHeightLeftPanel;
53
+ //# sourceMappingURL=useFullHeightLeftPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFullHeightLeftPanel.js","sources":["../../../src/shell-layout-templates/full-height-left-panel/useFullHeightLeftPanel.tsx"],"sourcesContent":["import { LayoutContainer, Flexbox } from \"@vuu-ui/vuu-layout\";\nimport { VuuShellLocation } from \"@vuu-ui/vuu-utils\";\nimport { ContextPanel } from \"../context-panel\";\nimport { SidePanel } from \"../side-panel\";\nimport { ShellLayoutTemplateHook } from \"../useShellLayout\";\nimport { useMemo } from \"react\";\nimport { ApplicationStatusBar } from \"../../app-status-bar\";\n\nexport const useFullHeightLeftPanel: ShellLayoutTemplateHook = ({\n appHeader,\n SidePanelProps: LeftSidePanelProps,\n htmlAttributes,\n}) =>\n useMemo(\n () => (\n <Flexbox\n {...htmlAttributes}\n style={{\n ...htmlAttributes?.style,\n flexDirection: \"row\",\n }}\n >\n <SidePanel {...LeftSidePanelProps} id={VuuShellLocation.SidePanel} />\n <Flexbox\n className=\"vuuShell-content\"\n style={{ flex: 1, flexDirection: \"column\" }}\n >\n {appHeader}\n <LayoutContainer\n id={VuuShellLocation.WorkspaceContainer}\n key=\"main-content\"\n style={{ flex: 1 }}\n />\n <ApplicationStatusBar />\n </Flexbox>\n <ContextPanel id={VuuShellLocation.ContextPanel} overlay></ContextPanel>\n </Flexbox>\n ),\n [LeftSidePanelProps, appHeader, htmlAttributes],\n );\n"],"names":["useMemo","jsxs","Flexbox","jsx","SidePanel","VuuShellLocation","LayoutContainer","ApplicationStatusBar","ContextPanel"],"mappings":";;;;;;;;;;AAQO,MAAM,yBAAkD,CAAC;AAAA,EAC9D,SAAA;AAAA,EACA,cAAgB,EAAA,kBAAA;AAAA,EAChB;AACF,CACE,KAAAA,aAAA;AAAA,EACE,sBACEC,eAAA;AAAA,IAACC,iBAAA;AAAA,IAAA;AAAA,MACE,GAAG,cAAA;AAAA,MACJ,KAAO,EAAA;AAAA,QACL,GAAG,cAAgB,EAAA,KAAA;AAAA,QACnB,aAAe,EAAA;AAAA,OACjB;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAC,cAAA,CAACC,mBAAW,EAAA,EAAA,GAAG,kBAAoB,EAAA,EAAA,EAAIC,0BAAiB,SAAW,EAAA,CAAA;AAAA,wBACnEJ,eAAA;AAAA,UAACC,iBAAA;AAAA,UAAA;AAAA,YACC,SAAU,EAAA,kBAAA;AAAA,YACV,KAAO,EAAA,EAAE,IAAM,EAAA,CAAA,EAAG,eAAe,QAAS,EAAA;AAAA,YAEzC,QAAA,EAAA;AAAA,cAAA,SAAA;AAAA,8BACDC,cAAA;AAAA,gBAACG,yBAAA;AAAA,gBAAA;AAAA,kBACC,IAAID,yBAAiB,CAAA,kBAAA;AAAA,kBAErB,KAAA,EAAO,EAAE,IAAA,EAAM,CAAE;AAAA,iBAAA;AAAA,gBADb;AAAA,eAEN;AAAA,6CACCE,iCAAqB,EAAA,EAAA;AAAA;AAAA;AAAA,SACxB;AAAA,uCACCC,yBAAa,EAAA,EAAA,EAAA,EAAIH,yBAAiB,CAAA,YAAA,EAAc,SAAO,IAAC,EAAA;AAAA;AAAA;AAAA,GAC3D;AAAA,EAEF,CAAC,kBAAoB,EAAA,SAAA,EAAW,cAAc;AAChD;;;;"}
@@ -0,0 +1,83 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var vuuLayout = require('@vuu-ui/vuu-layout');
5
+ var vuuUtils = require('@vuu-ui/vuu-utils');
6
+ var React = require('react');
7
+
8
+ const useInlayLeftPanel = ({
9
+ SidePanelProps: LeftSidePanelProps,
10
+ appHeader,
11
+ htmlAttributes
12
+ }) => {
13
+ const paletteView = React.useRef(null);
14
+ const [open, setOpen] = React.useState(true);
15
+ const handleDrawerClick = React.useCallback(
16
+ (e) => {
17
+ const target = e.target;
18
+ if (!paletteView.current?.contains(target)) {
19
+ setOpen(!open);
20
+ }
21
+ },
22
+ [open]
23
+ );
24
+ return React.useMemo(() => {
25
+ const getDrawers = (leftSidePanel) => {
26
+ const drawers = [];
27
+ drawers.push(
28
+ /* @__PURE__ */ jsxRuntime.jsx(
29
+ vuuLayout.Drawer,
30
+ {
31
+ onClick: handleDrawerClick,
32
+ open,
33
+ position: "left",
34
+ inline: true,
35
+ peekaboo: true,
36
+ sizeOpen: 200,
37
+ toggleButton: "end",
38
+ children: /* @__PURE__ */ jsxRuntime.jsx(
39
+ vuuLayout.View,
40
+ {
41
+ className: "vuuShell-palette",
42
+ id: "vw-app-palette",
43
+ ref: paletteView,
44
+ style: { height: "100%" },
45
+ children: leftSidePanel
46
+ },
47
+ "app-palette"
48
+ )
49
+ },
50
+ "left-panel"
51
+ )
52
+ );
53
+ return drawers;
54
+ };
55
+ return /* @__PURE__ */ jsxRuntime.jsxs(
56
+ vuuLayout.Flexbox,
57
+ {
58
+ ...htmlAttributes,
59
+ style: {
60
+ ...htmlAttributes?.style,
61
+ flexDirection: "column"
62
+ },
63
+ children: [
64
+ appHeader,
65
+ /* @__PURE__ */ jsxRuntime.jsx(vuuLayout.DockLayout, { style: { flex: 1 }, children: getDrawers(LeftSidePanelProps?.children).concat(
66
+ /* @__PURE__ */ jsxRuntime.jsx(
67
+ vuuLayout.LayoutContainer,
68
+ {
69
+ dropTarget: true,
70
+ id: vuuUtils.VuuShellLocation.WorkspaceContainer,
71
+ style: { width: "100%", height: "100%" }
72
+ },
73
+ "main-content"
74
+ )
75
+ ) })
76
+ ]
77
+ }
78
+ );
79
+ }, [LeftSidePanelProps, appHeader, handleDrawerClick, htmlAttributes, open]);
80
+ };
81
+
82
+ exports.useInlayLeftPanel = useInlayLeftPanel;
83
+ //# sourceMappingURL=useInlayLeftPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useInlayLeftPanel.js","sources":["../../../src/shell-layout-templates/inlay-left-panel/useInlayLeftPanel.tsx"],"sourcesContent":["import {\n DockLayout,\n LayoutContainer,\n Drawer,\n Flexbox,\n View,\n} from \"@vuu-ui/vuu-layout\";\n\nimport { VuuShellLocation } from \"@vuu-ui/vuu-utils\";\nimport {\n MouseEvent,\n ReactElement,\n ReactNode,\n useCallback,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { ShellLayoutTemplateHook } from \"../useShellLayout\";\n\nexport const useInlayLeftPanel: ShellLayoutTemplateHook = ({\n SidePanelProps: LeftSidePanelProps,\n appHeader,\n htmlAttributes,\n}) => {\n const paletteView = useRef<HTMLDivElement>(null);\n const [open, setOpen] = useState(true);\n const handleDrawerClick = useCallback(\n (e: MouseEvent<HTMLElement>) => {\n const target = e.target as HTMLElement;\n if (!paletteView.current?.contains(target)) {\n setOpen(!open);\n }\n },\n [open],\n );\n\n return useMemo(() => {\n const getDrawers = (leftSidePanel: ReactNode) => {\n const drawers: ReactElement[] = [];\n drawers.push(\n <Drawer\n key=\"left-panel\"\n onClick={handleDrawerClick}\n open={open}\n position=\"left\"\n inline\n peekaboo\n sizeOpen={200}\n toggleButton=\"end\"\n >\n <View\n className=\"vuuShell-palette\"\n id=\"vw-app-palette\"\n key=\"app-palette\"\n ref={paletteView}\n style={{ height: \"100%\" }}\n >\n {leftSidePanel}\n </View>\n </Drawer>,\n );\n\n return drawers;\n };\n\n return (\n <Flexbox\n {...htmlAttributes}\n style={{\n ...htmlAttributes?.style,\n flexDirection: \"column\",\n }}\n >\n {appHeader}\n <DockLayout style={{ flex: 1 }}>\n {getDrawers(LeftSidePanelProps?.children).concat(\n <LayoutContainer\n dropTarget\n id={VuuShellLocation.WorkspaceContainer}\n key=\"main-content\"\n style={{ width: \"100%\", height: \"100%\" }}\n />,\n )}\n </DockLayout>\n </Flexbox>\n );\n }, [LeftSidePanelProps, appHeader, handleDrawerClick, htmlAttributes, open]);\n};\n"],"names":["useRef","useState","useCallback","useMemo","jsx","Drawer","View","jsxs","Flexbox","DockLayout","LayoutContainer","VuuShellLocation"],"mappings":";;;;;;;AAoBO,MAAM,oBAA6C,CAAC;AAAA,EACzD,cAAgB,EAAA,kBAAA;AAAA,EAChB,SAAA;AAAA,EACA;AACF,CAAM,KAAA;AACJ,EAAM,MAAA,WAAA,GAAcA,aAAuB,IAAI,CAAA;AAC/C,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIC,eAAS,IAAI,CAAA;AACrC,EAAA,MAAM,iBAAoB,GAAAC,iBAAA;AAAA,IACxB,CAAC,CAA+B,KAAA;AAC9B,MAAA,MAAM,SAAS,CAAE,CAAA,MAAA;AACjB,MAAA,IAAI,CAAC,WAAA,CAAY,OAAS,EAAA,QAAA,CAAS,MAAM,CAAG,EAAA;AAC1C,QAAA,OAAA,CAAQ,CAAC,IAAI,CAAA;AAAA;AACf,KACF;AAAA,IACA,CAAC,IAAI;AAAA,GACP;AAEA,EAAA,OAAOC,cAAQ,MAAM;AACnB,IAAM,MAAA,UAAA,GAAa,CAAC,aAA6B,KAAA;AAC/C,MAAA,MAAM,UAA0B,EAAC;AACjC,MAAQ,OAAA,CAAA,IAAA;AAAA,wBACNC,cAAA;AAAA,UAACC,gBAAA;AAAA,UAAA;AAAA,YAEC,OAAS,EAAA,iBAAA;AAAA,YACT,IAAA;AAAA,YACA,QAAS,EAAA,MAAA;AAAA,YACT,MAAM,EAAA,IAAA;AAAA,YACN,QAAQ,EAAA,IAAA;AAAA,YACR,QAAU,EAAA,GAAA;AAAA,YACV,YAAa,EAAA,KAAA;AAAA,YAEb,QAAA,kBAAAD,cAAA;AAAA,cAACE,cAAA;AAAA,cAAA;AAAA,gBACC,SAAU,EAAA,kBAAA;AAAA,gBACV,EAAG,EAAA,gBAAA;AAAA,gBAEH,GAAK,EAAA,WAAA;AAAA,gBACL,KAAA,EAAO,EAAE,MAAA,EAAQ,MAAO,EAAA;AAAA,gBAEvB,QAAA,EAAA;AAAA,eAAA;AAAA,cAJG;AAAA;AAKN,WAAA;AAAA,UAjBI;AAAA;AAkBN,OACF;AAEA,MAAO,OAAA,OAAA;AAAA,KACT;AAEA,IACE,uBAAAC,eAAA;AAAA,MAACC,iBAAA;AAAA,MAAA;AAAA,QACE,GAAG,cAAA;AAAA,QACJ,KAAO,EAAA;AAAA,UACL,GAAG,cAAgB,EAAA,KAAA;AAAA,UACnB,aAAe,EAAA;AAAA,SACjB;AAAA,QAEC,QAAA,EAAA;AAAA,UAAA,SAAA;AAAA,0BACDJ,cAAA,CAACK,oBAAW,EAAA,EAAA,KAAA,EAAO,EAAE,IAAA,EAAM,GACxB,EAAA,QAAA,EAAA,UAAA,CAAW,kBAAoB,EAAA,QAAQ,CAAE,CAAA,MAAA;AAAA,4BACxCL,cAAA;AAAA,cAACM,yBAAA;AAAA,cAAA;AAAA,gBACC,UAAU,EAAA,IAAA;AAAA,gBACV,IAAIC,yBAAiB,CAAA,kBAAA;AAAA,gBAErB,KAAO,EAAA,EAAE,KAAO,EAAA,MAAA,EAAQ,QAAQ,MAAO;AAAA,eAAA;AAAA,cADnC;AAAA;AAEN,WAEJ,EAAA;AAAA;AAAA;AAAA,KACF;AAAA,KAED,CAAC,kBAAA,EAAoB,WAAW,iBAAmB,EAAA,cAAA,EAAgB,IAAI,CAAC,CAAA;AAC7E;;;;"}
@@ -0,0 +1,46 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var vuuLayout = require('@vuu-ui/vuu-layout');
5
+ var vuuUtils = require('@vuu-ui/vuu-utils');
6
+ var React = require('react');
7
+
8
+ const useLeftMainTabs = ({
9
+ appHeader,
10
+ htmlAttributes,
11
+ ToolbarProps
12
+ }) => {
13
+ if (ToolbarProps === void 0) {
14
+ throw Error("LeftMainTabs layout requires ToolbarProps");
15
+ }
16
+ return React.useMemo(() => {
17
+ return /* @__PURE__ */ jsxRuntime.jsxs(
18
+ vuuLayout.Flexbox,
19
+ {
20
+ ...htmlAttributes,
21
+ style: {
22
+ ...htmlAttributes?.style,
23
+ flexDirection: "column"
24
+ },
25
+ children: [
26
+ appHeader,
27
+ /* @__PURE__ */ jsxRuntime.jsx(
28
+ vuuLayout.StackLayout,
29
+ {
30
+ TabstripProps: {
31
+ className: `${vuuUtils.VuuShellLocation.MultiWorkspaceContainer}-tabs`
32
+ },
33
+ active: 0,
34
+ showTabs: "left",
35
+ style: { flex: 1 },
36
+ id: vuuUtils.VuuShellLocation.MultiWorkspaceContainer
37
+ }
38
+ )
39
+ ]
40
+ }
41
+ );
42
+ }, [appHeader, htmlAttributes]);
43
+ };
44
+
45
+ exports.useLeftMainTabs = useLeftMainTabs;
46
+ //# sourceMappingURL=useLeftMainTabs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useLeftMainTabs.js","sources":["../../../src/shell-layout-templates/left-main-tabs/useLeftMainTabs.tsx"],"sourcesContent":["import { Flexbox, StackLayout } from \"@vuu-ui/vuu-layout\";\n\nimport { VuuShellLocation } from \"@vuu-ui/vuu-utils\";\nimport { useMemo } from \"react\";\nimport { ShellLayoutTemplateHook } from \"../useShellLayout\";\n\nexport const useLeftMainTabs: ShellLayoutTemplateHook = ({\n appHeader,\n htmlAttributes,\n ToolbarProps,\n}) => {\n if (ToolbarProps === undefined) {\n throw Error(\"LeftMainTabs layout requires ToolbarProps\");\n }\n\n return useMemo(() => {\n return (\n <Flexbox\n {...htmlAttributes}\n style={{\n ...htmlAttributes?.style,\n flexDirection: \"column\",\n }}\n >\n {appHeader}\n <StackLayout\n TabstripProps={{\n className: `${VuuShellLocation.MultiWorkspaceContainer}-tabs`,\n }}\n active={0}\n showTabs=\"left\"\n style={{ flex: 1 }}\n id={VuuShellLocation.MultiWorkspaceContainer}\n />\n </Flexbox>\n );\n }, [appHeader, htmlAttributes]);\n};\n"],"names":["useMemo","jsxs","Flexbox","jsx","StackLayout","VuuShellLocation"],"mappings":";;;;;;;AAMO,MAAM,kBAA2C,CAAC;AAAA,EACvD,SAAA;AAAA,EACA,cAAA;AAAA,EACA;AACF,CAAM,KAAA;AACJ,EAAA,IAAI,iBAAiB,KAAW,CAAA,EAAA;AAC9B,IAAA,MAAM,MAAM,2CAA2C,CAAA;AAAA;AAGzD,EAAA,OAAOA,cAAQ,MAAM;AACnB,IACE,uBAAAC,eAAA;AAAA,MAACC,iBAAA;AAAA,MAAA;AAAA,QACE,GAAG,cAAA;AAAA,QACJ,KAAO,EAAA;AAAA,UACL,GAAG,cAAgB,EAAA,KAAA;AAAA,UACnB,aAAe,EAAA;AAAA,SACjB;AAAA,QAEC,QAAA,EAAA;AAAA,UAAA,SAAA;AAAA,0BACDC,cAAA;AAAA,YAACC,qBAAA;AAAA,YAAA;AAAA,cACC,aAAe,EAAA;AAAA,gBACb,SAAA,EAAW,CAAG,EAAAC,yBAAA,CAAiB,uBAAuB,CAAA,KAAA;AAAA,eACxD;AAAA,cACA,MAAQ,EAAA,CAAA;AAAA,cACR,QAAS,EAAA,MAAA;AAAA,cACT,KAAA,EAAO,EAAE,IAAA,EAAM,CAAE,EAAA;AAAA,cACjB,IAAIA,yBAAiB,CAAA;AAAA;AAAA;AACvB;AAAA;AAAA,KACF;AAAA,GAED,EAAA,CAAC,SAAW,EAAA,cAAc,CAAC,CAAA;AAChC;;;;"}
@@ -0,0 +1,6 @@
1
+ 'use strict';
2
+
3
+ var sidePanelCss = ".vuuShellSidePanel {\n transition: width .2s ease-out;\n width: var(--shell-left-nav-size);\n}";
4
+
5
+ module.exports = sidePanelCss;
6
+ //# sourceMappingURL=SidePanel.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SidePanel.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -0,0 +1,36 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var React = require('react');
5
+ var cx = require('clsx');
6
+ var styles = require('@salt-ds/styles');
7
+ var window = require('@salt-ds/window');
8
+ var SidePanel$1 = require('./SidePanel.css.js');
9
+
10
+ const classBase = "vuuShellSidePanel";
11
+ const SidePanel = ({
12
+ children,
13
+ open = true,
14
+ sizeClosed = 90,
15
+ sizeOpen = 200,
16
+ style: styleProp,
17
+ ...htmlAttributes
18
+ }) => {
19
+ const targetWindow = window.useWindow();
20
+ styles.useComponentCssInjection({
21
+ testId: "vuu-side-panel",
22
+ css: SidePanel$1,
23
+ window: targetWindow
24
+ });
25
+ const style = React.useMemo(
26
+ () => ({
27
+ ...styleProp,
28
+ "--shell-left-nav-size": open ? `${sizeOpen}px` : `${sizeClosed}px`
29
+ }),
30
+ [open, sizeClosed, sizeOpen, styleProp]
31
+ );
32
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { ...htmlAttributes, className: cx(classBase), style, children });
33
+ };
34
+
35
+ exports.SidePanel = SidePanel;
36
+ //# sourceMappingURL=SidePanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SidePanel.js","sources":["../../../src/shell-layout-templates/side-panel/SidePanel.tsx"],"sourcesContent":["import { CSSProperties, HTMLAttributes, useMemo } from \"react\";\nimport cx from \"clsx\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\n\nimport sidePanelCss from \"./SidePanel.css\";\n// import { useLayoutManager } from \"../../layout-management\";\n\nconst classBase = \"vuuShellSidePanel\";\n\nexport interface SidePanelProps extends HTMLAttributes<HTMLDivElement> {\n open?: boolean;\n path?: string;\n sizeOpen?: number;\n sizeClosed?: number;\n}\n\nexport const SidePanel = ({\n children,\n open = true,\n sizeClosed = 90,\n sizeOpen = 200,\n style: styleProp,\n ...htmlAttributes\n}: SidePanelProps) => {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"vuu-side-panel\",\n css: sidePanelCss,\n window: targetWindow,\n });\n\n // const { applicationJson, saveApplicationSettings } = useLayoutManager();\n // console.log(`settings`, {\n // expanded: applicationJson?.settings?.leftNav?.expanded,\n // active: applicationJson?.settings?.leftNav?.activeTabIndex,\n // });\n\n const style = useMemo(\n () =>\n ({\n ...styleProp,\n \"--shell-left-nav-size\": open ? `${sizeOpen}px` : `${sizeClosed}px`,\n } as CSSProperties),\n [open, sizeClosed, sizeOpen, styleProp]\n );\n return (\n <div {...htmlAttributes} className={cx(classBase)} style={style}>\n {children}\n </div>\n );\n};\n"],"names":["useWindow","useComponentCssInjection","sidePanelCss","useMemo","jsx"],"mappings":";;;;;;;;;AAQA,MAAM,SAAY,GAAA,mBAAA;AASX,MAAM,YAAY,CAAC;AAAA,EACxB,QAAA;AAAA,EACA,IAAO,GAAA,IAAA;AAAA,EACP,UAAa,GAAA,EAAA;AAAA,EACb,QAAW,GAAA,GAAA;AAAA,EACX,KAAO,EAAA,SAAA;AAAA,EACP,GAAG;AACL,CAAsB,KAAA;AACpB,EAAA,MAAM,eAAeA,gBAAU,EAAA;AAC/B,EAAyBC,+BAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,gBAAA;AAAA,IACR,GAAK,EAAAC,WAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAQD,EAAA,MAAM,KAAQ,GAAAC,aAAA;AAAA,IACZ,OACG;AAAA,MACC,GAAG,SAAA;AAAA,MACH,yBAAyB,IAAO,GAAA,CAAA,EAAG,QAAQ,CAAA,EAAA,CAAA,GAAO,GAAG,UAAU,CAAA,EAAA;AAAA,KACjE,CAAA;AAAA,IACF,CAAC,IAAA,EAAM,UAAY,EAAA,QAAA,EAAU,SAAS;AAAA,GACxC;AACA,EACE,uBAAAC,cAAA,CAAC,SAAK,GAAG,cAAA,EAAgB,WAAW,EAAG,CAAA,SAAS,CAAG,EAAA,KAAA,EAChD,QACH,EAAA,CAAA;AAEJ;;;;"}
@@ -0,0 +1,48 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var vuuLayout = require('@vuu-ui/vuu-layout');
5
+ var vuuUtils = require('@vuu-ui/vuu-utils');
6
+ var ContextPanel = require('../context-panel/ContextPanel.js');
7
+ var React = require('react');
8
+
9
+ const useSimpleContentPane = ({
10
+ appHeader,
11
+ htmlAttributes
12
+ }) => React.useMemo(
13
+ () => /* @__PURE__ */ jsxRuntime.jsxs(
14
+ vuuLayout.Flexbox,
15
+ {
16
+ ...htmlAttributes,
17
+ style: {
18
+ ...htmlAttributes?.style,
19
+ flexDirection: "row"
20
+ },
21
+ children: [
22
+ /* @__PURE__ */ jsxRuntime.jsxs(
23
+ vuuLayout.Flexbox,
24
+ {
25
+ className: "vuuShell-content",
26
+ style: { flex: 1, flexDirection: "column" },
27
+ children: [
28
+ appHeader,
29
+ /* @__PURE__ */ jsxRuntime.jsx(
30
+ vuuLayout.LayoutContainer,
31
+ {
32
+ id: vuuUtils.VuuShellLocation.WorkspaceContainer,
33
+ style: { flex: 1 }
34
+ },
35
+ "main-content"
36
+ )
37
+ ]
38
+ }
39
+ ),
40
+ /* @__PURE__ */ jsxRuntime.jsx(ContextPanel.ContextPanel, { id: vuuUtils.VuuShellLocation.ContextPanel, overlay: true })
41
+ ]
42
+ }
43
+ ),
44
+ [appHeader, htmlAttributes]
45
+ );
46
+
47
+ exports.useSimpleContentPane = useSimpleContentPane;
48
+ //# sourceMappingURL=useSimpleContentPane.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSimpleContentPane.js","sources":["../../../src/shell-layout-templates/simple-content-pane/useSimpleContentPane.tsx"],"sourcesContent":["import { LayoutContainer, Flexbox } from \"@vuu-ui/vuu-layout\";\nimport { VuuShellLocation } from \"@vuu-ui/vuu-utils\";\nimport { ContextPanel } from \"../context-panel\";\nimport { ShellLayoutTemplateHook } from \"../useShellLayout\";\nimport { useMemo } from \"react\";\n\nexport const useSimpleContentPane: ShellLayoutTemplateHook = ({\n appHeader,\n htmlAttributes,\n}) =>\n useMemo(\n () => (\n <Flexbox\n {...htmlAttributes}\n style={{\n ...htmlAttributes?.style,\n flexDirection: \"row\",\n }}\n >\n <Flexbox\n className=\"vuuShell-content\"\n style={{ flex: 1, flexDirection: \"column\" }}\n >\n {appHeader}\n <LayoutContainer\n id={VuuShellLocation.WorkspaceContainer}\n key=\"main-content\"\n style={{ flex: 1 }}\n />\n </Flexbox>\n <ContextPanel id={VuuShellLocation.ContextPanel} overlay></ContextPanel>\n </Flexbox>\n ),\n [appHeader, htmlAttributes],\n );\n"],"names":["useMemo","jsxs","Flexbox","jsx","LayoutContainer","VuuShellLocation","ContextPanel"],"mappings":";;;;;;;;AAMO,MAAM,uBAAgD,CAAC;AAAA,EAC5D,SAAA;AAAA,EACA;AACF,CACE,KAAAA,aAAA;AAAA,EACE,sBACEC,eAAA;AAAA,IAACC,iBAAA;AAAA,IAAA;AAAA,MACE,GAAG,cAAA;AAAA,MACJ,KAAO,EAAA;AAAA,QACL,GAAG,cAAgB,EAAA,KAAA;AAAA,QACnB,aAAe,EAAA;AAAA,OACjB;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAD,eAAA;AAAA,UAACC,iBAAA;AAAA,UAAA;AAAA,YACC,SAAU,EAAA,kBAAA;AAAA,YACV,KAAO,EAAA,EAAE,IAAM,EAAA,CAAA,EAAG,eAAe,QAAS,EAAA;AAAA,YAEzC,QAAA,EAAA;AAAA,cAAA,SAAA;AAAA,8BACDC,cAAA;AAAA,gBAACC,yBAAA;AAAA,gBAAA;AAAA,kBACC,IAAIC,yBAAiB,CAAA,kBAAA;AAAA,kBAErB,KAAA,EAAO,EAAE,IAAA,EAAM,CAAE;AAAA,iBAAA;AAAA,gBADb;AAAA;AAEN;AAAA;AAAA,SACF;AAAA,uCACCC,yBAAa,EAAA,EAAA,EAAA,EAAID,yBAAiB,CAAA,YAAA,EAAc,SAAO,IAAC,EAAA;AAAA;AAAA;AAAA,GAC3D;AAAA,EAEF,CAAC,WAAW,cAAc;AAC5B;;;;"}
@@ -0,0 +1,23 @@
1
+ 'use strict';
2
+
3
+ var useFullHeightLeftPanel = require('./full-height-left-panel/useFullHeightLeftPanel.js');
4
+ var useInlayLeftPanel = require('./inlay-left-panel/useInlayLeftPanel.js');
5
+ var useLeftMainTabs = require('./left-main-tabs/useLeftMainTabs.js');
6
+ var useSimpleContentPane = require('./simple-content-pane/useSimpleContentPane.js');
7
+
8
+ const LayoutHook = {
9
+ "full-height": useFullHeightLeftPanel.useFullHeightLeftPanel,
10
+ inlay: useInlayLeftPanel.useInlayLeftPanel,
11
+ "left-main-tabs": useLeftMainTabs.useLeftMainTabs,
12
+ "simple-content-pane": useSimpleContentPane.useSimpleContentPane
13
+ };
14
+ const useShellLayout = ({
15
+ layoutTemplateId = "simple-content-pane",
16
+ ...props
17
+ }) => {
18
+ const useLayoutHook = LayoutHook[layoutTemplateId];
19
+ return useLayoutHook(props);
20
+ };
21
+
22
+ exports.useShellLayout = useShellLayout;
23
+ //# sourceMappingURL=useShellLayout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useShellLayout.js","sources":["../../src/shell-layout-templates/useShellLayout.ts"],"sourcesContent":["import { HTMLAttributes, ReactElement, ReactNode } from \"react\";\nimport { useFullHeightLeftPanel } from \"./full-height-left-panel/useFullHeightLeftPanel\";\nimport { useInlayLeftPanel } from \"./inlay-left-panel/useInlayLeftPanel\";\nimport { useLeftMainTabs } from \"./left-main-tabs/useLeftMainTabs\";\nimport { useSimpleContentPane } from \"./simple-content-pane/useSimpleContentPane\";\nimport { SidePanelProps as ShellSidePanelProps } from \"./side-panel\";\n\nconst LayoutHook = {\n \"full-height\": useFullHeightLeftPanel,\n inlay: useInlayLeftPanel,\n \"left-main-tabs\": useLeftMainTabs,\n \"simple-content-pane\": useSimpleContentPane,\n};\n\nexport type LayoutTemplateId = keyof typeof LayoutHook;\n\nexport type ShellLayoutTemplateProps = Omit<\n ShellLayoutProps,\n \"layoutTemplateId\"\n>;\n\nexport type ShellToolbarProps = {\n children: ReactNode;\n position?: \"left\";\n width?: number;\n};\n\nexport type ShellLayoutTemplateHook = (\n props: ShellLayoutTemplateProps,\n) => ReactElement;\n\n/**\n * The Shell Layout is the outermost 'chrome' of the appliciation,\n * enclosing the main content area. It will be rendered by one of\n * two available templates, determined by the layoutTemplateId,\n */\nexport interface ShellLayoutProps {\n /**\n * App Header will be rendered in position determined by layout-template\n */\n appHeader?: ReactNode;\n\n /**\n * HTML attributes that will be applied to root div.\n */\n htmlAttributes?: HTMLAttributes<HTMLDivElement>;\n /**\n * identifier for shell layout template to be used. Default template\n * will be \"inlay\"\n */\n layoutTemplateId?: LayoutTemplateId;\n /**\n * If template renders SidePanel, these props will be provided\n */\n SidePanelProps?: ShellSidePanelProps;\n /**\n * If template renders Toolbar, these props will be provided\n */\n ToolbarProps?: ShellToolbarProps;\n}\n\n/**\n * This hook acts as a stub for the actual shell layout\n * template hooks. It will delegate to the appropriate shell\n * layout hook, based on the value of layoutTemplateId.\n */\nexport const useShellLayout = ({\n layoutTemplateId = \"simple-content-pane\",\n ...props\n}: ShellLayoutProps) => {\n const useLayoutHook = LayoutHook[layoutTemplateId];\n return useLayoutHook(props);\n};\n"],"names":["useFullHeightLeftPanel","useInlayLeftPanel","useLeftMainTabs","useSimpleContentPane"],"mappings":";;;;;;;AAOA,MAAM,UAAa,GAAA;AAAA,EACjB,aAAe,EAAAA,6CAAA;AAAA,EACf,KAAO,EAAAC,mCAAA;AAAA,EACP,gBAAkB,EAAAC,+BAAA;AAAA,EAClB,qBAAuB,EAAAC;AACzB,CAAA;AAsDO,MAAM,iBAAiB,CAAC;AAAA,EAC7B,gBAAmB,GAAA,qBAAA;AAAA,EACnB,GAAG;AACL,CAAwB,KAAA;AACtB,EAAM,MAAA,aAAA,GAAgB,WAAW,gBAAgB,CAAA;AACjD,EAAA,OAAO,cAAc,KAAK,CAAA;AAC5B;;;;"}
@@ -0,0 +1,6 @@
1
+ 'use strict';
2
+
3
+ var shellCss = ".vuuShell {\n background-color: var(\n --vuuShell-background,\n var(--salt-container-primary-background)\n );\n height: var(--vuuShell-height, 100vh);\n width: var(--vuuShell-width, 100vw);\n\n .left-main-tabs {\n --vuuOverflowContainer-width: 48px;\n }\n}\n\n.vuu-workspace-tabs {\n background: var(\n --vuuWorkspace-background,\n var(--salt-container-primary-background)\n );\n}\n\n.vuuShell-palette {\n --vuuView-border: none;\n --vuuView-margin: 0;\n}\n\n.vuuShell-warningPlaceholder {\n background-color: var(--salt-container-background-high);\n height: 100%;\n}\n\n/* until we reinstat5e the toolbar */\n.vuuToolbarProxy {\n background: var(--salt-container-primary-background);\n}\n\n.vuu-workspace-tabs > .vuuTabstrip > .vuuOverflowContainer-wrapContainer {\n background: var(--vuuShell-background, var(--vuu-color-gray-25));\n}\n\n.vuu-workspace-tabs {\n --vuuTab-height: 28px;\n border: solid 1px var(--salt-separable-primary-borderColor);\n border-top: none !important;\n border-radius: 6px;\n height: 100%;\n padding: 36px 8px 8px 8px;\n position: relative;\n width: 100%;\n}\n\n.vuu-workspace-tabs > .vuuTabstrip {\n left: 0px;\n padding-bottom: 7px;\n position: absolute !important;\n right: 0px;\n top: 0;\n}\n\n.vuuShell-content {\n padding: var(--vuuShell-content-padding, 8px);\n}\n";
4
+
5
+ module.exports = shellCss;
6
+ //# sourceMappingURL=shell.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shell.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
package/cjs/shell.js ADDED
@@ -0,0 +1,161 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var vuuDataRemote = require('@vuu-ui/vuu-data-remote');
5
+ var vuuLayout = require('@vuu-ui/vuu-layout');
6
+ var vuuPopups = require('@vuu-ui/vuu-popups');
7
+ var vuuUtils = require('@vuu-ui/vuu-utils');
8
+ var styles = require('@salt-ds/styles');
9
+ var window = require('@salt-ds/window');
10
+ var React = require('react');
11
+ var AppHeader = require('./app-header/AppHeader.js');
12
+ var ApplicationProvider = require('./application-provider/ApplicationProvider.js');
13
+ var PersistenceProvider = require('./persistence-manager/PersistenceProvider.js');
14
+ var LocalPersistenceManager = require('./persistence-manager/LocalPersistenceManager.js');
15
+ require('@vuu-ui/vuu-ui-controls');
16
+ require('@salt-ds/core');
17
+ require('clsx');
18
+ require('./persistence-manager/StaticPersistenceManager.js');
19
+ var useShellLayout = require('./shell-layout-templates/useShellLayout.js');
20
+ var UserSettingsPanel = require('./user-settings/UserSettingsPanel.js');
21
+ require('html-to-image');
22
+ var WorkspaceProvider = require('./workspace-management/WorkspaceProvider.js');
23
+ require('./feature-and-layout-provider/FeatureAndLayoutProvider.js');
24
+ var defaultWorkspaceJSON = require('./workspace-management/defaultWorkspaceJSON.js');
25
+ var useWorkspaceContextMenuItems = require('./workspace-management/useWorkspaceContextMenuItems.js');
26
+ var shell = require('./shell.css.js');
27
+ var vuuContextMenu = require('@vuu-ui/vuu-context-menu');
28
+
29
+ vuuUtils.registerComponent("ApplicationSettings", UserSettingsPanel.UserSettingsPanel, "view");
30
+ if (process.env.NODE_ENV === "production") {
31
+ if (typeof vuuLayout.StackLayout !== "function") {
32
+ console.warn(
33
+ "StackLayout module not loaded, will be unable to deserialize from layout JSON"
34
+ );
35
+ }
36
+ }
37
+ const { error } = vuuUtils.logger("Shell");
38
+ const defaultAppHeader = /* @__PURE__ */ jsxRuntime.jsx(AppHeader.AppHeader, {});
39
+ const getAppHeader = (shellLayoutProps) => shellLayoutProps?.appHeader ?? defaultAppHeader;
40
+ const defaultHTMLAttributes = {
41
+ className: "vuuShell"
42
+ };
43
+ const getHTMLAttributes = (props) => {
44
+ if (props?.htmlAttributes) {
45
+ return {
46
+ ...defaultHTMLAttributes,
47
+ ...props.htmlAttributes
48
+ };
49
+ } else {
50
+ return defaultHTMLAttributes;
51
+ }
52
+ };
53
+ const VuuApplication = ({
54
+ shellLayoutProps: ShellLayoutProps2,
55
+ children,
56
+ // loginUrl, // need to make this available to app header
57
+ serverUrl,
58
+ user
59
+ }) => {
60
+ const targetWindow = window.useWindow();
61
+ styles.useComponentCssInjection({
62
+ testId: "vuu-shell",
63
+ css: shell,
64
+ window: targetWindow
65
+ });
66
+ const notify = vuuPopups.useNotifications();
67
+ const { workspaceJSON, saveApplicationLayout } = WorkspaceProvider.useWorkspace();
68
+ const { buildMenuOptions, handleMenuAction } = useWorkspaceContextMenuItems.useWorkspaceContextMenuItems();
69
+ const handleLayoutChange = React.useCallback(
70
+ (layout) => {
71
+ try {
72
+ saveApplicationLayout(layout);
73
+ } catch {
74
+ error?.("Failed to save layout");
75
+ }
76
+ },
77
+ [saveApplicationLayout]
78
+ );
79
+ React.useMemo(async () => {
80
+ if (serverUrl && user.token) {
81
+ const connectionResult = await vuuDataRemote.ConnectionManager.connect({
82
+ token: user.token,
83
+ url: serverUrl,
84
+ username: user.username
85
+ });
86
+ if (connectionResult === "rejected") {
87
+ notify({
88
+ type: "error",
89
+ body: "Unable to connect to VUU Server",
90
+ header: "Error"
91
+ });
92
+ }
93
+ } else {
94
+ console.warn(
95
+ `Shell: serverUrl: '${serverUrl}', token: '${Array(user.token.length).fill("#").join("")}'
96
+ `
97
+ );
98
+ }
99
+ }, [notify, serverUrl, user.token, user.username]);
100
+ const isLayoutLoading = workspaceJSON === defaultWorkspaceJSON.loadingJSON;
101
+ const initialLayout = useShellLayout.useShellLayout({
102
+ ...ShellLayoutProps2,
103
+ appHeader: getAppHeader(ShellLayoutProps2),
104
+ htmlAttributes: getHTMLAttributes(ShellLayoutProps2)
105
+ });
106
+ return isLayoutLoading ? null : /* @__PURE__ */ jsxRuntime.jsxs(
107
+ vuuContextMenu.ContextMenuProvider,
108
+ {
109
+ menuActionHandler: handleMenuAction,
110
+ menuBuilder: buildMenuOptions,
111
+ children: [
112
+ /* @__PURE__ */ jsxRuntime.jsx(
113
+ vuuLayout.LayoutProvider,
114
+ {
115
+ workspaceJSON,
116
+ onLayoutChange: handleLayoutChange,
117
+ children: initialLayout
118
+ }
119
+ ),
120
+ children
121
+ ]
122
+ }
123
+ );
124
+ };
125
+ const Shell = ({
126
+ loginUrl,
127
+ user,
128
+ userSettingsSchema,
129
+ workspaceProps,
130
+ ...props
131
+ }) => {
132
+ const persistenceManager = PersistenceProvider.usePersistenceManager();
133
+ const localPersistenceManager = React.useMemo(() => {
134
+ if (persistenceManager) {
135
+ return void 0;
136
+ }
137
+ console.log(
138
+ `No Persistence Manager, configuration data will be persisted to Local Storage, key: 'vuu/${user.username}'`
139
+ );
140
+ return new LocalPersistenceManager.LocalPersistenceManager(`vuu/${user.username}`);
141
+ }, [persistenceManager, user.username]);
142
+ const shellProviders = /* @__PURE__ */ jsxRuntime.jsx(
143
+ ApplicationProvider.ApplicationProvider,
144
+ {
145
+ density: "high",
146
+ loginUrl,
147
+ theme: "vuu-theme",
148
+ user,
149
+ userSettingsSchema,
150
+ children: /* @__PURE__ */ jsxRuntime.jsx(WorkspaceProvider.WorkspaceProvider, { ...workspaceProps, children: /* @__PURE__ */ jsxRuntime.jsx(vuuPopups.DialogProvider, { children: /* @__PURE__ */ jsxRuntime.jsx(vuuPopups.NotificationsProvider, { children: /* @__PURE__ */ jsxRuntime.jsx(VuuApplication, { ...props, user }) }) }) })
151
+ }
152
+ );
153
+ if (persistenceManager) {
154
+ return shellProviders;
155
+ } else {
156
+ return /* @__PURE__ */ jsxRuntime.jsx(PersistenceProvider.PersistenceProvider, { persistenceManager: localPersistenceManager, children: shellProviders });
157
+ }
158
+ };
159
+
160
+ exports.Shell = Shell;
161
+ //# sourceMappingURL=shell.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shell.js","sources":["../src/shell.tsx"],"sourcesContent":["import { ConnectionManager } from \"@vuu-ui/vuu-data-remote\";\nimport type { LayoutChangeHandler } from \"@vuu-ui/vuu-layout\";\nimport { LayoutProvider, StackLayout } from \"@vuu-ui/vuu-layout\";\nimport {\n DialogProvider,\n NotificationsProvider,\n useNotifications,\n} from \"@vuu-ui/vuu-popups\";\nimport { VuuUser, logger, registerComponent } from \"@vuu-ui/vuu-utils\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { HTMLAttributes, ReactNode, useCallback, useMemo } from \"react\";\nimport { AppHeader } from \"./app-header\";\nimport { ApplicationProvider } from \"./application-provider\";\nimport {\n IPersistenceManager,\n LocalPersistenceManager,\n PersistenceProvider,\n usePersistenceManager,\n} from \"./persistence-manager\";\nimport { ShellLayoutProps, useShellLayout } from \"./shell-layout-templates\";\nimport { SettingsSchema, UserSettingsPanel } from \"./user-settings\";\nimport {\n WorkspaceProps,\n WorkspaceProvider,\n useWorkspace,\n useWorkspaceContextMenuItems,\n} from \"./workspace-management\";\n\nimport shellCss from \"./shell.css\";\nimport { loadingJSON } from \"./workspace-management/defaultWorkspaceJSON\";\nimport { ContextMenuProvider } from \"@vuu-ui/vuu-context-menu\";\n\nregisterComponent(\"ApplicationSettings\", UserSettingsPanel, \"view\");\n\nif (process.env.NODE_ENV === \"production\") {\n // StackLayout is loaded just to force component registration, we know it will be\n // required when default layout is instantiated. This is only required in prod\n // to avoif tree shaking the Stack away. Causes a runtime issue in dev.\n if (typeof StackLayout !== \"function\") {\n console.warn(\n \"StackLayout module not loaded, will be unable to deserialize from layout JSON\",\n );\n }\n}\n\nconst { error } = logger(\"Shell\");\n\nexport type LayoutTemplateName = \"full-height\" | \"inlay\";\n\nexport interface ShellProps extends HTMLAttributes<HTMLDivElement> {\n shellLayoutProps?: ShellLayoutProps;\n userSettingsSchema?: SettingsSchema;\n workspaceProps?: WorkspaceProps;\n children?: ReactNode;\n loginUrl?: string;\n saveUrl?: string;\n serverUrl?: string;\n user: VuuUser;\n}\n\nconst defaultAppHeader = <AppHeader />;\n\nconst getAppHeader = (shellLayoutProps?: ShellLayoutProps) =>\n shellLayoutProps?.appHeader ?? defaultAppHeader;\n\nconst defaultHTMLAttributes: HTMLAttributes<HTMLDivElement> = {\n className: \"vuuShell\",\n};\n\nconst getHTMLAttributes = (props?: ShellLayoutProps) => {\n if (props?.htmlAttributes) {\n return {\n ...defaultHTMLAttributes,\n ...props.htmlAttributes,\n };\n } else {\n return defaultHTMLAttributes;\n }\n};\n\nconst VuuApplication = ({\n shellLayoutProps: ShellLayoutProps,\n children,\n // loginUrl, // need to make this available to app header\n serverUrl,\n user,\n}: Omit<\n ShellProps,\n \"ContentLayoutProps\" | \"loginUrl\" | \"userSettingsSchema\" | \"workspaceProps\"\n>) => {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"vuu-shell\",\n css: shellCss,\n window: targetWindow,\n });\n\n const notify = useNotifications();\n const { workspaceJSON, saveApplicationLayout } = useWorkspace();\n\n const { buildMenuOptions, handleMenuAction } = useWorkspaceContextMenuItems();\n\n const handleLayoutChange = useCallback<LayoutChangeHandler>(\n (layout) => {\n try {\n saveApplicationLayout(layout);\n } catch {\n error?.(\"Failed to save layout\");\n }\n },\n [saveApplicationLayout],\n );\n\n useMemo(async () => {\n if (serverUrl && user.token) {\n const connectionResult = await ConnectionManager.connect({\n token: user.token,\n url: serverUrl,\n username: user.username,\n });\n if (connectionResult === \"rejected\") {\n notify({\n type: \"error\",\n body: \"Unable to connect to VUU Server\",\n header: \"Error\",\n });\n }\n } else {\n console.warn(\n `Shell: serverUrl: '${serverUrl}', token: '${Array(user.token.length)\n .fill(\"#\")\n .join(\"\")}' \n `,\n );\n }\n }, [notify, serverUrl, user.token, user.username]);\n\n const isLayoutLoading = workspaceJSON === loadingJSON;\n\n const initialLayout = useShellLayout({\n ...ShellLayoutProps,\n appHeader: getAppHeader(ShellLayoutProps),\n htmlAttributes: getHTMLAttributes(ShellLayoutProps),\n });\n\n return isLayoutLoading ? null : (\n <ContextMenuProvider\n menuActionHandler={handleMenuAction}\n menuBuilder={buildMenuOptions}\n >\n <LayoutProvider\n workspaceJSON={workspaceJSON}\n onLayoutChange={handleLayoutChange}\n >\n {initialLayout}\n </LayoutProvider>\n {children}\n </ContextMenuProvider>\n );\n};\n\nexport const Shell = ({\n loginUrl,\n user,\n userSettingsSchema,\n workspaceProps,\n ...props\n}: ShellProps) => {\n // If user has provided an implementation of IPersistenceManager\n // by wrapping higher level PersistenceProvider, use it, otw\n // default to LocalPersistenceManager\n const persistenceManager = usePersistenceManager();\n const localPersistenceManager = useMemo<\n IPersistenceManager | undefined\n >(() => {\n if (persistenceManager) {\n return undefined;\n }\n console.log(\n `No Persistence Manager, configuration data will be persisted to Local Storage, key: 'vuu/${user.username}'`,\n );\n return new LocalPersistenceManager(`vuu/${user.username}`);\n }, [persistenceManager, user.username]);\n\n // ApplicationProvider must go outside Dialog and Notification providers\n // ApplicationProvider injects the SaltProvider and this must be the root\n // SaltProvider.\n\n const shellProviders = (\n <ApplicationProvider\n density=\"high\"\n loginUrl={loginUrl}\n theme=\"vuu-theme\"\n user={user}\n userSettingsSchema={userSettingsSchema}\n >\n <WorkspaceProvider {...workspaceProps}>\n <DialogProvider>\n <NotificationsProvider>\n <VuuApplication {...props} user={user} />\n </NotificationsProvider>\n </DialogProvider>\n </WorkspaceProvider>\n </ApplicationProvider>\n );\n\n if (persistenceManager) {\n return shellProviders;\n } else {\n return (\n <PersistenceProvider persistenceManager={localPersistenceManager}>\n {shellProviders}\n </PersistenceProvider>\n );\n }\n};\n"],"names":["registerComponent","UserSettingsPanel","StackLayout","logger","AppHeader","ShellLayoutProps","useWindow","useComponentCssInjection","shellCss","useNotifications","useWorkspace","useWorkspaceContextMenuItems","useCallback","useMemo","ConnectionManager","loadingJSON","useShellLayout","jsxs","ContextMenuProvider","jsx","LayoutProvider","usePersistenceManager","LocalPersistenceManager","ApplicationProvider","WorkspaceProvider","DialogProvider","NotificationsProvider","PersistenceProvider"],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ 'use strict';
2
+
3
+ var themeSwitchCss = "\n.vuuThemeSwitch {\n --saltButton-minWidth: 22px;\n --svg-light: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 48 48\"><path d=\"M24 31q2.9 0 4.95-2.05Q31 26.9 31 24q0-2.9-2.05-4.95Q26.9 17 24 17q-2.9 0-4.95 2.05Q17 21.1 17 24q0 2.9 2.05 4.95Q21.1 31 24 31Zm0 3q-4.15 0-7.075-2.925T14 24q0-4.15 2.925-7.075T24 14q4.15 0 7.075 2.925T34 24q0 4.15-2.925 7.075T24 34ZM3.5 25.5q-.65 0-1.075-.425Q2 24.65 2 24q0-.65.425-1.075Q2.85 22.5 3.5 22.5h5q.65 0 1.075.425Q10 23.35 10 24q0 .65-.425 1.075-.425.425-1.075.425Zm36 0q-.65 0-1.075-.425Q38 24.65 38 24q0-.65.425-1.075.425-.425 1.075-.425h5q.65 0 1.075.425Q46 23.35 46 24q0 .65-.425 1.075-.425.425-1.075.425ZM24 10q-.65 0-1.075-.425Q22.5 9.15 22.5 8.5v-5q0-.65.425-1.075Q23.35 2 24 2q.65 0 1.075.425.425.425.425 1.075v5q0 .65-.425 1.075Q24.65 10 24 10Zm0 36q-.65 0-1.075-.425-.425-.425-.425-1.075v-5q0-.65.425-1.075Q23.35 38 24 38q.65 0 1.075.425.425.425.425 1.075v5q0 .65-.425 1.075Q24.65 46 24 46ZM12 14.1l-2.85-2.8q-.45-.45-.425-1.075.025-.625.425-1.075.45-.45 1.075-.45t1.075.45L14.1 12q.4.45.4 1.05 0 .6-.4 1-.4.45-1.025.45-.625 0-1.075-.4Zm24.7 24.75L33.9 36q-.4-.45-.4-1.075t.45-1.025q.4-.45 1-.45t1.05.45l2.85 2.8q.45.45.425 1.075-.025.625-.425 1.075-.45.45-1.075.45t-1.075-.45ZM33.9 14.1q-.45-.45-.45-1.05 0-.6.45-1.05l2.8-2.85q.45-.45 1.075-.425.625.025 1.075.425.45.45.45 1.075t-.45 1.075L36 14.1q-.4.4-1.025.4-.625 0-1.075-.4ZM9.15 38.85q-.45-.45-.45-1.075t.45-1.075L12 33.9q.45-.45 1.05-.45.6 0 1.05.45.45.45.45 1.05 0 .6-.45 1.05l-2.8 2.85q-.45.45-1.075.425-.625-.025-1.075-.425ZM24 24Z\"/></svg>');\n --svg-dark: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 48 48\"><path d=\"M24 42q-7.5 0-12.75-5.25T6 24q0-7.5 5.25-12.75T24 6q.4 0 .85.025.45.025 1.15.075-1.8 1.6-2.8 3.95-1 2.35-1 4.95 0 4.5 3.15 7.65Q28.5 25.8 33 25.8q2.6 0 4.95-.925T41.9 22.3q.05.6.075.975Q42 23.65 42 24q0 7.5-5.25 12.75T24 42Zm0-3q5.45 0 9.5-3.375t5.05-7.925q-1.25.55-2.675.825Q34.45 28.8 33 28.8q-5.75 0-9.775-4.025T19.2 15q0-1.2.25-2.575.25-1.375.9-3.125-4.9 1.35-8.125 5.475Q9 18.9 9 24q0 6.25 4.375 10.625T24 39Zm-.2-14.85Z\"/></svg>');\n padding: 2px;\n}\n\n.salt-density-high .vuuThemeSwitch {\n --saltButton-minWidth: 16px;\n --saltButton-width: 18px;\n --vuuThemeSwitch-iconSize: 16px;\n}\n\n.vuuThemeSwitch [data-icon] {\n --vuu-icon-size: var(--vuuThemeSwitch-iconSize,18px);\n}\n\n.vuuThemeSwitch [data-icon='light'] {\n --vuu-icon-svg: var(--svg-light);\n}\n.vuuThemeSwitch [data-icon='dark'] {\n --vuu-icon-svg: var(--svg-dark);\n}\n\n.vuuThemeSwitch .saltToggleButton {\n height: 20px;\n width: 20px;\n}\n\n";
4
+
5
+ module.exports = themeSwitchCss;
6
+ //# sourceMappingURL=ThemeSwitch.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThemeSwitch.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -0,0 +1,56 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var cx = require('clsx');
5
+ var core = require('@salt-ds/core');
6
+ var styles = require('@salt-ds/styles');
7
+ var window = require('@salt-ds/window');
8
+ var React = require('react');
9
+ var ThemeSwitch$1 = require('./ThemeSwitch.css.js');
10
+
11
+ const classBase = "vuuThemeSwitch";
12
+ const ThemeSwitch = ({
13
+ className: classNameProp,
14
+ defaultMode: defaultModeProp,
15
+ mode: modeProp,
16
+ onChange,
17
+ ...htmlAttributes
18
+ }) => {
19
+ const targetWindow = window.useWindow();
20
+ styles.useComponentCssInjection({
21
+ testId: "vuu-theme-switch",
22
+ css: ThemeSwitch$1,
23
+ window: targetWindow
24
+ });
25
+ const [mode, setMode] = core.useControlled({
26
+ controlled: modeProp,
27
+ default: defaultModeProp ?? "light",
28
+ name: "ThemeSwitch",
29
+ state: "mode"
30
+ });
31
+ const handleChangeSecondary = React.useCallback(
32
+ (evt) => {
33
+ const { value } = evt.target;
34
+ setMode(value);
35
+ onChange(value);
36
+ },
37
+ [onChange, setMode]
38
+ );
39
+ const className = cx(classBase, classNameProp);
40
+ return /* @__PURE__ */ jsxRuntime.jsxs(
41
+ core.ToggleButtonGroup,
42
+ {
43
+ className,
44
+ ...htmlAttributes,
45
+ onChange: handleChangeSecondary,
46
+ value: mode,
47
+ children: [
48
+ /* @__PURE__ */ jsxRuntime.jsx(core.ToggleButton, { "aria-label": "alert", "data-icon": "light", value: "light" }),
49
+ /* @__PURE__ */ jsxRuntime.jsx(core.ToggleButton, { "aria-label": "home", "data-icon": "dark", value: "dark" })
50
+ ]
51
+ }
52
+ );
53
+ };
54
+
55
+ exports.ThemeSwitch = ThemeSwitch;
56
+ //# sourceMappingURL=ThemeSwitch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThemeSwitch.js","sources":["../../src/theme-switch/ThemeSwitch.tsx"],"sourcesContent":["import cx from \"clsx\";\nimport { ToggleButton, ToggleButtonGroup, useControlled } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { HTMLAttributes, SyntheticEvent, useCallback } from \"react\";\nimport { ThemeMode } from \"@vuu-ui/vuu-utils\";\n\nimport themeSwitchCss from \"./ThemeSwitch.css\";\n\nconst classBase = \"vuuThemeSwitch\";\nexport interface ThemeSwitchProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n defaultMode?: ThemeMode;\n mode?: ThemeMode;\n onChange: (mode: ThemeMode) => void;\n}\n\nexport const ThemeSwitch = ({\n className: classNameProp,\n defaultMode: defaultModeProp,\n mode: modeProp,\n onChange,\n ...htmlAttributes\n}: ThemeSwitchProps) => {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"vuu-theme-switch\",\n css: themeSwitchCss,\n window: targetWindow,\n });\n\n const [mode, setMode] = useControlled<ThemeMode>({\n controlled: modeProp,\n default: defaultModeProp ?? \"light\",\n name: \"ThemeSwitch\",\n state: \"mode\",\n });\n\n const handleChangeSecondary = useCallback(\n (evt: SyntheticEvent<HTMLButtonElement>) => {\n const { value } = evt.target as HTMLButtonElement;\n setMode(value as ThemeMode);\n onChange(value as ThemeMode);\n },\n [onChange, setMode],\n );\n const className = cx(classBase, classNameProp);\n return (\n <ToggleButtonGroup\n className={className}\n {...htmlAttributes}\n onChange={handleChangeSecondary}\n value={mode}\n >\n <ToggleButton aria-label=\"alert\" data-icon=\"light\" value=\"light\" />\n <ToggleButton aria-label=\"home\" data-icon=\"dark\" value=\"dark\" />\n </ToggleButtonGroup>\n );\n};\n"],"names":["useWindow","useComponentCssInjection","themeSwitchCss","useControlled","useCallback","jsxs","ToggleButtonGroup","jsx","ToggleButton"],"mappings":";;;;;;;;;;AASA,MAAM,SAAY,GAAA,gBAAA;AAQX,MAAM,cAAc,CAAC;AAAA,EAC1B,SAAW,EAAA,aAAA;AAAA,EACX,WAAa,EAAA,eAAA;AAAA,EACb,IAAM,EAAA,QAAA;AAAA,EACN,QAAA;AAAA,EACA,GAAG;AACL,CAAwB,KAAA;AACtB,EAAA,MAAM,eAAeA,gBAAU,EAAA;AAC/B,EAAyBC,+BAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,kBAAA;AAAA,IACR,GAAK,EAAAC,aAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIC,kBAAyB,CAAA;AAAA,IAC/C,UAAY,EAAA,QAAA;AAAA,IACZ,SAAS,eAAmB,IAAA,OAAA;AAAA,IAC5B,IAAM,EAAA,aAAA;AAAA,IACN,KAAO,EAAA;AAAA,GACR,CAAA;AAED,EAAA,MAAM,qBAAwB,GAAAC,iBAAA;AAAA,IAC5B,CAAC,GAA2C,KAAA;AAC1C,MAAM,MAAA,EAAE,KAAM,EAAA,GAAI,GAAI,CAAA,MAAA;AACtB,MAAA,OAAA,CAAQ,KAAkB,CAAA;AAC1B,MAAA,QAAA,CAAS,KAAkB,CAAA;AAAA,KAC7B;AAAA,IACA,CAAC,UAAU,OAAO;AAAA,GACpB;AACA,EAAM,MAAA,SAAA,GAAY,EAAG,CAAA,SAAA,EAAW,aAAa,CAAA;AAC7C,EACE,uBAAAC,eAAA;AAAA,IAACC,sBAAA;AAAA,IAAA;AAAA,MACC,SAAA;AAAA,MACC,GAAG,cAAA;AAAA,MACJ,QAAU,EAAA,qBAAA;AAAA,MACV,KAAO,EAAA,IAAA;AAAA,MAEP,QAAA,EAAA;AAAA,wBAAAC,cAAA,CAACC,qBAAa,YAAW,EAAA,OAAA,EAAQ,WAAU,EAAA,OAAA,EAAQ,OAAM,OAAQ,EAAA,CAAA;AAAA,uCAChEA,iBAAa,EAAA,EAAA,YAAA,EAAW,QAAO,WAAU,EAAA,MAAA,EAAO,OAAM,MAAO,EAAA;AAAA;AAAA;AAAA,GAChE;AAEJ;;;;"}
@@ -0,0 +1,6 @@
1
+ 'use strict';
2
+
3
+ var settingsFormCss = ".vuuSettingsForm {\n display: flex;\n flex-direction: column;\n gap: var(--salt-spacing-200);\n}\n";
4
+
5
+ module.exports = settingsFormCss;
6
+ //# sourceMappingURL=SettingsForm.css.js.map