@ankhorage/zora 1.5.1 → 2.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 +23 -0
- package/README.md +125 -123
- package/dist/components/app-bar/AppBar.js +4 -4
- package/dist/components/app-bar/AppBar.js.map +1 -1
- package/dist/components/avatar/Avatar.d.ts.map +1 -1
- package/dist/components/avatar/Avatar.js +19 -9
- package/dist/components/avatar/Avatar.js.map +1 -1
- package/dist/components/avatar/types.d.ts +2 -2
- package/dist/components/avatar/types.d.ts.map +1 -1
- package/dist/components/avatar/types.js.map +1 -1
- package/dist/components/avatar-group/AvatarGroup.js +2 -2
- package/dist/components/avatar-group/AvatarGroup.js.map +1 -1
- package/dist/components/avatar-group/types.d.ts +2 -2
- package/dist/components/avatar-group/types.d.ts.map +1 -1
- package/dist/components/avatar-group/types.js.map +1 -1
- package/dist/components/badge/Badge.js +3 -3
- package/dist/components/badge/Badge.js.map +1 -1
- package/dist/components/badge/types.d.ts +4 -4
- package/dist/components/badge/types.d.ts.map +1 -1
- package/dist/components/badge/types.js.map +1 -1
- package/dist/components/button/Button.js +3 -3
- package/dist/components/button/Button.js.map +1 -1
- package/dist/components/button/meta.d.ts +7 -7
- package/dist/components/button/meta.d.ts.map +1 -1
- package/dist/components/button/meta.js +8 -7
- package/dist/components/button/meta.js.map +1 -1
- package/dist/components/button/types.d.ts +4 -4
- package/dist/components/button/types.d.ts.map +1 -1
- package/dist/components/button/types.js.map +1 -1
- package/dist/components/card/Card.js +2 -2
- package/dist/components/card/Card.js.map +1 -1
- package/dist/components/checkbox/CheckboxGroup.js +5 -5
- package/dist/components/checkbox/CheckboxGroup.js.map +1 -1
- package/dist/components/checkbox/types.d.ts +1 -1
- package/dist/components/checkbox/types.d.ts.map +1 -1
- package/dist/components/checkbox/types.js.map +1 -1
- package/dist/components/chip/Chip.d.ts.map +1 -1
- package/dist/components/chip/Chip.js +9 -10
- package/dist/components/chip/Chip.js.map +1 -1
- package/dist/components/chip/resolveChipColors.d.ts +3 -3
- package/dist/components/chip/resolveChipColors.d.ts.map +1 -1
- package/dist/components/chip/resolveChipColors.js +14 -4
- package/dist/components/chip/resolveChipColors.js.map +1 -1
- package/dist/components/chip/types.d.ts +2 -2
- package/dist/components/chip/types.d.ts.map +1 -1
- package/dist/components/chip/types.js.map +1 -1
- package/dist/components/chip-group/ChipGroup.js +2 -2
- package/dist/components/chip-group/ChipGroup.js.map +1 -1
- package/dist/components/chip-group/types.d.ts +2 -2
- package/dist/components/chip-group/types.d.ts.map +1 -1
- package/dist/components/chip-group/types.js.map +1 -1
- package/dist/components/drawer/Drawer.js +1 -1
- package/dist/components/drawer/Drawer.js.map +1 -1
- package/dist/components/form/FormError.js +1 -1
- package/dist/components/form/FormError.js.map +1 -1
- package/dist/components/form/FormField.js +1 -1
- package/dist/components/form/FormField.js.map +1 -1
- package/dist/components/heading/Heading.d.ts.map +1 -1
- package/dist/components/heading/Heading.js +5 -3
- package/dist/components/heading/Heading.js.map +1 -1
- package/dist/components/heading/index.d.ts +1 -1
- package/dist/components/heading/index.d.ts.map +1 -1
- package/dist/components/heading/index.js.map +1 -1
- package/dist/components/heading/meta.d.ts +9 -3
- package/dist/components/heading/meta.d.ts.map +1 -1
- package/dist/components/heading/meta.js +10 -3
- package/dist/components/heading/meta.js.map +1 -1
- package/dist/components/heading/resolveHeadingRecipe.d.ts +4 -3
- package/dist/components/heading/resolveHeadingRecipe.d.ts.map +1 -1
- package/dist/components/heading/resolveHeadingRecipe.js +33 -12
- package/dist/components/heading/resolveHeadingRecipe.js.map +1 -1
- package/dist/components/heading/types.d.ts +5 -2
- package/dist/components/heading/types.d.ts.map +1 -1
- package/dist/components/heading/types.js.map +1 -1
- package/dist/components/icon-button/IconButton.js +3 -3
- package/dist/components/icon-button/IconButton.js.map +1 -1
- package/dist/components/icon-button/types.d.ts +3 -3
- package/dist/components/icon-button/types.d.ts.map +1 -1
- package/dist/components/icon-button/types.js.map +1 -1
- package/dist/components/input/Input.js +1 -1
- package/dist/components/input/Input.js.map +1 -1
- package/dist/components/media-card/MediaCard.js +2 -2
- package/dist/components/media-card/MediaCard.js.map +1 -1
- package/dist/components/metric-card/MetricCard.js +5 -5
- package/dist/components/metric-card/MetricCard.js.map +1 -1
- package/dist/components/metric-card/types.d.ts +2 -2
- package/dist/components/metric-card/types.d.ts.map +1 -1
- package/dist/components/metric-card/types.js.map +1 -1
- package/dist/components/modal/Modal.js +1 -1
- package/dist/components/modal/Modal.js.map +1 -1
- package/dist/components/progress/Progress.js +2 -2
- package/dist/components/progress/Progress.js.map +1 -1
- package/dist/components/progress/types.d.ts +3 -3
- package/dist/components/progress/types.d.ts.map +1 -1
- package/dist/components/progress/types.js +12 -2
- package/dist/components/progress/types.js.map +1 -1
- package/dist/components/radio/RadioGroup.js +5 -5
- package/dist/components/radio/RadioGroup.js.map +1 -1
- package/dist/components/radio/types.d.ts +1 -1
- package/dist/components/radio/types.d.ts.map +1 -1
- package/dist/components/radio/types.js.map +1 -1
- package/dist/components/rating/Rating.js +2 -2
- package/dist/components/rating/Rating.js.map +1 -1
- package/dist/components/rating/types.d.ts +3 -3
- package/dist/components/rating/types.d.ts.map +1 -1
- package/dist/components/rating/types.js +12 -2
- package/dist/components/rating/types.js.map +1 -1
- package/dist/components/tabs/Tabs.d.ts.map +1 -1
- package/dist/components/tabs/Tabs.js +4 -4
- package/dist/components/tabs/Tabs.js.map +1 -1
- package/dist/components/text/Text.d.ts.map +1 -1
- package/dist/components/text/Text.js +3 -2
- package/dist/components/text/Text.js.map +1 -1
- package/dist/components/text/index.d.ts +1 -1
- package/dist/components/text/index.d.ts.map +1 -1
- package/dist/components/text/index.js.map +1 -1
- package/dist/components/text/meta.d.ts +10 -4
- package/dist/components/text/meta.d.ts.map +1 -1
- package/dist/components/text/meta.js +11 -4
- package/dist/components/text/meta.js.map +1 -1
- package/dist/components/text/resolveTextRecipe.d.ts +4 -3
- package/dist/components/text/resolveTextRecipe.d.ts.map +1 -1
- package/dist/components/text/resolveTextRecipe.js +35 -13
- package/dist/components/text/resolveTextRecipe.js.map +1 -1
- package/dist/components/text/types.d.ts +5 -2
- package/dist/components/text/types.d.ts.map +1 -1
- package/dist/components/text/types.js.map +1 -1
- package/dist/components/toolbar/ToolbarAction.js +1 -1
- package/dist/components/toolbar/ToolbarAction.js.map +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/internal/colorModel.d.ts +10 -0
- package/dist/internal/colorModel.d.ts.map +1 -0
- package/dist/internal/colorModel.js +25 -0
- package/dist/internal/colorModel.js.map +1 -0
- package/dist/internal/recipes.d.ts +12 -11
- package/dist/internal/recipes.d.ts.map +1 -1
- package/dist/internal/recipes.js +6 -6
- package/dist/internal/recipes.js.map +1 -1
- package/dist/patterns/auth/ForgotPasswordForm.js +2 -2
- package/dist/patterns/auth/ForgotPasswordForm.js.map +1 -1
- package/dist/patterns/auth/OtpForm.js +2 -2
- package/dist/patterns/auth/OtpForm.js.map +1 -1
- package/dist/patterns/auth/SignInForm.js +4 -4
- package/dist/patterns/auth/SignInForm.js.map +1 -1
- package/dist/patterns/auth/SignUpForm.js +2 -2
- package/dist/patterns/auth/SignUpForm.js.map +1 -1
- package/dist/patterns/chat-list-item/ChatListItem.d.ts.map +1 -1
- package/dist/patterns/chat-list-item/ChatListItem.js +6 -6
- package/dist/patterns/chat-list-item/ChatListItem.js.map +1 -1
- package/dist/patterns/chat-list-item/types.d.ts +2 -2
- package/dist/patterns/chat-list-item/types.d.ts.map +1 -1
- package/dist/patterns/chat-list-item/types.js.map +1 -1
- package/dist/patterns/collection-editor/CollectionEditor.js +5 -5
- package/dist/patterns/collection-editor/CollectionEditor.js.map +1 -1
- package/dist/patterns/confirm-dialog/ConfirmDialog.js +3 -3
- package/dist/patterns/confirm-dialog/ConfirmDialog.js.map +1 -1
- package/dist/patterns/confirm-dialog/types.d.ts +3 -3
- package/dist/patterns/confirm-dialog/types.d.ts.map +1 -1
- package/dist/patterns/confirm-dialog/types.js.map +1 -1
- package/dist/patterns/disclosure-section/DisclosureSection.js +1 -1
- package/dist/patterns/disclosure-section/DisclosureSection.js.map +1 -1
- package/dist/patterns/empty-state/EmptyState.js +2 -2
- package/dist/patterns/empty-state/EmptyState.js.map +1 -1
- package/dist/patterns/empty-state/types.d.ts +3 -3
- package/dist/patterns/empty-state/types.d.ts.map +1 -1
- package/dist/patterns/empty-state/types.js.map +1 -1
- package/dist/patterns/form-field/FormField.js +1 -1
- package/dist/patterns/form-field/FormField.js.map +1 -1
- package/dist/patterns/hero/Hero.js +3 -3
- package/dist/patterns/hero/Hero.js.map +1 -1
- package/dist/patterns/hero/types.d.ts +3 -3
- package/dist/patterns/hero/types.d.ts.map +1 -1
- package/dist/patterns/hero/types.js.map +1 -1
- package/dist/patterns/image-preview/ImagePreview.js +1 -1
- package/dist/patterns/image-preview/ImagePreview.js.map +1 -1
- package/dist/patterns/image-upload-field/ImageUploadField.js +7 -7
- package/dist/patterns/image-upload-field/ImageUploadField.js.map +1 -1
- package/dist/patterns/list/ListRow.js +2 -2
- package/dist/patterns/list/ListRow.js.map +1 -1
- package/dist/patterns/message-bubble/MessageBubble.d.ts.map +1 -1
- package/dist/patterns/message-bubble/MessageBubble.js +6 -6
- package/dist/patterns/message-bubble/MessageBubble.js.map +1 -1
- package/dist/patterns/message-bubble/types.d.ts +2 -2
- package/dist/patterns/message-bubble/types.d.ts.map +1 -1
- package/dist/patterns/message-bubble/types.js.map +1 -1
- package/dist/patterns/notice/Notice.js +2 -2
- package/dist/patterns/notice/Notice.js.map +1 -1
- package/dist/patterns/notice/types.d.ts +2 -2
- package/dist/patterns/notice/types.d.ts.map +1 -1
- package/dist/patterns/notice/types.js.map +1 -1
- package/dist/patterns/post-card/PostCard.js +4 -4
- package/dist/patterns/post-card/PostCard.js.map +1 -1
- package/dist/patterns/post-card/types.d.ts +2 -2
- package/dist/patterns/post-card/types.d.ts.map +1 -1
- package/dist/patterns/post-card/types.js.map +1 -1
- package/dist/patterns/section-header/SectionHeader.js +2 -2
- package/dist/patterns/section-header/SectionHeader.js.map +1 -1
- package/dist/patterns/settings-row/SettingsRow.js +1 -1
- package/dist/patterns/settings-row/SettingsRow.js.map +1 -1
- package/dist/patterns/theme-composer/ThemeComposer.js +14 -14
- package/dist/patterns/theme-composer/ThemeComposer.js.map +1 -1
- package/dist/patterns/tile-grid/PaletteItem.js +1 -1
- package/dist/patterns/tile-grid/PaletteItem.js.map +1 -1
- package/dist/patterns/timeline/Timeline.d.ts.map +1 -1
- package/dist/patterns/timeline/Timeline.js +14 -4
- package/dist/patterns/timeline/Timeline.js.map +1 -1
- package/dist/patterns/timeline/types.d.ts +2 -2
- package/dist/patterns/timeline/types.d.ts.map +1 -1
- package/dist/patterns/timeline/types.js.map +1 -1
- package/dist/patterns/tree-view/TreeItem.js +1 -1
- package/dist/patterns/tree-view/TreeItem.js.map +1 -1
- package/package.json +2 -2
- package/src/components/app-bar/AppBar.tsx +6 -6
- package/src/components/avatar/Avatar.tsx +21 -11
- package/src/components/avatar/types.ts +2 -2
- package/src/components/avatar-group/AvatarGroup.tsx +2 -2
- package/src/components/avatar-group/types.ts +2 -2
- package/src/components/badge/Badge.tsx +4 -4
- package/src/components/badge/types.ts +4 -4
- package/src/components/button/Button.tsx +4 -4
- package/src/components/button/meta.ts +8 -7
- package/src/components/button/types.ts +4 -4
- package/src/components/card/Card.tsx +2 -2
- package/src/components/checkbox/CheckboxGroup.tsx +6 -6
- package/src/components/checkbox/types.ts +1 -1
- package/src/components/chip/Chip.tsx +9 -10
- package/src/components/chip/resolveChipColors.ts +16 -6
- package/src/components/chip/types.ts +2 -2
- package/src/components/chip-group/ChipGroup.tsx +2 -2
- package/src/components/chip-group/types.ts +2 -2
- package/src/components/drawer/Drawer.tsx +1 -1
- package/src/components/form/FormError.tsx +1 -1
- package/src/components/form/FormField.tsx +1 -1
- package/src/components/heading/Heading.tsx +6 -3
- package/src/components/heading/index.ts +2 -1
- package/src/components/heading/meta.ts +10 -3
- package/src/components/heading/resolveHeadingRecipe.test.ts +13 -10
- package/src/components/heading/resolveHeadingRecipe.ts +58 -15
- package/src/components/heading/types.ts +5 -10
- package/src/components/icon-button/IconButton.tsx +4 -4
- package/src/components/icon-button/types.ts +3 -3
- package/src/components/input/Input.tsx +2 -2
- package/src/components/media-card/MediaCard.tsx +2 -2
- package/src/components/metric-card/MetricCard.tsx +6 -6
- package/src/components/metric-card/types.ts +2 -2
- package/src/components/modal/Modal.tsx +1 -1
- package/src/components/progress/Progress.tsx +2 -2
- package/src/components/progress/types.ts +14 -4
- package/src/components/radio/RadioGroup.tsx +6 -6
- package/src/components/radio/types.ts +1 -1
- package/src/components/rating/Rating.tsx +2 -2
- package/src/components/rating/types.ts +14 -4
- package/src/components/tabs/Tabs.tsx +11 -7
- package/src/components/text/Text.tsx +4 -2
- package/src/components/text/index.ts +8 -1
- package/src/components/text/meta.ts +11 -4
- package/src/components/text/resolveTextRecipe.test.ts +18 -14
- package/src/components/text/resolveTextRecipe.ts +42 -15
- package/src/components/text/types.ts +5 -10
- package/src/components/toolbar/ToolbarAction.tsx +2 -2
- package/src/index.ts +22 -2
- package/src/internal/colorModel.ts +39 -0
- package/src/internal/recipes.test.ts +2 -2
- package/src/internal/recipes.ts +18 -18
- package/src/patterns/auth/ForgotPasswordForm.tsx +2 -2
- package/src/patterns/auth/OtpForm.tsx +2 -2
- package/src/patterns/auth/SignInForm.tsx +4 -4
- package/src/patterns/auth/SignUpForm.tsx +2 -2
- package/src/patterns/chat-list-item/ChatListItem.tsx +7 -6
- package/src/patterns/chat-list-item/types.ts +2 -2
- package/src/patterns/collection-editor/CollectionEditor.tsx +6 -6
- package/src/patterns/confirm-dialog/ConfirmDialog.tsx +4 -4
- package/src/patterns/confirm-dialog/types.ts +3 -3
- package/src/patterns/disclosure-section/DisclosureSection.tsx +2 -2
- package/src/patterns/empty-state/EmptyState.tsx +4 -4
- package/src/patterns/empty-state/types.ts +3 -3
- package/src/patterns/form-field/FormField.tsx +1 -1
- package/src/patterns/hero/Hero.tsx +4 -4
- package/src/patterns/hero/types.ts +3 -3
- package/src/patterns/image-preview/ImagePreview.tsx +1 -1
- package/src/patterns/image-upload-field/ImageUploadField.tsx +8 -8
- package/src/patterns/list/ListRow.tsx +2 -2
- package/src/patterns/message-bubble/MessageBubble.tsx +10 -6
- package/src/patterns/message-bubble/types.ts +2 -2
- package/src/patterns/notice/Notice.tsx +2 -2
- package/src/patterns/notice/types.ts +2 -2
- package/src/patterns/post-card/PostCard.tsx +5 -5
- package/src/patterns/post-card/types.ts +2 -2
- package/src/patterns/section-header/SectionHeader.tsx +2 -2
- package/src/patterns/settings-row/SettingsRow.tsx +1 -1
- package/src/patterns/theme-composer/ThemeComposer.tsx +15 -15
- package/src/patterns/tile-grid/PaletteItem.tsx +1 -1
- package/src/patterns/timeline/Timeline.tsx +15 -5
- package/src/patterns/timeline/types.ts +2 -2
- package/src/patterns/tree-view/TreeItem.tsx +1 -1
|
@@ -15,7 +15,7 @@ function CheckboxGroupInner<TValue extends string>({
|
|
|
15
15
|
options,
|
|
16
16
|
orientation = 'vertical',
|
|
17
17
|
gap = 's',
|
|
18
|
-
|
|
18
|
+
color = 'primary',
|
|
19
19
|
size = 'm',
|
|
20
20
|
invalid = false,
|
|
21
21
|
readOnly = false,
|
|
@@ -47,7 +47,7 @@ function CheckboxGroupInner<TValue extends string>({
|
|
|
47
47
|
invalid={invalid}
|
|
48
48
|
readOnly={readOnly}
|
|
49
49
|
size={size}
|
|
50
|
-
|
|
50
|
+
color={color}
|
|
51
51
|
value={value}
|
|
52
52
|
onValueChange={onValueChange}
|
|
53
53
|
/>
|
|
@@ -66,7 +66,7 @@ function CheckboxGroupItem<TValue extends string>({
|
|
|
66
66
|
invalid,
|
|
67
67
|
readOnly,
|
|
68
68
|
size,
|
|
69
|
-
|
|
69
|
+
color,
|
|
70
70
|
value,
|
|
71
71
|
onValueChange,
|
|
72
72
|
}: {
|
|
@@ -76,7 +76,7 @@ function CheckboxGroupItem<TValue extends string>({
|
|
|
76
76
|
invalid: boolean;
|
|
77
77
|
readOnly: boolean;
|
|
78
78
|
size: NonNullable<CheckboxGroupProps<TValue>['size']>;
|
|
79
|
-
|
|
79
|
+
color: NonNullable<CheckboxGroupProps<TValue>['color']>;
|
|
80
80
|
value: readonly TValue[];
|
|
81
81
|
onValueChange: (value: TValue[]) => void;
|
|
82
82
|
}) {
|
|
@@ -87,7 +87,7 @@ function CheckboxGroupItem<TValue extends string>({
|
|
|
87
87
|
invalid={invalid}
|
|
88
88
|
readOnly={readOnly}
|
|
89
89
|
size={size}
|
|
90
|
-
|
|
90
|
+
color={color}
|
|
91
91
|
testID={option.testID}
|
|
92
92
|
onCheckedChange={(nextChecked) => {
|
|
93
93
|
const nextValue = nextChecked
|
|
@@ -100,7 +100,7 @@ function CheckboxGroupItem<TValue extends string>({
|
|
|
100
100
|
<Stack gap="xs">
|
|
101
101
|
<Text>{option.label}</Text>
|
|
102
102
|
{option.description ? (
|
|
103
|
-
<Text
|
|
103
|
+
<Text emphasis="muted" variant="caption">
|
|
104
104
|
{option.description}
|
|
105
105
|
</Text>
|
|
106
106
|
) : null}
|
|
@@ -19,7 +19,7 @@ export interface CheckboxGroupProps<TValue extends string>
|
|
|
19
19
|
ZoraBaseProps,
|
|
20
20
|
Pick<
|
|
21
21
|
Omit<SurfaceCheckboxProps, 'mode' | 'themeId'>,
|
|
22
|
-
'
|
|
22
|
+
'color' | 'size' | 'invalid' | 'readOnly' | 'disabled'
|
|
23
23
|
> {
|
|
24
24
|
value: readonly TValue[];
|
|
25
25
|
onValueChange: (value: TValue[]) => void;
|
|
@@ -33,7 +33,7 @@ function ChipInner({
|
|
|
33
33
|
icon,
|
|
34
34
|
selected = false,
|
|
35
35
|
disabled = false,
|
|
36
|
-
|
|
36
|
+
color = 'neutral',
|
|
37
37
|
size = 's',
|
|
38
38
|
onPress,
|
|
39
39
|
}: ChipProps) {
|
|
@@ -42,14 +42,13 @@ function ChipInner({
|
|
|
42
42
|
const iconSize = resolveIconSize(size);
|
|
43
43
|
|
|
44
44
|
const renderContent = (state: ChipInteractionState) => {
|
|
45
|
-
const colors = resolveChipColors({ theme,
|
|
46
|
-
const
|
|
47
|
-
?
|
|
48
|
-
: selected
|
|
49
|
-
?
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
: 'default';
|
|
45
|
+
const colors = resolveChipColors({ theme, color, selected, state });
|
|
46
|
+
const textColor = state.disabled
|
|
47
|
+
? undefined
|
|
48
|
+
: selected && color !== 'neutral'
|
|
49
|
+
? color
|
|
50
|
+
: undefined;
|
|
51
|
+
const textEmphasis = state.disabled ? 'muted' : 'default';
|
|
53
52
|
|
|
54
53
|
return (
|
|
55
54
|
<Box
|
|
@@ -73,7 +72,7 @@ function ChipInner({
|
|
|
73
72
|
size={iconSize}
|
|
74
73
|
/>
|
|
75
74
|
) : null}
|
|
76
|
-
<Text
|
|
75
|
+
<Text color={textColor} emphasis={textEmphasis} variant="label">
|
|
77
76
|
{children}
|
|
78
77
|
</Text>
|
|
79
78
|
</Inline>
|
|
@@ -1,10 +1,20 @@
|
|
|
1
1
|
import type { RoleSemantics, SurfaceTheme } from '@ankhorage/surface';
|
|
2
2
|
|
|
3
|
-
import type {
|
|
3
|
+
import type { ZoraColor } from '../../internal/recipes';
|
|
4
4
|
import type { ChipColors, ChipInteractionState } from './types';
|
|
5
5
|
|
|
6
|
-
function resolveChipRole(theme: SurfaceTheme,
|
|
7
|
-
switch (
|
|
6
|
+
function resolveChipRole(theme: SurfaceTheme, color: ZoraColor): RoleSemantics {
|
|
7
|
+
switch (color) {
|
|
8
|
+
case 'secondary':
|
|
9
|
+
return theme.semantics.secondary;
|
|
10
|
+
case 'tertiary':
|
|
11
|
+
return theme.semantics.accent;
|
|
12
|
+
case 'quaternary':
|
|
13
|
+
return theme.semantics.highlight;
|
|
14
|
+
case 'error':
|
|
15
|
+
return theme.semantics.error;
|
|
16
|
+
case 'info':
|
|
17
|
+
return theme.semantics.info;
|
|
8
18
|
case 'primary':
|
|
9
19
|
return theme.semantics.action.primary;
|
|
10
20
|
case 'danger':
|
|
@@ -21,12 +31,12 @@ function resolveChipRole(theme: SurfaceTheme, tone: ZoraTone): RoleSemantics {
|
|
|
21
31
|
|
|
22
32
|
export function resolveChipColors({
|
|
23
33
|
theme,
|
|
24
|
-
|
|
34
|
+
color,
|
|
25
35
|
selected,
|
|
26
36
|
state,
|
|
27
37
|
}: {
|
|
28
38
|
theme: SurfaceTheme;
|
|
29
|
-
|
|
39
|
+
color: ZoraColor;
|
|
30
40
|
selected: boolean;
|
|
31
41
|
state: ChipInteractionState;
|
|
32
42
|
}): ChipColors {
|
|
@@ -39,7 +49,7 @@ export function resolveChipColors({
|
|
|
39
49
|
};
|
|
40
50
|
}
|
|
41
51
|
|
|
42
|
-
const role = resolveChipRole(theme,
|
|
52
|
+
const role = resolveChipRole(theme, color);
|
|
43
53
|
|
|
44
54
|
if (selected) {
|
|
45
55
|
return {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { ButtonIconSpec } from '@ankhorage/surface';
|
|
2
2
|
import type React from 'react';
|
|
3
3
|
|
|
4
|
-
import type {
|
|
4
|
+
import type { ZoraColor, ZoraControlSize } from '../../internal/recipes';
|
|
5
5
|
import type { ZoraBaseProps } from '../../theme/ZoraBaseProps';
|
|
6
6
|
|
|
7
7
|
export interface ChipProps extends ZoraBaseProps {
|
|
@@ -9,7 +9,7 @@ export interface ChipProps extends ZoraBaseProps {
|
|
|
9
9
|
icon?: ButtonIconSpec;
|
|
10
10
|
selected?: boolean;
|
|
11
11
|
disabled?: boolean;
|
|
12
|
-
|
|
12
|
+
color?: ZoraColor;
|
|
13
13
|
size?: ZoraControlSize;
|
|
14
14
|
onPress?: () => void;
|
|
15
15
|
}
|
|
@@ -21,7 +21,7 @@ function ChipGroupInner<TValue extends string = string>({
|
|
|
21
21
|
value,
|
|
22
22
|
onValueChange,
|
|
23
23
|
multiple,
|
|
24
|
-
|
|
24
|
+
color = 'neutral',
|
|
25
25
|
size = 's',
|
|
26
26
|
wrap = true,
|
|
27
27
|
disabled,
|
|
@@ -49,7 +49,7 @@ function ChipGroupInner<TValue extends string = string>({
|
|
|
49
49
|
selected={isSelected}
|
|
50
50
|
size={size}
|
|
51
51
|
testID={item.testID}
|
|
52
|
-
|
|
52
|
+
color={color}
|
|
53
53
|
>
|
|
54
54
|
{item.label}
|
|
55
55
|
</Chip>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { ButtonIconSpec } from '@ankhorage/surface';
|
|
2
2
|
import type React from 'react';
|
|
3
3
|
|
|
4
|
-
import type {
|
|
4
|
+
import type { ZoraColor, ZoraControlSize } from '../../internal/recipes';
|
|
5
5
|
import type { ZoraBaseProps } from '../../theme/ZoraBaseProps';
|
|
6
6
|
|
|
7
7
|
export interface ChipGroupItem<TValue extends string = string> {
|
|
@@ -14,7 +14,7 @@ export interface ChipGroupItem<TValue extends string = string> {
|
|
|
14
14
|
|
|
15
15
|
interface ChipGroupBaseProps<TValue extends string> extends ZoraBaseProps {
|
|
16
16
|
items: readonly ChipGroupItem<TValue>[];
|
|
17
|
-
|
|
17
|
+
color?: ZoraColor;
|
|
18
18
|
size?: ZoraControlSize;
|
|
19
19
|
wrap?: boolean;
|
|
20
20
|
disabled?: boolean;
|
|
@@ -15,7 +15,7 @@ function FormErrorInner({ themeId: _themeId, mode: _mode, error, testID }: FormE
|
|
|
15
15
|
|
|
16
16
|
return (
|
|
17
17
|
<Box borderColor={theme.colors.error} borderWidth={1} p="s" radius="m" testID={testID}>
|
|
18
|
-
<Text
|
|
18
|
+
<Text color="error" variant="bodySmall">
|
|
19
19
|
{error}
|
|
20
20
|
</Text>
|
|
21
21
|
</Box>
|
|
@@ -39,7 +39,8 @@ function HeadingInner({
|
|
|
39
39
|
i18nKey,
|
|
40
40
|
level = 2,
|
|
41
41
|
size,
|
|
42
|
-
|
|
42
|
+
color,
|
|
43
|
+
emphasis = 'default',
|
|
43
44
|
align,
|
|
44
45
|
weight,
|
|
45
46
|
italic = false,
|
|
@@ -56,7 +57,8 @@ function HeadingInner({
|
|
|
56
57
|
const { breakpoint } = useResponsiveRuntime();
|
|
57
58
|
const content = resolveHeadingContent({ children, text, i18nKey });
|
|
58
59
|
const resolvedSize = resolveResponsive(size, breakpoint) ?? resolveHeadingSizeFromLevel(level);
|
|
59
|
-
const
|
|
60
|
+
const resolvedColor = resolveResponsive(color, breakpoint);
|
|
61
|
+
const resolvedEmphasis = resolveResponsive(emphasis, breakpoint) ?? 'default';
|
|
60
62
|
const resolvedAlign = resolveResponsive(align, breakpoint);
|
|
61
63
|
const resolvedWeight = resolveResponsive(weight, breakpoint);
|
|
62
64
|
|
|
@@ -79,7 +81,8 @@ function HeadingInner({
|
|
|
79
81
|
italic,
|
|
80
82
|
level,
|
|
81
83
|
size: resolvedSize,
|
|
82
|
-
|
|
84
|
+
color: resolvedColor,
|
|
85
|
+
emphasis: resolvedEmphasis,
|
|
83
86
|
weight: resolvedWeight,
|
|
84
87
|
})}
|
|
85
88
|
>
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ZORA_COLORS, ZORA_EMPHASES } from '../../internal/colorModel';
|
|
1
2
|
import type { ZoraComponentMeta } from '../../metadata';
|
|
2
3
|
|
|
3
4
|
export const headingMeta = {
|
|
@@ -34,11 +35,17 @@ export const headingMeta = {
|
|
|
34
35
|
enum: [1, 2, 3, 4, 5, 6],
|
|
35
36
|
default: 2,
|
|
36
37
|
},
|
|
37
|
-
|
|
38
|
+
color: {
|
|
38
39
|
type: 'enum',
|
|
39
40
|
category: 'Style',
|
|
40
|
-
label: '
|
|
41
|
-
enum:
|
|
41
|
+
label: 'Color',
|
|
42
|
+
enum: ZORA_COLORS,
|
|
43
|
+
},
|
|
44
|
+
emphasis: {
|
|
45
|
+
type: 'enum',
|
|
46
|
+
category: 'Style',
|
|
47
|
+
label: 'Emphasis',
|
|
48
|
+
enum: ZORA_EMPHASES,
|
|
42
49
|
},
|
|
43
50
|
align: {
|
|
44
51
|
type: 'enum',
|
|
@@ -230,28 +230,31 @@ describe('resolveHeadingRecipe', () => {
|
|
|
230
230
|
expect(style.fontWeight).toBe(theme.typography.weights.bold);
|
|
231
231
|
});
|
|
232
232
|
|
|
233
|
-
test('maps semantic
|
|
234
|
-
expect(resolveHeadingRecipe(theme, { level: 2,
|
|
235
|
-
theme.semantics.
|
|
233
|
+
test('maps semantic emphasis and colors to theme colors', () => {
|
|
234
|
+
expect(resolveHeadingRecipe(theme, { level: 2, color: 'primary' }).color).toBe(
|
|
235
|
+
theme.semantics.action.primary.base,
|
|
236
236
|
);
|
|
237
|
-
expect(resolveHeadingRecipe(theme, { level: 2,
|
|
237
|
+
expect(resolveHeadingRecipe(theme, { level: 2, emphasis: 'muted' }).color).toBe(
|
|
238
238
|
theme.semantics.content.muted,
|
|
239
239
|
);
|
|
240
|
-
expect(resolveHeadingRecipe(theme, { level: 2,
|
|
240
|
+
expect(resolveHeadingRecipe(theme, { level: 2, emphasis: 'subtle' }).color).toBe(
|
|
241
241
|
theme.semantics.content.subtle,
|
|
242
242
|
);
|
|
243
|
-
expect(resolveHeadingRecipe(theme, { level: 2,
|
|
243
|
+
expect(resolveHeadingRecipe(theme, { level: 2, emphasis: 'inverse' }).color).toBe(
|
|
244
244
|
theme.semantics.content.inverse,
|
|
245
245
|
);
|
|
246
|
-
expect(resolveHeadingRecipe(theme, { level: 2,
|
|
247
|
-
theme.semantics.danger.base,
|
|
246
|
+
expect(resolveHeadingRecipe(theme, { level: 2, color: 'danger' }).color).toBe(
|
|
247
|
+
theme.semantics.action.danger.base,
|
|
248
248
|
);
|
|
249
|
-
expect(resolveHeadingRecipe(theme, { level: 2,
|
|
249
|
+
expect(resolveHeadingRecipe(theme, { level: 2, color: 'success' }).color).toBe(
|
|
250
250
|
theme.semantics.success.base,
|
|
251
251
|
);
|
|
252
|
-
expect(resolveHeadingRecipe(theme, { level: 2,
|
|
252
|
+
expect(resolveHeadingRecipe(theme, { level: 2, color: 'warning' }).color).toBe(
|
|
253
253
|
theme.semantics.warning.base,
|
|
254
254
|
);
|
|
255
|
+
expect(
|
|
256
|
+
resolveHeadingRecipe(theme, { level: 2, color: 'primary', emphasis: 'inverse' }).color,
|
|
257
|
+
).toBe(theme.semantics.action.primary.onSolidText);
|
|
255
258
|
});
|
|
256
259
|
|
|
257
260
|
test('applies alignment', () => {
|
|
@@ -1,12 +1,20 @@
|
|
|
1
|
-
import type { FontWeight, SurfaceTheme } from '@ankhorage/surface';
|
|
1
|
+
import type { FontWeight, RoleSemantics, SurfaceTheme } from '@ankhorage/surface';
|
|
2
2
|
import type { TextStyle } from 'react-native';
|
|
3
3
|
|
|
4
|
-
import type {
|
|
4
|
+
import type {
|
|
5
|
+
HeadingAlign,
|
|
6
|
+
HeadingColor,
|
|
7
|
+
HeadingEmphasis,
|
|
8
|
+
HeadingLevel,
|
|
9
|
+
HeadingSize,
|
|
10
|
+
HeadingWeight,
|
|
11
|
+
} from './types';
|
|
5
12
|
|
|
6
13
|
interface ResolveHeadingRecipeOptions {
|
|
7
14
|
level: HeadingLevel;
|
|
8
15
|
size?: HeadingSize;
|
|
9
|
-
|
|
16
|
+
color?: HeadingColor;
|
|
17
|
+
emphasis?: HeadingEmphasis;
|
|
10
18
|
align?: HeadingAlign;
|
|
11
19
|
weight?: HeadingWeight;
|
|
12
20
|
italic?: boolean;
|
|
@@ -72,22 +80,49 @@ function resolveSizeRecipe(theme: SurfaceTheme, size: HeadingSize): HeadingRecip
|
|
|
72
80
|
};
|
|
73
81
|
}
|
|
74
82
|
|
|
75
|
-
function
|
|
76
|
-
switch (
|
|
83
|
+
function resolveRoleSemantics(theme: SurfaceTheme, color: HeadingColor): RoleSemantics {
|
|
84
|
+
switch (color) {
|
|
85
|
+
case 'secondary':
|
|
86
|
+
return theme.semantics.secondary;
|
|
87
|
+
case 'tertiary':
|
|
88
|
+
return theme.semantics.accent;
|
|
89
|
+
case 'quaternary':
|
|
90
|
+
return theme.semantics.highlight;
|
|
91
|
+
case 'neutral':
|
|
92
|
+
return theme.semantics.action.neutral;
|
|
93
|
+
case 'error':
|
|
94
|
+
return theme.semantics.error;
|
|
95
|
+
case 'info':
|
|
96
|
+
return theme.semantics.info;
|
|
97
|
+
case 'danger':
|
|
98
|
+
return theme.semantics.action.danger;
|
|
99
|
+
case 'success':
|
|
100
|
+
return theme.semantics.success;
|
|
101
|
+
case 'warning':
|
|
102
|
+
return theme.semantics.warning;
|
|
103
|
+
case 'primary':
|
|
104
|
+
default:
|
|
105
|
+
return theme.semantics.action.primary;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
function resolveHeadingColor(
|
|
110
|
+
theme: SurfaceTheme,
|
|
111
|
+
emphasis: HeadingEmphasis,
|
|
112
|
+
color?: HeadingColor,
|
|
113
|
+
): string {
|
|
114
|
+
if (color) {
|
|
115
|
+
const role = resolveRoleSemantics(theme, color);
|
|
116
|
+
return emphasis === 'inverse' ? role.onSolidText : role.base;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
switch (emphasis) {
|
|
77
120
|
case 'muted':
|
|
78
121
|
return theme.semantics.content.muted;
|
|
79
122
|
case 'subtle':
|
|
80
123
|
return theme.semantics.content.subtle;
|
|
81
124
|
case 'inverse':
|
|
82
125
|
return theme.semantics.content.inverse;
|
|
83
|
-
case 'primary':
|
|
84
|
-
return theme.semantics.brand.base;
|
|
85
|
-
case 'danger':
|
|
86
|
-
return theme.semantics.danger.base;
|
|
87
|
-
case 'success':
|
|
88
|
-
return theme.semantics.success.base;
|
|
89
|
-
case 'warning':
|
|
90
|
-
return theme.semantics.warning.base;
|
|
91
126
|
case 'default':
|
|
92
127
|
default:
|
|
93
128
|
return theme.semantics.content.default;
|
|
@@ -112,13 +147,21 @@ function resolveFontFamily({
|
|
|
112
147
|
|
|
113
148
|
export function resolveHeadingRecipe(
|
|
114
149
|
theme: SurfaceTheme,
|
|
115
|
-
{
|
|
150
|
+
{
|
|
151
|
+
align,
|
|
152
|
+
color,
|
|
153
|
+
emphasis = 'default',
|
|
154
|
+
italic = false,
|
|
155
|
+
level,
|
|
156
|
+
size,
|
|
157
|
+
weight,
|
|
158
|
+
}: ResolveHeadingRecipeOptions,
|
|
116
159
|
): TextStyle {
|
|
117
160
|
const recipe = resolveSizeRecipe(theme, size ?? resolveHeadingSizeFromLevel(level));
|
|
118
161
|
const resolvedWeight = resolveWeight(theme, weight ?? recipe.weight);
|
|
119
162
|
|
|
120
163
|
return {
|
|
121
|
-
color:
|
|
164
|
+
color: resolveHeadingColor(theme, emphasis, color),
|
|
122
165
|
elevation: 0,
|
|
123
166
|
fontFamily: resolveFontFamily({ theme, weight: resolvedWeight, italic }),
|
|
124
167
|
fontSize: recipe.fontSize,
|
|
@@ -2,21 +2,15 @@ import type { Responsive } from '@ankhorage/surface';
|
|
|
2
2
|
import type React from 'react';
|
|
3
3
|
import type { AccessibilityRole, TextStyle } from 'react-native';
|
|
4
4
|
|
|
5
|
+
import type { ZoraColor, ZoraEmphasis } from '../../internal/recipes';
|
|
5
6
|
import type { ZoraBaseProps } from '../../theme/ZoraBaseProps';
|
|
6
7
|
|
|
7
8
|
export type HeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;
|
|
8
9
|
|
|
9
10
|
export type HeadingSize = 'display' | 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';
|
|
10
11
|
|
|
11
|
-
export type
|
|
12
|
-
|
|
13
|
-
| 'muted'
|
|
14
|
-
| 'subtle'
|
|
15
|
-
| 'inverse'
|
|
16
|
-
| 'primary'
|
|
17
|
-
| 'danger'
|
|
18
|
-
| 'success'
|
|
19
|
-
| 'warning';
|
|
12
|
+
export type HeadingColor = ZoraColor;
|
|
13
|
+
export type HeadingEmphasis = ZoraEmphasis;
|
|
20
14
|
|
|
21
15
|
export type HeadingAlign = NonNullable<TextStyle['textAlign']>;
|
|
22
16
|
|
|
@@ -28,7 +22,8 @@ export interface HeadingProps extends ZoraBaseProps {
|
|
|
28
22
|
i18nKey?: string;
|
|
29
23
|
level?: HeadingLevel;
|
|
30
24
|
size?: Responsive<HeadingSize>;
|
|
31
|
-
|
|
25
|
+
color?: Responsive<HeadingColor>;
|
|
26
|
+
emphasis?: Responsive<HeadingEmphasis>;
|
|
32
27
|
align?: Responsive<HeadingAlign>;
|
|
33
28
|
weight?: Responsive<HeadingWeight>;
|
|
34
29
|
italic?: boolean;
|
|
@@ -10,20 +10,20 @@ function IconButtonInner({
|
|
|
10
10
|
mode: _mode,
|
|
11
11
|
icon,
|
|
12
12
|
label,
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
variant = 'ghost',
|
|
14
|
+
color = 'neutral',
|
|
15
15
|
size = 'm',
|
|
16
16
|
...props
|
|
17
17
|
}: IconButtonProps) {
|
|
18
|
-
const recipe = resolveButtonRecipe({
|
|
18
|
+
const recipe = resolveButtonRecipe({ color, variant, size });
|
|
19
19
|
|
|
20
20
|
return (
|
|
21
21
|
<SurfaceIconButton
|
|
22
22
|
{...props}
|
|
23
23
|
icon={icon}
|
|
24
24
|
accessibilityLabel={label}
|
|
25
|
+
color={recipe.color}
|
|
25
26
|
size={recipe.size}
|
|
26
|
-
tone={recipe.tone}
|
|
27
27
|
variant={recipe.variant}
|
|
28
28
|
/>
|
|
29
29
|
);
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import type { ButtonIconSpec } from '@ankhorage/surface';
|
|
2
2
|
|
|
3
|
-
import type {
|
|
3
|
+
import type { ZoraButtonVariant, ZoraColor, ZoraControlSize } from '../../internal/recipes';
|
|
4
4
|
import type { ZoraBaseProps } from '../../theme/ZoraBaseProps';
|
|
5
5
|
|
|
6
6
|
export interface IconButtonProps extends ZoraBaseProps {
|
|
7
7
|
icon: ButtonIconSpec;
|
|
8
8
|
label: string;
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
variant?: ZoraButtonVariant;
|
|
10
|
+
color?: ZoraColor;
|
|
11
11
|
size?: ZoraControlSize;
|
|
12
12
|
disabled?: boolean;
|
|
13
13
|
loading?: boolean;
|
|
@@ -44,9 +44,9 @@ function InputInner({
|
|
|
44
44
|
icon={trailingAction.icon}
|
|
45
45
|
label={trailingAction.label}
|
|
46
46
|
disabled={disabled ?? readOnly}
|
|
47
|
-
|
|
47
|
+
variant="ghost"
|
|
48
48
|
size={size === 'l' ? 'm' : size}
|
|
49
|
-
|
|
49
|
+
color="neutral"
|
|
50
50
|
onPress={trailingAction.onPress}
|
|
51
51
|
/>
|
|
52
52
|
) : trailingIcon ? (
|
|
@@ -91,7 +91,7 @@ function MediaCardInner({
|
|
|
91
91
|
<Box flex={{ md: 1 }} width={{ base: '100%', md: 'auto' }}>
|
|
92
92
|
<Stack gap="xs">
|
|
93
93
|
{eyebrow ? (
|
|
94
|
-
<Text
|
|
94
|
+
<Text emphasis="muted" variant="caption" weight="semiBold">
|
|
95
95
|
{eyebrow}
|
|
96
96
|
</Text>
|
|
97
97
|
) : null}
|
|
@@ -100,7 +100,7 @@ function MediaCardInner({
|
|
|
100
100
|
{badges ? <Box>{badges}</Box> : null}
|
|
101
101
|
</Stack>
|
|
102
102
|
{description ? (
|
|
103
|
-
<Text
|
|
103
|
+
<Text emphasis="muted" variant="bodySmall">
|
|
104
104
|
{description}
|
|
105
105
|
</Text>
|
|
106
106
|
) : null}
|
|
@@ -20,7 +20,7 @@ function MetricCardInner({
|
|
|
20
20
|
description,
|
|
21
21
|
icon,
|
|
22
22
|
delta,
|
|
23
|
-
|
|
23
|
+
deltaColor = 'neutral',
|
|
24
24
|
actions,
|
|
25
25
|
tone = 'default',
|
|
26
26
|
compact = false,
|
|
@@ -29,7 +29,7 @@ function MetricCardInner({
|
|
|
29
29
|
const { theme } = useZoraTheme();
|
|
30
30
|
const isInteractive = Boolean(onPress) && !actions;
|
|
31
31
|
|
|
32
|
-
const badgeRecipe = resolveBadgeRecipe({
|
|
32
|
+
const badgeRecipe = resolveBadgeRecipe({ color: deltaColor, variant: 'soft', size: 's' });
|
|
33
33
|
const iconColor = theme.semantics.content.muted;
|
|
34
34
|
|
|
35
35
|
return (
|
|
@@ -51,14 +51,14 @@ function MetricCardInner({
|
|
|
51
51
|
size={resolveIconSize('s')}
|
|
52
52
|
/>
|
|
53
53
|
) : null}
|
|
54
|
-
<Text
|
|
54
|
+
<Text emphasis="muted" variant="caption" weight="semiBold">
|
|
55
55
|
{label}
|
|
56
56
|
</Text>
|
|
57
57
|
{delta != null ? (
|
|
58
58
|
<Badge
|
|
59
|
-
|
|
59
|
+
variant={badgeRecipe.variant}
|
|
60
60
|
size={badgeRecipe.size}
|
|
61
|
-
|
|
61
|
+
color={badgeRecipe.color}
|
|
62
62
|
>
|
|
63
63
|
{delta}
|
|
64
64
|
</Badge>
|
|
@@ -68,7 +68,7 @@ function MetricCardInner({
|
|
|
68
68
|
<Heading level={compact ? 3 : 2}>{value}</Heading>
|
|
69
69
|
|
|
70
70
|
{description ? (
|
|
71
|
-
<Text
|
|
71
|
+
<Text emphasis="muted" variant="bodySmall">
|
|
72
72
|
{description}
|
|
73
73
|
</Text>
|
|
74
74
|
) : null}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { ButtonIconSpec } from '@ankhorage/surface';
|
|
2
2
|
import type React from 'react';
|
|
3
3
|
|
|
4
|
-
import type { ZoraCardTone,
|
|
4
|
+
import type { ZoraCardTone, ZoraColor } from '../../internal/recipes';
|
|
5
5
|
import type { ZoraBaseProps } from '../../theme/ZoraBaseProps';
|
|
6
6
|
|
|
7
7
|
export interface MetricCardProps extends ZoraBaseProps {
|
|
@@ -10,7 +10,7 @@ export interface MetricCardProps extends ZoraBaseProps {
|
|
|
10
10
|
description?: React.ReactNode;
|
|
11
11
|
icon?: ButtonIconSpec;
|
|
12
12
|
delta?: React.ReactNode;
|
|
13
|
-
|
|
13
|
+
deltaColor?: ZoraColor;
|
|
14
14
|
actions?: React.ReactNode;
|
|
15
15
|
tone?: ZoraCardTone;
|
|
16
16
|
compact?: boolean;
|
|
@@ -24,13 +24,13 @@ function ProgressInner({
|
|
|
24
24
|
testID,
|
|
25
25
|
value,
|
|
26
26
|
max = 100,
|
|
27
|
-
|
|
27
|
+
color = 'primary',
|
|
28
28
|
size = 'm',
|
|
29
29
|
}: ProgressProps) {
|
|
30
30
|
const { theme } = useZoraTheme();
|
|
31
31
|
const fraction = resolveProgressFraction({ value, max });
|
|
32
32
|
const height = resolveProgressHeight(size);
|
|
33
|
-
const role = resolveProgressRole(theme,
|
|
33
|
+
const role = resolveProgressRole(theme, color);
|
|
34
34
|
|
|
35
35
|
return (
|
|
36
36
|
<Box
|