@hzblj/kara-components 0.17.0 → 0.18.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 (205) hide show
  1. package/CHANGELOG.md +49 -0
  2. package/lib/module/atoms/badge/badge.android.js +5 -0
  3. package/lib/module/atoms/badge/badge.android.js.map +1 -1
  4. package/lib/module/atoms/badge/badge.ios.js +2 -0
  5. package/lib/module/atoms/badge/badge.ios.js.map +1 -1
  6. package/lib/module/atoms/button/button-tokens.js +8 -0
  7. package/lib/module/atoms/button/button-tokens.js.map +1 -1
  8. package/lib/module/atoms/button/button.android.js +43 -15
  9. package/lib/module/atoms/button/button.android.js.map +1 -1
  10. package/lib/module/atoms/button/button.ios.js +66 -10
  11. package/lib/module/atoms/button/button.ios.js.map +1 -1
  12. package/lib/module/atoms/checkbox/checkbox.android.js +5 -1
  13. package/lib/module/atoms/checkbox/checkbox.android.js.map +1 -1
  14. package/lib/module/atoms/checkbox/checkbox.ios.js +3 -1
  15. package/lib/module/atoms/checkbox/checkbox.ios.js.map +1 -1
  16. package/lib/module/atoms/color-picker/color-picker.android.js +4 -0
  17. package/lib/module/atoms/color-picker/color-picker.android.js.map +1 -1
  18. package/lib/module/atoms/color-picker/color-picker.ios.js +24 -2
  19. package/lib/module/atoms/color-picker/color-picker.ios.js.map +1 -1
  20. package/lib/module/atoms/date-picker/date-picker.android.js +85 -10
  21. package/lib/module/atoms/date-picker/date-picker.android.js.map +1 -1
  22. package/lib/module/atoms/date-picker/date-picker.ios.js +9 -7
  23. package/lib/module/atoms/date-picker/date-picker.ios.js.map +1 -1
  24. package/lib/module/atoms/divider/divider.android.js +17 -4
  25. package/lib/module/atoms/divider/divider.android.js.map +1 -1
  26. package/lib/module/atoms/divider/divider.ios.js +4 -0
  27. package/lib/module/atoms/divider/divider.ios.js.map +1 -1
  28. package/lib/module/atoms/fab/fab.android.js +64 -8
  29. package/lib/module/atoms/fab/fab.android.js.map +1 -1
  30. package/lib/module/atoms/fab/fab.ios.js +68 -12
  31. package/lib/module/atoms/fab/fab.ios.js.map +1 -1
  32. package/lib/module/atoms/icon-button/icon-button.android.js +48 -5
  33. package/lib/module/atoms/icon-button/icon-button.android.js.map +1 -1
  34. package/lib/module/atoms/icon-button/icon-button.ios.js +60 -10
  35. package/lib/module/atoms/icon-button/icon-button.ios.js.map +1 -1
  36. package/lib/module/atoms/list/list.android.js +32 -4
  37. package/lib/module/atoms/list/list.android.js.map +1 -1
  38. package/lib/module/atoms/list/list.ios.js +15 -5
  39. package/lib/module/atoms/list/list.ios.js.map +1 -1
  40. package/lib/module/atoms/progress/progress.android.js +21 -7
  41. package/lib/module/atoms/progress/progress.android.js.map +1 -1
  42. package/lib/module/atoms/progress/progress.ios.js +5 -1
  43. package/lib/module/atoms/progress/progress.ios.js.map +1 -1
  44. package/lib/module/atoms/slider/slider.android.js +16 -2
  45. package/lib/module/atoms/slider/slider.android.js.map +1 -1
  46. package/lib/module/atoms/slider/slider.ios.js +22 -2
  47. package/lib/module/atoms/slider/slider.ios.js.map +1 -1
  48. package/lib/module/atoms/switch/switch.android.js +5 -1
  49. package/lib/module/atoms/switch/switch.android.js.map +1 -1
  50. package/lib/module/atoms/switch/switch.ios.js +3 -1
  51. package/lib/module/atoms/switch/switch.ios.js.map +1 -1
  52. package/lib/module/atoms/text/spans.js +2 -1
  53. package/lib/module/atoms/text/spans.js.map +1 -1
  54. package/lib/module/atoms/text/text.android.js +18 -6
  55. package/lib/module/atoms/text/text.android.js.map +1 -1
  56. package/lib/module/atoms/text/text.ios.js +6 -2
  57. package/lib/module/atoms/text/text.ios.js.map +1 -1
  58. package/lib/module/atoms/text-field/text-field-input.js +14 -0
  59. package/lib/module/atoms/text-field/text-field-input.js.map +1 -0
  60. package/lib/module/atoms/text-field/text-field.android.js +113 -6
  61. package/lib/module/atoms/text-field/text-field.android.js.map +1 -1
  62. package/lib/module/atoms/text-field/text-field.ios.js +75 -3
  63. package/lib/module/atoms/text-field/text-field.ios.js.map +1 -1
  64. package/lib/module/molecules/collapsible/collapsible.android.js +4 -3
  65. package/lib/module/molecules/collapsible/collapsible.android.js.map +1 -1
  66. package/lib/module/molecules/collapsible/collapsible.ios.js +3 -1
  67. package/lib/module/molecules/collapsible/collapsible.ios.js.map +1 -1
  68. package/lib/module/molecules/radio-group/radio-group.android.js +10 -2
  69. package/lib/module/molecules/radio-group/radio-group.android.js.map +1 -1
  70. package/lib/module/molecules/radio-group/radio-group.ios.js +6 -2
  71. package/lib/module/molecules/radio-group/radio-group.ios.js.map +1 -1
  72. package/lib/module/molecules/search-bar/search-bar.js +9 -0
  73. package/lib/module/molecules/search-bar/search-bar.js.map +1 -1
  74. package/lib/module/molecules/stepper/stepper.android.js +25 -13
  75. package/lib/module/molecules/stepper/stepper.android.js.map +1 -1
  76. package/lib/module/molecules/stepper/stepper.ios.js +12 -6
  77. package/lib/module/molecules/stepper/stepper.ios.js.map +1 -1
  78. package/lib/module/organisms/action-sheet/action-sheet.android.js +16 -8
  79. package/lib/module/organisms/action-sheet/action-sheet.android.js.map +1 -1
  80. package/lib/module/organisms/action-sheet/action-sheet.ios.js +16 -3
  81. package/lib/module/organisms/action-sheet/action-sheet.ios.js.map +1 -1
  82. package/lib/module/organisms/alert/alert.android.js +4 -3
  83. package/lib/module/organisms/alert/alert.android.js.map +1 -1
  84. package/lib/module/organisms/alert/alert.ios.js +3 -2
  85. package/lib/module/organisms/alert/alert.ios.js.map +1 -1
  86. package/lib/module/organisms/context-menu/context-menu.android.js +3 -1
  87. package/lib/module/organisms/context-menu/context-menu.android.js.map +1 -1
  88. package/lib/module/organisms/context-menu/context-menu.ios.js +1 -0
  89. package/lib/module/organisms/context-menu/context-menu.ios.js.map +1 -1
  90. package/lib/module/organisms/fab-menu/fab-menu.android.js +3 -0
  91. package/lib/module/organisms/fab-menu/fab-menu.android.js.map +1 -1
  92. package/lib/module/organisms/fab-menu/fab-menu.ios.js +3 -0
  93. package/lib/module/organisms/fab-menu/fab-menu.ios.js.map +1 -1
  94. package/lib/module/organisms/menu/menu-parts.js +20 -0
  95. package/lib/module/organisms/menu/menu-parts.js.map +1 -0
  96. package/lib/module/organisms/menu/menu.android.js +51 -19
  97. package/lib/module/organisms/menu/menu.android.js.map +1 -1
  98. package/lib/module/organisms/menu/menu.ios.js +71 -8
  99. package/lib/module/organisms/menu/menu.ios.js.map +1 -1
  100. package/lib/module/organisms/sheet/sheet.js +2 -1
  101. package/lib/module/organisms/sheet/sheet.js.map +1 -1
  102. package/lib/typescript/atoms/badge/badge.types.d.ts +2 -0
  103. package/lib/typescript/atoms/button/button-tokens.d.ts +6 -2
  104. package/lib/typescript/atoms/button/button.types.d.ts +19 -5
  105. package/lib/typescript/atoms/checkbox/checkbox.types.d.ts +2 -0
  106. package/lib/typescript/atoms/color-picker/color-picker.types.d.ts +2 -0
  107. package/lib/typescript/atoms/date-picker/date-picker.ios.d.ts +5 -5
  108. package/lib/typescript/atoms/date-picker/date-picker.types.d.ts +30 -7
  109. package/lib/typescript/atoms/divider/divider.ios.d.ts +4 -0
  110. package/lib/typescript/atoms/divider/divider.types.d.ts +13 -2
  111. package/lib/typescript/atoms/fab/fab.types.d.ts +21 -4
  112. package/lib/typescript/atoms/icon-button/icon-button.types.d.ts +23 -4
  113. package/lib/typescript/atoms/list/list.types.d.ts +15 -1
  114. package/lib/typescript/atoms/progress/progress.types.d.ts +13 -2
  115. package/lib/typescript/atoms/slider/slider.ios.d.ts +4 -0
  116. package/lib/typescript/atoms/slider/slider.types.d.ts +7 -0
  117. package/lib/typescript/atoms/switch/switch.types.d.ts +2 -0
  118. package/lib/typescript/atoms/text/spans.d.ts +2 -0
  119. package/lib/typescript/atoms/text/text.types.d.ts +9 -1
  120. package/lib/typescript/atoms/text-field/text-field-input.d.ts +7 -0
  121. package/lib/typescript/atoms/text-field/text-field.types.d.ts +77 -4
  122. package/lib/typescript/molecules/collapsible/collapsible.types.d.ts +2 -0
  123. package/lib/typescript/molecules/radio-group/radio-group.types.d.ts +4 -0
  124. package/lib/typescript/molecules/search-bar/search-bar.types.d.ts +11 -1
  125. package/lib/typescript/molecules/stepper/stepper.ios.d.ts +2 -1
  126. package/lib/typescript/molecules/stepper/stepper.types.d.ts +17 -0
  127. package/lib/typescript/organisms/action-sheet/action-sheet.ios.d.ts +4 -0
  128. package/lib/typescript/organisms/action-sheet/action-sheet.types.d.ts +8 -3
  129. package/lib/typescript/organisms/alert/alert.types.d.ts +8 -3
  130. package/lib/typescript/organisms/menu/menu-parts.d.ts +14 -0
  131. package/lib/typescript/organisms/menu/menu.types.d.ts +35 -7
  132. package/lib/typescript/organisms/sheet/sheet.types.d.ts +7 -1
  133. package/package.json +4 -4
  134. package/src/atoms/badge/badge.android.tsx +9 -2
  135. package/src/atoms/badge/badge.ios.tsx +2 -2
  136. package/src/atoms/badge/badge.types.ts +2 -0
  137. package/src/atoms/button/button-tokens.ts +6 -3
  138. package/src/atoms/button/button.android.tsx +35 -11
  139. package/src/atoms/button/button.ios.tsx +72 -8
  140. package/src/atoms/button/button.types.ts +20 -5
  141. package/src/atoms/checkbox/checkbox.android.tsx +5 -2
  142. package/src/atoms/checkbox/checkbox.ios.tsx +2 -2
  143. package/src/atoms/checkbox/checkbox.types.ts +2 -0
  144. package/src/atoms/color-picker/color-picker.android.tsx +10 -2
  145. package/src/atoms/color-picker/color-picker.ios.tsx +24 -1
  146. package/src/atoms/color-picker/color-picker.types.ts +2 -0
  147. package/src/atoms/date-picker/date-picker.android.tsx +86 -16
  148. package/src/atoms/date-picker/date-picker.ios.tsx +20 -8
  149. package/src/atoms/date-picker/date-picker.types.ts +31 -7
  150. package/src/atoms/divider/divider.android.tsx +14 -3
  151. package/src/atoms/divider/divider.ios.tsx +4 -0
  152. package/src/atoms/divider/divider.types.ts +14 -2
  153. package/src/atoms/fab/fab.android.tsx +61 -11
  154. package/src/atoms/fab/fab.ios.tsx +48 -13
  155. package/src/atoms/fab/fab.types.ts +22 -4
  156. package/src/atoms/icon-button/icon-button.android.tsx +60 -10
  157. package/src/atoms/icon-button/icon-button.ios.tsx +77 -8
  158. package/src/atoms/icon-button/icon-button.types.ts +24 -4
  159. package/src/atoms/list/list.android.tsx +26 -4
  160. package/src/atoms/list/list.ios.tsx +20 -5
  161. package/src/atoms/list/list.types.ts +16 -1
  162. package/src/atoms/progress/progress.android.tsx +32 -6
  163. package/src/atoms/progress/progress.ios.tsx +11 -5
  164. package/src/atoms/progress/progress.types.ts +13 -2
  165. package/src/atoms/slider/slider.android.tsx +18 -2
  166. package/src/atoms/slider/slider.ios.tsx +38 -2
  167. package/src/atoms/slider/slider.types.ts +7 -0
  168. package/src/atoms/switch/switch.android.tsx +5 -2
  169. package/src/atoms/switch/switch.ios.tsx +2 -2
  170. package/src/atoms/switch/switch.types.ts +2 -0
  171. package/src/atoms/text/spans.ts +2 -1
  172. package/src/atoms/text/text.android.tsx +20 -7
  173. package/src/atoms/text/text.ios.tsx +7 -0
  174. package/src/atoms/text/text.types.ts +10 -1
  175. package/src/atoms/text-field/text-field-input.ts +17 -0
  176. package/src/atoms/text-field/text-field.android.tsx +132 -9
  177. package/src/atoms/text-field/text-field.ios.tsx +110 -6
  178. package/src/atoms/text-field/text-field.types.ts +98 -4
  179. package/src/molecules/collapsible/collapsible.android.tsx +10 -2
  180. package/src/molecules/collapsible/collapsible.ios.tsx +8 -2
  181. package/src/molecules/collapsible/collapsible.types.ts +2 -0
  182. package/src/molecules/radio-group/radio-group.android.tsx +18 -4
  183. package/src/molecules/radio-group/radio-group.ios.tsx +19 -5
  184. package/src/molecules/radio-group/radio-group.types.ts +4 -0
  185. package/src/molecules/search-bar/search-bar.tsx +9 -0
  186. package/src/molecules/search-bar/search-bar.types.ts +12 -1
  187. package/src/molecules/stepper/stepper.android.tsx +24 -4
  188. package/src/molecules/stepper/stepper.ios.tsx +23 -8
  189. package/src/molecules/stepper/stepper.types.ts +17 -0
  190. package/src/organisms/action-sheet/action-sheet.android.tsx +23 -11
  191. package/src/organisms/action-sheet/action-sheet.ios.tsx +20 -3
  192. package/src/organisms/action-sheet/action-sheet.types.ts +8 -3
  193. package/src/organisms/alert/alert.android.tsx +11 -8
  194. package/src/organisms/alert/alert.ios.tsx +2 -1
  195. package/src/organisms/alert/alert.types.ts +8 -3
  196. package/src/organisms/context-menu/context-menu.android.tsx +3 -2
  197. package/src/organisms/context-menu/context-menu.ios.tsx +1 -0
  198. package/src/organisms/fab-menu/fab-menu.android.tsx +3 -0
  199. package/src/organisms/fab-menu/fab-menu.ios.tsx +9 -1
  200. package/src/organisms/menu/menu-parts.ts +21 -0
  201. package/src/organisms/menu/menu.android.tsx +39 -10
  202. package/src/organisms/menu/menu.ios.tsx +55 -5
  203. package/src/organisms/menu/menu.types.ts +30 -7
  204. package/src/organisms/sheet/sheet.tsx +2 -1
  205. package/src/organisms/sheet/sheet.types.ts +7 -1
@@ -1 +1 @@
1
- {"version":3,"names":["ColorPicker","SwiftUIColorPicker","useHostGuard","jsx","_jsx","label","onValueChange","supportsOpacity","testID","value","onSelectionChange","selection"],"sourceRoot":"../../../../src","sources":["atoms/color-picker/color-picker.ios.tsx"],"mappings":";;AAAA,SAAQA,WAAW,IAAIC,kBAAkB,QAAO,mBAAmB;AAEnE,SAAQC,YAAY,QAAO,uBAAoB;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAG/C,OAAO,MAAMJ,WAAiC,GAAGA,CAAC;EAChDK,KAAK;EACLC,aAAa;EACbC,eAAe,GAAG,KAAK;EACvBC,MAAM;EACNC;AACgB,CAAC,KAAK;EACtBP,YAAY,CAAC,aAAa,CAAC;EAE3B,oBACEE,IAAA,CAACH,kBAAkB;IACjBI,KAAK,EAAEA,KAAM;IACbK,iBAAiB,EAAEJ,aAAc;IACjCK,SAAS,EAAEF,KAAM;IACjBF,eAAe,EAAEA,eAAgB;IACjCC,MAAM,EAAEA;EAAO,CAChB,CAAC;AAEN,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["ColorPicker","SwiftUIColorPicker","disabled","disabledModifier","labelsHidden","opacity","opacityModifier","useHostGuard","HStack","Spacer","Text","jsx","_jsx","jsxs","_jsxs","DISABLED","o40","label","onValueChange","supportsOpacity","testID","value","picker","modifiers","undefined","onSelectionChange","selection","align","spacing","wide","children","color"],"sourceRoot":"../../../../src","sources":["atoms/color-picker/color-picker.ios.tsx"],"mappings":";;AAAA,SAAQA,WAAW,IAAIC,kBAAkB,QAAO,mBAAmB;AACnE,SAAQC,QAAQ,IAAIC,gBAAgB,EAAEC,YAAY,EAAEC,OAAO,IAAIC,eAAe,QAAO,6BAA6B;AAClH,SAAQD,OAAO,QAAO,mBAAmB;AAEzC,SAAQE,YAAY,QAAO,uBAAoB;AAC/C,SAAQC,MAAM,QAAO,qBAAY;AACjC,SAAQC,MAAM,QAAO,oBAAW;AAChC,SAAQC,IAAI,QAAO,kBAAS;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAG5B;AACA;AACA,MAAMC,QAAQ,GAAG,CAACX,YAAY,CAAC,CAAC,EAAED,gBAAgB,CAAC,IAAI,CAAC,EAAEG,eAAe,CAACD,OAAO,CAACW,GAAG,CAAC,CAAC;AAEvF,OAAO,MAAMhB,WAAiC,GAAGA,CAAC;EAChDE,QAAQ,GAAG,KAAK;EAChBe,KAAK;EACLC,aAAa;EACbC,eAAe,GAAG,KAAK;EACvBC,MAAM;EACNC;AACgB,CAAC,KAAK;EACtBd,YAAY,CAAC,aAAa,CAAC;EAE3B,MAAMe,MAAM,gBACVV,IAAA,CAACX,kBAAkB;IACjBgB,KAAK,EAAEA,KAAM;IACbM,SAAS,EAAErB,QAAQ,GAAGa,QAAQ,GAAGS,SAAU;IAC3CC,iBAAiB,EAAEP,aAAc;IACjCQ,SAAS,EAAEL,KAAM;IACjBF,eAAe,EAAEA,eAAgB;IACjCC,MAAM,EAAEA;EAAO,CAChB,CACF;EAED,IAAI,CAAClB,QAAQ,EAAE;IACb,OAAOoB,MAAM;EACf;EAEA,oBACER,KAAA,CAACN,MAAM;IAACmB,KAAK,EAAC,QAAQ;IAACC,OAAO,EAAC,KAAK;IAACC,IAAI;IAAAC,QAAA,GACtCb,KAAK,gBAAGL,IAAA,CAACF,IAAI;MAACqB,KAAK,EAAC,kBAAkB;MAAAD,QAAA,EAAEb;IAAK,CAAO,CAAC,GAAG,IAAI,eAC7DL,IAAA,CAACH,MAAM,IAAE,CAAC,EACTa,MAAM;EAAA,CACD,CAAC;AAEb,CAAC","ignoreList":[]}
@@ -1,14 +1,19 @@
1
1
  "use strict";
2
2
 
3
3
  import { DateTimePicker } from '@expo/ui/community/datetime-picker';
4
- import { RNHostView } from '@expo/ui/jetpack-compose';
5
- import { useAppTheme } from '@hzblj/kara-theme';
6
- import { useCallback, useState } from 'react';
4
+ import { DateTimePicker as ComposeDateTimePicker, Host, RNHostView } from '@expo/ui/jetpack-compose';
5
+ import { alpha, testID as testIdModifier } from '@expo/ui/jetpack-compose/modifiers';
6
+ import { opacity, useAppTheme } from '@hzblj/kara-theme';
7
+ import { useCallback, useMemo, useState } from 'react';
7
8
  import { useInsideHost } from "../../host-context.js";
8
9
  import { Box } from "../box/index.js";
9
10
  import { Pressable } from "../pressable/index.js";
10
11
  import { RnText } from "../rn-text/index.js";
11
12
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
13
+ const MATCH_HEIGHT_ONLY = {
14
+ horizontal: false,
15
+ vertical: true
16
+ };
12
17
  const formatted = (value, mode) => {
13
18
  if (mode === 'time') {
14
19
  return value.toLocaleTimeString(undefined, {
@@ -27,20 +32,76 @@ const formatted = (value, mode) => {
27
32
  })}` : date;
28
33
  };
29
34
 
35
+ /** Material's calendar counts in UTC days: `value`'s local day goes in as that day's UTC midnight. */
36
+ const utcDayOf = value => new Date(Date.UTC(value.getFullYear(), value.getMonth(), value.getDate())).toISOString();
37
+
38
+ /** The UTC day the calendar reports, back on `value`'s local time of day. */
39
+ const localDayOf = (utcDay, value) => {
40
+ const next = new Date(value);
41
+ next.setFullYear(utcDay.getUTCFullYear(), utcDay.getUTCMonth(), utcDay.getUTCDate());
42
+ return next;
43
+ };
44
+
30
45
  /**
31
- * The value as a field that opens Material's date picker dialog on a tap. Android's picker *is* a dialog — mounted, it
32
- * opens — so it is mounted only while open, and unmounted on confirm or dismiss, as the component asks its caller to.
33
- * Both are React Native views; inside a `Screen` or `Island` `RNHostView` carries them into that host, sized to the
34
- * field (see `useInsideHost`).
46
+ * Material's calendar in place, for `graphical`: the month and its days, without the title and headline its dialog
47
+ * shows, in the accent. It also reports its day when it first shows and whenever `value` hands it a new one, so only a
48
+ * day that differs from `value` goes out. It has no disabled state, so a disabled one is dimmed and offers only the
49
+ * selected day.
35
50
  */
36
- export const DatePicker = ({
51
+ const Calendar = ({
52
+ disabled,
37
53
  max,
38
54
  min,
39
- mode = 'date',
40
55
  onValueChange,
41
56
  testID,
42
57
  value
43
58
  }) => {
59
+ const theme = useAppTheme();
60
+ const onDateSelected = useCallback(date => {
61
+ const next = localDayOf(date, value);
62
+ if (!disabled && next.getTime() !== value.getTime()) {
63
+ onValueChange?.(next);
64
+ }
65
+ }, [disabled, onValueChange, value]);
66
+ const modifiers = useMemo(() => [...(disabled ? [alpha(opacity.o40)] : []), ...(testID ? [testIdModifier(testID)] : [])], [disabled, testID]);
67
+ return /*#__PURE__*/_jsx(ComposeDateTimePicker, {
68
+ color: theme.color('fill.accent.primary'),
69
+ displayedComponents: "date",
70
+ initialDate: utcDayOf(value),
71
+ modifiers: modifiers,
72
+ onDateSelected: onDateSelected,
73
+ selectableDates: disabled ? {
74
+ end: value,
75
+ start: value
76
+ } : min || max ? {
77
+ end: max,
78
+ start: min
79
+ } : undefined,
80
+ showHeadline: false,
81
+ showTitle: false,
82
+ showVariantToggle: false,
83
+ variant: "picker"
84
+ });
85
+ };
86
+
87
+ /**
88
+ * The value as a field that opens Material's date picker dialog on a tap. Android's picker *is* a dialog (mounted, it
89
+ * opens), so it is mounted only while open, and unmounted on confirm or dismiss, as the component asks its caller to.
90
+ * Both are React Native views; inside a `Screen` or `Island` `RNHostView` carries them into that host, sized to the
91
+ * field (see `useInsideHost`). With `datePickerStyle="graphical"` and a date to pick, it is Material's calendar in
92
+ * place instead: a Compose view, in a host of its own the width of its container, or straight in the enclosing one.
93
+ */
94
+ export const DatePicker = props => {
95
+ const {
96
+ datePickerStyle = 'compact',
97
+ disabled = false,
98
+ max,
99
+ min,
100
+ mode = 'date',
101
+ onValueChange,
102
+ testID,
103
+ value
104
+ } = props;
44
105
  const theme = useAppTheme();
45
106
  const insideHost = useInsideHost();
46
107
  const [open, setOpen] = useState(false);
@@ -50,20 +111,34 @@ export const DatePicker = ({
50
111
  setOpen(false);
51
112
  onValueChange?.(date);
52
113
  }, [onValueChange]);
114
+ if (datePickerStyle === 'graphical' && mode !== 'time') {
115
+ const calendar = /*#__PURE__*/_jsx(Calendar, {
116
+ ...props,
117
+ disabled: disabled
118
+ });
119
+ return insideHost ? calendar : /*#__PURE__*/_jsx(Host, {
120
+ colorScheme: theme.dark ? 'dark' : 'light',
121
+ matchContents: MATCH_HEIGHT_ONLY,
122
+ seedColor: theme.materialSeed,
123
+ children: calendar
124
+ });
125
+ }
53
126
  const field = /*#__PURE__*/_jsxs(_Fragment, {
54
127
  children: [/*#__PURE__*/_jsx(Pressable, {
55
128
  alignSelf: "flex-start",
56
129
  bg: "fill.tertiary",
57
130
  borderRadius: "medium",
131
+ disabled: disabled,
58
132
  onPress: show,
59
133
  px: "s12",
60
134
  py: "s8",
61
135
  testID: testID,
62
136
  children: /*#__PURE__*/_jsx(RnText, {
137
+ color: disabled ? 'content.tertiary' : 'content.primary',
63
138
  variant: "body",
64
139
  children: formatted(value, mode)
65
140
  })
66
- }), open ? /*#__PURE__*/_jsx(DateTimePicker, {
141
+ }), open && !disabled ? /*#__PURE__*/_jsx(DateTimePicker, {
67
142
  accentColor: theme.colorString('fill.accent.primary'),
68
143
  maximumDate: max,
69
144
  minimumDate: min,
@@ -1 +1 @@
1
- {"version":3,"names":["DateTimePicker","RNHostView","useAppTheme","useCallback","useState","useInsideHost","Box","Pressable","RnText","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","formatted","value","mode","toLocaleTimeString","undefined","hour","minute","date","toLocaleDateString","day","month","year","DatePicker","max","min","onValueChange","testID","theme","insideHost","open","setOpen","show","hide","onChange","_event","field","children","alignSelf","bg","borderRadius","onPress","px","py","variant","accentColor","colorString","maximumDate","minimumDate","onDismiss","presentation","matchContents"],"sourceRoot":"../../../../src","sources":["atoms/date-picker/date-picker.android.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["DateTimePicker","ComposeDateTimePicker","Host","RNHostView","alpha","testID","testIdModifier","opacity","useAppTheme","useCallback","useMemo","useState","useInsideHost","Box","Pressable","RnText","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","MATCH_HEIGHT_ONLY","horizontal","vertical","formatted","value","mode","toLocaleTimeString","undefined","hour","minute","date","toLocaleDateString","day","month","year","utcDayOf","Date","UTC","getFullYear","getMonth","getDate","toISOString","localDayOf","utcDay","next","setFullYear","getUTCFullYear","getUTCMonth","getUTCDate","Calendar","disabled","max","min","onValueChange","theme","onDateSelected","getTime","modifiers","o40","color","displayedComponents","initialDate","selectableDates","end","start","showHeadline","showTitle","showVariantToggle","variant","DatePicker","props","datePickerStyle","insideHost","open","setOpen","show","hide","onChange","_event","calendar","colorScheme","dark","matchContents","seedColor","materialSeed","children","field","alignSelf","bg","borderRadius","onPress","px","py","accentColor","colorString","maximumDate","minimumDate","onDismiss","presentation"],"sourceRoot":"../../../../src","sources":["atoms/date-picker/date-picker.android.tsx"],"mappings":"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","ignoreList":[]}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  import { Host, DatePicker as SwiftUIDatePicker } from '@expo/ui/swift-ui';
4
- import { datePickerStyle, labelsHidden, tint } from '@expo/ui/swift-ui/modifiers';
4
+ import { datePickerStyle as datePickerStyleModifier, disabled as disabledModifier, labelsHidden, tint } from '@expo/ui/swift-ui/modifiers';
5
5
  import { useAppTheme } from '@hzblj/kara-theme';
6
6
  import { useMemo } from 'react';
7
7
  import { useInsideHost } from "../../host-context.js";
@@ -13,13 +13,15 @@ const COMPONENTS = {
13
13
  };
14
14
 
15
15
  /**
16
- * The system's compact date picker: the value in a pill, and a tap on it opens the calendar popover UIKit owns. Its own
17
- * host, sized to the pill on both axes — a host that took the width it was given would lay the pill out against the
18
- * far edge of it, or past its container's — so it drops into a row the way a `Text` does. The label is the caller's,
19
- * beside it; the calendar is in the accent. Inside a `Screen` or `Island` it renders into that host instead (see
20
- * `useInsideHost`).
16
+ * The system's date picker, in the accent. `compact` by default: the value in a pill, and a tap on it opens the
17
+ * calendar popover UIKit owns. `graphical` is that calendar in place, `wheel` the value on wheels. Its own host, sized
18
+ * to the picker on both axes (a host that took the width it was given would lay the pill out against the far edge of
19
+ * it, or past its container's), so it drops into a row the way a `Text` does. The label is the caller's, beside it.
20
+ * Inside a `Screen` or `Island` it renders into that host instead (see `useInsideHost`).
21
21
  */
22
22
  export const DatePicker = ({
23
+ datePickerStyle = 'compact',
24
+ disabled = false,
23
25
  max,
24
26
  min,
25
27
  mode = 'date',
@@ -29,7 +31,7 @@ export const DatePicker = ({
29
31
  }) => {
30
32
  const theme = useAppTheme();
31
33
  const insideHost = useInsideHost();
32
- const modifiers = useMemo(() => [datePickerStyle('compact'), labelsHidden(), tint(theme.color('fill.accent.primary'))], [theme]);
34
+ const modifiers = useMemo(() => [datePickerStyleModifier(datePickerStyle), labelsHidden(), tint(theme.color('fill.accent.primary')), ...(disabled ? [disabledModifier(true)] : [])], [datePickerStyle, disabled, theme]);
33
35
  const picker = /*#__PURE__*/_jsx(SwiftUIDatePicker, {
34
36
  displayedComponents: [...COMPONENTS[mode]],
35
37
  modifiers: modifiers,
@@ -1 +1 @@
1
- {"version":3,"names":["Host","DatePicker","SwiftUIDatePicker","datePickerStyle","labelsHidden","tint","useAppTheme","useMemo","useInsideHost","jsx","_jsx","COMPONENTS","date","datetime","time","max","min","mode","onValueChange","testID","value","theme","insideHost","modifiers","color","picker","displayedComponents","onDateChange","range","end","start","undefined","selection","colorScheme","dark","matchContents","children"],"sourceRoot":"../../../../src","sources":["atoms/date-picker/date-picker.ios.tsx"],"mappings":";;AAAA,SAAQA,IAAI,EAAEC,UAAU,IAAIC,iBAAiB,QAAO,mBAAmB;AACvE,SAAQC,eAAe,EAAEC,YAAY,EAAEC,IAAI,QAAO,6BAA6B;AAC/E,SAAQC,WAAW,QAAO,mBAAmB;AAC7C,SAAQC,OAAO,QAAO,OAAO;AAE7B,SAAQC,aAAa,QAAO,uBAAoB;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAGhD,MAAMC,UAAU,GAAG;EACjBC,IAAI,EAAE,CAAC,MAAM,CAAC;EACdC,QAAQ,EAAE,CAAC,MAAM,EAAE,eAAe,CAAC;EACnCC,IAAI,EAAE,CAAC,eAAe;AACxB,CAAyE;;AAEzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMb,UAA+B,GAAGA,CAAC;EAC9Cc,GAAG;EACHC,GAAG;EACHC,IAAI,GAAG,MAAM;EACbC,aAAa;EACbC,MAAM;EACNC;AACe,CAAC,KAAK;EACrB,MAAMC,KAAK,GAAGf,WAAW,CAAC,CAAC;EAC3B,MAAMgB,UAAU,GAAGd,aAAa,CAAC,CAAC;EAElC,MAAMe,SAAS,GAAGhB,OAAO,CACvB,MAAM,CAACJ,eAAe,CAAC,SAAS,CAAC,EAAEC,YAAY,CAAC,CAAC,EAAEC,IAAI,CAACgB,KAAK,CAACG,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAC5F,CAACH,KAAK,CACR,CAAC;EAED,MAAMI,MAAM,gBACVf,IAAA,CAACR,iBAAiB;IAChBwB,mBAAmB,EAAE,CAAC,GAAGf,UAAU,CAACM,IAAI,CAAC,CAAE;IAC3CM,SAAS,EAAEA,SAAU;IACrBI,YAAY,EAAET,aAAc;IAC5BU,KAAK,EAAEZ,GAAG,IAAID,GAAG,GAAG;MAACc,GAAG,EAAEd,GAAG;MAAEe,KAAK,EAAEd;IAAG,CAAC,GAAGe,SAAU;IACvDC,SAAS,EAAEZ,KAAM;IACjBD,MAAM,EAAEA;EAAO,CAChB,CACF;EAED,IAAIG,UAAU,EAAE;IACd,OAAOG,MAAM;EACf;EAEA,oBACEf,IAAA,CAACV,IAAI;IAACiC,WAAW,EAAEZ,KAAK,CAACa,IAAI,GAAG,MAAM,GAAG,OAAQ;IAACC,aAAa;IAAAC,QAAA,EAC5DX;EAAM,CACH,CAAC;AAEX,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["Host","DatePicker","SwiftUIDatePicker","datePickerStyle","datePickerStyleModifier","disabled","disabledModifier","labelsHidden","tint","useAppTheme","useMemo","useInsideHost","jsx","_jsx","COMPONENTS","date","datetime","time","max","min","mode","onValueChange","testID","value","theme","insideHost","modifiers","color","picker","displayedComponents","onDateChange","range","end","start","undefined","selection","colorScheme","dark","matchContents","children"],"sourceRoot":"../../../../src","sources":["atoms/date-picker/date-picker.ios.tsx"],"mappings":";;AAAA,SAAQA,IAAI,EAAEC,UAAU,IAAIC,iBAAiB,QAAO,mBAAmB;AACvE,SACEC,eAAe,IAAIC,uBAAuB,EAC1CC,QAAQ,IAAIC,gBAAgB,EAC5BC,YAAY,EACZC,IAAI,QACC,6BAA6B;AACpC,SAAQC,WAAW,QAAO,mBAAmB;AAC7C,SAAQC,OAAO,QAAO,OAAO;AAE7B,SAAQC,aAAa,QAAO,uBAAoB;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAGhD,MAAMC,UAAU,GAAG;EACjBC,IAAI,EAAE,CAAC,MAAM,CAAC;EACdC,QAAQ,EAAE,CAAC,MAAM,EAAE,eAAe,CAAC;EACnCC,IAAI,EAAE,CAAC,eAAe;AACxB,CAAyE;;AAEzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMhB,UAA+B,GAAGA,CAAC;EAC9CE,eAAe,GAAG,SAAS;EAC3BE,QAAQ,GAAG,KAAK;EAChBa,GAAG;EACHC,GAAG;EACHC,IAAI,GAAG,MAAM;EACbC,aAAa;EACbC,MAAM;EACNC;AACe,CAAC,KAAK;EACrB,MAAMC,KAAK,GAAGf,WAAW,CAAC,CAAC;EAC3B,MAAMgB,UAAU,GAAGd,aAAa,CAAC,CAAC;EAElC,MAAMe,SAAS,GAAGhB,OAAO,CACvB,MAAM,CACJN,uBAAuB,CAACD,eAAe,CAAC,EACxCI,YAAY,CAAC,CAAC,EACdC,IAAI,CAACgB,KAAK,CAACG,KAAK,CAAC,qBAAqB,CAAC,CAAC,EACxC,IAAItB,QAAQ,GAAG,CAACC,gBAAgB,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAC9C,EACD,CAACH,eAAe,EAAEE,QAAQ,EAAEmB,KAAK,CACnC,CAAC;EAED,MAAMI,MAAM,gBACVf,IAAA,CAACX,iBAAiB;IAChB2B,mBAAmB,EAAE,CAAC,GAAGf,UAAU,CAACM,IAAI,CAAC,CAAE;IAC3CM,SAAS,EAAEA,SAAU;IACrBI,YAAY,EAAET,aAAc;IAC5BU,KAAK,EAAEZ,GAAG,IAAID,GAAG,GAAG;MAACc,GAAG,EAAEd,GAAG;MAAEe,KAAK,EAAEd;IAAG,CAAC,GAAGe,SAAU;IACvDC,SAAS,EAAEZ,KAAM;IACjBD,MAAM,EAAEA;EAAO,CAChB,CACF;EAED,IAAIG,UAAU,EAAE;IACd,OAAOG,MAAM;EACf;EAEA,oBACEf,IAAA,CAACb,IAAI;IAACoC,WAAW,EAAEZ,KAAK,CAACa,IAAI,GAAG,MAAM,GAAG,OAAQ;IAACC,aAAa;IAAAC,QAAA,EAC5DX;EAAM,CACH,CAAC;AAEX,CAAC","ignoreList":[]}
@@ -1,16 +1,29 @@
1
1
  "use strict";
2
2
 
3
- import { HorizontalDivider } from '@expo/ui/jetpack-compose';
3
+ import { HorizontalDivider, VerticalDivider } from '@expo/ui/jetpack-compose';
4
+ import { testID as testIdModifier } from '@expo/ui/jetpack-compose/modifiers';
4
5
  import { useAppTheme } from '@hzblj/kara-theme';
6
+ import { useMemo } from 'react';
5
7
  import { useHostGuard } from "../../host-context.js";
6
8
  import { jsx as _jsx } from "react/jsx-runtime";
9
+ /**
10
+ * Compose's dividers. Unlike SwiftUI's, a Compose divider does not turn with its stack, so `axis` picks the one:
11
+ * `VerticalDivider` fills the height of the `Row` around it.
12
+ */
7
13
  export const Divider = ({
8
- color = 'border.tertiary'
14
+ axis = 'horizontal',
15
+ color = 'border.tertiary',
16
+ testID
9
17
  }) => {
10
18
  useHostGuard('Divider');
11
19
  const theme = useAppTheme();
12
- return /*#__PURE__*/_jsx(HorizontalDivider, {
13
- color: theme.color(color)
20
+ const modifiers = useMemo(() => testID ? [testIdModifier(testID)] : undefined, [testID]);
21
+ return axis === 'vertical' ? /*#__PURE__*/_jsx(VerticalDivider, {
22
+ color: theme.color(color),
23
+ modifiers: modifiers
24
+ }) : /*#__PURE__*/_jsx(HorizontalDivider, {
25
+ color: theme.color(color),
26
+ modifiers: modifiers
14
27
  });
15
28
  };
16
29
  //# sourceMappingURL=divider.android.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["HorizontalDivider","useAppTheme","useHostGuard","jsx","_jsx","Divider","color","theme"],"sourceRoot":"../../../../src","sources":["atoms/divider/divider.android.tsx"],"mappings":";;AAAA,SAAQA,iBAAiB,QAAO,0BAA0B;AAC1D,SAAQC,WAAW,QAAO,mBAAmB;AAE7C,SAAQC,YAAY,QAAO,uBAAoB;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAG/C,OAAO,MAAMC,OAAyB,GAAGA,CAAC;EAACC,KAAK,GAAG;AAA+B,CAAC,KAAK;EACtFJ,YAAY,CAAC,SAAS,CAAC;EACvB,MAAMK,KAAK,GAAGN,WAAW,CAAC,CAAC;EAE3B,oBAAOG,IAAA,CAACJ,iBAAiB;IAACM,KAAK,EAAEC,KAAK,CAACD,KAAK,CAACA,KAAK;EAAE,CAAE,CAAC;AACzD,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["HorizontalDivider","VerticalDivider","testID","testIdModifier","useAppTheme","useMemo","useHostGuard","jsx","_jsx","Divider","axis","color","theme","modifiers","undefined"],"sourceRoot":"../../../../src","sources":["atoms/divider/divider.android.tsx"],"mappings":";;AAAA,SAAQA,iBAAiB,EAAEC,eAAe,QAAO,0BAA0B;AAC3E,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;AACA;AACA;AACA;AACA,OAAO,MAAMC,OAAyB,GAAGA,CAAC;EAACC,IAAI,GAAG,YAAY;EAAEC,KAAK,GAAG,iBAAiB;EAAET;AAAoB,CAAC,KAAK;EACnHI,YAAY,CAAC,SAAS,CAAC;EACvB,MAAMM,KAAK,GAAGR,WAAW,CAAC,CAAC;EAC3B,MAAMS,SAAS,GAAGR,OAAO,CAAC,MAAOH,MAAM,GAAG,CAACC,cAAc,CAACD,MAAM,CAAC,CAAC,GAAGY,SAAU,EAAE,CAACZ,MAAM,CAAC,CAAC;EAE1F,OAAOQ,IAAI,KAAK,UAAU,gBACxBF,IAAA,CAACP,eAAe;IAACU,KAAK,EAAEC,KAAK,CAACD,KAAK,CAACA,KAAK,CAAE;IAACE,SAAS,EAAEA;EAAU,CAAE,CAAC,gBAEpEL,IAAA,CAACR,iBAAiB;IAACW,KAAK,EAAEC,KAAK,CAACD,KAAK,CAACA,KAAK,CAAE;IAACE,SAAS,EAAEA;EAAU,CAAE,CACtE;AACH,CAAC","ignoreList":[]}
@@ -6,6 +6,10 @@ import { useAppTheme } from '@hzblj/kara-theme';
6
6
  import { useMemo } from 'react';
7
7
  import { useHostGuard } from "../../host-context.js";
8
8
  import { jsx as _jsx } from "react/jsx-runtime";
9
+ /**
10
+ * SwiftUI's divider, which turns with its stack: vertical in an `HStack`, horizontal anywhere else. So `axis`, which
11
+ * Android needs to pick its divider, has nothing to do here.
12
+ */
9
13
  export const Divider = ({
10
14
  color = 'border.tertiary',
11
15
  testID
@@ -1 +1 @@
1
- {"version":3,"names":["Divider","SwiftUIDivider","background","useAppTheme","useMemo","useHostGuard","jsx","_jsx","color","testID","theme","modifiers"],"sourceRoot":"../../../../src","sources":["atoms/divider/divider.ios.tsx"],"mappings":";;AAAA,SAAQA,OAAO,IAAIC,cAAc,QAAO,mBAAmB;AAC3D,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,OAAO,MAAMP,OAAyB,GAAGA,CAAC;EAACQ,KAAK,GAAG,iBAAiB;EAAEC;AAAoB,CAAC,KAAK;EAC9FJ,YAAY,CAAC,SAAS,CAAC;EACvB,MAAMK,KAAK,GAAGP,WAAW,CAAC,CAAC;EAC3B,MAAMQ,SAAS,GAAGP,OAAO,CAAC,MAAM,CAACF,UAAU,CAACQ,KAAK,CAACF,KAAK,CAACA,KAAK,CAAC,CAAC,CAAC,EAAE,CAACA,KAAK,EAAEE,KAAK,CAAC,CAAC;EAEjF,oBAAOH,IAAA,CAACN,cAAc;IAACU,SAAS,EAAEA,SAAU;IAACF,MAAM,EAAEA;EAAO,CAAE,CAAC;AACjE,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["Divider","SwiftUIDivider","background","useAppTheme","useMemo","useHostGuard","jsx","_jsx","color","testID","theme","modifiers"],"sourceRoot":"../../../../src","sources":["atoms/divider/divider.ios.tsx"],"mappings":";;AAAA,SAAQA,OAAO,IAAIC,cAAc,QAAO,mBAAmB;AAC3D,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;AACA;AACA;AACA;AACA,OAAO,MAAMP,OAAyB,GAAGA,CAAC;EAACQ,KAAK,GAAG,iBAAiB;EAAEC;AAAoB,CAAC,KAAK;EAC9FJ,YAAY,CAAC,SAAS,CAAC;EACvB,MAAMK,KAAK,GAAGP,WAAW,CAAC,CAAC;EAC3B,MAAMQ,SAAS,GAAGP,OAAO,CAAC,MAAM,CAACF,UAAU,CAACQ,KAAK,CAACF,KAAK,CAACA,KAAK,CAAC,CAAC,CAAC,EAAE,CAACA,KAAK,EAAEE,KAAK,CAAC,CAAC;EAEjF,oBAAOH,IAAA,CAACN,cAAc;IAACU,SAAS,EAAEA,SAAU;IAACF,MAAM,EAAEA;EAAO,CAAE,CAAC;AACjE,CAAC","ignoreList":[]}
@@ -1,31 +1,87 @@
1
1
  "use strict";
2
2
 
3
- import { FloatingActionButton } from '@expo/ui/jetpack-compose';
3
+ import { ExtendedFloatingActionButton, FloatingActionButton, LargeFloatingActionButton, SmallFloatingActionButton } from '@expo/ui/jetpack-compose';
4
+ import { testID as testIdModifier } from '@expo/ui/jetpack-compose/modifiers';
4
5
  import { useAccessibilityModifiers } from '@hzblj/kara-sx';
5
6
  import { useAppTheme } from '@hzblj/kara-theme';
7
+ import { useMemo } from 'react';
6
8
  import { useHostGuard } from "../../host-context.js";
7
9
  import { Icon } from "../icon/index.js";
8
- import { jsx as _jsx } from "react/jsx-runtime";
10
+ import { Text } from "../text/index.js";
11
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
12
+ /** Material's three FABs, and the icon each draws (`FloatingActionButtonDefaults.LargeIconSize` is 36dp). */
13
+ const SIZES = {
14
+ large: {
15
+ icon: 's36',
16
+ Material: LargeFloatingActionButton
17
+ },
18
+ regular: {
19
+ icon: 's24',
20
+ Material: FloatingActionButton
21
+ },
22
+ small: {
23
+ icon: 's24',
24
+ Material: SmallFloatingActionButton
25
+ }
26
+ };
9
27
  export const Fab = ({
10
28
  accessibilityHint,
11
29
  accessibilityLabel,
30
+ label,
12
31
  name,
13
- onPress
32
+ onPress,
33
+ size = 'regular',
34
+ testID
14
35
  }) => {
15
36
  useHostGuard('Fab');
16
37
  const theme = useAppTheme();
17
- const modifiers = useAccessibilityModifiers({
38
+ const accessibilityModifiers = useAccessibilityModifiers({
18
39
  accessibilityHint
19
40
  }, accessibilityHint !== undefined);
20
- return /*#__PURE__*/_jsx(FloatingActionButton, {
21
- containerColor: theme.color('fill.accent.primary'),
41
+ const modifiers = useMemo(() => testID ? [testIdModifier(testID), ...accessibilityModifiers] : accessibilityModifiers, [accessibilityModifiers, testID]);
42
+ const containerColor = theme.color('fill.accent.primary');
43
+
44
+ /*
45
+ * `@expo/ui`'s FABs are slot-based: content outside `.Icon` (and the extended one's `.Text`) is not composed at all.
46
+ * The label rides on the icon, as for every FAB, and the text beside it is hidden from TalkBack so the button is not
47
+ * read twice; a label on the FAB itself would clear the click inside it, which Material's FAB composes after our
48
+ * modifiers.
49
+ */
50
+ if (label) {
51
+ return /*#__PURE__*/_jsxs(ExtendedFloatingActionButton, {
52
+ containerColor: containerColor,
53
+ modifiers: modifiers,
54
+ onClick: onPress,
55
+ children: [/*#__PURE__*/_jsx(ExtendedFloatingActionButton.Icon, {
56
+ children: /*#__PURE__*/_jsx(Icon, {
57
+ accessibilityLabel: accessibilityLabel,
58
+ color: "content.on.accent",
59
+ name: name
60
+ })
61
+ }), /*#__PURE__*/_jsx(ExtendedFloatingActionButton.Text, {
62
+ children: /*#__PURE__*/_jsx(Text, {
63
+ accessibilityHidden: true,
64
+ color: "content.on.accent",
65
+ variant: "body",
66
+ children: label
67
+ })
68
+ })]
69
+ });
70
+ }
71
+ const {
72
+ icon,
73
+ Material
74
+ } = SIZES[size];
75
+ return /*#__PURE__*/_jsx(Material, {
76
+ containerColor: containerColor,
22
77
  modifiers: modifiers,
23
78
  onClick: onPress,
24
- children: /*#__PURE__*/_jsx(FloatingActionButton.Icon, {
79
+ children: /*#__PURE__*/_jsx(Material.Icon, {
25
80
  children: /*#__PURE__*/_jsx(Icon, {
26
81
  accessibilityLabel: accessibilityLabel,
27
82
  color: "content.on.accent",
28
- name: name
83
+ name: name,
84
+ size: icon
29
85
  })
30
86
  })
31
87
  });
@@ -1 +1 @@
1
- {"version":3,"names":["FloatingActionButton","useAccessibilityModifiers","useAppTheme","useHostGuard","Icon","jsx","_jsx","Fab","accessibilityHint","accessibilityLabel","name","onPress","theme","modifiers","undefined","containerColor","color","onClick","children"],"sourceRoot":"../../../../src","sources":["atoms/fab/fab.android.tsx"],"mappings":";;AAAA,SAAQA,oBAAoB,QAAO,0BAA0B;AAC7D,SAAQC,yBAAyB,QAAO,gBAAgB;AACxD,SAAQC,WAAW,QAAO,mBAAmB;AAE7C,SAAQC,YAAY,QAAO,uBAAoB;AAC/C,SAAQC,IAAI,QAAO,kBAAS;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAG5B,OAAO,MAAMC,GAAiB,GAAGA,CAAC;EAACC,iBAAiB;EAAEC,kBAAkB;EAAEC,IAAI;EAAEC;AAAiB,CAAC,KAAK;EACrGR,YAAY,CAAC,KAAK,CAAC;EAEnB,MAAMS,KAAK,GAAGV,WAAW,CAAC,CAAC;EAC3B,MAAMW,SAAS,GAAGZ,yBAAyB,CAAC;IAACO;EAAiB,CAAC,EAAEA,iBAAiB,KAAKM,SAAS,CAAC;EAEjG,oBACER,IAAA,CAACN,oBAAoB;IAACe,cAAc,EAAEH,KAAK,CAACI,KAAK,CAAC,qBAAqB,CAAE;IAACH,SAAS,EAAEA,SAAU;IAACI,OAAO,EAAEN,OAAQ;IAAAO,QAAA,eAE/GZ,IAAA,CAACN,oBAAoB,CAACI,IAAI;MAAAc,QAAA,eACxBZ,IAAA,CAACF,IAAI;QAACK,kBAAkB,EAAEA,kBAAmB;QAACO,KAAK,EAAC,mBAAmB;QAACN,IAAI,EAAEA;MAAK,CAAE;IAAC,CAC7D;EAAC,CACR,CAAC;AAE3B,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["ExtendedFloatingActionButton","FloatingActionButton","LargeFloatingActionButton","SmallFloatingActionButton","testID","testIdModifier","useAccessibilityModifiers","useAppTheme","useMemo","useHostGuard","Icon","Text","jsx","_jsx","jsxs","_jsxs","SIZES","large","icon","Material","regular","small","Fab","accessibilityHint","accessibilityLabel","label","name","onPress","size","theme","accessibilityModifiers","undefined","modifiers","containerColor","color","onClick","children","accessibilityHidden","variant"],"sourceRoot":"../../../../src","sources":["atoms/fab/fab.android.tsx"],"mappings":";;AAAA,SACEA,4BAA4B,EAC5BC,oBAAoB,EACpBC,yBAAyB,EACzBC,yBAAyB,QACpB,0BAA0B;AACjC,SAAQC,MAAM,IAAIC,cAAc,QAAO,oCAAoC;AAC3E,SAAQC,yBAAyB,QAAO,gBAAgB;AACxD,SAAwBC,WAAW,QAAO,mBAAmB;AAC7D,SAAQC,OAAO,QAAO,OAAO;AAE7B,SAAQC,YAAY,QAAO,uBAAoB;AAC/C,SAAQC,IAAI,QAAO,kBAAS;AAC5B,SAAQC,IAAI,QAAO,kBAAS;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAG5B;AACA,MAAMC,KAAK,GAAG;EACZC,KAAK,EAAE;IAACC,IAAI,EAAE,KAAK;IAAEC,QAAQ,EAAEjB;EAAyB,CAAC;EACzDkB,OAAO,EAAE;IAACF,IAAI,EAAE,KAAK;IAAEC,QAAQ,EAAElB;EAAoB,CAAC;EACtDoB,KAAK,EAAE;IAACH,IAAI,EAAE,KAAK;IAAEC,QAAQ,EAAEhB;EAAyB;AAC1D,CAA0E;AAE1E,OAAO,MAAMmB,GAAiB,GAAGA,CAAC;EAChCC,iBAAiB;EACjBC,kBAAkB;EAClBC,KAAK;EACLC,IAAI;EACJC,OAAO;EACPC,IAAI,GAAG,SAAS;EAChBxB;AACQ,CAAC,KAAK;EACdK,YAAY,CAAC,KAAK,CAAC;EAEnB,MAAMoB,KAAK,GAAGtB,WAAW,CAAC,CAAC;EAC3B,MAAMuB,sBAAsB,GAAGxB,yBAAyB,CAAC;IAACiB;EAAiB,CAAC,EAAEA,iBAAiB,KAAKQ,SAAS,CAAC;EAC9G,MAAMC,SAAS,GAAGxB,OAAO,CACvB,MAAOJ,MAAM,GAAG,CAACC,cAAc,CAACD,MAAM,CAAC,EAAE,GAAG0B,sBAAsB,CAAC,GAAGA,sBAAuB,EAC7F,CAACA,sBAAsB,EAAE1B,MAAM,CACjC,CAAC;EACD,MAAM6B,cAAc,GAAGJ,KAAK,CAACK,KAAK,CAAC,qBAAqB,CAAC;;EAEzD;AACF;AACA;AACA;AACA;AACA;EACE,IAAIT,KAAK,EAAE;IACT,oBACEV,KAAA,CAACf,4BAA4B;MAACiC,cAAc,EAAEA,cAAe;MAACD,SAAS,EAAEA,SAAU;MAACG,OAAO,EAAER,OAAQ;MAAAS,QAAA,gBACnGvB,IAAA,CAACb,4BAA4B,CAACU,IAAI;QAAA0B,QAAA,eAChCvB,IAAA,CAACH,IAAI;UAACc,kBAAkB,EAAEA,kBAAmB;UAACU,KAAK,EAAC,mBAAmB;UAACR,IAAI,EAAEA;QAAK,CAAE;MAAC,CACrD,CAAC,eACpCb,IAAA,CAACb,4BAA4B,CAACW,IAAI;QAAAyB,QAAA,eAChCvB,IAAA,CAACF,IAAI;UAAC0B,mBAAmB;UAACH,KAAK,EAAC,mBAAmB;UAACI,OAAO,EAAC,MAAM;UAAAF,QAAA,EAC/DX;QAAK,CACF;MAAC,CAC0B,CAAC;IAAA,CACR,CAAC;EAEnC;EAEA,MAAM;IAACP,IAAI;IAAEC;EAAQ,CAAC,GAAGH,KAAK,CAACY,IAAI,CAAC;EAEpC,oBACEf,IAAA,CAACM,QAAQ;IAACc,cAAc,EAAEA,cAAe;IAACD,SAAS,EAAEA,SAAU;IAACG,OAAO,EAAER,OAAQ;IAAAS,QAAA,eAC/EvB,IAAA,CAACM,QAAQ,CAACT,IAAI;MAAA0B,QAAA,eACZvB,IAAA,CAACH,IAAI;QAACc,kBAAkB,EAAEA,kBAAmB;QAACU,KAAK,EAAC,mBAAmB;QAACR,IAAI,EAAEA,IAAK;QAACE,IAAI,EAAEV;MAAK,CAAE;IAAC,CACrF;EAAC,CACR,CAAC;AAEf,CAAC","ignoreList":[]}
@@ -5,36 +5,92 @@ import { buttonStyle } from '@expo/ui/swift-ui/modifiers';
5
5
  import { useAccessibilityModifiers, useSxModifiers } from '@hzblj/kara-sx';
6
6
  import { useMemo } from 'react';
7
7
  import { useHostGuard } from "../../host-context.js";
8
+ import { HStack } from "../h-stack/index.js";
8
9
  import { Icon } from "../icon/index.js";
9
- import { jsx as _jsx } from "react/jsx-runtime";
10
+ import { Text } from "../text/index.js";
11
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
12
+ /** Material's sizes, in points: the circle across and the icon in it. */
13
+ const SIZES = {
14
+ large: {
15
+ icon: 's36',
16
+ side: 96
17
+ },
18
+ regular: {
19
+ icon: 's24',
20
+ side: 56
21
+ },
22
+ small: {
23
+ icon: 's24',
24
+ side: 40
25
+ }
26
+ };
27
+ const SURFACE = {
28
+ bg: 'fill.accent.primary',
29
+ borderRadius: 'full',
30
+ shadow: 'btn.accent'
31
+ };
32
+
33
+ /**
34
+ * Material's extended FAB in kara's iOS language: the regular FAB's height, accent and shadow, drawn as a capsule (the
35
+ * shape a round button takes once it has words), 16 before the icon and 20 after the text, as Material pads it.
36
+ */
37
+ const EXTENDED = {
38
+ ...SURFACE,
39
+ h: SIZES.regular.side,
40
+ pl: 's16',
41
+ pr: 's20'
42
+ };
10
43
  export const Fab = ({
11
44
  accessibilityHint,
12
45
  accessibilityLabel,
46
+ label,
13
47
  name,
14
48
  onPress,
49
+ size = 'regular',
15
50
  testID
16
51
  }) => {
17
52
  useHostGuard('Fab');
18
- const accessibilityModifiers = useAccessibilityModifiers({
53
+ const extended = Boolean(label);
54
+ const {
55
+ icon,
56
+ side
57
+ } = SIZES[size];
58
+
59
+ // An icon alone carries the label; beside text, the button does, in place of what the text would say.
60
+ const accessibilityModifiers = useAccessibilityModifiers(extended ? {
61
+ accessibilityHint,
62
+ accessibilityLabel
63
+ } : {
19
64
  accessibilityHint
20
65
  });
21
- const sxModifiers = useSxModifiers({
22
- bg: 'fill.accent.primary',
23
- borderRadius: 'full',
24
- h: 56,
25
- p: 's16',
26
- shadow: 'btn.accent',
27
- w: 56
28
- });
66
+
67
+ // The frame centres the icon, so one circle serves every size: `regular` is the 56pt one it always was.
68
+ const sxModifiers = useSxModifiers(extended ? EXTENDED : {
69
+ ...SURFACE,
70
+ h: side,
71
+ w: side
72
+ }, 'center');
29
73
  const modifiers = useMemo(() => [buttonStyle('plain'), ...sxModifiers, ...accessibilityModifiers], [accessibilityModifiers, sxModifiers]);
30
74
  return /*#__PURE__*/_jsx(Button, {
31
75
  modifiers: modifiers,
32
76
  onPress: onPress,
33
77
  testID: testID,
34
- children: /*#__PURE__*/_jsx(Icon, {
78
+ children: extended ? /*#__PURE__*/_jsxs(HStack, {
79
+ align: "center",
80
+ spacing: "s12",
81
+ children: [/*#__PURE__*/_jsx(Icon, {
82
+ color: "content.on.accent",
83
+ name: name
84
+ }), /*#__PURE__*/_jsx(Text, {
85
+ color: "content.on.accent",
86
+ variant: "body",
87
+ children: label
88
+ })]
89
+ }) : /*#__PURE__*/_jsx(Icon, {
35
90
  accessibilityLabel: accessibilityLabel,
36
91
  color: "content.on.accent",
37
- name: name
92
+ name: name,
93
+ size: icon
38
94
  })
39
95
  });
40
96
  };
@@ -1 +1 @@
1
- {"version":3,"names":["Button","buttonStyle","useAccessibilityModifiers","useSxModifiers","useMemo","useHostGuard","Icon","jsx","_jsx","Fab","accessibilityHint","accessibilityLabel","name","onPress","testID","accessibilityModifiers","sxModifiers","bg","borderRadius","h","p","shadow","w","modifiers","children","color"],"sourceRoot":"../../../../src","sources":["atoms/fab/fab.ios.tsx"],"mappings":";;AAAA,SAAQA,MAAM,QAAO,mBAAmB;AACxC,SAAQC,WAAW,QAAO,6BAA6B;AACvD,SAAQC,yBAAyB,EAAEC,cAAc,QAAO,gBAAgB;AACxE,SAAQC,OAAO,QAAO,OAAO;AAC7B,SAAQC,YAAY,QAAO,uBAAoB;AAC/C,SAAQC,IAAI,QAAO,kBAAS;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAG5B,OAAO,MAAMC,GAAiB,GAAGA,CAAC;EAACC,iBAAiB;EAAEC,kBAAkB;EAAEC,IAAI;EAAEC,OAAO;EAAEC;AAAgB,CAAC,KAAK;EAC7GT,YAAY,CAAC,KAAK,CAAC;EACnB,MAAMU,sBAAsB,GAAGb,yBAAyB,CAAC;IAACQ;EAAiB,CAAC,CAAC;EAE7E,MAAMM,WAAW,GAAGb,cAAc,CAAC;IACjCc,EAAE,EAAE,qBAAqB;IACzBC,YAAY,EAAE,MAAM;IACpBC,CAAC,EAAE,EAAE;IACLC,CAAC,EAAE,KAAK;IACRC,MAAM,EAAE,YAAY;IACpBC,CAAC,EAAE;EACL,CAAC,CAAC;EACF,MAAMC,SAAS,GAAGnB,OAAO,CACvB,MAAM,CAACH,WAAW,CAAC,OAAO,CAAC,EAAE,GAAGe,WAAW,EAAE,GAAGD,sBAAsB,CAAC,EACvE,CAACA,sBAAsB,EAAEC,WAAW,CACtC,CAAC;EAED,oBACER,IAAA,CAACR,MAAM;IAACuB,SAAS,EAAEA,SAAU;IAACV,OAAO,EAAEA,OAAQ;IAACC,MAAM,EAAEA,MAAO;IAAAU,QAAA,eAC7DhB,IAAA,CAACF,IAAI;MAACK,kBAAkB,EAAEA,kBAAmB;MAACc,KAAK,EAAC,mBAAmB;MAACb,IAAI,EAAEA;IAAK,CAAE;EAAC,CAChF,CAAC;AAEb,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["Button","buttonStyle","useAccessibilityModifiers","useSxModifiers","useMemo","useHostGuard","HStack","Icon","Text","jsx","_jsx","jsxs","_jsxs","SIZES","large","icon","side","regular","small","SURFACE","bg","borderRadius","shadow","EXTENDED","h","pl","pr","Fab","accessibilityHint","accessibilityLabel","label","name","onPress","size","testID","extended","Boolean","accessibilityModifiers","sxModifiers","w","modifiers","children","align","spacing","color","variant"],"sourceRoot":"../../../../src","sources":["atoms/fab/fab.ios.tsx"],"mappings":";;AAAA,SAAQA,MAAM,QAAO,mBAAmB;AACxC,SAAQC,WAAW,QAAO,6BAA6B;AACvD,SAA2BC,yBAAyB,EAAEC,cAAc,QAAO,gBAAgB;AAE3F,SAAQC,OAAO,QAAO,OAAO;AAC7B,SAAQC,YAAY,QAAO,uBAAoB;AAC/C,SAAQC,MAAM,QAAO,qBAAY;AACjC,SAAQC,IAAI,QAAO,kBAAS;AAC5B,SAAQC,IAAI,QAAO,kBAAS;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAG5B;AACA,MAAMC,KAAK,GAAG;EACZC,KAAK,EAAE;IAACC,IAAI,EAAE,KAAK;IAAEC,IAAI,EAAE;EAAE,CAAC;EAC9BC,OAAO,EAAE;IAACF,IAAI,EAAE,KAAK;IAAEC,IAAI,EAAE;EAAE,CAAC;EAChCE,KAAK,EAAE;IAACH,IAAI,EAAE,KAAK;IAAEC,IAAI,EAAE;EAAE;AAC/B,CAAqE;AAErE,MAAMG,OAAO,GAAG;EAACC,EAAE,EAAE,qBAAqB;EAAEC,YAAY,EAAE,MAAM;EAAEC,MAAM,EAAE;AAAY,CAAiC;;AAEvH;AACA;AACA;AACA;AACA,MAAMC,QAAQ,GAAG;EAAC,GAAGJ,OAAO;EAAEK,CAAC,EAAEX,KAAK,CAACI,OAAO,CAACD,IAAI;EAAES,EAAE,EAAE,KAAK;EAAEC,EAAE,EAAE;AAAK,CAAiC;AAE1G,OAAO,MAAMC,GAAiB,GAAGA,CAAC;EAChCC,iBAAiB;EACjBC,kBAAkB;EAClBC,KAAK;EACLC,IAAI;EACJC,OAAO;EACPC,IAAI,GAAG,SAAS;EAChBC;AACQ,CAAC,KAAK;EACd7B,YAAY,CAAC,KAAK,CAAC;EACnB,MAAM8B,QAAQ,GAAGC,OAAO,CAACN,KAAK,CAAC;EAC/B,MAAM;IAACf,IAAI;IAAEC;EAAI,CAAC,GAAGH,KAAK,CAACoB,IAAI,CAAC;;EAEhC;EACA,MAAMI,sBAAsB,GAAGnC,yBAAyB,CACtDiC,QAAQ,GAAG;IAACP,iBAAiB;IAAEC;EAAkB,CAAC,GAAG;IAACD;EAAiB,CACzE,CAAC;;EAED;EACA,MAAMU,WAAW,GAAGnC,cAAc,CAACgC,QAAQ,GAAGZ,QAAQ,GAAG;IAAC,GAAGJ,OAAO;IAAEK,CAAC,EAAER,IAAI;IAAEuB,CAAC,EAAEvB;EAAI,CAAC,EAAE,QAAQ,CAAC;EAClG,MAAMwB,SAAS,GAAGpC,OAAO,CACvB,MAAM,CAACH,WAAW,CAAC,OAAO,CAAC,EAAE,GAAGqC,WAAW,EAAE,GAAGD,sBAAsB,CAAC,EACvE,CAACA,sBAAsB,EAAEC,WAAW,CACtC,CAAC;EAED,oBACE5B,IAAA,CAACV,MAAM;IAACwC,SAAS,EAAEA,SAAU;IAACR,OAAO,EAAEA,OAAQ;IAACE,MAAM,EAAEA,MAAO;IAAAO,QAAA,EAC5DN,QAAQ,gBACPvB,KAAA,CAACN,MAAM;MAACoC,KAAK,EAAC,QAAQ;MAACC,OAAO,EAAC,KAAK;MAAAF,QAAA,gBAClC/B,IAAA,CAACH,IAAI;QAACqC,KAAK,EAAC,mBAAmB;QAACb,IAAI,EAAEA;MAAK,CAAE,CAAC,eAC9CrB,IAAA,CAACF,IAAI;QAACoC,KAAK,EAAC,mBAAmB;QAACC,OAAO,EAAC,MAAM;QAAAJ,QAAA,EAC3CX;MAAK,CACF,CAAC;IAAA,CACD,CAAC,gBAETpB,IAAA,CAACH,IAAI;MAACsB,kBAAkB,EAAEA,kBAAmB;MAACe,KAAK,EAAC,mBAAmB;MAACb,IAAI,EAAEA,IAAK;MAACE,IAAI,EAAElB;IAAK,CAAE;EAClG,CACK,CAAC;AAEb,CAAC","ignoreList":[]}
@@ -1,29 +1,72 @@
1
1
  "use strict";
2
2
 
3
- import { IconButton as ComposeIconButton } from '@expo/ui/jetpack-compose';
3
+ import { IconButton as ComposeIconButton, FilledIconButton, FilledTonalIconButton, OutlinedIconButton } from '@expo/ui/jetpack-compose';
4
+ import { testID as testIdModifier } from '@expo/ui/jetpack-compose/modifiers';
4
5
  import { useAccessibilityModifiers } from '@hzblj/kara-sx';
6
+ import { useAppTheme } from '@hzblj/kara-theme';
7
+ import { useMemo } from 'react';
5
8
  import { useHostGuard } from "../../host-context.js";
9
+ import { buttonTokens, contentOnTint } from "../button/button-tokens.js";
6
10
  import { Icon } from "../icon/index.js";
7
11
  import { jsx as _jsx } from "react/jsx-runtime";
12
+ /** Material has no glass: `glass` is the tonal button, a contained one that still reads over a photo or a map. */
13
+ const MATERIAL_BY_VARIANT = {
14
+ filled: FilledIconButton,
15
+ glass: FilledTonalIconButton,
16
+ outlined: OutlinedIconButton,
17
+ plain: ComposeIconButton,
18
+ tonal: FilledTonalIconButton
19
+ };
20
+
21
+ /** Which `Button` variant's tokens fill the container: the same accent and secondary fills a `Button` draws. */
22
+ const FILL_BY_VARIANT = {
23
+ filled: 'accent',
24
+ glass: 'secondary',
25
+ outlined: undefined,
26
+ plain: undefined,
27
+ tonal: 'secondary'
28
+ };
8
29
  export const IconButton = ({
9
30
  accessibilityHint,
10
31
  accessibilityLabel,
32
+ color,
11
33
  disabled = false,
12
34
  name,
13
- onPress
35
+ onPress,
36
+ testID,
37
+ variant = 'plain'
14
38
  }) => {
15
39
  useHostGuard('IconButton');
40
+ const theme = useAppTheme();
16
41
  // The label rides on the icon, as Material's own icon buttons carry it; the hint labels the click.
17
- const modifiers = useAccessibilityModifiers({
42
+ const accessibilityModifiers = useAccessibilityModifiers({
18
43
  accessibilityHint
19
44
  }, accessibilityHint !== undefined);
20
- return /*#__PURE__*/_jsx(ComposeIconButton, {
45
+ const modifiers = useMemo(() => testID ? [testIdModifier(testID), ...accessibilityModifiers] : accessibilityModifiers, [accessibilityModifiers, testID]);
46
+ const MaterialIconButton = MATERIAL_BY_VARIANT[variant];
47
+ const fillVariant = FILL_BY_VARIANT[variant];
48
+ const tokens = fillVariant ? buttonTokens(fillVariant, disabled, theme) : undefined;
49
+
50
+ // `filled` takes the colour as its fill and picks the icon's on it, as a tinted `Button` does; the rest colour the icon.
51
+ const filled = variant === 'filled';
52
+ const fill = filled && color && !disabled ? color : tokens?.fill;
53
+ let iconColor = color ?? 'content.primary';
54
+ if (disabled) {
55
+ iconColor = 'btn.content.disabled';
56
+ } else if (filled) {
57
+ iconColor = color ? contentOnTint(color, theme) : 'content.on.accent';
58
+ }
59
+ return /*#__PURE__*/_jsx(MaterialIconButton, {
60
+ colors: fill ? {
61
+ containerColor: theme.color(fill),
62
+ disabledContainerColor: theme.color(fill)
63
+ } : undefined,
21
64
  enabled: !disabled,
22
65
  modifiers: modifiers,
23
66
  onClick: onPress,
24
67
  children: /*#__PURE__*/_jsx(Icon, {
25
68
  accessibilityLabel: accessibilityLabel,
26
- color: disabled ? 'btn.content.disabled' : 'content.primary',
69
+ color: iconColor,
27
70
  name: name
28
71
  })
29
72
  });
@@ -1 +1 @@
1
- {"version":3,"names":["IconButton","ComposeIconButton","useAccessibilityModifiers","useHostGuard","Icon","jsx","_jsx","accessibilityHint","accessibilityLabel","disabled","name","onPress","modifiers","undefined","enabled","onClick","children","color"],"sourceRoot":"../../../../src","sources":["atoms/icon-button/icon-button.android.tsx"],"mappings":";;AAAA,SAAQA,UAAU,IAAIC,iBAAiB,QAAO,0BAA0B;AACxE,SAAQC,yBAAyB,QAAO,gBAAgB;AAExD,SAAQC,YAAY,QAAO,uBAAoB;AAC/C,SAAQC,IAAI,QAAO,kBAAS;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAG5B,OAAO,MAAMN,UAA+B,GAAGA,CAAC;EAC9CO,iBAAiB;EACjBC,kBAAkB;EAClBC,QAAQ,GAAG,KAAK;EAChBC,IAAI;EACJC;AACe,CAAC,KAAK;EACrBR,YAAY,CAAC,YAAY,CAAC;EAC1B;EACA,MAAMS,SAAS,GAAGV,yBAAyB,CAAC;IAACK;EAAiB,CAAC,EAAEA,iBAAiB,KAAKM,SAAS,CAAC;EAEjG,oBACEP,IAAA,CAACL,iBAAiB;IAACa,OAAO,EAAE,CAACL,QAAS;IAACG,SAAS,EAAEA,SAAU;IAACG,OAAO,EAAEJ,OAAQ;IAAAK,QAAA,eAC5EV,IAAA,CAACF,IAAI;MACHI,kBAAkB,EAAEA,kBAAmB;MACvCS,KAAK,EAAER,QAAQ,GAAG,sBAAsB,GAAG,iBAAkB;MAC7DC,IAAI,EAAEA;IAAK,CACZ;EAAC,CACe,CAAC;AAExB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["IconButton","ComposeIconButton","FilledIconButton","FilledTonalIconButton","OutlinedIconButton","testID","testIdModifier","useAccessibilityModifiers","useAppTheme","useMemo","useHostGuard","buttonTokens","contentOnTint","Icon","jsx","_jsx","MATERIAL_BY_VARIANT","filled","glass","outlined","plain","tonal","FILL_BY_VARIANT","undefined","accessibilityHint","accessibilityLabel","color","disabled","name","onPress","variant","theme","accessibilityModifiers","modifiers","MaterialIconButton","fillVariant","tokens","fill","iconColor","colors","containerColor","disabledContainerColor","enabled","onClick","children"],"sourceRoot":"../../../../src","sources":["atoms/icon-button/icon-button.android.tsx"],"mappings":"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","ignoreList":[]}