File tree Expand file tree Collapse file tree 3 files changed +77
-7
lines changed
svelte/src/lib/components Expand file tree Collapse file tree 3 files changed +77
-7
lines changed Original file line number Diff line number Diff line change 1+ <script module >
2+ import { defineMeta } from ' @storybook/addon-svelte-csf' ;
3+
4+ import LoadingSpinner from ' ./LoadingSpinner.svelte' ;
5+
6+ const { Story } = defineMeta ({
7+ title: ' LoadingSpinner' ,
8+ component: LoadingSpinner,
9+ tags: [' autodocs' ],
10+ argTypes: {
11+ theme: {
12+ control: ' inline-radio' ,
13+ options: [undefined , ' light' ],
14+ },
15+ },
16+ });
17+ </script >
18+
19+ <Story name =" Default" />
20+
21+ <Story name ="Light Theme" args ={{ theme : ' light' }} />
22+
23+ <Story name =" Custom Size" asChild >
24+ <LoadingSpinner style =" --spinner-size: 32px;" />
25+ </Story >
Original file line number Diff line number Diff line change 1+ <script lang =" ts" >
2+ import type { HTMLAttributes } from ' svelte/elements' ;
3+
4+ interface Props extends HTMLAttributes <HTMLDivElement > {
5+ theme? : ' light' ;
6+ }
7+
8+ let { theme, class : className, ... restProps }: Props = $props ();
9+ </script >
10+
11+ <div class ={[' spinner' , theme , className ]} {...restProps }>
12+ <span class =" sr-only" >Loading...</span >
13+ </div >
14+
15+ <style >
16+ .spinner {
17+ --spinner-color : currentcolor ;
18+ --spinner-bg-color : var (--gray-border );
19+ --spinner-size : 16px ;
20+
21+ display : inline-block ;
22+ height : var (--spinner-size );
23+ width : var (--spinner-size );
24+
25+ &:global(.light ) {
26+ --spinner-bg-color : rgba (0 , 0 , 0 , 0.2 );
27+ }
28+
29+ &::after {
30+ content : ' ' ;
31+ display : block ;
32+ box-sizing : border-box ;
33+ width : var (--spinner-size );
34+ height : var (--spinner-size );
35+ border-radius : 50% ;
36+ border : calc (var (--spinner-size ) / 5.5 ) solid var (--spinner-color );
37+ border-color : var (--spinner-bg-color ) var (--spinner-bg-color ) var (--spinner-color ) var (--spinner-bg-color );
38+ animation : spinner 1.2s linear infinite ;
39+ }
40+ }
41+
42+ @keyframes spinner {
43+ 0% {
44+ transform : rotate (0deg );
45+ }
46+ 100% {
47+ transform : rotate (360deg );
48+ }
49+ }
50+ </style >
Original file line number Diff line number Diff line change 22 import type { Snippet } from ' svelte' ;
33 import type { HTMLAttributes } from ' svelte/elements' ;
44
5- // TODO: import LoadingSpinner from '. /LoadingSpinner.svelte';
5+ import LoadingSpinner from ' $lib/components /LoadingSpinner.svelte' ;
66
77 interface Props extends HTMLAttributes <HTMLDivElement > {
88 title? : string ;
2424 <small class ="suffix" >{suffix }</small >
2525 {/if }
2626 {#if showSpinner }
27- <!-- TODO: <LoadingSpinner class="loading-spinner" data-test-spinner /> -->
28- <span class =" loading-spinner" data-test-spinner >Loading...</span >
27+ <LoadingSpinner style =" margin-left: var(--space-2xs)" data-test-spinner />
2928 {/if }
3029 </h1 >
3130 {/if }
4948 color : var (--main-color-light );
5049 padding-left : var (--space-2xs );
5150 }
52-
53- .loading-spinner {
54- margin : 0 var (--space-2xs );
55- }
5651 </style >
You can’t perform that action at this time.
0 commit comments