UNPKG

@infinityfx/fluid

Version:

React UI library, using zero-runtime CSS-in-JS.

4 lines (3 loc) 2.06 kB
"use client"; import{jsxs as r,Fragment as e,jsx as o}from"react/jsx-runtime";import{useId as a,useRef as i,useEffect as n}from"react";import t from"../../feedback/halo.js";import l from"../collapsible.js";import{Animatable as c}from"@infinityfx/lively";import{useAccordion as d}from"./root.js";import{combineClasses as s,classes as m}from"../../../core/utils.js";import{createStyles as p}from"../../../core/style.js";import{Icon as f}from"../../../core/icons.js";const u=p("accordion.item",{".button":{position:"relative",borderRadius:"var(--f-radius-sml)",padding:".6em",display:"flex",alignItems:"center",gap:"var(--f-spacing-xsm)",outline:"none",border:"none",background:"none",color:"var(--f-clr-text-100)",transition:"background-color .5s",WebkitTapHighlightColor:"transparent"},'.v__minimal[aria-expanded="true"]':{backgroundColor:"var(--f-clr-fg-100)"},".button:enabled":{cursor:"pointer"},".button:disabled":{color:"var(--f-clr-grey-500)"},'.v__minimal:disabled[aria-expanded="true"]':{backgroundColor:"var(--f-clr-fg-200)"},".content":{padding:".6em",color:"var(--f-clr-text-100)"},".icon":{height:"1em",overflow:"hidden",flexShrink:0,marginLeft:"auto"},".arrows":{display:"flex",flexDirection:"column"}});function b({children:p,cc:b={},label:g,defaultOpen:v=!1,disabled:h,...x}){const y=s(u,b),k=a(),{variant:j,open:N,toggle:_}=d(),w=i(!1),C=w.current?N.indexOf(k)>=0:v;return n((()=>{v&&_(k,!0),w.current=!0}),[]),r(e,{children:[o(t,{disabled:h,color:"var(--f-clr-primary-400)",children:r("button",{type:"button",disabled:h,"aria-expanded":C,"aria-controls":k,className:m(y.button,y[`v__${j}`]),onClick:()=>_(k,!C),children:[g,o("div",{className:y.icon,children:o(c,{animate:{translate:["0% 0%","0% -50%"],duration:.35},triggers:[{on:C},{on:!C,reverse:!0}],children:r("div",{className:y.arrows,children:[o(f,{type:"expandDown"}),o(f,{type:"collapseUp"})]})})})]})}),o(l,{shown:C,id:k,children:o("div",{...x,className:m(y.content,x.className),children:p})})]})}b.displayName="Accordion.Item";export{b as default}; //# sourceMappingURL=item.js.map