eidos-ui 3.1.0 → 3.2.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 (260) hide show
  1. package/README.md +4 -0
  2. package/dist/Header.types-0XovUp0T.d.ts +79 -0
  3. package/dist/Header.types-Ce5Cj301.d.cts +79 -0
  4. package/dist/{Navigation.types-CpS3EYNz.d.ts → Navigation.types-By5HfPTi.d.ts} +8 -0
  5. package/dist/{Navigation.types-sUO9wqOp.d.cts → Navigation.types-_MrYqqUI.d.cts} +8 -0
  6. package/dist/{SegmentedControl.types-Dm4SnwCK.d.cts → SegmentedControl.types-BofrEYyd.d.cts} +16 -1
  7. package/dist/{SegmentedControl.types-CK8EiShd.d.ts → SegmentedControl.types-cjLwwBAm.d.ts} +16 -1
  8. package/dist/alert/index.cjs +4 -4
  9. package/dist/alert/index.js +3 -3
  10. package/dist/button/index.cjs +3 -3
  11. package/dist/button/index.js +2 -2
  12. package/dist/chip/index.cjs +3 -3
  13. package/dist/chip/index.js +2 -2
  14. package/dist/{chunk-RWOX2NJN.js → chunk-25PSIDPC.js} +2 -2
  15. package/dist/{chunk-IFVT5UCY.js → chunk-2QEKSRVX.js} +14 -10
  16. package/dist/chunk-2QEKSRVX.js.map +1 -0
  17. package/dist/{chunk-4BKTBV2I.js → chunk-2R77XZEP.js} +6 -2
  18. package/dist/chunk-2R77XZEP.js.map +1 -0
  19. package/dist/{chunk-H5HWFOWZ.js → chunk-2WP27QAN.js} +8 -8
  20. package/dist/{chunk-EXITZVB2.js → chunk-3RLGH45H.js} +6 -6
  21. package/dist/{chunk-442U3W6R.cjs → chunk-4MZ7HEQC.cjs} +5 -5
  22. package/dist/{chunk-442U3W6R.cjs.map → chunk-4MZ7HEQC.cjs.map} +1 -1
  23. package/dist/{chunk-R4PU2TBM.js → chunk-4ZWAJTNH.js} +3 -3
  24. package/dist/{chunk-RHOT7AEI.cjs → chunk-55J4LEKT.cjs} +8 -7
  25. package/dist/chunk-55J4LEKT.cjs.map +1 -0
  26. package/dist/{chunk-REVK7IGN.js → chunk-5WH3JMR5.js} +8 -7
  27. package/dist/chunk-5WH3JMR5.js.map +1 -0
  28. package/dist/{chunk-GT22EGJP.cjs → chunk-65PC3YDT.cjs} +14 -10
  29. package/dist/chunk-65PC3YDT.cjs.map +1 -0
  30. package/dist/{chunk-KQD7CQ4Z.cjs → chunk-6CSUUQ5M.cjs} +10 -6
  31. package/dist/chunk-6CSUUQ5M.cjs.map +1 -0
  32. package/dist/{chunk-GR2PMCVN.cjs → chunk-75TDY7XF.cjs} +5 -5
  33. package/dist/{chunk-GR2PMCVN.cjs.map → chunk-75TDY7XF.cjs.map} +1 -1
  34. package/dist/{chunk-FRUOA2QU.cjs → chunk-75VXB3H2.cjs} +7 -3
  35. package/dist/chunk-75VXB3H2.cjs.map +1 -0
  36. package/dist/{chunk-F26VIKNF.js → chunk-ATL7325T.js} +3 -3
  37. package/dist/{chunk-TEJIPPZR.js → chunk-BC5I2MYB.js} +7 -4
  38. package/dist/chunk-BC5I2MYB.js.map +1 -0
  39. package/dist/{chunk-GHQ6SQPI.js → chunk-BHVHM66Z.js} +6 -6
  40. package/dist/{chunk-N2IGZIEX.cjs → chunk-CJGFRPAS.cjs} +3 -3
  41. package/dist/{chunk-N2IGZIEX.cjs.map → chunk-CJGFRPAS.cjs.map} +1 -1
  42. package/dist/{chunk-GEHL4LKK.cjs → chunk-CUJBNRJJ.cjs} +8 -2
  43. package/dist/chunk-CUJBNRJJ.cjs.map +1 -0
  44. package/dist/{chunk-DAXZRNNO.cjs → chunk-D2SKXRKP.cjs} +8 -8
  45. package/dist/{chunk-DAXZRNNO.cjs.map → chunk-D2SKXRKP.cjs.map} +1 -1
  46. package/dist/{chunk-KBG77JHC.js → chunk-EAJHEYZM.js} +8 -2
  47. package/dist/chunk-EAJHEYZM.js.map +1 -0
  48. package/dist/{chunk-G77YR73R.cjs → chunk-EBSKRZXI.cjs} +8 -8
  49. package/dist/{chunk-G77YR73R.cjs.map → chunk-EBSKRZXI.cjs.map} +1 -1
  50. package/dist/{chunk-B5G5XVFJ.cjs → chunk-EH42ND5Q.cjs} +5 -5
  51. package/dist/{chunk-B5G5XVFJ.cjs.map → chunk-EH42ND5Q.cjs.map} +1 -1
  52. package/dist/{chunk-WUBQJVB7.cjs → chunk-EL3YXTOW.cjs} +9 -6
  53. package/dist/chunk-EL3YXTOW.cjs.map +1 -0
  54. package/dist/{chunk-Y53HCLGW.js → chunk-FALDCW2E.js} +2 -2
  55. package/dist/{chunk-D5IY2HUV.cjs → chunk-FXZJL2AM.cjs} +5 -5
  56. package/dist/{chunk-D5IY2HUV.cjs.map → chunk-FXZJL2AM.cjs.map} +1 -1
  57. package/dist/{chunk-KJZUYC4X.cjs → chunk-HI6WCX4T.cjs} +10 -9
  58. package/dist/chunk-HI6WCX4T.cjs.map +1 -0
  59. package/dist/{chunk-LFWPQYWX.cjs → chunk-I3CSPYHG.cjs} +3 -3
  60. package/dist/{chunk-LFWPQYWX.cjs.map → chunk-I3CSPYHG.cjs.map} +1 -1
  61. package/dist/{chunk-EZME5CLK.cjs → chunk-J5RMLZ4P.cjs} +3 -3
  62. package/dist/{chunk-EZME5CLK.cjs.map → chunk-J5RMLZ4P.cjs.map} +1 -1
  63. package/dist/{chunk-VHMOKXUT.js → chunk-JRLUZDKA.js} +8 -7
  64. package/dist/chunk-JRLUZDKA.js.map +1 -0
  65. package/dist/{chunk-LIFUHQH5.cjs → chunk-KBGFDHKD.cjs} +19 -19
  66. package/dist/{chunk-LIFUHQH5.cjs.map → chunk-KBGFDHKD.cjs.map} +1 -1
  67. package/dist/{chunk-ZHFPV43D.js → chunk-KNQ6NN6L.js} +5 -5
  68. package/dist/{chunk-2ZY7M72Q.js → chunk-KQJ3IAFT.js} +10 -7
  69. package/dist/chunk-KQJ3IAFT.js.map +1 -0
  70. package/dist/{chunk-74MBKLYI.js → chunk-L23WWO3D.js} +9 -5
  71. package/dist/chunk-L23WWO3D.js.map +1 -0
  72. package/dist/{chunk-YJXZR7RL.js → chunk-L5Q6UDY3.js} +4 -4
  73. package/dist/{chunk-5BX4Q76D.cjs → chunk-LVHZBCTA.cjs} +3 -3
  74. package/dist/{chunk-5BX4Q76D.cjs.map → chunk-LVHZBCTA.cjs.map} +1 -1
  75. package/dist/{chunk-SENVA467.js → chunk-M7PF4FKQ.js} +6 -2
  76. package/dist/chunk-M7PF4FKQ.js.map +1 -0
  77. package/dist/chunk-ND526PMG.cjs +145 -0
  78. package/dist/chunk-ND526PMG.cjs.map +1 -0
  79. package/dist/{chunk-TRLBYA5G.cjs → chunk-NEYLNRVG.cjs} +5 -5
  80. package/dist/{chunk-TRLBYA5G.cjs.map → chunk-NEYLNRVG.cjs.map} +1 -1
  81. package/dist/{chunk-ZEZK664O.js → chunk-NWJ6NETE.js} +13 -13
  82. package/dist/{chunk-U5FHQ73U.cjs → chunk-NZO2I5AL.cjs} +15 -12
  83. package/dist/chunk-NZO2I5AL.cjs.map +1 -0
  84. package/dist/{chunk-5ZL6PYU3.js → chunk-O2AACVSF.js} +3 -3
  85. package/dist/chunk-O3LG7B2J.cjs +186 -0
  86. package/dist/chunk-O3LG7B2J.cjs.map +1 -0
  87. package/dist/{chunk-SHYSLWQG.js → chunk-OAK7HFOJ.js} +4 -4
  88. package/dist/{chunk-QF2RAUPB.cjs → chunk-OAPOGYA5.cjs} +7 -3
  89. package/dist/chunk-OAPOGYA5.cjs.map +1 -0
  90. package/dist/{chunk-SKEWTQJ7.cjs → chunk-OMLXP2CK.cjs} +7 -7
  91. package/dist/{chunk-SKEWTQJ7.cjs.map → chunk-OMLXP2CK.cjs.map} +1 -1
  92. package/dist/{chunk-VSTQEHVZ.js → chunk-PR7CVQ4R.js} +10 -7
  93. package/dist/chunk-PR7CVQ4R.js.map +1 -0
  94. package/dist/{chunk-6HUHH6Y4.cjs → chunk-Q6ICDKQZ.cjs} +22 -19
  95. package/dist/chunk-Q6ICDKQZ.cjs.map +1 -0
  96. package/dist/{chunk-NGVOXM7P.js → chunk-QIITXVRG.js} +4 -4
  97. package/dist/{chunk-GI6VJYOS.js → chunk-QUDVJUZU.js} +3 -3
  98. package/dist/chunk-QZX3A4FX.js +886 -0
  99. package/dist/chunk-QZX3A4FX.js.map +1 -0
  100. package/dist/chunk-R3WPVTGY.cjs +886 -0
  101. package/dist/chunk-R3WPVTGY.cjs.map +1 -0
  102. package/dist/{chunk-SN6EWQDJ.js → chunk-RYOQYYDO.js} +3 -3
  103. package/dist/chunk-S4S4LB63.js +186 -0
  104. package/dist/chunk-S4S4LB63.js.map +1 -0
  105. package/dist/{chunk-67RFMV6K.js → chunk-T2KB3DJJ.js} +2 -2
  106. package/dist/{chunk-5VM2256W.cjs → chunk-TEVZHN5I.cjs} +11 -10
  107. package/dist/chunk-TEVZHN5I.cjs.map +1 -0
  108. package/dist/{chunk-RKA2OJRT.js → chunk-TJC7UELT.js} +18 -18
  109. package/dist/{chunk-SKTDGCWJ.cjs → chunk-UOOGS6N7.cjs} +48 -48
  110. package/dist/{chunk-SKTDGCWJ.cjs.map → chunk-UOOGS6N7.cjs.map} +1 -1
  111. package/dist/{chunk-SE7MWOC7.cjs → chunk-VRQBDTLT.cjs} +32 -32
  112. package/dist/{chunk-SE7MWOC7.cjs.map → chunk-VRQBDTLT.cjs.map} +1 -1
  113. package/dist/{chunk-AXBYJ2OY.cjs → chunk-WFEORBLC.cjs} +8 -8
  114. package/dist/{chunk-AXBYJ2OY.cjs.map → chunk-WFEORBLC.cjs.map} +1 -1
  115. package/dist/chunk-WKDT2XFQ.js +145 -0
  116. package/dist/chunk-WKDT2XFQ.js.map +1 -0
  117. package/dist/{chunk-APK5OQRV.cjs → chunk-WWYJNWJY.cjs} +6 -6
  118. package/dist/{chunk-APK5OQRV.cjs.map → chunk-WWYJNWJY.cjs.map} +1 -1
  119. package/dist/{chunk-A7WQINIG.js → chunk-X3U7SDOZ.js} +7 -6
  120. package/dist/chunk-X3U7SDOZ.js.map +1 -0
  121. package/dist/{chunk-LEMCJW57.js → chunk-YDPEHUMH.js} +2 -2
  122. package/dist/{chunk-GGSII6Y2.cjs → chunk-ZGT4LT5Y.cjs} +33 -33
  123. package/dist/{chunk-GGSII6Y2.cjs.map → chunk-ZGT4LT5Y.cjs.map} +1 -1
  124. package/dist/{chunk-LUL6RZ4M.cjs → chunk-ZNWIHUHZ.cjs} +3 -3
  125. package/dist/{chunk-LUL6RZ4M.cjs.map → chunk-ZNWIHUHZ.cjs.map} +1 -1
  126. package/dist/{chunk-S3CT536K.js → chunk-ZPDETHQ7.js} +2 -2
  127. package/dist/color-picker/index.cjs +4 -3
  128. package/dist/color-picker/index.cjs.map +1 -1
  129. package/dist/color-picker/index.js +3 -2
  130. package/dist/combobox/index.cjs +5 -5
  131. package/dist/combobox/index.js +4 -4
  132. package/dist/context-menu/index.cjs +5 -5
  133. package/dist/context-menu/index.js +4 -4
  134. package/dist/conversation/index.cjs +28 -0
  135. package/dist/conversation/index.cjs.map +1 -0
  136. package/dist/conversation/index.d.cts +254 -0
  137. package/dist/conversation/index.d.ts +254 -0
  138. package/dist/conversation/index.js +28 -0
  139. package/dist/conversation/index.js.map +1 -0
  140. package/dist/data-grid/index.cjs +16 -16
  141. package/dist/data-grid/index.d.cts +1 -1
  142. package/dist/data-grid/index.d.ts +1 -1
  143. package/dist/data-grid/index.js +15 -15
  144. package/dist/date-picker/index.cjs +7 -7
  145. package/dist/date-picker/index.js +6 -6
  146. package/dist/drawer/index.cjs +4 -4
  147. package/dist/drawer/index.js +3 -3
  148. package/dist/dropdown/index.cjs +3 -2
  149. package/dist/dropdown/index.cjs.map +1 -1
  150. package/dist/dropdown/index.js +2 -1
  151. package/dist/header/index.cjs +8 -4
  152. package/dist/header/index.cjs.map +1 -1
  153. package/dist/header/index.d.cts +35 -4
  154. package/dist/header/index.d.ts +35 -4
  155. package/dist/header/index.js +9 -5
  156. package/dist/index.cjs +66 -56
  157. package/dist/index.cjs.map +1 -1
  158. package/dist/index.css +1147 -295
  159. package/dist/index.d.cts +5 -4
  160. package/dist/index.d.ts +5 -4
  161. package/dist/index.js +84 -74
  162. package/dist/inline-edit/index.cjs +4 -4
  163. package/dist/inline-edit/index.js +3 -3
  164. package/dist/input/index.cjs +3 -3
  165. package/dist/input/index.js +2 -2
  166. package/dist/menu/index.cjs +4 -4
  167. package/dist/menu/index.js +3 -3
  168. package/dist/modal/index.cjs +4 -4
  169. package/dist/modal/index.js +3 -3
  170. package/dist/navigation/index.cjs +4 -4
  171. package/dist/navigation/index.d.cts +2 -2
  172. package/dist/navigation/index.d.ts +2 -2
  173. package/dist/navigation/index.js +3 -3
  174. package/dist/number-input/index.cjs +3 -2
  175. package/dist/number-input/index.cjs.map +1 -1
  176. package/dist/number-input/index.js +2 -1
  177. package/dist/page-layout/index.cjs +10 -9
  178. package/dist/page-layout/index.cjs.map +1 -1
  179. package/dist/page-layout/index.d.cts +2 -2
  180. package/dist/page-layout/index.d.ts +2 -2
  181. package/dist/page-layout/index.js +9 -8
  182. package/dist/pagination/index.cjs +7 -7
  183. package/dist/pagination/index.js +6 -6
  184. package/dist/segmented-control/index.cjs +3 -3
  185. package/dist/segmented-control/index.d.cts +2 -2
  186. package/dist/segmented-control/index.d.ts +2 -2
  187. package/dist/segmented-control/index.js +2 -2
  188. package/dist/select/index.cjs +5 -5
  189. package/dist/select/index.js +4 -4
  190. package/dist/snackbar/index.cjs +4 -4
  191. package/dist/snackbar/index.js +3 -3
  192. package/dist/split-button/index.cjs +5 -5
  193. package/dist/split-button/index.js +4 -4
  194. package/dist/table/index.cjs +16 -16
  195. package/dist/table/index.cjs.map +1 -1
  196. package/dist/table/index.js +15 -15
  197. package/dist/tabs/index.cjs +3 -3
  198. package/dist/tabs/index.js +2 -2
  199. package/dist/tag-input/index.cjs +5 -5
  200. package/dist/tag-input/index.js +4 -4
  201. package/dist/textarea/index.cjs +3 -3
  202. package/dist/textarea/index.js +2 -2
  203. package/dist/theme-editor/index.cjs +11 -11
  204. package/dist/theme-editor/index.js +10 -10
  205. package/dist/theme-provider/index.cjs +3 -3
  206. package/dist/theme-provider/index.js +2 -2
  207. package/dist/toolbar/index.cjs +6 -6
  208. package/dist/toolbar/index.js +5 -5
  209. package/package.json +1 -1
  210. package/dist/Header.types-B3QtuiL-.d.cts +0 -21
  211. package/dist/Header.types-C6w0FBY8.d.ts +0 -21
  212. package/dist/chunk-2ZY7M72Q.js.map +0 -1
  213. package/dist/chunk-4BKTBV2I.js.map +0 -1
  214. package/dist/chunk-5VM2256W.cjs.map +0 -1
  215. package/dist/chunk-6HUHH6Y4.cjs.map +0 -1
  216. package/dist/chunk-74MBKLYI.js.map +0 -1
  217. package/dist/chunk-A7WQINIG.js.map +0 -1
  218. package/dist/chunk-AAA6TR5I.cjs +0 -67
  219. package/dist/chunk-AAA6TR5I.cjs.map +0 -1
  220. package/dist/chunk-FRUOA2QU.cjs.map +0 -1
  221. package/dist/chunk-GEHL4LKK.cjs.map +0 -1
  222. package/dist/chunk-GT22EGJP.cjs.map +0 -1
  223. package/dist/chunk-IFVT5UCY.js.map +0 -1
  224. package/dist/chunk-KBG77JHC.js.map +0 -1
  225. package/dist/chunk-KJZUYC4X.cjs.map +0 -1
  226. package/dist/chunk-KQD7CQ4Z.cjs.map +0 -1
  227. package/dist/chunk-O5WEKLNF.js +0 -21
  228. package/dist/chunk-O5WEKLNF.js.map +0 -1
  229. package/dist/chunk-P7IQY5YH.js +0 -67
  230. package/dist/chunk-P7IQY5YH.js.map +0 -1
  231. package/dist/chunk-QF2RAUPB.cjs.map +0 -1
  232. package/dist/chunk-REVK7IGN.js.map +0 -1
  233. package/dist/chunk-RHOT7AEI.cjs.map +0 -1
  234. package/dist/chunk-SENVA467.js.map +0 -1
  235. package/dist/chunk-TEJIPPZR.js.map +0 -1
  236. package/dist/chunk-U5FHQ73U.cjs.map +0 -1
  237. package/dist/chunk-VHMOKXUT.js.map +0 -1
  238. package/dist/chunk-VSTQEHVZ.js.map +0 -1
  239. package/dist/chunk-WUBQJVB7.cjs.map +0 -1
  240. package/dist/chunk-Z4SLV6WG.cjs +0 -21
  241. package/dist/chunk-Z4SLV6WG.cjs.map +0 -1
  242. /package/dist/{chunk-RWOX2NJN.js.map → chunk-25PSIDPC.js.map} +0 -0
  243. /package/dist/{chunk-H5HWFOWZ.js.map → chunk-2WP27QAN.js.map} +0 -0
  244. /package/dist/{chunk-EXITZVB2.js.map → chunk-3RLGH45H.js.map} +0 -0
  245. /package/dist/{chunk-R4PU2TBM.js.map → chunk-4ZWAJTNH.js.map} +0 -0
  246. /package/dist/{chunk-F26VIKNF.js.map → chunk-ATL7325T.js.map} +0 -0
  247. /package/dist/{chunk-GHQ6SQPI.js.map → chunk-BHVHM66Z.js.map} +0 -0
  248. /package/dist/{chunk-Y53HCLGW.js.map → chunk-FALDCW2E.js.map} +0 -0
  249. /package/dist/{chunk-ZHFPV43D.js.map → chunk-KNQ6NN6L.js.map} +0 -0
  250. /package/dist/{chunk-YJXZR7RL.js.map → chunk-L5Q6UDY3.js.map} +0 -0
  251. /package/dist/{chunk-ZEZK664O.js.map → chunk-NWJ6NETE.js.map} +0 -0
  252. /package/dist/{chunk-5ZL6PYU3.js.map → chunk-O2AACVSF.js.map} +0 -0
  253. /package/dist/{chunk-SHYSLWQG.js.map → chunk-OAK7HFOJ.js.map} +0 -0
  254. /package/dist/{chunk-NGVOXM7P.js.map → chunk-QIITXVRG.js.map} +0 -0
  255. /package/dist/{chunk-GI6VJYOS.js.map → chunk-QUDVJUZU.js.map} +0 -0
  256. /package/dist/{chunk-SN6EWQDJ.js.map → chunk-RYOQYYDO.js.map} +0 -0
  257. /package/dist/{chunk-67RFMV6K.js.map → chunk-T2KB3DJJ.js.map} +0 -0
  258. /package/dist/{chunk-RKA2OJRT.js.map → chunk-TJC7UELT.js.map} +0 -0
  259. /package/dist/{chunk-LEMCJW57.js.map → chunk-YDPEHUMH.js.map} +0 -0
  260. /package/dist/{chunk-S3CT536K.js.map → chunk-ZPDETHQ7.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/Header/Header.component.tsx","../src/components/Header/IdentityHeader.component.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useLayoutEffect, useRef, useState } from 'react';\nimport type { HeaderActionProps, HeaderProps } from './Header.types';\nimport './Header.scss';\nimport { Button } from '../Button';\nimport { Popover } from '../Popover';\nimport { renderIcon } from '../../utils';\n\nexport const Header: React.FC<HeaderProps> = ({\n title,\n subtitle,\n media,\n meta,\n variant = 'default',\n actions,\n collapseActionsBelow = 640,\n actionsVisibleWhenCollapsed = 1,\n className = '',\n}) => {\n const classes = ['eidos-header', `eidos-header--${variant}`, className].filter(Boolean).join(' ');\n\n const rootRef = useRef<HTMLDivElement>(null);\n const [isNarrow, setIsNarrow] = useState(false);\n const [overflowOpen, setOverflowOpen] = useState(false);\n\n // Measures the header's own box rather than the viewport, so the collapse\n // point matches the container queries in Header.scss - a viewport query\n // would disagree with them by the width of PageLayout's navigation rail,\n // which is itself collapsible. The 1px hero border makes this border-box\n // reading differ from the container query's content-box one by 2px; that is\n // far below any threshold worth caring about, and using one measurement for\n // both the initial pass and the observer keeps it to a single code path.\n const measure = useCallback(() => {\n const element = rootRef.current;\n if (!element) return;\n setIsNarrow(element.getBoundingClientRect().width <= collapseActionsBelow);\n }, [collapseActionsBelow]);\n\n // `useLayoutEffect` for the first measurement specifically: ResizeObserver\n // delivers its initial callback asynchronously, so relying on it alone\n // would paint the full action row for a frame before collapsing it. Reading\n // the box synchronously here collapses before paint instead. Nothing runs\n // during SSR, so the server renders the uncollapsed row and hydration\n // matches - the same client-only posture Navigation's `collapseBelow` has.\n useLayoutEffect(() => {\n if (!collapseActionsBelow) {\n setIsNarrow(false);\n return;\n }\n\n measure();\n\n const element = rootRef.current;\n if (!element || typeof ResizeObserver === 'undefined') return;\n\n const observer = new ResizeObserver(measure);\n observer.observe(element);\n return () => observer.disconnect();\n }, [collapseActionsBelow, measure]);\n\n const allActions = actions ?? [];\n const keptCount = Math.max(0, actionsVisibleWhenCollapsed);\n const isCollapsed = isNarrow && !!collapseActionsBelow && allActions.length > keptCount;\n\n // The *last* actions stay inline: a primary call to action is conventionally\n // rightmost, which is also how Header's own stories order them.\n const overflowActions = isCollapsed ? allActions.slice(0, allActions.length - keptCount) : [];\n const inlineActions = isCollapsed ? allActions.slice(allActions.length - keptCount) : allActions;\n\n // A portalled popover would otherwise stay on screen after the header grows\n // back past the threshold and its trigger stops being rendered.\n useEffect(() => {\n if (!isCollapsed && overflowOpen) setOverflowOpen(false);\n }, [isCollapsed, overflowOpen]);\n\n const renderOverflowAction = (action: HeaderActionProps, index: number) => {\n const handleClick: HeaderActionProps['onClick'] = (event) => {\n action.onClick?.(event);\n setOverflowOpen(false);\n };\n\n // An icon-only action has no visible label, which is fine in a horizontal\n // row of small buttons and useless in a vertical list. Its tooltip is\n // already the label, so promote it rather than showing a bare glyph.\n if (action.icon && !action.children && action.tooltip) {\n const { icon, tooltip, ...rest } = action;\n return (\n <Button key={index} {...rest} size=\"md\" preIcon={icon} onClick={handleClick}>\n {tooltip}\n </Button>\n );\n }\n\n return <Button key={index} {...action} size=\"md\" onClick={handleClick} />;\n };\n\n const titles = (\n <div className=\"eidos-header__titles\">\n <h1 className=\"eidos-header__title\">{title}</h1>\n {subtitle && <span className=\"eidos-header__subtitle\">{subtitle}</span>}\n {!!meta?.length && (\n <div className=\"eidos-header__meta\">\n {meta.map((item, index) => (\n <span key={index} className=\"eidos-header__meta-item\">\n {item.icon && renderIcon(item.icon, 'eidos-header__meta-icon')}\n {item.label && <span className=\"eidos-header__meta-label\">{item.label}</span>}\n <span className=\"eidos-header__meta-value\">{item.value}</span>\n </span>\n ))}\n </div>\n )}\n </div>\n );\n\n return (\n <div className={classes} ref={rootRef}>\n <div className=\"eidos-header__content\">\n {/* The `__lead` wrapper only exists when there is media to group with\n the titles. Media and titles need a tighter gap than titles and\n actions do, and a flex container has a single gap - but rendering\n the wrapper unconditionally would change the markup for every\n existing consumer, and the `eidos-*` class names are documented as\n targetable. */}\n {media ? (\n <div className=\"eidos-header__lead\">\n <div className=\"eidos-header__media\">{media}</div>\n {titles}\n </div>\n ) : (\n titles\n )}\n <div className=\"eidos-header__actions\">\n {overflowActions.length > 0 && (\n <Popover\n isOpen={overflowOpen}\n onOpenChange={setOverflowOpen}\n placement=\"bottom\"\n maxWidth={260}\n // Popover puts `className` on its trigger wrapper, which is the\n // element that actually becomes a flex item of `__actions`.\n className=\"eidos-header__overflow-trigger\"\n trigger={\n // No `aria-haspopup`/`aria-expanded` here: Popover already\n // sets both on the wrapper it renders around this button.\n <Button\n icon=\"ellipsis\"\n size=\"md\"\n variant=\"outlined\"\n color=\"secondary\"\n aria-label={`${overflowActions.length} more actions`}\n />\n }\n >\n <div className=\"eidos-header__overflow-actions\">\n {overflowActions.map(renderOverflowAction)}\n </div>\n </Popover>\n )}\n {inlineActions.map((action, index) => (\n <Button key={index} size=\"md\" {...action} />\n ))}\n </div>\n </div>\n </div>\n );\n};\n","import React from 'react';\nimport type { IdentityHeaderProps } from './IdentityHeader.types';\nimport { Header } from './Header.component';\nimport { Avatar } from '../Avatar';\nimport { devWarn } from '../../utils';\n\n/**\n * `Header` preconfigured for the \"this page is about one person or entity\"\n * shape - an avatar beside the name, supporting facts below it, actions on\n * the end - which account and profile pages share. Settings-style pages want\n * a plain `Header` instead; they have no identity to lead with.\n *\n * Deliberately thin: it pins `variant=\"hero\"`, types the avatar so consumers\n * don't have to import `Avatar` to fill the slot, and gives the shape a name\n * worth discovering. Everything else is `Header`.\n */\nexport const IdentityHeader: React.FC<IdentityHeaderProps> = ({\n avatar,\n media,\n variant = 'hero',\n className = '',\n ...rest\n}) => {\n if (avatar && media) {\n devWarn(\n 'identity-header-avatar-and-media',\n 'IdentityHeader received both `avatar` and `media`. `media` takes precedence - drop `avatar` to silence this.',\n );\n }\n\n const resolvedMedia = media ?? (avatar ? <Avatar size=\"lg\" {...avatar} /> : undefined);\n\n return (\n <Header\n {...rest}\n variant={variant}\n media={resolvedMedia}\n className={['eidos-identity-header', className].filter(Boolean).join(' ')}\n />\n );\n};\n"],"mappings":"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","names":["jsx"]}
@@ -1,9 +1,9 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _chunkGEHL4LKKcjs = require('./chunk-GEHL4LKK.cjs');
3
+ var _chunkZ5U4NJTWcjs = require('./chunk-Z5U4NJTW.cjs');
4
4
 
5
5
 
6
- var _chunkZ5U4NJTWcjs = require('./chunk-Z5U4NJTW.cjs');
6
+ var _chunkCUJBNRJJcjs = require('./chunk-CUJBNRJJ.cjs');
7
7
 
8
8
  // src/components/Button/Button.component.tsx
9
9
  var _lucidereact = require('lucide-react');
@@ -52,9 +52,9 @@ var Button = ({
52
52
  ] }),
53
53
  isIconOnly && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "eidos-button--loading-spinner", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.LoaderCircle, { className: "eidos-button--spinner-icon" }) })
54
54
  ] }) : /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
55
- preIcon && _chunkGEHL4LKKcjs.renderIcon.call(void 0, preIcon, "eidos-button--pre-icon"),
56
- isIconOnly && icon ? _chunkGEHL4LKKcjs.renderIcon.call(void 0, icon, "eidos-button--icon") : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "eidos-button--copy", children }),
57
- posIcon && _chunkGEHL4LKKcjs.renderIcon.call(void 0, posIcon, "eidos-button--pos-icon")
55
+ preIcon && _chunkCUJBNRJJcjs.renderIcon.call(void 0, preIcon, "eidos-button--pre-icon"),
56
+ isIconOnly && icon ? _chunkCUJBNRJJcjs.renderIcon.call(void 0, icon, "eidos-button--icon") : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "eidos-button--copy", children }),
57
+ posIcon && _chunkCUJBNRJJcjs.renderIcon.call(void 0, posIcon, "eidos-button--pos-icon")
58
58
  ] }) });
59
59
  return tooltip ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkZ5U4NJTWcjs.Tooltip, { message: tooltip, children: buttonContent }) : buttonContent;
60
60
  };
@@ -66,4 +66,4 @@ var IconButton = (props) => {
66
66
 
67
67
 
68
68
  exports.Button = Button; exports.IconButton = IconButton;
69
- //# sourceMappingURL=chunk-APK5OQRV.cjs.map
69
+ //# sourceMappingURL=chunk-WWYJNWJY.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/eidos-ui/eidos-ui/dist/chunk-APK5OQRV.cjs","../src/components/Button/Button.component.tsx"],"names":[],"mappings":"AAAA;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACA;ACNA,2CAA6B;AAoDjB,+CAAA;AA/CL,IAAM,OAAA,EAAgC,CAAC;AAAA,EAC5C,QAAA,EAAU,QAAA;AAAA,EACV,MAAA,EAAQ,SAAA;AAAA,EACR,KAAA,EAAO,IAAA;AAAA,EACP,SAAA,EAAW,KAAA;AAAA,EACX,QAAA,EAAU,KAAA;AAAA,EACV,YAAA,EAAc,YAAA;AAAA,EACd,OAAA;AAAA,EACA,UAAA,EAAY,EAAA;AAAA,EACZ,OAAA;AAAA,EACA,OAAA;AAAA,EACA,IAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAA,GAAM;AACJ,EAAA,MAAM,WAAA,EAAa,CAAC,CAAC,IAAA;AAErB,EAAA,GAAA,CAAI,UAAA,EAAY;AACd,IAAA,GAAA,CAAI,QAAA,EAAU;AACZ,MAAA,MAAM,IAAI,KAAA,CAAM,wCAAwC,CAAA;AAAA,IAC1D;AACA,IAAA,GAAA,CAAI,OAAA,EAAS;AACX,MAAA,MAAM,IAAI,KAAA,CAAM,uCAAuC,CAAA;AAAA,IACzD;AACA,IAAA,GAAA,CAAI,OAAA,EAAS;AACX,MAAA,MAAM,IAAI,KAAA,CAAM,uCAAuC,CAAA;AAAA,IACzD;AAAA,EACF;AAEA,EAAA,MAAM,cAAA,EAAgB;AAAA,IACpB,cAAA;AAAA,IACA,CAAA,cAAA,EAAiB,OAAO,CAAA,CAAA;AACF,IAAA;AACD,IAAA;AACP,IAAA;AACF,IAAA;AACD,IAAA;AACX,IAAA;AAGS,EAAA;AAGT,EAAA;AAIQ,IAAA;AACG,sBAAA;AAGA,sBAAA;AACH,IAAA;AAGA,IAAA;AAMJ,EAAA;AACyB,IAAA;AAGrB,IAAA;AAKqB,IAAA;AAG7B,EAAA;AAGe,EAAA;AACnB;AAagE;AACtD,EAAA;AACV;ADnC6B;AACA;AACA;AACA;AACA","file":"/home/runner/work/eidos-ui/eidos-ui/dist/chunk-APK5OQRV.cjs","sourcesContent":[null,"import React from 'react';\nimport { LoaderCircle } from 'lucide-react';\nimport { Tooltip } from '../Tooltip';\nimport { ButtonProps, IconButtonProps } from './Button.types';\nimport { renderIcon } from '../../utils';\n\nexport const Button: React.FC<ButtonProps> = ({\n variant = 'filled',\n color = 'primary',\n size = 'md',\n disabled = false,\n loading = false,\n loadingText = 'Loading...',\n tooltip,\n className = '',\n preIcon,\n posIcon,\n icon,\n children,\n ...buttonProps\n}) => {\n const isIconOnly = !!icon;\n\n if (isIconOnly) {\n if (children) {\n throw new Error('Icon-only buttons cannot have children');\n }\n if (preIcon) {\n throw new Error('Icon-only buttons cannot have preIcon');\n }\n if (posIcon) {\n throw new Error('Icon-only buttons cannot have posIcon');\n }\n }\n\n const buttonClasses = [\n 'eidos-button',\n `eidos-button--${variant}`,\n `eidos-button--${color}`,\n `eidos-button--${size}`,\n isIconOnly && 'eidos-button--icon-only',\n disabled && 'eidos-button--disabled',\n loading && 'eidos-button--loading',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const buttonContent = (\n <button type=\"button\" {...buttonProps} className={buttonClasses} disabled={disabled || loading}>\n {loading ? (\n <>\n {!isIconOnly && (\n <>\n <span className=\"eidos-button--loading-spinner\">\n <LoaderCircle className=\"eidos-button--spinner-icon\" />\n </span>\n <span className=\"eidos-button--copy\">{loadingText}</span>\n </>\n )}\n {isIconOnly && (\n <span className=\"eidos-button--loading-spinner\">\n <LoaderCircle className=\"eidos-button--spinner-icon\" />\n </span>\n )}\n </>\n ) : (\n <>\n {preIcon && renderIcon(preIcon, 'eidos-button--pre-icon')}\n\n {isIconOnly && icon ? (\n renderIcon(icon, 'eidos-button--icon')\n ) : (\n <span className=\"eidos-button--copy\">{children}</span>\n )}\n\n {posIcon && renderIcon(posIcon, 'eidos-button--pos-icon')}\n </>\n )}\n </button>\n );\n\n return tooltip ? <Tooltip message={tooltip}>{buttonContent}</Tooltip> : buttonContent;\n};\n\n/**\n * IconButton - Convenience wrapper for icon-only buttons\n *\n * @example\n * ```tsx\n * import { IconButton } from 'eidos-ui';\n * import { Plus } from 'lucide-react';\n *\n * <IconButton icon={Plus} tooltip=\"Add item\" />\n * ```\n */\nexport const IconButton: React.FC<IconButtonProps> = (props) => {\n return <Button {...props} />;\n};\n"]}
1
+ {"version":3,"sources":["/home/runner/work/eidos-ui/eidos-ui/dist/chunk-WWYJNWJY.cjs","../src/components/Button/Button.component.tsx"],"names":[],"mappings":"AAAA;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACA;ACNA,2CAA6B;AAoDjB,+CAAA;AA/CL,IAAM,OAAA,EAAgC,CAAC;AAAA,EAC5C,QAAA,EAAU,QAAA;AAAA,EACV,MAAA,EAAQ,SAAA;AAAA,EACR,KAAA,EAAO,IAAA;AAAA,EACP,SAAA,EAAW,KAAA;AAAA,EACX,QAAA,EAAU,KAAA;AAAA,EACV,YAAA,EAAc,YAAA;AAAA,EACd,OAAA;AAAA,EACA,UAAA,EAAY,EAAA;AAAA,EACZ,OAAA;AAAA,EACA,OAAA;AAAA,EACA,IAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAA,GAAM;AACJ,EAAA,MAAM,WAAA,EAAa,CAAC,CAAC,IAAA;AAErB,EAAA,GAAA,CAAI,UAAA,EAAY;AACd,IAAA,GAAA,CAAI,QAAA,EAAU;AACZ,MAAA,MAAM,IAAI,KAAA,CAAM,wCAAwC,CAAA;AAAA,IAC1D;AACA,IAAA,GAAA,CAAI,OAAA,EAAS;AACX,MAAA,MAAM,IAAI,KAAA,CAAM,uCAAuC,CAAA;AAAA,IACzD;AACA,IAAA,GAAA,CAAI,OAAA,EAAS;AACX,MAAA,MAAM,IAAI,KAAA,CAAM,uCAAuC,CAAA;AAAA,IACzD;AAAA,EACF;AAEA,EAAA,MAAM,cAAA,EAAgB;AAAA,IACpB,cAAA;AAAA,IACA,CAAA,cAAA,EAAiB,OAAO,CAAA,CAAA;AACF,IAAA;AACD,IAAA;AACP,IAAA;AACF,IAAA;AACD,IAAA;AACX,IAAA;AAGS,EAAA;AAGT,EAAA;AAIQ,IAAA;AACG,sBAAA;AAGA,sBAAA;AACH,IAAA;AAGA,IAAA;AAMJ,EAAA;AACyB,IAAA;AAGrB,IAAA;AAKqB,IAAA;AAG7B,EAAA;AAGe,EAAA;AACnB;AAagE;AACtD,EAAA;AACV;ADnC6B;AACA;AACA;AACA;AACA","file":"/home/runner/work/eidos-ui/eidos-ui/dist/chunk-WWYJNWJY.cjs","sourcesContent":[null,"import React from 'react';\nimport { LoaderCircle } from 'lucide-react';\nimport { Tooltip } from '../Tooltip';\nimport { ButtonProps, IconButtonProps } from './Button.types';\nimport { renderIcon } from '../../utils';\n\nexport const Button: React.FC<ButtonProps> = ({\n variant = 'filled',\n color = 'primary',\n size = 'md',\n disabled = false,\n loading = false,\n loadingText = 'Loading...',\n tooltip,\n className = '',\n preIcon,\n posIcon,\n icon,\n children,\n ...buttonProps\n}) => {\n const isIconOnly = !!icon;\n\n if (isIconOnly) {\n if (children) {\n throw new Error('Icon-only buttons cannot have children');\n }\n if (preIcon) {\n throw new Error('Icon-only buttons cannot have preIcon');\n }\n if (posIcon) {\n throw new Error('Icon-only buttons cannot have posIcon');\n }\n }\n\n const buttonClasses = [\n 'eidos-button',\n `eidos-button--${variant}`,\n `eidos-button--${color}`,\n `eidos-button--${size}`,\n isIconOnly && 'eidos-button--icon-only',\n disabled && 'eidos-button--disabled',\n loading && 'eidos-button--loading',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const buttonContent = (\n <button type=\"button\" {...buttonProps} className={buttonClasses} disabled={disabled || loading}>\n {loading ? (\n <>\n {!isIconOnly && (\n <>\n <span className=\"eidos-button--loading-spinner\">\n <LoaderCircle className=\"eidos-button--spinner-icon\" />\n </span>\n <span className=\"eidos-button--copy\">{loadingText}</span>\n </>\n )}\n {isIconOnly && (\n <span className=\"eidos-button--loading-spinner\">\n <LoaderCircle className=\"eidos-button--spinner-icon\" />\n </span>\n )}\n </>\n ) : (\n <>\n {preIcon && renderIcon(preIcon, 'eidos-button--pre-icon')}\n\n {isIconOnly && icon ? (\n renderIcon(icon, 'eidos-button--icon')\n ) : (\n <span className=\"eidos-button--copy\">{children}</span>\n )}\n\n {posIcon && renderIcon(posIcon, 'eidos-button--pos-icon')}\n </>\n )}\n </button>\n );\n\n return tooltip ? <Tooltip message={tooltip}>{buttonContent}</Tooltip> : buttonContent;\n};\n\n/**\n * IconButton - Convenience wrapper for icon-only buttons\n *\n * @example\n * ```tsx\n * import { IconButton } from 'eidos-ui';\n * import { Plus } from 'lucide-react';\n *\n * <IconButton icon={Plus} tooltip=\"Add item\" />\n * ```\n */\nexport const IconButton: React.FC<IconButtonProps> = (props) => {\n return <Button {...props} />;\n};\n"]}
@@ -1,12 +1,13 @@
1
1
  import {
2
2
  Input
3
- } from "./chunk-VHMOKXUT.js";
3
+ } from "./chunk-JRLUZDKA.js";
4
4
  import {
5
5
  Dropdown
6
- } from "./chunk-4BKTBV2I.js";
6
+ } from "./chunk-2R77XZEP.js";
7
7
  import {
8
+ fullWidthModifier,
8
9
  renderIcon
9
- } from "./chunk-KBG77JHC.js";
10
+ } from "./chunk-EAJHEYZM.js";
10
11
 
11
12
  // src/components/Select/Select.component.tsx
12
13
  import React, { useState, useCallback, useRef, useEffect, useMemo } from "react";
@@ -279,7 +280,7 @@ var Select = React.forwardRef(
279
280
  "div",
280
281
  {
281
282
  ref: triggerRef,
282
- className: `eidos-select-trigger ${fullWidth ? "eidos-select-trigger--fullWidth" : ""}`,
283
+ className: `eidos-select-trigger ${fullWidth ? fullWidthModifier("eidos-select-trigger") : ""}`,
283
284
  onKeyDown: handleKeyDown,
284
285
  tabIndex: disabled ? -1 : void 0,
285
286
  role: "combobox",
@@ -312,7 +313,7 @@ var Select = React.forwardRef(
312
313
  "div",
313
314
  {
314
315
  ref,
315
- className: `${"eidos-select-container"} ${fullWidth ? "eidos-select-container--fullWidth" : ""} ${className}`,
316
+ className: `${"eidos-select-container"} ${fullWidth ? fullWidthModifier("eidos-select-container") : ""} ${className}`,
316
317
  children: /* @__PURE__ */ jsx(
317
318
  Dropdown,
318
319
  {
@@ -339,4 +340,4 @@ Select.displayName = "Select";
339
340
  export {
340
341
  Select
341
342
  };
342
- //# sourceMappingURL=chunk-A7WQINIG.js.map
343
+ //# sourceMappingURL=chunk-X3U7SDOZ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/Select/Select.component.tsx"],"sourcesContent":["import React, { useState, useCallback, useRef, useEffect, useMemo } from 'react';\nimport { X, Check } from 'lucide-react';\nimport { Input } from '../Input/Input.component';\nimport { Dropdown } from '../Dropdown/Dropdown.component';\nimport type { SelectProps, SelectOption } from './Select.types';\nimport { renderIcon, fullWidthModifier } from '../../utils';\n\nexport const Select = React.forwardRef<HTMLDivElement, SelectProps>(\n (\n {\n options = [],\n value,\n defaultValue,\n onChange,\n className = '',\n multiple = false,\n placeholder = 'Select an option...',\n disabled = false,\n inputProps = {},\n name,\n id,\n required = false,\n fullWidth = false,\n minWidth,\n maxWidth,\n minHeight,\n maxHeight = '300px',\n autoWidth = true,\n clearable = true,\n autoOpen = false,\n dropdownProps = {},\n },\n ref,\n ) => {\n const isControlled = value !== undefined;\n\n // Lazy initializer: seed from defaultValue in uncontrolled mode.\n const [selectedValues, setSelectedValues] = useState<Set<string>>(() => {\n if (defaultValue !== undefined) {\n const vals = Array.isArray(defaultValue) ? defaultValue : [defaultValue];\n return new Set(vals.filter((v) => v !== ''));\n }\n return new Set();\n });\n const [menuKey, setMenuKey] = useState(0);\n const [focusedIndex, setFocusedIndex] = useState(-1);\n const [isOpen, setIsOpen] = useState(false);\n\n const inputRef = useRef<HTMLInputElement>(null);\n const triggerRef = useRef<HTMLDivElement>(null);\n const optionRefs = useRef<(HTMLDivElement | null)[]>([]);\n\n // Kept in sync every render so the mount-only callback ref below can\n // read the latest values without needing them in its dependency array\n // (see `handleOptionsMount`).\n const optionsRef = useRef(options);\n optionsRef.current = options;\n const selectedValuesRef = useRef(selectedValues);\n selectedValuesRef.current = selectedValues;\n\n useEffect(() => {\n if (value !== undefined) {\n const values = Array.isArray(value) ? value : [value];\n\n const validValues = values.filter((v) => v !== '');\n setSelectedValues(new Set(validValues));\n }\n }, [value]);\n\n useEffect(() => {\n setFocusedIndex(-1);\n }, [options]);\n\n useEffect(() => {\n optionRefs.current = optionRefs.current.slice(0, options.length);\n }, [options.length]);\n\n const handleOptionSelect = useCallback(\n (option: SelectOption) => {\n if (option.disabled) return;\n\n const newSelectedValues = new Set(selectedValues);\n\n if (multiple) {\n if (newSelectedValues.has(option.value)) {\n newSelectedValues.delete(option.value);\n } else {\n newSelectedValues.add(option.value);\n }\n } else {\n if (newSelectedValues.has(option.value)) {\n newSelectedValues.clear();\n } else {\n newSelectedValues.clear();\n newSelectedValues.add(option.value);\n }\n }\n\n // In uncontrolled mode, own the state directly.\n // In controlled mode, let the parent drive via value prop + useEffect sync.\n if (!isControlled) {\n setSelectedValues(newSelectedValues);\n }\n\n if (onChange) {\n const newValue = multiple\n ? Array.from(newSelectedValues)\n : Array.from(newSelectedValues)[0] || '';\n onChange(newValue);\n }\n\n if (!multiple) {\n setIsOpen(false);\n setMenuKey((prev) => prev + 1);\n }\n },\n [multiple, onChange, selectedValues, isControlled],\n );\n\n const handleClear = useCallback(\n (e?: React.MouseEvent) => {\n if (e) {\n e.stopPropagation();\n }\n if (!isControlled) {\n setSelectedValues(new Set());\n }\n\n setIsOpen(false);\n setMenuKey((prev) => prev + 1);\n if (onChange) {\n onChange(multiple ? [] : '');\n }\n },\n [multiple, onChange, isControlled],\n );\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (disabled) return;\n\n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault();\n if (!isOpen) {\n setIsOpen(true);\n setFocusedIndex(0);\n } else {\n setFocusedIndex((prev) => {\n const nextIndex = prev < options.length - 1 ? prev + 1 : 0;\n\n setTimeout(() => {\n optionRefs.current[nextIndex]?.scrollIntoView({\n block: 'nearest',\n behavior: 'smooth',\n });\n }, 0);\n return nextIndex;\n });\n }\n break;\n\n case 'ArrowUp':\n e.preventDefault();\n if (!isOpen) {\n setIsOpen(true);\n setFocusedIndex(options.length - 1);\n } else {\n setFocusedIndex((prev) => {\n const nextIndex = prev > 0 ? prev - 1 : options.length - 1;\n\n setTimeout(() => {\n optionRefs.current[nextIndex]?.scrollIntoView({\n block: 'nearest',\n behavior: 'smooth',\n });\n }, 0);\n return nextIndex;\n });\n }\n break;\n\n case 'Enter':\n case ' ':\n e.preventDefault();\n if (!isOpen) {\n setIsOpen(true);\n setFocusedIndex(0);\n } else if (focusedIndex >= 0 && focusedIndex < options.length) {\n const focusedOption = options[focusedIndex];\n handleOptionSelect(focusedOption);\n }\n break;\n\n case 'Escape':\n e.preventDefault();\n if (isOpen) {\n setIsOpen(false);\n setFocusedIndex(-1);\n setMenuKey((prev) => prev + 1);\n }\n break;\n\n case 'Home':\n e.preventDefault();\n if (isOpen) {\n setFocusedIndex(0);\n optionRefs.current[0]?.scrollIntoView({\n block: 'nearest',\n behavior: 'smooth',\n });\n }\n break;\n\n case 'End':\n e.preventDefault();\n if (isOpen) {\n const lastIndex = options.length - 1;\n setFocusedIndex(lastIndex);\n optionRefs.current[lastIndex]?.scrollIntoView({\n block: 'nearest',\n behavior: 'smooth',\n });\n }\n break;\n\n default:\n if (isOpen && e.key.length === 1 && /[a-zA-Z0-9]/.test(e.key)) {\n const searchChar = e.key.toLowerCase();\n const foundIndex = options.findIndex(\n (option, index) =>\n index > focusedIndex && option.label.toLowerCase().startsWith(searchChar),\n );\n\n if (foundIndex !== -1) {\n setFocusedIndex(foundIndex);\n optionRefs.current[foundIndex]?.scrollIntoView({\n block: 'nearest',\n behavior: 'smooth',\n });\n } else {\n const foundFromStart = options.findIndex((option) =>\n option.label.toLowerCase().startsWith(searchChar),\n );\n if (foundFromStart !== -1) {\n setFocusedIndex(foundFromStart);\n optionRefs.current[foundFromStart]?.scrollIntoView({\n block: 'nearest',\n behavior: 'smooth',\n });\n }\n }\n }\n break;\n }\n },\n [disabled, isOpen, options, focusedIndex, handleOptionSelect],\n );\n\n // Scrolls the first selected option into view. Attached as the options\n // list's own ref below with an empty dependency array, so its identity\n // never changes and React only invokes it on genuine DOM mount/unmount -\n // i.e. exactly when the dropdown opens/closes (Dropdown unmounts its\n // `content` entirely while closed), not on every re-render while open.\n const handleOptionsMount = useCallback((el: HTMLDivElement | null) => {\n if (!el) return;\n const idx = optionsRef.current.findIndex((option) =>\n selectedValuesRef.current.has(option.value),\n );\n if (idx === -1) return;\n optionRefs.current[idx]?.scrollIntoView({ block: 'nearest' });\n }, []);\n\n // Past this many selections the full comma-joined label list becomes\n // unreadable in the trigger, so we switch to a compact \"N selected\" label.\n const COMPACT_LABEL_THRESHOLD = 2;\n\n const displayValue = useMemo(() => {\n if (selectedValues.size === 0) return '';\n\n if (multiple && selectedValues.size > COMPACT_LABEL_THRESHOLD) {\n return `${selectedValues.size} selected`;\n }\n\n const selectedOptions = options.filter((option) => selectedValues.has(option.value));\n const text = selectedOptions.map((option) => option.label).join(', ');\n return text;\n }, [options, selectedValues, multiple]);\n\n const selectContent = useMemo(\n () => (\n <div className={'eidos-select-options'} ref={handleOptionsMount}>\n {options.map((option, index) => {\n const isSelected = selectedValues.has(option.value);\n const isFocused = index === focusedIndex;\n return (\n <div\n key={option.id}\n ref={(el) => {\n optionRefs.current[index] = el;\n }}\n className={`\n\t\t\t\t\t\t\t\t\t\t${'eidos-select-option'}\n\t\t\t\t\t\t\t\t\t\t${isSelected ? 'eidos-select-option--selected' : ''}\n\t\t\t\t\t\t\t\t\t\t${option.disabled ? 'eidos-select-option--disabled' : ''}\n\t\t\t\t\t\t\t\t\t\t${isFocused ? 'eidos-select-option--focused' : ''}\n\t\t\t\t\t\t\t\t\t`.trim()}\n onClick={() => handleOptionSelect(option)}\n onMouseEnter={() => setFocusedIndex(index)}\n role=\"option\"\n aria-selected={isSelected}\n aria-disabled={option.disabled}\n >\n {option.icon && renderIcon(option.icon, 'eidos-select-option-icon')}\n <span className={'eidos-select-option-label'}>{option.label}</span>\n {isSelected && <Check className={'eidos-select-option-check-icon'} />}\n </div>\n );\n })}\n </div>\n ),\n [options, selectedValues, focusedIndex, handleOptionSelect, handleOptionsMount],\n );\n\n const triggerElement = (\n <div\n ref={triggerRef}\n className={`eidos-select-trigger ${fullWidth ? fullWidthModifier('eidos-select-trigger') : ''}`}\n onKeyDown={handleKeyDown}\n tabIndex={disabled ? -1 : undefined}\n role=\"combobox\"\n aria-expanded={isOpen}\n aria-haspopup=\"listbox\"\n aria-controls={`${id || 'select'}-options`}\n aria-activedescendant={\n focusedIndex >= 0 ? `${id || 'select'}-option-${focusedIndex}` : undefined\n }\n >\n <Input\n ref={inputRef}\n value={selectedValues.size > 0 ? displayValue : ''}\n placeholder={selectedValues.size === 0 ? placeholder : ''}\n posIcon={selectedValues.size > 0 && clearable ? X : undefined}\n posIconButton={selectedValues.size > 0 && clearable}\n onPosIconClick={selectedValues.size > 0 && clearable ? handleClear : undefined}\n disabled={disabled}\n readOnly={true}\n isSelect={true}\n name={name}\n id={id}\n required={required}\n fullWidth={fullWidth}\n {...inputProps}\n />\n </div>\n );\n\n return (\n <div\n ref={ref}\n className={`${'eidos-select-container'} ${\n fullWidth ? fullWidthModifier('eidos-select-container') : ''\n } ${className}`}\n >\n <Dropdown\n key={menuKey}\n defaultOpen={autoOpen}\n trigger={triggerElement}\n content={\n <div id={`${id || 'select'}-options`} role=\"listbox\" aria-multiselectable={multiple}>\n {selectContent}\n </div>\n }\n minWidth={minWidth}\n maxWidth={maxWidth}\n minHeight={minHeight}\n maxHeight={maxHeight}\n autoWidth={autoWidth}\n fullWidth={fullWidth}\n triggerRef={triggerRef as React.RefObject<HTMLElement | null>}\n {...dropdownProps}\n />\n </div>\n );\n },\n);\n\nSelect.displayName = 'Select';\n"],"mappings":";;;;;;;;;;;;AAAA,OAAO,SAAS,UAAU,aAAa,QAAQ,WAAW,eAAe;AACzE,SAAS,GAAG,aAAa;AAuSX,SAkBE,KAlBF;AAjSP,IAAM,SAAS,MAAM;AAAA,EAC1B,CACE;AAAA,IACE,UAAU,CAAC;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA,YAAY;AAAA,IACZ,WAAW;AAAA,IACX,cAAc;AAAA,IACd,WAAW;AAAA,IACX,aAAa,CAAC;AAAA,IACd;AAAA,IACA;AAAA,IACA,WAAW;AAAA,IACX,YAAY;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,WAAW;AAAA,IACX,gBAAgB,CAAC;AAAA,EACnB,GACA,QACG;AACH,UAAM,eAAe,UAAU;AAG/B,UAAM,CAAC,gBAAgB,iBAAiB,IAAI,SAAsB,MAAM;AACtE,UAAI,iBAAiB,QAAW;AAC9B,cAAM,OAAO,MAAM,QAAQ,YAAY,IAAI,eAAe,CAAC,YAAY;AACvE,eAAO,IAAI,IAAI,KAAK,OAAO,CAAC,MAAM,MAAM,EAAE,CAAC;AAAA,MAC7C;AACA,aAAO,oBAAI,IAAI;AAAA,IACjB,CAAC;AACD,UAAM,CAAC,SAAS,UAAU,IAAI,SAAS,CAAC;AACxC,UAAM,CAAC,cAAc,eAAe,IAAI,SAAS,EAAE;AACnD,UAAM,CAAC,QAAQ,SAAS,IAAI,SAAS,KAAK;AAE1C,UAAM,WAAW,OAAyB,IAAI;AAC9C,UAAM,aAAa,OAAuB,IAAI;AAC9C,UAAM,aAAa,OAAkC,CAAC,CAAC;AAKvD,UAAM,aAAa,OAAO,OAAO;AACjC,eAAW,UAAU;AACrB,UAAM,oBAAoB,OAAO,cAAc;AAC/C,sBAAkB,UAAU;AAE5B,cAAU,MAAM;AACd,UAAI,UAAU,QAAW;AACvB,cAAM,SAAS,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK;AAEpD,cAAM,cAAc,OAAO,OAAO,CAAC,MAAM,MAAM,EAAE;AACjD,0BAAkB,IAAI,IAAI,WAAW,CAAC;AAAA,MACxC;AAAA,IACF,GAAG,CAAC,KAAK,CAAC;AAEV,cAAU,MAAM;AACd,sBAAgB,EAAE;AAAA,IACpB,GAAG,CAAC,OAAO,CAAC;AAEZ,cAAU,MAAM;AACd,iBAAW,UAAU,WAAW,QAAQ,MAAM,GAAG,QAAQ,MAAM;AAAA,IACjE,GAAG,CAAC,QAAQ,MAAM,CAAC;AAEnB,UAAM,qBAAqB;AAAA,MACzB,CAAC,WAAyB;AACxB,YAAI,OAAO,SAAU;AAErB,cAAM,oBAAoB,IAAI,IAAI,cAAc;AAEhD,YAAI,UAAU;AACZ,cAAI,kBAAkB,IAAI,OAAO,KAAK,GAAG;AACvC,8BAAkB,OAAO,OAAO,KAAK;AAAA,UACvC,OAAO;AACL,8BAAkB,IAAI,OAAO,KAAK;AAAA,UACpC;AAAA,QACF,OAAO;AACL,cAAI,kBAAkB,IAAI,OAAO,KAAK,GAAG;AACvC,8BAAkB,MAAM;AAAA,UAC1B,OAAO;AACL,8BAAkB,MAAM;AACxB,8BAAkB,IAAI,OAAO,KAAK;AAAA,UACpC;AAAA,QACF;AAIA,YAAI,CAAC,cAAc;AACjB,4BAAkB,iBAAiB;AAAA,QACrC;AAEA,YAAI,UAAU;AACZ,gBAAM,WAAW,WACb,MAAM,KAAK,iBAAiB,IAC5B,MAAM,KAAK,iBAAiB,EAAE,CAAC,KAAK;AACxC,mBAAS,QAAQ;AAAA,QACnB;AAEA,YAAI,CAAC,UAAU;AACb,oBAAU,KAAK;AACf,qBAAW,CAAC,SAAS,OAAO,CAAC;AAAA,QAC/B;AAAA,MACF;AAAA,MACA,CAAC,UAAU,UAAU,gBAAgB,YAAY;AAAA,IACnD;AAEA,UAAM,cAAc;AAAA,MAClB,CAAC,MAAyB;AACxB,YAAI,GAAG;AACL,YAAE,gBAAgB;AAAA,QACpB;AACA,YAAI,CAAC,cAAc;AACjB,4BAAkB,oBAAI,IAAI,CAAC;AAAA,QAC7B;AAEA,kBAAU,KAAK;AACf,mBAAW,CAAC,SAAS,OAAO,CAAC;AAC7B,YAAI,UAAU;AACZ,mBAAS,WAAW,CAAC,IAAI,EAAE;AAAA,QAC7B;AAAA,MACF;AAAA,MACA,CAAC,UAAU,UAAU,YAAY;AAAA,IACnC;AAEA,UAAM,gBAAgB;AAAA,MACpB,CAAC,MAA2B;AAC1B,YAAI,SAAU;AAEd,gBAAQ,EAAE,KAAK;AAAA,UACb,KAAK;AACH,cAAE,eAAe;AACjB,gBAAI,CAAC,QAAQ;AACX,wBAAU,IAAI;AACd,8BAAgB,CAAC;AAAA,YACnB,OAAO;AACL,8BAAgB,CAAC,SAAS;AACxB,sBAAM,YAAY,OAAO,QAAQ,SAAS,IAAI,OAAO,IAAI;AAEzD,2BAAW,MAAM;AACf,6BAAW,QAAQ,SAAS,GAAG,eAAe;AAAA,oBAC5C,OAAO;AAAA,oBACP,UAAU;AAAA,kBACZ,CAAC;AAAA,gBACH,GAAG,CAAC;AACJ,uBAAO;AAAA,cACT,CAAC;AAAA,YACH;AACA;AAAA,UAEF,KAAK;AACH,cAAE,eAAe;AACjB,gBAAI,CAAC,QAAQ;AACX,wBAAU,IAAI;AACd,8BAAgB,QAAQ,SAAS,CAAC;AAAA,YACpC,OAAO;AACL,8BAAgB,CAAC,SAAS;AACxB,sBAAM,YAAY,OAAO,IAAI,OAAO,IAAI,QAAQ,SAAS;AAEzD,2BAAW,MAAM;AACf,6BAAW,QAAQ,SAAS,GAAG,eAAe;AAAA,oBAC5C,OAAO;AAAA,oBACP,UAAU;AAAA,kBACZ,CAAC;AAAA,gBACH,GAAG,CAAC;AACJ,uBAAO;AAAA,cACT,CAAC;AAAA,YACH;AACA;AAAA,UAEF,KAAK;AAAA,UACL,KAAK;AACH,cAAE,eAAe;AACjB,gBAAI,CAAC,QAAQ;AACX,wBAAU,IAAI;AACd,8BAAgB,CAAC;AAAA,YACnB,WAAW,gBAAgB,KAAK,eAAe,QAAQ,QAAQ;AAC7D,oBAAM,gBAAgB,QAAQ,YAAY;AAC1C,iCAAmB,aAAa;AAAA,YAClC;AACA;AAAA,UAEF,KAAK;AACH,cAAE,eAAe;AACjB,gBAAI,QAAQ;AACV,wBAAU,KAAK;AACf,8BAAgB,EAAE;AAClB,yBAAW,CAAC,SAAS,OAAO,CAAC;AAAA,YAC/B;AACA;AAAA,UAEF,KAAK;AACH,cAAE,eAAe;AACjB,gBAAI,QAAQ;AACV,8BAAgB,CAAC;AACjB,yBAAW,QAAQ,CAAC,GAAG,eAAe;AAAA,gBACpC,OAAO;AAAA,gBACP,UAAU;AAAA,cACZ,CAAC;AAAA,YACH;AACA;AAAA,UAEF,KAAK;AACH,cAAE,eAAe;AACjB,gBAAI,QAAQ;AACV,oBAAM,YAAY,QAAQ,SAAS;AACnC,8BAAgB,SAAS;AACzB,yBAAW,QAAQ,SAAS,GAAG,eAAe;AAAA,gBAC5C,OAAO;AAAA,gBACP,UAAU;AAAA,cACZ,CAAC;AAAA,YACH;AACA;AAAA,UAEF;AACE,gBAAI,UAAU,EAAE,IAAI,WAAW,KAAK,cAAc,KAAK,EAAE,GAAG,GAAG;AAC7D,oBAAM,aAAa,EAAE,IAAI,YAAY;AACrC,oBAAM,aAAa,QAAQ;AAAA,gBACzB,CAAC,QAAQ,UACP,QAAQ,gBAAgB,OAAO,MAAM,YAAY,EAAE,WAAW,UAAU;AAAA,cAC5E;AAEA,kBAAI,eAAe,IAAI;AACrB,gCAAgB,UAAU;AAC1B,2BAAW,QAAQ,UAAU,GAAG,eAAe;AAAA,kBAC7C,OAAO;AAAA,kBACP,UAAU;AAAA,gBACZ,CAAC;AAAA,cACH,OAAO;AACL,sBAAM,iBAAiB,QAAQ;AAAA,kBAAU,CAAC,WACxC,OAAO,MAAM,YAAY,EAAE,WAAW,UAAU;AAAA,gBAClD;AACA,oBAAI,mBAAmB,IAAI;AACzB,kCAAgB,cAAc;AAC9B,6BAAW,QAAQ,cAAc,GAAG,eAAe;AAAA,oBACjD,OAAO;AAAA,oBACP,UAAU;AAAA,kBACZ,CAAC;AAAA,gBACH;AAAA,cACF;AAAA,YACF;AACA;AAAA,QACJ;AAAA,MACF;AAAA,MACA,CAAC,UAAU,QAAQ,SAAS,cAAc,kBAAkB;AAAA,IAC9D;AAOA,UAAM,qBAAqB,YAAY,CAAC,OAA8B;AACpE,UAAI,CAAC,GAAI;AACT,YAAM,MAAM,WAAW,QAAQ;AAAA,QAAU,CAAC,WACxC,kBAAkB,QAAQ,IAAI,OAAO,KAAK;AAAA,MAC5C;AACA,UAAI,QAAQ,GAAI;AAChB,iBAAW,QAAQ,GAAG,GAAG,eAAe,EAAE,OAAO,UAAU,CAAC;AAAA,IAC9D,GAAG,CAAC,CAAC;AAIL,UAAM,0BAA0B;AAEhC,UAAM,eAAe,QAAQ,MAAM;AACjC,UAAI,eAAe,SAAS,EAAG,QAAO;AAEtC,UAAI,YAAY,eAAe,OAAO,yBAAyB;AAC7D,eAAO,GAAG,eAAe,IAAI;AAAA,MAC/B;AAEA,YAAM,kBAAkB,QAAQ,OAAO,CAAC,WAAW,eAAe,IAAI,OAAO,KAAK,CAAC;AACnF,YAAM,OAAO,gBAAgB,IAAI,CAAC,WAAW,OAAO,KAAK,EAAE,KAAK,IAAI;AACpE,aAAO;AAAA,IACT,GAAG,CAAC,SAAS,gBAAgB,QAAQ,CAAC;AAEtC,UAAM,gBAAgB;AAAA,MACpB,MACE,oBAAC,SAAI,WAAW,wBAAwB,KAAK,oBAC1C,kBAAQ,IAAI,CAAC,QAAQ,UAAU;AAC9B,cAAM,aAAa,eAAe,IAAI,OAAO,KAAK;AAClD,cAAM,YAAY,UAAU;AAC5B,eACE;AAAA,UAAC;AAAA;AAAA,YAEC,KAAK,CAAC,OAAO;AACX,yBAAW,QAAQ,KAAK,IAAI;AAAA,YAC9B;AAAA,YACA,WAAW;AAAA,YACf,qBAAqB;AAAA,YACrB,aAAa,kCAAkC,EAAE;AAAA,YACjD,OAAO,WAAW,kCAAkC,EAAE;AAAA,YACtD,YAAY,iCAAiC,EAAE;AAAA,WAChD,KAAK;AAAA,YACA,SAAS,MAAM,mBAAmB,MAAM;AAAA,YACxC,cAAc,MAAM,gBAAgB,KAAK;AAAA,YACzC,MAAK;AAAA,YACL,iBAAe;AAAA,YACf,iBAAe,OAAO;AAAA,YAErB;AAAA,qBAAO,QAAQ,WAAW,OAAO,MAAM,0BAA0B;AAAA,cAClE,oBAAC,UAAK,WAAW,6BAA8B,iBAAO,OAAM;AAAA,cAC3D,cAAc,oBAAC,SAAM,WAAW,kCAAkC;AAAA;AAAA;AAAA,UAlB9D,OAAO;AAAA,QAmBd;AAAA,MAEJ,CAAC,GACH;AAAA,MAEF,CAAC,SAAS,gBAAgB,cAAc,oBAAoB,kBAAkB;AAAA,IAChF;AAEA,UAAM,iBACJ;AAAA,MAAC;AAAA;AAAA,QACC,KAAK;AAAA,QACL,WAAW,wBAAwB,YAAY,kBAAkB,sBAAsB,IAAI,EAAE;AAAA,QAC7F,WAAW;AAAA,QACX,UAAU,WAAW,KAAK;AAAA,QAC1B,MAAK;AAAA,QACL,iBAAe;AAAA,QACf,iBAAc;AAAA,QACd,iBAAe,GAAG,MAAM,QAAQ;AAAA,QAChC,yBACE,gBAAgB,IAAI,GAAG,MAAM,QAAQ,WAAW,YAAY,KAAK;AAAA,QAGnE;AAAA,UAAC;AAAA;AAAA,YACC,KAAK;AAAA,YACL,OAAO,eAAe,OAAO,IAAI,eAAe;AAAA,YAChD,aAAa,eAAe,SAAS,IAAI,cAAc;AAAA,YACvD,SAAS,eAAe,OAAO,KAAK,YAAY,IAAI;AAAA,YACpD,eAAe,eAAe,OAAO,KAAK;AAAA,YAC1C,gBAAgB,eAAe,OAAO,KAAK,YAAY,cAAc;AAAA,YACrE;AAAA,YACA,UAAU;AAAA,YACV,UAAU;AAAA,YACV;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACC,GAAG;AAAA;AAAA,QACN;AAAA;AAAA,IACF;AAGF,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,WAAW,GAAG,wBAAwB,IACpC,YAAY,kBAAkB,wBAAwB,IAAI,EAC5D,IAAI,SAAS;AAAA,QAEb;AAAA,UAAC;AAAA;AAAA,YAEC,aAAa;AAAA,YACb,SAAS;AAAA,YACT,SACE,oBAAC,SAAI,IAAI,GAAG,MAAM,QAAQ,YAAY,MAAK,WAAU,wBAAsB,UACxE,yBACH;AAAA,YAEF;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACC,GAAG;AAAA;AAAA,UAfC;AAAA,QAgBP;AAAA;AAAA,IACF;AAAA,EAEJ;AACF;AAEA,OAAO,cAAc;","names":[]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  Dropdown
3
- } from "./chunk-4BKTBV2I.js";
3
+ } from "./chunk-2R77XZEP.js";
4
4
 
5
5
  // src/components/ColorPicker/ColorPicker.component.tsx
6
6
  import { useState, useRef, useEffect, useCallback } from "react";
@@ -531,4 +531,4 @@ ColorPicker.displayName = "ColorPicker";
531
531
  export {
532
532
  ColorPicker
533
533
  };
534
- //# sourceMappingURL=chunk-LEMCJW57.js.map
534
+ //# sourceMappingURL=chunk-YDPEHUMH.js.map
@@ -11,31 +11,31 @@
11
11
 
12
12
 
13
13
 
14
- var _chunkLIFUHQH5cjs = require('./chunk-LIFUHQH5.cjs');
14
+ var _chunkKBGFDHKDcjs = require('./chunk-KBGFDHKD.cjs');
15
15
 
16
16
 
17
- var _chunkTROYIUDHcjs = require('./chunk-TROYIUDH.cjs');
17
+ var _chunkOMLXP2CKcjs = require('./chunk-OMLXP2CK.cjs');
18
18
 
19
19
 
20
- var _chunkSKEWTQJ7cjs = require('./chunk-SKEWTQJ7.cjs');
20
+ var _chunkWFEORBLCcjs = require('./chunk-WFEORBLC.cjs');
21
21
 
22
22
 
23
- var _chunkAXBYJ2OYcjs = require('./chunk-AXBYJ2OY.cjs');
23
+ var _chunkIJ4DXG7Dcjs = require('./chunk-IJ4DXG7D.cjs');
24
24
 
25
25
 
26
- var _chunkKV3V2CPHcjs = require('./chunk-KV3V2CPH.cjs');
26
+ var _chunkTROYIUDHcjs = require('./chunk-TROYIUDH.cjs');
27
27
 
28
28
 
29
- var _chunkIJ4DXG7Dcjs = require('./chunk-IJ4DXG7D.cjs');
29
+ var _chunkKV3V2CPHcjs = require('./chunk-KV3V2CPH.cjs');
30
30
 
31
31
 
32
- var _chunkFRUOA2QUcjs = require('./chunk-FRUOA2QU.cjs');
32
+ var _chunk75VXB3H2cjs = require('./chunk-75VXB3H2.cjs');
33
33
 
34
34
 
35
- var _chunkAPK5OQRVcjs = require('./chunk-APK5OQRV.cjs');
35
+ var _chunkWWYJNWJYcjs = require('./chunk-WWYJNWJY.cjs');
36
36
 
37
37
 
38
- var _chunkGEHL4LKKcjs = require('./chunk-GEHL4LKK.cjs');
38
+ var _chunkCUJBNRJJcjs = require('./chunk-CUJBNRJJ.cjs');
39
39
 
40
40
  // src/components/Table/Table.component.tsx
41
41
  var _react = require('react');
@@ -80,10 +80,10 @@ function SortableColumnHeader({
80
80
  stickyStyle,
81
81
  onSortClick
82
82
  }) {
83
- const { attributes, listeners, setNodeRef, transform, transition, isDragging } = _chunkLIFUHQH5cjs.useSortable.call(void 0, {
83
+ const { attributes, listeners, setNodeRef, transform, transition, isDragging } = _chunkKBGFDHKDcjs.useSortable.call(void 0, {
84
84
  id
85
85
  });
86
- const transformStr = _chunkLIFUHQH5cjs.CSS.Transform.toString(transform);
86
+ const transformStr = _chunkKBGFDHKDcjs.CSS.Transform.toString(transform);
87
87
  const thClassName = [
88
88
  "eidos-table-header-cell",
89
89
  `eidos-table-header-cell-${columnType}`,
@@ -342,7 +342,7 @@ var Table = ({
342
342
  try {
343
343
  commitSelection(await onSelectAllMatching());
344
344
  } catch (error) {
345
- _chunkGEHL4LKKcjs.devWarn.call(void 0,
345
+ _chunkCUJBNRJJcjs.devWarn.call(void 0,
346
346
  "table-select-all-matching-failed",
347
347
  `Table: onSelectAllMatching() rejected, so the selection was left untouched. ${String(error)}`
348
348
  );
@@ -353,7 +353,7 @@ var Table = ({
353
353
  _react.useEffect.call(void 0, () => {
354
354
  if (!selectable || selectAllScope !== "all") return;
355
355
  if (totalItems === void 0 || totalItems <= data.length) return;
356
- _chunkGEHL4LKKcjs.devWarn.call(void 0,
356
+ _chunkCUJBNRJJcjs.devWarn.call(void 0,
357
357
  `table-select-all-scope:${data.length}/${totalItems}`,
358
358
  `Table: selectAllScope="all" can only select the ${data.length} row(s) in \`data\`, but \`totalItems\` is ${totalItems}. The keys of rows the table has never received cannot be known here - pass the full dataset, or use selectAllScope="page" to make the scope explicit.`
359
359
  );
@@ -399,10 +399,10 @@ var Table = ({
399
399
  document.body.removeChild(link);
400
400
  URL.revokeObjectURL(url);
401
401
  };
402
- const sensors = _chunkLIFUHQH5cjs.useSensors.call(void 0,
403
- _chunkLIFUHQH5cjs.useSensor.call(void 0, _chunkLIFUHQH5cjs.PointerSensor),
404
- _chunkLIFUHQH5cjs.useSensor.call(void 0, _chunkLIFUHQH5cjs.KeyboardSensor, {
405
- coordinateGetter: _chunkLIFUHQH5cjs.sortableKeyboardCoordinates
402
+ const sensors = _chunkKBGFDHKDcjs.useSensors.call(void 0,
403
+ _chunkKBGFDHKDcjs.useSensor.call(void 0, _chunkKBGFDHKDcjs.PointerSensor),
404
+ _chunkKBGFDHKDcjs.useSensor.call(void 0, _chunkKBGFDHKDcjs.KeyboardSensor, {
405
+ coordinateGetter: _chunkKBGFDHKDcjs.sortableKeyboardCoordinates
406
406
  })
407
407
  );
408
408
  const handleDragEnd = (event) => {
@@ -413,7 +413,7 @@ var Table = ({
413
413
  const oldIndex = columnOrder.indexOf(activeId);
414
414
  const newIndex = columnOrder.indexOf(overId);
415
415
  if (oldIndex === -1 || newIndex === -1) return;
416
- const newOrder = _chunkLIFUHQH5cjs.arrayMove.call(void 0, columnOrder, oldIndex, newIndex);
416
+ const newOrder = _chunkKBGFDHKDcjs.arrayMove.call(void 0, columnOrder, oldIndex, newIndex);
417
417
  setColumnOrder(newOrder);
418
418
  if (onColumnReorder) {
419
419
  const orderMap = new Map(newOrder.map((key, idx) => [key, idx]));
@@ -517,7 +517,7 @@ var Table = ({
517
517
  title: "No results found",
518
518
  description: "Try adjusting your filters or search terms.",
519
519
  action: onFiltersChange ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
520
- _chunkAPK5OQRVcjs.Button,
520
+ _chunkWWYJNWJYcjs.Button,
521
521
  {
522
522
  size: "sm",
523
523
  variant: "outlined",
@@ -609,7 +609,7 @@ var Table = ({
609
609
  " selected"
610
610
  ] }),
611
611
  canSelectAllMatching && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
612
- _chunkAPK5OQRVcjs.Button,
612
+ _chunkWWYJNWJYcjs.Button,
613
613
  {
614
614
  variant: "text",
615
615
  size: "sm",
@@ -618,12 +618,12 @@ var Table = ({
618
618
  children: `Select all ${totalItemCount}`
619
619
  }
620
620
  ),
621
- hasSelectedAllMatching && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkAPK5OQRVcjs.Button, { variant: "text", size: "sm", color: "secondary", onClick: clearSelection, children: "Clear selection" }),
621
+ hasSelectedAllMatching && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkWWYJNWJYcjs.Button, { variant: "text", size: "sm", color: "secondary", onClick: clearSelection, children: "Clear selection" }),
622
622
  bulkActions.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "eidos-table-bulk-actions", children: bulkActions.map((action) => {
623
623
  const isDisabled = typeof action.disabled === "function" ? action.disabled(selectedItems) : _nullishCoalesce(action.disabled, () => ( false));
624
624
  if (action.type === "split-button") {
625
625
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
626
- _chunkSKEWTQJ7cjs.SplitButton,
626
+ _chunkOMLXP2CKcjs.SplitButton,
627
627
  {
628
628
  size: "sm",
629
629
  variant: _nullishCoalesce(action.variant, () => ( "outlined")),
@@ -644,7 +644,7 @@ var Table = ({
644
644
  );
645
645
  }
646
646
  return action.label ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
647
- _chunkAPK5OQRVcjs.Button,
647
+ _chunkWWYJNWJYcjs.Button,
648
648
  {
649
649
  size: "sm",
650
650
  variant: _nullishCoalesce(action.variant, () => ( "outlined")),
@@ -657,7 +657,7 @@ var Table = ({
657
657
  },
658
658
  action.id
659
659
  ) : action.icon ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
660
- _chunkAPK5OQRVcjs.Button,
660
+ _chunkWWYJNWJYcjs.Button,
661
661
  {
662
662
  size: "sm",
663
663
  variant: _nullishCoalesce(action.variant, () => ( "outlined")),
@@ -673,27 +673,27 @@ var Table = ({
673
673
  ] }),
674
674
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "eidos-table-toolbar-right", children: [
675
675
  showDensity && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
676
- _chunkFRUOA2QUcjs.Dropdown,
676
+ _chunk75VXB3H2cjs.Dropdown,
677
677
  {
678
678
  placement: "bottom",
679
679
  align: "end",
680
680
  autoWidth: false,
681
- trigger: isCompactToolbar ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkAPK5OQRVcjs.Button, { variant: "text", size: "sm", icon: _lucidereact.AlignJustify, tooltip: "Density" }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkAPK5OQRVcjs.Button, { variant: "text", size: "sm", preIcon: _lucidereact.AlignJustify, children: "Density" }),
681
+ trigger: isCompactToolbar ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkWWYJNWJYcjs.Button, { variant: "text", size: "sm", icon: _lucidereact.AlignJustify, tooltip: "Density" }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkWWYJNWJYcjs.Button, { variant: "text", size: "sm", preIcon: _lucidereact.AlignJustify, children: "Density" }),
682
682
  content: densityPanel
683
683
  }
684
684
  ),
685
685
  showColumnVisibility && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
686
- _chunkFRUOA2QUcjs.Dropdown,
686
+ _chunk75VXB3H2cjs.Dropdown,
687
687
  {
688
688
  placement: "bottom",
689
689
  align: "end",
690
690
  autoWidth: false,
691
- trigger: isCompactToolbar ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkAPK5OQRVcjs.Button, { variant: "text", size: "sm", icon: _lucidereact.Columns3, tooltip: "Columns" }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkAPK5OQRVcjs.Button, { variant: "text", size: "sm", preIcon: _lucidereact.Columns3, children: "Columns" }),
691
+ trigger: isCompactToolbar ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkWWYJNWJYcjs.Button, { variant: "text", size: "sm", icon: _lucidereact.Columns3, tooltip: "Columns" }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkWWYJNWJYcjs.Button, { variant: "text", size: "sm", preIcon: _lucidereact.Columns3, children: "Columns" }),
692
692
  content: columnVisibilityPanel
693
693
  }
694
694
  ),
695
695
  showExport && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
696
- _chunkAPK5OQRVcjs.Button,
696
+ _chunkWWYJNWJYcjs.Button,
697
697
  {
698
698
  variant: "text",
699
699
  size: "sm",
@@ -703,7 +703,7 @@ var Table = ({
703
703
  }
704
704
  ),
705
705
  showFilters && onFiltersChange && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
706
- _chunkLIFUHQH5cjs.TableFiltersDropdown,
706
+ _chunkKBGFDHKDcjs.TableFiltersDropdown,
707
707
  {
708
708
  columns,
709
709
  filters,
@@ -888,7 +888,7 @@ var Table = ({
888
888
  ) })
889
889
  ),
890
890
  showFooter && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "eidos-table-footer", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "eidos-table-footer-content", children: showPagination && data.length > 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
891
- _chunkAXBYJ2OYcjs.Pagination,
891
+ _chunkWFEORBLCcjs.Pagination,
892
892
  {
893
893
  page: currentPage,
894
894
  totalPages,
@@ -910,7 +910,7 @@ var Table = ({
910
910
  }
911
911
  );
912
912
  if (draggableColumns) {
913
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLIFUHQH5cjs.DndContext, { sensors, onDragEnd: handleDragEnd, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLIFUHQH5cjs.SortableContext, { items: sortableItems, strategy: _chunkLIFUHQH5cjs.horizontalListSortingStrategy, children: tableContent }) });
913
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKBGFDHKDcjs.DndContext, { sensors, onDragEnd: handleDragEnd, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKBGFDHKDcjs.SortableContext, { items: sortableItems, strategy: _chunkKBGFDHKDcjs.horizontalListSortingStrategy, children: tableContent }) });
914
914
  }
915
915
  return tableContent;
916
916
  };
@@ -918,4 +918,4 @@ var Table = ({
918
918
 
919
919
 
920
920
  exports.Table = Table;
921
- //# sourceMappingURL=chunk-GGSII6Y2.cjs.map
921
+ //# sourceMappingURL=chunk-ZGT4LT5Y.cjs.map