@ankhorage/zora 1.4.7 → 1.4.9
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.
- package/CHANGELOG.md +12 -0
- package/README.md +262 -0
- package/dist/components/card/meta.d.ts +1 -1
- package/dist/foundation/meta.d.ts +4 -4
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/layout/auth-layout/meta.d.ts +1 -1
- package/dist/layout/page/meta.d.ts +1 -1
- package/dist/layout/page-section/meta.d.ts +1 -1
- package/dist/metadata/allowedChildren.d.ts +3 -3
- package/dist/metadata/allowedChildren.d.ts.map +1 -1
- package/dist/metadata/allowedChildren.js +2 -0
- package/dist/metadata/allowedChildren.js.map +1 -1
- package/dist/metadata/componentMeta.d.ts.map +1 -1
- package/dist/metadata/componentMeta.js +4 -0
- package/dist/metadata/componentMeta.js.map +1 -1
- package/dist/patterns/chat-list-item/ChatListItem.d.ts +4 -0
- package/dist/patterns/chat-list-item/ChatListItem.d.ts.map +1 -0
- package/dist/patterns/chat-list-item/ChatListItem.js +110 -0
- package/dist/patterns/chat-list-item/ChatListItem.js.map +1 -0
- package/dist/patterns/chat-list-item/index.d.ts +3 -0
- package/dist/patterns/chat-list-item/index.d.ts.map +1 -0
- package/dist/patterns/chat-list-item/index.js +2 -0
- package/dist/patterns/chat-list-item/index.js.map +1 -0
- package/dist/patterns/chat-list-item/meta.d.ts +74 -0
- package/dist/patterns/chat-list-item/meta.d.ts.map +1 -0
- package/dist/patterns/chat-list-item/meta.js +72 -0
- package/dist/patterns/chat-list-item/meta.js.map +1 -0
- package/dist/patterns/chat-list-item/types.d.ts +31 -0
- package/dist/patterns/chat-list-item/types.d.ts.map +1 -0
- package/dist/patterns/chat-list-item/types.js +2 -0
- package/dist/patterns/chat-list-item/types.js.map +1 -0
- package/dist/patterns/notice/meta.d.ts +1 -1
- package/dist/patterns/panel/meta.d.ts +1 -1
- package/dist/patterns/post-card/PostCard.d.ts +4 -0
- package/dist/patterns/post-card/PostCard.d.ts.map +1 -0
- package/dist/patterns/post-card/PostCard.js +133 -0
- package/dist/patterns/post-card/PostCard.js.map +1 -0
- package/dist/patterns/post-card/index.d.ts +3 -0
- package/dist/patterns/post-card/index.d.ts.map +1 -0
- package/dist/patterns/post-card/index.js +2 -0
- package/dist/patterns/post-card/index.js.map +1 -0
- package/dist/patterns/post-card/meta.d.ts +64 -0
- package/dist/patterns/post-card/meta.d.ts.map +1 -0
- package/dist/patterns/post-card/meta.js +66 -0
- package/dist/patterns/post-card/meta.js.map +1 -0
- package/dist/patterns/post-card/types.d.ts +64 -0
- package/dist/patterns/post-card/types.d.ts.map +1 -0
- package/dist/patterns/post-card/types.js +2 -0
- package/dist/patterns/post-card/types.js.map +1 -0
- package/package.json +1 -1
- package/src/index.ts +11 -0
- package/src/metadata/allowedChildren.ts +2 -0
- package/src/metadata/componentMeta.test.ts +2 -0
- package/src/metadata/componentMeta.ts +4 -0
- package/src/patterns/chat-list-item/ChatListItem.test.tsx +11 -0
- package/src/patterns/chat-list-item/ChatListItem.tsx +219 -0
- package/src/patterns/chat-list-item/index.ts +2 -0
- package/src/patterns/chat-list-item/meta.ts +74 -0
- package/src/patterns/chat-list-item/types.ts +33 -0
- package/src/patterns/post-card/PostCard.test.tsx +11 -0
- package/src/patterns/post-card/PostCard.tsx +234 -0
- package/src/patterns/post-card/index.ts +9 -0
- package/src/patterns/post-card/meta.ts +68 -0
- package/src/patterns/post-card/types.ts +71 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"componentMeta.js","sourceRoot":"","sources":["../../src/metadata/componentMeta.ts"],"names":[],"mappings":"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","sourcesContent":["import { appBarMeta } from '../components/app-bar/meta';\nimport { avatarMeta } from '../components/avatar/meta';\nimport { avatarGroupMeta } from '../components/avatar-group/meta';\nimport { badgeMeta } from '../components/badge/meta';\nimport { buttonMeta } from '../components/button/meta';\nimport { cardMeta } from '../components/card/meta';\nimport { checkboxGroupMeta, checkboxMeta } from '../components/checkbox/meta';\nimport { chipMeta } from '../components/chip/meta';\nimport { chipGroupMeta } from '../components/chip-group/meta';\nimport { drawerMeta } from '../components/drawer/meta';\nimport { formActionsMeta, formErrorMeta, formFieldMeta, formMeta } from '../components/form/meta';\nimport { headingMeta } from '../components/heading/meta';\nimport { iconMeta } from '../components/icon/meta';\nimport { iconButtonMeta } from '../components/icon-button/meta';\nimport { imageMeta } from '../components/image/meta';\nimport { inputMeta } from '../components/input/meta';\nimport { mediaCardMeta } from '../components/media-card/meta';\nimport { metricCardMeta } from '../components/metric-card/meta';\nimport { modalMeta } from '../components/modal/meta';\nimport { navigationItemMeta } from '../components/navigation-item/meta';\nimport { navigationListMeta } from '../components/navigation-list/meta';\nimport { progressMeta } from '../components/progress/meta';\nimport { radioGroupMeta, radioMeta } from '../components/radio/meta';\nimport { ratingMeta } from '../components/rating/meta';\nimport { searchBarMeta } from '../components/search-bar/meta';\nimport { selectMeta } from '../components/select/meta';\nimport { tabsMeta } from '../components/tabs/meta';\nimport { textMeta } from '../components/text/meta';\nimport { textareaMeta } from '../components/textarea/meta';\nimport { toolbarActionMeta, toolbarMeta } from '../components/toolbar/meta';\nimport { foundationMetas } from '../foundation/meta';\nimport { appShellMeta } from '../layout/app-shell/meta';\nimport { authLayoutMeta } from '../layout/auth-layout/meta';\nimport { pageMeta } from '../layout/page/meta';\nimport { pageHeaderMeta } from '../layout/page-header/meta';\nimport { pageSectionMeta } from '../layout/page-section/meta';\nimport { settingsLayoutMeta } from '../layout/settings-layout/meta';\nimport { sidebarLayoutMeta } from '../layout/sidebar-layout/meta';\nimport { topbarLayoutMeta } from '../layout/topbar-layout/meta';\nimport {\n forgotPasswordFormMeta,\n otpFormMeta,\n signInFormMeta,\n signUpFormMeta,\n} from '../patterns/auth/meta';\nimport { collectionEditorMeta } from '../patterns/collection-editor/meta';\nimport { confirmDialogMeta } from '../patterns/confirm-dialog/meta';\nimport { disclosureSectionMeta } from '../patterns/disclosure-section/meta';\nimport { emptyStateMeta } from '../patterns/empty-state/meta';\nimport { filterBarMeta } from '../patterns/filter-bar/meta';\nimport { heroMeta } from '../patterns/hero/meta';\nimport { imagePreviewMeta } from '../patterns/image-preview/meta';\nimport { imageUploadFieldMeta } from '../patterns/image-upload-field/meta';\nimport { inspectorFieldMeta } from '../patterns/inspector-field/meta';\nimport { listMeta, listRowMeta, listSectionMeta } from '../patterns/list/meta';\nimport { noticeMeta } from '../patterns/notice/meta';\nimport { panelMeta } from '../patterns/panel/meta';\nimport { responsivePanelMeta } from '../patterns/responsive-panel/meta';\nimport { sectionHeaderMeta } from '../patterns/section-header/meta';\nimport { selectableItemMeta, selectionProviderMeta } from '../patterns/selection/meta';\nimport { settingsRowMeta } from '../patterns/settings-row/meta';\nimport { switchFieldMeta } from '../patterns/switch-field/meta';\nimport { themeComposerMeta } from '../patterns/theme-composer/meta';\nimport { paletteItemMeta, tileGridMeta } from '../patterns/tile-grid/meta';\nimport { timelineMeta } from '../patterns/timeline/meta';\nimport { treeItemMeta, treeViewMeta } from '../patterns/tree-view/meta';\nimport { zoraDrawerContentMeta } from '../patterns/zora-drawer-content/meta';\nimport { zoraTabBarMeta } from '../patterns/zora-tab-bar/meta';\nimport type { ZoraComponentMetaRegistry } from './types';\n\nexport const ZORA_COMPONENT_META: ZoraComponentMetaRegistry = {\n ...foundationMetas,\n AppBar: appBarMeta,\n Avatar: avatarMeta,\n AvatarGroup: avatarGroupMeta,\n Badge: badgeMeta,\n Button: buttonMeta,\n Card: cardMeta,\n Checkbox: checkboxMeta,\n CheckboxGroup: checkboxGroupMeta,\n Chip: chipMeta,\n ChipGroup: chipGroupMeta,\n Drawer: drawerMeta,\n Form: formMeta,\n FormActions: formActionsMeta,\n FormError: formErrorMeta,\n FormField: formFieldMeta,\n Heading: headingMeta,\n Icon: iconMeta,\n IconButton: iconButtonMeta,\n Image: imageMeta,\n Input: inputMeta,\n MediaCard: mediaCardMeta,\n MetricCard: metricCardMeta,\n Modal: modalMeta,\n NavigationItem: navigationItemMeta,\n NavigationList: navigationListMeta,\n Progress: progressMeta,\n Radio: radioMeta,\n RadioGroup: radioGroupMeta,\n Rating: ratingMeta,\n SearchBar: searchBarMeta,\n Select: selectMeta,\n Tabs: tabsMeta,\n Text: textMeta,\n Textarea: textareaMeta,\n Toolbar: toolbarMeta,\n ToolbarAction: toolbarActionMeta,\n AppShell: appShellMeta,\n AuthLayout: authLayoutMeta,\n Page: pageMeta,\n PageHeader: pageHeaderMeta,\n PageSection: pageSectionMeta,\n SettingsLayout: settingsLayoutMeta,\n SidebarLayout: sidebarLayoutMeta,\n TopbarLayout: topbarLayoutMeta,\n ForgotPasswordForm: forgotPasswordFormMeta,\n OtpForm: otpFormMeta,\n SignInForm: signInFormMeta,\n SignUpForm: signUpFormMeta,\n CollectionEditor: collectionEditorMeta,\n ConfirmDialog: confirmDialogMeta,\n DisclosureSection: disclosureSectionMeta,\n EmptyState: emptyStateMeta,\n FilterBar: filterBarMeta,\n Hero: heroMeta,\n ImagePreview: imagePreviewMeta,\n ImageUploadField: imageUploadFieldMeta,\n InspectorField: inspectorFieldMeta,\n List: listMeta,\n ListRow: listRowMeta,\n ListSection: listSectionMeta,\n Notice: noticeMeta,\n Panel: panelMeta,\n ResponsivePanel: responsivePanelMeta,\n SectionHeader: sectionHeaderMeta,\n SelectableItem: selectableItemMeta,\n SelectionProvider: selectionProviderMeta,\n SettingsRow: settingsRowMeta,\n SwitchField: switchFieldMeta,\n ThemeComposer: themeComposerMeta,\n PaletteItem: paletteItemMeta,\n TileGrid: tileGridMeta,\n Timeline: timelineMeta,\n TreeItem: treeItemMeta,\n TreeView: treeViewMeta,\n ZoraDrawerContent: zoraDrawerContentMeta,\n ZoraTabBar: zoraTabBarMeta,\n};\n"]}
|
|
1
|
+
{"version":3,"file":"componentMeta.js","sourceRoot":"","sources":["../../src/metadata/componentMeta.ts"],"names":[],"mappings":"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","sourcesContent":["import { appBarMeta } from '../components/app-bar/meta';\nimport { avatarMeta } from '../components/avatar/meta';\nimport { avatarGroupMeta } from '../components/avatar-group/meta';\nimport { badgeMeta } from '../components/badge/meta';\nimport { buttonMeta } from '../components/button/meta';\nimport { cardMeta } from '../components/card/meta';\nimport { checkboxGroupMeta, checkboxMeta } from '../components/checkbox/meta';\nimport { chipMeta } from '../components/chip/meta';\nimport { chipGroupMeta } from '../components/chip-group/meta';\nimport { drawerMeta } from '../components/drawer/meta';\nimport { formActionsMeta, formErrorMeta, formFieldMeta, formMeta } from '../components/form/meta';\nimport { headingMeta } from '../components/heading/meta';\nimport { iconMeta } from '../components/icon/meta';\nimport { iconButtonMeta } from '../components/icon-button/meta';\nimport { imageMeta } from '../components/image/meta';\nimport { inputMeta } from '../components/input/meta';\nimport { mediaCardMeta } from '../components/media-card/meta';\nimport { metricCardMeta } from '../components/metric-card/meta';\nimport { modalMeta } from '../components/modal/meta';\nimport { navigationItemMeta } from '../components/navigation-item/meta';\nimport { navigationListMeta } from '../components/navigation-list/meta';\nimport { progressMeta } from '../components/progress/meta';\nimport { radioGroupMeta, radioMeta } from '../components/radio/meta';\nimport { ratingMeta } from '../components/rating/meta';\nimport { searchBarMeta } from '../components/search-bar/meta';\nimport { selectMeta } from '../components/select/meta';\nimport { tabsMeta } from '../components/tabs/meta';\nimport { textMeta } from '../components/text/meta';\nimport { textareaMeta } from '../components/textarea/meta';\nimport { toolbarActionMeta, toolbarMeta } from '../components/toolbar/meta';\nimport { foundationMetas } from '../foundation/meta';\nimport { appShellMeta } from '../layout/app-shell/meta';\nimport { authLayoutMeta } from '../layout/auth-layout/meta';\nimport { pageMeta } from '../layout/page/meta';\nimport { pageHeaderMeta } from '../layout/page-header/meta';\nimport { pageSectionMeta } from '../layout/page-section/meta';\nimport { settingsLayoutMeta } from '../layout/settings-layout/meta';\nimport { sidebarLayoutMeta } from '../layout/sidebar-layout/meta';\nimport { topbarLayoutMeta } from '../layout/topbar-layout/meta';\nimport {\n forgotPasswordFormMeta,\n otpFormMeta,\n signInFormMeta,\n signUpFormMeta,\n} from '../patterns/auth/meta';\nimport { chatListItemMeta } from '../patterns/chat-list-item/meta';\nimport { collectionEditorMeta } from '../patterns/collection-editor/meta';\nimport { confirmDialogMeta } from '../patterns/confirm-dialog/meta';\nimport { disclosureSectionMeta } from '../patterns/disclosure-section/meta';\nimport { emptyStateMeta } from '../patterns/empty-state/meta';\nimport { filterBarMeta } from '../patterns/filter-bar/meta';\nimport { heroMeta } from '../patterns/hero/meta';\nimport { imagePreviewMeta } from '../patterns/image-preview/meta';\nimport { imageUploadFieldMeta } from '../patterns/image-upload-field/meta';\nimport { inspectorFieldMeta } from '../patterns/inspector-field/meta';\nimport { listMeta, listRowMeta, listSectionMeta } from '../patterns/list/meta';\nimport { noticeMeta } from '../patterns/notice/meta';\nimport { panelMeta } from '../patterns/panel/meta';\nimport { postCardMeta } from '../patterns/post-card/meta';\nimport { responsivePanelMeta } from '../patterns/responsive-panel/meta';\nimport { sectionHeaderMeta } from '../patterns/section-header/meta';\nimport { selectableItemMeta, selectionProviderMeta } from '../patterns/selection/meta';\nimport { settingsRowMeta } from '../patterns/settings-row/meta';\nimport { switchFieldMeta } from '../patterns/switch-field/meta';\nimport { themeComposerMeta } from '../patterns/theme-composer/meta';\nimport { paletteItemMeta, tileGridMeta } from '../patterns/tile-grid/meta';\nimport { timelineMeta } from '../patterns/timeline/meta';\nimport { treeItemMeta, treeViewMeta } from '../patterns/tree-view/meta';\nimport { zoraDrawerContentMeta } from '../patterns/zora-drawer-content/meta';\nimport { zoraTabBarMeta } from '../patterns/zora-tab-bar/meta';\nimport type { ZoraComponentMetaRegistry } from './types';\n\nexport const ZORA_COMPONENT_META: ZoraComponentMetaRegistry = {\n ...foundationMetas,\n AppBar: appBarMeta,\n Avatar: avatarMeta,\n AvatarGroup: avatarGroupMeta,\n Badge: badgeMeta,\n Button: buttonMeta,\n Card: cardMeta,\n Checkbox: checkboxMeta,\n CheckboxGroup: checkboxGroupMeta,\n Chip: chipMeta,\n ChipGroup: chipGroupMeta,\n Drawer: drawerMeta,\n Form: formMeta,\n FormActions: formActionsMeta,\n FormError: formErrorMeta,\n FormField: formFieldMeta,\n Heading: headingMeta,\n Icon: iconMeta,\n IconButton: iconButtonMeta,\n Image: imageMeta,\n Input: inputMeta,\n MediaCard: mediaCardMeta,\n MetricCard: metricCardMeta,\n Modal: modalMeta,\n NavigationItem: navigationItemMeta,\n NavigationList: navigationListMeta,\n Progress: progressMeta,\n Radio: radioMeta,\n RadioGroup: radioGroupMeta,\n Rating: ratingMeta,\n SearchBar: searchBarMeta,\n Select: selectMeta,\n Tabs: tabsMeta,\n Text: textMeta,\n Textarea: textareaMeta,\n Toolbar: toolbarMeta,\n ToolbarAction: toolbarActionMeta,\n AppShell: appShellMeta,\n AuthLayout: authLayoutMeta,\n Page: pageMeta,\n PageHeader: pageHeaderMeta,\n PageSection: pageSectionMeta,\n SettingsLayout: settingsLayoutMeta,\n SidebarLayout: sidebarLayoutMeta,\n TopbarLayout: topbarLayoutMeta,\n ForgotPasswordForm: forgotPasswordFormMeta,\n OtpForm: otpFormMeta,\n SignInForm: signInFormMeta,\n SignUpForm: signUpFormMeta,\n ChatListItem: chatListItemMeta,\n CollectionEditor: collectionEditorMeta,\n ConfirmDialog: confirmDialogMeta,\n DisclosureSection: disclosureSectionMeta,\n EmptyState: emptyStateMeta,\n FilterBar: filterBarMeta,\n Hero: heroMeta,\n ImagePreview: imagePreviewMeta,\n ImageUploadField: imageUploadFieldMeta,\n InspectorField: inspectorFieldMeta,\n List: listMeta,\n ListRow: listRowMeta,\n ListSection: listSectionMeta,\n Notice: noticeMeta,\n Panel: panelMeta,\n PostCard: postCardMeta,\n ResponsivePanel: responsivePanelMeta,\n SectionHeader: sectionHeaderMeta,\n SelectableItem: selectableItemMeta,\n SelectionProvider: selectionProviderMeta,\n SettingsRow: settingsRowMeta,\n SwitchField: switchFieldMeta,\n ThemeComposer: themeComposerMeta,\n PaletteItem: paletteItemMeta,\n TileGrid: tileGridMeta,\n Timeline: timelineMeta,\n TreeItem: treeItemMeta,\n TreeView: treeViewMeta,\n ZoraDrawerContent: zoraDrawerContentMeta,\n ZoraTabBar: zoraTabBarMeta,\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChatListItem.d.ts","sourceRoot":"","sources":["../../../src/patterns/chat-list-item/ChatListItem.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAQ1B,OAAO,KAAK,EAAkB,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAiNjE,eAAO,MAAM,YAAY,yDAAwC,CAAC"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { ButtonBase } from '@ankhorage/surface';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { Avatar } from '../../components/avatar';
|
|
4
|
+
import { Badge } from '../../components/badge';
|
|
5
|
+
import { Text } from '../../components/text';
|
|
6
|
+
import { Box, Inline, Stack } from '../../foundation';
|
|
7
|
+
import { useZoraTheme } from '../../theme/useZoraTheme';
|
|
8
|
+
import { withZoraThemeScope } from '../../theme/withZoraThemeScope';
|
|
9
|
+
function resolveAvatarName({ avatar, title, }) {
|
|
10
|
+
if (avatar?.name) {
|
|
11
|
+
return avatar.name;
|
|
12
|
+
}
|
|
13
|
+
return typeof title === 'string' ? title : undefined;
|
|
14
|
+
}
|
|
15
|
+
function resolvePadding(compact) {
|
|
16
|
+
return compact ? { px: 'm', py: 's' } : { px: 'm', py: 'm' };
|
|
17
|
+
}
|
|
18
|
+
function resolveContainerStyles({ theme, selected, pressed, hovered, disabled, }) {
|
|
19
|
+
const borderColor = selected ? theme.semantics.border.focus : 'transparent';
|
|
20
|
+
return {
|
|
21
|
+
bg: pressed
|
|
22
|
+
? theme.semantics.neutral.surfaceActive
|
|
23
|
+
: hovered
|
|
24
|
+
? theme.semantics.neutral.surfaceHover
|
|
25
|
+
: selected
|
|
26
|
+
? theme.semantics.neutral.surface
|
|
27
|
+
: 'transparent',
|
|
28
|
+
borderColor,
|
|
29
|
+
borderWidth: selected ? 1 : 0,
|
|
30
|
+
opacity: disabled ? 0.72 : 1,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
function renderUnreadCount(unreadCount) {
|
|
34
|
+
if (unreadCount == null) {
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
return (<Badge size="s" tone="primary">
|
|
38
|
+
{unreadCount}
|
|
39
|
+
</Badge>);
|
|
40
|
+
}
|
|
41
|
+
function ChatListItemInner({ themeId: _themeId, mode: _mode, testID, title, preview, meta, timestamp, avatar, leading, trailing, unread = false, unreadCount, selected = false, disabled = false, compact = false, accessibilityLabel, onPress, }) {
|
|
42
|
+
const { theme } = useZoraTheme();
|
|
43
|
+
const padding = resolvePadding(compact);
|
|
44
|
+
const avatarName = resolveAvatarName({ avatar, title });
|
|
45
|
+
const isInteractive = Boolean(onPress);
|
|
46
|
+
const hasTimestamp = timestamp != null;
|
|
47
|
+
const hasPreview = preview != null;
|
|
48
|
+
const hasMeta = meta != null;
|
|
49
|
+
const hasTrailing = trailing != null;
|
|
50
|
+
const hasUnreadCount = unreadCount != null;
|
|
51
|
+
const hasSecondaryRow = hasPreview || hasMeta || hasUnreadCount || hasTrailing;
|
|
52
|
+
const content = ({ pressed, hovered }) => {
|
|
53
|
+
const styles = resolveContainerStyles({
|
|
54
|
+
theme,
|
|
55
|
+
selected,
|
|
56
|
+
pressed,
|
|
57
|
+
hovered,
|
|
58
|
+
disabled,
|
|
59
|
+
});
|
|
60
|
+
return (<Box bg={styles.bg} borderColor={styles.borderColor} borderWidth={styles.borderWidth} px={padding.px} py={padding.py} radius="m" style={{ opacity: styles.opacity }}>
|
|
61
|
+
<Inline align="center" gap="m" wrap="nowrap">
|
|
62
|
+
{leading ?? (<Avatar initials={avatar?.initials} label={avatar?.label ?? avatarName} name={avatarName} shape={avatar?.shape} size={avatar?.size ?? (compact ? 's' : 'm')} source={avatar?.source} tone={avatar?.tone}/>)}
|
|
63
|
+
|
|
64
|
+
<Box flex={1}>
|
|
65
|
+
<Stack gap="xxs">
|
|
66
|
+
<Inline align="center" gap="s" justify="space-between" wrap="nowrap">
|
|
67
|
+
<Box flex={1}>
|
|
68
|
+
<Text numberOfLines={1} tone={disabled ? 'muted' : 'default'} variant="bodySmall" weight={unread || selected ? 'semiBold' : 'medium'}>
|
|
69
|
+
{title}
|
|
70
|
+
</Text>
|
|
71
|
+
</Box>
|
|
72
|
+
{hasTimestamp ? (<Text numberOfLines={1} tone={unread ? 'primary' : 'subtle'} variant="caption" weight={unread ? 'semiBold' : 'regular'}>
|
|
73
|
+
{timestamp}
|
|
74
|
+
</Text>) : null}
|
|
75
|
+
</Inline>
|
|
76
|
+
|
|
77
|
+
{hasSecondaryRow ? (<Inline align="center" gap="s" justify="space-between" wrap="nowrap">
|
|
78
|
+
<Box flex={1}>
|
|
79
|
+
<Stack gap="xxs">
|
|
80
|
+
{hasPreview ? (<Text numberOfLines={1} tone={unread ? 'default' : 'muted'} variant="bodySmall" weight={unread ? 'medium' : 'regular'}>
|
|
81
|
+
{preview}
|
|
82
|
+
</Text>) : null}
|
|
83
|
+
{hasMeta ? (<Text numberOfLines={1} tone="subtle" variant="caption">
|
|
84
|
+
{meta}
|
|
85
|
+
</Text>) : null}
|
|
86
|
+
</Stack>
|
|
87
|
+
</Box>
|
|
88
|
+
|
|
89
|
+
{hasUnreadCount || hasTrailing ? (<Inline align="center" gap="s" wrap="nowrap">
|
|
90
|
+
{renderUnreadCount(unreadCount)}
|
|
91
|
+
{trailing}
|
|
92
|
+
</Inline>) : null}
|
|
93
|
+
</Inline>) : null}
|
|
94
|
+
</Stack>
|
|
95
|
+
</Box>
|
|
96
|
+
</Inline>
|
|
97
|
+
</Box>);
|
|
98
|
+
};
|
|
99
|
+
if (!isInteractive) {
|
|
100
|
+
return <Box testID={testID}>{content({ pressed: false, hovered: false })}</Box>;
|
|
101
|
+
}
|
|
102
|
+
return (<ButtonBase accessibilityLabel={accessibilityLabel} accessibilityRole="button" accessibilityState={{ disabled, selected }} disabled={disabled} onPress={onPress} radius="m" testID={testID}>
|
|
103
|
+
{(state) => content({
|
|
104
|
+
pressed: state.pressed,
|
|
105
|
+
hovered: state.hovered,
|
|
106
|
+
})}
|
|
107
|
+
</ButtonBase>);
|
|
108
|
+
}
|
|
109
|
+
export const ChatListItem = withZoraThemeScope(ChatListItemInner);
|
|
110
|
+
//# sourceMappingURL=ChatListItem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChatListItem.js","sourceRoot":"","sources":["../../../src/patterns/chat-list-item/ChatListItem.tsx"],"names":[],"mappings":"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","sourcesContent":["import { ButtonBase } from '@ankhorage/surface';\nimport React from 'react';\n\nimport { Avatar } from '../../components/avatar';\nimport { Badge } from '../../components/badge';\nimport { Text } from '../../components/text';\nimport { Box, Inline, Stack } from '../../foundation';\nimport { useZoraTheme } from '../../theme/useZoraTheme';\nimport { withZoraThemeScope } from '../../theme/withZoraThemeScope';\nimport type { ChatListAvatar, ChatListItemProps } from './types';\n\nfunction resolveAvatarName({\n avatar,\n title,\n}: {\n avatar: ChatListAvatar | undefined;\n title: React.ReactNode;\n}): string | undefined {\n if (avatar?.name) {\n return avatar.name;\n }\n\n return typeof title === 'string' ? title : undefined;\n}\n\nfunction resolvePadding(compact: boolean) {\n return compact ? { px: 'm' as const, py: 's' as const } : { px: 'm' as const, py: 'm' as const };\n}\n\nfunction resolveContainerStyles({\n theme,\n selected,\n pressed,\n hovered,\n disabled,\n}: {\n theme: ReturnType<typeof useZoraTheme>['theme'];\n selected: boolean;\n pressed: boolean;\n hovered: boolean;\n disabled: boolean;\n}) {\n const borderColor = selected ? theme.semantics.border.focus : 'transparent';\n\n return {\n bg: pressed\n ? theme.semantics.neutral.surfaceActive\n : hovered\n ? theme.semantics.neutral.surfaceHover\n : selected\n ? theme.semantics.neutral.surface\n : 'transparent',\n borderColor,\n borderWidth: selected ? 1 : 0,\n opacity: disabled ? 0.72 : 1,\n };\n}\n\nfunction renderUnreadCount(unreadCount: React.ReactNode) {\n if (unreadCount == null) {\n return null;\n }\n\n return (\n <Badge size=\"s\" tone=\"primary\">\n {unreadCount}\n </Badge>\n );\n}\n\nfunction ChatListItemInner({\n themeId: _themeId,\n mode: _mode,\n testID,\n title,\n preview,\n meta,\n timestamp,\n avatar,\n leading,\n trailing,\n unread = false,\n unreadCount,\n selected = false,\n disabled = false,\n compact = false,\n accessibilityLabel,\n onPress,\n}: ChatListItemProps) {\n const { theme } = useZoraTheme();\n const padding = resolvePadding(compact);\n const avatarName = resolveAvatarName({ avatar, title });\n const isInteractive = Boolean(onPress);\n const hasTimestamp = timestamp != null;\n const hasPreview = preview != null;\n const hasMeta = meta != null;\n const hasTrailing = trailing != null;\n const hasUnreadCount = unreadCount != null;\n const hasSecondaryRow = hasPreview || hasMeta || hasUnreadCount || hasTrailing;\n\n const content = ({ pressed, hovered }: { pressed: boolean; hovered: boolean }) => {\n const styles = resolveContainerStyles({\n theme,\n selected,\n pressed,\n hovered,\n disabled,\n });\n\n return (\n <Box\n bg={styles.bg}\n borderColor={styles.borderColor}\n borderWidth={styles.borderWidth}\n px={padding.px}\n py={padding.py}\n radius=\"m\"\n style={{ opacity: styles.opacity }}\n >\n <Inline align=\"center\" gap=\"m\" wrap=\"nowrap\">\n {leading ?? (\n <Avatar\n initials={avatar?.initials}\n label={avatar?.label ?? avatarName}\n name={avatarName}\n shape={avatar?.shape}\n size={avatar?.size ?? (compact ? 's' : 'm')}\n source={avatar?.source}\n tone={avatar?.tone}\n />\n )}\n\n <Box flex={1}>\n <Stack gap=\"xxs\">\n <Inline align=\"center\" gap=\"s\" justify=\"space-between\" wrap=\"nowrap\">\n <Box flex={1}>\n <Text\n numberOfLines={1}\n tone={disabled ? 'muted' : 'default'}\n variant=\"bodySmall\"\n weight={unread || selected ? 'semiBold' : 'medium'}\n >\n {title}\n </Text>\n </Box>\n {hasTimestamp ? (\n <Text\n numberOfLines={1}\n tone={unread ? 'primary' : 'subtle'}\n variant=\"caption\"\n weight={unread ? 'semiBold' : 'regular'}\n >\n {timestamp}\n </Text>\n ) : null}\n </Inline>\n\n {hasSecondaryRow ? (\n <Inline align=\"center\" gap=\"s\" justify=\"space-between\" wrap=\"nowrap\">\n <Box flex={1}>\n <Stack gap=\"xxs\">\n {hasPreview ? (\n <Text\n numberOfLines={1}\n tone={unread ? 'default' : 'muted'}\n variant=\"bodySmall\"\n weight={unread ? 'medium' : 'regular'}\n >\n {preview}\n </Text>\n ) : null}\n {hasMeta ? (\n <Text numberOfLines={1} tone=\"subtle\" variant=\"caption\">\n {meta}\n </Text>\n ) : null}\n </Stack>\n </Box>\n\n {hasUnreadCount || hasTrailing ? (\n <Inline align=\"center\" gap=\"s\" wrap=\"nowrap\">\n {renderUnreadCount(unreadCount)}\n {trailing}\n </Inline>\n ) : null}\n </Inline>\n ) : null}\n </Stack>\n </Box>\n </Inline>\n </Box>\n );\n };\n\n if (!isInteractive) {\n return <Box testID={testID}>{content({ pressed: false, hovered: false })}</Box>;\n }\n\n return (\n <ButtonBase\n accessibilityLabel={accessibilityLabel}\n accessibilityRole=\"button\"\n accessibilityState={{ disabled, selected }}\n disabled={disabled}\n onPress={onPress}\n radius=\"m\"\n testID={testID}\n >\n {(state) =>\n content({\n pressed: state.pressed,\n hovered: state.hovered,\n })\n }\n </ButtonBase>\n );\n}\n\nexport const ChatListItem = withZoraThemeScope(ChatListItemInner);\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/patterns/chat-list-item/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/patterns/chat-list-item/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC","sourcesContent":["export { ChatListItem } from './ChatListItem';\nexport type { ChatListAvatar, ChatListItemProps } from './types';\n"]}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
export declare const chatListItemMeta: {
|
|
2
|
+
readonly name: "ChatListItem";
|
|
3
|
+
readonly category: "pattern";
|
|
4
|
+
readonly description: "Conversation preview row with avatar, title, preview text, timestamp, and unread state.";
|
|
5
|
+
readonly directManifestNode: true;
|
|
6
|
+
readonly allowedChildren: readonly [];
|
|
7
|
+
readonly blueprint: {
|
|
8
|
+
readonly label: "Chat list item";
|
|
9
|
+
readonly icon: {
|
|
10
|
+
readonly name: "chatbubble-outline";
|
|
11
|
+
};
|
|
12
|
+
readonly defaultProps: {
|
|
13
|
+
readonly title: "Ada Lovelace";
|
|
14
|
+
readonly preview: "Can you review the latest UI update?";
|
|
15
|
+
readonly timestamp: "2m";
|
|
16
|
+
readonly avatar: {
|
|
17
|
+
readonly name: "Ada Lovelace";
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
readonly props: {
|
|
22
|
+
readonly title: {
|
|
23
|
+
readonly type: "string";
|
|
24
|
+
readonly category: "Content";
|
|
25
|
+
readonly label: "Title";
|
|
26
|
+
readonly default: "Ada Lovelace";
|
|
27
|
+
};
|
|
28
|
+
readonly preview: {
|
|
29
|
+
readonly type: "string";
|
|
30
|
+
readonly category: "Content";
|
|
31
|
+
readonly label: "Preview";
|
|
32
|
+
};
|
|
33
|
+
readonly meta: {
|
|
34
|
+
readonly type: "string";
|
|
35
|
+
readonly category: "Content";
|
|
36
|
+
readonly label: "Meta";
|
|
37
|
+
};
|
|
38
|
+
readonly timestamp: {
|
|
39
|
+
readonly type: "string";
|
|
40
|
+
readonly category: "Content";
|
|
41
|
+
readonly label: "Timestamp";
|
|
42
|
+
};
|
|
43
|
+
readonly unread: {
|
|
44
|
+
readonly type: "boolean";
|
|
45
|
+
readonly category: "State";
|
|
46
|
+
readonly label: "Unread";
|
|
47
|
+
readonly default: false;
|
|
48
|
+
};
|
|
49
|
+
readonly unreadCount: {
|
|
50
|
+
readonly type: "string";
|
|
51
|
+
readonly category: "State";
|
|
52
|
+
readonly label: "Unread count";
|
|
53
|
+
};
|
|
54
|
+
readonly selected: {
|
|
55
|
+
readonly type: "boolean";
|
|
56
|
+
readonly category: "State";
|
|
57
|
+
readonly label: "Selected";
|
|
58
|
+
readonly default: false;
|
|
59
|
+
};
|
|
60
|
+
readonly disabled: {
|
|
61
|
+
readonly type: "boolean";
|
|
62
|
+
readonly category: "State";
|
|
63
|
+
readonly label: "Disabled";
|
|
64
|
+
readonly default: false;
|
|
65
|
+
};
|
|
66
|
+
readonly compact: {
|
|
67
|
+
readonly type: "boolean";
|
|
68
|
+
readonly category: "Layout";
|
|
69
|
+
readonly label: "Compact";
|
|
70
|
+
readonly default: false;
|
|
71
|
+
};
|
|
72
|
+
};
|
|
73
|
+
};
|
|
74
|
+
//# sourceMappingURL=meta.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"meta.d.ts","sourceRoot":"","sources":["../../../src/patterns/chat-list-item/meta.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuES,CAAC"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
export const chatListItemMeta = {
|
|
2
|
+
name: 'ChatListItem',
|
|
3
|
+
category: 'pattern',
|
|
4
|
+
description: 'Conversation preview row with avatar, title, preview text, timestamp, and unread state.',
|
|
5
|
+
directManifestNode: true,
|
|
6
|
+
allowedChildren: [],
|
|
7
|
+
blueprint: {
|
|
8
|
+
label: 'Chat list item',
|
|
9
|
+
icon: { name: 'chatbubble-outline' },
|
|
10
|
+
defaultProps: {
|
|
11
|
+
title: 'Ada Lovelace',
|
|
12
|
+
preview: 'Can you review the latest UI update?',
|
|
13
|
+
timestamp: '2m',
|
|
14
|
+
avatar: {
|
|
15
|
+
name: 'Ada Lovelace',
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
props: {
|
|
20
|
+
title: {
|
|
21
|
+
type: 'string',
|
|
22
|
+
category: 'Content',
|
|
23
|
+
label: 'Title',
|
|
24
|
+
default: 'Ada Lovelace',
|
|
25
|
+
},
|
|
26
|
+
preview: {
|
|
27
|
+
type: 'string',
|
|
28
|
+
category: 'Content',
|
|
29
|
+
label: 'Preview',
|
|
30
|
+
},
|
|
31
|
+
meta: {
|
|
32
|
+
type: 'string',
|
|
33
|
+
category: 'Content',
|
|
34
|
+
label: 'Meta',
|
|
35
|
+
},
|
|
36
|
+
timestamp: {
|
|
37
|
+
type: 'string',
|
|
38
|
+
category: 'Content',
|
|
39
|
+
label: 'Timestamp',
|
|
40
|
+
},
|
|
41
|
+
unread: {
|
|
42
|
+
type: 'boolean',
|
|
43
|
+
category: 'State',
|
|
44
|
+
label: 'Unread',
|
|
45
|
+
default: false,
|
|
46
|
+
},
|
|
47
|
+
unreadCount: {
|
|
48
|
+
type: 'string',
|
|
49
|
+
category: 'State',
|
|
50
|
+
label: 'Unread count',
|
|
51
|
+
},
|
|
52
|
+
selected: {
|
|
53
|
+
type: 'boolean',
|
|
54
|
+
category: 'State',
|
|
55
|
+
label: 'Selected',
|
|
56
|
+
default: false,
|
|
57
|
+
},
|
|
58
|
+
disabled: {
|
|
59
|
+
type: 'boolean',
|
|
60
|
+
category: 'State',
|
|
61
|
+
label: 'Disabled',
|
|
62
|
+
default: false,
|
|
63
|
+
},
|
|
64
|
+
compact: {
|
|
65
|
+
type: 'boolean',
|
|
66
|
+
category: 'Layout',
|
|
67
|
+
label: 'Compact',
|
|
68
|
+
default: false,
|
|
69
|
+
},
|
|
70
|
+
},
|
|
71
|
+
};
|
|
72
|
+
//# sourceMappingURL=meta.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"meta.js","sourceRoot":"","sources":["../../../src/patterns/chat-list-item/meta.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,IAAI,EAAE,cAAc;IACpB,QAAQ,EAAE,SAAS;IACnB,WAAW,EACT,yFAAyF;IAC3F,kBAAkB,EAAE,IAAI;IACxB,eAAe,EAAE,EAAE;IACnB,SAAS,EAAE;QACT,KAAK,EAAE,gBAAgB;QACvB,IAAI,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE;QACpC,YAAY,EAAE;YACZ,KAAK,EAAE,cAAc;YACrB,OAAO,EAAE,sCAAsC;YAC/C,SAAS,EAAE,IAAI;YACf,MAAM,EAAE;gBACN,IAAI,EAAE,cAAc;aACrB;SACF;KACF;IACD,KAAK,EAAE;QACL,KAAK,EAAE;YACL,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,SAAS;YACnB,KAAK,EAAE,OAAO;YACd,OAAO,EAAE,cAAc;SACxB;QACD,OAAO,EAAE;YACP,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,SAAS;YACnB,KAAK,EAAE,SAAS;SACjB;QACD,IAAI,EAAE;YACJ,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,SAAS;YACnB,KAAK,EAAE,MAAM;SACd;QACD,SAAS,EAAE;YACT,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,SAAS;YACnB,KAAK,EAAE,WAAW;SACnB;QACD,MAAM,EAAE;YACN,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,QAAQ;YACf,OAAO,EAAE,KAAK;SACf;QACD,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,cAAc;SACtB;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,UAAU;YACjB,OAAO,EAAE,KAAK;SACf;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,UAAU;YACjB,OAAO,EAAE,KAAK;SACf;QACD,OAAO,EAAE;YACP,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,QAAQ;YAClB,KAAK,EAAE,SAAS;YAChB,OAAO,EAAE,KAAK;SACf;KACF;CACmC,CAAC","sourcesContent":["import type { ZoraComponentMeta } from '../../metadata';\n\nexport const chatListItemMeta = {\n name: 'ChatListItem',\n category: 'pattern',\n description:\n 'Conversation preview row with avatar, title, preview text, timestamp, and unread state.',\n directManifestNode: true,\n allowedChildren: [],\n blueprint: {\n label: 'Chat list item',\n icon: { name: 'chatbubble-outline' },\n defaultProps: {\n title: 'Ada Lovelace',\n preview: 'Can you review the latest UI update?',\n timestamp: '2m',\n avatar: {\n name: 'Ada Lovelace',\n },\n },\n },\n props: {\n title: {\n type: 'string',\n category: 'Content',\n label: 'Title',\n default: 'Ada Lovelace',\n },\n preview: {\n type: 'string',\n category: 'Content',\n label: 'Preview',\n },\n meta: {\n type: 'string',\n category: 'Content',\n label: 'Meta',\n },\n timestamp: {\n type: 'string',\n category: 'Content',\n label: 'Timestamp',\n },\n unread: {\n type: 'boolean',\n category: 'State',\n label: 'Unread',\n default: false,\n },\n unreadCount: {\n type: 'string',\n category: 'State',\n label: 'Unread count',\n },\n selected: {\n type: 'boolean',\n category: 'State',\n label: 'Selected',\n default: false,\n },\n disabled: {\n type: 'boolean',\n category: 'State',\n label: 'Disabled',\n default: false,\n },\n compact: {\n type: 'boolean',\n category: 'Layout',\n label: 'Compact',\n default: false,\n },\n },\n} as const satisfies ZoraComponentMeta;\n"]}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type React from 'react';
|
|
2
|
+
import type { ImageSourcePropType } from 'react-native';
|
|
3
|
+
import type { AvatarShape, AvatarSize } from '../../components/avatar';
|
|
4
|
+
import type { ZoraTone } from '../../internal/recipes';
|
|
5
|
+
import type { ZoraBaseProps } from '../../theme/ZoraBaseProps';
|
|
6
|
+
export interface ChatListAvatar {
|
|
7
|
+
source?: ImageSourcePropType;
|
|
8
|
+
name?: string;
|
|
9
|
+
initials?: string;
|
|
10
|
+
label?: string;
|
|
11
|
+
size?: AvatarSize;
|
|
12
|
+
shape?: AvatarShape;
|
|
13
|
+
tone?: ZoraTone;
|
|
14
|
+
}
|
|
15
|
+
export interface ChatListItemProps extends ZoraBaseProps {
|
|
16
|
+
title: React.ReactNode;
|
|
17
|
+
preview?: React.ReactNode;
|
|
18
|
+
meta?: React.ReactNode;
|
|
19
|
+
timestamp?: React.ReactNode;
|
|
20
|
+
avatar?: ChatListAvatar;
|
|
21
|
+
leading?: React.ReactNode;
|
|
22
|
+
trailing?: React.ReactNode;
|
|
23
|
+
unread?: boolean;
|
|
24
|
+
unreadCount?: React.ReactNode;
|
|
25
|
+
selected?: boolean;
|
|
26
|
+
disabled?: boolean;
|
|
27
|
+
compact?: boolean;
|
|
28
|
+
accessibilityLabel?: string;
|
|
29
|
+
onPress?: () => void;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/patterns/chat-list-item/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAExD,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE/D,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,IAAI,CAAC,EAAE,QAAQ,CAAC;CACjB;AAED,MAAM,WAAW,iBAAkB,SAAQ,aAAa;IACtD,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/patterns/chat-list-item/types.ts"],"names":[],"mappings":"","sourcesContent":["import type React from 'react';\nimport type { ImageSourcePropType } from 'react-native';\n\nimport type { AvatarShape, AvatarSize } from '../../components/avatar';\nimport type { ZoraTone } from '../../internal/recipes';\nimport type { ZoraBaseProps } from '../../theme/ZoraBaseProps';\n\nexport interface ChatListAvatar {\n source?: ImageSourcePropType;\n name?: string;\n initials?: string;\n label?: string;\n size?: AvatarSize;\n shape?: AvatarShape;\n tone?: ZoraTone;\n}\n\nexport interface ChatListItemProps extends ZoraBaseProps {\n title: React.ReactNode;\n preview?: React.ReactNode;\n meta?: React.ReactNode;\n timestamp?: React.ReactNode;\n avatar?: ChatListAvatar;\n leading?: React.ReactNode;\n trailing?: React.ReactNode;\n unread?: boolean;\n unreadCount?: React.ReactNode;\n selected?: boolean;\n disabled?: boolean;\n compact?: boolean;\n accessibilityLabel?: string;\n onPress?: () => void;\n}\n"]}
|
|
@@ -2,7 +2,7 @@ export declare const noticeMeta: {
|
|
|
2
2
|
readonly name: "Notice";
|
|
3
3
|
readonly category: "pattern";
|
|
4
4
|
readonly directManifestNode: true;
|
|
5
|
-
readonly allowedChildren: readonly ["Box", "Stack", "Grid", "Container", "Divider", "Text", "Heading", "Button", "Input", "Textarea", "FormField", "Card", "Panel", "Notice", "EmptyState", "SectionHeader", "SettingsRow"];
|
|
5
|
+
readonly allowedChildren: readonly ["Box", "Stack", "Grid", "Container", "Divider", "Text", "Heading", "Button", "Input", "Textarea", "FormField", "Card", "Panel", "Notice", "EmptyState", "SectionHeader", "SettingsRow", "PostCard", "ChatListItem"];
|
|
6
6
|
readonly blueprint: {
|
|
7
7
|
readonly label: "Notice";
|
|
8
8
|
readonly defaultProps: {
|
|
@@ -2,7 +2,7 @@ export declare const panelMeta: {
|
|
|
2
2
|
readonly name: "Panel";
|
|
3
3
|
readonly category: "pattern";
|
|
4
4
|
readonly directManifestNode: true;
|
|
5
|
-
readonly allowedChildren: readonly ["Box", "Stack", "Grid", "Container", "Divider", "Text", "Heading", "Button", "Input", "Textarea", "FormField", "Card", "Panel", "Notice", "EmptyState", "SectionHeader", "SettingsRow"];
|
|
5
|
+
readonly allowedChildren: readonly ["Box", "Stack", "Grid", "Container", "Divider", "Text", "Heading", "Button", "Input", "Textarea", "FormField", "Card", "Panel", "Notice", "EmptyState", "SectionHeader", "SettingsRow", "PostCard", "ChatListItem"];
|
|
6
6
|
readonly blueprint: {
|
|
7
7
|
readonly label: "Panel";
|
|
8
8
|
readonly defaultProps: {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PostCard.d.ts","sourceRoot":"","sources":["../../../src/patterns/post-card/PostCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAU1B,OAAO,KAAK,EAIV,aAAa,EAEd,MAAM,SAAS,CAAC;AAyNjB,eAAO,MAAM,QAAQ,qDAAoC,CAAC"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Image as ReactNativeImage } from 'react-native';
|
|
3
|
+
import { Avatar } from '../../components/avatar';
|
|
4
|
+
import { Button } from '../../components/button';
|
|
5
|
+
import { Card } from '../../components/card';
|
|
6
|
+
import { Text } from '../../components/text';
|
|
7
|
+
import { Box, Divider, Inline, Stack } from '../../foundation';
|
|
8
|
+
import { useZoraTheme } from '../../theme/useZoraTheme';
|
|
9
|
+
import { withZoraThemeScope } from '../../theme/withZoraThemeScope';
|
|
10
|
+
function resolveAuthorName(author) {
|
|
11
|
+
return typeof author.name === 'string' ? author.name : author.avatar?.name;
|
|
12
|
+
}
|
|
13
|
+
function resolveMediaAspectRatio(aspectRatio) {
|
|
14
|
+
if (aspectRatio === undefined || !Number.isFinite(aspectRatio) || aspectRatio <= 0) {
|
|
15
|
+
return 16 / 9;
|
|
16
|
+
}
|
|
17
|
+
return aspectRatio;
|
|
18
|
+
}
|
|
19
|
+
function isPostCardMediaList(media) {
|
|
20
|
+
return Array.isArray(media);
|
|
21
|
+
}
|
|
22
|
+
function normalizeMedia(media) {
|
|
23
|
+
if (!media) {
|
|
24
|
+
return [];
|
|
25
|
+
}
|
|
26
|
+
if (isPostCardMediaList(media)) {
|
|
27
|
+
return media;
|
|
28
|
+
}
|
|
29
|
+
return [media];
|
|
30
|
+
}
|
|
31
|
+
function PostCardAuthor({ author, compact = false }) {
|
|
32
|
+
const avatarName = resolveAuthorName(author);
|
|
33
|
+
const { avatar } = author;
|
|
34
|
+
return (<Inline align="center" gap="s" wrap="nowrap">
|
|
35
|
+
<Avatar initials={avatar?.initials} label={avatar?.label ?? avatarName} name={avatarName} shape={avatar?.shape} size={avatar?.size ?? (compact ? 's' : 'm')} source={avatar?.source} tone={avatar?.tone}/>
|
|
36
|
+
<Box flex={1}>
|
|
37
|
+
<Stack gap="xxs">
|
|
38
|
+
<Text variant="bodySmall" weight="semiBold">
|
|
39
|
+
{author.name}
|
|
40
|
+
</Text>
|
|
41
|
+
{author.subtitle ? (<Text tone="muted" variant="caption">
|
|
42
|
+
{author.subtitle}
|
|
43
|
+
</Text>) : null}
|
|
44
|
+
</Stack>
|
|
45
|
+
</Box>
|
|
46
|
+
</Inline>);
|
|
47
|
+
}
|
|
48
|
+
function PostCardMediaItem({ media }) {
|
|
49
|
+
const { theme } = useZoraTheme();
|
|
50
|
+
const aspectRatio = resolveMediaAspectRatio(media.aspectRatio);
|
|
51
|
+
if (!('source' in media)) {
|
|
52
|
+
return (<Box radius="m" style={{ overflow: 'hidden' }}>
|
|
53
|
+
{media.children}
|
|
54
|
+
</Box>);
|
|
55
|
+
}
|
|
56
|
+
return (<Box bg={theme.semantics.neutral.surface} radius="m" style={{ overflow: 'hidden' }}>
|
|
57
|
+
<Box style={{ aspectRatio, width: '100%' }}>
|
|
58
|
+
<ReactNativeImage accessibilityLabel={media.label} source={media.source} style={{ height: '100%', width: '100%' }}/>
|
|
59
|
+
</Box>
|
|
60
|
+
</Box>);
|
|
61
|
+
}
|
|
62
|
+
function PostActionLabel({ action }) {
|
|
63
|
+
if (!action.count) {
|
|
64
|
+
return <>{action.label}</>;
|
|
65
|
+
}
|
|
66
|
+
return (<>
|
|
67
|
+
{action.label} {action.count}
|
|
68
|
+
</>);
|
|
69
|
+
}
|
|
70
|
+
function PostCardActions({ actions }) {
|
|
71
|
+
if (actions.length === 0) {
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
return (<Inline align="center" gap="s" wrap="wrap">
|
|
75
|
+
{actions.map((action) => (<Button key={action.id} disabled={action.disabled} emphasis={action.selected ? 'soft' : 'ghost'} leadingIcon={action.icon} onPress={action.onPress} size="s" tone={action.selected ? 'primary' : 'neutral'}>
|
|
76
|
+
<PostActionLabel action={action}/>
|
|
77
|
+
</Button>))}
|
|
78
|
+
</Inline>);
|
|
79
|
+
}
|
|
80
|
+
function PostCommentPreviewItem({ comment }) {
|
|
81
|
+
return (<Inline align="flex-start" gap="s" wrap="nowrap">
|
|
82
|
+
{comment.author ? <PostCardAuthor author={comment.author} compact/> : null}
|
|
83
|
+
<Box flex={1}>
|
|
84
|
+
<Stack gap="xxs">
|
|
85
|
+
<Text variant="bodySmall">{comment.text}</Text>
|
|
86
|
+
{comment.meta ? (<Text tone="subtle" variant="caption">
|
|
87
|
+
{comment.meta}
|
|
88
|
+
</Text>) : null}
|
|
89
|
+
{comment.action ? <Box>{comment.action}</Box> : null}
|
|
90
|
+
</Stack>
|
|
91
|
+
</Box>
|
|
92
|
+
</Inline>);
|
|
93
|
+
}
|
|
94
|
+
function PostCardComments({ comments }) {
|
|
95
|
+
if (comments.length === 0) {
|
|
96
|
+
return null;
|
|
97
|
+
}
|
|
98
|
+
return (<Stack gap="s">
|
|
99
|
+
{comments.map((comment) => (<PostCommentPreviewItem key={comment.id} comment={comment}/>))}
|
|
100
|
+
</Stack>);
|
|
101
|
+
}
|
|
102
|
+
function PostCardInner({ themeId: _themeId, mode: _mode, testID, author, text, children, media, actions = [], comments = [], headerAction, footer, tone = 'default', compact = false, onPress, }) {
|
|
103
|
+
const mediaItems = normalizeMedia(media);
|
|
104
|
+
const gap = compact ? 's' : 'm';
|
|
105
|
+
const isInteractive = Boolean(onPress) && !headerAction;
|
|
106
|
+
const hasBody = text != null || children != null || mediaItems.length > 0;
|
|
107
|
+
const hasEngagement = actions.length > 0 || comments.length > 0;
|
|
108
|
+
return (<Card compact={compact} onPress={isInteractive ? onPress : undefined} testID={testID} tone={tone}>
|
|
109
|
+
<Stack gap={gap}>
|
|
110
|
+
<Inline align="center" gap="m" justify="space-between" wrap="nowrap">
|
|
111
|
+
<Box flex={1}>
|
|
112
|
+
<PostCardAuthor author={author} compact={compact}/>
|
|
113
|
+
</Box>
|
|
114
|
+
{headerAction ? <Box>{headerAction}</Box> : null}
|
|
115
|
+
</Inline>
|
|
116
|
+
|
|
117
|
+
{hasBody ? (<Stack gap={gap}>
|
|
118
|
+
{text ? <Text variant="body">{text}</Text> : null}
|
|
119
|
+
{children ? <Box>{children}</Box> : null}
|
|
120
|
+
{mediaItems.length > 0 ? (<Stack gap="s">
|
|
121
|
+
{mediaItems.map((item, index) => (<PostCardMediaItem key={`${index}`} media={item}/>))}
|
|
122
|
+
</Stack>) : null}
|
|
123
|
+
</Stack>) : null}
|
|
124
|
+
|
|
125
|
+
{hasEngagement ? <Divider /> : null}
|
|
126
|
+
<PostCardActions actions={actions}/>
|
|
127
|
+
<PostCardComments comments={comments}/>
|
|
128
|
+
{footer ? <Box pt="xs">{footer}</Box> : null}
|
|
129
|
+
</Stack>
|
|
130
|
+
</Card>);
|
|
131
|
+
}
|
|
132
|
+
export const PostCard = withZoraThemeScope(PostCardInner);
|
|
133
|
+
//# sourceMappingURL=PostCard.js.map
|