@valbuild/ui 0.45.0 → 0.46.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/valbuild-ui.cjs.js +771 -477
- package/dist/valbuild-ui.esm.js +771 -477
- package/package.json +3 -3
- package/server/.tmp/assets/index-gPuJOraZ.css +1 -0
- package/server/.tmp/assets/index-k8iMLNYr.js +201 -0
- package/server/.tmp/index.html +2 -2
- package/server/dist/valbuild-ui-main.cjs.js +761 -467
- package/server/dist/valbuild-ui-main.esm.js +761 -467
- package/server/dist/valbuild-ui-server.cjs.js +1 -1
- package/server/dist/valbuild-ui-server.esm.js +1 -1
- package/server/.tmp/assets/index-C9FCHcaG.js +0 -201
- package/server/.tmp/assets/index-Ol9liWWf.css +0 -1
package/dist/valbuild-ui.esm.js
CHANGED
|
@@ -50831,7 +50831,7 @@ var Schema = /* @__PURE__ */ function() {
|
|
|
50831
50831
|
return Schema2;
|
|
50832
50832
|
}();
|
|
50833
50833
|
var GetSchema = Symbol("GetSchema");
|
|
50834
|
-
var Path = Symbol("Path");
|
|
50834
|
+
var Path$1 = Symbol("Path");
|
|
50835
50835
|
var GetSource = Symbol("GetSource");
|
|
50836
50836
|
function getSchema(selector) {
|
|
50837
50837
|
return selector[GetSchema];
|
|
@@ -50880,10 +50880,10 @@ function isSerializedVal(val) {
|
|
|
50880
50880
|
return _typeof(val) === "object" && val !== null && val !== void 0 && ("val" in val || "valPath" in val);
|
|
50881
50881
|
}
|
|
50882
50882
|
function isVal(val) {
|
|
50883
|
-
return _typeof(val) === "object" && val !== null && val !== void 0 && Path in val && "val" in val;
|
|
50883
|
+
return _typeof(val) === "object" && val !== null && val !== void 0 && Path$1 in val && "val" in val;
|
|
50884
50884
|
}
|
|
50885
50885
|
function getValPath(valOrSelector) {
|
|
50886
|
-
return valOrSelector[Path];
|
|
50886
|
+
return valOrSelector[Path$1];
|
|
50887
50887
|
}
|
|
50888
50888
|
function hasOwn$1(obj, prop) {
|
|
50889
50889
|
return Object.prototype.hasOwnProperty.call(obj, prop);
|
|
@@ -50895,7 +50895,7 @@ function _andThen(f, source, path) {
|
|
|
50895
50895
|
return newSelectorProxy(source, path);
|
|
50896
50896
|
}
|
|
50897
50897
|
function isSelector(source) {
|
|
50898
|
-
return _typeof(source) === "object" && source !== null && (GetSource in source || Path in source);
|
|
50898
|
+
return _typeof(source) === "object" && source !== null && (GetSource in source || Path$1 in source);
|
|
50899
50899
|
}
|
|
50900
50900
|
function newSelectorProxy(source, path, moduleSchema) {
|
|
50901
50901
|
if (_typeof(source) === "object") {
|
|
@@ -50924,7 +50924,7 @@ function newSelectorProxy(source, path, moduleSchema) {
|
|
|
50924
50924
|
if (prop === GetSource) {
|
|
50925
50925
|
return true;
|
|
50926
50926
|
}
|
|
50927
|
-
if (prop === Path) {
|
|
50927
|
+
if (prop === Path$1) {
|
|
50928
50928
|
return true;
|
|
50929
50929
|
}
|
|
50930
50930
|
if (prop === "andThen") {
|
|
@@ -50939,7 +50939,7 @@ function newSelectorProxy(source, path, moduleSchema) {
|
|
|
50939
50939
|
if (prop === GetSource) {
|
|
50940
50940
|
return source;
|
|
50941
50941
|
}
|
|
50942
|
-
if (prop === Path) {
|
|
50942
|
+
if (prop === Path$1) {
|
|
50943
50943
|
return path;
|
|
50944
50944
|
}
|
|
50945
50945
|
if (prop === GetSchema) {
|
|
@@ -51006,7 +51006,7 @@ function newSelectorProxy(source, path, moduleSchema) {
|
|
|
51006
51006
|
andThen: function andThen(f) {
|
|
51007
51007
|
return _andThen(f, source === void 0 ? null : source, path);
|
|
51008
51008
|
}
|
|
51009
|
-
}, GetSource, source === void 0 ? null : source), Path, path), GetSchema, moduleSchema);
|
|
51009
|
+
}, GetSource, source === void 0 ? null : source), Path$1, path), GetSchema, moduleSchema);
|
|
51010
51010
|
}
|
|
51011
51011
|
}
|
|
51012
51012
|
function createValPathOfItem$1(arrayPath, prop) {
|
|
@@ -51016,7 +51016,7 @@ function createValPathOfItem$1(arrayPath, prop) {
|
|
|
51016
51016
|
return arrayPath && "".concat(arrayPath, ".").concat(JSON.stringify(prop));
|
|
51017
51017
|
}
|
|
51018
51018
|
function unValify(valueOrSelector) {
|
|
51019
|
-
if (_typeof(valueOrSelector) === "object" && (GetSource in valueOrSelector || Path in valueOrSelector)) {
|
|
51019
|
+
if (_typeof(valueOrSelector) === "object" && (GetSource in valueOrSelector || Path$1 in valueOrSelector)) {
|
|
51020
51020
|
var selectorValue = valueOrSelector[GetSource];
|
|
51021
51021
|
return selectorValue;
|
|
51022
51022
|
}
|
|
@@ -51827,6 +51827,96 @@ function parsePath$1(input) {
|
|
|
51827
51827
|
}
|
|
51828
51828
|
return result2;
|
|
51829
51829
|
}
|
|
51830
|
+
var StringSchema = /* @__PURE__ */ function(_Schema) {
|
|
51831
|
+
_inherits(StringSchema2, _Schema);
|
|
51832
|
+
var _super = _createSuper(StringSchema2);
|
|
51833
|
+
function StringSchema2(options) {
|
|
51834
|
+
var _this;
|
|
51835
|
+
var opt = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;
|
|
51836
|
+
var isRaw = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;
|
|
51837
|
+
_classCallCheck(this, StringSchema2);
|
|
51838
|
+
_this = _super.call(this);
|
|
51839
|
+
_this.options = options;
|
|
51840
|
+
_this.opt = opt;
|
|
51841
|
+
_this.isRaw = isRaw;
|
|
51842
|
+
return _this;
|
|
51843
|
+
}
|
|
51844
|
+
_createClass(StringSchema2, [{
|
|
51845
|
+
key: "validate",
|
|
51846
|
+
value: function validate(path, src) {
|
|
51847
|
+
var _this$options, _this$options2, _this$options3;
|
|
51848
|
+
if (this.opt && (src === null || src === void 0)) {
|
|
51849
|
+
return false;
|
|
51850
|
+
}
|
|
51851
|
+
if (typeof src !== "string") {
|
|
51852
|
+
return _defineProperty$5({}, path, [{
|
|
51853
|
+
message: "Expected 'string', got '".concat(_typeof(src), "'"),
|
|
51854
|
+
value: src
|
|
51855
|
+
}]);
|
|
51856
|
+
}
|
|
51857
|
+
var errors = [];
|
|
51858
|
+
if ((_this$options = this.options) !== null && _this$options !== void 0 && _this$options.maxLength && src.length > this.options.maxLength) {
|
|
51859
|
+
errors.push({
|
|
51860
|
+
message: "Expected string to be at most ".concat(this.options.maxLength, " characters long, got ").concat(src.length),
|
|
51861
|
+
value: src
|
|
51862
|
+
});
|
|
51863
|
+
}
|
|
51864
|
+
if ((_this$options2 = this.options) !== null && _this$options2 !== void 0 && _this$options2.minLength && src.length < this.options.minLength) {
|
|
51865
|
+
errors.push({
|
|
51866
|
+
message: "Expected string to be at least ".concat(this.options.minLength, " characters long, got ").concat(src.length),
|
|
51867
|
+
value: src
|
|
51868
|
+
});
|
|
51869
|
+
}
|
|
51870
|
+
if ((_this$options3 = this.options) !== null && _this$options3 !== void 0 && _this$options3.regexp && !this.options.regexp.test(src)) {
|
|
51871
|
+
errors.push({
|
|
51872
|
+
message: "Expected string to match reg exp: ".concat(this.options.regexp.toString(), ", got '").concat(src, "'"),
|
|
51873
|
+
value: src
|
|
51874
|
+
});
|
|
51875
|
+
}
|
|
51876
|
+
if (errors.length > 0) {
|
|
51877
|
+
return _defineProperty$5({}, path, errors);
|
|
51878
|
+
}
|
|
51879
|
+
return false;
|
|
51880
|
+
}
|
|
51881
|
+
}, {
|
|
51882
|
+
key: "assert",
|
|
51883
|
+
value: function assert(src) {
|
|
51884
|
+
if (this.opt && (src === null || src === void 0)) {
|
|
51885
|
+
return true;
|
|
51886
|
+
}
|
|
51887
|
+
return typeof src === "string";
|
|
51888
|
+
}
|
|
51889
|
+
}, {
|
|
51890
|
+
key: "optional",
|
|
51891
|
+
value: function optional() {
|
|
51892
|
+
return new StringSchema2(this.options, true, this.isRaw);
|
|
51893
|
+
}
|
|
51894
|
+
}, {
|
|
51895
|
+
key: "raw",
|
|
51896
|
+
value: function raw() {
|
|
51897
|
+
return new StringSchema2(this.options, this.opt, true);
|
|
51898
|
+
}
|
|
51899
|
+
}, {
|
|
51900
|
+
key: "serialize",
|
|
51901
|
+
value: function serialize() {
|
|
51902
|
+
var _this$options4, _this$options5, _this$options6;
|
|
51903
|
+
return {
|
|
51904
|
+
type: "string",
|
|
51905
|
+
options: {
|
|
51906
|
+
maxLength: (_this$options4 = this.options) === null || _this$options4 === void 0 ? void 0 : _this$options4.maxLength,
|
|
51907
|
+
minLength: (_this$options5 = this.options) === null || _this$options5 === void 0 ? void 0 : _this$options5.minLength,
|
|
51908
|
+
regexp: ((_this$options6 = this.options) === null || _this$options6 === void 0 ? void 0 : _this$options6.regexp) && {
|
|
51909
|
+
source: this.options.regexp.source,
|
|
51910
|
+
flags: this.options.regexp.flags
|
|
51911
|
+
}
|
|
51912
|
+
},
|
|
51913
|
+
opt: this.opt,
|
|
51914
|
+
raw: this.isRaw
|
|
51915
|
+
};
|
|
51916
|
+
}
|
|
51917
|
+
}]);
|
|
51918
|
+
return StringSchema2;
|
|
51919
|
+
}(Schema);
|
|
51830
51920
|
function getVal(selector) {
|
|
51831
51921
|
return newValProxy(serializedValOfSelectorSource(selector));
|
|
51832
51922
|
}
|
|
@@ -51849,7 +51939,7 @@ function serializedValOfSelectorSource(selector) {
|
|
|
51849
51939
|
var isObject = isObjectOrObjectSelector(child);
|
|
51850
51940
|
if (isArray) {
|
|
51851
51941
|
var array = GetSource in child ? child[GetSource] : child;
|
|
51852
|
-
var valPath = Path in child ? child[Path] : void 0;
|
|
51942
|
+
var valPath = Path$1 in child ? child[Path$1] : void 0;
|
|
51853
51943
|
return {
|
|
51854
51944
|
val: array.map(function(item, i) {
|
|
51855
51945
|
return rec(isSelector(item) ? item : newSelectorProxy(item, createValPathOfItem$1(valPath, i)));
|
|
@@ -51858,7 +51948,7 @@ function serializedValOfSelectorSource(selector) {
|
|
|
51858
51948
|
};
|
|
51859
51949
|
} else if (isObject) {
|
|
51860
51950
|
var obj = GetSource in child ? child[GetSource] : child;
|
|
51861
|
-
var _valPath = Path in child ? child[Path] : void 0;
|
|
51951
|
+
var _valPath = Path$1 in child ? child[Path$1] : void 0;
|
|
51862
51952
|
return {
|
|
51863
51953
|
val: obj !== null && Object.fromEntries(Object.entries(obj).map(function(_ref) {
|
|
51864
51954
|
var _ref2 = _slicedToArray$1(_ref, 2), key = _ref2[0], value = _ref2[1];
|
|
@@ -51869,7 +51959,7 @@ function serializedValOfSelectorSource(selector) {
|
|
|
51869
51959
|
} else if (isSelector(child)) {
|
|
51870
51960
|
return {
|
|
51871
51961
|
val: rec(child[GetSource]),
|
|
51872
|
-
valPath: child[Path]
|
|
51962
|
+
valPath: child[Path$1]
|
|
51873
51963
|
};
|
|
51874
51964
|
} else {
|
|
51875
51965
|
return child;
|
|
@@ -51911,13 +52001,13 @@ function newValProxy(val) {
|
|
|
51911
52001
|
if (prop === "val") {
|
|
51912
52002
|
return true;
|
|
51913
52003
|
}
|
|
51914
|
-
if (prop === Path) {
|
|
52004
|
+
if (prop === Path$1) {
|
|
51915
52005
|
return true;
|
|
51916
52006
|
}
|
|
51917
52007
|
return hasOwn(target, prop);
|
|
51918
52008
|
},
|
|
51919
52009
|
get: function get(target, prop) {
|
|
51920
|
-
if (prop === Path) {
|
|
52010
|
+
if (prop === Path$1) {
|
|
51921
52011
|
return val.valPath;
|
|
51922
52012
|
}
|
|
51923
52013
|
if (prop === "val") {
|
|
@@ -51938,7 +52028,7 @@ function newValProxy(val) {
|
|
|
51938
52028
|
});
|
|
51939
52029
|
}
|
|
51940
52030
|
default:
|
|
51941
|
-
return _defineProperty$5(_defineProperty$5({}, Path, val.valPath), "val", val.val);
|
|
52031
|
+
return _defineProperty$5(_defineProperty$5({}, Path$1, val.valPath), "val", val.val);
|
|
51942
52032
|
}
|
|
51943
52033
|
}
|
|
51944
52034
|
function hasOwn(obj, prop) {
|
|
@@ -56363,7 +56453,7 @@ const Toolbar = ({
|
|
|
56363
56453
|
}
|
|
56364
56454
|
});
|
|
56365
56455
|
}, [activeEditor]);
|
|
56366
|
-
return /* @__PURE__ */ jsxs("div", { className: "sticky top-0 flex flex-col px-4 py-2 border-b bg-background
|
|
56456
|
+
return /* @__PURE__ */ jsxs("div", { className: "sticky top-0 flex flex-col px-4 py-2 border rounded-md rounded-b-none border-input bg-background", children: [
|
|
56367
56457
|
/* @__PURE__ */ jsxs("div", { className: "flex flex-row gap-1", children: [
|
|
56368
56458
|
/* @__PURE__ */ jsx(
|
|
56369
56459
|
Dropdown$1,
|
|
@@ -56492,12 +56582,10 @@ const Toolbar$1 = Toolbar;
|
|
|
56492
56582
|
function onError(error) {
|
|
56493
56583
|
console.error(error);
|
|
56494
56584
|
}
|
|
56495
|
-
const TOOLBAR_HEIGHT = 28;
|
|
56496
56585
|
const RichTextEditor = ({
|
|
56497
56586
|
richtext,
|
|
56498
56587
|
onEditor
|
|
56499
56588
|
}) => {
|
|
56500
|
-
const { windowSize } = useValOverlayContext();
|
|
56501
56589
|
const prePopulatedState = (editor) => {
|
|
56502
56590
|
editor.setEditorState(
|
|
56503
56591
|
editor.parseEditorState({
|
|
@@ -56540,17 +56628,8 @@ const RichTextEditor = ({
|
|
|
56540
56628
|
/* @__PURE__ */ jsx(
|
|
56541
56629
|
LexicalRichTextPlugin_1.RichTextPlugin,
|
|
56542
56630
|
{
|
|
56543
|
-
contentEditable: /* @__PURE__ */ jsx(
|
|
56544
|
-
|
|
56545
|
-
{
|
|
56546
|
-
className: "font-sans border-b text-primary border-highlight",
|
|
56547
|
-
style: {
|
|
56548
|
-
minHeight: (windowSize == null ? void 0 : windowSize.innerHeight) ? (windowSize == null ? void 0 : windowSize.innerHeight) - TOOLBAR_HEIGHT : void 0
|
|
56549
|
-
},
|
|
56550
|
-
children: /* @__PURE__ */ jsx(LexicalContentEditable, { className: "p-4 outline-none bg-fill" })
|
|
56551
|
-
}
|
|
56552
|
-
),
|
|
56553
|
-
placeholder: /* @__PURE__ */ jsx("div", { className: "", children: "Enter some text..." }),
|
|
56631
|
+
contentEditable: /* @__PURE__ */ 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__ */ jsx(LexicalContentEditable, { className: "p-4 outline-none bg-fill" }) }),
|
|
56632
|
+
placeholder: /* @__PURE__ */ jsx("p", { className: "" }),
|
|
56554
56633
|
ErrorBoundary: LexicalErrorBoundary$1
|
|
56555
56634
|
}
|
|
56556
56635
|
),
|
|
@@ -56615,17 +56694,22 @@ const LogIn = createLucideIcon("LogIn", [
|
|
|
56615
56694
|
["polyline", { points: "10 17 15 12 10 7", key: "1ail0h" }],
|
|
56616
56695
|
["line", { x1: "15", x2: "3", y1: "12", y2: "12", key: "v6grx8" }]
|
|
56617
56696
|
]);
|
|
56618
|
-
const
|
|
56619
|
-
["
|
|
56620
|
-
["
|
|
56621
|
-
["
|
|
56622
|
-
["
|
|
56697
|
+
const Maximize2 = createLucideIcon("Maximize2", [
|
|
56698
|
+
["polyline", { points: "15 3 21 3 21 9", key: "mznyad" }],
|
|
56699
|
+
["polyline", { points: "9 21 3 21 3 15", key: "1avn1i" }],
|
|
56700
|
+
["line", { x1: "21", x2: "14", y1: "3", y2: "10", key: "ota7mn" }],
|
|
56701
|
+
["line", { x1: "3", x2: "10", y1: "21", y2: "14", key: "1atl0r" }]
|
|
56623
56702
|
]);
|
|
56624
|
-
const
|
|
56625
|
-
["
|
|
56626
|
-
["
|
|
56627
|
-
["
|
|
56628
|
-
|
|
56703
|
+
const Menu = createLucideIcon("Menu", [
|
|
56704
|
+
["line", { x1: "4", x2: "20", y1: "12", y2: "12", key: "1e0a9i" }],
|
|
56705
|
+
["line", { x1: "4", x2: "20", y1: "6", y2: "6", key: "1owob3" }],
|
|
56706
|
+
["line", { x1: "4", x2: "20", y1: "18", y2: "18", key: "yk5zj1" }]
|
|
56707
|
+
]);
|
|
56708
|
+
const Minimize2 = createLucideIcon("Minimize2", [
|
|
56709
|
+
["polyline", { points: "4 14 10 14 10 20", key: "11kfnr" }],
|
|
56710
|
+
["polyline", { points: "20 10 14 10 14 4", key: "rlmsce" }],
|
|
56711
|
+
["line", { x1: "14", x2: "21", y1: "10", y2: "3", key: "o5lafz" }],
|
|
56712
|
+
["line", { x1: "3", x2: "10", y1: "21", y2: "14", key: "1atl0r" }]
|
|
56629
56713
|
]);
|
|
56630
56714
|
const Moon = createLucideIcon("Moon", [
|
|
56631
56715
|
["path", { d: "M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z", key: "a7tn18" }]
|
|
@@ -56665,20 +56749,35 @@ const PREV_URL_KEY = "valbuild:urlBeforeNavigation";
|
|
|
56665
56749
|
function ValMenu({
|
|
56666
56750
|
api,
|
|
56667
56751
|
patches,
|
|
56752
|
+
direction,
|
|
56668
56753
|
onCommit
|
|
56669
56754
|
}) {
|
|
56670
56755
|
const { theme: theme2, setTheme, editMode, setEditMode, session } = useValOverlayContext();
|
|
56671
56756
|
if (session.status === "success" && session.data.mode === "unauthorized") {
|
|
56672
|
-
return /* @__PURE__ */ jsxs(
|
|
56673
|
-
|
|
56674
|
-
|
|
56675
|
-
|
|
56757
|
+
return /* @__PURE__ */ jsxs(
|
|
56758
|
+
SingleItemMenu,
|
|
56759
|
+
{
|
|
56760
|
+
direction,
|
|
56761
|
+
href: api.getLoginUrl(window.location.href),
|
|
56762
|
+
children: [
|
|
56763
|
+
/* @__PURE__ */ jsx("span", { children: "Login" }),
|
|
56764
|
+
/* @__PURE__ */ jsx(LogIn, { size: 18 })
|
|
56765
|
+
]
|
|
56766
|
+
}
|
|
56767
|
+
);
|
|
56676
56768
|
}
|
|
56677
56769
|
if (session.status === "success" && !session.data.enabled) {
|
|
56678
|
-
return /* @__PURE__ */ jsxs(
|
|
56679
|
-
|
|
56680
|
-
|
|
56681
|
-
|
|
56770
|
+
return /* @__PURE__ */ jsxs(
|
|
56771
|
+
SingleItemMenu,
|
|
56772
|
+
{
|
|
56773
|
+
direction,
|
|
56774
|
+
href: api.getEnableUrl(window.location.href),
|
|
56775
|
+
children: [
|
|
56776
|
+
/* @__PURE__ */ jsx("span", { children: "Enable" }),
|
|
56777
|
+
/* @__PURE__ */ jsx(LogIn, { size: 18 })
|
|
56778
|
+
]
|
|
56779
|
+
}
|
|
56780
|
+
);
|
|
56682
56781
|
}
|
|
56683
56782
|
const [patchCount, setPatchCount] = useState();
|
|
56684
56783
|
useEffect(() => {
|
|
@@ -56688,9 +56787,9 @@ function ValMenu({
|
|
|
56688
56787
|
}
|
|
56689
56788
|
setPatchCount(patchCount2);
|
|
56690
56789
|
}, [patches]);
|
|
56691
|
-
return /* @__PURE__ */ jsxs(MenuContainer, { children: [
|
|
56790
|
+
return /* @__PURE__ */ jsxs(MenuContainer, { direction, children: [
|
|
56692
56791
|
/* @__PURE__ */ jsx(
|
|
56693
|
-
MenuButton,
|
|
56792
|
+
MenuButton$1,
|
|
56694
56793
|
{
|
|
56695
56794
|
active: editMode === "hover",
|
|
56696
56795
|
onClick: () => {
|
|
@@ -56700,7 +56799,7 @@ function ValMenu({
|
|
|
56700
56799
|
}
|
|
56701
56800
|
),
|
|
56702
56801
|
/* @__PURE__ */ jsx(
|
|
56703
|
-
MenuButton,
|
|
56802
|
+
MenuButton$1,
|
|
56704
56803
|
{
|
|
56705
56804
|
onClick: () => {
|
|
56706
56805
|
setTheme(theme2 === "dark" ? "light" : "dark");
|
|
@@ -56712,7 +56811,7 @@ function ValMenu({
|
|
|
56712
56811
|
}
|
|
56713
56812
|
),
|
|
56714
56813
|
/* @__PURE__ */ jsx(
|
|
56715
|
-
MenuButton,
|
|
56814
|
+
MenuButton$1,
|
|
56716
56815
|
{
|
|
56717
56816
|
active: editMode === "full",
|
|
56718
56817
|
onClick: () => {
|
|
@@ -56724,11 +56823,11 @@ function ValMenu({
|
|
|
56724
56823
|
window.location.href = prevUrl || "/";
|
|
56725
56824
|
}
|
|
56726
56825
|
},
|
|
56727
|
-
children: /* @__PURE__ */ jsx("div", { className: "h-[24px] w-[24px] flex justify-center items-center", children: editMode === "full" ? /* @__PURE__ */ jsx(
|
|
56826
|
+
children: /* @__PURE__ */ jsx("div", { className: "h-[24px] w-[24px] flex justify-center items-center", children: editMode === "full" ? /* @__PURE__ */ jsx(Minimize2, { size: 15 }) : /* @__PURE__ */ jsx(Maximize2, { size: 15 }) })
|
|
56728
56827
|
}
|
|
56729
56828
|
),
|
|
56730
56829
|
patchCount !== void 0 && session.status === "success" && session.data.mode === "proxy" && /* @__PURE__ */ jsx(
|
|
56731
|
-
MenuButton,
|
|
56830
|
+
MenuButton$1,
|
|
56732
56831
|
{
|
|
56733
56832
|
onClick: () => {
|
|
56734
56833
|
if (patchCount > 0) {
|
|
@@ -56756,16 +56855,42 @@ function ValMenu({
|
|
|
56756
56855
|
}
|
|
56757
56856
|
function SingleItemMenu({
|
|
56758
56857
|
href,
|
|
56858
|
+
direction,
|
|
56759
56859
|
children
|
|
56760
56860
|
}) {
|
|
56761
|
-
return /* @__PURE__ */ jsx(
|
|
56861
|
+
return /* @__PURE__ */ jsx(
|
|
56862
|
+
"div",
|
|
56863
|
+
{
|
|
56864
|
+
className: classNames(
|
|
56865
|
+
"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",
|
|
56866
|
+
{
|
|
56867
|
+
"flex-col items-start": direction === "vertical",
|
|
56868
|
+
"flex-row items-center": direction === "horizontal"
|
|
56869
|
+
}
|
|
56870
|
+
),
|
|
56871
|
+
children: /* @__PURE__ */ jsx("a", { className, href, children: /* @__PURE__ */ jsx("div", { className: "flex items-center justify-center px-2 gap-y-2", children }) })
|
|
56872
|
+
}
|
|
56873
|
+
);
|
|
56762
56874
|
}
|
|
56763
56875
|
function MenuContainer({
|
|
56764
|
-
children
|
|
56876
|
+
children,
|
|
56877
|
+
direction
|
|
56765
56878
|
}) {
|
|
56766
|
-
return /* @__PURE__ */ jsx(
|
|
56879
|
+
return /* @__PURE__ */ jsx(
|
|
56880
|
+
"div",
|
|
56881
|
+
{
|
|
56882
|
+
className: classNames(
|
|
56883
|
+
"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",
|
|
56884
|
+
{
|
|
56885
|
+
"flex-col items-start": direction === "vertical",
|
|
56886
|
+
"flex-row items-center": direction === "horizontal"
|
|
56887
|
+
}
|
|
56888
|
+
),
|
|
56889
|
+
children
|
|
56890
|
+
}
|
|
56891
|
+
);
|
|
56767
56892
|
}
|
|
56768
|
-
function MenuButton({
|
|
56893
|
+
function MenuButton$1({
|
|
56769
56894
|
active,
|
|
56770
56895
|
onClick,
|
|
56771
56896
|
children
|
|
@@ -56774,7 +56899,7 @@ function MenuButton({
|
|
|
56774
56899
|
"button",
|
|
56775
56900
|
{
|
|
56776
56901
|
className: classNames(className, {
|
|
56777
|
-
"bg-accent drop-shadow-[
|
|
56902
|
+
"bg-accent text-accent-foreground drop-shadow-[0px_0px_12px_hsl(var(--accent))]": active
|
|
56778
56903
|
}),
|
|
56779
56904
|
onClick,
|
|
56780
56905
|
children
|
|
@@ -62362,14 +62487,21 @@ const twMerge = /* @__PURE__ */ createTailwindMerge(getDefaultConfig);
|
|
|
62362
62487
|
function cn(...inputs) {
|
|
62363
62488
|
return twMerge(clsx(inputs));
|
|
62364
62489
|
}
|
|
62365
|
-
const ScrollArea = React$3.forwardRef(({ className: className2, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
62490
|
+
const ScrollArea = React$3.forwardRef(({ className: className2, children, innerRef, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
62366
62491
|
$57acba87d6e25586$export$be92b6f5f03c0fe9,
|
|
62367
62492
|
{
|
|
62368
62493
|
ref,
|
|
62369
62494
|
className: cn("relative overflow-hidden", className2),
|
|
62370
62495
|
...props,
|
|
62371
62496
|
children: [
|
|
62372
|
-
/* @__PURE__ */ jsx(
|
|
62497
|
+
/* @__PURE__ */ jsx(
|
|
62498
|
+
$57acba87d6e25586$export$d5c6c08dc2d3ca7,
|
|
62499
|
+
{
|
|
62500
|
+
className: "h-full w-full rounded-[inherit]",
|
|
62501
|
+
ref: innerRef,
|
|
62502
|
+
children
|
|
62503
|
+
}
|
|
62504
|
+
),
|
|
62373
62505
|
/* @__PURE__ */ jsx(ScrollBar, {}),
|
|
62374
62506
|
/* @__PURE__ */ jsx($57acba87d6e25586$export$ac61190d9fc311a9, {})
|
|
62375
62507
|
]
|
|
@@ -62400,8 +62532,8 @@ const ScrollBar = React$3.forwardRef(({ className: className2, orientation = "ve
|
|
|
62400
62532
|
}
|
|
62401
62533
|
));
|
|
62402
62534
|
ScrollBar.displayName = $57acba87d6e25586$export$2fabd85d0eba3c57.displayName;
|
|
62403
|
-
const MIN_WIDTH =
|
|
62404
|
-
const MIN_HEIGHT =
|
|
62535
|
+
const MIN_WIDTH = 400;
|
|
62536
|
+
const MIN_HEIGHT = 250;
|
|
62405
62537
|
function ValWindow({
|
|
62406
62538
|
position,
|
|
62407
62539
|
onClose,
|
|
@@ -62424,14 +62556,12 @@ function ValWindow({
|
|
|
62424
62556
|
const { windowSize, setWindowSize } = useValOverlayContext();
|
|
62425
62557
|
useEffect(() => {
|
|
62426
62558
|
var _a, _b;
|
|
62427
|
-
|
|
62428
|
-
|
|
62429
|
-
|
|
62430
|
-
|
|
62431
|
-
|
|
62432
|
-
|
|
62433
|
-
}
|
|
62434
|
-
}, [windowSize]);
|
|
62559
|
+
setWindowSize({
|
|
62560
|
+
height: window.innerHeight - 30,
|
|
62561
|
+
width: MIN_WIDTH,
|
|
62562
|
+
innerHeight: window.innerHeight - 30 - (64 + (((_b = (_a = bottomRef.current) == null ? void 0 : _a.getBoundingClientRect()) == null ? void 0 : _b.height) || 0))
|
|
62563
|
+
});
|
|
62564
|
+
}, []);
|
|
62435
62565
|
const bottomRef = useRef(null);
|
|
62436
62566
|
return /* @__PURE__ */ jsx(
|
|
62437
62567
|
Resizable,
|
|
@@ -62443,7 +62573,7 @@ function ValWindow({
|
|
|
62443
62573
|
var _a, _b;
|
|
62444
62574
|
return setWindowSize({
|
|
62445
62575
|
...size2,
|
|
62446
|
-
innerHeight:
|
|
62576
|
+
innerHeight: size2.height - (64 + (((_b = (_a = bottomRef.current) == null ? void 0 : _a.getBoundingClientRect()) == null ? void 0 : _b.height) || 0))
|
|
62447
62577
|
});
|
|
62448
62578
|
},
|
|
62449
62579
|
handle: /* @__PURE__ */ jsx("div", { className: "fixed bottom-0 right-0 cursor-se-resize", children: /* @__PURE__ */ jsx(
|
|
@@ -62477,14 +62607,16 @@ function ValWindow({
|
|
|
62477
62607
|
width: (windowSize == null ? void 0 : windowSize.width) || MIN_WIDTH,
|
|
62478
62608
|
height: (windowSize == null ? void 0 : windowSize.height) || MIN_HEIGHT,
|
|
62479
62609
|
left: draggedPosition.left,
|
|
62480
|
-
top: draggedPosition.top
|
|
62610
|
+
top: draggedPosition.top,
|
|
62611
|
+
right: draggedPosition.right,
|
|
62612
|
+
bottom: draggedPosition.bottom
|
|
62481
62613
|
},
|
|
62482
62614
|
children: [
|
|
62483
62615
|
/* @__PURE__ */ jsxs(
|
|
62484
62616
|
"div",
|
|
62485
62617
|
{
|
|
62486
62618
|
ref: dragRef,
|
|
62487
|
-
className: "relative flex items-center justify-center px-2
|
|
62619
|
+
className: "relative flex items-center justify-center px-2 py-2 text-primary",
|
|
62488
62620
|
children: [
|
|
62489
62621
|
/* @__PURE__ */ jsx(
|
|
62490
62622
|
AlignJustify,
|
|
@@ -62509,56 +62641,32 @@ function ValWindow({
|
|
|
62509
62641
|
]
|
|
62510
62642
|
}
|
|
62511
62643
|
),
|
|
62512
|
-
/* @__PURE__ */ jsxs(
|
|
62513
|
-
|
|
62514
|
-
|
|
62515
|
-
|
|
62516
|
-
|
|
62517
|
-
|
|
62518
|
-
|
|
62519
|
-
|
|
62520
|
-
|
|
62521
|
-
|
|
62522
|
-
|
|
62523
|
-
|
|
62524
|
-
|
|
62525
|
-
|
|
62526
|
-
height: windowSize == null ? void 0 : windowSize.innerHeight
|
|
62527
|
-
},
|
|
62528
|
-
children: Array.isArray(children) ? children.slice(1, -1) : children
|
|
62529
|
-
}
|
|
62530
|
-
),
|
|
62531
|
-
/* @__PURE__ */ jsx("div", { ref: bottomRef, className: "w-full px-4 pb-0", children: Array.isArray(children) && children.slice(-1) })
|
|
62532
|
-
]
|
|
62533
|
-
}
|
|
62534
|
-
)
|
|
62644
|
+
/* @__PURE__ */ jsxs("div", { children: [
|
|
62645
|
+
Array.isArray(children) && children.slice(0, 1),
|
|
62646
|
+
/* @__PURE__ */ jsx(
|
|
62647
|
+
ScrollArea,
|
|
62648
|
+
{
|
|
62649
|
+
className: "relative",
|
|
62650
|
+
style: {
|
|
62651
|
+
height: windowSize == null ? void 0 : windowSize.innerHeight
|
|
62652
|
+
},
|
|
62653
|
+
children: Array.isArray(children) ? children.slice(1, -1) : children
|
|
62654
|
+
}
|
|
62655
|
+
),
|
|
62656
|
+
/* @__PURE__ */ jsx("div", { ref: bottomRef, className: "w-full px-4 pb-0", children: Array.isArray(children) && children.slice(-1) })
|
|
62657
|
+
] })
|
|
62535
62658
|
]
|
|
62536
62659
|
}
|
|
62537
62660
|
)
|
|
62538
62661
|
}
|
|
62539
62662
|
);
|
|
62540
62663
|
}
|
|
62541
|
-
function useDrag({
|
|
62542
|
-
position: initPosition
|
|
62543
|
-
}) {
|
|
62664
|
+
function useDrag({ position: initPosition }) {
|
|
62544
62665
|
var _a, _b;
|
|
62545
|
-
const [position, setPosition] = useState({ left:
|
|
62666
|
+
const [position, setPosition] = useState({ left: window.innerWidth - MIN_WIDTH - (24 + 50), top: 16 });
|
|
62546
62667
|
useEffect(() => {
|
|
62547
|
-
var _a2, _b2;
|
|
62548
62668
|
if (initPosition) {
|
|
62549
|
-
|
|
62550
|
-
const top = initPosition.top - 16;
|
|
62551
|
-
setPosition({
|
|
62552
|
-
left: left < 0 ? 0 : left,
|
|
62553
|
-
top: top < 0 ? 0 : top
|
|
62554
|
-
});
|
|
62555
|
-
} else {
|
|
62556
|
-
const left = window.innerWidth / 2 - MIN_WIDTH / 2 - window.scrollX;
|
|
62557
|
-
const top = window.innerHeight / 2 - MIN_HEIGHT / 2 + window.scrollY;
|
|
62558
|
-
setPosition({
|
|
62559
|
-
left,
|
|
62560
|
-
top
|
|
62561
|
-
});
|
|
62669
|
+
setPosition(initPosition);
|
|
62562
62670
|
}
|
|
62563
62671
|
}, [initPosition]);
|
|
62564
62672
|
const [mouseDown, setMouseDown] = useState(false);
|
|
@@ -62572,8 +62680,8 @@ function useDrag({
|
|
|
62572
62680
|
if (mouseDown) {
|
|
62573
62681
|
e.preventDefault();
|
|
62574
62682
|
e.stopPropagation();
|
|
62575
|
-
const left = -((((_b2 = (_a2 = ref == null ? void 0 : ref.current) == null ? void 0 : _a2.getBoundingClientRect()) == null ? void 0 : _b2.width) || 0) / 2) + e.
|
|
62576
|
-
const top = -((((_d = (_c = ref == null ? void 0 : ref.current) == null ? void 0 : _c.getBoundingClientRect()) == null ? void 0 : _d.height) || 0) / 2) + +e.
|
|
62683
|
+
const left = -((((_b2 = (_a2 = ref == null ? void 0 : ref.current) == null ? void 0 : _a2.getBoundingClientRect()) == null ? void 0 : _b2.width) || 0) / 2) + e.clientX;
|
|
62684
|
+
const top = -((((_d = (_c = ref == null ? void 0 : ref.current) == null ? void 0 : _c.getBoundingClientRect()) == null ? void 0 : _d.height) || 0) / 2) + +e.clientY;
|
|
62577
62685
|
setPosition({
|
|
62578
62686
|
left: left < 0 ? 0 : left,
|
|
62579
62687
|
top: top < 0 ? 0 : top
|
|
@@ -62751,6 +62859,7 @@ function Grid({ children }) {
|
|
|
62751
62859
|
const x = useRef(0);
|
|
62752
62860
|
const dragRef = useRef(null);
|
|
62753
62861
|
const originalWidth = useRef(0);
|
|
62862
|
+
const [showMobileLeftMenu, setShowMobileLeftMenu] = useState(true);
|
|
62754
62863
|
const handleMouseUp = () => {
|
|
62755
62864
|
isResizing.current = false;
|
|
62756
62865
|
dragRef.current = null;
|
|
@@ -62791,17 +62900,40 @@ function Grid({ children }) {
|
|
|
62791
62900
|
document.removeEventListener("mousemove", handleMouseMove);
|
|
62792
62901
|
};
|
|
62793
62902
|
}, []);
|
|
62794
|
-
return /* @__PURE__ */ jsxs("div", { className: "flex h-screen", children: [
|
|
62903
|
+
return /* @__PURE__ */ jsxs("div", { className: "relative flex h-screen", children: [
|
|
62795
62904
|
/* @__PURE__ */ jsxs(
|
|
62796
62905
|
"div",
|
|
62797
62906
|
{
|
|
62798
62907
|
ref: leftColRef,
|
|
62799
|
-
className:
|
|
62800
|
-
|
|
62908
|
+
className: classNames(
|
|
62909
|
+
"absolute top-0 left-0 border-r border-border md:relative z-[1] bg-gradient-to-br from-card from-50% to-background",
|
|
62910
|
+
{
|
|
62911
|
+
"w-[300px]": showMobileLeftMenu,
|
|
62912
|
+
"w-0 md:w-[300px]": !showMobileLeftMenu
|
|
62913
|
+
}
|
|
62914
|
+
),
|
|
62801
62915
|
children: [
|
|
62802
62916
|
/* @__PURE__ */ jsxs(Grid.Column, { children: [
|
|
62803
|
-
|
|
62804
|
-
|
|
62917
|
+
/* @__PURE__ */ jsx(
|
|
62918
|
+
MenuButton,
|
|
62919
|
+
{
|
|
62920
|
+
showOnMobile: !showMobileLeftMenu,
|
|
62921
|
+
onClick: () => {
|
|
62922
|
+
setShowMobileLeftMenu(!showMobileLeftMenu);
|
|
62923
|
+
},
|
|
62924
|
+
children: header1
|
|
62925
|
+
}
|
|
62926
|
+
),
|
|
62927
|
+
/* @__PURE__ */ jsx(
|
|
62928
|
+
ScrollArea,
|
|
62929
|
+
{
|
|
62930
|
+
style: { height: "calc(100vh - 50px)" },
|
|
62931
|
+
onClick: () => {
|
|
62932
|
+
setShowMobileLeftMenu(false);
|
|
62933
|
+
},
|
|
62934
|
+
children: body1
|
|
62935
|
+
}
|
|
62936
|
+
)
|
|
62805
62937
|
] }),
|
|
62806
62938
|
/* @__PURE__ */ jsx(
|
|
62807
62939
|
"div",
|
|
@@ -62820,7 +62952,28 @@ function Grid({ children }) {
|
|
|
62820
62952
|
"w-full": !header3 && !body3
|
|
62821
62953
|
}),
|
|
62822
62954
|
children: /* @__PURE__ */ jsxs(Grid.Column, { children: [
|
|
62823
|
-
|
|
62955
|
+
/* @__PURE__ */ jsxs("span", { className: "flex w-full border-b border-border", children: [
|
|
62956
|
+
/* @__PURE__ */ jsx(
|
|
62957
|
+
MenuButton,
|
|
62958
|
+
{
|
|
62959
|
+
className: "md:hidden",
|
|
62960
|
+
showOnMobile: showMobileLeftMenu,
|
|
62961
|
+
onClick: () => {
|
|
62962
|
+
setShowMobileLeftMenu(!showMobileLeftMenu);
|
|
62963
|
+
},
|
|
62964
|
+
children: header1
|
|
62965
|
+
}
|
|
62966
|
+
),
|
|
62967
|
+
/* @__PURE__ */ jsx(
|
|
62968
|
+
"span",
|
|
62969
|
+
{
|
|
62970
|
+
className: classNames({
|
|
62971
|
+
"pl-[300px] md:pl-0": showMobileLeftMenu
|
|
62972
|
+
}),
|
|
62973
|
+
children: header2
|
|
62974
|
+
}
|
|
62975
|
+
)
|
|
62976
|
+
] }),
|
|
62824
62977
|
/* @__PURE__ */ jsx(ScrollArea, { style: { height: "calc(100vh - 50px)" }, children: body2 })
|
|
62825
62978
|
] })
|
|
62826
62979
|
}
|
|
@@ -62848,111 +63001,30 @@ function Grid({ children }) {
|
|
|
62848
63001
|
)
|
|
62849
63002
|
] });
|
|
62850
63003
|
}
|
|
62851
|
-
|
|
62852
|
-
|
|
62853
|
-
|
|
62854
|
-
|
|
62855
|
-
|
|
62856
|
-
|
|
62857
|
-
};
|
|
62858
|
-
const Section = ({ className: className2 }) => {
|
|
63004
|
+
function MenuButton({
|
|
63005
|
+
className: className2,
|
|
63006
|
+
showOnMobile,
|
|
63007
|
+
onClick,
|
|
63008
|
+
children
|
|
63009
|
+
}) {
|
|
62859
63010
|
return /* @__PURE__ */ jsxs(
|
|
62860
|
-
"
|
|
63011
|
+
"div",
|
|
62861
63012
|
{
|
|
62862
|
-
|
|
62863
|
-
|
|
62864
|
-
|
|
62865
|
-
className: className2,
|
|
62866
|
-
fill: "currentColor",
|
|
62867
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
63013
|
+
className: classNames("flex items-center px-4 md:px-4", className2, {
|
|
63014
|
+
"hidden md:flex": showOnMobile
|
|
63015
|
+
}),
|
|
62868
63016
|
children: [
|
|
62869
|
-
/* @__PURE__ */
|
|
62870
|
-
|
|
62871
|
-
"path",
|
|
62872
|
-
{
|
|
62873
|
-
fillRule: "evenodd",
|
|
62874
|
-
clipRule: "evenodd",
|
|
62875
|
-
d: "M9 1.5H0V0.5H9V1.5Z",
|
|
62876
|
-
fill: "currentColor"
|
|
62877
|
-
}
|
|
62878
|
-
),
|
|
62879
|
-
/* @__PURE__ */ jsx(
|
|
62880
|
-
"path",
|
|
62881
|
-
{
|
|
62882
|
-
fillRule: "evenodd",
|
|
62883
|
-
clipRule: "evenodd",
|
|
62884
|
-
d: "M9 9.5H0V8.5H9V9.5Z",
|
|
62885
|
-
fill: "currentColor"
|
|
62886
|
-
}
|
|
62887
|
-
)
|
|
62888
|
-
] }),
|
|
62889
|
-
/* @__PURE__ */ jsx("defs", { children: /* @__PURE__ */ jsx("clipPath", { id: "clip0_1222_1618", children: /* @__PURE__ */ jsx(
|
|
62890
|
-
"rect",
|
|
62891
|
-
{
|
|
62892
|
-
width: "9",
|
|
62893
|
-
height: "9",
|
|
62894
|
-
fill: "white",
|
|
62895
|
-
transform: "translate(0 0.5)"
|
|
62896
|
-
}
|
|
62897
|
-
) }) })
|
|
63017
|
+
/* @__PURE__ */ jsx("button", { className: "md:hidden", onClick, children: /* @__PURE__ */ jsx(Menu, {}) }),
|
|
63018
|
+
/* @__PURE__ */ jsx("span", { className: "flex items-center justify-between w-full", children })
|
|
62898
63019
|
]
|
|
62899
63020
|
}
|
|
62900
63021
|
);
|
|
62901
|
-
};
|
|
62902
|
-
const Section$1 = Section;
|
|
62903
|
-
const TextIcon = ({ className: className2 }) => {
|
|
62904
|
-
return /* @__PURE__ */ jsx(
|
|
62905
|
-
"svg",
|
|
62906
|
-
{
|
|
62907
|
-
width: "9",
|
|
62908
|
-
height: "10",
|
|
62909
|
-
viewBox: "0 0 9 10",
|
|
62910
|
-
fill: "currentColor",
|
|
62911
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
62912
|
-
className: className2,
|
|
62913
|
-
children: /* @__PURE__ */ jsx("g", { clipPath: "url(#clip0_1229_1625)", children: /* @__PURE__ */ 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" }) })
|
|
62914
|
-
}
|
|
62915
|
-
);
|
|
62916
|
-
};
|
|
62917
|
-
const TextIcon$1 = TextIcon;
|
|
62918
|
-
function Tree({ children, rootPath }) {
|
|
62919
|
-
return /* @__PURE__ */ jsx("div", { className: "flex flex-col w-full py-2 text-xs", children: Children.map(children, (child) => {
|
|
62920
|
-
return cloneElement$1(child, {
|
|
62921
|
-
paths: [rootPath]
|
|
62922
|
-
});
|
|
62923
|
-
}) });
|
|
62924
63022
|
}
|
|
62925
|
-
|
|
62926
|
-
children
|
|
62927
|
-
|
|
62928
|
-
|
|
62929
|
-
|
|
62930
|
-
type,
|
|
62931
|
-
setActivePath
|
|
62932
|
-
}) => {
|
|
62933
|
-
const paddingLeft = level * 30;
|
|
62934
|
-
const logo = type === "string" ? /* @__PURE__ */ jsx(TextIcon$1, {}) : type === "image" ? /* @__PURE__ */ jsx(ImageIcon$1, { className: "h-[9px] w-[9px]" }) : /* @__PURE__ */ jsx(Section$1, {});
|
|
62935
|
-
return /* @__PURE__ */ jsxs("div", { className: "w-full", children: [
|
|
62936
|
-
/* @__PURE__ */ jsx(
|
|
62937
|
-
"button",
|
|
62938
|
-
{
|
|
62939
|
-
className: "flex justify-between w-full group py-2 text-xs font-[400] shrink-0",
|
|
62940
|
-
onClick: () => {
|
|
62941
|
-
setActivePath && setActivePath(path);
|
|
62942
|
-
},
|
|
62943
|
-
style: { paddingLeft },
|
|
62944
|
-
children: /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-center gap-2", children: [
|
|
62945
|
-
logo,
|
|
62946
|
-
/* @__PURE__ */ jsx("p", { children: path })
|
|
62947
|
-
] })
|
|
62948
|
-
}
|
|
62949
|
-
),
|
|
62950
|
-
children && /* @__PURE__ */ jsx(Fragment$1, { children: Children.map(children, (child) => {
|
|
62951
|
-
return cloneElement$1(child, {
|
|
62952
|
-
level: level + 1,
|
|
62953
|
-
paths: [...paths, path]
|
|
62954
|
-
});
|
|
62955
|
-
}) })
|
|
63023
|
+
Grid.Column = ({ children, className: className2 }) => {
|
|
63024
|
+
const [header, body] = Children.toArray(children);
|
|
63025
|
+
return /* @__PURE__ */ jsxs("div", { className: classNames("flex flex-col", className2), children: [
|
|
63026
|
+
/* @__PURE__ */ jsx("div", { className: "flex items-center border-b border-border", children: header }),
|
|
63027
|
+
body
|
|
62956
63028
|
] });
|
|
62957
63029
|
};
|
|
62958
63030
|
const falsyToString = (value) => typeof value === "boolean" ? "".concat(value) : value === 0 ? "0" : value;
|
|
@@ -67456,8 +67528,10 @@ function ValFormField({
|
|
|
67456
67528
|
return /* @__PURE__ */ jsx(
|
|
67457
67529
|
StringField,
|
|
67458
67530
|
{
|
|
67531
|
+
path,
|
|
67459
67532
|
defaultValue: source,
|
|
67460
67533
|
disabled,
|
|
67534
|
+
schema,
|
|
67461
67535
|
registerPatchCallback,
|
|
67462
67536
|
onSubmit
|
|
67463
67537
|
}
|
|
@@ -67532,7 +67606,13 @@ function ValFormField({
|
|
|
67532
67606
|
}
|
|
67533
67607
|
return /* @__PURE__ */ jsxs("div", { children: [
|
|
67534
67608
|
"Unsupported schema: ",
|
|
67535
|
-
schema.type
|
|
67609
|
+
schema.type,
|
|
67610
|
+
" (source type: ",
|
|
67611
|
+
typeof source,
|
|
67612
|
+
" source:",
|
|
67613
|
+
" ",
|
|
67614
|
+
JSON.stringify(source),
|
|
67615
|
+
")"
|
|
67536
67616
|
] });
|
|
67537
67617
|
}
|
|
67538
67618
|
function createImagePatch(path, data, filename, metadata) {
|
|
@@ -67591,6 +67671,7 @@ function ImageField({
|
|
|
67591
67671
|
onSubmit,
|
|
67592
67672
|
registerPatchCallback
|
|
67593
67673
|
}) {
|
|
67674
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l;
|
|
67594
67675
|
const [data, setData] = useState(
|
|
67595
67676
|
null
|
|
67596
67677
|
);
|
|
@@ -67614,7 +67695,7 @@ function ImageField({
|
|
|
67614
67695
|
}
|
|
67615
67696
|
}, [data, defaultValue]);
|
|
67616
67697
|
useEffect(() => {
|
|
67617
|
-
var
|
|
67698
|
+
var _a2;
|
|
67618
67699
|
if (hotspot) {
|
|
67619
67700
|
if (metadata) {
|
|
67620
67701
|
const newMetadata = {
|
|
@@ -67631,111 +67712,125 @@ function ImageField({
|
|
|
67631
67712
|
console.error("Neither image metadata nor value is set");
|
|
67632
67713
|
}
|
|
67633
67714
|
} else {
|
|
67634
|
-
if ((
|
|
67715
|
+
if ((_a2 = defaultValue == null ? void 0 : defaultValue.metadata) == null ? void 0 : _a2.hotspot) {
|
|
67635
67716
|
setHotspot(defaultValue.metadata.hotspot);
|
|
67636
67717
|
}
|
|
67637
67718
|
}
|
|
67638
67719
|
}, [hotspot, defaultValue]);
|
|
67639
67720
|
return /* @__PURE__ */ jsxs(FieldContainer, { children: [
|
|
67640
|
-
/* @__PURE__ */
|
|
67641
|
-
|
|
67642
|
-
|
|
67643
|
-
|
|
67644
|
-
|
|
67645
|
-
|
|
67646
|
-
|
|
67647
|
-
|
|
67648
|
-
|
|
67721
|
+
/* @__PURE__ */ jsx(
|
|
67722
|
+
"div",
|
|
67723
|
+
{
|
|
67724
|
+
className: "flex flex-col max-w-4xl p-2 border border-b-0 rounded-sm rounded-b-none gap-y-4 bg-background text-foreground border-input",
|
|
67725
|
+
children: data || url ? /* @__PURE__ */ jsxs("div", { className: "relative", children: [
|
|
67726
|
+
hotspot && /* @__PURE__ */ jsx(
|
|
67727
|
+
"div",
|
|
67728
|
+
{
|
|
67729
|
+
className: "rounded-full h-[12px] w-[12px] bg-background mix-blend-difference border-accent border-2 absolute pointer-events-none",
|
|
67730
|
+
style: {
|
|
67731
|
+
top: `${hotspot.y * 100}%`,
|
|
67732
|
+
left: `${hotspot.x * 100}%`
|
|
67733
|
+
}
|
|
67649
67734
|
}
|
|
67650
|
-
|
|
67651
|
-
|
|
67652
|
-
|
|
67653
|
-
|
|
67654
|
-
|
|
67655
|
-
|
|
67656
|
-
|
|
67657
|
-
|
|
67658
|
-
|
|
67659
|
-
|
|
67660
|
-
|
|
67661
|
-
|
|
67662
|
-
|
|
67663
|
-
|
|
67664
|
-
|
|
67735
|
+
),
|
|
67736
|
+
/* @__PURE__ */ jsx(
|
|
67737
|
+
"img",
|
|
67738
|
+
{
|
|
67739
|
+
src: (data == null ? void 0 : data.src) || url,
|
|
67740
|
+
draggable: false,
|
|
67741
|
+
className: "w-full",
|
|
67742
|
+
style: {
|
|
67743
|
+
cursor: "crosshair"
|
|
67744
|
+
},
|
|
67745
|
+
onClick: (ev) => {
|
|
67746
|
+
const { width: width2, height: height2, left, top } = ev.currentTarget.getBoundingClientRect();
|
|
67747
|
+
const hotspotX = (ev.clientX - 6 - left) / width2;
|
|
67748
|
+
const hotspotY = (ev.clientY - 6 - top) / height2;
|
|
67749
|
+
setHotspot({
|
|
67750
|
+
x: hotspotX,
|
|
67751
|
+
y: hotspotY,
|
|
67752
|
+
width: 1,
|
|
67753
|
+
height: 1
|
|
67754
|
+
});
|
|
67755
|
+
}
|
|
67665
67756
|
}
|
|
67666
|
-
|
|
67667
|
-
)
|
|
67668
|
-
|
|
67669
|
-
|
|
67670
|
-
|
|
67671
|
-
|
|
67672
|
-
|
|
67673
|
-
|
|
67674
|
-
|
|
67675
|
-
|
|
67676
|
-
|
|
67677
|
-
|
|
67678
|
-
|
|
67679
|
-
|
|
67680
|
-
|
|
67681
|
-
|
|
67682
|
-
|
|
67683
|
-
|
|
67684
|
-
|
|
67685
|
-
|
|
67686
|
-
|
|
67687
|
-
|
|
67688
|
-
|
|
67689
|
-
|
|
67690
|
-
|
|
67691
|
-
|
|
67692
|
-
|
|
67693
|
-
|
|
67694
|
-
|
|
67695
|
-
|
|
67757
|
+
)
|
|
67758
|
+
] }) : /* @__PURE__ */ jsx("div", { children: "Select image below" })
|
|
67759
|
+
},
|
|
67760
|
+
path
|
|
67761
|
+
),
|
|
67762
|
+
/* @__PURE__ */ jsxs("div", { className: "w-full p-4 border border-t-0 rounded-b-sm bg-background border-input", children: [
|
|
67763
|
+
/* @__PURE__ */ jsx(
|
|
67764
|
+
"label",
|
|
67765
|
+
{
|
|
67766
|
+
htmlFor: `img_input:${path}`,
|
|
67767
|
+
className: "block w-full px-1 py-2 text-sm text-center rounded-md cursor-pointer bg-primary text-background",
|
|
67768
|
+
children: "Update"
|
|
67769
|
+
}
|
|
67770
|
+
),
|
|
67771
|
+
/* @__PURE__ */ jsx(
|
|
67772
|
+
"input",
|
|
67773
|
+
{
|
|
67774
|
+
hidden: true,
|
|
67775
|
+
id: `img_input:${path}`,
|
|
67776
|
+
type: "file",
|
|
67777
|
+
onChange: (ev) => {
|
|
67778
|
+
readImage(ev).then((res) => {
|
|
67779
|
+
setData({ src: res.src, filename: res.filename });
|
|
67780
|
+
if (res.width && res.height && res.mimeType) {
|
|
67781
|
+
setMetadata({
|
|
67782
|
+
sha256: res.sha256,
|
|
67783
|
+
width: res.width,
|
|
67784
|
+
height: res.height,
|
|
67785
|
+
mimeType: res.mimeType,
|
|
67786
|
+
hotspot
|
|
67787
|
+
});
|
|
67788
|
+
} else {
|
|
67696
67789
|
setMetadata(void 0);
|
|
67697
|
-
|
|
67698
|
-
|
|
67790
|
+
setHotspot(void 0);
|
|
67791
|
+
}
|
|
67792
|
+
}).catch((err2) => {
|
|
67793
|
+
console.error(err2.message);
|
|
67794
|
+
setData(null);
|
|
67795
|
+
setHotspot(void 0);
|
|
67796
|
+
setMetadata(void 0);
|
|
67797
|
+
});
|
|
67699
67798
|
}
|
|
67700
|
-
)
|
|
67701
|
-
] })
|
|
67702
|
-
] }, path),
|
|
67703
|
-
onSubmit && data && /* @__PURE__ */ jsx(
|
|
67704
|
-
SubmitButton,
|
|
67705
|
-
{
|
|
67706
|
-
loading,
|
|
67707
|
-
onClick: () => {
|
|
67708
|
-
setLoading(true);
|
|
67709
|
-
onSubmit(
|
|
67710
|
-
(path2) => Promise.resolve(
|
|
67711
|
-
createImagePatch(
|
|
67712
|
-
path2,
|
|
67713
|
-
data.src,
|
|
67714
|
-
data.filename ?? null,
|
|
67715
|
-
metadata
|
|
67716
|
-
)
|
|
67717
|
-
)
|
|
67718
|
-
).finally(() => {
|
|
67719
|
-
setLoading(false);
|
|
67720
|
-
setData(null);
|
|
67721
|
-
setMetadata(void 0);
|
|
67722
|
-
});
|
|
67723
67799
|
}
|
|
67724
|
-
|
|
67725
|
-
),
|
|
67726
|
-
onSubmit &&
|
|
67800
|
+
)
|
|
67801
|
+
] }),
|
|
67802
|
+
onSubmit && /* @__PURE__ */ jsx(
|
|
67727
67803
|
SubmitButton,
|
|
67728
67804
|
{
|
|
67729
67805
|
loading,
|
|
67806
|
+
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),
|
|
67730
67807
|
onClick: () => {
|
|
67731
|
-
|
|
67732
|
-
|
|
67733
|
-
(
|
|
67734
|
-
|
|
67735
|
-
|
|
67736
|
-
|
|
67737
|
-
|
|
67738
|
-
|
|
67808
|
+
if (data) {
|
|
67809
|
+
setLoading(true);
|
|
67810
|
+
onSubmit(
|
|
67811
|
+
(path2) => Promise.resolve(
|
|
67812
|
+
createImagePatch(
|
|
67813
|
+
path2,
|
|
67814
|
+
data.src,
|
|
67815
|
+
data.filename ?? null,
|
|
67816
|
+
metadata
|
|
67817
|
+
)
|
|
67818
|
+
)
|
|
67819
|
+
).finally(() => {
|
|
67820
|
+
setLoading(false);
|
|
67821
|
+
setData(null);
|
|
67822
|
+
setMetadata(void 0);
|
|
67823
|
+
});
|
|
67824
|
+
} else if (metadata) {
|
|
67825
|
+
setLoading(true);
|
|
67826
|
+
onSubmit(
|
|
67827
|
+
(path2) => Promise.resolve(createImageMetadataPatch(path2, metadata))
|
|
67828
|
+
).finally(() => {
|
|
67829
|
+
setLoading(false);
|
|
67830
|
+
setData(null);
|
|
67831
|
+
setMetadata(void 0);
|
|
67832
|
+
});
|
|
67833
|
+
}
|
|
67739
67834
|
}
|
|
67740
67835
|
}
|
|
67741
67836
|
)
|
|
@@ -67816,10 +67911,11 @@ function RichTextField({
|
|
|
67816
67911
|
}
|
|
67817
67912
|
}
|
|
67818
67913
|
),
|
|
67819
|
-
onSubmit &&
|
|
67914
|
+
onSubmit && /* @__PURE__ */ jsx(
|
|
67820
67915
|
SubmitButton,
|
|
67821
67916
|
{
|
|
67822
67917
|
loading: loading || !editor,
|
|
67918
|
+
enabled: didChange,
|
|
67823
67919
|
onClick: () => {
|
|
67824
67920
|
if (editor) {
|
|
67825
67921
|
setLoading(true);
|
|
@@ -67901,10 +67997,11 @@ function KeyOfField({
|
|
|
67901
67997
|
]
|
|
67902
67998
|
}
|
|
67903
67999
|
),
|
|
67904
|
-
onSubmit &&
|
|
68000
|
+
onSubmit && /* @__PURE__ */ jsx(
|
|
67905
68001
|
SubmitButton,
|
|
67906
68002
|
{
|
|
67907
68003
|
loading,
|
|
68004
|
+
enabled: defaultValue !== value,
|
|
67908
68005
|
onClick: () => {
|
|
67909
68006
|
setLoading(true);
|
|
67910
68007
|
onSubmit(async (path) => [
|
|
@@ -67958,10 +68055,11 @@ function NumberField({
|
|
|
67958
68055
|
type: "number"
|
|
67959
68056
|
}
|
|
67960
68057
|
),
|
|
67961
|
-
onSubmit &&
|
|
68058
|
+
onSubmit && /* @__PURE__ */ jsx(
|
|
67962
68059
|
SubmitButton,
|
|
67963
68060
|
{
|
|
67964
68061
|
loading,
|
|
68062
|
+
enabled: defaultValue !== value,
|
|
67965
68063
|
onClick: () => {
|
|
67966
68064
|
setLoading(true);
|
|
67967
68065
|
onSubmit(async (path) => {
|
|
@@ -67984,6 +68082,8 @@ function NumberField({
|
|
|
67984
68082
|
function StringField({
|
|
67985
68083
|
disabled,
|
|
67986
68084
|
defaultValue,
|
|
68085
|
+
path,
|
|
68086
|
+
schema,
|
|
67987
68087
|
registerPatchCallback,
|
|
67988
68088
|
onSubmit
|
|
67989
68089
|
}) {
|
|
@@ -67995,18 +68095,28 @@ function StringField({
|
|
|
67995
68095
|
const ref = useRef(null);
|
|
67996
68096
|
useEffect(() => {
|
|
67997
68097
|
if (registerPatchCallback) {
|
|
67998
|
-
registerPatchCallback(async (
|
|
68098
|
+
registerPatchCallback(async (path2) => {
|
|
67999
68099
|
var _a;
|
|
68000
68100
|
return [
|
|
68001
68101
|
{
|
|
68002
68102
|
op: "replace",
|
|
68003
|
-
path,
|
|
68103
|
+
path: path2,
|
|
68004
68104
|
value: ((_a = ref.current) == null ? void 0 : _a.value) || ""
|
|
68005
68105
|
}
|
|
68006
68106
|
];
|
|
68007
68107
|
});
|
|
68008
68108
|
}
|
|
68009
68109
|
}, []);
|
|
68110
|
+
const actualSchema = new StringSchema(
|
|
68111
|
+
schema.options ? {
|
|
68112
|
+
...schema.options,
|
|
68113
|
+
regexp: schema.options.regexp ? new RegExp(
|
|
68114
|
+
schema.options.regexp.source,
|
|
68115
|
+
schema.options.regexp.flags
|
|
68116
|
+
) : void 0
|
|
68117
|
+
} : void 0
|
|
68118
|
+
);
|
|
68119
|
+
const validationErrors = actualSchema.validate(path, value);
|
|
68010
68120
|
return /* @__PURE__ */ jsxs(FieldContainer, { children: [
|
|
68011
68121
|
/* @__PURE__ */ jsx(
|
|
68012
68122
|
Input,
|
|
@@ -68017,18 +68127,20 @@ function StringField({
|
|
|
68017
68127
|
onChange: (e) => setValue(e.target.value)
|
|
68018
68128
|
}
|
|
68019
68129
|
),
|
|
68020
|
-
onSubmit &&
|
|
68130
|
+
onSubmit && /* @__PURE__ */ jsx(
|
|
68021
68131
|
SubmitButton,
|
|
68022
68132
|
{
|
|
68133
|
+
validationErrors: validationErrors && validationErrors[path],
|
|
68023
68134
|
loading,
|
|
68135
|
+
enabled: defaultValue !== value && !validationErrors,
|
|
68024
68136
|
onClick: () => {
|
|
68025
68137
|
setLoading(true);
|
|
68026
|
-
onSubmit(async (
|
|
68138
|
+
onSubmit(async (path2) => {
|
|
68027
68139
|
var _a;
|
|
68028
68140
|
return [
|
|
68029
68141
|
{
|
|
68030
68142
|
op: "replace",
|
|
68031
|
-
path,
|
|
68143
|
+
path: path2,
|
|
68032
68144
|
value: ((_a = ref.current) == null ? void 0 : _a.value) || ""
|
|
68033
68145
|
}
|
|
68034
68146
|
];
|
|
@@ -68040,14 +68152,24 @@ function StringField({
|
|
|
68040
68152
|
)
|
|
68041
68153
|
] });
|
|
68042
68154
|
}
|
|
68155
|
+
function InlineValidationErrors({ errors }) {
|
|
68156
|
+
return /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-y-1 p-2 rounded-md text-sm text-destructive-foreground bg-destructive", children: errors.map((error, i) => /* @__PURE__ */ jsx("div", { children: error.message }, i)) });
|
|
68157
|
+
}
|
|
68043
68158
|
function FieldContainer({ children }) {
|
|
68044
|
-
return /* @__PURE__ */ jsx("div", { className: "relative p-4
|
|
68159
|
+
return /* @__PURE__ */ jsx("div", { className: "relative p-4", children });
|
|
68045
68160
|
}
|
|
68046
68161
|
function SubmitButton({
|
|
68047
68162
|
loading,
|
|
68163
|
+
enabled,
|
|
68164
|
+
validationErrors,
|
|
68048
68165
|
onClick
|
|
68049
68166
|
}) {
|
|
68050
|
-
|
|
68167
|
+
const { session } = useValOverlayContext();
|
|
68168
|
+
const isProxy = session.status === "success" && session.data.mode === "proxy";
|
|
68169
|
+
return /* @__PURE__ */ jsx("div", { className: "sticky bottom-0 m-4 ml-0", children: /* @__PURE__ */ jsxs("div", { className: "flex justify-between w-full gap-2 py-2 text-sm", children: [
|
|
68170
|
+
validationErrors ? /* @__PURE__ */ jsx(InlineValidationErrors, { errors: validationErrors || [] }) : /* @__PURE__ */ jsx("span", {}),
|
|
68171
|
+
/* @__PURE__ */ jsx(Button, { disabled: loading || !enabled, onClick, children: loading ? isProxy ? "Staging..." : "Saving..." : isProxy ? "Stage" : "Save" })
|
|
68172
|
+
] }) });
|
|
68051
68173
|
}
|
|
68052
68174
|
const Logo = ({ className: className2 }) => {
|
|
68053
68175
|
return /* @__PURE__ */ jsxs(
|
|
@@ -68064,7 +68186,7 @@ const Logo = ({ className: className2 }) => {
|
|
|
68064
68186
|
"path",
|
|
68065
68187
|
{
|
|
68066
68188
|
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",
|
|
68067
|
-
fill: "
|
|
68189
|
+
fill: "hsl(var(--accent))"
|
|
68068
68190
|
}
|
|
68069
68191
|
) }),
|
|
68070
68192
|
/* @__PURE__ */ jsx("g", { filter: "url(#filter1_i_21_1677)", children: /* @__PURE__ */ jsx("circle", { cx: "11.4656", cy: "23.7595", r: "2.18557", fill: "currentColor" }) }),
|
|
@@ -72518,6 +72640,33 @@ function useSession(api) {
|
|
|
72518
72640
|
}, [sessionResetId]);
|
|
72519
72641
|
return session;
|
|
72520
72642
|
}
|
|
72643
|
+
function Path({ children }) {
|
|
72644
|
+
const segs = children.split("/").filter((seg) => seg);
|
|
72645
|
+
return segs.map((seg, i) => {
|
|
72646
|
+
if (i !== segs.length - 1) {
|
|
72647
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
72648
|
+
/* @__PURE__ */ jsx("span", { children: seg }),
|
|
72649
|
+
/* @__PURE__ */ jsx("span", { className: "px-[2px] text-muted", children: "/" })
|
|
72650
|
+
] }, `${children}/${seg}`);
|
|
72651
|
+
}
|
|
72652
|
+
return /* @__PURE__ */ jsx(Seg, { children: seg }, children);
|
|
72653
|
+
});
|
|
72654
|
+
}
|
|
72655
|
+
function Seg({ children }) {
|
|
72656
|
+
if (children.includes(".")) {
|
|
72657
|
+
const segs = children.split(".");
|
|
72658
|
+
return segs.map((seg, i) => {
|
|
72659
|
+
if (i !== segs.length - 1) {
|
|
72660
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
72661
|
+
/* @__PURE__ */ jsx("span", { children: i === 0 ? seg : JSON.parse(seg) }),
|
|
72662
|
+
/* @__PURE__ */ jsx("span", { className: "px-[2px] text-muted", children: "." })
|
|
72663
|
+
] }, `${children}.${seg}`);
|
|
72664
|
+
}
|
|
72665
|
+
return /* @__PURE__ */ jsx("span", { children: i === 0 ? seg : JSON.parse(seg) }, children);
|
|
72666
|
+
});
|
|
72667
|
+
}
|
|
72668
|
+
return /* @__PURE__ */ jsx("span", { children });
|
|
72669
|
+
}
|
|
72521
72670
|
const ValModulesContext = React__default.createContext(null);
|
|
72522
72671
|
const useValModuleFromPath = (sourcePath) => {
|
|
72523
72672
|
var _a, _b;
|
|
@@ -72668,12 +72817,13 @@ Showing stack trace of: 1. ${fatalErrors[0].message}`;
|
|
|
72668
72817
|
"div",
|
|
72669
72818
|
{
|
|
72670
72819
|
id: "val-fullscreen-container",
|
|
72671
|
-
className: "relative font-serif antialiased",
|
|
72820
|
+
className: "relative w-full h-[100] overflow-hidden font-serif antialiased bg-background text-primary",
|
|
72672
72821
|
"data-mode": theme2,
|
|
72673
72822
|
children: [
|
|
72674
|
-
/* @__PURE__ */ jsx("div", { className: "fixed -translate-
|
|
72823
|
+
/* @__PURE__ */ jsx("div", { className: "fixed -translate-y-1/2 right-4 top-1/2 z-overlay", children: /* @__PURE__ */ jsx(
|
|
72675
72824
|
ValMenu,
|
|
72676
72825
|
{
|
|
72826
|
+
direction: "vertical",
|
|
72677
72827
|
api,
|
|
72678
72828
|
patches,
|
|
72679
72829
|
onCommit: () => setPatchResetId((prev) => prev + 1)
|
|
@@ -72686,18 +72836,19 @@ Showing stack trace of: 1. ${fatalErrors[0].message}`;
|
|
|
72686
72836
|
value: {
|
|
72687
72837
|
hoverElem: hoverElemRef == null ? void 0 : hoverElemRef.current
|
|
72688
72838
|
},
|
|
72689
|
-
children: /* @__PURE__ */ jsx("div", { className: "text-primary
|
|
72839
|
+
children: /* @__PURE__ */ jsx("div", { className: "text-primary", children: /* @__PURE__ */ jsxs(Grid, { children: [
|
|
72690
72840
|
/* @__PURE__ */ jsx("div", { className: "px-4 h-[50px] flex items-center justify-center", children: /* @__PURE__ */ jsx(Logo$1, {}) }),
|
|
72691
72841
|
/* @__PURE__ */ jsx(ScrollArea, { className: "px-4", children: modules ? /* @__PURE__ */ jsx(
|
|
72692
72842
|
PathTree,
|
|
72693
72843
|
{
|
|
72844
|
+
selectedPath,
|
|
72694
72845
|
paths: Object.keys(modules),
|
|
72695
72846
|
setSelectedModuleId: (path) => {
|
|
72696
72847
|
navigate(path);
|
|
72697
72848
|
}
|
|
72698
72849
|
}
|
|
72699
72850
|
) : !error && /* @__PURE__ */ jsx("div", { className: "py-4", children: "Loading..." }) }),
|
|
72700
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-start
|
|
72851
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-start h-[50px] gap-2 font-serif text-xs", children: [
|
|
72701
72852
|
/* @__PURE__ */ jsx(
|
|
72702
72853
|
"button",
|
|
72703
72854
|
{
|
|
@@ -72707,10 +72858,10 @@ Showing stack trace of: 1. ${fatalErrors[0].message}`;
|
|
|
72707
72858
|
children: /* @__PURE__ */ jsx(ChevronLeft, {})
|
|
72708
72859
|
}
|
|
72709
72860
|
),
|
|
72710
|
-
/* @__PURE__ */ jsx("
|
|
72861
|
+
/* @__PURE__ */ jsx("span", { children: /* @__PURE__ */ jsx(Path, { children: selectedPath || "/" }) })
|
|
72711
72862
|
] }),
|
|
72712
72863
|
/* @__PURE__ */ jsxs("div", { className: "p-4", children: [
|
|
72713
|
-
error && /* @__PURE__ */ jsxs("div", { className: "text-lg text-destructive-foreground", children: [
|
|
72864
|
+
error && /* @__PURE__ */ jsxs("div", { className: "p-4 text-lg bg-destructive text-destructive-foreground max-w-xl", children: [
|
|
72714
72865
|
"ERROR: ",
|
|
72715
72866
|
error
|
|
72716
72867
|
] }),
|
|
@@ -72779,7 +72930,7 @@ function AnyVal({
|
|
|
72779
72930
|
initOnSubmit,
|
|
72780
72931
|
top
|
|
72781
72932
|
}) {
|
|
72782
|
-
if (
|
|
72933
|
+
if (schema.opt) {
|
|
72783
72934
|
return /* @__PURE__ */ jsx(
|
|
72784
72935
|
ValOptional,
|
|
72785
72936
|
{
|
|
@@ -72792,6 +72943,18 @@ function AnyVal({
|
|
|
72792
72943
|
}
|
|
72793
72944
|
);
|
|
72794
72945
|
}
|
|
72946
|
+
if (source === null) {
|
|
72947
|
+
return /* @__PURE__ */ jsx(
|
|
72948
|
+
ValDefaultOf,
|
|
72949
|
+
{
|
|
72950
|
+
source,
|
|
72951
|
+
schema,
|
|
72952
|
+
path,
|
|
72953
|
+
setSelectedPath,
|
|
72954
|
+
initOnSubmit
|
|
72955
|
+
}
|
|
72956
|
+
);
|
|
72957
|
+
}
|
|
72795
72958
|
if (schema.type === "object") {
|
|
72796
72959
|
if (typeof source !== "object" || isJsonArray(source)) {
|
|
72797
72960
|
return /* @__PURE__ */ jsxs("div", { children: [
|
|
@@ -72817,15 +72980,18 @@ function AnyVal({
|
|
|
72817
72980
|
typeof source
|
|
72818
72981
|
] });
|
|
72819
72982
|
}
|
|
72820
|
-
return /* @__PURE__ */
|
|
72821
|
-
|
|
72822
|
-
|
|
72823
|
-
|
|
72824
|
-
|
|
72825
|
-
|
|
72826
|
-
|
|
72827
|
-
|
|
72828
|
-
|
|
72983
|
+
return /* @__PURE__ */ jsxs("div", { children: [
|
|
72984
|
+
field ? /* @__PURE__ */ jsx("div", { className: "text-left", children: field }) : /* @__PURE__ */ jsx(Path, { children: path }),
|
|
72985
|
+
/* @__PURE__ */ jsx(
|
|
72986
|
+
ValList,
|
|
72987
|
+
{
|
|
72988
|
+
source,
|
|
72989
|
+
path,
|
|
72990
|
+
schema,
|
|
72991
|
+
setSelectedPath
|
|
72992
|
+
}
|
|
72993
|
+
)
|
|
72994
|
+
] });
|
|
72829
72995
|
} else if (schema.type === "record") {
|
|
72830
72996
|
if (typeof source !== "object") {
|
|
72831
72997
|
return /* @__PURE__ */ jsxs("div", { children: [
|
|
@@ -72841,18 +73007,38 @@ function AnyVal({
|
|
|
72841
73007
|
schema.type
|
|
72842
73008
|
] });
|
|
72843
73009
|
}
|
|
72844
|
-
return /* @__PURE__ */
|
|
72845
|
-
|
|
72846
|
-
|
|
72847
|
-
|
|
72848
|
-
|
|
72849
|
-
|
|
72850
|
-
|
|
72851
|
-
|
|
72852
|
-
|
|
73010
|
+
return /* @__PURE__ */ jsxs("div", { children: [
|
|
73011
|
+
field ? /* @__PURE__ */ jsx("div", { className: "text-left", children: field }) : /* @__PURE__ */ jsx(Path, { children: path }),
|
|
73012
|
+
/* @__PURE__ */ jsx(
|
|
73013
|
+
ValRecord,
|
|
73014
|
+
{
|
|
73015
|
+
source,
|
|
73016
|
+
path,
|
|
73017
|
+
schema,
|
|
73018
|
+
setSelectedPath
|
|
73019
|
+
}
|
|
73020
|
+
)
|
|
73021
|
+
] });
|
|
73022
|
+
} else if ((schema == null ? void 0 : schema.type) === "union") {
|
|
73023
|
+
if (schema.key && typeof source === "object" && !isJsonArray(source)) {
|
|
73024
|
+
return /* @__PURE__ */ jsx(
|
|
73025
|
+
ValTaggedUnion,
|
|
73026
|
+
{
|
|
73027
|
+
tag: schema.key,
|
|
73028
|
+
source,
|
|
73029
|
+
path,
|
|
73030
|
+
schema,
|
|
73031
|
+
initOnSubmit,
|
|
73032
|
+
setSelectedPath,
|
|
73033
|
+
top
|
|
73034
|
+
}
|
|
73035
|
+
);
|
|
73036
|
+
}
|
|
73037
|
+
} else if ((schema == null ? void 0 : schema.type) === "literal") {
|
|
73038
|
+
return /* @__PURE__ */ jsx(Fragment$1, {});
|
|
72853
73039
|
}
|
|
72854
73040
|
return /* @__PURE__ */ jsxs("div", { className: "py-2 gap-y-4", children: [
|
|
72855
|
-
/* @__PURE__ */ jsx("div", { className: "text-left", children: field
|
|
73041
|
+
field ? /* @__PURE__ */ jsx("div", { className: "text-left", children: field }) : /* @__PURE__ */ jsx(Path, { children: path }),
|
|
72856
73042
|
/* @__PURE__ */ jsx(
|
|
72857
73043
|
ValFormField,
|
|
72858
73044
|
{
|
|
@@ -72865,6 +73051,97 @@ function AnyVal({
|
|
|
72865
73051
|
)
|
|
72866
73052
|
] });
|
|
72867
73053
|
}
|
|
73054
|
+
function ValTaggedUnion({
|
|
73055
|
+
tag,
|
|
73056
|
+
path,
|
|
73057
|
+
source,
|
|
73058
|
+
schema,
|
|
73059
|
+
setSelectedPath,
|
|
73060
|
+
initOnSubmit,
|
|
73061
|
+
top
|
|
73062
|
+
}) {
|
|
73063
|
+
const [currentKey, setCurrentKey] = useState(null);
|
|
73064
|
+
const [current, setCurrent] = useState(null);
|
|
73065
|
+
const keys = schema.items.flatMap((item) => {
|
|
73066
|
+
if (item.type === "object" && item.items[tag]) {
|
|
73067
|
+
const maybeLiteral = item.items[tag];
|
|
73068
|
+
if (maybeLiteral.type === "literal") {
|
|
73069
|
+
return [maybeLiteral.value];
|
|
73070
|
+
}
|
|
73071
|
+
}
|
|
73072
|
+
return [];
|
|
73073
|
+
});
|
|
73074
|
+
useEffect(() => {
|
|
73075
|
+
if (!currentKey) {
|
|
73076
|
+
const maybeCurrentKey = source == null ? void 0 : source[tag];
|
|
73077
|
+
if (maybeCurrentKey && typeof maybeCurrentKey === "string") {
|
|
73078
|
+
setCurrentKey(maybeCurrentKey);
|
|
73079
|
+
}
|
|
73080
|
+
} else {
|
|
73081
|
+
const sourceKey = source[tag];
|
|
73082
|
+
const unionSchema = schema.items.find((item) => {
|
|
73083
|
+
if (item.type === "object" && item.items[tag]) {
|
|
73084
|
+
const maybeLiteral = item.items[tag];
|
|
73085
|
+
if (maybeLiteral.type === "literal") {
|
|
73086
|
+
return maybeLiteral.value === currentKey;
|
|
73087
|
+
}
|
|
73088
|
+
return false;
|
|
73089
|
+
}
|
|
73090
|
+
});
|
|
73091
|
+
if (sourceKey && typeof sourceKey === "string" && unionSchema) {
|
|
73092
|
+
setCurrent({ source, schema: unionSchema });
|
|
73093
|
+
} else {
|
|
73094
|
+
console.error(
|
|
73095
|
+
"Could not find source or schema of key",
|
|
73096
|
+
currentKey,
|
|
73097
|
+
source,
|
|
73098
|
+
schema
|
|
73099
|
+
);
|
|
73100
|
+
setCurrent(null);
|
|
73101
|
+
}
|
|
73102
|
+
}
|
|
73103
|
+
}, [currentKey, source, schema, keys]);
|
|
73104
|
+
if (keys.length !== schema.items.length) {
|
|
73105
|
+
console.warn("Not all items have tag:", tag);
|
|
73106
|
+
}
|
|
73107
|
+
const loading = false;
|
|
73108
|
+
return /* @__PURE__ */ jsxs(
|
|
73109
|
+
"div",
|
|
73110
|
+
{
|
|
73111
|
+
className: classNames("flex flex-col gap-y-8", {
|
|
73112
|
+
"border-l-2 border-border pl-6": !top
|
|
73113
|
+
}),
|
|
73114
|
+
children: [
|
|
73115
|
+
/* @__PURE__ */ jsxs(
|
|
73116
|
+
Select,
|
|
73117
|
+
{
|
|
73118
|
+
defaultValue: currentKey ?? void 0,
|
|
73119
|
+
disabled: loading,
|
|
73120
|
+
onValueChange: (key) => {
|
|
73121
|
+
setCurrentKey(key);
|
|
73122
|
+
},
|
|
73123
|
+
children: [
|
|
73124
|
+
/* @__PURE__ */ jsx(SelectTrigger, { children: /* @__PURE__ */ jsx(SelectValue, { placeholder: "Select type" }) }),
|
|
73125
|
+
/* @__PURE__ */ jsx(SelectContent, { children: keys.map((tag2) => /* @__PURE__ */ jsx(SelectItem, { value: tag2.toString(), children: tag2.toString() }, tag2)) })
|
|
73126
|
+
]
|
|
73127
|
+
}
|
|
73128
|
+
),
|
|
73129
|
+
current && /* @__PURE__ */ jsx(
|
|
73130
|
+
AnyVal,
|
|
73131
|
+
{
|
|
73132
|
+
path,
|
|
73133
|
+
source: current.source,
|
|
73134
|
+
schema: current.schema,
|
|
73135
|
+
setSelectedPath,
|
|
73136
|
+
initOnSubmit,
|
|
73137
|
+
top
|
|
73138
|
+
}
|
|
73139
|
+
)
|
|
73140
|
+
]
|
|
73141
|
+
},
|
|
73142
|
+
path
|
|
73143
|
+
);
|
|
73144
|
+
}
|
|
72868
73145
|
function ValObject({
|
|
72869
73146
|
path,
|
|
72870
73147
|
source,
|
|
@@ -72885,7 +73162,7 @@ function ValObject({
|
|
|
72885
73162
|
AnyVal,
|
|
72886
73163
|
{
|
|
72887
73164
|
path: subPath,
|
|
72888
|
-
source: source[key],
|
|
73165
|
+
source: (source == null ? void 0 : source[key]) ?? null,
|
|
72889
73166
|
schema: property,
|
|
72890
73167
|
setSelectedPath,
|
|
72891
73168
|
field: key,
|
|
@@ -73208,8 +73485,8 @@ function ValOptional({
|
|
|
73208
73485
|
field
|
|
73209
73486
|
}) {
|
|
73210
73487
|
const [enable, setEnable] = useState(source !== null);
|
|
73211
|
-
return /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-y-
|
|
73212
|
-
|
|
73488
|
+
return /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-y-2", children: [
|
|
73489
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-start gap-x-4", children: [
|
|
73213
73490
|
/* @__PURE__ */ jsx(
|
|
73214
73491
|
Switch,
|
|
73215
73492
|
{
|
|
@@ -73219,16 +73496,8 @@ function ValOptional({
|
|
|
73219
73496
|
}
|
|
73220
73497
|
}
|
|
73221
73498
|
),
|
|
73222
|
-
/* @__PURE__ */ jsx("span", { children: field })
|
|
73223
|
-
] })
|
|
73224
|
-
Switch,
|
|
73225
|
-
{
|
|
73226
|
-
checked: enable,
|
|
73227
|
-
onClick: () => {
|
|
73228
|
-
setEnable((prev) => !prev);
|
|
73229
|
-
}
|
|
73230
|
-
}
|
|
73231
|
-
),
|
|
73499
|
+
/* @__PURE__ */ jsx("span", { children: field ? field : /* @__PURE__ */ jsx(Path, { children: path }) })
|
|
73500
|
+
] }),
|
|
73232
73501
|
enable && /* @__PURE__ */ jsx(
|
|
73233
73502
|
ValDefaultOf,
|
|
73234
73503
|
{
|
|
@@ -73297,61 +73566,62 @@ function ValDefaultOf({
|
|
|
73297
73566
|
function isJsonArray(source) {
|
|
73298
73567
|
return Array.isArray(source);
|
|
73299
73568
|
}
|
|
73300
|
-
function
|
|
73301
|
-
const
|
|
73569
|
+
function dirPaths(paths) {
|
|
73570
|
+
const res = {};
|
|
73302
73571
|
paths.forEach((path) => {
|
|
73303
|
-
const
|
|
73304
|
-
|
|
73305
|
-
|
|
73306
|
-
|
|
73307
|
-
current[part] = {};
|
|
73572
|
+
const allParts = path.split("/").filter((part) => part !== "");
|
|
73573
|
+
if (allParts.length === 1) {
|
|
73574
|
+
if (!res[""]) {
|
|
73575
|
+
res[""] = [];
|
|
73308
73576
|
}
|
|
73309
|
-
|
|
73310
|
-
})
|
|
73577
|
+
res[""].push(allParts[0]);
|
|
73578
|
+
} else if (allParts.length > 1) {
|
|
73579
|
+
const dir = allParts.slice(0, allParts.length - 1).join("/");
|
|
73580
|
+
const file = allParts.slice(-1)[0];
|
|
73581
|
+
if (!res[dir]) {
|
|
73582
|
+
res[dir] = [];
|
|
73583
|
+
}
|
|
73584
|
+
res[dir].push(file);
|
|
73585
|
+
}
|
|
73311
73586
|
});
|
|
73312
|
-
return
|
|
73587
|
+
return res;
|
|
73313
73588
|
}
|
|
73314
73589
|
function PathTree({
|
|
73590
|
+
selectedPath,
|
|
73315
73591
|
paths,
|
|
73316
73592
|
setSelectedModuleId
|
|
73317
73593
|
}) {
|
|
73318
|
-
const tree =
|
|
73319
|
-
|
|
73320
|
-
|
|
73321
|
-
{
|
|
73322
|
-
|
|
73323
|
-
|
|
73324
|
-
|
|
73325
|
-
|
|
73326
|
-
|
|
73327
|
-
|
|
73328
|
-
}
|
|
73329
|
-
|
|
73330
|
-
|
|
73331
|
-
|
|
73332
|
-
|
|
73333
|
-
|
|
73334
|
-
|
|
73335
|
-
|
|
73336
|
-
|
|
73337
|
-
|
|
73338
|
-
|
|
73339
|
-
|
|
73340
|
-
|
|
73341
|
-
|
|
73342
|
-
|
|
73343
|
-
|
|
73344
|
-
|
|
73345
|
-
|
|
73346
|
-
|
|
73347
|
-
|
|
73348
|
-
|
|
73349
|
-
tree: childTree,
|
|
73350
|
-
moduleId: `${moduleId}/${childName}`,
|
|
73351
|
-
setSelectedModuleId
|
|
73352
|
-
}
|
|
73353
|
-
) }, `${moduleId}/${childName}`))
|
|
73354
|
-
] });
|
|
73594
|
+
const tree = dirPaths(paths);
|
|
73595
|
+
const selectedModuleId = selectedPath && Internal.splitModuleIdAndModulePath(selectedPath)[0];
|
|
73596
|
+
return /* @__PURE__ */ jsx("div", { className: "flex flex-col w-full py-2 text-xs", children: Object.entries(tree).map(([dir, files]) => {
|
|
73597
|
+
return /* @__PURE__ */ jsxs("div", { className: "px-4 py-2", children: [
|
|
73598
|
+
dir && /* @__PURE__ */ jsx("div", { className: "font-bold", children: /* @__PURE__ */ jsx(Path, { children: dir }) }),
|
|
73599
|
+
/* @__PURE__ */ jsx(
|
|
73600
|
+
"div",
|
|
73601
|
+
{
|
|
73602
|
+
className: classNames({
|
|
73603
|
+
"flex flex-col py-2 justify-start items-start": !!dir
|
|
73604
|
+
}),
|
|
73605
|
+
children: files.map((file) => {
|
|
73606
|
+
const moduleId = `/${dir}/${file}`;
|
|
73607
|
+
return /* @__PURE__ */ jsx(
|
|
73608
|
+
"button",
|
|
73609
|
+
{
|
|
73610
|
+
className: classNames("block px-2 py-1 rounded-full", {
|
|
73611
|
+
"bg-accent text-accent-foreground": selectedModuleId === moduleId
|
|
73612
|
+
}),
|
|
73613
|
+
onClick: () => {
|
|
73614
|
+
setSelectedModuleId(moduleId);
|
|
73615
|
+
},
|
|
73616
|
+
children: file
|
|
73617
|
+
},
|
|
73618
|
+
moduleId
|
|
73619
|
+
);
|
|
73620
|
+
})
|
|
73621
|
+
}
|
|
73622
|
+
)
|
|
73623
|
+
] }, `/${dir}`);
|
|
73624
|
+
}) });
|
|
73355
73625
|
}
|
|
73356
73626
|
const theme = {
|
|
73357
73627
|
tags: {
|
|
@@ -73543,76 +73813,90 @@ function ValOverlay({
|
|
|
73543
73813
|
windowSize,
|
|
73544
73814
|
setWindowSize
|
|
73545
73815
|
},
|
|
73546
|
-
children: /* @__PURE__ */ jsxs(
|
|
73547
|
-
|
|
73548
|
-
|
|
73549
|
-
|
|
73550
|
-
|
|
73551
|
-
|
|
73552
|
-
|
|
73553
|
-
|
|
73554
|
-
|
|
73555
|
-
|
|
73556
|
-
|
|
73557
|
-
|
|
73558
|
-
|
|
73559
|
-
|
|
73560
|
-
|
|
73561
|
-
setHoverTarget,
|
|
73562
|
-
setEditMode,
|
|
73563
|
-
setWindowTarget
|
|
73564
|
-
}
|
|
73565
|
-
),
|
|
73566
|
-
editMode === "window" && windowTarget && /* @__PURE__ */ jsx(
|
|
73567
|
-
ValWindow,
|
|
73568
|
-
{
|
|
73569
|
-
onClose: () => {
|
|
73570
|
-
setWindowTarget(null);
|
|
73571
|
-
setEditMode("hover");
|
|
73572
|
-
},
|
|
73573
|
-
children: /* @__PURE__ */ jsx(
|
|
73574
|
-
"div",
|
|
73816
|
+
children: /* @__PURE__ */ jsxs(
|
|
73817
|
+
"div",
|
|
73818
|
+
{
|
|
73819
|
+
"data-mode": theme2,
|
|
73820
|
+
className: "font-serif antialiased",
|
|
73821
|
+
style: {
|
|
73822
|
+
position: "fixed",
|
|
73823
|
+
top: 0,
|
|
73824
|
+
left: 0,
|
|
73825
|
+
zIndex: 8999
|
|
73826
|
+
// 1 less than the NextJS error z-index: 9000
|
|
73827
|
+
},
|
|
73828
|
+
children: [
|
|
73829
|
+
/* @__PURE__ */ jsx("div", { className: "fixed -translate-y-1/2 right-4 top-1/2 z-overlay", children: /* @__PURE__ */ jsx(
|
|
73830
|
+
ValMenu,
|
|
73575
73831
|
{
|
|
73576
|
-
|
|
73577
|
-
|
|
73578
|
-
|
|
73832
|
+
direction: "vertical",
|
|
73833
|
+
api,
|
|
73834
|
+
patches,
|
|
73835
|
+
onCommit: () => {
|
|
73836
|
+
setPatchResetId((patchResetId) => patchResetId + 1);
|
|
73837
|
+
}
|
|
73838
|
+
}
|
|
73839
|
+
) }),
|
|
73840
|
+
session.status === "success" && session.data.enabled && editMode === "hover" && hoverTarget.path && /* @__PURE__ */ jsx(
|
|
73841
|
+
ValHover,
|
|
73842
|
+
{
|
|
73843
|
+
hoverTarget,
|
|
73844
|
+
setHoverTarget,
|
|
73845
|
+
setEditMode,
|
|
73846
|
+
setWindowTarget
|
|
73847
|
+
}
|
|
73848
|
+
),
|
|
73849
|
+
editMode === "window" && windowTarget && /* @__PURE__ */ jsx(
|
|
73850
|
+
ValWindow,
|
|
73851
|
+
{
|
|
73852
|
+
onClose: () => {
|
|
73853
|
+
setWindowTarget(null);
|
|
73854
|
+
setEditMode("hover");
|
|
73579
73855
|
},
|
|
73580
|
-
children:
|
|
73581
|
-
|
|
73582
|
-
|
|
73583
|
-
|
|
73584
|
-
|
|
73585
|
-
|
|
73586
|
-
] }, path);
|
|
73587
|
-
}
|
|
73588
|
-
const { source, schema } = data.data;
|
|
73589
|
-
if (!source || !schema) {
|
|
73590
|
-
return /* @__PURE__ */ jsxs("div", { children: [
|
|
73591
|
-
"Module: ",
|
|
73592
|
-
path,
|
|
73593
|
-
" is missing source or schema"
|
|
73594
|
-
] });
|
|
73595
|
-
}
|
|
73596
|
-
return /* @__PURE__ */ jsx(
|
|
73597
|
-
AnyVal,
|
|
73598
|
-
{
|
|
73599
|
-
initOnSubmit,
|
|
73600
|
-
path,
|
|
73601
|
-
schema,
|
|
73602
|
-
source,
|
|
73603
|
-
setSelectedPath: () => {
|
|
73604
|
-
},
|
|
73605
|
-
field: path,
|
|
73606
|
-
top: true
|
|
73856
|
+
children: /* @__PURE__ */ jsx(
|
|
73857
|
+
"div",
|
|
73858
|
+
{
|
|
73859
|
+
className: "p-4",
|
|
73860
|
+
style: {
|
|
73861
|
+
maxHeight: windowSize == null ? void 0 : windowSize.innerHeight
|
|
73607
73862
|
},
|
|
73608
|
-
path
|
|
73609
|
-
|
|
73610
|
-
|
|
73863
|
+
children: Object.entries(formData).map(([path, data]) => {
|
|
73864
|
+
if (data.status !== "success") {
|
|
73865
|
+
return /* @__PURE__ */ jsxs("div", { children: [
|
|
73866
|
+
path,
|
|
73867
|
+
": ",
|
|
73868
|
+
data.status
|
|
73869
|
+
] }, path);
|
|
73870
|
+
}
|
|
73871
|
+
const { source, schema } = data.data;
|
|
73872
|
+
if (!source || !schema) {
|
|
73873
|
+
return /* @__PURE__ */ jsxs("div", { children: [
|
|
73874
|
+
"Module: ",
|
|
73875
|
+
path,
|
|
73876
|
+
" is missing source or schema"
|
|
73877
|
+
] });
|
|
73878
|
+
}
|
|
73879
|
+
return /* @__PURE__ */ jsx(
|
|
73880
|
+
AnyVal,
|
|
73881
|
+
{
|
|
73882
|
+
initOnSubmit,
|
|
73883
|
+
path,
|
|
73884
|
+
schema,
|
|
73885
|
+
source,
|
|
73886
|
+
setSelectedPath: () => {
|
|
73887
|
+
},
|
|
73888
|
+
top: true
|
|
73889
|
+
},
|
|
73890
|
+
path
|
|
73891
|
+
);
|
|
73892
|
+
})
|
|
73893
|
+
}
|
|
73894
|
+
)
|
|
73611
73895
|
}
|
|
73612
73896
|
)
|
|
73613
|
-
|
|
73614
|
-
|
|
73615
|
-
|
|
73897
|
+
]
|
|
73898
|
+
}
|
|
73899
|
+
)
|
|
73616
73900
|
}
|
|
73617
73901
|
);
|
|
73618
73902
|
}
|
|
@@ -73679,7 +73963,7 @@ function ValHover({
|
|
|
73679
73963
|
"div",
|
|
73680
73964
|
{
|
|
73681
73965
|
id: "val-hover",
|
|
73682
|
-
className: "fixed border-2 cursor-pointer z-overlay-hover border-
|
|
73966
|
+
className: "fixed border-2 cursor-pointer z-overlay-hover border-accent",
|
|
73683
73967
|
style: {
|
|
73684
73968
|
top: rect == null ? void 0 : rect.top,
|
|
73685
73969
|
left: rect == null ? void 0 : rect.left,
|
|
@@ -73700,7 +73984,7 @@ function ValHover({
|
|
|
73700
73984
|
children: /* @__PURE__ */ jsx("div", { className: "flex items-center justify-end w-full text-xs", children: /* @__PURE__ */ jsx(
|
|
73701
73985
|
"div",
|
|
73702
73986
|
{
|
|
73703
|
-
className: "flex items-center justify-center px-3 py-1 text-
|
|
73987
|
+
className: "flex items-center justify-center px-3 py-1 text-accent-foreground bg-accent border-l-2 border-b-2 border-accent",
|
|
73704
73988
|
style: {
|
|
73705
73989
|
maxHeight: (rect == null ? void 0 : rect.height) && rect.height - 4,
|
|
73706
73990
|
fontSize: (rect == null ? void 0 : rect.height) && rect.height <= 16 ? rect.height - 4 : void 0
|
|
@@ -73744,9 +74028,19 @@ function useHoverTarget(editMode) {
|
|
|
73744
74028
|
setTargetRect(targetElement.getBoundingClientRect());
|
|
73745
74029
|
}
|
|
73746
74030
|
};
|
|
74031
|
+
const observer = new ResizeObserver(() => {
|
|
74032
|
+
if (targetElement) {
|
|
74033
|
+
setTargetRect(targetElement.getBoundingClientRect());
|
|
74034
|
+
}
|
|
74035
|
+
});
|
|
74036
|
+
const valUIElement = document.getElementById("val-ui");
|
|
74037
|
+
if (targetElement && valUIElement) {
|
|
74038
|
+
observer.observe(valUIElement);
|
|
74039
|
+
}
|
|
73747
74040
|
document.addEventListener("scroll", scrollListener, { passive: true });
|
|
73748
74041
|
return () => {
|
|
73749
74042
|
document.removeEventListener("scroll", scrollListener);
|
|
74043
|
+
observer.disconnect();
|
|
73750
74044
|
};
|
|
73751
74045
|
}, [targetElement]);
|
|
73752
74046
|
return [
|
|
@@ -73793,7 +74087,7 @@ function useInitEditMode() {
|
|
|
73793
74087
|
}, []);
|
|
73794
74088
|
return [editMode, setEditMode];
|
|
73795
74089
|
}
|
|
73796
|
-
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";
|
|
74090
|
+
const styleCss = "/*\n Need to explicitly set config path, otherwise it may fail to resolve when\n built from outside packages/ui.\n*/\n\n/*\n ! tailwindcss v3.3.5 | MIT License | https://tailwindcss.com\n*/\n\n/*\n1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)\n2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116)\n*/\n\n*,\n::before,\n::after {\n box-sizing: border-box; /* 1 */\n border-width: 0; /* 2 */\n border-style: solid; /* 2 */\n border-color: #e5e7eb; /* 2 */\n}\n\n::before,\n::after {\n --tw-content: '';\n}\n\n/*\n1. Use a consistent sensible line-height in all browsers.\n2. Prevent adjustments of font size after orientation changes in iOS.\n3. Use a more readable tab size.\n4. Use the user's configured `sans` font-family by default.\n5. Use the user's configured `sans` font-feature-settings by default.\n6. Use the user's configured `sans` font-variation-settings by default.\n*/\n\nhtml {\n line-height: 1.5; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n -moz-tab-size: 4; /* 3 */\n -o-tab-size: 4;\n tab-size: 4; /* 3 */\n font-family: 'Roboto', sans-serif; /* 4 */\n font-feature-settings: normal; /* 5 */\n font-variation-settings: normal; /* 6 */\n}\n\n/*\n1. Remove the margin in all browsers.\n2. Inherit line-height from `html` so users can set them as a class directly on the `html` element.\n*/\n\nbody {\n margin: 0; /* 1 */\n line-height: inherit; /* 2 */\n}\n\n/*\n1. Add the correct height in Firefox.\n2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)\n3. Ensure horizontal rules are visible by default.\n*/\n\nhr {\n height: 0; /* 1 */\n color: inherit; /* 2 */\n border-top-width: 1px; /* 3 */\n}\n\n/*\nAdd the correct text decoration in Chrome, Edge, and Safari.\n*/\n\nabbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n}\n\n/*\nRemove the default font size and weight for headings.\n*/\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n font-size: inherit;\n font-weight: inherit;\n}\n\n/*\nReset links to optimize for opt-in styling instead of opt-out.\n*/\n\na {\n color: inherit;\n text-decoration: inherit;\n}\n\n/*\nAdd the correct font weight in Edge and Safari.\n*/\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/*\n1. Use the user's configured `mono` font family by default.\n2. Correct the odd `em` font sizing in all browsers.\n*/\n\ncode,\nkbd,\nsamp,\npre {\n font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/*\nAdd the correct font size in all browsers.\n*/\n\nsmall {\n font-size: 80%;\n}\n\n/*\nPrevent `sub` and `sup` elements from affecting the line height in all browsers.\n*/\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/*\n1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)\n2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)\n3. Remove gaps between table borders by default.\n*/\n\ntable {\n text-indent: 0; /* 1 */\n border-color: inherit; /* 2 */\n border-collapse: collapse; /* 3 */\n}\n\n/*\n1. Change the font styles in all browsers.\n2. Remove the margin in Firefox and Safari.\n3. Remove default padding in all browsers.\n*/\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-feature-settings: inherit; /* 1 */\n font-variation-settings: inherit; /* 1 */\n font-size: 100%; /* 1 */\n font-weight: inherit; /* 1 */\n line-height: inherit; /* 1 */\n color: inherit; /* 1 */\n margin: 0; /* 2 */\n padding: 0; /* 3 */\n}\n\n/*\nRemove the inheritance of text transform in Edge and Firefox.\n*/\n\nbutton,\nselect {\n text-transform: none;\n}\n\n/*\n1. Correct the inability to style clickable types in iOS and Safari.\n2. Remove default button styles.\n*/\n\nbutton,\n[type='button'],\n[type='reset'],\n[type='submit'] {\n -webkit-appearance: button; /* 1 */\n background-color: transparent; /* 2 */\n background-image: none; /* 2 */\n}\n\n/*\nUse the modern Firefox focus style for all focusable elements.\n*/\n\n:-moz-focusring {\n outline: auto;\n}\n\n/*\nRemove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737)\n*/\n\n:-moz-ui-invalid {\n box-shadow: none;\n}\n\n/*\nAdd the correct vertical alignment in Chrome and Firefox.\n*/\n\nprogress {\n vertical-align: baseline;\n}\n\n/*\nCorrect the cursor style of increment and decrement buttons in Safari.\n*/\n\n::-webkit-inner-spin-button,\n::-webkit-outer-spin-button {\n height: auto;\n}\n\n/*\n1. Correct the odd appearance in Chrome and Safari.\n2. Correct the outline style in Safari.\n*/\n\n[type='search'] {\n -webkit-appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/*\nRemove the inner padding in Chrome and Safari on macOS.\n*/\n\n::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/*\n1. Correct the inability to style clickable types in iOS and Safari.\n2. Change font properties to `inherit` in Safari.\n*/\n\n::-webkit-file-upload-button {\n -webkit-appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/*\nAdd the correct display in Chrome and Safari.\n*/\n\nsummary {\n display: list-item;\n}\n\n/*\nRemoves the default spacing and border for appropriate elements.\n*/\n\nblockquote,\ndl,\ndd,\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\nhr,\nfigure,\np,\npre {\n margin: 0;\n}\n\nfieldset {\n margin: 0;\n padding: 0;\n}\n\nlegend {\n padding: 0;\n}\n\nol,\nul,\nmenu {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n/*\nReset default styling for dialogs.\n*/\n\ndialog {\n padding: 0;\n}\n\n/*\nPrevent resizing textareas horizontally by default.\n*/\n\ntextarea {\n resize: vertical;\n}\n\n/*\n1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300)\n2. Set the default placeholder color to the user's configured gray 400 color.\n*/\n\ninput::-moz-placeholder, textarea::-moz-placeholder {\n opacity: 1; /* 1 */\n color: #9ca3af; /* 2 */\n}\n\ninput::placeholder,\ntextarea::placeholder {\n opacity: 1; /* 1 */\n color: #9ca3af; /* 2 */\n}\n\n/*\nSet the default cursor for buttons.\n*/\n\nbutton,\n[role=\"button\"] {\n cursor: pointer;\n}\n\n/*\nMake sure disabled buttons don't get the pointer cursor.\n*/\n\n:disabled {\n cursor: default;\n}\n\n/*\n1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14)\n2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210)\n This can trigger a poorly considered lint error in some tools but is included by design.\n*/\n\nimg,\nsvg,\nvideo,\ncanvas,\naudio,\niframe,\nembed,\nobject {\n display: block; /* 1 */\n vertical-align: middle; /* 2 */\n}\n\n/*\nConstrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14)\n*/\n\nimg,\nvideo {\n max-width: 100%;\n height: auto;\n}\n\n/* Make elements with the HTML hidden attribute stay hidden by default */\n\n[hidden] {\n display: none;\n}\n\n/* :host for use with Shadow DOM, copied from the TailwindCSS prelude */\n\n:host {\n --background: 0 0% 100%;\n --foreground: 222.2 84% 4.9%;\n\n --card: 0 0% 100%;\n --card-foreground: 222.2 84% 4.9%;\n\n --popover: 0 0% 100%;\n --popover-foreground: 222.2 84% 4.9%;\n\n --primary: 222.2 47.4% 11.2%;\n --primary-foreground: 210 40% 98%;\n\n --secondary: 210 40% 96.1%;\n --secondary-foreground: 222.2 47.4% 11.2%;\n\n --muted: 0 0% 57.3%;\n --muted-foreground: 215.4 16.3% 46.9%;\n\n --accent: 273 60% 51%;\n --accent-foreground: 110 10% 94%;\n\n --destructive: 0 84.2% 60.2%;\n --destructive-foreground: 210 40% 98%;\n\n --border: 214.3 31.8% 91.4%;\n --input: 214.3 31.8% 91.4%;\n --ring: 222.2 84% 4.9%;\n\n --radius: 0.5rem;\n }\n\n:root {\n --background: 110 10% 94%;\n --foreground: 222.2 84% 4.9%;\n\n --card: 0 0% 100%;\n --card-foreground: 222.2 84% 4.9%;\n\n --popover: 0 0% 100%;\n --popover-foreground: 222.2 84% 4.9%;\n\n --primary: 222.2 47.4% 11.2%;\n --primary-foreground: 210 40% 98%;\n\n --secondary: 210 40% 96.1%;\n --secondary-foreground: 222.2 47.4% 11.2%;\n\n --muted: 0 0% 57.3%;\n --muted-foreground: 215.4 16.3% 46.9%;\n\n --accent: 273 60% 51%;\n --accent-foreground: 110 10% 94%;\n\n --destructive: 0 84.2% 60.2%;\n --destructive-foreground: 210 40% 98%;\n\n --border: 214.3 31.8% 91.4%;\n --input: 212.7 9.1% 76.3%;\n --ring: 222.2 84% 4.9%;\n\n --radius: 0.5rem;\n }\n\n/* dark theme */\n\n*[data-mode=\"dark\"] {\n --background: 0 0% 4%;\n --foreground: 210 40% 98%;\n\n --card: 222.2 84% 4.9%;\n --card-foreground: 210 40% 98%;\n\n --popover: 222.2 84% 4.9%;\n --popover-foreground: 210 40% 98%;\n\n --primary: 210 40% 98%;\n --primary-foreground: 222.2 47.4% 11.2%;\n\n --secondary: 217.2 32.6% 17.5%;\n --secondary-foreground: 210 40% 98%;\n\n --muted: 178 23% 76%;\n --muted-foreground: 215 20.2% 65.1%;\n\n --accent: 159 60% 51%;\n --accent-foreground: 210 40% 98%;\n\n --destructive: 0 62.8% 30.6%;\n --destructive-foreground: 210 40% 98%;\n\n --border: 217.2 32.6% 17.5%;\n --input: 217.2 32.6% 17.5%;\n --ring: 212.7 26.8% 83.9%;\n }\n\n* {\n border-color: hsl(var(--border));\n}\n\nbody {\n background-color: hsl(var(--background));\n color: hsl(var(--foreground));\n}\n\n*, ::before, ::after {\n --tw-border-spacing-x: 0;\n --tw-border-spacing-y: 0;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-rotate: 0;\n --tw-skew-x: 0;\n --tw-skew-y: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-pan-x: ;\n --tw-pan-y: ;\n --tw-pinch-zoom: ;\n --tw-scroll-snap-strictness: proximity;\n --tw-gradient-from-position: ;\n --tw-gradient-via-position: ;\n --tw-gradient-to-position: ;\n --tw-ordinal: ;\n --tw-slashed-zero: ;\n --tw-numeric-figure: ;\n --tw-numeric-spacing: ;\n --tw-numeric-fraction: ;\n --tw-ring-inset: ;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: rgb(59 130 246 / 0.5);\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n --tw-blur: ;\n --tw-brightness: ;\n --tw-contrast: ;\n --tw-grayscale: ;\n --tw-hue-rotate: ;\n --tw-invert: ;\n --tw-saturate: ;\n --tw-sepia: ;\n --tw-drop-shadow: ;\n --tw-backdrop-blur: ;\n --tw-backdrop-brightness: ;\n --tw-backdrop-contrast: ;\n --tw-backdrop-grayscale: ;\n --tw-backdrop-hue-rotate: ;\n --tw-backdrop-invert: ;\n --tw-backdrop-opacity: ;\n --tw-backdrop-saturate: ;\n --tw-backdrop-sepia: ;\n}\n\n::backdrop {\n --tw-border-spacing-x: 0;\n --tw-border-spacing-y: 0;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-rotate: 0;\n --tw-skew-x: 0;\n --tw-skew-y: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-pan-x: ;\n --tw-pan-y: ;\n --tw-pinch-zoom: ;\n --tw-scroll-snap-strictness: proximity;\n --tw-gradient-from-position: ;\n --tw-gradient-via-position: ;\n --tw-gradient-to-position: ;\n --tw-ordinal: ;\n --tw-slashed-zero: ;\n --tw-numeric-figure: ;\n --tw-numeric-spacing: ;\n --tw-numeric-fraction: ;\n --tw-ring-inset: ;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: rgb(59 130 246 / 0.5);\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n --tw-blur: ;\n --tw-brightness: ;\n --tw-contrast: ;\n --tw-grayscale: ;\n --tw-hue-rotate: ;\n --tw-invert: ;\n --tw-saturate: ;\n --tw-sepia: ;\n --tw-drop-shadow: ;\n --tw-backdrop-blur: ;\n --tw-backdrop-brightness: ;\n --tw-backdrop-contrast: ;\n --tw-backdrop-grayscale: ;\n --tw-backdrop-hue-rotate: ;\n --tw-backdrop-invert: ;\n --tw-backdrop-opacity: ;\n --tw-backdrop-saturate: ;\n --tw-backdrop-sepia: ;\n}\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n}\n.pointer-events-none {\n pointer-events: none;\n}\n.invisible {\n visibility: hidden;\n}\n.static {\n position: static;\n}\n.fixed {\n position: fixed;\n}\n.absolute {\n position: absolute;\n}\n.relative {\n position: relative;\n}\n.sticky {\n position: sticky;\n}\n.inset-0 {\n inset: 0px;\n}\n.inset-y-0 {\n top: 0px;\n bottom: 0px;\n}\n.-left-2 {\n left: -0.5rem;\n}\n.-right-\\[10px\\] {\n right: -10px;\n}\n.-top-\\[10px\\] {\n top: -10px;\n}\n.-top-\\[4px\\] {\n top: -4px;\n}\n.bottom-0 {\n bottom: 0px;\n}\n.left-0 {\n left: 0px;\n}\n.left-1 {\n left: 0.25rem;\n}\n.left-2 {\n left: 0.5rem;\n}\n.left-\\[50\\%\\] {\n left: 50%;\n}\n.right-0 {\n right: 0px;\n}\n.right-1 {\n right: 0.25rem;\n}\n.right-4 {\n right: 1rem;\n}\n.right-\\[16px\\] {\n right: 16px;\n}\n.top-0 {\n top: 0px;\n}\n.top-1\\/2 {\n top: 50%;\n}\n.top-4 {\n top: 1rem;\n}\n.top-\\[50\\%\\] {\n top: 50%;\n}\n.z-50 {\n z-index: 50;\n}\n.z-\\[1\\] {\n z-index: 1;\n}\n.z-\\[5\\] {\n z-index: 5;\n}\n.z-overlay {\n z-index: 4;\n}\n.m-4 {\n margin: 1rem;\n}\n.-mx-1 {\n margin-left: -0.25rem;\n margin-right: -0.25rem;\n}\n.-my-2 {\n margin-top: -0.5rem;\n margin-bottom: -0.5rem;\n}\n.-my-\\[100px\\] {\n margin-top: -100px;\n margin-bottom: -100px;\n}\n.mx-2 {\n margin-left: 0.5rem;\n margin-right: 0.5rem;\n}\n.my-1 {\n margin-top: 0.25rem;\n margin-bottom: 0.25rem;\n}\n.mb-4 {\n margin-bottom: 1rem;\n}\n.ml-0 {\n margin-left: 0px;\n}\n.ml-2 {\n margin-left: 0.5rem;\n}\n.ml-4 {\n margin-left: 1rem;\n}\n.ml-\\[20px\\] {\n margin-left: 20px;\n}\n.ml-auto {\n margin-left: auto;\n}\n.mr-2 {\n margin-right: 0.5rem;\n}\n.mt-2 {\n margin-top: 0.5rem;\n}\n.block {\n display: block;\n}\n.inline {\n display: inline;\n}\n.flex {\n display: flex;\n}\n.inline-flex {\n display: inline-flex;\n}\n.table {\n display: table;\n}\n.grid {\n display: grid;\n}\n.hidden {\n display: none;\n}\n.aspect-square {\n aspect-ratio: 1 / 1;\n}\n.h-10 {\n height: 2.5rem;\n}\n.h-11 {\n height: 2.75rem;\n}\n.h-2 {\n height: 0.5rem;\n}\n.h-2\\.5 {\n height: 0.625rem;\n}\n.h-3 {\n height: 0.75rem;\n}\n.h-3\\.5 {\n height: 0.875rem;\n}\n.h-4 {\n height: 1rem;\n}\n.h-7 {\n height: 1.75rem;\n}\n.h-9 {\n height: 2.25rem;\n}\n.h-\\[100\\] {\n height: 100;\n}\n.h-\\[12px\\] {\n height: 12px;\n}\n.h-\\[14px\\] {\n height: 14px;\n}\n.h-\\[18px\\] {\n height: 18px;\n}\n.h-\\[1px\\] {\n height: 1px;\n}\n.h-\\[20px\\] {\n height: 20px;\n}\n.h-\\[22px\\] {\n height: 22px;\n}\n.h-\\[24px\\] {\n height: 24px;\n}\n.h-\\[32px\\] {\n height: 32px;\n}\n.h-\\[50px\\] {\n height: 50px;\n}\n.h-\\[75px\\] {\n height: 75px;\n}\n.h-\\[9px\\] {\n height: 9px;\n}\n.h-\\[var\\(--radix-select-trigger-height\\)\\] {\n height: var(--radix-select-trigger-height);\n}\n.h-full {\n height: 100%;\n}\n.h-px {\n height: 1px;\n}\n.h-screen {\n height: 100vh;\n}\n.max-h-\\[300px\\] {\n max-height: 300px;\n}\n.min-h-\\[200px\\] {\n min-height: 200px;\n}\n.min-h-\\[300px\\] {\n min-height: 300px;\n}\n.min-h-screen {\n min-height: 100vh;\n}\n.w-0 {\n width: 0px;\n}\n.w-1\\/3 {\n width: 33.333333%;\n}\n.w-10 {\n width: 2.5rem;\n}\n.w-2 {\n width: 0.5rem;\n}\n.w-2\\.5 {\n width: 0.625rem;\n}\n.w-3 {\n width: 0.75rem;\n}\n.w-3\\.5 {\n width: 0.875rem;\n}\n.w-4 {\n width: 1rem;\n}\n.w-5 {\n width: 1.25rem;\n}\n.w-7 {\n width: 1.75rem;\n}\n.w-72 {\n width: 18rem;\n}\n.w-9 {\n width: 2.25rem;\n}\n.w-\\[12px\\] {\n width: 12px;\n}\n.w-\\[14px\\] {\n width: 14px;\n}\n.w-\\[1px\\] {\n width: 1px;\n}\n.w-\\[20px\\] {\n width: 20px;\n}\n.w-\\[24px\\] {\n width: 24px;\n}\n.w-\\[300px\\] {\n width: 300px;\n}\n.w-\\[32px\\] {\n width: 32px;\n}\n.w-\\[44px\\] {\n width: 44px;\n}\n.w-\\[9px\\] {\n width: 9px;\n}\n.w-fit {\n width: -moz-fit-content;\n width: fit-content;\n}\n.w-full {\n width: 100%;\n}\n.w-screen {\n width: 100vw;\n}\n.min-w-0 {\n min-width: 0px;\n}\n.min-w-\\[320px\\] {\n min-width: 320px;\n}\n.min-w-\\[500px\\] {\n min-width: 500px;\n}\n.min-w-\\[8rem\\] {\n min-width: 8rem;\n}\n.min-w-\\[var\\(--radix-select-trigger-width\\)\\] {\n min-width: var(--radix-select-trigger-width);\n}\n.max-w-4xl {\n max-width: 56rem;\n}\n.max-w-\\[1000px\\] {\n max-width: 1000px;\n}\n.max-w-\\[10vw\\] {\n max-width: 10vw;\n}\n.max-w-\\[300px\\] {\n max-width: 300px;\n}\n.max-w-\\[90vw\\] {\n max-width: 90vw;\n}\n.max-w-lg {\n max-width: 32rem;\n}\n.max-w-xl {\n max-width: 36rem;\n}\n.flex-1 {\n flex: 1 1 0%;\n}\n.flex-auto {\n flex: 1 1 auto;\n}\n.flex-shrink-0 {\n flex-shrink: 0;\n}\n.shrink-0 {\n flex-shrink: 0;\n}\n.flex-grow {\n flex-grow: 1;\n}\n.border-collapse {\n border-collapse: collapse;\n}\n.-translate-y-1\\/2 {\n --tw-translate-y: -50%;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.translate-x-\\[-50\\%\\] {\n --tw-translate-x: -50%;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.translate-y-\\[-50\\%\\] {\n --tw-translate-y: -50%;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.-rotate-90 {\n --tw-rotate: -90deg;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.rotate-90 {\n --tw-rotate: 90deg;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.rotate-\\[-90deg\\] {\n --tw-rotate: -90deg;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.rotate-\\[90deg\\] {\n --tw-rotate: 90deg;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.transform {\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.cursor-col-resize {\n cursor: col-resize;\n}\n.cursor-default {\n cursor: default;\n}\n.cursor-grab {\n cursor: grab;\n}\n.cursor-pointer {\n cursor: pointer;\n}\n.cursor-se-resize {\n cursor: se-resize;\n}\n.touch-none {\n touch-action: none;\n}\n.select-none {\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n}\n.resize-none {\n resize: none;\n}\n.resize {\n resize: both;\n}\n.list-decimal {\n list-style-type: decimal;\n}\n.list-disc {\n list-style-type: disc;\n}\n.grid-cols-\\[min-content_1fr\\] {\n grid-template-columns: min-content 1fr;\n}\n.grid-rows-\\[1fr\\2c _min-content\\] {\n grid-template-rows: 1fr min-content;\n}\n.flex-row {\n flex-direction: row;\n}\n.flex-col {\n flex-direction: column;\n}\n.flex-col-reverse {\n flex-direction: column-reverse;\n}\n.items-start {\n align-items: flex-start;\n}\n.items-center {\n align-items: center;\n}\n.justify-start {\n justify-content: flex-start;\n}\n.justify-end {\n justify-content: flex-end;\n}\n.justify-center {\n justify-content: center;\n}\n.justify-between {\n justify-content: space-between;\n}\n.gap-1 {\n gap: 0.25rem;\n}\n.gap-2 {\n gap: 0.5rem;\n}\n.gap-3 {\n gap: 0.75rem;\n}\n.gap-4 {\n gap: 1rem;\n}\n.gap-5 {\n gap: 1.25rem;\n}\n.gap-\\[0\\.5em\\] {\n gap: 0.5em;\n}\n.gap-\\[36px\\] {\n gap: 36px;\n}\n.gap-x-4 {\n -moz-column-gap: 1rem;\n column-gap: 1rem;\n}\n.gap-y-1 {\n row-gap: 0.25rem;\n}\n.gap-y-2 {\n row-gap: 0.5rem;\n}\n.gap-y-4 {\n row-gap: 1rem;\n}\n.gap-y-8 {\n row-gap: 2rem;\n}\n.space-x-1 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-x-reverse: 0;\n margin-right: calc(0.25rem * var(--tw-space-x-reverse));\n margin-left: calc(0.25rem * calc(1 - var(--tw-space-x-reverse)));\n}\n.space-y-1 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(0.25rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(0.25rem * var(--tw-space-y-reverse));\n}\n.space-y-1\\.5 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(0.375rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(0.375rem * var(--tw-space-y-reverse));\n}\n.space-y-2 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(0.5rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(0.5rem * var(--tw-space-y-reverse));\n}\n.space-y-4 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(1rem * var(--tw-space-y-reverse));\n}\n.overflow-auto {\n overflow: auto;\n}\n.overflow-hidden {\n overflow: hidden;\n}\n.overflow-clip {\n overflow: clip;\n}\n.overflow-scroll {\n overflow: scroll;\n}\n.overflow-y-auto {\n overflow-y: auto;\n}\n.overflow-x-hidden {\n overflow-x: hidden;\n}\n.overflow-y-scroll {\n overflow-y: scroll;\n}\n.truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.whitespace-nowrap {\n white-space: nowrap;\n}\n.rounded {\n border-radius: 0.25rem;\n}\n.rounded-\\[inherit\\] {\n border-radius: inherit;\n}\n.rounded-full {\n border-radius: 9999px;\n}\n.rounded-lg {\n border-radius: var(--radius);\n}\n.rounded-md {\n border-radius: calc(var(--radius) - 2px);\n}\n.rounded-sm {\n border-radius: calc(var(--radius) - 4px);\n}\n.rounded-b-none {\n border-bottom-right-radius: 0px;\n border-bottom-left-radius: 0px;\n}\n.rounded-b-sm {\n border-bottom-right-radius: calc(var(--radius) - 4px);\n border-bottom-left-radius: calc(var(--radius) - 4px);\n}\n.rounded-t-none {\n border-top-left-radius: 0px;\n border-top-right-radius: 0px;\n}\n.border {\n border-width: 1px;\n}\n.border-2 {\n border-width: 2px;\n}\n.border-\\[2px\\] {\n border-width: 2px;\n}\n.border-x {\n border-left-width: 1px;\n border-right-width: 1px;\n}\n.border-y {\n border-top-width: 1px;\n border-bottom-width: 1px;\n}\n.border-b {\n border-bottom-width: 1px;\n}\n.border-b-0 {\n border-bottom-width: 0px;\n}\n.border-b-2 {\n border-bottom-width: 2px;\n}\n.border-l {\n border-left-width: 1px;\n}\n.border-l-2 {\n border-left-width: 2px;\n}\n.border-r {\n border-right-width: 1px;\n}\n.border-t {\n border-top-width: 1px;\n}\n.border-t-0 {\n border-top-width: 0px;\n}\n.border-accent {\n border-color: hsl(var(--accent));\n}\n.border-border {\n border-color: hsl(var(--border));\n}\n.border-gray-400 {\n --tw-border-opacity: 1;\n border-color: rgb(156 163 175 / var(--tw-border-opacity));\n}\n.border-input {\n border-color: hsl(var(--input));\n}\n.border-primary {\n border-color: hsl(var(--primary));\n}\n.border-transparent {\n border-color: transparent;\n}\n.border-l-transparent {\n border-left-color: transparent;\n}\n.border-t-transparent {\n border-top-color: transparent;\n}\n.bg-accent {\n background-color: hsl(var(--accent));\n}\n.bg-background {\n background-color: hsl(var(--background));\n}\n.bg-background\\/80 {\n background-color: hsl(var(--background) / 0.8);\n}\n.bg-border {\n background-color: hsl(var(--border));\n}\n.bg-card {\n background-color: hsl(var(--card));\n}\n.bg-card-foreground {\n background-color: hsl(var(--card-foreground));\n}\n.bg-destructive {\n background-color: hsl(var(--destructive));\n}\n.bg-gray-300 {\n --tw-bg-opacity: 1;\n background-color: rgb(209 213 219 / var(--tw-bg-opacity));\n}\n.bg-gray-500 {\n --tw-bg-opacity: 1;\n background-color: rgb(107 114 128 / var(--tw-bg-opacity));\n}\n.bg-muted {\n background-color: hsl(var(--muted));\n}\n.bg-popover {\n background-color: hsl(var(--popover));\n}\n.bg-primary {\n background-color: hsl(var(--primary));\n}\n.bg-red-500 {\n --tw-bg-opacity: 1;\n background-color: rgb(239 68 68 / var(--tw-bg-opacity));\n}\n.bg-secondary {\n background-color: hsl(var(--secondary));\n}\n.bg-transparent {\n background-color: transparent;\n}\n.bg-white {\n --tw-bg-opacity: 1;\n background-color: rgb(255 255 255 / var(--tw-bg-opacity));\n}\n.bg-gradient-to-b {\n background-image: linear-gradient(to bottom, var(--tw-gradient-stops));\n}\n.bg-gradient-to-br {\n background-image: linear-gradient(to bottom right, var(--tw-gradient-stops));\n}\n.from-background\\/90 {\n --tw-gradient-from: hsl(var(--background) / 0.9) var(--tw-gradient-from-position);\n --tw-gradient-to: hsl(var(--background) / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\n}\n.from-card {\n --tw-gradient-from: hsl(var(--card)) var(--tw-gradient-from-position);\n --tw-gradient-to: hsl(var(--card) / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\n}\n.from-transparent {\n --tw-gradient-from: transparent var(--tw-gradient-from-position);\n --tw-gradient-to: rgb(0 0 0 / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\n}\n.from-40\\% {\n --tw-gradient-from-position: 40%;\n}\n.from-50\\% {\n --tw-gradient-from-position: 50%;\n}\n.to-background {\n --tw-gradient-to: hsl(var(--background)) var(--tw-gradient-to-position);\n}\n.fill-current {\n fill: currentColor;\n}\n.fill-white {\n fill: #fff;\n}\n.stroke-\\[2px\\] {\n stroke-width: 2px;\n}\n.stroke-\\[3px\\] {\n stroke-width: 3px;\n}\n.object-contain {\n -o-object-fit: contain;\n object-fit: contain;\n}\n.p-0 {\n padding: 0px;\n}\n.p-1 {\n padding: 0.25rem;\n}\n.p-10 {\n padding: 2.5rem;\n}\n.p-2 {\n padding: 0.5rem;\n}\n.p-3 {\n padding: 0.75rem;\n}\n.p-4 {\n padding: 1rem;\n}\n.p-6 {\n padding: 1.5rem;\n}\n.p-\\[1px\\] {\n padding: 1px;\n}\n.px-1 {\n padding-left: 0.25rem;\n padding-right: 0.25rem;\n}\n.px-2 {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n}\n.px-2\\.5 {\n padding-left: 0.625rem;\n padding-right: 0.625rem;\n}\n.px-3 {\n padding-left: 0.75rem;\n padding-right: 0.75rem;\n}\n.px-4 {\n padding-left: 1rem;\n padding-right: 1rem;\n}\n.px-5 {\n padding-left: 1.25rem;\n padding-right: 1.25rem;\n}\n.px-8 {\n padding-left: 2rem;\n padding-right: 2rem;\n}\n.px-\\[24px\\] {\n padding-left: 24px;\n padding-right: 24px;\n}\n.px-\\[2px\\] {\n padding-left: 2px;\n padding-right: 2px;\n}\n.py-1 {\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n}\n.py-1\\.5 {\n padding-top: 0.375rem;\n padding-bottom: 0.375rem;\n}\n.py-2 {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n}\n.py-3 {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n}\n.py-4 {\n padding-top: 1rem;\n padding-bottom: 1rem;\n}\n.py-6 {\n padding-top: 1.5rem;\n padding-bottom: 1.5rem;\n}\n.py-7 {\n padding-top: 1.75rem;\n padding-bottom: 1.75rem;\n}\n.py-\\[2px\\] {\n padding-top: 2px;\n padding-bottom: 2px;\n}\n.pb-0 {\n padding-bottom: 0px;\n}\n.pb-20 {\n padding-bottom: 5rem;\n}\n.pb-4 {\n padding-bottom: 1rem;\n}\n.pl-0 {\n padding-left: 0px;\n}\n.pl-6 {\n padding-left: 1.5rem;\n}\n.pl-8 {\n padding-left: 2rem;\n}\n.pl-\\[300px\\] {\n padding-left: 300px;\n}\n.pr-2 {\n padding-right: 0.5rem;\n}\n.pt-0 {\n padding-top: 0px;\n}\n.pt-1 {\n padding-top: 0.25rem;\n}\n.pt-2 {\n padding-top: 0.5rem;\n}\n.pt-4 {\n padding-top: 1rem;\n}\n.text-left {\n text-align: left;\n}\n.text-center {\n text-align: center;\n}\n.text-start {\n text-align: start;\n}\n.font-sans {\n font-family: 'Roboto', sans-serif;\n}\n.font-serif {\n font-family: 'Space Mono', monospace;\n}\n.text-2xl {\n font-size: 1.5rem;\n line-height: 2rem;\n}\n.text-3xl {\n font-size: 1.875rem;\n line-height: 2.25rem;\n}\n.text-4xl {\n font-size: 2.25rem;\n line-height: 2.5rem;\n}\n.text-\\[0\\.8rem\\] {\n font-size: 0.8rem;\n}\n.text-\\[12px\\] {\n font-size: 12px;\n}\n.text-lg {\n font-size: 1.125rem;\n line-height: 1.75rem;\n}\n.text-sm {\n font-size: 0.875rem;\n line-height: 1.25rem;\n}\n.text-xl {\n font-size: 1.25rem;\n line-height: 1.75rem;\n}\n.text-xs {\n font-size: 0.75rem;\n line-height: 1rem;\n}\n.font-\\[12px\\] {\n font-weight: 12px;\n}\n.font-\\[400\\] {\n font-weight: 400;\n}\n.font-\\[500\\] {\n font-weight: 500;\n}\n.font-\\[550\\] {\n font-weight: 550;\n}\n.font-bold {\n font-weight: 700;\n}\n.font-extrabold {\n font-weight: 800;\n}\n.font-medium {\n font-weight: 500;\n}\n.font-normal {\n font-weight: 400;\n}\n.font-semibold {\n font-weight: 600;\n}\n.uppercase {\n text-transform: uppercase;\n}\n.italic {\n font-style: italic;\n}\n.leading-4 {\n line-height: 1rem;\n}\n.leading-none {\n line-height: 1;\n}\n.tracking-\\[0\\.04em\\] {\n letter-spacing: 0.04em;\n}\n.tracking-tight {\n letter-spacing: -0.025em;\n}\n.tracking-wider {\n letter-spacing: 0.05em;\n}\n.tracking-widest {\n letter-spacing: 0.1em;\n}\n.text-accent {\n color: hsl(var(--accent));\n}\n.text-accent-foreground {\n color: hsl(var(--accent-foreground));\n}\n.text-background {\n color: hsl(var(--background));\n}\n.text-card-foreground {\n color: hsl(var(--card-foreground));\n}\n.text-current {\n color: currentColor;\n}\n.text-destructive {\n color: hsl(var(--destructive));\n}\n.text-destructive-foreground {\n color: hsl(var(--destructive-foreground));\n}\n.text-foreground {\n color: hsl(var(--foreground));\n}\n.text-muted {\n color: hsl(var(--muted));\n}\n.text-muted-foreground {\n color: hsl(var(--muted-foreground));\n}\n.text-popover-foreground {\n color: hsl(var(--popover-foreground));\n}\n.text-primary {\n color: hsl(var(--primary));\n}\n.text-primary-foreground {\n color: hsl(var(--primary-foreground));\n}\n.text-secondary-foreground {\n color: hsl(var(--secondary-foreground));\n}\n.text-white {\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity));\n}\n.underline {\n text-decoration-line: underline;\n}\n.line-through {\n text-decoration-line: line-through;\n}\n.underline-offset-4 {\n text-underline-offset: 4px;\n}\n.antialiased {\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n.opacity-0 {\n opacity: 0;\n}\n.opacity-100 {\n opacity: 1;\n}\n.opacity-50 {\n opacity: 0.5;\n}\n.opacity-60 {\n opacity: 0.6;\n}\n.opacity-70 {\n opacity: 0.7;\n}\n.opacity-75 {\n opacity: 0.75;\n}\n.mix-blend-difference {\n mix-blend-mode: difference;\n}\n.shadow {\n --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);\n --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.shadow-lg {\n --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);\n --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.shadow-md {\n --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);\n --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.shadow-sm {\n --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.outline-none {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n.outline {\n outline-style: solid;\n}\n.ring-0 {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n.ring-offset-background {\n --tw-ring-offset-color: hsl(var(--background));\n}\n.drop-shadow-2xl {\n --tw-drop-shadow: drop-shadow(0 25px 25px rgb(0 0 0 / 0.15));\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n.drop-shadow-\\[0px_0px_12px_hsl\\(var\\(--accent\\)\\)\\] {\n --tw-drop-shadow: drop-shadow(0px 0px 12px hsl(var(--accent)));\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n.filter {\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n.backdrop-blur-lg {\n --tw-backdrop-blur: blur(16px);\n -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n}\n.backdrop-blur-sm {\n --tw-backdrop-blur: blur(4px);\n -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n}\n.transition-all {\n transition-property: all;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.transition-colors {\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.transition-opacity {\n transition-property: opacity;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.transition-transform {\n transition-property: transform;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.duration-150 {\n transition-duration: 150ms;\n}\n.duration-200 {\n transition-duration: 200ms;\n}\n.ease-in-out {\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n}\n@keyframes enter {\n\n from {\n opacity: var(--tw-enter-opacity, 1);\n transform: translate3d(var(--tw-enter-translate-x, 0), var(--tw-enter-translate-y, 0), 0) scale3d(var(--tw-enter-scale, 1), var(--tw-enter-scale, 1), var(--tw-enter-scale, 1)) rotate(var(--tw-enter-rotate, 0));\n }\n}\n@keyframes exit {\n\n to {\n opacity: var(--tw-exit-opacity, 1);\n transform: translate3d(var(--tw-exit-translate-x, 0), var(--tw-exit-translate-y, 0), 0) scale3d(var(--tw-exit-scale, 1), var(--tw-exit-scale, 1), var(--tw-exit-scale, 1)) rotate(var(--tw-exit-rotate, 0));\n }\n}\n.animate-in {\n animation-name: enter;\n animation-duration: 150ms;\n --tw-enter-opacity: initial;\n --tw-enter-scale: initial;\n --tw-enter-rotate: initial;\n --tw-enter-translate-x: initial;\n --tw-enter-translate-y: initial;\n}\n.fade-in-0 {\n --tw-enter-opacity: 0;\n}\n.zoom-in-95 {\n --tw-enter-scale: .95;\n}\n.duration-150 {\n animation-duration: 150ms;\n}\n.duration-200 {\n animation-duration: 200ms;\n}\n.ease-in-out {\n animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n}\n.file\\:border-0::file-selector-button {\n border-width: 0px;\n}\n.file\\:bg-transparent::file-selector-button {\n background-color: transparent;\n}\n.file\\:text-sm::file-selector-button {\n font-size: 0.875rem;\n line-height: 1.25rem;\n}\n.file\\:font-medium::file-selector-button {\n font-weight: 500;\n}\n.placeholder\\:text-muted-foreground::-moz-placeholder {\n color: hsl(var(--muted-foreground));\n}\n.placeholder\\:text-muted-foreground::placeholder {\n color: hsl(var(--muted-foreground));\n}\n.focus-within\\:relative:focus-within {\n position: relative;\n}\n.hover\\:w-\\[2px\\]:hover {\n width: 2px;\n}\n.hover\\:w-\\[3px\\]:hover {\n width: 3px;\n}\n.hover\\:cursor-pointer:hover {\n cursor: pointer;\n}\n.hover\\:rounded-lg:hover {\n border-radius: var(--radius);\n}\n.hover\\:bg-accent:hover {\n background-color: hsl(var(--accent));\n}\n.hover\\:bg-border:hover {\n background-color: hsl(var(--border));\n}\n.hover\\:bg-destructive\\/90:hover {\n background-color: hsl(var(--destructive) / 0.9);\n}\n.hover\\:bg-muted:hover {\n background-color: hsl(var(--muted));\n}\n.hover\\:bg-primary:hover {\n background-color: hsl(var(--primary));\n}\n.hover\\:bg-primary\\/90:hover {\n background-color: hsl(var(--primary) / 0.9);\n}\n.hover\\:bg-red-700:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(185 28 28 / var(--tw-bg-opacity));\n}\n.hover\\:bg-secondary\\/80:hover {\n background-color: hsl(var(--secondary) / 0.8);\n}\n.hover\\:text-accent-foreground:hover {\n color: hsl(var(--accent-foreground));\n}\n.hover\\:text-muted-foreground:hover {\n color: hsl(var(--muted-foreground));\n}\n.hover\\:text-primary-foreground:hover {\n color: hsl(var(--primary-foreground));\n}\n.hover\\:text-white:hover {\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity));\n}\n.hover\\:underline:hover {\n text-decoration-line: underline;\n}\n.hover\\:opacity-100:hover {\n opacity: 1;\n}\n.focus\\:bg-accent:focus {\n background-color: hsl(var(--accent));\n}\n.focus\\:bg-primary:focus {\n background-color: hsl(var(--primary));\n}\n.focus\\:text-accent-foreground:focus {\n color: hsl(var(--accent-foreground));\n}\n.focus\\:text-primary-foreground:focus {\n color: hsl(var(--primary-foreground));\n}\n.focus\\:outline-none:focus {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n.focus\\:ring-2:focus {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n.focus\\:ring-ring:focus {\n --tw-ring-color: hsl(var(--ring));\n}\n.focus\\:ring-offset-2:focus {\n --tw-ring-offset-width: 2px;\n}\n.focus-visible\\:outline-none:focus-visible {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n.focus-visible\\:outline-accent:focus-visible {\n outline-color: hsl(var(--accent));\n}\n.focus-visible\\:ring-2:focus-visible {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n.focus-visible\\:ring-ring:focus-visible {\n --tw-ring-color: hsl(var(--ring));\n}\n.focus-visible\\:ring-offset-2:focus-visible {\n --tw-ring-offset-width: 2px;\n}\n.focus-visible\\:ring-offset-background:focus-visible {\n --tw-ring-offset-color: hsl(var(--background));\n}\n.disabled\\:pointer-events-none:disabled {\n pointer-events: none;\n}\n.disabled\\:cursor-not-allowed:disabled {\n cursor: not-allowed;\n}\n.disabled\\:text-background:disabled {\n color: hsl(var(--background));\n}\n.disabled\\:opacity-50:disabled {\n opacity: 0.5;\n}\n.peer:disabled ~ .peer-disabled\\:cursor-not-allowed {\n cursor: not-allowed;\n}\n.peer:disabled ~ .peer-disabled\\:opacity-70 {\n opacity: 0.7;\n}\n.aria-selected\\:bg-accent[aria-selected=\"true\"] {\n background-color: hsl(var(--accent));\n}\n.aria-selected\\:text-accent-foreground[aria-selected=\"true\"] {\n color: hsl(var(--accent-foreground));\n}\n.aria-selected\\:opacity-100[aria-selected=\"true\"] {\n opacity: 1;\n}\n.data-\\[disabled\\]\\:pointer-events-none[data-disabled] {\n pointer-events: none;\n}\n.data-\\[side\\=bottom\\]\\:translate-y-1[data-side=bottom] {\n --tw-translate-y: 0.25rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.data-\\[side\\=left\\]\\:-translate-x-1[data-side=left] {\n --tw-translate-x: -0.25rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.data-\\[side\\=right\\]\\:translate-x-1[data-side=right] {\n --tw-translate-x: 0.25rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.data-\\[side\\=top\\]\\:-translate-y-1[data-side=top] {\n --tw-translate-y: -0.25rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.data-\\[state\\=checked\\]\\:translate-x-5[data-state=checked] {\n --tw-translate-x: 1.25rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.data-\\[state\\=unchecked\\]\\:translate-x-0[data-state=unchecked] {\n --tw-translate-x: 0px;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n@keyframes accordion-up {\n\n from {\n height: var(--radix-accordion-content-height);\n }\n\n to {\n height: 0;\n }\n}\n.data-\\[state\\=closed\\]\\:animate-accordion-up[data-state=closed] {\n animation: accordion-up 0.2s ease-out;\n}\n@keyframes accordion-down {\n\n from {\n height: 0;\n }\n\n to {\n height: var(--radix-accordion-content-height);\n }\n}\n.data-\\[state\\=open\\]\\:animate-accordion-down[data-state=open] {\n animation: accordion-down 0.2s ease-out;\n}\n.data-\\[state\\=active\\]\\:bg-background[data-state=active] {\n background-color: hsl(var(--background));\n}\n.data-\\[state\\=checked\\]\\:bg-accent[data-state=checked] {\n background-color: hsl(var(--accent));\n}\n.data-\\[state\\=checked\\]\\:bg-primary[data-state=checked] {\n background-color: hsl(var(--primary));\n}\n.data-\\[state\\=on\\]\\:bg-accent[data-state=on] {\n background-color: hsl(var(--accent));\n}\n.data-\\[state\\=open\\]\\:bg-accent[data-state=open] {\n background-color: hsl(var(--accent));\n}\n.data-\\[state\\=unchecked\\]\\:bg-primary[data-state=unchecked] {\n background-color: hsl(var(--primary));\n}\n.data-\\[state\\=active\\]\\:text-foreground[data-state=active] {\n color: hsl(var(--foreground));\n}\n.data-\\[state\\=checked\\]\\:text-primary-foreground[data-state=checked] {\n color: hsl(var(--primary-foreground));\n}\n.data-\\[state\\=on\\]\\:text-accent-foreground[data-state=on] {\n color: hsl(var(--accent-foreground));\n}\n.data-\\[state\\=open\\]\\:text-muted-foreground[data-state=open] {\n color: hsl(var(--muted-foreground));\n}\n.data-\\[disabled\\]\\:opacity-50[data-disabled] {\n opacity: 0.5;\n}\n.data-\\[state\\=active\\]\\:shadow-sm[data-state=active] {\n --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.data-\\[state\\=open\\]\\:animate-in[data-state=open] {\n animation-name: enter;\n animation-duration: 150ms;\n --tw-enter-opacity: initial;\n --tw-enter-scale: initial;\n --tw-enter-rotate: initial;\n --tw-enter-translate-x: initial;\n --tw-enter-translate-y: initial;\n}\n.data-\\[state\\=closed\\]\\:animate-out[data-state=closed] {\n animation-name: exit;\n animation-duration: 150ms;\n --tw-exit-opacity: initial;\n --tw-exit-scale: initial;\n --tw-exit-rotate: initial;\n --tw-exit-translate-x: initial;\n --tw-exit-translate-y: initial;\n}\n.data-\\[state\\=closed\\]\\:fade-out-0[data-state=closed] {\n --tw-exit-opacity: 0;\n}\n.data-\\[state\\=open\\]\\:fade-in-0[data-state=open] {\n --tw-enter-opacity: 0;\n}\n.data-\\[state\\=closed\\]\\:zoom-out-95[data-state=closed] {\n --tw-exit-scale: .95;\n}\n.data-\\[state\\=open\\]\\:zoom-in-95[data-state=open] {\n --tw-enter-scale: .95;\n}\n.data-\\[side\\=bottom\\]\\:slide-in-from-top-2[data-side=bottom] {\n --tw-enter-translate-y: -0.5rem;\n}\n.data-\\[side\\=left\\]\\:slide-in-from-right-2[data-side=left] {\n --tw-enter-translate-x: 0.5rem;\n}\n.data-\\[side\\=right\\]\\:slide-in-from-left-2[data-side=right] {\n --tw-enter-translate-x: -0.5rem;\n}\n.data-\\[side\\=top\\]\\:slide-in-from-bottom-2[data-side=top] {\n --tw-enter-translate-y: 0.5rem;\n}\n.data-\\[state\\=closed\\]\\:slide-out-to-left-1\\/2[data-state=closed] {\n --tw-exit-translate-x: -50%;\n}\n.data-\\[state\\=closed\\]\\:slide-out-to-top-\\[48\\%\\][data-state=closed] {\n --tw-exit-translate-y: -48%;\n}\n.data-\\[state\\=open\\]\\:slide-in-from-left-1\\/2[data-state=open] {\n --tw-enter-translate-x: -50%;\n}\n.data-\\[state\\=open\\]\\:slide-in-from-top-\\[48\\%\\][data-state=open] {\n --tw-enter-translate-y: -48%;\n}\n:is([data-mode=\"dark\"] .dark\\:border-white) {\n --tw-border-opacity: 1;\n border-color: rgb(255 255 255 / var(--tw-border-opacity));\n}\n@media (min-width: 640px) {\n\n .sm\\:mt-0 {\n margin-top: 0px;\n }\n\n .sm\\:block {\n display: block;\n }\n\n .sm\\:flex-row {\n flex-direction: row;\n }\n\n .sm\\:justify-end {\n justify-content: flex-end;\n }\n\n .sm\\:space-x-2 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-x-reverse: 0;\n margin-right: calc(0.5rem * var(--tw-space-x-reverse));\n margin-left: calc(0.5rem * calc(1 - var(--tw-space-x-reverse)));\n }\n\n .sm\\:space-x-4 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-x-reverse: 0;\n margin-right: calc(1rem * var(--tw-space-x-reverse));\n margin-left: calc(1rem * calc(1 - var(--tw-space-x-reverse)));\n }\n\n .sm\\:space-y-0 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(0px * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(0px * var(--tw-space-y-reverse));\n }\n\n .sm\\:rounded-lg {\n border-radius: var(--radius);\n }\n\n .sm\\:p-0 {\n padding: 0px;\n }\n\n .sm\\:text-left {\n text-align: left;\n }\n}\n@media (min-width: 768px) {\n\n .md\\:relative {\n position: relative;\n }\n\n .md\\:flex {\n display: flex;\n }\n\n .md\\:hidden {\n display: none;\n }\n\n .md\\:w-\\[300px\\] {\n width: 300px;\n }\n\n .md\\:w-full {\n width: 100%;\n }\n\n .md\\:px-4 {\n padding-left: 1rem;\n padding-right: 1rem;\n }\n\n .md\\:pl-0 {\n padding-left: 0px;\n }\n}\n.\\[\\&\\:has\\(\\[aria-selected\\]\\)\\]\\:bg-accent:has([aria-selected]) {\n background-color: hsl(var(--accent));\n}\n.first\\:\\[\\&\\:has\\(\\[aria-selected\\]\\)\\]\\:rounded-l-md:has([aria-selected]):first-child {\n border-top-left-radius: calc(var(--radius) - 2px);\n border-bottom-left-radius: calc(var(--radius) - 2px);\n}\n.last\\:\\[\\&\\:has\\(\\[aria-selected\\]\\)\\]\\:rounded-r-md:has([aria-selected]):last-child {\n border-top-right-radius: calc(var(--radius) - 2px);\n border-bottom-right-radius: calc(var(--radius) - 2px);\n}\n.\\[\\&\\[data-state\\=open\\]\\>svg\\]\\:rotate-180[data-state=open]>svg {\n --tw-rotate: 180deg;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.\\[\\&_\\[cmdk-group-heading\\]\\]\\:px-2 [cmdk-group-heading] {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n}\n.\\[\\&_\\[cmdk-group-heading\\]\\]\\:py-1\\.5 [cmdk-group-heading] {\n padding-top: 0.375rem;\n padding-bottom: 0.375rem;\n}\n.\\[\\&_\\[cmdk-group-heading\\]\\]\\:text-xs [cmdk-group-heading] {\n font-size: 0.75rem;\n line-height: 1rem;\n}\n.\\[\\&_\\[cmdk-group-heading\\]\\]\\:font-medium [cmdk-group-heading] {\n font-weight: 500;\n}\n.\\[\\&_\\[cmdk-group-heading\\]\\]\\:text-muted-foreground [cmdk-group-heading] {\n color: hsl(var(--muted-foreground));\n}\n.\\[\\&_\\[cmdk-group\\]\\:not\\(\\[hidden\\]\\)_\\~\\[cmdk-group\\]\\]\\:pt-0 [cmdk-group]:not([hidden]) ~[cmdk-group] {\n padding-top: 0px;\n}\n.\\[\\&_\\[cmdk-group\\]\\]\\:px-2 [cmdk-group] {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n}\n.\\[\\&_\\[cmdk-input-wrapper\\]_svg\\]\\:h-5 [cmdk-input-wrapper] svg {\n height: 1.25rem;\n}\n.\\[\\&_\\[cmdk-input-wrapper\\]_svg\\]\\:w-5 [cmdk-input-wrapper] svg {\n width: 1.25rem;\n}\n.\\[\\&_\\[cmdk-input\\]\\]\\:h-12 [cmdk-input] {\n height: 3rem;\n}\n.\\[\\&_\\[cmdk-item\\]\\]\\:px-2 [cmdk-item] {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n}\n.\\[\\&_\\[cmdk-item\\]\\]\\:py-3 [cmdk-item] {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n}\n.\\[\\&_\\[cmdk-item\\]_svg\\]\\:h-5 [cmdk-item] svg {\n height: 1.25rem;\n}\n.\\[\\&_\\[cmdk-item\\]_svg\\]\\:w-5 [cmdk-item] svg {\n width: 1.25rem;\n}\n";
|
|
73797
74091
|
function Style() {
|
|
73798
74092
|
return /* @__PURE__ */ jsx("style", { children: styleCss });
|
|
73799
74093
|
}
|