@fabio.caffarello/react-design-system 3.13.0 → 4.0.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 (150) hide show
  1. package/dist/granular/ui/components/Autocomplete/Autocomplete.js +103 -86
  2. package/dist/granular/ui/components/Autocomplete/Autocomplete.js.map +1 -1
  3. package/dist/granular/ui/components/Autocomplete/AutocompleteList.js +57 -47
  4. package/dist/granular/ui/components/Autocomplete/AutocompleteList.js.map +1 -1
  5. package/dist/granular/ui/components/Autocomplete/AutocompleteOption.js +21 -20
  6. package/dist/granular/ui/components/Autocomplete/AutocompleteOption.js.map +1 -1
  7. package/dist/granular/ui/components/Breadcrumb/Breadcrumb.js.map +1 -1
  8. package/dist/granular/ui/components/ColorPicker/ColorPicker.js.map +1 -1
  9. package/dist/granular/ui/components/CommandPalette/CommandPalette.js +187 -149
  10. package/dist/granular/ui/components/CommandPalette/CommandPalette.js.map +1 -1
  11. package/dist/granular/ui/components/DataGrid/DataGrid.js +92 -92
  12. package/dist/granular/ui/components/DataGrid/DataGrid.js.map +1 -1
  13. package/dist/granular/ui/components/DatePicker/DatePickerCalendar.js +154 -139
  14. package/dist/granular/ui/components/DatePicker/DatePickerCalendar.js.map +1 -1
  15. package/dist/granular/ui/components/Dialog/AlertDialog.js +73 -40
  16. package/dist/granular/ui/components/Dialog/AlertDialog.js.map +1 -1
  17. package/dist/granular/ui/components/Dialog/DialogContent.js +54 -48
  18. package/dist/granular/ui/components/Dialog/DialogContent.js.map +1 -1
  19. package/dist/granular/ui/components/Dialog/DialogDescription.js +31 -31
  20. package/dist/granular/ui/components/Dialog/DialogDescription.js.map +1 -1
  21. package/dist/granular/ui/components/Dialog/DialogTitle.js +30 -30
  22. package/dist/granular/ui/components/Dialog/DialogTitle.js.map +1 -1
  23. package/dist/granular/ui/components/Drawer/Drawer.js.map +1 -1
  24. package/dist/granular/ui/components/Dropdown/Dropdown.js.map +1 -1
  25. package/dist/granular/ui/components/EmptyState/EmptyState.js.map +1 -1
  26. package/dist/granular/ui/components/FileUpload/FileUpload.js.map +1 -1
  27. package/dist/granular/ui/components/Form/Form.js +38 -37
  28. package/dist/granular/ui/components/Form/Form.js.map +1 -1
  29. package/dist/granular/ui/components/Form/FormField.js +28 -26
  30. package/dist/granular/ui/components/Form/FormField.js.map +1 -1
  31. package/dist/granular/ui/components/Header/Header.js.map +1 -1
  32. package/dist/granular/ui/components/Header/components/HeaderActions.js.map +1 -1
  33. package/dist/granular/ui/components/Header/components/HeaderHamburger.js.map +1 -1
  34. package/dist/granular/ui/components/Header/components/HeaderLogo.js.map +1 -1
  35. package/dist/granular/ui/components/Header/components/HeaderMobileMenu.js.map +1 -1
  36. package/dist/granular/ui/components/Header/components/HeaderNavigation.js.map +1 -1
  37. package/dist/granular/ui/components/Header/contexts/HeaderContext.js.map +1 -1
  38. package/dist/granular/ui/components/Menu/Menu.js.map +1 -1
  39. package/dist/granular/ui/components/Modal/Modal.js +98 -86
  40. package/dist/granular/ui/components/Modal/Modal.js.map +1 -1
  41. package/dist/granular/ui/components/MultiSelect/MultiSelect.js +122 -106
  42. package/dist/granular/ui/components/MultiSelect/MultiSelect.js.map +1 -1
  43. package/dist/granular/ui/components/Navigation/Navigation.js.map +1 -1
  44. package/dist/granular/ui/components/PageHeader/PageHeader.js.map +1 -1
  45. package/dist/granular/ui/components/Pagination/Pagination.js.map +1 -1
  46. package/dist/granular/ui/components/Popover/Popover.js.map +1 -1
  47. package/dist/granular/ui/components/Rating/Rating.js.map +1 -1
  48. package/dist/granular/ui/components/SearchInput/SearchInput.js.map +1 -1
  49. package/dist/granular/ui/components/SideNavbar/components/Navbar/NavbarGroup.js +82 -64
  50. package/dist/granular/ui/components/SideNavbar/components/Navbar/NavbarGroup.js.map +1 -1
  51. package/dist/granular/ui/components/SideNavbar/components/Navbar/NavbarItem.js +30 -29
  52. package/dist/granular/ui/components/SideNavbar/components/Navbar/NavbarItem.js.map +1 -1
  53. package/dist/granular/ui/components/SideNavbar/components/SideNavbarResizeHandle.js +37 -35
  54. package/dist/granular/ui/components/SideNavbar/components/SideNavbarResizeHandle.js.map +1 -1
  55. package/dist/granular/ui/components/SideNavbar/providers/SideNavbarStateProvider.js +57 -57
  56. package/dist/granular/ui/components/SideNavbar/providers/SideNavbarStateProvider.js.map +1 -1
  57. package/dist/granular/ui/components/Stepper/Stepper.js +102 -94
  58. package/dist/granular/ui/components/Stepper/Stepper.js.map +1 -1
  59. package/dist/granular/ui/components/Table/Table.js +41 -35
  60. package/dist/granular/ui/components/Table/Table.js.map +1 -1
  61. package/dist/granular/ui/components/Table/TableActions/TableActions.js.map +1 -1
  62. package/dist/granular/ui/components/Table/TableFilters/TableFilters.js +49 -46
  63. package/dist/granular/ui/components/Table/TableFilters/TableFilters.js.map +1 -1
  64. package/dist/granular/ui/components/Table/TablePagination/TablePagination.js.map +1 -1
  65. package/dist/granular/ui/components/Table/TableProvider.js +82 -80
  66. package/dist/granular/ui/components/Table/TableProvider.js.map +1 -1
  67. package/dist/granular/ui/components/Table/TableRow.js +57 -53
  68. package/dist/granular/ui/components/Table/TableRow.js.map +1 -1
  69. package/dist/granular/ui/components/Table/useColumnResizing.js +53 -53
  70. package/dist/granular/ui/components/Table/useColumnResizing.js.map +1 -1
  71. package/dist/granular/ui/components/TimePicker/TimePicker.js +149 -103
  72. package/dist/granular/ui/components/TimePicker/TimePicker.js.map +1 -1
  73. package/dist/granular/ui/components/Timeline/Timeline.js.map +1 -1
  74. package/dist/granular/ui/hooks/useFocusRestore.js +14 -15
  75. package/dist/granular/ui/hooks/useFocusRestore.js.map +1 -1
  76. package/dist/granular/ui/primitives/Badge/Badge.js.map +1 -1
  77. package/dist/granular/ui/primitives/Checkbox/Checkbox.js.map +1 -1
  78. package/dist/granular/ui/primitives/Chip/Chip.js +91 -71
  79. package/dist/granular/ui/primitives/Chip/Chip.js.map +1 -1
  80. package/dist/granular/ui/primitives/ErrorMessage/ErrorMessage.js.map +1 -1
  81. package/dist/granular/ui/primitives/Input/Input.js.map +1 -1
  82. package/dist/granular/ui/primitives/Label/Label.js.map +1 -1
  83. package/dist/granular/ui/primitives/NavLink/NavLink.js.map +1 -1
  84. package/dist/granular/ui/primitives/Radio/Radio.js.map +1 -1
  85. package/dist/granular/ui/primitives/Select/Select.js.map +1 -1
  86. package/dist/granular/ui/primitives/Separator/Separator.js.map +1 -1
  87. package/dist/granular/ui/primitives/Skeleton/Skeleton.js.map +1 -1
  88. package/dist/granular/ui/primitives/Slider/Slider.js.map +1 -1
  89. package/dist/granular/ui/primitives/Spinner/Spinner.js.map +1 -1
  90. package/dist/granular/ui/primitives/Switch/Switch.js.map +1 -1
  91. package/dist/granular/ui/primitives/Tooltip/Tooltip.js.map +1 -1
  92. package/dist/granular/ui/providers/DialogContext.js.map +1 -1
  93. package/dist/granular/ui/providers/DialogProvider.js +24 -20
  94. package/dist/granular/ui/providers/DialogProvider.js.map +1 -1
  95. package/dist/index.cjs +144 -144
  96. package/dist/index.cjs.map +1 -1
  97. package/dist/index.js +5780 -5486
  98. package/dist/index.js.map +1 -1
  99. package/dist/react-design-system.css +1 -1
  100. package/dist/server/index.cjs +7 -7
  101. package/dist/server/index.cjs.map +1 -1
  102. package/dist/server/index.js +404 -384
  103. package/dist/server/index.js.map +1 -1
  104. package/dist/ui/components/Autocomplete/AutocompleteList.d.ts +4 -0
  105. package/dist/ui/components/Autocomplete/AutocompleteOption.d.ts +8 -0
  106. package/dist/ui/components/Breadcrumb/Breadcrumb.d.ts +0 -1
  107. package/dist/ui/components/ColorPicker/ColorPicker.d.ts +0 -1
  108. package/dist/ui/components/CommandPalette/CommandPalette.d.ts +0 -1
  109. package/dist/ui/components/DataGrid/DataGrid.d.ts +0 -1
  110. package/dist/ui/components/Dialog/DialogContent.d.ts +20 -1
  111. package/dist/ui/components/Drawer/Drawer.d.ts +0 -1
  112. package/dist/ui/components/Dropdown/Dropdown.d.ts +0 -1
  113. package/dist/ui/components/EmptyState/EmptyState.d.ts +0 -1
  114. package/dist/ui/components/FileUpload/FileUpload.d.ts +0 -1
  115. package/dist/ui/components/Form/FormField.d.ts +7 -0
  116. package/dist/ui/components/Header/Header.d.ts +1 -1
  117. package/dist/ui/components/Header/components/HeaderActions.d.ts +1 -1
  118. package/dist/ui/components/Header/components/HeaderHamburger.d.ts +1 -1
  119. package/dist/ui/components/Header/components/HeaderLogo.d.ts +1 -1
  120. package/dist/ui/components/Header/components/HeaderMobileMenu.d.ts +1 -1
  121. package/dist/ui/components/Header/components/HeaderNavigation.d.ts +1 -1
  122. package/dist/ui/components/Header/contexts/HeaderContext.d.ts +1 -1
  123. package/dist/ui/components/Menu/Menu.d.ts +0 -1
  124. package/dist/ui/components/Modal/Modal.d.ts +1 -2
  125. package/dist/ui/components/Navigation/Navigation.d.ts +1 -1
  126. package/dist/ui/components/PageHeader/PageHeader.d.ts +1 -1
  127. package/dist/ui/components/Pagination/Pagination.d.ts +0 -1
  128. package/dist/ui/components/Popover/Popover.d.ts +0 -1
  129. package/dist/ui/components/Rating/Rating.d.ts +0 -1
  130. package/dist/ui/components/SearchInput/SearchInput.d.ts +0 -1
  131. package/dist/ui/components/Stepper/Stepper.d.ts +0 -1
  132. package/dist/ui/components/Table/TableActions/TableActions.d.ts +0 -1
  133. package/dist/ui/components/Table/TableFilters/TableFilters.d.ts +0 -1
  134. package/dist/ui/components/Table/TablePagination/TablePagination.d.ts +0 -1
  135. package/dist/ui/components/TimePicker/TimePicker.d.ts +0 -1
  136. package/dist/ui/components/Timeline/Timeline.d.ts +0 -1
  137. package/dist/ui/primitives/Checkbox/Checkbox.d.ts +0 -1
  138. package/dist/ui/primitives/Chip/Chip.d.ts +21 -0
  139. package/dist/ui/primitives/ErrorMessage/ErrorMessage.d.ts +0 -1
  140. package/dist/ui/primitives/Input/Input.d.ts +0 -1
  141. package/dist/ui/primitives/Label/Label.d.ts +0 -1
  142. package/dist/ui/primitives/NavLink/NavLink.d.ts +1 -1
  143. package/dist/ui/primitives/Radio/Radio.d.ts +0 -1
  144. package/dist/ui/primitives/Select/Select.d.ts +0 -1
  145. package/dist/ui/primitives/Skeleton/Skeleton.d.ts +0 -1
  146. package/dist/ui/primitives/Slider/Slider.d.ts +0 -1
  147. package/dist/ui/primitives/Switch/Switch.d.ts +0 -1
  148. package/dist/ui/primitives/Tooltip/Tooltip.d.ts +0 -1
  149. package/dist/ui/providers/DialogContext.d.ts +8 -0
  150. package/package.json +7 -7
@@ -1,48 +1,81 @@
1
1
  "use client";
2
- import { jsx as i, jsxs as c, Fragment as j } from "react/jsx-runtime";
3
- import d from "./Dialog.js";
4
- import { DialogContent as y } from "./DialogContent.js";
5
- import { DialogHeader as F } from "./DialogHeader.js";
6
- import { DialogFooter as h } from "./DialogFooter.js";
7
- import { Button as m } from "../../primitives/Button/Button.js";
8
- function q({
9
- open: e,
10
- defaultOpen: f,
11
- onOpenChange: r,
12
- title: o,
13
- description: s,
14
- confirmLabel: a = "Confirm",
15
- cancelLabel: u = "Cancel",
16
- variant: D = "default",
17
- onConfirm: l,
2
+ import { jsx as r, jsxs as h, Fragment as p } from "react/jsx-runtime";
3
+ import u from "./Dialog.js";
4
+ import { DialogContent as g } from "./DialogContent.js";
5
+ import { DialogHeader as D } from "./DialogHeader.js";
6
+ import { DialogFooter as v } from "./DialogFooter.js";
7
+ import { useDialogContext as x } from "../../providers/DialogContext.js";
8
+ import { Button as f } from "../../primitives/Button/Button.js";
9
+ function k({
10
+ title: l,
11
+ description: i,
12
+ confirmLabel: n = "Confirm",
13
+ cancelLabel: a = "Cancel",
14
+ variant: c = "default",
15
+ onConfirm: e,
18
16
  onCancel: t,
19
- children: v
17
+ children: s
20
18
  }) {
21
- const k = () => {
22
- l == null || l(), r == null || r(!1);
23
- }, x = () => {
24
- t == null || t(), r == null || r(!1);
19
+ const { onClose: o } = x(), d = () => {
20
+ e == null || e(), o();
21
+ }, m = () => {
22
+ t == null || t(), o();
25
23
  };
26
- return /* @__PURE__ */ i(d, { open: e, defaultOpen: f, onOpenChange: r, children: /* @__PURE__ */ i(y, { size: "sm", closeOnOverlayClick: !1, children: v || /* @__PURE__ */ c(j, { children: [
27
- /* @__PURE__ */ c(F, { children: [
28
- /* @__PURE__ */ i(d.Title, { children: o }),
29
- s && /* @__PURE__ */ i(d.Description, { children: s })
30
- ] }),
31
- /* @__PURE__ */ c(h, { children: [
32
- /* @__PURE__ */ i(m, { variant: "outline", onClick: x, children: u }),
33
- /* @__PURE__ */ i(
34
- m,
35
- {
36
- variant: D === "destructive" ? "error" : "primary",
37
- onClick: k,
38
- children: a
39
- }
40
- )
41
- ] })
42
- ] }) }) });
24
+ return /* @__PURE__ */ r(
25
+ g,
26
+ {
27
+ size: "sm",
28
+ closeOnOverlayClick: !1,
29
+ showCloseButton: !1,
30
+ children: s || /* @__PURE__ */ h(p, { children: [
31
+ /* @__PURE__ */ h(D, { children: [
32
+ /* @__PURE__ */ r(u.Title, { children: l }),
33
+ i && /* @__PURE__ */ r(u.Description, { children: i })
34
+ ] }),
35
+ /* @__PURE__ */ h(v, { children: [
36
+ /* @__PURE__ */ r(f, { variant: "outline", onClick: m, children: a }),
37
+ /* @__PURE__ */ r(
38
+ f,
39
+ {
40
+ variant: c === "destructive" ? "error" : "primary",
41
+ onClick: d,
42
+ children: n
43
+ }
44
+ )
45
+ ] })
46
+ ] })
47
+ }
48
+ );
49
+ }
50
+ function w({
51
+ open: l,
52
+ defaultOpen: i,
53
+ onOpenChange: n,
54
+ title: a,
55
+ description: c,
56
+ confirmLabel: e,
57
+ cancelLabel: t,
58
+ variant: s,
59
+ onConfirm: o,
60
+ onCancel: d,
61
+ children: m
62
+ }) {
63
+ return /* @__PURE__ */ r(u, { open: l, defaultOpen: i, onOpenChange: n, children: /* @__PURE__ */ r(
64
+ k,
65
+ {
66
+ title: a,
67
+ description: c,
68
+ confirmLabel: e,
69
+ cancelLabel: t,
70
+ variant: s,
71
+ onConfirm: o,
72
+ onCancel: d,
73
+ children: m
74
+ }
75
+ ) });
43
76
  }
44
77
  export {
45
- q as AlertDialog,
46
- q as default
78
+ w as AlertDialog,
79
+ w as default
47
80
  };
48
81
  //# sourceMappingURL=AlertDialog.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AlertDialog.js","sources":["../../../../../src/ui/components/Dialog/AlertDialog.tsx"],"sourcesContent":["\"use client\";\n\nimport { type ReactNode } from \"react\";\nimport Dialog from \"./Dialog\";\nimport { DialogContent } from \"./DialogContent\";\nimport { DialogHeader } from \"./DialogHeader\";\nimport { DialogFooter } from \"./DialogFooter\";\nimport Button from \"../../primitives/Button/Button\";\n\nexport interface AlertDialogProps {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n title: string;\n description?: string;\n confirmLabel?: string;\n cancelLabel?: string;\n variant?: \"default\" | \"destructive\";\n onConfirm?: () => void;\n onCancel?: () => void;\n children?: ReactNode;\n}\n\n/**\n * AlertDialog Component\n *\n * A specialized dialog for confirmations and alerts.\n * Built on top of Dialog with pre-configured layout.\n *\n * @example\n * ```tsx\n * <AlertDialog\n * open={isOpen}\n * onOpenChange={setIsOpen}\n * title=\"Delete Item\"\n * description=\"Are you sure? This action cannot be undone.\"\n * variant=\"destructive\"\n * onConfirm={handleDelete}\n * />\n * ```\n */\nexport function AlertDialog({\n open,\n defaultOpen,\n onOpenChange,\n title,\n description,\n confirmLabel = \"Confirm\",\n cancelLabel = \"Cancel\",\n variant = \"default\",\n onConfirm,\n onCancel,\n children,\n}: AlertDialogProps) {\n const handleConfirm = () => {\n onConfirm?.();\n onOpenChange?.(false);\n };\n\n const handleCancel = () => {\n onCancel?.();\n onOpenChange?.(false);\n };\n\n return (\n <Dialog open={open} defaultOpen={defaultOpen} onOpenChange={onOpenChange}>\n <DialogContent size=\"sm\" closeOnOverlayClick={false}>\n {children || (\n <>\n <DialogHeader>\n <Dialog.Title>{title}</Dialog.Title>\n {description && (\n <Dialog.Description>{description}</Dialog.Description>\n )}\n </DialogHeader>\n <DialogFooter>\n <Button variant=\"outline\" onClick={handleCancel}>\n {cancelLabel}\n </Button>\n <Button\n variant={variant === \"destructive\" ? \"error\" : \"primary\"}\n onClick={handleConfirm}\n >\n {confirmLabel}\n </Button>\n </DialogFooter>\n </>\n )}\n </DialogContent>\n </Dialog>\n );\n}\n\nexport default AlertDialog;\n"],"names":["AlertDialog","open","defaultOpen","onOpenChange","title","description","confirmLabel","cancelLabel","variant","onConfirm","onCancel","children","handleConfirm","handleCancel","jsx","Dialog","DialogContent","jsxs","Fragment","DialogHeader","DialogFooter","Button"],"mappings":";;;;;;;AAyCO,SAASA,EAAY;AAAA,EAC1B,MAAAC;AAAA,EACA,aAAAC;AAAA,EACA,cAAAC;AAAA,EACA,OAAAC;AAAA,EACA,aAAAC;AAAA,EACA,cAAAC,IAAe;AAAA,EACf,aAAAC,IAAc;AAAA,EACd,SAAAC,IAAU;AAAA,EACV,WAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC;AACF,GAAqB;AACnB,QAAMC,IAAgB,MAAM;AAC1B,IAAAH,KAAA,QAAAA,KACAN,KAAA,QAAAA,EAAe;AAAA,EACjB,GAEMU,IAAe,MAAM;AACzB,IAAAH,KAAA,QAAAA,KACAP,KAAA,QAAAA,EAAe;AAAA,EACjB;AAEA,SACE,gBAAAW,EAACC,GAAA,EAAO,MAAAd,GAAY,aAAAC,GAA0B,cAAAC,GAC5C,UAAA,gBAAAW,EAACE,GAAA,EAAc,MAAK,MAAK,qBAAqB,IAC3C,UAAAL,KACC,gBAAAM,EAAAC,GAAA,EACE,UAAA;AAAA,IAAA,gBAAAD,EAACE,GAAA,EACC,UAAA;AAAA,MAAA,gBAAAL,EAACC,EAAO,OAAP,EAAc,UAAAX,EAAA,CAAM;AAAA,MACpBC,KACC,gBAAAS,EAACC,EAAO,aAAP,EAAoB,UAAAV,EAAA,CAAY;AAAA,IAAA,GAErC;AAAA,sBACCe,GAAA,EACC,UAAA;AAAA,MAAA,gBAAAN,EAACO,GAAA,EAAO,SAAQ,WAAU,SAASR,GAChC,UAAAN,GACH;AAAA,MACA,gBAAAO;AAAA,QAACO;AAAA,QAAA;AAAA,UACC,SAASb,MAAY,gBAAgB,UAAU;AAAA,UAC/C,SAASI;AAAA,UAER,UAAAN;AAAA,QAAA;AAAA,MAAA;AAAA,IACH,EAAA,CACF;AAAA,EAAA,EAAA,CACF,GAEJ,GACF;AAEJ;"}
1
+ {"version":3,"file":"AlertDialog.js","sources":["../../../../../src/ui/components/Dialog/AlertDialog.tsx"],"sourcesContent":["\"use client\";\n\nimport { type ReactNode } from \"react\";\nimport Dialog from \"./Dialog\";\nimport { DialogContent } from \"./DialogContent\";\nimport { DialogHeader } from \"./DialogHeader\";\nimport { DialogFooter } from \"./DialogFooter\";\nimport { useDialogContext } from \"../../providers/DialogContext\";\nimport Button from \"../../primitives/Button/Button\";\n\nexport interface AlertDialogProps {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n title: string;\n description?: string;\n confirmLabel?: string;\n cancelLabel?: string;\n variant?: \"default\" | \"destructive\";\n onConfirm?: () => void;\n onCancel?: () => void;\n children?: ReactNode;\n}\n\ntype AlertDialogBodyProps = Pick<\n AlertDialogProps,\n | \"title\"\n | \"description\"\n | \"confirmLabel\"\n | \"cancelLabel\"\n | \"variant\"\n | \"onConfirm\"\n | \"onCancel\"\n | \"children\"\n>;\n\n/**\n * Inner body rendered as a child of <Dialog> so it can read the dialog\n * context. Closing MUST go through context `onClose` (not the external\n * `onOpenChange` prop): in uncontrolled mode `onOpenChange` is undefined,\n * so the old `onOpenChange?.(false)` was a no-op and the alert could\n * never be dismissed by its own buttons. `onClose` closes in BOTH modes\n * (it calls the provider's setIsOpen, which drives uncontrolled state and\n * still notifies a controlled consumer's onOpenChange).\n */\nfunction AlertDialogBody({\n title,\n description,\n confirmLabel = \"Confirm\",\n cancelLabel = \"Cancel\",\n variant = \"default\",\n onConfirm,\n onCancel,\n children,\n}: AlertDialogBodyProps) {\n const { onClose } = useDialogContext();\n\n const handleConfirm = () => {\n onConfirm?.();\n onClose();\n };\n\n const handleCancel = () => {\n onCancel?.();\n onClose();\n };\n\n // AlertDialog is a decision gate: the user must pick Confirm or\n // Cancel, so it suppresses the auto ✕ (showCloseButton={false}) and\n // overlay-click — consistent with its existing no-dismiss-affordance\n // contract. DialogContent now renders the ✕ by default (issue #221).\n return (\n <DialogContent\n size=\"sm\"\n closeOnOverlayClick={false}\n showCloseButton={false}\n >\n {children || (\n <>\n <DialogHeader>\n <Dialog.Title>{title}</Dialog.Title>\n {description && (\n <Dialog.Description>{description}</Dialog.Description>\n )}\n </DialogHeader>\n <DialogFooter>\n <Button variant=\"outline\" onClick={handleCancel}>\n {cancelLabel}\n </Button>\n <Button\n variant={variant === \"destructive\" ? \"error\" : \"primary\"}\n onClick={handleConfirm}\n >\n {confirmLabel}\n </Button>\n </DialogFooter>\n </>\n )}\n </DialogContent>\n );\n}\n\n/**\n * AlertDialog Component\n *\n * A specialized dialog for confirmations and alerts.\n * Built on top of Dialog with pre-configured layout.\n *\n * @example\n * ```tsx\n * <AlertDialog\n * open={isOpen}\n * onOpenChange={setIsOpen}\n * title=\"Delete Item\"\n * description=\"Are you sure? This action cannot be undone.\"\n * variant=\"destructive\"\n * onConfirm={handleDelete}\n * />\n * ```\n */\nexport function AlertDialog({\n open,\n defaultOpen,\n onOpenChange,\n title,\n description,\n confirmLabel,\n cancelLabel,\n variant,\n onConfirm,\n onCancel,\n children,\n}: AlertDialogProps) {\n return (\n <Dialog open={open} defaultOpen={defaultOpen} onOpenChange={onOpenChange}>\n <AlertDialogBody\n title={title}\n description={description}\n confirmLabel={confirmLabel}\n cancelLabel={cancelLabel}\n variant={variant}\n onConfirm={onConfirm}\n onCancel={onCancel}\n >\n {children}\n </AlertDialogBody>\n </Dialog>\n );\n}\n\nexport default AlertDialog;\n"],"names":["AlertDialogBody","title","description","confirmLabel","cancelLabel","variant","onConfirm","onCancel","children","onClose","useDialogContext","handleConfirm","handleCancel","jsx","DialogContent","jsxs","Fragment","DialogHeader","Dialog","DialogFooter","Button","AlertDialog","open","defaultOpen","onOpenChange"],"mappings":";;;;;;;;AA6CA,SAASA,EAAgB;AAAA,EACvB,OAAAC;AAAA,EACA,aAAAC;AAAA,EACA,cAAAC,IAAe;AAAA,EACf,aAAAC,IAAc;AAAA,EACd,SAAAC,IAAU;AAAA,EACV,WAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC;AACF,GAAyB;AACvB,QAAM,EAAE,SAAAC,EAAA,IAAYC,EAAA,GAEdC,IAAgB,MAAM;AAC1B,IAAAL,KAAA,QAAAA,KACAG,EAAA;AAAA,EACF,GAEMG,IAAe,MAAM;AACzB,IAAAL,KAAA,QAAAA,KACAE,EAAA;AAAA,EACF;AAMA,SACE,gBAAAI;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,qBAAqB;AAAA,MACrB,iBAAiB;AAAA,MAEhB,eACC,gBAAAC,EAAAC,GAAA,EACE,UAAA;AAAA,QAAA,gBAAAD,EAACE,GAAA,EACC,UAAA;AAAA,UAAA,gBAAAJ,EAACK,EAAO,OAAP,EAAc,UAAAjB,EAAA,CAAM;AAAA,UACpBC,KACC,gBAAAW,EAACK,EAAO,aAAP,EAAoB,UAAAhB,EAAA,CAAY;AAAA,QAAA,GAErC;AAAA,0BACCiB,GAAA,EACC,UAAA;AAAA,UAAA,gBAAAN,EAACO,GAAA,EAAO,SAAQ,WAAU,SAASR,GAChC,UAAAR,GACH;AAAA,UACA,gBAAAS;AAAA,YAACO;AAAA,YAAA;AAAA,cACC,SAASf,MAAY,gBAAgB,UAAU;AAAA,cAC/C,SAASM;AAAA,cAER,UAAAR;AAAA,YAAA;AAAA,UAAA;AAAA,QACH,EAAA,CACF;AAAA,MAAA,EAAA,CACF;AAAA,IAAA;AAAA,EAAA;AAIR;AAoBO,SAASkB,EAAY;AAAA,EAC1B,MAAAC;AAAA,EACA,aAAAC;AAAA,EACA,cAAAC;AAAA,EACA,OAAAvB;AAAA,EACA,aAAAC;AAAA,EACA,cAAAC;AAAA,EACA,aAAAC;AAAA,EACA,SAAAC;AAAA,EACA,WAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC;AACF,GAAqB;AACnB,SACE,gBAAAK,EAACK,GAAA,EAAO,MAAAI,GAAY,aAAAC,GAA0B,cAAAC,GAC5C,UAAA,gBAAAX;AAAA,IAACb;AAAA,IAAA;AAAA,MACC,OAAAC;AAAA,MACA,aAAAC;AAAA,MACA,cAAAC;AAAA,MACA,aAAAC;AAAA,MACA,SAAAC;AAAA,MACA,WAAAC;AAAA,MACA,UAAAC;AAAA,MAEC,UAAAC;AAAA,IAAA;AAAA,EAAA,GAEL;AAEJ;"}
@@ -1,17 +1,17 @@
1
1
  "use client";
2
- var j = Object.defineProperty, D = Object.defineProperties;
3
- var F = Object.getOwnPropertyDescriptors;
2
+ var S = Object.defineProperty, T = Object.defineProperties;
3
+ var z = Object.getOwnPropertyDescriptors;
4
4
  var l = Object.getOwnPropertySymbols;
5
5
  var p = Object.prototype.hasOwnProperty, x = Object.prototype.propertyIsEnumerable;
6
- var c = (e, t, o) => t in e ? j(e, t, { enumerable: !0, configurable: !0, writable: !0, value: o }) : e[t] = o, g = (e, t) => {
6
+ var u = (e, t, o) => t in e ? S(e, t, { enumerable: !0, configurable: !0, writable: !0, value: o }) : e[t] = o, g = (e, t) => {
7
7
  for (var o in t || (t = {}))
8
- p.call(t, o) && c(e, o, t[o]);
8
+ p.call(t, o) && u(e, o, t[o]);
9
9
  if (l)
10
10
  for (var o of l(t))
11
- x.call(t, o) && c(e, o, t[o]);
11
+ x.call(t, o) && u(e, o, t[o]);
12
12
  return e;
13
- }, y = (e, t) => D(e, F(t));
14
- var v = (e, t) => {
13
+ }, v = (e, t) => T(e, z(t));
14
+ var y = (e, t) => {
15
15
  var o = {};
16
16
  for (var r in e)
17
17
  p.call(e, r) && t.indexOf(r) < 0 && (o[r] = e[r]);
@@ -20,58 +20,61 @@ var v = (e, t) => {
20
20
  t.indexOf(r) < 0 && x.call(e, r) && (o[r] = e[r]);
21
21
  return o;
22
22
  };
23
- import { jsxs as L, jsx as m } from "react/jsx-runtime";
24
- import { useRef as w, useEffect as S } from "react";
25
- import { createPortal as z } from "react-dom";
26
- import { useDialogContext as A } from "../../providers/DialogContext.js";
27
- import { useFocusTrap as O } from "../../hooks/useFocusTrap.js";
28
- import { useAutoFocus as P } from "../../hooks/useAutoFocus.js";
29
- import { getSpacingClass as C } from "../../tokens/spacing.js";
23
+ import { jsxs as w, jsx as m } from "react/jsx-runtime";
24
+ import { useRef as C, useEffect as A } from "react";
25
+ import { createPortal as O } from "react-dom";
26
+ import { useDialogContext as P } from "../../providers/DialogContext.js";
27
+ import { useFocusTrap as Z } from "../../hooks/useFocusTrap.js";
28
+ import { useAutoFocus as q } from "../../hooks/useAutoFocus.js";
29
+ import { getSpacingClass as h } from "../../tokens/spacing.js";
30
+ import { DialogClose as B } from "./DialogClose.js";
30
31
  import { getRadiusClass as b } from "../../tokens/radius.js";
31
- import { getShadowClass as T } from "../../tokens/shadows.js";
32
- import { getZIndexClass as Z } from "../../tokens/z-index.js";
33
- function Y(q) {
34
- var d = q, {
32
+ import { getShadowClass as G } from "../../tokens/shadows.js";
33
+ import { getZIndexClass as H } from "../../tokens/z-index.js";
34
+ function re(J) {
35
+ var d = J, {
35
36
  children: e,
36
37
  size: t = "md",
37
38
  closeOnOverlayClick: o = !0,
38
39
  closeOnEscape: r = !0,
39
- className: h = ""
40
- } = d, $ = v(d, [
40
+ showCloseButton: $ = !0,
41
+ className: k = ""
42
+ } = d, D = y(d, [
41
43
  "children",
42
44
  "size",
43
45
  "closeOnOverlayClick",
44
46
  "closeOnEscape",
47
+ "showCloseButton",
45
48
  "className"
46
49
  ]);
47
- const { isOpen: n, onClose: s, titleId: k, descriptionId: E } = A(), a = w(null), f = w(null);
48
- if (O(a, n), P(a, n), S(() => {
49
- if (!n || !r) return;
50
- const i = (R) => {
51
- R.key === "Escape" && s();
50
+ const { isOpen: i, onClose: s, titleId: E, descriptionId: I, hasTitle: N, hasDescription: R } = P(), a = C(null), c = C(null);
51
+ if (Z(a, i), q(a, i), A(() => {
52
+ if (!i || !r) return;
53
+ const n = (L) => {
54
+ L.key === "Escape" && s();
52
55
  };
53
- return document.addEventListener("keydown", i), () => {
54
- document.removeEventListener("keydown", i);
56
+ return document.addEventListener("keydown", n), () => {
57
+ document.removeEventListener("keydown", n);
55
58
  };
56
- }, [n, s, r]), !n) return null;
57
- const I = {
59
+ }, [i, s, r]), !i) return null;
60
+ const j = {
58
61
  sm: "max-w-sm",
59
62
  md: "max-w-md",
60
63
  lg: "max-w-lg",
61
64
  xl: "max-w-2xl",
62
- fullscreen: `max-w-full h-full ${C("none", "m")} ${b("none")}`
63
- }, N = (i) => {
64
- o && i.target === f.current && s();
65
- }, u = /* @__PURE__ */ L(
65
+ fullscreen: `max-w-full h-full ${h("none", "m")} ${b("none")}`
66
+ }, F = (n) => {
67
+ o && n.target === c.current && s();
68
+ }, f = /* @__PURE__ */ w(
66
69
  "div",
67
70
  {
68
- className: `fixed inset-0 ${Z("modal")} overflow-y-auto`,
69
- onClick: N,
71
+ className: `fixed inset-0 ${H("modal")} overflow-y-auto`,
72
+ onClick: F,
70
73
  children: [
71
74
  /* @__PURE__ */ m(
72
75
  "div",
73
76
  {
74
- ref: f,
77
+ ref: c,
75
78
  className: "fixed inset-0 bg-scrim transition-opacity",
76
79
  "aria-hidden": "true"
77
80
  }
@@ -79,26 +82,29 @@ function Y(q) {
79
82
  /* @__PURE__ */ m(
80
83
  "div",
81
84
  {
82
- className: `flex min-h-full items-center justify-center ${C("base", "p")}`,
83
- children: /* @__PURE__ */ m(
85
+ className: `flex min-h-full items-center justify-center ${h("base", "p")}`,
86
+ children: /* @__PURE__ */ w(
84
87
  "div",
85
- y(g({
88
+ v(g({
86
89
  ref: a,
87
90
  role: "dialog",
88
91
  "aria-modal": "true",
89
- "aria-labelledby": k,
90
- "aria-describedby": E,
92
+ "aria-labelledby": N ? E : void 0,
93
+ "aria-describedby": R ? I : void 0,
91
94
  className: `
92
95
  relative w-full
93
- ${I[t]}
96
+ ${j[t]}
94
97
  bg-surface-overlay
95
98
  ${b("lg")}
96
- ${T("xl")}
97
- ${h}
99
+ ${G("xl")}
100
+ ${k}
98
101
  `,
99
102
  tabIndex: -1
100
- }, $), {
101
- children: e
103
+ }, D), {
104
+ children: [
105
+ e,
106
+ $ && /* @__PURE__ */ m(B, {})
107
+ ]
102
108
  })
103
109
  )
104
110
  }
@@ -106,9 +112,9 @@ function Y(q) {
106
112
  ]
107
113
  }
108
114
  );
109
- return typeof window != "undefined" ? z(u, document.body) : u;
115
+ return typeof window != "undefined" ? O(f, document.body) : f;
110
116
  }
111
117
  export {
112
- Y as DialogContent
118
+ re as DialogContent
113
119
  };
114
120
  //# sourceMappingURL=DialogContent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DialogContent.js","sources":["../../../../../src/ui/components/Dialog/DialogContent.tsx"],"sourcesContent":["\"use client\";\n\nimport { useEffect, useRef, type HTMLAttributes, type ReactNode } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { useDialogContext } from \"../../providers/DialogContext\";\nimport { useFocusTrap } from \"../../hooks/useFocusTrap\";\nimport { useAutoFocus } from \"../../hooks/useAutoFocus\";\nimport { getRadiusClass, getShadowClass, getZIndexClass } from \"../../tokens\";\nimport { getSpacingClass } from \"../../tokens/spacing\";\n\nexport interface DialogContentProps extends Omit<\n HTMLAttributes<HTMLDivElement>,\n \"role\"\n> {\n children: ReactNode;\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\" | \"fullscreen\";\n closeOnOverlayClick?: boolean;\n closeOnEscape?: boolean;\n}\n\nexport function DialogContent({\n children,\n size = \"md\",\n closeOnOverlayClick = true,\n closeOnEscape = true,\n className = \"\",\n ...props\n}: DialogContentProps) {\n const { isOpen, onClose, titleId, descriptionId } = useDialogContext();\n const contentRef = useRef<HTMLDivElement>(null);\n const overlayRef = useRef<HTMLDivElement>(null);\n\n // Modal focus contract — Tab cycling + auto-focus, consumed from the\n // shared hooks introduced in Phase 3 PR 1. Replaces an inline\n // implementation that duplicated the selector / disabled-and-hidden\n // filter / boundary-check logic verbatim. The hook variant ALSO\n // closes a focus-outside-container gap the inline trap silently had\n // (it relied on auto-focus running first to mask it); the hook\n // pulls focus back to the trap edge regardless. Focus restore on\n // close is the separate concern of `useFocusRestore`, consumed in\n // `DialogProvider`.\n useFocusTrap(contentRef, isOpen);\n useAutoFocus(contentRef, isOpen);\n\n // ESC handling stays inline — gated by the per-Dialog `closeOnEscape`\n // prop, which the shared hooks intentionally don't know about. Same\n // shape as Drawer's parallel handler.\n useEffect(() => {\n if (!isOpen || !closeOnEscape) return;\n\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") {\n onClose();\n }\n };\n\n document.addEventListener(\"keydown\", handleEscape);\n return () => {\n document.removeEventListener(\"keydown\", handleEscape);\n };\n }, [isOpen, onClose, closeOnEscape]);\n\n if (!isOpen) return null;\n\n const sizeClasses = {\n sm: \"max-w-sm\",\n md: \"max-w-md\",\n lg: \"max-w-lg\",\n xl: \"max-w-2xl\",\n fullscreen: `max-w-full h-full ${getSpacingClass(\"none\", \"m\")} ${getRadiusClass(\"none\")}`,\n };\n\n const handleOverlayClick = (e: React.MouseEvent<HTMLDivElement>) => {\n if (closeOnOverlayClick && e.target === overlayRef.current) {\n onClose();\n }\n };\n\n const dialogContent = (\n <div\n className={`fixed inset-0 ${getZIndexClass(\"modal\")} overflow-y-auto`}\n onClick={handleOverlayClick}\n >\n {/* Overlay */}\n <div\n ref={overlayRef}\n className=\"fixed inset-0 bg-scrim transition-opacity\"\n aria-hidden=\"true\"\n />\n\n {/* Dialog */}\n <div\n className={`flex min-h-full items-center justify-center ${getSpacingClass(\"base\", \"p\")}`}\n >\n <div\n ref={contentRef}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={titleId}\n aria-describedby={descriptionId}\n className={`\n relative w-full\n ${sizeClasses[size]}\n bg-surface-overlay\n ${getRadiusClass(\"lg\")}\n ${getShadowClass(\"xl\")}\n ${className}\n `}\n tabIndex={-1}\n {...props}\n >\n {children}\n </div>\n </div>\n </div>\n );\n\n // Portal rendering\n if (typeof window !== \"undefined\") {\n return createPortal(dialogContent, document.body);\n }\n\n return dialogContent;\n}\n"],"names":["DialogContent","_a","_b","children","size","closeOnOverlayClick","closeOnEscape","className","props","__objRest","isOpen","onClose","titleId","descriptionId","useDialogContext","contentRef","useRef","overlayRef","useFocusTrap","useAutoFocus","useEffect","handleEscape","e","sizeClasses","getSpacingClass","getRadiusClass","handleOverlayClick","dialogContent","jsxs","getZIndexClass","jsx","__spreadProps","__spreadValues","getShadowClass","createPortal"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoBO,SAASA,EAAcC,GAOP;AAPO,MAAAC,IAAAD,GAC5B;AAAA,cAAAE;AAAA,IACA,MAAAC,IAAO;AAAA,IACP,qBAAAC,IAAsB;AAAA,IACtB,eAAAC,IAAgB;AAAA,IAChB,WAAAC,IAAY;AAAA,MALgBL,GAMzBM,IAAAC,EANyBP,GAMzB;AAAA,IALH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAGA,QAAM,EAAE,QAAAQ,GAAQ,SAAAC,GAAS,SAAAC,GAAS,eAAAC,EAAA,IAAkBC,EAAA,GAC9CC,IAAaC,EAAuB,IAAI,GACxCC,IAAaD,EAAuB,IAAI;AAgC9C,MArBAE,EAAaH,GAAYL,CAAM,GAC/BS,EAAaJ,GAAYL,CAAM,GAK/BU,EAAU,MAAM;AACd,QAAI,CAACV,KAAU,CAACJ,EAAe;AAE/B,UAAMe,IAAe,CAACC,MAAqB;AACzC,MAAIA,EAAE,QAAQ,YACZX,EAAA;AAAA,IAEJ;AAEA,oBAAS,iBAAiB,WAAWU,CAAY,GAC1C,MAAM;AACX,eAAS,oBAAoB,WAAWA,CAAY;AAAA,IACtD;AAAA,EACF,GAAG,CAACX,GAAQC,GAASL,CAAa,CAAC,GAE/B,CAACI,EAAQ,QAAO;AAEpB,QAAMa,IAAc;AAAA,IAClB,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,YAAY,qBAAqBC,EAAgB,QAAQ,GAAG,CAAC,IAAIC,EAAe,MAAM,CAAC;AAAA,EAAA,GAGnFC,IAAqB,CAACJ,MAAwC;AAClE,IAAIjB,KAAuBiB,EAAE,WAAWL,EAAW,WACjDN,EAAA;AAAA,EAEJ,GAEMgB,IACJ,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW,iBAAiBC,EAAe,OAAO,CAAC;AAAA,MACnD,SAASH;AAAA,MAGT,UAAA;AAAA,QAAA,gBAAAI;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,KAAKb;AAAA,YACL,WAAU;AAAA,YACV,eAAY;AAAA,UAAA;AAAA,QAAA;AAAA,QAId,gBAAAa;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAW,+CAA+CN,EAAgB,QAAQ,GAAG,CAAC;AAAA,YAEtF,UAAA,gBAAAM;AAAA,cAAC;AAAA,cAAAC,EAAAC,EAAA;AAAA,gBACC,KAAKjB;AAAA,gBACL,MAAK;AAAA,gBACL,cAAW;AAAA,gBACX,mBAAiBH;AAAA,gBACjB,oBAAkBC;AAAA,gBAClB,WAAW;AAAA;AAAA,cAEPU,EAAYnB,CAAI,CAAC;AAAA;AAAA,cAEjBqB,EAAe,IAAI,CAAC;AAAA,cACpBQ,EAAe,IAAI,CAAC;AAAA,cACpB1B,CAAS;AAAA;AAAA,gBAEb,UAAU;AAAA,iBACNC,IAfL;AAAA,gBAiBE,UAAAL;AAAA,cAAA;AAAA,YAAA;AAAA,UACH;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,EAAA;AAKJ,SAAI,OAAO,UAAW,cACb+B,EAAaP,GAAe,SAAS,IAAI,IAG3CA;AACT;"}
1
+ {"version":3,"file":"DialogContent.js","sources":["../../../../../src/ui/components/Dialog/DialogContent.tsx"],"sourcesContent":["\"use client\";\n\nimport { useEffect, useRef, type HTMLAttributes, type ReactNode } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { useDialogContext } from \"../../providers/DialogContext\";\nimport { useFocusTrap } from \"../../hooks/useFocusTrap\";\nimport { useAutoFocus } from \"../../hooks/useAutoFocus\";\nimport { getRadiusClass, getShadowClass, getZIndexClass } from \"../../tokens\";\nimport { getSpacingClass } from \"../../tokens/spacing\";\nimport { DialogClose } from \"./DialogClose\";\n\nexport interface DialogContentProps extends Omit<\n HTMLAttributes<HTMLDivElement>,\n \"role\"\n> {\n children: ReactNode;\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\" | \"fullscreen\";\n closeOnOverlayClick?: boolean;\n closeOnEscape?: boolean;\n /**\n * Render the built-in close (✕) button in the top-right corner.\n *\n * Defaults to `true`, matching `Modal` and the house overlay\n * convention (`Drawer` / `Popover` expose the same prop). Set `false`\n * for **non-dismissable** dialogs where the consumer owns dismissal —\n * LGPD consent gates, destructive confirmations with escalating\n * friction, or guided wizards where a stray ✕ would abandon the flow.\n *\n * When `true`, do NOT also place an explicit `<Dialog.Close />` inside\n * the content: that compound is for *custom placement* (e.g. a close\n * affordance inside the footer) and would render a duplicate ✕. Use\n * one or the other.\n *\n * Suppressing the ✕ only removes the button — ESC and overlay-click\n * still close. For a fully non-dismissable dialog, pair this with\n * `closeOnEscape={false}` and `closeOnOverlayClick={false}`.\n */\n showCloseButton?: boolean;\n}\n\nexport function DialogContent({\n children,\n size = \"md\",\n closeOnOverlayClick = true,\n closeOnEscape = true,\n showCloseButton = true,\n className = \"\",\n ...props\n}: DialogContentProps) {\n const { isOpen, onClose, titleId, descriptionId, hasTitle, hasDescription } =\n useDialogContext();\n const contentRef = useRef<HTMLDivElement>(null);\n const overlayRef = useRef<HTMLDivElement>(null);\n\n // Modal focus contract — Tab cycling + auto-focus, consumed from the\n // shared hooks introduced in Phase 3 PR 1. Replaces an inline\n // implementation that duplicated the selector / disabled-and-hidden\n // filter / boundary-check logic verbatim. The hook variant ALSO\n // closes a focus-outside-container gap the inline trap silently had\n // (it relied on auto-focus running first to mask it); the hook\n // pulls focus back to the trap edge regardless. Focus restore on\n // close is the separate concern of `useFocusRestore`, consumed in\n // `DialogProvider`.\n useFocusTrap(contentRef, isOpen);\n useAutoFocus(contentRef, isOpen);\n\n // ESC handling stays inline — gated by the per-Dialog `closeOnEscape`\n // prop, which the shared hooks intentionally don't know about. Same\n // shape as Drawer's parallel handler.\n useEffect(() => {\n if (!isOpen || !closeOnEscape) return;\n\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") {\n onClose();\n }\n };\n\n document.addEventListener(\"keydown\", handleEscape);\n return () => {\n document.removeEventListener(\"keydown\", handleEscape);\n };\n }, [isOpen, onClose, closeOnEscape]);\n\n if (!isOpen) return null;\n\n const sizeClasses = {\n sm: \"max-w-sm\",\n md: \"max-w-md\",\n lg: \"max-w-lg\",\n xl: \"max-w-2xl\",\n fullscreen: `max-w-full h-full ${getSpacingClass(\"none\", \"m\")} ${getRadiusClass(\"none\")}`,\n };\n\n const handleOverlayClick = (e: React.MouseEvent<HTMLDivElement>) => {\n if (closeOnOverlayClick && e.target === overlayRef.current) {\n onClose();\n }\n };\n\n const dialogContent = (\n <div\n className={`fixed inset-0 ${getZIndexClass(\"modal\")} overflow-y-auto`}\n onClick={handleOverlayClick}\n >\n {/* Overlay */}\n <div\n ref={overlayRef}\n className=\"fixed inset-0 bg-scrim transition-opacity\"\n aria-hidden=\"true\"\n />\n\n {/* Dialog */}\n <div\n className={`flex min-h-full items-center justify-center ${getSpacingClass(\"base\", \"p\")}`}\n >\n <div\n ref={contentRef}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={hasTitle ? titleId : undefined}\n aria-describedby={hasDescription ? descriptionId : undefined}\n className={`\n relative w-full\n ${sizeClasses[size]}\n bg-surface-overlay\n ${getRadiusClass(\"lg\")}\n ${getShadowClass(\"xl\")}\n ${className}\n `}\n tabIndex={-1}\n {...props}\n >\n {children}\n {/*\n The ✕ is rendered LAST in the DOM (after children) but\n positioned absolute top-right by DialogClose, so it never\n steals the \"first focusable\" auto-focus target from the\n content/form — same ordering shadcn/Radix use. Reuses the\n DialogClose compound so the close affordance has a single\n implementation (icon button + aria-label + context onClose).\n */}\n {showCloseButton && <DialogClose />}\n </div>\n </div>\n </div>\n );\n\n // Portal rendering\n if (typeof window !== \"undefined\") {\n return createPortal(dialogContent, document.body);\n }\n\n return dialogContent;\n}\n"],"names":["DialogContent","_a","_b","children","size","closeOnOverlayClick","closeOnEscape","showCloseButton","className","props","__objRest","isOpen","onClose","titleId","descriptionId","hasTitle","hasDescription","useDialogContext","contentRef","useRef","overlayRef","useFocusTrap","useAutoFocus","useEffect","handleEscape","e","sizeClasses","getSpacingClass","getRadiusClass","handleOverlayClick","dialogContent","jsxs","getZIndexClass","jsx","__spreadProps","__spreadValues","getShadowClass","DialogClose","createPortal"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwCO,SAASA,GAAcC,GAQP;AARO,MAAAC,IAAAD,GAC5B;AAAA,cAAAE;AAAA,IACA,MAAAC,IAAO;AAAA,IACP,qBAAAC,IAAsB;AAAA,IACtB,eAAAC,IAAgB;AAAA,IAChB,iBAAAC,IAAkB;AAAA,IAClB,WAAAC,IAAY;AAAA,MANgBN,GAOzBO,IAAAC,EAPyBR,GAOzB;AAAA,IANH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAGA,QAAM,EAAE,QAAAS,GAAQ,SAAAC,GAAS,SAAAC,GAAS,eAAAC,GAAe,UAAAC,GAAU,gBAAAC,EAAA,IACzDC,EAAA,GACIC,IAAaC,EAAuB,IAAI,GACxCC,IAAaD,EAAuB,IAAI;AAgC9C,MArBAE,EAAaH,GAAYP,CAAM,GAC/BW,EAAaJ,GAAYP,CAAM,GAK/BY,EAAU,MAAM;AACd,QAAI,CAACZ,KAAU,CAACL,EAAe;AAE/B,UAAMkB,IAAe,CAACC,MAAqB;AACzC,MAAIA,EAAE,QAAQ,YACZb,EAAA;AAAA,IAEJ;AAEA,oBAAS,iBAAiB,WAAWY,CAAY,GAC1C,MAAM;AACX,eAAS,oBAAoB,WAAWA,CAAY;AAAA,IACtD;AAAA,EACF,GAAG,CAACb,GAAQC,GAASN,CAAa,CAAC,GAE/B,CAACK,EAAQ,QAAO;AAEpB,QAAMe,IAAc;AAAA,IAClB,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,YAAY,qBAAqBC,EAAgB,QAAQ,GAAG,CAAC,IAAIC,EAAe,MAAM,CAAC;AAAA,EAAA,GAGnFC,IAAqB,CAACJ,MAAwC;AAClE,IAAIpB,KAAuBoB,EAAE,WAAWL,EAAW,WACjDR,EAAA;AAAA,EAEJ,GAEMkB,IACJ,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW,iBAAiBC,EAAe,OAAO,CAAC;AAAA,MACnD,SAASH;AAAA,MAGT,UAAA;AAAA,QAAA,gBAAAI;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,KAAKb;AAAA,YACL,WAAU;AAAA,YACV,eAAY;AAAA,UAAA;AAAA,QAAA;AAAA,QAId,gBAAAa;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAW,+CAA+CN,EAAgB,QAAQ,GAAG,CAAC;AAAA,YAEtF,UAAA,gBAAAI;AAAA,cAAC;AAAA,cAAAG,EAAAC,EAAA;AAAA,gBACC,KAAKjB;AAAA,gBACL,MAAK;AAAA,gBACL,cAAW;AAAA,gBACX,mBAAiBH,IAAWF,IAAU;AAAA,gBACtC,oBAAkBG,IAAiBF,IAAgB;AAAA,gBACnD,WAAW;AAAA;AAAA,cAEPY,EAAYtB,CAAI,CAAC;AAAA;AAAA,cAEjBwB,EAAe,IAAI,CAAC;AAAA,cACpBQ,EAAe,IAAI,CAAC;AAAA,cACpB5B,CAAS;AAAA;AAAA,gBAEb,UAAU;AAAA,iBACNC,IAfL;AAAA,gBAiBE,UAAA;AAAA,kBAAAN;AAAA,kBASAI,uBAAoB8B,GAAA,CAAA,CAAY;AAAA,gBAAA;AAAA,cAAA;AAAA,YAAA;AAAA,UACnC;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,EAAA;AAKJ,SAAI,OAAO,UAAW,cACbC,EAAaR,GAAe,SAAS,IAAI,IAG3CA;AACT;"}
@@ -1,51 +1,51 @@
1
1
  "use client";
2
- var u = Object.defineProperty, x = Object.defineProperties;
3
- var y = Object.getOwnPropertyDescriptors;
2
+ var x = Object.defineProperty, y = Object.defineProperties;
3
+ var D = Object.getOwnPropertyDescriptors;
4
4
  var s = Object.getOwnPropertySymbols;
5
- var a = Object.prototype.hasOwnProperty, c = Object.prototype.propertyIsEnumerable;
6
- var n = (o, t, e) => t in o ? u(o, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : o[t] = e, m = (o, t) => {
7
- for (var e in t || (t = {}))
8
- a.call(t, e) && n(o, e, t[e]);
5
+ var a = Object.prototype.hasOwnProperty, m = Object.prototype.propertyIsEnumerable;
6
+ var p = (t, o, e) => o in t ? x(t, o, { enumerable: !0, configurable: !0, writable: !0, value: e }) : t[o] = e, d = (t, o) => {
7
+ for (var e in o || (o = {}))
8
+ a.call(o, e) && p(t, e, o[e]);
9
9
  if (s)
10
- for (var e of s(t))
11
- c.call(t, e) && n(o, e, t[e]);
12
- return o;
13
- }, p = (o, t) => x(o, y(t));
14
- var d = (o, t) => {
10
+ for (var e of s(o))
11
+ m.call(o, e) && p(t, e, o[e]);
12
+ return t;
13
+ }, f = (t, o) => y(t, D(o));
14
+ var l = (t, o) => {
15
15
  var e = {};
16
- for (var r in o)
17
- a.call(o, r) && t.indexOf(r) < 0 && (e[r] = o[r]);
18
- if (o != null && s)
19
- for (var r of s(o))
20
- t.indexOf(r) < 0 && c.call(o, r) && (e[r] = o[r]);
16
+ for (var r in t)
17
+ a.call(t, r) && o.indexOf(r) < 0 && (e[r] = t[r]);
18
+ if (t != null && s)
19
+ for (var r of s(t))
20
+ o.indexOf(r) < 0 && m.call(t, r) && (e[r] = t[r]);
21
21
  return e;
22
22
  };
23
23
  import { jsx as I } from "react/jsx-runtime";
24
- import { useId as D } from "react";
25
- import { useDialogContext as C } from "../../providers/DialogContext.js";
26
- import { getTypographyClasses as $ } from "../../tokens/typography.js";
27
- function k(b) {
28
- var i = b, {
29
- children: o,
30
- className: t = "",
24
+ import { useId as C, useEffect as $ } from "react";
25
+ import { useDialogContext as b } from "../../providers/DialogContext.js";
26
+ import { getTypographyClasses as h } from "../../tokens/typography.js";
27
+ function q(j) {
28
+ var i = j, {
29
+ children: t,
30
+ className: o = "",
31
31
  id: e
32
- } = i, r = d(i, [
32
+ } = i, r = l(i, [
33
33
  "children",
34
34
  "className",
35
35
  "id"
36
36
  ]);
37
- const l = C(), f = D(), g = e || l.descriptionId || f;
38
- return /* @__PURE__ */ I(
37
+ const n = b(), g = C(), u = e || n.descriptionId || g, { registerDescription: c } = n;
38
+ return $(() => c(), [c]), /* @__PURE__ */ I(
39
39
  "p",
40
- p(m({
41
- id: g,
42
- className: `${$("bodySmall")} text-fg-secondary ${t}`
40
+ f(d({
41
+ id: u,
42
+ className: `${h("bodySmall")} text-fg-secondary ${o}`
43
43
  }, r), {
44
- children: o
44
+ children: t
45
45
  })
46
46
  );
47
47
  }
48
48
  export {
49
- k as DialogDescription
49
+ q as DialogDescription
50
50
  };
51
51
  //# sourceMappingURL=DialogDescription.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DialogDescription.js","sources":["../../../../../src/ui/components/Dialog/DialogDescription.tsx"],"sourcesContent":["\"use client\";\n\nimport { useId, type HTMLAttributes } from \"react\";\nimport { useDialogContext } from \"../../providers/DialogContext\";\nimport { getTypographyClasses } from \"../../tokens\";\n\nexport type DialogDescriptionProps = HTMLAttributes<HTMLParagraphElement>;\n\nexport function DialogDescription({\n children,\n className = \"\",\n id,\n ...props\n}: DialogDescriptionProps) {\n const context = useDialogContext();\n const generatedId = useId();\n const finalId = id || context.descriptionId || generatedId;\n\n return (\n <p\n id={finalId}\n className={`${getTypographyClasses(\"bodySmall\")} text-fg-secondary ${className}`}\n {...props}\n >\n {children}\n </p>\n );\n}\n"],"names":["DialogDescription","_a","_b","children","className","id","props","__objRest","context","useDialogContext","generatedId","useId","finalId","jsx","__spreadProps","__spreadValues","getTypographyClasses"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAQO,SAASA,EAAkBC,GAKP;AALO,MAAAC,IAAAD,GAChC;AAAA,cAAAE;AAAA,IACA,WAAAC,IAAY;AAAA,IACZ,IAAAC;AAAA,MAHgCH,GAI7BI,IAAAC,EAJ6BL,GAI7B;AAAA,IAHH;AAAA,IACA;AAAA,IACA;AAAA;AAGA,QAAMM,IAAUC,EAAA,GACVC,IAAcC,EAAA,GACdC,IAAUP,KAAMG,EAAQ,iBAAiBE;AAE/C,SACE,gBAAAG;AAAA,IAAC;AAAA,IAAAC,EAAAC,EAAA;AAAA,MACC,IAAIH;AAAA,MACJ,WAAW,GAAGI,EAAqB,WAAW,CAAC,sBAAsBZ,CAAS;AAAA,OAC1EE,IAHL;AAAA,MAKE,UAAAH;AAAA,IAAA;AAAA,EAAA;AAGP;"}
1
+ {"version":3,"file":"DialogDescription.js","sources":["../../../../../src/ui/components/Dialog/DialogDescription.tsx"],"sourcesContent":["\"use client\";\n\nimport { useId, useEffect, type HTMLAttributes } from \"react\";\nimport { useDialogContext } from \"../../providers/DialogContext\";\nimport { getTypographyClasses } from \"../../tokens\";\n\nexport type DialogDescriptionProps = HTMLAttributes<HTMLParagraphElement>;\n\nexport function DialogDescription({\n children,\n className = \"\",\n id,\n ...props\n}: DialogDescriptionProps) {\n const context = useDialogContext();\n const generatedId = useId();\n const finalId = id || context.descriptionId || generatedId;\n\n // Tell the dialog a Description is present so it emits aria-describedby.\n const { registerDescription } = context;\n useEffect(() => registerDescription(), [registerDescription]);\n\n return (\n <p\n id={finalId}\n className={`${getTypographyClasses(\"bodySmall\")} text-fg-secondary ${className}`}\n {...props}\n >\n {children}\n </p>\n );\n}\n"],"names":["DialogDescription","_a","_b","children","className","id","props","__objRest","context","useDialogContext","generatedId","useId","finalId","registerDescription","useEffect","jsx","__spreadProps","__spreadValues","getTypographyClasses"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAQO,SAASA,EAAkBC,GAKP;AALO,MAAAC,IAAAD,GAChC;AAAA,cAAAE;AAAA,IACA,WAAAC,IAAY;AAAA,IACZ,IAAAC;AAAA,MAHgCH,GAI7BI,IAAAC,EAJ6BL,GAI7B;AAAA,IAHH;AAAA,IACA;AAAA,IACA;AAAA;AAGA,QAAMM,IAAUC,EAAA,GACVC,IAAcC,EAAA,GACdC,IAAUP,KAAMG,EAAQ,iBAAiBE,GAGzC,EAAE,qBAAAG,MAAwBL;AAChC,SAAAM,EAAU,MAAMD,KAAuB,CAACA,CAAmB,CAAC,GAG1D,gBAAAE;AAAA,IAAC;AAAA,IAAAC,EAAAC,EAAA;AAAA,MACC,IAAIL;AAAA,MACJ,WAAW,GAAGM,EAAqB,WAAW,CAAC,sBAAsBd,CAAS;AAAA,OAC1EE,IAHL;AAAA,MAKE,UAAAH;AAAA,IAAA;AAAA,EAAA;AAGP;"}
@@ -1,53 +1,53 @@
1
1
  "use client";
2
- var h = Object.defineProperty, x = Object.defineProperties;
3
- var I = Object.getOwnPropertyDescriptors;
2
+ var x = Object.defineProperty, I = Object.defineProperties;
3
+ var T = Object.getOwnPropertyDescriptors;
4
4
  var n = Object.getOwnPropertySymbols;
5
- var a = Object.prototype.hasOwnProperty, l = Object.prototype.propertyIsEnumerable;
6
- var s = (t, o, e) => o in t ? h(t, o, { enumerable: !0, configurable: !0, writable: !0, value: e }) : t[o] = e, m = (t, o) => {
7
- for (var e in o || (o = {}))
8
- a.call(o, e) && s(t, e, o[e]);
5
+ var c = Object.prototype.hasOwnProperty, m = Object.prototype.propertyIsEnumerable;
6
+ var l = (t, e, o) => e in t ? x(t, e, { enumerable: !0, configurable: !0, writable: !0, value: o }) : t[e] = o, f = (t, e) => {
7
+ for (var o in e || (e = {}))
8
+ c.call(e, o) && l(t, o, e[o]);
9
9
  if (n)
10
- for (var e of n(o))
11
- l.call(o, e) && s(t, e, o[e]);
10
+ for (var o of n(e))
11
+ m.call(e, o) && l(t, o, e[o]);
12
12
  return t;
13
- }, c = (t, o) => x(t, I(o));
14
- var d = (t, o) => {
15
- var e = {};
13
+ }, g = (t, e) => I(t, T(e));
14
+ var d = (t, e) => {
15
+ var o = {};
16
16
  for (var i in t)
17
- a.call(t, i) && o.indexOf(i) < 0 && (e[i] = t[i]);
17
+ c.call(t, i) && e.indexOf(i) < 0 && (o[i] = t[i]);
18
18
  if (t != null && n)
19
19
  for (var i of n(t))
20
- o.indexOf(i) < 0 && l.call(t, i) && (e[i] = t[i]);
21
- return e;
20
+ e.indexOf(i) < 0 && m.call(t, i) && (o[i] = t[i]);
21
+ return o;
22
22
  };
23
23
  import { jsx as y } from "react/jsx-runtime";
24
- import { useId as C } from "react";
25
- import { useDialogContext as D } from "../../providers/DialogContext.js";
26
- import { getTypographyClasses as T } from "../../tokens/typography.js";
27
- function v($) {
28
- var r = $, {
24
+ import { useId as C, useEffect as D } from "react";
25
+ import { useDialogContext as $ } from "../../providers/DialogContext.js";
26
+ import { getTypographyClasses as b } from "../../tokens/typography.js";
27
+ function w(j) {
28
+ var s = j, {
29
29
  as: t = "h2",
30
- children: o,
31
- className: e = "",
30
+ children: e,
31
+ className: o = "",
32
32
  id: i
33
- } = r, g = d(r, [
33
+ } = s, p = d(s, [
34
34
  "as",
35
35
  "children",
36
36
  "className",
37
37
  "id"
38
38
  ]);
39
- const f = D(), p = C(), u = i || f.titleId || p;
40
- return /* @__PURE__ */ y(
39
+ const r = $(), u = C(), h = i || r.titleId || u, { registerTitle: a } = r;
40
+ return D(() => a(), [a]), /* @__PURE__ */ y(
41
41
  t,
42
- c(m({
43
- id: u,
44
- className: `${T("h3")} font-semibold leading-none tracking-tight ${e}`
45
- }, g), {
46
- children: o
42
+ g(f({
43
+ id: h,
44
+ className: `${b("h3")} font-semibold leading-none tracking-tight ${o}`
45
+ }, p), {
46
+ children: e
47
47
  })
48
48
  );
49
49
  }
50
50
  export {
51
- v as DialogTitle
51
+ w as DialogTitle
52
52
  };
53
53
  //# sourceMappingURL=DialogTitle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DialogTitle.js","sources":["../../../../../src/ui/components/Dialog/DialogTitle.tsx"],"sourcesContent":["\"use client\";\n\nimport { useId, type HTMLAttributes } from \"react\";\nimport { useDialogContext } from \"../../providers/DialogContext\";\nimport { getTypographyClasses } from \"../../tokens\";\n\nexport interface DialogTitleProps extends HTMLAttributes<HTMLHeadingElement> {\n as?: \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\";\n}\n\nexport function DialogTitle({\n as: Component = \"h2\",\n children,\n className = \"\",\n id,\n ...props\n}: DialogTitleProps) {\n const context = useDialogContext();\n const generatedId = useId();\n const finalId = id || context.titleId || generatedId;\n\n return (\n <Component\n id={finalId}\n className={`${getTypographyClasses(\"h3\")} font-semibold leading-none tracking-tight ${className}`}\n {...props}\n >\n {children}\n </Component>\n );\n}\n"],"names":["DialogTitle","_a","_b","Component","children","className","id","props","__objRest","context","useDialogContext","generatedId","useId","finalId","jsx","__spreadProps","__spreadValues","getTypographyClasses"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAUO,SAASA,EAAYC,GAMP;AANO,MAAAC,IAAAD,GAC1B;AAAA,QAAIE,IAAY;AAAA,IAChB,UAAAC;AAAA,IACA,WAAAC,IAAY;AAAA,IACZ,IAAAC;AAAA,MAJ0BJ,GAKvBK,IAAAC,EALuBN,GAKvB;AAAA,IAJH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAGA,QAAMO,IAAUC,EAAA,GACVC,IAAcC,EAAA,GACdC,IAAUP,KAAMG,EAAQ,WAAWE;AAEzC,SACE,gBAAAG;AAAA,IAACX;AAAA,IAAAY,EAAAC,EAAA;AAAA,MACC,IAAIH;AAAA,MACJ,WAAW,GAAGI,EAAqB,IAAI,CAAC,8CAA8CZ,CAAS;AAAA,OAC3FE,IAHL;AAAA,MAKE,UAAAH;AAAA,IAAA;AAAA,EAAA;AAGP;"}
1
+ {"version":3,"file":"DialogTitle.js","sources":["../../../../../src/ui/components/Dialog/DialogTitle.tsx"],"sourcesContent":["\"use client\";\n\nimport { useId, useEffect, type HTMLAttributes } from \"react\";\nimport { useDialogContext } from \"../../providers/DialogContext\";\nimport { getTypographyClasses } from \"../../tokens\";\n\nexport interface DialogTitleProps extends HTMLAttributes<HTMLHeadingElement> {\n as?: \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\";\n}\n\nexport function DialogTitle({\n as: Component = \"h2\",\n children,\n className = \"\",\n id,\n ...props\n}: DialogTitleProps) {\n const context = useDialogContext();\n const generatedId = useId();\n const finalId = id || context.titleId || generatedId;\n\n // Tell the dialog a Title is present so it emits aria-labelledby.\n const { registerTitle } = context;\n useEffect(() => registerTitle(), [registerTitle]);\n\n return (\n <Component\n id={finalId}\n className={`${getTypographyClasses(\"h3\")} font-semibold leading-none tracking-tight ${className}`}\n {...props}\n >\n {children}\n </Component>\n );\n}\n"],"names":["DialogTitle","_a","_b","Component","children","className","id","props","__objRest","context","useDialogContext","generatedId","useId","finalId","registerTitle","useEffect","jsx","__spreadProps","__spreadValues","getTypographyClasses"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAUO,SAASA,EAAYC,GAMP;AANO,MAAAC,IAAAD,GAC1B;AAAA,QAAIE,IAAY;AAAA,IAChB,UAAAC;AAAA,IACA,WAAAC,IAAY;AAAA,IACZ,IAAAC;AAAA,MAJ0BJ,GAKvBK,IAAAC,EALuBN,GAKvB;AAAA,IAJH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAGA,QAAMO,IAAUC,EAAA,GACVC,IAAcC,EAAA,GACdC,IAAUP,KAAMG,EAAQ,WAAWE,GAGnC,EAAE,eAAAG,MAAkBL;AAC1B,SAAAM,EAAU,MAAMD,KAAiB,CAACA,CAAa,CAAC,GAG9C,gBAAAE;AAAA,IAACb;AAAA,IAAAc,EAAAC,EAAA;AAAA,MACC,IAAIL;AAAA,MACJ,WAAW,GAAGM,EAAqB,IAAI,CAAC,8CAA8Cd,CAAS;AAAA,OAC3FE,IAHL;AAAA,MAKE,UAAAH;AAAA,IAAA;AAAA,EAAA;AAGP;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Drawer.js","sources":["../../../../../src/ui/components/Drawer/Drawer.tsx"],"sourcesContent":["\"use client\";\n\nimport { useState, type ReactNode } from \"react\";\nimport DrawerContent from \"./DrawerContent\";\nimport DrawerHeader from \"./DrawerHeader\";\nimport DrawerFooter from \"./DrawerFooter\";\nimport { DrawerProvider } from \"./DrawerContext\";\n\nexport type DrawerPosition = \"left\" | \"right\" | \"top\" | \"bottom\";\n\nexport interface DrawerProps {\n children: ReactNode;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n position?: DrawerPosition;\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\n closeOnOverlayClick?: boolean;\n closeOnEscape?: boolean;\n}\n\n/**\n * Drawer Component\n *\n * A side drawer component that slides in from different positions.\n * Follows Atomic Design principles as an Atom component.\n * Uses Compound Component pattern.\n *\n * @example\n * ```tsx\n * <Drawer>\n * <DrawerContent>\n * <DrawerHeader>\n * <h2>Title</h2>\n * </DrawerHeader>\n * <p>Content goes here</p>\n * <DrawerFooter>\n * <Button>Close</Button>\n * </DrawerFooter>\n * </DrawerContent>\n * </Drawer>\n * ```\n */\nexport default function Drawer({\n children,\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange,\n position = \"right\",\n size = \"md\",\n closeOnOverlayClick = true,\n closeOnEscape = true,\n}: DrawerProps) {\n const [internalOpen, setInternalOpen] = useState(defaultOpen);\n\n const isControlled = controlledOpen !== undefined;\n const isOpen = isControlled ? controlledOpen : internalOpen;\n\n const setIsOpen = (newOpen: boolean) => {\n if (!isControlled) {\n setInternalOpen(newOpen);\n }\n onOpenChange?.(newOpen);\n };\n\n const closeDrawer = () => {\n setIsOpen(false);\n };\n\n return (\n <DrawerProvider\n value={{\n isOpen,\n closeDrawer,\n position,\n size,\n closeOnOverlayClick,\n closeOnEscape,\n }}\n >\n {children}\n </DrawerProvider>\n );\n}\n\n// Export sub-components for compound pattern\nDrawer.Content = DrawerContent;\nDrawer.Header = DrawerHeader;\nDrawer.Footer = DrawerFooter;\n\n// Also export as named exports for easier imports\nexport { DrawerContent, DrawerHeader, DrawerFooter };\n"],"names":["Drawer","children","controlledOpen","defaultOpen","onOpenChange","position","size","closeOnOverlayClick","closeOnEscape","internalOpen","setInternalOpen","useState","isControlled","isOpen","setIsOpen","newOpen","jsx","DrawerProvider","DrawerContent","DrawerHeader","DrawerFooter"],"mappings":";;;;;;;AA2CA,SAAwBA,EAAO;AAAA,EAC7B,UAAAC;AAAA,EACA,MAAMC;AAAA,EACN,aAAAC,IAAc;AAAA,EACd,cAAAC;AAAA,EACA,UAAAC,IAAW;AAAA,EACX,MAAAC,IAAO;AAAA,EACP,qBAAAC,IAAsB;AAAA,EACtB,eAAAC,IAAgB;AAClB,GAAgB;AACd,QAAM,CAACC,GAAcC,CAAe,IAAIC,EAASR,CAAW,GAEtDS,IAAeV,MAAmB,QAClCW,IAASD,IAAeV,IAAiBO,GAEzCK,IAAY,CAACC,MAAqB;AACtC,IAAKH,KACHF,EAAgBK,CAAO,GAEzBX,KAAA,QAAAA,EAAeW;AAAA,EACjB;AAMA,SACE,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,OAAO;AAAA,QACL,QAAAJ;AAAA,QACA,aARc,MAAM;AACxB,UAAAC,EAAU,EAAK;AAAA,QACjB;AAAA,QAOM,UAAAT;AAAA,QACA,MAAAC;AAAA,QACA,qBAAAC;AAAA,QACA,eAAAC;AAAA,MAAA;AAAA,MAGD,UAAAP;AAAA,IAAA;AAAA,EAAA;AAGP;AAGAD,EAAO,UAAUkB;AACjBlB,EAAO,SAASmB;AAChBnB,EAAO,SAASoB;"}
1
+ {"version":3,"file":"Drawer.js","sources":["../../../../../src/ui/components/Drawer/Drawer.tsx"],"sourcesContent":["\"use client\";\n\nimport { useState, type ReactNode } from \"react\";\nimport DrawerContent from \"./DrawerContent\";\nimport DrawerHeader from \"./DrawerHeader\";\nimport DrawerFooter from \"./DrawerFooter\";\nimport { DrawerProvider } from \"./DrawerContext\";\n\nexport type DrawerPosition = \"left\" | \"right\" | \"top\" | \"bottom\";\n\nexport interface DrawerProps {\n children: ReactNode;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n position?: DrawerPosition;\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\n closeOnOverlayClick?: boolean;\n closeOnEscape?: boolean;\n}\n\n/**\n * Drawer Component\n *\n * A side drawer component that slides in from different positions.\n * Uses Compound Component pattern.\n *\n * @example\n * ```tsx\n * <Drawer>\n * <DrawerContent>\n * <DrawerHeader>\n * <h2>Title</h2>\n * </DrawerHeader>\n * <p>Content goes here</p>\n * <DrawerFooter>\n * <Button>Close</Button>\n * </DrawerFooter>\n * </DrawerContent>\n * </Drawer>\n * ```\n */\nexport default function Drawer({\n children,\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange,\n position = \"right\",\n size = \"md\",\n closeOnOverlayClick = true,\n closeOnEscape = true,\n}: DrawerProps) {\n const [internalOpen, setInternalOpen] = useState(defaultOpen);\n\n const isControlled = controlledOpen !== undefined;\n const isOpen = isControlled ? controlledOpen : internalOpen;\n\n const setIsOpen = (newOpen: boolean) => {\n if (!isControlled) {\n setInternalOpen(newOpen);\n }\n onOpenChange?.(newOpen);\n };\n\n const closeDrawer = () => {\n setIsOpen(false);\n };\n\n return (\n <DrawerProvider\n value={{\n isOpen,\n closeDrawer,\n position,\n size,\n closeOnOverlayClick,\n closeOnEscape,\n }}\n >\n {children}\n </DrawerProvider>\n );\n}\n\n// Export sub-components for compound pattern\nDrawer.Content = DrawerContent;\nDrawer.Header = DrawerHeader;\nDrawer.Footer = DrawerFooter;\n\n// Also export as named exports for easier imports\nexport { DrawerContent, DrawerHeader, DrawerFooter };\n"],"names":["Drawer","children","controlledOpen","defaultOpen","onOpenChange","position","size","closeOnOverlayClick","closeOnEscape","internalOpen","setInternalOpen","useState","isControlled","isOpen","setIsOpen","newOpen","jsx","DrawerProvider","DrawerContent","DrawerHeader","DrawerFooter"],"mappings":";;;;;;;AA0CA,SAAwBA,EAAO;AAAA,EAC7B,UAAAC;AAAA,EACA,MAAMC;AAAA,EACN,aAAAC,IAAc;AAAA,EACd,cAAAC;AAAA,EACA,UAAAC,IAAW;AAAA,EACX,MAAAC,IAAO;AAAA,EACP,qBAAAC,IAAsB;AAAA,EACtB,eAAAC,IAAgB;AAClB,GAAgB;AACd,QAAM,CAACC,GAAcC,CAAe,IAAIC,EAASR,CAAW,GAEtDS,IAAeV,MAAmB,QAClCW,IAASD,IAAeV,IAAiBO,GAEzCK,IAAY,CAACC,MAAqB;AACtC,IAAKH,KACHF,EAAgBK,CAAO,GAEzBX,KAAA,QAAAA,EAAeW;AAAA,EACjB;AAMA,SACE,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,OAAO;AAAA,QACL,QAAAJ;AAAA,QACA,aARc,MAAM;AACxB,UAAAC,EAAU,EAAK;AAAA,QACjB;AAAA,QAOM,UAAAT;AAAA,QACA,MAAAC;AAAA,QACA,qBAAAC;AAAA,QACA,eAAAC;AAAA,MAAA;AAAA,MAGD,UAAAP;AAAA,IAAA;AAAA,EAAA;AAGP;AAGAD,EAAO,UAAUkB;AACjBlB,EAAO,SAASmB;AAChBnB,EAAO,SAASoB;"}