@ankhorage/zora 3.3.1 → 3.3.3

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 (64) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/components/card/meta.d.ts +1 -1
  3. package/dist/foundation/meta.d.ts +4 -4
  4. package/dist/index.d.ts +3 -1
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +1 -0
  7. package/dist/index.js.map +1 -1
  8. package/dist/layout/screen/meta.d.ts +1 -1
  9. package/dist/layout/screen-section/meta.d.ts +1 -1
  10. package/dist/metadata/allowedChildren.d.ts +4 -4
  11. package/dist/metadata/allowedChildren.d.ts.map +1 -1
  12. package/dist/metadata/allowedChildren.js +2 -0
  13. package/dist/metadata/allowedChildren.js.map +1 -1
  14. package/dist/metadata/bindableComponentMeta.d.ts +2 -2
  15. package/dist/metadata/componentMeta.d.ts.map +1 -1
  16. package/dist/metadata/componentMeta.js +2 -0
  17. package/dist/metadata/componentMeta.js.map +1 -1
  18. package/dist/metadata/index.d.ts +1 -1
  19. package/dist/metadata/index.d.ts.map +1 -1
  20. package/dist/metadata/index.js.map +1 -1
  21. package/dist/metadata/types.d.ts +6 -0
  22. package/dist/metadata/types.d.ts.map +1 -1
  23. package/dist/metadata/types.js.map +1 -1
  24. package/dist/patterns/content-rail/meta.d.ts +2 -2
  25. package/dist/patterns/message-bubble/meta.d.ts +1 -1
  26. package/dist/patterns/missing-element/MissingElement.d.ts +10 -0
  27. package/dist/patterns/missing-element/MissingElement.d.ts.map +1 -0
  28. package/dist/patterns/missing-element/MissingElement.js +41 -0
  29. package/dist/patterns/missing-element/MissingElement.js.map +1 -0
  30. package/dist/patterns/missing-element/index.d.ts +3 -0
  31. package/dist/patterns/missing-element/index.d.ts.map +1 -0
  32. package/dist/patterns/missing-element/index.js +2 -0
  33. package/dist/patterns/missing-element/index.js.map +1 -0
  34. package/dist/patterns/missing-element/meta.d.ts +68 -0
  35. package/dist/patterns/missing-element/meta.d.ts.map +1 -0
  36. package/dist/patterns/missing-element/meta.js +59 -0
  37. package/dist/patterns/missing-element/meta.js.map +1 -0
  38. package/dist/patterns/missing-element/types.d.ts +9 -0
  39. package/dist/patterns/missing-element/types.d.ts.map +1 -0
  40. package/dist/patterns/missing-element/types.js +2 -0
  41. package/dist/patterns/missing-element/types.js.map +1 -0
  42. package/dist/patterns/notice/meta.d.ts +1 -1
  43. package/dist/patterns/panel/meta.d.ts +1 -1
  44. package/dist/patterns/post-card/meta.d.ts +1 -1
  45. package/dist/patterns/reader/meta.d.ts +2 -2
  46. package/dist/patterns/scanner/meta.d.ts +2 -2
  47. package/dist/registry.d.ts.map +1 -1
  48. package/dist/registry.js +2 -0
  49. package/dist/registry.js.map +1 -1
  50. package/package.json +5 -5
  51. package/src/expo57Migration.test.ts +16 -1
  52. package/src/index.ts +3 -0
  53. package/src/metadata/allowedChildren.ts +2 -0
  54. package/src/metadata/componentMeta.test.ts +16 -0
  55. package/src/metadata/componentMeta.ts +2 -0
  56. package/src/metadata/index.ts +1 -0
  57. package/src/metadata/types.ts +7 -0
  58. package/src/patterns/missing-element/MissingElement.test.ts +66 -0
  59. package/src/patterns/missing-element/MissingElement.tsx +73 -0
  60. package/src/patterns/missing-element/index.ts +2 -0
  61. package/src/patterns/missing-element/meta.ts +62 -0
  62. package/src/patterns/missing-element/types.ts +9 -0
  63. package/src/patterns/theme-composer/ThemeComposer.test.ts +9 -13
  64. package/src/registry.ts +2 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MissingElement.d.ts","sourceRoot":"","sources":["../../../src/patterns/missing-element/MissingElement.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAQ1B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AA0DnD;;;;;GAKG;AACH,eAAO,MAAM,cAAc,2DAA0C,CAAC"}
@@ -0,0 +1,41 @@
1
+ import React from 'react';
2
+ import { StyleSheet } from 'react-native';
3
+ import { Badge } from '../../components/badge';
4
+ import { Text } from '../../components/text';
5
+ import { Box, Stack } from '../../foundation';
6
+ import { useZoraTheme } from '../../theme/useZoraTheme';
7
+ import { withZoraThemeScope } from '../../theme/withZoraThemeScope';
8
+ /***
9
+ * Renders the visible, non-interactive body of a draft missing-element marker.
10
+ */
11
+ function MissingElementInner({ themeId: _themeId, mode: _mode, interactionPolicy: _interactionPolicy, requestedCapability, reason, evidenceId, minimumWidth, minimumHeight, testID, }) {
12
+ const { theme } = useZoraTheme();
13
+ const accessibilityLabel = `Missing element: ${requestedCapability}. ${reason}`;
14
+ return (<Box accessibilityLabel={accessibilityLabel} accessibilityRole="text" accessible bg={theme.semantics.warning.softBg} borderColor={theme.semantics.warning.base} borderWidth={1} minHeight={minimumHeight} minWidth={minimumWidth} p="m" radius="m" style={styles.root} testID={testID}>
15
+ <Stack gap="xs">
16
+ <Badge color="warning">Missing element</Badge>
17
+ <Text variant="label" weight="semiBold">
18
+ {requestedCapability}
19
+ </Text>
20
+ <Text emphasis="muted" variant="bodySmall">
21
+ {reason}
22
+ </Text>
23
+ {evidenceId ? (<Text emphasis="subtle" variant="caption">
24
+ Evidence: {evidenceId}
25
+ </Text>) : null}
26
+ </Stack>
27
+ </Box>);
28
+ }
29
+ const styles = StyleSheet.create({
30
+ root: {
31
+ borderStyle: 'dashed',
32
+ },
33
+ });
34
+ /***
35
+ * Draft-only marker that preserves an unsupported manifest region without faking its capability.
36
+ *
37
+ * `MissingElement` is intentionally non-interactive and release-blocking in component metadata.
38
+ * Replace it with a released semantic ZORA element before publishing a production template.
39
+ */
40
+ export const MissingElement = withZoraThemeScope(MissingElementInner);
41
+ //# sourceMappingURL=MissingElement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MissingElement.js","sourceRoot":"","sources":["../../../src/patterns/missing-element/MissingElement.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAGpE;;GAEG;AACH,SAAS,mBAAmB,CAAC,EAC3B,OAAO,EAAE,QAAQ,EACjB,IAAI,EAAE,KAAK,EACX,iBAAiB,EAAE,kBAAkB,EACrC,mBAAmB,EACnB,MAAM,EACN,UAAU,EACV,YAAY,EACZ,aAAa,EACb,MAAM,GACc;IACpB,MAAM,EAAE,KAAK,EAAE,GAAG,YAAY,EAAE,CAAC;IACjC,MAAM,kBAAkB,GAAG,oBAAoB,mBAAmB,KAAK,MAAM,EAAE,CAAC;IAEhF,OAAO,CACL,CAAC,GAAG,CACF,kBAAkB,CAAC,CAAC,kBAAkB,CAAC,CACvC,iBAAiB,CAAC,MAAM,CACxB,UAAU,CACV,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CACnC,WAAW,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAC1C,WAAW,CAAC,CAAC,CAAC,CAAC,CACf,SAAS,CAAC,CAAC,aAAa,CAAC,CACzB,QAAQ,CAAC,CAAC,YAAY,CAAC,CACvB,CAAC,CAAC,GAAG,CACL,MAAM,CAAC,GAAG,CACV,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CACnB,MAAM,CAAC,CAAC,MAAM,CAAC,CAEf;MAAA,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CACb;QAAA,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,eAAe,EAAE,KAAK,CAC7C;QAAA,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CACrC;UAAA,CAAC,mBAAmB,CACtB;QAAA,EAAE,IAAI,CACN;QAAA,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CACxC;UAAA,CAAC,MAAM,CACT;QAAA,EAAE,IAAI,CACN;QAAA,CAAC,UAAU,CAAC,CAAC,CAAC,CACZ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CACvC;sBAAU,CAAC,UAAU,CACvB;UAAA,EAAE,IAAI,CAAC,CACR,CAAC,CAAC,CAAC,IAAI,CACV;MAAA,EAAE,KAAK,CACT;IAAA,EAAE,GAAG,CAAC,CACP,CAAC;AACJ,CAAC;AAED,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IAC/B,IAAI,EAAE;QACJ,WAAW,EAAE,QAAQ;KACtB;CACF,CAAC,CAAC;AAEH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,kBAAkB,CAAC,mBAAmB,CAAC,CAAC","sourcesContent":["import React from 'react';\nimport { StyleSheet } from 'react-native';\n\nimport { Badge } from '../../components/badge';\nimport { Text } from '../../components/text';\nimport { Box, Stack } from '../../foundation';\nimport { useZoraTheme } from '../../theme/useZoraTheme';\nimport { withZoraThemeScope } from '../../theme/withZoraThemeScope';\nimport type { MissingElementProps } from './types';\n\n/***\n * Renders the visible, non-interactive body of a draft missing-element marker.\n */\nfunction MissingElementInner({\n themeId: _themeId,\n mode: _mode,\n interactionPolicy: _interactionPolicy,\n requestedCapability,\n reason,\n evidenceId,\n minimumWidth,\n minimumHeight,\n testID,\n}: MissingElementProps) {\n const { theme } = useZoraTheme();\n const accessibilityLabel = `Missing element: ${requestedCapability}. ${reason}`;\n\n return (\n <Box\n accessibilityLabel={accessibilityLabel}\n accessibilityRole=\"text\"\n accessible\n bg={theme.semantics.warning.softBg}\n borderColor={theme.semantics.warning.base}\n borderWidth={1}\n minHeight={minimumHeight}\n minWidth={minimumWidth}\n p=\"m\"\n radius=\"m\"\n style={styles.root}\n testID={testID}\n >\n <Stack gap=\"xs\">\n <Badge color=\"warning\">Missing element</Badge>\n <Text variant=\"label\" weight=\"semiBold\">\n {requestedCapability}\n </Text>\n <Text emphasis=\"muted\" variant=\"bodySmall\">\n {reason}\n </Text>\n {evidenceId ? (\n <Text emphasis=\"subtle\" variant=\"caption\">\n Evidence: {evidenceId}\n </Text>\n ) : null}\n </Stack>\n </Box>\n );\n}\n\nconst styles = StyleSheet.create({\n root: {\n borderStyle: 'dashed',\n },\n});\n\n/***\n * Draft-only marker that preserves an unsupported manifest region without faking its capability.\n *\n * `MissingElement` is intentionally non-interactive and release-blocking in component metadata.\n * Replace it with a released semantic ZORA element before publishing a production template.\n */\nexport const MissingElement = withZoraThemeScope(MissingElementInner);\n"]}
@@ -0,0 +1,3 @@
1
+ export { MissingElement } from './MissingElement';
2
+ export type { MissingElementProps } from './types';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/patterns/missing-element/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,YAAY,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { MissingElement } from './MissingElement';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/patterns/missing-element/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC","sourcesContent":["export { MissingElement } from './MissingElement';\nexport type { MissingElementProps } from './types';\n"]}
@@ -0,0 +1,68 @@
1
+ export declare const missingElementMeta: {
2
+ readonly name: "MissingElement";
3
+ readonly category: "pattern";
4
+ readonly description: "Draft-only marker for an unresolved semantic ZORA capability that must be replaced before release.";
5
+ readonly directManifestNode: true;
6
+ readonly allowedChildren: readonly [];
7
+ readonly manifestPolicy: {
8
+ readonly kind: "unresolved-element";
9
+ readonly availability: "draft-only";
10
+ readonly releaseGate: "blocked";
11
+ };
12
+ readonly blueprint: {
13
+ readonly label: "Missing element";
14
+ readonly defaultProps: {
15
+ readonly requestedCapability: "Unresolved interface capability";
16
+ readonly reason: "No matching ZORA element is available.";
17
+ readonly minimumWidth: 240;
18
+ readonly minimumHeight: 160;
19
+ };
20
+ };
21
+ readonly props: {
22
+ readonly requestedCapability: {
23
+ readonly type: "string";
24
+ readonly category: "Gap";
25
+ readonly label: "Requested capability";
26
+ readonly default: "Unresolved interface capability";
27
+ readonly authoring: {
28
+ readonly authority: "instance";
29
+ };
30
+ };
31
+ readonly reason: {
32
+ readonly type: "string";
33
+ readonly category: "Gap";
34
+ readonly label: "Reason";
35
+ readonly default: "No matching ZORA element is available.";
36
+ readonly authoring: {
37
+ readonly authority: "instance";
38
+ };
39
+ };
40
+ readonly evidenceId: {
41
+ readonly type: "string";
42
+ readonly category: "Evidence";
43
+ readonly label: "Evidence ID";
44
+ readonly authoring: {
45
+ readonly authority: "instance";
46
+ };
47
+ };
48
+ readonly minimumWidth: {
49
+ readonly type: "number";
50
+ readonly category: "Layout";
51
+ readonly label: "Minimum width";
52
+ readonly default: 240;
53
+ readonly authoring: {
54
+ readonly authority: "instance";
55
+ };
56
+ };
57
+ readonly minimumHeight: {
58
+ readonly type: "number";
59
+ readonly category: "Layout";
60
+ readonly label: "Minimum height";
61
+ readonly default: 160;
62
+ readonly authoring: {
63
+ readonly authority: "instance";
64
+ };
65
+ };
66
+ };
67
+ };
68
+ //# sourceMappingURL=meta.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meta.d.ts","sourceRoot":"","sources":["../../../src/patterns/missing-element/meta.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyDO,CAAC"}
@@ -0,0 +1,59 @@
1
+ const instanceAuthoring = { authority: 'instance' };
2
+ export const missingElementMeta = {
3
+ name: 'MissingElement',
4
+ category: 'pattern',
5
+ description: 'Draft-only marker for an unresolved semantic ZORA capability that must be replaced before release.',
6
+ directManifestNode: true,
7
+ allowedChildren: [],
8
+ manifestPolicy: {
9
+ kind: 'unresolved-element',
10
+ availability: 'draft-only',
11
+ releaseGate: 'blocked',
12
+ },
13
+ blueprint: {
14
+ label: 'Missing element',
15
+ defaultProps: {
16
+ requestedCapability: 'Unresolved interface capability',
17
+ reason: 'No matching ZORA element is available.',
18
+ minimumWidth: 240,
19
+ minimumHeight: 160,
20
+ },
21
+ },
22
+ props: {
23
+ requestedCapability: {
24
+ type: 'string',
25
+ category: 'Gap',
26
+ label: 'Requested capability',
27
+ default: 'Unresolved interface capability',
28
+ authoring: instanceAuthoring,
29
+ },
30
+ reason: {
31
+ type: 'string',
32
+ category: 'Gap',
33
+ label: 'Reason',
34
+ default: 'No matching ZORA element is available.',
35
+ authoring: instanceAuthoring,
36
+ },
37
+ evidenceId: {
38
+ type: 'string',
39
+ category: 'Evidence',
40
+ label: 'Evidence ID',
41
+ authoring: instanceAuthoring,
42
+ },
43
+ minimumWidth: {
44
+ type: 'number',
45
+ category: 'Layout',
46
+ label: 'Minimum width',
47
+ default: 240,
48
+ authoring: instanceAuthoring,
49
+ },
50
+ minimumHeight: {
51
+ type: 'number',
52
+ category: 'Layout',
53
+ label: 'Minimum height',
54
+ default: 160,
55
+ authoring: instanceAuthoring,
56
+ },
57
+ },
58
+ };
59
+ //# sourceMappingURL=meta.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meta.js","sourceRoot":"","sources":["../../../src/patterns/missing-element/meta.ts"],"names":[],"mappings":"AAEA,MAAM,iBAAiB,GAAG,EAAE,SAAS,EAAE,UAAU,EAAW,CAAC;AAE7D,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,IAAI,EAAE,gBAAgB;IACtB,QAAQ,EAAE,SAAS;IACnB,WAAW,EACT,oGAAoG;IACtG,kBAAkB,EAAE,IAAI;IACxB,eAAe,EAAE,EAAE;IACnB,cAAc,EAAE;QACd,IAAI,EAAE,oBAAoB;QAC1B,YAAY,EAAE,YAAY;QAC1B,WAAW,EAAE,SAAS;KACvB;IACD,SAAS,EAAE;QACT,KAAK,EAAE,iBAAiB;QACxB,YAAY,EAAE;YACZ,mBAAmB,EAAE,iCAAiC;YACtD,MAAM,EAAE,wCAAwC;YAChD,YAAY,EAAE,GAAG;YACjB,aAAa,EAAE,GAAG;SACnB;KACF;IACD,KAAK,EAAE;QACL,mBAAmB,EAAE;YACnB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,KAAK;YACf,KAAK,EAAE,sBAAsB;YAC7B,OAAO,EAAE,iCAAiC;YAC1C,SAAS,EAAE,iBAAiB;SAC7B;QACD,MAAM,EAAE;YACN,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,KAAK;YACf,KAAK,EAAE,QAAQ;YACf,OAAO,EAAE,wCAAwC;YACjD,SAAS,EAAE,iBAAiB;SAC7B;QACD,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,UAAU;YACpB,KAAK,EAAE,aAAa;YACpB,SAAS,EAAE,iBAAiB;SAC7B;QACD,YAAY,EAAE;YACZ,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,QAAQ;YAClB,KAAK,EAAE,eAAe;YACtB,OAAO,EAAE,GAAG;YACZ,SAAS,EAAE,iBAAiB;SAC7B;QACD,aAAa,EAAE;YACb,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,QAAQ;YAClB,KAAK,EAAE,gBAAgB;YACvB,OAAO,EAAE,GAAG;YACZ,SAAS,EAAE,iBAAiB;SAC7B;KACF;CACmC,CAAC","sourcesContent":["import type { ZoraComponentMeta } from '../../metadata';\n\nconst instanceAuthoring = { authority: 'instance' } as const;\n\nexport const missingElementMeta = {\n name: 'MissingElement',\n category: 'pattern',\n description:\n 'Draft-only marker for an unresolved semantic ZORA capability that must be replaced before release.',\n directManifestNode: true,\n allowedChildren: [],\n manifestPolicy: {\n kind: 'unresolved-element',\n availability: 'draft-only',\n releaseGate: 'blocked',\n },\n blueprint: {\n label: 'Missing element',\n defaultProps: {\n requestedCapability: 'Unresolved interface capability',\n reason: 'No matching ZORA element is available.',\n minimumWidth: 240,\n minimumHeight: 160,\n },\n },\n props: {\n requestedCapability: {\n type: 'string',\n category: 'Gap',\n label: 'Requested capability',\n default: 'Unresolved interface capability',\n authoring: instanceAuthoring,\n },\n reason: {\n type: 'string',\n category: 'Gap',\n label: 'Reason',\n default: 'No matching ZORA element is available.',\n authoring: instanceAuthoring,\n },\n evidenceId: {\n type: 'string',\n category: 'Evidence',\n label: 'Evidence ID',\n authoring: instanceAuthoring,\n },\n minimumWidth: {\n type: 'number',\n category: 'Layout',\n label: 'Minimum width',\n default: 240,\n authoring: instanceAuthoring,\n },\n minimumHeight: {\n type: 'number',\n category: 'Layout',\n label: 'Minimum height',\n default: 160,\n authoring: instanceAuthoring,\n },\n },\n} as const satisfies ZoraComponentMeta;\n"]}
@@ -0,0 +1,9 @@
1
+ import type { ZoraBaseProps } from '../../theme/ZoraBaseProps';
2
+ export interface MissingElementProps extends ZoraBaseProps {
3
+ requestedCapability: string;
4
+ reason: string;
5
+ evidenceId?: string;
6
+ minimumWidth?: number;
7
+ minimumHeight?: number;
8
+ }
9
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/patterns/missing-element/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE/D,MAAM,WAAW,mBAAoB,SAAQ,aAAa;IACxD,mBAAmB,EAAE,MAAM,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/patterns/missing-element/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { ZoraBaseProps } from '../../theme/ZoraBaseProps';\n\nexport interface MissingElementProps extends ZoraBaseProps {\n requestedCapability: string;\n reason: string;\n evidenceId?: string;\n minimumWidth?: number;\n minimumHeight?: number;\n}\n"]}
@@ -2,7 +2,7 @@ export declare const noticeMeta: {
2
2
  readonly name: "Notice";
3
3
  readonly category: "pattern";
4
4
  readonly directManifestNode: true;
5
- readonly allowedChildren: readonly ["Box", "Stack", "Grid", "Container", "Divider", "Text", "Heading", "Button", "ButtonGroup", "ThemeModeToggle", "Input", "Textarea", "FormField", "Card", "Panel", "Notice", "EmptyState", "SectionHeader", "SettingsRow", "PostCard", "ChatListItem", "MessageBubble", "ProgressRing", "ReaderSurface", "ContentRail"];
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", "MissingElement"];
6
6
  readonly blueprint: {
7
7
  readonly label: "Notice";
8
8
  readonly defaultProps: {
@@ -2,7 +2,7 @@ export declare const panelMeta: {
2
2
  readonly name: "Panel";
3
3
  readonly category: "pattern";
4
4
  readonly directManifestNode: true;
5
- readonly allowedChildren: readonly ["Box", "Stack", "Grid", "Container", "Divider", "Text", "Heading", "Button", "ButtonGroup", "ThemeModeToggle", "Input", "Textarea", "FormField", "Card", "Panel", "Notice", "EmptyState", "SectionHeader", "SettingsRow", "PostCard", "ChatListItem", "MessageBubble", "ProgressRing", "ReaderSurface", "ContentRail"];
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", "MissingElement"];
6
6
  readonly blueprint: {
7
7
  readonly label: "Panel";
8
8
  readonly defaultProps: {
@@ -3,7 +3,7 @@ export declare const postCardMeta: {
3
3
  readonly category: "pattern";
4
4
  readonly description: "Social/content post card with author identity, body, media, actions, and comment previews.";
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", "ProgressRing", "ReaderSurface", "ContentRail"];
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", "MissingElement"];
7
7
  readonly blueprint: {
8
8
  readonly label: "Post card";
9
9
  readonly icon: {
@@ -125,11 +125,11 @@ export declare const readerSurfaceMeta: {
125
125
  };
126
126
  readonly headerActions: {
127
127
  readonly label: "Header actions";
128
- 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"];
128
+ 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", "MissingElement"];
129
129
  };
130
130
  readonly footerActions: {
131
131
  readonly label: "Footer actions";
132
- 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"];
132
+ 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", "MissingElement"];
133
133
  };
134
134
  };
135
135
  readonly props: {
@@ -105,7 +105,7 @@ export declare const barcodeScannerViewMeta: {
105
105
  readonly category: "pattern";
106
106
  readonly description: "Composed scanner shell with permission, camera slot, scan overlay, and manual entry affordance.";
107
107
  readonly directManifestNode: true;
108
- 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"];
108
+ 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", "MissingElement"];
109
109
  readonly requirements: {
110
110
  readonly permissions: readonly [{
111
111
  readonly permission: "camera";
@@ -145,7 +145,7 @@ export declare const barcodeScannerViewMeta: {
145
145
  };
146
146
  readonly children: {
147
147
  readonly label: "Scanner footer";
148
- 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"];
148
+ 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", "MissingElement"];
149
149
  };
150
150
  };
151
151
  readonly props: {
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAsG/B,MAAM,MAAM,qBAAqB,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;AA6IhF,eAAO,MAAM,uBAAuB,EAAE,qBAAgD,CAAC"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAuG/B,MAAM,MAAM,qBAAqB,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;AA8IhF,eAAO,MAAM,uBAAuB,EAAE,qBAAgD,CAAC"}
package/dist/registry.js CHANGED
@@ -61,6 +61,7 @@ import { ImageUploadField } from './patterns/image-upload-field';
61
61
  import { InspectorField } from './patterns/inspector-field';
62
62
  import { List, ListRow, ListSection } from './patterns/list';
63
63
  import { MessageBubble } from './patterns/message-bubble';
64
+ import { MissingElement } from './patterns/missing-element';
64
65
  import { Notice } from './patterns/notice';
65
66
  import { Panel } from './patterns/panel';
66
67
  import { PostCard } from './patterns/post-card';
@@ -172,6 +173,7 @@ const _ZORA_COMPONENT_REGISTRY = {
172
173
  ListRow,
173
174
  ListSection,
174
175
  MessageBubble,
176
+ MissingElement,
175
177
  Notice,
176
178
  Panel,
177
179
  PostCard,
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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","sourcesContent":["import type { InteractionPolicyProps } from '@ankhorage/surface';\nimport type React from 'react';\n\nimport { ActionSheet, ActionSheetItem } from './components/action-sheet';\nimport { AppBar } from './components/app-bar';\nimport { Avatar } from './components/avatar';\nimport { AvatarGroup } from './components/avatar-group';\nimport { Badge } from './components/badge';\nimport { Breadcrumbs } from './components/breadcrumbs';\nimport { Button } from './components/button';\nimport { ButtonGroup } from './components/button-group';\nimport { Card } from './components/card';\nimport { Checkbox, CheckboxGroup } from './components/checkbox';\nimport { Chip } from './components/chip';\nimport { ChipGroup } from './components/chip-group';\nimport { DataTable } from './components/data-table';\nimport { DatePicker } from './components/date-picker';\nimport { Drawer } from './components/drawer';\nimport { Form, FormActions, FormError, FormField } from './components/form';\nimport { Gradient } from './components/gradient';\nimport { Heading } from './components/heading';\nimport { Icon } from './components/icon';\nimport { IconButton } from './components/icon-button';\nimport { Image } from './components/image';\nimport { Input } from './components/input';\nimport { MediaCard } from './components/media-card';\nimport { DropdownMenu, Menu } from './components/menu';\nimport { MetricCard } from './components/metric-card';\nimport { Modal } from './components/modal';\nimport { NavigationItem } from './components/navigation-item';\nimport { NavigationList } from './components/navigation-list';\nimport { Pagination } from './components/pagination';\nimport { Progress, ProgressRing } from './components/progress';\nimport { Radio, RadioGroup } from './components/radio';\nimport { Rating } from './components/rating';\nimport { SearchBar } from './components/search-bar';\nimport { Select } from './components/select';\nimport { Skeleton, SkeletonCard, SkeletonList, SkeletonText } from './components/skeleton';\nimport { SplashScreen } from './components/splash-screen';\nimport { Tabs } from './components/tabs';\nimport { Text } from './components/text';\nimport { Textarea } from './components/textarea';\nimport { TimePicker } from './components/time-picker';\nimport { Toast } from './components/toast';\nimport { Toolbar, ToolbarAction } from './components/toolbar';\nimport {\n Box,\n Center,\n Container,\n Divider,\n Grid,\n Inline,\n Show,\n Spacer,\n Stack,\n Surface,\n} from './foundation';\nimport { AppShell } from './layout/app-shell';\nimport { Screen } from './layout/screen';\nimport { ScreenSection } from './layout/screen-section';\nimport { SettingsLayout } from './layout/settings-layout';\nimport { SidebarLayout } from './layout/sidebar-layout';\nimport { TopbarLayout } from './layout/topbar-layout';\nimport {\n ForgotPasswordForm,\n OAuthProviderButton,\n OAuthProviderList,\n OtpForm,\n SignInForm,\n SignUpForm,\n} from './patterns/auth';\nimport { ChatListItem } from './patterns/chat-list-item';\nimport { CollectionEditor } from './patterns/collection-editor';\nimport { ConfirmDialog } from './patterns/confirm-dialog';\nimport { ContentRail } from './patterns/content-rail';\nimport { DisclosureSection } from './patterns/disclosure-section';\nimport { EmptyState } from './patterns/empty-state';\nimport { FilterBar } from './patterns/filter-bar';\nimport { Hero } from './patterns/hero';\nimport { ImagePreview } from './patterns/image-preview';\nimport { ImageUploadField } from './patterns/image-upload-field';\nimport { InspectorField } from './patterns/inspector-field';\nimport { List, ListRow, ListSection } from './patterns/list';\nimport { MessageBubble } from './patterns/message-bubble';\nimport { Notice } from './patterns/notice';\nimport { Panel } from './patterns/panel';\nimport { PostCard } from './patterns/post-card';\nimport { ProductCard } from './patterns/product-card';\nimport { ReaderSurface } from './patterns/reader';\nimport { ResponsivePanel } from './patterns/responsive-panel';\nimport { BarcodeScannerView, CameraPermissionView, ScanOverlay } from './patterns/scanner';\nimport { SectionHeader } from './patterns/section-header';\nimport { SelectableItem } from './patterns/selection';\nimport { SettingsRow } from './patterns/settings-row';\nimport { SwitchField } from './patterns/switch-field';\nimport { ThemeComposer } from './patterns/theme-composer';\nimport { PaletteItem, TileGrid } from './patterns/tile-grid';\nimport { Timeline } from './patterns/timeline';\nimport { TreeItem, TreeView } from './patterns/tree-view';\nimport { ZoraDrawerContent } from './patterns/zora-drawer-content';\nimport { ZoraTabBar } from './patterns/zora-tab-bar';\nimport { ThemeModeToggle } from './theme/ThemeModeToggle';\n\nexport type ZoraComponentRegistry = Readonly<Record<string, React.ElementType>>;\n\ntype ComponentPropsFor<K extends keyof typeof _ZORA_COMPONENT_REGISTRY> = React.ComponentProps<\n (typeof _ZORA_COMPONENT_REGISTRY)[K]\n>;\n\ntype AcceptsSurfaceInteractionPolicyProps<P> = 'interactionPolicy' extends keyof P\n ? InteractionPolicyProps extends Pick<P, 'interactionPolicy'>\n ? Pick<P, 'interactionPolicy'> extends InteractionPolicyProps\n ? true\n : false\n : false\n : false;\n\ntype RegistryInteractionPolicyContract = {\n [K in keyof typeof _ZORA_COMPONENT_REGISTRY]: AcceptsSurfaceInteractionPolicyProps<\n ComponentPropsFor<K>\n >;\n};\n\ntype _AssertTrue<T extends true> = T;\ntype _RegistryInteractionPolicyCheck = _AssertTrue<\n RegistryInteractionPolicyContract[keyof typeof _ZORA_COMPONENT_REGISTRY]\n>;\n\nconst _ZORA_COMPONENT_REGISTRY = {\n ActionSheet,\n ActionSheetItem,\n AppBar,\n Avatar,\n AvatarGroup,\n Badge,\n Breadcrumbs,\n Button,\n ButtonGroup,\n Card,\n Checkbox,\n CheckboxGroup,\n Chip,\n ChipGroup,\n DataTable,\n DatePicker,\n Drawer,\n DropdownMenu,\n Form,\n FormActions,\n FormError,\n FormField,\n Gradient,\n Heading,\n Icon,\n IconButton,\n Image,\n Input,\n MediaCard,\n Menu,\n MetricCard,\n Modal,\n NavigationItem,\n NavigationList,\n Pagination,\n Progress,\n ProgressRing,\n Radio,\n RadioGroup,\n Rating,\n SearchBar,\n Select,\n Skeleton,\n SkeletonCard,\n SkeletonList,\n SkeletonText,\n SplashScreen,\n Tabs,\n Text,\n Textarea,\n TimePicker,\n Toast,\n Toolbar,\n ToolbarAction,\n ThemeModeToggle,\n Box,\n Center,\n Container,\n Divider,\n Grid,\n Inline,\n Show,\n Spacer,\n Stack,\n Surface,\n AppShell,\n Screen,\n ScreenSection,\n SettingsLayout,\n SidebarLayout,\n TopbarLayout,\n ForgotPasswordForm,\n OAuthProviderButton,\n OAuthProviderList,\n OtpForm,\n SignInForm,\n SignUpForm,\n ChatListItem,\n CollectionEditor,\n ConfirmDialog,\n ContentRail,\n DisclosureSection,\n EmptyState,\n FilterBar,\n Hero,\n ImagePreview,\n ImageUploadField,\n InspectorField,\n List,\n ListRow,\n ListSection,\n MessageBubble,\n Notice,\n Panel,\n PostCard,\n ProductCard,\n ResponsivePanel,\n ReaderSurface,\n BarcodeScannerView,\n CameraPermissionView,\n ScanOverlay,\n SectionHeader,\n SelectableItem,\n SettingsRow,\n SwitchField,\n ThemeComposer,\n PaletteItem,\n TileGrid,\n Timeline,\n TreeItem,\n TreeView,\n ZoraDrawerContent,\n ZoraTabBar,\n} as const satisfies ZoraComponentRegistry;\n\nexport const ZORA_COMPONENT_REGISTRY: ZoraComponentRegistry = _ZORA_COMPONENT_REGISTRY;\n"]}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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","sourcesContent":["import type { InteractionPolicyProps } from '@ankhorage/surface';\nimport type React from 'react';\n\nimport { ActionSheet, ActionSheetItem } from './components/action-sheet';\nimport { AppBar } from './components/app-bar';\nimport { Avatar } from './components/avatar';\nimport { AvatarGroup } from './components/avatar-group';\nimport { Badge } from './components/badge';\nimport { Breadcrumbs } from './components/breadcrumbs';\nimport { Button } from './components/button';\nimport { ButtonGroup } from './components/button-group';\nimport { Card } from './components/card';\nimport { Checkbox, CheckboxGroup } from './components/checkbox';\nimport { Chip } from './components/chip';\nimport { ChipGroup } from './components/chip-group';\nimport { DataTable } from './components/data-table';\nimport { DatePicker } from './components/date-picker';\nimport { Drawer } from './components/drawer';\nimport { Form, FormActions, FormError, FormField } from './components/form';\nimport { Gradient } from './components/gradient';\nimport { Heading } from './components/heading';\nimport { Icon } from './components/icon';\nimport { IconButton } from './components/icon-button';\nimport { Image } from './components/image';\nimport { Input } from './components/input';\nimport { MediaCard } from './components/media-card';\nimport { DropdownMenu, Menu } from './components/menu';\nimport { MetricCard } from './components/metric-card';\nimport { Modal } from './components/modal';\nimport { NavigationItem } from './components/navigation-item';\nimport { NavigationList } from './components/navigation-list';\nimport { Pagination } from './components/pagination';\nimport { Progress, ProgressRing } from './components/progress';\nimport { Radio, RadioGroup } from './components/radio';\nimport { Rating } from './components/rating';\nimport { SearchBar } from './components/search-bar';\nimport { Select } from './components/select';\nimport { Skeleton, SkeletonCard, SkeletonList, SkeletonText } from './components/skeleton';\nimport { SplashScreen } from './components/splash-screen';\nimport { Tabs } from './components/tabs';\nimport { Text } from './components/text';\nimport { Textarea } from './components/textarea';\nimport { TimePicker } from './components/time-picker';\nimport { Toast } from './components/toast';\nimport { Toolbar, ToolbarAction } from './components/toolbar';\nimport {\n Box,\n Center,\n Container,\n Divider,\n Grid,\n Inline,\n Show,\n Spacer,\n Stack,\n Surface,\n} from './foundation';\nimport { AppShell } from './layout/app-shell';\nimport { Screen } from './layout/screen';\nimport { ScreenSection } from './layout/screen-section';\nimport { SettingsLayout } from './layout/settings-layout';\nimport { SidebarLayout } from './layout/sidebar-layout';\nimport { TopbarLayout } from './layout/topbar-layout';\nimport {\n ForgotPasswordForm,\n OAuthProviderButton,\n OAuthProviderList,\n OtpForm,\n SignInForm,\n SignUpForm,\n} from './patterns/auth';\nimport { ChatListItem } from './patterns/chat-list-item';\nimport { CollectionEditor } from './patterns/collection-editor';\nimport { ConfirmDialog } from './patterns/confirm-dialog';\nimport { ContentRail } from './patterns/content-rail';\nimport { DisclosureSection } from './patterns/disclosure-section';\nimport { EmptyState } from './patterns/empty-state';\nimport { FilterBar } from './patterns/filter-bar';\nimport { Hero } from './patterns/hero';\nimport { ImagePreview } from './patterns/image-preview';\nimport { ImageUploadField } from './patterns/image-upload-field';\nimport { InspectorField } from './patterns/inspector-field';\nimport { List, ListRow, ListSection } from './patterns/list';\nimport { MessageBubble } from './patterns/message-bubble';\nimport { MissingElement } from './patterns/missing-element';\nimport { Notice } from './patterns/notice';\nimport { Panel } from './patterns/panel';\nimport { PostCard } from './patterns/post-card';\nimport { ProductCard } from './patterns/product-card';\nimport { ReaderSurface } from './patterns/reader';\nimport { ResponsivePanel } from './patterns/responsive-panel';\nimport { BarcodeScannerView, CameraPermissionView, ScanOverlay } from './patterns/scanner';\nimport { SectionHeader } from './patterns/section-header';\nimport { SelectableItem } from './patterns/selection';\nimport { SettingsRow } from './patterns/settings-row';\nimport { SwitchField } from './patterns/switch-field';\nimport { ThemeComposer } from './patterns/theme-composer';\nimport { PaletteItem, TileGrid } from './patterns/tile-grid';\nimport { Timeline } from './patterns/timeline';\nimport { TreeItem, TreeView } from './patterns/tree-view';\nimport { ZoraDrawerContent } from './patterns/zora-drawer-content';\nimport { ZoraTabBar } from './patterns/zora-tab-bar';\nimport { ThemeModeToggle } from './theme/ThemeModeToggle';\n\nexport type ZoraComponentRegistry = Readonly<Record<string, React.ElementType>>;\n\ntype ComponentPropsFor<K extends keyof typeof _ZORA_COMPONENT_REGISTRY> = React.ComponentProps<\n (typeof _ZORA_COMPONENT_REGISTRY)[K]\n>;\n\ntype AcceptsSurfaceInteractionPolicyProps<P> = 'interactionPolicy' extends keyof P\n ? InteractionPolicyProps extends Pick<P, 'interactionPolicy'>\n ? Pick<P, 'interactionPolicy'> extends InteractionPolicyProps\n ? true\n : false\n : false\n : false;\n\ntype RegistryInteractionPolicyContract = {\n [K in keyof typeof _ZORA_COMPONENT_REGISTRY]: AcceptsSurfaceInteractionPolicyProps<\n ComponentPropsFor<K>\n >;\n};\n\ntype _AssertTrue<T extends true> = T;\ntype _RegistryInteractionPolicyCheck = _AssertTrue<\n RegistryInteractionPolicyContract[keyof typeof _ZORA_COMPONENT_REGISTRY]\n>;\n\nconst _ZORA_COMPONENT_REGISTRY = {\n ActionSheet,\n ActionSheetItem,\n AppBar,\n Avatar,\n AvatarGroup,\n Badge,\n Breadcrumbs,\n Button,\n ButtonGroup,\n Card,\n Checkbox,\n CheckboxGroup,\n Chip,\n ChipGroup,\n DataTable,\n DatePicker,\n Drawer,\n DropdownMenu,\n Form,\n FormActions,\n FormError,\n FormField,\n Gradient,\n Heading,\n Icon,\n IconButton,\n Image,\n Input,\n MediaCard,\n Menu,\n MetricCard,\n Modal,\n NavigationItem,\n NavigationList,\n Pagination,\n Progress,\n ProgressRing,\n Radio,\n RadioGroup,\n Rating,\n SearchBar,\n Select,\n Skeleton,\n SkeletonCard,\n SkeletonList,\n SkeletonText,\n SplashScreen,\n Tabs,\n Text,\n Textarea,\n TimePicker,\n Toast,\n Toolbar,\n ToolbarAction,\n ThemeModeToggle,\n Box,\n Center,\n Container,\n Divider,\n Grid,\n Inline,\n Show,\n Spacer,\n Stack,\n Surface,\n AppShell,\n Screen,\n ScreenSection,\n SettingsLayout,\n SidebarLayout,\n TopbarLayout,\n ForgotPasswordForm,\n OAuthProviderButton,\n OAuthProviderList,\n OtpForm,\n SignInForm,\n SignUpForm,\n ChatListItem,\n CollectionEditor,\n ConfirmDialog,\n ContentRail,\n DisclosureSection,\n EmptyState,\n FilterBar,\n Hero,\n ImagePreview,\n ImageUploadField,\n InspectorField,\n List,\n ListRow,\n ListSection,\n MessageBubble,\n MissingElement,\n Notice,\n Panel,\n PostCard,\n ProductCard,\n ResponsivePanel,\n ReaderSurface,\n BarcodeScannerView,\n CameraPermissionView,\n ScanOverlay,\n SectionHeader,\n SelectableItem,\n SettingsRow,\n SwitchField,\n ThemeComposer,\n PaletteItem,\n TileGrid,\n Timeline,\n TreeItem,\n TreeView,\n ZoraDrawerContent,\n ZoraTabBar,\n} as const satisfies ZoraComponentRegistry;\n\nexport const ZORA_COMPONENT_REGISTRY: ZoraComponentRegistry = _ZORA_COMPONENT_REGISTRY;\n"]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ankhorage/zora",
3
3
  "type": "module",
4
- "version": "3.3.1",
4
+ "version": "3.3.3",
5
5
  "description": "Opinionated React Native and React Native Web UI kit built on @ankhorage/surface.",
6
6
  "homepage": "https://github.com/ankhorage/zora#readme",
7
7
  "bugs": {
@@ -36,9 +36,9 @@
36
36
  "react-native-web": "~0.21.0"
37
37
  },
38
38
  "dependencies": {
39
- "@ankhorage/color-theory": "^0.0.8",
40
- "@ankhorage/contracts": "^8.0.1",
41
- "@ankhorage/surface": "^3.1.1"
39
+ "@ankhorage/color-theory": "^0.3.0",
40
+ "@ankhorage/contracts": "^8.0.2",
41
+ "@ankhorage/surface": "^3.1.2"
42
42
  },
43
43
  "files": [
44
44
  "dist",
@@ -86,7 +86,7 @@
86
86
  "version-packages": "ankhorage-changeset version"
87
87
  },
88
88
  "devDependencies": {
89
- "@ankhorage/devtools": "^1.8.3",
89
+ "@ankhorage/devtools": "^1.9.4",
90
90
  "@ankhorage/paradox": "^0.1.24",
91
91
  "@react-native-picker/picker": "2.11.4",
92
92
  "@react-native-vector-icons/fontawesome": "^13.1.3",
@@ -87,19 +87,34 @@ describe('portable ZORA package boundary', () => {
87
87
 
88
88
  describe('Expo 57 example boundary', () => {
89
89
  test('uses Renovate-safe dependency range styles across every Expo example', () => {
90
+ const expoVersions = new Set<string>();
91
+
90
92
  for (const directory of EXPO_EXAMPLE_DIRS) {
91
93
  const packageJson = readExamplePackage(directory);
92
94
  const dependencies = readRecord(packageJson, 'dependencies');
93
95
  const development = readRecord(packageJson, 'devDependencies');
96
+ const expoVersion = readValue(dependencies, 'expo');
94
97
 
95
98
  expect(readValue(dependencies, '@ankhorage/zora')).toMatch(CARET_SEMVER_RANGE);
96
- expect(dependencies.expo).toMatch(EXACT_SEMVER_VERSION);
99
+ expect(expoVersion).toMatch(EXACT_SEMVER_VERSION);
97
100
  expect(dependencies.react).toMatch(EXACT_SEMVER_VERSION);
98
101
  expect(readValue(dependencies, 'react-native')).toMatch(EXACT_SEMVER_VERSION);
99
102
  expect(readValue(dependencies, 'react-native-web')).toMatch(TILDE_SEMVER_RANGE);
100
103
  expect(development.typescript).toMatch(TILDE_SEMVER_RANGE);
101
104
  expect(readValue(dependencies, '@expo/vector-icons')).toBeUndefined();
105
+
106
+ if (typeof expoVersion === 'string') {
107
+ expoVersions.add(expoVersion);
108
+ }
102
109
  }
110
+
111
+ expect(expoVersions.size).toBe(1);
112
+ const [expoVersion] = expoVersions;
113
+ const scaffoldSource = readFileSync(
114
+ join(ROOT, 'scripts', 'scaffold-zora-example-app.ts'),
115
+ 'utf8',
116
+ );
117
+ expect(scaffoldSource).toContain(`expo: '${expoVersion}',`);
103
118
  });
104
119
 
105
120
  test('registers all scoped RNVI packages in each Expo app config', () => {
package/src/index.ts CHANGED
@@ -214,6 +214,7 @@ export type {
214
214
  ZoraComponentEventPayloadFieldType,
215
215
  ZoraComponentEventPayloadKind,
216
216
  ZoraComponentI18nMeta,
217
+ ZoraComponentManifestPolicy,
217
218
  ZoraComponentMeta,
218
219
  ZoraComponentMetaRegistry,
219
220
  ZoraComponentPropArrayItemSchema,
@@ -323,6 +324,8 @@ export type {
323
324
  MessageBubbleStatus,
324
325
  } from './patterns/message-bubble';
325
326
  export { MessageBubble } from './patterns/message-bubble';
327
+ export type { MissingElementProps } from './patterns/missing-element';
328
+ export { MissingElement } from './patterns/missing-element';
326
329
  export type { NoticeProps } from './patterns/notice';
327
330
  export { Notice } from './patterns/notice';
328
331
  export type { PanelProps } from './patterns/panel';
@@ -24,6 +24,7 @@ export const CONTAINER_ALLOWED_CHILDREN = [
24
24
  'ProgressRing',
25
25
  'ReaderSurface',
26
26
  'ContentRail',
27
+ 'MissingElement',
27
28
  ] as const;
28
29
 
29
30
  export const CONTENT_RAIL_ALLOWED_CHILDREN = [
@@ -36,6 +37,7 @@ export const CONTENT_RAIL_ALLOWED_CHILDREN = [
36
37
  'PostCard',
37
38
  'ChatListItem',
38
39
  'MessageBubble',
40
+ 'MissingElement',
39
41
  ] as const;
40
42
 
41
43
  export const SCREEN_SECTION_ALLOWED_CHILDREN = [...CONTAINER_ALLOWED_CHILDREN] as const;
@@ -140,6 +140,7 @@ describe('ZORA_COMPONENT_META invariants', () => {
140
140
  'Progress',
141
141
  'ProgressRing',
142
142
  'ReaderSurface',
143
+ 'MissingElement',
143
144
  ]);
144
145
 
145
146
  const expectedContainerNodes = new Set([
@@ -272,6 +273,7 @@ describe('ZORA_COMPONENT_META invariants', () => {
272
273
  'PostCard',
273
274
  'ChatListItem',
274
275
  'MessageBubble',
276
+ 'MissingElement',
275
277
  ]);
276
278
  expect(rail.slots?.children?.allowedChildren).toEqual(rail.allowedChildren);
277
279
  expect(rail.blueprint?.defaultProps).toEqual({
@@ -291,6 +293,20 @@ describe('ZORA_COMPONENT_META invariants', () => {
291
293
  expect(rail.requirements).toBeUndefined();
292
294
  });
293
295
 
296
+ test('MissingElement exposes a release-blocking unresolved manifest policy', () => {
297
+ const missingElement = ZORA_COMPONENT_META.MissingElement;
298
+
299
+ expect(missingElement.directManifestNode).toBe(true);
300
+ expect(missingElement.allowedChildren).toEqual([]);
301
+ expect(missingElement.manifestPolicy).toEqual({
302
+ kind: 'unresolved-element',
303
+ availability: 'draft-only',
304
+ releaseGate: 'blocked',
305
+ });
306
+ expect(missingElement.events).toBeUndefined();
307
+ expect(missingElement.requirements).toBeUndefined();
308
+ });
309
+
294
310
  test('non-direct manifest nodes include an explicit note', () => {
295
311
  for (const [key, meta] of Object.entries(ZORA_COMPONENT_META)) {
296
312
  if (meta.directManifestNode) continue;
@@ -73,6 +73,7 @@ import { imageUploadFieldMeta } from '../patterns/image-upload-field/meta';
73
73
  import { inspectorFieldMeta } from '../patterns/inspector-field/meta';
74
74
  import { listMeta, listRowMeta, listSectionMeta } from '../patterns/list/meta';
75
75
  import { messageBubbleMeta } from '../patterns/message-bubble/meta';
76
+ import { missingElementMeta } from '../patterns/missing-element/meta';
76
77
  import { noticeMeta } from '../patterns/notice/meta';
77
78
  import { panelMeta } from '../patterns/panel/meta';
78
79
  import { postCardMeta } from '../patterns/post-card/meta';
@@ -182,6 +183,7 @@ export const ZORA_COMPONENT_META: ZoraComponentMetaRegistry = {
182
183
  ListRow: listRowMeta,
183
184
  ListSection: listSectionMeta,
184
185
  MessageBubble: messageBubbleMeta,
186
+ MissingElement: missingElementMeta,
185
187
  Notice: noticeMeta,
186
188
  Panel: panelMeta,
187
189
  PostCard: postCardMeta,
@@ -21,6 +21,7 @@ export type {
21
21
  ZoraComponentEventPayloadFieldType,
22
22
  ZoraComponentEventPayloadKind,
23
23
  ZoraComponentI18nMeta,
24
+ ZoraComponentManifestPolicy,
24
25
  ZoraComponentMeta,
25
26
  ZoraComponentMetaRegistry,
26
27
  ZoraComponentPropArrayItemSchema,
@@ -74,12 +74,19 @@ export interface ZoraComponentSlotMeta {
74
74
  allowedChildren?: readonly string[];
75
75
  }
76
76
 
77
+ export interface ZoraComponentManifestPolicy {
78
+ kind: 'unresolved-element';
79
+ availability: 'draft-only';
80
+ releaseGate: 'blocked';
81
+ }
82
+
77
83
  export interface ZoraComponentMeta {
78
84
  name: string;
79
85
  category: ZoraComponentCategory;
80
86
  description?: string;
81
87
  directManifestNode: boolean;
82
88
  allowedChildren: readonly string[];
89
+ manifestPolicy?: ZoraComponentManifestPolicy;
83
90
  requirements?: ComponentRequirements;
84
91
  blueprint?: ZoraComponentBlueprint;
85
92
  events?: Readonly<Record<string, ZoraComponentEventMeta>>;