@benev/web 0.1.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.
Files changed (111) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +67 -0
  3. package/package.json +49 -0
  4. package/s/assets/b.png +0 -0
  5. package/s/assets/b.png.ts +3 -0
  6. package/s/consts.ts +5 -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 +173 -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/header/style.css.ts +40 -0
  15. package/s/dom/header/view.ts +31 -0
  16. package/s/dom/loader/loader.ts +70 -0
  17. package/s/dom/loader/style.css.ts +44 -0
  18. package/s/dom/loader/view.ts +20 -0
  19. package/s/dom/menu/style.css.ts +90 -0
  20. package/s/dom/menu/utils/click-backdrop.ts +8 -0
  21. package/s/dom/menu/utils/on-keypress.ts +22 -0
  22. package/s/dom/menu/utils/use-after-first-render.ts +9 -0
  23. package/s/dom/menu/view.ts +32 -0
  24. package/s/index-ssg.ts +3 -0
  25. package/s/index.html.ts +45 -0
  26. package/s/index.ts +14 -0
  27. package/s/main.bundle.ts +19 -0
  28. package/s/test.ts +5 -0
  29. package/s/vitals/setup.ts +21 -0
  30. package/s/vitals/shell.ts +67 -0
  31. package/x/assets/b.png +0 -0
  32. package/x/assets/b.png.d.ts +1 -0
  33. package/x/assets/b.png.js +2 -0
  34. package/x/assets/b.png.js.map +1 -0
  35. package/x/consts.d.ts +3 -0
  36. package/x/consts.js +4 -0
  37. package/x/consts.js.map +1 -0
  38. package/x/css/benev.csstext.d.ts +1 -0
  39. package/x/css/benev.csstext.js +39 -0
  40. package/x/css/benev.csstext.js.map +1 -0
  41. package/x/css/demo.css +19 -0
  42. package/x/css/parts/common.csstext.d.ts +2 -0
  43. package/x/css/parts/common.csstext.js +172 -0
  44. package/x/css/parts/common.csstext.js.map +1 -0
  45. package/x/css/parts/core.csstext.d.ts +2 -0
  46. package/x/css/parts/core.csstext.js +55 -0
  47. package/x/css/parts/core.csstext.js.map +1 -0
  48. package/x/css/parts/page.csstext.d.ts +2 -0
  49. package/x/css/parts/page.csstext.js +23 -0
  50. package/x/css/parts/page.csstext.js.map +1 -0
  51. package/x/css/parts/vars.csstext.d.ts +2 -0
  52. package/x/css/parts/vars.csstext.js +39 -0
  53. package/x/css/parts/vars.csstext.js.map +1 -0
  54. package/x/css/theme.css.d.ts +1 -0
  55. package/x/css/theme.css.js +7 -0
  56. package/x/css/theme.css.js.map +1 -0
  57. package/x/dom/header/style.css.d.ts +2 -0
  58. package/x/dom/header/style.css.js +39 -0
  59. package/x/dom/header/style.css.js.map +1 -0
  60. package/x/dom/header/view.d.ts +3 -0
  61. package/x/dom/header/view.js +26 -0
  62. package/x/dom/header/view.js.map +1 -0
  63. package/x/dom/loader/loader.d.ts +9 -0
  64. package/x/dom/loader/loader.js +53 -0
  65. package/x/dom/loader/loader.js.map +1 -0
  66. package/x/dom/loader/style.css.d.ts +2 -0
  67. package/x/dom/loader/style.css.js +43 -0
  68. package/x/dom/loader/style.css.js.map +1 -0
  69. package/x/dom/loader/view.d.ts +1 -0
  70. package/x/dom/loader/view.js +17 -0
  71. package/x/dom/loader/view.js.map +1 -0
  72. package/x/dom/menu/style.css.d.ts +2 -0
  73. package/x/dom/menu/style.css.js +89 -0
  74. package/x/dom/menu/style.css.js.map +1 -0
  75. package/x/dom/menu/utils/click-backdrop.d.ts +1 -0
  76. package/x/dom/menu/utils/click-backdrop.js +7 -0
  77. package/x/dom/menu/utils/click-backdrop.js.map +1 -0
  78. package/x/dom/menu/utils/on-keypress.d.ts +1 -0
  79. package/x/dom/menu/utils/on-keypress.js +18 -0
  80. package/x/dom/menu/utils/on-keypress.js.map +1 -0
  81. package/x/dom/menu/utils/use-after-first-render.d.ts +1 -0
  82. package/x/dom/menu/utils/use-after-first-render.js +7 -0
  83. package/x/dom/menu/utils/use-after-first-render.js.map +1 -0
  84. package/x/dom/menu/view.d.ts +2 -0
  85. package/x/dom/menu/view.js +27 -0
  86. package/x/dom/menu/view.js.map +1 -0
  87. package/x/index-ssg.d.ts +1 -0
  88. package/x/index-ssg.js +2 -0
  89. package/x/index-ssg.js.map +1 -0
  90. package/x/index.d.ts +9 -0
  91. package/x/index.html +368 -0
  92. package/x/index.html.d.ts +2 -0
  93. package/x/index.html.js +43 -0
  94. package/x/index.html.js.map +1 -0
  95. package/x/index.js +10 -0
  96. package/x/index.js.map +1 -0
  97. package/x/main.bundle.d.ts +1 -0
  98. package/x/main.bundle.js +12 -0
  99. package/x/main.bundle.js.map +1 -0
  100. package/x/main.bundle.min.js +522 -0
  101. package/x/main.bundle.min.js.LEGAL.txt +33 -0
  102. package/x/main.bundle.min.js.map +7 -0
  103. package/x/test.d.ts +1 -0
  104. package/x/test.js +3 -0
  105. package/x/test.js.map +1 -0
  106. package/x/vitals/setup.d.ts +9 -0
  107. package/x/vitals/setup.js +17 -0
  108. package/x/vitals/setup.js.map +1 -0
  109. package/x/vitals/shell.d.ts +7 -0
  110. package/x/vitals/shell.js +52 -0
  111. package/x/vitals/shell.js.map +1 -0
@@ -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 menuComponent: (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 menuComponent = (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 @@
1
+ export * from "./css/benev.csstext.js";
package/x/index-ssg.js ADDED
@@ -0,0 +1,2 @@
1
+ export * from "./css/benev.csstext.js";
2
+ //# 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"}
package/x/index.d.ts ADDED
@@ -0,0 +1,9 @@
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 "./consts.js";
package/x/index.html ADDED
@@ -0,0 +1,368 @@
1
+ <!doctype html>
2
+ <html benev>
3
+ <head>
4
+ <meta charset="utf-8"/>
5
+ <meta name="viewport" content="width=device-width,initial-scale=1"/>
6
+ <meta name="darkreader-lock"/>
7
+
8
+ <title>@benev/web</title>
9
+ <link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><text y='0.9em' font-size='90'>😇</text></svg>"/>
10
+ <script type="module" src="main.bundle.min.js?v=cabc9d18d6c4"></script>
11
+ <style>
12
+ @layer benev, demo;
13
+
14
+
15
+ @layer
16
+ benev.vars,
17
+ benev.core,
18
+ benev.common,
19
+ benev.page;
20
+
21
+ @layer benev.vars {
22
+ [benev], :host {
23
+
24
+
25
+ --benev-font-size: 18px;
26
+ --benev-site-width: 62em;
27
+ --benev-copy-width: 70ch;
28
+ --benev-headroom: 2.5em;
29
+
30
+ --benev-bg: #111;
31
+ --benev-prime: #ebb935;
32
+ --benev-tray: #453e2ca8;
33
+ --benev-text: color-mix(in oklch, var(--benev-prime), #fffc 90%);
34
+ --benev-intense: white;
35
+ --benev-focus: 2px solid cyan;
36
+ --benev-link: aqua;
37
+ --benev-b-size: 1.5em;
38
+ --benev-code: #0f0;
39
+
40
+ --benev-select-bg: #f60;
41
+ --benev-select-color: #ff8;
42
+
43
+ --benev-line: #ebb93588;
44
+ --benev-thin: 1px;
45
+ --benev-thick: 3px;
46
+ --benev-border: var(--benev-thin) solid color-mix(in oklch, transparent, var(--benev-line) 50%);
47
+
48
+ --benev-pad: 0.5em;
49
+ --benev-space: 1em;
50
+ --benev-anim: 300ms;
51
+ --benev-round: 0.5em;
52
+ --benev-blur: blur(1em);
53
+ --benev-backdrop: #0008;
54
+
55
+ --benev-box-shadow: 0 0.5em 2em #0008;
56
+ --benev-text-shadow: 0.04em 0.08em 0.1em #0008;
57
+
58
+
59
+ }
60
+ }
61
+
62
+ @layer benev.core {
63
+ [benev], :host {
64
+
65
+
66
+ &, *, ::before, ::after {
67
+ margin: 0;
68
+ padding: 0;
69
+ box-sizing: border-box;
70
+ scrollbar-width: thin;
71
+ }
72
+
73
+ :focus-visible {
74
+ outline: var(--benev-focus);
75
+ outline-offset: 0.2em;
76
+ }
77
+
78
+ ::selection {
79
+ color: var(--benev-select-color);
80
+ background: var(--benev-select-bg);
81
+ }
82
+
83
+ a {
84
+ color: var(--benev-link);
85
+ text-decoration: none;
86
+
87
+ &:visited {
88
+ color: var(--benev-link);
89
+ }
90
+
91
+ &:hover, &:focus-visible {
92
+ color: color-mix(in srgb, var(--benev-link), white 15%);
93
+ text-decoration: underline;
94
+ }
95
+
96
+ &:active {
97
+ color: color-mix(in srgb, var(--benev-link), white 50%);
98
+ }
99
+
100
+ &[benev-cardlink] {
101
+ color: inherit;
102
+
103
+ &:hover, &:focus-visible {
104
+ color: inherit;
105
+ text-decoration: none;
106
+ filter: brightness(105%);
107
+ }
108
+
109
+ &:active {
110
+ color: inherit;
111
+ filter: brightness(95%);
112
+ }
113
+ }
114
+ }
115
+
116
+
117
+ }
118
+ }
119
+
120
+ @layer benev.common {
121
+ [benev], :host {
122
+
123
+
124
+ button, [benev-button] {
125
+ font: inherit;
126
+ text-decoration: none;
127
+
128
+ display: inline-flex;
129
+ align-items: center;
130
+ flex-wrap: wrap;
131
+ padding: var(--benev-pad) var(--benev-space);
132
+
133
+ font-weight: bold;
134
+ text-transform: uppercase;
135
+ color: var(--benev-prime);
136
+ background: oklch(from var(--benev-bg) l c h / 50%);
137
+ backdrop-filter: var(--benev-blur);
138
+ box-shadow: var(--benev-box-shadow);
139
+ border: var(--benev-thick) solid currentColor;
140
+ border-radius: var(--benev-round);
141
+
142
+ &[disabled] {
143
+ opacity: 0.3;
144
+ }
145
+
146
+ &:not([disabled]) {
147
+ cursor: pointer;
148
+ transform: scale(100%);
149
+ transition: all var(--benev-anim) ease;
150
+ &:hover, &:focus-visible { transform: scale(105%); filter: brightness(120%); }
151
+ &:active { transform: scale(100%); filter: brightness(100%); }
152
+ }
153
+
154
+ &[benev-button="naked"] {
155
+ color: inherit;
156
+ background: transparent;
157
+ backdrop-filter: none;
158
+ box-shadow: none;
159
+ padding: 0;
160
+ border-radius: 0;
161
+ border: none;
162
+ text-transform: unset;
163
+ font-weight: inherit;
164
+ text-transform: inherit;
165
+ }
166
+
167
+ &[benev-button="juicy"] {
168
+ opacity: 1;
169
+ color: black;
170
+ border: var(--benev-thick) solid var(--benev-prime);
171
+ background: linear-gradient(
172
+ to bottom,
173
+ oklch(from var(--benev-prime) calc(l * 1.5) c h),
174
+ oklch(from var(--benev-prime) l calc(c * 1.5) h)
175
+ );
176
+ &:is(:hover, :focus-visible) {
177
+ box-shadow: 0 0 2em color-mix(in oklch, transparent, var(--benev-prime));
178
+ }
179
+ }
180
+ }
181
+
182
+ [benev-slice] {
183
+ width: 100%;
184
+ max-width: var(--benev-site-width);
185
+ margin-left: auto;
186
+ margin-right: auto;
187
+ }
188
+
189
+ benev-menu:not(:defined) {
190
+ display: none;
191
+ }
192
+
193
+ benev-header {
194
+ display: flex;
195
+ justify-content: end;
196
+ align-items: center;
197
+ width: 100%;
198
+ max-width: var(--benev-site-width);
199
+ margin: 0 auto;
200
+
201
+ &:not(:defined) {
202
+ padding: var(--benev-pad);
203
+ gap: var(--benev-space);
204
+
205
+ &::before {
206
+ content: "";
207
+ display: inline-block;
208
+ margin-right: auto;
209
+ width: var(--benev-b-size);
210
+ height: var(--benev-b-size);
211
+ }
212
+ }
213
+ }
214
+
215
+ [benev-prose] {
216
+ display: flex;
217
+ flex-direction: column;
218
+ gap: var(--benev-pad);
219
+
220
+ h1 {
221
+ font-size: 2.5em;
222
+ color: var(--benev-intense);
223
+ a { color: inherit; }
224
+ }
225
+
226
+ h2 {
227
+ font-size: 1.5em;
228
+ color: var(--benev-prime);
229
+ }
230
+
231
+ h3, h4, h5, h6 {
232
+ color: var(--benev-prime);
233
+ }
234
+
235
+ h1, h2, h3, h4, h5, h6 {
236
+ margin-top: var(--benev-space);
237
+ }
238
+
239
+ p {
240
+ max-width: var(--benev-copy-width);
241
+ }
242
+
243
+ p:has(> img) {
244
+ max-width: 100%;
245
+ }
246
+
247
+ ul, ol {
248
+ padding-left: 1.5em;
249
+ }
250
+
251
+ img {
252
+ max-width: 100%;
253
+ background: #0004;
254
+ border-radius: var(--benev-round);
255
+ box-shadow: var(--benev-box-shadow);
256
+ }
257
+
258
+ blockquote {
259
+ color: oklch(from currentColor l 0 h / 50%);
260
+ padding-left: var(--benev-pad);
261
+ margin-left: var(--benev-pad);
262
+ font-style: italic;
263
+ border-left: var(--benev-thick) solid currentColor;
264
+ }
265
+
266
+ hr {
267
+ border: none;
268
+ display: block;
269
+ height: var(--benev-thick);
270
+ background: oklch(from var(--benev-text) l c h / 25%);
271
+ margin: var(--benev-space) 0;
272
+ }
273
+
274
+ code {
275
+ font-size: 0.8em;
276
+
277
+ display: block;
278
+ width: 100%;
279
+ overflow: auto;
280
+
281
+ padding: var(--benev-space);
282
+ color: var(--benev-code);
283
+ background: var(--benev-backdrop);
284
+ border-radius: var(--benev-round);
285
+ border: var(--benev-border);
286
+ border-color: oklch(from var(--benev-code) l c h / 33%);
287
+ box-shadow: var(--benev-box-shadow);
288
+ }
289
+ }
290
+
291
+
292
+ }
293
+ }
294
+
295
+ @layer benev.page {
296
+ [benev], :host {
297
+
298
+
299
+ color-scheme: dark;
300
+
301
+ &:is(html) {
302
+ font-family: sans-serif;
303
+ font-size: var(--benev-font-size);
304
+
305
+ scrollbar-gutter: stable;
306
+ scrollbar-width: thin;
307
+
308
+ color: var(--benev-text);
309
+ background: var(--benev-bg);
310
+ text-shadow: var(--benev-text-shadow);
311
+ }
312
+
313
+ body {
314
+ min-height: 100dvh;
315
+ }
316
+
317
+
318
+ }
319
+ }
320
+
321
+
322
+
323
+ @layer demo {
324
+ benev-header {
325
+ z-index: 2;
326
+ position: absolute;
327
+ inset: 0 0 auto;
328
+ }
329
+
330
+ benev-loader {
331
+ position: absolute;
332
+ inset: 0;
333
+ }
334
+
335
+ main {
336
+ padding: var(--benev-pad);
337
+ padding-top: var(--benev-headroom);
338
+ }
339
+ }
340
+
341
+
342
+ </style>
343
+
344
+
345
+ <meta property="og:type" content="website"/>
346
+ <meta property="og:title" content="@benev/web"/>
347
+ <meta property="og:description" content="benev web ui library"/>
348
+ <meta property="og:site_name" content="@benev/web"/>
349
+ <meta name="theme-color" content="#ffdd22"/>
350
+
351
+
352
+
353
+ </head>
354
+ <body>
355
+ <benev-menu></benev-menu>
356
+
357
+ <benev-header>
358
+ <a href="https://benev.gg/">benev.gg</a>
359
+ </benev-header>
360
+
361
+ <benev-loader>
362
+ <main benev-slice>
363
+ <h1>benev</h1>
364
+ <button class=testloader>test loader</button>
365
+ </main>
366
+ </benev-loader>
367
+ </body>
368
+ </html>
@@ -0,0 +1,2 @@
1
+ declare const _default: import("@e280/scute").TemplateFn;
2
+ export default _default;
@@ -0,0 +1,43 @@
1
+ import { template, html, socialCard, dataSvgEmoji } from "@e280/scute";
2
+ import { benevCssText } from "./css/benev.csstext.js";
3
+ export default template(import.meta.url, async (orb) => html `
4
+ <!doctype html>
5
+ <html benev>
6
+ <head>
7
+ <meta charset="utf-8"/>
8
+ <meta name="viewport" content="width=device-width,initial-scale=1"/>
9
+ <meta name="darkreader-lock"/>
10
+
11
+ <title>@benev/web</title>
12
+ <link rel="icon" href="${dataSvgEmoji("😇")}"/>
13
+ <script type="module" src="${orb.hashurl("main.bundle.min.js")}"></script>
14
+ <style>
15
+ @layer benev, demo;
16
+ ${html.raw(benevCssText)}
17
+ ${orb.inject("css/demo.css")}
18
+ </style>
19
+
20
+ ${socialCard({
21
+ themeColor: "#ffdd22",
22
+ siteName: "@benev/web",
23
+ title: "@benev/web",
24
+ description: "benev web ui library",
25
+ })}
26
+ </head>
27
+ <body>
28
+ <benev-menu></benev-menu>
29
+
30
+ <benev-header>
31
+ <a href="https://benev.gg/">benev.gg</a>
32
+ </benev-header>
33
+
34
+ <benev-loader>
35
+ <main benev-slice>
36
+ <h1>benev</h1>
37
+ <button class=testloader>test loader</button>
38
+ </main>
39
+ </benev-loader>
40
+ </body>
41
+ </html>
42
+ `);
43
+ //# sourceMappingURL=index.html.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.html.js","sourceRoot":"","sources":["../s/index.html.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,EAAC,MAAM,aAAa,CAAA;AACpE,OAAO,EAAC,YAAY,EAAC,MAAM,wBAAwB,CAAA;AAEnD,eAAe,QAAQ,CAAC,OAAO,IAAI,CAAC,GAAG,EAAE,KAAK,EAAC,GAAG,EAAC,EAAE,CAAC,IAAI,CAAA;;;;;;;;;4BAS9B,YAAY,CAAC,IAAI,CAAC;gCACd,GAAG,CAAC,OAAO,CAAC,oBAAoB,CAAC;;;MAG3D,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;MACtB,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC;;;KAG3B,UAAU,CAAC;IACZ,UAAU,EAAE,SAAS;IACrB,QAAQ,EAAE,YAAY;IACtB,KAAK,EAAE,YAAY;IACnB,WAAW,EAAE,sBAAsB;CACnC,CAAC;;;;;;;;;;;;;;;;;CAiBJ,CAAC,CAAA"}
package/x/index.js 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 "./consts.js";
10
+ //# sourceMappingURL=index.js.map
package/x/index.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../s/index.ts"],"names":[],"mappings":"AACA,cAAc,mBAAmB,CAAA;AACjC,cAAc,mBAAmB,CAAA;AAEjC,cAAc,wBAAwB,CAAA;AACtC,cAAc,oBAAoB,CAAA;AAElC,cAAc,sBAAsB,CAAA;AACpC,cAAc,sBAAsB,CAAA;AACpC,cAAc,wBAAwB,CAAA;AACtC,cAAc,oBAAoB,CAAA;AAElC,cAAc,aAAa,CAAA"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,12 @@
1
+ import { html } from "lit";
2
+ import { dom } from "@e280/sly";
3
+ import { nap } from "@e280/stz";
4
+ import { setupBenev } from "./vitals/setup.js";
5
+ import { Loader } from "./dom/loader/loader.js";
6
+ const { elements } = await setupBenev();
7
+ dom.register(elements);
8
+ const loader = new Loader(dom("benev-loader"));
9
+ dom(".testloader").onclick = async () => {
10
+ await loader.load(() => "loading...", async () => nap(1000).then(() => html `<main benev-slice>new content</main>`));
11
+ };
12
+ //# sourceMappingURL=main.bundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.bundle.js","sourceRoot":"","sources":["../s/main.bundle.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,IAAI,EAAC,MAAM,KAAK,CAAA;AACxB,OAAO,EAAC,GAAG,EAAC,MAAM,WAAW,CAAA;AAC7B,OAAO,EAAC,GAAG,EAAC,MAAM,WAAW,CAAA;AAC7B,OAAO,EAAC,UAAU,EAAC,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAC,MAAM,EAAC,MAAM,wBAAwB,CAAA;AAE7C,MAAM,EAAC,QAAQ,EAAC,GAAG,MAAM,UAAU,EAAE,CAAA;AACrC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;AAEtB,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAA;AAE9C,GAAG,CAAC,aAAa,CAAC,CAAC,OAAO,GAAG,KAAK,IAAG,EAAE;IACtC,MAAM,MAAM,CAAC,IAAI,CAChB,GAAG,EAAE,CAAC,YAAY,EAClB,KAAK,IAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAA,sCAAsC,CAAC,CAC3E,CAAA;AACF,CAAC,CAAA"}