@lidofinance/lido-app-ui 1.12.0 → 1.13.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 (229) hide show
  1. package/README.md +1 -1
  2. package/dist/README.md +1 -1
  3. package/dist/cjs/address/Address.cjs +50 -0
  4. package/dist/cjs/address/Address.cjs.map +1 -0
  5. package/dist/cjs/address/Address.module.css.cjs +6 -0
  6. package/dist/cjs/address/Address.module.css.cjs.map +1 -0
  7. package/dist/cjs/address-button/AddressButton.cjs +49 -0
  8. package/dist/cjs/address-button/AddressButton.cjs.map +1 -0
  9. package/dist/cjs/address-button/AddressButton.module.css.cjs +6 -0
  10. package/dist/cjs/address-button/AddressButton.module.css.cjs.map +1 -0
  11. package/dist/cjs/button/Button.cjs +1 -1
  12. package/dist/cjs/button/Button.cjs.map +1 -1
  13. package/dist/cjs/button/Button.module.css.cjs +1 -1
  14. package/dist/cjs/copy/Copy.cjs +55 -0
  15. package/dist/cjs/copy/Copy.cjs.map +1 -0
  16. package/dist/cjs/copy/Copy.module.css.cjs +6 -0
  17. package/dist/cjs/copy/Copy.module.css.cjs.map +1 -0
  18. package/dist/cjs/copy/useCopy.cjs +33 -0
  19. package/dist/cjs/copy/useCopy.cjs.map +1 -0
  20. package/dist/cjs/data-list/DataList.module.css.cjs +1 -1
  21. package/dist/cjs/data-list/DataListRow.cjs +5 -12
  22. package/dist/cjs/data-list/DataListRow.cjs.map +1 -1
  23. package/dist/cjs/hex/Hex.cjs +41 -0
  24. package/dist/cjs/hex/Hex.cjs.map +1 -0
  25. package/dist/cjs/hex/Hex.module.css.cjs +6 -0
  26. package/dist/cjs/hex/Hex.module.css.cjs.map +1 -0
  27. package/dist/cjs/hex/trimHex.cjs +15 -0
  28. package/dist/cjs/hex/trimHex.cjs.map +1 -0
  29. package/dist/cjs/icon-button/CloseButton.cjs +27 -0
  30. package/dist/cjs/icon-button/CloseButton.cjs.map +1 -0
  31. package/dist/cjs/icon-button/IconButton.cjs +2 -1
  32. package/dist/cjs/icon-button/IconButton.cjs.map +1 -1
  33. package/dist/cjs/icon-button/IconButton.module.css.cjs +1 -1
  34. package/dist/cjs/index.cjs +35 -1
  35. package/dist/cjs/index.cjs.map +1 -1
  36. package/dist/cjs/index.css +6 -4
  37. package/dist/cjs/info-tooltip/InfoTooltip.cjs +34 -0
  38. package/dist/cjs/info-tooltip/InfoTooltip.cjs.map +1 -0
  39. package/dist/cjs/info-tooltip/InfoTooltip.module.css.cjs +6 -0
  40. package/dist/cjs/info-tooltip/InfoTooltip.module.css.cjs.map +1 -0
  41. package/dist/cjs/input/Input.cjs +3 -8
  42. package/dist/cjs/input/Input.cjs.map +1 -1
  43. package/dist/cjs/input/Input.module.css.cjs +1 -1
  44. package/dist/cjs/modal/Modal.cjs +2 -6
  45. package/dist/cjs/modal/Modal.cjs.map +1 -1
  46. package/dist/cjs/rich-input/RichInput.cjs +4 -7
  47. package/dist/cjs/rich-input/RichInput.cjs.map +1 -1
  48. package/dist/cjs/rich-input/RichInput.module.css.cjs +1 -1
  49. package/dist/cjs/section-title/SectionTitle.cjs +8 -10
  50. package/dist/cjs/section-title/SectionTitle.cjs.map +1 -1
  51. package/dist/cjs/section-title/SectionTitle.module.css.cjs +1 -1
  52. package/dist/cjs/sidebar/Sidebar.cjs +134 -0
  53. package/dist/cjs/sidebar/Sidebar.cjs.map +1 -0
  54. package/dist/cjs/sidebar/Sidebar.module.css.cjs +6 -0
  55. package/dist/cjs/sidebar/Sidebar.module.css.cjs.map +1 -0
  56. package/dist/cjs/sidebar/SidebarContext.cjs +13 -0
  57. package/dist/cjs/sidebar/SidebarContext.cjs.map +1 -0
  58. package/dist/cjs/sidebar/SidebarGroup.cjs +37 -0
  59. package/dist/cjs/sidebar/SidebarGroup.cjs.map +1 -0
  60. package/dist/cjs/sidebar/SidebarGroup.module.css.cjs +6 -0
  61. package/dist/cjs/sidebar/SidebarGroup.module.css.cjs.map +1 -0
  62. package/dist/cjs/sidebar/SidebarInset.cjs +25 -0
  63. package/dist/cjs/sidebar/SidebarInset.cjs.map +1 -0
  64. package/dist/cjs/sidebar/SidebarInset.module.css.cjs +6 -0
  65. package/dist/cjs/sidebar/SidebarInset.module.css.cjs.map +1 -0
  66. package/dist/cjs/sidebar/SidebarItem.cjs +42 -0
  67. package/dist/cjs/sidebar/SidebarItem.cjs.map +1 -0
  68. package/dist/cjs/sidebar/SidebarItem.module.css.cjs +6 -0
  69. package/dist/cjs/sidebar/SidebarItem.module.css.cjs.map +1 -0
  70. package/dist/cjs/sidebar/SidebarLayout.cjs +41 -0
  71. package/dist/cjs/sidebar/SidebarLayout.cjs.map +1 -0
  72. package/dist/cjs/sidebar/SidebarLayout.module.css.cjs +6 -0
  73. package/dist/cjs/sidebar/SidebarLayout.module.css.cjs.map +1 -0
  74. package/dist/cjs/sidebar/SidebarToggle.cjs +44 -0
  75. package/dist/cjs/sidebar/SidebarToggle.cjs.map +1 -0
  76. package/dist/cjs/sidebar/SidebarToggle.module.css.cjs +6 -0
  77. package/dist/cjs/sidebar/SidebarToggle.module.css.cjs.map +1 -0
  78. package/dist/cjs/sidebar/useSidebarDrawer.cjs +47 -0
  79. package/dist/cjs/sidebar/useSidebarDrawer.cjs.map +1 -0
  80. package/dist/cjs/stat-item/StatItem.cjs +3 -8
  81. package/dist/cjs/stat-item/StatItem.cjs.map +1 -1
  82. package/dist/cjs/stat-item/StatItem.module.css.cjs +1 -1
  83. package/dist/cjs/utils/surface.module.css.cjs +6 -0
  84. package/dist/cjs/utils/surface.module.css.cjs.map +1 -0
  85. package/dist/esm/address/Address.mjs +46 -0
  86. package/dist/esm/address/Address.mjs.map +1 -0
  87. package/dist/esm/address/Address.module.css.mjs +4 -0
  88. package/dist/esm/address/Address.module.css.mjs.map +1 -0
  89. package/dist/esm/address-button/AddressButton.mjs +45 -0
  90. package/dist/esm/address-button/AddressButton.mjs.map +1 -0
  91. package/dist/esm/address-button/AddressButton.module.css.mjs +4 -0
  92. package/dist/esm/address-button/AddressButton.module.css.mjs.map +1 -0
  93. package/dist/esm/button/Button.mjs +1 -1
  94. package/dist/esm/button/Button.mjs.map +1 -1
  95. package/dist/esm/button/Button.module.css.mjs +1 -1
  96. package/dist/esm/copy/Copy.mjs +51 -0
  97. package/dist/esm/copy/Copy.mjs.map +1 -0
  98. package/dist/esm/copy/Copy.module.css.mjs +4 -0
  99. package/dist/esm/copy/Copy.module.css.mjs.map +1 -0
  100. package/dist/esm/copy/useCopy.mjs +29 -0
  101. package/dist/esm/copy/useCopy.mjs.map +1 -0
  102. package/dist/esm/data-list/DataList.module.css.mjs +1 -1
  103. package/dist/esm/data-list/DataListRow.mjs +5 -12
  104. package/dist/esm/data-list/DataListRow.mjs.map +1 -1
  105. package/dist/esm/hex/Hex.mjs +37 -0
  106. package/dist/esm/hex/Hex.mjs.map +1 -0
  107. package/dist/esm/hex/Hex.module.css.mjs +4 -0
  108. package/dist/esm/hex/Hex.module.css.mjs.map +1 -0
  109. package/dist/esm/hex/trimHex.mjs +11 -0
  110. package/dist/esm/hex/trimHex.mjs.map +1 -0
  111. package/dist/esm/icon-button/CloseButton.mjs +23 -0
  112. package/dist/esm/icon-button/CloseButton.mjs.map +1 -0
  113. package/dist/esm/icon-button/IconButton.mjs +2 -1
  114. package/dist/esm/icon-button/IconButton.mjs.map +1 -1
  115. package/dist/esm/icon-button/IconButton.module.css.mjs +1 -1
  116. package/dist/esm/index.css +6 -4
  117. package/dist/esm/index.mjs +22 -0
  118. package/dist/esm/index.mjs.map +1 -1
  119. package/dist/esm/info-tooltip/InfoTooltip.mjs +30 -0
  120. package/dist/esm/info-tooltip/InfoTooltip.mjs.map +1 -0
  121. package/dist/esm/info-tooltip/InfoTooltip.module.css.mjs +4 -0
  122. package/dist/esm/info-tooltip/InfoTooltip.module.css.mjs.map +1 -0
  123. package/dist/esm/input/Input.mjs +3 -8
  124. package/dist/esm/input/Input.mjs.map +1 -1
  125. package/dist/esm/input/Input.module.css.mjs +1 -1
  126. package/dist/esm/modal/Modal.mjs +2 -6
  127. package/dist/esm/modal/Modal.mjs.map +1 -1
  128. package/dist/esm/rich-input/RichInput.mjs +4 -7
  129. package/dist/esm/rich-input/RichInput.mjs.map +1 -1
  130. package/dist/esm/rich-input/RichInput.module.css.mjs +1 -1
  131. package/dist/esm/section-title/SectionTitle.mjs +8 -10
  132. package/dist/esm/section-title/SectionTitle.mjs.map +1 -1
  133. package/dist/esm/section-title/SectionTitle.module.css.mjs +1 -1
  134. package/dist/esm/sidebar/Sidebar.mjs +129 -0
  135. package/dist/esm/sidebar/Sidebar.mjs.map +1 -0
  136. package/dist/esm/sidebar/Sidebar.module.css.mjs +4 -0
  137. package/dist/esm/sidebar/Sidebar.module.css.mjs.map +1 -0
  138. package/dist/esm/sidebar/SidebarContext.mjs +8 -0
  139. package/dist/esm/sidebar/SidebarContext.mjs.map +1 -0
  140. package/dist/esm/sidebar/SidebarGroup.mjs +33 -0
  141. package/dist/esm/sidebar/SidebarGroup.mjs.map +1 -0
  142. package/dist/esm/sidebar/SidebarGroup.module.css.mjs +4 -0
  143. package/dist/esm/sidebar/SidebarGroup.module.css.mjs.map +1 -0
  144. package/dist/esm/sidebar/SidebarInset.mjs +21 -0
  145. package/dist/esm/sidebar/SidebarInset.mjs.map +1 -0
  146. package/dist/esm/sidebar/SidebarInset.module.css.mjs +4 -0
  147. package/dist/esm/sidebar/SidebarInset.module.css.mjs.map +1 -0
  148. package/dist/esm/sidebar/SidebarItem.mjs +38 -0
  149. package/dist/esm/sidebar/SidebarItem.mjs.map +1 -0
  150. package/dist/esm/sidebar/SidebarItem.module.css.mjs +4 -0
  151. package/dist/esm/sidebar/SidebarItem.module.css.mjs.map +1 -0
  152. package/dist/esm/sidebar/SidebarLayout.mjs +37 -0
  153. package/dist/esm/sidebar/SidebarLayout.mjs.map +1 -0
  154. package/dist/esm/sidebar/SidebarLayout.module.css.mjs +4 -0
  155. package/dist/esm/sidebar/SidebarLayout.module.css.mjs.map +1 -0
  156. package/dist/esm/sidebar/SidebarToggle.mjs +40 -0
  157. package/dist/esm/sidebar/SidebarToggle.mjs.map +1 -0
  158. package/dist/esm/sidebar/SidebarToggle.module.css.mjs +4 -0
  159. package/dist/esm/sidebar/SidebarToggle.module.css.mjs.map +1 -0
  160. package/dist/esm/sidebar/useSidebarDrawer.mjs +43 -0
  161. package/dist/esm/sidebar/useSidebarDrawer.mjs.map +1 -0
  162. package/dist/esm/stat-item/StatItem.mjs +3 -8
  163. package/dist/esm/stat-item/StatItem.mjs.map +1 -1
  164. package/dist/esm/stat-item/StatItem.module.css.mjs +1 -1
  165. package/dist/esm/utils/surface.module.css.mjs +4 -0
  166. package/dist/esm/utils/surface.module.css.mjs.map +1 -0
  167. package/dist/index.css +6 -4
  168. package/dist/types/address/Address.d.ts +16 -0
  169. package/dist/types/address/Address.d.ts.map +1 -0
  170. package/dist/types/address/index.d.ts +3 -0
  171. package/dist/types/address/index.d.ts.map +1 -0
  172. package/dist/types/address-button/AddressButton.d.ts +13 -0
  173. package/dist/types/address-button/AddressButton.d.ts.map +1 -0
  174. package/dist/types/address-button/index.d.ts +3 -0
  175. package/dist/types/address-button/index.d.ts.map +1 -0
  176. package/dist/types/colors/colorTokens.d.ts.map +1 -1
  177. package/dist/types/copy/Copy.d.ts +10 -0
  178. package/dist/types/copy/Copy.d.ts.map +1 -0
  179. package/dist/types/copy/index.d.ts +5 -0
  180. package/dist/types/copy/index.d.ts.map +1 -0
  181. package/dist/types/copy/useCopy.d.ts +9 -0
  182. package/dist/types/copy/useCopy.d.ts.map +1 -0
  183. package/dist/types/data-list/DataListRow.d.ts.map +1 -1
  184. package/dist/types/hex/Hex.d.ts +10 -0
  185. package/dist/types/hex/Hex.d.ts.map +1 -0
  186. package/dist/types/hex/index.d.ts +4 -0
  187. package/dist/types/hex/index.d.ts.map +1 -0
  188. package/dist/types/hex/trimHex.d.ts +2 -0
  189. package/dist/types/hex/trimHex.d.ts.map +1 -0
  190. package/dist/types/hooks/useIsomorphicLayoutEffect.d.ts +2 -2
  191. package/dist/types/hooks/useIsomorphicLayoutEffect.d.ts.map +1 -1
  192. package/dist/types/icon-button/CloseButton.d.ts +9 -0
  193. package/dist/types/icon-button/CloseButton.d.ts.map +1 -0
  194. package/dist/types/icon-button/IconButton.d.ts.map +1 -1
  195. package/dist/types/icon-button/index.d.ts +2 -0
  196. package/dist/types/icon-button/index.d.ts.map +1 -1
  197. package/dist/types/index.d.ts +8 -0
  198. package/dist/types/index.d.ts.map +1 -1
  199. package/dist/types/info-tooltip/InfoTooltip.d.ts +12 -0
  200. package/dist/types/info-tooltip/InfoTooltip.d.ts.map +1 -0
  201. package/dist/types/info-tooltip/index.d.ts +3 -0
  202. package/dist/types/info-tooltip/index.d.ts.map +1 -0
  203. package/dist/types/input/Input.d.ts.map +1 -1
  204. package/dist/types/modal/Modal.d.ts.map +1 -1
  205. package/dist/types/rich-input/RichInput.d.ts.map +1 -1
  206. package/dist/types/section-title/SectionTitle.d.ts +7 -2
  207. package/dist/types/section-title/SectionTitle.d.ts.map +1 -1
  208. package/dist/types/section-title/index.d.ts +1 -1
  209. package/dist/types/section-title/index.d.ts.map +1 -1
  210. package/dist/types/sidebar/Sidebar.d.ts +15 -0
  211. package/dist/types/sidebar/Sidebar.d.ts.map +1 -0
  212. package/dist/types/sidebar/SidebarContext.d.ts +6 -0
  213. package/dist/types/sidebar/SidebarContext.d.ts.map +1 -0
  214. package/dist/types/sidebar/SidebarGroup.d.ts +7 -0
  215. package/dist/types/sidebar/SidebarGroup.d.ts.map +1 -0
  216. package/dist/types/sidebar/SidebarInset.d.ts +5 -0
  217. package/dist/types/sidebar/SidebarInset.d.ts.map +1 -0
  218. package/dist/types/sidebar/SidebarItem.d.ts +10 -0
  219. package/dist/types/sidebar/SidebarItem.d.ts.map +1 -0
  220. package/dist/types/sidebar/SidebarLayout.d.ts +18 -0
  221. package/dist/types/sidebar/SidebarLayout.d.ts.map +1 -0
  222. package/dist/types/sidebar/SidebarToggle.d.ts +13 -0
  223. package/dist/types/sidebar/SidebarToggle.d.ts.map +1 -0
  224. package/dist/types/sidebar/index.d.ts +17 -0
  225. package/dist/types/sidebar/index.d.ts.map +1 -0
  226. package/dist/types/sidebar/useSidebarDrawer.d.ts +23 -0
  227. package/dist/types/sidebar/useSidebarDrawer.d.ts.map +1 -0
  228. package/dist/types/stat-item/StatItem.d.ts.map +1 -1
  229. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"Input.cjs","sources":["../../../src/input/Input.tsx"],"sourcesContent":["import {\n forwardRef,\n useId,\n type InputHTMLAttributes,\n type ReactNode,\n} from 'react'\n\nimport cn from 'classnames'\n\nimport { IconInfo } from '../icons'\nimport { Tooltip } from '../tooltip'\nimport styles from './Input.module.css'\n\nexport type InputSize = 'default' | 'small'\n\nexport type InputDataTestId = {\n root?: string\n label?: string\n icon?: string\n input?: string\n error?: string\n description?: string\n}\n\nexport type InputProps = Omit<InputHTMLAttributes<HTMLInputElement>, 'size'> & {\n size?: InputSize\n icon?: ReactNode\n label?: ReactNode\n tooltip?: ReactNode\n description?: ReactNode\n error?: ReactNode | boolean\n dataTestId?: InputDataTestId\n}\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\n (\n {\n size = 'default',\n icon,\n label,\n tooltip,\n description,\n error,\n disabled,\n className,\n id,\n dataTestId,\n ...rest\n },\n ref,\n ) => {\n const fallbackId = useId()\n const inputId = id ?? fallbackId\n const errorId = `${inputId}-error`\n\n const hasError = Boolean(error)\n const errorMessage = typeof error === 'boolean' ? null : error\n const showErrorMessage = errorMessage != null\n\n return (\n <div\n className={cn(styles.field, className)}\n data-testid={dataTestId?.root}\n >\n {label != null ? (\n <span className={styles.labelRow}>\n <label\n className={styles.label}\n htmlFor={inputId}\n data-testid={dataTestId?.label}\n >\n {label}\n </label>\n {tooltip != null ? (\n <Tooltip content={tooltip}>\n <IconInfo className={styles.tooltipIcon} aria-hidden='true' />\n </Tooltip>\n ) : null}\n </span>\n ) : null}\n <label\n className={cn(styles.root, styles[size], {\n [styles.error]: hasError,\n [styles.disabled]: disabled,\n })}\n >\n {icon ? (\n <span\n className={styles.icon}\n aria-hidden='true'\n data-testid={dataTestId?.icon}\n >\n {icon}\n </span>\n ) : null}\n <input\n ref={ref}\n id={inputId}\n className={styles.input}\n disabled={disabled}\n aria-invalid={hasError || undefined}\n aria-describedby={showErrorMessage ? errorId : undefined}\n data-testid={dataTestId?.input}\n {...rest}\n />\n </label>\n {showErrorMessage ? (\n <p\n id={errorId}\n className={styles.errorText}\n role='alert'\n data-testid={dataTestId?.error}\n >\n {errorMessage}\n </p>\n ) : null}\n {description != null ? (\n <p\n className={styles.description}\n data-testid={dataTestId?.description}\n >\n {description}\n </p>\n ) : null}\n </div>\n )\n },\n)\n\nInput.displayName = 'Input'\n"],"names":["Input","forwardRef","_ref","ref","size","icon","label","tooltip","description","error","disabled","className","id","dataTestId","rest","fallbackId","useId","inputId","errorId","hasError","Boolean","errorMessage","showErrorMessage","_jsxs","cn","styles","field","root","children","labelRow","_jsx","htmlFor","Tooltip","content","IconInfo","tooltipIcon","input","undefined","errorText","role","displayName"],"mappings":";;;;;;;;;;;AAkCO,MAAMA,KAAK,gBAAGC,gBAAU,CAC7B,CAAAC,IAAA,EAcEC,GAAG,KACA;EAAA,IAdH;AACEC,IAAAA,IAAI,GAAG,SAAS;IAChBC,IAAI;IACJC,KAAK;IACLC,OAAO;IACPC,WAAW;IACXC,KAAK;IACLC,QAAQ;IACRC,SAAS;IACTC,EAAE;IACFC,UAAU;IACV,GAAGC,IAAAA;AACL,GAAC,GAAAZ,IAAA,CAAA;AAGD,EAAA,MAAMa,UAAU,GAAGC,WAAK,EAAE,CAAA;AAC1B,EAAA,MAAMC,OAAO,GAAGL,EAAE,IAAIG,UAAU,CAAA;AAChC,EAAA,MAAMG,OAAO,GAAG,CAAGD,EAAAA,OAAO,CAAQ,MAAA,CAAA,CAAA;AAElC,EAAA,MAAME,QAAQ,GAAGC,OAAO,CAACX,KAAK,CAAC,CAAA;EAC/B,MAAMY,YAAY,GAAG,OAAOZ,KAAK,KAAK,SAAS,GAAG,IAAI,GAAGA,KAAK,CAAA;AAC9D,EAAA,MAAMa,gBAAgB,GAAGD,YAAY,IAAI,IAAI,CAAA;AAE7C,EAAA,oBACEE,eAAA,CAAA,KAAA,EAAA;IACEZ,SAAS,EAAEa,EAAE,CAACC,YAAM,CAACC,KAAK,EAAEf,SAAS,CAAE;IACvC,aAAaE,EAAAA,UAAU,EAAEc,IAAK;AAAAC,IAAAA,QAAA,EAE7BtB,CAAAA,KAAK,IAAI,IAAI,gBACZiB,eAAA,CAAA,MAAA,EAAA;MAAMZ,SAAS,EAAEc,YAAM,CAACI,QAAS;AAAAD,MAAAA,QAAA,gBAC/BE,cAAA,CAAA,OAAA,EAAA;QACEnB,SAAS,EAAEc,YAAM,CAACnB,KAAM;AACxByB,QAAAA,OAAO,EAAEd,OAAQ;QACjB,aAAaJ,EAAAA,UAAU,EAAEP,KAAM;AAAAsB,QAAAA,QAAA,EAE9BtB,KAAAA;OACI,CAAC,EACPC,OAAO,IAAI,IAAI,gBACduB,cAAA,CAACE,eAAO,EAAA;AAACC,QAAAA,OAAO,EAAE1B,OAAQ;QAAAqB,QAAA,eACxBE,cAAA,CAACI,iBAAQ,EAAA;UAACvB,SAAS,EAAEc,YAAM,CAACU,WAAY;UAAC,aAAY,EAAA,MAAA;SAAQ,CAAA;OACtD,CAAC,GACR,IAAI,CAAA;AAAA,KACJ,CAAC,GACL,IAAI,eACRZ,eAAA,CAAA,OAAA,EAAA;MACEZ,SAAS,EAAEa,EAAE,CAACC,YAAM,CAACE,IAAI,EAAEF,YAAM,CAACrB,IAAI,CAAC,EAAE;AACvC,QAAA,CAACqB,YAAM,CAAChB,KAAK,GAAGU,QAAQ;QACxB,CAACM,YAAM,CAACf,QAAQ,GAAGA,QAAAA;AACrB,OAAC,CAAE;MAAAkB,QAAA,EAAA,CAEFvB,IAAI,gBACHyB,cAAA,CAAA,MAAA,EAAA;QACEnB,SAAS,EAAEc,YAAM,CAACpB,IAAK;AACvB,QAAA,aAAA,EAAY,MAAM;QAClB,aAAaQ,EAAAA,UAAU,EAAER,IAAK;AAAAuB,QAAAA,QAAA,EAE7BvB,IAAAA;AAAI,OACD,CAAC,GACL,IAAI,eACRyB,cAAA,CAAA,OAAA,EAAA;AACE3B,QAAAA,GAAG,EAAEA,GAAI;AACTS,QAAAA,EAAE,EAAEK,OAAQ;QACZN,SAAS,EAAEc,YAAM,CAACW,KAAM;AACxB1B,QAAAA,QAAQ,EAAEA,QAAS;QACnB,cAAcS,EAAAA,QAAQ,IAAIkB,SAAU;AACpC,QAAA,kBAAA,EAAkBf,gBAAgB,GAAGJ,OAAO,GAAGmB,SAAU;QACzD,aAAaxB,EAAAA,UAAU,EAAEuB,KAAM;QAAA,GAC3BtB,IAAAA;AAAI,OACT,CAAC,CAAA;AAAA,KACG,CAAC,EACPQ,gBAAgB,gBACfQ,cAAA,CAAA,GAAA,EAAA;AACElB,MAAAA,EAAE,EAAEM,OAAQ;MACZP,SAAS,EAAEc,YAAM,CAACa,SAAU;AAC5BC,MAAAA,IAAI,EAAC,OAAO;MACZ,aAAa1B,EAAAA,UAAU,EAAEJ,KAAM;AAAAmB,MAAAA,QAAA,EAE9BP,YAAAA;KACA,CAAC,GACF,IAAI,EACPb,WAAW,IAAI,IAAI,gBAClBsB,cAAA,CAAA,GAAA,EAAA;MACEnB,SAAS,EAAEc,YAAM,CAACjB,WAAY;MAC9B,aAAaK,EAAAA,UAAU,EAAEL,WAAY;AAAAoB,MAAAA,QAAA,EAEpCpB,WAAAA;KACA,CAAC,GACF,IAAI,CAAA;AAAA,GACL,CAAC,CAAA;AAEV,CACF,EAAC;AAEDR,KAAK,CAACwC,WAAW,GAAG,OAAO;;;;"}
1
+ {"version":3,"file":"Input.cjs","sources":["../../../src/input/Input.tsx"],"sourcesContent":["import {\n forwardRef,\n useId,\n type InputHTMLAttributes,\n type ReactNode,\n} from 'react'\n\nimport cn from 'classnames'\n\nimport { InfoTooltip } from '../info-tooltip'\nimport styles from './Input.module.css'\n\nexport type InputSize = 'default' | 'small'\n\nexport type InputDataTestId = {\n root?: string\n label?: string\n icon?: string\n input?: string\n error?: string\n description?: string\n}\n\nexport type InputProps = Omit<InputHTMLAttributes<HTMLInputElement>, 'size'> & {\n size?: InputSize\n icon?: ReactNode\n label?: ReactNode\n tooltip?: ReactNode\n description?: ReactNode\n error?: ReactNode | boolean\n dataTestId?: InputDataTestId\n}\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\n (\n {\n size = 'default',\n icon,\n label,\n tooltip,\n description,\n error,\n disabled,\n className,\n id,\n dataTestId,\n ...rest\n },\n ref,\n ) => {\n const fallbackId = useId()\n const inputId = id ?? fallbackId\n const errorId = `${inputId}-error`\n\n const hasError = Boolean(error)\n const errorMessage = typeof error === 'boolean' ? null : error\n const showErrorMessage = errorMessage != null\n\n return (\n <div\n className={cn(styles.field, className)}\n data-testid={dataTestId?.root}\n >\n {label != null ? (\n <span className={styles.labelRow}>\n <label\n className={styles.label}\n htmlFor={inputId}\n data-testid={dataTestId?.label}\n >\n {label}\n </label>\n {tooltip != null ? <InfoTooltip content={tooltip} /> : null}\n </span>\n ) : null}\n <label\n className={cn(styles.root, styles[size], {\n [styles.error]: hasError,\n [styles.disabled]: disabled,\n })}\n >\n {icon ? (\n <span\n className={styles.icon}\n aria-hidden='true'\n data-testid={dataTestId?.icon}\n >\n {icon}\n </span>\n ) : null}\n <input\n ref={ref}\n id={inputId}\n className={styles.input}\n disabled={disabled}\n aria-invalid={hasError || undefined}\n aria-describedby={showErrorMessage ? errorId : undefined}\n data-testid={dataTestId?.input}\n {...rest}\n />\n </label>\n {showErrorMessage ? (\n <p\n id={errorId}\n className={styles.errorText}\n role='alert'\n data-testid={dataTestId?.error}\n >\n {errorMessage}\n </p>\n ) : null}\n {description != null ? (\n <p\n className={styles.description}\n data-testid={dataTestId?.description}\n >\n {description}\n </p>\n ) : null}\n </div>\n )\n },\n)\n\nInput.displayName = 'Input'\n"],"names":["Input","forwardRef","_ref","ref","size","icon","label","tooltip","description","error","disabled","className","id","dataTestId","rest","fallbackId","useId","inputId","errorId","hasError","Boolean","errorMessage","showErrorMessage","_jsxs","cn","styles","field","root","children","labelRow","_jsx","htmlFor","InfoTooltip","content","input","undefined","errorText","role","displayName"],"mappings":";;;;;;;;;;AAiCO,MAAMA,KAAK,gBAAGC,gBAAU,CAC7B,CAAAC,IAAA,EAcEC,GAAG,KACA;EAAA,IAdH;AACEC,IAAAA,IAAI,GAAG,SAAS;IAChBC,IAAI;IACJC,KAAK;IACLC,OAAO;IACPC,WAAW;IACXC,KAAK;IACLC,QAAQ;IACRC,SAAS;IACTC,EAAE;IACFC,UAAU;IACV,GAAGC,IAAAA;AACL,GAAC,GAAAZ,IAAA,CAAA;AAGD,EAAA,MAAMa,UAAU,GAAGC,WAAK,EAAE,CAAA;AAC1B,EAAA,MAAMC,OAAO,GAAGL,EAAE,IAAIG,UAAU,CAAA;AAChC,EAAA,MAAMG,OAAO,GAAG,CAAGD,EAAAA,OAAO,CAAQ,MAAA,CAAA,CAAA;AAElC,EAAA,MAAME,QAAQ,GAAGC,OAAO,CAACX,KAAK,CAAC,CAAA;EAC/B,MAAMY,YAAY,GAAG,OAAOZ,KAAK,KAAK,SAAS,GAAG,IAAI,GAAGA,KAAK,CAAA;AAC9D,EAAA,MAAMa,gBAAgB,GAAGD,YAAY,IAAI,IAAI,CAAA;AAE7C,EAAA,oBACEE,eAAA,CAAA,KAAA,EAAA;IACEZ,SAAS,EAAEa,EAAE,CAACC,YAAM,CAACC,KAAK,EAAEf,SAAS,CAAE;IACvC,aAAaE,EAAAA,UAAU,EAAEc,IAAK;AAAAC,IAAAA,QAAA,EAE7BtB,CAAAA,KAAK,IAAI,IAAI,gBACZiB,eAAA,CAAA,MAAA,EAAA;MAAMZ,SAAS,EAAEc,YAAM,CAACI,QAAS;AAAAD,MAAAA,QAAA,gBAC/BE,cAAA,CAAA,OAAA,EAAA;QACEnB,SAAS,EAAEc,YAAM,CAACnB,KAAM;AACxByB,QAAAA,OAAO,EAAEd,OAAQ;QACjB,aAAaJ,EAAAA,UAAU,EAAEP,KAAM;AAAAsB,QAAAA,QAAA,EAE9BtB,KAAAA;OACI,CAAC,EACPC,OAAO,IAAI,IAAI,gBAAGuB,cAAA,CAACE,uBAAW,EAAA;AAACC,QAAAA,OAAO,EAAE1B,OAAAA;OAAU,CAAC,GAAG,IAAI,CAAA;AAAA,KACvD,CAAC,GACL,IAAI,eACRgB,eAAA,CAAA,OAAA,EAAA;MACEZ,SAAS,EAAEa,EAAE,CAACC,YAAM,CAACE,IAAI,EAAEF,YAAM,CAACrB,IAAI,CAAC,EAAE;AACvC,QAAA,CAACqB,YAAM,CAAChB,KAAK,GAAGU,QAAQ;QACxB,CAACM,YAAM,CAACf,QAAQ,GAAGA,QAAAA;AACrB,OAAC,CAAE;MAAAkB,QAAA,EAAA,CAEFvB,IAAI,gBACHyB,cAAA,CAAA,MAAA,EAAA;QACEnB,SAAS,EAAEc,YAAM,CAACpB,IAAK;AACvB,QAAA,aAAA,EAAY,MAAM;QAClB,aAAaQ,EAAAA,UAAU,EAAER,IAAK;AAAAuB,QAAAA,QAAA,EAE7BvB,IAAAA;AAAI,OACD,CAAC,GACL,IAAI,eACRyB,cAAA,CAAA,OAAA,EAAA;AACE3B,QAAAA,GAAG,EAAEA,GAAI;AACTS,QAAAA,EAAE,EAAEK,OAAQ;QACZN,SAAS,EAAEc,YAAM,CAACS,KAAM;AACxBxB,QAAAA,QAAQ,EAAEA,QAAS;QACnB,cAAcS,EAAAA,QAAQ,IAAIgB,SAAU;AACpC,QAAA,kBAAA,EAAkBb,gBAAgB,GAAGJ,OAAO,GAAGiB,SAAU;QACzD,aAAatB,EAAAA,UAAU,EAAEqB,KAAM;QAAA,GAC3BpB,IAAAA;AAAI,OACT,CAAC,CAAA;AAAA,KACG,CAAC,EACPQ,gBAAgB,gBACfQ,cAAA,CAAA,GAAA,EAAA;AACElB,MAAAA,EAAE,EAAEM,OAAQ;MACZP,SAAS,EAAEc,YAAM,CAACW,SAAU;AAC5BC,MAAAA,IAAI,EAAC,OAAO;MACZ,aAAaxB,EAAAA,UAAU,EAAEJ,KAAM;AAAAmB,MAAAA,QAAA,EAE9BP,YAAAA;KACA,CAAC,GACF,IAAI,EACPb,WAAW,IAAI,IAAI,gBAClBsB,cAAA,CAAA,GAAA,EAAA;MACEnB,SAAS,EAAEc,YAAM,CAACjB,WAAY;MAC9B,aAAaK,EAAAA,UAAU,EAAEL,WAAY;AAAAoB,MAAAA,QAAA,EAEpCpB,WAAAA;KACA,CAAC,GACF,IAAI,CAAA;AAAA,GACL,CAAC,CAAA;AAEV,CACF,EAAC;AAEDR,KAAK,CAACsC,WAAW,GAAG,OAAO;;;;"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- const styles = {"field":"Input-module_field__INC-m","labelRow":"Input-module_labelRow__AT-Kg","label":"Input-module_label__1UZiS","tooltipIcon":"Input-module_tooltipIcon__W8NYt","root":"Input-module_root__zCKm2","input":"Input-module_input__paElZ","error":"Input-module_error__kcS-O","disabled":"Input-module_disabled__fbybp","default":"Input-module_default__UeWH5","small":"Input-module_small__ESlJP","icon":"Input-module_icon__2IBf9","errorText":"Input-module_errorText__jYCqP","description":"Input-module_description__EVlJm"};
3
+ const styles = {"field":"Input-module_field__INC-m","labelRow":"Input-module_labelRow__AT-Kg","label":"Input-module_label__1UZiS","root":"Input-module_root__zCKm2","input":"Input-module_input__paElZ","error":"Input-module_error__kcS-O","disabled":"Input-module_disabled__fbybp","default":"Input-module_default__UeWH5","small":"Input-module_small__ESlJP","icon":"Input-module_icon__2IBf9","errorText":"Input-module_errorText__jYCqP","description":"Input-module_description__EVlJm"};
4
4
 
5
5
  module.exports = styles;
6
6
  //# sourceMappingURL=Input.module.css.cjs.map
@@ -10,8 +10,7 @@ const Portal = require('../hooks/Portal.cjs');
10
10
  const useBodyScrollLock = require('../hooks/useBodyScrollLock.cjs');
11
11
  const useFocusTrap = require('../hooks/useFocusTrap.cjs');
12
12
  const useEscape = require('../hooks/useEscape.cjs');
13
- const IconButton = require('../icon-button/IconButton.cjs');
14
- const IconCross = require('../icons/components/base/IconCross.cjs');
13
+ const CloseButton = require('../icon-button/CloseButton.cjs');
15
14
 
16
15
  const ModalDialog = /*#__PURE__*/react.forwardRef((_ref, ref) => {
17
16
  let {
@@ -63,10 +62,7 @@ const ModalDialog = /*#__PURE__*/react.forwardRef((_ref, ref) => {
63
62
  className: cn(Modal_module.title, !title && Modal_module.titleHidden),
64
63
  "data-testid": dataTestId?.title,
65
64
  children: title
66
- }), onClose ? /*#__PURE__*/jsxRuntime.jsx(IconButton.IconButton, {
67
- variant: "outline",
68
- "aria-label": "Close",
69
- icon: /*#__PURE__*/jsxRuntime.jsx(IconCross.IconCross, {}),
65
+ }), onClose ? /*#__PURE__*/jsxRuntime.jsx(CloseButton.CloseButton, {
70
66
  onClick: onClose,
71
67
  dataTestId: {
72
68
  root: dataTestId?.closeButton
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.cjs","sources":["../../../src/modal/Modal.tsx"],"sourcesContent":["import {\n forwardRef,\n useId,\n useImperativeHandle,\n useRef,\n useState,\n type ComponentPropsWithoutRef,\n type MouseEvent,\n type ReactNode,\n} from 'react'\n\nimport { Portal, useBodyScrollLock, useEscape, useFocusTrap } from '../hooks'\nimport { IconButton } from '../icon-button'\nimport { IconCross } from '../icons'\nimport cn from 'classnames'\n\nimport styles from './Modal.module.css'\n\nexport type ModalDataTestId = {\n root?: string\n title?: string\n subtitle?: string\n closeButton?: string\n body?: string\n overlay?: string\n}\n\nexport type ModalProps = Omit<\n ComponentPropsWithoutRef<'div'>,\n 'title' | 'children'\n> & {\n title?: ReactNode\n subtitle?: ReactNode\n onClose?: () => void\n /** Wraps the card in a portaled scrim; enables Escape, focus trap and scroll lock. */\n withOverlay?: boolean\n bodyFill?: boolean\n /** Opt out of body scroll lock (overlay only). Default true. */\n lockScroll?: boolean\n /** Opt out of Escape-to-close (overlay only). Default true. */\n closeOnEscape?: boolean\n /** Opt out of closing on scrim click (overlay only). Default true. */\n closeOnOverlayClick?: boolean\n children: ReactNode\n dataTestId?: ModalDataTestId\n}\n\nconst ModalDialog = forwardRef<HTMLDivElement, ModalProps>(\n (\n {\n title,\n subtitle,\n onClose,\n withOverlay = false,\n bodyFill = false,\n lockScroll = true,\n closeOnEscape = true,\n closeOnOverlayClick = true,\n children,\n className,\n dataTestId,\n ...rest\n },\n ref,\n ) => {\n const titleId = useId()\n const [cardEl, setCardEl] = useState<HTMLDivElement | null>(null)\n const backdropMouseDown = useRef(false)\n\n useImperativeHandle(ref, () => cardEl as HTMLDivElement, [cardEl])\n useBodyScrollLock(withOverlay && lockScroll)\n useFocusTrap(cardEl, withOverlay)\n // Stays registered with closeOnEscape={false} so Escape doesn't fall through to an underlying overlay.\n useEscape(withOverlay, () => {\n if (closeOnEscape) onClose?.()\n })\n\n const handleOverlayMouseDown = (event: MouseEvent<HTMLDivElement>) => {\n backdropMouseDown.current = event.target === event.currentTarget\n }\n\n const handleOverlayClick = (event: MouseEvent<HTMLDivElement>) => {\n if (\n closeOnOverlayClick &&\n backdropMouseDown.current &&\n event.target === event.currentTarget\n ) {\n onClose?.()\n }\n }\n\n const card = (\n <div\n role='dialog'\n aria-modal={withOverlay || undefined}\n aria-labelledby={title ? titleId : undefined}\n data-testid={dataTestId?.root}\n {...rest}\n ref={setCardEl}\n className={cn(styles.card, bodyFill && styles.cardBodyFill, className)}\n >\n <div className={styles.headerGroup}>\n <div className={styles.header}>\n <span\n id={titleId}\n className={cn(styles.title, !title && styles.titleHidden)}\n data-testid={dataTestId?.title}\n >\n {title}\n </span>\n {onClose ? (\n <IconButton\n variant='outline'\n aria-label='Close'\n icon={<IconCross />}\n onClick={onClose}\n dataTestId={{ root: dataTestId?.closeButton }}\n />\n ) : null}\n </div>\n {subtitle != null ? (\n <p className={styles.subtitle} data-testid={dataTestId?.subtitle}>\n {subtitle}\n </p>\n ) : null}\n </div>\n <div className={styles.body} data-testid={dataTestId?.body}>\n {children}\n </div>\n </div>\n )\n\n if (!withOverlay) return card\n\n return (\n // Pointer-only: a focusable backdrop would add a tab stop before the dialog; keyboard closes via Escape.\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions\n <div\n className={styles.overlay}\n onMouseDown={handleOverlayMouseDown}\n onClick={handleOverlayClick}\n data-testid={dataTestId?.overlay}\n >\n {card}\n </div>\n )\n },\n)\n\nModalDialog.displayName = 'ModalDialog'\n\n// Hooks live in ModalDialog so they run once the portal has mounted its content.\nexport const Modal = forwardRef<HTMLDivElement, ModalProps>((props, ref) => {\n const dialog = <ModalDialog ref={ref} {...props} />\n return props.withOverlay ? <Portal>{dialog}</Portal> : dialog\n})\n\nModal.displayName = 'Modal'\n"],"names":["ModalDialog","forwardRef","_ref","ref","title","subtitle","onClose","withOverlay","bodyFill","lockScroll","closeOnEscape","closeOnOverlayClick","children","className","dataTestId","rest","titleId","useId","cardEl","setCardEl","useState","backdropMouseDown","useRef","useImperativeHandle","useBodyScrollLock","useFocusTrap","useEscape","handleOverlayMouseDown","event","current","target","currentTarget","handleOverlayClick","card","_jsxs","role","undefined","root","cn","styles","cardBodyFill","headerGroup","header","_jsx","id","titleHidden","IconButton","variant","icon","IconCross","onClick","closeButton","body","overlay","onMouseDown","displayName","Modal","props","dialog","Portal"],"mappings":"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"}
1
+ {"version":3,"file":"Modal.cjs","sources":["../../../src/modal/Modal.tsx"],"sourcesContent":["import {\n forwardRef,\n useId,\n useImperativeHandle,\n useRef,\n useState,\n type ComponentPropsWithoutRef,\n type MouseEvent,\n type ReactNode,\n} from 'react'\n\nimport { Portal, useBodyScrollLock, useEscape, useFocusTrap } from '../hooks'\nimport { CloseButton } from '../icon-button'\nimport cn from 'classnames'\n\nimport styles from './Modal.module.css'\n\nexport type ModalDataTestId = {\n root?: string\n title?: string\n subtitle?: string\n closeButton?: string\n body?: string\n overlay?: string\n}\n\nexport type ModalProps = Omit<\n ComponentPropsWithoutRef<'div'>,\n 'title' | 'children'\n> & {\n title?: ReactNode\n subtitle?: ReactNode\n onClose?: () => void\n /** Wraps the card in a portaled scrim; enables Escape, focus trap and scroll lock. */\n withOverlay?: boolean\n bodyFill?: boolean\n /** Opt out of body scroll lock (overlay only). Default true. */\n lockScroll?: boolean\n /** Opt out of Escape-to-close (overlay only). Default true. */\n closeOnEscape?: boolean\n /** Opt out of closing on scrim click (overlay only). Default true. */\n closeOnOverlayClick?: boolean\n children: ReactNode\n dataTestId?: ModalDataTestId\n}\n\nconst ModalDialog = forwardRef<HTMLDivElement, ModalProps>(\n (\n {\n title,\n subtitle,\n onClose,\n withOverlay = false,\n bodyFill = false,\n lockScroll = true,\n closeOnEscape = true,\n closeOnOverlayClick = true,\n children,\n className,\n dataTestId,\n ...rest\n },\n ref,\n ) => {\n const titleId = useId()\n const [cardEl, setCardEl] = useState<HTMLDivElement | null>(null)\n const backdropMouseDown = useRef(false)\n\n useImperativeHandle(ref, () => cardEl as HTMLDivElement, [cardEl])\n useBodyScrollLock(withOverlay && lockScroll)\n useFocusTrap(cardEl, withOverlay)\n // Stays registered with closeOnEscape={false} so Escape doesn't fall through to an underlying overlay.\n useEscape(withOverlay, () => {\n if (closeOnEscape) onClose?.()\n })\n\n const handleOverlayMouseDown = (event: MouseEvent<HTMLDivElement>) => {\n backdropMouseDown.current = event.target === event.currentTarget\n }\n\n const handleOverlayClick = (event: MouseEvent<HTMLDivElement>) => {\n if (\n closeOnOverlayClick &&\n backdropMouseDown.current &&\n event.target === event.currentTarget\n ) {\n onClose?.()\n }\n }\n\n const card = (\n <div\n role='dialog'\n aria-modal={withOverlay || undefined}\n aria-labelledby={title ? titleId : undefined}\n data-testid={dataTestId?.root}\n {...rest}\n ref={setCardEl}\n className={cn(styles.card, bodyFill && styles.cardBodyFill, className)}\n >\n <div className={styles.headerGroup}>\n <div className={styles.header}>\n <span\n id={titleId}\n className={cn(styles.title, !title && styles.titleHidden)}\n data-testid={dataTestId?.title}\n >\n {title}\n </span>\n {onClose ? (\n <CloseButton\n onClick={onClose}\n dataTestId={{ root: dataTestId?.closeButton }}\n />\n ) : null}\n </div>\n {subtitle != null ? (\n <p className={styles.subtitle} data-testid={dataTestId?.subtitle}>\n {subtitle}\n </p>\n ) : null}\n </div>\n <div className={styles.body} data-testid={dataTestId?.body}>\n {children}\n </div>\n </div>\n )\n\n if (!withOverlay) return card\n\n return (\n // Pointer-only: a focusable backdrop would add a tab stop before the dialog; keyboard closes via Escape.\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions\n <div\n className={styles.overlay}\n onMouseDown={handleOverlayMouseDown}\n onClick={handleOverlayClick}\n data-testid={dataTestId?.overlay}\n >\n {card}\n </div>\n )\n },\n)\n\nModalDialog.displayName = 'ModalDialog'\n\n// Hooks live in ModalDialog so they run once the portal has mounted its content.\nexport const Modal = forwardRef<HTMLDivElement, ModalProps>((props, ref) => {\n const dialog = <ModalDialog ref={ref} {...props} />\n return props.withOverlay ? <Portal>{dialog}</Portal> : dialog\n})\n\nModal.displayName = 'Modal'\n"],"names":["ModalDialog","forwardRef","_ref","ref","title","subtitle","onClose","withOverlay","bodyFill","lockScroll","closeOnEscape","closeOnOverlayClick","children","className","dataTestId","rest","titleId","useId","cardEl","setCardEl","useState","backdropMouseDown","useRef","useImperativeHandle","useBodyScrollLock","useFocusTrap","useEscape","handleOverlayMouseDown","event","current","target","currentTarget","handleOverlayClick","card","_jsxs","role","undefined","root","cn","styles","cardBodyFill","headerGroup","header","_jsx","id","titleHidden","CloseButton","onClick","closeButton","body","overlay","onMouseDown","displayName","Modal","props","dialog","Portal"],"mappings":"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"}
@@ -6,9 +6,9 @@ const react = require('react');
6
6
  const cn = require('classnames');
7
7
  const RichInput_module = require('./RichInput.module.css.cjs');
8
8
  const jsxRuntime = require('react/jsx-runtime');
9
+ const InfoTooltip = require('../info-tooltip/InfoTooltip.cjs');
9
10
  const Tooltip = require('../tooltip/Tooltip.cjs');
10
11
  const Tag = require('../tag/Tag.cjs');
11
- const IconInfo = require('../icons/components/base/IconInfo.cjs');
12
12
 
13
13
  const MaxTag = _ref => {
14
14
  let {
@@ -92,7 +92,7 @@ const RichInput = _ref2 => {
92
92
  };
93
93
  const handleRootClick = event => {
94
94
  if (!(event.target instanceof Element)) return;
95
- if (event.target.closest('button, input, label, [role="listbox"]')) {
95
+ if (event.target.closest('button, input, label, [role="listbox"], [tabindex]')) {
96
96
  return;
97
97
  }
98
98
  inputRef.current?.focus();
@@ -110,12 +110,9 @@ const RichInput = _ref2 => {
110
110
  className: RichInput_module.label,
111
111
  htmlFor: inputId,
112
112
  children: label
113
- }), labelTooltip != null ? /*#__PURE__*/jsxRuntime.jsx(Tooltip.Tooltip, {
113
+ }), labelTooltip != null ? /*#__PURE__*/jsxRuntime.jsx(InfoTooltip.InfoTooltip, {
114
114
  content: labelTooltip,
115
- children: /*#__PURE__*/jsxRuntime.jsx(IconInfo.IconInfo, {
116
- className: RichInput_module.labelTooltipIcon,
117
- "aria-hidden": "true"
118
- })
115
+ size: 20
119
116
  }) : null]
120
117
  }) : null, /*#__PURE__*/jsxRuntime.jsxs("div", {
121
118
  className: RichInput_module.amountRow,
@@ -1 +1 @@
1
- {"version":3,"file":"RichInput.cjs","sources":["../../../src/rich-input/RichInput.tsx"],"sourcesContent":["import {\n useId,\n useRef,\n type ChangeEvent,\n type InputHTMLAttributes,\n type KeyboardEvent,\n type MouseEvent,\n type MouseEventHandler,\n type ReactNode,\n} from 'react'\n\nimport cn from 'classnames'\nimport { IconInfo } from '../icons'\nimport { Tag, type TagProps } from '../tag'\nimport { Tooltip, type TooltipPosition } from '../tooltip'\n\nimport styles from './RichInput.module.css'\n\nexport type RichInputDataTestId = {\n root?: string\n label?: string\n input?: string\n secondaryValue?: string\n balance?: string\n maxButton?: string\n error?: string\n}\n\nexport type RichInputProps = InputHTMLAttributes<HTMLInputElement> & {\n label?: ReactNode\n labelTooltip?: ReactNode\n secondaryValue?: ReactNode\n balance?: ReactNode\n tokenSelector?: ReactNode\n error?: boolean\n errorText?: ReactNode\n showMaxButton?: boolean\n onMaxClick?: MouseEventHandler<HTMLSpanElement>\n maxDisabled?: boolean\n maxTooltip?: ReactNode\n maxTooltipPosition?: TooltipPosition\n dataTestId?: RichInputDataTestId\n}\n\nconst MaxTag = ({\n onClick,\n className,\n disabled,\n ...rest\n}: TagProps & { disabled?: boolean }) => (\n <Tag\n role='button'\n tabIndex={disabled ? -1 : 0}\n aria-disabled={disabled || undefined}\n className={cn(styles.maxTag, disabled && styles.maxTagDisabled, className)}\n onClick={disabled ? undefined : onClick}\n onKeyDown={(event: KeyboardEvent<HTMLSpanElement>) => {\n if (disabled) return\n if (event.key !== 'Enter' && event.key !== ' ') return\n event.preventDefault()\n onClick?.(event as unknown as MouseEvent<HTMLSpanElement>)\n }}\n {...rest}\n />\n)\n\n// Keep only digits and a single decimal point; comma is treated as the\n// decimal separator and normalized to a dot (en-US canonical form).\nconst sanitizeDecimal = (raw: string): string => {\n const normalized = raw.replace(/,/g, '.').replace(/[^\\d.]/g, '')\n const firstDot = normalized.indexOf('.')\n if (firstDot === -1) return normalized\n const head = normalized.slice(0, firstDot + 1)\n const tail = normalized.slice(firstDot + 1).replace(/\\./g, '')\n return head + tail\n}\n\nexport const RichInput = ({\n label,\n labelTooltip,\n secondaryValue,\n balance,\n tokenSelector,\n error,\n errorText,\n showMaxButton = true,\n onMaxClick,\n maxDisabled,\n maxTooltip,\n maxTooltipPosition = 'bottom-left',\n onChange,\n className,\n id,\n disabled,\n dataTestId,\n ...inputProps\n}: RichInputProps) => {\n const inputRef = useRef<HTMLInputElement>(null)\n const fallbackId = useId()\n const inputId = id ?? fallbackId\n\n const hasError = !!error\n const showErrorMessage = !!errorText\n const errorId = `${inputId}-error`\n const showMax = showMaxButton && !disabled\n const hasBottomRow = secondaryValue != null || balance != null || showMax\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n const { value: rawValue, selectionStart } = event.target\n const sanitized = sanitizeDecimal(rawValue)\n\n if (sanitized !== rawValue) {\n // Rewrite the DOM value before bubbling up so the parent (controlled\n // or not) only ever sees the clean value and no invalid char sticks.\n const removed = rawValue.length - sanitized.length\n event.target.value = sanitized\n if (selectionStart != null) {\n const caret = Math.max(0, selectionStart - removed)\n event.target.setSelectionRange(caret, caret)\n }\n }\n\n onChange?.(event)\n }\n\n const handleRootClick = (event: MouseEvent<HTMLDivElement>) => {\n if (!(event.target instanceof Element)) return\n if (event.target.closest('button, input, label, [role=\"listbox\"]')) {\n return\n }\n inputRef.current?.focus()\n }\n\n return (\n <div className={cn(styles.root, className)} data-testid={dataTestId?.root}>\n {/*\n Clicking the padding around the field focuses it — a pointer convenience\n on top of the real control. Keyboard users tab straight to the input.\n */}\n {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions */}\n <div\n className={cn(styles.card, hasError && styles.error)}\n onClick={handleRootClick}\n >\n {label != null ? (\n <span className={styles.labelRow}>\n <label\n data-testid={dataTestId?.label}\n className={styles.label}\n htmlFor={inputId}\n >\n {label}\n </label>\n {labelTooltip != null ? (\n <Tooltip content={labelTooltip}>\n <IconInfo\n className={styles.labelTooltipIcon}\n aria-hidden='true'\n />\n </Tooltip>\n ) : null}\n </span>\n ) : null}\n <div className={styles.amountRow}>\n <input\n ref={inputRef}\n id={inputId}\n className={styles.input}\n inputMode='decimal'\n disabled={disabled}\n aria-invalid={hasError || undefined}\n aria-describedby={showErrorMessage ? errorId : undefined}\n onChange={handleChange}\n data-testid={dataTestId?.input}\n {...inputProps}\n />\n {tokenSelector != null ? (\n <div className={styles.token}>{tokenSelector}</div>\n ) : null}\n </div>\n {hasBottomRow ? (\n <div className={styles.bottomRow}>\n {secondaryValue != null ? (\n <span\n data-testid={dataTestId?.secondaryValue}\n className={styles.secondary}\n >\n {secondaryValue}\n </span>\n ) : null}\n <div className={styles.balanceGroup}>\n {balance != null ? (\n <span\n className={styles.balance}\n data-testid={dataTestId?.balance}\n >\n {balance}\n </span>\n ) : null}\n {showMax ? (\n maxTooltip != null ? (\n <Tooltip\n content={maxTooltip}\n position={maxTooltipPosition}\n width={240}\n >\n <MaxTag\n data-testid={dataTestId?.maxButton}\n onClick={onMaxClick}\n disabled={maxDisabled}\n >\n Max\n </MaxTag>\n </Tooltip>\n ) : (\n <MaxTag\n data-testid={dataTestId?.maxButton}\n onClick={onMaxClick}\n disabled={maxDisabled}\n >\n Max\n </MaxTag>\n )\n ) : null}\n </div>\n </div>\n ) : null}\n </div>\n {showErrorMessage ? (\n <div\n id={errorId}\n className={styles.errorMessage}\n data-testid={dataTestId?.error}\n >\n {errorText}\n </div>\n ) : null}\n </div>\n )\n}\n"],"names":["MaxTag","_ref","onClick","className","disabled","rest","_jsx","Tag","role","tabIndex","undefined","cn","styles","maxTag","maxTagDisabled","onKeyDown","event","key","preventDefault","sanitizeDecimal","raw","normalized","replace","firstDot","indexOf","head","slice","tail","RichInput","_ref2","label","labelTooltip","secondaryValue","balance","tokenSelector","error","errorText","showMaxButton","onMaxClick","maxDisabled","maxTooltip","maxTooltipPosition","onChange","id","dataTestId","inputProps","inputRef","useRef","fallbackId","useId","inputId","hasError","showErrorMessage","errorId","showMax","hasBottomRow","handleChange","value","rawValue","selectionStart","target","sanitized","removed","length","caret","Math","max","setSelectionRange","handleRootClick","Element","closest","current","focus","_jsxs","root","children","card","labelRow","htmlFor","Tooltip","content","IconInfo","labelTooltipIcon","amountRow","ref","input","inputMode","token","bottomRow","secondary","balanceGroup","position","width","maxButton","errorMessage"],"mappings":"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"}
1
+ {"version":3,"file":"RichInput.cjs","sources":["../../../src/rich-input/RichInput.tsx"],"sourcesContent":["import {\n useId,\n useRef,\n type ChangeEvent,\n type InputHTMLAttributes,\n type KeyboardEvent,\n type MouseEvent,\n type MouseEventHandler,\n type ReactNode,\n} from 'react'\n\nimport cn from 'classnames'\nimport { InfoTooltip } from '../info-tooltip'\nimport { Tag, type TagProps } from '../tag'\nimport { Tooltip, type TooltipPosition } from '../tooltip'\n\nimport styles from './RichInput.module.css'\n\nexport type RichInputDataTestId = {\n root?: string\n label?: string\n input?: string\n secondaryValue?: string\n balance?: string\n maxButton?: string\n error?: string\n}\n\nexport type RichInputProps = InputHTMLAttributes<HTMLInputElement> & {\n label?: ReactNode\n labelTooltip?: ReactNode\n secondaryValue?: ReactNode\n balance?: ReactNode\n tokenSelector?: ReactNode\n error?: boolean\n errorText?: ReactNode\n showMaxButton?: boolean\n onMaxClick?: MouseEventHandler<HTMLSpanElement>\n maxDisabled?: boolean\n maxTooltip?: ReactNode\n maxTooltipPosition?: TooltipPosition\n dataTestId?: RichInputDataTestId\n}\n\nconst MaxTag = ({\n onClick,\n className,\n disabled,\n ...rest\n}: TagProps & { disabled?: boolean }) => (\n <Tag\n role='button'\n tabIndex={disabled ? -1 : 0}\n aria-disabled={disabled || undefined}\n className={cn(styles.maxTag, disabled && styles.maxTagDisabled, className)}\n onClick={disabled ? undefined : onClick}\n onKeyDown={(event: KeyboardEvent<HTMLSpanElement>) => {\n if (disabled) return\n if (event.key !== 'Enter' && event.key !== ' ') return\n event.preventDefault()\n onClick?.(event as unknown as MouseEvent<HTMLSpanElement>)\n }}\n {...rest}\n />\n)\n\n// Keep only digits and a single decimal point; comma is treated as the\n// decimal separator and normalized to a dot (en-US canonical form).\nconst sanitizeDecimal = (raw: string): string => {\n const normalized = raw.replace(/,/g, '.').replace(/[^\\d.]/g, '')\n const firstDot = normalized.indexOf('.')\n if (firstDot === -1) return normalized\n const head = normalized.slice(0, firstDot + 1)\n const tail = normalized.slice(firstDot + 1).replace(/\\./g, '')\n return head + tail\n}\n\nexport const RichInput = ({\n label,\n labelTooltip,\n secondaryValue,\n balance,\n tokenSelector,\n error,\n errorText,\n showMaxButton = true,\n onMaxClick,\n maxDisabled,\n maxTooltip,\n maxTooltipPosition = 'bottom-left',\n onChange,\n className,\n id,\n disabled,\n dataTestId,\n ...inputProps\n}: RichInputProps) => {\n const inputRef = useRef<HTMLInputElement>(null)\n const fallbackId = useId()\n const inputId = id ?? fallbackId\n\n const hasError = !!error\n const showErrorMessage = !!errorText\n const errorId = `${inputId}-error`\n const showMax = showMaxButton && !disabled\n const hasBottomRow = secondaryValue != null || balance != null || showMax\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n const { value: rawValue, selectionStart } = event.target\n const sanitized = sanitizeDecimal(rawValue)\n\n if (sanitized !== rawValue) {\n // Rewrite the DOM value before bubbling up so the parent (controlled\n // or not) only ever sees the clean value and no invalid char sticks.\n const removed = rawValue.length - sanitized.length\n event.target.value = sanitized\n if (selectionStart != null) {\n const caret = Math.max(0, selectionStart - removed)\n event.target.setSelectionRange(caret, caret)\n }\n }\n\n onChange?.(event)\n }\n\n const handleRootClick = (event: MouseEvent<HTMLDivElement>) => {\n if (!(event.target instanceof Element)) return\n if (\n event.target.closest('button, input, label, [role=\"listbox\"], [tabindex]')\n ) {\n return\n }\n inputRef.current?.focus()\n }\n\n return (\n <div className={cn(styles.root, className)} data-testid={dataTestId?.root}>\n {/*\n Clicking the padding around the field focuses it — a pointer convenience\n on top of the real control. Keyboard users tab straight to the input.\n */}\n {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions */}\n <div\n className={cn(styles.card, hasError && styles.error)}\n onClick={handleRootClick}\n >\n {label != null ? (\n <span className={styles.labelRow}>\n <label\n data-testid={dataTestId?.label}\n className={styles.label}\n htmlFor={inputId}\n >\n {label}\n </label>\n {labelTooltip != null ? (\n <InfoTooltip content={labelTooltip} size={20} />\n ) : null}\n </span>\n ) : null}\n <div className={styles.amountRow}>\n <input\n ref={inputRef}\n id={inputId}\n className={styles.input}\n inputMode='decimal'\n disabled={disabled}\n aria-invalid={hasError || undefined}\n aria-describedby={showErrorMessage ? errorId : undefined}\n onChange={handleChange}\n data-testid={dataTestId?.input}\n {...inputProps}\n />\n {tokenSelector != null ? (\n <div className={styles.token}>{tokenSelector}</div>\n ) : null}\n </div>\n {hasBottomRow ? (\n <div className={styles.bottomRow}>\n {secondaryValue != null ? (\n <span\n data-testid={dataTestId?.secondaryValue}\n className={styles.secondary}\n >\n {secondaryValue}\n </span>\n ) : null}\n <div className={styles.balanceGroup}>\n {balance != null ? (\n <span\n className={styles.balance}\n data-testid={dataTestId?.balance}\n >\n {balance}\n </span>\n ) : null}\n {showMax ? (\n maxTooltip != null ? (\n <Tooltip\n content={maxTooltip}\n position={maxTooltipPosition}\n width={240}\n >\n <MaxTag\n data-testid={dataTestId?.maxButton}\n onClick={onMaxClick}\n disabled={maxDisabled}\n >\n Max\n </MaxTag>\n </Tooltip>\n ) : (\n <MaxTag\n data-testid={dataTestId?.maxButton}\n onClick={onMaxClick}\n disabled={maxDisabled}\n >\n Max\n </MaxTag>\n )\n ) : null}\n </div>\n </div>\n ) : null}\n </div>\n {showErrorMessage ? (\n <div\n id={errorId}\n className={styles.errorMessage}\n data-testid={dataTestId?.error}\n >\n {errorText}\n </div>\n ) : null}\n </div>\n )\n}\n"],"names":["MaxTag","_ref","onClick","className","disabled","rest","_jsx","Tag","role","tabIndex","undefined","cn","styles","maxTag","maxTagDisabled","onKeyDown","event","key","preventDefault","sanitizeDecimal","raw","normalized","replace","firstDot","indexOf","head","slice","tail","RichInput","_ref2","label","labelTooltip","secondaryValue","balance","tokenSelector","error","errorText","showMaxButton","onMaxClick","maxDisabled","maxTooltip","maxTooltipPosition","onChange","id","dataTestId","inputProps","inputRef","useRef","fallbackId","useId","inputId","hasError","showErrorMessage","errorId","showMax","hasBottomRow","handleChange","value","rawValue","selectionStart","target","sanitized","removed","length","caret","Math","max","setSelectionRange","handleRootClick","Element","closest","current","focus","_jsxs","root","children","card","labelRow","htmlFor","InfoTooltip","content","size","amountRow","ref","input","inputMode","token","bottomRow","secondary","balanceGroup","Tooltip","position","width","maxButton","errorMessage"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- const styles = {"root":"RichInput-module_root__2RrAF","card":"RichInput-module_card__wDqv1","error":"RichInput-module_error__iuacN","input":"RichInput-module_input__G69-P","labelRow":"RichInput-module_labelRow__bh0KF","label":"RichInput-module_label__FNaLW","labelTooltipIcon":"RichInput-module_labelTooltipIcon__A4QBG","amountRow":"RichInput-module_amountRow__GWqIG","token":"RichInput-module_token__qSEX1","bottomRow":"RichInput-module_bottomRow__2SnLx","secondary":"RichInput-module_secondary__pftTQ","balanceGroup":"RichInput-module_balanceGroup__q4-lT","balance":"RichInput-module_balance__y-Ukz","balanceError":"RichInput-module_balanceError__pwA4q","errorMessage":"RichInput-module_errorMessage__axdve","maxTag":"RichInput-module_maxTag__gQd1Y","maxTagDisabled":"RichInput-module_maxTagDisabled__VD8AE"};
3
+ const styles = {"root":"RichInput-module_root__2RrAF","card":"RichInput-module_card__wDqv1","error":"RichInput-module_error__iuacN","input":"RichInput-module_input__G69-P","labelRow":"RichInput-module_labelRow__bh0KF","label":"RichInput-module_label__FNaLW","amountRow":"RichInput-module_amountRow__GWqIG","token":"RichInput-module_token__qSEX1","bottomRow":"RichInput-module_bottomRow__2SnLx","secondary":"RichInput-module_secondary__pftTQ","balanceGroup":"RichInput-module_balanceGroup__q4-lT","balance":"RichInput-module_balance__y-Ukz","balanceError":"RichInput-module_balanceError__pwA4q","errorMessage":"RichInput-module_errorMessage__axdve","maxTag":"RichInput-module_maxTag__gQd1Y","maxTagDisabled":"RichInput-module_maxTagDisabled__VD8AE"};
4
4
 
5
5
  module.exports = styles;
6
6
  //# sourceMappingURL=RichInput.module.css.cjs.map
@@ -5,8 +5,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
5
5
  const cn = require('classnames');
6
6
  const SectionTitle_module = require('./SectionTitle.module.css.cjs');
7
7
  const jsxRuntime = require('react/jsx-runtime');
8
- const Tooltip = require('../tooltip/Tooltip.cjs');
9
- const IconInfo = require('../icons/components/base/IconInfo.cjs');
8
+ const InfoTooltip = require('../info-tooltip/InfoTooltip.cjs');
10
9
 
11
10
  const SectionTitle = _ref => {
12
11
  let {
@@ -14,28 +13,27 @@ const SectionTitle = _ref => {
14
13
  subtitle,
15
14
  tooltip,
16
15
  action,
16
+ size = 'default',
17
+ titleAs,
17
18
  className,
18
19
  dataTestId,
19
20
  ...rest
20
21
  } = _ref;
22
+ const Title = titleAs ?? (size === 'large' ? 'h2' : 'p');
21
23
  return /*#__PURE__*/jsxRuntime.jsxs("div", {
22
- className: cn(SectionTitle_module.root, className),
24
+ className: cn(SectionTitle_module.root, SectionTitle_module[size], className),
23
25
  "data-testid": dataTestId?.root,
24
26
  ...rest,
25
27
  children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
26
28
  className: SectionTitle_module.left,
27
29
  children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
28
30
  className: SectionTitle_module.titleRow,
29
- children: [/*#__PURE__*/jsxRuntime.jsx("p", {
31
+ children: [/*#__PURE__*/jsxRuntime.jsx(Title, {
30
32
  className: SectionTitle_module.title,
31
33
  "data-testid": dataTestId?.title,
32
34
  children: title
33
- }), tooltip != null ? /*#__PURE__*/jsxRuntime.jsx(Tooltip.Tooltip, {
34
- content: tooltip,
35
- children: /*#__PURE__*/jsxRuntime.jsx(IconInfo.IconInfo, {
36
- className: SectionTitle_module.icon,
37
- "aria-hidden": "true"
38
- })
35
+ }), tooltip != null ? /*#__PURE__*/jsxRuntime.jsx(InfoTooltip.InfoTooltip, {
36
+ content: tooltip
39
37
  }) : null]
40
38
  }), subtitle != null ? /*#__PURE__*/jsxRuntime.jsx("p", {
41
39
  className: SectionTitle_module.subtitle,
@@ -1 +1 @@
1
- {"version":3,"file":"SectionTitle.cjs","sources":["../../../src/section-title/SectionTitle.tsx"],"sourcesContent":["import type { HTMLAttributes, ReactNode } from 'react'\n\nimport cn from 'classnames'\n\nimport { IconInfo } from '../icons'\nimport { Tooltip } from '../tooltip'\nimport styles from './SectionTitle.module.css'\n\nexport type SectionTitleDataTestId = {\n root?: string\n title?: string\n subtitle?: string\n action?: string\n}\n\nexport type SectionTitleProps = HTMLAttributes<HTMLDivElement> & {\n title: ReactNode\n subtitle?: ReactNode\n /** Renders an info glyph next to the title; hovering it shows this content. */\n tooltip?: ReactNode\n /** Rendered on the right, typically a `Button`. */\n action?: ReactNode\n dataTestId?: SectionTitleDataTestId\n}\n\nexport const SectionTitle = ({\n title,\n subtitle,\n tooltip,\n action,\n className,\n dataTestId,\n ...rest\n}: SectionTitleProps) => (\n <div\n className={cn(styles.root, className)}\n data-testid={dataTestId?.root}\n {...rest}\n >\n <div className={styles.left}>\n <div className={styles.titleRow}>\n <p className={styles.title} data-testid={dataTestId?.title}>\n {title}\n </p>\n {tooltip != null ? (\n <Tooltip content={tooltip}>\n <IconInfo className={styles.icon} aria-hidden='true' />\n </Tooltip>\n ) : null}\n </div>\n {subtitle != null ? (\n <p className={styles.subtitle} data-testid={dataTestId?.subtitle}>\n {subtitle}\n </p>\n ) : null}\n </div>\n {action != null ? (\n <div className={styles.action} data-testid={dataTestId?.action}>\n {action}\n </div>\n ) : null}\n </div>\n)\n"],"names":["SectionTitle","_ref","title","subtitle","tooltip","action","className","dataTestId","rest","_jsxs","cn","styles","root","children","left","titleRow","_jsx","Tooltip","content","IconInfo","icon"],"mappings":";;;;;;;;;;AAyBO,MAAMA,YAAY,GAAGC,IAAA,IAAA;EAAA,IAAC;IAC3BC,KAAK;IACLC,QAAQ;IACRC,OAAO;IACPC,MAAM;IACNC,SAAS;IACTC,UAAU;IACV,GAAGC,IAAAA;AACc,GAAC,GAAAP,IAAA,CAAA;AAAA,EAAA,oBAClBQ,eAAA,CAAA,KAAA,EAAA;IACEH,SAAS,EAAEI,EAAE,CAACC,mBAAM,CAACC,IAAI,EAAEN,SAAS,CAAE;IACtC,aAAaC,EAAAA,UAAU,EAAEK,IAAK;AAAA,IAAA,GAC1BJ,IAAI;AAAAK,IAAAA,QAAA,gBAERJ,eAAA,CAAA,KAAA,EAAA;MAAKH,SAAS,EAAEK,mBAAM,CAACG,IAAK;AAAAD,MAAAA,QAAA,gBAC1BJ,eAAA,CAAA,KAAA,EAAA;QAAKH,SAAS,EAAEK,mBAAM,CAACI,QAAS;AAAAF,QAAAA,QAAA,gBAC9BG,cAAA,CAAA,GAAA,EAAA;UAAGV,SAAS,EAAEK,mBAAM,CAACT,KAAM;UAAC,aAAaK,EAAAA,UAAU,EAAEL,KAAM;AAAAW,UAAAA,QAAA,EACxDX,KAAAA;SACA,CAAC,EACHE,OAAO,IAAI,IAAI,gBACdY,cAAA,CAACC,eAAO,EAAA;AAACC,UAAAA,OAAO,EAAEd,OAAQ;UAAAS,QAAA,eACxBG,cAAA,CAACG,iBAAQ,EAAA;YAACb,SAAS,EAAEK,mBAAM,CAACS,IAAK;YAAC,aAAY,EAAA,MAAA;WAAQ,CAAA;SAC/C,CAAC,GACR,IAAI,CAAA;AAAA,OACL,CAAC,EACLjB,QAAQ,IAAI,IAAI,gBACfa,cAAA,CAAA,GAAA,EAAA;QAAGV,SAAS,EAAEK,mBAAM,CAACR,QAAS;QAAC,aAAaI,EAAAA,UAAU,EAAEJ,QAAS;AAAAU,QAAAA,QAAA,EAC9DV,QAAAA;OACA,CAAC,GACF,IAAI,CAAA;AAAA,KACL,CAAC,EACLE,MAAM,IAAI,IAAI,gBACbW,cAAA,CAAA,KAAA,EAAA;MAAKV,SAAS,EAAEK,mBAAM,CAACN,MAAO;MAAC,aAAaE,EAAAA,UAAU,EAAEF,MAAO;AAAAQ,MAAAA,QAAA,EAC5DR,MAAAA;KACE,CAAC,GACJ,IAAI,CAAA;AAAA,GACL,CAAC,CAAA;AAAA;;;;"}
1
+ {"version":3,"file":"SectionTitle.cjs","sources":["../../../src/section-title/SectionTitle.tsx"],"sourcesContent":["import type { ElementType, HTMLAttributes, ReactNode } from 'react'\n\nimport cn from 'classnames'\n\nimport { InfoTooltip } from '../info-tooltip'\nimport styles from './SectionTitle.module.css'\n\nexport type SectionTitleDataTestId = {\n root?: string\n title?: string\n subtitle?: string\n action?: string\n}\n\nexport type SectionTitleSize = 'default' | 'large'\n\nexport type SectionTitleProps = HTMLAttributes<HTMLDivElement> & {\n title: ReactNode\n subtitle?: ReactNode\n /** Renders an info glyph next to the title; hovering it shows this content. */\n tooltip?: ReactNode\n /** Rendered on the right, typically a `Button`. */\n action?: ReactNode\n /** `large` is the page-heading style. */\n size?: SectionTitleSize\n /** Title element; defaults to `h2` for `large`, `p` otherwise. */\n titleAs?: ElementType\n dataTestId?: SectionTitleDataTestId\n}\n\nexport const SectionTitle = ({\n title,\n subtitle,\n tooltip,\n action,\n size = 'default',\n titleAs,\n className,\n dataTestId,\n ...rest\n}: SectionTitleProps) => {\n const Title = titleAs ?? (size === 'large' ? 'h2' : 'p')\n\n return (\n <div\n className={cn(styles.root, styles[size], className)}\n data-testid={dataTestId?.root}\n {...rest}\n >\n <div className={styles.left}>\n <div className={styles.titleRow}>\n <Title className={styles.title} data-testid={dataTestId?.title}>\n {title}\n </Title>\n {tooltip != null ? <InfoTooltip content={tooltip} /> : null}\n </div>\n {subtitle != null ? (\n <p className={styles.subtitle} data-testid={dataTestId?.subtitle}>\n {subtitle}\n </p>\n ) : null}\n </div>\n {action != null ? (\n <div className={styles.action} data-testid={dataTestId?.action}>\n {action}\n </div>\n ) : null}\n </div>\n )\n}\n"],"names":["SectionTitle","_ref","title","subtitle","tooltip","action","size","titleAs","className","dataTestId","rest","Title","_jsxs","cn","styles","root","children","left","titleRow","_jsx","InfoTooltip","content"],"mappings":";;;;;;;;;AA8BaA,MAAAA,YAAY,GAAGC,IAAA,IAUH;EAAA,IAVI;IAC3BC,KAAK;IACLC,QAAQ;IACRC,OAAO;IACPC,MAAM;AACNC,IAAAA,IAAI,GAAG,SAAS;IAChBC,OAAO;IACPC,SAAS;IACTC,UAAU;IACV,GAAGC,IAAAA;AACc,GAAC,GAAAT,IAAA,CAAA;EAClB,MAAMU,KAAK,GAAGJ,OAAO,KAAKD,IAAI,KAAK,OAAO,GAAG,IAAI,GAAG,GAAG,CAAC,CAAA;AAExD,EAAA,oBACEM,eAAA,CAAA,KAAA,EAAA;AACEJ,IAAAA,SAAS,EAAEK,EAAE,CAACC,mBAAM,CAACC,IAAI,EAAED,mBAAM,CAACR,IAAI,CAAC,EAAEE,SAAS,CAAE;IACpD,aAAaC,EAAAA,UAAU,EAAEM,IAAK;AAAA,IAAA,GAC1BL,IAAI;AAAAM,IAAAA,QAAA,gBAERJ,eAAA,CAAA,KAAA,EAAA;MAAKJ,SAAS,EAAEM,mBAAM,CAACG,IAAK;AAAAD,MAAAA,QAAA,gBAC1BJ,eAAA,CAAA,KAAA,EAAA;QAAKJ,SAAS,EAAEM,mBAAM,CAACI,QAAS;QAAAF,QAAA,EAAA,cAC9BG,cAAA,CAACR,KAAK,EAAA;UAACH,SAAS,EAAEM,mBAAM,CAACZ,KAAM;UAAC,aAAaO,EAAAA,UAAU,EAAEP,KAAM;AAAAc,UAAAA,QAAA,EAC5Dd,KAAAA;SACI,CAAC,EACPE,OAAO,IAAI,IAAI,gBAAGe,cAAA,CAACC,uBAAW,EAAA;AAACC,UAAAA,OAAO,EAAEjB,OAAAA;SAAU,CAAC,GAAG,IAAI,CAAA;AAAA,OACxD,CAAC,EACLD,QAAQ,IAAI,IAAI,gBACfgB,cAAA,CAAA,GAAA,EAAA;QAAGX,SAAS,EAAEM,mBAAM,CAACX,QAAS;QAAC,aAAaM,EAAAA,UAAU,EAAEN,QAAS;AAAAa,QAAAA,QAAA,EAC9Db,QAAAA;OACA,CAAC,GACF,IAAI,CAAA;AAAA,KACL,CAAC,EACLE,MAAM,IAAI,IAAI,gBACbc,cAAA,CAAA,KAAA,EAAA;MAAKX,SAAS,EAAEM,mBAAM,CAACT,MAAO;MAAC,aAAaI,EAAAA,UAAU,EAAEJ,MAAO;AAAAW,MAAAA,QAAA,EAC5DX,MAAAA;KACE,CAAC,GACJ,IAAI,CAAA;AAAA,GACL,CAAC,CAAA;AAEV;;;;"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- const styles = {"root":"SectionTitle-module_root__em4jm","left":"SectionTitle-module_left__KxpId","titleRow":"SectionTitle-module_titleRow__rsLR9","title":"SectionTitle-module_title__FsN2a","icon":"SectionTitle-module_icon__3oHTJ","subtitle":"SectionTitle-module_subtitle__thBzs","action":"SectionTitle-module_action__GuVOA"};
3
+ const styles = {"root":"SectionTitle-module_root__em4jm","left":"SectionTitle-module_left__KxpId","titleRow":"SectionTitle-module_titleRow__rsLR9","title":"SectionTitle-module_title__FsN2a","subtitle":"SectionTitle-module_subtitle__thBzs","action":"SectionTitle-module_action__GuVOA","large":"SectionTitle-module_large__tsFUM"};
4
4
 
5
5
  module.exports = styles;
6
6
  //# sourceMappingURL=SectionTitle.module.css.cjs.map
@@ -0,0 +1,134 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
+
5
+ const react = require('react');
6
+ const cn = require('classnames');
7
+ const Sidebar_module = require('./Sidebar.module.css.cjs');
8
+ const SidebarContext = require('./SidebarContext.cjs');
9
+ const jsxRuntime = require('react/jsx-runtime');
10
+ const useIsomorphicLayoutEffect = require('../hooks/useIsomorphicLayoutEffect.cjs');
11
+ const useBodyScrollLock = require('../hooks/useBodyScrollLock.cjs');
12
+ const useFocusTrap = require('../hooks/useFocusTrap.cjs');
13
+ const useEscape = require('../hooks/useEscape.cjs');
14
+ const CloseButton = require('../icon-button/CloseButton.cjs');
15
+
16
+ const DRAWER_QUERY = '(max-width: 1063px)';
17
+ const OFFSET_VAR = '--local-measured-offset';
18
+ const useIsDrawerViewport = () => {
19
+ const [matches, setMatches] = react.useState(false);
20
+ useIsomorphicLayoutEffect.useIsomorphicLayoutEffect(() => {
21
+ if (typeof window.matchMedia !== 'function') return;
22
+ const mql = window.matchMedia(DRAWER_QUERY);
23
+ const update = () => setMatches(mql.matches);
24
+ update();
25
+ mql.addEventListener('change', update);
26
+ return () => mql.removeEventListener('change', update);
27
+ }, []);
28
+ return matches;
29
+ };
30
+ const isPlainLinkClick = event => {
31
+ if (event.button !== 0) return false;
32
+ if (event.metaKey || event.ctrlKey || event.shiftKey || event.altKey) return false;
33
+ const link = event.target.closest?.('a[href]');
34
+ if (!link || !event.currentTarget.contains(link)) return false;
35
+ const target = link.getAttribute('target') ?? '';
36
+ return target === '' || target === '_self';
37
+ };
38
+ const Sidebar = _ref => {
39
+ let {
40
+ logo,
41
+ footer,
42
+ children,
43
+ open: openProp,
44
+ onClose: onCloseProp,
45
+ id: idProp,
46
+ navLabel = 'Primary',
47
+ closeOnNavigate = true,
48
+ className,
49
+ onClick,
50
+ 'aria-label': ariaLabel = 'Main navigation',
51
+ ...rest
52
+ } = _ref;
53
+ const context = react.useContext(SidebarContext.SidebarContext);
54
+ const open = openProp ?? context?.sidebarProps.open ?? false;
55
+ const onClose = onCloseProp ?? context?.sidebarProps.onClose;
56
+ const id = idProp ?? context?.sidebarProps.id;
57
+ const [root, setRoot] = react.useState(null);
58
+ const isDrawerViewport = useIsDrawerViewport();
59
+ useIsomorphicLayoutEffect.useIsomorphicLayoutEffect(() => {
60
+ const parent = root?.parentElement;
61
+ if (!root || !parent) return;
62
+ let last = '';
63
+ const measure = () => {
64
+ const top = parent.getBoundingClientRect().top + window.scrollY;
65
+ const value = `${Math.max(0, Math.round(top))}px`;
66
+ if (value === last) return;
67
+ last = value;
68
+ root.style.setProperty(OFFSET_VAR, value);
69
+ };
70
+ measure();
71
+ window.addEventListener('resize', measure);
72
+ const observer = typeof ResizeObserver === 'undefined' ? null : new ResizeObserver(measure);
73
+ observer?.observe(document.documentElement);
74
+ return () => {
75
+ window.removeEventListener('resize', measure);
76
+ observer?.disconnect();
77
+ };
78
+ }, [root]);
79
+ const drawerActive = open && isDrawerViewport;
80
+ const wasDrawerViewport = react.useRef(isDrawerViewport);
81
+ react.useEffect(() => {
82
+ if (wasDrawerViewport.current && !isDrawerViewport && open) onClose?.();
83
+ wasDrawerViewport.current = isDrawerViewport;
84
+ }, [isDrawerViewport, open, onClose]);
85
+ useBodyScrollLock.useBodyScrollLock(drawerActive);
86
+ useFocusTrap.useFocusTrap(root, drawerActive);
87
+ useEscape.useEscape(drawerActive && !!onClose, () => onClose?.());
88
+ const handleClick = event => {
89
+ onClick?.(event);
90
+ if (closeOnNavigate && drawerActive && onClose && isPlainLinkClick(event)) onClose();
91
+ };
92
+ return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
93
+ children: [/*#__PURE__*/jsxRuntime.jsx("div", {
94
+ className: cn(Sidebar_module.scrim, open && Sidebar_module.scrimOpen),
95
+ onClick: onClose,
96
+ "aria-hidden": "true"
97
+ }), /*#__PURE__*/jsxRuntime.jsxs("div", {
98
+ ref: setRoot,
99
+ id: id,
100
+ role: drawerActive ? 'dialog' : undefined,
101
+ "aria-modal": drawerActive || undefined,
102
+ "aria-label": drawerActive ? ariaLabel : undefined,
103
+ "data-open": open,
104
+ className: cn(Sidebar_module.sidebar, className),
105
+ onClick: handleClick,
106
+ ...rest,
107
+ children: [logo != null || onClose ? /*#__PURE__*/jsxRuntime.jsxs("div", {
108
+ className: cn(Sidebar_module.logoRow, logo == null && Sidebar_module.logoRowCloseOnly),
109
+ children: [/*#__PURE__*/jsxRuntime.jsx("div", {
110
+ className: Sidebar_module.logo,
111
+ children: logo
112
+ }), onClose ? /*#__PURE__*/jsxRuntime.jsx(CloseButton.CloseButton, {
113
+ "aria-label": "Close menu",
114
+ onClick: onClose,
115
+ className: Sidebar_module.closeButton
116
+ }) : null]
117
+ }) : null, /*#__PURE__*/jsxRuntime.jsx("div", {
118
+ className: Sidebar_module.scroll,
119
+ children: /*#__PURE__*/jsxRuntime.jsx("nav", {
120
+ "aria-label": navLabel,
121
+ className: Sidebar_module.menu,
122
+ children: children
123
+ })
124
+ }), footer != null ? /*#__PURE__*/jsxRuntime.jsx("div", {
125
+ className: Sidebar_module.footer,
126
+ children: footer
127
+ }) : null]
128
+ })]
129
+ });
130
+ };
131
+
132
+ exports.DRAWER_QUERY = DRAWER_QUERY;
133
+ exports.Sidebar = Sidebar;
134
+ //# sourceMappingURL=Sidebar.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Sidebar.cjs","sources":["../../../src/sidebar/Sidebar.tsx"],"sourcesContent":["import {\n useEffect,\n useContext,\n useRef,\n useState,\n type ComponentPropsWithoutRef,\n type MouseEvent,\n type ReactNode,\n} from 'react'\n\nimport cn from 'classnames'\n\nimport {\n useBodyScrollLock,\n useEscape,\n useFocusTrap,\n useIsomorphicLayoutEffect,\n} from '../hooks'\nimport { CloseButton } from '../icon-button'\nimport styles from './Sidebar.module.css'\nimport { SidebarContext } from './SidebarContext'\n\n// mirrors --lido-app-ui-breakpoint-ml-down (styles/breakpoints.css)\nexport const DRAWER_QUERY = '(max-width: 1063px)'\n\nconst OFFSET_VAR = '--local-measured-offset'\n\nconst useIsDrawerViewport = () => {\n const [matches, setMatches] = useState(false)\n\n useIsomorphicLayoutEffect(() => {\n if (typeof window.matchMedia !== 'function') return\n const mql = window.matchMedia(DRAWER_QUERY)\n const update = () => setMatches(mql.matches)\n update()\n mql.addEventListener('change', update)\n return () => mql.removeEventListener('change', update)\n }, [])\n\n return matches\n}\n\nconst isPlainLinkClick = (event: MouseEvent<HTMLDivElement>) => {\n if (event.button !== 0) return false\n if (event.metaKey || event.ctrlKey || event.shiftKey || event.altKey)\n return false\n const link = (event.target as Element).closest?.('a[href]')\n if (!link || !event.currentTarget.contains(link)) return false\n const target = link.getAttribute('target') ?? ''\n return target === '' || target === '_self'\n}\n\nexport type SidebarProps = Omit<ComponentPropsWithoutRef<'div'>, 'children'> & {\n logo?: ReactNode\n footer?: ReactNode\n children?: ReactNode\n /** Drawer state; only has an effect at `ml-down` widths. Defaults to the SidebarLayout's. */\n open?: boolean\n onClose?: () => void\n navLabel?: string\n /** Close the drawer when a link inside is clicked. */\n closeOnNavigate?: boolean\n}\n\nexport const Sidebar = ({\n logo,\n footer,\n children,\n open: openProp,\n onClose: onCloseProp,\n id: idProp,\n navLabel = 'Primary',\n closeOnNavigate = true,\n className,\n onClick,\n 'aria-label': ariaLabel = 'Main navigation',\n ...rest\n}: SidebarProps) => {\n const context = useContext(SidebarContext)\n const open = openProp ?? context?.sidebarProps.open ?? false\n const onClose = onCloseProp ?? context?.sidebarProps.onClose\n const id = idProp ?? context?.sidebarProps.id\n const [root, setRoot] = useState<HTMLElement | null>(null)\n const isDrawerViewport = useIsDrawerViewport()\n\n useIsomorphicLayoutEffect(() => {\n const parent = root?.parentElement\n if (!root || !parent) return\n\n let last = ''\n const measure = () => {\n const top = parent.getBoundingClientRect().top + window.scrollY\n const value = `${Math.max(0, Math.round(top))}px`\n if (value === last) return\n last = value\n root.style.setProperty(OFFSET_VAR, value)\n }\n\n measure()\n window.addEventListener('resize', measure)\n const observer =\n typeof ResizeObserver === 'undefined' ? null : new ResizeObserver(measure)\n observer?.observe(document.documentElement)\n return () => {\n window.removeEventListener('resize', measure)\n observer?.disconnect()\n }\n }, [root])\n\n const drawerActive = open && isDrawerViewport\n\n const wasDrawerViewport = useRef(isDrawerViewport)\n useEffect(() => {\n if (wasDrawerViewport.current && !isDrawerViewport && open) onClose?.()\n wasDrawerViewport.current = isDrawerViewport\n }, [isDrawerViewport, open, onClose])\n\n useBodyScrollLock(drawerActive)\n useFocusTrap(root, drawerActive)\n useEscape(drawerActive && !!onClose, () => onClose?.())\n\n const handleClick = (event: MouseEvent<HTMLDivElement>) => {\n onClick?.(event)\n if (closeOnNavigate && drawerActive && onClose && isPlainLinkClick(event))\n onClose()\n }\n\n return (\n <>\n {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions -- scrim is a pointer-only dismiss target; Escape closes via useEscape */}\n <div\n className={cn(styles.scrim, open && styles.scrimOpen)}\n onClick={onClose}\n aria-hidden='true'\n />\n {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-noninteractive-element-interactions -- delegated link-click handler; links are natively keyboard-activatable */}\n <div\n ref={setRoot}\n id={id}\n role={drawerActive ? 'dialog' : undefined}\n aria-modal={drawerActive || undefined}\n aria-label={drawerActive ? ariaLabel : undefined}\n data-open={open}\n className={cn(styles.sidebar, className)}\n onClick={handleClick}\n {...rest}\n >\n {logo != null || onClose ? (\n <div\n className={cn(\n styles.logoRow,\n logo == null && styles.logoRowCloseOnly,\n )}\n >\n <div className={styles.logo}>{logo}</div>\n {onClose ? (\n <CloseButton\n aria-label='Close menu'\n onClick={onClose}\n className={styles.closeButton}\n />\n ) : null}\n </div>\n ) : null}\n <div className={styles.scroll}>\n <nav aria-label={navLabel} className={styles.menu}>\n {children}\n </nav>\n </div>\n {footer != null ? <div className={styles.footer}>{footer}</div> : null}\n </div>\n </>\n )\n}\n"],"names":["DRAWER_QUERY","OFFSET_VAR","useIsDrawerViewport","matches","setMatches","useState","useIsomorphicLayoutEffect","window","matchMedia","mql","update","addEventListener","removeEventListener","isPlainLinkClick","event","button","metaKey","ctrlKey","shiftKey","altKey","link","target","closest","currentTarget","contains","getAttribute","Sidebar","_ref","logo","footer","children","open","openProp","onClose","onCloseProp","id","idProp","navLabel","closeOnNavigate","className","onClick","ariaLabel","rest","context","useContext","SidebarContext","sidebarProps","root","setRoot","isDrawerViewport","parent","parentElement","last","measure","top","getBoundingClientRect","scrollY","value","Math","max","round","style","setProperty","observer","ResizeObserver","observe","document","documentElement","disconnect","drawerActive","wasDrawerViewport","useRef","useEffect","current","useBodyScrollLock","useFocusTrap","useEscape","handleClick","_jsxs","_Fragment","_jsx","cn","styles","scrim","scrimOpen","ref","role","undefined","sidebar","logoRow","logoRowCloseOnly","CloseButton","closeButton","scroll","menu"],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ 'use strict';
2
+
3
+ const styles = {"sidebar":"Sidebar-module_sidebar__p4J-Y","grow-to-full-height":"Sidebar-module_grow-to-full-height__Ao5M-","scrim":"Sidebar-module_scrim__jQzZ-","logoRow":"Sidebar-module_logoRow__NVa5M","logoRowCloseOnly":"Sidebar-module_logoRowCloseOnly__1cFgS","logo":"Sidebar-module_logo__TbQ3Q","closeButton":"Sidebar-module_closeButton__pXZ7i","scroll":"Sidebar-module_scroll__d-QOF","menu":"Sidebar-module_menu__jydPs","footer":"Sidebar-module_footer__zecXR","scrimOpen":"Sidebar-module_scrimOpen__GpAVb"};
4
+
5
+ module.exports = styles;
6
+ //# sourceMappingURL=Sidebar.module.css.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Sidebar.module.css.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -0,0 +1,13 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
+
5
+ const react = require('react');
6
+
7
+ const SidebarContext = /*#__PURE__*/react.createContext(undefined);
8
+ /** Drawer state of the surrounding SidebarLayout, or `undefined` outside one. */
9
+ const useSidebar = () => react.useContext(SidebarContext);
10
+
11
+ exports.SidebarContext = SidebarContext;
12
+ exports.useSidebar = useSidebar;
13
+ //# sourceMappingURL=SidebarContext.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SidebarContext.cjs","sources":["../../../src/sidebar/SidebarContext.ts"],"sourcesContent":["import { createContext, useContext } from 'react'\n\nimport type { UseSidebarDrawerResult } from './useSidebarDrawer'\n\nexport const SidebarContext = createContext<UseSidebarDrawerResult | undefined>(\n undefined,\n)\n\nexport type UseSidebarResult = Pick<UseSidebarDrawerResult, 'open' | 'setOpen'>\n\n/** Drawer state of the surrounding SidebarLayout, or `undefined` outside one. */\nexport const useSidebar = (): UseSidebarResult | undefined =>\n useContext(SidebarContext)\n"],"names":["SidebarContext","createContext","undefined","useSidebar","useContext"],"mappings":";;;;;;MAIaA,cAAc,gBAAGC,mBAAa,CACzCC,SACF,EAAC;AAID;AACO,MAAMC,UAAU,GAAGA,MACxBC,gBAAU,CAACJ,cAAc;;;;;"}
@@ -0,0 +1,37 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
+
5
+ const react = require('react');
6
+ const cn = require('classnames');
7
+ const SidebarGroup_module = require('./SidebarGroup.module.css.cjs');
8
+ const jsxRuntime = require('react/jsx-runtime');
9
+
10
+ const SidebarGroup = _ref => {
11
+ let {
12
+ label,
13
+ className,
14
+ children,
15
+ ...rest
16
+ } = _ref;
17
+ const labelId = react.useId();
18
+ return /*#__PURE__*/jsxRuntime.jsxs("div", {
19
+ className: cn(SidebarGroup_module.group, className),
20
+ ...rest,
21
+ children: [label != null ? /*#__PURE__*/jsxRuntime.jsx("p", {
22
+ id: labelId,
23
+ className: SidebarGroup_module.label,
24
+ children: label
25
+ }) : null, /*#__PURE__*/jsxRuntime.jsx("ul", {
26
+ role: "list",
27
+ "aria-labelledby": label != null ? labelId : undefined,
28
+ className: SidebarGroup_module.items,
29
+ children: react.Children.toArray(children).map((child, index) => /*#__PURE__*/jsxRuntime.jsx("li", {
30
+ children: child
31
+ }, /*#__PURE__*/react.isValidElement(child) ? child.key : index))
32
+ })]
33
+ });
34
+ };
35
+
36
+ exports.SidebarGroup = SidebarGroup;
37
+ //# sourceMappingURL=SidebarGroup.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SidebarGroup.cjs","sources":["../../../src/sidebar/SidebarGroup.tsx"],"sourcesContent":["import {\n Children,\n isValidElement,\n useId,\n type ComponentPropsWithoutRef,\n type ReactNode,\n} from 'react'\n\nimport cn from 'classnames'\n\nimport styles from './SidebarGroup.module.css'\n\nexport type SidebarGroupProps = Omit<\n ComponentPropsWithoutRef<'div'>,\n 'children'\n> & {\n label?: ReactNode\n children?: ReactNode\n}\n\nexport const SidebarGroup = ({\n label,\n className,\n children,\n ...rest\n}: SidebarGroupProps) => {\n const labelId = useId()\n\n return (\n <div className={cn(styles.group, className)} {...rest}>\n {label != null ? (\n <p id={labelId} className={styles.label}>\n {label}\n </p>\n ) : null}\n {/* eslint-disable-next-line jsx-a11y/no-redundant-roles -- list-style: none drops list semantics in Safari */}\n <ul\n role='list'\n aria-labelledby={label != null ? labelId : undefined}\n className={styles.items}\n >\n {Children.toArray(children).map((child, index) => (\n <li key={isValidElement(child) ? child.key : index}>{child}</li>\n ))}\n </ul>\n </div>\n )\n}\n"],"names":["SidebarGroup","_ref","label","className","children","rest","labelId","useId","_jsxs","cn","styles","group","_jsx","id","role","undefined","items","Children","toArray","map","child","index","isValidElement","key"],"mappings":";;;;;;;;;AAoBaA,MAAAA,YAAY,GAAGC,IAAA,IAKH;EAAA,IALI;IAC3BC,KAAK;IACLC,SAAS;IACTC,QAAQ;IACR,GAAGC,IAAAA;AACc,GAAC,GAAAJ,IAAA,CAAA;AAClB,EAAA,MAAMK,OAAO,GAAGC,WAAK,EAAE,CAAA;AAEvB,EAAA,oBACEC,eAAA,CAAA,KAAA,EAAA;IAAKL,SAAS,EAAEM,EAAE,CAACC,mBAAM,CAACC,KAAK,EAAER,SAAS,CAAE;AAAA,IAAA,GAAKE,IAAI;AAAAD,IAAAA,QAAA,EAClDF,CAAAA,KAAK,IAAI,IAAI,gBACZU,cAAA,CAAA,GAAA,EAAA;AAAGC,MAAAA,EAAE,EAAEP,OAAQ;MAACH,SAAS,EAAEO,mBAAM,CAACR,KAAM;AAAAE,MAAAA,QAAA,EACrCF,KAAAA;AAAK,KACL,CAAC,GACF,IAAI,eAERU,cAAA,CAAA,IAAA,EAAA;AACEE,MAAAA,IAAI,EAAC,MAAM;AACX,MAAA,iBAAA,EAAiBZ,KAAK,IAAI,IAAI,GAAGI,OAAO,GAAGS,SAAU;MACrDZ,SAAS,EAAEO,mBAAM,CAACM,KAAM;AAAAZ,MAAAA,QAAA,EAEvBa,cAAQ,CAACC,OAAO,CAACd,QAAQ,CAAC,CAACe,GAAG,CAAC,CAACC,KAAK,EAAEC,KAAK,kBAC3CT,cAAA,CAAA,IAAA,EAAA;AAAAR,QAAAA,QAAA,EAAqDgB,KAAAA;OAA5C,eAAAE,oBAAc,CAACF,KAAK,CAAC,GAAGA,KAAK,CAACG,GAAG,GAAGF,KAAkB,CAChE,CAAA;AAAC,KACA,CAAC,CAAA;AAAA,GACF,CAAC,CAAA;AAEV;;;;"}
@@ -0,0 +1,6 @@
1
+ 'use strict';
2
+
3
+ const styles = {"group":"SidebarGroup-module_group__yk19P","label":"SidebarGroup-module_label__ZFrql","items":"SidebarGroup-module_items__GuAB6"};
4
+
5
+ module.exports = styles;
6
+ //# sourceMappingURL=SidebarGroup.module.css.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SidebarGroup.module.css.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -0,0 +1,25 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
+
5
+ const react = require('react');
6
+ const cn = require('classnames');
7
+ const SidebarInset_module = require('./SidebarInset.module.css.cjs');
8
+ const jsxRuntime = require('react/jsx-runtime');
9
+
10
+ /** Column next to the Sidebar for Header, Main and Footer. */
11
+ const SidebarInset = /*#__PURE__*/react.forwardRef((_ref, ref) => {
12
+ let {
13
+ className,
14
+ ...rest
15
+ } = _ref;
16
+ return /*#__PURE__*/jsxRuntime.jsx("div", {
17
+ ref: ref,
18
+ className: cn(SidebarInset_module.root, className),
19
+ ...rest
20
+ });
21
+ });
22
+ SidebarInset.displayName = 'SidebarInset';
23
+
24
+ exports.SidebarInset = SidebarInset;
25
+ //# sourceMappingURL=SidebarInset.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SidebarInset.cjs","sources":["../../../src/sidebar/SidebarInset.tsx"],"sourcesContent":["import { forwardRef, type HTMLAttributes } from 'react'\n\nimport cn from 'classnames'\n\nimport styles from './SidebarInset.module.css'\n\nexport type SidebarInsetProps = HTMLAttributes<HTMLDivElement>\n\n/** Column next to the Sidebar for Header, Main and Footer. */\nexport const SidebarInset = forwardRef<HTMLDivElement, SidebarInsetProps>(\n ({ className, ...rest }, ref) => (\n <div ref={ref} className={cn(styles.root, className)} {...rest} />\n ),\n)\n\nSidebarInset.displayName = 'SidebarInset'\n"],"names":["SidebarInset","forwardRef","_ref","ref","className","rest","_jsx","cn","styles","root","displayName"],"mappings":";;;;;;;;;AAQA;AACO,MAAMA,YAAY,gBAAGC,gBAAU,CACpC,CAAAC,IAAA,EAAyBC,GAAG,KAAA;EAAA,IAA3B;IAAEC,SAAS;IAAE,GAAGC,IAAAA;AAAK,GAAC,GAAAH,IAAA,CAAA;AAAA,EAAA,oBACrBI,cAAA,CAAA,KAAA,EAAA;AAAKH,IAAAA,GAAG,EAAEA,GAAI;IAACC,SAAS,EAAEG,EAAE,CAACC,mBAAM,CAACC,IAAI,EAAEL,SAAS,CAAE;IAAA,GAAKC,IAAAA;AAAI,GAAG,CAAC,CAAA;AAAA,CAEtE,EAAC;AAEDL,YAAY,CAACU,WAAW,GAAG,cAAc;;;;"}
@@ -0,0 +1,6 @@
1
+ 'use strict';
2
+
3
+ const styles = {"root":"SidebarInset-module_root__s2yRu"};
4
+
5
+ module.exports = styles;
6
+ //# sourceMappingURL=SidebarInset.module.css.cjs.map