@kanso-labs/react-native-kanso-ui 0.5.0 → 0.7.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 (125) hide show
  1. package/README.md +4 -1
  2. package/dist/badge/index.js +74 -0
  3. package/dist/badge/index.js.map +1 -0
  4. package/dist/badge/styles.js +51 -0
  5. package/dist/badge/styles.js.map +1 -0
  6. package/dist/button/index.d.ts +1 -1
  7. package/dist/button/index.js +1 -1
  8. package/dist/button/pending.js +1 -1
  9. package/dist/button/slots.d.ts +2 -2
  10. package/dist/calendar/index.js +1182 -0
  11. package/dist/calendar/index.js.map +1 -0
  12. package/dist/calendar/styles.js +120 -0
  13. package/dist/calendar/styles.js.map +1 -0
  14. package/dist/chip/index.js +2 -2
  15. package/dist/components/app-bar/index.d.ts +111 -0
  16. package/dist/components/app-bar/index.js +341 -0
  17. package/dist/components/app-bar/index.js.map +1 -0
  18. package/dist/components/avatar/index.d.ts +1 -1
  19. package/dist/components/button/index.d.ts +1 -1
  20. package/dist/components/button/index.js +2 -2
  21. package/dist/components/calendar/index.d.ts +51 -0
  22. package/dist/components/calendar/index.js +82 -0
  23. package/dist/components/calendar/index.js.map +1 -0
  24. package/dist/components/card/index.d.ts +1 -1
  25. package/dist/components/card/index.js +3 -3
  26. package/dist/components/checkbox/index.d.ts +1 -1
  27. package/dist/components/checkbox/index.js +1 -1
  28. package/dist/components/chip/index.d.ts +1 -1
  29. package/dist/components/chip/index.js +1 -1
  30. package/dist/components/chip-group/index.d.ts +1 -1
  31. package/dist/components/chip-group/index.js +4 -4
  32. package/dist/components/copy-field/index.d.ts +1 -1
  33. package/dist/components/copy-field/index.js +1 -1
  34. package/dist/components/currency/index.d.ts +1 -1
  35. package/dist/components/currency/index.js +1 -1
  36. package/dist/components/dialog/index.d.ts +1 -1
  37. package/dist/components/dialog/index.js +2 -2
  38. package/dist/components/icon-button/index.d.ts +1 -1
  39. package/dist/components/icon-button/index.js +2 -2
  40. package/dist/components/link/index.d.ts +1 -1
  41. package/dist/components/link/index.js +3 -3
  42. package/dist/components/list/index.d.ts +1 -1
  43. package/dist/components/list/index.js +5 -5
  44. package/dist/components/list-detail/index.d.ts +56 -0
  45. package/dist/components/list-detail/index.js +169 -0
  46. package/dist/components/list-detail/index.js.map +1 -0
  47. package/dist/components/list-item/index.d.ts +1 -1
  48. package/dist/components/list-item/index.js +1 -1
  49. package/dist/components/menu/index.d.ts +1 -1
  50. package/dist/components/menu/index.js +7 -7
  51. package/dist/components/meter/index.d.ts +1 -1
  52. package/dist/components/meter/index.js +1 -1
  53. package/dist/components/navigation-bar/index.d.ts +164 -0
  54. package/dist/components/navigation-bar/index.js +470 -0
  55. package/dist/components/navigation-bar/index.js.map +1 -0
  56. package/dist/components/navigation-rail/index.d.ts +68 -0
  57. package/dist/components/navigation-rail/index.js +294 -0
  58. package/dist/components/navigation-rail/index.js.map +1 -0
  59. package/dist/components/number-field/index.d.ts +1 -1
  60. package/dist/components/number-field/index.js +5 -5
  61. package/dist/components/popover/index.d.ts +1 -1
  62. package/dist/components/popover/index.js +3 -3
  63. package/dist/components/product-icon/index.d.ts +1 -1
  64. package/dist/components/progress-indicator/index.d.ts +1 -1
  65. package/dist/components/progress-indicator/index.js +3 -3
  66. package/dist/components/radio-group/index.d.ts +1 -1
  67. package/dist/components/radio-group/index.js +3 -3
  68. package/dist/components/search-field/index.d.ts +1 -1
  69. package/dist/components/search-field/index.js +5 -5
  70. package/dist/components/segmented-button/index.d.ts +1 -1
  71. package/dist/components/segmented-button/index.js +5 -5
  72. package/dist/components/separator/index.d.ts +1 -1
  73. package/dist/components/separator/index.js +1 -1
  74. package/dist/components/sheet/index.d.ts +1 -1
  75. package/dist/components/sheet/index.js +3 -3
  76. package/dist/components/snackbar/index.d.ts +1 -1
  77. package/dist/components/snackbar/index.js +4 -4
  78. package/dist/components/stack/index.d.ts +1 -1
  79. package/dist/components/stack/index.js +1 -1
  80. package/dist/components/switch/index.d.ts +1 -1
  81. package/dist/components/switch/index.js +4 -4
  82. package/dist/components/text/index.d.ts +1 -1
  83. package/dist/components/text/index.js +1 -1
  84. package/dist/components/text-field/index.d.ts +1 -1
  85. package/dist/components/text-field/index.js +1 -1
  86. package/dist/control/checkbox-box.js +2 -2
  87. package/dist/control/index.js +1 -1
  88. package/dist/field/index.d.ts +1 -1
  89. package/dist/field/index.js +4 -4
  90. package/dist/form/index.d.ts +1 -1
  91. package/dist/glyphs/index.js +21 -3
  92. package/dist/glyphs/index.js.map +1 -1
  93. package/dist/hooks/useAppBarScroll.d.ts +56 -0
  94. package/dist/hooks/useAppBarScroll.js +87 -0
  95. package/dist/hooks/useAppBarScroll.js.map +1 -0
  96. package/dist/i18n/messages.js +374 -0
  97. package/dist/i18n/messages.js.map +1 -1
  98. package/dist/index.d.ts +9 -3
  99. package/dist/index.js +10 -4
  100. package/dist/indicator/index.d.ts +2 -2
  101. package/dist/indicator/index.js +3 -3
  102. package/dist/indicator/motion.js +1 -1
  103. package/dist/mark/index.d.ts +1 -1
  104. package/dist/mark/index.js +2 -2
  105. package/dist/modal/index.d.ts +1 -1
  106. package/dist/modal/index.js +2 -2
  107. package/dist/navigation/index.d.ts +36 -0
  108. package/dist/navigation/index.js +454 -0
  109. package/dist/navigation/index.js.map +1 -0
  110. package/dist/navigation/styles.js +83 -0
  111. package/dist/navigation/styles.js.map +1 -0
  112. package/dist/overlay/anchored.d.ts +2 -2
  113. package/dist/overlay/anchored.js +1 -1
  114. package/dist/overlay/host.d.ts +2 -2
  115. package/dist/overlay/host.js +1 -1
  116. package/dist/overlay/panel.js +2 -2
  117. package/dist/press/index.js +75 -69
  118. package/dist/press/index.js.map +1 -1
  119. package/dist/router/index.js +1 -1
  120. package/dist/row/index.js +1 -1
  121. package/dist/theme/scope.js +1 -1
  122. package/dist/theme-scope.d.ts +1 -1
  123. package/dist/theme-scope.js +1 -1
  124. package/dist/typography/fonts.js +1 -1
  125. package/package.json +4 -3
package/README.md CHANGED
@@ -94,7 +94,10 @@ same.
94
94
 
95
95
  The insets come from safe-area-context's `SafeAreaProvider`, which Expo Router
96
96
  puts around an app already; elsewhere, wrap the app in one. Without it, the
97
- library keeps to the window's edge.
97
+ library keeps to the window's edge. `AppBar` and the panes of a `ListDetail` are
98
+ the exception: each measures its own insets through safe-area-context's
99
+ `SafeAreaView`, so it clears only the edges it actually meets, and on a device
100
+ it needs no provider. Under React Native Web that view reads the provider too.
98
101
 
99
102
  Gesture Handler 2 and 3 both satisfy the peer. A `Switch` draws Gesture
100
103
  Handler's root view around its own track, so an app need not wrap itself in
@@ -0,0 +1,74 @@
1
+ import { useTheme } from "../theme/scope.js";
2
+ import { composeStyles } from "../theme/styles.js";
3
+ import { useTypeRole } from "../typography/roles.js";
4
+ import { styles, stylesOf } from "./styles.js";
5
+ import { c } from "react/compiler-runtime";
6
+ import { Text, View } from "react-native";
7
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
8
+ //#region src/badge/index.tsx
9
+ let countFormat;
10
+ /**
11
+ * A badge on the top trailing corner of the icon it wraps: the small dot, or
12
+ * with `count` the large badge holding the number.
13
+ */
14
+ function Badge(t0) {
15
+ const $ = c(12);
16
+ const { children, count, inFlow: t1, max: t2 } = t0;
17
+ const inFlow = t1 === void 0 ? false : t1;
18
+ const max = t2 === void 0 ? 999 : t2;
19
+ const own = stylesOf(useTheme());
20
+ const role = useTypeRole("labelSmall");
21
+ let t3;
22
+ if ($[0] !== count || $[1] !== max) {
23
+ t3 = count === void 0 ? void 0 : countOf(count, max);
24
+ $[0] = count;
25
+ $[1] = max;
26
+ $[2] = t3;
27
+ } else t3 = $[2];
28
+ const label = t3;
29
+ const T0 = View;
30
+ const t4 = styles;
31
+ const T1 = View;
32
+ const t5 = true;
33
+ const t6 = composeStyles(own.mark, label === void 0 ? styles.small : [own.large, inFlow ? styles.inFlow : styles.over]);
34
+ const t7 = label === void 0 ? null : /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(Text, {
35
+ style: styles.space,
36
+ children: " "
37
+ }), /* @__PURE__ */ jsx(Text, {
38
+ style: composeStyles(role, own.count),
39
+ children: label
40
+ })] });
41
+ let t8;
42
+ if ($[3] !== T1 || $[4] !== t6 || $[5] !== t7) {
43
+ t8 = /* @__PURE__ */ jsx(T1, {
44
+ "aria-hidden": t5,
45
+ style: t6,
46
+ children: t7
47
+ });
48
+ $[3] = T1;
49
+ $[4] = t6;
50
+ $[5] = t7;
51
+ $[6] = t8;
52
+ } else t8 = $[6];
53
+ let t9;
54
+ if ($[7] !== T0 || $[8] !== children || $[9] !== t4.anchor || $[10] !== t8) {
55
+ t9 = /* @__PURE__ */ jsxs(T0, {
56
+ style: t4.anchor,
57
+ children: [children, t8]
58
+ });
59
+ $[7] = T0;
60
+ $[8] = children;
61
+ $[9] = t4.anchor;
62
+ $[10] = t8;
63
+ $[11] = t9;
64
+ } else t9 = $[11];
65
+ return t9;
66
+ }
67
+ function countOf(count, max) {
68
+ countFormat ??= new Intl.NumberFormat();
69
+ return count > max ? `${countFormat.format(max)}+` : countFormat.format(count);
70
+ }
71
+ //#endregion
72
+ export { Badge };
73
+
74
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["ReactNode","TextStyle","ViewStyle","Text","NativeText","View","useTheme","composeStyles","useTypeRole","styles","stylesOf","BadgeProps","children","count","inFlow","max","countFormat","Intl","NumberFormat","Badge","t0","$","_c","t1","t2","undefined","own","role","t3","countOf","label","T0","T1","t5","t6","mark","small","large","over","t7","space","t8","t9","t4","anchor","format","_c","NativeText"],"sources":["../../src/badge/index.tsx"],"sourcesContent":["import type { ReactNode } from 'react'\nimport type { TextStyle, ViewStyle } from 'react-native'\n\nimport { Text as NativeText, View } from 'react-native'\n\nimport { useTheme } from '../theme/scope'\nimport { composeStyles } from '../theme/styles'\nimport { useTypeRole } from '../typography/roles'\nimport { styles, stylesOf } from './styles'\n\n// The badges page's badge, as kanso-ui's Badge draws it on a navigation\n// destination: a mark on the corner of an icon that flags something new\n// there, either as the 6dp small badge or as the 16dp large badge holding a\n// count. Both are the error pair, the error role with the count in on error,\n// on a full corner, and the count is label small, capped with a plus, as\n// \"999+\".\n//\n// The badge wraps the icon and places the mark against the icon's box,\n// which is what the page measures from. The small badge fills the icon's top\n// trailing 6dp square. The large badge's bottom leading corner sits 14dp\n// down and 12dp in from the icon's top trailing corner, so it stands 2dp\n// above the icon and grows toward the end as its count lengthens. Both are\n// placed by `start` and `end`, so the mark stays on the trailing corner under\n// right-to-left.\n//\n// Where a label stands beside the icon rather than under it, the large badge\n// joins the flow after the icon instead, so the label starts after it rather\n// than under it: `inFlow`. The small badge stays inside the icon's box, so\n// nothing has to make room for it.\n//\n// The mark is hidden from a screen reader. A count read on its own is a\n// number with no subject; it belongs in the name of the control it sits on,\n// where a reader meets it with what it counts, \"First item, 3 new\".\n//\n// The count is set apart from the text before it by a space drawn out of the\n// flow. Under React Native Web the count is still text inside the control,\n// and with nothing between them a label and its count ran together as\n// \"Second item3\", a word in no name: what axe's label-in-name check fails,\n// and not what a speech-input user would say. Web draws the count as\n// generated content instead, which a style here has no counterpart for.\n\ntype BadgeProps = {\n /** What the badge is drawn on: an icon, at 24dp. */\n readonly children?: ReactNode\n /**\n * The number to show, which draws the large badge. Left out, the badge is\n * the small dot, which flags without counting.\n */\n readonly count?: number | undefined\n /**\n * Draws the large badge in the flow after the icon rather than over its\n * corner, for a label beside the icon.\n * @default false\n */\n readonly inFlow?: boolean\n /**\n * The largest count drawn as itself. Above it the badge reads `max` and a\n * plus, which is the page's 999+ at the default.\n * @default 999\n */\n readonly max?: number\n}\n\nlet countFormat: Intl.NumberFormat | undefined\n\n/**\n * A badge on the top trailing corner of the icon it wraps: the small dot, or\n * with `count` the large badge holding the number.\n */\nfunction Badge({ children, count, inFlow = false, max = 999 }: BadgeProps) {\n const own = stylesOf(useTheme())\n const role = useTypeRole('labelSmall')\n const label = count === undefined ? undefined : countOf(count, max)\n\n return (\n <View style={styles.anchor}>\n {children}\n <View\n aria-hidden\n style={composeStyles<ViewStyle>(\n own.mark,\n label === undefined\n ? styles.small\n : [own.large, inFlow ? styles.inFlow : styles.over],\n )}\n >\n {label === undefined ? null : (\n <>\n <NativeText style={styles.space}> </NativeText>\n <NativeText style={composeStyles<TextStyle>(role, own.count)}>\n {label}\n </NativeText>\n </>\n )}\n </View>\n </View>\n )\n}\n\n// The count in the device's digits and grouping, as web writes it in the\n// reader's locale. One formatter, since a badge's count changes often.\nfunction countOf(count: number, max: number) {\n countFormat ??= new Intl.NumberFormat()\n\n return count > max ? `${countFormat.format(max)}+` : countFormat.format(count)\n}\n\nexport type { BadgeProps }\n\nexport { Badge }\n"],"mappings":";;;;;;;;AA+DA,IAAIgB;;;;;AAMJ,SAAAG,MAAAC,IAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAe,MAAA,EAAAV,UAAAC,OAAAC,QAAAS,IAAAR,KAAAS,OAAAJ;CAAmB,MAAAN,SAAAS,OAAAE,KAAAA,IAAA,QAAAF;CAAgB,MAAAR,MAAAS,OAAAC,KAAAA,IAAA,MAAAD;CAChD,MAAAE,MAAYhB,SAASJ,SAAS,CAAC;CAC/B,MAAAqB,OAAanB,YAAY,YAAY;CAAC,IAAAoB;CAAA,IAAAP,EAAA,OAAAR,SAAAQ,EAAA,OAAAN,KAAA;EACxBa,KAAAf,UAAUY,KAAAA,IAAVA,KAAAA,IAAkCI,QAAQhB,OAAOE,GAAG;EAACM,EAAA,KAAAR;EAAAQ,EAAA,KAAAN;EAAAM,EAAA,KAAAO;CAAA,OAAAA,KAAAP,EAAA;CAAnE,MAAAS,QAAcF;CAGX,MAAAG,KAAA1B;CAAYI,MAAAA,KAAAA;CAEV,MAAAuB,KAAA3B;CACC,MAAA4B,KAAA;CACO,MAAAC,KAAA3B,cACLmB,IAAGS,MACHL,UAAUL,KAAAA,IACNhB,OAAM2B,QADV,CAEKV,IAAGW,OAAQvB,SAASL,OAAMK,SAAUL,OAAM6B,IAAK,CACtD;CAEC,MAAAC,KAAAT,UAAUL,KAAAA,IAAV,OAAA,qBAAA,UAAA,EAAA,UAAA,CAEG,oBAACsB,MAAD;EAAmB,OAAAtC,OAAM+B;EAAQ,UAAA;CAAtB,CAAA,GACX,oBAACO,MAAD;EAAmB,OAAAxC,cAAyBoB,MAAMD,IAAGb,KAAM;EACxDiB,UAAAA;CADQ,CAAA,CAEE,EAAA,CAAA;CAEhB,IAAAW;CAAA,IAAApB,EAAA,OAAAW,MAAAX,EAAA,OAAAa,MAAAb,EAAA,OAAAkB,IAAA;EAhBHE,KAAA,oBAAC,IAAD;GACE,eAAAR;GACO,OAAAC;GAONK,UAAAA;EATE,CAAA;EAiBElB,EAAA,KAAAW;EAAAX,EAAA,KAAAa;EAAAb,EAAA,KAAAkB;EAAAlB,EAAA,KAAAoB;CAAA,OAAAA,KAAApB,EAAA;CAAA,IAAAqB;CAAA,IAAArB,EAAA,OAAAU,MAAAV,EAAA,OAAAT,YAAAS,EAAA,OAAAsB,GAAAC,UAAAvB,EAAA,QAAAoB,IAAA;EAnBTC,KAAA,qBAAC,IAAD;GAAa,OAAAjC,GAAMmC;GAAnB,UAAA,CACGhC,UACD6B,EAFG;;EAoBEpB,EAAA,KAAAU;EAAAV,EAAA,KAAAT;EAAAS,EAAA,KAAAsB,GAAAC;EAAAvB,EAAA,MAAAoB;EAAApB,EAAA,MAAAqB;CAAA,OAAAA,KAAArB,EAAA;CAAA,OApBPqB;AAoBO;AAMX,SAASb,QAAQhB,OAAeE,KAAa;CAC3CC,gBAAgB,IAAIC,KAAKC,aAAa;CAEtC,OAAOL,QAAQE,MAAM,GAAGC,YAAY6B,OAAO9B,GAAG,EAAC,KAAMC,YAAY6B,OAAOhC,KAAK;AAC/E"}
@@ -0,0 +1,51 @@
1
+ import { themedStyles } from "../theme/styles.js";
2
+ import { StyleSheet } from "react-native";
3
+ //#region src/badge/styles.ts
4
+ const SMALL_SIZE = 6;
5
+ const LARGE_SIZE = 16;
6
+ const styles = StyleSheet.create({
7
+ anchor: {
8
+ alignItems: "flex-start",
9
+ flexDirection: "row"
10
+ },
11
+ inFlow: {
12
+ marginStart: -12,
13
+ position: "relative",
14
+ top: -2
15
+ },
16
+ over: {
17
+ position: "absolute",
18
+ start: 12,
19
+ top: -2
20
+ },
21
+ small: {
22
+ end: 0,
23
+ height: SMALL_SIZE,
24
+ position: "absolute",
25
+ top: 0,
26
+ width: SMALL_SIZE
27
+ },
28
+ space: { position: "absolute" }
29
+ });
30
+ const stylesOf = themedStyles(({ colors, radii, spacing }) => StyleSheet.create({
31
+ count: {
32
+ color: colors.onError,
33
+ fontVariant: ["tabular-nums"]
34
+ },
35
+ large: {
36
+ alignItems: "center",
37
+ justifyContent: "center",
38
+ minHeight: LARGE_SIZE,
39
+ minWidth: LARGE_SIZE,
40
+ paddingHorizontal: spacing.xs
41
+ },
42
+ mark: {
43
+ backgroundColor: colors.error,
44
+ borderRadius: radii.pill,
45
+ pointerEvents: "none"
46
+ }
47
+ }));
48
+ //#endregion
49
+ export { styles, stylesOf };
50
+
51
+ //# sourceMappingURL=styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.js","names":["StyleSheet","themedStyles","ICON_SIZE","OVERLAP","RISE","SMALL_SIZE","LARGE_SIZE","styles","create","anchor","alignItems","flexDirection","inFlow","marginStart","position","top","over","start","small","end","height","width","space","stylesOf","colors","radii","spacing","count","color","onError","fontVariant","large","justifyContent","minHeight","minWidth","paddingHorizontal","xs","mark","backgroundColor","error","borderRadius","pill","pointerEvents"],"sources":["../../src/badge/styles.ts"],"sourcesContent":["import { StyleSheet } from 'react-native'\n\nimport { themedStyles } from '../theme/styles'\n\n// The icon a badge is drawn on, which the large badge's corner is measured\n// from: the 24dp every destination draws.\nconst ICON_SIZE = 24\n\n// How far back over the icon the large badge reaches, from the icon's\n// trailing edge, and how far above the icon it stands. The page's own\n// figures: its bottom leading corner 14dp down and 12dp in from the icon's\n// top trailing corner, on a 16dp badge.\nconst OVERLAP = 12\nconst RISE = 2\n\n// The small badge's side, and the large badge's least height and width.\nconst SMALL_SIZE = 6\nconst LARGE_SIZE = 16\n\nconst styles = StyleSheet.create({\n // What the badge is drawn on. It shrinks to what it holds, so its box is\n // the icon's and the mark lands where the page puts it, and lays a mark\n // that joins the flow after the icon.\n anchor: {\n alignItems: 'flex-start',\n flexDirection: 'row',\n },\n // The large badge in the flow after the icon, 12dp back over it and 2dp\n // above it, which is where its own placement puts it, so what follows the\n // icon starts after the badge rather than under it.\n inFlow: {\n marginStart: -OVERLAP,\n position: 'relative',\n top: -RISE,\n },\n // The large badge over the icon's top trailing corner.\n over: {\n position: 'absolute',\n start: ICON_SIZE - OVERLAP,\n top: -RISE,\n },\n // The small badge, filling the icon's top trailing 6dp square.\n small: {\n end: 0,\n height: SMALL_SIZE,\n position: 'absolute',\n top: 0,\n width: SMALL_SIZE,\n },\n // The space before the count, out of the flow, so it sets the count apart\n // from the text before it without moving anything.\n space: {\n position: 'absolute',\n },\n})\n\nconst stylesOf = themedStyles(({ colors, radii, spacing }) =>\n StyleSheet.create({\n // The count, in label small with tabular figures, so a count that\n // changes does not change the badge's width digit by digit.\n count: {\n color: colors.onError,\n fontVariant: ['tabular-nums'],\n },\n // The page's large badge: at least 16dp tall and as wide, 4dp either\n // side of its count. A minimum rather than a size, so a larger text size\n // the device asks for grows the badge rather than cutting the count.\n large: {\n alignItems: 'center',\n justifyContent: 'center',\n minHeight: LARGE_SIZE,\n minWidth: LARGE_SIZE,\n paddingHorizontal: spacing.xs,\n },\n // The fill and corner both badges share. It takes no touches, so a press\n // on it lands on what it is drawn on.\n mark: {\n backgroundColor: colors.error,\n borderRadius: radii.pill,\n pointerEvents: 'none',\n },\n }),\n)\n\nexport { styles, stylesOf }\n"],"mappings":";;;AAgBA,MAAMK,aAAa;AACnB,MAAMC,aAAa;AAEnB,MAAMC,SAASP,WAAWQ,OAAO;CAI/BC,QAAQ;EACNC,YAAY;EACZC,eAAe;CACjB;CAIAC,QAAQ;EACNC,aAAa;EACbC,UAAU;EACVC,KAAK;CACP;CAEAC,MAAM;EACJF,UAAU;EACVG,OAAOf;EACPa,KAAK;CACP;CAEAG,OAAO;EACLC,KAAK;EACLC,QAAQf;EACRS,UAAU;EACVC,KAAK;EACLM,OAAOhB;CACT;CAGAiB,OAAO,EACLR,UAAU,WACZ;AACF,CAAC;AAED,MAAMS,WAAWtB,cAAc,EAAEuB,QAAQC,OAAOC,cAC9C1B,WAAWQ,OAAO;CAGhBmB,OAAO;EACLC,OAAOJ,OAAOK;EACdC,aAAa,CAAC,cAAc;CAC9B;CAIAC,OAAO;EACLrB,YAAY;EACZsB,gBAAgB;EAChBC,WAAW3B;EACX4B,UAAU5B;EACV6B,mBAAmBT,QAAQU;CAC7B;CAGAC,MAAM;EACJC,iBAAiBd,OAAOe;EACxBC,cAAcf,MAAMgB;EACpBC,eAAe;CACjB;AACF,CAAC,CACH"}
@@ -1,5 +1,5 @@
1
+ import { HostInstance, LayoutChangeEvent, PressableProps } from "react-native";
1
2
  import { Ref } from "react";
2
- import { HostInstance, PressableProps } from "react-native";
3
3
  //#region src/button/index.d.ts
4
4
  /**
5
5
  * A plain button, a link, or a toggle, of which a call site writes exactly
@@ -4,9 +4,9 @@ import { refsOf } from "../ref/index.js";
4
4
  import { useOpenLink } from "../router/index.js";
5
5
  import { ButtonSlotContext } from "./slots.js";
6
6
  import { c } from "react/compiler-runtime";
7
- import { use, useState } from "react";
8
7
  import { Platform, Pressable, StyleSheet } from "react-native";
9
8
  import Animated, { Easing, useAnimatedStyle, useReducedMotion, useSharedValue, withTiming } from "react-native-reanimated";
9
+ import { use, useState } from "react";
10
10
  //#region src/button/index.ts
11
11
  const HEIGHTS = {
12
12
  lg: "controlLg",
@@ -2,9 +2,9 @@ import { IconStyleContext } from "../glyphs/icon-style.js";
2
2
  import { ProgressIndicator } from "../components/progress-indicator/index.js";
3
3
  import { messagesFor } from "../i18n/index.js";
4
4
  import { c } from "react/compiler-runtime";
5
+ import { AccessibilityInfo, Platform, StyleSheet, View } from "react-native";
5
6
  import { useEffect, useRef } from "react";
6
7
  import { jsx } from "react/jsx-runtime";
7
- import { AccessibilityInfo, Platform, StyleSheet, View } from "react-native";
8
8
  //#region src/button/pending.tsx
9
9
  const pendingStyles = StyleSheet.create({
10
10
  hidden: { opacity: 0 },
@@ -1,2 +1,2 @@
1
- import { RefObject } from "react";
2
- import { HostInstance } from "react-native";
1
+ import { HostInstance } from "react-native";
2
+ import { RefObject } from "react";