contain-css-svelte 0.0.1
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 +58 -0
- package/dist/Card.svelte +172 -0
- package/dist/Card.svelte.d.ts +27 -0
- package/dist/controls/Button.svelte +74 -0
- package/dist/controls/Button.svelte.d.ts +28 -0
- package/dist/controls/Checkbox.svelte +111 -0
- package/dist/controls/Checkbox.svelte.d.ts +18 -0
- package/dist/controls/Input.svelte +33 -0
- package/dist/controls/Input.svelte.d.ts +22 -0
- package/dist/controls/MiniButton.svelte +78 -0
- package/dist/controls/MiniButton.svelte.d.ts +31 -0
- package/dist/controls/RadioButton.svelte +109 -0
- package/dist/controls/RadioButton.svelte.d.ts +25 -0
- package/dist/controls/Select.svelte +135 -0
- package/dist/controls/Select.svelte.d.ts +20 -0
- package/dist/controls/Slider.svelte +45 -0
- package/dist/controls/Slider.svelte.d.ts +29 -0
- package/dist/controls/TabItem.svelte +56 -0
- package/dist/controls/TabItem.svelte.d.ts +29 -0
- package/dist/cssprops.d.ts +1 -0
- package/dist/cssprops.js +189 -0
- package/dist/dropdowns/DropdownMenu.svelte +234 -0
- package/dist/dropdowns/DropdownMenu.svelte.d.ts +19 -0
- package/dist/index.d.ts +23 -0
- package/dist/index.js +24 -0
- package/dist/layout/Bar.svelte +57 -0
- package/dist/layout/Bar.svelte.d.ts +27 -0
- package/dist/layout/Column.svelte +40 -0
- package/dist/layout/Column.svelte.d.ts +19 -0
- package/dist/layout/Columns.svelte +21 -0
- package/dist/layout/Columns.svelte.d.ts +27 -0
- package/dist/layout/Container.svelte +105 -0
- package/dist/layout/Container.svelte.d.ts +27 -0
- package/dist/layout/FormItem.svelte +97 -0
- package/dist/layout/FormItem.svelte.d.ts +35 -0
- package/dist/layout/GridLayout.svelte +22 -0
- package/dist/layout/GridLayout.svelte.d.ts +16 -0
- package/dist/layout/Hero.svelte +86 -0
- package/dist/layout/Hero.svelte.d.ts +23 -0
- package/dist/layout/MenuList.svelte +108 -0
- package/dist/layout/MenuList.svelte.d.ts +29 -0
- package/dist/layout/Page.svelte +189 -0
- package/dist/layout/Page.svelte.d.ts +31 -0
- package/dist/layout/ResponsiveText.svelte +99 -0
- package/dist/layout/ResponsiveText.svelte.d.ts +26 -0
- package/dist/layout/Row.svelte +39 -0
- package/dist/layout/Row.svelte.d.ts +19 -0
- package/dist/layout/Sidebar.svelte +264 -0
- package/dist/layout/Sidebar.svelte.d.ts +23 -0
- package/dist/layout/SplitPane.svelte +160 -0
- package/dist/layout/SplitPane.svelte.d.ts +21 -0
- package/dist/layout/TabBar.svelte +49 -0
- package/dist/layout/TabBar.svelte.d.ts +28 -0
- package/dist/layout/Tile.svelte +172 -0
- package/dist/layout/Tile.svelte.d.ts +27 -0
- package/dist/misc/Code.svelte +27 -0
- package/dist/misc/Code.svelte.d.ts +18 -0
- package/dist/sass/_containers.scss +117 -0
- package/dist/sass/_mixins.scss +309 -0
- package/dist/typography/TextLayout.svelte +46 -0
- package/dist/typography/TextLayout.svelte.d.ts +27 -0
- package/dist/util.d.ts +3 -0
- package/dist/util.js +13 -0
- package/dist/vars/affordances.css +26 -0
- package/dist/vars/colors.css +345 -0
- package/dist/vars/defaults.css +14 -0
- package/dist/vars/layout.css +39 -0
- package/dist/vars/themes/lightordark.css +39 -0
- package/dist/vars/themes/purple.css +18 -0
- package/dist/vars/themes/typography-airy.css +13 -0
- package/dist/vars/themes/typography-browser.css +20 -0
- package/dist/vars/themes/typography-carbon.css +20 -0
- package/dist/vars/typography.css +16 -0
- package/package.json +52 -0
package/README.md
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# create-svelte
|
|
2
|
+
|
|
3
|
+
Everything you need to build a Svelte library, powered by [`create-svelte`](https://github.com/sveltejs/kit/tree/master/packages/create-svelte).
|
|
4
|
+
|
|
5
|
+
Read more about creating a library [in the docs](https://kit.svelte.dev/docs/packaging).
|
|
6
|
+
|
|
7
|
+
## Creating a project
|
|
8
|
+
|
|
9
|
+
If you're seeing this, you've probably already done this step. Congrats!
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
# create a new project in the current directory
|
|
13
|
+
npm create svelte@latest
|
|
14
|
+
|
|
15
|
+
# create a new project in my-app
|
|
16
|
+
npm create svelte@latest my-app
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Developing
|
|
20
|
+
|
|
21
|
+
Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server:
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
npm run dev
|
|
25
|
+
|
|
26
|
+
# or start the server and open the app in a new browser tab
|
|
27
|
+
npm run dev -- --open
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Everything inside `src/lib` is part of your library, everything inside `src/routes` can be used as a showcase or preview app.
|
|
31
|
+
|
|
32
|
+
## Building
|
|
33
|
+
|
|
34
|
+
To build your library:
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
npm run package
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
To create a production version of your showcase app:
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
npm run build
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
You can preview the production build with `npm run preview`.
|
|
47
|
+
|
|
48
|
+
> To deploy your app, you may need to install an [adapter](https://kit.svelte.dev/docs/adapters) for your target environment.
|
|
49
|
+
|
|
50
|
+
## Publishing
|
|
51
|
+
|
|
52
|
+
Go into the `package.json` and give your package the desired name through the `"name"` option. Also consider adding a `"license"` field and point it to a `LICENSE` file which you can create from a template (one popular option is the [MIT license](https://opensource.org/license/mit/)).
|
|
53
|
+
|
|
54
|
+
To publish your library to [npm](https://www.npmjs.com):
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
npm publish
|
|
58
|
+
```
|
package/dist/Card.svelte
ADDED
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
<script>import { injectVars } from "./util";
|
|
2
|
+
export let center = false;
|
|
3
|
+
export let fixedHeight = false;
|
|
4
|
+
export let bg = null;
|
|
5
|
+
export let fg = null;
|
|
6
|
+
export let padding = null;
|
|
7
|
+
export let width = null;
|
|
8
|
+
export let height = null;
|
|
9
|
+
let cssVars = injectVars($$props, "card", [
|
|
10
|
+
"bg",
|
|
11
|
+
"fg",
|
|
12
|
+
"padding",
|
|
13
|
+
"width",
|
|
14
|
+
"height"
|
|
15
|
+
]);
|
|
16
|
+
$:
|
|
17
|
+
if (height) {
|
|
18
|
+
fixedHeight = true;
|
|
19
|
+
}
|
|
20
|
+
let hasHeader = $$slots.header;
|
|
21
|
+
let hasFooter = $$slots.footer;
|
|
22
|
+
</script>
|
|
23
|
+
|
|
24
|
+
<div class="card" class:center class:fixedHeight style={cssVars}>
|
|
25
|
+
<header class:hide={!hasHeader}>
|
|
26
|
+
<slot name="header" />
|
|
27
|
+
</header>
|
|
28
|
+
<section>
|
|
29
|
+
<slot />
|
|
30
|
+
</section>
|
|
31
|
+
<footer class:hide={!hasFooter}>
|
|
32
|
+
<slot name="footer" />
|
|
33
|
+
</footer>
|
|
34
|
+
</div>
|
|
35
|
+
|
|
36
|
+
<style>/* Convenience groupings */
|
|
37
|
+
/* Warning: because we define a fallback
|
|
38
|
+
media query, the media query can override the container
|
|
39
|
+
if we stack a bunch of these in a row and aren't thoughtful about the order.
|
|
40
|
+
Put min-width queries *after* max-width queries so that smaller
|
|
41
|
+
container queries don't get their styles overridden by large media queries.
|
|
42
|
+
*/
|
|
43
|
+
.card {
|
|
44
|
+
--w: var(--card-width);
|
|
45
|
+
--h: var(--card-height);
|
|
46
|
+
box-shadow: var(--card-shadow-distance, var(--container-shadow-distance, var(--shadow-distance, var(--space-md)))) var(--card-shadow-distance, var(--container-shadow-distance, var(--shadow-distance, var(--space-md)))) var(--card-shadow-blur, var(--container-shadow-blur, var(--shadow-blur, var(--space)))) var(--card-shadow-color, var(--container-shadow-color, var(--shadow-color, rgba(127, 127, 127, 0.4))));
|
|
47
|
+
background: var(--card-bg, var(--container-bg, var(--bg, white)));
|
|
48
|
+
color: var(--card-fg, var(--container-fg, var(--fg, black)));
|
|
49
|
+
font-family: var(--card-font-family, var(--container-font-family, var(--font-family, sans-serif)));
|
|
50
|
+
text-transform: var(--card-text-transform, var(--container-text-transform, var(--text-transform, none)));
|
|
51
|
+
text-decoration: var(--card-text-decoration, var(--container-text-decoration, var(--text-decoration, none)));
|
|
52
|
+
font-size: var(--card-font-size, var(--container-font-size, var(--font-size, 16px)));
|
|
53
|
+
font-weight: var(--card-font-weight, var(--container-font-weight, var(--font-weight, 400)));
|
|
54
|
+
line-height: var(--card-line-height, var(--container-line-height, var(--line-height, 1.5)));
|
|
55
|
+
letter-spacing: var(--card-letter-spacing, var(--container-letter-spacing, var(--letter-spacing, 0.05em)));
|
|
56
|
+
border-radius: var(--card-border-radius, var(--container-border-radius, var(--border-radius, 0)));
|
|
57
|
+
border: var(--card-border, var(--container-border, var(--border, var(--border-width) var(--border-style) var(--border-color))));
|
|
58
|
+
display: flex;
|
|
59
|
+
flex-direction: column;
|
|
60
|
+
}
|
|
61
|
+
.card :global(p), .card :global(blockquote), .card :global(dl), .card :global(ul), .card :global(ol) {
|
|
62
|
+
max-width: var(--card-line-width, var(--container-line-width, var(--line-width, 40em)));
|
|
63
|
+
font-family: var(--card-body-font-family, var(--container-body-font-family, var(--body-font-family, var(--font-family))));
|
|
64
|
+
line-height: var(--card-line-height, var(--container-line-height, var(--line-height, 1.5)));
|
|
65
|
+
margin-left: auto;
|
|
66
|
+
margin-right: auto;
|
|
67
|
+
font-weight: var(--card-body-font-weight, var(--container-body-font-weight, var(--body-font-weight, var(--normal))));
|
|
68
|
+
}
|
|
69
|
+
.card :global(h1),
|
|
70
|
+
.card :global(h2),
|
|
71
|
+
.card :global(h3),
|
|
72
|
+
.card :global(h4),
|
|
73
|
+
.card :global(h5),
|
|
74
|
+
.card :global(h6) {
|
|
75
|
+
max-width: var(--card-line-width, var(--container-line-width, var(--line-width, 40em)));
|
|
76
|
+
font-family: var(--card-heading-font-family, var(--container-heading-font-family, var(--heading-font-family, var(--font-family))));
|
|
77
|
+
line-height: var(--card-heading-line-height, var(--container-heading-line-height, var(--heading-line-height, var(--line-height))));
|
|
78
|
+
margin-left: auto;
|
|
79
|
+
margin-right: auto;
|
|
80
|
+
color: var(--heading-color, card, container, var(--fg));
|
|
81
|
+
font-weight: var(--heading-font-weight, card, container, var(--bold));
|
|
82
|
+
}
|
|
83
|
+
.card section {
|
|
84
|
+
flex-grow: 1;
|
|
85
|
+
}
|
|
86
|
+
@container (max-width: 600px) {
|
|
87
|
+
.card {
|
|
88
|
+
--w: var(--card-width-small);
|
|
89
|
+
--h: var(--card-height-small);
|
|
90
|
+
--sidebar-width: calc(var(--card-width-small) - var(--padding) * 2);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
@container (min-width: 1921px) {
|
|
94
|
+
.card {
|
|
95
|
+
--w: var(--card-width-large);
|
|
96
|
+
--h: var(--card-height-large);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
.card.center {
|
|
100
|
+
display: grid;
|
|
101
|
+
place-content: center;
|
|
102
|
+
}
|
|
103
|
+
.card {
|
|
104
|
+
overflow-x: hidden;
|
|
105
|
+
container-type: inline-size;
|
|
106
|
+
width: var(--w);
|
|
107
|
+
}
|
|
108
|
+
.card section {
|
|
109
|
+
line-height: var(--line-height);
|
|
110
|
+
max-width: var(--line-width);
|
|
111
|
+
}
|
|
112
|
+
.card.fixedHeight {
|
|
113
|
+
height: var(--h);
|
|
114
|
+
container-type: size;
|
|
115
|
+
overflow-y: auto;
|
|
116
|
+
scrollbar-width: var(--card-scrollbar-width, var(--container-scrollbar-width, var(--scrollbar-width, thin)));
|
|
117
|
+
scrollbar-color: var(--card-scrollbar-thumb-bg, var(--container-scrollbar-thumb-bg, var(--scrollbar-thumb-bg, #888))) var(--card-scrollbar-track-bg, var(--container-scrollbar-track-bg, var(--scrollbar-track-bg, var(--border-color))));
|
|
118
|
+
}
|
|
119
|
+
.card.fixedHeight::-webkit-scrollbar {
|
|
120
|
+
width: var(--card-scrollbar-width, var(--container-scrollbar-width, var(--scrollbar-width, var(--space-md))));
|
|
121
|
+
height: var(--card-scrollbar-height, var(--container-scrollbar-height, var(--scrollbar-height, var(--gap))));
|
|
122
|
+
}
|
|
123
|
+
.card.fixedHeight::-webkit-scrollbar-track {
|
|
124
|
+
background: var(--card-scrollbar-track-bg, var(--container-scrollbar-track-bg, var(--scrollbar-track-bg, var(--bg))));
|
|
125
|
+
}
|
|
126
|
+
.card.fixedHeight::-webkit-scrollbar-thumb {
|
|
127
|
+
background: var(--card-scrollbar-thumb-bg, var(--container-scrollbar-thumb-bg, var(--scrollbar-thumb-bg, var(--stripe-bg))));
|
|
128
|
+
border-radius: var(--card-scrollbar-thumb-radius, var(--container-scrollbar-thumb-radius, var(--scrollbar-thumb-radius, var(--border-radius))));
|
|
129
|
+
}
|
|
130
|
+
.card.fixedHeight::-webkit-scrollbar-thumb:hover {
|
|
131
|
+
background: var(--card-scrollbar-thumb-hover-bg, var(--container-scrollbar-thumb-hover-bg, var(--scrollbar-thumb-hover-bg, var(--secondary-bg))));
|
|
132
|
+
}
|
|
133
|
+
header,
|
|
134
|
+
section {
|
|
135
|
+
padding: var(--padding);
|
|
136
|
+
border-top-right-radius: var(--border-radius);
|
|
137
|
+
border-top-left-radius: var(--border-radius);
|
|
138
|
+
border-bottom: var(--card-header-border);
|
|
139
|
+
}
|
|
140
|
+
header {
|
|
141
|
+
background: var(--card-header-bg, var(--secondary-bg, var(--bg, white)));
|
|
142
|
+
color: var(--card-header-fg, var(--secondary-fg, var(--fg, black)));
|
|
143
|
+
box-sizing: border-box;
|
|
144
|
+
padding: var(--card-header-padding, var(--bar-padding, var(--padding, 4px)));
|
|
145
|
+
border: var(--card-header-border, var(--bar-border, var(--border, none)));
|
|
146
|
+
border-top: var(--card-header-border-top, var(--bar-border-top, var(--border-top, var(--card-header-border, var(--bar-border, var(--border, none))))));
|
|
147
|
+
border-right: var(--card-header-border-right, var(--bar-border-right, var(--border-right, var(--card-header-border, var(--bar-border, var(--border, none))))));
|
|
148
|
+
border-bottom: var(--card-header-border-bottom, var(--bar-border-bottom, var(--border-bottom, var(--card-header-border, var(--bar-border, var(--border, none))))));
|
|
149
|
+
border-left: var(--card-header-border-left, var(--bar-border-left, var(--border-left, var(--card-header-border, var(--bar-border, var(--border, none))))));
|
|
150
|
+
border-top-right-radius: var(--card-header-border-radius, var(--border-radius, bar));
|
|
151
|
+
border-top-left-radius: var(--card-header-border-radius, var(--border-radius, bar));
|
|
152
|
+
display: flex;
|
|
153
|
+
align-items: center;
|
|
154
|
+
height: var(--card-header-height, var(--bar-height, var(--height, 2em)));
|
|
155
|
+
}
|
|
156
|
+
footer {
|
|
157
|
+
background: var(--card-footer-bg, var(--secondary-bg, var(--bg, white)));
|
|
158
|
+
color: var(--card-footer-fg, var(--secondary-fg, var(--fg, black)));
|
|
159
|
+
box-sizing: border-box;
|
|
160
|
+
padding: var(--card-footer-padding, var(--bar-padding, var(--padding, 4px)));
|
|
161
|
+
border: var(--card-footer-border, var(--bar-border, var(--border, none)));
|
|
162
|
+
border-top: var(--card-footer-border-top, var(--bar-border-top, var(--border-top, var(--card-footer-border, var(--bar-border, var(--border, none))))));
|
|
163
|
+
border-right: var(--card-footer-border-right, var(--bar-border-right, var(--border-right, var(--card-footer-border, var(--bar-border, var(--border, none))))));
|
|
164
|
+
border-bottom: var(--card-footer-border-bottom, var(--bar-border-bottom, var(--border-bottom, var(--card-footer-border, var(--bar-border, var(--border, none))))));
|
|
165
|
+
border-left: var(--card-footer-border-left, var(--bar-border-left, var(--border-left, var(--card-footer-border, var(--bar-border, var(--border, none))))));
|
|
166
|
+
border-bottom-right-radius: var(--card-footer-border-radius, var(--border-radius, bar));
|
|
167
|
+
border-bottom-left-radius: var(--card-footer-border-radius, var(--border-radius, bar));
|
|
168
|
+
height: var(--card-header-height, var(--bar-height, var(--height, 2em)));
|
|
169
|
+
}
|
|
170
|
+
.hide {
|
|
171
|
+
display: none;
|
|
172
|
+
}</style>
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { SvelteComponent } from "svelte";
|
|
2
|
+
declare const __propDef: {
|
|
3
|
+
props: {
|
|
4
|
+
[x: string]: any;
|
|
5
|
+
center?: boolean | undefined;
|
|
6
|
+
fixedHeight?: boolean | undefined;
|
|
7
|
+
bg?: string | null | undefined;
|
|
8
|
+
fg?: string | null | undefined;
|
|
9
|
+
padding?: string | null | undefined;
|
|
10
|
+
width?: string | null | undefined;
|
|
11
|
+
height?: string | null | undefined;
|
|
12
|
+
};
|
|
13
|
+
events: {
|
|
14
|
+
[evt: string]: CustomEvent<any>;
|
|
15
|
+
};
|
|
16
|
+
slots: {
|
|
17
|
+
header: {};
|
|
18
|
+
default: {};
|
|
19
|
+
footer: {};
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
export type CardProps = typeof __propDef.props;
|
|
23
|
+
export type CardEvents = typeof __propDef.events;
|
|
24
|
+
export type CardSlots = typeof __propDef.slots;
|
|
25
|
+
export default class Card extends SvelteComponent<CardProps, CardEvents, CardSlots> {
|
|
26
|
+
}
|
|
27
|
+
export {};
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
<script>import { injectVars } from "../util";
|
|
2
|
+
export let primary = false;
|
|
3
|
+
export let warning = false;
|
|
4
|
+
let iconSlotted = $$slots.icon;
|
|
5
|
+
export let bg = null;
|
|
6
|
+
export let fg = null;
|
|
7
|
+
export let padding = null;
|
|
8
|
+
export let width = null;
|
|
9
|
+
export let height = null;
|
|
10
|
+
let cssVars = injectVars($$props, "button", [
|
|
11
|
+
"bg",
|
|
12
|
+
"fg",
|
|
13
|
+
"padding",
|
|
14
|
+
"width",
|
|
15
|
+
"height"
|
|
16
|
+
]);
|
|
17
|
+
</script>
|
|
18
|
+
|
|
19
|
+
<button
|
|
20
|
+
style={cssVars}
|
|
21
|
+
on:click
|
|
22
|
+
class:primary
|
|
23
|
+
class:warning
|
|
24
|
+
class:has-icon={iconSlotted}
|
|
25
|
+
>
|
|
26
|
+
<span class="content"><slot /></span>
|
|
27
|
+
<span class:hidden={!iconSlotted} class="icon"><slot name="icon" /></span>
|
|
28
|
+
</button>
|
|
29
|
+
|
|
30
|
+
<style>/* Convenience groupings */
|
|
31
|
+
/* Warning: because we define a fallback
|
|
32
|
+
media query, the media query can override the container
|
|
33
|
+
if we stack a bunch of these in a row and aren't thoughtful about the order.
|
|
34
|
+
Put min-width queries *after* max-width queries so that smaller
|
|
35
|
+
container queries don't get their styles overridden by large media queries.
|
|
36
|
+
*/
|
|
37
|
+
button.has-icon {
|
|
38
|
+
display: flex;
|
|
39
|
+
gap: var(--space);
|
|
40
|
+
}
|
|
41
|
+
button {
|
|
42
|
+
width: var(--button-width);
|
|
43
|
+
height: var(--button-height);
|
|
44
|
+
box-sizing: border-box;
|
|
45
|
+
padding: var(--button-padding, var(--control-padding, var(--secondary-padding, var(--padding, 4px))));
|
|
46
|
+
border: var(--button-border, var(--control-border, var(--secondary-border, var(--border, none))));
|
|
47
|
+
border-top: var(--button-border-top, var(--control-border-top, var(--secondary-border-top, var(--border-top, var(--button-border, var(--control-border, var(--secondary-border, var(--border, none))))))));
|
|
48
|
+
border-right: var(--button-border-right, var(--control-border-right, var(--secondary-border-right, var(--border-right, var(--button-border, var(--control-border, var(--secondary-border, var(--border, none))))))));
|
|
49
|
+
border-bottom: var(--button-border-bottom, var(--control-border-bottom, var(--secondary-border-bottom, var(--border-bottom, var(--button-border, var(--control-border, var(--secondary-border, var(--border, none))))))));
|
|
50
|
+
border-left: var(--button-border-left, var(--control-border-left, var(--secondary-border-left, var(--border-left, var(--button-border, var(--control-border, var(--secondary-border, var(--border, none))))))));
|
|
51
|
+
border-radius: var(--button-border-radius, var(--control-border-radius, var(--secondary-border-radius, var(--border-radius, none))));
|
|
52
|
+
background: var(--button-bg, var(--control-bg, var(--secondary-bg, var(--bg, white))));
|
|
53
|
+
color: var(--button-fg, var(--control-fg, var(--secondary-fg, var(--fg, black))));
|
|
54
|
+
font-family: var(--button-font);
|
|
55
|
+
cursor: pointer;
|
|
56
|
+
transition: filter, transform var(--button-transition, var(--control-transition, var(--transition, 300ms)));
|
|
57
|
+
margin: var(--button-margin, var(--control-margin, var(--margin, var(--space))));
|
|
58
|
+
}
|
|
59
|
+
button:hover {
|
|
60
|
+
filter: var(--button-hover-filter, var(--clickable-hover-filter, var(--hover-filter, brightness(1.1))));
|
|
61
|
+
transform: var(--button-hover-transform, var(--clickable-hover-transform, var(--hover-transform, none)));
|
|
62
|
+
}
|
|
63
|
+
button:active {
|
|
64
|
+
filter: var(--button-hover-filter, var(--clickable-hover-filter, var(--hover-filter, brightness(0.9))));
|
|
65
|
+
transform: var(--button-hover-transform, var(--clickable-hover-transform, var(--hover-transform, translate(var(--space), var(--space)))));
|
|
66
|
+
}
|
|
67
|
+
button.primary {
|
|
68
|
+
background: var(--primary-bg, var(--button-bg, var(--control-bg, var(--bg, white))));
|
|
69
|
+
color: var(--primary-fg, var(--button-fg, var(--control-fg, var(--fg, black))));
|
|
70
|
+
}
|
|
71
|
+
button.warning {
|
|
72
|
+
background: var(--warning-bg, var(--button-bg, var(--control-bg, var(--bg, white))));
|
|
73
|
+
color: var(--warning-fg, var(--button-fg, var(--control-fg, var(--fg, black))));
|
|
74
|
+
}</style>
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { SvelteComponent } from "svelte";
|
|
2
|
+
declare const __propDef: {
|
|
3
|
+
props: {
|
|
4
|
+
[x: string]: any;
|
|
5
|
+
primary?: boolean | undefined;
|
|
6
|
+
warning?: boolean | undefined;
|
|
7
|
+
bg?: string | null | undefined;
|
|
8
|
+
fg?: string | null | undefined;
|
|
9
|
+
padding?: string | null | undefined;
|
|
10
|
+
width?: string | null | undefined;
|
|
11
|
+
height?: string | null | undefined;
|
|
12
|
+
};
|
|
13
|
+
events: {
|
|
14
|
+
click: MouseEvent;
|
|
15
|
+
} & {
|
|
16
|
+
[evt: string]: CustomEvent<any>;
|
|
17
|
+
};
|
|
18
|
+
slots: {
|
|
19
|
+
default: {};
|
|
20
|
+
icon: {};
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
export type ButtonProps = typeof __propDef.props;
|
|
24
|
+
export type ButtonEvents = typeof __propDef.events;
|
|
25
|
+
export type ButtonSlots = typeof __propDef.slots;
|
|
26
|
+
export default class Button extends SvelteComponent<ButtonProps, ButtonEvents, ButtonSlots> {
|
|
27
|
+
}
|
|
28
|
+
export {};
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
<script>export let checked;
|
|
2
|
+
let ref;
|
|
3
|
+
let labelContent;
|
|
4
|
+
let labelWidth;
|
|
5
|
+
$: {
|
|
6
|
+
if (ref) {
|
|
7
|
+
labelContent = ref.innerHTML;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
</script>
|
|
11
|
+
|
|
12
|
+
<label>
|
|
13
|
+
<input type="checkbox" bind:checked />
|
|
14
|
+
<span style:--label-width="{labelWidth + 4}px" bind:this={ref}><slot /></span>
|
|
15
|
+
</label>
|
|
16
|
+
<!-- Off-screen span for measuring -->
|
|
17
|
+
<span class="offscreen" bind:clientWidth={labelWidth}>{@html labelContent}</span
|
|
18
|
+
>
|
|
19
|
+
|
|
20
|
+
<style>@charset "UTF-8";
|
|
21
|
+
/* Convenience groupings */
|
|
22
|
+
/* Warning: because we define a fallback
|
|
23
|
+
media query, the media query can override the container
|
|
24
|
+
if we stack a bunch of these in a row and aren't thoughtful about the order.
|
|
25
|
+
Put min-width queries *after* max-width queries so that smaller
|
|
26
|
+
container queries don't get their styles overridden by large media queries.
|
|
27
|
+
*/
|
|
28
|
+
:root {
|
|
29
|
+
/* --checkbox-size: var(--font-size);
|
|
30
|
+
--checkbox-bg: var(--inactive-bg);
|
|
31
|
+
--checkbox-fg: var(--inactive-fg);
|
|
32
|
+
--checkbox-checked-bg: var(--primary-bg);
|
|
33
|
+
--checkbox-checked-fg: var(--primary-fg);
|
|
34
|
+
--checkbox-border: 1px solid var(--white);
|
|
35
|
+
--checkbox-checked-border: 1px solid var(--white);
|
|
36
|
+
--checkbox-check: "✓"; */
|
|
37
|
+
}
|
|
38
|
+
.offscreen,
|
|
39
|
+
label {
|
|
40
|
+
font-family: var(--checkbox-font-family, var(--ui-font-family, var(--font-family, sans-serif)));
|
|
41
|
+
text-transform: var(--checkbox-text-transform, var(--ui-text-transform, var(--text-transform, none)));
|
|
42
|
+
text-decoration: var(--checkbox-text-decoration, var(--ui-text-decoration, var(--text-decoration, none)));
|
|
43
|
+
font-size: var(--checkbox-font-size, var(--ui-font-size, var(--font-size, 16px)));
|
|
44
|
+
font-weight: var(--checkbox-font-weight, var(--ui-font-weight, var(--font-weight, 400)));
|
|
45
|
+
line-height: var(--checkbox-line-height, var(--ui-line-height, var(--line-height, 1.5)));
|
|
46
|
+
letter-spacing: var(--checkbox-letter-spacing, var(--ui-letter-spacing, var(--letter-spacing, 0.05em)));
|
|
47
|
+
}
|
|
48
|
+
.offscreen {
|
|
49
|
+
visibility: hidden;
|
|
50
|
+
font-weight: var(--checkbox-checked-weight, var(--checked-weight, var(--weight, active)));
|
|
51
|
+
position: absolute;
|
|
52
|
+
}
|
|
53
|
+
label {
|
|
54
|
+
display: inline-flex;
|
|
55
|
+
align-items: center;
|
|
56
|
+
box-sizing: border-box;
|
|
57
|
+
line-height: 1.2;
|
|
58
|
+
position: relative;
|
|
59
|
+
user-select: none;
|
|
60
|
+
gap: var(--radio-button-space, var(--toggle-space, var(--space-md)));
|
|
61
|
+
}
|
|
62
|
+
label:hover {
|
|
63
|
+
filter: var(--checkbox-hover-filter);
|
|
64
|
+
transform: var(--checkbox-hover-transform);
|
|
65
|
+
}
|
|
66
|
+
label:has(:global(*:active)) {
|
|
67
|
+
filter: var(--checkbox-active-filter, var(--active-filter, control));
|
|
68
|
+
transform: var(--checkbox-active-transform, var(--active-transform, control));
|
|
69
|
+
}
|
|
70
|
+
label span {
|
|
71
|
+
width: var(--label-width);
|
|
72
|
+
}
|
|
73
|
+
label:has(input:checked) {
|
|
74
|
+
font-weight: var(--checkbox-checked-weight, var(--checked-weight, var(--weight, active)));
|
|
75
|
+
}
|
|
76
|
+
input {
|
|
77
|
+
display: none;
|
|
78
|
+
}
|
|
79
|
+
label::before {
|
|
80
|
+
transition: all var(--checkbox-transition, var(--transition, control));
|
|
81
|
+
display: inline-grid;
|
|
82
|
+
place-content: center;
|
|
83
|
+
content: " ";
|
|
84
|
+
width: var(--checkbox-size, var(--toggle-size, var(--font-size, var(--size, 1em))));
|
|
85
|
+
height: var(--checkbox-size, var(--toggle-size, var(--font-size, var(--size, 1em))));
|
|
86
|
+
background: var(--checkbox-bg, var(--toggle-bg, var(--inactive-bg, var(--secondary-bg, var(--bg, white)))));
|
|
87
|
+
color: var(--checkbox-fg, var(--toggle-fg, var(--inactive-fg, var(--secondary-fg, var(--fg, black)))));
|
|
88
|
+
border: var(--checkbox-border, var(--border, 1px solid var(--border-color)));
|
|
89
|
+
box-sizing: border-box;
|
|
90
|
+
}
|
|
91
|
+
label:has(input:checked)::before {
|
|
92
|
+
background: var(--checkbox-checked-bg, var(--toggle-on-bg, var(--primary-bg, var(--checkbox-bg, var(--bg, white)))));
|
|
93
|
+
color: var(--checkbox-checked-fg, var(--toggle-on-fg, var(--primary-fg, var(--checkbox-fg, var(--fg, black)))));
|
|
94
|
+
}
|
|
95
|
+
label:has(input:checked)::after {
|
|
96
|
+
content: var(--checkbox-check, "✓");
|
|
97
|
+
font-size: var(--checkbox-size, var(--toggle-size, var(--font-size, var(--size, 1em))));
|
|
98
|
+
color: var(--checkbox-checked-fg, var(--toggle-on-fg, var(--primary-fg, var(--fg, checkbox))));
|
|
99
|
+
position: absolute;
|
|
100
|
+
left: 0;
|
|
101
|
+
animation: checkbox-check var(--checkbox-transition) ease-in-out;
|
|
102
|
+
}
|
|
103
|
+
@keyframes checkbox-check {
|
|
104
|
+
0% {
|
|
105
|
+
width: 0;
|
|
106
|
+
overflow: hidden;
|
|
107
|
+
}
|
|
108
|
+
100% {
|
|
109
|
+
width: var(--checkbox-size, var(--toggle-size, var(--font-size, var(--size, 1em))));
|
|
110
|
+
}
|
|
111
|
+
}</style>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { SvelteComponent } from "svelte";
|
|
2
|
+
declare const __propDef: {
|
|
3
|
+
props: {
|
|
4
|
+
checked: boolean;
|
|
5
|
+
};
|
|
6
|
+
events: {
|
|
7
|
+
[evt: string]: CustomEvent<any>;
|
|
8
|
+
};
|
|
9
|
+
slots: {
|
|
10
|
+
default: {};
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
export type CheckboxProps = typeof __propDef.props;
|
|
14
|
+
export type CheckboxEvents = typeof __propDef.events;
|
|
15
|
+
export type CheckboxSlots = typeof __propDef.slots;
|
|
16
|
+
export default class Checkbox extends SvelteComponent<CheckboxProps, CheckboxEvents, CheckboxSlots> {
|
|
17
|
+
}
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
<script>export let value;
|
|
2
|
+
export let placeholder = "";
|
|
3
|
+
</script>
|
|
4
|
+
|
|
5
|
+
<input {placeholder} bind:value on:input on:change on:blur on:focus />
|
|
6
|
+
|
|
7
|
+
<style>/* Convenience groupings */
|
|
8
|
+
/* Warning: because we define a fallback
|
|
9
|
+
media query, the media query can override the container
|
|
10
|
+
if we stack a bunch of these in a row and aren't thoughtful about the order.
|
|
11
|
+
Put min-width queries *after* max-width queries so that smaller
|
|
12
|
+
container queries don't get their styles overridden by large media queries.
|
|
13
|
+
*/
|
|
14
|
+
input {
|
|
15
|
+
font-family: var(--input-font-family, var(--ui-font-family, var(--font-family, sans-serif)));
|
|
16
|
+
text-transform: var(--input-text-transform, var(--ui-text-transform, var(--text-transform, none)));
|
|
17
|
+
text-decoration: var(--input-text-decoration, var(--ui-text-decoration, var(--text-decoration, none)));
|
|
18
|
+
font-size: var(--input-font-size, var(--ui-font-size, var(--font-size, 16px)));
|
|
19
|
+
font-weight: var(--input-font-weight, var(--ui-font-weight, var(--font-weight, 400)));
|
|
20
|
+
line-height: var(--input-line-height, var(--ui-line-height, var(--line-height, 1.5)));
|
|
21
|
+
letter-spacing: var(--input-letter-spacing, var(--ui-letter-spacing, var(--letter-spacing, 0.05em)));
|
|
22
|
+
box-sizing: border-box;
|
|
23
|
+
padding: var(--input-padding, var(--ui-padding, var(--padding, 4px)));
|
|
24
|
+
border: var(--input-border, var(--ui-border, var(--border, none)));
|
|
25
|
+
border-top: var(--input-border-top, var(--ui-border-top, var(--border-top, var(--input-border, var(--ui-border, var(--border, none))))));
|
|
26
|
+
border-right: var(--input-border-right, var(--ui-border-right, var(--border-right, var(--input-border, var(--ui-border, var(--border, none))))));
|
|
27
|
+
border-bottom: var(--input-border-bottom, var(--ui-border-bottom, var(--border-bottom, var(--input-border, var(--ui-border, var(--border, none))))));
|
|
28
|
+
border-left: var(--input-border-left, var(--ui-border-left, var(--border-left, var(--input-border, var(--ui-border, var(--border, none))))));
|
|
29
|
+
border-radius: var(--input-border-radius, var(--ui-border-radius, var(--border-radius, none)));
|
|
30
|
+
background: var(--input-bg, var(--ui-bg, var(--bg, white)));
|
|
31
|
+
color: var(--input-fg, var(--ui-fg, var(--fg, black)));
|
|
32
|
+
width: var(--input-width);
|
|
33
|
+
}</style>
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { SvelteComponent } from "svelte";
|
|
2
|
+
declare const __propDef: {
|
|
3
|
+
props: {
|
|
4
|
+
value: string;
|
|
5
|
+
placeholder?: string | undefined;
|
|
6
|
+
};
|
|
7
|
+
events: {
|
|
8
|
+
input: Event;
|
|
9
|
+
change: Event;
|
|
10
|
+
blur: FocusEvent;
|
|
11
|
+
focus: FocusEvent;
|
|
12
|
+
} & {
|
|
13
|
+
[evt: string]: CustomEvent<any>;
|
|
14
|
+
};
|
|
15
|
+
slots: {};
|
|
16
|
+
};
|
|
17
|
+
export type InputProps = typeof __propDef.props;
|
|
18
|
+
export type InputEvents = typeof __propDef.events;
|
|
19
|
+
export type InputSlots = typeof __propDef.slots;
|
|
20
|
+
export default class Input extends SvelteComponent<InputProps, InputEvents, InputSlots> {
|
|
21
|
+
}
|
|
22
|
+
export {};
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
<script>export let primary = false;
|
|
2
|
+
export let bg = null;
|
|
3
|
+
export let fg = null;
|
|
4
|
+
export let padding = null;
|
|
5
|
+
export let width = null;
|
|
6
|
+
export let height = null;
|
|
7
|
+
import { injectVars } from "../util";
|
|
8
|
+
let style = injectVars($$props, "mini-button", [
|
|
9
|
+
"bg",
|
|
10
|
+
"fg",
|
|
11
|
+
"padding",
|
|
12
|
+
"width",
|
|
13
|
+
"height"
|
|
14
|
+
]);
|
|
15
|
+
</script>
|
|
16
|
+
|
|
17
|
+
<button
|
|
18
|
+
{style}
|
|
19
|
+
class:primary
|
|
20
|
+
on:click
|
|
21
|
+
on:blur
|
|
22
|
+
on:dblclick
|
|
23
|
+
on:focus
|
|
24
|
+
on:keydown
|
|
25
|
+
on:keyup
|
|
26
|
+
>
|
|
27
|
+
<slot />
|
|
28
|
+
</button>
|
|
29
|
+
|
|
30
|
+
<style>/* Convenience groupings */
|
|
31
|
+
/* Warning: because we define a fallback
|
|
32
|
+
media query, the media query can override the container
|
|
33
|
+
if we stack a bunch of these in a row and aren't thoughtful about the order.
|
|
34
|
+
Put min-width queries *after* max-width queries so that smaller
|
|
35
|
+
container queries don't get their styles overridden by large media queries.
|
|
36
|
+
*/
|
|
37
|
+
button.primary {
|
|
38
|
+
background: var(--primary-bg, var(--button-bg, var(--control-bg, var(--bg, white))));
|
|
39
|
+
color: var(--primary-fg, var(--button-fg, var(--control-fg, var(--fg, black))));
|
|
40
|
+
}
|
|
41
|
+
button {
|
|
42
|
+
font-family: var(--button-font-family, var(--control-font-family, var(--font-family, sans-serif)));
|
|
43
|
+
text-transform: var(--button-text-transform, var(--control-text-transform, var(--text-transform, none)));
|
|
44
|
+
text-decoration: var(--button-text-decoration, var(--control-text-decoration, var(--text-decoration, none)));
|
|
45
|
+
font-size: var(--button-font-size, var(--control-font-size, var(--font-size, 16px)));
|
|
46
|
+
font-weight: var(--button-font-weight, var(--control-font-weight, var(--font-weight, 400)));
|
|
47
|
+
line-height: var(--button-line-height, var(--control-line-height, var(--line-height, 1.5)));
|
|
48
|
+
letter-spacing: var(--button-letter-spacing, var(--control-letter-spacing, var(--letter-spacing, 0.05em)));
|
|
49
|
+
background: var(--mini-button-bg, var(--button-bg, var(--control-bg, var(--secondary-bg, var(--bg, white)))));
|
|
50
|
+
color: var(--mini-button-fg, var(--button-fg, var(--control-fg, var(--secondary-fg, var(--fg, black)))));
|
|
51
|
+
font-family: var(--button-font);
|
|
52
|
+
cursor: pointer;
|
|
53
|
+
transition: filter, transform var(--button-transition, var(--control-transition, var(--transition, 300ms)));
|
|
54
|
+
box-shadow: var(--mini-button-shadow-distance, var(--button-shadow-distance, var(--control-shadow-distance, var(--shadow-distance, var(--space-md))))) var(--mini-button-shadow-distance, var(--button-shadow-distance, var(--control-shadow-distance, var(--shadow-distance, var(--space-md))))) var(--mini-button-shadow-blur, var(--button-shadow-blur, var(--control-shadow-blur, var(--shadow-blur, var(--space))))) var(--mini-button-shadow-color, var(--button-shadow-color, var(--control-shadow-color, var(--shadow-color, rgba(127, 127, 127, 0.4)))));
|
|
55
|
+
margin: var(--button-margin, var(--control-margin, var(--margin, var(--space))));
|
|
56
|
+
width: var(--mini-button-size, var(--icon-size, 1em));
|
|
57
|
+
height: var(--mini-button-size, var(--icon-size, 1em));
|
|
58
|
+
border-radius: var(--mini-button-radius, 50%);
|
|
59
|
+
border: var(--mini-button-border, button-border, none);
|
|
60
|
+
display: inline-grid;
|
|
61
|
+
place-content: center;
|
|
62
|
+
}
|
|
63
|
+
button:hover {
|
|
64
|
+
filter: var(--mini-button-hover-filter, var(--button-hover-filter, var(--clickable-hover-filter, var(--hover-filter, brightness(1.1)))));
|
|
65
|
+
transform: var(--mini-button-hover-transform, var(--button-hover-transform, var(--clickable-hover-transform, var(--hover-transform, none))));
|
|
66
|
+
}
|
|
67
|
+
button:active {
|
|
68
|
+
filter: var(--mini-button-hover-filter, var(--button-hover-filter, var(--clickable-hover-filter, var(--hover-filter, brightness(0.9)))));
|
|
69
|
+
transform: var(--mini-button-hover-transform, var(--button-hover-transform, var(--clickable-hover-transform, var(--hover-transform, translate(var(--space), var(--space))))));
|
|
70
|
+
}
|
|
71
|
+
button.primary {
|
|
72
|
+
background: var(--primary-bg, var(--button-bg, var(--control-bg, var(--bg, white))));
|
|
73
|
+
color: var(--primary-fg, var(--button-fg, var(--control-fg, var(--fg, black))));
|
|
74
|
+
}
|
|
75
|
+
button.warning {
|
|
76
|
+
background: var(--warning-bg, var(--button-bg, var(--control-bg, var(--bg, white))));
|
|
77
|
+
color: var(--warning-fg, var(--button-fg, var(--control-fg, var(--fg, black))));
|
|
78
|
+
}</style>
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { SvelteComponent } from "svelte";
|
|
2
|
+
declare const __propDef: {
|
|
3
|
+
props: {
|
|
4
|
+
[x: string]: any;
|
|
5
|
+
primary?: boolean | undefined;
|
|
6
|
+
bg?: string | null | undefined;
|
|
7
|
+
fg?: string | null | undefined;
|
|
8
|
+
padding?: string | null | undefined;
|
|
9
|
+
width?: string | null | undefined;
|
|
10
|
+
height?: string | null | undefined;
|
|
11
|
+
};
|
|
12
|
+
events: {
|
|
13
|
+
click: MouseEvent;
|
|
14
|
+
blur: FocusEvent;
|
|
15
|
+
dblclick: MouseEvent;
|
|
16
|
+
focus: FocusEvent;
|
|
17
|
+
keydown: KeyboardEvent;
|
|
18
|
+
keyup: KeyboardEvent;
|
|
19
|
+
} & {
|
|
20
|
+
[evt: string]: CustomEvent<any>;
|
|
21
|
+
};
|
|
22
|
+
slots: {
|
|
23
|
+
default: {};
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
export type MiniButtonProps = typeof __propDef.props;
|
|
27
|
+
export type MiniButtonEvents = typeof __propDef.events;
|
|
28
|
+
export type MiniButtonSlots = typeof __propDef.slots;
|
|
29
|
+
export default class MiniButton extends SvelteComponent<MiniButtonProps, MiniButtonEvents, MiniButtonSlots> {
|
|
30
|
+
}
|
|
31
|
+
export {};
|