@valbuild/ui 0.45.0 → 0.46.1
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 +775 -451
- package/dist/valbuild-ui.esm.js +775 -451
- package/package.json +3 -3
- package/server/.tmp/assets/index-0Qeyj20F.css +1 -0
- package/server/.tmp/assets/index-yY5yCkWt.js +201 -0
- package/server/.tmp/index.html +2 -2
- package/server/dist/valbuild-ui-main.cjs.js +764 -441
- package/server/dist/valbuild-ui-main.esm.js +764 -441
- 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" }]
|
|
56720
|
+
]);
|
|
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" }]
|
|
56641
56725
|
]);
|
|
56642
|
-
const
|
|
56643
|
-
["
|
|
56644
|
-
["
|
|
56645
|
-
["
|
|
56646
|
-
["
|
|
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,43 +67730,63 @@ 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.jsxs("div", { className: "
|
|
67659
|
-
|
|
67660
|
-
|
|
67661
|
-
|
|
67662
|
-
|
|
67663
|
-
|
|
67664
|
-
|
|
67665
|
-
|
|
67666
|
-
|
|
67667
|
-
|
|
67668
|
-
|
|
67669
|
-
|
|
67739
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "w-fit", children: [
|
|
67740
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
67741
|
+
"div",
|
|
67742
|
+
{
|
|
67743
|
+
className: "flex flex-col justify-start p-2 border border-b-0 rounded-sm rounded-b-none gap-y-4 bg-background text-foreground border-input",
|
|
67744
|
+
children: data || url ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
|
|
67745
|
+
hotspot && /* @__PURE__ */ jsxRuntime.jsx(
|
|
67746
|
+
"div",
|
|
67747
|
+
{
|
|
67748
|
+
className: "rounded-full h-[12px] w-[12px] bg-background mix-blend-difference border-accent border-2 absolute pointer-events-none",
|
|
67749
|
+
style: {
|
|
67750
|
+
top: `${hotspot.y * 100}%`,
|
|
67751
|
+
left: `${hotspot.x * 100}%`
|
|
67752
|
+
}
|
|
67753
|
+
}
|
|
67754
|
+
),
|
|
67755
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
67756
|
+
"img",
|
|
67757
|
+
{
|
|
67758
|
+
src: (data == null ? void 0 : data.src) || url,
|
|
67759
|
+
draggable: false,
|
|
67760
|
+
className: "object-contain w-full max-h-[500px]",
|
|
67761
|
+
style: {
|
|
67762
|
+
cursor: "crosshair"
|
|
67763
|
+
},
|
|
67764
|
+
onClick: (ev) => {
|
|
67765
|
+
const { width: width2, height: height2, left, top } = ev.currentTarget.getBoundingClientRect();
|
|
67766
|
+
const hotspotX = (ev.clientX - 6 - left) / width2;
|
|
67767
|
+
const hotspotY = (ev.clientY - 6 - top) / height2;
|
|
67768
|
+
setHotspot({
|
|
67769
|
+
x: hotspotX,
|
|
67770
|
+
y: hotspotY,
|
|
67771
|
+
width: 1,
|
|
67772
|
+
height: 1
|
|
67773
|
+
});
|
|
67774
|
+
}
|
|
67775
|
+
}
|
|
67776
|
+
)
|
|
67777
|
+
] }) : /* @__PURE__ */ jsxRuntime.jsx("div", { children: "Select image below" })
|
|
67778
|
+
},
|
|
67779
|
+
path
|
|
67780
|
+
),
|
|
67781
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-4 border border-t-0 rounded-b-sm bg-background border-input", children: [
|
|
67670
67782
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
67671
|
-
"
|
|
67783
|
+
"label",
|
|
67672
67784
|
{
|
|
67673
|
-
|
|
67674
|
-
className: "
|
|
67675
|
-
|
|
67676
|
-
const x = ev.nativeEvent.offsetX;
|
|
67677
|
-
const y = ev.nativeEvent.offsetY;
|
|
67678
|
-
const width2 = ev.currentTarget.clientWidth;
|
|
67679
|
-
const height2 = ev.currentTarget.clientHeight;
|
|
67680
|
-
const hotspotX = Math.round(x / width2 * 100) / 100;
|
|
67681
|
-
const hotspotY = Math.round(y / height2 * 100) / 100;
|
|
67682
|
-
setHotspot({ x: hotspotX, y: hotspotY, width: 1, height: 1 });
|
|
67683
|
-
}
|
|
67785
|
+
htmlFor: `img_input:${path}`,
|
|
67786
|
+
className: "block px-1 py-2 text-sm text-center rounded-md cursor-pointer bg-primary text-background",
|
|
67787
|
+
children: "Update"
|
|
67684
67788
|
}
|
|
67685
|
-
)
|
|
67686
|
-
] }) : /* @__PURE__ */ jsxRuntime.jsx("div", { children: "Select image below" }),
|
|
67687
|
-
/* @__PURE__ */ jsxRuntime.jsxs("label", { htmlFor: `img_input:${path}`, className: "", children: [
|
|
67688
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-1 py-2 text-center rounded-md bg-primary text-background", children: "Update image" }),
|
|
67789
|
+
),
|
|
67689
67790
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
67690
67791
|
"input",
|
|
67691
67792
|
{
|
|
@@ -67717,43 +67818,39 @@ function ImageField({
|
|
|
67717
67818
|
}
|
|
67718
67819
|
)
|
|
67719
67820
|
] })
|
|
67720
|
-
] }
|
|
67721
|
-
onSubmit &&
|
|
67821
|
+
] }),
|
|
67822
|
+
onSubmit && /* @__PURE__ */ jsxRuntime.jsx(
|
|
67722
67823
|
SubmitButton,
|
|
67723
67824
|
{
|
|
67724
67825
|
loading,
|
|
67826
|
+
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),
|
|
67725
67827
|
onClick: () => {
|
|
67726
|
-
|
|
67727
|
-
|
|
67728
|
-
(
|
|
67729
|
-
|
|
67730
|
-
|
|
67731
|
-
|
|
67732
|
-
|
|
67733
|
-
|
|
67828
|
+
if (data) {
|
|
67829
|
+
setLoading(true);
|
|
67830
|
+
onSubmit(
|
|
67831
|
+
(path2) => Promise.resolve(
|
|
67832
|
+
createImagePatch(
|
|
67833
|
+
path2,
|
|
67834
|
+
data.src,
|
|
67835
|
+
data.filename ?? null,
|
|
67836
|
+
metadata
|
|
67837
|
+
)
|
|
67734
67838
|
)
|
|
67735
|
-
)
|
|
67736
|
-
|
|
67737
|
-
|
|
67738
|
-
|
|
67739
|
-
|
|
67740
|
-
})
|
|
67741
|
-
|
|
67742
|
-
|
|
67743
|
-
|
|
67744
|
-
|
|
67745
|
-
|
|
67746
|
-
|
|
67747
|
-
|
|
67748
|
-
|
|
67749
|
-
|
|
67750
|
-
onSubmit(
|
|
67751
|
-
(path2) => Promise.resolve(createImageMetadataPatch(path2, metadata))
|
|
67752
|
-
).finally(() => {
|
|
67753
|
-
setLoading(false);
|
|
67754
|
-
setData(null);
|
|
67755
|
-
setMetadata(void 0);
|
|
67756
|
-
});
|
|
67839
|
+
).finally(() => {
|
|
67840
|
+
setLoading(false);
|
|
67841
|
+
setData(null);
|
|
67842
|
+
setMetadata(void 0);
|
|
67843
|
+
});
|
|
67844
|
+
} else if (metadata) {
|
|
67845
|
+
setLoading(true);
|
|
67846
|
+
onSubmit(
|
|
67847
|
+
(path2) => Promise.resolve(createImageMetadataPatch(path2, metadata))
|
|
67848
|
+
).finally(() => {
|
|
67849
|
+
setLoading(false);
|
|
67850
|
+
setData(null);
|
|
67851
|
+
setMetadata(void 0);
|
|
67852
|
+
});
|
|
67853
|
+
}
|
|
67757
67854
|
}
|
|
67758
67855
|
}
|
|
67759
67856
|
)
|
|
@@ -67834,10 +67931,11 @@ function RichTextField({
|
|
|
67834
67931
|
}
|
|
67835
67932
|
}
|
|
67836
67933
|
),
|
|
67837
|
-
onSubmit &&
|
|
67934
|
+
onSubmit && /* @__PURE__ */ jsxRuntime.jsx(
|
|
67838
67935
|
SubmitButton,
|
|
67839
67936
|
{
|
|
67840
67937
|
loading: loading || !editor,
|
|
67938
|
+
enabled: didChange,
|
|
67841
67939
|
onClick: () => {
|
|
67842
67940
|
if (editor) {
|
|
67843
67941
|
setLoading(true);
|
|
@@ -67919,10 +68017,11 @@ function KeyOfField({
|
|
|
67919
68017
|
]
|
|
67920
68018
|
}
|
|
67921
68019
|
),
|
|
67922
|
-
onSubmit &&
|
|
68020
|
+
onSubmit && /* @__PURE__ */ jsxRuntime.jsx(
|
|
67923
68021
|
SubmitButton,
|
|
67924
68022
|
{
|
|
67925
68023
|
loading,
|
|
68024
|
+
enabled: defaultValue !== value,
|
|
67926
68025
|
onClick: () => {
|
|
67927
68026
|
setLoading(true);
|
|
67928
68027
|
onSubmit(async (path) => [
|
|
@@ -67976,10 +68075,11 @@ function NumberField({
|
|
|
67976
68075
|
type: "number"
|
|
67977
68076
|
}
|
|
67978
68077
|
),
|
|
67979
|
-
onSubmit &&
|
|
68078
|
+
onSubmit && /* @__PURE__ */ jsxRuntime.jsx(
|
|
67980
68079
|
SubmitButton,
|
|
67981
68080
|
{
|
|
67982
68081
|
loading,
|
|
68082
|
+
enabled: defaultValue !== value,
|
|
67983
68083
|
onClick: () => {
|
|
67984
68084
|
setLoading(true);
|
|
67985
68085
|
onSubmit(async (path) => {
|
|
@@ -68002,6 +68102,8 @@ function NumberField({
|
|
|
68002
68102
|
function StringField({
|
|
68003
68103
|
disabled,
|
|
68004
68104
|
defaultValue,
|
|
68105
|
+
path,
|
|
68106
|
+
schema,
|
|
68005
68107
|
registerPatchCallback,
|
|
68006
68108
|
onSubmit
|
|
68007
68109
|
}) {
|
|
@@ -68013,18 +68115,28 @@ function StringField({
|
|
|
68013
68115
|
const ref = React$3.useRef(null);
|
|
68014
68116
|
React$3.useEffect(() => {
|
|
68015
68117
|
if (registerPatchCallback) {
|
|
68016
|
-
registerPatchCallback(async (
|
|
68118
|
+
registerPatchCallback(async (path2) => {
|
|
68017
68119
|
var _a;
|
|
68018
68120
|
return [
|
|
68019
68121
|
{
|
|
68020
68122
|
op: "replace",
|
|
68021
|
-
path,
|
|
68123
|
+
path: path2,
|
|
68022
68124
|
value: ((_a = ref.current) == null ? void 0 : _a.value) || ""
|
|
68023
68125
|
}
|
|
68024
68126
|
];
|
|
68025
68127
|
});
|
|
68026
68128
|
}
|
|
68027
68129
|
}, []);
|
|
68130
|
+
const actualSchema = new StringSchema(
|
|
68131
|
+
schema.options ? {
|
|
68132
|
+
...schema.options,
|
|
68133
|
+
regexp: schema.options.regexp ? new RegExp(
|
|
68134
|
+
schema.options.regexp.source,
|
|
68135
|
+
schema.options.regexp.flags
|
|
68136
|
+
) : void 0
|
|
68137
|
+
} : void 0
|
|
68138
|
+
);
|
|
68139
|
+
const validationErrors = actualSchema.validate(path, value);
|
|
68028
68140
|
return /* @__PURE__ */ jsxRuntime.jsxs(FieldContainer, { children: [
|
|
68029
68141
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
68030
68142
|
Input,
|
|
@@ -68035,18 +68147,20 @@ function StringField({
|
|
|
68035
68147
|
onChange: (e) => setValue(e.target.value)
|
|
68036
68148
|
}
|
|
68037
68149
|
),
|
|
68038
|
-
onSubmit &&
|
|
68150
|
+
onSubmit && /* @__PURE__ */ jsxRuntime.jsx(
|
|
68039
68151
|
SubmitButton,
|
|
68040
68152
|
{
|
|
68153
|
+
validationErrors: validationErrors && validationErrors[path],
|
|
68041
68154
|
loading,
|
|
68155
|
+
enabled: defaultValue !== value && !validationErrors,
|
|
68042
68156
|
onClick: () => {
|
|
68043
68157
|
setLoading(true);
|
|
68044
|
-
onSubmit(async (
|
|
68158
|
+
onSubmit(async (path2) => {
|
|
68045
68159
|
var _a;
|
|
68046
68160
|
return [
|
|
68047
68161
|
{
|
|
68048
68162
|
op: "replace",
|
|
68049
|
-
path,
|
|
68163
|
+
path: path2,
|
|
68050
68164
|
value: ((_a = ref.current) == null ? void 0 : _a.value) || ""
|
|
68051
68165
|
}
|
|
68052
68166
|
];
|
|
@@ -68058,14 +68172,28 @@ function StringField({
|
|
|
68058
68172
|
)
|
|
68059
68173
|
] });
|
|
68060
68174
|
}
|
|
68061
|
-
function
|
|
68062
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "
|
|
68175
|
+
function InlineValidationErrors({ errors }) {
|
|
68176
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-col p-2 text-sm rounded-md gap-y-1 text-destructive-foreground bg-destructive", children: errors.map((error, i) => /* @__PURE__ */ jsxRuntime.jsx("div", { children: error.message }, i)) });
|
|
68177
|
+
}
|
|
68178
|
+
function FieldContainer({
|
|
68179
|
+
children,
|
|
68180
|
+
className: className2
|
|
68181
|
+
}) {
|
|
68182
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: classNames("relative max-w-lg px-4 pt-4", className2), children });
|
|
68063
68183
|
}
|
|
68064
68184
|
function SubmitButton({
|
|
68065
68185
|
loading,
|
|
68186
|
+
enabled,
|
|
68187
|
+
validationErrors,
|
|
68066
68188
|
onClick
|
|
68067
68189
|
}) {
|
|
68068
|
-
|
|
68190
|
+
const { session } = useValOverlayContext();
|
|
68191
|
+
const isProxy = session.status === "success" && session.data.mode === "proxy";
|
|
68192
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "sticky bottom-0 m-4 mt-2 ml-0", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex justify-start w-full gap-2 text-sm", children: [
|
|
68193
|
+
/* @__PURE__ */ jsxRuntime.jsx(Button, { disabled: loading || !enabled, onClick, children: loading ? isProxy ? "Staging..." : "Saving..." : isProxy ? "Stage" : "Save" }),
|
|
68194
|
+
" ",
|
|
68195
|
+
validationErrors ? /* @__PURE__ */ jsxRuntime.jsx(InlineValidationErrors, { errors: validationErrors || [] }) : /* @__PURE__ */ jsxRuntime.jsx("span", {})
|
|
68196
|
+
] }) });
|
|
68069
68197
|
}
|
|
68070
68198
|
const Logo = ({ className: className2 }) => {
|
|
68071
68199
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -68082,7 +68210,7 @@ const Logo = ({ className: className2 }) => {
|
|
|
68082
68210
|
"path",
|
|
68083
68211
|
{
|
|
68084
68212
|
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: "
|
|
68213
|
+
fill: "hsl(var(--accent))"
|
|
68086
68214
|
}
|
|
68087
68215
|
) }),
|
|
68088
68216
|
/* @__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 +72664,33 @@ function useSession(api) {
|
|
|
72536
72664
|
}, [sessionResetId]);
|
|
72537
72665
|
return session;
|
|
72538
72666
|
}
|
|
72667
|
+
function Path({ children }) {
|
|
72668
|
+
const segs = children.split("/").filter((seg) => seg);
|
|
72669
|
+
return segs.map((seg, i) => {
|
|
72670
|
+
if (i !== segs.length - 1) {
|
|
72671
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(React$3.Fragment, { children: [
|
|
72672
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { children: seg }),
|
|
72673
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "px-[2px] text-muted", children: "/" })
|
|
72674
|
+
] }, `${children}/${seg}`);
|
|
72675
|
+
}
|
|
72676
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Seg, { children: seg }, children);
|
|
72677
|
+
});
|
|
72678
|
+
}
|
|
72679
|
+
function Seg({ children }) {
|
|
72680
|
+
if (children.includes(".")) {
|
|
72681
|
+
const segs = children.split(".");
|
|
72682
|
+
return segs.map((seg, i) => {
|
|
72683
|
+
if (i !== segs.length - 1) {
|
|
72684
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(React$3.Fragment, { children: [
|
|
72685
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { children: i === 0 ? seg : JSON.parse(seg) }),
|
|
72686
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "px-[2px] text-muted", children: "." })
|
|
72687
|
+
] }, `${children}.${seg}`);
|
|
72688
|
+
}
|
|
72689
|
+
return /* @__PURE__ */ jsxRuntime.jsx("span", { children: i === 0 ? seg : JSON.parse(seg) }, children);
|
|
72690
|
+
});
|
|
72691
|
+
}
|
|
72692
|
+
return /* @__PURE__ */ jsxRuntime.jsx("span", { children });
|
|
72693
|
+
}
|
|
72539
72694
|
const ValModulesContext = React$3.createContext(null);
|
|
72540
72695
|
const useValModuleFromPath = (sourcePath) => {
|
|
72541
72696
|
var _a, _b;
|
|
@@ -72686,12 +72841,13 @@ Showing stack trace of: 1. ${fatalErrors[0].message}`;
|
|
|
72686
72841
|
"div",
|
|
72687
72842
|
{
|
|
72688
72843
|
id: "val-fullscreen-container",
|
|
72689
|
-
className: "relative font-serif antialiased",
|
|
72844
|
+
className: "relative w-full h-[100] overflow-hidden font-serif antialiased bg-background text-primary",
|
|
72690
72845
|
"data-mode": theme2,
|
|
72691
72846
|
children: [
|
|
72692
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "fixed -translate-
|
|
72847
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "fixed -translate-y-1/2 right-4 top-1/2 z-overlay", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
72693
72848
|
ValMenu,
|
|
72694
72849
|
{
|
|
72850
|
+
direction: "vertical",
|
|
72695
72851
|
api,
|
|
72696
72852
|
patches,
|
|
72697
72853
|
onCommit: () => setPatchResetId((prev) => prev + 1)
|
|
@@ -72704,18 +72860,19 @@ Showing stack trace of: 1. ${fatalErrors[0].message}`;
|
|
|
72704
72860
|
value: {
|
|
72705
72861
|
hoverElem: hoverElemRef == null ? void 0 : hoverElemRef.current
|
|
72706
72862
|
},
|
|
72707
|
-
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-primary
|
|
72863
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-primary", children: /* @__PURE__ */ jsxRuntime.jsxs(Grid, { children: [
|
|
72708
72864
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-4 h-[50px] flex items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(Logo$1, {}) }),
|
|
72709
72865
|
/* @__PURE__ */ jsxRuntime.jsx(ScrollArea, { className: "px-4", children: modules ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
72710
72866
|
PathTree,
|
|
72711
72867
|
{
|
|
72868
|
+
selectedPath,
|
|
72712
72869
|
paths: Object.keys(modules),
|
|
72713
72870
|
setSelectedModuleId: (path) => {
|
|
72714
72871
|
navigate(path);
|
|
72715
72872
|
}
|
|
72716
72873
|
}
|
|
72717
72874
|
) : !error && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "py-4", children: "Loading..." }) }),
|
|
72718
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-start
|
|
72875
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-start h-[50px] gap-2 font-serif text-xs", children: [
|
|
72719
72876
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
72720
72877
|
"button",
|
|
72721
72878
|
{
|
|
@@ -72725,10 +72882,18 @@ Showing stack trace of: 1. ${fatalErrors[0].message}`;
|
|
|
72725
72882
|
children: /* @__PURE__ */ jsxRuntime.jsx(ChevronLeft, {})
|
|
72726
72883
|
}
|
|
72727
72884
|
),
|
|
72728
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
72885
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
72886
|
+
"div",
|
|
72887
|
+
{
|
|
72888
|
+
className: "truncate max-w-[300px]",
|
|
72889
|
+
dir: "rtl",
|
|
72890
|
+
title: selectedPath,
|
|
72891
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(Path, { children: selectedPath || "/" })
|
|
72892
|
+
}
|
|
72893
|
+
)
|
|
72729
72894
|
] }),
|
|
72730
72895
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-4", children: [
|
|
72731
|
-
error && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-lg text-destructive-foreground", children: [
|
|
72896
|
+
error && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "max-w-xl p-4 text-lg bg-destructive text-destructive-foreground", children: [
|
|
72732
72897
|
"ERROR: ",
|
|
72733
72898
|
error
|
|
72734
72899
|
] }),
|
|
@@ -72797,7 +72962,7 @@ function AnyVal({
|
|
|
72797
72962
|
initOnSubmit,
|
|
72798
72963
|
top
|
|
72799
72964
|
}) {
|
|
72800
|
-
if (
|
|
72965
|
+
if (schema.opt) {
|
|
72801
72966
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
72802
72967
|
ValOptional,
|
|
72803
72968
|
{
|
|
@@ -72810,6 +72975,18 @@ function AnyVal({
|
|
|
72810
72975
|
}
|
|
72811
72976
|
);
|
|
72812
72977
|
}
|
|
72978
|
+
if (source === null) {
|
|
72979
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
72980
|
+
ValDefaultOf,
|
|
72981
|
+
{
|
|
72982
|
+
source,
|
|
72983
|
+
schema,
|
|
72984
|
+
path,
|
|
72985
|
+
setSelectedPath,
|
|
72986
|
+
initOnSubmit
|
|
72987
|
+
}
|
|
72988
|
+
);
|
|
72989
|
+
}
|
|
72813
72990
|
if (schema.type === "object") {
|
|
72814
72991
|
if (typeof source !== "object" || isJsonArray(source)) {
|
|
72815
72992
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
@@ -72835,15 +73012,18 @@ function AnyVal({
|
|
|
72835
73012
|
typeof source
|
|
72836
73013
|
] });
|
|
72837
73014
|
}
|
|
72838
|
-
return /* @__PURE__ */ jsxRuntime.
|
|
72839
|
-
|
|
72840
|
-
|
|
72841
|
-
|
|
72842
|
-
|
|
72843
|
-
|
|
72844
|
-
|
|
72845
|
-
|
|
72846
|
-
|
|
73015
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
73016
|
+
field ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-left", children: field }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "truncate max-w-[300px]", title: path, dir: "rtl", children: /* @__PURE__ */ jsxRuntime.jsx(Path, { children: path }) }),
|
|
73017
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
73018
|
+
ValList,
|
|
73019
|
+
{
|
|
73020
|
+
source,
|
|
73021
|
+
path,
|
|
73022
|
+
schema,
|
|
73023
|
+
setSelectedPath
|
|
73024
|
+
}
|
|
73025
|
+
)
|
|
73026
|
+
] });
|
|
72847
73027
|
} else if (schema.type === "record") {
|
|
72848
73028
|
if (typeof source !== "object") {
|
|
72849
73029
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
@@ -72859,18 +73039,39 @@ function AnyVal({
|
|
|
72859
73039
|
schema.type
|
|
72860
73040
|
] });
|
|
72861
73041
|
}
|
|
72862
|
-
return /* @__PURE__ */ jsxRuntime.
|
|
72863
|
-
|
|
72864
|
-
|
|
72865
|
-
|
|
72866
|
-
|
|
72867
|
-
|
|
72868
|
-
|
|
72869
|
-
|
|
72870
|
-
|
|
73042
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
73043
|
+
field ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-left", children: field }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "truncate max-w-[300px]", title: path, dir: "rtl", children: /* @__PURE__ */ jsxRuntime.jsx(Path, { children: path }) }),
|
|
73044
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
73045
|
+
ValRecord,
|
|
73046
|
+
{
|
|
73047
|
+
source,
|
|
73048
|
+
path,
|
|
73049
|
+
schema,
|
|
73050
|
+
setSelectedPath
|
|
73051
|
+
}
|
|
73052
|
+
)
|
|
73053
|
+
] });
|
|
73054
|
+
} else if ((schema == null ? void 0 : schema.type) === "union") {
|
|
73055
|
+
if (schema.key && typeof source === "object" && !isJsonArray(source)) {
|
|
73056
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
73057
|
+
ValTaggedUnion,
|
|
73058
|
+
{
|
|
73059
|
+
field,
|
|
73060
|
+
tag: schema.key,
|
|
73061
|
+
source,
|
|
73062
|
+
path,
|
|
73063
|
+
schema,
|
|
73064
|
+
initOnSubmit,
|
|
73065
|
+
setSelectedPath,
|
|
73066
|
+
top
|
|
73067
|
+
}
|
|
73068
|
+
);
|
|
73069
|
+
}
|
|
73070
|
+
} else if ((schema == null ? void 0 : schema.type) === "literal") {
|
|
73071
|
+
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, {});
|
|
72871
73072
|
}
|
|
72872
73073
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "py-2 gap-y-4", children: [
|
|
72873
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-left", children: field
|
|
73074
|
+
field ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-left", children: field }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "truncate max-w-[300px]", title: path, dir: "rtl", children: /* @__PURE__ */ jsxRuntime.jsx(Path, { children: path }) }),
|
|
72874
73075
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
72875
73076
|
ValFormField,
|
|
72876
73077
|
{
|
|
@@ -72883,6 +73084,110 @@ function AnyVal({
|
|
|
72883
73084
|
)
|
|
72884
73085
|
] });
|
|
72885
73086
|
}
|
|
73087
|
+
function ValTaggedUnion({
|
|
73088
|
+
tag,
|
|
73089
|
+
field,
|
|
73090
|
+
path,
|
|
73091
|
+
source,
|
|
73092
|
+
schema,
|
|
73093
|
+
setSelectedPath,
|
|
73094
|
+
initOnSubmit,
|
|
73095
|
+
top
|
|
73096
|
+
}) {
|
|
73097
|
+
const [currentKey, setCurrentKey] = React$3.useState(null);
|
|
73098
|
+
const [current, setCurrent] = React$3.useState(null);
|
|
73099
|
+
const keys = schema.items.flatMap((item) => {
|
|
73100
|
+
if (item.type === "object" && item.items[tag]) {
|
|
73101
|
+
const maybeLiteral = item.items[tag];
|
|
73102
|
+
if (maybeLiteral.type === "literal") {
|
|
73103
|
+
return [maybeLiteral.value];
|
|
73104
|
+
}
|
|
73105
|
+
}
|
|
73106
|
+
return [];
|
|
73107
|
+
});
|
|
73108
|
+
React$3.useEffect(() => {
|
|
73109
|
+
if (!currentKey) {
|
|
73110
|
+
const maybeCurrentKey = source == null ? void 0 : source[tag];
|
|
73111
|
+
if (maybeCurrentKey && typeof maybeCurrentKey === "string") {
|
|
73112
|
+
setCurrentKey(maybeCurrentKey);
|
|
73113
|
+
}
|
|
73114
|
+
} else {
|
|
73115
|
+
const sourceKey = source[tag];
|
|
73116
|
+
const unionSchema = schema.items.find((item) => {
|
|
73117
|
+
if (item.type === "object" && item.items[tag]) {
|
|
73118
|
+
const maybeLiteral = item.items[tag];
|
|
73119
|
+
if (maybeLiteral.type === "literal") {
|
|
73120
|
+
return maybeLiteral.value === currentKey;
|
|
73121
|
+
}
|
|
73122
|
+
return false;
|
|
73123
|
+
}
|
|
73124
|
+
});
|
|
73125
|
+
if (sourceKey && typeof sourceKey === "string" && unionSchema) {
|
|
73126
|
+
setCurrent({ source, schema: unionSchema });
|
|
73127
|
+
} else if (unionSchema) {
|
|
73128
|
+
setCurrent({ schema: unionSchema });
|
|
73129
|
+
} else {
|
|
73130
|
+
console.error(
|
|
73131
|
+
"Could not find source or schema of key",
|
|
73132
|
+
currentKey,
|
|
73133
|
+
source,
|
|
73134
|
+
schema
|
|
73135
|
+
);
|
|
73136
|
+
setCurrent(null);
|
|
73137
|
+
}
|
|
73138
|
+
}
|
|
73139
|
+
}, [currentKey, source, tag, schema, keys]);
|
|
73140
|
+
if (keys.length !== schema.items.length) {
|
|
73141
|
+
console.warn("Not all items have tag:", tag);
|
|
73142
|
+
}
|
|
73143
|
+
const loading = false;
|
|
73144
|
+
const onSubmit = initOnSubmit(path);
|
|
73145
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
73146
|
+
FieldContainer,
|
|
73147
|
+
{
|
|
73148
|
+
className: classNames("flex flex-col gap-y-4", {
|
|
73149
|
+
"border-l-2 border-border pl-6": !top
|
|
73150
|
+
}),
|
|
73151
|
+
children: [
|
|
73152
|
+
field ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-left", children: field }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "truncate max-w-[300px]", title: path, dir: "rtl", children: /* @__PURE__ */ jsxRuntime.jsx(Path, { children: path }) }),
|
|
73153
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
73154
|
+
Select,
|
|
73155
|
+
{
|
|
73156
|
+
value: currentKey ?? void 0,
|
|
73157
|
+
disabled: loading,
|
|
73158
|
+
onValueChange: (key) => {
|
|
73159
|
+
setCurrentKey(key);
|
|
73160
|
+
},
|
|
73161
|
+
children: [
|
|
73162
|
+
/* @__PURE__ */ jsxRuntime.jsx(SelectTrigger, { children: /* @__PURE__ */ jsxRuntime.jsx(SelectValue, { placeholder: "Select type" }) }),
|
|
73163
|
+
/* @__PURE__ */ jsxRuntime.jsx(SelectContent, { children: keys.map((tag2) => /* @__PURE__ */ jsxRuntime.jsx(SelectItem, { value: tag2.toString(), children: tag2.toString() }, tag2)) })
|
|
73164
|
+
]
|
|
73165
|
+
}
|
|
73166
|
+
),
|
|
73167
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
73168
|
+
SubmitButton,
|
|
73169
|
+
{
|
|
73170
|
+
loading,
|
|
73171
|
+
enabled: false,
|
|
73172
|
+
onClick: () => onSubmit(async () => [])
|
|
73173
|
+
}
|
|
73174
|
+
),
|
|
73175
|
+
current && /* @__PURE__ */ jsxRuntime.jsx(
|
|
73176
|
+
AnyVal,
|
|
73177
|
+
{
|
|
73178
|
+
path,
|
|
73179
|
+
source: current.source ?? null,
|
|
73180
|
+
schema: current.schema,
|
|
73181
|
+
setSelectedPath,
|
|
73182
|
+
initOnSubmit,
|
|
73183
|
+
top
|
|
73184
|
+
}
|
|
73185
|
+
)
|
|
73186
|
+
]
|
|
73187
|
+
},
|
|
73188
|
+
path
|
|
73189
|
+
);
|
|
73190
|
+
}
|
|
72886
73191
|
function ValObject({
|
|
72887
73192
|
path,
|
|
72888
73193
|
source,
|
|
@@ -72894,7 +73199,7 @@ function ValObject({
|
|
|
72894
73199
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
72895
73200
|
"div",
|
|
72896
73201
|
{
|
|
72897
|
-
className: classNames("flex flex-col gap-y-
|
|
73202
|
+
className: classNames("flex flex-col gap-y-1", {
|
|
72898
73203
|
"border-l-2 border-border pl-6": !top
|
|
72899
73204
|
}),
|
|
72900
73205
|
children: Object.entries(schema.items).map(([key, property]) => {
|
|
@@ -72903,7 +73208,7 @@ function ValObject({
|
|
|
72903
73208
|
AnyVal,
|
|
72904
73209
|
{
|
|
72905
73210
|
path: subPath,
|
|
72906
|
-
source: source[key],
|
|
73211
|
+
source: (source == null ? void 0 : source[key]) ?? null,
|
|
72907
73212
|
schema: property,
|
|
72908
73213
|
setSelectedPath,
|
|
72909
73214
|
field: key,
|
|
@@ -72987,7 +73292,7 @@ function ValList({
|
|
|
72987
73292
|
setSelectedPath
|
|
72988
73293
|
}) {
|
|
72989
73294
|
const navigate = useNavigate();
|
|
72990
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-col gap-4 p-2", children: source.map((item, index2) => {
|
|
73295
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-col gap-4 p-2 pb-8", children: source.map((item, index2) => {
|
|
72991
73296
|
const subPath = createValPathOfItem(path, index2);
|
|
72992
73297
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
72993
73298
|
"button",
|
|
@@ -73226,9 +73531,10 @@ function ValOptional({
|
|
|
73226
73531
|
field
|
|
73227
73532
|
}) {
|
|
73228
73533
|
const [enable, setEnable] = React$3.useState(source !== null);
|
|
73229
|
-
|
|
73230
|
-
|
|
73231
|
-
|
|
73534
|
+
const { editMode } = useValOverlayContext();
|
|
73535
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-y-2", children: [
|
|
73536
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-start gap-x-4", children: [
|
|
73537
|
+
editMode === "full" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
73232
73538
|
Switch,
|
|
73233
73539
|
{
|
|
73234
73540
|
checked: enable,
|
|
@@ -73237,16 +73543,8 @@ function ValOptional({
|
|
|
73237
73543
|
}
|
|
73238
73544
|
}
|
|
73239
73545
|
),
|
|
73240
|
-
/* @__PURE__ */ jsxRuntime.jsx("
|
|
73241
|
-
] })
|
|
73242
|
-
Switch,
|
|
73243
|
-
{
|
|
73244
|
-
checked: enable,
|
|
73245
|
-
onClick: () => {
|
|
73246
|
-
setEnable((prev) => !prev);
|
|
73247
|
-
}
|
|
73248
|
-
}
|
|
73249
|
-
),
|
|
73546
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "truncate max-w-[300px]", title: path, dir: "rtl", children: field ? field : /* @__PURE__ */ jsxRuntime.jsx(Path, { children: path }) })
|
|
73547
|
+
] }),
|
|
73250
73548
|
enable && /* @__PURE__ */ jsxRuntime.jsx(
|
|
73251
73549
|
ValDefaultOf,
|
|
73252
73550
|
{
|
|
@@ -73315,61 +73613,62 @@ function ValDefaultOf({
|
|
|
73315
73613
|
function isJsonArray(source) {
|
|
73316
73614
|
return Array.isArray(source);
|
|
73317
73615
|
}
|
|
73318
|
-
function
|
|
73319
|
-
const
|
|
73616
|
+
function dirPaths(paths) {
|
|
73617
|
+
const res = {};
|
|
73320
73618
|
paths.forEach((path) => {
|
|
73321
|
-
const
|
|
73322
|
-
|
|
73323
|
-
|
|
73324
|
-
|
|
73325
|
-
current[part] = {};
|
|
73619
|
+
const allParts = path.split("/").filter((part) => part !== "");
|
|
73620
|
+
if (allParts.length === 1) {
|
|
73621
|
+
if (!res[""]) {
|
|
73622
|
+
res[""] = [];
|
|
73326
73623
|
}
|
|
73327
|
-
|
|
73328
|
-
})
|
|
73624
|
+
res[""].push(allParts[0]);
|
|
73625
|
+
} else if (allParts.length > 1) {
|
|
73626
|
+
const dir = allParts.slice(0, allParts.length - 1).join("/");
|
|
73627
|
+
const file = allParts.slice(-1)[0];
|
|
73628
|
+
if (!res[dir]) {
|
|
73629
|
+
res[dir] = [];
|
|
73630
|
+
}
|
|
73631
|
+
res[dir].push(file);
|
|
73632
|
+
}
|
|
73329
73633
|
});
|
|
73330
|
-
return
|
|
73634
|
+
return res;
|
|
73331
73635
|
}
|
|
73332
73636
|
function PathTree({
|
|
73637
|
+
selectedPath,
|
|
73333
73638
|
paths,
|
|
73334
73639
|
setSelectedModuleId
|
|
73335
73640
|
}) {
|
|
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
|
-
] });
|
|
73641
|
+
const tree = dirPaths(paths);
|
|
73642
|
+
const selectedModuleId = selectedPath && Internal.splitModuleIdAndModulePath(selectedPath)[0];
|
|
73643
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-col w-full py-2 text-xs", children: Object.entries(tree).map(([dir, files]) => {
|
|
73644
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "px-4 py-2", children: [
|
|
73645
|
+
dir && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "font-bold truncate max-w-[300px]", title: dir, children: /* @__PURE__ */ jsxRuntime.jsx(Path, { children: dir }) }),
|
|
73646
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
73647
|
+
"div",
|
|
73648
|
+
{
|
|
73649
|
+
className: classNames({
|
|
73650
|
+
"flex flex-col py-2 justify-start items-start": !!dir
|
|
73651
|
+
}),
|
|
73652
|
+
children: files.map((file) => {
|
|
73653
|
+
const moduleId = `/${dir}/${file}`;
|
|
73654
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
73655
|
+
"button",
|
|
73656
|
+
{
|
|
73657
|
+
className: classNames("block px-2 py-1 rounded-full", {
|
|
73658
|
+
"bg-accent text-accent-foreground": selectedModuleId === moduleId
|
|
73659
|
+
}),
|
|
73660
|
+
onClick: () => {
|
|
73661
|
+
setSelectedModuleId(moduleId);
|
|
73662
|
+
},
|
|
73663
|
+
children: file
|
|
73664
|
+
},
|
|
73665
|
+
moduleId
|
|
73666
|
+
);
|
|
73667
|
+
})
|
|
73668
|
+
}
|
|
73669
|
+
)
|
|
73670
|
+
] }, `/${dir}`);
|
|
73671
|
+
}) });
|
|
73373
73672
|
}
|
|
73374
73673
|
const theme = {
|
|
73375
73674
|
tags: {
|
|
@@ -73561,76 +73860,91 @@ function ValOverlay({
|
|
|
73561
73860
|
windowSize,
|
|
73562
73861
|
setWindowSize
|
|
73563
73862
|
},
|
|
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",
|
|
73863
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
73864
|
+
"div",
|
|
73865
|
+
{
|
|
73866
|
+
"data-mode": theme2,
|
|
73867
|
+
className: "font-serif antialiased",
|
|
73868
|
+
style: {
|
|
73869
|
+
position: "fixed",
|
|
73870
|
+
top: 0,
|
|
73871
|
+
left: 0,
|
|
73872
|
+
zIndex: 8999
|
|
73873
|
+
// 1 less than the NextJS error z-index: 9000
|
|
73874
|
+
},
|
|
73875
|
+
children: [
|
|
73876
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "fixed -translate-y-1/2 right-4 top-1/2 z-overlay", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
73877
|
+
ValMenu,
|
|
73593
73878
|
{
|
|
73594
|
-
|
|
73595
|
-
|
|
73596
|
-
|
|
73879
|
+
direction: "vertical",
|
|
73880
|
+
api,
|
|
73881
|
+
patches,
|
|
73882
|
+
onCommit: () => {
|
|
73883
|
+
setPatchResetId((patchResetId) => patchResetId + 1);
|
|
73884
|
+
}
|
|
73885
|
+
}
|
|
73886
|
+
) }),
|
|
73887
|
+
session.status === "success" && session.data.enabled && editMode === "hover" && hoverTarget.path && /* @__PURE__ */ jsxRuntime.jsx(
|
|
73888
|
+
ValHover,
|
|
73889
|
+
{
|
|
73890
|
+
hoverTarget,
|
|
73891
|
+
setHoverTarget,
|
|
73892
|
+
setEditMode,
|
|
73893
|
+
setWindowTarget
|
|
73894
|
+
}
|
|
73895
|
+
),
|
|
73896
|
+
editMode === "window" && windowTarget && /* @__PURE__ */ jsxRuntime.jsx(
|
|
73897
|
+
ValWindow,
|
|
73898
|
+
{
|
|
73899
|
+
onClose: () => {
|
|
73900
|
+
setWindowTarget(null);
|
|
73901
|
+
setEditMode("hover");
|
|
73597
73902
|
},
|
|
73598
|
-
children:
|
|
73599
|
-
|
|
73600
|
-
|
|
73601
|
-
|
|
73602
|
-
|
|
73603
|
-
|
|
73604
|
-
|
|
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
|
|
73903
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
73904
|
+
"div",
|
|
73905
|
+
{
|
|
73906
|
+
className: "p-4",
|
|
73907
|
+
style: {
|
|
73908
|
+
maxHeight: windowSize == null ? void 0 : windowSize.innerHeight,
|
|
73909
|
+
maxWidth: windowSize == null ? void 0 : windowSize.width
|
|
73625
73910
|
},
|
|
73626
|
-
path
|
|
73627
|
-
|
|
73628
|
-
|
|
73911
|
+
children: Object.entries(formData).map(([path, data]) => {
|
|
73912
|
+
if (data.status !== "success") {
|
|
73913
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
73914
|
+
path,
|
|
73915
|
+
": ",
|
|
73916
|
+
data.status
|
|
73917
|
+
] }, path);
|
|
73918
|
+
}
|
|
73919
|
+
const { source, schema } = data.data;
|
|
73920
|
+
if (!source || !schema) {
|
|
73921
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
73922
|
+
"Module: ",
|
|
73923
|
+
path,
|
|
73924
|
+
" is missing source or schema"
|
|
73925
|
+
] });
|
|
73926
|
+
}
|
|
73927
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
73928
|
+
AnyVal,
|
|
73929
|
+
{
|
|
73930
|
+
initOnSubmit,
|
|
73931
|
+
path,
|
|
73932
|
+
schema,
|
|
73933
|
+
source,
|
|
73934
|
+
setSelectedPath: () => {
|
|
73935
|
+
},
|
|
73936
|
+
top: true
|
|
73937
|
+
},
|
|
73938
|
+
path
|
|
73939
|
+
);
|
|
73940
|
+
})
|
|
73941
|
+
}
|
|
73942
|
+
)
|
|
73629
73943
|
}
|
|
73630
73944
|
)
|
|
73631
|
-
|
|
73632
|
-
|
|
73633
|
-
|
|
73945
|
+
]
|
|
73946
|
+
}
|
|
73947
|
+
)
|
|
73634
73948
|
}
|
|
73635
73949
|
);
|
|
73636
73950
|
}
|
|
@@ -73697,7 +74011,7 @@ function ValHover({
|
|
|
73697
74011
|
"div",
|
|
73698
74012
|
{
|
|
73699
74013
|
id: "val-hover",
|
|
73700
|
-
className: "fixed border-2 cursor-pointer z-overlay-hover border-
|
|
74014
|
+
className: "fixed border-2 cursor-pointer z-overlay-hover border-accent",
|
|
73701
74015
|
style: {
|
|
73702
74016
|
top: rect == null ? void 0 : rect.top,
|
|
73703
74017
|
left: rect == null ? void 0 : rect.left,
|
|
@@ -73718,7 +74032,7 @@ function ValHover({
|
|
|
73718
74032
|
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-end w-full text-xs", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
73719
74033
|
"div",
|
|
73720
74034
|
{
|
|
73721
|
-
className: "flex items-center justify-center px-3 py-1 text-
|
|
74035
|
+
className: "flex items-center justify-center px-3 py-1 border-b-2 border-l-2 text-accent-foreground bg-accent border-accent",
|
|
73722
74036
|
style: {
|
|
73723
74037
|
maxHeight: (rect == null ? void 0 : rect.height) && rect.height - 4,
|
|
73724
74038
|
fontSize: (rect == null ? void 0 : rect.height) && rect.height <= 16 ? rect.height - 4 : void 0
|
|
@@ -73762,9 +74076,19 @@ function useHoverTarget(editMode) {
|
|
|
73762
74076
|
setTargetRect(targetElement.getBoundingClientRect());
|
|
73763
74077
|
}
|
|
73764
74078
|
};
|
|
74079
|
+
const observer = new ResizeObserver(() => {
|
|
74080
|
+
if (targetElement) {
|
|
74081
|
+
setTargetRect(targetElement.getBoundingClientRect());
|
|
74082
|
+
}
|
|
74083
|
+
});
|
|
74084
|
+
const valUIElement = document.getElementById("val-ui");
|
|
74085
|
+
if (targetElement && valUIElement) {
|
|
74086
|
+
observer.observe(valUIElement);
|
|
74087
|
+
}
|
|
73765
74088
|
document.addEventListener("scroll", scrollListener, { passive: true });
|
|
73766
74089
|
return () => {
|
|
73767
74090
|
document.removeEventListener("scroll", scrollListener);
|
|
74091
|
+
observer.disconnect();
|
|
73768
74092
|
};
|
|
73769
74093
|
}, [targetElement]);
|
|
73770
74094
|
return [
|
|
@@ -73811,7 +74135,7 @@ function useInitEditMode() {
|
|
|
73811
74135
|
}, []);
|
|
73812
74136
|
return [editMode, setEditMode];
|
|
73813
74137
|
}
|
|
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";
|
|
74138
|
+
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.max-h-\\[500px\\] {\n max-height: 500px;\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-\\[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.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.pb-8 {\n padding-bottom: 2rem;\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
74139
|
function Style() {
|
|
73816
74140
|
return /* @__PURE__ */ jsxRuntime.jsx("style", { children: styleCss });
|
|
73817
74141
|
}
|