eidos-ui 2.0.0 → 2.1.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 (223) hide show
  1. package/dist/Avatar.types-BY-C09Ke.d.cts +23 -0
  2. package/dist/Avatar.types-BY-C09Ke.d.ts +23 -0
  3. package/dist/{Header.types-BZi80bWz.d.cts → Header.types-B3QtuiL-.d.cts} +7 -3
  4. package/dist/{Header.types-DJt-q01P.d.ts → Header.types-C6w0FBY8.d.ts} +7 -3
  5. package/dist/{Table.types-Cl5gR8r9.d.cts → Table.types-CPj-udMc.d.cts} +95 -0
  6. package/dist/{Table.types-jhPb7JNU.d.ts → Table.types-CZZ7QWAI.d.ts} +95 -0
  7. package/dist/Toolbar.types-DSk8z2iy.d.cts +38 -0
  8. package/dist/Toolbar.types-RN0klQzu.d.ts +38 -0
  9. package/dist/alert/index.cjs +4 -4
  10. package/dist/alert/index.d.cts +2 -1
  11. package/dist/alert/index.d.ts +2 -1
  12. package/dist/alert/index.js +3 -3
  13. package/dist/avatar/index.d.cts +3 -21
  14. package/dist/avatar/index.d.ts +3 -21
  15. package/dist/button/index.cjs +3 -3
  16. package/dist/button/index.js +2 -2
  17. package/dist/chip/index.cjs +3 -3
  18. package/dist/chip/index.js +2 -2
  19. package/dist/{chunk-KIXFSXIN.cjs → chunk-3E7TKBQI.cjs} +5 -3
  20. package/dist/chunk-3E7TKBQI.cjs.map +1 -0
  21. package/dist/{chunk-ZBKJ3EMK.cjs → chunk-442U3W6R.cjs} +3 -3
  22. package/dist/{chunk-ZBKJ3EMK.cjs.map → chunk-442U3W6R.cjs.map} +1 -1
  23. package/dist/{chunk-YQLCPKGV.js → chunk-5HUZYY54.js} +6 -4
  24. package/dist/chunk-5HUZYY54.js.map +1 -0
  25. package/dist/{chunk-G5IGADJI.cjs → chunk-5VM2256W.cjs} +7 -11
  26. package/dist/chunk-5VM2256W.cjs.map +1 -0
  27. package/dist/{chunk-Z4ZY7L7W.js → chunk-5ZL6PYU3.js} +3 -3
  28. package/dist/{chunk-A3NE2C7C.js → chunk-67RFMV6K.js} +2 -2
  29. package/dist/{chunk-2U7UJOOB.cjs → chunk-6HUHH6Y4.cjs} +17 -15
  30. package/dist/chunk-6HUHH6Y4.cjs.map +1 -0
  31. package/dist/{chunk-5WROPW7Z.js → chunk-A7WQINIG.js} +3 -3
  32. package/dist/{chunk-DKZTDYH5.cjs → chunk-AAA6TR5I.cjs} +3 -3
  33. package/dist/{chunk-DKZTDYH5.cjs.map → chunk-AAA6TR5I.cjs.map} +1 -1
  34. package/dist/{chunk-A7Z2QAFZ.cjs → chunk-APK5OQRV.cjs} +5 -5
  35. package/dist/{chunk-A7Z2QAFZ.cjs.map → chunk-APK5OQRV.cjs.map} +1 -1
  36. package/dist/{chunk-ISABZ2VX.cjs → chunk-AXBYJ2OY.cjs} +9 -9
  37. package/dist/{chunk-ISABZ2VX.cjs.map → chunk-AXBYJ2OY.cjs.map} +1 -1
  38. package/dist/{chunk-6RGJAQCU.cjs → chunk-B5G5XVFJ.cjs} +5 -5
  39. package/dist/{chunk-6RGJAQCU.cjs.map → chunk-B5G5XVFJ.cjs.map} +1 -1
  40. package/dist/{chunk-MW2S7PZ7.cjs → chunk-D5IY2HUV.cjs} +5 -5
  41. package/dist/{chunk-MW2S7PZ7.cjs.map → chunk-D5IY2HUV.cjs.map} +1 -1
  42. package/dist/{chunk-FMPXSF3H.cjs → chunk-DAXZRNNO.cjs} +4 -4
  43. package/dist/{chunk-FMPXSF3H.cjs.map → chunk-DAXZRNNO.cjs.map} +1 -1
  44. package/dist/{chunk-AJZTVCST.js → chunk-EXITZVB2.js} +24 -9
  45. package/dist/chunk-EXITZVB2.js.map +1 -0
  46. package/dist/{chunk-AYMD4D4M.cjs → chunk-EZME5CLK.cjs} +3 -3
  47. package/dist/{chunk-AYMD4D4M.cjs.map → chunk-EZME5CLK.cjs.map} +1 -1
  48. package/dist/{chunk-IV4LM3MB.js → chunk-F26VIKNF.js} +9 -11
  49. package/dist/chunk-F26VIKNF.js.map +1 -0
  50. package/dist/{chunk-WPTMMOA6.cjs → chunk-G77YR73R.cjs} +10 -13
  51. package/dist/chunk-G77YR73R.cjs.map +1 -0
  52. package/dist/chunk-GEHL4LKK.cjs +32 -0
  53. package/dist/chunk-GEHL4LKK.cjs.map +1 -0
  54. package/dist/chunk-GGSII6Y2.cjs +921 -0
  55. package/dist/chunk-GGSII6Y2.cjs.map +1 -0
  56. package/dist/{chunk-3VRMTWUS.js → chunk-GHQ6SQPI.js} +7 -10
  57. package/dist/chunk-GHQ6SQPI.js.map +1 -0
  58. package/dist/{chunk-56B6RLOE.js → chunk-GI6VJYOS.js} +4 -4
  59. package/dist/{chunk-56B6RLOE.js.map → chunk-GI6VJYOS.js.map} +1 -1
  60. package/dist/{chunk-UGMONQGH.cjs → chunk-GR2PMCVN.cjs} +10 -12
  61. package/dist/chunk-GR2PMCVN.cjs.map +1 -0
  62. package/dist/{chunk-7AHZTHXR.cjs → chunk-GT22EGJP.cjs} +5 -5
  63. package/dist/{chunk-7AHZTHXR.cjs.map → chunk-GT22EGJP.cjs.map} +1 -1
  64. package/dist/{chunk-ALGX5X4N.js → chunk-IFVT5UCY.js} +3 -3
  65. package/dist/{chunk-5CLC3FJO.js → chunk-KBG77JHC.js} +13 -2
  66. package/dist/chunk-KBG77JHC.js.map +1 -0
  67. package/dist/{chunk-HLNKIAE5.cjs → chunk-KJZUYC4X.cjs} +5 -5
  68. package/dist/{chunk-HLNKIAE5.cjs.map → chunk-KJZUYC4X.cjs.map} +1 -1
  69. package/dist/{chunk-4BQM5F76.cjs → chunk-LFWPQYWX.cjs} +3 -3
  70. package/dist/{chunk-4BQM5F76.cjs.map → chunk-LFWPQYWX.cjs.map} +1 -1
  71. package/dist/{chunk-XVSODE4K.cjs → chunk-LIFUHQH5.cjs} +35 -20
  72. package/dist/chunk-LIFUHQH5.cjs.map +1 -0
  73. package/dist/{chunk-PJC7NZUV.cjs → chunk-LUL6RZ4M.cjs} +3 -3
  74. package/dist/{chunk-PJC7NZUV.cjs.map → chunk-LUL6RZ4M.cjs.map} +1 -1
  75. package/dist/{chunk-4UJ7LG4W.cjs → chunk-N2IGZIEX.cjs} +3 -3
  76. package/dist/{chunk-4UJ7LG4W.cjs.map → chunk-N2IGZIEX.cjs.map} +1 -1
  77. package/dist/{chunk-3LHQUOGP.js → chunk-NGVOXM7P.js} +3 -3
  78. package/dist/{chunk-WTXASLBB.js → chunk-O5WEKLNF.js} +2 -2
  79. package/dist/{chunk-BOB5JJ7F.js → chunk-P7IQY5YH.js} +2 -2
  80. package/dist/{chunk-VZYLJSV5.js → chunk-R4PU2TBM.js} +2 -2
  81. package/dist/{chunk-P2GCAVUZ.js → chunk-RAZRQ57B.js} +2 -2
  82. package/dist/{chunk-K7IFNKMN.js → chunk-REVK7IGN.js} +2 -2
  83. package/dist/{chunk-6U2H26A4.cjs → chunk-RHOT7AEI.cjs} +3 -3
  84. package/dist/{chunk-6U2H26A4.cjs.map → chunk-RHOT7AEI.cjs.map} +1 -1
  85. package/dist/{chunk-MH2CD2QT.js → chunk-RKA2OJRT.js} +207 -102
  86. package/dist/chunk-RKA2OJRT.js.map +1 -0
  87. package/dist/{chunk-JC4WLVBG.js → chunk-RWOX2NJN.js} +2 -2
  88. package/dist/{chunk-4LM33LDV.js → chunk-S3CT536K.js} +2 -2
  89. package/dist/{chunk-4M3LZLOH.js → chunk-SHYSLWQG.js} +2 -2
  90. package/dist/{chunk-EQEV7GPT.cjs → chunk-SKEWTQJ7.cjs} +5 -5
  91. package/dist/{chunk-EQEV7GPT.cjs.map → chunk-SKEWTQJ7.cjs.map} +1 -1
  92. package/dist/{chunk-2ZENLZEQ.cjs → chunk-SKTDGCWJ.cjs} +232 -127
  93. package/dist/chunk-SKTDGCWJ.cjs.map +1 -0
  94. package/dist/{chunk-2BXCIWL7.js → chunk-SN6EWQDJ.js} +3 -3
  95. package/dist/{chunk-DW2YDWGN.js → chunk-TEJIPPZR.js} +2 -2
  96. package/dist/{chunk-OGKD5PLS.cjs → chunk-TRLBYA5G.cjs} +4 -4
  97. package/dist/{chunk-OGKD5PLS.cjs.map → chunk-TRLBYA5G.cjs.map} +1 -1
  98. package/dist/{chunk-WE5FTQGD.js → chunk-VHMOKXUT.js} +3 -7
  99. package/dist/chunk-VHMOKXUT.js.map +1 -0
  100. package/dist/{chunk-S77GR5YQ.cjs → chunk-VHQTDITV.cjs} +3 -3
  101. package/dist/{chunk-S77GR5YQ.cjs.map → chunk-VHQTDITV.cjs.map} +1 -1
  102. package/dist/{chunk-3HMKE2GJ.js → chunk-VSTQEHVZ.js} +6 -4
  103. package/dist/chunk-VSTQEHVZ.js.map +1 -0
  104. package/dist/{chunk-HNUTV3HR.cjs → chunk-WUBQJVB7.cjs} +3 -3
  105. package/dist/{chunk-HNUTV3HR.cjs.map → chunk-WUBQJVB7.cjs.map} +1 -1
  106. package/dist/{chunk-S7TWEVC3.js → chunk-Y53HCLGW.js} +2 -2
  107. package/dist/{chunk-WIE7HDIM.js → chunk-YJXZR7RL.js} +2 -2
  108. package/dist/{chunk-IJYYHBZC.cjs → chunk-Z4SLV6WG.cjs} +3 -3
  109. package/dist/{chunk-IJYYHBZC.cjs.map → chunk-Z4SLV6WG.cjs.map} +1 -1
  110. package/dist/chunk-ZEZK664O.js +921 -0
  111. package/dist/chunk-ZEZK664O.js.map +1 -0
  112. package/dist/{chunk-JMD3P4CY.js → chunk-ZHFPV43D.js} +2 -2
  113. package/dist/combobox/index.cjs +4 -4
  114. package/dist/combobox/index.js +3 -3
  115. package/dist/context-menu/index.cjs +4 -4
  116. package/dist/context-menu/index.js +3 -3
  117. package/dist/data-grid/index.cjs +13 -13
  118. package/dist/data-grid/index.d.cts +49 -3
  119. package/dist/data-grid/index.d.ts +49 -3
  120. package/dist/data-grid/index.js +12 -12
  121. package/dist/date-picker/index.cjs +6 -6
  122. package/dist/date-picker/index.js +5 -5
  123. package/dist/drawer/index.cjs +4 -4
  124. package/dist/drawer/index.d.cts +2 -1
  125. package/dist/drawer/index.d.ts +2 -1
  126. package/dist/drawer/index.js +3 -3
  127. package/dist/empty-state/index.d.cts +2 -2
  128. package/dist/empty-state/index.d.ts +2 -2
  129. package/dist/header/index.cjs +4 -4
  130. package/dist/header/index.d.cts +2 -2
  131. package/dist/header/index.d.ts +2 -2
  132. package/dist/header/index.js +3 -3
  133. package/dist/index.cjs +29 -29
  134. package/dist/index.css +318 -73
  135. package/dist/index.d.cts +5 -4
  136. package/dist/index.d.ts +5 -4
  137. package/dist/index.js +28 -28
  138. package/dist/inline-edit/index.cjs +4 -4
  139. package/dist/inline-edit/index.js +3 -3
  140. package/dist/input/index.cjs +3 -3
  141. package/dist/input/index.js +2 -2
  142. package/dist/menu/index.cjs +3 -3
  143. package/dist/menu/index.js +2 -2
  144. package/dist/modal/index.cjs +4 -4
  145. package/dist/modal/index.d.cts +2 -1
  146. package/dist/modal/index.d.ts +2 -1
  147. package/dist/modal/index.js +3 -3
  148. package/dist/navigation/index.cjs +4 -4
  149. package/dist/navigation/index.js +3 -3
  150. package/dist/page-layout/index.cjs +8 -8
  151. package/dist/page-layout/index.d.cts +3 -2
  152. package/dist/page-layout/index.d.ts +3 -2
  153. package/dist/page-layout/index.js +7 -7
  154. package/dist/pagination/index.cjs +6 -6
  155. package/dist/pagination/index.js +5 -5
  156. package/dist/popover/index.cjs +2 -2
  157. package/dist/popover/index.d.cts +2 -2
  158. package/dist/popover/index.d.ts +2 -2
  159. package/dist/popover/index.js +1 -1
  160. package/dist/segmented-control/index.cjs +3 -3
  161. package/dist/segmented-control/index.js +2 -2
  162. package/dist/select/index.cjs +4 -4
  163. package/dist/select/index.js +3 -3
  164. package/dist/snackbar/index.cjs +4 -4
  165. package/dist/snackbar/index.js +3 -3
  166. package/dist/split-button/index.cjs +4 -4
  167. package/dist/split-button/index.js +3 -3
  168. package/dist/table/index.cjs +11 -11
  169. package/dist/table/index.d.cts +3 -3
  170. package/dist/table/index.d.ts +3 -3
  171. package/dist/table/index.js +10 -10
  172. package/dist/tabs/index.cjs +3 -3
  173. package/dist/tabs/index.js +2 -2
  174. package/dist/tag-input/index.cjs +4 -4
  175. package/dist/tag-input/index.js +3 -3
  176. package/dist/textarea/index.cjs +3 -3
  177. package/dist/textarea/index.js +2 -2
  178. package/dist/toolbar/index.cjs +5 -5
  179. package/dist/toolbar/index.d.cts +3 -2
  180. package/dist/toolbar/index.d.ts +3 -2
  181. package/dist/toolbar/index.js +4 -4
  182. package/package.json +6 -5
  183. package/dist/Toolbar.types-BGD57Uhm.d.ts +0 -22
  184. package/dist/Toolbar.types-tQkLmPIu.d.cts +0 -22
  185. package/dist/chunk-2U7UJOOB.cjs.map +0 -1
  186. package/dist/chunk-2ZENLZEQ.cjs.map +0 -1
  187. package/dist/chunk-3HMKE2GJ.js.map +0 -1
  188. package/dist/chunk-3VRMTWUS.js.map +0 -1
  189. package/dist/chunk-5CLC3FJO.js.map +0 -1
  190. package/dist/chunk-AJZTVCST.js.map +0 -1
  191. package/dist/chunk-G5IGADJI.cjs.map +0 -1
  192. package/dist/chunk-GOR642KK.cjs +0 -21
  193. package/dist/chunk-GOR642KK.cjs.map +0 -1
  194. package/dist/chunk-IV4LM3MB.js.map +0 -1
  195. package/dist/chunk-KIXFSXIN.cjs.map +0 -1
  196. package/dist/chunk-MH2CD2QT.js.map +0 -1
  197. package/dist/chunk-QONDJ5VM.cjs +0 -744
  198. package/dist/chunk-QONDJ5VM.cjs.map +0 -1
  199. package/dist/chunk-UGMONQGH.cjs.map +0 -1
  200. package/dist/chunk-VSFKM7FE.js +0 -744
  201. package/dist/chunk-VSFKM7FE.js.map +0 -1
  202. package/dist/chunk-WE5FTQGD.js.map +0 -1
  203. package/dist/chunk-WPTMMOA6.cjs.map +0 -1
  204. package/dist/chunk-XVSODE4K.cjs.map +0 -1
  205. package/dist/chunk-YQLCPKGV.js.map +0 -1
  206. /package/dist/{chunk-Z4ZY7L7W.js.map → chunk-5ZL6PYU3.js.map} +0 -0
  207. /package/dist/{chunk-A3NE2C7C.js.map → chunk-67RFMV6K.js.map} +0 -0
  208. /package/dist/{chunk-5WROPW7Z.js.map → chunk-A7WQINIG.js.map} +0 -0
  209. /package/dist/{chunk-ALGX5X4N.js.map → chunk-IFVT5UCY.js.map} +0 -0
  210. /package/dist/{chunk-3LHQUOGP.js.map → chunk-NGVOXM7P.js.map} +0 -0
  211. /package/dist/{chunk-WTXASLBB.js.map → chunk-O5WEKLNF.js.map} +0 -0
  212. /package/dist/{chunk-BOB5JJ7F.js.map → chunk-P7IQY5YH.js.map} +0 -0
  213. /package/dist/{chunk-VZYLJSV5.js.map → chunk-R4PU2TBM.js.map} +0 -0
  214. /package/dist/{chunk-P2GCAVUZ.js.map → chunk-RAZRQ57B.js.map} +0 -0
  215. /package/dist/{chunk-K7IFNKMN.js.map → chunk-REVK7IGN.js.map} +0 -0
  216. /package/dist/{chunk-JC4WLVBG.js.map → chunk-RWOX2NJN.js.map} +0 -0
  217. /package/dist/{chunk-4LM33LDV.js.map → chunk-S3CT536K.js.map} +0 -0
  218. /package/dist/{chunk-4M3LZLOH.js.map → chunk-SHYSLWQG.js.map} +0 -0
  219. /package/dist/{chunk-2BXCIWL7.js.map → chunk-SN6EWQDJ.js.map} +0 -0
  220. /package/dist/{chunk-DW2YDWGN.js.map → chunk-TEJIPPZR.js.map} +0 -0
  221. /package/dist/{chunk-S7TWEVC3.js.map → chunk-Y53HCLGW.js.map} +0 -0
  222. /package/dist/{chunk-WIE7HDIM.js.map → chunk-YJXZR7RL.js.map} +0 -0
  223. /package/dist/{chunk-JMD3P4CY.js.map → chunk-ZHFPV43D.js.map} +0 -0
@@ -0,0 +1,23 @@
1
+ import React__default from 'react';
2
+
3
+ type AvatarSize = 'sm' | 'md' | 'lg';
4
+ type AvatarColor = 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'info' | 'gray';
5
+ interface AvatarProps {
6
+ src?: string;
7
+ alt?: string;
8
+ name?: string;
9
+ size?: AvatarSize;
10
+ color?: AvatarColor;
11
+ shape?: 'circle' | 'square';
12
+ fallback?: React__default.ReactNode;
13
+ className?: string;
14
+ onClick?: () => void;
15
+ }
16
+ interface AvatarGroupProps {
17
+ children: React__default.ReactNode;
18
+ max?: number;
19
+ size?: AvatarSize;
20
+ className?: string;
21
+ }
22
+
23
+ export type { AvatarColor as A, AvatarGroupProps as a, AvatarProps as b, AvatarSize as c };
@@ -0,0 +1,23 @@
1
+ import React__default from 'react';
2
+
3
+ type AvatarSize = 'sm' | 'md' | 'lg';
4
+ type AvatarColor = 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'info' | 'gray';
5
+ interface AvatarProps {
6
+ src?: string;
7
+ alt?: string;
8
+ name?: string;
9
+ size?: AvatarSize;
10
+ color?: AvatarColor;
11
+ shape?: 'circle' | 'square';
12
+ fallback?: React__default.ReactNode;
13
+ className?: string;
14
+ onClick?: () => void;
15
+ }
16
+ interface AvatarGroupProps {
17
+ children: React__default.ReactNode;
18
+ max?: number;
19
+ size?: AvatarSize;
20
+ className?: string;
21
+ }
22
+
23
+ export type { AvatarColor as A, AvatarGroupProps as a, AvatarProps as b, AvatarSize as c };
@@ -1,10 +1,14 @@
1
1
  import { T as TextButtonProps, I as IconButtonProps } from './Button.types-DZRCVqyN.cjs';
2
2
 
3
3
  interface HeaderProps {
4
- /** Page or section title. */
5
- title: string;
4
+ /**
5
+ * Page or section title. Accepts inline nodes alongside the text - a
6
+ * status `Pill`/`Chip` beside the title is the common case - not just a
7
+ * string. Keep the children inline-level; the title is a heading.
8
+ */
9
+ title: React.ReactNode;
6
10
  /** Supporting text rendered below the title. */
7
- subtitle?: string | React.ReactNode;
11
+ subtitle?: React.ReactNode;
8
12
  /** Trailing action buttons, rendered right-aligned. */
9
13
  actions?: HeaderActionProps[];
10
14
  className?: string;
@@ -1,10 +1,14 @@
1
1
  import { T as TextButtonProps, I as IconButtonProps } from './Button.types-BH0CPyPx.js';
2
2
 
3
3
  interface HeaderProps {
4
- /** Page or section title. */
5
- title: string;
4
+ /**
5
+ * Page or section title. Accepts inline nodes alongside the text - a
6
+ * status `Pill`/`Chip` beside the title is the common case - not just a
7
+ * string. Keep the children inline-level; the title is a heading.
8
+ */
9
+ title: React.ReactNode;
6
10
  /** Supporting text rendered below the title. */
7
- subtitle?: string | React.ReactNode;
11
+ subtitle?: React.ReactNode;
8
12
  /** Trailing action buttons, rendered right-aligned. */
9
13
  actions?: HeaderActionProps[];
10
14
  className?: string;
@@ -85,9 +85,30 @@ interface TableColumnCommon {
85
85
  }[];
86
86
  dateFilterMode?: 'single' | 'multiple' | 'range';
87
87
  width?: string;
88
+ /**
89
+ * Cell text alignment. Applies in table mode only: card view renders each
90
+ * field as a label above its value, where aligning the value away from its
91
+ * own label reads as a misalignment rather than a choice.
92
+ *
93
+ * Ignored on `type: 'icon'` and `type: 'action'` columns, which are always
94
+ * centred - they hold a single control in a fixed-width cell, so there is
95
+ * nothing to align it within. `DataGrid`'s actions column behaves the same.
96
+ */
88
97
  align?: 'left' | 'center' | 'right';
89
98
  /** Enables position:sticky on this column */
90
99
  pin?: 'left' | 'right';
100
+ /**
101
+ * Render this column's value as the card's title instead of a label:value
102
+ * field row. Only the first column with `cardHeader` set is used - if
103
+ * several are marked, the rest render as normal fields.
104
+ */
105
+ cardHeader?: boolean;
106
+ /**
107
+ * Render this column's value as the card's subtitle, directly under the
108
+ * `cardHeader` value. Only the first column with `cardSubheader` set is
109
+ * used. Has no effect without a `cardHeader` column also being set.
110
+ */
111
+ cardSubheader?: boolean;
91
112
  }
92
113
  /**
93
114
  * A column bound to the row field named by `key`, which is what lets `render`
@@ -170,7 +191,48 @@ interface TableProps<T extends object = Record<string, unknown>> {
170
191
  rowKey?: RowKey<T>;
171
192
  selectedRows?: string[];
172
193
  defaultSelectedRows?: string[];
194
+ /**
195
+ * Fires with every selected key, plus the row object for each of those keys.
196
+ *
197
+ * `selectedKeys` is authoritative; `selectedRows` is best-effort. The row
198
+ * for each selected key is cached, so a row selected while it was rendered
199
+ * still comes back after `data` has moved on - but a key that was selected
200
+ * before the table ever saw its row (seeded via `defaultSelectedRows`, say)
201
+ * has no row to hand back.
202
+ */
173
203
  onSelectionChange?: (selectedKeys: string[], selectedRows: T[]) => void;
204
+ /**
205
+ * What the select-all control acts on - the header checkbox in table mode,
206
+ * or the toolbar checkbox in card view (where there is no header row):
207
+ *
208
+ * - `'all'` - every row in `data`, across pages.
209
+ * - `'page'` - only the rows currently rendered.
210
+ *
211
+ * Either way it only ever adds to or removes from the rows in its own
212
+ * scope, so a selection made on another page survives.
213
+ *
214
+ * `'all'` can only reach the rows the table actually holds: if `data` is one
215
+ * page of a larger set (with `totalItems` describing the whole), it cannot
216
+ * know the keys of rows it has never received, and says so with a dev-only
217
+ * warning. Matches `DataGrid.selectAllScope`.
218
+ *
219
+ * @default 'all'
220
+ */
221
+ selectAllScope?: 'all' | 'page';
222
+ /**
223
+ * Resolves the keys of **every** row matching the current query, including
224
+ * rows not present in `data`. Supplying it adds a "Select all N" action to
225
+ * the toolbar once everything the table does hold is selected.
226
+ *
227
+ * Only relevant when `data` is a subset of a larger set and `totalItems`
228
+ * describes the whole - a table paginating its own `data` already has every
229
+ * key. Called with no arguments, may be async (the action shows a loading
230
+ * state), and whatever it returns replaces the selection.
231
+ *
232
+ * Matches `DataGrid.onSelectAllMatching`, which is where this mostly earns
233
+ * its keep: `DataGrid` has a real server-side pagination mode.
234
+ */
235
+ onSelectAllMatching?: () => string[] | Promise<string[]>;
174
236
  bulkActions?: BulkAction<T>[];
175
237
  density?: 'compact' | 'comfortable' | 'spacious';
176
238
  showColumnVisibility?: boolean;
@@ -178,6 +240,39 @@ interface TableProps<T extends object = Record<string, unknown>> {
178
240
  showDensity?: boolean;
179
241
  draggableColumns?: boolean;
180
242
  onColumnReorder?: (newColumns: TableColumn<T>[]) => void;
243
+ /**
244
+ * On by default: below `cardViewBreakpoint`, or once the table's own width
245
+ * can no longer fit every visible column at a usable width, swap the table
246
+ * for a stacked list of cards - one per row. Only the row rendering
247
+ * changes; the toolbar, pagination, filtering, sorting and selection all
248
+ * keep working. `draggableColumns` has no effect in card view (there are no
249
+ * column headers to drag).
250
+ *
251
+ * Matches `DataGridProps.hasCardView` - both components use the same
252
+ * defaults and the same measured-container logic. Set to `false` to always
253
+ * render a table.
254
+ *
255
+ * @default true
256
+ */
257
+ hasCardView?: boolean;
258
+ /**
259
+ * Container width (px) at/below which card view kicks in. This is an
260
+ * explicit floor - card view also switches on automatically, regardless
261
+ * of this value, once the container can't fit every visible column at a
262
+ * usable minimum width, so a many-column table never has to overflow
263
+ * horizontally waiting for a hand-tuned breakpoint.
264
+ *
265
+ * @default 640
266
+ */
267
+ cardViewBreakpoint?: number;
268
+ /**
269
+ * Cards lay out in a responsive grid (CSS `repeat(auto-fill, minmax(...))`)
270
+ * rather than one per row - this sets the minimum width (px) a card can
271
+ * shrink to before the next one wraps to a new row.
272
+ *
273
+ * @default 280
274
+ */
275
+ cardMinWidth?: number;
181
276
  }
182
277
 
183
278
  export type { BulkAction as B, FilterValue as F, RowKey as R, TableColumn as T, BulkActionButton as a, BulkActionSplitButton as b, BulkActionSplitOption as c, TableCustomColumn as d, TableFilters as e, TableProps as f, TableValueColumn as g };
@@ -85,9 +85,30 @@ interface TableColumnCommon {
85
85
  }[];
86
86
  dateFilterMode?: 'single' | 'multiple' | 'range';
87
87
  width?: string;
88
+ /**
89
+ * Cell text alignment. Applies in table mode only: card view renders each
90
+ * field as a label above its value, where aligning the value away from its
91
+ * own label reads as a misalignment rather than a choice.
92
+ *
93
+ * Ignored on `type: 'icon'` and `type: 'action'` columns, which are always
94
+ * centred - they hold a single control in a fixed-width cell, so there is
95
+ * nothing to align it within. `DataGrid`'s actions column behaves the same.
96
+ */
88
97
  align?: 'left' | 'center' | 'right';
89
98
  /** Enables position:sticky on this column */
90
99
  pin?: 'left' | 'right';
100
+ /**
101
+ * Render this column's value as the card's title instead of a label:value
102
+ * field row. Only the first column with `cardHeader` set is used - if
103
+ * several are marked, the rest render as normal fields.
104
+ */
105
+ cardHeader?: boolean;
106
+ /**
107
+ * Render this column's value as the card's subtitle, directly under the
108
+ * `cardHeader` value. Only the first column with `cardSubheader` set is
109
+ * used. Has no effect without a `cardHeader` column also being set.
110
+ */
111
+ cardSubheader?: boolean;
91
112
  }
92
113
  /**
93
114
  * A column bound to the row field named by `key`, which is what lets `render`
@@ -170,7 +191,48 @@ interface TableProps<T extends object = Record<string, unknown>> {
170
191
  rowKey?: RowKey<T>;
171
192
  selectedRows?: string[];
172
193
  defaultSelectedRows?: string[];
194
+ /**
195
+ * Fires with every selected key, plus the row object for each of those keys.
196
+ *
197
+ * `selectedKeys` is authoritative; `selectedRows` is best-effort. The row
198
+ * for each selected key is cached, so a row selected while it was rendered
199
+ * still comes back after `data` has moved on - but a key that was selected
200
+ * before the table ever saw its row (seeded via `defaultSelectedRows`, say)
201
+ * has no row to hand back.
202
+ */
173
203
  onSelectionChange?: (selectedKeys: string[], selectedRows: T[]) => void;
204
+ /**
205
+ * What the select-all control acts on - the header checkbox in table mode,
206
+ * or the toolbar checkbox in card view (where there is no header row):
207
+ *
208
+ * - `'all'` - every row in `data`, across pages.
209
+ * - `'page'` - only the rows currently rendered.
210
+ *
211
+ * Either way it only ever adds to or removes from the rows in its own
212
+ * scope, so a selection made on another page survives.
213
+ *
214
+ * `'all'` can only reach the rows the table actually holds: if `data` is one
215
+ * page of a larger set (with `totalItems` describing the whole), it cannot
216
+ * know the keys of rows it has never received, and says so with a dev-only
217
+ * warning. Matches `DataGrid.selectAllScope`.
218
+ *
219
+ * @default 'all'
220
+ */
221
+ selectAllScope?: 'all' | 'page';
222
+ /**
223
+ * Resolves the keys of **every** row matching the current query, including
224
+ * rows not present in `data`. Supplying it adds a "Select all N" action to
225
+ * the toolbar once everything the table does hold is selected.
226
+ *
227
+ * Only relevant when `data` is a subset of a larger set and `totalItems`
228
+ * describes the whole - a table paginating its own `data` already has every
229
+ * key. Called with no arguments, may be async (the action shows a loading
230
+ * state), and whatever it returns replaces the selection.
231
+ *
232
+ * Matches `DataGrid.onSelectAllMatching`, which is where this mostly earns
233
+ * its keep: `DataGrid` has a real server-side pagination mode.
234
+ */
235
+ onSelectAllMatching?: () => string[] | Promise<string[]>;
174
236
  bulkActions?: BulkAction<T>[];
175
237
  density?: 'compact' | 'comfortable' | 'spacious';
176
238
  showColumnVisibility?: boolean;
@@ -178,6 +240,39 @@ interface TableProps<T extends object = Record<string, unknown>> {
178
240
  showDensity?: boolean;
179
241
  draggableColumns?: boolean;
180
242
  onColumnReorder?: (newColumns: TableColumn<T>[]) => void;
243
+ /**
244
+ * On by default: below `cardViewBreakpoint`, or once the table's own width
245
+ * can no longer fit every visible column at a usable width, swap the table
246
+ * for a stacked list of cards - one per row. Only the row rendering
247
+ * changes; the toolbar, pagination, filtering, sorting and selection all
248
+ * keep working. `draggableColumns` has no effect in card view (there are no
249
+ * column headers to drag).
250
+ *
251
+ * Matches `DataGridProps.hasCardView` - both components use the same
252
+ * defaults and the same measured-container logic. Set to `false` to always
253
+ * render a table.
254
+ *
255
+ * @default true
256
+ */
257
+ hasCardView?: boolean;
258
+ /**
259
+ * Container width (px) at/below which card view kicks in. This is an
260
+ * explicit floor - card view also switches on automatically, regardless
261
+ * of this value, once the container can't fit every visible column at a
262
+ * usable minimum width, so a many-column table never has to overflow
263
+ * horizontally waiting for a hand-tuned breakpoint.
264
+ *
265
+ * @default 640
266
+ */
267
+ cardViewBreakpoint?: number;
268
+ /**
269
+ * Cards lay out in a responsive grid (CSS `repeat(auto-fill, minmax(...))`)
270
+ * rather than one per row - this sets the minimum width (px) a card can
271
+ * shrink to before the next one wraps to a new row.
272
+ *
273
+ * @default 280
274
+ */
275
+ cardMinWidth?: number;
181
276
  }
182
277
 
183
278
  export type { BulkAction as B, FilterValue as F, RowKey as R, TableColumn as T, BulkActionButton as a, BulkActionSplitButton as b, BulkActionSplitOption as c, TableCustomColumn as d, TableFilters as e, TableProps as f, TableValueColumn as g };
@@ -0,0 +1,38 @@
1
+ import { a as BreadcrumbProps } from './Breadcrumb.types-DaykU-C8.cjs';
2
+ import { b as AvatarProps } from './Avatar.types-BY-C09Ke.cjs';
3
+ import { I as IconButtonProps } from './Button.types-DZRCVqyN.cjs';
4
+ import { b as MenuItemType } from './Menu.types-DwcuCZM7.cjs';
5
+ import { C as CommandItem } from './CommandPalette.types-DRMMS_ev.cjs';
6
+
7
+ interface ToolbarProps {
8
+ /** Breadcrumb trail rendered above the page. Omit to leave the leading region empty. */
9
+ breadcrumbs?: Pick<BreadcrumbProps, 'items' | 'separator'>;
10
+ /**
11
+ * The signed-in user, rendered as the `Avatar` at the far right. Omit it
12
+ * (along with `userMenu`) to render no avatar at all.
13
+ */
14
+ user?: Pick<AvatarProps, 'name' | 'src' | 'color'>;
15
+ /**
16
+ * User menu items, opened from the `user` avatar. Omit (or pass an empty
17
+ * array) to render the avatar as a plain, non-interactive mark.
18
+ */
19
+ userMenu?: MenuItemType[];
20
+ /** Command palette items, rendered right-aligned. */
21
+ cmdPaletteItems?: CommandItem[];
22
+ /**
23
+ * Free-form content rendered at the start of the trailing region, before
24
+ * the command palette trigger - an environment badge, an org/tenant
25
+ * switcher, a global toggle. Unlike `actions`, which is a restricted
26
+ * button subset, this region takes any node and is laid out as-is.
27
+ */
28
+ content?: React.ReactNode;
29
+ /** Trailing action buttons, rendered right-aligned. */
30
+ actions?: ToolbarActionProps[];
31
+ className?: string;
32
+ }
33
+ /**
34
+ * Restricted, discriminated subset of ButtonProps for Toolbar actions.
35
+ */
36
+ type ToolbarActionProps = Pick<IconButtonProps, 'color' | 'loading' | 'disabled' | 'preIcon' | 'posIcon' | 'icon' | 'children' | 'onClick' | 'tooltip'>;
37
+
38
+ export type { ToolbarActionProps as T, ToolbarProps as a };
@@ -0,0 +1,38 @@
1
+ import { a as BreadcrumbProps } from './Breadcrumb.types-DaykU-C8.js';
2
+ import { b as AvatarProps } from './Avatar.types-BY-C09Ke.js';
3
+ import { I as IconButtonProps } from './Button.types-BH0CPyPx.js';
4
+ import { b as MenuItemType } from './Menu.types-DNIpjSAK.js';
5
+ import { C as CommandItem } from './CommandPalette.types-DRMMS_ev.js';
6
+
7
+ interface ToolbarProps {
8
+ /** Breadcrumb trail rendered above the page. Omit to leave the leading region empty. */
9
+ breadcrumbs?: Pick<BreadcrumbProps, 'items' | 'separator'>;
10
+ /**
11
+ * The signed-in user, rendered as the `Avatar` at the far right. Omit it
12
+ * (along with `userMenu`) to render no avatar at all.
13
+ */
14
+ user?: Pick<AvatarProps, 'name' | 'src' | 'color'>;
15
+ /**
16
+ * User menu items, opened from the `user` avatar. Omit (or pass an empty
17
+ * array) to render the avatar as a plain, non-interactive mark.
18
+ */
19
+ userMenu?: MenuItemType[];
20
+ /** Command palette items, rendered right-aligned. */
21
+ cmdPaletteItems?: CommandItem[];
22
+ /**
23
+ * Free-form content rendered at the start of the trailing region, before
24
+ * the command palette trigger - an environment badge, an org/tenant
25
+ * switcher, a global toggle. Unlike `actions`, which is a restricted
26
+ * button subset, this region takes any node and is laid out as-is.
27
+ */
28
+ content?: React.ReactNode;
29
+ /** Trailing action buttons, rendered right-aligned. */
30
+ actions?: ToolbarActionProps[];
31
+ className?: string;
32
+ }
33
+ /**
34
+ * Restricted, discriminated subset of ButtonProps for Toolbar actions.
35
+ */
36
+ type ToolbarActionProps = Pick<IconButtonProps, 'color' | 'loading' | 'disabled' | 'preIcon' | 'posIcon' | 'icon' | 'children' | 'onClick' | 'tooltip'>;
37
+
38
+ export type { ToolbarActionProps as T, ToolbarProps as a };
@@ -1,12 +1,12 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _chunk6RGJAQCUcjs = require('../chunk-6RGJAQCU.cjs');
4
- require('../chunk-A7Z2QAFZ.cjs');
3
+ var _chunkB5G5XVFJcjs = require('../chunk-B5G5XVFJ.cjs');
4
+ require('../chunk-APK5OQRV.cjs');
5
5
  require('../chunk-I6UOIS4J.cjs');
6
- require('../chunk-GOR642KK.cjs');
6
+ require('../chunk-GEHL4LKK.cjs');
7
7
  require('../chunk-Z5U4NJTW.cjs');
8
8
  require('../chunk-DZUJEN5N.cjs');
9
9
 
10
10
 
11
- exports.Alert = _chunk6RGJAQCUcjs.Alert;
11
+ exports.Alert = _chunkB5G5XVFJcjs.Alert;
12
12
  //# sourceMappingURL=index.cjs.map
@@ -9,7 +9,8 @@ interface AlertAction {
9
9
  }
10
10
  interface AlertProps {
11
11
  variant?: 'info' | 'success' | 'warning' | 'danger';
12
- title?: string;
12
+ /** Alert heading. Accepts inline nodes alongside the text, not just a string. */
13
+ title?: React__default.ReactNode;
13
14
  children?: React__default.ReactNode;
14
15
  /**
15
16
  * Icon control:
@@ -9,7 +9,8 @@ interface AlertAction {
9
9
  }
10
10
  interface AlertProps {
11
11
  variant?: 'info' | 'success' | 'warning' | 'danger';
12
- title?: string;
12
+ /** Alert heading. Accepts inline nodes alongside the text, not just a string. */
13
+ title?: React__default.ReactNode;
13
14
  children?: React__default.ReactNode;
14
15
  /**
15
16
  * Icon control:
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  Alert
3
- } from "../chunk-Z4ZY7L7W.js";
4
- import "../chunk-WIE7HDIM.js";
3
+ } from "../chunk-5ZL6PYU3.js";
4
+ import "../chunk-YJXZR7RL.js";
5
5
  import "../chunk-66R54X6R.js";
6
- import "../chunk-5CLC3FJO.js";
6
+ import "../chunk-KBG77JHC.js";
7
7
  import "../chunk-YV57RSPD.js";
8
8
  import "../chunk-5WRI5ZAA.js";
9
9
  export {
@@ -1,26 +1,8 @@
1
1
  import React__default from 'react';
2
-
3
- type AvatarSize = 'sm' | 'md' | 'lg';
4
- type AvatarColor = 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'info' | 'gray';
5
- interface AvatarProps {
6
- src?: string;
7
- alt?: string;
8
- name?: string;
9
- size?: AvatarSize;
10
- color?: AvatarColor;
11
- shape?: 'circle' | 'square';
12
- fallback?: React__default.ReactNode;
13
- className?: string;
14
- onClick?: () => void;
15
- }
16
- interface AvatarGroupProps {
17
- children: React__default.ReactNode;
18
- max?: number;
19
- size?: AvatarSize;
20
- className?: string;
21
- }
2
+ import { b as AvatarProps, a as AvatarGroupProps } from '../Avatar.types-BY-C09Ke.cjs';
3
+ export { A as AvatarColor, c as AvatarSize } from '../Avatar.types-BY-C09Ke.cjs';
22
4
 
23
5
  declare const Avatar: React__default.FC<AvatarProps>;
24
6
  declare const AvatarGroup: React__default.FC<AvatarGroupProps>;
25
7
 
26
- export { Avatar, type AvatarColor, AvatarGroup, type AvatarGroupProps, type AvatarProps, type AvatarSize };
8
+ export { Avatar, AvatarGroup, AvatarGroupProps, AvatarProps };
@@ -1,26 +1,8 @@
1
1
  import React__default from 'react';
2
-
3
- type AvatarSize = 'sm' | 'md' | 'lg';
4
- type AvatarColor = 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'info' | 'gray';
5
- interface AvatarProps {
6
- src?: string;
7
- alt?: string;
8
- name?: string;
9
- size?: AvatarSize;
10
- color?: AvatarColor;
11
- shape?: 'circle' | 'square';
12
- fallback?: React__default.ReactNode;
13
- className?: string;
14
- onClick?: () => void;
15
- }
16
- interface AvatarGroupProps {
17
- children: React__default.ReactNode;
18
- max?: number;
19
- size?: AvatarSize;
20
- className?: string;
21
- }
2
+ import { b as AvatarProps, a as AvatarGroupProps } from '../Avatar.types-BY-C09Ke.js';
3
+ export { A as AvatarColor, c as AvatarSize } from '../Avatar.types-BY-C09Ke.js';
22
4
 
23
5
  declare const Avatar: React__default.FC<AvatarProps>;
24
6
  declare const AvatarGroup: React__default.FC<AvatarGroupProps>;
25
7
 
26
- export { Avatar, type AvatarColor, AvatarGroup, type AvatarGroupProps, type AvatarProps, type AvatarSize };
8
+ export { Avatar, AvatarGroup, AvatarGroupProps, AvatarProps };
@@ -2,13 +2,13 @@
2
2
 
3
3
 
4
4
 
5
- var _chunkA7Z2QAFZcjs = require('../chunk-A7Z2QAFZ.cjs');
5
+ var _chunkAPK5OQRVcjs = require('../chunk-APK5OQRV.cjs');
6
6
  require('../chunk-I6UOIS4J.cjs');
7
- require('../chunk-GOR642KK.cjs');
7
+ require('../chunk-GEHL4LKK.cjs');
8
8
  require('../chunk-Z5U4NJTW.cjs');
9
9
  require('../chunk-DZUJEN5N.cjs');
10
10
 
11
11
 
12
12
 
13
- exports.Button = _chunkA7Z2QAFZcjs.Button; exports.IconButton = _chunkA7Z2QAFZcjs.IconButton;
13
+ exports.Button = _chunkAPK5OQRVcjs.Button; exports.IconButton = _chunkAPK5OQRVcjs.IconButton;
14
14
  //# sourceMappingURL=index.cjs.map
@@ -2,9 +2,9 @@ import "../chunk-N5JDL4VE.js";
2
2
  import {
3
3
  Button,
4
4
  IconButton
5
- } from "../chunk-WIE7HDIM.js";
5
+ } from "../chunk-YJXZR7RL.js";
6
6
  import "../chunk-66R54X6R.js";
7
- import "../chunk-5CLC3FJO.js";
7
+ import "../chunk-KBG77JHC.js";
8
8
  import "../chunk-YV57RSPD.js";
9
9
  import "../chunk-5WRI5ZAA.js";
10
10
  export {
@@ -1,11 +1,11 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});require('../chunk-FQZ6F7FQ.cjs');
2
2
 
3
3
 
4
- var _chunkOGKD5PLScjs = require('../chunk-OGKD5PLS.cjs');
5
- require('../chunk-GOR642KK.cjs');
4
+ var _chunkTRLBYA5Gcjs = require('../chunk-TRLBYA5G.cjs');
5
+ require('../chunk-GEHL4LKK.cjs');
6
6
  require('../chunk-Z5U4NJTW.cjs');
7
7
  require('../chunk-DZUJEN5N.cjs');
8
8
 
9
9
 
10
- exports.Chip = _chunkOGKD5PLScjs.Chip;
10
+ exports.Chip = _chunkTRLBYA5Gcjs.Chip;
11
11
  //# sourceMappingURL=index.cjs.map
@@ -1,8 +1,8 @@
1
1
  import "../chunk-TPNCV7KA.js";
2
2
  import {
3
3
  Chip
4
- } from "../chunk-4M3LZLOH.js";
5
- import "../chunk-5CLC3FJO.js";
4
+ } from "../chunk-SHYSLWQG.js";
5
+ import "../chunk-KBG77JHC.js";
6
6
  import "../chunk-YV57RSPD.js";
7
7
  import "../chunk-5WRI5ZAA.js";
8
8
  export {
@@ -27,6 +27,7 @@ var Popover = ({
27
27
  isPositioned: false,
28
28
  position: { top: 0, left: 0, placement: preferredPlacement }
29
29
  });
30
+ const titleId = _react.useId.call(void 0, );
30
31
  const triggerRef = _react.useRef.call(void 0, null);
31
32
  const contentRef = _react.useRef.call(void 0, null);
32
33
  const timeoutRef = _react.useRef.call(void 0, void 0);
@@ -217,7 +218,8 @@ var Popover = ({
217
218
  ref: contentRef,
218
219
  role: "dialog",
219
220
  "aria-modal": "false",
220
- "aria-label": _nullishCoalesce(title, () => ( "Popover")),
221
+ "aria-labelledby": title ? titleId : void 0,
222
+ "aria-label": title ? void 0 : "Popover",
221
223
  className: [
222
224
  "eidos-popover-content",
223
225
  `eidos-popover-content--${popoverState.position.placement}`,
@@ -231,7 +233,7 @@ var Popover = ({
231
233
  },
232
234
  children: [
233
235
  (title || showCloseButton) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "eidos-popover-header", children: [
234
- title && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "eidos-popover-title", children: title }),
236
+ title && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { id: titleId, className: "eidos-popover-title", children: title }),
235
237
  showCloseButton && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
236
238
  "button",
237
239
  {
@@ -256,4 +258,4 @@ Popover.displayName = "Popover";
256
258
 
257
259
 
258
260
  exports.Popover = Popover;
259
- //# sourceMappingURL=chunk-KIXFSXIN.cjs.map
261
+ //# sourceMappingURL=chunk-3E7TKBQI.cjs.map