@ankhorage/zora 1.5.1 → 2.1.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 +29 -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 +15 -7
- package/dist/components/button/meta.d.ts.map +1 -1
- package/dist/components/button/meta.js +16 -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/form/meta.d.ts +13 -0
- package/dist/components/form/meta.d.ts.map +1 -1
- package/dist/components/form/meta.js +15 -0
- package/dist/components/form/meta.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 +5 -3
- 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/metadata/index.d.ts +1 -1
- package/dist/metadata/index.d.ts.map +1 -1
- package/dist/metadata/index.js.map +1 -1
- package/dist/metadata/types.d.ts +16 -0
- package/dist/metadata/types.d.ts.map +1 -1
- package/dist/metadata/types.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/list/meta.d.ts +16 -0
- package/dist/patterns/list/meta.d.ts.map +1 -1
- package/dist/patterns/list/meta.js +19 -0
- package/dist/patterns/list/meta.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/dist/theme/useZoraTheme.d.ts +1 -1
- package/package.json +3 -3
- 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 +16 -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/form/meta.ts +15 -0
- 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 +26 -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/metadata/componentMeta.test.ts +36 -0
- package/src/metadata/index.ts +4 -0
- package/src/metadata/types.ts +27 -0
- 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/list/meta.ts +19 -0
- 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
|
@@ -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
|
|
@@ -1,17 +1,27 @@
|
|
|
1
1
|
import type { RoleSemantics, SurfaceTheme } from '@ankhorage/surface';
|
|
2
2
|
|
|
3
|
-
import type {
|
|
3
|
+
import type { ZoraColor, ZoraControlSize } from '../../internal/recipes';
|
|
4
4
|
import type { ZoraBaseProps } from '../../theme/ZoraBaseProps';
|
|
5
5
|
|
|
6
6
|
export interface ProgressProps extends ZoraBaseProps {
|
|
7
7
|
value: number;
|
|
8
8
|
max?: number;
|
|
9
|
-
|
|
9
|
+
color?: ZoraColor;
|
|
10
10
|
size?: ZoraControlSize;
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
-
export function resolveProgressRole(theme: SurfaceTheme,
|
|
14
|
-
switch (
|
|
13
|
+
export function resolveProgressRole(theme: SurfaceTheme, color: ZoraColor): RoleSemantics {
|
|
14
|
+
switch (color) {
|
|
15
|
+
case 'secondary':
|
|
16
|
+
return theme.semantics.secondary;
|
|
17
|
+
case 'tertiary':
|
|
18
|
+
return theme.semantics.accent;
|
|
19
|
+
case 'quaternary':
|
|
20
|
+
return theme.semantics.highlight;
|
|
21
|
+
case 'error':
|
|
22
|
+
return theme.semantics.error;
|
|
23
|
+
case 'info':
|
|
24
|
+
return theme.semantics.info;
|
|
15
25
|
case 'primary':
|
|
16
26
|
return theme.semantics.action.primary;
|
|
17
27
|
case 'danger':
|
|
@@ -15,7 +15,7 @@ function RadioGroupInner<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 RadioGroupInner<TValue extends string>({
|
|
|
47
47
|
invalid={invalid}
|
|
48
48
|
readOnly={readOnly}
|
|
49
49
|
size={size}
|
|
50
|
-
|
|
50
|
+
color={color}
|
|
51
51
|
onSelect={onValueChange}
|
|
52
52
|
/>
|
|
53
53
|
))}
|
|
@@ -65,7 +65,7 @@ function RadioGroupItem<TValue extends string>({
|
|
|
65
65
|
invalid,
|
|
66
66
|
readOnly,
|
|
67
67
|
size,
|
|
68
|
-
|
|
68
|
+
color,
|
|
69
69
|
onSelect,
|
|
70
70
|
}: {
|
|
71
71
|
option: RadioGroupOption<TValue>;
|
|
@@ -74,7 +74,7 @@ function RadioGroupItem<TValue extends string>({
|
|
|
74
74
|
invalid: boolean;
|
|
75
75
|
readOnly: boolean;
|
|
76
76
|
size: NonNullable<RadioGroupProps<TValue>['size']>;
|
|
77
|
-
|
|
77
|
+
color: NonNullable<RadioGroupProps<TValue>['color']>;
|
|
78
78
|
onSelect: (value: TValue) => void;
|
|
79
79
|
}) {
|
|
80
80
|
return (
|
|
@@ -84,7 +84,7 @@ function RadioGroupItem<TValue extends string>({
|
|
|
84
84
|
invalid={invalid}
|
|
85
85
|
readOnly={readOnly}
|
|
86
86
|
size={size}
|
|
87
|
-
|
|
87
|
+
color={color}
|
|
88
88
|
testID={option.testID}
|
|
89
89
|
onCheckedChange={(nextChecked) => {
|
|
90
90
|
if (nextChecked) onSelect(option.value);
|
|
@@ -93,7 +93,7 @@ function RadioGroupItem<TValue extends string>({
|
|
|
93
93
|
<Stack gap="xs">
|
|
94
94
|
<Text>{option.label}</Text>
|
|
95
95
|
{option.description ? (
|
|
96
|
-
<Text
|
|
96
|
+
<Text emphasis="muted" variant="caption">
|
|
97
97
|
{option.description}
|
|
98
98
|
</Text>
|
|
99
99
|
) : null}
|
|
@@ -18,7 +18,7 @@ export interface RadioGroupProps<TValue extends string>
|
|
|
18
18
|
ZoraBaseProps,
|
|
19
19
|
Pick<
|
|
20
20
|
Omit<SurfaceRadioProps, 'mode' | 'themeId'>,
|
|
21
|
-
'
|
|
21
|
+
'color' | 'size' | 'invalid' | 'readOnly' | 'disabled'
|
|
22
22
|
> {
|
|
23
23
|
value: TValue;
|
|
24
24
|
onValueChange: (value: TValue) => void;
|
|
@@ -14,11 +14,11 @@ function RatingInner({
|
|
|
14
14
|
testID,
|
|
15
15
|
value,
|
|
16
16
|
max = 5,
|
|
17
|
-
|
|
17
|
+
color = 'warning',
|
|
18
18
|
size = 'm',
|
|
19
19
|
}: RatingProps) {
|
|
20
20
|
const { theme } = useZoraTheme();
|
|
21
|
-
const role = resolveRatingRole(theme,
|
|
21
|
+
const role = resolveRatingRole(theme, color);
|
|
22
22
|
const segments = resolveRatingSegments({ value, max });
|
|
23
23
|
const iconSize = resolveIconSize(size);
|
|
24
24
|
|
|
@@ -1,17 +1,27 @@
|
|
|
1
1
|
import type { RoleSemantics, SurfaceTheme } from '@ankhorage/surface';
|
|
2
2
|
|
|
3
|
-
import type {
|
|
3
|
+
import type { ZoraColor, ZoraControlSize } from '../../internal/recipes';
|
|
4
4
|
import type { ZoraBaseProps } from '../../theme/ZoraBaseProps';
|
|
5
5
|
|
|
6
6
|
export interface RatingProps extends ZoraBaseProps {
|
|
7
7
|
value: number;
|
|
8
8
|
max?: number;
|
|
9
|
-
|
|
9
|
+
color?: ZoraColor;
|
|
10
10
|
size?: ZoraControlSize;
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
-
export function resolveRatingRole(theme: SurfaceTheme,
|
|
14
|
-
switch (
|
|
13
|
+
export function resolveRatingRole(theme: SurfaceTheme, color: ZoraColor): RoleSemantics {
|
|
14
|
+
switch (color) {
|
|
15
|
+
case 'secondary':
|
|
16
|
+
return theme.semantics.secondary;
|
|
17
|
+
case 'tertiary':
|
|
18
|
+
return theme.semantics.accent;
|
|
19
|
+
case 'quaternary':
|
|
20
|
+
return theme.semantics.highlight;
|
|
21
|
+
case 'error':
|
|
22
|
+
return theme.semantics.error;
|
|
23
|
+
case 'info':
|
|
24
|
+
return theme.semantics.info;
|
|
15
25
|
case 'primary':
|
|
16
26
|
return theme.semantics.action.primary;
|
|
17
27
|
case 'danger':
|
|
@@ -28,8 +28,8 @@ function TabsInner<TValue extends string = string>({
|
|
|
28
28
|
return (
|
|
29
29
|
<Button
|
|
30
30
|
key={item.value}
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
variant={isActive ? 'solid' : 'ghost'}
|
|
32
|
+
color="neutral"
|
|
33
33
|
size={size}
|
|
34
34
|
disabled={isDisabled}
|
|
35
35
|
onPress={() => onValueChange(item.value)}
|
|
@@ -46,8 +46,8 @@ function TabsInner<TValue extends string = string>({
|
|
|
46
46
|
return (
|
|
47
47
|
<Button
|
|
48
48
|
key={item.value}
|
|
49
|
-
|
|
50
|
-
|
|
49
|
+
variant={isActive ? 'soft' : 'ghost'}
|
|
50
|
+
color={isActive ? 'primary' : 'neutral'}
|
|
51
51
|
size={size}
|
|
52
52
|
disabled={isDisabled}
|
|
53
53
|
onPress={() => onValueChange(item.value)}
|
|
@@ -71,15 +71,19 @@ function TabsInner<TValue extends string = string>({
|
|
|
71
71
|
}}
|
|
72
72
|
>
|
|
73
73
|
<Button
|
|
74
|
-
|
|
75
|
-
|
|
74
|
+
variant="ghost"
|
|
75
|
+
color="neutral"
|
|
76
76
|
size={size}
|
|
77
77
|
disabled={isDisabled}
|
|
78
78
|
onPress={() => onValueChange(item.value)}
|
|
79
79
|
leadingIcon={item.icon}
|
|
80
80
|
testID={item.testID}
|
|
81
81
|
>
|
|
82
|
-
<Text
|
|
82
|
+
<Text
|
|
83
|
+
color={isActive ? 'primary' : undefined}
|
|
84
|
+
emphasis={isActive ? 'default' : 'muted'}
|
|
85
|
+
weight={isActive ? 'semiBold' : 'regular'}
|
|
86
|
+
>
|
|
83
87
|
{item.label}
|
|
84
88
|
</Text>
|
|
85
89
|
{item.badge}
|
|
@@ -38,7 +38,8 @@ function TextInner({
|
|
|
38
38
|
text,
|
|
39
39
|
i18nKey,
|
|
40
40
|
variant = 'body',
|
|
41
|
-
|
|
41
|
+
color,
|
|
42
|
+
emphasis = 'default',
|
|
42
43
|
align,
|
|
43
44
|
weight,
|
|
44
45
|
italic = false,
|
|
@@ -59,7 +60,8 @@ function TextInner({
|
|
|
59
60
|
theme,
|
|
60
61
|
breakpoint,
|
|
61
62
|
variant: resolvedVariant,
|
|
62
|
-
|
|
63
|
+
color,
|
|
64
|
+
emphasis,
|
|
63
65
|
align,
|
|
64
66
|
weight,
|
|
65
67
|
italic,
|
|
@@ -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 textMeta = {
|
|
@@ -9,7 +10,7 @@ export const textMeta = {
|
|
|
9
10
|
label: 'Text',
|
|
10
11
|
defaultProps: {
|
|
11
12
|
text: 'Text',
|
|
12
|
-
|
|
13
|
+
emphasis: 'default',
|
|
13
14
|
variant: 'body',
|
|
14
15
|
},
|
|
15
16
|
},
|
|
@@ -35,11 +36,17 @@ export const textMeta = {
|
|
|
35
36
|
enum: ['body', 'lead', 'bodySmall', 'caption', 'label', 'eyebrow', 'code'],
|
|
36
37
|
default: 'body',
|
|
37
38
|
},
|
|
38
|
-
|
|
39
|
+
color: {
|
|
39
40
|
type: 'enum',
|
|
40
41
|
category: 'Style',
|
|
41
|
-
label: '
|
|
42
|
-
enum:
|
|
42
|
+
label: 'Color',
|
|
43
|
+
enum: ZORA_COLORS,
|
|
44
|
+
},
|
|
45
|
+
emphasis: {
|
|
46
|
+
type: 'enum',
|
|
47
|
+
category: 'Style',
|
|
48
|
+
label: 'Emphasis',
|
|
49
|
+
enum: ZORA_EMPHASES,
|
|
43
50
|
default: 'default',
|
|
44
51
|
},
|
|
45
52
|
align: {
|