@_tc/template-core 0.2.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 (175) hide show
  1. package/AGENT_README.md +3 -0
  2. package/README.md +43 -1
  3. package/cjs/app/controller/view.js +1 -1
  4. package/cjs/app/middleware.js +1 -1
  5. package/cjs/config/config.default.js +1 -1
  6. package/esm/app/controller/view.js +1 -1
  7. package/esm/app/middleware.js +1 -1
  8. package/esm/config/config.default.js +2 -1
  9. package/fe/_virtual/_rolldown/runtime.js +13 -0
  10. package/fe/packages/react/ui/components/Date/Calendar.js +1 -5
  11. package/fe/packages/react/ui/components/Date/DateTestPage.js +15 -331
  12. package/fe/packages/react/ui/components/Date/LocaleContext.d.ts +1 -0
  13. package/fe/packages/react/ui/components/Date/index.js +2 -2
  14. package/fe/packages/react/ui/components/Date/locales.d.ts +5 -0
  15. package/fe/packages/react/ui/components/Date/locales.js +16 -1
  16. package/fe/packages/react/ui/components/testPage/DemoSection.d.ts +10 -0
  17. package/fe/packages/react/ui/components/testPage/DemoSection.js +73 -0
  18. package/fe/packages/react/ui/components/testPage/MenuTestPage.js +16 -389
  19. package/fe/packages/react/ui/components/testPage/demoRegistry.d.ts +4 -0
  20. package/fe/packages/react/ui/components/testPage/demoRegistry.js +214 -0
  21. package/fe/packages/react/ui/components/testPage/demos/core/BreadcrumbDemo.d.ts +6 -0
  22. package/fe/packages/react/ui/components/testPage/demos/core/BreadcrumbDemo.js +44 -0
  23. package/fe/packages/react/ui/components/testPage/demos/core/BreadcrumbDemo2.js +4 -0
  24. package/fe/packages/react/ui/components/testPage/demos/core/ButtonDemo.d.ts +6 -0
  25. package/fe/packages/react/ui/components/testPage/demos/core/ButtonDemo.js +85 -0
  26. package/fe/packages/react/ui/components/testPage/demos/core/ButtonDemo2.js +4 -0
  27. package/fe/packages/react/ui/components/testPage/demos/core/CardDemo.d.ts +6 -0
  28. package/fe/packages/react/ui/components/testPage/demos/core/CardDemo.js +52 -0
  29. package/fe/packages/react/ui/components/testPage/demos/core/CardDemo2.js +4 -0
  30. package/fe/packages/react/ui/components/testPage/demos/core/CheckboxDemo.d.ts +6 -0
  31. package/fe/packages/react/ui/components/testPage/demos/core/CheckboxDemo.js +41 -0
  32. package/fe/packages/react/ui/components/testPage/demos/core/CheckboxDemo2.js +4 -0
  33. package/fe/packages/react/ui/components/testPage/demos/core/ConfirmDialogDemo.d.ts +6 -0
  34. package/fe/packages/react/ui/components/testPage/demos/core/ConfirmDialogDemo.js +35 -0
  35. package/fe/packages/react/ui/components/testPage/demos/core/ConfirmDialogDemo2.js +4 -0
  36. package/fe/packages/react/ui/components/testPage/demos/core/DataTableDemo.d.ts +6 -0
  37. package/fe/packages/react/ui/components/testPage/demos/core/DataTableDemo.js +243 -0
  38. package/fe/packages/react/ui/components/testPage/demos/core/DataTableDemo2.js +4 -0
  39. package/fe/packages/react/ui/components/testPage/demos/core/DrawerDemo.d.ts +6 -0
  40. package/fe/packages/react/ui/components/testPage/demos/core/DrawerDemo.js +105 -0
  41. package/fe/packages/react/ui/components/testPage/demos/core/DrawerDemo2.js +4 -0
  42. package/fe/packages/react/ui/components/testPage/demos/core/DropdownDemo.d.ts +6 -0
  43. package/fe/packages/react/ui/components/testPage/demos/core/DropdownDemo.js +48 -0
  44. package/fe/packages/react/ui/components/testPage/demos/core/DropdownDemo2.js +4 -0
  45. package/fe/packages/react/ui/components/testPage/demos/core/FormDemo.d.ts +6 -0
  46. package/fe/packages/react/ui/components/testPage/demos/core/FormDemo.js +56 -0
  47. package/fe/packages/react/ui/components/testPage/demos/core/FormDemo2.js +4 -0
  48. package/fe/packages/react/ui/components/testPage/demos/core/ImageUploadDemo.d.ts +6 -0
  49. package/fe/packages/react/ui/components/testPage/demos/core/ImageUploadDemo.js +26 -0
  50. package/fe/packages/react/ui/components/testPage/demos/core/ImageUploadDemo2.js +4 -0
  51. package/fe/packages/react/ui/components/testPage/demos/core/InputDemo.d.ts +6 -0
  52. package/fe/packages/react/ui/components/testPage/demos/core/InputDemo.js +55 -0
  53. package/fe/packages/react/ui/components/testPage/demos/core/InputDemo2.js +4 -0
  54. package/fe/packages/react/ui/components/testPage/demos/core/InputNumberDemo.d.ts +6 -0
  55. package/fe/packages/react/ui/components/testPage/demos/core/InputNumberDemo.js +65 -0
  56. package/fe/packages/react/ui/components/testPage/demos/core/InputNumberDemo2.js +4 -0
  57. package/fe/packages/react/ui/components/testPage/demos/core/LabelDemo.d.ts +6 -0
  58. package/fe/packages/react/ui/components/testPage/demos/core/LabelDemo.js +33 -0
  59. package/fe/packages/react/ui/components/testPage/demos/core/LabelDemo2.js +4 -0
  60. package/fe/packages/react/ui/components/testPage/demos/core/LayoutDemo.d.ts +6 -0
  61. package/fe/packages/react/ui/components/testPage/demos/core/LayoutDemo.js +64 -0
  62. package/fe/packages/react/ui/components/testPage/demos/core/LayoutDemo2.js +4 -0
  63. package/fe/packages/react/ui/components/testPage/demos/core/LoadingDemo.d.ts +6 -0
  64. package/fe/packages/react/ui/components/testPage/demos/core/LoadingDemo.js +32 -0
  65. package/fe/packages/react/ui/components/testPage/demos/core/LoadingDemo2.js +4 -0
  66. package/fe/packages/react/ui/components/testPage/demos/core/MessageDemo.d.ts +6 -0
  67. package/fe/packages/react/ui/components/testPage/demos/core/MessageDemo.js +44 -0
  68. package/fe/packages/react/ui/components/testPage/demos/core/MessageDemo2.js +4 -0
  69. package/fe/packages/react/ui/components/testPage/demos/core/ModalDemo.d.ts +6 -0
  70. package/fe/packages/react/ui/components/testPage/demos/core/ModalDemo.js +61 -0
  71. package/fe/packages/react/ui/components/testPage/demos/core/ModalDemo2.js +4 -0
  72. package/fe/packages/react/ui/components/testPage/demos/core/NotificationDemo.d.ts +6 -0
  73. package/fe/packages/react/ui/components/testPage/demos/core/NotificationDemo.js +50 -0
  74. package/fe/packages/react/ui/components/testPage/demos/core/NotificationDemo2.js +4 -0
  75. package/fe/packages/react/ui/components/testPage/demos/core/PaginationDemo.d.ts +6 -0
  76. package/fe/packages/react/ui/components/testPage/demos/core/PaginationDemo.js +39 -0
  77. package/fe/packages/react/ui/components/testPage/demos/core/PaginationDemo2.js +4 -0
  78. package/fe/packages/react/ui/components/testPage/demos/core/PreviewImageDemo.d.ts +6 -0
  79. package/fe/packages/react/ui/components/testPage/demos/core/PreviewImageDemo.js +22 -0
  80. package/fe/packages/react/ui/components/testPage/demos/core/PreviewImageDemo2.js +4 -0
  81. package/fe/packages/react/ui/components/testPage/demos/core/RadioDemo.d.ts +6 -0
  82. package/fe/packages/react/ui/components/testPage/demos/core/RadioDemo.js +129 -0
  83. package/fe/packages/react/ui/components/testPage/demos/core/RadioDemo2.js +4 -0
  84. package/fe/packages/react/ui/components/testPage/demos/core/SchemaFormDemo.d.ts +6 -0
  85. package/fe/packages/react/ui/components/testPage/demos/core/SchemaFormDemo.js +52 -0
  86. package/fe/packages/react/ui/components/testPage/demos/core/SchemaFormDemo2.js +4 -0
  87. package/fe/packages/react/ui/components/testPage/demos/core/SearchDemo.d.ts +6 -0
  88. package/fe/packages/react/ui/components/testPage/demos/core/SearchDemo.js +52 -0
  89. package/fe/packages/react/ui/components/testPage/demos/core/SearchDemo2.js +4 -0
  90. package/fe/packages/react/ui/components/testPage/demos/core/SelectDemo.d.ts +6 -0
  91. package/fe/packages/react/ui/components/testPage/demos/core/SelectDemo.js +73 -0
  92. package/fe/packages/react/ui/components/testPage/demos/core/SelectDemo2.js +4 -0
  93. package/fe/packages/react/ui/components/testPage/demos/core/SkeletonDemo.d.ts +6 -0
  94. package/fe/packages/react/ui/components/testPage/demos/core/SkeletonDemo.js +46 -0
  95. package/fe/packages/react/ui/components/testPage/demos/core/SkeletonDemo2.js +4 -0
  96. package/fe/packages/react/ui/components/testPage/demos/core/SwitchDemo.d.ts +6 -0
  97. package/fe/packages/react/ui/components/testPage/demos/core/SwitchDemo.js +36 -0
  98. package/fe/packages/react/ui/components/testPage/demos/core/SwitchDemo2.js +4 -0
  99. package/fe/packages/react/ui/components/testPage/demos/core/TableDemo.d.ts +6 -0
  100. package/fe/packages/react/ui/components/testPage/demos/core/TableDemo.js +64 -0
  101. package/fe/packages/react/ui/components/testPage/demos/core/TableDemo2.js +4 -0
  102. package/fe/packages/react/ui/components/testPage/demos/core/TableSearchDemo.d.ts +6 -0
  103. package/fe/packages/react/ui/components/testPage/demos/core/TableSearchDemo.js +74 -0
  104. package/fe/packages/react/ui/components/testPage/demos/core/TableSearchDemo2.js +4 -0
  105. package/fe/packages/react/ui/components/testPage/demos/core/TabsDemo.d.ts +6 -0
  106. package/fe/packages/react/ui/components/testPage/demos/core/TabsDemo.js +56 -0
  107. package/fe/packages/react/ui/components/testPage/demos/core/TabsDemo2.js +4 -0
  108. package/fe/packages/react/ui/components/testPage/demos/core/TextareaDemo.d.ts +6 -0
  109. package/fe/packages/react/ui/components/testPage/demos/core/TextareaDemo.js +30 -0
  110. package/fe/packages/react/ui/components/testPage/demos/core/TextareaDemo2.js +4 -0
  111. package/fe/packages/react/ui/components/testPage/demos/core/ThemeSwitcher.d.ts +6 -0
  112. package/fe/packages/react/ui/components/testPage/demos/core/ThemeSwitcher.js +96 -0
  113. package/fe/packages/react/ui/components/testPage/demos/core/ThemeSwitcher2.js +4 -0
  114. package/fe/packages/react/ui/components/testPage/demos/core/TooltipDemo.d.ts +6 -0
  115. package/fe/packages/react/ui/components/testPage/demos/core/TooltipDemo.js +29 -0
  116. package/fe/packages/react/ui/components/testPage/demos/core/TooltipDemo2.js +4 -0
  117. package/fe/packages/react/ui/components/testPage/demos/core/TreeSelectDemo.d.ts +6 -0
  118. package/fe/packages/react/ui/components/testPage/demos/core/TreeSelectDemo.js +66 -0
  119. package/fe/packages/react/ui/components/testPage/demos/core/TreeSelectDemo2.js +4 -0
  120. package/fe/packages/react/ui/components/testPage/demos/date/DateBasicDemo.d.ts +6 -0
  121. package/fe/packages/react/ui/components/testPage/demos/date/DateBasicDemo.js +31 -0
  122. package/fe/packages/react/ui/components/testPage/demos/date/DateBasicDemo2.js +4 -0
  123. package/fe/packages/react/ui/components/testPage/demos/date/DateControlledDemo.d.ts +6 -0
  124. package/fe/packages/react/ui/components/testPage/demos/date/DateControlledDemo.js +67 -0
  125. package/fe/packages/react/ui/components/testPage/demos/date/DateControlledDemo2.js +4 -0
  126. package/fe/packages/react/ui/components/testPage/demos/date/DateDisabledDateDemo.d.ts +6 -0
  127. package/fe/packages/react/ui/components/testPage/demos/date/DateDisabledDateDemo.js +36 -0
  128. package/fe/packages/react/ui/components/testPage/demos/date/DateDisabledDateDemo2.js +4 -0
  129. package/fe/packages/react/ui/components/testPage/demos/date/DateDisabledDemo.d.ts +6 -0
  130. package/fe/packages/react/ui/components/testPage/demos/date/DateDisabledDemo.js +35 -0
  131. package/fe/packages/react/ui/components/testPage/demos/date/DateDisabledDemo2.js +4 -0
  132. package/fe/packages/react/ui/components/testPage/demos/date/DateFormatDemo.d.ts +6 -0
  133. package/fe/packages/react/ui/components/testPage/demos/date/DateFormatDemo.js +35 -0
  134. package/fe/packages/react/ui/components/testPage/demos/date/DateFormatDemo2.js +4 -0
  135. package/fe/packages/react/ui/components/testPage/demos/date/DateRangeDemo.d.ts +6 -0
  136. package/fe/packages/react/ui/components/testPage/demos/date/DateRangeDemo.js +76 -0
  137. package/fe/packages/react/ui/components/testPage/demos/date/DateRangeDemo2.js +4 -0
  138. package/fe/packages/react/ui/components/testPage/demos/date/DateTimeDemo.d.ts +7 -0
  139. package/fe/packages/react/ui/components/testPage/demos/date/DateTimeDemo.js +60 -0
  140. package/fe/packages/react/ui/components/testPage/demos/date/DateTimeDemo2.js +4 -0
  141. package/fe/packages/react/ui/components/testPage/demos/menu/MenuAccordionDemo.d.ts +7 -0
  142. package/fe/packages/react/ui/components/testPage/demos/menu/MenuAccordionDemo.js +78 -0
  143. package/fe/packages/react/ui/components/testPage/demos/menu/MenuAccordionDemo2.js +4 -0
  144. package/fe/packages/react/ui/components/testPage/demos/menu/MenuClickTriggerDemo.d.ts +7 -0
  145. package/fe/packages/react/ui/components/testPage/demos/menu/MenuClickTriggerDemo.js +79 -0
  146. package/fe/packages/react/ui/components/testPage/demos/menu/MenuClickTriggerDemo2.js +4 -0
  147. package/fe/packages/react/ui/components/testPage/demos/menu/MenuCollapsedDemo.d.ts +7 -0
  148. package/fe/packages/react/ui/components/testPage/demos/menu/MenuCollapsedDemo.js +82 -0
  149. package/fe/packages/react/ui/components/testPage/demos/menu/MenuCollapsedDemo2.js +4 -0
  150. package/fe/packages/react/ui/components/testPage/demos/menu/MenuCollapsedNoIconDemo.d.ts +7 -0
  151. package/fe/packages/react/ui/components/testPage/demos/menu/MenuCollapsedNoIconDemo.js +44 -0
  152. package/fe/packages/react/ui/components/testPage/demos/menu/MenuCollapsedNoIconDemo2.js +4 -0
  153. package/fe/packages/react/ui/components/testPage/demos/menu/MenuJsxDemo.d.ts +7 -0
  154. package/fe/packages/react/ui/components/testPage/demos/menu/MenuJsxDemo.js +64 -0
  155. package/fe/packages/react/ui/components/testPage/demos/menu/MenuJsxDemo2.js +4 -0
  156. package/fe/packages/react/ui/components/testPage/demos/menu/MenuLeftMultipleDemo.d.ts +7 -0
  157. package/fe/packages/react/ui/components/testPage/demos/menu/MenuLeftMultipleDemo.js +81 -0
  158. package/fe/packages/react/ui/components/testPage/demos/menu/MenuLeftMultipleDemo2.js +4 -0
  159. package/fe/packages/react/ui/components/testPage/demos/menu/MenuPopupDemo.d.ts +7 -0
  160. package/fe/packages/react/ui/components/testPage/demos/menu/MenuPopupDemo.js +56 -0
  161. package/fe/packages/react/ui/components/testPage/demos/menu/MenuPopupDemo2.js +4 -0
  162. package/fe/packages/react/ui/components/testPage/demos/menu/MenuStateDemo.d.ts +7 -0
  163. package/fe/packages/react/ui/components/testPage/demos/menu/MenuStateDemo.js +67 -0
  164. package/fe/packages/react/ui/components/testPage/demos/menu/MenuStateDemo2.js +4 -0
  165. package/fe/packages/react/ui/components/testPage/demos/menu/MenuTopDemo.d.ts +7 -0
  166. package/fe/packages/react/ui/components/testPage/demos/menu/MenuTopDemo.js +55 -0
  167. package/fe/packages/react/ui/components/testPage/demos/menu/MenuTopDemo2.js +4 -0
  168. package/fe/packages/react/ui/components/testPage/index.js +30 -1623
  169. package/fe/packages/react/ui/components/testPage/types.d.ts +17 -0
  170. package/fe/packages/react/ui/components/testPage/types.js +0 -0
  171. package/fe/packages/react/ui/i18n/I18nProvider.js +2 -1
  172. package/model/packages/react/ui/components/Date/LocaleContext.d.ts +1 -0
  173. package/model/packages/react/ui/components/Date/locales.d.ts +5 -0
  174. package/package.json +1 -1
  175. package/types/config/config.default.d.ts +6 -0
@@ -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;
@@ -0,0 +1,55 @@
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
+ //#region packages/react/ui/components/testPage/demos/menu/MenuTopDemo.tsx
7
+ var MenuTopDemo_exports = /* @__PURE__ */ __exportAll({
8
+ default: () => MenuTopDemo,
9
+ demoMeta: () => demoMeta
10
+ });
11
+ var demoMeta = {
12
+ title: "6. Top 模式",
13
+ description: "一级菜单水平排列,子菜单下拉弹出",
14
+ order: 6,
15
+ contentClassName: "space-y-3"
16
+ };
17
+ var topItems = [
18
+ {
19
+ key: "home",
20
+ label: "Home"
21
+ },
22
+ {
23
+ key: "services",
24
+ label: "Services",
25
+ children: [{
26
+ key: "consulting",
27
+ label: "Consulting"
28
+ }, {
29
+ key: "development",
30
+ label: "Development"
31
+ }]
32
+ },
33
+ {
34
+ key: "about",
35
+ label: "About"
36
+ }
37
+ ];
38
+ function MenuTopDemo() {
39
+ const [topKey, setTopKey] = useState("home");
40
+ return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("div", {
41
+ className: "border rounded-lg w-full",
42
+ children: /* @__PURE__ */ jsx(Menu, {
43
+ mode: "top",
44
+ selectedKey: topKey,
45
+ onSelect: setTopKey,
46
+ items: topItems,
47
+ className: "border-b"
48
+ })
49
+ }), /* @__PURE__ */ jsxs("p", {
50
+ className: "text-sm text-muted-foreground",
51
+ children: ["当前选中: ", topKey]
52
+ })] });
53
+ }
54
+ //#endregion
55
+ export { MenuTopDemo_exports, MenuTopDemo as default, demoMeta };
@@ -0,0 +1,4 @@
1
+ //#region packages/react/ui/components/testPage/demos/menu/MenuTopDemo.tsx?raw
2
+ var MenuTopDemo_default = "import { useState } from 'react'\nimport { Menu, type MenuItemData } from '@tc/ui-react/components'\nimport type { DemoMeta } from '../../types'\n\n\nexport const demoMeta = {\n title: '6. Top 模式',\n description: '一级菜单水平排列,子菜单下拉弹出',\n order: 6,\n contentClassName: 'space-y-3',\n} satisfies DemoMeta\n\n// ─── 示例数据 ────────────────────────────────────────────────────────────────\n\nconst topItems: MenuItemData[] = [\n { key: 'home', label: 'Home' },\n {\n key: 'services',\n label: 'Services',\n children: [\n { key: 'consulting', label: 'Consulting' },\n { key: 'development', label: 'Development' },\n ],\n },\n { key: 'about', label: 'About' },\n]\n\nexport default function MenuTopDemo() {\n const [topKey, setTopKey] = useState('home')\n return (\n <>\n <div className=\"border rounded-lg w-full\">\n <Menu mode=\"top\" selectedKey={topKey} onSelect={setTopKey} items={topItems} className=\"border-b\" />\n </div>\n <p className=\"text-sm text-muted-foreground\">当前选中: {topKey}</p>\n </>\n )\n}\n";
3
+ //#endregion
4
+ export { MenuTopDemo_default as default };