@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,109 @@
|
|
|
1
|
+
import { css } from "lit";
|
|
2
|
+
export default css `@layer view {
|
|
3
|
+
|
|
4
|
+
:host {
|
|
5
|
+
display: inline-flex;
|
|
6
|
+
width: max-content;
|
|
7
|
+
height: max-content;
|
|
8
|
+
|
|
9
|
+
cursor: pointer;
|
|
10
|
+
background: transparent;
|
|
11
|
+
user-select: none;
|
|
12
|
+
|
|
13
|
+
--button-padding: 0.3em 0.7em;
|
|
14
|
+
--button-color: var(--calm);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
slot {
|
|
18
|
+
z-index: 1;
|
|
19
|
+
position: relative;
|
|
20
|
+
display: block;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
button {
|
|
24
|
+
opacity: 0.8;
|
|
25
|
+
position: relative;
|
|
26
|
+
|
|
27
|
+
font: inherit;
|
|
28
|
+
cursor: inherit;
|
|
29
|
+
text-shadow: inherit;
|
|
30
|
+
font-weight: medium;
|
|
31
|
+
|
|
32
|
+
display: inline-flex;
|
|
33
|
+
justify-content: center;
|
|
34
|
+
align-items: center;
|
|
35
|
+
|
|
36
|
+
width: 100%;
|
|
37
|
+
height: 100%;
|
|
38
|
+
padding: var(--button-padding);
|
|
39
|
+
|
|
40
|
+
border-radius: 2em;
|
|
41
|
+
background: var(--button-color);
|
|
42
|
+
text-shadow: 0.1em 0.1em 0.1em #0004;
|
|
43
|
+
box-shadow: 0.1em 0.2em 0.3em #0002;
|
|
44
|
+
|
|
45
|
+
color: white;
|
|
46
|
+
border: none;
|
|
47
|
+
background: linear-gradient(
|
|
48
|
+
to bottom right,
|
|
49
|
+
color-mix(in oklab, var(--button-color), white 40%),
|
|
50
|
+
color-mix(in oklab, var(--button-color), black 20%)
|
|
51
|
+
);
|
|
52
|
+
|
|
53
|
+
&::before {
|
|
54
|
+
content: "";
|
|
55
|
+
display: block;
|
|
56
|
+
position: absolute;
|
|
57
|
+
z-index: 0;
|
|
58
|
+
inset: 0.15em;
|
|
59
|
+
border-radius: inherit;
|
|
60
|
+
background: color-mix(in oklab, var(--button-color), #0004 50%);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
&:not([disabled]):is(:hover, :focus-visible) { opacity: 1; }
|
|
64
|
+
&:not([disabled]):active { opacity: 0.6; }
|
|
65
|
+
|
|
66
|
+
&[data-vibe="lame"] { --button-color: var(--lame); }
|
|
67
|
+
&[data-vibe="angry"] { --button-color: var(--angry); }
|
|
68
|
+
&[data-vibe="zesty"] { --button-color: var(--zesty); }
|
|
69
|
+
&[data-vibe="happy"] { --button-color: var(--happy); }
|
|
70
|
+
&[data-vibe="calm"] { --button-color: var(--calm); }
|
|
71
|
+
&[data-vibe="sad"] { --button-color: var(--sad); }
|
|
72
|
+
&[data-vibe="quirky"] { --button-color: var(--quirky); }
|
|
73
|
+
&[data-vibe="tabbed"] { --button-color: var(--tabbed); }
|
|
74
|
+
|
|
75
|
+
> * {
|
|
76
|
+
position: relative;
|
|
77
|
+
z-index: 1;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
&[disabled] {
|
|
81
|
+
cursor: default;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
&[hidden] {
|
|
85
|
+
display: none !important;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
:host([data-tabbed]) > button {
|
|
90
|
+
opacity: 1;
|
|
91
|
+
filter: brightness(120%);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
:host(:not([data-tabbed])) > button[disabled] {
|
|
95
|
+
--button-color: var(--lame);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
:host([data-snug]:not([data-last])) > button {
|
|
99
|
+
border-top-right-radius: 0;
|
|
100
|
+
border-bottom-right-radius: 0;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
:host([data-snug]:not([data-first])) > button {
|
|
104
|
+
border-top-left-radius: 0;
|
|
105
|
+
border-bottom-left-radius: 0;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
}`;
|
|
109
|
+
//# sourceMappingURL=style.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"style.css.js","sourceRoot":"","sources":["../../../s/views/button/style.css.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,GAAG,EAAC,MAAM,KAAK,CAAA;AACvB,eAAe,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0GhB,CAAA"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { Content } from "@e280/sly";
|
|
2
|
+
export declare const ShinyButton: import("@e280/sly").ShadowView<[content?: Content, options?: {
|
|
3
|
+
vibe?: "calm" | "lame" | "happy" | "sad" | "angry" | "zesty" | "quirky";
|
|
4
|
+
onClick?: (event: PointerEvent) => void;
|
|
5
|
+
} | undefined]>;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { html } from "lit";
|
|
2
|
+
import { shadow, useCss, useName, useAttrs } from "@e280/sly";
|
|
3
|
+
import styleCss from "./style.css.js";
|
|
4
|
+
import { themeCss } from "../../theme/theme.css.js";
|
|
5
|
+
export const ShinyButton = shadow((content, options = {}) => {
|
|
6
|
+
useName("shiny-button");
|
|
7
|
+
useCss(themeCss, styleCss);
|
|
8
|
+
const attrs = useAttrs({
|
|
9
|
+
hidden: Boolean,
|
|
10
|
+
disabled: Boolean,
|
|
11
|
+
});
|
|
12
|
+
return html `
|
|
13
|
+
<button
|
|
14
|
+
part=button
|
|
15
|
+
data-vibe="${options.vibe ?? "calm"}"
|
|
16
|
+
?disabled="${attrs.disabled}"
|
|
17
|
+
?hidden="${attrs.hidden}"
|
|
18
|
+
@click="${options.onClick}">
|
|
19
|
+
<slot>${content}</slot>
|
|
20
|
+
</button>
|
|
21
|
+
`;
|
|
22
|
+
});
|
|
23
|
+
//# sourceMappingURL=view.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"view.js","sourceRoot":"","sources":["../../../s/views/button/view.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,IAAI,EAAC,MAAM,KAAK,CAAA;AACxB,OAAO,EAAU,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAC,MAAM,WAAW,CAAA;AAEpE,OAAO,QAAQ,MAAM,gBAAgB,CAAA;AACrC,OAAO,EAAC,QAAQ,EAAC,MAAM,0BAA0B,CAAA;AAEjD,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,OAAiB,EAAE,UAGjD,EAAE,EAAE,EAAE;IAEV,OAAO,CAAC,cAAc,CAAC,CAAA;IACvB,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;IAE1B,MAAM,KAAK,GAAG,QAAQ,CAAC;QACtB,MAAM,EAAE,OAAO;QACf,QAAQ,EAAE,OAAO;KACjB,CAAC,CAAA;IAEF,OAAO,IAAI,CAAA;;;gBAGI,OAAO,CAAC,IAAI,IAAI,MAAM;gBACtB,KAAK,CAAC,QAAQ;cAChB,KAAK,CAAC,MAAM;aACb,OAAO,CAAC,OAAO;WACjB,OAAO;;EAEhB,CAAA;AACF,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type CopyStatus = "neutral" | "good" | "bad" | "invalid";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copy-status.js","sourceRoot":"","sources":["../../../../s/views/copy/parts/copy-status.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function determineBaseStatus(text: string | undefined): "neutral" | "invalid";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"determine-base-status.js","sourceRoot":"","sources":["../../../../s/views/copy/parts/determine-base-status.ts"],"names":[],"mappings":"AACA,MAAM,UAAU,mBAAmB,CAAC,IAAwB;IAC3D,OAAO,IAAI,KAAK,SAAS;QACxB,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,SAAS,CAAA;AACb,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { CopyStatus } from "./copy-status.js";
|
|
2
|
+
export declare function useCopier(text: string | undefined, ms: number): {
|
|
3
|
+
reset: import("@e280/stz").DebounceReturn<() => Promise<CopyStatus>>;
|
|
4
|
+
flash: (status: CopyStatus) => Promise<void>;
|
|
5
|
+
status: CopyStatus;
|
|
6
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { debounce } from "@e280/stz";
|
|
2
|
+
import { useOnce, useSignal } from "@e280/sly";
|
|
3
|
+
import { determineBaseStatus } from "./determine-base-status.js";
|
|
4
|
+
export function useCopier(text, ms) {
|
|
5
|
+
const $status = useSignal(determineBaseStatus(text));
|
|
6
|
+
const reset = useOnce(() => debounce(ms, () => $status.set(determineBaseStatus(text))));
|
|
7
|
+
const flash = useOnce(() => async (status) => {
|
|
8
|
+
await $status.set(status);
|
|
9
|
+
await reset();
|
|
10
|
+
});
|
|
11
|
+
return { reset, flash, status: $status() };
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=use-copier.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-copier.js","sourceRoot":"","sources":["../../../../s/views/copy/parts/use-copier.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,QAAQ,EAAC,MAAM,WAAW,CAAA;AAClC,OAAO,EAAC,OAAO,EAAE,SAAS,EAAC,MAAM,WAAW,CAAA;AAG5C,OAAO,EAAC,mBAAmB,EAAC,MAAM,4BAA4B,CAAA;AAE9D,MAAM,UAAU,SAAS,CAAC,IAAwB,EAAE,EAAU;IAC7D,MAAM,OAAO,GAAG,SAAS,CAAa,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAA;IAEhE,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;IAEvF,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,KAAK,EAAC,MAAkB,EAAE,EAAE;QACvD,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QACzB,MAAM,KAAK,EAAE,CAAA;IACd,CAAC,CAAC,CAAA;IAEF,OAAO,EAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,EAAC,CAAA;AACzC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const copyShowcase: () => import("@e280/sly").Content;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { css, html } from "lit";
|
|
2
|
+
import { ShinyCopy } from "./view.js";
|
|
3
|
+
import { exhibit } from "../../demo/parts/exhibit.js";
|
|
4
|
+
import { Showcase } from "../../demo/views/showcase/view.js";
|
|
5
|
+
export const copyShowcase = () => Showcase("ShinyCopy", [
|
|
6
|
+
exhibit({
|
|
7
|
+
name: "normal",
|
|
8
|
+
explain: "click-to-copy button.",
|
|
9
|
+
render: () => ShinyCopy("hello world"),
|
|
10
|
+
styleboxCss: css `
|
|
11
|
+
:host {
|
|
12
|
+
font-size: 5em;
|
|
13
|
+
}
|
|
14
|
+
`,
|
|
15
|
+
js: `
|
|
16
|
+
ShinyCopy("hello world")
|
|
17
|
+
`,
|
|
18
|
+
css: css `
|
|
19
|
+
[view="shiny-copy"] {
|
|
20
|
+
--shiny-happy: #0fa;
|
|
21
|
+
--shiny-angry: #f50;
|
|
22
|
+
--shiny-lame: #8888;
|
|
23
|
+
--shiny-inactive-opacity: 0.5;
|
|
24
|
+
}
|
|
25
|
+
`,
|
|
26
|
+
}),
|
|
27
|
+
exhibit({
|
|
28
|
+
name: "fail",
|
|
29
|
+
explain: html `
|
|
30
|
+
<p>click-to-copy button. <em>deliberately fails so you can see.</em></p>
|
|
31
|
+
`,
|
|
32
|
+
render: () => ShinyCopy("hello world", { fail: true }),
|
|
33
|
+
styleboxCss: css `
|
|
34
|
+
:host {
|
|
35
|
+
font-size: 4em;
|
|
36
|
+
}
|
|
37
|
+
`,
|
|
38
|
+
js: `
|
|
39
|
+
ShinyCopy("hello world", {fail: true})
|
|
40
|
+
`,
|
|
41
|
+
css: css `
|
|
42
|
+
[view="shiny-copy"] {
|
|
43
|
+
--shiny-happy: #0fa;
|
|
44
|
+
--shiny-angry: #f50;
|
|
45
|
+
--shiny-lame: #8888;
|
|
46
|
+
--shiny-inactive-opacity: 0.5;
|
|
47
|
+
}
|
|
48
|
+
`,
|
|
49
|
+
}),
|
|
50
|
+
]);
|
|
51
|
+
//# sourceMappingURL=showcase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"showcase.js","sourceRoot":"","sources":["../../../s/views/copy/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,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,QAAQ;QACd,OAAO,EAAE,uBAAuB;QAChC,MAAM,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,aAAa,CAAC;QACtC,WAAW,EAAE,GAAG,CAAA;;;;GAIf;QACD,EAAE,EAAE;;GAEH;QACD,GAAG,EAAE,GAAG,CAAA;;;;;;;GAOP;KACD,CAAC;IAEF,OAAO,CAAC;QACP,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,IAAI,CAAA;;GAEZ;QACD,MAAM,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,aAAa,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC;QACpD,WAAW,EAAE,GAAG,CAAA;;;;GAIf;QACD,EAAE,EAAE;;GAEH;QACD,GAAG,EAAE,GAAG,CAAA;;;;;;;GAOP;KACD,CAAC;CACF,CAAC,CAAA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { css } from "lit";
|
|
2
|
-
export default css
|
|
2
|
+
export default css `@layer view {
|
|
3
3
|
|
|
4
4
|
button {
|
|
5
5
|
background: transparent;
|
|
@@ -8,31 +8,36 @@ button {
|
|
|
8
8
|
}
|
|
9
9
|
|
|
10
10
|
button {
|
|
11
|
-
opacity:
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
opacity: var(--inactive-opacity);
|
|
12
|
+
display: flex;
|
|
13
|
+
align-items: center;
|
|
14
14
|
|
|
15
|
+
cursor: copy;
|
|
15
16
|
color: inherit;
|
|
16
|
-
transition: all
|
|
17
|
+
transition: all var(--anim-duration) linear;
|
|
17
18
|
|
|
18
19
|
&:is(:hover, :focus-visible) {
|
|
19
20
|
opacity: 1;
|
|
20
21
|
}
|
|
22
|
+
|
|
23
|
+
> span {
|
|
24
|
+
display: flex;
|
|
25
|
+
}
|
|
21
26
|
}
|
|
22
27
|
|
|
23
28
|
[data-status="invalid"] {
|
|
24
|
-
color: var(--
|
|
29
|
+
color: var(--lame);
|
|
25
30
|
}
|
|
26
31
|
|
|
27
32
|
[data-status="good"] {
|
|
28
33
|
opacity: 1;
|
|
29
|
-
color: var(--
|
|
34
|
+
color: var(--happy);
|
|
30
35
|
filter: drop-shadow(0 0 0.3em color-mix(in oklab, transparent, currentColor 50%));
|
|
31
36
|
}
|
|
32
37
|
|
|
33
38
|
[data-status="bad"] {
|
|
34
39
|
opacity: 1;
|
|
35
|
-
color: var(--
|
|
40
|
+
color: var(--angry);
|
|
36
41
|
filter: drop-shadow(0 0 0.3em color-mix(in oklab, transparent, currentColor 50%));
|
|
37
42
|
}
|
|
38
43
|
|
|
@@ -41,5 +46,5 @@ svg {
|
|
|
41
46
|
height: 1em;
|
|
42
47
|
}
|
|
43
48
|
|
|
44
|
-
`;
|
|
49
|
+
}`;
|
|
45
50
|
//# sourceMappingURL=style.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"style.css.js","sourceRoot":"","sources":["../../../s/views/copy/style.css.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,GAAG,EAAC,MAAM,KAAK,CAAA;AACvB,eAAe,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+ChB,CAAA"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { html } from "lit";
|
|
2
|
+
import { shadow, useCss, useName } from "@e280/sly";
|
|
3
|
+
import styleCss from "./style.css.js";
|
|
4
|
+
import clipboardSvg from "../../icons/tabler/clipboard.svg.js";
|
|
5
|
+
import clipboardXFilledSvg from "../../icons/tabler/clipboard-x-filled.svg.js";
|
|
6
|
+
import clipboardCheckFilledSvg from "../../icons/tabler/clipboard-check-filled.svg.js";
|
|
7
|
+
import { useCopier } from "./parts/use-copier.js";
|
|
8
|
+
import { themeCss } from "../../theme/theme.css.js";
|
|
9
|
+
export const ShinyCopy = shadow((text, options = {}) => {
|
|
10
|
+
useName("shiny-copy");
|
|
11
|
+
useCss(themeCss, styleCss);
|
|
12
|
+
const copier = useCopier(text, options.ms ?? 1000);
|
|
13
|
+
async function click() {
|
|
14
|
+
if (text === undefined)
|
|
15
|
+
return;
|
|
16
|
+
try {
|
|
17
|
+
if (options.fail)
|
|
18
|
+
throw new Error("copy failed on purpose for testing purposes");
|
|
19
|
+
await navigator.clipboard.writeText(text);
|
|
20
|
+
await copier.flash("good");
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
console.error(error);
|
|
24
|
+
await copier.flash("bad");
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return html `
|
|
28
|
+
<button data-status="${copier.status}" @click="${click}" part=button>
|
|
29
|
+
<span part=icon>
|
|
30
|
+
${(() => {
|
|
31
|
+
switch (copier.status) {
|
|
32
|
+
case "neutral":
|
|
33
|
+
return clipboardSvg;
|
|
34
|
+
case "invalid":
|
|
35
|
+
return clipboardSvg;
|
|
36
|
+
case "good":
|
|
37
|
+
return clipboardCheckFilledSvg;
|
|
38
|
+
case "bad":
|
|
39
|
+
return clipboardXFilledSvg;
|
|
40
|
+
default:
|
|
41
|
+
throw new Error(`unknown copy status`);
|
|
42
|
+
}
|
|
43
|
+
})()}
|
|
44
|
+
</span>
|
|
45
|
+
<slot></slot>
|
|
46
|
+
</button>
|
|
47
|
+
`;
|
|
48
|
+
});
|
|
49
|
+
//# sourceMappingURL=view.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"view.js","sourceRoot":"","sources":["../../../s/views/copy/view.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,IAAI,EAAC,MAAM,KAAK,CAAA;AACxB,OAAO,EAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAC,MAAM,WAAW,CAAA;AAEjD,OAAO,QAAQ,MAAM,gBAAgB,CAAA;AACrC,OAAO,YAAY,MAAM,qCAAqC,CAAA;AAC9D,OAAO,mBAAmB,MAAM,8CAA8C,CAAA;AAC9E,OAAO,uBAAuB,MAAM,kDAAkD,CAAA;AAEtF,OAAO,EAAC,SAAS,EAAC,MAAM,uBAAuB,CAAA;AAC/C,OAAO,EAAC,QAAQ,EAAC,MAAM,0BAA0B,CAAA;AAEjD,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC,CAC9B,IAAwB,EACxB,UAAyC,EAAE,EAC1C,EAAE;IAEJ,OAAO,CAAC,YAAY,CAAC,CAAA;IACrB,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;IAC1B,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,IAAI,IAAI,CAAC,CAAA;IAElD,KAAK,UAAU,KAAK;QACnB,IAAI,IAAI,KAAK,SAAS;YAAE,OAAM;QAC9B,IAAI,CAAC;YACJ,IAAI,OAAO,CAAC,IAAI;gBACf,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAA;YAC/D,MAAM,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;YACzC,MAAM,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QAC3B,CAAC;QACD,OAAO,KAAK,EAAE,CAAC;YACd,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;YACpB,MAAM,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QAC1B,CAAC;IACF,CAAC;IAED,OAAO,IAAI,CAAA;yBACa,MAAM,CAAC,MAAM,aAAa,KAAK;;MAElD,CAAC,GAAG,EAAE;QAAE,QAAQ,MAAM,CAAC,MAAM,EAAE,CAAC;YACjC,KAAK,SAAS;gBACb,OAAO,YAAY,CAAA;YAEpB,KAAK,SAAS;gBACb,OAAO,YAAY,CAAA;YAEpB,KAAK,MAAM;gBACV,OAAO,uBAAuB,CAAA;YAE/B,KAAK,KAAK;gBACT,OAAO,mBAAmB,CAAA;YAE3B;gBACC,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAA;QACxC,CAAC;IAAA,CAAC,CAAC,EAAE;;;;EAIP,CAAA;AACF,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare class DrawerControl {
|
|
2
|
+
$open: import("@e280/strata").Signal<boolean>;
|
|
3
|
+
constructor(startOpen?: boolean);
|
|
4
|
+
get isOpen(): boolean;
|
|
5
|
+
setOpen(value: boolean): Promise<boolean>;
|
|
6
|
+
open: () => Promise<void>;
|
|
7
|
+
close: () => Promise<void>;
|
|
8
|
+
toggle: () => Promise<boolean>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { signal } from "@e280/strata";
|
|
2
|
+
export class DrawerControl {
|
|
3
|
+
$open = signal(false);
|
|
4
|
+
constructor(startOpen = false) {
|
|
5
|
+
if (startOpen)
|
|
6
|
+
this.$open.set(true);
|
|
7
|
+
}
|
|
8
|
+
get isOpen() {
|
|
9
|
+
return this.$open.get();
|
|
10
|
+
}
|
|
11
|
+
async setOpen(value) {
|
|
12
|
+
return this.$open.set(value);
|
|
13
|
+
}
|
|
14
|
+
open = async () => {
|
|
15
|
+
await this.setOpen(true);
|
|
16
|
+
};
|
|
17
|
+
close = async () => {
|
|
18
|
+
await this.setOpen(false);
|
|
19
|
+
};
|
|
20
|
+
toggle = async () => {
|
|
21
|
+
return this.setOpen(!this.isOpen);
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=control.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"control.js","sourceRoot":"","sources":["../../../s/views/drawer/control.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,MAAM,EAAC,MAAM,cAAc,CAAA;AAEnC,MAAM,OAAO,aAAa;IACzB,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;IAErB,YAAY,SAAS,GAAG,KAAK;QAC5B,IAAI,SAAS;YAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IACpC,CAAC;IAED,IAAI,MAAM;QACT,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAA;IACxB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,KAAc;QAC3B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAC7B,CAAC;IAED,IAAI,GAAG,KAAK,IAAG,EAAE;QAChB,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IACzB,CAAC,CAAA;IAED,KAAK,GAAG,KAAK,IAAG,EAAE;QACjB,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAC1B,CAAC,CAAA;IAED,MAAM,GAAG,KAAK,IAAG,EAAE;QAClB,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAClC,CAAC,CAAA;CACD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const drawerShowcase: () => import("@e280/sly").Content;
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { css, html } from "lit";
|
|
2
|
+
import { ShinyDrawer } from "./view.js";
|
|
3
|
+
import { lipsum } from "../../demo/utils/lipsum.js";
|
|
4
|
+
import { exhibit } from "../../demo/parts/exhibit.js";
|
|
5
|
+
import { Showcase } from "../../demo/views/showcase/view.js";
|
|
6
|
+
const styleboxCss = css `
|
|
7
|
+
:host {
|
|
8
|
+
font-size: 1em;
|
|
9
|
+
width: 100%;
|
|
10
|
+
min-height: 100%;
|
|
11
|
+
}
|
|
12
|
+
p + p {
|
|
13
|
+
margin-top: var(--padding);
|
|
14
|
+
}
|
|
15
|
+
`;
|
|
16
|
+
const customCss = css `
|
|
17
|
+
[slot=plate] { padding-top: 2em; }
|
|
18
|
+
[view="shiny-drawer"] {
|
|
19
|
+
--slate-bg: color-mix(in oklch, var(--calm), #444);
|
|
20
|
+
&::part(slate) { padding: 1em; }
|
|
21
|
+
&:state(left)::part(slate) { border-bottom-right-radius: 0.5em; }
|
|
22
|
+
&:state(right)::part(slate) { border-bottom-left-radius: 0.5em; }
|
|
23
|
+
}
|
|
24
|
+
`;
|
|
25
|
+
const render = (side) => (ShinyDrawer.with({
|
|
26
|
+
props: [{ button: true, side }],
|
|
27
|
+
children: html `
|
|
28
|
+
<header>${lipsum.takeFirst()}</header>
|
|
29
|
+
<section slot=plate>
|
|
30
|
+
<p>${lipsum.takeFirst()}</p>
|
|
31
|
+
<p>${lipsum.takeFirst()}</p>
|
|
32
|
+
</section>
|
|
33
|
+
`,
|
|
34
|
+
}));
|
|
35
|
+
export const drawerShowcase = () => Showcase("ShinyDrawer", [
|
|
36
|
+
exhibit({
|
|
37
|
+
name: "left",
|
|
38
|
+
explain: "slide-out panel. button optional.",
|
|
39
|
+
styleboxCss,
|
|
40
|
+
css: customCss,
|
|
41
|
+
render: () => render("left"),
|
|
42
|
+
js: `
|
|
43
|
+
ShinyDrawer.with({
|
|
44
|
+
props: [{button: true, side: "left"}],
|
|
45
|
+
children: html\`
|
|
46
|
+
<header>lorem kettlebell..</header>
|
|
47
|
+
<section slot=plate>
|
|
48
|
+
<p>lorem protein..</p>
|
|
49
|
+
<p>lorem caffeine..</p>
|
|
50
|
+
</section>
|
|
51
|
+
\`,
|
|
52
|
+
})
|
|
53
|
+
`,
|
|
54
|
+
}),
|
|
55
|
+
exhibit({
|
|
56
|
+
name: "right",
|
|
57
|
+
explain: "slide-out panel. button optional.",
|
|
58
|
+
styleboxCss,
|
|
59
|
+
css: customCss,
|
|
60
|
+
render: () => render("right"),
|
|
61
|
+
js: `
|
|
62
|
+
ShinyDrawer.with({
|
|
63
|
+
props: [{button: true, side: "right"}],
|
|
64
|
+
children: html\`
|
|
65
|
+
<header>lorem kettlebell..</header>
|
|
66
|
+
<section slot=plate>
|
|
67
|
+
<p>lorem protein..</p>
|
|
68
|
+
<p>lorem caffeine..</p>
|
|
69
|
+
</section>
|
|
70
|
+
\`,
|
|
71
|
+
})
|
|
72
|
+
`,
|
|
73
|
+
}),
|
|
74
|
+
]);
|
|
75
|
+
//# sourceMappingURL=showcase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"showcase.js","sourceRoot":"","sources":["../../../s/views/drawer/showcase.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,GAAG,EAAE,IAAI,EAAC,MAAM,KAAK,CAAA;AAC7B,OAAO,EAAC,WAAW,EAAC,MAAM,WAAW,CAAA;AACrC,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,WAAW,GAAG,GAAG,CAAA;;;;;;;;;CAStB,CAAA;AAED,MAAM,SAAS,GAAG,GAAG,CAAA;;;;;;;;CAQpB,CAAA;AAED,MAAM,MAAM,GAAG,CAAC,IAAsB,EAAE,EAAE,CAAC,CAC1C,WAAW,CAAC,IAAI,CAAC;IAChB,KAAK,EAAE,CAAC,EAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAC,CAAC;IAC7B,QAAQ,EAAE,IAAI,CAAA;aACH,MAAM,CAAC,SAAS,EAAE;;SAEtB,MAAM,CAAC,SAAS,EAAE;SAClB,MAAM,CAAC,SAAS,EAAE;;GAExB;CACD,CAAC,CACF,CAAA;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,aAAa,EAAE;IAC3D,OAAO,CAAC;QACP,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,mCAAmC;QAC5C,WAAW;QACX,GAAG,EAAE,SAAS;QACd,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;QAC5B,EAAE,EAAE;;;;;;;;;;;GAWH;KACD,CAAC;IAEF,OAAO,CAAC;QACP,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,mCAAmC;QAC5C,WAAW;QACX,GAAG,EAAE,SAAS;QACd,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC;QAC7B,EAAE,EAAE;;;;;;;;;;;GAWH;KACD,CAAC;CACF,CAAC,CAAA"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { css } from "lit";
|
|
2
|
+
export default css `@layer view {
|
|
3
|
+
|
|
4
|
+
:host {
|
|
5
|
+
display: block;
|
|
6
|
+
width: 100%;
|
|
7
|
+
height: 100%;
|
|
8
|
+
|
|
9
|
+
--slate-bg: transparent;
|
|
10
|
+
--button-size: 2em;
|
|
11
|
+
--blanket-backdrop-filter: blur(0.5em);
|
|
12
|
+
--slate-hidden-opacity: 1;
|
|
13
|
+
--blanket-bg: color-mix(in oklab, transparent, var(--bg));
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
.shell {
|
|
17
|
+
position: relative;
|
|
18
|
+
width: 100%;
|
|
19
|
+
height: 100%;
|
|
20
|
+
|
|
21
|
+
[part="blanket"] {
|
|
22
|
+
opacity: 0;
|
|
23
|
+
|
|
24
|
+
content: "";
|
|
25
|
+
display: block;
|
|
26
|
+
position: absolute;
|
|
27
|
+
inset: 0;
|
|
28
|
+
|
|
29
|
+
background: var(--blanket-bg);
|
|
30
|
+
backdrop-filter: var(--blanket-backdrop-filter);
|
|
31
|
+
|
|
32
|
+
will-change: opacity;
|
|
33
|
+
transition: all var(--anim-duration) ease;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.clipper {
|
|
37
|
+
pointer-events: none;
|
|
38
|
+
position: absolute;
|
|
39
|
+
inset: 0;
|
|
40
|
+
width: 100%;
|
|
41
|
+
height: 100%;
|
|
42
|
+
overflow: hidden;
|
|
43
|
+
> * { pointer-events: all; }
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
[part="tray"] {
|
|
47
|
+
position: absolute;
|
|
48
|
+
top: 0;
|
|
49
|
+
width: calc(100% - var(--button-size));
|
|
50
|
+
|
|
51
|
+
display: flex;
|
|
52
|
+
flex-direction: column;
|
|
53
|
+
height: auto;
|
|
54
|
+
max-height: 100%;
|
|
55
|
+
|
|
56
|
+
transform: translateX(-100%);
|
|
57
|
+
will-change: opacity, transform;
|
|
58
|
+
transition: all var(--anim-duration) ease;
|
|
59
|
+
|
|
60
|
+
> [part="slate"] {
|
|
61
|
+
opacity: var(--slate-hidden-opacity);
|
|
62
|
+
will-change: opacity;
|
|
63
|
+
transition: opacity var(--anim-duration) ease;
|
|
64
|
+
|
|
65
|
+
display: block;
|
|
66
|
+
height: 100%;
|
|
67
|
+
overflow-y: auto;
|
|
68
|
+
background: var(--slate-bg);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
> button {
|
|
72
|
+
position: absolute;
|
|
73
|
+
top: 0;
|
|
74
|
+
left: 100%;
|
|
75
|
+
|
|
76
|
+
opacity: var(--inactive-opacity);
|
|
77
|
+
background: transparent;
|
|
78
|
+
border: none;
|
|
79
|
+
cursor: pointer;
|
|
80
|
+
|
|
81
|
+
&:is(:hover, :focus-visible) {
|
|
82
|
+
opacity: 1;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
> slot {
|
|
86
|
+
display: contents;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
svg {
|
|
90
|
+
width: var(--button-size);
|
|
91
|
+
height: var(--button-size);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
&[data-side="right"] {
|
|
97
|
+
[part="tray"] {
|
|
98
|
+
right: 0;
|
|
99
|
+
transform: translateX(100%);
|
|
100
|
+
> button {
|
|
101
|
+
left: unset;
|
|
102
|
+
right: 100%;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
slot[name="plate"] {
|
|
108
|
+
display: block;
|
|
109
|
+
width: 100%;
|
|
110
|
+
height: 100%;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
&[data-open] {
|
|
114
|
+
[part="blanket"] {
|
|
115
|
+
opacity: 1;
|
|
116
|
+
}
|
|
117
|
+
[part="tray"] {
|
|
118
|
+
transform: translateX(0%);
|
|
119
|
+
> [part="slate"] {
|
|
120
|
+
opacity: 1;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
}`;
|
|
127
|
+
//# sourceMappingURL=style.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"style.css.js","sourceRoot":"","sources":["../../../s/views/drawer/style.css.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,GAAG,EAAC,MAAM,KAAK,CAAA;AACvB,eAAe,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4HhB,CAAA"}
|