aboutsummaryrefslogtreecommitdiffstats
path: root/src/pages/components
diff options
context:
space:
mode:
Diffstat (limited to 'src/pages/components')
-rw-r--r--src/pages/components/Button.svelte35
-rw-r--r--src/pages/components/Checkbox.svelte52
-rw-r--r--src/pages/components/Input.svelte46
-rw-r--r--src/pages/components/Label.svelte18
-rw-r--r--src/pages/components/Row.svelte12
-rw-r--r--src/pages/components/Select.svelte34
6 files changed, 197 insertions, 0 deletions
diff --git a/src/pages/components/Button.svelte b/src/pages/components/Button.svelte
new file mode 100644
index 00000000..6ae2ba61
--- /dev/null
+++ b/src/pages/components/Button.svelte
@@ -0,0 +1,35 @@
+<button {...$$restProps} on:click {...$$props}>
+ <slot></slot>
+</button>
+
+<style>
+ button {
+ color: var(--text);
+ border: none;
+ text-decoration: none;
+ cursor: pointer;
+ font-size: 16px;
+ font-weight: bold;
+ transition-duration: 0.1s;
+ display: inline-flex;
+ align-items: center;
+ margin: 7.5px 0;
+ background-color: var(--bg-secondary);
+ border-radius: 5px;
+ padding: 10px;
+ }
+
+ button:hover:enabled {
+ color: var(--active);
+ }
+
+ button:active:enabled {
+ transform: translateY(1px);
+ }
+
+ button:disabled {
+ cursor: not-allowed;
+ opacity: 0.5;
+ }
+
+</style>
diff --git a/src/pages/components/Checkbox.svelte b/src/pages/components/Checkbox.svelte
new file mode 100644
index 00000000..d42a4f10
--- /dev/null
+++ b/src/pages/components/Checkbox.svelte
@@ -0,0 +1,52 @@
+<script>
+ export let checked
+ export let onChange
+</script>
+
+<input class={document.body.dir} {...$$restProps} bind:checked on:change={onChange} type="checkbox" />
+
+<style>
+ input[type="checkbox"] {
+ appearance: none;
+ -moz-appearance: none;
+ -webkit-appearance: none;
+ width: 46px;
+ height: 24px;
+ background-color: var(--light-grey);
+ border-radius: 50px;
+ transition: 0.4s;
+ cursor: pointer;
+ }
+
+ input[type="checkbox"]:checked {
+ background-color: var(--active);
+ }
+
+ input[type="checkbox"]::before {
+ content: "";
+ display: inline-block;
+ width: 18px;
+ height: 18px;
+ box-sizing: border-box;
+ position: relative;
+ top: 3px;
+ left: 3.5px;
+ background-color: white;
+ border-radius: 50%;
+ transition: 0.3s;
+ }
+
+ input[type="checkbox"]:checked::before {
+ left: 24px;
+ }
+
+ input[type="checkbox"].rtl::before {
+ left: auto;
+ right: 3.5px;
+ }
+
+ input[type="checkbox"].rtl:checked::before {
+ left: auto;
+ right: 24px;
+ }
+</style>
diff --git a/src/pages/components/Input.svelte b/src/pages/components/Input.svelte
new file mode 100644
index 00000000..59e584db
--- /dev/null
+++ b/src/pages/components/Input.svelte
@@ -0,0 +1,46 @@
+<script>
+ export let value
+</script>
+
+<input
+ {...$$restProps}
+ bind:value
+ on:blur
+ on:change
+ on:click
+ on:contextmenu
+ on:focus
+ on:keydown
+ on:keypress
+ on:keyup
+ on:mouseover
+ on:mouseenter
+ on:mouseleave
+ on:paste
+ on:input
+/>
+
+<style>
+ input {
+ font-weight: bold;
+ box-sizing: border-box;
+ color: var(--text);
+ font-size: 16px;
+ padding: 8px;
+ background-color: var(--bg-secondary);
+ border: none;
+ margin: 0;
+ width: 400px;
+ border-radius: 3px;
+ outline-color: var(--active);
+ }
+
+ input:focus {
+ outline-color: var(--active);
+ }
+ @media (max-width: 715px) {
+ input {
+ width: 200px;
+ }
+ }
+</style>
diff --git a/src/pages/components/Label.svelte b/src/pages/components/Label.svelte
new file mode 100644
index 00000000..39930cd1
--- /dev/null
+++ b/src/pages/components/Label.svelte
@@ -0,0 +1,18 @@
+<span>
+ <slot></slot>
+</span>
+
+<style>
+ span {
+ font-size: 18px;
+ }
+
+ span :global(a) {
+ color: var(--text);
+ text-decoration: none;
+ }
+
+ span :global(a:hover) {
+ text-decoration: underline;
+ }
+</style>
diff --git a/src/pages/components/Row.svelte b/src/pages/components/Row.svelte
new file mode 100644
index 00000000..09246d98
--- /dev/null
+++ b/src/pages/components/Row.svelte
@@ -0,0 +1,12 @@
+<div {...$$restProps} on:click>
+ <slot></slot>
+</div>
+
+<style>
+ div {
+ justify-content: space-between;
+ display: flex;
+ align-items: center;
+ margin: 20px 0;
+ }
+</style>
diff --git a/src/pages/components/Select.svelte b/src/pages/components/Select.svelte
new file mode 100644
index 00000000..7829c53e
--- /dev/null
+++ b/src/pages/components/Select.svelte
@@ -0,0 +1,34 @@
+<script>
+ export let values
+ export let value
+ export let onChange
+ export let ariaLabel
+</script>
+
+<select bind:value on:change={onChange} aria-label={ariaLabel} on:change on:contextmenu on:input>
+ {#each values as option}
+ <option value={option.value}>{option.name}</option>
+ {/each}
+</select>
+
+<style>
+ select {
+ font-weight: bold;
+ box-sizing: border-box;
+ border-style: solid;
+ border-color: #767676;
+ color: var(--text);
+ font-size: 16px;
+ padding: 8px;
+ background-color: var(--bg-secondary);
+ border: none;
+ margin: 0;
+ max-width: 500px;
+ border-radius: 3px;
+ }
+
+ select:disabled {
+ opacity: 0.6;
+ cursor: not-allowed;
+ }
+</style>