重新构建路由和配置样式文件

This commit is contained in:
2025-03-26 10:04:27 +08:00
parent a42a9990bf
commit 97ccf5a077
141 changed files with 88034 additions and 179 deletions
+388
View File
@@ -0,0 +1,388 @@
import {
Card
} from "/build/_shared/chunk-QMPAUNNA.js";
import {
Button
} from "/build/_shared/chunk-OGUYUMUT.js";
import {
require_jsx_dev_runtime
} from "/build/_shared/chunk-XGOTYLZ5.js";
import {
useLoaderData
} from "/build/_shared/chunk-RG2SZ2V3.js";
import {
createHotContext
} from "/build/_shared/chunk-73ZPIOGA.js";
import "/build/_shared/chunk-UWV35TSL.js";
import "/build/_shared/chunk-U4FRFQSK.js";
import "/build/_shared/chunk-7M6SC7J5.js";
import {
__toESM
} from "/build/_shared/chunk-PNG5AS42.js";
// app/routes/_index.tsx
var import_jsx_dev_runtime = __toESM(require_jsx_dev_runtime(), 1);
if (!window.$RefreshReg$ || !window.$RefreshSig$ || !window.$RefreshRuntime$) {
console.warn("remix:hmr: React Fast Refresh only works when the Remix compiler is running in development mode.");
} else {
prevRefreshReg = window.$RefreshReg$;
prevRefreshSig = window.$RefreshSig$;
window.$RefreshReg$ = (type, id) => {
window.$RefreshRuntime$.register(type, '"app\\\\routes\\\\_index.tsx"' + id);
};
window.$RefreshSig$ = window.$RefreshRuntime$.createSignatureFunctionForTransform;
}
var prevRefreshReg;
var prevRefreshSig;
var _s = $RefreshSig$();
if (import.meta) {
import.meta.hot = createHotContext(
//@ts-expect-error
"app\\routes\\_index.tsx"
);
}
var links = () => [{
rel: "stylesheet",
href: "/app/styles/index.css"
}];
var meta = () => {
return [{
title: "\u4E2D\u56FD\u70DF\u8349AI\u5408\u540C\u53CA\u5377\u5B97\u5BA1\u6838\u7CFB\u7EDF - \u9996\u9875"
}, {
name: "description",
content: "AI\u5BA1\u6838\u7CFB\u7EDF\u9996\u9875"
}];
};
function Index() {
_s();
const {
stats,
recentFiles
} = useLoaderData();
return /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", { className: "dashboard-container", children: [
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", { className: "mb-4 p-3 bg-yellow-100 border border-yellow-300 rounded text-yellow-800", children: [
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("h3", { className: "font-bold text-lg", children: "\u5F53\u524D\u9875\u9762: \u9996\u9875 (_index.tsx)" }, void 0, false, {
fileName: "app/routes/_index.tsx",
lineNumber: 117,
columnNumber: 9
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("p", { children: "\u5982\u679C\u4F60\u770B\u5230\u8FD9\u4E2A\u63D0\u793A\uFF0C\u8BF4\u660E\u4F60\u6B63\u5728\u6D4F\u89C8\u9996\u9875\uFF0C\u800C\u4E0D\u662F\u8BC4\u67E5\u70B9\u5217\u8868\u9875\u9762\u3002" }, void 0, false, {
fileName: "app/routes/_index.tsx",
lineNumber: 118,
columnNumber: 9
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", { className: "mt-2", children: [
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("a", { href: "/debug", className: "text-blue-600 hover:underline", children: "\u67E5\u770B\u8DEF\u7531\u8BCA\u65AD\u9875\u9762" }, void 0, false, {
fileName: "app/routes/_index.tsx",
lineNumber: 120,
columnNumber: 11
}, this),
" |",
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("a", { href: "/rules", className: "ml-2 text-blue-600 hover:underline", children: "\u901A\u8FC7\u539F\u751F\u94FE\u63A5\u8BBF\u95EE\u8BC4\u67E5\u70B9\u5217\u8868" }, void 0, false, {
fileName: "app/routes/_index.tsx",
lineNumber: 121,
columnNumber: 11
}, this)
] }, void 0, true, {
fileName: "app/routes/_index.tsx",
lineNumber: 119,
columnNumber: 9
}, this)
] }, void 0, true, {
fileName: "app/routes/_index.tsx",
lineNumber: 116,
columnNumber: 7
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(Card, { title: "\u7EDF\u8BA1\u4FE1\u606F", icon: "ri-bar-chart-line", className: "mt-6 transition-all duration-200 hover:shadow-[0_4px_15px_rgba(0,0,0,0.1)]", children: /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", { className: "stat-grid ", children: [
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(StatCard, { title: "\u603B\u6587\u4EF6\u6570", value: stats.totalFiles, icon: "ri-file-list-3-line" }, void 0, false, {
fileName: "app/routes/_index.tsx",
lineNumber: 128,
columnNumber: 11
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(StatCard, { title: "\u5DF2\u5BA1\u6838", value: stats.reviewedFiles, icon: "ri-check-double-line", trend: {
value: 5.2,
isUp: true
} }, void 0, false, {
fileName: "app/routes/_index.tsx",
lineNumber: 130,
columnNumber: 9
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(StatCard, { title: "\u5F85\u5BA1\u6838", value: stats.pendingFiles, icon: "ri-time-line", trend: {
value: 2.1,
isUp: false
} }, void 0, false, {
fileName: "app/routes/_index.tsx",
lineNumber: 135,
columnNumber: 9
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(StatCard, { title: "\u901A\u8FC7\u7387", value: `${stats.passRate}%`, icon: "ri-pie-chart-line", trend: {
value: 1.5,
isUp: true
} }, void 0, false, {
fileName: "app/routes/_index.tsx",
lineNumber: 140,
columnNumber: 9
}, this)
] }, void 0, true, {
fileName: "app/routes/_index.tsx",
lineNumber: 127,
columnNumber: 9
}, this) }, void 0, false, {
fileName: "app/routes/_index.tsx",
lineNumber: 126,
columnNumber: 7
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(Card, { title: "\u5FEB\u6377\u8BBF\u95EE", icon: "ri-speed-line", className: "mt-6 transition-all duration-200 hover:shadow-[0_4px_15px_rgba(0,0,0,0.1)]", children: /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", { className: "shortcut-grid", children: [
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(ShortcutItem, { icon: "ri-upload-cloud-line", label: "\u4E0A\u4F20\u6587\u4EF6", to: "/files/new" }, void 0, false, {
fileName: "app/routes/_index.tsx",
lineNumber: 151,
columnNumber: 11
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(ShortcutItem, { icon: "ri-file-list-3-line", label: "\u6587\u4EF6\u5217\u8868", to: "/files" }, void 0, false, {
fileName: "app/routes/_index.tsx",
lineNumber: 152,
columnNumber: 11
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(ShortcutItem, { icon: "ri-list-check-2", label: "\u8BC4\u67E5\u70B9\u7BA1\u7406", to: "/rules" }, void 0, false, {
fileName: "app/routes/_index.tsx",
lineNumber: 153,
columnNumber: 11
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(ShortcutItem, { icon: "ri-folder-open-line", label: "\u8BC4\u67E5\u70B9\u5206\u7EC4", to: "/rule-groups" }, void 0, false, {
fileName: "app/routes/_index.tsx",
lineNumber: 154,
columnNumber: 11
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(ShortcutItem, { icon: "ri-file-chart-line", label: "\u8BC4\u67E5\u8BE6\u60C5", to: "/reviews" }, void 0, false, {
fileName: "app/routes/_index.tsx",
lineNumber: 155,
columnNumber: 11
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(ShortcutItem, { icon: "ri-file-list-line", label: "\u6587\u6863\u7C7B\u578B", to: "/doc-types" }, void 0, false, {
fileName: "app/routes/_index.tsx",
lineNumber: 156,
columnNumber: 11
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(ShortcutItem, { icon: "ri-settings-3-line", label: "\u7CFB\u7EDF\u8BBE\u7F6E", to: "/settings" }, void 0, false, {
fileName: "app/routes/_index.tsx",
lineNumber: 157,
columnNumber: 11
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(ShortcutItem, { icon: "ri-chat-1-line", label: "\u63D0\u793A\u8BCD\u7BA1\u7406", to: "/prompts" }, void 0, false, {
fileName: "app/routes/_index.tsx",
lineNumber: 158,
columnNumber: 11
}, this)
] }, void 0, true, {
fileName: "app/routes/_index.tsx",
lineNumber: 150,
columnNumber: 9
}, this) }, void 0, false, {
fileName: "app/routes/_index.tsx",
lineNumber: 149,
columnNumber: 7
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(Card, { title: "\u6700\u8FD1\u6587\u6863", icon: "ri-file-list-3-line", extra: /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(Button, { to: "/files", size: "small", children: "\u67E5\u770B\u5168\u90E8" }, void 0, false, {
fileName: "app/routes/_index.tsx",
lineNumber: 163,
columnNumber: 60
}, this), className: "mt-6", children: /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", { className: "doc-list", children: recentFiles.map((file) => /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", { className: "doc-item", children: [
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", { className: "doc-info", children: [
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("i", { className: `doc-icon ${file.name.endsWith(".pdf") ? "ri-file-pdf-line" : "ri-file-word-line"}` }, void 0, false, {
fileName: "app/routes/_index.tsx",
lineNumber: 168,
columnNumber: 17
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", { children: [
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", { className: "doc-name", children: file.name }, void 0, false, {
fileName: "app/routes/_index.tsx",
lineNumber: 170,
columnNumber: 19
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", { className: "doc-meta", children: [
file.type,
" \xB7 ",
file.updatedAt
] }, void 0, true, {
fileName: "app/routes/_index.tsx",
lineNumber: 171,
columnNumber: 19
}, this)
] }, void 0, true, {
fileName: "app/routes/_index.tsx",
lineNumber: 169,
columnNumber: 17
}, this)
] }, void 0, true, {
fileName: "app/routes/_index.tsx",
lineNumber: 167,
columnNumber: 15
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", { className: "doc-status", children: /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(StatusBadge, { status: file.reviewStatus }, void 0, false, {
fileName: "app/routes/_index.tsx",
lineNumber: 177,
columnNumber: 17
}, this) }, void 0, false, {
fileName: "app/routes/_index.tsx",
lineNumber: 176,
columnNumber: 15
}, this)
] }, file.id, true, {
fileName: "app/routes/_index.tsx",
lineNumber: 166,
columnNumber: 36
}, this)) }, void 0, false, {
fileName: "app/routes/_index.tsx",
lineNumber: 165,
columnNumber: 9
}, this) }, void 0, false, {
fileName: "app/routes/_index.tsx",
lineNumber: 163,
columnNumber: 7
}, this)
] }, void 0, true, {
fileName: "app/routes/_index.tsx",
lineNumber: 114,
columnNumber: 10
}, this);
}
_s(Index, "rsfQp5mh5EV/dK4JBBInSVSpclM=", false, function() {
return [useLoaderData];
});
_c = Index;
function StatCard({
title,
value,
icon,
trend
}) {
return /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", { className: "stat-card", children: [
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", { className: "stat-title", children: title }, void 0, false, {
fileName: "app/routes/_index.tsx",
lineNumber: 197,
columnNumber: 7
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", { className: "stat-value", children: value }, void 0, false, {
fileName: "app/routes/_index.tsx",
lineNumber: 198,
columnNumber: 7
}, this),
trend && /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", { className: `stat-trend ${trend.isUp ? "trend-up" : "trend-down"}`, children: [
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("i", { className: `mr-1 ${trend.isUp ? "ri-arrow-up-s-line" : "ri-arrow-down-s-line"}` }, void 0, false, {
fileName: "app/routes/_index.tsx",
lineNumber: 200,
columnNumber: 11
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("span", { children: [
trend.value,
"%"
] }, void 0, true, {
fileName: "app/routes/_index.tsx",
lineNumber: 201,
columnNumber: 11
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("span", { className: "ml-1 text-gray-500", children: "\u8F83\u4E0A\u6708" }, void 0, false, {
fileName: "app/routes/_index.tsx",
lineNumber: 202,
columnNumber: 11
}, this)
] }, void 0, true, {
fileName: "app/routes/_index.tsx",
lineNumber: 199,
columnNumber: 17
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("i", { className: `${icon} stat-icon` }, void 0, false, {
fileName: "app/routes/_index.tsx",
lineNumber: 204,
columnNumber: 7
}, this)
] }, void 0, true, {
fileName: "app/routes/_index.tsx",
lineNumber: 196,
columnNumber: 10
}, this);
}
_c2 = StatCard;
function ShortcutItem({
icon,
label,
to
}) {
return /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(Button, { to, type: "default", className: "shortcut-item", children: [
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("i", { className: `${icon} shortcut-icon text-2xl` }, void 0, false, {
fileName: "app/routes/_index.tsx",
lineNumber: 217,
columnNumber: 7
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("span", { className: "shortcut-label", children: label }, void 0, false, {
fileName: "app/routes/_index.tsx",
lineNumber: 218,
columnNumber: 7
}, this)
] }, void 0, true, {
fileName: "app/routes/_index.tsx",
lineNumber: 215,
columnNumber: 10
}, this);
}
_c3 = ShortcutItem;
function StatusBadge({
status
}) {
const statusMap = {
pass: {
label: "\u901A\u8FC7",
className: "status-badge status-success",
icon: "ri-checkbox-circle-line"
},
warning: {
label: "\u8B66\u544A",
className: "status-badge status-warning",
icon: "ri-error-warning-line"
},
fail: {
label: "\u4E0D\u901A\u8FC7",
className: "status-badge status-error",
icon: "ri-close-circle-line"
},
pending: {
label: "\u5F85\u786E\u8BA4",
className: "status-badge",
icon: "ri-time-line"
}
};
const {
label,
className,
icon
} = statusMap[status] || statusMap.pending;
return /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("span", { className, children: [
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("i", { className: `${icon} mr-1` }, void 0, false, {
fileName: "app/routes/_index.tsx",
lineNumber: 255,
columnNumber: 7
}, this),
label
] }, void 0, true, {
fileName: "app/routes/_index.tsx",
lineNumber: 254,
columnNumber: 10
}, this);
}
_c4 = StatusBadge;
var _c;
var _c2;
var _c3;
var _c4;
$RefreshReg$(_c, "Index");
$RefreshReg$(_c2, "StatCard");
$RefreshReg$(_c3, "ShortcutItem");
$RefreshReg$(_c4, "StatusBadge");
window.$RefreshReg$ = prevRefreshReg;
window.$RefreshSig$ = prevRefreshSig;
export {
Index as default,
links,
meta
};
//# sourceMappingURL=/build/routes/_index-IEYVWKLH.js.map
File diff suppressed because one or more lines are too long
+151
View File
@@ -0,0 +1,151 @@
import {
require_jsx_dev_runtime
} from "/build/_shared/chunk-XGOTYLZ5.js";
import {
Link,
useLocation
} from "/build/_shared/chunk-RG2SZ2V3.js";
import {
createHotContext
} from "/build/_shared/chunk-73ZPIOGA.js";
import "/build/_shared/chunk-UWV35TSL.js";
import "/build/_shared/chunk-U4FRFQSK.js";
import "/build/_shared/chunk-7M6SC7J5.js";
import {
__toESM
} from "/build/_shared/chunk-PNG5AS42.js";
// app/routes/debug.tsx
var import_jsx_dev_runtime = __toESM(require_jsx_dev_runtime(), 1);
if (!window.$RefreshReg$ || !window.$RefreshSig$ || !window.$RefreshRuntime$) {
console.warn("remix:hmr: React Fast Refresh only works when the Remix compiler is running in development mode.");
} else {
prevRefreshReg = window.$RefreshReg$;
prevRefreshSig = window.$RefreshSig$;
window.$RefreshReg$ = (type, id) => {
window.$RefreshRuntime$.register(type, '"app\\\\routes\\\\debug.tsx"' + id);
};
window.$RefreshSig$ = window.$RefreshRuntime$.createSignatureFunctionForTransform;
}
var prevRefreshReg;
var prevRefreshSig;
var _s = $RefreshSig$();
if (import.meta) {
import.meta.hot = createHotContext(
//@ts-expect-error
"app\\routes\\debug.tsx"
);
import.meta.hot.lastModified = "1742896468617.7483";
}
function DebugPage() {
_s();
const location = useLocation();
return /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", { className: "p-6", children: [
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("h1", { className: "text-2xl font-bold mb-4", children: "\u8DEF\u7531\u8BCA\u65AD\u9875\u9762" }, void 0, false, {
fileName: "app/routes/debug.tsx",
lineNumber: 27,
columnNumber: 7
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", { className: "bg-gray-100 p-4 rounded mb-6", children: [
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("h2", { className: "text-xl font-semibold mb-2", children: "\u5F53\u524D\u8DEF\u5F84\u4FE1\u606F" }, void 0, false, {
fileName: "app/routes/debug.tsx",
lineNumber: 30,
columnNumber: 9
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("pre", { className: "bg-white p-3 rounded border", children: JSON.stringify({
pathname: location.pathname,
search: location.search,
hash: location.hash,
key: location.key,
state: location.state
}, null, 2) }, void 0, false, {
fileName: "app/routes/debug.tsx",
lineNumber: 31,
columnNumber: 9
}, this)
] }, void 0, true, {
fileName: "app/routes/debug.tsx",
lineNumber: 29,
columnNumber: 7
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", { className: "mb-6", children: [
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("h2", { className: "text-xl font-semibold mb-2", children: "\u6D4B\u8BD5\u94FE\u63A5" }, void 0, false, {
fileName: "app/routes/debug.tsx",
lineNumber: 43,
columnNumber: 9
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", { className: "flex flex-col space-y-2", children: [
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(Link, { to: "/", className: "text-blue-500 hover:underline", children: "\u9996\u9875 - /" }, void 0, false, {
fileName: "app/routes/debug.tsx",
lineNumber: 45,
columnNumber: 11
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(Link, { to: "/rules", className: "text-blue-500 hover:underline", children: "\u8BC4\u67E5\u70B9\u5217\u8868 - /rules" }, void 0, false, {
fileName: "app/routes/debug.tsx",
lineNumber: 46,
columnNumber: 11
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(Link, { to: "/rules/1", className: "text-blue-500 hover:underline", children: "\u8BC4\u67E5\u70B9\u8BE6\u60C5 - /rules/1" }, void 0, false, {
fileName: "app/routes/debug.tsx",
lineNumber: 47,
columnNumber: 11
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("a", { href: "/rules", className: "text-green-500 hover:underline", children: "\u539F\u751F\u94FE\u63A5 - /rules" }, void 0, false, {
fileName: "app/routes/debug.tsx",
lineNumber: 48,
columnNumber: 11
}, this)
] }, void 0, true, {
fileName: "app/routes/debug.tsx",
lineNumber: 44,
columnNumber: 9
}, this)
] }, void 0, true, {
fileName: "app/routes/debug.tsx",
lineNumber: 42,
columnNumber: 7
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", { children: [
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("h2", { className: "text-xl font-semibold mb-2", children: "\u8DF3\u8F6C\u6D4B\u8BD5" }, void 0, false, {
fileName: "app/routes/debug.tsx",
lineNumber: 53,
columnNumber: 9
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("button", { onClick: () => {
window.location.href = "/rules";
}, className: "bg-blue-500 text-white px-4 py-2 rounded mr-2 hover:bg-blue-600", children: "\u76F4\u63A5\u8DF3\u8F6C\u5230 /rules" }, void 0, false, {
fileName: "app/routes/debug.tsx",
lineNumber: 54,
columnNumber: 9
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("button", { onClick: () => {
window.history.pushState({}, "", "/rules");
window.dispatchEvent(new PopStateEvent("popstate"));
}, className: "bg-green-500 text-white px-4 py-2 rounded hover:bg-green-600", children: "\u4F7F\u7528History API\u8DF3\u8F6C\u5230 /rules" }, void 0, false, {
fileName: "app/routes/debug.tsx",
lineNumber: 60,
columnNumber: 9
}, this)
] }, void 0, true, {
fileName: "app/routes/debug.tsx",
lineNumber: 52,
columnNumber: 7
}, this)
] }, void 0, true, {
fileName: "app/routes/debug.tsx",
lineNumber: 26,
columnNumber: 10
}, this);
}
_s(DebugPage, "pkHmaVRPskBaU4tMJuJJpV42k1I=", false, function() {
return [useLocation];
});
_c = DebugPage;
var _c;
$RefreshReg$(_c, "DebugPage");
window.$RefreshReg$ = prevRefreshReg;
window.$RefreshSig$ = prevRefreshSig;
export {
DebugPage as default
};
//# sourceMappingURL=/build/routes/debug-ZSJC2IZZ.js.map
@@ -0,0 +1,7 @@
{
"version": 3,
"sources": ["../../../app/routes/debug.tsx"],
"sourcesContent": ["// REMIX HMR BEGIN\nif (!window.$RefreshReg$ || !window.$RefreshSig$ || !window.$RefreshRuntime$) {\n console.warn('remix:hmr: React Fast Refresh only works when the Remix compiler is running in development mode.');\n} else {\n var prevRefreshReg = window.$RefreshReg$;\n var prevRefreshSig = window.$RefreshSig$;\n window.$RefreshReg$ = (type, id) => {\n window.$RefreshRuntime$.register(type, \"\\\"app\\\\\\\\routes\\\\\\\\debug.tsx\\\"\" + id);\n }\n window.$RefreshSig$ = window.$RefreshRuntime$.createSignatureFunctionForTransform;\n}\nvar _s = $RefreshSig$();\nimport * as __hmr__ from \"remix:hmr\";\nif (import.meta) {\n import.meta.hot = __hmr__.createHotContext(\n //@ts-expect-error\n \"app\\\\routes\\\\debug.tsx\");\n import.meta.hot.lastModified = \"1742896468617.7483\";\n}\n// REMIX HMR END\n\nimport { useLocation, Link } from \"@remix-run/react\";\nexport default function DebugPage() {\n _s();\n const location = useLocation();\n return <div className=\"p-6\">\r\n <h1 className=\"text-2xl font-bold mb-4\">\u8DEF\u7531\u8BCA\u65AD\u9875\u9762</h1>\r\n \r\n <div className=\"bg-gray-100 p-4 rounded mb-6\">\r\n <h2 className=\"text-xl font-semibold mb-2\">\u5F53\u524D\u8DEF\u5F84\u4FE1\u606F</h2>\r\n <pre className=\"bg-white p-3 rounded border\">\r\n {JSON.stringify({\n pathname: location.pathname,\n search: location.search,\n hash: location.hash,\n key: location.key,\n state: location.state\n }, null, 2)}\r\n </pre>\r\n </div>\r\n \r\n <div className=\"mb-6\">\r\n <h2 className=\"text-xl font-semibold mb-2\">\u6D4B\u8BD5\u94FE\u63A5</h2>\r\n <div className=\"flex flex-col space-y-2\">\r\n <Link to=\"/\" className=\"text-blue-500 hover:underline\">\u9996\u9875 - /</Link>\r\n <Link to=\"/rules\" className=\"text-blue-500 hover:underline\">\u8BC4\u67E5\u70B9\u5217\u8868 - /rules</Link>\r\n <Link to=\"/rules/1\" className=\"text-blue-500 hover:underline\">\u8BC4\u67E5\u70B9\u8BE6\u60C5 - /rules/1</Link>\r\n <a href=\"/rules\" className=\"text-green-500 hover:underline\">\u539F\u751F\u94FE\u63A5 - /rules</a>\r\n </div>\r\n </div>\r\n \r\n <div>\r\n <h2 className=\"text-xl font-semibold mb-2\">\u8DF3\u8F6C\u6D4B\u8BD5</h2>\r\n <button onClick={() => {\n window.location.href = '/rules';\n }} className=\"bg-blue-500 text-white px-4 py-2 rounded mr-2 hover:bg-blue-600\">\r\n \u76F4\u63A5\u8DF3\u8F6C\u5230 /rules\r\n </button>\r\n \r\n <button onClick={() => {\n window.history.pushState({}, '', '/rules');\n window.dispatchEvent(new PopStateEvent('popstate'));\n }} className=\"bg-green-500 text-white px-4 py-2 rounded hover:bg-green-600\">\r\n \u4F7F\u7528History API\u8DF3\u8F6C\u5230 /rules\r\n </button>\r\n </div>\r\n </div>;\n}\n_s(DebugPage, \"pkHmaVRPskBaU4tMJuJJpV42k1I=\", false, function () {\n return [useLocation];\n});\n_c = DebugPage;\nvar _c;\n$RefreshReg$(_c, \"DebugPage\");\n\nwindow.$RefreshReg$ = prevRefreshReg;\nwindow.$RefreshSig$ = prevRefreshSig;"],
"mappings": ";;;;;;;;;;;;;;;;;;AA0BM;AAzBN,IAAI,CAAC,OAAO,gBAAgB,CAAC,OAAO,gBAAgB,CAAC,OAAO,kBAAkB;AAC5E,UAAQ,KAAK,kGAAkG;AACjH,OAAO;AACD,mBAAiB,OAAO;AACxB,mBAAiB,OAAO;AAC5B,SAAO,eAAe,CAAC,MAAM,OAAO;AAClC,WAAO,iBAAiB,SAAS,MAAM,iCAAmC,EAAE;AAAA,EAC9E;AACA,SAAO,eAAe,OAAO,iBAAiB;AAChD;AANM;AACA;AAMN,IAAI,KAAK,aAAa;AAEtB,IAAI,aAAa;AACf,cAAY,MAAc;AAAA;AAAA,IAE1B;AAAA,EAAwB;AACxB,cAAY,IAAI,eAAe;AACjC;AAIe,SAAR,YAA6B;AAClC,KAAG;AACH,QAAM,WAAW,YAAY;AAC7B,SAAO,mDAAC,SAAI,WAAU,OAClB;AAAA,uDAAC,QAAG,WAAU,2BAA0B,oDAAxC;AAAA;AAAA;AAAA;AAAA,WAA8C;AAAA,IAE9C,mDAAC,SAAI,WAAU,gCACb;AAAA,yDAAC,QAAG,WAAU,8BAA6B,oDAA3C;AAAA;AAAA;AAAA;AAAA,aAAiD;AAAA,MACjD,mDAAC,SAAI,WAAU,+BACZ,eAAK,UAAU;AAAA,QAChB,UAAU,SAAS;AAAA,QACnB,QAAQ,SAAS;AAAA,QACjB,MAAM,SAAS;AAAA,QACf,KAAK,SAAS;AAAA,QACd,OAAO,SAAS;AAAA,MAClB,GAAG,MAAM,CAAC,KAPV;AAAA;AAAA;AAAA;AAAA,aAQA;AAAA,SAVF;AAAA;AAAA;AAAA;AAAA,WAWA;AAAA,IAEA,mDAAC,SAAI,WAAU,QACb;AAAA,yDAAC,QAAG,WAAU,8BAA6B,wCAA3C;AAAA;AAAA;AAAA;AAAA,aAA+C;AAAA,MAC/C,mDAAC,SAAI,WAAU,2BACb;AAAA,2DAAC,QAAK,IAAG,KAAI,WAAU,iCAAgC,gCAAvD;AAAA;AAAA;AAAA;AAAA,eAA6D;AAAA,QAC7D,mDAAC,QAAK,IAAG,UAAS,WAAU,iCAAgC,uDAA5D;AAAA;AAAA;AAAA;AAAA,eAA0E;AAAA,QAC1E,mDAAC,QAAK,IAAG,YAAW,WAAU,iCAAgC,yDAA9D;AAAA;AAAA;AAAA;AAAA,eAA8E;AAAA,QAC9E,mDAAC,OAAE,MAAK,UAAS,WAAU,kCAAiC,iDAA5D;AAAA;AAAA;AAAA;AAAA,eAAyE;AAAA,WAJ3E;AAAA;AAAA;AAAA;AAAA,aAKA;AAAA,SAPF;AAAA;AAAA;AAAA;AAAA,WAQA;AAAA,IAEA,mDAAC,SACC;AAAA,yDAAC,QAAG,WAAU,8BAA6B,wCAA3C;AAAA;AAAA;AAAA;AAAA,aAA+C;AAAA,MAC/C,mDAAC,YAAO,SAAS,MAAM;AACvB,eAAO,SAAS,OAAO;AAAA,MACzB,GAAG,WAAU,mEAAkE,qDAF7E;AAAA;AAAA;AAAA;AAAA,aAIA;AAAA,MAEA,mDAAC,YAAO,SAAS,MAAM;AACvB,eAAO,QAAQ,UAAU,CAAC,GAAG,IAAI,QAAQ;AACzC,eAAO,cAAc,IAAI,cAAc,UAAU,CAAC;AAAA,MACpD,GAAG,WAAU,gEAA+D,gEAH1E;AAAA;AAAA;AAAA;AAAA,aAKA;AAAA,SAbF;AAAA;AAAA;AAAA;AAAA,WAcA;AAAA,OAxCG;AAAA;AAAA;AAAA;AAAA,SAyCL;AACJ;AACA,GAAG,WAAW,gCAAgC,OAAO,WAAY;AAC/D,SAAO,CAAC,WAAW;AACrB,CAAC;AACD,KAAK;AACL,IAAI;AACJ,aAAa,IAAI,WAAW;AAE5B,OAAO,eAAe;AACtB,OAAO,eAAe;",
"names": []
}
@@ -0,0 +1,12 @@
import {
__commonJS
} from "/build/_shared/chunk-PNG5AS42.js";
// browser-route-module:routes/reviewDocuments.tsx?browser
var require_reviewDocuments = __commonJS({
"browser-route-module:routes/reviewDocuments.tsx?browser"(exports, module) {
module.exports = {};
}
});
export default require_reviewDocuments();
//# sourceMappingURL=/build/routes/reviewDocuments-R5UCIMGP.js.map
@@ -0,0 +1,7 @@
{
"version": 3,
"sources": ["browser-route-module:routes/reviewDocuments.tsx?browser"],
"sourcesContent": ["module.exports = {};"],
"mappings": ";;;;;AAAA;AAAA;AAAA,WAAO,UAAU,CAAC;AAAA;AAAA;",
"names": []
}
@@ -0,0 +1,66 @@
import {
require_jsx_dev_runtime
} from "/build/_shared/chunk-XGOTYLZ5.js";
import {
Outlet
} from "/build/_shared/chunk-RG2SZ2V3.js";
import {
createHotContext
} from "/build/_shared/chunk-73ZPIOGA.js";
import "/build/_shared/chunk-UWV35TSL.js";
import "/build/_shared/chunk-U4FRFQSK.js";
import "/build/_shared/chunk-7M6SC7J5.js";
import {
__toESM
} from "/build/_shared/chunk-PNG5AS42.js";
// app/routes/rule-groups.tsx
var import_jsx_dev_runtime = __toESM(require_jsx_dev_runtime(), 1);
if (!window.$RefreshReg$ || !window.$RefreshSig$ || !window.$RefreshRuntime$) {
console.warn("remix:hmr: React Fast Refresh only works when the Remix compiler is running in development mode.");
} else {
prevRefreshReg = window.$RefreshReg$;
prevRefreshSig = window.$RefreshSig$;
window.$RefreshReg$ = (type, id) => {
window.$RefreshRuntime$.register(type, '"app\\\\routes\\\\rule-groups.tsx"' + id);
};
window.$RefreshSig$ = window.$RefreshRuntime$.createSignatureFunctionForTransform;
}
var prevRefreshReg;
var prevRefreshSig;
if (import.meta) {
import.meta.hot = createHotContext(
//@ts-expect-error
"app\\routes\\rule-groups.tsx"
);
}
var links = () => [{
rel: "stylesheet",
href: "/rule-groups.css"
}];
var meta = () => {
return [{
title: "\u4E2D\u56FD\u70DF\u8349AI\u5408\u540C\u53CA\u5377\u5B97\u5BA1\u6838\u7CFB\u7EDF - \u8BC4\u67E5\u70B9\u5206\u7EC4\u7BA1\u7406"
}, {
name: "description",
content: "\u8BC4\u67E5\u70B9\u5206\u7EC4\u7BA1\u7406\u9875\u9762"
}];
};
function RuleGroupsLayout() {
return /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(Outlet, {}, void 0, false, {
fileName: "app/routes/rule-groups.tsx",
lineNumber: 38,
columnNumber: 10
}, this);
}
_c = RuleGroupsLayout;
var _c;
$RefreshReg$(_c, "RuleGroupsLayout");
window.$RefreshReg$ = prevRefreshReg;
window.$RefreshSig$ = prevRefreshSig;
export {
RuleGroupsLayout as default,
links,
meta
};
//# sourceMappingURL=/build/routes/rule-groups-K4C5DVTA.js.map
@@ -0,0 +1,7 @@
{
"version": 3,
"sources": ["../../../app/routes/rule-groups.tsx"],
"sourcesContent": ["// REMIX HMR BEGIN\nif (!window.$RefreshReg$ || !window.$RefreshSig$ || !window.$RefreshRuntime$) {\n console.warn('remix:hmr: React Fast Refresh only works when the Remix compiler is running in development mode.');\n} else {\n var prevRefreshReg = window.$RefreshReg$;\n var prevRefreshSig = window.$RefreshSig$;\n window.$RefreshReg$ = (type, id) => {\n window.$RefreshRuntime$.register(type, \"\\\"app\\\\\\\\routes\\\\\\\\rule-groups.tsx\\\"\" + id);\n }\n window.$RefreshSig$ = window.$RefreshRuntime$.createSignatureFunctionForTransform;\n}\nimport * as __hmr__ from \"remix:hmr\";\nif (import.meta) {\n import.meta.hot = __hmr__.createHotContext(\n //@ts-expect-error\n \"app\\\\routes\\\\rule-groups.tsx\");\n}\n// REMIX HMR END\n\nimport { Outlet } from \"@remix-run/react\";\nexport const links = () => [{\n rel: \"stylesheet\",\n href: \"/rule-groups.css\"\n}];\nexport const meta = () => {\n return [{\n title: \"\u4E2D\u56FD\u70DF\u8349AI\u5408\u540C\u53CA\u5377\u5B97\u5BA1\u6838\u7CFB\u7EDF - \u8BC4\u67E5\u70B9\u5206\u7EC4\u7BA1\u7406\"\n }, {\n name: \"description\",\n content: \"\u8BC4\u67E5\u70B9\u5206\u7EC4\u7BA1\u7406\u9875\u9762\"\n }];\n};\n\n/**\r\n * \u8BC4\u67E5\u70B9\u5206\u7EC4\u7BA1\u7406\u8DEF\u7531\u5E03\u5C40\r\n */\nexport default function RuleGroupsLayout() {\n return <Outlet />;\n}\n_c = RuleGroupsLayout;\nvar _c;\n$RefreshReg$(_c, \"RuleGroupsLayout\");\n\nwindow.$RefreshReg$ = prevRefreshReg;\nwindow.$RefreshSig$ = prevRefreshSig;"],
"mappings": ";;;;;;;;;;;;;;;;;AAqCS;AApCT,IAAI,CAAC,OAAO,gBAAgB,CAAC,OAAO,gBAAgB,CAAC,OAAO,kBAAkB;AAC5E,UAAQ,KAAK,kGAAkG;AACjH,OAAO;AACD,mBAAiB,OAAO;AACxB,mBAAiB,OAAO;AAC5B,SAAO,eAAe,CAAC,MAAM,OAAO;AAClC,WAAO,iBAAiB,SAAS,MAAM,uCAAyC,EAAE;AAAA,EACpF;AACA,SAAO,eAAe,OAAO,iBAAiB;AAChD;AANM;AACA;AAON,IAAI,aAAa;AACf,cAAY,MAAc;AAAA;AAAA,IAE1B;AAAA,EAA8B;AAChC;AAIO,IAAM,QAAQ,MAAM,CAAC;AAAA,EAC1B,KAAK;AAAA,EACL,MAAM;AACR,CAAC;AACM,IAAM,OAAO,MAAM;AACxB,SAAO,CAAC;AAAA,IACN,OAAO;AAAA,EACT,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,CAAC;AACH;AAKe,SAAR,mBAAoC;AACzC,SAAO,mDAAC,YAAD;AAAA;AAAA;AAAA;AAAA,SAAQ;AACjB;AACA,KAAK;AACL,IAAI;AACJ,aAAa,IAAI,kBAAkB;AAEnC,OAAO,eAAe;AACtB,OAAO,eAAe;",
"names": []
}
@@ -0,0 +1,524 @@
import {
require_node
} from "/build/_shared/chunk-G7CHZRZX.js";
import {
Button
} from "/build/_shared/chunk-OGUYUMUT.js";
import {
require_jsx_dev_runtime
} from "/build/_shared/chunk-XGOTYLZ5.js";
import {
Link,
useLoaderData,
useNavigate
} from "/build/_shared/chunk-RG2SZ2V3.js";
import {
createHotContext
} from "/build/_shared/chunk-73ZPIOGA.js";
import "/build/_shared/chunk-UWV35TSL.js";
import "/build/_shared/chunk-U4FRFQSK.js";
import {
require_react
} from "/build/_shared/chunk-7M6SC7J5.js";
import {
__toESM
} from "/build/_shared/chunk-PNG5AS42.js";
// app/routes/rule-groups._index.tsx
var import_react = __toESM(require_react(), 1);
var import_node = __toESM(require_node(), 1);
var import_jsx_dev_runtime = __toESM(require_jsx_dev_runtime(), 1);
if (!window.$RefreshReg$ || !window.$RefreshSig$ || !window.$RefreshRuntime$) {
console.warn("remix:hmr: React Fast Refresh only works when the Remix compiler is running in development mode.");
} else {
prevRefreshReg = window.$RefreshReg$;
prevRefreshSig = window.$RefreshSig$;
window.$RefreshReg$ = (type, id) => {
window.$RefreshRuntime$.register(type, '"app\\\\routes\\\\rule-groups._index.tsx"' + id);
};
window.$RefreshSig$ = window.$RefreshRuntime$.createSignatureFunctionForTransform;
}
var prevRefreshReg;
var prevRefreshSig;
var _s = $RefreshSig$();
if (import.meta) {
import.meta.hot = createHotContext(
//@ts-expect-error
"app\\routes\\rule-groups._index.tsx"
);
}
var meta = () => {
return [{
title: "\u4E2D\u56FD\u70DF\u8349AI\u5408\u540C\u53CA\u5377\u5B97\u5BA1\u6838\u7CFB\u7EDF - \u8BC4\u67E5\u70B9\u5206\u7EC4\u5217\u8868"
}, {
name: "description",
content: "\u8BC4\u67E5\u70B9\u5206\u7EC4\u7BA1\u7406"
}];
};
function RuleGroupsPage() {
_s();
const {
groups
} = useLoaderData();
const navigate = useNavigate();
const parentGroups = groups.filter((group) => group.parentId === null);
const getChildGroups = (parentId) => {
return groups.filter((group) => group.parentId === parentId);
};
const handleDelete = (id) => {
if (window.confirm("\u786E\u5B9A\u8981\u5220\u9664\u8BE5\u5206\u7EC4\u5417\uFF1F\u5220\u9664\u540E\u65E0\u6CD5\u6062\u590D\uFF0C\u4E14\u4F1A\u5220\u9664\u8BE5\u5206\u7EC4\u4E0B\u7684\u6240\u6709\u8BC4\u67E5\u70B9\u3002")) {
alert(`\u5220\u9664\u5206\u7EC4: ${id}`);
}
};
const handleCreate = () => {
navigate("/rule-groups/new");
};
const toggleExpand = (groupId) => {
const childRows = document.querySelectorAll(`.child-of-${groupId}`);
childRows.forEach((row) => {
row.style.display = row.style.display === "none" ? "table-row" : "none";
});
const icon = document.querySelector(`span.expand-icon[data-group-id="${groupId}"] i`);
if (icon) {
icon.classList.toggle("ri-arrow-down-s-line");
icon.classList.toggle("ri-arrow-right-s-line");
}
};
const handleKeyDown = (e, groupId) => {
if (e.key === "Enter" || e.key === " ") {
e.preventDefault();
toggleExpand(groupId);
}
};
return /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", { className: "p-6", children: [
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", { className: "mb-4 p-3 bg-blue-100 border border-blue-300 rounded text-blue-800", children: [
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("h3", { className: "font-bold text-lg", children: "\u5F53\u524D\u9875\u9762: \u8BC4\u67E5\u70B9\u5206\u7EC4\u5217\u8868 (rule-groups._index.tsx)" }, void 0, false, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 184,
columnNumber: 9
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("p", { children: "\u5982\u679C\u4F60\u770B\u5230\u8FD9\u4E2A\u63D0\u793A\uFF0C\u8BF4\u660E\u4F60\u5DF2\u6210\u529F\u5230\u8FBE\u8BC4\u67E5\u70B9\u5206\u7EC4\u5217\u8868\u9875\u9762\u3002" }, void 0, false, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 185,
columnNumber: 9
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", { className: "mt-2", children: [
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("a", { href: "/debug", className: "text-blue-600 hover:underline", children: "\u67E5\u770B\u8DEF\u7531\u8BCA\u65AD\u9875\u9762" }, void 0, false, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 187,
columnNumber: 11
}, this),
" |",
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("a", { href: "/", className: "ml-2 text-blue-600 hover:underline", children: "\u8FD4\u56DE\u9996\u9875" }, void 0, false, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 188,
columnNumber: 11
}, this)
] }, void 0, true, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 186,
columnNumber: 9
}, this)
] }, void 0, true, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 183,
columnNumber: 7
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", { className: "flex justify-between items-center mb-4", children: [
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("h2", { className: "text-xl font-medium", children: "\u8BC4\u67E5\u70B9\u5206\u7EC4\u7BA1\u7406" }, void 0, false, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 194,
columnNumber: 9
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", { className: "flex", children: [
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(Button, { type: "default", className: "mr-2", icon: "ri-arrow-down-s-line", onClick: () => document.querySelectorAll(".child-row").forEach((row) => row.style.display = "table-row"), children: "\u5C55\u5F00\u5168\u90E8" }, void 0, false, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 196,
columnNumber: 11
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(Button, { type: "default", className: "mr-2", icon: "ri-arrow-up-s-line", onClick: () => document.querySelectorAll(".child-row").forEach((row) => row.style.display = "none"), children: "\u6536\u8D77\u5168\u90E8" }, void 0, false, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 199,
columnNumber: 11
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(Button, { type: "primary", icon: "ri-add-line", onClick: handleCreate, children: "\u65B0\u589E\u5206\u7EC4" }, void 0, false, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 202,
columnNumber: 11
}, this)
] }, void 0, true, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 195,
columnNumber: 9
}, this)
] }, void 0, true, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 193,
columnNumber: 7
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", { className: "card mb-4", children: /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", { className: "card-body", children: /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", { className: "flex flex-wrap items-end gap-4", children: [
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", { className: "flex-1 min-w-[200px]", children: [
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("label", { htmlFor: "groupName", className: "form-label", children: "\u5206\u7EC4\u540D\u79F0" }, void 0, false, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 213,
columnNumber: 15
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("input", { type: "text", id: "groupName", className: "form-input", placeholder: "\u8BF7\u8F93\u5165\u5206\u7EC4\u540D\u79F0" }, void 0, false, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 214,
columnNumber: 15
}, this)
] }, void 0, true, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 212,
columnNumber: 13
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", { className: "flex-1 min-w-[200px]", children: [
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("label", { htmlFor: "groupCode", className: "form-label", children: "\u5206\u7EC4\u7F16\u7801" }, void 0, false, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 217,
columnNumber: 15
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("input", { type: "text", id: "groupCode", className: "form-input", placeholder: "\u8BF7\u8F93\u5165\u5206\u7EC4\u7F16\u7801" }, void 0, false, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 218,
columnNumber: 15
}, this)
] }, void 0, true, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 216,
columnNumber: 13
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", { className: "flex-1 min-w-[200px]", children: [
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("label", { htmlFor: "groupStatus", className: "form-label", children: "\u72B6\u6001" }, void 0, false, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 221,
columnNumber: 15
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("select", { id: "groupStatus", className: "form-select", children: [
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("option", { value: "", children: "\u5168\u90E8" }, void 0, false, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 223,
columnNumber: 17
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("option", { value: "true", children: "\u542F\u7528" }, void 0, false, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 224,
columnNumber: 17
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("option", { value: "false", children: "\u7981\u7528" }, void 0, false, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 225,
columnNumber: 17
}, this)
] }, void 0, true, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 222,
columnNumber: 15
}, this)
] }, void 0, true, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 220,
columnNumber: 13
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", { className: "flex items-center", children: [
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(Button, { type: "default", className: "mr-2", icon: "ri-refresh-line", children: "\u91CD\u7F6E" }, void 0, false, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 229,
columnNumber: 15
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(Button, { type: "primary", icon: "ri-search-line", children: "\u641C\u7D22" }, void 0, false, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 232,
columnNumber: 15
}, this)
] }, void 0, true, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 228,
columnNumber: 13
}, this)
] }, void 0, true, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 211,
columnNumber: 11
}, this) }, void 0, false, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 210,
columnNumber: 9
}, this) }, void 0, false, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 209,
columnNumber: 7
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", { className: "card", children: /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", { className: "card-body", children: /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", { className: "overflow-x-auto", children: /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("table", { className: "table tree-table", children: [
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("thead", { children: /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("tr", { children: [
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("th", { style: {
width: "400px"
}, children: "\u5206\u7EC4\u540D\u79F0" }, void 0, false, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 247,
columnNumber: 19
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("th", { children: "\u5206\u7EC4\u7F16\u7801" }, void 0, false, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 250,
columnNumber: 19
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("th", { children: "\u8BC4\u67E5\u70B9\u6570\u91CF" }, void 0, false, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 251,
columnNumber: 19
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("th", { children: "\u72B6\u6001" }, void 0, false, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 252,
columnNumber: 19
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("th", { children: "\u521B\u5EFA\u65F6\u95F4" }, void 0, false, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 253,
columnNumber: 19
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("th", { style: {
width: "180px"
}, children: "\u64CD\u4F5C" }, void 0, false, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 254,
columnNumber: 19
}, this)
] }, void 0, true, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 246,
columnNumber: 17
}, this) }, void 0, false, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 245,
columnNumber: 15
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("tbody", { children: parentGroups.map((parent) => /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(import_react.default.Fragment, { children: [
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("tr", { className: "group-row parent-row", "data-group-id": parent.id, children: [
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("td", { children: /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", { className: "flex items-center", children: [
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("span", { className: "expand-icon", "data-group-id": parent.id, onClick: () => toggleExpand(parent.id), onKeyDown: (e) => handleKeyDown(e, parent.id), role: "button", tabIndex: 0, "aria-label": "\u5C55\u5F00/\u6536\u8D77", children: /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("i", { className: "ri-arrow-down-s-line text-primary" }, void 0, false, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 267,
columnNumber: 29
}, this) }, void 0, false, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 265,
columnNumber: 27
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(Link, { to: `/rules?groupId=${parent.id}`, className: "text-primary hover:underline flex items-center ml-1", children: [
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("i", { className: "ri-folder-line mr-1" }, void 0, false, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 271,
columnNumber: 29
}, this),
" ",
parent.name
] }, void 0, true, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 269,
columnNumber: 27
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("span", { className: "group-badge parent-badge", children: "\u4E00\u7EA7\u5206\u7EC4" }, void 0, false, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 273,
columnNumber: 27
}, this)
] }, void 0, true, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 264,
columnNumber: 25
}, this) }, void 0, false, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 263,
columnNumber: 23
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("td", { children: parent.code }, void 0, false, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 276,
columnNumber: 23
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("td", { children: [
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(Link, { to: `/rules?groupId=${parent.id}`, className: "badge bg-primary text-white", children: parent.ruleCount }, void 0, false, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 278,
columnNumber: 25
}, this),
parent.childGroupCount > 0 && /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("span", { className: "text-secondary text-sm ml-1", children: [
"| \u5B50\u5206\u7EC4: ",
parent.childGroupCount
] }, void 0, true, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 281,
columnNumber: 56
}, this)
] }, void 0, true, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 277,
columnNumber: 23
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("td", { children: [
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("span", { className: `status-dot ${parent.isActive ? "status-success" : "status-error"}` }, void 0, false, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 286,
columnNumber: 25
}, this),
parent.isActive ? "\u542F\u7528" : "\u7981\u7528"
] }, void 0, true, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 285,
columnNumber: 23
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("td", { children: parent.createdAt }, void 0, false, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 289,
columnNumber: 23
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("td", { className: "py-3 px-2 text-center", children: [
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(Button, { type: "default", size: "small", className: "text-primary mr-2", icon: "ri-edit-line", onClick: () => navigate(`/rule-groups/${parent.id}/edit`), children: "\u7F16\u8F91" }, void 0, false, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 291,
columnNumber: 25
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(Button, { type: "danger", size: "small", icon: "ri-delete-bin-line", onClick: () => handleDelete(parent.id), children: "\u5220\u9664" }, void 0, false, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 295,
columnNumber: 25
}, this)
] }, void 0, true, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 290,
columnNumber: 23
}, this)
] }, void 0, true, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 262,
columnNumber: 21
}, this),
getChildGroups(parent.id).map((child) => /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("tr", { className: `group-row child-row child-of-${parent.id}`, "data-parent-id": parent.id, "data-group-id": child.id, children: [
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("td", { children: /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("div", { className: "flex items-center ml-8", children: [
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(Link, { to: `/rules?groupId=${child.id}`, className: "text-primary hover:underline flex items-center", children: [
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("i", { className: "ri-file-list-line mr-1" }, void 0, false, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 309,
columnNumber: 31
}, this),
" ",
child.name
] }, void 0, true, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 307,
columnNumber: 29
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("span", { className: "group-badge child-badge", children: "\u4E8C\u7EA7\u5206\u7EC4" }, void 0, false, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 311,
columnNumber: 29
}, this)
] }, void 0, true, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 306,
columnNumber: 27
}, this) }, void 0, false, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 305,
columnNumber: 25
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("td", { children: child.code }, void 0, false, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 314,
columnNumber: 25
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("td", { children: /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(Link, { to: `/rules?groupId=${child.id}`, className: "badge bg-primary text-white", children: child.ruleCount }, void 0, false, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 316,
columnNumber: 27
}, this) }, void 0, false, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 315,
columnNumber: 25
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("td", { children: [
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("span", { className: `status-dot ${child.isActive ? "status-success" : "status-error"}` }, void 0, false, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 321,
columnNumber: 27
}, this),
child.isActive ? "\u542F\u7528" : "\u7981\u7528"
] }, void 0, true, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 320,
columnNumber: 25
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("td", { children: child.createdAt }, void 0, false, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 324,
columnNumber: 25
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("td", { className: "py-3 px-2 text-center", children: [
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(Button, { type: "default", size: "small", className: "text-primary mr-2", icon: "ri-edit-line", onClick: () => navigate(`/rule-groups/${child.id}/edit`), children: "\u7F16\u8F91" }, void 0, false, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 326,
columnNumber: 27
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(Button, { type: "danger", size: "small", icon: "ri-delete-bin-line", onClick: () => handleDelete(child.id), children: "\u5220\u9664" }, void 0, false, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 330,
columnNumber: 27
}, this)
] }, void 0, true, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 325,
columnNumber: 25
}, this)
] }, child.id, true, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 303,
columnNumber: 61
}, this))
] }, parent.id, true, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 260,
columnNumber: 45
}, this)) }, void 0, false, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 259,
columnNumber: 15
}, this)
] }, void 0, true, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 244,
columnNumber: 13
}, this) }, void 0, false, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 243,
columnNumber: 11
}, this) }, void 0, false, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 242,
columnNumber: 9
}, this) }, void 0, false, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 241,
columnNumber: 7
}, this)
] }, void 0, true, {
fileName: "app/routes/rule-groups._index.tsx",
lineNumber: 181,
columnNumber: 10
}, this);
}
_s(RuleGroupsPage, "wBR/OBT3qPYjsH+gsITYCpVlwRM=", false, function() {
return [useLoaderData, useNavigate];
});
_c = RuleGroupsPage;
var _c;
$RefreshReg$(_c, "RuleGroupsPage");
window.$RefreshReg$ = prevRefreshReg;
window.$RefreshSig$ = prevRefreshSig;
export {
RuleGroupsPage as default,
meta
};
//# sourceMappingURL=/build/routes/rule-groups._index-YBPE5YGR.js.map
File diff suppressed because one or more lines are too long
+66
View File
@@ -0,0 +1,66 @@
import {
require_jsx_dev_runtime
} from "/build/_shared/chunk-XGOTYLZ5.js";
import {
Outlet
} from "/build/_shared/chunk-RG2SZ2V3.js";
import {
createHotContext
} from "/build/_shared/chunk-73ZPIOGA.js";
import "/build/_shared/chunk-UWV35TSL.js";
import "/build/_shared/chunk-U4FRFQSK.js";
import "/build/_shared/chunk-7M6SC7J5.js";
import {
__toESM
} from "/build/_shared/chunk-PNG5AS42.js";
// app/routes/rules.tsx
var import_jsx_dev_runtime = __toESM(require_jsx_dev_runtime(), 1);
if (!window.$RefreshReg$ || !window.$RefreshSig$ || !window.$RefreshRuntime$) {
console.warn("remix:hmr: React Fast Refresh only works when the Remix compiler is running in development mode.");
} else {
prevRefreshReg = window.$RefreshReg$;
prevRefreshSig = window.$RefreshSig$;
window.$RefreshReg$ = (type, id) => {
window.$RefreshRuntime$.register(type, '"app\\\\routes\\\\rules.tsx"' + id);
};
window.$RefreshSig$ = window.$RefreshRuntime$.createSignatureFunctionForTransform;
}
var prevRefreshReg;
var prevRefreshSig;
if (import.meta) {
import.meta.hot = createHotContext(
//@ts-expect-error
"app\\routes\\rules.tsx"
);
import.meta.hot.lastModified = "1742898566412.8044";
}
var meta = () => {
return [{
title: "\u4E2D\u56FD\u70DF\u8349AI\u5408\u540C\u53CA\u5377\u5B97\u5BA1\u6838\u7CFB\u7EDF - \u89C4\u5219\u7BA1\u7406"
}, {
name: "description",
content: "\u89C4\u5219\u7BA1\u7406\u9875\u9762"
}];
};
function RulesLayout() {
return /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(import_jsx_dev_runtime.Fragment, { children: /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(Outlet, {}, void 0, false, {
fileName: "app/routes/rules.tsx",
lineNumber: 36,
columnNumber: 7
}, this) }, void 0, false, {
fileName: "app/routes/rules.tsx",
lineNumber: 35,
columnNumber: 10
}, this);
}
_c = RulesLayout;
var _c;
$RefreshReg$(_c, "RulesLayout");
window.$RefreshReg$ = prevRefreshReg;
window.$RefreshSig$ = prevRefreshSig;
export {
RulesLayout as default,
meta
};
//# sourceMappingURL=/build/routes/rules-TJGY2623.js.map
@@ -0,0 +1,7 @@
{
"version": 3,
"sources": ["../../../app/routes/rules.tsx"],
"sourcesContent": ["// REMIX HMR BEGIN\nif (!window.$RefreshReg$ || !window.$RefreshSig$ || !window.$RefreshRuntime$) {\n console.warn('remix:hmr: React Fast Refresh only works when the Remix compiler is running in development mode.');\n} else {\n var prevRefreshReg = window.$RefreshReg$;\n var prevRefreshSig = window.$RefreshSig$;\n window.$RefreshReg$ = (type, id) => {\n window.$RefreshRuntime$.register(type, \"\\\"app\\\\\\\\routes\\\\\\\\rules.tsx\\\"\" + id);\n }\n window.$RefreshSig$ = window.$RefreshRuntime$.createSignatureFunctionForTransform;\n}\nimport * as __hmr__ from \"remix:hmr\";\nif (import.meta) {\n import.meta.hot = __hmr__.createHotContext(\n //@ts-expect-error\n \"app\\\\routes\\\\rules.tsx\");\n import.meta.hot.lastModified = \"1742898566412.8044\";\n}\n// REMIX HMR END\n\nimport { Outlet } from \"@remix-run/react\";\nexport const meta = () => {\n return [{\n title: \"\u4E2D\u56FD\u70DF\u8349AI\u5408\u540C\u53CA\u5377\u5B97\u5BA1\u6838\u7CFB\u7EDF - \u89C4\u5219\u7BA1\u7406\"\n }, {\n name: \"description\",\n content: \"\u89C4\u5219\u7BA1\u7406\u9875\u9762\"\n }];\n};\n\n/**\r\n * \u89C4\u5219\u7BA1\u7406\u8DEF\u7531\u5E03\u5C40\r\n */\nexport default function RulesLayout() {\n return <>\r\n <Outlet />\r\n </>;\n}\n_c = RulesLayout;\nvar _c;\n$RefreshReg$(_c, \"RulesLayout\");\n\nwindow.$RefreshReg$ = prevRefreshReg;\nwindow.$RefreshSig$ = prevRefreshSig;"],
"mappings": ";;;;;;;;;;;;;;;;;AAkCS;AAjCT,IAAI,CAAC,OAAO,gBAAgB,CAAC,OAAO,gBAAgB,CAAC,OAAO,kBAAkB;AAC5E,UAAQ,KAAK,kGAAkG;AACjH,OAAO;AACD,mBAAiB,OAAO;AACxB,mBAAiB,OAAO;AAC5B,SAAO,eAAe,CAAC,MAAM,OAAO;AAClC,WAAO,iBAAiB,SAAS,MAAM,iCAAmC,EAAE;AAAA,EAC9E;AACA,SAAO,eAAe,OAAO,iBAAiB;AAChD;AANM;AACA;AAON,IAAI,aAAa;AACf,cAAY,MAAc;AAAA;AAAA,IAE1B;AAAA,EAAwB;AACxB,cAAY,IAAI,eAAe;AACjC;AAIO,IAAM,OAAO,MAAM;AACxB,SAAO,CAAC;AAAA,IACN,OAAO;AAAA,EACT,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,CAAC;AACH;AAKe,SAAR,cAA+B;AACpC,SAAO,sFACH,6DAAC,YAAD;AAAA;AAAA;AAAA;AAAA,SAAQ,KADL;AAAA;AAAA;AAAA;AAAA,SAEL;AACJ;AACA,KAAK;AACL,IAAI;AACJ,aAAa,IAAI,aAAa;AAE9B,OAAO,eAAe;AACtB,OAAO,eAAe;",
"names": []
}
@@ -0,0 +1,556 @@
import {
require_node
} from "/build/_shared/chunk-G7CHZRZX.js";
import {
Card
} from "/build/_shared/chunk-QMPAUNNA.js";
import {
Button
} from "/build/_shared/chunk-OGUYUMUT.js";
import {
require_jsx_dev_runtime
} from "/build/_shared/chunk-XGOTYLZ5.js";
import {
useLoaderData,
useSearchParams
} from "/build/_shared/chunk-RG2SZ2V3.js";
import {
createHotContext
} from "/build/_shared/chunk-73ZPIOGA.js";
import "/build/_shared/chunk-UWV35TSL.js";
import "/build/_shared/chunk-U4FRFQSK.js";
import "/build/_shared/chunk-7M6SC7J5.js";
import {
__toESM
} from "/build/_shared/chunk-PNG5AS42.js";
// app/routes/rules._index.tsx
var import_node = __toESM(require_node(), 1);
// app/components/ui/Tag.tsx
var import_jsx_dev_runtime = __toESM(require_jsx_dev_runtime(), 1);
if (!window.$RefreshReg$ || !window.$RefreshSig$ || !window.$RefreshRuntime$) {
console.warn("remix:hmr: React Fast Refresh only works when the Remix compiler is running in development mode.");
} else {
prevRefreshReg = window.$RefreshReg$;
prevRefreshSig = window.$RefreshSig$;
window.$RefreshReg$ = (type, id) => {
window.$RefreshRuntime$.register(type, '"app\\\\components\\\\ui\\\\Tag.tsx"' + id);
};
window.$RefreshSig$ = window.$RefreshRuntime$.createSignatureFunctionForTransform;
}
var prevRefreshReg;
var prevRefreshSig;
if (import.meta) {
import.meta.hot = createHotContext(
//@ts-expect-error
"app\\components\\ui\\Tag.tsx"
);
import.meta.hot.lastModified = "1742897479114.837";
}
function Tag({
children,
color = "default",
closable = false,
onClose,
className = ""
}) {
const baseClasses = "ant-tag";
const colorClasses = {
default: "",
blue: "ant-tag-blue",
green: "ant-tag-green",
cyan: "ant-tag-cyan",
purple: "ant-tag-purple",
orange: "ant-tag-orange",
red: "ant-tag-red"
};
const classes = [baseClasses, colorClasses[color], className].filter(Boolean).join(" ");
const handleKeyDown = (e) => {
if (e.key === "Enter" || e.key === " ") {
e.preventDefault();
onClose?.(e);
}
};
return /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("span", { className: classes, children: [
children,
closable && /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("i", { className: "ri-close-line ml-1 cursor-pointer text-opacity-60 hover:text-opacity-100", onClick: onClose, onKeyDown: handleKeyDown, role: "button", tabIndex: 0, "aria-label": "\u5173\u95ED\u6807\u7B7E" }, void 0, false, {
fileName: "app/components/ui/Tag.tsx",
lineNumber: 48,
columnNumber: 20
}, this)
] }, void 0, true, {
fileName: "app/components/ui/Tag.tsx",
lineNumber: 46,
columnNumber: 10
}, this);
}
_c = Tag;
var _c;
$RefreshReg$(_c, "Tag");
window.$RefreshReg$ = prevRefreshReg;
window.$RefreshSig$ = prevRefreshSig;
// app/models/rule.ts
if (import.meta) {
import.meta.hot = createHotContext(
//@ts-expect-error
"app\\models\\rule.ts"
);
import.meta.hot.lastModified = "1742887964090.251";
}
var RULE_TYPE_LABELS = {
essential: "\u57FA\u672C\u8981\u7D20\u7C7B",
content: "\u5185\u5BB9\u5408\u89C4\u7C7B",
format: "\u683C\u5F0F\u89C4\u8303\u7C7B",
legal: "\u6CD5\u5F8B\u98CE\u9669\u7C7B",
business: "\u4E1A\u52A1\u4E13\u9879\u7C7B"
};
var RULE_TYPE_COLORS = {
essential: "blue",
content: "purple",
format: "green",
legal: "cyan",
business: "orange"
};
var RULE_PRIORITY_LABELS = {
high: "\u9AD8",
medium: "\u4E2D",
low: "\u4F4E"
};
var RULE_PRIORITY_COLORS = {
high: "red",
medium: "orange",
low: "green"
};
// app/routes/rules._index.tsx
var import_jsx_dev_runtime2 = __toESM(require_jsx_dev_runtime(), 1);
if (!window.$RefreshReg$ || !window.$RefreshSig$ || !window.$RefreshRuntime$) {
console.warn("remix:hmr: React Fast Refresh only works when the Remix compiler is running in development mode.");
} else {
prevRefreshReg = window.$RefreshReg$;
prevRefreshSig = window.$RefreshSig$;
window.$RefreshReg$ = (type, id) => {
window.$RefreshRuntime$.register(type, '"app\\\\routes\\\\rules._index.tsx"' + id);
};
window.$RefreshSig$ = window.$RefreshRuntime$.createSignatureFunctionForTransform;
}
var prevRefreshReg;
var prevRefreshSig;
var _s = $RefreshSig$();
if (import.meta) {
import.meta.hot = createHotContext(
//@ts-expect-error
"app\\routes\\rules._index.tsx"
);
}
var links = () => [{
rel: "stylesheet",
href: "/rules_index.css"
}];
var meta = () => {
return [{
title: "\u4E2D\u56FD\u70DF\u8349AI\u5408\u540C\u53CA\u5377\u5B97\u5BA1\u6838\u7CFB\u7EDF - \u8BC4\u67E5\u70B9\u5217\u8868"
}, {
name: "description",
content: "\u8BC4\u67E5\u70B9\u7BA1\u7406\u5217\u8868"
}];
};
function RulesList() {
_s();
const {
rules,
groups
} = useLoaderData();
const [searchParams, setSearchParams] = useSearchParams();
const handleFilterChange = (e) => {
const {
name,
value
} = e.target;
const newParams = new URLSearchParams(searchParams);
if (value) {
newParams.set(name, value);
} else {
newParams.delete(name);
}
setSearchParams(newParams);
};
const handleSearch = (e) => {
e.preventDefault();
const formData = new FormData(e.target);
const keyword = formData.get("keyword");
const newParams = new URLSearchParams(searchParams);
if (keyword) {
newParams.set("keyword", keyword);
} else {
newParams.delete("keyword");
}
setSearchParams(newParams);
};
const handleCopy = (rule) => {
alert(`\u590D\u5236\u89C4\u5219: ${rule.name}`);
};
const handleDelete = (rule) => {
if (window.confirm(`\u786E\u5B9A\u8981\u5220\u9664\u8BC4\u67E5\u70B9"${rule.name}"\u5417\uFF1F`)) {
alert(`\u5220\u9664\u89C4\u5219: ${rule.name}`);
}
};
return /* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("div", { className: "p-6", children: [
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("div", { className: "mb-4 p-3 bg-blue-100 border border-blue-300 rounded text-blue-800", children: [
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("h3", { className: "font-bold text-lg", children: "\u5F53\u524D\u9875\u9762: \u8BC4\u67E5\u70B9\u5217\u8868 (rules._index.tsx)" }, void 0, false, {
fileName: "app/routes/rules._index.tsx",
lineNumber: 205,
columnNumber: 9
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("p", { children: "\u5982\u679C\u4F60\u770B\u5230\u8FD9\u4E2A\u63D0\u793A\uFF0C\u8BF4\u660E\u4F60\u5DF2\u6210\u529F\u5230\u8FBE\u8BC4\u67E5\u70B9\u5217\u8868\u9875\u9762\u3002" }, void 0, false, {
fileName: "app/routes/rules._index.tsx",
lineNumber: 206,
columnNumber: 9
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("div", { className: "mt-2", children: [
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("a", { href: "/debug", className: "text-blue-600 hover:underline", children: "\u67E5\u770B\u8DEF\u7531\u8BCA\u65AD\u9875\u9762" }, void 0, false, {
fileName: "app/routes/rules._index.tsx",
lineNumber: 208,
columnNumber: 11
}, this),
" |",
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("a", { href: "/", className: "ml-2 text-blue-600 hover:underline", children: "\u8FD4\u56DE\u9996\u9875" }, void 0, false, {
fileName: "app/routes/rules._index.tsx",
lineNumber: 209,
columnNumber: 11
}, this)
] }, void 0, true, {
fileName: "app/routes/rules._index.tsx",
lineNumber: 207,
columnNumber: 9
}, this)
] }, void 0, true, {
fileName: "app/routes/rules._index.tsx",
lineNumber: 204,
columnNumber: 7
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("div", { className: "flex justify-between items-center mb-4", children: [
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("h2", { className: "text-xl font-medium", children: "\u8BC4\u67E5\u70B9\u7BA1\u7406" }, void 0, false, {
fileName: "app/routes/rules._index.tsx",
lineNumber: 215,
columnNumber: 9
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)(Button, { type: "primary", icon: "ri-add-line", to: "/rules/new", children: "\u65B0\u589E\u8BC4\u67E5\u70B9" }, void 0, false, {
fileName: "app/routes/rules._index.tsx",
lineNumber: 216,
columnNumber: 9
}, this)
] }, void 0, true, {
fileName: "app/routes/rules._index.tsx",
lineNumber: 214,
columnNumber: 7
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)(Card, { className: "mb-4", noDivider: true, children: /* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("div", { className: "grid grid-cols-1 md:grid-cols-4 gap-4 p-4", children: [
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("div", { children: [
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("label", { htmlFor: "ruleType", className: "block text-sm mb-1", children: "\u8BC4\u67E5\u70B9\u7C7B\u578B" }, void 0, false, {
fileName: "app/routes/rules._index.tsx",
lineNumber: 225,
columnNumber: 13
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("select", { id: "ruleType", className: "form-select w-full rounded border-gray-300 shadow-sm", name: "ruleType", value: searchParams.get("ruleType") || "", onChange: handleFilterChange, children: [
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("option", { value: "", children: "\u5168\u90E8" }, void 0, false, {
fileName: "app/routes/rules._index.tsx",
lineNumber: 228,
columnNumber: 15
}, this),
Object.entries(RULE_TYPE_LABELS).map(([value, label]) => /* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("option", { value, children: label }, value, false, {
fileName: "app/routes/rules._index.tsx",
lineNumber: 229,
columnNumber: 73
}, this))
] }, void 0, true, {
fileName: "app/routes/rules._index.tsx",
lineNumber: 226,
columnNumber: 13
}, this)
] }, void 0, true, {
fileName: "app/routes/rules._index.tsx",
lineNumber: 224,
columnNumber: 11
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("div", { children: [
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("label", { htmlFor: "groupId", className: "block text-sm mb-1", children: "\u6240\u5C5E\u89C4\u5219\u7EC4" }, void 0, false, {
fileName: "app/routes/rules._index.tsx",
lineNumber: 233,
columnNumber: 13
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("select", { id: "groupId", className: "form-select w-full rounded border-gray-300 shadow-sm", name: "groupId", value: searchParams.get("groupId") || "", onChange: handleFilterChange, children: [
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("option", { value: "", children: "\u5168\u90E8" }, void 0, false, {
fileName: "app/routes/rules._index.tsx",
lineNumber: 236,
columnNumber: 15
}, this),
groups.map((group) => /* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("option", { value: group.id, children: group.name }, group.id, false, {
fileName: "app/routes/rules._index.tsx",
lineNumber: 237,
columnNumber: 36
}, this))
] }, void 0, true, {
fileName: "app/routes/rules._index.tsx",
lineNumber: 234,
columnNumber: 13
}, this)
] }, void 0, true, {
fileName: "app/routes/rules._index.tsx",
lineNumber: 232,
columnNumber: 11
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("div", { children: [
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("label", { htmlFor: "isActive", className: "block text-sm mb-1", children: "\u72B6\u6001" }, void 0, false, {
fileName: "app/routes/rules._index.tsx",
lineNumber: 241,
columnNumber: 13
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("select", { id: "isActive", className: "form-select w-full rounded border-gray-300 shadow-sm", name: "isActive", value: searchParams.get("isActive") || "", onChange: handleFilterChange, children: [
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("option", { value: "", children: "\u5168\u90E8" }, void 0, false, {
fileName: "app/routes/rules._index.tsx",
lineNumber: 244,
columnNumber: 15
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("option", { value: "true", children: "\u542F\u7528" }, void 0, false, {
fileName: "app/routes/rules._index.tsx",
lineNumber: 245,
columnNumber: 15
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("option", { value: "false", children: "\u7981\u7528" }, void 0, false, {
fileName: "app/routes/rules._index.tsx",
lineNumber: 246,
columnNumber: 15
}, this)
] }, void 0, true, {
fileName: "app/routes/rules._index.tsx",
lineNumber: 242,
columnNumber: 13
}, this)
] }, void 0, true, {
fileName: "app/routes/rules._index.tsx",
lineNumber: 240,
columnNumber: 11
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("div", { children: [
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("label", { htmlFor: "keyword", className: "block text-sm mb-1", children: "\u641C\u7D22" }, void 0, false, {
fileName: "app/routes/rules._index.tsx",
lineNumber: 250,
columnNumber: 13
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("form", { onSubmit: handleSearch, className: "flex items-center", children: [
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("input", { type: "text", id: "keyword", name: "keyword", className: "form-input rounded-l flex-1 border-gray-300 shadow-sm", placeholder: "\u8F93\u5165\u8BC4\u67E5\u70B9\u540D\u79F0\u6216\u7F16\u7801", defaultValue: searchParams.get("keyword") || "" }, void 0, false, {
fileName: "app/routes/rules._index.tsx",
lineNumber: 252,
columnNumber: 15
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)(Button, { type: "primary", icon: "ri-search-line", className: "rounded-l-none", children: "\u641C\u7D22" }, void 0, false, {
fileName: "app/routes/rules._index.tsx",
lineNumber: 254,
columnNumber: 15
}, this)
] }, void 0, true, {
fileName: "app/routes/rules._index.tsx",
lineNumber: 251,
columnNumber: 13
}, this)
] }, void 0, true, {
fileName: "app/routes/rules._index.tsx",
lineNumber: 249,
columnNumber: 11
}, this)
] }, void 0, true, {
fileName: "app/routes/rules._index.tsx",
lineNumber: 223,
columnNumber: 9
}, this) }, void 0, false, {
fileName: "app/routes/rules._index.tsx",
lineNumber: 222,
columnNumber: 7
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)(Card, { noDivider: true, children: /* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("div", { className: "overflow-x-auto", children: /* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("table", { className: "w-full text-left border-collapse", children: [
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("thead", { className: "bg-gray-50", children: /* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("tr", { className: "text-xs text-gray-500 border-b", children: [
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("th", { className: "py-3 px-4", children: "\u8BC4\u67E5\u70B9\u7F16\u7801" }, void 0, false, {
fileName: "app/routes/rules._index.tsx",
lineNumber: 268,
columnNumber: 17
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("th", { className: "py-3 px-4", children: "\u8BC4\u67E5\u70B9\u540D\u79F0" }, void 0, false, {
fileName: "app/routes/rules._index.tsx",
lineNumber: 269,
columnNumber: 17
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("th", { className: "py-3 px-4", children: "\u8BC4\u67E5\u70B9\u7C7B\u578B" }, void 0, false, {
fileName: "app/routes/rules._index.tsx",
lineNumber: 270,
columnNumber: 17
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("th", { className: "py-3 px-4", children: "\u6240\u5C5E\u89C4\u5219\u7EC4" }, void 0, false, {
fileName: "app/routes/rules._index.tsx",
lineNumber: 271,
columnNumber: 17
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("th", { className: "py-3 px-4", children: "\u4F18\u5148\u7EA7" }, void 0, false, {
fileName: "app/routes/rules._index.tsx",
lineNumber: 272,
columnNumber: 17
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("th", { className: "py-3 px-4", children: "\u72B6\u6001" }, void 0, false, {
fileName: "app/routes/rules._index.tsx",
lineNumber: 273,
columnNumber: 17
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("th", { className: "py-3 px-4", children: "\u521B\u5EFA\u65F6\u95F4" }, void 0, false, {
fileName: "app/routes/rules._index.tsx",
lineNumber: 274,
columnNumber: 17
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("th", { className: "py-3 px-4", children: "\u64CD\u4F5C" }, void 0, false, {
fileName: "app/routes/rules._index.tsx",
lineNumber: 275,
columnNumber: 17
}, this)
] }, void 0, true, {
fileName: "app/routes/rules._index.tsx",
lineNumber: 267,
columnNumber: 15
}, this) }, void 0, false, {
fileName: "app/routes/rules._index.tsx",
lineNumber: 266,
columnNumber: 13
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("tbody", { children: rules.map((rule) => {
const typeColor = RULE_TYPE_COLORS[rule.ruleType];
const priorityColor = RULE_PRIORITY_COLORS[rule.priority];
return /* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("tr", { className: "border-b hover:bg-gray-50", children: [
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("td", { className: "py-3 px-4", children: rule.code }, void 0, false, {
fileName: "app/routes/rules._index.tsx",
lineNumber: 283,
columnNumber: 21
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("td", { className: "py-3 px-4", children: rule.name }, void 0, false, {
fileName: "app/routes/rules._index.tsx",
lineNumber: 284,
columnNumber: 21
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("td", { className: "py-3 px-4", children: /* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)(Tag, { color: typeColor, children: RULE_TYPE_LABELS[rule.ruleType] }, void 0, false, {
fileName: "app/routes/rules._index.tsx",
lineNumber: 286,
columnNumber: 23
}, this) }, void 0, false, {
fileName: "app/routes/rules._index.tsx",
lineNumber: 285,
columnNumber: 21
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("td", { className: "py-3 px-4", children: rule.groupName }, void 0, false, {
fileName: "app/routes/rules._index.tsx",
lineNumber: 288,
columnNumber: 21
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("td", { className: "py-3 px-4", children: /* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)(Tag, { color: priorityColor, children: RULE_PRIORITY_LABELS[rule.priority] }, void 0, false, {
fileName: "app/routes/rules._index.tsx",
lineNumber: 290,
columnNumber: 23
}, this) }, void 0, false, {
fileName: "app/routes/rules._index.tsx",
lineNumber: 289,
columnNumber: 21
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("td", { className: "py-3 px-4", children: rule.isActive ? /* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("span", { className: "flex items-center", children: [
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("i", { className: "inline-block w-2 h-2 rounded-full bg-green-500 mr-2" }, void 0, false, {
fileName: "app/routes/rules._index.tsx",
lineNumber: 294,
columnNumber: 27
}, this),
"\u542F\u7528"
] }, void 0, true, {
fileName: "app/routes/rules._index.tsx",
lineNumber: 293,
columnNumber: 40
}, this) : /* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("span", { className: "flex items-center", children: [
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("i", { className: "inline-block w-2 h-2 rounded-full bg-gray-400 mr-2" }, void 0, false, {
fileName: "app/routes/rules._index.tsx",
lineNumber: 297,
columnNumber: 27
}, this),
"\u7981\u7528"
] }, void 0, true, {
fileName: "app/routes/rules._index.tsx",
lineNumber: 296,
columnNumber: 35
}, this) }, void 0, false, {
fileName: "app/routes/rules._index.tsx",
lineNumber: 292,
columnNumber: 21
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("td", { className: "py-3 px-4", children: rule.createdAt }, void 0, false, {
fileName: "app/routes/rules._index.tsx",
lineNumber: 301,
columnNumber: 21
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("td", { className: "py-3 px-4", children: [
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)(Button, { type: "default", size: "small", icon: "ri-edit-line", to: `/rules/${rule.id}`, className: "mr-1", children: "\u7F16\u8F91" }, void 0, false, {
fileName: "app/routes/rules._index.tsx",
lineNumber: 303,
columnNumber: 23
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)(Button, { type: "default", size: "small", icon: "ri-file-copy-line", className: "mr-1", onClick: () => handleCopy(rule), children: "\u590D\u5236" }, void 0, false, {
fileName: "app/routes/rules._index.tsx",
lineNumber: 306,
columnNumber: 23
}, this),
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)(Button, { type: "danger", size: "small", icon: "ri-delete-bin-line", onClick: () => handleDelete(rule), children: "\u5220\u9664" }, void 0, false, {
fileName: "app/routes/rules._index.tsx",
lineNumber: 309,
columnNumber: 23
}, this)
] }, void 0, true, {
fileName: "app/routes/rules._index.tsx",
lineNumber: 302,
columnNumber: 21
}, this)
] }, rule.id, true, {
fileName: "app/routes/rules._index.tsx",
lineNumber: 282,
columnNumber: 22
}, this);
}) }, void 0, false, {
fileName: "app/routes/rules._index.tsx",
lineNumber: 278,
columnNumber: 13
}, this)
] }, void 0, true, {
fileName: "app/routes/rules._index.tsx",
lineNumber: 265,
columnNumber: 11
}, this) }, void 0, false, {
fileName: "app/routes/rules._index.tsx",
lineNumber: 264,
columnNumber: 9
}, this) }, void 0, false, {
fileName: "app/routes/rules._index.tsx",
lineNumber: 263,
columnNumber: 7
}, this)
] }, void 0, true, {
fileName: "app/routes/rules._index.tsx",
lineNumber: 202,
columnNumber: 10
}, this);
}
_s(RulesList, "XJwDgoE2H0lk/hcE8YrVrkebOKQ=", false, function() {
return [useLoaderData, useSearchParams];
});
_c2 = RulesList;
var _c2;
$RefreshReg$(_c2, "RulesList");
window.$RefreshReg$ = prevRefreshReg;
window.$RefreshSig$ = prevRefreshSig;
export {
RulesList as default,
links,
meta
};
//# sourceMappingURL=/build/routes/rules._index-5QMSMCT7.js.map
File diff suppressed because one or more lines are too long