boreal-ui 0.0.10 → 0.0.11

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.
Files changed (54) hide show
  1. package/dist/core/{Footer-bKgKgU6L.js → Footer-D_-eBUqK.js} +2 -2
  2. package/dist/core/{Footer-bKgKgU6L.js.map → Footer-D_-eBUqK.js.map} +1 -1
  3. package/dist/core/{Footer-B4Owy88y.cjs → Footer-DxYjXCde.cjs} +2 -2
  4. package/dist/core/{Footer-B4Owy88y.cjs.map → Footer-DxYjXCde.cjs.map} +1 -1
  5. package/dist/core/Footer.cjs.js +1 -1
  6. package/dist/core/Footer.js +1 -1
  7. package/dist/core/{Select-C4a_4B87.js → Select-BDwB-XRV.js} +2 -1
  8. package/dist/core/{Select-C4a_4B87.js.map → Select-BDwB-XRV.js.map} +1 -1
  9. package/dist/core/{Select-9F6p9ghR.cjs → Select-DhUEQ4W_.cjs} +2 -1
  10. package/dist/core/{Select-9F6p9ghR.cjs.map → Select-DhUEQ4W_.cjs.map} +1 -1
  11. package/dist/core/Select.cjs.js +1 -1
  12. package/dist/core/Select.js +1 -1
  13. package/dist/core/index.cjs.js +211 -2
  14. package/dist/core/index.cjs.js.map +1 -1
  15. package/dist/core/index.js +215 -4
  16. package/dist/core/index.js.map +1 -1
  17. package/dist/core/style.css +713 -0
  18. package/dist/next/{Footer-CQAWg2tl.js → Footer-BPjfubyG.js} +2 -2
  19. package/dist/next/{Footer-CQAWg2tl.js.map → Footer-BPjfubyG.js.map} +1 -1
  20. package/dist/next/{Footer-D2veQTa-.cjs → Footer-C6gSCcdC.cjs} +2 -2
  21. package/dist/next/{Footer-D2veQTa-.cjs.map → Footer-C6gSCcdC.cjs.map} +1 -1
  22. package/dist/next/Footer.cjs.js +1 -1
  23. package/dist/next/Footer.js +1 -1
  24. package/dist/next/{NavBar-DzRWv8W0.js → NavBar-CLfsYv5E.js} +3 -2
  25. package/dist/next/{NavBar-DzRWv8W0.js.map → NavBar-CLfsYv5E.js.map} +1 -1
  26. package/dist/next/{NavBar-CZtNDAdX.cjs → NavBar-COPlmHzy.cjs} +2 -1
  27. package/dist/next/{NavBar-CZtNDAdX.cjs.map → NavBar-COPlmHzy.cjs.map} +1 -1
  28. package/dist/next/NavBar.cjs.js +1 -1
  29. package/dist/next/NavBar.js +1 -1
  30. package/dist/next/{Select-_f1aZuKO.cjs → Select-BKprqV3i.cjs} +2 -1
  31. package/dist/next/{Select-_f1aZuKO.cjs.map → Select-BKprqV3i.cjs.map} +1 -1
  32. package/dist/next/{Select-DwWTQcCU.js → Select-_C8mTVb1.js} +2 -1
  33. package/dist/next/{Select-DwWTQcCU.js.map → Select-_C8mTVb1.js.map} +1 -1
  34. package/dist/next/Select.cjs.js +1 -1
  35. package/dist/next/Select.js +1 -1
  36. package/dist/next/index.cjs.js +297 -21
  37. package/dist/next/index.cjs.js.map +1 -1
  38. package/dist/next/index.js +303 -24
  39. package/dist/next/index.js.map +1 -1
  40. package/dist/next/style.css +696 -0
  41. package/dist/tsconfig.build.tsbuildinfo +1 -1
  42. package/dist/types/components/Sidebar/Sidebar.types.d.ts +112 -0
  43. package/dist/types/components/Sidebar/Sidebar.types.d.ts.map +1 -0
  44. package/dist/types/components/Sidebar/SidebarBase.d.ts +5 -0
  45. package/dist/types/components/Sidebar/SidebarBase.d.ts.map +1 -0
  46. package/dist/types/components/Sidebar/core/Sidebar.d.ts +6 -0
  47. package/dist/types/components/Sidebar/core/Sidebar.d.ts.map +1 -0
  48. package/dist/types/components/Sidebar/next/Sidebar.d.ts +5 -0
  49. package/dist/types/components/Sidebar/next/Sidebar.d.ts.map +1 -0
  50. package/dist/types/index.core.d.ts +1 -0
  51. package/dist/types/index.core.d.ts.map +1 -1
  52. package/dist/types/index.next.d.ts +1 -0
  53. package/dist/types/index.next.d.ts.map +1 -1
  54. package/package.json +2 -2
@@ -1,4 +1,4 @@
1
1
  "use strict";
2
- const NavBar = require("./NavBar-CZtNDAdX.cjs");
2
+ const NavBar = require("./NavBar-COPlmHzy.cjs");
3
3
  module.exports = NavBar.NavBar;
4
4
  //# sourceMappingURL=NavBar.cjs.js.map
@@ -1,4 +1,4 @@
1
- import { N } from "./NavBar-DzRWv8W0.js";
1
+ import { N } from "./NavBar-CLfsYv5E.js";
2
2
  export {
3
3
  N as default
4
4
  };
@@ -225,5 +225,6 @@ const Select = React.forwardRef(
225
225
  }
226
226
  );
227
227
  Select.displayName = "Select";
228
+ exports.ChevronDownIcon = ChevronDownIcon;
228
229
  exports.Select = Select;
229
- //# sourceMappingURL=Select-_f1aZuKO.cjs.map
230
+ //# sourceMappingURL=Select-BKprqV3i.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Select-_f1aZuKO.cjs","sources":["../../src/Icons/CheveronDownIcon.tsx","../../src/components/Select/SelectBase.tsx","../../src/components/Select/next/Select.tsx"],"sourcesContent":["const ChevronDownIcon: 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 fillRule=\"evenodd\"\r\n clipRule=\"evenodd\"\r\n d=\"M5.30711 8.71299C5.4232 8.43273 5.69668 8.25 6.00002 8.25H18C18.3034 8.25 18.5768 8.43273 18.6929 8.71299C18.809 8.99324 18.7449 9.31583 18.5304 9.53033L12.5304 15.5303C12.2375 15.8232 11.7626 15.8232 11.4697 15.5303L5.46969 9.53033C5.25519 9.31583 5.19103 8.99324 5.30711 8.71299Z\"\r\n fill=\"currentColor\"\r\n ></path>\r\n </svg>\r\n);\r\n\r\nexport default ChevronDownIcon;\r\n","import {\r\n forwardRef,\r\n ChangeEvent,\r\n useId,\r\n useMemo,\r\n useEffect,\r\n useState,\r\n} from \"react\";\r\nimport { SelectProps } from \"./Select.types\";\r\nimport { ChevronDownIcon } from \"../../Icons\";\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\ninterface BaseSelectProps extends SelectProps {\r\n classMap: Record<string, string>;\r\n}\r\n\r\nconst BaseSelect = forwardRef<HTMLSelectElement, BaseSelectProps>(\r\n (\r\n {\r\n theme = getDefaultTheme(),\r\n state = \"\",\r\n outline = false,\r\n rounding = getDefaultRounding(),\r\n shadow = getDefaultShadow(),\r\n options,\r\n value,\r\n onChange,\r\n placeholder = \"Select an option\",\r\n ariaLabel,\r\n ariaDescription,\r\n disabled = false,\r\n className = \"\",\r\n classMap,\r\n asyncOptions,\r\n pollInterval = 0,\r\n \"data-testid\": testId = \"select\",\r\n },\r\n ref\r\n ) => {\r\n const id = useId();\r\n const selectId = `${id}-select`;\r\n const descId = ariaDescription ? `${id}-desc` : undefined;\r\n\r\n const [internalOptions, setInternalOptions] = useState(options);\r\n\r\n useEffect(() => {\r\n if (!asyncOptions) return;\r\n\r\n let isMounted = true;\r\n\r\n const load = async () => {\r\n try {\r\n const fetched = await asyncOptions(\"\");\r\n if (isMounted) setInternalOptions(fetched);\r\n } catch (err) {\r\n console.error(\"Failed to load options:\", err);\r\n }\r\n };\r\n\r\n load();\r\n\r\n if (pollInterval > 0) {\r\n const intervalId = setInterval(load, pollInterval);\r\n return () => {\r\n clearInterval(intervalId);\r\n isMounted = false;\r\n };\r\n }\r\n\r\n return () => {\r\n isMounted = false;\r\n };\r\n }, [asyncOptions, pollInterval]);\r\n\r\n const handleChange = (event: ChangeEvent<HTMLSelectElement>) => {\r\n onChange(event.target.value);\r\n };\r\n\r\n const wrapperClasses = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.wrapper,\r\n classMap[theme],\r\n classMap[state],\r\n className,\r\n shadow && classMap[`shadow${capitalize(shadow)}`],\r\n rounding && classMap[`round${capitalize(rounding)}`],\r\n outline ? classMap.outline : \"\",\r\n disabled ? classMap.disabled : \"\"\r\n ),\r\n [classMap, theme, state, className, shadow, rounding, outline, disabled]\r\n );\r\n\r\n const selectClasses = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.select,\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, theme, state, outline]\r\n );\r\n\r\n return (\r\n <div className={wrapperClasses} data-testid={testId}>\r\n <select\r\n ref={ref}\r\n id={selectId}\r\n value={value}\r\n onChange={handleChange}\r\n className={selectClasses}\r\n aria-label={ariaLabel || placeholder}\r\n aria-describedby={descId}\r\n aria-disabled={disabled}\r\n disabled={disabled}\r\n data-testid={`${testId}-input`}\r\n >\r\n <option value=\"\" disabled hidden>\r\n {placeholder}\r\n </option>\r\n {(asyncOptions ? internalOptions : options).map((option) => (\r\n <option\r\n key={option.value}\r\n value={option.value}\r\n data-testid={`${testId}-option-${option.value}`}\r\n >\r\n {option.label}\r\n </option>\r\n ))}\r\n </select>\r\n\r\n <div\r\n className={`${classMap.icon} ${classMap[theme]} ${\r\n disabled && classMap.disabled ? classMap.disabled : \"\"\r\n }`}\r\n aria-hidden=\"true\"\r\n data-testid={`${testId}-icon`}\r\n >\r\n <ChevronDownIcon />\r\n </div>\r\n\r\n {ariaDescription && (\r\n <span\r\n id={descId}\r\n className=\"sr-only\"\r\n data-testid={`${testId}-description`}\r\n >\r\n {ariaDescription}\r\n </span>\r\n )}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nBaseSelect.displayName = \"BaseSelect\";\r\nexport default BaseSelect;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport BaseSelect from \"../SelectBase\";\r\nimport styles from \"./Select.module.scss\";\r\nimport { SelectProps } from \"../Select.types\";\r\n\r\nconst Select = React.forwardRef<HTMLSelectElement, SelectProps>(\r\n (props, ref) => {\r\n return <BaseSelect {...props} ref={ref} classMap={styles} />;\r\n }\r\n);\r\n\r\nSelect.displayName = \"Select\";\r\nexport default Select;\r\n"],"names":["jsx","forwardRef","getDefaultTheme","outline","getDefaultRounding","getDefaultShadow","disabled","useId","useState","useEffect","useMemo","combineClassNames","capitalize","jsxs"],"mappings":"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"}
1
+ {"version":3,"file":"Select-BKprqV3i.cjs","sources":["../../src/Icons/CheveronDownIcon.tsx","../../src/components/Select/SelectBase.tsx","../../src/components/Select/next/Select.tsx"],"sourcesContent":["const ChevronDownIcon: 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 fillRule=\"evenodd\"\r\n clipRule=\"evenodd\"\r\n d=\"M5.30711 8.71299C5.4232 8.43273 5.69668 8.25 6.00002 8.25H18C18.3034 8.25 18.5768 8.43273 18.6929 8.71299C18.809 8.99324 18.7449 9.31583 18.5304 9.53033L12.5304 15.5303C12.2375 15.8232 11.7626 15.8232 11.4697 15.5303L5.46969 9.53033C5.25519 9.31583 5.19103 8.99324 5.30711 8.71299Z\"\r\n fill=\"currentColor\"\r\n ></path>\r\n </svg>\r\n);\r\n\r\nexport default ChevronDownIcon;\r\n","import {\r\n forwardRef,\r\n ChangeEvent,\r\n useId,\r\n useMemo,\r\n useEffect,\r\n useState,\r\n} from \"react\";\r\nimport { SelectProps } from \"./Select.types\";\r\nimport { ChevronDownIcon } from \"../../Icons\";\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\ninterface BaseSelectProps extends SelectProps {\r\n classMap: Record<string, string>;\r\n}\r\n\r\nconst BaseSelect = forwardRef<HTMLSelectElement, BaseSelectProps>(\r\n (\r\n {\r\n theme = getDefaultTheme(),\r\n state = \"\",\r\n outline = false,\r\n rounding = getDefaultRounding(),\r\n shadow = getDefaultShadow(),\r\n options,\r\n value,\r\n onChange,\r\n placeholder = \"Select an option\",\r\n ariaLabel,\r\n ariaDescription,\r\n disabled = false,\r\n className = \"\",\r\n classMap,\r\n asyncOptions,\r\n pollInterval = 0,\r\n \"data-testid\": testId = \"select\",\r\n },\r\n ref\r\n ) => {\r\n const id = useId();\r\n const selectId = `${id}-select`;\r\n const descId = ariaDescription ? `${id}-desc` : undefined;\r\n\r\n const [internalOptions, setInternalOptions] = useState(options);\r\n\r\n useEffect(() => {\r\n if (!asyncOptions) return;\r\n\r\n let isMounted = true;\r\n\r\n const load = async () => {\r\n try {\r\n const fetched = await asyncOptions(\"\");\r\n if (isMounted) setInternalOptions(fetched);\r\n } catch (err) {\r\n console.error(\"Failed to load options:\", err);\r\n }\r\n };\r\n\r\n load();\r\n\r\n if (pollInterval > 0) {\r\n const intervalId = setInterval(load, pollInterval);\r\n return () => {\r\n clearInterval(intervalId);\r\n isMounted = false;\r\n };\r\n }\r\n\r\n return () => {\r\n isMounted = false;\r\n };\r\n }, [asyncOptions, pollInterval]);\r\n\r\n const handleChange = (event: ChangeEvent<HTMLSelectElement>) => {\r\n onChange(event.target.value);\r\n };\r\n\r\n const wrapperClasses = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.wrapper,\r\n classMap[theme],\r\n classMap[state],\r\n className,\r\n shadow && classMap[`shadow${capitalize(shadow)}`],\r\n rounding && classMap[`round${capitalize(rounding)}`],\r\n outline ? classMap.outline : \"\",\r\n disabled ? classMap.disabled : \"\"\r\n ),\r\n [classMap, theme, state, className, shadow, rounding, outline, disabled]\r\n );\r\n\r\n const selectClasses = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.select,\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, theme, state, outline]\r\n );\r\n\r\n return (\r\n <div className={wrapperClasses} data-testid={testId}>\r\n <select\r\n ref={ref}\r\n id={selectId}\r\n value={value}\r\n onChange={handleChange}\r\n className={selectClasses}\r\n aria-label={ariaLabel || placeholder}\r\n aria-describedby={descId}\r\n aria-disabled={disabled}\r\n disabled={disabled}\r\n data-testid={`${testId}-input`}\r\n >\r\n <option value=\"\" disabled hidden>\r\n {placeholder}\r\n </option>\r\n {(asyncOptions ? internalOptions : options).map((option) => (\r\n <option\r\n key={option.value}\r\n value={option.value}\r\n data-testid={`${testId}-option-${option.value}`}\r\n >\r\n {option.label}\r\n </option>\r\n ))}\r\n </select>\r\n\r\n <div\r\n className={`${classMap.icon} ${classMap[theme]} ${\r\n disabled && classMap.disabled ? classMap.disabled : \"\"\r\n }`}\r\n aria-hidden=\"true\"\r\n data-testid={`${testId}-icon`}\r\n >\r\n <ChevronDownIcon />\r\n </div>\r\n\r\n {ariaDescription && (\r\n <span\r\n id={descId}\r\n className=\"sr-only\"\r\n data-testid={`${testId}-description`}\r\n >\r\n {ariaDescription}\r\n </span>\r\n )}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nBaseSelect.displayName = \"BaseSelect\";\r\nexport default BaseSelect;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport BaseSelect from \"../SelectBase\";\r\nimport styles from \"./Select.module.scss\";\r\nimport { SelectProps } from \"../Select.types\";\r\n\r\nconst Select = React.forwardRef<HTMLSelectElement, SelectProps>(\r\n (props, ref) => {\r\n return <BaseSelect {...props} ref={ref} classMap={styles} />;\r\n }\r\n);\r\n\r\nSelect.displayName = \"Select\";\r\nexport default Select;\r\n"],"names":["jsx","forwardRef","getDefaultTheme","outline","getDefaultRounding","getDefaultShadow","disabled","useId","useState","useEffect","useMemo","combineClassNames","capitalize","jsxs"],"mappings":"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"}
@@ -225,6 +225,7 @@ const Select = React.forwardRef(
225
225
  );
226
226
  Select.displayName = "Select";
227
227
  export {
228
+ ChevronDownIcon as C,
228
229
  Select as S
229
230
  };
230
- //# sourceMappingURL=Select-DwWTQcCU.js.map
231
+ //# sourceMappingURL=Select-_C8mTVb1.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Select-DwWTQcCU.js","sources":["../../src/Icons/CheveronDownIcon.tsx","../../src/components/Select/SelectBase.tsx","../../src/components/Select/next/Select.tsx"],"sourcesContent":["const ChevronDownIcon: 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 fillRule=\"evenodd\"\r\n clipRule=\"evenodd\"\r\n d=\"M5.30711 8.71299C5.4232 8.43273 5.69668 8.25 6.00002 8.25H18C18.3034 8.25 18.5768 8.43273 18.6929 8.71299C18.809 8.99324 18.7449 9.31583 18.5304 9.53033L12.5304 15.5303C12.2375 15.8232 11.7626 15.8232 11.4697 15.5303L5.46969 9.53033C5.25519 9.31583 5.19103 8.99324 5.30711 8.71299Z\"\r\n fill=\"currentColor\"\r\n ></path>\r\n </svg>\r\n);\r\n\r\nexport default ChevronDownIcon;\r\n","import {\r\n forwardRef,\r\n ChangeEvent,\r\n useId,\r\n useMemo,\r\n useEffect,\r\n useState,\r\n} from \"react\";\r\nimport { SelectProps } from \"./Select.types\";\r\nimport { ChevronDownIcon } from \"../../Icons\";\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\ninterface BaseSelectProps extends SelectProps {\r\n classMap: Record<string, string>;\r\n}\r\n\r\nconst BaseSelect = forwardRef<HTMLSelectElement, BaseSelectProps>(\r\n (\r\n {\r\n theme = getDefaultTheme(),\r\n state = \"\",\r\n outline = false,\r\n rounding = getDefaultRounding(),\r\n shadow = getDefaultShadow(),\r\n options,\r\n value,\r\n onChange,\r\n placeholder = \"Select an option\",\r\n ariaLabel,\r\n ariaDescription,\r\n disabled = false,\r\n className = \"\",\r\n classMap,\r\n asyncOptions,\r\n pollInterval = 0,\r\n \"data-testid\": testId = \"select\",\r\n },\r\n ref\r\n ) => {\r\n const id = useId();\r\n const selectId = `${id}-select`;\r\n const descId = ariaDescription ? `${id}-desc` : undefined;\r\n\r\n const [internalOptions, setInternalOptions] = useState(options);\r\n\r\n useEffect(() => {\r\n if (!asyncOptions) return;\r\n\r\n let isMounted = true;\r\n\r\n const load = async () => {\r\n try {\r\n const fetched = await asyncOptions(\"\");\r\n if (isMounted) setInternalOptions(fetched);\r\n } catch (err) {\r\n console.error(\"Failed to load options:\", err);\r\n }\r\n };\r\n\r\n load();\r\n\r\n if (pollInterval > 0) {\r\n const intervalId = setInterval(load, pollInterval);\r\n return () => {\r\n clearInterval(intervalId);\r\n isMounted = false;\r\n };\r\n }\r\n\r\n return () => {\r\n isMounted = false;\r\n };\r\n }, [asyncOptions, pollInterval]);\r\n\r\n const handleChange = (event: ChangeEvent<HTMLSelectElement>) => {\r\n onChange(event.target.value);\r\n };\r\n\r\n const wrapperClasses = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.wrapper,\r\n classMap[theme],\r\n classMap[state],\r\n className,\r\n shadow && classMap[`shadow${capitalize(shadow)}`],\r\n rounding && classMap[`round${capitalize(rounding)}`],\r\n outline ? classMap.outline : \"\",\r\n disabled ? classMap.disabled : \"\"\r\n ),\r\n [classMap, theme, state, className, shadow, rounding, outline, disabled]\r\n );\r\n\r\n const selectClasses = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.select,\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, theme, state, outline]\r\n );\r\n\r\n return (\r\n <div className={wrapperClasses} data-testid={testId}>\r\n <select\r\n ref={ref}\r\n id={selectId}\r\n value={value}\r\n onChange={handleChange}\r\n className={selectClasses}\r\n aria-label={ariaLabel || placeholder}\r\n aria-describedby={descId}\r\n aria-disabled={disabled}\r\n disabled={disabled}\r\n data-testid={`${testId}-input`}\r\n >\r\n <option value=\"\" disabled hidden>\r\n {placeholder}\r\n </option>\r\n {(asyncOptions ? internalOptions : options).map((option) => (\r\n <option\r\n key={option.value}\r\n value={option.value}\r\n data-testid={`${testId}-option-${option.value}`}\r\n >\r\n {option.label}\r\n </option>\r\n ))}\r\n </select>\r\n\r\n <div\r\n className={`${classMap.icon} ${classMap[theme]} ${\r\n disabled && classMap.disabled ? classMap.disabled : \"\"\r\n }`}\r\n aria-hidden=\"true\"\r\n data-testid={`${testId}-icon`}\r\n >\r\n <ChevronDownIcon />\r\n </div>\r\n\r\n {ariaDescription && (\r\n <span\r\n id={descId}\r\n className=\"sr-only\"\r\n data-testid={`${testId}-description`}\r\n >\r\n {ariaDescription}\r\n </span>\r\n )}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nBaseSelect.displayName = \"BaseSelect\";\r\nexport default BaseSelect;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport BaseSelect from \"../SelectBase\";\r\nimport styles from \"./Select.module.scss\";\r\nimport { SelectProps } from \"../Select.types\";\r\n\r\nconst Select = React.forwardRef<HTMLSelectElement, SelectProps>(\r\n (props, ref) => {\r\n return <BaseSelect {...props} ref={ref} classMap={styles} />;\r\n }\r\n);\r\n\r\nSelect.displayName = \"Select\";\r\nexport default Select;\r\n"],"names":["outline","disabled"],"mappings":"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"}
1
+ {"version":3,"file":"Select-_C8mTVb1.js","sources":["../../src/Icons/CheveronDownIcon.tsx","../../src/components/Select/SelectBase.tsx","../../src/components/Select/next/Select.tsx"],"sourcesContent":["const ChevronDownIcon: 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 fillRule=\"evenodd\"\r\n clipRule=\"evenodd\"\r\n d=\"M5.30711 8.71299C5.4232 8.43273 5.69668 8.25 6.00002 8.25H18C18.3034 8.25 18.5768 8.43273 18.6929 8.71299C18.809 8.99324 18.7449 9.31583 18.5304 9.53033L12.5304 15.5303C12.2375 15.8232 11.7626 15.8232 11.4697 15.5303L5.46969 9.53033C5.25519 9.31583 5.19103 8.99324 5.30711 8.71299Z\"\r\n fill=\"currentColor\"\r\n ></path>\r\n </svg>\r\n);\r\n\r\nexport default ChevronDownIcon;\r\n","import {\r\n forwardRef,\r\n ChangeEvent,\r\n useId,\r\n useMemo,\r\n useEffect,\r\n useState,\r\n} from \"react\";\r\nimport { SelectProps } from \"./Select.types\";\r\nimport { ChevronDownIcon } from \"../../Icons\";\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\ninterface BaseSelectProps extends SelectProps {\r\n classMap: Record<string, string>;\r\n}\r\n\r\nconst BaseSelect = forwardRef<HTMLSelectElement, BaseSelectProps>(\r\n (\r\n {\r\n theme = getDefaultTheme(),\r\n state = \"\",\r\n outline = false,\r\n rounding = getDefaultRounding(),\r\n shadow = getDefaultShadow(),\r\n options,\r\n value,\r\n onChange,\r\n placeholder = \"Select an option\",\r\n ariaLabel,\r\n ariaDescription,\r\n disabled = false,\r\n className = \"\",\r\n classMap,\r\n asyncOptions,\r\n pollInterval = 0,\r\n \"data-testid\": testId = \"select\",\r\n },\r\n ref\r\n ) => {\r\n const id = useId();\r\n const selectId = `${id}-select`;\r\n const descId = ariaDescription ? `${id}-desc` : undefined;\r\n\r\n const [internalOptions, setInternalOptions] = useState(options);\r\n\r\n useEffect(() => {\r\n if (!asyncOptions) return;\r\n\r\n let isMounted = true;\r\n\r\n const load = async () => {\r\n try {\r\n const fetched = await asyncOptions(\"\");\r\n if (isMounted) setInternalOptions(fetched);\r\n } catch (err) {\r\n console.error(\"Failed to load options:\", err);\r\n }\r\n };\r\n\r\n load();\r\n\r\n if (pollInterval > 0) {\r\n const intervalId = setInterval(load, pollInterval);\r\n return () => {\r\n clearInterval(intervalId);\r\n isMounted = false;\r\n };\r\n }\r\n\r\n return () => {\r\n isMounted = false;\r\n };\r\n }, [asyncOptions, pollInterval]);\r\n\r\n const handleChange = (event: ChangeEvent<HTMLSelectElement>) => {\r\n onChange(event.target.value);\r\n };\r\n\r\n const wrapperClasses = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.wrapper,\r\n classMap[theme],\r\n classMap[state],\r\n className,\r\n shadow && classMap[`shadow${capitalize(shadow)}`],\r\n rounding && classMap[`round${capitalize(rounding)}`],\r\n outline ? classMap.outline : \"\",\r\n disabled ? classMap.disabled : \"\"\r\n ),\r\n [classMap, theme, state, className, shadow, rounding, outline, disabled]\r\n );\r\n\r\n const selectClasses = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.select,\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, theme, state, outline]\r\n );\r\n\r\n return (\r\n <div className={wrapperClasses} data-testid={testId}>\r\n <select\r\n ref={ref}\r\n id={selectId}\r\n value={value}\r\n onChange={handleChange}\r\n className={selectClasses}\r\n aria-label={ariaLabel || placeholder}\r\n aria-describedby={descId}\r\n aria-disabled={disabled}\r\n disabled={disabled}\r\n data-testid={`${testId}-input`}\r\n >\r\n <option value=\"\" disabled hidden>\r\n {placeholder}\r\n </option>\r\n {(asyncOptions ? internalOptions : options).map((option) => (\r\n <option\r\n key={option.value}\r\n value={option.value}\r\n data-testid={`${testId}-option-${option.value}`}\r\n >\r\n {option.label}\r\n </option>\r\n ))}\r\n </select>\r\n\r\n <div\r\n className={`${classMap.icon} ${classMap[theme]} ${\r\n disabled && classMap.disabled ? classMap.disabled : \"\"\r\n }`}\r\n aria-hidden=\"true\"\r\n data-testid={`${testId}-icon`}\r\n >\r\n <ChevronDownIcon />\r\n </div>\r\n\r\n {ariaDescription && (\r\n <span\r\n id={descId}\r\n className=\"sr-only\"\r\n data-testid={`${testId}-description`}\r\n >\r\n {ariaDescription}\r\n </span>\r\n )}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nBaseSelect.displayName = \"BaseSelect\";\r\nexport default BaseSelect;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport BaseSelect from \"../SelectBase\";\r\nimport styles from \"./Select.module.scss\";\r\nimport { SelectProps } from \"../Select.types\";\r\n\r\nconst Select = React.forwardRef<HTMLSelectElement, SelectProps>(\r\n (props, ref) => {\r\n return <BaseSelect {...props} ref={ref} classMap={styles} />;\r\n }\r\n);\r\n\r\nSelect.displayName = \"Select\";\r\nexport default Select;\r\n"],"names":["outline","disabled"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  "use strict";
2
- const Select = require("./Select-_f1aZuKO.cjs");
2
+ const Select = require("./Select-BKprqV3i.cjs");
3
3
  module.exports = Select.Select;
4
4
  //# sourceMappingURL=Select.cjs.js.map
@@ -1,4 +1,4 @@
1
- import { S } from "./Select-DwWTQcCU.js";
1
+ import { S } from "./Select-_C8mTVb1.js";
2
2
  export {
3
3
  S as default
4
4
  };
@@ -9,8 +9,8 @@ const IconButton = require("./IconButton-CNzF48hu.cjs");
9
9
  const STT = require("./STT-C0q3yqiJ.cjs");
10
10
  const TextInput = require("./TextInput-iQT-2lPj.cjs");
11
11
  const TextArea = require("./TextArea-BfVBd3wl.cjs");
12
- const Select = require("./Select-_f1aZuKO.cjs");
13
- const Footer = require("./Footer-D2veQTa-.cjs");
12
+ const Select = require("./Select-BKprqV3i.cjs");
13
+ const Footer = require("./Footer-C6gSCcdC.cjs");
14
14
  const FileUpload = require("./FileUpload-427ZyzCY.cjs");
15
15
  const Taginput = require("./Taginput-BcNgwFOj.cjs");
16
16
  const RadioButton = require("./RadioButton-cXdUfJD2.cjs");
@@ -35,7 +35,7 @@ const Spinner = require("./Spinner-Doh4Uft1.cjs");
35
35
  const Tooltip = require("./Tooltip-DHhLeygn.cjs");
36
36
  const MessagePopup = require("./MessagePopup-C-7N3vB0.cjs");
37
37
  const PopOver = require("./PopOver-CHs0s9rp.cjs");
38
- const NavBar = require("./NavBar-CZtNDAdX.cjs");
38
+ const NavBar = require("./NavBar-COPlmHzy.cjs");
39
39
  const Breadcrumbs = require("./Breadcrumbs-0cJD4s9s.cjs");
40
40
  const Tabs = require("./Tabs-DuZPFjen.cjs");
41
41
  const Stepper = require("./Stepper-D2UYDRwT.cjs");
@@ -51,6 +51,8 @@ const MetricBox = require("./MetricBox-Dtkrwrtw.cjs");
51
51
  const EmptyState = require("./EmptyState-DUZQ2Qmn.cjs");
52
52
  const CommandPalette = require("./CommandPalette-Dp2pT5ot.cjs");
53
53
  const NotificationCenter = require("./NotificationCenter-DmcHIkOp.cjs");
54
+ const link$1 = require("./link-hxAaLm0Q.cjs");
55
+ const capitalize = require("./capitalize-DoV-nOmN.cjs");
54
56
  const Card = require("./Card-BCYMEFyT.cjs");
55
57
  const Avatar = require("./Avatar-DjuHvrMV.cjs");
56
58
  const ChipGroupBase = React.forwardRef(
@@ -131,11 +133,11 @@ const ChipGroupBase = React.forwardRef(
131
133
  }
132
134
  );
133
135
  ChipGroupBase.displayName = "ChipGroupBase";
134
- const noScroll = "_noScroll_vcv6u_91";
135
- const errorMessage = "_errorMessage_vcv6u_92";
136
- const loadingContainer = "_loadingContainer_vcv6u_93";
137
- const hideScrollbar = "_hideScrollbar_vcv6u_85";
138
- const sr_only = "_sr_only_vcv6u_94";
136
+ const noScroll$1 = "_noScroll_vcv6u_91";
137
+ const errorMessage$1 = "_errorMessage_vcv6u_92";
138
+ const loadingContainer$1 = "_loadingContainer_vcv6u_93";
139
+ const hideScrollbar$1 = "_hideScrollbar_vcv6u_85";
140
+ const sr_only$1 = "_sr_only_vcv6u_94";
139
141
  const container = "_container_vcv6u_479";
140
142
  const topLeft = "_topLeft_vcv6u_488";
141
143
  const topCenter = "_topCenter_vcv6u_493";
@@ -143,16 +145,16 @@ const topRight = "_topRight_vcv6u_499";
143
145
  const bottomLeft = "_bottomLeft_vcv6u_504";
144
146
  const bottomCenter = "_bottomCenter_vcv6u_509";
145
147
  const bottomRight = "_bottomRight_vcv6u_515";
146
- const list = "_list_vcv6u_521";
148
+ const list$1 = "_list_vcv6u_521";
147
149
  const chip = "_chip_vcv6u_530";
148
- const spin = "_spin_vcv6u_1";
149
- const pulse = "_pulse_vcv6u_1";
150
- const styles = {
151
- noScroll,
152
- errorMessage,
153
- loadingContainer,
154
- hideScrollbar,
155
- sr_only,
150
+ const spin$1 = "_spin_vcv6u_1";
151
+ const pulse$1 = "_pulse_vcv6u_1";
152
+ const styles$1 = {
153
+ noScroll: noScroll$1,
154
+ errorMessage: errorMessage$1,
155
+ loadingContainer: loadingContainer$1,
156
+ hideScrollbar: hideScrollbar$1,
157
+ sr_only: sr_only$1,
156
158
  container,
157
159
  topLeft,
158
160
  topCenter,
@@ -160,13 +162,13 @@ const styles = {
160
162
  bottomLeft,
161
163
  bottomCenter,
162
164
  bottomRight,
163
- list,
165
+ list: list$1,
164
166
  chip,
165
167
  "fade-in": "_fade-in_vcv6u_1",
166
168
  "slide-up": "_slide-up_vcv6u_1",
167
169
  "spin-3d": "_spin-3d_vcv6u_1",
168
- spin,
169
- pulse,
170
+ spin: spin$1,
171
+ pulse: pulse$1,
170
172
  "fade-in-up": "_fade-in-up_vcv6u_1",
171
173
  "progress-grow": "_progress-grow_vcv6u_1",
172
174
  "indeterminate-move": "_indeterminate-move_vcv6u_1",
@@ -179,10 +181,283 @@ const ChipGroup = React.forwardRef(
179
181
  ...props,
180
182
  ref,
181
183
  ChipComponent: Chip.Chip,
182
- classMap: styles
184
+ classMap: styles$1
183
185
  }
184
186
  )
185
187
  );
188
+ const SidebarBase = ({
189
+ links,
190
+ classMap,
191
+ currentPath,
192
+ LinkComponent = "a",
193
+ theme = borealStyleConfig.getDefaultTheme(),
194
+ rounding = borealStyleConfig.getDefaultRounding(),
195
+ shadow = borealStyleConfig.getDefaultShadow(),
196
+ state = "",
197
+ showFooter = false,
198
+ footerLinks,
199
+ footerVersion: footerVersion2,
200
+ outline: outline2 = false,
201
+ className = "",
202
+ "data-testid": testId = "sidebar",
203
+ ariaLabel = "Sidebar navigation",
204
+ ...rest
205
+ }) => {
206
+ const [openItems, setOpenItems] = React.useState({});
207
+ const toggleItem = (key) => {
208
+ setOpenItems((prev) => ({ ...prev, [key]: !prev[key] }));
209
+ };
210
+ const submenuRefs = React.useRef({});
211
+ const setSubmenuRef = (key, el) => {
212
+ submenuRefs.current[key] = el;
213
+ };
214
+ const getSubmenuHeight = (key) => {
215
+ const el = submenuRefs.current[key];
216
+ return el ? `${el.scrollHeight}px` : "0px";
217
+ };
218
+ const containerClasses = React.useMemo(
219
+ () => classNames.combineClassNames(
220
+ classMap.wrapper,
221
+ className,
222
+ classMap[theme],
223
+ classMap[state],
224
+ shadow && classMap[`shadow${capitalize.capitalize(shadow)}`],
225
+ rounding && classMap[`round${capitalize.capitalize(rounding)}`],
226
+ outline2 ? classMap.outline : ""
227
+ ),
228
+ [className, theme, state, outline2, rounding, shadow]
229
+ );
230
+ const renderLinks = (items, isChild = false) => /* @__PURE__ */ require$$2.jsx(
231
+ "ul",
232
+ {
233
+ className: classNames.combineClassNames(
234
+ classMap.list,
235
+ isChild ? classMap.childList : ""
236
+ ),
237
+ "data-testid": `${testId}-list`,
238
+ children: items.map(({ label, href, children, icon }) => {
239
+ const isActive = href && currentPath === href;
240
+ const isOpen = openItems[label] || false;
241
+ return /* @__PURE__ */ require$$2.jsx(
242
+ "li",
243
+ {
244
+ className: classMap.item,
245
+ "data-testid": `${testId}-listItems`,
246
+ children: children && children.length > 0 ? /* @__PURE__ */ require$$2.jsxs(require$$2.Fragment, { children: [
247
+ /* @__PURE__ */ require$$2.jsxs(
248
+ "button",
249
+ {
250
+ type: "button",
251
+ className: classNames.combineClassNames(
252
+ classMap.link,
253
+ isOpen ? classMap.active : ""
254
+ ),
255
+ onClick: () => toggleItem(label),
256
+ "aria-expanded": isOpen,
257
+ "data-testid": `${testId}-exapndItemButton`,
258
+ children: [
259
+ icon && /* @__PURE__ */ require$$2.jsx("span", { className: classMap.icon, children: icon }),
260
+ /* @__PURE__ */ require$$2.jsx("span", { "data-testid": `${testId}-exapndItemLabel`, children: label }),
261
+ /* @__PURE__ */ require$$2.jsx(
262
+ Select.ChevronDownIcon,
263
+ {
264
+ className: classNames.combineClassNames(
265
+ classMap.chevron,
266
+ isOpen ? classMap.chevronOpen : ""
267
+ ),
268
+ "data-testid": `${testId}-exapndIcon`
269
+ }
270
+ )
271
+ ]
272
+ }
273
+ ),
274
+ /* @__PURE__ */ require$$2.jsx(
275
+ "div",
276
+ {
277
+ ref: (el) => setSubmenuRef(label, el),
278
+ className: classNames.combineClassNames(
279
+ classMap.submenu,
280
+ isOpen ? classMap.submenuOpen : ""
281
+ ),
282
+ style: {
283
+ maxHeight: isOpen ? getSubmenuHeight(label) : "0px"
284
+ },
285
+ "data-testid": `${testId}-subMenu`,
286
+ children: renderLinks(children, true)
287
+ }
288
+ )
289
+ ] }) : href ? /* @__PURE__ */ require$$2.jsxs(
290
+ LinkComponent,
291
+ {
292
+ href,
293
+ className: classNames.combineClassNames(
294
+ classMap.link,
295
+ isChild ? classMap.childLink : "",
296
+ isActive ? classMap.active : ""
297
+ ),
298
+ "aria-current": isActive ? "page" : void 0,
299
+ "data-testid": `${testId}-sidebarLink`,
300
+ children: [
301
+ icon && /* @__PURE__ */ require$$2.jsx("span", { className: classMap.icon, children: icon }),
302
+ label
303
+ ]
304
+ }
305
+ ) : /* @__PURE__ */ require$$2.jsxs(
306
+ "span",
307
+ {
308
+ className: classNames.combineClassNames(
309
+ classMap.link,
310
+ isChild ? classMap.childLink : ""
311
+ ),
312
+ "data-testid": `${testId}-sidebarLabel`,
313
+ children: [
314
+ icon && /* @__PURE__ */ require$$2.jsx("span", { className: classMap.icon, children: icon }),
315
+ label
316
+ ]
317
+ }
318
+ )
319
+ },
320
+ label
321
+ );
322
+ })
323
+ }
324
+ );
325
+ return /* @__PURE__ */ require$$2.jsxs(
326
+ "nav",
327
+ {
328
+ className: containerClasses,
329
+ "aria-label": ariaLabel,
330
+ ...rest,
331
+ "data-testid": testId,
332
+ children: [
333
+ /* @__PURE__ */ require$$2.jsx("nav", { className: classMap.nav, children: renderLinks(links) }),
334
+ showFooter && /* @__PURE__ */ require$$2.jsxs("footer", { className: classMap.footer, "data-testid": `${testId}-footer`, children: [
335
+ footerLinks == null ? void 0 : footerLinks.map(({ label, href }) => /* @__PURE__ */ require$$2.jsx(
336
+ LinkComponent,
337
+ {
338
+ href,
339
+ className: classMap.footerLink,
340
+ "data-testid": `${testId}-footerLink`,
341
+ children: label
342
+ },
343
+ label
344
+ )),
345
+ footerVersion2 && /* @__PURE__ */ require$$2.jsx(
346
+ "span",
347
+ {
348
+ className: classMap.footerVersion,
349
+ "data-testid": `${testId}-footerVersion`,
350
+ children: footerVersion2
351
+ }
352
+ )
353
+ ] })
354
+ ]
355
+ }
356
+ );
357
+ };
358
+ SidebarBase.displayName = "SidebarBase";
359
+ const noScroll = "_noScroll_y1c07_91";
360
+ const errorMessage = "_errorMessage_y1c07_92";
361
+ const loadingContainer = "_loadingContainer_y1c07_93";
362
+ const hideScrollbar = "_hideScrollbar_y1c07_85";
363
+ const sr_only = "_sr_only_y1c07_94";
364
+ const wrapper = "_wrapper_y1c07_479";
365
+ const roundNone = "_roundNone_y1c07_490";
366
+ const roundSmall = "_roundSmall_y1c07_493";
367
+ const roundMedium = "_roundMedium_y1c07_496";
368
+ const roundLarge = "_roundLarge_y1c07_499";
369
+ const roundFull = "_roundFull_y1c07_502";
370
+ const shadowNone = "_shadowNone_y1c07_505";
371
+ const shadowLight = "_shadowLight_y1c07_508";
372
+ const shadowMedium = "_shadowMedium_y1c07_511";
373
+ const shadowStrong = "_shadowStrong_y1c07_514";
374
+ const shadowIntense = "_shadowIntense_y1c07_517";
375
+ const primary = "_primary_y1c07_521";
376
+ const active = "_active_y1c07_521";
377
+ const outline = "_outline_y1c07_525";
378
+ const clear = "_clear_y1c07_530";
379
+ const secondary = "_secondary_y1c07_534";
380
+ const tertiary = "_tertiary_y1c07_547";
381
+ const quaternary = "_quaternary_y1c07_560";
382
+ const success = "_success_y1c07_588";
383
+ const error = "_error_y1c07_92";
384
+ const warning = "_warning_y1c07_602";
385
+ const nav = "_nav_y1c07_609";
386
+ const list = "_list_y1c07_614";
387
+ const link = "_link_y1c07_620";
388
+ const childLink = "_childLink_y1c07_650";
389
+ const chevron = "_chevron_y1c07_654";
390
+ const chevronOpen = "_chevronOpen_y1c07_658";
391
+ const submenu = "_submenu_y1c07_662";
392
+ const childList = "_childList_y1c07_668";
393
+ const footer = "_footer_y1c07_673";
394
+ const footerLink = "_footerLink_y1c07_685";
395
+ const footerVersion = "_footerVersion_y1c07_693";
396
+ const spin = "_spin_y1c07_1";
397
+ const pulse = "_pulse_y1c07_1";
398
+ const styles = {
399
+ noScroll,
400
+ errorMessage,
401
+ loadingContainer,
402
+ hideScrollbar,
403
+ sr_only,
404
+ wrapper,
405
+ roundNone,
406
+ roundSmall,
407
+ roundMedium,
408
+ roundLarge,
409
+ roundFull,
410
+ shadowNone,
411
+ shadowLight,
412
+ shadowMedium,
413
+ shadowStrong,
414
+ shadowIntense,
415
+ primary,
416
+ active,
417
+ outline,
418
+ clear,
419
+ secondary,
420
+ tertiary,
421
+ quaternary,
422
+ success,
423
+ error,
424
+ warning,
425
+ nav,
426
+ list,
427
+ link,
428
+ childLink,
429
+ chevron,
430
+ chevronOpen,
431
+ submenu,
432
+ childList,
433
+ footer,
434
+ footerLink,
435
+ footerVersion,
436
+ "fade-in": "_fade-in_y1c07_1",
437
+ "slide-up": "_slide-up_y1c07_1",
438
+ "spin-3d": "_spin-3d_y1c07_1",
439
+ spin,
440
+ pulse,
441
+ "fade-in-up": "_fade-in-up_y1c07_1",
442
+ "progress-grow": "_progress-grow_y1c07_1",
443
+ "indeterminate-move": "_indeterminate-move_y1c07_1",
444
+ "skeleton-loading": "_skeleton-loading_y1c07_1"
445
+ };
446
+ const Sidebar = ({ links, ...rest }) => {
447
+ const currentPath = NavBar.navigation.usePathname();
448
+ const { classMap, currentPath: _ignored, ...safeRest } = rest;
449
+ return /* @__PURE__ */ require$$2.jsx(
450
+ SidebarBase,
451
+ {
452
+ links,
453
+ classMap: styles,
454
+ currentPath,
455
+ LinkComponent: link$1.Link,
456
+ ...safeRest
457
+ },
458
+ currentPath
459
+ );
460
+ };
186
461
  function ClientFooterWrapper(props) {
187
462
  return /* @__PURE__ */ require$$2.jsx(Footer.Footer, { ...props });
188
463
  }
@@ -239,4 +514,5 @@ exports.Card = Card.Card;
239
514
  exports.Avatar = Avatar.Avatar;
240
515
  exports.ChipGroup = ChipGroup;
241
516
  exports.ClientFooterWrapper = ClientFooterWrapper;
517
+ exports.Sidebar = Sidebar;
242
518
  //# sourceMappingURL=index.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","sources":["../../src/components/Chip/ChipGroup/ChipGroupBase.tsx","../../src/components/Chip/ChipGroup/next/ChipGroup.tsx","../../src/components/Footer/next/ClientFooterWrapper.tsx"],"sourcesContent":["import {\r\n forwardRef,\r\n useCallback,\r\n useEffect,\r\n useImperativeHandle,\r\n useState,\r\n} from \"react\";\r\nimport type { ChipGroupProps, ChipGroupRef } from \"./ChipGroup.types\";\r\nimport type { ChipProps } from \"../Chip.types\";\r\nimport { v4 as uuidv4 } from \"uuid\";\r\nimport { combineClassNames } from \"@/utils/classNames\";\r\n\r\nexport interface ChipGroupBaseProps extends ChipGroupProps {\r\n ChipComponent: React.ElementType;\r\n classMap: Record<string, string>;\r\n}\r\n\r\nconst ChipGroupBase = forwardRef<ChipGroupRef, ChipGroupBaseProps>(\r\n (\r\n {\r\n chips,\r\n onRemove,\r\n position = \"topCenter\",\r\n size = \"medium\",\r\n className = \"\",\r\n ChipComponent,\r\n classMap,\r\n },\r\n ref\r\n ) => {\r\n const [visibleChips, setVisibleChips] = useState<ChipProps[]>([]);\r\n\r\n useEffect(() => {\r\n const initialized = chips.map((chip) => ({\r\n ...chip,\r\n id: chip.id || uuidv4(),\r\n }));\r\n setVisibleChips(initialized);\r\n }, [chips]);\r\n\r\n const handleClose = useCallback(\r\n (id: string) => {\r\n setVisibleChips((prev) => prev.filter((c) => c.id !== id));\r\n onRemove?.(id);\r\n },\r\n [onRemove]\r\n );\r\n\r\n useImperativeHandle(ref, () => ({\r\n closeAllChips: () => {\r\n visibleChips.forEach((chip) => handleClose(chip.id!));\r\n },\r\n }));\r\n\r\n const containerClassName = [\r\n classMap.container,\r\n classMap[position],\r\n className,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \");\r\n\r\n return (\r\n <div\r\n className={containerClassName}\r\n role=\"region\"\r\n aria-label=\"Notifications\"\r\n aria-live=\"polite\"\r\n data-testid=\"chip-group\"\r\n >\r\n <ul role=\"list\" className={classMap.list}>\r\n {visibleChips.map((chip, index) => {\r\n const chipPosition = chip.position || position;\r\n const chipPositionClass = classMap[chipPosition];\r\n\r\n return (\r\n <li key={chip.id} role=\"listitem\">\r\n <ChipComponent\r\n id={chip.id}\r\n message={chip.message}\r\n icon={chip.icon}\r\n theme={chip.theme}\r\n state={chip.state}\r\n size={chip.size || size}\r\n rounding={chip.rounding}\r\n shadow={chip.shadow}\r\n visible={true}\r\n onClose={() => handleClose(chip.id!)}\r\n autoClose={chip.autoClose}\r\n duration={chip.duration}\r\n position={chipPosition}\r\n usePortal={false}\r\n stackIndex={index}\r\n className={combineClassNames(\r\n classMap.chip,\r\n chip.className,\r\n chipPositionClass\r\n )}\r\n data-testid={chip[\"data-testid\"]}\r\n />\r\n </li>\r\n );\r\n })}\r\n </ul>\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nChipGroupBase.displayName = \"ChipGroupBase\";\r\nexport default ChipGroupBase;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport ChipGroupBase from \"../ChipGroupBase\";\r\nimport { Chip } from \"../../../../index.next\";\r\nimport styles from \"./ChipGroup.module.scss\";\r\nimport { ChipGroupProps, ChipGroupRef } from \"../ChipGroup.types\";\r\n\r\nconst ChipGroup = React.forwardRef<ChipGroupRef, ChipGroupProps>(\r\n (props, ref) => (\r\n <ChipGroupBase\r\n {...props}\r\n ref={ref}\r\n ChipComponent={Chip}\r\n classMap={styles}\r\n />\r\n )\r\n);\r\n\r\nexport default ChipGroup;\r\n","/**\r\n * ---------------------------------------------------------------------\r\n * ClientFooterWrapper.tsx\r\n * ---------------------------------------------------------------------\r\n * A client-side wrapper for the `<Footer>` component to ensure\r\n * it renders only on the client (required when using dynamic content\r\n * or browser-specific APIs within the Footer).\r\n *\r\n * This is useful in Next.js when a server component cannot render\r\n * a client-only dependency.\r\n *\r\n * Props are directly passed through from `FooterProps`.\r\n *\r\n * Usage:\r\n * ```tsx\r\n * <ClientFooterWrapper\r\n * copyright=\"© 2025 Davin Chiupka\"\r\n * showThemeSelect\r\n * />\r\n * ```\r\n */\r\n\r\n\"use client\";\r\n\r\nimport Footer from \"./Footer\";\r\nimport type { FooterProps } from \"../Footer.types\";\r\n\r\nexport default function ClientFooterWrapper(props: FooterProps) {\r\n return <Footer {...props} />;\r\n}\r\n"],"names":["forwardRef","useState","useEffect","chip","uuidv4","useCallback","useImperativeHandle","jsx","combineClassNames","Chip","Footer"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiBA,MAAM,gBAAgBA,MAAAA;AAAAA,EACpB,CACE;AAAA,IACE;AAAA,IACA;AAAA,IACA,WAAW;AAAA,IACX,OAAO;AAAA,IACP,YAAY;AAAA,IACZ;AAAA,IACA;AAAA,EAAA,GAEF,QACG;AACH,UAAM,CAAC,cAAc,eAAe,IAAIC,MAAAA,SAAsB,CAAA,CAAE;AAEhEC,UAAAA,UAAU,MAAM;AACd,YAAM,cAAc,MAAM,IAAI,CAACC,WAAU;AAAA,QACvC,GAAGA;AAAA,QACH,IAAIA,MAAK,MAAMC,KAAAA,GAAA;AAAA,MAAO,EACtB;AACF,sBAAgB,WAAW;AAAA,IAC7B,GAAG,CAAC,KAAK,CAAC;AAEV,UAAM,cAAcC,MAAAA;AAAAA,MAClB,CAAC,OAAe;AACd,wBAAgB,CAAC,SAAS,KAAK,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;AACzD,6CAAW;AAAA,MACb;AAAA,MACA,CAAC,QAAQ;AAAA,IAAA;AAGXC,UAAAA,oBAAoB,KAAK,OAAO;AAAA,MAC9B,eAAe,MAAM;AACnB,qBAAa,QAAQ,CAACH,UAAS,YAAYA,MAAK,EAAG,CAAC;AAAA,MACtD;AAAA,IAAA,EACA;AAEF,UAAM,qBAAqB;AAAA,MACzB,SAAS;AAAA,MACT,SAAS,QAAQ;AAAA,MACjB;AAAA,IAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG;AAEX,WACEI,2BAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAW;AAAA,QACX,MAAK;AAAA,QACL,cAAW;AAAA,QACX,aAAU;AAAA,QACV,eAAY;AAAA,QAEZ,UAAAA,2BAAAA,IAAC,MAAA,EAAG,MAAK,QAAO,WAAW,SAAS,MACjC,UAAA,aAAa,IAAI,CAACJ,OAAM,UAAU;AACjC,gBAAM,eAAeA,MAAK,YAAY;AACtC,gBAAM,oBAAoB,SAAS,YAAY;AAE/C,iBACEI,2BAAAA,IAAC,MAAA,EAAiB,MAAK,YACrB,UAAAA,2BAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACC,IAAIJ,MAAK;AAAA,cACT,SAASA,MAAK;AAAA,cACd,MAAMA,MAAK;AAAA,cACX,OAAOA,MAAK;AAAA,cACZ,OAAOA,MAAK;AAAA,cACZ,MAAMA,MAAK,QAAQ;AAAA,cACnB,UAAUA,MAAK;AAAA,cACf,QAAQA,MAAK;AAAA,cACb,SAAS;AAAA,cACT,SAAS,MAAM,YAAYA,MAAK,EAAG;AAAA,cACnC,WAAWA,MAAK;AAAA,cAChB,UAAUA,MAAK;AAAA,cACf,UAAU;AAAA,cACV,WAAW;AAAA,cACX,YAAY;AAAA,cACZ,WAAWK,WAAAA;AAAAA,gBACT,SAAS;AAAA,gBACTL,MAAK;AAAA,gBACL;AAAA,cAAA;AAAA,cAEF,eAAaA,MAAK,aAAa;AAAA,YAAA;AAAA,UAAA,EACjC,GAvBOA,MAAK,EAwBd;AAAA,QAEJ,CAAC,EAAA,CACH;AAAA,MAAA;AAAA,IAAA;AAAA,EAGN;AACF;AAEA,cAAc,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACrG5B,MAAM,YAAY,MAAM;AAAA,EACtB,CAAC,OAAO,QACNI,2BAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACE,GAAG;AAAA,MACJ;AAAA,MACA,eAAeE,KAAAA;AAAAA,MACf,UAAU;AAAA,IAAA;AAAA,EAAA;AAGhB;ACUA,SAAwB,oBAAoB,OAAoB;AAC9D,SAAOF,+BAACG,OAAAA,QAAA,EAAQ,GAAG,MAAA,CAAO;AAC5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.cjs.js","sources":["../../src/components/Chip/ChipGroup/ChipGroupBase.tsx","../../src/components/Chip/ChipGroup/next/ChipGroup.tsx","../../src/components/Sidebar/SidebarBase.tsx","../../src/components/Sidebar/next/Sidebar.tsx","../../src/components/Footer/next/ClientFooterWrapper.tsx"],"sourcesContent":["import {\r\n forwardRef,\r\n useCallback,\r\n useEffect,\r\n useImperativeHandle,\r\n useState,\r\n} from \"react\";\r\nimport type { ChipGroupProps, ChipGroupRef } from \"./ChipGroup.types\";\r\nimport type { ChipProps } from \"../Chip.types\";\r\nimport { v4 as uuidv4 } from \"uuid\";\r\nimport { combineClassNames } from \"@/utils/classNames\";\r\n\r\nexport interface ChipGroupBaseProps extends ChipGroupProps {\r\n ChipComponent: React.ElementType;\r\n classMap: Record<string, string>;\r\n}\r\n\r\nconst ChipGroupBase = forwardRef<ChipGroupRef, ChipGroupBaseProps>(\r\n (\r\n {\r\n chips,\r\n onRemove,\r\n position = \"topCenter\",\r\n size = \"medium\",\r\n className = \"\",\r\n ChipComponent,\r\n classMap,\r\n },\r\n ref\r\n ) => {\r\n const [visibleChips, setVisibleChips] = useState<ChipProps[]>([]);\r\n\r\n useEffect(() => {\r\n const initialized = chips.map((chip) => ({\r\n ...chip,\r\n id: chip.id || uuidv4(),\r\n }));\r\n setVisibleChips(initialized);\r\n }, [chips]);\r\n\r\n const handleClose = useCallback(\r\n (id: string) => {\r\n setVisibleChips((prev) => prev.filter((c) => c.id !== id));\r\n onRemove?.(id);\r\n },\r\n [onRemove]\r\n );\r\n\r\n useImperativeHandle(ref, () => ({\r\n closeAllChips: () => {\r\n visibleChips.forEach((chip) => handleClose(chip.id!));\r\n },\r\n }));\r\n\r\n const containerClassName = [\r\n classMap.container,\r\n classMap[position],\r\n className,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \");\r\n\r\n return (\r\n <div\r\n className={containerClassName}\r\n role=\"region\"\r\n aria-label=\"Notifications\"\r\n aria-live=\"polite\"\r\n data-testid=\"chip-group\"\r\n >\r\n <ul role=\"list\" className={classMap.list}>\r\n {visibleChips.map((chip, index) => {\r\n const chipPosition = chip.position || position;\r\n const chipPositionClass = classMap[chipPosition];\r\n\r\n return (\r\n <li key={chip.id} role=\"listitem\">\r\n <ChipComponent\r\n id={chip.id}\r\n message={chip.message}\r\n icon={chip.icon}\r\n theme={chip.theme}\r\n state={chip.state}\r\n size={chip.size || size}\r\n rounding={chip.rounding}\r\n shadow={chip.shadow}\r\n visible={true}\r\n onClose={() => handleClose(chip.id!)}\r\n autoClose={chip.autoClose}\r\n duration={chip.duration}\r\n position={chipPosition}\r\n usePortal={false}\r\n stackIndex={index}\r\n className={combineClassNames(\r\n classMap.chip,\r\n chip.className,\r\n chipPositionClass\r\n )}\r\n data-testid={chip[\"data-testid\"]}\r\n />\r\n </li>\r\n );\r\n })}\r\n </ul>\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nChipGroupBase.displayName = \"ChipGroupBase\";\r\nexport default ChipGroupBase;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport ChipGroupBase from \"../ChipGroupBase\";\r\nimport { Chip } from \"../../../../index.next\";\r\nimport styles from \"./ChipGroup.module.scss\";\r\nimport { ChipGroupProps, ChipGroupRef } from \"../ChipGroup.types\";\r\n\r\nconst ChipGroup = React.forwardRef<ChipGroupRef, ChipGroupProps>(\r\n (props, ref) => (\r\n <ChipGroupBase\r\n {...props}\r\n ref={ref}\r\n ChipComponent={Chip}\r\n classMap={styles}\r\n />\r\n )\r\n);\r\n\r\nexport default ChipGroup;\r\n","import React, { useState, useMemo, useRef, useEffect } from \"react\";\nimport { SidebarProps } from \"./Sidebar.types\";\nimport { combineClassNames } from \"@/utils/classNames\";\nimport {\n getDefaultRounding,\n getDefaultShadow,\n getDefaultTheme,\n} from \"@/config/boreal-style-config\";\nimport { capitalize } from \"@/utils/capitalize\";\nimport { ChevronDownIcon } from \"@/Icons\";\n\nconst SidebarBase: React.FC<SidebarProps> = ({\n links,\n classMap,\n currentPath,\n LinkComponent = \"a\",\n theme = getDefaultTheme(),\n rounding = getDefaultRounding(),\n shadow = getDefaultShadow(),\n state = \"\",\n showFooter = false,\n footerLinks,\n footerVersion,\n outline = false,\n className = \"\",\n \"data-testid\": testId = \"sidebar\",\n ariaLabel = \"Sidebar navigation\",\n ...rest\n}) => {\n const [openItems, setOpenItems] = useState<Record<string, boolean>>({});\n\n const toggleItem = (key: string) => {\n setOpenItems((prev) => ({ ...prev, [key]: !prev[key] }));\n };\n\n const submenuRefs = useRef<Record<string, HTMLDivElement | null>>({});\n\n const setSubmenuRef = (key: string, el: HTMLDivElement | null) => {\n submenuRefs.current[key] = el;\n };\n\n const getSubmenuHeight = (key: string) => {\n const el = submenuRefs.current[key];\n return el ? `${el.scrollHeight}px` : \"0px\";\n };\n\n const containerClasses = useMemo(\n () =>\n combineClassNames(\n classMap.wrapper,\n className,\n classMap[theme],\n classMap[state],\n shadow && classMap[`shadow${capitalize(shadow)}`],\n rounding && classMap[`round${capitalize(rounding)}`],\n outline ? classMap.outline : \"\"\n ),\n [className, theme, state, outline, rounding, shadow]\n );\n\n const renderLinks = (items: typeof links, isChild = false) => (\n <ul\n className={combineClassNames(\n classMap.list,\n isChild ? classMap.childList : \"\"\n )}\n data-testid={`${testId}-list`}\n >\n {items.map(({ label, href, children, icon }) => {\n const isActive = href && currentPath === href;\n const isOpen = openItems[label] || false;\n\n return (\n <li\n key={label}\n className={classMap.item}\n data-testid={`${testId}-listItems`}\n >\n {children && children.length > 0 ? (\n <>\n <button\n type=\"button\"\n className={combineClassNames(\n classMap.link,\n isOpen ? classMap.active : \"\"\n )}\n onClick={() => toggleItem(label)}\n aria-expanded={isOpen}\n data-testid={`${testId}-exapndItemButton`}\n >\n {icon && <span className={classMap.icon}>{icon}</span>}\n <span data-testid={`${testId}-exapndItemLabel`}>{label}</span>\n <ChevronDownIcon\n className={combineClassNames(\n classMap.chevron,\n isOpen ? classMap.chevronOpen : \"\"\n )}\n data-testid={`${testId}-exapndIcon`}\n />\n </button>\n <div\n ref={(el) => setSubmenuRef(label, el)}\n className={combineClassNames(\n classMap.submenu,\n isOpen ? classMap.submenuOpen : \"\"\n )}\n style={{\n maxHeight: isOpen ? getSubmenuHeight(label) : \"0px\",\n }}\n data-testid={`${testId}-subMenu`}\n >\n {renderLinks(children, true)}\n </div>\n </>\n ) : href ? (\n <LinkComponent\n href={href}\n className={combineClassNames(\n classMap.link,\n isChild ? classMap.childLink : \"\",\n isActive ? classMap.active : \"\"\n )}\n aria-current={isActive ? \"page\" : undefined}\n data-testid={`${testId}-sidebarLink`}\n >\n {icon && <span className={classMap.icon}>{icon}</span>}\n {label}\n </LinkComponent>\n ) : (\n <span\n className={combineClassNames(\n classMap.link,\n isChild ? classMap.childLink : \"\"\n )}\n data-testid={`${testId}-sidebarLabel`}\n >\n {icon && <span className={classMap.icon}>{icon}</span>}\n {label}\n </span>\n )}\n </li>\n );\n })}\n </ul>\n );\n\n return (\n <nav\n className={containerClasses}\n aria-label={ariaLabel}\n {...rest}\n data-testid={testId}\n >\n <nav className={classMap.nav}>{renderLinks(links)}</nav>\n {showFooter && (\n <footer className={classMap.footer} data-testid={`${testId}-footer`}>\n {footerLinks?.map(({ label, href }) => (\n <LinkComponent\n key={label}\n href={href}\n className={classMap.footerLink}\n data-testid={`${testId}-footerLink`}\n >\n {label}\n </LinkComponent>\n ))}\n\n {footerVersion && (\n <span\n className={classMap.footerVersion}\n data-testid={`${testId}-footerVersion`}\n >\n {footerVersion}\n </span>\n )}\n </footer>\n )}\n </nav>\n );\n};\n\nSidebarBase.displayName = \"SidebarBase\";\n\nexport default SidebarBase;\n","\"use client\";\n\nimport React from \"react\";\nimport Link from \"next/link\";\nimport { usePathname } from \"next/navigation\";\nimport SidebarBase from \"../SidebarBase\";\nimport styles from \"./Sidebar.module.scss\";\nimport { SidebarProps } from \"../Sidebar.types\";\n\nconst Sidebar: React.FC<SidebarProps> = ({ links, ...rest }) => {\n const currentPath = usePathname();\n\n const { classMap, currentPath: _ignored, ...safeRest } = rest;\n\n return (\n <SidebarBase\n links={links}\n classMap={styles}\n currentPath={currentPath}\n LinkComponent={Link}\n key={currentPath}\n {...safeRest}\n />\n );\n};\n\nexport default Sidebar;\n","/**\r\n * ---------------------------------------------------------------------\r\n * ClientFooterWrapper.tsx\r\n * ---------------------------------------------------------------------\r\n * A client-side wrapper for the `<Footer>` component to ensure\r\n * it renders only on the client (required when using dynamic content\r\n * or browser-specific APIs within the Footer).\r\n *\r\n * This is useful in Next.js when a server component cannot render\r\n * a client-only dependency.\r\n *\r\n * Props are directly passed through from `FooterProps`.\r\n *\r\n * Usage:\r\n * ```tsx\r\n * <ClientFooterWrapper\r\n * copyright=\"© 2025 Davin Chiupka\"\r\n * showThemeSelect\r\n * />\r\n * ```\r\n */\r\n\r\n\"use client\";\r\n\r\nimport Footer from \"./Footer\";\r\nimport type { FooterProps } from \"../Footer.types\";\r\n\r\nexport default function ClientFooterWrapper(props: FooterProps) {\r\n return <Footer {...props} />;\r\n}\r\n"],"names":["forwardRef","useState","useEffect","chip","uuidv4","useCallback","useImperativeHandle","jsx","combineClassNames","Chip","styles","getDefaultTheme","getDefaultRounding","getDefaultShadow","footerVersion","outline","useRef","useMemo","capitalize","jsxs","Fragment","ChevronDownIcon","usePathname","Link","Footer"],"mappings":"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"}