@bi-digital/react 0.0.0-experimental-9588a13 → 0.0.0-experimental-0a7eb0c

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (133) hide show
  1. package/dist/{alert-footer-Dpx0nSZr.d.ts → alert-footer-CvksHhtj.d.ts} +38 -32
  2. package/dist/components/alert/alert-footer.d.ts +4 -4
  3. package/dist/components/alert/alert.d.ts +4 -4
  4. package/dist/components/alert/index.d.ts +4 -4
  5. package/dist/components/avatar/avatar.d.ts +4 -4
  6. package/dist/components/avatar/index.d.ts +4 -4
  7. package/dist/components/badge/badge.d.ts +4 -4
  8. package/dist/components/badge/index.d.ts +4 -4
  9. package/dist/components/button/button.d.ts +4 -4
  10. package/dist/components/button/index.d.ts +4 -4
  11. package/dist/components/card/card-action.d.ts +4 -4
  12. package/dist/components/card/card-actions.d.ts +4 -4
  13. package/dist/components/card/card-content.d.ts +4 -4
  14. package/dist/components/card/card-date.d.ts +4 -4
  15. package/dist/components/card/card-header.d.ts +4 -4
  16. package/dist/components/card/card-media.d.ts +4 -4
  17. package/dist/components/card/card.d.ts +4 -4
  18. package/dist/components/card/index.d.ts +4 -4
  19. package/dist/components/checkbox/checkbox-subsection.d.ts +4 -4
  20. package/dist/components/checkbox/checkbox.d.ts +4 -4
  21. package/dist/components/checkbox/index.d.ts +4 -4
  22. package/dist/components/chip/chip.d.ts +4 -4
  23. package/dist/components/chip/index.d.ts +4 -4
  24. package/dist/components/dialog/dialog-close-button.d.ts +4 -4
  25. package/dist/components/dialog/dialog-content.d.ts +4 -4
  26. package/dist/components/dialog/dialog-footer.d.ts +4 -4
  27. package/dist/components/dialog/dialog-header.d.ts +4 -4
  28. package/dist/components/dialog/dialog-trigger.d.ts +4 -4
  29. package/dist/components/dialog/dialog.d.ts +4 -4
  30. package/dist/components/dialog/index.d.ts +4 -4
  31. package/dist/components/drawer/drawer-close-button.d.ts +4 -4
  32. package/dist/components/drawer/drawer-content.d.ts +4 -4
  33. package/dist/components/drawer/drawer-footer.d.ts +4 -4
  34. package/dist/components/drawer/drawer-header.d.ts +4 -4
  35. package/dist/components/drawer/drawer-trigger.d.ts +4 -4
  36. package/dist/components/drawer/drawer.d.ts +4 -4
  37. package/dist/components/drawer/index.d.ts +4 -4
  38. package/dist/components/dropdown/dropdown-button.d.ts +4 -4
  39. package/dist/components/dropdown/dropdown-trigger-context.d.ts +4 -4
  40. package/dist/components/dropdown/dropdown-trigger-context.js +1 -1
  41. package/dist/components/dropdown/dropdown-trigger.d.ts +4 -4
  42. package/dist/components/dropdown/dropdown-trigger.js +1 -1
  43. package/dist/components/dropdown/dropdown.d.ts +4 -4
  44. package/dist/components/dropdown/dropdown.js +2 -2
  45. package/dist/components/dropdown/index.d.ts +4 -4
  46. package/dist/components/dropdown/index.js +2 -2
  47. package/dist/components/field/field-affix.d.ts +4 -4
  48. package/dist/components/field/field-description.d.ts +4 -4
  49. package/dist/components/field/field.d.ts +4 -4
  50. package/dist/components/field/index.d.ts +4 -4
  51. package/dist/components/fieldset/fieldset-description.d.ts +4 -4
  52. package/dist/components/fieldset/fieldset-legend.d.ts +4 -4
  53. package/dist/components/fieldset/fieldset.d.ts +4 -4
  54. package/dist/components/fieldset/index.d.ts +4 -4
  55. package/dist/components/filter-group/filter-group.d.ts +4 -4
  56. package/dist/components/filter-group/index.d.ts +4 -4
  57. package/dist/components/footer/footer.d.ts +4 -4
  58. package/dist/components/footer/index.d.ts +4 -4
  59. package/dist/components/index.d.ts +4 -4
  60. package/dist/components/index.js +2 -2
  61. package/dist/components/input/index.d.ts +4 -4
  62. package/dist/components/input/input.d.ts +4 -4
  63. package/dist/components/label/index.d.ts +4 -4
  64. package/dist/components/label/label.d.ts +4 -4
  65. package/dist/components/link/index.d.ts +4 -4
  66. package/dist/components/link/link.d.ts +4 -4
  67. package/dist/components/logo/index.d.ts +4 -4
  68. package/dist/components/logo/logo.d.ts +4 -4
  69. package/dist/components/navbar/index.d.ts +4 -4
  70. package/dist/components/navbar/navbar.d.ts +4 -4
  71. package/dist/components/navbar/sub-navbar.d.ts +4 -4
  72. package/dist/components/pagination/index.d.ts +4 -4
  73. package/dist/components/pagination/pagination-button.d.ts +4 -4
  74. package/dist/components/pagination/pagination-item.d.ts +1 -1
  75. package/dist/components/pagination/pagination.d.ts +4 -4
  76. package/dist/components/popover/index.d.ts +4 -4
  77. package/dist/components/popover/index.js +1 -1
  78. package/dist/components/popover/popover-trigger-context.d.ts +1 -1
  79. package/dist/components/popover/popover-trigger.d.ts +4 -4
  80. package/dist/components/popover/popover.d.ts +4 -4
  81. package/dist/components/popover/popover.js +1 -1
  82. package/dist/components/radio/index.d.ts +4 -4
  83. package/dist/components/radio/radio.d.ts +4 -4
  84. package/dist/components/search/index.d.ts +4 -4
  85. package/dist/components/search/search.d.ts +4 -4
  86. package/dist/components/select/index.d.ts +4 -4
  87. package/dist/components/select/select-optgroup.d.ts +4 -4
  88. package/dist/components/select/select-option.d.ts +4 -4
  89. package/dist/components/select/select.d.ts +4 -4
  90. package/dist/components/skip-link/index.d.ts +4 -4
  91. package/dist/components/skip-link/skip-link.d.ts +4 -4
  92. package/dist/components/spinner/index.d.ts +4 -4
  93. package/dist/components/spinner/spinner.d.ts +4 -4
  94. package/dist/components/sticky-header/index.d.ts +1 -1
  95. package/dist/components/sticky-header/sticky-header.d.ts +1 -1
  96. package/dist/components/tabs/index.d.ts +4 -4
  97. package/dist/components/tabs/tab.d.ts +4 -4
  98. package/dist/components/tabs/tabs-list.d.ts +4 -4
  99. package/dist/components/tabs/tabs-panel.d.ts +4 -4
  100. package/dist/components/tabs/tabs.d.ts +4 -4
  101. package/dist/components/textarea/index.d.ts +4 -4
  102. package/dist/components/textarea/textarea.d.ts +4 -4
  103. package/dist/components/textfield/index.d.ts +4 -4
  104. package/dist/components/textfield/textfield.d.ts +4 -4
  105. package/dist/components/validation-message/index.d.ts +4 -4
  106. package/dist/components/validation-message/validation-message.d.ts +4 -4
  107. package/dist/{dropdown-1Tmd7LL7.js → dropdown-A1PW0OoQ.js} +5 -4
  108. package/dist/{dropdown-1Tmd7LL7.js.map → dropdown-A1PW0OoQ.js.map} +1 -1
  109. package/dist/{dropdown-x-JxMFr2.js → dropdown-D-qoCdnF.js} +2 -2
  110. package/dist/{dropdown-x-JxMFr2.js.map → dropdown-D-qoCdnF.js.map} +1 -1
  111. package/dist/{index-DShfRjSD.d.ts → index-DV9bEW_1.d.ts} +8 -2
  112. package/dist/{index-5t6b3t6a.d.ts → index-SaA0V19q.d.ts} +8 -2
  113. package/dist/main.d.ts +4 -4
  114. package/dist/main.js +2 -2
  115. package/dist/{pagination-item-mKQyvHV9.d.ts → pagination-item-CA3Xron6.d.ts} +3 -3
  116. package/dist/{popover-Co-HV5GI.js → popover-Df2PKqBg.js} +2 -3
  117. package/dist/popover-Df2PKqBg.js.map +1 -0
  118. package/dist/{popover-8q0iwwCv.js → popover-MUiGENkr.js} +2 -3
  119. package/dist/popover-MUiGENkr.js.map +1 -0
  120. package/dist/{popover-trigger-context-D6z-_uL5.d.ts → popover-trigger-context-C3lFgYaX.d.ts} +5 -5
  121. package/dist/{sticky-header-JeG62vfR.d.ts → sticky-header-CPHxBupp.d.ts} +3 -3
  122. package/dist/utilities/hooks/index.d.ts +4 -4
  123. package/dist/utilities/hooks/usePagination/usePagination.d.ts +4 -4
  124. package/dist/utilities/index.d.ts +4 -4
  125. package/dist/vanilla/dropdown/index.d.ts +1 -1
  126. package/dist/vanilla/dropdown/index.js +2 -2
  127. package/dist/vanilla/index.d.ts +2 -2
  128. package/dist/vanilla/index.js +2 -2
  129. package/dist/vanilla/popover/index.d.ts +1 -1
  130. package/dist/vanilla/popover/index.js +1 -1
  131. package/package.json +4 -4
  132. package/dist/popover-8q0iwwCv.js.map +0 -1
  133. package/dist/popover-Co-HV5GI.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"dropdown-x-JxMFr2.js","names":[],"sources":["../src/components/dropdown/dropdown.tsx"],"sourcesContent":["import clsx from 'clsx/lite';\nimport type { DefaultProps } from '../../types';\nimport type { MergeRight } from '../../utilities';\nimport { Popover, type PopoverProps } from '../popover';\n\nexport type DropdownProps = MergeRight<\n DefaultProps & PopoverProps,\n {\n /**\n * The placement of the dropdown\n * @default bottom-end\n */\n placement?: PopoverProps['placement'];\n }\n>;\n\n/**\n * Dropdown component, used to display a list of options.\n *\n * @example with TriggerContext\n * <DropdownTriggerContext>\n * <DropdownTrigger>Dropdown trigger</DropdownTrigger>\n * <Dropdown placement='bottom-end'>\n * <DropdownHeading>Dropdown</DropdownHeading>\n * <DropdownList>\n * <DropdownItem>\n * <DropdownButton>Item</DropdownButton>\n * </DropdownItem>\n * </DropdownList>\n * </Dropdown>\n * </DropdownTriggerContext>\n *\n * @example without TriggerContext\n * <Button aria-controls=\"some-dropdown\" aria-expanded={open}>Trigger</Button>\n * <Dropdown id=\"some-dropdown\" open={open} onOpenChange={onOpenChange}>\n * <DropdownHeading>Heading</DropdownHeading>\n * <DropdownList>\n * <DropdownItem>\n * <DropdownButton>Item</DropdownButton>\n * </DropdownItem>\n * </DropdownList>\n * </Dropdown>\n */\nexport const Dropdown = ({ placement = 'bottom-end', className, ref, ...rest }: DropdownProps) => {\n return <Popover className={clsx('bi-dropdown', className)} placement={placement} ref={ref} {...rest} />;\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2CA,MAAa,WAAW,CAAC,EAAE,YAAY,cAAc,WAAW,IAAK,GAAG,MAAqB,KAAK;AAChG,wBAAO,IAAC;EAAQ,WAAW,KAAK,eAAe,UAAU;EAAa;EAAgB;EAAK,GAAI;GAAQ;AACxG"}
1
+ {"version":3,"file":"dropdown-D-qoCdnF.js","names":[],"sources":["../src/components/dropdown/dropdown.tsx"],"sourcesContent":["import clsx from 'clsx/lite';\nimport type { DefaultProps } from '../../types';\nimport type { MergeRight } from '../../utilities';\nimport { Popover, type PopoverProps } from '../popover';\n\nexport type DropdownProps = MergeRight<\n DefaultProps & PopoverProps,\n {\n /**\n * The placement of the dropdown\n * @default bottom-end\n */\n placement?: PopoverProps['placement'];\n }\n>;\n\n/**\n * Dropdown component, used to display a list of options.\n *\n * @example with TriggerContext\n * <DropdownTriggerContext>\n * <DropdownTrigger>Dropdown trigger</DropdownTrigger>\n * <Dropdown placement='bottom-end'>\n * <DropdownHeading>Dropdown</DropdownHeading>\n * <DropdownList>\n * <DropdownItem>\n * <DropdownButton>Item</DropdownButton>\n * </DropdownItem>\n * </DropdownList>\n * </Dropdown>\n * </DropdownTriggerContext>\n *\n * @example without TriggerContext\n * <Button aria-controls=\"some-dropdown\" aria-expanded={open}>Trigger</Button>\n * <Dropdown id=\"some-dropdown\" open={open} onOpenChange={onOpenChange}>\n * <DropdownHeading>Heading</DropdownHeading>\n * <DropdownList>\n * <DropdownItem>\n * <DropdownButton>Item</DropdownButton>\n * </DropdownItem>\n * </DropdownList>\n * </Dropdown>\n */\nexport const Dropdown = ({ placement = 'bottom-end', className, ref, ...rest }: DropdownProps) => {\n return <Popover className={clsx('bi-dropdown', className)} placement={placement} ref={ref} {...rest} />;\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2CA,MAAa,WAAW,CAAC,EAAE,YAAY,cAAc,WAAW,IAAK,GAAG,MAAqB,KAAK;AAChG,wBAAO,IAAC;EAAQ,WAAW,KAAK,eAAe,UAAU;EAAa;EAAgB;EAAK,GAAI;GAAQ;AACxG"}
@@ -35,6 +35,11 @@ type InitDropdownOptions = {
35
35
  * @default false
36
36
  */
37
37
  disableAutoPlacement?: boolean;
38
+ /**
39
+ * The padding used by the `offset` middleware.
40
+ * @default '20'
41
+ */
42
+ padding?: number;
38
43
  };
39
44
  /**
40
45
  * Initializes the dropdown.
@@ -45,8 +50,9 @@ declare const initDropdown: ({
45
50
  id,
46
51
  disableAutoPlacement,
47
52
  placement,
48
- positionMiddleware
53
+ positionMiddleware,
54
+ padding
49
55
  }: InitDropdownOptions) => ((open: boolean) => void) | undefined;
50
56
  //#endregion
51
57
  export { InitDropdownOptions, initDropdown };
52
- //# sourceMappingURL=index-DShfRjSD.d.ts.map
58
+ //# sourceMappingURL=index-DV9bEW_1.d.ts.map
@@ -35,6 +35,11 @@ type InitPopoverOptions = {
35
35
  * @default false
36
36
  */
37
37
  disableAutoPlacement?: boolean;
38
+ /**
39
+ * The padding used by the `offset` middleware.
40
+ * @default '20'
41
+ */
42
+ padding?: number;
38
43
  };
39
44
  /**
40
45
  * Initializes the popover.
@@ -45,8 +50,9 @@ declare const initPopover: ({
45
50
  id,
46
51
  disableAutoPlacement,
47
52
  placement,
48
- positionMiddleware
53
+ positionMiddleware,
54
+ padding
49
55
  }: InitPopoverOptions) => ((open: boolean) => void) | undefined;
50
56
  //#endregion
51
57
  export { InitPopoverOptions, initPopover };
52
- //# sourceMappingURL=index-5t6b3t6a.d.ts.map
58
+ //# sourceMappingURL=index-SaA0V19q.d.ts.map
package/dist/main.d.ts CHANGED
@@ -1,15 +1,15 @@
1
1
  import { UseCheckboxGroupOptions, useCheckboxGroup } from "./useCheckboxGroup-DyHY-wHm.js";
2
2
  import { useIsomorphicLayoutEffect } from "./useIsomorphicLayoutEffect-BtM0-_Y8.js";
3
3
  import "./types-BiKqUD4X.js";
4
- import { Alert, AlertFooter, AlertFooterProps, AlertProps, Avatar, AvatarProps, Badge, BadgeProps, Button, ButtonProps, Card, CardAction, CardActionProps, CardActions, CardActionsProps, CardContent, CardContentProps, CardDate, CardDateProps, CardHeader, CardHeaderProps, CardMedia, CardMediaProps, CardProps, Checkbox, CheckboxProps, CheckboxSubsection, CheckboxSubsectionProps, Chip, ChipProps, Dialog, DialogCloseButton, DialogCloseButtonProps, DialogContent, DialogContentProps, DialogFooter, DialogFooterProps, DialogHeader, DialogHeaderProps, DialogProps, DialogTrigger, DialogTriggerProps, Drawer, DrawerCloseButton, DrawerCloseButtonProps, DrawerContent, DrawerContentProps, DrawerFooter, DrawerFooterProps, DrawerHeader, DrawerHeaderProps, DrawerProps, DrawerTrigger, DrawerTriggerProps, Dropdown, DropdownButton, DropdownButtonProps, DropdownProps, DropdownTrigger, DropdownTriggerContext, DropdownTriggerContextProps, DropdownTriggerProps, Field, FieldAffix, FieldAffixProps, FieldAffixes, FieldAffixesProps, FieldDescription, FieldDescriptionProps, FieldProps, Fieldset, FieldsetDescription, FieldsetDescriptionProps, FieldsetLegend, FieldsetLegendProps, FieldsetProps, FilterGroup, FilterGroupProps, Footer, FooterProps, Input, InputProps, Label, LabelProps, Link, LinkProps, Logo, LogoProps, Navbar, NavbarProps, Pagination, PaginationButton, PaginationButtonProps, PaginationProps, Popover, PopoverProps, PopoverTrigger, PopoverTriggerProps, Radio, RadioProps, Search, SearchProps, Select, SelectOptgroup, SelectOptgroupProps, SelectOption, SelectOptionProps, SelectProps, SkipLink, SkipLinkProps, Spinner, SpinnerProps, SubNavbar, SubNavbarProps, Tab, TabProps, Tabs, TabsList, TabsListProps, TabsPanel, TabsPanelProps, TabsProps, Textarea, TextareaProps, Textfield, TextfieldProps, UsePaginationProps, ValidationMessage, ValidationMessageProps, usePagination } from "./alert-footer-Dpx0nSZr.js";
4
+ import { Alert, AlertFooter, AlertFooterProps, AlertProps, Avatar, AvatarProps, Badge, BadgeProps, Button, ButtonProps, Card, CardAction, CardActionProps, CardActions, CardActionsProps, CardContent, CardContentProps, CardDate, CardDateProps, CardHeader, CardHeaderProps, CardMedia, CardMediaProps, CardProps, Checkbox, CheckboxProps, CheckboxSubsection, CheckboxSubsectionProps, Chip, ChipProps, Dialog, DialogCloseButton, DialogCloseButtonProps, DialogContent, DialogContentProps, DialogFooter, DialogFooterProps, DialogHeader, DialogHeaderProps, DialogProps, DialogTrigger, DialogTriggerProps, Drawer, DrawerCloseButton, DrawerCloseButtonProps, DrawerContent, DrawerContentProps, DrawerFooter, DrawerFooterProps, DrawerHeader, DrawerHeaderProps, DrawerProps, DrawerTrigger, DrawerTriggerProps, Dropdown, DropdownButton, DropdownButtonProps, DropdownProps, DropdownTrigger, DropdownTriggerContext, DropdownTriggerContextProps, DropdownTriggerProps, Field, FieldAffix, FieldAffixProps, FieldAffixes, FieldAffixesProps, FieldDescription, FieldDescriptionProps, FieldProps, Fieldset, FieldsetDescription, FieldsetDescriptionProps, FieldsetLegend, FieldsetLegendProps, FieldsetProps, FilterGroup, FilterGroupProps, Footer, FooterProps, Input, InputProps, Label, LabelProps, Link, LinkProps, Logo, LogoProps, Navbar, NavbarProps, Pagination, PaginationButton, PaginationButtonProps, PaginationProps, Popover, PopoverProps, PopoverTrigger, PopoverTriggerProps, Radio, RadioProps, Search, SearchProps, Select, SelectOptgroup, SelectOptgroupProps, SelectOption, SelectOptionProps, SelectProps, SkipLink, SkipLinkProps, Spinner, SpinnerProps, SubNavbar, SubNavbarProps, Tab, TabProps, Tabs, TabsList, TabsListProps, TabsPanel, TabsPanelProps, TabsProps, Textarea, TextareaProps, Textfield, TextfieldProps, UsePaginationProps, ValidationMessage, ValidationMessageProps, usePagination } from "./alert-footer-CvksHhtj.js";
5
5
  import { Context, DialogTriggerContext, DialogTriggerContextProps } from "./dialog-trigger-context-DwmhJNzA.js";
6
6
  import { DrawerTriggerContext, DrawerTriggerContextProps } from "./drawer-trigger-context-BoS9ZcVF.js";
7
- import { PopoverTriggerContext, PopoverTriggerContextProps } from "./popover-trigger-context-D6z-_uL5.js";
7
+ import { PopoverTriggerContext, PopoverTriggerContextProps } from "./popover-trigger-context-C3lFgYaX.js";
8
8
  import { DropdownItem, DropdownItemProps } from "./dropdown-item-CKKjumy3.js";
9
9
  import { DropdownList, DropdownListProps } from "./dropdown-list-vVhxG14z.js";
10
10
  import { FooterLinks, FooterLinksProps } from "./footer-links-Drm2LFnw.js";
11
- import { PaginationItem, PaginationItemProps } from "./pagination-item-mKQyvHV9.js";
12
- import { StickyHeader, StickyHeaderProps } from "./sticky-header-JeG62vfR.js";
11
+ import { PaginationItem, PaginationItemProps } from "./pagination-item-CA3Xron6.js";
12
+ import { StickyHeader, StickyHeaderProps } from "./sticky-header-CPHxBupp.js";
13
13
  import "./index-CTw2zfCM.js";
14
14
  import { useIsElementAboveViewport } from "./useIsElementAboveViewport-V1lc14eB.js";
15
15
  import { useScrollDirection } from "./useScrollDirection-CDsglrZR.js";
package/dist/main.js CHANGED
@@ -48,10 +48,10 @@ import { DrawerTriggerContext } from "./drawer-trigger-context-BUWPPdas.js";
48
48
  import { DrawerCloseButton } from "./drawer-close-button-DigcuqLc.js";
49
49
  import "./drawer-Cc670B_f.js";
50
50
  import { PopoverTriggerContext } from "./popover-trigger-context-Cre9Mczn.js";
51
- import { Popover } from "./popover-Co-HV5GI.js";
51
+ import { Popover } from "./popover-Df2PKqBg.js";
52
52
  import { PopoverTrigger } from "./popover-trigger-Chi8uvRM.js";
53
53
  import "./popover-Ch_2ehYy.js";
54
- import { Dropdown } from "./dropdown-x-JxMFr2.js";
54
+ import { Dropdown } from "./dropdown-D-qoCdnF.js";
55
55
  import { DropdownButton } from "./dropdown-button-FQqIwqdp.js";
56
56
  import { DropdownItem } from "./dropdown-item-DQQXQC4J.js";
57
57
  import { DropdownList } from "./dropdown-list-DB1mST67.js";
@@ -1,4 +1,4 @@
1
- import * as react_jsx_runtime53 from "react/jsx-runtime";
1
+ import * as react_jsx_runtime54 from "react/jsx-runtime";
2
2
  import { HTMLAttributes, Ref } from "react";
3
3
 
4
4
  //#region src/components/pagination/pagination-item.d.ts
@@ -15,7 +15,7 @@ declare const PaginationItem: ({
15
15
  asChild,
16
16
  children,
17
17
  ...rest
18
- }: PaginationItemProps) => react_jsx_runtime53.JSX.Element;
18
+ }: PaginationItemProps) => react_jsx_runtime54.JSX.Element;
19
19
  //#endregion
20
20
  export { PaginationItem, PaginationItemProps };
21
- //# sourceMappingURL=pagination-item-mKQyvHV9.d.ts.map
21
+ //# sourceMappingURL=pagination-item-CA3Xron6.d.ts.map
@@ -8,7 +8,6 @@ import { autoUpdate, computePosition, flip, hide, offset, shift } from "@floatin
8
8
  import { useControllableState } from "@radix-ui/react-use-controllable-state";
9
9
 
10
10
  //#region src/components/popover/popover.tsx
11
- const padding = 20;
12
11
  /**
13
12
  * Popover component, used to display content in a popover over an element.
14
13
  *
@@ -26,7 +25,7 @@ const padding = 20;
26
25
  * Content
27
26
  * </Popover>
28
27
  */
29
- const Popover = ({ id, className, onOpenChange, open, placement = "top", disableAutoPlacement = false, positionMiddleware = [], dark = false, asChild = false, ref,...rest }) => {
28
+ const Popover = ({ id, className, onOpenChange, open, placement = "top", disableAutoPlacement = false, positionMiddleware = [], padding = 20, dark = false, asChild = false, ref,...rest }) => {
30
29
  const Component = asChild ? Slot : "div";
31
30
  const popoverRef = useRef(null);
32
31
  const isControlled = useRef(open !== void 0);
@@ -104,4 +103,4 @@ const Popover = ({ id, className, onOpenChange, open, placement = "top", disable
104
103
 
105
104
  //#endregion
106
105
  export { Popover };
107
- //# sourceMappingURL=popover-Co-HV5GI.js.map
106
+ //# sourceMappingURL=popover-Df2PKqBg.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"popover-Df2PKqBg.js","names":["event: MouseEvent","event: KeyboardEvent"],"sources":["../src/components/popover/popover.tsx"],"sourcesContent":["// Thanks to Designsystemet:\n// https://github.com/digdir/designsystemet/blob/8aa6dc274e5b0338d15572f44b5dd3fab6fa4eb1/packages/react/src/components/Popover/Popover.tsx\n\nimport { autoUpdate, computePosition, flip, offset, shift, hide } from '@floating-ui/dom';\nimport type { Middleware, Placement } from '@floating-ui/dom';\nimport { Slot } from '@radix-ui/react-slot';\nimport cl from 'clsx/lite';\nimport { use, useRef } from 'react';\nimport type { HTMLAttributes, Ref } from 'react';\nimport { useEffect } from 'react';\nimport type { DefaultProps } from '../../types';\nimport type { MergeRight } from '../../utilities';\nimport { useMergeRefs } from '../../utilities/hooks/useMergeRefs/useMergeRefs';\nimport { Context } from './popover-trigger-context';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\n\nexport type PopoverProps = MergeRight<\n DefaultProps & HTMLAttributes<HTMLDivElement>,\n {\n /**\n * `id` to connect the trigger with the popover - required when not using PopoverContext.\n */\n id?: string;\n /**\n * Placement of the popover on the trigger.\n * @default 'top'\n */\n placement?: Placement;\n /**\n * When a boolean is provided, the popover will be controlled.\n * @default undefined\n */\n open?: boolean;\n /**\n * Callback when the open state changes.\n * @param open - The new open state of the popover.\n */\n onOpenChange?: (open: boolean) => void;\n /**\n * Whether to disable auto placement.\n * @default false\n */\n disableAutoPlacement?: boolean;\n /**\n * Additional middleware to use for positioning the popover.\n *\n * @example\n * Prevent the popover from overflowing the navbar by using the `size` middleware:\n * ```ts\n * positionMiddleware={[\n * size({\n * apply: ({ availableHeight, elements, ...state }) => {\n * const available = `${Math.max(0, availableHeight)}px`;\n * const maxHeight = state.placement.includes('top')\n * ? `calc(${available} - var(--bi-layout-navbar-height, 0))`\n * : available;\n * elements.floating.style.maxHeight = maxHeight;\n * },\n * padding,\n * })\n * ]}\n * ```\n */\n positionMiddleware?: Middleware[];\n /**\n * The padding used by the `offset` middleware.\n * @default '20'\n */\n padding?: number;\n /**\n * Change the default rendered element for the one passed as a child, merging their props and behavior.\n * @default false\n */\n asChild?: boolean;\n ref?: Ref<HTMLDivElement>;\n }\n>;\n\n/**\n * Popover component, used to display content in a popover over an element.\n *\n * @example with TriggerContext\n * <PopoverTriggerContext>\n * <PopoverTrigger>Open Popover</PopoverTrigger>\n * <Popover>\n * Content\n * </Popover>\n * </PopoverTriggerContext>\n *\n * @example without TriggerContext\n * <Button aria-controls=\"my-popover\" aria-expanded={open}>Open Popover</Button>\n * <Popover open={open} onOpenChange={onOpenChange} id=\"my-popover\">\n * Content\n * </Popover>\n */\nexport const Popover = ({\n id,\n className,\n onOpenChange,\n open,\n placement = 'top',\n disableAutoPlacement = false,\n positionMiddleware = [],\n padding = 20,\n dark = false,\n asChild = false,\n ref,\n ...rest\n}: PopoverProps) => {\n const Component = asChild ? Slot : 'div';\n\n const popoverRef = useRef<HTMLDivElement>(null);\n const isControlled = useRef(open !== undefined);\n const mergedRefs = useMergeRefs([popoverRef, ref]);\n const { popoverId, setPopoverId, popoverOpen, setPopoverOpen } = use(Context);\n\n const [isOpen, setIsOpen] = useControllableState({\n prop: isControlled.current ? open : popoverOpen,\n onChange: (val) => {\n onOpenChange?.(val);\n setPopoverOpen?.(val);\n },\n defaultProp: false,\n caller: 'Popover',\n });\n\n useEffect(() => {\n const popover = popoverRef.current;\n const handleClick = (event: MouseEvent) => {\n const el = event.target as Element | null;\n const isTrigger = el?.closest?.(`[aria-controls=\"${popover?.id}\"]`);\n const isOutside = !isTrigger && !popover?.contains(el as Node);\n\n if (isOutside) {\n setIsOpen(false);\n }\n };\n\n const handleKeydown = (event: KeyboardEvent) => {\n if (event.key !== 'Escape' || !isOpen) return;\n event.preventDefault(); // Prevent closing fullscreen in Safari\n setIsOpen(false);\n };\n\n document.addEventListener('click', handleClick, true); // Use capture to execute before React event API\n document.addEventListener('keydown', handleKeydown);\n return () => {\n document.removeEventListener('click', handleClick, true);\n document.removeEventListener('keydown', handleKeydown);\n };\n }, [isOpen, setIsOpen]);\n\n useEffect(() => {\n const popover = popoverRef.current;\n const trigger = document.querySelector(`[aria-controls=\"${popover?.id}\"]`);\n\n if (popover && trigger && isOpen)\n return autoUpdate(trigger, popover, () => {\n computePosition(trigger, popover, {\n middleware: [\n offset(padding),\n ...(disableAutoPlacement ? [] : [flip({ padding }), shift({ padding })]),\n ...positionMiddleware,\n hide({ padding, strategy: 'escaped' }),\n ],\n strategy: 'fixed',\n placement,\n }).then(({ x, y, middlewareData }) => {\n popover.style.translate = `${x}px ${y}px`;\n popover.style.visibility = middlewareData.hide?.referenceHidden ? 'hidden' : 'visible';\n });\n });\n }, [isOpen, placement, id, disableAutoPlacement, positionMiddleware]);\n\n // Update context with id\n useEffect(() => {\n if (id) setPopoverId?.(id);\n }, [id, setPopoverId]);\n\n return (\n <Component\n className={cl('bi-popover', className)}\n id={id || popoverId}\n aria-hidden={!isOpen}\n data-dark={dark}\n ref={mergedRefs}\n {...rest}\n />\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AA+FA,MAAa,UAAU,CAAC,EACtB,IACA,WACA,cACA,MACA,YAAY,OACZ,uBAAuB,OACvB,qBAAqB,CAAE,GACvB,UAAU,IACV,OAAO,OACP,UAAU,OACV,IACA,GAAG,MACU,KAAK;CAClB,MAAM,YAAY,UAAU,OAAO;CAEnC,MAAM,aAAa,OAAuB,KAAK;CAC/C,MAAM,eAAe,OAAO,gBAAmB;CAC/C,MAAM,aAAa,aAAa,CAAC,YAAY,GAAI,EAAC;CAClD,MAAM,EAAE,WAAW,cAAc,aAAa,gBAAgB,GAAG,IAAI,QAAQ;CAE7E,MAAM,CAAC,QAAQ,UAAU,GAAG,qBAAqB;EAC/C,MAAM,aAAa,UAAU,OAAO;EACpC,UAAU,CAAC,QAAQ;AACjB,kBAAe,IAAI;AACnB,oBAAiB,IAAI;EACtB;EACD,aAAa;EACb,QAAQ;CACT,EAAC;AAEF,WAAU,MAAM;EACd,MAAM,UAAU,WAAW;EAC3B,MAAM,cAAc,CAACA,UAAsB;GACzC,MAAM,KAAK,MAAM;GACjB,MAAM,YAAY,IAAI,WAAW,kBAAkB,SAAS,GAAG,IAAI;GACnE,MAAM,aAAa,cAAc,SAAS,SAAS,GAAW;AAE9D,OAAI,UACF,WAAU,MAAM;EAEnB;EAED,MAAM,gBAAgB,CAACC,UAAyB;AAC9C,OAAI,MAAM,QAAQ,aAAa,OAAQ;AACvC,SAAM,gBAAgB;AACtB,aAAU,MAAM;EACjB;AAED,WAAS,iBAAiB,SAAS,aAAa,KAAK;AACrD,WAAS,iBAAiB,WAAW,cAAc;AACnD,SAAO,MAAM;AACX,YAAS,oBAAoB,SAAS,aAAa,KAAK;AACxD,YAAS,oBAAoB,WAAW,cAAc;EACvD;CACF,GAAE,CAAC,QAAQ,SAAU,EAAC;AAEvB,WAAU,MAAM;EACd,MAAM,UAAU,WAAW;EAC3B,MAAM,UAAU,SAAS,eAAe,kBAAkB,SAAS,GAAG,IAAI;AAE1E,MAAI,WAAW,WAAW,OACxB,QAAO,WAAW,SAAS,SAAS,MAAM;AACxC,mBAAgB,SAAS,SAAS;IAChC,YAAY;KACV,OAAO,QAAQ;KACf,GAAI,uBAAuB,CAAE,IAAG,CAAC,KAAK,EAAE,QAAS,EAAC,EAAE,MAAM,EAAE,QAAS,EAAC,AAAC;KACvE,GAAG;KACH,KAAK;MAAE;MAAS,UAAU;KAAW,EAAC;IACvC;IACD,UAAU;IACV;GACD,EAAC,CAAC,KAAK,CAAC,EAAE,GAAG,GAAG,gBAAgB,KAAK;AACpC,YAAQ,MAAM,aAAa,EAAE,EAAE,KAAK,EAAE;AACtC,YAAQ,MAAM,aAAa,eAAe,MAAM,kBAAkB,WAAW;GAC9E,EAAC;EACH,EAAC;CACL,GAAE;EAAC;EAAQ;EAAW;EAAI;EAAsB;CAAmB,EAAC;AAGrE,WAAU,MAAM;AACd,MAAI,GAAI,gBAAe,GAAG;CAC3B,GAAE,CAAC,IAAI,YAAa,EAAC;AAEtB,wBACE,IAAC;EACC,WAAW,KAAG,cAAc,UAAU;EACtC,IAAI,MAAM;EACV,gBAAc;EACd,aAAW;EACX,KAAK;EACL,GAAI;GACJ;AAEL"}
@@ -1,13 +1,12 @@
1
1
  import { autoUpdate, computePosition, flip, hide, offset, shift } from "@floating-ui/dom";
2
2
 
3
3
  //#region src/vanilla/popover/index.ts
4
- const padding = 20;
5
4
  /**
6
5
  * Initializes the popover.
7
6
  * @param options - InitPopoverOptions
8
7
  * @returns A function to programmatically toggle the popover.
9
8
  */
10
- const initPopover = ({ id, disableAutoPlacement = false, placement = "top", positionMiddleware = [] }) => {
9
+ const initPopover = ({ id, disableAutoPlacement = false, placement = "top", positionMiddleware = [], padding = 20 }) => {
11
10
  let cleanup;
12
11
  const popover = document.getElementById(id);
13
12
  const triggerSelector = `[aria-controls="${id}"]`;
@@ -51,4 +50,4 @@ const initPopover = ({ id, disableAutoPlacement = false, placement = "top", posi
51
50
 
52
51
  //#endregion
53
52
  export { initPopover };
54
- //# sourceMappingURL=popover-8q0iwwCv.js.map
53
+ //# sourceMappingURL=popover-MUiGENkr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"popover-MUiGENkr.js","names":["cleanup: (() => void) | undefined","open: boolean"],"sources":["../src/vanilla/popover/index.ts"],"sourcesContent":["import { autoUpdate, computePosition, flip, offset, shift, hide } from '@floating-ui/dom';\nimport type { Middleware, Placement } from '@floating-ui/dom';\n\nexport type InitPopoverOptions = {\n /** The id of the popover to initialize. The trigger element should have a `aria-controls` attribute with the same id. */\n id: string;\n /**\n * Placement of the popover relative to the trigger.\n * @default 'top'\n */\n placement?: Placement;\n /**\n * Additional middleware to use for positioning the popover.\n *\n * @example\n * Prevent the popover from overflowing the navbar by using the `size` middleware:\n * ```ts\n * positionMiddleware: [\n * size({\n * apply: ({ availableHeight, elements, ...state }) => {\n * const available = `${Math.max(0, availableHeight)}px`;\n * const maxHeight = state.placement.includes('top')\n * ? `calc(${available} - var(--bi-layout-navbar-height, 0))`\n * : available;\n * elements.floating.style.maxHeight = maxHeight;\n * },\n * padding,\n * })\n * ]}\n * ```\n */\n positionMiddleware?: Middleware[];\n /**\n * Whether to disable auto placement.\n * @default false\n */\n disableAutoPlacement?: boolean;\n /**\n * The padding used by the `offset` middleware.\n * @default '20'\n */\n padding?: number;\n};\n\n/**\n * Initializes the popover.\n * @param options - InitPopoverOptions\n * @returns A function to programmatically toggle the popover.\n */\nexport const initPopover = ({\n id,\n disableAutoPlacement = false,\n placement = 'top',\n positionMiddleware = [],\n padding = 20,\n}: InitPopoverOptions) => {\n let cleanup: (() => void) | undefined;\n const popover = document.getElementById(id);\n const triggerSelector = `[aria-controls=\"${id}\"]`;\n const trigger = document.querySelector(triggerSelector);\n\n if (!popover || !trigger) return;\n\n const togglePopover = (open: boolean) => {\n if (open) {\n cleanup = autoUpdate(trigger, popover, () => {\n computePosition(trigger, popover, {\n middleware: [\n offset(padding),\n ...(disableAutoPlacement ? [] : [flip({ padding }), shift({ padding })]),\n ...positionMiddleware,\n hide({ padding }),\n ],\n strategy: 'fixed',\n placement,\n }).then(({ x, y, middlewareData }) => {\n popover.style.translate = `${x}px ${y}px`;\n popover.style.visibility = middlewareData.hide?.referenceHidden ? 'hidden' : 'visible';\n });\n });\n popover.setAttribute('aria-hidden', 'false');\n trigger.setAttribute('aria-expanded', 'true');\n } else {\n cleanup?.();\n popover.setAttribute('aria-hidden', 'true');\n trigger.setAttribute('aria-expanded', 'false');\n }\n };\n\n document.addEventListener(\n 'click',\n (event) => {\n const el = event.target as Element | null;\n const isTrigger = el?.closest?.(triggerSelector);\n const isOutside = !isTrigger && !popover.contains(el as Node);\n const isOpen = popover.getAttribute('aria-hidden') === 'false';\n\n if (isTrigger) {\n togglePopover(!isOpen);\n }\n if (isOutside && isOpen) {\n togglePopover(false);\n }\n },\n true,\n );\n\n return togglePopover;\n};\n"],"mappings":";;;;;;;;AAiDA,MAAa,cAAc,CAAC,EAC1B,IACA,uBAAuB,OACvB,YAAY,OACZ,qBAAqB,CAAE,GACvB,UAAU,IACS,KAAK;CACxB,IAAIA;CACJ,MAAM,UAAU,SAAS,eAAe,GAAG;CAC3C,MAAM,mBAAmB,kBAAkB,GAAG;CAC9C,MAAM,UAAU,SAAS,cAAc,gBAAgB;AAEvD,MAAK,YAAY,QAAS;CAE1B,MAAM,gBAAgB,CAACC,SAAkB;AACvC,MAAI,MAAM;AACR,aAAU,WAAW,SAAS,SAAS,MAAM;AAC3C,oBAAgB,SAAS,SAAS;KAChC,YAAY;MACV,OAAO,QAAQ;MACf,GAAI,uBAAuB,CAAE,IAAG,CAAC,KAAK,EAAE,QAAS,EAAC,EAAE,MAAM,EAAE,QAAS,EAAC,AAAC;MACvE,GAAG;MACH,KAAK,EAAE,QAAS,EAAC;KAClB;KACD,UAAU;KACV;IACD,EAAC,CAAC,KAAK,CAAC,EAAE,GAAG,GAAG,gBAAgB,KAAK;AACpC,aAAQ,MAAM,aAAa,EAAE,EAAE,KAAK,EAAE;AACtC,aAAQ,MAAM,aAAa,eAAe,MAAM,kBAAkB,WAAW;IAC9E,EAAC;GACH,EAAC;AACF,WAAQ,aAAa,eAAe,QAAQ;AAC5C,WAAQ,aAAa,iBAAiB,OAAO;EAC9C,OAAM;AACL,cAAW;AACX,WAAQ,aAAa,eAAe,OAAO;AAC3C,WAAQ,aAAa,iBAAiB,QAAQ;EAC/C;CACF;AAED,UAAS,iBACP,SACA,CAAC,UAAU;EACT,MAAM,KAAK,MAAM;EACjB,MAAM,YAAY,IAAI,UAAU,gBAAgB;EAChD,MAAM,aAAa,cAAc,QAAQ,SAAS,GAAW;EAC7D,MAAM,SAAS,QAAQ,aAAa,cAAc,KAAK;AAEvD,MAAI,UACF,gBAAe,OAAO;AAExB,MAAI,aAAa,OACf,eAAc,MAAM;CAEvB,GACD,KACD;AAED,QAAO;AACR"}
@@ -1,9 +1,9 @@
1
- import * as react_jsx_runtime56 from "react/jsx-runtime";
2
- import * as react55 from "react";
1
+ import * as react_jsx_runtime57 from "react/jsx-runtime";
2
+ import * as react56 from "react";
3
3
  import { ReactNode } from "react";
4
4
 
5
5
  //#region src/components/popover/popover-trigger-context.d.ts
6
- declare const Context: react55.Context<{
6
+ declare const Context: react56.Context<{
7
7
  popoverId?: string;
8
8
  setPopoverId?: (id: string) => void;
9
9
  popoverOpen?: boolean;
@@ -37,7 +37,7 @@ declare const PopoverTriggerContext: ({
37
37
  children,
38
38
  open,
39
39
  onOpenChange
40
- }: PopoverTriggerContextProps) => react_jsx_runtime56.JSX.Element;
40
+ }: PopoverTriggerContextProps) => react_jsx_runtime57.JSX.Element;
41
41
  //#endregion
42
42
  export { Context, PopoverTriggerContext, PopoverTriggerContextProps };
43
- //# sourceMappingURL=popover-trigger-context-D6z-_uL5.d.ts.map
43
+ //# sourceMappingURL=popover-trigger-context-C3lFgYaX.d.ts.map
@@ -1,4 +1,4 @@
1
- import * as react_jsx_runtime67 from "react/jsx-runtime";
1
+ import * as react_jsx_runtime66 from "react/jsx-runtime";
2
2
  import { ReactNode } from "react";
3
3
 
4
4
  //#region src/components/sticky-header/sticky-header.d.ts
@@ -13,7 +13,7 @@ type StickyHeaderProps = {
13
13
  */
14
14
  declare const StickyHeader: ({
15
15
  children
16
- }: StickyHeaderProps) => react_jsx_runtime67.JSX.Element;
16
+ }: StickyHeaderProps) => react_jsx_runtime66.JSX.Element;
17
17
  //#endregion
18
18
  export { StickyHeader, StickyHeaderProps };
19
- //# sourceMappingURL=sticky-header-JeG62vfR.d.ts.map
19
+ //# sourceMappingURL=sticky-header-CPHxBupp.d.ts.map
@@ -1,15 +1,15 @@
1
1
  import { UseCheckboxGroupOptions, useCheckboxGroup } from "../../useCheckboxGroup-DyHY-wHm.js";
2
2
  import { useIsomorphicLayoutEffect } from "../../useIsomorphicLayoutEffect-BtM0-_Y8.js";
3
3
  import "../../types-BiKqUD4X.js";
4
- import { UsePaginationProps, usePagination } from "../../alert-footer-Dpx0nSZr.js";
4
+ import { UsePaginationProps, usePagination } from "../../alert-footer-CvksHhtj.js";
5
5
  import "../../dialog-trigger-context-DwmhJNzA.js";
6
6
  import "../../drawer-trigger-context-BoS9ZcVF.js";
7
- import "../../popover-trigger-context-D6z-_uL5.js";
7
+ import "../../popover-trigger-context-C3lFgYaX.js";
8
8
  import "../../dropdown-item-CKKjumy3.js";
9
9
  import "../../dropdown-list-vVhxG14z.js";
10
10
  import "../../footer-links-Drm2LFnw.js";
11
- import "../../pagination-item-mKQyvHV9.js";
12
- import "../../sticky-header-JeG62vfR.js";
11
+ import "../../pagination-item-CA3Xron6.js";
12
+ import "../../sticky-header-CPHxBupp.js";
13
13
  import "../../index-CTw2zfCM.js";
14
14
  import { useIsElementAboveViewport } from "../../useIsElementAboveViewport-V1lc14eB.js";
15
15
  import { useScrollDirection } from "../../useScrollDirection-CDsglrZR.js";
@@ -1,15 +1,15 @@
1
1
  import "../../../useCheckboxGroup-DyHY-wHm.js";
2
2
  import "../../../useIsomorphicLayoutEffect-BtM0-_Y8.js";
3
3
  import "../../../types-BiKqUD4X.js";
4
- import { UsePaginationProps, usePagination } from "../../../alert-footer-Dpx0nSZr.js";
4
+ import { UsePaginationProps, usePagination } from "../../../alert-footer-CvksHhtj.js";
5
5
  import "../../../dialog-trigger-context-DwmhJNzA.js";
6
6
  import "../../../drawer-trigger-context-BoS9ZcVF.js";
7
- import "../../../popover-trigger-context-D6z-_uL5.js";
7
+ import "../../../popover-trigger-context-C3lFgYaX.js";
8
8
  import "../../../dropdown-item-CKKjumy3.js";
9
9
  import "../../../dropdown-list-vVhxG14z.js";
10
10
  import "../../../footer-links-Drm2LFnw.js";
11
- import "../../../pagination-item-mKQyvHV9.js";
12
- import "../../../sticky-header-JeG62vfR.js";
11
+ import "../../../pagination-item-CA3Xron6.js";
12
+ import "../../../sticky-header-CPHxBupp.js";
13
13
  import "../../../index-CTw2zfCM.js";
14
14
  import "../../../useIsElementAboveViewport-V1lc14eB.js";
15
15
  import "../../../useScrollDirection-CDsglrZR.js";
@@ -1,15 +1,15 @@
1
1
  import { UseCheckboxGroupOptions, useCheckboxGroup } from "../useCheckboxGroup-DyHY-wHm.js";
2
2
  import { useIsomorphicLayoutEffect } from "../useIsomorphicLayoutEffect-BtM0-_Y8.js";
3
3
  import "../types-BiKqUD4X.js";
4
- import { UsePaginationProps, usePagination } from "../alert-footer-Dpx0nSZr.js";
4
+ import { UsePaginationProps, usePagination } from "../alert-footer-CvksHhtj.js";
5
5
  import "../dialog-trigger-context-DwmhJNzA.js";
6
6
  import "../drawer-trigger-context-BoS9ZcVF.js";
7
- import "../popover-trigger-context-D6z-_uL5.js";
7
+ import "../popover-trigger-context-C3lFgYaX.js";
8
8
  import "../dropdown-item-CKKjumy3.js";
9
9
  import "../dropdown-list-vVhxG14z.js";
10
10
  import "../footer-links-Drm2LFnw.js";
11
- import "../pagination-item-mKQyvHV9.js";
12
- import "../sticky-header-JeG62vfR.js";
11
+ import "../pagination-item-CA3Xron6.js";
12
+ import "../sticky-header-CPHxBupp.js";
13
13
  import "../index-CTw2zfCM.js";
14
14
  import { useIsElementAboveViewport } from "../useIsElementAboveViewport-V1lc14eB.js";
15
15
  import { useScrollDirection } from "../useScrollDirection-CDsglrZR.js";
@@ -1,2 +1,2 @@
1
- import { InitDropdownOptions, initDropdown } from "../../index-DShfRjSD.js";
1
+ import { InitDropdownOptions, initDropdown } from "../../index-DV9bEW_1.js";
2
2
  export { InitDropdownOptions, initDropdown };
@@ -1,4 +1,4 @@
1
- import "../../popover-8q0iwwCv.js";
2
- import { initDropdown } from "../../dropdown-1Tmd7LL7.js";
1
+ import "../../popover-MUiGENkr.js";
2
+ import { initDropdown } from "../../dropdown-A1PW0OoQ.js";
3
3
 
4
4
  export { initDropdown };
@@ -1,4 +1,4 @@
1
- import { InitDropdownOptions, initDropdown } from "../index-DShfRjSD.js";
2
- import { InitPopoverOptions, initPopover } from "../index-5t6b3t6a.js";
1
+ import { InitDropdownOptions, initDropdown } from "../index-DV9bEW_1.js";
2
+ import { InitPopoverOptions, initPopover } from "../index-SaA0V19q.js";
3
3
  import { InitSubNavbarOptions, initSubNavbar } from "../index-CjnsNUdv.js";
4
4
  export { InitDropdownOptions, InitPopoverOptions, InitSubNavbarOptions, initDropdown, initPopover, initSubNavbar };
@@ -1,5 +1,5 @@
1
- import { initPopover } from "../popover-8q0iwwCv.js";
2
- import { initDropdown } from "../dropdown-1Tmd7LL7.js";
1
+ import { initPopover } from "../popover-MUiGENkr.js";
2
+ import { initDropdown } from "../dropdown-A1PW0OoQ.js";
3
3
  import { initSubNavbar } from "../sub-navbar-qSNpTABT.js";
4
4
 
5
5
  export { initDropdown, initPopover, initSubNavbar };
@@ -1,2 +1,2 @@
1
- import { InitPopoverOptions, initPopover } from "../../index-5t6b3t6a.js";
1
+ import { InitPopoverOptions, initPopover } from "../../index-SaA0V19q.js";
2
2
  export { InitPopoverOptions, initPopover };
@@ -1,3 +1,3 @@
1
- import { initPopover } from "../../popover-8q0iwwCv.js";
1
+ import { initPopover } from "../../popover-MUiGENkr.js";
2
2
 
3
3
  export { initPopover };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bi-digital/react",
3
- "version": "0.0.0-experimental-9588a13",
3
+ "version": "0.0.0-experimental-0a7eb0c",
4
4
  "type": "module",
5
5
  "description": "React components from BI Digital",
6
6
  "author": "BI Digital",
@@ -47,13 +47,13 @@
47
47
  "tsdown": "^0.12.7",
48
48
  "typescript": "^5.7.2",
49
49
  "vitest": "^3.2.1",
50
- "@bi-digital/icons-react": "0.0.0-experimental-9588a13"
50
+ "@bi-digital/icons-react": "0.0.0-experimental-0a7eb0c"
51
51
  },
52
52
  "peerDependencies": {
53
53
  "react": "^19",
54
54
  "react-dom": "^19",
55
- "@bi-digital/css": "0.0.0-experimental-9588a13",
56
- "@bi-digital/icons-react": "0.0.0-experimental-9588a13"
55
+ "@bi-digital/css": "0.0.0-experimental-0a7eb0c",
56
+ "@bi-digital/icons-react": "0.0.0-experimental-0a7eb0c"
57
57
  },
58
58
  "scripts": {
59
59
  "build": "tsdown",
@@ -1 +0,0 @@
1
- {"version":3,"file":"popover-8q0iwwCv.js","names":["cleanup: (() => void) | undefined","open: boolean"],"sources":["../src/vanilla/popover/index.ts"],"sourcesContent":["import { autoUpdate, computePosition, flip, offset, shift, hide } from '@floating-ui/dom';\nimport type { Middleware, Placement } from '@floating-ui/dom';\n\nconst padding = 20;\n\nexport type InitPopoverOptions = {\n /** The id of the popover to initialize. The trigger element should have a `aria-controls` attribute with the same id. */\n id: string;\n /**\n * Placement of the popover relative to the trigger.\n * @default 'top'\n */\n placement?: Placement;\n /**\n * Additional middleware to use for positioning the popover.\n *\n * @example\n * Prevent the popover from overflowing the navbar by using the `size` middleware:\n * ```ts\n * positionMiddleware: [\n * size({\n * apply: ({ availableHeight, elements, ...state }) => {\n * const available = `${Math.max(0, availableHeight)}px`;\n * const maxHeight = state.placement.includes('top')\n * ? `calc(${available} - var(--bi-layout-navbar-height, 0))`\n * : available;\n * elements.floating.style.maxHeight = maxHeight;\n * },\n * padding,\n * })\n * ]}\n * ```\n */\n positionMiddleware?: Middleware[];\n /**\n * Whether to disable auto placement.\n * @default false\n */\n disableAutoPlacement?: boolean;\n};\n\n/**\n * Initializes the popover.\n * @param options - InitPopoverOptions\n * @returns A function to programmatically toggle the popover.\n */\nexport const initPopover = ({\n id,\n disableAutoPlacement = false,\n placement = 'top',\n positionMiddleware = [],\n}: InitPopoverOptions) => {\n let cleanup: (() => void) | undefined;\n const popover = document.getElementById(id);\n const triggerSelector = `[aria-controls=\"${id}\"]`;\n const trigger = document.querySelector(triggerSelector);\n\n if (!popover || !trigger) return;\n\n const togglePopover = (open: boolean) => {\n if (open) {\n cleanup = autoUpdate(trigger, popover, () => {\n computePosition(trigger, popover, {\n middleware: [\n offset(padding),\n ...(disableAutoPlacement ? [] : [flip({ padding }), shift({ padding })]),\n ...positionMiddleware,\n hide({ padding }),\n ],\n strategy: 'fixed',\n placement,\n }).then(({ x, y, middlewareData }) => {\n popover.style.translate = `${x}px ${y}px`;\n popover.style.visibility = middlewareData.hide?.referenceHidden ? 'hidden' : 'visible';\n });\n });\n popover.setAttribute('aria-hidden', 'false');\n trigger.setAttribute('aria-expanded', 'true');\n } else {\n cleanup?.();\n popover.setAttribute('aria-hidden', 'true');\n trigger.setAttribute('aria-expanded', 'false');\n }\n };\n\n document.addEventListener(\n 'click',\n (event) => {\n const el = event.target as Element | null;\n const isTrigger = el?.closest?.(triggerSelector);\n const isOutside = !isTrigger && !popover.contains(el as Node);\n const isOpen = popover.getAttribute('aria-hidden') === 'false';\n\n if (isTrigger) {\n togglePopover(!isOpen);\n }\n if (isOutside && isOpen) {\n togglePopover(false);\n }\n },\n true,\n );\n\n return togglePopover;\n};\n"],"mappings":";;;AAGA,MAAM,UAAU;;;;;;AA2ChB,MAAa,cAAc,CAAC,EAC1B,IACA,uBAAuB,OACvB,YAAY,OACZ,qBAAqB,CAAE,GACJ,KAAK;CACxB,IAAIA;CACJ,MAAM,UAAU,SAAS,eAAe,GAAG;CAC3C,MAAM,mBAAmB,kBAAkB,GAAG;CAC9C,MAAM,UAAU,SAAS,cAAc,gBAAgB;AAEvD,MAAK,YAAY,QAAS;CAE1B,MAAM,gBAAgB,CAACC,SAAkB;AACvC,MAAI,MAAM;AACR,aAAU,WAAW,SAAS,SAAS,MAAM;AAC3C,oBAAgB,SAAS,SAAS;KAChC,YAAY;MACV,OAAO,QAAQ;MACf,GAAI,uBAAuB,CAAE,IAAG,CAAC,KAAK,EAAE,QAAS,EAAC,EAAE,MAAM,EAAE,QAAS,EAAC,AAAC;MACvE,GAAG;MACH,KAAK,EAAE,QAAS,EAAC;KAClB;KACD,UAAU;KACV;IACD,EAAC,CAAC,KAAK,CAAC,EAAE,GAAG,GAAG,gBAAgB,KAAK;AACpC,aAAQ,MAAM,aAAa,EAAE,EAAE,KAAK,EAAE;AACtC,aAAQ,MAAM,aAAa,eAAe,MAAM,kBAAkB,WAAW;IAC9E,EAAC;GACH,EAAC;AACF,WAAQ,aAAa,eAAe,QAAQ;AAC5C,WAAQ,aAAa,iBAAiB,OAAO;EAC9C,OAAM;AACL,cAAW;AACX,WAAQ,aAAa,eAAe,OAAO;AAC3C,WAAQ,aAAa,iBAAiB,QAAQ;EAC/C;CACF;AAED,UAAS,iBACP,SACA,CAAC,UAAU;EACT,MAAM,KAAK,MAAM;EACjB,MAAM,YAAY,IAAI,UAAU,gBAAgB;EAChD,MAAM,aAAa,cAAc,QAAQ,SAAS,GAAW;EAC7D,MAAM,SAAS,QAAQ,aAAa,cAAc,KAAK;AAEvD,MAAI,UACF,gBAAe,OAAO;AAExB,MAAI,aAAa,OACf,eAAc,MAAM;CAEvB,GACD,KACD;AAED,QAAO;AACR"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"popover-Co-HV5GI.js","names":["event: MouseEvent","event: KeyboardEvent"],"sources":["../src/components/popover/popover.tsx"],"sourcesContent":["// Thanks to Designsystemet:\n// https://github.com/digdir/designsystemet/blob/8aa6dc274e5b0338d15572f44b5dd3fab6fa4eb1/packages/react/src/components/Popover/Popover.tsx\n\nimport { autoUpdate, computePosition, flip, offset, shift, hide } from '@floating-ui/dom';\nimport type { Middleware, Placement } from '@floating-ui/dom';\nimport { Slot } from '@radix-ui/react-slot';\nimport cl from 'clsx/lite';\nimport { use, useRef } from 'react';\nimport type { HTMLAttributes, Ref } from 'react';\nimport { useEffect } from 'react';\nimport type { DefaultProps } from '../../types';\nimport type { MergeRight } from '../../utilities';\nimport { useMergeRefs } from '../../utilities/hooks/useMergeRefs/useMergeRefs';\nimport { Context } from './popover-trigger-context';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\n\nconst padding = 20;\n\nexport type PopoverProps = MergeRight<\n DefaultProps & HTMLAttributes<HTMLDivElement>,\n {\n /**\n * `id` to connect the trigger with the popover - required when not using PopoverContext.\n */\n id?: string;\n /**\n * Placement of the popover on the trigger.\n * @default 'top'\n */\n placement?: Placement;\n /**\n * When a boolean is provided, the popover will be controlled.\n * @default undefined\n */\n open?: boolean;\n /**\n * Callback when the open state changes.\n * @param open - The new open state of the popover.\n */\n onOpenChange?: (open: boolean) => void;\n /**\n * Whether to disable auto placement.\n * @default false\n */\n disableAutoPlacement?: boolean;\n /**\n * Additional middleware to use for positioning the popover.\n *\n * @example\n * Prevent the popover from overflowing the navbar by using the `size` middleware:\n * ```ts\n * positionMiddleware={[\n * size({\n * apply: ({ availableHeight, elements, ...state }) => {\n * const available = `${Math.max(0, availableHeight)}px`;\n * const maxHeight = state.placement.includes('top')\n * ? `calc(${available} - var(--bi-layout-navbar-height, 0))`\n * : available;\n * elements.floating.style.maxHeight = maxHeight;\n * },\n * padding,\n * })\n * ]}\n * ```\n */\n positionMiddleware?: Middleware[];\n /**\n * Change the default rendered element for the one passed as a child, merging their props and behavior.\n * @default false\n */\n asChild?: boolean;\n ref?: Ref<HTMLDivElement>;\n }\n>;\n\n/**\n * Popover component, used to display content in a popover over an element.\n *\n * @example with TriggerContext\n * <PopoverTriggerContext>\n * <PopoverTrigger>Open Popover</PopoverTrigger>\n * <Popover>\n * Content\n * </Popover>\n * </PopoverTriggerContext>\n *\n * @example without TriggerContext\n * <Button aria-controls=\"my-popover\" aria-expanded={open}>Open Popover</Button>\n * <Popover open={open} onOpenChange={onOpenChange} id=\"my-popover\">\n * Content\n * </Popover>\n */\nexport const Popover = ({\n id,\n className,\n onOpenChange,\n open,\n placement = 'top',\n disableAutoPlacement = false,\n positionMiddleware = [],\n dark = false,\n asChild = false,\n ref,\n ...rest\n}: PopoverProps) => {\n const Component = asChild ? Slot : 'div';\n\n const popoverRef = useRef<HTMLDivElement>(null);\n const isControlled = useRef(open !== undefined);\n const mergedRefs = useMergeRefs([popoverRef, ref]);\n const { popoverId, setPopoverId, popoverOpen, setPopoverOpen } = use(Context);\n\n const [isOpen, setIsOpen] = useControllableState({\n prop: isControlled.current ? open : popoverOpen,\n onChange: (val) => {\n onOpenChange?.(val);\n setPopoverOpen?.(val);\n },\n defaultProp: false,\n caller: 'Popover',\n });\n\n useEffect(() => {\n const popover = popoverRef.current;\n const handleClick = (event: MouseEvent) => {\n const el = event.target as Element | null;\n const isTrigger = el?.closest?.(`[aria-controls=\"${popover?.id}\"]`);\n const isOutside = !isTrigger && !popover?.contains(el as Node);\n\n if (isOutside) {\n setIsOpen(false);\n }\n };\n\n const handleKeydown = (event: KeyboardEvent) => {\n if (event.key !== 'Escape' || !isOpen) return;\n event.preventDefault(); // Prevent closing fullscreen in Safari\n setIsOpen(false);\n };\n\n document.addEventListener('click', handleClick, true); // Use capture to execute before React event API\n document.addEventListener('keydown', handleKeydown);\n return () => {\n document.removeEventListener('click', handleClick, true);\n document.removeEventListener('keydown', handleKeydown);\n };\n }, [isOpen, setIsOpen]);\n\n useEffect(() => {\n const popover = popoverRef.current;\n const trigger = document.querySelector(`[aria-controls=\"${popover?.id}\"]`);\n\n if (popover && trigger && isOpen)\n return autoUpdate(trigger, popover, () => {\n computePosition(trigger, popover, {\n middleware: [\n offset(padding),\n ...(disableAutoPlacement ? [] : [flip({ padding }), shift({ padding })]),\n ...positionMiddleware,\n hide({ padding, strategy: 'escaped' }),\n ],\n strategy: 'fixed',\n placement,\n }).then(({ x, y, middlewareData }) => {\n popover.style.translate = `${x}px ${y}px`;\n popover.style.visibility = middlewareData.hide?.referenceHidden ? 'hidden' : 'visible';\n });\n });\n }, [isOpen, placement, id, disableAutoPlacement, positionMiddleware]);\n\n // Update context with id\n useEffect(() => {\n if (id) setPopoverId?.(id);\n }, [id, setPopoverId]);\n\n return (\n <Component\n className={cl('bi-popover', className)}\n id={id || popoverId}\n aria-hidden={!isOpen}\n data-dark={dark}\n ref={mergedRefs}\n {...rest}\n />\n );\n};\n"],"mappings":";;;;;;;;;;AAgBA,MAAM,UAAU;;;;;;;;;;;;;;;;;;AA4EhB,MAAa,UAAU,CAAC,EACtB,IACA,WACA,cACA,MACA,YAAY,OACZ,uBAAuB,OACvB,qBAAqB,CAAE,GACvB,OAAO,OACP,UAAU,OACV,IACA,GAAG,MACU,KAAK;CAClB,MAAM,YAAY,UAAU,OAAO;CAEnC,MAAM,aAAa,OAAuB,KAAK;CAC/C,MAAM,eAAe,OAAO,gBAAmB;CAC/C,MAAM,aAAa,aAAa,CAAC,YAAY,GAAI,EAAC;CAClD,MAAM,EAAE,WAAW,cAAc,aAAa,gBAAgB,GAAG,IAAI,QAAQ;CAE7E,MAAM,CAAC,QAAQ,UAAU,GAAG,qBAAqB;EAC/C,MAAM,aAAa,UAAU,OAAO;EACpC,UAAU,CAAC,QAAQ;AACjB,kBAAe,IAAI;AACnB,oBAAiB,IAAI;EACtB;EACD,aAAa;EACb,QAAQ;CACT,EAAC;AAEF,WAAU,MAAM;EACd,MAAM,UAAU,WAAW;EAC3B,MAAM,cAAc,CAACA,UAAsB;GACzC,MAAM,KAAK,MAAM;GACjB,MAAM,YAAY,IAAI,WAAW,kBAAkB,SAAS,GAAG,IAAI;GACnE,MAAM,aAAa,cAAc,SAAS,SAAS,GAAW;AAE9D,OAAI,UACF,WAAU,MAAM;EAEnB;EAED,MAAM,gBAAgB,CAACC,UAAyB;AAC9C,OAAI,MAAM,QAAQ,aAAa,OAAQ;AACvC,SAAM,gBAAgB;AACtB,aAAU,MAAM;EACjB;AAED,WAAS,iBAAiB,SAAS,aAAa,KAAK;AACrD,WAAS,iBAAiB,WAAW,cAAc;AACnD,SAAO,MAAM;AACX,YAAS,oBAAoB,SAAS,aAAa,KAAK;AACxD,YAAS,oBAAoB,WAAW,cAAc;EACvD;CACF,GAAE,CAAC,QAAQ,SAAU,EAAC;AAEvB,WAAU,MAAM;EACd,MAAM,UAAU,WAAW;EAC3B,MAAM,UAAU,SAAS,eAAe,kBAAkB,SAAS,GAAG,IAAI;AAE1E,MAAI,WAAW,WAAW,OACxB,QAAO,WAAW,SAAS,SAAS,MAAM;AACxC,mBAAgB,SAAS,SAAS;IAChC,YAAY;KACV,OAAO,QAAQ;KACf,GAAI,uBAAuB,CAAE,IAAG,CAAC,KAAK,EAAE,QAAS,EAAC,EAAE,MAAM,EAAE,QAAS,EAAC,AAAC;KACvE,GAAG;KACH,KAAK;MAAE;MAAS,UAAU;KAAW,EAAC;IACvC;IACD,UAAU;IACV;GACD,EAAC,CAAC,KAAK,CAAC,EAAE,GAAG,GAAG,gBAAgB,KAAK;AACpC,YAAQ,MAAM,aAAa,EAAE,EAAE,KAAK,EAAE;AACtC,YAAQ,MAAM,aAAa,eAAe,MAAM,kBAAkB,WAAW;GAC9E,EAAC;EACH,EAAC;CACL,GAAE;EAAC;EAAQ;EAAW;EAAI;EAAsB;CAAmB,EAAC;AAGrE,WAAU,MAAM;AACd,MAAI,GAAI,gBAAe,GAAG;CAC3B,GAAE,CAAC,IAAI,YAAa,EAAC;AAEtB,wBACE,IAAC;EACC,WAAW,KAAG,cAAc,UAAU;EACtC,IAAI,MAAM;EACV,gBAAc;EACd,aAAW;EACX,KAAK;EACL,GAAI;GACJ;AAEL"}