boreal-ui 0.0.17 → 0.0.19
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/core/{Accordion-DOhvj3Ty.js → Accordion-CY5BCoA7.js} +2 -2
- package/dist/core/Accordion-CY5BCoA7.js.map +1 -0
- package/dist/core/{Accordion-DQsSUVAE.cjs → Accordion-D6hxjkE1.cjs} +2 -2
- package/dist/core/Accordion-D6hxjkE1.cjs.map +1 -0
- package/dist/core/Accordion.cjs.js +1 -1
- package/dist/core/Accordion.js +1 -1
- package/dist/core/{Avatar-B5aqfDZX.cjs → Avatar-B3hD_M2R.cjs} +2 -2
- package/dist/core/Avatar-B3hD_M2R.cjs.map +1 -0
- package/dist/core/{Avatar-mhtrG5FT.js → Avatar-BxHxzh30.js} +2 -2
- package/dist/core/Avatar-BxHxzh30.js.map +1 -0
- package/dist/core/Avatar.cjs.js +1 -1
- package/dist/core/Avatar.js +1 -1
- package/dist/core/{Footer-Dc_CuIC1.cjs → Footer-BKfoTV0l.cjs} +2 -2
- package/dist/core/{Footer-Dc_CuIC1.cjs.map → Footer-BKfoTV0l.cjs.map} +1 -1
- package/dist/core/{Footer-7ixaMvFc.js → Footer-CJOKuXJh.js} +2 -2
- package/dist/core/{Footer-7ixaMvFc.js.map → Footer-CJOKuXJh.js.map} +1 -1
- package/dist/core/Footer.cjs.js +1 -1
- package/dist/core/Footer.js +1 -1
- package/dist/core/{NavBar-CDI5S3fK.cjs → NavBar-C8zI9Lvt.cjs} +2 -2
- package/dist/core/NavBar-C8zI9Lvt.cjs.map +1 -0
- package/dist/core/{NavBar-Dyd9USO4.js → NavBar-CNoWBQIV.js} +2 -2
- package/dist/core/NavBar-CNoWBQIV.js.map +1 -0
- package/dist/core/NavBar.cjs.js +1 -1
- package/dist/core/NavBar.js +1 -1
- package/dist/core/{PopOver-OijKNHZU.cjs → PopOver-BdZXa2hs.cjs} +2 -2
- package/dist/core/{PopOver-OijKNHZU.cjs.map → PopOver-BdZXa2hs.cjs.map} +1 -1
- package/dist/core/{PopOver-DNqWcWjU.js → PopOver-C6AnRNop.js} +2 -2
- package/dist/core/{PopOver-DNqWcWjU.js.map → PopOver-C6AnRNop.js.map} +1 -1
- package/dist/core/PopOver.cjs.js +1 -1
- package/dist/core/PopOver.js +1 -1
- package/dist/core/{STT-aXWWubSC.js → STT-CA0J3Cr9.js} +4 -3
- package/dist/core/STT-CA0J3Cr9.js.map +1 -0
- package/dist/core/{STT-D6L-amjZ.cjs → STT-CKXp-dIO.cjs} +4 -3
- package/dist/core/STT-CKXp-dIO.cjs.map +1 -0
- package/dist/core/ScrollToTop.cjs.js +1 -1
- package/dist/core/ScrollToTop.js +1 -1
- package/dist/core/{Select-_12yQ-yj.js → Select-CDWU_cuN.js} +2 -2
- package/dist/core/{Select-_12yQ-yj.js.map → Select-CDWU_cuN.js.map} +1 -1
- package/dist/core/{Select-CitauzQm.cjs → Select-DWzxymiA.cjs} +2 -2
- package/dist/core/{Select-CitauzQm.cjs.map → Select-DWzxymiA.cjs.map} +1 -1
- package/dist/core/Select.cjs.js +1 -1
- package/dist/core/Select.js +1 -1
- package/dist/core/Sidebar-CqTJJULG.cjs.map +1 -1
- package/dist/core/Sidebar-z0mG5nn_.js.map +1 -1
- package/dist/core/{Taginput-BMPHihSz.cjs → TagInput-BMPHihSz.cjs} +1 -1
- package/dist/core/{Taginput-BMPHihSz.cjs.map → TagInput-BMPHihSz.cjs.map} +1 -1
- package/dist/core/{Taginput-CrScreYL.js → TagInput-CrScreYL.js} +1 -1
- package/dist/core/{Taginput-CrScreYL.js.map → TagInput-CrScreYL.js.map} +1 -1
- package/dist/core/TagInput.cjs.js +2 -2
- package/dist/core/TagInput.js +1 -1
- package/dist/core/{Toolbar-Cg_ofRqY.cjs → Toolbar-CEiYjTwB.cjs} +2 -2
- package/dist/core/{Toolbar-Cg_ofRqY.cjs.map → Toolbar-CEiYjTwB.cjs.map} +1 -1
- package/dist/core/{Toolbar-94Pu5-SL.js → Toolbar-D3gg3Q2K.js} +2 -2
- package/dist/core/{Toolbar-94Pu5-SL.js.map → Toolbar-D3gg3Q2K.js.map} +1 -1
- package/dist/core/Toolbar.cjs.js +1 -1
- package/dist/core/Toolbar.js +1 -1
- package/dist/core/index.cjs.js +10 -10
- package/dist/core/index.js +9 -9
- package/dist/next/{Accordion-Bu2IAjE6.js → Accordion-DD5oHwaa.js} +2 -2
- package/dist/next/Accordion-DD5oHwaa.js.map +1 -0
- package/dist/next/{Accordion-BD-HsAos.cjs → Accordion-P9JXxfBX.cjs} +2 -2
- package/dist/next/Accordion-P9JXxfBX.cjs.map +1 -0
- package/dist/next/Accordion.cjs.js +1 -1
- package/dist/next/Accordion.js +1 -1
- package/dist/next/{Avatar-B0vflpuy.js → Avatar-0OXmXwmQ.js} +2 -2
- package/dist/next/Avatar-0OXmXwmQ.js.map +1 -0
- package/dist/next/{Avatar-DjuHvrMV.cjs → Avatar-CguQwhBN.cjs} +2 -2
- package/dist/next/Avatar-CguQwhBN.cjs.map +1 -0
- package/dist/next/Avatar.cjs.js +1 -1
- package/dist/next/Avatar.js +1 -1
- package/dist/next/{Footer-J0Tb7-n4.cjs → Footer-CLvhExUU.cjs} +2 -2
- package/dist/next/{Footer-J0Tb7-n4.cjs.map → Footer-CLvhExUU.cjs.map} +1 -1
- package/dist/next/{Footer-bb_8EH_R.js → Footer-CzA8xCa3.js} +2 -2
- package/dist/next/{Footer-bb_8EH_R.js.map → Footer-CzA8xCa3.js.map} +1 -1
- package/dist/next/Footer.cjs.js +1 -1
- package/dist/next/Footer.js +1 -1
- package/dist/next/{NavBar-Br6pYp7w.js → NavBar-BXbAUNSJ.js} +2 -2
- package/dist/next/NavBar-BXbAUNSJ.js.map +1 -0
- package/dist/next/{NavBar-CGuVgKpW.cjs → NavBar-CXqV4sKP.cjs} +2 -2
- package/dist/next/NavBar-CXqV4sKP.cjs.map +1 -0
- package/dist/next/NavBar.cjs.js +1 -1
- package/dist/next/NavBar.js +1 -1
- package/dist/next/{PopOver-CHs0s9rp.cjs → PopOver-CAxcmHRx.cjs} +2 -2
- package/dist/next/{PopOver-CHs0s9rp.cjs.map → PopOver-CAxcmHRx.cjs.map} +1 -1
- package/dist/next/{PopOver-pllmYvp6.js → PopOver-Cz4BCVFe.js} +2 -2
- package/dist/next/{PopOver-pllmYvp6.js.map → PopOver-Cz4BCVFe.js.map} +1 -1
- package/dist/next/PopOver.cjs.js +1 -1
- package/dist/next/PopOver.js +1 -1
- package/dist/next/{STT-Br81yPXp.js → STT-B5eE92VH.js} +4 -3
- package/dist/next/STT-B5eE92VH.js.map +1 -0
- package/dist/next/{STT-C0q3yqiJ.cjs → STT-CLZjfsV_.cjs} +4 -3
- package/dist/next/STT-CLZjfsV_.cjs.map +1 -0
- package/dist/next/ScrollToTop.cjs.js +1 -1
- package/dist/next/ScrollToTop.js +1 -1
- package/dist/next/{Select-CdWyrGrV.js → Select-D-9wuabW.js} +2 -2
- package/dist/next/{Select-CdWyrGrV.js.map → Select-D-9wuabW.js.map} +1 -1
- package/dist/next/{Select-Bln5-seQ.cjs → Select-DxQS7u41.cjs} +2 -2
- package/dist/next/{Select-Bln5-seQ.cjs.map → Select-DxQS7u41.cjs.map} +1 -1
- package/dist/next/Select.cjs.js +1 -1
- package/dist/next/Select.js +1 -1
- package/dist/next/Sidebar-B9jHy0wy.js.map +1 -1
- package/dist/next/Sidebar-PUffGMhm.cjs.map +1 -1
- package/dist/next/{Taginput-BcNgwFOj.cjs → TagInput-BcNgwFOj.cjs} +1 -1
- package/dist/next/{Taginput-BcNgwFOj.cjs.map → TagInput-BcNgwFOj.cjs.map} +1 -1
- package/dist/next/{Taginput-CdYMgcYY.js → TagInput-CdYMgcYY.js} +1 -1
- package/dist/next/{Taginput-CdYMgcYY.js.map → TagInput-CdYMgcYY.js.map} +1 -1
- package/dist/next/TagInput.cjs.js +2 -2
- package/dist/next/TagInput.js +1 -1
- package/dist/next/{Toolbar-B8AB6ADW.js → Toolbar-C1_m1ygd.js} +2 -2
- package/dist/next/{Toolbar-B8AB6ADW.js.map → Toolbar-C1_m1ygd.js.map} +1 -1
- package/dist/next/{Toolbar-BIruaq82.cjs → Toolbar-OpUQ2wdO.cjs} +2 -2
- package/dist/next/{Toolbar-BIruaq82.cjs.map → Toolbar-OpUQ2wdO.cjs.map} +1 -1
- package/dist/next/Toolbar.cjs.js +1 -1
- package/dist/next/Toolbar.js +1 -1
- package/dist/next/index.cjs.js +10 -10
- package/dist/next/index.js +10 -10
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/types/components/ScrollToTop/ScrollToTop.types.d.ts +40 -0
- package/dist/types/components/ScrollToTop/ScrollToTop.types.d.ts.map +1 -0
- package/dist/types/components/ScrollToTop/ScrollToTopBase.d.ts +2 -7
- package/dist/types/components/ScrollToTop/ScrollToTopBase.d.ts.map +1 -1
- package/dist/types/components/Sidebar/Sidebar.types.d.ts +0 -6
- package/dist/types/components/Sidebar/Sidebar.types.d.ts.map +1 -1
- package/dist/types/components/Sidebar/SidebarBase.d.ts +1 -0
- package/dist/types/components/Sidebar/SidebarBase.d.ts.map +1 -1
- package/dist/types/components/TagInput/core/{Taginput.d.ts → TagInput.d.ts} +1 -1
- package/dist/types/components/TagInput/core/{Taginput.d.ts.map → TagInput.d.ts.map} +1 -1
- package/dist/types/components/TagInput/next/{Taginput.d.ts → TagInput.d.ts} +1 -1
- package/dist/types/components/TagInput/next/TagInput.d.ts.map +1 -0
- package/dist/types/index.core.d.ts +1 -1
- package/dist/types/index.next.d.ts +1 -1
- package/dist/types/public.types.d.ts +1 -0
- package/package.json +1 -1
- package/dist/core/Accordion-DOhvj3Ty.js.map +0 -1
- package/dist/core/Accordion-DQsSUVAE.cjs.map +0 -1
- package/dist/core/Avatar-B5aqfDZX.cjs.map +0 -1
- package/dist/core/Avatar-mhtrG5FT.js.map +0 -1
- package/dist/core/NavBar-CDI5S3fK.cjs.map +0 -1
- package/dist/core/NavBar-Dyd9USO4.js.map +0 -1
- package/dist/core/STT-D6L-amjZ.cjs.map +0 -1
- package/dist/core/STT-aXWWubSC.js.map +0 -1
- package/dist/next/Accordion-BD-HsAos.cjs.map +0 -1
- package/dist/next/Accordion-Bu2IAjE6.js.map +0 -1
- package/dist/next/Avatar-B0vflpuy.js.map +0 -1
- package/dist/next/Avatar-DjuHvrMV.cjs.map +0 -1
- package/dist/next/NavBar-Br6pYp7w.js.map +0 -1
- package/dist/next/NavBar-CGuVgKpW.cjs.map +0 -1
- package/dist/next/STT-Br81yPXp.js.map +0 -1
- package/dist/next/STT-C0q3yqiJ.cjs.map +0 -1
- package/dist/types/components/TagInput/next/Taginput.d.ts.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sidebar-B9jHy0wy.js","sources":["../../src/components/Sidebar/SidebarBase.tsx","../../src/components/Sidebar/next/Sidebar.tsx"],"sourcesContent":["import React, { useState, useMemo, useRef, useEffect } from \"react\";\nimport { SidebarProps } from \"./Sidebar.types\";\nimport { combineClassNames } from \"@/utils/classNames\";\nimport {\n getDefaultRounding,\n getDefaultShadow,\n getDefaultTheme,\n} from \"@/config/boreal-style-config\";\nimport { capitalize } from \"@/utils/capitalize\";\nimport { ChevronDownIcon } from \"@/Icons\";\n\nexport interface BaseSidebarProps extends SidebarProps {\n classMap: Record<string, string>;\n}\n\nconst SidebarBase: React.FC<BaseSidebarProps> = ({\n links,\n classMap,\n currentPath,\n LinkComponent = \"a\",\n theme = getDefaultTheme(),\n rounding = getDefaultRounding(),\n shadow = getDefaultShadow(),\n state = \"\",\n showFooter = false,\n footerLinks,\n footerVersion,\n outline = false,\n className = \"\",\n \"data-testid\": testId = \"sidebar\",\n ariaLabel = \"Sidebar navigation\",\n ...rest\n}) => {\n const [openItems, setOpenItems] = useState<Record<string, boolean>>({});\n\n const toggleItem = (key: string) => {\n setOpenItems((prev) => ({ ...prev, [key]: !prev[key] }));\n };\n\n const submenuRefs = useRef<Record<string, HTMLDivElement | null>>({});\n\n const setSubmenuRef = (key: string, el: HTMLDivElement | null) => {\n submenuRefs.current[key] = el;\n };\n\n const getSubmenuHeight = (key: string) => {\n const el = submenuRefs.current[key];\n return el ? `${el.scrollHeight}px` : \"0px\";\n };\n\n const containerClasses = useMemo(\n () =>\n combineClassNames(\n classMap.wrapper,\n className,\n classMap[theme],\n classMap[state],\n shadow && classMap[`shadow${capitalize(shadow)}`],\n rounding && classMap[`round${capitalize(rounding)}`],\n outline ? classMap.outline : \"\"\n ),\n [className, theme, state, outline, rounding, shadow]\n );\n\n const renderLinks = (items: typeof links, isChild = false) => (\n <ul\n className={combineClassNames(\n classMap.list,\n isChild ? classMap.childList : \"\"\n )}\n data-testid={`${testId}-list`}\n >\n {items.map(({ label, href, children, icon }) => {\n const isActive = href && currentPath === href;\n const isOpen = openItems[label] || false;\n\n return (\n <li\n key={label}\n className={classMap.item}\n data-testid={`${testId}-listItems`}\n >\n {children && children.length > 0 ? (\n <>\n <button\n type=\"button\"\n className={combineClassNames(\n classMap.link,\n isOpen ? classMap.active : \"\"\n )}\n onClick={() => toggleItem(label)}\n aria-expanded={isOpen}\n data-testid={`${testId}-exapndItemButton`}\n >\n {icon && <span className={classMap.icon}>{icon}</span>}\n <span data-testid={`${testId}-exapndItemLabel`}>{label}</span>\n <ChevronDownIcon\n className={combineClassNames(\n classMap.chevron,\n isOpen ? classMap.chevronOpen : \"\"\n )}\n data-testid={`${testId}-exapndIcon`}\n />\n </button>\n <div\n ref={(el) => setSubmenuRef(label, el)}\n className={combineClassNames(\n classMap.submenu,\n isOpen ? classMap.submenuOpen : \"\"\n )}\n style={{\n maxHeight: isOpen ? getSubmenuHeight(label) : \"0px\",\n }}\n data-testid={`${testId}-subMenu`}\n >\n {renderLinks(children, true)}\n </div>\n </>\n ) : href ? (\n <LinkComponent\n href={href}\n className={combineClassNames(\n classMap.link,\n isChild ? classMap.childLink : \"\",\n isActive ? classMap.active : \"\"\n )}\n aria-current={isActive ? \"page\" : undefined}\n data-testid={`${testId}-sidebarLink`}\n >\n {icon && <span className={classMap.icon}>{icon}</span>}\n {label}\n </LinkComponent>\n ) : (\n <span\n className={combineClassNames(\n classMap.link,\n isChild ? classMap.childLink : \"\"\n )}\n data-testid={`${testId}-sidebarLabel`}\n >\n {icon && <span className={classMap.icon}>{icon}</span>}\n {label}\n </span>\n )}\n </li>\n );\n })}\n </ul>\n );\n\n return (\n <nav\n className={containerClasses}\n aria-label={ariaLabel}\n {...rest}\n data-testid={testId}\n >\n <nav className={classMap.nav}>{renderLinks(links)}</nav>\n {showFooter && (\n <footer className={classMap.footer} data-testid={`${testId}-footer`}>\n {footerLinks?.map(({ label, href }) => (\n <LinkComponent\n key={label}\n href={href}\n className={classMap.footerLink}\n data-testid={`${testId}-footerLink`}\n >\n {label}\n </LinkComponent>\n ))}\n\n {footerVersion && (\n <span\n className={classMap.footerVersion}\n data-testid={`${testId}-footerVersion`}\n >\n {footerVersion}\n </span>\n )}\n </footer>\n )}\n </nav>\n );\n};\n\nSidebarBase.displayName = \"SidebarBase\";\n\nexport default SidebarBase;\n","\"use client\";\n\nimport React from \"react\";\nimport Link from \"next/link\";\nimport { usePathname } from \"next/navigation\";\nimport SidebarBase from \"../SidebarBase\";\nimport styles from \"./Sidebar.module.scss\";\nimport { SidebarProps } from \"../Sidebar.types\";\n\nconst Sidebar: React.FC<SidebarProps> = ({ links, ...rest }) => {\n const currentPath = usePathname();\n\n const { currentPath: _ignored, ...safeRest } = rest;\n\n return (\n <SidebarBase\n links={links}\n classMap={styles}\n currentPath={currentPath}\n LinkComponent={Link}\n key={currentPath}\n {...safeRest}\n />\n );\n};\n\nexport default Sidebar;\n"],"names":["footerVersion","outline","usePathname"],"mappings":";;;;;;;;AAeA,MAAM,cAA0C,CAAC;AAAA,EAC/C;AAAA,EACA;AAAA,EACA;AAAA,EACA,gBAAgB;AAAA,EAChB,QAAQ,gBAAA;AAAA,EACR,WAAW,mBAAA;AAAA,EACX,SAAS,iBAAA;AAAA,EACT,QAAQ;AAAA,EACR,aAAa;AAAA,EACb;AAAA,EACA,eAAAA;AAAA,EACA,SAAAC,WAAU;AAAA,EACV,YAAY;AAAA,EACZ,eAAe,SAAS;AAAA,EACxB,YAAY;AAAA,EACZ,GAAG;AACL,MAAM;AACJ,QAAM,CAAC,WAAW,YAAY,IAAI,SAAkC,CAAA,CAAE;AAEtE,QAAM,aAAa,CAAC,QAAgB;AAClC,iBAAa,CAAC,UAAU,EAAE,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC,KAAK,GAAG,EAAA,EAAI;AAAA,EACzD;AAEA,QAAM,cAAc,OAA8C,EAAE;AAEpE,QAAM,gBAAgB,CAAC,KAAa,OAA8B;AAChE,gBAAY,QAAQ,GAAG,IAAI;AAAA,EAC7B;AAEA,QAAM,mBAAmB,CAAC,QAAgB;AACxC,UAAM,KAAK,YAAY,QAAQ,GAAG;AAClC,WAAO,KAAK,GAAG,GAAG,YAAY,OAAO;AAAA,EACvC;AAEA,QAAM,mBAAmB;AAAA,IACvB,MACE;AAAA,MACE,SAAS;AAAA,MACT;AAAA,MACA,SAAS,KAAK;AAAA,MACd,SAAS,KAAK;AAAA,MACd,UAAU,SAAS,SAAS,WAAW,MAAM,CAAC,EAAE;AAAA,MAChD,YAAY,SAAS,QAAQ,WAAW,QAAQ,CAAC,EAAE;AAAA,MACnDA,WAAU,SAAS,UAAU;AAAA,IAAA;AAAA,IAEjC,CAAC,WAAW,OAAO,OAAOA,UAAS,UAAU,MAAM;AAAA,EAAA;AAGrD,QAAM,cAAc,CAAC,OAAqB,UAAU,UAClD;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW;AAAA,QACT,SAAS;AAAA,QACT,UAAU,SAAS,YAAY;AAAA,MAAA;AAAA,MAEjC,eAAa,GAAG,MAAM;AAAA,MAErB,UAAA,MAAM,IAAI,CAAC,EAAE,OAAO,MAAM,UAAU,WAAW;AAC9C,cAAM,WAAW,QAAQ,gBAAgB;AACzC,cAAM,SAAS,UAAU,KAAK,KAAK;AAEnC,eACE;AAAA,UAAC;AAAA,UAAA;AAAA,YAEC,WAAW,SAAS;AAAA,YACpB,eAAa,GAAG,MAAM;AAAA,YAErB,UAAA,YAAY,SAAS,SAAS,IAC7B,qBAAA,UAAA,EACE,UAAA;AAAA,cAAA;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,MAAK;AAAA,kBACL,WAAW;AAAA,oBACT,SAAS;AAAA,oBACT,SAAS,SAAS,SAAS;AAAA,kBAAA;AAAA,kBAE7B,SAAS,MAAM,WAAW,KAAK;AAAA,kBAC/B,iBAAe;AAAA,kBACf,eAAa,GAAG,MAAM;AAAA,kBAErB,UAAA;AAAA,oBAAA,QAAQ,oBAAC,QAAA,EAAK,WAAW,SAAS,MAAO,UAAA,MAAK;AAAA,wCAC9C,QAAA,EAAK,eAAa,GAAG,MAAM,oBAAqB,UAAA,OAAM;AAAA,oBACvD;AAAA,sBAAC;AAAA,sBAAA;AAAA,wBACC,WAAW;AAAA,0BACT,SAAS;AAAA,0BACT,SAAS,SAAS,cAAc;AAAA,wBAAA;AAAA,wBAElC,eAAa,GAAG,MAAM;AAAA,sBAAA;AAAA,oBAAA;AAAA,kBACxB;AAAA,gBAAA;AAAA,cAAA;AAAA,cAEF;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,KAAK,CAAC,OAAO,cAAc,OAAO,EAAE;AAAA,kBACpC,WAAW;AAAA,oBACT,SAAS;AAAA,oBACT,SAAS,SAAS,cAAc;AAAA,kBAAA;AAAA,kBAElC,OAAO;AAAA,oBACL,WAAW,SAAS,iBAAiB,KAAK,IAAI;AAAA,kBAAA;AAAA,kBAEhD,eAAa,GAAG,MAAM;AAAA,kBAErB,UAAA,YAAY,UAAU,IAAI;AAAA,gBAAA;AAAA,cAAA;AAAA,YAC7B,EAAA,CACF,IACE,OACF;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC;AAAA,gBACA,WAAW;AAAA,kBACT,SAAS;AAAA,kBACT,UAAU,SAAS,YAAY;AAAA,kBAC/B,WAAW,SAAS,SAAS;AAAA,gBAAA;AAAA,gBAE/B,gBAAc,WAAW,SAAS;AAAA,gBAClC,eAAa,GAAG,MAAM;AAAA,gBAErB,UAAA;AAAA,kBAAA,QAAQ,oBAAC,QAAA,EAAK,WAAW,SAAS,MAAO,UAAA,MAAK;AAAA,kBAC9C;AAAA,gBAAA;AAAA,cAAA;AAAA,YAAA,IAGH;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,WAAW;AAAA,kBACT,SAAS;AAAA,kBACT,UAAU,SAAS,YAAY;AAAA,gBAAA;AAAA,gBAEjC,eAAa,GAAG,MAAM;AAAA,gBAErB,UAAA;AAAA,kBAAA,QAAQ,oBAAC,QAAA,EAAK,WAAW,SAAS,MAAO,UAAA,MAAK;AAAA,kBAC9C;AAAA,gBAAA;AAAA,cAAA;AAAA,YAAA;AAAA,UACH;AAAA,UAhEG;AAAA,QAAA;AAAA,MAoEX,CAAC;AAAA,IAAA;AAAA,EAAA;AAIL,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW;AAAA,MACX,cAAY;AAAA,MACX,GAAG;AAAA,MACJ,eAAa;AAAA,MAEb,UAAA;AAAA,QAAA,oBAAC,SAAI,WAAW,SAAS,KAAM,UAAA,YAAY,KAAK,GAAE;AAAA,QACjD,mCACE,UAAA,EAAO,WAAW,SAAS,QAAQ,eAAa,GAAG,MAAM,WACvD,UAAA;AAAA,UAAA,2CAAa,IAAI,CAAC,EAAE,OAAO,WAC1B;AAAA,YAAC;AAAA,YAAA;AAAA,cAEC;AAAA,cACA,WAAW,SAAS;AAAA,cACpB,eAAa,GAAG,MAAM;AAAA,cAErB,UAAA;AAAA,YAAA;AAAA,YALI;AAAA,UAAA;AAAA,UASRD,kBACC;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAW,SAAS;AAAA,cACpB,eAAa,GAAG,MAAM;AAAA,cAErB,UAAAA;AAAA,YAAA;AAAA,UAAA;AAAA,QACH,EAAA,CAEJ;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAIR;AAEA,YAAY,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChL1B,MAAM,UAAkC,CAAC,EAAE,OAAO,GAAG,WAAW;AAC9D,QAAM,cAAcE,WAAAA,YAAA;AAEpB,QAAM,EAAE,aAAa,UAAU,GAAG,aAAa;AAE/C,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC;AAAA,MACA,UAAU;AAAA,MACV;AAAA,MACA,eAAe;AAAA,MAEd,GAAG;AAAA,IAAA;AAAA,IADC;AAAA,EAAA;AAIX;"}
|
|
1
|
+
{"version":3,"file":"Sidebar-B9jHy0wy.js","sources":["../../src/components/Sidebar/SidebarBase.tsx","../../src/components/Sidebar/next/Sidebar.tsx"],"sourcesContent":["import React, { useState, useMemo, useRef, useEffect } from \"react\";\nimport { SidebarProps } from \"./Sidebar.types\";\nimport { combineClassNames } from \"@/utils/classNames\";\nimport {\n getDefaultRounding,\n getDefaultShadow,\n getDefaultTheme,\n} from \"@/config/boreal-style-config\";\nimport { capitalize } from \"@/utils/capitalize\";\nimport { ChevronDownIcon } from \"@/Icons\";\n\nexport interface BaseSidebarProps extends SidebarProps {\n classMap: Record<string, string>;\n LinkComponent?: React.ElementType;\n}\n\nconst SidebarBase: React.FC<BaseSidebarProps> = ({\n links,\n classMap,\n currentPath,\n LinkComponent = \"a\",\n theme = getDefaultTheme(),\n rounding = getDefaultRounding(),\n shadow = getDefaultShadow(),\n state = \"\",\n showFooter = false,\n footerLinks,\n footerVersion,\n outline = false,\n className = \"\",\n \"data-testid\": testId = \"sidebar\",\n ariaLabel = \"Sidebar navigation\",\n ...rest\n}) => {\n const [openItems, setOpenItems] = useState<Record<string, boolean>>({});\n\n const toggleItem = (key: string) => {\n setOpenItems((prev) => ({ ...prev, [key]: !prev[key] }));\n };\n\n const submenuRefs = useRef<Record<string, HTMLDivElement | null>>({});\n\n const setSubmenuRef = (key: string, el: HTMLDivElement | null) => {\n submenuRefs.current[key] = el;\n };\n\n const getSubmenuHeight = (key: string) => {\n const el = submenuRefs.current[key];\n return el ? `${el.scrollHeight}px` : \"0px\";\n };\n\n const containerClasses = useMemo(\n () =>\n combineClassNames(\n classMap.wrapper,\n className,\n classMap[theme],\n classMap[state],\n shadow && classMap[`shadow${capitalize(shadow)}`],\n rounding && classMap[`round${capitalize(rounding)}`],\n outline ? classMap.outline : \"\"\n ),\n [className, theme, state, outline, rounding, shadow]\n );\n\n const renderLinks = (items: typeof links, isChild = false) => (\n <ul\n className={combineClassNames(\n classMap.list,\n isChild ? classMap.childList : \"\"\n )}\n data-testid={`${testId}-list`}\n >\n {items.map(({ label, href, children, icon }) => {\n const isActive = href && currentPath === href;\n const isOpen = openItems[label] || false;\n\n return (\n <li\n key={label}\n className={classMap.item}\n data-testid={`${testId}-listItems`}\n >\n {children && children.length > 0 ? (\n <>\n <button\n type=\"button\"\n className={combineClassNames(\n classMap.link,\n isOpen ? classMap.active : \"\"\n )}\n onClick={() => toggleItem(label)}\n aria-expanded={isOpen}\n data-testid={`${testId}-exapndItemButton`}\n >\n {icon && <span className={classMap.icon}>{icon}</span>}\n <span data-testid={`${testId}-exapndItemLabel`}>{label}</span>\n <ChevronDownIcon\n className={combineClassNames(\n classMap.chevron,\n isOpen ? classMap.chevronOpen : \"\"\n )}\n data-testid={`${testId}-exapndIcon`}\n />\n </button>\n <div\n ref={(el) => setSubmenuRef(label, el)}\n className={combineClassNames(\n classMap.submenu,\n isOpen ? classMap.submenuOpen : \"\"\n )}\n style={{\n maxHeight: isOpen ? getSubmenuHeight(label) : \"0px\",\n }}\n data-testid={`${testId}-subMenu`}\n >\n {renderLinks(children, true)}\n </div>\n </>\n ) : href ? (\n <LinkComponent\n href={href}\n className={combineClassNames(\n classMap.link,\n isChild ? classMap.childLink : \"\",\n isActive ? classMap.active : \"\"\n )}\n aria-current={isActive ? \"page\" : undefined}\n data-testid={`${testId}-sidebarLink`}\n >\n {icon && <span className={classMap.icon}>{icon}</span>}\n {label}\n </LinkComponent>\n ) : (\n <span\n className={combineClassNames(\n classMap.link,\n isChild ? classMap.childLink : \"\"\n )}\n data-testid={`${testId}-sidebarLabel`}\n >\n {icon && <span className={classMap.icon}>{icon}</span>}\n {label}\n </span>\n )}\n </li>\n );\n })}\n </ul>\n );\n\n return (\n <nav\n className={containerClasses}\n aria-label={ariaLabel}\n {...rest}\n data-testid={testId}\n >\n <nav className={classMap.nav}>{renderLinks(links)}</nav>\n {showFooter && (\n <footer className={classMap.footer} data-testid={`${testId}-footer`}>\n {footerLinks?.map(({ label, href }) => (\n <LinkComponent\n key={label}\n href={href}\n className={classMap.footerLink}\n data-testid={`${testId}-footerLink`}\n >\n {label}\n </LinkComponent>\n ))}\n\n {footerVersion && (\n <span\n className={classMap.footerVersion}\n data-testid={`${testId}-footerVersion`}\n >\n {footerVersion}\n </span>\n )}\n </footer>\n )}\n </nav>\n );\n};\n\nSidebarBase.displayName = \"SidebarBase\";\n\nexport default SidebarBase;\n","\"use client\";\n\nimport React from \"react\";\nimport Link from \"next/link\";\nimport { usePathname } from \"next/navigation\";\nimport SidebarBase from \"../SidebarBase\";\nimport styles from \"./Sidebar.module.scss\";\nimport { SidebarProps } from \"../Sidebar.types\";\n\nconst Sidebar: React.FC<SidebarProps> = ({ links, ...rest }) => {\n const currentPath = usePathname();\n\n const { currentPath: _ignored, ...safeRest } = rest;\n\n return (\n <SidebarBase\n links={links}\n classMap={styles}\n currentPath={currentPath}\n LinkComponent={Link}\n key={currentPath}\n {...safeRest}\n />\n );\n};\n\nexport default Sidebar;\n"],"names":["footerVersion","outline","usePathname"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sidebar-PUffGMhm.cjs","sources":["../../src/components/Sidebar/SidebarBase.tsx","../../src/components/Sidebar/next/Sidebar.tsx"],"sourcesContent":["import React, { useState, useMemo, useRef, useEffect } from \"react\";\nimport { SidebarProps } from \"./Sidebar.types\";\nimport { combineClassNames } from \"@/utils/classNames\";\nimport {\n getDefaultRounding,\n getDefaultShadow,\n getDefaultTheme,\n} from \"@/config/boreal-style-config\";\nimport { capitalize } from \"@/utils/capitalize\";\nimport { ChevronDownIcon } from \"@/Icons\";\n\nexport interface BaseSidebarProps extends SidebarProps {\n classMap: Record<string, string>;\n}\n\nconst SidebarBase: React.FC<BaseSidebarProps> = ({\n links,\n classMap,\n currentPath,\n LinkComponent = \"a\",\n theme = getDefaultTheme(),\n rounding = getDefaultRounding(),\n shadow = getDefaultShadow(),\n state = \"\",\n showFooter = false,\n footerLinks,\n footerVersion,\n outline = false,\n className = \"\",\n \"data-testid\": testId = \"sidebar\",\n ariaLabel = \"Sidebar navigation\",\n ...rest\n}) => {\n const [openItems, setOpenItems] = useState<Record<string, boolean>>({});\n\n const toggleItem = (key: string) => {\n setOpenItems((prev) => ({ ...prev, [key]: !prev[key] }));\n };\n\n const submenuRefs = useRef<Record<string, HTMLDivElement | null>>({});\n\n const setSubmenuRef = (key: string, el: HTMLDivElement | null) => {\n submenuRefs.current[key] = el;\n };\n\n const getSubmenuHeight = (key: string) => {\n const el = submenuRefs.current[key];\n return el ? `${el.scrollHeight}px` : \"0px\";\n };\n\n const containerClasses = useMemo(\n () =>\n combineClassNames(\n classMap.wrapper,\n className,\n classMap[theme],\n classMap[state],\n shadow && classMap[`shadow${capitalize(shadow)}`],\n rounding && classMap[`round${capitalize(rounding)}`],\n outline ? classMap.outline : \"\"\n ),\n [className, theme, state, outline, rounding, shadow]\n );\n\n const renderLinks = (items: typeof links, isChild = false) => (\n <ul\n className={combineClassNames(\n classMap.list,\n isChild ? classMap.childList : \"\"\n )}\n data-testid={`${testId}-list`}\n >\n {items.map(({ label, href, children, icon }) => {\n const isActive = href && currentPath === href;\n const isOpen = openItems[label] || false;\n\n return (\n <li\n key={label}\n className={classMap.item}\n data-testid={`${testId}-listItems`}\n >\n {children && children.length > 0 ? (\n <>\n <button\n type=\"button\"\n className={combineClassNames(\n classMap.link,\n isOpen ? classMap.active : \"\"\n )}\n onClick={() => toggleItem(label)}\n aria-expanded={isOpen}\n data-testid={`${testId}-exapndItemButton`}\n >\n {icon && <span className={classMap.icon}>{icon}</span>}\n <span data-testid={`${testId}-exapndItemLabel`}>{label}</span>\n <ChevronDownIcon\n className={combineClassNames(\n classMap.chevron,\n isOpen ? classMap.chevronOpen : \"\"\n )}\n data-testid={`${testId}-exapndIcon`}\n />\n </button>\n <div\n ref={(el) => setSubmenuRef(label, el)}\n className={combineClassNames(\n classMap.submenu,\n isOpen ? classMap.submenuOpen : \"\"\n )}\n style={{\n maxHeight: isOpen ? getSubmenuHeight(label) : \"0px\",\n }}\n data-testid={`${testId}-subMenu`}\n >\n {renderLinks(children, true)}\n </div>\n </>\n ) : href ? (\n <LinkComponent\n href={href}\n className={combineClassNames(\n classMap.link,\n isChild ? classMap.childLink : \"\",\n isActive ? classMap.active : \"\"\n )}\n aria-current={isActive ? \"page\" : undefined}\n data-testid={`${testId}-sidebarLink`}\n >\n {icon && <span className={classMap.icon}>{icon}</span>}\n {label}\n </LinkComponent>\n ) : (\n <span\n className={combineClassNames(\n classMap.link,\n isChild ? classMap.childLink : \"\"\n )}\n data-testid={`${testId}-sidebarLabel`}\n >\n {icon && <span className={classMap.icon}>{icon}</span>}\n {label}\n </span>\n )}\n </li>\n );\n })}\n </ul>\n );\n\n return (\n <nav\n className={containerClasses}\n aria-label={ariaLabel}\n {...rest}\n data-testid={testId}\n >\n <nav className={classMap.nav}>{renderLinks(links)}</nav>\n {showFooter && (\n <footer className={classMap.footer} data-testid={`${testId}-footer`}>\n {footerLinks?.map(({ label, href }) => (\n <LinkComponent\n key={label}\n href={href}\n className={classMap.footerLink}\n data-testid={`${testId}-footerLink`}\n >\n {label}\n </LinkComponent>\n ))}\n\n {footerVersion && (\n <span\n className={classMap.footerVersion}\n data-testid={`${testId}-footerVersion`}\n >\n {footerVersion}\n </span>\n )}\n </footer>\n )}\n </nav>\n );\n};\n\nSidebarBase.displayName = \"SidebarBase\";\n\nexport default SidebarBase;\n","\"use client\";\n\nimport React from \"react\";\nimport Link from \"next/link\";\nimport { usePathname } from \"next/navigation\";\nimport SidebarBase from \"../SidebarBase\";\nimport styles from \"./Sidebar.module.scss\";\nimport { SidebarProps } from \"../Sidebar.types\";\n\nconst Sidebar: React.FC<SidebarProps> = ({ links, ...rest }) => {\n const currentPath = usePathname();\n\n const { currentPath: _ignored, ...safeRest } = rest;\n\n return (\n <SidebarBase\n links={links}\n classMap={styles}\n currentPath={currentPath}\n LinkComponent={Link}\n key={currentPath}\n {...safeRest}\n />\n );\n};\n\nexport default Sidebar;\n"],"names":["getDefaultTheme","getDefaultRounding","getDefaultShadow","footerVersion","outline","useState","useRef","useMemo","combineClassNames","capitalize","jsx","jsxs","Fragment","ChevronDownIcon","usePathname","Link"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Sidebar-PUffGMhm.cjs","sources":["../../src/components/Sidebar/SidebarBase.tsx","../../src/components/Sidebar/next/Sidebar.tsx"],"sourcesContent":["import React, { useState, useMemo, useRef, useEffect } from \"react\";\nimport { SidebarProps } from \"./Sidebar.types\";\nimport { combineClassNames } from \"@/utils/classNames\";\nimport {\n getDefaultRounding,\n getDefaultShadow,\n getDefaultTheme,\n} from \"@/config/boreal-style-config\";\nimport { capitalize } from \"@/utils/capitalize\";\nimport { ChevronDownIcon } from \"@/Icons\";\n\nexport interface BaseSidebarProps extends SidebarProps {\n classMap: Record<string, string>;\n LinkComponent?: React.ElementType;\n}\n\nconst SidebarBase: React.FC<BaseSidebarProps> = ({\n links,\n classMap,\n currentPath,\n LinkComponent = \"a\",\n theme = getDefaultTheme(),\n rounding = getDefaultRounding(),\n shadow = getDefaultShadow(),\n state = \"\",\n showFooter = false,\n footerLinks,\n footerVersion,\n outline = false,\n className = \"\",\n \"data-testid\": testId = \"sidebar\",\n ariaLabel = \"Sidebar navigation\",\n ...rest\n}) => {\n const [openItems, setOpenItems] = useState<Record<string, boolean>>({});\n\n const toggleItem = (key: string) => {\n setOpenItems((prev) => ({ ...prev, [key]: !prev[key] }));\n };\n\n const submenuRefs = useRef<Record<string, HTMLDivElement | null>>({});\n\n const setSubmenuRef = (key: string, el: HTMLDivElement | null) => {\n submenuRefs.current[key] = el;\n };\n\n const getSubmenuHeight = (key: string) => {\n const el = submenuRefs.current[key];\n return el ? `${el.scrollHeight}px` : \"0px\";\n };\n\n const containerClasses = useMemo(\n () =>\n combineClassNames(\n classMap.wrapper,\n className,\n classMap[theme],\n classMap[state],\n shadow && classMap[`shadow${capitalize(shadow)}`],\n rounding && classMap[`round${capitalize(rounding)}`],\n outline ? classMap.outline : \"\"\n ),\n [className, theme, state, outline, rounding, shadow]\n );\n\n const renderLinks = (items: typeof links, isChild = false) => (\n <ul\n className={combineClassNames(\n classMap.list,\n isChild ? classMap.childList : \"\"\n )}\n data-testid={`${testId}-list`}\n >\n {items.map(({ label, href, children, icon }) => {\n const isActive = href && currentPath === href;\n const isOpen = openItems[label] || false;\n\n return (\n <li\n key={label}\n className={classMap.item}\n data-testid={`${testId}-listItems`}\n >\n {children && children.length > 0 ? (\n <>\n <button\n type=\"button\"\n className={combineClassNames(\n classMap.link,\n isOpen ? classMap.active : \"\"\n )}\n onClick={() => toggleItem(label)}\n aria-expanded={isOpen}\n data-testid={`${testId}-exapndItemButton`}\n >\n {icon && <span className={classMap.icon}>{icon}</span>}\n <span data-testid={`${testId}-exapndItemLabel`}>{label}</span>\n <ChevronDownIcon\n className={combineClassNames(\n classMap.chevron,\n isOpen ? classMap.chevronOpen : \"\"\n )}\n data-testid={`${testId}-exapndIcon`}\n />\n </button>\n <div\n ref={(el) => setSubmenuRef(label, el)}\n className={combineClassNames(\n classMap.submenu,\n isOpen ? classMap.submenuOpen : \"\"\n )}\n style={{\n maxHeight: isOpen ? getSubmenuHeight(label) : \"0px\",\n }}\n data-testid={`${testId}-subMenu`}\n >\n {renderLinks(children, true)}\n </div>\n </>\n ) : href ? (\n <LinkComponent\n href={href}\n className={combineClassNames(\n classMap.link,\n isChild ? classMap.childLink : \"\",\n isActive ? classMap.active : \"\"\n )}\n aria-current={isActive ? \"page\" : undefined}\n data-testid={`${testId}-sidebarLink`}\n >\n {icon && <span className={classMap.icon}>{icon}</span>}\n {label}\n </LinkComponent>\n ) : (\n <span\n className={combineClassNames(\n classMap.link,\n isChild ? classMap.childLink : \"\"\n )}\n data-testid={`${testId}-sidebarLabel`}\n >\n {icon && <span className={classMap.icon}>{icon}</span>}\n {label}\n </span>\n )}\n </li>\n );\n })}\n </ul>\n );\n\n return (\n <nav\n className={containerClasses}\n aria-label={ariaLabel}\n {...rest}\n data-testid={testId}\n >\n <nav className={classMap.nav}>{renderLinks(links)}</nav>\n {showFooter && (\n <footer className={classMap.footer} data-testid={`${testId}-footer`}>\n {footerLinks?.map(({ label, href }) => (\n <LinkComponent\n key={label}\n href={href}\n className={classMap.footerLink}\n data-testid={`${testId}-footerLink`}\n >\n {label}\n </LinkComponent>\n ))}\n\n {footerVersion && (\n <span\n className={classMap.footerVersion}\n data-testid={`${testId}-footerVersion`}\n >\n {footerVersion}\n </span>\n )}\n </footer>\n )}\n </nav>\n );\n};\n\nSidebarBase.displayName = \"SidebarBase\";\n\nexport default SidebarBase;\n","\"use client\";\n\nimport React from \"react\";\nimport Link from \"next/link\";\nimport { usePathname } from \"next/navigation\";\nimport SidebarBase from \"../SidebarBase\";\nimport styles from \"./Sidebar.module.scss\";\nimport { SidebarProps } from \"../Sidebar.types\";\n\nconst Sidebar: React.FC<SidebarProps> = ({ links, ...rest }) => {\n const currentPath = usePathname();\n\n const { currentPath: _ignored, ...safeRest } = rest;\n\n return (\n <SidebarBase\n links={links}\n classMap={styles}\n currentPath={currentPath}\n LinkComponent={Link}\n key={currentPath}\n {...safeRest}\n />\n );\n};\n\nexport default Sidebar;\n"],"names":["getDefaultTheme","getDefaultRounding","getDefaultShadow","footerVersion","outline","useState","useRef","useMemo","combineClassNames","capitalize","jsx","jsxs","Fragment","ChevronDownIcon","usePathname","Link"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Taginput-BcNgwFOj.cjs","sources":["../../src/components/TagInput/TagInputBase.tsx","../../src/components/TagInput/next/Taginput.tsx"],"sourcesContent":["import React, {\r\n useId,\r\n useState,\r\n KeyboardEvent,\r\n useMemo,\r\n useEffect,\r\n} from \"react\";\r\nimport { TagInputProps } from \"./Taginput.types\";\r\nimport { CloseIcon } from \"../../Icons\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\r\nimport { capitalize } from \"../../utils/capitalize\";\r\nimport {\r\n getDefaultRounding,\r\n getDefaultShadow,\r\n getDefaultSize,\r\n getDefaultTheme,\r\n} from \"../../config/boreal-style-config\";\r\n\r\nconst TagInputBase: React.FC<\r\n TagInputProps & {\r\n classMap: Record<string, string>;\r\n IconButton: React.FC<any>;\r\n TextInput: React.FC<any>;\r\n }\r\n> = ({\r\n tags = [],\r\n onChange,\r\n fetchSuggestions,\r\n debounceMs = 300,\r\n placeholder = \"Add a tag...\",\r\n theme = getDefaultTheme(),\r\n state = \"\",\r\n size = getDefaultSize(),\r\n rounding = getDefaultRounding(),\r\n shadow = getDefaultShadow(),\r\n \"data-testid\": testId = \"tag-input\",\r\n ariaDescription = \"Type a tag and press Enter or comma to add. Existing tags can be removed using the remove button next to each tag.\",\r\n classMap,\r\n IconButton,\r\n TextInput,\r\n}) => {\r\n const inputId = useId();\r\n const descId = `${inputId}-desc`;\r\n const labelId = `${inputId}-label`;\r\n\r\n const [inputValue, setInputValue] = useState(\"\");\r\n const [tagList, setTagList] = useState<string[]>(tags);\r\n const [lastAction, setLastAction] = useState<string>(\"\");\r\n\r\n const [suggestions, setSuggestions] = useState<string[]>([]);\r\n const [debounceTimeout, setDebounceTimeout] = useState<NodeJS.Timeout | null>(\r\n null\r\n );\r\n\r\n useEffect(() => {\r\n if (!fetchSuggestions || !inputValue.trim()) {\r\n setSuggestions([]);\r\n return;\r\n }\r\n\r\n if (debounceTimeout) {\r\n clearTimeout(debounceTimeout);\r\n }\r\n\r\n const timeout = setTimeout(async () => {\r\n try {\r\n const result = await fetchSuggestions(inputValue);\r\n setSuggestions(result);\r\n } catch (error) {\r\n console.error(\"Failed to fetch tag suggestions:\", error);\r\n }\r\n }, debounceMs);\r\n\r\n setDebounceTimeout(timeout);\r\n\r\n return () => clearTimeout(timeout);\r\n }, [inputValue, fetchSuggestions, debounceMs]);\r\n\r\n const handleAddTag = (event: KeyboardEvent<HTMLInputElement>) => {\r\n if (\r\n (event.key === \"Enter\" || event.key === \",\") &&\r\n inputValue.trim() !== \"\"\r\n ) {\r\n event.preventDefault();\r\n const newTag = inputValue.trim();\r\n if (!tagList.includes(newTag)) {\r\n const updated = [...tagList, newTag];\r\n setTagList(updated);\r\n onChange?.(updated);\r\n setLastAction(`Added tag ${newTag}`);\r\n }\r\n setInputValue(\"\");\r\n }\r\n };\r\n\r\n const handleRemoveTag = (tag: string) => {\r\n const updated = tagList.filter((t) => t !== tag);\r\n setTagList(updated);\r\n onChange?.(updated);\r\n setLastAction(`Removed tag ${tag}`);\r\n };\r\n\r\n const wrapperClass = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.tagInput,\r\n classMap[theme],\r\n classMap[state],\r\n classMap[size]\r\n ),\r\n [classMap, theme, state, size]\r\n );\r\n\r\n const tagClass = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.tag,\r\n shadow && classMap[`shadow${capitalize(shadow)}`],\r\n rounding && classMap[`round${capitalize(rounding)}`]\r\n ),\r\n [classMap]\r\n );\r\n\r\n return (\r\n <div\r\n className={wrapperClass}\r\n role=\"group\"\r\n aria-labelledby={labelId}\r\n aria-describedby={descId}\r\n data-testid={testId}\r\n >\r\n <label id={labelId} className=\"sr_only\">\r\n Tag Input\r\n </label>\r\n <div\r\n id={descId}\r\n className=\"sr_only\"\r\n data-testid={`${testId}-description`}\r\n >\r\n {ariaDescription}\r\n </div>\r\n\r\n <ul\r\n className={classMap.tagContainer}\r\n aria-live=\"polite\"\r\n aria-relevant=\"additions removals\"\r\n data-testid={`${testId}-list`}\r\n >\r\n {tagList.map((tag, index) => (\r\n <li\r\n key={tag}\r\n className={tagClass}\r\n role=\"listitem\"\r\n data-testid={`${testId}-tag-${index}`}\r\n >\r\n <span className={classMap.tagLabel}>{tag}</span>\r\n <IconButton\r\n type=\"button\"\r\n aria-label={`Remove tag ${tag}`}\r\n className={classMap.removeButton}\r\n onClick={() => handleRemoveTag(tag)}\r\n data-testid={`${testId}-remove-${index}`}\r\n icon={CloseIcon}\r\n size=\"small\"\r\n theme=\"clear\"\r\n />\r\n </li>\r\n ))}\r\n </ul>\r\n\r\n <div className={classMap.inputWrapper}>\r\n <TextInput\r\n id={inputId}\r\n type=\"text\"\r\n theme={theme}\r\n state={state}\r\n rounding={rounding}\r\n shadow={shadow}\r\n className={classMap.input}\r\n value={inputValue}\r\n placeholder={tagList.length === 0 ? placeholder : \"\"}\r\n onChange={(e: { target: { value: string } }) =>\r\n setInputValue(e.target.value)\r\n }\r\n onKeyDown={handleAddTag}\r\n aria-label=\"Add new tag\"\r\n aria-describedby={descId}\r\n data-testid={`${testId}-input`}\r\n />\r\n </div>\r\n {suggestions.length > 0 && (\r\n <ul\r\n className={classMap.suggestionList}\r\n role=\"listbox\"\r\n id={`${inputId}-listbox`}\r\n title=\"suggestions\"\r\n data-testid={`${testId}-suggestions`}\r\n >\r\n {suggestions.map((suggestion, index) => (\r\n <li\r\n key={index}\r\n className={classMap.suggestionItem}\r\n onClick={() => {\r\n if (!tagList.includes(suggestion)) {\r\n const updated = [...tagList, suggestion];\r\n setTagList(updated);\r\n onChange?.(updated);\r\n setLastAction(`Added tag ${suggestion}`);\r\n }\r\n setInputValue(\"\");\r\n setSuggestions([]);\r\n }}\r\n role=\"option\"\r\n data-testid={`${testId}-suggestion-${index}`}\r\n >\r\n {suggestion}\r\n </li>\r\n ))}\r\n </ul>\r\n )}\r\n\r\n <div aria-live=\"polite\" className=\"sr_only\">\r\n {lastAction}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default TagInputBase;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport styles from \"./Taginput.module.scss\";\r\nimport { IconButton, TextInput } from \"@/index.next\";\r\nimport TagInputBase from \"../TagInputBase\";\r\nimport { TagInputProps } from \"../Taginput.types\";\r\n\r\nconst TagInput: React.FC<TagInputProps> = (props) => {\r\n return (\r\n <TagInputBase\r\n {...props}\r\n classMap={styles}\r\n IconButton={IconButton}\r\n TextInput={TextInput}\r\n />\r\n );\r\n};\r\n\r\nexport default TagInput;\r\n"],"names":["getDefaultTheme","getDefaultSize","getDefaultRounding","getDefaultShadow","IconButton","TextInput","useId","useState","useEffect","error","tag","useMemo","combineClassNames","capitalize","jsxs","jsx","CloseIcon"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TagInput-BcNgwFOj.cjs","sources":["../../src/components/TagInput/TagInputBase.tsx","../../src/components/TagInput/next/TagInput.tsx"],"sourcesContent":["import React, {\r\n useId,\r\n useState,\r\n KeyboardEvent,\r\n useMemo,\r\n useEffect,\r\n} from \"react\";\r\nimport { TagInputProps } from \"./Taginput.types\";\r\nimport { CloseIcon } from \"../../Icons\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\r\nimport { capitalize } from \"../../utils/capitalize\";\r\nimport {\r\n getDefaultRounding,\r\n getDefaultShadow,\r\n getDefaultSize,\r\n getDefaultTheme,\r\n} from \"../../config/boreal-style-config\";\r\n\r\nconst TagInputBase: React.FC<\r\n TagInputProps & {\r\n classMap: Record<string, string>;\r\n IconButton: React.FC<any>;\r\n TextInput: React.FC<any>;\r\n }\r\n> = ({\r\n tags = [],\r\n onChange,\r\n fetchSuggestions,\r\n debounceMs = 300,\r\n placeholder = \"Add a tag...\",\r\n theme = getDefaultTheme(),\r\n state = \"\",\r\n size = getDefaultSize(),\r\n rounding = getDefaultRounding(),\r\n shadow = getDefaultShadow(),\r\n \"data-testid\": testId = \"tag-input\",\r\n ariaDescription = \"Type a tag and press Enter or comma to add. Existing tags can be removed using the remove button next to each tag.\",\r\n classMap,\r\n IconButton,\r\n TextInput,\r\n}) => {\r\n const inputId = useId();\r\n const descId = `${inputId}-desc`;\r\n const labelId = `${inputId}-label`;\r\n\r\n const [inputValue, setInputValue] = useState(\"\");\r\n const [tagList, setTagList] = useState<string[]>(tags);\r\n const [lastAction, setLastAction] = useState<string>(\"\");\r\n\r\n const [suggestions, setSuggestions] = useState<string[]>([]);\r\n const [debounceTimeout, setDebounceTimeout] = useState<NodeJS.Timeout | null>(\r\n null\r\n );\r\n\r\n useEffect(() => {\r\n if (!fetchSuggestions || !inputValue.trim()) {\r\n setSuggestions([]);\r\n return;\r\n }\r\n\r\n if (debounceTimeout) {\r\n clearTimeout(debounceTimeout);\r\n }\r\n\r\n const timeout = setTimeout(async () => {\r\n try {\r\n const result = await fetchSuggestions(inputValue);\r\n setSuggestions(result);\r\n } catch (error) {\r\n console.error(\"Failed to fetch tag suggestions:\", error);\r\n }\r\n }, debounceMs);\r\n\r\n setDebounceTimeout(timeout);\r\n\r\n return () => clearTimeout(timeout);\r\n }, [inputValue, fetchSuggestions, debounceMs]);\r\n\r\n const handleAddTag = (event: KeyboardEvent<HTMLInputElement>) => {\r\n if (\r\n (event.key === \"Enter\" || event.key === \",\") &&\r\n inputValue.trim() !== \"\"\r\n ) {\r\n event.preventDefault();\r\n const newTag = inputValue.trim();\r\n if (!tagList.includes(newTag)) {\r\n const updated = [...tagList, newTag];\r\n setTagList(updated);\r\n onChange?.(updated);\r\n setLastAction(`Added tag ${newTag}`);\r\n }\r\n setInputValue(\"\");\r\n }\r\n };\r\n\r\n const handleRemoveTag = (tag: string) => {\r\n const updated = tagList.filter((t) => t !== tag);\r\n setTagList(updated);\r\n onChange?.(updated);\r\n setLastAction(`Removed tag ${tag}`);\r\n };\r\n\r\n const wrapperClass = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.tagInput,\r\n classMap[theme],\r\n classMap[state],\r\n classMap[size]\r\n ),\r\n [classMap, theme, state, size]\r\n );\r\n\r\n const tagClass = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.tag,\r\n shadow && classMap[`shadow${capitalize(shadow)}`],\r\n rounding && classMap[`round${capitalize(rounding)}`]\r\n ),\r\n [classMap]\r\n );\r\n\r\n return (\r\n <div\r\n className={wrapperClass}\r\n role=\"group\"\r\n aria-labelledby={labelId}\r\n aria-describedby={descId}\r\n data-testid={testId}\r\n >\r\n <label id={labelId} className=\"sr_only\">\r\n Tag Input\r\n </label>\r\n <div\r\n id={descId}\r\n className=\"sr_only\"\r\n data-testid={`${testId}-description`}\r\n >\r\n {ariaDescription}\r\n </div>\r\n\r\n <ul\r\n className={classMap.tagContainer}\r\n aria-live=\"polite\"\r\n aria-relevant=\"additions removals\"\r\n data-testid={`${testId}-list`}\r\n >\r\n {tagList.map((tag, index) => (\r\n <li\r\n key={tag}\r\n className={tagClass}\r\n role=\"listitem\"\r\n data-testid={`${testId}-tag-${index}`}\r\n >\r\n <span className={classMap.tagLabel}>{tag}</span>\r\n <IconButton\r\n type=\"button\"\r\n aria-label={`Remove tag ${tag}`}\r\n className={classMap.removeButton}\r\n onClick={() => handleRemoveTag(tag)}\r\n data-testid={`${testId}-remove-${index}`}\r\n icon={CloseIcon}\r\n size=\"small\"\r\n theme=\"clear\"\r\n />\r\n </li>\r\n ))}\r\n </ul>\r\n\r\n <div className={classMap.inputWrapper}>\r\n <TextInput\r\n id={inputId}\r\n type=\"text\"\r\n theme={theme}\r\n state={state}\r\n rounding={rounding}\r\n shadow={shadow}\r\n className={classMap.input}\r\n value={inputValue}\r\n placeholder={tagList.length === 0 ? placeholder : \"\"}\r\n onChange={(e: { target: { value: string } }) =>\r\n setInputValue(e.target.value)\r\n }\r\n onKeyDown={handleAddTag}\r\n aria-label=\"Add new tag\"\r\n aria-describedby={descId}\r\n data-testid={`${testId}-input`}\r\n />\r\n </div>\r\n {suggestions.length > 0 && (\r\n <ul\r\n className={classMap.suggestionList}\r\n role=\"listbox\"\r\n id={`${inputId}-listbox`}\r\n title=\"suggestions\"\r\n data-testid={`${testId}-suggestions`}\r\n >\r\n {suggestions.map((suggestion, index) => (\r\n <li\r\n key={index}\r\n className={classMap.suggestionItem}\r\n onClick={() => {\r\n if (!tagList.includes(suggestion)) {\r\n const updated = [...tagList, suggestion];\r\n setTagList(updated);\r\n onChange?.(updated);\r\n setLastAction(`Added tag ${suggestion}`);\r\n }\r\n setInputValue(\"\");\r\n setSuggestions([]);\r\n }}\r\n role=\"option\"\r\n data-testid={`${testId}-suggestion-${index}`}\r\n >\r\n {suggestion}\r\n </li>\r\n ))}\r\n </ul>\r\n )}\r\n\r\n <div aria-live=\"polite\" className=\"sr_only\">\r\n {lastAction}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default TagInputBase;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport styles from \"./Taginput.module.scss\";\r\nimport { IconButton, TextInput } from \"@/index.next\";\r\nimport TagInputBase from \"../TagInputBase\";\r\nimport { TagInputProps } from \"../Taginput.types\";\r\n\r\nconst TagInput: React.FC<TagInputProps> = (props) => {\r\n return (\r\n <TagInputBase\r\n {...props}\r\n classMap={styles}\r\n IconButton={IconButton}\r\n TextInput={TextInput}\r\n />\r\n );\r\n};\r\n\r\nexport default TagInput;\r\n"],"names":["getDefaultTheme","getDefaultSize","getDefaultRounding","getDefaultShadow","IconButton","TextInput","useId","useState","useEffect","error","tag","useMemo","combineClassNames","capitalize","jsxs","jsx","CloseIcon"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Taginput-CdYMgcYY.js","sources":["../../src/components/TagInput/TagInputBase.tsx","../../src/components/TagInput/next/Taginput.tsx"],"sourcesContent":["import React, {\r\n useId,\r\n useState,\r\n KeyboardEvent,\r\n useMemo,\r\n useEffect,\r\n} from \"react\";\r\nimport { TagInputProps } from \"./Taginput.types\";\r\nimport { CloseIcon } from \"../../Icons\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\r\nimport { capitalize } from \"../../utils/capitalize\";\r\nimport {\r\n getDefaultRounding,\r\n getDefaultShadow,\r\n getDefaultSize,\r\n getDefaultTheme,\r\n} from \"../../config/boreal-style-config\";\r\n\r\nconst TagInputBase: React.FC<\r\n TagInputProps & {\r\n classMap: Record<string, string>;\r\n IconButton: React.FC<any>;\r\n TextInput: React.FC<any>;\r\n }\r\n> = ({\r\n tags = [],\r\n onChange,\r\n fetchSuggestions,\r\n debounceMs = 300,\r\n placeholder = \"Add a tag...\",\r\n theme = getDefaultTheme(),\r\n state = \"\",\r\n size = getDefaultSize(),\r\n rounding = getDefaultRounding(),\r\n shadow = getDefaultShadow(),\r\n \"data-testid\": testId = \"tag-input\",\r\n ariaDescription = \"Type a tag and press Enter or comma to add. Existing tags can be removed using the remove button next to each tag.\",\r\n classMap,\r\n IconButton,\r\n TextInput,\r\n}) => {\r\n const inputId = useId();\r\n const descId = `${inputId}-desc`;\r\n const labelId = `${inputId}-label`;\r\n\r\n const [inputValue, setInputValue] = useState(\"\");\r\n const [tagList, setTagList] = useState<string[]>(tags);\r\n const [lastAction, setLastAction] = useState<string>(\"\");\r\n\r\n const [suggestions, setSuggestions] = useState<string[]>([]);\r\n const [debounceTimeout, setDebounceTimeout] = useState<NodeJS.Timeout | null>(\r\n null\r\n );\r\n\r\n useEffect(() => {\r\n if (!fetchSuggestions || !inputValue.trim()) {\r\n setSuggestions([]);\r\n return;\r\n }\r\n\r\n if (debounceTimeout) {\r\n clearTimeout(debounceTimeout);\r\n }\r\n\r\n const timeout = setTimeout(async () => {\r\n try {\r\n const result = await fetchSuggestions(inputValue);\r\n setSuggestions(result);\r\n } catch (error) {\r\n console.error(\"Failed to fetch tag suggestions:\", error);\r\n }\r\n }, debounceMs);\r\n\r\n setDebounceTimeout(timeout);\r\n\r\n return () => clearTimeout(timeout);\r\n }, [inputValue, fetchSuggestions, debounceMs]);\r\n\r\n const handleAddTag = (event: KeyboardEvent<HTMLInputElement>) => {\r\n if (\r\n (event.key === \"Enter\" || event.key === \",\") &&\r\n inputValue.trim() !== \"\"\r\n ) {\r\n event.preventDefault();\r\n const newTag = inputValue.trim();\r\n if (!tagList.includes(newTag)) {\r\n const updated = [...tagList, newTag];\r\n setTagList(updated);\r\n onChange?.(updated);\r\n setLastAction(`Added tag ${newTag}`);\r\n }\r\n setInputValue(\"\");\r\n }\r\n };\r\n\r\n const handleRemoveTag = (tag: string) => {\r\n const updated = tagList.filter((t) => t !== tag);\r\n setTagList(updated);\r\n onChange?.(updated);\r\n setLastAction(`Removed tag ${tag}`);\r\n };\r\n\r\n const wrapperClass = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.tagInput,\r\n classMap[theme],\r\n classMap[state],\r\n classMap[size]\r\n ),\r\n [classMap, theme, state, size]\r\n );\r\n\r\n const tagClass = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.tag,\r\n shadow && classMap[`shadow${capitalize(shadow)}`],\r\n rounding && classMap[`round${capitalize(rounding)}`]\r\n ),\r\n [classMap]\r\n );\r\n\r\n return (\r\n <div\r\n className={wrapperClass}\r\n role=\"group\"\r\n aria-labelledby={labelId}\r\n aria-describedby={descId}\r\n data-testid={testId}\r\n >\r\n <label id={labelId} className=\"sr_only\">\r\n Tag Input\r\n </label>\r\n <div\r\n id={descId}\r\n className=\"sr_only\"\r\n data-testid={`${testId}-description`}\r\n >\r\n {ariaDescription}\r\n </div>\r\n\r\n <ul\r\n className={classMap.tagContainer}\r\n aria-live=\"polite\"\r\n aria-relevant=\"additions removals\"\r\n data-testid={`${testId}-list`}\r\n >\r\n {tagList.map((tag, index) => (\r\n <li\r\n key={tag}\r\n className={tagClass}\r\n role=\"listitem\"\r\n data-testid={`${testId}-tag-${index}`}\r\n >\r\n <span className={classMap.tagLabel}>{tag}</span>\r\n <IconButton\r\n type=\"button\"\r\n aria-label={`Remove tag ${tag}`}\r\n className={classMap.removeButton}\r\n onClick={() => handleRemoveTag(tag)}\r\n data-testid={`${testId}-remove-${index}`}\r\n icon={CloseIcon}\r\n size=\"small\"\r\n theme=\"clear\"\r\n />\r\n </li>\r\n ))}\r\n </ul>\r\n\r\n <div className={classMap.inputWrapper}>\r\n <TextInput\r\n id={inputId}\r\n type=\"text\"\r\n theme={theme}\r\n state={state}\r\n rounding={rounding}\r\n shadow={shadow}\r\n className={classMap.input}\r\n value={inputValue}\r\n placeholder={tagList.length === 0 ? placeholder : \"\"}\r\n onChange={(e: { target: { value: string } }) =>\r\n setInputValue(e.target.value)\r\n }\r\n onKeyDown={handleAddTag}\r\n aria-label=\"Add new tag\"\r\n aria-describedby={descId}\r\n data-testid={`${testId}-input`}\r\n />\r\n </div>\r\n {suggestions.length > 0 && (\r\n <ul\r\n className={classMap.suggestionList}\r\n role=\"listbox\"\r\n id={`${inputId}-listbox`}\r\n title=\"suggestions\"\r\n data-testid={`${testId}-suggestions`}\r\n >\r\n {suggestions.map((suggestion, index) => (\r\n <li\r\n key={index}\r\n className={classMap.suggestionItem}\r\n onClick={() => {\r\n if (!tagList.includes(suggestion)) {\r\n const updated = [...tagList, suggestion];\r\n setTagList(updated);\r\n onChange?.(updated);\r\n setLastAction(`Added tag ${suggestion}`);\r\n }\r\n setInputValue(\"\");\r\n setSuggestions([]);\r\n }}\r\n role=\"option\"\r\n data-testid={`${testId}-suggestion-${index}`}\r\n >\r\n {suggestion}\r\n </li>\r\n ))}\r\n </ul>\r\n )}\r\n\r\n <div aria-live=\"polite\" className=\"sr_only\">\r\n {lastAction}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default TagInputBase;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport styles from \"./Taginput.module.scss\";\r\nimport { IconButton, TextInput } from \"@/index.next\";\r\nimport TagInputBase from \"../TagInputBase\";\r\nimport { TagInputProps } from \"../Taginput.types\";\r\n\r\nconst TagInput: React.FC<TagInputProps> = (props) => {\r\n return (\r\n <TagInputBase\r\n {...props}\r\n classMap={styles}\r\n IconButton={IconButton}\r\n TextInput={TextInput}\r\n />\r\n );\r\n};\r\n\r\nexport default TagInput;\r\n"],"names":["IconButton","TextInput","error","tag"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TagInput-CdYMgcYY.js","sources":["../../src/components/TagInput/TagInputBase.tsx","../../src/components/TagInput/next/TagInput.tsx"],"sourcesContent":["import React, {\r\n useId,\r\n useState,\r\n KeyboardEvent,\r\n useMemo,\r\n useEffect,\r\n} from \"react\";\r\nimport { TagInputProps } from \"./Taginput.types\";\r\nimport { CloseIcon } from \"../../Icons\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\r\nimport { capitalize } from \"../../utils/capitalize\";\r\nimport {\r\n getDefaultRounding,\r\n getDefaultShadow,\r\n getDefaultSize,\r\n getDefaultTheme,\r\n} from \"../../config/boreal-style-config\";\r\n\r\nconst TagInputBase: React.FC<\r\n TagInputProps & {\r\n classMap: Record<string, string>;\r\n IconButton: React.FC<any>;\r\n TextInput: React.FC<any>;\r\n }\r\n> = ({\r\n tags = [],\r\n onChange,\r\n fetchSuggestions,\r\n debounceMs = 300,\r\n placeholder = \"Add a tag...\",\r\n theme = getDefaultTheme(),\r\n state = \"\",\r\n size = getDefaultSize(),\r\n rounding = getDefaultRounding(),\r\n shadow = getDefaultShadow(),\r\n \"data-testid\": testId = \"tag-input\",\r\n ariaDescription = \"Type a tag and press Enter or comma to add. Existing tags can be removed using the remove button next to each tag.\",\r\n classMap,\r\n IconButton,\r\n TextInput,\r\n}) => {\r\n const inputId = useId();\r\n const descId = `${inputId}-desc`;\r\n const labelId = `${inputId}-label`;\r\n\r\n const [inputValue, setInputValue] = useState(\"\");\r\n const [tagList, setTagList] = useState<string[]>(tags);\r\n const [lastAction, setLastAction] = useState<string>(\"\");\r\n\r\n const [suggestions, setSuggestions] = useState<string[]>([]);\r\n const [debounceTimeout, setDebounceTimeout] = useState<NodeJS.Timeout | null>(\r\n null\r\n );\r\n\r\n useEffect(() => {\r\n if (!fetchSuggestions || !inputValue.trim()) {\r\n setSuggestions([]);\r\n return;\r\n }\r\n\r\n if (debounceTimeout) {\r\n clearTimeout(debounceTimeout);\r\n }\r\n\r\n const timeout = setTimeout(async () => {\r\n try {\r\n const result = await fetchSuggestions(inputValue);\r\n setSuggestions(result);\r\n } catch (error) {\r\n console.error(\"Failed to fetch tag suggestions:\", error);\r\n }\r\n }, debounceMs);\r\n\r\n setDebounceTimeout(timeout);\r\n\r\n return () => clearTimeout(timeout);\r\n }, [inputValue, fetchSuggestions, debounceMs]);\r\n\r\n const handleAddTag = (event: KeyboardEvent<HTMLInputElement>) => {\r\n if (\r\n (event.key === \"Enter\" || event.key === \",\") &&\r\n inputValue.trim() !== \"\"\r\n ) {\r\n event.preventDefault();\r\n const newTag = inputValue.trim();\r\n if (!tagList.includes(newTag)) {\r\n const updated = [...tagList, newTag];\r\n setTagList(updated);\r\n onChange?.(updated);\r\n setLastAction(`Added tag ${newTag}`);\r\n }\r\n setInputValue(\"\");\r\n }\r\n };\r\n\r\n const handleRemoveTag = (tag: string) => {\r\n const updated = tagList.filter((t) => t !== tag);\r\n setTagList(updated);\r\n onChange?.(updated);\r\n setLastAction(`Removed tag ${tag}`);\r\n };\r\n\r\n const wrapperClass = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.tagInput,\r\n classMap[theme],\r\n classMap[state],\r\n classMap[size]\r\n ),\r\n [classMap, theme, state, size]\r\n );\r\n\r\n const tagClass = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.tag,\r\n shadow && classMap[`shadow${capitalize(shadow)}`],\r\n rounding && classMap[`round${capitalize(rounding)}`]\r\n ),\r\n [classMap]\r\n );\r\n\r\n return (\r\n <div\r\n className={wrapperClass}\r\n role=\"group\"\r\n aria-labelledby={labelId}\r\n aria-describedby={descId}\r\n data-testid={testId}\r\n >\r\n <label id={labelId} className=\"sr_only\">\r\n Tag Input\r\n </label>\r\n <div\r\n id={descId}\r\n className=\"sr_only\"\r\n data-testid={`${testId}-description`}\r\n >\r\n {ariaDescription}\r\n </div>\r\n\r\n <ul\r\n className={classMap.tagContainer}\r\n aria-live=\"polite\"\r\n aria-relevant=\"additions removals\"\r\n data-testid={`${testId}-list`}\r\n >\r\n {tagList.map((tag, index) => (\r\n <li\r\n key={tag}\r\n className={tagClass}\r\n role=\"listitem\"\r\n data-testid={`${testId}-tag-${index}`}\r\n >\r\n <span className={classMap.tagLabel}>{tag}</span>\r\n <IconButton\r\n type=\"button\"\r\n aria-label={`Remove tag ${tag}`}\r\n className={classMap.removeButton}\r\n onClick={() => handleRemoveTag(tag)}\r\n data-testid={`${testId}-remove-${index}`}\r\n icon={CloseIcon}\r\n size=\"small\"\r\n theme=\"clear\"\r\n />\r\n </li>\r\n ))}\r\n </ul>\r\n\r\n <div className={classMap.inputWrapper}>\r\n <TextInput\r\n id={inputId}\r\n type=\"text\"\r\n theme={theme}\r\n state={state}\r\n rounding={rounding}\r\n shadow={shadow}\r\n className={classMap.input}\r\n value={inputValue}\r\n placeholder={tagList.length === 0 ? placeholder : \"\"}\r\n onChange={(e: { target: { value: string } }) =>\r\n setInputValue(e.target.value)\r\n }\r\n onKeyDown={handleAddTag}\r\n aria-label=\"Add new tag\"\r\n aria-describedby={descId}\r\n data-testid={`${testId}-input`}\r\n />\r\n </div>\r\n {suggestions.length > 0 && (\r\n <ul\r\n className={classMap.suggestionList}\r\n role=\"listbox\"\r\n id={`${inputId}-listbox`}\r\n title=\"suggestions\"\r\n data-testid={`${testId}-suggestions`}\r\n >\r\n {suggestions.map((suggestion, index) => (\r\n <li\r\n key={index}\r\n className={classMap.suggestionItem}\r\n onClick={() => {\r\n if (!tagList.includes(suggestion)) {\r\n const updated = [...tagList, suggestion];\r\n setTagList(updated);\r\n onChange?.(updated);\r\n setLastAction(`Added tag ${suggestion}`);\r\n }\r\n setInputValue(\"\");\r\n setSuggestions([]);\r\n }}\r\n role=\"option\"\r\n data-testid={`${testId}-suggestion-${index}`}\r\n >\r\n {suggestion}\r\n </li>\r\n ))}\r\n </ul>\r\n )}\r\n\r\n <div aria-live=\"polite\" className=\"sr_only\">\r\n {lastAction}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default TagInputBase;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport styles from \"./Taginput.module.scss\";\r\nimport { IconButton, TextInput } from \"@/index.next\";\r\nimport TagInputBase from \"../TagInputBase\";\r\nimport { TagInputProps } from \"../Taginput.types\";\r\n\r\nconst TagInput: React.FC<TagInputProps> = (props) => {\r\n return (\r\n <TagInputBase\r\n {...props}\r\n classMap={styles}\r\n IconButton={IconButton}\r\n TextInput={TextInput}\r\n />\r\n );\r\n};\r\n\r\nexport default TagInput;\r\n"],"names":["IconButton","TextInput","error","tag"],"mappings":"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"}
|
package/dist/next/TagInput.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
|
-
import { A as Avatar } from "./Avatar-
|
|
2
|
+
import { A as Avatar } from "./Avatar-0OXmXwmQ.js";
|
|
3
3
|
import { useMemo } from "react";
|
|
4
4
|
import { c as combineClassNames } from "./classNames-AS8QjFq7.js";
|
|
5
5
|
import { c as capitalize } from "./capitalize-C0TSQSPh.js";
|
|
@@ -163,4 +163,4 @@ const Toolbar = (props) => /* @__PURE__ */ jsx(ToolbarBase, { ...props, AvatarCo
|
|
|
163
163
|
export {
|
|
164
164
|
Toolbar as T
|
|
165
165
|
};
|
|
166
|
-
//# sourceMappingURL=Toolbar-
|
|
166
|
+
//# sourceMappingURL=Toolbar-C1_m1ygd.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Toolbar-
|
|
1
|
+
{"version":3,"file":"Toolbar-C1_m1ygd.js","sources":["../../src/components/Toolbar/ToolbarBase.tsx","../../src/components/Toolbar/next/Toolbar.tsx"],"sourcesContent":["import React, { JSX, useMemo } from \"react\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\r\nimport { ToolbarBaseProps, ToolbarProps } from \"./Toolbar.types\";\r\nimport { capitalize } from \"../../utils/capitalize\";\r\nimport {\r\n getDefaultRounding,\r\n getDefaultShadow,\r\n getDefaultTheme,\r\n} from \"../../config/boreal-style-config\";\r\n\r\nexport const ToolbarBase: React.FC<ToolbarBaseProps> = ({\r\n title,\r\n left,\r\n center,\r\n right,\r\n avatar,\r\n theme = getDefaultTheme(),\r\n shadow = getDefaultShadow(),\r\n rounding = getDefaultRounding(),\r\n className = \"\",\r\n \"data-testid\": testId = \"toolbar\",\r\n AvatarComponent,\r\n classMap,\r\n ariaLabel = \"Toolbar\",\r\n headingLevel = 1,\r\n}): JSX.Element => {\r\n const TitleTag = `h${headingLevel}` as keyof JSX.IntrinsicElements;\r\n\r\n const headerClass = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.toolbar,\r\n classMap[theme],\r\n className,\r\n shadow && classMap[`shadow${capitalize(shadow)}`],\r\n rounding && classMap[`round${capitalize(rounding)}`]\r\n ),\r\n [classMap, theme, className]\r\n );\r\n\r\n return (\r\n <header\r\n className={headerClass}\r\n role=\"banner\"\r\n aria-label={ariaLabel}\r\n data-testid={testId}\r\n >\r\n <div\r\n className={classMap.section}\r\n role=\"navigation\"\r\n aria-label=\"Toolbar left section\"\r\n data-testid={`${testId}-left`}\r\n >\r\n {left}\r\n </div>\r\n\r\n <div\r\n className={classMap.section}\r\n role=\"navigation\"\r\n aria-label=\"Toolbar center section\"\r\n data-testid={`${testId}-center`}\r\n >\r\n {title && (\r\n <TitleTag className={classMap.title} data-testid={`${testId}-title`}>\r\n {title}\r\n </TitleTag>\r\n )}\r\n {center}\r\n </div>\r\n\r\n <div\r\n className={classMap.section}\r\n role=\"navigation\"\r\n aria-label=\"Toolbar right section\"\r\n data-testid={`${testId}-right`}\r\n >\r\n {right}\r\n {avatar && (\r\n <div\r\n className={classMap.avatarWrapper}\r\n data-testid={`${testId}-avatar`}\r\n >\r\n <AvatarComponent\r\n name={avatar.name}\r\n src={avatar.src}\r\n size={avatar.size || \"medium\"}\r\n shape={avatar.shape || \"circle\"}\r\n theme={avatar.theme}\r\n outline={avatar.outline}\r\n onClick={avatar.onClick}\r\n aria-hidden={!avatar.name}\r\n />\r\n </div>\r\n )}\r\n </div>\r\n </header>\r\n );\r\n};\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport styles from \"./Toolbar.module.scss\";\r\nimport Avatar from \"../../Avatar/next/Avatar\";\r\nimport { ToolbarBase } from \"../ToolbarBase\";\r\nimport { ToolbarProps } from \"../Toolbar.types\";\r\n\r\nconst Toolbar: React.FC<ToolbarProps> = (props) => (\r\n <ToolbarBase {...props} AvatarComponent={Avatar} classMap={styles} />\r\n);\r\n\r\nexport default Toolbar;\r\n"],"names":["title"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUO,MAAM,cAA0C,CAAC;AAAA,EACtD,OAAAA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,QAAQ,gBAAA;AAAA,EACR,SAAS,iBAAA;AAAA,EACT,WAAW,mBAAA;AAAA,EACX,YAAY;AAAA,EACZ,eAAe,SAAS;AAAA,EACxB;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ,eAAe;AACjB,MAAmB;AACjB,QAAM,WAAW,IAAI,YAAY;AAEjC,QAAM,cAAc;AAAA,IAClB,MACE;AAAA,MACE,SAAS;AAAA,MACT,SAAS,KAAK;AAAA,MACd;AAAA,MACA,UAAU,SAAS,SAAS,WAAW,MAAM,CAAC,EAAE;AAAA,MAChD,YAAY,SAAS,QAAQ,WAAW,QAAQ,CAAC,EAAE;AAAA,IAAA;AAAA,IAEvD,CAAC,UAAU,OAAO,SAAS;AAAA,EAAA;AAG7B,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW;AAAA,MACX,MAAK;AAAA,MACL,cAAY;AAAA,MACZ,eAAa;AAAA,MAEb,UAAA;AAAA,QAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAW,SAAS;AAAA,YACpB,MAAK;AAAA,YACL,cAAW;AAAA,YACX,eAAa,GAAG,MAAM;AAAA,YAErB,UAAA;AAAA,UAAA;AAAA,QAAA;AAAA,QAGH;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAW,SAAS;AAAA,YACpB,MAAK;AAAA,YACL,cAAW;AAAA,YACX,eAAa,GAAG,MAAM;AAAA,YAErB,UAAA;AAAA,cAAAA,UACC,oBAAC,YAAS,WAAW,SAAS,OAAO,eAAa,GAAG,MAAM,UACxD,UAAAA,OAAA,CACH;AAAA,cAED;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA;AAAA,QAGH;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAW,SAAS;AAAA,YACpB,MAAK;AAAA,YACL,cAAW;AAAA,YACX,eAAa,GAAG,MAAM;AAAA,YAErB,UAAA;AAAA,cAAA;AAAA,cACA,UACC;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,WAAW,SAAS;AAAA,kBACpB,eAAa,GAAG,MAAM;AAAA,kBAEtB,UAAA;AAAA,oBAAC;AAAA,oBAAA;AAAA,sBACC,MAAM,OAAO;AAAA,sBACb,KAAK,OAAO;AAAA,sBACZ,MAAM,OAAO,QAAQ;AAAA,sBACrB,OAAO,OAAO,SAAS;AAAA,sBACvB,OAAO,OAAO;AAAA,sBACd,SAAS,OAAO;AAAA,sBAChB,SAAS,OAAO;AAAA,sBAChB,eAAa,CAAC,OAAO;AAAA,oBAAA;AAAA,kBAAA;AAAA,gBACvB;AAAA,cAAA;AAAA,YACF;AAAA,UAAA;AAAA,QAAA;AAAA,MAEJ;AAAA,IAAA;AAAA,EAAA;AAGN;ACzFA,MAAM,UAAkC,CAAC,UACvC,oBAAC,aAAA,EAAa,GAAG,OAAO,iBAAiB,QAAQ,UAAU,OAAA,CAAQ;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
const require$$2 = require("react/jsx-runtime");
|
|
3
|
-
const Avatar = require("./Avatar-
|
|
3
|
+
const Avatar = require("./Avatar-CguQwhBN.cjs");
|
|
4
4
|
const React = require("react");
|
|
5
5
|
const classNames = require("./classNames-BcWMx052.cjs");
|
|
6
6
|
const capitalize = require("./capitalize-DoV-nOmN.cjs");
|
|
@@ -162,4 +162,4 @@ const ToolbarBase = ({
|
|
|
162
162
|
};
|
|
163
163
|
const Toolbar = (props) => /* @__PURE__ */ require$$2.jsx(ToolbarBase, { ...props, AvatarComponent: Avatar.Avatar, classMap: styles });
|
|
164
164
|
exports.Toolbar = Toolbar;
|
|
165
|
-
//# sourceMappingURL=Toolbar-
|
|
165
|
+
//# sourceMappingURL=Toolbar-OpUQ2wdO.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Toolbar-
|
|
1
|
+
{"version":3,"file":"Toolbar-OpUQ2wdO.cjs","sources":["../../src/components/Toolbar/ToolbarBase.tsx","../../src/components/Toolbar/next/Toolbar.tsx"],"sourcesContent":["import React, { JSX, useMemo } from \"react\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\r\nimport { ToolbarBaseProps, ToolbarProps } from \"./Toolbar.types\";\r\nimport { capitalize } from \"../../utils/capitalize\";\r\nimport {\r\n getDefaultRounding,\r\n getDefaultShadow,\r\n getDefaultTheme,\r\n} from \"../../config/boreal-style-config\";\r\n\r\nexport const ToolbarBase: React.FC<ToolbarBaseProps> = ({\r\n title,\r\n left,\r\n center,\r\n right,\r\n avatar,\r\n theme = getDefaultTheme(),\r\n shadow = getDefaultShadow(),\r\n rounding = getDefaultRounding(),\r\n className = \"\",\r\n \"data-testid\": testId = \"toolbar\",\r\n AvatarComponent,\r\n classMap,\r\n ariaLabel = \"Toolbar\",\r\n headingLevel = 1,\r\n}): JSX.Element => {\r\n const TitleTag = `h${headingLevel}` as keyof JSX.IntrinsicElements;\r\n\r\n const headerClass = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.toolbar,\r\n classMap[theme],\r\n className,\r\n shadow && classMap[`shadow${capitalize(shadow)}`],\r\n rounding && classMap[`round${capitalize(rounding)}`]\r\n ),\r\n [classMap, theme, className]\r\n );\r\n\r\n return (\r\n <header\r\n className={headerClass}\r\n role=\"banner\"\r\n aria-label={ariaLabel}\r\n data-testid={testId}\r\n >\r\n <div\r\n className={classMap.section}\r\n role=\"navigation\"\r\n aria-label=\"Toolbar left section\"\r\n data-testid={`${testId}-left`}\r\n >\r\n {left}\r\n </div>\r\n\r\n <div\r\n className={classMap.section}\r\n role=\"navigation\"\r\n aria-label=\"Toolbar center section\"\r\n data-testid={`${testId}-center`}\r\n >\r\n {title && (\r\n <TitleTag className={classMap.title} data-testid={`${testId}-title`}>\r\n {title}\r\n </TitleTag>\r\n )}\r\n {center}\r\n </div>\r\n\r\n <div\r\n className={classMap.section}\r\n role=\"navigation\"\r\n aria-label=\"Toolbar right section\"\r\n data-testid={`${testId}-right`}\r\n >\r\n {right}\r\n {avatar && (\r\n <div\r\n className={classMap.avatarWrapper}\r\n data-testid={`${testId}-avatar`}\r\n >\r\n <AvatarComponent\r\n name={avatar.name}\r\n src={avatar.src}\r\n size={avatar.size || \"medium\"}\r\n shape={avatar.shape || \"circle\"}\r\n theme={avatar.theme}\r\n outline={avatar.outline}\r\n onClick={avatar.onClick}\r\n aria-hidden={!avatar.name}\r\n />\r\n </div>\r\n )}\r\n </div>\r\n </header>\r\n );\r\n};\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport styles from \"./Toolbar.module.scss\";\r\nimport Avatar from \"../../Avatar/next/Avatar\";\r\nimport { ToolbarBase } from \"../ToolbarBase\";\r\nimport { ToolbarProps } from \"../Toolbar.types\";\r\n\r\nconst Toolbar: React.FC<ToolbarProps> = (props) => (\r\n <ToolbarBase {...props} AvatarComponent={Avatar} classMap={styles} />\r\n);\r\n\r\nexport default Toolbar;\r\n"],"names":["title","getDefaultTheme","getDefaultShadow","getDefaultRounding","useMemo","combineClassNames","capitalize","jsxs","jsx","Avatar"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUO,MAAM,cAA0C,CAAC;AAAA,EACtD,OAAAA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,QAAQC,kBAAAA,gBAAA;AAAA,EACR,SAASC,kBAAAA,iBAAA;AAAA,EACT,WAAWC,kBAAAA,mBAAA;AAAA,EACX,YAAY;AAAA,EACZ,eAAe,SAAS;AAAA,EACxB;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ,eAAe;AACjB,MAAmB;AACjB,QAAM,WAAW,IAAI,YAAY;AAEjC,QAAM,cAAcC,MAAAA;AAAAA,IAClB,MACEC,WAAAA;AAAAA,MACE,SAAS;AAAA,MACT,SAAS,KAAK;AAAA,MACd;AAAA,MACA,UAAU,SAAS,SAASC,WAAAA,WAAW,MAAM,CAAC,EAAE;AAAA,MAChD,YAAY,SAAS,QAAQA,WAAAA,WAAW,QAAQ,CAAC,EAAE;AAAA,IAAA;AAAA,IAEvD,CAAC,UAAU,OAAO,SAAS;AAAA,EAAA;AAG7B,SACEC,2BAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW;AAAA,MACX,MAAK;AAAA,MACL,cAAY;AAAA,MACZ,eAAa;AAAA,MAEb,UAAA;AAAA,QAAAC,2BAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAW,SAAS;AAAA,YACpB,MAAK;AAAA,YACL,cAAW;AAAA,YACX,eAAa,GAAG,MAAM;AAAA,YAErB,UAAA;AAAA,UAAA;AAAA,QAAA;AAAA,QAGHD,2BAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAW,SAAS;AAAA,YACpB,MAAK;AAAA,YACL,cAAW;AAAA,YACX,eAAa,GAAG,MAAM;AAAA,YAErB,UAAA;AAAA,cAAAP,UACCQ,2BAAAA,IAAC,YAAS,WAAW,SAAS,OAAO,eAAa,GAAG,MAAM,UACxD,UAAAR,OAAA,CACH;AAAA,cAED;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA;AAAA,QAGHO,2BAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAW,SAAS;AAAA,YACpB,MAAK;AAAA,YACL,cAAW;AAAA,YACX,eAAa,GAAG,MAAM;AAAA,YAErB,UAAA;AAAA,cAAA;AAAA,cACA,UACCC,2BAAAA;AAAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,WAAW,SAAS;AAAA,kBACpB,eAAa,GAAG,MAAM;AAAA,kBAEtB,UAAAA,2BAAAA;AAAAA,oBAAC;AAAA,oBAAA;AAAA,sBACC,MAAM,OAAO;AAAA,sBACb,KAAK,OAAO;AAAA,sBACZ,MAAM,OAAO,QAAQ;AAAA,sBACrB,OAAO,OAAO,SAAS;AAAA,sBACvB,OAAO,OAAO;AAAA,sBACd,SAAS,OAAO;AAAA,sBAChB,SAAS,OAAO;AAAA,sBAChB,eAAa,CAAC,OAAO;AAAA,oBAAA;AAAA,kBAAA;AAAA,gBACvB;AAAA,cAAA;AAAA,YACF;AAAA,UAAA;AAAA,QAAA;AAAA,MAEJ;AAAA,IAAA;AAAA,EAAA;AAGN;ACzFA,MAAM,UAAkC,CAAC,UACvCA,2BAAAA,IAAC,aAAA,EAAa,GAAG,OAAO,iBAAiBC,OAAAA,QAAQ,UAAU,OAAA,CAAQ;;"}
|
package/dist/next/Toolbar.cjs.js
CHANGED
package/dist/next/Toolbar.js
CHANGED
package/dist/next/index.cjs.js
CHANGED
|
@@ -6,13 +6,13 @@ const colorSchemes = require("./colorSchemes.cjs.js");
|
|
|
6
6
|
const borealStyleConfig = require("./boreal-style-config-Rr5d5Qts.cjs");
|
|
7
7
|
const Button = require("./Button-WSFdkLsa.cjs");
|
|
8
8
|
const IconButton = require("./IconButton-CNzF48hu.cjs");
|
|
9
|
-
const STT = require("./STT-
|
|
9
|
+
const STT = require("./STT-CLZjfsV_.cjs");
|
|
10
10
|
const TextInput = require("./TextInput-iQT-2lPj.cjs");
|
|
11
11
|
const TextArea = require("./TextArea-BfVBd3wl.cjs");
|
|
12
|
-
const Select = require("./Select-
|
|
13
|
-
const Footer = require("./Footer-
|
|
12
|
+
const Select = require("./Select-DxQS7u41.cjs");
|
|
13
|
+
const Footer = require("./Footer-CLvhExUU.cjs");
|
|
14
14
|
const FileUpload = require("./FileUpload-427ZyzCY.cjs");
|
|
15
|
-
const
|
|
15
|
+
const TagInput = require("./TagInput-BcNgwFOj.cjs");
|
|
16
16
|
const RadioButton = require("./RadioButton-cXdUfJD2.cjs");
|
|
17
17
|
const Slider = require("./Slider-DbxNKdGq.cjs");
|
|
18
18
|
const Checkbox = require("./Checkbox-COcqcXOD.cjs");
|
|
@@ -34,17 +34,17 @@ const Skeleton = require("./Skeleton-CMuXs5GO.cjs");
|
|
|
34
34
|
const Spinner = require("./Spinner-Doh4Uft1.cjs");
|
|
35
35
|
const Tooltip = require("./Tooltip-DHhLeygn.cjs");
|
|
36
36
|
const MessagePopUp = require("./MessagePopUp-BxFI8IpO.cjs");
|
|
37
|
-
const PopOver = require("./PopOver-
|
|
38
|
-
const NavBar = require("./NavBar-
|
|
37
|
+
const PopOver = require("./PopOver-CAxcmHRx.cjs");
|
|
38
|
+
const NavBar = require("./NavBar-CXqV4sKP.cjs");
|
|
39
39
|
const Breadcrumbs = require("./Breadcrumbs-0cJD4s9s.cjs");
|
|
40
40
|
const Tabs = require("./Tabs-DuZPFjen.cjs");
|
|
41
41
|
const Stepper = require("./Stepper-D2UYDRwT.cjs");
|
|
42
42
|
const Timeline = require("./Timeline-36_Qy1-m.cjs");
|
|
43
|
-
const Accordion = require("./Accordion-
|
|
43
|
+
const Accordion = require("./Accordion-P9JXxfBX.cjs");
|
|
44
44
|
const Pager = require("./Pager-B81ecC4j.cjs");
|
|
45
45
|
const Modal = require("./Modal-Bf7egMf2.cjs");
|
|
46
46
|
const Toggle = require("./Toggle-CU7I_vjc.cjs");
|
|
47
|
-
const Toolbar = require("./Toolbar-
|
|
47
|
+
const Toolbar = require("./Toolbar-OpUQ2wdO.cjs");
|
|
48
48
|
const Dropdown = require("./Dropdown-BtbLZeZq.cjs");
|
|
49
49
|
const Divider = require("./Divider-BlJMteki.cjs");
|
|
50
50
|
const MetricBox = require("./MetricBox-Dtkrwrtw.cjs");
|
|
@@ -53,7 +53,7 @@ const CommandPalette = require("./CommandPalette-Dp2pT5ot.cjs");
|
|
|
53
53
|
const NotificationCenter = require("./NotificationCenter-DmcHIkOp.cjs");
|
|
54
54
|
const Sidebar = require("./Sidebar-PUffGMhm.cjs");
|
|
55
55
|
const Card = require("./Card-BCYMEFyT.cjs");
|
|
56
|
-
const Avatar = require("./Avatar-
|
|
56
|
+
const Avatar = require("./Avatar-CguQwhBN.cjs");
|
|
57
57
|
const ChipGroupBase = React.forwardRef(
|
|
58
58
|
({
|
|
59
59
|
chips,
|
|
@@ -201,7 +201,7 @@ exports.Select = Select.Select;
|
|
|
201
201
|
exports.Footer = Footer.Footer;
|
|
202
202
|
exports.ThemeSelect = Footer.UserThemeSettings;
|
|
203
203
|
exports.FileUpload = FileUpload.FileUpload;
|
|
204
|
-
exports.TagInput =
|
|
204
|
+
exports.TagInput = TagInput.TagInput;
|
|
205
205
|
exports.RadioButton = RadioButton.RadioButton;
|
|
206
206
|
exports.Slider = Slider.Slider;
|
|
207
207
|
exports.Checkbox = Checkbox.Checkbox;
|
package/dist/next/index.js
CHANGED
|
@@ -5,14 +5,14 @@ import { c as getDefaultSize } from "./boreal-style-config-BILmxkZG.js";
|
|
|
5
5
|
import { s } from "./boreal-style-config-BILmxkZG.js";
|
|
6
6
|
import { B } from "./Button-CbX-VlK_.js";
|
|
7
7
|
import { I } from "./IconButton-DFrFh0kg.js";
|
|
8
|
-
import { S } from "./STT-
|
|
8
|
+
import { S } from "./STT-B5eE92VH.js";
|
|
9
9
|
import { T as T2 } from "./TextInput-DkNxrV4X.js";
|
|
10
10
|
import { T as T3 } from "./TextArea-CwR4vrML.js";
|
|
11
|
-
import { S as S2 } from "./Select-
|
|
12
|
-
import { F as Footer } from "./Footer-
|
|
13
|
-
import { U } from "./Footer-
|
|
11
|
+
import { S as S2 } from "./Select-D-9wuabW.js";
|
|
12
|
+
import { F as Footer } from "./Footer-CzA8xCa3.js";
|
|
13
|
+
import { U } from "./Footer-CzA8xCa3.js";
|
|
14
14
|
import { F } from "./FileUpload-DQhKhtgc.js";
|
|
15
|
-
import { T as T4 } from "./
|
|
15
|
+
import { T as T4 } from "./TagInput-CdYMgcYY.js";
|
|
16
16
|
import { R } from "./RadioButton-BKS65jm9.js";
|
|
17
17
|
import { S as S3 } from "./Slider-B5BJJyaD.js";
|
|
18
18
|
import { C } from "./Checkbox-kWrAB9F7.js";
|
|
@@ -34,17 +34,17 @@ import { S as S4 } from "./Skeleton-BWBHgsOM.js";
|
|
|
34
34
|
import { S as S5 } from "./Spinner-BxvU43sx.js";
|
|
35
35
|
import { T as T5 } from "./Tooltip-G3P0OyTP.js";
|
|
36
36
|
import { M as M2 } from "./MessagePopUp-DI7-Ggmn.js";
|
|
37
|
-
import { P as P2 } from "./PopOver-
|
|
38
|
-
import { N } from "./NavBar-
|
|
37
|
+
import { P as P2 } from "./PopOver-Cz4BCVFe.js";
|
|
38
|
+
import { N } from "./NavBar-BXbAUNSJ.js";
|
|
39
39
|
import { B as B3 } from "./Breadcrumbs-liNC5ZzY.js";
|
|
40
40
|
import { T as T6 } from "./Tabs-CNU0A_YY.js";
|
|
41
41
|
import { S as S6 } from "./Stepper-5FojeYPE.js";
|
|
42
42
|
import { T as T7 } from "./Timeline-EnwGQ4Mi.js";
|
|
43
|
-
import { A } from "./Accordion-
|
|
43
|
+
import { A } from "./Accordion-DD5oHwaa.js";
|
|
44
44
|
import { P as P3 } from "./Pager-BqShs8_d.js";
|
|
45
45
|
import { M as M3 } from "./Modal-BZvTcgoM.js";
|
|
46
46
|
import { T as T8 } from "./Toggle-R5pWM7gk.js";
|
|
47
|
-
import { T as T9 } from "./Toolbar-
|
|
47
|
+
import { T as T9 } from "./Toolbar-C1_m1ygd.js";
|
|
48
48
|
import { D as D3 } from "./Dropdown-DyBmnKrz.js";
|
|
49
49
|
import { D as D4 } from "./Divider-g7VS0Sbx.js";
|
|
50
50
|
import { M as M4 } from "./MetricBox-rxFYolH_.js";
|
|
@@ -53,7 +53,7 @@ import { C as C4 } from "./CommandPalette-CEZwvLuu.js";
|
|
|
53
53
|
import { N as N2 } from "./NotificationCenter-BCXpVjHd.js";
|
|
54
54
|
import { S as S7 } from "./Sidebar-B9jHy0wy.js";
|
|
55
55
|
import { C as C5 } from "./Card-DhdZiqdl.js";
|
|
56
|
-
import { A as A2 } from "./Avatar-
|
|
56
|
+
import { A as A2 } from "./Avatar-0OXmXwmQ.js";
|
|
57
57
|
const ChipGroupBase = forwardRef(
|
|
58
58
|
({
|
|
59
59
|
chips,
|