sate-lib
Version:
A lightweight and modular React component library designed for modern web interfaces. **SATE Lib** powers the [sate.menu](https://sate.menu) platform with reusable, scalable, and themeable UI components.
1 lines • 951 B
JavaScript
import{jsx as e,jsxs as i}from"react/jsx-runtime";import{useState as o}from"react";import{Badge as r}from"../badge/badge.js";import{Icon as t}from"../icon/icon.js";import l from"./filter-chip.styles.module.js";function m({options:m,selected:n,onChange:a,mode:d="multiple",size:s="medium",className:c=""}){let u=void 0!==n,[p,f]=o([]),b=n??p;return e("div",{className:[l.root,"medium"===s?"bodyLarge":"bodyDefault",c].filter(Boolean).join(" "),role:"single"===d?"radiogroup":"group",children:m.map(({value:o,label:m,icon:n,badge:c,disabled:p})=>{let g=b.includes(o),h=n||c;return i("button",{"aria-disabled":p,className:[l.item,l[s],h&&l.hasIcon,g&&l.selected].filter(Boolean).join(" "),disabled:p,onClick:()=>{let e;e="single"===d?[o]:b.includes(o)?b.filter(e=>e!==o):[...b,o],!u&&f(e),a?.(e)},role:"single"===d?"radio":"checkbox",type:"button",children:[c&&e(r,{...c}),n&&e(t,{name:n,size:"medium"===s?24:20}),m]},o)})})}export{m as FilterChipGroup};