@_tc/template-core 0.2.1 → 0.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENT_README.md +3 -0
- package/README.md +43 -1
- package/cjs/app/controller/view.js +1 -1
- package/cjs/app/middleware.js +1 -1
- package/cjs/config/config.default.js +1 -1
- package/esm/app/controller/view.js +1 -1
- package/esm/app/middleware.js +1 -1
- package/esm/config/config.default.js +2 -1
- package/fe/_virtual/_rolldown/runtime.js +13 -0
- package/fe/packages/react/ui/components/Date/Calendar.js +1 -5
- package/fe/packages/react/ui/components/Date/DateTestPage.js +15 -331
- package/fe/packages/react/ui/components/Date/LocaleContext.d.ts +1 -0
- package/fe/packages/react/ui/components/Date/index.js +2 -2
- package/fe/packages/react/ui/components/Date/locales.d.ts +5 -0
- package/fe/packages/react/ui/components/Date/locales.js +16 -1
- package/fe/packages/react/ui/components/testPage/DemoSection.d.ts +10 -0
- package/fe/packages/react/ui/components/testPage/DemoSection.js +73 -0
- package/fe/packages/react/ui/components/testPage/MenuTestPage.js +16 -389
- package/fe/packages/react/ui/components/testPage/demoRegistry.d.ts +4 -0
- package/fe/packages/react/ui/components/testPage/demoRegistry.js +217 -0
- package/fe/packages/react/ui/components/testPage/demos/core/BreadcrumbDemo.d.ts +6 -0
- package/fe/packages/react/ui/components/testPage/demos/core/BreadcrumbDemo.js +44 -0
- package/fe/packages/react/ui/components/testPage/demos/core/BreadcrumbDemo2.js +4 -0
- package/fe/packages/react/ui/components/testPage/demos/core/ButtonDemo.d.ts +6 -0
- package/fe/packages/react/ui/components/testPage/demos/core/ButtonDemo.js +85 -0
- package/fe/packages/react/ui/components/testPage/demos/core/ButtonDemo2.js +4 -0
- package/fe/packages/react/ui/components/testPage/demos/core/CardDemo.d.ts +6 -0
- package/fe/packages/react/ui/components/testPage/demos/core/CardDemo.js +52 -0
- package/fe/packages/react/ui/components/testPage/demos/core/CardDemo2.js +4 -0
- package/fe/packages/react/ui/components/testPage/demos/core/CheckboxDemo.d.ts +6 -0
- package/fe/packages/react/ui/components/testPage/demos/core/CheckboxDemo.js +41 -0
- package/fe/packages/react/ui/components/testPage/demos/core/CheckboxDemo2.js +4 -0
- package/fe/packages/react/ui/components/testPage/demos/core/ConfirmDialogDemo.d.ts +6 -0
- package/fe/packages/react/ui/components/testPage/demos/core/ConfirmDialogDemo.js +35 -0
- package/fe/packages/react/ui/components/testPage/demos/core/ConfirmDialogDemo2.js +4 -0
- package/fe/packages/react/ui/components/testPage/demos/core/DataTableDemo.d.ts +6 -0
- package/fe/packages/react/ui/components/testPage/demos/core/DataTableDemo.js +243 -0
- package/fe/packages/react/ui/components/testPage/demos/core/DataTableDemo2.js +4 -0
- package/fe/packages/react/ui/components/testPage/demos/core/DrawerDemo.d.ts +6 -0
- package/fe/packages/react/ui/components/testPage/demos/core/DrawerDemo.js +105 -0
- package/fe/packages/react/ui/components/testPage/demos/core/DrawerDemo2.js +4 -0
- package/fe/packages/react/ui/components/testPage/demos/core/DropdownDemo.d.ts +6 -0
- package/fe/packages/react/ui/components/testPage/demos/core/DropdownDemo.js +48 -0
- package/fe/packages/react/ui/components/testPage/demos/core/DropdownDemo2.js +4 -0
- package/fe/packages/react/ui/components/testPage/demos/core/FormDemo.d.ts +6 -0
- package/fe/packages/react/ui/components/testPage/demos/core/FormDemo.js +56 -0
- package/fe/packages/react/ui/components/testPage/demos/core/FormDemo2.js +4 -0
- package/fe/packages/react/ui/components/testPage/demos/core/ImageUploadDemo.d.ts +6 -0
- package/fe/packages/react/ui/components/testPage/demos/core/ImageUploadDemo.js +26 -0
- package/fe/packages/react/ui/components/testPage/demos/core/ImageUploadDemo2.js +4 -0
- package/fe/packages/react/ui/components/testPage/demos/core/InputDemo.d.ts +6 -0
- package/fe/packages/react/ui/components/testPage/demos/core/InputDemo.js +55 -0
- package/fe/packages/react/ui/components/testPage/demos/core/InputDemo2.js +4 -0
- package/fe/packages/react/ui/components/testPage/demos/core/InputNumberDemo.d.ts +6 -0
- package/fe/packages/react/ui/components/testPage/demos/core/InputNumberDemo.js +65 -0
- package/fe/packages/react/ui/components/testPage/demos/core/InputNumberDemo2.js +4 -0
- package/fe/packages/react/ui/components/testPage/demos/core/LabelDemo.d.ts +6 -0
- package/fe/packages/react/ui/components/testPage/demos/core/LabelDemo.js +33 -0
- package/fe/packages/react/ui/components/testPage/demos/core/LabelDemo2.js +4 -0
- package/fe/packages/react/ui/components/testPage/demos/core/LayoutDemo.d.ts +6 -0
- package/fe/packages/react/ui/components/testPage/demos/core/LayoutDemo.js +64 -0
- package/fe/packages/react/ui/components/testPage/demos/core/LayoutDemo2.js +4 -0
- package/fe/packages/react/ui/components/testPage/demos/core/LoadingDemo.d.ts +6 -0
- package/fe/packages/react/ui/components/testPage/demos/core/LoadingDemo.js +32 -0
- package/fe/packages/react/ui/components/testPage/demos/core/LoadingDemo2.js +4 -0
- package/fe/packages/react/ui/components/testPage/demos/core/MessageDemo.d.ts +6 -0
- package/fe/packages/react/ui/components/testPage/demos/core/MessageDemo.js +44 -0
- package/fe/packages/react/ui/components/testPage/demos/core/MessageDemo2.js +4 -0
- package/fe/packages/react/ui/components/testPage/demos/core/ModalDemo.d.ts +6 -0
- package/fe/packages/react/ui/components/testPage/demos/core/ModalDemo.js +61 -0
- package/fe/packages/react/ui/components/testPage/demos/core/ModalDemo2.js +4 -0
- package/fe/packages/react/ui/components/testPage/demos/core/NotificationDemo.d.ts +6 -0
- package/fe/packages/react/ui/components/testPage/demos/core/NotificationDemo.js +50 -0
- package/fe/packages/react/ui/components/testPage/demos/core/NotificationDemo2.js +4 -0
- package/fe/packages/react/ui/components/testPage/demos/core/PaginationDemo.d.ts +6 -0
- package/fe/packages/react/ui/components/testPage/demos/core/PaginationDemo.js +39 -0
- package/fe/packages/react/ui/components/testPage/demos/core/PaginationDemo2.js +4 -0
- package/fe/packages/react/ui/components/testPage/demos/core/PreviewImageDemo.d.ts +6 -0
- package/fe/packages/react/ui/components/testPage/demos/core/PreviewImageDemo.js +22 -0
- package/fe/packages/react/ui/components/testPage/demos/core/PreviewImageDemo2.js +4 -0
- package/fe/packages/react/ui/components/testPage/demos/core/RadioDemo.d.ts +6 -0
- package/fe/packages/react/ui/components/testPage/demos/core/RadioDemo.js +129 -0
- package/fe/packages/react/ui/components/testPage/demos/core/RadioDemo2.js +4 -0
- package/fe/packages/react/ui/components/testPage/demos/core/SchemaFormDemo.d.ts +6 -0
- package/fe/packages/react/ui/components/testPage/demos/core/SchemaFormDemo.js +52 -0
- package/fe/packages/react/ui/components/testPage/demos/core/SchemaFormDemo2.js +4 -0
- package/fe/packages/react/ui/components/testPage/demos/core/SearchDemo.d.ts +6 -0
- package/fe/packages/react/ui/components/testPage/demos/core/SearchDemo.js +52 -0
- package/fe/packages/react/ui/components/testPage/demos/core/SearchDemo2.js +4 -0
- package/fe/packages/react/ui/components/testPage/demos/core/SelectDemo.d.ts +6 -0
- package/fe/packages/react/ui/components/testPage/demos/core/SelectDemo.js +73 -0
- package/fe/packages/react/ui/components/testPage/demos/core/SelectDemo2.js +4 -0
- package/fe/packages/react/ui/components/testPage/demos/core/SkeletonDemo.d.ts +6 -0
- package/fe/packages/react/ui/components/testPage/demos/core/SkeletonDemo.js +46 -0
- package/fe/packages/react/ui/components/testPage/demos/core/SkeletonDemo2.js +4 -0
- package/fe/packages/react/ui/components/testPage/demos/core/SwitchDemo.d.ts +6 -0
- package/fe/packages/react/ui/components/testPage/demos/core/SwitchDemo.js +36 -0
- package/fe/packages/react/ui/components/testPage/demos/core/SwitchDemo2.js +4 -0
- package/fe/packages/react/ui/components/testPage/demos/core/TableDemo.d.ts +6 -0
- package/fe/packages/react/ui/components/testPage/demos/core/TableDemo.js +64 -0
- package/fe/packages/react/ui/components/testPage/demos/core/TableDemo2.js +4 -0
- package/fe/packages/react/ui/components/testPage/demos/core/TableSearchDemo.d.ts +6 -0
- package/fe/packages/react/ui/components/testPage/demos/core/TableSearchDemo.js +74 -0
- package/fe/packages/react/ui/components/testPage/demos/core/TableSearchDemo2.js +4 -0
- package/fe/packages/react/ui/components/testPage/demos/core/TabsDemo.d.ts +6 -0
- package/fe/packages/react/ui/components/testPage/demos/core/TabsDemo.js +56 -0
- package/fe/packages/react/ui/components/testPage/demos/core/TabsDemo2.js +4 -0
- package/fe/packages/react/ui/components/testPage/demos/core/TextareaDemo.d.ts +6 -0
- package/fe/packages/react/ui/components/testPage/demos/core/TextareaDemo.js +30 -0
- package/fe/packages/react/ui/components/testPage/demos/core/TextareaDemo2.js +4 -0
- package/fe/packages/react/ui/components/testPage/demos/core/ThemeSwitcher.d.ts +6 -0
- package/fe/packages/react/ui/components/testPage/demos/core/ThemeSwitcher.js +96 -0
- package/fe/packages/react/ui/components/testPage/demos/core/ThemeSwitcher2.js +4 -0
- package/fe/packages/react/ui/components/testPage/demos/core/TooltipDemo.d.ts +6 -0
- package/fe/packages/react/ui/components/testPage/demos/core/TooltipDemo.js +29 -0
- package/fe/packages/react/ui/components/testPage/demos/core/TooltipDemo2.js +4 -0
- package/fe/packages/react/ui/components/testPage/demos/core/TreeSelectDemo.d.ts +6 -0
- package/fe/packages/react/ui/components/testPage/demos/core/TreeSelectDemo.js +66 -0
- package/fe/packages/react/ui/components/testPage/demos/core/TreeSelectDemo2.js +4 -0
- package/fe/packages/react/ui/components/testPage/demos/date/DateBasicDemo.d.ts +6 -0
- package/fe/packages/react/ui/components/testPage/demos/date/DateBasicDemo.js +31 -0
- package/fe/packages/react/ui/components/testPage/demos/date/DateBasicDemo2.js +4 -0
- package/fe/packages/react/ui/components/testPage/demos/date/DateControlledDemo.d.ts +6 -0
- package/fe/packages/react/ui/components/testPage/demos/date/DateControlledDemo.js +67 -0
- package/fe/packages/react/ui/components/testPage/demos/date/DateControlledDemo2.js +4 -0
- package/fe/packages/react/ui/components/testPage/demos/date/DateDisabledDateDemo.d.ts +6 -0
- package/fe/packages/react/ui/components/testPage/demos/date/DateDisabledDateDemo.js +36 -0
- package/fe/packages/react/ui/components/testPage/demos/date/DateDisabledDateDemo2.js +4 -0
- package/fe/packages/react/ui/components/testPage/demos/date/DateDisabledDemo.d.ts +6 -0
- package/fe/packages/react/ui/components/testPage/demos/date/DateDisabledDemo.js +35 -0
- package/fe/packages/react/ui/components/testPage/demos/date/DateDisabledDemo2.js +4 -0
- package/fe/packages/react/ui/components/testPage/demos/date/DateFormatDemo.d.ts +6 -0
- package/fe/packages/react/ui/components/testPage/demos/date/DateFormatDemo.js +35 -0
- package/fe/packages/react/ui/components/testPage/demos/date/DateFormatDemo2.js +4 -0
- package/fe/packages/react/ui/components/testPage/demos/date/DateRangeDemo.d.ts +6 -0
- package/fe/packages/react/ui/components/testPage/demos/date/DateRangeDemo.js +76 -0
- package/fe/packages/react/ui/components/testPage/demos/date/DateRangeDemo2.js +4 -0
- package/fe/packages/react/ui/components/testPage/demos/date/DateTimeDemo.d.ts +7 -0
- package/fe/packages/react/ui/components/testPage/demos/date/DateTimeDemo.js +60 -0
- package/fe/packages/react/ui/components/testPage/demos/date/DateTimeDemo2.js +4 -0
- package/fe/packages/react/ui/components/testPage/demos/menu/MenuAccordionDemo.d.ts +7 -0
- package/fe/packages/react/ui/components/testPage/demos/menu/MenuAccordionDemo.js +78 -0
- package/fe/packages/react/ui/components/testPage/demos/menu/MenuAccordionDemo2.js +4 -0
- package/fe/packages/react/ui/components/testPage/demos/menu/MenuClickTriggerDemo.d.ts +7 -0
- package/fe/packages/react/ui/components/testPage/demos/menu/MenuClickTriggerDemo.js +79 -0
- package/fe/packages/react/ui/components/testPage/demos/menu/MenuClickTriggerDemo2.js +4 -0
- package/fe/packages/react/ui/components/testPage/demos/menu/MenuCollapsedDemo.d.ts +7 -0
- package/fe/packages/react/ui/components/testPage/demos/menu/MenuCollapsedDemo.js +82 -0
- package/fe/packages/react/ui/components/testPage/demos/menu/MenuCollapsedDemo2.js +4 -0
- package/fe/packages/react/ui/components/testPage/demos/menu/MenuCollapsedNoIconDemo.d.ts +7 -0
- package/fe/packages/react/ui/components/testPage/demos/menu/MenuCollapsedNoIconDemo.js +44 -0
- package/fe/packages/react/ui/components/testPage/demos/menu/MenuCollapsedNoIconDemo2.js +4 -0
- package/fe/packages/react/ui/components/testPage/demos/menu/MenuJsxDemo.d.ts +7 -0
- package/fe/packages/react/ui/components/testPage/demos/menu/MenuJsxDemo.js +64 -0
- package/fe/packages/react/ui/components/testPage/demos/menu/MenuJsxDemo2.js +4 -0
- package/fe/packages/react/ui/components/testPage/demos/menu/MenuLeftMultipleDemo.d.ts +7 -0
- package/fe/packages/react/ui/components/testPage/demos/menu/MenuLeftMultipleDemo.js +81 -0
- package/fe/packages/react/ui/components/testPage/demos/menu/MenuLeftMultipleDemo2.js +4 -0
- package/fe/packages/react/ui/components/testPage/demos/menu/MenuPopupDemo.d.ts +7 -0
- package/fe/packages/react/ui/components/testPage/demos/menu/MenuPopupDemo.js +56 -0
- package/fe/packages/react/ui/components/testPage/demos/menu/MenuPopupDemo2.js +4 -0
- package/fe/packages/react/ui/components/testPage/demos/menu/MenuStateDemo.d.ts +7 -0
- package/fe/packages/react/ui/components/testPage/demos/menu/MenuStateDemo.js +67 -0
- package/fe/packages/react/ui/components/testPage/demos/menu/MenuStateDemo2.js +4 -0
- package/fe/packages/react/ui/components/testPage/demos/menu/MenuTopDemo.d.ts +7 -0
- package/fe/packages/react/ui/components/testPage/demos/menu/MenuTopDemo.js +55 -0
- package/fe/packages/react/ui/components/testPage/demos/menu/MenuTopDemo2.js +4 -0
- package/fe/packages/react/ui/components/testPage/index.js +30 -1623
- package/fe/packages/react/ui/components/testPage/types.d.ts +17 -0
- package/fe/packages/react/ui/components/testPage/types.js +0 -0
- package/fe/packages/react/ui/i18n/I18nProvider.js +2 -1
- package/model/packages/react/ui/components/Date/LocaleContext.d.ts +1 -0
- package/model/packages/react/ui/components/Date/locales.d.ts +5 -0
- package/package.json +1 -1
- package/types/config/config.default.d.ts +6 -0
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { __exportAll } from "../../../../../../../_virtual/_rolldown/runtime.js";
|
|
2
|
+
import { DatePicker } from "../../../Date/Date.js";
|
|
3
|
+
import "../../../Date/index.js";
|
|
4
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
5
|
+
//#region packages/react/ui/components/testPage/demos/date/DateFormatDemo.tsx
|
|
6
|
+
var DateFormatDemo_exports = /* @__PURE__ */ __exportAll({
|
|
7
|
+
default: () => DateFormatDemo,
|
|
8
|
+
demoMeta: () => demoMeta
|
|
9
|
+
});
|
|
10
|
+
var demoMeta = {
|
|
11
|
+
title: "7. 自定义格式",
|
|
12
|
+
order: 7,
|
|
13
|
+
contentClassName: "space-y-4"
|
|
14
|
+
};
|
|
15
|
+
function DateFormatDemo() {
|
|
16
|
+
return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsxs("div", {
|
|
17
|
+
className: "grid grid-cols-2 gap-4",
|
|
18
|
+
children: [/* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("p", {
|
|
19
|
+
className: "text-sm text-muted-foreground mb-2",
|
|
20
|
+
children: "自定义日期格式"
|
|
21
|
+
}), /* @__PURE__ */ jsx(DatePicker, {
|
|
22
|
+
format: "yyyy/MM/dd",
|
|
23
|
+
placeholder: "选择日期 (yyyy/MM/dd)"
|
|
24
|
+
})] }), /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("p", {
|
|
25
|
+
className: "text-sm text-muted-foreground mb-2",
|
|
26
|
+
children: "自定义日期时间格式"
|
|
27
|
+
}), /* @__PURE__ */ jsx(DatePicker, {
|
|
28
|
+
showTime: true,
|
|
29
|
+
format: "yyyy-MM-dd HH:mm:ss",
|
|
30
|
+
placeholder: "选择日期时间 (yyyy-MM-dd HH:mm:ss)"
|
|
31
|
+
})] })]
|
|
32
|
+
}) });
|
|
33
|
+
}
|
|
34
|
+
//#endregion
|
|
35
|
+
export { DateFormatDemo_exports, DateFormatDemo as default, demoMeta };
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
//#region packages/react/ui/components/testPage/demos/date/DateFormatDemo.tsx?raw
|
|
2
|
+
var DateFormatDemo_default = "import { DatePicker } from '@tc/ui-react/components/Date'\nimport type { DemoMeta } from '../../types'\n\nexport const demoMeta = {\n title: '7. 自定义格式',\n order: 7,\n contentClassName: 'space-y-4',\n} satisfies DemoMeta\n\nexport default function DateFormatDemo() {\n return (\n <>\n <div className=\"grid grid-cols-2 gap-4\">\n <div>\n <p className=\"text-sm text-muted-foreground mb-2\">自定义日期格式</p>\n <DatePicker format=\"yyyy/MM/dd\" placeholder=\"选择日期 (yyyy/MM/dd)\" />\n </div>\n <div>\n <p className=\"text-sm text-muted-foreground mb-2\">自定义日期时间格式</p>\n <DatePicker showTime format=\"yyyy-MM-dd HH:mm:ss\" placeholder=\"选择日期时间 (yyyy-MM-dd HH:mm:ss)\" />\n </div>\n </div>\n </>\n )\n}\n";
|
|
3
|
+
//#endregion
|
|
4
|
+
export { DateFormatDemo_default as default };
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { __exportAll } from "../../../../../../../_virtual/_rolldown/runtime.js";
|
|
2
|
+
import { DatePicker } from "../../../Date/Date.js";
|
|
3
|
+
import "../../../Date/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/date/DateRangeDemo.tsx
|
|
7
|
+
var DateRangeDemo_exports = /* @__PURE__ */ __exportAll({
|
|
8
|
+
default: () => DateRangeDemo,
|
|
9
|
+
demoMeta: () => demoMeta
|
|
10
|
+
});
|
|
11
|
+
var demoMeta = {
|
|
12
|
+
title: "3. 范围选择 (Range Picker)",
|
|
13
|
+
order: 3,
|
|
14
|
+
contentClassName: "space-y-4"
|
|
15
|
+
};
|
|
16
|
+
function DateRangeDemo() {
|
|
17
|
+
const [rangeWithTime, setRangeWithTime] = useState();
|
|
18
|
+
const [emptyRange, setEmptyRange] = useState();
|
|
19
|
+
return /* @__PURE__ */ jsx(Fragment$1, { children: /* @__PURE__ */ jsxs("div", {
|
|
20
|
+
className: "grid grid-cols-2 gap-8",
|
|
21
|
+
children: [/* @__PURE__ */ jsxs("div", { children: [
|
|
22
|
+
/* @__PURE__ */ jsx("h3", {
|
|
23
|
+
className: "text-sm font-medium mb-2",
|
|
24
|
+
children: "基本范围选择"
|
|
25
|
+
}),
|
|
26
|
+
/* @__PURE__ */ jsx(DatePicker, {
|
|
27
|
+
mode: "range",
|
|
28
|
+
value: emptyRange,
|
|
29
|
+
onChange: (val) => {
|
|
30
|
+
setEmptyRange(val);
|
|
31
|
+
console.log("范围选择:", val);
|
|
32
|
+
},
|
|
33
|
+
placeholder: "选择日期范围"
|
|
34
|
+
}),
|
|
35
|
+
/* @__PURE__ */ jsxs("p", {
|
|
36
|
+
className: "text-sm text-muted-foreground mt-2",
|
|
37
|
+
children: ["值: ", /* @__PURE__ */ jsx("code", {
|
|
38
|
+
className: "text-xs bg-muted px-1 py-0.5 rounded",
|
|
39
|
+
children: JSON.stringify(emptyRange || "未选择")
|
|
40
|
+
})]
|
|
41
|
+
})
|
|
42
|
+
] }), /* @__PURE__ */ jsxs("div", { children: [
|
|
43
|
+
/* @__PURE__ */ jsx("h3", {
|
|
44
|
+
className: "text-sm font-medium mb-2",
|
|
45
|
+
children: "范围选择 + 时间选择"
|
|
46
|
+
}),
|
|
47
|
+
/* @__PURE__ */ jsx(DatePicker, {
|
|
48
|
+
mode: "range",
|
|
49
|
+
value: rangeWithTime,
|
|
50
|
+
showTime: true,
|
|
51
|
+
onChange: (val) => {
|
|
52
|
+
setRangeWithTime(val);
|
|
53
|
+
console.log("范围时间选择:", val);
|
|
54
|
+
},
|
|
55
|
+
placeholder: "选择日期时间范围"
|
|
56
|
+
}),
|
|
57
|
+
/* @__PURE__ */ jsxs("p", {
|
|
58
|
+
className: "text-sm text-muted-foreground mt-2",
|
|
59
|
+
children: [
|
|
60
|
+
"值:",
|
|
61
|
+
" ",
|
|
62
|
+
/* @__PURE__ */ jsx("code", {
|
|
63
|
+
className: "text-xs bg-muted px-1 py-0.5 rounded",
|
|
64
|
+
children: JSON.stringify(rangeWithTime || "未选择")
|
|
65
|
+
})
|
|
66
|
+
]
|
|
67
|
+
}),
|
|
68
|
+
/* @__PURE__ */ jsx("p", {
|
|
69
|
+
className: "text-xs text-muted-foreground mt-1",
|
|
70
|
+
children: "选择开始日期后,右侧会显示开始时间选择器;选择结束日期后,会显示结束时间选择器"
|
|
71
|
+
})
|
|
72
|
+
] })]
|
|
73
|
+
}) });
|
|
74
|
+
}
|
|
75
|
+
//#endregion
|
|
76
|
+
export { DateRangeDemo_exports, DateRangeDemo as default, demoMeta };
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
//#region packages/react/ui/components/testPage/demos/date/DateRangeDemo.tsx?raw
|
|
2
|
+
var DateRangeDemo_default = "import { useState } from 'react'\nimport { DatePicker, type DateChangeStrValue } from '@tc/ui-react/components/Date'\nimport type { DemoMeta } from '../../types'\n\nexport const demoMeta = {\n title: '3. 范围选择 (Range Picker)',\n order: 3,\n contentClassName: 'space-y-4',\n} satisfies DemoMeta\n\nexport default function DateRangeDemo() {\n const [rangeWithTime, setRangeWithTime] = useState<DateChangeStrValue>()\n const [emptyRange, setEmptyRange] = useState<DateChangeStrValue>()\n return (\n <>\n <div className=\"grid grid-cols-2 gap-8\">\n <div>\n <h3 className=\"text-sm font-medium mb-2\">基本范围选择</h3>\n <DatePicker\n mode=\"range\"\n value={emptyRange}\n onChange={(val) => {\n setEmptyRange(val)\n console.log('范围选择:', val)\n }}\n placeholder=\"选择日期范围\"\n />\n <p className=\"text-sm text-muted-foreground mt-2\">\n 值: <code className=\"text-xs bg-muted px-1 py-0.5 rounded\">{JSON.stringify(emptyRange || '未选择')}</code>\n </p>\n </div>\n <div>\n <h3 className=\"text-sm font-medium mb-2\">范围选择 + 时间选择</h3>\n <DatePicker\n mode=\"range\"\n value={rangeWithTime}\n showTime\n onChange={(val) => {\n setRangeWithTime(val)\n console.log('范围时间选择:', val)\n }}\n placeholder=\"选择日期时间范围\"\n />\n <p className=\"text-sm text-muted-foreground mt-2\">\n 值:{' '}\n <code className=\"text-xs bg-muted px-1 py-0.5 rounded\">{JSON.stringify(rangeWithTime || '未选择')}</code>\n </p>\n <p className=\"text-xs text-muted-foreground mt-1\">\n 选择开始日期后,右侧会显示开始时间选择器;选择结束日期后,会显示结束时间选择器\n </p>\n </div>\n </div>\n </>\n )\n}\n";
|
|
3
|
+
//#endregion
|
|
4
|
+
export { DateRangeDemo_default as default };
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { __exportAll } from "../../../../../../../_virtual/_rolldown/runtime.js";
|
|
2
|
+
import { DatePicker } from "../../../Date/Date.js";
|
|
3
|
+
import "../../../Date/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/date/DateTimeDemo.tsx
|
|
7
|
+
var DateTimeDemo_exports = /* @__PURE__ */ __exportAll({
|
|
8
|
+
default: () => DateTimeDemo,
|
|
9
|
+
demoMeta: () => demoMeta
|
|
10
|
+
});
|
|
11
|
+
var demoMeta = {
|
|
12
|
+
title: "2. 日期时间选择器 (showTime)",
|
|
13
|
+
description: "时间选择器显示在日历右侧,提供更好的用户体验",
|
|
14
|
+
order: 2,
|
|
15
|
+
contentClassName: "space-y-4"
|
|
16
|
+
};
|
|
17
|
+
function DateTimeDemo() {
|
|
18
|
+
const [dateTime1, setDateTime1] = useState();
|
|
19
|
+
return /* @__PURE__ */ jsx(Fragment$1, { children: /* @__PURE__ */ jsxs("div", {
|
|
20
|
+
className: "grid grid-cols-2 gap-8",
|
|
21
|
+
children: [/* @__PURE__ */ jsxs("div", { children: [
|
|
22
|
+
/* @__PURE__ */ jsx("h3", {
|
|
23
|
+
className: "text-sm font-medium mb-2",
|
|
24
|
+
children: "基本用法 - 单日期时间"
|
|
25
|
+
}),
|
|
26
|
+
/* @__PURE__ */ jsx(DatePicker, {
|
|
27
|
+
showTime: true,
|
|
28
|
+
placeholder: "请选择日期时间"
|
|
29
|
+
}),
|
|
30
|
+
/* @__PURE__ */ jsx("p", {
|
|
31
|
+
className: "text-xs text-muted-foreground mt-2",
|
|
32
|
+
children: "点击输入框打开选择器,时间选择器在右侧显示"
|
|
33
|
+
})
|
|
34
|
+
] }), /* @__PURE__ */ jsxs("div", { children: [
|
|
35
|
+
/* @__PURE__ */ jsx("h3", {
|
|
36
|
+
className: "text-sm font-medium mb-2",
|
|
37
|
+
children: "受控模式"
|
|
38
|
+
}),
|
|
39
|
+
/* @__PURE__ */ jsx(DatePicker, {
|
|
40
|
+
showTime: true,
|
|
41
|
+
value: dateTime1,
|
|
42
|
+
onChange: (val, date) => {
|
|
43
|
+
setDateTime1(val);
|
|
44
|
+
console.log("选中日期时间:", val);
|
|
45
|
+
console.log("Date 对象:", date);
|
|
46
|
+
},
|
|
47
|
+
placeholder: "受控日期时间选择器"
|
|
48
|
+
}),
|
|
49
|
+
/* @__PURE__ */ jsxs("p", {
|
|
50
|
+
className: "text-sm text-muted-foreground mt-2",
|
|
51
|
+
children: ["选中的值: ", /* @__PURE__ */ jsx("code", {
|
|
52
|
+
className: "text-xs bg-muted px-1 py-0.5 rounded",
|
|
53
|
+
children: String(dateTime1 || "未选择")
|
|
54
|
+
})]
|
|
55
|
+
})
|
|
56
|
+
] })]
|
|
57
|
+
}) });
|
|
58
|
+
}
|
|
59
|
+
//#endregion
|
|
60
|
+
export { DateTimeDemo_exports, DateTimeDemo as default, demoMeta };
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
//#region packages/react/ui/components/testPage/demos/date/DateTimeDemo.tsx?raw
|
|
2
|
+
var DateTimeDemo_default = "import { useState } from 'react'\nimport { DatePicker, type DateChangeStrValue } from '@tc/ui-react/components/Date'\nimport type { DemoMeta } from '../../types'\n\nexport const demoMeta = {\n title: '2. 日期时间选择器 (showTime)',\n description: '时间选择器显示在日历右侧,提供更好的用户体验',\n order: 2,\n contentClassName: 'space-y-4',\n} satisfies DemoMeta\n\nexport default function DateTimeDemo() {\n const [dateTime1, setDateTime1] = useState<DateChangeStrValue>()\n return (\n <>\n <div className=\"grid grid-cols-2 gap-8\">\n <div>\n <h3 className=\"text-sm font-medium mb-2\">基本用法 - 单日期时间</h3>\n <DatePicker showTime placeholder=\"请选择日期时间\" />\n <p className=\"text-xs text-muted-foreground mt-2\">点击输入框打开选择器,时间选择器在右侧显示</p>\n </div>\n <div>\n <h3 className=\"text-sm font-medium mb-2\">受控模式</h3>\n <DatePicker\n showTime\n value={dateTime1}\n onChange={(val, date) => {\n setDateTime1(val)\n console.log('选中日期时间:', val)\n console.log('Date 对象:', date)\n }}\n placeholder=\"受控日期时间选择器\"\n />\n <p className=\"text-sm text-muted-foreground mt-2\">\n 选中的值: <code className=\"text-xs bg-muted px-1 py-0.5 rounded\">{String(dateTime1 || '未选择')}</code>\n </p>\n </div>\n </div>\n </>\n )\n}\n";
|
|
3
|
+
//#endregion
|
|
4
|
+
export { DateTimeDemo_default as default };
|
|
@@ -0,0 +1,78 @@
|
|
|
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/MenuAccordionDemo.tsx
|
|
8
|
+
var MenuAccordionDemo_exports = /* @__PURE__ */ __exportAll({
|
|
9
|
+
default: () => MenuAccordionDemo,
|
|
10
|
+
demoMeta: () => demoMeta
|
|
11
|
+
});
|
|
12
|
+
var demoMeta = {
|
|
13
|
+
title: "2. 手风琴展开 (accordion)",
|
|
14
|
+
description: "同一层级同时只能展开一个子菜单",
|
|
15
|
+
order: 2,
|
|
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 MenuAccordionDemo() {
|
|
65
|
+
const [accordionKey, setAccordionKey] = 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
|
+
expandMode: "accordion",
|
|
71
|
+
selectedKey: accordionKey,
|
|
72
|
+
onSelect: setAccordionKey,
|
|
73
|
+
items: menuItems
|
|
74
|
+
})
|
|
75
|
+
}) });
|
|
76
|
+
}
|
|
77
|
+
//#endregion
|
|
78
|
+
export { MenuAccordionDemo_exports, MenuAccordionDemo as default, demoMeta };
|
|
@@ -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,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,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,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,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 };
|