@functionalcms/svelte-components 4.36.9 → 5.0.0-beta1

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.
Files changed (127) hide show
  1. package/css/functional.css +48 -1
  2. package/dist/auth/getMachineAccessToken.d.ts +1 -1
  3. package/dist/auth/getMachineAccessToken.js +1 -2
  4. package/dist/auth/machineAuthenticationProvider.d.ts +1 -1
  5. package/dist/auth/machineAuthenticationProvider.js +1 -2
  6. package/dist/auth/tokenRefresh.d.ts +1 -1
  7. package/dist/auth/tokenRefresh.js +4 -5
  8. package/dist/auth/types.js +4 -8
  9. package/dist/auth/userAuthenticationProvider.d.ts +1 -1
  10. package/dist/auth/userAuthenticationProvider.js +1 -2
  11. package/dist/components/Icon.svelte +16 -0
  12. package/dist/components/Icon.svelte.d.ts +9 -0
  13. package/dist/components/content/Markdown.svelte +2 -2
  14. package/dist/components/content/Markdown.svelte.d.ts +17 -4
  15. package/dist/components/form/Dropzone.svelte +2 -5
  16. package/dist/components/form/SmartForm.svelte +206 -60
  17. package/dist/components/form/SmartForm.svelte.d.ts +2 -2
  18. package/dist/components/form/form.d.ts +87 -17
  19. package/dist/components/form/form.js +86 -6
  20. package/dist/components/icons.d.ts +763 -0
  21. package/dist/components/icons.js +765 -0
  22. package/dist/components/integrations/EasyTools.svelte +1 -1
  23. package/dist/components/layouts/DefaultLayout.svelte +92 -41
  24. package/dist/components/layouts/DefaultLayout.svelte.d.ts +17 -8
  25. package/dist/components/layouts/FlexBox.svelte +73 -0
  26. package/dist/components/layouts/FlexBox.svelte.d.ts +17 -0
  27. package/dist/components/layouts/MenuLayout.svelte +39 -201
  28. package/dist/components/layouts/MenuLayout.svelte.d.ts +2 -10
  29. package/dist/components/layouts/StyleBox.svelte +17 -0
  30. package/dist/components/layouts/StyleBox.svelte.d.ts +7 -0
  31. package/dist/components/layouts/Well.svelte +8 -34
  32. package/dist/components/layouts/Well.svelte.d.ts +4 -8
  33. package/dist/components/layouts/menuItems.d.ts +29 -0
  34. package/dist/components/layouts/menuItems.js +28 -0
  35. package/dist/index-server.d.ts +2 -1
  36. package/dist/index-server.js +2 -1
  37. package/dist/index.d.ts +9 -47
  38. package/dist/index.js +8 -59
  39. package/dist/server-side/getServices.d.ts +8 -8
  40. package/dist/server-side/getServices.js +16 -27
  41. package/dist/server-side/handlers/paraglideHandler.d.ts +2 -0
  42. package/dist/server-side/handlers/paraglideHandler.js +13 -0
  43. package/dist/server-side/handlers/redirectPipelineHandler.d.ts +5 -0
  44. package/dist/server-side/{getRedirectPipeline.js → handlers/redirectPipelineHandler.js} +1 -2
  45. package/dist/utils/stringHash.d.ts +1 -0
  46. package/dist/utils/stringHash.js +7 -0
  47. package/package.json +28 -39
  48. package/css/functional.css.map +0 -1
  49. package/dist/components/MaterialIconSet.d.ts +0 -3819
  50. package/dist/components/MaterialIconSet.js +0 -3823
  51. package/dist/components/Styling.d.ts +0 -59
  52. package/dist/components/Styling.js +0 -66
  53. package/dist/components/blog/blog.d.ts +0 -20
  54. package/dist/components/blog/blog.js +0 -29
  55. package/dist/components/dynamic/CopyToClipboard.svelte +0 -16
  56. package/dist/components/dynamic/CopyToClipboard.svelte.d.ts +0 -36
  57. package/dist/components/dynamic/DynamicButton.d.ts +0 -1
  58. package/dist/components/dynamic/DynamicButton.js +0 -10
  59. package/dist/components/dynamic/DynamicButton.svelte +0 -33
  60. package/dist/components/dynamic/DynamicButton.svelte.d.ts +0 -9
  61. package/dist/components/form/Button.svelte +0 -389
  62. package/dist/components/form/Button.svelte.d.ts +0 -30
  63. package/dist/components/form/ChoiceInput.svelte +0 -375
  64. package/dist/components/form/ChoiceInput.svelte.d.ts +0 -3
  65. package/dist/components/form/Input.svelte +0 -461
  66. package/dist/components/form/Input.svelte.d.ts +0 -30
  67. package/dist/components/form/Select.svelte +0 -163
  68. package/dist/components/form/Select.svelte.d.ts +0 -21
  69. package/dist/components/form/Switch.svelte +0 -293
  70. package/dist/components/form/Switch.svelte.d.ts +0 -14
  71. package/dist/components/indicators/Loader.svelte +0 -114
  72. package/dist/components/indicators/Loader.svelte.d.ts +0 -30
  73. package/dist/components/indicators/Spinner.svelte +0 -109
  74. package/dist/components/indicators/Spinner.svelte.d.ts +0 -28
  75. package/dist/components/layouts/Banner.svelte +0 -26
  76. package/dist/components/layouts/Banner.svelte.d.ts +0 -8
  77. package/dist/components/layouts/FoldablePanel.svelte +0 -16
  78. package/dist/components/layouts/FoldablePanel.svelte.d.ts +0 -7
  79. package/dist/components/layouts/SimpleFooter.svelte +0 -23
  80. package/dist/components/layouts/SimpleFooter.svelte.d.ts +0 -8
  81. package/dist/components/layouts/Tabs.svelte +0 -362
  82. package/dist/components/layouts/Tabs.svelte.d.ts +0 -11
  83. package/dist/components/layouts/TwoColumnsLayout.svelte +0 -44
  84. package/dist/components/layouts/TwoColumnsLayout.svelte.d.ts +0 -13
  85. package/dist/components/layouts/menuLayout.d.ts +0 -12
  86. package/dist/components/layouts/menuLayout.js +0 -1
  87. package/dist/components/layouts/tabs.d.ts +0 -21
  88. package/dist/components/layouts/tabs.js +0 -13
  89. package/dist/components/menu/CollapsibleMenu.svelte +0 -66
  90. package/dist/components/menu/CollapsibleMenu.svelte.d.ts +0 -18
  91. package/dist/components/menu/DynamicMenu.svelte +0 -55
  92. package/dist/components/menu/DynamicMenu.svelte.d.ts +0 -13
  93. package/dist/components/menu/HamburgerMenu.svelte +0 -62
  94. package/dist/components/menu/HamburgerMenu.svelte.d.ts +0 -14
  95. package/dist/components/menu/ListMenu.svelte +0 -61
  96. package/dist/components/menu/ListMenu.svelte.d.ts +0 -17
  97. package/dist/components/menu/NavigationDrawer.svelte +0 -53
  98. package/dist/components/menu/NavigationDrawer.svelte.d.ts +0 -18
  99. package/dist/components/menu/types.d.ts +0 -23
  100. package/dist/components/menu/types.js +0 -35
  101. package/dist/components/presentation/Accordion.svelte +0 -82
  102. package/dist/components/presentation/Accordion.svelte.d.ts +0 -11
  103. package/dist/components/presentation/Card.svelte +0 -147
  104. package/dist/components/presentation/Card.svelte.d.ts +0 -15
  105. package/dist/components/presentation/Carousel.d.ts +0 -5
  106. package/dist/components/presentation/Carousel.js +0 -1
  107. package/dist/components/presentation/Carousel.svelte +0 -119
  108. package/dist/components/presentation/Carousel.svelte.d.ts +0 -17
  109. package/dist/components/presentation/Dialog.svelte +0 -75
  110. package/dist/components/presentation/Dialog.svelte.d.ts +0 -22
  111. package/dist/components/presentation/Disclose.svelte +0 -116
  112. package/dist/components/presentation/Disclose.svelte.d.ts +0 -11
  113. package/dist/components/presentation/Drawer.svelte +0 -118
  114. package/dist/components/presentation/Drawer.svelte.d.ts +0 -13
  115. package/dist/components/presentation/EmptyState.svelte +0 -67
  116. package/dist/components/presentation/EmptyState.svelte.d.ts +0 -10
  117. package/dist/components/presentation/Gallery.svelte +0 -35
  118. package/dist/components/presentation/Gallery.svelte.d.ts +0 -14
  119. package/dist/components/presentation/Link.svelte +0 -362
  120. package/dist/components/presentation/Link.svelte.d.ts +0 -27
  121. package/dist/components/utils.d.ts +0 -3
  122. package/dist/components/utils.js +0 -1
  123. package/dist/index.server.d.ts +0 -11
  124. package/dist/index.server.js +0 -10
  125. package/dist/server-side/getRedirectPipeline.d.ts +0 -6
  126. package/dist/utils.d.ts +0 -1
  127. package/dist/utils.js +0 -3
@@ -1,293 +0,0 @@
1
- <script lang="ts">
2
- import { cn } from '../../utils.js';
3
-
4
- interface Props {
5
- id: string;
6
- name: string;
7
- label: string;
8
- css: string;
9
- labelPosition: string;
10
- size: string;
11
- isChecked: boolean;
12
- isBordered: boolean;
13
- isAction: boolean;
14
- isDisabled: boolean;
15
- }
16
- let {
17
- id = '',
18
- name= '',
19
- label = '',
20
- css = '',
21
- labelPosition = 'left',
22
- size = '',
23
- isChecked = false,
24
- isBordered = false,
25
- isAction = false,
26
- isDisabled = false
27
- }: Partial<Props> = $props();
28
-
29
- let switchContainer = $derived(
30
- cn(
31
- 'switch-container',
32
- labelPosition === 'right' ? 'switch-right' : '',
33
- css ? css : '',
34
- isDisabled ? 'disabled' : ''
35
- )
36
- );
37
-
38
- const switchSpan = () => {
39
- let klasses = [
40
- 'switch',
41
- isBordered ? 'switch-border' : '',
42
- isAction ? 'switch-action' : '',
43
- size ? `switch-${size}` : ''
44
- ];
45
- klasses = klasses.filter((klass) => klass.length);
46
- return klasses.join(' ');
47
- };
48
- const handleClick = (evt: any) => {
49
- const el = evt.target;
50
- if (el.getAttribute('aria-checked') == 'true') {
51
- el.setAttribute('aria-checked', 'false');
52
- } else {
53
- el.setAttribute('aria-checked', 'true');
54
- }
55
- };
56
- const handleKeypress = (evt: any) => {
57
- const keyCode = evt.keyCode || evt.which;
58
- switch (keyCode) {
59
- case 13:
60
- evt.preventDefault();
61
- evt.target.click();
62
- break;
63
- }
64
- };
65
- </script>
66
-
67
- <label class={switchContainer} for={id}>
68
- {#if labelPosition === 'left'}<span class="switch-label">{label}</span>{/if}
69
- <input
70
- type="checkbox"
71
- class="switch-input"
72
- {id}
73
- {name}
74
- bind:checked={isChecked}
75
- disabled={isDisabled}
76
- onclick={handleClick}
77
- onkeypress={handleKeypress}
78
- role="switch"
79
- />
80
- <span class={switchSpan()} aria-hidden="true"></span>
81
- {#if labelPosition === 'right'}<span class="switch-label">{label}</span>{/if}
82
- </label>
83
-
84
- <style>
85
- /**
86
- * Switch
87
- *
88
- * This switch is inspired by Scott Ohara's checkbox switch:
89
- * https://scottaohara.github.io/a11y_styled_form_controls/src/checkbox--switch/
90
- */
91
- .switch-container {
92
- display: block;
93
-
94
- /* TODO: Hopefully this doesn't become a problem but since we use absolute
95
- positioning extensively, we need some way to have adjacent spaced lines */
96
- min-height: 2.25rem;
97
- width: 100%;
98
- padding: 0.5rem;
99
- position: relative;
100
- }
101
-
102
- .switch-container:hover {
103
- cursor: pointer;
104
- }
105
-
106
- /* using the before/after pseudo elements of the span to create the "switch" */
107
- .switch::before,
108
- .switch::after {
109
- border: 1px solid var(--gray-mid-dark);
110
- content: '';
111
- position: absolute;
112
- top: 50%;
113
- transform: translateY(-50%);
114
- }
115
-
116
- /* styling specific to the knob of the switch */
117
- .switch::after {
118
- background: #fff;
119
- border-radius: 100%;
120
- width: 1.4rem;
121
- height: 1.4rem;
122
- right: 1.4rem;
123
- transition: right var(--timing-fast) ease-in-out;
124
- }
125
-
126
- /* styling specific to the knob "container" */
127
- .switch::before {
128
- background: #eee;
129
- border-radius: 1.75rem;
130
- width: 2.75rem;
131
- height: 1.75rem;
132
- right: 0.25rem;
133
- transition: background var(--timing-medium) ease-in-out;
134
- }
135
-
136
- /* Sizes */
137
- .switch-small::after {
138
- width: 1.25rem;
139
- height: 1.25rem;
140
- right: 1.125rem;
141
- }
142
-
143
- .switch-small::before {
144
- width: 2.25rem;
145
- height: 1.5rem;
146
- }
147
-
148
- .switch-large::after {
149
- width: 1.65rem;
150
- height: 1.65rem;
151
- right: 1.65rem;
152
- }
153
-
154
- .switch-large::before {
155
- width: 3.25rem;
156
- height: 2rem;
157
- }
158
-
159
- .switch-border::before {
160
- border: 1px solid var(--primary);
161
- }
162
-
163
- .switch-action.switch-border::before {
164
- border: 1px solid var(--action);
165
- }
166
-
167
- /* Switch label on right */
168
-
169
- /* We have to flip the positioning when the label is on the right of switch */
170
- .switch-right .switch::before {
171
- right: initial;
172
- left: 0.25rem;
173
- }
174
-
175
- .switch-right .switch::after {
176
- right: initial;
177
- left: 1.4rem;
178
- }
179
-
180
- /* Switch sizes w/label on right -- I expect SMACSS so .switch .switch-small
181
- classes should both exist so the right: initial was taken care of above :) */
182
- .switch-right .switch-small::after {
183
- left: 1.125rem;
184
- }
185
-
186
- .switch-right .switch-large::after {
187
- left: 1.65rem;
188
- }
189
-
190
- /* ---- CHECKED STATE ----- */
191
-
192
- /* change the position of the knob to indicate it has been checked */
193
-
194
- .switch-input:checked + .switch-small::after {
195
- right: 0.425rem;
196
- }
197
-
198
- .switch-input:checked + .switch::after {
199
- right: 0.5em;
200
- }
201
-
202
- .switch-right .switch-label {
203
- position: absolute;
204
- right: 0;
205
-
206
- /* Flips transition target to left to preserve our smooth transitions */
207
- transition: left var(--timing-fast) ease-in-out;
208
- }
209
-
210
- .switch-right .switch-input:checked + .switch::after {
211
- right: initial;
212
- left: 0.5em;
213
- }
214
-
215
- .switch-right .switch-input:checked + .switch-small::after {
216
- right: initial;
217
- left: 0.425rem;
218
- }
219
-
220
- /* From: https://scottaohara.github.io/a11y_styled_form_controls/src/checkbox--switch/
221
- hide the actual checkbox from view, but not from keyboards or ATs.
222
- Instead of standard visually hidden styling, instead set opacity to
223
- almost 0 (not zero for ChomeVox legacy bug), pointer-events none, and
224
- then set to full height/width of container element so that VO focus
225
- ring outlines the component, instead of a tiny box within the component
226
- */
227
- .switch-input {
228
- margin: 0;
229
- opacity: 0.01%;
230
- position: absolute;
231
- left: 0;
232
- top: 0;
233
- width: 100%;
234
- height: 100%;
235
- pointer-events: none;
236
- }
237
-
238
- .switch-input:focus + .switch::before {
239
- box-shadow: 0 0 0 var(--focus-ring-outline-width) var(--focus-ring-color);
240
- }
241
-
242
- /* update the color of the "container" to further visually indicate state */
243
- .switch-input:checked + .switch:not(.switch-border)::before {
244
- background: var(--primary);
245
- }
246
-
247
- .switch-input:checked + .switch-action:not(.switch-border)::before {
248
- background: var(--action);
249
- }
250
-
251
- /* Border switch on checked the thumb gets primary or action bg respectively */
252
- .switch-input:checked + .switch-border::after {
253
- background: var(--primary);
254
- }
255
-
256
- .switch-input:checked + .switch-action.switch-border::after {
257
- background: var(--action);
258
- }
259
-
260
- /* Disabled aka :disabled is not actually supported for <label>
261
- element so we use attribute selector for that:
262
- https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/disabled#:~:text=The%20disabled%20attribute%20is%20supported,control%20or%20its%20descendant%20controls.
263
- */
264
- .switch-input[disabled] + .switch,
265
- .switch-input[disabled] + .switch-label,
266
- .switch-container.disabled {
267
- color: var(--input-disabled-color, var(--disabled-color)) !important;
268
- appearance: none !important;
269
- box-shadow: none !important;
270
- cursor: not-allowed !important;
271
- opacity: 80% !important;
272
- }
273
-
274
- @media screen and (-ms-high-contrast: active) {
275
- .switch::after {
276
- background-color: windowText;
277
- }
278
-
279
- /* High contrast mode outline hacks */
280
- .switch-input[disabled] + .switch-label,
281
- .switch-container.disabled {
282
- outline: 2px solid transparent;
283
- outline-offset: -2px;
284
- }
285
- }
286
-
287
- @media (prefers-reduced-motion), (update: slow) {
288
- .switch::after,
289
- .switch::before {
290
- transition-duration: 0.001ms !important;
291
- }
292
- }
293
- </style>
@@ -1,14 +0,0 @@
1
- declare const Switch: import("svelte").Component<Partial<{
2
- id: string;
3
- name: string;
4
- label: string;
5
- css: string;
6
- labelPosition: string;
7
- size: string;
8
- isChecked: boolean;
9
- isBordered: boolean;
10
- isAction: boolean;
11
- isDisabled: boolean;
12
- }>, {}, "">;
13
- type Switch = ReturnType<typeof Switch>;
14
- export default Switch;
@@ -1,114 +0,0 @@
1
- <script>
2
- export let ariaLabel = 'Loading…';
3
- export let size = '';
4
- export let loaderClasses = ['loader', size ? `loader-${size}` : ''].filter((c) => c).join(' ');
5
- </script>
6
-
7
- <div class={loaderClasses} role="status" aria-live="polite" aria-busy="true">
8
- <span class="screenreader-only">{ariaLabel}</span>
9
- </div>
10
-
11
- <style>
12
- .loader {
13
- --loading-color: var(--agnostic-loading-color, var(--agnostic-dark));
14
- --loading-size: var(--fluid-16);
15
- --loading-size-small: var(--fluid-12);
16
- --loading-size-large: var(--fluid-18);
17
-
18
- position: relative;
19
- box-sizing: border-box;
20
- animation: blink 1s infinite;
21
- animation-delay: 250ms;
22
-
23
- /* Make up for negative positioning */
24
- margin-left: var(--loading-size);
25
-
26
- /* Initially set zero until aria-busy becomes true */
27
- opacity: 0%;
28
- }
29
-
30
- .loader,
31
- .loader::before,
32
- .loader::after {
33
- width: calc(var(--loading-size) / 2);
34
- height: calc(var(--loading-size) / 2);
35
- border-radius: var(--fluid-6);
36
- background-color: var(--loading-color);
37
- }
38
-
39
- /* SMALL */
40
- .loader-small,
41
- .loader-small::before,
42
- .loader-small::after {
43
- width: calc(var(--loading-size-small) / 2);
44
- height: calc(var(--loading-size-small) / 2);
45
- }
46
-
47
- /* LARGE */
48
- .loader-large,
49
- .loader-large::before,
50
- .loader-large::after {
51
- width: calc(var(--loading-size-large) / 2);
52
- height: calc(var(--loading-size-large) / 2);
53
- border-radius: var(--fluid-8);
54
- }
55
-
56
- .loader::before,
57
- .loader::after {
58
- content: '';
59
- display: inline-block;
60
- position: absolute;
61
- top: 0;
62
- animation: blink 1s infinite;
63
- }
64
-
65
- .loader::before {
66
- left: calc(-1 * var(--loading-size));
67
- animation-delay: 0s;
68
- }
69
-
70
- .loader::after {
71
- left: var(--loading-size);
72
- animation-delay: 500ms;
73
- }
74
-
75
- /* SMALL */
76
- .loader-small::before {
77
- left: calc(-1 * var(--loading-size-small));
78
- }
79
-
80
- .loader-small::after {
81
- left: var(--loading-size-small);
82
- }
83
-
84
- /* LARGE */
85
- .loader-large::before {
86
- left: calc(-1 * var(--loading-size-large));
87
- animation-delay: 0s;
88
- }
89
-
90
- .loader-large::after {
91
- left: var(--loading-size-large);
92
- }
93
-
94
- /**
95
- * Setting aria-busy to true results in corresponding opacity change to visually show spinner.
96
- */
97
- .loader[aria-busy='true'] {
98
- opacity: 100%;
99
- }
100
-
101
- @keyframes blink {
102
- 50% {
103
- background-color: transparent;
104
- }
105
- }
106
-
107
- @media (prefers-reduced-motion), (update: slow) {
108
- .loader,
109
- .loader::before,
110
- .loader::after {
111
- transition-duration: 0.001ms !important;
112
- }
113
- }
114
- </style>
@@ -1,30 +0,0 @@
1
- export default Loader;
2
- type Loader = SvelteComponent<{
3
- size?: string | undefined;
4
- ariaLabel?: string | undefined;
5
- loaderClasses?: string | undefined;
6
- }, {
7
- [evt: string]: CustomEvent<any>;
8
- }, {}> & {
9
- $$bindings?: string | undefined;
10
- };
11
- declare const Loader: $$__sveltets_2_IsomorphicComponent<{
12
- size?: string | undefined;
13
- ariaLabel?: string | undefined;
14
- loaderClasses?: string | undefined;
15
- }, {
16
- [evt: string]: CustomEvent<any>;
17
- }, {}, {}, string>;
18
- interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
19
- new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
20
- $$bindings?: Bindings;
21
- } & Exports;
22
- (internal: unknown, props: Props & {
23
- $$events?: Events;
24
- $$slots?: Slots;
25
- }): Exports & {
26
- $set?: any;
27
- $on?: any;
28
- };
29
- z_$$bindings?: Bindings;
30
- }
@@ -1,109 +0,0 @@
1
-
2
- <style>
3
- .spinner {
4
- --spinner-color: var(--agnostic-spinner-color, var(--agnostic-dark));
5
-
6
- /**
7
- * Inspiration to utilize grid for this from
8
- * https://dockyard.com/blog/2020/03/02/accessible-loading-indicatorswith-no-extra-elements
9
- */
10
- display: grid;
11
- grid-template: "content" 100% / auto;
12
- place-items: center;
13
- box-sizing: border-box;
14
- }
15
-
16
- .spinner::before,
17
- .spinner::after {
18
- grid-area: content;
19
- width: var(--fluid-32);
20
- height: var(--fluid-32);
21
- content: "";
22
- display: block;
23
- border-radius: 50%;
24
- border-width: 3px;
25
- border-style: solid;
26
- }
27
-
28
- .spinner-small::before,
29
- .spinner-small::after {
30
- width: var(--fluid-24);
31
- height: var(--fluid-24);
32
- border-width: var(--fluid-2);
33
- }
34
-
35
- .spinner-large::before,
36
- .spinner-large::after {
37
- width: var(--fluid-40);
38
- height: var(--fluid-40);
39
- border-width: var(--fluid-4);
40
- }
41
-
42
- .spinner-xlarge::before,
43
- .spinner-xlarge::after {
44
- width: var(--fluid-56);
45
- height: var(--fluid-56);
46
- border-width: var(--fluid-6);
47
- }
48
-
49
- /**
50
- * Before is the muted background
51
- */
52
- .spinner::before {
53
- opacity: 0%;
54
- border-color: var(--spinner-color);
55
- }
56
-
57
- /**
58
- * After is the inner "snake"
59
- */
60
- .spinner::after {
61
- opacity: 0%;
62
- border-color: transparent var(--spinner-color) transparent transparent;
63
- transition: opacity 0.1s;
64
- pointer-events: none;
65
- animation: loading-circle 1s ease-in-out infinite;
66
-
67
- /* TODO Research the whole null transform hack. It is quite confusing to figure out if it
68
- is beneficial or detrimental: See
69
- https://newbedev.com/css-keyframe-animation-cpu-usage-is-high-should-it-be-this-way
70
- transform: translateZ(0);
71
- will-change: transform; */
72
- }
73
-
74
- /**
75
- * Setting aria-busy to true results in corresponding opacity change to visually show spinner.
76
- */
77
- .spinner[aria-busy="true"]::before {
78
- opacity: 12%;
79
- }
80
-
81
- .spinner[aria-busy="true"]::after {
82
- opacity: 100%;
83
- }
84
-
85
- @keyframes loading-circle {
86
- to {
87
- transform: rotate(360deg);
88
- }
89
- }
90
-
91
- @media (prefers-reduced-motion), (update: slow) {
92
- .spinner::after {
93
- transition-duration: 0.001ms !important;
94
- }
95
- }
96
-
97
- </style>
98
-
99
- <script>
100
- export let ariaLabel = "Loading…";
101
- export let size = "";
102
- $: spinnerClasses = ["spinner", size ? `spinner-${size}` : ""]
103
- .filter((c) => c)
104
- .join(" ");
105
- </script>
106
-
107
- <div class={spinnerClasses} role="status" aria-live="polite" aria-busy="true">
108
- <span class="screenreader-only">{ariaLabel}</span>
109
- </div>
@@ -1,28 +0,0 @@
1
- export default Spinner;
2
- type Spinner = SvelteComponent<{
3
- size?: string | undefined;
4
- ariaLabel?: string | undefined;
5
- }, {
6
- [evt: string]: CustomEvent<any>;
7
- }, {}> & {
8
- $$bindings?: string | undefined;
9
- };
10
- declare const Spinner: $$__sveltets_2_IsomorphicComponent<{
11
- size?: string | undefined;
12
- ariaLabel?: string | undefined;
13
- }, {
14
- [evt: string]: CustomEvent<any>;
15
- }, {}, {}, string>;
16
- interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
17
- new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
18
- $$bindings?: Bindings;
19
- } & Exports;
20
- (internal: unknown, props: Props & {
21
- $$events?: Events;
22
- $$slots?: Slots;
23
- }): Exports & {
24
- $set?: any;
25
- $on?: any;
26
- };
27
- z_$$bindings?: Bindings;
28
- }
@@ -1,26 +0,0 @@
1
- <script lang="ts">
2
- import type { Snippet } from 'svelte';
3
- import { cn } from '../../utils.js';
4
-
5
- interface Props {
6
- children: Snippet;
7
- background?: string;
8
- css?: string;
9
- }
10
-
11
- let { children, background = '', css = '' }: Partial<Props> = $props();
12
-
13
- const bannerKlasses = cn('banner', css);
14
- </script>
15
-
16
- <div class={bannerKlasses} style="--banner-background: {background};">
17
- {@render children?.()}
18
- </div>
19
-
20
- <style>
21
- div.banner {
22
- background: var(--banner-background);
23
- height: 100%;
24
- width: 100%;
25
- }
26
- </style>
@@ -1,8 +0,0 @@
1
- import type { Snippet } from 'svelte';
2
- declare const Banner: import("svelte").Component<Partial<{
3
- children: Snippet;
4
- background?: string;
5
- css?: string;
6
- }>, {}, "">;
7
- type Banner = ReturnType<typeof Banner>;
8
- export default Banner;
@@ -1,16 +0,0 @@
1
- <script lang="ts">
2
- import type { Snippet } from 'svelte';
3
-
4
- interface Props {
5
- children: Snippet;
6
- }
7
-
8
- let { children }: Props = $props();
9
- </script>
10
-
11
- <aside>
12
- {@render children()}
13
- </aside>
14
-
15
- <style>
16
- </style>
@@ -1,7 +0,0 @@
1
- import type { Snippet } from 'svelte';
2
- interface Props {
3
- children: Snippet;
4
- }
5
- declare const FoldablePanel: import("svelte").Component<Props, {}, "">;
6
- type FoldablePanel = ReturnType<typeof FoldablePanel>;
7
- export default FoldablePanel;
@@ -1,23 +0,0 @@
1
- <script lang="ts">
2
- interface Props {
3
- companyName: string;
4
- motto?: string;
5
- logoUrl?: string;
6
- }
7
-
8
- let { companyName = '', motto = '', logoUrl = '' }: Props = $props();
9
- </script>
10
-
11
- <aside class="grid-flow-col items-center">
12
- <img src={logoUrl} alt={companyName} />
13
- <p>{motto}</p>
14
- <p>Copyright © 2025 - All right reserved by {companyName}</p>
15
- <p>Powerd by <a href="https://functional-cms.com">Functional CMS</a></p>
16
- </aside>
17
-
18
- <style>
19
- aside {
20
- text-align: center;
21
- font-size: smaller;
22
- }
23
- </style>
@@ -1,8 +0,0 @@
1
- interface Props {
2
- companyName: string;
3
- motto?: string;
4
- logoUrl?: string;
5
- }
6
- declare const SimpleFooter: import("svelte").Component<Props, {}, "">;
7
- type SimpleFooter = ReturnType<typeof SimpleFooter>;
8
- export default SimpleFooter;