@flipdish/ui-library 0.17.0 → 0.19.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 (247) hide show
  1. package/dist/components/atoms/AppStoreButton/components/app-store-buttons-outline.cjs +5 -12
  2. package/dist/components/atoms/AppStoreButton/components/app-store-buttons-outline.cjs.map +1 -1
  3. package/dist/components/atoms/AppStoreButton/components/app-store-buttons-outline.d.ts.map +1 -1
  4. package/dist/components/atoms/AppStoreButton/components/app-store-buttons-outline.js +5 -12
  5. package/dist/components/atoms/AppStoreButton/components/app-store-buttons-outline.js.map +1 -1
  6. package/dist/components/atoms/AppStoreButton/index.cjs +6 -15
  7. package/dist/components/atoms/AppStoreButton/index.cjs.map +1 -1
  8. package/dist/components/atoms/AppStoreButton/index.d.ts.map +1 -1
  9. package/dist/components/atoms/AppStoreButton/index.js +6 -15
  10. package/dist/components/atoms/AppStoreButton/index.js.map +1 -1
  11. package/dist/components/atoms/Avatar/components/avatar-base.cjs +60 -0
  12. package/dist/components/atoms/Avatar/components/avatar-base.cjs.map +1 -0
  13. package/dist/components/atoms/Avatar/components/avatar-base.d.ts +77 -0
  14. package/dist/components/atoms/Avatar/components/avatar-base.d.ts.map +1 -0
  15. package/dist/components/atoms/Avatar/components/avatar-base.js +58 -0
  16. package/dist/components/atoms/Avatar/components/avatar-base.js.map +1 -0
  17. package/dist/components/atoms/Avatar/components/avatar-label-group.cjs +2 -2
  18. package/dist/components/atoms/Avatar/components/avatar-label-group.cjs.map +1 -1
  19. package/dist/components/atoms/Avatar/components/avatar-label-group.d.ts +1 -1
  20. package/dist/components/atoms/Avatar/components/avatar-label-group.d.ts.map +1 -1
  21. package/dist/components/atoms/Avatar/components/avatar-label-group.js +1 -1
  22. package/dist/components/atoms/Avatar/index.cjs +3 -55
  23. package/dist/components/atoms/Avatar/index.cjs.map +1 -1
  24. package/dist/components/atoms/Avatar/index.d.ts +2 -70
  25. package/dist/components/atoms/Avatar/index.d.ts.map +1 -1
  26. package/dist/components/atoms/Avatar/index.js +1 -57
  27. package/dist/components/atoms/Avatar/index.js.map +1 -1
  28. package/dist/components/atoms/BackgroundPattern/components/grid-check.cjs +2 -1
  29. package/dist/components/atoms/BackgroundPattern/components/grid-check.cjs.map +1 -1
  30. package/dist/components/atoms/BackgroundPattern/components/grid-check.d.ts.map +1 -1
  31. package/dist/components/atoms/BackgroundPattern/components/grid-check.js +2 -1
  32. package/dist/components/atoms/BackgroundPattern/components/grid-check.js.map +1 -1
  33. package/dist/components/atoms/BackgroundPattern/index.cjs +4 -1
  34. package/dist/components/atoms/BackgroundPattern/index.cjs.map +1 -1
  35. package/dist/components/atoms/BackgroundPattern/index.d.ts +8 -3
  36. package/dist/components/atoms/BackgroundPattern/index.d.ts.map +1 -1
  37. package/dist/components/atoms/BackgroundPattern/index.js +4 -1
  38. package/dist/components/atoms/BackgroundPattern/index.js.map +1 -1
  39. package/dist/components/atoms/Button/index.cjs +3 -3
  40. package/dist/components/atoms/Button/index.cjs.map +1 -1
  41. package/dist/components/atoms/Button/index.d.ts.map +1 -1
  42. package/dist/components/atoms/Button/index.js +1 -1
  43. package/dist/components/atoms/FeaturedIcon/index.cjs +2 -2
  44. package/dist/components/atoms/FeaturedIcon/index.cjs.map +1 -1
  45. package/dist/components/atoms/FeaturedIcon/index.d.ts.map +1 -1
  46. package/dist/components/atoms/FeaturedIcon/index.js +1 -1
  47. package/dist/components/atoms/UtilityButton/index.cjs +2 -2
  48. package/dist/components/atoms/UtilityButton/index.cjs.map +1 -1
  49. package/dist/components/atoms/UtilityButton/index.d.ts.map +1 -1
  50. package/dist/components/atoms/UtilityButton/index.js +1 -1
  51. package/dist/components/molecules/BadgeGroup/index.cjs +3 -3
  52. package/dist/components/molecules/BadgeGroup/index.cjs.map +1 -1
  53. package/dist/components/molecules/BadgeGroup/index.d.ts.map +1 -1
  54. package/dist/components/molecules/BadgeGroup/index.js +1 -1
  55. package/dist/components/molecules/Breadcrumbs/components/breadcrumb-account-item.cjs +2 -2
  56. package/dist/components/molecules/Breadcrumbs/components/breadcrumb-account-item.cjs.map +1 -1
  57. package/dist/components/molecules/Breadcrumbs/components/breadcrumb-account-item.js +1 -1
  58. package/dist/components/molecules/Breadcrumbs/components/breadcrumb-item.cjs +9 -6
  59. package/dist/components/molecules/Breadcrumbs/components/breadcrumb-item.cjs.map +1 -1
  60. package/dist/components/molecules/Breadcrumbs/components/breadcrumb-item.d.ts +1 -1
  61. package/dist/components/molecules/Breadcrumbs/components/breadcrumb-item.d.ts.map +1 -1
  62. package/dist/components/molecules/Breadcrumbs/components/breadcrumb-item.js +7 -4
  63. package/dist/components/molecules/Breadcrumbs/components/breadcrumb-item.js.map +1 -1
  64. package/dist/components/molecules/Breadcrumbs/index.cjs +3 -6
  65. package/dist/components/molecules/Breadcrumbs/index.cjs.map +1 -1
  66. package/dist/components/molecules/Breadcrumbs/index.d.ts +2 -6
  67. package/dist/components/molecules/Breadcrumbs/index.d.ts.map +1 -1
  68. package/dist/components/molecules/Breadcrumbs/index.js +2 -5
  69. package/dist/components/molecules/Breadcrumbs/index.js.map +1 -1
  70. package/dist/components/molecules/Breadcrumbs/providers/breadcrumbs-context.cjs +17 -0
  71. package/dist/components/molecules/Breadcrumbs/providers/breadcrumbs-context.cjs.map +1 -0
  72. package/dist/components/molecules/Breadcrumbs/providers/breadcrumbs-context.d.ts +13 -0
  73. package/dist/components/molecules/Breadcrumbs/providers/breadcrumbs-context.d.ts.map +1 -0
  74. package/dist/components/molecules/Breadcrumbs/providers/breadcrumbs-context.js +15 -0
  75. package/dist/components/molecules/Breadcrumbs/providers/breadcrumbs-context.js.map +1 -0
  76. package/dist/components/molecules/ButtonGroup/index.cjs +2 -2
  77. package/dist/components/molecules/ButtonGroup/index.cjs.map +1 -1
  78. package/dist/components/molecules/ButtonGroup/index.d.ts.map +1 -1
  79. package/dist/components/molecules/ButtonGroup/index.js +1 -1
  80. package/dist/components/molecules/EmptyState/index.cjs +4 -1
  81. package/dist/components/molecules/EmptyState/index.cjs.map +1 -1
  82. package/dist/components/molecules/EmptyState/index.d.ts.map +1 -1
  83. package/dist/components/molecules/EmptyState/index.js +4 -1
  84. package/dist/components/molecules/EmptyState/index.js.map +1 -1
  85. package/dist/components/molecules/Pagination/index.cjs +2 -2
  86. package/dist/components/molecules/Pagination/index.cjs.map +1 -1
  87. package/dist/components/molecules/Pagination/index.d.ts +1 -1
  88. package/dist/components/molecules/Pagination/index.d.ts.map +1 -1
  89. package/dist/components/molecules/Pagination/index.js +2 -2
  90. package/dist/components/molecules/Pagination/index.js.map +1 -1
  91. package/dist/components/molecules/Select/components/combobox.cjs +2 -2
  92. package/dist/components/molecules/Select/components/combobox.cjs.map +1 -1
  93. package/dist/components/molecules/Select/components/combobox.d.ts.map +1 -1
  94. package/dist/components/molecules/Select/components/combobox.js +1 -1
  95. package/dist/components/molecules/Select/components/select-item.cjs +2 -2
  96. package/dist/components/molecules/Select/components/select-item.cjs.map +1 -1
  97. package/dist/components/molecules/Select/components/select-item.d.ts.map +1 -1
  98. package/dist/components/molecules/Select/components/select-item.js +1 -1
  99. package/dist/components/molecules/Select/index.cjs +2 -2
  100. package/dist/components/molecules/Select/index.cjs.map +1 -1
  101. package/dist/components/molecules/Select/index.d.ts.map +1 -1
  102. package/dist/components/molecules/Select/index.js +1 -1
  103. package/dist/components/molecules/Tabs/index.cjs +2 -2
  104. package/dist/components/molecules/Tabs/index.cjs.map +1 -1
  105. package/dist/components/molecules/Tabs/index.d.ts.map +1 -1
  106. package/dist/components/molecules/Tabs/index.js +1 -1
  107. package/dist/components/organisms/ActivityFeed/index.cjs +5 -1
  108. package/dist/components/organisms/ActivityFeed/index.cjs.map +1 -1
  109. package/dist/components/organisms/ActivityFeed/index.d.ts.map +1 -1
  110. package/dist/components/organisms/ActivityFeed/index.js +5 -1
  111. package/dist/components/organisms/ActivityFeed/index.js.map +1 -1
  112. package/dist/components/organisms/Calendar/calendar.utils.cjs +16 -0
  113. package/dist/components/organisms/Calendar/calendar.utils.cjs.map +1 -0
  114. package/dist/components/organisms/Calendar/calendar.utils.d.ts +6 -0
  115. package/dist/components/organisms/Calendar/calendar.utils.d.ts.map +1 -0
  116. package/dist/components/organisms/Calendar/calendar.utils.js +14 -0
  117. package/dist/components/organisms/Calendar/calendar.utils.js.map +1 -0
  118. package/dist/components/organisms/Calendar/components/calendar-header.cjs +2 -1
  119. package/dist/components/organisms/Calendar/components/calendar-header.cjs.map +1 -1
  120. package/dist/components/organisms/Calendar/components/calendar-header.d.ts.map +1 -1
  121. package/dist/components/organisms/Calendar/components/calendar-header.js +2 -1
  122. package/dist/components/organisms/Calendar/components/calendar-header.js.map +1 -1
  123. package/dist/components/organisms/Calendar/index.cjs +13 -7
  124. package/dist/components/organisms/Calendar/index.cjs.map +1 -1
  125. package/dist/components/organisms/Calendar/index.d.ts.map +1 -1
  126. package/dist/components/organisms/Calendar/index.js +13 -7
  127. package/dist/components/organisms/Calendar/index.js.map +1 -1
  128. package/dist/components/organisms/Charts/components/charts-base.cjs +4 -0
  129. package/dist/components/organisms/Charts/components/charts-base.cjs.map +1 -1
  130. package/dist/components/organisms/Charts/components/charts-base.d.ts.map +1 -1
  131. package/dist/components/organisms/Charts/components/charts-base.js +4 -0
  132. package/dist/components/organisms/Charts/components/charts-base.js.map +1 -1
  133. package/dist/components/organisms/GradientPicker/providers/gradient-picker-context.cjs +6 -0
  134. package/dist/components/organisms/GradientPicker/providers/gradient-picker-context.cjs.map +1 -1
  135. package/dist/components/organisms/GradientPicker/providers/gradient-picker-context.d.ts.map +1 -1
  136. package/dist/components/organisms/GradientPicker/providers/gradient-picker-context.js +6 -0
  137. package/dist/components/organisms/GradientPicker/providers/gradient-picker-context.js.map +1 -1
  138. package/dist/components/organisms/HeaderNavigation/components/nav-account-card.cjs +2 -1
  139. package/dist/components/organisms/HeaderNavigation/components/nav-account-card.cjs.map +1 -1
  140. package/dist/components/organisms/HeaderNavigation/components/nav-account-card.d.ts.map +1 -1
  141. package/dist/components/organisms/HeaderNavigation/components/nav-account-card.js +2 -1
  142. package/dist/components/organisms/HeaderNavigation/components/nav-account-card.js.map +1 -1
  143. package/dist/components/organisms/HeaderNavigation/components/nav-item.cjs +4 -3
  144. package/dist/components/organisms/HeaderNavigation/components/nav-item.cjs.map +1 -1
  145. package/dist/components/organisms/HeaderNavigation/components/nav-item.d.ts.map +1 -1
  146. package/dist/components/organisms/HeaderNavigation/components/nav-item.js +4 -3
  147. package/dist/components/organisms/HeaderNavigation/components/nav-item.js.map +1 -1
  148. package/dist/components/organisms/HeaderNavigation/components/nav-list.cjs +4 -2
  149. package/dist/components/organisms/HeaderNavigation/components/nav-list.cjs.map +1 -1
  150. package/dist/components/organisms/HeaderNavigation/components/nav-list.d.ts.map +1 -1
  151. package/dist/components/organisms/HeaderNavigation/components/nav-list.js +4 -2
  152. package/dist/components/organisms/HeaderNavigation/components/nav-list.js.map +1 -1
  153. package/dist/components/organisms/SidebarNavigation/components/nav-button.cjs +5 -2
  154. package/dist/components/organisms/SidebarNavigation/components/nav-button.cjs.map +1 -1
  155. package/dist/components/organisms/SidebarNavigation/components/nav-button.d.ts.map +1 -1
  156. package/dist/components/organisms/SidebarNavigation/components/nav-button.js +5 -2
  157. package/dist/components/organisms/SidebarNavigation/components/nav-button.js.map +1 -1
  158. package/dist/components/organisms/SidebarNavigation/components/nav-item.cjs +5 -4
  159. package/dist/components/organisms/SidebarNavigation/components/nav-item.cjs.map +1 -1
  160. package/dist/components/organisms/SidebarNavigation/components/nav-item.d.ts.map +1 -1
  161. package/dist/components/organisms/SidebarNavigation/components/nav-item.js +5 -4
  162. package/dist/components/organisms/SidebarNavigation/components/nav-item.js.map +1 -1
  163. package/dist/components/organisms/SidebarNavigation/hooks/use-dual-tier-keyboard.cjs +7 -2
  164. package/dist/components/organisms/SidebarNavigation/hooks/use-dual-tier-keyboard.cjs.map +1 -1
  165. package/dist/components/organisms/SidebarNavigation/hooks/use-dual-tier-keyboard.d.ts.map +1 -1
  166. package/dist/components/organisms/SidebarNavigation/hooks/use-dual-tier-keyboard.js +7 -2
  167. package/dist/components/organisms/SidebarNavigation/hooks/use-dual-tier-keyboard.js.map +1 -1
  168. package/dist/components/organisms/TextEditor/components/text-editor-extensions.cjs +32 -15
  169. package/dist/components/organisms/TextEditor/components/text-editor-extensions.cjs.map +1 -1
  170. package/dist/components/organisms/TextEditor/components/text-editor-extensions.d.ts.map +1 -1
  171. package/dist/components/organisms/TextEditor/components/text-editor-extensions.js +20 -3
  172. package/dist/components/organisms/TextEditor/components/text-editor-extensions.js.map +1 -1
  173. package/dist/components/organisms/TextEditor/components/text-editor-tooltip.cjs +2 -2
  174. package/dist/components/organisms/TextEditor/components/text-editor-tooltip.cjs.map +1 -1
  175. package/dist/components/organisms/TextEditor/components/text-editor-tooltip.js +1 -1
  176. package/dist/components/organisms/TextEditor/index.cjs +30 -18
  177. package/dist/components/organisms/TextEditor/index.cjs.map +1 -1
  178. package/dist/components/organisms/TextEditor/index.d.ts +2 -10
  179. package/dist/components/organisms/TextEditor/index.d.ts.map +1 -1
  180. package/dist/components/organisms/TextEditor/index.js +26 -14
  181. package/dist/components/organisms/TextEditor/index.js.map +1 -1
  182. package/dist/components/organisms/TextEditor/providers/text-editor-context.cjs +21 -0
  183. package/dist/components/organisms/TextEditor/providers/text-editor-context.cjs.map +1 -0
  184. package/dist/components/organisms/TextEditor/providers/text-editor-context.d.ts +17 -0
  185. package/dist/components/organisms/TextEditor/providers/text-editor-context.d.ts.map +1 -0
  186. package/dist/components/organisms/TextEditor/providers/text-editor-context.js +18 -0
  187. package/dist/components/organisms/TextEditor/providers/text-editor-context.js.map +1 -0
  188. package/dist/components/organisms/TextEditor/textEditor.utils.cjs +32 -0
  189. package/dist/components/organisms/TextEditor/textEditor.utils.cjs.map +1 -0
  190. package/dist/components/organisms/TextEditor/textEditor.utils.d.ts +14 -0
  191. package/dist/components/organisms/TextEditor/textEditor.utils.d.ts.map +1 -0
  192. package/dist/components/organisms/TextEditor/textEditor.utils.js +29 -0
  193. package/dist/components/organisms/TextEditor/textEditor.utils.js.map +1 -0
  194. package/dist/components/organisms/TreeView/index.cjs +2 -2
  195. package/dist/components/organisms/TreeView/index.cjs.map +1 -1
  196. package/dist/components/organisms/TreeView/index.d.ts.map +1 -1
  197. package/dist/components/organisms/TreeView/index.js +1 -1
  198. package/dist/hooks/{useAriaDisclosureAttrs/index.cjs → __internal__/useAriaDisclosureAttrs/useAriaDisclosureAttrs.cjs} +1 -1
  199. package/dist/hooks/__internal__/useAriaDisclosureAttrs/useAriaDisclosureAttrs.cjs.map +1 -0
  200. package/dist/hooks/{useAriaDisclosureAttrs/index.d.ts → __internal__/useAriaDisclosureAttrs/useAriaDisclosureAttrs.d.ts} +1 -1
  201. package/dist/hooks/__internal__/useAriaDisclosureAttrs/useAriaDisclosureAttrs.d.ts.map +1 -0
  202. package/dist/hooks/{useAriaDisclosureAttrs/index.js → __internal__/useAriaDisclosureAttrs/useAriaDisclosureAttrs.js} +1 -1
  203. package/dist/hooks/__internal__/useAriaDisclosureAttrs/useAriaDisclosureAttrs.js.map +1 -0
  204. package/dist/hooks/useClipboard/index.cjs +10 -3
  205. package/dist/hooks/useClipboard/index.cjs.map +1 -1
  206. package/dist/hooks/useClipboard/index.d.ts.map +1 -1
  207. package/dist/hooks/useClipboard/index.js +10 -3
  208. package/dist/hooks/useClipboard/index.js.map +1 -1
  209. package/dist/native/components/atoms/Button/index.d.ts.map +1 -1
  210. package/dist/native/components/atoms/Button/index.js +1 -1
  211. package/dist/{utilities/isReactComponent/index.d.ts → native/utilities/__internal__/componentGuardUtils/componentGuard.utils.d.ts} +3 -3
  212. package/dist/native/utilities/__internal__/componentGuardUtils/componentGuard.utils.d.ts.map +1 -0
  213. package/dist/{utilities/isReactComponent/index.js → native/utilities/__internal__/componentGuardUtils/componentGuard.utils.js} +3 -3
  214. package/dist/native/utilities/__internal__/componentGuardUtils/componentGuard.utils.js.map +1 -0
  215. package/dist/native/{hooks/useAriaDisclosureAttrs → utilities/hrefUtils}/index.d.ts +3 -3
  216. package/dist/utilities/{isReactComponent/index.cjs → __internal__/componentGuardUtils/componentGuard.utils.cjs} +3 -3
  217. package/dist/utilities/__internal__/componentGuardUtils/componentGuard.utils.cjs.map +1 -0
  218. package/dist/{native/utilities/isReactComponent/index.d.ts → utilities/__internal__/componentGuardUtils/componentGuard.utils.d.ts} +3 -3
  219. package/dist/utilities/__internal__/componentGuardUtils/componentGuard.utils.d.ts.map +1 -0
  220. package/dist/{native/utilities/isReactComponent/index.js → utilities/__internal__/componentGuardUtils/componentGuard.utils.js} +3 -3
  221. package/dist/utilities/__internal__/componentGuardUtils/componentGuard.utils.js.map +1 -0
  222. package/dist/utilities/__internal__/logUtils/log.utils.cjs +32 -0
  223. package/dist/utilities/__internal__/logUtils/log.utils.cjs.map +1 -0
  224. package/dist/utilities/__internal__/logUtils/log.utils.d.ts +23 -0
  225. package/dist/utilities/__internal__/logUtils/log.utils.d.ts.map +1 -0
  226. package/dist/utilities/__internal__/logUtils/log.utils.js +30 -0
  227. package/dist/utilities/__internal__/logUtils/log.utils.js.map +1 -0
  228. package/dist/utilities/hrefUtils/index.cjs +50 -0
  229. package/dist/utilities/hrefUtils/index.cjs.map +1 -0
  230. package/dist/utilities/hrefUtils/index.d.ts +19 -0
  231. package/dist/utilities/hrefUtils/index.d.ts.map +1 -0
  232. package/dist/utilities/hrefUtils/index.js +47 -0
  233. package/dist/utilities/hrefUtils/index.js.map +1 -0
  234. package/dist/utilities/renderUtils/index.cjs +7 -12
  235. package/dist/utilities/renderUtils/index.cjs.map +1 -1
  236. package/dist/utilities/renderUtils/index.d.ts.map +1 -1
  237. package/dist/utilities/renderUtils/index.js +7 -12
  238. package/dist/utilities/renderUtils/index.js.map +1 -1
  239. package/package.json +5 -1
  240. package/dist/hooks/useAriaDisclosureAttrs/index.cjs.map +0 -1
  241. package/dist/hooks/useAriaDisclosureAttrs/index.d.ts.map +0 -1
  242. package/dist/hooks/useAriaDisclosureAttrs/index.js.map +0 -1
  243. package/dist/native/utilities/isReactComponent/index.d.ts.map +0 -1
  244. package/dist/native/utilities/isReactComponent/index.js.map +0 -1
  245. package/dist/utilities/isReactComponent/index.cjs.map +0 -1
  246. package/dist/utilities/isReactComponent/index.d.ts.map +0 -1
  247. package/dist/utilities/isReactComponent/index.js.map +0 -1
@@ -0,0 +1,58 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { User01 } from '@flipdish/ui-icons';
3
+ import { cx } from '@flipdish/ui-library/utilities/cx';
4
+ import { useResolvedTestId, joinTestId } from '@flipdish/ui-library/utilities/testIdUtils';
5
+ import { useState } from 'react';
6
+ import { styles } from '../Avatar.styles.js';
7
+ import { AvatarCount } from './avatar-count.js';
8
+ import { AvatarOnlineIndicator } from './avatar-online-indicator.js';
9
+ import { VerifiedTick } from './verified-tick.js';
10
+
11
+ /**
12
+ * Represents a user or entity visually using a photo, initials, or fallback
13
+ * icon. Supports size variants, status indicators, verified badges, and count
14
+ * overlays.
15
+ *
16
+ * @summary displays a user or entity with an image, initials, or icon fallback
17
+ */
18
+ const Avatar = ({ size = 'md', src, alt, initials, placeholder, placeholderIcon: PlaceholderIcon, border, badge, status, verified, count, focusable = false, rounded = true, className, contentClassName, 'data-testid': dataTestId, }) => {
19
+ const [isFailed, setIsFailed] = useState(false);
20
+ const avatarTestId = useResolvedTestId({ testId: dataTestId, segment: 'avatar', rootName: 'avatar' });
21
+ const canShowImage = src && !isFailed;
22
+ const renderMainContent = () => {
23
+ if (canShowImage) {
24
+ return (jsx("img", { "data-avatar-img": true, "data-testid": joinTestId(avatarTestId, 'image'), className: "size-full object-cover", src: src,
25
+ // Always emit an `alt` attribute (axe `image-alt`). Avatars are typically
26
+ // paired with a visible name, so default to `''` (decorative) unless the
27
+ // consumer supplies a meaningful description.
28
+ alt: alt ?? '', onError: () => setIsFailed(true) }));
29
+ }
30
+ if (initials) {
31
+ return jsx("span", { className: cx('text-quaternary', styles[size].initials), children: initials });
32
+ }
33
+ if (PlaceholderIcon) {
34
+ return jsx(PlaceholderIcon, { className: cx('text-fg-quaternary', styles[size].icon) });
35
+ }
36
+ return placeholder || jsx(User01, { className: cx('text-fg-quaternary', styles[size].icon) });
37
+ };
38
+ const renderBadgeContent = () => {
39
+ if (status) {
40
+ return jsx(AvatarOnlineIndicator, { status: status, size: size, "data-testid": joinTestId(avatarTestId, 'status') });
41
+ }
42
+ if (verified) {
43
+ return (jsx(VerifiedTick, { size: size, className: cx('absolute right-0 bottom-0', size === 'xs' && '-right-px -bottom-px'), "data-testid": joinTestId(avatarTestId, 'badge') }));
44
+ }
45
+ if (count) {
46
+ return jsx(AvatarCount, { count: count, "data-testid": joinTestId(avatarTestId, 'badge') });
47
+ }
48
+ return badge;
49
+ };
50
+ return (jsxs("div", { "data-avatar": true, "data-testid": avatarTestId, className: cx('relative inline-flex shrink-0 rounded-[7px]', rounded && 'rounded-full',
51
+ // Focus styles
52
+ focusable && 'outline-transparent group-focus-visible:outline-2 group-focus-visible:outline-offset-2 group-focus-visible:outline-focus-ring', border && 'ring-1 ring-secondary_alt', border && styles[size].rootWithBorder, styles[size].root, className), children: [jsx("div", { className: cx('relative inline-flex size-full shrink-0 items-center justify-center overflow-hidden rounded-md bg-tertiary outline-[0.5px] -outline-offset-[0.5px] outline-black/16 before:inset-[0.5px]', rounded && 'rounded-full', canShowImage &&
53
+ size !== 'xs' &&
54
+ 'before:absolute before:inset-0 before:rounded-[inherit] before:border before:border-white/32 before:mask-[linear-gradient(to_bottom,black_0%,transparent_25%,transparent_75%,black_100%)]', contentClassName), children: renderMainContent() }), renderBadgeContent()] }));
55
+ };
56
+
57
+ export { Avatar };
58
+ //# sourceMappingURL=avatar-base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"avatar-base.js","sources":["../../../../../src/components/atoms/Avatar/components/avatar-base.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs"],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
 
3
3
  var jsxRuntime = require('react/jsx-runtime');
4
4
  var cx = require('@flipdish/ui-library/utilities/cx');
5
- var index = require('../index.cjs');
5
+ var avatarBase = require('./avatar-base.cjs');
6
6
 
7
7
  const styles = {
8
8
  sm: { title: 'text-sm ', subtitle: 'text-xs' },
@@ -10,7 +10,7 @@ const styles = {
10
10
  lg: { title: 'text-md ', subtitle: 'text-md' },
11
11
  };
12
12
  const AvatarLabelGroup = ({ title, subtitle, className, rounded, avatarClassName, ...props }) => {
13
- return (jsxRuntime.jsxs("figure", { className: cx.cx('group flex min-w-0 flex-1 items-center gap-2', className), children: [jsxRuntime.jsx(index.Avatar, { border: true, rounded: rounded, className: avatarClassName, ...props }), jsxRuntime.jsxs("figcaption", { className: "min-w-0 flex-1", children: [jsxRuntime.jsx("p", { className: cx.cx('font-semibold text-primary', styles[props.size].title), children: title }), jsxRuntime.jsx("p", { className: cx.cx('truncate text-tertiary', styles[props.size].subtitle), children: subtitle })] })] }));
13
+ return (jsxRuntime.jsxs("figure", { className: cx.cx('group flex min-w-0 flex-1 items-center gap-2', className), children: [jsxRuntime.jsx(avatarBase.Avatar, { border: true, rounded: rounded, className: avatarClassName, ...props }), jsxRuntime.jsxs("figcaption", { className: "min-w-0 flex-1", children: [jsxRuntime.jsx("p", { className: cx.cx('font-semibold text-primary', styles[props.size].title), children: title }), jsxRuntime.jsx("p", { className: cx.cx('truncate text-tertiary', styles[props.size].subtitle), children: subtitle })] })] }));
14
14
  };
15
15
 
16
16
  exports.AvatarLabelGroup = AvatarLabelGroup;
@@ -1 +1 @@
1
- {"version":3,"file":"avatar-label-group.cjs","sources":["../../../../../src/components/atoms/Avatar/components/avatar-label-group.tsx"],"sourcesContent":[null],"names":["_jsxs","cx","_jsx","Avatar"],"mappings":";;;;;;AAMA,MAAM,MAAM,GAAG;IACb,EAAE,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE;IAC9C,EAAE,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE;IAC9C,EAAE,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE;CAC/C;MAUY,gBAAgB,GAAG,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,eAAe,EAAE,GAAG,KAAK,EAAyB,KAAI;AAC5H,IAAA,QACEA,eAAA,CAAA,QAAA,EAAA,EAAQ,SAAS,EAAEC,KAAE,CAAC,8CAA8C,EAAE,SAAS,CAAC,EAAA,QAAA,EAAA,CAC9EC,cAAA,CAACC,YAAM,EAAA,EAAC,MAAM,EAAA,IAAA,EAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAA,GAAM,KAAK,EAAA,CAAI,EAC1EH,eAAA,CAAA,YAAA,EAAA,EAAY,SAAS,EAAC,gBAAgB,EAAA,QAAA,EAAA,CACpCE,cAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAED,KAAE,CAAC,4BAA4B,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,YAAG,KAAK,EAAA,CAAK,EACrFC,cAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAED,KAAE,CAAC,wBAAwB,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,YAAG,QAAQ,EAAA,CAAK,CAAA,EAAA,CAC5E,CAAA,EAAA,CACN;AAEb;;;;"}
1
+ {"version":3,"file":"avatar-label-group.cjs","sources":["../../../../../src/components/atoms/Avatar/components/avatar-label-group.tsx"],"sourcesContent":[null],"names":["_jsxs","cx","_jsx","Avatar"],"mappings":";;;;;;AAMA,MAAM,MAAM,GAAG;IACb,EAAE,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE;IAC9C,EAAE,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE;IAC9C,EAAE,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE;CAC/C;MAUY,gBAAgB,GAAG,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,eAAe,EAAE,GAAG,KAAK,EAAyB,KAAI;AAC5H,IAAA,QACEA,eAAA,CAAA,QAAA,EAAA,EAAQ,SAAS,EAAEC,KAAE,CAAC,8CAA8C,EAAE,SAAS,CAAC,EAAA,QAAA,EAAA,CAC9EC,cAAA,CAACC,iBAAM,EAAA,EAAC,MAAM,EAAA,IAAA,EAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAA,GAAM,KAAK,EAAA,CAAI,EAC1EH,eAAA,CAAA,YAAA,EAAA,EAAY,SAAS,EAAC,gBAAgB,EAAA,QAAA,EAAA,CACpCE,cAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAED,KAAE,CAAC,4BAA4B,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,YAAG,KAAK,EAAA,CAAK,EACrFC,cAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAED,KAAE,CAAC,wBAAwB,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,YAAG,QAAQ,EAAA,CAAK,CAAA,EAAA,CAC5E,CAAA,EAAA,CACN;AAEb;;;;"}
@@ -1,5 +1,5 @@
1
1
  import type { ReactNode } from 'react';
2
- import { type AvatarProps } from '../index';
2
+ import { type AvatarProps } from './avatar-base';
3
3
  interface AvatarLabelGroupProps extends AvatarProps {
4
4
  size: 'sm' | 'md' | 'lg';
5
5
  rounded?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"avatar-label-group.d.ts","sourceRoot":"","sources":["../../../../../src/components/atoms/Avatar/components/avatar-label-group.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAU,KAAK,WAAW,EAAE,MAAM,UAAU,CAAC;AAQpD,UAAU,qBAAsB,SAAQ,WAAW;IACjD,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,eAAO,MAAM,gBAAgB,GAAI,oEAAoE,qBAAqB,gCAUzH,CAAC"}
1
+ {"version":3,"file":"avatar-label-group.d.ts","sourceRoot":"","sources":["../../../../../src/components/atoms/Avatar/components/avatar-label-group.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAU,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAQzD,UAAU,qBAAsB,SAAQ,WAAW;IACjD,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,eAAO,MAAM,gBAAgB,GAAI,oEAAoE,qBAAqB,gCAUzH,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { cx } from '@flipdish/ui-library/utilities/cx';
3
- import { Avatar } from '../index.js';
3
+ import { Avatar } from './avatar-base.js';
4
4
 
5
5
  const styles = {
6
6
  sm: { title: 'text-sm ', subtitle: 'text-xs' },
@@ -1,66 +1,14 @@
1
1
  'use strict';
2
2
 
3
- var jsxRuntime = require('react/jsx-runtime');
4
- var uiIcons = require('@flipdish/ui-icons');
5
- var cx = require('@flipdish/ui-library/utilities/cx');
6
- var testIdUtils = require('@flipdish/ui-library/utilities/testIdUtils');
7
- var React = require('react');
8
- var Avatar_styles = require('./Avatar.styles.cjs');
9
- var avatarCount = require('./components/avatar-count.cjs');
10
- var avatarOnlineIndicator = require('./components/avatar-online-indicator.cjs');
11
- var verifiedTick = require('./components/verified-tick.cjs');
12
3
  var avatar_utils = require('./avatar.utils.cjs');
13
4
  var avatarAddButton = require('./components/avatar-add-button.cjs');
5
+ var avatarBase = require('./components/avatar-base.cjs');
14
6
  var avatarLabelGroup = require('./components/avatar-label-group.cjs');
15
7
 
16
- /**
17
- * Represents a user or entity visually using a photo, initials, or fallback
18
- * icon. Supports size variants, status indicators, verified badges, and count
19
- * overlays.
20
- *
21
- * @summary displays a user or entity with an image, initials, or icon fallback
22
- */
23
- const Avatar = ({ size = 'md', src, alt, initials, placeholder, placeholderIcon: PlaceholderIcon, border, badge, status, verified, count, focusable = false, rounded = true, className, contentClassName, 'data-testid': dataTestId, }) => {
24
- const [isFailed, setIsFailed] = React.useState(false);
25
- const avatarTestId = testIdUtils.useResolvedTestId({ testId: dataTestId, segment: 'avatar', rootName: 'avatar' });
26
- const canShowImage = src && !isFailed;
27
- const renderMainContent = () => {
28
- if (canShowImage) {
29
- return (jsxRuntime.jsx("img", { "data-avatar-img": true, "data-testid": testIdUtils.joinTestId(avatarTestId, 'image'), className: "size-full object-cover", src: src,
30
- // Always emit an `alt` attribute (axe `image-alt`). Avatars are typically
31
- // paired with a visible name, so default to `''` (decorative) unless the
32
- // consumer supplies a meaningful description.
33
- alt: alt ?? '', onError: () => setIsFailed(true) }));
34
- }
35
- if (initials) {
36
- return jsxRuntime.jsx("span", { className: cx.cx('text-quaternary', Avatar_styles.styles[size].initials), children: initials });
37
- }
38
- if (PlaceholderIcon) {
39
- return jsxRuntime.jsx(PlaceholderIcon, { className: cx.cx('text-fg-quaternary', Avatar_styles.styles[size].icon) });
40
- }
41
- return placeholder || jsxRuntime.jsx(uiIcons.User01, { className: cx.cx('text-fg-quaternary', Avatar_styles.styles[size].icon) });
42
- };
43
- const renderBadgeContent = () => {
44
- if (status) {
45
- return jsxRuntime.jsx(avatarOnlineIndicator.AvatarOnlineIndicator, { status: status, size: size, "data-testid": testIdUtils.joinTestId(avatarTestId, 'status') });
46
- }
47
- if (verified) {
48
- return (jsxRuntime.jsx(verifiedTick.VerifiedTick, { size: size, className: cx.cx('absolute right-0 bottom-0', size === 'xs' && '-right-px -bottom-px'), "data-testid": testIdUtils.joinTestId(avatarTestId, 'badge') }));
49
- }
50
- if (count) {
51
- return jsxRuntime.jsx(avatarCount.AvatarCount, { count: count, "data-testid": testIdUtils.joinTestId(avatarTestId, 'badge') });
52
- }
53
- return badge;
54
- };
55
- return (jsxRuntime.jsxs("div", { "data-avatar": true, "data-testid": avatarTestId, className: cx.cx('relative inline-flex shrink-0 rounded-[7px]', rounded && 'rounded-full',
56
- // Focus styles
57
- focusable && 'outline-transparent group-focus-visible:outline-2 group-focus-visible:outline-offset-2 group-focus-visible:outline-focus-ring', border && 'ring-1 ring-secondary_alt', border && Avatar_styles.styles[size].rootWithBorder, Avatar_styles.styles[size].root, className), children: [jsxRuntime.jsx("div", { className: cx.cx('relative inline-flex size-full shrink-0 items-center justify-center overflow-hidden rounded-md bg-tertiary outline-[0.5px] -outline-offset-[0.5px] outline-black/16 before:inset-[0.5px]', rounded && 'rounded-full', canShowImage &&
58
- size !== 'xs' &&
59
- 'before:absolute before:inset-0 before:rounded-[inherit] before:border before:border-white/32 before:mask-[linear-gradient(to_bottom,black_0%,transparent_25%,transparent_75%,black_100%)]', contentClassName), children: renderMainContent() }), renderBadgeContent()] }));
60
- };
8
+
61
9
 
62
10
  exports.getInitials = avatar_utils.getInitials;
63
11
  exports.AvatarAddButton = avatarAddButton.AvatarAddButton;
12
+ exports.Avatar = avatarBase.Avatar;
64
13
  exports.AvatarLabelGroup = avatarLabelGroup.AvatarLabelGroup;
65
- exports.Avatar = Avatar;
66
14
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../../src/components/atoms/Avatar/index.tsx"],"sourcesContent":[null],"names":["useState","useResolvedTestId","_jsx","joinTestId","cx","styles","User01","AvatarOnlineIndicator","VerifiedTick","AvatarCount","_jsxs"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;"}
@@ -1,74 +1,5 @@
1
- import { type FC, type ReactNode } from 'react';
2
1
  export { getInitials } from './avatar.utils';
3
2
  export { AvatarAddButton } from './components/avatar-add-button';
4
- export { AvatarLabelGroup } from './components/avatar-label-group';
5
- export interface AvatarProps {
6
- size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';
7
- className?: string;
8
- /**
9
- * The class name for the main child of the avatar.
10
- */
11
- contentClassName?: string;
12
- src?: string | null;
13
- alt?: string;
14
- /**
15
- * Display an inner contrast border around the avatar image.
16
- */
17
- contrastBorder?: boolean;
18
- /**
19
- * Whether the avatar should be rounded.
20
- * @default true
21
- */
22
- rounded?: boolean;
23
- /**
24
- * Display an outer border around the avatar.
25
- */
26
- border?: boolean;
27
- /**
28
- * Display a badge (i.e. company logo).
29
- */
30
- badge?: ReactNode;
31
- /**
32
- * Display a status indicator.
33
- */
34
- status?: 'online' | 'offline';
35
- /**
36
- * Display a verified tick icon.
37
- *
38
- * @default false
39
- */
40
- verified?: boolean;
41
- /**
42
- * Display a count badge.
43
- */
44
- count?: number;
45
- /**
46
- * The initials of the user to display if no image is available.
47
- */
48
- initials?: string;
49
- /**
50
- * An icon to display if no image is available.
51
- */
52
- placeholderIcon?: FC<{
53
- className?: string;
54
- }>;
55
- /**
56
- * A placeholder to display if no image is available.
57
- */
58
- placeholder?: ReactNode;
59
- /**
60
- * Whether the avatar should show a focus ring when the parent group is in focus.
61
- * For example, when the avatar is wrapped inside a link.
62
- *
63
- * @default false
64
- */
65
- focusable?: boolean;
66
- /**
67
- * Overrides the `data-testid` (defaults to `fd-avatar`). The image and badge
68
- * slot (status indicator / verified tick / count) derive their ids from it.
69
- */
70
- 'data-testid'?: string;
71
- }
72
3
  /**
73
4
  * Represents a user or entity visually using a photo, initials, or fallback
74
5
  * icon. Supports size variants, status indicators, verified badges, and count
@@ -76,5 +7,6 @@ export interface AvatarProps {
76
7
  *
77
8
  * @summary displays a user or entity with an image, initials, or icon fallback
78
9
  */
79
- export declare const Avatar: ({ size, src, alt, initials, placeholder, placeholderIcon: PlaceholderIcon, border, badge, status, verified, count, focusable, rounded, className, contentClassName, "data-testid": dataTestId, }: AvatarProps) => import("react").JSX.Element;
10
+ export { Avatar, type AvatarProps } from './components/avatar-base';
11
+ export { AvatarLabelGroup } from './components/avatar-label-group';
80
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/atoms/Avatar/index.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,SAAS,EAAY,MAAM,OAAO,CAAC;AAM1D,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAEnE,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;OAEG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;OAEG;IACH,MAAM,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC9B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,eAAe,CAAC,EAAE,EAAE,CAAC;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC7C;;OAEG;IACH,WAAW,CAAC,EAAE,SAAS,CAAC;IAExB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,MAAM,GAAI,kMAiBpB,WAAW,gCAsFb,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/atoms/Avatar/index.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEjE;;;;;;GAMG;AACH,OAAO,EAAE,MAAM,EAAE,KAAK,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC"}
@@ -1,61 +1,5 @@
1
- import { jsxs, jsx } from 'react/jsx-runtime';
2
- import { User01 } from '@flipdish/ui-icons';
3
- import { cx } from '@flipdish/ui-library/utilities/cx';
4
- import { useResolvedTestId, joinTestId } from '@flipdish/ui-library/utilities/testIdUtils';
5
- import { useState } from 'react';
6
- import { styles } from './Avatar.styles.js';
7
- import { AvatarCount } from './components/avatar-count.js';
8
- import { AvatarOnlineIndicator } from './components/avatar-online-indicator.js';
9
- import { VerifiedTick } from './components/verified-tick.js';
10
1
  export { getInitials } from './avatar.utils.js';
11
2
  export { AvatarAddButton } from './components/avatar-add-button.js';
3
+ export { Avatar } from './components/avatar-base.js';
12
4
  export { AvatarLabelGroup } from './components/avatar-label-group.js';
13
-
14
- /**
15
- * Represents a user or entity visually using a photo, initials, or fallback
16
- * icon. Supports size variants, status indicators, verified badges, and count
17
- * overlays.
18
- *
19
- * @summary displays a user or entity with an image, initials, or icon fallback
20
- */
21
- const Avatar = ({ size = 'md', src, alt, initials, placeholder, placeholderIcon: PlaceholderIcon, border, badge, status, verified, count, focusable = false, rounded = true, className, contentClassName, 'data-testid': dataTestId, }) => {
22
- const [isFailed, setIsFailed] = useState(false);
23
- const avatarTestId = useResolvedTestId({ testId: dataTestId, segment: 'avatar', rootName: 'avatar' });
24
- const canShowImage = src && !isFailed;
25
- const renderMainContent = () => {
26
- if (canShowImage) {
27
- return (jsx("img", { "data-avatar-img": true, "data-testid": joinTestId(avatarTestId, 'image'), className: "size-full object-cover", src: src,
28
- // Always emit an `alt` attribute (axe `image-alt`). Avatars are typically
29
- // paired with a visible name, so default to `''` (decorative) unless the
30
- // consumer supplies a meaningful description.
31
- alt: alt ?? '', onError: () => setIsFailed(true) }));
32
- }
33
- if (initials) {
34
- return jsx("span", { className: cx('text-quaternary', styles[size].initials), children: initials });
35
- }
36
- if (PlaceholderIcon) {
37
- return jsx(PlaceholderIcon, { className: cx('text-fg-quaternary', styles[size].icon) });
38
- }
39
- return placeholder || jsx(User01, { className: cx('text-fg-quaternary', styles[size].icon) });
40
- };
41
- const renderBadgeContent = () => {
42
- if (status) {
43
- return jsx(AvatarOnlineIndicator, { status: status, size: size, "data-testid": joinTestId(avatarTestId, 'status') });
44
- }
45
- if (verified) {
46
- return (jsx(VerifiedTick, { size: size, className: cx('absolute right-0 bottom-0', size === 'xs' && '-right-px -bottom-px'), "data-testid": joinTestId(avatarTestId, 'badge') }));
47
- }
48
- if (count) {
49
- return jsx(AvatarCount, { count: count, "data-testid": joinTestId(avatarTestId, 'badge') });
50
- }
51
- return badge;
52
- };
53
- return (jsxs("div", { "data-avatar": true, "data-testid": avatarTestId, className: cx('relative inline-flex shrink-0 rounded-[7px]', rounded && 'rounded-full',
54
- // Focus styles
55
- focusable && 'outline-transparent group-focus-visible:outline-2 group-focus-visible:outline-offset-2 group-focus-visible:outline-focus-ring', border && 'ring-1 ring-secondary_alt', border && styles[size].rootWithBorder, styles[size].root, className), children: [jsx("div", { className: cx('relative inline-flex size-full shrink-0 items-center justify-center overflow-hidden rounded-md bg-tertiary outline-[0.5px] -outline-offset-[0.5px] outline-black/16 before:inset-[0.5px]', rounded && 'rounded-full', canShowImage &&
56
- size !== 'xs' &&
57
- 'before:absolute before:inset-0 before:rounded-[inherit] before:border before:border-white/32 before:mask-[linear-gradient(to_bottom,black_0%,transparent_25%,transparent_75%,black_100%)]', contentClassName), children: renderMainContent() }), renderBadgeContent()] }));
58
- };
59
-
60
- export { Avatar };
61
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/atoms/Avatar/index.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs"],"mappings":";;;;;;;;;;;;;AAkFA;;;;;;AAMG;MACU,MAAM,GAAG,CAAC,EACrB,IAAI,GAAG,IAAI,EACX,GAAG,EACH,GAAG,EACH,QAAQ,EACR,WAAW,EACX,eAAe,EAAE,eAAe,EAChC,MAAM,EACN,KAAK,EACL,MAAM,EACN,QAAQ,EACR,KAAK,EACL,SAAS,GAAG,KAAK,EACjB,OAAO,GAAG,IAAI,EACd,SAAS,EACT,gBAAgB,EAChB,aAAa,EAAE,UAAU,GACb,KAAI;IAChB,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;AAC/C,IAAA,MAAM,YAAY,GAAG,iBAAiB,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AAErG,IAAA,MAAM,YAAY,GAAG,GAAG,IAAI,CAAC,QAAQ;IAErC,MAAM,iBAAiB,GAAG,MAAK;QAC7B,IAAI,YAAY,EAAE;AAChB,YAAA,QACEA,GAAA,CAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,aAAA,EAEe,UAAU,CAAC,YAAY,EAAE,OAAO,CAAC,EAC9C,SAAS,EAAC,wBAAwB,EAClC,GAAG,EAAE,GAAG;;;;AAIR,gBAAA,GAAG,EAAE,GAAG,IAAI,EAAE,EACd,OAAO,EAAE,MAAM,WAAW,CAAC,IAAI,CAAC,EAAA,CAChC;QAEN;QAEA,IAAI,QAAQ,EAAE;AACZ,YAAA,OAAOA,cAAM,SAAS,EAAE,EAAE,CAAC,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAA,QAAA,EAAG,QAAQ,GAAQ;QACzF;QAEA,IAAI,eAAe,EAAE;AACnB,YAAA,OAAOA,IAAC,eAAe,EAAA,EAAC,SAAS,EAAE,EAAE,CAAC,oBAAoB,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAI;QACpF;AAEA,QAAA,OAAO,WAAW,IAAIA,GAAA,CAAC,MAAM,EAAA,EAAC,SAAS,EAAE,EAAE,CAAC,oBAAoB,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAI;AAC1F,IAAA,CAAC;IAED,MAAM,kBAAkB,GAAG,MAAK;QAC9B,IAAI,MAAM,EAAE;AACV,YAAA,OAAOA,IAAC,qBAAqB,EAAA,EAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAA,aAAA,EAAe,UAAU,CAAC,YAAY,EAAE,QAAQ,CAAC,GAAI;QAC/G;QAEA,IAAI,QAAQ,EAAE;AACZ,YAAA,QACEA,GAAA,CAAC,YAAY,EAAA,EACX,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,EAAE,CAAC,2BAA2B,EAAE,IAAI,KAAK,IAAI,IAAI,sBAAsB,CAAC,EAAA,aAAA,EACtE,UAAU,CAAC,YAAY,EAAE,OAAO,CAAC,EAAA,CAC9C;QAEN;QAEA,IAAI,KAAK,EAAE;AACT,YAAA,OAAOA,GAAA,CAAC,WAAW,EAAA,EAAC,KAAK,EAAE,KAAK,EAAA,aAAA,EAAe,UAAU,CAAC,YAAY,EAAE,OAAO,CAAC,GAAI;QACtF;AAEA,QAAA,OAAO,KAAK;AACd,IAAA,CAAC;AAED,IAAA,QACEC,IAAA,CAAA,KAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,aAAA,EAEe,YAAY,EACzB,SAAS,EAAE,EAAE,CACX,6CAA6C,EAC7C,OAAO,IAAI,cAAc;;AAEzB,QAAA,SAAS,IAAI,+HAA+H,EAC5I,MAAM,IAAI,2BAA2B,EACrC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,cAAc,EACrC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EACjB,SAAS,CACV,aAEDD,GAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAE,EAAE,CACX,0LAA0L,EAC1L,OAAO,IAAI,cAAc,EACzB,YAAY;AACV,oBAAA,IAAI,KAAK,IAAI;AACb,oBAAA,2LAA2L,EAC7L,gBAAgB,CACjB,EAAA,QAAA,EAEA,iBAAiB,EAAE,EAAA,CAChB,EACL,kBAAkB,EAAE,CAAA,EAAA,CACjB;AAEV;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
@@ -4,7 +4,8 @@ var jsxRuntime = require('react/jsx-runtime');
4
4
 
5
5
  const GridCheck = (props) => {
6
6
  const { size = 'md', ...rest } = props;
7
- const Pattern = sizes[size];
7
+ // Fallback keeps an unknown size (e.g. a runtime 'lg' bypassing the types) rendering instead of crashing.
8
+ const Pattern = sizes[size] ?? sizes.md;
8
9
  return jsxRuntime.jsx(Pattern, { ...rest });
9
10
  };
10
11
  const md = (props) => {