@valbuild/ui 0.45.0 → 0.46.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/dist/valbuild-ui.cjs.js +771 -477
- package/dist/valbuild-ui.esm.js +771 -477
- package/package.json +3 -3
- package/server/.tmp/assets/index-gPuJOraZ.css +1 -0
- package/server/.tmp/assets/index-k8iMLNYr.js +201 -0
- package/server/.tmp/index.html +2 -2
- package/server/dist/valbuild-ui-main.cjs.js +761 -467
- package/server/dist/valbuild-ui-main.esm.js +761 -467
- package/server/dist/valbuild-ui-server.cjs.js +1 -1
- package/server/dist/valbuild-ui-server.esm.js +1 -1
- package/server/.tmp/assets/index-C9FCHcaG.js +0 -201
- package/server/.tmp/assets/index-Ol9liWWf.css +0 -1
package/dist/valbuild-ui.cjs.js
CHANGED
|
@@ -50849,7 +50849,7 @@ var Schema = /* @__PURE__ */ function() {
|
|
|
50849
50849
|
return Schema2;
|
|
50850
50850
|
}();
|
|
50851
50851
|
var GetSchema = Symbol("GetSchema");
|
|
50852
|
-
var Path = Symbol("Path");
|
|
50852
|
+
var Path$1 = Symbol("Path");
|
|
50853
50853
|
var GetSource = Symbol("GetSource");
|
|
50854
50854
|
function getSchema(selector) {
|
|
50855
50855
|
return selector[GetSchema];
|
|
@@ -50898,10 +50898,10 @@ function isSerializedVal(val) {
|
|
|
50898
50898
|
return _typeof(val) === "object" && val !== null && val !== void 0 && ("val" in val || "valPath" in val);
|
|
50899
50899
|
}
|
|
50900
50900
|
function isVal(val) {
|
|
50901
|
-
return _typeof(val) === "object" && val !== null && val !== void 0 && Path in val && "val" in val;
|
|
50901
|
+
return _typeof(val) === "object" && val !== null && val !== void 0 && Path$1 in val && "val" in val;
|
|
50902
50902
|
}
|
|
50903
50903
|
function getValPath(valOrSelector) {
|
|
50904
|
-
return valOrSelector[Path];
|
|
50904
|
+
return valOrSelector[Path$1];
|
|
50905
50905
|
}
|
|
50906
50906
|
function hasOwn$1(obj, prop) {
|
|
50907
50907
|
return Object.prototype.hasOwnProperty.call(obj, prop);
|
|
@@ -50913,7 +50913,7 @@ function _andThen(f, source, path) {
|
|
|
50913
50913
|
return newSelectorProxy(source, path);
|
|
50914
50914
|
}
|
|
50915
50915
|
function isSelector(source) {
|
|
50916
|
-
return _typeof(source) === "object" && source !== null && (GetSource in source || Path in source);
|
|
50916
|
+
return _typeof(source) === "object" && source !== null && (GetSource in source || Path$1 in source);
|
|
50917
50917
|
}
|
|
50918
50918
|
function newSelectorProxy(source, path, moduleSchema) {
|
|
50919
50919
|
if (_typeof(source) === "object") {
|
|
@@ -50942,7 +50942,7 @@ function newSelectorProxy(source, path, moduleSchema) {
|
|
|
50942
50942
|
if (prop === GetSource) {
|
|
50943
50943
|
return true;
|
|
50944
50944
|
}
|
|
50945
|
-
if (prop === Path) {
|
|
50945
|
+
if (prop === Path$1) {
|
|
50946
50946
|
return true;
|
|
50947
50947
|
}
|
|
50948
50948
|
if (prop === "andThen") {
|
|
@@ -50957,7 +50957,7 @@ function newSelectorProxy(source, path, moduleSchema) {
|
|
|
50957
50957
|
if (prop === GetSource) {
|
|
50958
50958
|
return source;
|
|
50959
50959
|
}
|
|
50960
|
-
if (prop === Path) {
|
|
50960
|
+
if (prop === Path$1) {
|
|
50961
50961
|
return path;
|
|
50962
50962
|
}
|
|
50963
50963
|
if (prop === GetSchema) {
|
|
@@ -51024,7 +51024,7 @@ function newSelectorProxy(source, path, moduleSchema) {
|
|
|
51024
51024
|
andThen: function andThen(f) {
|
|
51025
51025
|
return _andThen(f, source === void 0 ? null : source, path);
|
|
51026
51026
|
}
|
|
51027
|
-
}, GetSource, source === void 0 ? null : source), Path, path), GetSchema, moduleSchema);
|
|
51027
|
+
}, GetSource, source === void 0 ? null : source), Path$1, path), GetSchema, moduleSchema);
|
|
51028
51028
|
}
|
|
51029
51029
|
}
|
|
51030
51030
|
function createValPathOfItem$1(arrayPath, prop) {
|
|
@@ -51034,7 +51034,7 @@ function createValPathOfItem$1(arrayPath, prop) {
|
|
|
51034
51034
|
return arrayPath && "".concat(arrayPath, ".").concat(JSON.stringify(prop));
|
|
51035
51035
|
}
|
|
51036
51036
|
function unValify(valueOrSelector) {
|
|
51037
|
-
if (_typeof(valueOrSelector) === "object" && (GetSource in valueOrSelector || Path in valueOrSelector)) {
|
|
51037
|
+
if (_typeof(valueOrSelector) === "object" && (GetSource in valueOrSelector || Path$1 in valueOrSelector)) {
|
|
51038
51038
|
var selectorValue = valueOrSelector[GetSource];
|
|
51039
51039
|
return selectorValue;
|
|
51040
51040
|
}
|
|
@@ -51845,6 +51845,96 @@ function parsePath$1(input) {
|
|
|
51845
51845
|
}
|
|
51846
51846
|
return result2;
|
|
51847
51847
|
}
|
|
51848
|
+
var StringSchema = /* @__PURE__ */ function(_Schema) {
|
|
51849
|
+
_inherits(StringSchema2, _Schema);
|
|
51850
|
+
var _super = _createSuper(StringSchema2);
|
|
51851
|
+
function StringSchema2(options) {
|
|
51852
|
+
var _this;
|
|
51853
|
+
var opt = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;
|
|
51854
|
+
var isRaw = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;
|
|
51855
|
+
_classCallCheck(this, StringSchema2);
|
|
51856
|
+
_this = _super.call(this);
|
|
51857
|
+
_this.options = options;
|
|
51858
|
+
_this.opt = opt;
|
|
51859
|
+
_this.isRaw = isRaw;
|
|
51860
|
+
return _this;
|
|
51861
|
+
}
|
|
51862
|
+
_createClass(StringSchema2, [{
|
|
51863
|
+
key: "validate",
|
|
51864
|
+
value: function validate(path, src) {
|
|
51865
|
+
var _this$options, _this$options2, _this$options3;
|
|
51866
|
+
if (this.opt && (src === null || src === void 0)) {
|
|
51867
|
+
return false;
|
|
51868
|
+
}
|
|
51869
|
+
if (typeof src !== "string") {
|
|
51870
|
+
return _defineProperty$5({}, path, [{
|
|
51871
|
+
message: "Expected 'string', got '".concat(_typeof(src), "'"),
|
|
51872
|
+
value: src
|
|
51873
|
+
}]);
|
|
51874
|
+
}
|
|
51875
|
+
var errors = [];
|
|
51876
|
+
if ((_this$options = this.options) !== null && _this$options !== void 0 && _this$options.maxLength && src.length > this.options.maxLength) {
|
|
51877
|
+
errors.push({
|
|
51878
|
+
message: "Expected string to be at most ".concat(this.options.maxLength, " characters long, got ").concat(src.length),
|
|
51879
|
+
value: src
|
|
51880
|
+
});
|
|
51881
|
+
}
|
|
51882
|
+
if ((_this$options2 = this.options) !== null && _this$options2 !== void 0 && _this$options2.minLength && src.length < this.options.minLength) {
|
|
51883
|
+
errors.push({
|
|
51884
|
+
message: "Expected string to be at least ".concat(this.options.minLength, " characters long, got ").concat(src.length),
|
|
51885
|
+
value: src
|
|
51886
|
+
});
|
|
51887
|
+
}
|
|
51888
|
+
if ((_this$options3 = this.options) !== null && _this$options3 !== void 0 && _this$options3.regexp && !this.options.regexp.test(src)) {
|
|
51889
|
+
errors.push({
|
|
51890
|
+
message: "Expected string to match reg exp: ".concat(this.options.regexp.toString(), ", got '").concat(src, "'"),
|
|
51891
|
+
value: src
|
|
51892
|
+
});
|
|
51893
|
+
}
|
|
51894
|
+
if (errors.length > 0) {
|
|
51895
|
+
return _defineProperty$5({}, path, errors);
|
|
51896
|
+
}
|
|
51897
|
+
return false;
|
|
51898
|
+
}
|
|
51899
|
+
}, {
|
|
51900
|
+
key: "assert",
|
|
51901
|
+
value: function assert(src) {
|
|
51902
|
+
if (this.opt && (src === null || src === void 0)) {
|
|
51903
|
+
return true;
|
|
51904
|
+
}
|
|
51905
|
+
return typeof src === "string";
|
|
51906
|
+
}
|
|
51907
|
+
}, {
|
|
51908
|
+
key: "optional",
|
|
51909
|
+
value: function optional() {
|
|
51910
|
+
return new StringSchema2(this.options, true, this.isRaw);
|
|
51911
|
+
}
|
|
51912
|
+
}, {
|
|
51913
|
+
key: "raw",
|
|
51914
|
+
value: function raw() {
|
|
51915
|
+
return new StringSchema2(this.options, this.opt, true);
|
|
51916
|
+
}
|
|
51917
|
+
}, {
|
|
51918
|
+
key: "serialize",
|
|
51919
|
+
value: function serialize() {
|
|
51920
|
+
var _this$options4, _this$options5, _this$options6;
|
|
51921
|
+
return {
|
|
51922
|
+
type: "string",
|
|
51923
|
+
options: {
|
|
51924
|
+
maxLength: (_this$options4 = this.options) === null || _this$options4 === void 0 ? void 0 : _this$options4.maxLength,
|
|
51925
|
+
minLength: (_this$options5 = this.options) === null || _this$options5 === void 0 ? void 0 : _this$options5.minLength,
|
|
51926
|
+
regexp: ((_this$options6 = this.options) === null || _this$options6 === void 0 ? void 0 : _this$options6.regexp) && {
|
|
51927
|
+
source: this.options.regexp.source,
|
|
51928
|
+
flags: this.options.regexp.flags
|
|
51929
|
+
}
|
|
51930
|
+
},
|
|
51931
|
+
opt: this.opt,
|
|
51932
|
+
raw: this.isRaw
|
|
51933
|
+
};
|
|
51934
|
+
}
|
|
51935
|
+
}]);
|
|
51936
|
+
return StringSchema2;
|
|
51937
|
+
}(Schema);
|
|
51848
51938
|
function getVal(selector) {
|
|
51849
51939
|
return newValProxy(serializedValOfSelectorSource(selector));
|
|
51850
51940
|
}
|
|
@@ -51867,7 +51957,7 @@ function serializedValOfSelectorSource(selector) {
|
|
|
51867
51957
|
var isObject = isObjectOrObjectSelector(child);
|
|
51868
51958
|
if (isArray) {
|
|
51869
51959
|
var array = GetSource in child ? child[GetSource] : child;
|
|
51870
|
-
var valPath = Path in child ? child[Path] : void 0;
|
|
51960
|
+
var valPath = Path$1 in child ? child[Path$1] : void 0;
|
|
51871
51961
|
return {
|
|
51872
51962
|
val: array.map(function(item, i) {
|
|
51873
51963
|
return rec(isSelector(item) ? item : newSelectorProxy(item, createValPathOfItem$1(valPath, i)));
|
|
@@ -51876,7 +51966,7 @@ function serializedValOfSelectorSource(selector) {
|
|
|
51876
51966
|
};
|
|
51877
51967
|
} else if (isObject) {
|
|
51878
51968
|
var obj = GetSource in child ? child[GetSource] : child;
|
|
51879
|
-
var _valPath = Path in child ? child[Path] : void 0;
|
|
51969
|
+
var _valPath = Path$1 in child ? child[Path$1] : void 0;
|
|
51880
51970
|
return {
|
|
51881
51971
|
val: obj !== null && Object.fromEntries(Object.entries(obj).map(function(_ref) {
|
|
51882
51972
|
var _ref2 = _slicedToArray$1(_ref, 2), key = _ref2[0], value = _ref2[1];
|
|
@@ -51887,7 +51977,7 @@ function serializedValOfSelectorSource(selector) {
|
|
|
51887
51977
|
} else if (isSelector(child)) {
|
|
51888
51978
|
return {
|
|
51889
51979
|
val: rec(child[GetSource]),
|
|
51890
|
-
valPath: child[Path]
|
|
51980
|
+
valPath: child[Path$1]
|
|
51891
51981
|
};
|
|
51892
51982
|
} else {
|
|
51893
51983
|
return child;
|
|
@@ -51929,13 +52019,13 @@ function newValProxy(val) {
|
|
|
51929
52019
|
if (prop === "val") {
|
|
51930
52020
|
return true;
|
|
51931
52021
|
}
|
|
51932
|
-
if (prop === Path) {
|
|
52022
|
+
if (prop === Path$1) {
|
|
51933
52023
|
return true;
|
|
51934
52024
|
}
|
|
51935
52025
|
return hasOwn(target, prop);
|
|
51936
52026
|
},
|
|
51937
52027
|
get: function get(target, prop) {
|
|
51938
|
-
if (prop === Path) {
|
|
52028
|
+
if (prop === Path$1) {
|
|
51939
52029
|
return val.valPath;
|
|
51940
52030
|
}
|
|
51941
52031
|
if (prop === "val") {
|
|
@@ -51956,7 +52046,7 @@ function newValProxy(val) {
|
|
|
51956
52046
|
});
|
|
51957
52047
|
}
|
|
51958
52048
|
default:
|
|
51959
|
-
return _defineProperty$5(_defineProperty$5({}, Path, val.valPath), "val", val.val);
|
|
52049
|
+
return _defineProperty$5(_defineProperty$5({}, Path$1, val.valPath), "val", val.val);
|
|
51960
52050
|
}
|
|
51961
52051
|
}
|
|
51962
52052
|
function hasOwn(obj, prop) {
|
|
@@ -56381,7 +56471,7 @@ const Toolbar = ({
|
|
|
56381
56471
|
}
|
|
56382
56472
|
});
|
|
56383
56473
|
}, [activeEditor]);
|
|
56384
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "sticky top-0 flex flex-col px-4 py-2 border-b bg-background
|
|
56474
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "sticky top-0 flex flex-col px-4 py-2 border rounded-md rounded-b-none border-input bg-background", children: [
|
|
56385
56475
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-row gap-1", children: [
|
|
56386
56476
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
56387
56477
|
Dropdown$1,
|
|
@@ -56510,12 +56600,10 @@ const Toolbar$1 = Toolbar;
|
|
|
56510
56600
|
function onError(error) {
|
|
56511
56601
|
console.error(error);
|
|
56512
56602
|
}
|
|
56513
|
-
const TOOLBAR_HEIGHT = 28;
|
|
56514
56603
|
const RichTextEditor = ({
|
|
56515
56604
|
richtext,
|
|
56516
56605
|
onEditor
|
|
56517
56606
|
}) => {
|
|
56518
|
-
const { windowSize } = useValOverlayContext();
|
|
56519
56607
|
const prePopulatedState = (editor) => {
|
|
56520
56608
|
editor.setEditorState(
|
|
56521
56609
|
editor.parseEditorState({
|
|
@@ -56558,17 +56646,8 @@ const RichTextEditor = ({
|
|
|
56558
56646
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
56559
56647
|
LexicalRichTextPlugin_1.RichTextPlugin,
|
|
56560
56648
|
{
|
|
56561
|
-
contentEditable: /* @__PURE__ */ jsxRuntime.jsx(
|
|
56562
|
-
|
|
56563
|
-
{
|
|
56564
|
-
className: "font-sans border-b text-primary border-highlight",
|
|
56565
|
-
style: {
|
|
56566
|
-
minHeight: (windowSize == null ? void 0 : windowSize.innerHeight) ? (windowSize == null ? void 0 : windowSize.innerHeight) - TOOLBAR_HEIGHT : void 0
|
|
56567
|
-
},
|
|
56568
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(LexicalContentEditable, { className: "p-4 outline-none bg-fill" })
|
|
56569
|
-
}
|
|
56570
|
-
),
|
|
56571
|
-
placeholder: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "", children: "Enter some text..." }),
|
|
56649
|
+
contentEditable: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-3 py-2 text-sm border-b rounded-md rounded-t-none border-x border-input bg-background ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50", children: /* @__PURE__ */ jsxRuntime.jsx(LexicalContentEditable, { className: "p-4 outline-none bg-fill" }) }),
|
|
56650
|
+
placeholder: /* @__PURE__ */ jsxRuntime.jsx("p", { className: "" }),
|
|
56572
56651
|
ErrorBoundary: LexicalErrorBoundary$1
|
|
56573
56652
|
}
|
|
56574
56653
|
),
|
|
@@ -56633,17 +56712,22 @@ const LogIn = createLucideIcon("LogIn", [
|
|
|
56633
56712
|
["polyline", { points: "10 17 15 12 10 7", key: "1ail0h" }],
|
|
56634
56713
|
["line", { x1: "15", x2: "3", y1: "12", y2: "12", key: "v6grx8" }]
|
|
56635
56714
|
]);
|
|
56636
|
-
const
|
|
56637
|
-
["
|
|
56638
|
-
["
|
|
56639
|
-
["
|
|
56640
|
-
["
|
|
56715
|
+
const Maximize2 = createLucideIcon("Maximize2", [
|
|
56716
|
+
["polyline", { points: "15 3 21 3 21 9", key: "mznyad" }],
|
|
56717
|
+
["polyline", { points: "9 21 3 21 3 15", key: "1avn1i" }],
|
|
56718
|
+
["line", { x1: "21", x2: "14", y1: "3", y2: "10", key: "ota7mn" }],
|
|
56719
|
+
["line", { x1: "3", x2: "10", y1: "21", y2: "14", key: "1atl0r" }]
|
|
56641
56720
|
]);
|
|
56642
|
-
const
|
|
56643
|
-
["
|
|
56644
|
-
["
|
|
56645
|
-
["
|
|
56646
|
-
|
|
56721
|
+
const Menu = createLucideIcon("Menu", [
|
|
56722
|
+
["line", { x1: "4", x2: "20", y1: "12", y2: "12", key: "1e0a9i" }],
|
|
56723
|
+
["line", { x1: "4", x2: "20", y1: "6", y2: "6", key: "1owob3" }],
|
|
56724
|
+
["line", { x1: "4", x2: "20", y1: "18", y2: "18", key: "yk5zj1" }]
|
|
56725
|
+
]);
|
|
56726
|
+
const Minimize2 = createLucideIcon("Minimize2", [
|
|
56727
|
+
["polyline", { points: "4 14 10 14 10 20", key: "11kfnr" }],
|
|
56728
|
+
["polyline", { points: "20 10 14 10 14 4", key: "rlmsce" }],
|
|
56729
|
+
["line", { x1: "14", x2: "21", y1: "10", y2: "3", key: "o5lafz" }],
|
|
56730
|
+
["line", { x1: "3", x2: "10", y1: "21", y2: "14", key: "1atl0r" }]
|
|
56647
56731
|
]);
|
|
56648
56732
|
const Moon = createLucideIcon("Moon", [
|
|
56649
56733
|
["path", { d: "M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z", key: "a7tn18" }]
|
|
@@ -56683,20 +56767,35 @@ const PREV_URL_KEY = "valbuild:urlBeforeNavigation";
|
|
|
56683
56767
|
function ValMenu({
|
|
56684
56768
|
api,
|
|
56685
56769
|
patches,
|
|
56770
|
+
direction,
|
|
56686
56771
|
onCommit
|
|
56687
56772
|
}) {
|
|
56688
56773
|
const { theme: theme2, setTheme, editMode, setEditMode, session } = useValOverlayContext();
|
|
56689
56774
|
if (session.status === "success" && session.data.mode === "unauthorized") {
|
|
56690
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
56691
|
-
|
|
56692
|
-
|
|
56693
|
-
|
|
56775
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
56776
|
+
SingleItemMenu,
|
|
56777
|
+
{
|
|
56778
|
+
direction,
|
|
56779
|
+
href: api.getLoginUrl(window.location.href),
|
|
56780
|
+
children: [
|
|
56781
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { children: "Login" }),
|
|
56782
|
+
/* @__PURE__ */ jsxRuntime.jsx(LogIn, { size: 18 })
|
|
56783
|
+
]
|
|
56784
|
+
}
|
|
56785
|
+
);
|
|
56694
56786
|
}
|
|
56695
56787
|
if (session.status === "success" && !session.data.enabled) {
|
|
56696
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
56697
|
-
|
|
56698
|
-
|
|
56699
|
-
|
|
56788
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
56789
|
+
SingleItemMenu,
|
|
56790
|
+
{
|
|
56791
|
+
direction,
|
|
56792
|
+
href: api.getEnableUrl(window.location.href),
|
|
56793
|
+
children: [
|
|
56794
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { children: "Enable" }),
|
|
56795
|
+
/* @__PURE__ */ jsxRuntime.jsx(LogIn, { size: 18 })
|
|
56796
|
+
]
|
|
56797
|
+
}
|
|
56798
|
+
);
|
|
56700
56799
|
}
|
|
56701
56800
|
const [patchCount, setPatchCount] = React$3.useState();
|
|
56702
56801
|
React$3.useEffect(() => {
|
|
@@ -56706,9 +56805,9 @@ function ValMenu({
|
|
|
56706
56805
|
}
|
|
56707
56806
|
setPatchCount(patchCount2);
|
|
56708
56807
|
}, [patches]);
|
|
56709
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(MenuContainer, { children: [
|
|
56808
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(MenuContainer, { direction, children: [
|
|
56710
56809
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
56711
|
-
MenuButton,
|
|
56810
|
+
MenuButton$1,
|
|
56712
56811
|
{
|
|
56713
56812
|
active: editMode === "hover",
|
|
56714
56813
|
onClick: () => {
|
|
@@ -56718,7 +56817,7 @@ function ValMenu({
|
|
|
56718
56817
|
}
|
|
56719
56818
|
),
|
|
56720
56819
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
56721
|
-
MenuButton,
|
|
56820
|
+
MenuButton$1,
|
|
56722
56821
|
{
|
|
56723
56822
|
onClick: () => {
|
|
56724
56823
|
setTheme(theme2 === "dark" ? "light" : "dark");
|
|
@@ -56730,7 +56829,7 @@ function ValMenu({
|
|
|
56730
56829
|
}
|
|
56731
56830
|
),
|
|
56732
56831
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
56733
|
-
MenuButton,
|
|
56832
|
+
MenuButton$1,
|
|
56734
56833
|
{
|
|
56735
56834
|
active: editMode === "full",
|
|
56736
56835
|
onClick: () => {
|
|
@@ -56742,11 +56841,11 @@ function ValMenu({
|
|
|
56742
56841
|
window.location.href = prevUrl || "/";
|
|
56743
56842
|
}
|
|
56744
56843
|
},
|
|
56745
|
-
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-[24px] w-[24px] flex justify-center items-center", children: editMode === "full" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
56844
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-[24px] w-[24px] flex justify-center items-center", children: editMode === "full" ? /* @__PURE__ */ jsxRuntime.jsx(Minimize2, { size: 15 }) : /* @__PURE__ */ jsxRuntime.jsx(Maximize2, { size: 15 }) })
|
|
56746
56845
|
}
|
|
56747
56846
|
),
|
|
56748
56847
|
patchCount !== void 0 && session.status === "success" && session.data.mode === "proxy" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
56749
|
-
MenuButton,
|
|
56848
|
+
MenuButton$1,
|
|
56750
56849
|
{
|
|
56751
56850
|
onClick: () => {
|
|
56752
56851
|
if (patchCount > 0) {
|
|
@@ -56774,16 +56873,42 @@ function ValMenu({
|
|
|
56774
56873
|
}
|
|
56775
56874
|
function SingleItemMenu({
|
|
56776
56875
|
href,
|
|
56876
|
+
direction,
|
|
56777
56877
|
children
|
|
56778
56878
|
}) {
|
|
56779
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
56879
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
56880
|
+
"div",
|
|
56881
|
+
{
|
|
56882
|
+
className: classNames(
|
|
56883
|
+
"flex items-start justify-center w-full h-full font-sans border rounded-full gap-3 text-primary border-fill bg-gradient-to-br from-background/90 from-40% to-background backdrop-blur-lg drop-shadow-2xl",
|
|
56884
|
+
{
|
|
56885
|
+
"flex-col items-start": direction === "vertical",
|
|
56886
|
+
"flex-row items-center": direction === "horizontal"
|
|
56887
|
+
}
|
|
56888
|
+
),
|
|
56889
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("a", { className, href, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-center px-2 gap-y-2", children }) })
|
|
56890
|
+
}
|
|
56891
|
+
);
|
|
56780
56892
|
}
|
|
56781
56893
|
function MenuContainer({
|
|
56782
|
-
children
|
|
56894
|
+
children,
|
|
56895
|
+
direction
|
|
56783
56896
|
}) {
|
|
56784
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
56897
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
56898
|
+
"div",
|
|
56899
|
+
{
|
|
56900
|
+
className: classNames(
|
|
56901
|
+
"flex justify-center w-full h-full px-2 py-2 font-sans border rounded-full gap-3 text-primary border-fill bg-gradient-to-br from-background/90 from-40% to-background backdrop-blur-lg drop-shadow-2xl",
|
|
56902
|
+
{
|
|
56903
|
+
"flex-col items-start": direction === "vertical",
|
|
56904
|
+
"flex-row items-center": direction === "horizontal"
|
|
56905
|
+
}
|
|
56906
|
+
),
|
|
56907
|
+
children
|
|
56908
|
+
}
|
|
56909
|
+
);
|
|
56785
56910
|
}
|
|
56786
|
-
function MenuButton({
|
|
56911
|
+
function MenuButton$1({
|
|
56787
56912
|
active,
|
|
56788
56913
|
onClick,
|
|
56789
56914
|
children
|
|
@@ -56792,7 +56917,7 @@ function MenuButton({
|
|
|
56792
56917
|
"button",
|
|
56793
56918
|
{
|
|
56794
56919
|
className: classNames(className, {
|
|
56795
|
-
"bg-accent drop-shadow-[
|
|
56920
|
+
"bg-accent text-accent-foreground drop-shadow-[0px_0px_12px_hsl(var(--accent))]": active
|
|
56796
56921
|
}),
|
|
56797
56922
|
onClick,
|
|
56798
56923
|
children
|
|
@@ -62380,14 +62505,21 @@ const twMerge = /* @__PURE__ */ createTailwindMerge(getDefaultConfig);
|
|
|
62380
62505
|
function cn(...inputs) {
|
|
62381
62506
|
return twMerge(clsx(inputs));
|
|
62382
62507
|
}
|
|
62383
|
-
const ScrollArea = React__namespace.forwardRef(({ className: className2, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
62508
|
+
const ScrollArea = React__namespace.forwardRef(({ className: className2, children, innerRef, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
62384
62509
|
$57acba87d6e25586$export$be92b6f5f03c0fe9,
|
|
62385
62510
|
{
|
|
62386
62511
|
ref,
|
|
62387
62512
|
className: cn("relative overflow-hidden", className2),
|
|
62388
62513
|
...props,
|
|
62389
62514
|
children: [
|
|
62390
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
62515
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
62516
|
+
$57acba87d6e25586$export$d5c6c08dc2d3ca7,
|
|
62517
|
+
{
|
|
62518
|
+
className: "h-full w-full rounded-[inherit]",
|
|
62519
|
+
ref: innerRef,
|
|
62520
|
+
children
|
|
62521
|
+
}
|
|
62522
|
+
),
|
|
62391
62523
|
/* @__PURE__ */ jsxRuntime.jsx(ScrollBar, {}),
|
|
62392
62524
|
/* @__PURE__ */ jsxRuntime.jsx($57acba87d6e25586$export$ac61190d9fc311a9, {})
|
|
62393
62525
|
]
|
|
@@ -62418,8 +62550,8 @@ const ScrollBar = React__namespace.forwardRef(({ className: className2, orientat
|
|
|
62418
62550
|
}
|
|
62419
62551
|
));
|
|
62420
62552
|
ScrollBar.displayName = $57acba87d6e25586$export$2fabd85d0eba3c57.displayName;
|
|
62421
|
-
const MIN_WIDTH =
|
|
62422
|
-
const MIN_HEIGHT =
|
|
62553
|
+
const MIN_WIDTH = 400;
|
|
62554
|
+
const MIN_HEIGHT = 250;
|
|
62423
62555
|
function ValWindow({
|
|
62424
62556
|
position,
|
|
62425
62557
|
onClose,
|
|
@@ -62442,14 +62574,12 @@ function ValWindow({
|
|
|
62442
62574
|
const { windowSize, setWindowSize } = useValOverlayContext();
|
|
62443
62575
|
React$3.useEffect(() => {
|
|
62444
62576
|
var _a, _b;
|
|
62445
|
-
|
|
62446
|
-
|
|
62447
|
-
|
|
62448
|
-
|
|
62449
|
-
|
|
62450
|
-
|
|
62451
|
-
}
|
|
62452
|
-
}, [windowSize]);
|
|
62577
|
+
setWindowSize({
|
|
62578
|
+
height: window.innerHeight - 30,
|
|
62579
|
+
width: MIN_WIDTH,
|
|
62580
|
+
innerHeight: window.innerHeight - 30 - (64 + (((_b = (_a = bottomRef.current) == null ? void 0 : _a.getBoundingClientRect()) == null ? void 0 : _b.height) || 0))
|
|
62581
|
+
});
|
|
62582
|
+
}, []);
|
|
62453
62583
|
const bottomRef = React$3.useRef(null);
|
|
62454
62584
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
62455
62585
|
Resizable,
|
|
@@ -62461,7 +62591,7 @@ function ValWindow({
|
|
|
62461
62591
|
var _a, _b;
|
|
62462
62592
|
return setWindowSize({
|
|
62463
62593
|
...size2,
|
|
62464
|
-
innerHeight:
|
|
62594
|
+
innerHeight: size2.height - (64 + (((_b = (_a = bottomRef.current) == null ? void 0 : _a.getBoundingClientRect()) == null ? void 0 : _b.height) || 0))
|
|
62465
62595
|
});
|
|
62466
62596
|
},
|
|
62467
62597
|
handle: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "fixed bottom-0 right-0 cursor-se-resize", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -62495,14 +62625,16 @@ function ValWindow({
|
|
|
62495
62625
|
width: (windowSize == null ? void 0 : windowSize.width) || MIN_WIDTH,
|
|
62496
62626
|
height: (windowSize == null ? void 0 : windowSize.height) || MIN_HEIGHT,
|
|
62497
62627
|
left: draggedPosition.left,
|
|
62498
|
-
top: draggedPosition.top
|
|
62628
|
+
top: draggedPosition.top,
|
|
62629
|
+
right: draggedPosition.right,
|
|
62630
|
+
bottom: draggedPosition.bottom
|
|
62499
62631
|
},
|
|
62500
62632
|
children: [
|
|
62501
62633
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
62502
62634
|
"div",
|
|
62503
62635
|
{
|
|
62504
62636
|
ref: dragRef,
|
|
62505
|
-
className: "relative flex items-center justify-center px-2
|
|
62637
|
+
className: "relative flex items-center justify-center px-2 py-2 text-primary",
|
|
62506
62638
|
children: [
|
|
62507
62639
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
62508
62640
|
AlignJustify,
|
|
@@ -62527,56 +62659,32 @@ function ValWindow({
|
|
|
62527
62659
|
]
|
|
62528
62660
|
}
|
|
62529
62661
|
),
|
|
62530
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
62531
|
-
|
|
62532
|
-
|
|
62533
|
-
|
|
62534
|
-
|
|
62535
|
-
|
|
62536
|
-
|
|
62537
|
-
|
|
62538
|
-
|
|
62539
|
-
|
|
62540
|
-
|
|
62541
|
-
|
|
62542
|
-
|
|
62543
|
-
|
|
62544
|
-
height: windowSize == null ? void 0 : windowSize.innerHeight
|
|
62545
|
-
},
|
|
62546
|
-
children: Array.isArray(children) ? children.slice(1, -1) : children
|
|
62547
|
-
}
|
|
62548
|
-
),
|
|
62549
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { ref: bottomRef, className: "w-full px-4 pb-0", children: Array.isArray(children) && children.slice(-1) })
|
|
62550
|
-
]
|
|
62551
|
-
}
|
|
62552
|
-
)
|
|
62662
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
62663
|
+
Array.isArray(children) && children.slice(0, 1),
|
|
62664
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
62665
|
+
ScrollArea,
|
|
62666
|
+
{
|
|
62667
|
+
className: "relative",
|
|
62668
|
+
style: {
|
|
62669
|
+
height: windowSize == null ? void 0 : windowSize.innerHeight
|
|
62670
|
+
},
|
|
62671
|
+
children: Array.isArray(children) ? children.slice(1, -1) : children
|
|
62672
|
+
}
|
|
62673
|
+
),
|
|
62674
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { ref: bottomRef, className: "w-full px-4 pb-0", children: Array.isArray(children) && children.slice(-1) })
|
|
62675
|
+
] })
|
|
62553
62676
|
]
|
|
62554
62677
|
}
|
|
62555
62678
|
)
|
|
62556
62679
|
}
|
|
62557
62680
|
);
|
|
62558
62681
|
}
|
|
62559
|
-
function useDrag({
|
|
62560
|
-
position: initPosition
|
|
62561
|
-
}) {
|
|
62682
|
+
function useDrag({ position: initPosition }) {
|
|
62562
62683
|
var _a, _b;
|
|
62563
|
-
const [position, setPosition] = React$3.useState({ left:
|
|
62684
|
+
const [position, setPosition] = React$3.useState({ left: window.innerWidth - MIN_WIDTH - (24 + 50), top: 16 });
|
|
62564
62685
|
React$3.useEffect(() => {
|
|
62565
|
-
var _a2, _b2;
|
|
62566
62686
|
if (initPosition) {
|
|
62567
|
-
|
|
62568
|
-
const top = initPosition.top - 16;
|
|
62569
|
-
setPosition({
|
|
62570
|
-
left: left < 0 ? 0 : left,
|
|
62571
|
-
top: top < 0 ? 0 : top
|
|
62572
|
-
});
|
|
62573
|
-
} else {
|
|
62574
|
-
const left = window.innerWidth / 2 - MIN_WIDTH / 2 - window.scrollX;
|
|
62575
|
-
const top = window.innerHeight / 2 - MIN_HEIGHT / 2 + window.scrollY;
|
|
62576
|
-
setPosition({
|
|
62577
|
-
left,
|
|
62578
|
-
top
|
|
62579
|
-
});
|
|
62687
|
+
setPosition(initPosition);
|
|
62580
62688
|
}
|
|
62581
62689
|
}, [initPosition]);
|
|
62582
62690
|
const [mouseDown, setMouseDown] = React$3.useState(false);
|
|
@@ -62590,8 +62698,8 @@ function useDrag({
|
|
|
62590
62698
|
if (mouseDown) {
|
|
62591
62699
|
e.preventDefault();
|
|
62592
62700
|
e.stopPropagation();
|
|
62593
|
-
const left = -((((_b2 = (_a2 = ref == null ? void 0 : ref.current) == null ? void 0 : _a2.getBoundingClientRect()) == null ? void 0 : _b2.width) || 0) / 2) + e.
|
|
62594
|
-
const top = -((((_d = (_c = ref == null ? void 0 : ref.current) == null ? void 0 : _c.getBoundingClientRect()) == null ? void 0 : _d.height) || 0) / 2) + +e.
|
|
62701
|
+
const left = -((((_b2 = (_a2 = ref == null ? void 0 : ref.current) == null ? void 0 : _a2.getBoundingClientRect()) == null ? void 0 : _b2.width) || 0) / 2) + e.clientX;
|
|
62702
|
+
const top = -((((_d = (_c = ref == null ? void 0 : ref.current) == null ? void 0 : _c.getBoundingClientRect()) == null ? void 0 : _d.height) || 0) / 2) + +e.clientY;
|
|
62595
62703
|
setPosition({
|
|
62596
62704
|
left: left < 0 ? 0 : left,
|
|
62597
62705
|
top: top < 0 ? 0 : top
|
|
@@ -62769,6 +62877,7 @@ function Grid({ children }) {
|
|
|
62769
62877
|
const x = React$3.useRef(0);
|
|
62770
62878
|
const dragRef = React$3.useRef(null);
|
|
62771
62879
|
const originalWidth = React$3.useRef(0);
|
|
62880
|
+
const [showMobileLeftMenu, setShowMobileLeftMenu] = React$3.useState(true);
|
|
62772
62881
|
const handleMouseUp = () => {
|
|
62773
62882
|
isResizing.current = false;
|
|
62774
62883
|
dragRef.current = null;
|
|
@@ -62809,17 +62918,40 @@ function Grid({ children }) {
|
|
|
62809
62918
|
document.removeEventListener("mousemove", handleMouseMove);
|
|
62810
62919
|
};
|
|
62811
62920
|
}, []);
|
|
62812
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex h-screen", children: [
|
|
62921
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative flex h-screen", children: [
|
|
62813
62922
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
62814
62923
|
"div",
|
|
62815
62924
|
{
|
|
62816
62925
|
ref: leftColRef,
|
|
62817
|
-
className:
|
|
62818
|
-
|
|
62926
|
+
className: classNames(
|
|
62927
|
+
"absolute top-0 left-0 border-r border-border md:relative z-[1] bg-gradient-to-br from-card from-50% to-background",
|
|
62928
|
+
{
|
|
62929
|
+
"w-[300px]": showMobileLeftMenu,
|
|
62930
|
+
"w-0 md:w-[300px]": !showMobileLeftMenu
|
|
62931
|
+
}
|
|
62932
|
+
),
|
|
62819
62933
|
children: [
|
|
62820
62934
|
/* @__PURE__ */ jsxRuntime.jsxs(Grid.Column, { children: [
|
|
62821
|
-
|
|
62822
|
-
|
|
62935
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
62936
|
+
MenuButton,
|
|
62937
|
+
{
|
|
62938
|
+
showOnMobile: !showMobileLeftMenu,
|
|
62939
|
+
onClick: () => {
|
|
62940
|
+
setShowMobileLeftMenu(!showMobileLeftMenu);
|
|
62941
|
+
},
|
|
62942
|
+
children: header1
|
|
62943
|
+
}
|
|
62944
|
+
),
|
|
62945
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
62946
|
+
ScrollArea,
|
|
62947
|
+
{
|
|
62948
|
+
style: { height: "calc(100vh - 50px)" },
|
|
62949
|
+
onClick: () => {
|
|
62950
|
+
setShowMobileLeftMenu(false);
|
|
62951
|
+
},
|
|
62952
|
+
children: body1
|
|
62953
|
+
}
|
|
62954
|
+
)
|
|
62823
62955
|
] }),
|
|
62824
62956
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
62825
62957
|
"div",
|
|
@@ -62838,7 +62970,28 @@ function Grid({ children }) {
|
|
|
62838
62970
|
"w-full": !header3 && !body3
|
|
62839
62971
|
}),
|
|
62840
62972
|
children: /* @__PURE__ */ jsxRuntime.jsxs(Grid.Column, { children: [
|
|
62841
|
-
|
|
62973
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex w-full border-b border-border", children: [
|
|
62974
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
62975
|
+
MenuButton,
|
|
62976
|
+
{
|
|
62977
|
+
className: "md:hidden",
|
|
62978
|
+
showOnMobile: showMobileLeftMenu,
|
|
62979
|
+
onClick: () => {
|
|
62980
|
+
setShowMobileLeftMenu(!showMobileLeftMenu);
|
|
62981
|
+
},
|
|
62982
|
+
children: header1
|
|
62983
|
+
}
|
|
62984
|
+
),
|
|
62985
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
62986
|
+
"span",
|
|
62987
|
+
{
|
|
62988
|
+
className: classNames({
|
|
62989
|
+
"pl-[300px] md:pl-0": showMobileLeftMenu
|
|
62990
|
+
}),
|
|
62991
|
+
children: header2
|
|
62992
|
+
}
|
|
62993
|
+
)
|
|
62994
|
+
] }),
|
|
62842
62995
|
/* @__PURE__ */ jsxRuntime.jsx(ScrollArea, { style: { height: "calc(100vh - 50px)" }, children: body2 })
|
|
62843
62996
|
] })
|
|
62844
62997
|
}
|
|
@@ -62866,111 +63019,30 @@ function Grid({ children }) {
|
|
|
62866
63019
|
)
|
|
62867
63020
|
] });
|
|
62868
63021
|
}
|
|
62869
|
-
|
|
62870
|
-
|
|
62871
|
-
|
|
62872
|
-
|
|
62873
|
-
|
|
62874
|
-
|
|
62875
|
-
};
|
|
62876
|
-
const Section = ({ className: className2 }) => {
|
|
63022
|
+
function MenuButton({
|
|
63023
|
+
className: className2,
|
|
63024
|
+
showOnMobile,
|
|
63025
|
+
onClick,
|
|
63026
|
+
children
|
|
63027
|
+
}) {
|
|
62877
63028
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
62878
|
-
"
|
|
63029
|
+
"div",
|
|
62879
63030
|
{
|
|
62880
|
-
|
|
62881
|
-
|
|
62882
|
-
|
|
62883
|
-
className: className2,
|
|
62884
|
-
fill: "currentColor",
|
|
62885
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
63031
|
+
className: classNames("flex items-center px-4 md:px-4", className2, {
|
|
63032
|
+
"hidden md:flex": showOnMobile
|
|
63033
|
+
}),
|
|
62886
63034
|
children: [
|
|
62887
|
-
/* @__PURE__ */ jsxRuntime.
|
|
62888
|
-
|
|
62889
|
-
"path",
|
|
62890
|
-
{
|
|
62891
|
-
fillRule: "evenodd",
|
|
62892
|
-
clipRule: "evenodd",
|
|
62893
|
-
d: "M9 1.5H0V0.5H9V1.5Z",
|
|
62894
|
-
fill: "currentColor"
|
|
62895
|
-
}
|
|
62896
|
-
),
|
|
62897
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
62898
|
-
"path",
|
|
62899
|
-
{
|
|
62900
|
-
fillRule: "evenodd",
|
|
62901
|
-
clipRule: "evenodd",
|
|
62902
|
-
d: "M9 9.5H0V8.5H9V9.5Z",
|
|
62903
|
-
fill: "currentColor"
|
|
62904
|
-
}
|
|
62905
|
-
)
|
|
62906
|
-
] }),
|
|
62907
|
-
/* @__PURE__ */ jsxRuntime.jsx("defs", { children: /* @__PURE__ */ jsxRuntime.jsx("clipPath", { id: "clip0_1222_1618", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
62908
|
-
"rect",
|
|
62909
|
-
{
|
|
62910
|
-
width: "9",
|
|
62911
|
-
height: "9",
|
|
62912
|
-
fill: "white",
|
|
62913
|
-
transform: "translate(0 0.5)"
|
|
62914
|
-
}
|
|
62915
|
-
) }) })
|
|
63035
|
+
/* @__PURE__ */ jsxRuntime.jsx("button", { className: "md:hidden", onClick, children: /* @__PURE__ */ jsxRuntime.jsx(Menu, {}) }),
|
|
63036
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex items-center justify-between w-full", children })
|
|
62916
63037
|
]
|
|
62917
63038
|
}
|
|
62918
63039
|
);
|
|
62919
|
-
};
|
|
62920
|
-
const Section$1 = Section;
|
|
62921
|
-
const TextIcon = ({ className: className2 }) => {
|
|
62922
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
62923
|
-
"svg",
|
|
62924
|
-
{
|
|
62925
|
-
width: "9",
|
|
62926
|
-
height: "10",
|
|
62927
|
-
viewBox: "0 0 9 10",
|
|
62928
|
-
fill: "currentColor",
|
|
62929
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
62930
|
-
className: className2,
|
|
62931
|
-
children: /* @__PURE__ */ jsxRuntime.jsx("g", { clipPath: "url(#clip0_1229_1625)", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M0.0145513 0.5H8.98545L9 3.18569H8.57074C8.43007 2.2276 8.02749 1.57948 7.36298 1.24133C6.98949 1.05491 6.43169 0.953035 5.68957 0.935694V7.94581C5.68957 8.43569 5.78416 8.76084 5.97332 8.92124C6.16734 9.08165 6.5675 9.16185 7.17381 9.16185V9.5H1.86257V9.16185C2.44462 9.16185 2.83023 9.08165 3.0194 8.92124C3.21342 8.7565 3.31043 8.43136 3.31043 7.94581V0.935694C2.58286 0.953035 2.02506 1.05491 1.63703 1.24133C0.92401 1.58815 0.521423 2.23627 0.429264 3.18569H0L0.0145513 0.5Z" }) })
|
|
62932
|
-
}
|
|
62933
|
-
);
|
|
62934
|
-
};
|
|
62935
|
-
const TextIcon$1 = TextIcon;
|
|
62936
|
-
function Tree({ children, rootPath }) {
|
|
62937
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-col w-full py-2 text-xs", children: React$3.Children.map(children, (child) => {
|
|
62938
|
-
return React$3.cloneElement(child, {
|
|
62939
|
-
paths: [rootPath]
|
|
62940
|
-
});
|
|
62941
|
-
}) });
|
|
62942
63040
|
}
|
|
62943
|
-
|
|
62944
|
-
children
|
|
62945
|
-
|
|
62946
|
-
|
|
62947
|
-
|
|
62948
|
-
type,
|
|
62949
|
-
setActivePath
|
|
62950
|
-
}) => {
|
|
62951
|
-
const paddingLeft = level * 30;
|
|
62952
|
-
const logo = type === "string" ? /* @__PURE__ */ jsxRuntime.jsx(TextIcon$1, {}) : type === "image" ? /* @__PURE__ */ jsxRuntime.jsx(ImageIcon$1, { className: "h-[9px] w-[9px]" }) : /* @__PURE__ */ jsxRuntime.jsx(Section$1, {});
|
|
62953
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "w-full", children: [
|
|
62954
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
62955
|
-
"button",
|
|
62956
|
-
{
|
|
62957
|
-
className: "flex justify-between w-full group py-2 text-xs font-[400] shrink-0",
|
|
62958
|
-
onClick: () => {
|
|
62959
|
-
setActivePath && setActivePath(path);
|
|
62960
|
-
},
|
|
62961
|
-
style: { paddingLeft },
|
|
62962
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-center gap-2", children: [
|
|
62963
|
-
logo,
|
|
62964
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { children: path })
|
|
62965
|
-
] })
|
|
62966
|
-
}
|
|
62967
|
-
),
|
|
62968
|
-
children && /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: React$3.Children.map(children, (child) => {
|
|
62969
|
-
return React$3.cloneElement(child, {
|
|
62970
|
-
level: level + 1,
|
|
62971
|
-
paths: [...paths, path]
|
|
62972
|
-
});
|
|
62973
|
-
}) })
|
|
63041
|
+
Grid.Column = ({ children, className: className2 }) => {
|
|
63042
|
+
const [header, body] = React$3.Children.toArray(children);
|
|
63043
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: classNames("flex flex-col", className2), children: [
|
|
63044
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center border-b border-border", children: header }),
|
|
63045
|
+
body
|
|
62974
63046
|
] });
|
|
62975
63047
|
};
|
|
62976
63048
|
const falsyToString = (value) => typeof value === "boolean" ? "".concat(value) : value === 0 ? "0" : value;
|
|
@@ -67474,8 +67546,10 @@ function ValFormField({
|
|
|
67474
67546
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
67475
67547
|
StringField,
|
|
67476
67548
|
{
|
|
67549
|
+
path,
|
|
67477
67550
|
defaultValue: source,
|
|
67478
67551
|
disabled,
|
|
67552
|
+
schema,
|
|
67479
67553
|
registerPatchCallback,
|
|
67480
67554
|
onSubmit
|
|
67481
67555
|
}
|
|
@@ -67550,7 +67624,13 @@ function ValFormField({
|
|
|
67550
67624
|
}
|
|
67551
67625
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
67552
67626
|
"Unsupported schema: ",
|
|
67553
|
-
schema.type
|
|
67627
|
+
schema.type,
|
|
67628
|
+
" (source type: ",
|
|
67629
|
+
typeof source,
|
|
67630
|
+
" source:",
|
|
67631
|
+
" ",
|
|
67632
|
+
JSON.stringify(source),
|
|
67633
|
+
")"
|
|
67554
67634
|
] });
|
|
67555
67635
|
}
|
|
67556
67636
|
function createImagePatch(path, data, filename, metadata) {
|
|
@@ -67609,6 +67689,7 @@ function ImageField({
|
|
|
67609
67689
|
onSubmit,
|
|
67610
67690
|
registerPatchCallback
|
|
67611
67691
|
}) {
|
|
67692
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l;
|
|
67612
67693
|
const [data, setData] = React$3.useState(
|
|
67613
67694
|
null
|
|
67614
67695
|
);
|
|
@@ -67632,7 +67713,7 @@ function ImageField({
|
|
|
67632
67713
|
}
|
|
67633
67714
|
}, [data, defaultValue]);
|
|
67634
67715
|
React$3.useEffect(() => {
|
|
67635
|
-
var
|
|
67716
|
+
var _a2;
|
|
67636
67717
|
if (hotspot) {
|
|
67637
67718
|
if (metadata) {
|
|
67638
67719
|
const newMetadata = {
|
|
@@ -67649,111 +67730,125 @@ function ImageField({
|
|
|
67649
67730
|
console.error("Neither image metadata nor value is set");
|
|
67650
67731
|
}
|
|
67651
67732
|
} else {
|
|
67652
|
-
if ((
|
|
67733
|
+
if ((_a2 = defaultValue == null ? void 0 : defaultValue.metadata) == null ? void 0 : _a2.hotspot) {
|
|
67653
67734
|
setHotspot(defaultValue.metadata.hotspot);
|
|
67654
67735
|
}
|
|
67655
67736
|
}
|
|
67656
67737
|
}, [hotspot, defaultValue]);
|
|
67657
67738
|
return /* @__PURE__ */ jsxRuntime.jsxs(FieldContainer, { children: [
|
|
67658
|
-
/* @__PURE__ */ jsxRuntime.
|
|
67659
|
-
|
|
67660
|
-
|
|
67661
|
-
|
|
67662
|
-
|
|
67663
|
-
|
|
67664
|
-
|
|
67665
|
-
|
|
67666
|
-
|
|
67739
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
67740
|
+
"div",
|
|
67741
|
+
{
|
|
67742
|
+
className: "flex flex-col max-w-4xl p-2 border border-b-0 rounded-sm rounded-b-none gap-y-4 bg-background text-foreground border-input",
|
|
67743
|
+
children: data || url ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
|
|
67744
|
+
hotspot && /* @__PURE__ */ jsxRuntime.jsx(
|
|
67745
|
+
"div",
|
|
67746
|
+
{
|
|
67747
|
+
className: "rounded-full h-[12px] w-[12px] bg-background mix-blend-difference border-accent border-2 absolute pointer-events-none",
|
|
67748
|
+
style: {
|
|
67749
|
+
top: `${hotspot.y * 100}%`,
|
|
67750
|
+
left: `${hotspot.x * 100}%`
|
|
67751
|
+
}
|
|
67667
67752
|
}
|
|
67668
|
-
|
|
67669
|
-
|
|
67670
|
-
|
|
67671
|
-
|
|
67672
|
-
|
|
67673
|
-
|
|
67674
|
-
|
|
67675
|
-
|
|
67676
|
-
|
|
67677
|
-
|
|
67678
|
-
|
|
67679
|
-
|
|
67680
|
-
|
|
67681
|
-
|
|
67682
|
-
|
|
67753
|
+
),
|
|
67754
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
67755
|
+
"img",
|
|
67756
|
+
{
|
|
67757
|
+
src: (data == null ? void 0 : data.src) || url,
|
|
67758
|
+
draggable: false,
|
|
67759
|
+
className: "w-full",
|
|
67760
|
+
style: {
|
|
67761
|
+
cursor: "crosshair"
|
|
67762
|
+
},
|
|
67763
|
+
onClick: (ev) => {
|
|
67764
|
+
const { width: width2, height: height2, left, top } = ev.currentTarget.getBoundingClientRect();
|
|
67765
|
+
const hotspotX = (ev.clientX - 6 - left) / width2;
|
|
67766
|
+
const hotspotY = (ev.clientY - 6 - top) / height2;
|
|
67767
|
+
setHotspot({
|
|
67768
|
+
x: hotspotX,
|
|
67769
|
+
y: hotspotY,
|
|
67770
|
+
width: 1,
|
|
67771
|
+
height: 1
|
|
67772
|
+
});
|
|
67773
|
+
}
|
|
67683
67774
|
}
|
|
67684
|
-
|
|
67685
|
-
)
|
|
67686
|
-
|
|
67687
|
-
|
|
67688
|
-
|
|
67689
|
-
|
|
67690
|
-
|
|
67691
|
-
|
|
67692
|
-
|
|
67693
|
-
|
|
67694
|
-
|
|
67695
|
-
|
|
67696
|
-
|
|
67697
|
-
|
|
67698
|
-
|
|
67699
|
-
|
|
67700
|
-
|
|
67701
|
-
|
|
67702
|
-
|
|
67703
|
-
|
|
67704
|
-
|
|
67705
|
-
|
|
67706
|
-
|
|
67707
|
-
|
|
67708
|
-
|
|
67709
|
-
|
|
67710
|
-
|
|
67711
|
-
|
|
67712
|
-
|
|
67713
|
-
|
|
67775
|
+
)
|
|
67776
|
+
] }) : /* @__PURE__ */ jsxRuntime.jsx("div", { children: "Select image below" })
|
|
67777
|
+
},
|
|
67778
|
+
path
|
|
67779
|
+
),
|
|
67780
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "w-full p-4 border border-t-0 rounded-b-sm bg-background border-input", children: [
|
|
67781
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
67782
|
+
"label",
|
|
67783
|
+
{
|
|
67784
|
+
htmlFor: `img_input:${path}`,
|
|
67785
|
+
className: "block w-full px-1 py-2 text-sm text-center rounded-md cursor-pointer bg-primary text-background",
|
|
67786
|
+
children: "Update"
|
|
67787
|
+
}
|
|
67788
|
+
),
|
|
67789
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
67790
|
+
"input",
|
|
67791
|
+
{
|
|
67792
|
+
hidden: true,
|
|
67793
|
+
id: `img_input:${path}`,
|
|
67794
|
+
type: "file",
|
|
67795
|
+
onChange: (ev) => {
|
|
67796
|
+
readImage(ev).then((res) => {
|
|
67797
|
+
setData({ src: res.src, filename: res.filename });
|
|
67798
|
+
if (res.width && res.height && res.mimeType) {
|
|
67799
|
+
setMetadata({
|
|
67800
|
+
sha256: res.sha256,
|
|
67801
|
+
width: res.width,
|
|
67802
|
+
height: res.height,
|
|
67803
|
+
mimeType: res.mimeType,
|
|
67804
|
+
hotspot
|
|
67805
|
+
});
|
|
67806
|
+
} else {
|
|
67714
67807
|
setMetadata(void 0);
|
|
67715
|
-
|
|
67716
|
-
|
|
67808
|
+
setHotspot(void 0);
|
|
67809
|
+
}
|
|
67810
|
+
}).catch((err2) => {
|
|
67811
|
+
console.error(err2.message);
|
|
67812
|
+
setData(null);
|
|
67813
|
+
setHotspot(void 0);
|
|
67814
|
+
setMetadata(void 0);
|
|
67815
|
+
});
|
|
67717
67816
|
}
|
|
67718
|
-
)
|
|
67719
|
-
] })
|
|
67720
|
-
] }, path),
|
|
67721
|
-
onSubmit && data && /* @__PURE__ */ jsxRuntime.jsx(
|
|
67722
|
-
SubmitButton,
|
|
67723
|
-
{
|
|
67724
|
-
loading,
|
|
67725
|
-
onClick: () => {
|
|
67726
|
-
setLoading(true);
|
|
67727
|
-
onSubmit(
|
|
67728
|
-
(path2) => Promise.resolve(
|
|
67729
|
-
createImagePatch(
|
|
67730
|
-
path2,
|
|
67731
|
-
data.src,
|
|
67732
|
-
data.filename ?? null,
|
|
67733
|
-
metadata
|
|
67734
|
-
)
|
|
67735
|
-
)
|
|
67736
|
-
).finally(() => {
|
|
67737
|
-
setLoading(false);
|
|
67738
|
-
setData(null);
|
|
67739
|
-
setMetadata(void 0);
|
|
67740
|
-
});
|
|
67741
67817
|
}
|
|
67742
|
-
|
|
67743
|
-
),
|
|
67744
|
-
onSubmit &&
|
|
67818
|
+
)
|
|
67819
|
+
] }),
|
|
67820
|
+
onSubmit && /* @__PURE__ */ jsxRuntime.jsx(
|
|
67745
67821
|
SubmitButton,
|
|
67746
67822
|
{
|
|
67747
67823
|
loading,
|
|
67824
|
+
enabled: !!data || ((_b = (_a = defaultValue == null ? void 0 : defaultValue.metadata) == null ? void 0 : _a.hotspot) == null ? void 0 : _b.height) !== (hotspot == null ? void 0 : hotspot.height) || ((_d = (_c = defaultValue == null ? void 0 : defaultValue.metadata) == null ? void 0 : _c.hotspot) == null ? void 0 : _d.width) !== (hotspot == null ? void 0 : hotspot.width) || ((_f = (_e = defaultValue == null ? void 0 : defaultValue.metadata) == null ? void 0 : _e.hotspot) == null ? void 0 : _f.x) !== (hotspot == null ? void 0 : hotspot.x) || ((_h = (_g = defaultValue == null ? void 0 : defaultValue.metadata) == null ? void 0 : _g.hotspot) == null ? void 0 : _h.y) !== (hotspot == null ? void 0 : hotspot.y) || ((_i = defaultValue == null ? void 0 : defaultValue.metadata) == null ? void 0 : _i.width) !== (metadata == null ? void 0 : metadata.width) || ((_j = defaultValue == null ? void 0 : defaultValue.metadata) == null ? void 0 : _j.height) !== (metadata == null ? void 0 : metadata.height) || ((_k = defaultValue == null ? void 0 : defaultValue.metadata) == null ? void 0 : _k.mimeType) !== (metadata == null ? void 0 : metadata.mimeType) || ((_l = defaultValue == null ? void 0 : defaultValue.metadata) == null ? void 0 : _l.sha256) !== (metadata == null ? void 0 : metadata.sha256),
|
|
67748
67825
|
onClick: () => {
|
|
67749
|
-
|
|
67750
|
-
|
|
67751
|
-
(
|
|
67752
|
-
|
|
67753
|
-
|
|
67754
|
-
|
|
67755
|
-
|
|
67756
|
-
|
|
67826
|
+
if (data) {
|
|
67827
|
+
setLoading(true);
|
|
67828
|
+
onSubmit(
|
|
67829
|
+
(path2) => Promise.resolve(
|
|
67830
|
+
createImagePatch(
|
|
67831
|
+
path2,
|
|
67832
|
+
data.src,
|
|
67833
|
+
data.filename ?? null,
|
|
67834
|
+
metadata
|
|
67835
|
+
)
|
|
67836
|
+
)
|
|
67837
|
+
).finally(() => {
|
|
67838
|
+
setLoading(false);
|
|
67839
|
+
setData(null);
|
|
67840
|
+
setMetadata(void 0);
|
|
67841
|
+
});
|
|
67842
|
+
} else if (metadata) {
|
|
67843
|
+
setLoading(true);
|
|
67844
|
+
onSubmit(
|
|
67845
|
+
(path2) => Promise.resolve(createImageMetadataPatch(path2, metadata))
|
|
67846
|
+
).finally(() => {
|
|
67847
|
+
setLoading(false);
|
|
67848
|
+
setData(null);
|
|
67849
|
+
setMetadata(void 0);
|
|
67850
|
+
});
|
|
67851
|
+
}
|
|
67757
67852
|
}
|
|
67758
67853
|
}
|
|
67759
67854
|
)
|
|
@@ -67834,10 +67929,11 @@ function RichTextField({
|
|
|
67834
67929
|
}
|
|
67835
67930
|
}
|
|
67836
67931
|
),
|
|
67837
|
-
onSubmit &&
|
|
67932
|
+
onSubmit && /* @__PURE__ */ jsxRuntime.jsx(
|
|
67838
67933
|
SubmitButton,
|
|
67839
67934
|
{
|
|
67840
67935
|
loading: loading || !editor,
|
|
67936
|
+
enabled: didChange,
|
|
67841
67937
|
onClick: () => {
|
|
67842
67938
|
if (editor) {
|
|
67843
67939
|
setLoading(true);
|
|
@@ -67919,10 +68015,11 @@ function KeyOfField({
|
|
|
67919
68015
|
]
|
|
67920
68016
|
}
|
|
67921
68017
|
),
|
|
67922
|
-
onSubmit &&
|
|
68018
|
+
onSubmit && /* @__PURE__ */ jsxRuntime.jsx(
|
|
67923
68019
|
SubmitButton,
|
|
67924
68020
|
{
|
|
67925
68021
|
loading,
|
|
68022
|
+
enabled: defaultValue !== value,
|
|
67926
68023
|
onClick: () => {
|
|
67927
68024
|
setLoading(true);
|
|
67928
68025
|
onSubmit(async (path) => [
|
|
@@ -67976,10 +68073,11 @@ function NumberField({
|
|
|
67976
68073
|
type: "number"
|
|
67977
68074
|
}
|
|
67978
68075
|
),
|
|
67979
|
-
onSubmit &&
|
|
68076
|
+
onSubmit && /* @__PURE__ */ jsxRuntime.jsx(
|
|
67980
68077
|
SubmitButton,
|
|
67981
68078
|
{
|
|
67982
68079
|
loading,
|
|
68080
|
+
enabled: defaultValue !== value,
|
|
67983
68081
|
onClick: () => {
|
|
67984
68082
|
setLoading(true);
|
|
67985
68083
|
onSubmit(async (path) => {
|
|
@@ -68002,6 +68100,8 @@ function NumberField({
|
|
|
68002
68100
|
function StringField({
|
|
68003
68101
|
disabled,
|
|
68004
68102
|
defaultValue,
|
|
68103
|
+
path,
|
|
68104
|
+
schema,
|
|
68005
68105
|
registerPatchCallback,
|
|
68006
68106
|
onSubmit
|
|
68007
68107
|
}) {
|
|
@@ -68013,18 +68113,28 @@ function StringField({
|
|
|
68013
68113
|
const ref = React$3.useRef(null);
|
|
68014
68114
|
React$3.useEffect(() => {
|
|
68015
68115
|
if (registerPatchCallback) {
|
|
68016
|
-
registerPatchCallback(async (
|
|
68116
|
+
registerPatchCallback(async (path2) => {
|
|
68017
68117
|
var _a;
|
|
68018
68118
|
return [
|
|
68019
68119
|
{
|
|
68020
68120
|
op: "replace",
|
|
68021
|
-
path,
|
|
68121
|
+
path: path2,
|
|
68022
68122
|
value: ((_a = ref.current) == null ? void 0 : _a.value) || ""
|
|
68023
68123
|
}
|
|
68024
68124
|
];
|
|
68025
68125
|
});
|
|
68026
68126
|
}
|
|
68027
68127
|
}, []);
|
|
68128
|
+
const actualSchema = new StringSchema(
|
|
68129
|
+
schema.options ? {
|
|
68130
|
+
...schema.options,
|
|
68131
|
+
regexp: schema.options.regexp ? new RegExp(
|
|
68132
|
+
schema.options.regexp.source,
|
|
68133
|
+
schema.options.regexp.flags
|
|
68134
|
+
) : void 0
|
|
68135
|
+
} : void 0
|
|
68136
|
+
);
|
|
68137
|
+
const validationErrors = actualSchema.validate(path, value);
|
|
68028
68138
|
return /* @__PURE__ */ jsxRuntime.jsxs(FieldContainer, { children: [
|
|
68029
68139
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
68030
68140
|
Input,
|
|
@@ -68035,18 +68145,20 @@ function StringField({
|
|
|
68035
68145
|
onChange: (e) => setValue(e.target.value)
|
|
68036
68146
|
}
|
|
68037
68147
|
),
|
|
68038
|
-
onSubmit &&
|
|
68148
|
+
onSubmit && /* @__PURE__ */ jsxRuntime.jsx(
|
|
68039
68149
|
SubmitButton,
|
|
68040
68150
|
{
|
|
68151
|
+
validationErrors: validationErrors && validationErrors[path],
|
|
68041
68152
|
loading,
|
|
68153
|
+
enabled: defaultValue !== value && !validationErrors,
|
|
68042
68154
|
onClick: () => {
|
|
68043
68155
|
setLoading(true);
|
|
68044
|
-
onSubmit(async (
|
|
68156
|
+
onSubmit(async (path2) => {
|
|
68045
68157
|
var _a;
|
|
68046
68158
|
return [
|
|
68047
68159
|
{
|
|
68048
68160
|
op: "replace",
|
|
68049
|
-
path,
|
|
68161
|
+
path: path2,
|
|
68050
68162
|
value: ((_a = ref.current) == null ? void 0 : _a.value) || ""
|
|
68051
68163
|
}
|
|
68052
68164
|
];
|
|
@@ -68058,14 +68170,24 @@ function StringField({
|
|
|
68058
68170
|
)
|
|
68059
68171
|
] });
|
|
68060
68172
|
}
|
|
68173
|
+
function InlineValidationErrors({ errors }) {
|
|
68174
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-col gap-y-1 p-2 rounded-md text-sm text-destructive-foreground bg-destructive", children: errors.map((error, i) => /* @__PURE__ */ jsxRuntime.jsx("div", { children: error.message }, i)) });
|
|
68175
|
+
}
|
|
68061
68176
|
function FieldContainer({ children }) {
|
|
68062
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative p-4
|
|
68177
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative p-4", children });
|
|
68063
68178
|
}
|
|
68064
68179
|
function SubmitButton({
|
|
68065
68180
|
loading,
|
|
68181
|
+
enabled,
|
|
68182
|
+
validationErrors,
|
|
68066
68183
|
onClick
|
|
68067
68184
|
}) {
|
|
68068
|
-
|
|
68185
|
+
const { session } = useValOverlayContext();
|
|
68186
|
+
const isProxy = session.status === "success" && session.data.mode === "proxy";
|
|
68187
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "sticky bottom-0 m-4 ml-0", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex justify-between w-full gap-2 py-2 text-sm", children: [
|
|
68188
|
+
validationErrors ? /* @__PURE__ */ jsxRuntime.jsx(InlineValidationErrors, { errors: validationErrors || [] }) : /* @__PURE__ */ jsxRuntime.jsx("span", {}),
|
|
68189
|
+
/* @__PURE__ */ jsxRuntime.jsx(Button, { disabled: loading || !enabled, onClick, children: loading ? isProxy ? "Staging..." : "Saving..." : isProxy ? "Stage" : "Save" })
|
|
68190
|
+
] }) });
|
|
68069
68191
|
}
|
|
68070
68192
|
const Logo = ({ className: className2 }) => {
|
|
68071
68193
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -68082,7 +68204,7 @@ const Logo = ({ className: className2 }) => {
|
|
|
68082
68204
|
"path",
|
|
68083
68205
|
{
|
|
68084
68206
|
d: "M5 5.36426C5 5.16309 5.16309 5 5.36426 5H17.6581C17.8593 5 18.0223 5.16309 18.0223 5.36426V28.4949C18.0223 28.696 17.8593 28.8591 17.6581 28.8591H5.36426C5.16309 28.8591 5 28.696 5 28.4949V5.36426Z",
|
|
68085
|
-
fill: "
|
|
68207
|
+
fill: "hsl(var(--accent))"
|
|
68086
68208
|
}
|
|
68087
68209
|
) }),
|
|
68088
68210
|
/* @__PURE__ */ jsxRuntime.jsx("g", { filter: "url(#filter1_i_21_1677)", children: /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "11.4656", cy: "23.7595", r: "2.18557", fill: "currentColor" }) }),
|
|
@@ -72536,6 +72658,33 @@ function useSession(api) {
|
|
|
72536
72658
|
}, [sessionResetId]);
|
|
72537
72659
|
return session;
|
|
72538
72660
|
}
|
|
72661
|
+
function Path({ children }) {
|
|
72662
|
+
const segs = children.split("/").filter((seg) => seg);
|
|
72663
|
+
return segs.map((seg, i) => {
|
|
72664
|
+
if (i !== segs.length - 1) {
|
|
72665
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(React$3.Fragment, { children: [
|
|
72666
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { children: seg }),
|
|
72667
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "px-[2px] text-muted", children: "/" })
|
|
72668
|
+
] }, `${children}/${seg}`);
|
|
72669
|
+
}
|
|
72670
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Seg, { children: seg }, children);
|
|
72671
|
+
});
|
|
72672
|
+
}
|
|
72673
|
+
function Seg({ children }) {
|
|
72674
|
+
if (children.includes(".")) {
|
|
72675
|
+
const segs = children.split(".");
|
|
72676
|
+
return segs.map((seg, i) => {
|
|
72677
|
+
if (i !== segs.length - 1) {
|
|
72678
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(React$3.Fragment, { children: [
|
|
72679
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { children: i === 0 ? seg : JSON.parse(seg) }),
|
|
72680
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "px-[2px] text-muted", children: "." })
|
|
72681
|
+
] }, `${children}.${seg}`);
|
|
72682
|
+
}
|
|
72683
|
+
return /* @__PURE__ */ jsxRuntime.jsx("span", { children: i === 0 ? seg : JSON.parse(seg) }, children);
|
|
72684
|
+
});
|
|
72685
|
+
}
|
|
72686
|
+
return /* @__PURE__ */ jsxRuntime.jsx("span", { children });
|
|
72687
|
+
}
|
|
72539
72688
|
const ValModulesContext = React$3.createContext(null);
|
|
72540
72689
|
const useValModuleFromPath = (sourcePath) => {
|
|
72541
72690
|
var _a, _b;
|
|
@@ -72686,12 +72835,13 @@ Showing stack trace of: 1. ${fatalErrors[0].message}`;
|
|
|
72686
72835
|
"div",
|
|
72687
72836
|
{
|
|
72688
72837
|
id: "val-fullscreen-container",
|
|
72689
|
-
className: "relative font-serif antialiased",
|
|
72838
|
+
className: "relative w-full h-[100] overflow-hidden font-serif antialiased bg-background text-primary",
|
|
72690
72839
|
"data-mode": theme2,
|
|
72691
72840
|
children: [
|
|
72692
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "fixed -translate-
|
|
72841
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "fixed -translate-y-1/2 right-4 top-1/2 z-overlay", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
72693
72842
|
ValMenu,
|
|
72694
72843
|
{
|
|
72844
|
+
direction: "vertical",
|
|
72695
72845
|
api,
|
|
72696
72846
|
patches,
|
|
72697
72847
|
onCommit: () => setPatchResetId((prev) => prev + 1)
|
|
@@ -72704,18 +72854,19 @@ Showing stack trace of: 1. ${fatalErrors[0].message}`;
|
|
|
72704
72854
|
value: {
|
|
72705
72855
|
hoverElem: hoverElemRef == null ? void 0 : hoverElemRef.current
|
|
72706
72856
|
},
|
|
72707
|
-
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-primary
|
|
72857
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-primary", children: /* @__PURE__ */ jsxRuntime.jsxs(Grid, { children: [
|
|
72708
72858
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-4 h-[50px] flex items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(Logo$1, {}) }),
|
|
72709
72859
|
/* @__PURE__ */ jsxRuntime.jsx(ScrollArea, { className: "px-4", children: modules ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
72710
72860
|
PathTree,
|
|
72711
72861
|
{
|
|
72862
|
+
selectedPath,
|
|
72712
72863
|
paths: Object.keys(modules),
|
|
72713
72864
|
setSelectedModuleId: (path) => {
|
|
72714
72865
|
navigate(path);
|
|
72715
72866
|
}
|
|
72716
72867
|
}
|
|
72717
72868
|
) : !error && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "py-4", children: "Loading..." }) }),
|
|
72718
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-start
|
|
72869
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-start h-[50px] gap-2 font-serif text-xs", children: [
|
|
72719
72870
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
72720
72871
|
"button",
|
|
72721
72872
|
{
|
|
@@ -72725,10 +72876,10 @@ Showing stack trace of: 1. ${fatalErrors[0].message}`;
|
|
|
72725
72876
|
children: /* @__PURE__ */ jsxRuntime.jsx(ChevronLeft, {})
|
|
72726
72877
|
}
|
|
72727
72878
|
),
|
|
72728
|
-
/* @__PURE__ */ jsxRuntime.jsx("
|
|
72879
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { children: /* @__PURE__ */ jsxRuntime.jsx(Path, { children: selectedPath || "/" }) })
|
|
72729
72880
|
] }),
|
|
72730
72881
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-4", children: [
|
|
72731
|
-
error && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-lg text-destructive-foreground", children: [
|
|
72882
|
+
error && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-4 text-lg bg-destructive text-destructive-foreground max-w-xl", children: [
|
|
72732
72883
|
"ERROR: ",
|
|
72733
72884
|
error
|
|
72734
72885
|
] }),
|
|
@@ -72797,7 +72948,7 @@ function AnyVal({
|
|
|
72797
72948
|
initOnSubmit,
|
|
72798
72949
|
top
|
|
72799
72950
|
}) {
|
|
72800
|
-
if (
|
|
72951
|
+
if (schema.opt) {
|
|
72801
72952
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
72802
72953
|
ValOptional,
|
|
72803
72954
|
{
|
|
@@ -72810,6 +72961,18 @@ function AnyVal({
|
|
|
72810
72961
|
}
|
|
72811
72962
|
);
|
|
72812
72963
|
}
|
|
72964
|
+
if (source === null) {
|
|
72965
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
72966
|
+
ValDefaultOf,
|
|
72967
|
+
{
|
|
72968
|
+
source,
|
|
72969
|
+
schema,
|
|
72970
|
+
path,
|
|
72971
|
+
setSelectedPath,
|
|
72972
|
+
initOnSubmit
|
|
72973
|
+
}
|
|
72974
|
+
);
|
|
72975
|
+
}
|
|
72813
72976
|
if (schema.type === "object") {
|
|
72814
72977
|
if (typeof source !== "object" || isJsonArray(source)) {
|
|
72815
72978
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
@@ -72835,15 +72998,18 @@ function AnyVal({
|
|
|
72835
72998
|
typeof source
|
|
72836
72999
|
] });
|
|
72837
73000
|
}
|
|
72838
|
-
return /* @__PURE__ */ jsxRuntime.
|
|
72839
|
-
|
|
72840
|
-
|
|
72841
|
-
|
|
72842
|
-
|
|
72843
|
-
|
|
72844
|
-
|
|
72845
|
-
|
|
72846
|
-
|
|
73001
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
73002
|
+
field ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-left", children: field }) : /* @__PURE__ */ jsxRuntime.jsx(Path, { children: path }),
|
|
73003
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
73004
|
+
ValList,
|
|
73005
|
+
{
|
|
73006
|
+
source,
|
|
73007
|
+
path,
|
|
73008
|
+
schema,
|
|
73009
|
+
setSelectedPath
|
|
73010
|
+
}
|
|
73011
|
+
)
|
|
73012
|
+
] });
|
|
72847
73013
|
} else if (schema.type === "record") {
|
|
72848
73014
|
if (typeof source !== "object") {
|
|
72849
73015
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
@@ -72859,18 +73025,38 @@ function AnyVal({
|
|
|
72859
73025
|
schema.type
|
|
72860
73026
|
] });
|
|
72861
73027
|
}
|
|
72862
|
-
return /* @__PURE__ */ jsxRuntime.
|
|
72863
|
-
|
|
72864
|
-
|
|
72865
|
-
|
|
72866
|
-
|
|
72867
|
-
|
|
72868
|
-
|
|
72869
|
-
|
|
72870
|
-
|
|
73028
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
73029
|
+
field ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-left", children: field }) : /* @__PURE__ */ jsxRuntime.jsx(Path, { children: path }),
|
|
73030
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
73031
|
+
ValRecord,
|
|
73032
|
+
{
|
|
73033
|
+
source,
|
|
73034
|
+
path,
|
|
73035
|
+
schema,
|
|
73036
|
+
setSelectedPath
|
|
73037
|
+
}
|
|
73038
|
+
)
|
|
73039
|
+
] });
|
|
73040
|
+
} else if ((schema == null ? void 0 : schema.type) === "union") {
|
|
73041
|
+
if (schema.key && typeof source === "object" && !isJsonArray(source)) {
|
|
73042
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
73043
|
+
ValTaggedUnion,
|
|
73044
|
+
{
|
|
73045
|
+
tag: schema.key,
|
|
73046
|
+
source,
|
|
73047
|
+
path,
|
|
73048
|
+
schema,
|
|
73049
|
+
initOnSubmit,
|
|
73050
|
+
setSelectedPath,
|
|
73051
|
+
top
|
|
73052
|
+
}
|
|
73053
|
+
);
|
|
73054
|
+
}
|
|
73055
|
+
} else if ((schema == null ? void 0 : schema.type) === "literal") {
|
|
73056
|
+
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, {});
|
|
72871
73057
|
}
|
|
72872
73058
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "py-2 gap-y-4", children: [
|
|
72873
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-left", children: field
|
|
73059
|
+
field ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-left", children: field }) : /* @__PURE__ */ jsxRuntime.jsx(Path, { children: path }),
|
|
72874
73060
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
72875
73061
|
ValFormField,
|
|
72876
73062
|
{
|
|
@@ -72883,6 +73069,97 @@ function AnyVal({
|
|
|
72883
73069
|
)
|
|
72884
73070
|
] });
|
|
72885
73071
|
}
|
|
73072
|
+
function ValTaggedUnion({
|
|
73073
|
+
tag,
|
|
73074
|
+
path,
|
|
73075
|
+
source,
|
|
73076
|
+
schema,
|
|
73077
|
+
setSelectedPath,
|
|
73078
|
+
initOnSubmit,
|
|
73079
|
+
top
|
|
73080
|
+
}) {
|
|
73081
|
+
const [currentKey, setCurrentKey] = React$3.useState(null);
|
|
73082
|
+
const [current, setCurrent] = React$3.useState(null);
|
|
73083
|
+
const keys = schema.items.flatMap((item) => {
|
|
73084
|
+
if (item.type === "object" && item.items[tag]) {
|
|
73085
|
+
const maybeLiteral = item.items[tag];
|
|
73086
|
+
if (maybeLiteral.type === "literal") {
|
|
73087
|
+
return [maybeLiteral.value];
|
|
73088
|
+
}
|
|
73089
|
+
}
|
|
73090
|
+
return [];
|
|
73091
|
+
});
|
|
73092
|
+
React$3.useEffect(() => {
|
|
73093
|
+
if (!currentKey) {
|
|
73094
|
+
const maybeCurrentKey = source == null ? void 0 : source[tag];
|
|
73095
|
+
if (maybeCurrentKey && typeof maybeCurrentKey === "string") {
|
|
73096
|
+
setCurrentKey(maybeCurrentKey);
|
|
73097
|
+
}
|
|
73098
|
+
} else {
|
|
73099
|
+
const sourceKey = source[tag];
|
|
73100
|
+
const unionSchema = schema.items.find((item) => {
|
|
73101
|
+
if (item.type === "object" && item.items[tag]) {
|
|
73102
|
+
const maybeLiteral = item.items[tag];
|
|
73103
|
+
if (maybeLiteral.type === "literal") {
|
|
73104
|
+
return maybeLiteral.value === currentKey;
|
|
73105
|
+
}
|
|
73106
|
+
return false;
|
|
73107
|
+
}
|
|
73108
|
+
});
|
|
73109
|
+
if (sourceKey && typeof sourceKey === "string" && unionSchema) {
|
|
73110
|
+
setCurrent({ source, schema: unionSchema });
|
|
73111
|
+
} else {
|
|
73112
|
+
console.error(
|
|
73113
|
+
"Could not find source or schema of key",
|
|
73114
|
+
currentKey,
|
|
73115
|
+
source,
|
|
73116
|
+
schema
|
|
73117
|
+
);
|
|
73118
|
+
setCurrent(null);
|
|
73119
|
+
}
|
|
73120
|
+
}
|
|
73121
|
+
}, [currentKey, source, schema, keys]);
|
|
73122
|
+
if (keys.length !== schema.items.length) {
|
|
73123
|
+
console.warn("Not all items have tag:", tag);
|
|
73124
|
+
}
|
|
73125
|
+
const loading = false;
|
|
73126
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
73127
|
+
"div",
|
|
73128
|
+
{
|
|
73129
|
+
className: classNames("flex flex-col gap-y-8", {
|
|
73130
|
+
"border-l-2 border-border pl-6": !top
|
|
73131
|
+
}),
|
|
73132
|
+
children: [
|
|
73133
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
73134
|
+
Select,
|
|
73135
|
+
{
|
|
73136
|
+
defaultValue: currentKey ?? void 0,
|
|
73137
|
+
disabled: loading,
|
|
73138
|
+
onValueChange: (key) => {
|
|
73139
|
+
setCurrentKey(key);
|
|
73140
|
+
},
|
|
73141
|
+
children: [
|
|
73142
|
+
/* @__PURE__ */ jsxRuntime.jsx(SelectTrigger, { children: /* @__PURE__ */ jsxRuntime.jsx(SelectValue, { placeholder: "Select type" }) }),
|
|
73143
|
+
/* @__PURE__ */ jsxRuntime.jsx(SelectContent, { children: keys.map((tag2) => /* @__PURE__ */ jsxRuntime.jsx(SelectItem, { value: tag2.toString(), children: tag2.toString() }, tag2)) })
|
|
73144
|
+
]
|
|
73145
|
+
}
|
|
73146
|
+
),
|
|
73147
|
+
current && /* @__PURE__ */ jsxRuntime.jsx(
|
|
73148
|
+
AnyVal,
|
|
73149
|
+
{
|
|
73150
|
+
path,
|
|
73151
|
+
source: current.source,
|
|
73152
|
+
schema: current.schema,
|
|
73153
|
+
setSelectedPath,
|
|
73154
|
+
initOnSubmit,
|
|
73155
|
+
top
|
|
73156
|
+
}
|
|
73157
|
+
)
|
|
73158
|
+
]
|
|
73159
|
+
},
|
|
73160
|
+
path
|
|
73161
|
+
);
|
|
73162
|
+
}
|
|
72886
73163
|
function ValObject({
|
|
72887
73164
|
path,
|
|
72888
73165
|
source,
|
|
@@ -72903,7 +73180,7 @@ function ValObject({
|
|
|
72903
73180
|
AnyVal,
|
|
72904
73181
|
{
|
|
72905
73182
|
path: subPath,
|
|
72906
|
-
source: source[key],
|
|
73183
|
+
source: (source == null ? void 0 : source[key]) ?? null,
|
|
72907
73184
|
schema: property,
|
|
72908
73185
|
setSelectedPath,
|
|
72909
73186
|
field: key,
|
|
@@ -73226,8 +73503,8 @@ function ValOptional({
|
|
|
73226
73503
|
field
|
|
73227
73504
|
}) {
|
|
73228
73505
|
const [enable, setEnable] = React$3.useState(source !== null);
|
|
73229
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-y-
|
|
73230
|
-
|
|
73506
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-y-2", children: [
|
|
73507
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-start gap-x-4", children: [
|
|
73231
73508
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
73232
73509
|
Switch,
|
|
73233
73510
|
{
|
|
@@ -73237,16 +73514,8 @@ function ValOptional({
|
|
|
73237
73514
|
}
|
|
73238
73515
|
}
|
|
73239
73516
|
),
|
|
73240
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { children: field })
|
|
73241
|
-
] })
|
|
73242
|
-
Switch,
|
|
73243
|
-
{
|
|
73244
|
-
checked: enable,
|
|
73245
|
-
onClick: () => {
|
|
73246
|
-
setEnable((prev) => !prev);
|
|
73247
|
-
}
|
|
73248
|
-
}
|
|
73249
|
-
),
|
|
73517
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { children: field ? field : /* @__PURE__ */ jsxRuntime.jsx(Path, { children: path }) })
|
|
73518
|
+
] }),
|
|
73250
73519
|
enable && /* @__PURE__ */ jsxRuntime.jsx(
|
|
73251
73520
|
ValDefaultOf,
|
|
73252
73521
|
{
|
|
@@ -73315,61 +73584,62 @@ function ValDefaultOf({
|
|
|
73315
73584
|
function isJsonArray(source) {
|
|
73316
73585
|
return Array.isArray(source);
|
|
73317
73586
|
}
|
|
73318
|
-
function
|
|
73319
|
-
const
|
|
73587
|
+
function dirPaths(paths) {
|
|
73588
|
+
const res = {};
|
|
73320
73589
|
paths.forEach((path) => {
|
|
73321
|
-
const
|
|
73322
|
-
|
|
73323
|
-
|
|
73324
|
-
|
|
73325
|
-
current[part] = {};
|
|
73590
|
+
const allParts = path.split("/").filter((part) => part !== "");
|
|
73591
|
+
if (allParts.length === 1) {
|
|
73592
|
+
if (!res[""]) {
|
|
73593
|
+
res[""] = [];
|
|
73326
73594
|
}
|
|
73327
|
-
|
|
73328
|
-
})
|
|
73595
|
+
res[""].push(allParts[0]);
|
|
73596
|
+
} else if (allParts.length > 1) {
|
|
73597
|
+
const dir = allParts.slice(0, allParts.length - 1).join("/");
|
|
73598
|
+
const file = allParts.slice(-1)[0];
|
|
73599
|
+
if (!res[dir]) {
|
|
73600
|
+
res[dir] = [];
|
|
73601
|
+
}
|
|
73602
|
+
res[dir].push(file);
|
|
73603
|
+
}
|
|
73329
73604
|
});
|
|
73330
|
-
return
|
|
73605
|
+
return res;
|
|
73331
73606
|
}
|
|
73332
73607
|
function PathTree({
|
|
73608
|
+
selectedPath,
|
|
73333
73609
|
paths,
|
|
73334
73610
|
setSelectedModuleId
|
|
73335
73611
|
}) {
|
|
73336
|
-
const tree =
|
|
73337
|
-
|
|
73338
|
-
|
|
73339
|
-
{
|
|
73340
|
-
|
|
73341
|
-
|
|
73342
|
-
|
|
73343
|
-
|
|
73344
|
-
|
|
73345
|
-
|
|
73346
|
-
}
|
|
73347
|
-
|
|
73348
|
-
|
|
73349
|
-
|
|
73350
|
-
|
|
73351
|
-
|
|
73352
|
-
|
|
73353
|
-
|
|
73354
|
-
|
|
73355
|
-
|
|
73356
|
-
|
|
73357
|
-
|
|
73358
|
-
|
|
73359
|
-
|
|
73360
|
-
|
|
73361
|
-
|
|
73362
|
-
|
|
73363
|
-
|
|
73364
|
-
|
|
73365
|
-
|
|
73366
|
-
|
|
73367
|
-
tree: childTree,
|
|
73368
|
-
moduleId: `${moduleId}/${childName}`,
|
|
73369
|
-
setSelectedModuleId
|
|
73370
|
-
}
|
|
73371
|
-
) }, `${moduleId}/${childName}`))
|
|
73372
|
-
] });
|
|
73612
|
+
const tree = dirPaths(paths);
|
|
73613
|
+
const selectedModuleId = selectedPath && Internal.splitModuleIdAndModulePath(selectedPath)[0];
|
|
73614
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-col w-full py-2 text-xs", children: Object.entries(tree).map(([dir, files]) => {
|
|
73615
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "px-4 py-2", children: [
|
|
73616
|
+
dir && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "font-bold", children: /* @__PURE__ */ jsxRuntime.jsx(Path, { children: dir }) }),
|
|
73617
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
73618
|
+
"div",
|
|
73619
|
+
{
|
|
73620
|
+
className: classNames({
|
|
73621
|
+
"flex flex-col py-2 justify-start items-start": !!dir
|
|
73622
|
+
}),
|
|
73623
|
+
children: files.map((file) => {
|
|
73624
|
+
const moduleId = `/${dir}/${file}`;
|
|
73625
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
73626
|
+
"button",
|
|
73627
|
+
{
|
|
73628
|
+
className: classNames("block px-2 py-1 rounded-full", {
|
|
73629
|
+
"bg-accent text-accent-foreground": selectedModuleId === moduleId
|
|
73630
|
+
}),
|
|
73631
|
+
onClick: () => {
|
|
73632
|
+
setSelectedModuleId(moduleId);
|
|
73633
|
+
},
|
|
73634
|
+
children: file
|
|
73635
|
+
},
|
|
73636
|
+
moduleId
|
|
73637
|
+
);
|
|
73638
|
+
})
|
|
73639
|
+
}
|
|
73640
|
+
)
|
|
73641
|
+
] }, `/${dir}`);
|
|
73642
|
+
}) });
|
|
73373
73643
|
}
|
|
73374
73644
|
const theme = {
|
|
73375
73645
|
tags: {
|
|
@@ -73561,76 +73831,90 @@ function ValOverlay({
|
|
|
73561
73831
|
windowSize,
|
|
73562
73832
|
setWindowSize
|
|
73563
73833
|
},
|
|
73564
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
73565
|
-
|
|
73566
|
-
|
|
73567
|
-
|
|
73568
|
-
|
|
73569
|
-
|
|
73570
|
-
|
|
73571
|
-
|
|
73572
|
-
|
|
73573
|
-
|
|
73574
|
-
|
|
73575
|
-
|
|
73576
|
-
|
|
73577
|
-
|
|
73578
|
-
|
|
73579
|
-
setHoverTarget,
|
|
73580
|
-
setEditMode,
|
|
73581
|
-
setWindowTarget
|
|
73582
|
-
}
|
|
73583
|
-
),
|
|
73584
|
-
editMode === "window" && windowTarget && /* @__PURE__ */ jsxRuntime.jsx(
|
|
73585
|
-
ValWindow,
|
|
73586
|
-
{
|
|
73587
|
-
onClose: () => {
|
|
73588
|
-
setWindowTarget(null);
|
|
73589
|
-
setEditMode("hover");
|
|
73590
|
-
},
|
|
73591
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
73592
|
-
"div",
|
|
73834
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
73835
|
+
"div",
|
|
73836
|
+
{
|
|
73837
|
+
"data-mode": theme2,
|
|
73838
|
+
className: "font-serif antialiased",
|
|
73839
|
+
style: {
|
|
73840
|
+
position: "fixed",
|
|
73841
|
+
top: 0,
|
|
73842
|
+
left: 0,
|
|
73843
|
+
zIndex: 8999
|
|
73844
|
+
// 1 less than the NextJS error z-index: 9000
|
|
73845
|
+
},
|
|
73846
|
+
children: [
|
|
73847
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "fixed -translate-y-1/2 right-4 top-1/2 z-overlay", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
73848
|
+
ValMenu,
|
|
73593
73849
|
{
|
|
73594
|
-
|
|
73595
|
-
|
|
73596
|
-
|
|
73850
|
+
direction: "vertical",
|
|
73851
|
+
api,
|
|
73852
|
+
patches,
|
|
73853
|
+
onCommit: () => {
|
|
73854
|
+
setPatchResetId((patchResetId) => patchResetId + 1);
|
|
73855
|
+
}
|
|
73856
|
+
}
|
|
73857
|
+
) }),
|
|
73858
|
+
session.status === "success" && session.data.enabled && editMode === "hover" && hoverTarget.path && /* @__PURE__ */ jsxRuntime.jsx(
|
|
73859
|
+
ValHover,
|
|
73860
|
+
{
|
|
73861
|
+
hoverTarget,
|
|
73862
|
+
setHoverTarget,
|
|
73863
|
+
setEditMode,
|
|
73864
|
+
setWindowTarget
|
|
73865
|
+
}
|
|
73866
|
+
),
|
|
73867
|
+
editMode === "window" && windowTarget && /* @__PURE__ */ jsxRuntime.jsx(
|
|
73868
|
+
ValWindow,
|
|
73869
|
+
{
|
|
73870
|
+
onClose: () => {
|
|
73871
|
+
setWindowTarget(null);
|
|
73872
|
+
setEditMode("hover");
|
|
73597
73873
|
},
|
|
73598
|
-
children:
|
|
73599
|
-
|
|
73600
|
-
|
|
73601
|
-
|
|
73602
|
-
|
|
73603
|
-
|
|
73604
|
-
] }, path);
|
|
73605
|
-
}
|
|
73606
|
-
const { source, schema } = data.data;
|
|
73607
|
-
if (!source || !schema) {
|
|
73608
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
73609
|
-
"Module: ",
|
|
73610
|
-
path,
|
|
73611
|
-
" is missing source or schema"
|
|
73612
|
-
] });
|
|
73613
|
-
}
|
|
73614
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
73615
|
-
AnyVal,
|
|
73616
|
-
{
|
|
73617
|
-
initOnSubmit,
|
|
73618
|
-
path,
|
|
73619
|
-
schema,
|
|
73620
|
-
source,
|
|
73621
|
-
setSelectedPath: () => {
|
|
73622
|
-
},
|
|
73623
|
-
field: path,
|
|
73624
|
-
top: true
|
|
73874
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
73875
|
+
"div",
|
|
73876
|
+
{
|
|
73877
|
+
className: "p-4",
|
|
73878
|
+
style: {
|
|
73879
|
+
maxHeight: windowSize == null ? void 0 : windowSize.innerHeight
|
|
73625
73880
|
},
|
|
73626
|
-
path
|
|
73627
|
-
|
|
73628
|
-
|
|
73881
|
+
children: Object.entries(formData).map(([path, data]) => {
|
|
73882
|
+
if (data.status !== "success") {
|
|
73883
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
73884
|
+
path,
|
|
73885
|
+
": ",
|
|
73886
|
+
data.status
|
|
73887
|
+
] }, path);
|
|
73888
|
+
}
|
|
73889
|
+
const { source, schema } = data.data;
|
|
73890
|
+
if (!source || !schema) {
|
|
73891
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
73892
|
+
"Module: ",
|
|
73893
|
+
path,
|
|
73894
|
+
" is missing source or schema"
|
|
73895
|
+
] });
|
|
73896
|
+
}
|
|
73897
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
73898
|
+
AnyVal,
|
|
73899
|
+
{
|
|
73900
|
+
initOnSubmit,
|
|
73901
|
+
path,
|
|
73902
|
+
schema,
|
|
73903
|
+
source,
|
|
73904
|
+
setSelectedPath: () => {
|
|
73905
|
+
},
|
|
73906
|
+
top: true
|
|
73907
|
+
},
|
|
73908
|
+
path
|
|
73909
|
+
);
|
|
73910
|
+
})
|
|
73911
|
+
}
|
|
73912
|
+
)
|
|
73629
73913
|
}
|
|
73630
73914
|
)
|
|
73631
|
-
|
|
73632
|
-
|
|
73633
|
-
|
|
73915
|
+
]
|
|
73916
|
+
}
|
|
73917
|
+
)
|
|
73634
73918
|
}
|
|
73635
73919
|
);
|
|
73636
73920
|
}
|
|
@@ -73697,7 +73981,7 @@ function ValHover({
|
|
|
73697
73981
|
"div",
|
|
73698
73982
|
{
|
|
73699
73983
|
id: "val-hover",
|
|
73700
|
-
className: "fixed border-2 cursor-pointer z-overlay-hover border-
|
|
73984
|
+
className: "fixed border-2 cursor-pointer z-overlay-hover border-accent",
|
|
73701
73985
|
style: {
|
|
73702
73986
|
top: rect == null ? void 0 : rect.top,
|
|
73703
73987
|
left: rect == null ? void 0 : rect.left,
|
|
@@ -73718,7 +74002,7 @@ function ValHover({
|
|
|
73718
74002
|
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-end w-full text-xs", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
73719
74003
|
"div",
|
|
73720
74004
|
{
|
|
73721
|
-
className: "flex items-center justify-center px-3 py-1 text-
|
|
74005
|
+
className: "flex items-center justify-center px-3 py-1 text-accent-foreground bg-accent border-l-2 border-b-2 border-accent",
|
|
73722
74006
|
style: {
|
|
73723
74007
|
maxHeight: (rect == null ? void 0 : rect.height) && rect.height - 4,
|
|
73724
74008
|
fontSize: (rect == null ? void 0 : rect.height) && rect.height <= 16 ? rect.height - 4 : void 0
|
|
@@ -73762,9 +74046,19 @@ function useHoverTarget(editMode) {
|
|
|
73762
74046
|
setTargetRect(targetElement.getBoundingClientRect());
|
|
73763
74047
|
}
|
|
73764
74048
|
};
|
|
74049
|
+
const observer = new ResizeObserver(() => {
|
|
74050
|
+
if (targetElement) {
|
|
74051
|
+
setTargetRect(targetElement.getBoundingClientRect());
|
|
74052
|
+
}
|
|
74053
|
+
});
|
|
74054
|
+
const valUIElement = document.getElementById("val-ui");
|
|
74055
|
+
if (targetElement && valUIElement) {
|
|
74056
|
+
observer.observe(valUIElement);
|
|
74057
|
+
}
|
|
73765
74058
|
document.addEventListener("scroll", scrollListener, { passive: true });
|
|
73766
74059
|
return () => {
|
|
73767
74060
|
document.removeEventListener("scroll", scrollListener);
|
|
74061
|
+
observer.disconnect();
|
|
73768
74062
|
};
|
|
73769
74063
|
}, [targetElement]);
|
|
73770
74064
|
return [
|
|
@@ -73811,7 +74105,7 @@ function useInitEditMode() {
|
|
|
73811
74105
|
}, []);
|
|
73812
74106
|
return [editMode, setEditMode];
|
|
73813
74107
|
}
|
|
73814
|
-
const styleCss = "/*\n Need to explicitly set config path, otherwise it may fail to resolve when\n built from outside packages/ui.\n*/\n\n/*\n ! tailwindcss v3.3.5 | MIT License | https://tailwindcss.com\n*/\n\n/*\n1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)\n2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116)\n*/\n\n*,\n::before,\n::after {\n box-sizing: border-box; /* 1 */\n border-width: 0; /* 2 */\n border-style: solid; /* 2 */\n border-color: #e5e7eb; /* 2 */\n}\n\n::before,\n::after {\n --tw-content: '';\n}\n\n/*\n1. Use a consistent sensible line-height in all browsers.\n2. Prevent adjustments of font size after orientation changes in iOS.\n3. Use a more readable tab size.\n4. Use the user's configured `sans` font-family by default.\n5. Use the user's configured `sans` font-feature-settings by default.\n6. Use the user's configured `sans` font-variation-settings by default.\n*/\n\nhtml {\n line-height: 1.5; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n -moz-tab-size: 4; /* 3 */\n -o-tab-size: 4;\n tab-size: 4; /* 3 */\n font-family: 'Roboto', sans-serif; /* 4 */\n font-feature-settings: normal; /* 5 */\n font-variation-settings: normal; /* 6 */\n}\n\n/*\n1. Remove the margin in all browsers.\n2. Inherit line-height from `html` so users can set them as a class directly on the `html` element.\n*/\n\nbody {\n margin: 0; /* 1 */\n line-height: inherit; /* 2 */\n}\n\n/*\n1. Add the correct height in Firefox.\n2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)\n3. Ensure horizontal rules are visible by default.\n*/\n\nhr {\n height: 0; /* 1 */\n color: inherit; /* 2 */\n border-top-width: 1px; /* 3 */\n}\n\n/*\nAdd the correct text decoration in Chrome, Edge, and Safari.\n*/\n\nabbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n}\n\n/*\nRemove the default font size and weight for headings.\n*/\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n font-size: inherit;\n font-weight: inherit;\n}\n\n/*\nReset links to optimize for opt-in styling instead of opt-out.\n*/\n\na {\n color: inherit;\n text-decoration: inherit;\n}\n\n/*\nAdd the correct font weight in Edge and Safari.\n*/\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/*\n1. Use the user's configured `mono` font family by default.\n2. Correct the odd `em` font sizing in all browsers.\n*/\n\ncode,\nkbd,\nsamp,\npre {\n font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/*\nAdd the correct font size in all browsers.\n*/\n\nsmall {\n font-size: 80%;\n}\n\n/*\nPrevent `sub` and `sup` elements from affecting the line height in all browsers.\n*/\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/*\n1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)\n2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)\n3. Remove gaps between table borders by default.\n*/\n\ntable {\n text-indent: 0; /* 1 */\n border-color: inherit; /* 2 */\n border-collapse: collapse; /* 3 */\n}\n\n/*\n1. Change the font styles in all browsers.\n2. Remove the margin in Firefox and Safari.\n3. Remove default padding in all browsers.\n*/\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-feature-settings: inherit; /* 1 */\n font-variation-settings: inherit; /* 1 */\n font-size: 100%; /* 1 */\n font-weight: inherit; /* 1 */\n line-height: inherit; /* 1 */\n color: inherit; /* 1 */\n margin: 0; /* 2 */\n padding: 0; /* 3 */\n}\n\n/*\nRemove the inheritance of text transform in Edge and Firefox.\n*/\n\nbutton,\nselect {\n text-transform: none;\n}\n\n/*\n1. Correct the inability to style clickable types in iOS and Safari.\n2. Remove default button styles.\n*/\n\nbutton,\n[type='button'],\n[type='reset'],\n[type='submit'] {\n -webkit-appearance: button; /* 1 */\n background-color: transparent; /* 2 */\n background-image: none; /* 2 */\n}\n\n/*\nUse the modern Firefox focus style for all focusable elements.\n*/\n\n:-moz-focusring {\n outline: auto;\n}\n\n/*\nRemove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737)\n*/\n\n:-moz-ui-invalid {\n box-shadow: none;\n}\n\n/*\nAdd the correct vertical alignment in Chrome and Firefox.\n*/\n\nprogress {\n vertical-align: baseline;\n}\n\n/*\nCorrect the cursor style of increment and decrement buttons in Safari.\n*/\n\n::-webkit-inner-spin-button,\n::-webkit-outer-spin-button {\n height: auto;\n}\n\n/*\n1. Correct the odd appearance in Chrome and Safari.\n2. Correct the outline style in Safari.\n*/\n\n[type='search'] {\n -webkit-appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/*\nRemove the inner padding in Chrome and Safari on macOS.\n*/\n\n::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/*\n1. Correct the inability to style clickable types in iOS and Safari.\n2. Change font properties to `inherit` in Safari.\n*/\n\n::-webkit-file-upload-button {\n -webkit-appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/*\nAdd the correct display in Chrome and Safari.\n*/\n\nsummary {\n display: list-item;\n}\n\n/*\nRemoves the default spacing and border for appropriate elements.\n*/\n\nblockquote,\ndl,\ndd,\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\nhr,\nfigure,\np,\npre {\n margin: 0;\n}\n\nfieldset {\n margin: 0;\n padding: 0;\n}\n\nlegend {\n padding: 0;\n}\n\nol,\nul,\nmenu {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n/*\nReset default styling for dialogs.\n*/\n\ndialog {\n padding: 0;\n}\n\n/*\nPrevent resizing textareas horizontally by default.\n*/\n\ntextarea {\n resize: vertical;\n}\n\n/*\n1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300)\n2. Set the default placeholder color to the user's configured gray 400 color.\n*/\n\ninput::-moz-placeholder, textarea::-moz-placeholder {\n opacity: 1; /* 1 */\n color: #9ca3af; /* 2 */\n}\n\ninput::placeholder,\ntextarea::placeholder {\n opacity: 1; /* 1 */\n color: #9ca3af; /* 2 */\n}\n\n/*\nSet the default cursor for buttons.\n*/\n\nbutton,\n[role=\"button\"] {\n cursor: pointer;\n}\n\n/*\nMake sure disabled buttons don't get the pointer cursor.\n*/\n\n:disabled {\n cursor: default;\n}\n\n/*\n1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14)\n2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210)\n This can trigger a poorly considered lint error in some tools but is included by design.\n*/\n\nimg,\nsvg,\nvideo,\ncanvas,\naudio,\niframe,\nembed,\nobject {\n display: block; /* 1 */\n vertical-align: middle; /* 2 */\n}\n\n/*\nConstrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14)\n*/\n\nimg,\nvideo {\n max-width: 100%;\n height: auto;\n}\n\n/* Make elements with the HTML hidden attribute stay hidden by default */\n\n[hidden] {\n display: none;\n}\n\n/* :host for use with Shadow DOM, copied from the TailwindCSS prelude */\n\n:host {\n --background: 0 0% 100%;\n --foreground: 222.2 84% 4.9%;\n\n --card: 0 0% 100%;\n --card-foreground: 222.2 84% 4.9%;\n\n --popover: 0 0% 100%;\n --popover-foreground: 222.2 84% 4.9%;\n\n --primary: 222.2 47.4% 11.2%;\n --primary-foreground: 210 40% 98%;\n\n --secondary: 210 40% 96.1%;\n --secondary-foreground: 222.2 47.4% 11.2%;\n\n --muted: 0 0% 57.3%;\n --muted-foreground: 215.4 16.3% 46.9%;\n\n --accent: 159, 60%, 51%, 1;\n --accent-foreground: 222.2 47.4% 11.2%;\n\n --destructive: 0 84.2% 60.2%;\n --destructive-foreground: 210 40% 98%;\n\n --border: 214.3 31.8% 91.4%;\n --input: 214.3 31.8% 91.4%;\n --ring: 222.2 84% 4.9%;\n\n --radius: 0.5rem;\n }\n\n:root {\n --background: 0 0% 100%;\n --foreground: 222.2 84% 4.9%;\n\n --card: 0 0% 100%;\n --card-foreground: 222.2 84% 4.9%;\n\n --popover: 0 0% 100%;\n --popover-foreground: 222.2 84% 4.9%;\n\n --primary: 222.2 47.4% 11.2%;\n --primary-foreground: 210 40% 98%;\n\n --secondary: 210 40% 96.1%;\n --secondary-foreground: 222.2 47.4% 11.2%;\n\n --muted: 0 0% 57.3%;\n --muted-foreground: 215.4 16.3% 46.9%;\n\n --accent: 159, 60%, 51%, 1;\n --accent-foreground: 222.2 47.4% 11.2%;\n\n --destructive: 0 84.2% 60.2%;\n --destructive-foreground: 210 40% 98%;\n\n --border: 214.3 31.8% 91.4%;\n --input: 214.3 31.8% 91.4%;\n --ring: 222.2 84% 4.9%;\n\n --radius: 0.5rem;\n }\n\n/* dark theme */\n\n*[data-mode=\"dark\"] {\n --background: 0 0% 4%;\n --foreground: 210 40% 98%;\n\n --card: 222.2 84% 4.9%;\n --card-foreground: 210 40% 98%;\n\n --popover: 222.2 84% 4.9%;\n --popover-foreground: 210 40% 98%;\n\n --primary: 210 40% 98%;\n --primary-foreground: 222.2 47.4% 11.2%;\n\n --secondary: 217.2 32.6% 17.5%;\n --secondary-foreground: 210 40% 98%;\n\n --muted: 178, 23%, 76%, 1;\n --muted-foreground: 215 20.2% 65.1%;\n\n --accent: 159, 60%, 51%, 1;\n --accent-foreground: 210 40% 98%;\n\n --destructive: 0 62.8% 30.6%;\n --destructive-foreground: 210 40% 98%;\n\n --border: 217.2 32.6% 17.5%;\n --input: 217.2 32.6% 17.5%;\n --ring: 212.7 26.8% 83.9%;\n }\n\n* {\n border-color: hsl(var(--border));\n}\n\nbody {\n background-color: hsl(var(--background));\n color: hsl(var(--foreground));\n}\n\n*, ::before, ::after {\n --tw-border-spacing-x: 0;\n --tw-border-spacing-y: 0;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-rotate: 0;\n --tw-skew-x: 0;\n --tw-skew-y: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-pan-x: ;\n --tw-pan-y: ;\n --tw-pinch-zoom: ;\n --tw-scroll-snap-strictness: proximity;\n --tw-gradient-from-position: ;\n --tw-gradient-via-position: ;\n --tw-gradient-to-position: ;\n --tw-ordinal: ;\n --tw-slashed-zero: ;\n --tw-numeric-figure: ;\n --tw-numeric-spacing: ;\n --tw-numeric-fraction: ;\n --tw-ring-inset: ;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: rgb(59 130 246 / 0.5);\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n --tw-blur: ;\n --tw-brightness: ;\n --tw-contrast: ;\n --tw-grayscale: ;\n --tw-hue-rotate: ;\n --tw-invert: ;\n --tw-saturate: ;\n --tw-sepia: ;\n --tw-drop-shadow: ;\n --tw-backdrop-blur: ;\n --tw-backdrop-brightness: ;\n --tw-backdrop-contrast: ;\n --tw-backdrop-grayscale: ;\n --tw-backdrop-hue-rotate: ;\n --tw-backdrop-invert: ;\n --tw-backdrop-opacity: ;\n --tw-backdrop-saturate: ;\n --tw-backdrop-sepia: ;\n}\n\n::backdrop {\n --tw-border-spacing-x: 0;\n --tw-border-spacing-y: 0;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-rotate: 0;\n --tw-skew-x: 0;\n --tw-skew-y: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-pan-x: ;\n --tw-pan-y: ;\n --tw-pinch-zoom: ;\n --tw-scroll-snap-strictness: proximity;\n --tw-gradient-from-position: ;\n --tw-gradient-via-position: ;\n --tw-gradient-to-position: ;\n --tw-ordinal: ;\n --tw-slashed-zero: ;\n --tw-numeric-figure: ;\n --tw-numeric-spacing: ;\n --tw-numeric-fraction: ;\n --tw-ring-inset: ;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: rgb(59 130 246 / 0.5);\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n --tw-blur: ;\n --tw-brightness: ;\n --tw-contrast: ;\n --tw-grayscale: ;\n --tw-hue-rotate: ;\n --tw-invert: ;\n --tw-saturate: ;\n --tw-sepia: ;\n --tw-drop-shadow: ;\n --tw-backdrop-blur: ;\n --tw-backdrop-brightness: ;\n --tw-backdrop-contrast: ;\n --tw-backdrop-grayscale: ;\n --tw-backdrop-hue-rotate: ;\n --tw-backdrop-invert: ;\n --tw-backdrop-opacity: ;\n --tw-backdrop-saturate: ;\n --tw-backdrop-sepia: ;\n}\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n}\n.pointer-events-none {\n pointer-events: none;\n}\n.invisible {\n visibility: hidden;\n}\n.static {\n position: static;\n}\n.fixed {\n position: fixed;\n}\n.absolute {\n position: absolute;\n}\n.relative {\n position: relative;\n}\n.sticky {\n position: sticky;\n}\n.inset-0 {\n inset: 0px;\n}\n.inset-y-0 {\n top: 0px;\n bottom: 0px;\n}\n.-left-2 {\n left: -0.5rem;\n}\n.-right-\\[10px\\] {\n right: -10px;\n}\n.-top-\\[10px\\] {\n top: -10px;\n}\n.-top-\\[4px\\] {\n top: -4px;\n}\n.bottom-0 {\n bottom: 0px;\n}\n.bottom-4 {\n bottom: 1rem;\n}\n.left-0 {\n left: 0px;\n}\n.left-1 {\n left: 0.25rem;\n}\n.left-1\\/2 {\n left: 50%;\n}\n.left-2 {\n left: 0.5rem;\n}\n.left-\\[50\\%\\] {\n left: 50%;\n}\n.right-0 {\n right: 0px;\n}\n.right-1 {\n right: 0.25rem;\n}\n.right-4 {\n right: 1rem;\n}\n.right-\\[16px\\] {\n right: 16px;\n}\n.top-0 {\n top: 0px;\n}\n.top-4 {\n top: 1rem;\n}\n.top-\\[50\\%\\] {\n top: 50%;\n}\n.z-50 {\n z-index: 50;\n}\n.z-\\[5\\] {\n z-index: 5;\n}\n.z-overlay {\n z-index: 4;\n}\n.-mx-1 {\n margin-left: -0.25rem;\n margin-right: -0.25rem;\n}\n.-my-2 {\n margin-top: -0.5rem;\n margin-bottom: -0.5rem;\n}\n.-my-\\[100px\\] {\n margin-top: -100px;\n margin-bottom: -100px;\n}\n.mx-2 {\n margin-left: 0.5rem;\n margin-right: 0.5rem;\n}\n.my-1 {\n margin-top: 0.25rem;\n margin-bottom: 0.25rem;\n}\n.mb-4 {\n margin-bottom: 1rem;\n}\n.ml-2 {\n margin-left: 0.5rem;\n}\n.ml-4 {\n margin-left: 1rem;\n}\n.ml-\\[20px\\] {\n margin-left: 20px;\n}\n.ml-auto {\n margin-left: auto;\n}\n.mr-2 {\n margin-right: 0.5rem;\n}\n.mt-2 {\n margin-top: 0.5rem;\n}\n.block {\n display: block;\n}\n.inline {\n display: inline;\n}\n.flex {\n display: flex;\n}\n.inline-flex {\n display: inline-flex;\n}\n.table {\n display: table;\n}\n.grid {\n display: grid;\n}\n.hidden {\n display: none;\n}\n.aspect-square {\n aspect-ratio: 1 / 1;\n}\n.h-10 {\n height: 2.5rem;\n}\n.h-11 {\n height: 2.75rem;\n}\n.h-2 {\n height: 0.5rem;\n}\n.h-2\\.5 {\n height: 0.625rem;\n}\n.h-3 {\n height: 0.75rem;\n}\n.h-3\\.5 {\n height: 0.875rem;\n}\n.h-4 {\n height: 1rem;\n}\n.h-7 {\n height: 1.75rem;\n}\n.h-9 {\n height: 2.25rem;\n}\n.h-\\[14px\\] {\n height: 14px;\n}\n.h-\\[18px\\] {\n height: 18px;\n}\n.h-\\[1px\\] {\n height: 1px;\n}\n.h-\\[20px\\] {\n height: 20px;\n}\n.h-\\[22px\\] {\n height: 22px;\n}\n.h-\\[24px\\] {\n height: 24px;\n}\n.h-\\[32px\\] {\n height: 32px;\n}\n.h-\\[50px\\] {\n height: 50px;\n}\n.h-\\[75px\\] {\n height: 75px;\n}\n.h-\\[9px\\] {\n height: 9px;\n}\n.h-\\[var\\(--radix-select-trigger-height\\)\\] {\n height: var(--radix-select-trigger-height);\n}\n.h-full {\n height: 100%;\n}\n.h-px {\n height: 1px;\n}\n.h-screen {\n height: 100vh;\n}\n.max-h-\\[300px\\] {\n max-height: 300px;\n}\n.min-h-\\[200px\\] {\n min-height: 200px;\n}\n.min-h-\\[300px\\] {\n min-height: 300px;\n}\n.min-h-screen {\n min-height: 100vh;\n}\n.w-1\\/3 {\n width: 33.333333%;\n}\n.w-10 {\n width: 2.5rem;\n}\n.w-2 {\n width: 0.5rem;\n}\n.w-2\\.5 {\n width: 0.625rem;\n}\n.w-3 {\n width: 0.75rem;\n}\n.w-3\\.5 {\n width: 0.875rem;\n}\n.w-4 {\n width: 1rem;\n}\n.w-5 {\n width: 1.25rem;\n}\n.w-7 {\n width: 1.75rem;\n}\n.w-72 {\n width: 18rem;\n}\n.w-9 {\n width: 2.25rem;\n}\n.w-\\[14px\\] {\n width: 14px;\n}\n.w-\\[1px\\] {\n width: 1px;\n}\n.w-\\[20px\\] {\n width: 20px;\n}\n.w-\\[24px\\] {\n width: 24px;\n}\n.w-\\[32px\\] {\n width: 32px;\n}\n.w-\\[44px\\] {\n width: 44px;\n}\n.w-\\[9px\\] {\n width: 9px;\n}\n.w-fit {\n width: -moz-fit-content;\n width: fit-content;\n}\n.w-full {\n width: 100%;\n}\n.w-screen {\n width: 100vw;\n}\n.min-w-0 {\n min-width: 0px;\n}\n.min-w-\\[320px\\] {\n min-width: 320px;\n}\n.min-w-\\[500px\\] {\n min-width: 500px;\n}\n.min-w-\\[8rem\\] {\n min-width: 8rem;\n}\n.min-w-\\[var\\(--radix-select-trigger-width\\)\\] {\n min-width: var(--radix-select-trigger-width);\n}\n.max-w-4xl {\n max-width: 56rem;\n}\n.max-w-\\[1000px\\] {\n max-width: 1000px;\n}\n.max-w-\\[10vw\\] {\n max-width: 10vw;\n}\n.max-w-\\[300px\\] {\n max-width: 300px;\n}\n.max-w-\\[90vw\\] {\n max-width: 90vw;\n}\n.max-w-lg {\n max-width: 32rem;\n}\n.flex-1 {\n flex: 1 1 0%;\n}\n.flex-auto {\n flex: 1 1 auto;\n}\n.flex-shrink-0 {\n flex-shrink: 0;\n}\n.shrink-0 {\n flex-shrink: 0;\n}\n.flex-grow {\n flex-grow: 1;\n}\n.border-collapse {\n border-collapse: collapse;\n}\n.-translate-x-1\\/2 {\n --tw-translate-x: -50%;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.translate-x-\\[-50\\%\\] {\n --tw-translate-x: -50%;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.translate-y-\\[-50\\%\\] {\n --tw-translate-y: -50%;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.-rotate-90 {\n --tw-rotate: -90deg;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.rotate-90 {\n --tw-rotate: 90deg;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.rotate-\\[-90deg\\] {\n --tw-rotate: -90deg;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.rotate-\\[90deg\\] {\n --tw-rotate: 90deg;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.transform {\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.cursor-col-resize {\n cursor: col-resize;\n}\n.cursor-crosshair {\n cursor: crosshair;\n}\n.cursor-default {\n cursor: default;\n}\n.cursor-grab {\n cursor: grab;\n}\n.cursor-pointer {\n cursor: pointer;\n}\n.cursor-se-resize {\n cursor: se-resize;\n}\n.touch-none {\n touch-action: none;\n}\n.select-none {\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n}\n.resize-none {\n resize: none;\n}\n.resize {\n resize: both;\n}\n.list-decimal {\n list-style-type: decimal;\n}\n.list-disc {\n list-style-type: disc;\n}\n.grid-cols-\\[min-content_1fr\\] {\n grid-template-columns: min-content 1fr;\n}\n.grid-rows-\\[1fr\\2c _min-content\\] {\n grid-template-rows: 1fr min-content;\n}\n.flex-row {\n flex-direction: row;\n}\n.flex-col {\n flex-direction: column;\n}\n.flex-col-reverse {\n flex-direction: column-reverse;\n}\n.items-start {\n align-items: flex-start;\n}\n.items-center {\n align-items: center;\n}\n.justify-start {\n justify-content: flex-start;\n}\n.justify-end {\n justify-content: flex-end;\n}\n.justify-center {\n justify-content: center;\n}\n.justify-between {\n justify-content: space-between;\n}\n.gap-1 {\n gap: 0.25rem;\n}\n.gap-2 {\n gap: 0.5rem;\n}\n.gap-3 {\n gap: 0.75rem;\n}\n.gap-4 {\n gap: 1rem;\n}\n.gap-5 {\n gap: 1.25rem;\n}\n.gap-\\[0\\.5em\\] {\n gap: 0.5em;\n}\n.gap-\\[36px\\] {\n gap: 36px;\n}\n.gap-x-2 {\n -moz-column-gap: 0.5rem;\n column-gap: 0.5rem;\n}\n.gap-x-3 {\n -moz-column-gap: 0.75rem;\n column-gap: 0.75rem;\n}\n.gap-x-4 {\n -moz-column-gap: 1rem;\n column-gap: 1rem;\n}\n.gap-y-2 {\n row-gap: 0.5rem;\n}\n.gap-y-4 {\n row-gap: 1rem;\n}\n.gap-y-6 {\n row-gap: 1.5rem;\n}\n.gap-y-8 {\n row-gap: 2rem;\n}\n.space-x-1 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-x-reverse: 0;\n margin-right: calc(0.25rem * var(--tw-space-x-reverse));\n margin-left: calc(0.25rem * calc(1 - var(--tw-space-x-reverse)));\n}\n.space-y-1 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(0.25rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(0.25rem * var(--tw-space-y-reverse));\n}\n.space-y-1\\.5 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(0.375rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(0.375rem * var(--tw-space-y-reverse));\n}\n.space-y-2 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(0.5rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(0.5rem * var(--tw-space-y-reverse));\n}\n.space-y-4 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(1rem * var(--tw-space-y-reverse));\n}\n.overflow-auto {\n overflow: auto;\n}\n.overflow-hidden {\n overflow: hidden;\n}\n.overflow-clip {\n overflow: clip;\n}\n.overflow-scroll {\n overflow: scroll;\n}\n.overflow-y-auto {\n overflow-y: auto;\n}\n.overflow-x-hidden {\n overflow-x: hidden;\n}\n.overflow-y-scroll {\n overflow-y: scroll;\n}\n.truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.whitespace-nowrap {\n white-space: nowrap;\n}\n.rounded {\n border-radius: 0.25rem;\n}\n.rounded-\\[inherit\\] {\n border-radius: inherit;\n}\n.rounded-full {\n border-radius: 9999px;\n}\n.rounded-lg {\n border-radius: var(--radius);\n}\n.rounded-md {\n border-radius: calc(var(--radius) - 2px);\n}\n.rounded-sm {\n border-radius: calc(var(--radius) - 4px);\n}\n.border {\n border-width: 1px;\n}\n.border-2 {\n border-width: 2px;\n}\n.border-\\[2px\\] {\n border-width: 2px;\n}\n.border-y {\n border-top-width: 1px;\n border-bottom-width: 1px;\n}\n.border-b {\n border-bottom-width: 1px;\n}\n.border-l {\n border-left-width: 1px;\n}\n.border-l-2 {\n border-left-width: 2px;\n}\n.border-r {\n border-right-width: 1px;\n}\n.border-t {\n border-top-width: 1px;\n}\n.border-accent {\n border-color: hsl(var(--accent));\n}\n.border-border {\n border-color: hsl(var(--border));\n}\n.border-card {\n border-color: hsl(var(--card));\n}\n.border-gray-400 {\n --tw-border-opacity: 1;\n border-color: rgb(156 163 175 / var(--tw-border-opacity));\n}\n.border-input {\n border-color: hsl(var(--input));\n}\n.border-primary {\n border-color: hsl(var(--primary));\n}\n.border-transparent {\n border-color: transparent;\n}\n.border-l-transparent {\n border-left-color: transparent;\n}\n.border-t-transparent {\n border-top-color: transparent;\n}\n.bg-accent {\n background-color: hsl(var(--accent));\n}\n.bg-background {\n background-color: hsl(var(--background));\n}\n.bg-background\\/80 {\n background-color: hsl(var(--background) / 0.8);\n}\n.bg-border {\n background-color: hsl(var(--border));\n}\n.bg-card {\n background-color: hsl(var(--card));\n}\n.bg-card-foreground {\n background-color: hsl(var(--card-foreground));\n}\n.bg-destructive {\n background-color: hsl(var(--destructive));\n}\n.bg-gray-300 {\n --tw-bg-opacity: 1;\n background-color: rgb(209 213 219 / var(--tw-bg-opacity));\n}\n.bg-gray-500 {\n --tw-bg-opacity: 1;\n background-color: rgb(107 114 128 / var(--tw-bg-opacity));\n}\n.bg-muted {\n background-color: hsl(var(--muted));\n}\n.bg-popover {\n background-color: hsl(var(--popover));\n}\n.bg-primary {\n background-color: hsl(var(--primary));\n}\n.bg-red-500 {\n --tw-bg-opacity: 1;\n background-color: rgb(239 68 68 / var(--tw-bg-opacity));\n}\n.bg-secondary {\n background-color: hsl(var(--secondary));\n}\n.bg-transparent {\n background-color: transparent;\n}\n.bg-white {\n --tw-bg-opacity: 1;\n background-color: rgb(255 255 255 / var(--tw-bg-opacity));\n}\n.bg-gradient-to-b {\n background-image: linear-gradient(to bottom, var(--tw-gradient-stops));\n}\n.bg-gradient-to-br {\n background-image: linear-gradient(to bottom right, var(--tw-gradient-stops));\n}\n.from-background\\/90 {\n --tw-gradient-from: hsl(var(--background) / 0.9) var(--tw-gradient-from-position);\n --tw-gradient-to: hsl(var(--background) / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\n}\n.from-transparent {\n --tw-gradient-from: transparent var(--tw-gradient-from-position);\n --tw-gradient-to: rgb(0 0 0 / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\n}\n.from-40\\% {\n --tw-gradient-from-position: 40%;\n}\n.to-background {\n --tw-gradient-to: hsl(var(--background)) var(--tw-gradient-to-position);\n}\n.fill-current {\n fill: currentColor;\n}\n.fill-white {\n fill: #fff;\n}\n.stroke-\\[2px\\] {\n stroke-width: 2px;\n}\n.stroke-\\[3px\\] {\n stroke-width: 3px;\n}\n.object-contain {\n -o-object-fit: contain;\n object-fit: contain;\n}\n.p-0 {\n padding: 0px;\n}\n.p-1 {\n padding: 0.25rem;\n}\n.p-10 {\n padding: 2.5rem;\n}\n.p-2 {\n padding: 0.5rem;\n}\n.p-3 {\n padding: 0.75rem;\n}\n.p-4 {\n padding: 1rem;\n}\n.p-6 {\n padding: 1.5rem;\n}\n.p-\\[1px\\] {\n padding: 1px;\n}\n.px-1 {\n padding-left: 0.25rem;\n padding-right: 0.25rem;\n}\n.px-2 {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n}\n.px-2\\.5 {\n padding-left: 0.625rem;\n padding-right: 0.625rem;\n}\n.px-3 {\n padding-left: 0.75rem;\n padding-right: 0.75rem;\n}\n.px-4 {\n padding-left: 1rem;\n padding-right: 1rem;\n}\n.px-5 {\n padding-left: 1.25rem;\n padding-right: 1.25rem;\n}\n.px-8 {\n padding-left: 2rem;\n padding-right: 2rem;\n}\n.px-\\[24px\\] {\n padding-left: 24px;\n padding-right: 24px;\n}\n.py-1 {\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n}\n.py-1\\.5 {\n padding-top: 0.375rem;\n padding-bottom: 0.375rem;\n}\n.py-2 {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n}\n.py-3 {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n}\n.py-4 {\n padding-top: 1rem;\n padding-bottom: 1rem;\n}\n.py-6 {\n padding-top: 1.5rem;\n padding-bottom: 1.5rem;\n}\n.py-7 {\n padding-top: 1.75rem;\n padding-bottom: 1.75rem;\n}\n.py-\\[2px\\] {\n padding-top: 2px;\n padding-bottom: 2px;\n}\n.pb-0 {\n padding-bottom: 0px;\n}\n.pb-20 {\n padding-bottom: 5rem;\n}\n.pb-4 {\n padding-bottom: 1rem;\n}\n.pl-6 {\n padding-left: 1.5rem;\n}\n.pl-8 {\n padding-left: 2rem;\n}\n.pr-2 {\n padding-right: 0.5rem;\n}\n.pt-0 {\n padding-top: 0px;\n}\n.pt-1 {\n padding-top: 0.25rem;\n}\n.pt-2 {\n padding-top: 0.5rem;\n}\n.pt-4 {\n padding-top: 1rem;\n}\n.text-left {\n text-align: left;\n}\n.text-center {\n text-align: center;\n}\n.text-start {\n text-align: start;\n}\n.font-sans {\n font-family: 'Roboto', sans-serif;\n}\n.font-serif {\n font-family: 'Space Mono', monospace;\n}\n.text-2xl {\n font-size: 1.5rem;\n line-height: 2rem;\n}\n.text-3xl {\n font-size: 1.875rem;\n line-height: 2.25rem;\n}\n.text-4xl {\n font-size: 2.25rem;\n line-height: 2.5rem;\n}\n.text-\\[0\\.8rem\\] {\n font-size: 0.8rem;\n}\n.text-\\[12px\\] {\n font-size: 12px;\n}\n.text-lg {\n font-size: 1.125rem;\n line-height: 1.75rem;\n}\n.text-sm {\n font-size: 0.875rem;\n line-height: 1.25rem;\n}\n.text-xl {\n font-size: 1.25rem;\n line-height: 1.75rem;\n}\n.text-xs {\n font-size: 0.75rem;\n line-height: 1rem;\n}\n.font-\\[12px\\] {\n font-weight: 12px;\n}\n.font-\\[400\\] {\n font-weight: 400;\n}\n.font-\\[500\\] {\n font-weight: 500;\n}\n.font-\\[550\\] {\n font-weight: 550;\n}\n.font-bold {\n font-weight: 700;\n}\n.font-extrabold {\n font-weight: 800;\n}\n.font-medium {\n font-weight: 500;\n}\n.font-normal {\n font-weight: 400;\n}\n.font-semibold {\n font-weight: 600;\n}\n.uppercase {\n text-transform: uppercase;\n}\n.italic {\n font-style: italic;\n}\n.leading-4 {\n line-height: 1rem;\n}\n.leading-none {\n line-height: 1;\n}\n.tracking-\\[0\\.04em\\] {\n letter-spacing: 0.04em;\n}\n.tracking-tight {\n letter-spacing: -0.025em;\n}\n.tracking-wider {\n letter-spacing: 0.05em;\n}\n.tracking-widest {\n letter-spacing: 0.1em;\n}\n.text-accent {\n color: hsl(var(--accent));\n}\n.text-accent-foreground {\n color: hsl(var(--accent-foreground));\n}\n.text-background {\n color: hsl(var(--background));\n}\n.text-card-foreground {\n color: hsl(var(--card-foreground));\n}\n.text-current {\n color: currentColor;\n}\n.text-destructive {\n color: hsl(var(--destructive));\n}\n.text-destructive-foreground {\n color: hsl(var(--destructive-foreground));\n}\n.text-foreground {\n color: hsl(var(--foreground));\n}\n.text-muted {\n color: hsl(var(--muted));\n}\n.text-muted-foreground {\n color: hsl(var(--muted-foreground));\n}\n.text-popover-foreground {\n color: hsl(var(--popover-foreground));\n}\n.text-primary {\n color: hsl(var(--primary));\n}\n.text-primary-foreground {\n color: hsl(var(--primary-foreground));\n}\n.text-secondary-foreground {\n color: hsl(var(--secondary-foreground));\n}\n.text-white {\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity));\n}\n.underline {\n text-decoration-line: underline;\n}\n.line-through {\n text-decoration-line: line-through;\n}\n.underline-offset-4 {\n text-underline-offset: 4px;\n}\n.antialiased {\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n.opacity-0 {\n opacity: 0;\n}\n.opacity-100 {\n opacity: 1;\n}\n.opacity-50 {\n opacity: 0.5;\n}\n.opacity-60 {\n opacity: 0.6;\n}\n.opacity-70 {\n opacity: 0.7;\n}\n.opacity-75 {\n opacity: 0.75;\n}\n.shadow {\n --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);\n --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.shadow-lg {\n --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);\n --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.shadow-md {\n --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);\n --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.shadow-sm {\n --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.outline-none {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n.outline {\n outline-style: solid;\n}\n.ring-0 {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n.ring-offset-background {\n --tw-ring-offset-color: hsl(var(--background));\n}\n.drop-shadow-2xl {\n --tw-drop-shadow: drop-shadow(0 25px 25px rgb(0 0 0 / 0.15));\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n.drop-shadow-\\[0px_0px_12px_rgba\\(56\\2c 205\\2c 152\\2c 0\\.60\\)\\] {\n --tw-drop-shadow: drop-shadow(0px 0px 12px rgba(56,205,152,0.60));\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n.filter {\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n.backdrop-blur-lg {\n --tw-backdrop-blur: blur(16px);\n -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n}\n.backdrop-blur-sm {\n --tw-backdrop-blur: blur(4px);\n -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n}\n.transition-all {\n transition-property: all;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.transition-colors {\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.transition-opacity {\n transition-property: opacity;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.transition-transform {\n transition-property: transform;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.duration-150 {\n transition-duration: 150ms;\n}\n.duration-200 {\n transition-duration: 200ms;\n}\n.ease-in-out {\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n}\n@keyframes enter {\n\n from {\n opacity: var(--tw-enter-opacity, 1);\n transform: translate3d(var(--tw-enter-translate-x, 0), var(--tw-enter-translate-y, 0), 0) scale3d(var(--tw-enter-scale, 1), var(--tw-enter-scale, 1), var(--tw-enter-scale, 1)) rotate(var(--tw-enter-rotate, 0));\n }\n}\n@keyframes exit {\n\n to {\n opacity: var(--tw-exit-opacity, 1);\n transform: translate3d(var(--tw-exit-translate-x, 0), var(--tw-exit-translate-y, 0), 0) scale3d(var(--tw-exit-scale, 1), var(--tw-exit-scale, 1), var(--tw-exit-scale, 1)) rotate(var(--tw-exit-rotate, 0));\n }\n}\n.animate-in {\n animation-name: enter;\n animation-duration: 150ms;\n --tw-enter-opacity: initial;\n --tw-enter-scale: initial;\n --tw-enter-rotate: initial;\n --tw-enter-translate-x: initial;\n --tw-enter-translate-y: initial;\n}\n.fade-in-0 {\n --tw-enter-opacity: 0;\n}\n.zoom-in-95 {\n --tw-enter-scale: .95;\n}\n.duration-150 {\n animation-duration: 150ms;\n}\n.duration-200 {\n animation-duration: 200ms;\n}\n.ease-in-out {\n animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n}\n.file\\:border-0::file-selector-button {\n border-width: 0px;\n}\n.file\\:bg-transparent::file-selector-button {\n background-color: transparent;\n}\n.file\\:text-sm::file-selector-button {\n font-size: 0.875rem;\n line-height: 1.25rem;\n}\n.file\\:font-medium::file-selector-button {\n font-weight: 500;\n}\n.placeholder\\:text-muted-foreground::-moz-placeholder {\n color: hsl(var(--muted-foreground));\n}\n.placeholder\\:text-muted-foreground::placeholder {\n color: hsl(var(--muted-foreground));\n}\n.focus-within\\:relative:focus-within {\n position: relative;\n}\n.hover\\:w-\\[2px\\]:hover {\n width: 2px;\n}\n.hover\\:w-\\[3px\\]:hover {\n width: 3px;\n}\n.hover\\:cursor-pointer:hover {\n cursor: pointer;\n}\n.hover\\:rounded-lg:hover {\n border-radius: var(--radius);\n}\n.hover\\:bg-accent:hover {\n background-color: hsl(var(--accent));\n}\n.hover\\:bg-border:hover {\n background-color: hsl(var(--border));\n}\n.hover\\:bg-destructive\\/90:hover {\n background-color: hsl(var(--destructive) / 0.9);\n}\n.hover\\:bg-muted:hover {\n background-color: hsl(var(--muted));\n}\n.hover\\:bg-primary:hover {\n background-color: hsl(var(--primary));\n}\n.hover\\:bg-primary\\/90:hover {\n background-color: hsl(var(--primary) / 0.9);\n}\n.hover\\:bg-red-700:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(185 28 28 / var(--tw-bg-opacity));\n}\n.hover\\:bg-secondary\\/80:hover {\n background-color: hsl(var(--secondary) / 0.8);\n}\n.hover\\:text-accent-foreground:hover {\n color: hsl(var(--accent-foreground));\n}\n.hover\\:text-muted-foreground:hover {\n color: hsl(var(--muted-foreground));\n}\n.hover\\:text-primary-foreground:hover {\n color: hsl(var(--primary-foreground));\n}\n.hover\\:text-white:hover {\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity));\n}\n.hover\\:underline:hover {\n text-decoration-line: underline;\n}\n.hover\\:opacity-100:hover {\n opacity: 1;\n}\n.focus\\:bg-accent:focus {\n background-color: hsl(var(--accent));\n}\n.focus\\:bg-primary:focus {\n background-color: hsl(var(--primary));\n}\n.focus\\:text-accent-foreground:focus {\n color: hsl(var(--accent-foreground));\n}\n.focus\\:text-primary-foreground:focus {\n color: hsl(var(--primary-foreground));\n}\n.focus\\:outline-none:focus {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n.focus\\:ring-2:focus {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n.focus\\:ring-ring:focus {\n --tw-ring-color: hsl(var(--ring));\n}\n.focus\\:ring-offset-2:focus {\n --tw-ring-offset-width: 2px;\n}\n.focus-visible\\:outline-none:focus-visible {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n.focus-visible\\:outline-accent:focus-visible {\n outline-color: hsl(var(--accent));\n}\n.focus-visible\\:ring-2:focus-visible {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n.focus-visible\\:ring-ring:focus-visible {\n --tw-ring-color: hsl(var(--ring));\n}\n.focus-visible\\:ring-offset-2:focus-visible {\n --tw-ring-offset-width: 2px;\n}\n.focus-visible\\:ring-offset-background:focus-visible {\n --tw-ring-offset-color: hsl(var(--background));\n}\n.disabled\\:pointer-events-none:disabled {\n pointer-events: none;\n}\n.disabled\\:cursor-not-allowed:disabled {\n cursor: not-allowed;\n}\n.disabled\\:text-background:disabled {\n color: hsl(var(--background));\n}\n.disabled\\:opacity-50:disabled {\n opacity: 0.5;\n}\n.peer:disabled ~ .peer-disabled\\:cursor-not-allowed {\n cursor: not-allowed;\n}\n.peer:disabled ~ .peer-disabled\\:opacity-70 {\n opacity: 0.7;\n}\n.aria-selected\\:bg-accent[aria-selected=\"true\"] {\n background-color: hsl(var(--accent));\n}\n.aria-selected\\:text-accent-foreground[aria-selected=\"true\"] {\n color: hsl(var(--accent-foreground));\n}\n.aria-selected\\:opacity-100[aria-selected=\"true\"] {\n opacity: 1;\n}\n.data-\\[disabled\\]\\:pointer-events-none[data-disabled] {\n pointer-events: none;\n}\n.data-\\[side\\=bottom\\]\\:translate-y-1[data-side=bottom] {\n --tw-translate-y: 0.25rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.data-\\[side\\=left\\]\\:-translate-x-1[data-side=left] {\n --tw-translate-x: -0.25rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.data-\\[side\\=right\\]\\:translate-x-1[data-side=right] {\n --tw-translate-x: 0.25rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.data-\\[side\\=top\\]\\:-translate-y-1[data-side=top] {\n --tw-translate-y: -0.25rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.data-\\[state\\=checked\\]\\:translate-x-5[data-state=checked] {\n --tw-translate-x: 1.25rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.data-\\[state\\=unchecked\\]\\:translate-x-0[data-state=unchecked] {\n --tw-translate-x: 0px;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n@keyframes accordion-up {\n\n from {\n height: var(--radix-accordion-content-height);\n }\n\n to {\n height: 0;\n }\n}\n.data-\\[state\\=closed\\]\\:animate-accordion-up[data-state=closed] {\n animation: accordion-up 0.2s ease-out;\n}\n@keyframes accordion-down {\n\n from {\n height: 0;\n }\n\n to {\n height: var(--radix-accordion-content-height);\n }\n}\n.data-\\[state\\=open\\]\\:animate-accordion-down[data-state=open] {\n animation: accordion-down 0.2s ease-out;\n}\n.data-\\[state\\=active\\]\\:bg-background[data-state=active] {\n background-color: hsl(var(--background));\n}\n.data-\\[state\\=checked\\]\\:bg-accent[data-state=checked] {\n background-color: hsl(var(--accent));\n}\n.data-\\[state\\=checked\\]\\:bg-primary[data-state=checked] {\n background-color: hsl(var(--primary));\n}\n.data-\\[state\\=on\\]\\:bg-accent[data-state=on] {\n background-color: hsl(var(--accent));\n}\n.data-\\[state\\=open\\]\\:bg-accent[data-state=open] {\n background-color: hsl(var(--accent));\n}\n.data-\\[state\\=unchecked\\]\\:bg-primary[data-state=unchecked] {\n background-color: hsl(var(--primary));\n}\n.data-\\[state\\=active\\]\\:text-foreground[data-state=active] {\n color: hsl(var(--foreground));\n}\n.data-\\[state\\=checked\\]\\:text-primary-foreground[data-state=checked] {\n color: hsl(var(--primary-foreground));\n}\n.data-\\[state\\=on\\]\\:text-accent-foreground[data-state=on] {\n color: hsl(var(--accent-foreground));\n}\n.data-\\[state\\=open\\]\\:text-muted-foreground[data-state=open] {\n color: hsl(var(--muted-foreground));\n}\n.data-\\[disabled\\]\\:opacity-50[data-disabled] {\n opacity: 0.5;\n}\n.data-\\[state\\=active\\]\\:shadow-sm[data-state=active] {\n --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.data-\\[state\\=open\\]\\:animate-in[data-state=open] {\n animation-name: enter;\n animation-duration: 150ms;\n --tw-enter-opacity: initial;\n --tw-enter-scale: initial;\n --tw-enter-rotate: initial;\n --tw-enter-translate-x: initial;\n --tw-enter-translate-y: initial;\n}\n.data-\\[state\\=closed\\]\\:animate-out[data-state=closed] {\n animation-name: exit;\n animation-duration: 150ms;\n --tw-exit-opacity: initial;\n --tw-exit-scale: initial;\n --tw-exit-rotate: initial;\n --tw-exit-translate-x: initial;\n --tw-exit-translate-y: initial;\n}\n.data-\\[state\\=closed\\]\\:fade-out-0[data-state=closed] {\n --tw-exit-opacity: 0;\n}\n.data-\\[state\\=open\\]\\:fade-in-0[data-state=open] {\n --tw-enter-opacity: 0;\n}\n.data-\\[state\\=closed\\]\\:zoom-out-95[data-state=closed] {\n --tw-exit-scale: .95;\n}\n.data-\\[state\\=open\\]\\:zoom-in-95[data-state=open] {\n --tw-enter-scale: .95;\n}\n.data-\\[side\\=bottom\\]\\:slide-in-from-top-2[data-side=bottom] {\n --tw-enter-translate-y: -0.5rem;\n}\n.data-\\[side\\=left\\]\\:slide-in-from-right-2[data-side=left] {\n --tw-enter-translate-x: 0.5rem;\n}\n.data-\\[side\\=right\\]\\:slide-in-from-left-2[data-side=right] {\n --tw-enter-translate-x: -0.5rem;\n}\n.data-\\[side\\=top\\]\\:slide-in-from-bottom-2[data-side=top] {\n --tw-enter-translate-y: 0.5rem;\n}\n.data-\\[state\\=closed\\]\\:slide-out-to-left-1\\/2[data-state=closed] {\n --tw-exit-translate-x: -50%;\n}\n.data-\\[state\\=closed\\]\\:slide-out-to-top-\\[48\\%\\][data-state=closed] {\n --tw-exit-translate-y: -48%;\n}\n.data-\\[state\\=open\\]\\:slide-in-from-left-1\\/2[data-state=open] {\n --tw-enter-translate-x: -50%;\n}\n.data-\\[state\\=open\\]\\:slide-in-from-top-\\[48\\%\\][data-state=open] {\n --tw-enter-translate-y: -48%;\n}\n:is([data-mode=\"dark\"] .dark\\:border-white) {\n --tw-border-opacity: 1;\n border-color: rgb(255 255 255 / var(--tw-border-opacity));\n}\n@media (min-width: 640px) {\n\n .sm\\:mt-0 {\n margin-top: 0px;\n }\n\n .sm\\:block {\n display: block;\n }\n\n .sm\\:flex-row {\n flex-direction: row;\n }\n\n .sm\\:justify-end {\n justify-content: flex-end;\n }\n\n .sm\\:space-x-2 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-x-reverse: 0;\n margin-right: calc(0.5rem * var(--tw-space-x-reverse));\n margin-left: calc(0.5rem * calc(1 - var(--tw-space-x-reverse)));\n }\n\n .sm\\:space-x-4 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-x-reverse: 0;\n margin-right: calc(1rem * var(--tw-space-x-reverse));\n margin-left: calc(1rem * calc(1 - var(--tw-space-x-reverse)));\n }\n\n .sm\\:space-y-0 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(0px * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(0px * var(--tw-space-y-reverse));\n }\n\n .sm\\:rounded-lg {\n border-radius: var(--radius);\n }\n\n .sm\\:p-0 {\n padding: 0px;\n }\n\n .sm\\:text-left {\n text-align: left;\n }\n}\n@media (min-width: 768px) {\n\n .md\\:w-full {\n width: 100%;\n }\n}\n.\\[\\&\\:has\\(\\[aria-selected\\]\\)\\]\\:bg-accent:has([aria-selected]) {\n background-color: hsl(var(--accent));\n}\n.first\\:\\[\\&\\:has\\(\\[aria-selected\\]\\)\\]\\:rounded-l-md:has([aria-selected]):first-child {\n border-top-left-radius: calc(var(--radius) - 2px);\n border-bottom-left-radius: calc(var(--radius) - 2px);\n}\n.last\\:\\[\\&\\:has\\(\\[aria-selected\\]\\)\\]\\:rounded-r-md:has([aria-selected]):last-child {\n border-top-right-radius: calc(var(--radius) - 2px);\n border-bottom-right-radius: calc(var(--radius) - 2px);\n}\n.\\[\\&\\[data-state\\=open\\]\\>svg\\]\\:rotate-180[data-state=open]>svg {\n --tw-rotate: 180deg;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.\\[\\&_\\[cmdk-group-heading\\]\\]\\:px-2 [cmdk-group-heading] {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n}\n.\\[\\&_\\[cmdk-group-heading\\]\\]\\:py-1\\.5 [cmdk-group-heading] {\n padding-top: 0.375rem;\n padding-bottom: 0.375rem;\n}\n.\\[\\&_\\[cmdk-group-heading\\]\\]\\:text-xs [cmdk-group-heading] {\n font-size: 0.75rem;\n line-height: 1rem;\n}\n.\\[\\&_\\[cmdk-group-heading\\]\\]\\:font-medium [cmdk-group-heading] {\n font-weight: 500;\n}\n.\\[\\&_\\[cmdk-group-heading\\]\\]\\:text-muted-foreground [cmdk-group-heading] {\n color: hsl(var(--muted-foreground));\n}\n.\\[\\&_\\[cmdk-group\\]\\:not\\(\\[hidden\\]\\)_\\~\\[cmdk-group\\]\\]\\:pt-0 [cmdk-group]:not([hidden]) ~[cmdk-group] {\n padding-top: 0px;\n}\n.\\[\\&_\\[cmdk-group\\]\\]\\:px-2 [cmdk-group] {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n}\n.\\[\\&_\\[cmdk-input-wrapper\\]_svg\\]\\:h-5 [cmdk-input-wrapper] svg {\n height: 1.25rem;\n}\n.\\[\\&_\\[cmdk-input-wrapper\\]_svg\\]\\:w-5 [cmdk-input-wrapper] svg {\n width: 1.25rem;\n}\n.\\[\\&_\\[cmdk-input\\]\\]\\:h-12 [cmdk-input] {\n height: 3rem;\n}\n.\\[\\&_\\[cmdk-item\\]\\]\\:px-2 [cmdk-item] {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n}\n.\\[\\&_\\[cmdk-item\\]\\]\\:py-3 [cmdk-item] {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n}\n.\\[\\&_\\[cmdk-item\\]_svg\\]\\:h-5 [cmdk-item] svg {\n height: 1.25rem;\n}\n.\\[\\&_\\[cmdk-item\\]_svg\\]\\:w-5 [cmdk-item] svg {\n width: 1.25rem;\n}\n";
|
|
74108
|
+
const styleCss = "/*\n Need to explicitly set config path, otherwise it may fail to resolve when\n built from outside packages/ui.\n*/\n\n/*\n ! tailwindcss v3.3.5 | MIT License | https://tailwindcss.com\n*/\n\n/*\n1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)\n2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116)\n*/\n\n*,\n::before,\n::after {\n box-sizing: border-box; /* 1 */\n border-width: 0; /* 2 */\n border-style: solid; /* 2 */\n border-color: #e5e7eb; /* 2 */\n}\n\n::before,\n::after {\n --tw-content: '';\n}\n\n/*\n1. Use a consistent sensible line-height in all browsers.\n2. Prevent adjustments of font size after orientation changes in iOS.\n3. Use a more readable tab size.\n4. Use the user's configured `sans` font-family by default.\n5. Use the user's configured `sans` font-feature-settings by default.\n6. Use the user's configured `sans` font-variation-settings by default.\n*/\n\nhtml {\n line-height: 1.5; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n -moz-tab-size: 4; /* 3 */\n -o-tab-size: 4;\n tab-size: 4; /* 3 */\n font-family: 'Roboto', sans-serif; /* 4 */\n font-feature-settings: normal; /* 5 */\n font-variation-settings: normal; /* 6 */\n}\n\n/*\n1. Remove the margin in all browsers.\n2. Inherit line-height from `html` so users can set them as a class directly on the `html` element.\n*/\n\nbody {\n margin: 0; /* 1 */\n line-height: inherit; /* 2 */\n}\n\n/*\n1. Add the correct height in Firefox.\n2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)\n3. Ensure horizontal rules are visible by default.\n*/\n\nhr {\n height: 0; /* 1 */\n color: inherit; /* 2 */\n border-top-width: 1px; /* 3 */\n}\n\n/*\nAdd the correct text decoration in Chrome, Edge, and Safari.\n*/\n\nabbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n}\n\n/*\nRemove the default font size and weight for headings.\n*/\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n font-size: inherit;\n font-weight: inherit;\n}\n\n/*\nReset links to optimize for opt-in styling instead of opt-out.\n*/\n\na {\n color: inherit;\n text-decoration: inherit;\n}\n\n/*\nAdd the correct font weight in Edge and Safari.\n*/\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/*\n1. Use the user's configured `mono` font family by default.\n2. Correct the odd `em` font sizing in all browsers.\n*/\n\ncode,\nkbd,\nsamp,\npre {\n font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/*\nAdd the correct font size in all browsers.\n*/\n\nsmall {\n font-size: 80%;\n}\n\n/*\nPrevent `sub` and `sup` elements from affecting the line height in all browsers.\n*/\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/*\n1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)\n2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)\n3. Remove gaps between table borders by default.\n*/\n\ntable {\n text-indent: 0; /* 1 */\n border-color: inherit; /* 2 */\n border-collapse: collapse; /* 3 */\n}\n\n/*\n1. Change the font styles in all browsers.\n2. Remove the margin in Firefox and Safari.\n3. Remove default padding in all browsers.\n*/\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-feature-settings: inherit; /* 1 */\n font-variation-settings: inherit; /* 1 */\n font-size: 100%; /* 1 */\n font-weight: inherit; /* 1 */\n line-height: inherit; /* 1 */\n color: inherit; /* 1 */\n margin: 0; /* 2 */\n padding: 0; /* 3 */\n}\n\n/*\nRemove the inheritance of text transform in Edge and Firefox.\n*/\n\nbutton,\nselect {\n text-transform: none;\n}\n\n/*\n1. Correct the inability to style clickable types in iOS and Safari.\n2. Remove default button styles.\n*/\n\nbutton,\n[type='button'],\n[type='reset'],\n[type='submit'] {\n -webkit-appearance: button; /* 1 */\n background-color: transparent; /* 2 */\n background-image: none; /* 2 */\n}\n\n/*\nUse the modern Firefox focus style for all focusable elements.\n*/\n\n:-moz-focusring {\n outline: auto;\n}\n\n/*\nRemove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737)\n*/\n\n:-moz-ui-invalid {\n box-shadow: none;\n}\n\n/*\nAdd the correct vertical alignment in Chrome and Firefox.\n*/\n\nprogress {\n vertical-align: baseline;\n}\n\n/*\nCorrect the cursor style of increment and decrement buttons in Safari.\n*/\n\n::-webkit-inner-spin-button,\n::-webkit-outer-spin-button {\n height: auto;\n}\n\n/*\n1. Correct the odd appearance in Chrome and Safari.\n2. Correct the outline style in Safari.\n*/\n\n[type='search'] {\n -webkit-appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/*\nRemove the inner padding in Chrome and Safari on macOS.\n*/\n\n::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/*\n1. Correct the inability to style clickable types in iOS and Safari.\n2. Change font properties to `inherit` in Safari.\n*/\n\n::-webkit-file-upload-button {\n -webkit-appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/*\nAdd the correct display in Chrome and Safari.\n*/\n\nsummary {\n display: list-item;\n}\n\n/*\nRemoves the default spacing and border for appropriate elements.\n*/\n\nblockquote,\ndl,\ndd,\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\nhr,\nfigure,\np,\npre {\n margin: 0;\n}\n\nfieldset {\n margin: 0;\n padding: 0;\n}\n\nlegend {\n padding: 0;\n}\n\nol,\nul,\nmenu {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n/*\nReset default styling for dialogs.\n*/\n\ndialog {\n padding: 0;\n}\n\n/*\nPrevent resizing textareas horizontally by default.\n*/\n\ntextarea {\n resize: vertical;\n}\n\n/*\n1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300)\n2. Set the default placeholder color to the user's configured gray 400 color.\n*/\n\ninput::-moz-placeholder, textarea::-moz-placeholder {\n opacity: 1; /* 1 */\n color: #9ca3af; /* 2 */\n}\n\ninput::placeholder,\ntextarea::placeholder {\n opacity: 1; /* 1 */\n color: #9ca3af; /* 2 */\n}\n\n/*\nSet the default cursor for buttons.\n*/\n\nbutton,\n[role=\"button\"] {\n cursor: pointer;\n}\n\n/*\nMake sure disabled buttons don't get the pointer cursor.\n*/\n\n:disabled {\n cursor: default;\n}\n\n/*\n1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14)\n2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210)\n This can trigger a poorly considered lint error in some tools but is included by design.\n*/\n\nimg,\nsvg,\nvideo,\ncanvas,\naudio,\niframe,\nembed,\nobject {\n display: block; /* 1 */\n vertical-align: middle; /* 2 */\n}\n\n/*\nConstrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14)\n*/\n\nimg,\nvideo {\n max-width: 100%;\n height: auto;\n}\n\n/* Make elements with the HTML hidden attribute stay hidden by default */\n\n[hidden] {\n display: none;\n}\n\n/* :host for use with Shadow DOM, copied from the TailwindCSS prelude */\n\n:host {\n --background: 0 0% 100%;\n --foreground: 222.2 84% 4.9%;\n\n --card: 0 0% 100%;\n --card-foreground: 222.2 84% 4.9%;\n\n --popover: 0 0% 100%;\n --popover-foreground: 222.2 84% 4.9%;\n\n --primary: 222.2 47.4% 11.2%;\n --primary-foreground: 210 40% 98%;\n\n --secondary: 210 40% 96.1%;\n --secondary-foreground: 222.2 47.4% 11.2%;\n\n --muted: 0 0% 57.3%;\n --muted-foreground: 215.4 16.3% 46.9%;\n\n --accent: 273 60% 51%;\n --accent-foreground: 110 10% 94%;\n\n --destructive: 0 84.2% 60.2%;\n --destructive-foreground: 210 40% 98%;\n\n --border: 214.3 31.8% 91.4%;\n --input: 214.3 31.8% 91.4%;\n --ring: 222.2 84% 4.9%;\n\n --radius: 0.5rem;\n }\n\n:root {\n --background: 110 10% 94%;\n --foreground: 222.2 84% 4.9%;\n\n --card: 0 0% 100%;\n --card-foreground: 222.2 84% 4.9%;\n\n --popover: 0 0% 100%;\n --popover-foreground: 222.2 84% 4.9%;\n\n --primary: 222.2 47.4% 11.2%;\n --primary-foreground: 210 40% 98%;\n\n --secondary: 210 40% 96.1%;\n --secondary-foreground: 222.2 47.4% 11.2%;\n\n --muted: 0 0% 57.3%;\n --muted-foreground: 215.4 16.3% 46.9%;\n\n --accent: 273 60% 51%;\n --accent-foreground: 110 10% 94%;\n\n --destructive: 0 84.2% 60.2%;\n --destructive-foreground: 210 40% 98%;\n\n --border: 214.3 31.8% 91.4%;\n --input: 212.7 9.1% 76.3%;\n --ring: 222.2 84% 4.9%;\n\n --radius: 0.5rem;\n }\n\n/* dark theme */\n\n*[data-mode=\"dark\"] {\n --background: 0 0% 4%;\n --foreground: 210 40% 98%;\n\n --card: 222.2 84% 4.9%;\n --card-foreground: 210 40% 98%;\n\n --popover: 222.2 84% 4.9%;\n --popover-foreground: 210 40% 98%;\n\n --primary: 210 40% 98%;\n --primary-foreground: 222.2 47.4% 11.2%;\n\n --secondary: 217.2 32.6% 17.5%;\n --secondary-foreground: 210 40% 98%;\n\n --muted: 178 23% 76%;\n --muted-foreground: 215 20.2% 65.1%;\n\n --accent: 159 60% 51%;\n --accent-foreground: 210 40% 98%;\n\n --destructive: 0 62.8% 30.6%;\n --destructive-foreground: 210 40% 98%;\n\n --border: 217.2 32.6% 17.5%;\n --input: 217.2 32.6% 17.5%;\n --ring: 212.7 26.8% 83.9%;\n }\n\n* {\n border-color: hsl(var(--border));\n}\n\nbody {\n background-color: hsl(var(--background));\n color: hsl(var(--foreground));\n}\n\n*, ::before, ::after {\n --tw-border-spacing-x: 0;\n --tw-border-spacing-y: 0;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-rotate: 0;\n --tw-skew-x: 0;\n --tw-skew-y: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-pan-x: ;\n --tw-pan-y: ;\n --tw-pinch-zoom: ;\n --tw-scroll-snap-strictness: proximity;\n --tw-gradient-from-position: ;\n --tw-gradient-via-position: ;\n --tw-gradient-to-position: ;\n --tw-ordinal: ;\n --tw-slashed-zero: ;\n --tw-numeric-figure: ;\n --tw-numeric-spacing: ;\n --tw-numeric-fraction: ;\n --tw-ring-inset: ;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: rgb(59 130 246 / 0.5);\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n --tw-blur: ;\n --tw-brightness: ;\n --tw-contrast: ;\n --tw-grayscale: ;\n --tw-hue-rotate: ;\n --tw-invert: ;\n --tw-saturate: ;\n --tw-sepia: ;\n --tw-drop-shadow: ;\n --tw-backdrop-blur: ;\n --tw-backdrop-brightness: ;\n --tw-backdrop-contrast: ;\n --tw-backdrop-grayscale: ;\n --tw-backdrop-hue-rotate: ;\n --tw-backdrop-invert: ;\n --tw-backdrop-opacity: ;\n --tw-backdrop-saturate: ;\n --tw-backdrop-sepia: ;\n}\n\n::backdrop {\n --tw-border-spacing-x: 0;\n --tw-border-spacing-y: 0;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-rotate: 0;\n --tw-skew-x: 0;\n --tw-skew-y: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-pan-x: ;\n --tw-pan-y: ;\n --tw-pinch-zoom: ;\n --tw-scroll-snap-strictness: proximity;\n --tw-gradient-from-position: ;\n --tw-gradient-via-position: ;\n --tw-gradient-to-position: ;\n --tw-ordinal: ;\n --tw-slashed-zero: ;\n --tw-numeric-figure: ;\n --tw-numeric-spacing: ;\n --tw-numeric-fraction: ;\n --tw-ring-inset: ;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: rgb(59 130 246 / 0.5);\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n --tw-blur: ;\n --tw-brightness: ;\n --tw-contrast: ;\n --tw-grayscale: ;\n --tw-hue-rotate: ;\n --tw-invert: ;\n --tw-saturate: ;\n --tw-sepia: ;\n --tw-drop-shadow: ;\n --tw-backdrop-blur: ;\n --tw-backdrop-brightness: ;\n --tw-backdrop-contrast: ;\n --tw-backdrop-grayscale: ;\n --tw-backdrop-hue-rotate: ;\n --tw-backdrop-invert: ;\n --tw-backdrop-opacity: ;\n --tw-backdrop-saturate: ;\n --tw-backdrop-sepia: ;\n}\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n}\n.pointer-events-none {\n pointer-events: none;\n}\n.invisible {\n visibility: hidden;\n}\n.static {\n position: static;\n}\n.fixed {\n position: fixed;\n}\n.absolute {\n position: absolute;\n}\n.relative {\n position: relative;\n}\n.sticky {\n position: sticky;\n}\n.inset-0 {\n inset: 0px;\n}\n.inset-y-0 {\n top: 0px;\n bottom: 0px;\n}\n.-left-2 {\n left: -0.5rem;\n}\n.-right-\\[10px\\] {\n right: -10px;\n}\n.-top-\\[10px\\] {\n top: -10px;\n}\n.-top-\\[4px\\] {\n top: -4px;\n}\n.bottom-0 {\n bottom: 0px;\n}\n.left-0 {\n left: 0px;\n}\n.left-1 {\n left: 0.25rem;\n}\n.left-2 {\n left: 0.5rem;\n}\n.left-\\[50\\%\\] {\n left: 50%;\n}\n.right-0 {\n right: 0px;\n}\n.right-1 {\n right: 0.25rem;\n}\n.right-4 {\n right: 1rem;\n}\n.right-\\[16px\\] {\n right: 16px;\n}\n.top-0 {\n top: 0px;\n}\n.top-1\\/2 {\n top: 50%;\n}\n.top-4 {\n top: 1rem;\n}\n.top-\\[50\\%\\] {\n top: 50%;\n}\n.z-50 {\n z-index: 50;\n}\n.z-\\[1\\] {\n z-index: 1;\n}\n.z-\\[5\\] {\n z-index: 5;\n}\n.z-overlay {\n z-index: 4;\n}\n.m-4 {\n margin: 1rem;\n}\n.-mx-1 {\n margin-left: -0.25rem;\n margin-right: -0.25rem;\n}\n.-my-2 {\n margin-top: -0.5rem;\n margin-bottom: -0.5rem;\n}\n.-my-\\[100px\\] {\n margin-top: -100px;\n margin-bottom: -100px;\n}\n.mx-2 {\n margin-left: 0.5rem;\n margin-right: 0.5rem;\n}\n.my-1 {\n margin-top: 0.25rem;\n margin-bottom: 0.25rem;\n}\n.mb-4 {\n margin-bottom: 1rem;\n}\n.ml-0 {\n margin-left: 0px;\n}\n.ml-2 {\n margin-left: 0.5rem;\n}\n.ml-4 {\n margin-left: 1rem;\n}\n.ml-\\[20px\\] {\n margin-left: 20px;\n}\n.ml-auto {\n margin-left: auto;\n}\n.mr-2 {\n margin-right: 0.5rem;\n}\n.mt-2 {\n margin-top: 0.5rem;\n}\n.block {\n display: block;\n}\n.inline {\n display: inline;\n}\n.flex {\n display: flex;\n}\n.inline-flex {\n display: inline-flex;\n}\n.table {\n display: table;\n}\n.grid {\n display: grid;\n}\n.hidden {\n display: none;\n}\n.aspect-square {\n aspect-ratio: 1 / 1;\n}\n.h-10 {\n height: 2.5rem;\n}\n.h-11 {\n height: 2.75rem;\n}\n.h-2 {\n height: 0.5rem;\n}\n.h-2\\.5 {\n height: 0.625rem;\n}\n.h-3 {\n height: 0.75rem;\n}\n.h-3\\.5 {\n height: 0.875rem;\n}\n.h-4 {\n height: 1rem;\n}\n.h-7 {\n height: 1.75rem;\n}\n.h-9 {\n height: 2.25rem;\n}\n.h-\\[100\\] {\n height: 100;\n}\n.h-\\[12px\\] {\n height: 12px;\n}\n.h-\\[14px\\] {\n height: 14px;\n}\n.h-\\[18px\\] {\n height: 18px;\n}\n.h-\\[1px\\] {\n height: 1px;\n}\n.h-\\[20px\\] {\n height: 20px;\n}\n.h-\\[22px\\] {\n height: 22px;\n}\n.h-\\[24px\\] {\n height: 24px;\n}\n.h-\\[32px\\] {\n height: 32px;\n}\n.h-\\[50px\\] {\n height: 50px;\n}\n.h-\\[75px\\] {\n height: 75px;\n}\n.h-\\[9px\\] {\n height: 9px;\n}\n.h-\\[var\\(--radix-select-trigger-height\\)\\] {\n height: var(--radix-select-trigger-height);\n}\n.h-full {\n height: 100%;\n}\n.h-px {\n height: 1px;\n}\n.h-screen {\n height: 100vh;\n}\n.max-h-\\[300px\\] {\n max-height: 300px;\n}\n.min-h-\\[200px\\] {\n min-height: 200px;\n}\n.min-h-\\[300px\\] {\n min-height: 300px;\n}\n.min-h-screen {\n min-height: 100vh;\n}\n.w-0 {\n width: 0px;\n}\n.w-1\\/3 {\n width: 33.333333%;\n}\n.w-10 {\n width: 2.5rem;\n}\n.w-2 {\n width: 0.5rem;\n}\n.w-2\\.5 {\n width: 0.625rem;\n}\n.w-3 {\n width: 0.75rem;\n}\n.w-3\\.5 {\n width: 0.875rem;\n}\n.w-4 {\n width: 1rem;\n}\n.w-5 {\n width: 1.25rem;\n}\n.w-7 {\n width: 1.75rem;\n}\n.w-72 {\n width: 18rem;\n}\n.w-9 {\n width: 2.25rem;\n}\n.w-\\[12px\\] {\n width: 12px;\n}\n.w-\\[14px\\] {\n width: 14px;\n}\n.w-\\[1px\\] {\n width: 1px;\n}\n.w-\\[20px\\] {\n width: 20px;\n}\n.w-\\[24px\\] {\n width: 24px;\n}\n.w-\\[300px\\] {\n width: 300px;\n}\n.w-\\[32px\\] {\n width: 32px;\n}\n.w-\\[44px\\] {\n width: 44px;\n}\n.w-\\[9px\\] {\n width: 9px;\n}\n.w-fit {\n width: -moz-fit-content;\n width: fit-content;\n}\n.w-full {\n width: 100%;\n}\n.w-screen {\n width: 100vw;\n}\n.min-w-0 {\n min-width: 0px;\n}\n.min-w-\\[320px\\] {\n min-width: 320px;\n}\n.min-w-\\[500px\\] {\n min-width: 500px;\n}\n.min-w-\\[8rem\\] {\n min-width: 8rem;\n}\n.min-w-\\[var\\(--radix-select-trigger-width\\)\\] {\n min-width: var(--radix-select-trigger-width);\n}\n.max-w-4xl {\n max-width: 56rem;\n}\n.max-w-\\[1000px\\] {\n max-width: 1000px;\n}\n.max-w-\\[10vw\\] {\n max-width: 10vw;\n}\n.max-w-\\[300px\\] {\n max-width: 300px;\n}\n.max-w-\\[90vw\\] {\n max-width: 90vw;\n}\n.max-w-lg {\n max-width: 32rem;\n}\n.max-w-xl {\n max-width: 36rem;\n}\n.flex-1 {\n flex: 1 1 0%;\n}\n.flex-auto {\n flex: 1 1 auto;\n}\n.flex-shrink-0 {\n flex-shrink: 0;\n}\n.shrink-0 {\n flex-shrink: 0;\n}\n.flex-grow {\n flex-grow: 1;\n}\n.border-collapse {\n border-collapse: collapse;\n}\n.-translate-y-1\\/2 {\n --tw-translate-y: -50%;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.translate-x-\\[-50\\%\\] {\n --tw-translate-x: -50%;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.translate-y-\\[-50\\%\\] {\n --tw-translate-y: -50%;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.-rotate-90 {\n --tw-rotate: -90deg;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.rotate-90 {\n --tw-rotate: 90deg;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.rotate-\\[-90deg\\] {\n --tw-rotate: -90deg;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.rotate-\\[90deg\\] {\n --tw-rotate: 90deg;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.transform {\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.cursor-col-resize {\n cursor: col-resize;\n}\n.cursor-default {\n cursor: default;\n}\n.cursor-grab {\n cursor: grab;\n}\n.cursor-pointer {\n cursor: pointer;\n}\n.cursor-se-resize {\n cursor: se-resize;\n}\n.touch-none {\n touch-action: none;\n}\n.select-none {\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n}\n.resize-none {\n resize: none;\n}\n.resize {\n resize: both;\n}\n.list-decimal {\n list-style-type: decimal;\n}\n.list-disc {\n list-style-type: disc;\n}\n.grid-cols-\\[min-content_1fr\\] {\n grid-template-columns: min-content 1fr;\n}\n.grid-rows-\\[1fr\\2c _min-content\\] {\n grid-template-rows: 1fr min-content;\n}\n.flex-row {\n flex-direction: row;\n}\n.flex-col {\n flex-direction: column;\n}\n.flex-col-reverse {\n flex-direction: column-reverse;\n}\n.items-start {\n align-items: flex-start;\n}\n.items-center {\n align-items: center;\n}\n.justify-start {\n justify-content: flex-start;\n}\n.justify-end {\n justify-content: flex-end;\n}\n.justify-center {\n justify-content: center;\n}\n.justify-between {\n justify-content: space-between;\n}\n.gap-1 {\n gap: 0.25rem;\n}\n.gap-2 {\n gap: 0.5rem;\n}\n.gap-3 {\n gap: 0.75rem;\n}\n.gap-4 {\n gap: 1rem;\n}\n.gap-5 {\n gap: 1.25rem;\n}\n.gap-\\[0\\.5em\\] {\n gap: 0.5em;\n}\n.gap-\\[36px\\] {\n gap: 36px;\n}\n.gap-x-4 {\n -moz-column-gap: 1rem;\n column-gap: 1rem;\n}\n.gap-y-1 {\n row-gap: 0.25rem;\n}\n.gap-y-2 {\n row-gap: 0.5rem;\n}\n.gap-y-4 {\n row-gap: 1rem;\n}\n.gap-y-8 {\n row-gap: 2rem;\n}\n.space-x-1 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-x-reverse: 0;\n margin-right: calc(0.25rem * var(--tw-space-x-reverse));\n margin-left: calc(0.25rem * calc(1 - var(--tw-space-x-reverse)));\n}\n.space-y-1 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(0.25rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(0.25rem * var(--tw-space-y-reverse));\n}\n.space-y-1\\.5 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(0.375rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(0.375rem * var(--tw-space-y-reverse));\n}\n.space-y-2 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(0.5rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(0.5rem * var(--tw-space-y-reverse));\n}\n.space-y-4 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(1rem * var(--tw-space-y-reverse));\n}\n.overflow-auto {\n overflow: auto;\n}\n.overflow-hidden {\n overflow: hidden;\n}\n.overflow-clip {\n overflow: clip;\n}\n.overflow-scroll {\n overflow: scroll;\n}\n.overflow-y-auto {\n overflow-y: auto;\n}\n.overflow-x-hidden {\n overflow-x: hidden;\n}\n.overflow-y-scroll {\n overflow-y: scroll;\n}\n.truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.whitespace-nowrap {\n white-space: nowrap;\n}\n.rounded {\n border-radius: 0.25rem;\n}\n.rounded-\\[inherit\\] {\n border-radius: inherit;\n}\n.rounded-full {\n border-radius: 9999px;\n}\n.rounded-lg {\n border-radius: var(--radius);\n}\n.rounded-md {\n border-radius: calc(var(--radius) - 2px);\n}\n.rounded-sm {\n border-radius: calc(var(--radius) - 4px);\n}\n.rounded-b-none {\n border-bottom-right-radius: 0px;\n border-bottom-left-radius: 0px;\n}\n.rounded-b-sm {\n border-bottom-right-radius: calc(var(--radius) - 4px);\n border-bottom-left-radius: calc(var(--radius) - 4px);\n}\n.rounded-t-none {\n border-top-left-radius: 0px;\n border-top-right-radius: 0px;\n}\n.border {\n border-width: 1px;\n}\n.border-2 {\n border-width: 2px;\n}\n.border-\\[2px\\] {\n border-width: 2px;\n}\n.border-x {\n border-left-width: 1px;\n border-right-width: 1px;\n}\n.border-y {\n border-top-width: 1px;\n border-bottom-width: 1px;\n}\n.border-b {\n border-bottom-width: 1px;\n}\n.border-b-0 {\n border-bottom-width: 0px;\n}\n.border-b-2 {\n border-bottom-width: 2px;\n}\n.border-l {\n border-left-width: 1px;\n}\n.border-l-2 {\n border-left-width: 2px;\n}\n.border-r {\n border-right-width: 1px;\n}\n.border-t {\n border-top-width: 1px;\n}\n.border-t-0 {\n border-top-width: 0px;\n}\n.border-accent {\n border-color: hsl(var(--accent));\n}\n.border-border {\n border-color: hsl(var(--border));\n}\n.border-gray-400 {\n --tw-border-opacity: 1;\n border-color: rgb(156 163 175 / var(--tw-border-opacity));\n}\n.border-input {\n border-color: hsl(var(--input));\n}\n.border-primary {\n border-color: hsl(var(--primary));\n}\n.border-transparent {\n border-color: transparent;\n}\n.border-l-transparent {\n border-left-color: transparent;\n}\n.border-t-transparent {\n border-top-color: transparent;\n}\n.bg-accent {\n background-color: hsl(var(--accent));\n}\n.bg-background {\n background-color: hsl(var(--background));\n}\n.bg-background\\/80 {\n background-color: hsl(var(--background) / 0.8);\n}\n.bg-border {\n background-color: hsl(var(--border));\n}\n.bg-card {\n background-color: hsl(var(--card));\n}\n.bg-card-foreground {\n background-color: hsl(var(--card-foreground));\n}\n.bg-destructive {\n background-color: hsl(var(--destructive));\n}\n.bg-gray-300 {\n --tw-bg-opacity: 1;\n background-color: rgb(209 213 219 / var(--tw-bg-opacity));\n}\n.bg-gray-500 {\n --tw-bg-opacity: 1;\n background-color: rgb(107 114 128 / var(--tw-bg-opacity));\n}\n.bg-muted {\n background-color: hsl(var(--muted));\n}\n.bg-popover {\n background-color: hsl(var(--popover));\n}\n.bg-primary {\n background-color: hsl(var(--primary));\n}\n.bg-red-500 {\n --tw-bg-opacity: 1;\n background-color: rgb(239 68 68 / var(--tw-bg-opacity));\n}\n.bg-secondary {\n background-color: hsl(var(--secondary));\n}\n.bg-transparent {\n background-color: transparent;\n}\n.bg-white {\n --tw-bg-opacity: 1;\n background-color: rgb(255 255 255 / var(--tw-bg-opacity));\n}\n.bg-gradient-to-b {\n background-image: linear-gradient(to bottom, var(--tw-gradient-stops));\n}\n.bg-gradient-to-br {\n background-image: linear-gradient(to bottom right, var(--tw-gradient-stops));\n}\n.from-background\\/90 {\n --tw-gradient-from: hsl(var(--background) / 0.9) var(--tw-gradient-from-position);\n --tw-gradient-to: hsl(var(--background) / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\n}\n.from-card {\n --tw-gradient-from: hsl(var(--card)) var(--tw-gradient-from-position);\n --tw-gradient-to: hsl(var(--card) / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\n}\n.from-transparent {\n --tw-gradient-from: transparent var(--tw-gradient-from-position);\n --tw-gradient-to: rgb(0 0 0 / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\n}\n.from-40\\% {\n --tw-gradient-from-position: 40%;\n}\n.from-50\\% {\n --tw-gradient-from-position: 50%;\n}\n.to-background {\n --tw-gradient-to: hsl(var(--background)) var(--tw-gradient-to-position);\n}\n.fill-current {\n fill: currentColor;\n}\n.fill-white {\n fill: #fff;\n}\n.stroke-\\[2px\\] {\n stroke-width: 2px;\n}\n.stroke-\\[3px\\] {\n stroke-width: 3px;\n}\n.object-contain {\n -o-object-fit: contain;\n object-fit: contain;\n}\n.p-0 {\n padding: 0px;\n}\n.p-1 {\n padding: 0.25rem;\n}\n.p-10 {\n padding: 2.5rem;\n}\n.p-2 {\n padding: 0.5rem;\n}\n.p-3 {\n padding: 0.75rem;\n}\n.p-4 {\n padding: 1rem;\n}\n.p-6 {\n padding: 1.5rem;\n}\n.p-\\[1px\\] {\n padding: 1px;\n}\n.px-1 {\n padding-left: 0.25rem;\n padding-right: 0.25rem;\n}\n.px-2 {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n}\n.px-2\\.5 {\n padding-left: 0.625rem;\n padding-right: 0.625rem;\n}\n.px-3 {\n padding-left: 0.75rem;\n padding-right: 0.75rem;\n}\n.px-4 {\n padding-left: 1rem;\n padding-right: 1rem;\n}\n.px-5 {\n padding-left: 1.25rem;\n padding-right: 1.25rem;\n}\n.px-8 {\n padding-left: 2rem;\n padding-right: 2rem;\n}\n.px-\\[24px\\] {\n padding-left: 24px;\n padding-right: 24px;\n}\n.px-\\[2px\\] {\n padding-left: 2px;\n padding-right: 2px;\n}\n.py-1 {\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n}\n.py-1\\.5 {\n padding-top: 0.375rem;\n padding-bottom: 0.375rem;\n}\n.py-2 {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n}\n.py-3 {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n}\n.py-4 {\n padding-top: 1rem;\n padding-bottom: 1rem;\n}\n.py-6 {\n padding-top: 1.5rem;\n padding-bottom: 1.5rem;\n}\n.py-7 {\n padding-top: 1.75rem;\n padding-bottom: 1.75rem;\n}\n.py-\\[2px\\] {\n padding-top: 2px;\n padding-bottom: 2px;\n}\n.pb-0 {\n padding-bottom: 0px;\n}\n.pb-20 {\n padding-bottom: 5rem;\n}\n.pb-4 {\n padding-bottom: 1rem;\n}\n.pl-0 {\n padding-left: 0px;\n}\n.pl-6 {\n padding-left: 1.5rem;\n}\n.pl-8 {\n padding-left: 2rem;\n}\n.pl-\\[300px\\] {\n padding-left: 300px;\n}\n.pr-2 {\n padding-right: 0.5rem;\n}\n.pt-0 {\n padding-top: 0px;\n}\n.pt-1 {\n padding-top: 0.25rem;\n}\n.pt-2 {\n padding-top: 0.5rem;\n}\n.pt-4 {\n padding-top: 1rem;\n}\n.text-left {\n text-align: left;\n}\n.text-center {\n text-align: center;\n}\n.text-start {\n text-align: start;\n}\n.font-sans {\n font-family: 'Roboto', sans-serif;\n}\n.font-serif {\n font-family: 'Space Mono', monospace;\n}\n.text-2xl {\n font-size: 1.5rem;\n line-height: 2rem;\n}\n.text-3xl {\n font-size: 1.875rem;\n line-height: 2.25rem;\n}\n.text-4xl {\n font-size: 2.25rem;\n line-height: 2.5rem;\n}\n.text-\\[0\\.8rem\\] {\n font-size: 0.8rem;\n}\n.text-\\[12px\\] {\n font-size: 12px;\n}\n.text-lg {\n font-size: 1.125rem;\n line-height: 1.75rem;\n}\n.text-sm {\n font-size: 0.875rem;\n line-height: 1.25rem;\n}\n.text-xl {\n font-size: 1.25rem;\n line-height: 1.75rem;\n}\n.text-xs {\n font-size: 0.75rem;\n line-height: 1rem;\n}\n.font-\\[12px\\] {\n font-weight: 12px;\n}\n.font-\\[400\\] {\n font-weight: 400;\n}\n.font-\\[500\\] {\n font-weight: 500;\n}\n.font-\\[550\\] {\n font-weight: 550;\n}\n.font-bold {\n font-weight: 700;\n}\n.font-extrabold {\n font-weight: 800;\n}\n.font-medium {\n font-weight: 500;\n}\n.font-normal {\n font-weight: 400;\n}\n.font-semibold {\n font-weight: 600;\n}\n.uppercase {\n text-transform: uppercase;\n}\n.italic {\n font-style: italic;\n}\n.leading-4 {\n line-height: 1rem;\n}\n.leading-none {\n line-height: 1;\n}\n.tracking-\\[0\\.04em\\] {\n letter-spacing: 0.04em;\n}\n.tracking-tight {\n letter-spacing: -0.025em;\n}\n.tracking-wider {\n letter-spacing: 0.05em;\n}\n.tracking-widest {\n letter-spacing: 0.1em;\n}\n.text-accent {\n color: hsl(var(--accent));\n}\n.text-accent-foreground {\n color: hsl(var(--accent-foreground));\n}\n.text-background {\n color: hsl(var(--background));\n}\n.text-card-foreground {\n color: hsl(var(--card-foreground));\n}\n.text-current {\n color: currentColor;\n}\n.text-destructive {\n color: hsl(var(--destructive));\n}\n.text-destructive-foreground {\n color: hsl(var(--destructive-foreground));\n}\n.text-foreground {\n color: hsl(var(--foreground));\n}\n.text-muted {\n color: hsl(var(--muted));\n}\n.text-muted-foreground {\n color: hsl(var(--muted-foreground));\n}\n.text-popover-foreground {\n color: hsl(var(--popover-foreground));\n}\n.text-primary {\n color: hsl(var(--primary));\n}\n.text-primary-foreground {\n color: hsl(var(--primary-foreground));\n}\n.text-secondary-foreground {\n color: hsl(var(--secondary-foreground));\n}\n.text-white {\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity));\n}\n.underline {\n text-decoration-line: underline;\n}\n.line-through {\n text-decoration-line: line-through;\n}\n.underline-offset-4 {\n text-underline-offset: 4px;\n}\n.antialiased {\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n.opacity-0 {\n opacity: 0;\n}\n.opacity-100 {\n opacity: 1;\n}\n.opacity-50 {\n opacity: 0.5;\n}\n.opacity-60 {\n opacity: 0.6;\n}\n.opacity-70 {\n opacity: 0.7;\n}\n.opacity-75 {\n opacity: 0.75;\n}\n.mix-blend-difference {\n mix-blend-mode: difference;\n}\n.shadow {\n --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);\n --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.shadow-lg {\n --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);\n --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.shadow-md {\n --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);\n --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.shadow-sm {\n --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.outline-none {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n.outline {\n outline-style: solid;\n}\n.ring-0 {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n.ring-offset-background {\n --tw-ring-offset-color: hsl(var(--background));\n}\n.drop-shadow-2xl {\n --tw-drop-shadow: drop-shadow(0 25px 25px rgb(0 0 0 / 0.15));\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n.drop-shadow-\\[0px_0px_12px_hsl\\(var\\(--accent\\)\\)\\] {\n --tw-drop-shadow: drop-shadow(0px 0px 12px hsl(var(--accent)));\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n.filter {\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n.backdrop-blur-lg {\n --tw-backdrop-blur: blur(16px);\n -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n}\n.backdrop-blur-sm {\n --tw-backdrop-blur: blur(4px);\n -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n}\n.transition-all {\n transition-property: all;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.transition-colors {\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.transition-opacity {\n transition-property: opacity;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.transition-transform {\n transition-property: transform;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.duration-150 {\n transition-duration: 150ms;\n}\n.duration-200 {\n transition-duration: 200ms;\n}\n.ease-in-out {\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n}\n@keyframes enter {\n\n from {\n opacity: var(--tw-enter-opacity, 1);\n transform: translate3d(var(--tw-enter-translate-x, 0), var(--tw-enter-translate-y, 0), 0) scale3d(var(--tw-enter-scale, 1), var(--tw-enter-scale, 1), var(--tw-enter-scale, 1)) rotate(var(--tw-enter-rotate, 0));\n }\n}\n@keyframes exit {\n\n to {\n opacity: var(--tw-exit-opacity, 1);\n transform: translate3d(var(--tw-exit-translate-x, 0), var(--tw-exit-translate-y, 0), 0) scale3d(var(--tw-exit-scale, 1), var(--tw-exit-scale, 1), var(--tw-exit-scale, 1)) rotate(var(--tw-exit-rotate, 0));\n }\n}\n.animate-in {\n animation-name: enter;\n animation-duration: 150ms;\n --tw-enter-opacity: initial;\n --tw-enter-scale: initial;\n --tw-enter-rotate: initial;\n --tw-enter-translate-x: initial;\n --tw-enter-translate-y: initial;\n}\n.fade-in-0 {\n --tw-enter-opacity: 0;\n}\n.zoom-in-95 {\n --tw-enter-scale: .95;\n}\n.duration-150 {\n animation-duration: 150ms;\n}\n.duration-200 {\n animation-duration: 200ms;\n}\n.ease-in-out {\n animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n}\n.file\\:border-0::file-selector-button {\n border-width: 0px;\n}\n.file\\:bg-transparent::file-selector-button {\n background-color: transparent;\n}\n.file\\:text-sm::file-selector-button {\n font-size: 0.875rem;\n line-height: 1.25rem;\n}\n.file\\:font-medium::file-selector-button {\n font-weight: 500;\n}\n.placeholder\\:text-muted-foreground::-moz-placeholder {\n color: hsl(var(--muted-foreground));\n}\n.placeholder\\:text-muted-foreground::placeholder {\n color: hsl(var(--muted-foreground));\n}\n.focus-within\\:relative:focus-within {\n position: relative;\n}\n.hover\\:w-\\[2px\\]:hover {\n width: 2px;\n}\n.hover\\:w-\\[3px\\]:hover {\n width: 3px;\n}\n.hover\\:cursor-pointer:hover {\n cursor: pointer;\n}\n.hover\\:rounded-lg:hover {\n border-radius: var(--radius);\n}\n.hover\\:bg-accent:hover {\n background-color: hsl(var(--accent));\n}\n.hover\\:bg-border:hover {\n background-color: hsl(var(--border));\n}\n.hover\\:bg-destructive\\/90:hover {\n background-color: hsl(var(--destructive) / 0.9);\n}\n.hover\\:bg-muted:hover {\n background-color: hsl(var(--muted));\n}\n.hover\\:bg-primary:hover {\n background-color: hsl(var(--primary));\n}\n.hover\\:bg-primary\\/90:hover {\n background-color: hsl(var(--primary) / 0.9);\n}\n.hover\\:bg-red-700:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(185 28 28 / var(--tw-bg-opacity));\n}\n.hover\\:bg-secondary\\/80:hover {\n background-color: hsl(var(--secondary) / 0.8);\n}\n.hover\\:text-accent-foreground:hover {\n color: hsl(var(--accent-foreground));\n}\n.hover\\:text-muted-foreground:hover {\n color: hsl(var(--muted-foreground));\n}\n.hover\\:text-primary-foreground:hover {\n color: hsl(var(--primary-foreground));\n}\n.hover\\:text-white:hover {\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity));\n}\n.hover\\:underline:hover {\n text-decoration-line: underline;\n}\n.hover\\:opacity-100:hover {\n opacity: 1;\n}\n.focus\\:bg-accent:focus {\n background-color: hsl(var(--accent));\n}\n.focus\\:bg-primary:focus {\n background-color: hsl(var(--primary));\n}\n.focus\\:text-accent-foreground:focus {\n color: hsl(var(--accent-foreground));\n}\n.focus\\:text-primary-foreground:focus {\n color: hsl(var(--primary-foreground));\n}\n.focus\\:outline-none:focus {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n.focus\\:ring-2:focus {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n.focus\\:ring-ring:focus {\n --tw-ring-color: hsl(var(--ring));\n}\n.focus\\:ring-offset-2:focus {\n --tw-ring-offset-width: 2px;\n}\n.focus-visible\\:outline-none:focus-visible {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n.focus-visible\\:outline-accent:focus-visible {\n outline-color: hsl(var(--accent));\n}\n.focus-visible\\:ring-2:focus-visible {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n.focus-visible\\:ring-ring:focus-visible {\n --tw-ring-color: hsl(var(--ring));\n}\n.focus-visible\\:ring-offset-2:focus-visible {\n --tw-ring-offset-width: 2px;\n}\n.focus-visible\\:ring-offset-background:focus-visible {\n --tw-ring-offset-color: hsl(var(--background));\n}\n.disabled\\:pointer-events-none:disabled {\n pointer-events: none;\n}\n.disabled\\:cursor-not-allowed:disabled {\n cursor: not-allowed;\n}\n.disabled\\:text-background:disabled {\n color: hsl(var(--background));\n}\n.disabled\\:opacity-50:disabled {\n opacity: 0.5;\n}\n.peer:disabled ~ .peer-disabled\\:cursor-not-allowed {\n cursor: not-allowed;\n}\n.peer:disabled ~ .peer-disabled\\:opacity-70 {\n opacity: 0.7;\n}\n.aria-selected\\:bg-accent[aria-selected=\"true\"] {\n background-color: hsl(var(--accent));\n}\n.aria-selected\\:text-accent-foreground[aria-selected=\"true\"] {\n color: hsl(var(--accent-foreground));\n}\n.aria-selected\\:opacity-100[aria-selected=\"true\"] {\n opacity: 1;\n}\n.data-\\[disabled\\]\\:pointer-events-none[data-disabled] {\n pointer-events: none;\n}\n.data-\\[side\\=bottom\\]\\:translate-y-1[data-side=bottom] {\n --tw-translate-y: 0.25rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.data-\\[side\\=left\\]\\:-translate-x-1[data-side=left] {\n --tw-translate-x: -0.25rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.data-\\[side\\=right\\]\\:translate-x-1[data-side=right] {\n --tw-translate-x: 0.25rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.data-\\[side\\=top\\]\\:-translate-y-1[data-side=top] {\n --tw-translate-y: -0.25rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.data-\\[state\\=checked\\]\\:translate-x-5[data-state=checked] {\n --tw-translate-x: 1.25rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.data-\\[state\\=unchecked\\]\\:translate-x-0[data-state=unchecked] {\n --tw-translate-x: 0px;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n@keyframes accordion-up {\n\n from {\n height: var(--radix-accordion-content-height);\n }\n\n to {\n height: 0;\n }\n}\n.data-\\[state\\=closed\\]\\:animate-accordion-up[data-state=closed] {\n animation: accordion-up 0.2s ease-out;\n}\n@keyframes accordion-down {\n\n from {\n height: 0;\n }\n\n to {\n height: var(--radix-accordion-content-height);\n }\n}\n.data-\\[state\\=open\\]\\:animate-accordion-down[data-state=open] {\n animation: accordion-down 0.2s ease-out;\n}\n.data-\\[state\\=active\\]\\:bg-background[data-state=active] {\n background-color: hsl(var(--background));\n}\n.data-\\[state\\=checked\\]\\:bg-accent[data-state=checked] {\n background-color: hsl(var(--accent));\n}\n.data-\\[state\\=checked\\]\\:bg-primary[data-state=checked] {\n background-color: hsl(var(--primary));\n}\n.data-\\[state\\=on\\]\\:bg-accent[data-state=on] {\n background-color: hsl(var(--accent));\n}\n.data-\\[state\\=open\\]\\:bg-accent[data-state=open] {\n background-color: hsl(var(--accent));\n}\n.data-\\[state\\=unchecked\\]\\:bg-primary[data-state=unchecked] {\n background-color: hsl(var(--primary));\n}\n.data-\\[state\\=active\\]\\:text-foreground[data-state=active] {\n color: hsl(var(--foreground));\n}\n.data-\\[state\\=checked\\]\\:text-primary-foreground[data-state=checked] {\n color: hsl(var(--primary-foreground));\n}\n.data-\\[state\\=on\\]\\:text-accent-foreground[data-state=on] {\n color: hsl(var(--accent-foreground));\n}\n.data-\\[state\\=open\\]\\:text-muted-foreground[data-state=open] {\n color: hsl(var(--muted-foreground));\n}\n.data-\\[disabled\\]\\:opacity-50[data-disabled] {\n opacity: 0.5;\n}\n.data-\\[state\\=active\\]\\:shadow-sm[data-state=active] {\n --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.data-\\[state\\=open\\]\\:animate-in[data-state=open] {\n animation-name: enter;\n animation-duration: 150ms;\n --tw-enter-opacity: initial;\n --tw-enter-scale: initial;\n --tw-enter-rotate: initial;\n --tw-enter-translate-x: initial;\n --tw-enter-translate-y: initial;\n}\n.data-\\[state\\=closed\\]\\:animate-out[data-state=closed] {\n animation-name: exit;\n animation-duration: 150ms;\n --tw-exit-opacity: initial;\n --tw-exit-scale: initial;\n --tw-exit-rotate: initial;\n --tw-exit-translate-x: initial;\n --tw-exit-translate-y: initial;\n}\n.data-\\[state\\=closed\\]\\:fade-out-0[data-state=closed] {\n --tw-exit-opacity: 0;\n}\n.data-\\[state\\=open\\]\\:fade-in-0[data-state=open] {\n --tw-enter-opacity: 0;\n}\n.data-\\[state\\=closed\\]\\:zoom-out-95[data-state=closed] {\n --tw-exit-scale: .95;\n}\n.data-\\[state\\=open\\]\\:zoom-in-95[data-state=open] {\n --tw-enter-scale: .95;\n}\n.data-\\[side\\=bottom\\]\\:slide-in-from-top-2[data-side=bottom] {\n --tw-enter-translate-y: -0.5rem;\n}\n.data-\\[side\\=left\\]\\:slide-in-from-right-2[data-side=left] {\n --tw-enter-translate-x: 0.5rem;\n}\n.data-\\[side\\=right\\]\\:slide-in-from-left-2[data-side=right] {\n --tw-enter-translate-x: -0.5rem;\n}\n.data-\\[side\\=top\\]\\:slide-in-from-bottom-2[data-side=top] {\n --tw-enter-translate-y: 0.5rem;\n}\n.data-\\[state\\=closed\\]\\:slide-out-to-left-1\\/2[data-state=closed] {\n --tw-exit-translate-x: -50%;\n}\n.data-\\[state\\=closed\\]\\:slide-out-to-top-\\[48\\%\\][data-state=closed] {\n --tw-exit-translate-y: -48%;\n}\n.data-\\[state\\=open\\]\\:slide-in-from-left-1\\/2[data-state=open] {\n --tw-enter-translate-x: -50%;\n}\n.data-\\[state\\=open\\]\\:slide-in-from-top-\\[48\\%\\][data-state=open] {\n --tw-enter-translate-y: -48%;\n}\n:is([data-mode=\"dark\"] .dark\\:border-white) {\n --tw-border-opacity: 1;\n border-color: rgb(255 255 255 / var(--tw-border-opacity));\n}\n@media (min-width: 640px) {\n\n .sm\\:mt-0 {\n margin-top: 0px;\n }\n\n .sm\\:block {\n display: block;\n }\n\n .sm\\:flex-row {\n flex-direction: row;\n }\n\n .sm\\:justify-end {\n justify-content: flex-end;\n }\n\n .sm\\:space-x-2 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-x-reverse: 0;\n margin-right: calc(0.5rem * var(--tw-space-x-reverse));\n margin-left: calc(0.5rem * calc(1 - var(--tw-space-x-reverse)));\n }\n\n .sm\\:space-x-4 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-x-reverse: 0;\n margin-right: calc(1rem * var(--tw-space-x-reverse));\n margin-left: calc(1rem * calc(1 - var(--tw-space-x-reverse)));\n }\n\n .sm\\:space-y-0 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(0px * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(0px * var(--tw-space-y-reverse));\n }\n\n .sm\\:rounded-lg {\n border-radius: var(--radius);\n }\n\n .sm\\:p-0 {\n padding: 0px;\n }\n\n .sm\\:text-left {\n text-align: left;\n }\n}\n@media (min-width: 768px) {\n\n .md\\:relative {\n position: relative;\n }\n\n .md\\:flex {\n display: flex;\n }\n\n .md\\:hidden {\n display: none;\n }\n\n .md\\:w-\\[300px\\] {\n width: 300px;\n }\n\n .md\\:w-full {\n width: 100%;\n }\n\n .md\\:px-4 {\n padding-left: 1rem;\n padding-right: 1rem;\n }\n\n .md\\:pl-0 {\n padding-left: 0px;\n }\n}\n.\\[\\&\\:has\\(\\[aria-selected\\]\\)\\]\\:bg-accent:has([aria-selected]) {\n background-color: hsl(var(--accent));\n}\n.first\\:\\[\\&\\:has\\(\\[aria-selected\\]\\)\\]\\:rounded-l-md:has([aria-selected]):first-child {\n border-top-left-radius: calc(var(--radius) - 2px);\n border-bottom-left-radius: calc(var(--radius) - 2px);\n}\n.last\\:\\[\\&\\:has\\(\\[aria-selected\\]\\)\\]\\:rounded-r-md:has([aria-selected]):last-child {\n border-top-right-radius: calc(var(--radius) - 2px);\n border-bottom-right-radius: calc(var(--radius) - 2px);\n}\n.\\[\\&\\[data-state\\=open\\]\\>svg\\]\\:rotate-180[data-state=open]>svg {\n --tw-rotate: 180deg;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.\\[\\&_\\[cmdk-group-heading\\]\\]\\:px-2 [cmdk-group-heading] {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n}\n.\\[\\&_\\[cmdk-group-heading\\]\\]\\:py-1\\.5 [cmdk-group-heading] {\n padding-top: 0.375rem;\n padding-bottom: 0.375rem;\n}\n.\\[\\&_\\[cmdk-group-heading\\]\\]\\:text-xs [cmdk-group-heading] {\n font-size: 0.75rem;\n line-height: 1rem;\n}\n.\\[\\&_\\[cmdk-group-heading\\]\\]\\:font-medium [cmdk-group-heading] {\n font-weight: 500;\n}\n.\\[\\&_\\[cmdk-group-heading\\]\\]\\:text-muted-foreground [cmdk-group-heading] {\n color: hsl(var(--muted-foreground));\n}\n.\\[\\&_\\[cmdk-group\\]\\:not\\(\\[hidden\\]\\)_\\~\\[cmdk-group\\]\\]\\:pt-0 [cmdk-group]:not([hidden]) ~[cmdk-group] {\n padding-top: 0px;\n}\n.\\[\\&_\\[cmdk-group\\]\\]\\:px-2 [cmdk-group] {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n}\n.\\[\\&_\\[cmdk-input-wrapper\\]_svg\\]\\:h-5 [cmdk-input-wrapper] svg {\n height: 1.25rem;\n}\n.\\[\\&_\\[cmdk-input-wrapper\\]_svg\\]\\:w-5 [cmdk-input-wrapper] svg {\n width: 1.25rem;\n}\n.\\[\\&_\\[cmdk-input\\]\\]\\:h-12 [cmdk-input] {\n height: 3rem;\n}\n.\\[\\&_\\[cmdk-item\\]\\]\\:px-2 [cmdk-item] {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n}\n.\\[\\&_\\[cmdk-item\\]\\]\\:py-3 [cmdk-item] {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n}\n.\\[\\&_\\[cmdk-item\\]_svg\\]\\:h-5 [cmdk-item] svg {\n height: 1.25rem;\n}\n.\\[\\&_\\[cmdk-item\\]_svg\\]\\:w-5 [cmdk-item] svg {\n width: 1.25rem;\n}\n";
|
|
73815
74109
|
function Style() {
|
|
73816
74110
|
return /* @__PURE__ */ jsxRuntime.jsx("style", { children: styleCss });
|
|
73817
74111
|
}
|