@neko-os/ui 0.0.1 → 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.
- package/README.md +1 -1
- package/dist/NekoUI.js +1 -0
- package/dist/abstractions/Icon.js +1 -0
- package/dist/abstractions/Icon.native.js +1 -0
- package/dist/abstractions/Text.js +1 -0
- package/dist/abstractions/Text.native.js +1 -0
- package/dist/abstractions/TouchableOpacity.js +1 -0
- package/dist/abstractions/View.js +1 -0
- package/dist/abstractions/View.native.js +1 -0
- package/dist/actions/Button.js +1 -0
- package/dist/actions/index.js +1 -0
- package/dist/helpers/string.js +1 -0
- package/dist/index.css +68 -0
- package/dist/index.js +1 -1
- package/dist/modifiers/background.js +1 -0
- package/dist/modifiers/border.js +1 -0
- package/dist/modifiers/flex.js +1 -1
- package/dist/modifiers/flexWrapper.js +1 -1
- package/dist/modifiers/fullColor.js.js +1 -0
- package/dist/modifiers/margin.js +1 -1
- package/dist/modifiers/padding.js +1 -1
- package/dist/modifiers/position.js +1 -1
- package/dist/modifiers/shadow.js +1 -0
- package/dist/modifiers/size.js +1 -1
- package/dist/modifiers/text.js +1 -1
- package/dist/presentation/Icon.js +1 -0
- package/dist/presentation/Tag.js +1 -0
- package/dist/presentation/index.js +1 -0
- package/dist/structure/Card.js +1 -0
- package/dist/structure/View.js +1 -1
- package/dist/structure/index.js +1 -1
- package/dist/text/Text.js +1 -0
- package/dist/text/index.js +1 -0
- package/dist/theme/ThemeHandler.js +1 -1
- package/dist/theme/default/base.js +1 -0
- package/dist/theme/default/base.native.js +1 -0
- package/dist/theme/default/base.web.js +1 -0
- package/dist/theme/default/cyberpunkTheme.js +1 -0
- package/dist/theme/default/darkTheme.js +1 -0
- package/dist/theme/default/deepWoodsTheme.js +1 -0
- package/dist/theme/default/forestTheme.js +1 -0
- package/dist/theme/default/lightTheme.js +1 -0
- package/dist/theme/default/midnightTheme.js +1 -0
- package/dist/theme/default/oceanTheme.js +1 -0
- package/dist/theme/default/pastelTheme.js +1 -0
- package/dist/theme/default/sunsetTheme.js +1 -0
- package/dist/theme/default/themes.js +1 -0
- package/dist/theme/format/colorsVariations.js +1 -0
- package/dist/theme/format/formatTheme.js +1 -0
- package/dist/theme/helpers/sizeScale.js +1 -0
- package/dist/theme/index.js +1 -1
- package/package.json +12 -6
- package/src/NekoUI.js +5 -0
- package/src/abstractions/Icon.js +26 -0
- package/src/abstractions/Icon.native.js +2 -0
- package/src/abstractions/Text.js +3 -0
- package/src/abstractions/Text.native.js +3 -0
- package/src/abstractions/TouchableOpacity.js +12 -0
- package/src/abstractions/View.js +3 -0
- package/src/abstractions/View.native.js +3 -0
- package/src/actions/Button.js +48 -0
- package/src/actions/index.js +1 -0
- package/src/helpers/string.js +57 -0
- package/src/index.css +68 -0
- package/src/index.js +6 -1
- package/src/modifiers/background.js +19 -0
- package/src/modifiers/border.js +53 -0
- package/src/modifiers/flex.js +2 -2
- package/src/modifiers/flexWrapper.js +7 -3
- package/src/modifiers/fullColor.js.js +30 -0
- package/src/modifiers/margin.js +8 -6
- package/src/modifiers/padding.js +8 -6
- package/src/modifiers/position.js +2 -2
- package/src/modifiers/shadow.js +32 -0
- package/src/modifiers/size.js +37 -5
- package/src/modifiers/text.js +30 -5
- package/src/presentation/Icon.js +14 -0
- package/src/presentation/Tag.js +32 -0
- package/src/presentation/index.js +2 -0
- package/src/structure/Card.js +36 -0
- package/src/structure/View.js +17 -6
- package/src/structure/index.js +1 -0
- package/src/text/Text.js +20 -0
- package/src/text/index.js +1 -0
- package/src/theme/ThemeHandler.js +56 -2
- package/src/theme/default/base.js +65 -0
- package/src/theme/default/base.native.js +58 -0
- package/src/theme/default/base.web.js +3 -0
- package/src/theme/default/cyberpunkTheme.js +30 -0
- package/src/theme/default/darkTheme.js +30 -0
- package/src/theme/default/deepWoodsTheme.js +30 -0
- package/src/theme/default/forestTheme.js +30 -0
- package/src/theme/default/lightTheme.js +30 -0
- package/src/theme/default/midnightTheme.js +30 -0
- package/src/theme/default/oceanTheme.js +30 -0
- package/src/theme/default/pastelTheme.js +30 -0
- package/src/theme/default/sunsetTheme.js +31 -0
- package/src/theme/default/themes.js +21 -0
- package/src/theme/format/colorsVariations.js +31 -0
- package/src/theme/format/formatTheme.js +22 -0
- package/src/theme/helpers/sizeScale.js +7 -0
- package/src/theme/index.js +1 -0
package/README.md
CHANGED
package/dist/NekoUI.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _jsxFileName="/Users/christianstorch/Apps/nekoapps/libs/neko-ui/src/NekoUI.js";var _excluded=["children"];import{ThemeHandler}from"./theme/ThemeHandler";import{jsx as _jsx}from"react/jsx-runtime";export function NekoUI(_ref){var children=_ref.children,props=_objectWithoutProperties(_ref,_excluded);return _jsx(ThemeHandler,Object.assign({},props,{children:children}));}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _jsxFileName="/Users/christianstorch/Apps/nekoapps/libs/neko-ui/src/abstractions/Icon.js";var _excluded=["name"];import React from'react';import{capitalizeFirstLetter,toCamelCase}from"../helpers/string";import{jsx as _jsx}from"react/jsx-runtime";export function AbsIcon(_ref){var name=_ref.name,props=_objectWithoutProperties(_ref,_excluded);var _React$useState=React.useState(true),_React$useState2=_slicedToArray(_React$useState,2),loading=_React$useState2[0],setLoading=_React$useState2[1];var ref=React.useRef();var Component=(ref==null?void 0:ref.current)||function(){return false;};React.useEffect(function(){try{import('@remixicon/react').then(function(module){if(!!name&&!name.startsWith('Ri'))name='Ri'+capitalizeFirstLetter(toCamelCase(name));var IconComponent=module[name]||module['RiCircleFill'];ref.current=IconComponent;setLoading(false);});}catch(_unused){console.error('Error loading AbsIcon component');}},[]);if(loading)return false;return _jsx(Component,Object.assign({},props));}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import RmIcon from'react-native-remix-icon';export var AbsIcon=RmIcon;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var _jsxFileName="/Users/christianstorch/Apps/nekoapps/libs/neko-ui/src/abstractions/Text.js";import{jsx as _jsx}from"react/jsx-runtime";export function AbsText(props){return _jsx("span",Object.assign({},props));}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{Text as RNText}from"react-native-web";export var AbsText=RNText;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var _this=this,_jsxFileName="/Users/christianstorch/Apps/nekoapps/libs/neko-ui/src/abstractions/TouchableOpacity.js";import React from'react';import{jsx as _jsx}from"react/jsx-runtime";var AbsTouchableOpacity;try{var _require=require("react-native-web"),Platform=_require.Platform,RNTouchableOpacity=_require.TouchableOpacity;AbsTouchableOpacity=function AbsTouchableOpacity(props){return _jsx(RNTouchableOpacity,Object.assign({},props));};}catch(_unused){AbsTouchableOpacity=function AbsTouchableOpacity(props){return _jsx("button",Object.assign({},props));};}export{AbsTouchableOpacity};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var _jsxFileName="/Users/christianstorch/Apps/nekoapps/libs/neko-ui/src/abstractions/View.js";import{jsx as _jsx}from"react/jsx-runtime";export function AbsView(props){return _jsx("div",Object.assign({},props));}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{View as RNView}from"react-native-web";export var AbsView=RNView;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _jsxFileName="/Users/christianstorch/Apps/nekoapps/libs/neko-ui/src/actions/Button.js";var _excluded=["label","style","textProps","size"];import{pipe}from'ramda';import{AbsTouchableOpacity}from"../abstractions/TouchableOpacity";import{Text}from"../text/Text";import{useBackgroundModifier}from"../modifiers/background";import{useBorderModifier}from"../modifiers/border";import{useFlexModifier}from"../modifiers/flex";import{useFlexWrapperModifier}from"../modifiers/flexWrapper";import{useFullColorModifier}from"../modifiers/fullColor.js";import{useMarginModifier}from"../modifiers/margin";import{useMergeThemeComponent}from"../theme/ThemeHandler";import{usePaddingModifier}from"../modifiers/padding";import{usePositionModifier}from"../modifiers/position";import{useSizeModifier}from"../modifiers/size";import{jsx as _jsx}from"react/jsx-runtime";export function Button(rootProps){var _useMergeThemeCompone=useMergeThemeComponent('Button',rootProps),label=_useMergeThemeCompone.label,style=_useMergeThemeCompone.style,textProps=_useMergeThemeCompone.textProps,_useMergeThemeCompone2=_useMergeThemeCompone.size,size=_useMergeThemeCompone2===void 0?'md':_useMergeThemeCompone2,props=_objectWithoutProperties(_useMergeThemeCompone,_excluded);var defaultProps={paddingH:size,paddingV:2,height:size,br:size,borderWidth:1,color:'primary',center:true,row:true};var _useFullColorModifier=useFullColorModifier(Object.assign({},defaultProps,props,{style:style})),_useFullColorModifier2=_slicedToArray(_useFullColorModifier,2),fontColor=_useFullColorModifier2[0],formattedProps=_useFullColorModifier2[1];props=pipe(useSizeModifier,usePositionModifier,usePaddingModifier,useMarginModifier,useFlexModifier,useFlexWrapperModifier,useBackgroundModifier,useBorderModifier)(formattedProps);return _jsx(AbsTouchableOpacity,Object.assign({className:"neko-button neko-wave-click-effect"},props,{children:_jsx(Text,Object.assign({center:true,color:fontColor,strong:true,size:size},textProps,{children:label}))}));}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export*from"./Button";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{adjust,compose,defaultTo,head,join,juxt,map,pipe,replace,split,tail,toLower,toUpper}from'ramda';export var removeSpecialChars=replace(/[^a-zA-Z ,0-9]/g,'');export var capitalize=compose(join(''),juxt([compose(toUpper,head),tail]),toLower,defaultTo(''));export var capitalizeFirstLetter=compose(join(''),juxt([compose(toUpper,head),tail]),defaultTo(''));export var capitalizeSentence=compose(join(' '),map(capitalize),split('. '),defaultTo(''));export var capitalizeAll=compose(join(' '),map(capitalize),split(' '),defaultTo(''));export var isLower=function isLower(str){return(str||'').toLowerCase()===str;};export var capitalizeIfLower=function capitalizeIfLower(str){return isLower(str)?capitalize(str):str;};export var capitalizeAllIfLower=function capitalizeAllIfLower(str){return isLower(str)?capitalizeAll(str):str;};export var capitalizeSentenceIfLower=function capitalizeSentenceIfLower(str){return isLower(str)?capitalizeSentence(str):str;};export var getInitials=function getInitials(str){if(!str)return'--';if(str.includes(' ')){str=str.split(' ').map(head).join('');}return str.substring(0,2);};export var splitWords=split(new RegExp(/[/\-_ ]/gi));export var toKebabCase=function toKebabCase(str){return str.split('').map(function(letter,index){if(letter==='_')return'-';if((letter==null?void 0:letter.toUpperCase())===letter)return`${index!==0?'-':''}${letter==null?void 0:letter.toLowerCase()}`;return letter;}).join('');};export var toSnakeCase=pipe(toKebabCase,replace(/-/g,'_'));export var toCamelCase=pipe(splitWords,map(capitalize),adjust(0,toLower),join(''));export var truncateString=function truncateString(str,size){if(!size)return str;if(!!str&&str.length>size)return str.substring(0,size)+'...';return str;};export var truncate=truncateString;export var slugify=function slugify(text){return toSnakeCase(text);};
|
package/dist/index.css
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
:root {
|
|
2
|
+
font-family: system-ui, Avenir, Helvetica, Arial, sans-serif;
|
|
3
|
+
line-height: 1.5;
|
|
4
|
+
font-weight: 400;
|
|
5
|
+
|
|
6
|
+
color: #213547;
|
|
7
|
+
background-color: #ffffff;
|
|
8
|
+
|
|
9
|
+
font-synthesis: none;
|
|
10
|
+
text-rendering: optimizeLegibility;
|
|
11
|
+
-webkit-font-smoothing: antialiased;
|
|
12
|
+
-moz-osx-font-smoothing: grayscale;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
*,
|
|
16
|
+
* * {
|
|
17
|
+
box-sizing: border-box;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
#root,
|
|
21
|
+
body {
|
|
22
|
+
margin: 0;
|
|
23
|
+
display: flex;
|
|
24
|
+
width: 100%;
|
|
25
|
+
min-height: 100vh;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
.neko-wave-click-effect {
|
|
29
|
+
position: relative;
|
|
30
|
+
padding: 10px 20px;
|
|
31
|
+
background: #1677ff;
|
|
32
|
+
color: white;
|
|
33
|
+
border: none;
|
|
34
|
+
border-radius: 4px;
|
|
35
|
+
cursor: pointer;
|
|
36
|
+
overflow: hidden;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.neko-wave-click-effect:after {
|
|
40
|
+
content: '';
|
|
41
|
+
position: absolute;
|
|
42
|
+
left: 0;
|
|
43
|
+
top: 0;
|
|
44
|
+
right: 0;
|
|
45
|
+
bottom: 0;
|
|
46
|
+
border: 2px solid rgba(200, 200, 200, 0.5);
|
|
47
|
+
opacity: 0;
|
|
48
|
+
transform: scale(0.9);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.neko-wave-click-effect:active:after {
|
|
52
|
+
animation: wave-effect 0.4s ease-out;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.neko-wave-click-effect:hover {
|
|
56
|
+
opacity: 0.95;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
@keyframes wave-effect {
|
|
60
|
+
0% {
|
|
61
|
+
opacity: 1;
|
|
62
|
+
transform: scale(0.9);
|
|
63
|
+
}
|
|
64
|
+
100% {
|
|
65
|
+
opacity: 0;
|
|
66
|
+
transform: scale(1.3);
|
|
67
|
+
}
|
|
68
|
+
}
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export*from"./structure";export var version=
|
|
1
|
+
export*from"./structure";export*from"./actions";export*from"./presentation";export*from"./text";export*from"./theme";export*from"./NekoUI";export var version=41;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["bg","background","backgroundColor"];import{clearProps}from"./_helpers";import{useGetColor}from"../theme/ThemeHandler";export function useBackgroundModifier(props){var _ref;var getColor=useGetColor();var bg=props.bg,background=props.background,backgroundColor=props.backgroundColor,restProps=_objectWithoutProperties(props,_excluded);backgroundColor=getColor((_ref=bg!=null?bg:background)!=null?_ref:backgroundColor);var style=clearProps({backgroundColor:backgroundColor});return Object.assign({},restProps,{style:Object.assign({},props.style,style)});}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["br","brT","borderRadiusT","brB","borderRadiusB","brL","borderRadiusL","brR","borderRadiusR","borderRadius","borderStyle","borderWidth","borderColor","brColor","round"];import{clearProps}from"./_helpers";import{useGetColor,useGetRadius}from"../theme/ThemeHandler";export function useBorderModifier(props){var _ref,_ref2,_ref3,_ref4,_ref5,_ref6,_ref7,_ref8,_ref9,_ref0,_ref1,_ref10,_ref11,_ref12,_ref13,_ref14;var getRadius=useGetRadius();var getColor=useGetColor();var br=props.br,brT=props.brT,borderRadiusT=props.borderRadiusT,brB=props.brB,borderRadiusB=props.borderRadiusB,brL=props.brL,borderRadiusL=props.borderRadiusL,brR=props.brR,borderRadiusR=props.borderRadiusR,borderRadius=props.borderRadius,borderStyle=props.borderStyle,borderWidth=props.borderWidth,borderColor=props.borderColor,brColor=props.brColor,round=props.round,restProps=_objectWithoutProperties(props,_excluded);if(round)br=1000;var borderTopRightRadius=getRadius((_ref=(_ref2=(_ref3=(_ref4=brT!=null?brT:borderRadiusT)!=null?_ref4:brR)!=null?_ref3:borderRadiusR)!=null?_ref2:borderRadius)!=null?_ref:br);var borderTopLeftRadius=getRadius((_ref5=(_ref6=(_ref7=(_ref8=brT!=null?brT:borderRadiusT)!=null?_ref8:brL)!=null?_ref7:borderRadiusL)!=null?_ref6:borderRadius)!=null?_ref5:br);var borderBottomRightRadius=getRadius((_ref9=(_ref0=(_ref1=(_ref10=brB!=null?brB:borderRadiusB)!=null?_ref10:brR)!=null?_ref1:borderRadiusR)!=null?_ref0:borderRadius)!=null?_ref9:br);var borderBottomLeftRadius=getRadius((_ref11=(_ref12=(_ref13=(_ref14=brB!=null?brB:borderRadiusB)!=null?_ref14:brL)!=null?_ref13:borderRadiusL)!=null?_ref12:borderRadius)!=null?_ref11:br);if(!!borderColor||brColor)borderColor=getColor(brColor!=null?brColor:borderColor);borderStyle=borderStyle;if(!!borderWidth)borderStyle='solid';var style=clearProps({borderStyle:borderStyle,borderTopRightRadius:borderTopRightRadius,borderTopLeftRadius:borderTopLeftRadius,borderBottomRightRadius:borderBottomRightRadius,borderBottomLeftRadius:borderBottomLeftRadius,borderColor:borderColor,borderWidth:borderWidth});return Object.assign({},restProps,{style:Object.assign({},props.style,style)});}
|
package/dist/modifiers/flex.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{clearProps}from"./_helpers";export function useFlexModifier(props){var flex=props.flex;if(flex===true)flex=1;var style=clearProps({flex:flex});return Object.assign({},
|
|
1
|
+
import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["flex"];import{clearProps}from"./_helpers";export function useFlexModifier(props){var flex=props.flex,restProps=_objectWithoutProperties(props,_excluded);if(flex===true)flex=1;var style=clearProps({flex:flex});return Object.assign({},restProps,{style:Object.assign({},props.style,style)});}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{clearProps}from"./_helpers";export function useFlexWrapperModifier(props){var justify=props.justify,align=props.align,center=props.center,centerV=props.centerV,centerH=props.centerH,toRight=props.toRight,toBottom=props.toBottom,direction=props.direction,row=props.row,wrap=props.wrap,gap=props.gap;var justifyContent=justify;var alignItems=align;var flexDirection=direction;var flexWrap;if(center){justifyContent='center';alignItems='center';}else{if(centerV)justifyContent='center';if(toBottom)justifyContent='flex-end';if(centerH)alignItems='center';if(toRight)alignItems='flex-end';}if(row)flexDirection='row';if(wrap)flexWrap='wrap';var style=clearProps({justifyContent:justifyContent,alignItems:alignItems,flexDirection:flexDirection,flexWrap:flexWrap,gap:gap});return Object.assign({},
|
|
1
|
+
import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["justify","align","center","centerV","centerH","toRight","toBottom","direction","row","wrap","gap"];import{clearProps}from"./_helpers";import{useGetSpace}from"../theme/ThemeHandler";export function useFlexWrapperModifier(props){var getSpace=useGetSpace();var justify=props.justify,align=props.align,center=props.center,centerV=props.centerV,centerH=props.centerH,toRight=props.toRight,toBottom=props.toBottom,direction=props.direction,row=props.row,wrap=props.wrap,gap=props.gap,restProps=_objectWithoutProperties(props,_excluded);var justifyContent=justify;var alignItems=align;var flexDirection=direction||'column';var flexWrap;gap=getSpace(gap);if(center){justifyContent='center';alignItems='center';}else{if(centerV)justifyContent='center';if(toBottom)justifyContent='flex-end';if(centerH)alignItems='center';if(toRight)alignItems='flex-end';}if(row)flexDirection='row';if(wrap)flexWrap='wrap';var style=clearProps({display:'flex',justifyContent:justifyContent,alignItems:alignItems,flexDirection:flexDirection,flexWrap:flexWrap,gap:gap});return Object.assign({},restProps,{style:Object.assign({},props.style,style)});}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["color","outline"];import tinycolor from'tinycolor2';import{useGetColor}from"../theme/ThemeHandler";export function useFullColorModifier(props){var getColor=useGetColor();var color=props.color,outline=props.outline,restProps=_objectWithoutProperties(props,_excluded);var bg=color;var bgObj=tinycolor(getColor(bg));var borderColor=color;var textColor='text';var textColorObj=tinycolor(getColor('text'));if(!!outline){bg='transparent';textColor=color;}else if(bgObj.isDark()===textColorObj.isDark()){textColor='overlayBG';}return[textColor,Object.assign({},restProps,{bg:bg,borderColor:borderColor})];}
|
package/dist/modifiers/margin.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{clearProps}from"./_helpers";export function useMarginModifier(props){var _ref,_ref2,_ref3,_ref4;var marginT=props.marginT,marginB=props.marginB,marginL=props.marginL,marginR=props.marginR,marginV=props.marginV,marginH=props.marginH,margin=props.margin;var marginTop=(_ref=marginT!=null?marginT:marginV)!=null?_ref:margin;var marginBottom=(_ref2=marginB!=null?marginB:marginV)!=null?_ref2:margin;var marginRight=(_ref3=marginR!=null?marginR:marginH)!=null?_ref3:margin;var marginLeft=(_ref4=marginL!=null?marginL:marginH)!=null?_ref4:margin;var style=clearProps({marginTop:marginTop,marginBottom:marginBottom,marginRight:marginRight,marginLeft:marginLeft});return Object.assign({},
|
|
1
|
+
import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["marginT","marginB","marginL","marginR","marginV","marginH","margin"];import{clearProps}from"./_helpers";import{useGetSpace}from"../theme/ThemeHandler";export function useMarginModifier(props){var _ref,_ref2,_ref3,_ref4;var getSpace=useGetSpace();var marginT=props.marginT,marginB=props.marginB,marginL=props.marginL,marginR=props.marginR,marginV=props.marginV,marginH=props.marginH,margin=props.margin,restProps=_objectWithoutProperties(props,_excluded);var marginTop=getSpace((_ref=marginT!=null?marginT:marginV)!=null?_ref:margin);var marginBottom=getSpace((_ref2=marginB!=null?marginB:marginV)!=null?_ref2:margin);var marginRight=getSpace((_ref3=marginR!=null?marginR:marginH)!=null?_ref3:margin);var marginLeft=getSpace((_ref4=marginL!=null?marginL:marginH)!=null?_ref4:margin);var style=clearProps({marginTop:marginTop,marginBottom:marginBottom,marginRight:marginRight,marginLeft:marginLeft});return Object.assign({},restProps,{style:Object.assign({},props.style,style)});}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{clearProps}from"./_helpers";export function usePaddingModifier(props){var _ref,_ref2,_ref3,_ref4;var paddingT=props.paddingT,paddingB=props.paddingB,paddingL=props.paddingL,paddingR=props.paddingR,paddingV=props.paddingV,paddingH=props.paddingH,padding=props.padding;var paddingTop=(_ref=paddingT!=null?paddingT:paddingV)!=null?_ref:padding;var paddingBottom=(_ref2=paddingB!=null?paddingB:paddingV)!=null?_ref2:padding;var paddingRight=(_ref3=paddingR!=null?paddingR:paddingH)!=null?_ref3:padding;var paddingLeft=(_ref4=paddingL!=null?paddingL:paddingH)!=null?_ref4:padding;var style=clearProps({paddingTop:paddingTop,paddingBottom:paddingBottom,paddingRight:paddingRight,paddingLeft:paddingLeft});return Object.assign({},
|
|
1
|
+
import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["paddingT","paddingB","paddingL","paddingR","paddingV","paddingH","padding"];import{clearProps}from"./_helpers";import{useGetSpace}from"../theme/ThemeHandler";export function usePaddingModifier(props){var _ref,_ref2,_ref3,_ref4;var getSpace=useGetSpace();var paddingT=props.paddingT,paddingB=props.paddingB,paddingL=props.paddingL,paddingR=props.paddingR,paddingV=props.paddingV,paddingH=props.paddingH,padding=props.padding,restProps=_objectWithoutProperties(props,_excluded);var paddingTop=getSpace((_ref=paddingT!=null?paddingT:paddingV)!=null?_ref:padding);var paddingBottom=getSpace((_ref2=paddingB!=null?paddingB:paddingV)!=null?_ref2:padding);var paddingRight=getSpace((_ref3=paddingR!=null?paddingR:paddingH)!=null?_ref3:padding);var paddingLeft=getSpace((_ref4=paddingL!=null?paddingL:paddingH)!=null?_ref4:padding);var style=clearProps({paddingTop:paddingTop,paddingBottom:paddingBottom,paddingRight:paddingRight,paddingLeft:paddingLeft});return Object.assign({},restProps,{style:Object.assign({},props.style,style)});}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{clearProps}from"./_helpers";export function usePositionModifier(props){var position=props.position,absolute=props.absolute,relative=props.relative,top=props.top,bottom=props.bottom,left=props.left,right=props.right;if(absolute)position='absolute';if(relative)position='relative';var style=clearProps({position:position,top:top,bottom:bottom,left:left,right:right});return Object.assign({},
|
|
1
|
+
import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["position","absolute","relative","top","bottom","left","right"];import{clearProps}from"./_helpers";export function usePositionModifier(props){var position=props.position,absolute=props.absolute,relative=props.relative,top=props.top,bottom=props.bottom,left=props.left,right=props.right,restProps=_objectWithoutProperties(props,_excluded);if(absolute)position='absolute';if(relative)position='relative';var style=clearProps({position:position,top:top,bottom:bottom,left:left,right:right});return Object.assign({},restProps,{style:Object.assign({},props.style,style)});}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["shadow"];import{clearProps}from"./_helpers";import{useGetColor}from"../theme/ThemeHandler";export function useShadowModifier(props){var getColor=useGetColor();var shadow=props.shadow,restProps=_objectWithoutProperties(props,_excluded);var boxShadow,shadowRadius,shadowOffset,shadowOpacity,shadowColor,elevation;if(shadow===true){shadow=getColor('shadow');}else if(!!shadow){shadow=getColor(shadow);}if(!!shadow){boxShadow=`0 1px 10px ${shadow}`;shadowRadius=10;shadowOffset={width:0,height:1};shadowOpacity=1;elevation=10;shadowColor=shadow;}var style=clearProps({boxShadow:boxShadow,shadowRadius:shadowRadius,shadowOffset:shadowOffset,shadowOpacity:shadowOpacity,shadowColor:shadowColor,elevation:elevation});return Object.assign({},restProps,{style:Object.assign({},props.style,style)});}
|
package/dist/modifiers/size.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{clearProps}from"./_helpers";export function useSizeModifier(props){var _ref=props||{},width=_ref.width,height=_ref.height,fullWidth=_ref.fullWidth,fullHeight=_ref.fullHeight;if(fullWidth)width='100%';if(fullHeight)height='100%';var style=clearProps({height:height,width:width});return Object.assign({},
|
|
1
|
+
import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["width","height","minH","minHeight","maxH","maxHeight","minWidth","minW","maxWidth","maxW","fullWidth","fullW","fullHeight","fullH","ratio","square"];import{clearProps}from"./_helpers";import{useGetElementHeight}from"../theme/ThemeHandler";export function useSizeModifier(props){var getHeight=useGetElementHeight();var _ref=props||{},width=_ref.width,height=_ref.height,minH=_ref.minH,minHeight=_ref.minHeight,maxH=_ref.maxH,maxHeight=_ref.maxHeight,minWidth=_ref.minWidth,minW=_ref.minW,maxWidth=_ref.maxWidth,maxW=_ref.maxW,fullWidth=_ref.fullWidth,fullW=_ref.fullW,fullHeight=_ref.fullHeight,fullH=_ref.fullH,ratio=_ref.ratio,square=_ref.square,restProps=_objectWithoutProperties(_ref,_excluded);minHeight=getHeight(minHeight||minH);minWidth=minWidth||minW;maxHeight=maxHeight||maxH;maxWidth=maxWidth||maxW;height=getHeight(height);if(fullWidth||fullW)width='100%';if(fullHeight||fullH)height='100%';var aspectRatio=ratio;if(!!square)aspectRatio=1;var style=clearProps({height:height,width:width,minHeight:minHeight,minHeight:minHeight,maxHeight:maxHeight,maxWidth:maxWidth,aspectRatio:aspectRatio});return Object.assign({},restProps,{style:Object.assign({},props.style,style)});}
|
package/dist/modifiers/text.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{clearProps}from"./_helpers";export function useTextModifier(
|
|
1
|
+
import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["size"],_excluded2=["color","opacity","bold","strong","fontWeight","weight","italic","underline","lineHeight","align","center","toRight","inherit","fontSize"];import{clearProps}from"./_helpers";import{mergePreset,useGetColor,useTexts}from"../theme/ThemeHandler";export function useTextModifier(_ref){var size=_ref.size,props=_objectWithoutProperties(_ref,_excluded);var getColor=useGetColor();var texts=useTexts();if(!size&&!props.inherit)size='p';var _mergePreset=mergePreset(texts,size,props,'p'),color=_mergePreset.color,opacity=_mergePreset.opacity,bold=_mergePreset.bold,strong=_mergePreset.strong,fontWeight=_mergePreset.fontWeight,weight=_mergePreset.weight,italic=_mergePreset.italic,underline=_mergePreset.underline,lineHeight=_mergePreset.lineHeight,align=_mergePreset.align,center=_mergePreset.center,toRight=_mergePreset.toRight,inherit=_mergePreset.inherit,fontSize=_mergePreset.fontSize,restProps=_objectWithoutProperties(_mergePreset,_excluded2);var fontStyle;if(italic)fontStyle='italic';var textDecorationLine;if(underline)textDecorationLine='underline';var textAlign=align;if(center)textAlign='center';if(toRight)textAlign='right';fontWeight=fontWeight||weight;if(bold||strong)fontWeight=600;if(!inherit)color=getColor(color||'text');var style=clearProps({fontWeight:fontWeight,fontStyle:fontStyle,textDecorationLine:textDecorationLine,lineHeight:lineHeight,textAlign:textAlign,opacity:opacity,color:color,fontSize:fontSize});return Object.assign({},restProps,{style:Object.assign({},props.style,style)});}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _jsxFileName="/Users/christianstorch/Apps/nekoapps/libs/neko-ui/src/presentation/Icon.js";var _excluded=["name","color"];import{AbsIcon}from"../abstractions/Icon";import{useGetColor,useMergeThemeComponent}from"../theme/ThemeHandler";import{jsx as _jsx}from"react/jsx-runtime";export function Icon(_ref){var name=_ref.name,color=_ref.color,rootProps=_objectWithoutProperties(_ref,_excluded);var getColor=useGetColor();var props=useMergeThemeComponent('Icon',rootProps);return _jsx(AbsIcon,Object.assign({className:"neko-icon",name:name,color:getColor(color||'text')},props));}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _jsxFileName="/Users/christianstorch/Apps/nekoapps/libs/neko-ui/src/presentation/Tag.js";var _excluded=["label","style","textProps","size"];import{Text}from"../text/Text";import{View}from"../structure/View";import{moveScaleDown}from"../theme/helpers/sizeScale";import{useFullColorModifier}from"../modifiers/fullColor.js";import{useMergeThemeComponent}from"../theme/ThemeHandler";import{jsx as _jsx}from"react/jsx-runtime";export function Tag(rootProps){var _useMergeThemeCompone=useMergeThemeComponent('Button',rootProps),label=_useMergeThemeCompone.label,style=_useMergeThemeCompone.style,textProps=_useMergeThemeCompone.textProps,_useMergeThemeCompone2=_useMergeThemeCompone.size,size=_useMergeThemeCompone2===void 0?'md':_useMergeThemeCompone2,props=_objectWithoutProperties(_useMergeThemeCompone,_excluded);var oneSizeDown=moveScaleDown(size,1);var twoSizeDown=moveScaleDown(size,2);var threeSizeDown=moveScaleDown(size,3);var defaultProps={paddingH:twoSizeDown,padding:threeSizeDown,outline:true,br:threeSizeDown,borderWidth:1,color:'primary',center:true};var _useFullColorModifier=useFullColorModifier(Object.assign({},defaultProps,props,{style:style})),_useFullColorModifier2=_slicedToArray(_useFullColorModifier,2),fontColor=_useFullColorModifier2[0],formattedProps=_useFullColorModifier2[1];return _jsx(View,{className:"neko-tag",row:true,children:_jsx(View,Object.assign({className:"neko-tag-inner"},formattedProps,{children:_jsx(Text,Object.assign({strong:true,center:true,color:fontColor,size:oneSizeDown},textProps,{children:label}))}))});}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export*from"./Tag";export*from"./Icon";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _jsxFileName="/Users/christianstorch/Apps/nekoapps/libs/neko-ui/src/structure/Card.js";var _excluded=["children"];import{pipe}from'ramda';import{AbsView}from"../abstractions/View";import{useBackgroundModifier}from"../modifiers/background";import{useBorderModifier}from"../modifiers/border";import{useFlexModifier}from"../modifiers/flex";import{useFlexWrapperModifier}from"../modifiers/flexWrapper";import{useMarginModifier}from"../modifiers/margin";import{useMergeThemeComponent}from"../theme/ThemeHandler";import{usePaddingModifier}from"../modifiers/padding";import{usePositionModifier}from"../modifiers/position";import{useShadowModifier}from"../modifiers/shadow";import{useSizeModifier}from"../modifiers/size";import{jsx as _jsx}from"react/jsx-runtime";export function Card(_ref){var children=_ref.children,rootProps=_objectWithoutProperties(_ref,_excluded);var props=useMergeThemeComponent('Card',rootProps);var defaultProps={padding:'md',br:'xlg',bg:'overlayBG'};props=pipe(useSizeModifier,usePositionModifier,usePaddingModifier,useMarginModifier,useFlexWrapperModifier,useFlexModifier,useBackgroundModifier,useBorderModifier,useShadowModifier)(Object.assign({},defaultProps,props));return _jsx(AbsView,Object.assign({className:"neko-card"},props,{children:children}));}
|
package/dist/structure/View.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var _jsxFileName="/Users/christianstorch/Apps/nekoapps/libs/neko-ui/src/structure/View.js";import
|
|
1
|
+
import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _jsxFileName="/Users/christianstorch/Apps/nekoapps/libs/neko-ui/src/structure/View.js";var _excluded=["children"];import{pipe}from'ramda';import{AbsView}from"../abstractions/View";import{useBackgroundModifier}from"../modifiers/background";import{useBorderModifier}from"../modifiers/border";import{useFlexModifier}from"../modifiers/flex";import{useFlexWrapperModifier}from"../modifiers/flexWrapper";import{useMarginModifier}from"../modifiers/margin";import{useMergeThemeComponent}from"../theme/ThemeHandler";import{usePaddingModifier}from"../modifiers/padding";import{usePositionModifier}from"../modifiers/position";import{useShadowModifier}from"../modifiers/shadow";import{useSizeModifier}from"../modifiers/size";import{jsx as _jsx}from"react/jsx-runtime";export function View(_ref){var children=_ref.children,rootProps=_objectWithoutProperties(_ref,_excluded);var props=useMergeThemeComponent('View',rootProps);props=pipe(useSizeModifier,usePositionModifier,usePaddingModifier,useMarginModifier,useFlexWrapperModifier,useFlexModifier,useBackgroundModifier,useBorderModifier,useShadowModifier)(props);return _jsx(AbsView,Object.assign({className:"neko-view"},props,{children:children}));}
|
package/dist/structure/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export*from"./View";
|
|
1
|
+
export*from"./View";export*from"./Card";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _jsxFileName="/Users/christianstorch/Apps/nekoapps/libs/neko-ui/src/text/Text.js";var _excluded=["children"];import{pipe}from'ramda';import{AbsText}from"../abstractions/Text";import{useFlexModifier}from"../modifiers/flex";import{useMarginModifier}from"../modifiers/margin";import{usePaddingModifier}from"../modifiers/padding";import{useSizeModifier}from"../modifiers/size";import{useTextModifier}from"../modifiers/text";import{jsx as _jsx}from"react/jsx-runtime";export function Text(_ref){var children=_ref.children,props=_objectWithoutProperties(_ref,_excluded);props=pipe(useSizeModifier,usePaddingModifier,useMarginModifier,useFlexModifier,useTextModifier)(props);return _jsx(AbsText,Object.assign({},props,{children:children}));}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export*from"./Text";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var _jsxFileName="/Users/christianstorch/Apps/nekoapps/libs/neko-ui/src/theme/ThemeHandler.js";import React from'react';import{jsx as _jsx}from"react/jsx-runtime";var ThemeContext=React.createContext(null);export var useThemeHandler=function useThemeHandler(){return React.useContext(ThemeContext)||{};};export function ThemeHandler(_ref){var themes=_ref.themes,children=_ref.children;var value={};return _jsx(ThemeContext.Provider,{value:value,children:children});}
|
|
1
|
+
import _slicedToArray from"@babel/runtime/helpers/slicedToArray";var _jsxFileName="/Users/christianstorch/Apps/nekoapps/libs/neko-ui/src/theme/ThemeHandler.js";import{mergeDeepRight}from'ramda';import React from'react';import{DEFAULT_LIGHT_THEME}from"./default/lightTheme";import{DEFAULT_THEMES}from"./default/themes";import{useFormattedTheme}from"./format/formatTheme";import{jsx as _jsx}from"react/jsx-runtime";var ThemeContext=React.createContext(null);export var useThemeHandler=function useThemeHandler(){return React.useContext(ThemeContext)||{};};export var useTheme=function useTheme(){return useThemeHandler().theme||DEFAULT_LIGHT_THEME;};export var useColors=function useColors(){return useTheme().colors||{};};var getColor=function getColor(colors,key){return colors[key]||key;};export var useGetColor=function useGetColor(){var colors=useColors();return function(key){return getColor(colors,key);};};export var useSpaces=function useSpaces(){return useTheme().spaces||{};};var getSpace=function getSpace(spaces,key){return spaces[key]||key;};export var useGetSpace=function useGetSpace(){var spaces=useSpaces();return function(key){return getSpace(spaces,key);};};export var useRadius=function useRadius(){return useTheme().radius||{};};var getRadius=function getRadius(radius,key){return radius[key]||key;};export var useGetRadius=function useGetRadius(){var radius=useRadius();return function(key){return getRadius(radius,key);};};export var useTexts=function useTexts(){return useTheme().texts||{};};export function mergePreset(presets,key,props,defaultKey){if(!key)return props;var preset=presets[key]||presets[defaultKey];return Object.assign({},props,preset);}export var useElementHeights=function useElementHeights(){return useTheme().elementHeights||{};};var getElementHeight=function getElementHeight(elementHeights,key){return elementHeights[key]||key;};export var useGetElementHeight=function useGetElementHeight(){var elementHeights=useElementHeights();return function(key){return getElementHeight(elementHeights,key);};};export var useThemeComponents=function useThemeComponents(){return useTheme().components||{};};export function useThemeComponent(name){var components=useThemeComponents();return components[name]||{};}export function useMergeThemeComponent(name,props){var themeProps=useThemeComponent(name);return mergeDeepRight(themeProps,props);}export function ThemeHandler(_ref){var themes=_ref.themes,initTheme=_ref.initTheme,children=_ref.children;var _React$useState=React.useState(initTheme||'light'),_React$useState2=_slicedToArray(_React$useState,2),activeThemeKey=_React$useState2[0],setActiveThemeKey=_React$useState2[1];var theme=useFormattedTheme(themes,activeThemeKey);var value={theme:theme,themes:themes,activeThemeKey:activeThemeKey,setActiveThemeKey:setActiveThemeKey};return _jsx(ThemeContext.Provider,{value:value,children:children});}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export var BASE_THEME={spaces:{xxxsm:1,xxsm:3,xsm:5,sm:10,md:15,lg:20,xlg:30,xxlg:40,xxxlg:50},radius:{xxxsm:4,xxsm:5,xsm:5,sm:7,md:8,lg:10,xlg:12,xxlg:15,xxxlg:18},elementHeights:{xsm:20,sm:30,md:35,lg:50,xlg:60},texts:{h1:{fontSize:32,strong:true},h2:{fontSize:26,strong:true},h3:{fontSize:22,strong:true},h4:{fontSize:18,strong:true},h5:{fontSize:16,strong:true},h6:{fontSize:14,strong:true},p:{fontSize:14},sm:{fontSize:12},xsm:{fontSize:10},xxsm:{fontSize:8}}};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export var BASE_THEME={spaces:{xxsm:3,xsm:5,sm:10,md:15,lg:20,xlg:30},radius:{xsm:5,sm:7,md:8,lg:10,xlg:12},elementHeights:{xsm:20,sm:30,md:35,lg:50,xlg:60},texts:{h1:{fontSize:32,strong:true},h2:{fontSize:26,strong:true},h3:{fontSize:22,strong:true},h4:{fontSize:18,strong:true},h5:{fontSize:16,strong:true},h6:{fontSize:14,strong:true},p:{fontSize:14},sm:{fontSize:12},xsm:{fontSize:10},xxsm:{fontSize:8}}};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{BASE_THEME as MOBILE_BASE_THEME}from"./base.native";export var BASE_THEME=MOBILE_BASE_THEME;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{mergeDeepRight}from'ramda';import{BASE_THEME}from"./base";export var CYBERPUNK_DARK_THEME=mergeDeepRight(BASE_THEME,{colors:{primary:'#FCEE09',text:'#FFFFFF',text2:'#B3B3B3',text3:'#8C8C8C',text4:'#666666',bg:'#0A0A0F',overlayBG:'#14141F',shadow:'rgba(39, 45, 52, 0.6)',blue:'#00E5FF',yellow:'#FFD600',green:'#00FF9D',purple:'#D500F9',orange:'#FF9100',cyan:'#00B8D4',red:'#FF1744',navy:'#1E2A38',indigo:'#651FFF',gray:'#757575',brown:'#6D4C41',lylac:'#B388FF',pink:'#FF80AB'}});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{mergeDeepRight}from'ramda';import{BASE_THEME}from"./base";export var DEFAULT_DARK_THEME=mergeDeepRight(BASE_THEME,{colors:{primary:'#818DF9',text:'#FFFFFF',text2:'#E0E0E0',text3:'#B0B0B0',text4:'#8A8A8A',bg:'#383E44',overlayBG:'#272D34',shadow:'rgba(39, 45, 52, 0.6)',blue:'#4DA3FF',yellow:'#FFD93B',green:'#4CAF50',purple:'#9B59B6',orange:'#FF7F50',cyan:'#00BCD4',red:'#E74C3C',navy:'#34495E',indigo:'#5C6BC0',gray:'#9E9E9E',brown:'#8D6E63',lylac:'#B39DDB',pink:'#F48FB1'}});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{mergeDeepRight}from'ramda';import{BASE_THEME}from"./base";export var DEEP_WOODS_DARK_THEME=mergeDeepRight(BASE_THEME,{colors:{primary:'#4CAF50',text:'#F0F8F2',text2:'#C8E6C9',text3:'#A5D6A7',text4:'#81C784',bg:'#0D1B14',overlayBG:'#16281F',shadow:'rgba(39, 45, 52, 0.6)',blue:'#64B5F6',yellow:'#FBC02D',green:'#81C784',purple:'#9575CD',orange:'#FFB74D',cyan:'#4DD0E1',red:'#E57373',navy:'#1B263B',indigo:'#5C6BC0',gray:'#9E9E9E',brown:'#8D6E63',lylac:'#B39DDB',pink:'#F48FB1'}});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{mergeDeepRight}from'ramda';import{BASE_THEME}from"./base";export var FOREST_MIST_THEME=mergeDeepRight(BASE_THEME,{colors:{primary:'#4CAF50',text:'#0B2414',text2:'#14532D',text3:'#1B5E20',text4:'#388E3C',bg:'#E9F5EC',overlayBG:'#FFFFFF',shadow:'rgba(39, 45, 52, 0.15)',blue:'#2563EB',yellow:'#F59E0B',green:'#15803D',purple:'#7C3AED',orange:'#EA580C',cyan:'#0891B2',red:'#B91C1C',navy:'#1E3A8A',indigo:'#4338CA',gray:'#94A3B8',brown:'#78350F',lylac:'#A78BFA',pink:'#F472B6'}});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{mergeDeepRight}from'ramda';import{BASE_THEME}from"./base";export var DEFAULT_LIGHT_THEME=mergeDeepRight(BASE_THEME,{colors:{primary:'#818DF9',text:'#272D34',text2:'#4A5159',text3:'#6E7680',text4:'#9AA1AC',bg:'#F4F5FE',overlayBG:'#FFFFFF',shadow:'rgba(39, 45, 52, 0.15)',blue:'#4DA3FF',yellow:'#FFD93B',green:'#4CAF50',purple:'#9B59B6',orange:'#FF7F50',cyan:'#00BCD4',red:'#E74C3C',navy:'#34495E',indigo:'#5C6BC0',gray:'#B0BEC5',brown:'#8D6E63',lylac:'#B39DDB',pink:'#F48FB1'}});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{mergeDeepRight}from'ramda';import{BASE_THEME}from"./base";export var MIDNIGHT_NEON_THEME=mergeDeepRight(BASE_THEME,{colors:{primary:'#FF00FF',text:'#F0F0F0',text2:'#D4D4D4',text3:'#A3A3A3',text4:'#7A7A7A',bg:'#0D0D0D',overlayBG:'#1A1A1A',shadow:'rgba(39, 45, 52, 0.6)',blue:'#3B82F6',yellow:'#FACC15',green:'#22C55E',purple:'#A855F7',orange:'#FB923C',cyan:'#06B6D4',red:'#F87171',navy:'#1E3A8A',indigo:'#6366F1',gray:'#9CA3AF',brown:'#92400E',lylac:'#C084FC',pink:'#F472B6'}});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{mergeDeepRight}from'ramda';import{BASE_THEME}from"./base";export var OCEAN_BREEZE_THEME=mergeDeepRight(BASE_THEME,{colors:{primary:'#2B90D9',text:'#04364A',text2:'#065A82',text3:'#0B84B4',text4:'#3ABEFF',bg:'#E6F7FF',overlayBG:'#FFFFFF',shadow:'rgba(39, 45, 52, 0.15)',blue:'#1D4ED8',yellow:'#FACC15',green:'#10B981',purple:'#8B5CF6',orange:'#FB923C',cyan:'#06B6D4',red:'#EF4444',navy:'#1E3A8A',indigo:'#6366F1',gray:'#9CA3AF',brown:'#A16207',lylac:'#C4B5FD',pink:'#F472B6'}});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{mergeDeepRight}from'ramda';import{BASE_THEME}from"./base";export var PASTEL_DREAM_THEME=mergeDeepRight(BASE_THEME,{colors:{primary:'#FFB6C1',text:'#4B4453',text2:'#6D6875',text3:'#A093A6',text4:'#C9BBCF',bg:'#FFF7FA',overlayBG:'#FFFFFF',shadow:'rgba(39, 45, 52, 0.15)',blue:'#A5B4FC',yellow:'#FDE68A',green:'#BBF7D0',purple:'#E9D5FF',orange:'#FED7AA',cyan:'#BAE6FD',red:'#FCA5A5',navy:'#A5B4FC',indigo:'#C7D2FE',gray:'#E5E7EB',brown:'#E0B084',lylac:'#E9D5FF',pink:'#FBCFE8'}});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{mergeDeepRight}from'ramda';import{BASE_THEME}from"./base";export var SUNSET_GLOW_THEME=mergeDeepRight(BASE_THEME,{colors:{primary:'#FF6B6B',text:'#331E0A',text2:'#5C4033',text3:'#8C5A43',text4:'#B97A57',bg:'#FFF5E6',overlayBG:'#FFFFFF',shadow:'rgba(39, 45, 52, 0.15)',blue:'#3B82F6',yellow:'#FBBF24',green:'#22C55E',purple:'#A855F7',orange:'#FB923C',cyan:'#06B6D4',red:'#DC2626',navy:'#1E3A8A',indigo:'#4F46E5',gray:'#9CA3AF',brown:'#92400E',lylac:'#C084FC',pink:'#F472B6'}});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{CYBERPUNK_DARK_THEME}from"./cyberpunkTheme";import{DEEP_WOODS_DARK_THEME}from"./deepWoodsTheme";import{DEFAULT_DARK_THEME}from"./darkTheme";import{DEFAULT_LIGHT_THEME}from"./lightTheme";import{FOREST_MIST_THEME}from"./forestTheme";import{MIDNIGHT_NEON_THEME}from"./midnightTheme";import{OCEAN_BREEZE_THEME}from"./oceanTheme";import{PASTEL_DREAM_THEME}from"./pastelTheme";import{SUNSET_GLOW_THEME}from"./sunsetTheme";export var DEFAULT_THEMES={light:DEFAULT_LIGHT_THEME,dark:DEFAULT_DARK_THEME,pastel:PASTEL_DREAM_THEME,midnight:MIDNIGHT_NEON_THEME,sunset:SUNSET_GLOW_THEME,ocean:OCEAN_BREEZE_THEME,forest:FOREST_MIST_THEME,cyberpunk:CYBERPUNK_DARK_THEME,deepWoods:DEEP_WOODS_DARK_THEME};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import tinycolor from'tinycolor2';var variations=[10,20,30,40,50,60,70,80,90];export function generateColorVariants(colors){var isDark=tinycolor((colors==null?void 0:colors.overlayBG)||(colors==null?void 0:colors.bg)).isDark();var result={};Object.entries(colors).forEach(function(_ref){var _ref2=_slicedToArray(_ref,2),key=_ref2[0],value=_ref2[1];result[key]=value;variations.forEach(function(amount){if(amount<=60){var lightenSignal=!isDark?'-':'+';var darkenSignal=isDark?'-':'+';result[`${key}${lightenSignal}${amount}`]=tinycolor(value).lighten(amount).toString();result[`${key}${darkenSignal}${amount}`]=tinycolor(value).darken(amount).toString();}result[`${key}_op${amount}`]=tinycolor(value).setAlpha(amount/100).toString();});});return result;}export function applyColorVariantsOnTheme(theme){return Object.assign({},theme,{colors:generateColorVariants(theme.colors)});}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{mergeDeepRight,pipe}from'ramda';import React from'react';import{DEFAULT_LIGHT_THEME}from"../default/lightTheme";import{DEFAULT_THEMES}from"../default/themes";import{applyColorVariantsOnTheme}from"./colorsVariations";export function useFormattedTheme(themes,key){themes=themes||DEFAULT_THEMES;return React.useMemo(function(){return formatTheme(themes,key);},[key]);}export function formatTheme(themes,key){themes=themes||DEFAULT_THEMES;var theme=themes[key]||DEFAULT_THEMES[key]||DEFAULT_LIGHT_THEME;var baseDefaultTheme=DEFAULT_THEMES[theme.base]||DEFAULT_THEMES[key]||DEFAULT_LIGHT_THEME;return pipe(mergeDeepRight(baseDefaultTheme),applyColorVariantsOnTheme)(Object.assign({},theme));}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var SCALES=['xxxsm','xxsm','xsm','sm','md','lg','xlg','xxlg','xxxlg'];export function moveScaleDown(value){var unit=arguments.length>1&&arguments[1]!==undefined?arguments[1]:1;var index=SCALES.indexOf(value);if(!index)return value;return SCALES[index-unit]||value;}
|
package/dist/theme/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export*from"./ThemeHandler";
|
|
1
|
+
export*from"./ThemeHandler";export*from"./default/themes";
|
package/package.json
CHANGED
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@neko-os/ui",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.3",
|
|
4
4
|
"author": "Christian Storch <ccstorch@gmail.com>",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.js",
|
|
7
7
|
"react-native": "src/index.js",
|
|
8
|
-
"files": [
|
|
8
|
+
"files": [
|
|
9
|
+
"dist",
|
|
10
|
+
"src"
|
|
11
|
+
],
|
|
9
12
|
"scripts": {
|
|
10
13
|
"build": "rm -rf dist && babel src --out-dir dist --extensions \".js,.jsx\" --copy-files",
|
|
11
14
|
"watch": "babel src --out-dir dist --extensions \".js,.jsx\" --copy-files --watch",
|
|
15
|
+
"watch:sync": "node scripts/watch-and-sync.js",
|
|
12
16
|
"dev": "yarn build && yarn watch",
|
|
13
17
|
"prepublishOnly": "yarn build",
|
|
14
18
|
"publish": "npm publish --access public"
|
|
@@ -20,13 +24,15 @@
|
|
|
20
24
|
"dayjs": "^1.11.13",
|
|
21
25
|
"ramda": "^0.31.3",
|
|
22
26
|
"react": "*",
|
|
23
|
-
"react-native": "*"
|
|
27
|
+
"react-native": "*",
|
|
28
|
+
"react-native-web": "*",
|
|
29
|
+
"@remixicon/react": "^4.6.0",
|
|
30
|
+
"react-native-remix-icon": "^4.6.3"
|
|
24
31
|
},
|
|
25
32
|
"dependencies": {
|
|
26
|
-
"dayjs": "^1.11.13",
|
|
27
33
|
"prop-types": "^15.8.1",
|
|
28
|
-
"
|
|
29
|
-
"
|
|
34
|
+
"react-native-web": "^0.21.0",
|
|
35
|
+
"tinycolor2": "^1.6.0"
|
|
30
36
|
},
|
|
31
37
|
"devDependencies": {
|
|
32
38
|
"@babel/cli": "^7",
|
package/src/NekoUI.js
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import React from 'react'
|
|
2
|
+
|
|
3
|
+
import { capitalizeFirstLetter, toCamelCase } from '../helpers/string'
|
|
4
|
+
|
|
5
|
+
export function AbsIcon({ name, ...props }) {
|
|
6
|
+
const [loading, setLoading] = React.useState(true)
|
|
7
|
+
const ref = React.useRef()
|
|
8
|
+
const Component = ref?.current || (() => false)
|
|
9
|
+
|
|
10
|
+
React.useEffect(() => {
|
|
11
|
+
try {
|
|
12
|
+
import('@remixicon/react').then((module) => {
|
|
13
|
+
if (!!name && !name.startsWith('Ri')) name = 'Ri' + capitalizeFirstLetter(toCamelCase(name))
|
|
14
|
+
let IconComponent = module[name] || module['RiCircleFill']
|
|
15
|
+
ref.current = IconComponent
|
|
16
|
+
setLoading(false)
|
|
17
|
+
})
|
|
18
|
+
} catch {
|
|
19
|
+
console.error('Error loading AbsIcon component')
|
|
20
|
+
}
|
|
21
|
+
}, [])
|
|
22
|
+
|
|
23
|
+
if (loading) return false
|
|
24
|
+
|
|
25
|
+
return <Component {...props} />
|
|
26
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from 'react'
|
|
2
|
+
|
|
3
|
+
let AbsTouchableOpacity
|
|
4
|
+
|
|
5
|
+
try {
|
|
6
|
+
const { Platform, TouchableOpacity: RNTouchableOpacity } = require('react-native')
|
|
7
|
+
AbsTouchableOpacity = (props) => <RNTouchableOpacity {...props} />
|
|
8
|
+
} catch {
|
|
9
|
+
AbsTouchableOpacity = (props) => <button {...props} />
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export { AbsTouchableOpacity }
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { pipe } from 'ramda'
|
|
2
|
+
|
|
3
|
+
import { AbsTouchableOpacity } from '../abstractions/TouchableOpacity'
|
|
4
|
+
import { Text } from '../text/Text'
|
|
5
|
+
import { useBackgroundModifier } from '../modifiers/background'
|
|
6
|
+
import { useBorderModifier } from '../modifiers/border'
|
|
7
|
+
import { useFlexModifier } from '../modifiers/flex'
|
|
8
|
+
import { useFlexWrapperModifier } from '../modifiers/flexWrapper'
|
|
9
|
+
import { useFullColorModifier } from '../modifiers/fullColor.js'
|
|
10
|
+
import { useMarginModifier } from '../modifiers/margin'
|
|
11
|
+
import { useMergeThemeComponent } from '../theme/ThemeHandler'
|
|
12
|
+
import { usePaddingModifier } from '../modifiers/padding'
|
|
13
|
+
import { usePositionModifier } from '../modifiers/position'
|
|
14
|
+
import { useSizeModifier } from '../modifiers/size'
|
|
15
|
+
|
|
16
|
+
export function Button(rootProps) {
|
|
17
|
+
let { label, style, textProps, size = 'md', ...props } = useMergeThemeComponent('Button', rootProps)
|
|
18
|
+
const defaultProps = {
|
|
19
|
+
paddingH: size,
|
|
20
|
+
paddingV: 2,
|
|
21
|
+
height: size,
|
|
22
|
+
br: size,
|
|
23
|
+
borderWidth: 1,
|
|
24
|
+
color: 'primary',
|
|
25
|
+
center: true,
|
|
26
|
+
row: true,
|
|
27
|
+
}
|
|
28
|
+
const [fontColor, formattedProps] = useFullColorModifier({ ...defaultProps, ...props, style })
|
|
29
|
+
|
|
30
|
+
props = pipe(
|
|
31
|
+
useSizeModifier, //
|
|
32
|
+
usePositionModifier,
|
|
33
|
+
usePaddingModifier,
|
|
34
|
+
useMarginModifier,
|
|
35
|
+
useFlexModifier,
|
|
36
|
+
useFlexWrapperModifier,
|
|
37
|
+
useBackgroundModifier,
|
|
38
|
+
useBorderModifier
|
|
39
|
+
)(formattedProps)
|
|
40
|
+
|
|
41
|
+
return (
|
|
42
|
+
<AbsTouchableOpacity className="neko-button neko-wave-click-effect" {...props}>
|
|
43
|
+
<Text center color={fontColor} strong size={size} {...textProps}>
|
|
44
|
+
{label}
|
|
45
|
+
</Text>
|
|
46
|
+
</AbsTouchableOpacity>
|
|
47
|
+
)
|
|
48
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './Button'
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { adjust, compose, defaultTo, head, join, juxt, map, pipe, replace, split, tail, toLower, toUpper } from 'ramda'
|
|
2
|
+
|
|
3
|
+
export const removeSpecialChars = replace(/[^a-zA-Z ,0-9]/g, '')
|
|
4
|
+
|
|
5
|
+
export const capitalize = compose(join(''), juxt([compose(toUpper, head), tail]), toLower, defaultTo(''))
|
|
6
|
+
|
|
7
|
+
export const capitalizeFirstLetter = compose(join(''), juxt([compose(toUpper, head), tail]), defaultTo(''))
|
|
8
|
+
|
|
9
|
+
export const capitalizeSentence = compose(join(' '), map(capitalize), split('. '), defaultTo(''))
|
|
10
|
+
|
|
11
|
+
export const capitalizeAll = compose(join(' '), map(capitalize), split(' '), defaultTo(''))
|
|
12
|
+
|
|
13
|
+
export const isLower = (str) => (str || '').toLowerCase() === str
|
|
14
|
+
|
|
15
|
+
export const capitalizeIfLower = (str) => (isLower(str) ? capitalize(str) : str)
|
|
16
|
+
|
|
17
|
+
export const capitalizeAllIfLower = (str) => (isLower(str) ? capitalizeAll(str) : str)
|
|
18
|
+
|
|
19
|
+
export const capitalizeSentenceIfLower = (str) => (isLower(str) ? capitalizeSentence(str) : str)
|
|
20
|
+
|
|
21
|
+
export const getInitials = (str) => {
|
|
22
|
+
if (!str) return '--'
|
|
23
|
+
|
|
24
|
+
if (str.includes(' ')) {
|
|
25
|
+
str = str.split(' ').map(head).join('')
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
return str.substring(0, 2)
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export const splitWords = split(new RegExp(/[/\-_ ]/gi))
|
|
32
|
+
|
|
33
|
+
export const toKebabCase = (str) => {
|
|
34
|
+
return str
|
|
35
|
+
.split('')
|
|
36
|
+
.map((letter, index) => {
|
|
37
|
+
if (letter === '_') return '-'
|
|
38
|
+
if (letter?.toUpperCase() === letter) return `${index !== 0 ? '-' : ''}${letter?.toLowerCase()}`
|
|
39
|
+
return letter
|
|
40
|
+
})
|
|
41
|
+
.join('')
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export const toSnakeCase = pipe(toKebabCase, replace(/-/g, '_'))
|
|
45
|
+
|
|
46
|
+
export const toCamelCase = pipe(splitWords, map(capitalize), adjust(0, toLower), join(''))
|
|
47
|
+
|
|
48
|
+
export const truncateString = (str, size) => {
|
|
49
|
+
if (!size) return str
|
|
50
|
+
if (!!str && str.length > size) return str.substring(0, size) + '...'
|
|
51
|
+
return str
|
|
52
|
+
}
|
|
53
|
+
export const truncate = truncateString
|
|
54
|
+
|
|
55
|
+
export const slugify = (text) => {
|
|
56
|
+
return toSnakeCase(text)
|
|
57
|
+
}
|