@ankhorage/zora 3.1.1 → 3.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +1 -1
  3. package/dist/components/card/meta.d.ts +1 -1
  4. package/dist/components/progress/ProgressRing.d.ts +7 -0
  5. package/dist/components/progress/ProgressRing.d.ts.map +1 -0
  6. package/dist/components/progress/ProgressRing.js +100 -0
  7. package/dist/components/progress/ProgressRing.js.map +1 -0
  8. package/dist/components/progress/index.d.ts +2 -1
  9. package/dist/components/progress/index.d.ts.map +1 -1
  10. package/dist/components/progress/index.js +1 -0
  11. package/dist/components/progress/index.js.map +1 -1
  12. package/dist/components/progress/meta.d.ts +116 -0
  13. package/dist/components/progress/meta.d.ts.map +1 -1
  14. package/dist/components/progress/meta.js +97 -0
  15. package/dist/components/progress/meta.js.map +1 -1
  16. package/dist/components/progress/resolveProgressRingGeometry.d.ts +12 -0
  17. package/dist/components/progress/resolveProgressRingGeometry.d.ts.map +1 -0
  18. package/dist/components/progress/resolveProgressRingGeometry.js +27 -0
  19. package/dist/components/progress/resolveProgressRingGeometry.js.map +1 -0
  20. package/dist/components/progress/types.d.ts +12 -0
  21. package/dist/components/progress/types.d.ts.map +1 -1
  22. package/dist/components/progress/types.js.map +1 -1
  23. package/dist/foundation/meta.d.ts +4 -4
  24. package/dist/index.d.ts +4 -2
  25. package/dist/index.d.ts.map +1 -1
  26. package/dist/index.js +2 -1
  27. package/dist/index.js.map +1 -1
  28. package/dist/layout/screen/meta.d.ts +1 -1
  29. package/dist/layout/screen-section/meta.d.ts +1 -1
  30. package/dist/metadata/allowedChildren.d.ts +4 -3
  31. package/dist/metadata/allowedChildren.d.ts.map +1 -1
  32. package/dist/metadata/allowedChildren.js +13 -0
  33. package/dist/metadata/allowedChildren.js.map +1 -1
  34. package/dist/metadata/bindableComponentMeta.d.ts +2 -2
  35. package/dist/metadata/componentMeta.d.ts.map +1 -1
  36. package/dist/metadata/componentMeta.js +4 -1
  37. package/dist/metadata/componentMeta.js.map +1 -1
  38. package/dist/patterns/content-rail/ContentRail.d.ts +10 -0
  39. package/dist/patterns/content-rail/ContentRail.d.ts.map +1 -0
  40. package/dist/patterns/content-rail/ContentRail.js +175 -0
  41. package/dist/patterns/content-rail/ContentRail.js.map +1 -0
  42. package/dist/patterns/content-rail/index.d.ts +3 -0
  43. package/dist/patterns/content-rail/index.d.ts.map +1 -0
  44. package/dist/patterns/content-rail/index.js +2 -0
  45. package/dist/patterns/content-rail/index.js.map +1 -0
  46. package/dist/patterns/content-rail/meta.d.ts +143 -0
  47. package/dist/patterns/content-rail/meta.d.ts.map +1 -0
  48. package/dist/patterns/content-rail/meta.js +130 -0
  49. package/dist/patterns/content-rail/meta.js.map +1 -0
  50. package/dist/patterns/content-rail/resolveContentRailItemWidth.d.ts +10 -0
  51. package/dist/patterns/content-rail/resolveContentRailItemWidth.d.ts.map +1 -0
  52. package/dist/patterns/content-rail/resolveContentRailItemWidth.js +25 -0
  53. package/dist/patterns/content-rail/resolveContentRailItemWidth.js.map +1 -0
  54. package/dist/patterns/content-rail/resolveContentRailPhysicalOffset.d.ts +6 -0
  55. package/dist/patterns/content-rail/resolveContentRailPhysicalOffset.d.ts.map +1 -0
  56. package/dist/patterns/content-rail/resolveContentRailPhysicalOffset.js +5 -0
  57. package/dist/patterns/content-rail/resolveContentRailPhysicalOffset.js.map +1 -0
  58. package/dist/patterns/content-rail/resolveContentRailState.d.ts +18 -0
  59. package/dist/patterns/content-rail/resolveContentRailState.d.ts.map +1 -0
  60. package/dist/patterns/content-rail/resolveContentRailState.js +21 -0
  61. package/dist/patterns/content-rail/resolveContentRailState.js.map +1 -0
  62. package/dist/patterns/content-rail/types.d.ts +31 -0
  63. package/dist/patterns/content-rail/types.d.ts.map +1 -0
  64. package/dist/patterns/content-rail/types.js +2 -0
  65. package/dist/patterns/content-rail/types.js.map +1 -0
  66. package/dist/patterns/content-rail/useContentRailReducedMotion.d.ts +3 -0
  67. package/dist/patterns/content-rail/useContentRailReducedMotion.d.ts.map +1 -0
  68. package/dist/patterns/content-rail/useContentRailReducedMotion.js +21 -0
  69. package/dist/patterns/content-rail/useContentRailReducedMotion.js.map +1 -0
  70. package/dist/patterns/message-bubble/meta.d.ts +1 -1
  71. package/dist/patterns/notice/meta.d.ts +1 -1
  72. package/dist/patterns/panel/meta.d.ts +1 -1
  73. package/dist/patterns/post-card/meta.d.ts +1 -1
  74. package/dist/patterns/reader/meta.d.ts +2 -2
  75. package/dist/patterns/scanner/meta.d.ts +2 -2
  76. package/dist/registry.d.ts.map +1 -1
  77. package/dist/registry.js +4 -1
  78. package/dist/registry.js.map +1 -1
  79. package/package.json +2 -2
  80. package/src/components/progress/ProgressRing.test.ts +48 -0
  81. package/src/components/progress/ProgressRing.tsx +151 -0
  82. package/src/components/progress/index.ts +2 -1
  83. package/src/components/progress/meta.ts +99 -0
  84. package/src/components/progress/resolveProgressRingGeometry.test.ts +30 -0
  85. package/src/components/progress/resolveProgressRingGeometry.ts +44 -0
  86. package/src/components/progress/types.ts +13 -0
  87. package/src/index.ts +12 -2
  88. package/src/interactionPolicy.test.ts +22 -0
  89. package/src/metadata/allowedChildren.ts +14 -0
  90. package/src/metadata/componentMeta.test.ts +51 -0
  91. package/src/metadata/componentMeta.ts +4 -1
  92. package/src/patterns/content-rail/ContentRail.test.ts +44 -0
  93. package/src/patterns/content-rail/ContentRail.tsx +245 -0
  94. package/src/patterns/content-rail/index.ts +10 -0
  95. package/src/patterns/content-rail/meta.ts +133 -0
  96. package/src/patterns/content-rail/resolveContentRailItemWidth.test.ts +77 -0
  97. package/src/patterns/content-rail/resolveContentRailItemWidth.ts +39 -0
  98. package/src/patterns/content-rail/resolveContentRailPhysicalOffset.test.ts +29 -0
  99. package/src/patterns/content-rail/resolveContentRailPhysicalOffset.ts +12 -0
  100. package/src/patterns/content-rail/resolveContentRailState.test.ts +68 -0
  101. package/src/patterns/content-rail/resolveContentRailState.ts +36 -0
  102. package/src/patterns/content-rail/types.ts +35 -0
  103. package/src/patterns/content-rail/useContentRailReducedMotion.ts +28 -0
  104. package/src/registry.ts +4 -1
  105. package/src/showcaseCoverage.test.ts +1 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,23 @@
1
1
  # Changelog
2
2
 
3
+ ## 3.3.1
4
+
5
+ ### Patch Changes
6
+
7
+ - 0295f82: Update Ankhorage dependencies: `@ankhorage/surface`.
8
+
9
+ ## 3.3.0
10
+
11
+ ### Minor Changes
12
+
13
+ - 62c1c68: Add a manifest-authorable ContentRail pattern with responsive item sizing, touch scrolling, accessible controls, RTL behavior, and reduced-motion support.
14
+
15
+ ## 3.2.0
16
+
17
+ ### Minor Changes
18
+
19
+ - ff90f8c: Add a manifest-authorable, accessible ProgressRing with semantic colors and serializable center content.
20
+
3
21
  ## 3.1.1
4
22
 
5
23
  ### Patch Changes
package/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
 
4
4
  # ZORA
5
5
 
6
- ![license: MIT](././paradox/badges/license.svg) ![npm: v3.0.2](././paradox/badges/npm.svg) ![runtime: bun](././paradox/badges/runtime.svg) ![typescript: strict](././paradox/badges/typescript.svg) ![eslint: checked](././paradox/badges/eslint.svg) ![prettier: checked](././paradox/badges/prettier.svg) ![build: checked](././paradox/badges/build.svg) ![tests: checked](././paradox/badges/tests.svg) ![docs: paradox](././paradox/badges/docs.svg)
6
+ ![license: MIT](././paradox/badges/license.svg) ![npm: v3.1.1](././paradox/badges/npm.svg) ![runtime: bun](././paradox/badges/runtime.svg) ![typescript: strict](././paradox/badges/typescript.svg) ![eslint: checked](././paradox/badges/eslint.svg) ![prettier: checked](././paradox/badges/prettier.svg) ![build: checked](././paradox/badges/build.svg) ![tests: checked](././paradox/badges/tests.svg) ![docs: paradox](././paradox/badges/docs.svg)
7
7
 
8
8
  Opinionated React Native and React Native Web UI kit built on @ankhorage/surface.
9
9
 
@@ -2,7 +2,7 @@ export declare const cardMeta: {
2
2
  readonly name: "Card";
3
3
  readonly category: "component";
4
4
  readonly directManifestNode: true;
5
- readonly allowedChildren: readonly ["Box", "Stack", "Grid", "Container", "Divider", "Text", "Heading", "Button", "ButtonGroup", "ThemeModeToggle", "Input", "Textarea", "FormField", "Card", "Panel", "Notice", "EmptyState", "SectionHeader", "SettingsRow", "PostCard", "ChatListItem", "MessageBubble", "ReaderSurface"];
5
+ readonly allowedChildren: readonly ["Box", "Stack", "Grid", "Container", "Divider", "Text", "Heading", "Button", "ButtonGroup", "ThemeModeToggle", "Input", "Textarea", "FormField", "Card", "Panel", "Notice", "EmptyState", "SectionHeader", "SettingsRow", "PostCard", "ChatListItem", "MessageBubble", "ProgressRing", "ReaderSurface", "ContentRail"];
6
6
  readonly blueprint: {
7
7
  readonly label: "Card";
8
8
  readonly defaultProps: {
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ import { type ProgressRingProps } from './types';
3
+ /***
4
+ * Circular determinate progress with optional serializable center value and label content.
5
+ */
6
+ export declare const ProgressRing: (props: ProgressRingProps) => React.ReactElement | null;
7
+ //# sourceMappingURL=ProgressRing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProgressRing.d.ts","sourceRoot":"","sources":["../../../src/components/progress/ProgressRing.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAS1B,OAAO,EAAE,KAAK,iBAAiB,EAAuB,MAAM,SAAS,CAAC;AA0ItE;;GAEG;AACH,eAAO,MAAM,YAAY,yDAAwC,CAAC"}
@@ -0,0 +1,100 @@
1
+ import React from 'react';
2
+ import { StyleSheet, View } from 'react-native';
3
+ import { Stack } from '../../foundation';
4
+ import { useZoraTheme } from '../../theme/useZoraTheme';
5
+ import { withZoraThemeScope } from '../../theme/withZoraThemeScope';
6
+ import { Text } from '../text';
7
+ import { resolveProgressFraction } from './resolveProgressFraction';
8
+ import { resolveProgressRingGeometry } from './resolveProgressRingGeometry';
9
+ import { resolveProgressRole } from './types';
10
+ function ProgressRingInner({ themeId: _themeId, mode: _mode, interactionPolicy: _interactionPolicy, accessibilityLabel = 'Progress', accessibilityValueText, centerLabel, centerValue, color = 'primary', max = 100, size = 120, testID, thickness = 10, trackColor = 'neutral', value, }) {
11
+ const { theme } = useZoraTheme();
12
+ const fraction = resolveProgressFraction({ max, value });
13
+ const geometry = resolveProgressRingGeometry({ fraction, size, thickness });
14
+ const progressRole = resolveProgressRole(theme, color);
15
+ const trackRole = resolveProgressRole(theme, trackColor);
16
+ const accessibilityMaximum = Number.isFinite(max) && max > 0 ? max : 1;
17
+ const accessibilityValue = fraction * accessibilityMaximum;
18
+ const valueText = accessibilityValueText ?? `${Math.round(fraction * 100)}%`;
19
+ const segments = Array.from({ length: geometry.filledSegmentCount });
20
+ return (<View accessibilityLabel={accessibilityLabel} accessibilityRole="progressbar" accessibilityValue={{
21
+ max: accessibilityMaximum,
22
+ min: 0,
23
+ now: accessibilityValue,
24
+ text: valueText,
25
+ }} accessible style={{ height: geometry.diameter, width: geometry.diameter }} testID={testID}>
26
+ <View importantForAccessibility="no-hide-descendants" pointerEvents="none" style={styles.visual}>
27
+ <View style={[
28
+ styles.track,
29
+ {
30
+ borderColor: trackRole.softBg,
31
+ borderRadius: geometry.diameter / 2,
32
+ borderWidth: geometry.strokeWidth,
33
+ },
34
+ ]}/>
35
+
36
+ {segments.map((_, index) => (<View key={index} style={[
37
+ styles.segmentLayer,
38
+ { transform: [{ rotate: `${index * (360 / geometry.segmentCount)}deg` }] },
39
+ ]}>
40
+ <View style={{
41
+ backgroundColor: progressRole.base,
42
+ borderRadius: geometry.strokeWidth / 2,
43
+ height: geometry.strokeWidth,
44
+ left: (geometry.diameter - geometry.segmentWidth) / 2,
45
+ position: 'absolute',
46
+ top: 0,
47
+ width: geometry.segmentWidth,
48
+ }}/>
49
+ </View>))}
50
+ </View>
51
+
52
+ {centerValue !== undefined || centerLabel !== undefined ? (<View importantForAccessibility="no-hide-descendants" pointerEvents="none" style={styles.center}>
53
+ <Stack align="center" gap="xxs" px="s">
54
+ {centerValue !== undefined ? (<Text align="center" variant="lead" weight="bold">
55
+ {centerValue}
56
+ </Text>) : null}
57
+ {centerLabel !== undefined ? (<Text align="center" emphasis="muted" numberOfLines={2} variant="caption">
58
+ {centerLabel}
59
+ </Text>) : null}
60
+ </Stack>
61
+ </View>) : null}
62
+ </View>);
63
+ }
64
+ const styles = StyleSheet.create({
65
+ center: {
66
+ alignItems: 'center',
67
+ bottom: 0,
68
+ justifyContent: 'center',
69
+ left: 0,
70
+ position: 'absolute',
71
+ right: 0,
72
+ top: 0,
73
+ },
74
+ segmentLayer: {
75
+ bottom: 0,
76
+ left: 0,
77
+ position: 'absolute',
78
+ right: 0,
79
+ top: 0,
80
+ },
81
+ track: {
82
+ bottom: 0,
83
+ left: 0,
84
+ position: 'absolute',
85
+ right: 0,
86
+ top: 0,
87
+ },
88
+ visual: {
89
+ bottom: 0,
90
+ left: 0,
91
+ position: 'absolute',
92
+ right: 0,
93
+ top: 0,
94
+ },
95
+ });
96
+ /***
97
+ * Circular determinate progress with optional serializable center value and label content.
98
+ */
99
+ export const ProgressRing = withZoraThemeScope(ProgressRingInner);
100
+ //# sourceMappingURL=ProgressRing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProgressRing.js","sourceRoot":"","sources":["../../../src/components/progress/ProgressRing.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\nimport { StyleSheet, View } from 'react-native';\n\nimport { Stack } from '../../foundation';\nimport { useZoraTheme } from '../../theme/useZoraTheme';\nimport { withZoraThemeScope } from '../../theme/withZoraThemeScope';\nimport { Text } from '../text';\nimport { resolveProgressFraction } from './resolveProgressFraction';\nimport { resolveProgressRingGeometry } from './resolveProgressRingGeometry';\nimport { type ProgressRingProps, resolveProgressRole } from './types';\n\nfunction ProgressRingInner({\n themeId: _themeId,\n mode: _mode,\n interactionPolicy: _interactionPolicy,\n accessibilityLabel = 'Progress',\n accessibilityValueText,\n centerLabel,\n centerValue,\n color = 'primary',\n max = 100,\n size = 120,\n testID,\n thickness = 10,\n trackColor = 'neutral',\n value,\n}: ProgressRingProps) {\n const { theme } = useZoraTheme();\n const fraction = resolveProgressFraction({ max, value });\n const geometry = resolveProgressRingGeometry({ fraction, size, thickness });\n const progressRole = resolveProgressRole(theme, color);\n const trackRole = resolveProgressRole(theme, trackColor);\n const accessibilityMaximum = Number.isFinite(max) && max > 0 ? max : 1;\n const accessibilityValue = fraction * accessibilityMaximum;\n const valueText = accessibilityValueText ?? `${Math.round(fraction * 100)}%`;\n const segments = Array.from({ length: geometry.filledSegmentCount });\n\n return (\n <View\n accessibilityLabel={accessibilityLabel}\n accessibilityRole=\"progressbar\"\n accessibilityValue={{\n max: accessibilityMaximum,\n min: 0,\n now: accessibilityValue,\n text: valueText,\n }}\n accessible\n style={{ height: geometry.diameter, width: geometry.diameter }}\n testID={testID}\n >\n <View\n importantForAccessibility=\"no-hide-descendants\"\n pointerEvents=\"none\"\n style={styles.visual}\n >\n <View\n style={[\n styles.track,\n {\n borderColor: trackRole.softBg,\n borderRadius: geometry.diameter / 2,\n borderWidth: geometry.strokeWidth,\n },\n ]}\n />\n\n {segments.map((_, index) => (\n <View\n key={index}\n style={[\n styles.segmentLayer,\n { transform: [{ rotate: `${index * (360 / geometry.segmentCount)}deg` }] },\n ]}\n >\n <View\n style={{\n backgroundColor: progressRole.base,\n borderRadius: geometry.strokeWidth / 2,\n height: geometry.strokeWidth,\n left: (geometry.diameter - geometry.segmentWidth) / 2,\n position: 'absolute',\n top: 0,\n width: geometry.segmentWidth,\n }}\n />\n </View>\n ))}\n </View>\n\n {centerValue !== undefined || centerLabel !== undefined ? (\n <View\n importantForAccessibility=\"no-hide-descendants\"\n pointerEvents=\"none\"\n style={styles.center}\n >\n <Stack align=\"center\" gap=\"xxs\" px=\"s\">\n {centerValue !== undefined ? (\n <Text align=\"center\" variant=\"lead\" weight=\"bold\">\n {centerValue}\n </Text>\n ) : null}\n {centerLabel !== undefined ? (\n <Text align=\"center\" emphasis=\"muted\" numberOfLines={2} variant=\"caption\">\n {centerLabel}\n </Text>\n ) : null}\n </Stack>\n </View>\n ) : null}\n </View>\n );\n}\n\nconst styles = StyleSheet.create({\n center: {\n alignItems: 'center',\n bottom: 0,\n justifyContent: 'center',\n left: 0,\n position: 'absolute',\n right: 0,\n top: 0,\n },\n segmentLayer: {\n bottom: 0,\n left: 0,\n position: 'absolute',\n right: 0,\n top: 0,\n },\n track: {\n bottom: 0,\n left: 0,\n position: 'absolute',\n right: 0,\n top: 0,\n },\n visual: {\n bottom: 0,\n left: 0,\n position: 'absolute',\n right: 0,\n top: 0,\n },\n});\n\n/***\n * Circular determinate progress with optional serializable center value and label content.\n */\nexport const ProgressRing = withZoraThemeScope(ProgressRingInner);\n"]}
@@ -1,3 +1,4 @@
1
1
  export { Progress } from './Progress';
2
- export type { ProgressProps } from './types';
2
+ export { ProgressRing } from './ProgressRing';
3
+ export type { ProgressProps, ProgressRingProps } from './types';
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/progress/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/progress/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC"}
@@ -1,2 +1,3 @@
1
1
  export { Progress } from './Progress';
2
+ export { ProgressRing } from './ProgressRing';
2
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/progress/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC","sourcesContent":["export { Progress } from './Progress';\nexport type { ProgressProps } from './types';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/progress/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC","sourcesContent":["export { Progress } from './Progress';\nexport { ProgressRing } from './ProgressRing';\nexport type { ProgressProps, ProgressRingProps } from './types';\n"]}
@@ -41,4 +41,120 @@ export declare const progressMeta: {
41
41
  };
42
42
  };
43
43
  };
44
+ export declare const progressRingMeta: {
45
+ readonly name: "ProgressRing";
46
+ readonly category: "component";
47
+ readonly description: "Displays circular determinate progress with optional center value and label text.";
48
+ readonly directManifestNode: true;
49
+ readonly allowedChildren: readonly [];
50
+ readonly blueprint: {
51
+ readonly label: "Progress ring";
52
+ readonly defaultProps: {
53
+ readonly value: 68;
54
+ readonly max: 100;
55
+ readonly color: "primary";
56
+ readonly trackColor: "neutral";
57
+ readonly size: 120;
58
+ readonly thickness: 10;
59
+ readonly centerValue: "68%";
60
+ readonly centerLabel: "Complete";
61
+ readonly accessibilityLabel: "Progress";
62
+ readonly accessibilityValueText: "68% complete";
63
+ };
64
+ };
65
+ readonly props: {
66
+ readonly value: {
67
+ readonly type: "number";
68
+ readonly category: "State";
69
+ readonly label: "Value";
70
+ readonly default: 68;
71
+ readonly authoring: {
72
+ readonly authority: "instance";
73
+ };
74
+ };
75
+ readonly max: {
76
+ readonly type: "number";
77
+ readonly category: "State";
78
+ readonly label: "Maximum";
79
+ readonly default: 100;
80
+ readonly authoring: {
81
+ readonly authority: "instance";
82
+ };
83
+ };
84
+ readonly centerValue: {
85
+ readonly type: "string";
86
+ readonly category: "Content";
87
+ readonly label: "Center value";
88
+ readonly default: "68%";
89
+ readonly authoring: {
90
+ readonly authority: "instance";
91
+ };
92
+ };
93
+ readonly centerLabel: {
94
+ readonly type: "string";
95
+ readonly category: "Content";
96
+ readonly label: "Center label";
97
+ readonly default: "Complete";
98
+ readonly authoring: {
99
+ readonly authority: "instance";
100
+ };
101
+ };
102
+ readonly accessibilityLabel: {
103
+ readonly type: "string";
104
+ readonly category: "Accessibility";
105
+ readonly label: "Accessibility label";
106
+ readonly default: "Progress";
107
+ readonly authoring: {
108
+ readonly authority: "instance";
109
+ };
110
+ };
111
+ readonly accessibilityValueText: {
112
+ readonly type: "string";
113
+ readonly category: "Accessibility";
114
+ readonly label: "Accessibility value text";
115
+ readonly default: "68% complete";
116
+ readonly authoring: {
117
+ readonly authority: "instance";
118
+ };
119
+ };
120
+ readonly color: {
121
+ readonly type: "enum";
122
+ readonly category: "Style";
123
+ readonly label: "Progress color";
124
+ readonly enum: readonly ["primary", "secondary", "tertiary", "quaternary", "neutral", "success", "warning", "error", "info", "danger"];
125
+ readonly default: "primary";
126
+ readonly authoring: {
127
+ readonly authority: "instance";
128
+ };
129
+ };
130
+ readonly trackColor: {
131
+ readonly type: "enum";
132
+ readonly category: "Style";
133
+ readonly label: "Track color";
134
+ readonly enum: readonly ["primary", "secondary", "tertiary", "quaternary", "neutral", "success", "warning", "error", "info", "danger"];
135
+ readonly default: "neutral";
136
+ readonly authoring: {
137
+ readonly authority: "instance";
138
+ };
139
+ };
140
+ readonly size: {
141
+ readonly type: "number";
142
+ readonly category: "Layout";
143
+ readonly label: "Diameter";
144
+ readonly default: 120;
145
+ readonly authoring: {
146
+ readonly authority: "instance";
147
+ };
148
+ };
149
+ readonly thickness: {
150
+ readonly type: "number";
151
+ readonly category: "Style";
152
+ readonly label: "Thickness";
153
+ readonly default: 10;
154
+ readonly authoring: {
155
+ readonly authority: "instance";
156
+ };
157
+ };
158
+ };
159
+ };
44
160
  //# sourceMappingURL=meta.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"meta.d.ts","sourceRoot":"","sources":["../../../src/components/progress/meta.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0Ca,CAAC"}
1
+ {"version":3,"file":"meta.d.ts","sourceRoot":"","sources":["../../../src/components/progress/meta.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0Ca,CAAC;AAIvC,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+FS,CAAC"}
@@ -42,4 +42,101 @@ export const progressMeta = {
42
42
  },
43
43
  },
44
44
  };
45
+ const instanceAuthoring = { authority: 'instance' };
46
+ export const progressRingMeta = {
47
+ name: 'ProgressRing',
48
+ category: 'component',
49
+ description: 'Displays circular determinate progress with optional center value and label text.',
50
+ directManifestNode: true,
51
+ allowedChildren: [],
52
+ blueprint: {
53
+ label: 'Progress ring',
54
+ defaultProps: {
55
+ value: 68,
56
+ max: 100,
57
+ color: 'primary',
58
+ trackColor: 'neutral',
59
+ size: 120,
60
+ thickness: 10,
61
+ centerValue: '68%',
62
+ centerLabel: 'Complete',
63
+ accessibilityLabel: 'Progress',
64
+ accessibilityValueText: '68% complete',
65
+ },
66
+ },
67
+ props: {
68
+ value: {
69
+ type: 'number',
70
+ category: 'State',
71
+ label: 'Value',
72
+ default: 68,
73
+ authoring: instanceAuthoring,
74
+ },
75
+ max: {
76
+ type: 'number',
77
+ category: 'State',
78
+ label: 'Maximum',
79
+ default: 100,
80
+ authoring: instanceAuthoring,
81
+ },
82
+ centerValue: {
83
+ type: 'string',
84
+ category: 'Content',
85
+ label: 'Center value',
86
+ default: '68%',
87
+ authoring: instanceAuthoring,
88
+ },
89
+ centerLabel: {
90
+ type: 'string',
91
+ category: 'Content',
92
+ label: 'Center label',
93
+ default: 'Complete',
94
+ authoring: instanceAuthoring,
95
+ },
96
+ accessibilityLabel: {
97
+ type: 'string',
98
+ category: 'Accessibility',
99
+ label: 'Accessibility label',
100
+ default: 'Progress',
101
+ authoring: instanceAuthoring,
102
+ },
103
+ accessibilityValueText: {
104
+ type: 'string',
105
+ category: 'Accessibility',
106
+ label: 'Accessibility value text',
107
+ default: '68% complete',
108
+ authoring: instanceAuthoring,
109
+ },
110
+ color: {
111
+ type: 'enum',
112
+ category: 'Style',
113
+ label: 'Progress color',
114
+ enum: [...ZORA_COLORS],
115
+ default: 'primary',
116
+ authoring: instanceAuthoring,
117
+ },
118
+ trackColor: {
119
+ type: 'enum',
120
+ category: 'Style',
121
+ label: 'Track color',
122
+ enum: [...ZORA_COLORS],
123
+ default: 'neutral',
124
+ authoring: instanceAuthoring,
125
+ },
126
+ size: {
127
+ type: 'number',
128
+ category: 'Layout',
129
+ label: 'Diameter',
130
+ default: 120,
131
+ authoring: instanceAuthoring,
132
+ },
133
+ thickness: {
134
+ type: 'number',
135
+ category: 'Style',
136
+ label: 'Thickness',
137
+ default: 10,
138
+ authoring: instanceAuthoring,
139
+ },
140
+ },
141
+ };
45
142
  //# sourceMappingURL=meta.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"meta.js","sourceRoot":"","sources":["../../../src/components/progress/meta.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAGxD,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,IAAI,EAAE,UAAU;IAChB,QAAQ,EAAE,WAAW;IACrB,kBAAkB,EAAE,IAAI;IACxB,eAAe,EAAE,EAAE;IACnB,SAAS,EAAE;QACT,KAAK,EAAE,UAAU;QACjB,YAAY,EAAE;YACZ,KAAK,EAAE,EAAE;YACT,GAAG,EAAE,GAAG;YACR,KAAK,EAAE,SAAS;YAChB,IAAI,EAAE,GAAG;SACV;KACF;IACD,KAAK,EAAE;QACL,KAAK,EAAE;YACL,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,OAAO;YACd,OAAO,EAAE,EAAE;SACZ;QACD,GAAG,EAAE;YACH,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,KAAK;YACZ,OAAO,EAAE,GAAG;SACb;QACD,KAAK,EAAE;YACL,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,CAAC,GAAG,WAAW,CAAC;YACtB,OAAO,EAAE,SAAS;SACnB;QACD,IAAI,EAAE;YACJ,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,MAAM;YACb,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;YACrB,OAAO,EAAE,GAAG;SACb;KACF;CACmC,CAAC","sourcesContent":["import { ZORA_COLORS } from '../../internal/colorModel';\nimport type { ZoraComponentMeta } from '../../metadata';\n\nexport const progressMeta = {\n name: 'Progress',\n category: 'component',\n directManifestNode: true,\n allowedChildren: [],\n blueprint: {\n label: 'Progress',\n defaultProps: {\n value: 50,\n max: 100,\n color: 'primary',\n size: 'm',\n },\n },\n props: {\n value: {\n type: 'number',\n category: 'State',\n label: 'Value',\n default: 50,\n },\n max: {\n type: 'number',\n category: 'State',\n label: 'Max',\n default: 100,\n },\n color: {\n type: 'enum',\n category: 'Style',\n label: 'Color',\n enum: [...ZORA_COLORS],\n default: 'primary',\n },\n size: {\n type: 'enum',\n category: 'Style',\n label: 'Size',\n enum: ['s', 'm', 'l'],\n default: 'm',\n },\n },\n} as const satisfies ZoraComponentMeta;\n"]}
1
+ {"version":3,"file":"meta.js","sourceRoot":"","sources":["../../../src/components/progress/meta.ts"],"names":[],"mappings":"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","sourcesContent":["import { ZORA_COLORS } from '../../internal/colorModel';\nimport type { ZoraComponentMeta } from '../../metadata';\n\nexport const progressMeta = {\n name: 'Progress',\n category: 'component',\n directManifestNode: true,\n allowedChildren: [],\n blueprint: {\n label: 'Progress',\n defaultProps: {\n value: 50,\n max: 100,\n color: 'primary',\n size: 'm',\n },\n },\n props: {\n value: {\n type: 'number',\n category: 'State',\n label: 'Value',\n default: 50,\n },\n max: {\n type: 'number',\n category: 'State',\n label: 'Max',\n default: 100,\n },\n color: {\n type: 'enum',\n category: 'Style',\n label: 'Color',\n enum: [...ZORA_COLORS],\n default: 'primary',\n },\n size: {\n type: 'enum',\n category: 'Style',\n label: 'Size',\n enum: ['s', 'm', 'l'],\n default: 'm',\n },\n },\n} as const satisfies ZoraComponentMeta;\n\nconst instanceAuthoring = { authority: 'instance' } as const;\n\nexport const progressRingMeta = {\n name: 'ProgressRing',\n category: 'component',\n description: 'Displays circular determinate progress with optional center value and label text.',\n directManifestNode: true,\n allowedChildren: [],\n blueprint: {\n label: 'Progress ring',\n defaultProps: {\n value: 68,\n max: 100,\n color: 'primary',\n trackColor: 'neutral',\n size: 120,\n thickness: 10,\n centerValue: '68%',\n centerLabel: 'Complete',\n accessibilityLabel: 'Progress',\n accessibilityValueText: '68% complete',\n },\n },\n props: {\n value: {\n type: 'number',\n category: 'State',\n label: 'Value',\n default: 68,\n authoring: instanceAuthoring,\n },\n max: {\n type: 'number',\n category: 'State',\n label: 'Maximum',\n default: 100,\n authoring: instanceAuthoring,\n },\n centerValue: {\n type: 'string',\n category: 'Content',\n label: 'Center value',\n default: '68%',\n authoring: instanceAuthoring,\n },\n centerLabel: {\n type: 'string',\n category: 'Content',\n label: 'Center label',\n default: 'Complete',\n authoring: instanceAuthoring,\n },\n accessibilityLabel: {\n type: 'string',\n category: 'Accessibility',\n label: 'Accessibility label',\n default: 'Progress',\n authoring: instanceAuthoring,\n },\n accessibilityValueText: {\n type: 'string',\n category: 'Accessibility',\n label: 'Accessibility value text',\n default: '68% complete',\n authoring: instanceAuthoring,\n },\n color: {\n type: 'enum',\n category: 'Style',\n label: 'Progress color',\n enum: [...ZORA_COLORS],\n default: 'primary',\n authoring: instanceAuthoring,\n },\n trackColor: {\n type: 'enum',\n category: 'Style',\n label: 'Track color',\n enum: [...ZORA_COLORS],\n default: 'neutral',\n authoring: instanceAuthoring,\n },\n size: {\n type: 'number',\n category: 'Layout',\n label: 'Diameter',\n default: 120,\n authoring: instanceAuthoring,\n },\n thickness: {\n type: 'number',\n category: 'Style',\n label: 'Thickness',\n default: 10,\n authoring: instanceAuthoring,\n },\n },\n} as const satisfies ZoraComponentMeta;\n"]}
@@ -0,0 +1,12 @@
1
+ export declare function resolveProgressRingGeometry({ fraction, size, thickness, }: {
2
+ fraction: number;
3
+ size: number;
4
+ thickness: number;
5
+ }): {
6
+ diameter: number;
7
+ filledSegmentCount: number;
8
+ segmentCount: number;
9
+ segmentWidth: number;
10
+ strokeWidth: number;
11
+ };
12
+ //# sourceMappingURL=resolveProgressRingGeometry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveProgressRingGeometry.d.ts","sourceRoot":"","sources":["../../../src/components/progress/resolveProgressRingGeometry.ts"],"names":[],"mappings":"AAAA,wBAAgB,2BAA2B,CAAC,EAC1C,QAAQ,EACR,IAAI,EACJ,SAAS,GACV,EAAE;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;;;;;;EAoBA"}
@@ -0,0 +1,27 @@
1
+ export function resolveProgressRingGeometry({ fraction, size, thickness, }) {
2
+ const diameter = normalizePositiveNumber(size, DEFAULT_SIZE, MINIMUM_SIZE);
3
+ const strokeWidth = Math.min(normalizePositiveNumber(thickness, DEFAULT_THICKNESS, MINIMUM_THICKNESS), diameter / 2);
4
+ const centerlineRadius = (diameter - strokeWidth) / 2;
5
+ const segmentCount = Math.max(MINIMUM_SEGMENT_COUNT, Math.min(MAXIMUM_SEGMENT_COUNT, Math.round(Math.PI * centerlineRadius)));
6
+ const normalizedFraction = Math.min(Math.max(Number.isFinite(fraction) ? fraction : 0, 0), 1);
7
+ return {
8
+ diameter,
9
+ filledSegmentCount: Math.round(normalizedFraction * segmentCount),
10
+ segmentCount,
11
+ segmentWidth: Math.max(1, (2 * Math.PI * centerlineRadius) / segmentCount + 0.5),
12
+ strokeWidth,
13
+ };
14
+ }
15
+ const DEFAULT_SIZE = 120;
16
+ const DEFAULT_THICKNESS = 10;
17
+ const MAXIMUM_SEGMENT_COUNT = 120;
18
+ const MINIMUM_SEGMENT_COUNT = 32;
19
+ const MINIMUM_SIZE = 24;
20
+ const MINIMUM_THICKNESS = 1;
21
+ function normalizePositiveNumber(value, fallback, minimum) {
22
+ if (!Number.isFinite(value) || value <= 0) {
23
+ return fallback;
24
+ }
25
+ return Math.max(value, minimum);
26
+ }
27
+ //# sourceMappingURL=resolveProgressRingGeometry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveProgressRingGeometry.js","sourceRoot":"","sources":["../../../src/components/progress/resolveProgressRingGeometry.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,2BAA2B,CAAC,EAC1C,QAAQ,EACR,IAAI,EACJ,SAAS,GAKV;IACC,MAAM,QAAQ,GAAG,uBAAuB,CAAC,IAAI,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;IAC3E,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAC1B,uBAAuB,CAAC,SAAS,EAAE,iBAAiB,EAAE,iBAAiB,CAAC,EACxE,QAAQ,GAAG,CAAC,CACb,CAAC;IACF,MAAM,gBAAgB,GAAG,CAAC,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IACtD,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAC3B,qBAAqB,EACrB,IAAI,CAAC,GAAG,CAAC,qBAAqB,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,gBAAgB,CAAC,CAAC,CACxE,CAAC;IACF,MAAM,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAE9F,OAAO;QACL,QAAQ;QACR,kBAAkB,EAAE,IAAI,CAAC,KAAK,CAAC,kBAAkB,GAAG,YAAY,CAAC;QACjE,YAAY;QACZ,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,gBAAgB,CAAC,GAAG,YAAY,GAAG,GAAG,CAAC;QAChF,WAAW;KACZ,CAAC;AACJ,CAAC;AAED,MAAM,YAAY,GAAG,GAAG,CAAC;AACzB,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAC7B,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAClC,MAAM,qBAAqB,GAAG,EAAE,CAAC;AACjC,MAAM,YAAY,GAAG,EAAE,CAAC;AACxB,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAE5B,SAAS,uBAAuB,CAAC,KAAa,EAAE,QAAgB,EAAE,OAAe;IAC/E,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QAC1C,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAClC,CAAC","sourcesContent":["export function resolveProgressRingGeometry({\n fraction,\n size,\n thickness,\n}: {\n fraction: number;\n size: number;\n thickness: number;\n}) {\n const diameter = normalizePositiveNumber(size, DEFAULT_SIZE, MINIMUM_SIZE);\n const strokeWidth = Math.min(\n normalizePositiveNumber(thickness, DEFAULT_THICKNESS, MINIMUM_THICKNESS),\n diameter / 2,\n );\n const centerlineRadius = (diameter - strokeWidth) / 2;\n const segmentCount = Math.max(\n MINIMUM_SEGMENT_COUNT,\n Math.min(MAXIMUM_SEGMENT_COUNT, Math.round(Math.PI * centerlineRadius)),\n );\n const normalizedFraction = Math.min(Math.max(Number.isFinite(fraction) ? fraction : 0, 0), 1);\n\n return {\n diameter,\n filledSegmentCount: Math.round(normalizedFraction * segmentCount),\n segmentCount,\n segmentWidth: Math.max(1, (2 * Math.PI * centerlineRadius) / segmentCount + 0.5),\n strokeWidth,\n };\n}\n\nconst DEFAULT_SIZE = 120;\nconst DEFAULT_THICKNESS = 10;\nconst MAXIMUM_SEGMENT_COUNT = 120;\nconst MINIMUM_SEGMENT_COUNT = 32;\nconst MINIMUM_SIZE = 24;\nconst MINIMUM_THICKNESS = 1;\n\nfunction normalizePositiveNumber(value: number, fallback: number, minimum: number): number {\n if (!Number.isFinite(value) || value <= 0) {\n return fallback;\n }\n\n return Math.max(value, minimum);\n}\n"]}
@@ -7,5 +7,17 @@ export interface ProgressProps extends ZoraBaseProps {
7
7
  color?: ZoraColor;
8
8
  size?: ZoraControlSize;
9
9
  }
10
+ export interface ProgressRingProps extends ZoraBaseProps {
11
+ value: number;
12
+ max?: number;
13
+ color?: ZoraColor;
14
+ trackColor?: ZoraColor;
15
+ size?: number;
16
+ thickness?: number;
17
+ centerValue?: string;
18
+ centerLabel?: string;
19
+ accessibilityLabel?: string;
20
+ accessibilityValueText?: string;
21
+ }
10
22
  export declare function resolveProgressRole(theme: SurfaceTheme, color: ZoraColor): RoleSemantics;
11
23
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/progress/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEtE,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE/D,MAAM,WAAW,aAAc,SAAQ,aAAa;IAClD,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,IAAI,CAAC,EAAE,eAAe,CAAC;CACxB;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,GAAG,aAAa,CAwBxF"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/progress/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEtE,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE/D,MAAM,WAAW,aAAc,SAAQ,aAAa;IAClD,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,IAAI,CAAC,EAAE,eAAe,CAAC;CACxB;AAED,MAAM,WAAW,iBAAkB,SAAQ,aAAa;IACtD,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,GAAG,aAAa,CAwBxF"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/components/progress/types.ts"],"names":[],"mappings":"AAYA,MAAM,UAAU,mBAAmB,CAAC,KAAmB,EAAE,KAAgB;IACvE,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,WAAW;YACd,OAAO,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC;QACnC,KAAK,UAAU;YACb,OAAO,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC;QAChC,KAAK,YAAY;YACf,OAAO,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC;QACnC,KAAK,OAAO;YACV,OAAO,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC;QAC/B,KAAK,MAAM;YACT,OAAO,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC;QAC9B,KAAK,SAAS;YACZ,OAAO,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC;QACxC,KAAK,QAAQ;YACX,OAAO,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC;QACvC,KAAK,SAAS;YACZ,OAAO,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC;QACjC,KAAK,SAAS;YACZ,OAAO,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC;QACjC,KAAK,SAAS,CAAC;QACf;YACE,OAAO,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC;IAC1C,CAAC;AACH,CAAC","sourcesContent":["import type { RoleSemantics, SurfaceTheme } from '@ankhorage/surface';\n\nimport type { ZoraColor, ZoraControlSize } from '../../internal/recipes';\nimport type { ZoraBaseProps } from '../../theme/ZoraBaseProps';\n\nexport interface ProgressProps extends ZoraBaseProps {\n value: number;\n max?: number;\n color?: ZoraColor;\n size?: ZoraControlSize;\n}\n\nexport function resolveProgressRole(theme: SurfaceTheme, color: ZoraColor): RoleSemantics {\n switch (color) {\n case 'secondary':\n return theme.semantics.secondary;\n case 'tertiary':\n return theme.semantics.accent;\n case 'quaternary':\n return theme.semantics.highlight;\n case 'error':\n return theme.semantics.error;\n case 'info':\n return theme.semantics.info;\n case 'primary':\n return theme.semantics.action.primary;\n case 'danger':\n return theme.semantics.action.danger;\n case 'success':\n return theme.semantics.success;\n case 'warning':\n return theme.semantics.warning;\n case 'neutral':\n default:\n return theme.semantics.action.neutral;\n }\n}\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/components/progress/types.ts"],"names":[],"mappings":"AAyBA,MAAM,UAAU,mBAAmB,CAAC,KAAmB,EAAE,KAAgB;IACvE,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,WAAW;YACd,OAAO,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC;QACnC,KAAK,UAAU;YACb,OAAO,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC;QAChC,KAAK,YAAY;YACf,OAAO,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC;QACnC,KAAK,OAAO;YACV,OAAO,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC;QAC/B,KAAK,MAAM;YACT,OAAO,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC;QAC9B,KAAK,SAAS;YACZ,OAAO,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC;QACxC,KAAK,QAAQ;YACX,OAAO,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC;QACvC,KAAK,SAAS;YACZ,OAAO,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC;QACjC,KAAK,SAAS;YACZ,OAAO,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC;QACjC,KAAK,SAAS,CAAC;QACf;YACE,OAAO,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC;IAC1C,CAAC;AACH,CAAC","sourcesContent":["import type { RoleSemantics, SurfaceTheme } from '@ankhorage/surface';\n\nimport type { ZoraColor, ZoraControlSize } from '../../internal/recipes';\nimport type { ZoraBaseProps } from '../../theme/ZoraBaseProps';\n\nexport interface ProgressProps extends ZoraBaseProps {\n value: number;\n max?: number;\n color?: ZoraColor;\n size?: ZoraControlSize;\n}\n\nexport interface ProgressRingProps extends ZoraBaseProps {\n value: number;\n max?: number;\n color?: ZoraColor;\n trackColor?: ZoraColor;\n size?: number;\n thickness?: number;\n centerValue?: string;\n centerLabel?: string;\n accessibilityLabel?: string;\n accessibilityValueText?: string;\n}\n\nexport function resolveProgressRole(theme: SurfaceTheme, color: ZoraColor): RoleSemantics {\n switch (color) {\n case 'secondary':\n return theme.semantics.secondary;\n case 'tertiary':\n return theme.semantics.accent;\n case 'quaternary':\n return theme.semantics.highlight;\n case 'error':\n return theme.semantics.error;\n case 'info':\n return theme.semantics.info;\n case 'primary':\n return theme.semantics.action.primary;\n case 'danger':\n return theme.semantics.action.danger;\n case 'success':\n return theme.semantics.success;\n case 'warning':\n return theme.semantics.warning;\n case 'neutral':\n default:\n return theme.semantics.action.neutral;\n }\n}\n"]}
@@ -3,7 +3,7 @@ export declare const foundationMetas: {
3
3
  readonly name: "Box";
4
4
  readonly category: "foundation";
5
5
  readonly directManifestNode: true;
6
- readonly allowedChildren: readonly ["Box", "Stack", "Grid", "Container", "Divider", "Text", "Heading", "Button", "ButtonGroup", "ThemeModeToggle", "Input", "Textarea", "FormField", "Card", "Panel", "Notice", "EmptyState", "SectionHeader", "SettingsRow", "PostCard", "ChatListItem", "MessageBubble", "ReaderSurface"];
6
+ readonly allowedChildren: readonly ["Box", "Stack", "Grid", "Container", "Divider", "Text", "Heading", "Button", "ButtonGroup", "ThemeModeToggle", "Input", "Textarea", "FormField", "Card", "Panel", "Notice", "EmptyState", "SectionHeader", "SettingsRow", "PostCard", "ChatListItem", "MessageBubble", "ProgressRing", "ReaderSurface", "ContentRail"];
7
7
  readonly blueprint: {
8
8
  readonly label: "Box";
9
9
  };
@@ -21,7 +21,7 @@ export declare const foundationMetas: {
21
21
  readonly name: "Container";
22
22
  readonly category: "foundation";
23
23
  readonly directManifestNode: true;
24
- readonly allowedChildren: readonly ["Box", "Stack", "Grid", "Container", "Divider", "Text", "Heading", "Button", "ButtonGroup", "ThemeModeToggle", "Input", "Textarea", "FormField", "Card", "Panel", "Notice", "EmptyState", "SectionHeader", "SettingsRow", "PostCard", "ChatListItem", "MessageBubble", "ReaderSurface"];
24
+ readonly allowedChildren: readonly ["Box", "Stack", "Grid", "Container", "Divider", "Text", "Heading", "Button", "ButtonGroup", "ThemeModeToggle", "Input", "Textarea", "FormField", "Card", "Panel", "Notice", "EmptyState", "SectionHeader", "SettingsRow", "PostCard", "ChatListItem", "MessageBubble", "ProgressRing", "ReaderSurface", "ContentRail"];
25
25
  readonly blueprint: {
26
26
  readonly label: "Container";
27
27
  };
@@ -41,7 +41,7 @@ export declare const foundationMetas: {
41
41
  readonly name: "Grid";
42
42
  readonly category: "foundation";
43
43
  readonly directManifestNode: true;
44
- readonly allowedChildren: readonly ["Box", "Stack", "Grid", "Container", "Divider", "Text", "Heading", "Button", "ButtonGroup", "ThemeModeToggle", "Input", "Textarea", "FormField", "Card", "Panel", "Notice", "EmptyState", "SectionHeader", "SettingsRow", "PostCard", "ChatListItem", "MessageBubble", "ReaderSurface"];
44
+ readonly allowedChildren: readonly ["Box", "Stack", "Grid", "Container", "Divider", "Text", "Heading", "Button", "ButtonGroup", "ThemeModeToggle", "Input", "Textarea", "FormField", "Card", "Panel", "Notice", "EmptyState", "SectionHeader", "SettingsRow", "PostCard", "ChatListItem", "MessageBubble", "ProgressRing", "ReaderSurface", "ContentRail"];
45
45
  readonly blueprint: {
46
46
  readonly label: "Grid";
47
47
  };
@@ -75,7 +75,7 @@ export declare const foundationMetas: {
75
75
  readonly name: "Stack";
76
76
  readonly category: "foundation";
77
77
  readonly directManifestNode: true;
78
- readonly allowedChildren: readonly ["Box", "Stack", "Grid", "Container", "Divider", "Text", "Heading", "Button", "ButtonGroup", "ThemeModeToggle", "Input", "Textarea", "FormField", "Card", "Panel", "Notice", "EmptyState", "SectionHeader", "SettingsRow", "PostCard", "ChatListItem", "MessageBubble", "ReaderSurface"];
78
+ readonly allowedChildren: readonly ["Box", "Stack", "Grid", "Container", "Divider", "Text", "Heading", "Button", "ButtonGroup", "ThemeModeToggle", "Input", "Textarea", "FormField", "Card", "Panel", "Notice", "EmptyState", "SectionHeader", "SettingsRow", "PostCard", "ChatListItem", "MessageBubble", "ProgressRing", "ReaderSurface", "ContentRail"];
79
79
  readonly blueprint: {
80
80
  readonly label: "Stack";
81
81
  };
package/dist/index.d.ts CHANGED
@@ -56,8 +56,8 @@ export type { NavigationListProps, ZoraNavigationRouteMap } from './components/n
56
56
  export { NavigationList } from './components/navigation-list';
57
57
  export type { PaginationProps } from './components/pagination';
58
58
  export { Pagination } from './components/pagination';
59
- export type { ProgressProps } from './components/progress';
60
- export { Progress } from './components/progress';
59
+ export type { ProgressProps, ProgressRingProps } from './components/progress';
60
+ export { Progress, ProgressRing } from './components/progress';
61
61
  export type { RadioGroupOption, RadioGroupProps, RadioProps } from './components/radio';
62
62
  export { Radio, RadioGroup } from './components/radio';
63
63
  export type { RatingProps } from './components/rating';
@@ -108,6 +108,8 @@ export type { CollectionEditorProps, CollectionEditorRenderItemProps, } from './
108
108
  export { CollectionEditor } from './patterns/collection-editor';
109
109
  export type { ConfirmDialogProps } from './patterns/confirm-dialog';
110
110
  export { ConfirmDialog } from './patterns/confirm-dialog';
111
+ export type { ContentRailControlPressEvent, ContentRailDirection, ContentRailItemSize, ContentRailMotion, ContentRailProps, ContentRailSpacing, ContentRailVisibleRangeChangeEvent, } from './patterns/content-rail';
112
+ export { ContentRail } from './patterns/content-rail';
111
113
  export type { DisclosureSectionProps } from './patterns/disclosure-section';
112
114
  export { DisclosureSection } from './patterns/disclosure-section';
113
115
  export type { EmptyStateAction, EmptyStateProps } from './patterns/empty-state';