@neko-os/ui 0.0.13 → 0.1.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.
- package/dist/abstractions/KeyboardAvoidingView.js +1 -0
- package/dist/abstractions/KeyboardAvoidingView.native.js +1 -0
- package/dist/components/actions/ActionsDrawer.js +1 -0
- package/dist/components/actions/Button.js +1 -1
- package/dist/components/actions/FloatingMenu.js +1 -0
- package/dist/components/actions/index.js +1 -1
- package/dist/components/animations/AnimatedTopBar.js +1 -0
- package/dist/components/animations/AnimatedTopBar.native.js +1 -0
- package/dist/components/animations/AnimatedTopBar.web.js +1 -0
- package/dist/components/animations/ParallaxHeader.js +1 -0
- package/dist/components/animations/ParallaxHeader.native.js +1 -0
- package/dist/components/animations/ParallaxHeader.web.js +1 -0
- package/dist/components/animations/ReanimatedScrollHandler.js +1 -0
- package/dist/components/animations/ReanimatedScrollHandler.native.js +1 -0
- package/dist/components/animations/ReanimatedScrollHandler.web.js +1 -0
- package/dist/components/animations/index.js +1 -1
- package/dist/components/form/FormItem.js +1 -1
- package/dist/components/form/FormList.js +1 -1
- package/dist/components/form/SubmitButton.js +1 -1
- package/dist/components/form/index.js +1 -1
- package/dist/components/form/useNewForm.js +1 -1
- package/dist/components/form/validation/defaultMessages.js +1 -0
- package/dist/components/form/validation/index.js +1 -0
- package/dist/components/form/validation/normalizeRules.js +1 -0
- package/dist/components/form/validation/shouldValidateOn.js +1 -0
- package/dist/components/form/validation/validateRules.js +1 -0
- package/dist/components/form/validation/validators.js +1 -0
- package/dist/components/index.js +1 -1
- package/dist/components/inputs/InputWrapper.js +1 -1
- package/dist/components/inputs/NumberInput.js +1 -1
- package/dist/components/inputs/Picker.js +1 -1
- package/dist/components/inputs/Select.js +1 -1
- package/dist/components/presentation/Avatar.js +1 -1
- package/dist/components/presentation/AvatarLabel.js +1 -1
- package/dist/components/presentation/LabelValue.js +1 -1
- package/dist/components/presentation/Result.js +1 -1
- package/dist/components/presentation/Tooltip.js +1 -1
- package/dist/components/sections/Section.js +1 -0
- package/dist/components/sections/SectionItem.js +1 -0
- package/dist/components/sections/SectionItemLink.js +1 -0
- package/dist/components/sections/index.js +1 -0
- package/dist/components/state/StatePresenter.js +1 -0
- package/dist/components/state/index.js +1 -1
- package/dist/components/structure/BlurView.js +1 -1
- package/dist/components/structure/KeyboardAvoidingView.js +1 -0
- package/dist/components/structure/TopBar.js +1 -0
- package/dist/components/structure/bottomDrawer/index.js +1 -1
- package/dist/components/structure/bottomDrawer/index.native.js +1 -1
- package/dist/components/structure/bottomDrawer/index.web.js +1 -1
- package/dist/components/structure/bottomDrawer/native/BottomDrawer.js +1 -1
- package/dist/components/structure/bottomDrawer/native/DrawerScrollView.js +1 -1
- package/dist/components/structure/bottomDrawer/native/createDrawerScrollComponent.js +1 -0
- package/dist/components/structure/index.js +1 -1
- package/dist/components/text/DateText.js +1 -0
- package/dist/components/text/index.js +1 -1
- package/dist/components/theme/ThemePicker.js +1 -1
- package/dist/helpers/index.js +1 -1
- package/dist/helpers/storage.js +1 -1
- package/dist/responsive/responsiveHooks.js +1 -1
- package/dist/theme/ThemeHandler.js +1 -1
- package/dist/theme/default/base.js +1 -1
- package/dist/theme/default/blackTheme.js +1 -1
- package/dist/theme/default/cyberpunkTheme.js +1 -1
- package/dist/theme/default/darkTheme.js +1 -1
- package/dist/theme/default/hackerTheme.js +1 -1
- package/dist/theme/default/lightTheme.js +1 -1
- package/dist/theme/default/msdosTheme.js +1 -1
- package/dist/theme/default/paperTheme.js +1 -1
- package/package.json +1 -1
- package/src/abstractions/KeyboardAvoidingView.js +3 -0
- package/src/abstractions/KeyboardAvoidingView.native.js +3 -0
- package/src/components/actions/ActionsDrawer.js +68 -0
- package/src/components/actions/Button.js +2 -1
- package/src/components/actions/FloatingMenu.js +39 -0
- package/src/components/actions/index.js +2 -0
- package/src/components/animations/AnimatedTopBar.js +10 -0
- package/src/components/animations/AnimatedTopBar.native.js +34 -0
- package/src/components/animations/AnimatedTopBar.web.js +1 -0
- package/src/components/animations/ParallaxHeader.js +9 -0
- package/src/components/animations/ParallaxHeader.native.js +32 -0
- package/src/components/animations/ParallaxHeader.web.js +32 -0
- package/src/components/animations/ReanimatedScrollHandler.js +8 -0
- package/src/components/animations/ReanimatedScrollHandler.native.js +24 -0
- package/src/components/animations/ReanimatedScrollHandler.web.js +1 -0
- package/src/components/animations/index.js +3 -0
- package/src/components/form/FormItem.js +42 -5
- package/src/components/form/FormList.js +23 -4
- package/src/components/form/SubmitButton.js +4 -2
- package/src/components/form/index.js +1 -0
- package/src/components/form/useNewForm.js +108 -15
- package/src/components/form/validation/defaultMessages.js +20 -0
- package/src/components/form/validation/index.js +5 -0
- package/src/components/form/validation/normalizeRules.js +22 -0
- package/src/components/form/validation/shouldValidateOn.js +21 -0
- package/src/components/form/validation/validateRules.js +83 -0
- package/src/components/form/validation/validators.js +82 -0
- package/src/components/index.js +1 -0
- package/src/components/inputs/InputWrapper.js +1 -1
- package/src/components/inputs/NumberInput.js +6 -5
- package/src/components/inputs/Picker.js +3 -2
- package/src/components/inputs/Select.js +31 -15
- package/src/components/presentation/Avatar.js +2 -2
- package/src/components/presentation/AvatarLabel.js +2 -0
- package/src/components/presentation/LabelValue.js +7 -5
- package/src/components/presentation/Result.js +2 -2
- package/src/components/presentation/Tooltip.js +1 -1
- package/src/components/sections/Section.js +50 -0
- package/src/components/sections/SectionItem.js +24 -0
- package/src/components/sections/SectionItemLink.js +33 -0
- package/src/components/sections/index.js +3 -0
- package/src/components/state/StatePresenter.js +41 -0
- package/src/components/state/index.js +1 -0
- package/src/components/structure/BlurView.js +1 -0
- package/src/components/structure/KeyboardAvoidingView.js +52 -0
- package/src/components/structure/TopBar.js +45 -0
- package/src/components/structure/bottomDrawer/index.js +2 -0
- package/src/components/structure/bottomDrawer/index.native.js +2 -1
- package/src/components/structure/bottomDrawer/index.web.js +2 -1
- package/src/components/structure/bottomDrawer/native/BottomDrawer.js +14 -20
- package/src/components/structure/bottomDrawer/native/DrawerScrollView.js +4 -82
- package/src/components/structure/bottomDrawer/native/createDrawerScrollComponent.js +131 -0
- package/src/components/structure/index.js +2 -0
- package/src/components/text/DateText.js +11 -0
- package/src/components/text/index.js +1 -0
- package/src/components/theme/ThemePicker.js +1 -2
- package/src/helpers/index.js +1 -0
- package/src/helpers/storage.js +32 -9
- package/src/responsive/responsiveHooks.js +6 -0
- package/src/theme/ThemeHandler.js +6 -3
- package/src/theme/default/base.js +16 -4
- package/src/theme/default/blackTheme.js +1 -0
- package/src/theme/default/cyberpunkTheme.js +10 -0
- package/src/theme/default/darkTheme.js +1 -0
- package/src/theme/default/hackerTheme.js +17 -3
- package/src/theme/default/lightTheme.js +1 -0
- package/src/theme/default/msdosTheme.js +9 -10
- package/src/theme/default/paperTheme.js +10 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{AbsView}from"./View";export var AbsKeyboardAvoidingView=AbsView;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{KeyboardAvoidingView}from"react-native-web";export var AbsKeyboardAvoidingView=KeyboardAvoidingView;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import _objectDestructuringEmpty from"@babel/runtime/helpers/objectDestructuringEmpty";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["items","onChange","title","subtitle","onClose"],_excluded2=["topBarProps","menuProps"];var _jsxFileName="/Users/christianstorch/Apps/nekoapps/libs/neko-ui/src/components/actions/ActionsDrawer.js";import{pipe}from'ramda';import{BottomDrawer,TopBar,View}from"../structure";import{DrawerScrollView}from"../structure/bottomDrawer";import{Menu}from"./menu/Menu";import{Section}from"../sections";import{useDefaultModifier}from"../../modifiers/default";import{useThemeComponentModifier}from"../../modifiers/themeComponent";import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from"react/jsx-runtime";var DEFAULT_PROPS={useSafeArea:false,bg:'mainBG',topBarProps:{useSafeArea:false},menuProps:{vertical:true,linkPaddingH:'md',linkMinHeight:'xl',withDivider:true}};function Content(_ref){var items=_ref.items,title=_ref.title,subtitle=_ref.subtitle,onClose=_ref.onClose,onChange=_ref.onChange,topBarProps=_ref.topBarProps,menuProps=_ref.menuProps;var handleChange=function handleChange(){for(var _len=arguments.length,params=new Array(_len),_key=0;_key<_len;_key++){params[_key]=arguments[_key];}onChange==null?void 0:onChange.apply(void 0,params);onClose();};return _jsxs(_Fragment,{children:[_jsx(TopBar,Object.assign({title:title,subtitle:subtitle},topBarProps)),_jsx(View,{flex:true,children:_jsxs(DrawerScrollView,{children:[!title&&_jsx(View,{paddingT:"md"}),_jsx(Section,{children:_jsx(Menu,Object.assign({items:items,onChange:handleChange},menuProps))}),_jsx(View,{height:100})]})})]});}export function ActionsDrawer(_ref2){var items=_ref2.items,onChange=_ref2.onChange,title=_ref2.title,subtitle=_ref2.subtitle,onClose=_ref2.onClose,rootProps=_objectWithoutProperties(_ref2,_excluded);var _pipe=pipe(useThemeComponentModifier('ActionsDrawer'),useDefaultModifier(DEFAULT_PROPS))([{},rootProps]),_pipe2=_slicedToArray(_pipe,2);_objectDestructuringEmpty(_pipe2[0]);var formattedProps=_pipe2[1];var topBarProps=formattedProps.topBarProps,menuProps=formattedProps.menuProps,props=_objectWithoutProperties(formattedProps,_excluded2);return _jsx(BottomDrawer,Object.assign({onClose:onClose},props,{children:_jsx(Content,{onClose:onClose,topBarProps:topBarProps,menuProps:menuProps,title:title,subtitle:subtitle,onChange:onChange,items:items})}));}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";var _jsxFileName="/Users/christianstorch/Apps/nekoapps/libs/neko-ui/src/components/actions/Button.js";var _excluded=["children"],_excluded2=["label","icon","textProps","iconProps","gap","invert","size"];import{pipe}from'ramda';import{AbsTouchableOpacity}from"../../abstractions/TouchableOpacity";import{IconLabel}from"../presentation/IconLabel";import{useBackgroundModifier}from"../../modifiers/background";import{useBorderModifier}from"../../modifiers/border";import{useColorConverter}from"../../modifiers/colorConverter";import{useCursorModifier}from"../../modifiers/cursor";import{useDefaultModifier}from"../../modifiers/default";import{useDisplayModifier}from"../../modifiers/display";import{useFlexModifier}from"../../modifiers/flex";import{useFlexWrapperModifier}from"../../modifiers/flexWrapper";import{useFullColorModifier}from"../../modifiers/fullColor";import{useHoverConverter}from"../../modifiers/hover";import{useMarginModifier}from"../../modifiers/margin";import{usePaddingModifier}from"../../modifiers/padding";import{usePositionModifier}from"../../modifiers/position";import{useSizeConverter}from"../../modifiers/sizeConverter";import{useSizeModifier}from"../../modifiers/size";import{useStateModifier}from"../../modifiers/state";import{useThemeComponentModifier}from"../../modifiers/themeComponent";import{jsx as _jsx}from"react/jsx-runtime";var DEFAULT_PROPS=function DEFAULT_PROPS(_ref){var _ref2=_slicedToArray(_ref,1),sizeCode=_ref2[0].sizeCode;return{paddingH:sizeCode,paddingV:2,height:sizeCode,br:sizeCode,border:1,center:true,pointer:true,hover:{opacity:0.7}};};export function Button(_ref3){var children=_ref3.children,rootProps=_objectWithoutProperties(_ref3,_excluded);var _pipe=pipe(useColorConverter('primary'),useSizeConverter('elementHeights','md'),useThemeComponentModifier('Button'),useDefaultModifier(DEFAULT_PROPS),useHoverConverter,useCursorModifier,useFullColorModifier,useDisplayModifier,useStateModifier,useSizeModifier,usePositionModifier,usePaddingModifier,useMarginModifier,useFlexModifier,useFlexWrapperModifier,useBackgroundModifier,useBorderModifier)([{},rootProps]),_pipe2=_slicedToArray(_pipe,2),_pipe2$=_pipe2[0],loading=_pipe2$.loading,fontColor=_pipe2$.fontColor,sizeCode=_pipe2$.sizeCode,formattedProps=_pipe2[1];var label=formattedProps.label,icon=formattedProps.icon,textProps=formattedProps.textProps,iconProps=formattedProps.iconProps,gap=formattedProps.gap,invert=formattedProps.invert,size=formattedProps.size,props=_objectWithoutProperties(formattedProps,_excluded2);return _jsx(AbsTouchableOpacity,Object.assign({className:"neko-button neko-wave-click-effect",type:"button"},props,{children:children||_jsx(IconLabel,{center:true,color:fontColor,size:sizeCode,label:label,icon:icon,gap:gap,invert:invert,textProps:Object.assign({strong:true},textProps),iconProps:iconProps,loading:loading})}));}
|
|
1
|
+
import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";var _jsxFileName="/Users/christianstorch/Apps/nekoapps/libs/neko-ui/src/components/actions/Button.js";var _excluded=["children"],_excluded2=["label","icon","textProps","iconProps","gap","invert","size","iconLabelProps"];import{pipe}from'ramda';import{AbsTouchableOpacity}from"../../abstractions/TouchableOpacity";import{IconLabel}from"../presentation/IconLabel";import{useBackgroundModifier}from"../../modifiers/background";import{useBorderModifier}from"../../modifiers/border";import{useColorConverter}from"../../modifiers/colorConverter";import{useCursorModifier}from"../../modifiers/cursor";import{useDefaultModifier}from"../../modifiers/default";import{useDisplayModifier}from"../../modifiers/display";import{useFlexModifier}from"../../modifiers/flex";import{useFlexWrapperModifier}from"../../modifiers/flexWrapper";import{useFullColorModifier}from"../../modifiers/fullColor";import{useHoverConverter}from"../../modifiers/hover";import{useMarginModifier}from"../../modifiers/margin";import{usePaddingModifier}from"../../modifiers/padding";import{usePositionModifier}from"../../modifiers/position";import{useSizeConverter}from"../../modifiers/sizeConverter";import{useSizeModifier}from"../../modifiers/size";import{useStateModifier}from"../../modifiers/state";import{useThemeComponentModifier}from"../../modifiers/themeComponent";import{jsx as _jsx}from"react/jsx-runtime";var DEFAULT_PROPS=function DEFAULT_PROPS(_ref){var _ref2=_slicedToArray(_ref,1),sizeCode=_ref2[0].sizeCode;return{paddingH:sizeCode,paddingV:2,height:sizeCode,br:sizeCode,border:1,center:true,pointer:true,hover:{opacity:0.7}};};export function Button(_ref3){var children=_ref3.children,rootProps=_objectWithoutProperties(_ref3,_excluded);var _pipe=pipe(useColorConverter('primary'),useSizeConverter('elementHeights','md'),useThemeComponentModifier('Button'),useDefaultModifier(DEFAULT_PROPS),useHoverConverter,useCursorModifier,useFullColorModifier,useDisplayModifier,useStateModifier,useSizeModifier,usePositionModifier,usePaddingModifier,useMarginModifier,useFlexModifier,useFlexWrapperModifier,useBackgroundModifier,useBorderModifier)([{},rootProps]),_pipe2=_slicedToArray(_pipe,2),_pipe2$=_pipe2[0],loading=_pipe2$.loading,fontColor=_pipe2$.fontColor,sizeCode=_pipe2$.sizeCode,formattedProps=_pipe2[1];var label=formattedProps.label,icon=formattedProps.icon,textProps=formattedProps.textProps,iconProps=formattedProps.iconProps,gap=formattedProps.gap,invert=formattedProps.invert,size=formattedProps.size,iconLabelProps=formattedProps.iconLabelProps,props=_objectWithoutProperties(formattedProps,_excluded2);return _jsx(AbsTouchableOpacity,Object.assign({className:"neko-button neko-wave-click-effect",type:"button"},props,{children:children||_jsx(IconLabel,Object.assign({center:true,color:fontColor,size:sizeCode,label:label,icon:icon,gap:gap,invert:invert,textProps:Object.assign({strong:true},textProps),iconProps:iconProps,loading:loading},iconLabelProps))}));}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _jsxFileName="/Users/christianstorch/Apps/nekoapps/libs/neko-ui/src/components/actions/FloatingMenu.js";var _excluded=["fixed","onChange","items","activeIndex","size","WrapperView"];import{Icon}from"../presentation";import{Link}from"./Link";import{Text}from"../text";import{View}from"../structure";import{moveScale}from"../../theme/helpers/sizeScale";import{useSafeAreaInsets}from"../../abstractions/helpers/useSafeAreaInsets";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";export function FloatingMenu(_ref){var _this=this;var fixed=_ref.fixed,onChange=_ref.onChange,items=_ref.items,activeIndex=_ref.activeIndex,_ref$size=_ref.size,size=_ref$size===void 0?'md':_ref$size,WrapperView=_ref.WrapperView,props=_objectWithoutProperties(_ref,_excluded);var insets=useSafeAreaInsets();var height=moveScale(size,2);var bg=!WrapperView?'overlayBG':null;WrapperView=WrapperView||View;return _jsx(View,{absolute:!fixed,fixed:fixed,left:"md",right:"md",centerH:true,bottom:Math.max(insets.bottom,16),children:_jsx(WrapperView,Object.assign({height:height,shadow:true,round:true,row:true,paddingH:"sm",bg:bg},props,{children:items.map(function(item,index){var _item$icon;var isActive=index===activeIndex;return _jsxs(Link,{onPress:function onPress(){return onChange(item,index);},center:true,padding:"xs",gap:3,width:height,round:true,children:[_jsx(Icon,{name:isActive?(_item$icon=item.icon)==null?void 0:_item$icon.replace(/line(?=[^line]*$)/,'fill'):item.icon,size:height,color:isActive?'primary':'text3'}),!!item.label&&_jsx(Text,{size:"xxs",center:true,color:isActive?'primary':'text3',strong:true,children:item.label})]},index);})}))});}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export*from"./Button";export*from"./FloatingButton";export*from"./Link";export*from"./Pressable";export*from"./Dropdown";export*from"./Breadcrumb";export*from"./menu/Menu";
|
|
1
|
+
export*from"./Button";export*from"./FloatingButton";export*from"./Link";export*from"./Pressable";export*from"./Dropdown";export*from"./Breadcrumb";export*from"./menu/Menu";export*from"./FloatingMenu";export*from"./ActionsDrawer";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var _jsxFileName="/Users/christianstorch/Apps/nekoapps/libs/neko-ui/src/components/animations/AnimatedTopBar.js";import{AnimatedView}from"./AnimatedView";import{TopBar}from"../structure";import{jsx as _jsx}from"react/jsx-runtime";export function AnimatedTopBar(props){return _jsx(AnimatedView,{style:{position:'absolute',top:0,left:0,right:0,zIndex:90},fade:true,children:_jsx(TopBar,Object.assign({},props))});}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _jsxFileName="/Users/christianstorch/Apps/nekoapps/libs/neko-ui/src/components/animations/AnimatedTopBar.native.js";var _excluded=["showAfter","duration","fade","slide"];import Animated,{useAnimatedStyle,useSharedValue,useAnimatedReaction,withTiming}from'react-native-reanimated';import{TopBar}from"../structure";import{useReanimatedScroll}from"./ReanimatedScrollHandler";import{useSafeAreaInsets}from"../../abstractions/helpers/useSafeAreaInsets";import{jsx as _jsx}from"react/jsx-runtime";export function AnimatedTopBar(_ref){var _ref$showAfter=_ref.showAfter,showAfter=_ref$showAfter===void 0?90:_ref$showAfter,_ref$duration=_ref.duration,duration=_ref$duration===void 0?300:_ref$duration,_ref$fade=_ref.fade,fade=_ref$fade===void 0?true:_ref$fade,slide=_ref.slide,props=_objectWithoutProperties(_ref,_excluded);var _useReanimatedScroll=useReanimatedScroll(),scrollY=_useReanimatedScroll.scrollY;var _useSafeAreaInsets=useSafeAreaInsets(),safeTop=_useSafeAreaInsets.top;var visibility=useSharedValue(0);useAnimatedReaction(function(){return scrollY.value>=showAfter-safeTop;},function(shouldShow,prev){if(shouldShow!==prev){visibility.value=withTiming(shouldShow?1:0,{duration:duration});}});var animatedStyle=useAnimatedStyle(function(){var style={};if(fade)style.opacity=visibility.value;if(slide)style.transform=[{translateY:(1-visibility.value)*(-50-safeTop)}];return style;});return _jsx(Animated.View,{style:[{position:'absolute',top:0,left:0,right:0,zIndex:90},animatedStyle],children:_jsx(TopBar,Object.assign({},props))});}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{AnimatedTopBar}from"./AnimatedTopBar.native";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _jsxFileName="/Users/christianstorch/Apps/nekoapps/libs/neko-ui/src/components/animations/ParallaxHeader.js";var _excluded=["children","height"];import{AnimatedView}from"./AnimatedView";import{jsx as _jsx}from"react/jsx-runtime";export function ParallaxHeader(_ref){var children=_ref.children,_ref$height=_ref.height,height=_ref$height===void 0?200:_ref$height,props=_objectWithoutProperties(_ref,_excluded);return _jsx(AnimatedView,Object.assign({height:height,fade:true},props,{children:children}));}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var _jsxFileName="/Users/christianstorch/Apps/nekoapps/libs/neko-ui/src/components/animations/ParallaxHeader.native.js";import Animated,{useAnimatedStyle,interpolate,Extrapolation}from'react-native-reanimated';import{useReanimatedScroll}from"./ReanimatedScrollHandler";import{jsx as _jsx}from"react/jsx-runtime";var SCALE_FACTOR=2;export function ParallaxHeader(_ref){var children=_ref.children,_ref$height=_ref.height,height=_ref$height===void 0?200:_ref$height,_ref$parallaxSpeed=_ref.parallaxSpeed,parallaxSpeed=_ref$parallaxSpeed===void 0?0.5:_ref$parallaxSpeed,disableResistence=_ref.disableResistence;var _useReanimatedScroll=useReanimatedScroll(),scrollY=_useReanimatedScroll.scrollY;var imageStyle=useAnimatedStyle(function(){var scale=scrollY.value<0?1+Math.abs(scrollY.value)/height*SCALE_FACTOR:1;var translateY=scrollY.value<0?0:interpolate(scrollY.value,[0,height],[0,height*parallaxSpeed],Extrapolation.CLAMP);return{transform:[{translateY:translateY},{scale:scale}]};});var containerStyle=useAnimatedStyle(function(){var calcHeight=height;if(disableResistence)calcHeight=scrollY.value<0?height+Math.abs(scrollY.value):height;return{height:calcHeight,overflow:scrollY.value<0?'visible':'hidden',zIndex:-1};});return _jsx(Animated.View,{style:containerStyle,children:_jsx(Animated.View,{style:imageStyle,children:children})});}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var _jsxFileName="/Users/christianstorch/Apps/nekoapps/libs/neko-ui/src/components/animations/ParallaxHeader.web.js";import Animated,{useAnimatedStyle,interpolate,Extrapolation}from'react-native-reanimated';import{useReanimatedScroll}from"./ReanimatedScrollHandler";import{jsx as _jsx}from"react/jsx-runtime";var SCALE_FACTOR=2;export function ParallaxHeader(_ref){var children=_ref.children,_ref$height=_ref.height,height=_ref$height===void 0?200:_ref$height,_ref$parallaxSpeed=_ref.parallaxSpeed,parallaxSpeed=_ref$parallaxSpeed===void 0?0.5:_ref$parallaxSpeed,disableResistence=_ref.disableResistence;var _useReanimatedScroll=useReanimatedScroll(),scrollY=_useReanimatedScroll.scrollY;var imageStyle=useAnimatedStyle(function(){var scale=scrollY.value<0?1+Math.abs(scrollY.value)/height*SCALE_FACTOR:1;var translateY=scrollY.value<0?0:interpolate(scrollY.value,[0,height],[0,height*parallaxSpeed],Extrapolation.CLAMP);return{transform:[{translateY:translateY},{scale:scale}]};});var containerStyle=useAnimatedStyle(function(){var calcHeight=height;if(disableResistence)calcHeight=scrollY.value<0?height+Math.abs(scrollY.value):height;return{height:calcHeight,overflow:scrollY.value<0?'visible':'hidden',zIndex:-1};});return _jsx(Animated.View,{style:containerStyle,children:_jsx(Animated.View,{style:imageStyle,children:children})});}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export function useReanimatedScroll(){if(!context)console.error('useReanimatedScroll its not supported for neko web');return null;}export function ReanimatedScrollHandler(_ref){var children=_ref.children;return children;}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var _jsxFileName="/Users/christianstorch/Apps/nekoapps/libs/neko-ui/src/components/animations/ReanimatedScrollHandler.native.js";import{createContext,useContext,useMemo}from'react';import{useSharedValue,useAnimatedScrollHandler}from'react-native-reanimated';import{jsx as _jsx}from"react/jsx-runtime";var ReanimatedScrollContext=createContext(null);export function useReanimatedScroll(){var context=useContext(ReanimatedScrollContext);if(!context)throw new Error('useReanimatedScroll must be used within ReanimatedScrollHandler');return context;}export function ReanimatedScrollHandler(_ref){var children=_ref.children;var scrollY=useSharedValue(0);var scrollHandler=useAnimatedScrollHandler({onScroll:function onScroll(event){scrollY.value=event.contentOffset.y;}});var value=useMemo(function(){return{scrollY:scrollY,scrollHandler:scrollHandler};},[]);return _jsx(ReanimatedScrollContext.Provider,{value:value,children:children});}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{ReanimatedScrollHandler,useReanimatedScroll}from"./ReanimatedScrollHandler.native";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export*from"./AnimatedView";export*from"./DraggableSlideView";
|
|
1
|
+
export*from"./AnimatedView";export*from"./DraggableSlideView";export*from"./ReanimatedScrollHandler";export*from"./AnimatedTopBar";export*from"./ParallaxHeader";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import _defineProperty from"@babel/runtime/helpers/defineProperty";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _jsxFileName="/Users/christianstorch/Apps/nekoapps/libs/neko-ui/src/components/form/FormItem.js";var _excluded=["name","label","isAbsolutePath","children","useDefaultValue"];import React from'react';import{FormGroup,useRelativePath}from"./FormGroup";import{Text}from"../text/Text";import{View}from"../structure/View";import{clearProps}from"../../modifiers/_helpers";import{useFormInstance,useFormState}from"./Form";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";export function FormItem(_ref){var name=_ref.name,label=_ref.label,isAbsolutePath=_ref.isAbsolutePath,children=_ref.children,useDefaultValue=_ref.useDefaultValue,props=_objectWithoutProperties(_ref,_excluded);var form=useFormInstance();var formState=useFormState();var listPath=useRelativePath(name,{isAbsolutePath:isAbsolutePath});var _React$useState=React.useState(form.getFieldValue(listPath)),_React$useState2=_slicedToArray(_React$useState,2),value=_React$useState2[0],setValue=_React$useState2[1];var
|
|
1
|
+
import _defineProperty from"@babel/runtime/helpers/defineProperty";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _jsxFileName="/Users/christianstorch/Apps/nekoapps/libs/neko-ui/src/components/form/FormItem.js";var _excluded=["name","label","isAbsolutePath","children","useDefaultValue","rules","validateTrigger"];import React from'react';import{FormGroup,useRelativePath}from"./FormGroup";import{Text}from"../text/Text";import{View}from"../structure/View";import{clearProps}from"../../modifiers/_helpers";import{useFormInstance,useFormState}from"./Form";import{shouldValidateOn}from"./validation";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";export function FormItem(_ref){var _child$props;var name=_ref.name,label=_ref.label,isAbsolutePath=_ref.isAbsolutePath,children=_ref.children,useDefaultValue=_ref.useDefaultValue,rules=_ref.rules,_ref$validateTrigger=_ref.validateTrigger,validateTrigger=_ref$validateTrigger===void 0?'onSubmit':_ref$validateTrigger,props=_objectWithoutProperties(_ref,_excluded);var form=useFormInstance();var formState=useFormState();var listPath=useRelativePath(name,{isAbsolutePath:isAbsolutePath});var listPathStr=listPath.join('$NEKOJOIN$');var _React$useState=React.useState(form.getFieldValue(listPath)),_React$useState2=_slicedToArray(_React$useState,2),value=_React$useState2[0],setValue=_React$useState2[1];var _React$useState3=React.useState(form.getError(listPath)),_React$useState4=_slicedToArray(_React$useState3,2),error=_React$useState4[0],setError=_React$useState4[1];React.useEffect(function(){return form.registerRules(listPath,rules,validateTrigger);},[listPathStr,JSON.stringify(rules),validateTrigger]);React.useEffect(function(){return form.registerListener(listPath,function(val){return setValue(val);});},[listPathStr]);React.useEffect(function(){return form.registerErrorListener(listPath,function(err){return setError(err);});},[listPathStr]);var handleChange=function handleChange(e){var _e$target$value,_e$target;var val=(_e$target$value=e==null?void 0:(_e$target=e.target)==null?void 0:_e$target.value)!=null?_e$target$value:e;form.setFieldValue(listPath,val);if(shouldValidateOn('onChange',rules,validateTrigger)){form.validateField(listPath,'onChange');}};var handleBlur=function handleBlur(e,originalOnBlur){if(originalOnBlur)originalOnBlur(e);if(shouldValidateOn('onBlur',rules,validateTrigger)){form.validateField(listPath,'onBlur');}};var valueKey='value';if(!!useDefaultValue)valueKey='defaultValue';var child=typeof children==='function'?null:React.Children.only(children);var originalOnBlur=child==null?void 0:(_child$props=child.props)==null?void 0:_child$props.onBlur;var childProps=clearProps(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({},valueKey,value===undefined?'':value),"onChange",handleChange),"onBlur",function onBlur(e){return handleBlur(e,originalOnBlur);}),"disabled",(formState==null?void 0:formState.disabled)===true||undefined),"error",!!error||undefined));var content;if(typeof children==='function'){content=children(childProps);}else{content=React.cloneElement(child,Object.assign({},child.props,childProps));}return _jsx(FormGroup,{name:listPath,children:_jsxs(View,Object.assign({},props,{children:[label&&_jsx(Text,{sm:true,marginB:"xxs",children:label}),content,error&&_jsx(Text,{color:"red",children:error})]}))});}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import _toConsumableArray from"@babel/runtime/helpers/toConsumableArray";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";var _jsxFileName="/Users/christianstorch/Apps/nekoapps/libs/neko-ui/src/components/form/FormList.js";import React from'react';import{FormGroup,useRelativePath}from"./FormGroup";import{Text}from"../text/Text";import{useFormInstance}from"./Form";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";var FormListContext=React.createContext(null);var useFormList=function useFormList(){return React.useContext(FormListContext);};export function FormList(_ref){var name=_ref.name,isAbsolutePath=_ref.isAbsolutePath,children=_ref.children;var form=useFormInstance();var listPath=useRelativePath(name,{isAbsolutePath:isAbsolutePath});var listPathStr=listPath.join('$NEKOJOIN$');var
|
|
1
|
+
import _toConsumableArray from"@babel/runtime/helpers/toConsumableArray";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";var _jsxFileName="/Users/christianstorch/Apps/nekoapps/libs/neko-ui/src/components/form/FormList.js";import React from'react';import{FormGroup,useRelativePath}from"./FormGroup";import{Text}from"../text/Text";import{useFormInstance}from"./Form";import{shouldValidateOn}from"./validation";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";var FormListContext=React.createContext(null);var useFormList=function useFormList(){return React.useContext(FormListContext);};export function FormList(_ref){var name=_ref.name,isAbsolutePath=_ref.isAbsolutePath,children=_ref.children,rules=_ref.rules,_ref$validateTrigger=_ref.validateTrigger,validateTrigger=_ref$validateTrigger===void 0?'onSubmit':_ref$validateTrigger;var form=useFormInstance();var listPath=useRelativePath(name,{isAbsolutePath:isAbsolutePath});var listPathStr=listPath.join('$NEKOJOIN$');var _React$useState=React.useState(form.getError(listPath)),_React$useState2=_slicedToArray(_React$useState,2),error=_React$useState2[0],setError=_React$useState2[1];var keyCounter=React.useRef(0);var keysMap=React.useRef(new WeakMap());React.useEffect(function(){return form.registerRules(listPath,rules,validateTrigger);},[listPathStr,JSON.stringify(rules),validateTrigger]);React.useEffect(function(){return form.registerErrorListener(listPath,function(err){return setError(err);});},[listPathStr]);var generateFields=function generateFields(items){if(!Array.isArray(items))return[];return items.map(function(item,index){var key;if(typeof item==='object'&&item!==null){key=keysMap.current.get(item);if(!key){key=`field_${keyCounter.current++}`;keysMap.current.set(item,key);}}else{key=`field_${keyCounter.current++}`;}return{key:key,name:index};});};var _React$useState3=React.useState(function(){var initial=form.getFieldValue(listPath)||[];return generateFields(initial);}),_React$useState4=_slicedToArray(_React$useState3,2),fields=_React$useState4[0],setFields=_React$useState4[1];React.useEffect(function(){return form.registerListener(listPath,function(val){setFields(generateFields(val));});},[listPathStr]);var validateOnChange=function validateOnChange(){if(shouldValidateOn('onChange',rules,validateTrigger)){form.validateField(listPath,'onChange');}};var add=function add(){var defaultValue=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var current=form.getFieldValue(listPath)||[];form.setFieldValue(listPath,[].concat(_toConsumableArray(current),[defaultValue]));validateOnChange();};var addOn=function addOn(index){var defaultValue=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var current=form.getFieldValue(listPath)||[];form.setFieldValue(listPath,[].concat(_toConsumableArray(current.slice(0,index)),[defaultValue],_toConsumableArray(current.slice(index))));validateOnChange();};var replace=function replace(index,value){var current=form.getFieldValue(listPath)||[];form.setFieldValue(listPath,current.map(function(item,i){return i===index?value:item;}));};var duplicate=function duplicate(index){var current=form.getFieldValue(listPath)||[];var value=current[index];if(!value)return;var clonedValue=typeof value==='object'?Object.assign({},value):value;addOn(index+1,clonedValue);};var move=function move(fromIndex,toIndex){var current=form.getFieldValue(listPath)||[];if(fromIndex<0||fromIndex>=current.length)return;if(toIndex<0||toIndex>=current.length)return;var item=current[fromIndex];var updated=_toConsumableArray(current);updated.splice(fromIndex,1);updated.splice(toIndex,0,item);form.setFieldValue(listPath,updated);};var remove=function remove(index){var current=form.getFieldValue(listPath)||[];form.setFieldValue(listPath,current.filter(function(_,i){return i!==index;}));validateOnChange();};var actions=React.useMemo(function(){return{add:add,addOn:addOn,replace:replace,remove:remove,move:move,duplicate:duplicate};},[listPathStr,rules,validateTrigger]);var content;if(typeof children==='function'){content=children(fields,actions);}else{var child=React.Children.only(children);content=React.cloneElement(child,Object.assign({},child.props,{fields:fields},actions));}return _jsx(FormGroup,{name:listPath,children:_jsxs(FormListContext.Provider,{value:actions,children:[content,error&&_jsx(Text,{color:"red",children:error})]})});}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _jsxFileName="/Users/christianstorch/Apps/nekoapps/libs/neko-ui/src/components/form/SubmitButton.js";var _excluded=["form","disabled"];import{Button}from"../actions/Button";import{useFormInstance,useFormState}from"./Form";import{jsx as _jsx}from"react/jsx-runtime";export function SubmitButton(_ref){var form=_ref.form,disabled=_ref.disabled,props=_objectWithoutProperties(_ref,_excluded);var formState=useFormState();var contextForm=useFormInstance();form=form||contextForm;disabled=(formState==null?void 0:formState.disabled)||disabled;var handleSubmit=function handleSubmit(){if(!form){console.error('No form provided to useWatch. Pass it as params or wrap it inside a <Form> component.');return;}form.handleSubmit();};return _jsx(
|
|
1
|
+
import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _jsxFileName="/Users/christianstorch/Apps/nekoapps/libs/neko-ui/src/components/form/SubmitButton.js";var _excluded=["form","disabled","Wrapper"];import{Button}from"../actions/Button";import{useFormInstance,useFormState}from"./Form";import{jsx as _jsx}from"react/jsx-runtime";export function SubmitButton(_ref){var form=_ref.form,disabled=_ref.disabled,Wrapper=_ref.Wrapper,props=_objectWithoutProperties(_ref,_excluded);var formState=useFormState();var contextForm=useFormInstance();form=form||contextForm;disabled=(formState==null?void 0:formState.disabled)||disabled;Wrapper=Wrapper||Button;var handleSubmit=function handleSubmit(){if(!form){console.error('No form provided to useWatch. Pass it as params or wrap it inside a <Form> component.');return;}form.handleSubmit();};return _jsx(Wrapper,Object.assign({},props,{disabled:disabled,onPress:handleSubmit}));}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export*from"./Form";export*from"./FormItem";export*from"./FormList";export*from"./FormWrapperComponent";export*from"./FormGroup";export*from"./useNewForm";export*from"./useWatch";export*from"./SubmitButton";
|
|
1
|
+
export*from"./Form";export*from"./FormItem";export*from"./FormList";export*from"./FormWrapperComponent";export*from"./FormGroup";export*from"./useNewForm";export*from"./useWatch";export*from"./SubmitButton";export*from"./validation";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{assocPath,path}from'ramda';import React from'react';export function useNewForm(){var _ref=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},_ref$initialValues=_ref.initialValues,initialValues=_ref$initialValues===void 0?{}:_ref$initialValues,validate=_ref.validate,onSubmit=_ref.onSubmit;var valuesRef=React.useRef(Object.assign({},initialValues));var errorsRef=React.useRef({});var listenersRef=React.useRef({});var formApi=React.useMemo(function(){var
|
|
1
|
+
import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import _asyncToGenerator from"@babel/runtime/helpers/asyncToGenerator";import{assocPath,path}from'ramda';import React from'react';import{validateRules,validateAllFields,normalizeRules}from"./validation";export function useNewForm(){var _ref=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},_ref$initialValues=_ref.initialValues,initialValues=_ref$initialValues===void 0?{}:_ref$initialValues,validate=_ref.validate,onSubmit=_ref.onSubmit;var valuesRef=React.useRef(Object.assign({},initialValues));var errorsRef=React.useRef({});var listenersRef=React.useRef({});var errorListenersRef=React.useRef({});var rulesRegistryRef=React.useRef(new Map());var formApi=React.useMemo(function(){var toKey=function toKey(name){return Array.isArray(name)?name.join('.'):name;};var toPath=function toPath(name){return Array.isArray(name)?name:[name];};var notify=function notify(name){var key=toKey(name);if(listenersRef.current[key]){listenersRef.current[key].forEach(function(cb){return cb(path(toPath(name),valuesRef.current));});}};var notifyError=function notifyError(name){var key=toKey(name);if(errorListenersRef.current[key]){errorListenersRef.current[key].forEach(function(cb){return cb(errorsRef.current[key]);});}};var setFieldValue=function setFieldValue(name,value){valuesRef.current=assocPath(toPath(name),value,valuesRef.current);notify(name);};var getFieldValue=function getFieldValue(name){return path(toPath(name),valuesRef.current);};var getError=function getError(name){var key=toKey(name);return errorsRef.current[key];};var setError=function setError(name,error){var key=toKey(name);if(error){errorsRef.current[key]=error;}else{delete errorsRef.current[key];}notifyError(name);};var clearErrors=function clearErrors(){errorsRef.current={};};var registerListener=function registerListener(name,cb){var key=toKey(name);if(!listenersRef.current[key]){listenersRef.current[key]=[];}listenersRef.current[key].push(cb);return function(){listenersRef.current[key]=listenersRef.current[key].filter(function(fn){return fn!==cb;});};};var registerErrorListener=function registerErrorListener(name,cb){var key=toKey(name);if(!errorListenersRef.current[key]){errorListenersRef.current[key]=[];}errorListenersRef.current[key].push(cb);return function(){errorListenersRef.current[key]=errorListenersRef.current[key].filter(function(fn){return fn!==cb;});};};var registerRules=function registerRules(name,rules){var defaultTrigger=arguments.length>2&&arguments[2]!==undefined?arguments[2]:'onSubmit';if(!rules)return;var key=toKey(name);var rulesArray=normalizeRules(rules).map(function(rule){return Object.assign({},rule,{trigger:rule.trigger||defaultTrigger});});rulesRegistryRef.current.set(key,{path:name,rules:rulesArray});return function(){return rulesRegistryRef.current.delete(key);};};var validateField=function(){var _ref2=_asyncToGenerator(function*(name){var trigger=arguments.length>1&&arguments[1]!==undefined?arguments[1]:'onSubmit';var key=toKey(name);var entry=rulesRegistryRef.current.get(key);if(!entry)return null;var value=path(name,valuesRef.current);var error=yield validateRules(value,entry.rules,trigger);if(error){errorsRef.current[key]=error;}else{delete errorsRef.current[key];}notifyError(name);return error;});return function validateField(_x){return _ref2.apply(this,arguments);};}();var validateForm=function(){var _ref3=_asyncToGenerator(function*(){errorsRef.current={};var rulesErrors=yield validateAllFields(valuesRef.current,rulesRegistryRef.current);var legacyErrors=validate?validate(valuesRef.current)||{}:{};Object.entries(rulesErrors).forEach(function(_ref4){var _ref5=_slicedToArray(_ref4,2),key=_ref5[0],error=_ref5[1];errorsRef.current[key]=error;});Object.entries(legacyErrors).forEach(function(_ref6){var _ref7=_slicedToArray(_ref6,2),key=_ref7[0],error=_ref7[1];if(!errorsRef.current[key]){errorsRef.current[key]=error;}});rulesRegistryRef.current.forEach(function(_,key){notifyError(key);});return Object.keys(errorsRef.current).length===0;});return function validateForm(){return _ref3.apply(this,arguments);};}();var handleSubmit=function(){var _ref8=_asyncToGenerator(function*(){var isValid=yield validateForm();if(!isValid)return;console.log('SUBMIT');onSubmit(valuesRef.current);});return function handleSubmit(){return _ref8.apply(this,arguments);};}();return{setFieldValue:setFieldValue,getFieldValue:getFieldValue,getError:getError,setError:setError,clearErrors:clearErrors,registerListener:registerListener,registerErrorListener:registerErrorListener,registerRules:registerRules,validateField:validateField,handleSubmit:handleSubmit,valuesRef:valuesRef};},[validate,onSubmit]);return formApi;}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export var defaultMessages={required:'This field is required',type:{email:'Please enter a valid email address',url:'Please enter a valid URL',number:'Please enter a valid number',integer:'Please enter a valid integer'},min:{string:function string(min){return`Must be at least ${min} characters`;},number:function number(min){return`Must be at least ${min}`;},array:function array(min){return`Must have at least ${min} items`;}},max:{string:function string(max){return`Must be at most ${max} characters`;},number:function number(max){return`Must be at most ${max}`;},array:function array(max){return`Must have at most ${max} items`;}},pattern:'Invalid format'};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{defaultMessages}from"./defaultMessages";export{validators}from"./validators";export{validateRules,validateAllFields}from"./validateRules";export{normalizeRules}from"./normalizeRules";export{shouldValidateOn}from"./shouldValidateOn";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import _defineProperty from"@babel/runtime/helpers/defineProperty";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";export function normalizeRules(rules){if(!rules)return[];if(Array.isArray(rules))return rules;if(typeof rules==='object'){return Object.entries(rules).map(function(_ref){var _ref2=_slicedToArray(_ref,2),key=_ref2[0],value=_ref2[1];return _defineProperty({},key,value);});}return[];}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{normalizeRules}from"./normalizeRules";export function shouldValidateOn(trigger,rules){var validateTrigger=arguments.length>2&&arguments[2]!==undefined?arguments[2]:'onSubmit';if(!rules)return false;var triggers=Array.isArray(validateTrigger)?validateTrigger:[validateTrigger];if(triggers.includes(trigger))return true;var rulesArray=normalizeRules(rules);return rulesArray.some(function(rule){return rule.trigger===trigger||Array.isArray(rule.trigger)&&rule.trigger.includes(trigger);});}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import _asyncToGenerator from"@babel/runtime/helpers/asyncToGenerator";import{path as getPath}from'ramda';import{validators}from"./validators";export function validateRules(_x,_x2){return _validateRules.apply(this,arguments);}function _validateRules(){_validateRules=_asyncToGenerator(function*(value,rules){var trigger=arguments.length>2&&arguments[2]!==undefined?arguments[2]:'onSubmit';if(!rules||rules.length===0)return null;for(var rule of rules){var ruleTrigger=rule.trigger||'onSubmit';var triggers=Array.isArray(ruleTrigger)?ruleTrigger:[ruleTrigger];if(trigger!=='onSubmit'&&!triggers.includes(trigger)){continue;}var error=null;if(rule.validator){try{yield rule.validator(rule,value);}catch(e){error=e.message||rule.message||'Validation failed';}}else{if(rule.required){error=validators.required(value,rule);}if(!error&&rule.type){error=validators.type(value,rule);}if(!error&&rule.min!==undefined){error=validators.min(value,rule);}if(!error&&rule.max!==undefined){error=validators.max(value,rule);}if(!error&&rule.pattern){error=validators.pattern(value,rule);}}if(error){return error;}}return null;});return _validateRules.apply(this,arguments);}export function validateAllFields(_x3,_x4){return _validateAllFields.apply(this,arguments);}function _validateAllFields(){_validateAllFields=_asyncToGenerator(function*(values,rulesRegistry){var errors={};var validationPromises=[];rulesRegistry.forEach(function(_ref,pathKey){var path=_ref.path,rules=_ref.rules;var value=getPath(path,values);validationPromises.push(validateRules(value,rules,'onSubmit').then(function(error){if(error){errors[pathKey]=error;}}));});yield Promise.all(validationPromises);return errors;});return _validateAllFields.apply(this,arguments);}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{defaultMessages}from"./defaultMessages";var isEmpty=function isEmpty(value){if(value===undefined||value===null)return true;if(typeof value==='string'&&value.trim()==='')return true;if(Array.isArray(value)&&value.length===0)return true;return false;};export var validators={required:function required(value,rule){if(isEmpty(value)){return rule.message||defaultMessages.required;}return null;},type:function type(value,rule){if(isEmpty(value))return null;var typeValidators={email:function email(v){return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(v);},url:function url(v){try{new URL(v);return true;}catch(_unused){return false;}},number:function number(v){return!isNaN(Number(v));},integer:function integer(v){return Number.isInteger(Number(v))&&!isNaN(Number(v));}};var validator=typeValidators[rule.type];if(validator&&!validator(value)){return rule.message||defaultMessages.type[rule.type]||`Invalid ${rule.type}`;}return null;},min:function min(value,rule){if(isEmpty(value))return null;if(typeof value==='string'&&value.length<rule.min){return rule.message||defaultMessages.min.string(rule.min);}if(typeof value==='number'&&value<rule.min){return rule.message||defaultMessages.min.number(rule.min);}if(Array.isArray(value)&&value.length<rule.min){return rule.message||defaultMessages.min.array(rule.min);}return null;},max:function max(value,rule){if(isEmpty(value))return null;if(typeof value==='string'&&value.length>rule.max){return rule.message||defaultMessages.max.string(rule.max);}if(typeof value==='number'&&value>rule.max){return rule.message||defaultMessages.max.number(rule.max);}if(Array.isArray(value)&&value.length>rule.max){return rule.message||defaultMessages.max.array(rule.max);}return null;},pattern:function pattern(value,rule){if(isEmpty(value))return null;var regex=rule.pattern instanceof RegExp?rule.pattern:new RegExp(rule.pattern);if(!regex.test(String(value))){return rule.message||defaultMessages.pattern;}return null;}};
|
package/dist/components/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export*from"./actions";export*from"./animations";export*from"./form";export*from"./presentation";export*from"./structure";export*from"./text";export*from"./helpers";export*from"./inputs";export*from"./state";export*from"./layout";export*from"./table";export*from"./feedback";export*from"./calendar";export*from"./list";export*from"./tabs";export*from"./theme";
|
|
1
|
+
export*from"./actions";export*from"./animations";export*from"./form";export*from"./presentation";export*from"./structure";export*from"./text";export*from"./helpers";export*from"./inputs";export*from"./state";export*from"./layout";export*from"./table";export*from"./feedback";export*from"./calendar";export*from"./list";export*from"./tabs";export*from"./theme";export*from"./sections";
|
|
@@ -1 +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/components/inputs/InputWrapper.js";var _excluded=["prefix","suffix","prefixIcon","prefixIconColor","suffixIcon","suffixIconColor","loading","error","children","ref"];import{pipe,is}from'ramda';import React from'react';import{Icon}from"../presentation/Icon";import{Loading}from"../state/Loading";import{Text}from"../text/Text";import{View}from"../structure/View";import{useDefaultModifier}from"../../modifiers/default";import{useSizeConverter}from"../../modifiers/sizeConverter";import{useThemeComponentModifier}from"../../modifiers/themeComponent";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";var DEFAULT_PROPS={paddingH:'sm',bg:'overlayBG',border:true,br:'md',row:true,gap:'sm'};export function InputWrapper(_ref){var prefix=_ref.prefix,suffix=_ref.suffix,prefixIcon=_ref.prefixIcon,prefixIconColor=_ref.prefixIconColor,suffixIcon=_ref.suffixIcon,suffixIconColor=_ref.suffixIconColor,loading=_ref.loading,error=_ref.error,children=_ref.children,ref=_ref.ref,rootProps=_objectWithoutProperties(_ref,_excluded);var _React$useState=React.useState(false),_React$useState2=_slicedToArray(_React$useState,2),hover=_React$useState2[0],setHover=_React$useState2[1];var fallbackInputRef=React.useRef();var inputRef=ref||fallbackInputRef;var _pipe=pipe(useSizeConverter('elementHeights','md'),useThemeComponentModifier('InputWrapper'),useDefaultModifier(DEFAULT_PROPS))([{},rootProps]),_pipe2=_slicedToArray(_pipe,2),_pipe2$=_pipe2[0],size=_pipe2$.size,sizeCode=_pipe2$.sizeCode,props=_pipe2[1];var handlePress=function handlePress(){var _inputRef$current;inputRef==null?void 0:(_inputRef$current=inputRef.current)==null?void 0:_inputRef$current.focus==null?void 0:_inputRef$current.focus();};if(!!prefix&&is(String,prefix))prefix=_jsx(Text,{children:prefix});if(!!suffix&&is(String,suffix))suffix=_jsx(Text,{children:suffix});if(!prefix&&!!prefixIcon)prefix=_jsx(Icon,{name:prefixIcon,size:sizeCode,color:prefixIconColor});if(!suffix&&!!suffixIcon)suffix=_jsx(Icon,{name:suffixIcon,size:sizeCode,color:suffixIconColor});if(!prefix&&!!error)suffix=_jsx(Icon,{name:"
|
|
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/components/inputs/InputWrapper.js";var _excluded=["prefix","suffix","prefixIcon","prefixIconColor","suffixIcon","suffixIconColor","loading","error","children","ref"];import{pipe,is}from'ramda';import React from'react';import{Icon}from"../presentation/Icon";import{Loading}from"../state/Loading";import{Text}from"../text/Text";import{View}from"../structure/View";import{useDefaultModifier}from"../../modifiers/default";import{useSizeConverter}from"../../modifiers/sizeConverter";import{useThemeComponentModifier}from"../../modifiers/themeComponent";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";var DEFAULT_PROPS={paddingH:'sm',bg:'overlayBG',border:true,br:'md',row:true,gap:'sm'};export function InputWrapper(_ref){var prefix=_ref.prefix,suffix=_ref.suffix,prefixIcon=_ref.prefixIcon,prefixIconColor=_ref.prefixIconColor,suffixIcon=_ref.suffixIcon,suffixIconColor=_ref.suffixIconColor,loading=_ref.loading,error=_ref.error,children=_ref.children,ref=_ref.ref,rootProps=_objectWithoutProperties(_ref,_excluded);var _React$useState=React.useState(false),_React$useState2=_slicedToArray(_React$useState,2),hover=_React$useState2[0],setHover=_React$useState2[1];var fallbackInputRef=React.useRef();var inputRef=ref||fallbackInputRef;var _pipe=pipe(useSizeConverter('elementHeights','md'),useThemeComponentModifier('InputWrapper'),useDefaultModifier(DEFAULT_PROPS))([{},rootProps]),_pipe2=_slicedToArray(_pipe,2),_pipe2$=_pipe2[0],size=_pipe2$.size,sizeCode=_pipe2$.sizeCode,props=_pipe2[1];var handlePress=function handlePress(){var _inputRef$current;inputRef==null?void 0:(_inputRef$current=inputRef.current)==null?void 0:_inputRef$current.focus==null?void 0:_inputRef$current.focus();};if(!!prefix&&is(String,prefix))prefix=_jsx(Text,{children:prefix});if(!!suffix&&is(String,suffix))suffix=_jsx(Text,{children:suffix});if(!prefix&&!!prefixIcon)prefix=_jsx(Icon,{name:prefixIcon,size:sizeCode,color:prefixIconColor});if(!suffix&&!!suffixIcon)suffix=_jsx(Icon,{name:suffixIcon,size:sizeCode,color:suffixIconColor});if(!prefix&&!!error)suffix=_jsx(Icon,{name:"alert-fill",size:sizeCode,red:true});if(!!loading)suffix=_jsx(Loading,{size:sizeCode});var borderColor=!!hover?'primary_op40':'divider';if(!!error)borderColor='red_op40';var child=React.Children.only(children);var childWithProps=React.cloneElement(child,Object.assign({},child.props,{ref:inputRef}));return _jsxs(View,Object.assign({className:"neko-input-wrapper",height:size,onPress:handlePress,borderColor:borderColor,onMouseEnter:function onMouseEnter(){return setHover(true);},onMouseLeave:function onMouseLeave(){return setHover(false);}},props,{children:[!!prefix&&_jsx(View,{paddingV:5,fullHeight:true,center:true,children:prefix}),_jsx(View,{flex:true,fullH:true,children:childWithProps}),!!suffix&&_jsx(View,{paddingV:5,fullHeight:true,center:true,children:suffix})]}));}
|
|
@@ -1 +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/components/inputs/NumberInput.js";var _excluded=["onChange","value","useInt","precision","min","max","error"];import{endsWith,is}from'ramda';import React from'react';import{TextInput}from"./TextInput";import{jsx as _jsx}from"react/jsx-runtime";function isValidNumber(stringValue){var _stringValue$toString;var options=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var _options$min=options.min,min=_options$min===void 0?Number.MIN_SAFE_INTEGER:_options$min,_options$max=options.max,max=_options$max===void 0?Number.MAX_SAFE_INTEGER:_options$max,useInt=options.useInt,precision=options.precision;if(stringValue===null||stringValue===undefined||stringValue==='')return true;if(isNaN(stringValue))return false;var numericValue=parseFloat(stringValue);if(numericValue<min)return false;if(numericValue>max)return false;var decimalPart=stringValue==null?void 0:(_stringValue$toString=stringValue.toString())==null?void 0:_stringValue$toString.split==null?void 0:_stringValue$toString.split('.')[1];if(decimalPart&&is(Number,precision)){if(decimalPart.length>precision)return false;}return true;}export function formatNumericValue(newValue,prevValue){var options=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{};var _options$min2=options.min,min=_options$min2===void 0?Number.MIN_SAFE_INTEGER:_options$min2,_options$max2=options.max,max=_options$max2===void 0?Number.MAX_SAFE_INTEGER:_options$max2,useInt=options.useInt,precision=options.precision;var numericValue=newValue;if(is(Number,newValue))newValue=newValue.toString();if(newValue===null||newValue===undefined||newValue==='')return null;if(is(String,newValue))newValue=newValue.replace(',','.');if(newValue==='-')return newValue;if(useInt){if(newValue.includes('.'))return prevValue;numericValue=parseInt(newValue,10);}else{var dotsCount=newValue.split('.').length;if(dotsCount>2)return prevValue;if(endsWith('.',newValue))return newValue;numericValue=parseFloat(newValue);}if(isNaN(numericValue))return prevValue;if(numericValue<min)return min;if(numericValue>max)return max;var decimalPart=newValue.split('.')[1];if(decimalPart&&!!precision){if(decimalPart.length>precision)return prevValue;return newValue;}return numericValue;}export function NumberInput(_ref){var _onChange=_ref.onChange,value=_ref.value,useInt=_ref.useInt,precision=_ref.precision,min=_ref.min,max=_ref.max,error=_ref.error,props=_objectWithoutProperties(_ref,_excluded);var _React$useState=React.useState(false),_React$useState2=_slicedToArray(_React$useState,2),hasError=_React$useState2[0],setHasError=_React$useState2[1];var _React$useState3=React.useState(value),_React$useState4=_slicedToArray(_React$useState3,2),inputValue=_React$useState4[0],setInputValue=_React$useState4[1];var _React$useState5=React.useState(value),_React$useState6=_slicedToArray(_React$useState5,2),localValue=_React$useState6[0],setLocalValue=_React$useState6[1];React.useEffect(function(){return setInputValue(value);},[value]);if(useInt)precision=0;if(!useInt&&precision===0)useInt=true;var opts={useInt:useInt,precision:precision,min:min,max:max};return _jsx(TextInput,Object.assign({onChange:function onChange(newValue){var numericValue=formatNumericValue(newValue,localValue,opts);setInputValue((newValue==null?void 0:newValue.toString())||'');setLocalValue(numericValue);_onChange==null?void 0:_onChange(numericValue);setHasError(!isValidNumber(newValue,opts));},onBlur:function onBlur(){setInputValue(localValue);setHasError(!isValidNumber(localValue,opts));},value:inputValue,keyboardType:useInt?'number-pad':'decimal-pad',error:error||hasError}
|
|
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/components/inputs/NumberInput.js";var _excluded=["onChange","onBlur","value","useInt","precision","min","max","error"];import{endsWith,is}from'ramda';import React from'react';import{TextInput}from"./TextInput";import{jsx as _jsx}from"react/jsx-runtime";function isValidNumber(stringValue){var _stringValue$toString;var options=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var _options$min=options.min,min=_options$min===void 0?Number.MIN_SAFE_INTEGER:_options$min,_options$max=options.max,max=_options$max===void 0?Number.MAX_SAFE_INTEGER:_options$max,useInt=options.useInt,precision=options.precision;if(stringValue===null||stringValue===undefined||stringValue==='')return true;if(isNaN(stringValue))return false;var numericValue=parseFloat(stringValue);if(numericValue<min)return false;if(numericValue>max)return false;var decimalPart=stringValue==null?void 0:(_stringValue$toString=stringValue.toString())==null?void 0:_stringValue$toString.split==null?void 0:_stringValue$toString.split('.')[1];if(decimalPart&&is(Number,precision)){if(decimalPart.length>precision)return false;}return true;}export function formatNumericValue(newValue,prevValue){var options=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{};var _options$min2=options.min,min=_options$min2===void 0?Number.MIN_SAFE_INTEGER:_options$min2,_options$max2=options.max,max=_options$max2===void 0?Number.MAX_SAFE_INTEGER:_options$max2,useInt=options.useInt,precision=options.precision;var numericValue=newValue;if(is(Number,newValue))newValue=newValue.toString();if(newValue===null||newValue===undefined||newValue==='')return null;if(is(String,newValue))newValue=newValue.replace(',','.');if(newValue==='-')return newValue;if(useInt){if(newValue.includes('.'))return prevValue;numericValue=parseInt(newValue,10);}else{var dotsCount=newValue.split('.').length;if(dotsCount>2)return prevValue;if(endsWith('.',newValue))return newValue;numericValue=parseFloat(newValue);}if(isNaN(numericValue))return prevValue;if(numericValue<min)return min;if(numericValue>max)return max;var decimalPart=newValue.split('.')[1];if(decimalPart&&!!precision){if(decimalPart.length>precision)return prevValue;return newValue;}return numericValue;}export function NumberInput(_ref){var _onChange=_ref.onChange,_onBlur=_ref.onBlur,value=_ref.value,useInt=_ref.useInt,precision=_ref.precision,min=_ref.min,max=_ref.max,error=_ref.error,props=_objectWithoutProperties(_ref,_excluded);var _React$useState=React.useState(false),_React$useState2=_slicedToArray(_React$useState,2),hasError=_React$useState2[0],setHasError=_React$useState2[1];var _React$useState3=React.useState(value),_React$useState4=_slicedToArray(_React$useState3,2),inputValue=_React$useState4[0],setInputValue=_React$useState4[1];var _React$useState5=React.useState(value),_React$useState6=_slicedToArray(_React$useState5,2),localValue=_React$useState6[0],setLocalValue=_React$useState6[1];React.useEffect(function(){return setInputValue((value==null?void 0:value.toString())||'');},[value]);if(useInt)precision=0;if(!useInt&&precision===0)useInt=true;var opts={useInt:useInt,precision:precision,min:min,max:max};return _jsx(TextInput,Object.assign({},props,{onChange:function onChange(newValue){var numericValue=formatNumericValue(newValue,localValue,opts);setInputValue((newValue==null?void 0:newValue.toString())||'');setLocalValue(numericValue);_onChange==null?void 0:_onChange(numericValue);setHasError(!isValidNumber(newValue,opts));},onBlur:function onBlur(e){setInputValue((localValue==null?void 0:localValue.toString())||'');setHasError(!isValidNumber(localValue,opts));_onBlur==null?void 0:_onBlur(e);},value:inputValue,keyboardType:useInt?'number-pad':'decimal-pad',error:error||hasError}));}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";import _toConsumableArray from"@babel/runtime/helpers/toConsumableArray";var _jsxFileName="/Users/christianstorch/Apps/nekoapps/libs/neko-ui/src/components/inputs/Picker.js";var _excluded=["option","onChange","value","renderOption","useRawOption","multiple","labelKey","valueKey"],_excluded2=["renderItem","options"],_excluded3=["renderItem","options","valueKey"],_excluded4=["value","initialValue","onChange","disabled","options","renderOption","colProps","useRawOption","useFlatList","multiple","valueKey","labelKey","Wrapper"];import{is}from'ramda';import React from'react';import{Col}from"../structure/Col";import{
|
|
1
|
+
import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";import _toConsumableArray from"@babel/runtime/helpers/toConsumableArray";var _jsxFileName="/Users/christianstorch/Apps/nekoapps/libs/neko-ui/src/components/inputs/Picker.js";var _excluded=["option","onChange","value","renderOption","useRawOption","multiple","labelKey","valueKey"],_excluded2=["renderItem","options"],_excluded3=["renderItem","options","valueKey"],_excluded4=["value","initialValue","onChange","disabled","options","renderOption","colProps","useRawOption","useFlatList","multiple","valueKey","labelKey","Wrapper"];import{is}from'ramda';import React from'react';import{Col}from"../structure/Col";import{DrawerFlatList}from"../structure/bottomDrawer";import{LoadingView}from"../state/LoadingView";import{Row}from"../structure/Row";import{View}from"../structure";import{normalizeString}from"../../helpers/string";import{useOptions}from"../../helpers/options";import{jsx as _jsx}from"react/jsx-runtime";export function getOption(options,value){var config=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{};if(!(options!=null&&options.length))return value;var option=options.find(function(option){return compareOptionsValues(option,value,config);});return option||value;}export function getOptionLabel(options,value){var config=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{};if(!(options!=null&&options.length))return'';var labelKey=config.labelKey;var selectedOption=getOption(options,value,config);var label=(selectedOption==null?void 0:selectedOption[labelKey])||value;if(!is(String,label))return'';return label;}export function searchOptions(options,search){var config=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{};var labelKey=config.labelKey;if(!(options!=null&&options.length))return options;if(!search)return options;return options.filter(function(item){var _normalizeString;return(_normalizeString=normalizeString(item==null?void 0:item[labelKey]))==null?void 0:_normalizeString.includes(normalizeString(search));});}function isSelected(value,option){var config=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{};return!!config.multiple?value==null?void 0:value.some==null?void 0:value.some(function(item){return compareOptionsValues(item,option,config);}):compareOptionsValues(value,option,config);}function compareOptionsValues(optionA,optionB){var config=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{};var valueKey=config.valueKey||'value';var valueA=(optionA==null?void 0:optionA[valueKey])||optionA;var valueB=(optionB==null?void 0:optionB[valueKey])||optionB;if(!valueA||!valueB)return false;return valueA===valueB;}function formatSingleChangeValue(option,value,_ref){var useRawOption=_ref.useRawOption,selected=_ref.selected,valueKey=_ref.valueKey;var selectedOption=option;var selectedValue=option[valueKey];if(!!useRawOption)selectedValue=option;if(selected){selectedOption=null;selectedValue=null;}return selectedValue;}function formatMultipleChangeValue(option,value,_ref2){var useRawOption=_ref2.useRawOption,selected=_ref2.selected,multiple=_ref2.multiple,valueKey=_ref2.valueKey;var selectedOption=option;var selectedValue=option[valueKey];value=_toConsumableArray(value||[]);if(!!useRawOption)selectedValue=option;if(selected){value=value.filter(function(item){return!isSelected(item,selectedOption,{multiple:multiple,valueKey:valueKey});});}else{value.push(selectedValue);}return value;}function PickerItem(_ref3){var option=_ref3.option,onChange=_ref3.onChange,value=_ref3.value,renderOption=_ref3.renderOption,useRawOption=_ref3.useRawOption,multiple=_ref3.multiple,labelKey=_ref3.labelKey,valueKey=_ref3.valueKey,props=_objectWithoutProperties(_ref3,_excluded);var selected=isSelected(value,option,{multiple:multiple,valueKey:valueKey});var handleChange=function handleChange(){var formatChangeValueFunc=multiple?formatMultipleChangeValue:formatSingleChangeValue;var formattedValue=formatChangeValueFunc(option,value,{selected:selected,useRawOption:useRawOption,valueKey:valueKey});onChange(formattedValue,option);};return _jsx(Col,Object.assign({},props,{children:renderOption({option:option,selected:selected,onChange:handleChange,valueKey:valueKey,labelKey:labelKey})}));}function DefaultPickerWrapper(_ref4){var renderItem=_ref4.renderItem,options=_ref4.options,props=_objectWithoutProperties(_ref4,_excluded2);return _jsx(Row,Object.assign({className:"neko-picker",gap:"md"},props,{children:options==null?void 0:options.map==null?void 0:options.map(function(option){return renderItem(option);})}));}function FlatListPickerWrapper(_ref5){var _renderItem=_ref5.renderItem,options=_ref5.options,valueKey=_ref5.valueKey,props=_objectWithoutProperties(_ref5,_excluded3);return _jsx(DrawerFlatList,Object.assign({keyExtractor:function keyExtractor(i){return i[valueKey];},data:options,divider:true,fullH:true,renderItem:function renderItem(_ref6){var option=_ref6.item;return _renderItem(option);}},props));}export function Picker(_ref7){var _this=this;var value=_ref7.value,initialValue=_ref7.initialValue,onChange=_ref7.onChange,disabled=_ref7.disabled,options=_ref7.options,renderOption=_ref7.renderOption,colProps=_ref7.colProps,useRawOption=_ref7.useRawOption,useFlatList=_ref7.useFlatList,multiple=_ref7.multiple,valueKey=_ref7.valueKey,labelKey=_ref7.labelKey,Wrapper=_ref7.Wrapper,rootProps=_objectWithoutProperties(_ref7,_excluded4);var _React$useState=React.useState(initialValue),_React$useState2=_slicedToArray(_React$useState,2),localValue=_React$useState2[0],setLocalValue=_React$useState2[1];value=value===undefined?localValue:value;onChange=onChange||setLocalValue;var _useOptions=useOptions(options,{}),finalOptions=_useOptions.options,isFirstLoad=_useOptions.isFirstLoad;var handleChange=function handleChange(v,option){if(!!disabled)return;setLocalValue(v);onChange==null?void 0:onChange(v,option);};valueKey=valueKey||'value';labelKey=labelKey||'label';if(!renderOption){console.error('Picker requires a renderOption prop');return false;}Wrapper=Wrapper||(useFlatList?FlatListPickerWrapper:DefaultPickerWrapper);return _jsx(LoadingView,{active:isFirstLoad,replaceChildren:true,children:_jsx(Wrapper,Object.assign({},rootProps,{valueKey:valueKey,options:finalOptions,renderItem:function renderItem(option){return _jsx(PickerItem,Object.assign({option:option,onChange:handleChange,value:value,renderOption:renderOption,useRawOption:useRawOption,multiple:multiple,valueKey:valueKey,labelKey:labelKey},colProps),option.value);}}))});}
|
|
@@ -1 +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/components/inputs/Select.js";var _excluded=["ref"],_excluded2=["value","onChange","onChangeSearch","options","placement","placeholder","initialLabel","useBottomDrawer","useSearch","renderOption","labelKey","valueKey","useRawOption","multiple","onEndReached","renderFooter","renderHeader","pickerProps","popoverProps","popoverMaxHeight"];import React from'react';import{Icon,IconLabel}from"../presentation";import{Link}from"../actions";import{LinkInput}from"./LinkInput";import{Picker,getOptionLabel,searchOptions}from"./Picker";import{Popover}from"../structure/popover/Popover";import{TextInput}from"./TextInput";import{View}from"../structure";import{useResponsiveValue}from"../../responsive";import{jsx as _jsx,
|
|
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/components/inputs/Select.js";var _excluded=["ref"],_excluded2=["value","onChange","onChangeSearch","options","placement","placeholder","initialLabel","useBottomDrawer","useSearch","renderOption","labelKey","valueKey","useRawOption","multiple","onEndReached","renderFooter","renderHeader","pickerProps","popoverProps","popoverMaxHeight","snapPoints"];import{dissoc}from'ramda';import React from'react';import{Icon,IconLabel}from"../presentation";import{Link}from"../actions";import{LinkInput}from"./LinkInput";import{Picker,getOptionLabel,searchOptions}from"./Picker";import{Popover}from"../structure/popover/Popover";import{TextInput}from"./TextInput";import{View}from"../structure";import{useResponsiveValue}from"../../responsive";import{jsx as _jsx,Fragment as _Fragment,jsxs as _jsxs}from"react/jsx-runtime";function FullWidthInputWrapper(_ref){var ref=_ref.ref,props=_objectWithoutProperties(_ref,_excluded);return _jsx(View,{fullW:true,ref:ref,children:_jsx(TextInput,Object.assign({},props))});}export function Select(_ref2){var _pickerProps,_pickerProps2,_pickerProps3,_pickerProps4,_pickerProps5,_pickerProps6,_pickerProps7,_this=this,_value3;var value=_ref2.value,onChange=_ref2.onChange,onChangeSearch=_ref2.onChangeSearch,options=_ref2.options,placement=_ref2.placement,placeholder=_ref2.placeholder,initialLabel=_ref2.initialLabel,_ref2$useBottomDrawer=_ref2.useBottomDrawer,useBottomDrawer=_ref2$useBottomDrawer===void 0?{native:true,sm:true,md:true}:_ref2$useBottomDrawer,useSearch=_ref2.useSearch,renderOption=_ref2.renderOption,labelKey=_ref2.labelKey,valueKey=_ref2.valueKey,useRawOption=_ref2.useRawOption,multiple=_ref2.multiple,onEndReached=_ref2.onEndReached,renderFooter=_ref2.renderFooter,renderHeader=_ref2.renderHeader,pickerProps=_ref2.pickerProps,popoverProps=_ref2.popoverProps,popoverMaxHeight=_ref2.popoverMaxHeight,snapPoints=_ref2.snapPoints,props=_objectWithoutProperties(_ref2,_excluded2);var _React$useState=React.useState(false),_React$useState2=_slicedToArray(_React$useState,2),focus=_React$useState2[0],setFocus=_React$useState2[1];var _React$useState3=React.useState(''),_React$useState4=_slicedToArray(_React$useState3,2),search=_React$useState4[0],setSearch=_React$useState4[1];var _React$useState5=React.useState(initialLabel||''),_React$useState6=_slicedToArray(_React$useState5,2),inputValue=_React$useState6[0],setInputValue=_React$useState6[1];var _React$useState7=React.useState(value),_React$useState8=_slicedToArray(_React$useState7,2),localValue=_React$useState8[0],setLocalValue=_React$useState8[1];labelKey=labelKey||((_pickerProps=pickerProps)==null?void 0:_pickerProps.labelKey)||'label';valueKey=valueKey||((_pickerProps2=pickerProps)==null?void 0:_pickerProps2.valueKey)||'value';useRawOption=useRawOption||((_pickerProps3=pickerProps)==null?void 0:_pickerProps3.useRawOption);multiple=multiple||((_pickerProps4=pickerProps)==null?void 0:_pickerProps4.multiple);onEndReached=onEndReached||((_pickerProps5=pickerProps)==null?void 0:_pickerProps5.onEndReached);renderFooter=renderFooter||((_pickerProps6=pickerProps)==null?void 0:_pickerProps6.renderFooter);renderHeader=renderHeader||((_pickerProps7=pickerProps)==null?void 0:_pickerProps7.renderHeader);pickerProps=Object.assign({},pickerProps,{labelKey:labelKey,valueKey:valueKey,useRawOption:useRawOption,multiple:multiple,onEndReached:onEndReached,renderFooter:renderFooter,renderHeader:renderHeader});popoverMaxHeight=popoverMaxHeight||300;useBottomDrawer=useResponsiveValue(useBottomDrawer);value=value||localValue;var handleChange=React.useCallback(function(value,option){if(!!multiple){setInputValue(value.map(function(item){return getOptionLabel(options,item,{valueKey:valueKey,labelKey:labelKey});}).join(', '));}else{setInputValue((option==null?void 0:option[labelKey])||getOptionLabel(options,option,{valueKey:valueKey,labelKey:labelKey}));}setLocalValue(value);onChange==null?void 0:onChange(value);},[labelKey,valueKey]);React.useEffect(function(){if(!!multiple){var _value;setInputValue((_value=value)==null?void 0:_value.map==null?void 0:_value.map(function(item){return getOptionLabel(options,item,{valueKey:valueKey,labelKey:labelKey});}).join(', '));}else{var _value2;var label=((_value2=value)==null?void 0:_value2[labelKey])||getOptionLabel(options,value,{valueKey:valueKey,labelKey:labelKey});if(!!label||!value)setInputValue(label);}},[value]);var handleChangeSearch=React.useCallback(function(v){onChangeSearch==null?void 0:onChangeSearch(v);setSearch(v);},[]);var Input=!useSearch||useBottomDrawer?LinkInput:FullWidthInputWrapper;var valueWatcher=multiple&&localValue;var finalRenderOption=React.useCallback(function(params){var _option,_option2,_option3;if(!!renderOption)return renderOption(params);var option=params.option,labelKey=params.labelKey,selected=params.selected;if((_option=option)!=null&&_option.id)option=dissoc('id',option);if((_option2=option)!=null&&_option2.color)option=Object.assign({},option,{color:undefined,iconColor:option.color});return _jsx(IconLabel,Object.assign({},option,{label:(_option3=option)==null?void 0:_option3[labelKey],flex:true,strong:selected}));},[renderOption]);return _jsx(Popover,Object.assign({trigger:"click",placement:placement||'bottomLeft',snapPoints:snapPoints||[450],useBottomDrawer:useBottomDrawer,parentWidth:true,padding:0,watch:[search,options,valueWatcher],unmountOnClose:true,maxHeight:popoverMaxHeight},popoverProps,{renderContent:function renderContent(_ref3){var onClose=_ref3.onClose;return _jsx(Picker,Object.assign({row:false,options:searchOptions(options,search,{labelKey:labelKey}),value:value,gap:0,maxHeight:!useBottomDrawer&&popoverMaxHeight,useFlatList:true,onlyOnScreen:true,itemMinHeight:30,onChange:function onChange(v,option){handleChange(v,option);if(!multiple)onClose();}},pickerProps,{renderHeader:useBottomDrawer&&useSearch?function(){return _jsxs(_Fragment,{children:[_jsx(View,{padding:"md",paddingB:"xs",children:_jsx(TextInput,{prefixIcon:"search-line",prefixIconColor:"text4",value:search,onChange:handleChangeSearch})}),renderHeader==null?void 0:renderHeader()]});}:renderHeader,renderOption:function renderOption(_ref4){var option=_ref4.option,selected=_ref4.selected,onChange=_ref4.onChange;return _jsxs(Link,{row:true,paddingH:useBottomDrawer?'md':'sm',paddingV:"xs",minHeight:useBottomDrawer?'xl':'md',gap:"sm",onMouseDown:function onMouseDown(e){return!!multiple&&e.preventDefault();},onPress:onChange,centerV:true,bg:selected&&'primary_op10',children:[_jsx(View,{flex:true,row:true,children:finalRenderOption({option:option,labelKey:labelKey,selected:selected})}),selected&&_jsx(Icon,{name:"checkbox-circle-fill",primary:true})]});}}));},children:_jsx(Input,Object.assign({value:!!focus?search:inputValue,onChange:handleChangeSearch,onFocus:function onFocus(){handleChangeSearch('');setFocus(true);},onBlur:function onBlur(){setTimeout(function(){setFocus(false);},200);},placeholder:(!multiple||!((_value3=value)!=null&&_value3.length))&&placeholder,suffixIcon:"arrow-down-s-fill",suffixIconColor:"text4",fullW:true},props))}));}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";var _jsxFileName="/Users/christianstorch/Apps/nekoapps/libs/neko-ui/src/components/presentation/Avatar.js";var _excluded=["initials","name","icon","src","invert","textProps","iconProps"];import{pipe}from'ramda';import{AbsView}from"../../abstractions/View";import{IconLabel}from"./IconLabel";import{Image}from"./Image";import{getDynamicColor}from"../../theme/helpers/dynamicColor";import{getInitials}from"../../helpers";import{moveScale}from"../../theme/helpers/sizeScale";import{useBackgroundModifier}from"../../modifiers/background";import{useBorderModifier}from"../../modifiers/border";import{useColorConverter}from"../../modifiers/colorConverter";import{useDefaultModifier}from"../../modifiers/default";import{useFlexWrapperModifier}from"../../modifiers/flexWrapper";import{useFullColorModifier}from"../../modifiers/fullColor";import{useMarginModifier}from"../../modifiers/margin";import{useOverflowModifier}from"../../modifiers/overflow";import{usePaddingModifier}from"../../modifiers/padding";import{usePositionModifier}from"../../modifiers/position";import{useShadowModifier}from"../../modifiers/shadow";import{useSizeConverter}from"../../modifiers/sizeConverter";import{useSizeModifier}from"../../modifiers/size";import{useThemeComponentModifier}from"../../modifiers/themeComponent";import{jsx as _jsx}from"react/jsx-runtime";var DEFAULT_PROPS=function DEFAULT_PROPS(_ref){var _ref2=_slicedToArray(_ref,2),sizeCode=_ref2[0].sizeCode,_ref2$=_ref2[1],round=_ref2$.round,square=_ref2$.square,src=_ref2$.src,dynamicColor=_ref2$.dynamicColor,color=_ref2$.color;return{padding:!!src?undefined:1,height:sizeCode,width:sizeCode,ratio:1,br:!!square?moveScale(sizeCode,-2)||sizeCode:undefined,round:!square,center:true,border:!!src?undefined:1,overflow:'hidden',color:dynamicColor!==undefined?getDynamicColor(dynamicColor):color};};export function Avatar(rootProps){var _pipe=pipe(useSizeConverter('elementHeights','md'),useThemeComponentModifier('Avatar'),useDefaultModifier(DEFAULT_PROPS),useColorConverter('text3'),useFullColorModifier,useSizeModifier,usePositionModifier,useFlexWrapperModifier,useBackgroundModifier,usePaddingModifier,useMarginModifier,useBorderModifier,useShadowModifier,useOverflowModifier)([{},rootProps]),_pipe2=_slicedToArray(_pipe,2),_pipe2$=_pipe2[0],fontColor=_pipe2$.fontColor,sizeCode=_pipe2$.sizeCode,formattedProps=_pipe2[1];var initials=formattedProps.initials,name=formattedProps.name,icon=formattedProps.icon,src=formattedProps.src,invert=formattedProps.invert,textProps=formattedProps.textProps,iconProps=formattedProps.iconProps,props=_objectWithoutProperties(formattedProps,_excluded);initials=initials||getInitials(name);var content=_jsx(IconLabel,{center:true,color:fontColor,size:sizeCode,label:!icon&&initials,icon:icon,invert:invert,textProps:Object.assign({strong:true},textProps),iconProps:iconProps});if(!!src)content=_jsx(Image,{br:0,src:src,width:sizeCode,height:sizeCode});return _jsx(AbsView,Object.assign({className:"neko-avatar"},props,{children:content}));}
|
|
1
|
+
import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";var _jsxFileName="/Users/christianstorch/Apps/nekoapps/libs/neko-ui/src/components/presentation/Avatar.js";var _excluded=["initials","name","icon","src","invert","textProps","iconProps","iconSize"];import{pipe}from'ramda';import{AbsView}from"../../abstractions/View";import{IconLabel}from"./IconLabel";import{Image}from"./Image";import{getDynamicColor}from"../../theme/helpers/dynamicColor";import{getInitials}from"../../helpers";import{moveScale}from"../../theme/helpers/sizeScale";import{useBackgroundModifier}from"../../modifiers/background";import{useBorderModifier}from"../../modifiers/border";import{useColorConverter}from"../../modifiers/colorConverter";import{useDefaultModifier}from"../../modifiers/default";import{useFlexWrapperModifier}from"../../modifiers/flexWrapper";import{useFullColorModifier}from"../../modifiers/fullColor";import{useMarginModifier}from"../../modifiers/margin";import{useOverflowModifier}from"../../modifiers/overflow";import{usePaddingModifier}from"../../modifiers/padding";import{usePositionModifier}from"../../modifiers/position";import{useShadowModifier}from"../../modifiers/shadow";import{useSizeConverter}from"../../modifiers/sizeConverter";import{useSizeModifier}from"../../modifiers/size";import{useThemeComponentModifier}from"../../modifiers/themeComponent";import{jsx as _jsx}from"react/jsx-runtime";var DEFAULT_PROPS=function DEFAULT_PROPS(_ref){var _ref2=_slicedToArray(_ref,2),sizeCode=_ref2[0].sizeCode,_ref2$=_ref2[1],round=_ref2$.round,square=_ref2$.square,src=_ref2$.src,dynamicColor=_ref2$.dynamicColor,color=_ref2$.color;return{padding:!!src?undefined:1,height:sizeCode,width:sizeCode,ratio:1,br:!!square?moveScale(sizeCode,-2)||sizeCode:undefined,round:!square,center:true,border:!!src?undefined:1,overflow:'hidden',color:dynamicColor!==undefined?getDynamicColor(dynamicColor):color};};export function Avatar(rootProps){var _pipe=pipe(useSizeConverter('elementHeights','md'),useThemeComponentModifier('Avatar'),useDefaultModifier(DEFAULT_PROPS),useColorConverter('text3'),useFullColorModifier,useSizeModifier,usePositionModifier,useFlexWrapperModifier,useBackgroundModifier,usePaddingModifier,useMarginModifier,useBorderModifier,useShadowModifier,useOverflowModifier)([{},rootProps]),_pipe2=_slicedToArray(_pipe,2),_pipe2$=_pipe2[0],fontColor=_pipe2$.fontColor,sizeCode=_pipe2$.sizeCode,formattedProps=_pipe2[1];var initials=formattedProps.initials,name=formattedProps.name,icon=formattedProps.icon,src=formattedProps.src,invert=formattedProps.invert,textProps=formattedProps.textProps,iconProps=formattedProps.iconProps,iconSize=formattedProps.iconSize,props=_objectWithoutProperties(formattedProps,_excluded);initials=initials||getInitials(name);var content=_jsx(IconLabel,{center:true,color:fontColor,size:sizeCode,label:!icon&&initials,icon:icon,invert:invert,textProps:Object.assign({strong:true},textProps),iconProps:Object.assign({size:iconSize},iconProps)});if(!!src)content=_jsx(Image,{br:0,src:src,width:sizeCode,height:sizeCode});return _jsx(AbsView,Object.assign({className:"neko-avatar"},props,{children:content}));}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";var _jsxFileName="/Users/christianstorch/Apps/nekoapps/libs/neko-ui/src/components/presentation/AvatarLabel.js";var _excluded=["icon","label","name","initials","src","avatarColor","square","dynamicColor","avatarProps","moveAvatarSizeScale","avatarSize"];import{pipe}from'ramda';import{Avatar}from"./Avatar";import{ContentLabel}from"./ContentLabel";import{moveScale}from"../../theme/helpers/sizeScale";import{useColorConverter}from"../../modifiers/colorConverter";import{useSizeConverter}from"../../modifiers/sizeConverter";import{useThemeComponentModifier}from"../../modifiers/themeComponent";import{jsx as _jsx}from"react/jsx-runtime";export function AvatarLabel(rootProps){var _pipe=pipe(useColorConverter(),useSizeConverter('elementHeights','md'),useThemeComponentModifier('AvatarLabel'))([{},rootProps]),_pipe2=_slicedToArray(_pipe,2),_pipe2$=_pipe2[0],sizeCode=_pipe2$.sizeCode,color=_pipe2$.color,formattedProps=_pipe2[1];var icon=formattedProps.icon,label=formattedProps.label,name=formattedProps.name,initials=formattedProps.initials,src=formattedProps.src,avatarColor=formattedProps.avatarColor,square=formattedProps.square,dynamicColor=formattedProps.dynamicColor,avatarProps=formattedProps.avatarProps,moveAvatarSizeScale=formattedProps.moveAvatarSizeScale,avatarSize=formattedProps.avatarSize,props=_objectWithoutProperties(formattedProps,_excluded);var hasAvatar=!!name||!!initials||!!src;return _jsx(ContentLabel,Object.assign({className:"neko-avatar-label",label:label||name,color:color,size:sizeCode,content:_jsx(Avatar,Object.assign({name:name||label,initials:initials,icon:icon,src:src,size:avatarSize||moveScale(sizeCode,moveAvatarSizeScale||-1),color:avatarColor||color,dynamicColor:dynamicColor,square:square,marginH:2},avatarProps))},props));}export var AvatarText=AvatarLabel;
|
|
1
|
+
import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";var _jsxFileName="/Users/christianstorch/Apps/nekoapps/libs/neko-ui/src/components/presentation/AvatarLabel.js";var _excluded=["icon","label","name","initials","src","avatarColor","square","dynamicColor","avatarProps","moveAvatarSizeScale","avatarSize","iconSize"];import{pipe}from'ramda';import{Avatar}from"./Avatar";import{ContentLabel}from"./ContentLabel";import{moveScale}from"../../theme/helpers/sizeScale";import{useColorConverter}from"../../modifiers/colorConverter";import{useSizeConverter}from"../../modifiers/sizeConverter";import{useThemeComponentModifier}from"../../modifiers/themeComponent";import{jsx as _jsx}from"react/jsx-runtime";export function AvatarLabel(rootProps){var _pipe=pipe(useColorConverter(),useSizeConverter('elementHeights','md'),useThemeComponentModifier('AvatarLabel'))([{},rootProps]),_pipe2=_slicedToArray(_pipe,2),_pipe2$=_pipe2[0],sizeCode=_pipe2$.sizeCode,color=_pipe2$.color,formattedProps=_pipe2[1];var icon=formattedProps.icon,label=formattedProps.label,name=formattedProps.name,initials=formattedProps.initials,src=formattedProps.src,avatarColor=formattedProps.avatarColor,square=formattedProps.square,dynamicColor=formattedProps.dynamicColor,avatarProps=formattedProps.avatarProps,moveAvatarSizeScale=formattedProps.moveAvatarSizeScale,avatarSize=formattedProps.avatarSize,iconSize=formattedProps.iconSize,props=_objectWithoutProperties(formattedProps,_excluded);var hasAvatar=!!name||!!initials||!!src;return _jsx(ContentLabel,Object.assign({className:"neko-avatar-label",label:label||name,color:color,size:sizeCode,content:_jsx(Avatar,Object.assign({name:name||label,initials:initials,icon:icon,src:src,size:avatarSize||moveScale(sizeCode,moveAvatarSizeScale||-1),color:avatarColor||color,dynamicColor:dynamicColor,square:square,marginH:2,iconSize:iconSize},avatarProps))},props));}export var AvatarText=AvatarLabel;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";var _jsxFileName="/Users/christianstorch/Apps/nekoapps/libs/neko-ui/src/components/presentation/LabelValue.js";var _excluded=["children"],_excluded2=["icon","label","iconColor","labelProps","value","valueProps","vertical","spread"];import{pipe,is}from'ramda';import{IconLabel}from"./IconLabel";import{Text}from"../text/Text";import{View}from"../structure/View";import{moveScale}from"../../theme/helpers/sizeScale";import{useDefaultModifier}from"../../modifiers/default";import{useSizeConverter}from"../../modifiers/sizeConverter";import{useThemeComponentModifier}from"../../modifiers/themeComponent";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";var DEFAULT_PROPS=function DEFAULT_PROPS(_ref){var _ref2=_slicedToArray(_ref,2),
|
|
1
|
+
import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";var _jsxFileName="/Users/christianstorch/Apps/nekoapps/libs/neko-ui/src/components/presentation/LabelValue.js";var _excluded=["children"],_excluded2=["icon","label","iconColor","labelProps","value","valueColor","valueProps","vertical","spread"];import{pipe,is}from'ramda';import{IconLabel}from"./IconLabel";import{Text}from"../text/Text";import{View}from"../structure/View";import{moveScale}from"../../theme/helpers/sizeScale";import{useColorConverter}from"../../modifiers/colorConverter";import{useDefaultModifier}from"../../modifiers/default";import{useSizeConverter}from"../../modifiers/sizeConverter";import{useThemeComponentModifier}from"../../modifiers/themeComponent";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";var DEFAULT_PROPS=function DEFAULT_PROPS(_ref){var _ref2=_slicedToArray(_ref,2),_ref2$=_ref2[0],sizeCode=_ref2$.sizeCode,color=_ref2$.color,_ref2$2=_ref2[1],vertical=_ref2$2.vertical,spread=_ref2$2.spread;return{row:!vertical,centerV:!vertical,justify:!!spread&&'space-between',gap:!vertical?moveScale(sizeCode,-1):0,labelProps:{size:moveScale(sizeCode,!vertical?0:-2),moveIconSizeScale:!vertical?-1:-2,color:color||'text3'},valueProps:{size:sizeCode,align:spread&&'right'}};};export function LabelValue(_ref3){var children=_ref3.children,rootProps=_objectWithoutProperties(_ref3,_excluded);var _pipe=pipe(useColorConverter(),useSizeConverter('elementHeights','md'),useThemeComponentModifier('Labelvalue'),useDefaultModifier(DEFAULT_PROPS))([{},rootProps]),_pipe2=_slicedToArray(_pipe,2),_pipe2$=_pipe2[0],sizeCode=_pipe2$.sizeCode,color=_pipe2$.color,formattedProps=_pipe2[1];var icon=formattedProps.icon,label=formattedProps.label,iconColor=formattedProps.iconColor,labelProps=formattedProps.labelProps,value=formattedProps.value,valueColor=formattedProps.valueColor,valueProps=formattedProps.valueProps,vertical=formattedProps.vertical,spread=formattedProps.spread,props=_objectWithoutProperties(formattedProps,_excluded2);var separator=!vertical&&!spread?':':'';var content=children||value;if(is(String,value))content=_jsx(Text,Object.assign({label:value,color:valueColor||color},valueProps));return _jsxs(View,Object.assign({className:"neko-label-value"},props,{children:[_jsx(IconLabel,Object.assign({label:label+separator,icon:icon,iconColor:iconColor},labelProps)),content]}));}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _jsxFileName="/Users/christianstorch/Apps/nekoapps/libs/neko-ui/src/components/presentation/Result.js";var _excluded=["type","icon","iconColor","title","description","footer","titleProps","descriptionProps","textProps","iconProps"];import{Divider}from"../helpers/Separator";import{Icon}from"./Icon";import{Text}from"../text/Text";import{View}from"../structure/View";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";export var RESULT_TYPES={error:{icon:'close-circle-fill',color:'red'},success:{icon:'checkbox-circle-fill',color:'green'},warning:{icon:'error-warning-fill',color:'yellow'},info:{icon:'information-2-fill',color:'blue'}};export function Result(_ref){var type=_ref.type,icon=_ref.icon,iconColor=_ref.iconColor,title=_ref.title,description=_ref.description,footer=_ref.footer,titleProps=_ref.titleProps,descriptionProps=_ref.descriptionProps,textProps=_ref.textProps,iconProps=_ref.iconProps,props=_objectWithoutProperties(_ref,_excluded);var typeProps=RESULT_TYPES[type]||{};icon=icon||typeProps.icon;iconColor=iconColor||typeProps.color||'primary';return _jsxs(View,Object.assign({className:"neko-result",center:true,padding:"lg"},props,{children:[!!icon&&_jsx(Icon,Object.assign({name:icon,color:iconColor,size:42,primary:true},iconProps)),!!icon&&_jsx(Divider,{height:10}),_jsx(Text,Object.assign({h4:true},textProps,titleProps,{children:title})),!!description&&_jsx(Text,Object.assign({text3:true,sm:true,marginT:"sm"},textProps,descriptionProps,{children:description})),!!footer&&_jsx(View,{marginT:"lg",children:footer})]}));}
|
|
1
|
+
import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _jsxFileName="/Users/christianstorch/Apps/nekoapps/libs/neko-ui/src/components/presentation/Result.js";var _excluded=["type","icon","iconColor","title","description","footer","titleProps","descriptionProps","textProps","iconProps"];import{Divider}from"../helpers/Separator";import{Icon}from"./Icon";import{Text}from"../text/Text";import{View}from"../structure/View";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";export var RESULT_TYPES={error:{icon:'close-circle-fill',color:'red'},success:{icon:'checkbox-circle-fill',color:'green'},warning:{icon:'error-warning-fill',color:'yellow'},info:{icon:'information-2-fill',color:'blue'}};export function Result(_ref){var type=_ref.type,icon=_ref.icon,iconColor=_ref.iconColor,title=_ref.title,description=_ref.description,footer=_ref.footer,titleProps=_ref.titleProps,descriptionProps=_ref.descriptionProps,textProps=_ref.textProps,iconProps=_ref.iconProps,props=_objectWithoutProperties(_ref,_excluded);var typeProps=RESULT_TYPES[type]||{};icon=icon||typeProps.icon;iconColor=iconColor||typeProps.color||'primary';return _jsxs(View,Object.assign({className:"neko-result",center:true,padding:"lg"},props,{children:[!!icon&&_jsx(Icon,Object.assign({name:icon,color:iconColor,size:42,primary:true},iconProps)),!!icon&&_jsx(Divider,{height:10}),_jsx(Text,Object.assign({h4:true,center:true},textProps,titleProps,{children:title})),!!description&&_jsx(Text,Object.assign({text3:true,sm:true,marginT:"sm",center:true},textProps,descriptionProps,{children:description})),!!footer&&_jsx(View,{marginT:"lg",children:footer})]}));}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";var _jsxFileName="/Users/christianstorch/Apps/nekoapps/libs/neko-ui/src/components/presentation/Tooltip.js";var _excluded=["label","icon","textProps","iconProps","gap","invert","children"];import{pipe}from'ramda';import{IconLabel}from"./IconLabel";import{Popover}from"../structure/popover/Popover";import{useColorConverter}from"../../modifiers/colorConverter";import{useFullColorModifier}from"../../modifiers/fullColor";import{useSizeConverter}from"../../modifiers/sizeConverter";import{useThemeComponentModifier}from"../../modifiers/themeComponent";import{jsx as _jsx}from"react/jsx-runtime";export function Tooltip(rootProps){var _pipe=pipe(useColorConverter('overlayBG'),useSizeConverter('text','
|
|
1
|
+
import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";var _jsxFileName="/Users/christianstorch/Apps/nekoapps/libs/neko-ui/src/components/presentation/Tooltip.js";var _excluded=["label","icon","textProps","iconProps","gap","invert","children"];import{pipe}from'ramda';import{IconLabel}from"./IconLabel";import{Popover}from"../structure/popover/Popover";import{useColorConverter}from"../../modifiers/colorConverter";import{useFullColorModifier}from"../../modifiers/fullColor";import{useSizeConverter}from"../../modifiers/sizeConverter";import{useThemeComponentModifier}from"../../modifiers/themeComponent";import{jsx as _jsx}from"react/jsx-runtime";export function Tooltip(rootProps){var _pipe=pipe(useColorConverter('overlayBG'),useSizeConverter('text','sm'),useThemeComponentModifier('Tooltip'),useFullColorModifier)([{},rootProps]),_pipe2=_slicedToArray(_pipe,2),_pipe2$=_pipe2[0],loading=_pipe2$.loading,fontColor=_pipe2$.fontColor,sizeCode=_pipe2$.sizeCode,formattedProps=_pipe2[1];var label=formattedProps.label,icon=formattedProps.icon,textProps=formattedProps.textProps,iconProps=formattedProps.iconProps,gap=formattedProps.gap,invert=formattedProps.invert,children=formattedProps.children,props=_objectWithoutProperties(formattedProps,_excluded);if(!label&&!icon)return children;return _jsx(Popover,Object.assign({className:"neko-tooltip",padding:"xs"},props,{content:_jsx(IconLabel,{center:true,color:fontColor,size:sizeCode,label:label,icon:icon,gap:gap,invert:invert,textProps:textProps,iconProps:iconProps,loading:loading}),children:children}));}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import _objectDestructuringEmpty from"@babel/runtime/helpers/objectDestructuringEmpty";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _jsxFileName="/Users/christianstorch/Apps/nekoapps/libs/neko-ui/src/components/sections/Section.js";var _excluded=["children","title"],_excluded2=["titleProps","dividerProps"];import{pipe}from'ramda';import React from'react';import{Divider}from"../helpers/Separator";import{Text}from"../text";import{View}from"../structure";import{useDefaultModifier}from"../../modifiers/default";import{useThemeComponentModifier}from"../../modifiers/themeComponent";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";var DEFAULT_PROPS={marginH:'md',bg:'overlayBG',br:'md',titleProps:{strong:true,text4:true,sm:true,marginB:'sm',paddingH:'md'},dividerProps:{line:true,height:1}};export function Section(_ref){var _this=this;var children=_ref.children,title=_ref.title,rootProps=_objectWithoutProperties(_ref,_excluded);var _pipe=pipe(useThemeComponentModifier('Section'),useDefaultModifier(DEFAULT_PROPS))([{},rootProps]),_pipe2=_slicedToArray(_pipe,2);_objectDestructuringEmpty(_pipe2[0]);var formattedProps=_pipe2[1];var titleProps=formattedProps.titleProps,dividerProps=formattedProps.dividerProps,props=_objectWithoutProperties(formattedProps,_excluded2);var childArray=React.Children.toArray(children);return _jsxs(View,{children:[!!title&&_jsx(Text,Object.assign({marginH:props.marginH},titleProps,{label:title})),_jsx(View,Object.assign({className:"neko-section"},props,{children:childArray.map(function(child,i){return _jsxs(React.Fragment,{children:[child,i<childArray.length-1&&_jsx(Divider,Object.assign({},dividerProps))]},child.key);})}))]});}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import _objectDestructuringEmpty from"@babel/runtime/helpers/objectDestructuringEmpty";var _jsxFileName="/Users/christianstorch/Apps/nekoapps/libs/neko-ui/src/components/sections/SectionItem.js";import{pipe}from'ramda';import{LabelValue}from"../presentation";import{useColorConverter}from"../../modifiers/colorConverter";import{useDefaultModifier}from"../../modifiers/default";import{useThemeComponentModifier}from"../../modifiers/themeComponent";import{jsx as _jsx}from"react/jsx-runtime";var DEFAULT_PROPS={paddingH:'md',paddingV:'sm',minH:'md'};export function SectionItem(_ref){var rootProps=Object.assign({},(_objectDestructuringEmpty(_ref),_ref));var _pipe=pipe(useColorConverter(),useThemeComponentModifier('SectionItem'),useDefaultModifier(DEFAULT_PROPS))([{},rootProps]),_pipe2=_slicedToArray(_pipe,2),color=_pipe2[0].color,formattedProps=_pipe2[1];var props=Object.assign({},(_objectDestructuringEmpty(formattedProps),formattedProps));return _jsx(LabelValue,Object.assign({spread:true,className:"neko-section-item",color:color},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/components/sections/SectionItemLink.js";var _excluded=["children","value","onPress"],_excluded2=["icon","iconLabelProps"];import{pipe}from'ramda';import{IconLabel}from"../presentation";import{Link}from"../actions";import{SectionItem}from"./SectionItem";import{useColorConverter}from"../../modifiers/colorConverter";import{useDefaultModifier}from"../../modifiers/default";import{useThemeComponentModifier}from"../../modifiers/themeComponent";import{jsx as _jsx}from"react/jsx-runtime";var DEFAULT_PROPS={icon:'md',paddingV:'sm',minH:'md',icon:'arrow-right-s-line'};export function SectionItemLink(_ref){var children=_ref.children,value=_ref.value,onPress=_ref.onPress,rootProps=_objectWithoutProperties(_ref,_excluded);var _pipe=pipe(useColorConverter(),useThemeComponentModifier('SectionItemLink'),useDefaultModifier(DEFAULT_PROPS))([{},rootProps]),_pipe2=_slicedToArray(_pipe,2),color=_pipe2[0].color,formattedProps=_pipe2[1];var icon=formattedProps.icon,iconLabelProps=formattedProps.iconLabelProps,props=_objectWithoutProperties(formattedProps,_excluded2);return _jsx(Link,{className:"neko-section-item-link",onPress:onPress,children:_jsx(SectionItem,Object.assign({color:color},props,{children:children||_jsx(IconLabel,Object.assign({gap:2,invert:true,color:color},iconLabelProps,{label:value,icon:icon}))}))});}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export*from"./Section";export*from"./SectionItem";export*from"./SectionItemLink";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _jsxFileName="/Users/christianstorch/Apps/nekoapps/libs/neko-ui/src/components/state/StatePresenter.js";var _excluded=["loading","error","empty","errorTitle","errorDescription","emptyTitle","emptyDescription","children"];import{Loading}from"./Loading";import{Result}from"../presentation";import{View}from"../structure";import{jsx as _jsx}from"react/jsx-runtime";export function StatePresenter(_ref){var loading=_ref.loading,error=_ref.error,empty=_ref.empty,_ref$errorTitle=_ref.errorTitle,errorTitle=_ref$errorTitle===void 0?'Something went wrong':_ref$errorTitle,errorDescription=_ref.errorDescription,_ref$emptyTitle=_ref.emptyTitle,emptyTitle=_ref$emptyTitle===void 0?'No results':_ref$emptyTitle,emptyDescription=_ref.emptyDescription,children=_ref.children,props=_objectWithoutProperties(_ref,_excluded);if(loading){return _jsx(View,Object.assign({flex:true,center:true},props,{children:_jsx(Loading,{})}));}if(error){return _jsx(View,Object.assign({flex:true,center:true},props,{children:_jsx(Result,{type:"error",title:errorTitle,description:errorDescription||error.message})}));}if(empty){return _jsx(View,Object.assign({flex:true,center:true},props,{children:_jsx(Result,{type:"empty",title:emptyTitle,description:emptyDescription})}));}return children;}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export*from"./Loading";export*from"./LoadingView";
|
|
1
|
+
export*from"./Loading";export*from"./LoadingView";export*from"./StatePresenter";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";import _objectDestructuringEmpty from"@babel/runtime/helpers/objectDestructuringEmpty";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";var _jsxFileName="/Users/christianstorch/Apps/nekoapps/libs/neko-ui/src/components/structure/BlurView.js";var _excluded=["children"];import tinycolor from'tinycolor2';import{pipe}from'ramda';import{AbsBlurView}from"../../abstractions/BlurView";import{useAnimationModifier}from"../../modifiers/animation";import{useBackgroundModifier}from"../../modifiers/background";import{useBorderModifier}from"../../modifiers/border";import{useColors}from"../../theme";import{useDefaultModifier}from"../../modifiers/default";import{useDisplayModifier}from"../../modifiers/display";import{useFlexModifier}from"../../modifiers/flex";import{useFlexWrapperModifier}from"../../modifiers/flexWrapper";import{useMarginModifier}from"../../modifiers/margin";import{useOverflowModifier}from"../../modifiers/overflow";import{usePaddingModifier}from"../../modifiers/padding";import{usePositionModifier}from"../../modifiers/position";import{useShadowModifier}from"../../modifiers/shadow";import{useSizeModifier}from"../../modifiers/size";import{useStateModifier}from"../../modifiers/state";import{useThemeComponentModifier}from"../../modifiers/themeComponent";import{jsx as _jsx}from"react/jsx-runtime";var DEFAULT_PROPS=function DEFAULT_PROPS(colors){return function(_ref){var _ref2=_slicedToArray(_ref,2);_objectDestructuringEmpty(_ref2[0]);_objectDestructuringEmpty(_ref2[1]);var isDark=tinycolor((colors==null?void 0:colors.overlayBG)||(colors==null?void 0:colors.bg)).isDark();return{tint:isDark?'dark':'light'};};};export function BlurView(_ref3){var children=_ref3.children,rootProps=_objectWithoutProperties(_ref3,_excluded);var colors=useColors();var _pipe=pipe(useThemeComponentModifier('BlurView'),useDefaultModifier(DEFAULT_PROPS(colors)),useFlexWrapperModifier,useDisplayModifier,useAnimationModifier,useStateModifier,useSizeModifier,usePositionModifier,useOverflowModifier,usePaddingModifier,useMarginModifier,useFlexModifier,useBackgroundModifier,useBorderModifier,useShadowModifier)([{},rootProps]),_pipe2=_slicedToArray(_pipe,2);_objectDestructuringEmpty(_pipe2[0]);var props=_pipe2[1];return _jsx(AbsBlurView,Object.assign({className:"neko-blur-view"},props,{children:children}));}
|
|
1
|
+
import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";import _objectDestructuringEmpty from"@babel/runtime/helpers/objectDestructuringEmpty";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";var _jsxFileName="/Users/christianstorch/Apps/nekoapps/libs/neko-ui/src/components/structure/BlurView.js";var _excluded=["children"];import tinycolor from'tinycolor2';import{pipe}from'ramda';import{AbsBlurView}from"../../abstractions/BlurView";import{useAnimationModifier}from"../../modifiers/animation";import{useBackgroundModifier}from"../../modifiers/background";import{useBorderModifier}from"../../modifiers/border";import{useColors}from"../../theme";import{useDefaultModifier}from"../../modifiers/default";import{useDisplayModifier}from"../../modifiers/display";import{useFlexModifier}from"../../modifiers/flex";import{useFlexWrapperModifier}from"../../modifiers/flexWrapper";import{useMarginModifier}from"../../modifiers/margin";import{useOverflowModifier}from"../../modifiers/overflow";import{usePaddingModifier}from"../../modifiers/padding";import{usePositionModifier}from"../../modifiers/position";import{useShadowModifier}from"../../modifiers/shadow";import{useSizeModifier}from"../../modifiers/size";import{useStateModifier}from"../../modifiers/state";import{useThemeComponentModifier}from"../../modifiers/themeComponent";import{jsx as _jsx}from"react/jsx-runtime";var DEFAULT_PROPS=function DEFAULT_PROPS(colors){return function(_ref){var _ref2=_slicedToArray(_ref,2);_objectDestructuringEmpty(_ref2[0]);_objectDestructuringEmpty(_ref2[1]);var isDark=tinycolor((colors==null?void 0:colors.overlayBG)||(colors==null?void 0:colors.bg)).isDark();return{width:'auto',tint:isDark?'dark':'light'};};};export function BlurView(_ref3){var children=_ref3.children,rootProps=_objectWithoutProperties(_ref3,_excluded);var colors=useColors();var _pipe=pipe(useThemeComponentModifier('BlurView'),useDefaultModifier(DEFAULT_PROPS(colors)),useFlexWrapperModifier,useDisplayModifier,useAnimationModifier,useStateModifier,useSizeModifier,usePositionModifier,useOverflowModifier,usePaddingModifier,useMarginModifier,useFlexModifier,useBackgroundModifier,useBorderModifier,useShadowModifier)([{},rootProps]),_pipe2=_slicedToArray(_pipe,2);_objectDestructuringEmpty(_pipe2[0]);var props=_pipe2[1];return _jsx(AbsBlurView,Object.assign({className:"neko-blur-view"},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/components/structure/KeyboardAvoidingView.js";var _excluded=["children","keyboardVerticalOffset"];import{pipe}from'ramda';import{AbsKeyboardAvoidingView}from"../../abstractions/KeyboardAvoidingView";import{Platform}from"../../abstractions/Platform";import{useSafeAreaInsets}from"../../abstractions/helpers/useSafeAreaInsets";import{useAnimationModifier}from"../../modifiers/animation";import{useBackgroundModifier}from"../../modifiers/background";import{useBorderModifier}from"../../modifiers/border";import{useCursorModifier}from"../../modifiers/cursor";import{useDisplayModifier}from"../../modifiers/display";import{useFlexModifier}from"../../modifiers/flex";import{useFlexWrapperModifier}from"../../modifiers/flexWrapper";import{useMarginModifier}from"../../modifiers/margin";import{useOverflowModifier}from"../../modifiers/overflow";import{usePaddingModifier}from"../../modifiers/padding";import{usePositionModifier}from"../../modifiers/position";import{useShadowModifier}from"../../modifiers/shadow";import{useSizeModifier}from"../../modifiers/size";import{useStateModifier}from"../../modifiers/state";import{useThemeComponentModifier}from"../../modifiers/themeComponent";import{jsx as _jsx}from"react/jsx-runtime";export function KeyboardAvoidingView(_ref){var children=_ref.children,_ref$keyboardVertical=_ref.keyboardVerticalOffset,keyboardVerticalOffset=_ref$keyboardVertical===void 0?0:_ref$keyboardVertical,rootProps=_objectWithoutProperties(_ref,_excluded);var _useSafeAreaInsets=useSafeAreaInsets(),bottom=_useSafeAreaInsets.bottom;var _pipe=pipe(useThemeComponentModifier('KeyboardAvoidingView'),useFlexWrapperModifier,useDisplayModifier,useCursorModifier,useAnimationModifier,useStateModifier,useSizeModifier,usePositionModifier,useOverflowModifier,usePaddingModifier,useMarginModifier,useFlexModifier,useBackgroundModifier,useBorderModifier,useShadowModifier)([{},rootProps]),_pipe2=_slicedToArray(_pipe,2),_=_pipe2[0],props=_pipe2[1];return _jsx(AbsKeyboardAvoidingView,Object.assign({behavior:Platform.OS==='ios'?'padding':'height',keyboardVerticalOffset:keyboardVerticalOffset+bottom},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/components/structure/TopBar.js";var _excluded=["right","left","WrapperView","children"];import{Text}from"../text";import{View}from"./View";import{useResponsiveConverter}from"../../modifiers/responsiveConverter";import{useSafeAreaInsets}from"../../abstractions/helpers/useSafeAreaInsets";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";export function TopBar(_ref){var right=_ref.right,left=_ref.left,WrapperView=_ref.WrapperView,children=_ref.children,rootProps=_objectWithoutProperties(_ref,_excluded);var _useSafeAreaInsets=useSafeAreaInsets(),safeTop=_useSafeAreaInsets.top;var _useResponsiveConvert=useResponsiveConverter([])([{},rootProps]),_useResponsiveConvert2=_slicedToArray(_useResponsiveConvert,2),_=_useResponsiveConvert2[0],props=_useResponsiveConvert2[1];var _props$useSafeArea=props.useSafeArea,useSafeArea=_props$useSafeArea===void 0?true:_props$useSafeArea,title=props.title,subtitle=props.subtitle;var hasContent=!!title||!!subtitle||!!children||!!right||!!left;WrapperView=WrapperView||View;return _jsx(WrapperView,Object.assign({paddingT:useSafeArea&&safeTop},props,{children:!!hasContent&&_jsxs(View,{minH:"md",centerV:true,row:true,paddingH:"md",paddingV:"sm",gap:"sm",fullW:true,children:[_jsx(View,{flex:1,toLeft:true,children:left}),_jsxs(View,{center:true,flex:3,children:[children||_jsx(Text,{center:true,h6:true,numberOfLines:1,children:title}),subtitle&&_jsx(Text,{center:true,xs:true,numberOfLines:1,children:subtitle})]}),_jsx(View,{flex:1,toRight:true,children:right})]})}));}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{BottomDrawer}from"./web/BottomDrawer";
|
|
1
|
+
export{BottomDrawer}from"./web/BottomDrawer";export{ScrollView as DrawerScrollView}from"../../list/ScrollView";export{FlatList as DrawerFlatList}from"../../list/FlatList";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{BottomDrawer}from"./native/BottomDrawer";export{DrawerScrollView}from"./native/DrawerScrollView";export{DrawerHandle}from"./native/DrawerHandle";export{DrawerProvider,useDrawerContext}from"./native/DrawerContext";
|
|
1
|
+
export{BottomDrawer}from"./native/BottomDrawer";export{DrawerScrollView,DrawerFlatList}from"./native/DrawerScrollView";export{createDrawerScrollComponent}from"./native/createDrawerScrollComponent";export{DrawerHandle}from"./native/DrawerHandle";export{DrawerProvider,useDrawerContext}from"./native/DrawerContext";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{BottomDrawer}from"./native/BottomDrawer";export{DrawerScrollView}from"./native/DrawerScrollView";export{DrawerHandle}from"./native/DrawerHandle";export{DrawerProvider,useDrawerContext}from"./native/DrawerContext";
|
|
1
|
+
export{BottomDrawer}from"./native/BottomDrawer";export{DrawerScrollView,DrawerFlatList}from"./native/DrawerScrollView";export{createDrawerScrollComponent}from"./native/createDrawerScrollComponent";export{DrawerHandle}from"./native/DrawerHandle";export{DrawerProvider,useDrawerContext}from"./native/DrawerContext";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import _toConsumableArray from"@babel/runtime/helpers/toConsumableArray";import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _jsxFileName="/Users/christianstorch/Apps/nekoapps/libs/neko-ui/src/components/structure/bottomDrawer/native/BottomDrawer.js";var _excluded=["children","render","setRender","open","onClose","snapPoints","useSafeArea","enableOverScroll","enableHandlePanningGesture","enableContentPanningGesture","animationConfig","hideHandle","contentProps"],_excluded2=["open"];import{GestureDetector,Gesture,GestureHandlerRootView}from'react-native-gesture-handler';import{Modal,Dimensions,StyleSheet,BackHandler,Platform}from"react-native-web";import{useSafeAreaInsets}from'react-native-safe-area-context';import Animated,{useSharedValue,useAnimatedStyle,withSpring,runOnJS
|
|
1
|
+
import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import _toConsumableArray from"@babel/runtime/helpers/toConsumableArray";import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _jsxFileName="/Users/christianstorch/Apps/nekoapps/libs/neko-ui/src/components/structure/bottomDrawer/native/BottomDrawer.js";var _excluded=["children","render","setRender","open","onClose","snapPoints","useSafeArea","enableOverScroll","enableHandlePanningGesture","enableContentPanningGesture","animationConfig","hideHandle","contentProps"],_excluded2=["open"];import{GestureDetector,Gesture,GestureHandlerRootView}from'react-native-gesture-handler';import{Modal,Dimensions,StyleSheet,BackHandler,Platform}from"react-native-web";import{useSafeAreaInsets}from'react-native-safe-area-context';import Animated,{useSharedValue,useAnimatedStyle,withSpring,runOnJS}from'react-native-reanimated';import React from'react';import{DrawerHandle}from"./DrawerHandle";import{DrawerProvider}from"./DrawerContext";import{Pressable}from"../../../actions/Pressable";import{View}from"../../View";import{normalizeSnapPoints,findClosestSnapPoint}from"./utils";import{useColors}from"../../../../theme/ThemeHandler";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";function InnerContent(_ref){var children=_ref.children,render=_ref.render,setRender=_ref.setRender,open=_ref.open,onClose=_ref.onClose,_ref$snapPoints=_ref.snapPoints,snapPoints=_ref$snapPoints===void 0?['50%']:_ref$snapPoints,_ref$useSafeArea=_ref.useSafeArea,useSafeArea=_ref$useSafeArea===void 0?true:_ref$useSafeArea,_ref$enableOverScroll=_ref.enableOverScroll,enableOverScroll=_ref$enableOverScroll===void 0?true:_ref$enableOverScroll,_ref$enableHandlePann=_ref.enableHandlePanningGesture,enableHandlePanningGesture=_ref$enableHandlePann===void 0?true:_ref$enableHandlePann,_ref$enableContentPan=_ref.enableContentPanningGesture,enableContentPanningGesture=_ref$enableContentPan===void 0?true:_ref$enableContentPan,_ref$animationConfig=_ref.animationConfig,animationConfig=_ref$animationConfig===void 0?{damping:50,stiffness:500,mass:0.3,overshootClamping:true,restDisplacementThreshold:10,restSpeedThreshold:10}:_ref$animationConfig,hideHandle=_ref.hideHandle,contentProps=_ref.contentProps,props=_objectWithoutProperties(_ref,_excluded);var _Dimensions$get=Dimensions.get('window'),SCREEN_HEIGHT=_Dimensions$get.height;var insets=useSafeAreaInsets();var bottomInset=useSafeArea?insets.bottom:0;var colors=useColors();var translateY=useSharedValue(SCREEN_HEIGHT);var snapIndex=useSharedValue(0);var velocityY=useSharedValue(0);var normalizedSnapPoints=React.useMemo(function(){return normalizeSnapPoints(snapPoints,SCREEN_HEIGHT,bottomInset);},[snapPoints,useSafeArea]);var maxSnapPoint=React.useMemo(function(){return Math.max.apply(Math,_toConsumableArray(normalizedSnapPoints));},[normalizedSnapPoints]);var minSnapPoint=React.useMemo(function(){return Math.min.apply(Math,_toConsumableArray(normalizedSnapPoints));},[normalizedSnapPoints]);React.useEffect(function(){if(open){var targetY=SCREEN_HEIGHT-normalizedSnapPoints[0];translateY.value=withSpring(targetY,animationConfig);snapIndex.value=0;}else{translateY.value=withSpring(SCREEN_HEIGHT,animationConfig,function(){runOnJS(setRender)(false);});snapIndex.value=-1;}},[open]);React.useEffect(function(){if(!onClose||!open||Platform.OS!=='android')return;var backHandler=BackHandler.addEventListener('hardwareBackPress',function(){onClose();return true;});return function(){return backHandler.remove();};},[open,onClose]);var handleClose=React.useCallback(function(){onClose==null?void 0:onClose();},[onClose]);if(!onClose)handleClose=false;var snapTo=React.useCallback(function(index){'worklet';var snapPoint=normalizedSnapPoints[index];if(snapPoint!==undefined){translateY.value=withSpring(SCREEN_HEIGHT-snapPoint,animationConfig);snapIndex.value=index;}},[normalizedSnapPoints]);var gestureStartTranslateY=useSharedValue(0);var panRef=React.useRef();var panGesture=React.useMemo(function(){return Gesture.Pan().withRef(panRef).enabled(enableHandlePanningGesture||enableContentPanningGesture).onStart(function(){gestureStartTranslateY.value=translateY.value;}).onUpdate(function(event){var newTranslateY=gestureStartTranslateY.value+event.translationY;var maxPosition=SCREEN_HEIGHT-maxSnapPoint;if(enableOverScroll&&newTranslateY>=maxPosition){translateY.value=newTranslateY;}else{translateY.value=Math.max(maxPosition,Math.min(SCREEN_HEIGHT,newTranslateY));}velocityY.value=event.velocityY;}).onEnd(function(){var currentPosition=SCREEN_HEIGHT-translateY.value;var shouldClose=!!handleClose&&(velocityY.value>1500||velocityY.value>800&¤tPosition<minSnapPoint||currentPosition<minSnapPoint*0.35);if(shouldClose){runOnJS(handleClose)();}else{var closestSnapIndex=findClosestSnapPoint(currentPosition,normalizedSnapPoints,velocityY.value);var targetSnapPoint=normalizedSnapPoints[closestSnapIndex];translateY.value=withSpring(SCREEN_HEIGHT-targetSnapPoint,animationConfig);snapIndex.value=closestSnapIndex;}});},[enableHandlePanningGesture,enableContentPanningGesture,enableOverScroll,maxSnapPoint,minSnapPoint,normalizedSnapPoints,animationConfig,handleClose]);var animatedSheetStyle=useAnimatedStyle(function(){var currentHeight=SCREEN_HEIGHT-translateY.value;return{transform:[{translateY:translateY.value}],maxHeight:currentHeight};});var contextValue=React.useMemo(function(){return{translateY:translateY,snapIndex:snapIndex,maxSnapPoint:maxSnapPoint,snapTo:snapTo,animationConfig:animationConfig,panRef:panRef,normalizedSnapPoints:normalizedSnapPoints,SCREEN_HEIGHT:SCREEN_HEIGHT,minSnapPoint:minSnapPoint,handleClose:handleClose,velocityY:velocityY};},[maxSnapPoint,normalizedSnapPoints,SCREEN_HEIGHT,minSnapPoint,handleClose]);return _jsxs(GestureHandlerRootView,{style:{flex:1},children:[_jsx(Pressable,{absoluteFill:true,bg:"backdrop_op70",onPress:function onPress(){if(!handleClose)return;runOnJS(handleClose)();}}),_jsx(DrawerProvider,{value:contextValue,children:_jsx(GestureDetector,{gesture:panGesture,children:_jsx(Animated.View,{style:[styles.container,{height:SCREEN_HEIGHT},animatedSheetStyle],pointerEvents:"box-none",children:_jsxs(View,Object.assign({flex:true,bg:"overlayBG",shadow:true,paddingB:useSafeArea&&bottomInset,borderRadiusT:"xxxl",marginL:"auto",marginR:"auto",fullW:true},props,{children:[_jsx(DrawerHandle,{hide:hideHandle}),_jsx(View,Object.assign({flex:true},contentProps,{children:children}))]}))})})})]});}var styles=StyleSheet.create({container:{position:'absolute',left:0,right:0,top:0}});export function BottomDrawer(_ref2){var open=_ref2.open,props=_objectWithoutProperties(_ref2,_excluded2);var _React$useState=React.useState(open),_React$useState2=_slicedToArray(_React$useState,2),render=_React$useState2[0],setRender=_React$useState2[1];React.useEffect(function(){if(open){setRender(true);}},[open]);return _jsx(Modal,{visible:render,transparent:true,statusBarTranslucent:true,navigationBarTranslucent:true,animationType:"none",children:_jsx(InnerContent,Object.assign({},props,{open:open,render:render,setRender:setRender}))});}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import
|
|
1
|
+
import{FlatList,ScrollView}from"../../../list";import{createDrawerScrollComponent}from"./createDrawerScrollComponent";export var DrawerScrollView=createDrawerScrollComponent(ScrollView);export var DrawerFlatList=createDrawerScrollComponent(FlatList);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _jsxFileName="/Users/christianstorch/Apps/nekoapps/libs/neko-ui/src/components/structure/bottomDrawer/native/createDrawerScrollComponent.js";var _excluded=["ref","onScroll"];import{Gesture,GestureDetector}from'react-native-gesture-handler';import Animated,{useSharedValue,useAnimatedScrollHandler,useAnimatedRef,scrollTo,withSpring,runOnJS}from'react-native-reanimated';import React from'react';import{findClosestSnapPoint,clamp}from"./utils";import{useDrawerContext}from"./DrawerContext";import{jsx as _jsx}from"react/jsx-runtime";export function createDrawerScrollComponent(Component){var AnimatedComponent=Animated.createAnimatedComponent(Component);function DrawerScrollComponent(_ref){var ref=_ref.ref,_onScroll=_ref.onScroll,props=_objectWithoutProperties(_ref,_excluded);var _useDrawerContext=useDrawerContext(),translateY=_useDrawerContext.translateY,panRef=_useDrawerContext.panRef,normalizedSnapPoints=_useDrawerContext.normalizedSnapPoints,SCREEN_HEIGHT=_useDrawerContext.SCREEN_HEIGHT,maxSnapPoint=_useDrawerContext.maxSnapPoint,minSnapPoint=_useDrawerContext.minSnapPoint,handleClose=_useDrawerContext.handleClose,animationConfig=_useDrawerContext.animationConfig,snapIndex=_useDrawerContext.snapIndex;var scrollRef=useAnimatedRef();var scrollOffset=useSharedValue(0);var prevTranslationY=useSharedValue(0);var drawerMoved=useSharedValue(false);React.useImperativeHandle(ref,function(){return scrollRef.current;});var maxPosition=SCREEN_HEIGHT-maxSnapPoint;var panGesture=React.useMemo(function(){return Gesture.Pan().activeOffsetY([-10,10]).blocksExternalGesture(panRef).onStart(function(){prevTranslationY.value=0;drawerMoved.value=false;}).onUpdate(function(event){var delta=event.translationY-prevTranslationY.value;prevTranslationY.value=event.translationY;var currentY=translateY.value;var atMaxSnap=currentY<=maxPosition+1;var atScrollTop=scrollOffset.value<=0;if(drawerMoved.value){var newY=clamp(currentY+delta,maxPosition,SCREEN_HEIGHT);translateY.value=newY;scrollTo(scrollRef,0,0,false);if(newY<=maxPosition+1&&delta<0){drawerMoved.value=false;}}else if(!atMaxSnap){drawerMoved.value=true;var _newY=clamp(currentY+delta,maxPosition,SCREEN_HEIGHT);translateY.value=_newY;scrollTo(scrollRef,0,0,false);}else if(atScrollTop&&delta>0){drawerMoved.value=true;var _newY2=clamp(currentY+delta,maxPosition,SCREEN_HEIGHT);translateY.value=_newY2;scrollTo(scrollRef,0,0,false);}}).onEnd(function(event){if(!drawerMoved.value)return;var currentPosition=SCREEN_HEIGHT-translateY.value;var velocity=event.velocityY;var shouldClose=!!handleClose&&(velocity>1500||velocity>800&¤tPosition<minSnapPoint||currentPosition<minSnapPoint*0.35);if(shouldClose){runOnJS(handleClose)();}else{var closestSnapIndex=findClosestSnapPoint(currentPosition,normalizedSnapPoints,velocity);var targetSnapPoint=normalizedSnapPoints[closestSnapIndex];translateY.value=withSpring(SCREEN_HEIGHT-targetSnapPoint,animationConfig);snapIndex.value=closestSnapIndex;}});},[panRef,maxPosition,normalizedSnapPoints,minSnapPoint,handleClose,animationConfig]);var nativeGesture=React.useMemo(function(){return Gesture.Native();},[]);var composedGesture=React.useMemo(function(){return Gesture.Simultaneous(panGesture,nativeGesture);},[panGesture,nativeGesture]);var animatedScrollHandler=useAnimatedScrollHandler({onScroll:function onScroll(event){scrollOffset.value=event.contentOffset.y;if(_onScroll){runOnJS(_onScroll)(event);}}});return _jsx(GestureDetector,{gesture:composedGesture,children:_jsx(AnimatedComponent,Object.assign({ref:scrollRef,style:{flex:1},onScroll:animatedScrollHandler,scrollEventThrottle:16,bounces:false,overScrollMode:"never"},props))});}return DrawerScrollComponent;}
|