@valbuild/ui 0.45.0 → 0.46.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/valbuild-ui.cjs.js +775 -451
- package/dist/valbuild-ui.esm.js +775 -451
- package/package.json +3 -3
- package/server/.tmp/assets/index-0Qeyj20F.css +1 -0
- package/server/.tmp/assets/index-yY5yCkWt.js +201 -0
- package/server/.tmp/index.html +2 -2
- package/server/dist/valbuild-ui-main.cjs.js +764 -441
- package/server/dist/valbuild-ui-main.esm.js +764 -441
- package/server/dist/valbuild-ui-server.cjs.js +1 -1
- package/server/dist/valbuild-ui-server.esm.js +1 -1
- package/server/.tmp/assets/index-C9FCHcaG.js +0 -201
- package/server/.tmp/assets/index-Ol9liWWf.css +0 -1
package/dist/valbuild-ui.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" }]
|
|
56702
|
+
]);
|
|
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" }]
|
|
56623
56707
|
]);
|
|
56624
|
-
const
|
|
56625
|
-
["
|
|
56626
|
-
["
|
|
56627
|
-
["
|
|
56628
|
-
["
|
|
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,43 +67712,63 @@ 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__ */ jsxs("div", { className: "
|
|
67641
|
-
|
|
67642
|
-
|
|
67643
|
-
|
|
67644
|
-
|
|
67645
|
-
|
|
67646
|
-
|
|
67647
|
-
|
|
67648
|
-
|
|
67649
|
-
|
|
67650
|
-
|
|
67651
|
-
|
|
67721
|
+
/* @__PURE__ */ jsxs("div", { className: "w-fit", children: [
|
|
67722
|
+
/* @__PURE__ */ jsx(
|
|
67723
|
+
"div",
|
|
67724
|
+
{
|
|
67725
|
+
className: "flex flex-col justify-start p-2 border border-b-0 rounded-sm rounded-b-none gap-y-4 bg-background text-foreground border-input",
|
|
67726
|
+
children: data || url ? /* @__PURE__ */ jsxs("div", { className: "relative", children: [
|
|
67727
|
+
hotspot && /* @__PURE__ */ jsx(
|
|
67728
|
+
"div",
|
|
67729
|
+
{
|
|
67730
|
+
className: "rounded-full h-[12px] w-[12px] bg-background mix-blend-difference border-accent border-2 absolute pointer-events-none",
|
|
67731
|
+
style: {
|
|
67732
|
+
top: `${hotspot.y * 100}%`,
|
|
67733
|
+
left: `${hotspot.x * 100}%`
|
|
67734
|
+
}
|
|
67735
|
+
}
|
|
67736
|
+
),
|
|
67737
|
+
/* @__PURE__ */ jsx(
|
|
67738
|
+
"img",
|
|
67739
|
+
{
|
|
67740
|
+
src: (data == null ? void 0 : data.src) || url,
|
|
67741
|
+
draggable: false,
|
|
67742
|
+
className: "object-contain w-full max-h-[500px]",
|
|
67743
|
+
style: {
|
|
67744
|
+
cursor: "crosshair"
|
|
67745
|
+
},
|
|
67746
|
+
onClick: (ev) => {
|
|
67747
|
+
const { width: width2, height: height2, left, top } = ev.currentTarget.getBoundingClientRect();
|
|
67748
|
+
const hotspotX = (ev.clientX - 6 - left) / width2;
|
|
67749
|
+
const hotspotY = (ev.clientY - 6 - top) / height2;
|
|
67750
|
+
setHotspot({
|
|
67751
|
+
x: hotspotX,
|
|
67752
|
+
y: hotspotY,
|
|
67753
|
+
width: 1,
|
|
67754
|
+
height: 1
|
|
67755
|
+
});
|
|
67756
|
+
}
|
|
67757
|
+
}
|
|
67758
|
+
)
|
|
67759
|
+
] }) : /* @__PURE__ */ jsx("div", { children: "Select image below" })
|
|
67760
|
+
},
|
|
67761
|
+
path
|
|
67762
|
+
),
|
|
67763
|
+
/* @__PURE__ */ jsxs("div", { className: "p-4 border border-t-0 rounded-b-sm bg-background border-input", children: [
|
|
67652
67764
|
/* @__PURE__ */ jsx(
|
|
67653
|
-
"
|
|
67765
|
+
"label",
|
|
67654
67766
|
{
|
|
67655
|
-
|
|
67656
|
-
className: "
|
|
67657
|
-
|
|
67658
|
-
const x = ev.nativeEvent.offsetX;
|
|
67659
|
-
const y = ev.nativeEvent.offsetY;
|
|
67660
|
-
const width2 = ev.currentTarget.clientWidth;
|
|
67661
|
-
const height2 = ev.currentTarget.clientHeight;
|
|
67662
|
-
const hotspotX = Math.round(x / width2 * 100) / 100;
|
|
67663
|
-
const hotspotY = Math.round(y / height2 * 100) / 100;
|
|
67664
|
-
setHotspot({ x: hotspotX, y: hotspotY, width: 1, height: 1 });
|
|
67665
|
-
}
|
|
67767
|
+
htmlFor: `img_input:${path}`,
|
|
67768
|
+
className: "block px-1 py-2 text-sm text-center rounded-md cursor-pointer bg-primary text-background",
|
|
67769
|
+
children: "Update"
|
|
67666
67770
|
}
|
|
67667
|
-
)
|
|
67668
|
-
] }) : /* @__PURE__ */ jsx("div", { children: "Select image below" }),
|
|
67669
|
-
/* @__PURE__ */ jsxs("label", { htmlFor: `img_input:${path}`, className: "", children: [
|
|
67670
|
-
/* @__PURE__ */ jsx("div", { className: "px-1 py-2 text-center rounded-md bg-primary text-background", children: "Update image" }),
|
|
67771
|
+
),
|
|
67671
67772
|
/* @__PURE__ */ jsx(
|
|
67672
67773
|
"input",
|
|
67673
67774
|
{
|
|
@@ -67699,43 +67800,39 @@ function ImageField({
|
|
|
67699
67800
|
}
|
|
67700
67801
|
)
|
|
67701
67802
|
] })
|
|
67702
|
-
] }
|
|
67703
|
-
onSubmit &&
|
|
67803
|
+
] }),
|
|
67804
|
+
onSubmit && /* @__PURE__ */ jsx(
|
|
67704
67805
|
SubmitButton,
|
|
67705
67806
|
{
|
|
67706
67807
|
loading,
|
|
67808
|
+
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),
|
|
67707
67809
|
onClick: () => {
|
|
67708
|
-
|
|
67709
|
-
|
|
67710
|
-
(
|
|
67711
|
-
|
|
67712
|
-
|
|
67713
|
-
|
|
67714
|
-
|
|
67715
|
-
|
|
67810
|
+
if (data) {
|
|
67811
|
+
setLoading(true);
|
|
67812
|
+
onSubmit(
|
|
67813
|
+
(path2) => Promise.resolve(
|
|
67814
|
+
createImagePatch(
|
|
67815
|
+
path2,
|
|
67816
|
+
data.src,
|
|
67817
|
+
data.filename ?? null,
|
|
67818
|
+
metadata
|
|
67819
|
+
)
|
|
67716
67820
|
)
|
|
67717
|
-
)
|
|
67718
|
-
|
|
67719
|
-
|
|
67720
|
-
|
|
67721
|
-
|
|
67722
|
-
})
|
|
67723
|
-
|
|
67724
|
-
|
|
67725
|
-
|
|
67726
|
-
|
|
67727
|
-
|
|
67728
|
-
|
|
67729
|
-
|
|
67730
|
-
|
|
67731
|
-
|
|
67732
|
-
onSubmit(
|
|
67733
|
-
(path2) => Promise.resolve(createImageMetadataPatch(path2, metadata))
|
|
67734
|
-
).finally(() => {
|
|
67735
|
-
setLoading(false);
|
|
67736
|
-
setData(null);
|
|
67737
|
-
setMetadata(void 0);
|
|
67738
|
-
});
|
|
67821
|
+
).finally(() => {
|
|
67822
|
+
setLoading(false);
|
|
67823
|
+
setData(null);
|
|
67824
|
+
setMetadata(void 0);
|
|
67825
|
+
});
|
|
67826
|
+
} else if (metadata) {
|
|
67827
|
+
setLoading(true);
|
|
67828
|
+
onSubmit(
|
|
67829
|
+
(path2) => Promise.resolve(createImageMetadataPatch(path2, metadata))
|
|
67830
|
+
).finally(() => {
|
|
67831
|
+
setLoading(false);
|
|
67832
|
+
setData(null);
|
|
67833
|
+
setMetadata(void 0);
|
|
67834
|
+
});
|
|
67835
|
+
}
|
|
67739
67836
|
}
|
|
67740
67837
|
}
|
|
67741
67838
|
)
|
|
@@ -67816,10 +67913,11 @@ function RichTextField({
|
|
|
67816
67913
|
}
|
|
67817
67914
|
}
|
|
67818
67915
|
),
|
|
67819
|
-
onSubmit &&
|
|
67916
|
+
onSubmit && /* @__PURE__ */ jsx(
|
|
67820
67917
|
SubmitButton,
|
|
67821
67918
|
{
|
|
67822
67919
|
loading: loading || !editor,
|
|
67920
|
+
enabled: didChange,
|
|
67823
67921
|
onClick: () => {
|
|
67824
67922
|
if (editor) {
|
|
67825
67923
|
setLoading(true);
|
|
@@ -67901,10 +67999,11 @@ function KeyOfField({
|
|
|
67901
67999
|
]
|
|
67902
68000
|
}
|
|
67903
68001
|
),
|
|
67904
|
-
onSubmit &&
|
|
68002
|
+
onSubmit && /* @__PURE__ */ jsx(
|
|
67905
68003
|
SubmitButton,
|
|
67906
68004
|
{
|
|
67907
68005
|
loading,
|
|
68006
|
+
enabled: defaultValue !== value,
|
|
67908
68007
|
onClick: () => {
|
|
67909
68008
|
setLoading(true);
|
|
67910
68009
|
onSubmit(async (path) => [
|
|
@@ -67958,10 +68057,11 @@ function NumberField({
|
|
|
67958
68057
|
type: "number"
|
|
67959
68058
|
}
|
|
67960
68059
|
),
|
|
67961
|
-
onSubmit &&
|
|
68060
|
+
onSubmit && /* @__PURE__ */ jsx(
|
|
67962
68061
|
SubmitButton,
|
|
67963
68062
|
{
|
|
67964
68063
|
loading,
|
|
68064
|
+
enabled: defaultValue !== value,
|
|
67965
68065
|
onClick: () => {
|
|
67966
68066
|
setLoading(true);
|
|
67967
68067
|
onSubmit(async (path) => {
|
|
@@ -67984,6 +68084,8 @@ function NumberField({
|
|
|
67984
68084
|
function StringField({
|
|
67985
68085
|
disabled,
|
|
67986
68086
|
defaultValue,
|
|
68087
|
+
path,
|
|
68088
|
+
schema,
|
|
67987
68089
|
registerPatchCallback,
|
|
67988
68090
|
onSubmit
|
|
67989
68091
|
}) {
|
|
@@ -67995,18 +68097,28 @@ function StringField({
|
|
|
67995
68097
|
const ref = useRef(null);
|
|
67996
68098
|
useEffect(() => {
|
|
67997
68099
|
if (registerPatchCallback) {
|
|
67998
|
-
registerPatchCallback(async (
|
|
68100
|
+
registerPatchCallback(async (path2) => {
|
|
67999
68101
|
var _a;
|
|
68000
68102
|
return [
|
|
68001
68103
|
{
|
|
68002
68104
|
op: "replace",
|
|
68003
|
-
path,
|
|
68105
|
+
path: path2,
|
|
68004
68106
|
value: ((_a = ref.current) == null ? void 0 : _a.value) || ""
|
|
68005
68107
|
}
|
|
68006
68108
|
];
|
|
68007
68109
|
});
|
|
68008
68110
|
}
|
|
68009
68111
|
}, []);
|
|
68112
|
+
const actualSchema = new StringSchema(
|
|
68113
|
+
schema.options ? {
|
|
68114
|
+
...schema.options,
|
|
68115
|
+
regexp: schema.options.regexp ? new RegExp(
|
|
68116
|
+
schema.options.regexp.source,
|
|
68117
|
+
schema.options.regexp.flags
|
|
68118
|
+
) : void 0
|
|
68119
|
+
} : void 0
|
|
68120
|
+
);
|
|
68121
|
+
const validationErrors = actualSchema.validate(path, value);
|
|
68010
68122
|
return /* @__PURE__ */ jsxs(FieldContainer, { children: [
|
|
68011
68123
|
/* @__PURE__ */ jsx(
|
|
68012
68124
|
Input,
|
|
@@ -68017,18 +68129,20 @@ function StringField({
|
|
|
68017
68129
|
onChange: (e) => setValue(e.target.value)
|
|
68018
68130
|
}
|
|
68019
68131
|
),
|
|
68020
|
-
onSubmit &&
|
|
68132
|
+
onSubmit && /* @__PURE__ */ jsx(
|
|
68021
68133
|
SubmitButton,
|
|
68022
68134
|
{
|
|
68135
|
+
validationErrors: validationErrors && validationErrors[path],
|
|
68023
68136
|
loading,
|
|
68137
|
+
enabled: defaultValue !== value && !validationErrors,
|
|
68024
68138
|
onClick: () => {
|
|
68025
68139
|
setLoading(true);
|
|
68026
|
-
onSubmit(async (
|
|
68140
|
+
onSubmit(async (path2) => {
|
|
68027
68141
|
var _a;
|
|
68028
68142
|
return [
|
|
68029
68143
|
{
|
|
68030
68144
|
op: "replace",
|
|
68031
|
-
path,
|
|
68145
|
+
path: path2,
|
|
68032
68146
|
value: ((_a = ref.current) == null ? void 0 : _a.value) || ""
|
|
68033
68147
|
}
|
|
68034
68148
|
];
|
|
@@ -68040,14 +68154,28 @@ function StringField({
|
|
|
68040
68154
|
)
|
|
68041
68155
|
] });
|
|
68042
68156
|
}
|
|
68043
|
-
function
|
|
68044
|
-
return /* @__PURE__ */ jsx("div", { className: "
|
|
68157
|
+
function InlineValidationErrors({ errors }) {
|
|
68158
|
+
return /* @__PURE__ */ jsx("div", { className: "flex flex-col p-2 text-sm rounded-md gap-y-1 text-destructive-foreground bg-destructive", children: errors.map((error, i) => /* @__PURE__ */ jsx("div", { children: error.message }, i)) });
|
|
68159
|
+
}
|
|
68160
|
+
function FieldContainer({
|
|
68161
|
+
children,
|
|
68162
|
+
className: className2
|
|
68163
|
+
}) {
|
|
68164
|
+
return /* @__PURE__ */ jsx("div", { className: classNames("relative max-w-lg px-4 pt-4", className2), children });
|
|
68045
68165
|
}
|
|
68046
68166
|
function SubmitButton({
|
|
68047
68167
|
loading,
|
|
68168
|
+
enabled,
|
|
68169
|
+
validationErrors,
|
|
68048
68170
|
onClick
|
|
68049
68171
|
}) {
|
|
68050
|
-
|
|
68172
|
+
const { session } = useValOverlayContext();
|
|
68173
|
+
const isProxy = session.status === "success" && session.data.mode === "proxy";
|
|
68174
|
+
return /* @__PURE__ */ jsx("div", { className: "sticky bottom-0 m-4 mt-2 ml-0", children: /* @__PURE__ */ jsxs("div", { className: "flex justify-start w-full gap-2 text-sm", children: [
|
|
68175
|
+
/* @__PURE__ */ jsx(Button, { disabled: loading || !enabled, onClick, children: loading ? isProxy ? "Staging..." : "Saving..." : isProxy ? "Stage" : "Save" }),
|
|
68176
|
+
" ",
|
|
68177
|
+
validationErrors ? /* @__PURE__ */ jsx(InlineValidationErrors, { errors: validationErrors || [] }) : /* @__PURE__ */ jsx("span", {})
|
|
68178
|
+
] }) });
|
|
68051
68179
|
}
|
|
68052
68180
|
const Logo = ({ className: className2 }) => {
|
|
68053
68181
|
return /* @__PURE__ */ jsxs(
|
|
@@ -68064,7 +68192,7 @@ const Logo = ({ className: className2 }) => {
|
|
|
68064
68192
|
"path",
|
|
68065
68193
|
{
|
|
68066
68194
|
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: "
|
|
68195
|
+
fill: "hsl(var(--accent))"
|
|
68068
68196
|
}
|
|
68069
68197
|
) }),
|
|
68070
68198
|
/* @__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 +72646,33 @@ function useSession(api) {
|
|
|
72518
72646
|
}, [sessionResetId]);
|
|
72519
72647
|
return session;
|
|
72520
72648
|
}
|
|
72649
|
+
function Path({ children }) {
|
|
72650
|
+
const segs = children.split("/").filter((seg) => seg);
|
|
72651
|
+
return segs.map((seg, i) => {
|
|
72652
|
+
if (i !== segs.length - 1) {
|
|
72653
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
72654
|
+
/* @__PURE__ */ jsx("span", { children: seg }),
|
|
72655
|
+
/* @__PURE__ */ jsx("span", { className: "px-[2px] text-muted", children: "/" })
|
|
72656
|
+
] }, `${children}/${seg}`);
|
|
72657
|
+
}
|
|
72658
|
+
return /* @__PURE__ */ jsx(Seg, { children: seg }, children);
|
|
72659
|
+
});
|
|
72660
|
+
}
|
|
72661
|
+
function Seg({ children }) {
|
|
72662
|
+
if (children.includes(".")) {
|
|
72663
|
+
const segs = children.split(".");
|
|
72664
|
+
return segs.map((seg, i) => {
|
|
72665
|
+
if (i !== segs.length - 1) {
|
|
72666
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
72667
|
+
/* @__PURE__ */ jsx("span", { children: i === 0 ? seg : JSON.parse(seg) }),
|
|
72668
|
+
/* @__PURE__ */ jsx("span", { className: "px-[2px] text-muted", children: "." })
|
|
72669
|
+
] }, `${children}.${seg}`);
|
|
72670
|
+
}
|
|
72671
|
+
return /* @__PURE__ */ jsx("span", { children: i === 0 ? seg : JSON.parse(seg) }, children);
|
|
72672
|
+
});
|
|
72673
|
+
}
|
|
72674
|
+
return /* @__PURE__ */ jsx("span", { children });
|
|
72675
|
+
}
|
|
72521
72676
|
const ValModulesContext = React__default.createContext(null);
|
|
72522
72677
|
const useValModuleFromPath = (sourcePath) => {
|
|
72523
72678
|
var _a, _b;
|
|
@@ -72668,12 +72823,13 @@ Showing stack trace of: 1. ${fatalErrors[0].message}`;
|
|
|
72668
72823
|
"div",
|
|
72669
72824
|
{
|
|
72670
72825
|
id: "val-fullscreen-container",
|
|
72671
|
-
className: "relative font-serif antialiased",
|
|
72826
|
+
className: "relative w-full h-[100] overflow-hidden font-serif antialiased bg-background text-primary",
|
|
72672
72827
|
"data-mode": theme2,
|
|
72673
72828
|
children: [
|
|
72674
|
-
/* @__PURE__ */ jsx("div", { className: "fixed -translate-
|
|
72829
|
+
/* @__PURE__ */ jsx("div", { className: "fixed -translate-y-1/2 right-4 top-1/2 z-overlay", children: /* @__PURE__ */ jsx(
|
|
72675
72830
|
ValMenu,
|
|
72676
72831
|
{
|
|
72832
|
+
direction: "vertical",
|
|
72677
72833
|
api,
|
|
72678
72834
|
patches,
|
|
72679
72835
|
onCommit: () => setPatchResetId((prev) => prev + 1)
|
|
@@ -72686,18 +72842,19 @@ Showing stack trace of: 1. ${fatalErrors[0].message}`;
|
|
|
72686
72842
|
value: {
|
|
72687
72843
|
hoverElem: hoverElemRef == null ? void 0 : hoverElemRef.current
|
|
72688
72844
|
},
|
|
72689
|
-
children: /* @__PURE__ */ jsx("div", { className: "text-primary
|
|
72845
|
+
children: /* @__PURE__ */ jsx("div", { className: "text-primary", children: /* @__PURE__ */ jsxs(Grid, { children: [
|
|
72690
72846
|
/* @__PURE__ */ jsx("div", { className: "px-4 h-[50px] flex items-center justify-center", children: /* @__PURE__ */ jsx(Logo$1, {}) }),
|
|
72691
72847
|
/* @__PURE__ */ jsx(ScrollArea, { className: "px-4", children: modules ? /* @__PURE__ */ jsx(
|
|
72692
72848
|
PathTree,
|
|
72693
72849
|
{
|
|
72850
|
+
selectedPath,
|
|
72694
72851
|
paths: Object.keys(modules),
|
|
72695
72852
|
setSelectedModuleId: (path) => {
|
|
72696
72853
|
navigate(path);
|
|
72697
72854
|
}
|
|
72698
72855
|
}
|
|
72699
72856
|
) : !error && /* @__PURE__ */ jsx("div", { className: "py-4", children: "Loading..." }) }),
|
|
72700
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-start
|
|
72857
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-start h-[50px] gap-2 font-serif text-xs", children: [
|
|
72701
72858
|
/* @__PURE__ */ jsx(
|
|
72702
72859
|
"button",
|
|
72703
72860
|
{
|
|
@@ -72707,10 +72864,18 @@ Showing stack trace of: 1. ${fatalErrors[0].message}`;
|
|
|
72707
72864
|
children: /* @__PURE__ */ jsx(ChevronLeft, {})
|
|
72708
72865
|
}
|
|
72709
72866
|
),
|
|
72710
|
-
/* @__PURE__ */ jsx(
|
|
72867
|
+
/* @__PURE__ */ jsx(
|
|
72868
|
+
"div",
|
|
72869
|
+
{
|
|
72870
|
+
className: "truncate max-w-[300px]",
|
|
72871
|
+
dir: "rtl",
|
|
72872
|
+
title: selectedPath,
|
|
72873
|
+
children: /* @__PURE__ */ jsx(Path, { children: selectedPath || "/" })
|
|
72874
|
+
}
|
|
72875
|
+
)
|
|
72711
72876
|
] }),
|
|
72712
72877
|
/* @__PURE__ */ jsxs("div", { className: "p-4", children: [
|
|
72713
|
-
error && /* @__PURE__ */ jsxs("div", { className: "text-lg text-destructive-foreground", children: [
|
|
72878
|
+
error && /* @__PURE__ */ jsxs("div", { className: "max-w-xl p-4 text-lg bg-destructive text-destructive-foreground", children: [
|
|
72714
72879
|
"ERROR: ",
|
|
72715
72880
|
error
|
|
72716
72881
|
] }),
|
|
@@ -72779,7 +72944,7 @@ function AnyVal({
|
|
|
72779
72944
|
initOnSubmit,
|
|
72780
72945
|
top
|
|
72781
72946
|
}) {
|
|
72782
|
-
if (
|
|
72947
|
+
if (schema.opt) {
|
|
72783
72948
|
return /* @__PURE__ */ jsx(
|
|
72784
72949
|
ValOptional,
|
|
72785
72950
|
{
|
|
@@ -72792,6 +72957,18 @@ function AnyVal({
|
|
|
72792
72957
|
}
|
|
72793
72958
|
);
|
|
72794
72959
|
}
|
|
72960
|
+
if (source === null) {
|
|
72961
|
+
return /* @__PURE__ */ jsx(
|
|
72962
|
+
ValDefaultOf,
|
|
72963
|
+
{
|
|
72964
|
+
source,
|
|
72965
|
+
schema,
|
|
72966
|
+
path,
|
|
72967
|
+
setSelectedPath,
|
|
72968
|
+
initOnSubmit
|
|
72969
|
+
}
|
|
72970
|
+
);
|
|
72971
|
+
}
|
|
72795
72972
|
if (schema.type === "object") {
|
|
72796
72973
|
if (typeof source !== "object" || isJsonArray(source)) {
|
|
72797
72974
|
return /* @__PURE__ */ jsxs("div", { children: [
|
|
@@ -72817,15 +72994,18 @@ function AnyVal({
|
|
|
72817
72994
|
typeof source
|
|
72818
72995
|
] });
|
|
72819
72996
|
}
|
|
72820
|
-
return /* @__PURE__ */
|
|
72821
|
-
|
|
72822
|
-
|
|
72823
|
-
|
|
72824
|
-
|
|
72825
|
-
|
|
72826
|
-
|
|
72827
|
-
|
|
72828
|
-
|
|
72997
|
+
return /* @__PURE__ */ jsxs("div", { children: [
|
|
72998
|
+
field ? /* @__PURE__ */ jsx("div", { className: "text-left", children: field }) : /* @__PURE__ */ jsx("div", { className: "truncate max-w-[300px]", title: path, dir: "rtl", children: /* @__PURE__ */ jsx(Path, { children: path }) }),
|
|
72999
|
+
/* @__PURE__ */ jsx(
|
|
73000
|
+
ValList,
|
|
73001
|
+
{
|
|
73002
|
+
source,
|
|
73003
|
+
path,
|
|
73004
|
+
schema,
|
|
73005
|
+
setSelectedPath
|
|
73006
|
+
}
|
|
73007
|
+
)
|
|
73008
|
+
] });
|
|
72829
73009
|
} else if (schema.type === "record") {
|
|
72830
73010
|
if (typeof source !== "object") {
|
|
72831
73011
|
return /* @__PURE__ */ jsxs("div", { children: [
|
|
@@ -72841,18 +73021,39 @@ function AnyVal({
|
|
|
72841
73021
|
schema.type
|
|
72842
73022
|
] });
|
|
72843
73023
|
}
|
|
72844
|
-
return /* @__PURE__ */
|
|
72845
|
-
|
|
72846
|
-
|
|
72847
|
-
|
|
72848
|
-
|
|
72849
|
-
|
|
72850
|
-
|
|
72851
|
-
|
|
72852
|
-
|
|
73024
|
+
return /* @__PURE__ */ jsxs("div", { children: [
|
|
73025
|
+
field ? /* @__PURE__ */ jsx("div", { className: "text-left", children: field }) : /* @__PURE__ */ jsx("div", { className: "truncate max-w-[300px]", title: path, dir: "rtl", children: /* @__PURE__ */ jsx(Path, { children: path }) }),
|
|
73026
|
+
/* @__PURE__ */ jsx(
|
|
73027
|
+
ValRecord,
|
|
73028
|
+
{
|
|
73029
|
+
source,
|
|
73030
|
+
path,
|
|
73031
|
+
schema,
|
|
73032
|
+
setSelectedPath
|
|
73033
|
+
}
|
|
73034
|
+
)
|
|
73035
|
+
] });
|
|
73036
|
+
} else if ((schema == null ? void 0 : schema.type) === "union") {
|
|
73037
|
+
if (schema.key && typeof source === "object" && !isJsonArray(source)) {
|
|
73038
|
+
return /* @__PURE__ */ jsx(
|
|
73039
|
+
ValTaggedUnion,
|
|
73040
|
+
{
|
|
73041
|
+
field,
|
|
73042
|
+
tag: schema.key,
|
|
73043
|
+
source,
|
|
73044
|
+
path,
|
|
73045
|
+
schema,
|
|
73046
|
+
initOnSubmit,
|
|
73047
|
+
setSelectedPath,
|
|
73048
|
+
top
|
|
73049
|
+
}
|
|
73050
|
+
);
|
|
73051
|
+
}
|
|
73052
|
+
} else if ((schema == null ? void 0 : schema.type) === "literal") {
|
|
73053
|
+
return /* @__PURE__ */ jsx(Fragment$1, {});
|
|
72853
73054
|
}
|
|
72854
73055
|
return /* @__PURE__ */ jsxs("div", { className: "py-2 gap-y-4", children: [
|
|
72855
|
-
/* @__PURE__ */ jsx("div", { className: "text-left", children: field
|
|
73056
|
+
field ? /* @__PURE__ */ jsx("div", { className: "text-left", children: field }) : /* @__PURE__ */ jsx("div", { className: "truncate max-w-[300px]", title: path, dir: "rtl", children: /* @__PURE__ */ jsx(Path, { children: path }) }),
|
|
72856
73057
|
/* @__PURE__ */ jsx(
|
|
72857
73058
|
ValFormField,
|
|
72858
73059
|
{
|
|
@@ -72865,6 +73066,110 @@ function AnyVal({
|
|
|
72865
73066
|
)
|
|
72866
73067
|
] });
|
|
72867
73068
|
}
|
|
73069
|
+
function ValTaggedUnion({
|
|
73070
|
+
tag,
|
|
73071
|
+
field,
|
|
73072
|
+
path,
|
|
73073
|
+
source,
|
|
73074
|
+
schema,
|
|
73075
|
+
setSelectedPath,
|
|
73076
|
+
initOnSubmit,
|
|
73077
|
+
top
|
|
73078
|
+
}) {
|
|
73079
|
+
const [currentKey, setCurrentKey] = useState(null);
|
|
73080
|
+
const [current, setCurrent] = useState(null);
|
|
73081
|
+
const keys = schema.items.flatMap((item) => {
|
|
73082
|
+
if (item.type === "object" && item.items[tag]) {
|
|
73083
|
+
const maybeLiteral = item.items[tag];
|
|
73084
|
+
if (maybeLiteral.type === "literal") {
|
|
73085
|
+
return [maybeLiteral.value];
|
|
73086
|
+
}
|
|
73087
|
+
}
|
|
73088
|
+
return [];
|
|
73089
|
+
});
|
|
73090
|
+
useEffect(() => {
|
|
73091
|
+
if (!currentKey) {
|
|
73092
|
+
const maybeCurrentKey = source == null ? void 0 : source[tag];
|
|
73093
|
+
if (maybeCurrentKey && typeof maybeCurrentKey === "string") {
|
|
73094
|
+
setCurrentKey(maybeCurrentKey);
|
|
73095
|
+
}
|
|
73096
|
+
} else {
|
|
73097
|
+
const sourceKey = source[tag];
|
|
73098
|
+
const unionSchema = schema.items.find((item) => {
|
|
73099
|
+
if (item.type === "object" && item.items[tag]) {
|
|
73100
|
+
const maybeLiteral = item.items[tag];
|
|
73101
|
+
if (maybeLiteral.type === "literal") {
|
|
73102
|
+
return maybeLiteral.value === currentKey;
|
|
73103
|
+
}
|
|
73104
|
+
return false;
|
|
73105
|
+
}
|
|
73106
|
+
});
|
|
73107
|
+
if (sourceKey && typeof sourceKey === "string" && unionSchema) {
|
|
73108
|
+
setCurrent({ source, schema: unionSchema });
|
|
73109
|
+
} else if (unionSchema) {
|
|
73110
|
+
setCurrent({ schema: unionSchema });
|
|
73111
|
+
} else {
|
|
73112
|
+
console.error(
|
|
73113
|
+
"Could not find source or schema of key",
|
|
73114
|
+
currentKey,
|
|
73115
|
+
source,
|
|
73116
|
+
schema
|
|
73117
|
+
);
|
|
73118
|
+
setCurrent(null);
|
|
73119
|
+
}
|
|
73120
|
+
}
|
|
73121
|
+
}, [currentKey, source, tag, schema, keys]);
|
|
73122
|
+
if (keys.length !== schema.items.length) {
|
|
73123
|
+
console.warn("Not all items have tag:", tag);
|
|
73124
|
+
}
|
|
73125
|
+
const loading = false;
|
|
73126
|
+
const onSubmit = initOnSubmit(path);
|
|
73127
|
+
return /* @__PURE__ */ jsxs(
|
|
73128
|
+
FieldContainer,
|
|
73129
|
+
{
|
|
73130
|
+
className: classNames("flex flex-col gap-y-4", {
|
|
73131
|
+
"border-l-2 border-border pl-6": !top
|
|
73132
|
+
}),
|
|
73133
|
+
children: [
|
|
73134
|
+
field ? /* @__PURE__ */ jsx("div", { className: "text-left", children: field }) : /* @__PURE__ */ jsx("div", { className: "truncate max-w-[300px]", title: path, dir: "rtl", children: /* @__PURE__ */ jsx(Path, { children: path }) }),
|
|
73135
|
+
/* @__PURE__ */ jsxs(
|
|
73136
|
+
Select,
|
|
73137
|
+
{
|
|
73138
|
+
value: currentKey ?? void 0,
|
|
73139
|
+
disabled: loading,
|
|
73140
|
+
onValueChange: (key) => {
|
|
73141
|
+
setCurrentKey(key);
|
|
73142
|
+
},
|
|
73143
|
+
children: [
|
|
73144
|
+
/* @__PURE__ */ jsx(SelectTrigger, { children: /* @__PURE__ */ jsx(SelectValue, { placeholder: "Select type" }) }),
|
|
73145
|
+
/* @__PURE__ */ jsx(SelectContent, { children: keys.map((tag2) => /* @__PURE__ */ jsx(SelectItem, { value: tag2.toString(), children: tag2.toString() }, tag2)) })
|
|
73146
|
+
]
|
|
73147
|
+
}
|
|
73148
|
+
),
|
|
73149
|
+
/* @__PURE__ */ jsx(
|
|
73150
|
+
SubmitButton,
|
|
73151
|
+
{
|
|
73152
|
+
loading,
|
|
73153
|
+
enabled: false,
|
|
73154
|
+
onClick: () => onSubmit(async () => [])
|
|
73155
|
+
}
|
|
73156
|
+
),
|
|
73157
|
+
current && /* @__PURE__ */ jsx(
|
|
73158
|
+
AnyVal,
|
|
73159
|
+
{
|
|
73160
|
+
path,
|
|
73161
|
+
source: current.source ?? null,
|
|
73162
|
+
schema: current.schema,
|
|
73163
|
+
setSelectedPath,
|
|
73164
|
+
initOnSubmit,
|
|
73165
|
+
top
|
|
73166
|
+
}
|
|
73167
|
+
)
|
|
73168
|
+
]
|
|
73169
|
+
},
|
|
73170
|
+
path
|
|
73171
|
+
);
|
|
73172
|
+
}
|
|
72868
73173
|
function ValObject({
|
|
72869
73174
|
path,
|
|
72870
73175
|
source,
|
|
@@ -72876,7 +73181,7 @@ function ValObject({
|
|
|
72876
73181
|
return /* @__PURE__ */ jsx(
|
|
72877
73182
|
"div",
|
|
72878
73183
|
{
|
|
72879
|
-
className: classNames("flex flex-col gap-y-
|
|
73184
|
+
className: classNames("flex flex-col gap-y-1", {
|
|
72880
73185
|
"border-l-2 border-border pl-6": !top
|
|
72881
73186
|
}),
|
|
72882
73187
|
children: Object.entries(schema.items).map(([key, property]) => {
|
|
@@ -72885,7 +73190,7 @@ function ValObject({
|
|
|
72885
73190
|
AnyVal,
|
|
72886
73191
|
{
|
|
72887
73192
|
path: subPath,
|
|
72888
|
-
source: source[key],
|
|
73193
|
+
source: (source == null ? void 0 : source[key]) ?? null,
|
|
72889
73194
|
schema: property,
|
|
72890
73195
|
setSelectedPath,
|
|
72891
73196
|
field: key,
|
|
@@ -72969,7 +73274,7 @@ function ValList({
|
|
|
72969
73274
|
setSelectedPath
|
|
72970
73275
|
}) {
|
|
72971
73276
|
const navigate = useNavigate();
|
|
72972
|
-
return /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-4 p-2", children: source.map((item, index2) => {
|
|
73277
|
+
return /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-4 p-2 pb-8", children: source.map((item, index2) => {
|
|
72973
73278
|
const subPath = createValPathOfItem(path, index2);
|
|
72974
73279
|
return /* @__PURE__ */ jsx(
|
|
72975
73280
|
"button",
|
|
@@ -73208,9 +73513,10 @@ function ValOptional({
|
|
|
73208
73513
|
field
|
|
73209
73514
|
}) {
|
|
73210
73515
|
const [enable, setEnable] = useState(source !== null);
|
|
73211
|
-
|
|
73212
|
-
|
|
73213
|
-
|
|
73516
|
+
const { editMode } = useValOverlayContext();
|
|
73517
|
+
return /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-y-2", children: [
|
|
73518
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-start gap-x-4", children: [
|
|
73519
|
+
editMode === "full" && /* @__PURE__ */ jsx(
|
|
73214
73520
|
Switch,
|
|
73215
73521
|
{
|
|
73216
73522
|
checked: enable,
|
|
@@ -73219,16 +73525,8 @@ function ValOptional({
|
|
|
73219
73525
|
}
|
|
73220
73526
|
}
|
|
73221
73527
|
),
|
|
73222
|
-
/* @__PURE__ */ jsx("
|
|
73223
|
-
] })
|
|
73224
|
-
Switch,
|
|
73225
|
-
{
|
|
73226
|
-
checked: enable,
|
|
73227
|
-
onClick: () => {
|
|
73228
|
-
setEnable((prev) => !prev);
|
|
73229
|
-
}
|
|
73230
|
-
}
|
|
73231
|
-
),
|
|
73528
|
+
/* @__PURE__ */ jsx("div", { className: "truncate max-w-[300px]", title: path, dir: "rtl", children: field ? field : /* @__PURE__ */ jsx(Path, { children: path }) })
|
|
73529
|
+
] }),
|
|
73232
73530
|
enable && /* @__PURE__ */ jsx(
|
|
73233
73531
|
ValDefaultOf,
|
|
73234
73532
|
{
|
|
@@ -73297,61 +73595,62 @@ function ValDefaultOf({
|
|
|
73297
73595
|
function isJsonArray(source) {
|
|
73298
73596
|
return Array.isArray(source);
|
|
73299
73597
|
}
|
|
73300
|
-
function
|
|
73301
|
-
const
|
|
73598
|
+
function dirPaths(paths) {
|
|
73599
|
+
const res = {};
|
|
73302
73600
|
paths.forEach((path) => {
|
|
73303
|
-
const
|
|
73304
|
-
|
|
73305
|
-
|
|
73306
|
-
|
|
73307
|
-
current[part] = {};
|
|
73601
|
+
const allParts = path.split("/").filter((part) => part !== "");
|
|
73602
|
+
if (allParts.length === 1) {
|
|
73603
|
+
if (!res[""]) {
|
|
73604
|
+
res[""] = [];
|
|
73308
73605
|
}
|
|
73309
|
-
|
|
73310
|
-
})
|
|
73606
|
+
res[""].push(allParts[0]);
|
|
73607
|
+
} else if (allParts.length > 1) {
|
|
73608
|
+
const dir = allParts.slice(0, allParts.length - 1).join("/");
|
|
73609
|
+
const file = allParts.slice(-1)[0];
|
|
73610
|
+
if (!res[dir]) {
|
|
73611
|
+
res[dir] = [];
|
|
73612
|
+
}
|
|
73613
|
+
res[dir].push(file);
|
|
73614
|
+
}
|
|
73311
73615
|
});
|
|
73312
|
-
return
|
|
73616
|
+
return res;
|
|
73313
73617
|
}
|
|
73314
73618
|
function PathTree({
|
|
73619
|
+
selectedPath,
|
|
73315
73620
|
paths,
|
|
73316
73621
|
setSelectedModuleId
|
|
73317
73622
|
}) {
|
|
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
|
-
] });
|
|
73623
|
+
const tree = dirPaths(paths);
|
|
73624
|
+
const selectedModuleId = selectedPath && Internal.splitModuleIdAndModulePath(selectedPath)[0];
|
|
73625
|
+
return /* @__PURE__ */ jsx("div", { className: "flex flex-col w-full py-2 text-xs", children: Object.entries(tree).map(([dir, files]) => {
|
|
73626
|
+
return /* @__PURE__ */ jsxs("div", { className: "px-4 py-2", children: [
|
|
73627
|
+
dir && /* @__PURE__ */ jsx("div", { className: "font-bold truncate max-w-[300px]", title: dir, children: /* @__PURE__ */ jsx(Path, { children: dir }) }),
|
|
73628
|
+
/* @__PURE__ */ jsx(
|
|
73629
|
+
"div",
|
|
73630
|
+
{
|
|
73631
|
+
className: classNames({
|
|
73632
|
+
"flex flex-col py-2 justify-start items-start": !!dir
|
|
73633
|
+
}),
|
|
73634
|
+
children: files.map((file) => {
|
|
73635
|
+
const moduleId = `/${dir}/${file}`;
|
|
73636
|
+
return /* @__PURE__ */ jsx(
|
|
73637
|
+
"button",
|
|
73638
|
+
{
|
|
73639
|
+
className: classNames("block px-2 py-1 rounded-full", {
|
|
73640
|
+
"bg-accent text-accent-foreground": selectedModuleId === moduleId
|
|
73641
|
+
}),
|
|
73642
|
+
onClick: () => {
|
|
73643
|
+
setSelectedModuleId(moduleId);
|
|
73644
|
+
},
|
|
73645
|
+
children: file
|
|
73646
|
+
},
|
|
73647
|
+
moduleId
|
|
73648
|
+
);
|
|
73649
|
+
})
|
|
73650
|
+
}
|
|
73651
|
+
)
|
|
73652
|
+
] }, `/${dir}`);
|
|
73653
|
+
}) });
|
|
73355
73654
|
}
|
|
73356
73655
|
const theme = {
|
|
73357
73656
|
tags: {
|
|
@@ -73543,76 +73842,91 @@ function ValOverlay({
|
|
|
73543
73842
|
windowSize,
|
|
73544
73843
|
setWindowSize
|
|
73545
73844
|
},
|
|
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",
|
|
73845
|
+
children: /* @__PURE__ */ jsxs(
|
|
73846
|
+
"div",
|
|
73847
|
+
{
|
|
73848
|
+
"data-mode": theme2,
|
|
73849
|
+
className: "font-serif antialiased",
|
|
73850
|
+
style: {
|
|
73851
|
+
position: "fixed",
|
|
73852
|
+
top: 0,
|
|
73853
|
+
left: 0,
|
|
73854
|
+
zIndex: 8999
|
|
73855
|
+
// 1 less than the NextJS error z-index: 9000
|
|
73856
|
+
},
|
|
73857
|
+
children: [
|
|
73858
|
+
/* @__PURE__ */ jsx("div", { className: "fixed -translate-y-1/2 right-4 top-1/2 z-overlay", children: /* @__PURE__ */ jsx(
|
|
73859
|
+
ValMenu,
|
|
73575
73860
|
{
|
|
73576
|
-
|
|
73577
|
-
|
|
73578
|
-
|
|
73861
|
+
direction: "vertical",
|
|
73862
|
+
api,
|
|
73863
|
+
patches,
|
|
73864
|
+
onCommit: () => {
|
|
73865
|
+
setPatchResetId((patchResetId) => patchResetId + 1);
|
|
73866
|
+
}
|
|
73867
|
+
}
|
|
73868
|
+
) }),
|
|
73869
|
+
session.status === "success" && session.data.enabled && editMode === "hover" && hoverTarget.path && /* @__PURE__ */ jsx(
|
|
73870
|
+
ValHover,
|
|
73871
|
+
{
|
|
73872
|
+
hoverTarget,
|
|
73873
|
+
setHoverTarget,
|
|
73874
|
+
setEditMode,
|
|
73875
|
+
setWindowTarget
|
|
73876
|
+
}
|
|
73877
|
+
),
|
|
73878
|
+
editMode === "window" && windowTarget && /* @__PURE__ */ jsx(
|
|
73879
|
+
ValWindow,
|
|
73880
|
+
{
|
|
73881
|
+
onClose: () => {
|
|
73882
|
+
setWindowTarget(null);
|
|
73883
|
+
setEditMode("hover");
|
|
73579
73884
|
},
|
|
73580
|
-
children:
|
|
73581
|
-
|
|
73582
|
-
|
|
73583
|
-
|
|
73584
|
-
|
|
73585
|
-
|
|
73586
|
-
|
|
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
|
|
73885
|
+
children: /* @__PURE__ */ jsx(
|
|
73886
|
+
"div",
|
|
73887
|
+
{
|
|
73888
|
+
className: "p-4",
|
|
73889
|
+
style: {
|
|
73890
|
+
maxHeight: windowSize == null ? void 0 : windowSize.innerHeight,
|
|
73891
|
+
maxWidth: windowSize == null ? void 0 : windowSize.width
|
|
73607
73892
|
},
|
|
73608
|
-
path
|
|
73609
|
-
|
|
73610
|
-
|
|
73893
|
+
children: Object.entries(formData).map(([path, data]) => {
|
|
73894
|
+
if (data.status !== "success") {
|
|
73895
|
+
return /* @__PURE__ */ jsxs("div", { children: [
|
|
73896
|
+
path,
|
|
73897
|
+
": ",
|
|
73898
|
+
data.status
|
|
73899
|
+
] }, path);
|
|
73900
|
+
}
|
|
73901
|
+
const { source, schema } = data.data;
|
|
73902
|
+
if (!source || !schema) {
|
|
73903
|
+
return /* @__PURE__ */ jsxs("div", { children: [
|
|
73904
|
+
"Module: ",
|
|
73905
|
+
path,
|
|
73906
|
+
" is missing source or schema"
|
|
73907
|
+
] });
|
|
73908
|
+
}
|
|
73909
|
+
return /* @__PURE__ */ jsx(
|
|
73910
|
+
AnyVal,
|
|
73911
|
+
{
|
|
73912
|
+
initOnSubmit,
|
|
73913
|
+
path,
|
|
73914
|
+
schema,
|
|
73915
|
+
source,
|
|
73916
|
+
setSelectedPath: () => {
|
|
73917
|
+
},
|
|
73918
|
+
top: true
|
|
73919
|
+
},
|
|
73920
|
+
path
|
|
73921
|
+
);
|
|
73922
|
+
})
|
|
73923
|
+
}
|
|
73924
|
+
)
|
|
73611
73925
|
}
|
|
73612
73926
|
)
|
|
73613
|
-
|
|
73614
|
-
|
|
73615
|
-
|
|
73927
|
+
]
|
|
73928
|
+
}
|
|
73929
|
+
)
|
|
73616
73930
|
}
|
|
73617
73931
|
);
|
|
73618
73932
|
}
|
|
@@ -73679,7 +73993,7 @@ function ValHover({
|
|
|
73679
73993
|
"div",
|
|
73680
73994
|
{
|
|
73681
73995
|
id: "val-hover",
|
|
73682
|
-
className: "fixed border-2 cursor-pointer z-overlay-hover border-
|
|
73996
|
+
className: "fixed border-2 cursor-pointer z-overlay-hover border-accent",
|
|
73683
73997
|
style: {
|
|
73684
73998
|
top: rect == null ? void 0 : rect.top,
|
|
73685
73999
|
left: rect == null ? void 0 : rect.left,
|
|
@@ -73700,7 +74014,7 @@ function ValHover({
|
|
|
73700
74014
|
children: /* @__PURE__ */ jsx("div", { className: "flex items-center justify-end w-full text-xs", children: /* @__PURE__ */ jsx(
|
|
73701
74015
|
"div",
|
|
73702
74016
|
{
|
|
73703
|
-
className: "flex items-center justify-center px-3 py-1 text-
|
|
74017
|
+
className: "flex items-center justify-center px-3 py-1 border-b-2 border-l-2 text-accent-foreground bg-accent border-accent",
|
|
73704
74018
|
style: {
|
|
73705
74019
|
maxHeight: (rect == null ? void 0 : rect.height) && rect.height - 4,
|
|
73706
74020
|
fontSize: (rect == null ? void 0 : rect.height) && rect.height <= 16 ? rect.height - 4 : void 0
|
|
@@ -73744,9 +74058,19 @@ function useHoverTarget(editMode) {
|
|
|
73744
74058
|
setTargetRect(targetElement.getBoundingClientRect());
|
|
73745
74059
|
}
|
|
73746
74060
|
};
|
|
74061
|
+
const observer = new ResizeObserver(() => {
|
|
74062
|
+
if (targetElement) {
|
|
74063
|
+
setTargetRect(targetElement.getBoundingClientRect());
|
|
74064
|
+
}
|
|
74065
|
+
});
|
|
74066
|
+
const valUIElement = document.getElementById("val-ui");
|
|
74067
|
+
if (targetElement && valUIElement) {
|
|
74068
|
+
observer.observe(valUIElement);
|
|
74069
|
+
}
|
|
73747
74070
|
document.addEventListener("scroll", scrollListener, { passive: true });
|
|
73748
74071
|
return () => {
|
|
73749
74072
|
document.removeEventListener("scroll", scrollListener);
|
|
74073
|
+
observer.disconnect();
|
|
73750
74074
|
};
|
|
73751
74075
|
}, [targetElement]);
|
|
73752
74076
|
return [
|
|
@@ -73793,7 +74117,7 @@ function useInitEditMode() {
|
|
|
73793
74117
|
}, []);
|
|
73794
74118
|
return [editMode, setEditMode];
|
|
73795
74119
|
}
|
|
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";
|
|
74120
|
+
const styleCss = "/*\n Need to explicitly set config path, otherwise it may fail to resolve when\n built from outside packages/ui.\n*/\n\n/*\n ! tailwindcss v3.3.5 | MIT License | https://tailwindcss.com\n*/\n\n/*\n1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)\n2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116)\n*/\n\n*,\n::before,\n::after {\n box-sizing: border-box; /* 1 */\n border-width: 0; /* 2 */\n border-style: solid; /* 2 */\n border-color: #e5e7eb; /* 2 */\n}\n\n::before,\n::after {\n --tw-content: '';\n}\n\n/*\n1. Use a consistent sensible line-height in all browsers.\n2. Prevent adjustments of font size after orientation changes in iOS.\n3. Use a more readable tab size.\n4. Use the user's configured `sans` font-family by default.\n5. Use the user's configured `sans` font-feature-settings by default.\n6. Use the user's configured `sans` font-variation-settings by default.\n*/\n\nhtml {\n line-height: 1.5; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n -moz-tab-size: 4; /* 3 */\n -o-tab-size: 4;\n tab-size: 4; /* 3 */\n font-family: 'Roboto', sans-serif; /* 4 */\n font-feature-settings: normal; /* 5 */\n font-variation-settings: normal; /* 6 */\n}\n\n/*\n1. Remove the margin in all browsers.\n2. Inherit line-height from `html` so users can set them as a class directly on the `html` element.\n*/\n\nbody {\n margin: 0; /* 1 */\n line-height: inherit; /* 2 */\n}\n\n/*\n1. Add the correct height in Firefox.\n2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)\n3. Ensure horizontal rules are visible by default.\n*/\n\nhr {\n height: 0; /* 1 */\n color: inherit; /* 2 */\n border-top-width: 1px; /* 3 */\n}\n\n/*\nAdd the correct text decoration in Chrome, Edge, and Safari.\n*/\n\nabbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n}\n\n/*\nRemove the default font size and weight for headings.\n*/\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n font-size: inherit;\n font-weight: inherit;\n}\n\n/*\nReset links to optimize for opt-in styling instead of opt-out.\n*/\n\na {\n color: inherit;\n text-decoration: inherit;\n}\n\n/*\nAdd the correct font weight in Edge and Safari.\n*/\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/*\n1. Use the user's configured `mono` font family by default.\n2. Correct the odd `em` font sizing in all browsers.\n*/\n\ncode,\nkbd,\nsamp,\npre {\n font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/*\nAdd the correct font size in all browsers.\n*/\n\nsmall {\n font-size: 80%;\n}\n\n/*\nPrevent `sub` and `sup` elements from affecting the line height in all browsers.\n*/\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/*\n1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)\n2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)\n3. Remove gaps between table borders by default.\n*/\n\ntable {\n text-indent: 0; /* 1 */\n border-color: inherit; /* 2 */\n border-collapse: collapse; /* 3 */\n}\n\n/*\n1. Change the font styles in all browsers.\n2. Remove the margin in Firefox and Safari.\n3. Remove default padding in all browsers.\n*/\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-feature-settings: inherit; /* 1 */\n font-variation-settings: inherit; /* 1 */\n font-size: 100%; /* 1 */\n font-weight: inherit; /* 1 */\n line-height: inherit; /* 1 */\n color: inherit; /* 1 */\n margin: 0; /* 2 */\n padding: 0; /* 3 */\n}\n\n/*\nRemove the inheritance of text transform in Edge and Firefox.\n*/\n\nbutton,\nselect {\n text-transform: none;\n}\n\n/*\n1. Correct the inability to style clickable types in iOS and Safari.\n2. Remove default button styles.\n*/\n\nbutton,\n[type='button'],\n[type='reset'],\n[type='submit'] {\n -webkit-appearance: button; /* 1 */\n background-color: transparent; /* 2 */\n background-image: none; /* 2 */\n}\n\n/*\nUse the modern Firefox focus style for all focusable elements.\n*/\n\n:-moz-focusring {\n outline: auto;\n}\n\n/*\nRemove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737)\n*/\n\n:-moz-ui-invalid {\n box-shadow: none;\n}\n\n/*\nAdd the correct vertical alignment in Chrome and Firefox.\n*/\n\nprogress {\n vertical-align: baseline;\n}\n\n/*\nCorrect the cursor style of increment and decrement buttons in Safari.\n*/\n\n::-webkit-inner-spin-button,\n::-webkit-outer-spin-button {\n height: auto;\n}\n\n/*\n1. Correct the odd appearance in Chrome and Safari.\n2. Correct the outline style in Safari.\n*/\n\n[type='search'] {\n -webkit-appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/*\nRemove the inner padding in Chrome and Safari on macOS.\n*/\n\n::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/*\n1. Correct the inability to style clickable types in iOS and Safari.\n2. Change font properties to `inherit` in Safari.\n*/\n\n::-webkit-file-upload-button {\n -webkit-appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/*\nAdd the correct display in Chrome and Safari.\n*/\n\nsummary {\n display: list-item;\n}\n\n/*\nRemoves the default spacing and border for appropriate elements.\n*/\n\nblockquote,\ndl,\ndd,\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\nhr,\nfigure,\np,\npre {\n margin: 0;\n}\n\nfieldset {\n margin: 0;\n padding: 0;\n}\n\nlegend {\n padding: 0;\n}\n\nol,\nul,\nmenu {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n/*\nReset default styling for dialogs.\n*/\n\ndialog {\n padding: 0;\n}\n\n/*\nPrevent resizing textareas horizontally by default.\n*/\n\ntextarea {\n resize: vertical;\n}\n\n/*\n1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300)\n2. Set the default placeholder color to the user's configured gray 400 color.\n*/\n\ninput::-moz-placeholder, textarea::-moz-placeholder {\n opacity: 1; /* 1 */\n color: #9ca3af; /* 2 */\n}\n\ninput::placeholder,\ntextarea::placeholder {\n opacity: 1; /* 1 */\n color: #9ca3af; /* 2 */\n}\n\n/*\nSet the default cursor for buttons.\n*/\n\nbutton,\n[role=\"button\"] {\n cursor: pointer;\n}\n\n/*\nMake sure disabled buttons don't get the pointer cursor.\n*/\n\n:disabled {\n cursor: default;\n}\n\n/*\n1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14)\n2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210)\n This can trigger a poorly considered lint error in some tools but is included by design.\n*/\n\nimg,\nsvg,\nvideo,\ncanvas,\naudio,\niframe,\nembed,\nobject {\n display: block; /* 1 */\n vertical-align: middle; /* 2 */\n}\n\n/*\nConstrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14)\n*/\n\nimg,\nvideo {\n max-width: 100%;\n height: auto;\n}\n\n/* Make elements with the HTML hidden attribute stay hidden by default */\n\n[hidden] {\n display: none;\n}\n\n/* :host for use with Shadow DOM, copied from the TailwindCSS prelude */\n\n:host {\n --background: 0 0% 100%;\n --foreground: 222.2 84% 4.9%;\n\n --card: 0 0% 100%;\n --card-foreground: 222.2 84% 4.9%;\n\n --popover: 0 0% 100%;\n --popover-foreground: 222.2 84% 4.9%;\n\n --primary: 222.2 47.4% 11.2%;\n --primary-foreground: 210 40% 98%;\n\n --secondary: 210 40% 96.1%;\n --secondary-foreground: 222.2 47.4% 11.2%;\n\n --muted: 0 0% 57.3%;\n --muted-foreground: 215.4 16.3% 46.9%;\n\n --accent: 273 60% 51%;\n --accent-foreground: 110 10% 94%;\n\n --destructive: 0 84.2% 60.2%;\n --destructive-foreground: 210 40% 98%;\n\n --border: 214.3 31.8% 91.4%;\n --input: 214.3 31.8% 91.4%;\n --ring: 222.2 84% 4.9%;\n\n --radius: 0.5rem;\n }\n\n:root {\n --background: 110 10% 94%;\n --foreground: 222.2 84% 4.9%;\n\n --card: 0 0% 100%;\n --card-foreground: 222.2 84% 4.9%;\n\n --popover: 0 0% 100%;\n --popover-foreground: 222.2 84% 4.9%;\n\n --primary: 222.2 47.4% 11.2%;\n --primary-foreground: 210 40% 98%;\n\n --secondary: 210 40% 96.1%;\n --secondary-foreground: 222.2 47.4% 11.2%;\n\n --muted: 0 0% 57.3%;\n --muted-foreground: 215.4 16.3% 46.9%;\n\n --accent: 273 60% 51%;\n --accent-foreground: 110 10% 94%;\n\n --destructive: 0 84.2% 60.2%;\n --destructive-foreground: 210 40% 98%;\n\n --border: 214.3 31.8% 91.4%;\n --input: 212.7 9.1% 76.3%;\n --ring: 222.2 84% 4.9%;\n\n --radius: 0.5rem;\n }\n\n/* dark theme */\n\n*[data-mode=\"dark\"] {\n --background: 0 0% 4%;\n --foreground: 210 40% 98%;\n\n --card: 222.2 84% 4.9%;\n --card-foreground: 210 40% 98%;\n\n --popover: 222.2 84% 4.9%;\n --popover-foreground: 210 40% 98%;\n\n --primary: 210 40% 98%;\n --primary-foreground: 222.2 47.4% 11.2%;\n\n --secondary: 217.2 32.6% 17.5%;\n --secondary-foreground: 210 40% 98%;\n\n --muted: 178 23% 76%;\n --muted-foreground: 215 20.2% 65.1%;\n\n --accent: 159 60% 51%;\n --accent-foreground: 210 40% 98%;\n\n --destructive: 0 62.8% 30.6%;\n --destructive-foreground: 210 40% 98%;\n\n --border: 217.2 32.6% 17.5%;\n --input: 217.2 32.6% 17.5%;\n --ring: 212.7 26.8% 83.9%;\n }\n\n* {\n border-color: hsl(var(--border));\n}\n\nbody {\n background-color: hsl(var(--background));\n color: hsl(var(--foreground));\n}\n\n*, ::before, ::after {\n --tw-border-spacing-x: 0;\n --tw-border-spacing-y: 0;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-rotate: 0;\n --tw-skew-x: 0;\n --tw-skew-y: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-pan-x: ;\n --tw-pan-y: ;\n --tw-pinch-zoom: ;\n --tw-scroll-snap-strictness: proximity;\n --tw-gradient-from-position: ;\n --tw-gradient-via-position: ;\n --tw-gradient-to-position: ;\n --tw-ordinal: ;\n --tw-slashed-zero: ;\n --tw-numeric-figure: ;\n --tw-numeric-spacing: ;\n --tw-numeric-fraction: ;\n --tw-ring-inset: ;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: rgb(59 130 246 / 0.5);\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n --tw-blur: ;\n --tw-brightness: ;\n --tw-contrast: ;\n --tw-grayscale: ;\n --tw-hue-rotate: ;\n --tw-invert: ;\n --tw-saturate: ;\n --tw-sepia: ;\n --tw-drop-shadow: ;\n --tw-backdrop-blur: ;\n --tw-backdrop-brightness: ;\n --tw-backdrop-contrast: ;\n --tw-backdrop-grayscale: ;\n --tw-backdrop-hue-rotate: ;\n --tw-backdrop-invert: ;\n --tw-backdrop-opacity: ;\n --tw-backdrop-saturate: ;\n --tw-backdrop-sepia: ;\n}\n\n::backdrop {\n --tw-border-spacing-x: 0;\n --tw-border-spacing-y: 0;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-rotate: 0;\n --tw-skew-x: 0;\n --tw-skew-y: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-pan-x: ;\n --tw-pan-y: ;\n --tw-pinch-zoom: ;\n --tw-scroll-snap-strictness: proximity;\n --tw-gradient-from-position: ;\n --tw-gradient-via-position: ;\n --tw-gradient-to-position: ;\n --tw-ordinal: ;\n --tw-slashed-zero: ;\n --tw-numeric-figure: ;\n --tw-numeric-spacing: ;\n --tw-numeric-fraction: ;\n --tw-ring-inset: ;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: rgb(59 130 246 / 0.5);\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n --tw-blur: ;\n --tw-brightness: ;\n --tw-contrast: ;\n --tw-grayscale: ;\n --tw-hue-rotate: ;\n --tw-invert: ;\n --tw-saturate: ;\n --tw-sepia: ;\n --tw-drop-shadow: ;\n --tw-backdrop-blur: ;\n --tw-backdrop-brightness: ;\n --tw-backdrop-contrast: ;\n --tw-backdrop-grayscale: ;\n --tw-backdrop-hue-rotate: ;\n --tw-backdrop-invert: ;\n --tw-backdrop-opacity: ;\n --tw-backdrop-saturate: ;\n --tw-backdrop-sepia: ;\n}\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n}\n.pointer-events-none {\n pointer-events: none;\n}\n.invisible {\n visibility: hidden;\n}\n.static {\n position: static;\n}\n.fixed {\n position: fixed;\n}\n.absolute {\n position: absolute;\n}\n.relative {\n position: relative;\n}\n.sticky {\n position: sticky;\n}\n.inset-0 {\n inset: 0px;\n}\n.inset-y-0 {\n top: 0px;\n bottom: 0px;\n}\n.-left-2 {\n left: -0.5rem;\n}\n.-right-\\[10px\\] {\n right: -10px;\n}\n.-top-\\[10px\\] {\n top: -10px;\n}\n.-top-\\[4px\\] {\n top: -4px;\n}\n.bottom-0 {\n bottom: 0px;\n}\n.left-0 {\n left: 0px;\n}\n.left-1 {\n left: 0.25rem;\n}\n.left-2 {\n left: 0.5rem;\n}\n.left-\\[50\\%\\] {\n left: 50%;\n}\n.right-0 {\n right: 0px;\n}\n.right-1 {\n right: 0.25rem;\n}\n.right-4 {\n right: 1rem;\n}\n.right-\\[16px\\] {\n right: 16px;\n}\n.top-0 {\n top: 0px;\n}\n.top-1\\/2 {\n top: 50%;\n}\n.top-4 {\n top: 1rem;\n}\n.top-\\[50\\%\\] {\n top: 50%;\n}\n.z-50 {\n z-index: 50;\n}\n.z-\\[1\\] {\n z-index: 1;\n}\n.z-\\[5\\] {\n z-index: 5;\n}\n.z-overlay {\n z-index: 4;\n}\n.m-4 {\n margin: 1rem;\n}\n.-mx-1 {\n margin-left: -0.25rem;\n margin-right: -0.25rem;\n}\n.-my-2 {\n margin-top: -0.5rem;\n margin-bottom: -0.5rem;\n}\n.-my-\\[100px\\] {\n margin-top: -100px;\n margin-bottom: -100px;\n}\n.mx-2 {\n margin-left: 0.5rem;\n margin-right: 0.5rem;\n}\n.my-1 {\n margin-top: 0.25rem;\n margin-bottom: 0.25rem;\n}\n.mb-4 {\n margin-bottom: 1rem;\n}\n.ml-0 {\n margin-left: 0px;\n}\n.ml-2 {\n margin-left: 0.5rem;\n}\n.ml-4 {\n margin-left: 1rem;\n}\n.ml-\\[20px\\] {\n margin-left: 20px;\n}\n.ml-auto {\n margin-left: auto;\n}\n.mr-2 {\n margin-right: 0.5rem;\n}\n.mt-2 {\n margin-top: 0.5rem;\n}\n.block {\n display: block;\n}\n.inline {\n display: inline;\n}\n.flex {\n display: flex;\n}\n.inline-flex {\n display: inline-flex;\n}\n.table {\n display: table;\n}\n.grid {\n display: grid;\n}\n.hidden {\n display: none;\n}\n.aspect-square {\n aspect-ratio: 1 / 1;\n}\n.h-10 {\n height: 2.5rem;\n}\n.h-11 {\n height: 2.75rem;\n}\n.h-2 {\n height: 0.5rem;\n}\n.h-2\\.5 {\n height: 0.625rem;\n}\n.h-3 {\n height: 0.75rem;\n}\n.h-3\\.5 {\n height: 0.875rem;\n}\n.h-4 {\n height: 1rem;\n}\n.h-7 {\n height: 1.75rem;\n}\n.h-9 {\n height: 2.25rem;\n}\n.h-\\[100\\] {\n height: 100;\n}\n.h-\\[12px\\] {\n height: 12px;\n}\n.h-\\[14px\\] {\n height: 14px;\n}\n.h-\\[18px\\] {\n height: 18px;\n}\n.h-\\[1px\\] {\n height: 1px;\n}\n.h-\\[20px\\] {\n height: 20px;\n}\n.h-\\[22px\\] {\n height: 22px;\n}\n.h-\\[24px\\] {\n height: 24px;\n}\n.h-\\[32px\\] {\n height: 32px;\n}\n.h-\\[50px\\] {\n height: 50px;\n}\n.h-\\[75px\\] {\n height: 75px;\n}\n.h-\\[9px\\] {\n height: 9px;\n}\n.h-\\[var\\(--radix-select-trigger-height\\)\\] {\n height: var(--radix-select-trigger-height);\n}\n.h-full {\n height: 100%;\n}\n.h-px {\n height: 1px;\n}\n.h-screen {\n height: 100vh;\n}\n.max-h-\\[300px\\] {\n max-height: 300px;\n}\n.max-h-\\[500px\\] {\n max-height: 500px;\n}\n.min-h-\\[200px\\] {\n min-height: 200px;\n}\n.min-h-\\[300px\\] {\n min-height: 300px;\n}\n.min-h-screen {\n min-height: 100vh;\n}\n.w-0 {\n width: 0px;\n}\n.w-1\\/3 {\n width: 33.333333%;\n}\n.w-10 {\n width: 2.5rem;\n}\n.w-2 {\n width: 0.5rem;\n}\n.w-2\\.5 {\n width: 0.625rem;\n}\n.w-3 {\n width: 0.75rem;\n}\n.w-3\\.5 {\n width: 0.875rem;\n}\n.w-4 {\n width: 1rem;\n}\n.w-5 {\n width: 1.25rem;\n}\n.w-7 {\n width: 1.75rem;\n}\n.w-72 {\n width: 18rem;\n}\n.w-9 {\n width: 2.25rem;\n}\n.w-\\[12px\\] {\n width: 12px;\n}\n.w-\\[14px\\] {\n width: 14px;\n}\n.w-\\[1px\\] {\n width: 1px;\n}\n.w-\\[20px\\] {\n width: 20px;\n}\n.w-\\[24px\\] {\n width: 24px;\n}\n.w-\\[300px\\] {\n width: 300px;\n}\n.w-\\[32px\\] {\n width: 32px;\n}\n.w-\\[44px\\] {\n width: 44px;\n}\n.w-\\[9px\\] {\n width: 9px;\n}\n.w-fit {\n width: -moz-fit-content;\n width: fit-content;\n}\n.w-full {\n width: 100%;\n}\n.w-screen {\n width: 100vw;\n}\n.min-w-0 {\n min-width: 0px;\n}\n.min-w-\\[320px\\] {\n min-width: 320px;\n}\n.min-w-\\[500px\\] {\n min-width: 500px;\n}\n.min-w-\\[8rem\\] {\n min-width: 8rem;\n}\n.min-w-\\[var\\(--radix-select-trigger-width\\)\\] {\n min-width: var(--radix-select-trigger-width);\n}\n.max-w-\\[1000px\\] {\n max-width: 1000px;\n}\n.max-w-\\[10vw\\] {\n max-width: 10vw;\n}\n.max-w-\\[300px\\] {\n max-width: 300px;\n}\n.max-w-\\[90vw\\] {\n max-width: 90vw;\n}\n.max-w-lg {\n max-width: 32rem;\n}\n.max-w-xl {\n max-width: 36rem;\n}\n.flex-1 {\n flex: 1 1 0%;\n}\n.flex-auto {\n flex: 1 1 auto;\n}\n.flex-shrink-0 {\n flex-shrink: 0;\n}\n.shrink-0 {\n flex-shrink: 0;\n}\n.flex-grow {\n flex-grow: 1;\n}\n.border-collapse {\n border-collapse: collapse;\n}\n.-translate-y-1\\/2 {\n --tw-translate-y: -50%;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.translate-x-\\[-50\\%\\] {\n --tw-translate-x: -50%;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.translate-y-\\[-50\\%\\] {\n --tw-translate-y: -50%;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.-rotate-90 {\n --tw-rotate: -90deg;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.rotate-90 {\n --tw-rotate: 90deg;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.rotate-\\[-90deg\\] {\n --tw-rotate: -90deg;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.rotate-\\[90deg\\] {\n --tw-rotate: 90deg;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.transform {\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.cursor-col-resize {\n cursor: col-resize;\n}\n.cursor-default {\n cursor: default;\n}\n.cursor-grab {\n cursor: grab;\n}\n.cursor-pointer {\n cursor: pointer;\n}\n.cursor-se-resize {\n cursor: se-resize;\n}\n.touch-none {\n touch-action: none;\n}\n.select-none {\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n}\n.resize-none {\n resize: none;\n}\n.resize {\n resize: both;\n}\n.list-decimal {\n list-style-type: decimal;\n}\n.list-disc {\n list-style-type: disc;\n}\n.grid-cols-\\[min-content_1fr\\] {\n grid-template-columns: min-content 1fr;\n}\n.grid-rows-\\[1fr\\2c _min-content\\] {\n grid-template-rows: 1fr min-content;\n}\n.flex-row {\n flex-direction: row;\n}\n.flex-col {\n flex-direction: column;\n}\n.flex-col-reverse {\n flex-direction: column-reverse;\n}\n.items-start {\n align-items: flex-start;\n}\n.items-center {\n align-items: center;\n}\n.justify-start {\n justify-content: flex-start;\n}\n.justify-end {\n justify-content: flex-end;\n}\n.justify-center {\n justify-content: center;\n}\n.justify-between {\n justify-content: space-between;\n}\n.gap-1 {\n gap: 0.25rem;\n}\n.gap-2 {\n gap: 0.5rem;\n}\n.gap-3 {\n gap: 0.75rem;\n}\n.gap-4 {\n gap: 1rem;\n}\n.gap-5 {\n gap: 1.25rem;\n}\n.gap-\\[0\\.5em\\] {\n gap: 0.5em;\n}\n.gap-\\[36px\\] {\n gap: 36px;\n}\n.gap-x-4 {\n -moz-column-gap: 1rem;\n column-gap: 1rem;\n}\n.gap-y-1 {\n row-gap: 0.25rem;\n}\n.gap-y-2 {\n row-gap: 0.5rem;\n}\n.gap-y-4 {\n row-gap: 1rem;\n}\n.space-x-1 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-x-reverse: 0;\n margin-right: calc(0.25rem * var(--tw-space-x-reverse));\n margin-left: calc(0.25rem * calc(1 - var(--tw-space-x-reverse)));\n}\n.space-y-1 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(0.25rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(0.25rem * var(--tw-space-y-reverse));\n}\n.space-y-1\\.5 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(0.375rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(0.375rem * var(--tw-space-y-reverse));\n}\n.space-y-2 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(0.5rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(0.5rem * var(--tw-space-y-reverse));\n}\n.space-y-4 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(1rem * var(--tw-space-y-reverse));\n}\n.overflow-auto {\n overflow: auto;\n}\n.overflow-hidden {\n overflow: hidden;\n}\n.overflow-clip {\n overflow: clip;\n}\n.overflow-scroll {\n overflow: scroll;\n}\n.overflow-y-auto {\n overflow-y: auto;\n}\n.overflow-x-hidden {\n overflow-x: hidden;\n}\n.overflow-y-scroll {\n overflow-y: scroll;\n}\n.truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.whitespace-nowrap {\n white-space: nowrap;\n}\n.rounded {\n border-radius: 0.25rem;\n}\n.rounded-\\[inherit\\] {\n border-radius: inherit;\n}\n.rounded-full {\n border-radius: 9999px;\n}\n.rounded-lg {\n border-radius: var(--radius);\n}\n.rounded-md {\n border-radius: calc(var(--radius) - 2px);\n}\n.rounded-sm {\n border-radius: calc(var(--radius) - 4px);\n}\n.rounded-b-none {\n border-bottom-right-radius: 0px;\n border-bottom-left-radius: 0px;\n}\n.rounded-b-sm {\n border-bottom-right-radius: calc(var(--radius) - 4px);\n border-bottom-left-radius: calc(var(--radius) - 4px);\n}\n.rounded-t-none {\n border-top-left-radius: 0px;\n border-top-right-radius: 0px;\n}\n.border {\n border-width: 1px;\n}\n.border-2 {\n border-width: 2px;\n}\n.border-\\[2px\\] {\n border-width: 2px;\n}\n.border-x {\n border-left-width: 1px;\n border-right-width: 1px;\n}\n.border-y {\n border-top-width: 1px;\n border-bottom-width: 1px;\n}\n.border-b {\n border-bottom-width: 1px;\n}\n.border-b-0 {\n border-bottom-width: 0px;\n}\n.border-b-2 {\n border-bottom-width: 2px;\n}\n.border-l {\n border-left-width: 1px;\n}\n.border-l-2 {\n border-left-width: 2px;\n}\n.border-r {\n border-right-width: 1px;\n}\n.border-t {\n border-top-width: 1px;\n}\n.border-t-0 {\n border-top-width: 0px;\n}\n.border-accent {\n border-color: hsl(var(--accent));\n}\n.border-border {\n border-color: hsl(var(--border));\n}\n.border-gray-400 {\n --tw-border-opacity: 1;\n border-color: rgb(156 163 175 / var(--tw-border-opacity));\n}\n.border-input {\n border-color: hsl(var(--input));\n}\n.border-primary {\n border-color: hsl(var(--primary));\n}\n.border-transparent {\n border-color: transparent;\n}\n.border-l-transparent {\n border-left-color: transparent;\n}\n.border-t-transparent {\n border-top-color: transparent;\n}\n.bg-accent {\n background-color: hsl(var(--accent));\n}\n.bg-background {\n background-color: hsl(var(--background));\n}\n.bg-background\\/80 {\n background-color: hsl(var(--background) / 0.8);\n}\n.bg-border {\n background-color: hsl(var(--border));\n}\n.bg-card {\n background-color: hsl(var(--card));\n}\n.bg-card-foreground {\n background-color: hsl(var(--card-foreground));\n}\n.bg-destructive {\n background-color: hsl(var(--destructive));\n}\n.bg-gray-300 {\n --tw-bg-opacity: 1;\n background-color: rgb(209 213 219 / var(--tw-bg-opacity));\n}\n.bg-gray-500 {\n --tw-bg-opacity: 1;\n background-color: rgb(107 114 128 / var(--tw-bg-opacity));\n}\n.bg-muted {\n background-color: hsl(var(--muted));\n}\n.bg-popover {\n background-color: hsl(var(--popover));\n}\n.bg-primary {\n background-color: hsl(var(--primary));\n}\n.bg-red-500 {\n --tw-bg-opacity: 1;\n background-color: rgb(239 68 68 / var(--tw-bg-opacity));\n}\n.bg-secondary {\n background-color: hsl(var(--secondary));\n}\n.bg-transparent {\n background-color: transparent;\n}\n.bg-white {\n --tw-bg-opacity: 1;\n background-color: rgb(255 255 255 / var(--tw-bg-opacity));\n}\n.bg-gradient-to-b {\n background-image: linear-gradient(to bottom, var(--tw-gradient-stops));\n}\n.bg-gradient-to-br {\n background-image: linear-gradient(to bottom right, var(--tw-gradient-stops));\n}\n.from-background\\/90 {\n --tw-gradient-from: hsl(var(--background) / 0.9) var(--tw-gradient-from-position);\n --tw-gradient-to: hsl(var(--background) / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\n}\n.from-card {\n --tw-gradient-from: hsl(var(--card)) var(--tw-gradient-from-position);\n --tw-gradient-to: hsl(var(--card) / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\n}\n.from-transparent {\n --tw-gradient-from: transparent var(--tw-gradient-from-position);\n --tw-gradient-to: rgb(0 0 0 / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\n}\n.from-40\\% {\n --tw-gradient-from-position: 40%;\n}\n.from-50\\% {\n --tw-gradient-from-position: 50%;\n}\n.to-background {\n --tw-gradient-to: hsl(var(--background)) var(--tw-gradient-to-position);\n}\n.fill-current {\n fill: currentColor;\n}\n.fill-white {\n fill: #fff;\n}\n.stroke-\\[2px\\] {\n stroke-width: 2px;\n}\n.stroke-\\[3px\\] {\n stroke-width: 3px;\n}\n.object-contain {\n -o-object-fit: contain;\n object-fit: contain;\n}\n.p-0 {\n padding: 0px;\n}\n.p-1 {\n padding: 0.25rem;\n}\n.p-10 {\n padding: 2.5rem;\n}\n.p-2 {\n padding: 0.5rem;\n}\n.p-3 {\n padding: 0.75rem;\n}\n.p-4 {\n padding: 1rem;\n}\n.p-6 {\n padding: 1.5rem;\n}\n.p-\\[1px\\] {\n padding: 1px;\n}\n.px-1 {\n padding-left: 0.25rem;\n padding-right: 0.25rem;\n}\n.px-2 {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n}\n.px-2\\.5 {\n padding-left: 0.625rem;\n padding-right: 0.625rem;\n}\n.px-3 {\n padding-left: 0.75rem;\n padding-right: 0.75rem;\n}\n.px-4 {\n padding-left: 1rem;\n padding-right: 1rem;\n}\n.px-5 {\n padding-left: 1.25rem;\n padding-right: 1.25rem;\n}\n.px-8 {\n padding-left: 2rem;\n padding-right: 2rem;\n}\n.px-\\[24px\\] {\n padding-left: 24px;\n padding-right: 24px;\n}\n.px-\\[2px\\] {\n padding-left: 2px;\n padding-right: 2px;\n}\n.py-1 {\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n}\n.py-1\\.5 {\n padding-top: 0.375rem;\n padding-bottom: 0.375rem;\n}\n.py-2 {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n}\n.py-3 {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n}\n.py-4 {\n padding-top: 1rem;\n padding-bottom: 1rem;\n}\n.py-6 {\n padding-top: 1.5rem;\n padding-bottom: 1.5rem;\n}\n.py-7 {\n padding-top: 1.75rem;\n padding-bottom: 1.75rem;\n}\n.py-\\[2px\\] {\n padding-top: 2px;\n padding-bottom: 2px;\n}\n.pb-0 {\n padding-bottom: 0px;\n}\n.pb-20 {\n padding-bottom: 5rem;\n}\n.pb-4 {\n padding-bottom: 1rem;\n}\n.pb-8 {\n padding-bottom: 2rem;\n}\n.pl-0 {\n padding-left: 0px;\n}\n.pl-6 {\n padding-left: 1.5rem;\n}\n.pl-8 {\n padding-left: 2rem;\n}\n.pl-\\[300px\\] {\n padding-left: 300px;\n}\n.pr-2 {\n padding-right: 0.5rem;\n}\n.pt-0 {\n padding-top: 0px;\n}\n.pt-1 {\n padding-top: 0.25rem;\n}\n.pt-2 {\n padding-top: 0.5rem;\n}\n.pt-4 {\n padding-top: 1rem;\n}\n.text-left {\n text-align: left;\n}\n.text-center {\n text-align: center;\n}\n.text-start {\n text-align: start;\n}\n.font-sans {\n font-family: 'Roboto', sans-serif;\n}\n.font-serif {\n font-family: 'Space Mono', monospace;\n}\n.text-2xl {\n font-size: 1.5rem;\n line-height: 2rem;\n}\n.text-3xl {\n font-size: 1.875rem;\n line-height: 2.25rem;\n}\n.text-4xl {\n font-size: 2.25rem;\n line-height: 2.5rem;\n}\n.text-\\[0\\.8rem\\] {\n font-size: 0.8rem;\n}\n.text-\\[12px\\] {\n font-size: 12px;\n}\n.text-lg {\n font-size: 1.125rem;\n line-height: 1.75rem;\n}\n.text-sm {\n font-size: 0.875rem;\n line-height: 1.25rem;\n}\n.text-xl {\n font-size: 1.25rem;\n line-height: 1.75rem;\n}\n.text-xs {\n font-size: 0.75rem;\n line-height: 1rem;\n}\n.font-\\[12px\\] {\n font-weight: 12px;\n}\n.font-\\[400\\] {\n font-weight: 400;\n}\n.font-\\[500\\] {\n font-weight: 500;\n}\n.font-\\[550\\] {\n font-weight: 550;\n}\n.font-bold {\n font-weight: 700;\n}\n.font-extrabold {\n font-weight: 800;\n}\n.font-medium {\n font-weight: 500;\n}\n.font-normal {\n font-weight: 400;\n}\n.font-semibold {\n font-weight: 600;\n}\n.uppercase {\n text-transform: uppercase;\n}\n.italic {\n font-style: italic;\n}\n.leading-4 {\n line-height: 1rem;\n}\n.leading-none {\n line-height: 1;\n}\n.tracking-\\[0\\.04em\\] {\n letter-spacing: 0.04em;\n}\n.tracking-tight {\n letter-spacing: -0.025em;\n}\n.tracking-wider {\n letter-spacing: 0.05em;\n}\n.tracking-widest {\n letter-spacing: 0.1em;\n}\n.text-accent {\n color: hsl(var(--accent));\n}\n.text-accent-foreground {\n color: hsl(var(--accent-foreground));\n}\n.text-background {\n color: hsl(var(--background));\n}\n.text-card-foreground {\n color: hsl(var(--card-foreground));\n}\n.text-current {\n color: currentColor;\n}\n.text-destructive {\n color: hsl(var(--destructive));\n}\n.text-destructive-foreground {\n color: hsl(var(--destructive-foreground));\n}\n.text-foreground {\n color: hsl(var(--foreground));\n}\n.text-muted {\n color: hsl(var(--muted));\n}\n.text-muted-foreground {\n color: hsl(var(--muted-foreground));\n}\n.text-popover-foreground {\n color: hsl(var(--popover-foreground));\n}\n.text-primary {\n color: hsl(var(--primary));\n}\n.text-primary-foreground {\n color: hsl(var(--primary-foreground));\n}\n.text-secondary-foreground {\n color: hsl(var(--secondary-foreground));\n}\n.text-white {\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity));\n}\n.underline {\n text-decoration-line: underline;\n}\n.line-through {\n text-decoration-line: line-through;\n}\n.underline-offset-4 {\n text-underline-offset: 4px;\n}\n.antialiased {\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n.opacity-0 {\n opacity: 0;\n}\n.opacity-100 {\n opacity: 1;\n}\n.opacity-50 {\n opacity: 0.5;\n}\n.opacity-60 {\n opacity: 0.6;\n}\n.opacity-70 {\n opacity: 0.7;\n}\n.opacity-75 {\n opacity: 0.75;\n}\n.mix-blend-difference {\n mix-blend-mode: difference;\n}\n.shadow {\n --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);\n --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.shadow-lg {\n --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);\n --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.shadow-md {\n --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);\n --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.shadow-sm {\n --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.outline-none {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n.outline {\n outline-style: solid;\n}\n.ring-0 {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n.ring-offset-background {\n --tw-ring-offset-color: hsl(var(--background));\n}\n.drop-shadow-2xl {\n --tw-drop-shadow: drop-shadow(0 25px 25px rgb(0 0 0 / 0.15));\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n.drop-shadow-\\[0px_0px_12px_hsl\\(var\\(--accent\\)\\)\\] {\n --tw-drop-shadow: drop-shadow(0px 0px 12px hsl(var(--accent)));\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n.filter {\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n.backdrop-blur-lg {\n --tw-backdrop-blur: blur(16px);\n -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n}\n.backdrop-blur-sm {\n --tw-backdrop-blur: blur(4px);\n -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n}\n.transition-all {\n transition-property: all;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.transition-colors {\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.transition-opacity {\n transition-property: opacity;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.transition-transform {\n transition-property: transform;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.duration-150 {\n transition-duration: 150ms;\n}\n.duration-200 {\n transition-duration: 200ms;\n}\n.ease-in-out {\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n}\n@keyframes enter {\n\n from {\n opacity: var(--tw-enter-opacity, 1);\n transform: translate3d(var(--tw-enter-translate-x, 0), var(--tw-enter-translate-y, 0), 0) scale3d(var(--tw-enter-scale, 1), var(--tw-enter-scale, 1), var(--tw-enter-scale, 1)) rotate(var(--tw-enter-rotate, 0));\n }\n}\n@keyframes exit {\n\n to {\n opacity: var(--tw-exit-opacity, 1);\n transform: translate3d(var(--tw-exit-translate-x, 0), var(--tw-exit-translate-y, 0), 0) scale3d(var(--tw-exit-scale, 1), var(--tw-exit-scale, 1), var(--tw-exit-scale, 1)) rotate(var(--tw-exit-rotate, 0));\n }\n}\n.animate-in {\n animation-name: enter;\n animation-duration: 150ms;\n --tw-enter-opacity: initial;\n --tw-enter-scale: initial;\n --tw-enter-rotate: initial;\n --tw-enter-translate-x: initial;\n --tw-enter-translate-y: initial;\n}\n.fade-in-0 {\n --tw-enter-opacity: 0;\n}\n.zoom-in-95 {\n --tw-enter-scale: .95;\n}\n.duration-150 {\n animation-duration: 150ms;\n}\n.duration-200 {\n animation-duration: 200ms;\n}\n.ease-in-out {\n animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n}\n.file\\:border-0::file-selector-button {\n border-width: 0px;\n}\n.file\\:bg-transparent::file-selector-button {\n background-color: transparent;\n}\n.file\\:text-sm::file-selector-button {\n font-size: 0.875rem;\n line-height: 1.25rem;\n}\n.file\\:font-medium::file-selector-button {\n font-weight: 500;\n}\n.placeholder\\:text-muted-foreground::-moz-placeholder {\n color: hsl(var(--muted-foreground));\n}\n.placeholder\\:text-muted-foreground::placeholder {\n color: hsl(var(--muted-foreground));\n}\n.focus-within\\:relative:focus-within {\n position: relative;\n}\n.hover\\:w-\\[2px\\]:hover {\n width: 2px;\n}\n.hover\\:w-\\[3px\\]:hover {\n width: 3px;\n}\n.hover\\:cursor-pointer:hover {\n cursor: pointer;\n}\n.hover\\:rounded-lg:hover {\n border-radius: var(--radius);\n}\n.hover\\:bg-accent:hover {\n background-color: hsl(var(--accent));\n}\n.hover\\:bg-border:hover {\n background-color: hsl(var(--border));\n}\n.hover\\:bg-destructive\\/90:hover {\n background-color: hsl(var(--destructive) / 0.9);\n}\n.hover\\:bg-muted:hover {\n background-color: hsl(var(--muted));\n}\n.hover\\:bg-primary:hover {\n background-color: hsl(var(--primary));\n}\n.hover\\:bg-primary\\/90:hover {\n background-color: hsl(var(--primary) / 0.9);\n}\n.hover\\:bg-red-700:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(185 28 28 / var(--tw-bg-opacity));\n}\n.hover\\:bg-secondary\\/80:hover {\n background-color: hsl(var(--secondary) / 0.8);\n}\n.hover\\:text-accent-foreground:hover {\n color: hsl(var(--accent-foreground));\n}\n.hover\\:text-muted-foreground:hover {\n color: hsl(var(--muted-foreground));\n}\n.hover\\:text-primary-foreground:hover {\n color: hsl(var(--primary-foreground));\n}\n.hover\\:text-white:hover {\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity));\n}\n.hover\\:underline:hover {\n text-decoration-line: underline;\n}\n.hover\\:opacity-100:hover {\n opacity: 1;\n}\n.focus\\:bg-accent:focus {\n background-color: hsl(var(--accent));\n}\n.focus\\:bg-primary:focus {\n background-color: hsl(var(--primary));\n}\n.focus\\:text-accent-foreground:focus {\n color: hsl(var(--accent-foreground));\n}\n.focus\\:text-primary-foreground:focus {\n color: hsl(var(--primary-foreground));\n}\n.focus\\:outline-none:focus {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n.focus\\:ring-2:focus {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n.focus\\:ring-ring:focus {\n --tw-ring-color: hsl(var(--ring));\n}\n.focus\\:ring-offset-2:focus {\n --tw-ring-offset-width: 2px;\n}\n.focus-visible\\:outline-none:focus-visible {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n.focus-visible\\:outline-accent:focus-visible {\n outline-color: hsl(var(--accent));\n}\n.focus-visible\\:ring-2:focus-visible {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n.focus-visible\\:ring-ring:focus-visible {\n --tw-ring-color: hsl(var(--ring));\n}\n.focus-visible\\:ring-offset-2:focus-visible {\n --tw-ring-offset-width: 2px;\n}\n.focus-visible\\:ring-offset-background:focus-visible {\n --tw-ring-offset-color: hsl(var(--background));\n}\n.disabled\\:pointer-events-none:disabled {\n pointer-events: none;\n}\n.disabled\\:cursor-not-allowed:disabled {\n cursor: not-allowed;\n}\n.disabled\\:text-background:disabled {\n color: hsl(var(--background));\n}\n.disabled\\:opacity-50:disabled {\n opacity: 0.5;\n}\n.peer:disabled ~ .peer-disabled\\:cursor-not-allowed {\n cursor: not-allowed;\n}\n.peer:disabled ~ .peer-disabled\\:opacity-70 {\n opacity: 0.7;\n}\n.aria-selected\\:bg-accent[aria-selected=\"true\"] {\n background-color: hsl(var(--accent));\n}\n.aria-selected\\:text-accent-foreground[aria-selected=\"true\"] {\n color: hsl(var(--accent-foreground));\n}\n.aria-selected\\:opacity-100[aria-selected=\"true\"] {\n opacity: 1;\n}\n.data-\\[disabled\\]\\:pointer-events-none[data-disabled] {\n pointer-events: none;\n}\n.data-\\[side\\=bottom\\]\\:translate-y-1[data-side=bottom] {\n --tw-translate-y: 0.25rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.data-\\[side\\=left\\]\\:-translate-x-1[data-side=left] {\n --tw-translate-x: -0.25rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.data-\\[side\\=right\\]\\:translate-x-1[data-side=right] {\n --tw-translate-x: 0.25rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.data-\\[side\\=top\\]\\:-translate-y-1[data-side=top] {\n --tw-translate-y: -0.25rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.data-\\[state\\=checked\\]\\:translate-x-5[data-state=checked] {\n --tw-translate-x: 1.25rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.data-\\[state\\=unchecked\\]\\:translate-x-0[data-state=unchecked] {\n --tw-translate-x: 0px;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n@keyframes accordion-up {\n\n from {\n height: var(--radix-accordion-content-height);\n }\n\n to {\n height: 0;\n }\n}\n.data-\\[state\\=closed\\]\\:animate-accordion-up[data-state=closed] {\n animation: accordion-up 0.2s ease-out;\n}\n@keyframes accordion-down {\n\n from {\n height: 0;\n }\n\n to {\n height: var(--radix-accordion-content-height);\n }\n}\n.data-\\[state\\=open\\]\\:animate-accordion-down[data-state=open] {\n animation: accordion-down 0.2s ease-out;\n}\n.data-\\[state\\=active\\]\\:bg-background[data-state=active] {\n background-color: hsl(var(--background));\n}\n.data-\\[state\\=checked\\]\\:bg-accent[data-state=checked] {\n background-color: hsl(var(--accent));\n}\n.data-\\[state\\=checked\\]\\:bg-primary[data-state=checked] {\n background-color: hsl(var(--primary));\n}\n.data-\\[state\\=on\\]\\:bg-accent[data-state=on] {\n background-color: hsl(var(--accent));\n}\n.data-\\[state\\=open\\]\\:bg-accent[data-state=open] {\n background-color: hsl(var(--accent));\n}\n.data-\\[state\\=unchecked\\]\\:bg-primary[data-state=unchecked] {\n background-color: hsl(var(--primary));\n}\n.data-\\[state\\=active\\]\\:text-foreground[data-state=active] {\n color: hsl(var(--foreground));\n}\n.data-\\[state\\=checked\\]\\:text-primary-foreground[data-state=checked] {\n color: hsl(var(--primary-foreground));\n}\n.data-\\[state\\=on\\]\\:text-accent-foreground[data-state=on] {\n color: hsl(var(--accent-foreground));\n}\n.data-\\[state\\=open\\]\\:text-muted-foreground[data-state=open] {\n color: hsl(var(--muted-foreground));\n}\n.data-\\[disabled\\]\\:opacity-50[data-disabled] {\n opacity: 0.5;\n}\n.data-\\[state\\=active\\]\\:shadow-sm[data-state=active] {\n --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.data-\\[state\\=open\\]\\:animate-in[data-state=open] {\n animation-name: enter;\n animation-duration: 150ms;\n --tw-enter-opacity: initial;\n --tw-enter-scale: initial;\n --tw-enter-rotate: initial;\n --tw-enter-translate-x: initial;\n --tw-enter-translate-y: initial;\n}\n.data-\\[state\\=closed\\]\\:animate-out[data-state=closed] {\n animation-name: exit;\n animation-duration: 150ms;\n --tw-exit-opacity: initial;\n --tw-exit-scale: initial;\n --tw-exit-rotate: initial;\n --tw-exit-translate-x: initial;\n --tw-exit-translate-y: initial;\n}\n.data-\\[state\\=closed\\]\\:fade-out-0[data-state=closed] {\n --tw-exit-opacity: 0;\n}\n.data-\\[state\\=open\\]\\:fade-in-0[data-state=open] {\n --tw-enter-opacity: 0;\n}\n.data-\\[state\\=closed\\]\\:zoom-out-95[data-state=closed] {\n --tw-exit-scale: .95;\n}\n.data-\\[state\\=open\\]\\:zoom-in-95[data-state=open] {\n --tw-enter-scale: .95;\n}\n.data-\\[side\\=bottom\\]\\:slide-in-from-top-2[data-side=bottom] {\n --tw-enter-translate-y: -0.5rem;\n}\n.data-\\[side\\=left\\]\\:slide-in-from-right-2[data-side=left] {\n --tw-enter-translate-x: 0.5rem;\n}\n.data-\\[side\\=right\\]\\:slide-in-from-left-2[data-side=right] {\n --tw-enter-translate-x: -0.5rem;\n}\n.data-\\[side\\=top\\]\\:slide-in-from-bottom-2[data-side=top] {\n --tw-enter-translate-y: 0.5rem;\n}\n.data-\\[state\\=closed\\]\\:slide-out-to-left-1\\/2[data-state=closed] {\n --tw-exit-translate-x: -50%;\n}\n.data-\\[state\\=closed\\]\\:slide-out-to-top-\\[48\\%\\][data-state=closed] {\n --tw-exit-translate-y: -48%;\n}\n.data-\\[state\\=open\\]\\:slide-in-from-left-1\\/2[data-state=open] {\n --tw-enter-translate-x: -50%;\n}\n.data-\\[state\\=open\\]\\:slide-in-from-top-\\[48\\%\\][data-state=open] {\n --tw-enter-translate-y: -48%;\n}\n:is([data-mode=\"dark\"] .dark\\:border-white) {\n --tw-border-opacity: 1;\n border-color: rgb(255 255 255 / var(--tw-border-opacity));\n}\n@media (min-width: 640px) {\n\n .sm\\:mt-0 {\n margin-top: 0px;\n }\n\n .sm\\:block {\n display: block;\n }\n\n .sm\\:flex-row {\n flex-direction: row;\n }\n\n .sm\\:justify-end {\n justify-content: flex-end;\n }\n\n .sm\\:space-x-2 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-x-reverse: 0;\n margin-right: calc(0.5rem * var(--tw-space-x-reverse));\n margin-left: calc(0.5rem * calc(1 - var(--tw-space-x-reverse)));\n }\n\n .sm\\:space-x-4 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-x-reverse: 0;\n margin-right: calc(1rem * var(--tw-space-x-reverse));\n margin-left: calc(1rem * calc(1 - var(--tw-space-x-reverse)));\n }\n\n .sm\\:space-y-0 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(0px * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(0px * var(--tw-space-y-reverse));\n }\n\n .sm\\:rounded-lg {\n border-radius: var(--radius);\n }\n\n .sm\\:p-0 {\n padding: 0px;\n }\n\n .sm\\:text-left {\n text-align: left;\n }\n}\n@media (min-width: 768px) {\n\n .md\\:relative {\n position: relative;\n }\n\n .md\\:flex {\n display: flex;\n }\n\n .md\\:hidden {\n display: none;\n }\n\n .md\\:w-\\[300px\\] {\n width: 300px;\n }\n\n .md\\:w-full {\n width: 100%;\n }\n\n .md\\:px-4 {\n padding-left: 1rem;\n padding-right: 1rem;\n }\n\n .md\\:pl-0 {\n padding-left: 0px;\n }\n}\n.\\[\\&\\:has\\(\\[aria-selected\\]\\)\\]\\:bg-accent:has([aria-selected]) {\n background-color: hsl(var(--accent));\n}\n.first\\:\\[\\&\\:has\\(\\[aria-selected\\]\\)\\]\\:rounded-l-md:has([aria-selected]):first-child {\n border-top-left-radius: calc(var(--radius) - 2px);\n border-bottom-left-radius: calc(var(--radius) - 2px);\n}\n.last\\:\\[\\&\\:has\\(\\[aria-selected\\]\\)\\]\\:rounded-r-md:has([aria-selected]):last-child {\n border-top-right-radius: calc(var(--radius) - 2px);\n border-bottom-right-radius: calc(var(--radius) - 2px);\n}\n.\\[\\&\\[data-state\\=open\\]\\>svg\\]\\:rotate-180[data-state=open]>svg {\n --tw-rotate: 180deg;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.\\[\\&_\\[cmdk-group-heading\\]\\]\\:px-2 [cmdk-group-heading] {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n}\n.\\[\\&_\\[cmdk-group-heading\\]\\]\\:py-1\\.5 [cmdk-group-heading] {\n padding-top: 0.375rem;\n padding-bottom: 0.375rem;\n}\n.\\[\\&_\\[cmdk-group-heading\\]\\]\\:text-xs [cmdk-group-heading] {\n font-size: 0.75rem;\n line-height: 1rem;\n}\n.\\[\\&_\\[cmdk-group-heading\\]\\]\\:font-medium [cmdk-group-heading] {\n font-weight: 500;\n}\n.\\[\\&_\\[cmdk-group-heading\\]\\]\\:text-muted-foreground [cmdk-group-heading] {\n color: hsl(var(--muted-foreground));\n}\n.\\[\\&_\\[cmdk-group\\]\\:not\\(\\[hidden\\]\\)_\\~\\[cmdk-group\\]\\]\\:pt-0 [cmdk-group]:not([hidden]) ~[cmdk-group] {\n padding-top: 0px;\n}\n.\\[\\&_\\[cmdk-group\\]\\]\\:px-2 [cmdk-group] {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n}\n.\\[\\&_\\[cmdk-input-wrapper\\]_svg\\]\\:h-5 [cmdk-input-wrapper] svg {\n height: 1.25rem;\n}\n.\\[\\&_\\[cmdk-input-wrapper\\]_svg\\]\\:w-5 [cmdk-input-wrapper] svg {\n width: 1.25rem;\n}\n.\\[\\&_\\[cmdk-input\\]\\]\\:h-12 [cmdk-input] {\n height: 3rem;\n}\n.\\[\\&_\\[cmdk-item\\]\\]\\:px-2 [cmdk-item] {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n}\n.\\[\\&_\\[cmdk-item\\]\\]\\:py-3 [cmdk-item] {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n}\n.\\[\\&_\\[cmdk-item\\]_svg\\]\\:h-5 [cmdk-item] svg {\n height: 1.25rem;\n}\n.\\[\\&_\\[cmdk-item\\]_svg\\]\\:w-5 [cmdk-item] svg {\n width: 1.25rem;\n}\n";
|
|
73797
74121
|
function Style() {
|
|
73798
74122
|
return /* @__PURE__ */ jsx("style", { children: styleCss });
|
|
73799
74123
|
}
|