@jfrader/ui 0.4.0 → 0.5.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 (257) hide show
  1. package/README.md +2 -0
  2. package/dist/{accordion-Bd-j04hW.js → accordion-xCI_u0BV.js} +2 -2
  3. package/dist/accordion.js +1 -1
  4. package/dist/{alert-BBqaKI4k.js → alert-DS_einpy.js} +1 -1
  5. package/dist/alert.js +1 -1
  6. package/dist/announcement-bar-B58xempt.js +382 -0
  7. package/dist/announcement-bar.js +2 -0
  8. package/dist/avatar-group-DOQQuV51.js +138 -0
  9. package/dist/avatar-group.js +2 -0
  10. package/dist/bottom-sheet-DPJBFkie.js +673 -0
  11. package/dist/bottom-sheet.js +2 -0
  12. package/dist/{breadcrumbs-DVAOxfvL.js → breadcrumbs-Cfw_hgt2.js} +1 -1
  13. package/dist/breadcrumbs.js +1 -1
  14. package/dist/{button-P2e7_44z.js → button-C92uYFJW.js} +1 -1
  15. package/dist/button.js +1 -1
  16. package/dist/calendar-B3Svu0X2.js +447 -0
  17. package/dist/calendar.js +1 -1
  18. package/dist/carousel-IvPqN-oM.js +472 -0
  19. package/dist/carousel.js +2 -0
  20. package/dist/{checkbox-COYG6L7d.js → checkbox-cFquiSdy.js} +1 -1
  21. package/dist/checkbox.js +1 -1
  22. package/dist/chip-group-DTQd_M-G.js +289 -0
  23. package/dist/chip-group.js +2 -0
  24. package/dist/code-block/shiki.js +147 -0
  25. package/dist/code-block-ahnRi-g8.js +292 -0
  26. package/dist/code-block.js +2 -0
  27. package/dist/collection-registry-k6JcD3Jr.js +44 -0
  28. package/dist/combobox-Bhzvu9ma.js +334 -0
  29. package/dist/combobox.js +1 -1
  30. package/dist/command-palette-BQ5LleGb.js +384 -0
  31. package/dist/command-palette.js +1 -1
  32. package/dist/copy-button-ByiA6D3R.js +252 -0
  33. package/dist/copy-button.js +2 -0
  34. package/dist/countdown-Dp_TD1VP.js +293 -0
  35. package/dist/countdown.js +2 -0
  36. package/dist/date-picker-5zKSSuFF.js +255 -0
  37. package/dist/date-picker.js +1 -1
  38. package/dist/date-range-picker-B5uFWsm-.js +562 -0
  39. package/dist/date-range-picker.js +2 -0
  40. package/dist/{dialog-xaydbXl2.js → dialog-ciiv9H2b.js} +19 -19
  41. package/dist/dialog.js +1 -1
  42. package/dist/drawer-DsASTiP-.js +553 -0
  43. package/dist/drawer.js +2 -0
  44. package/dist/empty-state-CDgrjPPf.js +142 -0
  45. package/dist/empty-state.js +2 -0
  46. package/dist/expandable-card-C-qJcZ14.js +340 -0
  47. package/dist/expandable-card.js +2 -0
  48. package/dist/field-anatomy-COVdNpf5.js +84 -0
  49. package/dist/file-dropzone-pR4v7owg.js +457 -0
  50. package/dist/file-dropzone.js +2 -0
  51. package/dist/filter-toolbar-D5KEKTSe.js +312 -0
  52. package/dist/filter-toolbar.js +2 -0
  53. package/dist/hold-to-confirm-DjB2EVjM.js +294 -0
  54. package/dist/hold-to-confirm.js +2 -0
  55. package/dist/hover-card-B-nrCIy2.js +347 -0
  56. package/dist/hover-card.js +2 -0
  57. package/dist/image-compare-ciuhPtQZ.js +415 -0
  58. package/dist/image-compare.js +2 -0
  59. package/dist/index.js +79 -38
  60. package/dist/inline-edit-C0eeml65.js +535 -0
  61. package/dist/inline-edit.js +2 -0
  62. package/dist/input-control-DmMuAuPS.js +34 -0
  63. package/dist/json-viewer-BcySQfjZ.js +798 -0
  64. package/dist/json-viewer.js +2 -0
  65. package/dist/listbox-style-WX-RASp1.js +59 -0
  66. package/dist/{media-D_eA_I-e.js → media-8yrN85VT.js} +2 -2
  67. package/dist/mention-input-BcQKX2EJ.js +599 -0
  68. package/dist/mention-input.js +2 -0
  69. package/dist/menu-xwOOUtWP.js +275 -0
  70. package/dist/menu.js +1 -1
  71. package/dist/metric-card-Bh9K4fZs.js +118 -0
  72. package/dist/metric-card.js +2 -0
  73. package/dist/multi-select-Pce_IYnz.js +590 -0
  74. package/dist/multi-select.js +2 -0
  75. package/dist/{navigation-DhnKriOp.js → navigation-sP5fiuQS.js} +4 -4
  76. package/dist/navigation.js +1 -1
  77. package/dist/overlay-layer-SeUyyEPD.js +64 -0
  78. package/dist/overlay-portal-C4JZFq2M.js +15 -0
  79. package/dist/{pagination-DYdwsxwe.js → pagination-DmXZ8E85.js} +1 -1
  80. package/dist/pagination.js +1 -1
  81. package/dist/password-field-03pWRkuY.js +250 -0
  82. package/dist/password-field.js +2 -0
  83. package/dist/popover-QHcEvf9c.js +119 -0
  84. package/dist/popover.js +1 -1
  85. package/dist/{progress-BpJswTG4.js → progress-CbOWBUdA.js} +4 -4
  86. package/dist/progress.js +1 -1
  87. package/dist/radio-cards-D2QZENI_.js +455 -0
  88. package/dist/radio-cards.js +2 -0
  89. package/dist/{radio-group-Ce0_IWQr.js → radio-group-E6mMRgo7.js} +4 -4
  90. package/dist/radio-group.js +1 -1
  91. package/dist/resizable-panels-BhjUVXZZ.js +519 -0
  92. package/dist/resizable-panels.js +2 -0
  93. package/dist/scroll-area-CcZyiSOQ.js +371 -0
  94. package/dist/scroll-area.js +2 -0
  95. package/dist/search-field-IxF0IJXm.js +274 -0
  96. package/dist/search-field.js +2 -0
  97. package/dist/segmented-control-yO1K1nbi.js +326 -0
  98. package/dist/segmented-control.js +2 -0
  99. package/dist/select-n_H52W1Z.js +292 -0
  100. package/dist/select.js +1 -1
  101. package/dist/signature-pad-q2SAsrdD.js +640 -0
  102. package/dist/signature-pad.js +2 -0
  103. package/dist/{skeleton-OoFlOEXO.js → skeleton-XQQDkCHd.js} +1 -1
  104. package/dist/skeleton.js +1 -1
  105. package/dist/slider-t0B5cecO.js +477 -0
  106. package/dist/slider.js +2 -0
  107. package/dist/sortable-data-table-tirqlLY2.js +365 -0
  108. package/dist/sortable-data-table.js +2 -0
  109. package/dist/{spinner-C2YDoiMn.js → spinner-DtxvDPdM.js} +1 -1
  110. package/dist/spinner.js +1 -1
  111. package/dist/split-button-Cb3EHs64.js +268 -0
  112. package/dist/split-button.js +2 -0
  113. package/dist/stepper-CruHbXxX.js +480 -0
  114. package/dist/stepper.js +2 -0
  115. package/dist/swipe-actions-DiZC57-3.js +418 -0
  116. package/dist/swipe-actions.js +2 -0
  117. package/dist/{switch-Dr-qjmT4.js → switch-qwv8jQnR.js} +1 -1
  118. package/dist/switch.js +1 -1
  119. package/dist/{tabs-CK_g1RKa.js → tabs-CAVJndX1.js} +2 -2
  120. package/dist/tabs.js +1 -1
  121. package/dist/tag-input-DSRCyrX2.js +418 -0
  122. package/dist/tag-input.js +2 -0
  123. package/dist/{text-field-D60ok14S.js → text-field-C8TWG-tY.js} +6 -5
  124. package/dist/text-field.js +1 -1
  125. package/dist/{textarea-DyfjtP0A.js → textarea-BrW0XcG_.js} +6 -5
  126. package/dist/textarea.js +1 -1
  127. package/dist/time-picker-Db8D49cP.js +305 -0
  128. package/dist/time-picker.js +2 -0
  129. package/dist/timeline-k3nURuCP.js +618 -0
  130. package/dist/timeline.js +2 -0
  131. package/dist/toast-BHxI32ZA.js +352 -0
  132. package/dist/toast-stack-DqrAzdg5.js +183 -0
  133. package/dist/toast-stack.js +2 -0
  134. package/dist/toast.js +1 -1
  135. package/dist/{toggle-group-CI0e7hFm.js → toggle-group-fcjzpifI.js} +4 -4
  136. package/dist/toggle-group.js +1 -1
  137. package/dist/tooltip-CkeiW9C1.js +113 -0
  138. package/dist/tooltip.js +1 -1
  139. package/dist/tree-view-C2liIxqy.js +360 -0
  140. package/dist/tree-view.js +2 -0
  141. package/dist/types/components/announcement-bar/announcement-bar.d.ts +75 -0
  142. package/dist/types/components/announcement-bar/index.d.ts +2 -0
  143. package/dist/types/components/avatar-group/avatar-group.d.ts +43 -0
  144. package/dist/types/components/avatar-group/index.d.ts +2 -0
  145. package/dist/types/components/bottom-sheet/bottom-sheet.d.ts +60 -0
  146. package/dist/types/components/bottom-sheet/index.d.ts +2 -0
  147. package/dist/types/components/calendar/calendar.d.ts +25 -1
  148. package/dist/types/components/calendar/index.d.ts +1 -1
  149. package/dist/types/components/carousel/carousel.d.ts +73 -0
  150. package/dist/types/components/carousel/index.d.ts +2 -0
  151. package/dist/types/components/chip-group/chip-group.d.ts +54 -0
  152. package/dist/types/components/chip-group/index.d.ts +1 -0
  153. package/dist/types/components/code-block/code-block.d.ts +58 -0
  154. package/dist/types/components/code-block/index.d.ts +1 -0
  155. package/dist/types/components/code-block/shiki.d.ts +3 -0
  156. package/dist/types/components/combobox/combobox.d.ts +1 -1
  157. package/dist/types/components/command-palette/command-palette.d.ts +1 -1
  158. package/dist/types/components/copy-button/copy-button.d.ts +49 -0
  159. package/dist/types/components/copy-button/index.d.ts +2 -0
  160. package/dist/types/components/countdown/countdown.d.ts +37 -0
  161. package/dist/types/components/countdown/index.d.ts +1 -0
  162. package/dist/types/components/date-picker/date-picker.d.ts +1 -1
  163. package/dist/types/components/date-range-picker/date-range-picker.d.ts +103 -0
  164. package/dist/types/components/date-range-picker/index.d.ts +2 -0
  165. package/dist/types/components/drawer/drawer.d.ts +59 -0
  166. package/dist/types/components/drawer/index.d.ts +2 -0
  167. package/dist/types/components/empty-state/empty-state.d.ts +36 -0
  168. package/dist/types/components/empty-state/index.d.ts +2 -0
  169. package/dist/types/components/expandable-card/expandable-card.d.ts +28 -0
  170. package/dist/types/components/expandable-card/index.d.ts +2 -0
  171. package/dist/types/components/field/field-anatomy.d.ts +4 -2
  172. package/dist/types/components/file-dropzone/file-dropzone.d.ts +93 -0
  173. package/dist/types/components/file-dropzone/index.d.ts +2 -0
  174. package/dist/types/components/filter-toolbar/filter-toolbar.d.ts +70 -0
  175. package/dist/types/components/filter-toolbar/index.d.ts +1 -0
  176. package/dist/types/components/hold-to-confirm/hold-to-confirm.d.ts +32 -0
  177. package/dist/types/components/hold-to-confirm/index.d.ts +2 -0
  178. package/dist/types/components/hover-card/hover-card.d.ts +97 -0
  179. package/dist/types/components/hover-card/index.d.ts +2 -0
  180. package/dist/types/components/image-compare/image-compare.d.ts +54 -0
  181. package/dist/types/components/image-compare/index.d.ts +1 -0
  182. package/dist/types/components/inline-edit/index.d.ts +2 -0
  183. package/dist/types/components/inline-edit/inline-edit.d.ts +93 -0
  184. package/dist/types/components/json-viewer/index.d.ts +2 -0
  185. package/dist/types/components/json-viewer/json-viewer.d.ts +82 -0
  186. package/dist/types/components/mention-input/index.d.ts +2 -0
  187. package/dist/types/components/mention-input/mention-input.d.ts +87 -0
  188. package/dist/types/components/menu/menu.d.ts +23 -5
  189. package/dist/types/components/metric-card/index.d.ts +1 -0
  190. package/dist/types/components/metric-card/metric-card.d.ts +37 -0
  191. package/dist/types/components/multi-select/index.d.ts +2 -0
  192. package/dist/types/components/multi-select/multi-select.d.ts +73 -0
  193. package/dist/types/components/password-field/index.d.ts +2 -0
  194. package/dist/types/components/password-field/password-field.d.ts +34 -0
  195. package/dist/types/components/popover/popover.d.ts +1 -1
  196. package/dist/types/components/radio-cards/index.d.ts +1 -0
  197. package/dist/types/components/radio-cards/radio-cards.d.ts +42 -0
  198. package/dist/types/components/resizable-panels/index.d.ts +2 -0
  199. package/dist/types/components/resizable-panels/resizable-panels.d.ts +42 -0
  200. package/dist/types/components/scroll-area/index.d.ts +2 -0
  201. package/dist/types/components/scroll-area/scroll-area.d.ts +34 -0
  202. package/dist/types/components/search-field/index.d.ts +1 -0
  203. package/dist/types/components/search-field/search-field.d.ts +31 -0
  204. package/dist/types/components/segmented-control/index.d.ts +2 -0
  205. package/dist/types/components/segmented-control/segmented-control.d.ts +32 -0
  206. package/dist/types/components/select/select.d.ts +1 -1
  207. package/dist/types/components/signature-pad/index.d.ts +2 -0
  208. package/dist/types/components/signature-pad/signature-pad.d.ts +104 -0
  209. package/dist/types/components/slider/index.d.ts +1 -0
  210. package/dist/types/components/slider/slider.d.ts +70 -0
  211. package/dist/types/components/sortable-data-table/index.d.ts +1 -0
  212. package/dist/types/components/sortable-data-table/sortable-data-table.d.ts +76 -0
  213. package/dist/types/components/split-button/index.d.ts +2 -0
  214. package/dist/types/components/split-button/split-button.d.ts +55 -0
  215. package/dist/types/components/stepper/index.d.ts +2 -0
  216. package/dist/types/components/stepper/stepper.d.ts +85 -0
  217. package/dist/types/components/swipe-actions/index.d.ts +2 -0
  218. package/dist/types/components/swipe-actions/swipe-actions.d.ts +44 -0
  219. package/dist/types/components/tag-input/index.d.ts +2 -0
  220. package/dist/types/components/tag-input/tag-input.d.ts +66 -0
  221. package/dist/types/components/time-picker/index.d.ts +2 -0
  222. package/dist/types/components/time-picker/time-picker.d.ts +48 -0
  223. package/dist/types/components/timeline/index.d.ts +2 -0
  224. package/dist/types/components/timeline/timeline.d.ts +66 -0
  225. package/dist/types/components/toast/toast.d.ts +37 -2
  226. package/dist/types/components/toast-stack/index.d.ts +2 -0
  227. package/dist/types/components/toast-stack/toast-stack.d.ts +28 -0
  228. package/dist/types/components/tooltip/tooltip.d.ts +1 -1
  229. package/dist/types/components/tree-view/index.d.ts +1 -0
  230. package/dist/types/components/tree-view/tree-view.d.ts +47 -0
  231. package/dist/types/components/usage-meter/index.d.ts +2 -0
  232. package/dist/types/components/usage-meter/usage-meter.d.ts +83 -0
  233. package/dist/types/index.d.ts +40 -0
  234. package/dist/types/overlay/overlay-layer.d.ts +33 -0
  235. package/dist/types/overlay/use-overlay-floating.d.ts +11 -1
  236. package/dist/types/styling/media.d.ts +1 -0
  237. package/dist/types/styling/theme.d.ts +12 -0
  238. package/dist/types/utils/use-controlled-state.d.ts +2 -1
  239. package/dist/usage-meter-qyQ3rYVv.js +463 -0
  240. package/dist/usage-meter.js +2 -0
  241. package/dist/use-controlled-state-DpeVQZNR.js +20 -0
  242. package/dist/use-latest-callback-cj1OOQL6.js +11 -0
  243. package/dist/use-overlay-floating-DvJifLpF.js +31 -0
  244. package/package.json +175 -3
  245. package/dist/calendar-C9Yad_-w.js +0 -394
  246. package/dist/collection-registry-BTYi6zGh.js +0 -98
  247. package/dist/combobox-DiMC2g_u.js +0 -327
  248. package/dist/command-palette-V_2pEay7.js +0 -379
  249. package/dist/date-picker-C29Uo4Tx.js +0 -250
  250. package/dist/field-anatomy-D2ToMeRa.js +0 -109
  251. package/dist/menu-CGPTNRnF.js +0 -216
  252. package/dist/popover-CdRXjQqI.js +0 -113
  253. package/dist/select-BgG7WgSh.js +0 -286
  254. package/dist/toast-CjmELMZZ.js +0 -283
  255. package/dist/tooltip-CaL3rKbV.js +0 -108
  256. package/dist/use-controlled-state-CVXDa-qM.js +0 -21
  257. package/dist/use-overlay-floating-Bit-f0FU.js +0 -31
@@ -0,0 +1,340 @@
1
+ 'use client';
2
+ import { r as e, t } from "./sx-Dx9JUKp5.js";
3
+ import { t as n } from "./disclosure-caret-C5T3fcl6.js";
4
+ import { t as r } from "./focus-ring-BK5W5_NY.js";
5
+ import { n as i, r as a } from "./media-8yrN85VT.js";
6
+ import { t as o } from "./use-controlled-state-DpeVQZNR.js";
7
+ import { t as s } from "./renderable-DzcIj1Lo.js";
8
+ import { n as c } from "./surface-DZ4d-2aL.js";
9
+ import { createContext as l, useContext as u, useEffect as d, useId as f, useLayoutEffect as p, useMemo as m, useRef as h, useState as g } from "react";
10
+ import { vars as _ } from "@jfrader/tokens/vars";
11
+ import { jsx as v, jsxs as y } from "@emotion/react/jsx-runtime";
12
+ import { useMergeRefs as b } from "@floating-ui/react";
13
+ import { MotionConfig as x, animate as S, useMotionValue as C, useReducedMotion as w } from "motion/react";
14
+ import { base as T } from "@jfrader/tokens";
15
+ //#region src/components/expandable-card/expandable-card.tsx
16
+ var E = l(null);
17
+ function D(e) {
18
+ let t = u(E);
19
+ if (!t) throw Error(`ExpandableCard.${e} must be rendered inside <ExpandableCard>.`);
20
+ return t;
21
+ }
22
+ var O = {
23
+ type: "spring",
24
+ stiffness: 400,
25
+ damping: 40,
26
+ mass: 1
27
+ }, k = {
28
+ duration: Number.parseFloat(T.motion.duration.fast) / 1e3,
29
+ ease: [
30
+ .2,
31
+ .6,
32
+ .2,
33
+ 1
34
+ ]
35
+ }, A = e({
36
+ ...c,
37
+ borderColor: _.color.borderControl,
38
+ borderRadius: _.radius.lg,
39
+ boxShadow: _.shadow.raised,
40
+ minInlineSize: 0,
41
+ maxInlineSize: "100%",
42
+ marginInline: "auto",
43
+ overflow: "clip"
44
+ }), j = e({
45
+ inlineSize: "100%",
46
+ minInlineSize: 0
47
+ }), M = e({
48
+ margin: 0,
49
+ font: "inherit"
50
+ }), N = e({
51
+ appearance: "none",
52
+ display: "grid",
53
+ gridTemplateColumns: "minmax(0, 1fr) auto",
54
+ alignItems: "center",
55
+ gap: _.space[2],
56
+ inlineSize: "100%",
57
+ boxSizing: "border-box",
58
+ minBlockSize: `calc(${_.space[12]} + ${_.space[4]})`,
59
+ padding: _.space[4],
60
+ border: 0,
61
+ background: "transparent",
62
+ color: "inherit",
63
+ font: "inherit",
64
+ textAlign: "start",
65
+ cursor: "pointer",
66
+ "& > span": {
67
+ gridColumn: 1,
68
+ overflowWrap: "anywhere"
69
+ },
70
+ "&::after": {
71
+ ...n,
72
+ gridColumn: 2,
73
+ gridRow: "1 / span 2"
74
+ },
75
+ "&[aria-expanded=\"true\"]::after": { transform: "rotate(90deg)" },
76
+ "&[aria-expanded=\"true\"]:dir(rtl)::after": { transform: "rotate(-90deg)" },
77
+ "&:focus-visible": r,
78
+ "&:hover:not(:disabled)": { backgroundColor: _.color.surfaceHover },
79
+ "&:disabled": {
80
+ cursor: "not-allowed",
81
+ opacity: .55
82
+ },
83
+ "[data-size=\"sm\"] &": {
84
+ minBlockSize: _.space[12],
85
+ padding: _.space[3]
86
+ },
87
+ [a]: { "&::after": { transitionDuration: "0s" } },
88
+ [i]: { "&:focus-visible": { outlineColor: "Highlight" } }
89
+ }), P = e({
90
+ fontSize: _.textSize.md,
91
+ fontWeight: _.fontWeight.medium
92
+ }), F = e({
93
+ fontSize: _.textSize.sm,
94
+ color: _.color.textMuted
95
+ }), I = e({
96
+ overflow: "clip",
97
+ minInlineSize: 0,
98
+ "&[hidden]": { display: "none" }
99
+ }), L = e({
100
+ boxSizing: "border-box",
101
+ maxInlineSize: "none",
102
+ padding: _.space[4],
103
+ borderBlockStart: `1px solid ${_.color.border}`,
104
+ fontSize: _.textSize.sm,
105
+ overflowWrap: "anywhere",
106
+ "& :where(input, select, textarea, img, video, canvas, svg, iframe)": {
107
+ maxInlineSize: "100%",
108
+ boxSizing: "border-box"
109
+ },
110
+ "[data-size=\"sm\"] &": { padding: _.space[3] }
111
+ });
112
+ function R(e) {
113
+ return e !== void 0 && Number.isFinite(e) && e > 0 ? e : void 0;
114
+ }
115
+ function z(...e) {
116
+ return e.filter(Boolean).join(" ") || void 0;
117
+ }
118
+ function B({ ref: e, open: n, defaultOpen: r = !1, onOpenChange: i, collapsedInlineSize: a, expandedInlineSize: s, size: c = "md", disabled: l = !1, headingLevel: u = 3, className: d, sx: _, onKeyDown: y, children: T, ...D }) {
119
+ let [k, M] = o(n, r, i), N = !!k, P = f(), F = h(null), I = h(null), L = h(null), z = b([I, e]), [B, V] = g(!1), [H, U] = g(!1), [W, G] = g(), [K, ee] = g(0), q = w(), J = C(0), Y = h(!1), X = R(a), Z = R(s) ?? X, Q = W === void 0 ? void 0 : Math.min(W, (N ? Z : X) ?? W), $ = W === void 0 ? void 0 : Math.max(0, Math.min(W, Z ?? W) - K);
120
+ p(() => {
121
+ let e = L.current;
122
+ if (!e) return;
123
+ let t = () => {
124
+ G(e.getBoundingClientRect().width);
125
+ let t = I.current;
126
+ if (!t) return;
127
+ let n = getComputedStyle(t);
128
+ ee(Number.parseFloat(n.borderInlineStartWidth) + Number.parseFloat(n.borderInlineEndWidth) + Number.parseFloat(n.paddingInlineStart) + Number.parseFloat(n.paddingInlineEnd));
129
+ };
130
+ t();
131
+ let n = new ResizeObserver(t);
132
+ return n.observe(e), () => n.disconnect();
133
+ }, []), p(() => {
134
+ let e = I.current;
135
+ if (!e || Q === void 0) return;
136
+ let t = (t) => {
137
+ e.style.inlineSize = `${t}px`;
138
+ }, n = J.on("change", t);
139
+ return !Y.current || q ? (J.jump(Q), t(Q), Y.current = !0) : S(J, Q, O), () => {
140
+ n(), J.stop();
141
+ };
142
+ }, [
143
+ Q,
144
+ q,
145
+ J
146
+ ]);
147
+ let te = m(() => ({
148
+ open: N,
149
+ request: M,
150
+ disabled: l,
151
+ headingLevel: u,
152
+ triggerId: `${P}-trigger`,
153
+ panelId: `${P}-panel`,
154
+ titleId: `${P}-title`,
155
+ descriptionId: `${P}-description`,
156
+ hasTitle: B,
157
+ hasDescription: H,
158
+ setHasTitle: V,
159
+ setHasDescription: U,
160
+ triggerRef: F,
161
+ expandedWidth: $
162
+ }), [
163
+ N,
164
+ M,
165
+ l,
166
+ u,
167
+ P,
168
+ B,
169
+ H,
170
+ $
171
+ ]);
172
+ return /* @__PURE__ */ v(x, {
173
+ reducedMotion: "user",
174
+ children: /* @__PURE__ */ v(E.Provider, {
175
+ value: te,
176
+ children: /* @__PURE__ */ v("div", {
177
+ ref: L,
178
+ css: j,
179
+ children: /* @__PURE__ */ v(t, {
180
+ className: d,
181
+ styles: A,
182
+ sx: _,
183
+ children: (e) => /* @__PURE__ */ v("article", {
184
+ ...D,
185
+ ref: z,
186
+ "data-ui": "expandable-card",
187
+ "data-size": c,
188
+ "data-state": N ? "open" : "closed",
189
+ className: e,
190
+ onKeyDown: (e) => {
191
+ if (y?.(e), e.defaultPrevented || e.key !== "Escape" || !N) return;
192
+ let t = e.target, n = t.closest("dialog, [role=\"dialog\"], [role=\"menu\"], [role=\"listbox\"]");
193
+ t.closest("[data-ui=\"expandable-card\"]") !== e.currentTarget || n && e.currentTarget.contains(n) || (e.preventDefault(), M(!1));
194
+ },
195
+ children: T
196
+ })
197
+ })
198
+ })
199
+ })
200
+ });
201
+ }
202
+ B.displayName = "ExpandableCard";
203
+ function V({ ref: e, className: n, sx: r, onClick: i, disabled: a, "aria-labelledby": o, "aria-describedby": s, ...c }) {
204
+ let l = D("Trigger"), u = b([l.triggerRef, e]), d = `h${l.headingLevel}`;
205
+ return /* @__PURE__ */ v(d, {
206
+ css: M,
207
+ "aria-labelledby": l.triggerId,
208
+ children: /* @__PURE__ */ v(t, {
209
+ className: n,
210
+ styles: N,
211
+ sx: r,
212
+ children: (e) => /* @__PURE__ */ v("button", {
213
+ ...c,
214
+ ref: u,
215
+ type: "button",
216
+ id: l.triggerId,
217
+ "data-ui": "expandable-card-trigger",
218
+ className: e,
219
+ disabled: l.disabled || a,
220
+ "aria-expanded": l.open,
221
+ "aria-controls": l.panelId,
222
+ "aria-labelledby": z(o, l.hasTitle && l.titleId, l.hasDescription && l.descriptionId),
223
+ "aria-describedby": z(s),
224
+ onClick: (e) => {
225
+ i?.(e), e.defaultPrevented || l.request(!l.open);
226
+ }
227
+ })
228
+ })
229
+ });
230
+ }
231
+ V.displayName = "ExpandableCard.Trigger";
232
+ function H({ ref: e, className: n, sx: r, children: i, ...a }) {
233
+ let { titleId: o, setHasTitle: c } = D("Title"), l = s(i);
234
+ return d(() => (c(l), () => c(!1)), [l, c]), l ? /* @__PURE__ */ v(t, {
235
+ className: n,
236
+ styles: P,
237
+ sx: r,
238
+ children: (t) => /* @__PURE__ */ v("span", {
239
+ ...a,
240
+ ref: e,
241
+ id: o,
242
+ className: t,
243
+ "data-ui": "expandable-card-title",
244
+ children: i
245
+ })
246
+ }) : null;
247
+ }
248
+ H.displayName = "ExpandableCard.Title";
249
+ function U({ ref: e, className: n, sx: r, children: i, ...a }) {
250
+ let { descriptionId: o, setHasDescription: c } = D("Description"), l = s(i);
251
+ return d(() => (c(l), () => c(!1)), [l, c]), l ? /* @__PURE__ */ v(t, {
252
+ className: n,
253
+ styles: F,
254
+ sx: r,
255
+ children: (t) => /* @__PURE__ */ y("span", {
256
+ ...a,
257
+ ref: e,
258
+ id: o,
259
+ className: t,
260
+ "data-ui": "expandable-card-description",
261
+ children: [" ", i]
262
+ })
263
+ }) : null;
264
+ }
265
+ U.displayName = "ExpandableCard.Description";
266
+ function W({ ref: e, className: n, sx: r, children: i, "aria-labelledby": a, "aria-describedby": o, ...s }) {
267
+ let c = D("Content"), l = h(null), u = h(null), d = b([l, e]), f = C(0), m = C(+!!c.open), g = w(), _ = h(!1);
268
+ return p(() => {
269
+ let e = l.current, t = u.current;
270
+ if (!e || !t) return;
271
+ let n = 0, r = !1;
272
+ if (!c.open && e.contains(e.ownerDocument.activeElement) && c.triggerRef.current?.focus(), e.inert = !c.open, e.hidden = !c.open && !_.current, c.expandedWidth === void 0) return;
273
+ let i = (t) => {
274
+ e.style.blockSize = `${t}px`, c.open && t > 0 && m.get() === 0 && !m.isAnimating() && S(m, 1, k);
275
+ }, a = f.on("change", i), o = m.on("change", (t) => {
276
+ e.style.opacity = String(t);
277
+ }), s = () => {
278
+ let a = ++n, o = c.open ? t.getBoundingClientRect().height : 0;
279
+ f.stop();
280
+ let s = () => {
281
+ !r && a === n && !c.open && (e.hidden = !0);
282
+ };
283
+ !_.current || g ? (m.jump(+!!c.open), e.style.opacity = String(m.get()), f.jump(o), i(o), s(), _.current = !0) : c.open ? (f.get() > 0 && S(m, 1, k), S(f, o, {
284
+ ...O,
285
+ onComplete: s
286
+ })) : S(m, 0, {
287
+ ...k,
288
+ onComplete: () => {
289
+ !r && a === n && S(f, o, {
290
+ ...O,
291
+ onComplete: s
292
+ });
293
+ }
294
+ });
295
+ };
296
+ s();
297
+ let d = new ResizeObserver(s);
298
+ return d.observe(t), () => {
299
+ r = !0, n++, d.disconnect(), a(), o(), f.stop(), m.stop();
300
+ };
301
+ }, [
302
+ c.open,
303
+ c.expandedWidth,
304
+ c.triggerRef,
305
+ f,
306
+ m,
307
+ g
308
+ ]), /* @__PURE__ */ v(t, {
309
+ className: n,
310
+ styles: I,
311
+ sx: r,
312
+ children: (e) => /* @__PURE__ */ v("div", {
313
+ ...s,
314
+ ref: d,
315
+ id: c.panelId,
316
+ role: "region",
317
+ className: e,
318
+ "data-ui": "expandable-card-content",
319
+ hidden: !c.open,
320
+ "aria-hidden": !c.open || void 0,
321
+ "aria-labelledby": z(a, c.hasTitle ? c.titleId : c.triggerId),
322
+ "aria-describedby": z(o, c.hasDescription && c.descriptionId),
323
+ children: /* @__PURE__ */ v("div", {
324
+ ref: u,
325
+ css: L,
326
+ style: { inlineSize: c.expandedWidth },
327
+ children: i
328
+ })
329
+ })
330
+ });
331
+ }
332
+ W.displayName = "ExpandableCard.Content";
333
+ var G = Object.assign(B, {
334
+ Trigger: V,
335
+ Title: H,
336
+ Description: U,
337
+ Content: W
338
+ });
339
+ //#endregion
340
+ export { G as t };
@@ -0,0 +1,2 @@
1
+ 'use client';
2
+ export { t as ExpandableCard } from "./expandable-card-C-qJcZ14.js";
@@ -0,0 +1,84 @@
1
+ 'use client';
2
+ import { r as e, t } from "./sx-Dx9JUKp5.js";
3
+ import { t as n } from "./renderable-DzcIj1Lo.js";
4
+ import { useId as r } from "react";
5
+ import { vars as i } from "@jfrader/tokens/vars";
6
+ import { jsx as a, jsxs as o } from "@emotion/react/jsx-runtime";
7
+ //#region src/components/field/field-anatomy.tsx
8
+ var s = e({
9
+ display: "grid",
10
+ gap: i.space[1],
11
+ inlineSize: "100%"
12
+ }), c = e({
13
+ display: "inline-flex",
14
+ gap: i.space[1],
15
+ fontSize: i.textSize.sm,
16
+ fontWeight: i.fontWeight.medium,
17
+ color: i.color.text
18
+ }), l = e({ color: i.color.dangerText }), u = e({
19
+ fontSize: i.textSize.sm,
20
+ color: i.color.textMuted
21
+ }), d = e({
22
+ fontSize: i.textSize.sm,
23
+ color: i.color.dangerText
24
+ });
25
+ function f({ id: e, description: t, error: i, "aria-describedby": a, "aria-invalid": o }) {
26
+ let s = r(), c = e ?? s, l = `${c}-description`, u = `${c}-error`, d = n(t), f = n(i);
27
+ return {
28
+ id: c,
29
+ descriptionId: l,
30
+ errorId: u,
31
+ describedBy: [
32
+ a,
33
+ d && l,
34
+ f && u
35
+ ].filter(Boolean).join(" ") || void 0,
36
+ ariaInvalid: f ? !0 : o
37
+ };
38
+ }
39
+ function p({ "data-ui": e, className: n, dir: r, sx: i, part: o, children: c }) {
40
+ let l = [n, o?.className].filter(Boolean).join(" ") || void 0;
41
+ return /* @__PURE__ */ a(t, {
42
+ className: l,
43
+ styles: [s, o?.css],
44
+ sx: i,
45
+ children: (t) => /* @__PURE__ */ a("div", {
46
+ "data-ui": e,
47
+ dir: r,
48
+ className: t,
49
+ children: c
50
+ })
51
+ });
52
+ }
53
+ function m({ id: e, htmlFor: t, required: r, part: i, children: s }) {
54
+ return n(s) ? /* @__PURE__ */ o("label", {
55
+ id: e,
56
+ htmlFor: t,
57
+ className: i?.className,
58
+ css: [c, i?.css],
59
+ children: [s, r && /* @__PURE__ */ a("span", {
60
+ "aria-hidden": !0,
61
+ css: l,
62
+ children: " *"
63
+ })]
64
+ }) : null;
65
+ }
66
+ function h({ id: e, part: t, children: r }) {
67
+ return n(r) ? /* @__PURE__ */ a("span", {
68
+ id: e,
69
+ className: t?.className,
70
+ css: [u, t?.css],
71
+ children: r
72
+ }) : null;
73
+ }
74
+ function g({ id: e, part: t, children: r }) {
75
+ return n(r) ? /* @__PURE__ */ a("span", {
76
+ id: e,
77
+ role: "alert",
78
+ className: t?.className,
79
+ css: [d, t?.css],
80
+ children: r
81
+ }) : null;
82
+ }
83
+ //#endregion
84
+ export { f as a, p as i, g as n, m as r, h as t };