@common-origin/design-system 2.18.0 → 2.20.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 (291) hide show
  1. package/dist/client.js +1122 -785
  2. package/dist/client.js.map +1 -1
  3. package/dist/components/atoms/Avatar/Avatar.d.mts +8 -0
  4. package/dist/components/atoms/Avatar/Avatar.mjs +103 -0
  5. package/dist/components/atoms/Avatar/Avatar.mjs.map +1 -0
  6. package/dist/components/atoms/Avatar/index.d.mts +1 -0
  7. package/dist/components/atoms/Badge/Badge.d.mts +25 -0
  8. package/dist/components/atoms/Badge/Badge.mjs +98 -0
  9. package/dist/components/atoms/Badge/Badge.mjs.map +1 -0
  10. package/dist/components/atoms/Badge/index.d.mts +2 -0
  11. package/dist/components/atoms/Box/Box.d.mts +62 -0
  12. package/dist/components/atoms/Box/Box.mjs +246 -0
  13. package/dist/components/atoms/Box/Box.mjs.map +1 -0
  14. package/dist/components/atoms/Box/index.d.mts +1 -0
  15. package/dist/components/atoms/Button/Button.d.mts +40 -0
  16. package/dist/components/atoms/Button/Button.mjs +208 -0
  17. package/dist/components/atoms/Button/Button.mjs.map +1 -0
  18. package/dist/components/atoms/Button/index.d.mts +1 -0
  19. package/dist/components/atoms/CategoryBadge/CategoryBadge.d.mts +29 -0
  20. package/dist/components/atoms/CategoryBadge/CategoryBadge.mjs +29 -0
  21. package/dist/components/atoms/CategoryBadge/CategoryBadge.mjs.map +1 -0
  22. package/dist/components/atoms/CategoryBadge/index.d.mts +2 -0
  23. package/dist/components/atoms/CategoryLabel/CategoryLabel.d.mts +69 -0
  24. package/dist/components/atoms/CategoryLabel/CategoryLabel.mjs +151 -0
  25. package/dist/components/atoms/CategoryLabel/CategoryLabel.mjs.map +1 -0
  26. package/dist/components/atoms/CategoryLabel/index.d.mts +2 -0
  27. package/dist/components/atoms/Chip/BooleanChip.d.mts +28 -0
  28. package/dist/components/atoms/Chip/BooleanChip.mjs +76 -0
  29. package/dist/components/atoms/Chip/BooleanChip.mjs.map +1 -0
  30. package/dist/components/atoms/Chip/Chip.d.mts +37 -0
  31. package/dist/components/atoms/Chip/Chip.mjs +76 -0
  32. package/dist/components/atoms/Chip/Chip.mjs.map +1 -0
  33. package/dist/components/atoms/Chip/FilterChip.d.mts +13 -0
  34. package/dist/components/atoms/Chip/FilterChip.mjs +14 -0
  35. package/dist/components/atoms/Chip/FilterChip.mjs.map +1 -0
  36. package/dist/components/atoms/Chip/InputChip.d.mts +27 -0
  37. package/dist/components/atoms/Chip/InputChip.mjs +97 -0
  38. package/dist/components/atoms/Chip/InputChip.mjs.map +1 -0
  39. package/dist/components/atoms/Chip/index.d.mts +4 -0
  40. package/dist/components/atoms/Chip/shared/ChipBase.d.mts +12 -0
  41. package/dist/components/atoms/Chip/shared/ChipBase.mjs +45 -0
  42. package/dist/components/atoms/Chip/shared/ChipBase.mjs.map +1 -0
  43. package/dist/components/atoms/Chip/shared/types.d.mts +34 -0
  44. package/dist/components/atoms/Chip/shared/types.d.ts +3 -1
  45. package/dist/components/atoms/Chip/shared/utils.d.mts +10 -0
  46. package/dist/components/atoms/Chip/shared/utils.d.ts +2 -3
  47. package/dist/components/atoms/Chip/shared/utils.mjs +46 -0
  48. package/dist/components/atoms/Chip/shared/utils.mjs.map +1 -0
  49. package/dist/components/atoms/Container/Container.d.mts +6 -0
  50. package/dist/components/atoms/Container/Container.mjs +24 -0
  51. package/dist/components/atoms/Container/Container.mjs.map +1 -0
  52. package/dist/components/atoms/Container/index.d.mts +1 -0
  53. package/dist/components/atoms/DateFormatter/DateFormatter.d.mts +23 -0
  54. package/dist/components/atoms/DateFormatter/DateFormatter.mjs +64 -0
  55. package/dist/components/atoms/DateFormatter/DateFormatter.mjs.map +1 -0
  56. package/dist/components/atoms/DateFormatter/index.d.mts +1 -0
  57. package/dist/components/atoms/Divider/Divider.d.mts +30 -0
  58. package/dist/components/atoms/Divider/Divider.mjs +134 -0
  59. package/dist/components/atoms/Divider/Divider.mjs.map +1 -0
  60. package/dist/components/atoms/Divider/index.d.mts +1 -0
  61. package/dist/components/atoms/Icon/Icon.d.mts +22 -0
  62. package/dist/components/atoms/Icon/Icon.mjs +95 -0
  63. package/dist/components/atoms/Icon/Icon.mjs.map +1 -0
  64. package/dist/components/atoms/Icon/index.d.mts +1 -0
  65. package/dist/components/atoms/IconButton/IconButton.d.mts +14 -0
  66. package/dist/components/atoms/IconButton/IconButton.mjs +150 -0
  67. package/dist/components/atoms/IconButton/IconButton.mjs.map +1 -0
  68. package/dist/components/atoms/IconButton/index.d.mts +1 -0
  69. package/dist/components/atoms/MoneyDisplay/MoneyDisplay.d.mts +26 -0
  70. package/dist/components/atoms/MoneyDisplay/MoneyDisplay.mjs +126 -0
  71. package/dist/components/atoms/MoneyDisplay/MoneyDisplay.mjs.map +1 -0
  72. package/dist/components/atoms/MoneyDisplay/index.d.mts +2 -0
  73. package/dist/components/atoms/Picture/Picture.d.mts +12 -0
  74. package/dist/components/atoms/Picture/Picture.mjs +65 -0
  75. package/dist/components/atoms/Picture/Picture.mjs.map +1 -0
  76. package/dist/components/atoms/Picture/index.d.mts +1 -0
  77. package/dist/components/atoms/ProgressBar/ProgressBar.d.mts +21 -0
  78. package/dist/components/atoms/ProgressBar/ProgressBar.mjs +91 -0
  79. package/dist/components/atoms/ProgressBar/ProgressBar.mjs.map +1 -0
  80. package/dist/components/atoms/ProgressBar/index.d.mts +2 -0
  81. package/dist/components/atoms/Stack/Stack.d.mts +16 -0
  82. package/dist/components/atoms/Stack/Stack.mjs +71 -0
  83. package/dist/components/atoms/Stack/Stack.mjs.map +1 -0
  84. package/dist/components/atoms/Stack/index.d.mts +1 -0
  85. package/dist/components/atoms/StatusBadge/StatusBadge.d.mts +23 -0
  86. package/dist/components/atoms/StatusBadge/StatusBadge.mjs +18 -0
  87. package/dist/components/atoms/StatusBadge/StatusBadge.mjs.map +1 -0
  88. package/dist/components/atoms/StatusBadge/index.d.mts +2 -0
  89. package/dist/components/atoms/StatusLabel/StatusLabel.d.mts +17 -0
  90. package/dist/components/atoms/StatusLabel/StatusLabel.mjs +28 -0
  91. package/dist/components/atoms/StatusLabel/StatusLabel.mjs.map +1 -0
  92. package/dist/components/atoms/StatusLabel/StatusLabelBase.d.mts +49 -0
  93. package/dist/components/atoms/StatusLabel/StatusLabelBase.mjs +161 -0
  94. package/dist/components/atoms/StatusLabel/StatusLabelBase.mjs.map +1 -0
  95. package/dist/components/atoms/StatusLabel/index.d.mts +2 -0
  96. package/dist/components/atoms/Tag/Tag.d.mts +36 -0
  97. package/dist/components/atoms/Tag/Tag.mjs +115 -0
  98. package/dist/components/atoms/Tag/Tag.mjs.map +1 -0
  99. package/dist/components/atoms/Tag/index.d.mts +2 -0
  100. package/dist/components/atoms/Typography/Typography.d.mts +34 -0
  101. package/dist/components/atoms/Typography/Typography.mjs +139 -0
  102. package/dist/components/atoms/Typography/Typography.mjs.map +1 -0
  103. package/dist/components/atoms/Typography/index.d.mts +1 -0
  104. package/dist/components/atoms/index.d.mts +20 -0
  105. package/dist/components/index.d.mts +4 -0
  106. package/dist/components/layout/GridSystem/GridSystem.d.mts +58 -0
  107. package/dist/components/layout/GridSystem/GridSystem.mjs +221 -0
  108. package/dist/components/layout/GridSystem/GridSystem.mjs.map +1 -0
  109. package/dist/components/layout/GridSystem/index.d.mts +1 -0
  110. package/dist/components/layout/index.d.mts +1 -0
  111. package/dist/components/molecules/AccountCard/AccountCard.d.mts +44 -0
  112. package/dist/components/molecules/AccountCard/AccountCard.mjs +191 -0
  113. package/dist/components/molecules/AccountCard/AccountCard.mjs.map +1 -0
  114. package/dist/components/molecules/AccountCard/index.d.mts +2 -0
  115. package/dist/components/molecules/ActionSheet/ActionSheet.d.mts +111 -0
  116. package/dist/components/molecules/ActionSheet/ActionSheet.mjs +283 -0
  117. package/dist/components/molecules/ActionSheet/ActionSheet.mjs.map +1 -0
  118. package/dist/components/molecules/ActionSheet/index.d.mts +2 -0
  119. package/dist/components/molecules/AgentInput/AgentInput.d.mts +30 -0
  120. package/dist/components/molecules/AgentInput/AgentInput.mjs +735 -0
  121. package/dist/components/molecules/AgentInput/AgentInput.mjs.map +1 -0
  122. package/dist/components/molecules/AgentInput/agentInputSpeech.d.mts +43 -0
  123. package/dist/components/molecules/AgentInput/agentInputSpeech.mjs +49 -0
  124. package/dist/components/molecules/AgentInput/agentInputSpeech.mjs.map +1 -0
  125. package/dist/components/molecules/AgentInput/agentInputStateMachine.d.mts +29 -0
  126. package/dist/components/molecules/AgentInput/agentInputStateMachine.mjs +55 -0
  127. package/dist/components/molecules/AgentInput/agentInputStateMachine.mjs.map +1 -0
  128. package/dist/components/molecules/AgentInput/index.d.mts +3 -0
  129. package/dist/components/molecules/Alert/Alert.d.mts +68 -0
  130. package/dist/components/molecules/Alert/Alert.mjs +284 -0
  131. package/dist/components/molecules/Alert/Alert.mjs.map +1 -0
  132. package/dist/components/molecules/Alert/index.d.mts +1 -0
  133. package/dist/components/molecules/Breadcrumbs/Breadcrumbs.d.mts +16 -0
  134. package/dist/components/molecules/Breadcrumbs/Breadcrumbs.mjs +74 -0
  135. package/dist/components/molecules/Breadcrumbs/Breadcrumbs.mjs.map +1 -0
  136. package/dist/components/molecules/Breadcrumbs/index.d.mts +1 -0
  137. package/dist/components/molecules/CardLarge/CardLarge.d.mts +12 -0
  138. package/dist/components/molecules/CardLarge/CardLarge.mjs +75 -0
  139. package/dist/components/molecules/CardLarge/CardLarge.mjs.map +1 -0
  140. package/dist/components/molecules/CardLarge/index.d.mts +1 -0
  141. package/dist/components/molecules/CardSmall/CardSmall.d.mts +16 -0
  142. package/dist/components/molecules/CardSmall/CardSmall.mjs +73 -0
  143. package/dist/components/molecules/CardSmall/CardSmall.mjs.map +1 -0
  144. package/dist/components/molecules/CardSmall/index.d.mts +1 -0
  145. package/dist/components/molecules/Checkbox/Checkbox.d.mts +64 -0
  146. package/dist/components/molecules/Checkbox/Checkbox.mjs +139 -0
  147. package/dist/components/molecules/Checkbox/Checkbox.mjs.map +1 -0
  148. package/dist/components/molecules/Checkbox/SelectableInputBase.d.mts +40 -0
  149. package/dist/components/molecules/Checkbox/SelectableInputBase.mjs +99 -0
  150. package/dist/components/molecules/Checkbox/SelectableInputBase.mjs.map +1 -0
  151. package/dist/components/molecules/Checkbox/index.d.mts +3 -0
  152. package/dist/components/molecules/ChipGroup/ChipGroup.d.mts +7 -0
  153. package/dist/components/molecules/ChipGroup/ChipGroup.mjs +54 -0
  154. package/dist/components/molecules/ChipGroup/ChipGroup.mjs.map +1 -0
  155. package/dist/components/molecules/ChipGroup/index.d.mts +1 -0
  156. package/dist/components/molecules/CodeBlock/CodeBlock.d.mts +46 -0
  157. package/dist/components/molecules/CodeBlock/CodeBlock.mjs +231 -0
  158. package/dist/components/molecules/CodeBlock/CodeBlock.mjs.map +1 -0
  159. package/dist/components/molecules/CodeBlock/index.d.mts +1 -0
  160. package/dist/components/molecules/DateGroup/DateGroup.d.mts +37 -0
  161. package/dist/components/molecules/DateGroup/DateGroup.mjs +104 -0
  162. package/dist/components/molecules/DateGroup/DateGroup.mjs.map +1 -0
  163. package/dist/components/molecules/DateGroup/index.d.mts +2 -0
  164. package/dist/components/molecules/Dropdown/Dropdown.d.mts +27 -0
  165. package/dist/components/molecules/Dropdown/Dropdown.mjs +282 -0
  166. package/dist/components/molecules/Dropdown/Dropdown.mjs.map +1 -0
  167. package/dist/components/molecules/Dropdown/index.d.mts +1 -0
  168. package/dist/components/molecules/EmptyState/EmptyState.d.mts +32 -0
  169. package/dist/components/molecules/EmptyState/EmptyState.mjs +133 -0
  170. package/dist/components/molecules/EmptyState/EmptyState.mjs.map +1 -0
  171. package/dist/components/molecules/EmptyState/index.d.mts +2 -0
  172. package/dist/components/molecules/FeatureBlock/FeatureBlock.d.mts +14 -0
  173. package/dist/components/molecules/FeatureBlock/FeatureBlock.mjs +99 -0
  174. package/dist/components/molecules/FeatureBlock/FeatureBlock.mjs.map +1 -0
  175. package/dist/components/molecules/FeatureBlock/index.d.mts +1 -0
  176. package/dist/components/molecules/InlineAlert/InlineAlert.d.mts +54 -0
  177. package/dist/components/molecules/InlineAlert/InlineAlert.mjs +140 -0
  178. package/dist/components/molecules/InlineAlert/InlineAlert.mjs.map +1 -0
  179. package/dist/components/molecules/InlineAlert/index.d.mts +2 -0
  180. package/dist/components/molecules/List/List.d.mts +30 -0
  181. package/dist/components/molecules/List/List.mjs +45 -0
  182. package/dist/components/molecules/List/List.mjs.map +1 -0
  183. package/dist/components/molecules/List/ListContext.d.mts +6 -0
  184. package/dist/components/molecules/List/ListContext.mjs +11 -0
  185. package/dist/components/molecules/List/ListContext.mjs.map +1 -0
  186. package/dist/components/molecules/List/ListItem.d.mts +101 -0
  187. package/dist/components/molecules/List/ListItem.mjs +224 -0
  188. package/dist/components/molecules/List/ListItem.mjs.map +1 -0
  189. package/dist/components/molecules/List/index.d.mts +4 -0
  190. package/dist/components/molecules/Modal/Modal.d.mts +69 -0
  191. package/dist/components/molecules/Modal/Modal.mjs +259 -0
  192. package/dist/components/molecules/Modal/Modal.mjs.map +1 -0
  193. package/dist/components/molecules/Modal/index.d.mts +2 -0
  194. package/dist/components/molecules/NumberInput/NumberInput.d.mts +86 -0
  195. package/dist/components/molecules/NumberInput/NumberInput.mjs +268 -0
  196. package/dist/components/molecules/NumberInput/NumberInput.mjs.map +1 -0
  197. package/dist/components/molecules/NumberInput/index.d.mts +2 -0
  198. package/dist/components/molecules/PageTitle/PageTitle.d.mts +21 -0
  199. package/dist/components/molecules/PageTitle/PageTitle.mjs +77 -0
  200. package/dist/components/molecules/PageTitle/PageTitle.mjs.map +1 -0
  201. package/dist/components/molecules/PageTitle/index.d.mts +1 -0
  202. package/dist/components/molecules/PasswordField/PasswordField.d.mts +55 -0
  203. package/dist/components/molecules/PasswordField/PasswordField.mjs +146 -0
  204. package/dist/components/molecules/PasswordField/PasswordField.mjs.map +1 -0
  205. package/dist/components/molecules/PasswordField/index.d.mts +2 -0
  206. package/dist/components/molecules/SearchField/SearchField.d.mts +108 -0
  207. package/dist/components/molecules/SearchField/SearchField.mjs +340 -0
  208. package/dist/components/molecules/SearchField/SearchField.mjs.map +1 -0
  209. package/dist/components/molecules/SearchField/index.d.mts +2 -0
  210. package/dist/components/molecules/Sheet/Sheet.d.mts +96 -0
  211. package/dist/components/molecules/Sheet/Sheet.mjs +243 -0
  212. package/dist/components/molecules/Sheet/Sheet.mjs.map +1 -0
  213. package/dist/components/molecules/Sheet/index.d.mts +2 -0
  214. package/dist/components/molecules/Slider/Slider.d.mts +102 -0
  215. package/dist/components/molecules/Slider/Slider.mjs +462 -0
  216. package/dist/components/molecules/Slider/Slider.mjs.map +1 -0
  217. package/dist/components/molecules/Slider/index.d.mts +2 -0
  218. package/dist/components/molecules/TabBar/TabBar.d.mts +82 -0
  219. package/dist/components/molecules/TabBar/TabBar.mjs +213 -0
  220. package/dist/components/molecules/TabBar/TabBar.mjs.map +1 -0
  221. package/dist/components/molecules/TabBar/index.d.mts +2 -0
  222. package/dist/components/molecules/TextField/InputBase.d.mts +22 -0
  223. package/dist/components/molecules/TextField/InputBase.mjs +56 -0
  224. package/dist/components/molecules/TextField/InputBase.mjs.map +1 -0
  225. package/dist/components/molecules/TextField/TextField.d.mts +56 -0
  226. package/dist/components/molecules/TextField/TextField.mjs +115 -0
  227. package/dist/components/molecules/TextField/TextField.mjs.map +1 -0
  228. package/dist/components/molecules/TextField/index.d.mts +4 -0
  229. package/dist/components/molecules/TransactionListItem/TransactionListItem.d.mts +39 -0
  230. package/dist/components/molecules/TransactionListItem/TransactionListItem.mjs +224 -0
  231. package/dist/components/molecules/TransactionListItem/TransactionListItem.mjs.map +1 -0
  232. package/dist/components/molecules/TransactionListItem/index.d.mts +2 -0
  233. package/dist/components/molecules/index.d.mts +26 -0
  234. package/dist/data.js +261 -14
  235. package/dist/data.js.map +1 -1
  236. package/dist/index.d.mts +3 -0
  237. package/dist/index.mjs +55 -0
  238. package/dist/index.mjs.map +1 -0
  239. package/dist/lib/cssTokens.d.mts +14 -0
  240. package/dist/lib/cssTokens.d.ts +14 -0
  241. package/dist/lib/cssTokens.mjs +19 -0
  242. package/dist/lib/cssTokens.mjs.map +1 -0
  243. package/dist/lib/cssVariables.d.mts +15 -0
  244. package/dist/lib/cssVariables.d.ts +15 -0
  245. package/dist/lib/cssVariables.mjs +37 -0
  246. package/dist/lib/cssVariables.mjs.map +1 -0
  247. package/dist/lib/styleUtils.d.mts +42 -0
  248. package/dist/lib/styleUtils.d.ts +23 -0
  249. package/dist/lib/styleUtils.mjs +160 -0
  250. package/dist/lib/styleUtils.mjs.map +1 -0
  251. package/dist/lib/tokenAliases.d.mts +13 -0
  252. package/dist/lib/tokenAliases.d.ts +13 -0
  253. package/dist/lib/tokenAliases.mjs +121 -0
  254. package/dist/lib/tokenAliases.mjs.map +1 -0
  255. package/dist/lib/usePresence.d.mts +16 -0
  256. package/dist/lib/usePresence.mjs +50 -0
  257. package/dist/lib/usePresence.mjs.map +1 -0
  258. package/dist/{data.esm.js → styles/icons.json.mjs} +2 -1219
  259. package/dist/styles/icons.json.mjs.map +1 -0
  260. package/dist/styles/tokens.d.mts +3174 -0
  261. package/dist/styles/tokens.d.ts +3174 -0
  262. package/dist/styles/tokens.json +257 -12
  263. package/dist/{tokens/index.esm.js → styles/tokens.json.mjs} +259 -20
  264. package/dist/{tokens/index.esm.js.map → styles/tokens.json.mjs.map} +1 -1
  265. package/dist/tokens/index.js +261 -14
  266. package/dist/tokens/index.js.map +1 -1
  267. package/dist/tokens/index.mjs +1462 -0
  268. package/dist/tokens/index.mjs.map +1 -0
  269. package/dist/tokens/styles/tokens.d.mts +3174 -0
  270. package/dist/tokens/styles/tokens.d.ts +3174 -0
  271. package/dist/tokens/tokens.d.mts +4 -0
  272. package/dist/tokens/types/tokens.d.mts +6 -0
  273. package/dist/tokens/types/tokens.d.ts +3 -1204
  274. package/dist/tokens.css +710 -430
  275. package/dist/tokens.css.d.mts +4 -0
  276. package/dist/types/icons.d.mts +25 -0
  277. package/dist/types/icons.mjs +10 -0
  278. package/dist/types/icons.mjs.map +1 -0
  279. package/dist/types/index.d.mts +1 -0
  280. package/dist/types/tokens.d.mts +6 -0
  281. package/dist/types/tokens.d.ts +3 -1204
  282. package/dist/types/tokens.mjs +10 -0
  283. package/dist/types/tokens.mjs.map +1 -0
  284. package/dist/vendor/tslib/tslib.es6.mjs +99 -0
  285. package/dist/vendor/tslib/tslib.es6.mjs.map +1 -0
  286. package/package.json +29 -13
  287. package/dist/client.esm.js +0 -7952
  288. package/dist/client.esm.js.map +0 -1
  289. package/dist/data.esm.js.map +0 -1
  290. package/dist/index.esm.js +0 -8
  291. package/dist/index.esm.js.map +0 -1
@@ -0,0 +1,140 @@
1
+ 'use client';
2
+ import { __makeTemplateObject } from '../../../vendor/tslib/tslib.es6.mjs';
3
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
4
+ import styled$module from 'styled-components';
5
+ const styled = styled$module.default || styled$module;
6
+ import tokens from '../../../lib/cssTokens.mjs';
7
+ import { Icon } from '../../atoms/Icon/Icon.mjs';
8
+
9
+ var semantic = tokens.semantic;
10
+ var color = semantic.color,
11
+ typography = semantic.typography,
12
+ size = semantic.size;
13
+ var variantIcons = {
14
+ error: 'crossCircle',
15
+ warning: 'bell',
16
+ info: 'info',
17
+ success: 'checkRing'
18
+ };
19
+ var variantTextColors = {
20
+ error: color.text.danger,
21
+ warning: color.text.warning,
22
+ info: color.text.accent,
23
+ success: color.text.success
24
+ };
25
+ var sizeConfig = {
26
+ small: {
27
+ font: typography.caption,
28
+ gap: semantic.space[100],
29
+ icon: 'xs'
30
+ },
31
+ medium: {
32
+ font: typography.small,
33
+ gap: semantic.space[200],
34
+ icon: 'sm'
35
+ }
36
+ };
37
+ var StyledInlineAlert = /*#__PURE__*/styled.div.withConfig({
38
+ shouldForwardProp: function shouldForwardProp(prop) {
39
+ return !prop.startsWith('$');
40
+ },
41
+ displayName: "InlineAlert__StyledInlineAlert",
42
+ componentId: "sc-eervmb-0"
43
+ })(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n box-sizing: border-box;\n display: flex;\n align-items: flex-start;\n min-height: ", ";\n gap: ", ";\n font: ", ";\n color: ", ";\n"], ["\n box-sizing: border-box;\n display: flex;\n align-items: flex-start;\n min-height: ", ";\n gap: ", ";\n font: ", ";\n color: ", ";\n"
44
+ // One line of the message's font tall, so the icon centres on the first line at any size:
45
+ // the zero-width space gives the box the font's line height without a fixed value
46
+ ])), function (_a) {
47
+ var $size = _a.$size,
48
+ $empty = _a.$empty;
49
+ return $empty ? '0' : size.label[$size];
50
+ }, function (_a) {
51
+ var $size = _a.$size;
52
+ return sizeConfig[$size].gap;
53
+ }, function (_a) {
54
+ var $size = _a.$size;
55
+ return sizeConfig[$size].font;
56
+ }, function (_a) {
57
+ var $variant = _a.$variant;
58
+ return variantTextColors[$variant];
59
+ });
60
+ // One line of the message's font tall, so the icon centres on the first line at any size:
61
+ // the zero-width space gives the box the font's line height without a fixed value
62
+ var StyledIconLine = /*#__PURE__*/styled.span.withConfig({
63
+ displayName: "InlineAlert__StyledIconLine",
64
+ componentId: "sc-eervmb-1"
65
+ })(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n\n &::after {\n content: '\\200B';\n }\n"], ["\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n\n &::after {\n content: '\\\\200B';\n }\n"])));
66
+ var StyledMessage = /*#__PURE__*/styled.span.withConfig({
67
+ displayName: "InlineAlert__StyledMessage",
68
+ componentId: "sc-eervmb-2"
69
+ })(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n min-width: 0;\n"], ["\n min-width: 0;\n"
70
+ /**
71
+ * InlineAlert is a short, local message that sits next to what it's about: between paragraphs,
72
+ * below a field or in a table cell (decision 0019). A severity icon and text in the severity
73
+ * colour, with no background or border. For a title, an action or a dismiss button, use Alert.
74
+ *
75
+ * @example
76
+ * ```tsx
77
+ * <InlineAlert variant="success">Saved</InlineAlert>
78
+ *
79
+ * // Field feedback: the control references the message with aria-describedby
80
+ * <input id="email" aria-describedby="email-error" aria-invalid="true" />
81
+ * <InlineAlert id="email-error" variant="error" size="small">Enter a valid email address</InlineAlert>
82
+ * ```
83
+ */])));
84
+ /**
85
+ * InlineAlert is a short, local message that sits next to what it's about: between paragraphs,
86
+ * below a field or in a table cell (decision 0019). A severity icon and text in the severity
87
+ * colour, with no background or border. For a title, an action or a dismiss button, use Alert.
88
+ *
89
+ * @example
90
+ * ```tsx
91
+ * <InlineAlert variant="success">Saved</InlineAlert>
92
+ *
93
+ * // Field feedback: the control references the message with aria-describedby
94
+ * <input id="email" aria-describedby="email-error" aria-invalid="true" />
95
+ * <InlineAlert id="email-error" variant="error" size="small">Enter a valid email address</InlineAlert>
96
+ * ```
97
+ */
98
+ var InlineAlert = function InlineAlert(_a) {
99
+ var _b = _a.variant,
100
+ variant = _b === void 0 ? 'info' : _b,
101
+ _c = _a.size,
102
+ alertSize = _c === void 0 ? 'medium' : _c,
103
+ children = _a.children,
104
+ _d = _a.ariaLive,
105
+ ariaLive = _d === void 0 ? 'polite' : _d,
106
+ id = _a.id,
107
+ dataTestId = _a["data-testid"];
108
+ // A live region is announced reliably only when it exists before its content changes, so with
109
+ // no message it stays mounted as an empty region, with no icon and no minimum height
110
+ var hasMessage = children !== undefined && children !== null && children !== false && children !== '';
111
+ return jsx(StyledInlineAlert
112
+ // Same roles as Alert; ariaLive sets how urgently changes are announced
113
+ , {
114
+ // Same roles as Alert; ariaLive sets how urgently changes are announced
115
+ role: variant === 'error' ? 'alert' : 'status',
116
+ "aria-live": ariaLive,
117
+ id: id,
118
+ "data-testid": dataTestId,
119
+ "$variant": variant,
120
+ "$size": alertSize,
121
+ "$empty": !hasMessage,
122
+ children: hasMessage && jsxs(Fragment, {
123
+ children: [jsx(StyledIconLine, {
124
+ "aria-hidden": "true",
125
+ children: jsx(Icon, {
126
+ name: variantIcons[variant],
127
+ size: sizeConfig[alertSize].icon,
128
+ iconColor: "inherit"
129
+ })
130
+ }), jsx(StyledMessage, {
131
+ children: children
132
+ })]
133
+ })
134
+ });
135
+ };
136
+ InlineAlert.displayName = 'InlineAlert';
137
+ var templateObject_1, templateObject_2, templateObject_3;
138
+
139
+ export { InlineAlert };
140
+ //# sourceMappingURL=InlineAlert.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InlineAlert.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export { InlineAlert } from './InlineAlert.mjs';
2
+ export type { InlineAlertProps, InlineAlertVariant, InlineAlertSize } from './InlineAlert.mjs';
@@ -0,0 +1,30 @@
1
+ import React from 'react';
2
+ import { type ListSpacing } from './ListContext.mjs';
3
+ export interface ListProps {
4
+ /**
5
+ * ListItem components
6
+ */
7
+ children: React.ReactNode;
8
+ /**
9
+ * Show dividers between items
10
+ * @default true
11
+ */
12
+ dividers?: boolean;
13
+ /**
14
+ * Density of the list's items: their padding. A ListItem's own `spacing` overrides it (#77).
15
+ * @default 'comfortable'
16
+ */
17
+ spacing?: ListSpacing;
18
+ /**
19
+ * Additional CSS class name
20
+ */
21
+ className?: string;
22
+ /**
23
+ * Test identifier for automated testing
24
+ */
25
+ 'data-testid'?: string;
26
+ }
27
+ export declare const List: {
28
+ ({ children, dividers, spacing, className, "data-testid": dataTestId, ...props }: ListProps): import("react/jsx-runtime").JSX.Element;
29
+ displayName: string;
30
+ };
@@ -0,0 +1,45 @@
1
+ 'use client';
2
+ import { __makeTemplateObject, __rest, __assign } from '../../../vendor/tslib/tslib.es6.mjs';
3
+ import { jsx } from 'react/jsx-runtime';
4
+ import styled$module from 'styled-components';
5
+ const styled = styled$module.default || styled$module;
6
+ import tokens from '../../../lib/cssTokens.mjs';
7
+ import { ListSpacingContext } from './ListContext.mjs';
8
+
9
+ var semantic = tokens.semantic;
10
+ var StyledList = /*#__PURE__*/styled.ul.withConfig({
11
+ shouldForwardProp: function shouldForwardProp(prop) {
12
+ return !prop.startsWith('$');
13
+ },
14
+ displayName: "List__StyledList",
15
+ componentId: "sc-1irksg5-0"
16
+ })(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n list-style: none;\n margin: 0;\n padding: 0;\n width: 100%;\n \n /* Divider styles */\n ", "\n"], ["\n list-style: none;\n margin: 0;\n padding: 0;\n width: 100%;\n \n /* Divider styles */\n ", "\n"])), function (_a) {
17
+ var $dividers = _a.$dividers;
18
+ return $dividers && "\n > li:not(:last-child) {\n border-bottom: ".concat(semantic.border.width.thin, " solid ").concat(semantic.color.border["default"], ";\n }\n ");
19
+ });
20
+ var List = function List(_a) {
21
+ var children = _a.children,
22
+ _b = _a.dividers,
23
+ dividers = _b === void 0 ? true : _b,
24
+ _c = _a.spacing,
25
+ spacing = _c === void 0 ? 'comfortable' : _c,
26
+ className = _a.className,
27
+ dataTestId = _a["data-testid"],
28
+ props = __rest(_a, ["children", "dividers", "spacing", "className", 'data-testid']);
29
+ return jsx(ListSpacingContext.Provider, {
30
+ value: spacing,
31
+ children: jsx(StyledList, __assign({
32
+ "$dividers": dividers,
33
+ className: className,
34
+ "data-testid": dataTestId,
35
+ role: "list"
36
+ }, props, {
37
+ children: children
38
+ }))
39
+ });
40
+ };
41
+ List.displayName = 'List';
42
+ var templateObject_1;
43
+
44
+ export { List };
45
+ //# sourceMappingURL=List.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"List.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ export type ListSpacing = 'compact' | 'comfortable';
2
+ /**
3
+ * The spacing a List gives its items (#77). A ListItem without its own `spacing` uses it; outside
4
+ * a List it's `comfortable`. Internal: not exported from the package.
5
+ */
6
+ export declare const ListSpacingContext: import("react").Context<ListSpacing>;
@@ -0,0 +1,11 @@
1
+ 'use client';
2
+ import { createContext } from 'react';
3
+
4
+ /**
5
+ * The spacing a List gives its items (#77). A ListItem without its own `spacing` uses it; outside
6
+ * a List it's `comfortable`. Internal: not exported from the package.
7
+ */
8
+ var ListSpacingContext = /*#__PURE__*/createContext('comfortable');
9
+
10
+ export { ListSpacingContext };
11
+ //# sourceMappingURL=ListContext.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ListContext.mjs","sources":["../../../../src/components/molecules/List/ListContext.ts"],"sourcesContent":["import { createContext } from 'react'\n\nexport type ListSpacing = 'compact' | 'comfortable'\n\n/**\n * The spacing a List gives its items (#77). A ListItem without its own `spacing` uses it; outside\n * a List it's `comfortable`. Internal: not exported from the package.\n */\nexport const ListSpacingContext = createContext<ListSpacing>('comfortable')\n"],"names":["ListSpacingContext","createContext"],"mappings":";;;AAIA;;;AAGG;IACUA,kBAAkB,gBAAGC,aAAa,CAAc,aAAa;;;;"}
@@ -0,0 +1,101 @@
1
+ import React from 'react';
2
+ import { type ListSpacing } from './ListContext.mjs';
3
+ export interface ListItemProps {
4
+ /**
5
+ * Main text/content
6
+ */
7
+ primary: React.ReactNode;
8
+ /**
9
+ * Secondary text (smaller, subdued color)
10
+ */
11
+ secondary?: React.ReactNode;
12
+ /**
13
+ * Badge/chip component on the right
14
+ */
15
+ badge?: React.ReactNode;
16
+ /**
17
+ * Left icon or avatar component
18
+ */
19
+ icon?: React.ReactNode;
20
+ /**
21
+ * Can be expanded to show children content
22
+ * @default false
23
+ */
24
+ expandable?: boolean;
25
+ /**
26
+ * Expansion state (controlled)
27
+ * @default false
28
+ */
29
+ expanded?: boolean;
30
+ /**
31
+ * Called when expansion is toggled
32
+ */
33
+ onToggle?: () => void;
34
+ /**
35
+ * Enable hover/click interactive states
36
+ * @default false
37
+ */
38
+ interactive?: boolean;
39
+ /**
40
+ * Click handler for interactive items
41
+ */
42
+ onClick?: () => void;
43
+ /**
44
+ * Disabled state
45
+ * @default false
46
+ */
47
+ disabled?: boolean;
48
+ /**
49
+ * Selected/active state
50
+ * @default false
51
+ */
52
+ selected?: boolean;
53
+ /**
54
+ * Destructive/danger state (e.g., delete actions)
55
+ * Displays text and icon in error color
56
+ * @default false
57
+ */
58
+ destructive?: boolean;
59
+ /**
60
+ * Density of this item. Defaults to the parent List's `spacing`, or `comfortable` outside a
61
+ * List; set it to override the List for this item (#77).
62
+ */
63
+ spacing?: ListSpacing;
64
+ /**
65
+ * Expanded content (shown when expanded=true)
66
+ */
67
+ children?: React.ReactNode;
68
+ /**
69
+ * Additional CSS class name
70
+ */
71
+ className?: string;
72
+ /**
73
+ * Test identifier for automated testing
74
+ */
75
+ 'data-testid'?: string;
76
+ /**
77
+ * Custom ARIA role (e.g., 'option' for combobox)
78
+ * @default 'listitem'
79
+ */
80
+ role?: string;
81
+ /**
82
+ * ARIA selected state (for role="option")
83
+ */
84
+ 'aria-selected'?: boolean;
85
+ /**
86
+ * Custom ID for ARIA references
87
+ */
88
+ id?: string;
89
+ /**
90
+ * Custom tabIndex for focus management
91
+ */
92
+ tabIndex?: number;
93
+ /**
94
+ * Keyboard event handler
95
+ */
96
+ onKeyDown?: (e: React.KeyboardEvent) => void;
97
+ }
98
+ export declare const ListItem: {
99
+ ({ primary, secondary, badge, icon, expandable, expanded, onToggle, interactive, onClick, disabled, selected, destructive, spacing: spacingProp, children, className, "data-testid": dataTestId, role: customRole, "aria-selected": ariaSelected, id, tabIndex: customTabIndex, onKeyDown: customOnKeyDown, ...props }: ListItemProps): import("react/jsx-runtime").JSX.Element;
100
+ displayName: string;
101
+ };
@@ -0,0 +1,224 @@
1
+ 'use client';
2
+ import { __makeTemplateObject, __rest, __assign } from '../../../vendor/tslib/tslib.es6.mjs';
3
+ import { jsx, jsxs } from 'react/jsx-runtime';
4
+ import { useContext } from 'react';
5
+ import styled$module from 'styled-components';
6
+ const styled = styled$module.default || styled$module;
7
+ import tokens from '../../../lib/cssTokens.mjs';
8
+ import { Icon } from '../../atoms/Icon/Icon.mjs';
9
+ import { Typography } from '../../atoms/Typography/Typography.mjs';
10
+ import { interactiveRow, reducedMotion } from '../../../lib/styleUtils.mjs';
11
+ import { ListSpacingContext } from './ListContext.mjs';
12
+
13
+ var semantic = tokens.semantic;
14
+ var _a = semantic.motion,
15
+ duration = _a.duration,
16
+ easing = _a.easing;
17
+ var StyledListItem = /*#__PURE__*/styled.li.withConfig({
18
+ shouldForwardProp: function shouldForwardProp(prop) {
19
+ return !prop.startsWith('$');
20
+ },
21
+ displayName: "ListItem__StyledListItem",
22
+ componentId: "sc-1wzzt21-0"
23
+ })(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n display: flex;\n flex-direction: column;\n min-height: ", ";\n position: relative;\n \n /* Disable user selection for interactive items */\n ", "\n \n /* Disabled state */\n ", "\n \n /* Destructive state - apply error color to text */\n ", "\n"], ["\n display: flex;\n flex-direction: column;\n min-height: ", ";\n position: relative;\n \n /* Disable user selection for interactive items */\n ", "\n \n /* Disabled state */\n ", "\n \n /* Destructive state - apply error color to text */\n ", "\n"])), semantic.size.touchTarget, function (_a) {
24
+ var $interactive = _a.$interactive;
25
+ return $interactive && 'user-select: none;';
26
+ }, function (_a) {
27
+ var $disabled = _a.$disabled;
28
+ return $disabled && "\n opacity: ".concat(semantic.opacity.disabled, ";\n cursor: not-allowed;\n pointer-events: none;\n ");
29
+ }, function (_a) {
30
+ var $destructive = _a.$destructive,
31
+ $disabled = _a.$disabled;
32
+ return $destructive && !$disabled && "\n color: ".concat(semantic.color.text.danger, ";\n ");
33
+ });
34
+ var StyledItemContent = /*#__PURE__*/styled.div.withConfig({
35
+ shouldForwardProp: function shouldForwardProp(prop) {
36
+ return !prop.startsWith('$');
37
+ },
38
+ displayName: "ListItem__StyledItemContent",
39
+ componentId: "sc-1wzzt21-1"
40
+ })(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n display: flex;\n align-items: flex-start;\n gap: ", ";\n padding: ", ";\n border-radius: ", ";\n transition: background-color ", " ", ", color ", " ", ";\n cursor: ", ";\n \n /* The shared row states (decision 0030). Only interactive, enabled rows respond to hover and\n press; the primary text is Typography, so the row colours it through a selector */\n ", "\n \n /* Focus visible */\n &:focus-visible {\n outline: ", ";\n outline-offset: ", ";\n }\n"], ["\n display: flex;\n align-items: flex-start;\n gap: ", ";\n padding: ", ";\n border-radius: ", ";\n transition: background-color ", " ", ", color ", " ", ";\n cursor: ", ";\n \n /* The shared row states (decision 0030). Only interactive, enabled rows respond to hover and\n press; the primary text is Typography, so the row colours it through a selector */\n ", "\n \n /* Focus visible */\n &:focus-visible {\n outline: ", ";\n outline-offset: ", ";\n }\n"])), semantic.space[300], function (_a) {
41
+ var $spacing = _a.$spacing;
42
+ return $spacing === 'compact' ? "".concat(semantic.space[200], " ").concat(semantic.space[300]) : "".concat(semantic.space[300], " ").concat(semantic.space[400]);
43
+ }, semantic.radius.sm, duration.fast, easing.decelerate, duration.fast, easing.decelerate, function (_a) {
44
+ var $interactive = _a.$interactive,
45
+ $disabled = _a.$disabled;
46
+ if ($disabled) return 'not-allowed';
47
+ if ($interactive) return 'pointer';
48
+ return 'default';
49
+ }, function (_a) {
50
+ var $interactive = _a.$interactive,
51
+ $disabled = _a.$disabled,
52
+ $selected = _a.$selected;
53
+ return interactiveRow({
54
+ selected: $selected,
55
+ disabled: $disabled || !$interactive,
56
+ textSelector: "".concat(StyledTextContent, " > :first-child")
57
+ });
58
+ }, semantic.border.focus, semantic.border.focusOffset);
59
+ var StyledIconContainer = /*#__PURE__*/styled.div.withConfig({
60
+ displayName: "ListItem__StyledIconContainer",
61
+ componentId: "sc-1wzzt21-2"
62
+ })(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n display: flex;\n align-items: center;\n flex-shrink: 0;\n width: ", ";\n height: ", ";\n"], ["\n display: flex;\n align-items: center;\n flex-shrink: 0;\n width: ", ";\n height: ", ";\n"])), semantic.size.icon.lg, semantic.size.icon.lg);
63
+ var StyledTextContent = /*#__PURE__*/styled.div.withConfig({
64
+ displayName: "ListItem__StyledTextContent",
65
+ componentId: "sc-1wzzt21-3"
66
+ })(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: ", ";\n min-width: 0; /* Allow text truncation */\n"], ["\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: ", ";\n min-width: 0; /* Allow text truncation */\n"])), semantic.space[100]);
67
+ var StyledRightContent = /*#__PURE__*/styled.div.withConfig({
68
+ displayName: "ListItem__StyledRightContent",
69
+ componentId: "sc-1wzzt21-4"
70
+ })(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n display: flex;\n align-items: center;\n gap: ", ";\n flex-shrink: 0;\n margin-left: auto;\n"], ["\n display: flex;\n align-items: center;\n gap: ", ";\n flex-shrink: 0;\n margin-left: auto;\n"])), semantic.space[200]);
71
+ var StyledChevronIcon = /*#__PURE__*/styled.div.withConfig({
72
+ shouldForwardProp: function shouldForwardProp(prop) {
73
+ return !prop.startsWith('$');
74
+ },
75
+ displayName: "ListItem__StyledChevronIcon",
76
+ componentId: "sc-1wzzt21-5"
77
+ })(templateObject_6 || (templateObject_6 = __makeTemplateObject(["\n display: flex;\n align-items: center;\n justify-content: center;\n width: ", ";\n height: ", ";\n color: ", ";\n transition: transform ", " ", ";\n transform: rotate(", ");\n pointer-events: none;\n\n ", " {\n transition: none;\n }\n"], ["\n display: flex;\n align-items: center;\n justify-content: center;\n width: ", ";\n height: ", ";\n color: ", ";\n transition: transform ", " ", ";\n transform: rotate(", ");\n pointer-events: none;\n\n ", " {\n transition: none;\n }\n"])), semantic.size.icon.lg, semantic.size.icon.lg, semantic.color.icon.muted, duration.fast, easing.decelerate, function (_a) {
78
+ var $expanded = _a.$expanded;
79
+ return $expanded ? '180deg' : '0deg';
80
+ }, reducedMotion);
81
+ var StyledExpandedContent = /*#__PURE__*/styled.div.withConfig({
82
+ shouldForwardProp: function shouldForwardProp(prop) {
83
+ return !prop.startsWith('$');
84
+ },
85
+ displayName: "ListItem__StyledExpandedContent",
86
+ componentId: "sc-1wzzt21-6"
87
+ })(templateObject_7 || (templateObject_7 = __makeTemplateObject(["\n overflow: hidden;\n /* Padding collapses with the height, and visibility hides the content from\n keyboard and screen readers once the collapse finishes. */\n transition: max-height ", " ", ",\n padding ", " ", ",\n opacity ", " ", ",\n visibility ", " ", ";\n max-height: ", ";\n opacity: ", ";\n visibility: ", ";\n\n ", " {\n transition: opacity ", " ", ",\n visibility ", " ", ";\n }\n \n ", "\n"], ["\n overflow: hidden;\n /* Padding collapses with the height, and visibility hides the content from\n keyboard and screen readers once the collapse finishes. */\n transition: max-height ", " ", ",\n padding ", " ", ",\n opacity ", " ", ",\n visibility ", " ", ";\n max-height: ", ";\n opacity: ", ";\n visibility: ", ";\n\n ", " {\n transition: opacity ", " ", ",\n visibility ", " ", ";\n }\n \n ", "\n"])), duration.moderate, easing.decelerate, duration.moderate, easing.decelerate, duration.moderate, easing.decelerate, duration.moderate, easing.decelerate, function (_a) {
88
+ var $expanded = _a.$expanded;
89
+ return $expanded ? '1000px' : '0';
90
+ }, function (_a) {
91
+ var $expanded = _a.$expanded;
92
+ return $expanded ? '1' : '0';
93
+ }, function (_a) {
94
+ var $expanded = _a.$expanded;
95
+ return $expanded ? 'visible' : 'hidden';
96
+ }, reducedMotion, duration.moderate, easing.decelerate, duration.moderate, easing.decelerate, function (_a) {
97
+ var $expanded = _a.$expanded,
98
+ $spacing = _a.$spacing;
99
+ return $expanded && "\n padding: ".concat($spacing === 'compact' ? "".concat(semantic.space[200], " ").concat(semantic.space[300], " ").concat(semantic.space[200], " ").concat(tokens.component.listItem.expandedIndent.compact) : "".concat(semantic.space[200], " ").concat(semantic.space[400], " ").concat(semantic.space[300], " ").concat(tokens.component.listItem.expandedIndent.comfortable), ";\n background-color: ").concat(semantic.surface.raised, ";\n border-radius: ").concat(semantic.radius.sm, ";\n margin: 0 ").concat($spacing === 'compact' ? semantic.space[300] : semantic.space[400], " ").concat($spacing === 'compact' ? semantic.space[200] : semantic.space[300], ";\n ");
100
+ });
101
+ var ListItem = function ListItem(_a) {
102
+ var primary = _a.primary,
103
+ secondary = _a.secondary,
104
+ badge = _a.badge,
105
+ icon = _a.icon,
106
+ _b = _a.expandable,
107
+ expandable = _b === void 0 ? false : _b,
108
+ _c = _a.expanded,
109
+ expanded = _c === void 0 ? false : _c,
110
+ onToggle = _a.onToggle,
111
+ _d = _a.interactive,
112
+ interactive = _d === void 0 ? false : _d,
113
+ onClick = _a.onClick,
114
+ _e = _a.disabled,
115
+ disabled = _e === void 0 ? false : _e,
116
+ _f = _a.selected,
117
+ selected = _f === void 0 ? false : _f,
118
+ _g = _a.destructive,
119
+ destructive = _g === void 0 ? false : _g,
120
+ spacingProp = _a.spacing,
121
+ children = _a.children,
122
+ className = _a.className,
123
+ dataTestId = _a["data-testid"],
124
+ customRole = _a.role,
125
+ ariaSelected = _a["aria-selected"],
126
+ id = _a.id,
127
+ customTabIndex = _a.tabIndex,
128
+ customOnKeyDown = _a.onKeyDown,
129
+ props = __rest(_a, ["primary", "secondary", "badge", "icon", "expandable", "expanded", "onToggle", "interactive", "onClick", "disabled", "selected", "destructive", "spacing", "children", "className", 'data-testid', "role", 'aria-selected', "id", "tabIndex", "onKeyDown"]);
130
+ var listSpacing = useContext(ListSpacingContext);
131
+ var spacing = spacingProp !== null && spacingProp !== void 0 ? spacingProp : listSpacing;
132
+ var isInteractive = interactive || expandable || customRole === 'option';
133
+ var contentRole = customRole === 'option' ? undefined : isInteractive ? 'button' : undefined;
134
+ var ariaExpanded = expandable ? expanded : undefined;
135
+ var ariaDisabled = disabled ? true : undefined;
136
+ var ariaCurrent = selected ? 'true' : undefined;
137
+ var handleClick = function handleClick() {
138
+ if (disabled) return;
139
+ if (expandable && onToggle) {
140
+ onToggle();
141
+ } else if (onClick) {
142
+ onClick();
143
+ }
144
+ };
145
+ var handleKeyDown = function handleKeyDown(event) {
146
+ if (customOnKeyDown) {
147
+ customOnKeyDown(event);
148
+ return;
149
+ }
150
+ if (disabled) return;
151
+ if (event.key === 'Enter' || event.key === ' ') {
152
+ event.preventDefault();
153
+ handleClick();
154
+ }
155
+ };
156
+ return (
157
+ // The List's spacing is for its own items: reset it for this item's content, so components
158
+ // built on ListItem (ActionSheet, even through its portal) and expanded content keep their own
159
+ // density. A nested List provides its own spacing (#77)
160
+ jsx(ListSpacingContext.Provider, {
161
+ value: "comfortable",
162
+ children: jsxs(StyledListItem, __assign({
163
+ "$interactive": isInteractive,
164
+ "$disabled": disabled,
165
+ "$selected": selected,
166
+ "$destructive": destructive,
167
+ "$spacing": spacing,
168
+ className: className,
169
+ "data-testid": dataTestId,
170
+ role: customRole || 'listitem',
171
+ id: id,
172
+ "aria-selected": ariaSelected
173
+ }, props, {
174
+ children: [jsxs(StyledItemContent, {
175
+ "$interactive": isInteractive,
176
+ "$disabled": disabled,
177
+ "$selected": selected,
178
+ "$destructive": destructive,
179
+ "$spacing": spacing,
180
+ role: contentRole,
181
+ "aria-expanded": ariaExpanded,
182
+ "aria-disabled": ariaDisabled,
183
+ "aria-current": ariaCurrent,
184
+ tabIndex: customTabIndex !== undefined ? customTabIndex : isInteractive && !disabled ? 0 : undefined,
185
+ onClick: handleClick,
186
+ onKeyDown: handleKeyDown,
187
+ children: [icon && jsx(StyledIconContainer, {
188
+ "aria-hidden": "true",
189
+ children: icon
190
+ }), jsxs(StyledTextContent, {
191
+ children: [jsx(Typography, {
192
+ variant: "body",
193
+ color: destructive ? 'error' : 'default',
194
+ children: primary
195
+ }), secondary && jsx(Typography, {
196
+ variant: "small",
197
+ color: "subdued",
198
+ children: secondary
199
+ })]
200
+ }), jsxs(StyledRightContent, {
201
+ children: [badge, expandable && jsx(StyledChevronIcon, {
202
+ "$expanded": expanded,
203
+ "aria-hidden": "true",
204
+ children: jsx(Icon, {
205
+ name: "caretDown",
206
+ size: "sm"
207
+ })
208
+ })]
209
+ })]
210
+ }), expandable && children && jsx(StyledExpandedContent, {
211
+ "$spacing": spacing,
212
+ "$expanded": expanded,
213
+ "aria-hidden": !expanded,
214
+ children: children
215
+ })]
216
+ }))
217
+ })
218
+ );
219
+ };
220
+ ListItem.displayName = 'ListItem';
221
+ var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7;
222
+
223
+ export { ListItem };
224
+ //# sourceMappingURL=ListItem.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ListItem.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ export { List } from './List.mjs';
2
+ export type { ListProps } from './List.mjs';
3
+ export { ListItem } from './ListItem.mjs';
4
+ export type { ListItemProps } from './ListItem.mjs';
@@ -0,0 +1,69 @@
1
+ import { type ReactNode } from 'react';
2
+ import { type ButtonVariant } from '../../atoms/Button/index.mjs';
3
+ import { type IconName } from '../../../types/icons.mjs';
4
+ export type ModalSize = 'small' | 'medium' | 'large';
5
+ export interface ModalAction {
6
+ /** Button label text */
7
+ label: string;
8
+ /** Callback when the action is clicked */
9
+ onClick: () => void;
10
+ /**
11
+ * Button variant. `accent` is the blue call to action (at most one per view).
12
+ * `emphasis` is a deprecated alias for `accent` and will be removed in 3.0.
13
+ */
14
+ variant?: ButtonVariant;
15
+ /** Optional leading icon */
16
+ icon?: IconName;
17
+ /** Whether the button is disabled */
18
+ disabled?: boolean;
19
+ }
20
+ export interface ModalProps {
21
+ /** Whether the modal is visible */
22
+ isOpen: boolean;
23
+ /** Callback fired when the modal should close (close button, overlay, Escape) */
24
+ onClose: () => void;
25
+ /** Title displayed in the modal header */
26
+ title: string;
27
+ /** Body content of the modal */
28
+ children: ReactNode;
29
+ /**
30
+ * Width preset. All sizes auto-switch to fullscreen below the `md` breakpoint (768 px).
31
+ * - small → 400 px
32
+ * - medium → 560 px
33
+ * - large → 720 px
34
+ * @default 'medium'
35
+ */
36
+ size?: ModalSize;
37
+ /** Structured action buttons rendered in the footer */
38
+ actions?: ModalAction[];
39
+ /**
40
+ * Close when the backdrop overlay is clicked
41
+ * @default true
42
+ */
43
+ closeOnOverlayClick?: boolean;
44
+ /**
45
+ * Close when the Escape key is pressed
46
+ * @default true
47
+ */
48
+ closeOnEscape?: boolean;
49
+ /** Test identifier for automated testing */
50
+ 'data-testid'?: string;
51
+ /** Accessible label – falls back to `title` */
52
+ 'aria-label'?: string;
53
+ /** ID of an element that describes the modal */
54
+ 'aria-describedby'?: string;
55
+ }
56
+ /**
57
+ * Modal component
58
+ *
59
+ * A centred dialog overlay with a title, close button (IconButton), scrollable
60
+ * body content, and an optional footer with structured action buttons.
61
+ *
62
+ * - Renders via `createPortal` to avoid z-index / overflow issues.
63
+ * - Auto-fullscreen on viewports narrower than 768 px.
64
+ * - Focus trap, Escape-to-close, overlay-click-to-close.
65
+ * - Locks body scroll while open.
66
+ *
67
+ * Composes: IconButton, Button, Typography, Stack, Divider
68
+ */
69
+ export declare const Modal: React.FC<ModalProps>;