@a-type/ui 2.6.1 → 2.7.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 (116) hide show
  1. package/dist/cjs/components/button/Button.d.ts +14 -1
  2. package/dist/cjs/components/button/Button.js +84 -8
  3. package/dist/cjs/components/button/Button.js.map +1 -1
  4. package/dist/cjs/components/button/Button.stories.d.ts +14 -1
  5. package/dist/cjs/components/button/Button.stories.js +27 -6
  6. package/dist/cjs/components/button/Button.stories.js.map +1 -1
  7. package/dist/cjs/components/button/classes.d.ts +2 -2
  8. package/dist/cjs/components/button/classes.js +12 -7
  9. package/dist/cjs/components/button/classes.js.map +1 -1
  10. package/dist/cjs/components/camera/Camera.js +3 -3
  11. package/dist/cjs/components/camera/Camera.js.map +1 -1
  12. package/dist/cjs/components/card/Card.d.ts +2 -2
  13. package/dist/cjs/components/card/Card.stories.js +7 -7
  14. package/dist/cjs/components/card/Card.stories.js.map +1 -1
  15. package/dist/cjs/components/contextMenu/contextMenu.js +2 -2
  16. package/dist/cjs/components/contextMenu/contextMenu.js.map +1 -1
  17. package/dist/cjs/components/datePicker/DatePicker.js +4 -4
  18. package/dist/cjs/components/datePicker/DatePicker.js.map +1 -1
  19. package/dist/cjs/components/dropdownMenu/DropdownMenu.js +5 -5
  20. package/dist/cjs/components/dropdownMenu/DropdownMenu.js.map +1 -1
  21. package/dist/cjs/components/emojiPicker/EmojiPicker.js +2 -2
  22. package/dist/cjs/components/emojiPicker/EmojiPicker.js.map +1 -1
  23. package/dist/cjs/components/horizontalList/HorizontalList.js +1 -1
  24. package/dist/cjs/components/horizontalList/HorizontalList.js.map +1 -1
  25. package/dist/cjs/components/horizontalList/HorizontalList.stories.js +2 -2
  26. package/dist/cjs/components/horizontalList/HorizontalList.stories.js.map +1 -1
  27. package/dist/cjs/components/icon/Icon.js +7 -1
  28. package/dist/cjs/components/icon/Icon.js.map +1 -1
  29. package/dist/cjs/components/icon/IconLoadingContext.d.ts +2 -0
  30. package/dist/cjs/components/icon/IconLoadingContext.js +12 -0
  31. package/dist/cjs/components/icon/IconLoadingContext.js.map +1 -0
  32. package/dist/cjs/components/imageUploader/ImageUploader.js +1 -1
  33. package/dist/cjs/components/imageUploader/ImageUploader.js.map +1 -1
  34. package/dist/cjs/components/particles/ParticleLayer.stories.js +1 -1
  35. package/dist/cjs/components/particles/ParticleLayer.stories.js.map +1 -1
  36. package/dist/cjs/components/select/Select.js +8 -4
  37. package/dist/cjs/components/select/Select.js.map +1 -1
  38. package/dist/cjs/components/spinner/Spinner.js +1 -1
  39. package/dist/cjs/components/spinner/Spinner.js.map +1 -1
  40. package/dist/cjs/themes.stories.d.ts +1 -0
  41. package/dist/cjs/themes.stories.js +3 -2
  42. package/dist/cjs/themes.stories.js.map +1 -1
  43. package/dist/cjs/uno/colors.d.ts +1 -0
  44. package/dist/cjs/uno/colors.js +1 -0
  45. package/dist/cjs/uno/colors.js.map +1 -1
  46. package/dist/cjs/uno/shadows.js +11 -8
  47. package/dist/cjs/uno/shadows.js.map +1 -1
  48. package/dist/css/main.css +12 -12
  49. package/dist/esm/components/button/Button.d.ts +14 -1
  50. package/dist/esm/components/button/Button.js +82 -7
  51. package/dist/esm/components/button/Button.js.map +1 -1
  52. package/dist/esm/components/button/Button.stories.d.ts +14 -1
  53. package/dist/esm/components/button/Button.stories.js +27 -6
  54. package/dist/esm/components/button/Button.stories.js.map +1 -1
  55. package/dist/esm/components/button/classes.d.ts +2 -2
  56. package/dist/esm/components/button/classes.js +13 -8
  57. package/dist/esm/components/button/classes.js.map +1 -1
  58. package/dist/esm/components/camera/Camera.js +3 -3
  59. package/dist/esm/components/camera/Camera.js.map +1 -1
  60. package/dist/esm/components/card/Card.d.ts +2 -2
  61. package/dist/esm/components/card/Card.stories.js +7 -7
  62. package/dist/esm/components/card/Card.stories.js.map +1 -1
  63. package/dist/esm/components/contextMenu/contextMenu.js +2 -2
  64. package/dist/esm/components/contextMenu/contextMenu.js.map +1 -1
  65. package/dist/esm/components/datePicker/DatePicker.js +4 -4
  66. package/dist/esm/components/datePicker/DatePicker.js.map +1 -1
  67. package/dist/esm/components/dropdownMenu/DropdownMenu.js +5 -5
  68. package/dist/esm/components/dropdownMenu/DropdownMenu.js.map +1 -1
  69. package/dist/esm/components/emojiPicker/EmojiPicker.js +2 -2
  70. package/dist/esm/components/emojiPicker/EmojiPicker.js.map +1 -1
  71. package/dist/esm/components/horizontalList/HorizontalList.js +1 -1
  72. package/dist/esm/components/horizontalList/HorizontalList.js.map +1 -1
  73. package/dist/esm/components/horizontalList/HorizontalList.stories.js +2 -2
  74. package/dist/esm/components/horizontalList/HorizontalList.stories.js.map +1 -1
  75. package/dist/esm/components/icon/Icon.js +7 -1
  76. package/dist/esm/components/icon/Icon.js.map +1 -1
  77. package/dist/esm/components/icon/IconLoadingContext.d.ts +2 -0
  78. package/dist/esm/components/icon/IconLoadingContext.js +8 -0
  79. package/dist/esm/components/icon/IconLoadingContext.js.map +1 -0
  80. package/dist/esm/components/imageUploader/ImageUploader.js +1 -1
  81. package/dist/esm/components/imageUploader/ImageUploader.js.map +1 -1
  82. package/dist/esm/components/particles/ParticleLayer.stories.js +1 -1
  83. package/dist/esm/components/particles/ParticleLayer.stories.js.map +1 -1
  84. package/dist/esm/components/select/Select.js +8 -4
  85. package/dist/esm/components/select/Select.js.map +1 -1
  86. package/dist/esm/components/spinner/Spinner.js +1 -1
  87. package/dist/esm/components/spinner/Spinner.js.map +1 -1
  88. package/dist/esm/themes.stories.d.ts +1 -0
  89. package/dist/esm/themes.stories.js +3 -2
  90. package/dist/esm/themes.stories.js.map +1 -1
  91. package/dist/esm/uno/colors.d.ts +1 -0
  92. package/dist/esm/uno/colors.js +1 -0
  93. package/dist/esm/uno/colors.js.map +1 -1
  94. package/dist/esm/uno/shadows.js +11 -8
  95. package/dist/esm/uno/shadows.js.map +1 -1
  96. package/package.json +2 -1
  97. package/src/components/button/Button.stories.tsx +47 -7
  98. package/src/components/button/Button.tsx +137 -14
  99. package/src/components/button/classes.tsx +19 -11
  100. package/src/components/camera/Camera.tsx +1 -7
  101. package/src/components/card/Card.stories.tsx +10 -10
  102. package/src/components/contextMenu/contextMenu.tsx +3 -5
  103. package/src/components/datePicker/DatePicker.tsx +0 -4
  104. package/src/components/dropdownMenu/DropdownMenu.tsx +7 -6
  105. package/src/components/emojiPicker/EmojiPicker.tsx +4 -4
  106. package/src/components/horizontalList/HorizontalList.stories.tsx +0 -2
  107. package/src/components/horizontalList/HorizontalList.tsx +0 -1
  108. package/src/components/icon/Icon.tsx +9 -0
  109. package/src/components/icon/IconLoadingContext.tsx +7 -0
  110. package/src/components/imageUploader/ImageUploader.tsx +0 -1
  111. package/src/components/particles/ParticleLayer.stories.tsx +2 -2
  112. package/src/components/select/Select.tsx +11 -9
  113. package/src/components/spinner/Spinner.tsx +1 -1
  114. package/src/themes.stories.tsx +39 -12
  115. package/src/uno/colors.ts +1 -0
  116. package/src/uno/shadows.ts +11 -8
@@ -169,7 +169,6 @@ export function HorizontalList({
169
169
  >
170
170
  <Button
171
171
  onClick={toggleOpen}
172
- size="icon"
173
172
  color="ghost"
174
173
  className={clsx(
175
174
  'flex-shrink-0 bg-[var(--scroll-bg)] sticky left-0 top-2 z-1',
@@ -1,6 +1,8 @@
1
1
  import classNames from 'clsx';
2
2
  import { HTMLAttributes } from 'react';
3
+ import { Spinner } from '../spinner/Spinner.js';
3
4
  import { IconName } from './generated/iconNames.js';
5
+ import { useIconLoading } from './IconLoadingContext.js';
4
6
 
5
7
  export interface IconProps extends HTMLAttributes<SVGSVGElement> {
6
8
  name: IconName;
@@ -16,10 +18,17 @@ export const Icon = function Icon({
16
18
  }: IconProps & {
17
19
  ref?: React.Ref<SVGSVGElement>;
18
20
  }) {
21
+ const loading = useIconLoading();
22
+
23
+ if (loading) {
24
+ return <Spinner size={size} className="inline-block" />;
25
+ }
26
+
19
27
  return (
20
28
  <svg
21
29
  ref={ref}
22
30
  className={classNames(
31
+ 'icon',
23
32
  'flex-shrink-0 layer-components:fill-none',
24
33
  className,
25
34
  )}
@@ -0,0 +1,7 @@
1
+ import { createContext, useContext } from 'react';
2
+
3
+ const IconLoadingContext = createContext(false);
4
+ export const IconLoadingProvider = IconLoadingContext.Provider;
5
+ export function useIconLoading() {
6
+ return useContext(IconLoadingContext);
7
+ }
@@ -263,7 +263,6 @@ export function ImageUploaderRemoveButton({ className, ...rest }: ButtonProps) {
263
263
  return (
264
264
  <Button
265
265
  color="ghost"
266
- size="icon"
267
266
  className={clsx(
268
267
  'layer-variants:(absolute top-2 right-2 w-32px h-32px border-none p-2 cursor-pointer bg-white color-black rounded-lg transition-colors shadow-sm z-10)',
269
268
  className,
@@ -39,8 +39,8 @@ function ExplodeButton() {
39
39
  );
40
40
  };
41
41
  return (
42
- <Button size="icon" onClick={burst}>
43
- 💥
42
+ <Button onClick={burst}>
43
+ <Button.Icon>💥</Button.Icon>
44
44
  </Button>
45
45
  );
46
46
  }
@@ -45,10 +45,8 @@ export const SelectItem = ({
45
45
 
46
46
  export const SelectItemRoot = withClassName(
47
47
  SelectPrimitive.Item,
48
- 'layer-components:(text-md leading-4 color-black rounded-sm flex items-center flex-row h-36px pr-4 pl-35px relative select-none)',
49
- 'layer-components:[&[data-disabled]]:(color-gray pointer-events-none) [&[data-highlighted]]:(outline-none bg-primary-wash color-black)',
50
- 'layer-components:[&:first-child]:(rounded-t-lg)',
51
- 'layer-components:[&:last-child]:(rounded-b-lg)',
48
+ 'layer-components:(text-md leading-4 color-black flex items-center flex-row h-36px pr-4 pl-35px relative select-none)',
49
+ 'layer-components:[&[data-disabled]]:(color-gray pointer-events-none) [&[data-highlighted]]:(outline-none bg-gray bg-lighten-3 color-black)',
52
50
  );
53
51
  export const SelectItemIndicatorRoot = withClassName(
54
52
  SelectPrimitive.ItemIndicator,
@@ -133,7 +131,7 @@ export const SelectIcon = withNoNativeRender(
133
131
  }) => {
134
132
  return (
135
133
  <SelectPrimitive.Icon
136
- className={classNames('color-inherit', className)}
134
+ className={classNames('color-inherit ml-auto', className)}
137
135
  {...props}
138
136
  ref={forwardedRef}
139
137
  >
@@ -143,7 +141,11 @@ export const SelectIcon = withNoNativeRender(
143
141
  },
144
142
  );
145
143
 
146
- const zIndex = { zIndex: 1001 };
144
+ const contentStyle = {
145
+ zIndex: 1001,
146
+ '--local-corner-scale': '1',
147
+ } as React.CSSProperties;
148
+ const viewportStyle = { '--local-corner-scale': '0.9' } as React.CSSProperties;
147
149
  export const SelectContent = withPassthroughNativeRender(
148
150
  ({ ref: forwardedRef, children, inDialog, className, ...props }) => {
149
151
  return (
@@ -151,7 +153,7 @@ export const SelectContent = withPassthroughNativeRender(
151
153
  <BoxContext.Provider value={{ spacingScale: 1 }}>
152
154
  <SelectPrimitive.Content
153
155
  className={classNames(
154
- 'layer-components:(overflow-hidden bg-white rounded-lg border border-solid border border-black z-menu shadow-lg)',
156
+ 'layer-components:(overflow-hidden bg-white rounded-md border border-solid border border-black z-menu shadow-lg)',
155
157
  'layer-components:transform-origin-[var(--radix-select-content-transform-origin)]',
156
158
  'layer-components:[&[data-state=open]]:animate-popover-in',
157
159
  'layer-components:[&[data-state=closed]]:animate-popover-out',
@@ -159,14 +161,14 @@ export const SelectContent = withPassthroughNativeRender(
159
161
  inDialog && 'z-[calc(var(--z-dialog)+1)]',
160
162
  className,
161
163
  )}
162
- style={zIndex}
164
+ style={contentStyle}
163
165
  {...props}
164
166
  ref={forwardedRef}
165
167
  >
166
168
  <SelectPrimitive.ScrollUpButton className="flex items-center justify-center h-25px bg-white color-primary-dark cursor-default">
167
169
  <ChevronUpIcon />
168
170
  </SelectPrimitive.ScrollUpButton>
169
- <SelectPrimitive.Viewport className="p-1">
171
+ <SelectPrimitive.Viewport style={viewportStyle}>
170
172
  {children}
171
173
  </SelectPrimitive.Viewport>
172
174
  <SelectPrimitive.ScrollDownButton className="flex items-center justify-center h-25px bg-white color-primary-dark cursor-default">
@@ -25,7 +25,7 @@ export const Spinner = function Spinner({
25
25
  role="progressbar"
26
26
  {...props}
27
27
  className={classNames(
28
- 'inline-block animate-spin animate-ease-linear animate-iteration-infinite color-inherit animate-duration-1400 transform-origin-[50%_50%]',
28
+ 'flex-shrink-0 inline-block animate-spin animate-ease-linear animate-iteration-infinite color-inherit animate-duration-1400 transform-origin-[50%_50%]',
29
29
  className,
30
30
  )}
31
31
  style={{ width: size, height: size, ...style }}
@@ -53,6 +53,7 @@ const meta = {
53
53
  controls: { expanded: true },
54
54
  layout: 'fullscreen',
55
55
  },
56
+ tags: [],
56
57
  } satisfies Meta;
57
58
 
58
59
  export default meta;
@@ -121,7 +122,7 @@ function DemoUI({ className }: { className?: string }) {
121
122
  <Card.Footer>
122
123
  <Card.Actions>
123
124
  <Button size="small">Action 1</Button>
124
- <Button size="icon-small" color="ghost">
125
+ <Button size="small" color="ghost">
125
126
  <Icon name="placeholder" />
126
127
  </Button>
127
128
  </Card.Actions>
@@ -135,7 +136,7 @@ function DemoUI({ className }: { className?: string }) {
135
136
  <Card.Footer>
136
137
  <Card.Actions>
137
138
  <Button size="small">Action 1</Button>
138
- <Button size="icon-small" color="ghost">
139
+ <Button size="small" color="ghost">
139
140
  <Icon name="placeholder" />
140
141
  </Button>
141
142
  </Card.Actions>
@@ -180,6 +181,42 @@ function DemoUI({ className }: { className?: string }) {
180
181
  <ContextMenu.Item>Item 3</ContextMenu.Item>
181
182
  </ContextMenu.Content>
182
183
  </ContextMenu>
184
+ <DropdownMenu>
185
+ <DropdownMenu.Trigger asChild className="m-auto">
186
+ <Button>Dropdown</Button>
187
+ </DropdownMenu.Trigger>
188
+ <DropdownMenu.Content>
189
+ <DropdownMenu.Item>Item 1</DropdownMenu.Item>
190
+ <DropdownMenu.Item>Item 2</DropdownMenu.Item>
191
+ <DropdownMenu.Item>Item 3</DropdownMenu.Item>
192
+ <DropdownMenu.Item disabled>Disabled Item</DropdownMenu.Item>
193
+ <DropdownMenu.Separator />
194
+ <DropdownMenu.Item>Item 4</DropdownMenu.Item>
195
+ <DropdownMenu.Item>Item 5</DropdownMenu.Item>
196
+ <DropdownMenu.Item>Item 6</DropdownMenu.Item>
197
+ <DropdownMenu.Item>
198
+ With icon
199
+ <DropdownMenu.ItemRightSlot>
200
+ <Icon name="flag" />
201
+ </DropdownMenu.ItemRightSlot>
202
+ </DropdownMenu.Item>
203
+ </DropdownMenu.Content>
204
+ </DropdownMenu>
205
+ <Select value="1">
206
+ <Select.Trigger />
207
+ <Select.Content>
208
+ <Select.Item value="1">Item 1</Select.Item>
209
+ <Select.Item value="2">Item 2</Select.Item>
210
+ <Select.Item value="3">Item 3</Select.Item>
211
+ <Select.Item value="4">Item 4</Select.Item>
212
+ <Select.Item value="5">Item 5</Select.Item>
213
+ <Select.Item value="6">Item 6</Select.Item>
214
+ <Select.Item value="7">Item 7</Select.Item>
215
+ <Select.Item value="8">Item 8</Select.Item>
216
+ <Select.Item value="9">Item 9</Select.Item>
217
+ <Select.Item value="10">Item 10</Select.Item>
218
+ </Select.Content>
219
+ </Select>
183
220
  <Dialog>
184
221
  <Dialog.Trigger asChild>
185
222
  <Button>Click</Button>
@@ -256,16 +293,6 @@ function DemoUI({ className }: { className?: string }) {
256
293
  </HorizontalList>
257
294
  </Box>
258
295
  <ImageUploader className="h-200px" value={null} onChange={() => {}} />
259
- <DropdownMenu>
260
- <DropdownMenu.Trigger asChild className="m-auto">
261
- <Button>Dropdown</Button>
262
- </DropdownMenu.Trigger>
263
- <DropdownMenu.Content>
264
- <DropdownMenu.Item>Item 1</DropdownMenu.Item>
265
- <DropdownMenu.Item>Item 2</DropdownMenu.Item>
266
- <DropdownMenu.Item>Item 3</DropdownMenu.Item>
267
- </DropdownMenu.Content>
268
- </DropdownMenu>
269
296
  </div>
270
297
  </PageContent>
271
298
  <PageNav>
package/src/uno/colors.ts CHANGED
@@ -88,6 +88,7 @@ export const themeColors = {
88
88
  white: 'var(--color-white)',
89
89
  wash: 'var(--color-wash)',
90
90
  transparent: 'transparent',
91
+ current: 'currentColor',
91
92
 
92
93
  // magic tokens
93
94
  bg: 'var(--v-bg-altered, var(--v-bg, transparent))',
@@ -1,12 +1,15 @@
1
1
  export function getShadows(hard = false) {
2
+ const opacity1 = `calc(var(--un-shadow-opacity,0.1)*(1 + var(--global-shadow-spread,1) * 0.5)*2)`;
3
+ const opacity2 = `calc(var(--un-shadow-opacity,0.1)*(1 + var(--global-shadow-spread,1) * 0.5))`;
4
+ const opacity3 = `calc(var(--un-shadow-opacity,0.1)*(1 + var(--global-shadow-spread,1) * 0.5)/2)`;
2
5
  return {
3
- sm: `var(--un-shadow-inset) 0 calc(0px * var(--v-shadow-y-mult,1)) calc(1px * var(--global-shadow-spread,1)) 0 rgb(from var(--un-shadow-color) r g b / calc((var(--un-shadow-opacity,0.1)*2))),
4
- var(--un-shadow-inset) 0 calc(1px * var(--v-shadow-y-mult,1)) calc(2px * var(--global-shadow-spread,1)) 0 rgb(from var(--un-shadow-color) r g b / calc((var(--un-shadow-opacity,0.1)*2)))`,
5
- md: `var(--un-shadow-inset) 0 calc(4px * var(--v-shadow-y-mult,1)) calc(8px * var(--global-shadow-spread,1)) -1px rgb(from var(--un-shadow-color) r g b / calc((var(--un-shadow-opacity,0.1)))),
6
- var(--un-shadow-inset) 0 calc(2px * var(--v-shadow-y-mult,1)) calc(4px * var(--global-shadow-spread,1)) -1px rgb(from var(--un-shadow-color) r g b / calc((var(--un-shadow-opacity,0.1)*2)))`,
7
- lg: `var(--un-shadow-inset) 0 calc(8px * var(--v-shadow-y-mult,1)) calc(16px * var(--global-shadow-spread,1)) 0px rgb(from var(--un-shadow-color) r g b / calc((var(--un-shadow-opacity,0.1)))),
8
- var(--un-shadow-inset) 0 calc(5px * var(--v-shadow-y-mult,1)) calc(10px * var(--global-shadow-spread,1)) 0px rgb(from var(--un-shadow-color) r g b / calc((var(--un-shadow-opacity,0.1))))`,
9
- xl: `var(--un-shadow-inset) 0 calc(20px * var(--v-shadow-y-mult,1)) calc(40px * (0.1 + var(--global-shadow-spread,1))) -0px rgb(from var(--un-shadow-color) r g b / calc((var(--un-shadow-opacity,0.1)))),
10
- var(--un-shadow-inset) 0 calc(15px * var(--v-shadow-y-mult,1)) calc(30px * (0.05 + var(--global-shadow-spread,1))) -6px rgb(from var(--un-shadow-color) r g b / calc(0.5*(var(--un-shadow-opacity,0.1))))`,
6
+ sm: `var(--un-shadow-inset) 0 calc(0px * var(--v-shadow-y-mult,1)) calc(1px * var(--global-shadow-spread,1)) 0 rgb(from var(--un-shadow-color) r g b / ${opacity1}),
7
+ var(--un-shadow-inset) 0 calc(1px * var(--v-shadow-y-mult,1)) calc(2px * var(--global-shadow-spread,1)) 0 rgb(from var(--un-shadow-color) r g b / ${opacity1})`,
8
+ md: `var(--un-shadow-inset) 0 calc(4px * var(--v-shadow-y-mult,1)) calc(8px * var(--global-shadow-spread,1)) -1px rgb(from var(--un-shadow-color) r g b / ${opacity2}),
9
+ var(--un-shadow-inset) 0 calc(2px * var(--v-shadow-y-mult,1)) calc(4px * var(--global-shadow-spread,1)) -1px rgb(from var(--un-shadow-color) r g b / ${opacity1})`,
10
+ lg: `var(--un-shadow-inset) 0 calc(8px * var(--v-shadow-y-mult,1)) calc(16px * var(--global-shadow-spread,1)) 0px rgb(from var(--un-shadow-color) r g b / ${opacity2}),
11
+ var(--un-shadow-inset) 0 calc(5px * var(--v-shadow-y-mult,1)) calc(10px * var(--global-shadow-spread,1)) 0px rgb(from var(--un-shadow-color) r g b / ${opacity2})`,
12
+ xl: `var(--un-shadow-inset) 0 calc(20px * var(--v-shadow-y-mult,1)) calc(40px * (0.1 + var(--global-shadow-spread,1))) -0px rgb(from var(--un-shadow-color) r g b / ${opacity2}),
13
+ var(--un-shadow-inset) 0 calc(15px * var(--v-shadow-y-mult,1)) calc(30px * (0.05 + var(--global-shadow-spread,1))) -6px rgb(from var(--un-shadow-color) r g b / ${opacity3})`,
11
14
  };
12
15
  }