boreal-ui 0.0.11 → 0.0.12

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 (75) hide show
  1. package/dist/core/CheveronDownIcon-B2codmaq.cjs +26 -0
  2. package/dist/core/CheveronDownIcon-B2codmaq.cjs.map +1 -0
  3. package/dist/core/CheveronDownIcon-Cn9jj-ku.js +27 -0
  4. package/dist/core/CheveronDownIcon-Cn9jj-ku.js.map +1 -0
  5. package/dist/core/{Footer-D_-eBUqK.js → Footer-7ixaMvFc.js} +2 -2
  6. package/dist/core/{Footer-D_-eBUqK.js.map → Footer-7ixaMvFc.js.map} +1 -1
  7. package/dist/core/{Footer-DxYjXCde.cjs → Footer-Dc_CuIC1.cjs} +2 -2
  8. package/dist/core/{Footer-DxYjXCde.cjs.map → Footer-Dc_CuIC1.cjs.map} +1 -1
  9. package/dist/core/Footer.cjs.js +1 -1
  10. package/dist/core/Footer.js +1 -1
  11. package/dist/core/{Select-DhUEQ4W_.cjs → Select-CitauzQm.cjs} +3 -25
  12. package/dist/core/Select-CitauzQm.cjs.map +1 -0
  13. package/dist/core/{Select-BDwB-XRV.js → Select-_12yQ-yj.js} +3 -25
  14. package/dist/core/Select-_12yQ-yj.js.map +1 -0
  15. package/dist/core/Select.cjs.js +1 -1
  16. package/dist/core/Select.js +1 -1
  17. package/dist/core/Sidebar-CqTJJULG.cjs +216 -0
  18. package/dist/core/Sidebar-CqTJJULG.cjs.map +1 -0
  19. package/dist/core/Sidebar-z0mG5nn_.js +217 -0
  20. package/dist/core/Sidebar-z0mG5nn_.js.map +1 -0
  21. package/dist/core/Sidebar.cjs.js +4 -0
  22. package/dist/core/Sidebar.cjs.js.map +1 -0
  23. package/dist/core/Sidebar.js +5 -0
  24. package/dist/core/Sidebar.js.map +1 -0
  25. package/dist/core/index.cjs.js +4 -211
  26. package/dist/core/index.cjs.js.map +1 -1
  27. package/dist/core/index.js +6 -215
  28. package/dist/core/index.js.map +1 -1
  29. package/dist/core/style.css +2454 -2454
  30. package/dist/next/CheveronDownIcon-Cn9jj-ku.js +27 -0
  31. package/dist/next/CheveronDownIcon-Cn9jj-ku.js.map +1 -0
  32. package/dist/next/CheveronDownIcon-CyoOZUNY.cjs +26 -0
  33. package/dist/next/CheveronDownIcon-CyoOZUNY.cjs.map +1 -0
  34. package/dist/next/{Footer-C6gSCcdC.cjs → Footer-J0Tb7-n4.cjs} +2 -2
  35. package/dist/next/{Footer-C6gSCcdC.cjs.map → Footer-J0Tb7-n4.cjs.map} +1 -1
  36. package/dist/next/{Footer-BPjfubyG.js → Footer-bb_8EH_R.js} +2 -2
  37. package/dist/next/{Footer-BPjfubyG.js.map → Footer-bb_8EH_R.js.map} +1 -1
  38. package/dist/next/Footer.cjs.js +1 -1
  39. package/dist/next/Footer.js +1 -1
  40. package/dist/next/NavBar-CRbRBzGq.js +163 -0
  41. package/dist/next/NavBar-CRbRBzGq.js.map +1 -0
  42. package/dist/next/NavBar-JPkuek76.cjs +162 -0
  43. package/dist/next/NavBar-JPkuek76.cjs.map +1 -0
  44. package/dist/next/NavBar.cjs.js +1 -1
  45. package/dist/next/NavBar.js +1 -1
  46. package/dist/next/{Select-BKprqV3i.cjs → Select-Bln5-seQ.cjs} +3 -25
  47. package/dist/next/Select-Bln5-seQ.cjs.map +1 -0
  48. package/dist/next/{Select-_C8mTVb1.js → Select-CdWyrGrV.js} +3 -25
  49. package/dist/next/Select-CdWyrGrV.js.map +1 -0
  50. package/dist/next/Select.cjs.js +1 -1
  51. package/dist/next/Select.js +1 -1
  52. package/dist/next/Sidebar-DBmaTOMW.js +285 -0
  53. package/dist/next/Sidebar-DBmaTOMW.js.map +1 -0
  54. package/dist/next/Sidebar-Rl3o8_ya.cjs +284 -0
  55. package/dist/next/Sidebar-Rl3o8_ya.cjs.map +1 -0
  56. package/dist/next/Sidebar.cjs.js +4 -0
  57. package/dist/next/Sidebar.cjs.js.map +1 -0
  58. package/dist/next/Sidebar.js +5 -0
  59. package/dist/next/Sidebar.js.map +1 -0
  60. package/dist/next/index.cjs.js +23 -297
  61. package/dist/next/index.cjs.js.map +1 -1
  62. package/dist/next/index.js +26 -303
  63. package/dist/next/index.js.map +1 -1
  64. package/dist/next/{NavBar-CLfsYv5E.js → navigation-DTwYCgCL.js} +3 -160
  65. package/dist/next/navigation-DTwYCgCL.js.map +1 -0
  66. package/dist/next/{NavBar-COPlmHzy.cjs → navigation-m012syo9.cjs} +1 -158
  67. package/dist/next/navigation-m012syo9.cjs.map +1 -0
  68. package/dist/next/style.css +2642 -2642
  69. package/package.json +1 -1
  70. package/dist/core/Select-BDwB-XRV.js.map +0 -1
  71. package/dist/core/Select-DhUEQ4W_.cjs.map +0 -1
  72. package/dist/next/NavBar-CLfsYv5E.js.map +0 -1
  73. package/dist/next/NavBar-COPlmHzy.cjs.map +0 -1
  74. package/dist/next/Select-BKprqV3i.cjs.map +0 -1
  75. package/dist/next/Select-_C8mTVb1.js.map +0 -1
@@ -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-BKprqV3i.cjs");
13
- const Footer = require("./Footer-C6gSCcdC.cjs");
12
+ const Select = require("./Select-Bln5-seQ.cjs");
13
+ const Footer = require("./Footer-J0Tb7-n4.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-COPlmHzy.cjs");
38
+ const NavBar = require("./NavBar-JPkuek76.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,8 +51,7 @@ 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
+ const Sidebar = require("./Sidebar-Rl3o8_ya.cjs");
56
55
  const Card = require("./Card-BCYMEFyT.cjs");
57
56
  const Avatar = require("./Avatar-DjuHvrMV.cjs");
58
57
  const ChipGroupBase = React.forwardRef(
@@ -133,11 +132,11 @@ const ChipGroupBase = React.forwardRef(
133
132
  }
134
133
  );
135
134
  ChipGroupBase.displayName = "ChipGroupBase";
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";
135
+ const noScroll = "_noScroll_vcv6u_91";
136
+ const errorMessage = "_errorMessage_vcv6u_92";
137
+ const loadingContainer = "_loadingContainer_vcv6u_93";
138
+ const hideScrollbar = "_hideScrollbar_vcv6u_85";
139
+ const sr_only = "_sr_only_vcv6u_94";
141
140
  const container = "_container_vcv6u_479";
142
141
  const topLeft = "_topLeft_vcv6u_488";
143
142
  const topCenter = "_topCenter_vcv6u_493";
@@ -145,16 +144,16 @@ const topRight = "_topRight_vcv6u_499";
145
144
  const bottomLeft = "_bottomLeft_vcv6u_504";
146
145
  const bottomCenter = "_bottomCenter_vcv6u_509";
147
146
  const bottomRight = "_bottomRight_vcv6u_515";
148
- const list$1 = "_list_vcv6u_521";
147
+ const list = "_list_vcv6u_521";
149
148
  const chip = "_chip_vcv6u_530";
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,
149
+ const spin = "_spin_vcv6u_1";
150
+ const pulse = "_pulse_vcv6u_1";
151
+ const styles = {
152
+ noScroll,
153
+ errorMessage,
154
+ loadingContainer,
155
+ hideScrollbar,
156
+ sr_only,
158
157
  container,
159
158
  topLeft,
160
159
  topCenter,
@@ -162,13 +161,13 @@ const styles$1 = {
162
161
  bottomLeft,
163
162
  bottomCenter,
164
163
  bottomRight,
165
- list: list$1,
164
+ list,
166
165
  chip,
167
166
  "fade-in": "_fade-in_vcv6u_1",
168
167
  "slide-up": "_slide-up_vcv6u_1",
169
168
  "spin-3d": "_spin-3d_vcv6u_1",
170
- spin: spin$1,
171
- pulse: pulse$1,
169
+ spin,
170
+ pulse,
172
171
  "fade-in-up": "_fade-in-up_vcv6u_1",
173
172
  "progress-grow": "_progress-grow_vcv6u_1",
174
173
  "indeterminate-move": "_indeterminate-move_vcv6u_1",
@@ -181,283 +180,10 @@ const ChipGroup = React.forwardRef(
181
180
  ...props,
182
181
  ref,
183
182
  ChipComponent: Chip.Chip,
184
- classMap: styles$1
183
+ classMap: styles
185
184
  }
186
185
  )
187
186
  );
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
- };
461
187
  function ClientFooterWrapper(props) {
462
188
  return /* @__PURE__ */ require$$2.jsx(Footer.Footer, { ...props });
463
189
  }
@@ -510,9 +236,9 @@ exports.MetricBox = MetricBox.MetricBox;
510
236
  exports.EmptyState = EmptyState.EmptyState;
511
237
  exports.CommandPalette = CommandPalette.CommandPalette;
512
238
  exports.NotificationCenter = NotificationCenter.NotificationCenter;
239
+ exports.Sidebar = Sidebar.Sidebar;
513
240
  exports.Card = Card.Card;
514
241
  exports.Avatar = Avatar.Avatar;
515
242
  exports.ChipGroup = ChipGroup;
516
243
  exports.ClientFooterWrapper = ClientFooterWrapper;
517
- exports.Sidebar = Sidebar;
518
244
  //# 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/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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"}
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":"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"}