UNPKG

@expofp/floorplan

Version:

Interactive floor plan library for expos and events

2 lines (1 loc) 1.12 kB
import{jsx as c}from"react/jsx-runtime";import"./Button.scss";import y from"classnames";const B=o=>{const f=o.split(/(#\d+#)/),r=o.match(/#(\d+)#/),t=r?r[1]:null;return{content:f.map((s,e)=>s.match(/#\d+#/)?c("div",{className:"efp-button-badge",children:t},e):c("span",{children:s},e)),hasBadge:!!t}},D=({children:o,inline:f=!1,text:r,link:t,target:s="_self",disabled:e=!1,variant:m="primary",size:g="lg",ariaLabel:a,title:d,withBadge:h=!1,round:b,onClick:i})=>{const n=o??r,{content:l,hasBadge:N}=h&&typeof n=="string"?B(n):{content:n,hasBadge:!1},p=y("efp-button",`efp-button--${m}`,`efp-button--${g}`,{"efp-button--inline":f,"is-disabled":e,"efp-button--round":b});return t?c("a",{href:e?void 0:t,className:p,target:s,rel:"noopener noreferrer",onClick:e?void 0:i,onKeyDown:u=>{e||u.key!==" "||(u.preventDefault(),u.currentTarget.click())},"aria-label":a||void 0,title:d||a||(typeof n=="string"?n:void 0),role:"button","aria-disabled":e,tabIndex:e?-1:0,children:l}):c("button",{type:"button",className:p,disabled:e,onClick:i,"aria-label":a||void 0,title:d||a||(typeof n=="string"?n:void 0),children:l})};export default D;