@decafhub/decaf-react-webapp 0.0.1 → 0.0.2
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.
- package/CHANGELOG.md +13 -0
- package/README.md +12 -5
- package/dist/Layout.d.ts +7 -0
- package/dist/Layout.d.ts.map +1 -0
- package/dist/index.d.ts +6 -10
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.modern.mjs +1 -1
- package/dist/index.modern.mjs.map +1 -1
- package/dist/index.module.js +1 -1
- package/dist/index.module.js.map +1 -1
- package/dist/index.umd.js +1 -1
- package/dist/index.umd.js.map +1 -1
- package/dist/theme.d.ts.map +1 -1
- package/dist/types.d.ts +31 -0
- package/dist/types.d.ts.map +1 -0
- package/package.json +10 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.0.2](https://github.com/teloscube/decaf-react-webapp/compare/v0.0.1...v0.0.2) (2022-11-28)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* get menu, routes and appName as props ([f76e1b9](https://github.com/teloscube/decaf-react-webapp/commit/f76e1b94b8e390ae3a901bc3509404c9d20eca01))
|
|
9
|
+
* integrate and export emotion for styling ([de274f7](https://github.com/teloscube/decaf-react-webapp/commit/de274f7b3139acd7502259ddf16e2dff24b55e51))
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
### Bug Fixes
|
|
13
|
+
|
|
14
|
+
* app name is not working as a link to home page ([4bbbc56](https://github.com/teloscube/decaf-react-webapp/commit/4bbbc565c7d7a3202bc1c3657347c8b642e5036e))
|
|
15
|
+
|
|
3
16
|
## 0.0.1 (2022-11-24)
|
|
4
17
|
|
|
5
18
|
|
package/README.md
CHANGED
|
@@ -9,20 +9,27 @@
|
|
|
9
9
|
Install @decafhub/decaf-react-webapp along with its peer dependencies:
|
|
10
10
|
|
|
11
11
|
```bash:
|
|
12
|
-
npm install --save @decafhub/decaf-react-webapp @decafhub/decaf-react@^0.1 @decafhub/decaf-client@^0.3 antd@^5 react@^18 react-dom@^18
|
|
12
|
+
npm install --save @decafhub/decaf-react-webapp @decafhub/decaf-react@^0.1 @decafhub/decaf-client@^0.3 antd@^5 @ant-design/icons@^4 react@^18 react-dom@^18
|
|
13
13
|
```
|
|
14
14
|
|
|
15
15
|
Or with yarn:
|
|
16
16
|
|
|
17
17
|
```bash
|
|
18
|
-
yarn add @decafhub/decaf-react-webapp @decafhub/decaf-react@^0.1 @decafhub/decaf-client@^0.3 antd@^5 react@^18 react-dom@^18
|
|
18
|
+
yarn add @decafhub/decaf-react-webapp @decafhub/decaf-react@^0.1 @decafhub/decaf-client@^0.3 antd@^5 @ant-design/icons@^4 react@^18 react-dom@^18
|
|
19
19
|
```
|
|
20
20
|
|
|
21
|
+
## Usage
|
|
22
|
+
|
|
23
|
+
See the [App.tsx](./example/src/App.tsx) file in the `example` folder file for detailed usage.
|
|
24
|
+
|
|
21
25
|
## Development
|
|
22
26
|
|
|
23
27
|
1. Clone the repository.
|
|
24
28
|
2. Install dependencies with `yarn`.
|
|
25
29
|
3. Run `yarn start` to start the development server.
|
|
26
|
-
4. cd into `example`
|
|
27
|
-
|
|
28
|
-
|
|
30
|
+
4. cd into `example`
|
|
31
|
+
1. run `yarn install`
|
|
32
|
+
2. duplicate `.env.example` to `.env`
|
|
33
|
+
3. run `yarn start` to start the example application.
|
|
34
|
+
4. run `yarn caddy` to start the Caddy server.
|
|
35
|
+
5. Open http://localhost:2999/webapps/react-webapp-example/development/ in your browser.
|
package/dist/Layout.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { ItemType } from 'antd/es/menu/hooks/useItems';
|
|
3
|
+
import { DecafLayoutProps } from 'types';
|
|
4
|
+
import { DecafMenuItem } from './types';
|
|
5
|
+
export declare function routesToAntMenu(routes: DecafMenuItem[]): ItemType[];
|
|
6
|
+
export default function DecafLayout(props: DecafLayoutProps): JSX.Element;
|
|
7
|
+
//# sourceMappingURL=Layout.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Layout.d.ts","sourceRoot":"","sources":["../src/Layout.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAe,MAAM,6BAA6B,CAAC;AAGpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC,wBAAgB,eAAe,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,QAAQ,EAAE,CAyBnE;AAED,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,KAAK,EAAE,gBAAgB,eA0B1D"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,11 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
theme?: ThemeConfig;
|
|
8
|
-
children: React.ReactNode;
|
|
9
|
-
}
|
|
10
|
-
export default function DecafWebapp(props: DecafWebappProps): JSX.Element;
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { css, Global } from '@emotion/react';
|
|
3
|
+
import styled from '@emotion/styled';
|
|
4
|
+
import { DecafWebappProps } from 'types';
|
|
5
|
+
declare function DecafWebapp(props: DecafWebappProps): JSX.Element;
|
|
6
|
+
export { DecafWebapp, Global as GlobalStyle, css, styled };
|
|
11
7
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,MAAM,MAAM,iBAAiB,CAAC;AAMrC,OAAO,EAA6B,gBAAgB,EAAE,MAAM,OAAO,CAAC;AAuBpE,iBAAS,WAAW,CAAC,KAAK,EAAE,gBAAgB,eA0B3C;AAED,OAAO,EAAE,WAAW,EAAE,MAAM,IAAI,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var e=require("@decafhub/decaf-react"),r=require("antd");function
|
|
1
|
+
var e=require("@decafhub/decaf-react"),t=require("@emotion/react"),r=require("@emotion/styled"),n=require("antd"),o=require("react"),a=require("react-router-dom");function l(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var c=/*#__PURE__*/l(r),u=/*#__PURE__*/l(o);function i(){return i=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},i.apply(this,arguments)}function d(e){var t=[];return e.forEach(function(e){var r={key:"to"in e?e.to:e.label,label:e.label,icon:e.icon};"to"in e?r.label=u.default.createElement(a.NavLink,{to:e.to,end:"/"===e.to},e.label):e.href?r.label=u.default.createElement("a",{href:e.href},e.label):e.children&&(r.label=e.label,r.children=d(e.children||[])),t.push(r)}),t}function f(e){var t=d(e.menu),r=a.useMatches().map(function(e){return e.pathname});return u.default.createElement(n.Layout,{style:{height:"100%"}},u.default.createElement(n.Layout.Header,{style:{paddingInline:0}},u.default.createElement("div",{style:{paddingInline:20,display:"flex",justifyContent:"space-between",alignItems:"center"}},u.default.createElement(a.Link,{to:"/"},u.default.createElement(n.Typography.Title,{level:4,style:{margin:0}},e.appName)),u.default.createElement(n.Menu,{style:{justifyContent:"flex-end",backgroundColor:"transparent",border:"none"},mode:"horizontal",items:t,selectedKeys:r}))),u.default.createElement(n.Layout.Content,{style:{padding:"20px 50px"}},e.children))}var s={hashed:!0,components:{Layout:{colorBgHeader:"#10161d"},Button:{boxShadow:"none",boxShadowSecondary:"none"}},token:{fontFamily:'"Inter",system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"',colorPrimary:"#344961",colorBgBase:"#1a242f",colorBgLayout:"#1a242f",borderRadius:0,colorError:"#b03a38",colorSuccess:"#48734d",colorWarning:"#ffc107",colorInfo:"#4694ab",green:"#48734d",red:"#b03a38",blue:"#0d6efd",yellow:"#ffc107",colorWhite:"#fff"},algorithm:[n.theme.darkAlgorithm]};function m(e,t){var r=[];return t.forEach(function(t){var n,o=i({},t);t.children?(o.element=null!=(n=t.element)?n:u.default.createElement(a.Outlet,null),o.children=m(e,t.children)):o.element=u.default.createElement(f,{menu:e,appName:"Decaf Webapp"},t.element),r.push(o)}),r}Object.defineProperty(exports,"GlobalStyle",{enumerable:!0,get:function(){return t.Global}}),Object.defineProperty(exports,"css",{enumerable:!0,get:function(){return t.css}}),Object.defineProperty(exports,"styled",{enumerable:!0,get:function(){return c.default}}),exports.DecafWebapp=function(r){var o,l,c,i,d=m(r.menuItems,r.routes),f=a.createBrowserRouter(d,{basename:null==(o=r.config)?void 0:o.basePath}),b=null!=(l=r.theme)?l:s;return u.default.createElement(n.ConfigProvider,{theme:b},u.default.createElement(t.Global,{styles:{body:{background:null==(c=b.token)?void 0:c.colorBgBase,fontFamily:null==(i=b.token)?void 0:i.fontFamily},button:{boxShadow:"none !important"}}}),u.default.createElement(e.DecafApp,{config:r.config,controller:r.controller},u.default.createElement(a.RouterProvider,{router:f})))};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/theme.ts","../src/index.tsx"],"sourcesContent":["import { theme } from 'antd';\nimport { ThemeConfig } from 'antd/es/config-provider/context';\n\nexport const decafTheme: ThemeConfig = {\n hashed: true,\n token: {\n colorPrimary: '#344961',\n colorBgBase: '#
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/Layout.tsx","../src/theme.ts","../src/index.tsx"],"sourcesContent":["import { Layout, Menu, Typography } from 'antd';\nimport { ItemType, SubMenuType } from 'antd/es/menu/hooks/useItems';\nimport React from 'react';\nimport { Link, NavLink, useMatches } from 'react-router-dom';\nimport { DecafLayoutProps } from 'types';\nimport { DecafMenuItem } from './types';\n\nexport function routesToAntMenu(routes: DecafMenuItem[]): ItemType[] {\n const result: ItemType[] = [];\n\n routes.forEach((route) => {\n const item: ItemType = {\n key: 'to' in route ? route.to : route.label,\n label: route.label,\n icon: route.icon,\n };\n if ('to' in route) {\n item.label = (\n <NavLink to={route.to} end={route.to === '/'}>\n {route.label}\n </NavLink>\n );\n } else if (route.href) {\n item.label = <a href={route.href}>{route.label}</a>;\n } else if (route.children) {\n item.label = route.label;\n (item as SubMenuType).children = routesToAntMenu(route.children || []);\n }\n result.push(item);\n });\n\n return result;\n}\n\nexport default function DecafLayout(props: DecafLayoutProps) {\n const menuItems = routesToAntMenu(props.menu);\n const matches = useMatches();\n const matchedMenuItems = matches.map((match) => match.pathname);\n\n return (\n <Layout style={{ height: '100%' }}>\n <Layout.Header style={{ paddingInline: 0 }}>\n <div style={{ paddingInline: 20, display: 'flex', justifyContent: 'space-between', alignItems: 'center' }}>\n <Link to=\"/\">\n <Typography.Title level={4} style={{ margin: 0 }}>\n {props.appName}\n </Typography.Title>\n </Link>\n <Menu\n style={{ justifyContent: 'flex-end', backgroundColor: 'transparent', border: 'none' }}\n mode=\"horizontal\"\n items={menuItems}\n selectedKeys={matchedMenuItems}\n />\n </div>\n </Layout.Header>\n <Layout.Content style={{ padding: '20px 50px' }}>{props.children}</Layout.Content>\n {/* <Layout.Footer style={{ textAlign: 'center' }}>Footer</Layout.Footer> */}\n </Layout>\n );\n}\n","import { theme } from 'antd';\nimport { ThemeConfig } from 'antd/es/config-provider/context';\n\nexport const decafTheme: ThemeConfig = {\n hashed: true,\n components: {\n Layout: {\n colorBgHeader: '#10161d',\n },\n Button: {\n boxShadow: 'none',\n boxShadowSecondary: 'none',\n },\n },\n token: {\n fontFamily:\n '\"Inter\",system-ui,-apple-system,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial,\"Noto Sans\",\"Liberation Sans\",sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\"',\n colorPrimary: '#344961',\n colorBgBase: '#1a242f',\n colorBgLayout: '#1a242f',\n borderRadius: 0,\n colorError: '#b03a38',\n colorSuccess: '#48734d',\n colorWarning: '#ffc107',\n colorInfo: '#4694ab',\n green: '#48734d',\n red: '#b03a38',\n blue: '#0d6efd',\n yellow: '#ffc107',\n colorWhite: '#fff',\n },\n\n algorithm: [theme.darkAlgorithm],\n};\n","import { DecafApp } from '@decafhub/decaf-react';\nimport { css, Global } from '@emotion/react';\nimport styled from '@emotion/styled';\nimport { ConfigProvider } from 'antd';\nimport DecafLayout from 'Layout';\nimport React from 'react';\nimport { createBrowserRouter, Outlet, RouteObject, RouterProvider } from 'react-router-dom';\nimport { decafTheme } from 'theme';\nimport { DecafMenuItem, DecafRoute, DecafWebappProps } from 'types';\n\nfunction buildRoutes(menuItems: DecafMenuItem[], routes: DecafRoute[]): RouteObject[] {\n const result: RouteObject[] = [];\n\n routes.forEach((route) => {\n const item: RouteObject = { ...route };\n if (route.children) {\n item.element = route.element ?? <Outlet />;\n item.children = buildRoutes(menuItems, route.children);\n } else {\n item.element = (\n <DecafLayout menu={menuItems} appName=\"Decaf Webapp\">\n {route.element}\n </DecafLayout>\n );\n }\n result.push(item);\n });\n\n return result;\n}\n\nfunction DecafWebapp(props: DecafWebappProps) {\n const routes = buildRoutes(props.menuItems, props.routes);\n const router = createBrowserRouter(routes, {\n basename: props.config?.basePath,\n });\n const theme = props.theme ?? decafTheme;\n\n return (\n <ConfigProvider theme={theme}>\n <Global\n styles={{\n body: {\n background: theme.token?.colorBgBase,\n fontFamily: theme.token?.fontFamily,\n },\n button: {\n // antd button has a default box shadow and we can't override it for now\n boxShadow: 'none !important',\n },\n }}\n />\n <DecafApp config={props.config} controller={props.controller}>\n <RouterProvider router={router} />\n </DecafApp>\n </ConfigProvider>\n );\n}\n\nexport { DecafWebapp, Global as GlobalStyle, css, styled };\n"],"names":["routesToAntMenu","routes","result","forEach","route","key","to","label","icon","item","React","createElement","NavLink","end","href","children","push","DecafLayout","props","menuItems","menu","matchedMenuItems","useMatches","map","match","pathname","Layout","style","height","Header","paddingInline","display","justifyContent","alignItems","Link","Typography","Title","level","margin","appName","Menu","backgroundColor","border","mode","items","selectedKeys","Content","padding","decafTheme","hashed","components","colorBgHeader","Button","boxShadow","boxShadowSecondary","token","fontFamily","colorPrimary","colorBgBase","colorBgLayout","borderRadius","colorError","colorSuccess","colorWarning","colorInfo","green","red","blue","yellow","colorWhite","algorithm","theme","darkAlgorithm","buildRoutes","_route$element","_extends","element","Outlet","_props$config","_props$theme","_theme$token","_theme$token2","router","createBrowserRouter","basename","config","basePath","ConfigProvider","Global","styles","body","background","button","DecafApp","controller","RouterProvider"],"mappings":"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"}
|
package/dist/index.modern.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{DecafApp as
|
|
1
|
+
import{DecafApp as e}from"@decafhub/decaf-react";import{Global as t}from"@emotion/react";export{Global as GlobalStyle,css}from"@emotion/react";export{default as styled}from"@emotion/styled";import{Layout as o,Typography as n,Menu as r,theme as l,ConfigProvider as a}from"antd";import c from"react";import{useMatches as i,Link as m,NavLink as s,createBrowserRouter as d,RouterProvider as f,Outlet as u}from"react-router-dom";function p(){return p=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var n in o)Object.prototype.hasOwnProperty.call(o,n)&&(e[n]=o[n])}return e},p.apply(this,arguments)}function b(e){const t=[];return e.forEach(e=>{const o={key:"to"in e?e.to:e.label,label:e.label,icon:e.icon};"to"in e?o.label=c.createElement(s,{to:e.to,end:"/"===e.to},e.label):e.href?o.label=c.createElement("a",{href:e.href},e.label):e.children&&(o.label=e.label,o.children=b(e.children||[])),t.push(o)}),t}function h(e){const t=b(e.menu),l=i().map(e=>e.pathname);return c.createElement(o,{style:{height:"100%"}},c.createElement(o.Header,{style:{paddingInline:0}},c.createElement("div",{style:{paddingInline:20,display:"flex",justifyContent:"space-between",alignItems:"center"}},c.createElement(m,{to:"/"},c.createElement(n.Title,{level:4,style:{margin:0}},e.appName)),c.createElement(r,{style:{justifyContent:"flex-end",backgroundColor:"transparent",border:"none"},mode:"horizontal",items:t,selectedKeys:l}))),c.createElement(o.Content,{style:{padding:"20px 50px"}},e.children))}const y={hashed:!0,components:{Layout:{colorBgHeader:"#10161d"},Button:{boxShadow:"none",boxShadowSecondary:"none"}},token:{fontFamily:'"Inter",system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"',colorPrimary:"#344961",colorBgBase:"#1a242f",colorBgLayout:"#1a242f",borderRadius:0,colorError:"#b03a38",colorSuccess:"#48734d",colorWarning:"#ffc107",colorInfo:"#4694ab",green:"#48734d",red:"#b03a38",blue:"#0d6efd",yellow:"#ffc107",colorWhite:"#fff"},algorithm:[l.darkAlgorithm]};function g(e,t){const o=[];return t.forEach(t=>{const n=p({},t);var r;t.children?(n.element=null!=(r=t.element)?r:c.createElement(u,null),n.children=g(e,t.children)):n.element=c.createElement(h,{menu:e,appName:"Decaf Webapp"},t.element),o.push(n)}),o}function E(o){var n,r,l,i;const m=g(o.menuItems,o.routes),s=d(m,{basename:null==(n=o.config)?void 0:n.basePath}),u=null!=(r=o.theme)?r:y;return c.createElement(a,{theme:u},c.createElement(t,{styles:{body:{background:null==(l=u.token)?void 0:l.colorBgBase,fontFamily:null==(i=u.token)?void 0:i.fontFamily},button:{boxShadow:"none !important"}}}),c.createElement(e,{config:o.config,controller:o.controller},c.createElement(f,{router:s})))}export{E as DecafWebapp};
|
|
2
2
|
//# sourceMappingURL=index.modern.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.modern.mjs","sources":["../src/theme.ts","../src/index.tsx"],"sourcesContent":["import { theme } from 'antd';\nimport { ThemeConfig } from 'antd/es/config-provider/context';\n\nexport const decafTheme: ThemeConfig = {\n hashed: true,\n token: {\n colorPrimary: '#344961',\n colorBgBase: '#
|
|
1
|
+
{"version":3,"file":"index.modern.mjs","sources":["../src/Layout.tsx","../src/theme.ts","../src/index.tsx"],"sourcesContent":["import { Layout, Menu, Typography } from 'antd';\nimport { ItemType, SubMenuType } from 'antd/es/menu/hooks/useItems';\nimport React from 'react';\nimport { Link, NavLink, useMatches } from 'react-router-dom';\nimport { DecafLayoutProps } from 'types';\nimport { DecafMenuItem } from './types';\n\nexport function routesToAntMenu(routes: DecafMenuItem[]): ItemType[] {\n const result: ItemType[] = [];\n\n routes.forEach((route) => {\n const item: ItemType = {\n key: 'to' in route ? route.to : route.label,\n label: route.label,\n icon: route.icon,\n };\n if ('to' in route) {\n item.label = (\n <NavLink to={route.to} end={route.to === '/'}>\n {route.label}\n </NavLink>\n );\n } else if (route.href) {\n item.label = <a href={route.href}>{route.label}</a>;\n } else if (route.children) {\n item.label = route.label;\n (item as SubMenuType).children = routesToAntMenu(route.children || []);\n }\n result.push(item);\n });\n\n return result;\n}\n\nexport default function DecafLayout(props: DecafLayoutProps) {\n const menuItems = routesToAntMenu(props.menu);\n const matches = useMatches();\n const matchedMenuItems = matches.map((match) => match.pathname);\n\n return (\n <Layout style={{ height: '100%' }}>\n <Layout.Header style={{ paddingInline: 0 }}>\n <div style={{ paddingInline: 20, display: 'flex', justifyContent: 'space-between', alignItems: 'center' }}>\n <Link to=\"/\">\n <Typography.Title level={4} style={{ margin: 0 }}>\n {props.appName}\n </Typography.Title>\n </Link>\n <Menu\n style={{ justifyContent: 'flex-end', backgroundColor: 'transparent', border: 'none' }}\n mode=\"horizontal\"\n items={menuItems}\n selectedKeys={matchedMenuItems}\n />\n </div>\n </Layout.Header>\n <Layout.Content style={{ padding: '20px 50px' }}>{props.children}</Layout.Content>\n {/* <Layout.Footer style={{ textAlign: 'center' }}>Footer</Layout.Footer> */}\n </Layout>\n );\n}\n","import { theme } from 'antd';\nimport { ThemeConfig } from 'antd/es/config-provider/context';\n\nexport const decafTheme: ThemeConfig = {\n hashed: true,\n components: {\n Layout: {\n colorBgHeader: '#10161d',\n },\n Button: {\n boxShadow: 'none',\n boxShadowSecondary: 'none',\n },\n },\n token: {\n fontFamily:\n '\"Inter\",system-ui,-apple-system,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial,\"Noto Sans\",\"Liberation Sans\",sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\"',\n colorPrimary: '#344961',\n colorBgBase: '#1a242f',\n colorBgLayout: '#1a242f',\n borderRadius: 0,\n colorError: '#b03a38',\n colorSuccess: '#48734d',\n colorWarning: '#ffc107',\n colorInfo: '#4694ab',\n green: '#48734d',\n red: '#b03a38',\n blue: '#0d6efd',\n yellow: '#ffc107',\n colorWhite: '#fff',\n },\n\n algorithm: [theme.darkAlgorithm],\n};\n","import { DecafApp } from '@decafhub/decaf-react';\nimport { css, Global } from '@emotion/react';\nimport styled from '@emotion/styled';\nimport { ConfigProvider } from 'antd';\nimport DecafLayout from 'Layout';\nimport React from 'react';\nimport { createBrowserRouter, Outlet, RouteObject, RouterProvider } from 'react-router-dom';\nimport { decafTheme } from 'theme';\nimport { DecafMenuItem, DecafRoute, DecafWebappProps } from 'types';\n\nfunction buildRoutes(menuItems: DecafMenuItem[], routes: DecafRoute[]): RouteObject[] {\n const result: RouteObject[] = [];\n\n routes.forEach((route) => {\n const item: RouteObject = { ...route };\n if (route.children) {\n item.element = route.element ?? <Outlet />;\n item.children = buildRoutes(menuItems, route.children);\n } else {\n item.element = (\n <DecafLayout menu={menuItems} appName=\"Decaf Webapp\">\n {route.element}\n </DecafLayout>\n );\n }\n result.push(item);\n });\n\n return result;\n}\n\nfunction DecafWebapp(props: DecafWebappProps) {\n const routes = buildRoutes(props.menuItems, props.routes);\n const router = createBrowserRouter(routes, {\n basename: props.config?.basePath,\n });\n const theme = props.theme ?? decafTheme;\n\n return (\n <ConfigProvider theme={theme}>\n <Global\n styles={{\n body: {\n background: theme.token?.colorBgBase,\n fontFamily: theme.token?.fontFamily,\n },\n button: {\n // antd button has a default box shadow and we can't override it for now\n boxShadow: 'none !important',\n },\n }}\n />\n <DecafApp config={props.config} controller={props.controller}>\n <RouterProvider router={router} />\n </DecafApp>\n </ConfigProvider>\n );\n}\n\nexport { DecafWebapp, Global as GlobalStyle, css, styled };\n"],"names":["routesToAntMenu","routes","result","forEach","route","item","key","to","label","icon","React","createElement","NavLink","end","href","children","push","props","menu","matchedMenuItems","useMatches","map","match","pathname","Layout","style","height","Header","paddingInline","display","justifyContent","alignItems","Link","Typography","Title","level","margin","appName","Menu","backgroundColor","border","mode","items","menuItems","selectedKeys","Content","padding","decafTheme","hashed","components","colorBgHeader","Button","boxShadow","boxShadowSecondary","token","fontFamily","colorPrimary","colorBgBase","colorBgLayout","borderRadius","colorError","colorSuccess","colorWarning","colorInfo","green","red","blue","yellow","colorWhite","algorithm","theme","darkAlgorithm","buildRoutes","element","_route$element","Outlet","DecafLayout","DecafWebapp","_props$config","_props$theme","_theme$token","_theme$token2","router","createBrowserRouter","basename","config","basePath","ConfigProvider","Global","styles","body","background","button","DecafApp","controller","RouterProvider"],"mappings":"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"}
|
package/dist/index.module.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{DecafApp as
|
|
1
|
+
import{DecafApp as e}from"@decafhub/decaf-react";import{Global as t}from"@emotion/react";export{Global as GlobalStyle,css}from"@emotion/react";export{default as styled}from"@emotion/styled";import{Layout as o,Typography as n,Menu as r,theme as l,ConfigProvider as a}from"antd";import c from"react";import{useMatches as i,Link as m,NavLink as s,createBrowserRouter as d,RouterProvider as f,Outlet as u}from"react-router-dom";function p(){return p=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var n in o)Object.prototype.hasOwnProperty.call(o,n)&&(e[n]=o[n])}return e},p.apply(this,arguments)}function b(e){var t=[];return e.forEach(function(e){var o={key:"to"in e?e.to:e.label,label:e.label,icon:e.icon};"to"in e?o.label=c.createElement(s,{to:e.to,end:"/"===e.to},e.label):e.href?o.label=c.createElement("a",{href:e.href},e.label):e.children&&(o.label=e.label,o.children=b(e.children||[])),t.push(o)}),t}function h(e){var t=b(e.menu),l=i().map(function(e){return e.pathname});return c.createElement(o,{style:{height:"100%"}},c.createElement(o.Header,{style:{paddingInline:0}},c.createElement("div",{style:{paddingInline:20,display:"flex",justifyContent:"space-between",alignItems:"center"}},c.createElement(m,{to:"/"},c.createElement(n.Title,{level:4,style:{margin:0}},e.appName)),c.createElement(r,{style:{justifyContent:"flex-end",backgroundColor:"transparent",border:"none"},mode:"horizontal",items:t,selectedKeys:l}))),c.createElement(o.Content,{style:{padding:"20px 50px"}},e.children))}var y={hashed:!0,components:{Layout:{colorBgHeader:"#10161d"},Button:{boxShadow:"none",boxShadowSecondary:"none"}},token:{fontFamily:'"Inter",system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"',colorPrimary:"#344961",colorBgBase:"#1a242f",colorBgLayout:"#1a242f",borderRadius:0,colorError:"#b03a38",colorSuccess:"#48734d",colorWarning:"#ffc107",colorInfo:"#4694ab",green:"#48734d",red:"#b03a38",blue:"#0d6efd",yellow:"#ffc107",colorWhite:"#fff"},algorithm:[l.darkAlgorithm]};function g(e,t){var o=[];return t.forEach(function(t){var n,r=p({},t);t.children?(r.element=null!=(n=t.element)?n:c.createElement(u,null),r.children=g(e,t.children)):r.element=c.createElement(h,{menu:e,appName:"Decaf Webapp"},t.element),o.push(r)}),o}function E(o){var n,r,l,i,m=g(o.menuItems,o.routes),s=d(m,{basename:null==(n=o.config)?void 0:n.basePath}),u=null!=(r=o.theme)?r:y;return c.createElement(a,{theme:u},c.createElement(t,{styles:{body:{background:null==(l=u.token)?void 0:l.colorBgBase,fontFamily:null==(i=u.token)?void 0:i.fontFamily},button:{boxShadow:"none !important"}}}),c.createElement(e,{config:o.config,controller:o.controller},c.createElement(f,{router:s})))}export{E as DecafWebapp};
|
|
2
2
|
//# sourceMappingURL=index.module.js.map
|
package/dist/index.module.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.module.js","sources":["../src/theme.ts","../src/index.tsx"],"sourcesContent":["import { theme } from 'antd';\nimport { ThemeConfig } from 'antd/es/config-provider/context';\n\nexport const decafTheme: ThemeConfig = {\n hashed: true,\n token: {\n colorPrimary: '#344961',\n colorBgBase: '#
|
|
1
|
+
{"version":3,"file":"index.module.js","sources":["../src/Layout.tsx","../src/theme.ts","../src/index.tsx"],"sourcesContent":["import { Layout, Menu, Typography } from 'antd';\nimport { ItemType, SubMenuType } from 'antd/es/menu/hooks/useItems';\nimport React from 'react';\nimport { Link, NavLink, useMatches } from 'react-router-dom';\nimport { DecafLayoutProps } from 'types';\nimport { DecafMenuItem } from './types';\n\nexport function routesToAntMenu(routes: DecafMenuItem[]): ItemType[] {\n const result: ItemType[] = [];\n\n routes.forEach((route) => {\n const item: ItemType = {\n key: 'to' in route ? route.to : route.label,\n label: route.label,\n icon: route.icon,\n };\n if ('to' in route) {\n item.label = (\n <NavLink to={route.to} end={route.to === '/'}>\n {route.label}\n </NavLink>\n );\n } else if (route.href) {\n item.label = <a href={route.href}>{route.label}</a>;\n } else if (route.children) {\n item.label = route.label;\n (item as SubMenuType).children = routesToAntMenu(route.children || []);\n }\n result.push(item);\n });\n\n return result;\n}\n\nexport default function DecafLayout(props: DecafLayoutProps) {\n const menuItems = routesToAntMenu(props.menu);\n const matches = useMatches();\n const matchedMenuItems = matches.map((match) => match.pathname);\n\n return (\n <Layout style={{ height: '100%' }}>\n <Layout.Header style={{ paddingInline: 0 }}>\n <div style={{ paddingInline: 20, display: 'flex', justifyContent: 'space-between', alignItems: 'center' }}>\n <Link to=\"/\">\n <Typography.Title level={4} style={{ margin: 0 }}>\n {props.appName}\n </Typography.Title>\n </Link>\n <Menu\n style={{ justifyContent: 'flex-end', backgroundColor: 'transparent', border: 'none' }}\n mode=\"horizontal\"\n items={menuItems}\n selectedKeys={matchedMenuItems}\n />\n </div>\n </Layout.Header>\n <Layout.Content style={{ padding: '20px 50px' }}>{props.children}</Layout.Content>\n {/* <Layout.Footer style={{ textAlign: 'center' }}>Footer</Layout.Footer> */}\n </Layout>\n );\n}\n","import { theme } from 'antd';\nimport { ThemeConfig } from 'antd/es/config-provider/context';\n\nexport const decafTheme: ThemeConfig = {\n hashed: true,\n components: {\n Layout: {\n colorBgHeader: '#10161d',\n },\n Button: {\n boxShadow: 'none',\n boxShadowSecondary: 'none',\n },\n },\n token: {\n fontFamily:\n '\"Inter\",system-ui,-apple-system,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial,\"Noto Sans\",\"Liberation Sans\",sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\"',\n colorPrimary: '#344961',\n colorBgBase: '#1a242f',\n colorBgLayout: '#1a242f',\n borderRadius: 0,\n colorError: '#b03a38',\n colorSuccess: '#48734d',\n colorWarning: '#ffc107',\n colorInfo: '#4694ab',\n green: '#48734d',\n red: '#b03a38',\n blue: '#0d6efd',\n yellow: '#ffc107',\n colorWhite: '#fff',\n },\n\n algorithm: [theme.darkAlgorithm],\n};\n","import { DecafApp } from '@decafhub/decaf-react';\nimport { css, Global } from '@emotion/react';\nimport styled from '@emotion/styled';\nimport { ConfigProvider } from 'antd';\nimport DecafLayout from 'Layout';\nimport React from 'react';\nimport { createBrowserRouter, Outlet, RouteObject, RouterProvider } from 'react-router-dom';\nimport { decafTheme } from 'theme';\nimport { DecafMenuItem, DecafRoute, DecafWebappProps } from 'types';\n\nfunction buildRoutes(menuItems: DecafMenuItem[], routes: DecafRoute[]): RouteObject[] {\n const result: RouteObject[] = [];\n\n routes.forEach((route) => {\n const item: RouteObject = { ...route };\n if (route.children) {\n item.element = route.element ?? <Outlet />;\n item.children = buildRoutes(menuItems, route.children);\n } else {\n item.element = (\n <DecafLayout menu={menuItems} appName=\"Decaf Webapp\">\n {route.element}\n </DecafLayout>\n );\n }\n result.push(item);\n });\n\n return result;\n}\n\nfunction DecafWebapp(props: DecafWebappProps) {\n const routes = buildRoutes(props.menuItems, props.routes);\n const router = createBrowserRouter(routes, {\n basename: props.config?.basePath,\n });\n const theme = props.theme ?? decafTheme;\n\n return (\n <ConfigProvider theme={theme}>\n <Global\n styles={{\n body: {\n background: theme.token?.colorBgBase,\n fontFamily: theme.token?.fontFamily,\n },\n button: {\n // antd button has a default box shadow and we can't override it for now\n boxShadow: 'none !important',\n },\n }}\n />\n <DecafApp config={props.config} controller={props.controller}>\n <RouterProvider router={router} />\n </DecafApp>\n </ConfigProvider>\n );\n}\n\nexport { DecafWebapp, Global as GlobalStyle, css, styled };\n"],"names":["routesToAntMenu","routes","result","forEach","route","key","to","label","icon","item","React","createElement","NavLink","end","href","children","push","DecafLayout","props","menuItems","menu","matchedMenuItems","useMatches","map","match","pathname","Layout","style","height","Header","paddingInline","display","justifyContent","alignItems","Link","Typography","Title","level","margin","appName","Menu","backgroundColor","border","mode","items","selectedKeys","Content","padding","decafTheme","hashed","components","colorBgHeader","Button","boxShadow","boxShadowSecondary","token","fontFamily","colorPrimary","colorBgBase","colorBgLayout","borderRadius","colorError","colorSuccess","colorWarning","colorInfo","green","red","blue","yellow","colorWhite","algorithm","theme","darkAlgorithm","buildRoutes","_route$element","_extends","element","Outlet","DecafWebapp","_props$config","_props$theme","_theme$token","_theme$token2","router","createBrowserRouter","basename","config","basePath","ConfigProvider","Global","styles","body","background","button","DecafApp","controller","RouterProvider"],"mappings":"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"}
|
package/dist/index.umd.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
!function(e,
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@decafhub/decaf-react"),require("@emotion/react"),require("@emotion/styled"),require("antd"),require("react"),require("react-router-dom")):"function"==typeof define&&define.amd?define(["exports","@decafhub/decaf-react","@emotion/react","@emotion/styled","antd","react","react-router-dom"],t):t((e||self).decafReactWebapp={},e.decafReact,e.react,e.styled,e.antd,e.react,e.reactRouterDom)}(this,function(e,t,n,o,r,a,l){function c(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var i=/*#__PURE__*/c(o),u=/*#__PURE__*/c(a);function d(){return d=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},d.apply(this,arguments)}function f(e){var t=[];return e.forEach(function(e){var n={key:"to"in e?e.to:e.label,label:e.label,icon:e.icon};"to"in e?n.label=u.default.createElement(l.NavLink,{to:e.to,end:"/"===e.to},e.label):e.href?n.label=u.default.createElement("a",{href:e.href},e.label):e.children&&(n.label=e.label,n.children=f(e.children||[])),t.push(n)}),t}function s(e){var t=f(e.menu),n=l.useMatches().map(function(e){return e.pathname});return u.default.createElement(r.Layout,{style:{height:"100%"}},u.default.createElement(r.Layout.Header,{style:{paddingInline:0}},u.default.createElement("div",{style:{paddingInline:20,display:"flex",justifyContent:"space-between",alignItems:"center"}},u.default.createElement(l.Link,{to:"/"},u.default.createElement(r.Typography.Title,{level:4,style:{margin:0}},e.appName)),u.default.createElement(r.Menu,{style:{justifyContent:"flex-end",backgroundColor:"transparent",border:"none"},mode:"horizontal",items:t,selectedKeys:n}))),u.default.createElement(r.Layout.Content,{style:{padding:"20px 50px"}},e.children))}var m={hashed:!0,components:{Layout:{colorBgHeader:"#10161d"},Button:{boxShadow:"none",boxShadowSecondary:"none"}},token:{fontFamily:'"Inter",system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"',colorPrimary:"#344961",colorBgBase:"#1a242f",colorBgLayout:"#1a242f",borderRadius:0,colorError:"#b03a38",colorSuccess:"#48734d",colorWarning:"#ffc107",colorInfo:"#4694ab",green:"#48734d",red:"#b03a38",blue:"#0d6efd",yellow:"#ffc107",colorWhite:"#fff"},algorithm:[r.theme.darkAlgorithm]};function b(e,t){var n=[];return t.forEach(function(t){var o,r=d({},t);t.children?(r.element=null!=(o=t.element)?o:u.default.createElement(l.Outlet,null),r.children=b(e,t.children)):r.element=u.default.createElement(s,{menu:e,appName:"Decaf Webapp"},t.element),n.push(r)}),n}Object.defineProperty(e,"GlobalStyle",{enumerable:!0,get:function(){return n.Global}}),Object.defineProperty(e,"css",{enumerable:!0,get:function(){return n.css}}),Object.defineProperty(e,"styled",{enumerable:!0,get:function(){return i.default}}),e.DecafWebapp=function(e){var o,a,c,i,d=b(e.menuItems,e.routes),f=l.createBrowserRouter(d,{basename:null==(o=e.config)?void 0:o.basePath}),s=null!=(a=e.theme)?a:m;return u.default.createElement(r.ConfigProvider,{theme:s},u.default.createElement(n.Global,{styles:{body:{background:null==(c=s.token)?void 0:c.colorBgBase,fontFamily:null==(i=s.token)?void 0:i.fontFamily},button:{boxShadow:"none !important"}}}),u.default.createElement(t.DecafApp,{config:e.config,controller:e.controller},u.default.createElement(l.RouterProvider,{router:f})))}});
|
|
2
2
|
//# sourceMappingURL=index.umd.js.map
|
package/dist/index.umd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.umd.js","sources":["../src/theme.ts","../src/index.tsx"],"sourcesContent":["import { theme } from 'antd';\nimport { ThemeConfig } from 'antd/es/config-provider/context';\n\nexport const decafTheme: ThemeConfig = {\n hashed: true,\n token: {\n colorPrimary: '#344961',\n colorBgBase: '#
|
|
1
|
+
{"version":3,"file":"index.umd.js","sources":["../src/Layout.tsx","../src/theme.ts","../src/index.tsx"],"sourcesContent":["import { Layout, Menu, Typography } from 'antd';\nimport { ItemType, SubMenuType } from 'antd/es/menu/hooks/useItems';\nimport React from 'react';\nimport { Link, NavLink, useMatches } from 'react-router-dom';\nimport { DecafLayoutProps } from 'types';\nimport { DecafMenuItem } from './types';\n\nexport function routesToAntMenu(routes: DecafMenuItem[]): ItemType[] {\n const result: ItemType[] = [];\n\n routes.forEach((route) => {\n const item: ItemType = {\n key: 'to' in route ? route.to : route.label,\n label: route.label,\n icon: route.icon,\n };\n if ('to' in route) {\n item.label = (\n <NavLink to={route.to} end={route.to === '/'}>\n {route.label}\n </NavLink>\n );\n } else if (route.href) {\n item.label = <a href={route.href}>{route.label}</a>;\n } else if (route.children) {\n item.label = route.label;\n (item as SubMenuType).children = routesToAntMenu(route.children || []);\n }\n result.push(item);\n });\n\n return result;\n}\n\nexport default function DecafLayout(props: DecafLayoutProps) {\n const menuItems = routesToAntMenu(props.menu);\n const matches = useMatches();\n const matchedMenuItems = matches.map((match) => match.pathname);\n\n return (\n <Layout style={{ height: '100%' }}>\n <Layout.Header style={{ paddingInline: 0 }}>\n <div style={{ paddingInline: 20, display: 'flex', justifyContent: 'space-between', alignItems: 'center' }}>\n <Link to=\"/\">\n <Typography.Title level={4} style={{ margin: 0 }}>\n {props.appName}\n </Typography.Title>\n </Link>\n <Menu\n style={{ justifyContent: 'flex-end', backgroundColor: 'transparent', border: 'none' }}\n mode=\"horizontal\"\n items={menuItems}\n selectedKeys={matchedMenuItems}\n />\n </div>\n </Layout.Header>\n <Layout.Content style={{ padding: '20px 50px' }}>{props.children}</Layout.Content>\n {/* <Layout.Footer style={{ textAlign: 'center' }}>Footer</Layout.Footer> */}\n </Layout>\n );\n}\n","import { theme } from 'antd';\nimport { ThemeConfig } from 'antd/es/config-provider/context';\n\nexport const decafTheme: ThemeConfig = {\n hashed: true,\n components: {\n Layout: {\n colorBgHeader: '#10161d',\n },\n Button: {\n boxShadow: 'none',\n boxShadowSecondary: 'none',\n },\n },\n token: {\n fontFamily:\n '\"Inter\",system-ui,-apple-system,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial,\"Noto Sans\",\"Liberation Sans\",sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\"',\n colorPrimary: '#344961',\n colorBgBase: '#1a242f',\n colorBgLayout: '#1a242f',\n borderRadius: 0,\n colorError: '#b03a38',\n colorSuccess: '#48734d',\n colorWarning: '#ffc107',\n colorInfo: '#4694ab',\n green: '#48734d',\n red: '#b03a38',\n blue: '#0d6efd',\n yellow: '#ffc107',\n colorWhite: '#fff',\n },\n\n algorithm: [theme.darkAlgorithm],\n};\n","import { DecafApp } from '@decafhub/decaf-react';\nimport { css, Global } from '@emotion/react';\nimport styled from '@emotion/styled';\nimport { ConfigProvider } from 'antd';\nimport DecafLayout from 'Layout';\nimport React from 'react';\nimport { createBrowserRouter, Outlet, RouteObject, RouterProvider } from 'react-router-dom';\nimport { decafTheme } from 'theme';\nimport { DecafMenuItem, DecafRoute, DecafWebappProps } from 'types';\n\nfunction buildRoutes(menuItems: DecafMenuItem[], routes: DecafRoute[]): RouteObject[] {\n const result: RouteObject[] = [];\n\n routes.forEach((route) => {\n const item: RouteObject = { ...route };\n if (route.children) {\n item.element = route.element ?? <Outlet />;\n item.children = buildRoutes(menuItems, route.children);\n } else {\n item.element = (\n <DecafLayout menu={menuItems} appName=\"Decaf Webapp\">\n {route.element}\n </DecafLayout>\n );\n }\n result.push(item);\n });\n\n return result;\n}\n\nfunction DecafWebapp(props: DecafWebappProps) {\n const routes = buildRoutes(props.menuItems, props.routes);\n const router = createBrowserRouter(routes, {\n basename: props.config?.basePath,\n });\n const theme = props.theme ?? decafTheme;\n\n return (\n <ConfigProvider theme={theme}>\n <Global\n styles={{\n body: {\n background: theme.token?.colorBgBase,\n fontFamily: theme.token?.fontFamily,\n },\n button: {\n // antd button has a default box shadow and we can't override it for now\n boxShadow: 'none !important',\n },\n }}\n />\n <DecafApp config={props.config} controller={props.controller}>\n <RouterProvider router={router} />\n </DecafApp>\n </ConfigProvider>\n );\n}\n\nexport { DecafWebapp, Global as GlobalStyle, css, styled };\n"],"names":["routesToAntMenu","routes","result","forEach","route","key","to","label","icon","item","React","createElement","NavLink","end","href","children","push","DecafLayout","props","menuItems","menu","matchedMenuItems","useMatches","map","match","pathname","Layout","style","height","Header","paddingInline","display","justifyContent","alignItems","Link","Typography","Title","level","margin","appName","Menu","backgroundColor","border","mode","items","selectedKeys","Content","padding","decafTheme","hashed","components","colorBgHeader","Button","boxShadow","boxShadowSecondary","token","fontFamily","colorPrimary","colorBgBase","colorBgLayout","borderRadius","colorError","colorSuccess","colorWarning","colorInfo","green","red","blue","yellow","colorWhite","algorithm","theme","darkAlgorithm","buildRoutes","_route$element","_extends","element","Outlet","_props$config","_props$theme","_theme$token","_theme$token2","router","createBrowserRouter","basename","config","basePath","ConfigProvider","Global","styles","body","background","button","DecafApp","controller","RouterProvider"],"mappings":"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"}
|
package/dist/theme.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../src/theme.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAE9D,eAAO,MAAM,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../src/theme.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAE9D,eAAO,MAAM,UAAU,EAAE,WA8BxB,CAAC"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { DecafAppConfig, DecafAppController } from '@decafhub/decaf-react';
|
|
3
|
+
import { ThemeConfig } from 'antd/es/config-provider/context';
|
|
4
|
+
import { RouteObject } from 'react-router-dom';
|
|
5
|
+
export type DecafRoute = RouteObject;
|
|
6
|
+
export interface DecafWebappProps {
|
|
7
|
+
config?: DecafAppConfig;
|
|
8
|
+
controller?: DecafAppController;
|
|
9
|
+
theme?: ThemeConfig;
|
|
10
|
+
routes: DecafRoute[];
|
|
11
|
+
menuItems: DecafMenuItem[];
|
|
12
|
+
appName: string;
|
|
13
|
+
}
|
|
14
|
+
interface BaseDecafMenuItem {
|
|
15
|
+
label: any;
|
|
16
|
+
key: string;
|
|
17
|
+
icon?: React.ReactNode;
|
|
18
|
+
children?: DecafMenuItem[];
|
|
19
|
+
}
|
|
20
|
+
export type DecafMenuItem = BaseDecafMenuItem & ({
|
|
21
|
+
to: string;
|
|
22
|
+
} | {
|
|
23
|
+
href: string;
|
|
24
|
+
});
|
|
25
|
+
export interface DecafLayoutProps {
|
|
26
|
+
menu: DecafMenuItem[];
|
|
27
|
+
appName: string;
|
|
28
|
+
children: React.ReactNode;
|
|
29
|
+
}
|
|
30
|
+
export {};
|
|
31
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,MAAM,MAAM,UAAU,GAAG,WAAW,CAAC;AAErC,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,UAAU,CAAC,EAAE,kBAAkB,CAAC;IAChC,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,SAAS,EAAE,aAAa,EAAE,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,iBAAiB;IACzB,KAAK,EAAE,GAAG,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAC;CAC5B;AAED,MAAM,MAAM,aAAa,GAAG,iBAAiB,GAAG,CAAC;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAEpF,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,aAAa,EAAE,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@decafhub/decaf-react-webapp",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.2",
|
|
4
4
|
"keywords": [
|
|
5
5
|
"decafhub",
|
|
6
6
|
"react"
|
|
@@ -33,14 +33,20 @@
|
|
|
33
33
|
"node": ">=16"
|
|
34
34
|
},
|
|
35
35
|
"peerDependencies": {
|
|
36
|
+
"@ant-design/icons": "^4.8.0",
|
|
36
37
|
"@decafhub/decaf-client": "^0.3",
|
|
37
38
|
"@decafhub/decaf-react": "^0.1",
|
|
38
39
|
"antd": "^5.0.0",
|
|
39
40
|
"react": "^17.0.0 || ^18.0.0",
|
|
40
|
-
"react-dom": "^17.0.0 || ^18.0.0"
|
|
41
|
+
"react-dom": "^17.0.0 || ^18.0.0",
|
|
42
|
+
"react-router-dom": "^6.0.0"
|
|
43
|
+
},
|
|
44
|
+
"dependencies": {
|
|
45
|
+
"@emotion/react": "^11.10.5",
|
|
46
|
+
"@emotion/styled": "^11.10.5"
|
|
41
47
|
},
|
|
42
|
-
"dependencies": {},
|
|
43
48
|
"devDependencies": {
|
|
49
|
+
"@ant-design/icons": "^4.8.0",
|
|
44
50
|
"@commitlint/cli": "^17.3.0",
|
|
45
51
|
"@commitlint/config-conventional": "^17.3.0",
|
|
46
52
|
"@decafhub/decaf-client": "^0.3.1",
|
|
@@ -77,6 +83,7 @@
|
|
|
77
83
|
"prettier": "^2.8.0",
|
|
78
84
|
"react": "^18.2.0",
|
|
79
85
|
"react-dom": "^18.2.0",
|
|
86
|
+
"react-router-dom": "^6.4.3",
|
|
80
87
|
"ts-jest": "^29.0.3",
|
|
81
88
|
"typedoc": "^0.23.21",
|
|
82
89
|
"typescript": "^4.9.3"
|