even-toolkit 1.5.1 → 1.5.3
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/README.md +4 -0
- package/bin/create.js +11 -0
- package/dist/web/components/drawer-shell.d.ts +2 -1
- package/dist/web/components/drawer-shell.d.ts.map +1 -1
- package/dist/web/components/drawer-shell.js +3 -2
- package/dist/web/components/drawer-shell.js.map +1 -1
- package/dist/web/components/nav-header.d.ts +1 -1
- package/dist/web/components/nav-header.d.ts.map +1 -1
- package/package.json +5 -1
- package/web/components/drawer-shell.tsx +9 -1
- package/web/components/nav-header.tsx +1 -1
package/README.md
CHANGED
|
@@ -16,8 +16,12 @@ Scaffold a new app instantly:
|
|
|
16
16
|
|
|
17
17
|
```bash
|
|
18
18
|
npx @even-toolkit/create-even-app my-app
|
|
19
|
+
# or
|
|
20
|
+
npx even-toolkit my-app
|
|
19
21
|
```
|
|
20
22
|
|
|
23
|
+
Choose from 6 templates: minimal, dashboard, notes, chat, tracker, media.
|
|
24
|
+
|
|
21
25
|
## What's Inside
|
|
22
26
|
|
|
23
27
|
### `/web` — Web Component Library
|
package/bin/create.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import { execSync } from 'child_process';
|
|
4
|
+
|
|
5
|
+
// Delegate to @even-toolkit/create-even-app
|
|
6
|
+
const args = process.argv.slice(2).join(' ');
|
|
7
|
+
try {
|
|
8
|
+
execSync(`npx @even-toolkit/create-even-app ${args}`, { stdio: 'inherit' });
|
|
9
|
+
} catch {
|
|
10
|
+
process.exit(1);
|
|
11
|
+
}
|
|
@@ -8,12 +8,13 @@ interface DrawerShellProps {
|
|
|
8
8
|
width?: number;
|
|
9
9
|
getPageTitle: (pathname: string) => string;
|
|
10
10
|
deriveActiveId: (pathname: string) => string;
|
|
11
|
+
pageTitlePrefix?: ReactNode;
|
|
11
12
|
isNestedRoute?: (pathname: string) => boolean;
|
|
12
13
|
getBackPath?: (pathname: string) => string;
|
|
13
14
|
backIcon?: ReactNode;
|
|
14
15
|
className?: string;
|
|
15
16
|
}
|
|
16
|
-
declare function DrawerShell({ items, bottomItems, title, footer, width, getPageTitle, deriveActiveId, isNestedRoute, getBackPath, backIcon, className, }: DrawerShellProps): import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
declare function DrawerShell({ items, bottomItems, title, footer, width, getPageTitle, deriveActiveId, pageTitlePrefix, isNestedRoute, getBackPath, backIcon, className, }: DrawerShellProps): import("react/jsx-runtime").JSX.Element;
|
|
17
18
|
export { DrawerShell };
|
|
18
19
|
export type { DrawerShellProps };
|
|
19
20
|
//# sourceMappingURL=drawer-shell.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drawer-shell.d.ts","sourceRoot":"","sources":["../../../web/components/drawer-shell.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAkC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvE,OAAO,KAAK,EAAE,cAAc,EAAsB,MAAM,eAAe,CAAC;AAIxE,UAAU,gBAAgB;IACxB,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,WAAW,CAAC,EAAE,cAAc,EAAE,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;IAC3C,cAAc,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;IAC7C,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;IAC9C,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;IAC3C,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAQD,iBAAS,WAAW,CAAC,EACnB,KAAK,EACL,WAAW,EACX,KAAK,EACL,MAAM,EACN,KAAK,EACL,YAAY,EACZ,cAAc,EACd,aAAa,EACb,WAAW,EACX,QAA4B,EAC5B,SAAS,GACV,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"drawer-shell.d.ts","sourceRoot":"","sources":["../../../web/components/drawer-shell.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAkC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvE,OAAO,KAAK,EAAE,cAAc,EAAsB,MAAM,eAAe,CAAC;AAIxE,UAAU,gBAAgB;IACxB,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,WAAW,CAAC,EAAE,cAAc,EAAE,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;IAC3C,cAAc,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;IAC7C,eAAe,CAAC,EAAE,SAAS,CAAC;IAC5B,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;IAC9C,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;IAC3C,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAQD,iBAAS,WAAW,CAAC,EACnB,KAAK,EACL,WAAW,EACX,KAAK,EACL,MAAM,EACN,KAAK,EACL,YAAY,EACZ,cAAc,EACd,eAAe,EACf,aAAa,EACb,WAAW,EACX,QAA4B,EAC5B,SAAS,GACV,EAAE,gBAAgB,2CA4GlB;AAED,OAAO,EAAE,WAAW,EAAE,CAAC;AACvB,YAAY,EAAE,gBAAgB,EAAE,CAAC"}
|
|
@@ -5,7 +5,7 @@ import { SideDrawer, DrawerTrigger, DrawerHeaderContext } from './side-drawer';
|
|
|
5
5
|
import { NavHeader } from './nav-header';
|
|
6
6
|
import { Button } from './button';
|
|
7
7
|
const DEFAULT_BACK_ICON = (_jsx("svg", { width: "20", height: "20", viewBox: "0 0 20 20", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: _jsx("path", { d: "M12.5 15L7.5 10L12.5 5", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }) }));
|
|
8
|
-
function DrawerShell({ items, bottomItems, title, footer, width, getPageTitle, deriveActiveId, isNestedRoute, getBackPath, backIcon = DEFAULT_BACK_ICON, className, }) {
|
|
8
|
+
function DrawerShell({ items, bottomItems, title, footer, width, getPageTitle, deriveActiveId, pageTitlePrefix, isNestedRoute, getBackPath, backIcon = DEFAULT_BACK_ICON, className, }) {
|
|
9
9
|
const location = useLocation();
|
|
10
10
|
const navigate = useNavigate();
|
|
11
11
|
const [drawerOpen, setDrawerOpen] = useState(false);
|
|
@@ -27,7 +27,8 @@ function DrawerShell({ items, bottomItems, title, footer, width, getPageTitle, d
|
|
|
27
27
|
? isNestedRoute(pathname)
|
|
28
28
|
: !allItemIds.has(pathname);
|
|
29
29
|
// Resolve header values (screen overrides > defaults)
|
|
30
|
-
const
|
|
30
|
+
const headerTitleText = headerOverride?.title ?? getPageTitle(pathname);
|
|
31
|
+
const headerTitle = pageTitlePrefix ? (_jsxs("div", { className: "flex items-center justify-center gap-1.5 min-w-0", children: [_jsx("span", { className: "shrink-0", children: pageTitlePrefix }), _jsx("span", { className: "truncate", children: headerTitleText })] })) : headerTitleText;
|
|
31
32
|
const headerHidden = headerOverride?.hidden ?? false;
|
|
32
33
|
const handleBack = useCallback(() => {
|
|
33
34
|
const explicit = headerOverride?.backTo ?? getBackPath?.(pathname);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drawer-shell.js","sourceRoot":"","sources":["../../../web/components/drawer-shell.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAkB,MAAM,OAAO,CAAC;AACvE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAE/E,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"drawer-shell.js","sourceRoot":"","sources":["../../../web/components/drawer-shell.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nav-header.d.ts","sourceRoot":"","sources":["../../../web/components/nav-header.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,UAAU,cAAc;IACtB,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"nav-header.d.ts","sourceRoot":"","sources":["../../../web/components/nav-header.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,UAAU,cAAc;IACtB,KAAK,EAAE,SAAS,CAAC;IACjB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,iBAAS,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,cAAc,2CAUnE;AAED,OAAO,EAAE,SAAS,EAAE,CAAC;AACrB,YAAY,EAAE,cAAc,EAAE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "even-toolkit",
|
|
3
|
-
"version": "1.5.
|
|
3
|
+
"version": "1.5.3",
|
|
4
|
+
"bin": {
|
|
5
|
+
"even-toolkit": "./bin/create.js"
|
|
6
|
+
},
|
|
4
7
|
"description": "Design system & component library for Even Realities G2 smart glasses apps — 55+ web components, 191 pixel-art icons, glasses SDK bridge, and design tokens.",
|
|
5
8
|
"type": "module",
|
|
6
9
|
"main": "./dist/glasses/index.js",
|
|
@@ -356,6 +359,7 @@
|
|
|
356
359
|
}
|
|
357
360
|
},
|
|
358
361
|
"files": [
|
|
362
|
+
"bin",
|
|
359
363
|
"dist",
|
|
360
364
|
"web",
|
|
361
365
|
"glasses",
|
|
@@ -13,6 +13,7 @@ interface DrawerShellProps {
|
|
|
13
13
|
width?: number;
|
|
14
14
|
getPageTitle: (pathname: string) => string;
|
|
15
15
|
deriveActiveId: (pathname: string) => string;
|
|
16
|
+
pageTitlePrefix?: ReactNode;
|
|
16
17
|
isNestedRoute?: (pathname: string) => boolean;
|
|
17
18
|
getBackPath?: (pathname: string) => string;
|
|
18
19
|
backIcon?: ReactNode;
|
|
@@ -33,6 +34,7 @@ function DrawerShell({
|
|
|
33
34
|
width,
|
|
34
35
|
getPageTitle,
|
|
35
36
|
deriveActiveId,
|
|
37
|
+
pageTitlePrefix,
|
|
36
38
|
isNestedRoute,
|
|
37
39
|
getBackPath,
|
|
38
40
|
backIcon = DEFAULT_BACK_ICON,
|
|
@@ -63,7 +65,13 @@ function DrawerShell({
|
|
|
63
65
|
: !allItemIds.has(pathname);
|
|
64
66
|
|
|
65
67
|
// Resolve header values (screen overrides > defaults)
|
|
66
|
-
const
|
|
68
|
+
const headerTitleText = headerOverride?.title ?? getPageTitle(pathname);
|
|
69
|
+
const headerTitle = pageTitlePrefix ? (
|
|
70
|
+
<div className="flex items-center justify-center gap-1.5 min-w-0">
|
|
71
|
+
<span className="shrink-0">{pageTitlePrefix}</span>
|
|
72
|
+
<span className="truncate">{headerTitleText}</span>
|
|
73
|
+
</div>
|
|
74
|
+
) : headerTitleText;
|
|
67
75
|
const headerHidden = headerOverride?.hidden ?? false;
|
|
68
76
|
|
|
69
77
|
const handleBack = useCallback(() => {
|