@benev/web 0.1.0-10

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 (143) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +67 -0
  3. package/package.json +52 -0
  4. package/s/assets/b.png +0 -0
  5. package/s/assets/b.png.ts +3 -0
  6. package/s/bconfig.ts +9 -0
  7. package/s/css/benev.csstext.ts +41 -0
  8. package/s/css/demo.css +19 -0
  9. package/s/css/parts/common.csstext.ts +210 -0
  10. package/s/css/parts/core.csstext.ts +56 -0
  11. package/s/css/parts/page.csstext.ts +24 -0
  12. package/s/css/parts/vars.csstext.ts +40 -0
  13. package/s/css/theme.css.ts +9 -0
  14. package/s/dom/account/account.ts +7 -0
  15. package/s/dom/account/style.css.ts +6 -0
  16. package/s/dom/account/view.ts +16 -0
  17. package/s/dom/footer/style.css.ts +6 -0
  18. package/s/dom/footer/view.ts +13 -0
  19. package/s/dom/header/style.css.ts +40 -0
  20. package/s/dom/header/view.ts +25 -0
  21. package/s/dom/loader/loader.ts +77 -0
  22. package/s/dom/loader/style.css.ts +54 -0
  23. package/s/dom/loader/view.ts +23 -0
  24. package/s/dom/menu/style.css.ts +90 -0
  25. package/s/dom/menu/utils/click-backdrop.ts +8 -0
  26. package/s/dom/menu/utils/on-keypress.ts +22 -0
  27. package/s/dom/menu/utils/use-after-first-render.ts +9 -0
  28. package/s/dom/menu/view.ts +32 -0
  29. package/s/dom/tools/shadow-duplex.ts +17 -0
  30. package/s/index-ssg.ts +7 -0
  31. package/s/index.html.ts +48 -0
  32. package/s/index.ts +15 -0
  33. package/s/main.bundle.ts +19 -0
  34. package/s/ssg/top-nav.ts +18 -0
  35. package/s/test.ts +5 -0
  36. package/s/types.ts +5 -0
  37. package/s/vitals/setup.ts +29 -0
  38. package/s/vitals/shell.ts +67 -0
  39. package/x/assets/b.png +0 -0
  40. package/x/assets/b.png.d.ts +1 -0
  41. package/x/assets/b.png.js +2 -0
  42. package/x/assets/b.png.js.map +1 -0
  43. package/x/bconfig.d.ts +11 -0
  44. package/x/bconfig.js +8 -0
  45. package/x/bconfig.js.map +1 -0
  46. package/x/css/benev.csstext.d.ts +1 -0
  47. package/x/css/benev.csstext.js +39 -0
  48. package/x/css/benev.csstext.js.map +1 -0
  49. package/x/css/demo.css +19 -0
  50. package/x/css/parts/common.csstext.d.ts +2 -0
  51. package/x/css/parts/common.csstext.js +209 -0
  52. package/x/css/parts/common.csstext.js.map +1 -0
  53. package/x/css/parts/core.csstext.d.ts +2 -0
  54. package/x/css/parts/core.csstext.js +55 -0
  55. package/x/css/parts/core.csstext.js.map +1 -0
  56. package/x/css/parts/page.csstext.d.ts +2 -0
  57. package/x/css/parts/page.csstext.js +23 -0
  58. package/x/css/parts/page.csstext.js.map +1 -0
  59. package/x/css/parts/vars.csstext.d.ts +2 -0
  60. package/x/css/parts/vars.csstext.js +39 -0
  61. package/x/css/parts/vars.csstext.js.map +1 -0
  62. package/x/css/theme.css.d.ts +1 -0
  63. package/x/css/theme.css.js +7 -0
  64. package/x/css/theme.css.js.map +1 -0
  65. package/x/dom/account/account.d.ts +5 -0
  66. package/x/dom/account/account.js +7 -0
  67. package/x/dom/account/account.js.map +1 -0
  68. package/x/dom/account/style.css.d.ts +2 -0
  69. package/x/dom/account/style.css.js +5 -0
  70. package/x/dom/account/style.css.js.map +1 -0
  71. package/x/dom/account/view.d.ts +2 -0
  72. package/x/dom/account/view.js +11 -0
  73. package/x/dom/account/view.js.map +1 -0
  74. package/x/dom/footer/style.css.d.ts +2 -0
  75. package/x/dom/footer/style.css.js +5 -0
  76. package/x/dom/footer/style.css.js.map +1 -0
  77. package/x/dom/footer/view.d.ts +1 -0
  78. package/x/dom/footer/view.js +10 -0
  79. package/x/dom/footer/view.js.map +1 -0
  80. package/x/dom/header/style.css.d.ts +2 -0
  81. package/x/dom/header/style.css.js +39 -0
  82. package/x/dom/header/style.css.js.map +1 -0
  83. package/x/dom/header/view.d.ts +2 -0
  84. package/x/dom/header/view.js +19 -0
  85. package/x/dom/header/view.js.map +1 -0
  86. package/x/dom/loader/loader.d.ts +10 -0
  87. package/x/dom/loader/loader.js +56 -0
  88. package/x/dom/loader/loader.js.map +1 -0
  89. package/x/dom/loader/style.css.d.ts +2 -0
  90. package/x/dom/loader/style.css.js +53 -0
  91. package/x/dom/loader/style.css.js.map +1 -0
  92. package/x/dom/loader/view.d.ts +1 -0
  93. package/x/dom/loader/view.js +19 -0
  94. package/x/dom/loader/view.js.map +1 -0
  95. package/x/dom/menu/style.css.d.ts +2 -0
  96. package/x/dom/menu/style.css.js +89 -0
  97. package/x/dom/menu/style.css.js.map +1 -0
  98. package/x/dom/menu/utils/click-backdrop.d.ts +1 -0
  99. package/x/dom/menu/utils/click-backdrop.js +7 -0
  100. package/x/dom/menu/utils/click-backdrop.js.map +1 -0
  101. package/x/dom/menu/utils/on-keypress.d.ts +1 -0
  102. package/x/dom/menu/utils/on-keypress.js +18 -0
  103. package/x/dom/menu/utils/on-keypress.js.map +1 -0
  104. package/x/dom/menu/utils/use-after-first-render.d.ts +1 -0
  105. package/x/dom/menu/utils/use-after-first-render.js +7 -0
  106. package/x/dom/menu/utils/use-after-first-render.js.map +1 -0
  107. package/x/dom/menu/view.d.ts +2 -0
  108. package/x/dom/menu/view.js +27 -0
  109. package/x/dom/menu/view.js.map +1 -0
  110. package/x/dom/tools/shadow-duplex.d.ts +2 -0
  111. package/x/dom/tools/shadow-duplex.js +10 -0
  112. package/x/dom/tools/shadow-duplex.js.map +1 -0
  113. package/x/index-ssg.d.ts +4 -0
  114. package/x/index-ssg.js +5 -0
  115. package/x/index-ssg.js.map +1 -0
  116. package/x/index.d.ts +10 -0
  117. package/x/index.html +410 -0
  118. package/x/index.html.d.ts +2 -0
  119. package/x/index.html.js +46 -0
  120. package/x/index.html.js.map +1 -0
  121. package/x/index.js +11 -0
  122. package/x/index.js.map +1 -0
  123. package/x/main.bundle.d.ts +1 -0
  124. package/x/main.bundle.js +12 -0
  125. package/x/main.bundle.js.map +1 -0
  126. package/x/main.bundle.min.js +847 -0
  127. package/x/main.bundle.min.js.LEGAL.txt +40 -0
  128. package/x/main.bundle.min.js.map +7 -0
  129. package/x/ssg/top-nav.d.ts +2 -0
  130. package/x/ssg/top-nav.js +12 -0
  131. package/x/ssg/top-nav.js.map +1 -0
  132. package/x/test.d.ts +1 -0
  133. package/x/test.js +3 -0
  134. package/x/test.js.map +1 -0
  135. package/x/types.d.ts +2 -0
  136. package/x/types.js +2 -0
  137. package/x/types.js.map +1 -0
  138. package/x/vitals/setup.d.ts +14 -0
  139. package/x/vitals/setup.js +24 -0
  140. package/x/vitals/setup.js.map +1 -0
  141. package/x/vitals/shell.d.ts +7 -0
  142. package/x/vitals/shell.js +52 -0
  143. package/x/vitals/shell.js.map +1 -0
@@ -0,0 +1,56 @@
1
+ import { nap } from "@e280/stz";
2
+ import { dom } from "@e280/sly";
3
+ import { bconfig } from "../../bconfig.js";
4
+ export class Loader {
5
+ element;
6
+ anim;
7
+ original;
8
+ #loading;
9
+ #content;
10
+ #operation = 0;
11
+ constructor(element, anim = bconfig.anim) {
12
+ this.element = element;
13
+ this.anim = anim;
14
+ this.original = document.createElement("template");
15
+ this.original.innerHTML = element.innerHTML;
16
+ this.#loading = document.createElement("div");
17
+ this.#loading.style.display = "contents";
18
+ this.#loading.slot = "loading";
19
+ this.#content = document.createElement("div");
20
+ this.#content.style.display = "contents";
21
+ dom.render(this.#content, Array.from(element.childNodes));
22
+ this.element.replaceChildren();
23
+ this.element.append(this.#loading, this.#content);
24
+ }
25
+ async reset(getLoading) {
26
+ return this.load(getLoading, async () => Array.from(this.original.content.cloneNode(true).childNodes));
27
+ }
28
+ async load(getLoading, getContent) {
29
+ this.#operation += 1;
30
+ const operation = this.#operation;
31
+ const isLatest = () => (this.#operation === operation);
32
+ this.element.inert = true;
33
+ this.element.toggleAttribute("loading", true);
34
+ dom.render(this.#loading, getLoading());
35
+ try {
36
+ const [content] = await Promise.all([
37
+ getContent(),
38
+ nap(this.anim * 2),
39
+ ]);
40
+ if (isLatest()) {
41
+ this.element.toggleAttribute("loading", false);
42
+ this.element.inert = false;
43
+ dom.render(this.#content, content);
44
+ await nap(this.anim);
45
+ }
46
+ }
47
+ finally {
48
+ if (isLatest()) {
49
+ this.element.toggleAttribute("loading", false);
50
+ this.element.inert = false;
51
+ dom.render(this.#loading, null);
52
+ }
53
+ }
54
+ }
55
+ }
56
+ //# sourceMappingURL=loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../../s/dom/loader/loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ declare const _default: import("lit").CSSResult;
2
+ export default _default;
@@ -0,0 +1,53 @@
1
+ import { css } from "lit";
2
+ export default css `@layer benev.view {
3
+
4
+ :host {
5
+ display: block;
6
+ position: relative;
7
+ }
8
+
9
+ .veil, .scalar {
10
+ position: absolute;
11
+ inset: 0;
12
+ transition:
13
+ opacity var(--benev-anim) linear,
14
+ transform var(--benev-anim) ease,
15
+ visiblity 0ms linear allow-discrete;
16
+
17
+ display: flex;
18
+ flex-direction: column;
19
+ justify-content: center;
20
+ align-items: center;
21
+ gap: var(--benev-space);
22
+ }
23
+
24
+ .veil {
25
+ pointer-events: all;
26
+ background: var(--benev-bg);
27
+
28
+ opacity: 1;
29
+ visibility: visible;
30
+
31
+ .scalar {
32
+ transform: scale(100%);
33
+ }
34
+
35
+ .logo {
36
+ width: 100%;
37
+ max-width: 10em;
38
+ aspect-ratio: 1 / 1;
39
+ }
40
+ }
41
+
42
+ :host(:not([loading])) .veil {
43
+ pointer-events: none;
44
+ opacity: 0;
45
+ visiblity: hidden;
46
+
47
+ .scalar {
48
+ transform: scale(0%);
49
+ }
50
+ }
51
+
52
+ }`;
53
+ //# sourceMappingURL=style.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"style.css.js","sourceRoot":"","sources":["../../../s/dom/loader/style.css.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,GAAG,EAAC,MAAM,KAAK,CAAA;AACvB,eAAe,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkDhB,CAAA"}
@@ -0,0 +1 @@
1
+ export declare const BenevLoader: new () => HTMLElement;
@@ -0,0 +1,19 @@
1
+ import { html } from "lit";
2
+ import { shadowElement, useCss } from "@e280/sly";
3
+ import styleCss from "./style.css.js";
4
+ import { themeCss } from "../../css/theme.css.js";
5
+ import { bDataPng } from "../../assets/b.png.js";
6
+ export const BenevLoader = shadowElement(() => {
7
+ useCss(themeCss, styleCss);
8
+ return html `
9
+ <slot></slot>
10
+
11
+ <div class=veil>
12
+ <div class=scalar>
13
+ <img class=logo src="${bDataPng}" alt="" draggable="false"/>
14
+ <slot name=loading></slot>
15
+ </div>
16
+ </div>
17
+ `;
18
+ });
19
+ //# sourceMappingURL=view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view.js","sourceRoot":"","sources":["../../../s/dom/loader/view.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,IAAI,EAAC,MAAM,KAAK,CAAA;AACxB,OAAO,EAAC,aAAa,EAAE,MAAM,EAAC,MAAM,WAAW,CAAA;AAE/C,OAAO,QAAQ,MAAM,gBAAgB,CAAA;AACrC,OAAO,EAAC,QAAQ,EAAC,MAAM,wBAAwB,CAAA;AAC/C,OAAO,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAA;AAE9C,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAAC,GAAG,EAAE;IAC7C,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;IAE1B,OAAO,IAAI,CAAA;;;;;2BAKe,QAAQ;;;;EAIjC,CAAA;AACF,CAAC,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ declare const _default: import("lit").CSSResult;
2
+ export default _default;
@@ -0,0 +1,89 @@
1
+ import { css } from "lit";
2
+ export default css `@layer benev.view {
3
+
4
+ dialog {
5
+ border: 0;
6
+ padding: 0;
7
+ background: transparent;
8
+ overflow: visible;
9
+ max-height: unset;
10
+ font: inherit;
11
+ color: inherit;
12
+
13
+ position: fixed;
14
+ inset: 0 0 auto 0;
15
+ width: 100%;
16
+ max-width: var(--benev-site-width);
17
+ margin: auto;
18
+
19
+ transition: all var(--benev-anim) ease allow-discrete;
20
+ opacity: 0;
21
+ transform: translateY(-100%);
22
+ }
23
+
24
+ dialog > section:focus {
25
+ outline: none;
26
+ }
27
+
28
+ dialog > section {
29
+ --theight: min(20em, calc(100dvh - var(--benev-headroom)));
30
+ width: 100%;
31
+ height: var(--theight);
32
+
33
+ display: flex;
34
+ flex-direction: column;
35
+ justify-content: center;
36
+ align-items: center;
37
+
38
+ background: linear-gradient(
39
+ to bottom right,
40
+ var(--benev-tray),
41
+ oklch(from var(--benev-tray) calc(l * 0.6) calc(c * 1.2) h / alpha)
42
+ );
43
+ box-shadow: var(--benev-box-shadow);
44
+ box-shadow: 0 0 4em oklch(from var(--benev-tray) l c h / 60%);
45
+ border-radius: 0 0 var(--benev-round) var(--benev-round);
46
+ border: var(--benev-thick) solid oklch(from var(--benev-tray) calc(l * 1.2) calc(c * 1.2) h / alpha);
47
+ border-top: 0;
48
+ }
49
+
50
+ dialog[open] {
51
+ opacity: 1;
52
+ transform: translateY(0);
53
+ }
54
+
55
+ dialog[open][data-closing] {
56
+ opacity: 0;
57
+ transform: translateY(-100%);
58
+ }
59
+
60
+ dialog::backdrop {
61
+ background: rgb(0 0 0 / 0%);
62
+ backdrop-filter: blur(0);
63
+ transition: all var(--benev-anim) ease allow-discrete;
64
+ }
65
+
66
+ dialog[open]::backdrop {
67
+ background: var(--benev-backdrop);
68
+ backdrop-filter: var(--benev-blur);
69
+ }
70
+
71
+ dialog[open][data-closing]::backdrop {
72
+ background: rgb(0 0 0 / 0%);
73
+ backdrop-filter: blur(0);
74
+ }
75
+
76
+ @starting-style {
77
+ dialog[open] {
78
+ opacity: 0;
79
+ transform: translateY(-100%);
80
+ }
81
+
82
+ dialog[open]::backdrop {
83
+ background: rgb(0 0 0 / 0%);
84
+ backdrop-filter: blur(0);
85
+ }
86
+ }
87
+
88
+ }`;
89
+ //# sourceMappingURL=style.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"style.css.js","sourceRoot":"","sources":["../../../s/dom/menu/style.css.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,GAAG,EAAC,MAAM,KAAK,CAAA;AACvB,eAAe,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsFhB,CAAA"}
@@ -0,0 +1 @@
1
+ export declare function clickBackdrop(fn: (event: Event) => void): (event: Event) => void;
@@ -0,0 +1,7 @@
1
+ export function clickBackdrop(fn) {
2
+ return (event) => {
3
+ if (event.target === event.currentTarget)
4
+ fn(event);
5
+ };
6
+ }
7
+ //# sourceMappingURL=click-backdrop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"click-backdrop.js","sourceRoot":"","sources":["../../../../s/dom/menu/utils/click-backdrop.ts"],"names":[],"mappings":"AACA,MAAM,UAAU,aAAa,CAAC,EAA0B;IACvD,OAAO,CAAC,KAAY,EAAE,EAAE;QACvB,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,aAAa;YACvC,EAAE,CAAC,KAAK,CAAC,CAAA;IACX,CAAC,CAAA;AACF,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function onKeypress(keys: string[], fn: () => void): () => () => void;
@@ -0,0 +1,18 @@
1
+ import { ev } from "@e280/stz";
2
+ export function onKeypress(keys, fn) {
3
+ return () => ev(window, {
4
+ keydown: (event) => {
5
+ const target = event.target;
6
+ const typing = (target instanceof HTMLInputElement ||
7
+ target instanceof HTMLTextAreaElement ||
8
+ target.isContentEditable);
9
+ if (typing)
10
+ return;
11
+ if (keys.includes(event.code)) {
12
+ event.preventDefault();
13
+ fn();
14
+ }
15
+ },
16
+ });
17
+ }
18
+ //# sourceMappingURL=on-keypress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"on-keypress.js","sourceRoot":"","sources":["../../../../s/dom/menu/utils/on-keypress.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,EAAE,EAAC,MAAM,WAAW,CAAA;AAE5B,MAAM,UAAU,UAAU,CAAC,IAAc,EAAE,EAAc;IACxD,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE;QACvB,OAAO,EAAE,CAAC,KAAoB,EAAE,EAAE;YACjC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB,CAAA;YAC1C,MAAM,MAAM,GAAG,CACd,MAAM,YAAY,gBAAgB;gBAClC,MAAM,YAAY,mBAAmB;gBACrC,MAAM,CAAC,iBAAiB,CACxB,CAAA;YACD,IAAI,MAAM;gBACT,OAAM;YACP,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC/B,KAAK,CAAC,cAAc,EAAE,CAAA;gBACtB,EAAE,EAAE,CAAA;YACL,CAAC;QACF,CAAC;KACD,CAAC,CAAA;AACH,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function useAfterFirstRender(fn: (shadow: ShadowRoot) => void): void;
@@ -0,0 +1,7 @@
1
+ import { useRendered, useShadow, useWake } from "@e280/sly";
2
+ export function useAfterFirstRender(fn) {
3
+ const shadow = useShadow();
4
+ const rendered = useRendered();
5
+ useWake(() => rendered.then(() => fn(shadow)));
6
+ }
7
+ //# sourceMappingURL=use-after-first-render.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-after-first-render.js","sourceRoot":"","sources":["../../../../s/dom/menu/utils/use-after-first-render.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,WAAW,EAAE,SAAS,EAAE,OAAO,EAAC,MAAM,WAAW,CAAA;AAEzD,MAAM,UAAU,mBAAmB,CAAC,EAAgC;IACnE,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAA;IAC9B,OAAO,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;AAC/C,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { Shell } from "../../vitals/shell.js";
2
+ export declare const makeBenevMenu: (shell: Shell) => new () => HTMLElement;
@@ -0,0 +1,27 @@
1
+ import { html } from "lit";
2
+ import { dom, shadowElement, useCss, useMount } from "@e280/sly";
3
+ import styleCss from "./style.css.js";
4
+ import { HeaderView } from "../header/view.js";
5
+ import { themeCss } from "../../css/theme.css.js";
6
+ import { onKeypress } from "./utils/on-keypress.js";
7
+ import { clickBackdrop } from "./utils/click-backdrop.js";
8
+ import { useAfterFirstRender } from "./utils/use-after-first-render.js";
9
+ export const makeBenevMenu = (shell) => shadowElement(() => {
10
+ useCss(themeCss, styleCss);
11
+ useAfterFirstRender(shadow => shell.attach(dom("dialog", shadow)));
12
+ useMount(onKeypress(["KeyB", "Escape"], () => shell.toggle()));
13
+ const click = clickBackdrop(() => shell.toggle(false));
14
+ const renderMenuContent = () => html `<slot></slot>`;
15
+ return html `
16
+ <dialog @click=${click}>
17
+ <section class=plate autofocus tabindex="-1">
18
+ ${shell.dialog?.open
19
+ ? renderMenuContent()
20
+ : null}
21
+ </section>
22
+
23
+ ${HeaderView(shell)}
24
+ </dialog>
25
+ `;
26
+ });
27
+ //# sourceMappingURL=view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view.js","sourceRoot":"","sources":["../../../s/dom/menu/view.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,IAAI,EAAC,MAAM,KAAK,CAAA;AACxB,OAAO,EAAC,GAAG,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAC,MAAM,WAAW,CAAA;AAC9D,OAAO,QAAQ,MAAM,gBAAgB,CAAA;AAErC,OAAO,EAAC,UAAU,EAAC,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAC,QAAQ,EAAC,MAAM,wBAAwB,CAAA;AAC/C,OAAO,EAAC,UAAU,EAAC,MAAM,wBAAwB,CAAA;AACjD,OAAO,EAAC,aAAa,EAAC,MAAM,2BAA2B,CAAA;AACvD,OAAO,EAAC,mBAAmB,EAAC,MAAM,mCAAmC,CAAA;AAErE,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAY,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE;IACjE,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;IAC1B,mBAAmB,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAA;IAClE,QAAQ,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;IAE9D,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;IACtD,MAAM,iBAAiB,GAAG,GAAG,EAAE,CAAC,IAAI,CAAA,eAAe,CAAA;IAEnD,OAAO,IAAI,CAAA;mBACO,KAAK;;MAElB,KAAK,CAAC,MAAM,EAAE,IAAI;QACnB,CAAC,CAAC,iBAAiB,EAAE;QACrB,CAAC,CAAC,IAAI;;;KAGN,UAAU,CAAC,KAAK,CAAC;;EAEpB,CAAA;AACF,CAAC,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ import { Content } from "@e280/sly";
2
+ export declare function shadowDuplex<P extends any[]>(name: string, render: (...p: P) => Content): [view: import("@e280/sly").ShadowView<P>, makeElement: (...p: P) => new () => HTMLElement];
@@ -0,0 +1,10 @@
1
+ import { shadow, shadowElement, useName } from "@e280/sly";
2
+ export function shadowDuplex(name, render) {
3
+ const view = shadow((...p) => {
4
+ useName(name);
5
+ return render(...p);
6
+ });
7
+ const makeElement = (...p) => shadowElement(() => render(...p));
8
+ return [view, makeElement];
9
+ }
10
+ //# sourceMappingURL=shadow-duplex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shadow-duplex.js","sourceRoot":"","sources":["../../../s/dom/tools/shadow-duplex.ts"],"names":[],"mappings":"AACA,OAAO,EAAU,MAAM,EAAE,aAAa,EAAE,OAAO,EAAC,MAAM,WAAW,CAAA;AAEjE,MAAM,UAAU,YAAY,CAAkB,IAAY,EAAE,MAA4B;IACvF,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,GAAG,CAAI,EAAE,EAAE;QAC/B,OAAO,CAAC,IAAI,CAAC,CAAA;QACb,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;IACpB,CAAC,CAAC,CAAA;IAEF,MAAM,WAAW,GAAG,CAAC,GAAG,CAAI,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;IAElE,OAAO,CAAC,IAAI,EAAE,WAAW,CAGxB,CAAA;AACF,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from "./css/benev.csstext.js";
2
+ export * from "./ssg/top-nav.js";
3
+ export * from "./bconfig.js";
4
+ export * from "./types.js";
package/x/index-ssg.js ADDED
@@ -0,0 +1,5 @@
1
+ export * from "./css/benev.csstext.js";
2
+ export * from "./ssg/top-nav.js";
3
+ export * from "./bconfig.js";
4
+ export * from "./types.js";
5
+ //# sourceMappingURL=index-ssg.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-ssg.js","sourceRoot":"","sources":["../s/index-ssg.ts"],"names":[],"mappings":"AACA,cAAc,wBAAwB,CAAA;AACtC,cAAc,kBAAkB,CAAA;AAEhC,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA"}
package/x/index.d.ts ADDED
@@ -0,0 +1,10 @@
1
+ export * from "./vitals/shell.js";
2
+ export * from "./vitals/setup.js";
3
+ export * from "./css/benev.csstext.js";
4
+ export * from "./css/theme.css.js";
5
+ export * from "./dom/header/view.js";
6
+ export * from "./dom/loader/view.js";
7
+ export * from "./dom/loader/loader.js";
8
+ export * from "./dom/menu/view.js";
9
+ export * from "./bconfig.js";
10
+ export * from "./types.js";