@maxio-com/react-ui-components 1.4.0 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.esm.js CHANGED
@@ -1 +1 @@
1
- import e,{useRef as t,useEffect as a,useState as o,useCallback as i,useMemo as r,useId as l}from"react";import n from"classnames";import{AnimatePresence as s,motion as c}from"framer-motion";import{useClick as m,useHover as d,useFocus as g,useDismiss as p,useFloating as f,offset as h,useInteractions as u,useRole as v,FloatingPortal as x}from"@floating-ui/react-dom-interactions";const E=({children:t,arrowPosition:a,size:o="regular",maxWidth:i=160})=>e.createElement("div",{"data-testid":"tooltip",className:n("maxio-tooltip",`maxio-tooltip--${o}`,{[`maxio-tooltip--arrow-${a}`]:a})},e.createElement("div",{className:"maxio-tooltip__content",style:{maxWidth:i}},t)),b={click:m,hover:d,focus:g,dismiss:p},y=(e,t)=>t.map((t=>b[t](e))),N=({children:o,usePortal:i=!1,isActive:r=!1,placement:l="top",interactions:m=["hover"],role:d="tooltip",renderOverlay:g,floatingElementOffset:p,motionSettings:E={},autoHideMs:b,onOverlayUpdate:N,className:_})=>{const{getReferenceProps:P,getFloatingProps:k,refs:{floating:O,reference:w},floatingElementCSSPosition:C}=(({placement:e="top",isActive:o=!1,interactions:i=["hover"],floatingElementOffset:r=0,onOverlayUpdate:l,autoHideMs:n})=>{const s=t(null),{strategy:c,x:m,y:d,context:g,floating:p,reference:x}=f({placement:e,open:o,onOpenChange:e=>l(e),middleware:[h(r)]}),{getReferenceProps:E,getFloatingProps:b}=u([...y(g,i),v(g,{role:"tooltip"})]);return a((()=>{s.current&&clearTimeout(s.current),o&&n&&(s.current=setTimeout((()=>l(!1)),n))}),[o,n]),{isActive:o,refs:{floating:p,reference:x},floatingElementCSSPosition:{position:c,top:null!=d?d:0,left:null!=m?m:0},getReferenceProps:E,getFloatingProps:b}})({role:d,isActive:r,onOverlayUpdate:N,autoHideMs:b,floatingElementOffset:p,interactions:m,placement:l}),W=e.createElement(s,null,r&&e.createElement(c.div,{ref:O,style:C,...E,...k()},g()));return e.createElement(e.Fragment,null,e.createElement("div",{ref:w,className:n("maxio-inline-flex",_),...P(),"data-testid":"overlay-trigger"},o),i?e.createElement(x,{id:"maxio-ui-portal"},W):W)},_={top:"bottom",right:"left",bottom:"top",left:"right","top-start":"bottom-left","top-end":"bottom-right","right-start":"left-top","right-end":"left-bottom","bottom-start":"top-left","bottom-end":"top-right","left-start":"right-top","left-end":"right-bottom"},P=({children:t,interactions:a=["hover"],placement:l="right",maxWidth:n=160,size:s="regular",renderContent:c,autoHideMs:m,isVisible:d,usePortal:g,className:p,onVisibilityUpdate:f})=>{const[h,u]=o(!1),v=void 0!==d,x=i((e=>{v||u(e),f&&f(e)}),[d]),b=r((()=>(e=>{const t=e.startsWith("top")||e.startsWith("bottom")?"Y":"X",a=`translate${t}(${e.startsWith("bottom")||e.startsWith("right")?"-":""}10px)`;return{initial:{opacity:0,visibility:"hidden",transform:a},animate:{opacity:1,visibility:"visible",transform:`translate${t}(0px)`},exit:{opacity:0,visibility:"hidden",transform:a},transition:{ease:[.4,0,.5,1],duration:.2}}})(l)),[l]);return e.createElement(N,{role:"tooltip",className:p,floatingElementOffset:5,motionSettings:b,isActive:v?d:h,onOverlayUpdate:x,autoHideMs:m,usePortal:g,placement:l,interactions:a,renderOverlay:()=>e.createElement(E,{size:s,arrowPosition:_[l],maxWidth:n},c())},t)},k=({defaultChecked:t,checked:a,onChange:o,disabled:r,valueDescription:s,valueDescriptionPosition:c,className:m,name:d,id:g})=>{const p=l(),f="boolean"==typeof t,h=g||p,u="left"===c?"row":"row-reverse",v=s&&c,x=i((e=>{if("Enter"===e.code||"Space"===e.code){e.preventDefault();const t=e.currentTarget.checked;f&&(e.currentTarget.checked=!t),o&&o(!t,e)}}),[f,o]);return e.createElement("div",{className:n("maxio-toggle",m,{"maxio-toggle--disabled":r}),style:{display:"inline-flex",flexDirection:u},"data-testid":"toggle-container"},v?e.createElement("label",{className:"maxio-toggle__label",htmlFor:h},s):null,e.createElement("div",{className:"maxio-toggle__container"},e.createElement("input",{type:"checkbox",defaultChecked:t,checked:a,onChange:e=>{o&&o(e.target.checked,e)},onKeyDown:x,disabled:r,"aria-label":v?void 0:s,className:"maxio-toggle__checkbox",id:h,name:d}),e.createElement("div",{className:"maxio-toggle__track",role:"switch","aria-checked":a},e.createElement("div",{className:"maxio-toggle__handle"}),e.createElement("span",{className:"maxio-toggle__icon"},e.createElement("i",{className:"maxio-toggle__icon-on"})),e.createElement("span",{className:"maxio-toggle__icon"},e.createElement("i",{className:"maxio-toggle__icon-off"})))))},O=({className:t,src:a,alt:o="avatar"})=>e.createElement("img",{className:n("maxio-avatar",t),alt:o,src:a}),w=({variant:t,white:a,className:o})=>e.createElement("i",{className:n("maxio-icon",`maxio-icon-${t}`,a&&"maxio-icon--white",o)});export{O as Avatar,w as Icon,k as Toggle,P as TooltipTrigger};
1
+ import a from"react";import r from"classnames";const t=({className:t,src:m,alt:s="avatar"})=>a.createElement("img",{className:r("maxio-avatar",t),alt:s,src:m});export{t as Avatar};
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";var e=require("react"),t=require("classnames"),a=require("framer-motion"),o=require("@floating-ui/react-dom-interactions");const i=({children:a,arrowPosition:o,size:i="regular",maxWidth:r=160})=>e.createElement("div",{"data-testid":"tooltip",className:t("maxio-tooltip",`maxio-tooltip--${i}`,{[`maxio-tooltip--arrow-${o}`]:o})},e.createElement("div",{className:"maxio-tooltip__content",style:{maxWidth:r}},a)),r={click:o.useClick,hover:o.useHover,focus:o.useFocus,dismiss:o.useDismiss},l=(e,t)=>t.map((t=>r[t](e))),n=({children:i,usePortal:r=!1,isActive:n=!1,placement:s="top",interactions:c=["hover"],role:m="tooltip",renderOverlay:g,floatingElementOffset:d,motionSettings:p={},autoHideMs:f,onOverlayUpdate:u,className:h})=>{const{getReferenceProps:v,getFloatingProps:x,refs:{floating:E,reference:b},floatingElementCSSPosition:y}=(({placement:t="top",isActive:a=!1,interactions:i=["hover"],floatingElementOffset:r=0,onOverlayUpdate:n,autoHideMs:s})=>{const c=e.useRef(null),{strategy:m,x:g,y:d,context:p,floating:f,reference:u}=o.useFloating({placement:t,open:a,onOpenChange:e=>n(e),middleware:[o.offset(r)]}),{getReferenceProps:h,getFloatingProps:v}=o.useInteractions([...l(p,i),o.useRole(p,{role:"tooltip"})]);return e.useEffect((()=>{c.current&&clearTimeout(c.current),a&&s&&(c.current=setTimeout((()=>n(!1)),s))}),[a,s]),{isActive:a,refs:{floating:f,reference:u},floatingElementCSSPosition:{position:m,top:null!=d?d:0,left:null!=g?g:0},getReferenceProps:h,getFloatingProps:v}})({role:m,isActive:n,onOverlayUpdate:u,autoHideMs:f,floatingElementOffset:d,interactions:c,placement:s}),N=e.createElement(a.AnimatePresence,null,n&&e.createElement(a.motion.div,{ref:E,style:y,...p,...x()},g()));return e.createElement(e.Fragment,null,e.createElement("div",{ref:b,className:t("maxio-inline-flex",h),...v(),"data-testid":"overlay-trigger"},i),r?e.createElement(o.FloatingPortal,{id:"maxio-ui-portal"},N):N)},s={top:"bottom",right:"left",bottom:"top",left:"right","top-start":"bottom-left","top-end":"bottom-right","right-start":"left-top","right-end":"left-bottom","bottom-start":"top-left","bottom-end":"top-right","left-start":"right-top","left-end":"right-bottom"};exports.Avatar=({className:a,src:o,alt:i="avatar"})=>e.createElement("img",{className:t("maxio-avatar",a),alt:i,src:o}),exports.Icon=({variant:a,white:o,className:i})=>e.createElement("i",{className:t("maxio-icon",`maxio-icon-${a}`,o&&"maxio-icon--white",i)}),exports.Toggle=({defaultChecked:a,checked:o,onChange:i,disabled:r,valueDescription:l,valueDescriptionPosition:n,className:s,name:c,id:m})=>{const g=e.useId(),d="boolean"==typeof a,p=m||g,f="left"===n?"row":"row-reverse",u=l&&n,h=e.useCallback((e=>{if("Enter"===e.code||"Space"===e.code){e.preventDefault();const t=e.currentTarget.checked;d&&(e.currentTarget.checked=!t),i&&i(!t,e)}}),[d,i]);return e.createElement("div",{className:t("maxio-toggle",s,{"maxio-toggle--disabled":r}),style:{display:"inline-flex",flexDirection:f},"data-testid":"toggle-container"},u?e.createElement("label",{className:"maxio-toggle__label",htmlFor:p},l):null,e.createElement("div",{className:"maxio-toggle__container"},e.createElement("input",{type:"checkbox",defaultChecked:a,checked:o,onChange:e=>{i&&i(e.target.checked,e)},onKeyDown:h,disabled:r,"aria-label":u?void 0:l,className:"maxio-toggle__checkbox",id:p,name:c}),e.createElement("div",{className:"maxio-toggle__track",role:"switch","aria-checked":o},e.createElement("div",{className:"maxio-toggle__handle"}),e.createElement("span",{className:"maxio-toggle__icon"},e.createElement("i",{className:"maxio-toggle__icon-on"})),e.createElement("span",{className:"maxio-toggle__icon"},e.createElement("i",{className:"maxio-toggle__icon-off"})))))},exports.TooltipTrigger=({children:t,interactions:a=["hover"],placement:o="right",maxWidth:r=160,size:l="regular",renderContent:c,autoHideMs:m,isVisible:g,usePortal:d,className:p,onVisibilityUpdate:f})=>{const[u,h]=e.useState(!1),v=void 0!==g,x=e.useCallback((e=>{v||h(e),f&&f(e)}),[g]),E=e.useMemo((()=>(e=>{const t=e.startsWith("top")||e.startsWith("bottom")?"Y":"X",a=`translate${t}(${e.startsWith("bottom")||e.startsWith("right")?"-":""}10px)`;return{initial:{opacity:0,visibility:"hidden",transform:a},animate:{opacity:1,visibility:"visible",transform:`translate${t}(0px)`},exit:{opacity:0,visibility:"hidden",transform:a},transition:{ease:[.4,0,.5,1],duration:.2}}})(o)),[o]);return e.createElement(n,{role:"tooltip",className:p,floatingElementOffset:5,motionSettings:E,isActive:v?g:u,onOverlayUpdate:x,autoHideMs:m,usePortal:d,placement:o,interactions:a,renderOverlay:()=>e.createElement(i,{size:l,arrowPosition:s[o],maxWidth:r},c())},t)};
1
+ "use strict";var a=require("react"),e=require("classnames");exports.Avatar=({className:r,src:s,alt:t="avatar"})=>a.createElement("img",{className:e("maxio-avatar",r),alt:t,src:s});
2
2
  //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@maxio-com/react-ui-components",
3
- "version": "1.4.0",
3
+ "version": "1.5.0",
4
4
  "description": "React UI components",
5
5
  "license": "MIT",
6
6
  "main": "dist/index.js",
@@ -21,6 +21,7 @@
21
21
  "@babel/core": "^7.19.3",
22
22
  "@babel/preset-env": "^7.19.4",
23
23
  "@babel/preset-react": "^7.18.6",
24
+ "@babel/preset-typescript": "^7.22.5",
24
25
  "@rollup/plugin-babel": "^6.0.0",
25
26
  "@rollup/plugin-commonjs": "^23.0.0",
26
27
  "@rollup/plugin-node-resolve": "^15.0.0",
@@ -47,5 +48,5 @@
47
48
  "classnames": "^2.3.2",
48
49
  "framer-motion": "^7.6.4"
49
50
  },
50
- "gitHead": "cc68a2213b0d3f84628bbc021142293f475f84cb"
51
+ "gitHead": "3a3c2f74b5a2799f9906f2ccc8a65f48b5faeda7"
51
52
  }
@@ -1,60 +1,4 @@
1
1
  /// <reference types="react" />
2
- import React, { FC } from 'react';
3
- import { AnimationProps } from 'framer-motion';
4
-
5
- declare type ArrowPosition = 'top' | 'top-left' | 'top-right' | 'bottom' | 'bottom-left' | 'bottom-right' | 'left' | 'left-top' | 'left-bottom' | 'right' | 'right-top' | 'right-bottom';
6
-
7
- declare type TooltipProps = {
8
- children: React.ReactNode;
9
- size?: 'regular' | 'small';
10
- arrowPosition?: ArrowPosition;
11
- maxWidth?: number | 'none';
12
- };
13
-
14
- declare type Alignment = 'start' | 'end';
15
- declare type Side = 'top' | 'right' | 'bottom' | 'left';
16
- declare type AlignedPlacement = `${Side}-${Alignment}`;
17
- declare type Placement = Side | AlignedPlacement;
18
- declare type Interactions = 'click' | 'hover' | 'focus' | 'dismiss';
19
- declare type OverlayAriaRole = 'tooltip' | 'dialog' | 'alertdialog' | 'menu' | 'listbox' | 'grid' | 'tree';
20
-
21
- declare type OverlayTriggerProps = {
22
- children: React.ReactNode;
23
- placement?: Placement;
24
- usePortal?: boolean;
25
- interactions?: Interactions[];
26
- renderOverlay: () => React.ReactNode;
27
- role?: OverlayAriaRole;
28
- floatingElementOffset?: number;
29
- isActive?: boolean;
30
- onOverlayUpdate: (isActive: boolean) => void;
31
- motionSettings?: AnimationProps;
32
- autoHideMs?: number;
33
- className?: string;
34
- };
35
-
36
- declare type Props = {
37
- children: React.ReactNode;
38
- isVisible?: boolean;
39
- onVisibilityUpdate?: (isVisible: boolean) => void;
40
- renderContent: () => React.ReactNode;
41
- } & Pick<OverlayTriggerProps, 'placement' | 'interactions' | 'usePortal' | 'autoHideMs' | 'className'> & Pick<TooltipProps, 'size' | 'maxWidth'>;
42
- declare const TooltipTrigger: FC<Props>;
43
- //# sourceMappingURL=TooltipTrigger.d.ts.map
44
-
45
- declare type ToggleProps = {
46
- checked?: boolean;
47
- defaultChecked?: boolean;
48
- onChange?: (value: boolean, event?: React.ChangeEvent<HTMLInputElement> | React.KeyboardEvent<HTMLInputElement>) => void;
49
- disabled?: boolean;
50
- name?: string;
51
- valueDescription?: string;
52
- valueDescriptionPosition?: 'left' | 'right';
53
- className?: string;
54
- id?: string;
55
- };
56
- declare const Toggle: ({ defaultChecked, checked, onChange, disabled, valueDescription, valueDescriptionPosition, className, name, id, }: ToggleProps) => JSX.Element;
57
-
58
2
  declare type AvatarProps = {
59
3
  className?: string;
60
4
  src: string;
@@ -64,16 +8,4 @@ declare type AvatarProps = {
64
8
  declare const Avatar: ({ className, src, alt }: AvatarProps) => JSX.Element;
65
9
  //# sourceMappingURL=Avatar.d.ts.map
66
10
 
67
- declare const ICONS: readonly ["address-card", "arrow-down", "arrow-down-left", "arrow-down-right", "arrow-left", "arrow-left-right", "arrow-right", "arrow-up", "arrow-up-left", "arrow-up-right", "bank", "bar-chart", "briefcase", "building", "business-intelligence", "chat", "check", "check-circle", "chevron-down", "circle-dash", "circle-fill", "circle-stroke", "clipboard", "cloud", "cog", "copy-file", "credit-card", "cross", "cross-circle", "dashboard", "document", "document-blank", "dollar", "edit", "error", "globe", "graph", "home", "info-circle", "life-buoy", "list", "login", "logout", "megaphone", "menu", "menu-chevron-left", "menu-chevron-right", "notification", "notification-unread", "plus", "plus-circle", "profile", "question-circle", "recently-viewed", "search", "trash", "warning-circle"];
68
-
69
- declare type IconVariant = typeof ICONS[number];
70
- declare type IconProps = {
71
- className?: string;
72
- variant: IconVariant;
73
- white?: boolean;
74
- };
75
-
76
- declare const Icon: ({ variant, white, className }: IconProps) => JSX.Element;
77
- //# sourceMappingURL=Icon.d.ts.map
78
-
79
- export { Avatar, Icon, Toggle, TooltipTrigger };
11
+ export { Avatar };