components-test-pb 0.1.3 → 0.1.5

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 (195) hide show
  1. package/dist/components/Button/src/Button.d.ts +2 -0
  2. package/dist/components/Button/src/Button.js +8 -0
  3. package/dist/components/Button/src/Button.types.d.ts +17 -0
  4. package/dist/components/Button/src/index.d.ts +5 -0
  5. package/dist/components/Button/src/index.js +4 -0
  6. package/dist/components/Button/src/renderButton.d.ts +3 -0
  7. package/dist/components/Button/src/renderButton.js +6 -0
  8. package/dist/{Components/Button → components/Button/src}/useButton.d.ts +1 -1
  9. package/dist/components/Button/src/useButton.js +15 -0
  10. package/dist/{Components/Button → components/Button/src}/useButtonStyles.styles.d.ts +2 -2
  11. package/dist/components/Button/src/useButtonStyles.styles.js +30 -0
  12. package/dist/components/index.d.ts +2 -0
  13. package/dist/components/index.js +1 -0
  14. package/dist/index.d.ts +4 -12
  15. package/dist/index.js +2 -7
  16. package/dist/utilities/index.d.ts +2 -2
  17. package/dist/utilities/index.js +1 -1
  18. package/dist/utilities/src/ARIA/index.d.ts +2 -0
  19. package/dist/utilities/src/ARIA/index.js +1 -0
  20. package/dist/utilities/src/ARIA/types.d.ts +18 -0
  21. package/dist/utilities/src/ARIA/useARIAButtonProps.d.ts +2 -0
  22. package/dist/utilities/src/ARIA/useARIAButtonProps.js +61 -0
  23. package/dist/utilities/src/compose/assertSlots.d.ts +5 -0
  24. package/dist/utilities/src/compose/assertSlots.js +13 -0
  25. package/dist/utilities/src/compose/index.d.ts +3 -0
  26. package/dist/utilities/src/compose/index.js +2 -0
  27. package/dist/utilities/src/compose/slot.d.ts +11 -0
  28. package/dist/utilities/src/compose/slot.js +25 -0
  29. package/dist/utilities/src/compose/types.d.ts +59 -0
  30. package/dist/utilities/src/index.d.ts +4 -0
  31. package/dist/utilities/src/index.js +2 -0
  32. package/package.json +4 -5
  33. package/src/components/Button/src/Button.tsx +10 -0
  34. package/src/components/Button/src/Button.types.ts +32 -0
  35. package/src/components/Button/src/index.ts +12 -0
  36. package/src/components/Button/src/renderButton.tsx +12 -0
  37. package/src/components/Button/src/useButton.ts +26 -0
  38. package/src/components/Button/src/useButtonStyles.styles.ts +77 -0
  39. package/src/components/index.ts +16 -0
  40. package/src/index.ts +36 -72
  41. package/src/utilities/index.ts +30 -2
  42. package/src/utilities/src/ARIA/index.ts +11 -0
  43. package/src/utilities/src/ARIA/types.ts +58 -0
  44. package/src/utilities/src/ARIA/useARIAButtonProps.ts +74 -0
  45. package/src/utilities/src/compose/assertSlots.ts +20 -0
  46. package/src/utilities/src/compose/index.ts +25 -0
  47. package/src/utilities/src/compose/slot.ts +49 -0
  48. package/src/utilities/src/compose/types.ts +120 -0
  49. package/src/utilities/src/index.ts +35 -0
  50. package/tsconfig.json +2 -2
  51. package/dist/Components/Button/Button.d.ts +0 -3
  52. package/dist/Components/Button/Button.js +0 -8
  53. package/dist/Components/Button/Button.types.d.ts +0 -15
  54. package/dist/Components/Button/index.d.ts +0 -5
  55. package/dist/Components/Button/index.js +0 -4
  56. package/dist/Components/Button/renderButton.d.ts +0 -3
  57. package/dist/Components/Button/renderButton.js +0 -6
  58. package/dist/Components/Button/useButton.js +0 -19
  59. package/dist/Components/Button/useButtonStyles.styles.js +0 -145
  60. package/dist/Components/Table/Table.d.ts +0 -3
  61. package/dist/Components/Table/Table.js +0 -8
  62. package/dist/Components/Table/Table.types.d.ts +0 -9
  63. package/dist/Components/Table/TableBody.d.ts +0 -3
  64. package/dist/Components/Table/TableBody.js +0 -8
  65. package/dist/Components/Table/TableBody.types.d.ts +0 -6
  66. package/dist/Components/Table/TableBody.types.js +0 -1
  67. package/dist/Components/Table/TableCell.d.ts +0 -3
  68. package/dist/Components/Table/TableCell.js +0 -8
  69. package/dist/Components/Table/TableCell.types.d.ts +0 -6
  70. package/dist/Components/Table/TableCell.types.js +0 -1
  71. package/dist/Components/Table/TableHeader.d.ts +0 -3
  72. package/dist/Components/Table/TableHeader.js +0 -8
  73. package/dist/Components/Table/TableHeader.types.d.ts +0 -6
  74. package/dist/Components/Table/TableHeader.types.js +0 -1
  75. package/dist/Components/Table/TableHeaderCell.d.ts +0 -3
  76. package/dist/Components/Table/TableHeaderCell.js +0 -8
  77. package/dist/Components/Table/TableHeaderCell.types.d.ts +0 -10
  78. package/dist/Components/Table/TableHeaderCell.types.js +0 -1
  79. package/dist/Components/Table/TableRow.d.ts +0 -3
  80. package/dist/Components/Table/TableRow.js +0 -8
  81. package/dist/Components/Table/TableRow.types.d.ts +0 -8
  82. package/dist/Components/Table/TableRow.types.js +0 -1
  83. package/dist/Components/Table/index.d.ts +0 -30
  84. package/dist/Components/Table/index.js +0 -24
  85. package/dist/Components/Table/renderTable.d.ts +0 -3
  86. package/dist/Components/Table/renderTable.js +0 -6
  87. package/dist/Components/Table/renderTableBody.d.ts +0 -3
  88. package/dist/Components/Table/renderTableBody.js +0 -6
  89. package/dist/Components/Table/renderTableCell.d.ts +0 -3
  90. package/dist/Components/Table/renderTableCell.js +0 -6
  91. package/dist/Components/Table/renderTableHeader.d.ts +0 -3
  92. package/dist/Components/Table/renderTableHeader.js +0 -6
  93. package/dist/Components/Table/renderTableHeaderCell.d.ts +0 -3
  94. package/dist/Components/Table/renderTableHeaderCell.js +0 -6
  95. package/dist/Components/Table/renderTableRow.d.ts +0 -3
  96. package/dist/Components/Table/renderTableRow.js +0 -6
  97. package/dist/Components/Table/useTable.d.ts +0 -2
  98. package/dist/Components/Table/useTable.js +0 -9
  99. package/dist/Components/Table/useTableBody.d.ts +0 -2
  100. package/dist/Components/Table/useTableBody.js +0 -6
  101. package/dist/Components/Table/useTableBodyStyles.styles.d.ts +0 -4
  102. package/dist/Components/Table/useTableBodyStyles.styles.js +0 -12
  103. package/dist/Components/Table/useTableCell.d.ts +0 -2
  104. package/dist/Components/Table/useTableCell.js +0 -6
  105. package/dist/Components/Table/useTableCellStyles.styles.d.ts +0 -4
  106. package/dist/Components/Table/useTableCellStyles.styles.js +0 -17
  107. package/dist/Components/Table/useTableHeader.d.ts +0 -2
  108. package/dist/Components/Table/useTableHeader.js +0 -6
  109. package/dist/Components/Table/useTableHeaderCell.d.ts +0 -2
  110. package/dist/Components/Table/useTableHeaderCell.js +0 -12
  111. package/dist/Components/Table/useTableHeaderCellStyles.styles.d.ts +0 -4
  112. package/dist/Components/Table/useTableHeaderCellStyles.styles.js +0 -27
  113. package/dist/Components/Table/useTableHeaderStyles.styles.d.ts +0 -4
  114. package/dist/Components/Table/useTableHeaderStyles.styles.js +0 -12
  115. package/dist/Components/Table/useTableRow.d.ts +0 -2
  116. package/dist/Components/Table/useTableRow.js +0 -8
  117. package/dist/Components/Table/useTableRowStyles.styles.d.ts +0 -4
  118. package/dist/Components/Table/useTableRowStyles.styles.js +0 -31
  119. package/dist/Components/Table/useTableStyles.styles.d.ts +0 -4
  120. package/dist/Components/Table/useTableStyles.styles.js +0 -22
  121. package/dist/Components/Text/Text.d.ts +0 -3
  122. package/dist/Components/Text/Text.js +0 -8
  123. package/dist/Components/Text/Text.types.d.ts +0 -11
  124. package/dist/Components/Text/Text.types.js +0 -1
  125. package/dist/Components/Text/index.d.ts +0 -5
  126. package/dist/Components/Text/index.js +0 -4
  127. package/dist/Components/Text/renderText.d.ts +0 -3
  128. package/dist/Components/Text/renderText.js +0 -6
  129. package/dist/Components/Text/useText.d.ts +0 -2
  130. package/dist/Components/Text/useText.js +0 -10
  131. package/dist/Components/Text/useTextStyles.styles.d.ts +0 -4
  132. package/dist/Components/Text/useTextStyles.styles.js +0 -74
  133. package/dist/Theme/tokens.d.ts +0 -81
  134. package/dist/Theme/tokens.js +0 -80
  135. package/dist/Types/compose/index.d.ts +0 -1
  136. package/dist/Types/compose/index.js +0 -1
  137. package/dist/Types/compose/types.d.ts +0 -34
  138. package/dist/Types/utils/index.d.ts +0 -1
  139. package/dist/Types/utils/index.js +0 -1
  140. package/dist/Types/utils/types.d.ts +0 -168
  141. package/dist/Types/utils/types.js +0 -2
  142. package/dist/utilities/useARIAButtonProps.d.ts +0 -16
  143. package/dist/utilities/useARIAButtonProps.js +0 -75
  144. package/src/Components/Button/Button.tsx +0 -13
  145. package/src/Components/Button/Button.types.ts +0 -26
  146. package/src/Components/Button/index.ts +0 -11
  147. package/src/Components/Button/renderButton.tsx +0 -9
  148. package/src/Components/Button/useButton.ts +0 -27
  149. package/src/Components/Button/useButtonStyles.styles.ts +0 -198
  150. package/src/Components/Table/Table.tsx +0 -13
  151. package/src/Components/Table/Table.types.ts +0 -13
  152. package/src/Components/Table/TableBody.tsx +0 -13
  153. package/src/Components/Table/TableBody.types.ts +0 -9
  154. package/src/Components/Table/TableCell.tsx +0 -13
  155. package/src/Components/Table/TableCell.types.ts +0 -9
  156. package/src/Components/Table/TableHeader.tsx +0 -13
  157. package/src/Components/Table/TableHeader.types.ts +0 -9
  158. package/src/Components/Table/TableHeaderCell.tsx +0 -13
  159. package/src/Components/Table/TableHeaderCell.types.ts +0 -13
  160. package/src/Components/Table/TableRow.tsx +0 -13
  161. package/src/Components/Table/TableRow.types.ts +0 -12
  162. package/src/Components/Table/index.ts +0 -35
  163. package/src/Components/Table/renderTable.tsx +0 -9
  164. package/src/Components/Table/renderTableBody.tsx +0 -9
  165. package/src/Components/Table/renderTableCell.tsx +0 -9
  166. package/src/Components/Table/renderTableHeader.tsx +0 -9
  167. package/src/Components/Table/renderTableHeaderCell.tsx +0 -9
  168. package/src/Components/Table/renderTableRow.tsx +0 -9
  169. package/src/Components/Table/useTable.ts +0 -14
  170. package/src/Components/Table/useTableBody.ts +0 -9
  171. package/src/Components/Table/useTableBodyStyles.styles.ts +0 -23
  172. package/src/Components/Table/useTableCell.ts +0 -9
  173. package/src/Components/Table/useTableCellStyles.styles.ts +0 -28
  174. package/src/Components/Table/useTableHeader.ts +0 -9
  175. package/src/Components/Table/useTableHeaderCell.ts +0 -19
  176. package/src/Components/Table/useTableHeaderCellStyles.styles.ts +0 -40
  177. package/src/Components/Table/useTableHeaderStyles.styles.ts +0 -23
  178. package/src/Components/Table/useTableRow.ts +0 -13
  179. package/src/Components/Table/useTableRowStyles.styles.ts +0 -45
  180. package/src/Components/Table/useTableStyles.styles.ts +0 -35
  181. package/src/Components/Text/Text.tsx +0 -13
  182. package/src/Components/Text/Text.types.ts +0 -21
  183. package/src/Components/Text/index.ts +0 -11
  184. package/src/Components/Text/renderText.tsx +0 -9
  185. package/src/Components/Text/useText.ts +0 -15
  186. package/src/Components/Text/useTextStyles.styles.ts +0 -103
  187. package/src/Theme/tokens.ts +0 -98
  188. package/src/Types/compose/index.ts +0 -12
  189. package/src/Types/compose/types.ts +0 -87
  190. package/src/Types/utils/index.ts +0 -30
  191. package/src/Types/utils/types.ts +0 -223
  192. package/src/utilities/useARIAButtonProps.ts +0 -106
  193. /package/dist/{Components/Button → components/Button/src}/Button.types.js +0 -0
  194. /package/dist/{Types/compose → utilities/src/ARIA}/types.js +0 -0
  195. /package/dist/{Components/Table/Table.types.js → utilities/src/compose/types.js} +0 -0
@@ -1,223 +0,0 @@
1
- // ---- Core framework types (defined here, not imported from framework) ----
2
-
3
- export interface ElementProps {
4
- children?: ElementChild | ElementChild[];
5
- [key: string]: any;
6
- }
7
-
8
- export interface Element {
9
- $$typeof: symbol;
10
- type: string | Function | symbol;
11
- props: ElementProps;
12
- key: string | null;
13
- }
14
-
15
- export type ElementChild = Element | string | number | boolean | null | undefined | (() => any);
16
-
17
- export type FC<P = {}> = (props: P) => Element | null;
18
-
19
- export interface CSSProperties {
20
- [key: string]: string | number;
21
- }
22
-
23
- export interface HTMLAttributes<T = HTMLElement> {
24
- className?: string;
25
- id?: string;
26
- style?: CSSProperties;
27
- title?: string;
28
- lang?: string;
29
- dir?: 'ltr' | 'rtl' | 'auto';
30
- hidden?: boolean;
31
- tabIndex?: number;
32
- class?: never;
33
- [key: `data-${string}`]: string | number | boolean | undefined;
34
- role?: string;
35
- [key: `aria-${string}`]: string | number | boolean | undefined;
36
- onClick?: (event: MouseEvent) => void;
37
- onDoubleClick?: (event: MouseEvent) => void;
38
- onMouseDown?: (event: MouseEvent) => void;
39
- onMouseUp?: (event: MouseEvent) => void;
40
- onMouseEnter?: (event: MouseEvent) => void;
41
- onMouseLeave?: (event: MouseEvent) => void;
42
- onMouseMove?: (event: MouseEvent) => void;
43
- onMouseOver?: (event: MouseEvent) => void;
44
- onMouseOut?: (event: MouseEvent) => void;
45
- onChange?: (event: Event) => void;
46
- onInput?: (event: Event) => void;
47
- onSubmit?: (event: Event) => void;
48
- onFocus?: (event: FocusEvent) => void;
49
- onBlur?: (event: FocusEvent) => void;
50
- onKeyDown?: (event: KeyboardEvent) => void;
51
- onKeyUp?: (event: KeyboardEvent) => void;
52
- onKeyPress?: (event: KeyboardEvent) => void;
53
- onScroll?: (event: Event) => void;
54
- onWheel?: (event: WheelEvent) => void;
55
- onDrag?: (event: DragEvent) => void;
56
- onDragEnd?: (event: DragEvent) => void;
57
- onDragEnter?: (event: DragEvent) => void;
58
- onDragLeave?: (event: DragEvent) => void;
59
- onDragOver?: (event: DragEvent) => void;
60
- onDragStart?: (event: DragEvent) => void;
61
- onDrop?: (event: DragEvent) => void;
62
- onTouchStart?: (event: TouchEvent) => void;
63
- onTouchMove?: (event: TouchEvent) => void;
64
- onTouchEnd?: (event: TouchEvent) => void;
65
- onTouchCancel?: (event: TouchEvent) => void;
66
- children?: ElementChild | ElementChild[];
67
- }
68
-
69
- export type DistributiveOmit<T, K extends keyof any> = T extends unknown ? Omit<T, K> : T;
70
-
71
- export type DistributivePick<T, K> = T extends unknown ? Pick<T, K & keyof T> : never;
72
-
73
- export type UnionToIntersection<U> = (U extends unknown ? (x: U) => U : never) extends (x: infer I) => U ? I : never;
74
-
75
- export type ReplaceNullWithUndefined<T> = T extends null ? Exclude<T, null> | undefined : T;
76
-
77
- export type PropsWithoutChildren<P> = 'children' extends keyof P ? DistributiveOmit<P, 'children'> : P;
78
-
79
- export interface FunctionComponent<P> {
80
- (props: P): Element | null;
81
- displayName?: string;
82
- }
83
-
84
- export type ComponentType<P = {}> = FunctionComponent<P>;
85
-
86
- export type ChildNode = ElementChild | ElementChild[];
87
-
88
- export interface AnchorNativeProps extends HTMLAttributes<HTMLAnchorElement> {
89
- href?: string;
90
- target?: '_blank' | '_self' | '_parent' | '_top';
91
- rel?: string;
92
- download?: string | boolean;
93
- hrefLang?: string;
94
- type?: string;
95
- }
96
-
97
- export interface ButtonNativeProps extends HTMLAttributes<HTMLButtonElement> {
98
- disabled?: boolean;
99
- type?: 'button' | 'submit' | 'reset';
100
- value?: string;
101
- autoFocus?: boolean;
102
- form?: string;
103
- formAction?: string;
104
- formEncType?: string;
105
- formMethod?: string;
106
- formNoValidate?: boolean;
107
- formTarget?: string;
108
- }
109
-
110
- export interface FormNativeProps extends HTMLAttributes<HTMLFormElement> {
111
- action?: string;
112
- method?: 'get' | 'post';
113
- encType?: string;
114
- target?: string;
115
- noValidate?: boolean;
116
- autoComplete?: 'on' | 'off';
117
- }
118
-
119
- export interface InputNativeProps extends HTMLAttributes<HTMLInputElement> {
120
- accept?: string;
121
- alt?: string;
122
- autoComplete?: string;
123
- autoFocus?: boolean;
124
- capture?: boolean | string;
125
- checked?: boolean;
126
- disabled?: boolean;
127
- form?: string;
128
- max?: number | string;
129
- maxLength?: number;
130
- min?: number | string;
131
- minLength?: number;
132
- multiple?: boolean;
133
- name?: string;
134
- pattern?: string;
135
- placeholder?: string;
136
- readOnly?: boolean;
137
- required?: boolean;
138
- size?: number;
139
- src?: string;
140
- step?: number | string;
141
- type?: 'text' | 'password' | 'email' | 'number' | 'tel' | 'url' | 'search' | 'date' | 'time' | 'datetime-local' | 'month' | 'week' | 'checkbox' | 'radio' | 'file' | 'submit' | 'reset' | 'button' | 'hidden' | 'image' | 'color' | 'range';
142
- value?: string | number;
143
- }
144
-
145
- export interface TextareaNativeProps extends HTMLAttributes<HTMLTextAreaElement> {
146
- autoComplete?: string;
147
- autoFocus?: boolean;
148
- cols?: number;
149
- disabled?: boolean;
150
- form?: string;
151
- maxLength?: number;
152
- minLength?: number;
153
- name?: string;
154
- placeholder?: string;
155
- readOnly?: boolean;
156
- required?: boolean;
157
- rows?: number;
158
- value?: string;
159
- wrap?: 'hard' | 'soft' | 'off';
160
- }
161
-
162
- export interface SelectNativeProps extends HTMLAttributes<HTMLSelectElement> {
163
- autoComplete?: string;
164
- autoFocus?: boolean;
165
- disabled?: boolean;
166
- form?: string;
167
- multiple?: boolean;
168
- name?: string;
169
- required?: boolean;
170
- size?: number;
171
- value?: string | string[];
172
- }
173
-
174
- export interface ImgNativeProps extends HTMLAttributes<HTMLImageElement> {
175
- alt?: string;
176
- crossOrigin?: 'anonymous' | 'use-credentials';
177
- decoding?: 'async' | 'auto' | 'sync';
178
- height?: number | string;
179
- loading?: 'eager' | 'lazy';
180
- sizes?: string;
181
- src?: string;
182
- srcSet?: string;
183
- width?: number | string;
184
- }
185
-
186
- export interface LabelNativeProps extends HTMLAttributes<HTMLLabelElement> {
187
- htmlFor?: string;
188
- form?: string;
189
- }
190
-
191
- export type IntrinsicElementKeys =
192
- | 'a' | 'abbr' | 'address' | 'area' | 'article' | 'aside' | 'audio'
193
- | 'b' | 'base' | 'blockquote' | 'body' | 'br' | 'button'
194
- | 'canvas' | 'caption' | 'cite' | 'code' | 'col' | 'colgroup'
195
- | 'datalist' | 'del' | 'details' | 'dialog' | 'div'
196
- | 'em'
197
- | 'fieldset' | 'figcaption' | 'figure' | 'footer' | 'form'
198
- | 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'head' | 'header' | 'hr' | 'html'
199
- | 'i' | 'iframe' | 'img' | 'input' | 'ins'
200
- | 'kbd'
201
- | 'label' | 'legend' | 'li' | 'link'
202
- | 'main' | 'mark' | 'menu' | 'meta' | 'meter'
203
- | 'nav'
204
- | 'ol' | 'optgroup' | 'option' | 'output'
205
- | 'p' | 'picture' | 'pre' | 'progress'
206
- | 'q'
207
- | 's' | 'script' | 'section' | 'select' | 'small' | 'source' | 'span' | 'strong' | 'style' | 'sub' | 'summary' | 'sup' | 'svg'
208
- | 'table' | 'tbody' | 'td' | 'template' | 'textarea' | 'tfoot' | 'th' | 'thead' | 'title' | 'tr' | 'track'
209
- | 'u' | 'ul'
210
- | 'video'
211
- | 'wbr'
212
- | 'circle' | 'ellipse' | 'line' | 'path' | 'polygon' | 'polyline' | 'rect' | 'g' | 'defs';
213
-
214
- export type IntrinsicElementProps<Tag extends IntrinsicElementKeys> =
215
- Tag extends 'a' ? AnchorNativeProps :
216
- Tag extends 'button' ? ButtonNativeProps :
217
- Tag extends 'form' ? FormNativeProps :
218
- Tag extends 'input' ? InputNativeProps :
219
- Tag extends 'textarea' ? TextareaNativeProps :
220
- Tag extends 'select' ? SelectNativeProps :
221
- Tag extends 'img' ? ImgNativeProps :
222
- Tag extends 'label' ? LabelNativeProps :
223
- HTMLAttributes<HTMLElement>;
@@ -1,106 +0,0 @@
1
- import type { HTMLAttributes, IntrinsicElementKeys } from '../Types/utils/types.js';
2
-
3
- export type ARIAButtonType = 'button' | 'a' | 'div';
4
-
5
- export type ARIAButtonProps<Tag extends ARIAButtonType = 'button'> = HTMLAttributes<HTMLElement> & {
6
- disabled?: boolean;
7
- disabledFocusable?: boolean;
8
- } & (Tag extends 'a' ? { href?: string } : {});
9
-
10
- export type ARIAButtonResultProps<Tag extends ARIAButtonType = 'button'> = HTMLAttributes<HTMLElement> & {
11
- disabled?: Tag extends 'button' ? '' | undefined : never;
12
- 'aria-disabled'?: 'true';
13
- role?: string;
14
- tabIndex?: number;
15
- href?: string;
16
- };
17
-
18
- const noop = () => { };
19
-
20
- export const useARIAButtonProps = <Tag extends ARIAButtonType>(
21
- tag: Tag,
22
- props: ARIAButtonProps<Tag> = {} as ARIAButtonProps<Tag>,
23
- ): ARIAButtonResultProps<Tag> => {
24
- const { disabled, disabledFocusable, onClick, onKeyDown, onKeyUp, ...rest } = props as ARIAButtonProps & { href?: string };
25
-
26
- const isDisabled = disabled || disabledFocusable;
27
-
28
- const handleClick = (e: MouseEvent) => {
29
- if (isDisabled) {
30
- e.preventDefault();
31
- e.stopPropagation();
32
- return;
33
- }
34
- onClick?.(e);
35
- };
36
-
37
- if (tag === 'button') {
38
- const result = {
39
- ...rest,
40
- onClick: handleClick,
41
- onKeyDown: isDisabled ? (e: KeyboardEvent) => {
42
- e.preventDefault();
43
- e.stopPropagation();
44
- } : onKeyDown,
45
- onKeyUp: isDisabled ? (e: KeyboardEvent) => {
46
- e.preventDefault();
47
- e.stopPropagation();
48
- } : onKeyUp,
49
- } as ARIAButtonResultProps<Tag>;
50
-
51
- if (disabled && !disabledFocusable) {
52
- (result as any).disabled = '';
53
- } else if (disabledFocusable) {
54
- result['aria-disabled'] = 'true';
55
- }
56
-
57
- return result;
58
- }
59
-
60
- const handleKeyDown = (e: KeyboardEvent) => {
61
- if (isDisabled) {
62
- e.preventDefault();
63
- e.stopPropagation();
64
- return;
65
- }
66
- if (e.key === 'Enter') {
67
- e.preventDefault();
68
- (e.target as HTMLElement)?.click();
69
- }
70
- onKeyDown?.(e);
71
- };
72
-
73
- const handleKeyUp = (e: KeyboardEvent) => {
74
- if (isDisabled) {
75
- e.preventDefault();
76
- e.stopPropagation();
77
- return;
78
- }
79
- if (e.key === ' ') {
80
- e.preventDefault();
81
- (e.target as HTMLElement)?.click();
82
- }
83
- onKeyUp?.(e);
84
- };
85
-
86
- const result: ARIAButtonResultProps<Tag> = {
87
- ...rest,
88
- role: 'button',
89
- onClick: handleClick,
90
- onKeyDown: handleKeyDown,
91
- onKeyUp: handleKeyUp,
92
- } as ARIAButtonResultProps<Tag>;
93
-
94
- if (isDisabled) {
95
- result['aria-disabled'] = 'true';
96
- if (tag === 'a') {
97
- delete (result as any).href;
98
- }
99
- }
100
-
101
- if (!disabled || disabledFocusable) {
102
- result.tabIndex = rest.tabIndex ?? 0;
103
- }
104
-
105
- return result;
106
- };