@ankhorage/surface 0.1.0 → 0.1.2

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 (84) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +119 -113
  3. package/dist/components/badge/types.d.ts +1 -1
  4. package/dist/components/badge/types.d.ts.map +1 -1
  5. package/dist/components/button/types.d.ts +2 -2
  6. package/dist/components/button/types.d.ts.map +1 -1
  7. package/dist/components/checkbox/Checkbox.d.ts.map +1 -1
  8. package/dist/components/checkbox/Checkbox.js +9 -4
  9. package/dist/components/checkbox/Checkbox.js.map +1 -1
  10. package/dist/components/field/Field.d.ts.map +1 -1
  11. package/dist/components/field/Field.js +6 -9
  12. package/dist/components/field/Field.js.map +1 -1
  13. package/dist/components/helper-text/HelperText.d.ts.map +1 -1
  14. package/dist/components/helper-text/HelperText.js +1 -3
  15. package/dist/components/helper-text/HelperText.js.map +1 -1
  16. package/dist/components/helper-text/types.d.ts +2 -1
  17. package/dist/components/helper-text/types.d.ts.map +1 -1
  18. package/dist/components/icon-button/types.d.ts +2 -2
  19. package/dist/components/icon-button/types.d.ts.map +1 -1
  20. package/dist/components/label/Label.d.ts.map +1 -1
  21. package/dist/components/label/Label.js +2 -4
  22. package/dist/components/label/Label.js.map +1 -1
  23. package/dist/components/label/types.d.ts +2 -1
  24. package/dist/components/label/types.d.ts.map +1 -1
  25. package/dist/components/menu/Menu.d.ts.map +1 -1
  26. package/dist/components/menu/Menu.js +5 -5
  27. package/dist/components/menu/Menu.js.map +1 -1
  28. package/dist/components/radio/Radio.d.ts.map +1 -1
  29. package/dist/components/radio/Radio.js +9 -4
  30. package/dist/components/radio/Radio.js.map +1 -1
  31. package/dist/components/switch/Switch.d.ts.map +1 -1
  32. package/dist/components/switch/Switch.js +9 -4
  33. package/dist/components/switch/Switch.js.map +1 -1
  34. package/dist/components/tabs/Tab.d.ts.map +1 -1
  35. package/dist/components/tabs/Tab.js +4 -2
  36. package/dist/components/tabs/Tab.js.map +1 -1
  37. package/dist/components/tabs/TabList.d.ts.map +1 -1
  38. package/dist/components/tabs/TabList.js +1 -1
  39. package/dist/components/tabs/TabList.js.map +1 -1
  40. package/dist/components/tabs/TabPanel.d.ts.map +1 -1
  41. package/dist/components/tabs/TabPanel.js +5 -2
  42. package/dist/components/tabs/TabPanel.js.map +1 -1
  43. package/dist/components/tabs/Tabs.d.ts.map +1 -1
  44. package/dist/components/tabs/Tabs.js +4 -1
  45. package/dist/components/tabs/Tabs.js.map +1 -1
  46. package/dist/components/tabs/a11y.d.ts +3 -0
  47. package/dist/components/tabs/a11y.d.ts.map +1 -0
  48. package/dist/components/tabs/a11y.js +13 -0
  49. package/dist/components/tabs/a11y.js.map +1 -0
  50. package/dist/components/tabs/context.d.ts +2 -0
  51. package/dist/components/tabs/context.d.ts.map +1 -1
  52. package/dist/components/tabs/context.js.map +1 -1
  53. package/dist/examples/DocsExamples.d.ts +5 -0
  54. package/dist/examples/DocsExamples.d.ts.map +1 -0
  55. package/dist/examples/DocsExamples.js +81 -0
  56. package/dist/examples/DocsExamples.js.map +1 -0
  57. package/dist/internal/focus/useFocusManager.d.ts +8 -0
  58. package/dist/internal/focus/useFocusManager.d.ts.map +1 -1
  59. package/dist/internal/focus/useFocusManager.js +19 -2
  60. package/dist/internal/focus/useFocusManager.js.map +1 -1
  61. package/dist/internal/resolvers/index.d.ts +2 -0
  62. package/dist/internal/resolvers/index.d.ts.map +1 -1
  63. package/dist/internal/resolvers/index.js +2 -0
  64. package/dist/internal/resolvers/index.js.map +1 -1
  65. package/dist/internal/resolvers/resolveFieldPresentation.d.ts +10 -0
  66. package/dist/internal/resolvers/resolveFieldPresentation.d.ts.map +1 -0
  67. package/dist/internal/resolvers/resolveFieldPresentation.js +19 -0
  68. package/dist/internal/resolvers/resolveFieldPresentation.js.map +1 -0
  69. package/dist/internal/resolvers/resolveSelectionControlBehavior.d.ts +8 -0
  70. package/dist/internal/resolvers/resolveSelectionControlBehavior.d.ts.map +1 -0
  71. package/dist/internal/resolvers/resolveSelectionControlBehavior.js +10 -0
  72. package/dist/internal/resolvers/resolveSelectionControlBehavior.js.map +1 -0
  73. package/dist/internal/resolvers/resolveTextColor.d.ts +1 -1
  74. package/dist/internal/resolvers/resolveTextColor.d.ts.map +1 -1
  75. package/dist/internal/resolvers/resolveTextColor.js +6 -0
  76. package/dist/internal/resolvers/resolveTextColor.js.map +1 -1
  77. package/dist/layout/Box.d.ts +5 -1
  78. package/dist/layout/Box.d.ts.map +1 -1
  79. package/dist/layout/Box.js +2 -2
  80. package/dist/layout/Box.js.map +1 -1
  81. package/dist/primitives/icon/resolveExpoIconComponent.d.ts.map +1 -1
  82. package/dist/primitives/icon/resolveExpoIconComponent.js +13 -4
  83. package/dist/primitives/icon/resolveExpoIconComponent.js.map +1 -1
  84. package/package.json +4 -2
@@ -0,0 +1,8 @@
1
+ export type SelectionControlKind = 'checkbox' | 'radio' | 'switch';
2
+ export declare function resolveSelectionControlNextChecked({ kind, checked, disabled, readOnly, }: {
3
+ kind: SelectionControlKind;
4
+ checked: boolean;
5
+ disabled?: boolean;
6
+ readOnly?: boolean;
7
+ }): boolean | null;
8
+ //# sourceMappingURL=resolveSelectionControlBehavior.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveSelectionControlBehavior.d.ts","sourceRoot":"","sources":["../../../src/internal/resolvers/resolveSelectionControlBehavior.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,oBAAoB,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEnE,wBAAgB,kCAAkC,CAAC,EACjD,IAAI,EACJ,OAAO,EACP,QAAgB,EAChB,QAAgB,GACjB,EAAE;IACD,IAAI,EAAE,oBAAoB,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,GAAG,OAAO,GAAG,IAAI,CAUjB"}
@@ -0,0 +1,10 @@
1
+ export function resolveSelectionControlNextChecked({ kind, checked, disabled = false, readOnly = false, }) {
2
+ if (disabled || readOnly) {
3
+ return null;
4
+ }
5
+ if (kind === 'radio') {
6
+ return checked ? null : true;
7
+ }
8
+ return !checked;
9
+ }
10
+ //# sourceMappingURL=resolveSelectionControlBehavior.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveSelectionControlBehavior.js","sourceRoot":"","sources":["../../../src/internal/resolvers/resolveSelectionControlBehavior.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,kCAAkC,CAAC,EACjD,IAAI,EACJ,OAAO,EACP,QAAQ,GAAG,KAAK,EAChB,QAAQ,GAAG,KAAK,GAMjB;IACC,IAAI,QAAQ,IAAI,QAAQ,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACrB,OAAO,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/B,CAAC;IAED,OAAO,CAAC,OAAO,CAAC;AAClB,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import type { AnkhTheme } from '../../theme/types';
2
- export type TextTone = 'default' | 'muted' | 'subtle' | 'inverse';
2
+ export type TextTone = 'default' | 'muted' | 'subtle' | 'inverse' | 'danger' | 'success' | 'warning';
3
3
  export type TextColorValue = keyof AnkhTheme['colors'] | string;
4
4
  export declare function resolveTextColor(theme: AnkhTheme, tone?: TextTone, color?: TextColorValue): string;
5
5
  //# sourceMappingURL=resolveTextColor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolveTextColor.d.ts","sourceRoot":"","sources":["../../../src/internal/resolvers/resolveTextColor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;AAClE,MAAM,MAAM,cAAc,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC;AAEhE,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,SAAS,EAChB,IAAI,GAAE,QAAoB,EAC1B,KAAK,CAAC,EAAE,cAAc,GACrB,MAAM,CAgBR"}
1
+ {"version":3,"file":"resolveTextColor.d.ts","sourceRoot":"","sources":["../../../src/internal/resolvers/resolveTextColor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,MAAM,MAAM,QAAQ,GAChB,SAAS,GACT,OAAO,GACP,QAAQ,GACR,SAAS,GACT,QAAQ,GACR,SAAS,GACT,SAAS,CAAC;AACd,MAAM,MAAM,cAAc,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC;AAEhE,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,SAAS,EAChB,IAAI,GAAE,QAAoB,EAC1B,KAAK,CAAC,EAAE,cAAc,GACrB,MAAM,CAsBR"}
@@ -10,6 +10,12 @@ export function resolveTextColor(theme, tone = 'default', color) {
10
10
  return theme.semantics.content.subtle;
11
11
  case 'inverse':
12
12
  return theme.semantics.content.inverse;
13
+ case 'danger':
14
+ return theme.semantics.danger.base;
15
+ case 'success':
16
+ return theme.semantics.success.base;
17
+ case 'warning':
18
+ return theme.semantics.warning.base;
13
19
  case 'default':
14
20
  default:
15
21
  return theme.semantics.content.default;
@@ -1 +1 @@
1
- {"version":3,"file":"resolveTextColor.js","sourceRoot":"","sources":["../../../src/internal/resolvers/resolveTextColor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAMxD,MAAM,UAAU,gBAAgB,CAC9B,KAAgB,EAChB,OAAiB,SAAS,EAC1B,KAAsB;IAEtB,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,YAAY,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC3C,CAAC;IAED,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,OAAO;YACV,OAAO,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC;QACvC,KAAK,QAAQ;YACX,OAAO,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC;QACxC,KAAK,SAAS;YACZ,OAAO,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC;QACzC,KAAK,SAAS,CAAC;QACf;YACE,OAAO,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC;IAC3C,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"resolveTextColor.js","sourceRoot":"","sources":["../../../src/internal/resolvers/resolveTextColor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAaxD,MAAM,UAAU,gBAAgB,CAC9B,KAAgB,EAChB,OAAiB,SAAS,EAC1B,KAAsB;IAEtB,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,YAAY,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC3C,CAAC;IAED,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,OAAO;YACV,OAAO,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC;QACvC,KAAK,QAAQ;YACX,OAAO,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC;QACxC,KAAK,SAAS;YACZ,OAAO,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC;QACzC,KAAK,QAAQ;YACX,OAAO,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;QACrC,KAAK,SAAS;YACZ,OAAO,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC;QACtC,KAAK,SAAS;YACZ,OAAO,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC;QACtC,KAAK,SAAS,CAAC;QACf;YACE,OAAO,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC;IAC3C,CAAC;AACH,CAAC"}
@@ -2,9 +2,13 @@ import React from 'react';
2
2
  import { type ViewProps as ReactNativeViewProps } from 'react-native';
3
3
  import { type BoxStyleProps } from './helpers';
4
4
  export interface BoxProps extends BoxStyleProps {
5
+ accessibilityLabel?: ReactNativeViewProps['accessibilityLabel'];
6
+ accessibilityRole?: ReactNativeViewProps['accessibilityRole'];
7
+ accessibilityState?: ReactNativeViewProps['accessibilityState'];
8
+ accessible?: ReactNativeViewProps['accessible'];
5
9
  children?: React.ReactNode;
6
10
  pointerEvents?: ReactNativeViewProps['pointerEvents'];
7
11
  testID?: string;
8
12
  }
9
- export declare function Box({ children, pointerEvents, style, testID, ...props }: BoxProps): React.JSX.Element;
13
+ export declare function Box({ accessible, accessibilityLabel, accessibilityRole, accessibilityState, children, pointerEvents, style, testID, ...props }: BoxProps): React.JSX.Element;
10
14
  //# sourceMappingURL=Box.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Box.d.ts","sourceRoot":"","sources":["../../src/layout/Box.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAIL,KAAK,SAAS,IAAI,oBAAoB,EAEvC,MAAM,cAAc,CAAC;AAItB,OAAO,EAAE,KAAK,aAAa,EAAoB,MAAM,WAAW,CAAC;AAEjE,MAAM,WAAW,QAAS,SAAQ,aAAa;IAC7C,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,aAAa,CAAC,EAAE,oBAAoB,CAAC,eAAe,CAAC,CAAC;IACtD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AA2BD,wBAAgB,GAAG,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,EAAE,QAAQ,qBAgBjF"}
1
+ {"version":3,"file":"Box.d.ts","sourceRoot":"","sources":["../../src/layout/Box.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAIL,KAAK,SAAS,IAAI,oBAAoB,EAEvC,MAAM,cAAc,CAAC;AAItB,OAAO,EAAE,KAAK,aAAa,EAAoB,MAAM,WAAW,CAAC;AAEjE,MAAM,WAAW,QAAS,SAAQ,aAAa;IAC7C,kBAAkB,CAAC,EAAE,oBAAoB,CAAC,oBAAoB,CAAC,CAAC;IAChE,iBAAiB,CAAC,EAAE,oBAAoB,CAAC,mBAAmB,CAAC,CAAC;IAC9D,kBAAkB,CAAC,EAAE,oBAAoB,CAAC,oBAAoB,CAAC,CAAC;IAChE,UAAU,CAAC,EAAE,oBAAoB,CAAC,YAAY,CAAC,CAAC;IAChD,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,aAAa,CAAC,EAAE,oBAAoB,CAAC,eAAe,CAAC,CAAC;IACtD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AA2BD,wBAAgB,GAAG,CAAC,EAClB,UAAU,EACV,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,QAAQ,EACR,aAAa,EACb,KAAK,EACL,MAAM,EACN,GAAG,KAAK,EACT,EAAE,QAAQ,qBAoBV"}
@@ -21,13 +21,13 @@ function resolveViewPointerEvents(pointerEvents) {
21
21
  }
22
22
  return undefined;
23
23
  }
24
- export function Box({ children, pointerEvents, style, testID, ...props }) {
24
+ export function Box({ accessible, accessibilityLabel, accessibilityRole, accessibilityState, children, pointerEvents, style, testID, ...props }) {
25
25
  const { theme } = useTheme();
26
26
  const { breakpoint } = useResponsiveRuntime();
27
27
  const resolved = resolveBoxStyles(theme, breakpoint, props);
28
28
  const pointerEventsStyle = resolvePointerEventsStyle(pointerEvents);
29
29
  const viewPointerEvents = resolveViewPointerEvents(pointerEvents);
30
- return (<View pointerEvents={viewPointerEvents} testID={testID} style={[resolved, pointerEventsStyle, style]}>
30
+ return (<View accessible={accessible} accessibilityLabel={accessibilityLabel} accessibilityRole={accessibilityRole} accessibilityState={accessibilityState} pointerEvents={viewPointerEvents} testID={testID} style={[resolved, pointerEventsStyle, style]}>
31
31
  {children}
32
32
  </View>);
33
33
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Box.js","sourceRoot":"","sources":["../../src/layout/Box.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EACL,QAAQ,EAER,IAAI,GAGL,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAsB,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAQjE,SAAS,yBAAyB,CAChC,aAAgE;IAEhE,IAAI,QAAQ,CAAC,EAAE,KAAK,KAAK,IAAI,aAAa,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAEtE,IAAI,aAAa,KAAK,MAAM,IAAI,aAAa,KAAK,MAAM,EAAE,CAAC;QACzD,OAAO,EAAE,aAAa,EAAE,CAAC;IAC3B,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,wBAAwB,CAC/B,aAAgE;IAEhE,IAAI,aAAa,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAClD,IAAI,QAAQ,CAAC,EAAE,KAAK,KAAK;QAAE,OAAO,aAAa,CAAC;IAEhD,IAAI,aAAa,KAAK,UAAU,IAAI,aAAa,KAAK,UAAU,EAAE,CAAC;QACjE,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,KAAK,EAAY;IAChF,MAAM,EAAE,KAAK,EAAE,GAAG,QAAQ,EAAE,CAAC;IAC7B,MAAM,EAAE,UAAU,EAAE,GAAG,oBAAoB,EAAE,CAAC;IAC9C,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;IAC5D,MAAM,kBAAkB,GAAG,yBAAyB,CAAC,aAAa,CAAC,CAAC;IACpE,MAAM,iBAAiB,GAAG,wBAAwB,CAAC,aAAa,CAAC,CAAC;IAElE,OAAO,CACL,CAAC,IAAI,CACH,aAAa,CAAC,CAAC,iBAAiB,CAAC,CACjC,MAAM,CAAC,CAAC,MAAM,CAAC,CACf,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,kBAAkB,EAAE,KAAK,CAAC,CAAC,CAE7C;MAAA,CAAC,QAAQ,CACX;IAAA,EAAE,IAAI,CAAC,CACR,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"Box.js","sourceRoot":"","sources":["../../src/layout/Box.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EACL,QAAQ,EAER,IAAI,GAGL,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAsB,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAYjE,SAAS,yBAAyB,CAChC,aAAgE;IAEhE,IAAI,QAAQ,CAAC,EAAE,KAAK,KAAK,IAAI,aAAa,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAEtE,IAAI,aAAa,KAAK,MAAM,IAAI,aAAa,KAAK,MAAM,EAAE,CAAC;QACzD,OAAO,EAAE,aAAa,EAAE,CAAC;IAC3B,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,wBAAwB,CAC/B,aAAgE;IAEhE,IAAI,aAAa,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAClD,IAAI,QAAQ,CAAC,EAAE,KAAK,KAAK;QAAE,OAAO,aAAa,CAAC;IAEhD,IAAI,aAAa,KAAK,UAAU,IAAI,aAAa,KAAK,UAAU,EAAE,CAAC;QACjE,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,EAClB,UAAU,EACV,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,QAAQ,EACR,aAAa,EACb,KAAK,EACL,MAAM,EACN,GAAG,KAAK,EACC;IACT,MAAM,EAAE,KAAK,EAAE,GAAG,QAAQ,EAAE,CAAC;IAC7B,MAAM,EAAE,UAAU,EAAE,GAAG,oBAAoB,EAAE,CAAC;IAC9C,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;IAC5D,MAAM,kBAAkB,GAAG,yBAAyB,CAAC,aAAa,CAAC,CAAC;IACpE,MAAM,iBAAiB,GAAG,wBAAwB,CAAC,aAAa,CAAC,CAAC;IAElE,OAAO,CACL,CAAC,IAAI,CACH,UAAU,CAAC,CAAC,UAAU,CAAC,CACvB,kBAAkB,CAAC,CAAC,kBAAkB,CAAC,CACvC,iBAAiB,CAAC,CAAC,iBAAiB,CAAC,CACrC,kBAAkB,CAAC,CAAC,kBAAkB,CAAC,CACvC,aAAa,CAAC,CAAC,iBAAiB,CAAC,CACjC,MAAM,CAAC,CAAC,MAAM,CAAC,CACf,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,kBAAkB,EAAE,KAAK,CAAC,CAAC,CAE7C;MAAA,CAAC,QAAQ,CACX;IAAA,EAAE,IAAI,CAAC,CACR,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"resolveExpoIconComponent.d.ts","sourceRoot":"","sources":["../../../src/primitives/icon/resolveExpoIconComponent.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAM9D,MAAM,MAAM,iBAAiB,GAAG,KAAK,CAAC,WAAW,CAAC;IAChD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC,CAAC;AAoBH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB,CAQ5E"}
1
+ {"version":3,"file":"resolveExpoIconComponent.d.ts","sourceRoot":"","sources":["../../../src/primitives/icon/resolveExpoIconComponent.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAI9D,MAAM,MAAM,iBAAiB,GAAG,KAAK,CAAC,WAAW,CAAC;IAChD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC,CAAC;AAwCH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB,CAQ5E"}
@@ -1,14 +1,23 @@
1
- import { createRequire } from 'node:module';
2
1
  import {} from 'react-native';
3
- const require = createRequire(import.meta.url);
4
2
  let cachedIcons = null;
3
+ function resolveRuntimeRequire() {
4
+ const globalCandidate = globalThis.require;
5
+ if (typeof globalCandidate === 'function') {
6
+ return globalCandidate;
7
+ }
8
+ return null;
9
+ }
5
10
  function loadExpoIcons() {
6
11
  if (cachedIcons) {
7
12
  return cachedIcons;
8
13
  }
14
+ const runtimeRequire = resolveRuntimeRequire();
9
15
  try {
10
- // Load Expo icons only when Icon is rendered so non-Expo consumers can install Surface cleanly.
11
- cachedIcons = require('@expo/vector-icons');
16
+ if (!runtimeRequire) {
17
+ throw new Error('runtime require is unavailable');
18
+ }
19
+ // Keep icon loading lazy so non-Expo consumers do not need the package until Icon is used.
20
+ cachedIcons = runtimeRequire('@expo/vector-icons');
12
21
  return cachedIcons;
13
22
  }
14
23
  catch {
@@ -1 +1 @@
1
- {"version":3,"file":"resolveExpoIconComponent.js","sourceRoot":"","sources":["../../../src/primitives/icon/resolveExpoIconComponent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAI5C,OAAO,EAAkC,MAAM,cAAc,CAAC;AAE9D,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAY/C,IAAI,WAAW,GAA2B,IAAI,CAAC;AAE/C,SAAS,aAAa;IACpB,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,IAAI,CAAC;QACH,gGAAgG;QAChG,WAAW,GAAG,OAAO,CAAC,oBAAoB,CAAoB,CAAC;QAC/D,OAAO,WAAW,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CACb,qHAAqH,CACtH,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,QAAgB;IACvD,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC;IAC9B,MAAM,SAAS,GAAI,KAAiC,CAAC,QAAQ,CAAC,CAAC;IAC/D,IAAI,OAAO,SAAS,KAAK,UAAU,EAAE,CAAC;QACpC,OAAO,SAA8B,CAAC;IACxC,CAAC;IAED,OAAO,KAAK,CAAC,QAA6B,CAAC;AAC7C,CAAC"}
1
+ {"version":3,"file":"resolveExpoIconComponent.js","sourceRoot":"","sources":["../../../src/primitives/icon/resolveExpoIconComponent.ts"],"names":[],"mappings":"AAEA,OAAO,EAAkC,MAAM,cAAc,CAAC;AAY9D,IAAI,WAAW,GAA2B,IAAI,CAAC;AAE/C,SAAS,qBAAqB;IAC5B,MAAM,eAAe,GACnB,UAGD,CAAC,OAAO,CAAC;IAEV,IAAI,OAAO,eAAe,KAAK,UAAU,EAAE,CAAC;QAC1C,OAAO,eAA0C,CAAC;IACpD,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,aAAa;IACpB,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,MAAM,cAAc,GAAG,qBAAqB,EAAE,CAAC;IAE/C,IAAI,CAAC;QACH,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACpD,CAAC;QAED,2FAA2F;QAC3F,WAAW,GAAG,cAAc,CAAC,oBAAoB,CAAoB,CAAC;QACtE,OAAO,WAAW,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CACb,qHAAqH,CACtH,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,QAAgB;IACvD,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC;IAC9B,MAAM,SAAS,GAAI,KAAiC,CAAC,QAAQ,CAAC,CAAC;IAC/D,IAAI,OAAO,SAAS,KAAK,UAAU,EAAE,CAAC;QACpC,OAAO,SAA8B,CAAC;IACxC,CAAC;IAED,OAAO,KAAK,CAAC,QAA6B,CAAC;AAC7C,CAAC"}
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@ankhorage/surface",
3
3
  "type": "module",
4
- "version": "0.1.0",
5
- "description": "Render foundation for Ankhorage and standalone React Native or Expo apps.",
4
+ "version": "0.1.2",
5
+ "description": "Stable UI foundation for React Native and React Native Web.",
6
6
  "homepage": "https://github.com/ankhorage/surface#readme",
7
7
  "bugs": {
8
8
  "url": "https://github.com/ankhorage/surface/issues"
@@ -20,8 +20,10 @@
20
20
  "react-native-web",
21
21
  "expo",
22
22
  "ui",
23
+ "foundation",
23
24
  "design-system",
24
25
  "theming",
26
+ "accessibility",
25
27
  "components"
26
28
  ],
27
29
  "peerDependencies": {