@metamask-previews/design-system-react 0.22.0-preview.178e60f → 0.23.1-preview.620b9f3

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 (180) hide show
  1. package/CHANGELOG.md +25 -1
  2. package/dist/components/BannerAlert/BannerAlert.d.cts +58 -30
  3. package/dist/components/BannerAlert/BannerAlert.d.cts.map +1 -1
  4. package/dist/components/BannerAlert/BannerAlert.d.mts +58 -30
  5. package/dist/components/BannerAlert/BannerAlert.d.mts.map +1 -1
  6. package/dist/components/BannerBase/BannerBase.d.cts +58 -30
  7. package/dist/components/BannerBase/BannerBase.d.cts.map +1 -1
  8. package/dist/components/BannerBase/BannerBase.d.mts +58 -30
  9. package/dist/components/BannerBase/BannerBase.d.mts.map +1 -1
  10. package/dist/components/HelpText/HelpText.cjs +13 -0
  11. package/dist/components/HelpText/HelpText.cjs.map +1 -0
  12. package/dist/components/HelpText/HelpText.constants.cjs +11 -0
  13. package/dist/components/HelpText/HelpText.constants.cjs.map +1 -0
  14. package/dist/components/HelpText/HelpText.constants.d.cts +3 -0
  15. package/dist/components/HelpText/HelpText.constants.d.cts.map +1 -0
  16. package/dist/components/HelpText/HelpText.constants.d.mts +3 -0
  17. package/dist/components/HelpText/HelpText.constants.d.mts.map +1 -0
  18. package/dist/components/HelpText/HelpText.constants.mjs +8 -0
  19. package/dist/components/HelpText/HelpText.constants.mjs.map +1 -0
  20. package/dist/components/HelpText/HelpText.d.cts +4 -0
  21. package/dist/components/HelpText/HelpText.d.cts.map +1 -0
  22. package/dist/components/HelpText/HelpText.d.mts +4 -0
  23. package/dist/components/HelpText/HelpText.d.mts.map +1 -0
  24. package/dist/components/HelpText/HelpText.mjs +13 -0
  25. package/dist/components/HelpText/HelpText.mjs.map +1 -0
  26. package/dist/components/HelpText/HelpText.types.cjs +3 -0
  27. package/dist/components/HelpText/HelpText.types.cjs.map +1 -0
  28. package/dist/components/HelpText/HelpText.types.d.cts +9 -0
  29. package/dist/components/HelpText/HelpText.types.d.cts.map +1 -0
  30. package/dist/components/HelpText/HelpText.types.d.mts +9 -0
  31. package/dist/components/HelpText/HelpText.types.d.mts.map +1 -0
  32. package/dist/components/HelpText/HelpText.types.mjs +2 -0
  33. package/dist/components/HelpText/HelpText.types.mjs.map +1 -0
  34. package/dist/components/HelpText/index.cjs +8 -0
  35. package/dist/components/HelpText/index.cjs.map +1 -0
  36. package/dist/components/HelpText/index.d.cts +4 -0
  37. package/dist/components/HelpText/index.d.cts.map +1 -0
  38. package/dist/components/HelpText/index.d.mts +4 -0
  39. package/dist/components/HelpText/index.d.mts.map +1 -0
  40. package/dist/components/HelpText/index.mjs +3 -0
  41. package/dist/components/HelpText/index.mjs.map +1 -0
  42. package/dist/components/Icon/icons/Telegram.cjs +1 -1
  43. package/dist/components/Icon/icons/Telegram.cjs.map +1 -1
  44. package/dist/components/Icon/icons/Telegram.mjs +1 -1
  45. package/dist/components/Icon/icons/Telegram.mjs.map +1 -1
  46. package/dist/components/Label/Label.cjs +38 -0
  47. package/dist/components/Label/Label.cjs.map +1 -0
  48. package/dist/components/Label/Label.d.cts +4 -0
  49. package/dist/components/Label/Label.d.cts.map +1 -0
  50. package/dist/components/Label/Label.d.mts +4 -0
  51. package/dist/components/Label/Label.d.mts.map +1 -0
  52. package/dist/components/Label/Label.mjs +19 -0
  53. package/dist/components/Label/Label.mjs.map +1 -0
  54. package/dist/components/Label/Label.types.cjs +3 -0
  55. package/dist/components/Label/Label.types.cjs.map +1 -0
  56. package/dist/components/Label/Label.types.d.cts +27 -0
  57. package/dist/components/Label/Label.types.d.cts.map +1 -0
  58. package/dist/components/Label/Label.types.d.mts +27 -0
  59. package/dist/components/Label/Label.types.d.mts.map +1 -0
  60. package/dist/components/Label/Label.types.mjs +2 -0
  61. package/dist/components/Label/Label.types.mjs.map +1 -0
  62. package/dist/components/Label/index.cjs +6 -0
  63. package/dist/components/Label/index.cjs.map +1 -0
  64. package/dist/components/Label/index.d.cts +3 -0
  65. package/dist/components/Label/index.d.cts.map +1 -0
  66. package/dist/components/Label/index.d.mts +3 -0
  67. package/dist/components/Label/index.d.mts.map +1 -0
  68. package/dist/components/Label/index.mjs +2 -0
  69. package/dist/components/Label/index.mjs.map +1 -0
  70. package/dist/components/Modal/Modal.types.cjs.map +1 -1
  71. package/dist/components/Modal/Modal.types.d.cts +2 -2
  72. package/dist/components/Modal/Modal.types.d.cts.map +1 -1
  73. package/dist/components/Modal/Modal.types.d.mts +2 -2
  74. package/dist/components/Modal/Modal.types.d.mts.map +1 -1
  75. package/dist/components/Modal/Modal.types.mjs.map +1 -1
  76. package/dist/components/ModalFocus/ModalFocus.types.cjs.map +1 -1
  77. package/dist/components/ModalFocus/ModalFocus.types.d.cts +2 -2
  78. package/dist/components/ModalFocus/ModalFocus.types.d.cts.map +1 -1
  79. package/dist/components/ModalFocus/ModalFocus.types.d.mts +2 -2
  80. package/dist/components/ModalFocus/ModalFocus.types.d.mts.map +1 -1
  81. package/dist/components/ModalFocus/ModalFocus.types.mjs.map +1 -1
  82. package/dist/components/ModalHeader/ModalHeader.cjs +55 -0
  83. package/dist/components/ModalHeader/ModalHeader.cjs.map +1 -0
  84. package/dist/components/ModalHeader/ModalHeader.d.cts +55 -0
  85. package/dist/components/ModalHeader/ModalHeader.d.cts.map +1 -0
  86. package/dist/components/ModalHeader/ModalHeader.d.mts +55 -0
  87. package/dist/components/ModalHeader/ModalHeader.d.mts.map +1 -0
  88. package/dist/components/ModalHeader/ModalHeader.mjs +36 -0
  89. package/dist/components/ModalHeader/ModalHeader.mjs.map +1 -0
  90. package/dist/components/ModalHeader/ModalHeader.types.cjs +3 -0
  91. package/dist/components/ModalHeader/ModalHeader.types.cjs.map +1 -0
  92. package/dist/components/ModalHeader/ModalHeader.types.d.cts +69 -0
  93. package/dist/components/ModalHeader/ModalHeader.types.d.cts.map +1 -0
  94. package/dist/components/ModalHeader/ModalHeader.types.d.mts +69 -0
  95. package/dist/components/ModalHeader/ModalHeader.types.d.mts.map +1 -0
  96. package/dist/components/ModalHeader/ModalHeader.types.mjs +2 -0
  97. package/dist/components/ModalHeader/ModalHeader.types.mjs.map +1 -0
  98. package/dist/components/ModalHeader/index.cjs +6 -0
  99. package/dist/components/ModalHeader/index.cjs.map +1 -0
  100. package/dist/components/ModalHeader/index.d.cts +3 -0
  101. package/dist/components/ModalHeader/index.d.cts.map +1 -0
  102. package/dist/components/ModalHeader/index.d.mts +3 -0
  103. package/dist/components/ModalHeader/index.d.mts.map +1 -0
  104. package/dist/components/ModalHeader/index.mjs +2 -0
  105. package/dist/components/ModalHeader/index.mjs.map +1 -0
  106. package/dist/components/PopoverHeader/PopoverHeader.cjs +60 -0
  107. package/dist/components/PopoverHeader/PopoverHeader.cjs.map +1 -0
  108. package/dist/components/PopoverHeader/PopoverHeader.d.cts +55 -0
  109. package/dist/components/PopoverHeader/PopoverHeader.d.cts.map +1 -0
  110. package/dist/components/PopoverHeader/PopoverHeader.d.mts +55 -0
  111. package/dist/components/PopoverHeader/PopoverHeader.d.mts.map +1 -0
  112. package/dist/components/PopoverHeader/PopoverHeader.mjs +41 -0
  113. package/dist/components/PopoverHeader/PopoverHeader.mjs.map +1 -0
  114. package/dist/components/PopoverHeader/PopoverHeader.types.cjs +3 -0
  115. package/dist/components/PopoverHeader/PopoverHeader.types.cjs.map +1 -0
  116. package/dist/components/PopoverHeader/PopoverHeader.types.d.cts +70 -0
  117. package/dist/components/PopoverHeader/PopoverHeader.types.d.cts.map +1 -0
  118. package/dist/components/PopoverHeader/PopoverHeader.types.d.mts +70 -0
  119. package/dist/components/PopoverHeader/PopoverHeader.types.d.mts.map +1 -0
  120. package/dist/components/PopoverHeader/PopoverHeader.types.mjs +2 -0
  121. package/dist/components/PopoverHeader/PopoverHeader.types.mjs.map +1 -0
  122. package/dist/components/PopoverHeader/index.cjs +6 -0
  123. package/dist/components/PopoverHeader/index.cjs.map +1 -0
  124. package/dist/components/PopoverHeader/index.d.cts +3 -0
  125. package/dist/components/PopoverHeader/index.d.cts.map +1 -0
  126. package/dist/components/PopoverHeader/index.d.mts +3 -0
  127. package/dist/components/PopoverHeader/index.d.mts.map +1 -0
  128. package/dist/components/PopoverHeader/index.mjs +2 -0
  129. package/dist/components/PopoverHeader/index.mjs.map +1 -0
  130. package/dist/components/SensitiveText/SensitiveText.cjs +47 -0
  131. package/dist/components/SensitiveText/SensitiveText.cjs.map +1 -0
  132. package/dist/components/SensitiveText/SensitiveText.d.cts +4 -0
  133. package/dist/components/SensitiveText/SensitiveText.d.cts.map +1 -0
  134. package/dist/components/SensitiveText/SensitiveText.d.mts +4 -0
  135. package/dist/components/SensitiveText/SensitiveText.d.mts.map +1 -0
  136. package/dist/components/SensitiveText/SensitiveText.mjs +27 -0
  137. package/dist/components/SensitiveText/SensitiveText.mjs.map +1 -0
  138. package/dist/components/SensitiveText/SensitiveText.types.cjs +3 -0
  139. package/dist/components/SensitiveText/SensitiveText.types.cjs.map +1 -0
  140. package/dist/components/SensitiveText/SensitiveText.types.d.cts +11 -0
  141. package/dist/components/SensitiveText/SensitiveText.types.d.cts.map +1 -0
  142. package/dist/components/SensitiveText/SensitiveText.types.d.mts +11 -0
  143. package/dist/components/SensitiveText/SensitiveText.types.d.mts.map +1 -0
  144. package/dist/components/SensitiveText/SensitiveText.types.mjs +2 -0
  145. package/dist/components/SensitiveText/SensitiveText.types.mjs.map +1 -0
  146. package/dist/components/SensitiveText/index.cjs +8 -0
  147. package/dist/components/SensitiveText/index.cjs.map +1 -0
  148. package/dist/components/SensitiveText/index.d.cts +4 -0
  149. package/dist/components/SensitiveText/index.d.cts.map +1 -0
  150. package/dist/components/SensitiveText/index.d.mts +4 -0
  151. package/dist/components/SensitiveText/index.d.mts.map +1 -0
  152. package/dist/components/SensitiveText/index.mjs +3 -0
  153. package/dist/components/SensitiveText/index.mjs.map +1 -0
  154. package/dist/components/Text/Text.cjs +3 -1
  155. package/dist/components/Text/Text.cjs.map +1 -1
  156. package/dist/components/Text/Text.constants.cjs.map +1 -1
  157. package/dist/components/Text/Text.constants.d.cts +1 -1
  158. package/dist/components/Text/Text.constants.d.cts.map +1 -1
  159. package/dist/components/Text/Text.constants.d.mts +1 -1
  160. package/dist/components/Text/Text.constants.d.mts.map +1 -1
  161. package/dist/components/Text/Text.constants.mjs.map +1 -1
  162. package/dist/components/Text/Text.d.cts.map +1 -1
  163. package/dist/components/Text/Text.d.mts.map +1 -1
  164. package/dist/components/Text/Text.mjs +3 -1
  165. package/dist/components/Text/Text.mjs.map +1 -1
  166. package/dist/components/Text/Text.types.cjs.map +1 -1
  167. package/dist/components/Text/Text.types.d.cts +2 -2
  168. package/dist/components/Text/Text.types.d.cts.map +1 -1
  169. package/dist/components/Text/Text.types.d.mts +2 -2
  170. package/dist/components/Text/Text.types.d.mts.map +1 -1
  171. package/dist/components/Text/Text.types.mjs.map +1 -1
  172. package/dist/components/index.cjs +14 -2
  173. package/dist/components/index.cjs.map +1 -1
  174. package/dist/components/index.d.cts +10 -0
  175. package/dist/components/index.d.cts.map +1 -1
  176. package/dist/components/index.d.mts +10 -0
  177. package/dist/components/index.d.mts.map +1 -1
  178. package/dist/components/index.mjs +5 -0
  179. package/dist/components/index.mjs.map +1 -1
  180. package/package.json +8 -6
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModalHeader.d.mts","sourceRoot":"","sources":["../../../src/components/ModalHeader/ModalHeader.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAqB,cAAc;AAS1C,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8CA8EvB,CAAC"}
@@ -0,0 +1,36 @@
1
+ function $importDefault(module) {
2
+ if (module?.__esModule) {
3
+ return module.default;
4
+ }
5
+ return module;
6
+ }
7
+ import { ButtonIconSize, IconName, TextVariant } from "@metamask-previews/design-system-shared";
8
+ import $React, { forwardRef } from "react";
9
+ const React = $importDefault($React);
10
+ import { twMerge } from "../../utils/tw-merge.mjs";
11
+ import { Box } from "../Box/index.mjs";
12
+ import { ButtonIcon } from "../ButtonIcon/index.mjs";
13
+ import { Text, TextAlign } from "../Text/index.mjs";
14
+ export const ModalHeader = forwardRef((props, ref) => {
15
+ const { children, className, startAccessory, endAccessory, onBack, backButtonProps, onClose, closeButtonProps, ...rest } = props;
16
+ // The discriminated union on `ModalHeaderProps` guarantees that whenever
17
+ // `onBack` is set, `backButtonProps` is also set (with a required
18
+ // `ariaLabel`). Same for `onClose` / `closeButtonProps`. The `&&` checks
19
+ // below give TypeScript a narrowing point and double as runtime guards.
20
+ const resolvedStartAccessory = startAccessory ??
21
+ (onBack && backButtonProps ? (React.createElement(ButtonIcon, { iconName: IconName.ArrowLeft, size: ButtonIconSize.Md, onClick: onBack, ...backButtonProps })) : null);
22
+ const resolvedEndAccessory = endAccessory ??
23
+ (onClose && closeButtonProps ? (React.createElement(ButtonIcon, { iconName: IconName.Close, size: ButtonIconSize.Md, onClick: onClose, ...closeButtonProps })) : null);
24
+ const titleContent = typeof children === 'string' ? (React.createElement(Text, { variant: TextVariant.HeadingSm, textAlign: TextAlign.Center }, children)) : (children);
25
+ return (React.createElement("header", { ref: ref, className: twMerge(
26
+ // Three-column grid keeps the title visually centered regardless of
27
+ // which side accessories are present — same layout primitive as
28
+ // `HeaderBase`, replicated here so the outer element is the
29
+ // semantic `<header>` (no extra wrapper div).
30
+ 'grid grid-cols-[1fr_auto_1fr] items-center px-4 pb-4', className), ...rest },
31
+ resolvedStartAccessory && (React.createElement(Box, { className: "col-start-1 justify-self-start" }, resolvedStartAccessory)),
32
+ titleContent !== undefined && titleContent !== null && (React.createElement(Box, { className: "col-start-2 col-end-3 w-full" }, titleContent)),
33
+ resolvedEndAccessory && (React.createElement(Box, { className: "col-start-3 justify-self-end" }, resolvedEndAccessory))));
34
+ });
35
+ ModalHeader.displayName = 'ModalHeader';
36
+ //# sourceMappingURL=ModalHeader.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModalHeader.mjs","sourceRoot":"","sources":["../../../src/components/ModalHeader/ModalHeader.tsx"],"names":[],"mappings":";;;;;;AAAA,OAAO,EACL,cAAc,EACd,QAAQ,EACR,WAAW,EACZ,gDAAgD;AACjD,OAAO,QAAO,EAAE,UAAU,EAAE,cAAc;;AAE1C,OAAO,EAAE,OAAO,EAAE,iCAA6B;AAC/C,OAAO,EAAE,GAAG,EAAE,yBAAe;AAC7B,OAAO,EAAE,UAAU,EAAE,gCAAsB;AAC3C,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,0BAAgB;AAI1C,MAAM,CAAC,MAAM,WAAW,GAAG,UAAU,CACnC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IACb,MAAM,EACJ,QAAQ,EACR,SAAS,EACT,cAAc,EACd,YAAY,EACZ,MAAM,EACN,eAAe,EACf,OAAO,EACP,gBAAgB,EAChB,GAAG,IAAI,EACR,GAAG,KAAK,CAAC;IAEV,yEAAyE;IACzE,kEAAkE;IAClE,yEAAyE;IACzE,wEAAwE;IACxE,MAAM,sBAAsB,GAC1B,cAAc;QACd,CAAC,MAAM,IAAI,eAAe,CAAC,CAAC,CAAC,CAC3B,oBAAC,UAAU,IACT,QAAQ,EAAE,QAAQ,CAAC,SAAS,EAC5B,IAAI,EAAE,cAAc,CAAC,EAAE,EACvB,OAAO,EAAE,MAAM,KACX,eAAe,GACnB,CACH,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAEZ,MAAM,oBAAoB,GACxB,YAAY;QACZ,CAAC,OAAO,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAC7B,oBAAC,UAAU,IACT,QAAQ,EAAE,QAAQ,CAAC,KAAK,EACxB,IAAI,EAAE,cAAc,CAAC,EAAE,EACvB,OAAO,EAAE,OAAO,KACZ,gBAAgB,GACpB,CACH,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAEZ,MAAM,YAAY,GAChB,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,CAC7B,oBAAC,IAAI,IAAC,OAAO,EAAE,WAAW,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,MAAM,IAC9D,QAAQ,CACJ,CACR,CAAC,CAAC,CAAC,CACF,QAAQ,CACT,CAAC;IAEJ,OAAO,CACL,gCACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,OAAO;QAChB,oEAAoE;QACpE,gEAAgE;QAChE,4DAA4D;QAC5D,8CAA8C;QAC9C,sDAAsD,EACtD,SAAS,CACV,KACG,IAAI;QAEP,sBAAsB,IAAI,CACzB,oBAAC,GAAG,IAAC,SAAS,EAAC,gCAAgC,IAC5C,sBAAsB,CACnB,CACP;QACA,YAAY,KAAK,SAAS,IAAI,YAAY,KAAK,IAAI,IAAI,CACtD,oBAAC,GAAG,IAAC,SAAS,EAAC,8BAA8B,IAAE,YAAY,CAAO,CACnE;QACA,oBAAoB,IAAI,CACvB,oBAAC,GAAG,IAAC,SAAS,EAAC,8BAA8B,IAC1C,oBAAoB,CACjB,CACP,CACM,CACV,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,WAAW,CAAC,WAAW,GAAG,aAAa,CAAC","sourcesContent":["import {\n ButtonIconSize,\n IconName,\n TextVariant,\n} from '@metamask-previews/design-system-shared';\nimport React, { forwardRef } from 'react';\n\nimport { twMerge } from '../../utils/tw-merge';\nimport { Box } from '../Box';\nimport { ButtonIcon } from '../ButtonIcon';\nimport { Text, TextAlign } from '../Text';\n\nimport type { ModalHeaderProps } from './ModalHeader.types';\n\nexport const ModalHeader = forwardRef<HTMLElement, ModalHeaderProps>(\n (props, ref) => {\n const {\n children,\n className,\n startAccessory,\n endAccessory,\n onBack,\n backButtonProps,\n onClose,\n closeButtonProps,\n ...rest\n } = props;\n\n // The discriminated union on `ModalHeaderProps` guarantees that whenever\n // `onBack` is set, `backButtonProps` is also set (with a required\n // `ariaLabel`). Same for `onClose` / `closeButtonProps`. The `&&` checks\n // below give TypeScript a narrowing point and double as runtime guards.\n const resolvedStartAccessory =\n startAccessory ??\n (onBack && backButtonProps ? (\n <ButtonIcon\n iconName={IconName.ArrowLeft}\n size={ButtonIconSize.Md}\n onClick={onBack}\n {...backButtonProps}\n />\n ) : null);\n\n const resolvedEndAccessory =\n endAccessory ??\n (onClose && closeButtonProps ? (\n <ButtonIcon\n iconName={IconName.Close}\n size={ButtonIconSize.Md}\n onClick={onClose}\n {...closeButtonProps}\n />\n ) : null);\n\n const titleContent =\n typeof children === 'string' ? (\n <Text variant={TextVariant.HeadingSm} textAlign={TextAlign.Center}>\n {children}\n </Text>\n ) : (\n children\n );\n\n return (\n <header\n ref={ref}\n className={twMerge(\n // Three-column grid keeps the title visually centered regardless of\n // which side accessories are present — same layout primitive as\n // `HeaderBase`, replicated here so the outer element is the\n // semantic `<header>` (no extra wrapper div).\n 'grid grid-cols-[1fr_auto_1fr] items-center px-4 pb-4',\n className,\n )}\n {...rest}\n >\n {resolvedStartAccessory && (\n <Box className=\"col-start-1 justify-self-start\">\n {resolvedStartAccessory}\n </Box>\n )}\n {titleContent !== undefined && titleContent !== null && (\n <Box className=\"col-start-2 col-end-3 w-full\">{titleContent}</Box>\n )}\n {resolvedEndAccessory && (\n <Box className=\"col-start-3 justify-self-end\">\n {resolvedEndAccessory}\n </Box>\n )}\n </header>\n );\n },\n);\n\nModalHeader.displayName = 'ModalHeader';\n"]}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=ModalHeader.types.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModalHeader.types.cjs","sourceRoot":"","sources":["../../../src/components/ModalHeader/ModalHeader.types.ts"],"names":[],"mappings":"","sourcesContent":["import type { ComponentProps, ReactNode } from 'react';\n\nimport type { ButtonIconProps } from '../ButtonIcon';\n\n/**\n * Props accepted by the auto-rendered back / close `ButtonIcon`. The\n * component owns `iconName` (ArrowLeft / Close) and `size`\n * (ButtonIconSize.Md), so consumers cannot override them. The `data-*` index\n * signature lets test ids and other dataset attributes pass through\n * `Partial`/`Omit` indirection.\n *\n * `ariaLabel` is preserved as **required** (it is required on\n * `ButtonIconProps`). The component does not pull from any i18n context, so\n * consumers must pass a localized label explicitly:\n *\n * ```tsx\n * closeButtonProps={{ ariaLabel: t('close') }}\n * ```\n */\ntype ModalHeaderButtonProps = Omit<\n ButtonIconProps,\n 'iconName' | 'size' | 'onClick'\n> & {\n [key: `data-${string}`]: string | undefined;\n};\n\n/**\n * Discriminated pair: `onBack` and `backButtonProps` are co-required. If\n * `onBack` is set, the consumer must also provide `backButtonProps` with a\n * (required) `ariaLabel`. This enforces the no-i18n-fallback contract at\n * compile time without an internal English default.\n */\ntype ModalHeaderBackProps =\n | { onBack?: undefined; backButtonProps?: undefined }\n | { onBack: () => void; backButtonProps: ModalHeaderButtonProps };\n\n/**\n * Discriminated pair: `onClose` and `closeButtonProps` are co-required. Same\n * shape and rationale as `ModalHeaderBackProps`.\n */\ntype ModalHeaderCloseProps =\n | { onClose?: undefined; closeButtonProps?: undefined }\n | { onClose: () => void; closeButtonProps: ModalHeaderButtonProps };\n\nexport type ModalHeaderProps = Omit<ComponentProps<'header'>, 'children'> &\n ModalHeaderBackProps &\n ModalHeaderCloseProps & {\n /**\n * Header title content. When a string, it is auto-wrapped in a\n * `Text` with `TextVariant.HeadingSm` and `TextAlign.Center`. When a\n * `ReactNode`, it is rendered as-is.\n */\n children?: ReactNode;\n /**\n * Optional override for the start (left in LTR) slot. When provided, it\n * replaces the auto-rendered back button — even if `onBack` is set.\n */\n startAccessory?: ReactNode;\n /**\n * Optional override for the end (right in LTR) slot. When provided, it\n * replaces the auto-rendered close button — even if `onClose` is set.\n */\n endAccessory?: ReactNode;\n /**\n * Optional prop for additional CSS classes to be applied to the\n * ModalHeader root. Merged with the component's defaults via `twMerge`.\n */\n className?: string;\n };\n"]}
@@ -0,0 +1,69 @@
1
+ import type { ComponentProps, ReactNode } from "react";
2
+ import type { ButtonIconProps } from "../ButtonIcon/index.cjs";
3
+ /**
4
+ * Props accepted by the auto-rendered back / close `ButtonIcon`. The
5
+ * component owns `iconName` (ArrowLeft / Close) and `size`
6
+ * (ButtonIconSize.Md), so consumers cannot override them. The `data-*` index
7
+ * signature lets test ids and other dataset attributes pass through
8
+ * `Partial`/`Omit` indirection.
9
+ *
10
+ * `ariaLabel` is preserved as **required** (it is required on
11
+ * `ButtonIconProps`). The component does not pull from any i18n context, so
12
+ * consumers must pass a localized label explicitly:
13
+ *
14
+ * ```tsx
15
+ * closeButtonProps={{ ariaLabel: t('close') }}
16
+ * ```
17
+ */
18
+ type ModalHeaderButtonProps = Omit<ButtonIconProps, 'iconName' | 'size' | 'onClick'> & {
19
+ [key: `data-${string}`]: string | undefined;
20
+ };
21
+ /**
22
+ * Discriminated pair: `onBack` and `backButtonProps` are co-required. If
23
+ * `onBack` is set, the consumer must also provide `backButtonProps` with a
24
+ * (required) `ariaLabel`. This enforces the no-i18n-fallback contract at
25
+ * compile time without an internal English default.
26
+ */
27
+ type ModalHeaderBackProps = {
28
+ onBack?: undefined;
29
+ backButtonProps?: undefined;
30
+ } | {
31
+ onBack: () => void;
32
+ backButtonProps: ModalHeaderButtonProps;
33
+ };
34
+ /**
35
+ * Discriminated pair: `onClose` and `closeButtonProps` are co-required. Same
36
+ * shape and rationale as `ModalHeaderBackProps`.
37
+ */
38
+ type ModalHeaderCloseProps = {
39
+ onClose?: undefined;
40
+ closeButtonProps?: undefined;
41
+ } | {
42
+ onClose: () => void;
43
+ closeButtonProps: ModalHeaderButtonProps;
44
+ };
45
+ export type ModalHeaderProps = Omit<ComponentProps<'header'>, 'children'> & ModalHeaderBackProps & ModalHeaderCloseProps & {
46
+ /**
47
+ * Header title content. When a string, it is auto-wrapped in a
48
+ * `Text` with `TextVariant.HeadingSm` and `TextAlign.Center`. When a
49
+ * `ReactNode`, it is rendered as-is.
50
+ */
51
+ children?: ReactNode;
52
+ /**
53
+ * Optional override for the start (left in LTR) slot. When provided, it
54
+ * replaces the auto-rendered back button — even if `onBack` is set.
55
+ */
56
+ startAccessory?: ReactNode;
57
+ /**
58
+ * Optional override for the end (right in LTR) slot. When provided, it
59
+ * replaces the auto-rendered close button — even if `onClose` is set.
60
+ */
61
+ endAccessory?: ReactNode;
62
+ /**
63
+ * Optional prop for additional CSS classes to be applied to the
64
+ * ModalHeader root. Merged with the component's defaults via `twMerge`.
65
+ */
66
+ className?: string;
67
+ };
68
+ export {};
69
+ //# sourceMappingURL=ModalHeader.types.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModalHeader.types.d.cts","sourceRoot":"","sources":["../../../src/components/ModalHeader/ModalHeader.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,cAAc;AAEvD,OAAO,KAAK,EAAE,eAAe,EAAE,gCAAsB;AAErD;;;;;;;;;;;;;;GAcG;AACH,KAAK,sBAAsB,GAAG,IAAI,CAChC,eAAe,EACf,UAAU,GAAG,MAAM,GAAG,SAAS,CAChC,GAAG;IACF,CAAC,GAAG,EAAE,QAAQ,MAAM,EAAE,GAAG,MAAM,GAAG,SAAS,CAAC;CAC7C,CAAC;AAEF;;;;;GAKG;AACH,KAAK,oBAAoB,GACrB;IAAE,MAAM,CAAC,EAAE,SAAS,CAAC;IAAC,eAAe,CAAC,EAAE,SAAS,CAAA;CAAE,GACnD;IAAE,MAAM,EAAE,MAAM,IAAI,CAAC;IAAC,eAAe,EAAE,sBAAsB,CAAA;CAAE,CAAC;AAEpE;;;GAGG;AACH,KAAK,qBAAqB,GACtB;IAAE,OAAO,CAAC,EAAE,SAAS,CAAC;IAAC,gBAAgB,CAAC,EAAE,SAAS,CAAA;CAAE,GACrD;IAAE,OAAO,EAAE,MAAM,IAAI,CAAC;IAAC,gBAAgB,EAAE,sBAAsB,CAAA;CAAE,CAAC;AAEtE,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC,GACvE,oBAAoB,GACpB,qBAAqB,GAAG;IACtB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;;OAGG;IACH,cAAc,CAAC,EAAE,SAAS,CAAC;IAC3B;;;OAGG;IACH,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC"}
@@ -0,0 +1,69 @@
1
+ import type { ComponentProps, ReactNode } from "react";
2
+ import type { ButtonIconProps } from "../ButtonIcon/index.mjs";
3
+ /**
4
+ * Props accepted by the auto-rendered back / close `ButtonIcon`. The
5
+ * component owns `iconName` (ArrowLeft / Close) and `size`
6
+ * (ButtonIconSize.Md), so consumers cannot override them. The `data-*` index
7
+ * signature lets test ids and other dataset attributes pass through
8
+ * `Partial`/`Omit` indirection.
9
+ *
10
+ * `ariaLabel` is preserved as **required** (it is required on
11
+ * `ButtonIconProps`). The component does not pull from any i18n context, so
12
+ * consumers must pass a localized label explicitly:
13
+ *
14
+ * ```tsx
15
+ * closeButtonProps={{ ariaLabel: t('close') }}
16
+ * ```
17
+ */
18
+ type ModalHeaderButtonProps = Omit<ButtonIconProps, 'iconName' | 'size' | 'onClick'> & {
19
+ [key: `data-${string}`]: string | undefined;
20
+ };
21
+ /**
22
+ * Discriminated pair: `onBack` and `backButtonProps` are co-required. If
23
+ * `onBack` is set, the consumer must also provide `backButtonProps` with a
24
+ * (required) `ariaLabel`. This enforces the no-i18n-fallback contract at
25
+ * compile time without an internal English default.
26
+ */
27
+ type ModalHeaderBackProps = {
28
+ onBack?: undefined;
29
+ backButtonProps?: undefined;
30
+ } | {
31
+ onBack: () => void;
32
+ backButtonProps: ModalHeaderButtonProps;
33
+ };
34
+ /**
35
+ * Discriminated pair: `onClose` and `closeButtonProps` are co-required. Same
36
+ * shape and rationale as `ModalHeaderBackProps`.
37
+ */
38
+ type ModalHeaderCloseProps = {
39
+ onClose?: undefined;
40
+ closeButtonProps?: undefined;
41
+ } | {
42
+ onClose: () => void;
43
+ closeButtonProps: ModalHeaderButtonProps;
44
+ };
45
+ export type ModalHeaderProps = Omit<ComponentProps<'header'>, 'children'> & ModalHeaderBackProps & ModalHeaderCloseProps & {
46
+ /**
47
+ * Header title content. When a string, it is auto-wrapped in a
48
+ * `Text` with `TextVariant.HeadingSm` and `TextAlign.Center`. When a
49
+ * `ReactNode`, it is rendered as-is.
50
+ */
51
+ children?: ReactNode;
52
+ /**
53
+ * Optional override for the start (left in LTR) slot. When provided, it
54
+ * replaces the auto-rendered back button — even if `onBack` is set.
55
+ */
56
+ startAccessory?: ReactNode;
57
+ /**
58
+ * Optional override for the end (right in LTR) slot. When provided, it
59
+ * replaces the auto-rendered close button — even if `onClose` is set.
60
+ */
61
+ endAccessory?: ReactNode;
62
+ /**
63
+ * Optional prop for additional CSS classes to be applied to the
64
+ * ModalHeader root. Merged with the component's defaults via `twMerge`.
65
+ */
66
+ className?: string;
67
+ };
68
+ export {};
69
+ //# sourceMappingURL=ModalHeader.types.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModalHeader.types.d.mts","sourceRoot":"","sources":["../../../src/components/ModalHeader/ModalHeader.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,cAAc;AAEvD,OAAO,KAAK,EAAE,eAAe,EAAE,gCAAsB;AAErD;;;;;;;;;;;;;;GAcG;AACH,KAAK,sBAAsB,GAAG,IAAI,CAChC,eAAe,EACf,UAAU,GAAG,MAAM,GAAG,SAAS,CAChC,GAAG;IACF,CAAC,GAAG,EAAE,QAAQ,MAAM,EAAE,GAAG,MAAM,GAAG,SAAS,CAAC;CAC7C,CAAC;AAEF;;;;;GAKG;AACH,KAAK,oBAAoB,GACrB;IAAE,MAAM,CAAC,EAAE,SAAS,CAAC;IAAC,eAAe,CAAC,EAAE,SAAS,CAAA;CAAE,GACnD;IAAE,MAAM,EAAE,MAAM,IAAI,CAAC;IAAC,eAAe,EAAE,sBAAsB,CAAA;CAAE,CAAC;AAEpE;;;GAGG;AACH,KAAK,qBAAqB,GACtB;IAAE,OAAO,CAAC,EAAE,SAAS,CAAC;IAAC,gBAAgB,CAAC,EAAE,SAAS,CAAA;CAAE,GACrD;IAAE,OAAO,EAAE,MAAM,IAAI,CAAC;IAAC,gBAAgB,EAAE,sBAAsB,CAAA;CAAE,CAAC;AAEtE,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC,GACvE,oBAAoB,GACpB,qBAAqB,GAAG;IACtB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;;OAGG;IACH,cAAc,CAAC,EAAE,SAAS,CAAC;IAC3B;;;OAGG;IACH,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ModalHeader.types.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModalHeader.types.mjs","sourceRoot":"","sources":["../../../src/components/ModalHeader/ModalHeader.types.ts"],"names":[],"mappings":"","sourcesContent":["import type { ComponentProps, ReactNode } from 'react';\n\nimport type { ButtonIconProps } from '../ButtonIcon';\n\n/**\n * Props accepted by the auto-rendered back / close `ButtonIcon`. The\n * component owns `iconName` (ArrowLeft / Close) and `size`\n * (ButtonIconSize.Md), so consumers cannot override them. The `data-*` index\n * signature lets test ids and other dataset attributes pass through\n * `Partial`/`Omit` indirection.\n *\n * `ariaLabel` is preserved as **required** (it is required on\n * `ButtonIconProps`). The component does not pull from any i18n context, so\n * consumers must pass a localized label explicitly:\n *\n * ```tsx\n * closeButtonProps={{ ariaLabel: t('close') }}\n * ```\n */\ntype ModalHeaderButtonProps = Omit<\n ButtonIconProps,\n 'iconName' | 'size' | 'onClick'\n> & {\n [key: `data-${string}`]: string | undefined;\n};\n\n/**\n * Discriminated pair: `onBack` and `backButtonProps` are co-required. If\n * `onBack` is set, the consumer must also provide `backButtonProps` with a\n * (required) `ariaLabel`. This enforces the no-i18n-fallback contract at\n * compile time without an internal English default.\n */\ntype ModalHeaderBackProps =\n | { onBack?: undefined; backButtonProps?: undefined }\n | { onBack: () => void; backButtonProps: ModalHeaderButtonProps };\n\n/**\n * Discriminated pair: `onClose` and `closeButtonProps` are co-required. Same\n * shape and rationale as `ModalHeaderBackProps`.\n */\ntype ModalHeaderCloseProps =\n | { onClose?: undefined; closeButtonProps?: undefined }\n | { onClose: () => void; closeButtonProps: ModalHeaderButtonProps };\n\nexport type ModalHeaderProps = Omit<ComponentProps<'header'>, 'children'> &\n ModalHeaderBackProps &\n ModalHeaderCloseProps & {\n /**\n * Header title content. When a string, it is auto-wrapped in a\n * `Text` with `TextVariant.HeadingSm` and `TextAlign.Center`. When a\n * `ReactNode`, it is rendered as-is.\n */\n children?: ReactNode;\n /**\n * Optional override for the start (left in LTR) slot. When provided, it\n * replaces the auto-rendered back button — even if `onBack` is set.\n */\n startAccessory?: ReactNode;\n /**\n * Optional override for the end (right in LTR) slot. When provided, it\n * replaces the auto-rendered close button — even if `onClose` is set.\n */\n endAccessory?: ReactNode;\n /**\n * Optional prop for additional CSS classes to be applied to the\n * ModalHeader root. Merged with the component's defaults via `twMerge`.\n */\n className?: string;\n };\n"]}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ModalHeader = void 0;
4
+ var ModalHeader_1 = require("./ModalHeader.cjs");
5
+ Object.defineProperty(exports, "ModalHeader", { enumerable: true, get: function () { return ModalHeader_1.ModalHeader; } });
6
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sourceRoot":"","sources":["../../../src/components/ModalHeader/index.ts"],"names":[],"mappings":";;;AAAA,iDAA4C;AAAnC,0GAAA,WAAW,OAAA","sourcesContent":["export { ModalHeader } from './ModalHeader';\nexport type { ModalHeaderProps } from './ModalHeader.types';\n"]}
@@ -0,0 +1,3 @@
1
+ export { ModalHeader } from "./ModalHeader.cjs";
2
+ export type { ModalHeaderProps } from "./ModalHeader.types.cjs";
3
+ //# sourceMappingURL=index.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../../../src/components/ModalHeader/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,0BAAsB;AAC5C,YAAY,EAAE,gBAAgB,EAAE,gCAA4B"}
@@ -0,0 +1,3 @@
1
+ export { ModalHeader } from "./ModalHeader.mjs";
2
+ export type { ModalHeaderProps } from "./ModalHeader.types.mjs";
3
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../../src/components/ModalHeader/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,0BAAsB;AAC5C,YAAY,EAAE,gBAAgB,EAAE,gCAA4B"}
@@ -0,0 +1,2 @@
1
+ export { ModalHeader } from "./ModalHeader.mjs";
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../../src/components/ModalHeader/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,0BAAsB","sourcesContent":["export { ModalHeader } from './ModalHeader';\nexport type { ModalHeaderProps } from './ModalHeader.types';\n"]}
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.PopoverHeader = void 0;
27
+ const design_system_shared_1 = require("@metamask-previews/design-system-shared");
28
+ const react_1 = __importStar(require("react"));
29
+ const tw_merge_1 = require("../../utils/tw-merge.cjs");
30
+ const Box_1 = require("../Box/index.cjs");
31
+ const ButtonIcon_1 = require("../ButtonIcon/index.cjs");
32
+ const Text_1 = require("../Text/index.cjs");
33
+ exports.PopoverHeader = (0, react_1.forwardRef)((props, ref) => {
34
+ const { children, className, startAccessory, endAccessory, onBack, backButtonProps, onClose, closeButtonProps, ...rest } = props;
35
+ // The discriminated union on `PopoverHeaderProps` guarantees that whenever
36
+ // `onBack` is set, `backButtonProps` is also set (with a required
37
+ // `ariaLabel`). Same for `onClose` / `closeButtonProps`. The `&&` checks
38
+ // below give TypeScript a narrowing point and double as runtime guards.
39
+ // The auto-rendered icon buttons default to `text-inherit` so they pick
40
+ // up the popover surface color (preserving the legacy `IconColor.inherit`
41
+ // behavior); consumers can still override via `className` on the prop bag.
42
+ const resolvedStartAccessory = startAccessory ??
43
+ (onBack && backButtonProps ? (react_1.default.createElement(ButtonIcon_1.ButtonIcon, { iconName: design_system_shared_1.IconName.ArrowLeft, size: design_system_shared_1.ButtonIconSize.Sm, onClick: onBack, ...backButtonProps, className: (0, tw_merge_1.twMerge)('text-inherit', backButtonProps.className) })) : null);
44
+ const resolvedEndAccessory = endAccessory ??
45
+ (onClose && closeButtonProps ? (react_1.default.createElement(ButtonIcon_1.ButtonIcon, { iconName: design_system_shared_1.IconName.Close, size: design_system_shared_1.ButtonIconSize.Sm, onClick: onClose, ...closeButtonProps, className: (0, tw_merge_1.twMerge)('text-inherit', closeButtonProps.className) })) : null);
46
+ const titleContent = typeof children === 'string' ? (react_1.default.createElement(Text_1.Text, { variant: design_system_shared_1.TextVariant.HeadingSm, textAlign: Text_1.TextAlign.Center, color: design_system_shared_1.TextColor.Inherit }, children)) : (children);
47
+ return (react_1.default.createElement("header", { ref: ref, className: (0, tw_merge_1.twMerge)(
48
+ // Three-column grid keeps the title visually centered regardless of
49
+ // which side accessories are present — same layout primitive as
50
+ // `HeaderBase`, replicated here so the outer element is the
51
+ // semantic `<header>` (no extra wrapper div). Unlike `ModalHeader`,
52
+ // PopoverHeader applies no outer padding — popover surfaces own
53
+ // their own spacing.
54
+ 'grid grid-cols-[1fr_auto_1fr] items-center', className), ...rest },
55
+ resolvedStartAccessory && (react_1.default.createElement(Box_1.Box, { className: "col-start-1 justify-self-start" }, resolvedStartAccessory)),
56
+ titleContent !== undefined && titleContent !== null && (react_1.default.createElement(Box_1.Box, { className: "col-start-2 col-end-3 w-full" }, titleContent)),
57
+ resolvedEndAccessory && (react_1.default.createElement(Box_1.Box, { className: "col-start-3 justify-self-end" }, resolvedEndAccessory))));
58
+ });
59
+ exports.PopoverHeader.displayName = 'PopoverHeader';
60
+ //# sourceMappingURL=PopoverHeader.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PopoverHeader.cjs","sourceRoot":"","sources":["../../../src/components/PopoverHeader/PopoverHeader.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kFAKiD;AACjD,+CAA0C;AAE1C,uDAA+C;AAC/C,0CAA6B;AAC7B,wDAA2C;AAC3C,4CAA0C;AAI7B,QAAA,aAAa,GAAG,IAAA,kBAAU,EACrC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IACb,MAAM,EACJ,QAAQ,EACR,SAAS,EACT,cAAc,EACd,YAAY,EACZ,MAAM,EACN,eAAe,EACf,OAAO,EACP,gBAAgB,EAChB,GAAG,IAAI,EACR,GAAG,KAAK,CAAC;IAEV,2EAA2E;IAC3E,kEAAkE;IAClE,yEAAyE;IACzE,wEAAwE;IACxE,wEAAwE;IACxE,0EAA0E;IAC1E,2EAA2E;IAC3E,MAAM,sBAAsB,GAC1B,cAAc;QACd,CAAC,MAAM,IAAI,eAAe,CAAC,CAAC,CAAC,CAC3B,8BAAC,uBAAU,IACT,QAAQ,EAAE,+BAAQ,CAAC,SAAS,EAC5B,IAAI,EAAE,qCAAc,CAAC,EAAE,EACvB,OAAO,EAAE,MAAM,KACX,eAAe,EACnB,SAAS,EAAE,IAAA,kBAAO,EAAC,cAAc,EAAE,eAAe,CAAC,SAAS,CAAC,GAC7D,CACH,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAEZ,MAAM,oBAAoB,GACxB,YAAY;QACZ,CAAC,OAAO,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAC7B,8BAAC,uBAAU,IACT,QAAQ,EAAE,+BAAQ,CAAC,KAAK,EACxB,IAAI,EAAE,qCAAc,CAAC,EAAE,EACvB,OAAO,EAAE,OAAO,KACZ,gBAAgB,EACpB,SAAS,EAAE,IAAA,kBAAO,EAAC,cAAc,EAAE,gBAAgB,CAAC,SAAS,CAAC,GAC9D,CACH,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAEZ,MAAM,YAAY,GAChB,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,CAC7B,8BAAC,WAAI,IACH,OAAO,EAAE,kCAAW,CAAC,SAAS,EAC9B,SAAS,EAAE,gBAAS,CAAC,MAAM,EAC3B,KAAK,EAAE,gCAAS,CAAC,OAAO,IAEvB,QAAQ,CACJ,CACR,CAAC,CAAC,CAAC,CACF,QAAQ,CACT,CAAC;IAEJ,OAAO,CACL,0CACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,IAAA,kBAAO;QAChB,oEAAoE;QACpE,gEAAgE;QAChE,4DAA4D;QAC5D,oEAAoE;QACpE,gEAAgE;QAChE,qBAAqB;QACrB,4CAA4C,EAC5C,SAAS,CACV,KACG,IAAI;QAEP,sBAAsB,IAAI,CACzB,8BAAC,SAAG,IAAC,SAAS,EAAC,gCAAgC,IAC5C,sBAAsB,CACnB,CACP;QACA,YAAY,KAAK,SAAS,IAAI,YAAY,KAAK,IAAI,IAAI,CACtD,8BAAC,SAAG,IAAC,SAAS,EAAC,8BAA8B,IAAE,YAAY,CAAO,CACnE;QACA,oBAAoB,IAAI,CACvB,8BAAC,SAAG,IAAC,SAAS,EAAC,8BAA8B,IAC1C,oBAAoB,CACjB,CACP,CACM,CACV,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,qBAAa,CAAC,WAAW,GAAG,eAAe,CAAC","sourcesContent":["import {\n ButtonIconSize,\n IconName,\n TextColor,\n TextVariant,\n} from '@metamask-previews/design-system-shared';\nimport React, { forwardRef } from 'react';\n\nimport { twMerge } from '../../utils/tw-merge';\nimport { Box } from '../Box';\nimport { ButtonIcon } from '../ButtonIcon';\nimport { Text, TextAlign } from '../Text';\n\nimport type { PopoverHeaderProps } from './PopoverHeader.types';\n\nexport const PopoverHeader = forwardRef<HTMLElement, PopoverHeaderProps>(\n (props, ref) => {\n const {\n children,\n className,\n startAccessory,\n endAccessory,\n onBack,\n backButtonProps,\n onClose,\n closeButtonProps,\n ...rest\n } = props;\n\n // The discriminated union on `PopoverHeaderProps` guarantees that whenever\n // `onBack` is set, `backButtonProps` is also set (with a required\n // `ariaLabel`). Same for `onClose` / `closeButtonProps`. The `&&` checks\n // below give TypeScript a narrowing point and double as runtime guards.\n // The auto-rendered icon buttons default to `text-inherit` so they pick\n // up the popover surface color (preserving the legacy `IconColor.inherit`\n // behavior); consumers can still override via `className` on the prop bag.\n const resolvedStartAccessory =\n startAccessory ??\n (onBack && backButtonProps ? (\n <ButtonIcon\n iconName={IconName.ArrowLeft}\n size={ButtonIconSize.Sm}\n onClick={onBack}\n {...backButtonProps}\n className={twMerge('text-inherit', backButtonProps.className)}\n />\n ) : null);\n\n const resolvedEndAccessory =\n endAccessory ??\n (onClose && closeButtonProps ? (\n <ButtonIcon\n iconName={IconName.Close}\n size={ButtonIconSize.Sm}\n onClick={onClose}\n {...closeButtonProps}\n className={twMerge('text-inherit', closeButtonProps.className)}\n />\n ) : null);\n\n const titleContent =\n typeof children === 'string' ? (\n <Text\n variant={TextVariant.HeadingSm}\n textAlign={TextAlign.Center}\n color={TextColor.Inherit}\n >\n {children}\n </Text>\n ) : (\n children\n );\n\n return (\n <header\n ref={ref}\n className={twMerge(\n // Three-column grid keeps the title visually centered regardless of\n // which side accessories are present — same layout primitive as\n // `HeaderBase`, replicated here so the outer element is the\n // semantic `<header>` (no extra wrapper div). Unlike `ModalHeader`,\n // PopoverHeader applies no outer padding — popover surfaces own\n // their own spacing.\n 'grid grid-cols-[1fr_auto_1fr] items-center',\n className,\n )}\n {...rest}\n >\n {resolvedStartAccessory && (\n <Box className=\"col-start-1 justify-self-start\">\n {resolvedStartAccessory}\n </Box>\n )}\n {titleContent !== undefined && titleContent !== null && (\n <Box className=\"col-start-2 col-end-3 w-full\">{titleContent}</Box>\n )}\n {resolvedEndAccessory && (\n <Box className=\"col-start-3 justify-self-end\">\n {resolvedEndAccessory}\n </Box>\n )}\n </header>\n );\n },\n);\n\nPopoverHeader.displayName = 'PopoverHeader';\n"]}
@@ -0,0 +1,55 @@
1
+ import React from "react";
2
+ export declare const PopoverHeader: React.ForwardRefExoticComponent<(Omit<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLElement>, HTMLElement>, "children"> & {
3
+ onBack?: undefined;
4
+ backButtonProps?: undefined;
5
+ } & {
6
+ onClose?: undefined;
7
+ closeButtonProps?: undefined;
8
+ } & {
9
+ children?: React.ReactNode;
10
+ startAccessory?: React.ReactNode;
11
+ endAccessory?: React.ReactNode;
12
+ className?: string | undefined;
13
+ }, "ref"> | Omit<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLElement>, HTMLElement>, "children"> & {
14
+ onBack?: undefined;
15
+ backButtonProps?: undefined;
16
+ } & {
17
+ onClose: () => void;
18
+ closeButtonProps: Omit<import("../ButtonIcon/index.cjs").ButtonIconProps, "size" | "onClick" | "iconName"> & {
19
+ [key: `data-${string}`]: string | undefined;
20
+ };
21
+ } & {
22
+ children?: React.ReactNode;
23
+ startAccessory?: React.ReactNode;
24
+ endAccessory?: React.ReactNode;
25
+ className?: string | undefined;
26
+ }, "ref"> | Omit<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLElement>, HTMLElement>, "children"> & {
27
+ onBack: () => void;
28
+ backButtonProps: Omit<import("../ButtonIcon/index.cjs").ButtonIconProps, "size" | "onClick" | "iconName"> & {
29
+ [key: `data-${string}`]: string | undefined;
30
+ };
31
+ } & {
32
+ onClose?: undefined;
33
+ closeButtonProps?: undefined;
34
+ } & {
35
+ children?: React.ReactNode;
36
+ startAccessory?: React.ReactNode;
37
+ endAccessory?: React.ReactNode;
38
+ className?: string | undefined;
39
+ }, "ref"> | Omit<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLElement>, HTMLElement>, "children"> & {
40
+ onBack: () => void;
41
+ backButtonProps: Omit<import("../ButtonIcon/index.cjs").ButtonIconProps, "size" | "onClick" | "iconName"> & {
42
+ [key: `data-${string}`]: string | undefined;
43
+ };
44
+ } & {
45
+ onClose: () => void;
46
+ closeButtonProps: Omit<import("../ButtonIcon/index.cjs").ButtonIconProps, "size" | "onClick" | "iconName"> & {
47
+ [key: `data-${string}`]: string | undefined;
48
+ };
49
+ } & {
50
+ children?: React.ReactNode;
51
+ startAccessory?: React.ReactNode;
52
+ endAccessory?: React.ReactNode;
53
+ className?: string | undefined;
54
+ }, "ref">) & React.RefAttributes<HTMLElement>>;
55
+ //# sourceMappingURL=PopoverHeader.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PopoverHeader.d.cts","sourceRoot":"","sources":["../../../src/components/PopoverHeader/PopoverHeader.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAqB,cAAc;AAS1C,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8CAyFzB,CAAC"}
@@ -0,0 +1,55 @@
1
+ import React from "react";
2
+ export declare const PopoverHeader: React.ForwardRefExoticComponent<(Omit<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLElement>, HTMLElement>, "children"> & {
3
+ onBack?: undefined;
4
+ backButtonProps?: undefined;
5
+ } & {
6
+ onClose?: undefined;
7
+ closeButtonProps?: undefined;
8
+ } & {
9
+ children?: React.ReactNode;
10
+ startAccessory?: React.ReactNode;
11
+ endAccessory?: React.ReactNode;
12
+ className?: string | undefined;
13
+ }, "ref"> | Omit<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLElement>, HTMLElement>, "children"> & {
14
+ onBack?: undefined;
15
+ backButtonProps?: undefined;
16
+ } & {
17
+ onClose: () => void;
18
+ closeButtonProps: Omit<import("../ButtonIcon/index.mjs").ButtonIconProps, "size" | "onClick" | "iconName"> & {
19
+ [key: `data-${string}`]: string | undefined;
20
+ };
21
+ } & {
22
+ children?: React.ReactNode;
23
+ startAccessory?: React.ReactNode;
24
+ endAccessory?: React.ReactNode;
25
+ className?: string | undefined;
26
+ }, "ref"> | Omit<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLElement>, HTMLElement>, "children"> & {
27
+ onBack: () => void;
28
+ backButtonProps: Omit<import("../ButtonIcon/index.mjs").ButtonIconProps, "size" | "onClick" | "iconName"> & {
29
+ [key: `data-${string}`]: string | undefined;
30
+ };
31
+ } & {
32
+ onClose?: undefined;
33
+ closeButtonProps?: undefined;
34
+ } & {
35
+ children?: React.ReactNode;
36
+ startAccessory?: React.ReactNode;
37
+ endAccessory?: React.ReactNode;
38
+ className?: string | undefined;
39
+ }, "ref"> | Omit<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLElement>, HTMLElement>, "children"> & {
40
+ onBack: () => void;
41
+ backButtonProps: Omit<import("../ButtonIcon/index.mjs").ButtonIconProps, "size" | "onClick" | "iconName"> & {
42
+ [key: `data-${string}`]: string | undefined;
43
+ };
44
+ } & {
45
+ onClose: () => void;
46
+ closeButtonProps: Omit<import("../ButtonIcon/index.mjs").ButtonIconProps, "size" | "onClick" | "iconName"> & {
47
+ [key: `data-${string}`]: string | undefined;
48
+ };
49
+ } & {
50
+ children?: React.ReactNode;
51
+ startAccessory?: React.ReactNode;
52
+ endAccessory?: React.ReactNode;
53
+ className?: string | undefined;
54
+ }, "ref">) & React.RefAttributes<HTMLElement>>;
55
+ //# sourceMappingURL=PopoverHeader.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PopoverHeader.d.mts","sourceRoot":"","sources":["../../../src/components/PopoverHeader/PopoverHeader.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAqB,cAAc;AAS1C,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8CAyFzB,CAAC"}
@@ -0,0 +1,41 @@
1
+ function $importDefault(module) {
2
+ if (module?.__esModule) {
3
+ return module.default;
4
+ }
5
+ return module;
6
+ }
7
+ import { ButtonIconSize, IconName, TextColor, TextVariant } from "@metamask-previews/design-system-shared";
8
+ import $React, { forwardRef } from "react";
9
+ const React = $importDefault($React);
10
+ import { twMerge } from "../../utils/tw-merge.mjs";
11
+ import { Box } from "../Box/index.mjs";
12
+ import { ButtonIcon } from "../ButtonIcon/index.mjs";
13
+ import { Text, TextAlign } from "../Text/index.mjs";
14
+ export const PopoverHeader = forwardRef((props, ref) => {
15
+ const { children, className, startAccessory, endAccessory, onBack, backButtonProps, onClose, closeButtonProps, ...rest } = props;
16
+ // The discriminated union on `PopoverHeaderProps` guarantees that whenever
17
+ // `onBack` is set, `backButtonProps` is also set (with a required
18
+ // `ariaLabel`). Same for `onClose` / `closeButtonProps`. The `&&` checks
19
+ // below give TypeScript a narrowing point and double as runtime guards.
20
+ // The auto-rendered icon buttons default to `text-inherit` so they pick
21
+ // up the popover surface color (preserving the legacy `IconColor.inherit`
22
+ // behavior); consumers can still override via `className` on the prop bag.
23
+ const resolvedStartAccessory = startAccessory ??
24
+ (onBack && backButtonProps ? (React.createElement(ButtonIcon, { iconName: IconName.ArrowLeft, size: ButtonIconSize.Sm, onClick: onBack, ...backButtonProps, className: twMerge('text-inherit', backButtonProps.className) })) : null);
25
+ const resolvedEndAccessory = endAccessory ??
26
+ (onClose && closeButtonProps ? (React.createElement(ButtonIcon, { iconName: IconName.Close, size: ButtonIconSize.Sm, onClick: onClose, ...closeButtonProps, className: twMerge('text-inherit', closeButtonProps.className) })) : null);
27
+ const titleContent = typeof children === 'string' ? (React.createElement(Text, { variant: TextVariant.HeadingSm, textAlign: TextAlign.Center, color: TextColor.Inherit }, children)) : (children);
28
+ return (React.createElement("header", { ref: ref, className: twMerge(
29
+ // Three-column grid keeps the title visually centered regardless of
30
+ // which side accessories are present — same layout primitive as
31
+ // `HeaderBase`, replicated here so the outer element is the
32
+ // semantic `<header>` (no extra wrapper div). Unlike `ModalHeader`,
33
+ // PopoverHeader applies no outer padding — popover surfaces own
34
+ // their own spacing.
35
+ 'grid grid-cols-[1fr_auto_1fr] items-center', className), ...rest },
36
+ resolvedStartAccessory && (React.createElement(Box, { className: "col-start-1 justify-self-start" }, resolvedStartAccessory)),
37
+ titleContent !== undefined && titleContent !== null && (React.createElement(Box, { className: "col-start-2 col-end-3 w-full" }, titleContent)),
38
+ resolvedEndAccessory && (React.createElement(Box, { className: "col-start-3 justify-self-end" }, resolvedEndAccessory))));
39
+ });
40
+ PopoverHeader.displayName = 'PopoverHeader';
41
+ //# sourceMappingURL=PopoverHeader.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PopoverHeader.mjs","sourceRoot":"","sources":["../../../src/components/PopoverHeader/PopoverHeader.tsx"],"names":[],"mappings":";;;;;;AAAA,OAAO,EACL,cAAc,EACd,QAAQ,EACR,SAAS,EACT,WAAW,EACZ,gDAAgD;AACjD,OAAO,QAAO,EAAE,UAAU,EAAE,cAAc;;AAE1C,OAAO,EAAE,OAAO,EAAE,iCAA6B;AAC/C,OAAO,EAAE,GAAG,EAAE,yBAAe;AAC7B,OAAO,EAAE,UAAU,EAAE,gCAAsB;AAC3C,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,0BAAgB;AAI1C,MAAM,CAAC,MAAM,aAAa,GAAG,UAAU,CACrC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IACb,MAAM,EACJ,QAAQ,EACR,SAAS,EACT,cAAc,EACd,YAAY,EACZ,MAAM,EACN,eAAe,EACf,OAAO,EACP,gBAAgB,EAChB,GAAG,IAAI,EACR,GAAG,KAAK,CAAC;IAEV,2EAA2E;IAC3E,kEAAkE;IAClE,yEAAyE;IACzE,wEAAwE;IACxE,wEAAwE;IACxE,0EAA0E;IAC1E,2EAA2E;IAC3E,MAAM,sBAAsB,GAC1B,cAAc;QACd,CAAC,MAAM,IAAI,eAAe,CAAC,CAAC,CAAC,CAC3B,oBAAC,UAAU,IACT,QAAQ,EAAE,QAAQ,CAAC,SAAS,EAC5B,IAAI,EAAE,cAAc,CAAC,EAAE,EACvB,OAAO,EAAE,MAAM,KACX,eAAe,EACnB,SAAS,EAAE,OAAO,CAAC,cAAc,EAAE,eAAe,CAAC,SAAS,CAAC,GAC7D,CACH,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAEZ,MAAM,oBAAoB,GACxB,YAAY;QACZ,CAAC,OAAO,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAC7B,oBAAC,UAAU,IACT,QAAQ,EAAE,QAAQ,CAAC,KAAK,EACxB,IAAI,EAAE,cAAc,CAAC,EAAE,EACvB,OAAO,EAAE,OAAO,KACZ,gBAAgB,EACpB,SAAS,EAAE,OAAO,CAAC,cAAc,EAAE,gBAAgB,CAAC,SAAS,CAAC,GAC9D,CACH,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAEZ,MAAM,YAAY,GAChB,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,CAC7B,oBAAC,IAAI,IACH,OAAO,EAAE,WAAW,CAAC,SAAS,EAC9B,SAAS,EAAE,SAAS,CAAC,MAAM,EAC3B,KAAK,EAAE,SAAS,CAAC,OAAO,IAEvB,QAAQ,CACJ,CACR,CAAC,CAAC,CAAC,CACF,QAAQ,CACT,CAAC;IAEJ,OAAO,CACL,gCACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,OAAO;QAChB,oEAAoE;QACpE,gEAAgE;QAChE,4DAA4D;QAC5D,oEAAoE;QACpE,gEAAgE;QAChE,qBAAqB;QACrB,4CAA4C,EAC5C,SAAS,CACV,KACG,IAAI;QAEP,sBAAsB,IAAI,CACzB,oBAAC,GAAG,IAAC,SAAS,EAAC,gCAAgC,IAC5C,sBAAsB,CACnB,CACP;QACA,YAAY,KAAK,SAAS,IAAI,YAAY,KAAK,IAAI,IAAI,CACtD,oBAAC,GAAG,IAAC,SAAS,EAAC,8BAA8B,IAAE,YAAY,CAAO,CACnE;QACA,oBAAoB,IAAI,CACvB,oBAAC,GAAG,IAAC,SAAS,EAAC,8BAA8B,IAC1C,oBAAoB,CACjB,CACP,CACM,CACV,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,aAAa,CAAC,WAAW,GAAG,eAAe,CAAC","sourcesContent":["import {\n ButtonIconSize,\n IconName,\n TextColor,\n TextVariant,\n} from '@metamask-previews/design-system-shared';\nimport React, { forwardRef } from 'react';\n\nimport { twMerge } from '../../utils/tw-merge';\nimport { Box } from '../Box';\nimport { ButtonIcon } from '../ButtonIcon';\nimport { Text, TextAlign } from '../Text';\n\nimport type { PopoverHeaderProps } from './PopoverHeader.types';\n\nexport const PopoverHeader = forwardRef<HTMLElement, PopoverHeaderProps>(\n (props, ref) => {\n const {\n children,\n className,\n startAccessory,\n endAccessory,\n onBack,\n backButtonProps,\n onClose,\n closeButtonProps,\n ...rest\n } = props;\n\n // The discriminated union on `PopoverHeaderProps` guarantees that whenever\n // `onBack` is set, `backButtonProps` is also set (with a required\n // `ariaLabel`). Same for `onClose` / `closeButtonProps`. The `&&` checks\n // below give TypeScript a narrowing point and double as runtime guards.\n // The auto-rendered icon buttons default to `text-inherit` so they pick\n // up the popover surface color (preserving the legacy `IconColor.inherit`\n // behavior); consumers can still override via `className` on the prop bag.\n const resolvedStartAccessory =\n startAccessory ??\n (onBack && backButtonProps ? (\n <ButtonIcon\n iconName={IconName.ArrowLeft}\n size={ButtonIconSize.Sm}\n onClick={onBack}\n {...backButtonProps}\n className={twMerge('text-inherit', backButtonProps.className)}\n />\n ) : null);\n\n const resolvedEndAccessory =\n endAccessory ??\n (onClose && closeButtonProps ? (\n <ButtonIcon\n iconName={IconName.Close}\n size={ButtonIconSize.Sm}\n onClick={onClose}\n {...closeButtonProps}\n className={twMerge('text-inherit', closeButtonProps.className)}\n />\n ) : null);\n\n const titleContent =\n typeof children === 'string' ? (\n <Text\n variant={TextVariant.HeadingSm}\n textAlign={TextAlign.Center}\n color={TextColor.Inherit}\n >\n {children}\n </Text>\n ) : (\n children\n );\n\n return (\n <header\n ref={ref}\n className={twMerge(\n // Three-column grid keeps the title visually centered regardless of\n // which side accessories are present — same layout primitive as\n // `HeaderBase`, replicated here so the outer element is the\n // semantic `<header>` (no extra wrapper div). Unlike `ModalHeader`,\n // PopoverHeader applies no outer padding — popover surfaces own\n // their own spacing.\n 'grid grid-cols-[1fr_auto_1fr] items-center',\n className,\n )}\n {...rest}\n >\n {resolvedStartAccessory && (\n <Box className=\"col-start-1 justify-self-start\">\n {resolvedStartAccessory}\n </Box>\n )}\n {titleContent !== undefined && titleContent !== null && (\n <Box className=\"col-start-2 col-end-3 w-full\">{titleContent}</Box>\n )}\n {resolvedEndAccessory && (\n <Box className=\"col-start-3 justify-self-end\">\n {resolvedEndAccessory}\n </Box>\n )}\n </header>\n );\n },\n);\n\nPopoverHeader.displayName = 'PopoverHeader';\n"]}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=PopoverHeader.types.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PopoverHeader.types.cjs","sourceRoot":"","sources":["../../../src/components/PopoverHeader/PopoverHeader.types.ts"],"names":[],"mappings":"","sourcesContent":["import type { ComponentProps, ReactNode } from 'react';\n\nimport type { ButtonIconProps } from '../ButtonIcon';\n\n/**\n * Props accepted by the auto-rendered back / close `ButtonIcon`. The\n * component owns `iconName` (ArrowLeft / Close) and `size`\n * (ButtonIconSize.Sm), so consumers cannot override them. The `data-*` index\n * signature lets test ids and other dataset attributes pass through\n * `Partial`/`Omit` indirection.\n *\n * `ariaLabel` is preserved as **required** (it is required on\n * `ButtonIconProps`). The component does not pull from any i18n context, so\n * consumers must pass a localized label explicitly:\n *\n * ```tsx\n * closeButtonProps={{ ariaLabel: t('close') }}\n * ```\n */\ntype PopoverHeaderButtonProps = Omit<\n ButtonIconProps,\n 'iconName' | 'size' | 'onClick'\n> & {\n [key: `data-${string}`]: string | undefined;\n};\n\n/**\n * Discriminated pair: `onBack` and `backButtonProps` are co-required. If\n * `onBack` is set, the consumer must also provide `backButtonProps` with a\n * (required) `ariaLabel`. This enforces the no-i18n-fallback contract at\n * compile time without an internal English default.\n */\ntype PopoverHeaderBackProps =\n | { onBack?: undefined; backButtonProps?: undefined }\n | { onBack: () => void; backButtonProps: PopoverHeaderButtonProps };\n\n/**\n * Discriminated pair: `onClose` and `closeButtonProps` are co-required. Same\n * shape and rationale as `PopoverHeaderBackProps`.\n */\ntype PopoverHeaderCloseProps =\n | { onClose?: undefined; closeButtonProps?: undefined }\n | { onClose: () => void; closeButtonProps: PopoverHeaderButtonProps };\n\nexport type PopoverHeaderProps = Omit<ComponentProps<'header'>, 'children'> &\n PopoverHeaderBackProps &\n PopoverHeaderCloseProps & {\n /**\n * Header title content. When a string, it is auto-wrapped in a\n * `Text` with `TextVariant.HeadingSm`, `TextAlign.Center`, and\n * `TextColor.Inherit` so the title picks up the popover surface color.\n * When a `ReactNode`, it is rendered as-is.\n */\n children?: ReactNode;\n /**\n * Optional override for the start (left in LTR) slot. When provided, it\n * replaces the auto-rendered back button — even if `onBack` is set.\n */\n startAccessory?: ReactNode;\n /**\n * Optional override for the end (right in LTR) slot. When provided, it\n * replaces the auto-rendered close button — even if `onClose` is set.\n */\n endAccessory?: ReactNode;\n /**\n * Optional override for additional CSS classes applied to the\n * PopoverHeader root. Merged with the component's defaults via `twMerge`.\n */\n className?: string;\n };\n"]}
@@ -0,0 +1,70 @@
1
+ import type { ComponentProps, ReactNode } from "react";
2
+ import type { ButtonIconProps } from "../ButtonIcon/index.cjs";
3
+ /**
4
+ * Props accepted by the auto-rendered back / close `ButtonIcon`. The
5
+ * component owns `iconName` (ArrowLeft / Close) and `size`
6
+ * (ButtonIconSize.Sm), so consumers cannot override them. The `data-*` index
7
+ * signature lets test ids and other dataset attributes pass through
8
+ * `Partial`/`Omit` indirection.
9
+ *
10
+ * `ariaLabel` is preserved as **required** (it is required on
11
+ * `ButtonIconProps`). The component does not pull from any i18n context, so
12
+ * consumers must pass a localized label explicitly:
13
+ *
14
+ * ```tsx
15
+ * closeButtonProps={{ ariaLabel: t('close') }}
16
+ * ```
17
+ */
18
+ type PopoverHeaderButtonProps = Omit<ButtonIconProps, 'iconName' | 'size' | 'onClick'> & {
19
+ [key: `data-${string}`]: string | undefined;
20
+ };
21
+ /**
22
+ * Discriminated pair: `onBack` and `backButtonProps` are co-required. If
23
+ * `onBack` is set, the consumer must also provide `backButtonProps` with a
24
+ * (required) `ariaLabel`. This enforces the no-i18n-fallback contract at
25
+ * compile time without an internal English default.
26
+ */
27
+ type PopoverHeaderBackProps = {
28
+ onBack?: undefined;
29
+ backButtonProps?: undefined;
30
+ } | {
31
+ onBack: () => void;
32
+ backButtonProps: PopoverHeaderButtonProps;
33
+ };
34
+ /**
35
+ * Discriminated pair: `onClose` and `closeButtonProps` are co-required. Same
36
+ * shape and rationale as `PopoverHeaderBackProps`.
37
+ */
38
+ type PopoverHeaderCloseProps = {
39
+ onClose?: undefined;
40
+ closeButtonProps?: undefined;
41
+ } | {
42
+ onClose: () => void;
43
+ closeButtonProps: PopoverHeaderButtonProps;
44
+ };
45
+ export type PopoverHeaderProps = Omit<ComponentProps<'header'>, 'children'> & PopoverHeaderBackProps & PopoverHeaderCloseProps & {
46
+ /**
47
+ * Header title content. When a string, it is auto-wrapped in a
48
+ * `Text` with `TextVariant.HeadingSm`, `TextAlign.Center`, and
49
+ * `TextColor.Inherit` so the title picks up the popover surface color.
50
+ * When a `ReactNode`, it is rendered as-is.
51
+ */
52
+ children?: ReactNode;
53
+ /**
54
+ * Optional override for the start (left in LTR) slot. When provided, it
55
+ * replaces the auto-rendered back button — even if `onBack` is set.
56
+ */
57
+ startAccessory?: ReactNode;
58
+ /**
59
+ * Optional override for the end (right in LTR) slot. When provided, it
60
+ * replaces the auto-rendered close button — even if `onClose` is set.
61
+ */
62
+ endAccessory?: ReactNode;
63
+ /**
64
+ * Optional override for additional CSS classes applied to the
65
+ * PopoverHeader root. Merged with the component's defaults via `twMerge`.
66
+ */
67
+ className?: string;
68
+ };
69
+ export {};
70
+ //# sourceMappingURL=PopoverHeader.types.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PopoverHeader.types.d.cts","sourceRoot":"","sources":["../../../src/components/PopoverHeader/PopoverHeader.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,cAAc;AAEvD,OAAO,KAAK,EAAE,eAAe,EAAE,gCAAsB;AAErD;;;;;;;;;;;;;;GAcG;AACH,KAAK,wBAAwB,GAAG,IAAI,CAClC,eAAe,EACf,UAAU,GAAG,MAAM,GAAG,SAAS,CAChC,GAAG;IACF,CAAC,GAAG,EAAE,QAAQ,MAAM,EAAE,GAAG,MAAM,GAAG,SAAS,CAAC;CAC7C,CAAC;AAEF;;;;;GAKG;AACH,KAAK,sBAAsB,GACvB;IAAE,MAAM,CAAC,EAAE,SAAS,CAAC;IAAC,eAAe,CAAC,EAAE,SAAS,CAAA;CAAE,GACnD;IAAE,MAAM,EAAE,MAAM,IAAI,CAAC;IAAC,eAAe,EAAE,wBAAwB,CAAA;CAAE,CAAC;AAEtE;;;GAGG;AACH,KAAK,uBAAuB,GACxB;IAAE,OAAO,CAAC,EAAE,SAAS,CAAC;IAAC,gBAAgB,CAAC,EAAE,SAAS,CAAA;CAAE,GACrD;IAAE,OAAO,EAAE,MAAM,IAAI,CAAC;IAAC,gBAAgB,EAAE,wBAAwB,CAAA;CAAE,CAAC;AAExE,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC,GACzE,sBAAsB,GACtB,uBAAuB,GAAG;IACxB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;;OAGG;IACH,cAAc,CAAC,EAAE,SAAS,CAAC;IAC3B;;;OAGG;IACH,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC"}