asheeui 0.6.14 → 0.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 (184) hide show
  1. package/README.md +1 -14
  2. package/dist/AsheeUIProvider.js +22 -24
  3. package/dist/components/accordion/Accordion.js +79 -173
  4. package/dist/components/accordion/accordion-config.js +12 -13
  5. package/dist/components/accordion/accordion-styles.js +21 -24
  6. package/dist/components/autocomplete/Autocomplete.js +78 -136
  7. package/dist/components/autocomplete/autocomplete-config.js +7 -12
  8. package/dist/components/button/Button.d.ts +29 -1
  9. package/dist/components/button/Button.d.ts.map +1 -1
  10. package/dist/components/button/Button.js +47 -108
  11. package/dist/components/button/button-config.js +16 -17
  12. package/dist/components/button/button-styles.js +10 -11
  13. package/dist/components/card/Card.d.ts +36 -16
  14. package/dist/components/card/Card.d.ts.map +1 -1
  15. package/dist/components/card/Card.js +115 -205
  16. package/dist/components/card/card-config.js +24 -21
  17. package/dist/components/card/card-styles.js +19 -22
  18. package/dist/components/carousel/Carousel.js +123 -248
  19. package/dist/components/carousel/carousel-config.js +24 -25
  20. package/dist/components/carousel/carousel-styles.js +14 -16
  21. package/dist/components/chip/Chip.js +84 -191
  22. package/dist/components/chip/chip-config.js +13 -14
  23. package/dist/components/chip/chip-styles.js +22 -26
  24. package/dist/components/date-picker/Calendar.d.ts +3 -3
  25. package/dist/components/date-picker/Calendar.d.ts.map +1 -1
  26. package/dist/components/date-picker/Calendar.js +141 -222
  27. package/dist/components/date-picker/DatePicker.d.ts +5 -5
  28. package/dist/components/date-picker/DatePicker.d.ts.map +1 -1
  29. package/dist/components/date-picker/DatePicker.js +122 -220
  30. package/dist/components/date-picker/TimeSpinner.js +58 -82
  31. package/dist/components/date-picker/date-picker-config.d.ts +4 -4
  32. package/dist/components/date-picker/date-picker-config.d.ts.map +1 -1
  33. package/dist/components/date-picker/date-picker-config.js +10 -11
  34. package/dist/components/date-picker/date-picker-styles.js +44 -45
  35. package/dist/components/date-picker/date-picker.helpers.d.ts +4 -4
  36. package/dist/components/date-picker/date-picker.helpers.d.ts.map +1 -1
  37. package/dist/components/date-picker/date-picker.helpers.js +74 -102
  38. package/dist/components/drawer/Drawer.d.ts +26 -8
  39. package/dist/components/drawer/Drawer.d.ts.map +1 -1
  40. package/dist/components/drawer/Drawer.js +54 -131
  41. package/dist/components/drawer/drawer-config.js +14 -15
  42. package/dist/components/drawer/drawer-styles.js +38 -42
  43. package/dist/components/field/FieldShell.js +49 -56
  44. package/dist/components/field/field-config.js +17 -18
  45. package/dist/components/field/field-styles.js +8 -8
  46. package/dist/components/image/Image.d.ts +7 -7
  47. package/dist/components/image/Image.d.ts.map +1 -1
  48. package/dist/components/image/Image.js +65 -132
  49. package/dist/components/image/image-config.js +17 -18
  50. package/dist/components/image/image-styles.js +14 -15
  51. package/dist/components/input/Input.js +65 -150
  52. package/dist/components/input/PasswordInput.js +30 -49
  53. package/dist/components/input/input-config.js +7 -7
  54. package/dist/components/input/input-styles.js +9 -10
  55. package/dist/components/keyboard/KeyboardContext.js +10 -11
  56. package/dist/components/keyboard/KeyboardProvider.js +100 -181
  57. package/dist/components/keyboard/OnScreenKeyboard.d.ts.map +1 -1
  58. package/dist/components/keyboard/OnScreenKeyboard.js +159 -166
  59. package/dist/components/keyboard/keyboard-config.js +59 -57
  60. package/dist/components/keyboard/keyboard-styles.js +10 -11
  61. package/dist/components/keyboard/use-keyboard-field.js +29 -21
  62. package/dist/components/link/Link.js +47 -137
  63. package/dist/components/link/link-config.js +14 -15
  64. package/dist/components/link/link-styles.js +25 -29
  65. package/dist/components/marquee/Marquee.js +55 -144
  66. package/dist/components/marquee/marquee-config.js +18 -19
  67. package/dist/components/marquee/marquee-styles.js +13 -15
  68. package/dist/components/modal/Modal.d.ts +26 -10
  69. package/dist/components/modal/Modal.d.ts.map +1 -1
  70. package/dist/components/modal/Modal.js +56 -136
  71. package/dist/components/modal/modal-config.js +15 -16
  72. package/dist/components/modal/modal-styles.js +13 -14
  73. package/dist/components/multi-select/MultiSelect.d.ts +18 -2
  74. package/dist/components/multi-select/MultiSelect.d.ts.map +1 -1
  75. package/dist/components/multi-select/MultiSelect.js +149 -283
  76. package/dist/components/multi-select/multi-select-config.d.ts +23 -18
  77. package/dist/components/multi-select/multi-select-config.d.ts.map +1 -1
  78. package/dist/components/multi-select/multi-select-config.js +18 -21
  79. package/dist/components/multi-select/multi-select-styles.js +17 -20
  80. package/dist/components/radio/Radio.js +43 -80
  81. package/dist/components/radio/RadioGroup.js +57 -155
  82. package/dist/components/radio/radio-config.js +15 -16
  83. package/dist/components/radio/radio-context.js +6 -6
  84. package/dist/components/radio/radio-styles.js +55 -60
  85. package/dist/components/resizable-screen/ResizableScreen.js +87 -177
  86. package/dist/components/resizable-screen/resizable-screen-config.js +16 -17
  87. package/dist/components/select/Select.d.ts +3 -2
  88. package/dist/components/select/Select.d.ts.map +1 -1
  89. package/dist/components/select/Select.js +97 -195
  90. package/dist/components/select/select-config.js +8 -9
  91. package/dist/components/select/select-styles.js +5 -5
  92. package/dist/components/select-menu/SelectMenu.d.ts.map +1 -1
  93. package/dist/components/select-menu/SelectMenu.js +102 -196
  94. package/dist/components/select-menu/select-menu-config.js +12 -12
  95. package/dist/components/select-menu/use-select-floating.d.ts +11 -1
  96. package/dist/components/select-menu/use-select-floating.d.ts.map +1 -1
  97. package/dist/components/select-menu/use-select-floating.js +41 -48
  98. package/dist/components/sidebar/Sidebar.d.ts +43 -22
  99. package/dist/components/sidebar/Sidebar.d.ts.map +1 -1
  100. package/dist/components/sidebar/Sidebar.js +146 -331
  101. package/dist/components/sidebar/sidebar-config.d.ts +98 -31
  102. package/dist/components/sidebar/sidebar-config.d.ts.map +1 -1
  103. package/dist/components/sidebar/sidebar-config.js +47 -33
  104. package/dist/components/sidebar/sidebar-styles.js +27 -32
  105. package/dist/components/spinner/spinner-config.js +12 -13
  106. package/dist/components/spinner/spinner-styles.js +13 -14
  107. package/dist/components/spinner/spinner.js +39 -82
  108. package/dist/components/switch/Switch.js +62 -154
  109. package/dist/components/switch/switch-config.js +11 -12
  110. package/dist/components/switch/switch-styles.js +14 -16
  111. package/dist/components/table/Table.js +64 -186
  112. package/dist/components/table/table-config.js +17 -18
  113. package/dist/components/table/table-styles.js +48 -52
  114. package/dist/components/tabs/Tabs.d.ts +16 -8
  115. package/dist/components/tabs/Tabs.d.ts.map +1 -1
  116. package/dist/components/tabs/Tabs.js +93 -208
  117. package/dist/components/tabs/tabs-config.d.ts +42 -20
  118. package/dist/components/tabs/tabs-config.d.ts.map +1 -1
  119. package/dist/components/tabs/tabs-config.js +26 -18
  120. package/dist/components/tabs/tabs-styles.js +15 -17
  121. package/dist/components/textarea/Textarea.js +52 -138
  122. package/dist/components/textarea/textarea-config.js +10 -11
  123. package/dist/components/textarea/textarea-styles.js +9 -10
  124. package/dist/components/toast/ToastContext.js +22 -26
  125. package/dist/components/toast/ToastItem.js +82 -144
  126. package/dist/components/toast/ToastProvider.d.ts.map +1 -1
  127. package/dist/components/toast/ToastProvider.js +128 -190
  128. package/dist/components/toast/toast-config.js +23 -24
  129. package/dist/components/toast/toast-styles.js +50 -55
  130. package/dist/components/toast/use-pausable-timeout.js +17 -13
  131. package/dist/components/tooltip/Tooltip.d.ts +5 -0
  132. package/dist/components/tooltip/Tooltip.d.ts.map +1 -1
  133. package/dist/components/tooltip/Tooltip.js +68 -158
  134. package/dist/components/tooltip/tooltip-config.d.ts +25 -0
  135. package/dist/components/tooltip/tooltip-config.d.ts.map +1 -1
  136. package/dist/components/tooltip/tooltip-config.js +26 -22
  137. package/dist/components/tooltip/tooltip-styles.js +15 -17
  138. package/dist/config/default-config.js +11 -34
  139. package/dist/config/resolve-color.js +23 -23
  140. package/dist/config/resolve-config.d.ts.map +1 -1
  141. package/dist/config/resolve-config.js +14 -12
  142. package/dist/icons/ArrowLeftIcon.js +16 -19
  143. package/dist/icons/CalendarIcon.js +43 -24
  144. package/dist/icons/CheckIcon.js +16 -19
  145. package/dist/icons/ChevronDownIcon.js +15 -21
  146. package/dist/icons/ChevronLeftIcon.js +16 -19
  147. package/dist/icons/ChevronRightIcon.js +16 -19
  148. package/dist/icons/ChevronUpIcon.js +16 -19
  149. package/dist/icons/ClearIcon.js +26 -22
  150. package/dist/icons/ClockIcon.js +20 -22
  151. package/dist/icons/CloseIcon.js +26 -22
  152. package/dist/icons/ErrorIcon.js +16 -19
  153. package/dist/icons/ExternalLinkIcon.js +25 -23
  154. package/dist/icons/EyeIcon.js +20 -22
  155. package/dist/icons/EyeOffIcon.js +21 -22
  156. package/dist/icons/InfoIcon.js +16 -19
  157. package/dist/icons/SearchIcon.js +25 -22
  158. package/dist/icons/WarningIcon.js +16 -19
  159. package/dist/index.js +65 -163
  160. package/dist/libs/context.js +10 -13
  161. package/dist/libs/index.js +1 -0
  162. package/dist/libs/registry.js +10 -12
  163. package/dist/libs/use-floating-z-index.d.ts +32 -0
  164. package/dist/libs/use-floating-z-index.d.ts.map +1 -0
  165. package/dist/libs/use-floating-z-index.js +16 -0
  166. package/dist/libs/use-isomorphic-layout-effect.js +5 -5
  167. package/dist/scripts/AsheeThemeScript.js +35 -44
  168. package/dist/shared/radius.d.ts.map +1 -1
  169. package/dist/shared/radius.js +12 -13
  170. package/dist/shared/variant.js +46 -134
  171. package/dist/theme/color.js +28 -28
  172. package/dist/theme/controller.d.ts.map +1 -1
  173. package/dist/theme/controller.js +65 -178
  174. package/dist/theme/useTheme.js +13 -44
  175. package/dist/utils/cn.js +7 -7
  176. package/dist/utils/index.d.ts +1 -0
  177. package/dist/utils/index.d.ts.map +1 -1
  178. package/dist/utils/index.js +1 -0
  179. package/dist/utils/merge-object.js +13 -14
  180. package/dist/utils/resolve-token.js +11 -14
  181. package/dist/utils/stacking.d.ts +76 -0
  182. package/dist/utils/stacking.d.ts.map +1 -0
  183. package/dist/utils/stacking.js +34 -0
  184. package/package.json +12 -11
@@ -1,10 +1,26 @@
1
- import { ReactNode } from 'react';
1
+ import { ElementType, ReactNode } from 'react';
2
2
  import { ButtonConfig } from './button-config';
3
3
  /**
4
4
  * Visual and behavioural options shared by button-like elements.
5
5
  * This type combines the ButtonConfig with native button HTML attributes.
6
6
  */
7
7
  type BaseButtonProps = ButtonConfig & Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, "color" | "disabled">;
8
+ /**
9
+ * Props for the button's link behaviour.
10
+ * Holds the instance-only link component and its props.
11
+ */
12
+ export interface ButtonLinkProps {
13
+ /**
14
+ * Custom link component (e.g. `next/link`, TanStack Router `Link`).
15
+ * When provided, this component is used instead of the native `<a>` tag.
16
+ */
17
+ component?: ElementType;
18
+ /**
19
+ * Additional props to pass to the link component (e.g. `{ prefetch: true }`).
20
+ * These take precedence over the button's own props.
21
+ */
22
+ props?: Record<string, unknown>;
23
+ }
8
24
  /**
9
25
  * Configuration options for the Button component.
10
26
  *
@@ -49,6 +65,16 @@ export interface ButtonProps extends BaseButtonProps {
49
65
  * Typically an icon, badge, or adornment.
50
66
  */
51
67
  endContent?: ReactNode;
68
+ /**
69
+ * Renders the button as a link to this URL.
70
+ * The root element becomes an `<a>`, or `link.component` when provided.
71
+ */
72
+ href?: string;
73
+ /**
74
+ * Link configuration for the button.
75
+ * Provides the custom link component and props forwarded to it.
76
+ */
77
+ link?: ButtonLinkProps;
52
78
  }
53
79
  /**
54
80
  * A clickable element that triggers an action or event.
@@ -76,6 +102,8 @@ export interface ButtonProps extends BaseButtonProps {
76
102
  * @param props.icon - Icon-only compact layout. Defaults to false.
77
103
  * @param props.startContent - Content at the start of the button.
78
104
  * @param props.endContent - Content at the end of the button.
105
+ * @param props.href - Renders the button as a link to this URL.
106
+ * @param props.link - Link configuration (custom component and props).
79
107
  * @param props.children - Button label content.
80
108
  * @param props.className - Extra CSS classes for the button.
81
109
  *
@@ -1 +1 @@
1
- {"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../../src/components/button/Button.tsx"],"names":[],"mappings":"AAWA,OAAO,EAA+B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAiBpE,OAAO,EAAE,KAAK,YAAY,EAA0B,MAAM,iBAAiB,CAAC;AAK5E;;;GAGG;AACH,KAAK,eAAe,GAAG,YAAY,GACjC,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC,CAAC;AAE5E;;;;GAIG;AACH,MAAM,WAAW,WAAY,SAAQ,eAAe;IAClD;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;IAErC;;;;;OAKG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf;;;OAGG;IACH,YAAY,CAAC,EAAE,SAAS,CAAC;IAEzB;;;OAGG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0EG;AACH,eAAO,MAAM,MAAM,2GAoHlB,CAAC"}
1
+ {"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../../src/components/button/Button.tsx"],"names":[],"mappings":"AAWA,OAAO,EACL,KAAK,WAAW,EAGhB,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAiBf,OAAO,EAAE,KAAK,YAAY,EAA0B,MAAM,iBAAiB,CAAC;AAK5E;;;GAGG;AACH,KAAK,eAAe,GAAG,YAAY,GACjC,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC,CAAC;AAE5E;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,SAAS,CAAC,EAAE,WAAW,CAAC;IAExB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAY,SAAQ,eAAe;IAClD;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;IAErC;;;;;OAKG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf;;;OAGG;IACH,YAAY,CAAC,EAAE,SAAS,CAAC;IAEzB;;;OAGG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IAEvB;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,IAAI,CAAC,EAAE,eAAe,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4EG;AACH,eAAO,MAAM,MAAM,2GAuIlB,CAAC"}
@@ -1,109 +1,48 @@
1
1
  "use client";
2
- import { jsxs as j, jsx as u } from "react/jsx-runtime";
3
- import { forwardRef as F } from "react";
4
- import { useAsheeConfig as V } from "../../libs/context.js";
5
- import { resolveCascade as r, resolveRadiusKey as k, resolveClassKey as w } from "../../utils/resolve-token.js";
6
- import { Spinner as E } from "../spinner/spinner.js";
7
- import { FALLBACK_BUTTON_CONFIG as s } from "./button-config.js";
8
- import { BUTTON_ICON_SIZE_CLASS as Z, BUTTON_SIZE_CLASS as G } from "./button-styles.js";
9
- import { cn as q } from "../../utils/cn.js";
10
- import { UnderlineRadius as c, RADIUS_CLASS as H } from "../../shared/radius.js";
11
- import { resolveVariantClass as J } from "../../shared/variant.js";
12
- const M = F(
13
- (f, v) => {
14
- var d;
15
- const {
16
- variant: p,
17
- color: b,
18
- size: y,
19
- radius: h,
20
- animate: N,
21
- fullWidth: S,
22
- isDisabled: A,
23
- isLoading: a,
24
- icon: _,
25
- className: L,
26
- children: B,
27
- type: C = "button",
28
- onClick: i,
29
- startContent: I,
30
- endContent: K,
31
- ...R
32
- } = f, t = V(), e = (d = t.components) == null ? void 0 : d.button, o = r(
33
- p,
34
- e == null ? void 0 : e.variant,
35
- t.defaultVariant,
36
- s.variant
37
- ), T = r(
38
- b,
39
- e == null ? void 0 : e.color,
40
- t.defaultColor,
41
- s.color
42
- ), n = r(
43
- y,
44
- e == null ? void 0 : e.size,
45
- void 0,
46
- s.size
47
- ), z = k(
48
- h,
49
- e == null ? void 0 : e.radius,
50
- t.defaultRadius,
51
- s.radius
52
- ), O = r(
53
- N,
54
- e == null ? void 0 : e.animate,
55
- s.animate,
56
- s.animate
57
- ), U = r(
58
- S,
59
- e == null ? void 0 : e.fullWidth,
60
- void 0,
61
- s.fullWidth
62
- ), x = _ ? Z[n] : G[n], l = A || a, D = (m) => {
63
- if (l) {
64
- m.preventDefault();
65
- return;
66
- }
67
- i == null || i(m);
68
- }, W = q(
69
- "inline-flex items-center justify-center font-medium transition-colors select-none shrink-0",
70
- "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2",
71
- "disabled:pointer-events-none disabled:opacity-50",
72
- "aria-disabled:pointer-events-none aria-disabled:opacity-50",
73
- U && "w-full",
74
- O && "motion-safe:transition-transform motion-safe:duration-100 motion-safe:active:scale-[0.99]",
75
- J(o, T),
76
- x,
77
- w(
78
- c(o, z),
79
- H,
80
- c(o, s.radius)
81
- ),
82
- L
83
- );
84
- return /* @__PURE__ */ j(
85
- "button",
86
- {
87
- ref: v,
88
- type: C,
89
- disabled: l,
90
- "aria-disabled": l,
91
- "aria-busy": a,
92
- onClick: D,
93
- className: W,
94
- ...R,
95
- children: [
96
- a && /* @__PURE__ */ u(E, { className: n }),
97
- a && /* @__PURE__ */ u("span", { className: "sr-only", children: "Loading" }),
98
- !a && I,
99
- !a && B,
100
- !a && K
101
- ]
102
- }
103
- );
104
- }
105
- );
106
- M.displayName = "Button";
107
- export {
108
- M as Button
109
- };
2
+ "use client";
3
+ import { cn as e } from "../../utils/cn.js";
4
+ import { useAsheeConfig as t } from "../../libs/context.js";
5
+ import { RADIUS_CLASS as n, UnderlineRadius as r } from "../../shared/radius.js";
6
+ import { resolveVariantClass as i } from "../../shared/variant.js";
7
+ import { resolveCascade as a, resolveClassKey as o, resolveRadiusKey as s } from "../../utils/resolve-token.js";
8
+ import { Spinner as c } from "../spinner/spinner.js";
9
+ import { FALLBACK_BUTTON_CONFIG as l } from "./button-config.js";
10
+ import { BUTTON_ICON_SIZE_CLASS as u, BUTTON_SIZE_CLASS as d } from "./button-styles.js";
11
+ import { forwardRef as f } from "react";
12
+ import { jsx as p, jsxs as m } from "react/jsx-runtime";
13
+ //#region src/components/button/Button.tsx
14
+ var h = f((f, h) => {
15
+ let { variant: g, color: _, size: v, radius: y, animate: b, fullWidth: x, isDisabled: S, isLoading: C, icon: w, className: T, children: E, type: D = "button", onClick: O, startContent: k, endContent: A, href: j, link: M, ...N } = f, P = t(), F = P.components?.button, I = a(g, F?.variant, P.defaultVariant, l.variant), L = a(_, F?.color, P.defaultColor, l.color), R = a(v, F?.size, void 0, l.size), z = s(y, F?.radius, P.defaultRadius, l.radius), B = a(b, F?.animate, l.animate, l.animate), V = a(x, F?.fullWidth, void 0, l.fullWidth), H = w ? u[R] : d[R], U = S || C, W = !!(j || M), G = M?.component ?? (W ? "a" : "button"), { onClick: K, ...q } = M?.props ?? {}, J = (e) => {
16
+ if (U) {
17
+ e.preventDefault();
18
+ return;
19
+ }
20
+ O?.(e), K?.(e);
21
+ }, Y = e("inline-flex items-center justify-center font-medium transition-colors select-none shrink-0", "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2", "disabled:pointer-events-none disabled:opacity-50", "aria-disabled:pointer-events-none aria-disabled:opacity-50", V && "w-full", B && "motion-safe:transition-transform motion-safe:duration-100 motion-safe:active:scale-[0.99]", i(I, L), H, o(r(I, z), n, r(I, l.radius)), T);
22
+ return /* @__PURE__ */ m(G, {
23
+ ref: h,
24
+ ...W ? { href: j } : {
25
+ type: D,
26
+ disabled: U
27
+ },
28
+ "aria-disabled": U,
29
+ "aria-busy": C,
30
+ onClick: J,
31
+ className: Y,
32
+ ...N,
33
+ ...q,
34
+ children: [
35
+ C && /* @__PURE__ */ p(c, { className: R }),
36
+ C && /* @__PURE__ */ p("span", {
37
+ className: "sr-only",
38
+ children: "Loading"
39
+ }),
40
+ !C && k,
41
+ !C && E,
42
+ !C && A
43
+ ]
44
+ });
45
+ });
46
+ h.displayName = "Button";
47
+ //#endregion
48
+ export { h as Button };
@@ -1,20 +1,19 @@
1
1
  "use client";
2
- import { registerComponentDefaults as t } from "../../libs/registry.js";
3
- const e = {
4
- size: "md",
5
- animate: !0,
6
- fullWidth: !1
2
+ import { registerComponentDefaults as e } from "../../libs/registry.js";
3
+ //#region src/components/button/button-config.ts
4
+ var t = {
5
+ size: "md",
6
+ animate: !0,
7
+ fullWidth: !1
7
8
  };
8
- t("button", e);
9
- const i = {
10
- size: "md",
11
- variant: "bordered",
12
- color: "primary",
13
- radius: "md",
14
- animate: !0,
15
- fullWidth: !1
16
- };
17
- export {
18
- i as FALLBACK_BUTTON_CONFIG,
19
- e as defaultButtonConfig
9
+ e("button", t);
10
+ var n = {
11
+ size: "md",
12
+ variant: "bordered",
13
+ color: "primary",
14
+ radius: "md",
15
+ animate: !0,
16
+ fullWidth: !1
20
17
  };
18
+ //#endregion
19
+ export { n as FALLBACK_BUTTON_CONFIG, t as defaultButtonConfig };
@@ -1,14 +1,13 @@
1
1
  "use client";
2
- const s = {
3
- sm: "h-8 px-3 text-xs gap-1.5",
4
- md: "h-9 px-3.5 text-xs sm:h-10 sm:px-4 sm:text-sm gap-2",
5
- lg: "h-11 px-5 text-sm sm:h-12 sm:px-6 sm:text-base gap-2.5"
2
+ //#region src/components/button/button-styles.ts
3
+ var e = {
4
+ sm: "h-8 px-3 text-xs gap-1.5",
5
+ md: "h-9 px-3.5 text-xs sm:h-10 sm:px-4 sm:text-sm gap-2",
6
+ lg: "h-11 px-5 text-sm sm:h-12 sm:px-6 sm:text-base gap-2.5"
6
7
  }, t = {
7
- sm: "size-8 p-0 text-xs gap-0",
8
- md: "size-9 sm:size-10 p-0 text-xs sm:text-sm gap-0",
9
- lg: "size-11 sm:size-12 p-0 text-sm sm:text-base gap-0"
10
- };
11
- export {
12
- t as BUTTON_ICON_SIZE_CLASS,
13
- s as BUTTON_SIZE_CLASS
8
+ sm: "size-8 p-0 text-xs gap-0",
9
+ md: "size-9 sm:size-10 p-0 text-xs sm:text-sm gap-0",
10
+ lg: "size-11 sm:size-12 p-0 text-sm sm:text-base gap-0"
14
11
  };
12
+ //#endregion
13
+ export { t as BUTTON_ICON_SIZE_CLASS, e as BUTTON_SIZE_CLASS };
@@ -23,6 +23,30 @@ export interface CardImageProps extends CardImageConfig {
23
23
  * the native `<img>` tag (e.g. `next/image`).
24
24
  */
25
25
  component?: ElementType;
26
+ /**
27
+ * Additional props forwarded to the image component
28
+ * (e.g. `{ priority: true, sizes: "..." }`).
29
+ * These take precedence over the component's own props.
30
+ */
31
+ props?: Record<string, unknown>;
32
+ }
33
+ export interface CardLinkConfig {
34
+ }
35
+ export interface CardLinkProps extends CardLinkConfig {
36
+ /**
37
+ * Custom link component used to render the card as a link instead of the
38
+ * native `<a>` tag (e.g. `next/link`, TanStack Router `Link`).
39
+ *
40
+ * When provided, the card root becomes this component and `props` are
41
+ * forwarded to it.
42
+ */
43
+ component?: ElementType;
44
+ /**
45
+ * Additional props forwarded to the link component
46
+ * (e.g. `{ href: "/blog/post-1" }`).
47
+ * These take precedence over the component's own props.
48
+ */
49
+ props?: Record<string, unknown>;
26
50
  }
27
51
  /**
28
52
  * Configuration options for the Card component.
@@ -31,7 +55,7 @@ export interface CardProps extends BaseCardProps {
31
55
  /**
32
56
  * Whether the card is clickable.
33
57
  * When true, the card becomes interactive with hover and focus states.
34
- * This is automatically enabled when href or onClick is provided.
58
+ * This is automatically enabled when link or onClick is provided.
35
59
  *
36
60
  * @default false
37
61
  */
@@ -44,10 +68,11 @@ export interface CardProps extends BaseCardProps {
44
68
  */
45
69
  isDisabled?: boolean;
46
70
  /**
47
- * Renders the card as a link when provided with `isClickable`.
48
- * Clicking the card navigates to this URL.
71
+ * Link configuration for the card.
72
+ * When provided, the card root renders as the given link component
73
+ * (e.g. `next/link`) with `props` forwarded to it.
49
74
  */
50
- href?: string;
75
+ link?: CardLinkProps;
51
76
  /**
52
77
  * Heading content rendered above the body.
53
78
  * Typically a string or React element.
@@ -75,14 +100,10 @@ export interface CardProps extends BaseCardProps {
75
100
  footer?: ReactNode;
76
101
  /**
77
102
  * Image configuration for the card.
78
- * Includes src, alt, position, ratio, fit, and loading options.
103
+ * Includes src, alt, position, ratio, fit, loading, the custom image
104
+ * component, and props forwarded to it.
79
105
  */
80
106
  image?: CardImageProps;
81
- /**
82
- * Additional props forwarded to `imageComponent`
83
- * (e.g. `{ priority: true, sizes: "..." }`).
84
- */
85
- imageProps?: Record<string, unknown>;
86
107
  /**
87
108
  * Card body content, used when `body` is not provided.
88
109
  */
@@ -96,7 +117,7 @@ export interface CardProps extends BaseCardProps {
96
117
  * footer regions. Visual tokens (`variant`, `size`, `radius`,
97
118
  * `animate`, `isClickable`) resolve through the standard AsheeUI
98
119
  * cascade. When `isClickable` is enabled, the card becomes keyboard
99
- * accessible and adopts link or button semantics based on `href`.
120
+ * accessible and adopts link or button semantics based on `link`.
100
121
  *
101
122
  * The component automatically handles accessibility attributes including
102
123
  * role, tabIndex, aria-disabled, and proper keyboard interaction with
@@ -109,14 +130,13 @@ export interface CardProps extends BaseCardProps {
109
130
  * @param props.animate - Press animation. Defaults to true.
110
131
  * @param props.isClickable - Interactive behaviour. Defaults to false.
111
132
  * @param props.isDisabled - Disabled state. Defaults to false.
112
- * @param props.href - Optional link destination.
133
+ * @param props.link - Link configuration for the card (component and props).
113
134
  * @param props.title - Heading content.
114
135
  * @param props.description - Supporting text.
115
136
  * @param props.header - Custom header node.
116
137
  * @param props.body - Explicit body content.
117
138
  * @param props.footer - Footer node.
118
- * @param props.image - Image configuration object containing src, alt, position, ratio, fit, and loading.
119
- * @param props.imageProps - Props forwarded to the image component.
139
+ * @param props.image - Image configuration object containing src, alt, position, ratio, fit, loading, component and props.
120
140
  * @param props.children - Card body content.
121
141
  * @param props.className - Extra CSS classes for the card.
122
142
  * @param props.id - HTML id attribute.
@@ -146,10 +166,10 @@ export interface CardProps extends BaseCardProps {
146
166
  *
147
167
  * @example
148
168
  * ```tsx
149
- * // Clickable card with image
169
+ * // Clickable card with image and a custom link component
150
170
  * <Card
151
171
  * isClickable
152
- * href="/blog/post-1"
172
+ * link={{ component: NextLink, props: { href: "/blog/post-1" } }}
153
173
  * image={{
154
174
  * src: "/images/post-1.jpg",
155
175
  * alt: "Blog post cover",
@@ -1 +1 @@
1
- {"version":3,"file":"Card.d.ts","sourceRoot":"","sources":["../../../src/components/card/Card.tsx"],"names":[],"mappings":"AAUA,OAAO,EACL,KAAK,WAAW,EAEhB,KAAK,cAAc,EAGnB,KAAK,SAAS,EAEf,MAAM,OAAO,CAAC;AAYf,OAAO,EACL,KAAK,UAAU,EACf,KAAK,eAAe,EAKrB,MAAM,eAAe,CAAC;AAQvB,KAAK,aAAa,GAAG,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,GAC5C,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC,CAAC;AAE7D;;;GAGG;AACH,MAAM,WAAW,cAAe,SAAQ,eAAe;IACrD;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;;;;OAKG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,SAAS,CAAC,EAAE,WAAW,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,SAAU,SAAQ,aAAa;IAC9C;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAElB;;;OAGG;IACH,WAAW,CAAC,EAAE,SAAS,CAAC;IAExB;;;OAGG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IAEnB;;;OAGG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IAEjB;;;OAGG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IAEnB;;;OAGG;IACH,KAAK,CAAC,EAAE,cAAc,CAAC;IAEvB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAErC;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6FG;AACH,eAAO,MAAM,IAAI,sGAwThB,CAAC"}
1
+ {"version":3,"file":"Card.d.ts","sourceRoot":"","sources":["../../../src/components/card/Card.tsx"],"names":[],"mappings":"AAUA,OAAO,EACL,KAAK,WAAW,EAEhB,KAAK,cAAc,EAGnB,KAAK,SAAS,EAEf,MAAM,OAAO,CAAC;AAYf,OAAO,EACL,KAAK,UAAU,EACf,KAAK,eAAe,EAKrB,MAAM,eAAe,CAAC;AAQvB,KAAK,aAAa,GAAG,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,GAC5C,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC,CAAC;AAE7D;;;GAGG;AACH,MAAM,WAAW,cAAe,SAAQ,eAAe;IACrD;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;;;;OAKG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,SAAS,CAAC,EAAE,WAAW,CAAC;IAExB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAGD,MAAM,WAAW,cAAc;CAAG;AAElC,MAAM,WAAW,aAAc,SAAQ,cAAc;IACnD;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,WAAW,CAAC;IAExB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,SAAU,SAAQ,aAAa;IAC9C;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;;OAIG;IACH,IAAI,CAAC,EAAE,aAAa,CAAC;IAErB;;;OAGG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAElB;;;OAGG;IACH,WAAW,CAAC,EAAE,SAAS,CAAC;IAExB;;;OAGG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IAEnB;;;OAGG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IAEjB;;;OAGG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IAEnB;;;;OAIG;IACH,KAAK,CAAC,EAAE,cAAc,CAAC;IAEvB;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4FG;AACH,eAAO,MAAM,IAAI,sGAuUhB,CAAC"}