Skip to content

Commit 4d6e505

Browse files
committed
feat: add loader component
1 parent 6712cc0 commit 4d6e505

14 files changed

+79
-9
lines changed
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import { SimpleGrid } from '@mantine/core'
2+
import { UiCard, UiLoader } from '@pubkey-ui/core'
3+
4+
export function DemoFeatureLoader() {
5+
return (
6+
<UiCard title="Loader">
7+
<SimpleGrid cols={3}>
8+
<UiLoader />
9+
<UiLoader type="dots" />
10+
<UiLoader type="bars" />
11+
</SimpleGrid>
12+
</UiCard>
13+
)
14+
}

apps/web/src/app/features/demo/demo-feature.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import { DemoFeatureDashboardGrid } from './demo-feature-dashboard-grid'
1010
import { DemoFeatureDebug } from './demo-feature-debug'
1111
import { DemoFeatureGroup } from './demo-feature-group'
1212
import { DemoFeatureHeader } from './demo-feature-header'
13+
import { DemoFeatureLoader } from './demo-feature-loader'
1314
import { DemoFeatureLogo } from './demo-feature-logo'
1415
import { DemoFeatureMenu } from './demo-feature-menu'
1516
import { DemoFeatureNotFound } from './demo-feature-not-found'
@@ -34,6 +35,7 @@ export function DemoFeature() {
3435
{ path: 'debug', label: 'Debug', element: <DemoFeatureDebug /> },
3536
{ path: 'group', label: 'Group', element: <DemoFeatureGroup /> },
3637
{ path: 'header', label: 'Header', element: <DemoFeatureHeader /> },
38+
{ path: 'loader', label: 'Loader', element: <DemoFeatureLoader /> },
3739
{ path: 'logo', label: 'Logo', element: <DemoFeatureLogo /> },
3840
{ path: 'menu', label: 'Menu', element: <DemoFeatureMenu /> },
3941
{ path: 'not-found', label: 'Not Found', element: <DemoFeatureNotFound /> },

packages/core/src/lib/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ export * from './ui-debug'
88
export * from './ui-group'
99
export * from './ui-header'
1010
export * from './ui-layout'
11+
export * from './ui-loader'
1112
export * from './ui-logo'
1213
export * from './ui-menu'
1314
export * from './ui-not-found'
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export * from './ui-loader'
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import { Flex, Loader, LoaderProps } from '@mantine/core'
2+
3+
export function UiLoader({
4+
size = 'xl',
5+
type = 'oval',
6+
flex = 'inline',
7+
...props
8+
}: LoaderProps & {
9+
flex?: 'full' | 'inline'
10+
}) {
11+
return (
12+
<Flex h={flex === 'full' ? '100vh' : '100%'} justify="center" align="center">
13+
<Loader size={size} type={type} {...props} />
14+
</Flex>
15+
)
16+
}

packages/generators/src/generators/component/component-generator-schema.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ export interface ComponentGeneratorSchema {
2424
| 'group'
2525
| 'header'
2626
| 'layout'
27+
| 'loader'
2728
| 'logo'
2829
| 'menu'
2930
| 'not-found'

packages/generators/src/generators/component/component-generator-schema.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
"group",
2727
"header",
2828
"layout",
29+
"loader",
2930
"logo",
3031
"menu",
3132
"not-found",

packages/generators/src/generators/component/component-types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ export const componentTypes: ComponentGeneratorSchema['type'][] = [
1111
'group',
1212
'header',
1313
'layout',
14+
'loader',
1415
'logo',
1516
'menu',
1617
'not-found',
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import { Flex, Loader, LoaderProps } from '@mantine/core'
2+
3+
export function UiLoader({
4+
size = 'xl',
5+
type = 'oval',
6+
flex = 'inline',
7+
...props
8+
}: LoaderProps & {
9+
flex?: 'full' | 'inline'
10+
}) {
11+
return (
12+
<Flex h={flex === 'full' ? '100vh' : '100%'} justify="center" align="center">
13+
<Loader size={size} type={type} {...props} />
14+
</Flex>
15+
)
16+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export * from './<%= prefixFileName %>-loader'
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
import { UiBack, UiCard } from '@pubkey-ui/core'
1+
import { <%= prefix.className %>Back, <%= prefix.className %>Card } from '<%= uiImport %>'
22

33
export function DemoFeatureBack() {
44
return (
5-
<UiCard title="Back">
6-
<UiBack />
7-
</UiCard>
5+
<<%= prefix.className %>Card title="Back">
6+
<<%= prefix.className %>Back />
7+
</<%= prefix.className %>Card>
88
)
99
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import { SimpleGrid } from '@mantine/core'
2+
import { <%= prefix.className %>Card, <%= prefix.className %>Loader } from '<%= uiImport %>'
3+
4+
export function DemoFeatureLoader() {
5+
return (
6+
<<%= prefix.className %>Card title="Loader">
7+
<SimpleGrid cols={3}>
8+
<<%= prefix.className %>Loader />
9+
<<%= prefix.className %>Loader type="dots" />
10+
<<%= prefix.className %>Loader type="bars" />
11+
</SimpleGrid>
12+
</<%= prefix.className %>Card>
13+
)
14+
}
Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
import { UiCardTitle, UiNotFound, UiStack } from '@pubkey-ui/core'
1+
import { <%= prefix.className %>CardTitle, <%= prefix.className %>NotFound, <%= prefix.className %>Stack } from '<%= uiImport %>'
22

33
export function DemoFeatureNotFound() {
44
return (
5-
<UiStack>
6-
<UiCardTitle>NotFound</UiCardTitle>
7-
<UiNotFound />
8-
</UiStack>
5+
<<%= prefix.className %>Stack>
6+
<<%= prefix.className %>CardTitle>NotFound</<%= prefix.className %>CardTitle>
7+
<<%= prefix.className %>NotFound />
8+
</<%= prefix.className %>Stack>
99
)
1010
}

packages/generators/src/generators/feature/files/demo/demo-feature.tsx.template

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import { DemoFeatureDashboardGrid } from './demo-feature-dashboard-grid'
1010
import { DemoFeatureDebug } from './demo-feature-debug'
1111
import { DemoFeatureGroup } from './demo-feature-group'
1212
import { DemoFeatureHeader } from './demo-feature-header'
13+
import { DemoFeatureLoader } from './demo-feature-loader'
1314
import { DemoFeatureLogo } from './demo-feature-logo'
1415
import { DemoFeatureMenu } from './demo-feature-menu'
1516
import { DemoFeatureNotFound } from './demo-feature-not-found'
@@ -34,6 +35,7 @@ element: ReactNode
3435
{ path: 'debug', label: 'Debug', element: <DemoFeatureDebug /> },
3536
{ path: 'group', label: 'Group', element: <DemoFeatureGroup /> },
3637
{ path: 'header', label: 'Header', element: <DemoFeatureHeader /> },
38+
{ path: 'loader', label: 'Loader', element: <DemoFeatureLoader /> },
3739
{ path: 'logo', label: 'Logo', element: <DemoFeatureLogo /> },
3840
{ path: 'menu', label: 'Menu', element: <DemoFeatureMenu /> },
3941
{ path: 'not-found', label: 'Not Found', element: <DemoFeatureNotFound /> },

0 commit comments

Comments
 (0)