@hzblj/kara-components 0.7.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/README.md +5 -5
  3. package/lib/module/atoms/activity-indicator/activity-indicator.android.js +42 -0
  4. package/lib/module/atoms/activity-indicator/activity-indicator.android.js.map +1 -0
  5. package/lib/module/atoms/activity-indicator/activity-indicator.ios.js +19 -0
  6. package/lib/module/atoms/activity-indicator/activity-indicator.ios.js.map +1 -0
  7. package/lib/module/atoms/activity-indicator/activity-indicator.types.js +4 -0
  8. package/lib/module/atoms/activity-indicator/activity-indicator.types.js.map +1 -0
  9. package/lib/module/atoms/activity-indicator/index.js +2 -1
  10. package/lib/module/atoms/activity-indicator/index.js.map +1 -1
  11. package/lib/module/atoms/avatar/avatar.js +2 -4
  12. package/lib/module/atoms/avatar/avatar.js.map +1 -1
  13. package/lib/module/atoms/blur-view/blur-view.android.js +100 -0
  14. package/lib/module/atoms/blur-view/blur-view.android.js.map +1 -0
  15. package/lib/module/atoms/blur-view/blur-view.ios.js +43 -0
  16. package/lib/module/atoms/blur-view/blur-view.ios.js.map +1 -0
  17. package/lib/module/atoms/blur-view/blur-view.types.js +4 -0
  18. package/lib/module/atoms/blur-view/blur-view.types.js.map +1 -0
  19. package/lib/module/atoms/blur-view/index.js +5 -0
  20. package/lib/module/atoms/blur-view/index.js.map +1 -0
  21. package/lib/module/atoms/glass-view/glass-view.android.js +36 -5
  22. package/lib/module/atoms/glass-view/glass-view.android.js.map +1 -1
  23. package/lib/module/atoms/image/image.js +13 -6
  24. package/lib/module/atoms/image/image.js.map +1 -1
  25. package/lib/module/atoms/image/image.types.js +4 -0
  26. package/lib/module/atoms/image/image.types.js.map +1 -0
  27. package/lib/module/atoms/image/index.js +1 -0
  28. package/lib/module/atoms/image/index.js.map +1 -1
  29. package/lib/module/atoms/index.js +1 -0
  30. package/lib/module/atoms/index.js.map +1 -1
  31. package/lib/module/atoms/island/island.android.js +6 -2
  32. package/lib/module/atoms/island/island.android.js.map +1 -1
  33. package/lib/module/atoms/island/island.ios.js +5 -2
  34. package/lib/module/atoms/island/island.ios.js.map +1 -1
  35. package/lib/module/atoms/pressable/pressable.js +38 -6
  36. package/lib/module/atoms/pressable/pressable.js.map +1 -1
  37. package/lib/module/atoms/rn-text/rn-text.js +5 -2
  38. package/lib/module/atoms/rn-text/rn-text.js.map +1 -1
  39. package/lib/module/atoms/skeleton/skeleton.js +5 -5
  40. package/lib/module/atoms/skeleton/skeleton.js.map +1 -1
  41. package/lib/module/atoms/text/text.android.js +5 -2
  42. package/lib/module/atoms/text/text.android.js.map +1 -1
  43. package/lib/module/atoms/text/text.ios.js +14 -3
  44. package/lib/module/atoms/text/text.ios.js.map +1 -1
  45. package/lib/module/molecules/collapsible/collapsible.android.js +37 -7
  46. package/lib/module/molecules/collapsible/collapsible.android.js.map +1 -1
  47. package/lib/module/molecules/navigation-bar/navigation-bar.android.js +2 -8
  48. package/lib/module/molecules/navigation-bar/navigation-bar.android.js.map +1 -1
  49. package/lib/module/molecules/pager/pager.android.js +5 -4
  50. package/lib/module/molecules/pager/pager.android.js.map +1 -1
  51. package/lib/module/molecules/scroll-edge-container/scroll-edge-container.android.js +114 -11
  52. package/lib/module/molecules/scroll-edge-container/scroll-edge-container.android.js.map +1 -1
  53. package/lib/module/molecules/stepper/stepper.ios.js +45 -8
  54. package/lib/module/molecules/stepper/stepper.ios.js.map +1 -1
  55. package/lib/module/ripple-clip.js +9 -1
  56. package/lib/module/ripple-clip.js.map +1 -1
  57. package/lib/typescript/atoms/activity-indicator/activity-indicator.d.ts +1 -3
  58. package/lib/typescript/atoms/activity-indicator/activity-indicator.ios.d.ts +3 -0
  59. package/lib/typescript/atoms/activity-indicator/activity-indicator.types.d.ts +17 -0
  60. package/lib/typescript/atoms/activity-indicator/index.d.ts +1 -0
  61. package/lib/typescript/atoms/blur-view/blur-view.d.ts +1 -0
  62. package/lib/typescript/atoms/blur-view/blur-view.ios.d.ts +3 -0
  63. package/lib/typescript/atoms/blur-view/blur-view.types.d.ts +31 -0
  64. package/lib/typescript/atoms/blur-view/index.d.ts +2 -0
  65. package/lib/typescript/atoms/box/a-box.d.ts +1 -1
  66. package/lib/typescript/atoms/glass-view/glass-view.types.d.ts +12 -5
  67. package/lib/typescript/atoms/image/image.d.ts +12 -4
  68. package/lib/typescript/atoms/image/image.types.d.ts +4 -0
  69. package/lib/typescript/atoms/image/index.d.ts +1 -0
  70. package/lib/typescript/atoms/index.d.ts +1 -0
  71. package/lib/typescript/atoms/island/island.types.d.ts +8 -4
  72. package/lib/typescript/atoms/pressable/pressable.types.d.ts +5 -3
  73. package/lib/typescript/atoms/rn-text/rn-text.types.d.ts +7 -2
  74. package/lib/typescript/atoms/skeleton/skeleton.types.d.ts +8 -4
  75. package/lib/typescript/atoms/text/text.types.d.ts +7 -2
  76. package/lib/typescript/molecules/scroll-edge-container/scroll-edge-container.types.d.ts +6 -4
  77. package/lib/typescript/molecules/stepper/stepper.ios.d.ts +5 -0
  78. package/lib/typescript/molecules/stepper/stepper.types.d.ts +1 -4
  79. package/package.json +5 -5
  80. package/src/atoms/activity-indicator/activity-indicator.android.tsx +32 -0
  81. package/src/atoms/activity-indicator/activity-indicator.ios.tsx +15 -0
  82. package/src/atoms/activity-indicator/activity-indicator.types.ts +20 -0
  83. package/src/atoms/activity-indicator/index.ts +1 -0
  84. package/src/atoms/avatar/avatar.tsx +1 -1
  85. package/src/atoms/blur-view/blur-view.android.tsx +68 -0
  86. package/src/atoms/blur-view/blur-view.ios.tsx +37 -0
  87. package/src/atoms/blur-view/blur-view.types.ts +34 -0
  88. package/src/atoms/blur-view/index.ts +2 -0
  89. package/src/atoms/glass-view/glass-view.android.tsx +41 -3
  90. package/src/atoms/glass-view/glass-view.types.ts +12 -5
  91. package/src/atoms/image/image.tsx +11 -12
  92. package/src/atoms/image/image.types.ts +6 -0
  93. package/src/atoms/image/index.ts +1 -0
  94. package/src/atoms/index.ts +1 -0
  95. package/src/atoms/island/island.android.tsx +10 -2
  96. package/src/atoms/island/island.ios.tsx +4 -2
  97. package/src/atoms/island/island.types.ts +8 -4
  98. package/src/atoms/pressable/pressable.tsx +46 -6
  99. package/src/atoms/pressable/pressable.types.ts +5 -3
  100. package/src/atoms/rn-text/rn-text.tsx +6 -3
  101. package/src/atoms/rn-text/rn-text.types.ts +15 -9
  102. package/src/atoms/skeleton/skeleton.tsx +4 -4
  103. package/src/atoms/skeleton/skeleton.types.ts +8 -4
  104. package/src/atoms/text/text.android.tsx +7 -1
  105. package/src/atoms/text/text.ios.tsx +14 -3
  106. package/src/atoms/text/text.types.ts +7 -2
  107. package/src/molecules/collapsible/collapsible.android.tsx +47 -7
  108. package/src/molecules/navigation-bar/navigation-bar.android.tsx +1 -6
  109. package/src/molecules/pager/pager.android.tsx +4 -1
  110. package/src/molecules/scroll-edge-container/scroll-edge-container.android.tsx +103 -10
  111. package/src/molecules/scroll-edge-container/scroll-edge-container.types.ts +6 -4
  112. package/src/molecules/stepper/stepper.ios.tsx +37 -1
  113. package/src/molecules/stepper/stepper.types.ts +1 -4
  114. package/src/ripple-clip.ts +10 -1
  115. package/lib/module/atoms/activity-indicator/activity-indicator.js +0 -14
  116. package/lib/module/atoms/activity-indicator/activity-indicator.js.map +0 -1
  117. package/src/atoms/activity-indicator/activity-indicator.tsx +0 -9
@@ -1,10 +1,12 @@
1
1
  "use strict";
2
2
 
3
3
  import { useSplitSx } from '@hzblj/kara-sx';
4
- import { useCallback } from 'react';
5
- import { Pressable as RNPressable } from 'react-native';
4
+ import { useAppTheme, withOpacity } from '@hzblj/kara-theme';
5
+ import { useCallback, useMemo } from 'react';
6
+ import { Platform, Pressable as RNPressable, View } from 'react-native';
6
7
  import Animated, { useAnimatedStyle, useSharedValue, withSpring } from 'react-native-reanimated';
7
8
  import { haptics } from "../../haptics/index.js";
9
+ import { splitForRipple } from "../../ripple-clip.js";
8
10
  import { jsx as _jsx } from "react/jsx-runtime";
9
11
  const SPRING = {
10
12
  damping: 20,
@@ -22,28 +24,58 @@ export const Pressable = ({
22
24
  const [resolved, rest] = useSplitSx(props);
23
25
  const scale = useSharedValue(1);
24
26
  const feedback = haptic === true ? 'light' : haptic || undefined;
27
+ const theme = useAppTheme();
28
+ const isAndroid = Platform.OS === 'android';
25
29
  const rStyle = useAnimatedStyle(() => ({
26
30
  transform: [{
27
31
  scale: scale.value
28
32
  }]
29
33
  }), []);
30
34
 
35
+ // Android's press is Material's: a ripple over the content — the pressed state layer, `onSurface` at 10 % — clipped to
36
+ // the shape by an outer view (`splitForRipple`), and nothing moves. iOS springs down.
37
+ const ripple = useMemo(() => isAndroid ? {
38
+ color: withOpacity(String(theme.color('content.primary')), 'o10'),
39
+ foreground: true
40
+ } : undefined, [isAndroid, theme]);
41
+ const androidStyle = useMemo(() => isAndroid ? splitForRipple(resolved) : undefined, [isAndroid, resolved]);
42
+
31
43
  // The finger is down: the Taptic Engine has until the release to wake, so the haptic lands with the press.
32
44
  const onPressIn = useCallback(() => {
33
- scale.value = withSpring(0.96, SPRING);
45
+ if (!isAndroid) {
46
+ scale.value = withSpring(0.96, SPRING);
47
+ }
34
48
  if (feedback) {
35
49
  haptics.prepare(feedback);
36
50
  }
37
- }, [feedback, scale]);
51
+ }, [feedback, isAndroid, scale]);
38
52
  const onPressOut = useCallback(() => {
39
- scale.value = withSpring(1, SPRING);
40
- }, [scale]);
53
+ if (!isAndroid) {
54
+ scale.value = withSpring(1, SPRING);
55
+ }
56
+ }, [isAndroid, scale]);
41
57
  const onPressWithHaptic = useCallback(() => {
42
58
  if (feedback) {
43
59
  haptics.play(feedback);
44
60
  }
45
61
  onPress?.();
46
62
  }, [feedback, onPress]);
63
+ if (androidStyle) {
64
+ return /*#__PURE__*/_jsx(View, {
65
+ style: androidStyle.outer,
66
+ children: /*#__PURE__*/_jsx(RNPressable, {
67
+ android_ripple: ripple,
68
+ disabled: disabled,
69
+ hitSlop: 8,
70
+ onPress: onPressWithHaptic,
71
+ onPressIn: onPressIn,
72
+ style: androidStyle.inner,
73
+ testID: testID,
74
+ ...rest,
75
+ children: children
76
+ })
77
+ });
78
+ }
47
79
  return /*#__PURE__*/_jsx(AnimatedPressable, {
48
80
  disabled: disabled,
49
81
  hitSlop: 8,
@@ -1 +1 @@
1
- {"version":3,"names":["useSplitSx","useCallback","Pressable","RNPressable","Animated","useAnimatedStyle","useSharedValue","withSpring","haptics","jsx","_jsx","SPRING","damping","stiffness","AnimatedPressable","createAnimatedComponent","children","disabled","haptic","onPress","testID","props","resolved","rest","scale","feedback","undefined","rStyle","transform","value","onPressIn","prepare","onPressOut","onPressWithHaptic","play","hitSlop","style"],"sourceRoot":"../../../../src","sources":["atoms/pressable/pressable.tsx"],"mappings":";;AAAA,SAAQA,UAAU,QAAO,gBAAgB;AACzC,SAAQC,WAAW,QAAO,OAAO;AACjC,SAAQC,SAAS,IAAIC,WAAW,QAAO,cAAc;AACrD,OAAOC,QAAQ,IAAGC,gBAAgB,EAAEC,cAAc,EAAEC,UAAU,QAAO,yBAAyB;AAE9F,SAAQC,OAAO,QAAO,wBAAe;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAGrC,MAAMC,MAAM,GAAG;EAACC,OAAO,EAAE,EAAE;EAAEC,SAAS,EAAE;AAAG,CAAC;AAE5C,MAAMC,iBAAiB,GAAGV,QAAQ,CAACW,uBAAuB,CAACZ,WAAW,CAAC;AAEvE,OAAO,MAAMD,SAA6B,GAAGA,CAAC;EAC5Cc,QAAQ;EACRC,QAAQ,GAAG,KAAK;EAChBC,MAAM,GAAG,KAAK;EACdC,OAAO;EACPC,MAAM;EACN,GAAGC;AACW,CAAC,KAAK;EACpB,MAAM,CAACC,QAAQ,EAAEC,IAAI,CAAC,GAAGvB,UAAU,CAACqB,KAAK,CAAC;EAC1C,MAAMG,KAAK,GAAGlB,cAAc,CAAC,CAAC,CAAC;EAC/B,MAAMmB,QAAQ,GAAGP,MAAM,KAAK,IAAI,GAAG,OAAO,GAAGA,MAAM,IAAIQ,SAAS;EAEhE,MAAMC,MAAM,GAAGtB,gBAAgB,CAAC,OAAO;IAACuB,SAAS,EAAE,CAAC;MAACJ,KAAK,EAAEA,KAAK,CAACK;IAAK,CAAC;EAAC,CAAC,CAAC,EAAE,EAAE,CAAC;;EAEhF;EACA,MAAMC,SAAS,GAAG7B,WAAW,CAAC,MAAM;IAClCuB,KAAK,CAACK,KAAK,GAAGtB,UAAU,CAAC,IAAI,EAAEI,MAAM,CAAC;IAEtC,IAAIc,QAAQ,EAAE;MACZjB,OAAO,CAACuB,OAAO,CAACN,QAAQ,CAAC;IAC3B;EACF,CAAC,EAAE,CAACA,QAAQ,EAAED,KAAK,CAAC,CAAC;EAErB,MAAMQ,UAAU,GAAG/B,WAAW,CAAC,MAAM;IACnCuB,KAAK,CAACK,KAAK,GAAGtB,UAAU,CAAC,CAAC,EAAEI,MAAM,CAAC;EACrC,CAAC,EAAE,CAACa,KAAK,CAAC,CAAC;EAEX,MAAMS,iBAAiB,GAAGhC,WAAW,CAAC,MAAM;IAC1C,IAAIwB,QAAQ,EAAE;MACZjB,OAAO,CAAC0B,IAAI,CAACT,QAAQ,CAAC;IACxB;IAEAN,OAAO,GAAG,CAAC;EACb,CAAC,EAAE,CAACM,QAAQ,EAAEN,OAAO,CAAC,CAAC;EAEvB,oBACET,IAAA,CAACI,iBAAiB;IAChBG,QAAQ,EAAEA,QAAS;IACnBkB,OAAO,EAAE,CAAE;IACXhB,OAAO,EAAEc,iBAAkB;IAC3BH,SAAS,EAAEA,SAAU;IACrBE,UAAU,EAAEA,UAAW;IACvBI,KAAK,EAAE,CAACd,QAAQ,EAAEK,MAAM,CAAE;IAC1BP,MAAM,EAAEA,MAAO;IAAA,GACXG,IAAI;IAAAP,QAAA,EAEPA;EAAQ,CACQ,CAAC;AAExB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["useSplitSx","useAppTheme","withOpacity","useCallback","useMemo","Platform","Pressable","RNPressable","View","Animated","useAnimatedStyle","useSharedValue","withSpring","haptics","splitForRipple","jsx","_jsx","SPRING","damping","stiffness","AnimatedPressable","createAnimatedComponent","children","disabled","haptic","onPress","testID","props","resolved","rest","scale","feedback","undefined","theme","isAndroid","OS","rStyle","transform","value","ripple","color","String","foreground","androidStyle","onPressIn","prepare","onPressOut","onPressWithHaptic","play","style","outer","android_ripple","hitSlop","inner"],"sourceRoot":"../../../../src","sources":["atoms/pressable/pressable.tsx"],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
 
3
+ import { useSplitSx } from '@hzblj/kara-sx';
3
4
  import { MAX_FONT_SCALE, useAppTheme } from '@hzblj/kara-theme';
4
5
  import { Text as RNText, useWindowDimensions } from 'react-native';
5
6
  import { jsx as _jsx } from "react/jsx-runtime";
@@ -10,6 +11,8 @@ export const RnText = ({
10
11
  ...props
11
12
  }) => {
12
13
  const theme = useAppTheme();
14
+ // A view style, which a text accepts whole — only React Native's types disagree, on `userSelect`'s width.
15
+ const [sx, rest] = useSplitSx(props);
13
16
  const {
14
17
  fontScale
15
18
  } = useWindowDimensions();
@@ -26,12 +29,12 @@ export const RnText = ({
26
29
  const lineHeight = style.lineHeight * Math.min(fontScale, MAX_FONT_SCALE);
27
30
  return /*#__PURE__*/_jsx(RNText, {
28
31
  maxFontSizeMultiplier: MAX_FONT_SCALE,
29
- style: [style, {
32
+ style: [style, sx, {
30
33
  color: theme.color(color),
31
34
  lineHeight,
32
35
  textAlign: align
33
36
  }],
34
- ...props
37
+ ...rest
35
38
  });
36
39
  };
37
40
  //# sourceMappingURL=rn-text.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["MAX_FONT_SCALE","useAppTheme","Text","RNText","useWindowDimensions","jsx","_jsx","RnText","align","color","variant","props","theme","fontScale","style","typography","lineHeight","Math","min","maxFontSizeMultiplier","textAlign"],"sourceRoot":"../../../../src","sources":["atoms/rn-text/rn-text.tsx"],"mappings":";;AAAA,SAAQA,cAAc,EAAEC,WAAW,QAAO,mBAAmB;AAC7D,SAAQC,IAAI,IAAIC,MAAM,EAAEC,mBAAmB,QAAO,cAAc;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAIhE,OAAO,MAAMC,MAAuB,GAAGA,CAAC;EACtCC,KAAK;EACLC,KAAK,GAAG,iBAAiB;EACzBC,OAAO,GAAG,MAAM;EAChB,GAAGC;AACQ,CAAC,KAAK;EACjB,MAAMC,KAAK,GAAGX,WAAW,CAAC,CAAC;EAC3B,MAAM;IAACY;EAAS,CAAC,GAAGT,mBAAmB,CAAC,CAAC;EACzC,MAAMU,KAAK,GAAGF,KAAK,CAACG,UAAU,CAACL,OAAO,CAAC;;EAEvC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAMM,UAAU,GAAGF,KAAK,CAACE,UAAU,GAAGC,IAAI,CAACC,GAAG,CAACL,SAAS,EAAEb,cAAc,CAAC;EAEzE,oBACEM,IAAA,CAACH,MAAM;IACLgB,qBAAqB,EAAEnB,cAAe;IACtCc,KAAK,EAAE,CAACA,KAAK,EAAE;MAACL,KAAK,EAAEG,KAAK,CAACH,KAAK,CAACA,KAAK,CAAC;MAAEO,UAAU;MAAEI,SAAS,EAAEZ;IAAK,CAAC,CAAE;IAAA,GACtEG;EAAK,CACV,CAAC;AAEN,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["useSplitSx","MAX_FONT_SCALE","useAppTheme","Text","RNText","useWindowDimensions","jsx","_jsx","RnText","align","color","variant","props","theme","sx","rest","fontScale","style","typography","lineHeight","Math","min","maxFontSizeMultiplier","textAlign"],"sourceRoot":"../../../../src","sources":["atoms/rn-text/rn-text.tsx"],"mappings":";;AAAA,SAAQA,UAAU,QAAO,gBAAgB;AACzC,SAAQC,cAAc,EAAEC,WAAW,QAAO,mBAAmB;AAC7D,SAAQC,IAAI,IAAIC,MAAM,EAAkBC,mBAAmB,QAAO,cAAc;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAIhF,OAAO,MAAMC,MAAuB,GAAGA,CAAC;EACtCC,KAAK;EACLC,KAAK,GAAG,iBAAiB;EACzBC,OAAO,GAAG,MAAM;EAChB,GAAGC;AACQ,CAAC,KAAK;EACjB,MAAMC,KAAK,GAAGX,WAAW,CAAC,CAAC;EAC3B;EACA,MAAM,CAACY,EAAE,EAAEC,IAAI,CAAC,GAAGf,UAAU,CAACY,KAAK,CAAyC;EAC5E,MAAM;IAACI;EAAS,CAAC,GAAGX,mBAAmB,CAAC,CAAC;EACzC,MAAMY,KAAK,GAAGJ,KAAK,CAACK,UAAU,CAACP,OAAO,CAAC;;EAEvC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAMQ,UAAU,GAAGF,KAAK,CAACE,UAAU,GAAGC,IAAI,CAACC,GAAG,CAACL,SAAS,EAAEf,cAAc,CAAC;EAEzE,oBACEM,IAAA,CAACH,MAAM;IACLkB,qBAAqB,EAAErB,cAAe;IACtCgB,KAAK,EAAE,CAACA,KAAK,EAAEH,EAAE,EAAE;MAACJ,KAAK,EAAEG,KAAK,CAACH,KAAK,CAACA,KAAK,CAAC;MAAES,UAAU;MAAEI,SAAS,EAAEd;IAAK,CAAC,CAAE;IAAA,GAC1EM;EAAI,CACT,CAAC;AAEN,CAAC","ignoreList":[]}
@@ -7,9 +7,9 @@ import { ABox } from "../box/index.js";
7
7
  import { jsx as _jsx } from "react/jsx-runtime";
8
8
  export const Skeleton = ({
9
9
  borderRadius = 'small',
10
- height,
10
+ h,
11
11
  testID,
12
- width
12
+ w
13
13
  }) => {
14
14
  const pulse = useSharedValue(opacity.o40);
15
15
  useEffect(() => {
@@ -23,11 +23,11 @@ export const Skeleton = ({
23
23
  return /*#__PURE__*/_jsx(ABox, {
24
24
  bg: "fill.quaternary",
25
25
  borderRadius: borderRadius,
26
- h: height,
26
+ h: h,
27
27
  style: rStyle,
28
28
  testID: testID,
29
- w: width,
30
- wide: width === undefined
29
+ w: w,
30
+ wide: w === undefined
31
31
  });
32
32
  };
33
33
  //# sourceMappingURL=skeleton.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["duration","opacity","useEffect","useAnimatedStyle","useSharedValue","withRepeat","withTiming","ABox","jsx","_jsx","Skeleton","borderRadius","height","testID","width","pulse","o40","value","o100","d800","rStyle","bg","h","style","w","wide","undefined"],"sourceRoot":"../../../../src","sources":["atoms/skeleton/skeleton.tsx"],"mappings":";;AAAA,SAAQA,QAAQ,EAAEC,OAAO,QAAO,mBAAmB;AACnD,SAAQC,SAAS,QAAO,OAAO;AAC/B,SAAQC,gBAAgB,EAAEC,cAAc,EAAEC,UAAU,EAAEC,UAAU,QAAO,yBAAyB;AAEhG,SAAQC,IAAI,QAAO,iBAAQ;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAG3B,OAAO,MAAMC,QAA2B,GAAGA,CAAC;EAACC,YAAY,GAAG,OAAO;EAAEC,MAAM;EAAEC,MAAM;EAAEC;AAAoB,CAAC,KAAK;EAC7G,MAAMC,KAAK,GAAGX,cAAc,CAASH,OAAO,CAACe,GAAG,CAAC;EAEjDd,SAAS,CAAC,MAAM;IACda,KAAK,CAACE,KAAK,GAAGZ,UAAU,CAACC,UAAU,CAACL,OAAO,CAACiB,IAAI,EAAE;MAAClB,QAAQ,EAAEA,QAAQ,CAACmB;IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC;EACzF,CAAC,EAAE,CAACJ,KAAK,CAAC,CAAC;EAEX,MAAMK,MAAM,GAAGjB,gBAAgB,CAAC,OAAO;IAACF,OAAO,EAAEc,KAAK,CAACE;EAAK,CAAC,CAAC,EAAE,EAAE,CAAC;EAEnE,oBACER,IAAA,CAACF,IAAI;IACHc,EAAE,EAAC,iBAAiB;IACpBV,YAAY,EAAEA,YAAa;IAC3BW,CAAC,EAAEV,MAAO;IACVW,KAAK,EAAEH,MAAO;IACdP,MAAM,EAAEA,MAAO;IACfW,CAAC,EAAEV,KAAM;IACTW,IAAI,EAAEX,KAAK,KAAKY;EAAU,CAC3B,CAAC;AAEN,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["duration","opacity","useEffect","useAnimatedStyle","useSharedValue","withRepeat","withTiming","ABox","jsx","_jsx","Skeleton","borderRadius","h","testID","w","pulse","o40","value","o100","d800","rStyle","bg","style","wide","undefined"],"sourceRoot":"../../../../src","sources":["atoms/skeleton/skeleton.tsx"],"mappings":";;AAAA,SAAQA,QAAQ,EAAEC,OAAO,QAAO,mBAAmB;AACnD,SAAQC,SAAS,QAAO,OAAO;AAC/B,SAAQC,gBAAgB,EAAEC,cAAc,EAAEC,UAAU,EAAEC,UAAU,QAAO,yBAAyB;AAEhG,SAAQC,IAAI,QAAO,iBAAQ;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAG3B,OAAO,MAAMC,QAA2B,GAAGA,CAAC;EAACC,YAAY,GAAG,OAAO;EAAEC,CAAC;EAAEC,MAAM;EAAEC;AAAgB,CAAC,KAAK;EACpG,MAAMC,KAAK,GAAGX,cAAc,CAASH,OAAO,CAACe,GAAG,CAAC;EAEjDd,SAAS,CAAC,MAAM;IACda,KAAK,CAACE,KAAK,GAAGZ,UAAU,CAACC,UAAU,CAACL,OAAO,CAACiB,IAAI,EAAE;MAAClB,QAAQ,EAAEA,QAAQ,CAACmB;IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC;EACzF,CAAC,EAAE,CAACJ,KAAK,CAAC,CAAC;EAEX,MAAMK,MAAM,GAAGjB,gBAAgB,CAAC,OAAO;IAACF,OAAO,EAAEc,KAAK,CAACE;EAAK,CAAC,CAAC,EAAE,EAAE,CAAC;EAEnE,oBACER,IAAA,CAACF,IAAI;IACHc,EAAE,EAAC,iBAAiB;IACpBV,YAAY,EAAEA,YAAa;IAC3BC,CAAC,EAAEA,CAAE;IACLU,KAAK,EAAEF,MAAO;IACdP,MAAM,EAAEA,MAAO;IACfC,CAAC,EAAEA,CAAE;IACLS,IAAI,EAAET,CAAC,KAAKU;EAAU,CACvB,CAAC;AAEN,CAAC","ignoreList":[]}
@@ -2,6 +2,7 @@
2
2
 
3
3
  import { Text as ComposeText } from '@expo/ui/jetpack-compose';
4
4
  import { testID as testIdModifier } from '@expo/ui/jetpack-compose/modifiers';
5
+ import { useSxModifiers } from '@hzblj/kara-sx';
5
6
  import { useAppTheme } from '@hzblj/kara-theme';
6
7
  import { useMemo } from 'react';
7
8
  import { useHostGuard } from "../../host-context.js";
@@ -26,12 +27,14 @@ export const Text = ({
26
27
  numberOfLines,
27
28
  testID,
28
29
  transform,
29
- variant = 'body'
30
+ variant = 'body',
31
+ ...sx
30
32
  }) => {
31
33
  useHostGuard('Text');
32
34
  const theme = useAppTheme();
33
35
  const style = theme.typography[variant];
34
- const modifiers = useMemo(() => testID ? [testIdModifier(testID)] : undefined, [testID]);
36
+ const sxModifiers = useSxModifiers(sx);
37
+ const modifiers = useMemo(() => testID ? [...sxModifiers, testIdModifier(testID)] : sxModifiers, [sxModifiers, testID]);
35
38
  return /*#__PURE__*/_jsx(ComposeText, {
36
39
  color: theme.colorString(color),
37
40
  maxLines: numberOfLines,
@@ -1 +1 @@
1
- {"version":3,"names":["Text","ComposeText","testID","testIdModifier","useAppTheme","useMemo","useHostGuard","jsx","_jsx","DECORATION","none","strikethrough","underline","applyTransform","children","transform","toUpperCase","toLowerCase","decorationOf","decoration","undefined","align","color","numberOfLines","variant","theme","style","typography","modifiers","colorString","maxLines","fontFamily","fontSize","fontWeight","lineHeight","textAlign","textDecoration"],"sourceRoot":"../../../../src","sources":["atoms/text/text.android.tsx"],"mappings":";;AAAA,SAAQA,IAAI,IAAIC,WAAW,QAAO,0BAA0B;AAC5D,SAAQC,MAAM,IAAIC,cAAc,QAAO,oCAAoC;AAC3E,SAAQC,WAAW,QAAO,mBAAmB;AAC7C,SAAQC,OAAO,QAAO,OAAO;AAE7B,SAAQC,YAAY,QAAO,uBAAoB;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAG/C,MAAMC,UAAU,GAAG;EACjBC,IAAI,EAAE,MAAM;EACZC,aAAa,EAAE,aAAa;EAC5BC,SAAS,EAAE;AACb,CAAU;AAEV,MAAMC,cAAc,GAAGA,CAACC,QAA+B,EAAEC,SAAoC,KAAK;EAChG,IAAI,CAACA,SAAS,IAAI,OAAOD,QAAQ,KAAK,QAAQ,EAAE;IAC9C,OAAOA,QAAQ;EACjB;EAEA,OAAOC,SAAS,KAAK,WAAW,GAAGD,QAAQ,CAACE,WAAW,CAAC,CAAC,GAAGF,QAAQ,CAACG,WAAW,CAAC,CAAC;AACpF,CAAC;AAED,MAAMC,YAAY,GAAIC,UAAsC,IAC1DA,UAAU,KAAKC,SAAS,GAAGA,SAAS,GAAGX,UAAU,CAACU,UAAU,CAAC;AAE/D,OAAO,MAAMnB,IAAmB,GAAGA,CAAC;EAClCqB,KAAK;EACLP,QAAQ;EACRQ,KAAK,GAAG,iBAAiB;EACzBH,UAAU;EACVI,aAAa;EACbrB,MAAM;EACNa,SAAS;EACTS,OAAO,GAAG;AACD,CAAC,KAAK;EACflB,YAAY,CAAC,MAAM,CAAC;EACpB,MAAMmB,KAAK,GAAGrB,WAAW,CAAC,CAAC;EAC3B,MAAMsB,KAAK,GAAGD,KAAK,CAACE,UAAU,CAACH,OAAO,CAAC;EACvC,MAAMI,SAAS,GAAGvB,OAAO,CAAC,MAAOH,MAAM,GAAG,CAACC,cAAc,CAACD,MAAM,CAAC,CAAC,GAAGkB,SAAU,EAAE,CAAClB,MAAM,CAAC,CAAC;EAE1F,oBACEM,IAAA,CAACP,WAAW;IACVqB,KAAK,EAAEG,KAAK,CAACI,WAAW,CAACP,KAAK,CAAE;IAChCQ,QAAQ,EAAEP,aAAc;IACxBK,SAAS,EAAEA,SAAU;IACrBF,KAAK,EAAE;MACLK,UAAU,EAAEL,KAAK,CAACK,UAAU;MAC5BC,QAAQ,EAAEN,KAAK,CAACM,QAAQ;MACxBC,UAAU,EAAEP,KAAK,CAACO,UAAU;MAC5BC,UAAU,EAAER,KAAK,CAACQ,UAAU;MAC5BC,SAAS,EAAEd,KAAK;MAChBe,cAAc,EAAElB,YAAY,CAACC,UAAU;IACzC,CAAE;IAAAL,QAAA,EAEDD,cAAc,CAACC,QAAQ,EAAEC,SAAS;EAAC,CACzB,CAAC;AAElB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["Text","ComposeText","testID","testIdModifier","useSxModifiers","useAppTheme","useMemo","useHostGuard","jsx","_jsx","DECORATION","none","strikethrough","underline","applyTransform","children","transform","toUpperCase","toLowerCase","decorationOf","decoration","undefined","align","color","numberOfLines","variant","sx","theme","style","typography","sxModifiers","modifiers","colorString","maxLines","fontFamily","fontSize","fontWeight","lineHeight","textAlign","textDecoration"],"sourceRoot":"../../../../src","sources":["atoms/text/text.android.tsx"],"mappings":";;AAAA,SAAQA,IAAI,IAAIC,WAAW,QAAO,0BAA0B;AAC5D,SAAQC,MAAM,IAAIC,cAAc,QAAO,oCAAoC;AAC3E,SAAQC,cAAc,QAAO,gBAAgB;AAC7C,SAAQC,WAAW,QAAO,mBAAmB;AAC7C,SAAQC,OAAO,QAAO,OAAO;AAE7B,SAAQC,YAAY,QAAO,uBAAoB;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAG/C,MAAMC,UAAU,GAAG;EACjBC,IAAI,EAAE,MAAM;EACZC,aAAa,EAAE,aAAa;EAC5BC,SAAS,EAAE;AACb,CAAU;AAEV,MAAMC,cAAc,GAAGA,CAACC,QAA+B,EAAEC,SAAoC,KAAK;EAChG,IAAI,CAACA,SAAS,IAAI,OAAOD,QAAQ,KAAK,QAAQ,EAAE;IAC9C,OAAOA,QAAQ;EACjB;EAEA,OAAOC,SAAS,KAAK,WAAW,GAAGD,QAAQ,CAACE,WAAW,CAAC,CAAC,GAAGF,QAAQ,CAACG,WAAW,CAAC,CAAC;AACpF,CAAC;AAED,MAAMC,YAAY,GAAIC,UAAsC,IAC1DA,UAAU,KAAKC,SAAS,GAAGA,SAAS,GAAGX,UAAU,CAACU,UAAU,CAAC;AAE/D,OAAO,MAAMpB,IAAmB,GAAGA,CAAC;EAClCsB,KAAK;EACLP,QAAQ;EACRQ,KAAK,GAAG,iBAAiB;EACzBH,UAAU;EACVI,aAAa;EACbtB,MAAM;EACNc,SAAS;EACTS,OAAO,GAAG,MAAM;EAChB,GAAGC;AACM,CAAC,KAAK;EACfnB,YAAY,CAAC,MAAM,CAAC;EACpB,MAAMoB,KAAK,GAAGtB,WAAW,CAAC,CAAC;EAC3B,MAAMuB,KAAK,GAAGD,KAAK,CAACE,UAAU,CAACJ,OAAO,CAAC;EACvC,MAAMK,WAAW,GAAG1B,cAAc,CAACsB,EAAE,CAAC;EACtC,MAAMK,SAAS,GAAGzB,OAAO,CACvB,MAAOJ,MAAM,GAAG,CAAC,GAAG4B,WAAW,EAAE3B,cAAc,CAACD,MAAM,CAAC,CAAC,GAAG4B,WAAY,EACvE,CAACA,WAAW,EAAE5B,MAAM,CACtB,CAAC;EAED,oBACEO,IAAA,CAACR,WAAW;IACVsB,KAAK,EAAEI,KAAK,CAACK,WAAW,CAACT,KAAK,CAAE;IAChCU,QAAQ,EAAET,aAAc;IACxBO,SAAS,EAAEA,SAAU;IACrBH,KAAK,EAAE;MACLM,UAAU,EAAEN,KAAK,CAACM,UAAU;MAC5BC,QAAQ,EAAEP,KAAK,CAACO,QAAQ;MACxBC,UAAU,EAAER,KAAK,CAACQ,UAAU;MAC5BC,UAAU,EAAET,KAAK,CAACS,UAAU;MAC5BC,SAAS,EAAEhB,KAAK;MAChBiB,cAAc,EAAEpB,YAAY,CAACC,UAAU;IACzC,CAAE;IAAAL,QAAA,EAEDD,cAAc,CAACC,QAAQ,EAAEC,SAAS;EAAC,CACzB,CAAC;AAElB,CAAC","ignoreList":[]}
@@ -3,6 +3,7 @@
3
3
  import { Text as SwiftUIText } from '@expo/ui/swift-ui';
4
4
  import { foregroundStyle, lineLimit, lineSpacing, multilineTextAlignment, strikethrough, textCase, underline } from '@expo/ui/swift-ui/modifiers';
5
5
  import { scaledFont } from '@hzblj/kara-native/swift-ui';
6
+ import { useSxModifiers } from '@hzblj/kara-sx';
6
7
  import { useAppTheme } from '@hzblj/kara-theme';
7
8
  import { useMemo } from 'react';
8
9
  import { useHostGuard } from "../../host-context.js";
@@ -12,6 +13,13 @@ const ALIGNMENT = {
12
13
  left: 'leading',
13
14
  right: 'trailing'
14
15
  };
16
+
17
+ /** Where a frame larger than the text — `wide`, `w`, `h` — puts it: on the side its lines align to, centred vertically. */
18
+ const FRAME_ALIGNMENT = {
19
+ center: 'center',
20
+ left: 'leading',
21
+ right: 'trailing'
22
+ };
15
23
  export const Text = ({
16
24
  align,
17
25
  children,
@@ -20,11 +28,14 @@ export const Text = ({
20
28
  numberOfLines,
21
29
  testID,
22
30
  transform,
23
- variant = 'body'
31
+ variant = 'body',
32
+ ...sx
24
33
  }) => {
25
34
  useHostGuard('Text');
26
35
  const theme = useAppTheme();
27
36
  const style = theme.typography[variant];
37
+ // After the text's own modifiers: the font and colour belong to the glyphs, the padding and frame to the box around.
38
+ const sxModifiers = useSxModifiers(sx, FRAME_ALIGNMENT[align ?? 'left']);
28
39
  const modifiers = useMemo(() => {
29
40
  const list = [
30
41
  // Not `@expo/ui`'s `font()`: for the platform's face it gives either Apple's size or a size that ignores Dynamic
@@ -56,8 +67,8 @@ export const Text = ({
56
67
  if (numberOfLines !== undefined) {
57
68
  list.push(lineLimit(numberOfLines));
58
69
  }
59
- return list;
60
- }, [align, color, decoration, numberOfLines, style, theme, transform]);
70
+ return [...list, ...sxModifiers];
71
+ }, [align, color, decoration, numberOfLines, style, sxModifiers, theme, transform]);
61
72
  return /*#__PURE__*/_jsx(SwiftUIText, {
62
73
  modifiers: modifiers,
63
74
  testID: testID,
@@ -1 +1 @@
1
- {"version":3,"names":["Text","SwiftUIText","foregroundStyle","lineLimit","lineSpacing","multilineTextAlignment","strikethrough","textCase","underline","scaledFont","useAppTheme","useMemo","useHostGuard","jsx","_jsx","ALIGNMENT","center","left","right","align","children","color","decoration","numberOfLines","testID","transform","variant","theme","style","typography","modifiers","list","family","fontFamily","size","fontSize","textStyle","scalesWith","weight","Math","max","lineHeight","push","isActive","pattern","undefined"],"sourceRoot":"../../../../src","sources":["atoms/text/text.ios.tsx"],"mappings":";;AAAA,SAAQA,IAAI,IAAIC,WAAW,QAAO,mBAAmB;AACrD,SACEC,eAAe,EACfC,SAAS,EACTC,WAAW,EAEXC,sBAAsB,EACtBC,aAAa,EACbC,QAAQ,EACRC,SAAS,QACJ,6BAA6B;AACpC,SAAQC,UAAU,QAAO,6BAA6B;AACtD,SAAQC,WAAW,QAAO,mBAAmB;AAC7C,SAAQC,OAAO,QAAO,OAAO;AAE7B,SAAQC,YAAY,QAAO,uBAAoB;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAG/C,MAAMC,SAAS,GAAG;EAChBC,MAAM,EAAE,QAAQ;EAChBC,IAAI,EAAE,SAAS;EACfC,KAAK,EAAE;AACT,CAAU;AAEV,OAAO,MAAMlB,IAAmB,GAAGA,CAAC;EAClCmB,KAAK;EACLC,QAAQ;EACRC,KAAK,GAAG,iBAAiB;EACzBC,UAAU;EACVC,aAAa;EACbC,MAAM;EACNC,SAAS;EACTC,OAAO,GAAG;AACD,CAAC,KAAK;EACfd,YAAY,CAAC,MAAM,CAAC;EACpB,MAAMe,KAAK,GAAGjB,WAAW,CAAC,CAAC;EAC3B,MAAMkB,KAAK,GAAGD,KAAK,CAACE,UAAU,CAACH,OAAO,CAAC;EAEvC,MAAMI,SAAS,GAAGnB,OAAO,CAAC,MAAM;IAC9B,MAAMoB,IAAsB,GAAG;IAC7B;IACA;IACAtB,UAAU,CAAC;MAACuB,MAAM,EAAEJ,KAAK,CAACK,UAAU;MAAEC,IAAI,EAAEN,KAAK,CAACO,QAAQ;MAAEC,SAAS,EAAER,KAAK,CAACS,UAAU;MAAEC,MAAM,EAAEV,KAAK,CAACU;IAAM,CAAC,CAAC,EAC/GlC,WAAW,CAACmC,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEZ,KAAK,CAACa,UAAU,GAAGb,KAAK,CAACO,QAAQ,CAAC,CAAC,EAC3DjC,eAAe,CAACyB,KAAK,CAACN,KAAK,CAACA,KAAK,CAAC,CAAC,CACpC;IAED,IAAIF,KAAK,EAAE;MACTY,IAAI,CAACW,IAAI,CAACrC,sBAAsB,CAACU,SAAS,CAACI,KAAK,CAAC,CAAC,CAAC;IACrD;IAEA,IAAIM,SAAS,EAAE;MACbM,IAAI,CAACW,IAAI,CAACnC,QAAQ,CAACkB,SAAS,CAAC,CAAC;IAChC;IAEA,IAAIH,UAAU,KAAK,WAAW,EAAE;MAC9BS,IAAI,CAACW,IAAI,CAAClC,SAAS,CAAC;QAACmC,QAAQ,EAAE,IAAI;QAAEC,OAAO,EAAE;MAAO,CAAC,CAAC,CAAC;IAC1D;IAEA,IAAItB,UAAU,KAAK,eAAe,EAAE;MAClCS,IAAI,CAACW,IAAI,CAACpC,aAAa,CAAC;QAACqC,QAAQ,EAAE,IAAI;QAAEC,OAAO,EAAE;MAAO,CAAC,CAAC,CAAC;IAC9D;IAEA,IAAIrB,aAAa,KAAKsB,SAAS,EAAE;MAC/Bd,IAAI,CAACW,IAAI,CAACvC,SAAS,CAACoB,aAAa,CAAC,CAAC;IACrC;IAEA,OAAOQ,IAAI;EACb,CAAC,EAAE,CAACZ,KAAK,EAAEE,KAAK,EAAEC,UAAU,EAAEC,aAAa,EAAEK,KAAK,EAAED,KAAK,EAAEF,SAAS,CAAC,CAAC;EAEtE,oBACEX,IAAA,CAACb,WAAW;IAAC6B,SAAS,EAAEA,SAAU;IAACN,MAAM,EAAEA,MAAO;IAAAJ,QAAA,EAC/CA;EAAQ,CACE,CAAC;AAElB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["Text","SwiftUIText","foregroundStyle","lineLimit","lineSpacing","multilineTextAlignment","strikethrough","textCase","underline","scaledFont","useSxModifiers","useAppTheme","useMemo","useHostGuard","jsx","_jsx","ALIGNMENT","center","left","right","FRAME_ALIGNMENT","align","children","color","decoration","numberOfLines","testID","transform","variant","sx","theme","style","typography","sxModifiers","modifiers","list","family","fontFamily","size","fontSize","textStyle","scalesWith","weight","Math","max","lineHeight","push","isActive","pattern","undefined"],"sourceRoot":"../../../../src","sources":["atoms/text/text.ios.tsx"],"mappings":"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","ignoreList":[]}
@@ -1,12 +1,31 @@
1
1
  "use strict";
2
2
 
3
- import { AnimatedVisibility, Column, Text as ComposeText, Row } from '@expo/ui/jetpack-compose';
4
- import { clickable } from '@expo/ui/jetpack-compose/modifiers';
5
- import { useAppTheme } from '@hzblj/kara-theme';
3
+ import { AnimatedVisibility, Box, Column, Text as ComposeText, EnterTransition, ExitTransition, Row } from '@expo/ui/jetpack-compose';
4
+ import { animated, clickable, defaultMinSize, fillMaxWidth, graphicsLayer, tween } from '@expo/ui/jetpack-compose/modifiers';
5
+ import { duration, useAppTheme } from '@hzblj/kara-theme';
6
6
  import { useMemo } from 'react';
7
7
  import { Glyph } from "../../glyph/index.js";
8
8
  import { useHostGuard } from "../../host-context.js";
9
9
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
10
+ /** Material's standard easing, at the length a disclosure takes. */
11
+ const TURN = tween({
12
+ durationMillis: duration.d200,
13
+ easing: 'fastOutSlowIn'
14
+ });
15
+
16
+ /** Down from the row, fading in — Compose's default grows from a corner, sideways as well as down. */
17
+ const ENTER = EnterTransition.expandVertically().plus(EnterTransition.fadeIn());
18
+ const EXIT = ExitTransition.shrinkVertically().plus(ExitTransition.fadeOut());
19
+ const WIDE = [fillMaxWidth()];
20
+
21
+ /** Material's least touch target. */
22
+ const ROW_HEIGHT = 48;
23
+
24
+ /**
25
+ * A pressable row and an animated reveal: the content expands down from the row, and the chevron turns a quarter
26
+ * toward it, as a Material disclosure does — it used to jump between two glyphs. The row spans its parent, the chevron
27
+ * at the far end, and is never shorter than a touch target.
28
+ */
10
29
  export const Collapsible = ({
11
30
  children,
12
31
  expanded,
@@ -15,8 +34,14 @@ export const Collapsible = ({
15
34
  }) => {
16
35
  useHostGuard('Collapsible');
17
36
  const theme = useAppTheme();
18
- const modifiers = useMemo(() => [clickable(() => onExpandedChange(!expanded))], [expanded, onExpandedChange]);
37
+ const modifiers = useMemo(() => [fillMaxWidth(), defaultMinSize({
38
+ minHeight: ROW_HEIGHT
39
+ }), clickable(() => onExpandedChange(!expanded))], [expanded, onExpandedChange]);
40
+ const turn = useMemo(() => [graphicsLayer({
41
+ rotationZ: animated(expanded ? 90 : 0, TURN)
42
+ })], [expanded]);
19
43
  return /*#__PURE__*/_jsxs(Column, {
44
+ modifiers: WIDE,
20
45
  children: [/*#__PURE__*/_jsxs(Row, {
21
46
  horizontalArrangement: "spaceBetween",
22
47
  modifiers: modifiers,
@@ -25,11 +50,16 @@ export const Collapsible = ({
25
50
  color: theme.colorString('content.primary'),
26
51
  style: theme.typography.body,
27
52
  children: label
28
- }), /*#__PURE__*/_jsx(Glyph, {
29
- name: expanded ? 'chevronDown' : 'chevronRight',
30
- size: "s20"
53
+ }), /*#__PURE__*/_jsx(Box, {
54
+ modifiers: turn,
55
+ children: /*#__PURE__*/_jsx(Glyph, {
56
+ name: "chevronRight",
57
+ size: "s20"
58
+ })
31
59
  })]
32
60
  }), /*#__PURE__*/_jsx(AnimatedVisibility, {
61
+ enterTransition: ENTER,
62
+ exitTransition: EXIT,
33
63
  visible: expanded,
34
64
  children: children
35
65
  })]
@@ -1 +1 @@
1
- {"version":3,"names":["AnimatedVisibility","Column","Text","ComposeText","Row","clickable","useAppTheme","useMemo","Glyph","useHostGuard","jsx","_jsx","jsxs","_jsxs","Collapsible","children","expanded","label","onExpandedChange","theme","modifiers","horizontalArrangement","verticalAlignment","color","colorString","style","typography","body","name","size","visible"],"sourceRoot":"../../../../src","sources":["molecules/collapsible/collapsible.android.tsx"],"mappings":";;AAAA,SAAQA,kBAAkB,EAAEC,MAAM,EAAEC,IAAI,IAAIC,WAAW,EAAEC,GAAG,QAAO,0BAA0B;AAC7F,SAAQC,SAAS,QAAO,oCAAoC;AAC5D,SAAQC,WAAW,QAAO,mBAAmB;AAC7C,SAAQC,OAAO,QAAO,OAAO;AAC7B,SAAQC,KAAK,QAAO,sBAAa;AACjC,SAAQC,YAAY,QAAO,uBAAoB;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAG/C,OAAO,MAAMC,WAAiC,GAAGA,CAAC;EAACC,QAAQ;EAAEC,QAAQ;EAAEC,KAAK;EAAEC;AAAkC,CAAC,KAAK;EACpHT,YAAY,CAAC,aAAa,CAAC;EAC3B,MAAMU,KAAK,GAAGb,WAAW,CAAC,CAAC;EAC3B,MAAMc,SAAS,GAAGb,OAAO,CAAC,MAAM,CAACF,SAAS,CAAC,MAAMa,gBAAgB,CAAC,CAACF,QAAQ,CAAC,CAAC,CAAC,EAAE,CAACA,QAAQ,EAAEE,gBAAgB,CAAC,CAAC;EAE7G,oBACEL,KAAA,CAACZ,MAAM;IAAAc,QAAA,gBACLF,KAAA,CAACT,GAAG;MAACiB,qBAAqB,EAAC,cAAc;MAACD,SAAS,EAAEA,SAAU;MAACE,iBAAiB,EAAC,QAAQ;MAAAP,QAAA,gBACxFJ,IAAA,CAACR,WAAW;QAACoB,KAAK,EAAEJ,KAAK,CAACK,WAAW,CAAC,iBAAiB,CAAE;QAACC,KAAK,EAAEN,KAAK,CAACO,UAAU,CAACC,IAAK;QAAAZ,QAAA,EACpFE;MAAK,CACK,CAAC,eACdN,IAAA,CAACH,KAAK;QAACoB,IAAI,EAAEZ,QAAQ,GAAG,aAAa,GAAG,cAAe;QAACa,IAAI,EAAC;MAAK,CAAE,CAAC;IAAA,CAClE,CAAC,eACNlB,IAAA,CAACX,kBAAkB;MAAC8B,OAAO,EAAEd,QAAS;MAAAD,QAAA,EAAEA;IAAQ,CAAqB,CAAC;EAAA,CAChE,CAAC;AAEb,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["AnimatedVisibility","Box","Column","Text","ComposeText","EnterTransition","ExitTransition","Row","animated","clickable","defaultMinSize","fillMaxWidth","graphicsLayer","tween","duration","useAppTheme","useMemo","Glyph","useHostGuard","jsx","_jsx","jsxs","_jsxs","TURN","durationMillis","d200","easing","ENTER","expandVertically","plus","fadeIn","EXIT","shrinkVertically","fadeOut","WIDE","ROW_HEIGHT","Collapsible","children","expanded","label","onExpandedChange","theme","modifiers","minHeight","turn","rotationZ","horizontalArrangement","verticalAlignment","color","colorString","style","typography","body","name","size","enterTransition","exitTransition","visible"],"sourceRoot":"../../../../src","sources":["molecules/collapsible/collapsible.android.tsx"],"mappings":";;AAAA,SACEA,kBAAkB,EAClBC,GAAG,EACHC,MAAM,EACNC,IAAI,IAAIC,WAAW,EACnBC,eAAe,EACfC,cAAc,EACdC,GAAG,QACE,0BAA0B;AACjC,SACEC,QAAQ,EACRC,SAAS,EACTC,cAAc,EACdC,YAAY,EACZC,aAAa,EACbC,KAAK,QACA,oCAAoC;AAC3C,SAAQC,QAAQ,EAAEC,WAAW,QAAO,mBAAmB;AACvD,SAAQC,OAAO,QAAO,OAAO;AAC7B,SAAQC,KAAK,QAAO,sBAAa;AACjC,SAAQC,YAAY,QAAO,uBAAoB;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAG/C;AACA,MAAMC,IAAI,GAAGV,KAAK,CAAC;EAACW,cAAc,EAAEV,QAAQ,CAACW,IAAI;EAAEC,MAAM,EAAE;AAAe,CAAC,CAAC;;AAE5E;AACA,MAAMC,KAAK,GAAGtB,eAAe,CAACuB,gBAAgB,CAAC,CAAC,CAACC,IAAI,CAACxB,eAAe,CAACyB,MAAM,CAAC,CAAC,CAAC;AAC/E,MAAMC,IAAI,GAAGzB,cAAc,CAAC0B,gBAAgB,CAAC,CAAC,CAACH,IAAI,CAACvB,cAAc,CAAC2B,OAAO,CAAC,CAAC,CAAC;AAE7E,MAAMC,IAAI,GAAG,CAACvB,YAAY,CAAC,CAAC,CAAC;;AAE7B;AACA,MAAMwB,UAAU,GAAG,EAAE;;AAErB;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,WAAiC,GAAGA,CAAC;EAACC,QAAQ;EAAEC,QAAQ;EAAEC,KAAK;EAAEC;AAAkC,CAAC,KAAK;EACpHtB,YAAY,CAAC,aAAa,CAAC;EAC3B,MAAMuB,KAAK,GAAG1B,WAAW,CAAC,CAAC;EAC3B,MAAM2B,SAAS,GAAG1B,OAAO,CACvB,MAAM,CAACL,YAAY,CAAC,CAAC,EAAED,cAAc,CAAC;IAACiC,SAAS,EAAER;EAAU,CAAC,CAAC,EAAE1B,SAAS,CAAC,MAAM+B,gBAAgB,CAAC,CAACF,QAAQ,CAAC,CAAC,CAAC,EAC7G,CAACA,QAAQ,EAAEE,gBAAgB,CAC7B,CAAC;EACD,MAAMI,IAAI,GAAG5B,OAAO,CAAC,MAAM,CAACJ,aAAa,CAAC;IAACiC,SAAS,EAAErC,QAAQ,CAAC8B,QAAQ,GAAG,EAAE,GAAG,CAAC,EAAEf,IAAI;EAAC,CAAC,CAAC,CAAC,EAAE,CAACe,QAAQ,CAAC,CAAC;EAEvG,oBACEhB,KAAA,CAACpB,MAAM;IAACwC,SAAS,EAAER,IAAK;IAAAG,QAAA,gBACtBf,KAAA,CAACf,GAAG;MAACuC,qBAAqB,EAAC,cAAc;MAACJ,SAAS,EAAEA,SAAU;MAACK,iBAAiB,EAAC,QAAQ;MAAAV,QAAA,gBACxFjB,IAAA,CAAChB,WAAW;QAAC4C,KAAK,EAAEP,KAAK,CAACQ,WAAW,CAAC,iBAAiB,CAAE;QAACC,KAAK,EAAET,KAAK,CAACU,UAAU,CAACC,IAAK;QAAAf,QAAA,EACpFE;MAAK,CACK,CAAC,eACdnB,IAAA,CAACnB,GAAG;QAACyC,SAAS,EAAEE,IAAK;QAAAP,QAAA,eACnBjB,IAAA,CAACH,KAAK;UAACoC,IAAI,EAAC,cAAc;UAACC,IAAI,EAAC;QAAK,CAAE;MAAC,CACrC,CAAC;IAAA,CACH,CAAC,eACNlC,IAAA,CAACpB,kBAAkB;MAACuD,eAAe,EAAE5B,KAAM;MAAC6B,cAAc,EAAEzB,IAAK;MAAC0B,OAAO,EAAEnB,QAAS;MAAAD,QAAA,EACjFA;IAAQ,CACS,CAAC;EAAA,CACf,CAAC;AAEb,CAAC","ignoreList":[]}
@@ -4,17 +4,10 @@ import { iconResourceName } from '@hzblj/kara-native';
4
4
  import { TopAppBar } from '@hzblj/kara-native/jetpack-compose';
5
5
  import { useAppTheme } from '@hzblj/kara-theme';
6
6
  import { useMemo } from 'react';
7
- import { StyleSheet } from 'react-native';
8
7
  import { Island } from "../../atoms/island/index.js";
9
8
  import { jsx as _jsx } from "react/jsx-runtime";
10
9
  /** Material's small top app bar. */
11
10
  const BAR_HEIGHT = 64;
12
- const styles = StyleSheet.create({
13
- bar: {
14
- height: BAR_HEIGHT,
15
- width: '100%'
16
- }
17
- });
18
11
  const DEFAULT_LABELS = {
19
12
  back: 'Back',
20
13
  close: 'Close'
@@ -52,9 +45,10 @@ export const NavigationBar = ({
52
45
  const nativeLeadingItems = useMemo(() => leadingItems?.map(toNativeItem), [leadingItems]);
53
46
  const nativeTrailingItems = useMemo(() => trailingItems?.map(toNativeItem), [trailingItems]);
54
47
  return /*#__PURE__*/_jsx(Island, {
48
+ h: BAR_HEIGHT,
55
49
  matchContents: false,
56
- style: styles.bar,
57
50
  testID: testID,
51
+ w: "100%",
58
52
  children: /*#__PURE__*/_jsx(TopAppBar, {
59
53
  fontFamily: font.fontFamily,
60
54
  fontSize: font.fontSize,
@@ -1 +1 @@
1
- {"version":3,"names":["iconResourceName","TopAppBar","useAppTheme","useMemo","StyleSheet","Island","jsx","_jsx","BAR_HEIGHT","styles","create","bar","height","width","DEFAULT_LABELS","back","close","toNativeItem","onPress","testID","item","type","iconName","icon","label","NavigationBar","inverted","leadingItems","title","titleAlignment","titleVisible","trailingItems","theme","font","typography","headline","color","nativeLeadingItems","map","nativeTrailingItems","matchContents","style","children","fontFamily","fontSize","itemColor","titleColor"],"sourceRoot":"../../../../src","sources":["molecules/navigation-bar/navigation-bar.android.tsx"],"mappings":";;AAAA,SAAQA,gBAAgB,QAAO,oBAAoB;AACnD,SAAQC,SAAS,QAA2B,oCAAoC;AAChF,SAAQC,WAAW,QAAO,mBAAmB;AAC7C,SAAQC,OAAO,QAAO,OAAO;AAC7B,SAAQC,UAAU,QAAO,cAAc;AACvC,SAAQC,MAAM,QAAO,6BAAoB;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAGzC;AACA,MAAMC,UAAU,GAAG,EAAE;AAErB,MAAMC,MAAM,GAAGL,UAAU,CAACM,MAAM,CAAC;EAC/BC,GAAG,EAAE;IAACC,MAAM,EAAEJ,UAAU;IAAEK,KAAK,EAAE;EAAM;AACzC,CAAC,CAAC;AAEF,MAAMC,cAAc,GAAG;EAACC,IAAI,EAAE,MAAM;EAAEC,KAAK,EAAE;AAAO,CAAU;AAE9D,MAAMC,YAAY,GAAGA,CAAC;EAACC,OAAO;EAAEC,MAAM;EAAE,GAAGC;AAAuB,CAAC,KACjEA,IAAI,CAACC,IAAI,KAAK,MAAM,GAChB;EAACC,QAAQ,EAAEtB,gBAAgB,CAACoB,IAAI,CAACG,IAAI,CAAC;EAAEC,KAAK,EAAEJ,IAAI,CAACI,KAAK;EAAEN,OAAO;EAAEC,MAAM;EAAEE,IAAI,EAAE;AAAM,CAAC,GACzF;EAACG,KAAK,EAAEJ,IAAI,CAACI,KAAK,IAAIV,cAAc,CAACM,IAAI,CAACC,IAAI,CAAC;EAAEH,OAAO;EAAEC,MAAM;EAAEE,IAAI,EAAED,IAAI,CAACC;AAAI,CAAC;;AAExF;AACA,OAAO,MAAMI,aAAqC,GAAGA,CAAC;EACpDC,QAAQ,GAAG,KAAK;EAChBC,YAAY;EACZR,MAAM;EACNS,KAAK;EACLC,cAAc,GAAG,QAAQ;EACzBC,YAAY,GAAG,IAAI;EACnBC;AACkB,CAAC,KAAK;EACxB,MAAMC,KAAK,GAAG9B,WAAW,CAAC,CAAC;EAC3B,MAAM+B,IAAI,GAAGD,KAAK,CAACE,UAAU,CAACC,QAAQ;EACtC,MAAMC,KAAK,GAAGJ,KAAK,CAACI,KAAK,CAACV,QAAQ,GAAG,eAAe,GAAG,iBAAiB,CAAC;EAEzE,MAAMW,kBAAkB,GAAGlC,OAAO,CAAC,MAAMwB,YAAY,EAAEW,GAAG,CAACrB,YAAY,CAAC,EAAE,CAACU,YAAY,CAAC,CAAC;EACzF,MAAMY,mBAAmB,GAAGpC,OAAO,CAAC,MAAM4B,aAAa,EAAEO,GAAG,CAACrB,YAAY,CAAC,EAAE,CAACc,aAAa,CAAC,CAAC;EAE5F,oBACExB,IAAA,CAACF,MAAM;IAACmC,aAAa,EAAE,KAAM;IAACC,KAAK,EAAEhC,MAAM,CAACE,GAAI;IAACQ,MAAM,EAAEA,MAAO;IAAAuB,QAAA,eAC9DnC,IAAA,CAACN,SAAS;MACR0C,UAAU,EAAEV,IAAI,CAACU,UAAW;MAC5BC,QAAQ,EAAEX,IAAI,CAACW,QAAS;MACxBC,SAAS,EAAET,KAAM;MACjBT,YAAY,EAAEU,kBAAmB;MACjCT,KAAK,EAAEA,KAAM;MACbC,cAAc,EAAEA,cAAe;MAC/BiB,UAAU,EAAEV,KAAM;MAClBN,YAAY,EAAEA,YAAa;MAC3BC,aAAa,EAAEQ;IAAoB,CACpC;EAAC,CACI,CAAC;AAEb,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["iconResourceName","TopAppBar","useAppTheme","useMemo","Island","jsx","_jsx","BAR_HEIGHT","DEFAULT_LABELS","back","close","toNativeItem","onPress","testID","item","type","iconName","icon","label","NavigationBar","inverted","leadingItems","title","titleAlignment","titleVisible","trailingItems","theme","font","typography","headline","color","nativeLeadingItems","map","nativeTrailingItems","h","matchContents","w","children","fontFamily","fontSize","itemColor","titleColor"],"sourceRoot":"../../../../src","sources":["molecules/navigation-bar/navigation-bar.android.tsx"],"mappings":";;AAAA,SAAQA,gBAAgB,QAAO,oBAAoB;AACnD,SAAQC,SAAS,QAA2B,oCAAoC;AAChF,SAAQC,WAAW,QAAO,mBAAmB;AAC7C,SAAQC,OAAO,QAAO,OAAO;AAC7B,SAAQC,MAAM,QAAO,6BAAoB;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAGzC;AACA,MAAMC,UAAU,GAAG,EAAE;AAErB,MAAMC,cAAc,GAAG;EAACC,IAAI,EAAE,MAAM;EAAEC,KAAK,EAAE;AAAO,CAAU;AAE9D,MAAMC,YAAY,GAAGA,CAAC;EAACC,OAAO;EAAEC,MAAM;EAAE,GAAGC;AAAuB,CAAC,KACjEA,IAAI,CAACC,IAAI,KAAK,MAAM,GAChB;EAACC,QAAQ,EAAEhB,gBAAgB,CAACc,IAAI,CAACG,IAAI,CAAC;EAAEC,KAAK,EAAEJ,IAAI,CAACI,KAAK;EAAEN,OAAO;EAAEC,MAAM;EAAEE,IAAI,EAAE;AAAM,CAAC,GACzF;EAACG,KAAK,EAAEJ,IAAI,CAACI,KAAK,IAAIV,cAAc,CAACM,IAAI,CAACC,IAAI,CAAC;EAAEH,OAAO;EAAEC,MAAM;EAAEE,IAAI,EAAED,IAAI,CAACC;AAAI,CAAC;;AAExF;AACA,OAAO,MAAMI,aAAqC,GAAGA,CAAC;EACpDC,QAAQ,GAAG,KAAK;EAChBC,YAAY;EACZR,MAAM;EACNS,KAAK;EACLC,cAAc,GAAG,QAAQ;EACzBC,YAAY,GAAG,IAAI;EACnBC;AACkB,CAAC,KAAK;EACxB,MAAMC,KAAK,GAAGxB,WAAW,CAAC,CAAC;EAC3B,MAAMyB,IAAI,GAAGD,KAAK,CAACE,UAAU,CAACC,QAAQ;EACtC,MAAMC,KAAK,GAAGJ,KAAK,CAACI,KAAK,CAACV,QAAQ,GAAG,eAAe,GAAG,iBAAiB,CAAC;EAEzE,MAAMW,kBAAkB,GAAG5B,OAAO,CAAC,MAAMkB,YAAY,EAAEW,GAAG,CAACrB,YAAY,CAAC,EAAE,CAACU,YAAY,CAAC,CAAC;EACzF,MAAMY,mBAAmB,GAAG9B,OAAO,CAAC,MAAMsB,aAAa,EAAEO,GAAG,CAACrB,YAAY,CAAC,EAAE,CAACc,aAAa,CAAC,CAAC;EAE5F,oBACEnB,IAAA,CAACF,MAAM;IAAC8B,CAAC,EAAE3B,UAAW;IAAC4B,aAAa,EAAE,KAAM;IAACtB,MAAM,EAAEA,MAAO;IAACuB,CAAC,EAAC,MAAM;IAAAC,QAAA,eACnE/B,IAAA,CAACL,SAAS;MACRqC,UAAU,EAAEX,IAAI,CAACW,UAAW;MAC5BC,QAAQ,EAAEZ,IAAI,CAACY,QAAS;MACxBC,SAAS,EAAEV,KAAM;MACjBT,YAAY,EAAEU,kBAAmB;MACjCT,KAAK,EAAEA,KAAM;MACbC,cAAc,EAAEA,cAAe;MAC/BkB,UAAU,EAAEX,KAAM;MAClBN,YAAY,EAAEA,YAAa;MAC3BC,aAAa,EAAEQ;IAAoB,CACpC;EAAC,CACI,CAAC;AAEb,CAAC","ignoreList":[]}
@@ -5,28 +5,29 @@ import { fillMaxSize, testID as testIdModifier, weight } from '@expo/ui/jetpack-
5
5
  import { spacing } from '@hzblj/kara-theme';
6
6
  import { Children, useCallback, useEffect, useMemo, useRef, useState } from 'react';
7
7
  import { HStack } from "../../atoms/h-stack/index.js";
8
+ import { Spacer } from "../../atoms/spacer/index.js";
8
9
  import { VStack } from "../../atoms/v-stack/index.js";
9
10
  import { useHostGuard } from "../../host-context.js";
10
11
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
11
12
  const DOT_SIZE = 6;
12
13
 
13
- /** Compose ships no page indicator, so the dots are composed out of atoms. */
14
+ /** Compose ships no page indicator, so the dots are composed out of atoms — centred between two spacers. */
14
15
  const PagerDots = ({
15
16
  count,
16
17
  current
17
- }) => /*#__PURE__*/_jsx(HStack, {
18
+ }) => /*#__PURE__*/_jsxs(HStack, {
18
19
  align: "center",
19
20
  py: "s12",
20
21
  spacing: "s6",
21
22
  wide: true,
22
- children: Array.from({
23
+ children: [/*#__PURE__*/_jsx(Spacer, {}), Array.from({
23
24
  length: count
24
25
  }, (_, index) => /*#__PURE__*/_jsx(VStack, {
25
26
  bg: index === current ? 'content.primary' : 'fill.tertiary',
26
27
  borderRadius: "full",
27
28
  h: DOT_SIZE,
28
29
  w: DOT_SIZE
29
- }, index))
30
+ }, index)), /*#__PURE__*/_jsx(Spacer, {})]
30
31
  });
31
32
  export const Pager = ({
32
33
  children,
@@ -1 +1 @@
1
- {"version":3,"names":["HorizontalPager","fillMaxSize","testID","testIdModifier","weight","spacing","Children","useCallback","useEffect","useMemo","useRef","useState","HStack","VStack","useHostGuard","jsx","_jsx","jsxs","_jsxs","DOT_SIZE","PagerDots","count","current","align","py","wide","children","Array","from","length","_","index","bg","borderRadius","h","w","Pager","indicators","onPageChange","page","pageSpacing","scrollEnabled","pagerRef","settledPage","currentPage","setCurrentPage","undefined","animateScrollToPage","onSettledPageChange","next","modifiers","pager","initialPage","onCurrentPageChange","ref","userScrollEnabled","tall"],"sourceRoot":"../../../../src","sources":["molecules/pager/pager.android.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["HorizontalPager","fillMaxSize","testID","testIdModifier","weight","spacing","Children","useCallback","useEffect","useMemo","useRef","useState","HStack","Spacer","VStack","useHostGuard","jsx","_jsx","jsxs","_jsxs","DOT_SIZE","PagerDots","count","current","align","py","wide","children","Array","from","length","_","index","bg","borderRadius","h","w","Pager","indicators","onPageChange","page","pageSpacing","scrollEnabled","pagerRef","settledPage","currentPage","setCurrentPage","undefined","animateScrollToPage","onSettledPageChange","next","modifiers","pager","initialPage","onCurrentPageChange","ref","userScrollEnabled","tall"],"sourceRoot":"../../../../src","sources":["molecules/pager/pager.android.tsx"],"mappings":"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","ignoreList":[]}
@@ -1,10 +1,46 @@
1
1
  "use strict";
2
2
 
3
- import { Box } from "../../atoms/box/index.js";
3
+ import { duration, opacity } from '@hzblj/kara-theme';
4
+ import { cloneElement, useCallback, useRef } from 'react';
5
+ import { useAnimatedStyle, useSharedValue, withTiming } from 'react-native-reanimated';
6
+ import { ABox, Box } from "../../atoms/box/index.js";
4
7
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
8
+ /** Less than a pixel scrolled is not scrolled — a fling settles a fraction away from the edge. */
9
+ const EDGE_SLOP = 0.5;
10
+ const FILL = {
11
+ duration: duration.d200
12
+ };
13
+ /** A bar, and behind it the container colour it fills with — faded in and out, not switched. */
14
+ const EdgeBar = ({
15
+ children,
16
+ filled
17
+ }) => {
18
+ const fill = useAnimatedStyle(() => ({
19
+ opacity: filled.value
20
+ }), []);
21
+ if (!children) {
22
+ return null;
23
+ }
24
+ return /*#__PURE__*/_jsxs(Box, {
25
+ children: [/*#__PURE__*/_jsx(ABox, {
26
+ bg: "surface.secondary",
27
+ bottom: 0,
28
+ left: 0,
29
+ pointerEvents: "none",
30
+ position: "absolute",
31
+ right: 0,
32
+ style: fill,
33
+ top: 0
34
+ }), children]
35
+ });
36
+ };
37
+
5
38
  /**
6
- * Android has no scroll edge effect, and a React Native scroll view there has no `contentInset` to slide content under
7
- * a bar with — so the bars stack above and below the scroll view instead of over it. Give them a background.
39
+ * Material's take on the scroll edge: a React Native scroll view has no `contentInset` to slide content under a bar on
40
+ * Android, so the bars stack above and below it, and do what a Material top app bar does on scroll — transparent at
41
+ * rest, filled with `surface.secondary` (the scrolled container colour, `surfaceContainer`) once content has scrolled
42
+ * under it. The bottom bar mirrors it: filled while there is more content below. The scroll view keeps its own
43
+ * `onScroll`, `onLayout` and `onContentSizeChange`.
8
44
  */
9
45
  export const ScrollEdgeContainer = ({
10
46
  automaticInsets: _automaticInsets,
@@ -14,12 +50,79 @@ export const ScrollEdgeContainer = ({
14
50
  testID,
15
51
  topBar,
16
52
  ...sx
17
- }) => /*#__PURE__*/_jsxs(Box, {
18
- ...sx,
19
- testID: testID,
20
- children: [topBar, /*#__PURE__*/_jsx(Box, {
21
- flex: 1,
22
- children: children
23
- }), bottomBar]
24
- });
53
+ }) => {
54
+ const topFilled = useSharedValue(opacity.o0);
55
+ const bottomFilled = useSharedValue(opacity.o0);
56
+ const metrics = useRef({
57
+ content: 0,
58
+ offset: 0,
59
+ viewport: 0
60
+ });
61
+ const state = useRef({
62
+ bottom: false,
63
+ top: false
64
+ });
65
+ const {
66
+ flex,
67
+ onContentSizeChange,
68
+ onLayout,
69
+ onScroll,
70
+ scrollEventThrottle
71
+ } = children.props;
72
+
73
+ // Only a change of state animates; a scroll event restating the same one would restart the fade.
74
+ const update = useCallback(() => {
75
+ const {
76
+ content,
77
+ offset,
78
+ viewport
79
+ } = metrics.current;
80
+ const top = offset > EDGE_SLOP;
81
+ const bottom = viewport > 0 && offset + viewport < content - EDGE_SLOP;
82
+ if (top !== state.current.top) {
83
+ state.current.top = top;
84
+ topFilled.value = withTiming(top ? opacity.o100 : opacity.o0, FILL);
85
+ }
86
+ if (bottom !== state.current.bottom) {
87
+ state.current.bottom = bottom;
88
+ bottomFilled.value = withTiming(bottom ? opacity.o100 : opacity.o0, FILL);
89
+ }
90
+ }, [bottomFilled, topFilled]);
91
+
92
+ // `flex` so the scroll view takes the room between the bars — left to its content, it grew to the content's height,
93
+ // ran under the bottom bar and had nothing to scroll.
94
+ const scrollable = /*#__PURE__*/cloneElement(children, {
95
+ flex: flex ?? 1,
96
+ onContentSizeChange: (width, height) => {
97
+ metrics.current.content = height;
98
+ update();
99
+ onContentSizeChange?.(width, height);
100
+ },
101
+ onLayout: event => {
102
+ metrics.current.viewport = event.nativeEvent.layout.height;
103
+ update();
104
+ onLayout?.(event);
105
+ },
106
+ onScroll: event => {
107
+ metrics.current.offset = event.nativeEvent.contentOffset.y;
108
+ update();
109
+ onScroll?.(event);
110
+ },
111
+ scrollEventThrottle: scrollEventThrottle ?? 16
112
+ });
113
+ return /*#__PURE__*/_jsxs(Box, {
114
+ ...sx,
115
+ testID: testID,
116
+ children: [/*#__PURE__*/_jsx(EdgeBar, {
117
+ filled: topFilled,
118
+ children: topBar
119
+ }), /*#__PURE__*/_jsx(Box, {
120
+ flex: 1,
121
+ children: scrollable
122
+ }), /*#__PURE__*/_jsx(EdgeBar, {
123
+ filled: bottomFilled,
124
+ children: bottomBar
125
+ })]
126
+ });
127
+ };
25
128
  //# sourceMappingURL=scroll-edge-container.android.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Box","jsx","_jsx","jsxs","_jsxs","ScrollEdgeContainer","automaticInsets","_automaticInsets","bottomBar","children","effect","_effect","testID","topBar","sx","flex"],"sourceRoot":"../../../../src","sources":["molecules/scroll-edge-container/scroll-edge-container.android.tsx"],"mappings":";;AAAA,SAAQA,GAAG,QAAO,0BAAiB;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAGnC;AACA;AACA;AACA;AACA,OAAO,MAAMC,mBAAiD,GAAGA,CAAC;EAChEC,eAAe,EAAEC,gBAAgB;EACjCC,SAAS;EACTC,QAAQ;EACRC,MAAM,EAAEC,OAAO;EACfC,MAAM;EACNC,MAAM;EACN,GAAGC;AACqB,CAAC,kBACzBV,KAAA,CAACJ,GAAG;EAAA,GAAKc,EAAE;EAAEF,MAAM,EAAEA,MAAO;EAAAH,QAAA,GACzBI,MAAM,eACPX,IAAA,CAACF,GAAG;IAACe,IAAI,EAAE,CAAE;IAAAN,QAAA,EAAEA;EAAQ,CAAM,CAAC,EAC7BD,SAAS;AAAA,CACP,CACN","ignoreList":[]}
1
+ {"version":3,"names":["duration","opacity","cloneElement","useCallback","useRef","useAnimatedStyle","useSharedValue","withTiming","ABox","Box","jsx","_jsx","jsxs","_jsxs","EDGE_SLOP","FILL","d200","EdgeBar","children","filled","fill","value","bg","bottom","left","pointerEvents","position","right","style","top","ScrollEdgeContainer","automaticInsets","_automaticInsets","bottomBar","effect","_effect","testID","topBar","sx","topFilled","o0","bottomFilled","metrics","content","offset","viewport","state","flex","onContentSizeChange","onLayout","onScroll","scrollEventThrottle","props","update","current","o100","scrollable","width","height","event","nativeEvent","layout","contentOffset","y"],"sourceRoot":"../../../../src","sources":["molecules/scroll-edge-container/scroll-edge-container.android.tsx"],"mappings":"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","ignoreList":[]}