@sierra-95/svelte-scaffold 1.0.9 → 1.0.10
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 +8 -8
- package/dist/Hooks/preview.d.ts +2 -1
- package/dist/Hooks/preview.js +4 -4
- package/dist/components/Core/Alerts/Backdrop/backdrop.svelte +26 -26
- package/dist/components/Core/Alerts/Modal/modal.svelte +40 -40
- package/dist/components/Core/Alerts/Toast/toast.css +38 -38
- package/dist/components/Core/Alerts/Toast/toast.svelte +32 -32
- package/dist/components/Core/Alerts/Wrapper/wrapper.svelte +18 -18
- package/dist/components/Core/Alerts/site-under-maintenance/site-under-maintenance.svelte +33 -33
- package/dist/components/Core/Form/Hr/hr.svelte +10 -10
- package/dist/components/Core/Form/Input/FileInput/fileInput.svelte +158 -158
- package/dist/components/Core/Form/Input/FileInput/preview.svelte +50 -50
- package/dist/components/Core/Form/Input/SearchBar/search.svelte +68 -68
- package/dist/components/Core/Form/Input/input/input.svelte +16 -16
- package/dist/components/Core/Form/Input/password/password.svelte +26 -26
- package/dist/components/Core/Menus/DropdownContainer/dropdown.svelte +94 -94
- package/dist/components/Core/Menus/MenuItem/menuItem.svelte +43 -43
- package/dist/components/Core/Menus/UserMenu/profile.svelte +34 -34
- package/dist/components/Core/others/Button/Flip/button.css +50 -50
- package/dist/components/Core/others/Button/Flip/button.svelte +79 -79
- package/dist/components/Core/others/Button/Marquee/button.css +36 -36
- package/dist/components/Core/others/Button/Marquee/button.svelte +58 -58
- package/dist/components/Core/others/Button/Swipe/button.css +32 -32
- package/dist/components/Core/others/Button/Swipe/button.svelte +57 -57
- package/dist/components/Core/others/Button/default/button.css +60 -60
- package/dist/components/Core/others/Button/default/button.svelte +124 -124
- package/dist/components/Core/others/Button/select/select.svelte +28 -28
- package/dist/components/Core/others/Button/theme/theme.css +121 -121
- package/dist/components/Core/others/Button/theme/theme.svelte +67 -67
- package/dist/components/Core/others/Button/times/times.svelte +24 -24
- package/dist/components/Core/others/Clock/Date/date.svelte +25 -25
- package/dist/components/Core/others/Clock/Time/time.svelte +35 -35
- package/dist/components/Core/others/Previews/Audio/audio.svelte +61 -61
- package/dist/components/Core/others/Previews/Document/documents.svelte +36 -36
- package/dist/components/Core/others/Previews/GenericFile/genericFile.svelte +25 -25
- package/dist/components/Core/others/Previews/Image/image.svelte +26 -26
- package/dist/components/Core/others/Previews/Video/video.svelte +28 -28
- package/dist/components/Core/others/Progress/CircularProgress/CircularProgress.svelte +55 -55
- package/dist/components/Core/others/Progress/CustomProgress/customProgress.svelte +64 -64
- package/dist/components/Core/others/Progress/LinearProgress/LinearProgress.css +60 -60
- package/dist/components/Core/others/Progress/LinearProgress/LinearProgress.svelte +86 -86
- package/dist/components/Modules/Editor/Hooks/extractContent.js +14 -14
- package/dist/components/Modules/Editor/Hooks/extractImage.js +30 -30
- package/dist/components/Modules/Editor/Hooks/insertImage.js +26 -26
- package/dist/components/Modules/Editor/Hooks/insertYoutube.js +34 -34
- package/dist/components/Modules/Editor/Marks/Links/links.svelte +78 -78
- package/dist/components/Modules/Editor/Marks/TextFormatting/textFormatting.svelte +32 -32
- package/dist/components/Modules/Editor/Nodes/Headings/heading.svelte +58 -58
- package/dist/components/Modules/Editor/Nodes/History/history.svelte +21 -21
- package/dist/components/Modules/Editor/Nodes/Images/images.svelte +85 -85
- package/dist/components/Modules/Editor/Nodes/Lists/lists.svelte +30 -30
- package/dist/components/Modules/Editor/Nodes/TextAlign/textAlign.svelte +55 -55
- package/dist/components/Modules/Editor/Nodes/TextColor/styles.css +18 -18
- package/dist/components/Modules/Editor/Nodes/TextColor/textColor.svelte +88 -88
- package/dist/components/Modules/Editor/Nodes/Youtube/youtube.svelte +32 -32
- package/dist/components/Modules/Editor/colors.js +21 -21
- package/dist/components/Modules/Editor/controls.svelte +71 -71
- package/dist/components/Modules/Editor/extensions.js +59 -59
- package/dist/components/Modules/Editor/main.svelte +41 -41
- package/dist/components/Modules/Editor/save.svelte +28 -28
- package/dist/components/Modules/Editor/styles/controls.css +68 -68
- package/dist/components/Modules/Editor/styles/main.css +42 -42
- package/dist/components/Modules/Editor/tools.js +22 -22
- package/dist/components/Modules/FilePicker/cloudStore.svelte +101 -98
- package/dist/components/Modules/FilePicker/controls.svelte +167 -141
- package/dist/components/Modules/FilePicker/controls.svelte.d.ts +4 -19
- package/dist/components/Modules/FilePicker/filePicker.svelte +59 -59
- package/dist/components/Modules/FilePicker/file_properties.svelte +33 -0
- package/dist/components/Modules/FilePicker/file_properties.svelte.d.ts +11 -0
- package/dist/components/Modules/FilePicker/previews.svelte +22 -22
- package/dist/components/Modules/Layout/Header/header.css +37 -37
- package/dist/components/Modules/Layout/Header/header.svelte +31 -31
- package/dist/components/Modules/Layout/Menu/menu.css +53 -53
- package/dist/components/Modules/Layout/Menu/menu.svelte +129 -129
- package/dist/components/Modules/Layout/background.svelte +28 -28
- package/dist/components/Modules/Layout/collapse.svelte +24 -24
- package/dist/components/Modules/Layout/main.css +31 -31
- package/dist/components/Modules/Layout/main.svelte +110 -110
- package/dist/global.css +246 -246
- package/dist/index.d.ts +1 -0
- package/dist/stores/core/general.js +4 -4
- package/dist/stores/core/ismobile.js +14 -14
- package/dist/stores/core/modal.js +35 -35
- package/dist/stores/modules/fileInput.d.ts +11 -4
- package/dist/stores/modules/fileInput.js +1 -1
- package/package.json +75 -75
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
const {
|
|
3
|
-
...rest
|
|
4
|
-
} = $props();
|
|
5
|
-
</script>
|
|
6
|
-
<style>
|
|
7
|
-
#sierra-button-select{
|
|
8
|
-
position: absolute;
|
|
9
|
-
top: 6px;
|
|
10
|
-
right: 6px;
|
|
11
|
-
width: 22px;
|
|
12
|
-
height: 22px;
|
|
13
|
-
border-radius: 50%;
|
|
14
|
-
background: var(--primary-bg);
|
|
15
|
-
display: flex;
|
|
16
|
-
align-items: center;
|
|
17
|
-
justify-content: center;
|
|
18
|
-
z-index: 2;
|
|
19
|
-
}
|
|
20
|
-
</style>
|
|
21
|
-
<button
|
|
22
|
-
aria-label="Selected"
|
|
23
|
-
id="sierra-button-select"
|
|
24
|
-
{...rest}
|
|
25
|
-
onclick={(e: MouseEvent) => {
|
|
26
|
-
rest.onclick?.(e);
|
|
27
|
-
}}
|
|
28
|
-
><i class="fa fa-check" style="color: white; font-size: 12px;"></i>
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
const {
|
|
3
|
+
...rest
|
|
4
|
+
} = $props();
|
|
5
|
+
</script>
|
|
6
|
+
<style>
|
|
7
|
+
#sierra-button-select{
|
|
8
|
+
position: absolute;
|
|
9
|
+
top: 6px;
|
|
10
|
+
right: 6px;
|
|
11
|
+
width: 22px;
|
|
12
|
+
height: 22px;
|
|
13
|
+
border-radius: 50%;
|
|
14
|
+
background: var(--primary-bg);
|
|
15
|
+
display: flex;
|
|
16
|
+
align-items: center;
|
|
17
|
+
justify-content: center;
|
|
18
|
+
z-index: 2;
|
|
19
|
+
}
|
|
20
|
+
</style>
|
|
21
|
+
<button
|
|
22
|
+
aria-label="Selected"
|
|
23
|
+
id="sierra-button-select"
|
|
24
|
+
{...rest}
|
|
25
|
+
onclick={(e: MouseEvent) => {
|
|
26
|
+
rest.onclick?.(e);
|
|
27
|
+
}}
|
|
28
|
+
><i class="fa fa-check" style="color: white; font-size: 12px;"></i>
|
|
29
29
|
</button>
|
|
@@ -1,122 +1,122 @@
|
|
|
1
|
-
#sierra-theme-toggle {
|
|
2
|
-
--hue: 223;
|
|
3
|
-
--trans-dur: 0.6s;
|
|
4
|
-
--trans-timing: cubic-bezier(0.65,0,0.35,1);
|
|
5
|
-
font-size: calc(60px + (120 - 60) * (100vw - 320px) / (2560 - 320));
|
|
6
|
-
}
|
|
7
|
-
#sierra-theme-toggle * {
|
|
8
|
-
border: 0;
|
|
9
|
-
box-sizing: border-box;
|
|
10
|
-
margin: 0;
|
|
11
|
-
padding: 0;
|
|
12
|
-
}
|
|
13
|
-
#sierra-theme-toggle,
|
|
14
|
-
#sierra-theme-toggle .switch__input {
|
|
15
|
-
display: block;
|
|
16
|
-
-webkit-tap-highlight-color: transparent;
|
|
17
|
-
}
|
|
18
|
-
#sierra-theme-toggle {
|
|
19
|
-
font-size: 25px;
|
|
20
|
-
margin: auto;
|
|
21
|
-
position: relative;
|
|
22
|
-
-webkit-user-select: none;
|
|
23
|
-
-moz-user-select: none;
|
|
24
|
-
user-select: none;
|
|
25
|
-
cursor: pointer;
|
|
26
|
-
width: 68.75px;
|
|
27
|
-
overflow: hidden;
|
|
28
|
-
border-radius: 0.8em;
|
|
29
|
-
box-shadow: var(--box-shadow);
|
|
30
|
-
}
|
|
31
|
-
#sierra-theme-toggle .switch__icon {
|
|
32
|
-
color: hsla(var(--hue),10%,80%);
|
|
33
|
-
position: absolute;
|
|
34
|
-
top: 0.375em;
|
|
35
|
-
left: 0.375em;
|
|
36
|
-
width: 0.75em;
|
|
37
|
-
height: 0.75em;
|
|
38
|
-
transition:
|
|
39
|
-
color var(--trans-dur),
|
|
40
|
-
transform var(--trans-dur) var(--trans-timing);
|
|
41
|
-
}
|
|
42
|
-
#sierra-theme-toggle .switch__icon:nth-of-type(2) {
|
|
43
|
-
right: 0.375em;
|
|
44
|
-
left: auto;
|
|
45
|
-
}
|
|
46
|
-
#sierra-theme-toggle .switch__inner,
|
|
47
|
-
#sierra-theme-toggle .switch__inner-icons {
|
|
48
|
-
border-radius: 0.5em;
|
|
49
|
-
display: block;
|
|
50
|
-
overflow: hidden;
|
|
51
|
-
position: absolute;
|
|
52
|
-
top: 0.25em;
|
|
53
|
-
left: 0.25em;
|
|
54
|
-
width: 2.25em;
|
|
55
|
-
height: 1em;
|
|
56
|
-
}
|
|
57
|
-
#sierra-theme-toggle .switch__inner:before,
|
|
58
|
-
#sierra-theme-toggle .switch__inner-icons {
|
|
59
|
-
transition: transform var(--trans-dur) var(--trans-timing);
|
|
60
|
-
transform: translateX(-1.25em);
|
|
61
|
-
}
|
|
62
|
-
#sierra-theme-toggle .switch__inner:before {
|
|
63
|
-
background-color: var(--primary-bg);
|
|
64
|
-
border-radius: inherit;
|
|
65
|
-
content: "";
|
|
66
|
-
display: block;
|
|
67
|
-
width: 100%;
|
|
68
|
-
height: 100%;
|
|
69
|
-
}
|
|
70
|
-
#sierra-theme-toggle .switch__inner-icons {
|
|
71
|
-
pointer-events: none;
|
|
72
|
-
}
|
|
73
|
-
#sierra-theme-toggle .switch__inner-icons .switch__icon {
|
|
74
|
-
color: hsl(0,0%,100%);
|
|
75
|
-
top: 0.125em;
|
|
76
|
-
left: 0.125em;
|
|
77
|
-
transform: translateX(1.25em);
|
|
78
|
-
}
|
|
79
|
-
#sierra-theme-toggle .switch__inner-icons .switch__icon:nth-child(2) {
|
|
80
|
-
right: 0.125em;
|
|
81
|
-
left: auto;
|
|
82
|
-
}
|
|
83
|
-
#sierra-theme-toggle .switch__input {
|
|
84
|
-
background-color: hsl(0,0%,100%);
|
|
85
|
-
border-radius: 0.75em;
|
|
86
|
-
box-shadow:
|
|
87
|
-
0 0 0 0.0625em hsla(var(--hue),90%,50%,0),
|
|
88
|
-
0 0.125em 0.5em hsla(var(--hue),10%,10%,0.1);
|
|
89
|
-
outline: transparent;
|
|
90
|
-
width: 2.75em;
|
|
91
|
-
height: 1.5em;
|
|
92
|
-
-webkit-appearance: none;
|
|
93
|
-
appearance: none;
|
|
94
|
-
transition:
|
|
95
|
-
background-color var(--trans-dur),
|
|
96
|
-
box-shadow var(--trans-dur);
|
|
97
|
-
}
|
|
98
|
-
#sierra-theme-toggle .switch__input:checked {
|
|
99
|
-
background-color: hsl(var(--hue),10%,10%);
|
|
100
|
-
}
|
|
101
|
-
#sierra-theme-toggle .switch__input:checked ~ .switch__icon {
|
|
102
|
-
color: hsla(var(--hue),10%,40%);
|
|
103
|
-
}
|
|
104
|
-
#sierra-theme-toggle .switch__input:checked ~ .switch__inner:before,
|
|
105
|
-
#sierra-theme-toggle .switch__input:checked ~ .switch__inner-icons {
|
|
106
|
-
transform: translateX(1.25em);
|
|
107
|
-
}
|
|
108
|
-
#sierra-theme-toggle .switch__input:not(:checked) ~ .switch__icon:first-of-type,
|
|
109
|
-
#sierra-theme-toggle .switch__input:checked ~ .switch__icon:nth-of-type(2) {
|
|
110
|
-
transform: rotate(360deg);
|
|
111
|
-
}
|
|
112
|
-
#sierra-theme-toggle .switch__input:checked ~ .switch__inner-icons .switch__icon:first-of-type {
|
|
113
|
-
transform: translateX(-1.25em) rotate(-360deg);
|
|
114
|
-
}
|
|
115
|
-
#sierra-theme-toggle .switch__input:checked ~ .switch__inner-icons .switch__icon:nth-of-type(2) {
|
|
116
|
-
transform: translateX(-1.25em) rotate(360deg);
|
|
117
|
-
}
|
|
118
|
-
#sierra-theme-toggle .switch__input:focus-visible {
|
|
119
|
-
box-shadow:
|
|
120
|
-
0 0 0 0.0625em hsla(var(--hue),90%,50%,1),
|
|
121
|
-
0 0.125em 0.5em hsla(var(--hue),10%,10%,0.1);
|
|
1
|
+
#sierra-theme-toggle {
|
|
2
|
+
--hue: 223;
|
|
3
|
+
--trans-dur: 0.6s;
|
|
4
|
+
--trans-timing: cubic-bezier(0.65,0,0.35,1);
|
|
5
|
+
font-size: calc(60px + (120 - 60) * (100vw - 320px) / (2560 - 320));
|
|
6
|
+
}
|
|
7
|
+
#sierra-theme-toggle * {
|
|
8
|
+
border: 0;
|
|
9
|
+
box-sizing: border-box;
|
|
10
|
+
margin: 0;
|
|
11
|
+
padding: 0;
|
|
12
|
+
}
|
|
13
|
+
#sierra-theme-toggle,
|
|
14
|
+
#sierra-theme-toggle .switch__input {
|
|
15
|
+
display: block;
|
|
16
|
+
-webkit-tap-highlight-color: transparent;
|
|
17
|
+
}
|
|
18
|
+
#sierra-theme-toggle {
|
|
19
|
+
font-size: 25px;
|
|
20
|
+
margin: auto;
|
|
21
|
+
position: relative;
|
|
22
|
+
-webkit-user-select: none;
|
|
23
|
+
-moz-user-select: none;
|
|
24
|
+
user-select: none;
|
|
25
|
+
cursor: pointer;
|
|
26
|
+
width: 68.75px;
|
|
27
|
+
overflow: hidden;
|
|
28
|
+
border-radius: 0.8em;
|
|
29
|
+
box-shadow: var(--box-shadow);
|
|
30
|
+
}
|
|
31
|
+
#sierra-theme-toggle .switch__icon {
|
|
32
|
+
color: hsla(var(--hue),10%,80%);
|
|
33
|
+
position: absolute;
|
|
34
|
+
top: 0.375em;
|
|
35
|
+
left: 0.375em;
|
|
36
|
+
width: 0.75em;
|
|
37
|
+
height: 0.75em;
|
|
38
|
+
transition:
|
|
39
|
+
color var(--trans-dur),
|
|
40
|
+
transform var(--trans-dur) var(--trans-timing);
|
|
41
|
+
}
|
|
42
|
+
#sierra-theme-toggle .switch__icon:nth-of-type(2) {
|
|
43
|
+
right: 0.375em;
|
|
44
|
+
left: auto;
|
|
45
|
+
}
|
|
46
|
+
#sierra-theme-toggle .switch__inner,
|
|
47
|
+
#sierra-theme-toggle .switch__inner-icons {
|
|
48
|
+
border-radius: 0.5em;
|
|
49
|
+
display: block;
|
|
50
|
+
overflow: hidden;
|
|
51
|
+
position: absolute;
|
|
52
|
+
top: 0.25em;
|
|
53
|
+
left: 0.25em;
|
|
54
|
+
width: 2.25em;
|
|
55
|
+
height: 1em;
|
|
56
|
+
}
|
|
57
|
+
#sierra-theme-toggle .switch__inner:before,
|
|
58
|
+
#sierra-theme-toggle .switch__inner-icons {
|
|
59
|
+
transition: transform var(--trans-dur) var(--trans-timing);
|
|
60
|
+
transform: translateX(-1.25em);
|
|
61
|
+
}
|
|
62
|
+
#sierra-theme-toggle .switch__inner:before {
|
|
63
|
+
background-color: var(--primary-bg);
|
|
64
|
+
border-radius: inherit;
|
|
65
|
+
content: "";
|
|
66
|
+
display: block;
|
|
67
|
+
width: 100%;
|
|
68
|
+
height: 100%;
|
|
69
|
+
}
|
|
70
|
+
#sierra-theme-toggle .switch__inner-icons {
|
|
71
|
+
pointer-events: none;
|
|
72
|
+
}
|
|
73
|
+
#sierra-theme-toggle .switch__inner-icons .switch__icon {
|
|
74
|
+
color: hsl(0,0%,100%);
|
|
75
|
+
top: 0.125em;
|
|
76
|
+
left: 0.125em;
|
|
77
|
+
transform: translateX(1.25em);
|
|
78
|
+
}
|
|
79
|
+
#sierra-theme-toggle .switch__inner-icons .switch__icon:nth-child(2) {
|
|
80
|
+
right: 0.125em;
|
|
81
|
+
left: auto;
|
|
82
|
+
}
|
|
83
|
+
#sierra-theme-toggle .switch__input {
|
|
84
|
+
background-color: hsl(0,0%,100%);
|
|
85
|
+
border-radius: 0.75em;
|
|
86
|
+
box-shadow:
|
|
87
|
+
0 0 0 0.0625em hsla(var(--hue),90%,50%,0),
|
|
88
|
+
0 0.125em 0.5em hsla(var(--hue),10%,10%,0.1);
|
|
89
|
+
outline: transparent;
|
|
90
|
+
width: 2.75em;
|
|
91
|
+
height: 1.5em;
|
|
92
|
+
-webkit-appearance: none;
|
|
93
|
+
appearance: none;
|
|
94
|
+
transition:
|
|
95
|
+
background-color var(--trans-dur),
|
|
96
|
+
box-shadow var(--trans-dur);
|
|
97
|
+
}
|
|
98
|
+
#sierra-theme-toggle .switch__input:checked {
|
|
99
|
+
background-color: hsl(var(--hue),10%,10%);
|
|
100
|
+
}
|
|
101
|
+
#sierra-theme-toggle .switch__input:checked ~ .switch__icon {
|
|
102
|
+
color: hsla(var(--hue),10%,40%);
|
|
103
|
+
}
|
|
104
|
+
#sierra-theme-toggle .switch__input:checked ~ .switch__inner:before,
|
|
105
|
+
#sierra-theme-toggle .switch__input:checked ~ .switch__inner-icons {
|
|
106
|
+
transform: translateX(1.25em);
|
|
107
|
+
}
|
|
108
|
+
#sierra-theme-toggle .switch__input:not(:checked) ~ .switch__icon:first-of-type,
|
|
109
|
+
#sierra-theme-toggle .switch__input:checked ~ .switch__icon:nth-of-type(2) {
|
|
110
|
+
transform: rotate(360deg);
|
|
111
|
+
}
|
|
112
|
+
#sierra-theme-toggle .switch__input:checked ~ .switch__inner-icons .switch__icon:first-of-type {
|
|
113
|
+
transform: translateX(-1.25em) rotate(-360deg);
|
|
114
|
+
}
|
|
115
|
+
#sierra-theme-toggle .switch__input:checked ~ .switch__inner-icons .switch__icon:nth-of-type(2) {
|
|
116
|
+
transform: translateX(-1.25em) rotate(360deg);
|
|
117
|
+
}
|
|
118
|
+
#sierra-theme-toggle .switch__input:focus-visible {
|
|
119
|
+
box-shadow:
|
|
120
|
+
0 0 0 0.0625em hsla(var(--hue),90%,50%,1),
|
|
121
|
+
0 0.125em 0.5em hsla(var(--hue),10%,10%,0.1);
|
|
122
122
|
}
|
|
@@ -1,68 +1,68 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import './theme.css';
|
|
3
|
-
import { onMount } from 'svelte';
|
|
4
|
-
import {theme} from '../../../../../index.js';
|
|
5
|
-
|
|
6
|
-
let isDark = false;
|
|
7
|
-
|
|
8
|
-
onMount(() => {
|
|
9
|
-
const unsubscribe = theme.subscribe(value => {
|
|
10
|
-
isDark = value === 'dark';
|
|
11
|
-
});
|
|
12
|
-
return () => unsubscribe();
|
|
13
|
-
});
|
|
14
|
-
|
|
15
|
-
function toggleTheme(e: Event) {
|
|
16
|
-
const target = e.target as HTMLInputElement;
|
|
17
|
-
isDark = target.checked;
|
|
18
|
-
theme.set(isDark ? 'dark' : 'light');
|
|
19
|
-
}
|
|
20
|
-
</script>
|
|
21
|
-
|
|
22
|
-
<main>
|
|
23
|
-
<svg style="display: none;">
|
|
24
|
-
<symbol id="light" viewBox="0 0 24 24">
|
|
25
|
-
<g stroke="currentColor" stroke-width="2" stroke-linecap="round">
|
|
26
|
-
<line x1="12" y1="17" x2="12" y2="20" transform="rotate(0,12,12)" />
|
|
27
|
-
<line x1="12" y1="17" x2="12" y2="20" transform="rotate(45,12,12)" />
|
|
28
|
-
<line x1="12" y1="17" x2="12" y2="20" transform="rotate(90,12,12)" />
|
|
29
|
-
<line x1="12" y1="17" x2="12" y2="20" transform="rotate(135,12,12)" />
|
|
30
|
-
<line x1="12" y1="17" x2="12" y2="20" transform="rotate(180,12,12)" />
|
|
31
|
-
<line x1="12" y1="17" x2="12" y2="20" transform="rotate(225,12,12)" />
|
|
32
|
-
<line x1="12" y1="17" x2="12" y2="20" transform="rotate(270,12,12)" />
|
|
33
|
-
<line x1="12" y1="17" x2="12" y2="20" transform="rotate(315,12,12)" />
|
|
34
|
-
</g>
|
|
35
|
-
<circle fill="currentColor" cx="12" cy="12" r="5" />
|
|
36
|
-
</symbol>
|
|
37
|
-
<symbol id="dark" viewBox="0 0 24 24">
|
|
38
|
-
<path fill="currentColor" d="M15.1,14.9c-3-0.5-5.5-3-6-6C8.8,7.1,9.1,5.4,9.9,4c0.4-0.8-0.4-1.7-1.2-1.4C4.6,4,1.8,7.9,2,12.5c0.2,5.1,4.4,9.3,9.5,9.5c4.5,0.2,8.5-2.6,9.9-6.6c0.3-0.8-0.6-1.7-1.4-1.2C18.6,14.9,16.9,15.2,15.1,14.9z" />
|
|
39
|
-
</symbol>
|
|
40
|
-
</svg>
|
|
41
|
-
<label id="sierra-theme-toggle">
|
|
42
|
-
<input
|
|
43
|
-
hidden
|
|
44
|
-
class="switch__input"
|
|
45
|
-
type="checkbox"
|
|
46
|
-
role="switch"
|
|
47
|
-
name="dark"
|
|
48
|
-
bind:checked={isDark}
|
|
49
|
-
on:change={toggleTheme}
|
|
50
|
-
/>
|
|
51
|
-
<button aria-label="button"></button>
|
|
52
|
-
<svg class="switch__icon" width="24px" height="24px" aria-hidden="true">
|
|
53
|
-
<use href="#light" />
|
|
54
|
-
</svg>
|
|
55
|
-
<svg class="switch__icon" width="24px" height="24px" aria-hidden="true">
|
|
56
|
-
<use href="#dark" />
|
|
57
|
-
</svg>
|
|
58
|
-
<span class="switch__inner"></span>
|
|
59
|
-
<span class="switch__inner-icons">
|
|
60
|
-
<svg class="switch__icon" width="24px" height="24px" aria-hidden="true">
|
|
61
|
-
<use href="#light" />
|
|
62
|
-
</svg>
|
|
63
|
-
<svg class="switch__icon" width="24px" height="24px" aria-hidden="true">
|
|
64
|
-
<use href="#dark" />
|
|
65
|
-
</svg>
|
|
66
|
-
</span>
|
|
67
|
-
</label>
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import './theme.css';
|
|
3
|
+
import { onMount } from 'svelte';
|
|
4
|
+
import {theme} from '../../../../../index.js';
|
|
5
|
+
|
|
6
|
+
let isDark = false;
|
|
7
|
+
|
|
8
|
+
onMount(() => {
|
|
9
|
+
const unsubscribe = theme.subscribe(value => {
|
|
10
|
+
isDark = value === 'dark';
|
|
11
|
+
});
|
|
12
|
+
return () => unsubscribe();
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
function toggleTheme(e: Event) {
|
|
16
|
+
const target = e.target as HTMLInputElement;
|
|
17
|
+
isDark = target.checked;
|
|
18
|
+
theme.set(isDark ? 'dark' : 'light');
|
|
19
|
+
}
|
|
20
|
+
</script>
|
|
21
|
+
|
|
22
|
+
<main>
|
|
23
|
+
<svg style="display: none;">
|
|
24
|
+
<symbol id="light" viewBox="0 0 24 24">
|
|
25
|
+
<g stroke="currentColor" stroke-width="2" stroke-linecap="round">
|
|
26
|
+
<line x1="12" y1="17" x2="12" y2="20" transform="rotate(0,12,12)" />
|
|
27
|
+
<line x1="12" y1="17" x2="12" y2="20" transform="rotate(45,12,12)" />
|
|
28
|
+
<line x1="12" y1="17" x2="12" y2="20" transform="rotate(90,12,12)" />
|
|
29
|
+
<line x1="12" y1="17" x2="12" y2="20" transform="rotate(135,12,12)" />
|
|
30
|
+
<line x1="12" y1="17" x2="12" y2="20" transform="rotate(180,12,12)" />
|
|
31
|
+
<line x1="12" y1="17" x2="12" y2="20" transform="rotate(225,12,12)" />
|
|
32
|
+
<line x1="12" y1="17" x2="12" y2="20" transform="rotate(270,12,12)" />
|
|
33
|
+
<line x1="12" y1="17" x2="12" y2="20" transform="rotate(315,12,12)" />
|
|
34
|
+
</g>
|
|
35
|
+
<circle fill="currentColor" cx="12" cy="12" r="5" />
|
|
36
|
+
</symbol>
|
|
37
|
+
<symbol id="dark" viewBox="0 0 24 24">
|
|
38
|
+
<path fill="currentColor" d="M15.1,14.9c-3-0.5-5.5-3-6-6C8.8,7.1,9.1,5.4,9.9,4c0.4-0.8-0.4-1.7-1.2-1.4C4.6,4,1.8,7.9,2,12.5c0.2,5.1,4.4,9.3,9.5,9.5c4.5,0.2,8.5-2.6,9.9-6.6c0.3-0.8-0.6-1.7-1.4-1.2C18.6,14.9,16.9,15.2,15.1,14.9z" />
|
|
39
|
+
</symbol>
|
|
40
|
+
</svg>
|
|
41
|
+
<label id="sierra-theme-toggle">
|
|
42
|
+
<input
|
|
43
|
+
hidden
|
|
44
|
+
class="switch__input"
|
|
45
|
+
type="checkbox"
|
|
46
|
+
role="switch"
|
|
47
|
+
name="dark"
|
|
48
|
+
bind:checked={isDark}
|
|
49
|
+
on:change={toggleTheme}
|
|
50
|
+
/>
|
|
51
|
+
<button aria-label="button"></button>
|
|
52
|
+
<svg class="switch__icon" width="24px" height="24px" aria-hidden="true">
|
|
53
|
+
<use href="#light" />
|
|
54
|
+
</svg>
|
|
55
|
+
<svg class="switch__icon" width="24px" height="24px" aria-hidden="true">
|
|
56
|
+
<use href="#dark" />
|
|
57
|
+
</svg>
|
|
58
|
+
<span class="switch__inner"></span>
|
|
59
|
+
<span class="switch__inner-icons">
|
|
60
|
+
<svg class="switch__icon" width="24px" height="24px" aria-hidden="true">
|
|
61
|
+
<use href="#light" />
|
|
62
|
+
</svg>
|
|
63
|
+
<svg class="switch__icon" width="24px" height="24px" aria-hidden="true">
|
|
64
|
+
<use href="#dark" />
|
|
65
|
+
</svg>
|
|
66
|
+
</span>
|
|
67
|
+
</label>
|
|
68
68
|
</main>
|
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
const {
|
|
3
|
-
vertical = 'top',
|
|
4
|
-
horizontal = 'right',
|
|
5
|
-
...rest
|
|
6
|
-
} = $props();
|
|
7
|
-
</script>
|
|
8
|
-
<style>
|
|
9
|
-
.sierra-times-top{
|
|
10
|
-
transform: translate(50%, -50%);
|
|
11
|
-
}
|
|
12
|
-
.sierra-times-bottom{
|
|
13
|
-
transform: translate(50%, 50%);
|
|
14
|
-
}
|
|
15
|
-
</style>
|
|
16
|
-
<button
|
|
17
|
-
{...rest}
|
|
18
|
-
onclick={(e: MouseEvent) => {
|
|
19
|
-
rest.onclick?.(e);
|
|
20
|
-
}}
|
|
21
|
-
style="position: absolute; {vertical}: 0; {horizontal}: 0;"
|
|
22
|
-
aria-label="Times Button"
|
|
23
|
-
class={vertical === 'top' ? 'sierra-times-top' : 'sierra-times-bottom'}
|
|
24
|
-
><i class="fa fa-times-circle"></i>
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
const {
|
|
3
|
+
vertical = 'top',
|
|
4
|
+
horizontal = 'right',
|
|
5
|
+
...rest
|
|
6
|
+
} = $props();
|
|
7
|
+
</script>
|
|
8
|
+
<style>
|
|
9
|
+
.sierra-times-top{
|
|
10
|
+
transform: translate(50%, -50%);
|
|
11
|
+
}
|
|
12
|
+
.sierra-times-bottom{
|
|
13
|
+
transform: translate(50%, 50%);
|
|
14
|
+
}
|
|
15
|
+
</style>
|
|
16
|
+
<button
|
|
17
|
+
{...rest}
|
|
18
|
+
onclick={(e: MouseEvent) => {
|
|
19
|
+
rest.onclick?.(e);
|
|
20
|
+
}}
|
|
21
|
+
style="position: absolute; {vertical}: 0; {horizontal}: 0;"
|
|
22
|
+
aria-label="Times Button"
|
|
23
|
+
class={vertical === 'top' ? 'sierra-times-top' : 'sierra-times-bottom'}
|
|
24
|
+
><i class="fa fa-times-circle"></i>
|
|
25
25
|
</button>
|
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import { onMount } from "svelte";
|
|
3
|
-
|
|
4
|
-
export let timezone: string = "Africa/Nairobi";
|
|
5
|
-
|
|
6
|
-
let time = new Date();
|
|
7
|
-
let interval: ReturnType<typeof setInterval>;
|
|
8
|
-
|
|
9
|
-
onMount(() => {
|
|
10
|
-
interval = setInterval(() => {
|
|
11
|
-
time = new Date();
|
|
12
|
-
}, 1000);
|
|
13
|
-
|
|
14
|
-
return () => clearInterval(interval);
|
|
15
|
-
});
|
|
16
|
-
|
|
17
|
-
$: dateString = new Intl.DateTimeFormat("en-GB", {
|
|
18
|
-
weekday: "long",
|
|
19
|
-
day: "numeric",
|
|
20
|
-
month: "long",
|
|
21
|
-
timeZone: timezone
|
|
22
|
-
}).format(time);
|
|
23
|
-
</script>
|
|
24
|
-
|
|
25
|
-
<div>{dateString}</div>
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { onMount } from "svelte";
|
|
3
|
+
|
|
4
|
+
export let timezone: string = "Africa/Nairobi";
|
|
5
|
+
|
|
6
|
+
let time = new Date();
|
|
7
|
+
let interval: ReturnType<typeof setInterval>;
|
|
8
|
+
|
|
9
|
+
onMount(() => {
|
|
10
|
+
interval = setInterval(() => {
|
|
11
|
+
time = new Date();
|
|
12
|
+
}, 1000);
|
|
13
|
+
|
|
14
|
+
return () => clearInterval(interval);
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
$: dateString = new Intl.DateTimeFormat("en-GB", {
|
|
18
|
+
weekday: "long",
|
|
19
|
+
day: "numeric",
|
|
20
|
+
month: "long",
|
|
21
|
+
timeZone: timezone
|
|
22
|
+
}).format(time);
|
|
23
|
+
</script>
|
|
24
|
+
|
|
25
|
+
<div>{dateString}</div>
|
|
@@ -1,35 +1,35 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import { onMount } from 'svelte';
|
|
3
|
-
|
|
4
|
-
export let timezone: string = 'Africa/Nairobi';
|
|
5
|
-
|
|
6
|
-
let time = new Date();
|
|
7
|
-
let interval: ReturnType<typeof setInterval>;
|
|
8
|
-
|
|
9
|
-
onMount(() => {
|
|
10
|
-
interval = setInterval(() => {
|
|
11
|
-
time = new Date();
|
|
12
|
-
}, 1000);
|
|
13
|
-
|
|
14
|
-
return () => clearInterval(interval);
|
|
15
|
-
});
|
|
16
|
-
|
|
17
|
-
$: timeString = new Intl.DateTimeFormat('en-GB', {
|
|
18
|
-
timeStyle: 'medium',
|
|
19
|
-
timeZone: timezone
|
|
20
|
-
}).format(time);
|
|
21
|
-
|
|
22
|
-
$: ampm = new Intl.DateTimeFormat('en-GB', {
|
|
23
|
-
hour12: true,
|
|
24
|
-
hour: 'numeric',
|
|
25
|
-
timeZone: timezone
|
|
26
|
-
}).format(time).split(' ')[1];
|
|
27
|
-
|
|
28
|
-
$: city = timezone.split('/')[1]?.replace('_', ' ') || '';
|
|
29
|
-
</script>
|
|
30
|
-
|
|
31
|
-
<div style="display: flex; align-items:last baseline; gap: 0.2rem;">
|
|
32
|
-
{timeString}
|
|
33
|
-
<span class="time">{ampm}</span>
|
|
34
|
-
<span class="time">{city}</span>
|
|
35
|
-
</div>
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { onMount } from 'svelte';
|
|
3
|
+
|
|
4
|
+
export let timezone: string = 'Africa/Nairobi';
|
|
5
|
+
|
|
6
|
+
let time = new Date();
|
|
7
|
+
let interval: ReturnType<typeof setInterval>;
|
|
8
|
+
|
|
9
|
+
onMount(() => {
|
|
10
|
+
interval = setInterval(() => {
|
|
11
|
+
time = new Date();
|
|
12
|
+
}, 1000);
|
|
13
|
+
|
|
14
|
+
return () => clearInterval(interval);
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
$: timeString = new Intl.DateTimeFormat('en-GB', {
|
|
18
|
+
timeStyle: 'medium',
|
|
19
|
+
timeZone: timezone
|
|
20
|
+
}).format(time);
|
|
21
|
+
|
|
22
|
+
$: ampm = new Intl.DateTimeFormat('en-GB', {
|
|
23
|
+
hour12: true,
|
|
24
|
+
hour: 'numeric',
|
|
25
|
+
timeZone: timezone
|
|
26
|
+
}).format(time).split(' ')[1];
|
|
27
|
+
|
|
28
|
+
$: city = timezone.split('/')[1]?.replace('_', ' ') || '';
|
|
29
|
+
</script>
|
|
30
|
+
|
|
31
|
+
<div style="display: flex; align-items:last baseline; gap: 0.2rem;">
|
|
32
|
+
{timeString}
|
|
33
|
+
<span class="time">{ampm}</span>
|
|
34
|
+
<span class="time">{city}</span>
|
|
35
|
+
</div>
|