@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 @@
1
+ {"version":3,"file":"index.js","names":["ReactNode","StyleProp","TextStyle","ViewProps","ViewStyle","Text","NativeText","Platform","View","useTheme","composeStyles","useTypeRole","controlStylesOf","LAYER_SIZE","ControlLabelProps","children","isDisabled","ControlMessageProps","description","error","id","style","DescribedBy","Pick","HIDDEN","accessibilityElementsHidden","importantForAccessibility","ControlLabel","t0","$","_c","t1","undefined","theme","own","role","T0","t2","label","labelDisabled","t3","ControlMessage","messageOf","message","OS","messages","T1","t4","messageError","t5","t6","describedBy","accessibilityHint","_c","NativeText"],"sources":["../../src/control/index.tsx"],"sourcesContent":["import type { ReactNode } from 'react'\nimport type { StyleProp, TextStyle, ViewProps, ViewStyle } from 'react-native'\n\nimport { Text as NativeText, Platform, View } from 'react-native'\n\nimport { useTheme } from '../theme/scope'\nimport { composeStyles } from '../theme/styles'\nimport { useTypeRole } from '../typography/roles'\nimport { controlStylesOf, LAYER_SIZE } from './styles'\n\ntype ControlLabelProps = {\n /** The label's text. Nothing renders when there is none. */\n readonly children?: ReactNode\n /**\n * Fades the label to the disabled content colour.\n * @default false\n */\n readonly isDisabled?: boolean\n}\n\ntype ControlMessageProps = {\n /** The hint, which the error replaces while there is one. */\n readonly description?: string | undefined\n /** The problem with the control's value, in words. */\n readonly error?: string | undefined\n /** The id the control names the message by under React Native Web. */\n readonly id: string\n /**\n * Over the line's own style, for a control wider than the 40dp layer the\n * line is set past by default: a switch's 52dp track.\n */\n readonly style?: StyleProp<ViewStyle>\n}\n\n/** How the control names the line under it to a screen reader. */\ntype DescribedBy = Pick<ViewProps, 'accessibilityHint'> & {\n readonly 'aria-describedby'?: string\n}\n\n// What hides the line under a control on iOS and Android, where the control\n// reads it out as its hint.\nconst HIDDEN: ViewProps = {\n accessibilityElementsHidden: true,\n importantForAccessibility: 'no-hide-descendants',\n}\n\n/**\n * The label beside a selection control, set in body large. Renders nothing\n * without children, which is what a control labelled some other way, by\n * `aria-label` or a group's label, needs.\n */\nfunction ControlLabel({ children, isDisabled = false }: ControlLabelProps) {\n const theme = useTheme()\n const own = controlStylesOf(theme)\n const role = useTypeRole('bodyLarge')\n\n if (children === undefined) {\n return null\n }\n\n return (\n <NativeText\n style={composeStyles<TextStyle>(\n role,\n own.label,\n isDisabled ? own.labelDisabled : undefined,\n )}\n >\n {children}\n </NativeText>\n )\n}\n\n/**\n * The line under a selection control's label: the error while there is one,\n * otherwise the description, so the two never stack. Renders nothing when\n * there is neither. Hand the control `describedBy(id, message)` with the same\n * `id`, so a screen reader reads the line with the control.\n */\nfunction ControlMessage({\n description,\n error,\n id,\n style,\n}: ControlMessageProps) {\n const theme = useTheme()\n const own = controlStylesOf(theme)\n const role = useTypeRole('bodySmall')\n const message = messageOf(description, error)\n\n if (message === undefined) {\n return null\n }\n\n return (\n <View\n {...(Platform.OS === 'web' ? undefined : HIDDEN)}\n style={composeStyles<ViewStyle>(own.messages, style)}\n >\n <NativeText\n id={id}\n style={composeStyles<TextStyle>(\n role,\n own.message,\n error === undefined ? undefined : own.messageError,\n )}\n >\n {message}\n </NativeText>\n </View>\n )\n}\n\n/**\n * How a control is described by the line under it, to spread onto the\n * control. On iOS and Android the message is the control's accessibility\n * hint, which VoiceOver and TalkBack read after its name and state, and\n * `ControlMessage` hides the line itself from them so it is not read twice.\n * React Native Web drops the hint, so there the control points at the line\n * with `aria-describedby`, as web's controls do.\n */\nfunction describedBy(id: string, message: string | undefined): DescribedBy {\n return Platform.OS === 'web'\n ? { 'aria-describedby': message === undefined ? undefined : id }\n : { accessibilityHint: message }\n}\n\n/**\n * What the line under a control says: the error while there is one,\n * otherwise the description, and nothing for an empty string.\n */\nfunction messageOf(description: string | undefined, error: string | undefined) {\n const message = error ?? description\n return message === '' ? undefined : message\n}\n\nexport { ControlLabel, ControlMessage, describedBy, LAYER_SIZE, messageOf }\nexport type { ControlLabelProps, ControlMessageProps }\n"],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import { themedStyles } from "../theme/styles.js";
2
+ import { withOpacity } from "../theme/color.js";
3
+ import { StyleSheet } from "react-native";
4
+ const controlStylesOf = themedStyles(({ colors, radii, spacing, stateLayerOpacity, typography }) => StyleSheet.create({
5
+ disc: {
6
+ alignItems: "center",
7
+ borderRadius: radii.circle,
8
+ flexShrink: 0,
9
+ height: 40,
10
+ justifyContent: "center",
11
+ width: 40
12
+ },
13
+ label: {
14
+ color: colors.onSurface,
15
+ flexShrink: 1,
16
+ minWidth: 0,
17
+ paddingVertical: Math.max(0, (40 - typography.bodyLargeLineHeight) / 2)
18
+ },
19
+ labelDisabled: { color: withOpacity(colors.onSurface, stateLayerOpacity.disabledContent) },
20
+ message: { color: colors.onSurfaceVariant },
21
+ messageError: { color: colors.error },
22
+ messages: {
23
+ marginStart: 40 + spacing.sm,
24
+ marginTop: spacing.xs
25
+ },
26
+ row: {
27
+ alignItems: "flex-start",
28
+ columnGap: spacing.sm,
29
+ flexDirection: "row",
30
+ minHeight: 40
31
+ }
32
+ }));
33
+ //#endregion
34
+ export { controlStylesOf };
35
+
36
+ //# sourceMappingURL=styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.js","names":["StyleSheet","withOpacity","themedStyles","LAYER_SIZE","controlStylesOf","colors","radii","spacing","stateLayerOpacity","typography","create","disc","alignItems","borderRadius","circle","flexShrink","height","justifyContent","width","label","color","onSurface","minWidth","paddingVertical","Math","max","bodyLargeLineHeight","labelDisabled","disabledContent","message","onSurfaceVariant","messageError","error","messages","marginStart","sm","marginTop","xs","row","columnGap","flexDirection","minHeight"],"sources":["../../src/control/styles.ts"],"sourcesContent":["import { StyleSheet } from 'react-native'\n\nimport { withOpacity } from '../theme/color'\nimport { themedStyles } from '../theme/styles'\n\n// The row a selection control draws, as web's src/control draws it for\n// Checkbox, Radio and Switch alike: the control's 40dp state layer, the\n// body-large label beside it, and the description or error under the label\n// rather than under the control.\n//\n// The pages give two sizes, a 40dp state layer and a 48dp target. The layer\n// is drawn; the target is the `hitSlop` the control takes, which reaches the\n// 4dp past the layer each way without moving anything. Literals, as on web:\n// they are one page's layer and one page's target rather than steps of the\n// control scale, and a theme resizing its buttons should move neither.\nconst LAYER_SIZE = 40\n\nconst controlStylesOf = themedStyles(\n ({ colors, radii, spacing, stateLayerOpacity, typography }) =>\n StyleSheet.create({\n // The 40dp state layer, which centres what the control draws in it.\n disc: {\n alignItems: 'center',\n borderRadius: radii.circle,\n flexShrink: 0,\n height: LAYER_SIZE,\n justifyContent: 'center',\n width: LAYER_SIZE,\n },\n // Centres the label's first line on the layer, whether the label is\n // one line or wraps to several: half of what the layer has spare over\n // one body-large line, rather than a step of the spacing scale, which\n // is that half only under the default tokens. A line taller than the\n // layer has no room to centre in, and the padding falls to nothing.\n //\n // `minWidth: 0` is for React Native Web, where a text in a row keeps\n // CSS's automatic minimum, the width of its longest word, so a label\n // with nowhere to break ran past the row rather than breaking inside\n // it. Yoga has no such minimum, so on a device it changes nothing.\n label: {\n color: colors.onSurface,\n flexShrink: 1,\n minWidth: 0,\n paddingVertical: Math.max(\n 0,\n (LAYER_SIZE - typography.bodyLargeLineHeight) / 2,\n ),\n },\n labelDisabled: {\n color: withOpacity(colors.onSurface, stateLayerOpacity.disabledContent),\n },\n message: {\n color: colors.onSurfaceVariant,\n },\n messageError: {\n color: colors.error,\n },\n // Under the label rather than under the control, so it starts where\n // the label's text does, on whichever side the layout starts from.\n messages: {\n marginStart: LAYER_SIZE + spacing.sm,\n marginTop: spacing.xs,\n },\n // The control, then the label. The row is at least the layer's\n // height and grows with a label that wraps or a larger text size.\n row: {\n alignItems: 'flex-start',\n columnGap: spacing.sm,\n flexDirection: 'row',\n minHeight: LAYER_SIZE,\n },\n }),\n)\n\nexport { controlStylesOf, LAYER_SIZE }\n"],"mappings":";;;AAiBA,MAAMI,kBAAkBF,cACrB,EAAEG,QAAQC,OAAOC,SAASC,mBAAmBC,iBAC5CT,WAAWU,OAAO;CAEhBC,MAAM;EACJC,YAAY;EACZC,cAAcP,MAAMQ;EACpBC,YAAY;EACZC,QAAAA;EACAC,gBAAgB;EAChBC,OAAAA;CACF;CAWAC,OAAO;EACLC,OAAOf,OAAOgB;EACdN,YAAY;EACZO,UAAU;EACVC,iBAAiBC,KAAKC,IACpB,IAAA,KACchB,WAAWiB,uBAAuB,CAClD;CACF;CACAC,eAAe,EACbP,OAAOnB,YAAYI,OAAOgB,WAAWb,kBAAkBoB,eAAe,EACxE;CACAC,SAAS,EACPT,OAAOf,OAAOyB,iBAChB;CACAC,cAAc,EACZX,OAAOf,OAAO2B,MAChB;CAGAC,UAAU;EACRC,aAAAA,KAA0B3B,QAAQ4B;EAClCC,WAAW7B,QAAQ8B;CACrB;CAGAC,KAAK;EACH1B,YAAY;EACZ2B,WAAWhC,QAAQ4B;EACnBK,eAAe;EACfC,WAAAA;CACF;AACF,CAAC,CACL"}
@@ -0,0 +1,13 @@
1
+ import { StyleProp, TextInput, TextInputProps, ViewStyle } from "react-native";
2
+ import { ReactNode, Ref } from "react";
3
+ import "react-native-reanimated";
4
+ //#region src/field/index.d.ts
5
+ /**
6
+ * The filled box, or the outlined one: no fill, an outline that thickens and
7
+ * takes the primary role while focused, and the label cutting it once it
8
+ * floats, the text fields page's two fields.
9
+ */
10
+ type FieldVariant = 'filled' | 'outlined';
11
+ //#endregion
12
+ export type { FieldVariant };
13
+ //# sourceMappingURL=index.d.ts.map