@neko-os/ui 0.0.8 → 0.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. package/dist/NekoUI.js +1 -1
  2. package/dist/abstractions/ActivityIndicator.native.js +1 -1
  3. package/dist/abstractions/ActivityIndicator.web.js +1 -0
  4. package/dist/abstractions/BlurView.web.js +1 -0
  5. package/dist/abstractions/FlatList.js +1 -0
  6. package/dist/abstractions/FlatList.native.js +1 -0
  7. package/dist/abstractions/FlatList.web.js +1 -0
  8. package/dist/abstractions/ScrollView.web.js +1 -0
  9. package/dist/abstractions/helpers/storage.js +1 -0
  10. package/dist/abstractions/helpers/storage.native.js +1 -0
  11. package/dist/components/actions/Button.js +1 -1
  12. package/dist/components/actions/Dropdown.js +1 -1
  13. package/dist/components/actions/menu/VerticalMenu.js +1 -1
  14. package/dist/components/index.js +1 -1
  15. package/dist/components/layout/Layout.js +1 -1
  16. package/dist/components/list/FlatList.js +1 -0
  17. package/dist/components/list/index.js +1 -1
  18. package/dist/components/state/LoadingView.js +1 -1
  19. package/dist/components/structure/View.js +1 -1
  20. package/dist/components/structure/bottomDrawer/native/BottomDrawer.js +1 -1
  21. package/dist/components/structure/popover/Popover.js +1 -1
  22. package/dist/components/structure/popover/Popover.native.js +1 -1
  23. package/dist/components/theme/ThemePicker.js +1 -0
  24. package/dist/components/theme/ThemePickerDrawer.js +1 -0
  25. package/dist/components/theme/ThemeStatusBar.js +1 -0
  26. package/dist/components/theme/ThemeStatusBar.native.js +1 -0
  27. package/dist/components/theme/ThemeThumb.js +1 -0
  28. package/dist/components/theme/index.js +1 -0
  29. package/dist/helpers/index.js +1 -1
  30. package/dist/helpers/storage.js +1 -0
  31. package/dist/modifiers/fullColor.js +1 -1
  32. package/dist/theme/ThemeHandler.js +1 -1
  33. package/dist/theme/default/base.js +1 -1
  34. package/dist/theme/default/blackTheme.js +1 -1
  35. package/dist/theme/default/cyberpunkTheme.js +1 -1
  36. package/dist/theme/default/darkTheme.js +1 -1
  37. package/dist/theme/default/deepWoodsTheme.js +1 -1
  38. package/dist/theme/default/forestTheme.js +1 -1
  39. package/dist/theme/default/hackerTheme.js +1 -1
  40. package/dist/theme/default/lightTheme.js +1 -1
  41. package/dist/theme/default/midnightTheme.js +1 -1
  42. package/dist/theme/default/msdosTheme.js +1 -1
  43. package/dist/theme/default/oceanTheme.js +1 -1
  44. package/dist/theme/default/paperTheme.js +1 -0
  45. package/dist/theme/default/pastelTheme.js +1 -1
  46. package/dist/theme/default/sunsetTheme.js +1 -1
  47. package/dist/theme/default/themes.js +1 -1
  48. package/dist/theme/format/formatTheme.js +1 -1
  49. package/dist/theme/helpers/contrastColor.js +1 -1
  50. package/package.json +1 -1
  51. package/src/NekoUI.js +13 -1
  52. package/src/abstractions/ActivityIndicator.native.js +3 -4
  53. package/src/abstractions/ActivityIndicator.web.js +43 -0
  54. package/src/abstractions/BlurView.web.js +39 -0
  55. package/src/abstractions/FlatList.js +39 -0
  56. package/src/abstractions/FlatList.native.js +32 -0
  57. package/src/abstractions/FlatList.web.js +3 -0
  58. package/src/abstractions/ScrollView.web.js +3 -0
  59. package/src/abstractions/Text.web.js +15 -0
  60. package/src/abstractions/helpers/storage.js +32 -0
  61. package/src/abstractions/helpers/storage.native.js +34 -0
  62. package/src/components/actions/Button.js +1 -0
  63. package/src/components/actions/Dropdown.js +17 -2
  64. package/src/components/actions/menu/VerticalMenu.js +1 -1
  65. package/src/components/index.js +1 -0
  66. package/src/components/layout/Layout.js +1 -1
  67. package/src/components/list/FlatList.js +54 -0
  68. package/src/components/list/index.js +1 -0
  69. package/src/components/state/LoadingView.js +10 -1
  70. package/src/components/structure/View.js +2 -0
  71. package/src/components/structure/bottomDrawer/native/BottomDrawer.js +15 -2
  72. package/src/components/structure/popover/Popover.js +11 -2
  73. package/src/components/structure/popover/Popover.native.js +3 -2
  74. package/src/components/theme/ThemePicker.js +49 -0
  75. package/src/components/theme/ThemePickerDrawer.js +13 -0
  76. package/src/components/theme/ThemeStatusBar.js +3 -0
  77. package/src/components/theme/ThemeStatusBar.native.js +9 -0
  78. package/src/components/theme/ThemeThumb.js +98 -0
  79. package/src/components/theme/index.js +3 -0
  80. package/src/helpers/index.js +1 -0
  81. package/src/helpers/storage.js +54 -0
  82. package/src/modifiers/fullColor.js +2 -2
  83. package/src/theme/ThemeHandler.js +18 -2
  84. package/src/theme/default/base.js +6 -6
  85. package/src/theme/default/blackTheme.js +4 -1
  86. package/src/theme/default/cyberpunkTheme.js +3 -1
  87. package/src/theme/default/darkTheme.js +3 -1
  88. package/src/theme/default/deepWoodsTheme.js +4 -2
  89. package/src/theme/default/forestTheme.js +3 -1
  90. package/src/theme/default/hackerTheme.js +3 -1
  91. package/src/theme/default/lightTheme.js +3 -1
  92. package/src/theme/default/midnightTheme.js +3 -1
  93. package/src/theme/default/msdosTheme.js +18 -4
  94. package/src/theme/default/oceanTheme.js +4 -2
  95. package/src/theme/default/paperTheme.js +35 -0
  96. package/src/theme/default/pastelTheme.js +3 -1
  97. package/src/theme/default/sunsetTheme.js +5 -3
  98. package/src/theme/default/themes.js +7 -10
  99. package/src/theme/format/formatTheme.js +9 -3
  100. package/src/theme/helpers/contrastColor.js +49 -11
  101. package/dist/abstractions/TouchableOpacity.web.js +0 -1
  102. package/src/abstractions/TouchableOpacity.web.js +0 -3
package/dist/NekoUI.js CHANGED
@@ -1 +1 @@
1
- import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _jsxFileName="/Users/christianstorch/Apps/nekoapps/libs/neko-ui/src/NekoUI.js";var _excluded=["children"];import{ModalsHandler}from"./components/structure/modal/handler/ModalsHandler";import{NotificationsHandler}from"./components/feedback/notifications/NotificationsHandler";import{OverlayHandler}from"./components/structure/overlay/OverlayHandler";import{PortalHandler}from"./components/helpers/PortalHandler";import{ResponsiveHandler}from"./responsive/ResponsiveHandler";import{ThemeHandler}from"./theme/ThemeHandler";import{jsx as _jsx}from"react/jsx-runtime";export function NekoUI(_ref){var children=_ref.children,props=_objectWithoutProperties(_ref,_excluded);return _jsx(ThemeHandler,Object.assign({},props,{children:_jsx(ResponsiveHandler,{children:_jsx(PortalHandler,{children:_jsx(ModalsHandler,{children:_jsx(NotificationsHandler,{children:_jsx(OverlayHandler,{children:children})})})})})}));}
1
+ import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _jsxFileName="/Users/christianstorch/Apps/nekoapps/libs/neko-ui/src/NekoUI.js";var _excluded=["children"];import{ModalsHandler}from"./components/structure/modal/handler/ModalsHandler";import{NotificationsHandler}from"./components/feedback/notifications/NotificationsHandler";import{OverlayHandler}from"./components/structure/overlay/OverlayHandler";import{PortalHandler}from"./components/helpers/PortalHandler";import{ResponsiveHandler}from"./responsive/ResponsiveHandler";import{ThemeHandler}from"./theme/ThemeHandler";import{ThemePickerDrawer}from"./components/theme";import{useThemeHandler}from"./theme";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";export function NekoUI(_ref){var children=_ref.children,props=_objectWithoutProperties(_ref,_excluded);return _jsx(ThemeHandler,Object.assign({},props,{children:_jsx(ResponsiveHandler,{children:_jsx(PortalHandler,{children:_jsx(ModalsHandler,{children:_jsx(NotificationsHandler,{children:_jsxs(OverlayHandler,{children:[children,_jsx(FixedComponents,{})]})})})})})}));}function FixedComponents(){var _useThemeHandler=useThemeHandler(),themePickerOpen=_useThemeHandler.themePickerOpen,setThemePickerOpen=_useThemeHandler.setThemePickerOpen;return _jsx(ThemePickerDrawer,{open:themePickerOpen,onClose:function onClose(){return setThemePickerOpen(false);}});}
@@ -1 +1 @@
1
- var _jsxFileName="/Users/christianstorch/Apps/nekoapps/libs/neko-ui/src/abstractions/ActivityIndicator.native.js";import tinycolor from'tinycolor2';import{Animated,Easing}from"react-native-web";import React from'react';import{jsx as _jsx}from"react/jsx-runtime";export function AbsActivityIndicator(_ref){var _ref$size=_ref.size,size=_ref$size===void 0?20:_ref$size,color=_ref.color,style=_ref.style;var spinValue=React.useRef(new Animated.Value(0)).current;var bg=tinycolor(color).setAlpha(0.2).toString();React.useEffect(function(){var spinAnimation=Animated.loop(Animated.timing(spinValue,{toValue:1,duration:1000,easing:Easing.linear,useNativeDriver:true}));spinAnimation.start();return function(){return spinAnimation.stop();};},[spinValue]);var spin=spinValue.interpolate({inputRange:[0,1],outputRange:['0deg','360deg']});var borderWidth=size/8;console.log(color,bg);return _jsx(Animated.View,{style:Object.assign({width:size,height:size,borderRadius:size/2,borderWidth:borderWidth,borderColor:`${bg}`,borderTopColor:color,transform:[{rotate:spin}]},style)});}
1
+ var _jsxFileName="/Users/christianstorch/Apps/nekoapps/libs/neko-ui/src/abstractions/ActivityIndicator.native.js";import{Animated,Easing,Platform}from"react-native-web";import React from'react';import tinycolor from'tinycolor2';import{jsx as _jsx}from"react/jsx-runtime";export function AbsActivityIndicator(_ref){var _ref$size=_ref.size,size=_ref$size===void 0?20:_ref$size,color=_ref.color,style=_ref.style;var spinValue=React.useRef(new Animated.Value(0)).current;var bg=tinycolor(color).setAlpha(0.2).toString();React.useEffect(function(){var spinAnimation=Animated.loop(Animated.timing(spinValue,{toValue:1,duration:1000,easing:Easing.linear,useNativeDriver:Platform.OS!=='web'}));spinAnimation.start();return function(){return spinAnimation.stop();};},[spinValue]);var spin=spinValue.interpolate({inputRange:[0,1],outputRange:['0deg','360deg']});var borderWidth=size/8;return _jsx(Animated.View,{style:Object.assign({width:size,height:size,borderRadius:size/2,borderWidth:borderWidth,borderColor:`${bg}`,borderTopColor:color,transform:[{rotate:spin}]},style)});}
@@ -0,0 +1 @@
1
+ var _jsxFileName="/Users/christianstorch/Apps/nekoapps/libs/neko-ui/src/abstractions/ActivityIndicator.web.js";import tinycolor from'tinycolor2';import{Animated,Easing}from"react-native-web";import React from'react';import{jsx as _jsx}from"react/jsx-runtime";export function AbsActivityIndicator(_ref){var _ref$size=_ref.size,size=_ref$size===void 0?20:_ref$size,color=_ref.color,style=_ref.style;var spinValue=React.useRef(new Animated.Value(0)).current;var bg=tinycolor(color).setAlpha(0.2).toString();React.useEffect(function(){var spinAnimation=Animated.loop(Animated.timing(spinValue,{toValue:1,duration:1000,easing:Easing.linear,useNativeDriver:false}));spinAnimation.start();return function(){return spinAnimation.stop();};},[spinValue]);var spin=spinValue.interpolate({inputRange:[0,1],outputRange:['0deg','360deg']});var borderWidth=size/8;return _jsx(Animated.View,{style:Object.assign({width:size,height:size,borderRadius:size/2,borderWidth:borderWidth,borderColor:`${bg}`,borderTopColor:color,transform:[{rotate:spin}]},style)});}
@@ -0,0 +1 @@
1
+ import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["intensity","tint","disabledForAndroid","style","children"];var _this=this,_jsxFileName="/Users/christianstorch/Apps/nekoapps/libs/neko-ui/src/abstractions/BlurView.web.js";import{AbsView}from"./View";import{jsx as _jsx}from"react/jsx-runtime";var AbsBlurView;try{var _ref=require('expo-blur')||{},BlurView=_ref.BlurView;AbsBlurView=function AbsBlurView(_ref2){var intensity=_ref2.intensity,tint=_ref2.tint,disabledForAndroid=_ref2.disabledForAndroid,style=_ref2.style,children=_ref2.children,props=_objectWithoutProperties(_ref2,_excluded);return _jsx(BlurView,{intensity:intensity,tint:tint,style:[style,{overflow:'hidden'}],experimentalBlurMethod:disabledForAndroid?'none':'dimezisBlurView',children:children});};}catch(_unused){AbsBlurView=function AbsBlurView(props){console.warn('expo-blur not instaled.');return _jsx(AbsView,Object.assign({},props));};}export{AbsBlurView};
@@ -0,0 +1 @@
1
+ import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _jsxFileName="/Users/christianstorch/Apps/nekoapps/libs/neko-ui/src/abstractions/FlatList.js";var _excluded=["data","renderItem","ListEmptyComponent","Empty","renderEmpty","ListFooterComponent","Footer","renderFooter","ListHeaderComponent","Header","renderHeader","keyExtractor"];import React from'react';import{AbsView}from"./View";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";var defaultRender=function defaultRender(){return false;};export function AbsFlatList(_ref){var _this=this;var data=_ref.data,renderItem=_ref.renderItem,ListEmptyComponent=_ref.ListEmptyComponent,Empty=_ref.Empty,renderEmpty=_ref.renderEmpty,ListFooterComponent=_ref.ListFooterComponent,Footer=_ref.Footer,renderFooter=_ref.renderFooter,ListHeaderComponent=_ref.ListHeaderComponent,Header=_ref.Header,renderHeader=_ref.renderHeader,keyExtractor=_ref.keyExtractor,props=_objectWithoutProperties(_ref,_excluded);ListEmptyComponent=ListEmptyComponent||Empty||defaultRender;ListFooterComponent=ListFooterComponent||Footer||renderFooter||defaultRender;ListHeaderComponent=ListHeaderComponent||Header||renderHeader||defaultRender;keyExtractor=keyExtractor||function(item,index){return index;};renderItem=renderItem||defaultRender;return _jsxs(AbsView,Object.assign({},props,{children:[_jsx(ListHeaderComponent,{}),!(data!=null&&data.length)&&_jsx(ListEmptyComponent,{}),data==null?void 0:data.map==null?void 0:data.map(function(item,index){return _jsx(React.Fragment,{children:renderItem({item:item,index:index})},keyExtractor(item,index));}),_jsx(ListFooterComponent,{})]}));}
@@ -0,0 +1 @@
1
+ import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["height","width"],_excluded2=["style","ListEmptyComponent","Empty","renderEmpty","ListFooterComponent","Footer","renderFooter","ListHeaderComponent","Header","renderHeader"];var _this=this,_jsxFileName="/Users/christianstorch/Apps/nekoapps/libs/neko-ui/src/abstractions/FlatList.native.js";import{FlatList}from"react-native-web";import{jsx as _jsx}from"react/jsx-runtime";export var AbsFlatList=function AbsFlatList(_ref){var _ref$style=_ref.style,height=_ref$style.height,width=_ref$style.width,style=_objectWithoutProperties(_ref$style,_excluded),ListEmptyComponent=_ref.ListEmptyComponent,Empty=_ref.Empty,renderEmpty=_ref.renderEmpty,ListFooterComponent=_ref.ListFooterComponent,Footer=_ref.Footer,renderFooter=_ref.renderFooter,ListHeaderComponent=_ref.ListHeaderComponent,Header=_ref.Header,renderHeader=_ref.renderHeader,props=_objectWithoutProperties(_ref,_excluded2);ListEmptyComponent=ListEmptyComponent||Empty||defaultRender;ListFooterComponent=ListFooterComponent||Footer||renderFooter||defaultRender;ListHeaderComponent=ListHeaderComponent||Header||renderHeader||defaultRender;return _jsx(FlatList,Object.assign({height:height,width:width},props,{ListEmptyComponent:ListEmptyComponent,ListFooterComponent:ListFooterComponent,ListHeaderComponent:ListHeaderComponent,contentContainerStyle:style}));};
@@ -0,0 +1 @@
1
+ import{AbsFlatList as NativeFlatList}from"./FlatList.native";export var AbsFlatList=NativeFlatList;
@@ -0,0 +1 @@
1
+ import{AbsScrollView as NativeAbsScrollView}from"./ScrollView.native";export var AbsScrollView=NativeAbsScrollView;
@@ -0,0 +1 @@
1
+ function set(key,value){return localStorage.setItem(key,value);}function setAsync(key,value){return Promise.resulve(set(key,value));}function get(key){return localStorage.getItem(key);}function getAsync(key){return Promise.resulve(get(key));}function remove(key){return localStorage.removeItem(key);}function removeAsync(key){return Promise.resulve(remove(key));}export var AbsStorage={set:set,setAsync:setAsync,get:get,getAsync:getAsync,remove:remove,removeAsync:removeAsync};
@@ -0,0 +1 @@
1
+ var set=function set(){return console.warn('expo-sqlite not installed. Neko Storage needs expo-sqlite to work properly');};var setAsync=function setAsync(){return Promise.resolve(set());};var get=function get(){return console.warn('expo-sqlite not installed. Neko Storage needs expo-sqlite to work properly');};var getAsync=function getAsync(){return Promise.resolve(get());};var remove=function remove(){return console.warn('expo-sqlite not installed. Neko Storage needs expo-sqlite to work properly');};var removeAsync=function removeAsync(){return Promise.resolve(remove());};try{var StorageModule=require('expo-sqlite/kv-store');if(StorageModule!=null&&StorageModule.default){var Storage=StorageModule.default;set=Storage.setItemSync.bind(Storage);setAsync=Storage.setItem.bind(Storage);get=Storage.getItemSync.bind(Storage);getAsync=Storage.getItem.bind(Storage);remove=Storage.removeItemSync.bind(Storage);removeAsync=Storage.removeItem.bind(Storage);}}catch(e){console.log('expo-sqlite not available:',e);}export var AbsStorage={set:set,setAsync:setAsync,get:get,getAsync:getAsync,remove:remove,removeAsync:removeAsync};
@@ -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=["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,hover:{opacity:0.7}};};export function Button(rootProps){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,_excluded);return _jsx(AbsTouchableOpacity,Object.assign({className:"neko-button neko-wave-click-effect",type:"button"},props,{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=["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(rootProps){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,_excluded);return _jsx(AbsTouchableOpacity,Object.assign({className:"neko-button neko-wave-click-effect",type:"button"},props,{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 +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/actions/Dropdown.js";var _excluded=["items"],_excluded2=["onChange","label","trigger","icon","strong","color","popoverProps","iconLabelProps","children"];import{pipe}from'ramda';import{IconLabel}from"../presentation/IconLabel";import{Link}from"./Link";import{Menu}from"./menu/Menu";import{Popover}from"../structure/popover/Popover";import{View}from"../structure/View";import{useThemeComponentModifier}from"../../modifiers/themeComponent";import{jsx as _jsx}from"react/jsx-runtime";export function Dropdown(_ref){var _this=this;var items=_ref.items,rootProps=_objectWithoutProperties(_ref,_excluded);var _pipe=pipe(useThemeComponentModifier('Dropdown'))([{},rootProps]),_pipe2=_slicedToArray(_pipe,2),_=_pipe2[0],formattedProps=_pipe2[1];var onChange=formattedProps.onChange,label=formattedProps.label,_formattedProps$trigg=formattedProps.trigger,trigger=_formattedProps$trigg===void 0?'click':_formattedProps$trigg,icon=formattedProps.icon,strong=formattedProps.strong,color=formattedProps.color,popoverProps=formattedProps.popoverProps,iconLabelProps=formattedProps.iconLabelProps,children=formattedProps.children,props=_objectWithoutProperties(formattedProps,_excluded2);return _jsx(View,Object.assign({className:"neko-dropdown"},props,{children:_jsx(Popover,Object.assign({useParentMinWidth:true,placement:"bottomLeft",trigger:trigger,padding:"xs",useBottomDrawer:{native:true,sm:true,md:true}},popoverProps,{renderContent:function renderContent(_ref2){var onClose=_ref2.onClose;var handleChange=function handleChange(){if(onChange)onChange.apply(void 0,arguments);onClose();};return _jsx(Menu,{vertical:true,items:items,onChange:handleChange,linkPaddingH:"xs"});},children:children||_jsx(Link,{children:_jsx(IconLabel,Object.assign({label:label||'---',icon:icon||'arrow-down-s-fill',strong:strong,color:color,invert:true},iconLabelProps))})}))}));}
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/actions/Dropdown.js";var _excluded=["items"],_excluded2=["onChange","label","trigger","icon","strong","color","popoverProps","iconLabelProps","children","placement","gap"];import{pipe}from'ramda';import{IconLabel}from"../presentation/IconLabel";import{Link}from"./Link";import{Menu}from"./menu/Menu";import{Popover}from"../structure/popover/Popover";import{View}from"../structure/View";import{useThemeComponentModifier}from"../../modifiers/themeComponent";import{jsx as _jsx}from"react/jsx-runtime";export function Dropdown(_ref){var _this=this;var items=_ref.items,rootProps=_objectWithoutProperties(_ref,_excluded);var _pipe=pipe(useThemeComponentModifier('Dropdown'))([{},rootProps]),_pipe2=_slicedToArray(_pipe,2),_=_pipe2[0],formattedProps=_pipe2[1];var onChange=formattedProps.onChange,label=formattedProps.label,_formattedProps$trigg=formattedProps.trigger,trigger=_formattedProps$trigg===void 0?'click':_formattedProps$trigg,icon=formattedProps.icon,strong=formattedProps.strong,color=formattedProps.color,popoverProps=formattedProps.popoverProps,iconLabelProps=formattedProps.iconLabelProps,children=formattedProps.children,placement=formattedProps.placement,gap=formattedProps.gap,props=_objectWithoutProperties(formattedProps,_excluded2);return _jsx(View,Object.assign({className:"neko-dropdown"},props,{children:_jsx(Popover,Object.assign({useParentMinWidth:true,placement:placement||'bottomLeft',trigger:trigger,padding:"xs",useBottomDrawer:{native:true,sm:true,md:true},bottomDrawerProps:{bg:'mainBG',contentProps:{bg:'overlayBG',br:'lg',margin:'md'}}},popoverProps,{renderContent:function renderContent(_ref2){var onClose=_ref2.onClose;var handleChange=function handleChange(){if(onChange)onChange.apply(void 0,arguments);onClose();};return _jsx(Menu,{vertical:true,items:items,onChange:handleChange,_linkPaddingV:"lg",_linkProps:{borderB:true,padding:'lg',borderL:0,brColor:'divider'}});},children:children||_jsx(Link,{children:_jsx(IconLabel,Object.assign({label:label||'---',icon:icon||'arrow-down-s-fill',strong:strong,color:color,invert:true,gap:gap},iconLabelProps))})}))}));}
@@ -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/actions/menu/VerticalMenu.js";var _excluded=["item","linkPaddingH","linkPaddingV","handlePress","linkProps","activeIndex","activeKey","activeColor","color","sizeCode","index"],_excluded2=["active","key"],_excluded3=["item"],_excluded4=["gap","items","onChange","onChangeIndex"];import{omit,pipe}from'ramda';import React from'react';import tinycolor from'tinycolor2';import{Divider}from"../../helpers/Separator";import{IconText}from"../../presentation/IconLabel";import{Link}from"../Link";import{SubmenuWrapper}from"./SubmenuWrapper";import{Text}from"../../text/Text";import{View}from"../../structure/View";import{useColorConverter}from"../../../modifiers/colorConverter";import{useSizeConverter}from"../../../modifiers/sizeConverter";import{useThemeComponentModifier}from"../../../modifiers/themeComponent";import{jsx as _jsx,Fragment as _Fragment,jsxs as _jsxs}from"react/jsx-runtime";function LinkItem(_ref){var item=_ref.item,_ref$linkPaddingH=_ref.linkPaddingH,linkPaddingH=_ref$linkPaddingH===void 0?'md':_ref$linkPaddingH,_ref$linkPaddingV=_ref.linkPaddingV,linkPaddingV=_ref$linkPaddingV===void 0?'sm':_ref$linkPaddingV,handlePress=_ref.handlePress,linkProps=_ref.linkProps,activeIndex=_ref.activeIndex,activeKey=_ref.activeKey,_ref$activeColor=_ref.activeColor,activeColor=_ref$activeColor===void 0?'primary':_ref$activeColor,color=_ref.color,sizeCode=_ref.sizeCode,index=_ref.index,props=_objectWithoutProperties(_ref,_excluded);activeColor=activeColor||'primary';var _omit=omit(['onClick','onPress'],item),active=_omit.active,key=_omit.key,childProps=_objectWithoutProperties(_omit,_excluded2);if(!active&&activeIndex>=0)active=activeIndex===index;if(!active&&activeKey!==undefined)active=activeKey===item.key;var bg=active&&tinycolor(color).setAlpha(0.03).toString();return _jsx(SubmenuWrapper,{item:item,onChange:handlePress,activeKey:activeKey,color:color,children:_jsx(Link,Object.assign({fullW:true,center:true,paddingH:linkPaddingH,paddingV:linkPaddingV,marginR:3,borderL:3,marginV:-4,borderColor:active?activeColor:'transparent',bg:bg,transition:"border-color 0.5s ease, background 0.3s ease",hover:{br:0}},linkProps,{onPress:function onPress(){return handlePress(item,index);},children:_jsx(IconText,Object.assign({addingV:active&&4,color:active?activeColor:color,fullW:true,size:sizeCode},childProps))}))});}function DividerItem(_ref2){var _ref2$linkPaddingH=_ref2.linkPaddingH,linkPaddingH=_ref2$linkPaddingH===void 0?'md':_ref2$linkPaddingH,item=_ref2.item;var content=_jsx(Divider,Object.assign({height:"xxs",line:true},item));if(!item.label)return content;return _jsxs(_Fragment,{children:[content,_jsx(Text,Object.assign({size:"xs",color:"text4",paddingH:linkPaddingH||'md',strong:true},item))]});}function Item(_ref3){var item=_ref3.item,props=_objectWithoutProperties(_ref3,_excluded3);if(item.type==='divider')return _jsx(DividerItem,Object.assign({item:item},props));return _jsx(LinkItem,Object.assign({item:item},props));}export function VerticalMenu(rootProps){var _this=this;var _pipe=pipe(useColorConverter('text'),useSizeConverter('icons','md'),useThemeComponentModifier('VerticalMenu'))([{},rootProps]),_pipe2=_slicedToArray(_pipe,2),_pipe2$=_pipe2[0],sizeCode=_pipe2$.sizeCode,color=_pipe2$.color,formattedProps=_pipe2[1];var _formattedProps$gap=formattedProps.gap,gap=_formattedProps$gap===void 0?'sm':_formattedProps$gap,items=formattedProps.items,onChange=formattedProps.onChange,onChangeIndex=formattedProps.onChangeIndex,props=_objectWithoutProperties(formattedProps,_excluded4);var handlePress=React.useCallback(function(item,index){if(!!onChange)onChange(item,index);if(!!onChangeIndex)onChangeIndex(index);if(!!item.onPress)item.onPress();if(!!item.onClick)item.onClick();},[onChange,onChangeIndex]);return _jsx(View,Object.assign({className:"neko-vertical-menu",gap:gap,width:"100%"},props,{children:items.map(function(item,index){return _jsx(Item,Object.assign({item:item,handlePress:handlePress,color:color,sizeCode:sizeCode,index:index},props),item.key||index);})}));}
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/actions/menu/VerticalMenu.js";var _excluded=["item","linkPaddingH","linkPaddingV","handlePress","linkProps","activeIndex","activeKey","activeColor","color","sizeCode","index"],_excluded2=["active","key"],_excluded3=["item"],_excluded4=["gap","items","onChange","onChangeIndex"];import{omit,pipe}from'ramda';import React from'react';import tinycolor from'tinycolor2';import{Divider}from"../../helpers/Separator";import{IconText}from"../../presentation/IconLabel";import{Link}from"../Link";import{SubmenuWrapper}from"./SubmenuWrapper";import{Text}from"../../text/Text";import{View}from"../../structure/View";import{useColorConverter}from"../../../modifiers/colorConverter";import{useSizeConverter}from"../../../modifiers/sizeConverter";import{useThemeComponentModifier}from"../../../modifiers/themeComponent";import{jsx as _jsx,Fragment as _Fragment,jsxs as _jsxs}from"react/jsx-runtime";function LinkItem(_ref){var item=_ref.item,_ref$linkPaddingH=_ref.linkPaddingH,linkPaddingH=_ref$linkPaddingH===void 0?'md':_ref$linkPaddingH,_ref$linkPaddingV=_ref.linkPaddingV,linkPaddingV=_ref$linkPaddingV===void 0?'sm':_ref$linkPaddingV,handlePress=_ref.handlePress,linkProps=_ref.linkProps,activeIndex=_ref.activeIndex,activeKey=_ref.activeKey,_ref$activeColor=_ref.activeColor,activeColor=_ref$activeColor===void 0?'primary':_ref$activeColor,color=_ref.color,sizeCode=_ref.sizeCode,index=_ref.index,props=_objectWithoutProperties(_ref,_excluded);activeColor=activeColor||'primary';var _omit=omit(['onClick','onPress'],item),active=_omit.active,key=_omit.key,childProps=_objectWithoutProperties(_omit,_excluded2);if(!active&&activeIndex>=0)active=activeIndex===index;if(!active&&activeKey!==undefined)active=activeKey===item.key;var bg=active&&tinycolor(color).setAlpha(0.03).toString();return _jsx(SubmenuWrapper,{item:item,onChange:handlePress,activeKey:activeKey,color:color,children:_jsx(Link,Object.assign({fullW:true,center:true,paddingH:linkPaddingH,paddingV:linkPaddingV,marginR:3,borderL:3,marginV:-4,brColor:active?activeColor:'transparent',bg:bg,transition:"border-color 0.5s ease, background 0.3s ease",hover:{br:0}},linkProps,{onPress:function onPress(){return handlePress(item,index);},children:_jsx(IconText,Object.assign({addingV:active&&4,color:active?activeColor:color,fullW:true,size:sizeCode},childProps))}))});}function DividerItem(_ref2){var _ref2$linkPaddingH=_ref2.linkPaddingH,linkPaddingH=_ref2$linkPaddingH===void 0?'md':_ref2$linkPaddingH,item=_ref2.item;var content=_jsx(Divider,Object.assign({height:"xxs",line:true},item));if(!item.label)return content;return _jsxs(_Fragment,{children:[content,_jsx(Text,Object.assign({size:"xs",color:"text4",paddingH:linkPaddingH||'md',strong:true},item))]});}function Item(_ref3){var item=_ref3.item,props=_objectWithoutProperties(_ref3,_excluded3);if(item.type==='divider')return _jsx(DividerItem,Object.assign({item:item},props));return _jsx(LinkItem,Object.assign({item:item},props));}export function VerticalMenu(rootProps){var _this=this;var _pipe=pipe(useColorConverter('text'),useSizeConverter('icons','md'),useThemeComponentModifier('VerticalMenu'))([{},rootProps]),_pipe2=_slicedToArray(_pipe,2),_pipe2$=_pipe2[0],sizeCode=_pipe2$.sizeCode,color=_pipe2$.color,formattedProps=_pipe2[1];var _formattedProps$gap=formattedProps.gap,gap=_formattedProps$gap===void 0?'sm':_formattedProps$gap,items=formattedProps.items,onChange=formattedProps.onChange,onChangeIndex=formattedProps.onChangeIndex,props=_objectWithoutProperties(formattedProps,_excluded4);var handlePress=React.useCallback(function(item,index){if(!!onChange)onChange(item,index);if(!!onChangeIndex)onChangeIndex(index);if(!!item.onPress)item.onPress();if(!!item.onClick)item.onClick();},[onChange,onChangeIndex]);return _jsx(View,Object.assign({className:"neko-vertical-menu",gap:gap,width:"100%"},props,{children:items.map(function(item,index){return _jsx(Item,Object.assign({item:item,handlePress:handlePress,color:color,sizeCode:sizeCode,index:index},props),item.key||index);})}));}
@@ -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";
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"./theme";
@@ -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/layout/Layout.js";var _excluded=["children"];import React from'react';import{View}from"../structure/View";import{getElementSize}from"../../abstractions/helpers/componentSize";import{jsx as _jsx}from"react/jsx-runtime";var LayoutContext=React.createContext({});export var useLayout=function useLayout(){return React.useContext(LayoutContext)||{};};export function Layout(_ref){var children=_ref.children,rootProps=_objectWithoutProperties(_ref,_excluded);var _React$useState=React.useState(0),_React$useState2=_slicedToArray(_React$useState,2),layoutHeaderSpace=_React$useState2[0],setLayoutHeaderSpace=_React$useState2[1];var _React$useState3=React.useState(0),_React$useState4=_slicedToArray(_React$useState3,2),layoutSiderSpace=_React$useState4[0],setLayoutSiderSpace=_React$useState4[1];var registerHeader=function registerHeader(space){return setLayoutHeaderSpace(function(v){return v+space;});};var unregisterHeader=function unregisterHeader(space){return setLayoutHeaderSpace(function(v){return v-space;});};var _React$useState5=React.useState({}),_React$useState6=_slicedToArray(_React$useState5,2),layoutSize=_React$useState6[0],setLayoutSize=_React$useState6[1];var layoutRef=React.useRef(null);React.useLayoutEffect(function(){getElementSize(layoutRef,setLayoutSize);},[]);var value={layoutSize:layoutSize,layoutHeaderSpace:layoutHeaderSpace,setLayoutHeaderSpace:setLayoutHeaderSpace,layoutSiderSpace:layoutSiderSpace,layoutSiderSpace:layoutSiderSpace,registerHeader:registerHeader,unregisterHeader:unregisterHeader};return _jsx(LayoutContext.Provider,{value:value,children:_jsx(View,Object.assign({className:"neko-layout",bg:"bg",flex:true,relative:true},rootProps,{ref:layoutRef,children:children}))});}
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/layout/Layout.js";var _excluded=["children"];import React from'react';import{View}from"../structure/View";import{getElementSize}from"../../abstractions/helpers/componentSize";import{jsx as _jsx}from"react/jsx-runtime";var LayoutContext=React.createContext({});export var useLayout=function useLayout(){return React.useContext(LayoutContext)||{};};export function Layout(_ref){var children=_ref.children,rootProps=_objectWithoutProperties(_ref,_excluded);var _React$useState=React.useState(0),_React$useState2=_slicedToArray(_React$useState,2),layoutHeaderSpace=_React$useState2[0],setLayoutHeaderSpace=_React$useState2[1];var _React$useState3=React.useState(0),_React$useState4=_slicedToArray(_React$useState3,2),layoutSiderSpace=_React$useState4[0],setLayoutSiderSpace=_React$useState4[1];var registerHeader=function registerHeader(space){return setLayoutHeaderSpace(function(v){return v+space;});};var unregisterHeader=function unregisterHeader(space){return setLayoutHeaderSpace(function(v){return v-space;});};var _React$useState5=React.useState({}),_React$useState6=_slicedToArray(_React$useState5,2),layoutSize=_React$useState6[0],setLayoutSize=_React$useState6[1];var layoutRef=React.useRef(null);React.useLayoutEffect(function(){getElementSize(layoutRef,setLayoutSize);},[]);var value={layoutSize:layoutSize,layoutHeaderSpace:layoutHeaderSpace,setLayoutHeaderSpace:setLayoutHeaderSpace,layoutSiderSpace:layoutSiderSpace,layoutSiderSpace:layoutSiderSpace,registerHeader:registerHeader,unregisterHeader:unregisterHeader};return _jsx(LayoutContext.Provider,{value:value,children:_jsx(View,Object.assign({className:"neko-layout",bg:"mainBG",flex:true,relative:true},rootProps,{ref:layoutRef,children:children}))});}
@@ -0,0 +1 @@
1
+ import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";import _defineProperty from"@babel/runtime/helpers/defineProperty";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";var _jsxFileName="/Users/christianstorch/Apps/nekoapps/libs/neko-ui/src/components/list/FlatList.js";var _excluded=["children"];import{pipe}from'ramda';import{AbsFlatList}from"../../abstractions/FlatList";import{useAnimationModifier}from"../../modifiers/animation";import{useBackgroundModifier}from"../../modifiers/background";import{useBorderModifier}from"../../modifiers/border";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(_ref){var _ref2=_slicedToArray(_ref,2),_=_ref2[0],horizontal=_ref2[1].horizontal;var overflowKey=horizontal?'scrollX':'scrollY';return _defineProperty(_defineProperty({},overflowKey,true),"row",!!horizontal);};export function FlatList(_ref4){var children=_ref4.children,rootProps=_objectWithoutProperties(_ref4,_excluded);var _pipe=pipe(useThemeComponentModifier('FlatList'),useDefaultModifier(DEFAULT_PROPS),useFlexWrapperModifier,useDisplayModifier,useAnimationModifier,useStateModifier,useSizeModifier,usePositionModifier,useOverflowModifier,usePaddingModifier,useMarginModifier,useFlexModifier,useBackgroundModifier,useBorderModifier,useShadowModifier)([{},rootProps]),_pipe2=_slicedToArray(_pipe,2),_=_pipe2[0],props=_pipe2[1];return _jsx(AbsFlatList,Object.assign({className:"neko-flat-list"},props,{children:children}));}
@@ -1 +1 @@
1
- export*from"./ScrollView";
1
+ export*from"./ScrollView";export*from"./FlatList";
@@ -1 +1 @@
1
- import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _jsxFileName="/Users/christianstorch/Apps/nekoapps/libs/neko-ui/src/components/state/LoadingView.js";var _excluded=["active","children","size","color","replaceChildren","noWrapper"];import{Loading}from"./Loading";import{View}from"../structure/View";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";export function LoadingView(_ref){var active=_ref.active,children=_ref.children,size=_ref.size,color=_ref.color,replaceChildren=_ref.replaceChildren,noWrapper=_ref.noWrapper,props=_objectWithoutProperties(_ref,_excluded);if(!active&&!!noWrapper)return children;if(!active)return _jsx(View,Object.assign({},props,{children:children}));var loader=_jsx(Loading,{size:size,color:color});if(!!replaceChildren&&!!noWrapper)return loader;if(!!replaceChildren){return _jsx(View,Object.assign({},props,{center:true,children:loader}));}return _jsxs(View,Object.assign({className:"neko-loading-view",relative:true},props,{children:[children,_jsx(View,{className:"neko-laoding-view-overlay",bg:"bg_op90",absolute:true,top:0,left:0,right:0,bottom:0,center:true,children:loader})]}));}export var LoadingWrapper=LoadingView;
1
+ import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _jsxFileName="/Users/christianstorch/Apps/nekoapps/libs/neko-ui/src/components/state/LoadingView.js";var _excluded=["active","children","size","color","replaceChildren","noWrapper"];import{Loading}from"./Loading";import{View}from"../structure/View";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";export function LoadingView(_ref){var active=_ref.active,children=_ref.children,size=_ref.size,color=_ref.color,replaceChildren=_ref.replaceChildren,noWrapper=_ref.noWrapper,props=_objectWithoutProperties(_ref,_excluded);if(!active&&!!noWrapper)return children;if(!active)return _jsx(View,Object.assign({},props,{children:children}));var loader=_jsx(Loading,{size:size,color:color});if(!!replaceChildren&&!!noWrapper)return loader;if(!!replaceChildren){return _jsx(View,Object.assign({},props,{center:true,children:loader}));}return _jsxs(View,Object.assign({className:"neko-loading-view",relative:true},props,{children:[children,_jsx(View,{className:"neko-laoding-view-overlay",bg:"mainBG_op90",absolute:true,top:0,left:0,right:0,bottom:0,center:true,children:loader})]}));}export var LoadingWrapper=LoadingView;
@@ -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/structure/View.js";var _excluded=["children"];import{pipe}from'ramda';import{AbsView}from"../../abstractions/View";import{useAnimationModifier}from"../../modifiers/animation";import{useBackgroundModifier}from"../../modifiers/background";import{useBorderModifier}from"../../modifiers/border";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 View(_ref){var children=_ref.children,rootProps=_objectWithoutProperties(_ref,_excluded);var _pipe=pipe(useThemeComponentModifier('View'),useFlexWrapperModifier,useDisplayModifier,useAnimationModifier,useStateModifier,useSizeModifier,usePositionModifier,useOverflowModifier,usePaddingModifier,useMarginModifier,useFlexModifier,useBackgroundModifier,useBorderModifier,useShadowModifier)([{},rootProps]),_pipe2=_slicedToArray(_pipe,2),_=_pipe2[0],props=_pipe2[1];return _jsx(AbsView,Object.assign({className:"neko-view"},props,{children:children}));}
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/View.js";var _excluded=["children"];import{pipe}from'ramda';import{AbsView}from"../../abstractions/View";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 View(_ref){var children=_ref.children,rootProps=_objectWithoutProperties(_ref,_excluded);var _pipe=pipe(useThemeComponentModifier('View'),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(AbsView,Object.assign({className:"neko-view"},props,{children:children}));}
@@ -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,useAnimatedReaction}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 scrollOffset=useSharedValue(0);var scrollEnabled=useSharedValue(false);var isScrolling=useSharedValue(false);var snapIndex=useSharedValue(0);var velocityY=useSharedValue(0);var normalizedSnapPoints=React.useMemo(function(){return normalizeSnapPoints(snapPoints,SCREEN_HEIGHT);},[snapPoints]);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(){scrollOffset.value=0;scrollEnabled.value=false;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]);useAnimatedReaction(function(){return translateY.value;},function(currentY){var atMaxSnapPoint=currentY<=SCREEN_HEIGHT-maxSnapPoint;scrollEnabled.value=atMaxSnapPoint;},[]);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 panGesture=React.useMemo(function(){return Gesture.Pan().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>2000&&currentPosition<minSnapPoint*0.75||currentPosition<minSnapPoint*0.25);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,scrollOffset:scrollOffset,scrollEnabled:scrollEnabled,isScrolling:isScrolling,snapIndex:snapIndex,maxSnapPoint:maxSnapPoint,snapTo:snapTo,animationConfig:animationConfig};},[maxSnapPoint]);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],children:_jsxs(View,Object.assign({flex:true,bg:"overlayBG",shadow:true,paddingB:useSafeArea&&bottomInset,borderRadiusT:"xxxl"},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
+ 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,useAnimatedReaction}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 scrollOffset=useSharedValue(0);var scrollEnabled=useSharedValue(false);var isScrolling=useSharedValue(false);var snapIndex=useSharedValue(0);var velocityY=useSharedValue(0);var normalizedSnapPoints=React.useMemo(function(){return normalizeSnapPoints(snapPoints,SCREEN_HEIGHT);},[snapPoints]);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(){scrollOffset.value=0;scrollEnabled.value=false;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]);useAnimatedReaction(function(){return translateY.value;},function(currentY){var atMaxSnapPoint=currentY<=SCREEN_HEIGHT-maxSnapPoint;scrollEnabled.value=atMaxSnapPoint;},[]);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 panGesture=React.useMemo(function(){return Gesture.Pan().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>2000&&currentPosition<minSnapPoint*0.75||currentPosition<minSnapPoint*0.25);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,scrollOffset:scrollOffset,scrollEnabled:scrollEnabled,isScrolling:isScrolling,snapIndex:snapIndex,maxSnapPoint:maxSnapPoint,snapTo:snapTo,animationConfig:animationConfig};},[maxSnapPoint]);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 _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/popover/Popover.js";var _excluded=["renderContent","content","trigger","placement","unmountOnClose","children","parentWidth","parentMinWidth","useBottomDrawer"],_excluded2=["children","content","renderContent","snapPoints"];import React from'react';import{BottomDrawer}from"../bottomDrawer";import{PopoverContent}from"./PopoverContent";import{useRegisterOverlay}from"../overlay/OverlayHandler";import{useResponsiveValue}from"../../../responsive";import{jsx as _jsx,Fragment as _Fragment,jsxs as _jsxs}from"react/jsx-runtime";export function Popover(_ref){var _this=this;var renderContent=_ref.renderContent,content=_ref.content,_ref$trigger=_ref.trigger,trigger=_ref$trigger===void 0?'hover':_ref$trigger,_ref$placement=_ref.placement,placement=_ref$placement===void 0?'bottom':_ref$placement,unmountOnClose=_ref.unmountOnClose,children=_ref.children,parentWidth=_ref.parentWidth,parentMinWidth=_ref.parentMinWidth,_ref$useBottomDrawer=_ref.useBottomDrawer,useBottomDrawer=_ref$useBottomDrawer===void 0?{}:_ref$useBottomDrawer,props=_objectWithoutProperties(_ref,_excluded);var shouldUseDrawer=useResponsiveValue(useBottomDrawer);var ref=React.useRef(null);var _useRegisterOverlay=useRegisterOverlay({unmountOnClose:unmountOnClose}),onOpen=_useRegisterOverlay.onOpen,onClose=_useRegisterOverlay.onClose,onFastClose=_useRegisterOverlay.onFastClose,stopDelayedClosing=_useRegisterOverlay.stopDelayedClosing;var click=trigger==='click';var hover=trigger==='hover';var focus=trigger==='focus';renderContent=renderContent||function(){return content;};var show=function show(e){if(e&&e.stopPropagation)e.stopPropagation();var rect=ref.current.getBoundingClientRect();var scrollX=window.scrollX||window.pageXOffset;var scrollY=window.scrollY||window.pageYOffset;var triggerRect={left:rect.left+scrollX,right:rect.right+scrollX,top:rect.top+scrollY,bottom:rect.bottom+scrollY,width:rect.width,height:rect.height};onOpen({content:_jsx(PopoverContent,Object.assign({placement:placement,width:parentWidth?rect.width:undefined,minWidth:parentMinWidth?rect.width:undefined},props,{onMouseEnter:hover?stopDelayedClosing:undefined,onMouseLeave:hover?onClose:undefined,children:renderContent({onClose:onFastClose})})),triggerRect:triggerRect,placement:placement,options:{dismissOnClickOutside:click||focus}});};React.useEffect(function(){return function(){return onClose();};},[]);if(shouldUseDrawer){return _jsx(DrawerPopover,Object.assign({content:content,renderContent:renderContent,children:children},props));}var child=React.Children.only(children);var childProps={ref:ref,onClick:show};if(hover)childProps={ref:ref,onMouseEnter:show,onMouseLeave:onClose};if(focus)childProps={ref:ref,onFocus:show};return React.cloneElement(child,childProps);}function DrawerPopover(_ref2){var children=_ref2.children,content=_ref2.content,renderContent=_ref2.renderContent,snapPoints=_ref2.snapPoints,props=_objectWithoutProperties(_ref2,_excluded2);var _React$useState=React.useState(false),_React$useState2=_slicedToArray(_React$useState,2),open=_React$useState2[0],setOpen=_React$useState2[1];var onClose=function onClose(){return setOpen(false);};var child=React.Children.only(children);var childProps={onClick:function onClick(){return setOpen(true);}};return _jsxs(_Fragment,{children:[React.cloneElement(child,childProps),_jsx(BottomDrawer,{open:open,onClose:onClose,snapPoints:snapPoints,children:renderContent({onClose:onClose})})]});}
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/popover/Popover.js";var _excluded=["renderContent","content","trigger","placement","unmountOnClose","children","parentWidth","parentMinWidth","useBottomDrawer","bottomDrawerProps"],_excluded2=["children","content","renderContent","snapPoints"];import React from'react';import{BottomDrawer}from"../bottomDrawer";import{PopoverContent}from"./PopoverContent";import{useRegisterOverlay}from"../overlay/OverlayHandler";import{useResponsiveValue}from"../../../responsive";import{jsx as _jsx,Fragment as _Fragment,jsxs as _jsxs}from"react/jsx-runtime";export function Popover(_ref){var _this=this;var renderContent=_ref.renderContent,content=_ref.content,_ref$trigger=_ref.trigger,trigger=_ref$trigger===void 0?'hover':_ref$trigger,_ref$placement=_ref.placement,placement=_ref$placement===void 0?'bottom':_ref$placement,unmountOnClose=_ref.unmountOnClose,children=_ref.children,parentWidth=_ref.parentWidth,parentMinWidth=_ref.parentMinWidth,_ref$useBottomDrawer=_ref.useBottomDrawer,useBottomDrawer=_ref$useBottomDrawer===void 0?{}:_ref$useBottomDrawer,_ref$bottomDrawerProp=_ref.bottomDrawerProps,bottomDrawerProps=_ref$bottomDrawerProp===void 0?{}:_ref$bottomDrawerProp,props=_objectWithoutProperties(_ref,_excluded);var shouldUseDrawer=useResponsiveValue(useBottomDrawer);var ref=React.useRef(null);var _useRegisterOverlay=useRegisterOverlay({unmountOnClose:unmountOnClose}),onOpen=_useRegisterOverlay.onOpen,onClose=_useRegisterOverlay.onClose,onFastClose=_useRegisterOverlay.onFastClose,stopDelayedClosing=_useRegisterOverlay.stopDelayedClosing;var click=trigger==='click';var hover=trigger==='hover';var focus=trigger==='focus';renderContent=renderContent||function(){return content;};var show=function show(e){if(e&&e.stopPropagation)e.stopPropagation();var rect=ref.current.getBoundingClientRect();var scrollX=window.scrollX||window.pageXOffset;var scrollY=window.scrollY||window.pageYOffset;var triggerRect={left:rect.left+scrollX,right:rect.right+scrollX,top:rect.top+scrollY,bottom:rect.bottom+scrollY,width:rect.width,height:rect.height};onOpen({content:_jsx(PopoverContent,Object.assign({placement:placement,width:parentWidth?rect.width:undefined,minWidth:parentMinWidth?rect.width:undefined},props,{onMouseEnter:hover?stopDelayedClosing:undefined,onMouseLeave:hover?onClose:undefined,children:renderContent({onClose:onFastClose})})),triggerRect:triggerRect,placement:placement,options:{dismissOnClickOutside:click||focus}});};React.useEffect(function(){return function(){return onClose();};},[]);if(shouldUseDrawer){return _jsx(DrawerPopover,Object.assign({content:content,renderContent:renderContent,children:children},props,bottomDrawerProps));}var child=React.Children.only(children);var childProps={ref:ref,onClick:show};if(hover)childProps={ref:ref,onMouseEnter:show,onMouseLeave:onClose};if(focus)childProps={ref:ref,onFocus:show};return React.cloneElement(child,childProps);}function DrawerPopover(_ref2){var children=_ref2.children,content=_ref2.content,renderContent=_ref2.renderContent,snapPoints=_ref2.snapPoints,props=_objectWithoutProperties(_ref2,_excluded2);var _React$useState=React.useState(false),_React$useState2=_slicedToArray(_React$useState,2),open=_React$useState2[0],setOpen=_React$useState2[1];var onClose=function onClose(){return setOpen(false);};var child=React.Children.only(children);var childProps={onClick:function onClick(){return setOpen(true);}};return _jsxs(_Fragment,{children:[React.cloneElement(child,childProps),_jsx(BottomDrawer,Object.assign({open:open,onClose:onClose,snapPoints:snapPoints},props,{children:renderContent({onClose:onClose})}))]});}
@@ -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/structure/popover/Popover.native.js";var _excluded=["content","renderContent","placement","children","useBottomDrawer","snapPoints"];import{Modal,TouchableWithoutFeedback}from"react-native-web";import React from'react';import{BottomDrawer}from"../bottomDrawer";import{PopoverContent}from"./PopoverContent";import{View}from"../View";import{calculatePosition}from"../overlay/calculatePosition";import{useResponsiveValue}from"../../../responsive";import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from"react/jsx-runtime";export function Popover(_ref){var _position$y,_position$x;var content=_ref.content,renderContent=_ref.renderContent,_ref$placement=_ref.placement,placement=_ref$placement===void 0?'bottom':_ref$placement,children=_ref.children,_ref$useBottomDrawer=_ref.useBottomDrawer,useBottomDrawer=_ref$useBottomDrawer===void 0?{}:_ref$useBottomDrawer,snapPoints=_ref.snapPoints,props=_objectWithoutProperties(_ref,_excluded);var shouldUseDrawer=useResponsiveValue(useBottomDrawer);var ref=React.useRef(null);var _React$useState=React.useState(false),_React$useState2=_slicedToArray(_React$useState,2),open=_React$useState2[0],setOpen=_React$useState2[1];var _React$useState3=React.useState(null),_React$useState4=_slicedToArray(_React$useState3,2),triggerRect=_React$useState4[0],setTriggerRect=_React$useState4[1];var _React$useState5=React.useState(null),_React$useState6=_slicedToArray(_React$useState5,2),position=_React$useState6[0],setPosition=_React$useState6[1];renderContent=renderContent||function(){return content;};var onOpen=function onOpen(){if(shouldUseDrawer){setOpen(true);return;}if(ref.current){ref.current.measureInWindow(function(x,y,width,height){setTriggerRect({left:x,top:y,right:x+width,bottom:y+height,width:width,height:height});setOpen(true);});}};var onClose=function onClose(){setOpen(false);setTriggerRect(null);setPosition(null);};children=React.cloneElement(React.Children.only(children),{onPress:onOpen});if(shouldUseDrawer){return _jsxs(View,{ref:ref,children:[children,_jsx(BottomDrawer,{open:open,onClose:onClose,snapPoints:snapPoints,children:renderContent({onClose:onClose})})]});}return _jsxs(_Fragment,{children:[_jsx(View,{ref:ref,children:children}),open&&_jsx(Modal,{transparent:true,visible:open,animationType:"fade",onRequestClose:onClose,children:_jsx(View,{fullW:true,flex:true,fullH:true,bg:"bg_op50",children:_jsx(TouchableWithoutFeedback,{onPress:onClose,children:_jsx(View,{style:{flex:1},children:triggerRect&&_jsx(View,{style:{position:'absolute',top:(_position$y=position==null?void 0:position.y)!=null?_position$y:-9999,left:(_position$x=position==null?void 0:position.x)!=null?_position$x:-9999},onLayout:function onLayout(e){var _e$nativeEvent$layout=e.nativeEvent.layout,width=_e$nativeEvent$layout.width,height=_e$nativeEvent$layout.height;var popoverRect={width:width,height:height};var pos=calculatePosition(triggerRect,popoverRect,placement,8);setPosition(pos);},children:_jsx(PopoverContent,Object.assign({placement:placement},props,{children:renderContent({onClose:onClose})}))})})})})})]});}
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/popover/Popover.native.js";var _excluded=["content","renderContent","placement","children","useBottomDrawer","bottomDrawerProps","snapPoints"];import{Modal,TouchableWithoutFeedback}from"react-native-web";import React from'react';import{BottomDrawer}from"../bottomDrawer";import{PopoverContent}from"./PopoverContent";import{View}from"../View";import{calculatePosition}from"../overlay/calculatePosition";import{useResponsiveValue}from"../../../responsive";import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from"react/jsx-runtime";export function Popover(_ref){var _position$y,_position$x;var content=_ref.content,renderContent=_ref.renderContent,_ref$placement=_ref.placement,placement=_ref$placement===void 0?'bottom':_ref$placement,children=_ref.children,_ref$useBottomDrawer=_ref.useBottomDrawer,useBottomDrawer=_ref$useBottomDrawer===void 0?{}:_ref$useBottomDrawer,_ref$bottomDrawerProp=_ref.bottomDrawerProps,bottomDrawerProps=_ref$bottomDrawerProp===void 0?{}:_ref$bottomDrawerProp,snapPoints=_ref.snapPoints,props=_objectWithoutProperties(_ref,_excluded);var shouldUseDrawer=useResponsiveValue(useBottomDrawer);var ref=React.useRef(null);var _React$useState=React.useState(false),_React$useState2=_slicedToArray(_React$useState,2),open=_React$useState2[0],setOpen=_React$useState2[1];var _React$useState3=React.useState(null),_React$useState4=_slicedToArray(_React$useState3,2),triggerRect=_React$useState4[0],setTriggerRect=_React$useState4[1];var _React$useState5=React.useState(null),_React$useState6=_slicedToArray(_React$useState5,2),position=_React$useState6[0],setPosition=_React$useState6[1];renderContent=renderContent||function(){return content;};var onOpen=function onOpen(){if(shouldUseDrawer){setOpen(true);return;}if(ref.current){ref.current.measureInWindow(function(x,y,width,height){setTriggerRect({left:x,top:y,right:x+width,bottom:y+height,width:width,height:height});setOpen(true);});}};var onClose=function onClose(){setOpen(false);setTriggerRect(null);setPosition(null);};children=React.cloneElement(React.Children.only(children),{onPress:onOpen});if(shouldUseDrawer){return _jsxs(View,{ref:ref,children:[children,_jsx(BottomDrawer,Object.assign({open:open,onClose:onClose,snapPoints:snapPoints},bottomDrawerProps,{children:renderContent({onClose:onClose})}))]});}return _jsxs(_Fragment,{children:[_jsx(View,{ref:ref,children:children}),open&&_jsx(Modal,{transparent:true,visible:open,animationType:"fade",onRequestClose:onClose,children:_jsx(View,{fullW:true,flex:true,fullH:true,bg:"backdrop_op50",children:_jsx(TouchableWithoutFeedback,{onPress:onClose,children:_jsx(View,{style:{flex:1},children:triggerRect&&_jsx(View,{style:{position:'absolute',top:(_position$y=position==null?void 0:position.y)!=null?_position$y:-9999,left:(_position$x=position==null?void 0:position.x)!=null?_position$x:-9999},onLayout:function onLayout(e){var _e$nativeEvent$layout=e.nativeEvent.layout,width=_e$nativeEvent$layout.width,height=_e$nativeEvent$layout.height;var popoverRect={width:width,height:height};var pos=calculatePosition(triggerRect,popoverRect,placement,8);setPosition(pos);},children:_jsx(PopoverContent,Object.assign({placement:placement},props,{children:renderContent({onClose:onClose})}))})})})})})]});}
@@ -0,0 +1 @@
1
+ var _jsxFileName="/Users/christianstorch/Apps/nekoapps/libs/neko-ui/src/components/theme/ThemePicker.js";import{mapObjIndexed,mergeDeepRight,values,pipe,filter}from'ramda';import{DEFAULT_THEMES,useThemeHandler}from"../../theme";import{IconLabel}from"../presentation";import{Link}from"../actions";import{Picker}from"../inputs";import{ThemeThumb}from"./ThemeThumb";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";export function ThemePicker(_ref){var _this=this;var _onChange=_ref.onChange,onlyKeys=_ref.onlyKeys,hideKeys=_ref.hideKeys;var _useThemeHandler=useThemeHandler(),activeThemeKey=_useThemeHandler.activeThemeKey,setActiveThemeKey=_useThemeHandler.setActiveThemeKey,themes=_useThemeHandler.themes,onChangeTheme=_useThemeHandler.onChangeTheme;var options=pipe(mergeDeepRight(DEFAULT_THEMES),mapObjIndexed(function(obj,key){return Object.assign({},obj,{value:key,key:key});}),values,filter(function(item){if(item.value==='_all')return false;if(onlyKeys&&onlyKeys.includes(item.value))return true;if(hideKeys&&hideKeys.includes(item.value))return false;return true;}))(themes);return _jsx(Picker,{colSpan:12,gap:"lg",value:activeThemeKey,onChange:function onChange(key){setActiveThemeKey(key);onChangeTheme==null?void 0:onChangeTheme(key);_onChange==null?void 0:_onChange(key);},options:options,renderOption:function renderOption(_ref2){var option=_ref2.option,selected=_ref2.selected,onChange=_ref2.onChange;return _jsxs(Link,{onPress:onChange,gap:"xs",children:[_jsx(ThemeThumb,{value:option.value}),_jsx(IconLabel,{center:true,label:option.label,icon:selected&&'checkbox-circle-fill',color:selected?'primary':'text3',strong:true})]});}});}
@@ -0,0 +1 @@
1
+ var _jsxFileName="/Users/christianstorch/Apps/nekoapps/libs/neko-ui/src/components/theme/ThemePickerDrawer.js";import{BottomDrawer}from"../structure";import{ScrollView}from"../list/ScrollView";import{ThemePicker}from"./ThemePicker";import{jsx as _jsx}from"react/jsx-runtime";export function ThemePickerDrawer(_ref){var open=_ref.open,onClose=_ref.onClose,onChange=_ref.onChange;return _jsx(BottomDrawer,{open:open,onClose:onClose,maxWidth:550,snapPoints:['50%','85%'],children:_jsx(ScrollView,{padding:"md",children:_jsx(ThemePicker,{onChange:onChange})})});}
@@ -0,0 +1 @@
1
+ export function ThemeStatusBar(){return false;}
@@ -0,0 +1 @@
1
+ var _jsxFileName="/Users/christianstorch/Apps/nekoapps/libs/neko-ui/src/components/theme/ThemeStatusBar.native.js";import{StatusBar}from"react-native-web";import{useTheme}from"../../theme";import{jsx as _jsx}from"react/jsx-runtime";export function ThemeStatusBar(props){var _useTheme=useTheme(),isDark=_useTheme.isDark;return _jsx(StatusBar,Object.assign({},props,{style:isDark?'dark':'light'}));}
@@ -0,0 +1 @@
1
+ var _jsxFileName="/Users/christianstorch/Apps/nekoapps/libs/neko-ui/src/components/theme/ThemeThumb.js";import{View}from"../structure";import{useFormattedTheme}from"../../theme/format/formatTheme";import{useResponsiveValue}from"../../responsive";import{useThemeHandler}from"../../theme";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";export function ThemeThumb(_ref){var value=_ref.value;var _useThemeHandler=useThemeHandler(),themes=_useThemeHandler.themes;var _useFormattedTheme=useFormattedTheme(themes,value),colors=_useFormattedTheme.colors,label=_useFormattedTheme.label;var isMobile=useResponsiveValue({smd:true,df:false});if(isMobile){return _jsx(View,{centerH:true,children:_jsxs(View,{bg:colors.mainBG,height:175,fullW:true,br:"md",hiddenOverflow:true,border:2,brColor:colors.divider,maxWidth:100,children:[_jsxs(View,{bg:colors.overlayBG,height:25,padding:8,row:true,borderB:true,brColor:colors.divider,children:[_jsx(View,{width:25,fullH:true,bg:colors.primary,br:"xxs"}),_jsx(View,{flex:true}),_jsx(View,{ratio:1,fullH:true,bg:colors.divider,round:true})]}),_jsx(View,{flex:true,padding:6,children:_jsxs(View,{br:"md",bg:colors.overlayBG,flex:true,gap:8,padding:8,border:true,brColor:colors.divider,children:[_jsx(View,{bg:colors.text2,height:4,br:"xxs"}),_jsx(View,{bg:colors.text4,height:2,br:"xxs"}),_jsx(View,{bg:colors.text4,height:2,br:"xxs"}),_jsx(View,{bg:colors.text4,height:2,br:"xxs"}),_jsx(View,{bg:colors.text4,height:2,br:"xxs"}),_jsx(View,{bg:colors.text4,height:2,br:"xxs"}),_jsx(View,{flex:true}),_jsx(View,{height:6,fullW:true,bg:colors.primary,br:"xxs"})]})}),_jsxs(View,{bg:colors.overlayBG,height:25,padding:8,row:true,borderT:true,brColor:colors.divider,justify:"space-around",centerV:true,children:[_jsx(View,{ratio:1,fullH:true,bg:colors.divider,round:true}),_jsx(View,{ratio:1,fullH:true,bg:colors.divider,round:true}),_jsx(View,{ratio:1,fullH:true,bg:colors.divider,round:true}),_jsx(View,{ratio:1,fullH:true,bg:colors.divider,round:true}),_jsx(View,{ratio:1,fullH:true,bg:colors.divider,round:true})]})]})});}return _jsxs(View,{bg:colors.mainBG,height:175,fullW:true,br:"md",hiddenOverflow:true,border:2,brColor:colors.divider,children:[_jsxs(View,{bg:colors.overlayBG,height:25,paddingV:8,paddingH:12,row:true,borderB:true,brColor:colors.divider,children:[_jsx(View,{width:25,bg:colors.primary,br:"xxs"}),_jsx(View,{flex:true}),_jsx(View,{ratio:1,fullH:true,bg:colors.text4,round:true})]}),_jsxs(View,{row:true,padding:12,paddingT:8,gap:6,flex:true,children:[_jsxs(View,{br:"xs",bg:colors.overlayBG,flex:true,gap:6,padding:7,border:true,brColor:colors.divider,children:[_jsx(View,{bg:colors.text4,height:2,br:"xxs"}),_jsx(View,{bg:colors.text4,height:2,br:"xxs"}),_jsx(View,{bg:colors.text4,height:2,br:"xxs"}),_jsx(View,{bg:colors.text4,height:2,br:"xxs"}),_jsx(View,{bg:colors.text4,height:2,br:"xxs"})]}),_jsxs(View,{br:"xs",bg:colors.overlayBG,flex:4,gap:8,padding:7,border:true,brColor:colors.divider,children:[_jsx(View,{bg:colors.text2,height:4,br:"xxs",width:30}),_jsx(View,{bg:colors.text4,height:2,br:"xxs",width:'80%'}),_jsx(View,{bg:colors.text4,height:2,br:"xxs",width:'80%'}),_jsx(View,{bg:colors.text4,height:2,br:"xxs",width:'80%'}),_jsx(View,{bg:colors.text4,height:2,br:"xxs",width:'80%'}),_jsx(View,{bg:colors.text4,height:2,br:"xxs",width:'80%'}),_jsx(View,{flex:true}),_jsxs(View,{row:true,toRight:true,gap:6,children:[_jsx(View,{width:25,height:8,bg:colors.text4,br:"xxs"}),_jsx(View,{width:25,height:8,bg:colors.primary,br:"xxs"})]})]})]})]});}
@@ -0,0 +1 @@
1
+ export*from"./ThemePicker";export*from"./ThemePickerDrawer";export*from"./ThemeStatusBar";
@@ -1 +1 @@
1
- export*from"./debounce";export*from"./string";export*from"./random";
1
+ export*from"./debounce";export*from"./string";export*from"./random";export*from"./storage";
@@ -0,0 +1 @@
1
+ import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import React from'react';import{AbsStorage}from"../abstractions/helpers/storage";function set(key,value){return AbsStorage.set(key,JSON.stringify(value));}function setAsync(key,value){return AbsStorage.setAsync(key,JSON.stringify(value));}function get(key){var value=AbsStorage.get(key);return formatStoragedValue(value);}function getAsync(key){return AbsStorage.setAsync(key).then(function(value){return formatStoragedValue(value);});}function formatStoragedValue(value){try{if(!value)return value;value=JSON.parse(value);if(value==='undefined')return undefined;if(value==='null')return undefined;return value;}catch(e){return value;}}function useState(key,defaultValue){var _React$useState=React.useState(get(key)||defaultValue),_React$useState2=_slicedToArray(_React$useState,2),value=_React$useState2[0],setValue=_React$useState2[1];var handleChange=function handleChange(newValue){set(key,newValue);setValue(newValue);};return[value,handleChange];}export var Storage=Object.assign({},AbsStorage,{set:set,setAsync:setAsync,get:get,getAsync:getAsync,useState:useState});
@@ -1 +1 @@
1
- import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";var _excluded=["color"],_excluded2=["outline","fill"];import tinycolor from'tinycolor2';import{getContrastColor}from"../theme/helpers/contrastColor";import{useGetColor}from"../theme/ThemeHandler";export function useFullColorModifier(_ref){var _ref2=_slicedToArray(_ref,2),_ref2$=_ref2[0],color=_ref2$.color,values=_objectWithoutProperties(_ref2$,_excluded),_ref2$2=_ref2[1],outline=_ref2$2.outline,fill=_ref2$2.fill,props=_objectWithoutProperties(_ref2$2,_excluded2);var getColor=useGetColor();var bg=color;var bgObj=tinycolor(getColor(bg));var borderColor=color;var fontColor='text';if(!!outline&&fill!==true){bg='transparent';fontColor=color;}else{fontColor=getContrastColor(bgObj,[getColor('text'),getColor('overlayBG')]);}return[Object.assign({},values,{fontColor:fontColor}),Object.assign({},props,{bg:bg,borderColor:borderColor})];}
1
+ import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";var _excluded=["color"],_excluded2=["outline","contrastTolerance","fill"];import tinycolor from'tinycolor2';import{getContrastColor}from"../theme/helpers/contrastColor";import{useGetColor}from"../theme/ThemeHandler";export function useFullColorModifier(_ref){var _ref2=_slicedToArray(_ref,2),_ref2$=_ref2[0],color=_ref2$.color,values=_objectWithoutProperties(_ref2$,_excluded),_ref2$2=_ref2[1],outline=_ref2$2.outline,contrastTolerance=_ref2$2.contrastTolerance,fill=_ref2$2.fill,props=_objectWithoutProperties(_ref2$2,_excluded2);var getColor=useGetColor();var bg=color;var bgObj=tinycolor(getColor(bg));var borderColor=color;var fontColor='text';if(!!outline&&fill!==true){bg='transparent';fontColor=color;}else{fontColor=getContrastColor(bgObj,[getColor('overlayBG'),getColor('text')],contrastTolerance);}return[Object.assign({},values,{fontColor:fontColor}),Object.assign({},props,{bg:bg,borderColor:borderColor})];}
@@ -1 +1 @@
1
- import _slicedToArray from"@babel/runtime/helpers/slicedToArray";var _jsxFileName="/Users/christianstorch/Apps/nekoapps/libs/neko-ui/src/theme/ThemeHandler.js";import{mergeDeepRight}from'ramda';import React from'react';import{DEFAULT_LIGHT_THEME}from"./default/lightTheme";import{getThemeValue}from"./helpers/relatedScales";import{useFormattedTheme}from"./format/formatTheme";import{jsx as _jsx}from"react/jsx-runtime";var DEFAULT_BREAKPOINTS=[{name:'sm',value:768},{name:'md',value:1024},{name:'lg',value:1440},{name:'xl',value:10000}];var ThemeContext=React.createContext(null);export var useThemeHandler=function useThemeHandler(){return React.useContext(ThemeContext)||{};};export var useBreakpoints=function useBreakpoints(){var _useThemeHandler;return((_useThemeHandler=useThemeHandler())==null?void 0:_useThemeHandler.breakpoints)||DEFAULT_BREAKPOINTS;};export var useTheme=function useTheme(groupKey){var theme=useThemeHandler().theme||DEFAULT_LIGHT_THEME;if(!groupKey)return theme;return(theme==null?void 0:theme[groupKey])||{};};export var useGetThemeValue=function useGetThemeValue(groupKey){var group=useTheme(groupKey);return function(key){return getThemeValue(group,key);};};export var useColors=function useColors(){return useTheme('colors');};export var useGetColor=function useGetColor(){return useGetThemeValue('colors');};export var useSpaces=function useSpaces(){return useTheme('spaces');};export var useGetSpace=function useGetSpace(){return useGetThemeValue('spaces');};export var useRadius=function useRadius(){return useTheme('radius');};export var useGetRadius=function useGetRadius(){return useGetThemeValue('radius');};export var useElementHeights=function useElementHeights(){return useTheme('elementHeights');};export var useGetElementHeight=function useGetElementHeight(){return useGetThemeValue('elementHeights');};export var useTexts=function useTexts(){return useTheme('texts');};export var useGetText=function useGetText(){return useGetThemeValue('text');};export var useThemeComponents=function useThemeComponents(){return useTheme('components');};export function useThemeComponent(name){var components=useThemeComponents();return components[name]||{};}export function useMergeThemeComponent(name,props){var themeProps=useThemeComponent(name);return mergeDeepRight(themeProps,props);}export function ThemeHandler(_ref){var breakpoints=_ref.breakpoints,themes=_ref.themes,initTheme=_ref.initTheme,children=_ref.children;var _React$useState=React.useState(initTheme||'light'),_React$useState2=_slicedToArray(_React$useState,2),activeThemeKey=_React$useState2[0],setActiveThemeKey=_React$useState2[1];var theme=useFormattedTheme(themes,activeThemeKey);var value={theme:theme,themes:themes,activeThemeKey:activeThemeKey,setActiveThemeKey:setActiveThemeKey,breakpoints:breakpoints||DEFAULT_BREAKPOINTS};return _jsx(ThemeContext.Provider,{value:value,children:children});}
1
+ import _slicedToArray from"@babel/runtime/helpers/slicedToArray";var _jsxFileName="/Users/christianstorch/Apps/nekoapps/libs/neko-ui/src/theme/ThemeHandler.js";import{mergeDeepRight}from'ramda';import React from'react';import{DEFAULT_LIGHT_THEME}from"./default/lightTheme";import{getThemeValue}from"./helpers/relatedScales";import{useFormattedTheme}from"./format/formatTheme";import{jsx as _jsx}from"react/jsx-runtime";var DEFAULT_BREAKPOINTS=[{name:'sm',value:768},{name:'md',value:1024},{name:'lg',value:1440},{name:'xl',value:10000}];var ThemeContext=React.createContext(null);export var useThemeHandler=function useThemeHandler(){return React.useContext(ThemeContext)||{};};export var useBreakpoints=function useBreakpoints(){var _useThemeHandler;return((_useThemeHandler=useThemeHandler())==null?void 0:_useThemeHandler.breakpoints)||DEFAULT_BREAKPOINTS;};export var useTheme=function useTheme(groupKey){var theme=useThemeHandler().theme||DEFAULT_LIGHT_THEME;if(!groupKey)return theme;return(theme==null?void 0:theme[groupKey])||{};};export var useGetThemeValue=function useGetThemeValue(groupKey){var group=useTheme(groupKey);return function(key){return getThemeValue(group,key);};};export var useColors=function useColors(){return useTheme('colors');};export var useGetColor=function useGetColor(){return useGetThemeValue('colors');};export var useSpaces=function useSpaces(){return useTheme('spaces');};export var useGetSpace=function useGetSpace(){return useGetThemeValue('spaces');};export var useRadius=function useRadius(){return useTheme('radius');};export var useGetRadius=function useGetRadius(){return useGetThemeValue('radius');};export var useElementHeights=function useElementHeights(){return useTheme('elementHeights');};export var useGetElementHeight=function useGetElementHeight(){return useGetThemeValue('elementHeights');};export var useTexts=function useTexts(){return useTheme('texts');};export var useGetText=function useGetText(){return useGetThemeValue('text');};export var useThemeComponents=function useThemeComponents(){return useTheme('components');};export function useThemeComponent(name){var components=useThemeComponents();return components[name]||{};}export function useMergeThemeComponent(name,props){var themeProps=useThemeComponent(name);return mergeDeepRight(themeProps,props);}export function ThemeHandler(_ref){var breakpoints=_ref.breakpoints,themes=_ref.themes,initTheme=_ref.initTheme,onChangeTheme=_ref.onChangeTheme,children=_ref.children;var _React$useState=React.useState(false),_React$useState2=_slicedToArray(_React$useState,2),themePickerOpen=_React$useState2[0],setThemePickerOpen=_React$useState2[1];var openThemePicker=function openThemePicker(){return setThemePickerOpen(true);};var _React$useState3=React.useState(initTheme||'light'),_React$useState4=_slicedToArray(_React$useState3,2),activeThemeKey=_React$useState4[0],setActiveThemeKey=_React$useState4[1];var toggleTheme=function toggleTheme(){return setActiveThemeKey(activeThemeKey==='light'?'dark':'light');};var theme=useFormattedTheme(themes,activeThemeKey);var value={theme:theme,themes:themes,activeThemeKey:activeThemeKey,setActiveThemeKey:setActiveThemeKey,toggleTheme:toggleTheme,themePickerOpen:themePickerOpen,setThemePickerOpen:setThemePickerOpen,onChangeTheme:onChangeTheme,openThemePicker:openThemePicker,toggleTheme:toggleTheme,breakpoints:breakpoints||DEFAULT_BREAKPOINTS};return _jsx(ThemeContext.Provider,{value:value,children:children});}
@@ -1 +1 @@
1
- export var BASE_THEME={spaces:{xxxs:1,xxs:3,xs:5,sm:10,md:15,lg:20,xl:30,xxl:40,xxxl:50},radius:{xxxs:4,xxs:5,xs:5,sm:7,md:8,lg:10,xl:12,xxl:15,xxxl:18},icons:{xxxs:10,xxs:12,xs:14,sm:16,md:18,lg:22,xl:26,xxl:28,xxxl:32},elementHeights:{xs:20,sm:30,md:35,lg:50,xl:60},texts:{h1:{fontSize:32,strong:true},h2:{fontSize:26,strong:true},h3:{fontSize:22,strong:true},h4:{fontSize:18,strong:true},h5:{fontSize:16,strong:true},h6:{fontSize:14,strong:true},p:{fontSize:14},sm:{fontSize:12},xs:{fontSize:10},xxs:{fontSize:8}}};
1
+ export var BASE_THEME={spaces:{xxxs:1,xxs:3,xs:5,sm:10,md:15,lg:20,xl:30,xxl:40,xxxl:50},radius:{xxxs:4,xxs:5,xs:5,sm:7,md:8,lg:10,xl:12,xxl:15,xxxl:18},icons:{xxxs:10,xxs:12,xs:14,sm:16,md:18,lg:22,xl:26,xxl:28,xxxl:32},elementHeights:{xs:20,sm:30,md:35,lg:50,xl:60},texts:{h1:{fontSize:35,strong:true},h2:{fontSize:28,strong:true},h3:{fontSize:26,strong:true},h4:{fontSize:22,strong:true},h5:{fontSize:18,strong:true},h6:{fontSize:16,strong:true},p:{fontSize:14},sm:{fontSize:12},xs:{fontSize:10},xxs:{fontSize:8}}};
@@ -1 +1 @@
1
- import{mergeDeepRight}from'ramda';import{BASE_THEME}from"./base";export var DEFAULT_BLACK_THEME=mergeDeepRight(BASE_THEME,{colors:{primary:'#818DF9',text:'#FFFFFF',text2:'#E0E0E0',text3:'#B0B0B0',text4:'#8A8A8A',bg:'#0f0f0f',overlayBG:'#000000',backdrop:'#1f1f1f',shadow:'rgba(216, 210, 203, 0.1)',divider:'#383E44',blue:'#4DA3FF',yellow:'#FFD93B',green:'#4CAF50',purple:'#9B59B6',orange:'#FF7F50',cyan:'#00BCD4',red:'#E74C3C',navy:'#34495E',indigo:'#5C6BC0',gray:'#9E9E9E',brown:'#8D6E63',lylac:'#B39DDB',pink:'#F48FB1'}});
1
+ import{mergeDeepRight}from'ramda';import{BASE_THEME}from"./base";export var DEFAULT_BLACK_THEME=mergeDeepRight(BASE_THEME,{label:'Pitch Black',colors:{primary:'#818DF9',text:'#FFFFFF',text2:'#E0E0E0',text3:'#B0B0B0',text4:'#8A8A8A',mainBG:'#0f0f0f',overlayBG:'#000000',backdrop:'#1f1f1f',shadow:'rgba(216, 210, 203, 0.1)',divider:'#383E44',blue:'#4DA3FF',yellow:'#FFD93B',green:'#4CAF50',purple:'#9B59B6',orange:'#FF7F50',cyan:'#00BCD4',red:'#E74C3C',navy:'#34495E',indigo:'#5C6BC0',gray:'#9E9E9E',brown:'#8D6E63',lylac:'#B39DDB',pink:'#F48FB1'}});
@@ -1 +1 @@
1
- import{mergeDeepRight}from'ramda';import{BASE_THEME}from"./base";export var CYBERPUNK_DARK_THEME=mergeDeepRight(BASE_THEME,{colors:{primary:'#FCEE09',text:'#FFFFFF',text2:'#B3B3B3',text3:'#8C8C8C',text4:'#666666',bg:'#0A0A0F',overlayBG:'#14141F',backdrop:'#0A0A0F',shadow:'rgba(39, 45, 52, 0.6)',divider:'rgba(255,255,255, 0.2)',blue:'#00E5FF',yellow:'#FFD600',green:'#00FF9D',purple:'#D500F9',orange:'#FF9100',cyan:'#00B8D4',red:'#FF1744',navy:'#1E2A38',indigo:'#651FFF',gray:'#757575',brown:'#6D4C41',lylac:'#B388FF',pink:'#FF80AB'}});
1
+ import{mergeDeepRight}from'ramda';import{BASE_THEME}from"./base";export var CYBERPUNK_DARK_THEME=mergeDeepRight(BASE_THEME,{label:'Cyberpunk',colors:{primary:'#FCEE09',text:'#FFFFFF',text2:'#B3B3B3',text3:'#8C8C8C',text4:'#666666',mainBG:'#14141F',overlayBG:'#14141F',backdrop:'#0A0A0F',shadow:'rgba(39, 45, 52, 0.6)',divider:'rgba(255,255,255, 0.2)',blue:'#00E5FF',yellow:'#FFD600',green:'#00FF9D',purple:'#D500F9',orange:'#FF9100',cyan:'#00B8D4',red:'#FF1744',navy:'#1E2A38',indigo:'#651FFF',gray:'#757575',brown:'#6D4C41',lylac:'#B388FF',pink:'#FF80AB'}});
@@ -1 +1 @@
1
- import{mergeDeepRight}from'ramda';import{BASE_THEME}from"./base";export var DEFAULT_DARK_THEME=mergeDeepRight(BASE_THEME,{colors:{primary:'#818DF9',text:'#FFFFFF',text2:'#E0E0E0',text3:'#B0B0B0',text4:'#8A8A8A',bg:'#383E44',overlayBG:'#272D34',backdrop:'#383E44',shadow:'rgba(216, 210, 203, 0.1)',divider:'#383E44',blue:'#4DA3FF',yellow:'#FFD93B',green:'#4CAF50',purple:'#9B59B6',orange:'#FF7F50',cyan:'#00BCD4',red:'#E74C3C',navy:'#34495E',indigo:'#5C6BC0',gray:'#9E9E9E',brown:'#8D6E63',lylac:'#B39DDB',pink:'#F48FB1'}});
1
+ import{mergeDeepRight}from'ramda';import{BASE_THEME}from"./base";export var DEFAULT_DARK_THEME=mergeDeepRight(BASE_THEME,{label:'Dark',colors:{primary:'#818DF9',text:'#FFFFFF',text2:'#E0E0E0',text3:'#B0B0B0',text4:'#8A8A8A',mainBG:'#383E44',overlayBG:'#272D34',backdrop:'#383E44',shadow:'rgba(216, 210, 203, 0.1)',divider:'#383E44',blue:'#4DA3FF',yellow:'#FFD93B',green:'#4CAF50',purple:'#9B59B6',orange:'#FF7F50',cyan:'#00BCD4',red:'#E74C3C',navy:'#34495E',indigo:'#5C6BC0',gray:'#9E9E9E',brown:'#8D6E63',lylac:'#B39DDB',pink:'#F48FB1'}});
@@ -1 +1 @@
1
- import{mergeDeepRight}from'ramda';import{BASE_THEME}from"./base";export var DEEP_WOODS_DARK_THEME=mergeDeepRight(BASE_THEME,{colors:{primary:'#4CAF50',text:'#F0F8F2',text2:'#C8E6C9',text3:'#A5D6A7',text4:'#81C784',bg:'#0D1B14',overlayBG:'#16281F',backdrop:'#0D1B14',shadow:'rgba(39, 45, 52, 0.6)',divider:'rgba(255,255,255, 0.2)',blue:'#64B5F6',yellow:'#FBC02D',green:'#81C784',purple:'#9575CD',orange:'#FFB74D',cyan:'#4DD0E1',red:'#E57373',navy:'#1B263B',indigo:'#5C6BC0',gray:'#9E9E9E',brown:'#8D6E63',lylac:'#B39DDB',pink:'#F48FB1'}});
1
+ import{mergeDeepRight}from'ramda';import{BASE_THEME}from"./base";export var DEEP_WOODS_DARK_THEME=mergeDeepRight(BASE_THEME,{label:'Deep Woods',colors:{primary:'#4CAF50',text:'#C8E6C9',text2:'#C8E6C9',text3:'#A5D6A7',text4:'#81C784',mainBG:'#0D1B14',overlayBG:'#16281F',backdrop:'#0D1B14',shadow:'rgba(39, 45, 52, 0.6)',divider:'rgba(255,255,255, 0.2)',blue:'#64B5F6',yellow:'#FBC02D',green:'#81C784',purple:'#9575CD',orange:'#FFB74D',cyan:'#4DD0E1',red:'#E57373',navy:'#1B263B',indigo:'#5C6BC0',gray:'#9E9E9E',brown:'#8D6E63',lylac:'#B39DDB',pink:'#F48FB1'}});
@@ -1 +1 @@
1
- import{mergeDeepRight}from'ramda';import{BASE_THEME}from"./base";export var FOREST_MIST_THEME=mergeDeepRight(BASE_THEME,{colors:{primary:'#4CAF50',text:'#0B2414',text2:'#14532D',text3:'#1B5E20',text4:'#388E3C',bg:'#E9F5EC',overlayBG:'#FFFFFF',backdrop:'#E9F5EC',shadow:'rgba(39, 45, 52, 0.15)',divider:'rgba(0,0,0, 0.1)',blue:'#2563EB',yellow:'#F59E0B',green:'#15803D',purple:'#7C3AED',orange:'#EA580C',cyan:'#0891B2',red:'#B91C1C',navy:'#1E3A8A',indigo:'#4338CA',gray:'#94A3B8',brown:'#78350F',lylac:'#A78BFA',pink:'#F472B6'}});
1
+ import{mergeDeepRight}from'ramda';import{BASE_THEME}from"./base";export var FOREST_MIST_THEME=mergeDeepRight(BASE_THEME,{label:'Forest Mist',colors:{primary:'#4CAF50',text:'#0B2414',text2:'#14532D',text3:'#1B5E20',text4:'#388E3C',mainBG:'#E9F5EC',overlayBG:'#FFFFFF',backdrop:'#E9F5EC',shadow:'rgba(39, 45, 52, 0.15)',divider:'rgba(0,0,0, 0.1)',blue:'#2563EB',yellow:'#F59E0B',green:'#15803D',purple:'#7C3AED',orange:'#EA580C',cyan:'#0891B2',red:'#B91C1C',navy:'#1E3A8A',indigo:'#4338CA',gray:'#94A3B8',brown:'#78350F',lylac:'#A78BFA',pink:'#F472B6'}});
@@ -1 +1 @@
1
- import{mergeDeepRight}from'ramda';import{BASE_THEME}from"./base";export var DEFAULT_MATRIX_THEME=mergeDeepRight(BASE_THEME,{colors:{primary:'#00FF41',text:'#00FF41',text2:'#00CC33',text3:'#009926',text4:'#00661A',bg:'#000000',overlayBG:'#0A0A0A',backdrop:'#000000',shadow:'rgba(0, 255, 65, 0.2)',divider:'rgba(0,255,65, 0.3)',blue:'#0087BD',yellow:'#AEBF00',green:'#00FF41',purple:'#7A1FA2',orange:'#FF6D00',cyan:'#00BFA5',red:'#D50000',navy:'#003366',indigo:'#303F9F',gray:'#4A4A4A',brown:'#5D4037',lylac:'#8E24AA',pink:'#C51162'},components:{Card:{border:1,br:5,borderColor:'divider'}}});
1
+ import{mergeDeepRight}from'ramda';import{BASE_THEME}from"./base";export var DEFAULT_MATRIX_THEME=mergeDeepRight(BASE_THEME,{label:'Hacker',colors:{primary:'#00FF41',text:'#00FF41',text2:'#00CC33',text3:'#009926',text4:'#00661A',mainBG:'#000000',overlayBG:'#0A0A0A',backdrop:'#000000',shadow:'rgba(0, 255, 65, 0.2)',divider:'rgba(0,255,65, 0.3)',blue:'#0087BD',yellow:'#AEBF00',green:'#00FF41',purple:'#7A1FA2',orange:'#FF6D00',cyan:'#00BFA5',red:'#D50000',navy:'#003366',indigo:'#303F9F',gray:'#4A4A4A',brown:'#5D4037',lylac:'#8E24AA',pink:'#C51162'},components:{Card:{border:1,br:5,borderColor:'divider'}}});
@@ -1 +1 @@
1
- import{mergeDeepRight}from'ramda';import{BASE_THEME}from"./base";export var DEFAULT_LIGHT_THEME=mergeDeepRight(BASE_THEME,{colors:{primary:'#818DF9',text:'#272D34',text2:'#4A5159',text3:'#6E7680',text4:'#9AA1AC',bg:'#F4F5FE',overlayBG:'#FFFFFF',backdrop:'#383E44',shadow:'rgba(39, 45, 52, 0.15)',divider:'#e0e0e0',blue:'#4DA3FF',yellow:'#FFD93B',green:'#4CAF50',purple:'#9B59B6',orange:'#FF7F50',cyan:'#00BCD4',red:'#E74C3C',navy:'#34495E',indigo:'#5C6BC0',gray:'#B0BEC5',brown:'#8D6E63',lylac:'#B39DDB',pink:'#F48FB1'}});
1
+ import{mergeDeepRight}from'ramda';import{BASE_THEME}from"./base";export var DEFAULT_LIGHT_THEME=mergeDeepRight(BASE_THEME,{label:'Light',colors:{primary:'#818DF9',text:'#272D34',text2:'#4A5159',text3:'#6E7680',text4:'#9AA1AC',mainBG:'#F4F5FE',overlayBG:'#FFFFFF',backdrop:'#383E44',shadow:'rgba(39, 45, 52, 0.15)',divider:'#e0e0e0',blue:'#4DA3FF',yellow:'#FFD93B',green:'#4CAF50',purple:'#9B59B6',orange:'#FF7F50',cyan:'#00BCD4',red:'#E74C3C',navy:'#34495E',indigo:'#5C6BC0',gray:'#B0BEC5',brown:'#8D6E63',lylac:'#B39DDB',pink:'#F48FB1'}});
@@ -1 +1 @@
1
- import{mergeDeepRight}from'ramda';import{BASE_THEME}from"./base";export var MIDNIGHT_NEON_THEME=mergeDeepRight(BASE_THEME,{colors:{primary:'#FF00FF',text:'#F0F0F0',text2:'#D4D4D4',text3:'#A3A3A3',text4:'#7A7A7A',bg:'#0D0D0D',overlayBG:'#1A1A1A',backdrop:'#0D0D0D',shadow:'rgba(39, 45, 52, 0.6)',divider:'rgba(255,255,255, 0.2)',blue:'#3B82F6',yellow:'#FACC15',green:'#22C55E',purple:'#A855F7',orange:'#FB923C',cyan:'#06B6D4',red:'#F87171',navy:'#1E3A8A',indigo:'#6366F1',gray:'#9CA3AF',brown:'#92400E',lylac:'#C084FC',pink:'#F472B6'}});
1
+ import{mergeDeepRight}from'ramda';import{BASE_THEME}from"./base";export var MIDNIGHT_NEON_THEME=mergeDeepRight(BASE_THEME,{label:'Midnight',colors:{primary:'#FF00FF',text:'#F0F0F0',text2:'#D4D4D4',text3:'#A3A3A3',text4:'#7A7A7A',mainBG:'#0D0D0D',overlayBG:'#1A1A1A',backdrop:'#0D0D0D',shadow:'rgba(39, 45, 52, 0.6)',divider:'rgba(255,255,255, 0.2)',blue:'#3B82F6',yellow:'#FACC15',green:'#22C55E',purple:'#A855F7',orange:'#FB923C',cyan:'#06B6D4',red:'#F87171',navy:'#1E3A8A',indigo:'#6366F1',gray:'#9CA3AF',brown:'#92400E',lylac:'#C084FC',pink:'#F472B6'}});
@@ -1 +1 @@
1
- import{mergeDeepRight}from'ramda';import{BASE_THEME}from"./base";export var DEFAULT_MSDOS_THEME=mergeDeepRight(BASE_THEME,{colors:{primary:'#FFFF00',text:'#FFFFFF',text2:'#FFD700',text3:'#CCCCCC',text4:'#999999',bg:'#0000AA',overlayBG:'#000088',backdrop:'#0000AA',shadow:'rgba(0, 0, 0, 0.6)',divider:'rgba(255,255,255,0.3)',blue:'#0000FF',yellow:'#FFFF00',green:'#00FF00',purple:'#AA00FF',orange:'#FF7700',cyan:'#00FFFF',red:'#FF0000',navy:'#000080',indigo:'#4B0082',gray:'#B0B0B0',brown:'#8B4513',lylac:'#9370DB',pink:'#FF69B4'},components:{Card:{border:1,br:5,borderColor:'divider'}}});
1
+ import{mergeDeepRight}from'ramda';import{BASE_THEME}from"./base";export var DEFAULT_MSDOS_THEME=mergeDeepRight(BASE_THEME,{label:'MSDOS',colors:{primary:'#FFFF00',text:'#FFFFFF',text2:'#E0E0E0',text3:'#B0B0B0',text4:'#8A8A8A',mainBG:'#0000AA',overlayBG:'#000088',backdrop:'#0000AA',shadow:'rgba(0, 0, 0, 0.6)',divider:'rgba(255,255,255,0.3)',blue:'#0000FF',yellow:'#FFFF00',green:'#00FF00',purple:'#AA00FF',orange:'#FF7700',cyan:'#00FFFF',red:'#FF0000',navy:'#000080',indigo:'#4B0082',gray:'#B0B0B0',brown:'#8B4513',lylac:'#9370DB',pink:'#FF69B4'},radius:{xxxs:1,xxs:2,xs:3,sm:4,md:6,lg:8,xl:10,xxl:12,xxxl:14},components:{Card:{border:1,br:5,borderColor:'divider'}}});
@@ -1 +1 @@
1
- import{mergeDeepRight}from'ramda';import{BASE_THEME}from"./base";export var OCEAN_BREEZE_THEME=mergeDeepRight(BASE_THEME,{colors:{primary:'#2B90D9',text:'#04364A',text2:'#065A82',text3:'#0B84B4',text4:'#3ABEFF',bg:'#E6F7FF',overlayBG:'#FFFFFF',backdrop:'#04364A',shadow:'rgba(39, 45, 52, 0.15)',divider:'rgba(0,0,0, 0.1)',blue:'#1D4ED8',yellow:'#FACC15',green:'#10B981',purple:'#8B5CF6',orange:'#FB923C',cyan:'#06B6D4',red:'#EF4444',navy:'#1E3A8A',indigo:'#6366F1',gray:'#9CA3AF',brown:'#A16207',lylac:'#C4B5FD',pink:'#F472B6'}});
1
+ import{mergeDeepRight}from'ramda';import{BASE_THEME}from"./base";export var OCEAN_BREEZE_THEME=mergeDeepRight(BASE_THEME,{label:'Ocean Breeze',colors:{primary:'#2B90D9',text:'#065277',text2:'#065A82',text3:'#0B84B4',text4:'#3ABEFF',mainBG:'#E6F7FF',overlayBG:'#FFFFFF',backdrop:'#04364A',shadow:'rgba(39, 45, 52, 0.15)',divider:'rgba(0,0,0, 0.1)',blue:'#1D4ED8',yellow:'#FACC15',green:'#10B981',purple:'#8B5CF6',orange:'#FB923C',cyan:'#06B6D4',red:'#EF4444',navy:'#1E3A8A',indigo:'#6366F1',gray:'#9CA3AF',brown:'#A16207',lylac:'#C4B5FD',pink:'#F472B6'}});
@@ -0,0 +1 @@
1
+ import{mergeDeepRight}from'ramda';import{BASE_THEME}from"./base";export var DEFAULT_PAPER_THEME=mergeDeepRight(BASE_THEME,{label:'Paper',colors:{primary:'#5A5A5A',text:'#000000',text2:'#333333',text3:'#555555',text4:'#777777',mainBG:'#F8F1E3',overlayBG:'#F8F1E3',backdrop:'#383E44',shadow:'rgba(0, 0, 0, 0.04)',divider:'#E3D9C9',blue:'#6B8EAE',yellow:'#EADCA6',green:'#88A288',purple:'#A391B8',orange:'#D9A066',cyan:'#9CC9C2',red:'#B85C5C',navy:'#4A4A4A',indigo:'#70788C',gray:'#B8B8B8',brown:'#8B7355',lylac:'#C7B7D4',pink:'#E4A1B2'}});
@@ -1 +1 @@
1
- import{mergeDeepRight}from'ramda';import{BASE_THEME}from"./base";export var PASTEL_DREAM_THEME=mergeDeepRight(BASE_THEME,{colors:{primary:'#FFB6C1',text:'#4B4453',text2:'#6D6875',text3:'#A093A6',text4:'#C9BBCF',bg:'#FFF7FA',overlayBG:'#FFFFFF',backdrop:'#4B4453',shadow:'rgba(39, 45, 52, 0.15)',divider:'#f0f0f0',blue:'#A5B4FC',yellow:'#FDE68A',green:'#BBF7D0',purple:'#E9D5FF',orange:'#FED7AA',cyan:'#BAE6FD',red:'#FCA5A5',navy:'#A5B4FC',indigo:'#C7D2FE',gray:'#E5E7EB',brown:'#E0B084',lylac:'#E9D5FF',pink:'#FBCFE8'}});
1
+ import{mergeDeepRight}from'ramda';import{BASE_THEME}from"./base";export var PASTEL_DREAM_THEME=mergeDeepRight(BASE_THEME,{label:'Pastel Dream',colors:{primary:'#FFB6C1',text:'#4B4453',text2:'#6D6875',text3:'#A093A6',text4:'#C9BBCF',mainBG:'#FFF7FA',overlayBG:'#FFFFFF',backdrop:'#4B4453',shadow:'rgba(39, 45, 52, 0.15)',divider:'#f0f0f0',blue:'#A5B4FC',yellow:'#FDE68A',green:'#BBF7D0',purple:'#E9D5FF',orange:'#FED7AA',cyan:'#BAE6FD',red:'#FCA5A5',navy:'#A5B4FC',indigo:'#C7D2FE',gray:'#E5E7EB',brown:'#E0B084',lylac:'#E9D5FF',pink:'#FBCFE8'}});
@@ -1 +1 @@
1
- import{mergeDeepRight}from'ramda';import{BASE_THEME}from"./base";export var SUNSET_GLOW_THEME=mergeDeepRight(BASE_THEME,{colors:{primary:'#FF6B6B',text:'#331E0A',text2:'#5C4033',text3:'#8C5A43',text4:'#B97A57',bg:'#FFF5E6',overlayBG:'#FFFFFF',backdrop:'#331E0A',shadow:'rgba(39, 45, 52, 0.15)',divider:'#f0f0f0',blue:'#3B82F6',yellow:'#FBBF24',green:'#22C55E',purple:'#A855F7',orange:'#FB923C',cyan:'#06B6D4',red:'#DC2626',navy:'#1E3A8A',indigo:'#4F46E5',gray:'#9CA3AF',brown:'#92400E',lylac:'#C084FC',pink:'#F472B6'}});
1
+ import{mergeDeepRight}from'ramda';import{BASE_THEME}from"./base";export var SUNSET_GLOW_THEME=mergeDeepRight(BASE_THEME,{label:'Sunset',colors:{primary:'#FF6B6B',text:'#4B372E',text2:'#5C4033',text3:'#8C5A43',text4:'#B97A57',mainBG:'#FFF5E6',overlayBG:'#FFFAF1',backdrop:'#331E0A',shadow:'rgba(39, 45, 52, 0.15)',divider:'#f0f0f0',blue:'#3B82F6',yellow:'#FBBF24',green:'#22C55E',purple:'#A855F7',orange:'#FB923C',cyan:'#06B6D4',red:'#DC2626',navy:'#1E3A8A',indigo:'#4F46E5',gray:'#9CA3AF',brown:'#92400E',lylac:'#C084FC',pink:'#F472B6'}});
@@ -1 +1 @@
1
- import{CYBERPUNK_DARK_THEME}from"./cyberpunkTheme";import{DEEP_WOODS_DARK_THEME}from"./deepWoodsTheme";import{DEFAULT_BLACK_THEME}from"./blackTheme";import{DEFAULT_DARK_THEME}from"./darkTheme";import{DEFAULT_LIGHT_THEME}from"./lightTheme";import{DEFAULT_MATRIX_THEME}from"./hackerTheme";import{DEFAULT_MSDOS_THEME}from"./msdosTheme";import{FOREST_MIST_THEME}from"./forestTheme";import{MIDNIGHT_NEON_THEME}from"./midnightTheme";import{OCEAN_BREEZE_THEME}from"./oceanTheme";import{PASTEL_DREAM_THEME}from"./pastelTheme";import{SUNSET_GLOW_THEME}from"./sunsetTheme";export var DEFAULT_THEMES={light:DEFAULT_LIGHT_THEME,dark:DEFAULT_DARK_THEME,black:DEFAULT_BLACK_THEME,pastel:PASTEL_DREAM_THEME,midnight:MIDNIGHT_NEON_THEME,sunset:SUNSET_GLOW_THEME,ocean:OCEAN_BREEZE_THEME,forest:FOREST_MIST_THEME,cyberpunk:CYBERPUNK_DARK_THEME,deepWoods:DEEP_WOODS_DARK_THEME,hacker:DEFAULT_MATRIX_THEME,msdos:DEFAULT_MSDOS_THEME};
1
+ import{CYBERPUNK_DARK_THEME}from"./cyberpunkTheme";import{DEFAULT_BLACK_THEME}from"./blackTheme";import{DEFAULT_DARK_THEME}from"./darkTheme";import{DEFAULT_LIGHT_THEME}from"./lightTheme";import{DEFAULT_MATRIX_THEME}from"./hackerTheme";import{DEFAULT_MSDOS_THEME}from"./msdosTheme";import{DEFAULT_PAPER_THEME}from"./paperTheme";import{MIDNIGHT_NEON_THEME}from"./midnightTheme";export var DEFAULT_THEMES={light:DEFAULT_LIGHT_THEME,dark:DEFAULT_DARK_THEME,paper:DEFAULT_PAPER_THEME,black:DEFAULT_BLACK_THEME,midnight:MIDNIGHT_NEON_THEME,cyberpunk:CYBERPUNK_DARK_THEME,hacker:DEFAULT_MATRIX_THEME,msdos:DEFAULT_MSDOS_THEME};
@@ -1 +1 @@
1
- import{mergeDeepRight,pipe}from'ramda';import React from'react';import{DEFAULT_LIGHT_THEME}from"../default/lightTheme";import{DEFAULT_THEMES}from"../default/themes";import{applyColorVariantsOnTheme}from"./colorsVariations";export function useFormattedTheme(themes,key){themes=themes||DEFAULT_THEMES;return React.useMemo(function(){return formatTheme(themes,key);},[key]);}export function formatTheme(themes,key){themes=themes||DEFAULT_THEMES;var theme=themes[key]||DEFAULT_THEMES[key]||DEFAULT_LIGHT_THEME;var baseDefaultTheme=DEFAULT_THEMES[theme.base]||DEFAULT_THEMES[key]||DEFAULT_LIGHT_THEME;return pipe(mergeDeepRight(baseDefaultTheme),applyColorVariantsOnTheme)(Object.assign({},theme));}
1
+ import{mergeDeepRight,mergeDeepLeft,pipe}from'ramda';import React from'react';import tinycolor from'tinycolor2';import{DEFAULT_LIGHT_THEME}from"../default/lightTheme";import{DEFAULT_THEMES}from"../default/themes";import{applyColorVariantsOnTheme}from"./colorsVariations";export function useFormattedTheme(themes,key){themes=themes||DEFAULT_THEMES;return React.useMemo(function(){return formatTheme(themes,key);},[key]);}export function formatTheme(themes,key){var _formattedTheme$color,_formattedTheme$color2;themes=themes||DEFAULT_THEMES;var theme=themes[key]||DEFAULT_THEMES[key]||DEFAULT_LIGHT_THEME;var baseDefaultTheme=DEFAULT_THEMES[theme.base]||DEFAULT_THEMES[key]||DEFAULT_LIGHT_THEME;var formattedTheme=pipe(mergeDeepRight(baseDefaultTheme),applyColorVariantsOnTheme,mergeDeepLeft(themes._all||{}))(Object.assign({},theme));var isDark=tinycolor((formattedTheme==null?void 0:(_formattedTheme$color=formattedTheme.colors)==null?void 0:_formattedTheme$color.overlayBG)||(formattedTheme==null?void 0:(_formattedTheme$color2=formattedTheme.colors)==null?void 0:_formattedTheme$color2.bg)).isDark();return Object.assign({},formattedTheme,{isDark:isDark,isLight:!isDark});}
@@ -1 +1 @@
1
- import tinycolor from'tinycolor2';export function getContrastColor(bg){var options=arguments.length>1&&arguments[1]!==undefined?arguments[1]:['#FFFFFF','#666666'];var tolerance=arguments.length>2&&arguments[2]!==undefined?arguments[2]:2.5;if(!options.length)return'#666666';return tinycolor.mostReadable(bg,options).toHexString();}
1
+ import tinycolor from'tinycolor2';export function getContrastColor(bg){var options=arguments.length>1&&arguments[1]!==undefined?arguments[1]:['#FFFFFF','#666666'];var tolerance=arguments.length>2&&arguments[2]!==undefined?arguments[2]:2.5;if(!options.length)return'#666666';var contrasts=options.map(function(color){return{color:color,contrast:tinycolor.readability(bg,color)};});contrasts.sort(function(a,b){return b.contrast-a.contrast;});if(contrasts.length>1&&Math.abs(contrasts[0].contrast-contrasts[1].contrast)<tolerance){return options[0];}return contrasts[0].color;}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@neko-os/ui",
3
- "version": "0.0.8",
3
+ "version": "0.0.9",
4
4
  "author": "Christian Storch <ccstorch@gmail.com>",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",
package/src/NekoUI.js CHANGED
@@ -4,6 +4,8 @@ import { OverlayHandler } from './components/structure/overlay/OverlayHandler'
4
4
  import { PortalHandler } from './components/helpers/PortalHandler'
5
5
  import { ResponsiveHandler } from './responsive/ResponsiveHandler'
6
6
  import { ThemeHandler } from './theme/ThemeHandler'
7
+ import { ThemePickerDrawer } from './components/theme'
8
+ import { useThemeHandler } from './theme'
7
9
 
8
10
  export function NekoUI({ children, ...props }) {
9
11
  return (
@@ -12,7 +14,10 @@ export function NekoUI({ children, ...props }) {
12
14
  <PortalHandler>
13
15
  <ModalsHandler>
14
16
  <NotificationsHandler>
15
- <OverlayHandler>{children}</OverlayHandler>
17
+ <OverlayHandler>
18
+ {children}
19
+ <FixedComponents />
20
+ </OverlayHandler>
16
21
  </NotificationsHandler>
17
22
  </ModalsHandler>
18
23
  </PortalHandler>
@@ -20,3 +25,10 @@ export function NekoUI({ children, ...props }) {
20
25
  </ThemeHandler>
21
26
  )
22
27
  }
28
+
29
+ // TODO: Move to ModalRouter when its ready
30
+ function FixedComponents() {
31
+ const { themePickerOpen, setThemePickerOpen } = useThemeHandler()
32
+
33
+ return <ThemePickerDrawer open={themePickerOpen} onClose={() => setThemePickerOpen(false)} />
34
+ }
@@ -1,6 +1,6 @@
1
- import tinycolor from 'tinycolor2'
2
- import { Animated, Easing } from 'react-native'
1
+ import { Animated, Easing, Platform } from 'react-native'
3
2
  import React from 'react'
3
+ import tinycolor from 'tinycolor2'
4
4
 
5
5
  export function AbsActivityIndicator({ size = 20, color, style }) {
6
6
  const spinValue = React.useRef(new Animated.Value(0)).current
@@ -12,7 +12,7 @@ export function AbsActivityIndicator({ size = 20, color, style }) {
12
12
  toValue: 1,
13
13
  duration: 1000,
14
14
  easing: Easing.linear,
15
- useNativeDriver: true,
15
+ useNativeDriver: Platform.OS !== 'web',
16
16
  })
17
17
  )
18
18
  spinAnimation.start()
@@ -26,7 +26,6 @@ export function AbsActivityIndicator({ size = 20, color, style }) {
26
26
 
27
27
  const borderWidth = size / 8
28
28
 
29
- console.log(color, bg)
30
29
  return (
31
30
  <Animated.View
32
31
  style={{
@@ -0,0 +1,43 @@
1
+ import tinycolor from 'tinycolor2'
2
+ import { Animated, Easing } from 'react-native'
3
+ import React from 'react'
4
+
5
+ export function AbsActivityIndicator({ size = 20, color, style }) {
6
+ const spinValue = React.useRef(new Animated.Value(0)).current
7
+ const bg = tinycolor(color).setAlpha(0.2).toString()
8
+
9
+ React.useEffect(() => {
10
+ const spinAnimation = Animated.loop(
11
+ Animated.timing(spinValue, {
12
+ toValue: 1,
13
+ duration: 1000,
14
+ easing: Easing.linear,
15
+ useNativeDriver: false,
16
+ })
17
+ )
18
+ spinAnimation.start()
19
+ return () => spinAnimation.stop()
20
+ }, [spinValue])
21
+
22
+ const spin = spinValue.interpolate({
23
+ inputRange: [0, 1],
24
+ outputRange: ['0deg', '360deg'],
25
+ })
26
+
27
+ const borderWidth = size / 8
28
+
29
+ return (
30
+ <Animated.View
31
+ style={{
32
+ width: size,
33
+ height: size,
34
+ borderRadius: size / 2,
35
+ borderWidth: borderWidth,
36
+ borderColor: `${bg}`,
37
+ borderTopColor: color,
38
+ transform: [{ rotate: spin }],
39
+ ...style,
40
+ }}
41
+ />
42
+ )
43
+ }