@webiny/app-admin-ui 0.0.0-unstable.0156a4c312

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 (270) hide show
  1. package/Breadcrumbs/Breadcrumbs.d.ts +14 -0
  2. package/Breadcrumbs/Breadcrumbs.js +74 -0
  3. package/Breadcrumbs/Breadcrumbs.js.map +1 -0
  4. package/CommandPalette/CommandPalette.d.ts +6 -0
  5. package/CommandPalette/CommandPalette.js +202 -0
  6. package/CommandPalette/CommandPalette.js.map +1 -0
  7. package/CommandPalette/components/AiModeBadge.d.ts +3 -0
  8. package/CommandPalette/components/AiModeBadge.js +11 -0
  9. package/CommandPalette/components/AiModeBadge.js.map +1 -0
  10. package/CommandPalette/components/AiSuggestions.d.ts +9 -0
  11. package/CommandPalette/components/AiSuggestions.js +32 -0
  12. package/CommandPalette/components/AiSuggestions.js.map +1 -0
  13. package/CommandPalette/components/AiTurn.d.ts +11 -0
  14. package/CommandPalette/components/AiTurn.js +61 -0
  15. package/CommandPalette/components/AiTurn.js.map +1 -0
  16. package/CommandPalette/components/AnswerSkeleton.d.ts +6 -0
  17. package/CommandPalette/components/AnswerSkeleton.js +20 -0
  18. package/CommandPalette/components/AnswerSkeleton.js.map +1 -0
  19. package/CommandPalette/components/ApprovalPlan.d.ts +16 -0
  20. package/CommandPalette/components/ApprovalPlan.js +56 -0
  21. package/CommandPalette/components/ApprovalPlan.js.map +1 -0
  22. package/CommandPalette/components/CommandDetail.d.ts +13 -0
  23. package/CommandPalette/components/CommandDetail.js +39 -0
  24. package/CommandPalette/components/CommandDetail.js.map +1 -0
  25. package/CommandPalette/components/CommandItemRow.d.ts +5 -0
  26. package/CommandPalette/components/CommandItemRow.js +41 -0
  27. package/CommandPalette/components/CommandItemRow.js.map +1 -0
  28. package/CommandPalette/components/GroupHeading.d.ts +4 -0
  29. package/CommandPalette/components/GroupHeading.js +10 -0
  30. package/CommandPalette/components/GroupHeading.js.map +1 -0
  31. package/CommandPalette/components/HintIcon.d.ts +4 -0
  32. package/CommandPalette/components/HintIcon.js +11 -0
  33. package/CommandPalette/components/HintIcon.js.map +1 -0
  34. package/CommandPalette/components/Kbd.d.ts +4 -0
  35. package/CommandPalette/components/Kbd.js +14 -0
  36. package/CommandPalette/components/Kbd.js.map +1 -0
  37. package/CommandPalette/components/NoResults.d.ts +13 -0
  38. package/CommandPalette/components/NoResults.js +33 -0
  39. package/CommandPalette/components/NoResults.js.map +1 -0
  40. package/CommandPalette/components/PaletteFooter.d.ts +13 -0
  41. package/CommandPalette/components/PaletteFooter.js +18 -0
  42. package/CommandPalette/components/PaletteFooter.js.map +1 -0
  43. package/CommandPalette/components/ToolChip.d.ts +7 -0
  44. package/CommandPalette/components/ToolChip.js +32 -0
  45. package/CommandPalette/components/ToolChip.js.map +1 -0
  46. package/CommandPalette/components/index.d.ts +13 -0
  47. package/CommandPalette/components/index.js +13 -0
  48. package/CommandPalette/constants.d.ts +8 -0
  49. package/CommandPalette/constants.js +5 -0
  50. package/CommandPalette/constants.js.map +1 -0
  51. package/CommandPalette/deriveRows.d.ts +19 -0
  52. package/CommandPalette/deriveRows.js +100 -0
  53. package/CommandPalette/deriveRows.js.map +1 -0
  54. package/CommandPalette/modes/PaletteMode.d.ts +73 -0
  55. package/CommandPalette/modes/PaletteMode.js +0 -0
  56. package/CommandPalette/modes/createAiMode.d.ts +13 -0
  57. package/CommandPalette/modes/createAiMode.js +80 -0
  58. package/CommandPalette/modes/createAiMode.js.map +1 -0
  59. package/CommandPalette/modes/index.d.ts +2 -0
  60. package/CommandPalette/modes/index.js +1 -0
  61. package/CommandPalette/types.d.ts +15 -0
  62. package/CommandPalette/types.js +0 -0
  63. package/CommandPalette/usePaletteHotkeys.d.ts +16 -0
  64. package/CommandPalette/usePaletteHotkeys.js +38 -0
  65. package/CommandPalette/usePaletteHotkeys.js.map +1 -0
  66. package/Dashboard/Welcome.d.ts +6 -0
  67. package/Dashboard/Welcome.js +120 -0
  68. package/Dashboard/Welcome.js.map +1 -0
  69. package/Dashboard/components/AssistanceWidget.d.ts +2 -0
  70. package/Dashboard/components/AssistanceWidget.js +54 -0
  71. package/Dashboard/components/AssistanceWidget.js.map +1 -0
  72. package/Dashboard/components/CommunityWidget.d.ts +2 -0
  73. package/Dashboard/components/CommunityWidget.js +58 -0
  74. package/Dashboard/components/CommunityWidget.js.map +1 -0
  75. package/Dashboard/components/DashboardToolbar.d.ts +11 -0
  76. package/Dashboard/components/DashboardToolbar.js +48 -0
  77. package/Dashboard/components/DashboardToolbar.js.map +1 -0
  78. package/Dashboard/components/MissingPermissionsWidget.d.ts +2 -0
  79. package/Dashboard/components/MissingPermissionsWidget.js +16 -0
  80. package/Dashboard/components/MissingPermissionsWidget.js.map +1 -0
  81. package/Dashboard/components/addWidgetDrawer/AddToColumnMenu.d.ts +10 -0
  82. package/Dashboard/components/addWidgetDrawer/AddToColumnMenu.js +30 -0
  83. package/Dashboard/components/addWidgetDrawer/AddToColumnMenu.js.map +1 -0
  84. package/Dashboard/components/addWidgetDrawer/AddWidgetDrawer.d.ts +12 -0
  85. package/Dashboard/components/addWidgetDrawer/AddWidgetDrawer.js +61 -0
  86. package/Dashboard/components/addWidgetDrawer/AddWidgetDrawer.js.map +1 -0
  87. package/Dashboard/components/addWidgetDrawer/DrawerWidgetRow.d.ts +10 -0
  88. package/Dashboard/components/addWidgetDrawer/DrawerWidgetRow.js +38 -0
  89. package/Dashboard/components/addWidgetDrawer/DrawerWidgetRow.js.map +1 -0
  90. package/Dashboard/components/addWidgetDrawer/WidgetPreviewFrame.d.ts +7 -0
  91. package/Dashboard/components/addWidgetDrawer/WidgetPreviewFrame.js +44 -0
  92. package/Dashboard/components/addWidgetDrawer/WidgetPreviewFrame.js.map +1 -0
  93. package/Dashboard/components/addWidgetDrawer/WidgetSketch.d.ts +4 -0
  94. package/Dashboard/components/addWidgetDrawer/WidgetSketch.js +20 -0
  95. package/Dashboard/components/addWidgetDrawer/WidgetSketch.js.map +1 -0
  96. package/Dashboard/components/addWidgetDrawer/WidgetTabContent.d.ts +14 -0
  97. package/Dashboard/components/addWidgetDrawer/WidgetTabContent.js +76 -0
  98. package/Dashboard/components/addWidgetDrawer/WidgetTabContent.js.map +1 -0
  99. package/Dashboard/components/addWidgetDrawer/types.d.ts +10 -0
  100. package/Dashboard/components/addWidgetDrawer/types.js +0 -0
  101. package/Dashboard/components/assets/github.js +14 -0
  102. package/Dashboard/components/assets/github.js.map +1 -0
  103. package/Dashboard/components/assets/github.svg +1 -0
  104. package/Dashboard/components/assets/slack.js +27 -0
  105. package/Dashboard/components/assets/slack.js.map +1 -0
  106. package/Dashboard/components/assets/slack.svg +8 -0
  107. package/Dashboard/components/assets/x-twitter.js +18 -0
  108. package/Dashboard/components/assets/x-twitter.js.map +1 -0
  109. package/Dashboard/components/assets/x-twitter.svg +5 -0
  110. package/Dashboard/components/assets/youtube.js +28 -0
  111. package/Dashboard/components/assets/youtube.js.map +1 -0
  112. package/Dashboard/components/assets/youtube.svg +11 -0
  113. package/Dashboard/components/dnd/ColumnCountControl.d.ts +9 -0
  114. package/Dashboard/components/dnd/ColumnCountControl.js +52 -0
  115. package/Dashboard/components/dnd/ColumnCountControl.js.map +1 -0
  116. package/Dashboard/components/dnd/ColumnEmptyState.d.ts +10 -0
  117. package/Dashboard/components/dnd/ColumnEmptyState.js +52 -0
  118. package/Dashboard/components/dnd/ColumnEmptyState.js.map +1 -0
  119. package/Dashboard/components/dnd/DashboardDragLayer.d.ts +6 -0
  120. package/Dashboard/components/dnd/DashboardDragLayer.js +28 -0
  121. package/Dashboard/components/dnd/DashboardDragLayer.js.map +1 -0
  122. package/Dashboard/components/dnd/DashboardWidgetCard.d.ts +13 -0
  123. package/Dashboard/components/dnd/DashboardWidgetCard.js +59 -0
  124. package/Dashboard/components/dnd/DashboardWidgetCard.js.map +1 -0
  125. package/Dashboard/components/dnd/DashboardWidgetColumn.d.ts +19 -0
  126. package/Dashboard/components/dnd/DashboardWidgetColumn.js +72 -0
  127. package/Dashboard/components/dnd/DashboardWidgetColumn.js.map +1 -0
  128. package/Dashboard/components/dnd/WidgetDropIndicator.d.ts +11 -0
  129. package/Dashboard/components/dnd/WidgetDropIndicator.js +29 -0
  130. package/Dashboard/components/dnd/WidgetDropIndicator.js.map +1 -0
  131. package/Dashboard/components/dnd/WidgetSlot.d.ts +6 -0
  132. package/Dashboard/components/dnd/WidgetSlot.js +9 -0
  133. package/Dashboard/components/dnd/WidgetSlot.js.map +1 -0
  134. package/Dashboard/components/dnd/dragItem.d.ts +6 -0
  135. package/Dashboard/components/dnd/dragItem.js +4 -0
  136. package/Dashboard/components/dnd/dragItem.js.map +1 -0
  137. package/Dashboard/components/dnd/useWidgetHosts.d.ts +1 -0
  138. package/Dashboard/components/dnd/useWidgetHosts.js +16 -0
  139. package/Dashboard/components/dnd/useWidgetHosts.js.map +1 -0
  140. package/Dashboard/components/index.d.ts +3 -0
  141. package/Dashboard/components/index.js +3 -0
  142. package/Dashboard/components/layout/EditableColumns.d.ts +13 -0
  143. package/Dashboard/components/layout/EditableColumns.js +25 -0
  144. package/Dashboard/components/layout/EditableColumns.js.map +1 -0
  145. package/Dashboard/components/layout/StaticColumns.d.ts +8 -0
  146. package/Dashboard/components/layout/StaticColumns.js +20 -0
  147. package/Dashboard/components/layout/StaticColumns.js.map +1 -0
  148. package/Dashboard/components/layout/collapseColumns.d.ts +1 -0
  149. package/Dashboard/components/layout/collapseColumns.js +16 -0
  150. package/Dashboard/components/layout/collapseColumns.js.map +1 -0
  151. package/Dashboard/components/layout/layoutConstants.d.ts +2 -0
  152. package/Dashboard/components/layout/layoutConstants.js +5 -0
  153. package/Dashboard/components/layout/layoutConstants.js.map +1 -0
  154. package/Dashboard/components/layout/useColumnsThatFit.d.ts +6 -0
  155. package/Dashboard/components/layout/useColumnsThatFit.js +30 -0
  156. package/Dashboard/components/layout/useColumnsThatFit.js.map +1 -0
  157. package/Dashboard/components/layout/useWidgetPortals.d.ts +5 -0
  158. package/Dashboard/components/layout/useWidgetPortals.js +26 -0
  159. package/Dashboard/components/layout/useWidgetPortals.js.map +1 -0
  160. package/Dashboard/dashboardLayout/loadLayout/FetchDashboardLayoutUseCase.d.ts +12 -0
  161. package/Dashboard/dashboardLayout/loadLayout/FetchDashboardLayoutUseCase.js +19 -0
  162. package/Dashboard/dashboardLayout/loadLayout/FetchDashboardLayoutUseCase.js.map +1 -0
  163. package/Dashboard/dashboardLayout/loadLayout/GetCachedDashboardLayoutUseCase.d.ts +12 -0
  164. package/Dashboard/dashboardLayout/loadLayout/GetCachedDashboardLayoutUseCase.js +19 -0
  165. package/Dashboard/dashboardLayout/loadLayout/GetCachedDashboardLayoutUseCase.js.map +1 -0
  166. package/Dashboard/dashboardLayout/loadLayout/abstractions.d.ts +15 -0
  167. package/Dashboard/dashboardLayout/loadLayout/abstractions.js +6 -0
  168. package/Dashboard/dashboardLayout/loadLayout/abstractions.js.map +1 -0
  169. package/Dashboard/dashboardLayout/loadLayout/feature.d.ts +1 -0
  170. package/Dashboard/dashboardLayout/loadLayout/feature.js +13 -0
  171. package/Dashboard/dashboardLayout/loadLayout/feature.js.map +1 -0
  172. package/Dashboard/dashboardLayout/presenter/DashboardLayoutPresenter.d.ts +56 -0
  173. package/Dashboard/dashboardLayout/presenter/DashboardLayoutPresenter.js +308 -0
  174. package/Dashboard/dashboardLayout/presenter/DashboardLayoutPresenter.js.map +1 -0
  175. package/Dashboard/dashboardLayout/presenter/abstractions.d.ts +46 -0
  176. package/Dashboard/dashboardLayout/presenter/abstractions.js +5 -0
  177. package/Dashboard/dashboardLayout/presenter/abstractions.js.map +1 -0
  178. package/Dashboard/dashboardLayout/presenter/feature.d.ts +3 -0
  179. package/Dashboard/dashboardLayout/presenter/feature.js +23 -0
  180. package/Dashboard/dashboardLayout/presenter/feature.js.map +1 -0
  181. package/Dashboard/dashboardLayout/presenter/useDashboardLayoutPresenter.d.ts +1 -0
  182. package/Dashboard/dashboardLayout/presenter/useDashboardLayoutPresenter.js +6 -0
  183. package/Dashboard/dashboardLayout/presenter/useDashboardLayoutPresenter.js.map +1 -0
  184. package/Dashboard/dashboardLayout/repository/DashboardLayoutGateway.d.ts +13 -0
  185. package/Dashboard/dashboardLayout/repository/DashboardLayoutGateway.js +67 -0
  186. package/Dashboard/dashboardLayout/repository/DashboardLayoutGateway.js.map +1 -0
  187. package/Dashboard/dashboardLayout/repository/DashboardLayoutRepository.d.ts +20 -0
  188. package/Dashboard/dashboardLayout/repository/DashboardLayoutRepository.js +49 -0
  189. package/Dashboard/dashboardLayout/repository/DashboardLayoutRepository.js.map +1 -0
  190. package/Dashboard/dashboardLayout/repository/abstractions.d.ts +25 -0
  191. package/Dashboard/dashboardLayout/repository/abstractions.js +6 -0
  192. package/Dashboard/dashboardLayout/repository/abstractions.js.map +1 -0
  193. package/Dashboard/dashboardLayout/repository/feature.d.ts +1 -0
  194. package/Dashboard/dashboardLayout/repository/feature.js +13 -0
  195. package/Dashboard/dashboardLayout/repository/feature.js.map +1 -0
  196. package/Dashboard/dashboardLayout/saveLayout/SaveDashboardLayoutUseCase.d.ts +12 -0
  197. package/Dashboard/dashboardLayout/saveLayout/SaveDashboardLayoutUseCase.js +19 -0
  198. package/Dashboard/dashboardLayout/saveLayout/SaveDashboardLayoutUseCase.js.map +1 -0
  199. package/Dashboard/dashboardLayout/saveLayout/abstractions.d.ts +8 -0
  200. package/Dashboard/dashboardLayout/saveLayout/abstractions.js +5 -0
  201. package/Dashboard/dashboardLayout/saveLayout/abstractions.js.map +1 -0
  202. package/Dashboard/dashboardLayout/saveLayout/feature.d.ts +1 -0
  203. package/Dashboard/dashboardLayout/saveLayout/feature.js +11 -0
  204. package/Dashboard/dashboardLayout/saveLayout/feature.js.map +1 -0
  205. package/Dashboard/dashboardLayout/toColumnIndex.d.ts +1 -0
  206. package/Dashboard/dashboardLayout/toColumnIndex.js +7 -0
  207. package/Dashboard/dashboardLayout/toColumnIndex.js.map +1 -0
  208. package/Dashboard/dashboardLayout/types.d.ts +15 -0
  209. package/Dashboard/dashboardLayout/types.js +6 -0
  210. package/Dashboard/dashboardLayout/types.js.map +1 -0
  211. package/Dashboard.d.ts +2 -0
  212. package/Dashboard.js +9 -0
  213. package/Dashboard.js.map +1 -0
  214. package/Dialog/DialogContainer.d.ts +2 -0
  215. package/Dialog/DialogContainer.js +59 -0
  216. package/Dialog/DialogContainer.js.map +1 -0
  217. package/Dialog/DialogProvider.d.ts +5 -0
  218. package/Dialog/DialogProvider.js +8 -0
  219. package/Dialog/DialogProvider.js.map +1 -0
  220. package/Dialog.d.ts +2 -0
  221. package/Dialog.js +9 -0
  222. package/Dialog.js.map +1 -0
  223. package/LICENSE +21 -0
  224. package/Layout.d.ts +2 -0
  225. package/Layout.js +55 -0
  226. package/Layout.js.map +1 -0
  227. package/Logo.d.ts +2 -0
  228. package/Logo.js +16 -0
  229. package/Logo.js.map +1 -0
  230. package/Navigation/Navigation.d.ts +2 -0
  231. package/Navigation/Navigation.js +34 -0
  232. package/Navigation/Navigation.js.map +1 -0
  233. package/Navigation/SidebarMenuItems.d.ts +10 -0
  234. package/Navigation/SidebarMenuItems.js +36 -0
  235. package/Navigation/SidebarMenuItems.js.map +1 -0
  236. package/NotFound/notFound.js +297 -0
  237. package/NotFound/notFound.js.map +1 -0
  238. package/NotFound/notFound.svg +1 -0
  239. package/NotFound.d.ts +2 -0
  240. package/NotFound.js +20 -0
  241. package/NotFound.js.map +1 -0
  242. package/README.md +11 -0
  243. package/UserMenu/UserMenu.d.ts +2 -0
  244. package/UserMenu/UserMenu.js +22 -0
  245. package/UserMenu/UserMenu.js.map +1 -0
  246. package/UserMenu/UserMenuHandle.d.ts +2 -0
  247. package/UserMenu/UserMenuHandle.js +36 -0
  248. package/UserMenu/UserMenuHandle.js.map +1 -0
  249. package/UserMenu/UserMenuItem.d.ts +3 -0
  250. package/UserMenu/UserMenuItem.js +12 -0
  251. package/UserMenu/UserMenuItem.js.map +1 -0
  252. package/UserMenu/UserMenuLink.d.ts +3 -0
  253. package/UserMenu/UserMenuLink.js +12 -0
  254. package/UserMenu/UserMenuLink.js.map +1 -0
  255. package/UserMenu/UserMenuSeparator.d.ts +2 -0
  256. package/UserMenu/UserMenuSeparator.js +12 -0
  257. package/UserMenu/UserMenuSeparator.js.map +1 -0
  258. package/UserMenu.d.ts +2 -0
  259. package/UserMenu.js +10 -0
  260. package/UserMenu.js.map +1 -0
  261. package/index.d.ts +2 -0
  262. package/index.js +35 -0
  263. package/index.js.map +1 -0
  264. package/package.json +49 -0
  265. package/static/svg/github.08a73b00.svg +1 -0
  266. package/static/svg/notFound.e8b15981.svg +1 -0
  267. package/static/svg/slack.1b2ba162.svg +8 -0
  268. package/static/svg/x-twitter.46e7218c.svg +5 -0
  269. package/static/svg/youtube.3c232651.svg +11 -0
  270. package/styles.scss +2 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Dashboard/components/DashboardToolbar.js","sources":["../../../src/Dashboard/components/DashboardToolbar.tsx"],"sourcesContent":["import React from \"react\";\nimport { Button } from \"@webiny/admin-ui\";\nimport { IconButton } from \"@webiny/admin-ui\";\nimport { Tooltip } from \"@webiny/admin-ui\";\nimport { ReactComponent as RestartAltIcon } from \"@webiny/icons/restart_alt.svg\";\nimport { ReactComponent as AddIcon } from \"@webiny/icons/add.svg\";\nimport { ReactComponent as DashboardCustomizeIcon } from \"@webiny/icons/dashboard_customize.svg\";\nimport { ReactComponent as CheckIcon } from \"@webiny/icons/check.svg\";\nimport { ColumnCountControl } from \"./dnd/ColumnCountControl.js\";\nimport type { DashboardLayoutPresenter } from \"../dashboardLayout/presenter/abstractions.js\";\n\ninterface DashboardToolbarProps {\n vm: DashboardLayoutPresenter.ViewModel;\n // Customize mode is on and every chosen column fits on screen.\n editing: boolean;\n // Every chosen column fits on screen, so Customize mode can be offered.\n canCustomize: boolean;\n presenter: DashboardLayoutPresenter.Interface;\n onAddWidget: () => void;\n}\n\n// Top-right controls: one \"Customize\" button normally, the full editing set in Customize mode.\nexport const DashboardToolbar = ({\n vm,\n editing,\n canCustomize,\n presenter,\n onAddWidget\n}: DashboardToolbarProps) => {\n if (editing) {\n return (\n <>\n <ColumnCountControl\n columnCount={vm.columnCount}\n disabled={vm.draggingName !== null}\n presenter={presenter}\n />\n <Tooltip\n content={\"Reset to default layout\"}\n trigger={\n <IconButton\n variant={\"tertiary\"}\n size={\"md\"}\n icon={<RestartAltIcon />}\n aria-label={\"Reset to default layout\"}\n onClick={() => presenter.resetToDefault()}\n />\n }\n />\n <Button\n variant={\"tertiary\"}\n text={\"Add widget\"}\n icon={<AddIcon />}\n onClick={onAddWidget}\n />\n <Button\n variant={\"primary\"}\n text={\"Done\"}\n icon={<CheckIcon />}\n onClick={() => presenter.stopEditing()}\n />\n </>\n );\n }\n\n let hint = \"Rearrange, add or remove widgets\";\n if (!canCustomize) {\n hint = \"Make the window wider to customize the dashboard\";\n }\n\n return (\n <Tooltip\n content={hint}\n trigger={\n <Button\n variant={\"tertiary\"}\n text={\"Customize\"}\n icon={<DashboardCustomizeIcon />}\n disabled={!canCustomize}\n onClick={() => presenter.startEditing()}\n />\n }\n />\n );\n};\n"],"names":["DashboardToolbar","vm","editing","canCustomize","presenter","onAddWidget","ColumnCountControl","Tooltip","IconButton","RestartAltIcon","Button","AddIcon","CheckIcon","hint","DashboardCustomizeIcon"],"mappings":";;;;;;;AAsBO,MAAMA,mBAAmB,CAAC,EAC7BC,EAAE,EACFC,OAAO,EACPC,YAAY,EACZC,SAAS,EACTC,WAAW,EACS;IACpB,IAAIH,SACA,OAAO,WAAP,GACI,wDACI,oBAACI,oBAAkBA;QACf,aAAaL,GAAG,WAAW;QAC3B,UAAUA,AAAoB,SAApBA,GAAG,YAAY;QACzB,WAAWG;sBAEf,oBAACG,SAAOA;QACJ,SAAS;QACT,uBACI,oBAACC,YAAUA;YACP,SAAS;YACT,MAAM;YACN,oBAAM,oBAACC,gBAAcA;YACrB,cAAY;YACZ,SAAS,IAAML,UAAU,cAAc;;sBAInD,oBAACM,QAAMA;QACH,SAAS;QACT,MAAM;QACN,oBAAM,oBAACC,wBAAOA;QACd,SAASN;sBAEb,oBAACK,QAAMA;QACH,SAAS;QACT,MAAM;QACN,oBAAM,oBAACE,0BAASA;QAChB,SAAS,IAAMR,UAAU,WAAW;;IAMpD,IAAIS,OAAO;IACX,IAAI,CAACV,cACDU,OAAO;IAGX,OAAO,WAAP,GACI,oBAACN,SAAOA;QACJ,SAASM;QACT,uBACI,oBAACH,QAAMA;YACH,SAAS;YACT,MAAM;YACN,oBAAM,oBAACI,wCAAsBA;YAC7B,UAAU,CAACX;YACX,SAAS,IAAMC,UAAU,YAAY;;;AAKzD"}
@@ -0,0 +1,2 @@
1
+ import React from "react";
2
+ export declare const MissingPermissionsWidget: () => React.JSX.Element;
@@ -0,0 +1,16 @@
1
+ import react from "react";
2
+ import { ReactComponent } from "@webiny/icons/visibility_off.svg";
3
+ import { Heading, Icon, Text } from "@webiny/admin-ui";
4
+ const MissingPermissionsWidget = ()=>/*#__PURE__*/ react.createElement("div", {
5
+ className: "w-full h-full flex flex-col items-center justify-center text-center bg-neutral-light rounded-xl px-xxl py-lg gap-sm"
6
+ }, /*#__PURE__*/ react.createElement("div", null, /*#__PURE__*/ react.createElement(Icon, {
7
+ icon: /*#__PURE__*/ react.createElement(ReactComponent, null),
8
+ label: "Access permission required",
9
+ color: "accent",
10
+ size: "lg"
11
+ })), /*#__PURE__*/ react.createElement(Heading, {
12
+ level: 4
13
+ }, "Access permission required"), /*#__PURE__*/ react.createElement(Text, null, "It seems you do not have access to Webiny apps. Please contact the administrator to set up your Webiny account."));
14
+ export { MissingPermissionsWidget };
15
+
16
+ //# sourceMappingURL=MissingPermissionsWidget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Dashboard/components/MissingPermissionsWidget.js","sources":["../../../src/Dashboard/components/MissingPermissionsWidget.tsx"],"sourcesContent":["import React from \"react\";\nimport { ReactComponent as VisibilityOff } from \"@webiny/icons/visibility_off.svg\";\nimport { Heading, Icon, Text } from \"@webiny/admin-ui\";\n\nexport const MissingPermissionsWidget = () => {\n return (\n <div className=\"w-full h-full flex flex-col items-center justify-center text-center bg-neutral-light rounded-xl px-xxl py-lg gap-sm\">\n <div>\n <Icon\n icon={<VisibilityOff />}\n label={\"Access permission required\"}\n color={\"accent\"}\n size={\"lg\"}\n />\n </div>\n <Heading level={4}>{\"Access permission required\"}</Heading>\n <Text>\n {\n \"It seems you do not have access to Webiny apps. Please contact the administrator to set up your Webiny account.\"\n }\n </Text>\n </div>\n );\n};\n"],"names":["MissingPermissionsWidget","Icon","VisibilityOff","Heading","Text"],"mappings":";;;AAIO,MAAMA,2BAA2B,IAC7B,WAAP,GACI,oBAAC;QAAI,WAAU;qBACX,oBAAC,2BACG,oBAACC,MAAIA;QACD,oBAAM,oBAACC,gBAAaA;QACpB,OAAO;QACP,OAAO;QACP,MAAM;uBAGd,oBAACC,SAAOA;QAAC,OAAO;OAAI,6CACpB,oBAACC,MAAIA,MAEG"}
@@ -0,0 +1,10 @@
1
+ import React from "react";
2
+ import type { DashboardLayoutPresenter } from "../../dashboardLayout/presenter/abstractions.js";
3
+ import type { DrawerWidget } from "./types.js";
4
+ interface AddToColumnMenuProps {
5
+ widget: DrawerWidget;
6
+ columnCount: number;
7
+ presenter: DashboardLayoutPresenter.Interface;
8
+ }
9
+ export declare const AddToColumnMenu: ({ widget, columnCount, presenter }: AddToColumnMenuProps) => React.JSX.Element;
10
+ export {};
@@ -0,0 +1,30 @@
1
+ import react from "react";
2
+ import { Button, DropdownMenu } from "@webiny/admin-ui";
3
+ import { ReactComponent } from "@webiny/icons/expand_more.svg";
4
+ const AddToColumnMenu = ({ widget, columnCount, presenter })=>{
5
+ const columns = Array.from({
6
+ length: columnCount
7
+ }, (_, index)=>index);
8
+ return /*#__PURE__*/ react.createElement(DropdownMenu, {
9
+ trigger: /*#__PURE__*/ react.createElement(Button, {
10
+ size: "sm",
11
+ variant: "tertiary",
12
+ text: "Add",
13
+ icon: /*#__PURE__*/ react.createElement(ReactComponent, null),
14
+ iconPosition: "end"
15
+ })
16
+ }, /*#__PURE__*/ react.createElement(DropdownMenu.Label, {
17
+ text: "Add to"
18
+ }), columns.map((index)=>{
19
+ let text = `Column ${index + 1}`;
20
+ if (index === widget.defaultColumn) text = `${text} (default)`;
21
+ return /*#__PURE__*/ react.createElement(DropdownMenu.Item, {
22
+ key: index,
23
+ text: text,
24
+ onClick: ()=>presenter.addWidget(widget.name, index)
25
+ });
26
+ }));
27
+ };
28
+ export { AddToColumnMenu };
29
+
30
+ //# sourceMappingURL=AddToColumnMenu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Dashboard/components/addWidgetDrawer/AddToColumnMenu.js","sources":["../../../../src/Dashboard/components/addWidgetDrawer/AddToColumnMenu.tsx"],"sourcesContent":["import React from \"react\";\nimport { Button } from \"@webiny/admin-ui\";\nimport { DropdownMenu } from \"@webiny/admin-ui\";\nimport { ReactComponent as ExpandMoreIcon } from \"@webiny/icons/expand_more.svg\";\nimport type { DashboardLayoutPresenter } from \"../../dashboardLayout/presenter/abstractions.js\";\nimport type { DrawerWidget } from \"./types.js\";\n\ninterface AddToColumnMenuProps {\n widget: DrawerWidget;\n columnCount: number;\n presenter: DashboardLayoutPresenter.Interface;\n}\n\n// One item per current column; the widget lands at the bottom of the chosen one.\nexport const AddToColumnMenu = ({ widget, columnCount, presenter }: AddToColumnMenuProps) => {\n const columns = Array.from({ length: columnCount }, (_, index) => index);\n\n return (\n <DropdownMenu\n trigger={\n <Button\n size={\"sm\"}\n variant={\"tertiary\"}\n text={\"Add\"}\n icon={<ExpandMoreIcon />}\n iconPosition={\"end\"}\n />\n }\n >\n <DropdownMenu.Label text={\"Add to\"} />\n {columns.map(index => {\n let text = `Column ${index + 1}`;\n if (index === widget.defaultColumn) {\n text = `${text} (default)`;\n }\n return (\n <DropdownMenu.Item\n key={index}\n text={text}\n onClick={() => presenter.addWidget(widget.name, index)}\n />\n );\n })}\n </DropdownMenu>\n );\n};\n"],"names":["AddToColumnMenu","widget","columnCount","presenter","columns","Array","_","index","DropdownMenu","Button","ExpandMoreIcon","text"],"mappings":";;;AAcO,MAAMA,kBAAkB,CAAC,EAAEC,MAAM,EAAEC,WAAW,EAAEC,SAAS,EAAwB;IACpF,MAAMC,UAAUC,MAAM,IAAI,CAAC;QAAE,QAAQH;IAAY,GAAG,CAACI,GAAGC,QAAUA;IAElE,OAAO,WAAP,GACI,oBAACC,cAAYA;QACT,uBACI,oBAACC,QAAMA;YACH,MAAM;YACN,SAAS;YACT,MAAM;YACN,oBAAM,oBAACC,gBAAcA;YACrB,cAAc;;qBAItB,oBAACF,aAAa,KAAK;QAAC,MAAM;QACzBJ,QAAQ,GAAG,CAACG,CAAAA;QACT,IAAII,OAAO,CAAC,OAAO,EAAEJ,QAAQ,GAAG;QAChC,IAAIA,UAAUN,OAAO,aAAa,EAC9BU,OAAO,GAAGA,KAAK,UAAU,CAAC;QAE9B,OAAO,WAAP,GACI,oBAACH,aAAa,IAAI;YACd,KAAKD;YACL,MAAMI;YACN,SAAS,IAAMR,UAAU,SAAS,CAACF,OAAO,IAAI,EAAEM;;IAG5D;AAGZ"}
@@ -0,0 +1,12 @@
1
+ import React from "react";
2
+ import type { DashboardLayoutPresenter } from "../../dashboardLayout/presenter/abstractions.js";
3
+ import type { DrawerWidget } from "./types.js";
4
+ interface AddWidgetDrawerProps {
5
+ open: boolean;
6
+ onOpenChange: (open: boolean) => void;
7
+ widgets: DrawerWidget[];
8
+ columnCount: number;
9
+ presenter: DashboardLayoutPresenter.Interface;
10
+ }
11
+ export declare const AddWidgetDrawer: ({ open, onOpenChange, widgets, columnCount, presenter }: AddWidgetDrawerProps) => React.JSX.Element;
12
+ export {};
@@ -0,0 +1,61 @@
1
+ import react, { useState } from "react";
2
+ import { Drawer, Tabs } from "@webiny/admin-ui";
3
+ import { WidgetTabContent } from "./WidgetTabContent.js";
4
+ const AddWidgetDrawer = ({ open, onOpenChange, widgets, columnCount, presenter })=>{
5
+ const [search, setSearch] = useState("");
6
+ const changeOpen = (next)=>{
7
+ if (!next) setSearch("");
8
+ onOpenChange(next);
9
+ };
10
+ const onDashboard = widgets.filter((widget)=>widget.added);
11
+ const notAdded = widgets.filter((widget)=>!widget.added);
12
+ let defaultTab = "all";
13
+ if (notAdded.length > 0) defaultTab = "notAdded";
14
+ const renderTab = (items, emptyTitle, emptyDescription)=>/*#__PURE__*/ react.createElement(WidgetTabContent, {
15
+ items: items,
16
+ search: search,
17
+ onSearch: setSearch,
18
+ emptyTitle: emptyTitle,
19
+ emptyDescription: emptyDescription,
20
+ columnCount: columnCount,
21
+ presenter: presenter
22
+ });
23
+ return /*#__PURE__*/ react.createElement(Drawer, {
24
+ open: open,
25
+ onOpenChange: changeOpen,
26
+ modal: true,
27
+ title: "Add widget",
28
+ description: "Pick a column when you add a widget. You can drag it anywhere after.",
29
+ width: 400,
30
+ bodyPadding: false,
31
+ headerSeparator: false,
32
+ showCloseButton: true
33
+ }, /*#__PURE__*/ react.createElement(Tabs, {
34
+ separator: true,
35
+ spacing: "lg",
36
+ defaultValue: defaultTab,
37
+ tabs: [
38
+ /*#__PURE__*/ react.createElement(Tabs.Tab, {
39
+ key: "notAdded",
40
+ value: "notAdded",
41
+ trigger: `Not added (${notAdded.length})`,
42
+ content: renderTab(notAdded, "All widgets are on your dashboard", "Remove a widget from its menu and it shows up here.")
43
+ }),
44
+ /*#__PURE__*/ react.createElement(Tabs.Tab, {
45
+ key: "onDashboard",
46
+ value: "onDashboard",
47
+ trigger: `On dashboard (${onDashboard.length})`,
48
+ content: renderTab(onDashboard, "Your dashboard is empty", "Add a widget from the Not added tab.")
49
+ }),
50
+ /*#__PURE__*/ react.createElement(Tabs.Tab, {
51
+ key: "all",
52
+ value: "all",
53
+ trigger: `All (${widgets.length})`,
54
+ content: renderTab(widgets, "No widgets available", "No app has registered a dashboard widget.")
55
+ })
56
+ ]
57
+ }));
58
+ };
59
+ export { AddWidgetDrawer };
60
+
61
+ //# sourceMappingURL=AddWidgetDrawer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Dashboard/components/addWidgetDrawer/AddWidgetDrawer.js","sources":["../../../../src/Dashboard/components/addWidgetDrawer/AddWidgetDrawer.tsx"],"sourcesContent":["import React from \"react\";\nimport { useState } from \"react\";\nimport { Drawer } from \"@webiny/admin-ui\";\nimport { Tabs } from \"@webiny/admin-ui\";\nimport type { DashboardLayoutPresenter } from \"../../dashboardLayout/presenter/abstractions.js\";\nimport type { DrawerWidget } from \"./types.js\";\nimport { WidgetTabContent } from \"./WidgetTabContent.js\";\n\ninterface AddWidgetDrawerProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n widgets: DrawerWidget[];\n columnCount: number;\n presenter: DashboardLayoutPresenter.Interface;\n}\n\nexport const AddWidgetDrawer = ({\n open,\n onOpenChange,\n widgets,\n columnCount,\n presenter\n}: AddWidgetDrawerProps) => {\n const [search, setSearch] = useState(\"\");\n\n const changeOpen = (next: boolean) => {\n // Every visit starts with an empty search.\n if (!next) {\n setSearch(\"\");\n }\n onOpenChange(next);\n };\n\n const onDashboard = widgets.filter(widget => widget.added);\n const notAdded = widgets.filter(widget => !widget.added);\n\n // Open where the user can act. When everything is added already, show the whole list.\n let defaultTab = \"all\";\n if (notAdded.length > 0) {\n defaultTab = \"notAdded\";\n }\n\n const renderTab = (items: DrawerWidget[], emptyTitle: string, emptyDescription: string) => (\n <WidgetTabContent\n items={items}\n search={search}\n onSearch={setSearch}\n emptyTitle={emptyTitle}\n emptyDescription={emptyDescription}\n columnCount={columnCount}\n presenter={presenter}\n />\n );\n\n return (\n <Drawer\n open={open}\n onOpenChange={changeOpen}\n modal={true}\n title={\"Add widget\"}\n description={\"Pick a column when you add a widget. You can drag it anywhere after.\"}\n width={400}\n bodyPadding={false}\n headerSeparator={false}\n showCloseButton={true}\n >\n <Tabs\n separator={true}\n spacing={\"lg\"}\n defaultValue={defaultTab}\n tabs={[\n <Tabs.Tab\n key={\"notAdded\"}\n value={\"notAdded\"}\n trigger={`Not added (${notAdded.length})`}\n content={renderTab(\n notAdded,\n \"All widgets are on your dashboard\",\n \"Remove a widget from its menu and it shows up here.\"\n )}\n />,\n <Tabs.Tab\n key={\"onDashboard\"}\n value={\"onDashboard\"}\n trigger={`On dashboard (${onDashboard.length})`}\n content={renderTab(\n onDashboard,\n \"Your dashboard is empty\",\n \"Add a widget from the Not added tab.\"\n )}\n />,\n <Tabs.Tab\n key={\"all\"}\n value={\"all\"}\n trigger={`All (${widgets.length})`}\n content={renderTab(\n widgets,\n \"No widgets available\",\n \"No app has registered a dashboard widget.\"\n )}\n />\n ]}\n />\n </Drawer>\n );\n};\n"],"names":["AddWidgetDrawer","open","onOpenChange","widgets","columnCount","presenter","search","setSearch","useState","changeOpen","next","onDashboard","widget","notAdded","defaultTab","renderTab","items","emptyTitle","emptyDescription","WidgetTabContent","Drawer","Tabs"],"mappings":";;;AAgBO,MAAMA,kBAAkB,CAAC,EAC5BC,IAAI,EACJC,YAAY,EACZC,OAAO,EACPC,WAAW,EACXC,SAAS,EACU;IACnB,MAAM,CAACC,QAAQC,UAAU,GAAGC,SAAS;IAErC,MAAMC,aAAa,CAACC;QAEhB,IAAI,CAACA,MACDH,UAAU;QAEdL,aAAaQ;IACjB;IAEA,MAAMC,cAAcR,QAAQ,MAAM,CAACS,CAAAA,SAAUA,OAAO,KAAK;IACzD,MAAMC,WAAWV,QAAQ,MAAM,CAACS,CAAAA,SAAU,CAACA,OAAO,KAAK;IAGvD,IAAIE,aAAa;IACjB,IAAID,SAAS,MAAM,GAAG,GAClBC,aAAa;IAGjB,MAAMC,YAAY,CAACC,OAAuBC,YAAoBC,mBAAAA,WAAAA,GAC1D,oBAACC,kBAAgBA;YACb,OAAOH;YACP,QAAQV;YACR,UAAUC;YACV,YAAYU;YACZ,kBAAkBC;YAClB,aAAad;YACb,WAAWC;;IAInB,OAAO,WAAP,GACI,oBAACe,QAAMA;QACH,MAAMnB;QACN,cAAcQ;QACd,OAAO;QACP,OAAO;QACP,aAAa;QACb,OAAO;QACP,aAAa;QACb,iBAAiB;QACjB,iBAAiB;qBAEjB,oBAACY,MAAIA;QACD,WAAW;QACX,SAAS;QACT,cAAcP;QACd,MAAM;0BACF,oBAACO,KAAK,GAAG;gBACL,KAAK;gBACL,OAAO;gBACP,SAAS,CAAC,WAAW,EAAER,SAAS,MAAM,CAAC,CAAC,CAAC;gBACzC,SAASE,UACLF,UACA,qCACA;;0BAGR,oBAACQ,KAAK,GAAG;gBACL,KAAK;gBACL,OAAO;gBACP,SAAS,CAAC,cAAc,EAAEV,YAAY,MAAM,CAAC,CAAC,CAAC;gBAC/C,SAASI,UACLJ,aACA,2BACA;;0BAGR,oBAACU,KAAK,GAAG;gBACL,KAAK;gBACL,OAAO;gBACP,SAAS,CAAC,KAAK,EAAElB,QAAQ,MAAM,CAAC,CAAC,CAAC;gBAClC,SAASY,UACLZ,SACA,wBACA;;SAGX;;AAIjB"}
@@ -0,0 +1,10 @@
1
+ import React from "react";
2
+ import type { DashboardLayoutPresenter } from "../../dashboardLayout/presenter/abstractions.js";
3
+ import type { DrawerWidget } from "./types.js";
4
+ interface DrawerWidgetRowProps {
5
+ widget: DrawerWidget;
6
+ columnCount: number;
7
+ presenter: DashboardLayoutPresenter.Interface;
8
+ }
9
+ export declare const DrawerWidgetRow: ({ widget, columnCount, presenter }: DrawerWidgetRowProps) => React.JSX.Element;
10
+ export {};
@@ -0,0 +1,38 @@
1
+ import react from "react";
2
+ import { Button, Text } from "@webiny/admin-ui";
3
+ import { AddToColumnMenu } from "./AddToColumnMenu.js";
4
+ import { WidgetPreviewFrame } from "./WidgetPreviewFrame.js";
5
+ const DrawerWidgetRow = ({ widget, columnCount, presenter })=>{
6
+ let action = /*#__PURE__*/ react.createElement(AddToColumnMenu, {
7
+ widget: widget,
8
+ columnCount: columnCount,
9
+ presenter: presenter
10
+ });
11
+ if (widget.added) action = /*#__PURE__*/ react.createElement(Button, {
12
+ size: "sm",
13
+ variant: "tertiary",
14
+ text: "Added",
15
+ disabled: true
16
+ });
17
+ return /*#__PURE__*/ react.createElement("div", {
18
+ className: "flex flex-col gap-sm rounded-md border-sm border-neutral-muted p-sm-extra"
19
+ }, /*#__PURE__*/ react.createElement(WidgetPreviewFrame, {
20
+ preview: widget.preview,
21
+ added: widget.added
22
+ }), /*#__PURE__*/ react.createElement("div", {
23
+ className: "flex items-start gap-md"
24
+ }, /*#__PURE__*/ react.createElement("div", {
25
+ className: "min-w-0 flex-1"
26
+ }, /*#__PURE__*/ react.createElement(Text, {
27
+ as: "div",
28
+ size: "md",
29
+ className: "font-semibold"
30
+ }, widget.title), widget.description && /*#__PURE__*/ react.createElement(Text, {
31
+ as: "div",
32
+ size: "sm",
33
+ className: "mt-xxs text-neutral-strong"
34
+ }, widget.description)), action));
35
+ };
36
+ export { DrawerWidgetRow };
37
+
38
+ //# sourceMappingURL=DrawerWidgetRow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Dashboard/components/addWidgetDrawer/DrawerWidgetRow.js","sources":["../../../../src/Dashboard/components/addWidgetDrawer/DrawerWidgetRow.tsx"],"sourcesContent":["import React from \"react\";\nimport { Button } from \"@webiny/admin-ui\";\nimport { Text } from \"@webiny/admin-ui\";\nimport type { DashboardLayoutPresenter } from \"../../dashboardLayout/presenter/abstractions.js\";\nimport type { DrawerWidget } from \"./types.js\";\nimport { AddToColumnMenu } from \"./AddToColumnMenu.js\";\nimport { WidgetPreviewFrame } from \"./WidgetPreviewFrame.js\";\n\ninterface DrawerWidgetRowProps {\n widget: DrawerWidget;\n columnCount: number;\n presenter: DashboardLayoutPresenter.Interface;\n}\n\nexport const DrawerWidgetRow = ({ widget, columnCount, presenter }: DrawerWidgetRowProps) => {\n let action = (\n <AddToColumnMenu widget={widget} columnCount={columnCount} presenter={presenter} />\n );\n if (widget.added) {\n action = <Button size={\"sm\"} variant={\"tertiary\"} text={\"Added\"} disabled={true} />;\n }\n\n return (\n <div\n className={\"flex flex-col gap-sm rounded-md border-sm border-neutral-muted p-sm-extra\"}\n >\n <WidgetPreviewFrame preview={widget.preview} added={widget.added} />\n <div className={\"flex items-start gap-md\"}>\n <div className={\"min-w-0 flex-1\"}>\n <Text as={\"div\"} size={\"md\"} className={\"font-semibold\"}>\n {widget.title}\n </Text>\n {widget.description && (\n <Text as={\"div\"} size={\"sm\"} className={\"mt-xxs text-neutral-strong\"}>\n {widget.description}\n </Text>\n )}\n </div>\n {action}\n </div>\n </div>\n );\n};\n"],"names":["DrawerWidgetRow","widget","columnCount","presenter","action","AddToColumnMenu","Button","WidgetPreviewFrame","Text"],"mappings":";;;;AAcO,MAAMA,kBAAkB,CAAC,EAAEC,MAAM,EAAEC,WAAW,EAAEC,SAAS,EAAwB;IACpF,IAAIC,SAAS,WAATA,GACA,oBAACC,iBAAeA;QAAC,QAAQJ;QAAQ,aAAaC;QAAa,WAAWC;;IAE1E,IAAIF,OAAO,KAAK,EACZG,SAAS,WAATA,GAAS,oBAACE,QAAMA;QAAC,MAAM;QAAM,SAAS;QAAY,MAAM;QAAS,UAAU;;IAG/E,OAAO,WAAP,GACI,oBAAC;QACG,WAAW;qBAEX,oBAACC,oBAAkBA;QAAC,SAASN,OAAO,OAAO;QAAE,OAAOA,OAAO,KAAK;sBAChE,oBAAC;QAAI,WAAW;qBACZ,oBAAC;QAAI,WAAW;qBACZ,oBAACO,MAAIA;QAAC,IAAI;QAAO,MAAM;QAAM,WAAW;OACnCP,OAAO,KAAK,GAEhBA,OAAO,WAAW,IAAI,WAAJ,GACf,oBAACO,MAAIA;QAAC,IAAI;QAAO,MAAM;QAAM,WAAW;OACnCP,OAAO,WAAW,IAI9BG;AAIjB"}
@@ -0,0 +1,7 @@
1
+ import React from "react";
2
+ interface WidgetPreviewFrameProps {
3
+ preview?: React.ReactElement;
4
+ added: boolean;
5
+ }
6
+ export declare const WidgetPreviewFrame: ({ preview, added }: WidgetPreviewFrameProps) => React.JSX.Element;
7
+ export {};
@@ -0,0 +1,44 @@
1
+ import react, { useLayoutEffect, useRef, useState } from "react";
2
+ import { cn } from "@webiny/admin-ui";
3
+ import { WidgetSketch } from "./WidgetSketch.js";
4
+ const RENDER_WIDTH = 520;
5
+ const FRAME_HEIGHT = 150;
6
+ const WidgetPreviewFrame = ({ preview, added })=>{
7
+ const frameRef = useRef(null);
8
+ const [scale, setScale] = useState(0);
9
+ useLayoutEffect(()=>{
10
+ const frame = frameRef.current;
11
+ if (!frame) return;
12
+ frame.setAttribute("inert", "");
13
+ const fit = ()=>setScale(frame.clientWidth / RENDER_WIDTH);
14
+ fit();
15
+ const observer = new ResizeObserver(fit);
16
+ observer.observe(frame);
17
+ return ()=>observer.disconnect();
18
+ }, []);
19
+ let content = /*#__PURE__*/ react.createElement("div", {
20
+ className: "flex h-full items-center justify-center"
21
+ }, /*#__PURE__*/ react.createElement(WidgetSketch, {
22
+ added: added
23
+ }));
24
+ if (preview) content = /*#__PURE__*/ react.createElement(react.Fragment, null, /*#__PURE__*/ react.createElement("div", {
25
+ className: "origin-top-left p-md",
26
+ style: {
27
+ width: RENDER_WIDTH,
28
+ transform: `scale(${scale})`
29
+ }
30
+ }, preview), /*#__PURE__*/ react.createElement("div", {
31
+ className: "absolute inset-x-0 bottom-0 h-xl bg-gradient-to-t from-neutral-light"
32
+ }));
33
+ return /*#__PURE__*/ react.createElement("div", {
34
+ "aria-hidden": true,
35
+ ref: frameRef,
36
+ className: cn("pointer-events-none relative overflow-hidden rounded-sm bg-neutral-light", "select-none", added && "opacity-60"),
37
+ style: {
38
+ height: FRAME_HEIGHT
39
+ }
40
+ }, content);
41
+ };
42
+ export { WidgetPreviewFrame };
43
+
44
+ //# sourceMappingURL=WidgetPreviewFrame.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Dashboard/components/addWidgetDrawer/WidgetPreviewFrame.js","sources":["../../../../src/Dashboard/components/addWidgetDrawer/WidgetPreviewFrame.tsx"],"sourcesContent":["import React from \"react\";\nimport { useLayoutEffect } from \"react\";\nimport { useRef } from \"react\";\nimport { useState } from \"react\";\nimport { cn } from \"@webiny/admin-ui\";\nimport { WidgetSketch } from \"./WidgetSketch.js\";\n\n// The preview renders at a dashboard column's width, then shrinks to the frame's width.\nconst RENDER_WIDTH = 520;\nconst FRAME_HEIGHT = 150;\n\ninterface WidgetPreviewFrameProps {\n preview?: React.ReactElement;\n // Already on the dashboard; the preview is dimmed to match the disabled \"Added\" button.\n added: boolean;\n}\n\nexport const WidgetPreviewFrame = ({ preview, added }: WidgetPreviewFrameProps) => {\n const frameRef = useRef<HTMLDivElement>(null);\n const [scale, setScale] = useState(0);\n\n useLayoutEffect(() => {\n const frame = frameRef.current;\n if (!frame) {\n return;\n }\n // A preview is a picture: its links and buttons must not take focus or clicks.\n frame.setAttribute(\"inert\", \"\");\n\n const fit = () => setScale(frame.clientWidth / RENDER_WIDTH);\n fit();\n const observer = new ResizeObserver(fit);\n observer.observe(frame);\n return () => observer.disconnect();\n }, []);\n\n let content = (\n <div className={\"flex h-full items-center justify-center\"}>\n <WidgetSketch added={added} />\n </div>\n );\n if (preview) {\n content = (\n <>\n <div\n className={\"origin-top-left p-md\"}\n style={{ width: RENDER_WIDTH, transform: `scale(${scale})` }}\n >\n {preview}\n </div>\n {/* Taller widgets are cropped; the fade makes the cut look intentional. */}\n <div\n className={\n \"absolute inset-x-0 bottom-0 h-xl bg-gradient-to-t from-neutral-light\"\n }\n />\n </>\n );\n }\n\n return (\n <div\n aria-hidden\n ref={frameRef}\n className={cn(\n \"pointer-events-none relative overflow-hidden rounded-sm bg-neutral-light\",\n \"select-none\",\n added && \"opacity-60\"\n )}\n style={{ height: FRAME_HEIGHT }}\n >\n {content}\n </div>\n );\n};\n"],"names":["RENDER_WIDTH","FRAME_HEIGHT","WidgetPreviewFrame","preview","added","frameRef","useRef","scale","setScale","useState","useLayoutEffect","frame","fit","observer","ResizeObserver","content","WidgetSketch","cn"],"mappings":";;;AAQA,MAAMA,eAAe;AACrB,MAAMC,eAAe;AAQd,MAAMC,qBAAqB,CAAC,EAAEC,OAAO,EAAEC,KAAK,EAA2B;IAC1E,MAAMC,WAAWC,OAAuB;IACxC,MAAM,CAACC,OAAOC,SAAS,GAAGC,SAAS;IAEnCC,gBAAgB;QACZ,MAAMC,QAAQN,SAAS,OAAO;QAC9B,IAAI,CAACM,OACD;QAGJA,MAAM,YAAY,CAAC,SAAS;QAE5B,MAAMC,MAAM,IAAMJ,SAASG,MAAM,WAAW,GAAGX;QAC/CY;QACA,MAAMC,WAAW,IAAIC,eAAeF;QACpCC,SAAS,OAAO,CAACF;QACjB,OAAO,IAAME,SAAS,UAAU;IACpC,GAAG,EAAE;IAEL,IAAIE,UAAU,WAAVA,GACA,oBAAC;QAAI,WAAW;qBACZ,oBAACC,cAAYA;QAAC,OAAOZ;;IAG7B,IAAID,SACAY,UAAU,WAAVA,GACI,wDACI,oBAAC;QACG,WAAW;QACX,OAAO;YAAE,OAAOf;YAAc,WAAW,CAAC,MAAM,EAAEO,MAAM,CAAC,CAAC;QAAC;OAE1DJ,UAAAA,WAAAA,GAGL,oBAAC;QACG,WACI;;IAOpB,OAAO,WAAP,GACI,oBAAC;QACG;QACA,KAAKE;QACL,WAAWY,GACP,4EACA,eACAb,SAAS;QAEb,OAAO;YAAE,QAAQH;QAAa;OAE7Bc;AAGb"}
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ export declare const WidgetSketch: ({ added }: {
3
+ added: boolean;
4
+ }) => React.JSX.Element;
@@ -0,0 +1,20 @@
1
+ import react from "react";
2
+ import { cn } from "@webiny/admin-ui";
3
+ const WidgetSketch = ({ added })=>/*#__PURE__*/ react.createElement("div", {
4
+ className: cn("flex h-[58px] w-[84px] flex-none flex-col gap-xxs overflow-hidden rounded-sm", "border-sm border-neutral-muted bg-neutral-base p-xs")
5
+ }, /*#__PURE__*/ react.createElement("div", {
6
+ className: "flex items-center gap-[3px]"
7
+ }, /*#__PURE__*/ react.createElement("span", {
8
+ className: cn("size-[7px] rounded-[2px]", added ? "bg-neutral-strong" : "bg-primary")
9
+ }), /*#__PURE__*/ react.createElement("span", {
10
+ className: "h-[4px] w-[30px] rounded-[2px] bg-neutral-strong/40"
11
+ })), /*#__PURE__*/ react.createElement("span", {
12
+ className: "h-[4px] w-full rounded-[2px] bg-neutral-muted"
13
+ }), /*#__PURE__*/ react.createElement("span", {
14
+ className: "h-[4px] w-3/4 rounded-[2px] bg-neutral-muted"
15
+ }), /*#__PURE__*/ react.createElement("span", {
16
+ className: "mt-[2px] h-[12px] w-[40px] rounded-[3px] bg-neutral-dimmed"
17
+ }));
18
+ export { WidgetSketch };
19
+
20
+ //# sourceMappingURL=WidgetSketch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Dashboard/components/addWidgetDrawer/WidgetSketch.js","sources":["../../../../src/Dashboard/components/addWidgetDrawer/WidgetSketch.tsx"],"sourcesContent":["import React from \"react\";\nimport { cn } from \"@webiny/admin-ui\";\n\n// A tiny sketch of a widget card, for widgets that don't provide a preview.\nexport const WidgetSketch = ({ added }: { added: boolean }) => {\n return (\n <div\n className={cn(\n \"flex h-[58px] w-[84px] flex-none flex-col gap-xxs overflow-hidden rounded-sm\",\n \"border-sm border-neutral-muted bg-neutral-base p-xs\"\n )}\n >\n <div className={\"flex items-center gap-[3px]\"}>\n <span\n className={cn(\n \"size-[7px] rounded-[2px]\",\n added ? \"bg-neutral-strong\" : \"bg-primary\"\n )}\n />\n <span className={\"h-[4px] w-[30px] rounded-[2px] bg-neutral-strong/40\"} />\n </div>\n <span className={\"h-[4px] w-full rounded-[2px] bg-neutral-muted\"} />\n <span className={\"h-[4px] w-3/4 rounded-[2px] bg-neutral-muted\"} />\n <span className={\"mt-[2px] h-[12px] w-[40px] rounded-[3px] bg-neutral-dimmed\"} />\n </div>\n );\n};\n"],"names":["WidgetSketch","added","cn"],"mappings":";;AAIO,MAAMA,eAAe,CAAC,EAAEC,KAAK,EAAsB,GAC/C,WAAP,GACI,oBAAC;QACG,WAAWC,GACP,gFACA;qBAGJ,oBAAC;QAAI,WAAW;qBACZ,oBAAC;QACG,WAAWA,GACP,4BACAD,QAAQ,sBAAsB;sBAGtC,oBAAC;QAAK,WAAW;uBAErB,oBAAC;QAAK,WAAW;sBACjB,oBAAC;QAAK,WAAW;sBACjB,oBAAC;QAAK,WAAW"}
@@ -0,0 +1,14 @@
1
+ import React from "react";
2
+ import type { DashboardLayoutPresenter } from "../../dashboardLayout/presenter/abstractions.js";
3
+ import type { DrawerWidget } from "./types.js";
4
+ interface WidgetTabContentProps {
5
+ items: DrawerWidget[];
6
+ search: string;
7
+ onSearch: (value: string) => void;
8
+ emptyTitle: string;
9
+ emptyDescription: string;
10
+ columnCount: number;
11
+ presenter: DashboardLayoutPresenter.Interface;
12
+ }
13
+ export declare const WidgetTabContent: ({ items, search, onSearch, emptyTitle, emptyDescription, columnCount, presenter }: WidgetTabContentProps) => React.JSX.Element;
14
+ export {};
@@ -0,0 +1,76 @@
1
+ import react from "react";
2
+ import { EmptyState, Icon, Input, Text } from "@webiny/admin-ui";
3
+ import { ReactComponent } from "@webiny/icons/search.svg";
4
+ import { DrawerWidgetRow } from "./DrawerWidgetRow.js";
5
+ const DEFAULT_GROUP = "Other";
6
+ const matchesSearch = (widget, query)=>{
7
+ if (!query) return true;
8
+ const fields = [
9
+ widget.title,
10
+ widget.description,
11
+ widget.group
12
+ ];
13
+ return fields.some((value)=>value?.toLowerCase().includes(query));
14
+ };
15
+ const groupWidgets = (widgets)=>{
16
+ const byGroup = new Map();
17
+ for (const widget of widgets){
18
+ const group = widget.group ?? DEFAULT_GROUP;
19
+ const items = byGroup.get(group) ?? [];
20
+ byGroup.set(group, [
21
+ ...items,
22
+ widget
23
+ ]);
24
+ }
25
+ return [
26
+ ...byGroup.entries()
27
+ ];
28
+ };
29
+ const WidgetTabContent = ({ items, search, onSearch, emptyTitle, emptyDescription, columnCount, presenter })=>{
30
+ const query = search.trim().toLowerCase();
31
+ const matches = items.filter((widget)=>matchesSearch(widget, query));
32
+ const groups = groupWidgets(matches);
33
+ let emptyState = null;
34
+ if (0 === items.length) emptyState = /*#__PURE__*/ react.createElement(EmptyState, {
35
+ size: "sm",
36
+ type: "layout",
37
+ title: emptyTitle,
38
+ description: emptyDescription
39
+ });
40
+ else if (0 === matches.length) emptyState = /*#__PURE__*/ react.createElement(EmptyState, {
41
+ size: "sm",
42
+ type: "select",
43
+ title: `No widgets match "${search}"`,
44
+ description: "Try a different search."
45
+ });
46
+ return /*#__PURE__*/ react.createElement("div", {
47
+ className: "pb-lg"
48
+ }, items.length > 0 && /*#__PURE__*/ react.createElement(Input, {
49
+ placeholder: "Search widgets",
50
+ value: search,
51
+ onChange: onSearch,
52
+ startIcon: /*#__PURE__*/ react.createElement(Icon, {
53
+ label: "Search",
54
+ icon: /*#__PURE__*/ react.createElement(ReactComponent, null)
55
+ })
56
+ }), emptyState && /*#__PURE__*/ react.createElement("div", {
57
+ className: "mt-lg"
58
+ }, emptyState), groups.map(([group, groupItems])=>/*#__PURE__*/ react.createElement("div", {
59
+ key: group,
60
+ className: "mt-lg"
61
+ }, /*#__PURE__*/ react.createElement(Text, {
62
+ as: "div",
63
+ size: "sm",
64
+ className: "mb-sm font-semibold uppercase tracking-wide text-neutral-strong"
65
+ }, group), /*#__PURE__*/ react.createElement("div", {
66
+ className: "flex flex-col gap-sm"
67
+ }, groupItems.map((widget)=>/*#__PURE__*/ react.createElement(DrawerWidgetRow, {
68
+ key: widget.name,
69
+ widget: widget,
70
+ columnCount: columnCount,
71
+ presenter: presenter
72
+ }))))));
73
+ };
74
+ export { WidgetTabContent };
75
+
76
+ //# sourceMappingURL=WidgetTabContent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Dashboard/components/addWidgetDrawer/WidgetTabContent.js","sources":["../../../../src/Dashboard/components/addWidgetDrawer/WidgetTabContent.tsx"],"sourcesContent":["import React from \"react\";\nimport { EmptyState } from \"@webiny/admin-ui\";\nimport { Icon } from \"@webiny/admin-ui\";\nimport { Input } from \"@webiny/admin-ui\";\nimport { Text } from \"@webiny/admin-ui\";\nimport { ReactComponent as SearchIcon } from \"@webiny/icons/search.svg\";\nimport type { DashboardLayoutPresenter } from \"../../dashboardLayout/presenter/abstractions.js\";\nimport type { DrawerWidget } from \"./types.js\";\nimport { DrawerWidgetRow } from \"./DrawerWidgetRow.js\";\n\nconst DEFAULT_GROUP = \"Other\";\n\nconst matchesSearch = (widget: DrawerWidget, query: string): boolean => {\n if (!query) {\n return true;\n }\n const fields = [widget.title, widget.description, widget.group];\n return fields.some(value => value?.toLowerCase().includes(query));\n};\n\nconst groupWidgets = (widgets: DrawerWidget[]): [string, DrawerWidget[]][] => {\n const byGroup = new Map<string, DrawerWidget[]>();\n for (const widget of widgets) {\n const group = widget.group ?? DEFAULT_GROUP;\n const items = byGroup.get(group) ?? [];\n byGroup.set(group, [...items, widget]);\n }\n return [...byGroup.entries()];\n};\n\ninterface WidgetTabContentProps {\n items: DrawerWidget[];\n search: string;\n onSearch: (value: string) => void;\n emptyTitle: string;\n emptyDescription: string;\n columnCount: number;\n presenter: DashboardLayoutPresenter.Interface;\n}\n\nexport const WidgetTabContent = ({\n items,\n search,\n onSearch,\n emptyTitle,\n emptyDescription,\n columnCount,\n presenter\n}: WidgetTabContentProps) => {\n const query = search.trim().toLowerCase();\n const matches = items.filter(widget => matchesSearch(widget, query));\n const groups = groupWidgets(matches);\n\n let emptyState: React.ReactNode = null;\n if (items.length === 0) {\n emptyState = (\n <EmptyState\n size={\"sm\"}\n type={\"layout\"}\n title={emptyTitle}\n description={emptyDescription}\n />\n );\n } else if (matches.length === 0) {\n emptyState = (\n <EmptyState\n size={\"sm\"}\n type={\"select\"}\n title={`No widgets match \"${search}\"`}\n description={\"Try a different search.\"}\n />\n );\n }\n\n return (\n <div className={\"pb-lg\"}>\n {items.length > 0 && (\n <Input\n placeholder={\"Search widgets\"}\n value={search}\n onChange={onSearch}\n startIcon={<Icon label={\"Search\"} icon={<SearchIcon />} />}\n />\n )}\n {emptyState && <div className={\"mt-lg\"}>{emptyState}</div>}\n {groups.map(([group, groupItems]) => (\n <div key={group} className={\"mt-lg\"}>\n <Text\n as={\"div\"}\n size={\"sm\"}\n className={\n \"mb-sm font-semibold uppercase tracking-wide text-neutral-strong\"\n }\n >\n {group}\n </Text>\n <div className={\"flex flex-col gap-sm\"}>\n {groupItems.map(widget => (\n <DrawerWidgetRow\n key={widget.name}\n widget={widget}\n columnCount={columnCount}\n presenter={presenter}\n />\n ))}\n </div>\n </div>\n ))}\n </div>\n );\n};\n"],"names":["DEFAULT_GROUP","matchesSearch","widget","query","fields","value","groupWidgets","widgets","byGroup","Map","group","items","WidgetTabContent","search","onSearch","emptyTitle","emptyDescription","columnCount","presenter","matches","groups","emptyState","EmptyState","Input","Icon","SearchIcon","groupItems","Text","DrawerWidgetRow"],"mappings":";;;;AAUA,MAAMA,gBAAgB;AAEtB,MAAMC,gBAAgB,CAACC,QAAsBC;IACzC,IAAI,CAACA,OACD,OAAO;IAEX,MAAMC,SAAS;QAACF,OAAO,KAAK;QAAEA,OAAO,WAAW;QAAEA,OAAO,KAAK;KAAC;IAC/D,OAAOE,OAAO,IAAI,CAACC,CAAAA,QAASA,OAAO,cAAc,SAASF;AAC9D;AAEA,MAAMG,eAAe,CAACC;IAClB,MAAMC,UAAU,IAAIC;IACpB,KAAK,MAAMP,UAAUK,QAAS;QAC1B,MAAMG,QAAQR,OAAO,KAAK,IAAIF;QAC9B,MAAMW,QAAQH,QAAQ,GAAG,CAACE,UAAU,EAAE;QACtCF,QAAQ,GAAG,CAACE,OAAO;eAAIC;YAAOT;SAAO;IACzC;IACA,OAAO;WAAIM,QAAQ,OAAO;KAAG;AACjC;AAYO,MAAMI,mBAAmB,CAAC,EAC7BD,KAAK,EACLE,MAAM,EACNC,QAAQ,EACRC,UAAU,EACVC,gBAAgB,EAChBC,WAAW,EACXC,SAAS,EACW;IACpB,MAAMf,QAAQU,OAAO,IAAI,GAAG,WAAW;IACvC,MAAMM,UAAUR,MAAM,MAAM,CAACT,CAAAA,SAAUD,cAAcC,QAAQC;IAC7D,MAAMiB,SAASd,aAAaa;IAE5B,IAAIE,aAA8B;IAClC,IAAIV,AAAiB,MAAjBA,MAAM,MAAM,EACZU,aAAa,WAAbA,GACI,oBAACC,YAAUA;QACP,MAAM;QACN,MAAM;QACN,OAAOP;QACP,aAAaC;;SAGlB,IAAIG,AAAmB,MAAnBA,QAAQ,MAAM,EACrBE,aAAa,WAAbA,GACI,oBAACC,YAAUA;QACP,MAAM;QACN,MAAM;QACN,OAAO,CAAC,kBAAkB,EAAET,OAAO,CAAC,CAAC;QACrC,aAAa;;IAKzB,OAAO,WAAP,GACI,oBAAC;QAAI,WAAW;OACXF,MAAM,MAAM,GAAG,KAAK,WAAL,GACZ,oBAACY,OAAKA;QACF,aAAa;QACb,OAAOV;QACP,UAAUC;QACV,yBAAW,oBAACU,MAAIA;YAAC,OAAO;YAAU,oBAAM,oBAACC,gBAAUA;;QAG1DJ,cAAc,WAAdA,GAAc,oBAAC;QAAI,WAAW;OAAUA,aACxCD,OAAO,GAAG,CAAC,CAAC,CAACV,OAAOgB,WAAW,iBAC5B,oBAAC;YAAI,KAAKhB;YAAO,WAAW;yBACxB,oBAACiB,MAAIA;YACD,IAAI;YACJ,MAAM;YACN,WACI;WAGHjB,QAAAA,WAAAA,GAEL,oBAAC;YAAI,WAAW;WACXgB,WAAW,GAAG,CAACxB,CAAAA,SAAAA,WAAAA,GACZ,oBAAC0B,iBAAeA;gBACZ,KAAK1B,OAAO,IAAI;gBAChB,QAAQA;gBACR,aAAae;gBACb,WAAWC;;AAQ3C"}
@@ -0,0 +1,10 @@
1
+ import type React from "react";
2
+ export interface DrawerWidget {
3
+ name: string;
4
+ title: string;
5
+ description?: string;
6
+ group?: string;
7
+ preview?: React.ReactElement;
8
+ added: boolean;
9
+ defaultColumn: number;
10
+ }
File without changes
@@ -0,0 +1,14 @@
1
+ import __rslib_svgr_url__0__ from "../../../static/svg/github.08a73b00.svg";
2
+ import * as __rspack_external_react from "react";
3
+ const SvgGithub = (props)=>/*#__PURE__*/ __rspack_external_react.createElement("svg", {
4
+ xmlns: "http://www.w3.org/2000/svg",
5
+ viewBox: "0 0 496 512",
6
+ ...props
7
+ }, /*#__PURE__*/ __rspack_external_react.createElement("path", {
8
+ d: "M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8M97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"
9
+ }));
10
+ const github = __rslib_svgr_url__0__;
11
+ export default github;
12
+ export { SvgGithub as ReactComponent };
13
+
14
+ //# sourceMappingURL=github.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Dashboard/components/assets/github.js","sources":["../../../../src/Dashboard/components/assets/github.svg"],"sourcesContent":["import * as React from \"react\";\nconst SvgGithub = props => <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 496 512\" {...props}><path d=\"M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8M97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2\" /></svg>;\nexport { SvgGithub as ReactComponent };\nexport default \"__RSLIB_SVGR_AUTO_PUBLIC_PATH__static/svg/github.08a73b00.svg\";"],"names":["SvgGithub","props"],"mappings":";;AACA,MAAMA,YAAYC,CAAAA,QAAAA,WAAAA,GAAS,sCAAC;QAAI,OAAM;QAA6B,SAAQ;QAAe,GAAGA,KAAK;qBAAE,sCAAC;QAAK,GAAE;;AAE5G"}
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!-- Font Awesome Free 5.15.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"/></svg>
@@ -0,0 +1,27 @@
1
+ import __rslib_svgr_url__0__ from "../../../static/svg/slack.1b2ba162.svg";
2
+ import * as __rspack_external_react from "react";
3
+ const SvgSlack = (props)=>/*#__PURE__*/ __rspack_external_react.createElement("svg", {
4
+ xmlns: "http://www.w3.org/2000/svg",
5
+ width: 20,
6
+ height: 20,
7
+ fill: "none",
8
+ viewBox: "0 0 20 20",
9
+ ...props
10
+ }, /*#__PURE__*/ __rspack_external_react.createElement("path", {
11
+ fill: "#2EB67D",
12
+ d: "M17.875 9.25A1.875 1.875 0 1 0 16 7.375V9.25zm-5.25 0c1.036 0 1.875-.84 1.875-1.875v-5.25a1.875 1.875 0 0 0-3.75 0v5.25c0 1.035.84 1.875 1.875 1.875"
13
+ }), /*#__PURE__*/ __rspack_external_react.createElement("path", {
14
+ fill: "#E01E5A",
15
+ d: "M2.125 10.75A1.875 1.875 0 1 0 4 12.625V10.75zm5.25 0c-1.036 0-1.875.84-1.875 1.875v5.25a1.875 1.875 0 1 0 3.75 0v-5.25c0-1.035-.84-1.875-1.875-1.875"
16
+ }), /*#__PURE__*/ __rspack_external_react.createElement("path", {
17
+ fill: "#ECB22E",
18
+ d: "M10.75 17.875A1.875 1.875 0 1 0 12.625 16H10.75zm0-5.25c0 1.036.84 1.875 1.875 1.875h5.25a1.875 1.875 0 1 0 0-3.75h-5.25c-1.035 0-1.875.84-1.875 1.875"
19
+ }), /*#__PURE__*/ __rspack_external_react.createElement("path", {
20
+ fill: "#36C5F0",
21
+ d: "M9.25 2.125A1.875 1.875 0 1 0 7.375 4H9.25zm0 5.25c0-1.036-.84-1.875-1.875-1.875h-5.25a1.875 1.875 0 1 0 0 3.75h5.25c1.035 0 1.875-.84 1.875-1.875"
22
+ }));
23
+ const slack = __rslib_svgr_url__0__;
24
+ export default slack;
25
+ export { SvgSlack as ReactComponent };
26
+
27
+ //# sourceMappingURL=slack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Dashboard/components/assets/slack.js","sources":["../../../../src/Dashboard/components/assets/slack.svg"],"sourcesContent":["import * as React from \"react\";\nconst SvgSlack = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width={20} height={20} fill=\"none\" viewBox=\"0 0 20 20\" {...props}><path fill=\"#2EB67D\" d=\"M17.875 9.25A1.875 1.875 0 1 0 16 7.375V9.25zm-5.25 0c1.036 0 1.875-.84 1.875-1.875v-5.25a1.875 1.875 0 0 0-3.75 0v5.25c0 1.035.84 1.875 1.875 1.875\" /><path fill=\"#E01E5A\" d=\"M2.125 10.75A1.875 1.875 0 1 0 4 12.625V10.75zm5.25 0c-1.036 0-1.875.84-1.875 1.875v5.25a1.875 1.875 0 1 0 3.75 0v-5.25c0-1.035-.84-1.875-1.875-1.875\" /><path fill=\"#ECB22E\" d=\"M10.75 17.875A1.875 1.875 0 1 0 12.625 16H10.75zm0-5.25c0 1.036.84 1.875 1.875 1.875h5.25a1.875 1.875 0 1 0 0-3.75h-5.25c-1.035 0-1.875.84-1.875 1.875\" /><path fill=\"#36C5F0\" d=\"M9.25 2.125A1.875 1.875 0 1 0 7.375 4H9.25zm0 5.25c0-1.036-.84-1.875-1.875-1.875h-5.25a1.875 1.875 0 1 0 0 3.75h5.25c1.035 0 1.875-.84 1.875-1.875\" /></svg>;\nexport { SvgSlack as ReactComponent };\nexport default \"__RSLIB_SVGR_AUTO_PUBLIC_PATH__static/svg/slack.1b2ba162.svg\";"],"names":["SvgSlack","props"],"mappings":";;AACA,MAAMA,WAAWC,CAAAA,QAAAA,WAAAA,GAAS,sCAAC;QAAI,OAAM;QAA6B,OAAO;QAAI,QAAQ;QAAI,MAAK;QAAO,SAAQ;QAAa,GAAGA,KAAK;qBAAE,sCAAC;QAAK,MAAK;QAAU,GAAE;sBAAyJ,sCAAC;QAAK,MAAK;QAAU,GAAE;sBAA0J,sCAAC;QAAK,MAAK;QAAU,GAAE;sBAA2J,sCAAC;QAAK,MAAK;QAAU,GAAE;;AAE9qB"}
@@ -0,0 +1,8 @@
1
+ <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g id="Vector">
3
+ <path d="M17.8752 9.24984C18.9106 9.24984 19.75 8.41045 19.75 7.375C19.75 6.33956 18.9105 5.50016 17.8751 5.50016C16.8395 5.50016 16 6.33963 16 7.37516V9.24984H17.8752ZM12.625 9.24984C13.6605 9.24984 14.5 8.41037 14.5 7.37484V2.12516C14.5 1.08963 13.6605 0.250159 12.625 0.250159C11.5895 0.250159 10.75 1.08963 10.75 2.12516V7.37484C10.75 8.41037 11.5895 9.24984 12.625 9.24984Z" fill="#2EB67D"/>
4
+ <path d="M2.12484 10.7502C1.08939 10.7502 0.25 11.5896 0.25 12.625C0.25 13.6604 1.08947 14.4998 2.12492 14.4998C3.16045 14.4998 4 13.6604 4 12.6248V10.7502H2.12484ZM7.375 10.7502C6.33947 10.7502 5.5 11.5896 5.5 12.6252V17.8748C5.5 18.9104 6.33947 19.7498 7.375 19.7498C8.41053 19.7498 9.25 18.9104 9.25 17.8748V12.6252C9.25 11.5896 8.41053 10.7502 7.375 10.7502Z" fill="#E01E5A"/>
5
+ <path d="M10.7501 17.8752C10.7501 18.9106 11.5895 19.75 12.625 19.75C13.6604 19.75 14.4998 18.9105 14.4998 17.8751C14.4998 16.8395 13.6603 16 12.6248 16H10.7501V17.8752ZM10.7501 12.625C10.7501 13.6605 11.5896 14.5 12.6251 14.5H17.8748C18.9104 14.5 19.7498 13.6605 19.7498 12.625C19.7498 11.5895 18.9104 10.75 17.8748 10.75H12.6251C11.5896 10.75 10.7501 11.5895 10.7501 12.625Z" fill="#ECB22E"/>
6
+ <path d="M9.24981 2.12484C9.24982 1.08939 8.41042 0.25 7.37498 0.25C6.33953 0.25 5.50014 1.08947 5.50014 2.12492C5.50014 3.16045 6.3396 4 7.37514 4H9.24981V2.12484ZM9.24981 7.375C9.24982 6.33947 8.41035 5.5 7.37482 5.5L2.12514 5.5C1.0896 5.5 0.250137 6.33947 0.250137 7.375C0.250137 8.41053 1.0896 9.25 2.12514 9.25H7.37482C8.41035 9.25 9.24981 8.41053 9.24981 7.375Z" fill="#36C5F0"/>
7
+ </g>
8
+ </svg>
@@ -0,0 +1,18 @@
1
+ import __rslib_svgr_url__0__ from "../../../static/svg/x-twitter.46e7218c.svg";
2
+ import * as __rspack_external_react from "react";
3
+ const SvgXTwitter = (props)=>/*#__PURE__*/ __rspack_external_react.createElement("svg", {
4
+ xmlns: "http://www.w3.org/2000/svg",
5
+ width: 24,
6
+ height: 24,
7
+ fill: "none",
8
+ viewBox: "0 0 24 24",
9
+ ...props
10
+ }, /*#__PURE__*/ __rspack_external_react.createElement("path", {
11
+ fill: "#000",
12
+ d: "M18.326 1.904H21.7l-7.37 8.423L23 21.79h-6.789l-5.317-6.952L4.81 21.79H1.434l7.883-9.01L1 1.904h6.961l4.806 6.354zM17.142 19.77h1.87L6.945 3.817H4.94z"
13
+ }));
14
+ const x_twitter = __rslib_svgr_url__0__;
15
+ export default x_twitter;
16
+ export { SvgXTwitter as ReactComponent };
17
+
18
+ //# sourceMappingURL=x-twitter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Dashboard/components/assets/x-twitter.js","sources":["../../../../src/Dashboard/components/assets/x-twitter.svg"],"sourcesContent":["import * as React from \"react\";\nconst SvgXTwitter = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width={24} height={24} fill=\"none\" viewBox=\"0 0 24 24\" {...props}><path fill=\"#000\" d=\"M18.326 1.904H21.7l-7.37 8.423L23 21.79h-6.789l-5.317-6.952L4.81 21.79H1.434l7.883-9.01L1 1.904h6.961l4.806 6.354zM17.142 19.77h1.87L6.945 3.817H4.94z\" /></svg>;\nexport { SvgXTwitter as ReactComponent };\nexport default \"__RSLIB_SVGR_AUTO_PUBLIC_PATH__static/svg/x-twitter.46e7218c.svg\";"],"names":["SvgXTwitter","props"],"mappings":";;AACA,MAAMA,cAAcC,CAAAA,QAAAA,WAAAA,GAAS,sCAAC;QAAI,OAAM;QAA6B,OAAO;QAAI,QAAQ;QAAI,MAAK;QAAO,SAAQ;QAAa,GAAGA,KAAK;qBAAE,sCAAC;QAAK,MAAK;QAAO,GAAE;;AAE3J"}
@@ -0,0 +1,5 @@
1
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g id="Social Icons">
3
+ <path id="Vector" d="M18.3263 1.90393H21.6998L14.3297 10.3274L23 21.7899H16.2112L10.894 14.838L4.80995 21.7899H1.43443L9.31743 12.78L1 1.90393H7.96111L12.7674 8.25826L18.3263 1.90393ZM17.1423 19.7707H19.0116L6.94539 3.81706H4.93946L17.1423 19.7707Z" fill="black"/>
4
+ </g>
5
+ </svg>
@@ -0,0 +1,28 @@
1
+ import __rslib_svgr_url__0__ from "../../../static/svg/youtube.3c232651.svg";
2
+ import * as __rspack_external_react from "react";
3
+ const SvgYoutube = (props)=>/*#__PURE__*/ __rspack_external_react.createElement("svg", {
4
+ xmlns: "http://www.w3.org/2000/svg",
5
+ width: 24,
6
+ height: 24,
7
+ fill: "none",
8
+ viewBox: "0 0 24 24",
9
+ ...props
10
+ }, /*#__PURE__*/ __rspack_external_react.createElement("g", {
11
+ clipPath: "url(#youtube_svg__a)"
12
+ }, /*#__PURE__*/ __rspack_external_react.createElement("path", {
13
+ fill: "#FF0302",
14
+ d: "M23.522 6.185A3.02 3.02 0 0 0 21.4 4.05c-1.876-.505-9.376-.505-9.376-.505s-7.5 0-9.376.505A3.02 3.02 0 0 0 .526 6.185C.024 8.07.024 12 .024 12s0 3.93.502 5.815a3.02 3.02 0 0 0 2.122 2.135c1.876.505 9.376.505 9.376.505s7.5 0 9.376-.505a3.02 3.02 0 0 0 2.122-2.135c.502-1.885.502-5.815.502-5.815s0-3.93-.502-5.815"
15
+ }), /*#__PURE__*/ __rspack_external_react.createElement("path", {
16
+ fill: "#FEFEFE",
17
+ d: "M9.57 15.569V8.43L15.841 12z"
18
+ })), /*#__PURE__*/ __rspack_external_react.createElement("defs", null, /*#__PURE__*/ __rspack_external_react.createElement("clipPath", {
19
+ id: "youtube_svg__a"
20
+ }, /*#__PURE__*/ __rspack_external_react.createElement("path", {
21
+ fill: "#fff",
22
+ d: "M0 0h24v24H0z"
23
+ }))));
24
+ const youtube = __rslib_svgr_url__0__;
25
+ export default youtube;
26
+ export { SvgYoutube as ReactComponent };
27
+
28
+ //# sourceMappingURL=youtube.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Dashboard/components/assets/youtube.js","sources":["../../../../src/Dashboard/components/assets/youtube.svg"],"sourcesContent":["import * as React from \"react\";\nconst SvgYoutube = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width={24} height={24} fill=\"none\" viewBox=\"0 0 24 24\" {...props}><g clipPath=\"url(#youtube_svg__a)\"><path fill=\"#FF0302\" d=\"M23.522 6.185A3.02 3.02 0 0 0 21.4 4.05c-1.876-.505-9.376-.505-9.376-.505s-7.5 0-9.376.505A3.02 3.02 0 0 0 .526 6.185C.024 8.07.024 12 .024 12s0 3.93.502 5.815a3.02 3.02 0 0 0 2.122 2.135c1.876.505 9.376.505 9.376.505s7.5 0 9.376-.505a3.02 3.02 0 0 0 2.122-2.135c.502-1.885.502-5.815.502-5.815s0-3.93-.502-5.815\" /><path fill=\"#FEFEFE\" d=\"M9.57 15.569V8.43L15.841 12z\" /></g><defs><clipPath id=\"youtube_svg__a\"><path fill=\"#fff\" d=\"M0 0h24v24H0z\" /></clipPath></defs></svg>;\nexport { SvgYoutube as ReactComponent };\nexport default \"__RSLIB_SVGR_AUTO_PUBLIC_PATH__static/svg/youtube.3c232651.svg\";"],"names":["SvgYoutube","props"],"mappings":";;AACA,MAAMA,aAAaC,CAAAA,QAAAA,WAAAA,GAAS,sCAAC;QAAI,OAAM;QAA6B,OAAO;QAAI,QAAQ;QAAI,MAAK;QAAO,SAAQ;QAAa,GAAGA,KAAK;qBAAE,sCAAC;QAAE,UAAS;qBAAuB,sCAAC;QAAK,MAAK;QAAU,GAAE;sBAA4T,sCAAC;QAAK,MAAK;QAAU,GAAE;uBAAqC,sCAAC,4BAAK,sCAAC;QAAS,IAAG;qBAAiB,sCAAC;QAAK,MAAK;QAAO,GAAE;;AAEhnB"}