@hlf-fe/pulmo-ui 1.0.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.
Files changed (44) hide show
  1. package/README.md +54 -0
  2. package/dist/App.d.ts +3 -0
  3. package/dist/App.js +10 -0
  4. package/dist/components/buttons/button/button.d.ts +25 -0
  5. package/dist/components/buttons/button/button.js +80 -0
  6. package/dist/components/buttons/button/button.stories.d.ts +9 -0
  7. package/dist/components/buttons/button/button.stories.js +30 -0
  8. package/dist/hoc/withDefaultTheme.d.ts +1 -0
  9. package/dist/hoc/withDefaultTheme.js +12 -0
  10. package/dist/index.d.ts +3 -0
  11. package/dist/index.js +3 -0
  12. package/dist/main.d.ts +1 -0
  13. package/dist/main.js +6 -0
  14. package/dist/stories/Button.d.ts +14 -0
  15. package/dist/stories/Button.js +20 -0
  16. package/dist/stories/Button.stories.d.ts +23 -0
  17. package/dist/stories/Button.stories.js +44 -0
  18. package/dist/stories/Header.d.ts +12 -0
  19. package/dist/stories/Header.js +4 -0
  20. package/dist/stories/Header.stories.d.ts +18 -0
  21. package/dist/stories/Header.stories.js +26 -0
  22. package/dist/stories/Page.d.ts +3 -0
  23. package/dist/stories/Page.js +7 -0
  24. package/dist/stories/Page.stories.d.ts +12 -0
  25. package/dist/stories/Page.stories.js +24 -0
  26. package/dist/styles/mixins.d.ts +50 -0
  27. package/dist/styles/mixins.js +353 -0
  28. package/dist/styles/styles/mixins/theme-mixins.d.ts +5 -0
  29. package/dist/styles/styles/mixins/theme-mixins.js +37 -0
  30. package/dist/styles/styles/mixins/units.d.ts +3 -0
  31. package/dist/styles/styles/mixins/units.js +3 -0
  32. package/dist/styles/styles/mixins.d.ts +48 -0
  33. package/dist/styles/styles/mixins.js +336 -0
  34. package/dist/styles/styles/theme.d.ts +135 -0
  35. package/dist/styles/styles/theme.js +77 -0
  36. package/dist/styles/theme.d.ts +135 -0
  37. package/dist/styles/theme.js +84 -0
  38. package/dist/styles/types.d.ts +3 -0
  39. package/dist/styles/types.js +1 -0
  40. package/dist/styles/units.d.ts +3 -0
  41. package/dist/styles/units.js +3 -0
  42. package/dist/styles/withDefaultTheme.d.ts +1 -0
  43. package/dist/styles/withDefaultTheme.js +12 -0
  44. package/package.json +67 -0
@@ -0,0 +1,353 @@
1
+ import { css } from "styled-components";
2
+ import { BREAKPOINT_VALUES, VARIABLES, SPACING, COLORS } from "./theme";
3
+ import { rem, em, relUnit } from "./units";
4
+ export const media = {
5
+ XS: (...args) => css `
6
+ @media (min-width: ${em(BREAKPOINT_VALUES.XS)}) {
7
+ ${css(...args)};
8
+ }
9
+ `,
10
+ S: (...args) => css `
11
+ @media (min-width: ${em(BREAKPOINT_VALUES.S)}) {
12
+ ${css(...args)};
13
+ }
14
+ `,
15
+ S_ALT: (...args) => css `
16
+ @media (min-width: ${em(BREAKPOINT_VALUES.S_ALT)}) {
17
+ ${css(...args)};
18
+ }
19
+ `,
20
+ M: (...args) => css `
21
+ @media (min-width: ${em(BREAKPOINT_VALUES.M)}) {
22
+ ${css(...args)};
23
+ }
24
+ `,
25
+ L: (...args) => css `
26
+ @media (min-width: ${em(BREAKPOINT_VALUES.L)}) {
27
+ ${css(...args)};
28
+ }
29
+ `,
30
+ XL: (...args) => css `
31
+ @media (min-width: ${em(BREAKPOINT_VALUES.XL)}) {
32
+ ${css(...args)};
33
+ }
34
+ `,
35
+ XXL: (...args) => css `
36
+ @media (min-width: ${em(BREAKPOINT_VALUES.XXL)}) {
37
+ ${css(...args)};
38
+ }
39
+ `,
40
+ IOS: (...args) => css `
41
+ @supports (-webkit-touch-callout: none) {
42
+ ${css(...args)};
43
+ }
44
+ `,
45
+ };
46
+ export const dynamicFontSize = (minFontSize, maxFontSize, minScreenWidth = BREAKPOINT_VALUES.XS, maxScreenWidth = BREAKPOINT_VALUES.XXL) => `
47
+ font-size: ${rem(minFontSize)};
48
+ @media screen and (min-width: ${em(minScreenWidth)}) {
49
+ font-size: calc(${rem(minFontSize)} + (${relUnit(maxFontSize)} - ${relUnit(minFontSize)}) * ((100vw - ${em(minScreenWidth)}) / (${relUnit(maxScreenWidth)} - ${relUnit(minScreenWidth)})));
50
+ }
51
+ @media screen and (min-width: ${em(maxScreenWidth)}) {
52
+ font-size: ${rem(maxFontSize)};
53
+ }
54
+ `;
55
+ export const siteWidthRowS = () => css `
56
+ margin-left: ${SPACING.spacingXS};
57
+ margin-right: ${SPACING.spacingXS};
58
+ margin-bottom: ${rem(20)};
59
+ margin-top: ${rem(20)};
60
+ max-width: ${VARIABLES.siteWidthS};
61
+
62
+ ${media.XS `
63
+ margin-left: ${SPACING.spacingM};
64
+ margin-right: ${SPACING.spacingM};
65
+ `}
66
+
67
+ ${media.S_ALT `
68
+ margin-left: auto;
69
+ margin-right: auto;
70
+ `}
71
+
72
+ ${media.M `
73
+ margin-bottom: ${SPACING.spacingXL};
74
+ margin-top: ${SPACING.spacingXL};
75
+ `}
76
+
77
+ ${media.L `
78
+ margin-top: ${SPACING.spacingXXL};
79
+ margin-bottom: ${SPACING.spacingXXL};
80
+ `}
81
+ `;
82
+ export const siteWidthRow = () => css `
83
+ margin-left: ${SPACING.spacingXS};
84
+ margin-right: ${SPACING.spacingXS};
85
+ margin-bottom: ${rem(20)};
86
+ margin-top: ${rem(20)};
87
+ max-width: ${VARIABLES.siteWidth};
88
+
89
+ ${media.XS `
90
+ margin-left: ${SPACING.spacingM};
91
+ margin-right: ${SPACING.spacingM};
92
+ `}
93
+
94
+ ${media.M `
95
+ margin-bottom: ${SPACING.spacingXL};
96
+ margin-top: ${SPACING.spacingXL};
97
+ margin-left: ${rem(24)};
98
+ margin-right: ${rem(24)};
99
+ `}
100
+
101
+ ${media.L `
102
+ margin-top: ${SPACING.spacingXXL};
103
+ margin-right: auto;
104
+ margin-bottom: ${SPACING.spacingXXL};
105
+ margin-left: auto;
106
+ `}
107
+ `;
108
+ export const siteWidthRowXL = () => css `
109
+ margin-left: ${SPACING.spacingXS};
110
+ margin-right: ${SPACING.spacingXS};
111
+ margin-bottom: ${rem(20)};
112
+ margin-top: ${rem(20)};
113
+ max-width: ${VARIABLES.siteWidthXL};
114
+
115
+ ${media.XS `
116
+ margin-left: ${SPACING.spacingM};
117
+ margin-right: ${SPACING.spacingM};
118
+ `}
119
+
120
+ ${media.M `
121
+ margin-bottom: ${SPACING.spacingXL};
122
+ margin-top: ${SPACING.spacingXL};
123
+ margin-left: ${rem(24)};
124
+ margin-right: ${rem(24)};
125
+ `}
126
+
127
+ ${media.XL `
128
+ margin-top: ${SPACING.spacingXXL};
129
+ margin-right: auto;
130
+ margin-bottom: ${SPACING.spacingXXL};
131
+ margin-left: auto;
132
+ `}
133
+ `;
134
+ export const fullWidthRow = () => css `
135
+ padding-top: ${SPACING.spacingL};
136
+ padding-right: ${SPACING.spacingXS};
137
+ padding-bottom: ${SPACING.spacingL};
138
+ padding-left: ${SPACING.spacingXS};
139
+ margin-bottom: ${rem(20)};
140
+ margin-top: ${rem(20)};
141
+
142
+ ${media.XS `
143
+ padding-left: ${SPACING.spacingM};
144
+ padding-right: ${SPACING.spacingM};
145
+ `}
146
+
147
+ ${media.M `
148
+ padding-top: ${SPACING.spacingXL};
149
+ padding-right: ${rem(24)};
150
+ padding-bottom: ${SPACING.spacingXL};
151
+ padding-left: ${rem(24)};
152
+ margin-bottom: ${SPACING.spacingXL};
153
+ margin-top: ${SPACING.spacingXL};
154
+ `}
155
+
156
+ ${media.L `
157
+ padding-left: 0;
158
+ padding-right: 0;
159
+ margin-bottom: ${SPACING.spacingXXL};
160
+ margin-top: ${SPACING.spacingXXL};
161
+ `}
162
+ `;
163
+ export const fontSize = {
164
+ XS: () => css `
165
+ font-size: ${rem(14)};
166
+ line-height: ${rem(20)};
167
+ `,
168
+ S: () => css `
169
+ font-size: ${rem(16)};
170
+ line-height: ${rem(20)};
171
+
172
+ ${media.M `
173
+ line-height: ${rem(24)};
174
+ `}
175
+ `,
176
+ M: () => css `
177
+ font-size: ${rem(18)};
178
+ line-height: ${rem(24)};
179
+
180
+ ${media.M `
181
+ font-size: ${rem(20)};
182
+ line-height: ${rem(28)};
183
+ `}
184
+ `,
185
+ L: () => css `
186
+ font-size: ${rem(20)};
187
+ line-height: ${rem(28)};
188
+
189
+ ${media.M `
190
+ font-size: ${rem(24)};
191
+ line-height: ${rem(32)};
192
+ `}
193
+
194
+ ${media.L `
195
+ font-size: ${rem(28)};
196
+ line-height: ${rem(40)};
197
+ `}
198
+ `,
199
+ XL: () => css `
200
+ font-size: ${rem(28)};
201
+ line-height: ${rem(36)};
202
+
203
+ ${media.M `
204
+ font-size: ${rem(36)};
205
+ line-height: ${rem(48)};
206
+ `}
207
+
208
+ ${media.L `
209
+ font-size: ${rem(44)};
210
+ line-height: ${rem(52)};
211
+ `}
212
+ `,
213
+ XXL: () => css `
214
+ font-size: ${rem(40)};
215
+ line-height: ${rem(52)};
216
+
217
+ ${media.M `
218
+ font-size: ${rem(56)};
219
+ line-height: ${rem(72)};
220
+ `}
221
+
222
+ ${media.L `
223
+ font-size: ${rem(64)};
224
+ line-height: ${rem(80)};
225
+ `}
226
+ `,
227
+ };
228
+ export const arrow = ({ color = COLORS?.lilac }) => css `
229
+ content: "";
230
+ display: block;
231
+ padding: ${rem(10)};
232
+ background: ${color};
233
+ bottom: 0;
234
+ transform: translateX(-50%) rotate(45deg);
235
+ left: 50%;
236
+ bottom: ${rem(-30)};
237
+ position: absolute;
238
+ `;
239
+ export const buttonSize = {
240
+ S: () => css `
241
+ font-size: ${rem(14)};
242
+ height: ${rem(32)};
243
+ padding: 0 ${rem(16)};
244
+ `,
245
+ M: () => css `
246
+ font-size: ${rem(16)};
247
+ height: ${rem(44)};
248
+ padding: 0 ${rem(24)};
249
+ `,
250
+ L: () => css `
251
+ font-size: ${rem(18)};
252
+ height: ${rem(56)};
253
+ padding: 0 ${rem(24)};
254
+ `,
255
+ };
256
+ export const alertTheme = {
257
+ error: () => css `
258
+ background-color: ${COLORS.pink};
259
+ border: ${rem(1)} solid rgba(216, 17, 37, 0.4);
260
+ font-size: ${rem(14)};
261
+ `,
262
+ warning: () => css `
263
+ background-color: ${COLORS.yellowLight};
264
+ border: ${rem(1)} solid ${COLORS.yellowDark};
265
+ font-size: ${rem(14)};
266
+ `,
267
+ info: () => css `
268
+ background-color: ${COLORS.lightBlue};
269
+ border: ${rem(1)} solid ${COLORS.mediumBlue};
270
+ font-size: ${rem(14)};
271
+ `,
272
+ success: () => css `
273
+ background-color: ${COLORS.mint};
274
+ border: none;
275
+ `,
276
+ default: () => css `
277
+ background-color: ${COLORS.lightBlue};
278
+ border: none;
279
+ `,
280
+ };
281
+ export const boxShadow = {
282
+ default: () => css `
283
+ box-shadow: rgba(0, 0, 0, 0.2) 0rem 0.75rem 1.75rem 0rem,
284
+ rgba(0, 0, 0, 0.1) 0rem 0.125rem 0.25rem 0rem,
285
+ rgba(255, 255, 255, 0.05) 0rem 0rem 0rem 0.063rem inset;
286
+ `,
287
+ };
288
+ export const buttonLinkStyling = {
289
+ inverted: () => css `
290
+ display: block;
291
+ font-family: ${({ theme }) => theme.valueBold};
292
+ font-weight: 400;
293
+ font-size: ${rem(16)};
294
+ width: fit-content;
295
+ color: ${({ theme }) => theme.red};
296
+ background-color: transparent;
297
+ border: ${rem(2)} solid ${({ theme }) => theme.red};
298
+ border-radius: ${rem(5)};
299
+ transition: background-color 0.3s ease-out;
300
+ padding: 0 ${rem(24)};
301
+ line-height: 2.5;
302
+ text-decoration: none;
303
+
304
+ &:hover,
305
+ :active,
306
+ :focus-visible {
307
+ background-color: ${({ theme }) => theme.red};
308
+ color: ${({ theme }) => theme.white};
309
+ }
310
+
311
+ &:focus-visible {
312
+ outline: ${rem(2)} solid ${({ theme }) => theme.blackLight};
313
+ outline-offset: ${rem(2)};
314
+ }
315
+ `,
316
+ text: () => css `
317
+ font-family: ${({ theme }) => theme.valueBold};
318
+ font-weight: 400;
319
+ font-size: ${rem(16)};
320
+ width: fit-content;
321
+ color: ${({ theme }) => theme.red};
322
+ text-decoration: underline;
323
+ text-decoration-thickness: ${rem(2)};
324
+ text-underline-offset: ${rem(6)};
325
+ line-height: ${rem(26)};
326
+ outline-offset: ${rem(2)};
327
+
328
+ ${media.L `
329
+ font-size: ${rem(18)};
330
+ `}
331
+
332
+ &:hover, :active, :focus-visible {
333
+ color: ${({ theme }) => theme.redHover};
334
+ text-decoration: none;
335
+ }
336
+ `,
337
+ };
338
+ export const linkStyling = ({ fontSize = 16 }) => css `
339
+ font-family: ${({ theme }) => theme.valueBold};
340
+ color: ${({ theme }) => theme.redClear};
341
+ font-size: ${rem(fontSize)};
342
+ line-height: ${rem(22)};
343
+ font-weight: 400;
344
+ text-decoration: underline;
345
+ outline-offset: ${rem(2)};
346
+
347
+ &:hover,
348
+ :active,
349
+ :focus-visible {
350
+ color: ${({ theme }) => theme.redHover};
351
+ text-decoration: none;
352
+ }
353
+ `;
@@ -0,0 +1,5 @@
1
+ import { SIZES, THEME_COLORS_BY_HEX, THEME_COLORS_BY_NAME } from '../../models/theme';
2
+ export declare const themeColors: (color: THEME_COLORS_BY_HEX | THEME_COLORS_BY_NAME) => any;
3
+ export declare const themeSpacing: (size: SIZES) => any;
4
+ export declare const themeBorderRadius: (size: "sm" | "md" | "lg") => string;
5
+ export declare const themeElevation: (elevation: 0 | 1) => string;
@@ -0,0 +1,37 @@
1
+ import { COLORS, THEME_SPACING } from '../theme';
2
+ import { rem } from './units';
3
+ export const themeColors = (color) => {
4
+ const THEME_COLORS = {
5
+ green: COLORS.mint,
6
+ blue: COLORS.skyBlue,
7
+ purple: COLORS.lavender,
8
+ pink: COLORS.pink,
9
+ white: COLORS.white,
10
+ };
11
+ return THEME_COLORS[color] || color;
12
+ };
13
+ export const themeSpacing = (size) => {
14
+ const THEME_SPACING_SIZES = {
15
+ sm: THEME_SPACING.sm,
16
+ md: THEME_SPACING.md,
17
+ lg: THEME_SPACING.lg,
18
+ xl: THEME_SPACING.xl,
19
+ none: '0',
20
+ };
21
+ return THEME_SPACING_SIZES[size] || THEME_SPACING.md;
22
+ };
23
+ export const themeBorderRadius = (size) => {
24
+ const BORDER_RADIUS = {
25
+ sm: rem(6),
26
+ md: rem(8),
27
+ lg: rem(12),
28
+ };
29
+ return BORDER_RADIUS[size] || BORDER_RADIUS.sm;
30
+ };
31
+ export const themeElevation = (elevation) => {
32
+ const ELEVETION = {
33
+ 0: 'none',
34
+ 1: `0 ${rem(4)} ${rem(16)} 0 rgba(0, 0, 0, 0.08)`,
35
+ };
36
+ return ELEVETION[elevation] || ELEVETION[0];
37
+ };
@@ -0,0 +1,3 @@
1
+ export declare const relUnit: (absoluteUnit: number) => number;
2
+ export declare const rem: (absoluteUnit: number) => string;
3
+ export declare const em: (absoluteUnit: number) => string;
@@ -0,0 +1,3 @@
1
+ export const relUnit = (absoluteUnit) => absoluteUnit / 16;
2
+ export const rem = (absoluteUnit) => `${relUnit(absoluteUnit)}rem`;
3
+ export const em = (absoluteUnit) => `${relUnit(absoluteUnit)}em`;
@@ -0,0 +1,48 @@
1
+ import { css } from 'styled-components';
2
+ import { em, rem } from './mixins/units';
3
+ import { themeColors, themeSpacing, themeBorderRadius, themeElevation } from './mixins/theme-mixins';
4
+ export { themeColors, themeSpacing, themeBorderRadius, themeElevation, em, rem };
5
+ export declare const media: {
6
+ XS: (styles: import("styled-components/dist/types").Styles<object>, ...interpolations: import("styled-components").Interpolation<object>[]) => import("styled-components").RuleSet<object>;
7
+ S: (styles: import("styled-components/dist/types").Styles<object>, ...interpolations: import("styled-components").Interpolation<object>[]) => import("styled-components").RuleSet<object>;
8
+ S_ALT: (styles: import("styled-components/dist/types").Styles<object>, ...interpolations: import("styled-components").Interpolation<object>[]) => import("styled-components").RuleSet<object>;
9
+ M: (styles: import("styled-components/dist/types").Styles<object>, ...interpolations: import("styled-components").Interpolation<object>[]) => import("styled-components").RuleSet<object>;
10
+ L: (styles: import("styled-components/dist/types").Styles<object>, ...interpolations: import("styled-components").Interpolation<object>[]) => import("styled-components").RuleSet<object>;
11
+ XL: (styles: import("styled-components/dist/types").Styles<object>, ...interpolations: import("styled-components").Interpolation<object>[]) => import("styled-components").RuleSet<object>;
12
+ XXL: (styles: import("styled-components/dist/types").Styles<object>, ...interpolations: import("styled-components").Interpolation<object>[]) => import("styled-components").RuleSet<object>;
13
+ IOS: (styles: import("styled-components/dist/types").Styles<object>, ...interpolations: import("styled-components").Interpolation<object>[]) => import("styled-components").RuleSet<object>;
14
+ };
15
+ export declare const siteWidthRowS: () => import("styled-components").RuleSet<object>;
16
+ export declare const siteWidthRow: () => import("styled-components").RuleSet<object>;
17
+ export declare const siteWidthRowXL: () => import("styled-components").RuleSet<object>;
18
+ export declare const fullWidthRow: () => import("styled-components").RuleSet<object>;
19
+ export declare const fontSize: {
20
+ XS: () => import("styled-components").RuleSet<object>;
21
+ S: () => import("styled-components").RuleSet<object>;
22
+ M: () => import("styled-components").RuleSet<object>;
23
+ L: () => import("styled-components").RuleSet<object>;
24
+ XL: () => import("styled-components").RuleSet<object>;
25
+ XXL: () => import("styled-components").RuleSet<object>;
26
+ };
27
+ export declare const buttonSize: {
28
+ S: () => import("styled-components").RuleSet<object>;
29
+ M: () => import("styled-components").RuleSet<object>;
30
+ L: () => import("styled-components").RuleSet<object>;
31
+ };
32
+ export declare const alertTheme: {
33
+ error: () => import("styled-components").RuleSet<object>;
34
+ warning: () => import("styled-components").RuleSet<object>;
35
+ info: () => import("styled-components").RuleSet<object>;
36
+ success: () => import("styled-components").RuleSet<object>;
37
+ default: () => import("styled-components").RuleSet<object>;
38
+ };
39
+ export declare const boxShadow: {
40
+ default: () => import("styled-components").RuleSet<object>;
41
+ };
42
+ export declare const buttonLinkStyling: {
43
+ inverted: () => import("styled-components").RuleSet<object>;
44
+ text: () => import("styled-components").RuleSet<object>;
45
+ };
46
+ export declare const linkStyling: ({ fontSize }: {
47
+ fontSize?: number;
48
+ }) => import("styled-components").RuleSet<object>;