@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.
Files changed (278) hide show
  1. package/index.d.ts +2 -0
  2. package/index.js +7914 -0
  3. package/lib/components/alert-banner/alert-banner.d.ts +11 -0
  4. package/lib/components/alert-banner/alert-level-flags.d.ts +13 -0
  5. package/lib/components/alert-banner/index.d.ts +1 -0
  6. package/lib/components/badge/badge-type-flags.d.ts +18 -0
  7. package/lib/components/badge/badge.d.ts +5 -0
  8. package/lib/components/badge/index.d.ts +1 -0
  9. package/{src/lib/components/card/atoms/card-frame.tsx → lib/components/card/atoms/card-frame.d.ts} +7 -17
  10. package/lib/components/card/atoms/index.d.ts +1 -0
  11. package/lib/components/card/card.d.ts +14 -0
  12. package/lib/components/card/components/card-alert-banner-slot.d.ts +5 -0
  13. package/lib/components/card/components/card-controls-slot.d.ts +4 -0
  14. package/lib/components/card/components/card-section-slot.d.ts +11 -0
  15. package/lib/components/card/components/index.d.ts +3 -0
  16. package/lib/components/card/index.d.ts +2 -0
  17. package/lib/components/card/molecules/index.d.ts +1 -0
  18. package/lib/components/card/molecules/left-right-card.d.ts +16 -0
  19. package/lib/components/checkbox/checkbox.d.ts +10 -0
  20. package/lib/components/checkbox/helpers.d.ts +12 -0
  21. package/lib/components/checkbox/index.d.ts +1 -0
  22. package/lib/components/divider/divider-type-flags.d.ts +9 -0
  23. package/lib/components/divider/divider.d.ts +7 -0
  24. package/lib/components/divider/index.d.ts +1 -0
  25. package/lib/components/flag/flag-size-flags.d.ts +12 -0
  26. package/lib/components/flag/flag.d.ts +9 -0
  27. package/lib/components/flag/flag.list.d.ts +781 -0
  28. package/lib/components/flag/index.d.ts +1 -0
  29. package/lib/components/icon/icon-list.d.ts +131 -0
  30. package/lib/components/icon/icon.d.ts +131 -0
  31. package/lib/components/icon/index.d.ts +1 -0
  32. package/lib/components/index.d.ts +17 -0
  33. package/lib/components/input-field/components/index.d.ts +2 -0
  34. package/lib/components/input-field/components/labeled-input.d.ts +10 -0
  35. package/lib/components/input-field/components/stepper.d.ts +7 -0
  36. package/lib/components/input-field/index.d.ts +3 -0
  37. package/lib/components/input-field/input-field.d.ts +25 -0
  38. package/lib/components/input-field/input-number.d.ts +18 -0
  39. package/lib/components/input-field/input-text.d.ts +14 -0
  40. package/lib/components/layout/flex.d.ts +16 -0
  41. package/lib/components/layout/grid-layout.d.ts +11 -0
  42. package/lib/components/layout/index.d.ts +3 -0
  43. package/lib/components/layout/left-right-layout.d.ts +34 -0
  44. package/lib/components/link/index.d.ts +1 -0
  45. package/lib/components/link/link.d.ts +14 -0
  46. package/lib/components/molecules/avatar/avatar-size-flags.d.ts +12 -0
  47. package/lib/components/molecules/avatar/avatar.d.ts +12 -0
  48. package/lib/components/molecules/avatar/index.d.ts +1 -0
  49. package/lib/components/molecules/button/button-flags.d.ts +44 -0
  50. package/lib/components/molecules/button/button.d.ts +12 -0
  51. package/lib/components/molecules/button/index.d.ts +1 -0
  52. package/lib/components/molecules/index.d.ts +3 -0
  53. package/lib/components/molecules/input-checkbox/index.d.ts +1 -0
  54. package/lib/components/molecules/input-checkbox/input-checkbox.d.ts +8 -0
  55. package/lib/components/organisms/index.d.ts +1 -0
  56. package/lib/components/organisms/multi-choice-list/index.d.ts +1 -0
  57. package/lib/components/organisms/multi-choice-list/multi-choice-list.d.ts +10 -0
  58. package/lib/components/spinner/index.d.ts +1 -0
  59. package/lib/components/spinner/spinner-size-flags.d.ts +10 -0
  60. package/lib/components/spinner/spinner.d.ts +9 -0
  61. package/lib/components/tabs/components/index.d.ts +1 -0
  62. package/lib/components/tabs/components/tab.d.ts +7 -0
  63. package/lib/components/tabs/index.d.ts +1 -0
  64. package/lib/components/tabs/tabs.d.ts +15 -0
  65. package/lib/components/tag/components/close-button.d.ts +8 -0
  66. package/lib/components/tag/components/index.d.ts +2 -0
  67. package/lib/components/tag/components/tag-label.d.ts +8 -0
  68. package/lib/components/tag/index.d.ts +1 -0
  69. package/lib/components/tag/tag.d.ts +10 -0
  70. package/lib/components/thumbnail/index.d.ts +1 -0
  71. package/lib/components/thumbnail/thumbnail-size-flags.d.ts +10 -0
  72. package/lib/components/thumbnail/thumbnail.d.ts +10 -0
  73. package/lib/components/typography/index.d.ts +1 -0
  74. package/lib/components/typography/typography.d.ts +24 -0
  75. package/lib/foundations/color-system/base-palette/base-palette.d.ts +76 -0
  76. package/lib/foundations/color-system/base-palette/index.d.ts +1 -0
  77. package/lib/foundations/color-system/color-guidelines/color-guidelines.d.ts +132 -0
  78. package/lib/foundations/color-system/color-guidelines/index.d.ts +1 -0
  79. package/lib/foundations/color-system/components/color-sample.d.ts +17 -0
  80. package/lib/foundations/color-system/components/index.d.ts +1 -0
  81. package/lib/foundations/color-system/index.d.ts +1 -0
  82. package/lib/foundations/index.d.ts +4 -0
  83. package/lib/foundations/shadows/components.d.ts +8 -0
  84. package/lib/foundations/shadows/index.d.ts +1 -0
  85. package/lib/foundations/shadows/shadows.d.ts +8 -0
  86. package/lib/foundations/spacing/index.d.ts +1 -0
  87. package/lib/foundations/spacing/spacing-guidelines.d.ts +22 -0
  88. package/lib/foundations/spacing/spacing.d.ts +18 -0
  89. package/lib/foundations/typography/constants.d.ts +22 -0
  90. package/lib/foundations/typography/fonts.d.ts +1 -0
  91. package/lib/foundations/typography/index.d.ts +1 -0
  92. package/lib/foundations/typography/text-aspect-flags.d.ts +19 -0
  93. package/lib/foundations/typography/typography.d.ts +24 -0
  94. package/lib/helpers/generic-types.d.ts +21 -0
  95. package/lib/helpers/index.d.ts +6 -0
  96. package/lib/helpers/nothing.d.ts +8 -0
  97. package/{src/lib/helpers/numbers.ts → lib/helpers/numbers.d.ts} +50 -67
  98. package/lib/helpers/safe-navigation.d.ts +15 -0
  99. package/lib/helpers/slots.d.ts +23 -0
  100. package/lib/helpers/strings.d.ts +1 -0
  101. package/package.json +11 -3
  102. package/.babelrc +0 -12
  103. package/.eslintrc.json +0 -147
  104. package/.storybook/main.js +0 -57
  105. package/.storybook/manager.js +0 -7
  106. package/.storybook/preview.js +0 -15
  107. package/.storybook/tsconfig.json +0 -30
  108. package/jest.config.ts +0 -15
  109. package/jest.setup.ts +0 -2
  110. package/project.json +0 -96
  111. package/release-it.json +0 -18
  112. package/src/README.md +0 -61
  113. package/src/assets/svg/example_icon.svg +0 -3
  114. package/src/assets/svg/example_icon_white.svg +0 -3
  115. package/src/assets/svg/spinner.svg +0 -3
  116. package/src/assets/svg/spinner_white.svg +0 -3
  117. package/src/helpers/index.ts +0 -4
  118. package/src/helpers/playground.ts +0 -16
  119. package/src/helpers/talesOf.tsx +0 -42
  120. package/src/index.ts +0 -2
  121. package/src/lib/components/README.md +0 -49
  122. package/src/lib/components/alert-banner/alert-banner.tsx +0 -34
  123. package/src/lib/components/alert-banner/alert-level-flags.ts +0 -77
  124. package/src/lib/components/alert-banner/index.ts +0 -1
  125. package/src/lib/components/badge/badge-type-flags.ts +0 -72
  126. package/src/lib/components/badge/badge.test.tsx +0 -29
  127. package/src/lib/components/badge/badge.tsx +0 -22
  128. package/src/lib/components/badge/index.ts +0 -1
  129. package/src/lib/components/badge/stories/badge.stories.mdx +0 -44
  130. package/src/lib/components/badge/stories/components.tsx +0 -49
  131. package/src/lib/components/card/atoms/index.ts +0 -1
  132. package/src/lib/components/card/card.test.tsx +0 -162
  133. package/src/lib/components/card/card.tsx +0 -78
  134. package/src/lib/components/card/components/card-alert-banner-slot.tsx +0 -16
  135. package/src/lib/components/card/components/card-controls-slot.tsx +0 -19
  136. package/src/lib/components/card/components/card-section-slot.tsx +0 -51
  137. package/src/lib/components/card/components/index.ts +0 -3
  138. package/src/lib/components/card/index.ts +0 -2
  139. package/src/lib/components/card/molecules/index.ts +0 -1
  140. package/src/lib/components/card/molecules/left-right-card.test.tsx +0 -89
  141. package/src/lib/components/card/molecules/left-right-card.tsx +0 -63
  142. package/src/lib/components/card/storybook/card.stories.mdx +0 -100
  143. package/src/lib/components/card/storybook/components.tsx +0 -223
  144. package/src/lib/components/checkbox/checkbox.test.tsx +0 -39
  145. package/src/lib/components/checkbox/checkbox.tsx +0 -63
  146. package/src/lib/components/checkbox/helpers.tsx +0 -100
  147. package/src/lib/components/checkbox/index.tsx +0 -1
  148. package/src/lib/components/checkbox/stories/checkbox.stories.mdx +0 -57
  149. package/src/lib/components/checkbox/stories/components.tsx +0 -84
  150. package/src/lib/components/divider/divider-type-flags.tsx +0 -37
  151. package/src/lib/components/divider/divider.test.tsx +0 -34
  152. package/src/lib/components/divider/divider.tsx +0 -37
  153. package/src/lib/components/divider/index.tsx +0 -1
  154. package/src/lib/components/divider/stories/components.tsx +0 -13
  155. package/src/lib/components/divider/stories/divider.stories.mdx +0 -44
  156. package/src/lib/components/flag/flag-size-flags.tsx +0 -55
  157. package/src/lib/components/flag/flag.list.tsx +0 -788
  158. package/src/lib/components/flag/flag.test.tsx +0 -65
  159. package/src/lib/components/flag/flag.tsx +0 -97
  160. package/src/lib/components/flag/index.tsx +0 -1
  161. package/src/lib/components/flag/stories/components.tsx +0 -403
  162. package/src/lib/components/flag/stories/flag.stories.mdx +0 -48
  163. package/src/lib/components/flag/stories/playGround-select.tsx +0 -145
  164. package/src/lib/components/icon/icon-list.tsx +0 -135
  165. package/src/lib/components/icon/icon.test.tsx +0 -48
  166. package/src/lib/components/icon/icon.tsx +0 -181
  167. package/src/lib/components/icon/index.tsx +0 -1
  168. package/src/lib/components/icon/stories/components.tsx +0 -282
  169. package/src/lib/components/icon/stories/icon.stories.mdx +0 -65
  170. package/src/lib/components/index.ts +0 -19
  171. package/src/lib/components/input-field/components/index.ts +0 -2
  172. package/src/lib/components/input-field/components/labeled-input.tsx +0 -54
  173. package/src/lib/components/input-field/components/stepper.tsx +0 -60
  174. package/src/lib/components/input-field/index.ts +0 -6
  175. package/src/lib/components/input-field/input-field.test.tsx +0 -107
  176. package/src/lib/components/input-field/input-field.tsx +0 -126
  177. package/src/lib/components/input-field/input-number.tsx +0 -41
  178. package/src/lib/components/input-field/input-text.tsx +0 -30
  179. package/src/lib/components/input-field/storybook/components.tsx +0 -327
  180. package/src/lib/components/input-field/storybook/input-field.stories.mdx +0 -113
  181. package/src/lib/components/layout/flex.tsx +0 -22
  182. package/src/lib/components/layout/grid-layout.tsx +0 -40
  183. package/src/lib/components/layout/index.ts +0 -3
  184. package/src/lib/components/layout/left-right-layout.tsx +0 -67
  185. package/src/lib/components/link/index.ts +0 -1
  186. package/src/lib/components/link/link.test.tsx +0 -29
  187. package/src/lib/components/link/link.tsx +0 -56
  188. package/src/lib/components/link/storybook/link.stories.mdx +0 -52
  189. package/src/lib/components/molecules/avatar/avatar-size-flags.tsx +0 -55
  190. package/src/lib/components/molecules/avatar/avatar.test.tsx +0 -114
  191. package/src/lib/components/molecules/avatar/avatar.tsx +0 -80
  192. package/src/lib/components/molecules/avatar/index.tsx +0 -1
  193. package/src/lib/components/molecules/avatar/stories/avatar.stories.mdx +0 -52
  194. package/src/lib/components/molecules/avatar/stories/components.tsx +0 -36
  195. package/src/lib/components/molecules/button/button-flags.tsx +0 -340
  196. package/src/lib/components/molecules/button/button.test.tsx +0 -77
  197. package/src/lib/components/molecules/button/button.tsx +0 -214
  198. package/src/lib/components/molecules/button/index.tsx +0 -1
  199. package/src/lib/components/molecules/button/stories/button.stories.mdx +0 -105
  200. package/src/lib/components/molecules/button/stories/components.tsx +0 -84
  201. package/src/lib/components/molecules/index.ts +0 -3
  202. package/src/lib/components/molecules/input-checkbox/index.tsx +0 -1
  203. package/src/lib/components/molecules/input-checkbox/input-checkbox.test.tsx +0 -34
  204. package/src/lib/components/molecules/input-checkbox/input-checkbox.tsx +0 -49
  205. package/src/lib/components/molecules/input-checkbox/stories/components.tsx +0 -53
  206. package/src/lib/components/molecules/input-checkbox/stories/input-checkbox.stories.mdx +0 -49
  207. package/src/lib/components/organisms/index.ts +0 -1
  208. package/src/lib/components/organisms/multi-choice-list/index.tsx +0 -1
  209. package/src/lib/components/organisms/multi-choice-list/multi-choice-list.test.tsx +0 -33
  210. package/src/lib/components/organisms/multi-choice-list/multi-choice-list.tsx +0 -52
  211. package/src/lib/components/organisms/multi-choice-list/stories/components.tsx +0 -124
  212. package/src/lib/components/organisms/multi-choice-list/stories/multi-choice-list.stories.mdx +0 -99
  213. package/src/lib/components/spinner/index.tsx +0 -1
  214. package/src/lib/components/spinner/spinner-size-flags.tsx +0 -39
  215. package/src/lib/components/spinner/spinner.test.tsx +0 -31
  216. package/src/lib/components/spinner/spinner.tsx +0 -54
  217. package/src/lib/components/spinner/stories/components.tsx +0 -39
  218. package/src/lib/components/spinner/stories/spinner.stories.mdx +0 -35
  219. package/src/lib/components/tabs/components/index.ts +0 -1
  220. package/src/lib/components/tabs/components/tab.tsx +0 -62
  221. package/src/lib/components/tabs/index.tsx +0 -1
  222. package/src/lib/components/tabs/storybook/components.tsx +0 -282
  223. package/src/lib/components/tabs/storybook/tabs.stories.mdx +0 -97
  224. package/src/lib/components/tabs/tabs.test.tsx +0 -86
  225. package/src/lib/components/tabs/tabs.tsx +0 -101
  226. package/src/lib/components/tag/components/close-button.tsx +0 -85
  227. package/src/lib/components/tag/components/index.ts +0 -2
  228. package/src/lib/components/tag/components/tag-label.tsx +0 -44
  229. package/src/lib/components/tag/index.tsx +0 -1
  230. package/src/lib/components/tag/stories/components.tsx +0 -86
  231. package/src/lib/components/tag/stories/tag.stories.mdx +0 -42
  232. package/src/lib/components/tag/tag.test.tsx +0 -36
  233. package/src/lib/components/tag/tag.tsx +0 -33
  234. package/src/lib/components/thumbnail/index.tsx +0 -1
  235. package/src/lib/components/thumbnail/stories/thumbnail.stories.mdx +0 -34
  236. package/src/lib/components/thumbnail/thumbnail-size-flags.tsx +0 -41
  237. package/src/lib/components/thumbnail/thumbnail.test.tsx +0 -51
  238. package/src/lib/components/thumbnail/thumbnail.tsx +0 -45
  239. package/src/lib/components/typography/index.ts +0 -1
  240. package/src/lib/components/typography/storybook/components.tsx +0 -288
  241. package/src/lib/components/typography/storybook/typography.stories.mdx +0 -90
  242. package/src/lib/components/typography/typography.test.tsx +0 -97
  243. package/src/lib/components/typography/typography.tsx +0 -99
  244. package/src/lib/foundations/color-system/base-palette/base-palette.stories.tsx +0 -123
  245. package/src/lib/foundations/color-system/base-palette/base-palette.ts +0 -93
  246. package/src/lib/foundations/color-system/base-palette/index.ts +0 -1
  247. package/src/lib/foundations/color-system/color-guidelines/color-guidelines.stories.mdx +0 -85
  248. package/src/lib/foundations/color-system/color-guidelines/color-guidelines.stories.tsx +0 -231
  249. package/src/lib/foundations/color-system/color-guidelines/color-guidelines.ts +0 -160
  250. package/src/lib/foundations/color-system/color-guidelines/index.ts +0 -1
  251. package/src/lib/foundations/color-system/components/color-sample.tsx +0 -99
  252. package/src/lib/foundations/color-system/components/index.ts +0 -1
  253. package/src/lib/foundations/color-system/index.ts +0 -1
  254. package/src/lib/foundations/index.ts +0 -4
  255. package/src/lib/foundations/shadows/components.tsx +0 -59
  256. package/src/lib/foundations/shadows/index.ts +0 -1
  257. package/src/lib/foundations/shadows/shadows.stories.mdx +0 -71
  258. package/src/lib/foundations/shadows/shadows.tsx +0 -47
  259. package/src/lib/foundations/spacing/index.ts +0 -1
  260. package/src/lib/foundations/spacing/spacing-guidelines.ts +0 -24
  261. package/src/lib/foundations/spacing/spacing.stories.mdx +0 -51
  262. package/src/lib/foundations/spacing/spacing.ts +0 -18
  263. package/src/lib/foundations/typography/constants.ts +0 -25
  264. package/src/lib/foundations/typography/fonts.ts +0 -205
  265. package/src/lib/foundations/typography/index.tsx +0 -1
  266. package/src/lib/foundations/typography/text-aspect-flags.ts +0 -61
  267. package/src/lib/foundations/typography/typography.tsx +0 -102
  268. package/src/lib/helpers/generic-types.ts +0 -44
  269. package/src/lib/helpers/index.ts +0 -6
  270. package/src/lib/helpers/nothing.tsx +0 -18
  271. package/src/lib/helpers/safe-navigation.ts +0 -44
  272. package/src/lib/helpers/slots.test.tsx +0 -98
  273. package/src/lib/helpers/slots.tsx +0 -157
  274. package/src/lib/helpers/strings.test.ts +0 -47
  275. package/src/lib/helpers/strings.ts +0 -16
  276. package/tsconfig.json +0 -35
  277. package/tsconfig.lib.json +0 -28
  278. package/tsconfig.spec.json +0 -21
@@ -1,67 +1,50 @@
1
- export type Hex = `#${string}`
2
-
3
- export function clamp(a: number, b: number, c: number) {
4
- return Math.max(a, Math.min(b, c))
5
- }
6
-
7
- export function toHex(n: number, length: number): Hex {
8
- return `#${n.toString(16).padStart(length, '0').toUpperCase()}`
9
- }
10
-
11
- export function concatHex(a: Hex, b: Hex): Hex {
12
- return `#${a.slice(1) + b.slice(1)}`
13
- }
14
-
15
- /** given an array of boolean flags, bitwiseOr interprets them as an unsigned integer
16
- *
17
- * ```ts
18
- * bitwiseOr([false, true, false, true]) => 5 // 0b0101
19
- * ```
20
- *
21
- * This is useful for indexing into an enum:
22
- *
23
- * ```ts
24
- * const enum Level {
25
- * default = 0,
26
- * info = 0,
27
- * danger = 1,
28
- * warning = 2
29
- * }
30
- *
31
- * interface IProps {
32
- * info?: boolean
33
- * danger?: boolean
34
- * warning?: boolean
35
- * }
36
- *
37
- * function toLevel(n: number): Level {
38
- * switch (n) {
39
- * case Level.info: return Level.info
40
- * case Level.danger: return Level.danger
41
- * case Level.warning: return Level.warning
42
- * default: return Level.default
43
- * }
44
- * }
45
- *
46
- * const level = bitwiseOr([props.info, props.danger, props.warning])
47
- *
48
- * const levelEnum = toLevel(level)
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.0",
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
@@ -1,12 +0,0 @@
1
- {
2
- "presets": [
3
- [
4
- "@nrwl/react/babel",
5
- {
6
- "runtime": "automatic",
7
- "useBuiltIns": "usage"
8
- }
9
- ]
10
- ],
11
- "plugins": [["styled-components", { "pure": true, "ssr": true }]]
12
- }
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
- }
@@ -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
- }
@@ -1,7 +0,0 @@
1
- import { addons } from '@storybook/addons'
2
-
3
- addons.setConfig({
4
- sidebar: {
5
- showRoots: true,
6
- },
7
- })
@@ -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
- ]
@@ -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
@@ -1,2 +0,0 @@
1
- import '@testing-library/jest-dom'
2
- import 'jest-axe/extend-expect'
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.