@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.
- package/index.d.ts +2 -0
- package/index.js +7914 -0
- package/lib/components/alert-banner/alert-banner.d.ts +11 -0
- package/lib/components/alert-banner/alert-level-flags.d.ts +13 -0
- package/lib/components/alert-banner/index.d.ts +1 -0
- package/lib/components/badge/badge-type-flags.d.ts +18 -0
- package/lib/components/badge/badge.d.ts +5 -0
- package/lib/components/badge/index.d.ts +1 -0
- package/{src/lib/components/card/atoms/card-frame.tsx → lib/components/card/atoms/card-frame.d.ts} +7 -17
- package/lib/components/card/atoms/index.d.ts +1 -0
- package/lib/components/card/card.d.ts +14 -0
- package/lib/components/card/components/card-alert-banner-slot.d.ts +5 -0
- package/lib/components/card/components/card-controls-slot.d.ts +4 -0
- package/lib/components/card/components/card-section-slot.d.ts +11 -0
- package/lib/components/card/components/index.d.ts +3 -0
- package/lib/components/card/index.d.ts +2 -0
- package/lib/components/card/molecules/index.d.ts +1 -0
- package/lib/components/card/molecules/left-right-card.d.ts +16 -0
- package/lib/components/checkbox/checkbox.d.ts +10 -0
- package/lib/components/checkbox/helpers.d.ts +12 -0
- package/lib/components/checkbox/index.d.ts +1 -0
- package/lib/components/divider/divider-type-flags.d.ts +9 -0
- package/lib/components/divider/divider.d.ts +7 -0
- package/lib/components/divider/index.d.ts +1 -0
- package/lib/components/flag/flag-size-flags.d.ts +12 -0
- package/lib/components/flag/flag.d.ts +9 -0
- package/lib/components/flag/flag.list.d.ts +781 -0
- package/lib/components/flag/index.d.ts +1 -0
- package/lib/components/icon/icon-list.d.ts +131 -0
- package/lib/components/icon/icon.d.ts +131 -0
- package/lib/components/icon/index.d.ts +1 -0
- package/lib/components/index.d.ts +17 -0
- package/lib/components/input-field/components/index.d.ts +2 -0
- package/lib/components/input-field/components/labeled-input.d.ts +10 -0
- package/lib/components/input-field/components/stepper.d.ts +7 -0
- package/lib/components/input-field/index.d.ts +3 -0
- package/lib/components/input-field/input-field.d.ts +25 -0
- package/lib/components/input-field/input-number.d.ts +18 -0
- package/lib/components/input-field/input-text.d.ts +14 -0
- package/lib/components/layout/flex.d.ts +16 -0
- package/lib/components/layout/grid-layout.d.ts +11 -0
- package/lib/components/layout/index.d.ts +3 -0
- package/lib/components/layout/left-right-layout.d.ts +34 -0
- package/lib/components/link/index.d.ts +1 -0
- package/lib/components/link/link.d.ts +14 -0
- package/lib/components/molecules/avatar/avatar-size-flags.d.ts +12 -0
- package/lib/components/molecules/avatar/avatar.d.ts +12 -0
- package/lib/components/molecules/avatar/index.d.ts +1 -0
- package/lib/components/molecules/button/button-flags.d.ts +44 -0
- package/lib/components/molecules/button/button.d.ts +12 -0
- package/lib/components/molecules/button/index.d.ts +1 -0
- package/lib/components/molecules/index.d.ts +3 -0
- package/lib/components/molecules/input-checkbox/index.d.ts +1 -0
- package/lib/components/molecules/input-checkbox/input-checkbox.d.ts +8 -0
- package/lib/components/organisms/index.d.ts +1 -0
- package/lib/components/organisms/multi-choice-list/index.d.ts +1 -0
- package/lib/components/organisms/multi-choice-list/multi-choice-list.d.ts +10 -0
- package/lib/components/spinner/index.d.ts +1 -0
- package/lib/components/spinner/spinner-size-flags.d.ts +10 -0
- package/lib/components/spinner/spinner.d.ts +9 -0
- package/lib/components/tabs/components/index.d.ts +1 -0
- package/lib/components/tabs/components/tab.d.ts +7 -0
- package/lib/components/tabs/index.d.ts +1 -0
- package/lib/components/tabs/tabs.d.ts +15 -0
- package/lib/components/tag/components/close-button.d.ts +8 -0
- package/lib/components/tag/components/index.d.ts +2 -0
- package/lib/components/tag/components/tag-label.d.ts +8 -0
- package/lib/components/tag/index.d.ts +1 -0
- package/lib/components/tag/tag.d.ts +10 -0
- package/lib/components/thumbnail/index.d.ts +1 -0
- package/lib/components/thumbnail/thumbnail-size-flags.d.ts +10 -0
- package/lib/components/thumbnail/thumbnail.d.ts +10 -0
- package/lib/components/typography/index.d.ts +1 -0
- package/lib/components/typography/typography.d.ts +24 -0
- package/lib/foundations/color-system/base-palette/base-palette.d.ts +76 -0
- package/lib/foundations/color-system/base-palette/index.d.ts +1 -0
- package/lib/foundations/color-system/color-guidelines/color-guidelines.d.ts +132 -0
- package/lib/foundations/color-system/color-guidelines/index.d.ts +1 -0
- package/lib/foundations/color-system/components/color-sample.d.ts +17 -0
- package/lib/foundations/color-system/components/index.d.ts +1 -0
- package/lib/foundations/color-system/index.d.ts +1 -0
- package/lib/foundations/index.d.ts +4 -0
- package/lib/foundations/shadows/components.d.ts +8 -0
- package/lib/foundations/shadows/index.d.ts +1 -0
- package/lib/foundations/shadows/shadows.d.ts +8 -0
- package/lib/foundations/spacing/index.d.ts +1 -0
- package/lib/foundations/spacing/spacing-guidelines.d.ts +22 -0
- package/lib/foundations/spacing/spacing.d.ts +18 -0
- package/lib/foundations/typography/constants.d.ts +22 -0
- package/lib/foundations/typography/fonts.d.ts +1 -0
- package/lib/foundations/typography/index.d.ts +1 -0
- package/lib/foundations/typography/text-aspect-flags.d.ts +19 -0
- package/lib/foundations/typography/typography.d.ts +24 -0
- package/lib/helpers/generic-types.d.ts +21 -0
- package/lib/helpers/index.d.ts +6 -0
- package/lib/helpers/nothing.d.ts +8 -0
- package/{src/lib/helpers/numbers.ts → lib/helpers/numbers.d.ts} +50 -53
- package/lib/helpers/safe-navigation.d.ts +15 -0
- package/lib/helpers/slots.d.ts +23 -0
- package/lib/helpers/strings.d.ts +1 -0
- package/package.json +12 -5
- package/.babelrc +0 -12
- package/.eslintrc.json +0 -139
- package/.storybook/main.js +0 -57
- package/.storybook/manager.js +0 -7
- package/.storybook/preview-head.html +0 -1
- package/.storybook/preview.js +0 -15
- package/.storybook/tsconfig.json +0 -30
- package/jest.config.ts +0 -15
- package/jest.setup.ts +0 -2
- package/project.json +0 -85
- package/release-it.json +0 -18
- package/src/assets/svg/example_icon.svg +0 -3
- package/src/assets/svg/example_icon_white.svg +0 -3
- package/src/assets/svg/spinner.svg +0 -3
- package/src/assets/svg/spinner_white.svg +0 -3
- package/src/helpers/index.ts +0 -3
- package/src/helpers/talesOf.tsx +0 -42
- package/src/index.ts +0 -2
- package/src/lib/components/README.md +0 -49
- package/src/lib/components/alert-banner/alert-banner.tsx +0 -34
- package/src/lib/components/alert-banner/alert-level-flags.ts +0 -77
- package/src/lib/components/alert-banner/index.ts +0 -1
- package/src/lib/components/badge/badge-type-flags.ts +0 -72
- package/src/lib/components/badge/badge.stories.tsx +0 -16
- package/src/lib/components/badge/badge.test.tsx +0 -29
- package/src/lib/components/badge/badge.tsx +0 -31
- package/src/lib/components/badge/index.ts +0 -1
- package/src/lib/components/card/atoms/index.ts +0 -1
- package/src/lib/components/card/card.test.tsx +0 -163
- package/src/lib/components/card/card.tsx +0 -78
- package/src/lib/components/card/components/card-alert-banner-slot.tsx +0 -16
- package/src/lib/components/card/components/card-controls-slot.tsx +0 -19
- package/src/lib/components/card/components/card-section-slot.tsx +0 -51
- package/src/lib/components/card/components/index.ts +0 -3
- package/src/lib/components/card/index.ts +0 -2
- package/src/lib/components/card/molecules/index.ts +0 -1
- package/src/lib/components/card/molecules/left-right-card.test.tsx +0 -89
- package/src/lib/components/card/molecules/left-right-card.tsx +0 -63
- package/src/lib/components/card/storybook/card.stories.mdx +0 -100
- package/src/lib/components/card/storybook/components.tsx +0 -240
- package/src/lib/components/checkbox/checkbox.test.tsx +0 -39
- package/src/lib/components/checkbox/checkbox.tsx +0 -124
- package/src/lib/components/checkbox/components/components.tsx +0 -59
- package/src/lib/components/checkbox/index.tsx +0 -1
- package/src/lib/components/checkbox/stories/checkbox.stories.mdx +0 -54
- package/src/lib/components/checkbox/stories/components.tsx +0 -36
- package/src/lib/components/checkbox/stories/index.tsx +0 -1
- package/src/lib/components/divider/divider-type-flags.tsx +0 -37
- package/src/lib/components/divider/divider.test.tsx +0 -34
- package/src/lib/components/divider/divider.tsx +0 -37
- package/src/lib/components/divider/index.tsx +0 -1
- package/src/lib/components/divider/stories/components.tsx +0 -13
- package/src/lib/components/divider/stories/divider.stories.mdx +0 -50
- package/src/lib/components/index.ts +0 -14
- package/src/lib/components/input-field/components/index.ts +0 -2
- package/src/lib/components/input-field/components/labeled-input.tsx +0 -61
- package/src/lib/components/input-field/components/stepper.tsx +0 -59
- package/src/lib/components/input-field/index.ts +0 -6
- package/src/lib/components/input-field/input-field.test.tsx +0 -108
- package/src/lib/components/input-field/input-field.tsx +0 -126
- package/src/lib/components/input-field/input-number.tsx +0 -41
- package/src/lib/components/input-field/input-text.tsx +0 -30
- package/src/lib/components/input-field/storybook/components.tsx +0 -334
- package/src/lib/components/input-field/storybook/input-field.stories.mdx +0 -113
- package/src/lib/components/layout/flex.tsx +0 -22
- package/src/lib/components/layout/grid-layout.tsx +0 -40
- package/src/lib/components/layout/index.ts +0 -3
- package/src/lib/components/layout/left-right-layout.tsx +0 -67
- package/src/lib/components/link/index.ts +0 -1
- package/src/lib/components/link/link.test.tsx +0 -29
- package/src/lib/components/link/link.tsx +0 -56
- package/src/lib/components/link/storybook/link.stories.mdx +0 -51
- package/src/lib/components/molecules/avatar/avatar-size-flags.tsx +0 -55
- package/src/lib/components/molecules/avatar/avatar.test.tsx +0 -114
- package/src/lib/components/molecules/avatar/avatar.tsx +0 -80
- package/src/lib/components/molecules/avatar/index.tsx +0 -1
- package/src/lib/components/molecules/avatar/stories/avatar.stories.mdx +0 -55
- package/src/lib/components/molecules/avatar/stories/components.tsx +0 -36
- package/src/lib/components/molecules/button/button-flags.tsx +0 -235
- package/src/lib/components/molecules/button/button.test.tsx +0 -77
- package/src/lib/components/molecules/button/button.tsx +0 -231
- package/src/lib/components/molecules/button/index.tsx +0 -1
- package/src/lib/components/molecules/button/stories/button.stories.mdx +0 -104
- package/src/lib/components/molecules/button/stories/components.tsx +0 -86
- package/src/lib/components/molecules/index.ts +0 -3
- package/src/lib/components/molecules/input-checkbox/index.tsx +0 -1
- package/src/lib/components/molecules/input-checkbox/input-checkbox.test.tsx +0 -34
- package/src/lib/components/molecules/input-checkbox/input-checkbox.tsx +0 -50
- package/src/lib/components/molecules/input-checkbox/stories/components.tsx +0 -36
- package/src/lib/components/molecules/input-checkbox/stories/index.tsx +0 -1
- package/src/lib/components/molecules/input-checkbox/stories/input-checkbox.stories.mdx +0 -51
- package/src/lib/components/organisms/index.ts +0 -1
- package/src/lib/components/organisms/multi-choice-list/index.tsx +0 -1
- package/src/lib/components/organisms/multi-choice-list/multi-choice-list.test.tsx +0 -33
- package/src/lib/components/organisms/multi-choice-list/multi-choice-list.tsx +0 -53
- package/src/lib/components/organisms/multi-choice-list/stories/components.tsx +0 -126
- package/src/lib/components/organisms/multi-choice-list/stories/index.tsx +0 -1
- package/src/lib/components/organisms/multi-choice-list/stories/multi-choice-list.stories.mdx +0 -99
- package/src/lib/components/spinner/index.tsx +0 -1
- package/src/lib/components/spinner/spinner-size-flags.tsx +0 -39
- package/src/lib/components/spinner/spinner.test.tsx +0 -31
- package/src/lib/components/spinner/spinner.tsx +0 -67
- package/src/lib/components/spinner/stories/components.tsx +0 -8
- package/src/lib/components/spinner/stories/spinner.stories.mdx +0 -42
- package/src/lib/components/thumbnail/index.tsx +0 -1
- package/src/lib/components/thumbnail/stories/thumbnail.stories.mdx +0 -34
- package/src/lib/components/thumbnail/thumbnail-size-flags.tsx +0 -41
- package/src/lib/components/thumbnail/thumbnail.test.tsx +0 -51
- package/src/lib/components/thumbnail/thumbnail.tsx +0 -40
- package/src/lib/components/typography/index.ts +0 -1
- package/src/lib/components/typography/storybook/components.tsx +0 -256
- package/src/lib/components/typography/storybook/typography.stories.mdx +0 -88
- package/src/lib/components/typography/typography.test.tsx +0 -93
- package/src/lib/components/typography/typography.tsx +0 -57
- package/src/lib/foundations/color-system/base-palette/base-palette.stories.tsx +0 -123
- package/src/lib/foundations/color-system/base-palette/base-palette.ts +0 -94
- package/src/lib/foundations/color-system/base-palette/index.ts +0 -1
- package/src/lib/foundations/color-system/color-guidelines/color-guidelines.stories.mdx +0 -85
- package/src/lib/foundations/color-system/color-guidelines/color-guidelines.stories.tsx +0 -231
- package/src/lib/foundations/color-system/color-guidelines/color-guidelines.ts +0 -159
- package/src/lib/foundations/color-system/color-guidelines/index.ts +0 -1
- package/src/lib/foundations/color-system/components/color-sample.tsx +0 -99
- package/src/lib/foundations/color-system/components/index.ts +0 -1
- package/src/lib/foundations/color-system/index.ts +0 -1
- package/src/lib/foundations/index.ts +0 -4
- package/src/lib/foundations/shadows/components.tsx +0 -59
- package/src/lib/foundations/shadows/index.ts +0 -1
- package/src/lib/foundations/shadows/shadows.stories.mdx +0 -71
- package/src/lib/foundations/shadows/shadows.tsx +0 -47
- package/src/lib/foundations/spacing/index.ts +0 -1
- package/src/lib/foundations/spacing/spacing-guidelines.ts +0 -24
- package/src/lib/foundations/spacing/spacing.stories.mdx +0 -51
- package/src/lib/foundations/spacing/spacing.ts +0 -18
- package/src/lib/foundations/typography/constants.ts +0 -25
- package/src/lib/foundations/typography/index.tsx +0 -1
- package/src/lib/foundations/typography/text-aspect-flags.ts +0 -54
- package/src/lib/foundations/typography/typography.tsx +0 -97
- package/src/lib/helpers/generic-types.ts +0 -44
- package/src/lib/helpers/index.ts +0 -6
- package/src/lib/helpers/nothing.tsx +0 -18
- package/src/lib/helpers/safe-navigation.ts +0 -34
- package/src/lib/helpers/slots.tsx +0 -76
- package/src/lib/helpers/strings.test.ts +0 -47
- package/src/lib/helpers/strings.ts +0 -16
- package/tsconfig.json +0 -35
- package/tsconfig.lib.json +0 -28
- 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
|
-
}
|
package/src/lib/helpers/index.ts
DELETED
|
@@ -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
|
-
}
|
package/tsconfig.spec.json
DELETED
|
@@ -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
|
-
}
|