@e280/shiny 0.1.0-2 → 0.1.0-21
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 +51 -63
- package/package.json +19 -26
- package/s/_archive/components/button/component.ts +30 -0
- package/s/_archive/components/button/showcase.ts +119 -0
- package/s/_archive/components/button/style.css.ts +63 -0
- package/s/{ui → _archive/components}/copy/component.ts +12 -5
- package/s/_archive/components/copy/showcase.ts +51 -0
- package/s/{ui → _archive/components}/copy/style.css.ts +6 -6
- package/s/_archive/components/drawer/component.ts +90 -0
- package/s/_archive/components/drawer/control.ts +31 -0
- package/s/_archive/components/drawer/showcase.ts +111 -0
- package/s/_archive/components/drawer/style.css.ts +127 -0
- package/s/{ui → _archive/components}/example/component.ts +6 -4
- package/s/_archive/components/example/showcase.ts +32 -0
- package/s/{ui → _archive/components}/example/style.css.ts +2 -2
- package/s/_archive/components/foundation.css.ts +15 -0
- package/s/{ui → _archive/components}/framework.ts +1 -2
- package/s/_archive/components/raw-components.ts +15 -0
- package/s/_archive/components/tabs/component.ts +70 -0
- package/s/_archive/components/tabs/control.ts +31 -0
- package/s/_archive/components/tabs/showcase.ts +171 -0
- package/s/_archive/components/tabs/style.css.ts +46 -0
- package/s/_archive/demo/demo.bundle.ts +47 -0
- package/s/{demo → _archive/demo}/demo.css +1 -0
- package/s/_archive/demo/lipsum.ts +6 -0
- package/s/_archive/demo/utils/lipsum.ts +19 -0
- package/s/_archive/demo/views/exhibit/style.css.ts +85 -0
- package/s/_archive/demo/views/exhibit/view.ts +61 -0
- package/s/_archive/demo/views/showcase/style.css.ts +53 -0
- package/s/_archive/demo/views/showcase/view.ts +54 -0
- package/s/_archive/demo/viewsets.ts +12 -0
- package/s/_archive/index.html.ts +34 -0
- package/s/_archive/index.ts +19 -0
- package/s/_archive/install/aura.bundle.ts +9 -0
- package/s/_archive/install/plain.bundle.ts +9 -0
- package/s/{shiny.ts → _archive/shiny.ts} +2 -2
- package/s/_archive/themes/aura.css.ts +86 -0
- package/s/_archive/themes/index.barrel.ts +4 -0
- package/s/{themes → _archive/themes}/index.ts +1 -0
- package/s/_archive/themes/infra/css-vars.ts +46 -0
- package/s/_archive/themes/plain.css.ts +11 -0
- package/s/_archive/utils/states.ts +15 -0
- package/s/demo/globals.d.ts +3 -0
- package/s/demo/main.bundle.ts +16 -0
- package/s/demo/main.css +71 -0
- package/s/demo/parts/exhibit.ts +15 -0
- package/s/demo/utils/lipsum.ts +19 -0
- package/s/demo/views/codebox/style.css.ts +45 -0
- package/s/demo/views/codebox/use-prism-styles.ts +13 -0
- package/s/demo/views/codebox/view.ts +39 -0
- package/s/demo/views/showcase/style.css.ts +80 -0
- package/s/demo/views/showcase/view.ts +50 -0
- package/s/demo/views/stylebox/view.ts +21 -0
- package/s/icons/tabler/menu-2.svg.ts +4 -0
- package/s/icons/tabler/x.svg.ts +4 -0
- package/s/index.html.ts +42 -32
- package/s/index.ts +6 -7
- package/s/test.ts +5 -0
- package/s/theme/parts/core.ts +34 -0
- package/s/theme/parts/reset.ts +20 -0
- package/s/theme/parts/vars.ts +41 -0
- package/s/theme/theme-string.ts +15 -0
- package/s/theme/theme.css.ts +7 -0
- package/s/utils/states.ts +15 -0
- package/s/views/button/showcase.ts +43 -0
- package/s/views/button/style.css.ts +110 -0
- package/s/views/button/view.ts +32 -0
- package/s/views/copy/parts/copy-status.ts +3 -0
- package/s/views/copy/parts/determine-base-status.ts +7 -0
- package/s/views/copy/parts/use-copier.ts +20 -0
- package/s/views/copy/showcase.ts +54 -0
- package/s/views/copy/style.css.ts +51 -0
- package/s/views/copy/view.ts +60 -0
- package/s/views/drawer/control.ts +31 -0
- package/s/views/drawer/showcase.ts +83 -0
- package/s/views/drawer/style.css.ts +128 -0
- package/s/views/drawer/view.ts +76 -0
- package/s/views/tabs/control.ts +31 -0
- package/s/views/tabs/showcase.ts +89 -0
- package/s/views/tabs/style.css.ts +46 -0
- package/s/views/tabs/view.ts +66 -0
- package/x/{demo → _archive/demo}/demo.css +1 -0
- package/x/demo/main.bundle.js +13 -0
- package/x/demo/main.bundle.js.map +1 -0
- package/x/demo/main.bundle.min.js +811 -0
- package/x/demo/main.bundle.min.js.map +7 -0
- package/x/demo/main.css +71 -0
- package/x/demo/parts/exhibit.d.ts +11 -0
- package/x/demo/parts/exhibit.js +2 -0
- package/x/demo/parts/exhibit.js.map +1 -0
- package/x/demo/utils/lipsum.d.ts +2 -0
- package/x/demo/utils/lipsum.js +11 -0
- package/x/demo/utils/lipsum.js.map +1 -0
- package/x/demo/views/codebox/style.css.js +44 -0
- package/x/demo/views/codebox/style.css.js.map +1 -0
- package/x/demo/views/codebox/use-prism-styles.d.ts +1 -0
- package/x/demo/views/codebox/use-prism-styles.js +12 -0
- package/x/demo/views/codebox/use-prism-styles.js.map +1 -0
- package/x/demo/views/codebox/view.d.ts +2 -0
- package/x/demo/views/codebox/view.js +29 -0
- package/x/demo/views/codebox/view.js.map +1 -0
- package/x/demo/views/showcase/style.css.js +79 -0
- package/x/demo/views/showcase/style.css.js.map +1 -0
- package/x/demo/views/showcase/view.d.ts +2 -0
- package/x/demo/views/showcase/view.js +44 -0
- package/x/demo/views/showcase/view.js.map +1 -0
- package/x/demo/views/stylebox/view.d.ts +3 -0
- package/x/demo/views/stylebox/view.js +13 -0
- package/x/demo/views/stylebox/view.js.map +1 -0
- package/x/icons/tabler/menu-2.svg.d.ts +2 -0
- package/x/icons/tabler/menu-2.svg.js +3 -0
- package/x/icons/tabler/menu-2.svg.js.map +1 -0
- package/x/icons/tabler/x.svg.d.ts +2 -0
- package/x/icons/tabler/x.svg.js +3 -0
- package/x/icons/tabler/x.svg.js.map +1 -0
- package/x/index.d.ts +6 -5
- package/x/index.html +212 -61
- package/x/index.html.js +40 -29
- package/x/index.html.js.map +1 -1
- package/x/index.js +6 -5
- package/x/index.js.map +1 -1
- package/x/test.js +3 -0
- package/x/test.js.map +1 -0
- package/x/theme/parts/core.d.ts +1 -0
- package/x/theme/parts/core.js +33 -0
- package/x/theme/parts/core.js.map +1 -0
- package/x/theme/parts/reset.d.ts +1 -0
- package/x/theme/parts/reset.js +19 -0
- package/x/theme/parts/reset.js.map +1 -0
- package/x/theme/parts/vars.d.ts +1 -0
- package/x/theme/parts/vars.js +34 -0
- package/x/theme/parts/vars.js.map +1 -0
- package/x/theme/theme-string.d.ts +1 -0
- package/x/theme/theme-string.js +14 -0
- package/x/theme/theme-string.js.map +1 -0
- package/x/theme/theme.css.d.ts +1 -0
- package/x/theme/theme.css.js +4 -0
- package/x/theme/theme.css.js.map +1 -0
- package/x/utils/states.d.ts +5 -0
- package/x/utils/states.js +13 -0
- package/x/utils/states.js.map +1 -0
- package/x/views/button/showcase.d.ts +1 -0
- package/x/views/button/showcase.js +41 -0
- package/x/views/button/showcase.js.map +1 -0
- package/x/views/button/style.css.js +109 -0
- package/x/views/button/style.css.js.map +1 -0
- package/x/views/button/view.d.ts +5 -0
- package/x/views/button/view.js +23 -0
- package/x/views/button/view.js.map +1 -0
- package/x/views/copy/parts/copy-status.d.ts +1 -0
- package/x/views/copy/parts/copy-status.js +2 -0
- package/x/views/copy/parts/copy-status.js.map +1 -0
- package/x/views/copy/parts/determine-base-status.d.ts +1 -0
- package/x/views/copy/parts/determine-base-status.js +6 -0
- package/x/views/copy/parts/determine-base-status.js.map +1 -0
- package/x/views/copy/parts/use-copier.d.ts +6 -0
- package/x/views/copy/parts/use-copier.js +13 -0
- package/x/views/copy/parts/use-copier.js.map +1 -0
- package/x/views/copy/showcase.d.ts +1 -0
- package/x/views/copy/showcase.js +51 -0
- package/x/views/copy/showcase.js.map +1 -0
- package/x/views/copy/style.css.d.ts +2 -0
- package/x/{ui → views}/copy/style.css.js +14 -9
- package/x/views/copy/style.css.js.map +1 -0
- package/x/views/copy/view.d.ts +4 -0
- package/x/views/copy/view.js +49 -0
- package/x/views/copy/view.js.map +1 -0
- package/x/views/drawer/control.d.ts +9 -0
- package/x/views/drawer/control.js +24 -0
- package/x/views/drawer/control.js.map +1 -0
- package/x/views/drawer/showcase.d.ts +1 -0
- package/x/views/drawer/showcase.js +75 -0
- package/x/views/drawer/showcase.js.map +1 -0
- package/x/views/drawer/style.css.d.ts +2 -0
- package/x/views/drawer/style.css.js +127 -0
- package/x/views/drawer/style.css.js.map +1 -0
- package/x/views/drawer/view.d.ts +6 -0
- package/x/views/drawer/view.js +60 -0
- package/x/views/drawer/view.js.map +1 -0
- package/x/views/tabs/control.d.ts +9 -0
- package/x/views/tabs/control.js +24 -0
- package/x/views/tabs/control.js.map +1 -0
- package/x/views/tabs/showcase.d.ts +1 -0
- package/x/views/tabs/showcase.js +86 -0
- package/x/views/tabs/showcase.js.map +1 -0
- package/x/views/tabs/style.css.d.ts +2 -0
- package/x/views/tabs/style.css.js +45 -0
- package/x/views/tabs/style.css.js.map +1 -0
- package/x/views/tabs/view.d.ts +5 -0
- package/x/views/tabs/view.js +52 -0
- package/x/views/tabs/view.js.map +1 -0
- package/s/demo/demo.bundle.ts +0 -42
- package/s/demo/views/demonstration/style.css.ts +0 -108
- package/s/demo/views/demonstration/view.ts +0 -49
- package/s/install.bundle.ts +0 -9
- package/s/themes/basic.css.ts +0 -18
- package/s/themes/index.barrel.ts +0 -3
- package/s/ui/raw-components.ts +0 -9
- package/x/demo/demo.bundle.js +0 -37
- package/x/demo/demo.bundle.js.map +0 -1
- package/x/demo/demo.bundle.min.js +0 -277
- package/x/demo/demo.bundle.min.js.map +0 -7
- package/x/demo/views/demonstration/style.css.js +0 -107
- package/x/demo/views/demonstration/style.css.js.map +0 -1
- package/x/demo/views/demonstration/view.d.ts +0 -10
- package/x/demo/views/demonstration/view.js +0 -36
- package/x/demo/views/demonstration/view.js.map +0 -1
- package/x/install.bundle.js +0 -5
- package/x/install.bundle.js.map +0 -1
- package/x/install.bundle.min.js +0 -135
- package/x/install.bundle.min.js.map +0 -7
- package/x/shiny.d.ts +0 -14
- package/x/shiny.js +0 -8
- package/x/shiny.js.map +0 -1
- package/x/tests.test.d.ts +0 -1
- package/x/tests.test.js +0 -3
- package/x/tests.test.js.map +0 -1
- package/x/themes/basic.css.d.ts +0 -1
- package/x/themes/basic.css.js +0 -17
- package/x/themes/basic.css.js.map +0 -1
- package/x/themes/index.barrel.d.ts +0 -1
- package/x/themes/index.barrel.js +0 -2
- package/x/themes/index.barrel.js.map +0 -1
- package/x/themes/index.d.ts +0 -1
- package/x/themes/index.js +0 -2
- package/x/themes/index.js.map +0 -1
- package/x/ui/copy/component.d.ts +0 -372
- package/x/ui/copy/component.js +0 -56
- package/x/ui/copy/component.js.map +0 -1
- package/x/ui/copy/style.css.js.map +0 -1
- package/x/ui/example/component.d.ts +0 -371
- package/x/ui/example/component.js +0 -20
- package/x/ui/example/component.js.map +0 -1
- package/x/ui/example/style.css.js +0 -10
- package/x/ui/example/style.css.js.map +0 -1
- package/x/ui/framework.d.ts +0 -8
- package/x/ui/framework.js +0 -6
- package/x/ui/framework.js.map +0 -1
- package/x/ui/raw-components.d.ts +0 -6
- package/x/ui/raw-components.js +0 -7
- package/x/ui/raw-components.js.map +0 -1
- /package/s/{tests.test.ts → _archive/tests.test.ts} +0 -0
- /package/x/demo/{demo.bundle.d.ts → main.bundle.d.ts} +0 -0
- /package/x/demo/views/{demonstration → codebox}/style.css.d.ts +0 -0
- /package/x/{ui/copy → demo/views/showcase}/style.css.d.ts +0 -0
- /package/x/{install.bundle.d.ts → test.d.ts} +0 -0
- /package/x/{ui/example → views/button}/style.css.d.ts +0 -0
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { html } from "lit";
|
|
2
|
+
import { dom, shadow, useAttrs, useCss, useHost, useMount, useName, useOnce } from "@e280/sly";
|
|
3
|
+
import styleCss from "./style.css.js";
|
|
4
|
+
import { themeCss } from "../../theme/theme.css.js";
|
|
5
|
+
import { DrawerControl } from "./control.js";
|
|
6
|
+
import { States } from "../../utils/states.js";
|
|
7
|
+
import xSvg from "../../icons/tabler/x.svg.js";
|
|
8
|
+
import menu2Svg from "../../icons/tabler/menu-2.svg.js";
|
|
9
|
+
export const ShinyDrawer = shadow((options = {}) => {
|
|
10
|
+
useName("shiny-drawer");
|
|
11
|
+
useCss(themeCss, styleCss);
|
|
12
|
+
const host = useHost();
|
|
13
|
+
const states = useOnce(() => new States(host));
|
|
14
|
+
const control = useOnce(() => (options.control ?? new DrawerControl()));
|
|
15
|
+
const attrs = useAttrs({
|
|
16
|
+
side: String,
|
|
17
|
+
button: Boolean,
|
|
18
|
+
open: Boolean,
|
|
19
|
+
});
|
|
20
|
+
attrs.open = control.isOpen;
|
|
21
|
+
const button = options.button ?? attrs.button;
|
|
22
|
+
const side = options.side ?? (attrs.side === "right" ? "right" : "left");
|
|
23
|
+
states.assign(side, control.isOpen ? "opened" : "closed");
|
|
24
|
+
useMount(() => dom.events(window, { keydown: (event) => {
|
|
25
|
+
if (event.code === "Escape")
|
|
26
|
+
control.close();
|
|
27
|
+
} }));
|
|
28
|
+
function renderButton() {
|
|
29
|
+
return html `
|
|
30
|
+
<button part=button @click="${control.toggle}">
|
|
31
|
+
${control.isOpen
|
|
32
|
+
? html `
|
|
33
|
+
<slot name=button-x>
|
|
34
|
+
${xSvg}
|
|
35
|
+
</slot>
|
|
36
|
+
`
|
|
37
|
+
: html `
|
|
38
|
+
<slot name=button>
|
|
39
|
+
${menu2Svg}
|
|
40
|
+
</slot>
|
|
41
|
+
`}
|
|
42
|
+
</button>
|
|
43
|
+
`;
|
|
44
|
+
}
|
|
45
|
+
return html `
|
|
46
|
+
<div class=shell ?data-open="${control.isOpen}" data-side="${side}">
|
|
47
|
+
<slot name=plate ?inert="${control.isOpen}"></slot>
|
|
48
|
+
|
|
49
|
+
<div class=clipper>
|
|
50
|
+
<div part=blanket @click="${control.close}" ?inert="${!control.isOpen}"></div>
|
|
51
|
+
|
|
52
|
+
<div part=tray>
|
|
53
|
+
<slot part=slate ?inert="${!control.isOpen}"></slot>
|
|
54
|
+
${button ? renderButton() : null}
|
|
55
|
+
</div>
|
|
56
|
+
</div>
|
|
57
|
+
</div>
|
|
58
|
+
`;
|
|
59
|
+
});
|
|
60
|
+
//# sourceMappingURL=view.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"view.js","sourceRoot":"","sources":["../../../s/views/drawer/view.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,IAAI,EAAC,MAAM,KAAK,CAAA;AACxB,OAAO,EAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAC,MAAM,WAAW,CAAA;AAE5F,OAAO,QAAQ,MAAM,gBAAgB,CAAA;AAErC,OAAO,EAAC,QAAQ,EAAC,MAAM,0BAA0B,CAAA;AACjD,OAAO,EAAC,aAAa,EAAC,MAAM,cAAc,CAAA;AAC1C,OAAO,EAAC,MAAM,EAAC,MAAM,uBAAuB,CAAA;AAC5C,OAAO,IAAI,MAAM,6BAA6B,CAAA;AAC9C,OAAO,QAAQ,MAAM,kCAAkC,CAAA;AAEvD,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,UAI9B,EAAE,EAAE,EAAE;IAEV,OAAO,CAAC,cAAc,CAAC,CAAA;IACvB,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;IAE1B,MAAM,IAAI,GAAG,OAAO,EAAE,CAAA;IACtB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;IAC9C,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,aAAa,EAAE,CAAC,CAAC,CAAA;IAEvE,MAAM,KAAK,GAAG,QAAQ,CAAC;QACtB,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,OAAO;QACf,IAAI,EAAE,OAAO;KACb,CAAC,CAAA;IAEF,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAA;IAE3B,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAA;IAC7C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;IACxE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAA;IAEzD,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,EAAC,OAAO,EAAE,CAAC,KAAoB,EAAE,EAAE;YACpE,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ;gBAC1B,OAAO,CAAC,KAAK,EAAE,CAAA;QACjB,CAAC,EAAC,CAAC,CAAC,CAAA;IAEJ,SAAS,YAAY;QACpB,OAAO,IAAI,CAAA;iCACoB,OAAO,CAAC,MAAM;MACzC,OAAO,CAAC,MAAM;YACf,CAAC,CAAC,IAAI,CAAA;;SAEF,IAAI;;MAEP;YACD,CAAC,CAAC,IAAI,CAAA;;SAEF,QAAQ;;MAEX;;GAEH,CAAA;IACF,CAAC;IAED,OAAO,IAAI,CAAA;iCACqB,OAAO,CAAC,MAAM,gBAAgB,IAAI;8BACrC,OAAO,CAAC,MAAM;;;gCAGZ,OAAO,CAAC,KAAK,aAAa,CAAC,OAAO,CAAC,MAAM;;;gCAGzC,CAAC,OAAO,CAAC,MAAM;OACxC,MAAM,CAAC,CAAC,CAAA,YAAY,EAAE,CAAC,CAAC,CAAA,IAAI;;;;EAIjC,CAAA;AACF,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare class TabsControl {
|
|
2
|
+
length: number;
|
|
3
|
+
$index: import("@e280/strata").Signal<number>;
|
|
4
|
+
constructor(start?: number);
|
|
5
|
+
clamp(index: number): number;
|
|
6
|
+
get index(): number;
|
|
7
|
+
setIndex(index: number): Promise<number>;
|
|
8
|
+
shimmy(delta: number): Promise<number>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { signal } from "@e280/strata";
|
|
2
|
+
export class TabsControl {
|
|
3
|
+
length = 1;
|
|
4
|
+
$index = signal(0);
|
|
5
|
+
constructor(start = 0) {
|
|
6
|
+
this.$index.value = start;
|
|
7
|
+
}
|
|
8
|
+
clamp(index) {
|
|
9
|
+
index = Math.min(index, this.length - 1);
|
|
10
|
+
index = Math.max(index, 0);
|
|
11
|
+
return index;
|
|
12
|
+
}
|
|
13
|
+
get index() {
|
|
14
|
+
return this.clamp(this.$index());
|
|
15
|
+
}
|
|
16
|
+
async setIndex(index) {
|
|
17
|
+
return this.$index(index);
|
|
18
|
+
}
|
|
19
|
+
async shimmy(delta) {
|
|
20
|
+
const index = this.clamp(this.index + delta);
|
|
21
|
+
return this.setIndex(index);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=control.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"control.js","sourceRoot":"","sources":["../../../s/views/tabs/control.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,MAAM,EAAC,MAAM,cAAc,CAAA;AAEnC,MAAM,OAAO,WAAW;IACvB,MAAM,GAAG,CAAC,CAAA;IACV,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;IAElB,YAAY,KAAK,GAAG,CAAC;QACpB,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAA;IAC1B,CAAC;IAED,KAAK,CAAC,KAAa;QAClB,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;QACxC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;QAC1B,OAAO,KAAK,CAAA;IACb,CAAC;IAED,IAAI,KAAK;QACR,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;IACjC,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,KAAa;QAC3B,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAC1B,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAa;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,CAAA;QAC5C,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC5B,CAAC;CACD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const tabsShowcase: () => import("@e280/sly").Content;
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { css, html } from "lit";
|
|
2
|
+
import { ShinyTabs } from "./view.js";
|
|
3
|
+
import { ShinyButton } from "../button/view.js";
|
|
4
|
+
import { lipsum } from "../../demo/utils/lipsum.js";
|
|
5
|
+
import { exhibit } from "../../demo/parts/exhibit.js";
|
|
6
|
+
import { Showcase } from "../../demo/views/showcase/view.js";
|
|
7
|
+
export const tabsShowcase = () => Showcase("ShinyTabs", [
|
|
8
|
+
exhibit({
|
|
9
|
+
name: "shiny",
|
|
10
|
+
explain: "a button-bar of mutually-exclusive tabs. panels are optional.",
|
|
11
|
+
render: () => ShinyTabs.with({
|
|
12
|
+
props: [{ snug: true }],
|
|
13
|
+
children: html `
|
|
14
|
+
${ShinyButton("alpha")}
|
|
15
|
+
${ShinyButton("bravo")}
|
|
16
|
+
${ShinyButton("charlie")}
|
|
17
|
+
<p slot=panel>${lipsum.takeFirst()}</p>
|
|
18
|
+
<p slot=panel>${lipsum.takeFirst()}</p>
|
|
19
|
+
<p slot=panel>${lipsum.takeFirst()}</p>
|
|
20
|
+
`,
|
|
21
|
+
}),
|
|
22
|
+
styleboxCss: css `
|
|
23
|
+
[view="shiny-button"] { font-size: 1.2em; }
|
|
24
|
+
p { margin-top: var(--padding); }
|
|
25
|
+
`,
|
|
26
|
+
js: `
|
|
27
|
+
ShinyTabs.with({
|
|
28
|
+
props: [{snug: true}],
|
|
29
|
+
children: html\`
|
|
30
|
+
\${ShinyButton("alpha")}
|
|
31
|
+
\${ShinyButton("bravo")}
|
|
32
|
+
\${ShinyButton("charlie")}
|
|
33
|
+
<p slot=panel>lorem kettlebell..</p>
|
|
34
|
+
<p slot=panel>lorem protein..</p>
|
|
35
|
+
<p slot=panel>lorem caffeine..</p>
|
|
36
|
+
\`,
|
|
37
|
+
})
|
|
38
|
+
`,
|
|
39
|
+
css: css `
|
|
40
|
+
[view="shiny-tabs"] {
|
|
41
|
+
--shiny-rounded: 0.5em;
|
|
42
|
+
}
|
|
43
|
+
`,
|
|
44
|
+
}),
|
|
45
|
+
exhibit({
|
|
46
|
+
name: "plain",
|
|
47
|
+
explain: "a button-bar of mutually-exclusive tabs. panels are optional.",
|
|
48
|
+
render: () => ShinyTabs.with({
|
|
49
|
+
props: [{ snug: true }],
|
|
50
|
+
children: html `
|
|
51
|
+
<button>alpha</button>
|
|
52
|
+
<button>bravo</button>
|
|
53
|
+
<button>charlie</button>
|
|
54
|
+
<p slot=panel>${lipsum.takeFirst()}</p>
|
|
55
|
+
<p slot=panel>${lipsum.takeFirst()}</p>
|
|
56
|
+
<p slot=panel>${lipsum.takeFirst()}</p>
|
|
57
|
+
`,
|
|
58
|
+
}),
|
|
59
|
+
styleboxCss: css `
|
|
60
|
+
p { margin-top: var(--padding); }
|
|
61
|
+
button {
|
|
62
|
+
font-size: 1.5em;
|
|
63
|
+
padding: calc(var(--padding) / 2);
|
|
64
|
+
}
|
|
65
|
+
`,
|
|
66
|
+
js: `
|
|
67
|
+
ShinyTabs.with({
|
|
68
|
+
props: [{snug: true}],
|
|
69
|
+
children: html\`
|
|
70
|
+
<button>alpha</button>
|
|
71
|
+
<button>bravo</button>
|
|
72
|
+
<button>charlie</button>
|
|
73
|
+
<p slot=panel>lorem kettlebell..</p>
|
|
74
|
+
<p slot=panel>lorem protein..</p>
|
|
75
|
+
<p slot=panel>lorem caffeine..</p>
|
|
76
|
+
\`,
|
|
77
|
+
})
|
|
78
|
+
`,
|
|
79
|
+
css: css `
|
|
80
|
+
[view="shiny-tabs"] {
|
|
81
|
+
--shiny-rounded: 0.5em;
|
|
82
|
+
}
|
|
83
|
+
`,
|
|
84
|
+
}),
|
|
85
|
+
]);
|
|
86
|
+
//# sourceMappingURL=showcase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"showcase.js","sourceRoot":"","sources":["../../../s/views/tabs/showcase.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,GAAG,EAAE,IAAI,EAAC,MAAM,KAAK,CAAA;AAC7B,OAAO,EAAC,SAAS,EAAC,MAAM,WAAW,CAAA;AACnC,OAAO,EAAC,WAAW,EAAC,MAAM,mBAAmB,CAAA;AAC7C,OAAO,EAAC,MAAM,EAAC,MAAM,4BAA4B,CAAA;AACjD,OAAO,EAAC,OAAO,EAAC,MAAM,6BAA6B,CAAA;AACnD,OAAO,EAAC,QAAQ,EAAC,MAAM,mCAAmC,CAAA;AAE1D,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE;IACvD,OAAO,CAAC;QACP,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,+DAA+D;QACxE,MAAM,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC;YAC5B,KAAK,EAAE,CAAC,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC;YACrB,QAAQ,EAAE,IAAI,CAAA;MACX,WAAW,CAAC,OAAO,CAAC;MACpB,WAAW,CAAC,OAAO,CAAC;MACpB,WAAW,CAAC,SAAS,CAAC;oBACR,MAAM,CAAC,SAAS,EAAE;oBAClB,MAAM,CAAC,SAAS,EAAE;oBAClB,MAAM,CAAC,SAAS,EAAE;IAClC;SACD,CAAC;QACF,WAAW,EAAE,GAAG,CAAA;;;GAGf;QACD,EAAE,EAAE;;;;;;;;;;;;GAYH;QACD,GAAG,EAAE,GAAG,CAAA;;;;GAIP;KACD,CAAC;IAEF,OAAO,CAAC;QACP,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,+DAA+D;QACxE,MAAM,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC;YAC5B,KAAK,EAAE,CAAC,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC;YACrB,QAAQ,EAAE,IAAI,CAAA;;;;oBAIG,MAAM,CAAC,SAAS,EAAE;oBAClB,MAAM,CAAC,SAAS,EAAE;oBAClB,MAAM,CAAC,SAAS,EAAE;IAClC;SACD,CAAC;QACF,WAAW,EAAE,GAAG,CAAA;;;;;;GAMf;QACD,EAAE,EAAE;;;;;;;;;;;;GAYH;QACD,GAAG,EAAE,GAAG,CAAA;;;;GAIP;KACD,CAAC;CACF,CAAC,CAAA"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { css } from "lit";
|
|
2
|
+
export default css `@layer view {
|
|
3
|
+
|
|
4
|
+
:host {
|
|
5
|
+
display: inline-flex;
|
|
6
|
+
flex-direction: column;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
slot[part="tabs"] {
|
|
10
|
+
display: flex;
|
|
11
|
+
flex-wrap: wrap;
|
|
12
|
+
|
|
13
|
+
&::slotted([data-tabbed]) {
|
|
14
|
+
opacity: 1;
|
|
15
|
+
color: currentColor;
|
|
16
|
+
text-decoration: underline;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
slot[part="tabs"][data-snug] {
|
|
21
|
+
&::slotted(*) {
|
|
22
|
+
border-radius: var(--rounded);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
&::slotted(:not([data-last], [data-next-is-tabbed])) {
|
|
26
|
+
border-right: none;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
&::slotted([data-tabbed]:not([data-first])) {
|
|
30
|
+
border-left: none;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
&::slotted(:not([data-last])) {
|
|
34
|
+
border-top-right-radius: 0;
|
|
35
|
+
border-bottom-right-radius: 0;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
&::slotted(:not([data-first])) {
|
|
39
|
+
border-top-left-radius: 0;
|
|
40
|
+
border-bottom-left-radius: 0;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
} `;
|
|
45
|
+
//# sourceMappingURL=style.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"style.css.js","sourceRoot":"","sources":["../../../s/views/tabs/style.css.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,GAAG,EAAC,MAAM,KAAK,CAAA;AACvB,eAAe,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0Cf,CAAA"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { html } from "lit";
|
|
2
|
+
import { dom, shadow, useHost, useName, useOnce, useSignal, useStyles } from "@e280/sly";
|
|
3
|
+
import styleCss from "./style.css.js";
|
|
4
|
+
import { TabsControl } from "./control.js";
|
|
5
|
+
import { themeCss } from "../../theme/theme.css.js";
|
|
6
|
+
export const ShinyTabs = shadow((options = {}) => {
|
|
7
|
+
useName("shiny-tabs");
|
|
8
|
+
useStyles(themeCss, styleCss);
|
|
9
|
+
const host = useHost();
|
|
10
|
+
const attrs = useOnce(() => dom.attrs(host).spec({ index: Number }));
|
|
11
|
+
const control = useOnce(() => options.control ?? new TabsControl(attrs.index ?? 0));
|
|
12
|
+
const $tabs = useSignal([]);
|
|
13
|
+
const $panels = useSignal([]);
|
|
14
|
+
async function tabchange(event) {
|
|
15
|
+
const slot = event.currentTarget;
|
|
16
|
+
await $tabs.set(slot.assignedElements());
|
|
17
|
+
}
|
|
18
|
+
async function panelchange(event) {
|
|
19
|
+
const slot = event.currentTarget;
|
|
20
|
+
await $panels.set(slot.assignedElements());
|
|
21
|
+
}
|
|
22
|
+
attrs.index = control.$index();
|
|
23
|
+
control.length = $tabs().length;
|
|
24
|
+
function isNeighborActive(index, delta) {
|
|
25
|
+
const nextIndex = control.clamp(index + delta);
|
|
26
|
+
if (nextIndex === index)
|
|
27
|
+
return false;
|
|
28
|
+
return (nextIndex === control.index);
|
|
29
|
+
}
|
|
30
|
+
for (const [index, tab] of $tabs().entries()) {
|
|
31
|
+
const tabbed = (index === control.index);
|
|
32
|
+
const tabAttrs = dom.attrs(tab);
|
|
33
|
+
tabAttrs.booleans.disabled = tabbed;
|
|
34
|
+
tabAttrs.booleans["data-snug"] = options.snug;
|
|
35
|
+
tabAttrs.booleans["data-tabbed"] = tabbed;
|
|
36
|
+
tabAttrs.booleans["data-first"] = (index === 0);
|
|
37
|
+
tabAttrs.booleans["data-last"] = (index === (control.length - 1));
|
|
38
|
+
tabAttrs.booleans["data-next-is-tabbed"] = isNeighborActive(index, 1);
|
|
39
|
+
tabAttrs.booleans["data-previous-is-tabbed"] = isNeighborActive(index, -1);
|
|
40
|
+
tab.onclick = () => control.setIndex(index);
|
|
41
|
+
}
|
|
42
|
+
for (const [index, panel] of $panels().entries()) {
|
|
43
|
+
const tabbed = (index === control.index);
|
|
44
|
+
dom.attrs(panel).booleans["data-tabbed"] = tabbed;
|
|
45
|
+
dom.attrs(panel).booleans["hidden"] = !tabbed;
|
|
46
|
+
}
|
|
47
|
+
return html `
|
|
48
|
+
<slot part=tabs ?data-snug="${options.snug}" @slotchange="${tabchange}"></slot>
|
|
49
|
+
<slot part=panels name=panel @slotchange="${panelchange}"></slot>
|
|
50
|
+
`;
|
|
51
|
+
});
|
|
52
|
+
//# sourceMappingURL=view.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"view.js","sourceRoot":"","sources":["../../../s/views/tabs/view.ts"],"names":[],"mappings":"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"}
|
package/s/demo/demo.bundle.ts
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import {css, html} from "lit"
|
|
3
|
-
import {dom, view} from "@e280/sly"
|
|
4
|
-
import {shiny} from "../shiny.js"
|
|
5
|
-
import {basic} from "../themes/basic.css.js"
|
|
6
|
-
import {Demonstration} from "./views/demonstration/view.js"
|
|
7
|
-
|
|
8
|
-
const {views} = shiny({theme: basic})
|
|
9
|
-
|
|
10
|
-
dom.register({ShinyDemo: view.component(use => {
|
|
11
|
-
use.styles(css`
|
|
12
|
-
:host {
|
|
13
|
-
display: flex;
|
|
14
|
-
flex-direction: column;
|
|
15
|
-
gap: 1em;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
[view="shiny-copy"]::part(content) {
|
|
19
|
-
font-size: 4em;
|
|
20
|
-
}
|
|
21
|
-
`)
|
|
22
|
-
|
|
23
|
-
return [
|
|
24
|
-
Demonstration({
|
|
25
|
-
views,
|
|
26
|
-
name: "shiny-copy",
|
|
27
|
-
explain: html`
|
|
28
|
-
<p>button for click-to-copy text</p>
|
|
29
|
-
`,
|
|
30
|
-
exampleComponent: `
|
|
31
|
-
<shiny-copy text="hello world"></shiny-copy>
|
|
32
|
-
`,
|
|
33
|
-
exampleView: `
|
|
34
|
-
ShinyCopy("hello world")
|
|
35
|
-
`,
|
|
36
|
-
content: views.ShinyCopy("hello world"),
|
|
37
|
-
}),
|
|
38
|
-
]
|
|
39
|
-
})})
|
|
40
|
-
|
|
41
|
-
console.log("✨shiny")
|
|
42
|
-
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import {css} from "lit"
|
|
3
|
-
export default css`
|
|
4
|
-
|
|
5
|
-
:host {
|
|
6
|
-
position: relative;
|
|
7
|
-
|
|
8
|
-
display: flex;
|
|
9
|
-
flex-wrap: wrap;
|
|
10
|
-
|
|
11
|
-
padding: 1em;
|
|
12
|
-
border-radius: 0.5em;
|
|
13
|
-
gap: 1em;
|
|
14
|
-
|
|
15
|
-
background: linear-gradient(to right top, #252dd985, #aa6affbd);
|
|
16
|
-
backdrop-filter: blur(0.5em);
|
|
17
|
-
|
|
18
|
-
box-shadow: 0 0 5em #5d1fadaa;
|
|
19
|
-
border-top: 2px solid #fff4;
|
|
20
|
-
|
|
21
|
-
&::before {
|
|
22
|
-
content: "";
|
|
23
|
-
display: block;
|
|
24
|
-
position: absolute;
|
|
25
|
-
inset: 0;
|
|
26
|
-
border-radius: 0.5em;
|
|
27
|
-
background: #0007;
|
|
28
|
-
width: calc(100% - 0.3em);
|
|
29
|
-
height: calc(100% - 0.3em);
|
|
30
|
-
margin: auto;
|
|
31
|
-
z-index: 0;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
> * {
|
|
35
|
-
position: relative;
|
|
36
|
-
z-index: 1;
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
.meta {
|
|
41
|
-
flex: 1 1 10em;
|
|
42
|
-
display: flex;
|
|
43
|
-
flex-direction: column;
|
|
44
|
-
gap: 0.5em;
|
|
45
|
-
|
|
46
|
-
h2 {
|
|
47
|
-
color: var(--prime);
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
.codes {
|
|
51
|
-
display: flex;
|
|
52
|
-
flex-direction: column;
|
|
53
|
-
gap: 0.2em;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
.codeblock {
|
|
57
|
-
display: flex;
|
|
58
|
-
background: #0002;
|
|
59
|
-
border-radius: 0.3em;
|
|
60
|
-
border-bottom: 1px solid #fff2;
|
|
61
|
-
box-shadow: inset 0.2em 0.3em 2em #0004;
|
|
62
|
-
|
|
63
|
-
.zone {
|
|
64
|
-
flex: 1 1 auto;
|
|
65
|
-
display: flex;
|
|
66
|
-
flex-direction: column;
|
|
67
|
-
padding: 0.5em;
|
|
68
|
-
|
|
69
|
-
h3 {
|
|
70
|
-
opacity: 0.4;
|
|
71
|
-
font-size: 0.7em;
|
|
72
|
-
font-weight: normal;
|
|
73
|
-
font-style: italic;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
code {
|
|
77
|
-
display: block;
|
|
78
|
-
white-space: pre;
|
|
79
|
-
text-wrap: wrap;
|
|
80
|
-
tab-size: 2;
|
|
81
|
-
|
|
82
|
-
font-size: 0.8em;
|
|
83
|
-
font-family: monospace;
|
|
84
|
-
color: #8f8;
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
[view="shiny-copy"] {
|
|
89
|
-
flex: 0 0 0;
|
|
90
|
-
padding: 0.2em;
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
.content {
|
|
96
|
-
flex: 1 1 10rem;
|
|
97
|
-
display: flex;
|
|
98
|
-
flex-direction: column;
|
|
99
|
-
justify-content: center;
|
|
100
|
-
align-items: center;
|
|
101
|
-
|
|
102
|
-
padding: 1rem;
|
|
103
|
-
border-radius: 0.5rem;
|
|
104
|
-
border: 1px dashed #fff4;
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
`
|
|
108
|
-
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import {html} from "lit"
|
|
3
|
-
import {untab} from "@e280/stz"
|
|
4
|
-
import {Content, view} from "@e280/sly"
|
|
5
|
-
import styleCss from "./style.css.js"
|
|
6
|
-
import {ShinyViews} from "../../../shiny.js"
|
|
7
|
-
import {basic} from "../../../themes/basic.css.js"
|
|
8
|
-
|
|
9
|
-
export const Demonstration = view(use => (options: {
|
|
10
|
-
name: string
|
|
11
|
-
explain: Content
|
|
12
|
-
views: ShinyViews
|
|
13
|
-
exampleComponent: string
|
|
14
|
-
exampleView: string
|
|
15
|
-
content: Content
|
|
16
|
-
}) => {
|
|
17
|
-
|
|
18
|
-
use.name(options.name)
|
|
19
|
-
use.styles(basic, styleCss)
|
|
20
|
-
|
|
21
|
-
function codeblock(heading: string, code: string) {
|
|
22
|
-
const cleanCode = untab(code).trim()
|
|
23
|
-
return html`
|
|
24
|
-
<div class=codeblock>
|
|
25
|
-
<div class=zone>
|
|
26
|
-
<h3>${heading}</h3>
|
|
27
|
-
<code>${cleanCode}</code>
|
|
28
|
-
</div>
|
|
29
|
-
${options.views.ShinyCopy(cleanCode)}
|
|
30
|
-
</div>
|
|
31
|
-
`
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
return html`
|
|
35
|
-
<div class=meta>
|
|
36
|
-
<h2>✨ ${options.name}</h2>
|
|
37
|
-
<div class=explain>${options.explain}</div>
|
|
38
|
-
<div class=codes>
|
|
39
|
-
${codeblock("html web component", options.exampleComponent)}
|
|
40
|
-
${codeblock("sly view", options.exampleView)}
|
|
41
|
-
</div>
|
|
42
|
-
</div>
|
|
43
|
-
|
|
44
|
-
<div class=content part=content>
|
|
45
|
-
${options.content}
|
|
46
|
-
</div>
|
|
47
|
-
`
|
|
48
|
-
})
|
|
49
|
-
|
package/s/install.bundle.ts
DELETED
package/s/themes/basic.css.ts
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import {css} from "lit"
|
|
3
|
-
import {cssReset} from "@e280/sly"
|
|
4
|
-
export const basic = css`
|
|
5
|
-
|
|
6
|
-
${cssReset}
|
|
7
|
-
|
|
8
|
-
:host {
|
|
9
|
-
display: block;
|
|
10
|
-
--bg: var(--shiny-bg, #111);
|
|
11
|
-
--alpha: var(--shiny-alpha, #afa);
|
|
12
|
-
--good: var(--shiny-good, #0f4);
|
|
13
|
-
--bad: var(--shiny-bad, #f40);
|
|
14
|
-
--invalid: var(--shiny-invalid, #8888);
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
`
|
|
18
|
-
|
package/s/themes/index.barrel.ts
DELETED
package/s/ui/raw-components.ts
DELETED
package/x/demo/demo.bundle.js
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { css, html } from "lit";
|
|
2
|
-
import { dom, view } from "@e280/sly";
|
|
3
|
-
import { shiny } from "../shiny.js";
|
|
4
|
-
import { basic } from "../themes/basic.css.js";
|
|
5
|
-
import { Demonstration } from "./views/demonstration/view.js";
|
|
6
|
-
const { views } = shiny({ theme: basic });
|
|
7
|
-
dom.register({ ShinyDemo: view.component(use => {
|
|
8
|
-
use.styles(css `
|
|
9
|
-
:host {
|
|
10
|
-
display: flex;
|
|
11
|
-
flex-direction: column;
|
|
12
|
-
gap: 1em;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
[view="shiny-copy"]::part(content) {
|
|
16
|
-
font-size: 4em;
|
|
17
|
-
}
|
|
18
|
-
`);
|
|
19
|
-
return [
|
|
20
|
-
Demonstration({
|
|
21
|
-
views,
|
|
22
|
-
name: "shiny-copy",
|
|
23
|
-
explain: html `
|
|
24
|
-
<p>button for click-to-copy text</p>
|
|
25
|
-
`,
|
|
26
|
-
exampleComponent: `
|
|
27
|
-
<shiny-copy text="hello world"></shiny-copy>
|
|
28
|
-
`,
|
|
29
|
-
exampleView: `
|
|
30
|
-
ShinyCopy("hello world")
|
|
31
|
-
`,
|
|
32
|
-
content: views.ShinyCopy("hello world"),
|
|
33
|
-
}),
|
|
34
|
-
];
|
|
35
|
-
}) });
|
|
36
|
-
console.log("✨shiny");
|
|
37
|
-
//# sourceMappingURL=demo.bundle.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"demo.bundle.js","sourceRoot":"","sources":["../../s/demo/demo.bundle.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,GAAG,EAAE,IAAI,EAAC,MAAM,KAAK,CAAA;AAC7B,OAAO,EAAC,GAAG,EAAE,IAAI,EAAC,MAAM,WAAW,CAAA;AACnC,OAAO,EAAC,KAAK,EAAC,MAAM,aAAa,CAAA;AACjC,OAAO,EAAC,KAAK,EAAC,MAAM,wBAAwB,CAAA;AAC5C,OAAO,EAAC,aAAa,EAAC,MAAM,+BAA+B,CAAA;AAE3D,MAAM,EAAC,KAAK,EAAC,GAAG,KAAK,CAAC,EAAC,KAAK,EAAE,KAAK,EAAC,CAAC,CAAA;AAErC,GAAG,CAAC,QAAQ,CAAC,EAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;QAC7C,GAAG,CAAC,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;EAUb,CAAC,CAAA;QAEF,OAAO;YACN,aAAa,CAAC;gBACb,KAAK;gBACL,IAAI,EAAE,YAAY;gBAClB,OAAO,EAAE,IAAI,CAAA;;IAEZ;gBACD,gBAAgB,EAAE;;IAEjB;gBACD,WAAW,EAAE;;IAEZ;gBACD,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC;aACvC,CAAC;SACF,CAAA;IACF,CAAC,CAAC,EAAC,CAAC,CAAA;AAEJ,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA"}
|