@kanso-labs/react-native-kanso-ui 0.0.0-stage → 0.1.1

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 (145) hide show
  1. package/LICENSE.md +20 -0
  2. package/README.md +205 -2
  3. package/dist/button/index.d.ts +56 -0
  4. package/dist/button/index.js +169 -0
  5. package/dist/button/index.js.map +1 -0
  6. package/dist/button/palettes.js +47 -0
  7. package/dist/button/palettes.js.map +1 -0
  8. package/dist/chip/index.js +194 -0
  9. package/dist/chip/index.js.map +1 -0
  10. package/dist/chip/styles.js +36 -0
  11. package/dist/chip/styles.js.map +1 -0
  12. package/dist/clipboard/index.js +58 -0
  13. package/dist/clipboard/index.js.map +1 -0
  14. package/dist/components/avatar/index.d.ts +82 -0
  15. package/dist/components/avatar/index.js +62 -0
  16. package/dist/components/avatar/index.js.map +1 -0
  17. package/dist/components/button/index.d.ts +87 -0
  18. package/dist/components/button/index.js +377 -0
  19. package/dist/components/button/index.js.map +1 -0
  20. package/dist/components/card/index.d.ts +78 -0
  21. package/dist/components/card/index.js +315 -0
  22. package/dist/components/card/index.js.map +1 -0
  23. package/dist/components/checkbox/index.d.ts +76 -0
  24. package/dist/components/checkbox/index.js +360 -0
  25. package/dist/components/checkbox/index.js.map +1 -0
  26. package/dist/components/chip/index.d.ts +84 -0
  27. package/dist/components/chip/index.js +257 -0
  28. package/dist/components/chip/index.js.map +1 -0
  29. package/dist/components/chip-group/index.d.ts +143 -0
  30. package/dist/components/chip-group/index.js +669 -0
  31. package/dist/components/chip-group/index.js.map +1 -0
  32. package/dist/components/copy-field/index.d.ts +60 -0
  33. package/dist/components/copy-field/index.js +277 -0
  34. package/dist/components/copy-field/index.js.map +1 -0
  35. package/dist/components/currency/index.d.ts +69 -0
  36. package/dist/components/currency/index.js +162 -0
  37. package/dist/components/currency/index.js.map +1 -0
  38. package/dist/components/form/index.d.ts +84 -0
  39. package/dist/components/form/index.js +95 -0
  40. package/dist/components/form/index.js.map +1 -0
  41. package/dist/components/icon-button/index.d.ts +68 -0
  42. package/dist/components/icon-button/index.js +289 -0
  43. package/dist/components/icon-button/index.js.map +1 -0
  44. package/dist/components/link/index.d.ts +59 -0
  45. package/dist/components/link/index.js +191 -0
  46. package/dist/components/link/index.js.map +1 -0
  47. package/dist/components/number-field/index.d.ts +151 -0
  48. package/dist/components/number-field/index.js +832 -0
  49. package/dist/components/number-field/index.js.map +1 -0
  50. package/dist/components/product-icon/index.d.ts +70 -0
  51. package/dist/components/product-icon/index.js +60 -0
  52. package/dist/components/product-icon/index.js.map +1 -0
  53. package/dist/components/radio-group/index.d.ts +105 -0
  54. package/dist/components/radio-group/index.js +597 -0
  55. package/dist/components/radio-group/index.js.map +1 -0
  56. package/dist/components/search-field/index.d.ts +98 -0
  57. package/dist/components/search-field/index.js +521 -0
  58. package/dist/components/search-field/index.js.map +1 -0
  59. package/dist/components/segmented-button/index.d.ts +113 -0
  60. package/dist/components/segmented-button/index.js +937 -0
  61. package/dist/components/segmented-button/index.js.map +1 -0
  62. package/dist/components/separator/index.d.ts +45 -0
  63. package/dist/components/separator/index.js +109 -0
  64. package/dist/components/separator/index.js.map +1 -0
  65. package/dist/components/stack/index.d.ts +70 -0
  66. package/dist/components/stack/index.js +107 -0
  67. package/dist/components/stack/index.js.map +1 -0
  68. package/dist/components/switch/index.d.ts +76 -0
  69. package/dist/components/switch/index.js +591 -0
  70. package/dist/components/switch/index.js.map +1 -0
  71. package/dist/components/text/index.d.ts +44 -0
  72. package/dist/components/text/index.js +78 -0
  73. package/dist/components/text/index.js.map +1 -0
  74. package/dist/components/text-field/index.d.ts +146 -0
  75. package/dist/components/text-field/index.js +228 -0
  76. package/dist/components/text-field/index.js.map +1 -0
  77. package/dist/control/index.js +117 -0
  78. package/dist/control/index.js.map +1 -0
  79. package/dist/control/styles.js +36 -0
  80. package/dist/control/styles.js.map +1 -0
  81. package/dist/field/index.d.ts +13 -0
  82. package/dist/field/index.js +1007 -0
  83. package/dist/field/index.js.map +1 -0
  84. package/dist/field/styles.js +131 -0
  85. package/dist/field/styles.js.map +1 -0
  86. package/dist/form/index.d.ts +24 -0
  87. package/dist/form/index.js +209 -0
  88. package/dist/form/index.js.map +1 -0
  89. package/dist/glyphs/icon-style.d.ts +25 -0
  90. package/dist/glyphs/icon-style.js +22 -0
  91. package/dist/glyphs/icon-style.js.map +1 -0
  92. package/dist/glyphs/index.js +170 -0
  93. package/dist/glyphs/index.js.map +1 -0
  94. package/dist/glyphs/styles.js +7 -0
  95. package/dist/glyphs/styles.js.map +1 -0
  96. package/dist/hooks/useWindowSizeClass.d.ts +25 -0
  97. package/dist/hooks/useWindowSizeClass.js +39 -0
  98. package/dist/hooks/useWindowSizeClass.js.map +1 -0
  99. package/dist/index.d.ts +31 -0
  100. package/dist/index.js +27 -0
  101. package/dist/mark/image.js +61 -0
  102. package/dist/mark/image.js.map +1 -0
  103. package/dist/mark/index.d.ts +9 -0
  104. package/dist/mark/index.js +234 -0
  105. package/dist/mark/index.js.map +1 -0
  106. package/dist/mark/initials.js +65 -0
  107. package/dist/mark/initials.js.map +1 -0
  108. package/dist/mark/styles.d.ts +1 -0
  109. package/dist/mark/styles.js +73 -0
  110. package/dist/mark/styles.js.map +1 -0
  111. package/dist/number/parser.js +321 -0
  112. package/dist/number/parser.js.map +1 -0
  113. package/dist/number/state.js +235 -0
  114. package/dist/number/state.js.map +1 -0
  115. package/dist/overlay/host.js +111 -0
  116. package/dist/overlay/host.js.map +1 -0
  117. package/dist/press/index.js +350 -0
  118. package/dist/press/index.js.map +1 -0
  119. package/dist/press/styles.js +31 -0
  120. package/dist/press/styles.js.map +1 -0
  121. package/dist/router/index.d.ts +28 -0
  122. package/dist/router/index.js +82 -0
  123. package/dist/router/index.js.map +1 -0
  124. package/dist/theme/color.js +25 -0
  125. package/dist/theme/color.js.map +1 -0
  126. package/dist/theme/resolve.d.ts +6 -0
  127. package/dist/theme/resolve.js +310 -0
  128. package/dist/theme/resolve.js.map +1 -0
  129. package/dist/theme/scope.d.ts +42 -0
  130. package/dist/theme/scope.js +80 -0
  131. package/dist/theme/scope.js.map +1 -0
  132. package/dist/theme/styles.js +39 -0
  133. package/dist/theme/styles.js.map +1 -0
  134. package/dist/theme-scope.d.ts +56 -0
  135. package/dist/theme-scope.js +127 -0
  136. package/dist/theme-scope.js.map +1 -0
  137. package/dist/tokens/defaults.d.ts +407 -0
  138. package/dist/tokens/defaults.js +403 -0
  139. package/dist/tokens/defaults.js.map +1 -0
  140. package/dist/typography/fonts.js +84 -0
  141. package/dist/typography/fonts.js.map +1 -0
  142. package/dist/typography/roles.d.ts +10 -0
  143. package/dist/typography/roles.js +82 -0
  144. package/dist/typography/roles.js.map +1 -0
  145. package/package.json +132 -4
@@ -0,0 +1,315 @@
1
+ import { useTheme } from "../../theme/scope.js";
2
+ import { composeStyles, themedStyles } from "../../theme/styles.js";
3
+ import { useLinkPress } from "../../router/index.js";
4
+ import { withOpacity } from "../../theme/color.js";
5
+ import { usePressFeedback } from "../../press/index.js";
6
+ import { c } from "react/compiler-runtime";
7
+ import { Pressable, StyleSheet, View } from "react-native";
8
+ import { jsx, jsxs } from "react/jsx-runtime";
9
+ //#region src/components/card/index.tsx
10
+ const paddings = themedStyles(({ spacing }) => StyleSheet.create({
11
+ default: { padding: spacing.lg },
12
+ none: { padding: 0 }
13
+ }));
14
+ const stylesOf = themedStyles(({ colors, radii, shadows }) => StyleSheet.create({
15
+ base: {
16
+ borderRadius: radii.md,
17
+ overflow: "hidden"
18
+ },
19
+ elevated: { backgroundColor: colors.surfaceContainerLow },
20
+ filled: { backgroundColor: colors.surfaceContainerHighest },
21
+ lifted: { boxShadow: shadows.elevation2 },
22
+ outlined: {
23
+ backgroundColor: colors.surface,
24
+ borderColor: colors.outlineVariant,
25
+ borderWidth: 1
26
+ },
27
+ resting: { boxShadow: shadows.elevation1 }
28
+ }));
29
+ const disabledStylesOf = themedStyles(({ colors, stateLayerOpacity }) => StyleSheet.create({
30
+ content: { opacity: stateLayerOpacity.disabledContent },
31
+ elevated: { backgroundColor: withOpacity(colors.surfaceContainerLow, stateLayerOpacity.disabledContent) },
32
+ filled: { backgroundColor: withOpacity(colors.surfaceContainerHighest, stateLayerOpacity.disabledContent) },
33
+ outlined: { borderColor: withOpacity(colors.outline, stateLayerOpacity.disabledContainer) }
34
+ }));
35
+ const styles = StyleSheet.create({ content: { flexGrow: 1 } });
36
+ /**
37
+ * A surface holding related content.
38
+ *
39
+ * ```tsx
40
+ * <Card interactive onPress={open}>
41
+ * <Text variant="titleMedium">Headline</Text>
42
+ * </Card>
43
+ * ```
44
+ *
45
+ * A card is a `View` with no role, unless it is `interactive`: then it is a
46
+ * `Pressable` announced as a button, or as a link given `href`, which presses
47
+ * as a whole. Web's `render` has no counterpart, since native has no element
48
+ * to choose, and `href` is how a card leads somewhere instead. The press
49
+ * props belong to an interactive card alone, so a static card given
50
+ * `onPress` is a compile error rather than a press that never fires.
51
+ *
52
+ * A card fills the column it sits in, as any view in a React Native column
53
+ * does. `style`, `ref` and `testID` land on the card's own view.
54
+ */
55
+ function Card(props) {
56
+ const $ = c(2);
57
+ let t0;
58
+ if ($[0] !== props) {
59
+ t0 = props.interactive === true ? /* @__PURE__ */ jsx(InteractiveCard, { ...props }) : /* @__PURE__ */ jsx(StaticCard, { ...props });
60
+ $[0] = props;
61
+ $[1] = t0;
62
+ } else t0 = $[1];
63
+ return t0;
64
+ }
65
+ function InteractiveCard(t0) {
66
+ const $ = c(61);
67
+ let children;
68
+ let href;
69
+ let onBlur;
70
+ let onFocus;
71
+ let onHoverIn;
72
+ let onHoverOut;
73
+ let onPress;
74
+ let onPressIn;
75
+ let onPressOut;
76
+ let props;
77
+ let style;
78
+ let t1;
79
+ let t2;
80
+ let t3;
81
+ if ($[0] !== t0) {
82
+ const { children: t4, href: t5, interactive: _interactive, isDisabled: t6, onBlur: t7, onFocus: t8, onHoverIn: t9, onHoverOut: t10, onPress: t11, onPressIn: t12, onPressOut: t13, padding: t14, style: t15, variant: t16, ...t17 } = t0;
83
+ children = t4;
84
+ href = t5;
85
+ t1 = t6;
86
+ onBlur = t7;
87
+ onFocus = t8;
88
+ onHoverIn = t9;
89
+ onHoverOut = t10;
90
+ onPress = t11;
91
+ onPressIn = t12;
92
+ onPressOut = t13;
93
+ t2 = t14;
94
+ style = t15;
95
+ t3 = t16;
96
+ props = t17;
97
+ $[0] = t0;
98
+ $[1] = children;
99
+ $[2] = href;
100
+ $[3] = onBlur;
101
+ $[4] = onFocus;
102
+ $[5] = onHoverIn;
103
+ $[6] = onHoverOut;
104
+ $[7] = onPress;
105
+ $[8] = onPressIn;
106
+ $[9] = onPressOut;
107
+ $[10] = props;
108
+ $[11] = style;
109
+ $[12] = t1;
110
+ $[13] = t2;
111
+ $[14] = t3;
112
+ } else {
113
+ children = $[1];
114
+ href = $[2];
115
+ onBlur = $[3];
116
+ onFocus = $[4];
117
+ onHoverIn = $[5];
118
+ onHoverOut = $[6];
119
+ onPress = $[7];
120
+ onPressIn = $[8];
121
+ onPressOut = $[9];
122
+ props = $[10];
123
+ style = $[11];
124
+ t1 = $[12];
125
+ t2 = $[13];
126
+ t3 = $[14];
127
+ }
128
+ const isDisabled = t1 === void 0 ? false : t1;
129
+ const padding = t2 === void 0 ? "default" : t2;
130
+ const variant = t3 === void 0 ? "elevated" : t3;
131
+ const theme = useTheme();
132
+ const press = useLinkPress(href, onPress);
133
+ let t4;
134
+ if ($[15] !== isDisabled || $[16] !== onBlur || $[17] !== onFocus || $[18] !== onHoverIn || $[19] !== onHoverOut || $[20] !== onPressIn || $[21] !== onPressOut || $[22] !== theme.colors.onSurface) {
135
+ t4 = {
136
+ color: theme.colors.onSurface,
137
+ disabled: isDisabled,
138
+ onBlur,
139
+ onFocus,
140
+ onHoverIn,
141
+ onHoverOut,
142
+ onPressIn,
143
+ onPressOut
144
+ };
145
+ $[15] = isDisabled;
146
+ $[16] = onBlur;
147
+ $[17] = onFocus;
148
+ $[18] = onHoverIn;
149
+ $[19] = onHoverOut;
150
+ $[20] = onPressIn;
151
+ $[21] = onPressOut;
152
+ $[22] = theme.colors.onSurface;
153
+ $[23] = t4;
154
+ } else t4 = $[23];
155
+ const feedback = usePressFeedback(t4);
156
+ let T0;
157
+ let disabled;
158
+ let t10;
159
+ let t5;
160
+ let t6;
161
+ let t7;
162
+ let t8;
163
+ let t9;
164
+ if ($[24] !== feedback.handlers || $[25] !== feedback.hovered || $[26] !== feedback.pressed || $[27] !== feedback.ring || $[28] !== href || $[29] !== isDisabled || $[30] !== padding || $[31] !== press || $[32] !== props || $[33] !== style || $[34] !== theme || $[35] !== variant) {
165
+ const own = stylesOf(theme);
166
+ let t11;
167
+ if ($[44] !== theme) {
168
+ t11 = disabledStylesOf(theme);
169
+ $[44] = theme;
170
+ $[45] = t11;
171
+ } else t11 = $[45];
172
+ disabled = t11;
173
+ const lifted = feedback.hovered && !feedback.pressed;
174
+ T0 = Pressable;
175
+ t5 = href === void 0 ? "button" : "link";
176
+ t6 = props;
177
+ t7 = feedback.handlers;
178
+ t8 = isDisabled;
179
+ t9 = press;
180
+ t10 = composeStyles(own.base, own[variant], paddings(theme)[padding], variant === "elevated" && !isDisabled ? own[lifted ? "lifted" : "resting"] : void 0, isDisabled && disabled[variant], feedback.ring, style);
181
+ $[24] = feedback.handlers;
182
+ $[25] = feedback.hovered;
183
+ $[26] = feedback.pressed;
184
+ $[27] = feedback.ring;
185
+ $[28] = href;
186
+ $[29] = isDisabled;
187
+ $[30] = padding;
188
+ $[31] = press;
189
+ $[32] = props;
190
+ $[33] = style;
191
+ $[34] = theme;
192
+ $[35] = variant;
193
+ $[36] = T0;
194
+ $[37] = disabled;
195
+ $[38] = t10;
196
+ $[39] = t5;
197
+ $[40] = t6;
198
+ $[41] = t7;
199
+ $[42] = t8;
200
+ $[43] = t9;
201
+ } else {
202
+ T0 = $[36];
203
+ disabled = $[37];
204
+ t10 = $[38];
205
+ t5 = $[39];
206
+ t6 = $[40];
207
+ t7 = $[41];
208
+ t8 = $[42];
209
+ t9 = $[43];
210
+ }
211
+ const t11 = isDisabled && disabled.content;
212
+ let t12;
213
+ if ($[46] !== t11) {
214
+ t12 = composeStyles(styles.content, t11);
215
+ $[46] = t11;
216
+ $[47] = t12;
217
+ } else t12 = $[47];
218
+ let t13;
219
+ if ($[48] !== children || $[49] !== t12) {
220
+ t13 = /* @__PURE__ */ jsx(View, {
221
+ style: t12,
222
+ children
223
+ });
224
+ $[48] = children;
225
+ $[49] = t12;
226
+ $[50] = t13;
227
+ } else t13 = $[50];
228
+ let t14;
229
+ if ($[51] !== T0 || $[52] !== feedback.layer || $[53] !== t10 || $[54] !== t13 || $[55] !== t5 || $[56] !== t6 || $[57] !== t7 || $[58] !== t8 || $[59] !== t9) {
230
+ t14 = /* @__PURE__ */ jsxs(T0, {
231
+ role: t5,
232
+ ...t6,
233
+ ...t7,
234
+ disabled: t8,
235
+ onPress: t9,
236
+ style: t10,
237
+ children: [t13, feedback.layer]
238
+ });
239
+ $[51] = T0;
240
+ $[52] = feedback.layer;
241
+ $[53] = t10;
242
+ $[54] = t13;
243
+ $[55] = t5;
244
+ $[56] = t6;
245
+ $[57] = t7;
246
+ $[58] = t8;
247
+ $[59] = t9;
248
+ $[60] = t14;
249
+ } else t14 = $[60];
250
+ return t14;
251
+ }
252
+ function StaticCard(t0) {
253
+ const $ = c(17);
254
+ let props;
255
+ let style;
256
+ let t1;
257
+ let t2;
258
+ if ($[0] !== t0) {
259
+ const { interactive: _interactive, isDisabled: _isDisabled, padding: t3, style: t4, variant: t5, ...t6 } = t0;
260
+ t1 = t3;
261
+ style = t4;
262
+ t2 = t5;
263
+ props = t6;
264
+ $[0] = t0;
265
+ $[1] = props;
266
+ $[2] = style;
267
+ $[3] = t1;
268
+ $[4] = t2;
269
+ } else {
270
+ props = $[1];
271
+ style = $[2];
272
+ t1 = $[3];
273
+ t2 = $[4];
274
+ }
275
+ const padding = t1 === void 0 ? "default" : t1;
276
+ const variant = t2 === void 0 ? "elevated" : t2;
277
+ const theme = useTheme();
278
+ let T0;
279
+ let t3;
280
+ let t4;
281
+ if ($[5] !== padding || $[6] !== props || $[7] !== style || $[8] !== theme || $[9] !== variant) {
282
+ const own = stylesOf(theme);
283
+ T0 = View;
284
+ t3 = props;
285
+ t4 = composeStyles(own.base, own[variant], variant === "elevated" ? own.resting : void 0, paddings(theme)[padding], style);
286
+ $[5] = padding;
287
+ $[6] = props;
288
+ $[7] = style;
289
+ $[8] = theme;
290
+ $[9] = variant;
291
+ $[10] = T0;
292
+ $[11] = t3;
293
+ $[12] = t4;
294
+ } else {
295
+ T0 = $[10];
296
+ t3 = $[11];
297
+ t4 = $[12];
298
+ }
299
+ let t5;
300
+ if ($[13] !== T0 || $[14] !== t3 || $[15] !== t4) {
301
+ t5 = /* @__PURE__ */ jsx(T0, {
302
+ ...t3,
303
+ style: t4
304
+ });
305
+ $[13] = T0;
306
+ $[14] = t3;
307
+ $[15] = t4;
308
+ $[16] = t5;
309
+ } else t5 = $[16];
310
+ return t5;
311
+ }
312
+ //#endregion
313
+ export { Card };
314
+
315
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["ReactNode","Ref","PressableProps","StyleProp","ViewProps","ViewStyle","Pressable","StyleSheet","View","usePressFeedback","useLinkPress","withOpacity","useTheme","composeStyles","themedStyles","CardBaseProps","children","isDisabled","padding","ref","style","variant","CardVariant","CardProps","InteractiveCardForm","StaticCardForm","Omit","href","interactive","onPress","paddings","spacing","create","default","lg","none","stylesOf","colors","radii","shadows","base","borderRadius","md","overflow","elevated","backgroundColor","surfaceContainerLow","filled","surfaceContainerHighest","lifted","boxShadow","elevation2","outlined","surface","borderColor","outlineVariant","borderWidth","resting","elevation1","disabledStylesOf","stateLayerOpacity","content","opacity","disabledContent","outline","disabledContainer","styles","flexGrow","Card","props","$","_c","t0","InteractiveCard","onBlur","onFocus","onHoverIn","onHoverOut","onPressIn","onPressOut","t1","t2","t3","t4","t5","_interactive","t6","t7","t8","t9","t10","t11","t12","t13","t14","t15","t16","t17","undefined","theme","press","onSurface","color","disabled","feedback","T0","handlers","hovered","pressed","ring","own","layer","StaticCard","_isDisabled","_c"],"sources":["../../../src/components/card/index.tsx"],"sourcesContent":["import type { ReactNode, Ref } from 'react'\nimport type {\n PressableProps,\n StyleProp,\n ViewProps,\n ViewStyle,\n} from 'react-native'\n\nimport { Pressable, StyleSheet, View } from 'react-native'\n\nimport { usePressFeedback } from '../../press'\nimport { useLinkPress } from '../../router'\nimport { withOpacity } from '../../theme/color'\nimport { useTheme } from '../../theme/scope'\nimport { composeStyles, themedStyles } from '../../theme/styles'\n\n// The cards spec page's three variants, as kanso-ui's Card draws them. They\n// differ only in how they separate themselves from the page: elevated casts\n// the level 1 shadow over the low container, filled sits on the highest\n// container, and outlined draws an outline-variant rule over the surface. The\n// corner is the page's 12dp, the medium shape, and content runs 16dp in from\n// it unless `padding` is `none`.\n//\n// An interactive card draws the state layers, the ripple and the focus ring\n// from src/press, in on-surface, the colour web mixes over its container.\n// They lie over the card's content rather than under it, so a child that\n// fills the card, an image or a row with a fill of its own, still shows the\n// press. Under a pointer the elevated card rises to level 2 and settles back\n// to 1 while pressed, as the page and web have it, and switches at once, since\n// web's runs no transition either; the other two stay flat. A phone has no\n// pointer, so there the press itself is what shows.\n//\n// Disabled is the page's: each container at 38%, the outlined card's rule\n// in the outline role at 12%, what the card holds faded to 38%, and the\n// elevated card flat. A card's content is the call site's, so no colour role\n// reaches all of it, and an opacity is the one fade that does.\n\ntype CardBaseProps = {\n readonly children?: ReactNode\n /**\n * Turns an interactive card off: it fades as the cards page draws a\n * disabled card, and takes no press. It is still announced, as disabled.\n * Has no effect on a card that is not `interactive`, which cannot be\n * pressed to begin with.\n * @default false\n */\n readonly isDisabled?: boolean\n /**\n * `none` removes the card's own padding, for a card whose children run to\n * its edges, such as a list of rows separated by rules.\n * @default 'default'\n */\n readonly padding?: 'default' | 'none'\n readonly ref?: Ref<View>\n readonly style?: StyleProp<ViewStyle>\n /**\n * How the card separates itself from the page: `elevated` casts a shadow,\n * `filled` sits on a darker surface, `outlined` draws a border.\n * @default 'elevated'\n */\n readonly variant?: CardVariant\n}\n\ntype CardProps = CardBaseProps & (InteractiveCardForm | StaticCardForm)\n\ntype CardVariant = 'elevated' | 'filled' | 'outlined'\n\n/**\n * A card that presses as a whole: a `Pressable` announced as a button, or as\n * a link given `href`.\n */\ntype InteractiveCardForm = Omit<\n PressableProps,\n 'children' | 'disabled' | 'style'\n> & {\n /**\n * Where the card leads. A press opens it through the `RouterProvider`\n * around the card, or through the platform for a URL with a scheme of its\n * own, after the call site's own `onPress`, and the card is announced as a\n * link.\n */\n readonly href?: string\n /**\n * Makes the card the thing you press: it ripples, draws the state layers,\n * lifts under a pointer and takes a focus ring. Leave it off for a card\n * that merely holds content, including one holding buttons of its own.\n */\n readonly interactive: true\n}\n\n/** A card that holds content and takes no press: a `View` with no role. */\ntype StaticCardForm = Omit<ViewProps, 'children' | 'style'> & {\n readonly href?: never\n readonly interactive?: false\n readonly onPress?: never\n}\n\nconst paddings = themedStyles(({ spacing }) =>\n StyleSheet.create({\n default: { padding: spacing.lg },\n none: { padding: 0 },\n }),\n)\n\nconst stylesOf = themedStyles(({ colors, radii, shadows }) =>\n StyleSheet.create({\n // The corner clips what the card holds, so a child running to the edges\n // is rounded with it. The shadow and the focus ring are drawn outside the\n // card and are not clipped.\n base: {\n borderRadius: radii.md,\n overflow: 'hidden',\n },\n elevated: {\n backgroundColor: colors.surfaceContainerLow,\n },\n filled: {\n backgroundColor: colors.surfaceContainerHighest,\n },\n // Under a pointer, the elevated card's level 2.\n lifted: {\n boxShadow: shadows.elevation2,\n },\n outlined: {\n backgroundColor: colors.surface,\n borderColor: colors.outlineVariant,\n borderWidth: 1,\n },\n // The elevated card's level 1, which no other variant casts.\n resting: {\n boxShadow: shadows.elevation1,\n },\n }),\n)\n\nconst disabledStylesOf = themedStyles(({ colors, stateLayerOpacity }) =>\n StyleSheet.create({\n content: {\n opacity: stateLayerOpacity.disabledContent,\n },\n elevated: {\n backgroundColor: withOpacity(\n colors.surfaceContainerLow,\n stateLayerOpacity.disabledContent,\n ),\n },\n filled: {\n backgroundColor: withOpacity(\n colors.surfaceContainerHighest,\n stateLayerOpacity.disabledContent,\n ),\n },\n outlined: {\n borderColor: withOpacity(\n colors.outline,\n stateLayerOpacity.disabledContainer,\n ),\n },\n }),\n)\n\nconst styles = StyleSheet.create({\n // What an interactive card's children sit in, filling a card stretched\n // taller than them, as a static card's children are laid out in the card\n // itself. It is what fades while disabled, apart from the container.\n content: {\n flexGrow: 1,\n },\n})\n\n/**\n * A surface holding related content.\n *\n * ```tsx\n * <Card interactive onPress={open}>\n * <Text variant=\"titleMedium\">Headline</Text>\n * </Card>\n * ```\n *\n * A card is a `View` with no role, unless it is `interactive`: then it is a\n * `Pressable` announced as a button, or as a link given `href`, which presses\n * as a whole. Web's `render` has no counterpart, since native has no element\n * to choose, and `href` is how a card leads somewhere instead. The press\n * props belong to an interactive card alone, so a static card given\n * `onPress` is a compile error rather than a press that never fires.\n *\n * A card fills the column it sits in, as any view in a React Native column\n * does. `style`, `ref` and `testID` land on the card's own view.\n */\nfunction Card(props: CardProps) {\n return props.interactive === true ? (\n <InteractiveCard {...props} />\n ) : (\n <StaticCard {...props} />\n )\n}\n\nfunction InteractiveCard({\n children,\n href,\n interactive: _interactive,\n isDisabled = false,\n onBlur,\n onFocus,\n onHoverIn,\n onHoverOut,\n onPress,\n onPressIn,\n onPressOut,\n padding = 'default',\n style,\n variant = 'elevated',\n ...props\n}: CardBaseProps & InteractiveCardForm) {\n const theme = useTheme()\n const press = useLinkPress(href, onPress)\n const feedback = usePressFeedback({\n color: theme.colors.onSurface,\n disabled: isDisabled,\n onBlur,\n onFocus,\n onHoverIn,\n onHoverOut,\n onPressIn,\n onPressOut,\n })\n\n const own = stylesOf(theme)\n const disabled = disabledStylesOf(theme)\n const lifted = feedback.hovered && !feedback.pressed\n\n return (\n <Pressable\n role={href === undefined ? 'button' : 'link'}\n {...props}\n {...feedback.handlers}\n disabled={isDisabled}\n onPress={press}\n style={composeStyles<ViewStyle>(\n own.base,\n own[variant],\n paddings(theme)[padding],\n variant === 'elevated' && !isDisabled\n ? own[lifted ? 'lifted' : 'resting']\n : undefined,\n isDisabled && disabled[variant],\n feedback.ring,\n style,\n )}\n >\n <View\n style={composeStyles<ViewStyle>(\n styles.content,\n isDisabled && disabled.content,\n )}\n >\n {children}\n </View>\n {feedback.layer}\n </Pressable>\n )\n}\n\nfunction StaticCard({\n interactive: _interactive,\n isDisabled: _isDisabled,\n padding = 'default',\n style,\n variant = 'elevated',\n ...props\n}: CardBaseProps & StaticCardForm) {\n const theme = useTheme()\n const own = stylesOf(theme)\n\n return (\n <View\n {...props}\n style={composeStyles<ViewStyle>(\n own.base,\n own[variant],\n variant === 'elevated' ? own.resting : undefined,\n paddings(theme)[padding],\n style,\n )}\n />\n )\n}\n\nexport type { CardProps, CardVariant }\n\nexport { Card }\n"],"mappings":"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"}
@@ -0,0 +1,76 @@
1
+ import { StyleProp, View, ViewProps, ViewStyle } from "react-native";
2
+ import { ReactNode, Ref } from "react";
3
+ //#region src/components/checkbox/index.d.ts
4
+ type CheckboxProps = Omit<ViewProps, 'children' | 'style'> & {
5
+ /**
6
+ * The label, beside the box. A checkbox that a row labels some other way
7
+ * leaves it out and passes `aria-label` instead.
8
+ */
9
+ readonly children?: ReactNode;
10
+ /**
11
+ * Whether the checkbox starts selected, when it keeps its own state.
12
+ * @default false
13
+ */
14
+ readonly defaultSelected?: boolean;
15
+ /**
16
+ * A hint under the label. Replaced by `error` when there is one, so the
17
+ * two never stack.
18
+ */
19
+ readonly description?: string;
20
+ /**
21
+ * The problem with the current value, in words. Its presence is what puts
22
+ * the checkbox in its error state: the message and the error colours both
23
+ * follow from it.
24
+ */
25
+ readonly error?: string;
26
+ /**
27
+ * Draws the checkbox disabled, and takes no presses.
28
+ * @default false
29
+ */
30
+ readonly isDisabled?: boolean;
31
+ /**
32
+ * Draws the dash for a box that stands for a partly selected set, and
33
+ * reports the box as mixed to a screen reader. It is the call site's to
34
+ * clear: a press still changes `isSelected` underneath.
35
+ * @default false
36
+ */
37
+ readonly isIndeterminate?: boolean;
38
+ /**
39
+ * Shows the state without letting a press change it.
40
+ * @default false
41
+ */
42
+ readonly isReadOnly?: boolean;
43
+ /**
44
+ * Whether the checkbox is selected, for a call site holding the state
45
+ * itself with `onChange`.
46
+ */
47
+ readonly isSelected?: boolean;
48
+ /** Called with the new state whenever a press changes it. */
49
+ readonly onChange?: (isSelected: boolean) => void;
50
+ readonly ref?: Ref<View>;
51
+ readonly style?: StyleProp<ViewStyle>;
52
+ };
53
+ /**
54
+ * A checkbox with its label, and optionally a description or an error under
55
+ * it. Its state is React Stately's, as web's is: pass `isSelected` with
56
+ * `onChange` to control it, or `defaultSelected` to let it keep its own.
57
+ * `isIndeterminate` draws the dash for a box that stands for a partly
58
+ * selected set.
59
+ *
60
+ * ```tsx
61
+ * <Checkbox defaultSelected description="Supporting line">
62
+ * Label
63
+ * </Checkbox>
64
+ * ```
65
+ *
66
+ * A screen reader hears it as a checkbox named by its label, checked,
67
+ * unchecked or mixed, followed by the line under it. A press anywhere on the
68
+ * box or the label toggles it, and the row takes presses over the 48dp target
69
+ * the page asks of the box. `style`, `ref` and `testID` land on the view
70
+ * holding the row and the line under it, which is the element a layout
71
+ * positions.
72
+ */
73
+ declare function Checkbox({ 'aria-label': ariaLabel, children, defaultSelected, description, error, isDisabled, isIndeterminate, isReadOnly, isSelected, onChange, style, ...props }: CheckboxProps): import("react").JSX.Element;
74
+ //#endregion
75
+ export { Checkbox, type CheckboxProps };
76
+ //# sourceMappingURL=index.d.ts.map