boreal-ui 0.0.50 → 0.0.54
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/{Card-YD4BgNEU.js → Card-BjLC4t0w.js} +20 -47
- package/dist/core/Card-BjLC4t0w.js.map +1 -0
- package/dist/core/{Card-C57chjAP.cjs → Card-DRM65kM-.cjs} +20 -47
- package/dist/core/Card-DRM65kM-.cjs.map +1 -0
- package/dist/core/Card.cjs.js +1 -1
- package/dist/core/Card.js +1 -1
- package/dist/core/{FileUpload-C0eHx1h8.js → FileUpload-9fIxslAo.js} +2 -2
- package/dist/core/{FileUpload-C0eHx1h8.js.map → FileUpload-9fIxslAo.js.map} +1 -1
- package/dist/core/{FileUpload-BJ3RJxT3.cjs → FileUpload-DbMxpH-U.cjs} +2 -2
- package/dist/core/{FileUpload-BJ3RJxT3.cjs.map → FileUpload-DbMxpH-U.cjs.map} +1 -1
- package/dist/core/FileUpload.cjs.js +1 -1
- package/dist/core/FileUpload.js +1 -1
- package/dist/core/{MessagePopup-B3lEfar7.js → MessagePopup-BMGIVKoJ.js} +4 -4
- package/dist/core/{MessagePopup-B3lEfar7.js.map → MessagePopup-BMGIVKoJ.js.map} +1 -1
- package/dist/core/{MessagePopup-CtdpuRFv.cjs → MessagePopup-DQQKRCGF.cjs} +4 -4
- package/dist/core/{MessagePopup-CtdpuRFv.cjs.map → MessagePopup-DQQKRCGF.cjs.map} +1 -1
- package/dist/core/MessagePopup.cjs.js +4 -0
- package/dist/core/MessagePopup.cjs.js.map +1 -0
- package/dist/core/MessagePopup.js +5 -0
- package/dist/core/MessagePopup.js.map +1 -0
- package/dist/core/{ProgressBar-DaA5vvnq.js → ProgressBar-BLcSyVgQ.js} +51 -21
- package/dist/core/ProgressBar-BLcSyVgQ.js.map +1 -0
- package/dist/core/{ProgressBar-BwjYOqoE.cjs → ProgressBar-BbIZLV1t.cjs} +50 -20
- package/dist/core/ProgressBar-BbIZLV1t.cjs.map +1 -0
- package/dist/core/ProgressBar.cjs.js +1 -1
- package/dist/core/ProgressBar.js +1 -1
- package/dist/core/{Taginput-BXCxdLf0.cjs → TagInput-BXCxdLf0.cjs} +1 -1
- package/dist/core/TagInput-BXCxdLf0.cjs.map +1 -0
- package/dist/core/{Taginput-CoxxwLXg.js → TagInput-CoxxwLXg.js} +1 -1
- package/dist/core/TagInput-CoxxwLXg.js.map +1 -0
- package/dist/core/TagInput.cjs.js +2 -2
- package/dist/core/TagInput.js +1 -1
- package/dist/core/boreal-ui.css +31 -0
- package/dist/core/index.cjs.js +7 -7
- package/dist/core/index.js +6 -6
- package/dist/next/{Avatar-B-Ws4Ueo.js → Avatar-B24bFFqY.js} +3 -3
- package/dist/next/{Avatar-B-Ws4Ueo.js.map → Avatar-B24bFFqY.js.map} +1 -1
- package/dist/next/{Avatar-B9sMyRWr.cjs → Avatar-CPaxiA0r.cjs} +3 -3
- package/dist/next/{Avatar-B9sMyRWr.cjs.map → Avatar-CPaxiA0r.cjs.map} +1 -1
- package/dist/next/Avatar.cjs.js +1 -1
- package/dist/next/Avatar.js +1 -1
- package/dist/next/{Breadcrumbs-CrKRsQf3.cjs → Breadcrumbs-BlFi63K8.cjs} +3 -3
- package/dist/next/{Breadcrumbs-CrKRsQf3.cjs.map → Breadcrumbs-BlFi63K8.cjs.map} +1 -1
- package/dist/next/{Breadcrumbs-ZK64MIGd.js → Breadcrumbs-D9BMYEZi.js} +3 -3
- package/dist/next/{Breadcrumbs-ZK64MIGd.js.map → Breadcrumbs-D9BMYEZi.js.map} +1 -1
- package/dist/next/Breadcrumbs.cjs.js +1 -1
- package/dist/next/Breadcrumbs.js +1 -1
- package/dist/next/{Button-BI0LErYM.cjs → Button-DPoX7ahh.cjs} +2 -2
- package/dist/next/{Button-BI0LErYM.cjs.map → Button-DPoX7ahh.cjs.map} +1 -1
- package/dist/next/{Button-qs4m4zx0.js → Button-DhH3Gy0J.js} +2 -2
- package/dist/next/{Button-qs4m4zx0.js.map → Button-DhH3Gy0J.js.map} +1 -1
- package/dist/next/Button.cjs.js +1 -1
- package/dist/next/Button.js +1 -1
- package/dist/next/{Card-CNwE1Mkt.js → Card-4SKxHmOQ.js} +23 -50
- package/dist/next/Card-4SKxHmOQ.js.map +1 -0
- package/dist/next/{Card-CddrG8Xx.cjs → Card-BdzmlYGf.cjs} +23 -50
- package/dist/next/Card-BdzmlYGf.cjs.map +1 -0
- package/dist/next/Card.cjs.js +1 -1
- package/dist/next/Card.js +1 -1
- package/dist/next/{Chip-D2mvW5L7.js → Chip-BqMZEDW_.js} +2 -2
- package/dist/next/{Chip-D2mvW5L7.js.map → Chip-BqMZEDW_.js.map} +1 -1
- package/dist/next/{Chip-BWTBVAIE.cjs → Chip-CqvlZI-K.cjs} +2 -2
- package/dist/next/{Chip-BWTBVAIE.cjs.map → Chip-CqvlZI-K.cjs.map} +1 -1
- package/dist/next/Chip.cjs.js +1 -1
- package/dist/next/Chip.js +1 -1
- package/dist/next/{CommandPalette-BO6R9zQs.cjs → CommandPalette-C0NN-NWE.cjs} +2 -2
- package/dist/next/{CommandPalette-BO6R9zQs.cjs.map → CommandPalette-C0NN-NWE.cjs.map} +1 -1
- package/dist/next/{CommandPalette-CN0BiN0R.js → CommandPalette-vklqlRV0.js} +2 -2
- package/dist/next/{CommandPalette-CN0BiN0R.js.map → CommandPalette-vklqlRV0.js.map} +1 -1
- package/dist/next/CommandPalette.cjs.js +1 -1
- package/dist/next/CommandPalette.js +1 -1
- package/dist/next/{Dropdown-Czc7qKPn.js → Dropdown-BjxT8ivq.js} +2 -2
- package/dist/next/{Dropdown-Czc7qKPn.js.map → Dropdown-BjxT8ivq.js.map} +1 -1
- package/dist/next/{Dropdown-BnuZW883.cjs → Dropdown-IW2Ph6-e.cjs} +2 -2
- package/dist/next/{Dropdown-BnuZW883.cjs.map → Dropdown-IW2Ph6-e.cjs.map} +1 -1
- package/dist/next/Dropdown.cjs.js +1 -1
- package/dist/next/Dropdown.js +1 -1
- package/dist/next/{EmptyState-Bb90F-ej.cjs → EmptyState-BS6-CuHp.cjs} +2 -2
- package/dist/next/{EmptyState-Bb90F-ej.cjs.map → EmptyState-BS6-CuHp.cjs.map} +1 -1
- package/dist/next/{EmptyState-Brd4N36F.js → EmptyState-D_Gcrj_3.js} +2 -2
- package/dist/next/{EmptyState-Brd4N36F.js.map → EmptyState-D_Gcrj_3.js.map} +1 -1
- package/dist/next/EmptyState.cjs.js +1 -1
- package/dist/next/EmptyState.js +1 -1
- package/dist/next/{FileUpload-Drm5_xEx.cjs → FileUpload-Cj99fQhe.cjs} +4 -4
- package/dist/next/{FileUpload-Drm5_xEx.cjs.map → FileUpload-Cj99fQhe.cjs.map} +1 -1
- package/dist/next/{FileUpload-BMMpH1El.js → FileUpload-St2eEaTn.js} +4 -4
- package/dist/next/{FileUpload-BMMpH1El.js.map → FileUpload-St2eEaTn.js.map} +1 -1
- package/dist/next/FileUpload.cjs.js +1 -1
- package/dist/next/FileUpload.js +1 -1
- package/dist/next/{Footer-EF2-ryvY.cjs → Footer-B3KTDWBR.cjs} +4 -4
- package/dist/next/{Footer-EF2-ryvY.cjs.map → Footer-B3KTDWBR.cjs.map} +1 -1
- package/dist/next/{Footer-B6_LG958.js → Footer-dtGtOPyR.js} +4 -4
- package/dist/next/{Footer-B6_LG958.js.map → Footer-dtGtOPyR.js.map} +1 -1
- package/dist/next/Footer.cjs.js +1 -1
- package/dist/next/Footer.js +1 -1
- package/dist/next/{IconButton-BTUFKRZt.js → IconButton-Ct3YtlG9.js} +2 -2
- package/dist/next/{IconButton-BTUFKRZt.js.map → IconButton-Ct3YtlG9.js.map} +1 -1
- package/dist/next/{IconButton-2l-_HOMB.cjs → IconButton-aF7cTy19.cjs} +2 -2
- package/dist/next/{IconButton-2l-_HOMB.cjs.map → IconButton-aF7cTy19.cjs.map} +1 -1
- package/dist/next/IconButton.cjs.js +1 -1
- package/dist/next/IconButton.js +1 -1
- package/dist/next/{MessagePopup-WUBGyJ_F.js → MessagePopup-C4n0Qw7n.js} +6 -6
- package/dist/next/{MessagePopup-WUBGyJ_F.js.map → MessagePopup-C4n0Qw7n.js.map} +1 -1
- package/dist/next/{MessagePopup-DsquzWSn.cjs → MessagePopup-CwOeZAAM.cjs} +6 -6
- package/dist/next/{MessagePopup-DsquzWSn.cjs.map → MessagePopup-CwOeZAAM.cjs.map} +1 -1
- package/dist/next/MessagePopup.cjs.js +4 -0
- package/dist/next/MessagePopup.cjs.js.map +1 -0
- package/dist/next/MessagePopup.js +5 -0
- package/dist/next/MessagePopup.js.map +1 -0
- package/dist/next/{Modal-B2ilLCoi.js → Modal-CIzoBs9H.js} +2 -2
- package/dist/next/{Modal-B2ilLCoi.js.map → Modal-CIzoBs9H.js.map} +1 -1
- package/dist/next/{Modal-CVKVAEdd.cjs → Modal-DCNGQN70.cjs} +2 -2
- package/dist/next/{Modal-CVKVAEdd.cjs.map → Modal-DCNGQN70.cjs.map} +1 -1
- package/dist/next/Modal.cjs.js +1 -1
- package/dist/next/Modal.js +1 -1
- package/dist/next/{NavBar-DVEf0iJH.cjs → NavBar-DDu46bCF.cjs} +3 -3
- package/dist/next/{NavBar-DVEf0iJH.cjs.map → NavBar-DDu46bCF.cjs.map} +1 -1
- package/dist/next/{NavBar-CmvgkEZt.js → NavBar-DyI3rKSN.js} +3 -3
- package/dist/next/{NavBar-CmvgkEZt.js.map → NavBar-DyI3rKSN.js.map} +1 -1
- package/dist/next/NavBar.cjs.js +1 -1
- package/dist/next/NavBar.js +1 -1
- package/dist/next/{NotificationCenter-CtM10CVj.js → NotificationCenter-BIuKaeXk.js} +3 -3
- package/dist/next/{NotificationCenter-CtM10CVj.js.map → NotificationCenter-BIuKaeXk.js.map} +1 -1
- package/dist/next/{NotificationCenter-CtL6rozQ.cjs → NotificationCenter-CzdOOnWg.cjs} +3 -3
- package/dist/next/{NotificationCenter-CtL6rozQ.cjs.map → NotificationCenter-CzdOOnWg.cjs.map} +1 -1
- package/dist/next/NotificationCenter.cjs.js +1 -1
- package/dist/next/NotificationCenter.js +1 -1
- package/dist/next/{Pager-Bxxewb8I.cjs → Pager-C6vww_Lf.cjs} +3 -3
- package/dist/next/{Pager-Bxxewb8I.cjs.map → Pager-C6vww_Lf.cjs.map} +1 -1
- package/dist/next/{Pager-D0Mw7o7v.js → Pager-DkXLe3dd.js} +3 -3
- package/dist/next/{Pager-D0Mw7o7v.js.map → Pager-DkXLe3dd.js.map} +1 -1
- package/dist/next/Pager.cjs.js +1 -1
- package/dist/next/Pager.js +1 -1
- package/dist/next/ProgressBar-BM0Rp63R.js +188 -0
- package/dist/next/ProgressBar-BM0Rp63R.js.map +1 -0
- package/dist/next/ProgressBar-CDhjp_gn.cjs +187 -0
- package/dist/next/ProgressBar-CDhjp_gn.cjs.map +1 -0
- package/dist/next/ProgressBar.cjs.js +1 -1
- package/dist/next/ProgressBar.js +1 -1
- package/dist/next/{Sidebar-DajVSn82.cjs → Sidebar-CBC-Gu5d.cjs} +3 -3
- package/dist/next/{Sidebar-DajVSn82.cjs.map → Sidebar-CBC-Gu5d.cjs.map} +1 -1
- package/dist/next/{Sidebar-CJ4VrQIW.js → Sidebar-oJzZMxwu.js} +3 -3
- package/dist/next/{Sidebar-CJ4VrQIW.js.map → Sidebar-oJzZMxwu.js.map} +1 -1
- package/dist/next/Sidebar.cjs.js +1 -1
- package/dist/next/Sidebar.js +1 -1
- package/dist/next/{Stepper-BvA_ZAho.js → Stepper-DBwramgz.js} +2 -2
- package/dist/next/{Stepper-BvA_ZAho.js.map → Stepper-DBwramgz.js.map} +1 -1
- package/dist/next/{Stepper-D6X70Sr6.cjs → Stepper-YQqjSOG0.cjs} +2 -2
- package/dist/next/{Stepper-D6X70Sr6.cjs.map → Stepper-YQqjSOG0.cjs.map} +1 -1
- package/dist/next/Stepper.cjs.js +1 -1
- package/dist/next/Stepper.js +1 -1
- package/dist/next/{TagInput-DfNJiPKh.cjs → TagInput-B38cJqaG.cjs} +3 -3
- package/dist/next/TagInput-B38cJqaG.cjs.map +1 -0
- package/dist/next/{TagInput-DKzxPiwU.js → TagInput-BDbDZ1W8.js} +3 -3
- package/dist/next/TagInput-BDbDZ1W8.js.map +1 -0
- package/dist/next/TagInput.cjs.js +1 -1
- package/dist/next/TagInput.js +1 -1
- package/dist/next/{TextInput-C1TUvbWx.cjs → TextInput-C3cLfd6E.cjs} +2 -2
- package/dist/next/{TextInput-C1TUvbWx.cjs.map → TextInput-C3cLfd6E.cjs.map} +1 -1
- package/dist/next/{TextInput-CyGkgvS3.js → TextInput-D68lumzk.js} +2 -2
- package/dist/next/{TextInput-CyGkgvS3.js.map → TextInput-D68lumzk.js.map} +1 -1
- package/dist/next/TextInput.cjs.js +1 -1
- package/dist/next/TextInput.js +1 -1
- package/dist/next/{Toolbar-PwnuYGDR.cjs → Toolbar-B-APlNjI.cjs} +2 -2
- package/dist/next/{Toolbar-PwnuYGDR.cjs.map → Toolbar-B-APlNjI.cjs.map} +1 -1
- package/dist/next/{Toolbar-wbusnAUV.js → Toolbar-DHyc9uqa.js} +2 -2
- package/dist/next/{Toolbar-wbusnAUV.js.map → Toolbar-DHyc9uqa.js.map} +1 -1
- package/dist/next/Toolbar.cjs.js +1 -1
- package/dist/next/Toolbar.js +1 -1
- package/dist/next/boreal-ui.css +122 -72
- package/dist/next/{image-BBS8QO15.js → image-B9PuwflE.js} +47 -3
- package/dist/next/image-B9PuwflE.js.map +1 -0
- package/dist/next/{image-A4nTeRaX.cjs → image-Bo_vHlt1.cjs} +47 -3
- package/dist/next/image-Bo_vHlt1.cjs.map +1 -0
- package/dist/next/index.cjs.js +23 -23
- package/dist/next/index.js +23 -23
- package/dist/next/{link-lNk_lOdS.cjs → link-B1N-q38H.cjs} +276 -49
- package/dist/next/link-B1N-q38H.cjs.map +1 -0
- package/dist/next/{link-CxWP3aXr.js → link-CyxHztrS.js} +276 -49
- package/dist/next/link-CyxHztrS.js.map +1 -0
- package/dist/next/{navigation-DxXFNXZM.js → navigation-C2hD8Jlk.js} +157 -199
- package/dist/next/navigation-C2hD8Jlk.js.map +1 -0
- package/dist/next/{navigation-CZU71Pmb.cjs → navigation-C3npGZmO.cjs} +157 -199
- package/dist/next/navigation-C3npGZmO.cjs.map +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/types/components/Card/Card.types.d.ts +4 -4
- package/dist/types/components/Card/Card.types.d.ts.map +1 -1
- package/dist/types/components/Card/CardBase.d.ts.map +1 -1
- package/dist/types/components/{MessagePopUp → MessagePopup}/MessagePopup.types.d.ts +2 -2
- package/dist/types/components/{MessagePopUp → MessagePopup}/MessagePopup.types.d.ts.map +1 -1
- package/dist/types/components/{MessagePopUp → MessagePopup}/MessagePopupBase.d.ts.map +1 -1
- package/dist/types/components/MessagePopup/core/MessagePopup.d.ts +6 -0
- package/dist/types/components/{MessagePopUp → MessagePopup}/core/MessagePopup.d.ts.map +1 -1
- package/dist/types/components/MessagePopup/next/MessagePopup.d.ts +5 -0
- package/dist/types/components/{MessagePopUp → MessagePopup}/next/MessagePopup.d.ts.map +1 -1
- package/dist/types/components/ProgressBar/ProgressBar.types.d.ts +10 -1
- package/dist/types/components/ProgressBar/ProgressBar.types.d.ts.map +1 -1
- package/dist/types/components/ProgressBar/ProgressBarBase.d.ts.map +1 -1
- package/dist/types/components/ProgressBar/core/ProgressBar.d.ts.map +1 -1
- package/dist/types/components/TagInput/{Taginput.types.d.ts → TagInput.types.d.ts} +1 -1
- package/dist/types/components/TagInput/{Taginput.types.d.ts.map → TagInput.types.d.ts.map} +1 -1
- package/dist/types/components/TagInput/TagInputBase.d.ts +1 -1
- package/dist/types/components/TagInput/core/TagInput.d.ts +6 -0
- 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 +1 -1
- package/dist/types/index.core.d.ts +2 -2
- package/dist/types/index.next.d.ts +1 -1
- package/dist/types/public.types.d.ts +2 -2
- package/package.json +8 -8
- package/dist/core/Card-C57chjAP.cjs.map +0 -1
- package/dist/core/Card-YD4BgNEU.js.map +0 -1
- package/dist/core/MessagePopUp.cjs.js +0 -4
- package/dist/core/MessagePopUp.cjs.js.map +0 -1
- package/dist/core/MessagePopUp.js +0 -5
- package/dist/core/MessagePopUp.js.map +0 -1
- package/dist/core/ProgressBar-BwjYOqoE.cjs.map +0 -1
- package/dist/core/ProgressBar-DaA5vvnq.js.map +0 -1
- package/dist/core/Taginput-BXCxdLf0.cjs.map +0 -1
- package/dist/core/Taginput-CoxxwLXg.js.map +0 -1
- package/dist/next/Card-CNwE1Mkt.js.map +0 -1
- package/dist/next/Card-CddrG8Xx.cjs.map +0 -1
- package/dist/next/MessagePopUp.cjs.js +0 -4
- package/dist/next/MessagePopUp.cjs.js.map +0 -1
- package/dist/next/MessagePopUp.js +0 -5
- package/dist/next/MessagePopUp.js.map +0 -1
- package/dist/next/ProgressBar-BMuv0kis.cjs +0 -151
- package/dist/next/ProgressBar-BMuv0kis.cjs.map +0 -1
- package/dist/next/ProgressBar-DuaWQouO.js +0 -152
- package/dist/next/ProgressBar-DuaWQouO.js.map +0 -1
- package/dist/next/TagInput-DKzxPiwU.js.map +0 -1
- package/dist/next/TagInput-DfNJiPKh.cjs.map +0 -1
- package/dist/next/image-A4nTeRaX.cjs.map +0 -1
- package/dist/next/image-BBS8QO15.js.map +0 -1
- package/dist/next/link-CxWP3aXr.js.map +0 -1
- package/dist/next/link-lNk_lOdS.cjs.map +0 -1
- package/dist/next/navigation-CZU71Pmb.cjs.map +0 -1
- package/dist/next/navigation-DxXFNXZM.js.map +0 -1
- package/dist/types/components/MessagePopUp/core/MessagePopup.d.ts +0 -6
- package/dist/types/components/MessagePopUp/next/MessagePopup.d.ts +0 -5
- package/dist/types/components/TagInput/core/Taginput.d.ts +0 -6
- /package/dist/types/components/{MessagePopUp → MessagePopup}/MessagePopupBase.d.ts +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sidebar-DajVSn82.cjs","sources":["../../src/components/Sidebar/SidebarBase.tsx","../../src/components/Sidebar/next/Sidebar.tsx"],"sourcesContent":["import React, { useState, useMemo, useRef, useEffect } from \"react\";\r\nimport { combineClassNames } from \"@/utils/classNames\";\r\nimport {\r\n getDefaultRounding,\r\n getDefaultShadow,\r\n getDefaultTheme,\r\n} from \"@/config/boreal-style-config\";\r\nimport { capitalize } from \"@/utils/capitalize\";\r\nimport { ChevronDownIcon } from \"@/Icons\";\r\nimport { BaseSidebarProps } from \"./Sidebar.types\";\r\n\r\nconst SidebarBase: React.FC<BaseSidebarProps> = ({\r\n links,\r\n classMap,\r\n currentPath,\r\n LinkComponent = \"a\",\r\n theme = getDefaultTheme(),\r\n rounding = getDefaultRounding(),\r\n shadow = getDefaultShadow(),\r\n state = \"\",\r\n showFooter = false,\r\n footerLinks,\r\n footerVersion,\r\n outline = false,\r\n className = \"\",\r\n \"data-testid\": testId = \"sidebar\",\r\n ariaLabel = \"Sidebar navigation\",\r\n ...rest\r\n}) => {\r\n const [openItems, setOpenItems] = useState<Record<string, boolean>>({});\r\n\r\n const idsRef = useRef<Record<string, string>>({});\r\n const seqRef = useRef(0);\r\n const idFor = (label: string) => {\r\n if (!idsRef.current[label]) {\r\n const slug = label\r\n .toLowerCase()\r\n .replace(/\\s+/g, \"-\")\r\n .replace(/[^a-z0-9_-]/g, \"\");\r\n idsRef.current[label] = `${testId}-section-${slug}-${seqRef.current++}`;\r\n }\r\n return idsRef.current[label];\r\n };\r\n\r\n useEffect(() => {\r\n const next: Record<string, boolean> = {};\r\n\r\n const walk = (nodes: typeof links) => {\r\n for (const n of nodes) {\r\n if (n.children?.length) {\r\n const anyChildActive =\r\n n.children.some((c) => c.href && c.href === currentPath) ||\r\n (n.children && walk(n.children));\r\n if (anyChildActive) next[n.label] = true;\r\n }\r\n }\r\n return nodes.some(\r\n (n) =>\r\n (n.href && n.href === currentPath) ||\r\n (!!n.children?.length &&\r\n n.children!.some((c) => c.href === currentPath))\r\n );\r\n };\r\n\r\n walk(links);\r\n setOpenItems((prev) => ({ ...prev, ...next }));\r\n }, [currentPath, links]);\r\n\r\n const toggleItem = (key: string) =>\r\n setOpenItems((prev) => ({ ...prev, [key]: !prev[key] }));\r\n\r\n const submenuRefs = useRef<Record<string, HTMLDivElement | null>>({});\r\n const setSubmenuRef = (key: string, el: HTMLDivElement | null) => {\r\n submenuRefs.current[key] = el;\r\n };\r\n\r\n const containerClasses = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.wrapper,\r\n className,\r\n classMap[theme],\r\n classMap[state],\r\n shadow && classMap[`shadow${capitalize(shadow)}`],\r\n rounding && classMap[`round${capitalize(rounding)}`],\r\n outline && classMap.outline\r\n ),\r\n [classMap, className, theme, state, outline, rounding, shadow]\r\n );\r\n\r\n const renderLinks = (items: typeof links, isChild = false) => (\r\n <ul\r\n className={combineClassNames(\r\n classMap.list,\r\n isChild && classMap.childList\r\n )}\r\n data-testid={`${testId}-list`}\r\n >\r\n {items.map(({ label, href, children, icon }, idx) => {\r\n const key = `${label}-${idx}`;\r\n const isActive = !!href && currentPath === href;\r\n const isOpen = !!openItems[label];\r\n const sectionId = idFor(label);\r\n const buttonId = `${sectionId}-button`;\r\n const panelId = `${sectionId}-panel`;\r\n\r\n return (\r\n <li\r\n key={key}\r\n className={classMap.item}\r\n data-testid={`${testId}-listItem`}\r\n >\r\n {children && children.length > 0 ? (\r\n <>\r\n <button\r\n type=\"button\"\r\n id={buttonId}\r\n className={combineClassNames(\r\n classMap.link,\r\n isOpen && classMap.active\r\n )}\r\n onClick={() => toggleItem(label)}\r\n aria-expanded={isOpen}\r\n aria-controls={panelId}\r\n data-testid={`${testId}-expandItemButton`}\r\n >\r\n {icon && <span className={classMap.icon}>{icon}</span>}\r\n <span data-testid={`${testId}-expandItemLabel`}>{label}</span>\r\n <ChevronDownIcon\r\n className={combineClassNames(\r\n classMap.chevron,\r\n isOpen && classMap.chevronOpen\r\n )}\r\n aria-hidden=\"true\"\r\n focusable={false}\r\n data-testid={`${testId}-expandIcon`}\r\n />\r\n </button>\r\n\r\n <div\r\n id={panelId}\r\n ref={(el) => setSubmenuRef(label, el)}\r\n className={combineClassNames(\r\n classMap.submenu,\r\n isOpen && classMap.submenuOpen\r\n )}\r\n role=\"group\"\r\n aria-labelledby={buttonId}\r\n hidden={!isOpen}\r\n data-testid={`${testId}-subMenu`}\r\n >\r\n {renderLinks(children, true)}\r\n </div>\r\n </>\r\n ) : href ? (\r\n <LinkComponent\r\n href={href}\r\n className={combineClassNames(\r\n classMap.link,\r\n isChild && classMap.childLink,\r\n isActive && classMap.active\r\n )}\r\n aria-current={isActive ? \"page\" : undefined}\r\n data-testid={`${testId}-sidebarLink`}\r\n >\r\n {icon && <span className={classMap.icon}>{icon}</span>}\r\n {label}\r\n </LinkComponent>\r\n ) : (\r\n <span\r\n className={combineClassNames(\r\n classMap.link,\r\n isChild && classMap.childLink\r\n )}\r\n data-testid={`${testId}-sidebarLabel`}\r\n >\r\n {icon && <span className={classMap.icon}>{icon}</span>}\r\n {label}\r\n </span>\r\n )}\r\n </li>\r\n );\r\n })}\r\n </ul>\r\n );\r\n\r\n return (\r\n <nav\r\n className={containerClasses}\r\n aria-label={ariaLabel}\r\n data-testid={testId}\r\n {...rest}\r\n >\r\n <div className={classMap.nav}>{renderLinks(links)}</div>\r\n\r\n {showFooter && (\r\n <footer className={classMap.footer} data-testid={`${testId}-footer`}>\r\n {footerLinks?.map(({ label, href }, i) => (\r\n <LinkComponent\r\n key={`${label}-${i}`}\r\n href={href}\r\n className={classMap.footerLink}\r\n data-testid={`${testId}-footerLink`}\r\n >\r\n {label}\r\n </LinkComponent>\r\n ))}\r\n {footerVersion && (\r\n <span\r\n className={classMap.footerVersion}\r\n data-testid={`${testId}-footerVersion`}\r\n >\r\n {footerVersion}\r\n </span>\r\n )}\r\n </footer>\r\n )}\r\n </nav>\r\n );\r\n};\r\n\r\nSidebarBase.displayName = \"SidebarBase\";\r\nexport default SidebarBase;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport Link from \"next/link\";\r\nimport { usePathname } from \"next/navigation\";\r\nimport SidebarBase from \"../SidebarBase\";\r\nimport styles from \"./Sidebar.module.scss\";\r\nimport { SidebarProps } from \"../Sidebar.types\";\r\n\r\nconst Sidebar: React.FC<SidebarProps> = ({ links, ...rest }) => {\r\n const currentPath = usePathname();\r\n\r\n const safeRest = rest;\r\n\r\n return (\r\n <SidebarBase\r\n links={links}\r\n classMap={styles}\r\n LinkComponent={Link}\r\n key={currentPath}\r\n {...safeRest}\r\n />\r\n );\r\n};\r\nSidebar.displayName = \"Sidebar\";\r\nexport default Sidebar;\r\n"],"names":["getDefaultTheme","getDefaultRounding","getDefaultShadow","footerVersion","useState","useRef","useEffect","_a","useMemo","combineClassNames","capitalize","jsx","icon","jsxs","Fragment","ChevronDownIcon","usePathname","Link"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Sidebar-CBC-Gu5d.cjs","sources":["../../src/components/Sidebar/SidebarBase.tsx","../../src/components/Sidebar/next/Sidebar.tsx"],"sourcesContent":["import React, { useState, useMemo, useRef, useEffect } from \"react\";\r\nimport { combineClassNames } from \"@/utils/classNames\";\r\nimport {\r\n getDefaultRounding,\r\n getDefaultShadow,\r\n getDefaultTheme,\r\n} from \"@/config/boreal-style-config\";\r\nimport { capitalize } from \"@/utils/capitalize\";\r\nimport { ChevronDownIcon } from \"@/Icons\";\r\nimport { BaseSidebarProps } from \"./Sidebar.types\";\r\n\r\nconst SidebarBase: React.FC<BaseSidebarProps> = ({\r\n links,\r\n classMap,\r\n currentPath,\r\n LinkComponent = \"a\",\r\n theme = getDefaultTheme(),\r\n rounding = getDefaultRounding(),\r\n shadow = getDefaultShadow(),\r\n state = \"\",\r\n showFooter = false,\r\n footerLinks,\r\n footerVersion,\r\n outline = false,\r\n className = \"\",\r\n \"data-testid\": testId = \"sidebar\",\r\n ariaLabel = \"Sidebar navigation\",\r\n ...rest\r\n}) => {\r\n const [openItems, setOpenItems] = useState<Record<string, boolean>>({});\r\n\r\n const idsRef = useRef<Record<string, string>>({});\r\n const seqRef = useRef(0);\r\n const idFor = (label: string) => {\r\n if (!idsRef.current[label]) {\r\n const slug = label\r\n .toLowerCase()\r\n .replace(/\\s+/g, \"-\")\r\n .replace(/[^a-z0-9_-]/g, \"\");\r\n idsRef.current[label] = `${testId}-section-${slug}-${seqRef.current++}`;\r\n }\r\n return idsRef.current[label];\r\n };\r\n\r\n useEffect(() => {\r\n const next: Record<string, boolean> = {};\r\n\r\n const walk = (nodes: typeof links) => {\r\n for (const n of nodes) {\r\n if (n.children?.length) {\r\n const anyChildActive =\r\n n.children.some((c) => c.href && c.href === currentPath) ||\r\n (n.children && walk(n.children));\r\n if (anyChildActive) next[n.label] = true;\r\n }\r\n }\r\n return nodes.some(\r\n (n) =>\r\n (n.href && n.href === currentPath) ||\r\n (!!n.children?.length &&\r\n n.children!.some((c) => c.href === currentPath))\r\n );\r\n };\r\n\r\n walk(links);\r\n setOpenItems((prev) => ({ ...prev, ...next }));\r\n }, [currentPath, links]);\r\n\r\n const toggleItem = (key: string) =>\r\n setOpenItems((prev) => ({ ...prev, [key]: !prev[key] }));\r\n\r\n const submenuRefs = useRef<Record<string, HTMLDivElement | null>>({});\r\n const setSubmenuRef = (key: string, el: HTMLDivElement | null) => {\r\n submenuRefs.current[key] = el;\r\n };\r\n\r\n const containerClasses = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.wrapper,\r\n className,\r\n classMap[theme],\r\n classMap[state],\r\n shadow && classMap[`shadow${capitalize(shadow)}`],\r\n rounding && classMap[`round${capitalize(rounding)}`],\r\n outline && classMap.outline\r\n ),\r\n [classMap, className, theme, state, outline, rounding, shadow]\r\n );\r\n\r\n const renderLinks = (items: typeof links, isChild = false) => (\r\n <ul\r\n className={combineClassNames(\r\n classMap.list,\r\n isChild && classMap.childList\r\n )}\r\n data-testid={`${testId}-list`}\r\n >\r\n {items.map(({ label, href, children, icon }, idx) => {\r\n const key = `${label}-${idx}`;\r\n const isActive = !!href && currentPath === href;\r\n const isOpen = !!openItems[label];\r\n const sectionId = idFor(label);\r\n const buttonId = `${sectionId}-button`;\r\n const panelId = `${sectionId}-panel`;\r\n\r\n return (\r\n <li\r\n key={key}\r\n className={classMap.item}\r\n data-testid={`${testId}-listItem`}\r\n >\r\n {children && children.length > 0 ? (\r\n <>\r\n <button\r\n type=\"button\"\r\n id={buttonId}\r\n className={combineClassNames(\r\n classMap.link,\r\n isOpen && classMap.active\r\n )}\r\n onClick={() => toggleItem(label)}\r\n aria-expanded={isOpen}\r\n aria-controls={panelId}\r\n data-testid={`${testId}-expandItemButton`}\r\n >\r\n {icon && <span className={classMap.icon}>{icon}</span>}\r\n <span data-testid={`${testId}-expandItemLabel`}>{label}</span>\r\n <ChevronDownIcon\r\n className={combineClassNames(\r\n classMap.chevron,\r\n isOpen && classMap.chevronOpen\r\n )}\r\n aria-hidden=\"true\"\r\n focusable={false}\r\n data-testid={`${testId}-expandIcon`}\r\n />\r\n </button>\r\n\r\n <div\r\n id={panelId}\r\n ref={(el) => setSubmenuRef(label, el)}\r\n className={combineClassNames(\r\n classMap.submenu,\r\n isOpen && classMap.submenuOpen\r\n )}\r\n role=\"group\"\r\n aria-labelledby={buttonId}\r\n hidden={!isOpen}\r\n data-testid={`${testId}-subMenu`}\r\n >\r\n {renderLinks(children, true)}\r\n </div>\r\n </>\r\n ) : href ? (\r\n <LinkComponent\r\n href={href}\r\n className={combineClassNames(\r\n classMap.link,\r\n isChild && classMap.childLink,\r\n isActive && classMap.active\r\n )}\r\n aria-current={isActive ? \"page\" : undefined}\r\n data-testid={`${testId}-sidebarLink`}\r\n >\r\n {icon && <span className={classMap.icon}>{icon}</span>}\r\n {label}\r\n </LinkComponent>\r\n ) : (\r\n <span\r\n className={combineClassNames(\r\n classMap.link,\r\n isChild && classMap.childLink\r\n )}\r\n data-testid={`${testId}-sidebarLabel`}\r\n >\r\n {icon && <span className={classMap.icon}>{icon}</span>}\r\n {label}\r\n </span>\r\n )}\r\n </li>\r\n );\r\n })}\r\n </ul>\r\n );\r\n\r\n return (\r\n <nav\r\n className={containerClasses}\r\n aria-label={ariaLabel}\r\n data-testid={testId}\r\n {...rest}\r\n >\r\n <div className={classMap.nav}>{renderLinks(links)}</div>\r\n\r\n {showFooter && (\r\n <footer className={classMap.footer} data-testid={`${testId}-footer`}>\r\n {footerLinks?.map(({ label, href }, i) => (\r\n <LinkComponent\r\n key={`${label}-${i}`}\r\n href={href}\r\n className={classMap.footerLink}\r\n data-testid={`${testId}-footerLink`}\r\n >\r\n {label}\r\n </LinkComponent>\r\n ))}\r\n {footerVersion && (\r\n <span\r\n className={classMap.footerVersion}\r\n data-testid={`${testId}-footerVersion`}\r\n >\r\n {footerVersion}\r\n </span>\r\n )}\r\n </footer>\r\n )}\r\n </nav>\r\n );\r\n};\r\n\r\nSidebarBase.displayName = \"SidebarBase\";\r\nexport default SidebarBase;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport Link from \"next/link\";\r\nimport { usePathname } from \"next/navigation\";\r\nimport SidebarBase from \"../SidebarBase\";\r\nimport styles from \"./Sidebar.module.scss\";\r\nimport { SidebarProps } from \"../Sidebar.types\";\r\n\r\nconst Sidebar: React.FC<SidebarProps> = ({ links, ...rest }) => {\r\n const currentPath = usePathname();\r\n\r\n const safeRest = rest;\r\n\r\n return (\r\n <SidebarBase\r\n links={links}\r\n classMap={styles}\r\n LinkComponent={Link}\r\n key={currentPath}\r\n {...safeRest}\r\n />\r\n );\r\n};\r\nSidebar.displayName = \"Sidebar\";\r\nexport default Sidebar;\r\n"],"names":["getDefaultTheme","getDefaultRounding","getDefaultShadow","footerVersion","useState","useRef","useEffect","_a","useMemo","combineClassNames","capitalize","jsx","icon","jsxs","Fragment","ChevronDownIcon","usePathname","Link"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsxs, jsx, Fragment } from "react/jsx-runtime";
|
|
2
|
-
import { L as Link } from "./link-
|
|
3
|
-
import { n as navigationExports } from "./navigation-
|
|
2
|
+
import { L as Link } from "./link-CyxHztrS.js";
|
|
3
|
+
import { n as navigationExports } from "./navigation-C2hD8Jlk.js";
|
|
4
4
|
import { useState, useRef, useEffect, useMemo } from "react";
|
|
5
5
|
import { c as combineClassNames } from "./classNames-AS8QjFq7.js";
|
|
6
6
|
import { a as getDefaultRounding, b as getDefaultShadow, d as getDefaultTheme } from "./boreal-style-config-BILmxkZG.js";
|
|
@@ -297,4 +297,4 @@ Sidebar.displayName = "Sidebar";
|
|
|
297
297
|
export {
|
|
298
298
|
Sidebar as S
|
|
299
299
|
};
|
|
300
|
-
//# sourceMappingURL=Sidebar-
|
|
300
|
+
//# sourceMappingURL=Sidebar-oJzZMxwu.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sidebar-CJ4VrQIW.js","sources":["../../src/components/Sidebar/SidebarBase.tsx","../../src/components/Sidebar/next/Sidebar.tsx"],"sourcesContent":["import React, { useState, useMemo, useRef, useEffect } from \"react\";\r\nimport { combineClassNames } from \"@/utils/classNames\";\r\nimport {\r\n getDefaultRounding,\r\n getDefaultShadow,\r\n getDefaultTheme,\r\n} from \"@/config/boreal-style-config\";\r\nimport { capitalize } from \"@/utils/capitalize\";\r\nimport { ChevronDownIcon } from \"@/Icons\";\r\nimport { BaseSidebarProps } from \"./Sidebar.types\";\r\n\r\nconst SidebarBase: React.FC<BaseSidebarProps> = ({\r\n links,\r\n classMap,\r\n currentPath,\r\n LinkComponent = \"a\",\r\n theme = getDefaultTheme(),\r\n rounding = getDefaultRounding(),\r\n shadow = getDefaultShadow(),\r\n state = \"\",\r\n showFooter = false,\r\n footerLinks,\r\n footerVersion,\r\n outline = false,\r\n className = \"\",\r\n \"data-testid\": testId = \"sidebar\",\r\n ariaLabel = \"Sidebar navigation\",\r\n ...rest\r\n}) => {\r\n const [openItems, setOpenItems] = useState<Record<string, boolean>>({});\r\n\r\n const idsRef = useRef<Record<string, string>>({});\r\n const seqRef = useRef(0);\r\n const idFor = (label: string) => {\r\n if (!idsRef.current[label]) {\r\n const slug = label\r\n .toLowerCase()\r\n .replace(/\\s+/g, \"-\")\r\n .replace(/[^a-z0-9_-]/g, \"\");\r\n idsRef.current[label] = `${testId}-section-${slug}-${seqRef.current++}`;\r\n }\r\n return idsRef.current[label];\r\n };\r\n\r\n useEffect(() => {\r\n const next: Record<string, boolean> = {};\r\n\r\n const walk = (nodes: typeof links) => {\r\n for (const n of nodes) {\r\n if (n.children?.length) {\r\n const anyChildActive =\r\n n.children.some((c) => c.href && c.href === currentPath) ||\r\n (n.children && walk(n.children));\r\n if (anyChildActive) next[n.label] = true;\r\n }\r\n }\r\n return nodes.some(\r\n (n) =>\r\n (n.href && n.href === currentPath) ||\r\n (!!n.children?.length &&\r\n n.children!.some((c) => c.href === currentPath))\r\n );\r\n };\r\n\r\n walk(links);\r\n setOpenItems((prev) => ({ ...prev, ...next }));\r\n }, [currentPath, links]);\r\n\r\n const toggleItem = (key: string) =>\r\n setOpenItems((prev) => ({ ...prev, [key]: !prev[key] }));\r\n\r\n const submenuRefs = useRef<Record<string, HTMLDivElement | null>>({});\r\n const setSubmenuRef = (key: string, el: HTMLDivElement | null) => {\r\n submenuRefs.current[key] = el;\r\n };\r\n\r\n const containerClasses = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.wrapper,\r\n className,\r\n classMap[theme],\r\n classMap[state],\r\n shadow && classMap[`shadow${capitalize(shadow)}`],\r\n rounding && classMap[`round${capitalize(rounding)}`],\r\n outline && classMap.outline\r\n ),\r\n [classMap, className, theme, state, outline, rounding, shadow]\r\n );\r\n\r\n const renderLinks = (items: typeof links, isChild = false) => (\r\n <ul\r\n className={combineClassNames(\r\n classMap.list,\r\n isChild && classMap.childList\r\n )}\r\n data-testid={`${testId}-list`}\r\n >\r\n {items.map(({ label, href, children, icon }, idx) => {\r\n const key = `${label}-${idx}`;\r\n const isActive = !!href && currentPath === href;\r\n const isOpen = !!openItems[label];\r\n const sectionId = idFor(label);\r\n const buttonId = `${sectionId}-button`;\r\n const panelId = `${sectionId}-panel`;\r\n\r\n return (\r\n <li\r\n key={key}\r\n className={classMap.item}\r\n data-testid={`${testId}-listItem`}\r\n >\r\n {children && children.length > 0 ? (\r\n <>\r\n <button\r\n type=\"button\"\r\n id={buttonId}\r\n className={combineClassNames(\r\n classMap.link,\r\n isOpen && classMap.active\r\n )}\r\n onClick={() => toggleItem(label)}\r\n aria-expanded={isOpen}\r\n aria-controls={panelId}\r\n data-testid={`${testId}-expandItemButton`}\r\n >\r\n {icon && <span className={classMap.icon}>{icon}</span>}\r\n <span data-testid={`${testId}-expandItemLabel`}>{label}</span>\r\n <ChevronDownIcon\r\n className={combineClassNames(\r\n classMap.chevron,\r\n isOpen && classMap.chevronOpen\r\n )}\r\n aria-hidden=\"true\"\r\n focusable={false}\r\n data-testid={`${testId}-expandIcon`}\r\n />\r\n </button>\r\n\r\n <div\r\n id={panelId}\r\n ref={(el) => setSubmenuRef(label, el)}\r\n className={combineClassNames(\r\n classMap.submenu,\r\n isOpen && classMap.submenuOpen\r\n )}\r\n role=\"group\"\r\n aria-labelledby={buttonId}\r\n hidden={!isOpen}\r\n data-testid={`${testId}-subMenu`}\r\n >\r\n {renderLinks(children, true)}\r\n </div>\r\n </>\r\n ) : href ? (\r\n <LinkComponent\r\n href={href}\r\n className={combineClassNames(\r\n classMap.link,\r\n isChild && classMap.childLink,\r\n isActive && classMap.active\r\n )}\r\n aria-current={isActive ? \"page\" : undefined}\r\n data-testid={`${testId}-sidebarLink`}\r\n >\r\n {icon && <span className={classMap.icon}>{icon}</span>}\r\n {label}\r\n </LinkComponent>\r\n ) : (\r\n <span\r\n className={combineClassNames(\r\n classMap.link,\r\n isChild && classMap.childLink\r\n )}\r\n data-testid={`${testId}-sidebarLabel`}\r\n >\r\n {icon && <span className={classMap.icon}>{icon}</span>}\r\n {label}\r\n </span>\r\n )}\r\n </li>\r\n );\r\n })}\r\n </ul>\r\n );\r\n\r\n return (\r\n <nav\r\n className={containerClasses}\r\n aria-label={ariaLabel}\r\n data-testid={testId}\r\n {...rest}\r\n >\r\n <div className={classMap.nav}>{renderLinks(links)}</div>\r\n\r\n {showFooter && (\r\n <footer className={classMap.footer} data-testid={`${testId}-footer`}>\r\n {footerLinks?.map(({ label, href }, i) => (\r\n <LinkComponent\r\n key={`${label}-${i}`}\r\n href={href}\r\n className={classMap.footerLink}\r\n data-testid={`${testId}-footerLink`}\r\n >\r\n {label}\r\n </LinkComponent>\r\n ))}\r\n {footerVersion && (\r\n <span\r\n className={classMap.footerVersion}\r\n data-testid={`${testId}-footerVersion`}\r\n >\r\n {footerVersion}\r\n </span>\r\n )}\r\n </footer>\r\n )}\r\n </nav>\r\n );\r\n};\r\n\r\nSidebarBase.displayName = \"SidebarBase\";\r\nexport default SidebarBase;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport Link from \"next/link\";\r\nimport { usePathname } from \"next/navigation\";\r\nimport SidebarBase from \"../SidebarBase\";\r\nimport styles from \"./Sidebar.module.scss\";\r\nimport { SidebarProps } from \"../Sidebar.types\";\r\n\r\nconst Sidebar: React.FC<SidebarProps> = ({ links, ...rest }) => {\r\n const currentPath = usePathname();\r\n\r\n const safeRest = rest;\r\n\r\n return (\r\n <SidebarBase\r\n links={links}\r\n classMap={styles}\r\n LinkComponent={Link}\r\n key={currentPath}\r\n {...safeRest}\r\n />\r\n );\r\n};\r\nSidebar.displayName = \"Sidebar\";\r\nexport default Sidebar;\r\n"],"names":["footerVersion","_a","icon","usePathname"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Sidebar-oJzZMxwu.js","sources":["../../src/components/Sidebar/SidebarBase.tsx","../../src/components/Sidebar/next/Sidebar.tsx"],"sourcesContent":["import React, { useState, useMemo, useRef, useEffect } from \"react\";\r\nimport { combineClassNames } from \"@/utils/classNames\";\r\nimport {\r\n getDefaultRounding,\r\n getDefaultShadow,\r\n getDefaultTheme,\r\n} from \"@/config/boreal-style-config\";\r\nimport { capitalize } from \"@/utils/capitalize\";\r\nimport { ChevronDownIcon } from \"@/Icons\";\r\nimport { BaseSidebarProps } from \"./Sidebar.types\";\r\n\r\nconst SidebarBase: React.FC<BaseSidebarProps> = ({\r\n links,\r\n classMap,\r\n currentPath,\r\n LinkComponent = \"a\",\r\n theme = getDefaultTheme(),\r\n rounding = getDefaultRounding(),\r\n shadow = getDefaultShadow(),\r\n state = \"\",\r\n showFooter = false,\r\n footerLinks,\r\n footerVersion,\r\n outline = false,\r\n className = \"\",\r\n \"data-testid\": testId = \"sidebar\",\r\n ariaLabel = \"Sidebar navigation\",\r\n ...rest\r\n}) => {\r\n const [openItems, setOpenItems] = useState<Record<string, boolean>>({});\r\n\r\n const idsRef = useRef<Record<string, string>>({});\r\n const seqRef = useRef(0);\r\n const idFor = (label: string) => {\r\n if (!idsRef.current[label]) {\r\n const slug = label\r\n .toLowerCase()\r\n .replace(/\\s+/g, \"-\")\r\n .replace(/[^a-z0-9_-]/g, \"\");\r\n idsRef.current[label] = `${testId}-section-${slug}-${seqRef.current++}`;\r\n }\r\n return idsRef.current[label];\r\n };\r\n\r\n useEffect(() => {\r\n const next: Record<string, boolean> = {};\r\n\r\n const walk = (nodes: typeof links) => {\r\n for (const n of nodes) {\r\n if (n.children?.length) {\r\n const anyChildActive =\r\n n.children.some((c) => c.href && c.href === currentPath) ||\r\n (n.children && walk(n.children));\r\n if (anyChildActive) next[n.label] = true;\r\n }\r\n }\r\n return nodes.some(\r\n (n) =>\r\n (n.href && n.href === currentPath) ||\r\n (!!n.children?.length &&\r\n n.children!.some((c) => c.href === currentPath))\r\n );\r\n };\r\n\r\n walk(links);\r\n setOpenItems((prev) => ({ ...prev, ...next }));\r\n }, [currentPath, links]);\r\n\r\n const toggleItem = (key: string) =>\r\n setOpenItems((prev) => ({ ...prev, [key]: !prev[key] }));\r\n\r\n const submenuRefs = useRef<Record<string, HTMLDivElement | null>>({});\r\n const setSubmenuRef = (key: string, el: HTMLDivElement | null) => {\r\n submenuRefs.current[key] = el;\r\n };\r\n\r\n const containerClasses = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.wrapper,\r\n className,\r\n classMap[theme],\r\n classMap[state],\r\n shadow && classMap[`shadow${capitalize(shadow)}`],\r\n rounding && classMap[`round${capitalize(rounding)}`],\r\n outline && classMap.outline\r\n ),\r\n [classMap, className, theme, state, outline, rounding, shadow]\r\n );\r\n\r\n const renderLinks = (items: typeof links, isChild = false) => (\r\n <ul\r\n className={combineClassNames(\r\n classMap.list,\r\n isChild && classMap.childList\r\n )}\r\n data-testid={`${testId}-list`}\r\n >\r\n {items.map(({ label, href, children, icon }, idx) => {\r\n const key = `${label}-${idx}`;\r\n const isActive = !!href && currentPath === href;\r\n const isOpen = !!openItems[label];\r\n const sectionId = idFor(label);\r\n const buttonId = `${sectionId}-button`;\r\n const panelId = `${sectionId}-panel`;\r\n\r\n return (\r\n <li\r\n key={key}\r\n className={classMap.item}\r\n data-testid={`${testId}-listItem`}\r\n >\r\n {children && children.length > 0 ? (\r\n <>\r\n <button\r\n type=\"button\"\r\n id={buttonId}\r\n className={combineClassNames(\r\n classMap.link,\r\n isOpen && classMap.active\r\n )}\r\n onClick={() => toggleItem(label)}\r\n aria-expanded={isOpen}\r\n aria-controls={panelId}\r\n data-testid={`${testId}-expandItemButton`}\r\n >\r\n {icon && <span className={classMap.icon}>{icon}</span>}\r\n <span data-testid={`${testId}-expandItemLabel`}>{label}</span>\r\n <ChevronDownIcon\r\n className={combineClassNames(\r\n classMap.chevron,\r\n isOpen && classMap.chevronOpen\r\n )}\r\n aria-hidden=\"true\"\r\n focusable={false}\r\n data-testid={`${testId}-expandIcon`}\r\n />\r\n </button>\r\n\r\n <div\r\n id={panelId}\r\n ref={(el) => setSubmenuRef(label, el)}\r\n className={combineClassNames(\r\n classMap.submenu,\r\n isOpen && classMap.submenuOpen\r\n )}\r\n role=\"group\"\r\n aria-labelledby={buttonId}\r\n hidden={!isOpen}\r\n data-testid={`${testId}-subMenu`}\r\n >\r\n {renderLinks(children, true)}\r\n </div>\r\n </>\r\n ) : href ? (\r\n <LinkComponent\r\n href={href}\r\n className={combineClassNames(\r\n classMap.link,\r\n isChild && classMap.childLink,\r\n isActive && classMap.active\r\n )}\r\n aria-current={isActive ? \"page\" : undefined}\r\n data-testid={`${testId}-sidebarLink`}\r\n >\r\n {icon && <span className={classMap.icon}>{icon}</span>}\r\n {label}\r\n </LinkComponent>\r\n ) : (\r\n <span\r\n className={combineClassNames(\r\n classMap.link,\r\n isChild && classMap.childLink\r\n )}\r\n data-testid={`${testId}-sidebarLabel`}\r\n >\r\n {icon && <span className={classMap.icon}>{icon}</span>}\r\n {label}\r\n </span>\r\n )}\r\n </li>\r\n );\r\n })}\r\n </ul>\r\n );\r\n\r\n return (\r\n <nav\r\n className={containerClasses}\r\n aria-label={ariaLabel}\r\n data-testid={testId}\r\n {...rest}\r\n >\r\n <div className={classMap.nav}>{renderLinks(links)}</div>\r\n\r\n {showFooter && (\r\n <footer className={classMap.footer} data-testid={`${testId}-footer`}>\r\n {footerLinks?.map(({ label, href }, i) => (\r\n <LinkComponent\r\n key={`${label}-${i}`}\r\n href={href}\r\n className={classMap.footerLink}\r\n data-testid={`${testId}-footerLink`}\r\n >\r\n {label}\r\n </LinkComponent>\r\n ))}\r\n {footerVersion && (\r\n <span\r\n className={classMap.footerVersion}\r\n data-testid={`${testId}-footerVersion`}\r\n >\r\n {footerVersion}\r\n </span>\r\n )}\r\n </footer>\r\n )}\r\n </nav>\r\n );\r\n};\r\n\r\nSidebarBase.displayName = \"SidebarBase\";\r\nexport default SidebarBase;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport Link from \"next/link\";\r\nimport { usePathname } from \"next/navigation\";\r\nimport SidebarBase from \"../SidebarBase\";\r\nimport styles from \"./Sidebar.module.scss\";\r\nimport { SidebarProps } from \"../Sidebar.types\";\r\n\r\nconst Sidebar: React.FC<SidebarProps> = ({ links, ...rest }) => {\r\n const currentPath = usePathname();\r\n\r\n const safeRest = rest;\r\n\r\n return (\r\n <SidebarBase\r\n links={links}\r\n classMap={styles}\r\n LinkComponent={Link}\r\n key={currentPath}\r\n {...safeRest}\r\n />\r\n );\r\n};\r\nSidebar.displayName = \"Sidebar\";\r\nexport default Sidebar;\r\n"],"names":["footerVersion","_a","icon","usePathname"],"mappings":"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"}
|
package/dist/next/Sidebar.cjs.js
CHANGED
package/dist/next/Sidebar.js
CHANGED
|
@@ -2,7 +2,7 @@ import { jsxs, jsx } from "react/jsx-runtime";
|
|
|
2
2
|
import { c as combineClassNames } from "./classNames-AS8QjFq7.js";
|
|
3
3
|
import { a as getDefaultRounding, b as getDefaultShadow, c as getDefaultSize, d as getDefaultTheme } from "./boreal-style-config-BILmxkZG.js";
|
|
4
4
|
/* empty css */
|
|
5
|
-
import { I as IconButton } from "./IconButton-
|
|
5
|
+
import { I as IconButton } from "./IconButton-Ct3YtlG9.js";
|
|
6
6
|
const noScroll = "_noScroll_l3ckd_108";
|
|
7
7
|
const errorMessage = "_errorMessage_l3ckd_109";
|
|
8
8
|
const loadingContainer = "_loadingContainer_l3ckd_110";
|
|
@@ -183,4 +183,4 @@ Stepper.displayName = "Stepper";
|
|
|
183
183
|
export {
|
|
184
184
|
Stepper as S
|
|
185
185
|
};
|
|
186
|
-
//# sourceMappingURL=Stepper-
|
|
186
|
+
//# sourceMappingURL=Stepper-DBwramgz.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Stepper-
|
|
1
|
+
{"version":3,"file":"Stepper-DBwramgz.js","sources":["../../src/components/Stepper/StepperBase.tsx","../../src/components/Stepper/next/Stepper.tsx"],"sourcesContent":["import React from \"react\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\r\nimport {\r\n getDefaultRounding,\r\n getDefaultShadow,\r\n getDefaultSize,\r\n getDefaultTheme,\r\n} from \"../../config/boreal-style-config\";\r\nimport { StepperBaseProps } from \"./Stepper.types\";\r\n\r\nconst StepperBase: React.FC<StepperBaseProps> = ({\r\n steps,\r\n activeStep,\r\n onStepClick,\r\n disableBackNavigation = false,\r\n orientation = \"horizontal\",\r\n theme = getDefaultTheme(),\r\n state = \"\",\r\n size = getDefaultSize(),\r\n shadow = getDefaultShadow(),\r\n rounding = getDefaultRounding(),\r\n \"data-testid\": testId = \"stepper\",\r\n classMap,\r\n className,\r\n IconButtonComponent,\r\n}) => {\r\n const stepCount = steps.length;\r\n const groupLabelId = `${testId}-label`;\r\n\r\n return (\r\n <div\r\n className={combineClassNames(\r\n classMap.stepper,\r\n classMap[orientation],\r\n classMap[theme],\r\n classMap[state],\r\n classMap[size],\r\n className\r\n )}\r\n role=\"list\"\r\n aria-labelledby={groupLabelId}\r\n data-testid={testId}\r\n >\r\n <span id={groupLabelId} className=\"sr_only\">\r\n Progress Stepper\r\n </span>\r\n\r\n {steps.map((step, index) => {\r\n const Icon = step.icon || (() => <span>{index + 1}</span>);\r\n const isCompleted = index < activeStep;\r\n const isActive = index === activeStep;\r\n const isBefore = index < activeStep;\r\n const isDisabled = disableBackNavigation && isBefore;\r\n const canFocus = !!onStepClick && !isDisabled;\r\n const stepId = `${testId}-step-${index}`;\r\n const label = `Step ${index + 1} of ${stepCount}: ${step.label}`;\r\n\r\n return (\r\n <div\r\n key={index}\r\n role=\"listitem\"\r\n className={combineClassNames(\r\n classMap.step,\r\n isActive ? classMap.active : \"\",\r\n isCompleted ? classMap.completed : \"\",\r\n onStepClick ? classMap.clickable : \"\"\r\n )}\r\n data-testid={stepId}\r\n >\r\n <IconButtonComponent\r\n icon={Icon}\r\n theme={theme}\r\n state={state}\r\n className={combineClassNames(\r\n classMap.stepButton,\r\n isActive ? classMap.active : \"\",\r\n isCompleted ? classMap.completed : \"\"\r\n )}\r\n size={size}\r\n shadow={shadow}\r\n rounding={rounding}\r\n disabled={isDisabled}\r\n outline={!isActive}\r\n aria-label={label}\r\n aria-current={isActive ? \"step\" : undefined}\r\n aria-disabled={isDisabled}\r\n data-testid={`${stepId}-icon`}\r\n tabIndex={canFocus ? 0 : -1}\r\n onClick={() => onStepClick?.(index)}\r\n onKeyDown={(e: React.KeyboardEvent) => {\r\n if ((e.key === \"Enter\" || e.key === \" \") && !isDisabled) {\r\n e.preventDefault();\r\n onStepClick?.(index);\r\n }\r\n }}\r\n />\r\n\r\n <span\r\n className={classMap.stepLabel}\r\n data-testid={`${stepId}-label`}\r\n aria-hidden=\"true\"\r\n >\r\n {step.label}\r\n </span>\r\n </div>\r\n );\r\n })}\r\n </div>\r\n );\r\n};\r\n\r\nStepperBase.displayName = \"StepperBase\";\r\nexport default StepperBase;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport styles from \"./Stepper.module.scss\";\r\nimport StepperBase from \"../StepperBase\";\r\nimport { StepperProps } from \"../Stepper.types\";\r\nimport { IconButton } from \"@/index.next\";\r\n\r\nconst Stepper: React.FC<StepperProps> = (props) => (\r\n <StepperBase {...props} classMap={styles} IconButtonComponent={IconButton} />\r\n);\r\nStepper.displayName = \"Stepper\";\r\nexport default Stepper;\r\n"],"names":["step","label"],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ const require$$2 = require("react/jsx-runtime");
|
|
|
3
3
|
const classNames = require("./classNames-BcWMx052.cjs");
|
|
4
4
|
const borealStyleConfig = require("./boreal-style-config-Rr5d5Qts.cjs");
|
|
5
5
|
;/* empty css */
|
|
6
|
-
const IconButton = require("./IconButton-
|
|
6
|
+
const IconButton = require("./IconButton-aF7cTy19.cjs");
|
|
7
7
|
const noScroll = "_noScroll_l3ckd_108";
|
|
8
8
|
const errorMessage = "_errorMessage_l3ckd_109";
|
|
9
9
|
const loadingContainer = "_loadingContainer_l3ckd_110";
|
|
@@ -182,4 +182,4 @@ StepperBase.displayName = "StepperBase";
|
|
|
182
182
|
const Stepper = (props) => /* @__PURE__ */ require$$2.jsx(StepperBase, { ...props, classMap: styles, IconButtonComponent: IconButton.IconButton });
|
|
183
183
|
Stepper.displayName = "Stepper";
|
|
184
184
|
exports.Stepper = Stepper;
|
|
185
|
-
//# sourceMappingURL=Stepper-
|
|
185
|
+
//# sourceMappingURL=Stepper-YQqjSOG0.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Stepper-
|
|
1
|
+
{"version":3,"file":"Stepper-YQqjSOG0.cjs","sources":["../../src/components/Stepper/StepperBase.tsx","../../src/components/Stepper/next/Stepper.tsx"],"sourcesContent":["import React from \"react\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\r\nimport {\r\n getDefaultRounding,\r\n getDefaultShadow,\r\n getDefaultSize,\r\n getDefaultTheme,\r\n} from \"../../config/boreal-style-config\";\r\nimport { StepperBaseProps } from \"./Stepper.types\";\r\n\r\nconst StepperBase: React.FC<StepperBaseProps> = ({\r\n steps,\r\n activeStep,\r\n onStepClick,\r\n disableBackNavigation = false,\r\n orientation = \"horizontal\",\r\n theme = getDefaultTheme(),\r\n state = \"\",\r\n size = getDefaultSize(),\r\n shadow = getDefaultShadow(),\r\n rounding = getDefaultRounding(),\r\n \"data-testid\": testId = \"stepper\",\r\n classMap,\r\n className,\r\n IconButtonComponent,\r\n}) => {\r\n const stepCount = steps.length;\r\n const groupLabelId = `${testId}-label`;\r\n\r\n return (\r\n <div\r\n className={combineClassNames(\r\n classMap.stepper,\r\n classMap[orientation],\r\n classMap[theme],\r\n classMap[state],\r\n classMap[size],\r\n className\r\n )}\r\n role=\"list\"\r\n aria-labelledby={groupLabelId}\r\n data-testid={testId}\r\n >\r\n <span id={groupLabelId} className=\"sr_only\">\r\n Progress Stepper\r\n </span>\r\n\r\n {steps.map((step, index) => {\r\n const Icon = step.icon || (() => <span>{index + 1}</span>);\r\n const isCompleted = index < activeStep;\r\n const isActive = index === activeStep;\r\n const isBefore = index < activeStep;\r\n const isDisabled = disableBackNavigation && isBefore;\r\n const canFocus = !!onStepClick && !isDisabled;\r\n const stepId = `${testId}-step-${index}`;\r\n const label = `Step ${index + 1} of ${stepCount}: ${step.label}`;\r\n\r\n return (\r\n <div\r\n key={index}\r\n role=\"listitem\"\r\n className={combineClassNames(\r\n classMap.step,\r\n isActive ? classMap.active : \"\",\r\n isCompleted ? classMap.completed : \"\",\r\n onStepClick ? classMap.clickable : \"\"\r\n )}\r\n data-testid={stepId}\r\n >\r\n <IconButtonComponent\r\n icon={Icon}\r\n theme={theme}\r\n state={state}\r\n className={combineClassNames(\r\n classMap.stepButton,\r\n isActive ? classMap.active : \"\",\r\n isCompleted ? classMap.completed : \"\"\r\n )}\r\n size={size}\r\n shadow={shadow}\r\n rounding={rounding}\r\n disabled={isDisabled}\r\n outline={!isActive}\r\n aria-label={label}\r\n aria-current={isActive ? \"step\" : undefined}\r\n aria-disabled={isDisabled}\r\n data-testid={`${stepId}-icon`}\r\n tabIndex={canFocus ? 0 : -1}\r\n onClick={() => onStepClick?.(index)}\r\n onKeyDown={(e: React.KeyboardEvent) => {\r\n if ((e.key === \"Enter\" || e.key === \" \") && !isDisabled) {\r\n e.preventDefault();\r\n onStepClick?.(index);\r\n }\r\n }}\r\n />\r\n\r\n <span\r\n className={classMap.stepLabel}\r\n data-testid={`${stepId}-label`}\r\n aria-hidden=\"true\"\r\n >\r\n {step.label}\r\n </span>\r\n </div>\r\n );\r\n })}\r\n </div>\r\n );\r\n};\r\n\r\nStepperBase.displayName = \"StepperBase\";\r\nexport default StepperBase;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport styles from \"./Stepper.module.scss\";\r\nimport StepperBase from \"../StepperBase\";\r\nimport { StepperProps } from \"../Stepper.types\";\r\nimport { IconButton } from \"@/index.next\";\r\n\r\nconst Stepper: React.FC<StepperProps> = (props) => (\r\n <StepperBase {...props} classMap={styles} IconButtonComponent={IconButton} />\r\n);\r\nStepper.displayName = \"Stepper\";\r\nexport default Stepper;\r\n"],"names":["getDefaultTheme","getDefaultSize","getDefaultShadow","getDefaultRounding","jsxs","combineClassNames","jsx","step","label","IconButton"],"mappings":"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"}
|
package/dist/next/Stepper.cjs.js
CHANGED
package/dist/next/Stepper.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
const require$$2 = require("react/jsx-runtime");
|
|
3
3
|
;/* empty css */
|
|
4
|
-
const IconButton = require("./IconButton-
|
|
5
|
-
const TextInput = require("./TextInput-
|
|
4
|
+
const IconButton = require("./IconButton-aF7cTy19.cjs");
|
|
5
|
+
const TextInput = require("./TextInput-C3cLfd6E.cjs");
|
|
6
6
|
const React = require("react");
|
|
7
7
|
const CloseIcon = require("./CloseIcon-7hy4qJ9o.cjs");
|
|
8
8
|
const classNames = require("./classNames-BcWMx052.cjs");
|
|
@@ -360,4 +360,4 @@ const TagInput = (props) => {
|
|
|
360
360
|
};
|
|
361
361
|
TagInput.displayName = "TagInput";
|
|
362
362
|
exports.TagInput = TagInput;
|
|
363
|
-
//# sourceMappingURL=TagInput-
|
|
363
|
+
//# sourceMappingURL=TagInput-B38cJqaG.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TagInput-B38cJqaG.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 useRef,\r\n} from \"react\";\r\nimport { TagInputBaseProps } 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<TagInputBaseProps> = ({\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. Use arrow keys to navigate suggestions; Enter to select; Escape to close. Backspace removes the last tag when the field is empty.\",\r\n classMap,\r\n IconButton,\r\n TextInput,\r\n}) => {\r\n const uid = useId();\r\n const inputId = `${testId}-input-${uid}`;\r\n const descId = `${testId}-desc-${uid}`;\r\n const labelId = `${testId}-label-${uid}`;\r\n const listboxId = `${testId}-listbox-${uid}`;\r\n const statusId = `${testId}-status-${uid}`;\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 const [suggestions, setSuggestions] = useState<string[]>([]);\r\n const [open, setOpen] = useState(false);\r\n const [activeIndex, setActiveIndex] = useState<number>(-1);\r\n\r\n const debounceRef = useRef<ReturnType<typeof setTimeout> | null>(null);\r\n\r\n const hasTag = (val: string) =>\r\n tagList.some((t) => t.toLowerCase() === val.toLowerCase());\r\n\r\n useEffect(() => {\r\n if (!fetchSuggestions) {\r\n setSuggestions([]);\r\n setOpen(false);\r\n return;\r\n }\r\n if (debounceRef.current) clearTimeout(debounceRef.current);\r\n\r\n const query = inputValue.trim();\r\n if (!query) {\r\n setSuggestions([]);\r\n setOpen(false);\r\n setActiveIndex(-1);\r\n return;\r\n }\r\n\r\n debounceRef.current = setTimeout(async () => {\r\n try {\r\n const result = await fetchSuggestions(query);\r\n setSuggestions(result || []);\r\n setOpen((result?.length ?? 0) > 0);\r\n setActiveIndex((result?.length ?? 0) > 0 ? 0 : -1);\r\n } catch {\r\n setSuggestions([]);\r\n setOpen(false);\r\n setActiveIndex(-1);\r\n }\r\n }, debounceMs);\r\n\r\n return () => {\r\n if (debounceRef.current) clearTimeout(debounceRef.current);\r\n };\r\n }, [inputValue, fetchSuggestions, debounceMs]);\r\n\r\n const addTag = (raw: string) => {\r\n const newTag = raw.trim();\r\n if (!newTag || hasTag(newTag)) return false;\r\n const updated = [...tagList, newTag];\r\n setTagList(updated);\r\n onChange?.(updated);\r\n setLastAction(`Added tag ${newTag}.`);\r\n return true;\r\n };\r\n\r\n const removeTag = (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 handleKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\r\n const { key } = event;\r\n\r\n if (open && suggestions.length > 0) {\r\n if (key === \"ArrowDown\") {\r\n event.preventDefault();\r\n setActiveIndex((i) => (i + 1) % suggestions.length);\r\n return;\r\n }\r\n if (key === \"ArrowUp\") {\r\n event.preventDefault();\r\n setActiveIndex(\r\n (i) => (i - 1 + suggestions.length) % suggestions.length,\r\n );\r\n return;\r\n }\r\n if (key === \"Enter\") {\r\n event.preventDefault();\r\n const choice = suggestions[activeIndex];\r\n if (choice && addTag(choice)) {\r\n setInputValue(\"\");\r\n }\r\n setSuggestions([]);\r\n setOpen(false);\r\n setActiveIndex(-1);\r\n return;\r\n }\r\n if (key === \"Escape\") {\r\n event.preventDefault();\r\n setSuggestions([]);\r\n setOpen(false);\r\n setActiveIndex(-1);\r\n return;\r\n }\r\n }\r\n\r\n if (key === \"Enter\" || key === \",\") {\r\n event.preventDefault();\r\n if (addTag(inputValue)) setInputValue(\"\");\r\n setSuggestions([]);\r\n setOpen(false);\r\n setActiveIndex(-1);\r\n return;\r\n }\r\n\r\n if (key === \"Backspace\" && inputValue === \"\" && tagList.length > 0) {\r\n const last = tagList[tagList.length - 1];\r\n removeTag(last);\r\n }\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, shadow, rounding],\r\n );\r\n\r\n const handleSuggestionClick = (suggestion: string) => {\r\n if (addTag(suggestion)) setInputValue(\"\");\r\n setSuggestions([]);\r\n setOpen(false);\r\n setActiveIndex(-1);\r\n };\r\n\r\n const activeOptionId =\r\n open && activeIndex >= 0 ? `${listboxId}-opt-${activeIndex}` : undefined;\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} ${statusId}`}\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 className={classMap.tagContainer} data-testid={`${testId}-list`}>\r\n {tagList.map((tag, index) => (\r\n <li\r\n key={`${tag}-${index}`}\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={() => removeTag(tag)}\r\n data-testid={`${testId}-remove-${index}`}\r\n icon={CloseIcon}\r\n size=\"small\"\r\n theme=\"clear\"\r\n shadow=\"none\"\r\n iconClassName={classMap.removeButtonIcon}\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={handleKeyDown}\r\n autoComplete=\"off\"\r\n role=\"combobox\"\r\n aria-autocomplete=\"list\"\r\n aria-expanded={open}\r\n aria-controls={listboxId}\r\n aria-activedescendant={activeOptionId}\r\n aria-label=\"Add new tag\"\r\n aria-describedby={`${descId} ${statusId}`}\r\n data-testid={`${testId}-input`}\r\n />\r\n </div>\r\n\r\n {open && suggestions.length > 0 && (\r\n <ul\r\n className={classMap.suggestionList}\r\n role=\"listbox\"\r\n id={listboxId}\r\n aria-label=\"Tag suggestions\"\r\n data-testid={`${testId}-suggestions`}\r\n >\r\n {suggestions.map((suggestion, index) => (\r\n <li\r\n key={`${suggestion}-${index}`}\r\n id={`${listboxId}-opt-${index}`}\r\n className={combineClassNames(\r\n classMap.suggestionItem,\r\n index === activeIndex && (classMap.active || \"\"),\r\n )}\r\n role=\"option\"\r\n aria-selected={index === activeIndex}\r\n onMouseDown={(e) => e.preventDefault()}\r\n onClick={() => handleSuggestionClick(suggestion)}\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 id={statusId} aria-live=\"polite\" className=\"sr_only\">\r\n {open && suggestions.length > 0\r\n ? `${suggestions.length} suggestion${suggestions.length === 1 ? \"\" : \"s\"} available.`\r\n : \"\"}\r\n {lastAction}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nTagInputBase.displayName = \"TagInputBase\";\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\nTagInput.displayName = \"TagInput\";\r\nexport default TagInput;\r\n"],"names":["getDefaultTheme","getDefaultSize","getDefaultRounding","getDefaultShadow","IconButton","TextInput","useId","useState","useRef","useEffect","tag","useMemo","combineClassNames","capitalize","jsxs","jsx","CloseIcon"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
2
|
/* empty css */
|
|
3
|
-
import { I as IconButton } from "./IconButton-
|
|
4
|
-
import { T as TextInput } from "./TextInput-
|
|
3
|
+
import { I as IconButton } from "./IconButton-Ct3YtlG9.js";
|
|
4
|
+
import { T as TextInput } from "./TextInput-D68lumzk.js";
|
|
5
5
|
import { useId, useState, useRef, useEffect, useMemo } from "react";
|
|
6
6
|
import { C as CloseIcon } from "./CloseIcon-C3eQm4EK.js";
|
|
7
7
|
import { c as combineClassNames } from "./classNames-AS8QjFq7.js";
|
|
@@ -361,4 +361,4 @@ TagInput.displayName = "TagInput";
|
|
|
361
361
|
export {
|
|
362
362
|
TagInput as T
|
|
363
363
|
};
|
|
364
|
-
//# sourceMappingURL=TagInput-
|
|
364
|
+
//# sourceMappingURL=TagInput-BDbDZ1W8.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TagInput-BDbDZ1W8.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 useRef,\r\n} from \"react\";\r\nimport { TagInputBaseProps } 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<TagInputBaseProps> = ({\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. Use arrow keys to navigate suggestions; Enter to select; Escape to close. Backspace removes the last tag when the field is empty.\",\r\n classMap,\r\n IconButton,\r\n TextInput,\r\n}) => {\r\n const uid = useId();\r\n const inputId = `${testId}-input-${uid}`;\r\n const descId = `${testId}-desc-${uid}`;\r\n const labelId = `${testId}-label-${uid}`;\r\n const listboxId = `${testId}-listbox-${uid}`;\r\n const statusId = `${testId}-status-${uid}`;\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 const [suggestions, setSuggestions] = useState<string[]>([]);\r\n const [open, setOpen] = useState(false);\r\n const [activeIndex, setActiveIndex] = useState<number>(-1);\r\n\r\n const debounceRef = useRef<ReturnType<typeof setTimeout> | null>(null);\r\n\r\n const hasTag = (val: string) =>\r\n tagList.some((t) => t.toLowerCase() === val.toLowerCase());\r\n\r\n useEffect(() => {\r\n if (!fetchSuggestions) {\r\n setSuggestions([]);\r\n setOpen(false);\r\n return;\r\n }\r\n if (debounceRef.current) clearTimeout(debounceRef.current);\r\n\r\n const query = inputValue.trim();\r\n if (!query) {\r\n setSuggestions([]);\r\n setOpen(false);\r\n setActiveIndex(-1);\r\n return;\r\n }\r\n\r\n debounceRef.current = setTimeout(async () => {\r\n try {\r\n const result = await fetchSuggestions(query);\r\n setSuggestions(result || []);\r\n setOpen((result?.length ?? 0) > 0);\r\n setActiveIndex((result?.length ?? 0) > 0 ? 0 : -1);\r\n } catch {\r\n setSuggestions([]);\r\n setOpen(false);\r\n setActiveIndex(-1);\r\n }\r\n }, debounceMs);\r\n\r\n return () => {\r\n if (debounceRef.current) clearTimeout(debounceRef.current);\r\n };\r\n }, [inputValue, fetchSuggestions, debounceMs]);\r\n\r\n const addTag = (raw: string) => {\r\n const newTag = raw.trim();\r\n if (!newTag || hasTag(newTag)) return false;\r\n const updated = [...tagList, newTag];\r\n setTagList(updated);\r\n onChange?.(updated);\r\n setLastAction(`Added tag ${newTag}.`);\r\n return true;\r\n };\r\n\r\n const removeTag = (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 handleKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\r\n const { key } = event;\r\n\r\n if (open && suggestions.length > 0) {\r\n if (key === \"ArrowDown\") {\r\n event.preventDefault();\r\n setActiveIndex((i) => (i + 1) % suggestions.length);\r\n return;\r\n }\r\n if (key === \"ArrowUp\") {\r\n event.preventDefault();\r\n setActiveIndex(\r\n (i) => (i - 1 + suggestions.length) % suggestions.length,\r\n );\r\n return;\r\n }\r\n if (key === \"Enter\") {\r\n event.preventDefault();\r\n const choice = suggestions[activeIndex];\r\n if (choice && addTag(choice)) {\r\n setInputValue(\"\");\r\n }\r\n setSuggestions([]);\r\n setOpen(false);\r\n setActiveIndex(-1);\r\n return;\r\n }\r\n if (key === \"Escape\") {\r\n event.preventDefault();\r\n setSuggestions([]);\r\n setOpen(false);\r\n setActiveIndex(-1);\r\n return;\r\n }\r\n }\r\n\r\n if (key === \"Enter\" || key === \",\") {\r\n event.preventDefault();\r\n if (addTag(inputValue)) setInputValue(\"\");\r\n setSuggestions([]);\r\n setOpen(false);\r\n setActiveIndex(-1);\r\n return;\r\n }\r\n\r\n if (key === \"Backspace\" && inputValue === \"\" && tagList.length > 0) {\r\n const last = tagList[tagList.length - 1];\r\n removeTag(last);\r\n }\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, shadow, rounding],\r\n );\r\n\r\n const handleSuggestionClick = (suggestion: string) => {\r\n if (addTag(suggestion)) setInputValue(\"\");\r\n setSuggestions([]);\r\n setOpen(false);\r\n setActiveIndex(-1);\r\n };\r\n\r\n const activeOptionId =\r\n open && activeIndex >= 0 ? `${listboxId}-opt-${activeIndex}` : undefined;\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} ${statusId}`}\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 className={classMap.tagContainer} data-testid={`${testId}-list`}>\r\n {tagList.map((tag, index) => (\r\n <li\r\n key={`${tag}-${index}`}\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={() => removeTag(tag)}\r\n data-testid={`${testId}-remove-${index}`}\r\n icon={CloseIcon}\r\n size=\"small\"\r\n theme=\"clear\"\r\n shadow=\"none\"\r\n iconClassName={classMap.removeButtonIcon}\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={handleKeyDown}\r\n autoComplete=\"off\"\r\n role=\"combobox\"\r\n aria-autocomplete=\"list\"\r\n aria-expanded={open}\r\n aria-controls={listboxId}\r\n aria-activedescendant={activeOptionId}\r\n aria-label=\"Add new tag\"\r\n aria-describedby={`${descId} ${statusId}`}\r\n data-testid={`${testId}-input`}\r\n />\r\n </div>\r\n\r\n {open && suggestions.length > 0 && (\r\n <ul\r\n className={classMap.suggestionList}\r\n role=\"listbox\"\r\n id={listboxId}\r\n aria-label=\"Tag suggestions\"\r\n data-testid={`${testId}-suggestions`}\r\n >\r\n {suggestions.map((suggestion, index) => (\r\n <li\r\n key={`${suggestion}-${index}`}\r\n id={`${listboxId}-opt-${index}`}\r\n className={combineClassNames(\r\n classMap.suggestionItem,\r\n index === activeIndex && (classMap.active || \"\"),\r\n )}\r\n role=\"option\"\r\n aria-selected={index === activeIndex}\r\n onMouseDown={(e) => e.preventDefault()}\r\n onClick={() => handleSuggestionClick(suggestion)}\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 id={statusId} aria-live=\"polite\" className=\"sr_only\">\r\n {open && suggestions.length > 0\r\n ? `${suggestions.length} suggestion${suggestions.length === 1 ? \"\" : \"s\"} available.`\r\n : \"\"}\r\n {lastAction}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nTagInputBase.displayName = \"TagInputBase\";\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\nTagInput.displayName = \"TagInput\";\r\nexport default TagInput;\r\n"],"names":["IconButton","TextInput","tag"],"mappings":"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"}
|
package/dist/next/TagInput.js
CHANGED
|
@@ -5,7 +5,7 @@ const classNames = require("./classNames-BcWMx052.cjs");
|
|
|
5
5
|
const capitalize = require("./capitalize-DoV-nOmN.cjs");
|
|
6
6
|
const borealStyleConfig = require("./boreal-style-config-Rr5d5Qts.cjs");
|
|
7
7
|
;/* empty css */
|
|
8
|
-
const IconButton = require("./IconButton-
|
|
8
|
+
const IconButton = require("./IconButton-aF7cTy19.cjs");
|
|
9
9
|
const EyeIcon = (props) => /* @__PURE__ */ require$$2.jsxs(
|
|
10
10
|
"svg",
|
|
11
11
|
{
|
|
@@ -275,4 +275,4 @@ const TextInput = React.forwardRef((props, ref) => {
|
|
|
275
275
|
});
|
|
276
276
|
TextInput.displayName = "TextInput";
|
|
277
277
|
exports.TextInput = TextInput;
|
|
278
|
-
//# sourceMappingURL=TextInput-
|
|
278
|
+
//# sourceMappingURL=TextInput-C3cLfd6E.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextInput-C1TUvbWx.cjs","sources":["../../src/Icons/EyeIcon.tsx","../../src/Icons/EyeSlashIcon.tsx","../../src/components/TextInput/TextInputBase.tsx","../../src/components/TextInput/next/TextInput.tsx"],"sourcesContent":["const EyeIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\r\n <svg\r\n width=\"24px\"\r\n height=\"24px\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n color=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n {...props}\r\n >\r\n <path\r\n d=\"M3 13C6.6 5 17.4 5 21 13\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n <path\r\n d=\"M12 17C10.3431 17 9 15.6569 9 14C9 12.3431 10.3431 11 12 11C13.6569 11 15 12.3431 15 14C15 15.6569 13.6569 17 12 17Z\"\r\n fill=\"currentColor\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n </svg>\r\n);\r\n\r\nexport default EyeIcon;\r\n","const EyeSlashIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\r\n <svg\r\n width=\"24px\"\r\n height=\"24px\"\r\n viewBox=\"0 0 24 24\"\r\n strokeWidth=\"1.5\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n color=\"currentColor\"\r\n {...props}\r\n >\r\n <path\r\n d=\"M19.5 16L17.0248 12.6038\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n <path\r\n d=\"M12 17.5V14\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n <path\r\n d=\"M4.5 16L6.96895 12.6124\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n <path\r\n d=\"M3 8C6.6 16 17.4 16 21 8\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n </svg>\r\n);\r\n\r\nexport default EyeSlashIcon;\r\n","import {\r\n forwardRef,\r\n useState,\r\n useId,\r\n InputHTMLAttributes,\r\n useMemo,\r\n} from \"react\";\r\nimport { EyeIcon, EyeSlashIcon } from \"../../Icons\";\r\nimport { TextInputBaseProps } from \"./TextInput.types\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\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\nconst TextInputBase = forwardRef<HTMLInputElement, TextInputBaseProps>(\r\n (\r\n {\r\n icon: Icon,\r\n placeholder = \"Enter text\",\r\n password = false,\r\n readOnly = false,\r\n ariaLabel,\r\n ariaDescription,\r\n theme = getDefaultTheme(),\r\n rounding = getDefaultRounding(),\r\n shadow = getDefaultShadow(),\r\n state = \"\",\r\n disabled = false,\r\n autocomplete = false,\r\n \"data-testid\": testId = \"text-input\",\r\n classMap,\r\n outline = false,\r\n IconButton,\r\n className = \"\",\r\n ...rest\r\n },\r\n ref\r\n ) => {\r\n const [showPassword, setShowPassword] = useState(false);\r\n\r\n const autoId = useId();\r\n const {\r\n id: idProp,\r\n required,\r\n autoComplete: autoCompleteProp,\r\n ...restInput\r\n } = rest as InputHTMLAttributes<HTMLInputElement>;\r\n const inputId = idProp || autoId;\r\n\r\n const descId = ariaDescription ? `${inputId}-description` : undefined;\r\n const isError = state === \"error\";\r\n\r\n const computedAutoComplete =\r\n autoCompleteProp ??\r\n (autocomplete ? (password ? \"current-password\" : \"on\") : \"off\");\r\n\r\n const togglePasswordVisibility = () => setShowPassword((prev) => !prev);\r\n\r\n const wrapperClass = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.container,\r\n classMap[theme],\r\n classMap[state],\r\n outline && classMap.outline,\r\n disabled && classMap.disabled,\r\n shadow && classMap[`shadow${capitalize(shadow)}`],\r\n rounding && classMap[`round${capitalize(rounding)}`],\r\n className\r\n ),\r\n [classMap, theme, state, outline, disabled, shadow, rounding, className]\r\n );\r\n\r\n const computedLabel = ariaLabel || placeholder;\r\n\r\n return (\r\n <div\r\n className={wrapperClass}\r\n data-testid={`${testId}-wrapper`}\r\n aria-disabled={disabled || undefined}\r\n >\r\n {Icon && (\r\n <div\r\n className={classMap.iconContainer}\r\n aria-hidden=\"true\"\r\n data-testid={`${testId}-icon`}\r\n >\r\n <Icon aria-hidden=\"true\" />\r\n </div>\r\n )}\r\n\r\n <input\r\n ref={ref}\r\n id={inputId}\r\n type={password && !showPassword ? \"password\" : \"text\"}\r\n className={`${classMap.textInput} ${classMap[theme]}`}\r\n placeholder={placeholder}\r\n aria-label={computedLabel}\r\n aria-describedby={descId}\r\n aria-invalid={isError || undefined}\r\n aria-required={required || undefined}\r\n aria-readonly={readOnly || undefined}\r\n aria-disabled={disabled || undefined}\r\n autoComplete={computedAutoComplete}\r\n readOnly={readOnly}\r\n disabled={disabled}\r\n required={required}\r\n data-testid={testId}\r\n {...restInput}\r\n />\r\n\r\n {password && (\r\n <IconButton\r\n type=\"button\"\r\n className={classMap.togglePassword}\r\n onClick={togglePasswordVisibility}\r\n theme=\"clear\"\r\n shadow=\"none\"\r\n aria-label={showPassword ? \"Hide password\" : \"Show password\"}\r\n aria-pressed={showPassword}\r\n data-testid={`${testId}-password-toggle`}\r\n icon={showPassword ? EyeIcon : EyeSlashIcon}\r\n />\r\n )}\r\n\r\n {ariaDescription && (\r\n <span\r\n id={descId}\r\n className=\"sr_only\"\r\n data-testid={`${testId}-input-description`}\r\n >\r\n {ariaDescription}\r\n </span>\r\n )}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nTextInputBase.displayName = \"TextInputBase\";\r\nexport default TextInputBase;\r\n","\"use client\";\r\n\r\nimport { forwardRef } from \"react\";\r\nimport styles from \"./TextInput.module.scss\";\r\nimport { TextInputProps } from \"../TextInput.types\";\r\nimport TextInputBase from \"../TextInputBase\";\r\nimport { IconButton } from \"@/index.next\";\r\n\r\nconst TextInput = forwardRef<HTMLInputElement, TextInputProps>((props, ref) => {\r\n return (\r\n <TextInputBase\r\n {...props}\r\n IconButton={IconButton}\r\n ref={ref}\r\n classMap={styles}\r\n />\r\n );\r\n});\r\n\r\nTextInput.displayName = \"TextInput\";\r\nexport default TextInput;\r\n"],"names":["jsxs","jsx","forwardRef","getDefaultTheme","getDefaultRounding","getDefaultShadow","disabled","outline","IconButton","useState","useId","useMemo","combineClassNames","capitalize"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TextInput-C3cLfd6E.cjs","sources":["../../src/Icons/EyeIcon.tsx","../../src/Icons/EyeSlashIcon.tsx","../../src/components/TextInput/TextInputBase.tsx","../../src/components/TextInput/next/TextInput.tsx"],"sourcesContent":["const EyeIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\r\n <svg\r\n width=\"24px\"\r\n height=\"24px\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n color=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n {...props}\r\n >\r\n <path\r\n d=\"M3 13C6.6 5 17.4 5 21 13\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n <path\r\n d=\"M12 17C10.3431 17 9 15.6569 9 14C9 12.3431 10.3431 11 12 11C13.6569 11 15 12.3431 15 14C15 15.6569 13.6569 17 12 17Z\"\r\n fill=\"currentColor\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n </svg>\r\n);\r\n\r\nexport default EyeIcon;\r\n","const EyeSlashIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\r\n <svg\r\n width=\"24px\"\r\n height=\"24px\"\r\n viewBox=\"0 0 24 24\"\r\n strokeWidth=\"1.5\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n color=\"currentColor\"\r\n {...props}\r\n >\r\n <path\r\n d=\"M19.5 16L17.0248 12.6038\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n <path\r\n d=\"M12 17.5V14\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n <path\r\n d=\"M4.5 16L6.96895 12.6124\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n <path\r\n d=\"M3 8C6.6 16 17.4 16 21 8\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n </svg>\r\n);\r\n\r\nexport default EyeSlashIcon;\r\n","import {\r\n forwardRef,\r\n useState,\r\n useId,\r\n InputHTMLAttributes,\r\n useMemo,\r\n} from \"react\";\r\nimport { EyeIcon, EyeSlashIcon } from \"../../Icons\";\r\nimport { TextInputBaseProps } from \"./TextInput.types\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\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\nconst TextInputBase = forwardRef<HTMLInputElement, TextInputBaseProps>(\r\n (\r\n {\r\n icon: Icon,\r\n placeholder = \"Enter text\",\r\n password = false,\r\n readOnly = false,\r\n ariaLabel,\r\n ariaDescription,\r\n theme = getDefaultTheme(),\r\n rounding = getDefaultRounding(),\r\n shadow = getDefaultShadow(),\r\n state = \"\",\r\n disabled = false,\r\n autocomplete = false,\r\n \"data-testid\": testId = \"text-input\",\r\n classMap,\r\n outline = false,\r\n IconButton,\r\n className = \"\",\r\n ...rest\r\n },\r\n ref\r\n ) => {\r\n const [showPassword, setShowPassword] = useState(false);\r\n\r\n const autoId = useId();\r\n const {\r\n id: idProp,\r\n required,\r\n autoComplete: autoCompleteProp,\r\n ...restInput\r\n } = rest as InputHTMLAttributes<HTMLInputElement>;\r\n const inputId = idProp || autoId;\r\n\r\n const descId = ariaDescription ? `${inputId}-description` : undefined;\r\n const isError = state === \"error\";\r\n\r\n const computedAutoComplete =\r\n autoCompleteProp ??\r\n (autocomplete ? (password ? \"current-password\" : \"on\") : \"off\");\r\n\r\n const togglePasswordVisibility = () => setShowPassword((prev) => !prev);\r\n\r\n const wrapperClass = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.container,\r\n classMap[theme],\r\n classMap[state],\r\n outline && classMap.outline,\r\n disabled && classMap.disabled,\r\n shadow && classMap[`shadow${capitalize(shadow)}`],\r\n rounding && classMap[`round${capitalize(rounding)}`],\r\n className\r\n ),\r\n [classMap, theme, state, outline, disabled, shadow, rounding, className]\r\n );\r\n\r\n const computedLabel = ariaLabel || placeholder;\r\n\r\n return (\r\n <div\r\n className={wrapperClass}\r\n data-testid={`${testId}-wrapper`}\r\n aria-disabled={disabled || undefined}\r\n >\r\n {Icon && (\r\n <div\r\n className={classMap.iconContainer}\r\n aria-hidden=\"true\"\r\n data-testid={`${testId}-icon`}\r\n >\r\n <Icon aria-hidden=\"true\" />\r\n </div>\r\n )}\r\n\r\n <input\r\n ref={ref}\r\n id={inputId}\r\n type={password && !showPassword ? \"password\" : \"text\"}\r\n className={`${classMap.textInput} ${classMap[theme]}`}\r\n placeholder={placeholder}\r\n aria-label={computedLabel}\r\n aria-describedby={descId}\r\n aria-invalid={isError || undefined}\r\n aria-required={required || undefined}\r\n aria-readonly={readOnly || undefined}\r\n aria-disabled={disabled || undefined}\r\n autoComplete={computedAutoComplete}\r\n readOnly={readOnly}\r\n disabled={disabled}\r\n required={required}\r\n data-testid={testId}\r\n {...restInput}\r\n />\r\n\r\n {password && (\r\n <IconButton\r\n type=\"button\"\r\n className={classMap.togglePassword}\r\n onClick={togglePasswordVisibility}\r\n theme=\"clear\"\r\n shadow=\"none\"\r\n aria-label={showPassword ? \"Hide password\" : \"Show password\"}\r\n aria-pressed={showPassword}\r\n data-testid={`${testId}-password-toggle`}\r\n icon={showPassword ? EyeIcon : EyeSlashIcon}\r\n />\r\n )}\r\n\r\n {ariaDescription && (\r\n <span\r\n id={descId}\r\n className=\"sr_only\"\r\n data-testid={`${testId}-input-description`}\r\n >\r\n {ariaDescription}\r\n </span>\r\n )}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nTextInputBase.displayName = \"TextInputBase\";\r\nexport default TextInputBase;\r\n","\"use client\";\r\n\r\nimport { forwardRef } from \"react\";\r\nimport styles from \"./TextInput.module.scss\";\r\nimport { TextInputProps } from \"../TextInput.types\";\r\nimport TextInputBase from \"../TextInputBase\";\r\nimport { IconButton } from \"@/index.next\";\r\n\r\nconst TextInput = forwardRef<HTMLInputElement, TextInputProps>((props, ref) => {\r\n return (\r\n <TextInputBase\r\n {...props}\r\n IconButton={IconButton}\r\n ref={ref}\r\n classMap={styles}\r\n />\r\n );\r\n});\r\n\r\nTextInput.displayName = \"TextInput\";\r\nexport default TextInput;\r\n"],"names":["jsxs","jsx","forwardRef","getDefaultTheme","getDefaultRounding","getDefaultShadow","disabled","outline","IconButton","useState","useId","useMemo","combineClassNames","capitalize"],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import { c as combineClassNames } from "./classNames-AS8QjFq7.js";
|
|
|
4
4
|
import { c as capitalize } from "./capitalize-C0TSQSPh.js";
|
|
5
5
|
import { a as getDefaultRounding, b as getDefaultShadow, d as getDefaultTheme } from "./boreal-style-config-BILmxkZG.js";
|
|
6
6
|
/* empty css */
|
|
7
|
-
import { I as IconButton } from "./IconButton-
|
|
7
|
+
import { I as IconButton } from "./IconButton-Ct3YtlG9.js";
|
|
8
8
|
const EyeIcon = (props) => /* @__PURE__ */ jsxs(
|
|
9
9
|
"svg",
|
|
10
10
|
{
|
|
@@ -276,4 +276,4 @@ TextInput.displayName = "TextInput";
|
|
|
276
276
|
export {
|
|
277
277
|
TextInput as T
|
|
278
278
|
};
|
|
279
|
-
//# sourceMappingURL=TextInput-
|
|
279
|
+
//# sourceMappingURL=TextInput-D68lumzk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextInput-CyGkgvS3.js","sources":["../../src/Icons/EyeIcon.tsx","../../src/Icons/EyeSlashIcon.tsx","../../src/components/TextInput/TextInputBase.tsx","../../src/components/TextInput/next/TextInput.tsx"],"sourcesContent":["const EyeIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\r\n <svg\r\n width=\"24px\"\r\n height=\"24px\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n color=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n {...props}\r\n >\r\n <path\r\n d=\"M3 13C6.6 5 17.4 5 21 13\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n <path\r\n d=\"M12 17C10.3431 17 9 15.6569 9 14C9 12.3431 10.3431 11 12 11C13.6569 11 15 12.3431 15 14C15 15.6569 13.6569 17 12 17Z\"\r\n fill=\"currentColor\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n </svg>\r\n);\r\n\r\nexport default EyeIcon;\r\n","const EyeSlashIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\r\n <svg\r\n width=\"24px\"\r\n height=\"24px\"\r\n viewBox=\"0 0 24 24\"\r\n strokeWidth=\"1.5\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n color=\"currentColor\"\r\n {...props}\r\n >\r\n <path\r\n d=\"M19.5 16L17.0248 12.6038\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n <path\r\n d=\"M12 17.5V14\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n <path\r\n d=\"M4.5 16L6.96895 12.6124\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n <path\r\n d=\"M3 8C6.6 16 17.4 16 21 8\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n </svg>\r\n);\r\n\r\nexport default EyeSlashIcon;\r\n","import {\r\n forwardRef,\r\n useState,\r\n useId,\r\n InputHTMLAttributes,\r\n useMemo,\r\n} from \"react\";\r\nimport { EyeIcon, EyeSlashIcon } from \"../../Icons\";\r\nimport { TextInputBaseProps } from \"./TextInput.types\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\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\nconst TextInputBase = forwardRef<HTMLInputElement, TextInputBaseProps>(\r\n (\r\n {\r\n icon: Icon,\r\n placeholder = \"Enter text\",\r\n password = false,\r\n readOnly = false,\r\n ariaLabel,\r\n ariaDescription,\r\n theme = getDefaultTheme(),\r\n rounding = getDefaultRounding(),\r\n shadow = getDefaultShadow(),\r\n state = \"\",\r\n disabled = false,\r\n autocomplete = false,\r\n \"data-testid\": testId = \"text-input\",\r\n classMap,\r\n outline = false,\r\n IconButton,\r\n className = \"\",\r\n ...rest\r\n },\r\n ref\r\n ) => {\r\n const [showPassword, setShowPassword] = useState(false);\r\n\r\n const autoId = useId();\r\n const {\r\n id: idProp,\r\n required,\r\n autoComplete: autoCompleteProp,\r\n ...restInput\r\n } = rest as InputHTMLAttributes<HTMLInputElement>;\r\n const inputId = idProp || autoId;\r\n\r\n const descId = ariaDescription ? `${inputId}-description` : undefined;\r\n const isError = state === \"error\";\r\n\r\n const computedAutoComplete =\r\n autoCompleteProp ??\r\n (autocomplete ? (password ? \"current-password\" : \"on\") : \"off\");\r\n\r\n const togglePasswordVisibility = () => setShowPassword((prev) => !prev);\r\n\r\n const wrapperClass = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.container,\r\n classMap[theme],\r\n classMap[state],\r\n outline && classMap.outline,\r\n disabled && classMap.disabled,\r\n shadow && classMap[`shadow${capitalize(shadow)}`],\r\n rounding && classMap[`round${capitalize(rounding)}`],\r\n className\r\n ),\r\n [classMap, theme, state, outline, disabled, shadow, rounding, className]\r\n );\r\n\r\n const computedLabel = ariaLabel || placeholder;\r\n\r\n return (\r\n <div\r\n className={wrapperClass}\r\n data-testid={`${testId}-wrapper`}\r\n aria-disabled={disabled || undefined}\r\n >\r\n {Icon && (\r\n <div\r\n className={classMap.iconContainer}\r\n aria-hidden=\"true\"\r\n data-testid={`${testId}-icon`}\r\n >\r\n <Icon aria-hidden=\"true\" />\r\n </div>\r\n )}\r\n\r\n <input\r\n ref={ref}\r\n id={inputId}\r\n type={password && !showPassword ? \"password\" : \"text\"}\r\n className={`${classMap.textInput} ${classMap[theme]}`}\r\n placeholder={placeholder}\r\n aria-label={computedLabel}\r\n aria-describedby={descId}\r\n aria-invalid={isError || undefined}\r\n aria-required={required || undefined}\r\n aria-readonly={readOnly || undefined}\r\n aria-disabled={disabled || undefined}\r\n autoComplete={computedAutoComplete}\r\n readOnly={readOnly}\r\n disabled={disabled}\r\n required={required}\r\n data-testid={testId}\r\n {...restInput}\r\n />\r\n\r\n {password && (\r\n <IconButton\r\n type=\"button\"\r\n className={classMap.togglePassword}\r\n onClick={togglePasswordVisibility}\r\n theme=\"clear\"\r\n shadow=\"none\"\r\n aria-label={showPassword ? \"Hide password\" : \"Show password\"}\r\n aria-pressed={showPassword}\r\n data-testid={`${testId}-password-toggle`}\r\n icon={showPassword ? EyeIcon : EyeSlashIcon}\r\n />\r\n )}\r\n\r\n {ariaDescription && (\r\n <span\r\n id={descId}\r\n className=\"sr_only\"\r\n data-testid={`${testId}-input-description`}\r\n >\r\n {ariaDescription}\r\n </span>\r\n )}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nTextInputBase.displayName = \"TextInputBase\";\r\nexport default TextInputBase;\r\n","\"use client\";\r\n\r\nimport { forwardRef } from \"react\";\r\nimport styles from \"./TextInput.module.scss\";\r\nimport { TextInputProps } from \"../TextInput.types\";\r\nimport TextInputBase from \"../TextInputBase\";\r\nimport { IconButton } from \"@/index.next\";\r\n\r\nconst TextInput = forwardRef<HTMLInputElement, TextInputProps>((props, ref) => {\r\n return (\r\n <TextInputBase\r\n {...props}\r\n IconButton={IconButton}\r\n ref={ref}\r\n classMap={styles}\r\n />\r\n );\r\n});\r\n\r\nTextInput.displayName = \"TextInput\";\r\nexport default TextInput;\r\n"],"names":["disabled","outline","IconButton"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TextInput-D68lumzk.js","sources":["../../src/Icons/EyeIcon.tsx","../../src/Icons/EyeSlashIcon.tsx","../../src/components/TextInput/TextInputBase.tsx","../../src/components/TextInput/next/TextInput.tsx"],"sourcesContent":["const EyeIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\r\n <svg\r\n width=\"24px\"\r\n height=\"24px\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n color=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n {...props}\r\n >\r\n <path\r\n d=\"M3 13C6.6 5 17.4 5 21 13\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n <path\r\n d=\"M12 17C10.3431 17 9 15.6569 9 14C9 12.3431 10.3431 11 12 11C13.6569 11 15 12.3431 15 14C15 15.6569 13.6569 17 12 17Z\"\r\n fill=\"currentColor\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n </svg>\r\n);\r\n\r\nexport default EyeIcon;\r\n","const EyeSlashIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\r\n <svg\r\n width=\"24px\"\r\n height=\"24px\"\r\n viewBox=\"0 0 24 24\"\r\n strokeWidth=\"1.5\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n color=\"currentColor\"\r\n {...props}\r\n >\r\n <path\r\n d=\"M19.5 16L17.0248 12.6038\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n <path\r\n d=\"M12 17.5V14\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n <path\r\n d=\"M4.5 16L6.96895 12.6124\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n <path\r\n d=\"M3 8C6.6 16 17.4 16 21 8\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n </svg>\r\n);\r\n\r\nexport default EyeSlashIcon;\r\n","import {\r\n forwardRef,\r\n useState,\r\n useId,\r\n InputHTMLAttributes,\r\n useMemo,\r\n} from \"react\";\r\nimport { EyeIcon, EyeSlashIcon } from \"../../Icons\";\r\nimport { TextInputBaseProps } from \"./TextInput.types\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\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\nconst TextInputBase = forwardRef<HTMLInputElement, TextInputBaseProps>(\r\n (\r\n {\r\n icon: Icon,\r\n placeholder = \"Enter text\",\r\n password = false,\r\n readOnly = false,\r\n ariaLabel,\r\n ariaDescription,\r\n theme = getDefaultTheme(),\r\n rounding = getDefaultRounding(),\r\n shadow = getDefaultShadow(),\r\n state = \"\",\r\n disabled = false,\r\n autocomplete = false,\r\n \"data-testid\": testId = \"text-input\",\r\n classMap,\r\n outline = false,\r\n IconButton,\r\n className = \"\",\r\n ...rest\r\n },\r\n ref\r\n ) => {\r\n const [showPassword, setShowPassword] = useState(false);\r\n\r\n const autoId = useId();\r\n const {\r\n id: idProp,\r\n required,\r\n autoComplete: autoCompleteProp,\r\n ...restInput\r\n } = rest as InputHTMLAttributes<HTMLInputElement>;\r\n const inputId = idProp || autoId;\r\n\r\n const descId = ariaDescription ? `${inputId}-description` : undefined;\r\n const isError = state === \"error\";\r\n\r\n const computedAutoComplete =\r\n autoCompleteProp ??\r\n (autocomplete ? (password ? \"current-password\" : \"on\") : \"off\");\r\n\r\n const togglePasswordVisibility = () => setShowPassword((prev) => !prev);\r\n\r\n const wrapperClass = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.container,\r\n classMap[theme],\r\n classMap[state],\r\n outline && classMap.outline,\r\n disabled && classMap.disabled,\r\n shadow && classMap[`shadow${capitalize(shadow)}`],\r\n rounding && classMap[`round${capitalize(rounding)}`],\r\n className\r\n ),\r\n [classMap, theme, state, outline, disabled, shadow, rounding, className]\r\n );\r\n\r\n const computedLabel = ariaLabel || placeholder;\r\n\r\n return (\r\n <div\r\n className={wrapperClass}\r\n data-testid={`${testId}-wrapper`}\r\n aria-disabled={disabled || undefined}\r\n >\r\n {Icon && (\r\n <div\r\n className={classMap.iconContainer}\r\n aria-hidden=\"true\"\r\n data-testid={`${testId}-icon`}\r\n >\r\n <Icon aria-hidden=\"true\" />\r\n </div>\r\n )}\r\n\r\n <input\r\n ref={ref}\r\n id={inputId}\r\n type={password && !showPassword ? \"password\" : \"text\"}\r\n className={`${classMap.textInput} ${classMap[theme]}`}\r\n placeholder={placeholder}\r\n aria-label={computedLabel}\r\n aria-describedby={descId}\r\n aria-invalid={isError || undefined}\r\n aria-required={required || undefined}\r\n aria-readonly={readOnly || undefined}\r\n aria-disabled={disabled || undefined}\r\n autoComplete={computedAutoComplete}\r\n readOnly={readOnly}\r\n disabled={disabled}\r\n required={required}\r\n data-testid={testId}\r\n {...restInput}\r\n />\r\n\r\n {password && (\r\n <IconButton\r\n type=\"button\"\r\n className={classMap.togglePassword}\r\n onClick={togglePasswordVisibility}\r\n theme=\"clear\"\r\n shadow=\"none\"\r\n aria-label={showPassword ? \"Hide password\" : \"Show password\"}\r\n aria-pressed={showPassword}\r\n data-testid={`${testId}-password-toggle`}\r\n icon={showPassword ? EyeIcon : EyeSlashIcon}\r\n />\r\n )}\r\n\r\n {ariaDescription && (\r\n <span\r\n id={descId}\r\n className=\"sr_only\"\r\n data-testid={`${testId}-input-description`}\r\n >\r\n {ariaDescription}\r\n </span>\r\n )}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nTextInputBase.displayName = \"TextInputBase\";\r\nexport default TextInputBase;\r\n","\"use client\";\r\n\r\nimport { forwardRef } from \"react\";\r\nimport styles from \"./TextInput.module.scss\";\r\nimport { TextInputProps } from \"../TextInput.types\";\r\nimport TextInputBase from \"../TextInputBase\";\r\nimport { IconButton } from \"@/index.next\";\r\n\r\nconst TextInput = forwardRef<HTMLInputElement, TextInputProps>((props, ref) => {\r\n return (\r\n <TextInputBase\r\n {...props}\r\n IconButton={IconButton}\r\n ref={ref}\r\n classMap={styles}\r\n />\r\n );\r\n});\r\n\r\nTextInput.displayName = \"TextInput\";\r\nexport default TextInput;\r\n"],"names":["disabled","outline","IconButton"],"mappings":"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"}
|
package/dist/next/TextInput.js
CHANGED