Dwayne Harris
5 years ago
27 changed files with 297 additions and 171 deletions
-
102package-lock.json
-
3package.json
-
8src/components/app.tsx
-
5src/components/controls/button.tsx
-
2src/components/controls/checkbox-field.tsx
-
2src/components/controls/file-field.tsx
-
4src/components/create-group-form.tsx
-
3src/components/create-group-step.tsx
-
7src/components/create-user-form.tsx
-
5src/components/create-user-step.tsx
-
6src/components/group-list-item.tsx
-
2src/components/horizontal-rule.tsx
-
2src/components/pages/apps.tsx
-
13src/components/pages/create-app.tsx
-
23src/components/pages/developers.tsx
-
104src/components/pages/edit-app.tsx
-
4src/components/pages/group-admin.tsx
-
3src/components/pages/groups.tsx
-
13src/components/pages/loading.tsx
-
15src/components/pages/register-group.tsx
-
18src/components/pages/register.tsx
-
26src/components/spinner.tsx
-
1src/images/caret-down.svg
-
36src/styles/app.css
-
47src/styles/spinner.css
-
6src/themes.ts
-
8webpack.config.ts
@ -1,21 +1,15 @@ |
|||
import React, { FC } from 'react' |
|||
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome' |
|||
import { faCircleNotch } from '@fortawesome/free-solid-svg-icons' |
|||
import { useTheme } from 'src/hooks' |
|||
|
|||
interface Props { |
|||
color: string |
|||
const Spinner: FC = () => { |
|||
const theme = useTheme() |
|||
return ( |
|||
<div className="spinner" style={{ color: theme.primary }}> |
|||
<FontAwesomeIcon icon={faCircleNotch} spin size="lg" /> |
|||
</div> |
|||
) |
|||
} |
|||
|
|||
const Spinner: FC<Props> = ({ color }) => ( |
|||
<div className="sk-cube-grid"> |
|||
<div className="sk-cube sk-cube1" style={{ backgroundColor: color }}></div> |
|||
<div className="sk-cube sk-cube2" style={{ backgroundColor: color }}></div> |
|||
<div className="sk-cube sk-cube3" style={{ backgroundColor: color }}></div> |
|||
<div className="sk-cube sk-cube4" style={{ backgroundColor: color }}></div> |
|||
<div className="sk-cube sk-cube5" style={{ backgroundColor: color }}></div> |
|||
<div className="sk-cube sk-cube6" style={{ backgroundColor: color }}></div> |
|||
<div className="sk-cube sk-cube7" style={{ backgroundColor: color }}></div> |
|||
<div className="sk-cube sk-cube8" style={{ backgroundColor: color }}></div> |
|||
<div className="sk-cube sk-cube9" style={{ backgroundColor: color }}></div> |
|||
</div> |
|||
) |
|||
|
|||
export default Spinner |
@ -0,0 +1 @@ |
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path d="M31.3 192h257.3c17.8 0 26.7 21.5 14.1 34.1L174.1 354.8c-7.8 7.8-20.5 7.8-28.3 0L17.2 226.1C4.6 213.5 13.5 192 31.3 192z"/></svg> |
@ -1,47 +0,0 @@ |
|||
.sk-cube-grid { |
|||
width: 30px; |
|||
height: 30px; |
|||
margin: 10px auto; |
|||
} |
|||
|
|||
.sk-cube-grid .sk-cube { |
|||
width: 33%; |
|||
height: 33%; |
|||
float: left; |
|||
animation: sk-cubeGridScaleDelay 1.3s infinite ease-in-out; |
|||
} |
|||
|
|||
.sk-cube-grid .sk-cube1 { |
|||
animation-delay: 0.2s; } |
|||
.sk-cube-grid .sk-cube2 { |
|||
animation-delay: 0.3s; } |
|||
.sk-cube-grid .sk-cube3 { |
|||
animation-delay: 0.4s; } |
|||
.sk-cube-grid .sk-cube4 { |
|||
animation-delay: 0.1s; } |
|||
.sk-cube-grid .sk-cube5 { |
|||
animation-delay: 0.2s; } |
|||
.sk-cube-grid .sk-cube6 { |
|||
animation-delay: 0.3s; } |
|||
.sk-cube-grid .sk-cube7 { |
|||
animation-delay: 0s; } |
|||
.sk-cube-grid .sk-cube8 { |
|||
animation-delay: 0.1s; } |
|||
.sk-cube-grid .sk-cube9 { |
|||
animation-delay: 0.2s; } |
|||
|
|||
@-webkit-keyframes sk-cubeGridScaleDelay { |
|||
0%, 70%, 100% { |
|||
transform: scale3D(1, 1, 1); |
|||
} 35% { |
|||
transform: scale3D(0, 0, 1); |
|||
} |
|||
} |
|||
|
|||
@keyframes sk-cubeGridScaleDelay { |
|||
0%, 70%, 100% { |
|||
transform: scale3D(1, 1, 1); |
|||
} 35% { |
|||
transform: scale3D(0, 0, 1); |
|||
} |
|||
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue