@neko-os/ui 0.0.2 → 0.0.3

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 (97) hide show
  1. package/dist/NekoUI.js +1 -0
  2. package/dist/abstractions/Icon.js +1 -0
  3. package/dist/abstractions/Icon.native.js +1 -0
  4. package/dist/abstractions/Text.js +1 -0
  5. package/dist/abstractions/Text.native.js +1 -0
  6. package/dist/abstractions/TouchableOpacity.js +1 -0
  7. package/dist/abstractions/View.js +1 -1
  8. package/dist/abstractions/View.native.js +1 -0
  9. package/dist/actions/Button.js +1 -0
  10. package/dist/actions/index.js +1 -0
  11. package/dist/helpers/string.js +1 -0
  12. package/dist/index.css +68 -0
  13. package/dist/index.js +1 -1
  14. package/dist/modifiers/background.js +1 -0
  15. package/dist/modifiers/border.js +1 -0
  16. package/dist/modifiers/flexWrapper.js +1 -1
  17. package/dist/modifiers/fullColor.js.js +1 -0
  18. package/dist/modifiers/margin.js +1 -1
  19. package/dist/modifiers/padding.js +1 -1
  20. package/dist/modifiers/shadow.js +1 -0
  21. package/dist/modifiers/size.js +1 -1
  22. package/dist/modifiers/text.js +1 -1
  23. package/dist/presentation/Icon.js +1 -0
  24. package/dist/presentation/Tag.js +1 -0
  25. package/dist/presentation/index.js +1 -0
  26. package/dist/structure/Card.js +1 -0
  27. package/dist/structure/View.js +1 -1
  28. package/dist/structure/index.js +1 -1
  29. package/dist/text/Text.js +1 -0
  30. package/dist/text/index.js +1 -0
  31. package/dist/theme/ThemeHandler.js +1 -1
  32. package/dist/theme/default/base.js +1 -0
  33. package/dist/theme/default/base.native.js +1 -0
  34. package/dist/theme/default/base.web.js +1 -0
  35. package/dist/theme/default/cyberpunkTheme.js +1 -0
  36. package/dist/theme/default/darkTheme.js +1 -0
  37. package/dist/theme/default/deepWoodsTheme.js +1 -0
  38. package/dist/theme/default/forestTheme.js +1 -0
  39. package/dist/theme/default/lightTheme.js +1 -0
  40. package/dist/theme/default/midnightTheme.js +1 -0
  41. package/dist/theme/default/oceanTheme.js +1 -0
  42. package/dist/theme/default/pastelTheme.js +1 -0
  43. package/dist/theme/default/sunsetTheme.js +1 -0
  44. package/dist/theme/default/themes.js +1 -0
  45. package/dist/theme/format/colorsVariations.js +1 -0
  46. package/dist/theme/format/formatTheme.js +1 -0
  47. package/dist/theme/helpers/sizeScale.js +1 -0
  48. package/dist/theme/index.js +1 -1
  49. package/package.json +8 -3
  50. package/src/NekoUI.js +5 -0
  51. package/src/abstractions/Icon.js +26 -0
  52. package/src/abstractions/Icon.native.js +2 -0
  53. package/src/abstractions/Text.js +3 -0
  54. package/src/abstractions/Text.native.js +3 -0
  55. package/src/abstractions/TouchableOpacity.js +12 -0
  56. package/src/abstractions/View.js +2 -13
  57. package/src/abstractions/View.native.js +3 -0
  58. package/src/actions/Button.js +48 -0
  59. package/src/actions/index.js +1 -0
  60. package/src/helpers/string.js +57 -0
  61. package/src/index.css +68 -0
  62. package/src/index.js +6 -3
  63. package/src/modifiers/background.js +19 -0
  64. package/src/modifiers/border.js +53 -0
  65. package/src/modifiers/flexWrapper.js +4 -1
  66. package/src/modifiers/fullColor.js.js +30 -0
  67. package/src/modifiers/margin.js +6 -4
  68. package/src/modifiers/padding.js +6 -4
  69. package/src/modifiers/shadow.js +32 -0
  70. package/src/modifiers/size.js +36 -4
  71. package/src/modifiers/text.js +29 -4
  72. package/src/presentation/Icon.js +14 -0
  73. package/src/presentation/Tag.js +32 -0
  74. package/src/presentation/index.js +2 -0
  75. package/src/structure/Card.js +36 -0
  76. package/src/structure/View.js +15 -3
  77. package/src/structure/index.js +1 -0
  78. package/src/text/Text.js +20 -0
  79. package/src/text/index.js +1 -0
  80. package/src/theme/ThemeHandler.js +56 -2
  81. package/src/theme/default/base.js +65 -0
  82. package/src/theme/default/base.native.js +58 -0
  83. package/src/theme/default/base.web.js +3 -0
  84. package/src/theme/default/cyberpunkTheme.js +30 -0
  85. package/src/theme/default/darkTheme.js +30 -0
  86. package/src/theme/default/deepWoodsTheme.js +30 -0
  87. package/src/theme/default/forestTheme.js +30 -0
  88. package/src/theme/default/lightTheme.js +30 -0
  89. package/src/theme/default/midnightTheme.js +30 -0
  90. package/src/theme/default/oceanTheme.js +30 -0
  91. package/src/theme/default/pastelTheme.js +30 -0
  92. package/src/theme/default/sunsetTheme.js +31 -0
  93. package/src/theme/default/themes.js +21 -0
  94. package/src/theme/format/colorsVariations.js +31 -0
  95. package/src/theme/format/formatTheme.js +22 -0
  96. package/src/theme/helpers/sizeScale.js +7 -0
  97. package/src/theme/index.js +1 -0
@@ -0,0 +1,58 @@
1
+ export const BASE_THEME = {
2
+ spaces: {
3
+ xxsm: 3,
4
+ xsm: 5,
5
+ sm: 10,
6
+ md: 15,
7
+ lg: 20,
8
+ xlg: 30,
9
+ },
10
+
11
+ radius: {
12
+ xsm: 5,
13
+ sm: 7,
14
+ md: 8,
15
+ lg: 10,
16
+ xlg: 12,
17
+ },
18
+
19
+ // Buttons, inputs, tags
20
+ elementHeights: {
21
+ xsm: 20,
22
+ sm: 30,
23
+ md: 35,
24
+ lg: 50,
25
+ xlg: 60,
26
+ },
27
+
28
+ texts: {
29
+ h1: {
30
+ fontSize: 32,
31
+ strong: true,
32
+ },
33
+ h2: {
34
+ fontSize: 26,
35
+ strong: true,
36
+ },
37
+ h3: {
38
+ fontSize: 22,
39
+ strong: true,
40
+ },
41
+ h4: {
42
+ fontSize: 18,
43
+ strong: true,
44
+ },
45
+ h5: {
46
+ fontSize: 16,
47
+ strong: true,
48
+ },
49
+ h6: {
50
+ fontSize: 14,
51
+ strong: true,
52
+ },
53
+ p: { fontSize: 14 },
54
+ sm: { fontSize: 12 },
55
+ xsm: { fontSize: 10 },
56
+ xxsm: { fontSize: 8 },
57
+ },
58
+ }
@@ -0,0 +1,3 @@
1
+ import { BASE_THEME as MOBILE_BASE_THEME } from './base.native'
2
+
3
+ export const BASE_THEME = MOBILE_BASE_THEME
@@ -0,0 +1,30 @@
1
+ import { mergeDeepRight } from 'ramda'
2
+ import { BASE_THEME } from './base'
3
+
4
+ export const CYBERPUNK_DARK_THEME = mergeDeepRight(BASE_THEME, {
5
+ colors: {
6
+ primary: '#FCEE09',
7
+ text: '#FFFFFF',
8
+ text2: '#B3B3B3',
9
+ text3: '#8C8C8C',
10
+ text4: '#666666',
11
+
12
+ bg: '#0A0A0F',
13
+ overlayBG: '#14141F',
14
+ shadow: 'rgba(39, 45, 52, 0.6)',
15
+
16
+ blue: '#00E5FF',
17
+ yellow: '#FFD600',
18
+ green: '#00FF9D',
19
+ purple: '#D500F9',
20
+ orange: '#FF9100',
21
+ cyan: '#00B8D4',
22
+ red: '#FF1744',
23
+ navy: '#1E2A38',
24
+ indigo: '#651FFF',
25
+ gray: '#757575',
26
+ brown: '#6D4C41',
27
+ lylac: '#B388FF',
28
+ pink: '#FF80AB',
29
+ },
30
+ })
@@ -0,0 +1,30 @@
1
+ import { mergeDeepRight } from 'ramda'
2
+ import { BASE_THEME } from './base'
3
+
4
+ export const DEFAULT_DARK_THEME = mergeDeepRight(BASE_THEME, {
5
+ colors: {
6
+ primary: '#818DF9',
7
+ text: '#FFFFFF',
8
+ text2: '#E0E0E0',
9
+ text3: '#B0B0B0',
10
+ text4: '#8A8A8A',
11
+
12
+ bg: '#383E44',
13
+ overlayBG: '#272D34',
14
+ shadow: 'rgba(39, 45, 52, 0.6)',
15
+
16
+ blue: '#4DA3FF',
17
+ yellow: '#FFD93B',
18
+ green: '#4CAF50',
19
+ purple: '#9B59B6',
20
+ orange: '#FF7F50',
21
+ cyan: '#00BCD4',
22
+ red: '#E74C3C',
23
+ navy: '#34495E',
24
+ indigo: '#5C6BC0',
25
+ gray: '#9E9E9E',
26
+ brown: '#8D6E63',
27
+ lylac: '#B39DDB',
28
+ pink: '#F48FB1',
29
+ },
30
+ })
@@ -0,0 +1,30 @@
1
+ import { mergeDeepRight } from 'ramda'
2
+ import { BASE_THEME } from './base'
3
+
4
+ export const DEEP_WOODS_DARK_THEME = mergeDeepRight(BASE_THEME, {
5
+ colors: {
6
+ primary: '#4CAF50',
7
+ text: '#F0F8F2',
8
+ text2: '#C8E6C9',
9
+ text3: '#A5D6A7',
10
+ text4: '#81C784',
11
+
12
+ bg: '#0D1B14',
13
+ overlayBG: '#16281F',
14
+ shadow: 'rgba(39, 45, 52, 0.6)',
15
+
16
+ blue: '#64B5F6',
17
+ yellow: '#FBC02D',
18
+ green: '#81C784',
19
+ purple: '#9575CD',
20
+ orange: '#FFB74D',
21
+ cyan: '#4DD0E1',
22
+ red: '#E57373',
23
+ navy: '#1B263B',
24
+ indigo: '#5C6BC0',
25
+ gray: '#9E9E9E',
26
+ brown: '#8D6E63',
27
+ lylac: '#B39DDB',
28
+ pink: '#F48FB1',
29
+ },
30
+ })
@@ -0,0 +1,30 @@
1
+ import { mergeDeepRight } from 'ramda'
2
+ import { BASE_THEME } from './base'
3
+
4
+ export const FOREST_MIST_THEME = mergeDeepRight(BASE_THEME, {
5
+ colors: {
6
+ primary: '#4CAF50',
7
+ text: '#0B2414',
8
+ text2: '#14532D',
9
+ text3: '#1B5E20',
10
+ text4: '#388E3C',
11
+
12
+ bg: '#E9F5EC',
13
+ overlayBG: '#FFFFFF',
14
+ shadow: 'rgba(39, 45, 52, 0.15)',
15
+
16
+ blue: '#2563EB',
17
+ yellow: '#F59E0B',
18
+ green: '#15803D',
19
+ purple: '#7C3AED',
20
+ orange: '#EA580C',
21
+ cyan: '#0891B2',
22
+ red: '#B91C1C',
23
+ navy: '#1E3A8A',
24
+ indigo: '#4338CA',
25
+ gray: '#94A3B8',
26
+ brown: '#78350F',
27
+ lylac: '#A78BFA',
28
+ pink: '#F472B6',
29
+ },
30
+ })
@@ -0,0 +1,30 @@
1
+ import { mergeDeepRight } from 'ramda'
2
+ import { BASE_THEME } from './base'
3
+
4
+ export const DEFAULT_LIGHT_THEME = mergeDeepRight(BASE_THEME, {
5
+ colors: {
6
+ primary: '#818DF9',
7
+ text: '#272D34',
8
+ text2: '#4A5159',
9
+ text3: '#6E7680',
10
+ text4: '#9AA1AC',
11
+
12
+ bg: '#F4F5FE',
13
+ overlayBG: '#FFFFFF',
14
+ shadow: 'rgba(39, 45, 52, 0.15)',
15
+
16
+ blue: '#4DA3FF',
17
+ yellow: '#FFD93B',
18
+ green: '#4CAF50',
19
+ purple: '#9B59B6',
20
+ orange: '#FF7F50',
21
+ cyan: '#00BCD4',
22
+ red: '#E74C3C',
23
+ navy: '#34495E',
24
+ indigo: '#5C6BC0',
25
+ gray: '#B0BEC5',
26
+ brown: '#8D6E63',
27
+ lylac: '#B39DDB',
28
+ pink: '#F48FB1',
29
+ },
30
+ })
@@ -0,0 +1,30 @@
1
+ import { mergeDeepRight } from 'ramda'
2
+ import { BASE_THEME } from './base'
3
+
4
+ export const MIDNIGHT_NEON_THEME = mergeDeepRight(BASE_THEME, {
5
+ colors: {
6
+ primary: '#FF00FF',
7
+ text: '#F0F0F0',
8
+ text2: '#D4D4D4',
9
+ text3: '#A3A3A3',
10
+ text4: '#7A7A7A',
11
+
12
+ bg: '#0D0D0D',
13
+ overlayBG: '#1A1A1A',
14
+ shadow: 'rgba(39, 45, 52, 0.6)',
15
+
16
+ blue: '#3B82F6',
17
+ yellow: '#FACC15',
18
+ green: '#22C55E',
19
+ purple: '#A855F7',
20
+ orange: '#FB923C',
21
+ cyan: '#06B6D4',
22
+ red: '#F87171',
23
+ navy: '#1E3A8A',
24
+ indigo: '#6366F1',
25
+ gray: '#9CA3AF',
26
+ brown: '#92400E',
27
+ lylac: '#C084FC',
28
+ pink: '#F472B6',
29
+ },
30
+ })
@@ -0,0 +1,30 @@
1
+ import { mergeDeepRight } from 'ramda'
2
+ import { BASE_THEME } from './base'
3
+
4
+ export const OCEAN_BREEZE_THEME = mergeDeepRight(BASE_THEME, {
5
+ colors: {
6
+ primary: '#2B90D9',
7
+ text: '#04364A',
8
+ text2: '#065A82',
9
+ text3: '#0B84B4',
10
+ text4: '#3ABEFF',
11
+
12
+ bg: '#E6F7FF',
13
+ overlayBG: '#FFFFFF',
14
+ shadow: 'rgba(39, 45, 52, 0.15)',
15
+
16
+ blue: '#1D4ED8',
17
+ yellow: '#FACC15',
18
+ green: '#10B981',
19
+ purple: '#8B5CF6',
20
+ orange: '#FB923C',
21
+ cyan: '#06B6D4',
22
+ red: '#EF4444',
23
+ navy: '#1E3A8A',
24
+ indigo: '#6366F1',
25
+ gray: '#9CA3AF',
26
+ brown: '#A16207',
27
+ lylac: '#C4B5FD',
28
+ pink: '#F472B6',
29
+ },
30
+ })
@@ -0,0 +1,30 @@
1
+ import { mergeDeepRight } from 'ramda'
2
+ import { BASE_THEME } from './base'
3
+
4
+ export const PASTEL_DREAM_THEME = mergeDeepRight(BASE_THEME, {
5
+ colors: {
6
+ primary: '#FFB6C1',
7
+ text: '#4B4453',
8
+ text2: '#6D6875',
9
+ text3: '#A093A6',
10
+ text4: '#C9BBCF',
11
+
12
+ bg: '#FFF7FA',
13
+ overlayBG: '#FFFFFF',
14
+ shadow: 'rgba(39, 45, 52, 0.15)',
15
+
16
+ blue: '#A5B4FC',
17
+ yellow: '#FDE68A',
18
+ green: '#BBF7D0',
19
+ purple: '#E9D5FF',
20
+ orange: '#FED7AA',
21
+ cyan: '#BAE6FD',
22
+ red: '#FCA5A5',
23
+ navy: '#A5B4FC',
24
+ indigo: '#C7D2FE',
25
+ gray: '#E5E7EB',
26
+ brown: '#E0B084',
27
+ lylac: '#E9D5FF',
28
+ pink: '#FBCFE8',
29
+ },
30
+ })
@@ -0,0 +1,31 @@
1
+ import { mergeDeepRight } from 'ramda'
2
+
3
+ import { BASE_THEME } from './base'
4
+
5
+ export const SUNSET_GLOW_THEME = mergeDeepRight(BASE_THEME, {
6
+ colors: {
7
+ primary: '#FF6B6B',
8
+ text: '#331E0A',
9
+ text2: '#5C4033',
10
+ text3: '#8C5A43',
11
+ text4: '#B97A57',
12
+
13
+ bg: '#FFF5E6',
14
+ overlayBG: '#FFFFFF',
15
+ shadow: 'rgba(39, 45, 52, 0.15)',
16
+
17
+ blue: '#3B82F6',
18
+ yellow: '#FBBF24',
19
+ green: '#22C55E',
20
+ purple: '#A855F7',
21
+ orange: '#FB923C',
22
+ cyan: '#06B6D4',
23
+ red: '#DC2626',
24
+ navy: '#1E3A8A',
25
+ indigo: '#4F46E5',
26
+ gray: '#9CA3AF',
27
+ brown: '#92400E',
28
+ lylac: '#C084FC',
29
+ pink: '#F472B6',
30
+ },
31
+ })
@@ -0,0 +1,21 @@
1
+ import { CYBERPUNK_DARK_THEME } from './cyberpunkTheme'
2
+ import { DEEP_WOODS_DARK_THEME } from './deepWoodsTheme'
3
+ import { DEFAULT_DARK_THEME } from './darkTheme'
4
+ import { DEFAULT_LIGHT_THEME } from './lightTheme'
5
+ import { FOREST_MIST_THEME } from './forestTheme'
6
+ import { MIDNIGHT_NEON_THEME } from './midnightTheme'
7
+ import { OCEAN_BREEZE_THEME } from './oceanTheme'
8
+ import { PASTEL_DREAM_THEME } from './pastelTheme'
9
+ import { SUNSET_GLOW_THEME } from './sunsetTheme'
10
+
11
+ export const DEFAULT_THEMES = {
12
+ light: DEFAULT_LIGHT_THEME,
13
+ dark: DEFAULT_DARK_THEME,
14
+ pastel: PASTEL_DREAM_THEME,
15
+ midnight: MIDNIGHT_NEON_THEME,
16
+ sunset: SUNSET_GLOW_THEME,
17
+ ocean: OCEAN_BREEZE_THEME,
18
+ forest: FOREST_MIST_THEME,
19
+ cyberpunk: CYBERPUNK_DARK_THEME,
20
+ deepWoods: DEEP_WOODS_DARK_THEME,
21
+ }
@@ -0,0 +1,31 @@
1
+ import tinycolor from 'tinycolor2'
2
+
3
+ const variations = [10, 20, 30, 40, 50, 60, 70, 80, 90]
4
+
5
+ export function generateColorVariants(colors) {
6
+ const isDark = tinycolor(colors?.overlayBG || colors?.bg).isDark()
7
+ const result = {}
8
+
9
+ Object.entries(colors).forEach(([key, value]) => {
10
+ result[key] = value
11
+
12
+ variations.forEach((amount) => {
13
+ if (amount <= 60) {
14
+ const lightenSignal = !isDark ? '-' : '+'
15
+ const darkenSignal = isDark ? '-' : '+'
16
+ result[`${key}${lightenSignal}${amount}`] = tinycolor(value).lighten(amount).toString()
17
+ result[`${key}${darkenSignal}${amount}`] = tinycolor(value).darken(amount).toString()
18
+ }
19
+
20
+ result[`${key}_op${amount}`] = tinycolor(value)
21
+ .setAlpha(amount / 100)
22
+ .toString()
23
+ })
24
+ })
25
+
26
+ return result
27
+ }
28
+
29
+ export function applyColorVariantsOnTheme(theme) {
30
+ return { ...theme, colors: generateColorVariants(theme.colors) }
31
+ }
@@ -0,0 +1,22 @@
1
+ import { mergeDeepRight, pipe } from 'ramda'
2
+ import React from 'react'
3
+
4
+ import { DEFAULT_LIGHT_THEME } from '../default/lightTheme'
5
+ import { DEFAULT_THEMES } from '../default/themes'
6
+ import { applyColorVariantsOnTheme } from './colorsVariations'
7
+
8
+ export function useFormattedTheme(themes, key) {
9
+ themes = themes || DEFAULT_THEMES
10
+ return React.useMemo(() => formatTheme(themes, key), [key])
11
+ }
12
+
13
+ export function formatTheme(themes, key) {
14
+ themes = themes || DEFAULT_THEMES
15
+ const theme = themes[key] || DEFAULT_THEMES[key] || DEFAULT_LIGHT_THEME
16
+ const baseDefaultTheme = DEFAULT_THEMES[theme.base] || DEFAULT_THEMES[key] || DEFAULT_LIGHT_THEME
17
+
18
+ return pipe(
19
+ mergeDeepRight(baseDefaultTheme), //
20
+ applyColorVariantsOnTheme
21
+ )({ ...theme })
22
+ }
@@ -0,0 +1,7 @@
1
+ const SCALES = ['xxxsm', 'xxsm', 'xsm', 'sm', 'md', 'lg', 'xlg', 'xxlg', 'xxxlg']
2
+
3
+ export function moveScaleDown(value, unit = 1) {
4
+ const index = SCALES.indexOf(value)
5
+ if (!index) return value
6
+ return SCALES[index - unit] || value
7
+ }
@@ -1 +1,2 @@
1
1
  export * from './ThemeHandler'
2
+ export * from './default/themes'