@ankhorage/zora 6.0.0 → 7.0.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.
- package/CHANGELOG.md +6 -0
- package/README.md +2 -1
- package/dist/components/image/Image.d.ts +1 -5
- package/dist/components/image/Image.d.ts.map +1 -1
- package/dist/components/image/Image.js +79 -8
- package/dist/components/image/Image.js.map +1 -1
- package/dist/components/image/types.d.ts +4 -2
- package/dist/components/image/types.d.ts.map +1 -1
- package/dist/components/image/types.js.map +1 -1
- package/dist/features/uploader/adapters/inbound/Uploader.d.ts +5 -0
- package/dist/features/uploader/adapters/inbound/Uploader.d.ts.map +1 -0
- package/dist/features/uploader/adapters/inbound/Uploader.js +274 -0
- package/dist/features/uploader/adapters/inbound/Uploader.js.map +1 -0
- package/dist/features/uploader/adapters/outbound/pickDocumentOrFileAsync.d.ts +5 -0
- package/dist/features/uploader/adapters/outbound/pickDocumentOrFileAsync.d.ts.map +1 -0
- package/dist/features/uploader/adapters/outbound/pickDocumentOrFileAsync.js +38 -0
- package/dist/features/uploader/adapters/outbound/pickDocumentOrFileAsync.js.map +1 -0
- package/dist/features/uploader/adapters/outbound/pickImageOrVideoAsync.d.ts +5 -0
- package/dist/features/uploader/adapters/outbound/pickImageOrVideoAsync.d.ts.map +1 -0
- package/dist/features/uploader/adapters/outbound/pickImageOrVideoAsync.js +24 -0
- package/dist/features/uploader/adapters/outbound/pickImageOrVideoAsync.js.map +1 -0
- package/dist/features/uploader/application/ports/outbound/UploadPickerPort.d.ts +9 -0
- package/dist/features/uploader/application/ports/outbound/UploadPickerPort.d.ts.map +1 -0
- package/dist/features/uploader/application/ports/outbound/UploadPickerPort.js +2 -0
- package/dist/features/uploader/application/ports/outbound/UploadPickerPort.js.map +1 -0
- package/dist/features/uploader/application/use-cases/pickUploadAssetAsync.d.ts +5 -0
- package/dist/features/uploader/application/use-cases/pickUploadAssetAsync.d.ts.map +1 -0
- package/dist/features/uploader/application/use-cases/pickUploadAssetAsync.js +6 -0
- package/dist/features/uploader/application/use-cases/pickUploadAssetAsync.js.map +1 -0
- package/dist/features/uploader/application/use-cases/validateUploadAsset.d.ts +4 -0
- package/dist/features/uploader/application/use-cases/validateUploadAsset.d.ts.map +1 -0
- package/dist/features/uploader/application/use-cases/validateUploadAsset.js +77 -0
- package/dist/features/uploader/application/use-cases/validateUploadAsset.js.map +1 -0
- package/dist/features/uploader/composition/createUploadPicker.d.ts +4 -0
- package/dist/features/uploader/composition/createUploadPicker.d.ts.map +1 -0
- package/dist/features/uploader/composition/createUploadPicker.js +12 -0
- package/dist/features/uploader/composition/createUploadPicker.js.map +1 -0
- package/dist/features/uploader/meta.d.ts +10 -0
- package/dist/features/uploader/meta.d.ts.map +1 -0
- package/dist/features/uploader/meta.js +10 -0
- package/dist/features/uploader/meta.js.map +1 -0
- package/dist/features/uploader/public.d.ts +4 -0
- package/dist/features/uploader/public.d.ts.map +1 -0
- package/dist/features/uploader/public.js +3 -0
- package/dist/features/uploader/public.js.map +1 -0
- package/dist/index.d.ts +2 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -2
- package/dist/index.js.map +1 -1
- package/dist/metadata/componentMeta.d.ts.map +1 -1
- package/dist/metadata/componentMeta.js +2 -4
- package/dist/metadata/componentMeta.js.map +1 -1
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +2 -4
- package/dist/registry.js.map +1 -1
- package/dist/types/upload.d.ts +53 -0
- package/dist/types/upload.d.ts.map +1 -0
- package/dist/types/upload.js +2 -0
- package/dist/types/upload.js.map +1 -0
- package/package.json +11 -2
- package/src/components/image/Image.tsx +136 -8
- package/src/components/image/types.ts +6 -2
- package/src/features/uploader/adapters/inbound/Uploader.tsx +403 -0
- package/src/features/uploader/adapters/outbound/pickDocumentOrFileAsync.ts +50 -0
- package/src/features/uploader/adapters/outbound/pickImageOrVideoAsync.ts +30 -0
- package/src/features/uploader/application/ports/outbound/UploadPickerPort.ts +10 -0
- package/src/features/uploader/application/use-cases/pickUploadAssetAsync.test.ts +48 -0
- package/src/features/uploader/application/use-cases/pickUploadAssetAsync.ts +14 -0
- package/src/features/uploader/application/use-cases/validateUploadAsset.test.ts +51 -0
- package/src/features/uploader/application/use-cases/validateUploadAsset.ts +111 -0
- package/src/features/uploader/composition/createUploadPicker.ts +14 -0
- package/src/features/uploader/meta.ts +11 -0
- package/src/features/uploader/public.test.ts +34 -0
- package/src/features/uploader/public.ts +10 -0
- package/src/index.ts +9 -12
- package/src/metadata/componentMeta.ts +2 -4
- package/src/registry.test.ts +1 -1
- package/src/registry.ts +2 -4
- package/src/showcaseCoverage.test.ts +1 -2
- package/src/types/upload.ts +62 -0
- package/dist/patterns/image-preview/ImagePreview.d.ts +0 -9
- package/dist/patterns/image-preview/ImagePreview.d.ts.map +0 -1
- package/dist/patterns/image-preview/ImagePreview.js +0 -46
- package/dist/patterns/image-preview/ImagePreview.js.map +0 -1
- package/dist/patterns/image-preview/index.d.ts +0 -3
- package/dist/patterns/image-preview/index.d.ts.map +0 -1
- package/dist/patterns/image-preview/index.js +0 -2
- package/dist/patterns/image-preview/index.js.map +0 -1
- package/dist/patterns/image-preview/meta.d.ts +0 -9
- package/dist/patterns/image-preview/meta.d.ts.map +0 -1
- package/dist/patterns/image-preview/meta.js +0 -9
- package/dist/patterns/image-preview/meta.js.map +0 -1
- package/dist/patterns/image-preview/types.d.ts +0 -36
- package/dist/patterns/image-preview/types.d.ts.map +0 -1
- package/dist/patterns/image-preview/types.js +0 -2
- package/dist/patterns/image-preview/types.js.map +0 -1
- package/dist/patterns/image-upload-field/ImageUploadField.d.ts +0 -9
- package/dist/patterns/image-upload-field/ImageUploadField.d.ts.map +0 -1
- package/dist/patterns/image-upload-field/ImageUploadField.js +0 -222
- package/dist/patterns/image-upload-field/ImageUploadField.js.map +0 -1
- package/dist/patterns/image-upload-field/index.d.ts +0 -3
- package/dist/patterns/image-upload-field/index.d.ts.map +0 -1
- package/dist/patterns/image-upload-field/index.js +0 -2
- package/dist/patterns/image-upload-field/index.js.map +0 -1
- package/dist/patterns/image-upload-field/meta.d.ts +0 -9
- package/dist/patterns/image-upload-field/meta.d.ts.map +0 -1
- package/dist/patterns/image-upload-field/meta.js +0 -9
- package/dist/patterns/image-upload-field/meta.js.map +0 -1
- package/dist/patterns/image-upload-field/types.d.ts +0 -35
- package/dist/patterns/image-upload-field/types.d.ts.map +0 -1
- package/dist/patterns/image-upload-field/types.js +0 -2
- package/dist/patterns/image-upload-field/types.js.map +0 -1
- package/dist/patterns/image-upload-field/uploadFlow.d.ts +0 -18
- package/dist/patterns/image-upload-field/uploadFlow.d.ts.map +0 -1
- package/dist/patterns/image-upload-field/uploadFlow.js +0 -106
- package/dist/patterns/image-upload-field/uploadFlow.js.map +0 -1
- package/src/patterns/image-preview/ImagePreview.tsx +0 -82
- package/src/patterns/image-preview/index.ts +0 -2
- package/src/patterns/image-preview/meta.ts +0 -10
- package/src/patterns/image-preview/types.ts +0 -41
- package/src/patterns/image-upload-field/ImageUploadField.tsx +0 -319
- package/src/patterns/image-upload-field/index.ts +0 -2
- package/src/patterns/image-upload-field/meta.ts +0 -10
- package/src/patterns/image-upload-field/types.ts +0 -41
- package/src/patterns/image-upload-field/uploadFlow.test.ts +0 -117
- package/src/patterns/image-upload-field/uploadFlow.ts +0 -145
package/dist/registry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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","sourcesContent":["import type { InteractionPolicyProps } from '@ankhorage/surface';\nimport type React from 'react';\n\nimport { AppBar } from './components/app-bar';\nimport { Avatar } from './components/avatar';\nimport { AvatarGroup } from './components/avatar-group';\nimport { Badge } from './components/badge';\nimport { Breadcrumbs } from './components/breadcrumbs';\nimport { Button } from './components/button';\nimport { ButtonGroup } from './components/button-group';\nimport { Card } from './components/card';\nimport { Checkbox, CheckboxGroup } from './components/checkbox';\nimport { Chip } from './components/chip';\nimport { ChipGroup } from './components/chip-group';\nimport { DataTable } from './components/data-table';\nimport { DatePicker } from './components/date-picker';\nimport { Form, FormActions, FormError, FormField } from './components/form';\nimport { Gradient } from './components/gradient';\nimport { Heading } from './components/heading';\nimport { Icon } from './components/icon';\nimport { IconButton } from './components/icon-button';\nimport { Image } from './components/image';\nimport { Input } from './components/input';\nimport { MediaCard } from './components/media-card';\nimport { DropdownMenu, Menu } from './components/menu';\nimport { MetricCard } from './components/metric-card';\nimport { Modal } from './components/modal';\nimport { Pagination } from './components/pagination';\nimport { Progress, ProgressRing } from './components/progress';\nimport { Radio, RadioGroup } from './components/radio';\nimport { Rating } from './components/rating';\nimport { SearchBar } from './components/search-bar';\nimport { Select } from './components/select';\nimport { Skeleton, SkeletonCard, SkeletonList, SkeletonText } from './components/skeleton';\nimport { SplashScreen } from './components/splash-screen';\nimport { Tabs } from './components/tabs';\nimport { Text } from './components/text';\nimport { Textarea } from './components/textarea';\nimport { TimePicker } from './components/time-picker';\nimport { Toast } from './components/toast';\nimport { Toolbar, ToolbarAction } from './components/toolbar';\nimport {\n Box,\n Center,\n Container,\n Divider,\n Grid,\n Inline,\n Show,\n Spacer,\n Stack,\n Surface,\n} from './foundation';\nimport { AppShell } from './layout/app-shell';\nimport { Screen } from './layout/screen';\nimport { ScreenSection } from './layout/screen-section';\nimport { SettingsLayout } from './layout/settings-layout';\nimport { SidebarLayout } from './layout/sidebar-layout';\nimport { TopbarLayout } from './layout/topbar-layout';\nimport {\n ForgotPasswordForm,\n OAuthProviderButton,\n OAuthProviderList,\n OtpForm,\n SignInForm,\n SignUpForm,\n} from './patterns/auth';\nimport { ChatListItem } from './patterns/chat-list-item';\nimport { CollectionEditor } from './patterns/collection-editor';\nimport { ConfirmDialog } from './patterns/confirm-dialog';\nimport { ContentRail } from './patterns/content-rail';\nimport { DisclosureSection } from './patterns/disclosure-section';\nimport { EmptyState } from './patterns/empty-state';\nimport { FilterBar } from './patterns/filter-bar';\nimport { Hero } from './patterns/hero';\nimport { ImagePreview } from './patterns/image-preview';\nimport { ImageUploadField } from './patterns/image-upload-field';\nimport { InspectorField } from './patterns/inspector-field';\nimport { List, ListRow, ListSection } from './patterns/list';\nimport { MessageBubble } from './patterns/message-bubble';\nimport { MissingElement } from './patterns/missing-element';\nimport { Notice } from './patterns/notice';\nimport { Panel } from './patterns/panel';\nimport { PostCard } from './patterns/post-card';\nimport { ProductCard } from './patterns/product-card';\nimport { ReaderSurface } from './patterns/reader';\nimport { BarcodeScannerView, CameraPermissionView, ScanOverlay } from './patterns/scanner';\nimport { SectionHeader } from './patterns/section-header';\nimport { SelectableItem } from './patterns/selection';\nimport { SettingsRow } from './patterns/settings-row';\nimport { SwitchField } from './patterns/switch-field';\nimport { ThemeComposer } from './patterns/theme-composer';\nimport { PaletteItem, TileGrid } from './patterns/tile-grid';\nimport { Timeline } from './patterns/timeline';\nimport { TreeItem, TreeView } from './patterns/tree-view';\nimport { ThemeModeToggle } from './theme/ThemeModeToggle';\n\nexport type ZoraComponentRegistry = Readonly<Record<string, React.ElementType>>;\n\ntype ComponentPropsFor<K extends keyof typeof _ZORA_COMPONENT_REGISTRY> = React.ComponentProps<\n (typeof _ZORA_COMPONENT_REGISTRY)[K]\n>;\n\ntype AcceptsSurfaceInteractionPolicyProps<P> = 'interactionPolicy' extends keyof P\n ? InteractionPolicyProps extends Pick<P, 'interactionPolicy'>\n ? Pick<P, 'interactionPolicy'> extends InteractionPolicyProps\n ? true\n : false\n : false\n : false;\n\ntype RegistryInteractionPolicyContract = {\n [K in keyof typeof _ZORA_COMPONENT_REGISTRY]: AcceptsSurfaceInteractionPolicyProps<\n ComponentPropsFor<K>\n >;\n};\n\ntype _AssertTrue<T extends true> = T;\ntype _RegistryInteractionPolicyCheck = _AssertTrue<\n RegistryInteractionPolicyContract[keyof typeof _ZORA_COMPONENT_REGISTRY]\n>;\n\nconst _ZORA_COMPONENT_REGISTRY = {\n AppBar,\n Avatar,\n AvatarGroup,\n Badge,\n Breadcrumbs,\n Button,\n ButtonGroup,\n Card,\n Checkbox,\n CheckboxGroup,\n Chip,\n ChipGroup,\n DataTable,\n DatePicker,\n DropdownMenu,\n Form,\n FormActions,\n FormError,\n FormField,\n Gradient,\n Heading,\n Icon,\n IconButton,\n Image,\n Input,\n MediaCard,\n Menu,\n MetricCard,\n Modal,\n Pagination,\n Progress,\n ProgressRing,\n Radio,\n RadioGroup,\n Rating,\n SearchBar,\n Select,\n Skeleton,\n SkeletonCard,\n SkeletonList,\n SkeletonText,\n SplashScreen,\n Tabs,\n Text,\n Textarea,\n TimePicker,\n Toast,\n Toolbar,\n ToolbarAction,\n ThemeModeToggle,\n Box,\n Center,\n Container,\n Divider,\n Grid,\n Inline,\n Show,\n Spacer,\n Stack,\n Surface,\n AppShell,\n Screen,\n ScreenSection,\n SettingsLayout,\n SidebarLayout,\n TopbarLayout,\n ForgotPasswordForm,\n OAuthProviderButton,\n OAuthProviderList,\n OtpForm,\n SignInForm,\n SignUpForm,\n ChatListItem,\n CollectionEditor,\n ConfirmDialog,\n ContentRail,\n DisclosureSection,\n EmptyState,\n FilterBar,\n Hero,\n ImagePreview,\n ImageUploadField,\n InspectorField,\n List,\n ListRow,\n ListSection,\n MessageBubble,\n MissingElement,\n Notice,\n Panel,\n PostCard,\n ProductCard,\n ReaderSurface,\n BarcodeScannerView,\n CameraPermissionView,\n ScanOverlay,\n SectionHeader,\n SelectableItem,\n SettingsRow,\n SwitchField,\n ThemeComposer,\n PaletteItem,\n TileGrid,\n Timeline,\n TreeItem,\n TreeView,\n} as const satisfies ZoraComponentRegistry;\n\nexport const ZORA_COMPONENT_REGISTRY: ZoraComponentRegistry = _ZORA_COMPONENT_REGISTRY;\n"]}
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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","sourcesContent":["import type { InteractionPolicyProps } from '@ankhorage/surface';\nimport type React from 'react';\n\nimport { AppBar } from './components/app-bar';\nimport { Avatar } from './components/avatar';\nimport { AvatarGroup } from './components/avatar-group';\nimport { Badge } from './components/badge';\nimport { Breadcrumbs } from './components/breadcrumbs';\nimport { Button } from './components/button';\nimport { ButtonGroup } from './components/button-group';\nimport { Card } from './components/card';\nimport { Checkbox, CheckboxGroup } from './components/checkbox';\nimport { Chip } from './components/chip';\nimport { ChipGroup } from './components/chip-group';\nimport { DataTable } from './components/data-table';\nimport { DatePicker } from './components/date-picker';\nimport { Form, FormActions, FormError, FormField } from './components/form';\nimport { Gradient } from './components/gradient';\nimport { Heading } from './components/heading';\nimport { Icon } from './components/icon';\nimport { IconButton } from './components/icon-button';\nimport { Image } from './components/image';\nimport { Input } from './components/input';\nimport { MediaCard } from './components/media-card';\nimport { DropdownMenu, Menu } from './components/menu';\nimport { MetricCard } from './components/metric-card';\nimport { Modal } from './components/modal';\nimport { Pagination } from './components/pagination';\nimport { Progress, ProgressRing } from './components/progress';\nimport { Radio, RadioGroup } from './components/radio';\nimport { Rating } from './components/rating';\nimport { SearchBar } from './components/search-bar';\nimport { Select } from './components/select';\nimport { Skeleton, SkeletonCard, SkeletonList, SkeletonText } from './components/skeleton';\nimport { SplashScreen } from './components/splash-screen';\nimport { Tabs } from './components/tabs';\nimport { Text } from './components/text';\nimport { Textarea } from './components/textarea';\nimport { TimePicker } from './components/time-picker';\nimport { Toast } from './components/toast';\nimport { Toolbar, ToolbarAction } from './components/toolbar';\nimport { Uploader } from './features/uploader/public';\nimport {\n Box,\n Center,\n Container,\n Divider,\n Grid,\n Inline,\n Show,\n Spacer,\n Stack,\n Surface,\n} from './foundation';\nimport { AppShell } from './layout/app-shell';\nimport { Screen } from './layout/screen';\nimport { ScreenSection } from './layout/screen-section';\nimport { SettingsLayout } from './layout/settings-layout';\nimport { SidebarLayout } from './layout/sidebar-layout';\nimport { TopbarLayout } from './layout/topbar-layout';\nimport {\n ForgotPasswordForm,\n OAuthProviderButton,\n OAuthProviderList,\n OtpForm,\n SignInForm,\n SignUpForm,\n} from './patterns/auth';\nimport { ChatListItem } from './patterns/chat-list-item';\nimport { CollectionEditor } from './patterns/collection-editor';\nimport { ConfirmDialog } from './patterns/confirm-dialog';\nimport { ContentRail } from './patterns/content-rail';\nimport { DisclosureSection } from './patterns/disclosure-section';\nimport { EmptyState } from './patterns/empty-state';\nimport { FilterBar } from './patterns/filter-bar';\nimport { Hero } from './patterns/hero';\nimport { InspectorField } from './patterns/inspector-field';\nimport { List, ListRow, ListSection } from './patterns/list';\nimport { MessageBubble } from './patterns/message-bubble';\nimport { MissingElement } from './patterns/missing-element';\nimport { Notice } from './patterns/notice';\nimport { Panel } from './patterns/panel';\nimport { PostCard } from './patterns/post-card';\nimport { ProductCard } from './patterns/product-card';\nimport { ReaderSurface } from './patterns/reader';\nimport { BarcodeScannerView, CameraPermissionView, ScanOverlay } from './patterns/scanner';\nimport { SectionHeader } from './patterns/section-header';\nimport { SelectableItem } from './patterns/selection';\nimport { SettingsRow } from './patterns/settings-row';\nimport { SwitchField } from './patterns/switch-field';\nimport { ThemeComposer } from './patterns/theme-composer';\nimport { PaletteItem, TileGrid } from './patterns/tile-grid';\nimport { Timeline } from './patterns/timeline';\nimport { TreeItem, TreeView } from './patterns/tree-view';\nimport { ThemeModeToggle } from './theme/ThemeModeToggle';\n\nexport type ZoraComponentRegistry = Readonly<Record<string, React.ElementType>>;\n\ntype ComponentPropsFor<K extends keyof typeof _ZORA_COMPONENT_REGISTRY> = React.ComponentProps<\n (typeof _ZORA_COMPONENT_REGISTRY)[K]\n>;\n\ntype AcceptsSurfaceInteractionPolicyProps<P> = 'interactionPolicy' extends keyof P\n ? InteractionPolicyProps extends Pick<P, 'interactionPolicy'>\n ? Pick<P, 'interactionPolicy'> extends InteractionPolicyProps\n ? true\n : false\n : false\n : false;\n\ntype RegistryInteractionPolicyContract = {\n [K in keyof typeof _ZORA_COMPONENT_REGISTRY]: AcceptsSurfaceInteractionPolicyProps<\n ComponentPropsFor<K>\n >;\n};\n\ntype _AssertTrue<T extends true> = T;\ntype _RegistryInteractionPolicyCheck = _AssertTrue<\n RegistryInteractionPolicyContract[keyof typeof _ZORA_COMPONENT_REGISTRY]\n>;\n\nconst _ZORA_COMPONENT_REGISTRY = {\n AppBar,\n Avatar,\n AvatarGroup,\n Badge,\n Breadcrumbs,\n Button,\n ButtonGroup,\n Card,\n Checkbox,\n CheckboxGroup,\n Chip,\n ChipGroup,\n DataTable,\n DatePicker,\n DropdownMenu,\n Form,\n FormActions,\n FormError,\n FormField,\n Gradient,\n Heading,\n Icon,\n IconButton,\n Image,\n Input,\n MediaCard,\n Menu,\n MetricCard,\n Modal,\n Pagination,\n Progress,\n ProgressRing,\n Radio,\n RadioGroup,\n Rating,\n SearchBar,\n Select,\n Skeleton,\n SkeletonCard,\n SkeletonList,\n SkeletonText,\n SplashScreen,\n Tabs,\n Text,\n Textarea,\n TimePicker,\n Toast,\n Toolbar,\n ToolbarAction,\n Uploader,\n ThemeModeToggle,\n Box,\n Center,\n Container,\n Divider,\n Grid,\n Inline,\n Show,\n Spacer,\n Stack,\n Surface,\n AppShell,\n Screen,\n ScreenSection,\n SettingsLayout,\n SidebarLayout,\n TopbarLayout,\n ForgotPasswordForm,\n OAuthProviderButton,\n OAuthProviderList,\n OtpForm,\n SignInForm,\n SignUpForm,\n ChatListItem,\n CollectionEditor,\n ConfirmDialog,\n ContentRail,\n DisclosureSection,\n EmptyState,\n FilterBar,\n Hero,\n InspectorField,\n List,\n ListRow,\n ListSection,\n MessageBubble,\n MissingElement,\n Notice,\n Panel,\n PostCard,\n ProductCard,\n ReaderSurface,\n BarcodeScannerView,\n CameraPermissionView,\n ScanOverlay,\n SectionHeader,\n SelectableItem,\n SettingsRow,\n SwitchField,\n ThemeComposer,\n PaletteItem,\n TileGrid,\n Timeline,\n TreeItem,\n TreeView,\n} as const satisfies ZoraComponentRegistry;\n\nexport const ZORA_COMPONENT_REGISTRY: ZoraComponentRegistry = _ZORA_COMPONENT_REGISTRY;\n"]}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type React from 'react';
|
|
2
|
+
import type { ZoraBaseProps } from '../theme/ZoraBaseProps';
|
|
3
|
+
export type UploadType = 'image' | 'video' | 'document' | 'file';
|
|
4
|
+
export interface UploadAssetBase {
|
|
5
|
+
fileName?: string;
|
|
6
|
+
sizeBytes?: number;
|
|
7
|
+
contentType?: string;
|
|
8
|
+
width?: number;
|
|
9
|
+
height?: number;
|
|
10
|
+
alt?: string;
|
|
11
|
+
createdAt?: string;
|
|
12
|
+
}
|
|
13
|
+
export type UploadAsset = (UploadAssetBase & {
|
|
14
|
+
kind: 'local';
|
|
15
|
+
uri: string;
|
|
16
|
+
}) | (UploadAssetBase & {
|
|
17
|
+
kind: 'url';
|
|
18
|
+
url: string;
|
|
19
|
+
}) | (UploadAssetBase & {
|
|
20
|
+
kind: 'storage';
|
|
21
|
+
storageId?: string;
|
|
22
|
+
bucket: string;
|
|
23
|
+
path: string;
|
|
24
|
+
publicUrl?: string;
|
|
25
|
+
});
|
|
26
|
+
export interface UploadProgressContext {
|
|
27
|
+
setProgress: (progress: number | null) => void;
|
|
28
|
+
}
|
|
29
|
+
export interface ValidateUploadAssetInput {
|
|
30
|
+
asset: UploadAsset;
|
|
31
|
+
accept?: string;
|
|
32
|
+
maxSizeBytes?: number;
|
|
33
|
+
validate?: (asset: UploadAsset) => string | undefined;
|
|
34
|
+
}
|
|
35
|
+
export interface UploaderProps extends ZoraBaseProps {
|
|
36
|
+
value: UploadAsset | null;
|
|
37
|
+
onChange: (next: UploadAsset | null) => void;
|
|
38
|
+
label: React.ReactNode;
|
|
39
|
+
description?: React.ReactNode;
|
|
40
|
+
helperText?: React.ReactNode;
|
|
41
|
+
errorText?: React.ReactNode;
|
|
42
|
+
type?: UploadType;
|
|
43
|
+
accept?: string;
|
|
44
|
+
maxSizeBytes?: number;
|
|
45
|
+
required?: boolean;
|
|
46
|
+
disabled?: boolean;
|
|
47
|
+
readOnly?: boolean;
|
|
48
|
+
validatePicked?: (asset: UploadAsset) => string | undefined;
|
|
49
|
+
onUpload?: (asset: UploadAsset, context: UploadProgressContext) => Promise<UploadAsset>;
|
|
50
|
+
onRemove?: (current: UploadAsset) => void | Promise<void>;
|
|
51
|
+
aspectRatio?: number;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=upload.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upload.d.ts","sourceRoot":"","sources":["../../src/types/upload.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE5D,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,OAAO,GAAG,UAAU,GAAG,MAAM,CAAC;AAEjE,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,WAAW,GACnB,CAAC,eAAe,GAAG;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb,CAAC,GACF,CAAC,eAAe,GAAG;IACjB,IAAI,EAAE,KAAK,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb,CAAC,GACF,CAAC,eAAe,GAAG;IACjB,IAAI,EAAE,SAAS,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC,CAAC;AAEP,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;CAChD;AAED,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,MAAM,GAAG,SAAS,CAAC;CACvD;AAED,MAAM,WAAW,aAAc,SAAQ,aAAa;IAClD,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC;IAC1B,QAAQ,EAAE,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,CAAC;IAC7C,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,MAAM,GAAG,SAAS,CAAC;IAC5D,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,qBAAqB,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;IACxF,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upload.js","sourceRoot":"","sources":["../../src/types/upload.ts"],"names":[],"mappings":"","sourcesContent":["import type React from 'react';\n\nimport type { ZoraBaseProps } from '../theme/ZoraBaseProps';\n\nexport type UploadType = 'image' | 'video' | 'document' | 'file';\n\nexport interface UploadAssetBase {\n fileName?: string;\n sizeBytes?: number;\n contentType?: string;\n width?: number;\n height?: number;\n alt?: string;\n createdAt?: string;\n}\n\nexport type UploadAsset =\n | (UploadAssetBase & {\n kind: 'local';\n uri: string;\n })\n | (UploadAssetBase & {\n kind: 'url';\n url: string;\n })\n | (UploadAssetBase & {\n kind: 'storage';\n storageId?: string;\n bucket: string;\n path: string;\n publicUrl?: string;\n });\n\nexport interface UploadProgressContext {\n setProgress: (progress: number | null) => void;\n}\n\nexport interface ValidateUploadAssetInput {\n asset: UploadAsset;\n accept?: string;\n maxSizeBytes?: number;\n validate?: (asset: UploadAsset) => string | undefined;\n}\n\nexport interface UploaderProps extends ZoraBaseProps {\n value: UploadAsset | null;\n onChange: (next: UploadAsset | null) => void;\n label: React.ReactNode;\n description?: React.ReactNode;\n helperText?: React.ReactNode;\n errorText?: React.ReactNode;\n type?: UploadType;\n accept?: string;\n maxSizeBytes?: number;\n required?: boolean;\n disabled?: boolean;\n readOnly?: boolean;\n validatePicked?: (asset: UploadAsset) => string | undefined;\n onUpload?: (asset: UploadAsset, context: UploadProgressContext) => Promise<UploadAsset>;\n onRemove?: (current: UploadAsset) => void | Promise<void>;\n aspectRatio?: number;\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ankhorage/zora",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "
|
|
4
|
+
"version": "7.0.0",
|
|
5
5
|
"description": "Opinionated React Native and React Native Web UI kit built on @ankhorage/surface.",
|
|
6
6
|
"homepage": "https://github.com/ankhorage/zora#readme",
|
|
7
7
|
"bugs": {
|
|
@@ -42,7 +42,9 @@
|
|
|
42
42
|
"dependencies": {
|
|
43
43
|
"@ankhorage/color-theory": "^0.3.0",
|
|
44
44
|
"@ankhorage/contracts": "^12.0.1",
|
|
45
|
-
"@ankhorage/surface": "^4.1.0"
|
|
45
|
+
"@ankhorage/surface": "^4.1.0",
|
|
46
|
+
"expo-document-picker": "~57.0.1",
|
|
47
|
+
"expo-image-picker": "~57.0.16"
|
|
46
48
|
},
|
|
47
49
|
"files": [
|
|
48
50
|
"dist",
|
|
@@ -67,6 +69,13 @@
|
|
|
67
69
|
"import": "./dist/features/bottom-sheet/public.js",
|
|
68
70
|
"default": "./dist/features/bottom-sheet/public.js"
|
|
69
71
|
},
|
|
72
|
+
"./uploader": {
|
|
73
|
+
"react-native": "./src/features/uploader/public.ts",
|
|
74
|
+
"browser": "./src/features/uploader/public.ts",
|
|
75
|
+
"types": "./dist/features/uploader/public.d.ts",
|
|
76
|
+
"import": "./dist/features/uploader/public.js",
|
|
77
|
+
"default": "./dist/features/uploader/public.js"
|
|
78
|
+
},
|
|
70
79
|
"./metadata": {
|
|
71
80
|
"react-native": "./src/metadata/index.ts",
|
|
72
81
|
"browser": "./src/metadata/index.ts",
|
|
@@ -1,21 +1,149 @@
|
|
|
1
|
-
import { Image as SurfaceImage } from '@ankhorage/surface';
|
|
1
|
+
import { Image as SurfaceImage, type SurfaceImageSource } from '@ankhorage/surface';
|
|
2
2
|
import React from 'react';
|
|
3
3
|
|
|
4
|
+
import { Box } from '../../foundation';
|
|
5
|
+
import { useZoraTheme } from '../../theme/useZoraTheme';
|
|
4
6
|
import { withZoraThemeScope } from '../../theme/withZoraThemeScope';
|
|
7
|
+
import type { UploadAsset } from '../../types/upload';
|
|
8
|
+
import { Icon } from '../icon';
|
|
5
9
|
import type { ImageProps } from './types';
|
|
6
10
|
|
|
11
|
+
/*** Displays an image asset and owns its missing, unrenderable, and failed presentation states. */
|
|
12
|
+
export const Image = withZoraThemeScope(ImageInner);
|
|
13
|
+
|
|
14
|
+
/*** Renders the resolved image source or the canonical ZORA image placeholder. */
|
|
7
15
|
function ImageInner({
|
|
8
16
|
themeId: _themeId,
|
|
9
17
|
mode: _mode,
|
|
10
18
|
interactionPolicy: _interactionPolicy,
|
|
19
|
+
source,
|
|
20
|
+
fallbackSource,
|
|
21
|
+
alt,
|
|
22
|
+
accessibilityLabel,
|
|
23
|
+
width,
|
|
24
|
+
height,
|
|
25
|
+
aspectRatio,
|
|
26
|
+
radius,
|
|
27
|
+
style,
|
|
28
|
+
testID,
|
|
29
|
+
onError,
|
|
11
30
|
...props
|
|
12
31
|
}: ImageProps) {
|
|
13
|
-
|
|
32
|
+
const { theme } = useZoraTheme();
|
|
33
|
+
const resolvedSource = resolveImageSource(source);
|
|
34
|
+
const sourceKey = resolveImageSourceKey(source);
|
|
35
|
+
const firstFailureKeyRef = React.useRef<string | null>(null);
|
|
36
|
+
const [failedSourceKey, setFailedSourceKey] = React.useState<string | null>(null);
|
|
37
|
+
const showPlaceholder = resolvedSource === null || failedSourceKey === sourceKey;
|
|
38
|
+
const resolvedAlt = alt ?? (isUploadAsset(source) ? source.alt : undefined);
|
|
39
|
+
const placeholderLabel = accessibilityLabel ?? resolvedAlt;
|
|
40
|
+
|
|
41
|
+
if (showPlaceholder) {
|
|
42
|
+
return (
|
|
43
|
+
<Box
|
|
44
|
+
accessibilityLabel={placeholderLabel}
|
|
45
|
+
accessibilityRole={placeholderLabel ? 'image' : undefined}
|
|
46
|
+
accessible={Boolean(placeholderLabel)}
|
|
47
|
+
bg={theme.semantics.neutral.surface}
|
|
48
|
+
borderColor={theme.semantics.neutral.divider}
|
|
49
|
+
borderWidth={1}
|
|
50
|
+
height={height}
|
|
51
|
+
overflow="hidden"
|
|
52
|
+
radius={radius}
|
|
53
|
+
testID={testID}
|
|
54
|
+
width={width}
|
|
55
|
+
style={[
|
|
56
|
+
{
|
|
57
|
+
alignItems: 'center',
|
|
58
|
+
aspectRatio: aspectRatio ?? 1,
|
|
59
|
+
justifyContent: 'center',
|
|
60
|
+
},
|
|
61
|
+
style,
|
|
62
|
+
]}
|
|
63
|
+
>
|
|
64
|
+
<Icon color={theme.semantics.content.muted} name="image-outline" size={24} />
|
|
65
|
+
</Box>
|
|
66
|
+
);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
return (
|
|
70
|
+
<SurfaceImage
|
|
71
|
+
{...props}
|
|
72
|
+
accessibilityLabel={accessibilityLabel}
|
|
73
|
+
alt={resolvedAlt}
|
|
74
|
+
aspectRatio={aspectRatio}
|
|
75
|
+
fallbackSource={fallbackSource}
|
|
76
|
+
height={height}
|
|
77
|
+
onError={(event) => {
|
|
78
|
+
onError?.(event);
|
|
79
|
+
|
|
80
|
+
if (!sourceKey) {
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
if (fallbackSource && firstFailureKeyRef.current !== sourceKey) {
|
|
85
|
+
firstFailureKeyRef.current = sourceKey;
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
setFailedSourceKey(sourceKey);
|
|
90
|
+
}}
|
|
91
|
+
radius={radius}
|
|
92
|
+
source={resolvedSource}
|
|
93
|
+
style={style}
|
|
94
|
+
testID={testID}
|
|
95
|
+
width={width}
|
|
96
|
+
/>
|
|
97
|
+
);
|
|
14
98
|
}
|
|
15
99
|
|
|
16
|
-
/***
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
100
|
+
/*** Resolves a generic upload asset into a source understood by the Surface Image primitive. */
|
|
101
|
+
function resolveImageSource(source: ImageProps['source']): SurfaceImageSource | null | undefined {
|
|
102
|
+
if (!isUploadAsset(source)) {
|
|
103
|
+
return source;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
switch (source.kind) {
|
|
107
|
+
case 'local':
|
|
108
|
+
return source.uri;
|
|
109
|
+
case 'url':
|
|
110
|
+
return source.url;
|
|
111
|
+
case 'storage':
|
|
112
|
+
return source.publicUrl ?? null;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/*** Produces a stable-enough key for tracking image failures across source changes. */
|
|
117
|
+
function resolveImageSourceKey(source: ImageProps['source']): string | null {
|
|
118
|
+
if (source === null || source === undefined) {
|
|
119
|
+
return null;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
if (isUploadAsset(source)) {
|
|
123
|
+
switch (source.kind) {
|
|
124
|
+
case 'local':
|
|
125
|
+
return `local:${source.uri}`;
|
|
126
|
+
case 'url':
|
|
127
|
+
return `url:${source.url}`;
|
|
128
|
+
case 'storage':
|
|
129
|
+
return `storage:${source.bucket}:${source.path}:${source.publicUrl ?? ''}`;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
if (typeof source === 'string' || typeof source === 'number') {
|
|
134
|
+
return `source:${String(source)}`;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
if (!Array.isArray(source) && 'uri' in source && typeof source.uri === 'string') {
|
|
138
|
+
return `source:${source.uri}`;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
return 'source:opaque';
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/*** Identifies the generic ZORA upload asset shape without leaking picker-specific types. */
|
|
145
|
+
function isUploadAsset(source: ImageProps['source']): source is UploadAsset {
|
|
146
|
+
return (
|
|
147
|
+
typeof source === 'object' && source !== null && !Array.isArray(source) && 'kind' in source
|
|
148
|
+
);
|
|
149
|
+
}
|
|
@@ -1,7 +1,11 @@
|
|
|
1
|
-
import type { ImageProps as SurfaceImageProps } from '@ankhorage/surface';
|
|
1
|
+
import type { ImageProps as SurfaceImageProps, SurfaceImageSource } from '@ankhorage/surface';
|
|
2
2
|
|
|
3
3
|
import type { ZoraBaseProps } from '../../theme/ZoraBaseProps';
|
|
4
|
+
import type { UploadAsset } from '../../types/upload';
|
|
4
5
|
|
|
5
6
|
export type { ImageFit, SurfaceImageSource } from '@ankhorage/surface';
|
|
6
7
|
|
|
7
|
-
export interface ImageProps
|
|
8
|
+
export interface ImageProps
|
|
9
|
+
extends ZoraBaseProps, Omit<SurfaceImageProps, 'mode' | 'source' | 'themeId'> {
|
|
10
|
+
source?: SurfaceImageSource | UploadAsset | null;
|
|
11
|
+
}
|