@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.
Files changed (65) hide show
  1. package/dist/cjs/components/box/Box.d.ts +2 -1
  2. package/dist/cjs/components/box/Box.js +3 -1
  3. package/dist/cjs/components/box/Box.js.map +1 -1
  4. package/dist/cjs/components/button/classes.js +6 -6
  5. package/dist/cjs/components/button/classes.js.map +1 -1
  6. package/dist/cjs/components/checkbox/Checkbox.js +1 -1
  7. package/dist/cjs/components/checkbox/Checkbox.js.map +1 -1
  8. package/dist/cjs/components/input/Input.js +1 -1
  9. package/dist/cjs/components/input/Input.js.map +1 -1
  10. package/dist/cjs/components/layouts/PageContent.d.ts +2 -7
  11. package/dist/cjs/components/layouts/PageContent.js +8 -5
  12. package/dist/cjs/components/layouts/PageContent.js.map +1 -1
  13. package/dist/cjs/components/layouts/PageNav.js +1 -1
  14. package/dist/cjs/components/layouts/PageNav.js.map +1 -1
  15. package/dist/cjs/components/layouts/PageRoot.js +1 -1
  16. package/dist/cjs/components/layouts/PageRoot.js.map +1 -1
  17. package/dist/cjs/components/layouts/layouts.stories.d.ts +1 -0
  18. package/dist/cjs/components/layouts/layouts.stories.js +13 -3
  19. package/dist/cjs/components/layouts/layouts.stories.js.map +1 -1
  20. package/dist/cjs/components/navBar/NavBar.js +1 -1
  21. package/dist/cjs/components/navBar/NavBar.js.map +1 -1
  22. package/dist/cjs/uno/colors.d.ts +43 -0
  23. package/dist/cjs/uno/colors.js +44 -1
  24. package/dist/cjs/uno/colors.js.map +1 -1
  25. package/dist/cjs/uno.preset.js +19 -43
  26. package/dist/cjs/uno.preset.js.map +1 -1
  27. package/dist/css/main.css +2 -2
  28. package/dist/esm/components/box/Box.d.ts +2 -1
  29. package/dist/esm/components/box/Box.js +3 -1
  30. package/dist/esm/components/box/Box.js.map +1 -1
  31. package/dist/esm/components/button/classes.js +6 -6
  32. package/dist/esm/components/button/classes.js.map +1 -1
  33. package/dist/esm/components/checkbox/Checkbox.js +1 -1
  34. package/dist/esm/components/checkbox/Checkbox.js.map +1 -1
  35. package/dist/esm/components/input/Input.js +1 -1
  36. package/dist/esm/components/input/Input.js.map +1 -1
  37. package/dist/esm/components/layouts/PageContent.d.ts +2 -7
  38. package/dist/esm/components/layouts/PageContent.js +8 -5
  39. package/dist/esm/components/layouts/PageContent.js.map +1 -1
  40. package/dist/esm/components/layouts/PageNav.js +1 -1
  41. package/dist/esm/components/layouts/PageNav.js.map +1 -1
  42. package/dist/esm/components/layouts/PageRoot.js +1 -1
  43. package/dist/esm/components/layouts/PageRoot.js.map +1 -1
  44. package/dist/esm/components/layouts/layouts.stories.d.ts +1 -0
  45. package/dist/esm/components/layouts/layouts.stories.js +12 -2
  46. package/dist/esm/components/layouts/layouts.stories.js.map +1 -1
  47. package/dist/esm/components/navBar/NavBar.js +1 -1
  48. package/dist/esm/components/navBar/NavBar.js.map +1 -1
  49. package/dist/esm/uno/colors.d.ts +43 -0
  50. package/dist/esm/uno/colors.js +43 -0
  51. package/dist/esm/uno/colors.js.map +1 -1
  52. package/dist/esm/uno.preset.js +20 -44
  53. package/dist/esm/uno.preset.js.map +1 -1
  54. package/package.json +1 -1
  55. package/src/components/box/Box.tsx +4 -0
  56. package/src/components/button/classes.tsx +6 -7
  57. package/src/components/checkbox/Checkbox.tsx +1 -4
  58. package/src/components/input/Input.tsx +1 -1
  59. package/src/components/layouts/PageContent.tsx +24 -29
  60. package/src/components/layouts/PageNav.tsx +2 -2
  61. package/src/components/layouts/PageRoot.tsx +3 -3
  62. package/src/components/layouts/layouts.stories.tsx +104 -39
  63. package/src/components/navBar/NavBar.tsx +1 -1
  64. package/src/uno/colors.ts +44 -0
  65. 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-solid border-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)',
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-wash)] color-accent-dark hover:bg-darken-4)`,
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-none 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)`,
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 { HTMLAttributes } from 'react';
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
- scrollable = true,
10
+ ref,
11
+ p,
13
12
  ...rest
14
- }: HTMLAttributes<HTMLDivElement> & {
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
- <div
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
- 'layer-components:([grid-area:content] max-w-full min-w-0 w-full flex flex-col items-start relative flex-1 gap-3)',
32
- { 'layer-variants:(overflow-y-auto h-full)': scrollable },
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
- <div
38
- {...innerProps}
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] relative z-[var(--z-nav)] pb-[calc(0.25rem+env(safe-area-inset-bottom,0px))])',
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-0 h-auto bottom-auto left-auto right-auto) layer-components:md:before:(hidden)',
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-0 h-full bg-wash)',
6
- 'layer-components:(grid grid-areas-[content]-[nav] grid-cols-[1fr] grid-rows-[1fr] items-start justify-center)',
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
- <PageRoot className="w-full h-full">
36
- <PageContent>
37
- <div className="text-center">
38
- <h1 className="text-3xl font-bold">Hello, World!</h1>
39
- <p className="text-lg">This is a simple page layout.</p>
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
- </div>
48
- <PageNowPlaying>Now playing</PageNowPlaying>
49
- </PageContent>
50
- <PageNav>
51
- <NavBarRoot>
52
- <NavBarItem>
53
- <NavBarItemIconWrapper>
54
- <NavBarItemIcon name="cart" />
55
- </NavBarItemIconWrapper>
56
- <NavBarItemText>Item 1 long</NavBarItemText>
57
- </NavBarItem>
58
- <NavBarItem active={true}>
59
- <NavBarItemIconWrapper>
60
- <NavBarItemIcon asChild>
61
- <Icon name="book" />
62
- </NavBarItemIcon>
63
- </NavBarItemIconWrapper>
64
- <NavBarItemText>Item 2</NavBarItemText>
65
- <NavBarItemPip />
66
- </NavBarItem>
67
- <NavBarItem color="neutral" active={true}>
68
- <NavBarItemIconWrapper>
69
- <NavBarItemIcon asChild>
70
- <Icon name="book" />
71
- </NavBarItemIcon>
72
- </NavBarItemIconWrapper>
73
- <NavBarItemText>Neutral</NavBarItemText>
74
- <NavBarItemPip />
75
- </NavBarItem>
76
- </NavBarRoot>
77
- </PageNav>
78
- </PageRoot>
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 pl-1 inline-block text-xxs whitespace-nowrap text-ellipsis) layer-components:md:(text-md leading-normal)',
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-50% top-50%',
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]',