@a-type/ui 2.1.21 → 2.3.0
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/dist/cjs/components/box/Box.d.ts +2 -1
- package/dist/cjs/components/box/Box.js +3 -1
- package/dist/cjs/components/box/Box.js.map +1 -1
- package/dist/cjs/components/button/classes.js +6 -6
- package/dist/cjs/components/button/classes.js.map +1 -1
- package/dist/cjs/components/checkbox/Checkbox.js +1 -1
- package/dist/cjs/components/checkbox/Checkbox.js.map +1 -1
- package/dist/cjs/components/input/Input.js +1 -1
- package/dist/cjs/components/input/Input.js.map +1 -1
- package/dist/cjs/components/layouts/PageContent.d.ts +2 -7
- package/dist/cjs/components/layouts/PageContent.js +8 -5
- package/dist/cjs/components/layouts/PageContent.js.map +1 -1
- package/dist/cjs/components/layouts/PageNav.js +1 -1
- package/dist/cjs/components/layouts/PageNav.js.map +1 -1
- package/dist/cjs/components/layouts/PageRoot.js +1 -1
- package/dist/cjs/components/layouts/PageRoot.js.map +1 -1
- package/dist/cjs/components/layouts/layouts.stories.d.ts +1 -0
- package/dist/cjs/components/layouts/layouts.stories.js +13 -3
- package/dist/cjs/components/layouts/layouts.stories.js.map +1 -1
- package/dist/cjs/components/navBar/NavBar.js +1 -1
- package/dist/cjs/components/navBar/NavBar.js.map +1 -1
- package/dist/cjs/uno/colors.d.ts +43 -0
- package/dist/cjs/uno/colors.js +44 -1
- package/dist/cjs/uno/colors.js.map +1 -1
- package/dist/cjs/uno.preset.js +19 -43
- package/dist/cjs/uno.preset.js.map +1 -1
- package/dist/css/main.css +2 -2
- package/dist/esm/components/box/Box.d.ts +2 -1
- package/dist/esm/components/box/Box.js +3 -1
- package/dist/esm/components/box/Box.js.map +1 -1
- package/dist/esm/components/button/classes.js +6 -6
- package/dist/esm/components/button/classes.js.map +1 -1
- package/dist/esm/components/checkbox/Checkbox.js +1 -1
- package/dist/esm/components/checkbox/Checkbox.js.map +1 -1
- package/dist/esm/components/input/Input.js +1 -1
- package/dist/esm/components/input/Input.js.map +1 -1
- package/dist/esm/components/layouts/PageContent.d.ts +2 -7
- package/dist/esm/components/layouts/PageContent.js +8 -5
- package/dist/esm/components/layouts/PageContent.js.map +1 -1
- package/dist/esm/components/layouts/PageNav.js +1 -1
- package/dist/esm/components/layouts/PageNav.js.map +1 -1
- package/dist/esm/components/layouts/PageRoot.js +1 -1
- package/dist/esm/components/layouts/PageRoot.js.map +1 -1
- package/dist/esm/components/layouts/layouts.stories.d.ts +1 -0
- package/dist/esm/components/layouts/layouts.stories.js +12 -2
- package/dist/esm/components/layouts/layouts.stories.js.map +1 -1
- package/dist/esm/components/navBar/NavBar.js +1 -1
- package/dist/esm/components/navBar/NavBar.js.map +1 -1
- package/dist/esm/uno/colors.d.ts +43 -0
- package/dist/esm/uno/colors.js +43 -0
- package/dist/esm/uno/colors.js.map +1 -1
- package/dist/esm/uno.preset.js +20 -44
- package/dist/esm/uno.preset.js.map +1 -1
- package/package.json +1 -1
- package/src/components/box/Box.tsx +4 -0
- package/src/components/button/classes.tsx +6 -7
- package/src/components/checkbox/Checkbox.tsx +1 -4
- package/src/components/input/Input.tsx +1 -1
- package/src/components/layouts/PageContent.tsx +24 -29
- package/src/components/layouts/PageNav.tsx +2 -2
- package/src/components/layouts/PageRoot.tsx +3 -3
- package/src/components/layouts/layouts.stories.tsx +104 -39
- package/src/components/navBar/NavBar.tsx +1 -1
- package/src/uno/colors.ts +44 -0
- package/src/uno.preset.ts +15 -45
|
@@ -48,6 +48,7 @@ export interface BoxProps extends Omit<SlotDivProps, 'wrap'> {
|
|
|
48
48
|
border?: boolean;
|
|
49
49
|
full?: boolean | 'width' | 'height';
|
|
50
50
|
overflow?: 'hidden' | 'auto' | 'auto-x' | 'auto-y';
|
|
51
|
+
grow?: boolean;
|
|
51
52
|
ref?: Ref<HTMLDivElement>;
|
|
52
53
|
}
|
|
53
54
|
|
|
@@ -69,6 +70,7 @@ export function Box({
|
|
|
69
70
|
full,
|
|
70
71
|
overflow,
|
|
71
72
|
col,
|
|
73
|
+
grow,
|
|
72
74
|
ref,
|
|
73
75
|
...rest
|
|
74
76
|
}: BoxProps) {
|
|
@@ -186,6 +188,8 @@ export function Box({
|
|
|
186
188
|
overflow === 'auto-x',
|
|
187
189
|
'layer-components:(overflow-y-auto overflow-x-hidden)':
|
|
188
190
|
overflow === 'auto-y',
|
|
191
|
+
'layer-components:flex-grow': grow,
|
|
192
|
+
'layer-components:@container': container === true,
|
|
189
193
|
},
|
|
190
194
|
theme && `theme-${theme}`,
|
|
191
195
|
className,
|
|
@@ -13,8 +13,7 @@ export function getButtonClassName({
|
|
|
13
13
|
align?: ButtonProps['align'];
|
|
14
14
|
}) {
|
|
15
15
|
return classNames(
|
|
16
|
-
'layer-components:(px-4 py-2 bg-[var(--bg-neutral,var(--bg))] [--webkit-tap-highlight-color:transparent] [line-height:1] text-size-md font-inherit border border-
|
|
17
|
-
'layer-components:()',
|
|
16
|
+
'layer-components:(px-4 py-2 bg-[var(--bg-neutral,var(--bg))] [--webkit-tap-highlight-color:transparent] [line-height:1] text-size-md font-inherit border-solid border-thin border-color-transparent rounded-lg cursor-pointer font-bold flex flex-row gap-1 items-center relative overflow-visible select-none all:transition duration-200 whitespace-nowrap ring-color-bg)',
|
|
18
17
|
'layer-components:hover:(bg-[var(--bg)] bg-darken-1 ring-4)',
|
|
19
18
|
'layer-components:focus:outline-off',
|
|
20
19
|
'layer-components:focus-visible:(bg-[var(--bg)] outline-off bg-darken-1 ring-6)',
|
|
@@ -36,15 +35,15 @@ export function getButtonClassName({
|
|
|
36
35
|
}
|
|
37
36
|
|
|
38
37
|
const colors = {
|
|
39
|
-
primary: `layer-variants:[&.btn-color-primary]:([--bg:var(--color-primary)] shadow-sm color-black border-primary-dark)`,
|
|
38
|
+
primary: `layer-variants:[&.btn-color-primary]:([--bg:var(--color-primary)] shadow-sm color-black border-color-primary-dark)`,
|
|
40
39
|
accent: `layer-variants:[&.btn-color-accent]:([--bg-neutral:var(--color-accent-wash)] [--bg:var(--color-accent-light)] shadow-sm color-black border-accent-dark)`,
|
|
41
40
|
default: `layer-variants:[&.btn-color-default]:([--bg-neutral:var(--color-white)] [--bg:var(--color-gray-light)] shadow-sm color-black border-gray-dark)`,
|
|
42
41
|
ghost: `layer-variants:[&.btn-color-ghost]:([--bg-neutral:transparent] [--bg:oklch(from_var(--color-gray)_l_c_h/50%)] color-dark-blend)`,
|
|
43
|
-
destructive: `layer-variants:[&.btn-color-destructive]:([--bg:var(--color-attention)] shadow-sm border-attention-dark color-black ))`,
|
|
42
|
+
destructive: `layer-variants:[&.btn-color-destructive]:([--bg:var(--color-attention)] shadow-sm border-color-attention-dark color-black ))`,
|
|
44
43
|
ghostDestructive: `layer-variants:[&.btn-color-ghostDestructive]:([--bg-neutral:transparent] [--bg:var(--color-attention-light)] color-attention-dark hover:(color-black) focus-visible:(color-black))`,
|
|
45
|
-
ghostAccent: `layer-variants:[&.btn-color-ghostAccent]:([--bg-neutral:transparent] [--bg:var(--color-accent-
|
|
46
|
-
contrast: `layer-variants:[&.btn-color-contrast]:([--bg:var(--color-black)] color-white border-black hover:bg-lighten-1 focus-visible:bg-lighten-1 active:bg-lighten-1)`,
|
|
47
|
-
unstyled: `layer-variants:(bg-transparent hover:(bg-transparent) focus:(bg-transparent) active:(bg-transparent) color-inherit border-
|
|
44
|
+
ghostAccent: `layer-variants:[&.btn-color-ghostAccent]:([--bg-neutral:transparent] [--bg:var(--color-accent-light)] color-accent-dark hover:color-black focus-visible:color-black)`,
|
|
45
|
+
contrast: `layer-variants:[&.btn-color-contrast]:([--bg:var(--color-black)] color-white border-color-black hover:bg-lighten-1 focus-visible:bg-lighten-1 active:bg-lighten-1)`,
|
|
46
|
+
unstyled: `layer-variants:(bg-transparent hover:(bg-transparent) focus:(bg-transparent) active:(bg-transparent) color-inherit border-color-transparent shadow-none hover:(shadow-none) focus:(shadow-none) active:(shadow-none) p-0 items-start font-inherit font-normal rounded-none text-size-inherit transition-none)`,
|
|
48
47
|
};
|
|
49
48
|
export const buttonColorClasses = colors;
|
|
50
49
|
|
|
@@ -45,10 +45,7 @@ export function CheckboxIndicator({
|
|
|
45
45
|
}: CheckboxPrimitive.CheckboxIndicatorProps) {
|
|
46
46
|
return (
|
|
47
47
|
<CheckboxPrimitive.Indicator
|
|
48
|
-
className={classNames(
|
|
49
|
-
'absolute center translate-[-50%] color-black',
|
|
50
|
-
className,
|
|
51
|
-
)}
|
|
48
|
+
className={classNames('absolute center color-black', className)}
|
|
52
49
|
{...props}
|
|
53
50
|
>
|
|
54
51
|
{children ?? <CheckIcon width={18} height={18} />}
|
|
@@ -4,7 +4,7 @@ import { ChangeEvent, ComponentProps, FocusEvent, useCallback } from 'react';
|
|
|
4
4
|
import { useRotatingShuffledValue } from '../../hooks/useRotatingShuffledValue.js';
|
|
5
5
|
|
|
6
6
|
export const inputClassName = classNames(
|
|
7
|
-
'layer-components:(px-5 py-1.25 text-md font-inherit rounded-xl bg-white select-auto min-w-60px color-black border-solid border border-gray-dark shadow-sm-inset)',
|
|
7
|
+
'layer-components:(px-5 py-1.25 text-md font-inherit rounded-xl bg-white select-auto min-w-60px color-black border-solid border-width-thin border-gray-dark shadow-sm-inset)',
|
|
8
8
|
'layer-components:focus:(outline-none bg-lighten-2 ring-4 ring-white)',
|
|
9
9
|
'layer-components:focus-visible:(outline-none ring-gray)',
|
|
10
10
|
'layer-components:disabled:(bg-transparent border-gray placeholder-gray-dark shadow-none)',
|
|
@@ -1,22 +1,16 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import classNames from 'clsx';
|
|
3
|
-
import
|
|
3
|
+
import useMergedRef from '../../hooks/useMergedRef.js';
|
|
4
4
|
import { useBoundsCssVars } from '../../hooks/useSize.js';
|
|
5
|
+
import { Box, BoxProps } from '../box/Box.js';
|
|
5
6
|
|
|
6
7
|
export function PageContent({
|
|
7
8
|
children,
|
|
8
|
-
fullHeight,
|
|
9
|
-
noPadding,
|
|
10
|
-
innerProps,
|
|
11
9
|
className,
|
|
12
|
-
|
|
10
|
+
ref,
|
|
11
|
+
p,
|
|
13
12
|
...rest
|
|
14
|
-
}:
|
|
15
|
-
fullHeight?: boolean;
|
|
16
|
-
noPadding?: boolean;
|
|
17
|
-
innerProps?: HTMLAttributes<HTMLDivElement>;
|
|
18
|
-
scrollable?: boolean;
|
|
19
|
-
}) {
|
|
13
|
+
}: BoxProps) {
|
|
20
14
|
const innerRef = useBoundsCssVars<HTMLDivElement>(200, undefined, {
|
|
21
15
|
left: '--content-left',
|
|
22
16
|
top: '--content-top',
|
|
@@ -25,29 +19,30 @@ export function PageContent({
|
|
|
25
19
|
ready: '--content-ready',
|
|
26
20
|
});
|
|
27
21
|
|
|
22
|
+
const finalRef = useMergedRef(ref, innerRef);
|
|
23
|
+
|
|
28
24
|
return (
|
|
29
|
-
<
|
|
25
|
+
<Box
|
|
26
|
+
col
|
|
27
|
+
layout="stretch start"
|
|
28
|
+
full="width"
|
|
29
|
+
p={
|
|
30
|
+
p || {
|
|
31
|
+
default: 'md',
|
|
32
|
+
sm: 'lg',
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
gap="md"
|
|
36
|
+
container="reset"
|
|
30
37
|
className={classNames(
|
|
31
|
-
'
|
|
32
|
-
|
|
38
|
+
'[grid-area:content]',
|
|
39
|
+
'layer-components:(max-w-full min-w-0 flex-1-0-auto mx-auto)',
|
|
33
40
|
className,
|
|
34
41
|
)}
|
|
42
|
+
ref={finalRef}
|
|
35
43
|
{...rest}
|
|
36
44
|
>
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
className={classNames(
|
|
40
|
-
'layer-components:(w-full min-w-0 flex flex-col mb-120px px-4 py-4 flex-1)',
|
|
41
|
-
{
|
|
42
|
-
'layer-variants:(flex-1 mb-auto)': fullHeight,
|
|
43
|
-
'layer-variants:(p-0 sm:p-4)': noPadding,
|
|
44
|
-
},
|
|
45
|
-
innerProps?.className,
|
|
46
|
-
)}
|
|
47
|
-
ref={innerRef}
|
|
48
|
-
>
|
|
49
|
-
{children}
|
|
50
|
-
</div>
|
|
51
|
-
</div>
|
|
45
|
+
{children}
|
|
46
|
+
</Box>
|
|
52
47
|
);
|
|
53
48
|
}
|
|
@@ -24,9 +24,9 @@ export function PageNav({
|
|
|
24
24
|
<HideWhileKeyboardOpen
|
|
25
25
|
{...props}
|
|
26
26
|
className={classNames(
|
|
27
|
-
'layer-components:([grid-area:nav]
|
|
27
|
+
'layer-components:([grid-area:nav] sticky bottom-0 bg-inherit z-[var(--z-nav)] pb-[calc(0.25rem+env(safe-area-inset-bottom,0px))])',
|
|
28
28
|
'layer-components:before:(content-[""] absolute inset-x-4 top-0 h-px bg-dark-blend)',
|
|
29
|
-
'layer-components:md:([grid-area:nav] sticky top-
|
|
29
|
+
'layer-components:md:([grid-area:nav] sticky top-lg h-auto bottom-auto left-auto right-auto) layer-components:md:before:(hidden)',
|
|
30
30
|
className,
|
|
31
31
|
)}
|
|
32
32
|
ref={ref}
|
|
@@ -2,8 +2,8 @@ import { withClassName } from '../../hooks.js';
|
|
|
2
2
|
|
|
3
3
|
export const PageRoot = withClassName(
|
|
4
4
|
'div',
|
|
5
|
-
'layer-components:(flex-grow-1 flex-shrink-1 flex-basis-0 min-h-
|
|
6
|
-
'layer-components:(grid grid-areas-[content]-[nav] grid-cols-[1fr] grid-rows-[
|
|
7
|
-
'md:layer-responsive:(grid-areas-[gutter1_nav_content_gutter2] grid-cols-[1fr_auto_20fr_1fr] min-h-auto bg-wash)',
|
|
5
|
+
'layer-components:(flex-grow-1 flex-shrink-1 flex-basis-0 min-h-100dvh bg-wash)',
|
|
6
|
+
'layer-components:(grid grid-areas-[content]-[nav] grid-cols-[1fr] grid-rows-[1fr_auto] items-start justify-center)',
|
|
7
|
+
'md:layer-responsive:(grid-areas-[gutter1_nav_content_gutter2] grid-cols-[1fr_auto_20fr_1fr] min-h-auto h-auto bg-wash)',
|
|
8
8
|
'lg:layer-responsive:(grid-cols-[1fr_auto_min(800px,70vw)_1fr])',
|
|
9
9
|
);
|
|
@@ -12,6 +12,7 @@ import {
|
|
|
12
12
|
NavBarItemText,
|
|
13
13
|
NavBarRoot,
|
|
14
14
|
} from '../navBar/index.js';
|
|
15
|
+
import { Switch } from '../switch/Switch.js';
|
|
15
16
|
import { PageContent } from './PageContent.js';
|
|
16
17
|
import { PageNav } from './PageNav.js';
|
|
17
18
|
import { PageNowPlaying } from './PageNowPlaying.js';
|
|
@@ -31,12 +32,70 @@ export default meta;
|
|
|
31
32
|
type Story = StoryObj;
|
|
32
33
|
|
|
33
34
|
export const Default: Story = {
|
|
34
|
-
render: () =>
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
35
|
+
render: () => {
|
|
36
|
+
const [content, setContent] = useState(true);
|
|
37
|
+
const toggleContent = () => setContent((prev) => !prev);
|
|
38
|
+
return (
|
|
39
|
+
<PageRoot className="bg-primary-wash">
|
|
40
|
+
<PageContent>
|
|
41
|
+
<div className="text-center">
|
|
42
|
+
<h1 className="text-3xl font-bold">Hello, World!</h1>
|
|
43
|
+
<p className="text-lg">This is a simple page layout.</p>
|
|
44
|
+
</div>
|
|
45
|
+
<Switch checked={content} onCheckedChange={toggleContent} />
|
|
46
|
+
{content && (
|
|
47
|
+
<Card.Grid>
|
|
48
|
+
{new Array(100).fill(null).map((_, i) => (
|
|
49
|
+
<Card key={i}>
|
|
50
|
+
<Card.Main />
|
|
51
|
+
</Card>
|
|
52
|
+
))}
|
|
53
|
+
</Card.Grid>
|
|
54
|
+
)}
|
|
55
|
+
<PageNowPlaying>Now playing</PageNowPlaying>
|
|
56
|
+
</PageContent>
|
|
57
|
+
<PageNav>
|
|
58
|
+
<NavBarRoot>
|
|
59
|
+
<NavBarItem>
|
|
60
|
+
<NavBarItemIconWrapper>
|
|
61
|
+
<NavBarItemIcon name="cart" />
|
|
62
|
+
</NavBarItemIconWrapper>
|
|
63
|
+
<NavBarItemText>Item 1 long</NavBarItemText>
|
|
64
|
+
</NavBarItem>
|
|
65
|
+
<NavBarItem active={true}>
|
|
66
|
+
<NavBarItemIconWrapper>
|
|
67
|
+
<NavBarItemIcon asChild>
|
|
68
|
+
<Icon name="book" />
|
|
69
|
+
</NavBarItemIcon>
|
|
70
|
+
</NavBarItemIconWrapper>
|
|
71
|
+
<NavBarItemText>Item 2</NavBarItemText>
|
|
72
|
+
<NavBarItemPip />
|
|
73
|
+
</NavBarItem>
|
|
74
|
+
<NavBarItem color="neutral" active={true}>
|
|
75
|
+
<NavBarItemIconWrapper>
|
|
76
|
+
<NavBarItemIcon asChild>
|
|
77
|
+
<Icon name="book" />
|
|
78
|
+
</NavBarItemIcon>
|
|
79
|
+
</NavBarItemIconWrapper>
|
|
80
|
+
<NavBarItemText>Neutral</NavBarItemText>
|
|
81
|
+
<NavBarItemPip />
|
|
82
|
+
</NavBarItem>
|
|
83
|
+
</NavBarRoot>
|
|
84
|
+
</PageNav>
|
|
85
|
+
</PageRoot>
|
|
86
|
+
);
|
|
87
|
+
},
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
export const ManualWidth: Story = {
|
|
91
|
+
render: () => {
|
|
92
|
+
return (
|
|
93
|
+
<PageRoot className="bg-primary-wash">
|
|
94
|
+
<PageContent className="max-w-300px">
|
|
95
|
+
<div className="text-center">
|
|
96
|
+
<h1 className="text-3xl font-bold">Hello, World!</h1>
|
|
97
|
+
<p className="text-lg">This is a simple page layout.</p>
|
|
98
|
+
</div>
|
|
40
99
|
<Card.Grid>
|
|
41
100
|
{new Array(100).fill(null).map((_, i) => (
|
|
42
101
|
<Card key={i}>
|
|
@@ -44,39 +103,38 @@ export const Default: Story = {
|
|
|
44
103
|
</Card>
|
|
45
104
|
))}
|
|
46
105
|
</Card.Grid>
|
|
47
|
-
</
|
|
48
|
-
<
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
<
|
|
55
|
-
</
|
|
56
|
-
<
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
</
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
<
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
</
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
),
|
|
106
|
+
</PageContent>
|
|
107
|
+
<PageNav>
|
|
108
|
+
<NavBarRoot>
|
|
109
|
+
<NavBarItem>
|
|
110
|
+
<NavBarItemIconWrapper>
|
|
111
|
+
<NavBarItemIcon name="cart" />
|
|
112
|
+
</NavBarItemIconWrapper>
|
|
113
|
+
<NavBarItemText>Item 1 long</NavBarItemText>
|
|
114
|
+
</NavBarItem>
|
|
115
|
+
<NavBarItem active={true}>
|
|
116
|
+
<NavBarItemIconWrapper>
|
|
117
|
+
<NavBarItemIcon asChild>
|
|
118
|
+
<Icon name="book" />
|
|
119
|
+
</NavBarItemIcon>
|
|
120
|
+
</NavBarItemIconWrapper>
|
|
121
|
+
<NavBarItemText>Item 2</NavBarItemText>
|
|
122
|
+
<NavBarItemPip />
|
|
123
|
+
</NavBarItem>
|
|
124
|
+
<NavBarItem color="neutral" active={true}>
|
|
125
|
+
<NavBarItemIconWrapper>
|
|
126
|
+
<NavBarItemIcon asChild>
|
|
127
|
+
<Icon name="book" />
|
|
128
|
+
</NavBarItemIcon>
|
|
129
|
+
</NavBarItemIconWrapper>
|
|
130
|
+
<NavBarItemText>Neutral</NavBarItemText>
|
|
131
|
+
<NavBarItemPip />
|
|
132
|
+
</NavBarItem>
|
|
133
|
+
</NavBarRoot>
|
|
134
|
+
</PageNav>
|
|
135
|
+
</PageRoot>
|
|
136
|
+
);
|
|
137
|
+
},
|
|
80
138
|
};
|
|
81
139
|
|
|
82
140
|
export const WithoutNav: Story = {
|
|
@@ -86,6 +144,13 @@ export const WithoutNav: Story = {
|
|
|
86
144
|
<div className="text-center">
|
|
87
145
|
<h1 className="text-3xl font-bold">Hello, World!</h1>
|
|
88
146
|
<p className="text-lg">This is a simple page layout.</p>
|
|
147
|
+
<Card.Grid>
|
|
148
|
+
{new Array(100).fill(null).map((_, i) => (
|
|
149
|
+
<Card key={i}>
|
|
150
|
+
<Card.Main />
|
|
151
|
+
</Card>
|
|
152
|
+
))}
|
|
153
|
+
</Card.Grid>
|
|
89
154
|
</div>
|
|
90
155
|
<PageNowPlaying>Now playing</PageNowPlaying>
|
|
91
156
|
</PageContent>
|
|
@@ -62,7 +62,7 @@ export const NavBarItemIconWrapper = withClassName(
|
|
|
62
62
|
|
|
63
63
|
export const NavBarItemText = withClassName(
|
|
64
64
|
'span',
|
|
65
|
-
'layer-components:(overflow-hidden
|
|
65
|
+
'layer-components:(overflow-hidden inline-block text-xxs whitespace-nowrap text-ellipsis) layer-components:md:(text-md leading-normal)',
|
|
66
66
|
);
|
|
67
67
|
|
|
68
68
|
interface NavBarItemIconProps {
|
package/src/uno/colors.ts
CHANGED
|
@@ -66,3 +66,47 @@ export function dynamicTheme({
|
|
|
66
66
|
${dynamicComputedVars}
|
|
67
67
|
`;
|
|
68
68
|
}
|
|
69
|
+
|
|
70
|
+
export const themeColors = {
|
|
71
|
+
none: 'transparent',
|
|
72
|
+
black: 'var(--color-black)',
|
|
73
|
+
white: 'var(--color-white)',
|
|
74
|
+
wash: 'var(--color-wash)',
|
|
75
|
+
transparent: 'transparent',
|
|
76
|
+
attention: {
|
|
77
|
+
DEFAULT: 'var(--color-attention)',
|
|
78
|
+
light: 'var(--color-attention-light)',
|
|
79
|
+
dark: 'var(--color-attention-dark)',
|
|
80
|
+
wash: 'var(--color-attention-wash)',
|
|
81
|
+
ink: 'var(--color-attention-ink)',
|
|
82
|
+
},
|
|
83
|
+
accent: {
|
|
84
|
+
DEFAULT: 'var(--color-accent)',
|
|
85
|
+
light: 'var(--color-accent-light)',
|
|
86
|
+
dark: 'var(--color-accent-dark)',
|
|
87
|
+
wash: 'var(--color-accent-wash)',
|
|
88
|
+
ink: 'var(--color-accent-ink)',
|
|
89
|
+
},
|
|
90
|
+
primary: {
|
|
91
|
+
DEFAULT: 'var(--color-primary)',
|
|
92
|
+
light: 'var(--color-primary-light)',
|
|
93
|
+
dark: 'var(--color-primary-dark)',
|
|
94
|
+
wash: 'var(--color-primary-wash)',
|
|
95
|
+
ink: 'var(--color-primary-ink)',
|
|
96
|
+
},
|
|
97
|
+
gray: {
|
|
98
|
+
DEFAULT: 'var(--color-gray)',
|
|
99
|
+
wash: 'var(--color-gray-wash)',
|
|
100
|
+
light: 'var(--color-gray-light)',
|
|
101
|
+
ink: 'var(--color-gray-ink)',
|
|
102
|
+
blend: 'var(--color-gray-blend)',
|
|
103
|
+
dark: {
|
|
104
|
+
DEFAULT: 'var(--color-gray-dark)',
|
|
105
|
+
blend: 'var(--color-gray-dark-blend)',
|
|
106
|
+
},
|
|
107
|
+
},
|
|
108
|
+
'dark-blend': 'var(--color-dark-blend)',
|
|
109
|
+
'light-blend': 'var(--color-light-blend)',
|
|
110
|
+
overlay: 'var(--color-overlay)',
|
|
111
|
+
'dark-mode-contrast': 'var(--color-dark-mode-contrast)',
|
|
112
|
+
} as const;
|
package/src/uno.preset.ts
CHANGED
|
@@ -7,6 +7,7 @@ import {
|
|
|
7
7
|
dynamicTheme,
|
|
8
8
|
DynamicThemeColor,
|
|
9
9
|
dynamicThemeComputedColors,
|
|
10
|
+
themeColors,
|
|
10
11
|
} from './uno/colors.js';
|
|
11
12
|
|
|
12
13
|
const baseBgRule = bgColorsRules[0] as unknown as DynamicRule;
|
|
@@ -59,48 +60,7 @@ export default function presetAtype({
|
|
|
59
60
|
name: 'atype',
|
|
60
61
|
enforce: 'post',
|
|
61
62
|
theme: {
|
|
62
|
-
colors:
|
|
63
|
-
none: '',
|
|
64
|
-
black: 'var(--color-black)',
|
|
65
|
-
white: 'var(--color-white)',
|
|
66
|
-
wash: 'var(--color-wash)',
|
|
67
|
-
attention: {
|
|
68
|
-
DEFAULT: 'var(--color-attention)',
|
|
69
|
-
light: 'var(--color-attention-light)',
|
|
70
|
-
dark: 'var(--color-attention-dark)',
|
|
71
|
-
wash: 'var(--color-attention-wash)',
|
|
72
|
-
ink: 'var(--color-attention-ink)',
|
|
73
|
-
},
|
|
74
|
-
accent: {
|
|
75
|
-
DEFAULT: 'var(--color-accent)',
|
|
76
|
-
light: 'var(--color-accent-light)',
|
|
77
|
-
dark: 'var(--color-accent-dark)',
|
|
78
|
-
wash: 'var(--color-accent-wash)',
|
|
79
|
-
ink: 'var(--color-accent-ink)',
|
|
80
|
-
},
|
|
81
|
-
primary: {
|
|
82
|
-
DEFAULT: 'var(--color-primary)',
|
|
83
|
-
light: 'var(--color-primary-light)',
|
|
84
|
-
dark: 'var(--color-primary-dark)',
|
|
85
|
-
wash: 'var(--color-primary-wash)',
|
|
86
|
-
ink: 'var(--color-primary-ink)',
|
|
87
|
-
},
|
|
88
|
-
gray: {
|
|
89
|
-
DEFAULT: 'var(--color-gray)',
|
|
90
|
-
wash: 'var(--color-gray-wash)',
|
|
91
|
-
light: 'var(--color-gray-light)',
|
|
92
|
-
ink: 'var(--color-gray-ink)',
|
|
93
|
-
blend: 'var(--color-gray-blend)',
|
|
94
|
-
dark: {
|
|
95
|
-
DEFAULT: 'var(--color-gray-dark)',
|
|
96
|
-
blend: 'var(--color-gray-dark-blend)',
|
|
97
|
-
},
|
|
98
|
-
},
|
|
99
|
-
'dark-blend': 'var(--color-dark-blend)',
|
|
100
|
-
'light-blend': 'var(--color-light-blend)',
|
|
101
|
-
overlay: 'var(--color-overlay)',
|
|
102
|
-
'dark-mode-contrast': 'var(--color-dark-mode-contrast)',
|
|
103
|
-
},
|
|
63
|
+
colors: themeColors,
|
|
104
64
|
fontFamily: {
|
|
105
65
|
default: 'var(--font-default, sans-serif)',
|
|
106
66
|
sans: 'var(--font-sans, sans-serif)',
|
|
@@ -134,6 +94,7 @@ export default function presetAtype({
|
|
|
134
94
|
},
|
|
135
95
|
lineWidth: {
|
|
136
96
|
DEFAULT: `calc(1px * var(--global-border-scale,1))`,
|
|
97
|
+
thin: `calc(1px * var(--global-border-scale,1))`,
|
|
137
98
|
none: '0',
|
|
138
99
|
thick: `calc(2px * var(--global-border-scale,1))`,
|
|
139
100
|
},
|
|
@@ -385,6 +346,14 @@ export default function presetAtype({
|
|
|
385
346
|
},
|
|
386
347
|
},
|
|
387
348
|
},
|
|
349
|
+
extendTheme: (theme: any) => {
|
|
350
|
+
// delete all colors that are not defined in the custom theme
|
|
351
|
+
const { colors: _, ...rest } = theme;
|
|
352
|
+
return {
|
|
353
|
+
colors: themeColors,
|
|
354
|
+
...rest,
|
|
355
|
+
};
|
|
356
|
+
},
|
|
388
357
|
|
|
389
358
|
rules: [
|
|
390
359
|
[
|
|
@@ -529,8 +498,7 @@ export default function presetAtype({
|
|
|
529
498
|
],
|
|
530
499
|
|
|
531
500
|
shortcuts: {
|
|
532
|
-
border:
|
|
533
|
-
'border-width-[calc(1px * var(--global-border-scale,1))] border-solid',
|
|
501
|
+
border: 'border-width-thin border-solid',
|
|
534
502
|
'border-default': 'border border-solid border-color-black',
|
|
535
503
|
'border-light':
|
|
536
504
|
'border border-solid border-color-gray border-color-darken-3',
|
|
@@ -540,7 +508,9 @@ export default function presetAtype({
|
|
|
540
508
|
col: 'layer-components:flex layer-components:flex-col layer-components:gap-sm layer-components:items-center',
|
|
541
509
|
'hidden-input':
|
|
542
510
|
'op-0 absolute z--1 pointer-events-none [&::webkit-file-upload-button]:hidden',
|
|
543
|
-
center: 'left-
|
|
511
|
+
center: 'left-1/2 top-1/2 translate-x--1/2 translate-y--1/2',
|
|
512
|
+
'center-x': 'left-1/2 translate-x--1/2',
|
|
513
|
+
'center-y': 'top-1/2 translate-y--1/2',
|
|
544
514
|
'outline-off': '[outline:none]',
|
|
545
515
|
'bg-wash': 'bg-[var(--color-wash)]',
|
|
546
516
|
unset: '[all:unset]',
|