@torpor/ui 0.0.17 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (143) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/dist/Accordion/Accordion.torp +53 -54
  3. package/dist/Accordion/AccordionContent.torp +5 -5
  4. package/dist/Accordion/AccordionHeader.torp +5 -4
  5. package/dist/Accordion/AccordionItem.torp +13 -8
  6. package/dist/Accordion/AccordionTrigger.torp +5 -5
  7. package/dist/Accordion/AccordionTypes.ts +1 -0
  8. package/dist/Dialog/Dialog.torp +156 -0
  9. package/dist/Dialog/DialogBody.torp +34 -0
  10. package/dist/Dialog/DialogButton.torp +48 -0
  11. package/dist/Dialog/DialogFooter.torp +13 -0
  12. package/dist/Dialog/DialogHeader.torp +34 -0
  13. package/dist/Dialog/DialogTypes.ts +16 -0
  14. package/dist/Dialog/index.cjs +53 -0
  15. package/dist/Dialog/index.cjs.map +1 -0
  16. package/dist/Dialog/index.js +22 -0
  17. package/dist/Dialog/index.js.map +1 -0
  18. package/dist/NavMenu/NavMenu.torp +178 -0
  19. package/dist/NavMenu/NavMenuButton.torp +46 -0
  20. package/dist/NavMenu/NavMenuElement.torp +43 -0
  21. package/dist/NavMenu/NavMenuGroup.torp +30 -0
  22. package/dist/NavMenu/NavMenuGroupHeader.torp +30 -0
  23. package/dist/NavMenu/NavMenuLink.torp +52 -0
  24. package/dist/NavMenu/NavMenuPopout.torp +69 -0
  25. package/dist/NavMenu/NavMenuPopoutButton.torp +120 -0
  26. package/dist/NavMenu/NavMenuPopoutContent.torp +79 -0
  27. package/dist/NavMenu/NavMenuSeparator.torp +14 -0
  28. package/dist/NavMenu/NavMenuTypes.ts +32 -0
  29. package/dist/NavMenu/index.cjs +78 -0
  30. package/dist/NavMenu/index.cjs.map +1 -0
  31. package/dist/NavMenu/index.js +42 -0
  32. package/dist/NavMenu/index.js.map +1 -0
  33. package/dist/Popover/Popover.torp +105 -0
  34. package/dist/Popover/PopoverContentAnchored.torp +107 -0
  35. package/dist/Popover/PopoverContentContextual.torp +99 -0
  36. package/dist/Popover/PopoverContentStatic.torp +78 -0
  37. package/dist/Popover/PopoverOverlay.torp +32 -0
  38. package/dist/Popover/PopoverTrigger.torp +29 -0
  39. package/dist/Popover/PopoverTriggerContextual.torp +37 -0
  40. package/dist/Popover/PopoverTriggerHover.torp +30 -0
  41. package/dist/Popover/PopoverTypes.ts +30 -0
  42. package/dist/Popover/index.cjs +222 -0
  43. package/dist/Popover/index.cjs.map +1 -0
  44. package/dist/Popover/index.js +183 -0
  45. package/dist/Popover/index.js.map +1 -0
  46. package/dist/Popover/mountClickPopover.ts +50 -0
  47. package/dist/Popover/mountContextPopover.ts +50 -0
  48. package/dist/Popover/mountHoverPopover.ts +57 -0
  49. package/dist/Popover/showPopover.ts +24 -0
  50. package/dist/Popover/showPopoverPrompt.ts +23 -0
  51. package/dist/TabGroup/TabContent.torp +4 -4
  52. package/dist/TabGroup/TabGroup.torp +58 -59
  53. package/dist/TabGroup/TabGroupTypes.ts +1 -0
  54. package/dist/TabGroup/TabHeader.torp +10 -8
  55. package/dist/TabGroup/TabList.torp +4 -3
  56. package/dist/TabGroup/TabTrigger.torp +6 -6
  57. package/dist/metafile-cjs.json +1 -1
  58. package/dist/metafile-esm.json +1 -1
  59. package/dist/mount/disableScroll.ts +28 -0
  60. package/dist/mount/hoverTrigger.ts +59 -0
  61. package/dist/mount/trapFocus.ts +58 -0
  62. package/dist/utils/documentEvents.ts +17 -0
  63. package/dist/utils/getScrollParent.ts +22 -0
  64. package/dist/utils/setContextPosition.ts +31 -0
  65. package/dist/utils/setPopoverPosition.ts +138 -0
  66. package/package.json +21 -6
  67. package/scripts/postbuild.ts +17 -5
  68. package/src/Accordion/Accordion.torp +53 -54
  69. package/src/Accordion/AccordionContent.torp +5 -5
  70. package/src/Accordion/AccordionHeader.torp +5 -4
  71. package/src/Accordion/AccordionItem.torp +13 -8
  72. package/src/Accordion/AccordionTrigger.torp +5 -5
  73. package/src/Accordion/AccordionTypes.ts +1 -0
  74. package/src/Dialog/Dialog.torp +156 -0
  75. package/src/Dialog/DialogBody.torp +34 -0
  76. package/src/Dialog/DialogButton.torp +48 -0
  77. package/src/Dialog/DialogFooter.torp +13 -0
  78. package/src/Dialog/DialogHeader.torp +34 -0
  79. package/src/Dialog/DialogTypes.ts +16 -0
  80. package/src/Dialog/index.ts +7 -0
  81. package/src/Dialog.ts +7 -0
  82. package/src/NavMenu/NavMenu.torp +178 -0
  83. package/src/NavMenu/NavMenuButton.torp +46 -0
  84. package/src/NavMenu/NavMenuElement.torp +43 -0
  85. package/src/NavMenu/NavMenuGroup.torp +30 -0
  86. package/src/NavMenu/NavMenuGroupHeader.torp +30 -0
  87. package/src/NavMenu/NavMenuLink.torp +52 -0
  88. package/src/NavMenu/NavMenuPopout.torp +69 -0
  89. package/src/NavMenu/NavMenuPopoutButton.torp +120 -0
  90. package/src/NavMenu/NavMenuPopoutContent.torp +79 -0
  91. package/src/NavMenu/NavMenuSeparator.torp +14 -0
  92. package/src/NavMenu/NavMenuTypes.ts +32 -0
  93. package/src/NavMenu/index.ts +23 -0
  94. package/src/NavMenu.ts +23 -0
  95. package/src/Popover/Popover.torp +105 -0
  96. package/src/Popover/PopoverContentAnchored.torp +107 -0
  97. package/src/Popover/PopoverContentContextual.torp +99 -0
  98. package/src/Popover/PopoverContentStatic.torp +78 -0
  99. package/src/Popover/PopoverOverlay.torp +32 -0
  100. package/src/Popover/PopoverTrigger.torp +29 -0
  101. package/src/Popover/PopoverTriggerContextual.torp +37 -0
  102. package/src/Popover/PopoverTriggerHover.torp +30 -0
  103. package/src/Popover/PopoverTypes.ts +30 -0
  104. package/src/Popover/index.ts +29 -0
  105. package/src/Popover/mountClickPopover.ts +50 -0
  106. package/src/Popover/mountContextPopover.ts +50 -0
  107. package/src/Popover/mountHoverPopover.ts +57 -0
  108. package/src/Popover/showPopover.ts +24 -0
  109. package/src/Popover/showPopoverPrompt.ts +23 -0
  110. package/src/Popover.ts +29 -0
  111. package/src/TabGroup/TabContent.torp +4 -4
  112. package/src/TabGroup/TabGroup.torp +58 -59
  113. package/src/TabGroup/TabGroupTypes.ts +1 -0
  114. package/src/TabGroup/TabHeader.torp +10 -8
  115. package/src/TabGroup/TabList.torp +4 -3
  116. package/src/TabGroup/TabTrigger.torp +6 -6
  117. package/src/mount/disableScroll.ts +28 -0
  118. package/src/mount/hoverTrigger.ts +59 -0
  119. package/src/mount/trapFocus.ts +58 -0
  120. package/src/utils/documentEvents.ts +17 -0
  121. package/src/utils/getScrollParent.ts +22 -0
  122. package/src/utils/setContextPosition.ts +31 -0
  123. package/src/utils/setPopoverPosition.ts +138 -0
  124. package/test/Accordion/accessibility.test.ts +0 -3
  125. package/test/Accordion/for-items.test.ts +2 -4
  126. package/test/Accordion/keyboard.test.ts +0 -3
  127. package/test/Accordion/multiple-item-toggle.test.ts +3 -5
  128. package/test/Accordion/single-item-toggle.test.ts +3 -5
  129. package/test/Dialog/accessibility-alert.test.ts +40 -0
  130. package/test/Dialog/accessibility-modal.test.ts +52 -0
  131. package/test/Dialog/components/CustomDialog.torp +20 -0
  132. package/test/Dialog/components/DialogAccessibility.torp +31 -0
  133. package/test/Dialog/components/DialogFunction.torp +22 -0
  134. package/test/Dialog/components/DialogVariable.torp +35 -0
  135. package/test/Dialog/function.test.ts +26 -0
  136. package/test/Dialog/variable.test.ts +27 -0
  137. package/test/NavMenu/accessibility.test.ts +97 -0
  138. package/test/NavMenu/basic.test.ts +22 -0
  139. package/test/NavMenu/components/NavMenu.torp +28 -0
  140. package/test/NavMenu/components/NavMenuAccessibility.torp +35 -0
  141. package/test/TabGroup/for-items.test.ts +2 -4
  142. package/test/TabGroup/item-trigger.test.ts +3 -5
  143. package/tsup.config.ts +8 -1
@@ -0,0 +1,26 @@
1
+ import { getByText, queryByText } from "@testing-library/dom";
2
+ import "@testing-library/jest-dom/vitest";
3
+ import userEvent from "@testing-library/user-event";
4
+ import { mount } from "@torpor/view";
5
+ import { describe, expect, it } from "vitest";
6
+ import DialogFunction from "./components/DialogFunction.torp";
7
+
8
+ describe("Dialog", () => {
9
+ it("Showing with a function", async () => {
10
+ const container = document.createElement("div");
11
+ document.body.appendChild(container);
12
+ mount(container, DialogFunction);
13
+
14
+ // By default, the modal shouldn't be shown
15
+ expect(queryByText(container, "Which color do you prefer?")).not.toBeInTheDocument();
16
+
17
+ // Clicking the button should show the modal
18
+ await userEvent.click(getByText(container, "Show the modal"));
19
+ expect(queryByText(container, "Which color do you prefer?")).toBeInTheDocument();
20
+
21
+ // Clicking the blue button should hide the modal and set the value
22
+ await userEvent.click(getByText(container, "Blue"));
23
+ expect(queryByText(container, "Which color do you prefer?")).not.toBeInTheDocument();
24
+ expect(queryByText(container, "Your favorite color is blue?!")).toBeInTheDocument();
25
+ });
26
+ });
@@ -0,0 +1,27 @@
1
+ import { getByText, queryByText } from "@testing-library/dom";
2
+ import "@testing-library/jest-dom/vitest";
3
+ import userEvent from "@testing-library/user-event";
4
+ import { mount } from "@torpor/view";
5
+ import { describe, expect, it } from "vitest";
6
+ import DialogVariable from "./components/DialogVariable.torp";
7
+
8
+ describe("Dialog", () => {
9
+ it("Showing with a variable", async () => {
10
+ const container = document.createElement("div");
11
+ document.body.appendChild(container);
12
+ mount(container, DialogVariable);
13
+
14
+ // By default, the modal shouldn't be shown
15
+ expect(queryByText(container, "Which color do you prefer?")).not.toBeInTheDocument();
16
+ expect(queryByText(container, "Your favorite color is blue?!")).not.toBeInTheDocument();
17
+
18
+ // Clicking the button should show the modal
19
+ await userEvent.click(getByText(container, "Show the modal"));
20
+ expect(queryByText(container, "Which color do you prefer?")).toBeInTheDocument();
21
+
22
+ // Clicking the blue button should hide the modal and set the value
23
+ await userEvent.click(getByText(container, "Blue"));
24
+ expect(queryByText(container, "Which color do you prefer?")).not.toBeInTheDocument();
25
+ expect(queryByText(container, "Your favorite color is blue?!")).toBeInTheDocument();
26
+ });
27
+ });
@@ -0,0 +1,97 @@
1
+ import { getByText, queryByText } from "@testing-library/dom";
2
+ import "@testing-library/jest-dom/vitest";
3
+ import userEvent from "@testing-library/user-event";
4
+ import { mount } from "@torpor/view";
5
+ import { describe, expect, it } from "vitest";
6
+ import NavMenuAccessibility from "./components/NavMenuAccessibility.torp";
7
+
8
+ describe("NavMenu", () => {
9
+ it("Accessibility", async () => {
10
+ const container = document.createElement("div");
11
+ document.body.appendChild(container);
12
+ mount(container, NavMenuAccessibility);
13
+
14
+ // Tests from https://www.w3.org/WAI/ARIA/apg/patterns/menu/
15
+ // NOTE: NavMenu is a menubar
16
+
17
+ // A menu is a container of items that represent choices. The element serving as the menu has
18
+ // a role of either menu or menubar
19
+ expect(queryByText(container, "Home")?.parentElement).toHaveAttribute("role", "menubar");
20
+
21
+ // The items contained in a menu are child elements of the containing menu or menubar and have
22
+ // any of the following roles:
23
+ // * menuitem
24
+ // * menuitemcheckbox
25
+ // * menuitemradio
26
+ expect(queryByText(container, "Home")).toHaveAttribute("role", "menuitem");
27
+ expect(queryByText(container, "Page")).toHaveAttribute("role", "menuitem");
28
+ expect(queryByText(container, "Disabled")).toHaveAttribute("role", "menuitem");
29
+ expect(queryByText(container, "Subpages")).toHaveAttribute("role", "menuitem");
30
+
31
+ // If activating a menuitem opens a submenu, the menuitem is known as a parent menuitem. A submenu's
32
+ // menu element is:
33
+ // * Contained inside the same menu element as its parent menuitem
34
+ // * Is the sibling element immediately following its parent menuitem
35
+
36
+ // A parent menuitem has aria-haspopup set to either menu or true
37
+ expect(queryByText(container, "Subpages")).toHaveAttribute("aria-haspopup", "true");
38
+
39
+ // A parent menuitem has aria-expanded set to false when its child menu is not visible and set
40
+ // to true when the child menu is visible
41
+ expect(queryByText(container, "Subpages")).toHaveAttribute("aria-expanded", "false");
42
+ await userEvent.click(getByText(container, "Subpages"));
43
+ expect(queryByText(container, "Subpages")).toHaveAttribute("aria-expanded", "true");
44
+
45
+ // One of the following approaches is used to enable scripts to move focus among items in a
46
+ // menu as described in Keyboard Navigation Inside Components:
47
+ // * The menu container has tabindex set to -1 or 0 and aria-activedescendant set to the ID
48
+ // of the focused item
49
+ // * Each item in the menu has tabindex set to -1, except in a menubar, where the first item
50
+ // has tabindex set to 0
51
+
52
+ // When a menuitemcheckbox or menuitemradio is checked, aria-checked is set to true
53
+ // NOTE: We don't (currently?) have checkboxes or radios in NavMenus
54
+
55
+ // When a menu item is disabled, aria-disabled is set to true
56
+ expect(queryByText(container, "Page")).not.toHaveAttribute("aria-disabled");
57
+ expect(queryByText(container, "Disabled")).toHaveAttribute("aria-disabled", "true");
58
+
59
+ // Items in a menu may be divided into groups by placing an element with a role of separator
60
+ // between groups. For example, this technique should be used when a menu contains a set of
61
+ // menuitemradio items
62
+ expect(queryByText(container, "/")).toHaveAttribute("role", "separator");
63
+
64
+ // All separators should have aria-orientation consistent with the separator's orientation
65
+ // NOTE: What does this mean? None of the example separators have aria-orientation set
66
+
67
+ // If a menubar has a visible label, the element with role menubar has aria-labelledby set to
68
+ // a value that refers to the labelling element. Otherwise, the menubar element has a label
69
+ // provided by aria-label
70
+ // NOTE: We only support aria-label and it's required
71
+ expect(queryByText(container, "Home")?.parentElement).toHaveAttribute(
72
+ "aria-label",
73
+ "Site navigation",
74
+ );
75
+
76
+ // If a menubar is vertically oriented, it has aria-orientation set to vertical. The default
77
+ // value of aria-orientation for a menubar is horizontal
78
+ expect(queryByText(container, "Home")?.parentElement).toHaveAttribute(
79
+ "aria-orientation",
80
+ "horizontal",
81
+ );
82
+ expect(queryByText(container, "Subpage 1")?.parentElement).toHaveAttribute(
83
+ "aria-orientation",
84
+ "vertical",
85
+ );
86
+
87
+ // Our own tests
88
+
89
+ // The group should be labeled
90
+ expect(queryByText(container, "Group header")).toBeInTheDocument();
91
+ const headerId = queryByText(container, "Group header")?.id;
92
+ expect(queryByText(container, "Group header")?.parentElement).toHaveAttribute(
93
+ "aria-labelledby",
94
+ headerId,
95
+ );
96
+ });
97
+ });
@@ -0,0 +1,22 @@
1
+ import { getByText, queryByText } from "@testing-library/dom";
2
+ import "@testing-library/jest-dom/vitest";
3
+ import userEvent from "@testing-library/user-event";
4
+ import { mount } from "@torpor/view";
5
+ import { describe, expect, it } from "vitest";
6
+ import NavMenu from "./components/NavMenu.torp";
7
+
8
+ describe("NavMenu", () => {
9
+ it("Basic operation", async () => {
10
+ const container = document.createElement("div");
11
+ document.body.appendChild(container);
12
+ mount(container, NavMenu);
13
+
14
+ // By default, body 1 should be displayed
15
+ expect(queryByText(container, "Home")).toBeInTheDocument();
16
+ expect(queryByText(container, "Subpage 1")).not.toBeInTheDocument();
17
+
18
+ // Clicking header 2 should hide body 1 and reveal body 2
19
+ await userEvent.click(getByText(container, "Subpages"));
20
+ expect(queryByText(container, "Subpage 1")).toBeInTheDocument();
21
+ });
22
+ });
@@ -0,0 +1,28 @@
1
+ import {
2
+ NavMenu,
3
+ NavMenuLink,
4
+ NavMenuPopout,
5
+ NavMenuPopoutButton,
6
+ NavMenuPopoutContent,
7
+ NavMenuSeparator
8
+ } from "../../../src/NavMenu";
9
+
10
+ export default function NavMenu($props: any) {
11
+ @render {
12
+ <NavMenu ariaLabel="Site navigation">
13
+ <NavMenuLink href="/">Home</NavMenuLink>
14
+ <NavMenuLink href="/page1">Page 1</NavMenuLink>
15
+ <NavMenuSeparator />
16
+ <NavMenuPopout>
17
+ <NavMenuPopoutButton>Subpages</NavMenuPopoutButton>
18
+ <NavMenuPopoutContent>
19
+ <NavMenu ariaLabel="Sub site navigation" orientation="vertical">
20
+ <NavMenuLink href="/sub/page1">Subpage 1</NavMenuLink>
21
+ <NavMenuLink href="/sub/page2">Subpage 2</NavMenuLink>
22
+ <NavMenuLink href="/sub/page3">Subpage 3</NavMenuLink>
23
+ </NavMenu>
24
+ </NavMenuPopoutContent>
25
+ </NavMenuPopout>
26
+ </NavMenu>
27
+ }
28
+ }
@@ -0,0 +1,35 @@
1
+ import {
2
+ NavMenu,
3
+ NavMenuLink,
4
+ NavMenuPopout,
5
+ NavMenuPopoutButton,
6
+ NavMenuPopoutContent,
7
+ NavMenuGroup,
8
+ NavMenuGroupHeader,
9
+ NavMenuSeparator
10
+ } from "../../../src/NavMenu";
11
+
12
+ export default function NavMenuAccessibility($props: any) {
13
+ @render {
14
+ <NavMenu ariaLabel="Site navigation">
15
+ <NavMenuLink href="/">Home</NavMenuLink>
16
+ <NavMenuLink href="/page1">Page</NavMenuLink>
17
+ <NavMenuLink href="/disabled" disabled>Disabled</NavMenuLink>
18
+ <NavMenuSeparator>/</NavMenuSeparator>
19
+ <NavMenuPopout>
20
+ <NavMenuPopoutButton>Subpages</NavMenuPopoutButton>
21
+ <NavMenuPopoutContent>
22
+ <NavMenu ariaLabel="Sub site navigation" orientation="vertical">
23
+ <NavMenuLink href="/sub/page1">Subpage 1</NavMenuLink>
24
+ <NavMenuLink href="/sub/page2">Subpage 2</NavMenuLink>
25
+ <NavMenuLink href="/sub/page3">Subpage 3</NavMenuLink>
26
+ </NavMenu>
27
+ </NavMenuPopoutContent>
28
+ </NavMenuPopout>
29
+ <NavMenuGroup>
30
+ <NavMenuGroupHeader as="h4">Group header</NavMenuGroupHeader>
31
+ <NavMenuLink href="/grouped-page">Grouped page</NavMenuLink>
32
+ </NavMenuGroup>
33
+ </NavMenu>
34
+ }
35
+ }
@@ -7,8 +7,6 @@ import TabGroupList from "./components/TabGroupList.torp";
7
7
 
8
8
  describe("TabGroup", () => {
9
9
  it("Items in a for loop", async () => {
10
- const user = userEvent.setup();
11
-
12
10
  let $state = $watch({
13
11
  value: "1",
14
12
  items: [
@@ -35,7 +33,7 @@ describe("TabGroup", () => {
35
33
  expect(queryByText(container, "Content 3")).not.toBeInTheDocument();
36
34
 
37
35
  // Clicking header 1 should reveal body 1
38
- await user.click(getByText(container, "Item 1"));
36
+ await userEvent.click(getByText(container, "Item 1"));
39
37
  expect(queryByText(container, "Content 1")).toBeInTheDocument();
40
38
 
41
39
  $state.items.push({ id: 3, header: "Item 4", text: "Content 4" });
@@ -47,7 +45,7 @@ describe("TabGroup", () => {
47
45
  expect(queryByText(container, "Content 4")).not.toBeInTheDocument();
48
46
 
49
47
  // Clicking header 4 should reveal body 4
50
- await user.click(getByText(container, "Item 4"));
48
+ await userEvent.click(getByText(container, "Item 4"));
51
49
  expect(queryByText(container, "Content 1")).not.toBeInTheDocument();
52
50
  expect(queryByText(container, "Content 4")).toBeInTheDocument();
53
51
  });
@@ -7,8 +7,6 @@ import TabGroupTrigger from "./components/TabGroupTrigger.torp";
7
7
 
8
8
  describe("TabGroup", () => {
9
9
  it("Item trigger", async () => {
10
- const user = userEvent.setup();
11
-
12
10
  const container = document.createElement("div");
13
11
  document.body.appendChild(container);
14
12
  mount(container, TabGroupTrigger);
@@ -18,16 +16,16 @@ describe("TabGroup", () => {
18
16
  expect(queryByText(container, "Content 3")).not.toBeInTheDocument();
19
17
 
20
18
  // Clicking header 1 should reveal body 1
21
- await user.click(getByText(container, "Header 1"));
19
+ await userEvent.click(getByText(container, "Header 1"));
22
20
  expect(queryByText(container, "Content 1")).toBeInTheDocument();
23
21
 
24
22
  // Clicking header 2 should hide body 1 and reveal body 2
25
- await user.click(getByText(container, "Header 2"));
23
+ await userEvent.click(getByText(container, "Header 2"));
26
24
  expect(queryByText(container, "Content 1")).not.toBeInTheDocument();
27
25
  expect(queryByText(container, "Content 2")).toBeInTheDocument();
28
26
 
29
27
  // Clicking header 2 again should keep body 2
30
- await user.click(getByText(container, "Header 2"));
28
+ await userEvent.click(getByText(container, "Header 2"));
31
29
  expect(queryByText(container, "Content 1")).not.toBeInTheDocument();
32
30
  expect(queryByText(container, "Content 2")).toBeInTheDocument();
33
31
  });
package/tsup.config.ts CHANGED
@@ -6,7 +6,14 @@ type Config =
6
6
  | ((overrideOptions: Options) => Options | Options[] | Promise<Options | Options[]>);
7
7
 
8
8
  export default defineConfig({
9
- entry: ["src/Accordion/index.ts", "src/TabGroup/index.ts", "src/motion.ts"],
9
+ entry: [
10
+ "src/Accordion/index.ts",
11
+ "src/Dialog/index.ts",
12
+ "src/NavMenu/index.ts",
13
+ "src/Popover/index.ts",
14
+ "src/TabGroup/index.ts",
15
+ "src/motion.ts",
16
+ ],
10
17
  format: ["esm", "cjs"],
11
18
  dts: { entry: ["src/motion.ts"] },
12
19
  clean: true,