@helpdice/theme 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 (134) hide show
  1. package/LICENSE +20 -0
  2. package/README.md +37 -0
  3. package/dist/css-baseline/css-baseline.d.ts +9 -0
  4. package/dist/css-baseline/index.d.ts +1 -0
  5. package/dist/css-baseline/index.js +868 -0
  6. package/dist/index.d.ts +12 -0
  7. package/dist/index.js +1516 -0
  8. package/dist/shared/css-transition.d.ts +13 -0
  9. package/dist/styled-jsx.cjs.js +748 -0
  10. package/dist/themes/index.d.ts +4 -0
  11. package/dist/themes/index.js +299 -0
  12. package/dist/themes/presets/dark.d.ts +8 -0
  13. package/dist/themes/presets/default.d.ts +8 -0
  14. package/dist/themes/presets/index.d.ts +90 -0
  15. package/dist/themes/presets/shared.d.ts +4 -0
  16. package/dist/themes/themes.d.ts +18 -0
  17. package/dist/ui-provider/index.d.ts +3 -0
  18. package/dist/ui-provider/index.js +1425 -0
  19. package/dist/ui-provider/theme-provider.d.ts +8 -0
  20. package/dist/ui-provider/ui-provider.d.ts +8 -0
  21. package/dist/use-all-themes/all-themes-context.d.ts +7 -0
  22. package/dist/use-all-themes/index.d.ts +3 -0
  23. package/dist/use-all-themes/index.js +311 -0
  24. package/dist/use-classes/index.d.ts +2 -0
  25. package/dist/use-classes/index.js +48 -0
  26. package/dist/use-classes/use-classes.d.ts +4 -0
  27. package/dist/use-current-state/index.d.ts +2 -0
  28. package/dist/use-current-state/index.js +72 -0
  29. package/dist/use-current-state/use-current-state.d.ts +4 -0
  30. package/dist/use-media-query/index.js +444 -0
  31. package/dist/use-theme/index.d.ts +2 -0
  32. package/dist/use-theme/index.js +309 -0
  33. package/dist/use-theme/theme-context.d.ts +4 -0
  34. package/dist/use-toasts/helpers.d.ts +18 -0
  35. package/dist/use-toasts/index.js +204 -0
  36. package/dist/use-toasts/toast-container.d.ts +3 -0
  37. package/dist/use-toasts/toast-item.d.ts +8 -0
  38. package/dist/use-toasts/use-toast.d.ts +40 -0
  39. package/dist/utils/collections.d.ts +15 -0
  40. package/dist/utils/layouts.d.ts +20 -0
  41. package/dist/utils/prop-types.d.ts +19 -0
  42. package/dist/utils/types.d.ts +3 -0
  43. package/dist/utils/use-current-state.d.ts +2 -0
  44. package/dist/utils/use-hd-ui-context.d.ts +16 -0
  45. package/dist/utils/use-portal.d.ts +2 -0
  46. package/dist/utils/use-ssr.d.ts +6 -0
  47. package/esm/css-baseline/css-baseline.d.ts +9 -0
  48. package/esm/css-baseline/css-baseline.js +23 -0
  49. package/esm/css-baseline/index.d.ts +1 -0
  50. package/esm/css-baseline/index.js +2 -0
  51. package/esm/index.d.ts +12 -0
  52. package/esm/index.js +11 -0
  53. package/esm/shared/backdrop.js +66 -0
  54. package/esm/shared/css-transition.d.ts +13 -0
  55. package/esm/shared/css-transition.js +65 -0
  56. package/esm/shared/dropdown.js +99 -0
  57. package/esm/shared/ellipsis.js +13 -0
  58. package/esm/shared/expand.js +86 -0
  59. package/esm/shared/highlight.js +46 -0
  60. package/esm/styled-jsx-server.es.js +5 -0
  61. package/esm/styled-jsx.es.js +737 -0
  62. package/esm/themes/index.d.ts +4 -0
  63. package/esm/themes/index.js +2 -0
  64. package/esm/themes/presets/dark.d.ts +8 -0
  65. package/esm/themes/presets/dark.js +64 -0
  66. package/esm/themes/presets/default.d.ts +8 -0
  67. package/esm/themes/presets/default.js +64 -0
  68. package/esm/themes/presets/index.d.ts +90 -0
  69. package/esm/themes/presets/index.js +1 -0
  70. package/esm/themes/presets/shared.d.ts +4 -0
  71. package/esm/themes/presets/shared.js +42 -0
  72. package/esm/themes/themes.d.ts +18 -0
  73. package/esm/themes/themes.js +77 -0
  74. package/esm/ui-provider/index.d.ts +3 -0
  75. package/esm/ui-provider/index.js +4 -0
  76. package/esm/ui-provider/theme-provider.d.ts +8 -0
  77. package/esm/ui-provider/theme-provider.js +45 -0
  78. package/esm/ui-provider/ui-provider.d.ts +8 -0
  79. package/esm/ui-provider/ui-provider.js +55 -0
  80. package/esm/use-all-themes/all-themes-context.d.ts +7 -0
  81. package/esm/use-all-themes/all-themes-context.js +11 -0
  82. package/esm/use-all-themes/index.d.ts +3 -0
  83. package/esm/use-all-themes/index.js +2 -0
  84. package/esm/use-classes/index.d.ts +2 -0
  85. package/esm/use-classes/index.js +2 -0
  86. package/esm/use-classes/use-classes.d.ts +4 -0
  87. package/esm/use-classes/use-classes.js +34 -0
  88. package/esm/use-current-state/index.d.ts +2 -0
  89. package/esm/use-current-state/index.js +2 -0
  90. package/esm/use-current-state/use-current-state.d.ts +4 -0
  91. package/esm/use-current-state/use-current-state.js +23 -0
  92. package/esm/use-media-query/index.js +2 -0
  93. package/esm/use-media-query/use-media-query.js +81 -0
  94. package/esm/use-theme/index.d.ts +2 -0
  95. package/esm/use-theme/index.js +2 -0
  96. package/esm/use-theme/theme-context.d.ts +4 -0
  97. package/esm/use-theme/theme-context.js +9 -0
  98. package/esm/use-toasts/helpers.d.ts +18 -0
  99. package/esm/use-toasts/helpers.js +66 -0
  100. package/esm/use-toasts/index.js +2 -0
  101. package/esm/use-toasts/toast-container.d.ts +3 -0
  102. package/esm/use-toasts/toast-container.js +120 -0
  103. package/esm/use-toasts/toast-item.d.ts +8 -0
  104. package/esm/use-toasts/toast-item.js +45 -0
  105. package/esm/use-toasts/use-toast.d.ts +40 -0
  106. package/esm/use-toasts/use-toast.js +103 -0
  107. package/esm/utils/calculations.js +29 -0
  108. package/esm/utils/collections.d.ts +15 -0
  109. package/esm/utils/collections.js +128 -0
  110. package/esm/utils/color.js +35 -0
  111. package/esm/utils/layouts.d.ts +20 -0
  112. package/esm/utils/layouts.js +73 -0
  113. package/esm/utils/prop-types.d.ts +19 -0
  114. package/esm/utils/prop-types.js +20 -0
  115. package/esm/utils/types.d.ts +3 -0
  116. package/esm/utils/types.js +1 -0
  117. package/esm/utils/use-click-anywhere.js +15 -0
  118. package/esm/utils/use-context-state/create-ui-context.js +50 -0
  119. package/esm/utils/use-context-state/use-context-state.js +40 -0
  120. package/esm/utils/use-current-state.d.ts +2 -0
  121. package/esm/utils/use-current-state.js +2 -0
  122. package/esm/utils/use-default-props.js +17 -0
  123. package/esm/utils/use-dom-observer.js +26 -0
  124. package/esm/utils/use-hd-ui-context.d.ts +16 -0
  125. package/esm/utils/use-hd-ui-context.js +27 -0
  126. package/esm/utils/use-portal.d.ts +2 -0
  127. package/esm/utils/use-portal.js +34 -0
  128. package/esm/utils/use-previous.js +11 -0
  129. package/esm/utils/use-real-shape.js +47 -0
  130. package/esm/utils/use-resize.js +19 -0
  131. package/esm/utils/use-ssr.d.ts +6 -0
  132. package/esm/utils/use-ssr.js +19 -0
  133. package/esm/utils/use-warning.js +13 -0
  134. package/package.json +111 -0
@@ -0,0 +1,4 @@
1
+ import Themes from './themes';
2
+ export type { HUserTheme } from './themes';
3
+ export type { HUIThemes, HUIThemesBreakpoints, BreakpointsItem, HUIThemesExpressiveness, HUIThemesFont, HUIThemesLayout, HUIThemesPalette, } from './presets';
4
+ export default Themes;
@@ -0,0 +1,2 @@
1
+ import Themes from './themes';
2
+ export default Themes;
@@ -0,0 +1,8 @@
1
+ import { HUIThemes, HUIThemesPalette, HUIThemesExpressiveness } from './index';
2
+ export declare const palette: HUIThemesPalette;
3
+ export declare const expressiveness: HUIThemesExpressiveness;
4
+ export declare const font: import("./index").HUIThemesFont;
5
+ export declare const breakpoints: import("./index").HUIThemesBreakpoints;
6
+ export declare const layout: import("./index").HUIThemesLayout;
7
+ export declare const themes: HUIThemes;
8
+ export default themes;
@@ -0,0 +1,64 @@
1
+ import { defaultFont, defaultBreakpoints, defaultLayout } from './shared';
2
+ export var palette = {
3
+ accents_1: '#111',
4
+ accents_2: '#333',
5
+ accents_3: '#444',
6
+ accents_4: '#666',
7
+ accents_5: '#888',
8
+ accents_6: '#999',
9
+ accents_7: '#eaeaea',
10
+ accents_8: '#fafafa',
11
+ background: '#000',
12
+ foreground: '#fff',
13
+ selection: '#f81ce5',
14
+ secondary: '#888',
15
+ code: '#79ffe1',
16
+ border: '#333',
17
+ error: '#e00',
18
+ errorLighter: '#f7d4d6',
19
+ errorLight: '#ff1a1a',
20
+ errorDark: '#c50000',
21
+ success: '#0070f3',
22
+ successLighter: '#d3e5ff',
23
+ successLight: '#3291ff',
24
+ successDark: '#0761d1',
25
+ warning: '#f5a623',
26
+ warningLighter: '#ffefcf',
27
+ warningLight: '#f7b955',
28
+ warningDark: '#ab570a',
29
+ cyan: '#50e3c2',
30
+ cyanLighter: '#aaffec',
31
+ cyanLight: '#79ffe1',
32
+ cyanDark: '#29bc9b',
33
+ violet: '#7928ca',
34
+ violetLighter: '#e3d7fc',
35
+ violetLight: '#8a63d2',
36
+ violetDark: '#4c2889',
37
+ purple: '#f81ce5',
38
+ alert: '#ff0080',
39
+ magenta: '#eb367f',
40
+ link: '#3291ff'
41
+ };
42
+ export var expressiveness = {
43
+ linkStyle: 'none',
44
+ linkHoverStyle: 'none',
45
+ dropdownBoxShadow: '0 0 0 1px #333',
46
+ scrollerStart: 'rgba(255, 255, 255, 1)',
47
+ scrollerEnd: 'rgba(255, 255, 255, 0)',
48
+ shadowSmall: '0 0 0 1px #333',
49
+ shadowMedium: '0 0 0 1px #333',
50
+ shadowLarge: '0 0 0 1px #333',
51
+ portalOpacity: 0.75
52
+ };
53
+ export var font = defaultFont;
54
+ export var breakpoints = defaultBreakpoints;
55
+ export var layout = defaultLayout;
56
+ export var themes = {
57
+ type: 'dark',
58
+ font: font,
59
+ layout: layout,
60
+ palette: palette,
61
+ breakpoints: breakpoints,
62
+ expressiveness: expressiveness
63
+ };
64
+ export default themes;
@@ -0,0 +1,8 @@
1
+ import { HUIThemes, HUIThemesPalette, HUIThemesExpressiveness } from './index';
2
+ export declare const palette: HUIThemesPalette;
3
+ export declare const expressiveness: HUIThemesExpressiveness;
4
+ export declare const font: import("./index").HUIThemesFont;
5
+ export declare const breakpoints: import("./index").HUIThemesBreakpoints;
6
+ export declare const layout: import("./index").HUIThemesLayout;
7
+ export declare const themes: HUIThemes;
8
+ export default themes;
@@ -0,0 +1,64 @@
1
+ import { defaultFont, defaultBreakpoints, defaultLayout } from './shared';
2
+ export var palette = {
3
+ accents_1: '#fafafa',
4
+ accents_2: '#eaeaea',
5
+ accents_3: '#999',
6
+ accents_4: '#888',
7
+ accents_5: '#666',
8
+ accents_6: '#444',
9
+ accents_7: '#333',
10
+ accents_8: '#111',
11
+ background: '#fff',
12
+ foreground: '#000',
13
+ selection: '#79ffe1',
14
+ secondary: '#666',
15
+ code: '#f81ce5',
16
+ border: '#eaeaea',
17
+ error: '#e00',
18
+ errorLight: '#ff1a1a',
19
+ errorLighter: '#f7d4d6',
20
+ errorDark: '#c50000',
21
+ success: '#0070f3',
22
+ successLight: '#3291ff',
23
+ successLighter: '#d3e5ff',
24
+ successDark: '#0761d1',
25
+ warning: '#f5a623',
26
+ warningLight: '#f7b955',
27
+ warningLighter: '#ffefcf',
28
+ warningDark: '#ab570a',
29
+ cyan: '#50e3c2',
30
+ cyanLighter: '#aaffec',
31
+ cyanLight: '#79ffe1',
32
+ cyanDark: '#29bc9b',
33
+ violet: '#7928ca',
34
+ violetLighter: '#e3d7fc',
35
+ violetLight: '#8a63d2',
36
+ violetDark: '#4c2889',
37
+ purple: '#f81ce5',
38
+ alert: '#ff0080',
39
+ magenta: '#eb367f',
40
+ link: '#0070f3'
41
+ };
42
+ export var expressiveness = {
43
+ linkStyle: 'none',
44
+ linkHoverStyle: 'none',
45
+ dropdownBoxShadow: '0 4px 4px 0 rgba(0, 0, 0, 0.02)',
46
+ scrollerStart: 'rgba(255, 255, 255, 1)',
47
+ scrollerEnd: 'rgba(255, 255, 255, 0)',
48
+ shadowSmall: '0 5px 10px rgba(0, 0, 0, 0.12)',
49
+ shadowMedium: '0 8px 30px rgba(0, 0, 0, 0.12)',
50
+ shadowLarge: '0 30px 60px rgba(0, 0, 0, 0.12)',
51
+ portalOpacity: 0.25
52
+ };
53
+ export var font = defaultFont;
54
+ export var breakpoints = defaultBreakpoints;
55
+ export var layout = defaultLayout;
56
+ export var themes = {
57
+ type: 'light',
58
+ font: font,
59
+ layout: layout,
60
+ palette: palette,
61
+ breakpoints: breakpoints,
62
+ expressiveness: expressiveness
63
+ };
64
+ export default themes;
@@ -0,0 +1,90 @@
1
+ export interface HUIThemesPalette {
2
+ accents_1: string;
3
+ accents_2: string;
4
+ accents_3: string;
5
+ accents_4: string;
6
+ accents_5: string;
7
+ accents_6: string;
8
+ accents_7: string;
9
+ accents_8: string;
10
+ background: string;
11
+ foreground: string;
12
+ selection: string;
13
+ secondary: string;
14
+ code: string;
15
+ border: string;
16
+ success: string;
17
+ successLighter: string;
18
+ successLight: string;
19
+ successDark: string;
20
+ error: string;
21
+ errorLighter: string;
22
+ errorLight: string;
23
+ errorDark: string;
24
+ warning: string;
25
+ warningLighter: string;
26
+ warningLight: string;
27
+ warningDark: string;
28
+ cyan: string;
29
+ cyanLighter: string;
30
+ cyanLight: string;
31
+ cyanDark: string;
32
+ violet: string;
33
+ violetLighter: string;
34
+ violetLight: string;
35
+ violetDark: string;
36
+ link: string;
37
+ purple: string;
38
+ magenta: string;
39
+ alert: string;
40
+ }
41
+ export interface HUIThemesExpressiveness {
42
+ linkStyle: string;
43
+ linkHoverStyle: string;
44
+ dropdownBoxShadow: string;
45
+ scrollerStart: string;
46
+ scrollerEnd: string;
47
+ shadowSmall: string;
48
+ shadowMedium: string;
49
+ shadowLarge: string;
50
+ portalOpacity: number;
51
+ }
52
+ export interface HUIThemesLayout {
53
+ gap: string;
54
+ gapNegative: string;
55
+ gapHalf: string;
56
+ gapHalfNegative: string;
57
+ gapQuarter: string;
58
+ gapQuarterNegative: string;
59
+ pageMargin: string;
60
+ pageWidth: string;
61
+ pageWidthWithMargin: string;
62
+ breakpointMobile: string;
63
+ breakpointTablet: string;
64
+ radius: string;
65
+ unit: string;
66
+ }
67
+ export interface HUIThemesFont {
68
+ sans: string;
69
+ mono: string;
70
+ prism: string;
71
+ }
72
+ export interface BreakpointsItem {
73
+ min: string;
74
+ max: string;
75
+ }
76
+ export interface HUIThemesBreakpoints {
77
+ xs: BreakpointsItem;
78
+ sm: BreakpointsItem;
79
+ md: BreakpointsItem;
80
+ lg: BreakpointsItem;
81
+ xl: BreakpointsItem;
82
+ }
83
+ export interface HUIThemes {
84
+ type: string;
85
+ font: HUIThemesFont;
86
+ layout: HUIThemesLayout;
87
+ palette: HUIThemesPalette;
88
+ breakpoints: HUIThemesBreakpoints;
89
+ expressiveness: HUIThemesExpressiveness;
90
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,4 @@
1
+ import { HUIThemesBreakpoints, HUIThemesFont, HUIThemesLayout } from './index';
2
+ export declare const defaultFont: HUIThemesFont;
3
+ export declare const defaultBreakpoints: HUIThemesBreakpoints;
4
+ export declare const defaultLayout: HUIThemesLayout;
@@ -0,0 +1,42 @@
1
+ export var defaultFont = {
2
+ sans: '"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif',
3
+ mono: 'Menlo, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono, Bitstream Vera Sans Mono, Courier New, monospace',
4
+ prism: 'ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,"Liberation Mono", "Courier New", monospace'
5
+ };
6
+ export var defaultBreakpoints = {
7
+ xs: {
8
+ min: '0',
9
+ max: '650px'
10
+ },
11
+ sm: {
12
+ min: '650px',
13
+ max: '900px'
14
+ },
15
+ md: {
16
+ min: '900px',
17
+ max: '1280px'
18
+ },
19
+ lg: {
20
+ min: '1280px',
21
+ max: '1920px'
22
+ },
23
+ xl: {
24
+ min: '1920px',
25
+ max: '10000px'
26
+ }
27
+ };
28
+ export var defaultLayout = {
29
+ gap: '16pt',
30
+ gapNegative: '-16pt',
31
+ gapHalf: '8pt',
32
+ gapHalfNegative: '-8pt',
33
+ gapQuarter: '4pt',
34
+ gapQuarterNegative: '-4pt',
35
+ pageMargin: '16pt',
36
+ pageWidth: '750pt',
37
+ pageWidthWithMargin: '782pt',
38
+ breakpointMobile: defaultBreakpoints.xs.max,
39
+ breakpointTablet: defaultBreakpoints.sm.max,
40
+ radius: '6px',
41
+ unit: '16px'
42
+ };
@@ -0,0 +1,18 @@
1
+ import { HUIThemes } from './presets/index';
2
+ import type { DeepPartial } from '../utils/types';
3
+ export type HUserTheme = DeepPartial<HUIThemes> & {
4
+ type: string;
5
+ };
6
+ export declare const isObject: (target: unknown) => unknown;
7
+ export declare const deepDuplicable: <T extends Record<string, unknown>>(source: T, target: T) => T;
8
+ declare const Themes: {
9
+ isPresetTheme: (themeOrType?: HUserTheme | HUIThemes | string) => boolean;
10
+ isAvailableThemeType: (type?: string) => boolean;
11
+ hasUserCustomTheme: (themes?: Array<HUIThemes>) => boolean;
12
+ getPresets: () => Array<HUIThemes>;
13
+ getPresetStaticTheme: () => HUIThemes;
14
+ create: (base: HUIThemes, custom: HUserTheme) => HUIThemes;
15
+ createFromDark: (custom: HUserTheme) => HUIThemes;
16
+ createFromLight: (custom: HUserTheme) => HUIThemes;
17
+ };
18
+ export default Themes;
@@ -0,0 +1,77 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import _typeof from "@babel/runtime/helpers/esm/typeof";
3
+ import lightTheme from './presets/default';
4
+ import darkTheme from './presets/dark';
5
+ export var isObject = function isObject(target) {
6
+ return target && _typeof(target) === 'object';
7
+ };
8
+ var _deepDuplicable = function deepDuplicable(source, target) {
9
+ if (!isObject(target) || !isObject(source)) return source;
10
+ var sourceKeys = Object.keys(source);
11
+ var result = {};
12
+ for (var _i = 0, _sourceKeys = sourceKeys; _i < _sourceKeys.length; _i++) {
13
+ var key = _sourceKeys[_i];
14
+ var sourceValue = source[key];
15
+ var targetValue = target[key];
16
+ if (Array.isArray(sourceValue) && Array.isArray(targetValue)) {
17
+ result[key] = targetValue.concat(sourceValue);
18
+ } else if (isObject(sourceValue) && isObject(targetValue)) {
19
+ result[key] = _deepDuplicable(sourceValue, _extends({}, targetValue));
20
+ } else if (targetValue) {
21
+ result[key] = targetValue;
22
+ } else {
23
+ result[key] = sourceValue;
24
+ }
25
+ }
26
+ return result;
27
+ };
28
+ export { _deepDuplicable as deepDuplicable };
29
+ var getPresets = function getPresets() {
30
+ return [lightTheme, darkTheme];
31
+ };
32
+ var getPresetStaticTheme = function getPresetStaticTheme() {
33
+ return lightTheme;
34
+ };
35
+ var isAvailableThemeType = function isAvailableThemeType(type) {
36
+ if (!type) return false;
37
+ var presetThemes = getPresets();
38
+ var hasType = presetThemes.find(function (theme) {
39
+ return theme.type === type;
40
+ });
41
+ return !hasType;
42
+ };
43
+ var isPresetTheme = function isPresetTheme(themeOrType) {
44
+ if (!themeOrType) return false;
45
+ var isType = typeof themeOrType === 'string';
46
+ var type = isType ? themeOrType : themeOrType.type;
47
+ return !isAvailableThemeType(type);
48
+ };
49
+ var hasUserCustomTheme = function hasUserCustomTheme() {
50
+ var themes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
51
+ return !!themes.find(function (item) {
52
+ return isAvailableThemeType(item.type);
53
+ });
54
+ };
55
+ var create = function create(base, custom) {
56
+ if (!isAvailableThemeType(custom.type)) {
57
+ throw new Error('Duplicate or unavailable theme type');
58
+ }
59
+ return _deepDuplicable(base, custom);
60
+ };
61
+ var createFromDark = function createFromDark(custom) {
62
+ return create(darkTheme, custom);
63
+ };
64
+ var createFromLight = function createFromLight(custom) {
65
+ return create(lightTheme, custom);
66
+ };
67
+ var Themes = {
68
+ isPresetTheme: isPresetTheme,
69
+ isAvailableThemeType: isAvailableThemeType,
70
+ hasUserCustomTheme: hasUserCustomTheme,
71
+ getPresets: getPresets,
72
+ getPresetStaticTheme: getPresetStaticTheme,
73
+ create: create,
74
+ createFromDark: createFromDark,
75
+ createFromLight: createFromLight
76
+ };
77
+ export default Themes;
@@ -0,0 +1,3 @@
1
+ import HuiProvider from './ui-provider';
2
+ export type { UiProviderProps } from './ui-provider';
3
+ export default HuiProvider;
@@ -0,0 +1,4 @@
1
+ /* "use client" */
2
+
3
+ import HuiProvider from './ui-provider';
4
+ export default HuiProvider;
@@ -0,0 +1,8 @@
1
+ import React, { PropsWithChildren } from 'react';
2
+ import { HUIThemes } from '../themes/presets';
3
+ export interface Props {
4
+ themeType?: string;
5
+ themes?: Array<HUIThemes>;
6
+ }
7
+ declare const ThemeProvider: React.FC<PropsWithChildren<Props>>;
8
+ export default ThemeProvider;
@@ -0,0 +1,45 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
3
+ /* "use client" */
4
+
5
+ import React from 'react';
6
+ import Themes from '../themes';
7
+ import { ThemeContext } from '../use-theme/theme-context';
8
+ import { AllThemesContext } from '../use-all-themes/all-themes-context';
9
+ var ThemeProvider = function ThemeProvider(_ref) {
10
+ var children = _ref.children,
11
+ themeType = _ref.themeType,
12
+ _ref$themes = _ref.themes,
13
+ themes = _ref$themes === void 0 ? [] : _ref$themes;
14
+ var _React$useState = React.useState({
15
+ themes: Themes.getPresets()
16
+ }),
17
+ _React$useState2 = _slicedToArray(_React$useState, 2),
18
+ allThemes = _React$useState2[0],
19
+ setAllThemes = _React$useState2[1];
20
+ var currentTheme = React.useMemo(function () {
21
+ var theme = allThemes.themes.find(function (item) {
22
+ return item.type === themeType;
23
+ });
24
+ if (theme) return theme;
25
+ return Themes.getPresetStaticTheme();
26
+ }, [allThemes, themeType]);
27
+ React.useEffect(function () {
28
+ if (!(themes !== null && themes !== void 0 && themes.length)) return;
29
+ setAllThemes(function (last) {
30
+ var safeThemes = themes.filter(function (item) {
31
+ return Themes.isAvailableThemeType(item.type);
32
+ });
33
+ var nextThemes = Themes.getPresets().concat(safeThemes);
34
+ return _extends({}, last, {
35
+ themes: nextThemes
36
+ });
37
+ });
38
+ }, [themes]);
39
+ return /*#__PURE__*/React.createElement(AllThemesContext.Provider, {
40
+ value: allThemes
41
+ }, /*#__PURE__*/React.createElement(ThemeContext.Provider, {
42
+ value: currentTheme
43
+ }, children));
44
+ };
45
+ export default ThemeProvider;
@@ -0,0 +1,8 @@
1
+ import React, { PropsWithChildren } from 'react';
2
+ import { HUIThemes } from '../themes/presets';
3
+ export type UiProviderProps = {
4
+ themes?: Array<HUIThemes>;
5
+ themeType?: string | 'dark' | 'light';
6
+ };
7
+ declare const HuiProvider: React.FC<PropsWithChildren<UiProviderProps>>;
8
+ export default HuiProvider;
@@ -0,0 +1,55 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
+ /* "use client" */
3
+
4
+ import React from 'react';
5
+ import { HUIContent, defaultToastLayout } from '../utils/use-hd-ui-context';
6
+ import ThemeProvider from './theme-provider';
7
+ import useCurrentState from '../utils/use-current-state';
8
+ import ToastContainer from '../use-toasts/toast-container';
9
+ var HuiProvider = function HuiProvider(_ref) {
10
+ var themes = _ref.themes,
11
+ themeType = _ref.themeType,
12
+ children = _ref.children;
13
+ var _React$useState = React.useState(''),
14
+ _React$useState2 = _slicedToArray(_React$useState, 2),
15
+ lastUpdateToastId = _React$useState2[0],
16
+ setLastUpdateToastId = _React$useState2[1];
17
+ var _useCurrentState = useCurrentState([]),
18
+ _useCurrentState2 = _slicedToArray(_useCurrentState, 3),
19
+ toasts = _useCurrentState2[0],
20
+ setToasts = _useCurrentState2[1],
21
+ toastsRef = _useCurrentState2[2];
22
+ var _useCurrentState3 = useCurrentState(defaultToastLayout),
23
+ _useCurrentState4 = _slicedToArray(_useCurrentState3, 3),
24
+ toastLayout = _useCurrentState4[0],
25
+ setToastLayout = _useCurrentState4[1],
26
+ toastLayoutRef = _useCurrentState4[2];
27
+ var updateToasts = function updateToasts(fn) {
28
+ var nextToasts = fn(toastsRef.current);
29
+ setToasts(nextToasts);
30
+ };
31
+ var updateToastLayout = function updateToastLayout(fn) {
32
+ var nextLayout = fn(toastLayoutRef.current);
33
+ setToastLayout(nextLayout);
34
+ };
35
+ var updateLastToastId = function updateLastToastId(fn) {
36
+ setLastUpdateToastId(fn());
37
+ };
38
+ var initialValue = React.useMemo(function () {
39
+ return {
40
+ toasts: toasts,
41
+ toastLayout: toastLayout,
42
+ updateToasts: updateToasts,
43
+ lastUpdateToastId: lastUpdateToastId,
44
+ updateToastLayout: updateToastLayout,
45
+ updateLastToastId: updateLastToastId
46
+ };
47
+ }, [toasts, toastLayout, lastUpdateToastId]);
48
+ return /*#__PURE__*/React.createElement(HUIContent.Provider, {
49
+ value: initialValue
50
+ }, /*#__PURE__*/React.createElement(ThemeProvider, {
51
+ themes: themes,
52
+ themeType: themeType
53
+ }, children, /*#__PURE__*/React.createElement(ToastContainer, null)));
54
+ };
55
+ export default HuiProvider;
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ import { HUIThemes } from '../themes/presets';
3
+ export type AllThemesConfig = {
4
+ themes: Array<HUIThemes>;
5
+ };
6
+ export declare const AllThemesContext: React.Context<AllThemesConfig>;
7
+ export declare const useAllThemes: () => AllThemesConfig;
@@ -0,0 +1,11 @@
1
+ /* "use client" */
2
+
3
+ import React from 'react';
4
+ import Themes from '../themes/themes';
5
+ var defaultAllThemesConfig = {
6
+ themes: Themes.getPresets()
7
+ };
8
+ export var AllThemesContext = /*#__PURE__*/React.createContext(defaultAllThemesConfig);
9
+ export var useAllThemes = function useAllThemes() {
10
+ return React.useContext(AllThemesContext);
11
+ };
@@ -0,0 +1,3 @@
1
+ import { useAllThemes } from './all-themes-context';
2
+ export type { AllThemesConfig } from './all-themes-context';
3
+ export default useAllThemes;
@@ -0,0 +1,2 @@
1
+ import { useAllThemes } from './all-themes-context';
2
+ export default useAllThemes;
@@ -0,0 +1,2 @@
1
+ import { default as useClasses } from './use-classes';
2
+ export default useClasses;
@@ -0,0 +1,2 @@
1
+ import { default as useClasses } from './use-classes';
2
+ export default useClasses;
@@ -0,0 +1,4 @@
1
+ export type classNamesObject = Record<string, boolean | string | number | null | undefined>;
2
+ export type className = string | classNamesObject | null | undefined | boolean | number;
3
+ declare const useClasses: (...classNames: Array<className>) => string;
4
+ export default useClasses;
@@ -0,0 +1,34 @@
1
+ import _typeof from "@babel/runtime/helpers/esm/typeof";
2
+ /* "use client" */
3
+
4
+ var classObjectToString = function classObjectToString(className) {
5
+ var keys = Object.keys(className);
6
+ var len = keys.length;
7
+ var str = '';
8
+ for (var index = 0; index < len; index++) {
9
+ var key = keys[index];
10
+ var val = className[keys[index]];
11
+ if (!val) continue;
12
+ str = str ? "".concat(str, " ").concat(String(key)) : String(key);
13
+ }
14
+ return str;
15
+ };
16
+ var isObjectClassName = function isObjectClassName(value) {
17
+ return _typeof(value) === 'object' && !Array.isArray(value);
18
+ };
19
+ var useClasses = function useClasses() {
20
+ var len = arguments.length;
21
+ var classes = '';
22
+ if (len === 0) return classes;
23
+ for (var index = 0; index < len; index++) {
24
+ var val = index < 0 || arguments.length <= index ? undefined : arguments[index];
25
+ if (!val) continue;
26
+ if (isObjectClassName(val)) {
27
+ classes += " ".concat(classObjectToString(val));
28
+ } else {
29
+ classes += " ".concat(String(val).trim());
30
+ }
31
+ }
32
+ return classes.trim();
33
+ };
34
+ export default useClasses;
@@ -0,0 +1,2 @@
1
+ import useCurrentState from './use-current-state';
2
+ export default useCurrentState;
@@ -0,0 +1,2 @@
1
+ import useCurrentState from './use-current-state';
2
+ export default useCurrentState;
@@ -0,0 +1,4 @@
1
+ import { Dispatch, MutableRefObject, SetStateAction } from 'react';
2
+ export type CurrentStateType<S> = [S, Dispatch<SetStateAction<S>>, MutableRefObject<S>];
3
+ declare const useCurrentState: <S>(initialState: S | (() => S)) => CurrentStateType<S>;
4
+ export default useCurrentState;
@@ -0,0 +1,23 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
+ /* "use client" */
3
+
4
+ import { useEffect, useRef, useState } from 'react';
5
+ var useCurrentState = function useCurrentState(initialState) {
6
+ var _useState = useState(function () {
7
+ return typeof initialState === 'function' ? initialState() : initialState;
8
+ }),
9
+ _useState2 = _slicedToArray(_useState, 2),
10
+ state = _useState2[0],
11
+ setState = _useState2[1];
12
+ var ref = useRef(initialState);
13
+ useEffect(function () {
14
+ ref.current = state;
15
+ }, [state]);
16
+ var setValue = function setValue(val) {
17
+ var result = typeof val === 'function' ? val(ref.current) : val;
18
+ ref.current = result;
19
+ setState(result);
20
+ };
21
+ return [state, setValue, ref];
22
+ };
23
+ export default useCurrentState;
@@ -0,0 +1,2 @@
1
+ import useMediaQuery from './use-media-query';
2
+ export default useMediaQuery;