@crowdin/app-project-module 3.0.0 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/out/app-test/integration/index.js +3 -3
- package/out/app-test/integration/mocks/mock-axios.js +5 -4
- package/out/app-test/integration/mocks/mock-crowdin-api-client.js +6 -6
- package/out/app-test/integration/update-crowdin.js +5 -5
- package/out/app-test/integration/update-integration.js +5 -5
- package/out/modules/integration/handlers/user-error-detail.d.ts +2 -0
- package/out/modules/integration/handlers/user-error-detail.js +48 -0
- package/out/modules/integration/handlers/user-errors.d.ts +6 -0
- package/out/modules/integration/handlers/user-errors.js +39 -17
- package/out/modules/integration/index.js +8 -0
- package/out/static/ui/error.bundle.js +286 -91
- package/out/static/ui/error.bundle.js.map +1 -1
- package/out/static/ui/form.bundle.js +398 -289
- package/out/static/ui/form.bundle.js.map +1 -1
- package/out/static/ui/login.bundle.js +351 -121
- package/out/static/ui/login.bundle.js.map +1 -1
- package/out/static/ui/main.bundle.js +832 -386
- package/out/static/ui/main.bundle.js.map +1 -1
- package/out/static/ui/subscription.bundle.js +277 -88
- package/out/static/ui/subscription.bundle.js.map +1 -1
- package/out/storage/drizzle/d1/index.js +2 -1
- package/out/storage/drizzle/d1/migrations/user-errors-indexes.d.ts +7 -0
- package/out/storage/drizzle/d1/migrations/user-errors-indexes.js +27 -0
- package/out/storage/drizzle/index.d.ts +8 -1
- package/out/storage/drizzle/index.js +75 -4
- package/out/storage/drizzle/postgresql/config.d.ts +3 -2
- package/out/storage/drizzle/postgresql/config.js +2 -1
- package/out/storage/drizzle/postgresql/migrations/0003_user_errors_pagination_index.sql +5 -0
- package/out/storage/drizzle/postgresql/migrations/meta/0003_snapshot.json +646 -0
- package/out/storage/drizzle/postgresql/migrations/meta/_journal.json +7 -0
- package/out/storage/drizzle/sqlite/config.d.ts +3 -2
- package/out/storage/drizzle/sqlite/config.js +2 -1
- package/out/storage/drizzle/sqlite/migrations/0002_user_errors_indexes.sql +4 -0
- package/out/storage/drizzle/sqlite/migrations/meta/0002_snapshot.json +687 -0
- package/out/storage/drizzle/sqlite/migrations/meta/_journal.json +7 -0
- package/out/storage/types.d.ts +30 -0
- package/package.json +12 -11
|
@@ -18775,722 +18775,1107 @@
|
|
|
18775
18775
|
}
|
|
18776
18776
|
|
|
18777
18777
|
/**
|
|
18778
|
-
* @license lucide-react
|
|
18778
|
+
* @license lucide-react v1.44.0 - ISC
|
|
18779
18779
|
*
|
|
18780
18780
|
* This source code is licensed under the ISC license.
|
|
18781
18781
|
* See the LICENSE file in the root directory of this source tree.
|
|
18782
18782
|
*/
|
|
18783
18783
|
|
|
18784
|
-
const toKebabCase = (string) => string
|
|
18785
|
-
|
|
18786
|
-
|
|
18787
|
-
|
|
18788
|
-
|
|
18784
|
+
const toKebabCase = (string) => string?.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase();
|
|
18785
|
+
|
|
18786
|
+
/**
|
|
18787
|
+
* @license lucide-react v1.44.0 - ISC
|
|
18788
|
+
*
|
|
18789
|
+
* This source code is licensed under the ISC license.
|
|
18790
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
18791
|
+
*/
|
|
18792
|
+
|
|
18793
|
+
|
|
18794
|
+
function toLucideIconData(iconName, iconNode, aliases = []) {
|
|
18795
|
+
if (iconNode == null) {
|
|
18796
|
+
throw new Error("[lucide]: iconNode is required when icon name is used");
|
|
18797
|
+
}
|
|
18798
|
+
return {
|
|
18799
|
+
name: toKebabCase(iconName),
|
|
18800
|
+
size: 24,
|
|
18801
|
+
node: iconNode,
|
|
18802
|
+
...aliases.length > 0 ? { aliases } : {}
|
|
18803
|
+
};
|
|
18804
|
+
}
|
|
18805
|
+
|
|
18806
|
+
/**
|
|
18807
|
+
* @license lucide-react v1.44.0 - ISC
|
|
18808
|
+
*
|
|
18809
|
+
* This source code is licensed under the ISC license.
|
|
18810
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
18811
|
+
*/
|
|
18812
|
+
|
|
18813
|
+
const toCamelCase = (string) => {
|
|
18814
|
+
let out = "";
|
|
18815
|
+
let upperNext = false;
|
|
18816
|
+
for (const ch of string) {
|
|
18817
|
+
if (ch === "-" || ch === "_" || ch <= " ") {
|
|
18818
|
+
upperNext = out.length > 0;
|
|
18819
|
+
continue;
|
|
18820
|
+
}
|
|
18821
|
+
if (out.length === 0) {
|
|
18822
|
+
out += ch.toLowerCase();
|
|
18823
|
+
} else {
|
|
18824
|
+
out += upperNext ? ch.toUpperCase() : ch;
|
|
18825
|
+
}
|
|
18826
|
+
upperNext = false;
|
|
18827
|
+
}
|
|
18828
|
+
return out;
|
|
18829
|
+
};
|
|
18830
|
+
|
|
18831
|
+
/**
|
|
18832
|
+
* @license lucide-react v1.44.0 - ISC
|
|
18833
|
+
*
|
|
18834
|
+
* This source code is licensed under the ISC license.
|
|
18835
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
18836
|
+
*/
|
|
18837
|
+
|
|
18838
|
+
|
|
18789
18839
|
const toPascalCase = (string) => {
|
|
18790
18840
|
const camelCase = toCamelCase(string);
|
|
18791
18841
|
return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);
|
|
18792
18842
|
};
|
|
18843
|
+
|
|
18844
|
+
/**
|
|
18845
|
+
* @license lucide-react v1.44.0 - ISC
|
|
18846
|
+
*
|
|
18847
|
+
* This source code is licensed under the ISC license.
|
|
18848
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
18849
|
+
*/
|
|
18850
|
+
|
|
18793
18851
|
const mergeClasses = (...classes) => classes.filter((className, index, array) => {
|
|
18794
18852
|
return Boolean(className) && className.trim() !== "" && array.indexOf(className) === index;
|
|
18795
18853
|
}).join(" ").trim();
|
|
18796
|
-
const hasA11yProp = (props) => {
|
|
18797
|
-
for (const prop in props) {
|
|
18798
|
-
if (prop.startsWith("aria-") || prop === "role" || prop === "title") {
|
|
18799
|
-
return true;
|
|
18800
|
-
}
|
|
18801
|
-
}
|
|
18802
|
-
};
|
|
18803
18854
|
|
|
18804
18855
|
/**
|
|
18805
|
-
* @license lucide-react
|
|
18856
|
+
* @license lucide-react v1.44.0 - ISC
|
|
18806
18857
|
*
|
|
18807
18858
|
* This source code is licensed under the ISC license.
|
|
18808
18859
|
* See the LICENSE file in the root directory of this source tree.
|
|
18809
18860
|
*/
|
|
18810
18861
|
|
|
18811
|
-
|
|
18862
|
+
const defaultAttributes = {
|
|
18812
18863
|
xmlns: "http://www.w3.org/2000/svg",
|
|
18813
18864
|
width: 24,
|
|
18814
18865
|
height: 24,
|
|
18815
18866
|
viewBox: "0 0 24 24",
|
|
18816
18867
|
fill: "none",
|
|
18817
18868
|
stroke: "currentColor",
|
|
18818
|
-
|
|
18819
|
-
|
|
18820
|
-
|
|
18869
|
+
"stroke-width": 2,
|
|
18870
|
+
"stroke-linecap": "round",
|
|
18871
|
+
"stroke-linejoin": "round"
|
|
18821
18872
|
};
|
|
18822
18873
|
|
|
18823
18874
|
/**
|
|
18824
|
-
* @license lucide-react
|
|
18875
|
+
* @license lucide-react v1.44.0 - ISC
|
|
18876
|
+
*
|
|
18877
|
+
* This source code is licensed under the ISC license.
|
|
18878
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
18879
|
+
*/
|
|
18880
|
+
|
|
18881
|
+
|
|
18882
|
+
function isDefined(value) {
|
|
18883
|
+
return value !== null && value !== void 0;
|
|
18884
|
+
}
|
|
18885
|
+
function buildLucideIconNode(icon, params = {}) {
|
|
18886
|
+
const attributeNames = params.attributeNames ?? {};
|
|
18887
|
+
const getAttributeName = (attributeName) => attributeNames[attributeName] ?? attributeName;
|
|
18888
|
+
const viewBoxWidth = icon.size ?? icon.width ?? defaultAttributes["width"];
|
|
18889
|
+
const viewBoxHeight = icon.size ?? icon.height ?? defaultAttributes["height"];
|
|
18890
|
+
const aliasClassNames = icon.aliases?.filter((alias) => typeof alias === "string" && alias.trim() !== "").map((alias) => `lucide-${alias}`) ?? [];
|
|
18891
|
+
const iconClassNames = [...icon.name ? [`lucide-${icon.name}`] : [], ...aliasClassNames];
|
|
18892
|
+
const classNamesFromClassName = params.className?.split(" ").filter(Boolean) ?? [];
|
|
18893
|
+
const className = params.includeDefaultClasses === false ? mergeClasses(...classNamesFromClassName) : mergeClasses("lucide", ...iconClassNames, ...classNamesFromClassName);
|
|
18894
|
+
const calculatedStrokeWidth = params.absoluteStrokeWidth ? Number(params.strokeWidth ?? defaultAttributes["stroke-width"]) * Number(icon.size ?? icon.width ?? defaultAttributes["width"]) / Number(params.size ?? params.width ?? defaultAttributes["width"]) : params.strokeWidth ?? defaultAttributes["stroke-width"];
|
|
18895
|
+
const attributes = {
|
|
18896
|
+
...Object.entries(defaultAttributes).reduce((attrs, [attrName, value]) => {
|
|
18897
|
+
attrs[getAttributeName(attrName)] = value;
|
|
18898
|
+
return attrs;
|
|
18899
|
+
}, {}),
|
|
18900
|
+
..."color" in params && params.color && {
|
|
18901
|
+
[getAttributeName("stroke")]: params.color
|
|
18902
|
+
},
|
|
18903
|
+
..."size" in params && isDefined(params.size) && {
|
|
18904
|
+
[getAttributeName("width")]: params.size,
|
|
18905
|
+
[getAttributeName("height")]: params.size
|
|
18906
|
+
},
|
|
18907
|
+
..."width" in params && isDefined(params.width) && {
|
|
18908
|
+
[getAttributeName("width")]: params.width
|
|
18909
|
+
},
|
|
18910
|
+
..."height" in params && isDefined(params.height) && {
|
|
18911
|
+
[getAttributeName("height")]: params.height
|
|
18912
|
+
},
|
|
18913
|
+
[getAttributeName("stroke-width")]: calculatedStrokeWidth,
|
|
18914
|
+
...className && {
|
|
18915
|
+
[getAttributeName("class")]: className
|
|
18916
|
+
},
|
|
18917
|
+
[getAttributeName("viewBox")]: `0 0 ${viewBoxWidth} ${viewBoxHeight}`,
|
|
18918
|
+
...params.hasA11yProp === false ? {
|
|
18919
|
+
[getAttributeName("aria-hidden")]: "true"
|
|
18920
|
+
} : {},
|
|
18921
|
+
..."attributes" in params && params.attributes
|
|
18922
|
+
};
|
|
18923
|
+
return [
|
|
18924
|
+
"svg",
|
|
18925
|
+
attributes,
|
|
18926
|
+
icon.node.map((child) => {
|
|
18927
|
+
const [name, attrs, children] = child;
|
|
18928
|
+
const nextAttrs = params.nonScalingStroke ? { [getAttributeName("vector-effect")]: "non-scaling-stroke", ...attrs } : attrs;
|
|
18929
|
+
return children ? [name, nextAttrs, children] : [name, nextAttrs];
|
|
18930
|
+
})
|
|
18931
|
+
];
|
|
18932
|
+
}
|
|
18933
|
+
|
|
18934
|
+
/**
|
|
18935
|
+
* @license lucide-react v1.44.0 - ISC
|
|
18936
|
+
*
|
|
18937
|
+
* This source code is licensed under the ISC license.
|
|
18938
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
18939
|
+
*/
|
|
18940
|
+
|
|
18941
|
+
|
|
18942
|
+
function buildLucideIconForReact(icon, params = {}) {
|
|
18943
|
+
return buildLucideIconNode(icon, {
|
|
18944
|
+
...params,
|
|
18945
|
+
attributeNames: {
|
|
18946
|
+
...params.attributeNames,
|
|
18947
|
+
class: "className",
|
|
18948
|
+
"stroke-width": "strokeWidth",
|
|
18949
|
+
"stroke-linecap": "strokeLinecap",
|
|
18950
|
+
"stroke-linejoin": "strokeLinejoin",
|
|
18951
|
+
"vector-effect": "vectorEffect"
|
|
18952
|
+
}
|
|
18953
|
+
});
|
|
18954
|
+
}
|
|
18955
|
+
|
|
18956
|
+
/**
|
|
18957
|
+
* @license lucide-react v1.44.0 - ISC
|
|
18825
18958
|
*
|
|
18826
18959
|
* This source code is licensed under the ISC license.
|
|
18827
18960
|
* See the LICENSE file in the root directory of this source tree.
|
|
18828
18961
|
*/
|
|
18829
18962
|
|
|
18963
|
+
const hasA11yProp = (props) => {
|
|
18964
|
+
for (const prop in props) {
|
|
18965
|
+
if (prop.startsWith("aria-") || prop === "role" || prop === "title") {
|
|
18966
|
+
return true;
|
|
18967
|
+
}
|
|
18968
|
+
}
|
|
18969
|
+
return false;
|
|
18970
|
+
};
|
|
18971
|
+
|
|
18972
|
+
const LucideContext = reactExports.createContext({});
|
|
18973
|
+
const useLucideContext = () => reactExports.useContext(LucideContext);
|
|
18830
18974
|
|
|
18831
18975
|
const Icon = reactExports.forwardRef(
|
|
18832
18976
|
({
|
|
18833
|
-
color
|
|
18834
|
-
size
|
|
18835
|
-
|
|
18977
|
+
color,
|
|
18978
|
+
size,
|
|
18979
|
+
width,
|
|
18980
|
+
height,
|
|
18981
|
+
strokeWidth,
|
|
18836
18982
|
absoluteStrokeWidth,
|
|
18983
|
+
nonScalingStroke,
|
|
18837
18984
|
className = "",
|
|
18838
18985
|
children,
|
|
18839
|
-
iconNode,
|
|
18840
|
-
|
|
18841
|
-
|
|
18842
|
-
|
|
18843
|
-
|
|
18844
|
-
ref,
|
|
18845
|
-
...defaultAttributes,
|
|
18846
|
-
width: size,
|
|
18847
|
-
height: size,
|
|
18848
|
-
stroke: color,
|
|
18849
|
-
strokeWidth: absoluteStrokeWidth ? Number(strokeWidth) * 24 / Number(size) : strokeWidth,
|
|
18850
|
-
className: mergeClasses("lucide", className),
|
|
18851
|
-
...!children && !hasA11yProp(rest) && { "aria-hidden": "true" },
|
|
18852
|
-
...rest
|
|
18986
|
+
iconNode = [],
|
|
18987
|
+
icon = {
|
|
18988
|
+
node: iconNode,
|
|
18989
|
+
aliases: [],
|
|
18990
|
+
size: 24
|
|
18853
18991
|
},
|
|
18854
|
-
|
|
18855
|
-
|
|
18856
|
-
|
|
18857
|
-
|
|
18858
|
-
|
|
18992
|
+
...rest
|
|
18993
|
+
}, ref) => {
|
|
18994
|
+
const {
|
|
18995
|
+
size: contextSize = 24,
|
|
18996
|
+
strokeWidth: contextStrokeWidth = 2,
|
|
18997
|
+
absoluteStrokeWidth: contextAbsoluteStrokeWidth = false,
|
|
18998
|
+
nonScalingStroke: contextNonScalingStroke = false,
|
|
18999
|
+
color: contextColor = "currentColor",
|
|
19000
|
+
className: contextClass = ""
|
|
19001
|
+
} = useLucideContext() ?? {};
|
|
19002
|
+
const hasAccessibleProp = Boolean(children) || hasA11yProp(rest);
|
|
19003
|
+
const [name, svgAttributes, builtIconNode = []] = buildLucideIconForReact(icon, {
|
|
19004
|
+
color: color ?? contextColor,
|
|
19005
|
+
width: width ?? size ?? contextSize,
|
|
19006
|
+
height: height ?? size ?? contextSize,
|
|
19007
|
+
strokeWidth: strokeWidth ?? contextStrokeWidth,
|
|
19008
|
+
absoluteStrokeWidth: absoluteStrokeWidth ?? contextAbsoluteStrokeWidth,
|
|
19009
|
+
nonScalingStroke: nonScalingStroke ?? contextNonScalingStroke,
|
|
19010
|
+
className: mergeClasses(contextClass, className),
|
|
19011
|
+
hasA11yProp: hasAccessibleProp,
|
|
19012
|
+
attributes: rest
|
|
19013
|
+
});
|
|
19014
|
+
return reactExports.createElement(
|
|
19015
|
+
name,
|
|
19016
|
+
{
|
|
19017
|
+
ref,
|
|
19018
|
+
...svgAttributes
|
|
19019
|
+
},
|
|
19020
|
+
[
|
|
19021
|
+
...builtIconNode.map(([tag, attrs]) => reactExports.createElement(tag, attrs)),
|
|
19022
|
+
...Array.isArray(children) ? children : [children]
|
|
19023
|
+
]
|
|
19024
|
+
);
|
|
19025
|
+
}
|
|
18859
19026
|
);
|
|
18860
19027
|
|
|
18861
19028
|
/**
|
|
18862
|
-
* @license lucide-react
|
|
19029
|
+
* @license lucide-react v1.44.0 - ISC
|
|
18863
19030
|
*
|
|
18864
19031
|
* This source code is licensed under the ISC license.
|
|
18865
19032
|
* See the LICENSE file in the root directory of this source tree.
|
|
18866
19033
|
*/
|
|
18867
19034
|
|
|
18868
19035
|
|
|
18869
|
-
|
|
19036
|
+
function createLucideIcon(iconDataOrName, iconNode = [], aliases = []) {
|
|
19037
|
+
const iconData = typeof iconDataOrName === "string" ? toLucideIconData(iconDataOrName, iconNode, aliases) : iconDataOrName;
|
|
18870
19038
|
const Component = reactExports.forwardRef(
|
|
18871
19039
|
({ className, ...props }, ref) => reactExports.createElement(Icon, {
|
|
18872
19040
|
ref,
|
|
18873
|
-
|
|
18874
|
-
className
|
|
18875
|
-
`lucide-${toKebabCase(toPascalCase(iconName))}`,
|
|
18876
|
-
`lucide-${iconName}`,
|
|
18877
|
-
className
|
|
18878
|
-
),
|
|
19041
|
+
icon: iconData,
|
|
19042
|
+
className,
|
|
18879
19043
|
...props
|
|
18880
19044
|
})
|
|
18881
19045
|
);
|
|
18882
|
-
|
|
19046
|
+
if (iconData.name) {
|
|
19047
|
+
Component.displayName = toPascalCase(iconData.name);
|
|
19048
|
+
}
|
|
18883
19049
|
return Component;
|
|
18884
|
-
}
|
|
19050
|
+
}
|
|
18885
19051
|
|
|
18886
19052
|
/**
|
|
18887
|
-
* @license lucide-react
|
|
19053
|
+
* @license lucide-react v1.44.0 - ISC
|
|
18888
19054
|
*
|
|
18889
19055
|
* This source code is licensed under the ISC license.
|
|
18890
19056
|
* See the LICENSE file in the root directory of this source tree.
|
|
18891
19057
|
*/
|
|
18892
19058
|
|
|
18893
19059
|
|
|
18894
|
-
const
|
|
18895
|
-
|
|
18896
|
-
|
|
18897
|
-
|
|
18898
|
-
|
|
19060
|
+
const __iconData$E = {
|
|
19061
|
+
name: "arrow-down",
|
|
19062
|
+
size: 24,
|
|
19063
|
+
node: [
|
|
19064
|
+
["path", { d: "M12 5v14", key: "s699le" }],
|
|
19065
|
+
["path", { d: "m19 12-7 7-7-7", key: "1idqje" }]
|
|
19066
|
+
]
|
|
19067
|
+
};
|
|
19068
|
+
__iconData$E.node;
|
|
19069
|
+
const ArrowDown = createLucideIcon(__iconData$E);
|
|
18899
19070
|
|
|
18900
19071
|
/**
|
|
18901
|
-
* @license lucide-react
|
|
19072
|
+
* @license lucide-react v1.44.0 - ISC
|
|
18902
19073
|
*
|
|
18903
19074
|
* This source code is licensed under the ISC license.
|
|
18904
19075
|
* See the LICENSE file in the root directory of this source tree.
|
|
18905
19076
|
*/
|
|
18906
19077
|
|
|
18907
19078
|
|
|
18908
|
-
const
|
|
18909
|
-
|
|
18910
|
-
|
|
18911
|
-
|
|
18912
|
-
|
|
19079
|
+
const __iconData$D = {
|
|
19080
|
+
name: "arrow-left",
|
|
19081
|
+
size: 24,
|
|
19082
|
+
node: [
|
|
19083
|
+
["path", { d: "m12 19-7-7 7-7", key: "1l729n" }],
|
|
19084
|
+
["path", { d: "M19 12H5", key: "x3x0zl" }]
|
|
19085
|
+
]
|
|
19086
|
+
};
|
|
19087
|
+
__iconData$D.node;
|
|
19088
|
+
const ArrowLeft = createLucideIcon(__iconData$D);
|
|
18913
19089
|
|
|
18914
19090
|
/**
|
|
18915
|
-
* @license lucide-react
|
|
19091
|
+
* @license lucide-react v1.44.0 - ISC
|
|
18916
19092
|
*
|
|
18917
19093
|
* This source code is licensed under the ISC license.
|
|
18918
19094
|
* See the LICENSE file in the root directory of this source tree.
|
|
18919
19095
|
*/
|
|
18920
19096
|
|
|
18921
19097
|
|
|
18922
|
-
const
|
|
18923
|
-
|
|
18924
|
-
|
|
18925
|
-
|
|
18926
|
-
|
|
19098
|
+
const __iconData$C = {
|
|
19099
|
+
name: "arrow-up",
|
|
19100
|
+
size: 24,
|
|
19101
|
+
node: [
|
|
19102
|
+
["path", { d: "m5 12 7-7 7 7", key: "hav0vg" }],
|
|
19103
|
+
["path", { d: "M12 19V5", key: "x0mq9r" }]
|
|
19104
|
+
]
|
|
19105
|
+
};
|
|
19106
|
+
__iconData$C.node;
|
|
19107
|
+
const ArrowUp = createLucideIcon(__iconData$C);
|
|
18927
19108
|
|
|
18928
19109
|
/**
|
|
18929
|
-
* @license lucide-react
|
|
19110
|
+
* @license lucide-react v1.44.0 - ISC
|
|
18930
19111
|
*
|
|
18931
19112
|
* This source code is licensed under the ISC license.
|
|
18932
19113
|
* See the LICENSE file in the root directory of this source tree.
|
|
18933
19114
|
*/
|
|
18934
19115
|
|
|
18935
19116
|
|
|
18936
|
-
const
|
|
18937
|
-
|
|
18938
|
-
|
|
18939
|
-
|
|
18940
|
-
|
|
19117
|
+
const __iconData$B = {
|
|
19118
|
+
name: "ban",
|
|
19119
|
+
size: 24,
|
|
19120
|
+
node: [
|
|
19121
|
+
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
19122
|
+
["path", { d: "M4.929 4.929 19.07 19.071", key: "196cmz" }]
|
|
19123
|
+
]
|
|
19124
|
+
};
|
|
19125
|
+
__iconData$B.node;
|
|
19126
|
+
const Ban = createLucideIcon(__iconData$B);
|
|
18941
19127
|
|
|
18942
19128
|
/**
|
|
18943
|
-
* @license lucide-react
|
|
19129
|
+
* @license lucide-react v1.44.0 - ISC
|
|
18944
19130
|
*
|
|
18945
19131
|
* This source code is licensed under the ISC license.
|
|
18946
19132
|
* See the LICENSE file in the root directory of this source tree.
|
|
18947
19133
|
*/
|
|
18948
19134
|
|
|
18949
19135
|
|
|
18950
|
-
const
|
|
18951
|
-
|
|
19136
|
+
const __iconData$A = {
|
|
19137
|
+
name: "check",
|
|
19138
|
+
size: 24,
|
|
19139
|
+
node: [["path", { d: "M20 6 9 17l-5-5", key: "1gmf2c" }]]
|
|
19140
|
+
};
|
|
19141
|
+
__iconData$A.node;
|
|
19142
|
+
const Check = createLucideIcon(__iconData$A);
|
|
18952
19143
|
|
|
18953
19144
|
/**
|
|
18954
|
-
* @license lucide-react
|
|
19145
|
+
* @license lucide-react v1.44.0 - ISC
|
|
18955
19146
|
*
|
|
18956
19147
|
* This source code is licensed under the ISC license.
|
|
18957
19148
|
* See the LICENSE file in the root directory of this source tree.
|
|
18958
19149
|
*/
|
|
18959
19150
|
|
|
18960
19151
|
|
|
18961
|
-
const
|
|
18962
|
-
|
|
19152
|
+
const __iconData$z = {
|
|
19153
|
+
name: "chevron-down",
|
|
19154
|
+
size: 24,
|
|
19155
|
+
node: [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]]
|
|
19156
|
+
};
|
|
19157
|
+
__iconData$z.node;
|
|
19158
|
+
const ChevronDown = createLucideIcon(__iconData$z);
|
|
18963
19159
|
|
|
18964
19160
|
/**
|
|
18965
|
-
* @license lucide-react
|
|
19161
|
+
* @license lucide-react v1.44.0 - ISC
|
|
18966
19162
|
*
|
|
18967
19163
|
* This source code is licensed under the ISC license.
|
|
18968
19164
|
* See the LICENSE file in the root directory of this source tree.
|
|
18969
19165
|
*/
|
|
18970
19166
|
|
|
18971
19167
|
|
|
18972
|
-
const
|
|
18973
|
-
|
|
19168
|
+
const __iconData$y = {
|
|
19169
|
+
name: "chevron-left",
|
|
19170
|
+
size: 24,
|
|
19171
|
+
node: [["path", { d: "m15 18-6-6 6-6", key: "1wnfg3" }]]
|
|
19172
|
+
};
|
|
19173
|
+
__iconData$y.node;
|
|
19174
|
+
const ChevronLeft = createLucideIcon(__iconData$y);
|
|
18974
19175
|
|
|
18975
19176
|
/**
|
|
18976
|
-
* @license lucide-react
|
|
19177
|
+
* @license lucide-react v1.44.0 - ISC
|
|
18977
19178
|
*
|
|
18978
19179
|
* This source code is licensed under the ISC license.
|
|
18979
19180
|
* See the LICENSE file in the root directory of this source tree.
|
|
18980
19181
|
*/
|
|
18981
19182
|
|
|
18982
19183
|
|
|
18983
|
-
const
|
|
18984
|
-
|
|
19184
|
+
const __iconData$x = {
|
|
19185
|
+
name: "chevron-right",
|
|
19186
|
+
size: 24,
|
|
19187
|
+
node: [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]]
|
|
19188
|
+
};
|
|
19189
|
+
__iconData$x.node;
|
|
19190
|
+
const ChevronRight = createLucideIcon(__iconData$x);
|
|
18985
19191
|
|
|
18986
19192
|
/**
|
|
18987
|
-
* @license lucide-react
|
|
19193
|
+
* @license lucide-react v1.44.0 - ISC
|
|
18988
19194
|
*
|
|
18989
19195
|
* This source code is licensed under the ISC license.
|
|
18990
19196
|
* See the LICENSE file in the root directory of this source tree.
|
|
18991
19197
|
*/
|
|
18992
19198
|
|
|
18993
19199
|
|
|
18994
|
-
const
|
|
18995
|
-
|
|
19200
|
+
const __iconData$w = {
|
|
19201
|
+
name: "chevron-up",
|
|
19202
|
+
size: 24,
|
|
19203
|
+
node: [["path", { d: "m18 15-6-6-6 6", key: "153udz" }]]
|
|
19204
|
+
};
|
|
19205
|
+
__iconData$w.node;
|
|
19206
|
+
const ChevronUp = createLucideIcon(__iconData$w);
|
|
18996
19207
|
|
|
18997
19208
|
/**
|
|
18998
|
-
* @license lucide-react
|
|
19209
|
+
* @license lucide-react v1.44.0 - ISC
|
|
18999
19210
|
*
|
|
19000
19211
|
* This source code is licensed under the ISC license.
|
|
19001
19212
|
* See the LICENSE file in the root directory of this source tree.
|
|
19002
19213
|
*/
|
|
19003
19214
|
|
|
19004
19215
|
|
|
19005
|
-
const
|
|
19006
|
-
|
|
19007
|
-
|
|
19008
|
-
|
|
19009
|
-
|
|
19216
|
+
const __iconData$v = {
|
|
19217
|
+
name: "chevrons-down",
|
|
19218
|
+
size: 24,
|
|
19219
|
+
node: [
|
|
19220
|
+
["path", { d: "m7 6 5 5 5-5", key: "1lc07p" }],
|
|
19221
|
+
["path", { d: "m7 13 5 5 5-5", key: "1d48rs" }]
|
|
19222
|
+
]
|
|
19223
|
+
};
|
|
19224
|
+
__iconData$v.node;
|
|
19225
|
+
const ChevronsDown = createLucideIcon(__iconData$v);
|
|
19010
19226
|
|
|
19011
19227
|
/**
|
|
19012
|
-
* @license lucide-react
|
|
19228
|
+
* @license lucide-react v1.44.0 - ISC
|
|
19013
19229
|
*
|
|
19014
19230
|
* This source code is licensed under the ISC license.
|
|
19015
19231
|
* See the LICENSE file in the root directory of this source tree.
|
|
19016
19232
|
*/
|
|
19017
19233
|
|
|
19018
19234
|
|
|
19019
|
-
const
|
|
19020
|
-
|
|
19021
|
-
|
|
19022
|
-
|
|
19023
|
-
|
|
19235
|
+
const __iconData$u = {
|
|
19236
|
+
name: "chevrons-left",
|
|
19237
|
+
size: 24,
|
|
19238
|
+
node: [
|
|
19239
|
+
["path", { d: "m11 17-5-5 5-5", key: "13zhaf" }],
|
|
19240
|
+
["path", { d: "m18 17-5-5 5-5", key: "h8a8et" }]
|
|
19241
|
+
]
|
|
19242
|
+
};
|
|
19243
|
+
__iconData$u.node;
|
|
19244
|
+
const ChevronsLeft = createLucideIcon(__iconData$u);
|
|
19024
19245
|
|
|
19025
19246
|
/**
|
|
19026
|
-
* @license lucide-react
|
|
19247
|
+
* @license lucide-react v1.44.0 - ISC
|
|
19027
19248
|
*
|
|
19028
19249
|
* This source code is licensed under the ISC license.
|
|
19029
19250
|
* See the LICENSE file in the root directory of this source tree.
|
|
19030
19251
|
*/
|
|
19031
19252
|
|
|
19032
19253
|
|
|
19033
|
-
const
|
|
19034
|
-
|
|
19035
|
-
|
|
19036
|
-
|
|
19037
|
-
|
|
19254
|
+
const __iconData$t = {
|
|
19255
|
+
name: "chevrons-right",
|
|
19256
|
+
size: 24,
|
|
19257
|
+
node: [
|
|
19258
|
+
["path", { d: "m6 17 5-5-5-5", key: "xnjwq" }],
|
|
19259
|
+
["path", { d: "m13 17 5-5-5-5", key: "17xmmf" }]
|
|
19260
|
+
]
|
|
19261
|
+
};
|
|
19262
|
+
__iconData$t.node;
|
|
19263
|
+
const ChevronsRight = createLucideIcon(__iconData$t);
|
|
19038
19264
|
|
|
19039
19265
|
/**
|
|
19040
|
-
* @license lucide-react
|
|
19266
|
+
* @license lucide-react v1.44.0 - ISC
|
|
19041
19267
|
*
|
|
19042
19268
|
* This source code is licensed under the ISC license.
|
|
19043
19269
|
* See the LICENSE file in the root directory of this source tree.
|
|
19044
19270
|
*/
|
|
19045
19271
|
|
|
19046
19272
|
|
|
19047
|
-
const
|
|
19048
|
-
|
|
19049
|
-
|
|
19050
|
-
|
|
19051
|
-
|
|
19273
|
+
const __iconData$s = {
|
|
19274
|
+
name: "circle-check",
|
|
19275
|
+
size: 24,
|
|
19276
|
+
node: [
|
|
19277
|
+
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
19278
|
+
["path", { d: "m16 9-5.5 5.5L8 12", key: "xofnsj" }]
|
|
19279
|
+
],
|
|
19280
|
+
aliases: ["check-circle-2"]
|
|
19281
|
+
};
|
|
19282
|
+
__iconData$s.node;
|
|
19283
|
+
const CircleCheck = createLucideIcon(__iconData$s);
|
|
19052
19284
|
|
|
19053
19285
|
/**
|
|
19054
|
-
* @license lucide-react
|
|
19286
|
+
* @license lucide-react v1.44.0 - ISC
|
|
19055
19287
|
*
|
|
19056
19288
|
* This source code is licensed under the ISC license.
|
|
19057
19289
|
* See the LICENSE file in the root directory of this source tree.
|
|
19058
19290
|
*/
|
|
19059
19291
|
|
|
19060
19292
|
|
|
19061
|
-
const
|
|
19062
|
-
|
|
19063
|
-
|
|
19064
|
-
|
|
19065
|
-
|
|
19066
|
-
|
|
19293
|
+
const __iconData$r = {
|
|
19294
|
+
name: "circle-user-round",
|
|
19295
|
+
size: 24,
|
|
19296
|
+
node: [
|
|
19297
|
+
["path", { d: "M17.925 20.056a6 6 0 0 0-11.851.001", key: "z69sun" }],
|
|
19298
|
+
["circle", { cx: "12", cy: "11", r: "4", key: "1gt34v" }],
|
|
19299
|
+
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }]
|
|
19300
|
+
],
|
|
19301
|
+
aliases: ["user-circle-2"]
|
|
19302
|
+
};
|
|
19303
|
+
__iconData$r.node;
|
|
19304
|
+
const CircleUserRound = createLucideIcon(__iconData$r);
|
|
19067
19305
|
|
|
19068
19306
|
/**
|
|
19069
|
-
* @license lucide-react
|
|
19307
|
+
* @license lucide-react v1.44.0 - ISC
|
|
19070
19308
|
*
|
|
19071
19309
|
* This source code is licensed under the ISC license.
|
|
19072
19310
|
* See the LICENSE file in the root directory of this source tree.
|
|
19073
19311
|
*/
|
|
19074
19312
|
|
|
19075
19313
|
|
|
19076
|
-
const
|
|
19077
|
-
|
|
19078
|
-
|
|
19079
|
-
|
|
19080
|
-
|
|
19081
|
-
|
|
19314
|
+
const __iconData$q = {
|
|
19315
|
+
name: "circle-x",
|
|
19316
|
+
size: 24,
|
|
19317
|
+
node: [
|
|
19318
|
+
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
19319
|
+
["path", { d: "m15 9-6 6", key: "1uzhvr" }],
|
|
19320
|
+
["path", { d: "m9 9 6 6", key: "z0biqf" }]
|
|
19321
|
+
],
|
|
19322
|
+
aliases: ["x-circle"]
|
|
19323
|
+
};
|
|
19324
|
+
__iconData$q.node;
|
|
19325
|
+
const CircleX = createLucideIcon(__iconData$q);
|
|
19082
19326
|
|
|
19083
19327
|
/**
|
|
19084
|
-
* @license lucide-react
|
|
19328
|
+
* @license lucide-react v1.44.0 - ISC
|
|
19085
19329
|
*
|
|
19086
19330
|
* This source code is licensed under the ISC license.
|
|
19087
19331
|
* See the LICENSE file in the root directory of this source tree.
|
|
19088
19332
|
*/
|
|
19089
19333
|
|
|
19090
19334
|
|
|
19091
|
-
const
|
|
19092
|
-
|
|
19335
|
+
const __iconData$p = {
|
|
19336
|
+
name: "circle",
|
|
19337
|
+
size: 24,
|
|
19338
|
+
node: [["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }]]
|
|
19339
|
+
};
|
|
19340
|
+
__iconData$p.node;
|
|
19341
|
+
const Circle = createLucideIcon(__iconData$p);
|
|
19093
19342
|
|
|
19094
19343
|
/**
|
|
19095
|
-
* @license lucide-react
|
|
19344
|
+
* @license lucide-react v1.44.0 - ISC
|
|
19096
19345
|
*
|
|
19097
19346
|
* This source code is licensed under the ISC license.
|
|
19098
19347
|
* See the LICENSE file in the root directory of this source tree.
|
|
19099
19348
|
*/
|
|
19100
19349
|
|
|
19101
19350
|
|
|
19102
|
-
const
|
|
19103
|
-
|
|
19104
|
-
|
|
19105
|
-
|
|
19106
|
-
|
|
19351
|
+
const __iconData$o = {
|
|
19352
|
+
name: "clock-3",
|
|
19353
|
+
size: 24,
|
|
19354
|
+
node: [
|
|
19355
|
+
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
19356
|
+
["path", { d: "M12 6v6h4", key: "135r8i" }]
|
|
19357
|
+
]
|
|
19358
|
+
};
|
|
19359
|
+
__iconData$o.node;
|
|
19360
|
+
const Clock3 = createLucideIcon(__iconData$o);
|
|
19107
19361
|
|
|
19108
19362
|
/**
|
|
19109
|
-
* @license lucide-react
|
|
19363
|
+
* @license lucide-react v1.44.0 - ISC
|
|
19110
19364
|
*
|
|
19111
19365
|
* This source code is licensed under the ISC license.
|
|
19112
19366
|
* See the LICENSE file in the root directory of this source tree.
|
|
19113
19367
|
*/
|
|
19114
19368
|
|
|
19115
19369
|
|
|
19116
|
-
const
|
|
19117
|
-
|
|
19118
|
-
|
|
19119
|
-
|
|
19120
|
-
|
|
19370
|
+
const __iconData$n = {
|
|
19371
|
+
name: "copy",
|
|
19372
|
+
size: 24,
|
|
19373
|
+
node: [
|
|
19374
|
+
["rect", { width: "14", height: "14", x: "8", y: "8", rx: "2", ry: "2", key: "17jyea" }],
|
|
19375
|
+
["path", { d: "M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2", key: "zix9uf" }]
|
|
19376
|
+
]
|
|
19377
|
+
};
|
|
19378
|
+
__iconData$n.node;
|
|
19379
|
+
const Copy = createLucideIcon(__iconData$n);
|
|
19121
19380
|
|
|
19122
19381
|
/**
|
|
19123
|
-
* @license lucide-react
|
|
19382
|
+
* @license lucide-react v1.44.0 - ISC
|
|
19124
19383
|
*
|
|
19125
19384
|
* This source code is licensed under the ISC license.
|
|
19126
19385
|
* See the LICENSE file in the root directory of this source tree.
|
|
19127
19386
|
*/
|
|
19128
19387
|
|
|
19129
19388
|
|
|
19130
|
-
const
|
|
19131
|
-
|
|
19132
|
-
|
|
19133
|
-
|
|
19134
|
-
|
|
19135
|
-
|
|
19389
|
+
const __iconData$m = {
|
|
19390
|
+
name: "download",
|
|
19391
|
+
size: 24,
|
|
19392
|
+
node: [
|
|
19393
|
+
["path", { d: "M12 15V3", key: "m9g1x1" }],
|
|
19394
|
+
["path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4", key: "ih7n3h" }],
|
|
19395
|
+
["path", { d: "m7 10 5 5 5-5", key: "brsn70" }]
|
|
19396
|
+
]
|
|
19397
|
+
};
|
|
19398
|
+
__iconData$m.node;
|
|
19399
|
+
const Download = createLucideIcon(__iconData$m);
|
|
19136
19400
|
|
|
19137
19401
|
/**
|
|
19138
|
-
* @license lucide-react
|
|
19402
|
+
* @license lucide-react v1.44.0 - ISC
|
|
19139
19403
|
*
|
|
19140
19404
|
* This source code is licensed under the ISC license.
|
|
19141
19405
|
* See the LICENSE file in the root directory of this source tree.
|
|
19142
19406
|
*/
|
|
19143
19407
|
|
|
19144
19408
|
|
|
19145
|
-
const
|
|
19146
|
-
|
|
19147
|
-
|
|
19148
|
-
|
|
19149
|
-
|
|
19150
|
-
|
|
19409
|
+
const __iconData$l = {
|
|
19410
|
+
name: "ellipsis",
|
|
19411
|
+
size: 24,
|
|
19412
|
+
node: [
|
|
19413
|
+
["circle", { cx: "12", cy: "12", r: "1", key: "41hilf" }],
|
|
19414
|
+
["circle", { cx: "19", cy: "12", r: "1", key: "1wjl8i" }],
|
|
19415
|
+
["circle", { cx: "5", cy: "12", r: "1", key: "1pcz8c" }]
|
|
19416
|
+
],
|
|
19417
|
+
aliases: ["more-horizontal"]
|
|
19418
|
+
};
|
|
19419
|
+
__iconData$l.node;
|
|
19420
|
+
const Ellipsis = createLucideIcon(__iconData$l);
|
|
19151
19421
|
|
|
19152
19422
|
/**
|
|
19153
|
-
* @license lucide-react
|
|
19423
|
+
* @license lucide-react v1.44.0 - ISC
|
|
19154
19424
|
*
|
|
19155
19425
|
* This source code is licensed under the ISC license.
|
|
19156
19426
|
* See the LICENSE file in the root directory of this source tree.
|
|
19157
19427
|
*/
|
|
19158
19428
|
|
|
19159
19429
|
|
|
19160
|
-
const
|
|
19161
|
-
|
|
19162
|
-
|
|
19163
|
-
|
|
19164
|
-
|
|
19430
|
+
const __iconData$k = {
|
|
19431
|
+
name: "file",
|
|
19432
|
+
size: 24,
|
|
19433
|
+
node: [
|
|
19434
|
+
[
|
|
19435
|
+
"path",
|
|
19436
|
+
{
|
|
19437
|
+
d: "M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",
|
|
19438
|
+
key: "1oefj6"
|
|
19439
|
+
}
|
|
19440
|
+
],
|
|
19441
|
+
["path", { d: "M14 2v5a1 1 0 0 0 1 1h5", key: "wfsgrz" }]
|
|
19442
|
+
]
|
|
19443
|
+
};
|
|
19444
|
+
__iconData$k.node;
|
|
19445
|
+
const File = createLucideIcon(__iconData$k);
|
|
19165
19446
|
|
|
19166
19447
|
/**
|
|
19167
|
-
* @license lucide-react
|
|
19448
|
+
* @license lucide-react v1.44.0 - ISC
|
|
19168
19449
|
*
|
|
19169
19450
|
* This source code is licensed under the ISC license.
|
|
19170
19451
|
* See the LICENSE file in the root directory of this source tree.
|
|
19171
19452
|
*/
|
|
19172
19453
|
|
|
19173
19454
|
|
|
19174
|
-
const
|
|
19175
|
-
|
|
19176
|
-
|
|
19177
|
-
|
|
19178
|
-
|
|
19179
|
-
|
|
19180
|
-
|
|
19455
|
+
const __iconData$j = {
|
|
19456
|
+
name: "folder-open",
|
|
19457
|
+
size: 24,
|
|
19458
|
+
node: [
|
|
19459
|
+
[
|
|
19460
|
+
"path",
|
|
19461
|
+
{
|
|
19462
|
+
d: "m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",
|
|
19463
|
+
key: "usdka0"
|
|
19464
|
+
}
|
|
19465
|
+
]
|
|
19181
19466
|
]
|
|
19182
|
-
|
|
19183
|
-
|
|
19467
|
+
};
|
|
19468
|
+
__iconData$j.node;
|
|
19469
|
+
const FolderOpen = createLucideIcon(__iconData$j);
|
|
19184
19470
|
|
|
19185
19471
|
/**
|
|
19186
|
-
* @license lucide-react
|
|
19472
|
+
* @license lucide-react v1.44.0 - ISC
|
|
19187
19473
|
*
|
|
19188
19474
|
* This source code is licensed under the ISC license.
|
|
19189
19475
|
* See the LICENSE file in the root directory of this source tree.
|
|
19190
19476
|
*/
|
|
19191
19477
|
|
|
19192
19478
|
|
|
19193
|
-
const
|
|
19194
|
-
|
|
19195
|
-
|
|
19196
|
-
|
|
19197
|
-
|
|
19198
|
-
|
|
19199
|
-
|
|
19479
|
+
const __iconData$i = {
|
|
19480
|
+
name: "folder",
|
|
19481
|
+
size: 24,
|
|
19482
|
+
node: [
|
|
19483
|
+
[
|
|
19484
|
+
"path",
|
|
19485
|
+
{
|
|
19486
|
+
d: "M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",
|
|
19487
|
+
key: "1kt360"
|
|
19488
|
+
}
|
|
19489
|
+
]
|
|
19200
19490
|
]
|
|
19201
|
-
|
|
19202
|
-
|
|
19491
|
+
};
|
|
19492
|
+
__iconData$i.node;
|
|
19493
|
+
const Folder = createLucideIcon(__iconData$i);
|
|
19203
19494
|
|
|
19204
19495
|
/**
|
|
19205
|
-
* @license lucide-react
|
|
19496
|
+
* @license lucide-react v1.44.0 - ISC
|
|
19206
19497
|
*
|
|
19207
19498
|
* This source code is licensed under the ISC license.
|
|
19208
19499
|
* See the LICENSE file in the root directory of this source tree.
|
|
19209
19500
|
*/
|
|
19210
19501
|
|
|
19211
19502
|
|
|
19212
|
-
const
|
|
19213
|
-
|
|
19214
|
-
|
|
19215
|
-
|
|
19216
|
-
|
|
19217
|
-
|
|
19218
|
-
|
|
19219
|
-
|
|
19220
|
-
|
|
19221
|
-
|
|
19503
|
+
const __iconData$h = {
|
|
19504
|
+
name: "funnel",
|
|
19505
|
+
size: 24,
|
|
19506
|
+
node: [
|
|
19507
|
+
[
|
|
19508
|
+
"path",
|
|
19509
|
+
{
|
|
19510
|
+
d: "M10 20a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341L21.74 4.67A1 1 0 0 0 21 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14z",
|
|
19511
|
+
key: "sc7q7i"
|
|
19512
|
+
}
|
|
19513
|
+
]
|
|
19514
|
+
],
|
|
19515
|
+
aliases: ["filter"]
|
|
19516
|
+
};
|
|
19517
|
+
__iconData$h.node;
|
|
19518
|
+
const Funnel = createLucideIcon(__iconData$h);
|
|
19222
19519
|
|
|
19223
19520
|
/**
|
|
19224
|
-
* @license lucide-react
|
|
19521
|
+
* @license lucide-react v1.44.0 - ISC
|
|
19225
19522
|
*
|
|
19226
19523
|
* This source code is licensed under the ISC license.
|
|
19227
19524
|
* See the LICENSE file in the root directory of this source tree.
|
|
19228
19525
|
*/
|
|
19229
19526
|
|
|
19230
19527
|
|
|
19231
|
-
const
|
|
19232
|
-
|
|
19233
|
-
|
|
19234
|
-
|
|
19235
|
-
|
|
19236
|
-
|
|
19237
|
-
|
|
19528
|
+
const __iconData$g = {
|
|
19529
|
+
name: "git-branch",
|
|
19530
|
+
size: 24,
|
|
19531
|
+
node: [
|
|
19532
|
+
["path", { d: "M15 6a9 9 0 0 0-9 9V3", key: "1cii5b" }],
|
|
19533
|
+
["circle", { cx: "18", cy: "6", r: "3", key: "1h7g24" }],
|
|
19534
|
+
["circle", { cx: "6", cy: "18", r: "3", key: "fqmcym" }]
|
|
19535
|
+
]
|
|
19536
|
+
};
|
|
19537
|
+
__iconData$g.node;
|
|
19538
|
+
const GitBranch = createLucideIcon(__iconData$g);
|
|
19238
19539
|
|
|
19239
19540
|
/**
|
|
19240
|
-
* @license lucide-react
|
|
19541
|
+
* @license lucide-react v1.44.0 - ISC
|
|
19241
19542
|
*
|
|
19242
19543
|
* This source code is licensed under the ISC license.
|
|
19243
19544
|
* See the LICENSE file in the root directory of this source tree.
|
|
19244
19545
|
*/
|
|
19245
19546
|
|
|
19246
19547
|
|
|
19247
|
-
const
|
|
19248
|
-
|
|
19249
|
-
|
|
19250
|
-
|
|
19251
|
-
|
|
19252
|
-
|
|
19548
|
+
const __iconData$f = {
|
|
19549
|
+
name: "info",
|
|
19550
|
+
size: 24,
|
|
19551
|
+
node: [
|
|
19552
|
+
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
19553
|
+
["path", { d: "M12 16v-4", key: "1dtifu" }],
|
|
19554
|
+
["path", { d: "M12 8h.01", key: "e9boi3" }]
|
|
19555
|
+
]
|
|
19556
|
+
};
|
|
19557
|
+
__iconData$f.node;
|
|
19558
|
+
const Info = createLucideIcon(__iconData$f);
|
|
19253
19559
|
|
|
19254
19560
|
/**
|
|
19255
|
-
* @license lucide-react
|
|
19561
|
+
* @license lucide-react v1.44.0 - ISC
|
|
19256
19562
|
*
|
|
19257
19563
|
* This source code is licensed under the ISC license.
|
|
19258
19564
|
* See the LICENSE file in the root directory of this source tree.
|
|
19259
19565
|
*/
|
|
19260
19566
|
|
|
19261
19567
|
|
|
19262
|
-
const
|
|
19263
|
-
|
|
19264
|
-
|
|
19265
|
-
|
|
19266
|
-
|
|
19267
|
-
|
|
19268
|
-
|
|
19269
|
-
|
|
19270
|
-
|
|
19568
|
+
const __iconData$e = {
|
|
19569
|
+
name: "languages",
|
|
19570
|
+
size: 24,
|
|
19571
|
+
node: [
|
|
19572
|
+
["path", { d: "m5 8 6 6", key: "1wu5hv" }],
|
|
19573
|
+
["path", { d: "m4 14 6-6 2-3", key: "1k1g8d" }],
|
|
19574
|
+
["path", { d: "M2 5h12", key: "or177f" }],
|
|
19575
|
+
["path", { d: "M7 2h1", key: "1t2jsx" }],
|
|
19576
|
+
["path", { d: "m22 22-5-10-5 10", key: "don7ne" }],
|
|
19577
|
+
["path", { d: "M14 18h6", key: "1m8k6r" }]
|
|
19578
|
+
]
|
|
19579
|
+
};
|
|
19580
|
+
__iconData$e.node;
|
|
19581
|
+
const Languages = createLucideIcon(__iconData$e);
|
|
19271
19582
|
|
|
19272
19583
|
/**
|
|
19273
|
-
* @license lucide-react
|
|
19584
|
+
* @license lucide-react v1.44.0 - ISC
|
|
19274
19585
|
*
|
|
19275
19586
|
* This source code is licensed under the ISC license.
|
|
19276
19587
|
* See the LICENSE file in the root directory of this source tree.
|
|
19277
19588
|
*/
|
|
19278
19589
|
|
|
19279
19590
|
|
|
19280
|
-
const
|
|
19281
|
-
|
|
19282
|
-
|
|
19283
|
-
|
|
19284
|
-
|
|
19591
|
+
const __iconData$d = {
|
|
19592
|
+
name: "link",
|
|
19593
|
+
size: 24,
|
|
19594
|
+
node: [
|
|
19595
|
+
["path", { d: "M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71", key: "1cjeqo" }],
|
|
19596
|
+
["path", { d: "M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71", key: "19qd67" }]
|
|
19597
|
+
]
|
|
19598
|
+
};
|
|
19599
|
+
__iconData$d.node;
|
|
19600
|
+
const Link = createLucideIcon(__iconData$d);
|
|
19285
19601
|
|
|
19286
19602
|
/**
|
|
19287
|
-
* @license lucide-react
|
|
19603
|
+
* @license lucide-react v1.44.0 - ISC
|
|
19288
19604
|
*
|
|
19289
19605
|
* This source code is licensed under the ISC license.
|
|
19290
19606
|
* See the LICENSE file in the root directory of this source tree.
|
|
19291
19607
|
*/
|
|
19292
19608
|
|
|
19293
19609
|
|
|
19294
|
-
const
|
|
19295
|
-
|
|
19296
|
-
|
|
19297
|
-
|
|
19298
|
-
|
|
19299
|
-
|
|
19300
|
-
|
|
19301
|
-
|
|
19302
|
-
|
|
19610
|
+
const __iconData$c = {
|
|
19611
|
+
name: "list",
|
|
19612
|
+
size: 24,
|
|
19613
|
+
node: [
|
|
19614
|
+
["path", { d: "M3 5h.01", key: "18ugdj" }],
|
|
19615
|
+
["path", { d: "M3 12h.01", key: "nlz23k" }],
|
|
19616
|
+
["path", { d: "M3 19h.01", key: "noohij" }],
|
|
19617
|
+
["path", { d: "M8 5h13", key: "1pao27" }],
|
|
19618
|
+
["path", { d: "M8 12h13", key: "1za7za" }],
|
|
19619
|
+
["path", { d: "M8 19h13", key: "m83p4d" }]
|
|
19620
|
+
]
|
|
19621
|
+
};
|
|
19622
|
+
__iconData$c.node;
|
|
19623
|
+
const List$1 = createLucideIcon(__iconData$c);
|
|
19303
19624
|
|
|
19304
19625
|
/**
|
|
19305
|
-
* @license lucide-react
|
|
19626
|
+
* @license lucide-react v1.44.0 - ISC
|
|
19306
19627
|
*
|
|
19307
19628
|
* This source code is licensed under the ISC license.
|
|
19308
19629
|
* See the LICENSE file in the root directory of this source tree.
|
|
19309
19630
|
*/
|
|
19310
19631
|
|
|
19311
19632
|
|
|
19312
|
-
const
|
|
19313
|
-
|
|
19633
|
+
const __iconData$b = {
|
|
19634
|
+
name: "loader-circle",
|
|
19635
|
+
size: 24,
|
|
19636
|
+
node: [["path", { d: "M21 12a9 9 0 1 1-6.219-8.56", key: "13zald" }]],
|
|
19637
|
+
aliases: ["loader-2"]
|
|
19638
|
+
};
|
|
19639
|
+
__iconData$b.node;
|
|
19640
|
+
const LoaderCircle = createLucideIcon(__iconData$b);
|
|
19314
19641
|
|
|
19315
19642
|
/**
|
|
19316
|
-
* @license lucide-react
|
|
19643
|
+
* @license lucide-react v1.44.0 - ISC
|
|
19317
19644
|
*
|
|
19318
19645
|
* This source code is licensed under the ISC license.
|
|
19319
19646
|
* See the LICENSE file in the root directory of this source tree.
|
|
19320
19647
|
*/
|
|
19321
19648
|
|
|
19322
19649
|
|
|
19323
|
-
const
|
|
19324
|
-
|
|
19325
|
-
|
|
19326
|
-
|
|
19327
|
-
|
|
19328
|
-
|
|
19329
|
-
|
|
19650
|
+
const __iconData$a = {
|
|
19651
|
+
name: "mail-plus",
|
|
19652
|
+
size: 24,
|
|
19653
|
+
node: [
|
|
19654
|
+
["path", { d: "M22 13V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v12c0 1.1.9 2 2 2h8", key: "12jkf8" }],
|
|
19655
|
+
["path", { d: "m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7", key: "1ocrg3" }],
|
|
19656
|
+
["path", { d: "M19 16v6", key: "tddt3s" }],
|
|
19657
|
+
["path", { d: "M16 19h6", key: "xwg31i" }]
|
|
19658
|
+
]
|
|
19659
|
+
};
|
|
19660
|
+
__iconData$a.node;
|
|
19661
|
+
const MailPlus = createLucideIcon(__iconData$a);
|
|
19330
19662
|
|
|
19331
19663
|
/**
|
|
19332
|
-
* @license lucide-react
|
|
19664
|
+
* @license lucide-react v1.44.0 - ISC
|
|
19333
19665
|
*
|
|
19334
19666
|
* This source code is licensed under the ISC license.
|
|
19335
19667
|
* See the LICENSE file in the root directory of this source tree.
|
|
19336
19668
|
*/
|
|
19337
19669
|
|
|
19338
19670
|
|
|
19339
|
-
const
|
|
19340
|
-
|
|
19671
|
+
const __iconData$9 = {
|
|
19672
|
+
name: "minus",
|
|
19673
|
+
size: 24,
|
|
19674
|
+
node: [["path", { d: "M5 12h14", key: "1ays0h" }]]
|
|
19675
|
+
};
|
|
19676
|
+
__iconData$9.node;
|
|
19677
|
+
const Minus = createLucideIcon(__iconData$9);
|
|
19341
19678
|
|
|
19342
19679
|
/**
|
|
19343
|
-
* @license lucide-react
|
|
19680
|
+
* @license lucide-react v1.44.0 - ISC
|
|
19344
19681
|
*
|
|
19345
19682
|
* This source code is licensed under the ISC license.
|
|
19346
19683
|
* See the LICENSE file in the root directory of this source tree.
|
|
19347
19684
|
*/
|
|
19348
19685
|
|
|
19349
19686
|
|
|
19350
|
-
const
|
|
19351
|
-
|
|
19352
|
-
|
|
19353
|
-
|
|
19354
|
-
{
|
|
19355
|
-
|
|
19356
|
-
|
|
19357
|
-
|
|
19687
|
+
const __iconData$8 = {
|
|
19688
|
+
name: "octagon-x",
|
|
19689
|
+
size: 24,
|
|
19690
|
+
node: [
|
|
19691
|
+
["path", { d: "m15 9-6 6", key: "1uzhvr" }],
|
|
19692
|
+
[
|
|
19693
|
+
"path",
|
|
19694
|
+
{
|
|
19695
|
+
d: "M2.586 16.726A2 2 0 0 1 2 15.312V8.688a2 2 0 0 1 .586-1.414l4.688-4.688A2 2 0 0 1 8.688 2h6.624a2 2 0 0 1 1.414.586l4.688 4.688A2 2 0 0 1 22 8.688v6.624a2 2 0 0 1-.586 1.414l-4.688 4.688a2 2 0 0 1-1.414.586H8.688a2 2 0 0 1-1.414-.586z",
|
|
19696
|
+
key: "2d38gg"
|
|
19697
|
+
}
|
|
19698
|
+
],
|
|
19699
|
+
["path", { d: "m9 9 6 6", key: "z0biqf" }]
|
|
19358
19700
|
],
|
|
19359
|
-
|
|
19360
|
-
|
|
19361
|
-
|
|
19701
|
+
aliases: ["x-octagon"]
|
|
19702
|
+
};
|
|
19703
|
+
__iconData$8.node;
|
|
19704
|
+
const OctagonX = createLucideIcon(__iconData$8);
|
|
19362
19705
|
|
|
19363
19706
|
/**
|
|
19364
|
-
* @license lucide-react
|
|
19707
|
+
* @license lucide-react v1.44.0 - ISC
|
|
19365
19708
|
*
|
|
19366
19709
|
* This source code is licensed under the ISC license.
|
|
19367
19710
|
* See the LICENSE file in the root directory of this source tree.
|
|
19368
19711
|
*/
|
|
19369
19712
|
|
|
19370
19713
|
|
|
19371
|
-
const
|
|
19372
|
-
|
|
19373
|
-
|
|
19374
|
-
|
|
19375
|
-
|
|
19376
|
-
|
|
19377
|
-
|
|
19714
|
+
const __iconData$7 = {
|
|
19715
|
+
name: "refresh-cw",
|
|
19716
|
+
size: 24,
|
|
19717
|
+
node: [
|
|
19718
|
+
["path", { d: "M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8", key: "v9h5vc" }],
|
|
19719
|
+
["path", { d: "M21 3v5h-5", key: "1q7to0" }],
|
|
19720
|
+
["path", { d: "M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16", key: "3uifl3" }],
|
|
19721
|
+
["path", { d: "M8 16H3v5", key: "1cv678" }]
|
|
19722
|
+
]
|
|
19723
|
+
};
|
|
19724
|
+
__iconData$7.node;
|
|
19725
|
+
const RefreshCw = createLucideIcon(__iconData$7);
|
|
19378
19726
|
|
|
19379
19727
|
/**
|
|
19380
|
-
* @license lucide-react
|
|
19728
|
+
* @license lucide-react v1.44.0 - ISC
|
|
19381
19729
|
*
|
|
19382
19730
|
* This source code is licensed under the ISC license.
|
|
19383
19731
|
* See the LICENSE file in the root directory of this source tree.
|
|
19384
19732
|
*/
|
|
19385
19733
|
|
|
19386
19734
|
|
|
19387
|
-
const
|
|
19388
|
-
|
|
19389
|
-
|
|
19390
|
-
|
|
19391
|
-
|
|
19392
|
-
|
|
19393
|
-
|
|
19735
|
+
const __iconData$6 = {
|
|
19736
|
+
name: "repeat-2",
|
|
19737
|
+
size: 24,
|
|
19738
|
+
node: [
|
|
19739
|
+
["path", { d: "m2 9 3-3 3 3", key: "1ltn5i" }],
|
|
19740
|
+
["path", { d: "M13 18H7a2 2 0 0 1-2-2V6", key: "1r6tfw" }],
|
|
19741
|
+
["path", { d: "m22 15-3 3-3-3", key: "4rnwn2" }],
|
|
19742
|
+
["path", { d: "M11 6h6a2 2 0 0 1 2 2v10", key: "2f72bc" }]
|
|
19743
|
+
]
|
|
19744
|
+
};
|
|
19745
|
+
__iconData$6.node;
|
|
19746
|
+
const Repeat2 = createLucideIcon(__iconData$6);
|
|
19394
19747
|
|
|
19395
19748
|
/**
|
|
19396
|
-
* @license lucide-react
|
|
19749
|
+
* @license lucide-react v1.44.0 - ISC
|
|
19397
19750
|
*
|
|
19398
19751
|
* This source code is licensed under the ISC license.
|
|
19399
19752
|
* See the LICENSE file in the root directory of this source tree.
|
|
19400
19753
|
*/
|
|
19401
19754
|
|
|
19402
19755
|
|
|
19403
|
-
const
|
|
19404
|
-
|
|
19405
|
-
|
|
19406
|
-
|
|
19407
|
-
|
|
19756
|
+
const __iconData$5 = {
|
|
19757
|
+
name: "rotate-cw",
|
|
19758
|
+
size: 24,
|
|
19759
|
+
node: [
|
|
19760
|
+
["path", { d: "M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8", key: "1p45f6" }],
|
|
19761
|
+
["path", { d: "M21 3v5h-5", key: "1q7to0" }]
|
|
19762
|
+
]
|
|
19763
|
+
};
|
|
19764
|
+
__iconData$5.node;
|
|
19765
|
+
const RotateCw = createLucideIcon(__iconData$5);
|
|
19408
19766
|
|
|
19409
19767
|
/**
|
|
19410
|
-
* @license lucide-react
|
|
19768
|
+
* @license lucide-react v1.44.0 - ISC
|
|
19411
19769
|
*
|
|
19412
19770
|
* This source code is licensed under the ISC license.
|
|
19413
19771
|
* See the LICENSE file in the root directory of this source tree.
|
|
19414
19772
|
*/
|
|
19415
19773
|
|
|
19416
19774
|
|
|
19417
|
-
const
|
|
19418
|
-
|
|
19419
|
-
|
|
19420
|
-
|
|
19421
|
-
|
|
19775
|
+
const __iconData$4 = {
|
|
19776
|
+
name: "settings",
|
|
19777
|
+
size: 24,
|
|
19778
|
+
node: [
|
|
19779
|
+
[
|
|
19780
|
+
"path",
|
|
19781
|
+
{
|
|
19782
|
+
d: "M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915",
|
|
19783
|
+
key: "1i5ecw"
|
|
19784
|
+
}
|
|
19785
|
+
],
|
|
19786
|
+
["circle", { cx: "12", cy: "12", r: "3", key: "1v7zrd" }]
|
|
19787
|
+
]
|
|
19788
|
+
};
|
|
19789
|
+
__iconData$4.node;
|
|
19790
|
+
const Settings = createLucideIcon(__iconData$4);
|
|
19422
19791
|
|
|
19423
19792
|
/**
|
|
19424
|
-
* @license lucide-react
|
|
19793
|
+
* @license lucide-react v1.44.0 - ISC
|
|
19425
19794
|
*
|
|
19426
19795
|
* This source code is licensed under the ISC license.
|
|
19427
19796
|
* See the LICENSE file in the root directory of this source tree.
|
|
19428
19797
|
*/
|
|
19429
19798
|
|
|
19430
19799
|
|
|
19431
|
-
const
|
|
19432
|
-
|
|
19433
|
-
|
|
19434
|
-
|
|
19435
|
-
|
|
19436
|
-
|
|
19437
|
-
|
|
19438
|
-
|
|
19439
|
-
|
|
19440
|
-
|
|
19441
|
-
const Settings = createLucideIcon("settings", __iconNode$3);
|
|
19800
|
+
const __iconData$3 = {
|
|
19801
|
+
name: "search",
|
|
19802
|
+
size: 24,
|
|
19803
|
+
node: [
|
|
19804
|
+
["path", { d: "m21 21-4.34-4.34", key: "14j7rj" }],
|
|
19805
|
+
["circle", { cx: "11", cy: "11", r: "8", key: "4ej97u" }]
|
|
19806
|
+
]
|
|
19807
|
+
};
|
|
19808
|
+
__iconData$3.node;
|
|
19809
|
+
const Search = createLucideIcon(__iconData$3);
|
|
19442
19810
|
|
|
19443
19811
|
/**
|
|
19444
|
-
* @license lucide-react
|
|
19812
|
+
* @license lucide-react v1.44.0 - ISC
|
|
19445
19813
|
*
|
|
19446
19814
|
* This source code is licensed under the ISC license.
|
|
19447
19815
|
* See the LICENSE file in the root directory of this source tree.
|
|
19448
19816
|
*/
|
|
19449
19817
|
|
|
19450
19818
|
|
|
19451
|
-
const
|
|
19452
|
-
|
|
19453
|
-
|
|
19454
|
-
|
|
19455
|
-
|
|
19456
|
-
|
|
19457
|
-
|
|
19458
|
-
|
|
19819
|
+
const __iconData$2 = {
|
|
19820
|
+
name: "trash",
|
|
19821
|
+
size: 24,
|
|
19822
|
+
node: [
|
|
19823
|
+
["path", { d: "M10 11v6", key: "nco0om" }],
|
|
19824
|
+
["path", { d: "M14 11v6", key: "outv1u" }],
|
|
19825
|
+
["path", { d: "M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6", key: "miytrc" }],
|
|
19826
|
+
["path", { d: "M3 6h18", key: "d0wm0j" }],
|
|
19827
|
+
["path", { d: "M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2", key: "e791ji" }]
|
|
19828
|
+
],
|
|
19829
|
+
aliases: ["trash-2"]
|
|
19830
|
+
};
|
|
19831
|
+
__iconData$2.node;
|
|
19832
|
+
const Trash = createLucideIcon(__iconData$2);
|
|
19459
19833
|
|
|
19460
19834
|
/**
|
|
19461
|
-
* @license lucide-react
|
|
19835
|
+
* @license lucide-react v1.44.0 - ISC
|
|
19462
19836
|
*
|
|
19463
19837
|
* This source code is licensed under the ISC license.
|
|
19464
19838
|
* See the LICENSE file in the root directory of this source tree.
|
|
19465
19839
|
*/
|
|
19466
19840
|
|
|
19467
19841
|
|
|
19468
|
-
const
|
|
19469
|
-
|
|
19470
|
-
|
|
19471
|
-
|
|
19472
|
-
|
|
19473
|
-
|
|
19474
|
-
|
|
19842
|
+
const __iconData$1 = {
|
|
19843
|
+
name: "triangle-alert",
|
|
19844
|
+
size: 24,
|
|
19845
|
+
node: [
|
|
19846
|
+
[
|
|
19847
|
+
"path",
|
|
19848
|
+
{
|
|
19849
|
+
d: "m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",
|
|
19850
|
+
key: "wmoenq"
|
|
19851
|
+
}
|
|
19852
|
+
],
|
|
19853
|
+
["path", { d: "M12 9v4", key: "juzpu7" }],
|
|
19854
|
+
["path", { d: "M12 17h.01", key: "p32p05" }]
|
|
19475
19855
|
],
|
|
19476
|
-
|
|
19477
|
-
|
|
19478
|
-
|
|
19479
|
-
const TriangleAlert = createLucideIcon(
|
|
19856
|
+
aliases: ["alert-triangle"]
|
|
19857
|
+
};
|
|
19858
|
+
__iconData$1.node;
|
|
19859
|
+
const TriangleAlert = createLucideIcon(__iconData$1);
|
|
19480
19860
|
|
|
19481
19861
|
/**
|
|
19482
|
-
* @license lucide-react
|
|
19862
|
+
* @license lucide-react v1.44.0 - ISC
|
|
19483
19863
|
*
|
|
19484
19864
|
* This source code is licensed under the ISC license.
|
|
19485
19865
|
* See the LICENSE file in the root directory of this source tree.
|
|
19486
19866
|
*/
|
|
19487
19867
|
|
|
19488
19868
|
|
|
19489
|
-
const
|
|
19490
|
-
|
|
19491
|
-
|
|
19492
|
-
|
|
19493
|
-
|
|
19869
|
+
const __iconData = {
|
|
19870
|
+
name: "x",
|
|
19871
|
+
size: 24,
|
|
19872
|
+
node: [
|
|
19873
|
+
["path", { d: "M18 6 6 18", key: "1bl5f8" }],
|
|
19874
|
+
["path", { d: "m6 6 12 12", key: "d8bk6v" }]
|
|
19875
|
+
]
|
|
19876
|
+
};
|
|
19877
|
+
__iconData.node;
|
|
19878
|
+
const X = createLucideIcon(__iconData);
|
|
19494
19879
|
|
|
19495
19880
|
const Toaster = ({ ...props }) => {
|
|
19496
19881
|
const { theme = 'system' } = z();
|
|
@@ -36436,54 +36821,21 @@ Defaulting to \`null\`.`;
|
|
|
36436
36821
|
}
|
|
36437
36822
|
|
|
36438
36823
|
const rowsPerPageOptions = [10, 25, 50];
|
|
36439
|
-
|
|
36440
|
-
const
|
|
36441
|
-
|
|
36442
|
-
|
|
36443
|
-
const UserErrorsTable = ({ errors, isLoading, onSelect }) => {
|
|
36444
|
-
const [search, setSearch] = reactExports.useState('');
|
|
36445
|
-
const [isAscending, setIsAscending] = reactExports.useState(false);
|
|
36446
|
-
const [page, setPage] = reactExports.useState(1);
|
|
36447
|
-
const [rowsPerPage, setRowsPerPage] = reactExports.useState(rowsPerPageOptions[0]);
|
|
36448
|
-
const filteredErrors = reactExports.useMemo(() => {
|
|
36449
|
-
const normalizedSearch = search.trim().toLocaleLowerCase();
|
|
36450
|
-
const matchingErrors = normalizedSearch
|
|
36451
|
-
? errors.filter((error) =>
|
|
36452
|
-
// Typed as string, but the payload is unvalidated API data - a row
|
|
36453
|
-
// with a missing field must not take the whole table down.
|
|
36454
|
-
[error.formattedDate, error.action, error.message].some((value) => String(value !== null && value !== void 0 ? value : '')
|
|
36455
|
-
.toLocaleLowerCase()
|
|
36456
|
-
.includes(normalizedSearch)))
|
|
36457
|
-
: errors;
|
|
36458
|
-
return [...matchingErrors].sort((first, second) => {
|
|
36459
|
-
const difference = getTimestamp(first.createdAt) - getTimestamp(second.createdAt);
|
|
36460
|
-
return isAscending ? difference : -difference;
|
|
36461
|
-
});
|
|
36462
|
-
}, [errors, isAscending, search]);
|
|
36463
|
-
const pageCount = Math.max(1, Math.ceil(filteredErrors.length / rowsPerPage));
|
|
36464
|
-
reactExports.useEffect(() => {
|
|
36465
|
-
setPage((currentPage) => Math.min(currentPage, pageCount));
|
|
36466
|
-
}, [pageCount]);
|
|
36467
|
-
const visibleErrors = filteredErrors.slice((page - 1) * rowsPerPage, page * rowsPerPage);
|
|
36468
|
-
const firstVisibleRow = filteredErrors.length === 0 ? 0 : (page - 1) * rowsPerPage + 1;
|
|
36469
|
-
const lastVisibleRow = Math.min(page * rowsPerPage, filteredErrors.length);
|
|
36824
|
+
const UserErrorsTable = ({ errors, isLoading, total, currentPage, rowsPerPage, searchText, isSortedAsc, onSelect, onOptionsChange, }) => {
|
|
36825
|
+
const pageCount = Math.max(1, Math.ceil(total / rowsPerPage));
|
|
36826
|
+
const firstVisibleRow = total === 0 ? 0 : (currentPage - 1) * rowsPerPage + 1;
|
|
36827
|
+
const lastVisibleRow = Math.min(currentPage * rowsPerPage, total);
|
|
36470
36828
|
const handleRowKeyDown = (event, error) => {
|
|
36471
36829
|
if (event.key === 'Enter' || event.key === ' ') {
|
|
36472
36830
|
event.preventDefault();
|
|
36473
36831
|
onSelect(error);
|
|
36474
36832
|
}
|
|
36475
36833
|
};
|
|
36476
|
-
return (jsxRuntimeExports.jsxs("div", { "data-slot": "user-errors-table", className: "overflow-hidden rounded-lg border bg-card text-card-foreground", children: [jsxRuntimeExports.jsx("div", { "data-slot": "table-toolbar", className: "border-b p-4", children: jsxRuntimeExports.jsxs("div", { className: "relative max-w-md", children: [jsxRuntimeExports.jsx(Search, { className: "pointer-events-none absolute top-1/2 left-3 size-4 -translate-y-1/2 text-muted-foreground" }), jsxRuntimeExports.jsx(Input, { value:
|
|
36477
|
-
setSearch(event.target.value);
|
|
36478
|
-
setPage(1);
|
|
36479
|
-
}, className: "h-9 pl-9", placeholder: "Search error logs", "aria-label": "Search error logs" })] }) }), jsxRuntimeExports.jsxs(Table, { children: [jsxRuntimeExports.jsx(TableHeader, { children: jsxRuntimeExports.jsxs(TableRow, { className: "hover:bg-transparent", children: [jsxRuntimeExports.jsx(TableHead, { className: "w-1/3 px-4", "aria-sort": isAscending ? 'ascending' : 'descending', children: jsxRuntimeExports.jsxs(Button, { type: "button", variant: "ghost", className: "-ml-2", onClick: () => setIsAscending((currentValue) => !currentValue), "aria-label": `Sort by date ${isAscending ? 'descending' : 'ascending'}`, children: ["Date", isAscending ? (jsxRuntimeExports.jsx(ArrowUp, { "aria-hidden": "true" })) : (jsxRuntimeExports.jsx(ArrowDown, { "aria-hidden": "true" }))] }) }), jsxRuntimeExports.jsx(TableHead, { className: "w-1/3 px-4", children: "Action" }), jsxRuntimeExports.jsx(TableHead, { className: "w-1/3 px-4", children: "Message" })] }) }), jsxRuntimeExports.jsx(TableBody, { "aria-busy": isLoading, children: isLoading ? (Array.from({ length: 3 }).map((_, index) => (jsxRuntimeExports.jsx(TableRow, { children: [0, 1, 2].map((cell) => (jsxRuntimeExports.jsxs(TableCell, { className: "h-12 px-4", children: [index === 0 && cell === 0 && (jsxRuntimeExports.jsx("span", { className: "sr-only", role: "status", children: "Loading error logs" })), jsxRuntimeExports.jsx("div", { className: "h-4 max-w-48 animate-pulse rounded bg-muted" })] }, cell))) }, index)))) : visibleErrors.length > 0 ? (visibleErrors.map((error) => (jsxRuntimeExports.jsxs(TableRow, { tabIndex: 0, className: "cursor-pointer focus-visible:bg-muted/50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset", onClick: () => onSelect(error), onKeyDown: (event) => handleRowKeyDown(event, error), "aria-label": `Open error details for ${error.action} on ${error.formattedDate}`, children: [jsxRuntimeExports.jsx(TableCell, { className: "h-12 px-4 font-medium whitespace-normal", children: error.formattedDate }), jsxRuntimeExports.jsx(TableCell, { className: "h-12 px-4 whitespace-normal", children: error.action }), jsxRuntimeExports.jsx(TableCell, { className: "h-12 max-w-0 px-4 whitespace-normal", children: jsxRuntimeExports.jsx("span", { className: "line-clamp-2 break-words", children: error.message }) })] }, error.id)))) : (jsxRuntimeExports.jsx(TableRow, { className: "hover:bg-transparent", children: jsxRuntimeExports.jsx(TableCell, { colSpan: 3, className: "h-32 text-center text-muted-foreground", children: search ? 'No error logs match your search.' : 'No error logs found.' }) })) })] }), jsxRuntimeExports.jsxs("div", { "data-slot": "table-pagination", className: "flex flex-col gap-3 border-t px-4 py-2 sm:flex-row sm:items-center sm:justify-end", children: [jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2 text-sm", children: [jsxRuntimeExports.jsx("span", { className: "whitespace-nowrap text-muted-foreground", children: "Rows per page" }), jsxRuntimeExports.jsxs(Select, { value: String(rowsPerPage), onValueChange: (value) => {
|
|
36480
|
-
setRowsPerPage(Number(value));
|
|
36481
|
-
setPage(1);
|
|
36482
|
-
}, children: [jsxRuntimeExports.jsx(SelectTrigger, { className: "w-18", "aria-label": "Rows per page", children: jsxRuntimeExports.jsx(SelectValue, {}) }), jsxRuntimeExports.jsx(SelectContent, { align: "end", children: rowsPerPageOptions.map((option) => (jsxRuntimeExports.jsx(SelectItem, { value: String(option), children: option }, option))) })] })] }), jsxRuntimeExports.jsxs("p", { className: "m-0 min-w-24 text-sm text-muted-foreground", "aria-live": "polite", children: [firstVisibleRow, "-", lastVisibleRow, " of ", filteredErrors.length] }), jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-1", children: [jsxRuntimeExports.jsx(Button, { type: "button", variant: "ghost", size: "icon", onClick: () => setPage(1), disabled: page === 1, "aria-label": "Go to first page", children: jsxRuntimeExports.jsx(ChevronsLeft, {}) }), jsxRuntimeExports.jsx(Button, { type: "button", variant: "ghost", size: "icon", onClick: () => setPage((currentPage) => Math.max(1, currentPage - 1)), disabled: page === 1, "aria-label": "Go to previous page", children: jsxRuntimeExports.jsx(ChevronLeft, {}) }), jsxRuntimeExports.jsx(Button, { type: "button", variant: "ghost", size: "icon", onClick: () => setPage((currentPage) => Math.min(pageCount, currentPage + 1)), disabled: page === pageCount, "aria-label": "Go to next page", children: jsxRuntimeExports.jsx(ChevronRight, {}) }), jsxRuntimeExports.jsx(Button, { type: "button", variant: "ghost", size: "icon", onClick: () => setPage(pageCount), disabled: page === pageCount, "aria-label": "Go to last page", children: jsxRuntimeExports.jsx(ChevronsRight, {}) })] })] })] }));
|
|
36834
|
+
return (jsxRuntimeExports.jsxs("div", { "data-slot": "user-errors-table", className: "overflow-hidden rounded-lg border bg-card text-card-foreground", children: [jsxRuntimeExports.jsx("div", { "data-slot": "table-toolbar", className: "border-b p-4", children: jsxRuntimeExports.jsxs("div", { className: "relative max-w-md", children: [jsxRuntimeExports.jsx(Search, { className: "pointer-events-none absolute top-1/2 left-3 size-4 -translate-y-1/2 text-muted-foreground" }), jsxRuntimeExports.jsx(Input, { value: searchText, onChange: (event) => onOptionsChange({ searchText: event.target.value, currentPage: 1 }), className: "h-9 pl-9", placeholder: "Search by action or message", "aria-label": "Search error logs by action or message" })] }) }), jsxRuntimeExports.jsxs(Table, { children: [jsxRuntimeExports.jsx(TableHeader, { children: jsxRuntimeExports.jsxs(TableRow, { className: "hover:bg-transparent", children: [jsxRuntimeExports.jsx(TableHead, { className: "w-1/3 px-4", "aria-sort": isSortedAsc ? 'ascending' : 'descending', children: jsxRuntimeExports.jsxs(Button, { type: "button", variant: "ghost", className: "-ml-2", onClick: () => onOptionsChange({ isSortedAsc: !isSortedAsc, currentPage: 1 }), "aria-label": `Sort by date ${isSortedAsc ? 'descending' : 'ascending'}`, children: ["Date", isSortedAsc ? (jsxRuntimeExports.jsx(ArrowUp, { "aria-hidden": "true" })) : (jsxRuntimeExports.jsx(ArrowDown, { "aria-hidden": "true" }))] }) }), jsxRuntimeExports.jsx(TableHead, { className: "w-1/3 px-4", children: "Action" }), jsxRuntimeExports.jsx(TableHead, { className: "w-1/3 px-4", children: "Message" })] }) }), jsxRuntimeExports.jsx(TableBody, { "aria-busy": isLoading, children: isLoading ? (Array.from({ length: 3 }).map((_, index) => (jsxRuntimeExports.jsx(TableRow, { children: [0, 1, 2].map((cell) => (jsxRuntimeExports.jsxs(TableCell, { className: "h-12 px-4", children: [index === 0 && cell === 0 && (jsxRuntimeExports.jsx("span", { className: "sr-only", role: "status", children: "Loading error logs" })), jsxRuntimeExports.jsx("div", { className: "h-4 max-w-48 animate-pulse rounded bg-muted" })] }, cell))) }, index)))) : errors.length > 0 ? (errors.map((error) => (jsxRuntimeExports.jsxs(TableRow, { tabIndex: 0, className: "cursor-pointer focus-visible:bg-muted/50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset", onClick: () => onSelect(error), onKeyDown: (event) => handleRowKeyDown(event, error), "aria-label": `Open error details for ${error.action} on ${error.formattedDate}`, children: [jsxRuntimeExports.jsx(TableCell, { className: "h-12 px-4 font-medium whitespace-normal", children: error.formattedDate }), jsxRuntimeExports.jsx(TableCell, { className: "h-12 px-4 whitespace-normal", children: error.action }), jsxRuntimeExports.jsx(TableCell, { className: "h-12 max-w-0 px-4 whitespace-normal", children: jsxRuntimeExports.jsx("span", { className: "line-clamp-2 break-words", children: error.message }) })] }, error.id)))) : (jsxRuntimeExports.jsx(TableRow, { className: "hover:bg-transparent", children: jsxRuntimeExports.jsx(TableCell, { colSpan: 3, className: "h-32 text-center text-muted-foreground", children: searchText ? 'No error logs match your search.' : 'No error logs found.' }) })) })] }), jsxRuntimeExports.jsxs("div", { "data-slot": "table-pagination", className: "flex flex-col gap-3 border-t px-4 py-2 sm:flex-row sm:items-center sm:justify-end", children: [jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2 text-sm", children: [jsxRuntimeExports.jsx("span", { className: "whitespace-nowrap text-muted-foreground", children: "Rows per page" }), jsxRuntimeExports.jsxs(Select, { value: String(rowsPerPage), onValueChange: (value) => onOptionsChange({ rowsPerPage: Number(value), currentPage: 1 }), children: [jsxRuntimeExports.jsx(SelectTrigger, { className: "w-18", "aria-label": "Rows per page", children: jsxRuntimeExports.jsx(SelectValue, {}) }), jsxRuntimeExports.jsx(SelectContent, { align: "end", children: rowsPerPageOptions.map((option) => (jsxRuntimeExports.jsx(SelectItem, { value: String(option), children: option }, option))) })] })] }), jsxRuntimeExports.jsxs("p", { className: "m-0 min-w-24 text-sm text-muted-foreground", "aria-live": "polite", children: [firstVisibleRow, "-", lastVisibleRow, " of ", total] }), jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-1", children: [jsxRuntimeExports.jsx(Button, { type: "button", variant: "ghost", size: "icon", onClick: () => onOptionsChange({ currentPage: 1 }), disabled: currentPage === 1, "aria-label": "Go to first page", children: jsxRuntimeExports.jsx(ChevronsLeft, {}) }), jsxRuntimeExports.jsx(Button, { type: "button", variant: "ghost", size: "icon", onClick: () => onOptionsChange({ currentPage: Math.max(1, currentPage - 1) }), disabled: currentPage === 1, "aria-label": "Go to previous page", children: jsxRuntimeExports.jsx(ChevronLeft, {}) }), jsxRuntimeExports.jsx(Button, { type: "button", variant: "ghost", size: "icon", onClick: () => onOptionsChange({ currentPage: Math.min(pageCount, currentPage + 1) }), disabled: currentPage === pageCount, "aria-label": "Go to next page", children: jsxRuntimeExports.jsx(ChevronRight, {}) }), jsxRuntimeExports.jsx(Button, { type: "button", variant: "ghost", size: "icon", onClick: () => onOptionsChange({ currentPage: pageCount }), disabled: currentPage === pageCount, "aria-label": "Go to last page", children: jsxRuntimeExports.jsx(ChevronsRight, {}) })] })] })] }));
|
|
36483
36835
|
};
|
|
36484
36836
|
|
|
36485
|
-
const IntegrationView = ({ appComponentRef, userErrors, isUserErrorsLoading, onSelectUserError, isErrorLogsVisible, ...integrationProps }) => {
|
|
36486
|
-
return (jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsx("div", { style: { display: isErrorLogsVisible ? 'none' : undefined }, children: jsxRuntimeExports.jsx(SimpleIntegration, { ref: appComponentRef, ...integrationProps }) }), jsxRuntimeExports.jsxs("div", { id: "user-errors", style: { display: isErrorLogsVisible ? undefined : 'none' }, children: [jsxRuntimeExports.jsx(UserErrorsTable, { errors: userErrors, isLoading: isUserErrorsLoading, onSelect: onSelectUserError }), jsxRuntimeExports.jsx(AppAlert, { className: "mt-4", children: "This table displays the most recent error logs from the past month. Logs older than one month will be automatically deleted." })] })] }));
|
|
36837
|
+
const IntegrationView = ({ appComponentRef, userErrors, isUserErrorsLoading, userErrorsTotal, userErrorsCurrentPage, userErrorsRowsPerPage, userErrorsSearchText, userErrorsIsSortedAsc, onSelectUserError, onUserErrorsOptionsChange, isErrorLogsVisible, ...integrationProps }) => {
|
|
36838
|
+
return (jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsx("div", { style: { display: isErrorLogsVisible ? 'none' : undefined }, children: jsxRuntimeExports.jsx(SimpleIntegration, { ref: appComponentRef, ...integrationProps }) }), jsxRuntimeExports.jsxs("div", { id: "user-errors", style: { display: isErrorLogsVisible ? undefined : 'none' }, children: [jsxRuntimeExports.jsx(UserErrorsTable, { errors: userErrors, isLoading: isUserErrorsLoading, total: userErrorsTotal, currentPage: userErrorsCurrentPage, rowsPerPage: userErrorsRowsPerPage, searchText: userErrorsSearchText, isSortedAsc: userErrorsIsSortedAsc, onSelect: onSelectUserError, onOptionsChange: onUserErrorsOptionsChange }), jsxRuntimeExports.jsx(AppAlert, { className: "mt-4", children: "This table displays the most recent error logs from the past month. Logs older than one month will be automatically deleted." })] })] }));
|
|
36487
36839
|
};
|
|
36488
36840
|
|
|
36489
36841
|
function Progress({ className, value, ...props }) {
|
|
@@ -36569,7 +36921,7 @@ Defaulting to \`null\`.`;
|
|
|
36569
36921
|
if (jobList.length === 0) {
|
|
36570
36922
|
return null;
|
|
36571
36923
|
}
|
|
36572
|
-
return (jsxRuntimeExports.jsxs(Card, { role: "region", "aria-label": "Background activities", className: "fixed z-50 w-[min(450px,calc(100vw-2rem))] gap-0 overflow-hidden py-0 shadow-xl", style: { right: position.right, bottom: position.bottom }, children: [jsxRuntimeExports.jsxs("div", { className: "flex cursor-move touch-none items-center justify-between gap-3 bg-primary py-2 pr-2 pl-4 text-primary-foreground select-none", onPointerDown: startDragging, onPointerMove: drag, onPointerUp: () => (dragRef.current = null), onPointerCancel: () => (dragRef.current = null), children: [jsxRuntimeExports.jsx("p", { className: "min-w-0 text-sm font-medium", "aria-live": "polite", children: getSummary(activeCount, completedCount, failedCount) }), jsxRuntimeExports.jsxs("div", { className: "flex shrink-0 items-center gap-1", children: [activeCount > 0 && jsxRuntimeExports.jsx(Spinner, { className: "mr-1 size-4" }), jsxRuntimeExports.jsx(Button, { type: "button", variant: "ghost", size: "icon-sm", className: "text-primary-foreground hover:bg-primary-foreground/10 hover:text-primary-foreground", "aria-label": "Clear activities list", title: "Clear activities list", onClick: () => setJobs({}), children: jsxRuntimeExports.jsx(
|
|
36924
|
+
return (jsxRuntimeExports.jsxs(Card, { role: "region", "aria-label": "Background activities", className: "fixed z-50 w-[min(450px,calc(100vw-2rem))] gap-0 overflow-hidden py-0 shadow-xl", style: { right: position.right, bottom: position.bottom }, children: [jsxRuntimeExports.jsxs("div", { className: "flex cursor-move touch-none items-center justify-between gap-3 bg-primary py-2 pr-2 pl-4 text-primary-foreground select-none", onPointerDown: startDragging, onPointerMove: drag, onPointerUp: () => (dragRef.current = null), onPointerCancel: () => (dragRef.current = null), children: [jsxRuntimeExports.jsx("p", { className: "min-w-0 text-sm font-medium", "aria-live": "polite", children: getSummary(activeCount, completedCount, failedCount) }), jsxRuntimeExports.jsxs("div", { className: "flex shrink-0 items-center gap-1", children: [activeCount > 0 && jsxRuntimeExports.jsx(Spinner, { className: "mr-1 size-4" }), jsxRuntimeExports.jsx(Button, { type: "button", variant: "ghost", size: "icon-sm", className: "text-primary-foreground hover:bg-primary-foreground/10 hover:text-primary-foreground", "aria-label": "Clear activities list", title: "Clear activities list", onClick: () => setJobs({}), children: jsxRuntimeExports.jsx(Trash, {}) }), jsxRuntimeExports.jsx(Button, { type: "button", variant: "ghost", size: "icon-sm", className: "text-primary-foreground hover:bg-primary-foreground/10 hover:text-primary-foreground", "aria-expanded": isExpanded, "aria-label": isExpanded ? 'Collapse activity details' : 'Expand activity details', title: isExpanded ? 'Collapse activity details' : 'Expand activity details', onClick: () => setIsExpanded((value) => !value), children: isExpanded ? jsxRuntimeExports.jsx(ChevronDown, {}) : jsxRuntimeExports.jsx(ChevronUp, {}) })] })] }), isExpanded && (jsxRuntimeExports.jsx("div", { className: "max-h-80 overflow-y-auto", children: jobList.map((job) => {
|
|
36573
36925
|
const progress = Math.min(100, Math.max(0, Number(job.progress) || 0));
|
|
36574
36926
|
const isActive = !job.isFailed && (!job.progress || progress < 100);
|
|
36575
36927
|
const title = job.title || 'Untitled activity';
|
|
@@ -37754,7 +38106,7 @@ Defaulting to \`null\`.`;
|
|
|
37754
38106
|
async function getActiveJobs() {
|
|
37755
38107
|
try {
|
|
37756
38108
|
const restParams = await checkOrigin();
|
|
37757
|
-
const jobs = await checkResponse(await fetch(`api/jobs${restParams}`));
|
|
38109
|
+
const jobs = await checkResponse(await fetch(`api/all-jobs${restParams}`));
|
|
37758
38110
|
if (!Array.isArray(jobs)) {
|
|
37759
38111
|
return;
|
|
37760
38112
|
}
|
|
@@ -37828,7 +38180,7 @@ Defaulting to \`null\`.`;
|
|
|
37828
38180
|
}
|
|
37829
38181
|
try {
|
|
37830
38182
|
const restParams = await checkOrigin();
|
|
37831
|
-
const job = await checkResponse(await fetch('api/
|
|
38183
|
+
const job = await checkResponse(await fetch('api/job-info' + restParams + '&jobId=' + jobId));
|
|
37832
38184
|
const isFailed = [JOB_STATUS.failed, JOB_STATUS.canceled].includes(job.status);
|
|
37833
38185
|
const progress = isFailed || JOB_STATUS.finished === job.status ? 100 : job.progress;
|
|
37834
38186
|
const info = JOB_STATUS.canceled === job.status ? `Cancelled\n${job.info || ''}` : job.info;
|
|
@@ -48780,7 +49132,7 @@ Defaulting to \`null\`.`;
|
|
|
48780
49132
|
return reactExports.useRef(null);
|
|
48781
49133
|
}
|
|
48782
49134
|
|
|
48783
|
-
const AppDialog = reactExports.forwardRef(({ id, title, width = '70', showCloseButton = true, children, footer, className }, ref) => {
|
|
49135
|
+
const AppDialog = reactExports.forwardRef(({ id, title, width = '70', showCloseButton = true, children, footer, className, onClose }, ref) => {
|
|
48784
49136
|
const [isOpen, setIsOpen] = reactExports.useState(false);
|
|
48785
49137
|
const [portalContainer, setPortalContainer] = reactExports.useState(null);
|
|
48786
49138
|
const contentRef = reactExports.useRef(null);
|
|
@@ -48795,7 +49147,12 @@ Defaulting to \`null\`.`;
|
|
|
48795
49147
|
: width === '65'
|
|
48796
49148
|
? 'sm:max-w-4xl'
|
|
48797
49149
|
: 'sm:max-w-5xl';
|
|
48798
|
-
return (jsxRuntimeExports.jsx(Dialog, { open: isOpen, onOpenChange:
|
|
49150
|
+
return (jsxRuntimeExports.jsx(Dialog, { open: isOpen, onOpenChange: (open) => {
|
|
49151
|
+
setIsOpen(open);
|
|
49152
|
+
if (!open) {
|
|
49153
|
+
onClose === null || onClose === void 0 ? void 0 : onClose();
|
|
49154
|
+
}
|
|
49155
|
+
}, children: jsxRuntimeExports.jsx(DialogContent, { ref: contentRef, id: id, showCloseButton: showCloseButton, onOpenAutoFocus: (event) => {
|
|
48799
49156
|
var _a;
|
|
48800
49157
|
event.preventDefault();
|
|
48801
49158
|
(_a = contentRef.current) === null || _a === void 0 ? void 0 : _a.focus();
|
|
@@ -49119,7 +49476,8 @@ Defaulting to \`null\`.`;
|
|
|
49119
49476
|
}
|
|
49120
49477
|
}
|
|
49121
49478
|
function getUserErrorDetail(error) {
|
|
49122
|
-
|
|
49479
|
+
// `data` is loaded separately, right after the modal opens
|
|
49480
|
+
const data = error.data && isJSON(error.data) ? JSON.parse(error.data) : null;
|
|
49123
49481
|
const preClassName = 'm-0 max-w-full overflow-x-auto whitespace-pre-wrap break-words rounded-lg bg-muted p-3 text-xs leading-relaxed text-foreground ring-1 ring-border dark:bg-background';
|
|
49124
49482
|
const rows = [
|
|
49125
49483
|
{ label: 'Action', value: error.action },
|
|
@@ -49129,6 +49487,10 @@ Defaulting to \`null\`.`;
|
|
|
49129
49487
|
},
|
|
49130
49488
|
{ label: 'Date/time', value: error.formattedDate },
|
|
49131
49489
|
];
|
|
49490
|
+
if (!data) {
|
|
49491
|
+
rows.push({ label: 'Details', value: jsxRuntimeExports.jsx(Skeleton, { className: "h-8 w-full" }) });
|
|
49492
|
+
return renderUserErrorDetailRows(rows);
|
|
49493
|
+
}
|
|
49132
49494
|
if (data.requestParams) {
|
|
49133
49495
|
rows.push({ label: 'Method', value: data.requestParams.method });
|
|
49134
49496
|
}
|
|
@@ -49157,12 +49519,17 @@ Defaulting to \`null\`.`;
|
|
|
49157
49519
|
rows.push({ label: 'App Data', value: data.appData });
|
|
49158
49520
|
}
|
|
49159
49521
|
}
|
|
49522
|
+
return renderUserErrorDetailRows(rows);
|
|
49523
|
+
}
|
|
49524
|
+
function renderUserErrorDetailRows(rows) {
|
|
49160
49525
|
return (jsxRuntimeExports.jsx("div", { className: "min-w-0", children: jsxRuntimeExports.jsx("dl", { className: "grid gap-4", children: rows.map((row) => (jsxRuntimeExports.jsxs("div", { className: "grid gap-1 sm:grid-cols-[10rem_minmax(0,1fr)] sm:gap-6", children: [jsxRuntimeExports.jsx("dt", { className: "text-sm font-medium text-muted-foreground", children: row.label }), jsxRuntimeExports.jsx("dd", { className: "m-0 min-w-0 break-words text-sm text-foreground", children: row.value })] }, row.label))) }) }));
|
|
49161
49526
|
}
|
|
49162
|
-
const UserErrorDetailModal = ({ modalRef, selectedUserError }) => {
|
|
49163
|
-
return (jsxRuntimeExports.jsx(AppDialog, { ref: modalRef, id: "user-error-detail", width: "60", title: "Details", children: selectedUserError && getUserErrorDetail(selectedUserError) }));
|
|
49527
|
+
const UserErrorDetailModal = ({ modalRef, selectedUserError, onClose }) => {
|
|
49528
|
+
return (jsxRuntimeExports.jsx(AppDialog, { ref: modalRef, id: "user-error-detail", width: "60", title: "Details", onClose: onClose, children: selectedUserError && getUserErrorDetail(selectedUserError) }));
|
|
49164
49529
|
};
|
|
49165
49530
|
|
|
49531
|
+
const USER_ERRORS_PER_PAGE = 10;
|
|
49532
|
+
const USER_ERRORS_SEARCH_DEBOUNCE = 300;
|
|
49166
49533
|
const MainPage = (props) => {
|
|
49167
49534
|
const { name, userId, notice, checkSubscription, isManager, isOwner, infoModal, configurationFields, config: configString, syncNewElements, withCronSync, webhooks, integrationOneLevelFetching, integrationSearchListener, excludedTargetLanguages, filtering, hasOrganization, zenModeUrl, asyncProgress = { checkInterval: 3000 }, reloadOnConfigSave, progressiveCrowdinFilesLoading, integrationButtonMenuItems, crowdinButtonMenuItems, } = props;
|
|
49168
49535
|
const config = reactExports.useRef(configString ? JSON.parse(configString.replace(/\\n/g, '\\\\n')) : {});
|
|
@@ -49174,6 +49541,9 @@ Defaulting to \`null\`.`;
|
|
|
49174
49541
|
const scheduleModalRef = reactExports.useRef(null);
|
|
49175
49542
|
const permissionsModalRef = reactExports.useRef(null);
|
|
49176
49543
|
const userErrorDetailModalRef = reactExports.useRef(null);
|
|
49544
|
+
const userErrorsRequestId = reactExports.useRef(0);
|
|
49545
|
+
const userErrorDetailRequestId = reactExports.useRef(0);
|
|
49546
|
+
const userErrorsSearchTimer = reactExports.useRef(undefined);
|
|
49177
49547
|
const subscriptionLink = reactExports.useRef('');
|
|
49178
49548
|
const refreshDependencies = useFieldDependencies(configurationFields);
|
|
49179
49549
|
const [isNoticeVisible, setIsNoticeVisible] = reactExports.useState(false);
|
|
@@ -49181,6 +49551,11 @@ Defaulting to \`null\`.`;
|
|
|
49181
49551
|
const [isErrorLogsVisible, setIsErrorLogsVisible] = reactExports.useState(false);
|
|
49182
49552
|
const [userErrors, setUserErrors] = reactExports.useState([]);
|
|
49183
49553
|
const [isUserErrorsLoading, setIsUserErrorsLoading] = reactExports.useState(false);
|
|
49554
|
+
const [userErrorsTotal, setUserErrorsTotal] = reactExports.useState(0);
|
|
49555
|
+
const [userErrorsCurrentPage, setUserErrorsCurrentPage] = reactExports.useState(1);
|
|
49556
|
+
const [userErrorsRowsPerPage, setUserErrorsRowsPerPage] = reactExports.useState(USER_ERRORS_PER_PAGE);
|
|
49557
|
+
const [userErrorsSearchText, setUserErrorsSearchText] = reactExports.useState('');
|
|
49558
|
+
const [userErrorsIsSortedAsc, setUserErrorsIsSortedAsc] = reactExports.useState(false);
|
|
49184
49559
|
const [selectedUserError, setSelectedUserError] = reactExports.useState(null);
|
|
49185
49560
|
const syncOps = useSyncOperations({
|
|
49186
49561
|
appComponent,
|
|
@@ -49233,7 +49608,12 @@ Defaulting to \`null\`.`;
|
|
|
49233
49608
|
}
|
|
49234
49609
|
};
|
|
49235
49610
|
document.body.addEventListener('keydown', handleKeydown);
|
|
49236
|
-
return () =>
|
|
49611
|
+
return () => {
|
|
49612
|
+
document.body.removeEventListener('keydown', handleKeydown);
|
|
49613
|
+
if (userErrorsSearchTimer.current) {
|
|
49614
|
+
clearTimeout(userErrorsSearchTimer.current);
|
|
49615
|
+
}
|
|
49616
|
+
};
|
|
49237
49617
|
}, []);
|
|
49238
49618
|
// A 402 from any API call means the subscription lapsed: show the subscribe modal.
|
|
49239
49619
|
reactExports.useEffect(() => {
|
|
@@ -49274,24 +49654,90 @@ Defaulting to \`null\`.`;
|
|
|
49274
49654
|
setIsNoticeVisible(false);
|
|
49275
49655
|
localStorage.setItem(`revised_${suffix !== null && suffix !== void 0 ? suffix : name}`, '1');
|
|
49276
49656
|
}
|
|
49277
|
-
async function
|
|
49278
|
-
|
|
49657
|
+
async function loadUserErrors({ currentPage = 1, rowsPerPage = USER_ERRORS_PER_PAGE, searchText = '', isSortedAsc = false, } = {}) {
|
|
49658
|
+
var _a, _b;
|
|
49659
|
+
const requestId = ++userErrorsRequestId.current;
|
|
49279
49660
|
setIsUserErrorsLoading(true);
|
|
49280
49661
|
try {
|
|
49281
49662
|
const restParams = await checkOrigin();
|
|
49282
|
-
const
|
|
49283
|
-
|
|
49663
|
+
const query = `&limit=${rowsPerPage}&offset=${(currentPage - 1) * rowsPerPage}` +
|
|
49664
|
+
`&order=${isSortedAsc ? 'asc' : 'desc'}` +
|
|
49665
|
+
(searchText ? `&search=${encodeURIComponent(searchText)}` : '');
|
|
49666
|
+
const res = await checkResponse(await fetch('api/user-errors' + restParams + query));
|
|
49667
|
+
// a slow response must not overwrite a page requested later
|
|
49668
|
+
if (requestId !== userErrorsRequestId.current) {
|
|
49669
|
+
return;
|
|
49670
|
+
}
|
|
49671
|
+
setUserErrors((_a = res === null || res === void 0 ? void 0 : res.data) !== null && _a !== void 0 ? _a : []);
|
|
49672
|
+
setUserErrorsTotal((_b = res === null || res === void 0 ? void 0 : res.total) !== null && _b !== void 0 ? _b : 0);
|
|
49673
|
+
setUserErrorsCurrentPage(currentPage);
|
|
49674
|
+
setUserErrorsRowsPerPage(rowsPerPage);
|
|
49675
|
+
setUserErrorsIsSortedAsc(isSortedAsc);
|
|
49284
49676
|
}
|
|
49285
49677
|
catch (e) {
|
|
49286
|
-
|
|
49678
|
+
if (requestId === userErrorsRequestId.current) {
|
|
49679
|
+
catchRejection(e, "Can't fetch error logs");
|
|
49680
|
+
}
|
|
49287
49681
|
}
|
|
49288
49682
|
finally {
|
|
49289
|
-
|
|
49683
|
+
if (requestId === userErrorsRequestId.current) {
|
|
49684
|
+
setIsUserErrorsLoading(false);
|
|
49685
|
+
}
|
|
49290
49686
|
}
|
|
49291
49687
|
}
|
|
49292
|
-
function
|
|
49293
|
-
|
|
49688
|
+
function clearUserErrorsSearchTimer() {
|
|
49689
|
+
if (userErrorsSearchTimer.current) {
|
|
49690
|
+
clearTimeout(userErrorsSearchTimer.current);
|
|
49691
|
+
userErrorsSearchTimer.current = undefined;
|
|
49692
|
+
}
|
|
49693
|
+
}
|
|
49694
|
+
// Called by the table on paging, rows-per-page, sorting and search input.
|
|
49695
|
+
// The search field has no debounce of its own, so typing is debounced here.
|
|
49696
|
+
function onUserErrorsOptionsChange(options) {
|
|
49697
|
+
var _a, _b, _c, _d;
|
|
49698
|
+
const currentPage = (_a = options.currentPage) !== null && _a !== void 0 ? _a : userErrorsCurrentPage;
|
|
49699
|
+
const rowsPerPage = (_b = options.rowsPerPage) !== null && _b !== void 0 ? _b : userErrorsRowsPerPage;
|
|
49700
|
+
const isSortedAsc = (_c = options.isSortedAsc) !== null && _c !== void 0 ? _c : userErrorsIsSortedAsc;
|
|
49701
|
+
const searchText = (_d = options.searchText) !== null && _d !== void 0 ? _d : userErrorsSearchText;
|
|
49702
|
+
const isSearchChange = options.searchText !== undefined && options.searchText !== userErrorsSearchText;
|
|
49703
|
+
clearUserErrorsSearchTimer();
|
|
49704
|
+
if (isSearchChange) {
|
|
49705
|
+
// reflect the keystroke immediately, but debounce the actual request
|
|
49706
|
+
setUserErrorsSearchText(searchText);
|
|
49707
|
+
userErrorsSearchTimer.current = setTimeout(() => loadUserErrors({ currentPage, rowsPerPage, searchText, isSortedAsc }), USER_ERRORS_SEARCH_DEBOUNCE);
|
|
49708
|
+
return;
|
|
49709
|
+
}
|
|
49710
|
+
loadUserErrors({ currentPage, rowsPerPage, searchText, isSortedAsc });
|
|
49711
|
+
}
|
|
49712
|
+
async function openUserErrorDetail(item) {
|
|
49713
|
+
// the list response carries no `data` - the heavy payload is loaded for this record only
|
|
49714
|
+
const requestId = ++userErrorDetailRequestId.current;
|
|
49715
|
+
setSelectedUserError({ ...item, data: null });
|
|
49294
49716
|
openModal(userErrorDetailModalRef.current);
|
|
49717
|
+
try {
|
|
49718
|
+
const restParams = await checkOrigin();
|
|
49719
|
+
const res = await checkResponse(await fetch(`api/user-errors/${item.id}` + restParams));
|
|
49720
|
+
setSelectedUserError((current) => ((current === null || current === void 0 ? void 0 : current.id) === item.id ? { ...current, data: res.data } : current));
|
|
49721
|
+
}
|
|
49722
|
+
catch (e) {
|
|
49723
|
+
// dialog was closed or reopened
|
|
49724
|
+
if (requestId !== userErrorDetailRequestId.current) {
|
|
49725
|
+
return;
|
|
49726
|
+
}
|
|
49727
|
+
catchRejection(e, "Can't fetch error log details");
|
|
49728
|
+
closeModal(userErrorDetailModalRef.current);
|
|
49729
|
+
setSelectedUserError(null);
|
|
49730
|
+
}
|
|
49731
|
+
}
|
|
49732
|
+
function onUserErrorDetailClose() {
|
|
49733
|
+
userErrorDetailRequestId.current++;
|
|
49734
|
+
}
|
|
49735
|
+
async function showErrorLogs() {
|
|
49736
|
+
setIsErrorLogsVisible(true);
|
|
49737
|
+
// the table keeps its state while the view is hidden - start over on re-entry
|
|
49738
|
+
clearUserErrorsSearchTimer();
|
|
49739
|
+
setUserErrorsSearchText('');
|
|
49740
|
+
await loadUserErrors();
|
|
49295
49741
|
}
|
|
49296
49742
|
function showIntegration() {
|
|
49297
49743
|
setIsErrorLogsVisible(false);
|
|
@@ -49299,7 +49745,7 @@ Defaulting to \`null\`.`;
|
|
|
49299
49745
|
return (jsxRuntimeExports.jsxs("div", { children: [jsxRuntimeExports.jsxs("div", { className: "mx-auto max-w-[1420px] px-6 py-4", children: [jsxRuntimeExports.jsx(TopBar, { notice: notice, isNoticeVisible: isNoticeVisible, checkSubscription: checkSubscription, subscriptionInfo: subscriptionInfo, isErrorLogsVisible: isErrorLogsVisible, isManager: isManager, infoModal: infoModal, hasSettings: !!configurationFields, isOwner: isOwner, onCloseNotice: closeAlert, onShowIntegration: showIntegration, onShowErrorLogs: showErrorLogs, onShowPermissions: permissions.showPermissionsDialog, onOpenInfoModal: () => openModal(infoModalRef.current), onOpenSettings: () => {
|
|
49300
49746
|
openModal(settingsModalRef.current);
|
|
49301
49747
|
setTimeout(settings.fillSettingsForm, 0);
|
|
49302
|
-
}, onLogout: integrationLogout }), jsxRuntimeExports.jsx(IntegrationView, { appComponentRef: appComponent, userErrors: userErrors, isUserErrorsLoading: isUserErrorsLoading, onSelectUserError:
|
|
49748
|
+
}, onLogout: integrationLogout }), jsxRuntimeExports.jsx(IntegrationView, { appComponentRef: appComponent, userErrors: userErrors, isUserErrorsLoading: isUserErrorsLoading, userErrorsTotal: userErrorsTotal, userErrorsCurrentPage: userErrorsCurrentPage, userErrorsRowsPerPage: userErrorsRowsPerPage, userErrorsSearchText: userErrorsSearchText, userErrorsIsSortedAsc: userErrorsIsSortedAsc, onSelectUserError: openUserErrorDetail, onUserErrorsOptionsChange: onUserErrorsOptionsChange, name: name, isErrorLogsVisible: isErrorLogsVisible, syncNewElements: syncNewElements, withCronSync: withCronSync, webhooks: webhooks, integrationOneLevelFetching: integrationOneLevelFetching, integrationSearchListener: integrationSearchListener, filtering: filtering, integrationButtonMenuItems: integrationButtonMenuItems, crowdinButtonMenuItems: crowdinButtonMenuItems, onRefreshFilesList: syncOps.handleRefreshFilesList, onFolderToggle: syncOps.handleFolderToggle, onUploadFilesToCrowdin: (detail) => syncOps.uploadFilesToCrowdin({ detail }), onUploadFilesToIntegration: (detail) => syncOps.uploadFilesToIntegration({ detail }), onLoadMore: syncOps.handleLoadMore, onIntegrationFilterChange: syncOps.handleIntegrationFilterChange, onIntegrationScheduleSync: (detail) => schedule.setIntegrationScheduleSync({ detail }), onCrowdinScheduleSync: (detail) => schedule.setCrowdinScheduleSync({ detail }), onIntegrationDisableSync: (detail) => schedule.disableIntegrationSync({ detail }), onCrowdinDisableSync: (detail) => schedule.disableCrowdinSync({ detail }) })] }), jsxRuntimeExports.jsx(Toaster, {}), jsxRuntimeExports.jsx(AsyncProgress, { ref: asyncProgressRef, onCancelJob: syncOps.cancelJob }), jsxRuntimeExports.jsx(SubscriptionModal, { modalRef: subscriptionModal, subscriptionLink: subscriptionLink, name: name, onLogout: integrationLogout }), jsxRuntimeExports.jsx(PermissionsModal, { modalRef: permissionsModalRef, isLoading: permissions.isLoading, permissionUserOptions: permissions.permissionUserOptions, selectedUsers: permissions.permissionsSelectedUsers, isConfirmVisible: permissions.isPermissionsConfirmVisible, permissionsSummary: permissions.permissionsSummary, hasOrganization: hasOrganization, zenModeUrl: zenModeUrl, saveDisabled: !permissions.isPermissionsLoaded, onUsersChange: permissions.checkUsers, onSave: permissions.inviteUsers }), excludedTargetLanguages && (jsxRuntimeExports.jsx(ExcludedLanguagesModal, { modalRef: syncOps.languageModalRef, languageSelectRef: syncOps.languageSelectRef, languageModalState: syncOps.languageModalState, onUpdateTargetLanguages: syncOps.updateCrowdinFilesTargetLanguages, onSyncToCrowdin: syncOps.uploadFilesToCrowdinWithExcludedLanguages })), infoModal && jsxRuntimeExports.jsx(InfoModal, { modalRef: infoModalRef, infoModal: infoModal }), configurationFields && (jsxRuntimeExports.jsx(SettingsModal, { modalRef: settingsModalRef, isLoading: settings.isLoading, configurationFields: configurationFields, isSaveDisabled: settings.isSettingsSaveDisabled, settingsFieldChange: settings.settingsFieldChange, registerSettingsField: settings.registerSettingsField, fieldErrors: settings.fieldErrors, onSave: settings.saveSettings })), ((syncNewElements === null || syncNewElements === void 0 ? void 0 : syncNewElements.crowdin) || (syncNewElements === null || syncNewElements === void 0 ? void 0 : syncNewElements.integration)) && (jsxRuntimeExports.jsx(ScheduleModal, { modalRef: scheduleModalRef, selectedFilesCheckboxRef: schedule.selectedFilesCheckboxRef, allFolderFilesCheckboxRef: schedule.allFolderFilesCheckboxRef, newFilesCheckboxRef: schedule.newFilesCheckboxRef, scheduleModalState: schedule.scheduleModalState, isSaveDisabled: schedule.isScheduleSaveDisabled, onChangeOptions: schedule.onChangeAutoSynchronizationOptions, onSave: schedule.saveScheduleSync })), jsxRuntimeExports.jsx(UserErrorDetailModal, { modalRef: userErrorDetailModalRef, selectedUserError: selectedUserError, onClose: onUserErrorDetailClose })] }));
|
|
49303
49749
|
};
|
|
49304
49750
|
|
|
49305
49751
|
initializeCrowdinIframeContext();
|