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,15 +1,17 @@
1
1
  import { a, T } from "./ThemeContext-Bo0vLczy.js";
2
2
  import { r } from "./registerColorSheme-BPX0H7hl.js";
3
3
  import { colorSchemes } from "./colorSchemes.js";
4
+ import { a as getDefaultRounding, b as getDefaultShadow, d as getDefaultTheme } from "./boreal-style-config-BILmxkZG.js";
4
5
  import { s } from "./boreal-style-config-BILmxkZG.js";
5
6
  import { B } from "./Button-CbX-VlK_.js";
6
7
  import { I } from "./IconButton-DFrFh0kg.js";
7
8
  import { S } from "./STT-Br81yPXp.js";
8
9
  import { T as T2 } from "./TextInput-DkNxrV4X.js";
9
10
  import { T as T3 } from "./TextArea-CwR4vrML.js";
10
- import { S as S2 } from "./Select-DwWTQcCU.js";
11
- import { F as Footer } from "./Footer-CQAWg2tl.js";
12
- import { U } from "./Footer-CQAWg2tl.js";
11
+ import { C as ChevronDownIcon } from "./Select-_C8mTVb1.js";
12
+ import { S as S2 } from "./Select-_C8mTVb1.js";
13
+ import { F as Footer } from "./Footer-BPjfubyG.js";
14
+ import { U } from "./Footer-BPjfubyG.js";
13
15
  import { F } from "./FileUpload-DQhKhtgc.js";
14
16
  import { T as T4 } from "./Taginput-CdYMgcYY.js";
15
17
  import { R } from "./RadioButton-BKS65jm9.js";
@@ -21,8 +23,8 @@ import { D } from "./DataTable-D5ffcx-L.js";
21
23
  import { D as D2 } from "./DateTimePicker-C2-or1uL.js";
22
24
  import { M } from "./MarkdownRenderer-CxJOetSp.js";
23
25
  import { C as Chip } from "./Chip-DtHYUkJ4.js";
24
- import { jsx } from "react/jsx-runtime";
25
- import React, { forwardRef, useState, useEffect, useCallback, useImperativeHandle } from "react";
26
+ import { jsx, jsxs, Fragment } from "react/jsx-runtime";
27
+ import React, { forwardRef, useState, useEffect, useCallback, useImperativeHandle, useRef, useMemo } from "react";
26
28
  import { v4 } from "uuid";
27
29
  import { c as combineClassNames } from "./classNames-AS8QjFq7.js";
28
30
  import { B as B2 } from "./Badge-WWxkzKOl.js";
@@ -34,7 +36,8 @@ import { S as S5 } from "./Spinner-BxvU43sx.js";
34
36
  import { T as T5 } from "./Tooltip-G3P0OyTP.js";
35
37
  import { M as M2 } from "./MessagePopup-ClfrvxKq.js";
36
38
  import { P as P2 } from "./PopOver-pllmYvp6.js";
37
- import { N } from "./NavBar-DzRWv8W0.js";
39
+ import { n as navigation } from "./NavBar-CLfsYv5E.js";
40
+ import { N } from "./NavBar-CLfsYv5E.js";
38
41
  import { B as B3 } from "./Breadcrumbs-liNC5ZzY.js";
39
42
  import { T as T6 } from "./Tabs-CNU0A_YY.js";
40
43
  import { S as S6 } from "./Stepper-5FojeYPE.js";
@@ -50,6 +53,8 @@ import { M as M4 } from "./MetricBox-rxFYolH_.js";
50
53
  import { E } from "./EmptyState-CSEhZvTp.js";
51
54
  import { C as C4 } from "./CommandPalette-CEZwvLuu.js";
52
55
  import { N as N2 } from "./NotificationCenter-BCXpVjHd.js";
56
+ import { L as Link } from "./link-Bik5xH00.js";
57
+ import { c as capitalize } from "./capitalize-C0TSQSPh.js";
53
58
  import { C as C5 } from "./Card-DhdZiqdl.js";
54
59
  import { A as A2 } from "./Avatar-B0vflpuy.js";
55
60
  const ChipGroupBase = forwardRef(
@@ -130,11 +135,11 @@ const ChipGroupBase = forwardRef(
130
135
  }
131
136
  );
132
137
  ChipGroupBase.displayName = "ChipGroupBase";
133
- const noScroll = "_noScroll_vcv6u_91";
134
- const errorMessage = "_errorMessage_vcv6u_92";
135
- const loadingContainer = "_loadingContainer_vcv6u_93";
136
- const hideScrollbar = "_hideScrollbar_vcv6u_85";
137
- const sr_only = "_sr_only_vcv6u_94";
138
+ const noScroll$1 = "_noScroll_vcv6u_91";
139
+ const errorMessage$1 = "_errorMessage_vcv6u_92";
140
+ const loadingContainer$1 = "_loadingContainer_vcv6u_93";
141
+ const hideScrollbar$1 = "_hideScrollbar_vcv6u_85";
142
+ const sr_only$1 = "_sr_only_vcv6u_94";
138
143
  const container = "_container_vcv6u_479";
139
144
  const topLeft = "_topLeft_vcv6u_488";
140
145
  const topCenter = "_topCenter_vcv6u_493";
@@ -142,16 +147,16 @@ const topRight = "_topRight_vcv6u_499";
142
147
  const bottomLeft = "_bottomLeft_vcv6u_504";
143
148
  const bottomCenter = "_bottomCenter_vcv6u_509";
144
149
  const bottomRight = "_bottomRight_vcv6u_515";
145
- const list = "_list_vcv6u_521";
150
+ const list$1 = "_list_vcv6u_521";
146
151
  const chip = "_chip_vcv6u_530";
147
- const spin = "_spin_vcv6u_1";
148
- const pulse = "_pulse_vcv6u_1";
149
- const styles = {
150
- noScroll,
151
- errorMessage,
152
- loadingContainer,
153
- hideScrollbar,
154
- sr_only,
152
+ const spin$1 = "_spin_vcv6u_1";
153
+ const pulse$1 = "_pulse_vcv6u_1";
154
+ const styles$1 = {
155
+ noScroll: noScroll$1,
156
+ errorMessage: errorMessage$1,
157
+ loadingContainer: loadingContainer$1,
158
+ hideScrollbar: hideScrollbar$1,
159
+ sr_only: sr_only$1,
155
160
  container,
156
161
  topLeft,
157
162
  topCenter,
@@ -159,13 +164,13 @@ const styles = {
159
164
  bottomLeft,
160
165
  bottomCenter,
161
166
  bottomRight,
162
- list,
167
+ list: list$1,
163
168
  chip,
164
169
  "fade-in": "_fade-in_vcv6u_1",
165
170
  "slide-up": "_slide-up_vcv6u_1",
166
171
  "spin-3d": "_spin-3d_vcv6u_1",
167
- spin,
168
- pulse,
172
+ spin: spin$1,
173
+ pulse: pulse$1,
169
174
  "fade-in-up": "_fade-in-up_vcv6u_1",
170
175
  "progress-grow": "_progress-grow_vcv6u_1",
171
176
  "indeterminate-move": "_indeterminate-move_vcv6u_1",
@@ -178,10 +183,283 @@ const ChipGroup = React.forwardRef(
178
183
  ...props,
179
184
  ref,
180
185
  ChipComponent: Chip,
181
- classMap: styles
186
+ classMap: styles$1
182
187
  }
183
188
  )
184
189
  );
190
+ const SidebarBase = ({
191
+ links,
192
+ classMap,
193
+ currentPath,
194
+ LinkComponent = "a",
195
+ theme = getDefaultTheme(),
196
+ rounding = getDefaultRounding(),
197
+ shadow = getDefaultShadow(),
198
+ state = "",
199
+ showFooter = false,
200
+ footerLinks,
201
+ footerVersion: footerVersion2,
202
+ outline: outline2 = false,
203
+ className = "",
204
+ "data-testid": testId = "sidebar",
205
+ ariaLabel = "Sidebar navigation",
206
+ ...rest
207
+ }) => {
208
+ const [openItems, setOpenItems] = useState({});
209
+ const toggleItem = (key) => {
210
+ setOpenItems((prev) => ({ ...prev, [key]: !prev[key] }));
211
+ };
212
+ const submenuRefs = useRef({});
213
+ const setSubmenuRef = (key, el) => {
214
+ submenuRefs.current[key] = el;
215
+ };
216
+ const getSubmenuHeight = (key) => {
217
+ const el = submenuRefs.current[key];
218
+ return el ? `${el.scrollHeight}px` : "0px";
219
+ };
220
+ const containerClasses = useMemo(
221
+ () => combineClassNames(
222
+ classMap.wrapper,
223
+ className,
224
+ classMap[theme],
225
+ classMap[state],
226
+ shadow && classMap[`shadow${capitalize(shadow)}`],
227
+ rounding && classMap[`round${capitalize(rounding)}`],
228
+ outline2 ? classMap.outline : ""
229
+ ),
230
+ [className, theme, state, outline2, rounding, shadow]
231
+ );
232
+ const renderLinks = (items, isChild = false) => /* @__PURE__ */ jsx(
233
+ "ul",
234
+ {
235
+ className: combineClassNames(
236
+ classMap.list,
237
+ isChild ? classMap.childList : ""
238
+ ),
239
+ "data-testid": `${testId}-list`,
240
+ children: items.map(({ label, href, children, icon }) => {
241
+ const isActive = href && currentPath === href;
242
+ const isOpen = openItems[label] || false;
243
+ return /* @__PURE__ */ jsx(
244
+ "li",
245
+ {
246
+ className: classMap.item,
247
+ "data-testid": `${testId}-listItems`,
248
+ children: children && children.length > 0 ? /* @__PURE__ */ jsxs(Fragment, { children: [
249
+ /* @__PURE__ */ jsxs(
250
+ "button",
251
+ {
252
+ type: "button",
253
+ className: combineClassNames(
254
+ classMap.link,
255
+ isOpen ? classMap.active : ""
256
+ ),
257
+ onClick: () => toggleItem(label),
258
+ "aria-expanded": isOpen,
259
+ "data-testid": `${testId}-exapndItemButton`,
260
+ children: [
261
+ icon && /* @__PURE__ */ jsx("span", { className: classMap.icon, children: icon }),
262
+ /* @__PURE__ */ jsx("span", { "data-testid": `${testId}-exapndItemLabel`, children: label }),
263
+ /* @__PURE__ */ jsx(
264
+ ChevronDownIcon,
265
+ {
266
+ className: combineClassNames(
267
+ classMap.chevron,
268
+ isOpen ? classMap.chevronOpen : ""
269
+ ),
270
+ "data-testid": `${testId}-exapndIcon`
271
+ }
272
+ )
273
+ ]
274
+ }
275
+ ),
276
+ /* @__PURE__ */ jsx(
277
+ "div",
278
+ {
279
+ ref: (el) => setSubmenuRef(label, el),
280
+ className: combineClassNames(
281
+ classMap.submenu,
282
+ isOpen ? classMap.submenuOpen : ""
283
+ ),
284
+ style: {
285
+ maxHeight: isOpen ? getSubmenuHeight(label) : "0px"
286
+ },
287
+ "data-testid": `${testId}-subMenu`,
288
+ children: renderLinks(children, true)
289
+ }
290
+ )
291
+ ] }) : href ? /* @__PURE__ */ jsxs(
292
+ LinkComponent,
293
+ {
294
+ href,
295
+ className: combineClassNames(
296
+ classMap.link,
297
+ isChild ? classMap.childLink : "",
298
+ isActive ? classMap.active : ""
299
+ ),
300
+ "aria-current": isActive ? "page" : void 0,
301
+ "data-testid": `${testId}-sidebarLink`,
302
+ children: [
303
+ icon && /* @__PURE__ */ jsx("span", { className: classMap.icon, children: icon }),
304
+ label
305
+ ]
306
+ }
307
+ ) : /* @__PURE__ */ jsxs(
308
+ "span",
309
+ {
310
+ className: combineClassNames(
311
+ classMap.link,
312
+ isChild ? classMap.childLink : ""
313
+ ),
314
+ "data-testid": `${testId}-sidebarLabel`,
315
+ children: [
316
+ icon && /* @__PURE__ */ jsx("span", { className: classMap.icon, children: icon }),
317
+ label
318
+ ]
319
+ }
320
+ )
321
+ },
322
+ label
323
+ );
324
+ })
325
+ }
326
+ );
327
+ return /* @__PURE__ */ jsxs(
328
+ "nav",
329
+ {
330
+ className: containerClasses,
331
+ "aria-label": ariaLabel,
332
+ ...rest,
333
+ "data-testid": testId,
334
+ children: [
335
+ /* @__PURE__ */ jsx("nav", { className: classMap.nav, children: renderLinks(links) }),
336
+ showFooter && /* @__PURE__ */ jsxs("footer", { className: classMap.footer, "data-testid": `${testId}-footer`, children: [
337
+ footerLinks == null ? void 0 : footerLinks.map(({ label, href }) => /* @__PURE__ */ jsx(
338
+ LinkComponent,
339
+ {
340
+ href,
341
+ className: classMap.footerLink,
342
+ "data-testid": `${testId}-footerLink`,
343
+ children: label
344
+ },
345
+ label
346
+ )),
347
+ footerVersion2 && /* @__PURE__ */ jsx(
348
+ "span",
349
+ {
350
+ className: classMap.footerVersion,
351
+ "data-testid": `${testId}-footerVersion`,
352
+ children: footerVersion2
353
+ }
354
+ )
355
+ ] })
356
+ ]
357
+ }
358
+ );
359
+ };
360
+ SidebarBase.displayName = "SidebarBase";
361
+ const noScroll = "_noScroll_y1c07_91";
362
+ const errorMessage = "_errorMessage_y1c07_92";
363
+ const loadingContainer = "_loadingContainer_y1c07_93";
364
+ const hideScrollbar = "_hideScrollbar_y1c07_85";
365
+ const sr_only = "_sr_only_y1c07_94";
366
+ const wrapper = "_wrapper_y1c07_479";
367
+ const roundNone = "_roundNone_y1c07_490";
368
+ const roundSmall = "_roundSmall_y1c07_493";
369
+ const roundMedium = "_roundMedium_y1c07_496";
370
+ const roundLarge = "_roundLarge_y1c07_499";
371
+ const roundFull = "_roundFull_y1c07_502";
372
+ const shadowNone = "_shadowNone_y1c07_505";
373
+ const shadowLight = "_shadowLight_y1c07_508";
374
+ const shadowMedium = "_shadowMedium_y1c07_511";
375
+ const shadowStrong = "_shadowStrong_y1c07_514";
376
+ const shadowIntense = "_shadowIntense_y1c07_517";
377
+ const primary = "_primary_y1c07_521";
378
+ const active = "_active_y1c07_521";
379
+ const outline = "_outline_y1c07_525";
380
+ const clear = "_clear_y1c07_530";
381
+ const secondary = "_secondary_y1c07_534";
382
+ const tertiary = "_tertiary_y1c07_547";
383
+ const quaternary = "_quaternary_y1c07_560";
384
+ const success = "_success_y1c07_588";
385
+ const error = "_error_y1c07_92";
386
+ const warning = "_warning_y1c07_602";
387
+ const nav = "_nav_y1c07_609";
388
+ const list = "_list_y1c07_614";
389
+ const link = "_link_y1c07_620";
390
+ const childLink = "_childLink_y1c07_650";
391
+ const chevron = "_chevron_y1c07_654";
392
+ const chevronOpen = "_chevronOpen_y1c07_658";
393
+ const submenu = "_submenu_y1c07_662";
394
+ const childList = "_childList_y1c07_668";
395
+ const footer = "_footer_y1c07_673";
396
+ const footerLink = "_footerLink_y1c07_685";
397
+ const footerVersion = "_footerVersion_y1c07_693";
398
+ const spin = "_spin_y1c07_1";
399
+ const pulse = "_pulse_y1c07_1";
400
+ const styles = {
401
+ noScroll,
402
+ errorMessage,
403
+ loadingContainer,
404
+ hideScrollbar,
405
+ sr_only,
406
+ wrapper,
407
+ roundNone,
408
+ roundSmall,
409
+ roundMedium,
410
+ roundLarge,
411
+ roundFull,
412
+ shadowNone,
413
+ shadowLight,
414
+ shadowMedium,
415
+ shadowStrong,
416
+ shadowIntense,
417
+ primary,
418
+ active,
419
+ outline,
420
+ clear,
421
+ secondary,
422
+ tertiary,
423
+ quaternary,
424
+ success,
425
+ error,
426
+ warning,
427
+ nav,
428
+ list,
429
+ link,
430
+ childLink,
431
+ chevron,
432
+ chevronOpen,
433
+ submenu,
434
+ childList,
435
+ footer,
436
+ footerLink,
437
+ footerVersion,
438
+ "fade-in": "_fade-in_y1c07_1",
439
+ "slide-up": "_slide-up_y1c07_1",
440
+ "spin-3d": "_spin-3d_y1c07_1",
441
+ spin,
442
+ pulse,
443
+ "fade-in-up": "_fade-in-up_y1c07_1",
444
+ "progress-grow": "_progress-grow_y1c07_1",
445
+ "indeterminate-move": "_indeterminate-move_y1c07_1",
446
+ "skeleton-loading": "_skeleton-loading_y1c07_1"
447
+ };
448
+ const Sidebar = ({ links, ...rest }) => {
449
+ const currentPath = navigation.usePathname();
450
+ const { classMap, currentPath: _ignored, ...safeRest } = rest;
451
+ return /* @__PURE__ */ jsx(
452
+ SidebarBase,
453
+ {
454
+ links,
455
+ classMap: styles,
456
+ currentPath,
457
+ LinkComponent: Link,
458
+ ...safeRest
459
+ },
460
+ currentPath
461
+ );
462
+ };
185
463
  function ClientFooterWrapper(props) {
186
464
  return /* @__PURE__ */ jsx(Footer, { ...props });
187
465
  }
@@ -221,6 +499,7 @@ export {
221
499
  R2 as Rating,
222
500
  S as ScrollToTop,
223
501
  S2 as Select,
502
+ Sidebar,
224
503
  S4 as Skeleton,
225
504
  S3 as Slider,
226
505
  S5 as Spinner,
@@ -1 +1 @@
1
- {"version":3,"file":"index.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":["chip","uuidv4"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiBA,MAAM,gBAAgB;AAAA,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,IAAI,SAAsB,CAAA,CAAE;AAEhE,cAAU,MAAM;AACd,YAAM,cAAc,MAAM,IAAI,CAACA,WAAU;AAAA,QACvC,GAAGA;AAAA,QACH,IAAIA,MAAK,MAAMC,GAAA;AAAA,MAAO,EACtB;AACF,sBAAgB,WAAW;AAAA,IAC7B,GAAG,CAAC,KAAK,CAAC;AAEV,UAAM,cAAc;AAAA,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;AAGX,wBAAoB,KAAK,OAAO;AAAA,MAC9B,eAAe,MAAM;AACnB,qBAAa,QAAQ,CAACD,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,WACE;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAW;AAAA,QACX,MAAK;AAAA,QACL,cAAW;AAAA,QACX,aAAU;AAAA,QACV,eAAY;AAAA,QAEZ,UAAA,oBAAC,MAAA,EAAG,MAAK,QAAO,WAAW,SAAS,MACjC,UAAA,aAAa,IAAI,CAACA,OAAM,UAAU;AACjC,gBAAM,eAAeA,MAAK,YAAY;AACtC,gBAAM,oBAAoB,SAAS,YAAY;AAE/C,iBACE,oBAAC,MAAA,EAAiB,MAAK,YACrB,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,IAAIA,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,WAAW;AAAA,gBACT,SAAS;AAAA,gBACTA,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,QACN;AAAA,IAAC;AAAA,IAAA;AAAA,MACE,GAAG;AAAA,MACJ;AAAA,MACA,eAAe;AAAA,MACf,UAAU;AAAA,IAAA;AAAA,EAAA;AAGhB;ACUA,SAAwB,oBAAoB,OAAoB;AAC9D,SAAO,oBAAC,QAAA,EAAQ,GAAG,MAAA,CAAO;AAC5B;"}
1
+ {"version":3,"file":"index.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":["chip","uuidv4","styles","footerVersion","outline","usePathname"],"mappings":"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"}