@ssa-ui-kit/core 3.17.0 → 3.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -7964,6 +7964,8 @@ __webpack_require__.d(__webpack_exports__, {
7964
7964
  BarLineComplexChart: () => (/* reexport */ BarLineComplexChart),
7965
7965
  BigNumberChart: () => (/* reexport */ BigNumberChart),
7966
7966
  BigNumberChartComponent: () => (/* reexport */ BigNumberChartComponent),
7967
+ BreadcrumbMenu: () => (/* reexport */ BreadcrumbMenu),
7968
+ Breadcrumbs: () => (/* reexport */ Breadcrumbs),
7967
7969
  Button: () => (/* reexport */ Button_Button),
7968
7970
  ButtonGroup: () => (/* reexport */ ButtonGroup),
7969
7971
  CandlestickChart: () => (/* reexport */ CandlestickChart),
@@ -8164,6 +8166,7 @@ __webpack_require__.d(__webpack_exports__, {
8164
8166
  cancelButtonStyles: () => (/* reexport */ cancelButtonStyles),
8165
8167
  checkboxStyles: () => (/* reexport */ checkboxStyles),
8166
8168
  clearButtonStyles: () => (/* reexport */ clearButtonStyles),
8169
+ deriveBreadcrumbs: () => (/* reexport */ deriveBreadcrumbs),
8167
8170
  filterButtonStyles: () => (/* reexport */ filterButtonStyles),
8168
8171
  globalStyles: () => (/* reexport */ global_namespaceObject),
8169
8172
  highlightInputMatch: () => (/* reexport */ highlightInputMatch),
@@ -8177,6 +8180,7 @@ __webpack_require__.d(__webpack_exports__, {
8177
8180
  styleUtils: () => (/* reexport */ safari_focus_outline_namespaceObject),
8178
8181
  styles: () => (/* reexport */ Tooltip_styles_namespaceObject),
8179
8182
  useAccordionGroupContext: () => (/* reexport */ useAccordionGroupContext),
8183
+ useBreadcrumbs: () => (/* reexport */ useBreadcrumbs),
8180
8184
  useCollapsibleNavBarContext: () => (/* reexport */ useCollapsibleNavBarContext),
8181
8185
  useCollapsibleNavBarItemContext: () => (/* reexport */ useCollapsibleNavBarItemContext),
8182
8186
  useDrawer: () => (/* reexport */ useDrawer),
@@ -18243,6 +18247,836 @@ const IconButton = ({
18243
18247
  };
18244
18248
  ;// ./src/components/IconButton/index.ts
18245
18249
 
18250
+ ;// external "react-router-dom"
18251
+ const external_react_router_dom_namespaceObject = require("react-router-dom");
18252
+ ;// ./src/components/WithLink.tsx
18253
+ function WithLink_EMOTION_STRINGIFIED_CSS_ERROR_() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
18254
+
18255
+
18256
+
18257
+ var WithLink_ref = true ? {
18258
+ name: "me5k4h",
18259
+ styles: "text-decoration:none;div{cursor:pointer;}"
18260
+ } : 0;
18261
+ const WithLink = ({
18262
+ link,
18263
+ onClick,
18264
+ children,
18265
+ className
18266
+ }) => link ? (0,jsx_runtime_namespaceObject.jsx)(external_react_router_dom_namespaceObject.Link, {
18267
+ to: link,
18268
+ onClick: onClick,
18269
+ className: className,
18270
+ css: WithLink_ref,
18271
+ children: children
18272
+ }) : children;
18273
+ ;// ./src/components/Popover/hooks/usePopover.tsx
18274
+
18275
+
18276
+
18277
+ /**
18278
+ * usePopover - Hook for popover functionality
18279
+ *
18280
+ * Custom hook that provides popover state management, positioning, and interactions.
18281
+ * Handles both controlled and uncontrolled modes, supports multiple interaction types
18282
+ * (click, hover, both), and integrates with Floating UI for positioning and focus management.
18283
+ *
18284
+ * @param options - Popover configuration options
18285
+ * @returns Popover context value with state, positioning, and interaction handlers
18286
+ *
18287
+ * @example
18288
+ * ```tsx
18289
+ * const popover = usePopover({
18290
+ * placement: 'top',
18291
+ * interactionsEnabled: 'click',
18292
+ * modal: false,
18293
+ * });
18294
+ * ```
18295
+ *
18296
+ * @see {@link Popover} - Component that uses this hook
18297
+ */
18298
+ const usePopover = ({
18299
+ initialOpen = false,
18300
+ placement = 'bottom',
18301
+ modal,
18302
+ open: controlledOpen,
18303
+ onOpenChange: setControlledOpen,
18304
+ keyboardHandlers = true,
18305
+ floatingOptions = {},
18306
+ interactionsEnabled = 'click'
18307
+ } = {}) => {
18308
+ const [uncontrolledOpen, setUncontrolledOpen] = external_react_namespaceObject.useState(initialOpen);
18309
+ const [labelId, setLabelId] = external_react_namespaceObject.useState();
18310
+ const [descriptionId, setDescriptionId] = external_react_namespaceObject.useState();
18311
+ const open = controlledOpen ?? uncontrolledOpen;
18312
+ const setOpen = setControlledOpen ?? setUncontrolledOpen;
18313
+ const data = (0,external_floating_ui_react_namespaceObject.useFloating)({
18314
+ placement,
18315
+ open,
18316
+ onOpenChange: setOpen,
18317
+ whileElementsMounted: external_floating_ui_react_namespaceObject.autoUpdate,
18318
+ middleware: [(0,external_floating_ui_react_namespaceObject.offset)(5), (0,external_floating_ui_react_namespaceObject.flip)({
18319
+ crossAxis: placement.includes('-'),
18320
+ padding: 5
18321
+ }), (0,external_floating_ui_react_namespaceObject.shift)({
18322
+ padding: 5
18323
+ })],
18324
+ ...floatingOptions
18325
+ });
18326
+ const context = data.context;
18327
+ const click = (0,external_floating_ui_react_namespaceObject.useClick)(context, {
18328
+ enabled: (0,utils_namespaceObject.isNill)(controlledOpen) && ['click', 'both'].includes(interactionsEnabled),
18329
+ keyboardHandlers
18330
+ });
18331
+ const isControlled = controlledOpen !== undefined;
18332
+ const dismiss = (0,external_floating_ui_react_namespaceObject.useDismiss)(context, {
18333
+ // When controlled, disable referencePress (parent handles toggle) but keep outsidePress
18334
+ referencePress: !isControlled,
18335
+ // Keep outsidePress enabled even in controlled mode
18336
+ outsidePress: true,
18337
+ escapeKey: true,
18338
+ ancestorScroll: !isControlled
18339
+ });
18340
+ const role = (0,external_floating_ui_react_namespaceObject.useRole)(context);
18341
+ const hover = (0,external_floating_ui_react_namespaceObject.useHover)(context, {
18342
+ enabled: (0,utils_namespaceObject.isNill)(controlledOpen) && ['hover', 'both'].includes(interactionsEnabled),
18343
+ handleClose: (0,external_floating_ui_react_namespaceObject.safePolygon)()
18344
+ });
18345
+ const interactionsHooks = [dismiss, role];
18346
+ switch (interactionsEnabled) {
18347
+ case 'click':
18348
+ {
18349
+ interactionsHooks.push(click);
18350
+ break;
18351
+ }
18352
+ case 'hover':
18353
+ {
18354
+ interactionsHooks.push(hover);
18355
+ break;
18356
+ }
18357
+ default:
18358
+ {
18359
+ interactionsHooks.push(click, hover);
18360
+ }
18361
+ }
18362
+ const interactions = (0,external_floating_ui_react_namespaceObject.useInteractions)(interactionsHooks);
18363
+ const result = external_react_namespaceObject.useMemo(() => ({
18364
+ open,
18365
+ setOpen,
18366
+ ...interactions,
18367
+ ...data,
18368
+ modal,
18369
+ labelId,
18370
+ descriptionId,
18371
+ floatingOptions,
18372
+ setLabelId,
18373
+ setDescriptionId
18374
+ }), [open, setOpen, interactions, data, modal, labelId, descriptionId, floatingOptions]);
18375
+ return result;
18376
+ };
18377
+ ;// ./src/components/Popover/hooks/usePopoverContext.tsx
18378
+
18379
+
18380
+ /**
18381
+ * Context for popover components
18382
+ *
18383
+ * Provides popover state and functionality to child components. Created by
18384
+ * Popover component and consumed by PopoverTrigger, PopoverContent, and other
18385
+ * popover sub-components.
18386
+ */
18387
+ const PopoverContext = /*#__PURE__*/external_react_namespaceObject.createContext({});
18388
+
18389
+ /**
18390
+ * usePopoverContext - Hook to access popover context
18391
+ *
18392
+ * Returns the popover context value. Throws an error if used outside of a
18393
+ * Popover component.
18394
+ *
18395
+ * @returns Popover context value with state, positioning, and interaction handlers
18396
+ * @throws Error if used outside of Popover component
18397
+ *
18398
+ * @example
18399
+ * ```tsx
18400
+ * const { open, setOpen, refs } = usePopoverContext();
18401
+ * ```
18402
+ *
18403
+ * @see {@link Popover} - Component that provides this context
18404
+ */
18405
+ const usePopoverContext = () => {
18406
+ const context = external_react_namespaceObject.useContext(PopoverContext);
18407
+ if ((0,utils_namespaceObject.isNill)(context)) {
18408
+ throw new Error('Popover components must be wrapped in <Popover />');
18409
+ }
18410
+ return context;
18411
+ };
18412
+ ;// ./src/components/Popover/Popover.tsx
18413
+
18414
+
18415
+
18416
+
18417
+ /**
18418
+ * Popover - Floating content container component
18419
+ *
18420
+ * A flexible popover system built on Floating UI that provides floating content
18421
+ * containers relative to trigger elements. Uses a compound component pattern with
18422
+ * Popover (root), PopoverTrigger (activator), PopoverContent (display),
18423
+ * PopoverHeading, PopoverDescription, and PopoverClose (content helpers).
18424
+ *
18425
+ * Supports multiple interaction modes (click, hover, both), flexible positioning
18426
+ * with auto-adjustment via Floating UI middleware, modal and non-modal modes,
18427
+ * and comprehensive accessibility features including ARIA attributes and focus
18428
+ * management.
18429
+ *
18430
+ * @category Components
18431
+ * @subcategory Overlay
18432
+ *
18433
+ * @example
18434
+ * ```tsx
18435
+ * // Basic popover on click
18436
+ * <Popover>
18437
+ * <PopoverTrigger>
18438
+ * <Button>Open Popover</Button>
18439
+ * </PopoverTrigger>
18440
+ * <PopoverContent>
18441
+ * <PopoverHeading variant="h4">Popover Title</PopoverHeading>
18442
+ * <PopoverDescription>
18443
+ * This is the popover content with helpful information.
18444
+ * </PopoverDescription>
18445
+ * <PopoverClose>Close</PopoverClose>
18446
+ * </PopoverContent>
18447
+ * </Popover>
18448
+ * ```
18449
+ *
18450
+ * @example
18451
+ * ```tsx
18452
+ * // Popover with hover interaction
18453
+ * <Popover interactionsEnabled="hover">
18454
+ * <PopoverTrigger>
18455
+ * <Icon name="info" />
18456
+ * </PopoverTrigger>
18457
+ * <PopoverContent>
18458
+ * <PopoverHeading variant="h4">Information</PopoverHeading>
18459
+ * <PopoverDescription>
18460
+ * This popover appears on hover.
18461
+ * </PopoverDescription>
18462
+ * </PopoverContent>
18463
+ * </Popover>
18464
+ * ```
18465
+ *
18466
+ * @example
18467
+ * ```tsx
18468
+ * // Popover with custom placement
18469
+ * <Popover placement="top">
18470
+ * <PopoverTrigger>
18471
+ * <Button>Show Above</Button>
18472
+ * </PopoverTrigger>
18473
+ * <PopoverContent>
18474
+ * <PopoverDescription>
18475
+ * This popover appears above the trigger element.
18476
+ * </PopoverDescription>
18477
+ * <PopoverClose>Close</PopoverClose>
18478
+ * </PopoverContent>
18479
+ * </Popover>
18480
+ * ```
18481
+ *
18482
+ * @example
18483
+ * ```tsx
18484
+ * // Advanced positioning with Floating UI middleware
18485
+ * <Popover
18486
+ * placement="top"
18487
+ * floatingOptions={{
18488
+ * middleware: [
18489
+ * offset(10),
18490
+ * flip(),
18491
+ * shift({ padding: 8 }),
18492
+ * ],
18493
+ * }}>
18494
+ * <PopoverTrigger>
18495
+ * <Button>Smart Positioning</Button>
18496
+ * </PopoverTrigger>
18497
+ * <PopoverContent>
18498
+ * <PopoverHeading variant="h4">Smart Positioning</PopoverHeading>
18499
+ * <PopoverDescription>
18500
+ * This popover automatically adjusts its position to stay in view.
18501
+ * </PopoverDescription>
18502
+ * <PopoverClose>Close</PopoverClose>
18503
+ * </PopoverContent>
18504
+ * </Popover>
18505
+ * ```
18506
+ *
18507
+ * @example
18508
+ * ```tsx
18509
+ * // Modal popover with controlled state
18510
+ * <Popover modal open={isOpen} onOpenChange={setIsOpen}>
18511
+ * <PopoverTrigger>
18512
+ * <Button>Open Modal Popover</Button>
18513
+ * </PopoverTrigger>
18514
+ * <PopoverContent>
18515
+ * <PopoverHeading variant="h4">Modal Popover</PopoverHeading>
18516
+ * <PopoverDescription>
18517
+ * This is a modal popover that traps focus.
18518
+ * </PopoverDescription>
18519
+ * <PopoverClose>Close</PopoverClose>
18520
+ * </PopoverContent>
18521
+ * </Popover>
18522
+ * ```
18523
+ *
18524
+ * @see {@link PopoverTrigger} - Trigger element component
18525
+ * @see {@link PopoverContent} - Content display component
18526
+ * @see {@link PopoverHeading} - Accessible heading component
18527
+ * @see {@link PopoverDescription} - Accessible description component
18528
+ * @see {@link PopoverClose} - Close button component
18529
+ *
18530
+ * @accessibility
18531
+ * - Keyboard accessible (ESC to close, Enter/Space to activate)
18532
+ * - Focus management with FloatingFocusManager for modal popovers
18533
+ * - ARIA attributes automatically applied (role, aria-labelledby, aria-describedby)
18534
+ * - Screen reader friendly with semantic heading and description components
18535
+ * - Focus trap for modal popovers
18536
+ */
18537
+
18538
+ const Popover = ({
18539
+ children,
18540
+ modal = false,
18541
+ ...restOptions
18542
+ }) => {
18543
+ // This can accept any props as options, e.g. `placement`,
18544
+ // or other positioning options.
18545
+ const popover = usePopover({
18546
+ modal,
18547
+ ...restOptions
18548
+ });
18549
+ return (0,jsx_runtime_namespaceObject.jsx)(PopoverContext.Provider, {
18550
+ value: popover,
18551
+ children: children
18552
+ });
18553
+ };
18554
+ ;// ./src/components/Popover/PopoverTrigger.tsx
18555
+
18556
+
18557
+
18558
+
18559
+
18560
+ /**
18561
+ * PopoverTrigger - Trigger element for popover
18562
+ *
18563
+ * Activates the popover when interacted with. By default renders as a Button,
18564
+ * but can be customized using the `asChild` prop to render as any React element.
18565
+ * Automatically receives Floating UI reference props for positioning and state
18566
+ * management.
18567
+ *
18568
+ * @category Components
18569
+ * @subcategory Overlay
18570
+ *
18571
+ * @example
18572
+ * ```tsx
18573
+ * // Default Button trigger
18574
+ * <PopoverTrigger>
18575
+ * Open Popover
18576
+ * </PopoverTrigger>
18577
+ * ```
18578
+ *
18579
+ * @example
18580
+ * ```tsx
18581
+ * // Custom element trigger
18582
+ * <PopoverTrigger asChild>
18583
+ * <Icon name="info" />
18584
+ * </PopoverTrigger>
18585
+ * ```
18586
+ *
18587
+ * @see {@link Popover} - Root component
18588
+ * @see {@link PopoverContent} - Content display component
18589
+ */
18590
+ const PopoverTrigger = /*#__PURE__*/external_react_namespaceObject.forwardRef(function PopoverTrigger({
18591
+ children,
18592
+ asChild = false,
18593
+ dataTestId = 'trigger-button',
18594
+ variant = 'primary',
18595
+ ...props
18596
+ }, propRef) {
18597
+ const context = usePopoverContext();
18598
+
18599
+ // `asChild` allows the user to pass any element as the anchor
18600
+ if (asChild && /*#__PURE__*/external_react_namespaceObject.isValidElement(children)) {
18601
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
18602
+ const childrenElement = children;
18603
+
18604
+ // Extract ref from children props BEFORE calling getReferenceProps to avoid conflicts
18605
+ // In React 19, refs are regular props, but forwardRef components may not expose them in children.props.ref
18606
+ // We extract it here for backward compatibility
18607
+ const {
18608
+ ref: existingChildrenRef,
18609
+ ...childrenPropsWithoutRef
18610
+ } = childrenElement.props || {};
18611
+
18612
+ // Merge all refs: floating-ui's setReference, children's ref, and propRef
18613
+ // This ensures positioning works while preserving any refs passed to the child component
18614
+ const mergedRef = (0,external_floating_ui_react_namespaceObject.useMergeRefs)([context?.refs.setReference, existingChildrenRef, propRef]);
18615
+
18616
+ // Get reference props from floating-ui - pass the merged ref to it
18617
+ // This ensures floating-ui gets the correct element for positioning
18618
+ const referenceProps = context?.getReferenceProps({
18619
+ ref: mergedRef,
18620
+ ...props,
18621
+ ...childrenPropsWithoutRef,
18622
+ 'data-state': context.open ? 'open' : 'closed'
18623
+ });
18624
+
18625
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
18626
+ return /*#__PURE__*/external_react_namespaceObject.cloneElement(children, referenceProps);
18627
+ }
18628
+
18629
+ // For non-asChild case, merge refs normally
18630
+ const childrenRef = /*#__PURE__*/external_react_namespaceObject.isValidElement(children) ? children.props?.ref : undefined;
18631
+ const ref = (0,external_floating_ui_react_namespaceObject.useMergeRefs)([context?.refs.setReference, propRef, childrenRef]);
18632
+ return (0,jsx_runtime_namespaceObject.jsx)(Button_Button, {
18633
+ "data-testid": dataTestId,
18634
+ ref: ref
18635
+ // The user can style the trigger based on the state
18636
+ ,
18637
+ "data-state": context?.open ? 'open' : 'closed',
18638
+ variant: variant,
18639
+ ...context?.getReferenceProps(props),
18640
+ children: children
18641
+ });
18642
+ });
18643
+ ;// ./src/components/Popover/PopoverContent.tsx
18644
+ function PopoverContent_EMOTION_STRINGIFIED_CSS_ERROR_() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
18645
+
18646
+
18647
+
18648
+
18649
+
18650
+ var PopoverContent_ref = true ? {
18651
+ name: "3abrc0",
18652
+ styles: "width:auto"
18653
+ } : 0;
18654
+ /**
18655
+ * PopoverContent - Content container for popover
18656
+ *
18657
+ * Renders the actual popover content that appears when the trigger is activated.
18658
+ * Automatically positioned using Floating UI, supports portal rendering, and
18659
+ * includes focus management for modal popovers. Can be configured to unmount
18660
+ * or keep mounted when closed.
18661
+ *
18662
+ * @category Components
18663
+ * @subcategory Overlay
18664
+ *
18665
+ * @example
18666
+ * ```tsx
18667
+ * <PopoverContent>
18668
+ * <PopoverHeading variant="h4">Title</PopoverHeading>
18669
+ * <PopoverDescription>Content goes here</PopoverDescription>
18670
+ * <PopoverClose>Close</PopoverClose>
18671
+ * </PopoverContent>
18672
+ * ```
18673
+ *
18674
+ * @example
18675
+ * ```tsx
18676
+ * // Keep content mounted when closed
18677
+ * <PopoverContent mountMode="keep-mounted">
18678
+ * <div>This stays in DOM when closed</div>
18679
+ * </PopoverContent>
18680
+ * ```
18681
+ *
18682
+ * @see {@link Popover} - Root component
18683
+ * @see {@link PopoverTrigger} - Trigger element component
18684
+ * @see {@link PopoverHeading} - Accessible heading component
18685
+ * @see {@link PopoverDescription} - Accessible description component
18686
+ */
18687
+ const PopoverContent = /*#__PURE__*/external_react_namespaceObject.forwardRef(function PopoverContent({
18688
+ style,
18689
+ isFocusManagerDisabled = false,
18690
+ mountMode = 'unmount',
18691
+ ...props
18692
+ }, propRef) {
18693
+ const {
18694
+ context: floatingContext,
18695
+ ...context
18696
+ } = usePopoverContext();
18697
+ const ref = (0,external_floating_ui_react_namespaceObject.useMergeRefs)([context.refs.setFloating, propRef]);
18698
+ const keepMounted = mountMode === 'keep-mounted';
18699
+ if (!keepMounted && !floatingContext.open) return null;
18700
+ const hidden = keepMounted && !floatingContext.open;
18701
+ return (0,jsx_runtime_namespaceObject.jsx)(external_floating_ui_react_namespaceObject.FloatingPortal, {
18702
+ children: (0,jsx_runtime_namespaceObject.jsx)(external_floating_ui_react_namespaceObject.FloatingFocusManager, {
18703
+ context: floatingContext,
18704
+ modal: context.modal,
18705
+ disabled: isFocusManagerDisabled,
18706
+ children: (0,jsx_runtime_namespaceObject.jsx)(Wrapper_Wrapper, {
18707
+ ref: ref,
18708
+ css: PopoverContent_ref,
18709
+ style: {
18710
+ ...context.floatingStyles,
18711
+ ...(hidden ? {
18712
+ display: 'none',
18713
+ pointerEvents: 'none'
18714
+ } : null),
18715
+ ...style
18716
+ },
18717
+ "aria-labelledby": context.labelId,
18718
+ "aria-describedby": context.descriptionId,
18719
+ direction: "column",
18720
+ ...context.getFloatingProps(props),
18721
+ children: props.children
18722
+ })
18723
+ })
18724
+ });
18725
+ });
18726
+ ;// ./src/components/Breadcrumbs/styles.ts
18727
+ function Breadcrumbs_styles_EMOTION_STRINGIFIED_CSS_ERROR_() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
18728
+
18729
+
18730
+ const fontBase = true ? {
18731
+ name: "1206kx8",
18732
+ styles: "font-family:'Manrope',sans-serif;font-size:14px;line-height:18px;letter-spacing:0"
18733
+ } : 0;
18734
+ const nav = true ? {
18735
+ name: "4zleql",
18736
+ styles: "display:block"
18737
+ } : 0;
18738
+ const list = true ? {
18739
+ name: "szqxm1",
18740
+ styles: "display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0;padding:0;list-style:none"
18741
+ } : 0;
18742
+ const styles_item = true ? {
18743
+ name: "8irbms",
18744
+ styles: "display:inline-flex;align-items:center"
18745
+ } : 0;
18746
+ const styles_separator = /*#__PURE__*/(0,react_namespaceObject.css)("display:inline-flex;align-items:center;justify-content:center;color:", themes_main.colors.greyDarker80, ";pointer-events:none;user-select:none;" + ( true ? "" : 0), true ? "" : 0);
18747
+ const crumbLink = /*#__PURE__*/(0,react_namespaceObject.css)(fontBase, ";font-weight:500;color:", themes_main.colors.greyDarker80, ";text-decoration:none;background:none;border:none;padding:0;cursor:pointer;transition:color 0.15s ease;&:hover,&:focus-visible{color:", themes_main.colors.greyDarker, ";}" + ( true ? "" : 0), true ? "" : 0);
18748
+ const crumbText = /*#__PURE__*/(0,react_namespaceObject.css)(fontBase, ";font-weight:500;color:", themes_main.colors.greyDarker80, ";" + ( true ? "" : 0), true ? "" : 0);
18749
+ const crumbCurrent = /*#__PURE__*/(0,react_namespaceObject.css)(fontBase, ";font-weight:600;color:", themes_main.palette.primary.dark, ";" + ( true ? "" : 0), true ? "" : 0);
18750
+ const menu = /*#__PURE__*/(0,react_namespaceObject.css)("display:flex;flex-direction:column;gap:2px;min-width:140px;margin:0;padding:6px;list-style:none;background:", themes_main.colors.white, ";border:1px solid ", themes_main.colors.grey20, ";border-radius:8px;box-shadow:0 8px 24px ", themes_main.colors.greyDarker14, ";" + ( true ? "" : 0), true ? "" : 0);
18751
+ const menuItem = /*#__PURE__*/(0,react_namespaceObject.css)(fontBase, ";font-weight:500;display:block;padding:6px 10px;border-radius:6px;color:", themes_main.colors.greyDarker80, ";text-decoration:none;cursor:pointer;transition:color 0.15s ease,background-color 0.15s ease;&:hover,&:focus-visible{color:", themes_main.colors.greyDarker, ";background-color:", themes_main.colors.blue6, ";}" + ( true ? "" : 0), true ? "" : 0);
18752
+ ;// ./src/components/Breadcrumbs/BreadcrumbMenu.tsx
18753
+
18754
+
18755
+
18756
+
18757
+
18758
+
18759
+ /**
18760
+ * A hover/click popover listing navigable routes. Shared by the collapsed `…`
18761
+ * crumb and, in the route-aware mode, by crumbs that expose sibling routes.
18762
+ */
18763
+ const BreadcrumbMenu = ({
18764
+ trigger,
18765
+ items
18766
+ }) => (0,jsx_runtime_namespaceObject.jsxs)(Popover, {
18767
+ placement: "bottom-start",
18768
+ interactionsEnabled: "both",
18769
+ children: [(0,jsx_runtime_namespaceObject.jsx)(PopoverTrigger, {
18770
+ asChild: true,
18771
+ children: trigger
18772
+ }), (0,jsx_runtime_namespaceObject.jsx)(PopoverContent, {
18773
+ children: (0,jsx_runtime_namespaceObject.jsx)("ul", {
18774
+ css: menu,
18775
+ children: items.map((sibling, index) => (0,jsx_runtime_namespaceObject.jsx)("li", {
18776
+ children: (0,jsx_runtime_namespaceObject.jsx)(WithLink, {
18777
+ link: sibling.to,
18778
+ className: "breadcrumb-menu-item",
18779
+ children: (0,jsx_runtime_namespaceObject.jsx)("span", {
18780
+ css: menuItem,
18781
+ children: sibling.label
18782
+ })
18783
+ })
18784
+ }, index))
18785
+ })
18786
+ })]
18787
+ });
18788
+ ;// ./src/components/Breadcrumbs/utils.ts
18789
+ /** A rendered slot in the trail: either a real crumb or the collapsed `…`. */
18790
+
18791
+ /**
18792
+ * Collapse the trail to `first … last` when it exceeds `maxItems`, per design.
18793
+ * The hidden middle crumbs are returned on the ellipsis entry so they can be
18794
+ * offered from its menu. When `maxItems` is falsy or not exceeded, every item
18795
+ * is returned as-is.
18796
+ */
18797
+ const collapseItems = (items, maxItems) => {
18798
+ if (!maxItems || items.length <= maxItems || items.length <= 2) {
18799
+ return items.map((item, index) => ({
18800
+ type: 'item',
18801
+ item,
18802
+ index
18803
+ }));
18804
+ }
18805
+ const lastIndex = items.length - 1;
18806
+ return [{
18807
+ type: 'item',
18808
+ item: items[0],
18809
+ index: 0
18810
+ }, {
18811
+ type: 'ellipsis',
18812
+ items: items.slice(1, lastIndex)
18813
+ }, {
18814
+ type: 'item',
18815
+ item: items[lastIndex],
18816
+ index: lastIndex
18817
+ }];
18818
+ };
18819
+ ;// ./src/components/Breadcrumbs/Breadcrumbs.tsx
18820
+
18821
+
18822
+
18823
+
18824
+
18825
+
18826
+
18827
+
18828
+ const DefaultSeparator = (0,jsx_runtime_namespaceObject.jsx)(Icon_Icon, {
18829
+ name: "carrot-right",
18830
+ size: 14,
18831
+ color: themes_main.colors.greyDarker80
18832
+ });
18833
+
18834
+ /**
18835
+ * Breadcrumbs — navigational trail of the current page's location.
18836
+ *
18837
+ * Accepts a list of `{ label, to }` items and renders them as react-router
18838
+ * links separated by a chevron, with the current (last) crumb shown as a
18839
+ * non-navigable, emphasised label. When the trail is longer than `maxItems`
18840
+ * it collapses to `first … last`, with the hidden crumbs available from the
18841
+ * `…` menu.
18842
+ *
18843
+ * @example
18844
+ * ```tsx
18845
+ * <Breadcrumbs
18846
+ * maxItems={4}
18847
+ * items={[
18848
+ * { label: 'Home', to: '/' },
18849
+ * { label: 'People', to: '/people' },
18850
+ * { label: 'Jane Doe' },
18851
+ * ]}
18852
+ * />
18853
+ * ```
18854
+ */
18855
+ const Breadcrumbs = ({
18856
+ items,
18857
+ maxItems,
18858
+ separator = DefaultSeparator,
18859
+ ariaLabel = 'Breadcrumb',
18860
+ className,
18861
+ css
18862
+ }) => {
18863
+ if (!items.length) {
18864
+ return null;
18865
+ }
18866
+ const lastIndex = items.length - 1;
18867
+ const entries = collapseItems(items, maxItems);
18868
+ const isCurrent = (item, index) => item.isCurrent ?? index === lastIndex;
18869
+ const renderCrumb = (item, index) => {
18870
+ if (isCurrent(item, index)) {
18871
+ return (0,jsx_runtime_namespaceObject.jsx)("span", {
18872
+ css: crumbCurrent,
18873
+ "aria-current": "page",
18874
+ children: item.label
18875
+ });
18876
+ }
18877
+ const inner = item.to ? (0,jsx_runtime_namespaceObject.jsx)(WithLink, {
18878
+ link: item.to,
18879
+ onClick: item.onClick,
18880
+ children: (0,jsx_runtime_namespaceObject.jsx)("span", {
18881
+ css: crumbLink,
18882
+ children: item.label
18883
+ })
18884
+ }) : item.onClick ? (0,jsx_runtime_namespaceObject.jsx)("button", {
18885
+ type: "button",
18886
+ css: crumbLink,
18887
+ onClick: item.onClick,
18888
+ children: item.label
18889
+ }) : (0,jsx_runtime_namespaceObject.jsx)("span", {
18890
+ css: crumbText,
18891
+ children: item.label
18892
+ });
18893
+ if (item.siblings?.length) {
18894
+ return (0,jsx_runtime_namespaceObject.jsx)(BreadcrumbMenu, {
18895
+ trigger: (0,jsx_runtime_namespaceObject.jsx)("span", {
18896
+ css: styles_item,
18897
+ children: inner
18898
+ }),
18899
+ items: item.siblings
18900
+ });
18901
+ }
18902
+ return inner;
18903
+ };
18904
+ return (0,jsx_runtime_namespaceObject.jsx)("nav", {
18905
+ "aria-label": ariaLabel,
18906
+ css: [nav, css, true ? "" : 0, true ? "" : 0],
18907
+ className: className,
18908
+ children: (0,jsx_runtime_namespaceObject.jsx)("ol", {
18909
+ css: list,
18910
+ children: entries.map((entry, position) => {
18911
+ const isLastEntry = position === entries.length - 1;
18912
+ return (0,jsx_runtime_namespaceObject.jsxs)(external_react_namespaceObject.Fragment, {
18913
+ children: [(0,jsx_runtime_namespaceObject.jsx)("li", {
18914
+ css: styles_item,
18915
+ children: entry.type === 'item' ? renderCrumb(entry.item, entry.index) : (0,jsx_runtime_namespaceObject.jsx)(BreadcrumbMenu, {
18916
+ trigger: (0,jsx_runtime_namespaceObject.jsx)("button", {
18917
+ type: "button",
18918
+ css: crumbLink,
18919
+ "aria-label": "Show hidden breadcrumbs",
18920
+ children: "..."
18921
+ }),
18922
+ items: entry.items.filter(item => item.to).map(item => ({
18923
+ label: item.label,
18924
+ to: item.to
18925
+ }))
18926
+ })
18927
+ }), !isLastEntry && (0,jsx_runtime_namespaceObject.jsx)("li", {
18928
+ css: styles_separator,
18929
+ "aria-hidden": "true",
18930
+ children: separator
18931
+ })]
18932
+ }, entry.type === 'item' ? `item-${entry.index}` : 'ellipsis');
18933
+ })
18934
+ })
18935
+ });
18936
+ };
18937
+ ;// ./src/components/Breadcrumbs/useBreadcrumbs.ts
18938
+
18939
+
18940
+
18941
+ /** Context passed to a route's `crumb` resolver function. */
18942
+
18943
+ /**
18944
+ * Shape read from a route's `handle` to build its crumb. Attach this to routes
18945
+ * in your `createBrowserRouter` config:
18946
+ *
18947
+ * ```ts
18948
+ * { path: 'people', handle: { crumb: 'People' } as BreadcrumbRouteHandle }
18949
+ * ```
18950
+ */
18951
+
18952
+ const getHandle = route => route.handle;
18953
+ const joinPaths = (base, path) => `/${`${base}/${path}`.split('/').filter(Boolean).join('/')}`;
18954
+ const resolveLabel = (route, ctx, getLabel) => {
18955
+ const handle = getHandle(route);
18956
+ if (handle?.hideCrumb) {
18957
+ return undefined;
18958
+ }
18959
+ if (handle?.crumb !== undefined) {
18960
+ return typeof handle.crumb === 'function' ? handle.crumb(ctx) : handle.crumb;
18961
+ }
18962
+ if (handle?.title !== undefined) {
18963
+ return handle.title;
18964
+ }
18965
+ return getLabel?.(route, ctx);
18966
+ };
18967
+ const hasContent = label => label !== undefined && label !== null && label !== false;
18968
+
18969
+ /**
18970
+ * Resolve a sibling route's pattern to a concrete path using the current
18971
+ * params. Returns `null` when the sibling needs params we don't have (it can't
18972
+ * be navigated to from here) so the caller can drop it.
18973
+ */
18974
+ const resolveSiblingPath = (pattern, params) => {
18975
+ try {
18976
+ return (0,external_react_router_dom_namespaceObject.generatePath)(pattern, params);
18977
+ } catch {
18978
+ return null;
18979
+ }
18980
+ };
18981
+ const getSiblings = (siblingRoutes, currentRoute, parentBase, params, getLabel) => siblingRoutes.reduce((acc, route) => {
18982
+ if (route === currentRoute || route.index || !route.path) {
18983
+ return acc;
18984
+ }
18985
+ const pattern = route.path.startsWith('/') ? route.path : joinPaths(parentBase, route.path);
18986
+ const to = resolveSiblingPath(pattern, params);
18987
+ if (to === null) {
18988
+ return acc;
18989
+ }
18990
+ const label = resolveLabel(route, {
18991
+ params,
18992
+ pathname: to
18993
+ }, getLabel);
18994
+ if (!hasContent(label)) {
18995
+ return acc;
18996
+ }
18997
+ acc.push({
18998
+ label,
18999
+ to
19000
+ });
19001
+ return acc;
19002
+ }, []);
19003
+
19004
+ /**
19005
+ * Pure derivation of breadcrumb items from a route tree and a pathname.
19006
+ * Extracted from the hook so it can be unit-tested without a router.
19007
+ */
19008
+ const deriveBreadcrumbs = (routes, pathname, {
19009
+ includeSiblings = true,
19010
+ getLabel
19011
+ } = {}) => {
19012
+ const matches = (0,external_react_router_dom_namespaceObject.matchRoutes)(routes, pathname);
19013
+ if (!matches) {
19014
+ return [];
19015
+ }
19016
+ const items = [];
19017
+ matches.forEach((match, index) => {
19018
+ const ctx = {
19019
+ params: match.params,
19020
+ pathname: match.pathname
19021
+ };
19022
+ const label = resolveLabel(match.route, ctx, getLabel);
19023
+ if (!hasContent(label)) {
19024
+ return;
19025
+ }
19026
+ const item = {
19027
+ label,
19028
+ to: match.pathname
19029
+ };
19030
+ if (includeSiblings) {
19031
+ const parentChildren = index === 0 ? routes : matches[index - 1].route.children ?? [];
19032
+ const parentBase = index === 0 ? '/' : matches[index - 1].pathnameBase;
19033
+ const siblings = getSiblings(parentChildren, match.route, parentBase, match.params, getLabel);
19034
+ if (siblings.length) {
19035
+ item.siblings = siblings;
19036
+ }
19037
+ }
19038
+ items.push(item);
19039
+ });
19040
+
19041
+ // The deepest crumb is the current page.
19042
+ if (items.length) {
19043
+ const last = items[items.length - 1];
19044
+ last.isCurrent = true;
19045
+ delete last.to;
19046
+ delete last.siblings;
19047
+ }
19048
+ return items;
19049
+ };
19050
+
19051
+ /**
19052
+ * Route-aware breadcrumb builder. Reads the current location, matches it
19053
+ * against your route tree, and returns `BreadcrumbItem[]` ready for
19054
+ * `<Breadcrumbs>`. Labels come from each route's `handle.crumb`/`handle.title`;
19055
+ * sibling routes (other children of a crumb's parent) power the hover menu.
19056
+ *
19057
+ * @example
19058
+ * ```tsx
19059
+ * const items = useBreadcrumbs({ routes });
19060
+ * return <Breadcrumbs items={items} maxItems={4} />;
19061
+ * ```
19062
+ */
19063
+ const useBreadcrumbs = ({
19064
+ routes,
19065
+ pathname,
19066
+ includeSiblings = true,
19067
+ getLabel
19068
+ }) => {
19069
+ const location = (0,external_react_router_dom_namespaceObject.useLocation)();
19070
+ const activePathname = pathname ?? location.pathname;
19071
+ return (0,external_react_namespaceObject.useMemo)(() => deriveBreadcrumbs(routes, activePathname, {
19072
+ includeSiblings,
19073
+ getLabel
19074
+ }), [routes, activePathname, includeSiblings, getLabel]);
19075
+ };
19076
+ ;// ./src/components/Breadcrumbs/index.ts
19077
+
19078
+
19079
+
18246
19080
  ;// ./src/components/Label/LabelBase.tsx
18247
19081
 
18248
19082
  const LabelBase = /*#__PURE__*/base_default()("label", true ? {
@@ -21782,370 +22616,6 @@ function MultipleDropdownInner({
21782
22616
  }
21783
22617
  const MultipleDropdown = /*#__PURE__*/external_react_default().forwardRef(MultipleDropdownInner);
21784
22618
  /* harmony default export */ const MultipleDropdown_MultipleDropdown = (MultipleDropdown);
21785
- ;// ./src/components/Popover/hooks/usePopover.tsx
21786
-
21787
-
21788
-
21789
- /**
21790
- * usePopover - Hook for popover functionality
21791
- *
21792
- * Custom hook that provides popover state management, positioning, and interactions.
21793
- * Handles both controlled and uncontrolled modes, supports multiple interaction types
21794
- * (click, hover, both), and integrates with Floating UI for positioning and focus management.
21795
- *
21796
- * @param options - Popover configuration options
21797
- * @returns Popover context value with state, positioning, and interaction handlers
21798
- *
21799
- * @example
21800
- * ```tsx
21801
- * const popover = usePopover({
21802
- * placement: 'top',
21803
- * interactionsEnabled: 'click',
21804
- * modal: false,
21805
- * });
21806
- * ```
21807
- *
21808
- * @see {@link Popover} - Component that uses this hook
21809
- */
21810
- const usePopover = ({
21811
- initialOpen = false,
21812
- placement = 'bottom',
21813
- modal,
21814
- open: controlledOpen,
21815
- onOpenChange: setControlledOpen,
21816
- keyboardHandlers = true,
21817
- floatingOptions = {},
21818
- interactionsEnabled = 'click'
21819
- } = {}) => {
21820
- const [uncontrolledOpen, setUncontrolledOpen] = external_react_namespaceObject.useState(initialOpen);
21821
- const [labelId, setLabelId] = external_react_namespaceObject.useState();
21822
- const [descriptionId, setDescriptionId] = external_react_namespaceObject.useState();
21823
- const open = controlledOpen ?? uncontrolledOpen;
21824
- const setOpen = setControlledOpen ?? setUncontrolledOpen;
21825
- const data = (0,external_floating_ui_react_namespaceObject.useFloating)({
21826
- placement,
21827
- open,
21828
- onOpenChange: setOpen,
21829
- whileElementsMounted: external_floating_ui_react_namespaceObject.autoUpdate,
21830
- middleware: [(0,external_floating_ui_react_namespaceObject.offset)(5), (0,external_floating_ui_react_namespaceObject.flip)({
21831
- crossAxis: placement.includes('-'),
21832
- padding: 5
21833
- }), (0,external_floating_ui_react_namespaceObject.shift)({
21834
- padding: 5
21835
- })],
21836
- ...floatingOptions
21837
- });
21838
- const context = data.context;
21839
- const click = (0,external_floating_ui_react_namespaceObject.useClick)(context, {
21840
- enabled: (0,utils_namespaceObject.isNill)(controlledOpen) && ['click', 'both'].includes(interactionsEnabled),
21841
- keyboardHandlers
21842
- });
21843
- const isControlled = controlledOpen !== undefined;
21844
- const dismiss = (0,external_floating_ui_react_namespaceObject.useDismiss)(context, {
21845
- // When controlled, disable referencePress (parent handles toggle) but keep outsidePress
21846
- referencePress: !isControlled,
21847
- // Keep outsidePress enabled even in controlled mode
21848
- outsidePress: true,
21849
- escapeKey: true,
21850
- ancestorScroll: !isControlled
21851
- });
21852
- const role = (0,external_floating_ui_react_namespaceObject.useRole)(context);
21853
- const hover = (0,external_floating_ui_react_namespaceObject.useHover)(context, {
21854
- enabled: (0,utils_namespaceObject.isNill)(controlledOpen) && ['hover', 'both'].includes(interactionsEnabled),
21855
- handleClose: (0,external_floating_ui_react_namespaceObject.safePolygon)()
21856
- });
21857
- const interactionsHooks = [dismiss, role];
21858
- switch (interactionsEnabled) {
21859
- case 'click':
21860
- {
21861
- interactionsHooks.push(click);
21862
- break;
21863
- }
21864
- case 'hover':
21865
- {
21866
- interactionsHooks.push(hover);
21867
- break;
21868
- }
21869
- default:
21870
- {
21871
- interactionsHooks.push(click, hover);
21872
- }
21873
- }
21874
- const interactions = (0,external_floating_ui_react_namespaceObject.useInteractions)(interactionsHooks);
21875
- const result = external_react_namespaceObject.useMemo(() => ({
21876
- open,
21877
- setOpen,
21878
- ...interactions,
21879
- ...data,
21880
- modal,
21881
- labelId,
21882
- descriptionId,
21883
- floatingOptions,
21884
- setLabelId,
21885
- setDescriptionId
21886
- }), [open, setOpen, interactions, data, modal, labelId, descriptionId, floatingOptions]);
21887
- return result;
21888
- };
21889
- ;// ./src/components/Popover/hooks/usePopoverContext.tsx
21890
-
21891
-
21892
- /**
21893
- * Context for popover components
21894
- *
21895
- * Provides popover state and functionality to child components. Created by
21896
- * Popover component and consumed by PopoverTrigger, PopoverContent, and other
21897
- * popover sub-components.
21898
- */
21899
- const PopoverContext = /*#__PURE__*/external_react_namespaceObject.createContext({});
21900
-
21901
- /**
21902
- * usePopoverContext - Hook to access popover context
21903
- *
21904
- * Returns the popover context value. Throws an error if used outside of a
21905
- * Popover component.
21906
- *
21907
- * @returns Popover context value with state, positioning, and interaction handlers
21908
- * @throws Error if used outside of Popover component
21909
- *
21910
- * @example
21911
- * ```tsx
21912
- * const { open, setOpen, refs } = usePopoverContext();
21913
- * ```
21914
- *
21915
- * @see {@link Popover} - Component that provides this context
21916
- */
21917
- const usePopoverContext = () => {
21918
- const context = external_react_namespaceObject.useContext(PopoverContext);
21919
- if ((0,utils_namespaceObject.isNill)(context)) {
21920
- throw new Error('Popover components must be wrapped in <Popover />');
21921
- }
21922
- return context;
21923
- };
21924
- ;// ./src/components/Popover/Popover.tsx
21925
-
21926
-
21927
-
21928
-
21929
- /**
21930
- * Popover - Floating content container component
21931
- *
21932
- * A flexible popover system built on Floating UI that provides floating content
21933
- * containers relative to trigger elements. Uses a compound component pattern with
21934
- * Popover (root), PopoverTrigger (activator), PopoverContent (display),
21935
- * PopoverHeading, PopoverDescription, and PopoverClose (content helpers).
21936
- *
21937
- * Supports multiple interaction modes (click, hover, both), flexible positioning
21938
- * with auto-adjustment via Floating UI middleware, modal and non-modal modes,
21939
- * and comprehensive accessibility features including ARIA attributes and focus
21940
- * management.
21941
- *
21942
- * @category Components
21943
- * @subcategory Overlay
21944
- *
21945
- * @example
21946
- * ```tsx
21947
- * // Basic popover on click
21948
- * <Popover>
21949
- * <PopoverTrigger>
21950
- * <Button>Open Popover</Button>
21951
- * </PopoverTrigger>
21952
- * <PopoverContent>
21953
- * <PopoverHeading variant="h4">Popover Title</PopoverHeading>
21954
- * <PopoverDescription>
21955
- * This is the popover content with helpful information.
21956
- * </PopoverDescription>
21957
- * <PopoverClose>Close</PopoverClose>
21958
- * </PopoverContent>
21959
- * </Popover>
21960
- * ```
21961
- *
21962
- * @example
21963
- * ```tsx
21964
- * // Popover with hover interaction
21965
- * <Popover interactionsEnabled="hover">
21966
- * <PopoverTrigger>
21967
- * <Icon name="info" />
21968
- * </PopoverTrigger>
21969
- * <PopoverContent>
21970
- * <PopoverHeading variant="h4">Information</PopoverHeading>
21971
- * <PopoverDescription>
21972
- * This popover appears on hover.
21973
- * </PopoverDescription>
21974
- * </PopoverContent>
21975
- * </Popover>
21976
- * ```
21977
- *
21978
- * @example
21979
- * ```tsx
21980
- * // Popover with custom placement
21981
- * <Popover placement="top">
21982
- * <PopoverTrigger>
21983
- * <Button>Show Above</Button>
21984
- * </PopoverTrigger>
21985
- * <PopoverContent>
21986
- * <PopoverDescription>
21987
- * This popover appears above the trigger element.
21988
- * </PopoverDescription>
21989
- * <PopoverClose>Close</PopoverClose>
21990
- * </PopoverContent>
21991
- * </Popover>
21992
- * ```
21993
- *
21994
- * @example
21995
- * ```tsx
21996
- * // Advanced positioning with Floating UI middleware
21997
- * <Popover
21998
- * placement="top"
21999
- * floatingOptions={{
22000
- * middleware: [
22001
- * offset(10),
22002
- * flip(),
22003
- * shift({ padding: 8 }),
22004
- * ],
22005
- * }}>
22006
- * <PopoverTrigger>
22007
- * <Button>Smart Positioning</Button>
22008
- * </PopoverTrigger>
22009
- * <PopoverContent>
22010
- * <PopoverHeading variant="h4">Smart Positioning</PopoverHeading>
22011
- * <PopoverDescription>
22012
- * This popover automatically adjusts its position to stay in view.
22013
- * </PopoverDescription>
22014
- * <PopoverClose>Close</PopoverClose>
22015
- * </PopoverContent>
22016
- * </Popover>
22017
- * ```
22018
- *
22019
- * @example
22020
- * ```tsx
22021
- * // Modal popover with controlled state
22022
- * <Popover modal open={isOpen} onOpenChange={setIsOpen}>
22023
- * <PopoverTrigger>
22024
- * <Button>Open Modal Popover</Button>
22025
- * </PopoverTrigger>
22026
- * <PopoverContent>
22027
- * <PopoverHeading variant="h4">Modal Popover</PopoverHeading>
22028
- * <PopoverDescription>
22029
- * This is a modal popover that traps focus.
22030
- * </PopoverDescription>
22031
- * <PopoverClose>Close</PopoverClose>
22032
- * </PopoverContent>
22033
- * </Popover>
22034
- * ```
22035
- *
22036
- * @see {@link PopoverTrigger} - Trigger element component
22037
- * @see {@link PopoverContent} - Content display component
22038
- * @see {@link PopoverHeading} - Accessible heading component
22039
- * @see {@link PopoverDescription} - Accessible description component
22040
- * @see {@link PopoverClose} - Close button component
22041
- *
22042
- * @accessibility
22043
- * - Keyboard accessible (ESC to close, Enter/Space to activate)
22044
- * - Focus management with FloatingFocusManager for modal popovers
22045
- * - ARIA attributes automatically applied (role, aria-labelledby, aria-describedby)
22046
- * - Screen reader friendly with semantic heading and description components
22047
- * - Focus trap for modal popovers
22048
- */
22049
-
22050
- const Popover = ({
22051
- children,
22052
- modal = false,
22053
- ...restOptions
22054
- }) => {
22055
- // This can accept any props as options, e.g. `placement`,
22056
- // or other positioning options.
22057
- const popover = usePopover({
22058
- modal,
22059
- ...restOptions
22060
- });
22061
- return (0,jsx_runtime_namespaceObject.jsx)(PopoverContext.Provider, {
22062
- value: popover,
22063
- children: children
22064
- });
22065
- };
22066
- ;// ./src/components/Popover/PopoverContent.tsx
22067
- function PopoverContent_EMOTION_STRINGIFIED_CSS_ERROR_() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
22068
-
22069
-
22070
-
22071
-
22072
-
22073
- var PopoverContent_ref = true ? {
22074
- name: "3abrc0",
22075
- styles: "width:auto"
22076
- } : 0;
22077
- /**
22078
- * PopoverContent - Content container for popover
22079
- *
22080
- * Renders the actual popover content that appears when the trigger is activated.
22081
- * Automatically positioned using Floating UI, supports portal rendering, and
22082
- * includes focus management for modal popovers. Can be configured to unmount
22083
- * or keep mounted when closed.
22084
- *
22085
- * @category Components
22086
- * @subcategory Overlay
22087
- *
22088
- * @example
22089
- * ```tsx
22090
- * <PopoverContent>
22091
- * <PopoverHeading variant="h4">Title</PopoverHeading>
22092
- * <PopoverDescription>Content goes here</PopoverDescription>
22093
- * <PopoverClose>Close</PopoverClose>
22094
- * </PopoverContent>
22095
- * ```
22096
- *
22097
- * @example
22098
- * ```tsx
22099
- * // Keep content mounted when closed
22100
- * <PopoverContent mountMode="keep-mounted">
22101
- * <div>This stays in DOM when closed</div>
22102
- * </PopoverContent>
22103
- * ```
22104
- *
22105
- * @see {@link Popover} - Root component
22106
- * @see {@link PopoverTrigger} - Trigger element component
22107
- * @see {@link PopoverHeading} - Accessible heading component
22108
- * @see {@link PopoverDescription} - Accessible description component
22109
- */
22110
- const PopoverContent = /*#__PURE__*/external_react_namespaceObject.forwardRef(function PopoverContent({
22111
- style,
22112
- isFocusManagerDisabled = false,
22113
- mountMode = 'unmount',
22114
- ...props
22115
- }, propRef) {
22116
- const {
22117
- context: floatingContext,
22118
- ...context
22119
- } = usePopoverContext();
22120
- const ref = (0,external_floating_ui_react_namespaceObject.useMergeRefs)([context.refs.setFloating, propRef]);
22121
- const keepMounted = mountMode === 'keep-mounted';
22122
- if (!keepMounted && !floatingContext.open) return null;
22123
- const hidden = keepMounted && !floatingContext.open;
22124
- return (0,jsx_runtime_namespaceObject.jsx)(external_floating_ui_react_namespaceObject.FloatingPortal, {
22125
- children: (0,jsx_runtime_namespaceObject.jsx)(external_floating_ui_react_namespaceObject.FloatingFocusManager, {
22126
- context: floatingContext,
22127
- modal: context.modal,
22128
- disabled: isFocusManagerDisabled,
22129
- children: (0,jsx_runtime_namespaceObject.jsx)(Wrapper_Wrapper, {
22130
- ref: ref,
22131
- css: PopoverContent_ref,
22132
- style: {
22133
- ...context.floatingStyles,
22134
- ...(hidden ? {
22135
- display: 'none',
22136
- pointerEvents: 'none'
22137
- } : null),
22138
- ...style
22139
- },
22140
- "aria-labelledby": context.labelId,
22141
- "aria-describedby": context.descriptionId,
22142
- direction: "column",
22143
- ...context.getFloatingProps(props),
22144
- children: props.children
22145
- })
22146
- })
22147
- });
22148
- });
22149
22619
  ;// ./src/components/Popover/PopoverDescription.tsx
22150
22620
 
22151
22621
 
@@ -22625,95 +23095,6 @@ const TypeaheadFocusTrap = ({
22625
23095
  };
22626
23096
  ;// external "@emotion/css"
22627
23097
  const css_namespaceObject = require("@emotion/css");
22628
- ;// ./src/components/Popover/PopoverTrigger.tsx
22629
-
22630
-
22631
-
22632
-
22633
-
22634
- /**
22635
- * PopoverTrigger - Trigger element for popover
22636
- *
22637
- * Activates the popover when interacted with. By default renders as a Button,
22638
- * but can be customized using the `asChild` prop to render as any React element.
22639
- * Automatically receives Floating UI reference props for positioning and state
22640
- * management.
22641
- *
22642
- * @category Components
22643
- * @subcategory Overlay
22644
- *
22645
- * @example
22646
- * ```tsx
22647
- * // Default Button trigger
22648
- * <PopoverTrigger>
22649
- * Open Popover
22650
- * </PopoverTrigger>
22651
- * ```
22652
- *
22653
- * @example
22654
- * ```tsx
22655
- * // Custom element trigger
22656
- * <PopoverTrigger asChild>
22657
- * <Icon name="info" />
22658
- * </PopoverTrigger>
22659
- * ```
22660
- *
22661
- * @see {@link Popover} - Root component
22662
- * @see {@link PopoverContent} - Content display component
22663
- */
22664
- const PopoverTrigger = /*#__PURE__*/external_react_namespaceObject.forwardRef(function PopoverTrigger({
22665
- children,
22666
- asChild = false,
22667
- dataTestId = 'trigger-button',
22668
- variant = 'primary',
22669
- ...props
22670
- }, propRef) {
22671
- const context = usePopoverContext();
22672
-
22673
- // `asChild` allows the user to pass any element as the anchor
22674
- if (asChild && /*#__PURE__*/external_react_namespaceObject.isValidElement(children)) {
22675
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
22676
- const childrenElement = children;
22677
-
22678
- // Extract ref from children props BEFORE calling getReferenceProps to avoid conflicts
22679
- // In React 19, refs are regular props, but forwardRef components may not expose them in children.props.ref
22680
- // We extract it here for backward compatibility
22681
- const {
22682
- ref: existingChildrenRef,
22683
- ...childrenPropsWithoutRef
22684
- } = childrenElement.props || {};
22685
-
22686
- // Merge all refs: floating-ui's setReference, children's ref, and propRef
22687
- // This ensures positioning works while preserving any refs passed to the child component
22688
- const mergedRef = (0,external_floating_ui_react_namespaceObject.useMergeRefs)([context?.refs.setReference, existingChildrenRef, propRef]);
22689
-
22690
- // Get reference props from floating-ui - pass the merged ref to it
22691
- // This ensures floating-ui gets the correct element for positioning
22692
- const referenceProps = context?.getReferenceProps({
22693
- ref: mergedRef,
22694
- ...props,
22695
- ...childrenPropsWithoutRef,
22696
- 'data-state': context.open ? 'open' : 'closed'
22697
- });
22698
-
22699
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
22700
- return /*#__PURE__*/external_react_namespaceObject.cloneElement(children, referenceProps);
22701
- }
22702
-
22703
- // For non-asChild case, merge refs normally
22704
- const childrenRef = /*#__PURE__*/external_react_namespaceObject.isValidElement(children) ? children.props?.ref : undefined;
22705
- const ref = (0,external_floating_ui_react_namespaceObject.useMergeRefs)([context?.refs.setReference, propRef, childrenRef]);
22706
- return (0,jsx_runtime_namespaceObject.jsx)(Button_Button, {
22707
- "data-testid": dataTestId,
22708
- ref: ref
22709
- // The user can style the trigger based on the state
22710
- ,
22711
- "data-state": context?.open ? 'open' : 'closed',
22712
- variant: variant,
22713
- ...context?.getReferenceProps(props),
22714
- children: children
22715
- });
22716
- });
22717
23098
  ;// ./src/components/Typeahead/styles.ts
22718
23099
 
22719
23100
  function Typeahead_styles_EMOTION_STRINGIFIED_CSS_ERROR_() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
@@ -43324,29 +43705,6 @@ var nivo_legends_v=function(e){var i=e.x,n=e.y,o=e.size,r=e.fill,l=e.opacity,a=v
43324
43705
  function nivo_pie_E(){return nivo_pie_E=Object.assign?Object.assign.bind():function(e){for(var i=1;i<arguments.length;i++){var t=arguments[i];for(var a in t)({}).hasOwnProperty.call(t,a)&&(e[a]=t[a])}return e},nivo_pie_E.apply(null,arguments)}function nivo_pie_F(e,i){if(null==e)return{};var t={};for(var a in e)if({}.hasOwnProperty.call(e,a)){if(-1!==i.indexOf(a))continue;t[a]=e[a]}return t}var nivo_pie_X,nivo_pie_Y=function(e){var i=e.width,t=e.height,a=e.legends,n=e.data,r=e.toggleSerie;return (0,external_react_jsx_runtime_namespaceObject.jsx)(external_react_jsx_runtime_namespaceObject.Fragment,{children:a.map((function(e,a){var o;return (0,external_react_jsx_runtime_namespaceObject.jsx)(nivo_legends_E,nivo_pie_E({},e,{containerWidth:i,containerHeight:t,data:null!=(o=e.data)?o:n,toggleSerie:e.toggleSerie?r:void 0}),a)}))})},nivo_pie_P={id:"id",value:"value",sortByValue:!1,innerRadius:0,padAngle:0,cornerRadius:0,layers:["arcs","arcLinkLabels","arcLabels","legends"],startAngle:0,endAngle:360,fit:!0,activeInnerRadiusOffset:0,activeOuterRadiusOffset:0,borderWidth:0,borderColor:{from:"color",modifiers:[["darker",1]]},enableArcLabels:!0,arcLabel:"formattedValue",arcLabelsSkipAngle:0,arcLabelsSkipRadius:0,arcLabelsRadiusOffset:.5,arcLabelsTextColor:{theme:"labels.text.fill"},enableArcLinkLabels:!0,arcLinkLabel:"id",arcLinkLabelsSkipAngle:0,arcLinkLabelsOffset:0,arcLinkLabelsDiagonalLength:16,arcLinkLabelsStraightLength:24,arcLinkLabelsThickness:1,arcLinkLabelsTextOffset:6,arcLinkLabelsTextColor:{theme:"labels.text.fill"},arcLinkLabelsColor:{theme:"axis.ticks.line.stroke"},colors:{scheme:"nivo"},defs:[],fill:[],isInteractive:!0,animate:!0,motionConfig:"gentle",transitionMode:"innerRadius",tooltip:function(e){var i=e.datum;return (0,external_react_jsx_runtime_namespaceObject.jsx)(T,{id:i.id,value:i.formattedValue,enableChip:!0,color:i.color})},legends:[],role:"img",pixelRatio:"undefined"!=typeof window&&null!=(nivo_pie_X=window.devicePixelRatio)?nivo_pie_X:1},nivo_pie_j=["points"],nivo_pie_q=function(i){var t=i.data,a=i.id,n=void 0===a?nivo_pie_P.id:a,r=i.value,o=void 0===r?nivo_pie_P.value:r,d=i.valueFormat,c=i.colors,u=void 0===c?nivo_pie_P.colors:c,f=bn(n),v=bn(o),g=hn(d),h=hr(u,"id");return (0,external_react_namespaceObject.useMemo)((function(){return t.map((function(e){var i,t=f(e),a=v(e),n={id:t,label:null!=(i=e.label)?i:t,hidden:!1,value:a,formattedValue:g(a),data:e};return nivo_pie_E({},n,{color:h(n)})}))}),[t,f,v,g,h])},nivo_pie_J=function(a){var n=a.data,r=a.startAngle,o=a.endAngle,d=a.innerRadius,l=a.outerRadius,s=a.padAngle,f=a.sortByValue,v=a.activeId,g=a.activeInnerRadiusOffset,h=a.activeOuterRadiusOffset,L=a.hiddenIds,b=a.forwardLegendData,A=(0,external_react_namespaceObject.useMemo)((function(){var e=pie().value((function(e){return e.value})).startAngle(ut(r)).endAngle(ut(o)).padAngle(ut(s));return f||e.sortValues(null),e}),[r,o,s,f]),p=(0,external_react_namespaceObject.useMemo)((function(){var e=n.filter((function(e){return!L.includes(e.id)}));return{dataWithArc:A(e).map((function(e){var i=Math.abs(e.endAngle-e.startAngle);return nivo_pie_E({},e.data,{arc:{index:e.index,startAngle:e.startAngle,endAngle:e.endAngle,innerRadius:v===e.data.id?d-g:d,outerRadius:v===e.data.id?l+h:l,thickness:l-d,padAngle:e.padAngle,angle:i,angleDeg:ct(i)}})})),legendData:n.map((function(e){return{id:e.id,label:e.label,color:e.color,hidden:L.includes(e.id),data:e}}))}}),[A,n,L,v,d,g,l,h]),R=p.legendData,k=(0,external_react_namespaceObject.useRef)(b);return (0,external_react_namespaceObject.useEffect)((function(){"function"==typeof k.current&&k.current(R)}),[k,R]),p},nivo_pie_K=function(e){var i=e.activeId,t=e.onActiveIdChange,r=e.defaultActiveId,o=void 0!==i,d=(0,external_react_namespaceObject.useState)(o?null:void 0===r?null:r),l=d[0],s=d[1];return{activeId:o?i:l,setActiveId:(0,external_react_namespaceObject.useCallback)((function(e){t&&t(e),o||s(e)}),[o,t,s])}},nivo_pie_N=function(e){var i=e.data,t=e.radius,r=e.innerRadius,o=e.startAngle,d=void 0===o?nivo_pie_P.startAngle:o,l=e.endAngle,s=void 0===l?nivo_pie_P.endAngle:l,u=e.padAngle,f=void 0===u?nivo_pie_P.padAngle:u,v=e.sortByValue,g=void 0===v?nivo_pie_P.sortByValue:v,h=e.cornerRadius,L=void 0===h?nivo_pie_P.cornerRadius:h,b=e.activeInnerRadiusOffset,A=void 0===b?nivo_pie_P.activeInnerRadiusOffset:b,R=e.activeOuterRadiusOffset,k=void 0===R?nivo_pie_P.activeOuterRadiusOffset:R,m=e.activeId,I=e.onActiveIdChange,O=e.defaultActiveId,C=e.forwardLegendData,w=nivo_pie_K({activeId:m,onActiveIdChange:I,defaultActiveId:O}),x=w.activeId,W=w.setActiveId,M=a([]),y=M[0],S=M[1],T=nivo_pie_J({data:i,startAngle:d,endAngle:s,innerRadius:r,outerRadius:t,padAngle:f,sortByValue:g,activeId:x,activeInnerRadiusOffset:A,activeOuterRadiusOffset:k,hiddenIds:y,forwardLegendData:C}),D=n((function(e){S((function(i){return i.indexOf(e)>-1?i.filter((function(i){return i!==e})):[].concat(i,[e])}))}),[]);return nivo_pie_E({},T,{arcGenerator:p({cornerRadius:L,padAngle:c(f)}),setActiveId:W,toggleSerie:D})},nivo_pie_Q=function(i){var t=i.data,r=i.width,o=i.height,d=i.innerRadius,l=void 0===d?nivo_pie_P.innerRadius:d,s=i.startAngle,u=void 0===s?nivo_pie_P.startAngle:s,f=i.endAngle,v=void 0===f?nivo_pie_P.endAngle:f,g=i.padAngle,h=void 0===g?nivo_pie_P.padAngle:g,L=i.sortByValue,b=void 0===L?nivo_pie_P.sortByValue:L,A=i.cornerRadius,k=void 0===A?nivo_pie_P.cornerRadius:A,m=i.fit,I=void 0===m?nivo_pie_P.fit:m,O=i.activeInnerRadiusOffset,C=void 0===O?nivo_pie_P.activeInnerRadiusOffset:O,w=i.activeOuterRadiusOffset,x=void 0===w?nivo_pie_P.activeOuterRadiusOffset:w,W=i.activeId,M=i.onActiveIdChange,y=i.defaultActiveId,S=i.forwardLegendData,T=nivo_pie_K({activeId:W,onActiveIdChange:M,defaultActiveId:y}),D=T.activeId,V=T.setActiveId,B=(0,external_react_namespaceObject.useState)([]),z=B[0],H=B[1],G=(0,external_react_namespaceObject.useMemo)((function(){var e,i=Math.min(r,o)/2,t=i*Math.min(l,1),a=r/2,n=o/2;if(I){var d=nivo_arcs_sn(a,n,i,u-90,v-90),s=d.points,c=nivo_pie_F(d,nivo_pie_j),f=Math.min(r/c.width,o/c.height),g={width:c.width*f,height:c.height*f};g.x=(r-g.width)/2,g.y=(o-g.height)/2,a=(a-c.x)/c.width*c.width*f+g.x,n=(n-c.y)/c.height*c.height*f+g.y,e={box:c,ratio:f,points:s},i*=f,t*=f}return{centerX:a,centerY:n,radius:i,innerRadius:t,debug:e}}),[r,o,l,u,v,I]),X=nivo_pie_J({data:t,startAngle:u,endAngle:v,innerRadius:G.innerRadius,outerRadius:G.radius,padAngle:h,sortByValue:b,activeId:D,activeInnerRadiusOffset:C,activeOuterRadiusOffset:x,hiddenIds:z,forwardLegendData:S}),Y=(0,external_react_namespaceObject.useCallback)((function(e){H((function(i){return i.indexOf(e)>-1?i.filter((function(i){return i!==e})):[].concat(i,[e])}))}),[]);return nivo_pie_E({arcGenerator:nivo_arcs_fn({cornerRadius:k,padAngle:ut(h)}),activeId:D,setActiveId:V,toggleSerie:Y},X,G)},nivo_pie_U=function(i){var t=i.dataWithArc,a=i.arcGenerator,n=i.centerX,r=i.centerY,o=i.radius,d=i.innerRadius;return (0,external_react_namespaceObject.useMemo)((function(){return{dataWithArc:t,arcGenerator:a,centerX:n,centerY:r,radius:o,innerRadius:d}}),[t,a,n,r,o,d])},Z=function(i){var t=i.center,a=i.data,n=i.arcGenerator,o=i.borderWidth,d=i.borderColor,l=i.isInteractive,s=i.onClick,c=i.onMouseEnter,u=i.onMouseMove,f=i.onMouseLeave,v=i.setActiveId,g=i.tooltip,h=i.transitionMode,L=nivo_tooltip_z(),b=L.showTooltipFromEvent,A=L.hideTooltip,p=(0,external_react_namespaceObject.useMemo)((function(){if(l)return function(e,i){null==s||s(e,i)}}),[l,s]),R=(0,external_react_namespaceObject.useMemo)((function(){if(l)return function(e,i){b((0,external_react_namespaceObject.createElement)(g,{datum:e}),i),v(e.id),null==c||c(e,i)}}),[l,b,v,c,g]),m=(0,external_react_namespaceObject.useMemo)((function(){if(l)return function(e,i){b((0,external_react_namespaceObject.createElement)(g,{datum:e}),i),null==u||u(e,i)}}),[l,b,u,g]),I=(0,external_react_namespaceObject.useMemo)((function(){if(l)return function(e,i){A(),v(null),null==f||f(e,i)}}),[l,A,v,f]);return (0,external_react_jsx_runtime_namespaceObject.jsx)(nivo_arcs_un,{center:t,data:a,arcGenerator:n,borderWidth:o,borderColor:d,transitionMode:h,onClick:p,onMouseEnter:R,onMouseMove:m,onMouseLeave:I})},nivo_pie_$=["isInteractive","animate","motionConfig","theme","renderWrapper"],nivo_pie_=function(e){var i=e.data,t=e.id,a=void 0===t?nivo_pie_P.id:t,n=e.value,o=void 0===n?nivo_pie_P.value:n,l=e.valueFormat,s=e.sortByValue,c=void 0===s?nivo_pie_P.sortByValue:s,u=e.layers,f=void 0===u?nivo_pie_P.layers:u,L=e.startAngle,b=void 0===L?nivo_pie_P.startAngle:L,A=e.endAngle,p=void 0===A?nivo_pie_P.endAngle:A,R=e.padAngle,k=void 0===R?nivo_pie_P.padAngle:R,O=e.fit,C=void 0===O?nivo_pie_P.fit:O,w=e.innerRadius,x=void 0===w?nivo_pie_P.innerRadius:w,W=e.cornerRadius,M=void 0===W?nivo_pie_P.cornerRadius:W,y=e.activeInnerRadiusOffset,T=void 0===y?nivo_pie_P.activeInnerRadiusOffset:y,D=e.activeOuterRadiusOffset,V=void 0===D?nivo_pie_P.activeOuterRadiusOffset:D,B=e.width,z=e.height,H=e.margin,G=e.colors,E=void 0===G?nivo_pie_P.colors:G,F=e.borderWidth,X=void 0===F?nivo_pie_P.borderWidth:F,j=e.borderColor,J=void 0===j?nivo_pie_P.borderColor:j,K=e.enableArcLabels,N=void 0===K?nivo_pie_P.enableArcLabels:K,$=e.arcLabel,_=void 0===$?nivo_pie_P.arcLabel:$,ee=e.arcLabelsSkipAngle,ie=void 0===ee?nivo_pie_P.arcLabelsSkipAngle:ee,te=e.arcLabelsSkipRadius,ae=void 0===te?nivo_pie_P.arcLabelsSkipRadius:te,ne=e.arcLabelsTextColor,re=void 0===ne?nivo_pie_P.arcLabelsTextColor:ne,oe=e.arcLabelsRadiusOffset,de=void 0===oe?nivo_pie_P.arcLabelsRadiusOffset:oe,le=e.arcLabelsComponent,se=e.enableArcLinkLabels,ce=void 0===se?nivo_pie_P.enableArcLinkLabels:se,ue=e.arcLinkLabel,fe=void 0===ue?nivo_pie_P.arcLinkLabel:ue,ve=e.arcLinkLabelsSkipAngle,ge=void 0===ve?nivo_pie_P.arcLinkLabelsSkipAngle:ve,he=e.arcLinkLabelsOffset,Le=void 0===he?nivo_pie_P.arcLinkLabelsOffset:he,be=e.arcLinkLabelsDiagonalLength,Ae=void 0===be?nivo_pie_P.arcLinkLabelsDiagonalLength:be,pe=e.arcLinkLabelsStraightLength,Re=void 0===pe?nivo_pie_P.arcLinkLabelsStraightLength:pe,ke=e.arcLinkLabelsThickness,me=void 0===ke?nivo_pie_P.arcLinkLabelsThickness:ke,Ie=e.arcLinkLabelsTextOffset,Oe=void 0===Ie?nivo_pie_P.arcLinkLabelsTextOffset:Ie,Ce=e.arcLinkLabelsTextColor,we=void 0===Ce?nivo_pie_P.arcLinkLabelsTextColor:Ce,xe=e.arcLinkLabelsColor,We=void 0===xe?nivo_pie_P.arcLinkLabelsColor:xe,Me=e.arcLinkLabelComponent,ye=e.defs,Se=void 0===ye?nivo_pie_P.defs:ye,Te=e.fill,De=void 0===Te?nivo_pie_P.fill:Te,Ve=e.isInteractive,Be=void 0===Ve?nivo_pie_P.isInteractive:Ve,ze=e.onClick,He=e.onMouseEnter,Ge=e.onMouseMove,Ee=e.onMouseLeave,Fe=e.tooltip,Xe=void 0===Fe?nivo_pie_P.tooltip:Fe,Ye=e.activeId,Pe=e.onActiveIdChange,je=e.defaultActiveId,qe=e.transitionMode,Je=void 0===qe?nivo_pie_P.transitionMode:qe,Ke=e.legends,Ne=void 0===Ke?nivo_pie_P.legends:Ke,Qe=e.forwardLegendData,Ue=e.role,Ze=void 0===Ue?nivo_pie_P.role:Ue,$e=e.forwardedRef,_e=cn(B,z,H),ei=_e.outerWidth,ii=_e.outerHeight,ti=_e.margin,ai=_e.innerWidth,ni=_e.innerHeight,ri=nivo_pie_q({data:i,id:a,value:o,valueFormat:l,colors:E}),oi=nivo_pie_Q({data:ri,width:ai,height:ni,fit:C,innerRadius:x,startAngle:b,endAngle:p,padAngle:k,sortByValue:c,cornerRadius:M,activeInnerRadiusOffset:T,activeOuterRadiusOffset:V,activeId:Ye,onActiveIdChange:Pe,defaultActiveId:je,forwardLegendData:Qe}),di=oi.dataWithArc,li=oi.legendData,si=oi.arcGenerator,ci=oi.centerX,ui=oi.centerY,fi=oi.radius,vi=oi.innerRadius,gi=oi.setActiveId,hi=oi.toggleSerie,Li=Mn(Se,di,De),bi={arcs:null,arcLinkLabels:null,arcLabels:null,legends:null};f.includes("arcs")&&(bi.arcs=(0,external_react_jsx_runtime_namespaceObject.jsx)(Z,{center:[ci,ui],data:di,arcGenerator:si,borderWidth:X,borderColor:J,isInteractive:Be,onClick:ze,onMouseEnter:He,onMouseMove:Ge,onMouseLeave:Ee,setActiveId:gi,tooltip:Xe,transitionMode:Je},"arcs")),ce&&f.includes("arcLinkLabels")&&(bi.arcLinkLabels=(0,external_react_jsx_runtime_namespaceObject.jsx)(Y,{center:[ci,ui],data:di,label:fe,skipAngle:ge,offset:Le,diagonalLength:Ae,straightLength:Re,strokeWidth:me,textOffset:Oe,textColor:we,linkColor:We,component:Me},"arcLinkLabels")),N&&f.includes("arcLabels")&&(bi.arcLabels=(0,external_react_jsx_runtime_namespaceObject.jsx)(q,{center:[ci,ui],data:di,label:_,radiusOffset:de,skipAngle:ie,skipRadius:ae,textColor:re,transitionMode:Je,component:le},"arcLabels")),Ne.length>0&&f.includes("legends")&&(bi.legends=(0,external_react_jsx_runtime_namespaceObject.jsx)(nivo_pie_Y,{width:ai,height:ni,data:li,legends:Ne,toggleSerie:hi},"legends"));var Ai=nivo_pie_U({dataWithArc:di,arcGenerator:si,centerX:ci,centerY:ui,radius:fi,innerRadius:vi});return (0,external_react_jsx_runtime_namespaceObject.jsx)(Rt,{width:ei,height:ii,margin:ti,defs:Li,role:Ze,ref:$e,children:f.map((function(e,i){return void 0!==bi[e]?bi[e]:"function"==typeof e?(0,external_react_jsx_runtime_namespaceObject.jsx)(external_react_namespaceObject.Fragment,{children:(0,external_react_namespaceObject.createElement)(e,Ai)},i):null}))})},ee=(0,external_react_namespaceObject.forwardRef)((function(e,i){var t=e.isInteractive,a=void 0===t?nivo_pie_P.isInteractive:t,n=e.animate,r=void 0===n?nivo_pie_P.animate:n,o=e.motionConfig,d=void 0===o?nivo_pie_P.motionConfig:o,l=e.theme,s=e.renderWrapper,c=nivo_pie_F(e,nivo_pie_$);return (0,external_react_jsx_runtime_namespaceObject.jsx)(Fr,{animate:r,isInteractive:a,motionConfig:d,renderWrapper:s,theme:l,children:(0,external_react_jsx_runtime_namespaceObject.jsx)(nivo_pie_,nivo_pie_E({isInteractive:a},c,{forwardedRef:i}))})})),ie=["defaultWidth","defaultHeight","onResize","debounceResize"],te=(0,external_react_namespaceObject.forwardRef)((function(e,i){var t=e.defaultWidth,a=e.defaultHeight,n=e.onResize,r=e.debounceResize,o=nivo_pie_F(e,ie);return (0,external_react_jsx_runtime_namespaceObject.jsx)($r,{defaultWidth:t,defaultHeight:a,onResize:n,debounceResize:r,children:function(e){var t=e.width,a=e.height;return (0,external_react_jsx_runtime_namespaceObject.jsx)(ee,nivo_pie_E({width:t,height:a},o,{ref:i}))}})})),nivo_pie_ae=["isInteractive","theme","renderWrapper"],ne=function(a){var n=a.data,o=a.id,d=void 0===o?nivo_pie_P.id:o,l=a.value,s=void 0===l?nivo_pie_P.value:l,c=a.valueFormat,u=a.sortByValue,f=void 0===u?nivo_pie_P.sortByValue:u,g=a.startAngle,h=void 0===g?nivo_pie_P.startAngle:g,L=a.endAngle,p=void 0===L?nivo_pie_P.endAngle:L,R=a.padAngle,k=void 0===R?nivo_pie_P.padAngle:R,m=a.fit,I=void 0===m?nivo_pie_P.fit:m,M=a.innerRadius,T=void 0===M?nivo_pie_P.innerRadius:M,D=a.cornerRadius,V=void 0===D?nivo_pie_P.cornerRadius:D,z=a.activeInnerRadiusOffset,F=void 0===z?nivo_pie_P.activeInnerRadiusOffset:z,X=a.activeOuterRadiusOffset,Y=void 0===X?nivo_pie_P.activeOuterRadiusOffset:X,j=a.width,J=a.height,K=a.margin,N=a.pixelRatio,U=void 0===N?nivo_pie_P.pixelRatio:N,Z=a.colors,$=void 0===Z?nivo_pie_P.colors:Z,_=a.borderWidth,ee=void 0===_?nivo_pie_P.borderWidth:_,ie=a.borderColor,te=void 0===ie?nivo_pie_P.borderColor:ie,ae=a.enableArcLabels,ne=void 0===ae?nivo_pie_P.enableArcLabels:ae,re=a.arcLabel,oe=void 0===re?nivo_pie_P.arcLabel:re,de=a.arcLabelsSkipAngle,le=void 0===de?nivo_pie_P.arcLabelsSkipAngle:de,se=a.arcLabelsTextColor,ce=void 0===se?nivo_pie_P.arcLabelsTextColor:se,ue=a.arcLabelsRadiusOffset,fe=void 0===ue?nivo_pie_P.arcLabelsRadiusOffset:ue,ve=a.enableArcLinkLabels,ge=void 0===ve?nivo_pie_P.enableArcLinkLabels:ve,he=a.arcLinkLabel,Le=void 0===he?nivo_pie_P.arcLinkLabel:he,be=a.arcLinkLabelsSkipAngle,Ae=void 0===be?nivo_pie_P.arcLinkLabelsSkipAngle:be,pe=a.arcLinkLabelsOffset,Re=void 0===pe?nivo_pie_P.arcLinkLabelsOffset:pe,ke=a.arcLinkLabelsDiagonalLength,me=void 0===ke?nivo_pie_P.arcLinkLabelsDiagonalLength:ke,Ie=a.arcLinkLabelsStraightLength,Oe=void 0===Ie?nivo_pie_P.arcLinkLabelsStraightLength:Ie,Ce=a.arcLinkLabelsThickness,we=void 0===Ce?nivo_pie_P.arcLinkLabelsThickness:Ce,xe=a.arcLinkLabelsTextOffset,We=void 0===xe?nivo_pie_P.arcLinkLabelsTextOffset:xe,Me=a.arcLinkLabelsTextColor,ye=void 0===Me?nivo_pie_P.arcLinkLabelsTextColor:Me,Se=a.arcLinkLabelsColor,Te=void 0===Se?nivo_pie_P.arcLinkLabelsColor:Se,De=a.isInteractive,Ve=void 0===De?nivo_pie_P.isInteractive:De,Be=a.onClick,ze=a.onMouseMove,He=a.tooltip,Ge=void 0===He?nivo_pie_P.tooltip:He,Ee=a.activeId,Fe=a.onActiveIdChange,Xe=a.defaultActiveId,Ye=a.legends,Pe=void 0===Ye?nivo_pie_P.legends:Ye,je=a.forwardLegendData,qe=a.role,Je=a.forwardedRef,Ke=(0,external_react_namespaceObject.useRef)(null),Ne=nivo_theming_M(),Qe=cn(j,J,K),Ue=Qe.margin,Ze=Qe.innerWidth,$e=Qe.innerHeight,_e=Qe.outerWidth,ei=Qe.outerHeight,ii=nivo_pie_q({data:n,id:d,value:s,valueFormat:c,colors:$}),ti=nivo_pie_Q({data:ii,width:Ze,height:$e,fit:I,innerRadius:T,startAngle:h,endAngle:p,padAngle:k,sortByValue:f,cornerRadius:V,activeInnerRadiusOffset:F,activeOuterRadiusOffset:Y,activeId:Ee,onActiveIdChange:Fe,defaultActiveId:Xe,forwardLegendData:je}),ai=ti.dataWithArc,ni=ti.arcGenerator,ri=ti.centerX,oi=ti.centerY,di=ti.radius,li=ti.innerRadius,si=ti.setActiveId,ci=nivo_colors_Ye(te,Ne),ui=nivo_arcs_D({data:ai,label:oe,skipAngle:le,offset:fe,textColor:ce}),fi=nivo_arcs_({data:ai,skipAngle:Ae,offset:Re,diagonalLength:me,straightLength:Oe,label:Le,linkColor:Te,textOffset:We,textColor:ye});(0,external_react_namespaceObject.useEffect)((function(){if(Ke.current){Ke.current.width=_e*U,Ke.current.height=ei*U;var e=Ke.current.getContext("2d");e.scale(U,U),e.fillStyle=Ne.background,e.fillRect(0,0,_e,ei),e.save(),e.translate(Ue.left,Ue.top),ni.context(e),e.save(),e.translate(ri,oi),ai.forEach((function(i){e.beginPath(),e.fillStyle=i.color,e.strokeStyle=ci(i),e.lineWidth=ee,ni(i.arc),e.fill(),ee>0&&e.stroke()})),!0===ge&&nivo_arcs_Z(e,fi,Ne,we),!0===ne&&nivo_arcs_z(e,ui,Ne),e.restore(),Pe.forEach((function(i){nivo_legends_L(e,nivo_pie_E({},i,{data:ai,containerWidth:Ze,containerHeight:$e,theme:Ne}))}))}}),[Ke,Ze,$e,_e,ei,Ue.top,Ue.left,U,ri,oi,ni,ai,ee,ci,ne,ui,ge,fi,we,Pe,Ne]);var vi=(0,external_react_namespaceObject.useMemo)((function(){return ai.map((function(e){return nivo_pie_E({id:e.id},e.arc)}))}),[ai]),gi=function(e){if(!Ke.current)return null;var i=kn(Ke.current,e),t=i[0],a=i[1],n=nivo_arcs_dn(Ue.left+ri,Ue.top+oi,di,li,vi,t,a);return n?ai.find((function(e){return e.id===n.id})):null},hi=nivo_tooltip_z(),Li=hi.showTooltipFromEvent,bi=hi.hideTooltip,Ai=function(e){var i=gi(e);i?(null==ze||ze(i,e),si(i.id),Li((0,external_react_namespaceObject.createElement)(Ge,{datum:i}),e)):(si(null),bi())};return (0,external_react_jsx_runtime_namespaceObject.jsx)("canvas",{ref:Rn(Ke,Je),width:_e*U,height:ei*U,style:{width:_e,height:ei,cursor:Ve?"auto":"normal"},onMouseEnter:Ve?Ai:void 0,onMouseMove:Ve?Ai:void 0,onMouseLeave:Ve?function(){bi()}:void 0,onClick:Ve?function(e){if(Be){var i=gi(e);i&&Be(i,e)}}:void 0,role:qe})},nivo_pie_re=(0,external_react_namespaceObject.forwardRef)((function(e,i){var t=e.isInteractive,a=void 0===t?nivo_pie_P.isInteractive:t,n=e.theme,r=e.renderWrapper,o=nivo_pie_F(e,nivo_pie_ae);return (0,external_react_jsx_runtime_namespaceObject.jsx)(Fr,{isInteractive:a,renderWrapper:r,theme:n,children:(0,external_react_jsx_runtime_namespaceObject.jsx)(ne,nivo_pie_E({isInteractive:a},o,{forwardedRef:i}))})})),oe=["defaultWidth","defaultHeight","onResize","debounceResize"],nivo_pie_de=(0,external_react_namespaceObject.forwardRef)((function(e,i){var t=e.defaultWidth,a=e.defaultHeight,n=e.onResize,r=e.debounceResize,o=nivo_pie_F(e,oe);return (0,external_react_jsx_runtime_namespaceObject.jsx)($r,{defaultWidth:t,defaultHeight:a,onResize:n,debounceResize:r,children:function(e){var t=e.width,a=e.height;return (0,external_react_jsx_runtime_namespaceObject.jsx)(nivo_pie_re,nivo_pie_E({width:t,height:a},o,{ref:i}))}})}));
43325
43706
  //# sourceMappingURL=nivo-pie.mjs.map
43326
43707
 
43327
- ;// external "react-router-dom"
43328
- const external_react_router_dom_namespaceObject = require("react-router-dom");
43329
- ;// ./src/components/WithLink.tsx
43330
- function WithLink_EMOTION_STRINGIFIED_CSS_ERROR_() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
43331
-
43332
-
43333
-
43334
- var WithLink_ref = true ? {
43335
- name: "me5k4h",
43336
- styles: "text-decoration:none;div{cursor:pointer;}"
43337
- } : 0;
43338
- const WithLink = ({
43339
- link,
43340
- onClick,
43341
- children,
43342
- className
43343
- }) => link ? (0,jsx_runtime_namespaceObject.jsx)(external_react_router_dom_namespaceObject.Link, {
43344
- to: link,
43345
- onClick: onClick,
43346
- className: className,
43347
- css: WithLink_ref,
43348
- children: children
43349
- }) : children;
43350
43708
  ;// ./src/components/WidgetCard/WidgetCardBase.tsx
43351
43709
 
43352
43710
 
@@ -58685,6 +59043,7 @@ const UserProfile = ({
58685
59043
 
58686
59044
 
58687
59045
 
59046
+
58688
59047
 
58689
59048
 
58690
59049
  // ============================================================================