@a-type/ui 4.0.0-beta.1 → 4.0.0-beta.10

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 (89) hide show
  1. package/dist/cjs/components/avatar/Avatar.js +1 -1
  2. package/dist/cjs/components/avatar/Avatar.js.map +1 -1
  3. package/dist/cjs/components/avatar/Avatar.stories.d.ts +18 -0
  4. package/dist/cjs/components/avatar/Avatar.stories.js +38 -0
  5. package/dist/cjs/components/avatar/Avatar.stories.js.map +1 -0
  6. package/dist/cjs/components/button/Button.d.ts +3 -3
  7. package/dist/cjs/components/button/Button.js.map +1 -1
  8. package/dist/cjs/components/collapsible/Collapsible.d.ts +2 -0
  9. package/dist/cjs/components/collapsible/Collapsible.js +3 -1
  10. package/dist/cjs/components/collapsible/Collapsible.js.map +1 -1
  11. package/dist/cjs/components/dialog/Dialog.d.ts +2 -2
  12. package/dist/cjs/components/dialog/Dialog.js +5 -4
  13. package/dist/cjs/components/dialog/Dialog.js.map +1 -1
  14. package/dist/cjs/components/dialog/Dialog.stories.d.ts +1 -1
  15. package/dist/cjs/components/forms/SubmitButton.d.ts +1 -1
  16. package/dist/cjs/components/forms/SubmitButton.js +1 -13
  17. package/dist/cjs/components/forms/SubmitButton.js.map +1 -1
  18. package/dist/cjs/components/imageUploader/ImageUploader.js +1 -1
  19. package/dist/cjs/components/imageUploader/ImageUploader.js.map +1 -1
  20. package/dist/cjs/components/popover/Popover.d.ts +0 -2
  21. package/dist/cjs/components/popover/Popover.js +2 -4
  22. package/dist/cjs/components/popover/Popover.js.map +1 -1
  23. package/dist/cjs/components/richEditor/index.js +1 -1
  24. package/dist/cjs/components/richEditor/index.js.map +1 -1
  25. package/dist/cjs/components/select/Select.d.ts +3 -0
  26. package/dist/cjs/components/select/Select.js +4 -1
  27. package/dist/cjs/components/select/Select.js.map +1 -1
  28. package/dist/cjs/components/select/Select.stories.d.ts +3 -0
  29. package/dist/cjs/components/slider/Slider.d.ts +4 -4
  30. package/dist/cjs/components/slider/Slider.js +1 -1
  31. package/dist/cjs/components/slider/Slider.js.map +1 -1
  32. package/dist/cjs/components/slider/Slider.stories.d.ts +2 -2
  33. package/dist/cjs/components/tabs/tabs.js +1 -1
  34. package/dist/cjs/components/tabs/tabs.js.map +1 -1
  35. package/dist/cjs/hooks/withProps.d.ts +1 -1
  36. package/dist/cjs/hooks/withProps.js +1 -1
  37. package/dist/cjs/hooks/withProps.js.map +1 -1
  38. package/dist/css/main.css +1 -1
  39. package/dist/esm/components/avatar/Avatar.js +1 -1
  40. package/dist/esm/components/avatar/Avatar.js.map +1 -1
  41. package/dist/esm/components/avatar/Avatar.stories.d.ts +18 -0
  42. package/dist/esm/components/avatar/Avatar.stories.js +35 -0
  43. package/dist/esm/components/avatar/Avatar.stories.js.map +1 -0
  44. package/dist/esm/components/button/Button.d.ts +3 -3
  45. package/dist/esm/components/button/Button.js.map +1 -1
  46. package/dist/esm/components/collapsible/Collapsible.d.ts +2 -0
  47. package/dist/esm/components/collapsible/Collapsible.js +2 -0
  48. package/dist/esm/components/collapsible/Collapsible.js.map +1 -1
  49. package/dist/esm/components/dialog/Dialog.d.ts +2 -2
  50. package/dist/esm/components/dialog/Dialog.js +4 -4
  51. package/dist/esm/components/dialog/Dialog.js.map +1 -1
  52. package/dist/esm/components/dialog/Dialog.stories.d.ts +1 -1
  53. package/dist/esm/components/forms/SubmitButton.d.ts +1 -1
  54. package/dist/esm/components/forms/SubmitButton.js +1 -13
  55. package/dist/esm/components/forms/SubmitButton.js.map +1 -1
  56. package/dist/esm/components/imageUploader/ImageUploader.js +1 -1
  57. package/dist/esm/components/imageUploader/ImageUploader.js.map +1 -1
  58. package/dist/esm/components/popover/Popover.d.ts +0 -2
  59. package/dist/esm/components/popover/Popover.js +1 -3
  60. package/dist/esm/components/popover/Popover.js.map +1 -1
  61. package/dist/esm/components/richEditor/index.js +1 -1
  62. package/dist/esm/components/richEditor/index.js.map +1 -1
  63. package/dist/esm/components/select/Select.d.ts +3 -0
  64. package/dist/esm/components/select/Select.js +4 -1
  65. package/dist/esm/components/select/Select.js.map +1 -1
  66. package/dist/esm/components/select/Select.stories.d.ts +3 -0
  67. package/dist/esm/components/slider/Slider.d.ts +4 -4
  68. package/dist/esm/components/slider/Slider.js +1 -1
  69. package/dist/esm/components/slider/Slider.js.map +1 -1
  70. package/dist/esm/components/slider/Slider.stories.d.ts +2 -2
  71. package/dist/esm/components/tabs/tabs.js +1 -1
  72. package/dist/esm/components/tabs/tabs.js.map +1 -1
  73. package/dist/esm/hooks/withProps.d.ts +1 -1
  74. package/dist/esm/hooks/withProps.js +1 -1
  75. package/dist/esm/hooks/withProps.js.map +1 -1
  76. package/package.json +1 -1
  77. package/src/components/avatar/Avatar.stories.tsx +41 -0
  78. package/src/components/avatar/Avatar.tsx +8 -6
  79. package/src/components/button/Button.tsx +5 -2
  80. package/src/components/collapsible/Collapsible.tsx +7 -0
  81. package/src/components/dialog/Dialog.tsx +3 -4
  82. package/src/components/forms/SubmitButton.tsx +1 -1
  83. package/src/components/imageUploader/ImageUploader.tsx +0 -1
  84. package/src/components/popover/Popover.tsx +1 -2
  85. package/src/components/richEditor/index.tsx +8 -4
  86. package/src/components/select/Select.tsx +4 -1
  87. package/src/components/slider/Slider.tsx +4 -1
  88. package/src/components/tabs/tabs.tsx +1 -1
  89. package/src/hooks/withProps.tsx +1 -1
@@ -5,7 +5,7 @@ export const withProps = (Component, extras) => {
5
5
  return _jsx(Component, Object.assign({}, props, extras));
6
6
  };
7
7
  };
8
- export const withoutProps = (Component, remove) => {
8
+ export const withoutProps = (Component, _remove) => {
9
9
  return (props) => {
10
10
  return _jsx(Component, Object.assign({}, props));
11
11
  };
@@ -1 +1 @@
1
- {"version":3,"file":"withProps.js","sourceRoot":"","sources":["../../../src/hooks/withProps.tsx"],"names":[],"mappings":";AAEA,MAAM,CAAC,MAAM,SAAS,GAAG,CACxB,SAAiC,EACjC,MAAkB,EACjB,EAAE;IACH,OAAO,CAAC,KAAQ,EAAE,EAAE;QACnB,OAAO,KAAC,SAAS,oBAAK,KAAK,EAAM,MAAM,EAAI,CAAC;IAC7C,CAAC,CAAC;AACH,CAAC,CAAC;AAKF,MAAM,CAAC,MAAM,YAAY,GAAG,CAC3B,SAAiC,EACjC,MAAW,EACV,EAAE;IACH,OAAO,CAAC,KAAiB,EAAE,EAAE;QAC5B,OAAO,KAAC,SAAS,oBAAM,KAAa,EAAI,CAAC;IAC1C,CAAC,CAAC;AACH,CAAC,CAAC"}
1
+ {"version":3,"file":"withProps.js","sourceRoot":"","sources":["../../../src/hooks/withProps.tsx"],"names":[],"mappings":";AAEA,MAAM,CAAC,MAAM,SAAS,GAAG,CACxB,SAAiC,EACjC,MAAkB,EACjB,EAAE;IACH,OAAO,CAAC,KAAQ,EAAE,EAAE;QACnB,OAAO,KAAC,SAAS,oBAAK,KAAK,EAAM,MAAM,EAAI,CAAC;IAC7C,CAAC,CAAC;AACH,CAAC,CAAC;AAKF,MAAM,CAAC,MAAM,YAAY,GAAG,CAC3B,SAAiC,EACjC,OAAY,EACX,EAAE;IACH,OAAO,CAAC,KAAiB,EAAE,EAAE;QAC5B,OAAO,KAAC,SAAS,oBAAM,KAAa,EAAI,CAAC;IAC1C,CAAC,CAAC;AACH,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@a-type/ui",
3
- "version": "4.0.0-beta.1",
3
+ "version": "4.0.0-beta.10",
4
4
  "type": "module",
5
5
  "repository": {
6
6
  "url": "https://github.com/a-type/ui"
@@ -0,0 +1,41 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { Avatar } from './Avatar.js';
3
+
4
+ const meta = {
5
+ title: 'Components/Avatar',
6
+ component: Avatar,
7
+ argTypes: {},
8
+ parameters: {
9
+ controls: { expanded: true },
10
+ },
11
+ } satisfies Meta<typeof Avatar>;
12
+
13
+ export default meta;
14
+
15
+ type Story = StoryObj<typeof Avatar>;
16
+
17
+ export const Default: Story = {
18
+ render(args) {
19
+ return <Avatar {...args} />;
20
+ },
21
+ };
22
+
23
+ export const WithImage: Story = {
24
+ args: {
25
+ imageSrc: 'https://i.pravatar.cc/300',
26
+ name: 'John Doe',
27
+ },
28
+ };
29
+
30
+ export const WithName: Story = {
31
+ args: {
32
+ name: 'Jane Smith',
33
+ },
34
+ };
35
+
36
+ export const FailedImage: Story = {
37
+ args: {
38
+ imageSrc: 'http://localhost:3333/nonexistent.jpg',
39
+ name: 'Fallback User',
40
+ },
41
+ };
@@ -49,12 +49,14 @@ export function Avatar({
49
49
  crossOrigin={crossOrigin}
50
50
  />
51
51
  )}
52
- <BaseAvatar.Fallback
53
- className="text-size-[calc(0.5px*var(--avatar-size,24px))]"
54
- style={{ '--avatar-size': size } as any}
55
- >
56
- {name?.charAt(0) || '?'}
57
- </BaseAvatar.Fallback>
52
+ {!empty && (
53
+ <BaseAvatar.Fallback
54
+ className="text-size-[calc(0.5px*var(--avatar-size,24px))]"
55
+ style={{ '--avatar-size': size } as any}
56
+ >
57
+ {name?.charAt(0) || '?'}
58
+ </BaseAvatar.Fallback>
59
+ )}
58
60
  {empty && <Icon name="profile" />}
59
61
  </BaseAvatar.Root>
60
62
  );
@@ -5,6 +5,7 @@ import {
5
5
  import { clsx } from 'clsx';
6
6
  import { AnimatePresence, motion } from 'motion/react';
7
7
  import {
8
+ ButtonHTMLAttributes,
8
9
  Children,
9
10
  Fragment,
10
11
  memo,
@@ -25,7 +26,9 @@ import { Spinner } from '../spinner/index.js';
25
26
  import { SlotDiv } from '../utility/SlotDiv.js';
26
27
  import { getButtonClassName } from './classes.js';
27
28
 
28
- export type ButtonProps = BaseButtonProps & {
29
+ export interface ButtonProps
30
+ extends ButtonHTMLAttributes<HTMLButtonElement>,
31
+ Pick<BaseButtonProps, 'render' | 'focusableWhenDisabled'> {
29
32
  color?: PaletteName;
30
33
  emphasis?:
31
34
  | 'primary'
@@ -44,7 +47,7 @@ export type ButtonProps = BaseButtonProps & {
44
47
  disableIconMode?: boolean;
45
48
  ref?: Ref<HTMLButtonElement>;
46
49
  disableDropdownTriggerIcon?: boolean;
47
- };
50
+ }
48
51
 
49
52
  export function ButtonRoot({
50
53
  className,
@@ -60,8 +60,15 @@ export const CollapsibleSimple = ({
60
60
  </CollapsibleRoot>
61
61
  );
62
62
 
63
+ export const CollapsibleIcon = withClassName(
64
+ 'span',
65
+ 'layer-components:transition-transform',
66
+ 'layer-components:[[data-panel-open]_&]:rotate-180',
67
+ );
68
+
63
69
  export const Collapsible = Object.assign(CollapsibleRoot, {
64
70
  Content: CollapsibleContent,
65
71
  Trigger: CollapsibleTrigger,
66
72
  Simple: CollapsibleSimple,
73
+ Icon: CollapsibleIcon,
67
74
  });
@@ -19,7 +19,6 @@ import {
19
19
  useRef,
20
20
  useState,
21
21
  } from 'react';
22
- import { withProps } from '../../hooks.js';
23
22
  import { useMediaQuery } from '../../hooks/useMediaQuery.js';
24
23
  import useMergedRef from '../../hooks/useMergedRef.js';
25
24
  import { withClassName } from '../../hooks/withClassName.js';
@@ -431,9 +430,9 @@ const DialogRoot = (props: DialogRootProps) => {
431
430
  );
432
431
  };
433
432
 
434
- export const DialogTrigger = withProps(BaseDialog.Trigger, {
435
- render: <Button />,
436
- });
433
+ export const DialogTrigger = ({ render, ...props }: DialogTriggerProps) => (
434
+ <BaseDialog.Trigger render={render || <Button />} {...props} />
435
+ );
437
436
  export const DialogContent = Content;
438
437
  export const DialogTitle = StyledTitle;
439
438
  export const DialogDescription = StyledDescription;
@@ -1,7 +1,7 @@
1
1
  import { useFormikContext } from 'formik';
2
2
  import { Button, ButtonProps } from '../button/Button.js';
3
3
 
4
- export function SubmitButton({ nativeButton: _, ...props }: ButtonProps) {
4
+ export function SubmitButton(props: ButtonProps) {
5
5
  const { isSubmitting, isValid } = useFormikContext();
6
6
  return (
7
7
  <Button
@@ -248,7 +248,6 @@ export function ImageUploaderFileButton({ children, ...props }: ButtonProps) {
248
248
  emphasis="ghost"
249
249
  size="small"
250
250
  render={<label htmlFor={inputId} />}
251
- nativeButton={false}
252
251
  visuallyFocused={focused}
253
252
  {...props}
254
253
  >
@@ -20,6 +20,7 @@ const StyledContent = withClassName(
20
20
  'layer-components:data-[ending-style]:(opacity-0 scale-95 translate-y-4px)',
21
21
  'important:motion-reduce:transition-none',
22
22
  'layer-components:(max-h-[--available-height] max-w-[--available-width])',
23
+ 'layer-components:focus-visible:(outline-none ring-2 ring-accent)',
23
24
  );
24
25
 
25
26
  const StyledArrow = withClassName(
@@ -43,7 +44,6 @@ export const PopoverRoot = PopoverPrimitive.Root;
43
44
  export const PopoverTrigger = PopoverPrimitive.Trigger;
44
45
  export const PopoverArrow = StyledArrow;
45
46
  export const PopoverClose = StyledClose;
46
- export const PopoverAnchor = PopoverPrimitive.Handle;
47
47
 
48
48
  export const PopoverContent = function PopoverContent({
49
49
  ref,
@@ -128,7 +128,6 @@ export const Popover = Object.assign(PopoverRoot, {
128
128
  Arrow: PopoverArrow,
129
129
  Close: PopoverClose,
130
130
  Trigger: PopoverTrigger,
131
- Anchor: PopoverAnchor,
132
131
  Title: PopoverTitle,
133
132
  Description: PopoverDescription,
134
133
  createHandle: PopoverPrimitive.createHandle,
@@ -4,10 +4,14 @@ export const tipTapClassName = clsx(
4
4
  'layer-components:(w-full leading-relaxed)',
5
5
  'layer-components:[&_.ProseMirror:focus]:(outline-none shadow-focus)',
6
6
  'layer-components:[&_h1,h2,h3,p]:mt-0',
7
- 'layer-components:[&_h1]:(text-2xl font-semibold mb-md [&:not:first-child]:mt-xl)',
8
- 'layer-components:[&_h2]:(text-lg font-bold color-gray-dark color-darken-3 mb-md [&:not:first-child]:mt-lg)',
9
- 'layer-components:[&_h3]:(text-md font-500 color-gray-dark color-darken-2 mb-sm [&:not:first-child]:mt-md)',
10
- 'layer-components:[&_h4]:(text-xs color-gray-dark color-darken-1 mb-sm [&:not:first-child]:mt-md uppercase)',
7
+ 'layer-components:[&_h1]:(text-2xl font-semibold mb-md)',
8
+ 'layer-components:[&_h1]:[&:not(:first-child)]:mt-xl',
9
+ 'layer-components:[&_h2]:(text-lg font-bold color-gray-dark color-darken-3 mb-md)',
10
+ 'layer-components:[&_h2]:[&:not(:first-child)]:mt-lg',
11
+ 'layer-components:[&_h3]:(text-md font-500 color-gray-dark color-darken-2 mb-sm)',
12
+ 'layer-components:[&_h3]:[&:not(:first-child)]:mt-md',
13
+ 'layer-components:[&_h4]:(text-xs color-gray-dark color-darken-1 mb-sm uppercase)',
14
+ 'layer-components:[&_h4]:[&:not(:first-child)]:mt-md',
11
15
  'layer-components:[&_p]:(mb-md mt-0)',
12
16
  'layer-components:[&_a]:underline',
13
17
  'layer-components:[&_blockquote]:(border-l-4 border-l-solid border-gray pl-4 mb-md mt-md ml-md)',
@@ -27,7 +27,7 @@ export const SelectItem = ({
27
27
  }) => {
28
28
  return (
29
29
  <SelectItemRoot className={className} {...props} ref={forwardedRef}>
30
- <BaseSelect.ItemText>{children}</BaseSelect.ItemText>
30
+ <SelectItemText>{children}</SelectItemText>
31
31
  <SelectItemIndicator />
32
32
  </SelectItemRoot>
33
33
  );
@@ -235,4 +235,7 @@ export const Select = Object.assign(SelectBase, {
235
235
  Icon: SelectIcon,
236
236
  Content: SelectContent,
237
237
  Arrow: SelectArrow,
238
+ ItemRoot: SelectItemRoot,
239
+ ItemText: SelectItemText,
240
+ ItemIndicator: SelectItemIndicator,
238
241
  });
@@ -4,7 +4,10 @@ import { Ref } from 'react';
4
4
  import { withClassName } from '../../hooks.js';
5
5
  import { PaletteName } from '../../uno/index.js';
6
6
 
7
- export const SliderRoot = BaseSlider.Root;
7
+ export const SliderRoot = withClassName(
8
+ BaseSlider.Root,
9
+ 'layer-components:w-full',
10
+ );
8
11
 
9
12
  export const SliderControl = withClassName(
10
13
  BaseSlider.Control,
@@ -45,7 +45,7 @@ export const TabsContent = withClassName(
45
45
  export const TabsList = ({
46
46
  children,
47
47
  className,
48
- color = 'gray',
48
+ color = 'primary',
49
49
  ...props
50
50
  }: TabsListProps & {
51
51
  color?: 'gray' | 'primary';
@@ -14,7 +14,7 @@ type OptionalKeys<T> = {
14
14
  }[keyof T];
15
15
  export const withoutProps = <T extends {}, P extends OptionalKeys<T>>(
16
16
  Component: React.ComponentType<T>,
17
- remove: P[],
17
+ _remove: P[],
18
18
  ) => {
19
19
  return (props: Omit<T, P>) => {
20
20
  return <Component {...(props as any)} />;