@edvisor/product-language 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.d.ts +2 -0
- package/index.js +9374 -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 +18 -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/select/components/menu-container.d.ts +3 -0
- package/lib/components/select/components/menu-row.d.ts +9 -0
- package/lib/components/select/components/menu.d.ts +2 -0
- package/lib/components/select/components/option.d.ts +10 -0
- package/lib/components/select/components/select-label.d.ts +1 -0
- package/lib/components/select/components/value-component-multi.d.ts +3 -0
- package/lib/components/select/components/value-component-single.d.ts +4 -0
- package/lib/components/select/components/value.d.ts +4 -0
- package/lib/components/select/index.d.ts +1 -0
- package/lib/components/select/select.d.ts +9 -0
- package/lib/components/select/types.d.ts +124 -0
- package/lib/components/select/utils.d.ts +15 -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 -67
- 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 -3
- package/.babelrc +0 -12
- package/.eslintrc.json +0 -147
- package/.storybook/main.js +0 -57
- package/.storybook/manager.js +0 -7
- 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 -96
- package/release-it.json +0 -18
- package/src/README.md +0 -61
- 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 -4
- package/src/helpers/playground.ts +0 -16
- 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.test.tsx +0 -29
- package/src/lib/components/badge/badge.tsx +0 -22
- package/src/lib/components/badge/index.ts +0 -1
- package/src/lib/components/badge/stories/badge.stories.mdx +0 -44
- package/src/lib/components/badge/stories/components.tsx +0 -49
- package/src/lib/components/card/atoms/index.ts +0 -1
- package/src/lib/components/card/card.test.tsx +0 -162
- 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 -223
- package/src/lib/components/checkbox/checkbox.test.tsx +0 -39
- package/src/lib/components/checkbox/checkbox.tsx +0 -63
- package/src/lib/components/checkbox/helpers.tsx +0 -100
- package/src/lib/components/checkbox/index.tsx +0 -1
- package/src/lib/components/checkbox/stories/checkbox.stories.mdx +0 -57
- package/src/lib/components/checkbox/stories/components.tsx +0 -84
- 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 -44
- package/src/lib/components/flag/flag-size-flags.tsx +0 -55
- package/src/lib/components/flag/flag.list.tsx +0 -788
- package/src/lib/components/flag/flag.test.tsx +0 -65
- package/src/lib/components/flag/flag.tsx +0 -97
- package/src/lib/components/flag/index.tsx +0 -1
- package/src/lib/components/flag/stories/components.tsx +0 -403
- package/src/lib/components/flag/stories/flag.stories.mdx +0 -48
- package/src/lib/components/flag/stories/playGround-select.tsx +0 -145
- package/src/lib/components/icon/icon-list.tsx +0 -135
- package/src/lib/components/icon/icon.test.tsx +0 -48
- package/src/lib/components/icon/icon.tsx +0 -181
- package/src/lib/components/icon/index.tsx +0 -1
- package/src/lib/components/icon/stories/components.tsx +0 -282
- package/src/lib/components/icon/stories/icon.stories.mdx +0 -65
- package/src/lib/components/index.ts +0 -19
- package/src/lib/components/input-field/components/index.ts +0 -2
- package/src/lib/components/input-field/components/labeled-input.tsx +0 -54
- package/src/lib/components/input-field/components/stepper.tsx +0 -60
- package/src/lib/components/input-field/index.ts +0 -6
- package/src/lib/components/input-field/input-field.test.tsx +0 -107
- 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 -327
- 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 -52
- 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 -52
- package/src/lib/components/molecules/avatar/stories/components.tsx +0 -36
- package/src/lib/components/molecules/button/button-flags.tsx +0 -340
- package/src/lib/components/molecules/button/button.test.tsx +0 -77
- package/src/lib/components/molecules/button/button.tsx +0 -214
- package/src/lib/components/molecules/button/index.tsx +0 -1
- package/src/lib/components/molecules/button/stories/button.stories.mdx +0 -105
- package/src/lib/components/molecules/button/stories/components.tsx +0 -84
- 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 -49
- package/src/lib/components/molecules/input-checkbox/stories/components.tsx +0 -53
- package/src/lib/components/molecules/input-checkbox/stories/input-checkbox.stories.mdx +0 -49
- 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 -52
- package/src/lib/components/organisms/multi-choice-list/stories/components.tsx +0 -124
- 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 -54
- package/src/lib/components/spinner/stories/components.tsx +0 -39
- package/src/lib/components/spinner/stories/spinner.stories.mdx +0 -35
- package/src/lib/components/tabs/components/index.ts +0 -1
- package/src/lib/components/tabs/components/tab.tsx +0 -62
- package/src/lib/components/tabs/index.tsx +0 -1
- package/src/lib/components/tabs/storybook/components.tsx +0 -282
- package/src/lib/components/tabs/storybook/tabs.stories.mdx +0 -97
- package/src/lib/components/tabs/tabs.test.tsx +0 -86
- package/src/lib/components/tabs/tabs.tsx +0 -101
- package/src/lib/components/tag/components/close-button.tsx +0 -85
- package/src/lib/components/tag/components/index.ts +0 -2
- package/src/lib/components/tag/components/tag-label.tsx +0 -44
- package/src/lib/components/tag/index.tsx +0 -1
- package/src/lib/components/tag/stories/components.tsx +0 -86
- package/src/lib/components/tag/stories/tag.stories.mdx +0 -42
- package/src/lib/components/tag/tag.test.tsx +0 -36
- package/src/lib/components/tag/tag.tsx +0 -33
- 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 -45
- package/src/lib/components/typography/index.ts +0 -1
- package/src/lib/components/typography/storybook/components.tsx +0 -288
- package/src/lib/components/typography/storybook/typography.stories.mdx +0 -90
- package/src/lib/components/typography/typography.test.tsx +0 -97
- package/src/lib/components/typography/typography.tsx +0 -99
- 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 -93
- 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 -160
- 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/fonts.ts +0 -205
- package/src/lib/foundations/typography/index.tsx +0 -1
- package/src/lib/foundations/typography/text-aspect-flags.ts +0 -61
- package/src/lib/foundations/typography/typography.tsx +0 -102
- 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 -44
- package/src/lib/helpers/slots.test.tsx +0 -98
- package/src/lib/helpers/slots.tsx +0 -157
- 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,157 +0,0 @@
|
|
|
1
|
-
import { Children, CSSProperties, PureComponent, ReactElement, ReactNode } from 'react'
|
|
2
|
-
import { StyledComponent } from 'styled-components'
|
|
3
|
-
import { FC, PropsWithChildren } from './generic-types'
|
|
4
|
-
import { Nothing } from './nothing'
|
|
5
|
-
import { isDefined, isNil } from './safe-navigation'
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* @TODO these aren't quiiiiite right
|
|
9
|
-
*
|
|
10
|
-
* They all say they return ReactNode but I feel like JSX.Element or something
|
|
11
|
-
* is more accurate? The child type needs to include _anything react can render_
|
|
12
|
-
* but it should also allow the caller to cloneElement on the results so that
|
|
13
|
-
* they can do stuff like
|
|
14
|
-
*
|
|
15
|
-
* const sections = getSlots(Section, children)
|
|
16
|
-
* .map((el, i) => i === 0 ? cloneElement(el, { first: true }) : el)
|
|
17
|
-
*
|
|
18
|
-
* Right? I want this...
|
|
19
|
-
* */
|
|
20
|
-
|
|
21
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
22
|
-
function isReactElement (obj?: any): obj is ReactElement {
|
|
23
|
-
// eslint-disable-next-line no-prototype-builtins
|
|
24
|
-
return isDefined(obj) && obj.hasOwnProperty('type')
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
export const isReactElementOfType =
|
|
28
|
-
<P extends PropsWithChildren>(
|
|
29
|
-
// eslint-disable-next-line @typescript-eslint/ban-types, @typescript-eslint/no-explicit-any
|
|
30
|
-
component: (StyledComponent<FC<P>, any> | FC<P> | typeof Slot) & {
|
|
31
|
-
// eslint-disable-next-line @typescript-eslint/ban-types, @typescript-eslint/no-explicit-any
|
|
32
|
-
target?: any
|
|
33
|
-
}
|
|
34
|
-
) =>
|
|
35
|
-
// eslint-disable-next-line @typescript-eslint/ban-types, @typescript-eslint/no-explicit-any
|
|
36
|
-
(element?: any): element is ReactElement<P> => {
|
|
37
|
-
/**
|
|
38
|
-
* I'm going to leave this as a big if/else instead of a compound expression to make
|
|
39
|
-
* it clear exactly what we are checking.
|
|
40
|
-
*/
|
|
41
|
-
if (element?.type === component) {
|
|
42
|
-
// component is a function or a class, and element is an element of that type
|
|
43
|
-
return true
|
|
44
|
-
} else if (element?.type?.target === component) {
|
|
45
|
-
// element is a styled element of the given component
|
|
46
|
-
// so we have to look at what it is styling (its target)
|
|
47
|
-
return true
|
|
48
|
-
} else if (isDefined(component?.target) && element?.type === component?.target) {
|
|
49
|
-
// component is the type of a styled component
|
|
50
|
-
// and element is an element of the original unstyled component,
|
|
51
|
-
// so we have to look at the target of the component itself (what it styled)
|
|
52
|
-
return true
|
|
53
|
-
} else if (
|
|
54
|
-
isDefined(component?.target) &&
|
|
55
|
-
element?.type?.target === component?.target
|
|
56
|
-
) {
|
|
57
|
-
// element and component are both styled, possibly _differently_
|
|
58
|
-
// but their underlying component type is the same
|
|
59
|
-
return true
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
return false
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
66
|
-
export const isSlotOfType = <T extends typeof Slot>(type: T | FC) => (obj?: any): obj is T => {
|
|
67
|
-
return (
|
|
68
|
-
(isDefined(obj) &&
|
|
69
|
-
isReactElement(obj) &&
|
|
70
|
-
isDefined(obj.type) &&
|
|
71
|
-
(Object.getPrototypeOf(obj.type) === type || obj.type === type)) ||
|
|
72
|
-
(isDefined(obj.type) &&
|
|
73
|
-
isDefined(obj.type.target) &&
|
|
74
|
-
(Object.getPrototypeOf(obj.type.target) === type ||
|
|
75
|
-
obj.type.target === type))
|
|
76
|
-
)
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
const findSlotByType = <T extends typeof Slot>(type: T, children?: ReactNode): ReactElement => {
|
|
80
|
-
return Children.toArray(children).find(isSlotOfType(type)) as ReactElement
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
const filterSlotByType = <T extends typeof Slot>(type: T, children?: ReactNode): ReactElement[] => {
|
|
84
|
-
return Children.toArray(children).filter(isSlotOfType(type)) as ReactElement[]
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
export class Slot<T = unknown> extends PureComponent<PropsWithChildren<T>> {
|
|
88
|
-
override render () {
|
|
89
|
-
return this.props.children
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
export class StylableSlot extends Slot {
|
|
94
|
-
override render () {
|
|
95
|
-
return <div {...this.props}>{this.props.children}</div>
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
/** gets children that are _not_ slots */
|
|
100
|
-
export function getOtherChildren(children?: ReactNode): ReactNode[] {
|
|
101
|
-
return Children.toArray(children).filter((child) => !isSlotOfType(Slot)(child))
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
export function getSlots<T extends typeof Slot>(slot: T, children?: ReactNode): ReactElement[] {
|
|
105
|
-
const result = filterSlotByType(slot, children)
|
|
106
|
-
|
|
107
|
-
if (isNil(result)) {
|
|
108
|
-
return []
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
return result
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
115
|
-
function hasProps (obj: any): obj is { props: { children: ReactNode }} {
|
|
116
|
-
// eslint-disable-next-line no-prototype-builtins
|
|
117
|
-
return isDefined(obj) && obj.hasOwnProperty('props')
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
export function getSlot<T extends typeof Slot>(slot: T, children?: ReactNode): ReactElement {
|
|
121
|
-
const result = findSlotByType(slot, children)
|
|
122
|
-
|
|
123
|
-
if (isNil(result)) {
|
|
124
|
-
return <Nothing />
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
if (hasProps(result)) {
|
|
128
|
-
return result
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
return result
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
/** given a ReactElement, like a child, apply the given props to it */
|
|
135
|
-
export function applyProps<T>(element: ReactElement<T>, props: Partial<T>): ReactElement {
|
|
136
|
-
return {
|
|
137
|
-
...element,
|
|
138
|
-
props: {
|
|
139
|
-
...element.props,
|
|
140
|
-
...props,
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
/** given a ReactElement, like a child, apply the given styles to it, merging with the existing styles */
|
|
146
|
-
export function applyStyle(element: ReactElement, style: CSSProperties): ReactElement {
|
|
147
|
-
return {
|
|
148
|
-
...element,
|
|
149
|
-
props: {
|
|
150
|
-
...element.props,
|
|
151
|
-
style: {
|
|
152
|
-
...element.props.style,
|
|
153
|
-
...style,
|
|
154
|
-
},
|
|
155
|
-
},
|
|
156
|
-
}
|
|
157
|
-
}
|
|
@@ -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
|
-
}
|