@a-type/ui 0.6.6 → 0.6.8

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 (216) hide show
  1. package/dist/cjs/components/actions/ActionBar.js +2 -2
  2. package/dist/cjs/components/actions/ActionBar.js.map +1 -1
  3. package/dist/cjs/components/actions/ActionButton.js +2 -2
  4. package/dist/cjs/components/actions/ActionButton.js.map +1 -1
  5. package/dist/cjs/components/avatar/Avatar.js +2 -2
  6. package/dist/cjs/components/avatar/Avatar.js.map +1 -1
  7. package/dist/cjs/components/avatar/AvatarList.js +2 -2
  8. package/dist/cjs/components/avatar/AvatarList.js.map +1 -1
  9. package/dist/cjs/components/button/Button.js +2 -2
  10. package/dist/cjs/components/button/Button.js.map +1 -1
  11. package/dist/cjs/components/button/classes.js +2 -2
  12. package/dist/cjs/components/button/classes.js.map +1 -1
  13. package/dist/cjs/components/camera/Camera.js +2 -2
  14. package/dist/cjs/components/camera/Camera.js.map +1 -1
  15. package/dist/cjs/components/card/Card.js +2 -2
  16. package/dist/cjs/components/card/Card.js.map +1 -1
  17. package/dist/cjs/components/checkbox/Checkbox.js +3 -3
  18. package/dist/cjs/components/checkbox/Checkbox.js.map +1 -1
  19. package/dist/cjs/components/chip/Chip.js +2 -2
  20. package/dist/cjs/components/chip/Chip.js.map +1 -1
  21. package/dist/cjs/components/colorPicker/ColorPicker.js +2 -2
  22. package/dist/cjs/components/colorPicker/ColorPicker.js.map +1 -1
  23. package/dist/cjs/components/contextMenu/contextMenu.js +2 -2
  24. package/dist/cjs/components/contextMenu/contextMenu.js.map +1 -1
  25. package/dist/cjs/components/datePicker/DatePicker.js +3 -3
  26. package/dist/cjs/components/datePicker/DatePicker.js.map +1 -1
  27. package/dist/cjs/components/dialog/Dialog.d.ts +2 -0
  28. package/dist/cjs/components/dialog/Dialog.js +11 -9
  29. package/dist/cjs/components/dialog/Dialog.js.map +1 -1
  30. package/dist/cjs/components/dialog/Dialog.stories.d.ts +2 -0
  31. package/dist/cjs/components/dialog/Dialog.stories.js +11 -1
  32. package/dist/cjs/components/dialog/Dialog.stories.js.map +1 -1
  33. package/dist/cjs/components/divider/Divider.js +2 -2
  34. package/dist/cjs/components/divider/Divider.js.map +1 -1
  35. package/dist/cjs/components/dropdownMenu/DropdownMenu.js +2 -2
  36. package/dist/cjs/components/dropdownMenu/DropdownMenu.js.map +1 -1
  37. package/dist/cjs/components/forms/TextField.js.map +1 -1
  38. package/dist/cjs/components/icon/Icon.js +2 -2
  39. package/dist/cjs/components/icon/Icon.js.map +1 -1
  40. package/dist/cjs/components/imageUploader/ImageUploader.js +2 -2
  41. package/dist/cjs/components/imageUploader/ImageUploader.js.map +1 -1
  42. package/dist/cjs/components/infiniteLoadTrigger/InfiniteLoadTrigger.js +2 -2
  43. package/dist/cjs/components/infiniteLoadTrigger/InfiniteLoadTrigger.js.map +1 -1
  44. package/dist/cjs/components/input/Input.js +3 -3
  45. package/dist/cjs/components/input/Input.js.map +1 -1
  46. package/dist/cjs/components/layouts/PageContent.js +2 -2
  47. package/dist/cjs/components/layouts/PageContent.js.map +1 -1
  48. package/dist/cjs/components/layouts/PageFixedArea.js +2 -2
  49. package/dist/cjs/components/layouts/PageFixedArea.js.map +1 -1
  50. package/dist/cjs/components/layouts/PageNav.js +2 -2
  51. package/dist/cjs/components/layouts/PageNav.js.map +1 -1
  52. package/dist/cjs/components/layouts/PageNowPlaying.js +2 -2
  53. package/dist/cjs/components/layouts/PageNowPlaying.js.map +1 -1
  54. package/dist/cjs/components/layouts/PageRoot.js +2 -2
  55. package/dist/cjs/components/layouts/PageRoot.js.map +1 -1
  56. package/dist/cjs/components/layouts/PageSection.js +2 -2
  57. package/dist/cjs/components/layouts/PageSection.js.map +1 -1
  58. package/dist/cjs/components/navBar/NavBar.js +3 -3
  59. package/dist/cjs/components/navBar/NavBar.js.map +1 -1
  60. package/dist/cjs/components/note/Note.js +2 -2
  61. package/dist/cjs/components/note/Note.js.map +1 -1
  62. package/dist/cjs/components/numberStepper/NumberStepper.js +2 -2
  63. package/dist/cjs/components/numberStepper/NumberStepper.js.map +1 -1
  64. package/dist/cjs/components/particles/particlesState.d.ts +6 -3
  65. package/dist/cjs/components/particles/particlesState.js +18 -3
  66. package/dist/cjs/components/particles/particlesState.js.map +1 -1
  67. package/dist/cjs/components/peek/Peek.js +2 -2
  68. package/dist/cjs/components/peek/Peek.js.map +1 -1
  69. package/dist/cjs/components/popover/Popover.js +2 -2
  70. package/dist/cjs/components/popover/Popover.js.map +1 -1
  71. package/dist/cjs/components/richEditor/RichEditor.js +2 -2
  72. package/dist/cjs/components/richEditor/RichEditor.js.map +1 -1
  73. package/dist/cjs/components/select/Select.js +4 -4
  74. package/dist/cjs/components/select/Select.js.map +1 -1
  75. package/dist/cjs/components/skeletons/skeletons.js +2 -2
  76. package/dist/cjs/components/skeletons/skeletons.js.map +1 -1
  77. package/dist/cjs/components/spinner/Spinner.js +2 -2
  78. package/dist/cjs/components/spinner/Spinner.js.map +1 -1
  79. package/dist/cjs/components/textArea/TextArea.js +2 -2
  80. package/dist/cjs/components/textArea/TextArea.js.map +1 -1
  81. package/dist/cjs/components/tooltip/Tooltip.js +2 -2
  82. package/dist/cjs/components/tooltip/Tooltip.js.map +1 -1
  83. package/dist/cjs/hooks/withClassName.d.ts +1 -1
  84. package/dist/cjs/hooks/withClassName.js +2 -2
  85. package/dist/cjs/hooks/withClassName.js.map +1 -1
  86. package/dist/cjs/uno.preset.js +1 -1
  87. package/dist/css/main.css +6 -3
  88. package/dist/esm/components/actions/ActionBar.js +1 -1
  89. package/dist/esm/components/actions/ActionBar.js.map +1 -1
  90. package/dist/esm/components/actions/ActionButton.js +1 -1
  91. package/dist/esm/components/actions/ActionButton.js.map +1 -1
  92. package/dist/esm/components/avatar/Avatar.js +1 -1
  93. package/dist/esm/components/avatar/Avatar.js.map +1 -1
  94. package/dist/esm/components/avatar/AvatarList.js +1 -1
  95. package/dist/esm/components/avatar/AvatarList.js.map +1 -1
  96. package/dist/esm/components/button/Button.js +1 -1
  97. package/dist/esm/components/button/Button.js.map +1 -1
  98. package/dist/esm/components/button/classes.js +1 -1
  99. package/dist/esm/components/button/classes.js.map +1 -1
  100. package/dist/esm/components/camera/Camera.js +1 -1
  101. package/dist/esm/components/camera/Camera.js.map +1 -1
  102. package/dist/esm/components/card/Card.js +1 -1
  103. package/dist/esm/components/card/Card.js.map +1 -1
  104. package/dist/esm/components/checkbox/Checkbox.js +1 -1
  105. package/dist/esm/components/checkbox/Checkbox.js.map +1 -1
  106. package/dist/esm/components/chip/Chip.js +1 -1
  107. package/dist/esm/components/chip/Chip.js.map +1 -1
  108. package/dist/esm/components/colorPicker/ColorPicker.js +1 -1
  109. package/dist/esm/components/colorPicker/ColorPicker.js.map +1 -1
  110. package/dist/esm/components/contextMenu/contextMenu.js +1 -1
  111. package/dist/esm/components/contextMenu/contextMenu.js.map +1 -1
  112. package/dist/esm/components/datePicker/DatePicker.js +1 -1
  113. package/dist/esm/components/datePicker/DatePicker.js.map +1 -1
  114. package/dist/esm/components/dialog/Dialog.d.ts +2 -0
  115. package/dist/esm/components/dialog/Dialog.js +8 -6
  116. package/dist/esm/components/dialog/Dialog.js.map +1 -1
  117. package/dist/esm/components/dialog/Dialog.stories.d.ts +2 -0
  118. package/dist/esm/components/dialog/Dialog.stories.js +10 -0
  119. package/dist/esm/components/dialog/Dialog.stories.js.map +1 -1
  120. package/dist/esm/components/divider/Divider.js +1 -1
  121. package/dist/esm/components/divider/Divider.js.map +1 -1
  122. package/dist/esm/components/dropdownMenu/DropdownMenu.js +1 -1
  123. package/dist/esm/components/dropdownMenu/DropdownMenu.js.map +1 -1
  124. package/dist/esm/components/forms/TextField.js.map +1 -1
  125. package/dist/esm/components/icon/Icon.js +1 -1
  126. package/dist/esm/components/icon/Icon.js.map +1 -1
  127. package/dist/esm/components/imageUploader/ImageUploader.js +1 -1
  128. package/dist/esm/components/imageUploader/ImageUploader.js.map +1 -1
  129. package/dist/esm/components/infiniteLoadTrigger/InfiniteLoadTrigger.js +1 -1
  130. package/dist/esm/components/infiniteLoadTrigger/InfiniteLoadTrigger.js.map +1 -1
  131. package/dist/esm/components/input/Input.js +1 -1
  132. package/dist/esm/components/input/Input.js.map +1 -1
  133. package/dist/esm/components/layouts/PageContent.js +1 -1
  134. package/dist/esm/components/layouts/PageContent.js.map +1 -1
  135. package/dist/esm/components/layouts/PageFixedArea.js +1 -1
  136. package/dist/esm/components/layouts/PageFixedArea.js.map +1 -1
  137. package/dist/esm/components/layouts/PageNav.js +1 -1
  138. package/dist/esm/components/layouts/PageNav.js.map +1 -1
  139. package/dist/esm/components/layouts/PageNowPlaying.js +1 -1
  140. package/dist/esm/components/layouts/PageNowPlaying.js.map +1 -1
  141. package/dist/esm/components/layouts/PageRoot.js +1 -1
  142. package/dist/esm/components/layouts/PageRoot.js.map +1 -1
  143. package/dist/esm/components/layouts/PageSection.js +1 -1
  144. package/dist/esm/components/layouts/PageSection.js.map +1 -1
  145. package/dist/esm/components/navBar/NavBar.js +1 -1
  146. package/dist/esm/components/navBar/NavBar.js.map +1 -1
  147. package/dist/esm/components/note/Note.js +1 -1
  148. package/dist/esm/components/note/Note.js.map +1 -1
  149. package/dist/esm/components/numberStepper/NumberStepper.js +1 -1
  150. package/dist/esm/components/numberStepper/NumberStepper.js.map +1 -1
  151. package/dist/esm/components/particles/particlesState.d.ts +6 -3
  152. package/dist/esm/components/particles/particlesState.js +18 -3
  153. package/dist/esm/components/particles/particlesState.js.map +1 -1
  154. package/dist/esm/components/peek/Peek.js +1 -1
  155. package/dist/esm/components/peek/Peek.js.map +1 -1
  156. package/dist/esm/components/popover/Popover.js +1 -1
  157. package/dist/esm/components/popover/Popover.js.map +1 -1
  158. package/dist/esm/components/richEditor/RichEditor.js +1 -1
  159. package/dist/esm/components/richEditor/RichEditor.js.map +1 -1
  160. package/dist/esm/components/select/Select.js +1 -1
  161. package/dist/esm/components/select/Select.js.map +1 -1
  162. package/dist/esm/components/skeletons/skeletons.js +1 -1
  163. package/dist/esm/components/skeletons/skeletons.js.map +1 -1
  164. package/dist/esm/components/spinner/Spinner.js +1 -1
  165. package/dist/esm/components/spinner/Spinner.js.map +1 -1
  166. package/dist/esm/components/textArea/TextArea.js +1 -1
  167. package/dist/esm/components/textArea/TextArea.js.map +1 -1
  168. package/dist/esm/components/tooltip/Tooltip.js +1 -1
  169. package/dist/esm/components/tooltip/Tooltip.js.map +1 -1
  170. package/dist/esm/hooks/withClassName.d.ts +1 -1
  171. package/dist/esm/hooks/withClassName.js +1 -1
  172. package/dist/esm/hooks/withClassName.js.map +1 -1
  173. package/dist/esm/uno.preset.js +1 -1
  174. package/package.json +3 -3
  175. package/src/components/actions/ActionBar.tsx +1 -1
  176. package/src/components/actions/ActionButton.tsx +1 -1
  177. package/src/components/avatar/Avatar.tsx +1 -1
  178. package/src/components/avatar/AvatarList.tsx +1 -1
  179. package/src/components/button/Button.tsx +1 -1
  180. package/src/components/button/classes.tsx +1 -1
  181. package/src/components/camera/Camera.tsx +1 -1
  182. package/src/components/card/Card.tsx +1 -1
  183. package/src/components/checkbox/Checkbox.tsx +1 -1
  184. package/src/components/chip/Chip.tsx +1 -1
  185. package/src/components/colorPicker/ColorPicker.tsx +1 -1
  186. package/src/components/contextMenu/contextMenu.tsx +1 -1
  187. package/src/components/datePicker/DatePicker.tsx +1 -1
  188. package/src/components/dialog/Dialog.stories.tsx +32 -0
  189. package/src/components/dialog/Dialog.tsx +17 -12
  190. package/src/components/divider/Divider.tsx +1 -1
  191. package/src/components/dropdownMenu/DropdownMenu.tsx +1 -1
  192. package/src/components/forms/TextField.tsx +81 -81
  193. package/src/components/icon/Icon.tsx +1 -1
  194. package/src/components/imageUploader/ImageUploader.tsx +1 -1
  195. package/src/components/infiniteLoadTrigger/InfiniteLoadTrigger.tsx +1 -1
  196. package/src/components/input/Input.tsx +1 -1
  197. package/src/components/layouts/PageContent.tsx +1 -1
  198. package/src/components/layouts/PageFixedArea.tsx +1 -1
  199. package/src/components/layouts/PageNav.tsx +1 -1
  200. package/src/components/layouts/PageNowPlaying.tsx +1 -1
  201. package/src/components/layouts/PageRoot.tsx +1 -1
  202. package/src/components/layouts/PageSection.tsx +1 -1
  203. package/src/components/navBar/NavBar.tsx +1 -1
  204. package/src/components/note/Note.tsx +1 -1
  205. package/src/components/numberStepper/NumberStepper.tsx +1 -1
  206. package/src/components/particles/particlesState.ts +20 -1
  207. package/src/components/peek/Peek.tsx +60 -60
  208. package/src/components/popover/Popover.tsx +1 -1
  209. package/src/components/richEditor/RichEditor.tsx +1 -1
  210. package/src/components/select/Select.tsx +1 -1
  211. package/src/components/skeletons/skeletons.tsx +1 -1
  212. package/src/components/spinner/Spinner.tsx +1 -1
  213. package/src/components/textArea/TextArea.tsx +1 -1
  214. package/src/components/tooltip/Tooltip.tsx +1 -1
  215. package/src/hooks/withClassName.tsx +1 -1
  216. package/src/uno.preset.ts +1 -1
@@ -2,111 +2,111 @@
2
2
 
3
3
  import { useField } from 'formik';
4
4
  import {
5
- ComponentProps,
6
- InputHTMLAttributes,
7
- useEffect,
8
- useRef,
9
- Ref,
10
- forwardRef,
5
+ ComponentProps,
6
+ InputHTMLAttributes,
7
+ useEffect,
8
+ useRef,
9
+ Ref,
10
+ forwardRef,
11
11
  } from 'react';
12
12
  import useMergedRef from '../../hooks/useMergedRef.js';
13
- import classNames from 'classnames';
13
+ import classNames from 'clsx';
14
14
  import { Input } from '../input/Input.js';
15
15
  import { TextArea, TextAreaProps } from '../textArea/TextArea.js';
16
16
  import { withClassName } from '../../hooks.js';
17
17
 
18
18
  export type TextFieldProps = {
19
- name: string;
20
- label?: string;
21
- required?: boolean;
22
- type?: InputHTMLAttributes<HTMLInputElement>['type'];
23
- className?: string;
24
- placeholder?: string;
25
- autoComplete?: InputHTMLAttributes<HTMLInputElement>['autoComplete'];
26
- autoFocus?: InputHTMLAttributes<HTMLInputElement>['autoFocus'];
27
- autoFocusDelay?: number;
28
- inputRef?: Ref<HTMLInputElement>;
19
+ name: string;
20
+ label?: string;
21
+ required?: boolean;
22
+ type?: InputHTMLAttributes<HTMLInputElement>['type'];
23
+ className?: string;
24
+ placeholder?: string;
25
+ autoComplete?: InputHTMLAttributes<HTMLInputElement>['autoComplete'];
26
+ autoFocus?: InputHTMLAttributes<HTMLInputElement>['autoFocus'];
27
+ autoFocusDelay?: number;
28
+ inputRef?: Ref<HTMLInputElement>;
29
29
  } & ComponentProps<typeof Input>;
30
30
 
31
31
  const emptyRef = (() => {}) as any;
32
32
 
33
33
  export const TextField = forwardRef<HTMLDivElement, TextFieldProps>(
34
- function TextField(
35
- {
36
- name,
37
- label,
38
- className,
39
- autoFocusDelay,
40
- autoFocus,
41
- inputRef,
42
- onChange,
43
- onFocus,
44
- onBlur,
45
- ...rest
46
- },
47
- ref,
48
- ) {
49
- const [props] = useField({
50
- name,
51
- onChange,
52
- onFocus,
53
- onBlur,
54
- });
55
- const innerInputRef = useRef<HTMLInputElement>(null);
34
+ function TextField(
35
+ {
36
+ name,
37
+ label,
38
+ className,
39
+ autoFocusDelay,
40
+ autoFocus,
41
+ inputRef,
42
+ onChange,
43
+ onFocus,
44
+ onBlur,
45
+ ...rest
46
+ },
47
+ ref,
48
+ ) {
49
+ const [props] = useField({
50
+ name,
51
+ onChange,
52
+ onFocus,
53
+ onBlur,
54
+ });
55
+ const innerInputRef = useRef<HTMLInputElement>(null);
56
56
 
57
- useEffect(() => {
58
- if (autoFocusDelay) {
59
- setTimeout(() => {
60
- if (innerInputRef.current) innerInputRef.current.focus();
61
- }, autoFocusDelay);
62
- }
63
- }, [autoFocusDelay]);
57
+ useEffect(() => {
58
+ if (autoFocusDelay) {
59
+ setTimeout(() => {
60
+ if (innerInputRef.current) innerInputRef.current.focus();
61
+ }, autoFocusDelay);
62
+ }
63
+ }, [autoFocusDelay]);
64
64
 
65
- return (
66
- <FieldRoot className={className} ref={ref}>
67
- {label && <FieldLabel>{label}</FieldLabel>}
68
- <Input
69
- {...props}
70
- {...rest}
71
- autoFocus={autoFocus}
72
- ref={useMergedRef(innerInputRef, inputRef || emptyRef)}
73
- />
74
- </FieldRoot>
75
- );
76
- },
65
+ return (
66
+ <FieldRoot className={className} ref={ref}>
67
+ {label && <FieldLabel>{label}</FieldLabel>}
68
+ <Input
69
+ {...props}
70
+ {...rest}
71
+ autoFocus={autoFocus}
72
+ ref={useMergedRef(innerInputRef, inputRef || emptyRef)}
73
+ />
74
+ </FieldRoot>
75
+ );
76
+ },
77
77
  );
78
78
 
79
79
  export type TextAreaFieldProps = {
80
- name: string;
81
- label?: string;
82
- required?: boolean;
83
- rows?: number;
84
- disabled?: boolean;
85
- className?: string;
86
- inputRef?: Ref<HTMLTextAreaElement>;
80
+ name: string;
81
+ label?: string;
82
+ required?: boolean;
83
+ rows?: number;
84
+ disabled?: boolean;
85
+ className?: string;
86
+ inputRef?: Ref<HTMLTextAreaElement>;
87
87
  } & TextAreaProps;
88
88
 
89
89
  export function TextAreaField({
90
- name,
91
- label,
92
- className,
93
- inputRef,
94
- ...rest
90
+ name,
91
+ label,
92
+ className,
93
+ inputRef,
94
+ ...rest
95
95
  }: TextAreaFieldProps) {
96
- const [props] = useField(name);
97
- return (
98
- <FieldRoot className={className}>
99
- {label && <FieldLabel>{label}</FieldLabel>}
100
- <TextArea ref={inputRef} {...props} {...rest} />
101
- </FieldRoot>
102
- );
96
+ const [props] = useField(name);
97
+ return (
98
+ <FieldRoot className={className}>
99
+ {label && <FieldLabel>{label}</FieldLabel>}
100
+ <TextArea ref={inputRef} {...props} {...rest} />
101
+ </FieldRoot>
102
+ );
103
103
  }
104
104
 
105
105
  const FieldRoot = withClassName(
106
- 'div',
107
- 'flex flex-col items-stretch gap-1 self-stretch',
106
+ 'div',
107
+ 'flex flex-col items-stretch gap-1 self-stretch',
108
108
  );
109
109
  const FieldLabel = withClassName(
110
- 'label',
111
- 'inline-flex flex-col gap-1 text-sm font-bold text-dark-blend mb-1',
110
+ 'label',
111
+ 'inline-flex flex-col gap-1 text-sm font-bold text-dark-blend mb-1',
112
112
  );
@@ -1,5 +1,5 @@
1
1
  import { forwardRef, HTMLAttributes } from 'react';
2
- import classNames from 'classnames';
2
+ import classNames from 'clsx';
3
3
  import { IconName } from './generated/iconNames.js';
4
4
 
5
5
  export interface IconProps extends HTMLAttributes<SVGSVGElement> {
@@ -1,6 +1,6 @@
1
1
  'use client';
2
2
 
3
- import classNames from 'classnames';
3
+ import classNames from 'clsx';
4
4
  import { useCallback, useId, useState } from 'react';
5
5
  import { Icon } from '../icon.js';
6
6
  import { Button } from '../button.js';
@@ -1,5 +1,5 @@
1
1
  import { ReactNode, forwardRef, useEffect, useRef } from 'react';
2
- import classNames from 'classnames';
2
+ import classNames from 'clsx';
3
3
  import useMergedRef from '../../hooks/useMergedRef.js';
4
4
  import { useStableCallback } from '../../hooks.js';
5
5
 
@@ -1,4 +1,4 @@
1
- import classNames from 'classnames';
1
+ import classNames from 'clsx';
2
2
  import { ComponentProps, ComponentPropsWithRef, forwardRef } from 'react';
3
3
 
4
4
  export const inputClassName = classNames(
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- import classNames from 'classnames';
2
+ import classNames from 'clsx';
3
3
  import { HTMLAttributes } from 'react';
4
4
  import { useBoundsCssVars } from '../../hooks/useSize.js';
5
5
 
@@ -1,5 +1,5 @@
1
1
  import { HTMLAttributes } from 'react';
2
- import classNames from 'classnames';
2
+ import classNames from 'clsx';
3
3
 
4
4
  export function PageFixedArea({
5
5
  className,
@@ -1,6 +1,6 @@
1
1
  'use client';
2
2
 
3
- import classNames from 'classnames';
3
+ import classNames from 'clsx';
4
4
  import { HTMLAttributes } from 'react';
5
5
 
6
6
  export function PageNav({
@@ -1,6 +1,6 @@
1
1
  'use client';
2
2
 
3
- import classNames from 'classnames';
3
+ import classNames from 'clsx';
4
4
  import { HTMLAttributes } from 'react';
5
5
 
6
6
  export function PageNowPlaying({
@@ -1,4 +1,4 @@
1
- import classNames from 'classnames';
1
+ import classNames from 'clsx';
2
2
  import { forwardRef, ReactNode } from 'react';
3
3
 
4
4
  export const PageRoot = forwardRef<
@@ -1,5 +1,5 @@
1
1
  import { HTMLAttributes } from 'react';
2
- import classNames from 'classnames';
2
+ import classNames from 'clsx';
3
3
  import { withClassName } from '../../hooks/withClassName.js';
4
4
 
5
5
  export function PageSection({
@@ -1,4 +1,4 @@
1
- import classNames from 'classnames';
1
+ import classNames from 'clsx';
2
2
  import { withClassName } from '../../hooks.js';
3
3
  import { ReactNode, forwardRef } from 'react';
4
4
  import { Slot } from '@radix-ui/react-slot';
@@ -1,5 +1,5 @@
1
1
  import { HTMLAttributes, ReactNode } from 'react';
2
- import classNames from 'classnames';
2
+ import classNames from 'clsx';
3
3
 
4
4
  export interface NoteProps extends HTMLAttributes<HTMLDivElement> {
5
5
  children?: ReactNode;
@@ -1,6 +1,6 @@
1
1
  import { fractionToText } from '@a-type/utils';
2
2
  import { MinusIcon, PlusIcon } from '@radix-ui/react-icons';
3
- import classNames from 'classnames';
3
+ import classNames from 'clsx';
4
4
  import { ReactNode } from 'react';
5
5
  import { Button } from '../button.js';
6
6
 
@@ -263,6 +263,7 @@ export const createElementBorderInitializer = ({
263
263
  lifespan = 2000,
264
264
  forceFuzz = 0.05,
265
265
  angleFuzz = 0.02,
266
+ margin = 0,
266
267
  }: {
267
268
  element: HTMLElement;
268
269
  borders?: BorderName[];
@@ -271,12 +272,27 @@ export const createElementBorderInitializer = ({
271
272
  lifespan?: number;
272
273
  forceFuzz?: number;
273
274
  angleFuzz?: number;
275
+ margin?: number;
274
276
  }): ParticleInitializer => {
275
277
  // randomly spawn particles around the border of the element by 'unwrapping' the selected borders as
276
278
  // a single theoretical line, picking a random point on the line, and then converting that point
277
279
  // back to a point on the border.
278
280
  return (index: number) => {
279
- const rect = element.getBoundingClientRect();
281
+ const bounds = element.getBoundingClientRect();
282
+ const rect = {
283
+ left: bounds.left,
284
+ top: bounds.top,
285
+ right: bounds.right,
286
+ bottom: bounds.bottom,
287
+ width: bounds.width,
288
+ height: bounds.height,
289
+ };
290
+ if (margin) {
291
+ rect.left -= margin;
292
+ rect.top -= margin;
293
+ rect.right += margin;
294
+ rect.bottom += margin;
295
+ }
280
296
 
281
297
  const borderLengths = borders.map((border) => {
282
298
  switch (border) {
@@ -370,6 +386,7 @@ export const elementExplosion = ({
370
386
  drag,
371
387
  forceFuzz,
372
388
  angleFuzz,
389
+ margin,
373
390
  ...rest
374
391
  }: {
375
392
  element: HTMLElement;
@@ -383,6 +400,7 @@ export const elementExplosion = ({
383
400
  drag?: number;
384
401
  forceFuzz?: number;
385
402
  angleFuzz?: number;
403
+ margin?: number;
386
404
  }) =>
387
405
  createCircleParticles({
388
406
  initializer: createElementBorderInitializer({
@@ -393,6 +411,7 @@ export const elementExplosion = ({
393
411
  drag,
394
412
  forceFuzz,
395
413
  angleFuzz,
414
+ margin,
396
415
  }),
397
416
  color,
398
417
  ...rest,
@@ -1,74 +1,74 @@
1
1
  import { debounce } from '@a-type/utils';
2
- import classNames from 'classnames';
2
+ import classNames from 'clsx';
3
3
  import { ReactNode, useEffect, useId, useMemo, useRef, useState } from 'react';
4
4
  import { useSize } from '../../hooks/useSize.js';
5
5
  import { useToggle } from '../../hooks/useToggle.js';
6
6
 
7
7
  export interface PeekProps {
8
- peekHeight?: number;
9
- children: ReactNode;
10
- className?: string;
8
+ peekHeight?: number;
9
+ children: ReactNode;
10
+ className?: string;
11
11
  }
12
12
 
13
13
  export function Peek({ peekHeight = 120, children, className }: PeekProps) {
14
- const containerRef = useRef<HTMLDivElement>(null);
15
- const [isPeekable, setIsPeekable] = useState(false);
16
- const contentRef = useSize<HTMLDivElement>(
17
- useMemo(
18
- () =>
19
- debounce(({ height }) => {
20
- setIsPeekable(height > peekHeight);
21
- if (containerRef.current) {
22
- containerRef.current.style.setProperty(
23
- '--collapsible-height',
24
- `${height}px`,
25
- );
26
- }
27
- }, 300),
28
- [],
29
- ),
30
- );
14
+ const containerRef = useRef<HTMLDivElement>(null);
15
+ const [isPeekable, setIsPeekable] = useState(false);
16
+ const contentRef = useSize<HTMLDivElement>(
17
+ useMemo(
18
+ () =>
19
+ debounce(({ height }) => {
20
+ setIsPeekable(height > peekHeight);
21
+ if (containerRef.current) {
22
+ containerRef.current.style.setProperty(
23
+ '--collapsible-height',
24
+ `${height}px`,
25
+ );
26
+ }
27
+ }, 300),
28
+ [],
29
+ ),
30
+ );
31
31
 
32
- const [open, toggle] = useToggle(false);
32
+ const [open, toggle] = useToggle(false);
33
33
 
34
- useEffect(() => {
35
- if (containerRef.current) {
36
- containerRef.current.style.setProperty(
37
- '--peek-height',
38
- `${peekHeight}px`,
39
- );
40
- }
41
- }, [peekHeight]);
34
+ useEffect(() => {
35
+ if (containerRef.current) {
36
+ containerRef.current.style.setProperty(
37
+ '--peek-height',
38
+ `${peekHeight}px`,
39
+ );
40
+ }
41
+ }, [peekHeight]);
42
42
 
43
- const id = useId();
43
+ const id = useId();
44
44
 
45
- return (
46
- <div
47
- className={classNames(
48
- 'relative animate-ease-default animate-forwards overflow-hidden [&[data-state=closed]]:(animate-keyframes-peek-close animate-duration-300 max-h-[var(--peek-height,120px)]) [&[data-state=open]]:(animate-keyframes-peek-open animate-duration-600)',
49
- className,
50
- )}
51
- ref={containerRef}
52
- data-state={isPeekable ? (open ? 'open' : 'closed') : undefined}
53
- >
54
- <div ref={contentRef} id={id}>
55
- {children}
56
- </div>
57
- {isPeekable && (
58
- <button
59
- data-state={open ? 'open' : 'closed'}
60
- className={classNames(
61
- 'h-80px absolute bottom-0 z-1 bg-transparent border-none w-full cursor-pointer border-b border-solid border-white',
62
- 'focus-visible:(outline-none bg-gradient-to-b from-transparent to-primary-wash border-b border-solid border-primary',
63
- 'after:(content-["-_tap_to_expand_-"] p-3 color-gray9 text-xs flex flex-col justify-end items-center absolute inset-0 top-auto h-80px bg-gradient-to-b from-transparent to-white)',
64
- 'after:[&[data-state=open]]:content-["-_tap_to_collapse_-"]',
65
- )}
66
- onClick={toggle}
67
- aria-label="Toggle show description"
68
- aria-expanded={open}
69
- aria-controls={id}
70
- />
71
- )}
72
- </div>
73
- );
45
+ return (
46
+ <div
47
+ className={classNames(
48
+ 'relative animate-ease-default animate-forwards overflow-hidden [&[data-state=closed]]:(animate-keyframes-peek-close animate-duration-300 max-h-[var(--peek-height,120px)]) [&[data-state=open]]:(animate-keyframes-peek-open animate-duration-600)',
49
+ className,
50
+ )}
51
+ ref={containerRef}
52
+ data-state={isPeekable ? (open ? 'open' : 'closed') : undefined}
53
+ >
54
+ <div ref={contentRef} id={id}>
55
+ {children}
56
+ </div>
57
+ {isPeekable && (
58
+ <button
59
+ data-state={open ? 'open' : 'closed'}
60
+ className={classNames(
61
+ 'h-80px absolute bottom-0 z-1 bg-transparent border-none w-full cursor-pointer border-b border-solid border-white',
62
+ 'focus-visible:(outline-none bg-gradient-to-b from-transparent to-primary-wash border-b border-solid border-primary',
63
+ 'after:(content-["-_tap_to_expand_-"] p-3 color-gray9 text-xs flex flex-col justify-end items-center absolute inset-0 top-auto h-80px bg-gradient-to-b from-transparent to-white)',
64
+ 'after:[&[data-state=open]]:content-["-_tap_to_collapse_-"]',
65
+ )}
66
+ onClick={toggle}
67
+ aria-label="Toggle show description"
68
+ aria-expanded={open}
69
+ aria-controls={id}
70
+ />
71
+ )}
72
+ </div>
73
+ );
74
74
  }
@@ -4,7 +4,7 @@ import * as PopoverPrimitive from '@radix-ui/react-popover';
4
4
  import { ComponentPropsWithoutRef, forwardRef } from 'react';
5
5
 
6
6
  import { withClassName } from '../../hooks/withClassName.js';
7
- import classNames from 'classnames';
7
+ import classNames from 'clsx';
8
8
 
9
9
  const StyledContent = withClassName(
10
10
  PopoverPrimitive.Content,
@@ -1,6 +1,6 @@
1
1
  'use client';
2
2
 
3
- import classNames from 'classnames';
3
+ import classNames from 'clsx';
4
4
  import { forwardRef, lazy } from 'react';
5
5
 
6
6
  const EditorContent = lazy(() => import('./EditorContent.js'));
@@ -16,7 +16,7 @@ import {
16
16
  forwardRef,
17
17
  useContext,
18
18
  } from 'react';
19
- import classNames from 'classnames';
19
+ import classNames from 'clsx';
20
20
  import { withClassName } from '../../hooks/withClassName.js';
21
21
 
22
22
  export const SelectItem = forwardRef<
@@ -1,5 +1,5 @@
1
1
  import { useState } from 'react';
2
- import classNames from 'classnames';
2
+ import classNames from 'clsx';
3
3
 
4
4
  export const TextSkeleton = ({
5
5
  maxLength,
@@ -1,5 +1,5 @@
1
1
  import { HTMLAttributes, forwardRef } from 'react';
2
- import classNames from 'classnames';
2
+ import classNames from 'clsx';
3
3
 
4
4
  const CIRCLE_SIZE = 44;
5
5
 
@@ -1,6 +1,6 @@
1
1
  'use client';
2
2
 
3
- import classNames from 'classnames';
3
+ import classNames from 'clsx';
4
4
  import useMergedRef from '../../hooks/useMergedRef.js';
5
5
  import {
6
6
  ChangeEvent,
@@ -2,7 +2,7 @@
2
2
 
3
3
  import React, { ComponentPropsWithoutRef } from 'react';
4
4
  import * as TooltipPrimitive from '@radix-ui/react-tooltip';
5
- import classNames from 'classnames';
5
+ import classNames from 'clsx';
6
6
 
7
7
  function Content({
8
8
  children,
@@ -1,4 +1,4 @@
1
- import classNames from 'classnames';
1
+ import classNames from 'clsx';
2
2
  import {
3
3
  ComponentPropsWithRef,
4
4
  ComponentType,
package/src/uno.preset.ts CHANGED
@@ -213,7 +213,7 @@ export default function presetAglio({
213
213
  }`,
214
214
  'fade-out-down': `{
215
215
  0% { opacity: 1; transform: translate3d(0, 0, 0); }
216
- 100% { opacity: 0; transform: translate3d(0, -100px, 0); }
216
+ 100% { opacity: 0; transform: translate3d(0, 100px, 0); }
217
217
  }`,
218
218
  'fade-out-left': `{
219
219
  0% { opacity: 1; transform: translate3d(0, 0, 0); }