@_tc/template-core 0.2.1-bate.1 → 0.2.2

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 (167) hide show
  1. package/README.md +34 -0
  2. package/fe/_virtual/_rolldown/runtime.js +13 -0
  3. package/fe/packages/react/ui/components/Date/Calendar.js +1 -5
  4. package/fe/packages/react/ui/components/Date/DateTestPage.js +15 -331
  5. package/fe/packages/react/ui/components/Date/LocaleContext.d.ts +1 -0
  6. package/fe/packages/react/ui/components/Date/index.js +2 -2
  7. package/fe/packages/react/ui/components/Date/locales.d.ts +5 -0
  8. package/fe/packages/react/ui/components/Date/locales.js +16 -1
  9. package/fe/packages/react/ui/components/testPage/DemoSection.d.ts +10 -0
  10. package/fe/packages/react/ui/components/testPage/DemoSection.js +73 -0
  11. package/fe/packages/react/ui/components/testPage/MenuTestPage.js +16 -389
  12. package/fe/packages/react/ui/components/testPage/demoRegistry.d.ts +4 -0
  13. package/fe/packages/react/ui/components/testPage/demoRegistry.js +214 -0
  14. package/fe/packages/react/ui/components/testPage/demos/core/BreadcrumbDemo.d.ts +6 -0
  15. package/fe/packages/react/ui/components/testPage/demos/core/BreadcrumbDemo.js +44 -0
  16. package/fe/packages/react/ui/components/testPage/demos/core/BreadcrumbDemo2.js +4 -0
  17. package/fe/packages/react/ui/components/testPage/demos/core/ButtonDemo.d.ts +6 -0
  18. package/fe/packages/react/ui/components/testPage/demos/core/ButtonDemo.js +85 -0
  19. package/fe/packages/react/ui/components/testPage/demos/core/ButtonDemo2.js +4 -0
  20. package/fe/packages/react/ui/components/testPage/demos/core/CardDemo.d.ts +6 -0
  21. package/fe/packages/react/ui/components/testPage/demos/core/CardDemo.js +52 -0
  22. package/fe/packages/react/ui/components/testPage/demos/core/CardDemo2.js +4 -0
  23. package/fe/packages/react/ui/components/testPage/demos/core/CheckboxDemo.d.ts +6 -0
  24. package/fe/packages/react/ui/components/testPage/demos/core/CheckboxDemo.js +41 -0
  25. package/fe/packages/react/ui/components/testPage/demos/core/CheckboxDemo2.js +4 -0
  26. package/fe/packages/react/ui/components/testPage/demos/core/ConfirmDialogDemo.d.ts +6 -0
  27. package/fe/packages/react/ui/components/testPage/demos/core/ConfirmDialogDemo.js +35 -0
  28. package/fe/packages/react/ui/components/testPage/demos/core/ConfirmDialogDemo2.js +4 -0
  29. package/fe/packages/react/ui/components/testPage/demos/core/DataTableDemo.d.ts +6 -0
  30. package/fe/packages/react/ui/components/testPage/demos/core/DataTableDemo.js +243 -0
  31. package/fe/packages/react/ui/components/testPage/demos/core/DataTableDemo2.js +4 -0
  32. package/fe/packages/react/ui/components/testPage/demos/core/DrawerDemo.d.ts +6 -0
  33. package/fe/packages/react/ui/components/testPage/demos/core/DrawerDemo.js +105 -0
  34. package/fe/packages/react/ui/components/testPage/demos/core/DrawerDemo2.js +4 -0
  35. package/fe/packages/react/ui/components/testPage/demos/core/DropdownDemo.d.ts +6 -0
  36. package/fe/packages/react/ui/components/testPage/demos/core/DropdownDemo.js +48 -0
  37. package/fe/packages/react/ui/components/testPage/demos/core/DropdownDemo2.js +4 -0
  38. package/fe/packages/react/ui/components/testPage/demos/core/FormDemo.d.ts +6 -0
  39. package/fe/packages/react/ui/components/testPage/demos/core/FormDemo.js +56 -0
  40. package/fe/packages/react/ui/components/testPage/demos/core/FormDemo2.js +4 -0
  41. package/fe/packages/react/ui/components/testPage/demos/core/ImageUploadDemo.d.ts +6 -0
  42. package/fe/packages/react/ui/components/testPage/demos/core/ImageUploadDemo.js +26 -0
  43. package/fe/packages/react/ui/components/testPage/demos/core/ImageUploadDemo2.js +4 -0
  44. package/fe/packages/react/ui/components/testPage/demos/core/InputDemo.d.ts +6 -0
  45. package/fe/packages/react/ui/components/testPage/demos/core/InputDemo.js +55 -0
  46. package/fe/packages/react/ui/components/testPage/demos/core/InputDemo2.js +4 -0
  47. package/fe/packages/react/ui/components/testPage/demos/core/InputNumberDemo.d.ts +6 -0
  48. package/fe/packages/react/ui/components/testPage/demos/core/InputNumberDemo.js +65 -0
  49. package/fe/packages/react/ui/components/testPage/demos/core/InputNumberDemo2.js +4 -0
  50. package/fe/packages/react/ui/components/testPage/demos/core/LabelDemo.d.ts +6 -0
  51. package/fe/packages/react/ui/components/testPage/demos/core/LabelDemo.js +33 -0
  52. package/fe/packages/react/ui/components/testPage/demos/core/LabelDemo2.js +4 -0
  53. package/fe/packages/react/ui/components/testPage/demos/core/LayoutDemo.d.ts +6 -0
  54. package/fe/packages/react/ui/components/testPage/demos/core/LayoutDemo.js +64 -0
  55. package/fe/packages/react/ui/components/testPage/demos/core/LayoutDemo2.js +4 -0
  56. package/fe/packages/react/ui/components/testPage/demos/core/LoadingDemo.d.ts +6 -0
  57. package/fe/packages/react/ui/components/testPage/demos/core/LoadingDemo.js +32 -0
  58. package/fe/packages/react/ui/components/testPage/demos/core/LoadingDemo2.js +4 -0
  59. package/fe/packages/react/ui/components/testPage/demos/core/MessageDemo.d.ts +6 -0
  60. package/fe/packages/react/ui/components/testPage/demos/core/MessageDemo.js +44 -0
  61. package/fe/packages/react/ui/components/testPage/demos/core/MessageDemo2.js +4 -0
  62. package/fe/packages/react/ui/components/testPage/demos/core/ModalDemo.d.ts +6 -0
  63. package/fe/packages/react/ui/components/testPage/demos/core/ModalDemo.js +61 -0
  64. package/fe/packages/react/ui/components/testPage/demos/core/ModalDemo2.js +4 -0
  65. package/fe/packages/react/ui/components/testPage/demos/core/NotificationDemo.d.ts +6 -0
  66. package/fe/packages/react/ui/components/testPage/demos/core/NotificationDemo.js +50 -0
  67. package/fe/packages/react/ui/components/testPage/demos/core/NotificationDemo2.js +4 -0
  68. package/fe/packages/react/ui/components/testPage/demos/core/PaginationDemo.d.ts +6 -0
  69. package/fe/packages/react/ui/components/testPage/demos/core/PaginationDemo.js +39 -0
  70. package/fe/packages/react/ui/components/testPage/demos/core/PaginationDemo2.js +4 -0
  71. package/fe/packages/react/ui/components/testPage/demos/core/PreviewImageDemo.d.ts +6 -0
  72. package/fe/packages/react/ui/components/testPage/demos/core/PreviewImageDemo.js +22 -0
  73. package/fe/packages/react/ui/components/testPage/demos/core/PreviewImageDemo2.js +4 -0
  74. package/fe/packages/react/ui/components/testPage/demos/core/RadioDemo.d.ts +6 -0
  75. package/fe/packages/react/ui/components/testPage/demos/core/RadioDemo.js +129 -0
  76. package/fe/packages/react/ui/components/testPage/demos/core/RadioDemo2.js +4 -0
  77. package/fe/packages/react/ui/components/testPage/demos/core/SchemaFormDemo.d.ts +6 -0
  78. package/fe/packages/react/ui/components/testPage/demos/core/SchemaFormDemo.js +52 -0
  79. package/fe/packages/react/ui/components/testPage/demos/core/SchemaFormDemo2.js +4 -0
  80. package/fe/packages/react/ui/components/testPage/demos/core/SearchDemo.d.ts +6 -0
  81. package/fe/packages/react/ui/components/testPage/demos/core/SearchDemo.js +52 -0
  82. package/fe/packages/react/ui/components/testPage/demos/core/SearchDemo2.js +4 -0
  83. package/fe/packages/react/ui/components/testPage/demos/core/SelectDemo.d.ts +6 -0
  84. package/fe/packages/react/ui/components/testPage/demos/core/SelectDemo.js +73 -0
  85. package/fe/packages/react/ui/components/testPage/demos/core/SelectDemo2.js +4 -0
  86. package/fe/packages/react/ui/components/testPage/demos/core/SkeletonDemo.d.ts +6 -0
  87. package/fe/packages/react/ui/components/testPage/demos/core/SkeletonDemo.js +46 -0
  88. package/fe/packages/react/ui/components/testPage/demos/core/SkeletonDemo2.js +4 -0
  89. package/fe/packages/react/ui/components/testPage/demos/core/SwitchDemo.d.ts +6 -0
  90. package/fe/packages/react/ui/components/testPage/demos/core/SwitchDemo.js +36 -0
  91. package/fe/packages/react/ui/components/testPage/demos/core/SwitchDemo2.js +4 -0
  92. package/fe/packages/react/ui/components/testPage/demos/core/TableDemo.d.ts +6 -0
  93. package/fe/packages/react/ui/components/testPage/demos/core/TableDemo.js +64 -0
  94. package/fe/packages/react/ui/components/testPage/demos/core/TableDemo2.js +4 -0
  95. package/fe/packages/react/ui/components/testPage/demos/core/TableSearchDemo.d.ts +6 -0
  96. package/fe/packages/react/ui/components/testPage/demos/core/TableSearchDemo.js +74 -0
  97. package/fe/packages/react/ui/components/testPage/demos/core/TableSearchDemo2.js +4 -0
  98. package/fe/packages/react/ui/components/testPage/demos/core/TabsDemo.d.ts +6 -0
  99. package/fe/packages/react/ui/components/testPage/demos/core/TabsDemo.js +56 -0
  100. package/fe/packages/react/ui/components/testPage/demos/core/TabsDemo2.js +4 -0
  101. package/fe/packages/react/ui/components/testPage/demos/core/TextareaDemo.d.ts +6 -0
  102. package/fe/packages/react/ui/components/testPage/demos/core/TextareaDemo.js +30 -0
  103. package/fe/packages/react/ui/components/testPage/demos/core/TextareaDemo2.js +4 -0
  104. package/fe/packages/react/ui/components/testPage/demos/core/ThemeSwitcher.d.ts +6 -0
  105. package/fe/packages/react/ui/components/testPage/demos/core/ThemeSwitcher.js +96 -0
  106. package/fe/packages/react/ui/components/testPage/demos/core/ThemeSwitcher2.js +4 -0
  107. package/fe/packages/react/ui/components/testPage/demos/core/TooltipDemo.d.ts +6 -0
  108. package/fe/packages/react/ui/components/testPage/demos/core/TooltipDemo.js +29 -0
  109. package/fe/packages/react/ui/components/testPage/demos/core/TooltipDemo2.js +4 -0
  110. package/fe/packages/react/ui/components/testPage/demos/core/TreeSelectDemo.d.ts +6 -0
  111. package/fe/packages/react/ui/components/testPage/demos/core/TreeSelectDemo.js +66 -0
  112. package/fe/packages/react/ui/components/testPage/demos/core/TreeSelectDemo2.js +4 -0
  113. package/fe/packages/react/ui/components/testPage/demos/date/DateBasicDemo.d.ts +6 -0
  114. package/fe/packages/react/ui/components/testPage/demos/date/DateBasicDemo.js +31 -0
  115. package/fe/packages/react/ui/components/testPage/demos/date/DateBasicDemo2.js +4 -0
  116. package/fe/packages/react/ui/components/testPage/demos/date/DateControlledDemo.d.ts +6 -0
  117. package/fe/packages/react/ui/components/testPage/demos/date/DateControlledDemo.js +67 -0
  118. package/fe/packages/react/ui/components/testPage/demos/date/DateControlledDemo2.js +4 -0
  119. package/fe/packages/react/ui/components/testPage/demos/date/DateDisabledDateDemo.d.ts +6 -0
  120. package/fe/packages/react/ui/components/testPage/demos/date/DateDisabledDateDemo.js +36 -0
  121. package/fe/packages/react/ui/components/testPage/demos/date/DateDisabledDateDemo2.js +4 -0
  122. package/fe/packages/react/ui/components/testPage/demos/date/DateDisabledDemo.d.ts +6 -0
  123. package/fe/packages/react/ui/components/testPage/demos/date/DateDisabledDemo.js +35 -0
  124. package/fe/packages/react/ui/components/testPage/demos/date/DateDisabledDemo2.js +4 -0
  125. package/fe/packages/react/ui/components/testPage/demos/date/DateFormatDemo.d.ts +6 -0
  126. package/fe/packages/react/ui/components/testPage/demos/date/DateFormatDemo.js +35 -0
  127. package/fe/packages/react/ui/components/testPage/demos/date/DateFormatDemo2.js +4 -0
  128. package/fe/packages/react/ui/components/testPage/demos/date/DateRangeDemo.d.ts +6 -0
  129. package/fe/packages/react/ui/components/testPage/demos/date/DateRangeDemo.js +76 -0
  130. package/fe/packages/react/ui/components/testPage/demos/date/DateRangeDemo2.js +4 -0
  131. package/fe/packages/react/ui/components/testPage/demos/date/DateTimeDemo.d.ts +7 -0
  132. package/fe/packages/react/ui/components/testPage/demos/date/DateTimeDemo.js +60 -0
  133. package/fe/packages/react/ui/components/testPage/demos/date/DateTimeDemo2.js +4 -0
  134. package/fe/packages/react/ui/components/testPage/demos/menu/MenuAccordionDemo.d.ts +7 -0
  135. package/fe/packages/react/ui/components/testPage/demos/menu/MenuAccordionDemo.js +78 -0
  136. package/fe/packages/react/ui/components/testPage/demos/menu/MenuAccordionDemo2.js +4 -0
  137. package/fe/packages/react/ui/components/testPage/demos/menu/MenuClickTriggerDemo.d.ts +7 -0
  138. package/fe/packages/react/ui/components/testPage/demos/menu/MenuClickTriggerDemo.js +79 -0
  139. package/fe/packages/react/ui/components/testPage/demos/menu/MenuClickTriggerDemo2.js +4 -0
  140. package/fe/packages/react/ui/components/testPage/demos/menu/MenuCollapsedDemo.d.ts +7 -0
  141. package/fe/packages/react/ui/components/testPage/demos/menu/MenuCollapsedDemo.js +82 -0
  142. package/fe/packages/react/ui/components/testPage/demos/menu/MenuCollapsedDemo2.js +4 -0
  143. package/fe/packages/react/ui/components/testPage/demos/menu/MenuCollapsedNoIconDemo.d.ts +7 -0
  144. package/fe/packages/react/ui/components/testPage/demos/menu/MenuCollapsedNoIconDemo.js +44 -0
  145. package/fe/packages/react/ui/components/testPage/demos/menu/MenuCollapsedNoIconDemo2.js +4 -0
  146. package/fe/packages/react/ui/components/testPage/demos/menu/MenuJsxDemo.d.ts +7 -0
  147. package/fe/packages/react/ui/components/testPage/demos/menu/MenuJsxDemo.js +64 -0
  148. package/fe/packages/react/ui/components/testPage/demos/menu/MenuJsxDemo2.js +4 -0
  149. package/fe/packages/react/ui/components/testPage/demos/menu/MenuLeftMultipleDemo.d.ts +7 -0
  150. package/fe/packages/react/ui/components/testPage/demos/menu/MenuLeftMultipleDemo.js +81 -0
  151. package/fe/packages/react/ui/components/testPage/demos/menu/MenuLeftMultipleDemo2.js +4 -0
  152. package/fe/packages/react/ui/components/testPage/demos/menu/MenuPopupDemo.d.ts +7 -0
  153. package/fe/packages/react/ui/components/testPage/demos/menu/MenuPopupDemo.js +56 -0
  154. package/fe/packages/react/ui/components/testPage/demos/menu/MenuPopupDemo2.js +4 -0
  155. package/fe/packages/react/ui/components/testPage/demos/menu/MenuStateDemo.d.ts +7 -0
  156. package/fe/packages/react/ui/components/testPage/demos/menu/MenuStateDemo.js +67 -0
  157. package/fe/packages/react/ui/components/testPage/demos/menu/MenuStateDemo2.js +4 -0
  158. package/fe/packages/react/ui/components/testPage/demos/menu/MenuTopDemo.d.ts +7 -0
  159. package/fe/packages/react/ui/components/testPage/demos/menu/MenuTopDemo.js +55 -0
  160. package/fe/packages/react/ui/components/testPage/demos/menu/MenuTopDemo2.js +4 -0
  161. package/fe/packages/react/ui/components/testPage/index.js +30 -1623
  162. package/fe/packages/react/ui/components/testPage/types.d.ts +17 -0
  163. package/fe/packages/react/ui/components/testPage/types.js +0 -0
  164. package/fe/packages/react/ui/i18n/I18nProvider.js +2 -1
  165. package/model/packages/react/ui/components/Date/LocaleContext.d.ts +1 -0
  166. package/model/packages/react/ui/components/Date/locales.d.ts +5 -0
  167. package/package.json +1 -1
@@ -0,0 +1,4 @@
1
+ //#region packages/react/ui/components/testPage/demos/menu/MenuAccordionDemo.tsx?raw
2
+ var MenuAccordionDemo_default = "import { useState } from 'react'\nimport { LayoutDashboard, Package, Settings } from 'lucide-react'\nimport { Menu, type MenuItemData } from '@tc/ui-react/components'\nimport type { DemoMeta } from '../../types'\n\n\nexport const demoMeta = {\n title: '2. 手风琴展开 (accordion)',\n description: '同一层级同时只能展开一个子菜单',\n order: 2,\n contentClassName: 'space-y-3',\n} satisfies DemoMeta\n\n// ─── 示例数据 ────────────────────────────────────────────────────────────────\n\nconst menuItems: MenuItemData[] = [\n {\n key: 'dashboard',\n label: 'Dashboard',\n icon: <LayoutDashboard className=\"h-4 w-4\" />,\n },\n {\n key: 'products',\n label: 'Products',\n icon: <Package className=\"h-4 w-4\" />,\n children: [\n { key: 'products-list', label: 'All Products' },\n { key: 'products-create', label: 'Create New' },\n {\n key: 'products-categories',\n label: 'Categories',\n children: [\n { key: 'cat-electronics', label: 'Electronics' },\n { key: 'cat-clothing', label: 'Clothing' },\n ],\n },\n ],\n },\n {\n key: 'settings',\n label: 'Settings',\n icon: <Settings className=\"h-4 w-4\" />,\n children: [\n { key: 'settings-profile', label: 'Profile' },\n { key: 'settings-billing', label: 'Billing', danger: true },\n ],\n },\n]\n\nexport default function MenuAccordionDemo() {\n const [accordionKey, setAccordionKey] = useState('dashboard')\n return (\n <>\n <div className=\"w-56 border rounded-lg overflow-hidden\">\n <Menu mode=\"left\" expandMode=\"accordion\" selectedKey={accordionKey} onSelect={setAccordionKey} items={menuItems} />\n </div>\n </>\n )\n}\n";
3
+ //#endregion
4
+ export { MenuAccordionDemo_default as default };
@@ -0,0 +1,7 @@
1
+ export declare const demoMeta: {
2
+ title: string;
3
+ description: string;
4
+ order: number;
5
+ contentClassName: string;
6
+ };
7
+ export default function MenuClickTriggerDemo(): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,79 @@
1
+ import { __exportAll } from "../../../../../../../_virtual/_rolldown/runtime.js";
2
+ import { Menu } from "../../../Menu/Menu.js";
3
+ import "../../../index.js";
4
+ import { useState } from "react";
5
+ import { Fragment as Fragment$1, jsx } from "react/jsx-runtime";
6
+ import { LayoutDashboard, Package, Settings } from "lucide-react";
7
+ //#region packages/react/ui/components/testPage/demos/menu/MenuClickTriggerDemo.tsx
8
+ var MenuClickTriggerDemo_exports = /* @__PURE__ */ __exportAll({
9
+ default: () => MenuClickTriggerDemo,
10
+ demoMeta: () => demoMeta
11
+ });
12
+ var demoMeta = {
13
+ title: "7. Click 触发",
14
+ description: "点击展开子菜单,而非 hover",
15
+ order: 7,
16
+ contentClassName: "space-y-3"
17
+ };
18
+ var menuItems = [
19
+ {
20
+ key: "dashboard",
21
+ label: "Dashboard",
22
+ icon: /* @__PURE__ */ jsx(LayoutDashboard, { className: "h-4 w-4" })
23
+ },
24
+ {
25
+ key: "products",
26
+ label: "Products",
27
+ icon: /* @__PURE__ */ jsx(Package, { className: "h-4 w-4" }),
28
+ children: [
29
+ {
30
+ key: "products-list",
31
+ label: "All Products"
32
+ },
33
+ {
34
+ key: "products-create",
35
+ label: "Create New"
36
+ },
37
+ {
38
+ key: "products-categories",
39
+ label: "Categories",
40
+ children: [{
41
+ key: "cat-electronics",
42
+ label: "Electronics"
43
+ }, {
44
+ key: "cat-clothing",
45
+ label: "Clothing"
46
+ }]
47
+ }
48
+ ]
49
+ },
50
+ {
51
+ key: "settings",
52
+ label: "Settings",
53
+ icon: /* @__PURE__ */ jsx(Settings, { className: "h-4 w-4" }),
54
+ children: [{
55
+ key: "settings-profile",
56
+ label: "Profile"
57
+ }, {
58
+ key: "settings-billing",
59
+ label: "Billing",
60
+ danger: true
61
+ }]
62
+ }
63
+ ];
64
+ function MenuClickTriggerDemo() {
65
+ const [selectedKey, setSelectedKey] = useState("dashboard");
66
+ return /* @__PURE__ */ jsx(Fragment$1, { children: /* @__PURE__ */ jsx("div", {
67
+ className: "w-56 border rounded-lg overflow-hidden",
68
+ children: /* @__PURE__ */ jsx(Menu, {
69
+ mode: "left",
70
+ expandTrigger: "click",
71
+ expandMode: "multiple",
72
+ selectedKey,
73
+ onSelect: setSelectedKey,
74
+ items: menuItems
75
+ })
76
+ }) });
77
+ }
78
+ //#endregion
79
+ export { MenuClickTriggerDemo_exports, MenuClickTriggerDemo as default, demoMeta };
@@ -0,0 +1,4 @@
1
+ //#region packages/react/ui/components/testPage/demos/menu/MenuClickTriggerDemo.tsx?raw
2
+ var MenuClickTriggerDemo_default = "import { useState } from 'react'\nimport { LayoutDashboard, Package, Settings } from 'lucide-react'\nimport { Menu, type MenuItemData } from '@tc/ui-react/components'\nimport type { DemoMeta } from '../../types'\n\n\nexport const demoMeta = {\n title: '7. Click 触发',\n description: '点击展开子菜单,而非 hover',\n order: 7,\n contentClassName: 'space-y-3',\n} satisfies DemoMeta\n\n// ─── 示例数据 ────────────────────────────────────────────────────────────────\n\nconst menuItems: MenuItemData[] = [\n {\n key: 'dashboard',\n label: 'Dashboard',\n icon: <LayoutDashboard className=\"h-4 w-4\" />,\n },\n {\n key: 'products',\n label: 'Products',\n icon: <Package className=\"h-4 w-4\" />,\n children: [\n { key: 'products-list', label: 'All Products' },\n { key: 'products-create', label: 'Create New' },\n {\n key: 'products-categories',\n label: 'Categories',\n children: [\n { key: 'cat-electronics', label: 'Electronics' },\n { key: 'cat-clothing', label: 'Clothing' },\n ],\n },\n ],\n },\n {\n key: 'settings',\n label: 'Settings',\n icon: <Settings className=\"h-4 w-4\" />,\n children: [\n { key: 'settings-profile', label: 'Profile' },\n { key: 'settings-billing', label: 'Billing', danger: true },\n ],\n },\n]\n\nexport default function MenuClickTriggerDemo() {\n const [selectedKey, setSelectedKey] = useState('dashboard')\n return (\n <>\n <div className=\"w-56 border rounded-lg overflow-hidden\">\n <Menu\n mode=\"left\"\n expandTrigger=\"click\"\n expandMode=\"multiple\"\n selectedKey={selectedKey}\n onSelect={setSelectedKey}\n items={menuItems}\n />\n </div>\n </>\n )\n}\n";
3
+ //#endregion
4
+ export { MenuClickTriggerDemo_default as default };
@@ -0,0 +1,7 @@
1
+ export declare const demoMeta: {
2
+ title: string;
3
+ description: string;
4
+ order: number;
5
+ contentClassName: string;
6
+ };
7
+ export default function MenuCollapsedDemo(): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,82 @@
1
+ import { __exportAll } from "../../../../../../../_virtual/_rolldown/runtime.js";
2
+ import { Menu } from "../../../Menu/Menu.js";
3
+ import "../../../index.js";
4
+ import { useState } from "react";
5
+ import { Fragment as Fragment$1, jsx } from "react/jsx-runtime";
6
+ import { BarChart3, Bell, FileText, HelpCircle, LayoutDashboard, ShoppingCart, Users } from "lucide-react";
7
+ //#region packages/react/ui/components/testPage/demos/menu/MenuCollapsedDemo.tsx
8
+ var MenuCollapsedDemo_exports = /* @__PURE__ */ __exportAll({
9
+ default: () => MenuCollapsedDemo,
10
+ demoMeta: () => demoMeta
11
+ });
12
+ var demoMeta = {
13
+ title: "3. 折叠模式 (collapsed)",
14
+ description: "收起后仅展示图标,hover 弹出子菜单",
15
+ order: 3,
16
+ contentClassName: "space-y-3"
17
+ };
18
+ var iconMenuItems = [
19
+ {
20
+ key: "dashboard",
21
+ label: "Dashboard",
22
+ icon: /* @__PURE__ */ jsx(LayoutDashboard, { className: "h-4 w-4" })
23
+ },
24
+ {
25
+ key: "users",
26
+ label: "Users",
27
+ icon: /* @__PURE__ */ jsx(Users, { className: "h-4 w-4" }),
28
+ children: [{
29
+ key: "users-list",
30
+ label: "All Users",
31
+ icon: /* @__PURE__ */ jsx(Users, { className: "h-4 w-4" })
32
+ }, {
33
+ key: "users-roles",
34
+ label: "Roles",
35
+ icon: /* @__PURE__ */ jsx(FileText, { className: "h-4 w-4" })
36
+ }]
37
+ },
38
+ {
39
+ key: "analytics",
40
+ label: "Analytics",
41
+ icon: /* @__PURE__ */ jsx(BarChart3, { className: "h-4 w-4" }),
42
+ children: [{
43
+ key: "analytics-overview",
44
+ label: "Overview"
45
+ }, {
46
+ key: "analytics-reports",
47
+ label: "Reports"
48
+ }]
49
+ },
50
+ {
51
+ key: "orders",
52
+ label: "Orders",
53
+ icon: /* @__PURE__ */ jsx(ShoppingCart, { className: "h-4 w-4" })
54
+ },
55
+ {
56
+ key: "notifications",
57
+ label: "Notifications",
58
+ icon: /* @__PURE__ */ jsx(Bell, { className: "h-4 w-4" })
59
+ },
60
+ {
61
+ key: "help",
62
+ label: "Help",
63
+ icon: /* @__PURE__ */ jsx(HelpCircle, { className: "h-4 w-4" })
64
+ }
65
+ ];
66
+ function MenuCollapsedDemo() {
67
+ const [collapsed, setCollapsed] = useState(false);
68
+ const [collapsedKey, setCollapsedKey] = useState("dashboard");
69
+ return /* @__PURE__ */ jsx(Fragment$1, { children: /* @__PURE__ */ jsx("div", {
70
+ className: "border rounded-lg overflow-hidden inline-flex",
71
+ children: /* @__PURE__ */ jsx(Menu, {
72
+ mode: "left",
73
+ selectedKey: collapsedKey,
74
+ onSelect: setCollapsedKey,
75
+ collapsed,
76
+ onCollapse: setCollapsed,
77
+ items: iconMenuItems
78
+ })
79
+ }) });
80
+ }
81
+ //#endregion
82
+ export { MenuCollapsedDemo_exports, MenuCollapsedDemo as default, demoMeta };
@@ -0,0 +1,4 @@
1
+ //#region packages/react/ui/components/testPage/demos/menu/MenuCollapsedDemo.tsx?raw
2
+ var MenuCollapsedDemo_default = "import { useState } from 'react'\nimport { LayoutDashboard, Users, FileText, BarChart3, ShoppingCart, Bell, HelpCircle } from 'lucide-react'\nimport { Menu, type MenuItemData } from '@tc/ui-react/components'\nimport type { DemoMeta } from '../../types'\n\n\nexport const demoMeta = {\n title: '3. 折叠模式 (collapsed)',\n description: '收起后仅展示图标,hover 弹出子菜单',\n order: 3,\n contentClassName: 'space-y-3',\n} satisfies DemoMeta\n\n// ─── 示例数据 ────────────────────────────────────────────────────────────────\n\nconst iconMenuItems: MenuItemData[] = [\n { key: 'dashboard', label: 'Dashboard', icon: <LayoutDashboard className=\"h-4 w-4\" /> },\n {\n key: 'users',\n label: 'Users',\n icon: <Users className=\"h-4 w-4\" />,\n children: [\n { key: 'users-list', label: 'All Users', icon: <Users className=\"h-4 w-4\" /> },\n { key: 'users-roles', label: 'Roles', icon: <FileText className=\"h-4 w-4\" /> },\n ],\n },\n {\n key: 'analytics',\n label: 'Analytics',\n icon: <BarChart3 className=\"h-4 w-4\" />,\n children: [\n { key: 'analytics-overview', label: 'Overview' },\n { key: 'analytics-reports', label: 'Reports' },\n ],\n },\n { key: 'orders', label: 'Orders', icon: <ShoppingCart className=\"h-4 w-4\" /> },\n { key: 'notifications', label: 'Notifications', icon: <Bell className=\"h-4 w-4\" /> },\n { key: 'help', label: 'Help', icon: <HelpCircle className=\"h-4 w-4\" /> },\n]\n\nexport default function MenuCollapsedDemo() {\n const [collapsed, setCollapsed] = useState(false)\n const [collapsedKey, setCollapsedKey] = useState('dashboard')\n return (\n <>\n <div className=\"border rounded-lg overflow-hidden inline-flex\">\n <Menu\n mode=\"left\"\n selectedKey={collapsedKey}\n onSelect={setCollapsedKey}\n collapsed={collapsed}\n onCollapse={setCollapsed}\n items={iconMenuItems}\n />\n </div>\n </>\n )\n}\n";
3
+ //#endregion
4
+ export { MenuCollapsedDemo_default as default };
@@ -0,0 +1,7 @@
1
+ export declare const demoMeta: {
2
+ title: string;
3
+ description: string;
4
+ order: number;
5
+ contentClassName: string;
6
+ };
7
+ export default function MenuCollapsedNoIconDemo(): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,44 @@
1
+ import { __exportAll } from "../../../../../../../_virtual/_rolldown/runtime.js";
2
+ import { Menu } from "../../../Menu/Menu.js";
3
+ import "../../../index.js";
4
+ import { Fragment, jsx } from "react/jsx-runtime";
5
+ import { LayoutDashboard, Settings } from "lucide-react";
6
+ //#region packages/react/ui/components/testPage/demos/menu/MenuCollapsedNoIconDemo.tsx
7
+ var MenuCollapsedNoIconDemo_exports = /* @__PURE__ */ __exportAll({
8
+ default: () => MenuCollapsedNoIconDemo,
9
+ demoMeta: () => demoMeta
10
+ });
11
+ var demoMeta = {
12
+ title: "9. 无 icon 折叠",
13
+ description: "收起时无 icon 的菜单项留白占位",
14
+ order: 9,
15
+ contentClassName: "space-y-3"
16
+ };
17
+ function MenuCollapsedNoIconDemo() {
18
+ return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx("div", {
19
+ className: "border rounded-lg overflow-hidden inline-flex",
20
+ children: /* @__PURE__ */ jsx(Menu, {
21
+ mode: "left",
22
+ defaultCollapsed: true,
23
+ expandMode: "multiple",
24
+ items: [
25
+ {
26
+ key: "a",
27
+ label: "Home",
28
+ icon: /* @__PURE__ */ jsx(LayoutDashboard, { className: "h-4 w-4" })
29
+ },
30
+ {
31
+ key: "b",
32
+ label: "Reports"
33
+ },
34
+ {
35
+ key: "c",
36
+ label: "Settings",
37
+ icon: /* @__PURE__ */ jsx(Settings, { className: "h-4 w-4" })
38
+ }
39
+ ]
40
+ })
41
+ }) });
42
+ }
43
+ //#endregion
44
+ export { MenuCollapsedNoIconDemo_exports, MenuCollapsedNoIconDemo as default, demoMeta };
@@ -0,0 +1,4 @@
1
+ //#region packages/react/ui/components/testPage/demos/menu/MenuCollapsedNoIconDemo.tsx?raw
2
+ var MenuCollapsedNoIconDemo_default = "import { LayoutDashboard, Settings } from 'lucide-react'\nimport { Menu } from '@tc/ui-react/components'\nimport type { DemoMeta } from '../../types'\n\n\nexport const demoMeta = {\n title: '9. 无 icon 折叠',\n description: '收起时无 icon 的菜单项留白占位',\n order: 9,\n contentClassName: 'space-y-3',\n} satisfies DemoMeta\n\n// ─── 示例数据 ────────────────────────────────────────────────────────────────\n\nexport default function MenuCollapsedNoIconDemo() {\n return (\n <>\n <div className=\"border rounded-lg overflow-hidden inline-flex\">\n <Menu\n mode=\"left\"\n defaultCollapsed={true}\n expandMode=\"multiple\"\n items={[\n { key: 'a', label: 'Home', icon: <LayoutDashboard className=\"h-4 w-4\" /> },\n { key: 'b', label: 'Reports' },\n { key: 'c', label: 'Settings', icon: <Settings className=\"h-4 w-4\" /> },\n ]}\n />\n </div>\n </>\n )\n}\n";
3
+ //#endregion
4
+ export { MenuCollapsedNoIconDemo_default as default };
@@ -0,0 +1,7 @@
1
+ export declare const demoMeta: {
2
+ title: string;
3
+ description: string;
4
+ order: number;
5
+ contentClassName: string;
6
+ };
7
+ export default function MenuJsxDemo(): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,64 @@
1
+ import { __exportAll } from "../../../../../../../_virtual/_rolldown/runtime.js";
2
+ import { Menu } from "../../../Menu/Menu.js";
3
+ import "../../../index.js";
4
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
5
+ import { HelpCircle, LayoutDashboard, Package, Settings } from "lucide-react";
6
+ //#region packages/react/ui/components/testPage/demos/menu/MenuJsxDemo.tsx
7
+ var MenuJsxDemo_exports = /* @__PURE__ */ __exportAll({
8
+ default: () => MenuJsxDemo,
9
+ demoMeta: () => demoMeta
10
+ });
11
+ var demoMeta = {
12
+ title: "4. JSX 组合式",
13
+ description: "不使用 data config,直接组合 Menu.Item / Menu.SubMenu",
14
+ order: 4,
15
+ contentClassName: "space-y-3"
16
+ };
17
+ function MenuJsxDemo() {
18
+ return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx("div", {
19
+ className: "w-56 border rounded-lg overflow-hidden",
20
+ children: /* @__PURE__ */ jsxs(Menu, {
21
+ mode: "left",
22
+ defaultSelectedKey: "overview",
23
+ children: [
24
+ /* @__PURE__ */ jsx(Menu.Item, {
25
+ eventKey: "overview",
26
+ icon: /* @__PURE__ */ jsx(LayoutDashboard, { className: "h-4 w-4" }),
27
+ children: "Overview"
28
+ }),
29
+ /* @__PURE__ */ jsxs(Menu.SubMenu, {
30
+ eventKey: "manage",
31
+ label: "Manage",
32
+ icon: /* @__PURE__ */ jsx(Package, { className: "h-4 w-4" }),
33
+ children: [/* @__PURE__ */ jsx(Menu.Item, {
34
+ eventKey: "manage-list",
35
+ children: "List"
36
+ }), /* @__PURE__ */ jsx(Menu.Item, {
37
+ eventKey: "manage-edit",
38
+ children: "Edit"
39
+ })]
40
+ }),
41
+ /* @__PURE__ */ jsxs(Menu.SubMenu, {
42
+ eventKey: "settings",
43
+ label: "Settings",
44
+ icon: /* @__PURE__ */ jsx(Settings, { className: "h-4 w-4" }),
45
+ children: [/* @__PURE__ */ jsx(Menu.Item, {
46
+ eventKey: "jsx-profile",
47
+ children: "Profile"
48
+ }), /* @__PURE__ */ jsx(Menu.Item, {
49
+ eventKey: "jsx-billing",
50
+ danger: true,
51
+ children: "Billing"
52
+ })]
53
+ }),
54
+ /* @__PURE__ */ jsx(Menu.Item, {
55
+ eventKey: "help",
56
+ icon: /* @__PURE__ */ jsx(HelpCircle, { className: "h-4 w-4" }),
57
+ children: "Help"
58
+ })
59
+ ]
60
+ })
61
+ }) });
62
+ }
63
+ //#endregion
64
+ export { MenuJsxDemo_exports, MenuJsxDemo as default, demoMeta };
@@ -0,0 +1,4 @@
1
+ //#region packages/react/ui/components/testPage/demos/menu/MenuJsxDemo.tsx?raw
2
+ var MenuJsxDemo_default = "import { LayoutDashboard, Package, Settings, HelpCircle } from 'lucide-react'\nimport { Menu } from '@tc/ui-react/components'\nimport type { DemoMeta } from '../../types'\n\n\nexport const demoMeta = {\n title: '4. JSX 组合式',\n description: '不使用 data config,直接组合 Menu.Item / Menu.SubMenu',\n order: 4,\n contentClassName: 'space-y-3',\n} satisfies DemoMeta\n\n// ─── 示例数据 ────────────────────────────────────────────────────────────────\n\nexport default function MenuJsxDemo() {\n return (\n <>\n <div className=\"w-56 border rounded-lg overflow-hidden\">\n <Menu mode=\"left\" defaultSelectedKey=\"overview\">\n <Menu.Item eventKey=\"overview\" icon={<LayoutDashboard className=\"h-4 w-4\" />}>\n Overview\n </Menu.Item>\n <Menu.SubMenu eventKey=\"manage\" label=\"Manage\" icon={<Package className=\"h-4 w-4\" />}>\n <Menu.Item eventKey=\"manage-list\">List</Menu.Item>\n <Menu.Item eventKey=\"manage-edit\">Edit</Menu.Item>\n </Menu.SubMenu>\n <Menu.SubMenu eventKey=\"settings\" label=\"Settings\" icon={<Settings className=\"h-4 w-4\" />}>\n <Menu.Item eventKey=\"jsx-profile\">Profile</Menu.Item>\n <Menu.Item eventKey=\"jsx-billing\" danger>\n Billing\n </Menu.Item>\n </Menu.SubMenu>\n <Menu.Item eventKey=\"help\" icon={<HelpCircle className=\"h-4 w-4\" />}>\n Help\n </Menu.Item>\n </Menu>\n </div>\n </>\n )\n}\n";
3
+ //#endregion
4
+ export { MenuJsxDemo_default as default };
@@ -0,0 +1,7 @@
1
+ export declare const demoMeta: {
2
+ title: string;
3
+ description: string;
4
+ order: number;
5
+ contentClassName: string;
6
+ };
7
+ export default function MenuLeftMultipleDemo(): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,81 @@
1
+ import { __exportAll } from "../../../../../../../_virtual/_rolldown/runtime.js";
2
+ import { Menu } from "../../../Menu/Menu.js";
3
+ import "../../../index.js";
4
+ import { useState } from "react";
5
+ import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
6
+ import { LayoutDashboard, Package, Settings } from "lucide-react";
7
+ //#region packages/react/ui/components/testPage/demos/menu/MenuLeftMultipleDemo.tsx
8
+ var MenuLeftMultipleDemo_exports = /* @__PURE__ */ __exportAll({
9
+ default: () => MenuLeftMultipleDemo,
10
+ demoMeta: () => demoMeta
11
+ });
12
+ var demoMeta = {
13
+ title: "1. 基础 Left 模式 (data config)",
14
+ description: "最常用的侧边菜单,支持多级展开 (expandMode=multiple)",
15
+ order: 1,
16
+ contentClassName: "space-y-3"
17
+ };
18
+ var menuItems = [
19
+ {
20
+ key: "dashboard",
21
+ label: "Dashboard",
22
+ icon: /* @__PURE__ */ jsx(LayoutDashboard, { className: "h-4 w-4" })
23
+ },
24
+ {
25
+ key: "products",
26
+ label: "Products",
27
+ icon: /* @__PURE__ */ jsx(Package, { className: "h-4 w-4" }),
28
+ children: [
29
+ {
30
+ key: "products-list",
31
+ label: "All Products"
32
+ },
33
+ {
34
+ key: "products-create",
35
+ label: "Create New"
36
+ },
37
+ {
38
+ key: "products-categories",
39
+ label: "Categories",
40
+ children: [{
41
+ key: "cat-electronics",
42
+ label: "Electronics"
43
+ }, {
44
+ key: "cat-clothing",
45
+ label: "Clothing"
46
+ }]
47
+ }
48
+ ]
49
+ },
50
+ {
51
+ key: "settings",
52
+ label: "Settings",
53
+ icon: /* @__PURE__ */ jsx(Settings, { className: "h-4 w-4" }),
54
+ children: [{
55
+ key: "settings-profile",
56
+ label: "Profile"
57
+ }, {
58
+ key: "settings-billing",
59
+ label: "Billing",
60
+ danger: true
61
+ }]
62
+ }
63
+ ];
64
+ function MenuLeftMultipleDemo() {
65
+ const [selectedKey, setSelectedKey] = useState("dashboard");
66
+ return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("div", {
67
+ className: "w-56 border rounded-lg overflow-hidden",
68
+ children: /* @__PURE__ */ jsx(Menu, {
69
+ mode: "left",
70
+ expandMode: "multiple",
71
+ selectedKey,
72
+ onSelect: setSelectedKey,
73
+ items: menuItems
74
+ })
75
+ }), /* @__PURE__ */ jsxs("p", {
76
+ className: "text-sm text-muted-foreground",
77
+ children: ["当前选中: ", selectedKey]
78
+ })] });
79
+ }
80
+ //#endregion
81
+ export { MenuLeftMultipleDemo_exports, MenuLeftMultipleDemo as default, demoMeta };
@@ -0,0 +1,4 @@
1
+ //#region packages/react/ui/components/testPage/demos/menu/MenuLeftMultipleDemo.tsx?raw
2
+ var MenuLeftMultipleDemo_default = "import { useState } from 'react'\nimport { LayoutDashboard, Package, Settings } from 'lucide-react'\nimport { Menu, type MenuItemData } from '@tc/ui-react/components'\nimport type { DemoMeta } from '../../types'\n\n\nexport const demoMeta = {\n title: '1. 基础 Left 模式 (data config)',\n description: '最常用的侧边菜单,支持多级展开 (expandMode=multiple)',\n order: 1,\n contentClassName: 'space-y-3',\n} satisfies DemoMeta\n\n// ─── 示例数据 ────────────────────────────────────────────────────────────────\n\nconst menuItems: MenuItemData[] = [\n {\n key: 'dashboard',\n label: 'Dashboard',\n icon: <LayoutDashboard className=\"h-4 w-4\" />,\n },\n {\n key: 'products',\n label: 'Products',\n icon: <Package className=\"h-4 w-4\" />,\n children: [\n { key: 'products-list', label: 'All Products' },\n { key: 'products-create', label: 'Create New' },\n {\n key: 'products-categories',\n label: 'Categories',\n children: [\n { key: 'cat-electronics', label: 'Electronics' },\n { key: 'cat-clothing', label: 'Clothing' },\n ],\n },\n ],\n },\n {\n key: 'settings',\n label: 'Settings',\n icon: <Settings className=\"h-4 w-4\" />,\n children: [\n { key: 'settings-profile', label: 'Profile' },\n { key: 'settings-billing', label: 'Billing', danger: true },\n ],\n },\n]\n\nexport default function MenuLeftMultipleDemo() {\n const [selectedKey, setSelectedKey] = useState('dashboard')\n return (\n <>\n <div className=\"w-56 border rounded-lg overflow-hidden\">\n <Menu mode=\"left\" expandMode=\"multiple\" selectedKey={selectedKey} onSelect={setSelectedKey} items={menuItems} />\n </div>\n <p className=\"text-sm text-muted-foreground\">当前选中: {selectedKey}</p>\n </>\n )\n}\n";
3
+ //#endregion
4
+ export { MenuLeftMultipleDemo_default as default };
@@ -0,0 +1,7 @@
1
+ export declare const demoMeta: {
2
+ title: string;
3
+ description: string;
4
+ order: number;
5
+ contentClassName: string;
6
+ };
7
+ export default function MenuPopupDemo(): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,56 @@
1
+ import { __exportAll } from "../../../../../../../_virtual/_rolldown/runtime.js";
2
+ import { Menu } from "../../../Menu/Menu.js";
3
+ import "../../../index.js";
4
+ import { useState } from "react";
5
+ import { Fragment as Fragment$1, jsx } from "react/jsx-runtime";
6
+ import { HelpCircle, LayoutDashboard, Package } from "lucide-react";
7
+ //#region packages/react/ui/components/testPage/demos/menu/MenuPopupDemo.tsx
8
+ var MenuPopupDemo_exports = /* @__PURE__ */ __exportAll({
9
+ default: () => MenuPopupDemo,
10
+ demoMeta: () => demoMeta
11
+ });
12
+ var demoMeta = {
13
+ title: "5. 子菜单弹出模式 (popup)",
14
+ description: "展开状态下也能让子菜单以弹出方式展示",
15
+ order: 5,
16
+ contentClassName: "space-y-3"
17
+ };
18
+ function MenuPopupDemo() {
19
+ const [selectedKey, setSelectedKey] = useState("dashboard");
20
+ return /* @__PURE__ */ jsx(Fragment$1, { children: /* @__PURE__ */ jsx("div", {
21
+ className: "w-56 border rounded-lg overflow-hidden",
22
+ children: /* @__PURE__ */ jsx(Menu, {
23
+ mode: "left",
24
+ expandMode: "multiple",
25
+ selectedKey,
26
+ onSelect: setSelectedKey,
27
+ items: [
28
+ {
29
+ key: "d1",
30
+ label: "Dashboard",
31
+ icon: /* @__PURE__ */ jsx(LayoutDashboard, { className: "h-4 w-4" })
32
+ },
33
+ {
34
+ key: "p1",
35
+ label: "Products",
36
+ icon: /* @__PURE__ */ jsx(Package, { className: "h-4 w-4" }),
37
+ popup: true,
38
+ children: [{
39
+ key: "p1-list",
40
+ label: "All Products"
41
+ }, {
42
+ key: "p1-create",
43
+ label: "Create New"
44
+ }]
45
+ },
46
+ {
47
+ key: "d3",
48
+ label: "Help",
49
+ icon: /* @__PURE__ */ jsx(HelpCircle, { className: "h-4 w-4" })
50
+ }
51
+ ]
52
+ })
53
+ }) });
54
+ }
55
+ //#endregion
56
+ export { MenuPopupDemo_exports, MenuPopupDemo as default, demoMeta };
@@ -0,0 +1,4 @@
1
+ //#region packages/react/ui/components/testPage/demos/menu/MenuPopupDemo.tsx?raw
2
+ var MenuPopupDemo_default = "import { useState } from 'react'\nimport { LayoutDashboard, Package, HelpCircle } from 'lucide-react'\nimport { Menu } from '@tc/ui-react/components'\nimport type { DemoMeta } from '../../types'\n\n\nexport const demoMeta = {\n title: '5. 子菜单弹出模式 (popup)',\n description: '展开状态下也能让子菜单以弹出方式展示',\n order: 5,\n contentClassName: 'space-y-3',\n} satisfies DemoMeta\n\n// ─── 示例数据 ────────────────────────────────────────────────────────────────\n\nexport default function MenuPopupDemo() {\n const [selectedKey, setSelectedKey] = useState('dashboard')\n return (\n <>\n <div className=\"w-56 border rounded-lg overflow-hidden\">\n <Menu\n mode=\"left\"\n expandMode=\"multiple\"\n selectedKey={selectedKey}\n onSelect={setSelectedKey}\n items={[\n { key: 'd1', label: 'Dashboard', icon: <LayoutDashboard className=\"h-4 w-4\" /> },\n {\n key: 'p1',\n label: 'Products',\n icon: <Package className=\"h-4 w-4\" />,\n popup: true,\n children: [\n { key: 'p1-list', label: 'All Products' },\n { key: 'p1-create', label: 'Create New' },\n ],\n },\n { key: 'd3', label: 'Help', icon: <HelpCircle className=\"h-4 w-4\" /> },\n ]}\n />\n </div>\n </>\n )\n}\n";
3
+ //#endregion
4
+ export { MenuPopupDemo_default as default };
@@ -0,0 +1,7 @@
1
+ export declare const demoMeta: {
2
+ title: string;
3
+ description: string;
4
+ order: number;
5
+ contentClassName: string;
6
+ };
7
+ export default function MenuStateDemo(): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,67 @@
1
+ import { __exportAll } from "../../../../../../../_virtual/_rolldown/runtime.js";
2
+ import { Menu } from "../../../Menu/Menu.js";
3
+ import "../../../index.js";
4
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
5
+ import { FileText, Settings } from "lucide-react";
6
+ //#region packages/react/ui/components/testPage/demos/menu/MenuStateDemo.tsx
7
+ var MenuStateDemo_exports = /* @__PURE__ */ __exportAll({
8
+ default: () => MenuStateDemo,
9
+ demoMeta: () => demoMeta
10
+ });
11
+ var demoMeta = {
12
+ title: "8. 状态展示",
13
+ description: "disabled / danger 样式演示",
14
+ order: 8,
15
+ contentClassName: "space-y-3"
16
+ };
17
+ function MenuStateDemo() {
18
+ return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx("div", {
19
+ className: "w-56 border rounded-lg overflow-hidden",
20
+ children: /* @__PURE__ */ jsxs(Menu, {
21
+ mode: "left",
22
+ defaultSelectedKey: "normal",
23
+ children: [
24
+ /* @__PURE__ */ jsx(Menu.Item, {
25
+ eventKey: "normal",
26
+ icon: /* @__PURE__ */ jsx(FileText, { className: "h-4 w-4" }),
27
+ children: "正常菜单项"
28
+ }),
29
+ /* @__PURE__ */ jsx(Menu.Item, {
30
+ eventKey: "disabled-item",
31
+ disabled: true,
32
+ icon: /* @__PURE__ */ jsx(FileText, { className: "h-4 w-4" }),
33
+ children: "禁用菜单项"
34
+ }),
35
+ /* @__PURE__ */ jsx(Menu.Item, {
36
+ eventKey: "danger-item",
37
+ danger: true,
38
+ icon: /* @__PURE__ */ jsx(FileText, { className: "h-4 w-4" }),
39
+ children: "危险菜单项"
40
+ }),
41
+ /* @__PURE__ */ jsxs(Menu.SubMenu, {
42
+ eventKey: "sub-disabled",
43
+ label: "含禁用子项",
44
+ icon: /* @__PURE__ */ jsx(Settings, { className: "h-4 w-4" }),
45
+ children: [
46
+ /* @__PURE__ */ jsx(Menu.Item, {
47
+ eventKey: "sub-normal",
48
+ children: "正常子项"
49
+ }),
50
+ /* @__PURE__ */ jsx(Menu.Item, {
51
+ eventKey: "sub-danger",
52
+ danger: true,
53
+ children: "危险子项"
54
+ }),
55
+ /* @__PURE__ */ jsx(Menu.Item, {
56
+ eventKey: "sub-disabled-item",
57
+ disabled: true,
58
+ children: "禁用子项"
59
+ })
60
+ ]
61
+ })
62
+ ]
63
+ })
64
+ }) });
65
+ }
66
+ //#endregion
67
+ export { MenuStateDemo_exports, MenuStateDemo as default, demoMeta };
@@ -0,0 +1,4 @@
1
+ //#region packages/react/ui/components/testPage/demos/menu/MenuStateDemo.tsx?raw
2
+ var MenuStateDemo_default = "import { Settings, FileText } from 'lucide-react'\nimport { Menu } from '@tc/ui-react/components'\nimport type { DemoMeta } from '../../types'\n\n\nexport const demoMeta = {\n title: '8. 状态展示',\n description: 'disabled / danger 样式演示',\n order: 8,\n contentClassName: 'space-y-3',\n} satisfies DemoMeta\n\n// ─── 示例数据 ────────────────────────────────────────────────────────────────\n\nexport default function MenuStateDemo() {\n return (\n <>\n <div className=\"w-56 border rounded-lg overflow-hidden\">\n <Menu mode=\"left\" defaultSelectedKey=\"normal\">\n <Menu.Item eventKey=\"normal\" icon={<FileText className=\"h-4 w-4\" />}>\n 正常菜单项\n </Menu.Item>\n <Menu.Item eventKey=\"disabled-item\" disabled icon={<FileText className=\"h-4 w-4\" />}>\n 禁用菜单项\n </Menu.Item>\n <Menu.Item eventKey=\"danger-item\" danger icon={<FileText className=\"h-4 w-4\" />}>\n 危险菜单项\n </Menu.Item>\n <Menu.SubMenu eventKey=\"sub-disabled\" label=\"含禁用子项\" icon={<Settings className=\"h-4 w-4\" />}>\n <Menu.Item eventKey=\"sub-normal\">正常子项</Menu.Item>\n <Menu.Item eventKey=\"sub-danger\" danger>\n 危险子项\n </Menu.Item>\n <Menu.Item eventKey=\"sub-disabled-item\" disabled>\n 禁用子项\n </Menu.Item>\n </Menu.SubMenu>\n </Menu>\n </div>\n </>\n )\n}\n";
3
+ //#endregion
4
+ export { MenuStateDemo_default as default };
@@ -0,0 +1,7 @@
1
+ export declare const demoMeta: {
2
+ title: string;
3
+ description: string;
4
+ order: number;
5
+ contentClassName: string;
6
+ };
7
+ export default function MenuTopDemo(): import("react/jsx-runtime").JSX.Element;