@edvisor/product-language 0.3.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 -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 +11 -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,67 +1,50 @@
|
|
|
1
|
-
export type Hex = `#${string}
|
|
2
|
-
|
|
3
|
-
export function
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
|
|
51
|
-
export function bitwiseOr(flags: unknown[]): number {
|
|
52
|
-
return flags.reduce((mask: number, flag, i) => mask | (Number(flag) << i), 0)
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
/** given a number, it returns the number formed by the rightmost set bit as 1 and the 0s that comes after it
|
|
57
|
-
*
|
|
58
|
-
* ```ts
|
|
59
|
-
* getRightmostSetBitNumber(12) => 4 // 12(1100) => 4(100)
|
|
60
|
-
* getRightmostSetBitNumber(40) => 8 // 40(101000) => 8(1000)
|
|
61
|
-
* ```
|
|
62
|
-
*
|
|
63
|
-
* */
|
|
64
|
-
|
|
65
|
-
export function getRightmostSetBitNumber(n: number) {
|
|
66
|
-
return n & -n
|
|
67
|
-
}
|
|
1
|
+
export declare type Hex = `#${string}`;
|
|
2
|
+
export declare function clamp(a: number, b: number, c: number): number;
|
|
3
|
+
export declare function toHex(n: number, length: number): Hex;
|
|
4
|
+
export declare function concatHex(a: Hex, b: Hex): Hex;
|
|
5
|
+
/** given an array of boolean flags, bitwiseOr interprets them as an unsigned integer
|
|
6
|
+
*
|
|
7
|
+
* ```ts
|
|
8
|
+
* bitwiseOr([false, true, false, true]) => 5 // 0b0101
|
|
9
|
+
* ```
|
|
10
|
+
*
|
|
11
|
+
* This is useful for indexing into an enum:
|
|
12
|
+
*
|
|
13
|
+
* ```ts
|
|
14
|
+
* const enum Level {
|
|
15
|
+
* default = 0,
|
|
16
|
+
* info = 0,
|
|
17
|
+
* danger = 1,
|
|
18
|
+
* warning = 2
|
|
19
|
+
* }
|
|
20
|
+
*
|
|
21
|
+
* interface IProps {
|
|
22
|
+
* info?: boolean
|
|
23
|
+
* danger?: boolean
|
|
24
|
+
* warning?: boolean
|
|
25
|
+
* }
|
|
26
|
+
*
|
|
27
|
+
* function toLevel(n: number): Level {
|
|
28
|
+
* switch (n) {
|
|
29
|
+
* case Level.info: return Level.info
|
|
30
|
+
* case Level.danger: return Level.danger
|
|
31
|
+
* case Level.warning: return Level.warning
|
|
32
|
+
* default: return Level.default
|
|
33
|
+
* }
|
|
34
|
+
* }
|
|
35
|
+
*
|
|
36
|
+
* const level = bitwiseOr([props.info, props.danger, props.warning])
|
|
37
|
+
*
|
|
38
|
+
* const levelEnum = toLevel(level)
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
41
|
+
export declare function bitwiseOr(flags: unknown[]): number;
|
|
42
|
+
/** given a number, it returns the number formed by the rightmost set bit as 1 and the 0s that comes after it
|
|
43
|
+
*
|
|
44
|
+
* ```ts
|
|
45
|
+
* getRightmostSetBitNumber(12) => 4 // 12(1100) => 4(100)
|
|
46
|
+
* getRightmostSetBitNumber(40) => 8 // 40(101000) => 8(1000)
|
|
47
|
+
* ```
|
|
48
|
+
*
|
|
49
|
+
* */
|
|
50
|
+
export declare function getRightmostSetBitNumber(n: number): number;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/** even though we have null disabled in the repo,
|
|
2
|
+
* I still would not want isNil to skip checking null
|
|
3
|
+
* it is for juuuuust in case a third party sends us a null
|
|
4
|
+
* or something, and the types are not correct
|
|
5
|
+
*/
|
|
6
|
+
export declare function isNil<T>(value: T | undefined | null): value is undefined | null;
|
|
7
|
+
export declare function isDefined<T>(value: T | undefined | null): value is T;
|
|
8
|
+
export declare function defaultTo<T>(value: T | undefined | null, fallback: T): T;
|
|
9
|
+
export declare function isEmpty<T extends {
|
|
10
|
+
length: number;
|
|
11
|
+
}>(obj: T): boolean;
|
|
12
|
+
/** used for evaluating tri-state logic (true | false | undefined) */
|
|
13
|
+
export declare function is(pred?: boolean): boolean;
|
|
14
|
+
export declare function safeArray<T>(arr: T[] | undefined | null): T[];
|
|
15
|
+
export declare function safeCallback<T>(f?: (e: T) => void, e?: T): void;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { CSSProperties, PureComponent, ReactElement, ReactNode } from 'react';
|
|
2
|
+
import { StyledComponent } from 'styled-components';
|
|
3
|
+
import { FC, PropsWithChildren } from './generic-types';
|
|
4
|
+
export declare const isReactElementOfType: <P extends {
|
|
5
|
+
children?: ReactNode;
|
|
6
|
+
}>(component: (FC<P, {}> | typeof Slot | StyledComponent<FC<P, {}>, any, {}, never>) & {
|
|
7
|
+
target?: any;
|
|
8
|
+
}) => (element?: any) => element is ReactElement<P, string | import("react").JSXElementConstructor<any>>;
|
|
9
|
+
export declare const isSlotOfType: <T extends typeof Slot>(type: T | FC<{}, {}>) => (obj?: any) => obj is T;
|
|
10
|
+
export declare class Slot<T = unknown> extends PureComponent<PropsWithChildren<T>> {
|
|
11
|
+
render(): PropsWithChildren<T>["children"] | undefined;
|
|
12
|
+
}
|
|
13
|
+
export declare class StylableSlot extends Slot {
|
|
14
|
+
render(): JSX.Element;
|
|
15
|
+
}
|
|
16
|
+
/** gets children that are _not_ slots */
|
|
17
|
+
export declare function getOtherChildren(children?: ReactNode): ReactNode[];
|
|
18
|
+
export declare function getSlots<T extends typeof Slot>(slot: T, children?: ReactNode): ReactElement[];
|
|
19
|
+
export declare function getSlot<T extends typeof Slot>(slot: T, children?: ReactNode): ReactElement;
|
|
20
|
+
/** given a ReactElement, like a child, apply the given props to it */
|
|
21
|
+
export declare function applyProps<T>(element: ReactElement<T>, props: Partial<T>): ReactElement;
|
|
22
|
+
/** given a ReactElement, like a child, apply the given styles to it, merging with the existing styles */
|
|
23
|
+
export declare function applyStyle(element: ReactElement, style: CSSProperties): ReactElement;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const toKebabCase: (str: string) => string;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@edvisor/product-language",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.1",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "Edvisor.io product-language components",
|
|
6
6
|
"repository": "https://github.com/edvisor-io/front-end/",
|
|
@@ -11,7 +11,10 @@
|
|
|
11
11
|
"release": "release-it --disable-metrics"
|
|
12
12
|
},
|
|
13
13
|
"peerDependencies": {
|
|
14
|
-
"release": "*"
|
|
14
|
+
"release": "*",
|
|
15
|
+
"styled-components": "5.3.5",
|
|
16
|
+
"react": "18.2.0",
|
|
17
|
+
"@storybook/addon-docs": "^6.5.10"
|
|
15
18
|
},
|
|
16
19
|
"release-it": {
|
|
17
20
|
"git": {
|
|
@@ -27,5 +30,10 @@
|
|
|
27
30
|
"publishConfig": {
|
|
28
31
|
"registry": "https://registry.npmjs.org"
|
|
29
32
|
}
|
|
30
|
-
}
|
|
33
|
+
},
|
|
34
|
+
"module": "./index.js",
|
|
35
|
+
"main": "./index.js",
|
|
36
|
+
"type": "module",
|
|
37
|
+
"types": "./index.d.ts",
|
|
38
|
+
"dependencies": {}
|
|
31
39
|
}
|
package/.babelrc
DELETED
package/.eslintrc.json
DELETED
|
@@ -1,147 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"extends": ["plugin:@nrwl/nx/react", "../../.eslintrc.json"],
|
|
3
|
-
"ignorePatterns": ["!**/*"],
|
|
4
|
-
"plugins": [
|
|
5
|
-
"no-null"
|
|
6
|
-
],
|
|
7
|
-
"overrides": [
|
|
8
|
-
{
|
|
9
|
-
"files": ["*.ts", "*.tsx", "*.js", "*.jsx"],
|
|
10
|
-
"rules": {
|
|
11
|
-
"semi": ["error", "never"],
|
|
12
|
-
"quotes": ["error", "single"],
|
|
13
|
-
"no-console": "warn",
|
|
14
|
-
"react/jsx-no-useless-fragment": ["warn", { "allowExpressions": true }],
|
|
15
|
-
"no-null/no-null": 2,
|
|
16
|
-
"no-duplicate-case": "warn",
|
|
17
|
-
"no-restricted-syntax": [
|
|
18
|
-
"error",
|
|
19
|
-
{
|
|
20
|
-
"selector": "ImportDeclaration[source.value=/[^@]foundations/i]",
|
|
21
|
-
"message": "Import from @foundations instead of using a relative path"
|
|
22
|
-
},
|
|
23
|
-
{
|
|
24
|
-
"selector": "ImportDeclaration[source.value=/react/i] ImportSpecifier[imported.name=/FC/]",
|
|
25
|
-
"message": "Use `import { FC } from '@helpers'` instead"
|
|
26
|
-
},
|
|
27
|
-
{
|
|
28
|
-
"selector": "ImportDeclaration[source.value=/react/i] ImportSpecifier[imported.name=/PropsWithChildren/]",
|
|
29
|
-
"message": "Use `import { PropsWithChildren } from '@helpers'` instead"
|
|
30
|
-
},
|
|
31
|
-
{
|
|
32
|
-
"selector": "ImportDeclaration[source.value=/react/i] ImportSpecifier[imported.name=/forwardRef/]",
|
|
33
|
-
"message": "Use `import { forwardRef } from '@helpers'` instead"
|
|
34
|
-
},
|
|
35
|
-
{
|
|
36
|
-
"selector": "ImportDeclaration[source.value=/testing-library/i] ImportSpecifier[imported.name=/fireEvent/]",
|
|
37
|
-
"message": "Prefer `import userEvent from '@testing-library/user-event'` wherever possible.\n@see: https://edvisorio.atlassian.net/wiki/spaces/ENG/pages/235307017/First+contact+with+Testing+Library#Handling-Events"
|
|
38
|
-
},
|
|
39
|
-
{
|
|
40
|
-
"selector": "Literal[value=/[^&]#[a-zA-Z0-9]{1,6}/i]",
|
|
41
|
-
"message": "No hex literals, please import constants from @foundations"
|
|
42
|
-
},
|
|
43
|
-
{
|
|
44
|
-
"selector": "Literal[value=/padding.*: ([0-9]|')/i]",
|
|
45
|
-
"message": "No string pixel values for css padding, please import Padding from @foundations"
|
|
46
|
-
},
|
|
47
|
-
{
|
|
48
|
-
"selector": "TemplateElement[value.cooked=/[^&]#[a-zA-Z0-9]{1,6}/i]",
|
|
49
|
-
"message": "No hex literals, please import constants from @foundations"
|
|
50
|
-
},
|
|
51
|
-
{
|
|
52
|
-
"selector": "TemplateElement[value.cooked=/padding.*: ([0-9]|')/i]",
|
|
53
|
-
"message": "No ad-hoc padding, please import { Padding } from '@foundations'"
|
|
54
|
-
},
|
|
55
|
-
{
|
|
56
|
-
"selector": "TemplateElement[value.cooked=/margin.*: ([0-9]|')/i]",
|
|
57
|
-
"message": "No ad-hoc margins, please import { Margin } from '@foundations'"
|
|
58
|
-
}
|
|
59
|
-
]
|
|
60
|
-
}
|
|
61
|
-
},
|
|
62
|
-
{
|
|
63
|
-
"files": ["*.ts", "*.tsx"],
|
|
64
|
-
"parserOptions": {
|
|
65
|
-
"project": ["packages/product-language/tsconfig.*?.json", "packages/product-language/.storybook/tsconfig.json"]
|
|
66
|
-
},
|
|
67
|
-
"rules": {
|
|
68
|
-
"no-shadow": "off",
|
|
69
|
-
"@typescript-eslint/no-shadow": "warn",
|
|
70
|
-
"@typescript-eslint/no-explicit-any": "error",
|
|
71
|
-
"@typescript-eslint/no-invalid-void-type": "error",
|
|
72
|
-
"@typescript-eslint/ban-types": ["error", {
|
|
73
|
-
"types": {
|
|
74
|
-
"null": "Use 'undefined' instead of 'null'",
|
|
75
|
-
"React.FC": "Use `import { FC } from '@helpers'` instead",
|
|
76
|
-
"React.PropsWithChildren": "Use `import { PropsWithChildren } from '@helpers'` instead",
|
|
77
|
-
"React.forwardRef": "Use `import { forwardRef } from '@helpers'` instead"
|
|
78
|
-
}
|
|
79
|
-
}],
|
|
80
|
-
"@typescript-eslint/strict-boolean-expressions": ["error", {
|
|
81
|
-
"allowString": false,
|
|
82
|
-
"allowNumber": false,
|
|
83
|
-
"allowNullableObject": false
|
|
84
|
-
}]
|
|
85
|
-
}
|
|
86
|
-
},
|
|
87
|
-
{
|
|
88
|
-
"files": ["*.tsx"],
|
|
89
|
-
"parserOptions": {
|
|
90
|
-
"project": ["packages/product-language/tsconfig.*?.json"]
|
|
91
|
-
},
|
|
92
|
-
"rules": {
|
|
93
|
-
"no-restricted-syntax": [
|
|
94
|
-
"error",
|
|
95
|
-
{
|
|
96
|
-
"selector": "FunctionDeclaration[id.name=/^[A-Z]/]",
|
|
97
|
-
"message": "Components should be declared `const MyComponent: FC<IProps> = (props) => {`"
|
|
98
|
-
},
|
|
99
|
-
{
|
|
100
|
-
"selector": "ImportDeclaration[source.value=/[^@]foundations/i]",
|
|
101
|
-
"message": "Import from @foundations instead of using a relative path"
|
|
102
|
-
},
|
|
103
|
-
{
|
|
104
|
-
"selector": "ImportDeclaration[source.value=/react/i] ImportSpecifier[imported.name=/FC/]",
|
|
105
|
-
"message": "Use `import { FC } from '@helpers'` instead"
|
|
106
|
-
},
|
|
107
|
-
{
|
|
108
|
-
"selector": "ImportDeclaration[source.value=/react/i] ImportSpecifier[imported.name=/PropsWithChildren/]",
|
|
109
|
-
"message": "Use `import { Props } from '@helpers'` instead"
|
|
110
|
-
},
|
|
111
|
-
{
|
|
112
|
-
"selector": "ImportDeclaration[source.value=/react/i] ImportSpecifier[imported.name=/forwardRef/]",
|
|
113
|
-
"message": "Use `import { forwardRef } from '@helpers'` instead"
|
|
114
|
-
},
|
|
115
|
-
{
|
|
116
|
-
"selector": "ImportDeclaration[source.value=/testing-library/i] ImportSpecifier[imported.name=/fireEvent/]",
|
|
117
|
-
"message": "Prefer `import userEvent from '@testing-library/user-event'` wherever possible.\n@see: https://edvisorio.atlassian.net/wiki/spaces/ENG/pages/235307017/First+contact+with+Testing+Library#Handling-Events"
|
|
118
|
-
},
|
|
119
|
-
{
|
|
120
|
-
"selector": "Literal[value=/[^&]#[a-zA-Z0-9]{1,6}/i]",
|
|
121
|
-
"message": "No hex literals, please import constants from @foundations"
|
|
122
|
-
},
|
|
123
|
-
{
|
|
124
|
-
"selector": "Literal[value=/padding.*: ([0-9]|')/i]",
|
|
125
|
-
"message": "No string pixel values for css padding, please import Padding from @foundations"
|
|
126
|
-
},
|
|
127
|
-
{
|
|
128
|
-
"selector": "TemplateElement[value.cooked=/[^&]#[a-zA-Z0-9]{1,6}/i]",
|
|
129
|
-
"message": "No hex literals, please import constants from @foundations"
|
|
130
|
-
},
|
|
131
|
-
{
|
|
132
|
-
"selector": "TemplateElement[value.cooked=/padding.*: ([0-9]|')/i]",
|
|
133
|
-
"message": "No ad-hoc padding, please import { Padding } from '@foundations'"
|
|
134
|
-
},
|
|
135
|
-
{
|
|
136
|
-
"selector": "TemplateElement[value.cooked=/margin.*: ([0-9]|')/i]",
|
|
137
|
-
"message": "No ad-hoc margins, please import { Margin } from '@foundations'"
|
|
138
|
-
}
|
|
139
|
-
]
|
|
140
|
-
}
|
|
141
|
-
},
|
|
142
|
-
{
|
|
143
|
-
"files": ["*.js", "*.jsx"],
|
|
144
|
-
"rules": {}
|
|
145
|
-
}
|
|
146
|
-
]
|
|
147
|
-
}
|
package/.storybook/main.js
DELETED
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
const rootMain = require('../../../.storybook/main')
|
|
2
|
-
const path = require('path')
|
|
3
|
-
const webpack = require('webpack')
|
|
4
|
-
|
|
5
|
-
// we can't import from our design-system here
|
|
6
|
-
// so I'm replicating the constant
|
|
7
|
-
// eslint-disable-next-line no-restricted-syntax
|
|
8
|
-
const backgroundDefault = '#F3F4F6'
|
|
9
|
-
|
|
10
|
-
module.exports = {
|
|
11
|
-
...rootMain,
|
|
12
|
-
|
|
13
|
-
core: { ...rootMain.core, builder: 'webpack5' },
|
|
14
|
-
|
|
15
|
-
stories: [
|
|
16
|
-
...rootMain.stories,
|
|
17
|
-
'../src/lib/**/*.stories.mdx',
|
|
18
|
-
'../src/lib/**/*.stories.@(js|jsx|ts|tsx)',
|
|
19
|
-
],
|
|
20
|
-
addons: [...rootMain.addons, '@nrwl/react/plugins/storybook'],
|
|
21
|
-
staticDirs: [{from: '../src/assets', to:'/public'}],
|
|
22
|
-
webpackFinal: async (config, { configType }) => {
|
|
23
|
-
// apply any global webpack configs that might have been specified in .storybook/main.js
|
|
24
|
-
if (rootMain.webpackFinal) {
|
|
25
|
-
config = await rootMain.webpackFinal(config, { configType })
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
config.plugins.push(
|
|
29
|
-
new webpack.ProvidePlugin({
|
|
30
|
-
Buffer: ['buffer', 'Buffer'],
|
|
31
|
-
}),
|
|
32
|
-
)
|
|
33
|
-
|
|
34
|
-
config.module.rules.push({
|
|
35
|
-
test: /\.(png|woff|woff2|eot|ttf|svg)$/,
|
|
36
|
-
use: [
|
|
37
|
-
{
|
|
38
|
-
loader: require.resolve('file-loader'),
|
|
39
|
-
options: {
|
|
40
|
-
name: '[name].[ext]'
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
],
|
|
44
|
-
include: path.resolve(__dirname, '../')
|
|
45
|
-
})
|
|
46
|
-
|
|
47
|
-
return config
|
|
48
|
-
},
|
|
49
|
-
previewHead: (head) => `
|
|
50
|
-
${head}
|
|
51
|
-
<style>
|
|
52
|
-
html, body {
|
|
53
|
-
background: ${backgroundDefault};
|
|
54
|
-
}
|
|
55
|
-
</style>
|
|
56
|
-
`,
|
|
57
|
-
}
|
package/.storybook/manager.js
DELETED
package/.storybook/preview.js
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { liveDecorator } from 'storybook-addon-jarle-monaco'
|
|
2
|
-
|
|
3
|
-
export const parameters = {
|
|
4
|
-
actions: { argTypesRegex: '^on[A-Z].*' },
|
|
5
|
-
controls: {
|
|
6
|
-
matchers: {
|
|
7
|
-
color: /(background|color)$/i,
|
|
8
|
-
date: /Date$/,
|
|
9
|
-
},
|
|
10
|
-
},
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
export const decorators = [
|
|
14
|
-
liveDecorator
|
|
15
|
-
]
|
package/.storybook/tsconfig.json
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"extends": "../tsconfig.json",
|
|
3
|
-
"compilerOptions": {
|
|
4
|
-
"emitDecoratorMetadata": true,
|
|
5
|
-
"outDir": "",
|
|
6
|
-
"noEmit": true
|
|
7
|
-
},
|
|
8
|
-
"files": [
|
|
9
|
-
"../../../node_modules/@nrwl/react/typings/styled-jsx.d.ts",
|
|
10
|
-
"../../../node_modules/@nrwl/react/typings/cssmodule.d.ts",
|
|
11
|
-
"../../../node_modules/@nrwl/react/typings/image.d.ts"
|
|
12
|
-
],
|
|
13
|
-
|
|
14
|
-
"exclude": [
|
|
15
|
-
"../**/*.spec.ts",
|
|
16
|
-
"../**/*.spec.js",
|
|
17
|
-
"../**/*.spec.tsx",
|
|
18
|
-
"../**/*.spec.jsx"
|
|
19
|
-
],
|
|
20
|
-
"include": [
|
|
21
|
-
"../src/**/storybook/*",
|
|
22
|
-
"../src/**/stories/*",
|
|
23
|
-
"../src/**/*.stories.ts",
|
|
24
|
-
"../src/**/*.stories.js",
|
|
25
|
-
"../src/**/*.stories.jsx",
|
|
26
|
-
"../src/**/*.stories.tsx",
|
|
27
|
-
"../src/**/*.stories.mdx",
|
|
28
|
-
"*.js"
|
|
29
|
-
]
|
|
30
|
-
}
|
package/jest.config.ts
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/* eslint-disable */
|
|
2
|
-
export default {
|
|
3
|
-
displayName: 'product-language',
|
|
4
|
-
preset: '../../jest.preset.js',
|
|
5
|
-
transform: {
|
|
6
|
-
'^.+\\.[tj]sx?$': 'babel-jest',
|
|
7
|
-
},
|
|
8
|
-
moduleNameMapper: {
|
|
9
|
-
'^.+\\.(jpg|ico|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2)$': '<rootDir>/fileTransformer.js',
|
|
10
|
-
'^.+\\.(css)$': 'identity-obj-proxy',//we can remove if we dont have css files
|
|
11
|
-
},
|
|
12
|
-
moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx'],
|
|
13
|
-
coverageDirectory: '../../coverage/packages/product-language',
|
|
14
|
-
setupFilesAfterEnv: ['./jest.setup.ts'],
|
|
15
|
-
};
|
package/jest.setup.ts
DELETED
package/project.json
DELETED
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "../../node_modules/nx/schemas/project-schema.json",
|
|
3
|
-
"sourceRoot": "packages/product-language/src",
|
|
4
|
-
"projectType": "library",
|
|
5
|
-
"tags": [],
|
|
6
|
-
"targets": {
|
|
7
|
-
"build": {
|
|
8
|
-
"executor": "@nrwl/web:rollup",
|
|
9
|
-
"outputs": ["{options.outputPath}"],
|
|
10
|
-
"options": {
|
|
11
|
-
"outputPath": "dist/packages/product-language",
|
|
12
|
-
"tsConfig": "packages/product-language/tsconfig.lib.json",
|
|
13
|
-
"project": "packages/product-language/package.json",
|
|
14
|
-
"entryFile": "packages/product-language/src/index.ts",
|
|
15
|
-
"external": ["react/jsx-runtime"],
|
|
16
|
-
"rollupConfig": "@nrwl/react/plugins/bundle-rollup",
|
|
17
|
-
"compiler": "babel",
|
|
18
|
-
"assets": [
|
|
19
|
-
{
|
|
20
|
-
"glob": "packages/product-language/README.md",
|
|
21
|
-
"input": ".",
|
|
22
|
-
"output": "."
|
|
23
|
-
}
|
|
24
|
-
]
|
|
25
|
-
}
|
|
26
|
-
},
|
|
27
|
-
"dev": {
|
|
28
|
-
"executor": "@nrwl/web:rollup",
|
|
29
|
-
"outputs": ["{options.outputPath}"],
|
|
30
|
-
"options": {
|
|
31
|
-
"watch": true,
|
|
32
|
-
"outputPath": "../react-web-client/product-language",
|
|
33
|
-
"tsConfig": "packages/product-language/tsconfig.lib.json",
|
|
34
|
-
"project": "packages/product-language/package.json",
|
|
35
|
-
"entryFile": "packages/product-language/src/index.ts",
|
|
36
|
-
"external": ["react/jsx-runtime"],
|
|
37
|
-
"rollupConfig": "@nrwl/react/plugins/bundle-rollup",
|
|
38
|
-
"compiler": "babel",
|
|
39
|
-
"assets": [
|
|
40
|
-
{
|
|
41
|
-
"glob": "packages/product-language/README.md",
|
|
42
|
-
"input": ".",
|
|
43
|
-
"output": "."
|
|
44
|
-
}
|
|
45
|
-
]
|
|
46
|
-
}
|
|
47
|
-
},
|
|
48
|
-
"lint": {
|
|
49
|
-
"executor": "@nrwl/linter:eslint",
|
|
50
|
-
"outputs": ["{options.outputFile}"],
|
|
51
|
-
"options": {
|
|
52
|
-
"lintFilePatterns": ["packages/product-language/**/*.{ts,tsx,js,jsx}"]
|
|
53
|
-
}
|
|
54
|
-
},
|
|
55
|
-
"test": {
|
|
56
|
-
"executor": "@nrwl/jest:jest",
|
|
57
|
-
"outputs": ["coverage/packages/product-language"],
|
|
58
|
-
"options": {
|
|
59
|
-
"jestConfig": "packages/product-language/jest.config.ts",
|
|
60
|
-
"passWithNoTests": true
|
|
61
|
-
}
|
|
62
|
-
},
|
|
63
|
-
"storybook": {
|
|
64
|
-
"executor": "@nrwl/storybook:storybook",
|
|
65
|
-
"options": {
|
|
66
|
-
"uiFramework": "@storybook/react",
|
|
67
|
-
"tsConfig": "packages/product-language/tsconfig.storybook.json",
|
|
68
|
-
"port": 4400,
|
|
69
|
-
"config": {
|
|
70
|
-
"configFolder": "packages/product-language/.storybook"
|
|
71
|
-
}
|
|
72
|
-
},
|
|
73
|
-
"configurations": {
|
|
74
|
-
"ci": {
|
|
75
|
-
"quiet": true
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
},
|
|
79
|
-
"build-storybook": {
|
|
80
|
-
"executor": "@nrwl/storybook:build",
|
|
81
|
-
"outputs": ["{options.outputPath}"],
|
|
82
|
-
"options": {
|
|
83
|
-
"uiFramework": "@storybook/react",
|
|
84
|
-
"outputPath": "dist/storybook/product-language",
|
|
85
|
-
"config": {
|
|
86
|
-
"configFolder": "packages/product-language/.storybook"
|
|
87
|
-
}
|
|
88
|
-
},
|
|
89
|
-
"configurations": {
|
|
90
|
-
"ci": {
|
|
91
|
-
"quiet": true
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
}
|
package/release-it.json
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"git": {
|
|
3
|
-
"requireCleanWorkingDir": false,
|
|
4
|
-
"commitMessage": "chore: release ${version}",
|
|
5
|
-
"tagName": "v${version}"
|
|
6
|
-
},
|
|
7
|
-
"github": {
|
|
8
|
-
"release": true,
|
|
9
|
-
"tokenRef": "BOB"
|
|
10
|
-
},
|
|
11
|
-
"npm": {
|
|
12
|
-
"publish": true,
|
|
13
|
-
"manifestPath": "./dist/packages/product-language/package.json"
|
|
14
|
-
},
|
|
15
|
-
"publishConfig": {
|
|
16
|
-
"registry": "https://registry.npmjs.org"
|
|
17
|
-
}
|
|
18
|
-
}
|
package/src/README.md
DELETED
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
Directory Structure
|
|
2
|
-
===================
|
|
3
|
-
|
|
4
|
-
Manifest Files (index.ts)
|
|
5
|
-
-------------------------
|
|
6
|
-
|
|
7
|
-
RWC, and now product-language, export components to be consumed by another system. Their API is a list of components that they export, and this API is declared in src/index.ts the “root manifest”.
|
|
8
|
-
|
|
9
|
-
```ts
|
|
10
|
-
// src/index.ts
|
|
11
|
-
export * from 'src/components'
|
|
12
|
-
export * from 'src/foundations'
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
And then things get… recursive.
|
|
16
|
-
|
|
17
|
-
The “components” directory is a module that exports components to be consumed by another system. It’s API is the list of components it exports, and this API is declared in src/components/index.ts
|
|
18
|
-
|
|
19
|
-
```ts
|
|
20
|
-
// src/components/index.ts
|
|
21
|
-
export * from 'src/components/atoms'
|
|
22
|
-
export * from 'src/components/molecules'
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
The “molecules” directory is a module that exports components to be consumed by another system. It’s API is the list of components it exports, and this API is declared in src/components/molecules/index.ts
|
|
26
|
-
|
|
27
|
-
```ts
|
|
28
|
-
// src/components/molecules/index.ts
|
|
29
|
-
export * from 'src/components/molecules/button
|
|
30
|
-
export * from 'src/components/molecules/card
|
|
31
|
-
export * from 'src/components/molecules/input-field
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
The “button” directory is a module that exports components to be consumed by another system. It’s API is the list of components it exports, and this API is declared in src/components/molecules/button/index.ts
|
|
35
|
-
|
|
36
|
-
This file, this index.ts file is the public API or public interface of the button module. A public interface should only expose public things. Private things should not be exported. So for example:
|
|
37
|
-
|
|
38
|
-
```ts
|
|
39
|
-
// src/components/molecules/button/index.ts
|
|
40
|
-
|
|
41
|
-
export * from './stories' // NOPE! this is not public
|
|
42
|
-
export * from './components' // Nope! don't expose implementation details
|
|
43
|
-
|
|
44
|
-
// in most cases, this is all you need
|
|
45
|
-
export * from './Button.tsx'
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
Within the Button module, we have to be careful to remember that these index files are the public api they are not to be consumed internally. So for example in a storybook file:
|
|
49
|
-
|
|
50
|
-
```ts
|
|
51
|
-
// src/components/molecules/button/stories/button.stories.mdx
|
|
52
|
-
|
|
53
|
-
import { Button } from '../index' // Nope!
|
|
54
|
-
import { Button } from '../Button' // yes!
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
Importing from the index file within the module that index file describes is a potential problem, it can cause cyclic dependencies which can be hard to debug.
|
|
58
|
-
|
|
59
|
-
On a similar note: your stories and tests folders don’t need index files at all. They are just there to provide a place to put helpers specific to the stories and tests for the component. They are not modules that export components for other systems to use, so they do not need an index.ts file.
|
|
60
|
-
|
|
61
|
-
On the other hand, the components folder in the Button module should have an index.ts file since it exposes a list of components that Button consumes. Doing this also makes it easier to lift a helper component from the Button module to a shared place if you discover you’ve created a helpful shared component.
|