@edvisor/product-language 0.2.0 → 0.3.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 (248) hide show
  1. package/index.d.ts +2 -0
  2. package/index.js +7914 -0
  3. package/lib/components/alert-banner/alert-banner.d.ts +11 -0
  4. package/lib/components/alert-banner/alert-level-flags.d.ts +13 -0
  5. package/lib/components/alert-banner/index.d.ts +1 -0
  6. package/lib/components/badge/badge-type-flags.d.ts +18 -0
  7. package/lib/components/badge/badge.d.ts +5 -0
  8. package/lib/components/badge/index.d.ts +1 -0
  9. package/{src/lib/components/card/atoms/card-frame.tsx → lib/components/card/atoms/card-frame.d.ts} +7 -17
  10. package/lib/components/card/atoms/index.d.ts +1 -0
  11. package/lib/components/card/card.d.ts +14 -0
  12. package/lib/components/card/components/card-alert-banner-slot.d.ts +5 -0
  13. package/lib/components/card/components/card-controls-slot.d.ts +4 -0
  14. package/lib/components/card/components/card-section-slot.d.ts +11 -0
  15. package/lib/components/card/components/index.d.ts +3 -0
  16. package/lib/components/card/index.d.ts +2 -0
  17. package/lib/components/card/molecules/index.d.ts +1 -0
  18. package/lib/components/card/molecules/left-right-card.d.ts +16 -0
  19. package/lib/components/checkbox/checkbox.d.ts +10 -0
  20. package/lib/components/checkbox/helpers.d.ts +12 -0
  21. package/lib/components/checkbox/index.d.ts +1 -0
  22. package/lib/components/divider/divider-type-flags.d.ts +9 -0
  23. package/lib/components/divider/divider.d.ts +7 -0
  24. package/lib/components/divider/index.d.ts +1 -0
  25. package/lib/components/flag/flag-size-flags.d.ts +12 -0
  26. package/lib/components/flag/flag.d.ts +9 -0
  27. package/lib/components/flag/flag.list.d.ts +781 -0
  28. package/lib/components/flag/index.d.ts +1 -0
  29. package/lib/components/icon/icon-list.d.ts +131 -0
  30. package/lib/components/icon/icon.d.ts +131 -0
  31. package/lib/components/icon/index.d.ts +1 -0
  32. package/lib/components/index.d.ts +17 -0
  33. package/lib/components/input-field/components/index.d.ts +2 -0
  34. package/lib/components/input-field/components/labeled-input.d.ts +10 -0
  35. package/lib/components/input-field/components/stepper.d.ts +7 -0
  36. package/lib/components/input-field/index.d.ts +3 -0
  37. package/lib/components/input-field/input-field.d.ts +25 -0
  38. package/lib/components/input-field/input-number.d.ts +18 -0
  39. package/lib/components/input-field/input-text.d.ts +14 -0
  40. package/lib/components/layout/flex.d.ts +16 -0
  41. package/lib/components/layout/grid-layout.d.ts +11 -0
  42. package/lib/components/layout/index.d.ts +3 -0
  43. package/lib/components/layout/left-right-layout.d.ts +34 -0
  44. package/lib/components/link/index.d.ts +1 -0
  45. package/lib/components/link/link.d.ts +14 -0
  46. package/lib/components/molecules/avatar/avatar-size-flags.d.ts +12 -0
  47. package/lib/components/molecules/avatar/avatar.d.ts +12 -0
  48. package/lib/components/molecules/avatar/index.d.ts +1 -0
  49. package/lib/components/molecules/button/button-flags.d.ts +44 -0
  50. package/lib/components/molecules/button/button.d.ts +12 -0
  51. package/lib/components/molecules/button/index.d.ts +1 -0
  52. package/lib/components/molecules/index.d.ts +3 -0
  53. package/lib/components/molecules/input-checkbox/index.d.ts +1 -0
  54. package/lib/components/molecules/input-checkbox/input-checkbox.d.ts +8 -0
  55. package/lib/components/organisms/index.d.ts +1 -0
  56. package/lib/components/organisms/multi-choice-list/index.d.ts +1 -0
  57. package/lib/components/organisms/multi-choice-list/multi-choice-list.d.ts +10 -0
  58. package/lib/components/spinner/index.d.ts +1 -0
  59. package/lib/components/spinner/spinner-size-flags.d.ts +10 -0
  60. package/lib/components/spinner/spinner.d.ts +9 -0
  61. package/lib/components/tabs/components/index.d.ts +1 -0
  62. package/lib/components/tabs/components/tab.d.ts +7 -0
  63. package/lib/components/tabs/index.d.ts +1 -0
  64. package/lib/components/tabs/tabs.d.ts +15 -0
  65. package/lib/components/tag/components/close-button.d.ts +8 -0
  66. package/lib/components/tag/components/index.d.ts +2 -0
  67. package/lib/components/tag/components/tag-label.d.ts +8 -0
  68. package/lib/components/tag/index.d.ts +1 -0
  69. package/lib/components/tag/tag.d.ts +10 -0
  70. package/lib/components/thumbnail/index.d.ts +1 -0
  71. package/lib/components/thumbnail/thumbnail-size-flags.d.ts +10 -0
  72. package/lib/components/thumbnail/thumbnail.d.ts +10 -0
  73. package/lib/components/typography/index.d.ts +1 -0
  74. package/lib/components/typography/typography.d.ts +24 -0
  75. package/lib/foundations/color-system/base-palette/base-palette.d.ts +76 -0
  76. package/lib/foundations/color-system/base-palette/index.d.ts +1 -0
  77. package/lib/foundations/color-system/color-guidelines/color-guidelines.d.ts +132 -0
  78. package/lib/foundations/color-system/color-guidelines/index.d.ts +1 -0
  79. package/lib/foundations/color-system/components/color-sample.d.ts +17 -0
  80. package/lib/foundations/color-system/components/index.d.ts +1 -0
  81. package/lib/foundations/color-system/index.d.ts +1 -0
  82. package/lib/foundations/index.d.ts +4 -0
  83. package/lib/foundations/shadows/components.d.ts +8 -0
  84. package/lib/foundations/shadows/index.d.ts +1 -0
  85. package/lib/foundations/shadows/shadows.d.ts +8 -0
  86. package/lib/foundations/spacing/index.d.ts +1 -0
  87. package/lib/foundations/spacing/spacing-guidelines.d.ts +22 -0
  88. package/lib/foundations/spacing/spacing.d.ts +18 -0
  89. package/lib/foundations/typography/constants.d.ts +22 -0
  90. package/lib/foundations/typography/fonts.d.ts +1 -0
  91. package/lib/foundations/typography/index.d.ts +1 -0
  92. package/lib/foundations/typography/text-aspect-flags.d.ts +19 -0
  93. package/lib/foundations/typography/typography.d.ts +24 -0
  94. package/lib/helpers/generic-types.d.ts +21 -0
  95. package/lib/helpers/index.d.ts +6 -0
  96. package/lib/helpers/nothing.d.ts +8 -0
  97. package/{src/lib/helpers/numbers.ts → lib/helpers/numbers.d.ts} +50 -53
  98. package/lib/helpers/safe-navigation.d.ts +15 -0
  99. package/lib/helpers/slots.d.ts +23 -0
  100. package/lib/helpers/strings.d.ts +1 -0
  101. package/package.json +12 -5
  102. package/.babelrc +0 -12
  103. package/.eslintrc.json +0 -139
  104. package/.storybook/main.js +0 -57
  105. package/.storybook/manager.js +0 -7
  106. package/.storybook/preview-head.html +0 -1
  107. package/.storybook/preview.js +0 -15
  108. package/.storybook/tsconfig.json +0 -30
  109. package/jest.config.ts +0 -15
  110. package/jest.setup.ts +0 -2
  111. package/project.json +0 -85
  112. package/release-it.json +0 -18
  113. package/src/assets/svg/example_icon.svg +0 -3
  114. package/src/assets/svg/example_icon_white.svg +0 -3
  115. package/src/assets/svg/spinner.svg +0 -3
  116. package/src/assets/svg/spinner_white.svg +0 -3
  117. package/src/helpers/index.ts +0 -3
  118. package/src/helpers/talesOf.tsx +0 -42
  119. package/src/index.ts +0 -2
  120. package/src/lib/components/README.md +0 -49
  121. package/src/lib/components/alert-banner/alert-banner.tsx +0 -34
  122. package/src/lib/components/alert-banner/alert-level-flags.ts +0 -77
  123. package/src/lib/components/alert-banner/index.ts +0 -1
  124. package/src/lib/components/badge/badge-type-flags.ts +0 -72
  125. package/src/lib/components/badge/badge.stories.tsx +0 -16
  126. package/src/lib/components/badge/badge.test.tsx +0 -29
  127. package/src/lib/components/badge/badge.tsx +0 -31
  128. package/src/lib/components/badge/index.ts +0 -1
  129. package/src/lib/components/card/atoms/index.ts +0 -1
  130. package/src/lib/components/card/card.test.tsx +0 -163
  131. package/src/lib/components/card/card.tsx +0 -78
  132. package/src/lib/components/card/components/card-alert-banner-slot.tsx +0 -16
  133. package/src/lib/components/card/components/card-controls-slot.tsx +0 -19
  134. package/src/lib/components/card/components/card-section-slot.tsx +0 -51
  135. package/src/lib/components/card/components/index.ts +0 -3
  136. package/src/lib/components/card/index.ts +0 -2
  137. package/src/lib/components/card/molecules/index.ts +0 -1
  138. package/src/lib/components/card/molecules/left-right-card.test.tsx +0 -89
  139. package/src/lib/components/card/molecules/left-right-card.tsx +0 -63
  140. package/src/lib/components/card/storybook/card.stories.mdx +0 -100
  141. package/src/lib/components/card/storybook/components.tsx +0 -240
  142. package/src/lib/components/checkbox/checkbox.test.tsx +0 -39
  143. package/src/lib/components/checkbox/checkbox.tsx +0 -124
  144. package/src/lib/components/checkbox/components/components.tsx +0 -59
  145. package/src/lib/components/checkbox/index.tsx +0 -1
  146. package/src/lib/components/checkbox/stories/checkbox.stories.mdx +0 -54
  147. package/src/lib/components/checkbox/stories/components.tsx +0 -36
  148. package/src/lib/components/checkbox/stories/index.tsx +0 -1
  149. package/src/lib/components/divider/divider-type-flags.tsx +0 -37
  150. package/src/lib/components/divider/divider.test.tsx +0 -34
  151. package/src/lib/components/divider/divider.tsx +0 -37
  152. package/src/lib/components/divider/index.tsx +0 -1
  153. package/src/lib/components/divider/stories/components.tsx +0 -13
  154. package/src/lib/components/divider/stories/divider.stories.mdx +0 -50
  155. package/src/lib/components/index.ts +0 -14
  156. package/src/lib/components/input-field/components/index.ts +0 -2
  157. package/src/lib/components/input-field/components/labeled-input.tsx +0 -61
  158. package/src/lib/components/input-field/components/stepper.tsx +0 -59
  159. package/src/lib/components/input-field/index.ts +0 -6
  160. package/src/lib/components/input-field/input-field.test.tsx +0 -108
  161. package/src/lib/components/input-field/input-field.tsx +0 -126
  162. package/src/lib/components/input-field/input-number.tsx +0 -41
  163. package/src/lib/components/input-field/input-text.tsx +0 -30
  164. package/src/lib/components/input-field/storybook/components.tsx +0 -334
  165. package/src/lib/components/input-field/storybook/input-field.stories.mdx +0 -113
  166. package/src/lib/components/layout/flex.tsx +0 -22
  167. package/src/lib/components/layout/grid-layout.tsx +0 -40
  168. package/src/lib/components/layout/index.ts +0 -3
  169. package/src/lib/components/layout/left-right-layout.tsx +0 -67
  170. package/src/lib/components/link/index.ts +0 -1
  171. package/src/lib/components/link/link.test.tsx +0 -29
  172. package/src/lib/components/link/link.tsx +0 -56
  173. package/src/lib/components/link/storybook/link.stories.mdx +0 -51
  174. package/src/lib/components/molecules/avatar/avatar-size-flags.tsx +0 -55
  175. package/src/lib/components/molecules/avatar/avatar.test.tsx +0 -114
  176. package/src/lib/components/molecules/avatar/avatar.tsx +0 -80
  177. package/src/lib/components/molecules/avatar/index.tsx +0 -1
  178. package/src/lib/components/molecules/avatar/stories/avatar.stories.mdx +0 -55
  179. package/src/lib/components/molecules/avatar/stories/components.tsx +0 -36
  180. package/src/lib/components/molecules/button/button-flags.tsx +0 -235
  181. package/src/lib/components/molecules/button/button.test.tsx +0 -77
  182. package/src/lib/components/molecules/button/button.tsx +0 -231
  183. package/src/lib/components/molecules/button/index.tsx +0 -1
  184. package/src/lib/components/molecules/button/stories/button.stories.mdx +0 -104
  185. package/src/lib/components/molecules/button/stories/components.tsx +0 -86
  186. package/src/lib/components/molecules/index.ts +0 -3
  187. package/src/lib/components/molecules/input-checkbox/index.tsx +0 -1
  188. package/src/lib/components/molecules/input-checkbox/input-checkbox.test.tsx +0 -34
  189. package/src/lib/components/molecules/input-checkbox/input-checkbox.tsx +0 -50
  190. package/src/lib/components/molecules/input-checkbox/stories/components.tsx +0 -36
  191. package/src/lib/components/molecules/input-checkbox/stories/index.tsx +0 -1
  192. package/src/lib/components/molecules/input-checkbox/stories/input-checkbox.stories.mdx +0 -51
  193. package/src/lib/components/organisms/index.ts +0 -1
  194. package/src/lib/components/organisms/multi-choice-list/index.tsx +0 -1
  195. package/src/lib/components/organisms/multi-choice-list/multi-choice-list.test.tsx +0 -33
  196. package/src/lib/components/organisms/multi-choice-list/multi-choice-list.tsx +0 -53
  197. package/src/lib/components/organisms/multi-choice-list/stories/components.tsx +0 -126
  198. package/src/lib/components/organisms/multi-choice-list/stories/index.tsx +0 -1
  199. package/src/lib/components/organisms/multi-choice-list/stories/multi-choice-list.stories.mdx +0 -99
  200. package/src/lib/components/spinner/index.tsx +0 -1
  201. package/src/lib/components/spinner/spinner-size-flags.tsx +0 -39
  202. package/src/lib/components/spinner/spinner.test.tsx +0 -31
  203. package/src/lib/components/spinner/spinner.tsx +0 -67
  204. package/src/lib/components/spinner/stories/components.tsx +0 -8
  205. package/src/lib/components/spinner/stories/spinner.stories.mdx +0 -42
  206. package/src/lib/components/thumbnail/index.tsx +0 -1
  207. package/src/lib/components/thumbnail/stories/thumbnail.stories.mdx +0 -34
  208. package/src/lib/components/thumbnail/thumbnail-size-flags.tsx +0 -41
  209. package/src/lib/components/thumbnail/thumbnail.test.tsx +0 -51
  210. package/src/lib/components/thumbnail/thumbnail.tsx +0 -40
  211. package/src/lib/components/typography/index.ts +0 -1
  212. package/src/lib/components/typography/storybook/components.tsx +0 -256
  213. package/src/lib/components/typography/storybook/typography.stories.mdx +0 -88
  214. package/src/lib/components/typography/typography.test.tsx +0 -93
  215. package/src/lib/components/typography/typography.tsx +0 -57
  216. package/src/lib/foundations/color-system/base-palette/base-palette.stories.tsx +0 -123
  217. package/src/lib/foundations/color-system/base-palette/base-palette.ts +0 -94
  218. package/src/lib/foundations/color-system/base-palette/index.ts +0 -1
  219. package/src/lib/foundations/color-system/color-guidelines/color-guidelines.stories.mdx +0 -85
  220. package/src/lib/foundations/color-system/color-guidelines/color-guidelines.stories.tsx +0 -231
  221. package/src/lib/foundations/color-system/color-guidelines/color-guidelines.ts +0 -159
  222. package/src/lib/foundations/color-system/color-guidelines/index.ts +0 -1
  223. package/src/lib/foundations/color-system/components/color-sample.tsx +0 -99
  224. package/src/lib/foundations/color-system/components/index.ts +0 -1
  225. package/src/lib/foundations/color-system/index.ts +0 -1
  226. package/src/lib/foundations/index.ts +0 -4
  227. package/src/lib/foundations/shadows/components.tsx +0 -59
  228. package/src/lib/foundations/shadows/index.ts +0 -1
  229. package/src/lib/foundations/shadows/shadows.stories.mdx +0 -71
  230. package/src/lib/foundations/shadows/shadows.tsx +0 -47
  231. package/src/lib/foundations/spacing/index.ts +0 -1
  232. package/src/lib/foundations/spacing/spacing-guidelines.ts +0 -24
  233. package/src/lib/foundations/spacing/spacing.stories.mdx +0 -51
  234. package/src/lib/foundations/spacing/spacing.ts +0 -18
  235. package/src/lib/foundations/typography/constants.ts +0 -25
  236. package/src/lib/foundations/typography/index.tsx +0 -1
  237. package/src/lib/foundations/typography/text-aspect-flags.ts +0 -54
  238. package/src/lib/foundations/typography/typography.tsx +0 -97
  239. package/src/lib/helpers/generic-types.ts +0 -44
  240. package/src/lib/helpers/index.ts +0 -6
  241. package/src/lib/helpers/nothing.tsx +0 -18
  242. package/src/lib/helpers/safe-navigation.ts +0 -34
  243. package/src/lib/helpers/slots.tsx +0 -76
  244. package/src/lib/helpers/strings.test.ts +0 -47
  245. package/src/lib/helpers/strings.ts +0 -16
  246. package/tsconfig.json +0 -35
  247. package/tsconfig.lib.json +0 -28
  248. package/tsconfig.spec.json +0 -21
@@ -1,97 +0,0 @@
1
- import { css } from 'styled-components'
2
- import { getTextAspect, ITextAspectProps } from './text-aspect-flags'
3
- import { FontWeight, FontSize, LineHeight } from './constants'
4
- import { is } from '@helpers'
5
-
6
- export type ITextProps = ITextAspectProps & { emphasis?: boolean }
7
-
8
- const LightText = css`
9
- color: ${getTextAspect({ light: true })};
10
- `
11
-
12
- const Base = css<ITextProps>`
13
- color: ${(props) => getTextAspect(props)};
14
- font-family: 'Inter';
15
- `
16
-
17
- const Display = css<ITextProps>`
18
- ${Base}
19
- font-weight: ${FontWeight.Regular};
20
- font-size: ${FontSize.g};
21
- line-height: ${LineHeight.f};
22
- `
23
-
24
- const Heading1 = css<ITextProps>`
25
- ${Base}
26
- font-weight: ${FontWeight.SemiBold};
27
- font-size: ${FontSize.f};
28
- line-height: ${LineHeight.e};
29
- `
30
-
31
- const Heading2 = css<ITextProps>`
32
- ${Heading1}
33
- font-size: ${FontSize.e};
34
- line-height: ${LineHeight.d};
35
- `
36
-
37
- const Heading3 = css<ITextProps>`
38
- ${Heading1}
39
- font-size: ${FontSize.c};
40
- line-height: ${LineHeight.c};
41
- `
42
-
43
- const Heading4 = css<ITextProps>`
44
- ${Heading1}
45
- font-size: ${FontSize.b};
46
- line-height: ${LineHeight.b};
47
- `
48
-
49
- const BodyLarge = css<ITextProps>`
50
- ${Base}
51
- font-weight: ${({ emphasis }) => is(emphasis) ? FontWeight.SemiBold : FontWeight.Regular};
52
- font-size: ${FontSize.d};
53
- line-height: ${LineHeight.d};
54
- `
55
-
56
- const Body = css<ITextProps>`
57
- ${BodyLarge}
58
- font-weight: ${({ emphasis }) => is(emphasis) ? FontWeight.Medium : FontWeight.Regular};
59
- font-size: ${FontSize.b};
60
- line-height: ${LineHeight.b};
61
- `
62
-
63
- const Caption = css<ITextProps>`
64
- ${BodyLarge}
65
- font-size: ${FontSize.a};
66
- line-height: ${LineHeight.a};
67
- `
68
-
69
- const Label1 = css<ITextProps>`
70
- ${BodyLarge}
71
- font-weight: ${({ emphasis }) => is(emphasis) ? FontWeight.Medium : FontWeight.Regular};
72
- font-size: ${FontSize.b};
73
- line-height: ${LineHeight.b};
74
- `
75
-
76
- const Label2 = css<ITextProps>`
77
- ${BodyLarge}
78
- font-size: ${FontSize.a};
79
- line-height: ${LineHeight.a};
80
- `
81
-
82
- export const Typography = {
83
- Display,
84
- Heading1,
85
- Heading2,
86
- Heading3,
87
- Heading4,
88
- BodyLarge,
89
- Body,
90
- Caption,
91
- Label1,
92
- Label2,
93
- }
94
-
95
- export const _Typography = {
96
- LightText,
97
- }
@@ -1,44 +0,0 @@
1
- // eslint-disable-next-line no-restricted-syntax
2
- import React, { FC as FunctionComponent, ForwardRefExoticComponent, ForwardRefRenderFunction, PropsWithChildren as PWC, PropsWithoutRef, RefAttributes } from 'react'
3
- import { Slot } from './slots'
4
-
5
- /** @see https://stackoverflow.com/a/49725198/29182 */
6
- export type RequireOnlyOne<T, Keys extends keyof T = keyof T> = Pick<
7
- T,
8
- Exclude<keyof T, Keys>
9
- > &
10
- {
11
- [K in Keys]-?: Required<Pick<T, K>> &
12
- Partial<Record<Exclude<Keys, K>, undefined>>;
13
- }[Keys];
14
-
15
- export type MappedEnum<E, T> = {
16
- [key in keyof E]: T;
17
- }
18
-
19
- export type Values<T> = T[keyof T];
20
-
21
- export type PropsWithChildren<T = unknown> = PWC<T>
22
-
23
- // Our FC type adds the ability to specify sub-components such as Slots
24
- // also, just good to wrap imports from 3rd parties in general
25
- export type FC<
26
- // eslint-disable-next-line @typescript-eslint/ban-types
27
- P = {},
28
- // eslint-disable-next-line @typescript-eslint/ban-types
29
- E extends { [x: symbol]: FunctionComponent<PropsWithChildren> | typeof Slot } = {}
30
- > = FunctionComponent<P>
31
- & {
32
- [key in keyof E]: E[key]
33
- }
34
-
35
- // eslint-disable-next-line @typescript-eslint/ban-types
36
- type ExtensibleForwardRef<T, P = {}, E = {}> = ForwardRefExoticComponent<PropsWithoutRef<P> & RefAttributes<T>>
37
- & {
38
- [key in keyof E]: E[key]
39
- }
40
-
41
- // eslint-disable-next-line @typescript-eslint/ban-types
42
- export function forwardRef<T, P = {}, E = {}>(render: ForwardRefRenderFunction<T, P>): ExtensibleForwardRef<T, P, E> {
43
- return React.forwardRef(render) as ExtensibleForwardRef<T, P, E>
44
- }
@@ -1,6 +0,0 @@
1
- export * from './safe-navigation'
2
- export * from './slots'
3
- export * from './generic-types'
4
- export * from './numbers'
5
- export * from './nothing'
6
- export * from './strings'
@@ -1,18 +0,0 @@
1
- import { FC, PropsWithChildren } from './generic-types'
2
- import { isDefined } from './safe-navigation'
3
-
4
- // eslint-disable-next-line no-null/no-null
5
- export const Nothing: FC = () => null
6
-
7
- export function maybeRender<T>(prop: T, JSX: JSX.Element) {
8
- return isDefined(prop) && Boolean(prop) ? JSX : <Nothing />
9
- }
10
-
11
- interface IIfProps {
12
- is: unknown
13
- }
14
-
15
- export const If: FC<PropsWithChildren<IIfProps>> = (props) => {
16
- // eslint-disable-next-line react/jsx-no-useless-fragment
17
- return maybeRender(props.is, <>{props.children}</>)
18
- }
@@ -1,34 +0,0 @@
1
-
2
- /** even though we have null disabled in the repo,
3
- * I still would not want isNil to skip checking null
4
- * it is for juuuuust in case a third party sends us a null
5
- * or something, and the types are not correct
6
- */
7
-
8
- /* eslint-disable no-null/no-null */
9
- /* eslint-disable @typescript-eslint/ban-types */
10
-
11
- export function isNil<T>(value: T | undefined | null): value is undefined | null {
12
- return value === null || value === undefined
13
- }
14
-
15
- export function isDefined<T>(value: T | undefined | null): value is T {
16
- return !isNil(value)
17
- }
18
-
19
- export function defaultTo<T>(value: T | undefined | null, fallback: T): T {
20
- return isDefined(value) ? value : fallback
21
- }
22
-
23
- export function isEmpty<T extends { length: number }>(obj: T) {
24
- return obj.length < 1
25
- }
26
-
27
- /** used for evaluating tri-state logic (true | false | undefined) */
28
- export function is (pred?: boolean): boolean {
29
- return isDefined(pred) && pred
30
- }
31
-
32
- export function safeArray<T>(arr: T[] | undefined | null): T[] {
33
- return isDefined(arr) ? arr : []
34
- }
@@ -1,76 +0,0 @@
1
- import { Children, PureComponent, ReactElement, ReactNode } from 'react'
2
- import { PropsWithChildren } from './generic-types'
3
- import { isDefined, isNil } from './safe-navigation'
4
-
5
- /**
6
- * @TODO these aren't quiiiiite right
7
- *
8
- * They all say they return ReactNode but I feel like JSX.Element or something
9
- * is more accurate? The child type needs to include _anything react can render_
10
- * but it should also allow the caller to cloneElement on the results so that
11
- * they can do stuff like
12
- *
13
- * const sections = getSlots(Section, children)
14
- * .map((el, i) => i === 0 ? cloneElement(el, { first: true }) : el)
15
- *
16
- * Right? I want this...
17
- * */
18
-
19
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
20
- function isReactElement (obj?: any): obj is ReactElement {
21
- // eslint-disable-next-line no-prototype-builtins
22
- return isDefined(obj) && obj.hasOwnProperty('type')
23
- }
24
-
25
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
26
- const isSlotOfType = <T extends typeof Slot>(type: T) => (obj?: any): obj is T => {
27
- return isDefined(obj) && isReactElement(obj) && (Object.getPrototypeOf(obj.type) === type || obj.type === type)
28
- }
29
-
30
- const findSlotByType = <T extends typeof Slot>(type: T, children?: ReactNode): ReactNode => {
31
- return Children.toArray(children).find(isSlotOfType(type))
32
- }
33
-
34
- const filterSlotByType = <T extends typeof Slot>(type: T, children?: ReactNode): ReactNode[] => {
35
- return Children.toArray(children).filter(isSlotOfType(type))
36
- }
37
-
38
- export class Slot<T = unknown> extends PureComponent<PropsWithChildren<T>> {
39
- override render () {
40
- return this.props.children
41
- }
42
- }
43
-
44
- export function getChildren(children?: ReactNode): ReactNode[] {
45
- return Children.toArray(children).filter((child) => !isSlotOfType(Slot)(child))
46
- }
47
-
48
- export function getSlots<T extends typeof Slot>(slot: T, children?: ReactNode): ReactNode[] {
49
- const result = filterSlotByType(slot, children)
50
-
51
- if (isNil(result)) {
52
- return []
53
- }
54
-
55
- return result
56
- }
57
-
58
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
59
- function hasProps (obj: any): obj is { props: { children: ReactNode }} {
60
- // eslint-disable-next-line no-prototype-builtins
61
- return isDefined(obj) && obj.hasOwnProperty('props')
62
- }
63
-
64
- export function getSlot<T extends typeof Slot>(slot: T, children?: ReactNode): ReactNode {
65
- const result = findSlotByType(slot, children)
66
-
67
- if (isNil(result)) {
68
- return undefined
69
- }
70
-
71
- if (hasProps(result)) {
72
- return result
73
- }
74
-
75
- return result
76
- }
@@ -1,47 +0,0 @@
1
- import { toKebabCase } from './strings'
2
-
3
- describe('strings', () => {
4
- describe('toKebabCase', () => {
5
- it('sends camel case to kebab case', () => {
6
- const result = toKebabCase('helloMyFriends')
7
-
8
- expect(result).toBe('hello-my-friends')
9
- })
10
-
11
- it('sends leading caps to kebab case', () => {
12
- const result = toKebabCase('HelloMyFriends')
13
-
14
- expect(result).toBe('hello-my-friends')
15
- })
16
-
17
- it('respects numbers', () => {
18
- const result = toKebabCase('Section1IsGood')
19
-
20
- expect(result).toBe('section-1-is-good')
21
- })
22
-
23
- it('respects leading and trailing numbers', () => {
24
- const result = toKebabCase('1Section1')
25
-
26
- expect(result).toBe('1-section-1')
27
- })
28
-
29
- it('removes non-alphanumeric characters, such as whitespace and punctuation', () => {
30
- const result = toKebabCase('Help Text. Lorem Ipsum')
31
-
32
- expect(result).toBe('help-text-lorem-ipsum')
33
- })
34
-
35
- it('removes leading and trailing nonsense', () => {
36
- const result = toKebabCase('__Foo_Bar__')
37
-
38
- expect(result).toBe('foo-bar')
39
- })
40
-
41
- it('removes leading and trailing whitespace', () => {
42
- const result = toKebabCase(' . Foo_Bar_ _ . ')
43
-
44
- expect(result).toBe('foo-bar')
45
- })
46
- })
47
- })
@@ -1,16 +0,0 @@
1
- import { isDefined } from './safe-navigation'
2
-
3
- export const toKebabCase = (str: string) => {
4
- return isDefined(str)
5
- ? str
6
- .replace(/[^a-zA-Z0-9\\-]/g, ' ')
7
- .replace(/([a-z])([A-Z])/g, '$1-$2')
8
- .replace(/([0-9]+)(.*)/g, '$1-$2')
9
- .replace(/(.*)([0-9]+)/g, '$1-$2')
10
- .replace(/^[\s_]+/g, '')
11
- .replace(/[\s_]+$/g, '')
12
- .replace(/[\s_]+/g, '-')
13
- .replace(/[^a-zA-Z0-9\\-]/g, '')
14
- .toLowerCase()
15
- : ''
16
- }
package/tsconfig.json DELETED
@@ -1,35 +0,0 @@
1
- {
2
- "extends": "../../tsconfig.base.json",
3
- "compilerOptions": {
4
- "jsx": "react-jsx",
5
- "allowJs": true,
6
- "esModuleInterop": true,
7
- "allowSyntheticDefaultImports": true,
8
- "forceConsistentCasingInFileNames": true,
9
- "strict": true,
10
- "noImplicitOverride": true,
11
- "noPropertyAccessFromIndexSignature": true,
12
- "noImplicitReturns": true,
13
- "noFallthroughCasesInSwitch": true,
14
- "baseUrl": "./src/lib",
15
- "paths": {
16
- "@components": ["components/index.ts"],
17
- "@foundations": ["foundations/index.ts"],
18
- "@helpers": ["helpers/index.ts"],
19
- "@stories": ["../helpers/index.ts"],
20
- },
21
- },
22
- "files": [],
23
- "include": [],
24
- "references": [
25
- {
26
- "path": "./tsconfig.lib.json"
27
- },
28
- {
29
- "path": "./tsconfig.spec.json"
30
- },
31
- {
32
- "path": "./.storybook/tsconfig.json"
33
- }
34
- ]
35
- }
package/tsconfig.lib.json DELETED
@@ -1,28 +0,0 @@
1
- {
2
- "extends": "./tsconfig.json",
3
- "compilerOptions": {
4
- "outDir": "../../dist/out-tsc",
5
- "types": ["node"]
6
- },
7
- "files": [
8
- "../../node_modules/@nrwl/react/typings/cssmodule.d.ts",
9
- "../../node_modules/@nrwl/react/typings/image.d.ts"
10
- ],
11
- "exclude": [
12
- "jest.config.ts",
13
- "jest.setup.ts",
14
- "src/helpers/**",
15
- "**/storybook/**",
16
- "**/stories/**",
17
- "**/*.stories.*",
18
- "**/*.spec.ts",
19
- "**/*.test.ts",
20
- "**/*.spec.tsx",
21
- "**/*.test.tsx",
22
- "**/*.spec.js",
23
- "**/*.test.js",
24
- "**/*.spec.jsx",
25
- "**/*.test.jsx",
26
- ],
27
- "include": ["**/*.js", "**/*.jsx", "**/*.ts", "**/*.tsx"]
28
- }
@@ -1,21 +0,0 @@
1
- {
2
- "extends": "./tsconfig.json",
3
- "compilerOptions": {
4
- "outDir": "../../dist/out-tsc",
5
- "module": "commonjs",
6
- "types": ["jest", "node"]
7
- },
8
- "include": [
9
- "jest.config.ts",
10
- "jest.setup.ts",
11
- "**/*.test.ts",
12
- "**/*.spec.ts",
13
- "**/*.test.tsx",
14
- "**/*.spec.tsx",
15
- "**/*.test.js",
16
- "**/*.spec.js",
17
- "**/*.test.jsx",
18
- "**/*.spec.jsx",
19
- "**/*.d.ts"
20
- ]
21
- }