@ssa-ui-kit/core 3.17.0 → 3.19.1
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/components/Breadcrumbs/BreadcrumbMenu.d.ts +12 -0
- package/dist/components/Breadcrumbs/Breadcrumbs.d.ts +23 -0
- package/dist/components/Breadcrumbs/index.d.ts +5 -0
- package/dist/components/Breadcrumbs/styles.d.ts +9 -0
- package/dist/components/Breadcrumbs/types.d.ts +57 -0
- package/dist/components/Breadcrumbs/useBreadcrumbs.d.ts +54 -0
- package/dist/components/Breadcrumbs/utils.d.ts +17 -0
- package/dist/components/DatePicker/styles.d.ts +2 -1
- package/dist/components/index.d.ts +1 -0
- package/dist/index.js +883 -503
- package/package.json +3 -3
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)."; }
|
|
@@ -23535,8 +23916,12 @@ const DaysViewCell = /*#__PURE__*/base_default()(Wrapper_Wrapper, true ? {
|
|
|
23535
23916
|
isCalendarDateNow
|
|
23536
23917
|
}) => isCalendarDateNow ? `1px solid ${theme.colors.grey}` : 'none', ";color:", ({
|
|
23537
23918
|
theme,
|
|
23538
|
-
isCalendarDateSelected
|
|
23539
|
-
|
|
23919
|
+
isCalendarDateSelected,
|
|
23920
|
+
isOutOfMonth
|
|
23921
|
+
}) => {
|
|
23922
|
+
if (isCalendarDateSelected) return theme.colors.white;
|
|
23923
|
+
return isOutOfMonth ? theme.colors.grey : theme.colors.greyDarker;
|
|
23924
|
+
}, ";background:", ({
|
|
23540
23925
|
theme,
|
|
23541
23926
|
isCalendarDateSelected
|
|
23542
23927
|
}) => isCalendarDateSelected && theme.palette.primary.main, ";cursor:pointer;user-select:none;&[aria-disabled='true']{color:", ({
|
|
@@ -24275,11 +24660,20 @@ const DaysView = () => {
|
|
|
24275
24660
|
const {
|
|
24276
24661
|
target
|
|
24277
24662
|
} = event;
|
|
24278
|
-
const selectedDay =
|
|
24663
|
+
const selectedDay = target.getAttribute('data-day');
|
|
24279
24664
|
const isEnabled = target.getAttribute('aria-disabled') === 'false';
|
|
24280
|
-
if (isEnabled) {
|
|
24665
|
+
if (isEnabled && selectedDay) {
|
|
24666
|
+
// The clicked cell may belong to the previous/next month (leading or
|
|
24667
|
+
// trailing padding), so its year/month/day must come from data-day
|
|
24668
|
+
// rather than being applied to the currently displayed month —
|
|
24669
|
+
// otherwise e.g. clicking "30 Jul" while viewing August would
|
|
24670
|
+
// silently resolve to 30 Aug. Any time-of-day already chosen via the
|
|
24671
|
+
// time panel is preserved from calendarViewDateTime.
|
|
24672
|
+
const parsedDay = external_luxon_namespaceObject.DateTime.fromFormat(selectedDay, 'D');
|
|
24281
24673
|
const newDate = calendarViewDateTime?.set({
|
|
24282
|
-
|
|
24674
|
+
year: parsedDay.year,
|
|
24675
|
+
month: parsedDay.month,
|
|
24676
|
+
day: parsedDay.day
|
|
24283
24677
|
});
|
|
24284
24678
|
setCalendarViewDateTime(newDate);
|
|
24285
24679
|
setDateTime(newDate);
|
|
@@ -24326,28 +24720,31 @@ const DaysView = () => {
|
|
|
24326
24720
|
if (isHighlightEnabled && lastChangedDate && otherDateDT && dateTime) {
|
|
24327
24721
|
isHighlightDate = highlightDates.mode === 'dateTo' ? otherDateDT < currentDT && currentDT < dateTime : dateTime < currentDT && currentDT < otherDateDT;
|
|
24328
24722
|
}
|
|
24723
|
+
|
|
24724
|
+
// Leading/trailing days from adjacent months are only muted, not
|
|
24725
|
+
// disabled — they're real, selectable dates.
|
|
24329
24726
|
let isAriaDisabled = false;
|
|
24330
24727
|
if (dateMinDT && dateMaxDT) {
|
|
24331
|
-
isAriaDisabled = currentDT < dateMinDT || currentDT > dateMaxDT
|
|
24332
|
-
} else {
|
|
24333
|
-
|
|
24334
|
-
|
|
24335
|
-
|
|
24336
|
-
if (dateMaxDT) {
|
|
24337
|
-
isAriaDisabled = currentDT > dateMaxDT || !isCalendarMonth;
|
|
24338
|
-
}
|
|
24728
|
+
isAriaDisabled = currentDT < dateMinDT || currentDT > dateMaxDT;
|
|
24729
|
+
} else if (dateMinDT) {
|
|
24730
|
+
isAriaDisabled = currentDT < dateMinDT;
|
|
24731
|
+
} else if (dateMaxDT) {
|
|
24732
|
+
isAriaDisabled = currentDT > dateMaxDT;
|
|
24339
24733
|
}
|
|
24734
|
+
const isRangeActive = isHighlightEnabled && !!otherDateDT && !!dateTime;
|
|
24340
24735
|
const rangeEdge = getRangeEdge({
|
|
24341
24736
|
isFirstSelected: isCalendarFirstDateSelected,
|
|
24342
24737
|
isSecondSelected: isCalendarSecondDateSelected,
|
|
24343
|
-
isRangeActive
|
|
24738
|
+
isRangeActive,
|
|
24344
24739
|
mode: highlightDates?.mode
|
|
24345
24740
|
});
|
|
24346
24741
|
return (0,jsx_runtime_namespaceObject.jsx)(DaysViewCell, {
|
|
24347
24742
|
"aria-disabled": isAriaDisabled,
|
|
24348
24743
|
"aria-label": ariaLabel,
|
|
24744
|
+
"data-day": calendarDate,
|
|
24349
24745
|
isCalendarDateNow: isCalendarDateNow,
|
|
24350
24746
|
isCalendarDateSelected: isCalendarDateSelected,
|
|
24747
|
+
isOutOfMonth: !isCalendarMonth,
|
|
24351
24748
|
rangeEdge: rangeEdge,
|
|
24352
24749
|
isHighlighted: isHighlightDate,
|
|
24353
24750
|
children: calendarDay
|
|
@@ -25660,18 +26057,21 @@ const DaysView_DaysView = () => {
|
|
|
25660
26057
|
getDateSelectionState,
|
|
25661
26058
|
isRangeActive
|
|
25662
26059
|
} = useRangeSelection({
|
|
25663
|
-
|
|
25664
|
-
|
|
25665
|
-
|
|
26060
|
+
// The clicked cell may belong to the previous/next month (leading or
|
|
26061
|
+
// trailing padding), so its date must be parsed from data-day rather
|
|
26062
|
+
// than reconstructed from the day-of-month + currently displayed
|
|
26063
|
+
// month — otherwise e.g. clicking "30 Jul" while viewing August would
|
|
26064
|
+
// silently resolve to 30 Aug.
|
|
26065
|
+
createNewDate: selectedDay => external_luxon_namespaceObject.DateTime.fromFormat(String(selectedDay), 'D'),
|
|
25666
26066
|
getComparisonFormat: () => 'D'
|
|
25667
26067
|
});
|
|
25668
26068
|
const handleDaySelect = event => {
|
|
25669
26069
|
const {
|
|
25670
26070
|
target
|
|
25671
26071
|
} = event;
|
|
25672
|
-
const selectedDay = target.
|
|
26072
|
+
const selectedDay = target.getAttribute('data-day');
|
|
25673
26073
|
const isEnabled = target.getAttribute('aria-disabled') === 'false';
|
|
25674
|
-
if (isEnabled) {
|
|
26074
|
+
if (isEnabled && selectedDay) {
|
|
25675
26075
|
handleRangeSelect(selectedDay);
|
|
25676
26076
|
}
|
|
25677
26077
|
};
|
|
@@ -25706,16 +26106,17 @@ const DaysView_DaysView = () => {
|
|
|
25706
26106
|
isCalendarSecondDateSelected,
|
|
25707
26107
|
isCalendarDateSelected
|
|
25708
26108
|
} = getDateSelectionState(currentDT);
|
|
26109
|
+
|
|
26110
|
+
// Leading/trailing days from adjacent months are only muted, not
|
|
26111
|
+
// disabled — they're real, selectable dates (e.g. picking 30/31
|
|
26112
|
+
// Jul as the range end while the calendar is showing August).
|
|
25709
26113
|
let isAriaDisabled = false;
|
|
25710
26114
|
if (dateMinDT && dateMaxDT) {
|
|
25711
|
-
isAriaDisabled = currentDT < dateMinDT || currentDT > dateMaxDT
|
|
25712
|
-
} else {
|
|
25713
|
-
|
|
25714
|
-
|
|
25715
|
-
|
|
25716
|
-
if (dateMaxDT) {
|
|
25717
|
-
isAriaDisabled = currentDT > dateMaxDT || !isCalendarMonth;
|
|
25718
|
-
}
|
|
26115
|
+
isAriaDisabled = currentDT < dateMinDT || currentDT > dateMaxDT;
|
|
26116
|
+
} else if (dateMinDT) {
|
|
26117
|
+
isAriaDisabled = currentDT < dateMinDT;
|
|
26118
|
+
} else if (dateMaxDT) {
|
|
26119
|
+
isAriaDisabled = currentDT > dateMaxDT;
|
|
25719
26120
|
}
|
|
25720
26121
|
const classNames = getClassNames(currentDT, {
|
|
25721
26122
|
isCalendarFirstDateSelected,
|
|
@@ -25727,6 +26128,7 @@ const DaysView_DaysView = () => {
|
|
|
25727
26128
|
"data-day": calendarDate,
|
|
25728
26129
|
isCalendarDateNow: isCalendarDateNow,
|
|
25729
26130
|
isCalendarDateSelected: isCalendarDateSelected,
|
|
26131
|
+
isOutOfMonth: !isCalendarMonth,
|
|
25730
26132
|
rangeEdge: getRangeEdge({
|
|
25731
26133
|
isFirstSelected: isCalendarFirstDateSelected,
|
|
25732
26134
|
isSecondSelected: isCalendarSecondDateSelected,
|
|
@@ -43324,29 +43726,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
43726
|
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
43727
|
//# sourceMappingURL=nivo-pie.mjs.map
|
|
43326
43728
|
|
|
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
43729
|
;// ./src/components/WidgetCard/WidgetCardBase.tsx
|
|
43351
43730
|
|
|
43352
43731
|
|
|
@@ -58685,6 +59064,7 @@ const UserProfile = ({
|
|
|
58685
59064
|
|
|
58686
59065
|
|
|
58687
59066
|
|
|
59067
|
+
|
|
58688
59068
|
|
|
58689
59069
|
|
|
58690
59070
|
// ============================================================================
|