@valbuild/ui 0.44.0 → 0.46.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/valbuild-ui.cjs.js +880 -489
- package/dist/valbuild-ui.esm.js +880 -489
- package/package.json +3 -3
- package/server/.tmp/assets/index-gPuJOraZ.css +1 -0
- package/server/.tmp/assets/index-k8iMLNYr.js +201 -0
- package/server/.tmp/index.html +2 -2
- package/server/dist/valbuild-ui-main.cjs.js +15472 -15090
- package/server/dist/valbuild-ui-main.esm.js +15472 -15090
- 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-ktSR2XYf.js +0 -201
- package/server/.tmp/assets/index-q5ozHWoP.css +0 -1
package/dist/valbuild-ui.cjs.js
CHANGED
|
@@ -50849,7 +50849,7 @@ var Schema = /* @__PURE__ */ function() {
|
|
|
50849
50849
|
return Schema2;
|
|
50850
50850
|
}();
|
|
50851
50851
|
var GetSchema = Symbol("GetSchema");
|
|
50852
|
-
var Path = Symbol("Path");
|
|
50852
|
+
var Path$1 = Symbol("Path");
|
|
50853
50853
|
var GetSource = Symbol("GetSource");
|
|
50854
50854
|
function getSchema(selector) {
|
|
50855
50855
|
return selector[GetSchema];
|
|
@@ -50880,82 +50880,7 @@ var Sym = /* @__PURE__ */ function(_Expr2) {
|
|
|
50880
50880
|
new Sym("()");
|
|
50881
50881
|
var VAL_EXTENSION = "_type";
|
|
50882
50882
|
var FILE_REF_PROP = "_ref";
|
|
50883
|
-
|
|
50884
|
-
_inherits(ImageSchema2, _Schema);
|
|
50885
|
-
var _super = _createSuper(ImageSchema2);
|
|
50886
|
-
function ImageSchema2(options) {
|
|
50887
|
-
var _this;
|
|
50888
|
-
var opt = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;
|
|
50889
|
-
_classCallCheck(this, ImageSchema2);
|
|
50890
|
-
_this = _super.call(this);
|
|
50891
|
-
_this.options = options;
|
|
50892
|
-
_this.opt = opt;
|
|
50893
|
-
return _this;
|
|
50894
|
-
}
|
|
50895
|
-
_createClass(ImageSchema2, [{
|
|
50896
|
-
key: "validate",
|
|
50897
|
-
value: function validate(path, src) {
|
|
50898
|
-
if (this.opt && (src === null || src === void 0)) {
|
|
50899
|
-
return false;
|
|
50900
|
-
}
|
|
50901
|
-
if (src === null || src === void 0) {
|
|
50902
|
-
return _defineProperty$5({}, path, [{
|
|
50903
|
-
message: "Non-optional image was null or undefined.",
|
|
50904
|
-
value: src
|
|
50905
|
-
}]);
|
|
50906
|
-
}
|
|
50907
|
-
if (typeof src[FILE_REF_PROP] !== "string") {
|
|
50908
|
-
return _defineProperty$5({}, path, [{
|
|
50909
|
-
message: "Image did not have a file reference string. Got: ".concat(_typeof(src[FILE_REF_PROP])),
|
|
50910
|
-
value: src
|
|
50911
|
-
}]);
|
|
50912
|
-
}
|
|
50913
|
-
if (src[VAL_EXTENSION] !== "file") {
|
|
50914
|
-
return _defineProperty$5({}, path, [{
|
|
50915
|
-
message: "Image did not have the valid file extension type. Got: ".concat(src[VAL_EXTENSION]),
|
|
50916
|
-
value: src
|
|
50917
|
-
}]);
|
|
50918
|
-
}
|
|
50919
|
-
if (src.metadata) {
|
|
50920
|
-
return _defineProperty$5({}, path, [{
|
|
50921
|
-
message: "Found metadata, but it could not be validated. Image metadata must be an object with the required props: width (positive number), height (positive number) and sha256 (string of length 64 of the base16 hash).",
|
|
50922
|
-
// These validation errors will have to be picked up by logic outside of this package and revalidated. Reasons: 1) we have to read files to verify the metadata, which is handled differently in different runtimes (Browser, QuickJS, Node.js); 2) we want to keep this package dependency free.
|
|
50923
|
-
value: src,
|
|
50924
|
-
fixes: ["image:replace-metadata"]
|
|
50925
|
-
}]);
|
|
50926
|
-
}
|
|
50927
|
-
return _defineProperty$5({}, path, [{
|
|
50928
|
-
message: "Could not validate Image metadata.",
|
|
50929
|
-
value: src,
|
|
50930
|
-
fixes: ["image:add-metadata"]
|
|
50931
|
-
}]);
|
|
50932
|
-
}
|
|
50933
|
-
}, {
|
|
50934
|
-
key: "assert",
|
|
50935
|
-
value: function assert(src) {
|
|
50936
|
-
if (this.opt && (src === null || src === void 0)) {
|
|
50937
|
-
return true;
|
|
50938
|
-
}
|
|
50939
|
-
return (src === null || src === void 0 ? void 0 : src[FILE_REF_PROP]) === "image" && (src === null || src === void 0 ? void 0 : src[VAL_EXTENSION]) === "file";
|
|
50940
|
-
}
|
|
50941
|
-
}, {
|
|
50942
|
-
key: "optional",
|
|
50943
|
-
value: function optional() {
|
|
50944
|
-
return new ImageSchema2(this.options, true);
|
|
50945
|
-
}
|
|
50946
|
-
}, {
|
|
50947
|
-
key: "serialize",
|
|
50948
|
-
value: function serialize() {
|
|
50949
|
-
return {
|
|
50950
|
-
type: "image",
|
|
50951
|
-
options: this.options,
|
|
50952
|
-
opt: this.opt
|
|
50953
|
-
};
|
|
50954
|
-
}
|
|
50955
|
-
}]);
|
|
50956
|
-
return ImageSchema2;
|
|
50957
|
-
}(Schema);
|
|
50958
|
-
var convertFileSource = function convertFileSource2(src) {
|
|
50883
|
+
function convertFileSource(src) {
|
|
50959
50884
|
var _src$metadata2;
|
|
50960
50885
|
if (!src[FILE_REF_PROP].startsWith("/public")) {
|
|
50961
50886
|
var _src$metadata;
|
|
@@ -50968,15 +50893,15 @@ var convertFileSource = function convertFileSource2(src) {
|
|
|
50968
50893
|
url: src[FILE_REF_PROP].slice("/public".length) + "?sha256=".concat((_src$metadata2 = src.metadata) === null || _src$metadata2 === void 0 ? void 0 : _src$metadata2.sha256),
|
|
50969
50894
|
metadata: src.metadata
|
|
50970
50895
|
};
|
|
50971
|
-
}
|
|
50896
|
+
}
|
|
50972
50897
|
function isSerializedVal(val) {
|
|
50973
50898
|
return _typeof(val) === "object" && val !== null && val !== void 0 && ("val" in val || "valPath" in val);
|
|
50974
50899
|
}
|
|
50975
50900
|
function isVal(val) {
|
|
50976
|
-
return _typeof(val) === "object" && val !== null && val !== void 0 && Path in val && "val" in val;
|
|
50901
|
+
return _typeof(val) === "object" && val !== null && val !== void 0 && Path$1 in val && "val" in val;
|
|
50977
50902
|
}
|
|
50978
50903
|
function getValPath(valOrSelector) {
|
|
50979
|
-
return valOrSelector[Path];
|
|
50904
|
+
return valOrSelector[Path$1];
|
|
50980
50905
|
}
|
|
50981
50906
|
function hasOwn$1(obj, prop) {
|
|
50982
50907
|
return Object.prototype.hasOwnProperty.call(obj, prop);
|
|
@@ -50988,7 +50913,7 @@ function _andThen(f, source, path) {
|
|
|
50988
50913
|
return newSelectorProxy(source, path);
|
|
50989
50914
|
}
|
|
50990
50915
|
function isSelector(source) {
|
|
50991
|
-
return _typeof(source) === "object" && source !== null && (GetSource in source || Path in source);
|
|
50916
|
+
return _typeof(source) === "object" && source !== null && (GetSource in source || Path$1 in source);
|
|
50992
50917
|
}
|
|
50993
50918
|
function newSelectorProxy(source, path, moduleSchema) {
|
|
50994
50919
|
if (_typeof(source) === "object") {
|
|
@@ -51017,7 +50942,7 @@ function newSelectorProxy(source, path, moduleSchema) {
|
|
|
51017
50942
|
if (prop === GetSource) {
|
|
51018
50943
|
return true;
|
|
51019
50944
|
}
|
|
51020
|
-
if (prop === Path) {
|
|
50945
|
+
if (prop === Path$1) {
|
|
51021
50946
|
return true;
|
|
51022
50947
|
}
|
|
51023
50948
|
if (prop === "andThen") {
|
|
@@ -51032,7 +50957,7 @@ function newSelectorProxy(source, path, moduleSchema) {
|
|
|
51032
50957
|
if (prop === GetSource) {
|
|
51033
50958
|
return source;
|
|
51034
50959
|
}
|
|
51035
|
-
if (prop === Path) {
|
|
50960
|
+
if (prop === Path$1) {
|
|
51036
50961
|
return path;
|
|
51037
50962
|
}
|
|
51038
50963
|
if (prop === GetSchema) {
|
|
@@ -51099,7 +51024,7 @@ function newSelectorProxy(source, path, moduleSchema) {
|
|
|
51099
51024
|
andThen: function andThen(f) {
|
|
51100
51025
|
return _andThen(f, source === void 0 ? null : source, path);
|
|
51101
51026
|
}
|
|
51102
|
-
}, GetSource, source === void 0 ? null : source), Path, path), GetSchema, moduleSchema);
|
|
51027
|
+
}, GetSource, source === void 0 ? null : source), Path$1, path), GetSchema, moduleSchema);
|
|
51103
51028
|
}
|
|
51104
51029
|
}
|
|
51105
51030
|
function createValPathOfItem$1(arrayPath, prop) {
|
|
@@ -51109,7 +51034,7 @@ function createValPathOfItem$1(arrayPath, prop) {
|
|
|
51109
51034
|
return arrayPath && "".concat(arrayPath, ".").concat(JSON.stringify(prop));
|
|
51110
51035
|
}
|
|
51111
51036
|
function unValify(valueOrSelector) {
|
|
51112
|
-
if (_typeof(valueOrSelector) === "object" && (GetSource in valueOrSelector || Path in valueOrSelector)) {
|
|
51037
|
+
if (_typeof(valueOrSelector) === "object" && (GetSource in valueOrSelector || Path$1 in valueOrSelector)) {
|
|
51113
51038
|
var selectorValue = valueOrSelector[GetSource];
|
|
51114
51039
|
return selectorValue;
|
|
51115
51040
|
}
|
|
@@ -51569,6 +51494,81 @@ var RichTextSchema = /* @__PURE__ */ function(_Schema) {
|
|
|
51569
51494
|
}]);
|
|
51570
51495
|
return RichTextSchema2;
|
|
51571
51496
|
}(Schema);
|
|
51497
|
+
var ImageSchema = /* @__PURE__ */ function(_Schema) {
|
|
51498
|
+
_inherits(ImageSchema2, _Schema);
|
|
51499
|
+
var _super = _createSuper(ImageSchema2);
|
|
51500
|
+
function ImageSchema2(options) {
|
|
51501
|
+
var _this;
|
|
51502
|
+
var opt = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;
|
|
51503
|
+
_classCallCheck(this, ImageSchema2);
|
|
51504
|
+
_this = _super.call(this);
|
|
51505
|
+
_this.options = options;
|
|
51506
|
+
_this.opt = opt;
|
|
51507
|
+
return _this;
|
|
51508
|
+
}
|
|
51509
|
+
_createClass(ImageSchema2, [{
|
|
51510
|
+
key: "validate",
|
|
51511
|
+
value: function validate(path, src) {
|
|
51512
|
+
if (this.opt && (src === null || src === void 0)) {
|
|
51513
|
+
return false;
|
|
51514
|
+
}
|
|
51515
|
+
if (src === null || src === void 0) {
|
|
51516
|
+
return _defineProperty$5({}, path, [{
|
|
51517
|
+
message: "Non-optional image was null or undefined.",
|
|
51518
|
+
value: src
|
|
51519
|
+
}]);
|
|
51520
|
+
}
|
|
51521
|
+
if (typeof src[FILE_REF_PROP] !== "string") {
|
|
51522
|
+
return _defineProperty$5({}, path, [{
|
|
51523
|
+
message: "Image did not have a file reference string. Got: ".concat(_typeof(src[FILE_REF_PROP])),
|
|
51524
|
+
value: src
|
|
51525
|
+
}]);
|
|
51526
|
+
}
|
|
51527
|
+
if (src[VAL_EXTENSION] !== "file") {
|
|
51528
|
+
return _defineProperty$5({}, path, [{
|
|
51529
|
+
message: "Image did not have the valid file extension type. Got: ".concat(src[VAL_EXTENSION]),
|
|
51530
|
+
value: src
|
|
51531
|
+
}]);
|
|
51532
|
+
}
|
|
51533
|
+
if (src.metadata) {
|
|
51534
|
+
return _defineProperty$5({}, path, [{
|
|
51535
|
+
message: "Found metadata, but it could not be validated. Image metadata must be an object with the required props: width (positive number), height (positive number) and sha256 (string of length 64 of the base16 hash).",
|
|
51536
|
+
// These validation errors will have to be picked up by logic outside of this package and revalidated. Reasons: 1) we have to read files to verify the metadata, which is handled differently in different runtimes (Browser, QuickJS, Node.js); 2) we want to keep this package dependency free.
|
|
51537
|
+
value: src,
|
|
51538
|
+
fixes: ["image:replace-metadata"]
|
|
51539
|
+
}]);
|
|
51540
|
+
}
|
|
51541
|
+
return _defineProperty$5({}, path, [{
|
|
51542
|
+
message: "Could not validate Image metadata.",
|
|
51543
|
+
value: src,
|
|
51544
|
+
fixes: ["image:add-metadata"]
|
|
51545
|
+
}]);
|
|
51546
|
+
}
|
|
51547
|
+
}, {
|
|
51548
|
+
key: "assert",
|
|
51549
|
+
value: function assert(src) {
|
|
51550
|
+
if (this.opt && (src === null || src === void 0)) {
|
|
51551
|
+
return true;
|
|
51552
|
+
}
|
|
51553
|
+
return (src === null || src === void 0 ? void 0 : src[FILE_REF_PROP]) === "image" && (src === null || src === void 0 ? void 0 : src[VAL_EXTENSION]) === "file";
|
|
51554
|
+
}
|
|
51555
|
+
}, {
|
|
51556
|
+
key: "optional",
|
|
51557
|
+
value: function optional() {
|
|
51558
|
+
return new ImageSchema2(this.options, true);
|
|
51559
|
+
}
|
|
51560
|
+
}, {
|
|
51561
|
+
key: "serialize",
|
|
51562
|
+
value: function serialize() {
|
|
51563
|
+
return {
|
|
51564
|
+
type: "image",
|
|
51565
|
+
options: this.options,
|
|
51566
|
+
opt: this.opt
|
|
51567
|
+
};
|
|
51568
|
+
}
|
|
51569
|
+
}]);
|
|
51570
|
+
return ImageSchema2;
|
|
51571
|
+
}(Schema);
|
|
51572
51572
|
var RecordSchema = /* @__PURE__ */ function(_Schema) {
|
|
51573
51573
|
_inherits(RecordSchema2, _Schema);
|
|
51574
51574
|
var _super = _createSuper(RecordSchema2);
|
|
@@ -51845,6 +51845,96 @@ function parsePath$1(input) {
|
|
|
51845
51845
|
}
|
|
51846
51846
|
return result2;
|
|
51847
51847
|
}
|
|
51848
|
+
var StringSchema = /* @__PURE__ */ function(_Schema) {
|
|
51849
|
+
_inherits(StringSchema2, _Schema);
|
|
51850
|
+
var _super = _createSuper(StringSchema2);
|
|
51851
|
+
function StringSchema2(options) {
|
|
51852
|
+
var _this;
|
|
51853
|
+
var opt = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;
|
|
51854
|
+
var isRaw = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;
|
|
51855
|
+
_classCallCheck(this, StringSchema2);
|
|
51856
|
+
_this = _super.call(this);
|
|
51857
|
+
_this.options = options;
|
|
51858
|
+
_this.opt = opt;
|
|
51859
|
+
_this.isRaw = isRaw;
|
|
51860
|
+
return _this;
|
|
51861
|
+
}
|
|
51862
|
+
_createClass(StringSchema2, [{
|
|
51863
|
+
key: "validate",
|
|
51864
|
+
value: function validate(path, src) {
|
|
51865
|
+
var _this$options, _this$options2, _this$options3;
|
|
51866
|
+
if (this.opt && (src === null || src === void 0)) {
|
|
51867
|
+
return false;
|
|
51868
|
+
}
|
|
51869
|
+
if (typeof src !== "string") {
|
|
51870
|
+
return _defineProperty$5({}, path, [{
|
|
51871
|
+
message: "Expected 'string', got '".concat(_typeof(src), "'"),
|
|
51872
|
+
value: src
|
|
51873
|
+
}]);
|
|
51874
|
+
}
|
|
51875
|
+
var errors = [];
|
|
51876
|
+
if ((_this$options = this.options) !== null && _this$options !== void 0 && _this$options.maxLength && src.length > this.options.maxLength) {
|
|
51877
|
+
errors.push({
|
|
51878
|
+
message: "Expected string to be at most ".concat(this.options.maxLength, " characters long, got ").concat(src.length),
|
|
51879
|
+
value: src
|
|
51880
|
+
});
|
|
51881
|
+
}
|
|
51882
|
+
if ((_this$options2 = this.options) !== null && _this$options2 !== void 0 && _this$options2.minLength && src.length < this.options.minLength) {
|
|
51883
|
+
errors.push({
|
|
51884
|
+
message: "Expected string to be at least ".concat(this.options.minLength, " characters long, got ").concat(src.length),
|
|
51885
|
+
value: src
|
|
51886
|
+
});
|
|
51887
|
+
}
|
|
51888
|
+
if ((_this$options3 = this.options) !== null && _this$options3 !== void 0 && _this$options3.regexp && !this.options.regexp.test(src)) {
|
|
51889
|
+
errors.push({
|
|
51890
|
+
message: "Expected string to match reg exp: ".concat(this.options.regexp.toString(), ", got '").concat(src, "'"),
|
|
51891
|
+
value: src
|
|
51892
|
+
});
|
|
51893
|
+
}
|
|
51894
|
+
if (errors.length > 0) {
|
|
51895
|
+
return _defineProperty$5({}, path, errors);
|
|
51896
|
+
}
|
|
51897
|
+
return false;
|
|
51898
|
+
}
|
|
51899
|
+
}, {
|
|
51900
|
+
key: "assert",
|
|
51901
|
+
value: function assert(src) {
|
|
51902
|
+
if (this.opt && (src === null || src === void 0)) {
|
|
51903
|
+
return true;
|
|
51904
|
+
}
|
|
51905
|
+
return typeof src === "string";
|
|
51906
|
+
}
|
|
51907
|
+
}, {
|
|
51908
|
+
key: "optional",
|
|
51909
|
+
value: function optional() {
|
|
51910
|
+
return new StringSchema2(this.options, true, this.isRaw);
|
|
51911
|
+
}
|
|
51912
|
+
}, {
|
|
51913
|
+
key: "raw",
|
|
51914
|
+
value: function raw() {
|
|
51915
|
+
return new StringSchema2(this.options, this.opt, true);
|
|
51916
|
+
}
|
|
51917
|
+
}, {
|
|
51918
|
+
key: "serialize",
|
|
51919
|
+
value: function serialize() {
|
|
51920
|
+
var _this$options4, _this$options5, _this$options6;
|
|
51921
|
+
return {
|
|
51922
|
+
type: "string",
|
|
51923
|
+
options: {
|
|
51924
|
+
maxLength: (_this$options4 = this.options) === null || _this$options4 === void 0 ? void 0 : _this$options4.maxLength,
|
|
51925
|
+
minLength: (_this$options5 = this.options) === null || _this$options5 === void 0 ? void 0 : _this$options5.minLength,
|
|
51926
|
+
regexp: ((_this$options6 = this.options) === null || _this$options6 === void 0 ? void 0 : _this$options6.regexp) && {
|
|
51927
|
+
source: this.options.regexp.source,
|
|
51928
|
+
flags: this.options.regexp.flags
|
|
51929
|
+
}
|
|
51930
|
+
},
|
|
51931
|
+
opt: this.opt,
|
|
51932
|
+
raw: this.isRaw
|
|
51933
|
+
};
|
|
51934
|
+
}
|
|
51935
|
+
}]);
|
|
51936
|
+
return StringSchema2;
|
|
51937
|
+
}(Schema);
|
|
51848
51938
|
function getVal(selector) {
|
|
51849
51939
|
return newValProxy(serializedValOfSelectorSource(selector));
|
|
51850
51940
|
}
|
|
@@ -51867,7 +51957,7 @@ function serializedValOfSelectorSource(selector) {
|
|
|
51867
51957
|
var isObject = isObjectOrObjectSelector(child);
|
|
51868
51958
|
if (isArray) {
|
|
51869
51959
|
var array = GetSource in child ? child[GetSource] : child;
|
|
51870
|
-
var valPath = Path in child ? child[Path] : void 0;
|
|
51960
|
+
var valPath = Path$1 in child ? child[Path$1] : void 0;
|
|
51871
51961
|
return {
|
|
51872
51962
|
val: array.map(function(item, i) {
|
|
51873
51963
|
return rec(isSelector(item) ? item : newSelectorProxy(item, createValPathOfItem$1(valPath, i)));
|
|
@@ -51876,7 +51966,7 @@ function serializedValOfSelectorSource(selector) {
|
|
|
51876
51966
|
};
|
|
51877
51967
|
} else if (isObject) {
|
|
51878
51968
|
var obj = GetSource in child ? child[GetSource] : child;
|
|
51879
|
-
var _valPath = Path in child ? child[Path] : void 0;
|
|
51969
|
+
var _valPath = Path$1 in child ? child[Path$1] : void 0;
|
|
51880
51970
|
return {
|
|
51881
51971
|
val: obj !== null && Object.fromEntries(Object.entries(obj).map(function(_ref) {
|
|
51882
51972
|
var _ref2 = _slicedToArray$1(_ref, 2), key = _ref2[0], value = _ref2[1];
|
|
@@ -51887,7 +51977,7 @@ function serializedValOfSelectorSource(selector) {
|
|
|
51887
51977
|
} else if (isSelector(child)) {
|
|
51888
51978
|
return {
|
|
51889
51979
|
val: rec(child[GetSource]),
|
|
51890
|
-
valPath: child[Path]
|
|
51980
|
+
valPath: child[Path$1]
|
|
51891
51981
|
};
|
|
51892
51982
|
} else {
|
|
51893
51983
|
return child;
|
|
@@ -51929,13 +52019,13 @@ function newValProxy(val) {
|
|
|
51929
52019
|
if (prop === "val") {
|
|
51930
52020
|
return true;
|
|
51931
52021
|
}
|
|
51932
|
-
if (prop === Path) {
|
|
52022
|
+
if (prop === Path$1) {
|
|
51933
52023
|
return true;
|
|
51934
52024
|
}
|
|
51935
52025
|
return hasOwn(target, prop);
|
|
51936
52026
|
},
|
|
51937
52027
|
get: function get(target, prop) {
|
|
51938
|
-
if (prop === Path) {
|
|
52028
|
+
if (prop === Path$1) {
|
|
51939
52029
|
return val.valPath;
|
|
51940
52030
|
}
|
|
51941
52031
|
if (prop === "val") {
|
|
@@ -51956,7 +52046,7 @@ function newValProxy(val) {
|
|
|
51956
52046
|
});
|
|
51957
52047
|
}
|
|
51958
52048
|
default:
|
|
51959
|
-
return _defineProperty$5(_defineProperty$5({}, Path, val.valPath), "val", val.val);
|
|
52049
|
+
return _defineProperty$5(_defineProperty$5({}, Path$1, val.valPath), "val", val.val);
|
|
51960
52050
|
}
|
|
51961
52051
|
}
|
|
51962
52052
|
function hasOwn(obj, prop) {
|
|
@@ -54581,14 +54671,16 @@ function fromLexicalImageNode(node, files) {
|
|
|
54581
54671
|
return _defineProperty$4(_defineProperty$4(_defineProperty$4({}, VAL_EXTENSION, "file"), FILE_REF_PROP, filePath), "metadata", {
|
|
54582
54672
|
width: node.width || 0,
|
|
54583
54673
|
height: node.height || 0,
|
|
54584
|
-
sha256: sha256 || ""
|
|
54674
|
+
sha256: sha256 || "",
|
|
54675
|
+
mimeType
|
|
54585
54676
|
});
|
|
54586
54677
|
} else {
|
|
54587
54678
|
var _sha = getParam("sha256", node.src);
|
|
54588
54679
|
return _defineProperty$4(_defineProperty$4(_defineProperty$4({}, VAL_EXTENSION, "file"), FILE_REF_PROP, "/public".concat(node.src.split("?")[0])), "metadata", {
|
|
54589
54680
|
width: node.width || 0,
|
|
54590
54681
|
height: node.height || 0,
|
|
54591
|
-
sha256: _sha || ""
|
|
54682
|
+
sha256: _sha || "",
|
|
54683
|
+
mimeType: node.mimeType || ""
|
|
54592
54684
|
});
|
|
54593
54685
|
}
|
|
54594
54686
|
}
|
|
@@ -54691,7 +54783,8 @@ function toLexicalImageNode(node) {
|
|
|
54691
54783
|
type: "image",
|
|
54692
54784
|
src: url,
|
|
54693
54785
|
width: node.width,
|
|
54694
|
-
height: node.height
|
|
54786
|
+
height: node.height,
|
|
54787
|
+
mimeType: node.mimeType
|
|
54695
54788
|
// TODO: altText
|
|
54696
54789
|
});
|
|
54697
54790
|
}
|
|
@@ -54886,12 +54979,13 @@ function parseTokens(tokens, sourceNodes, cursor) {
|
|
|
54886
54979
|
children: subChildren
|
|
54887
54980
|
});
|
|
54888
54981
|
} else if (sourceNode._type === "file") {
|
|
54889
|
-
var _sourceNode$metadata, _sourceNode$metadata2;
|
|
54982
|
+
var _sourceNode$metadata, _sourceNode$metadata2, _sourceNode$metadata3;
|
|
54890
54983
|
children.push({
|
|
54891
54984
|
tag: "img",
|
|
54892
54985
|
src: Internal.convertFileSource(sourceNode).url,
|
|
54893
54986
|
width: (_sourceNode$metadata = sourceNode.metadata) === null || _sourceNode$metadata === void 0 ? void 0 : _sourceNode$metadata.width,
|
|
54894
54987
|
height: (_sourceNode$metadata2 = sourceNode.metadata) === null || _sourceNode$metadata2 === void 0 ? void 0 : _sourceNode$metadata2.height,
|
|
54988
|
+
mimeType: (_sourceNode$metadata3 = sourceNode.metadata) === null || _sourceNode$metadata3 === void 0 ? void 0 : _sourceNode$metadata3.mimeType,
|
|
54895
54989
|
children: []
|
|
54896
54990
|
});
|
|
54897
54991
|
}
|
|
@@ -56377,7 +56471,7 @@ const Toolbar = ({
|
|
|
56377
56471
|
}
|
|
56378
56472
|
});
|
|
56379
56473
|
}, [activeEditor]);
|
|
56380
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "sticky top-0 flex flex-col px-4 py-2 border-
|
|
56474
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "sticky top-0 flex flex-col px-4 py-2 border rounded-md rounded-b-none border-input bg-background", children: [
|
|
56381
56475
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-row gap-1", children: [
|
|
56382
56476
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
56383
56477
|
Dropdown$1,
|
|
@@ -56469,7 +56563,7 @@ const Toolbar = ({
|
|
|
56469
56563
|
{
|
|
56470
56564
|
type: "text",
|
|
56471
56565
|
placeholder: "Enter URL",
|
|
56472
|
-
className: "w-1/3 px-2 text-primary",
|
|
56566
|
+
className: "w-1/3 px-2 bg-background text-primary",
|
|
56473
56567
|
value: url,
|
|
56474
56568
|
onChange: (ev) => {
|
|
56475
56569
|
ev.preventDefault();
|
|
@@ -56506,12 +56600,10 @@ const Toolbar$1 = Toolbar;
|
|
|
56506
56600
|
function onError(error) {
|
|
56507
56601
|
console.error(error);
|
|
56508
56602
|
}
|
|
56509
|
-
const TOOLBAR_HEIGHT = 28;
|
|
56510
56603
|
const RichTextEditor = ({
|
|
56511
56604
|
richtext,
|
|
56512
56605
|
onEditor
|
|
56513
56606
|
}) => {
|
|
56514
|
-
const { windowSize } = useValOverlayContext();
|
|
56515
56607
|
const prePopulatedState = (editor) => {
|
|
56516
56608
|
editor.setEditorState(
|
|
56517
56609
|
editor.parseEditorState({
|
|
@@ -56554,17 +56646,8 @@ const RichTextEditor = ({
|
|
|
56554
56646
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
56555
56647
|
LexicalRichTextPlugin_1.RichTextPlugin,
|
|
56556
56648
|
{
|
|
56557
|
-
contentEditable: /* @__PURE__ */ jsxRuntime.jsx(
|
|
56558
|
-
|
|
56559
|
-
{
|
|
56560
|
-
className: "font-sans border-b text-primary border-highlight",
|
|
56561
|
-
style: {
|
|
56562
|
-
minHeight: (windowSize == null ? void 0 : windowSize.innerHeight) ? (windowSize == null ? void 0 : windowSize.innerHeight) - TOOLBAR_HEIGHT : void 0
|
|
56563
|
-
},
|
|
56564
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(LexicalContentEditable, { className: "p-4 outline-none bg-fill" })
|
|
56565
|
-
}
|
|
56566
|
-
),
|
|
56567
|
-
placeholder: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "", children: "Enter some text..." }),
|
|
56649
|
+
contentEditable: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-3 py-2 text-sm border-b rounded-md rounded-t-none border-x border-input bg-background ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50", children: /* @__PURE__ */ jsxRuntime.jsx(LexicalContentEditable, { className: "p-4 outline-none bg-fill" }) }),
|
|
56650
|
+
placeholder: /* @__PURE__ */ jsxRuntime.jsx("p", { className: "" }),
|
|
56568
56651
|
ErrorBoundary: LexicalErrorBoundary$1
|
|
56569
56652
|
}
|
|
56570
56653
|
),
|
|
@@ -56629,17 +56712,22 @@ const LogIn = createLucideIcon("LogIn", [
|
|
|
56629
56712
|
["polyline", { points: "10 17 15 12 10 7", key: "1ail0h" }],
|
|
56630
56713
|
["line", { x1: "15", x2: "3", y1: "12", y2: "12", key: "v6grx8" }]
|
|
56631
56714
|
]);
|
|
56632
|
-
const
|
|
56633
|
-
["
|
|
56634
|
-
["
|
|
56635
|
-
["
|
|
56636
|
-
["
|
|
56715
|
+
const Maximize2 = createLucideIcon("Maximize2", [
|
|
56716
|
+
["polyline", { points: "15 3 21 3 21 9", key: "mznyad" }],
|
|
56717
|
+
["polyline", { points: "9 21 3 21 3 15", key: "1avn1i" }],
|
|
56718
|
+
["line", { x1: "21", x2: "14", y1: "3", y2: "10", key: "ota7mn" }],
|
|
56719
|
+
["line", { x1: "3", x2: "10", y1: "21", y2: "14", key: "1atl0r" }]
|
|
56637
56720
|
]);
|
|
56638
|
-
const
|
|
56639
|
-
["
|
|
56640
|
-
["
|
|
56641
|
-
["
|
|
56642
|
-
|
|
56721
|
+
const Menu = createLucideIcon("Menu", [
|
|
56722
|
+
["line", { x1: "4", x2: "20", y1: "12", y2: "12", key: "1e0a9i" }],
|
|
56723
|
+
["line", { x1: "4", x2: "20", y1: "6", y2: "6", key: "1owob3" }],
|
|
56724
|
+
["line", { x1: "4", x2: "20", y1: "18", y2: "18", key: "yk5zj1" }]
|
|
56725
|
+
]);
|
|
56726
|
+
const Minimize2 = createLucideIcon("Minimize2", [
|
|
56727
|
+
["polyline", { points: "4 14 10 14 10 20", key: "11kfnr" }],
|
|
56728
|
+
["polyline", { points: "20 10 14 10 14 4", key: "rlmsce" }],
|
|
56729
|
+
["line", { x1: "14", x2: "21", y1: "10", y2: "3", key: "o5lafz" }],
|
|
56730
|
+
["line", { x1: "3", x2: "10", y1: "21", y2: "14", key: "1atl0r" }]
|
|
56643
56731
|
]);
|
|
56644
56732
|
const Moon = createLucideIcon("Moon", [
|
|
56645
56733
|
["path", { d: "M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z", key: "a7tn18" }]
|
|
@@ -56679,20 +56767,35 @@ const PREV_URL_KEY = "valbuild:urlBeforeNavigation";
|
|
|
56679
56767
|
function ValMenu({
|
|
56680
56768
|
api,
|
|
56681
56769
|
patches,
|
|
56770
|
+
direction,
|
|
56682
56771
|
onCommit
|
|
56683
56772
|
}) {
|
|
56684
56773
|
const { theme: theme2, setTheme, editMode, setEditMode, session } = useValOverlayContext();
|
|
56685
56774
|
if (session.status === "success" && session.data.mode === "unauthorized") {
|
|
56686
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
56687
|
-
|
|
56688
|
-
|
|
56689
|
-
|
|
56775
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
56776
|
+
SingleItemMenu,
|
|
56777
|
+
{
|
|
56778
|
+
direction,
|
|
56779
|
+
href: api.getLoginUrl(window.location.href),
|
|
56780
|
+
children: [
|
|
56781
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { children: "Login" }),
|
|
56782
|
+
/* @__PURE__ */ jsxRuntime.jsx(LogIn, { size: 18 })
|
|
56783
|
+
]
|
|
56784
|
+
}
|
|
56785
|
+
);
|
|
56690
56786
|
}
|
|
56691
56787
|
if (session.status === "success" && !session.data.enabled) {
|
|
56692
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
56693
|
-
|
|
56694
|
-
|
|
56695
|
-
|
|
56788
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
56789
|
+
SingleItemMenu,
|
|
56790
|
+
{
|
|
56791
|
+
direction,
|
|
56792
|
+
href: api.getEnableUrl(window.location.href),
|
|
56793
|
+
children: [
|
|
56794
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { children: "Enable" }),
|
|
56795
|
+
/* @__PURE__ */ jsxRuntime.jsx(LogIn, { size: 18 })
|
|
56796
|
+
]
|
|
56797
|
+
}
|
|
56798
|
+
);
|
|
56696
56799
|
}
|
|
56697
56800
|
const [patchCount, setPatchCount] = React$3.useState();
|
|
56698
56801
|
React$3.useEffect(() => {
|
|
@@ -56702,9 +56805,9 @@ function ValMenu({
|
|
|
56702
56805
|
}
|
|
56703
56806
|
setPatchCount(patchCount2);
|
|
56704
56807
|
}, [patches]);
|
|
56705
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(MenuContainer, { children: [
|
|
56808
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(MenuContainer, { direction, children: [
|
|
56706
56809
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
56707
|
-
MenuButton,
|
|
56810
|
+
MenuButton$1,
|
|
56708
56811
|
{
|
|
56709
56812
|
active: editMode === "hover",
|
|
56710
56813
|
onClick: () => {
|
|
@@ -56714,7 +56817,7 @@ function ValMenu({
|
|
|
56714
56817
|
}
|
|
56715
56818
|
),
|
|
56716
56819
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
56717
|
-
MenuButton,
|
|
56820
|
+
MenuButton$1,
|
|
56718
56821
|
{
|
|
56719
56822
|
onClick: () => {
|
|
56720
56823
|
setTheme(theme2 === "dark" ? "light" : "dark");
|
|
@@ -56726,7 +56829,7 @@ function ValMenu({
|
|
|
56726
56829
|
}
|
|
56727
56830
|
),
|
|
56728
56831
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
56729
|
-
MenuButton,
|
|
56832
|
+
MenuButton$1,
|
|
56730
56833
|
{
|
|
56731
56834
|
active: editMode === "full",
|
|
56732
56835
|
onClick: () => {
|
|
@@ -56738,11 +56841,11 @@ function ValMenu({
|
|
|
56738
56841
|
window.location.href = prevUrl || "/";
|
|
56739
56842
|
}
|
|
56740
56843
|
},
|
|
56741
|
-
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-[24px] w-[24px] flex justify-center items-center", children: editMode === "full" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
56844
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-[24px] w-[24px] flex justify-center items-center", children: editMode === "full" ? /* @__PURE__ */ jsxRuntime.jsx(Minimize2, { size: 15 }) : /* @__PURE__ */ jsxRuntime.jsx(Maximize2, { size: 15 }) })
|
|
56742
56845
|
}
|
|
56743
56846
|
),
|
|
56744
56847
|
patchCount !== void 0 && session.status === "success" && session.data.mode === "proxy" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
56745
|
-
MenuButton,
|
|
56848
|
+
MenuButton$1,
|
|
56746
56849
|
{
|
|
56747
56850
|
onClick: () => {
|
|
56748
56851
|
if (patchCount > 0) {
|
|
@@ -56770,16 +56873,42 @@ function ValMenu({
|
|
|
56770
56873
|
}
|
|
56771
56874
|
function SingleItemMenu({
|
|
56772
56875
|
href,
|
|
56876
|
+
direction,
|
|
56773
56877
|
children
|
|
56774
56878
|
}) {
|
|
56775
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
56879
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
56880
|
+
"div",
|
|
56881
|
+
{
|
|
56882
|
+
className: classNames(
|
|
56883
|
+
"flex items-start justify-center w-full h-full font-sans border rounded-full gap-3 text-primary border-fill bg-gradient-to-br from-background/90 from-40% to-background backdrop-blur-lg drop-shadow-2xl",
|
|
56884
|
+
{
|
|
56885
|
+
"flex-col items-start": direction === "vertical",
|
|
56886
|
+
"flex-row items-center": direction === "horizontal"
|
|
56887
|
+
}
|
|
56888
|
+
),
|
|
56889
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("a", { className, href, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-center px-2 gap-y-2", children }) })
|
|
56890
|
+
}
|
|
56891
|
+
);
|
|
56776
56892
|
}
|
|
56777
56893
|
function MenuContainer({
|
|
56778
|
-
children
|
|
56894
|
+
children,
|
|
56895
|
+
direction
|
|
56779
56896
|
}) {
|
|
56780
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
56897
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
56898
|
+
"div",
|
|
56899
|
+
{
|
|
56900
|
+
className: classNames(
|
|
56901
|
+
"flex justify-center w-full h-full px-2 py-2 font-sans border rounded-full gap-3 text-primary border-fill bg-gradient-to-br from-background/90 from-40% to-background backdrop-blur-lg drop-shadow-2xl",
|
|
56902
|
+
{
|
|
56903
|
+
"flex-col items-start": direction === "vertical",
|
|
56904
|
+
"flex-row items-center": direction === "horizontal"
|
|
56905
|
+
}
|
|
56906
|
+
),
|
|
56907
|
+
children
|
|
56908
|
+
}
|
|
56909
|
+
);
|
|
56781
56910
|
}
|
|
56782
|
-
function MenuButton({
|
|
56911
|
+
function MenuButton$1({
|
|
56783
56912
|
active,
|
|
56784
56913
|
onClick,
|
|
56785
56914
|
children
|
|
@@ -56788,7 +56917,7 @@ function MenuButton({
|
|
|
56788
56917
|
"button",
|
|
56789
56918
|
{
|
|
56790
56919
|
className: classNames(className, {
|
|
56791
|
-
"bg-accent drop-shadow-[
|
|
56920
|
+
"bg-accent text-accent-foreground drop-shadow-[0px_0px_12px_hsl(var(--accent))]": active
|
|
56792
56921
|
}),
|
|
56793
56922
|
onClick,
|
|
56794
56923
|
children
|
|
@@ -62376,14 +62505,21 @@ const twMerge = /* @__PURE__ */ createTailwindMerge(getDefaultConfig);
|
|
|
62376
62505
|
function cn(...inputs) {
|
|
62377
62506
|
return twMerge(clsx(inputs));
|
|
62378
62507
|
}
|
|
62379
|
-
const ScrollArea = React__namespace.forwardRef(({ className: className2, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
62508
|
+
const ScrollArea = React__namespace.forwardRef(({ className: className2, children, innerRef, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
62380
62509
|
$57acba87d6e25586$export$be92b6f5f03c0fe9,
|
|
62381
62510
|
{
|
|
62382
62511
|
ref,
|
|
62383
62512
|
className: cn("relative overflow-hidden", className2),
|
|
62384
62513
|
...props,
|
|
62385
62514
|
children: [
|
|
62386
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
62515
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
62516
|
+
$57acba87d6e25586$export$d5c6c08dc2d3ca7,
|
|
62517
|
+
{
|
|
62518
|
+
className: "h-full w-full rounded-[inherit]",
|
|
62519
|
+
ref: innerRef,
|
|
62520
|
+
children
|
|
62521
|
+
}
|
|
62522
|
+
),
|
|
62387
62523
|
/* @__PURE__ */ jsxRuntime.jsx(ScrollBar, {}),
|
|
62388
62524
|
/* @__PURE__ */ jsxRuntime.jsx($57acba87d6e25586$export$ac61190d9fc311a9, {})
|
|
62389
62525
|
]
|
|
@@ -62414,8 +62550,8 @@ const ScrollBar = React__namespace.forwardRef(({ className: className2, orientat
|
|
|
62414
62550
|
}
|
|
62415
62551
|
));
|
|
62416
62552
|
ScrollBar.displayName = $57acba87d6e25586$export$2fabd85d0eba3c57.displayName;
|
|
62417
|
-
const MIN_WIDTH =
|
|
62418
|
-
const MIN_HEIGHT =
|
|
62553
|
+
const MIN_WIDTH = 400;
|
|
62554
|
+
const MIN_HEIGHT = 250;
|
|
62419
62555
|
function ValWindow({
|
|
62420
62556
|
position,
|
|
62421
62557
|
onClose,
|
|
@@ -62438,15 +62574,13 @@ function ValWindow({
|
|
|
62438
62574
|
const { windowSize, setWindowSize } = useValOverlayContext();
|
|
62439
62575
|
React$3.useEffect(() => {
|
|
62440
62576
|
var _a, _b;
|
|
62441
|
-
|
|
62442
|
-
|
|
62443
|
-
|
|
62444
|
-
|
|
62445
|
-
|
|
62446
|
-
|
|
62447
|
-
|
|
62448
|
-
}, [windowSize]);
|
|
62449
|
-
const bottomRef = React$3.useRef(null);
|
|
62577
|
+
setWindowSize({
|
|
62578
|
+
height: window.innerHeight - 30,
|
|
62579
|
+
width: MIN_WIDTH,
|
|
62580
|
+
innerHeight: window.innerHeight - 30 - (64 + (((_b = (_a = bottomRef.current) == null ? void 0 : _a.getBoundingClientRect()) == null ? void 0 : _b.height) || 0))
|
|
62581
|
+
});
|
|
62582
|
+
}, []);
|
|
62583
|
+
const bottomRef = React$3.useRef(null);
|
|
62450
62584
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
62451
62585
|
Resizable,
|
|
62452
62586
|
{
|
|
@@ -62457,7 +62591,7 @@ function ValWindow({
|
|
|
62457
62591
|
var _a, _b;
|
|
62458
62592
|
return setWindowSize({
|
|
62459
62593
|
...size2,
|
|
62460
|
-
innerHeight:
|
|
62594
|
+
innerHeight: size2.height - (64 + (((_b = (_a = bottomRef.current) == null ? void 0 : _a.getBoundingClientRect()) == null ? void 0 : _b.height) || 0))
|
|
62461
62595
|
});
|
|
62462
62596
|
},
|
|
62463
62597
|
handle: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "fixed bottom-0 right-0 cursor-se-resize", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -62491,14 +62625,16 @@ function ValWindow({
|
|
|
62491
62625
|
width: (windowSize == null ? void 0 : windowSize.width) || MIN_WIDTH,
|
|
62492
62626
|
height: (windowSize == null ? void 0 : windowSize.height) || MIN_HEIGHT,
|
|
62493
62627
|
left: draggedPosition.left,
|
|
62494
|
-
top: draggedPosition.top
|
|
62628
|
+
top: draggedPosition.top,
|
|
62629
|
+
right: draggedPosition.right,
|
|
62630
|
+
bottom: draggedPosition.bottom
|
|
62495
62631
|
},
|
|
62496
62632
|
children: [
|
|
62497
62633
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
62498
62634
|
"div",
|
|
62499
62635
|
{
|
|
62500
62636
|
ref: dragRef,
|
|
62501
|
-
className: "relative flex items-center justify-center px-2
|
|
62637
|
+
className: "relative flex items-center justify-center px-2 py-2 text-primary",
|
|
62502
62638
|
children: [
|
|
62503
62639
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
62504
62640
|
AlignJustify,
|
|
@@ -62523,56 +62659,32 @@ function ValWindow({
|
|
|
62523
62659
|
]
|
|
62524
62660
|
}
|
|
62525
62661
|
),
|
|
62526
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
62527
|
-
|
|
62528
|
-
|
|
62529
|
-
|
|
62530
|
-
|
|
62531
|
-
|
|
62532
|
-
|
|
62533
|
-
|
|
62534
|
-
|
|
62535
|
-
|
|
62536
|
-
|
|
62537
|
-
|
|
62538
|
-
|
|
62539
|
-
|
|
62540
|
-
height: windowSize == null ? void 0 : windowSize.innerHeight
|
|
62541
|
-
},
|
|
62542
|
-
children: Array.isArray(children) ? children.slice(1, -1) : children
|
|
62543
|
-
}
|
|
62544
|
-
),
|
|
62545
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { ref: bottomRef, className: "w-full px-4 pb-0", children: Array.isArray(children) && children.slice(-1) })
|
|
62546
|
-
]
|
|
62547
|
-
}
|
|
62548
|
-
)
|
|
62662
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
62663
|
+
Array.isArray(children) && children.slice(0, 1),
|
|
62664
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
62665
|
+
ScrollArea,
|
|
62666
|
+
{
|
|
62667
|
+
className: "relative",
|
|
62668
|
+
style: {
|
|
62669
|
+
height: windowSize == null ? void 0 : windowSize.innerHeight
|
|
62670
|
+
},
|
|
62671
|
+
children: Array.isArray(children) ? children.slice(1, -1) : children
|
|
62672
|
+
}
|
|
62673
|
+
),
|
|
62674
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { ref: bottomRef, className: "w-full px-4 pb-0", children: Array.isArray(children) && children.slice(-1) })
|
|
62675
|
+
] })
|
|
62549
62676
|
]
|
|
62550
62677
|
}
|
|
62551
62678
|
)
|
|
62552
62679
|
}
|
|
62553
62680
|
);
|
|
62554
62681
|
}
|
|
62555
|
-
function useDrag({
|
|
62556
|
-
position: initPosition
|
|
62557
|
-
}) {
|
|
62682
|
+
function useDrag({ position: initPosition }) {
|
|
62558
62683
|
var _a, _b;
|
|
62559
|
-
const [position, setPosition] = React$3.useState({ left:
|
|
62684
|
+
const [position, setPosition] = React$3.useState({ left: window.innerWidth - MIN_WIDTH - (24 + 50), top: 16 });
|
|
62560
62685
|
React$3.useEffect(() => {
|
|
62561
|
-
var _a2, _b2;
|
|
62562
62686
|
if (initPosition) {
|
|
62563
|
-
|
|
62564
|
-
const top = initPosition.top - 16;
|
|
62565
|
-
setPosition({
|
|
62566
|
-
left: left < 0 ? 0 : left,
|
|
62567
|
-
top: top < 0 ? 0 : top
|
|
62568
|
-
});
|
|
62569
|
-
} else {
|
|
62570
|
-
const left = window.innerWidth / 2 - MIN_WIDTH / 2 - window.scrollX;
|
|
62571
|
-
const top = window.innerHeight / 2 - MIN_HEIGHT / 2 + window.scrollY;
|
|
62572
|
-
setPosition({
|
|
62573
|
-
left,
|
|
62574
|
-
top
|
|
62575
|
-
});
|
|
62687
|
+
setPosition(initPosition);
|
|
62576
62688
|
}
|
|
62577
62689
|
}, [initPosition]);
|
|
62578
62690
|
const [mouseDown, setMouseDown] = React$3.useState(false);
|
|
@@ -62586,8 +62698,8 @@ function useDrag({
|
|
|
62586
62698
|
if (mouseDown) {
|
|
62587
62699
|
e.preventDefault();
|
|
62588
62700
|
e.stopPropagation();
|
|
62589
|
-
const left = -((((_b2 = (_a2 = ref == null ? void 0 : ref.current) == null ? void 0 : _a2.getBoundingClientRect()) == null ? void 0 : _b2.width) || 0) / 2) + e.
|
|
62590
|
-
const top = -((((_d = (_c = ref == null ? void 0 : ref.current) == null ? void 0 : _c.getBoundingClientRect()) == null ? void 0 : _d.height) || 0) / 2) + +e.
|
|
62701
|
+
const left = -((((_b2 = (_a2 = ref == null ? void 0 : ref.current) == null ? void 0 : _a2.getBoundingClientRect()) == null ? void 0 : _b2.width) || 0) / 2) + e.clientX;
|
|
62702
|
+
const top = -((((_d = (_c = ref == null ? void 0 : ref.current) == null ? void 0 : _c.getBoundingClientRect()) == null ? void 0 : _d.height) || 0) / 2) + +e.clientY;
|
|
62591
62703
|
setPosition({
|
|
62592
62704
|
left: left < 0 ? 0 : left,
|
|
62593
62705
|
top: top < 0 ? 0 : top
|
|
@@ -62765,6 +62877,7 @@ function Grid({ children }) {
|
|
|
62765
62877
|
const x = React$3.useRef(0);
|
|
62766
62878
|
const dragRef = React$3.useRef(null);
|
|
62767
62879
|
const originalWidth = React$3.useRef(0);
|
|
62880
|
+
const [showMobileLeftMenu, setShowMobileLeftMenu] = React$3.useState(true);
|
|
62768
62881
|
const handleMouseUp = () => {
|
|
62769
62882
|
isResizing.current = false;
|
|
62770
62883
|
dragRef.current = null;
|
|
@@ -62805,17 +62918,40 @@ function Grid({ children }) {
|
|
|
62805
62918
|
document.removeEventListener("mousemove", handleMouseMove);
|
|
62806
62919
|
};
|
|
62807
62920
|
}, []);
|
|
62808
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex h-screen", children: [
|
|
62921
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative flex h-screen", children: [
|
|
62809
62922
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
62810
62923
|
"div",
|
|
62811
62924
|
{
|
|
62812
62925
|
ref: leftColRef,
|
|
62813
|
-
className:
|
|
62814
|
-
|
|
62926
|
+
className: classNames(
|
|
62927
|
+
"absolute top-0 left-0 border-r border-border md:relative z-[1] bg-gradient-to-br from-card from-50% to-background",
|
|
62928
|
+
{
|
|
62929
|
+
"w-[300px]": showMobileLeftMenu,
|
|
62930
|
+
"w-0 md:w-[300px]": !showMobileLeftMenu
|
|
62931
|
+
}
|
|
62932
|
+
),
|
|
62815
62933
|
children: [
|
|
62816
62934
|
/* @__PURE__ */ jsxRuntime.jsxs(Grid.Column, { children: [
|
|
62817
|
-
|
|
62818
|
-
|
|
62935
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
62936
|
+
MenuButton,
|
|
62937
|
+
{
|
|
62938
|
+
showOnMobile: !showMobileLeftMenu,
|
|
62939
|
+
onClick: () => {
|
|
62940
|
+
setShowMobileLeftMenu(!showMobileLeftMenu);
|
|
62941
|
+
},
|
|
62942
|
+
children: header1
|
|
62943
|
+
}
|
|
62944
|
+
),
|
|
62945
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
62946
|
+
ScrollArea,
|
|
62947
|
+
{
|
|
62948
|
+
style: { height: "calc(100vh - 50px)" },
|
|
62949
|
+
onClick: () => {
|
|
62950
|
+
setShowMobileLeftMenu(false);
|
|
62951
|
+
},
|
|
62952
|
+
children: body1
|
|
62953
|
+
}
|
|
62954
|
+
)
|
|
62819
62955
|
] }),
|
|
62820
62956
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
62821
62957
|
"div",
|
|
@@ -62834,7 +62970,28 @@ function Grid({ children }) {
|
|
|
62834
62970
|
"w-full": !header3 && !body3
|
|
62835
62971
|
}),
|
|
62836
62972
|
children: /* @__PURE__ */ jsxRuntime.jsxs(Grid.Column, { children: [
|
|
62837
|
-
|
|
62973
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex w-full border-b border-border", children: [
|
|
62974
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
62975
|
+
MenuButton,
|
|
62976
|
+
{
|
|
62977
|
+
className: "md:hidden",
|
|
62978
|
+
showOnMobile: showMobileLeftMenu,
|
|
62979
|
+
onClick: () => {
|
|
62980
|
+
setShowMobileLeftMenu(!showMobileLeftMenu);
|
|
62981
|
+
},
|
|
62982
|
+
children: header1
|
|
62983
|
+
}
|
|
62984
|
+
),
|
|
62985
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
62986
|
+
"span",
|
|
62987
|
+
{
|
|
62988
|
+
className: classNames({
|
|
62989
|
+
"pl-[300px] md:pl-0": showMobileLeftMenu
|
|
62990
|
+
}),
|
|
62991
|
+
children: header2
|
|
62992
|
+
}
|
|
62993
|
+
)
|
|
62994
|
+
] }),
|
|
62838
62995
|
/* @__PURE__ */ jsxRuntime.jsx(ScrollArea, { style: { height: "calc(100vh - 50px)" }, children: body2 })
|
|
62839
62996
|
] })
|
|
62840
62997
|
}
|
|
@@ -62862,111 +63019,30 @@ function Grid({ children }) {
|
|
|
62862
63019
|
)
|
|
62863
63020
|
] });
|
|
62864
63021
|
}
|
|
62865
|
-
|
|
62866
|
-
|
|
62867
|
-
|
|
62868
|
-
|
|
62869
|
-
|
|
62870
|
-
|
|
62871
|
-
};
|
|
62872
|
-
const Section = ({ className: className2 }) => {
|
|
63022
|
+
function MenuButton({
|
|
63023
|
+
className: className2,
|
|
63024
|
+
showOnMobile,
|
|
63025
|
+
onClick,
|
|
63026
|
+
children
|
|
63027
|
+
}) {
|
|
62873
63028
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
62874
|
-
"
|
|
63029
|
+
"div",
|
|
62875
63030
|
{
|
|
62876
|
-
|
|
62877
|
-
|
|
62878
|
-
|
|
62879
|
-
className: className2,
|
|
62880
|
-
fill: "currentColor",
|
|
62881
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
63031
|
+
className: classNames("flex items-center px-4 md:px-4", className2, {
|
|
63032
|
+
"hidden md:flex": showOnMobile
|
|
63033
|
+
}),
|
|
62882
63034
|
children: [
|
|
62883
|
-
/* @__PURE__ */ jsxRuntime.
|
|
62884
|
-
|
|
62885
|
-
"path",
|
|
62886
|
-
{
|
|
62887
|
-
fillRule: "evenodd",
|
|
62888
|
-
clipRule: "evenodd",
|
|
62889
|
-
d: "M9 1.5H0V0.5H9V1.5Z",
|
|
62890
|
-
fill: "currentColor"
|
|
62891
|
-
}
|
|
62892
|
-
),
|
|
62893
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
62894
|
-
"path",
|
|
62895
|
-
{
|
|
62896
|
-
fillRule: "evenodd",
|
|
62897
|
-
clipRule: "evenodd",
|
|
62898
|
-
d: "M9 9.5H0V8.5H9V9.5Z",
|
|
62899
|
-
fill: "currentColor"
|
|
62900
|
-
}
|
|
62901
|
-
)
|
|
62902
|
-
] }),
|
|
62903
|
-
/* @__PURE__ */ jsxRuntime.jsx("defs", { children: /* @__PURE__ */ jsxRuntime.jsx("clipPath", { id: "clip0_1222_1618", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
62904
|
-
"rect",
|
|
62905
|
-
{
|
|
62906
|
-
width: "9",
|
|
62907
|
-
height: "9",
|
|
62908
|
-
fill: "white",
|
|
62909
|
-
transform: "translate(0 0.5)"
|
|
62910
|
-
}
|
|
62911
|
-
) }) })
|
|
63035
|
+
/* @__PURE__ */ jsxRuntime.jsx("button", { className: "md:hidden", onClick, children: /* @__PURE__ */ jsxRuntime.jsx(Menu, {}) }),
|
|
63036
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex items-center justify-between w-full", children })
|
|
62912
63037
|
]
|
|
62913
63038
|
}
|
|
62914
63039
|
);
|
|
62915
|
-
};
|
|
62916
|
-
const Section$1 = Section;
|
|
62917
|
-
const TextIcon = ({ className: className2 }) => {
|
|
62918
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
62919
|
-
"svg",
|
|
62920
|
-
{
|
|
62921
|
-
width: "9",
|
|
62922
|
-
height: "10",
|
|
62923
|
-
viewBox: "0 0 9 10",
|
|
62924
|
-
fill: "currentColor",
|
|
62925
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
62926
|
-
className: className2,
|
|
62927
|
-
children: /* @__PURE__ */ jsxRuntime.jsx("g", { clipPath: "url(#clip0_1229_1625)", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M0.0145513 0.5H8.98545L9 3.18569H8.57074C8.43007 2.2276 8.02749 1.57948 7.36298 1.24133C6.98949 1.05491 6.43169 0.953035 5.68957 0.935694V7.94581C5.68957 8.43569 5.78416 8.76084 5.97332 8.92124C6.16734 9.08165 6.5675 9.16185 7.17381 9.16185V9.5H1.86257V9.16185C2.44462 9.16185 2.83023 9.08165 3.0194 8.92124C3.21342 8.7565 3.31043 8.43136 3.31043 7.94581V0.935694C2.58286 0.953035 2.02506 1.05491 1.63703 1.24133C0.92401 1.58815 0.521423 2.23627 0.429264 3.18569H0L0.0145513 0.5Z" }) })
|
|
62928
|
-
}
|
|
62929
|
-
);
|
|
62930
|
-
};
|
|
62931
|
-
const TextIcon$1 = TextIcon;
|
|
62932
|
-
function Tree({ children, rootPath }) {
|
|
62933
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-col w-full py-2 text-xs", children: React$3.Children.map(children, (child) => {
|
|
62934
|
-
return React$3.cloneElement(child, {
|
|
62935
|
-
paths: [rootPath]
|
|
62936
|
-
});
|
|
62937
|
-
}) });
|
|
62938
63040
|
}
|
|
62939
|
-
|
|
62940
|
-
children
|
|
62941
|
-
|
|
62942
|
-
|
|
62943
|
-
|
|
62944
|
-
type,
|
|
62945
|
-
setActivePath
|
|
62946
|
-
}) => {
|
|
62947
|
-
const paddingLeft = level * 30;
|
|
62948
|
-
const logo = type === "string" ? /* @__PURE__ */ jsxRuntime.jsx(TextIcon$1, {}) : type === "image" ? /* @__PURE__ */ jsxRuntime.jsx(ImageIcon$1, { className: "h-[9px] w-[9px]" }) : /* @__PURE__ */ jsxRuntime.jsx(Section$1, {});
|
|
62949
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "w-full", children: [
|
|
62950
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
62951
|
-
"button",
|
|
62952
|
-
{
|
|
62953
|
-
className: "flex justify-between w-full group py-2 text-xs font-[400] shrink-0",
|
|
62954
|
-
onClick: () => {
|
|
62955
|
-
setActivePath && setActivePath(path);
|
|
62956
|
-
},
|
|
62957
|
-
style: { paddingLeft },
|
|
62958
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-center gap-2", children: [
|
|
62959
|
-
logo,
|
|
62960
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { children: path })
|
|
62961
|
-
] })
|
|
62962
|
-
}
|
|
62963
|
-
),
|
|
62964
|
-
children && /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: React$3.Children.map(children, (child) => {
|
|
62965
|
-
return React$3.cloneElement(child, {
|
|
62966
|
-
level: level + 1,
|
|
62967
|
-
paths: [...paths, path]
|
|
62968
|
-
});
|
|
62969
|
-
}) })
|
|
63041
|
+
Grid.Column = ({ children, className: className2 }) => {
|
|
63042
|
+
const [header, body] = React$3.Children.toArray(children);
|
|
63043
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: classNames("flex flex-col", className2), children: [
|
|
63044
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center border-b border-border", children: header }),
|
|
63045
|
+
body
|
|
62970
63046
|
] });
|
|
62971
63047
|
};
|
|
62972
63048
|
const falsyToString = (value) => typeof value === "boolean" ? "".concat(value) : value === 0 ? "0" : value;
|
|
@@ -67470,8 +67546,10 @@ function ValFormField({
|
|
|
67470
67546
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
67471
67547
|
StringField,
|
|
67472
67548
|
{
|
|
67549
|
+
path,
|
|
67473
67550
|
defaultValue: source,
|
|
67474
67551
|
disabled,
|
|
67552
|
+
schema,
|
|
67475
67553
|
registerPatchCallback,
|
|
67476
67554
|
onSubmit
|
|
67477
67555
|
}
|
|
@@ -67546,7 +67624,13 @@ function ValFormField({
|
|
|
67546
67624
|
}
|
|
67547
67625
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
67548
67626
|
"Unsupported schema: ",
|
|
67549
|
-
schema.type
|
|
67627
|
+
schema.type,
|
|
67628
|
+
" (source type: ",
|
|
67629
|
+
typeof source,
|
|
67630
|
+
" source:",
|
|
67631
|
+
" ",
|
|
67632
|
+
JSON.stringify(source),
|
|
67633
|
+
")"
|
|
67550
67634
|
] });
|
|
67551
67635
|
}
|
|
67552
67636
|
function createImagePatch(path, data, filename, metadata) {
|
|
@@ -67589,17 +67673,29 @@ function createImagePatch(path, data, filename, metadata) {
|
|
|
67589
67673
|
}
|
|
67590
67674
|
];
|
|
67591
67675
|
}
|
|
67676
|
+
function createImageMetadataPatch(path, metadata) {
|
|
67677
|
+
const metadataPath = path + "/metadata";
|
|
67678
|
+
return [
|
|
67679
|
+
{
|
|
67680
|
+
value: metadata,
|
|
67681
|
+
op: "replace",
|
|
67682
|
+
path: metadataPath
|
|
67683
|
+
}
|
|
67684
|
+
];
|
|
67685
|
+
}
|
|
67592
67686
|
function ImageField({
|
|
67593
67687
|
path,
|
|
67594
67688
|
defaultValue,
|
|
67595
67689
|
onSubmit,
|
|
67596
67690
|
registerPatchCallback
|
|
67597
67691
|
}) {
|
|
67692
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l;
|
|
67598
67693
|
const [data, setData] = React$3.useState(
|
|
67599
67694
|
null
|
|
67600
67695
|
);
|
|
67601
67696
|
const [loading, setLoading] = React$3.useState(false);
|
|
67602
67697
|
const [metadata, setMetadata] = React$3.useState();
|
|
67698
|
+
const [hotspot, setHotspot] = React$3.useState();
|
|
67603
67699
|
const [url, setUrl] = React$3.useState();
|
|
67604
67700
|
React$3.useEffect(() => {
|
|
67605
67701
|
setUrl(defaultValue && Internal.convertFileSource(defaultValue).url);
|
|
@@ -67616,56 +67712,143 @@ function ImageField({
|
|
|
67616
67712
|
});
|
|
67617
67713
|
}
|
|
67618
67714
|
}, [data, defaultValue]);
|
|
67715
|
+
React$3.useEffect(() => {
|
|
67716
|
+
var _a2;
|
|
67717
|
+
if (hotspot) {
|
|
67718
|
+
if (metadata) {
|
|
67719
|
+
const newMetadata = {
|
|
67720
|
+
...metadata,
|
|
67721
|
+
hotspot
|
|
67722
|
+
};
|
|
67723
|
+
setMetadata(newMetadata);
|
|
67724
|
+
} else if (defaultValue == null ? void 0 : defaultValue.metadata) {
|
|
67725
|
+
setMetadata({
|
|
67726
|
+
...defaultValue.metadata,
|
|
67727
|
+
hotspot
|
|
67728
|
+
});
|
|
67729
|
+
} else {
|
|
67730
|
+
console.error("Neither image metadata nor value is set");
|
|
67731
|
+
}
|
|
67732
|
+
} else {
|
|
67733
|
+
if ((_a2 = defaultValue == null ? void 0 : defaultValue.metadata) == null ? void 0 : _a2.hotspot) {
|
|
67734
|
+
setHotspot(defaultValue.metadata.hotspot);
|
|
67735
|
+
}
|
|
67736
|
+
}
|
|
67737
|
+
}, [hotspot, defaultValue]);
|
|
67619
67738
|
return /* @__PURE__ */ jsxRuntime.jsxs(FieldContainer, { children: [
|
|
67620
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
67621
|
-
|
|
67739
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
67740
|
+
"div",
|
|
67741
|
+
{
|
|
67742
|
+
className: "flex flex-col max-w-4xl p-2 border border-b-0 rounded-sm rounded-b-none gap-y-4 bg-background text-foreground border-input",
|
|
67743
|
+
children: data || url ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
|
|
67744
|
+
hotspot && /* @__PURE__ */ jsxRuntime.jsx(
|
|
67745
|
+
"div",
|
|
67746
|
+
{
|
|
67747
|
+
className: "rounded-full h-[12px] w-[12px] bg-background mix-blend-difference border-accent border-2 absolute pointer-events-none",
|
|
67748
|
+
style: {
|
|
67749
|
+
top: `${hotspot.y * 100}%`,
|
|
67750
|
+
left: `${hotspot.x * 100}%`
|
|
67751
|
+
}
|
|
67752
|
+
}
|
|
67753
|
+
),
|
|
67754
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
67755
|
+
"img",
|
|
67756
|
+
{
|
|
67757
|
+
src: (data == null ? void 0 : data.src) || url,
|
|
67758
|
+
draggable: false,
|
|
67759
|
+
className: "w-full",
|
|
67760
|
+
style: {
|
|
67761
|
+
cursor: "crosshair"
|
|
67762
|
+
},
|
|
67763
|
+
onClick: (ev) => {
|
|
67764
|
+
const { width: width2, height: height2, left, top } = ev.currentTarget.getBoundingClientRect();
|
|
67765
|
+
const hotspotX = (ev.clientX - 6 - left) / width2;
|
|
67766
|
+
const hotspotY = (ev.clientY - 6 - top) / height2;
|
|
67767
|
+
setHotspot({
|
|
67768
|
+
x: hotspotX,
|
|
67769
|
+
y: hotspotY,
|
|
67770
|
+
width: 1,
|
|
67771
|
+
height: 1
|
|
67772
|
+
});
|
|
67773
|
+
}
|
|
67774
|
+
}
|
|
67775
|
+
)
|
|
67776
|
+
] }) : /* @__PURE__ */ jsxRuntime.jsx("div", { children: "Select image below" })
|
|
67777
|
+
},
|
|
67778
|
+
path
|
|
67779
|
+
),
|
|
67780
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "w-full p-4 border border-t-0 rounded-b-sm bg-background border-input", children: [
|
|
67781
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
67782
|
+
"label",
|
|
67783
|
+
{
|
|
67784
|
+
htmlFor: `img_input:${path}`,
|
|
67785
|
+
className: "block w-full px-1 py-2 text-sm text-center rounded-md cursor-pointer bg-primary text-background",
|
|
67786
|
+
children: "Update"
|
|
67787
|
+
}
|
|
67788
|
+
),
|
|
67622
67789
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
67623
67790
|
"input",
|
|
67624
67791
|
{
|
|
67792
|
+
hidden: true,
|
|
67625
67793
|
id: `img_input:${path}`,
|
|
67626
67794
|
type: "file",
|
|
67627
|
-
hidden: true,
|
|
67628
67795
|
onChange: (ev) => {
|
|
67629
67796
|
readImage(ev).then((res) => {
|
|
67630
67797
|
setData({ src: res.src, filename: res.filename });
|
|
67631
|
-
if (res.width && res.height) {
|
|
67798
|
+
if (res.width && res.height && res.mimeType) {
|
|
67632
67799
|
setMetadata({
|
|
67633
67800
|
sha256: res.sha256,
|
|
67634
67801
|
width: res.width,
|
|
67635
|
-
height: res.height
|
|
67802
|
+
height: res.height,
|
|
67803
|
+
mimeType: res.mimeType,
|
|
67804
|
+
hotspot
|
|
67636
67805
|
});
|
|
67637
67806
|
} else {
|
|
67638
67807
|
setMetadata(void 0);
|
|
67808
|
+
setHotspot(void 0);
|
|
67639
67809
|
}
|
|
67640
67810
|
}).catch((err2) => {
|
|
67641
67811
|
console.error(err2.message);
|
|
67642
67812
|
setData(null);
|
|
67813
|
+
setHotspot(void 0);
|
|
67643
67814
|
setMetadata(void 0);
|
|
67644
67815
|
});
|
|
67645
67816
|
}
|
|
67646
67817
|
}
|
|
67647
67818
|
)
|
|
67648
|
-
] })
|
|
67649
|
-
onSubmit &&
|
|
67819
|
+
] }),
|
|
67820
|
+
onSubmit && /* @__PURE__ */ jsxRuntime.jsx(
|
|
67650
67821
|
SubmitButton,
|
|
67651
67822
|
{
|
|
67652
67823
|
loading,
|
|
67824
|
+
enabled: !!data || ((_b = (_a = defaultValue == null ? void 0 : defaultValue.metadata) == null ? void 0 : _a.hotspot) == null ? void 0 : _b.height) !== (hotspot == null ? void 0 : hotspot.height) || ((_d = (_c = defaultValue == null ? void 0 : defaultValue.metadata) == null ? void 0 : _c.hotspot) == null ? void 0 : _d.width) !== (hotspot == null ? void 0 : hotspot.width) || ((_f = (_e = defaultValue == null ? void 0 : defaultValue.metadata) == null ? void 0 : _e.hotspot) == null ? void 0 : _f.x) !== (hotspot == null ? void 0 : hotspot.x) || ((_h = (_g = defaultValue == null ? void 0 : defaultValue.metadata) == null ? void 0 : _g.hotspot) == null ? void 0 : _h.y) !== (hotspot == null ? void 0 : hotspot.y) || ((_i = defaultValue == null ? void 0 : defaultValue.metadata) == null ? void 0 : _i.width) !== (metadata == null ? void 0 : metadata.width) || ((_j = defaultValue == null ? void 0 : defaultValue.metadata) == null ? void 0 : _j.height) !== (metadata == null ? void 0 : metadata.height) || ((_k = defaultValue == null ? void 0 : defaultValue.metadata) == null ? void 0 : _k.mimeType) !== (metadata == null ? void 0 : metadata.mimeType) || ((_l = defaultValue == null ? void 0 : defaultValue.metadata) == null ? void 0 : _l.sha256) !== (metadata == null ? void 0 : metadata.sha256),
|
|
67653
67825
|
onClick: () => {
|
|
67654
|
-
|
|
67655
|
-
|
|
67656
|
-
(
|
|
67657
|
-
|
|
67658
|
-
|
|
67659
|
-
|
|
67660
|
-
|
|
67661
|
-
|
|
67826
|
+
if (data) {
|
|
67827
|
+
setLoading(true);
|
|
67828
|
+
onSubmit(
|
|
67829
|
+
(path2) => Promise.resolve(
|
|
67830
|
+
createImagePatch(
|
|
67831
|
+
path2,
|
|
67832
|
+
data.src,
|
|
67833
|
+
data.filename ?? null,
|
|
67834
|
+
metadata
|
|
67835
|
+
)
|
|
67662
67836
|
)
|
|
67663
|
-
)
|
|
67664
|
-
|
|
67665
|
-
|
|
67666
|
-
|
|
67667
|
-
|
|
67668
|
-
})
|
|
67837
|
+
).finally(() => {
|
|
67838
|
+
setLoading(false);
|
|
67839
|
+
setData(null);
|
|
67840
|
+
setMetadata(void 0);
|
|
67841
|
+
});
|
|
67842
|
+
} else if (metadata) {
|
|
67843
|
+
setLoading(true);
|
|
67844
|
+
onSubmit(
|
|
67845
|
+
(path2) => Promise.resolve(createImageMetadataPatch(path2, metadata))
|
|
67846
|
+
).finally(() => {
|
|
67847
|
+
setLoading(false);
|
|
67848
|
+
setData(null);
|
|
67849
|
+
setMetadata(void 0);
|
|
67850
|
+
});
|
|
67851
|
+
}
|
|
67669
67852
|
}
|
|
67670
67853
|
}
|
|
67671
67854
|
)
|
|
@@ -67717,6 +67900,15 @@ function RichTextField({
|
|
|
67717
67900
|
editor.registerDecoratorListener(() => {
|
|
67718
67901
|
setDidChange(true);
|
|
67719
67902
|
});
|
|
67903
|
+
editor.registerMutationListener(LexicalLink_1.LinkNode, () => {
|
|
67904
|
+
setDidChange(true);
|
|
67905
|
+
});
|
|
67906
|
+
editor.registerMutationListener(ImageNode, () => {
|
|
67907
|
+
setDidChange(true);
|
|
67908
|
+
});
|
|
67909
|
+
editor.registerMutationListener(LexicalExports.TextNode, () => {
|
|
67910
|
+
setDidChange(true);
|
|
67911
|
+
});
|
|
67720
67912
|
}
|
|
67721
67913
|
}, [editor]);
|
|
67722
67914
|
React$3.useEffect(() => {
|
|
@@ -67737,10 +67929,11 @@ function RichTextField({
|
|
|
67737
67929
|
}
|
|
67738
67930
|
}
|
|
67739
67931
|
),
|
|
67740
|
-
onSubmit &&
|
|
67932
|
+
onSubmit && /* @__PURE__ */ jsxRuntime.jsx(
|
|
67741
67933
|
SubmitButton,
|
|
67742
67934
|
{
|
|
67743
67935
|
loading: loading || !editor,
|
|
67936
|
+
enabled: didChange,
|
|
67744
67937
|
onClick: () => {
|
|
67745
67938
|
if (editor) {
|
|
67746
67939
|
setLoading(true);
|
|
@@ -67822,10 +68015,11 @@ function KeyOfField({
|
|
|
67822
68015
|
]
|
|
67823
68016
|
}
|
|
67824
68017
|
),
|
|
67825
|
-
onSubmit &&
|
|
68018
|
+
onSubmit && /* @__PURE__ */ jsxRuntime.jsx(
|
|
67826
68019
|
SubmitButton,
|
|
67827
68020
|
{
|
|
67828
68021
|
loading,
|
|
68022
|
+
enabled: defaultValue !== value,
|
|
67829
68023
|
onClick: () => {
|
|
67830
68024
|
setLoading(true);
|
|
67831
68025
|
onSubmit(async (path) => [
|
|
@@ -67879,10 +68073,11 @@ function NumberField({
|
|
|
67879
68073
|
type: "number"
|
|
67880
68074
|
}
|
|
67881
68075
|
),
|
|
67882
|
-
onSubmit &&
|
|
68076
|
+
onSubmit && /* @__PURE__ */ jsxRuntime.jsx(
|
|
67883
68077
|
SubmitButton,
|
|
67884
68078
|
{
|
|
67885
68079
|
loading,
|
|
68080
|
+
enabled: defaultValue !== value,
|
|
67886
68081
|
onClick: () => {
|
|
67887
68082
|
setLoading(true);
|
|
67888
68083
|
onSubmit(async (path) => {
|
|
@@ -67905,6 +68100,8 @@ function NumberField({
|
|
|
67905
68100
|
function StringField({
|
|
67906
68101
|
disabled,
|
|
67907
68102
|
defaultValue,
|
|
68103
|
+
path,
|
|
68104
|
+
schema,
|
|
67908
68105
|
registerPatchCallback,
|
|
67909
68106
|
onSubmit
|
|
67910
68107
|
}) {
|
|
@@ -67916,18 +68113,28 @@ function StringField({
|
|
|
67916
68113
|
const ref = React$3.useRef(null);
|
|
67917
68114
|
React$3.useEffect(() => {
|
|
67918
68115
|
if (registerPatchCallback) {
|
|
67919
|
-
registerPatchCallback(async (
|
|
68116
|
+
registerPatchCallback(async (path2) => {
|
|
67920
68117
|
var _a;
|
|
67921
68118
|
return [
|
|
67922
68119
|
{
|
|
67923
68120
|
op: "replace",
|
|
67924
|
-
path,
|
|
68121
|
+
path: path2,
|
|
67925
68122
|
value: ((_a = ref.current) == null ? void 0 : _a.value) || ""
|
|
67926
68123
|
}
|
|
67927
68124
|
];
|
|
67928
68125
|
});
|
|
67929
68126
|
}
|
|
67930
68127
|
}, []);
|
|
68128
|
+
const actualSchema = new StringSchema(
|
|
68129
|
+
schema.options ? {
|
|
68130
|
+
...schema.options,
|
|
68131
|
+
regexp: schema.options.regexp ? new RegExp(
|
|
68132
|
+
schema.options.regexp.source,
|
|
68133
|
+
schema.options.regexp.flags
|
|
68134
|
+
) : void 0
|
|
68135
|
+
} : void 0
|
|
68136
|
+
);
|
|
68137
|
+
const validationErrors = actualSchema.validate(path, value);
|
|
67931
68138
|
return /* @__PURE__ */ jsxRuntime.jsxs(FieldContainer, { children: [
|
|
67932
68139
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
67933
68140
|
Input,
|
|
@@ -67938,18 +68145,20 @@ function StringField({
|
|
|
67938
68145
|
onChange: (e) => setValue(e.target.value)
|
|
67939
68146
|
}
|
|
67940
68147
|
),
|
|
67941
|
-
onSubmit &&
|
|
68148
|
+
onSubmit && /* @__PURE__ */ jsxRuntime.jsx(
|
|
67942
68149
|
SubmitButton,
|
|
67943
68150
|
{
|
|
68151
|
+
validationErrors: validationErrors && validationErrors[path],
|
|
67944
68152
|
loading,
|
|
68153
|
+
enabled: defaultValue !== value && !validationErrors,
|
|
67945
68154
|
onClick: () => {
|
|
67946
68155
|
setLoading(true);
|
|
67947
|
-
onSubmit(async (
|
|
68156
|
+
onSubmit(async (path2) => {
|
|
67948
68157
|
var _a;
|
|
67949
68158
|
return [
|
|
67950
68159
|
{
|
|
67951
68160
|
op: "replace",
|
|
67952
|
-
path,
|
|
68161
|
+
path: path2,
|
|
67953
68162
|
value: ((_a = ref.current) == null ? void 0 : _a.value) || ""
|
|
67954
68163
|
}
|
|
67955
68164
|
];
|
|
@@ -67961,14 +68170,24 @@ function StringField({
|
|
|
67961
68170
|
)
|
|
67962
68171
|
] });
|
|
67963
68172
|
}
|
|
68173
|
+
function InlineValidationErrors({ errors }) {
|
|
68174
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-col gap-y-1 p-2 rounded-md text-sm text-destructive-foreground bg-destructive", children: errors.map((error, i) => /* @__PURE__ */ jsxRuntime.jsx("div", { children: error.message }, i)) });
|
|
68175
|
+
}
|
|
67964
68176
|
function FieldContainer({ children }) {
|
|
67965
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative p-4
|
|
68177
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative p-4", children });
|
|
67966
68178
|
}
|
|
67967
68179
|
function SubmitButton({
|
|
67968
68180
|
loading,
|
|
68181
|
+
enabled,
|
|
68182
|
+
validationErrors,
|
|
67969
68183
|
onClick
|
|
67970
68184
|
}) {
|
|
67971
|
-
|
|
68185
|
+
const { session } = useValOverlayContext();
|
|
68186
|
+
const isProxy = session.status === "success" && session.data.mode === "proxy";
|
|
68187
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "sticky bottom-0 m-4 ml-0", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex justify-between w-full gap-2 py-2 text-sm", children: [
|
|
68188
|
+
validationErrors ? /* @__PURE__ */ jsxRuntime.jsx(InlineValidationErrors, { errors: validationErrors || [] }) : /* @__PURE__ */ jsxRuntime.jsx("span", {}),
|
|
68189
|
+
/* @__PURE__ */ jsxRuntime.jsx(Button, { disabled: loading || !enabled, onClick, children: loading ? isProxy ? "Staging..." : "Saving..." : isProxy ? "Stage" : "Save" })
|
|
68190
|
+
] }) });
|
|
67972
68191
|
}
|
|
67973
68192
|
const Logo = ({ className: className2 }) => {
|
|
67974
68193
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -67985,7 +68204,7 @@ const Logo = ({ className: className2 }) => {
|
|
|
67985
68204
|
"path",
|
|
67986
68205
|
{
|
|
67987
68206
|
d: "M5 5.36426C5 5.16309 5.16309 5 5.36426 5H17.6581C17.8593 5 18.0223 5.16309 18.0223 5.36426V28.4949C18.0223 28.696 17.8593 28.8591 17.6581 28.8591H5.36426C5.16309 28.8591 5 28.696 5 28.4949V5.36426Z",
|
|
67988
|
-
fill: "
|
|
68207
|
+
fill: "hsl(var(--accent))"
|
|
67989
68208
|
}
|
|
67990
68209
|
) }),
|
|
67991
68210
|
/* @__PURE__ */ jsxRuntime.jsx("g", { filter: "url(#filter1_i_21_1677)", children: /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "11.4656", cy: "23.7595", r: "2.18557", fill: "currentColor" }) }),
|
|
@@ -72439,6 +72658,33 @@ function useSession(api) {
|
|
|
72439
72658
|
}, [sessionResetId]);
|
|
72440
72659
|
return session;
|
|
72441
72660
|
}
|
|
72661
|
+
function Path({ children }) {
|
|
72662
|
+
const segs = children.split("/").filter((seg) => seg);
|
|
72663
|
+
return segs.map((seg, i) => {
|
|
72664
|
+
if (i !== segs.length - 1) {
|
|
72665
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(React$3.Fragment, { children: [
|
|
72666
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { children: seg }),
|
|
72667
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "px-[2px] text-muted", children: "/" })
|
|
72668
|
+
] }, `${children}/${seg}`);
|
|
72669
|
+
}
|
|
72670
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Seg, { children: seg }, children);
|
|
72671
|
+
});
|
|
72672
|
+
}
|
|
72673
|
+
function Seg({ children }) {
|
|
72674
|
+
if (children.includes(".")) {
|
|
72675
|
+
const segs = children.split(".");
|
|
72676
|
+
return segs.map((seg, i) => {
|
|
72677
|
+
if (i !== segs.length - 1) {
|
|
72678
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(React$3.Fragment, { children: [
|
|
72679
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { children: i === 0 ? seg : JSON.parse(seg) }),
|
|
72680
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "px-[2px] text-muted", children: "." })
|
|
72681
|
+
] }, `${children}.${seg}`);
|
|
72682
|
+
}
|
|
72683
|
+
return /* @__PURE__ */ jsxRuntime.jsx("span", { children: i === 0 ? seg : JSON.parse(seg) }, children);
|
|
72684
|
+
});
|
|
72685
|
+
}
|
|
72686
|
+
return /* @__PURE__ */ jsxRuntime.jsx("span", { children });
|
|
72687
|
+
}
|
|
72442
72688
|
const ValModulesContext = React$3.createContext(null);
|
|
72443
72689
|
const useValModuleFromPath = (sourcePath) => {
|
|
72444
72690
|
var _a, _b;
|
|
@@ -72589,12 +72835,13 @@ Showing stack trace of: 1. ${fatalErrors[0].message}`;
|
|
|
72589
72835
|
"div",
|
|
72590
72836
|
{
|
|
72591
72837
|
id: "val-fullscreen-container",
|
|
72592
|
-
className: "relative font-serif antialiased",
|
|
72838
|
+
className: "relative w-full h-[100] overflow-hidden font-serif antialiased bg-background text-primary",
|
|
72593
72839
|
"data-mode": theme2,
|
|
72594
72840
|
children: [
|
|
72595
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "fixed -translate-
|
|
72841
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "fixed -translate-y-1/2 right-4 top-1/2 z-overlay", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
72596
72842
|
ValMenu,
|
|
72597
72843
|
{
|
|
72844
|
+
direction: "vertical",
|
|
72598
72845
|
api,
|
|
72599
72846
|
patches,
|
|
72600
72847
|
onCommit: () => setPatchResetId((prev) => prev + 1)
|
|
@@ -72607,18 +72854,19 @@ Showing stack trace of: 1. ${fatalErrors[0].message}`;
|
|
|
72607
72854
|
value: {
|
|
72608
72855
|
hoverElem: hoverElemRef == null ? void 0 : hoverElemRef.current
|
|
72609
72856
|
},
|
|
72610
|
-
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-primary
|
|
72857
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-primary", children: /* @__PURE__ */ jsxRuntime.jsxs(Grid, { children: [
|
|
72611
72858
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-4 h-[50px] flex items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(Logo$1, {}) }),
|
|
72612
72859
|
/* @__PURE__ */ jsxRuntime.jsx(ScrollArea, { className: "px-4", children: modules ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
72613
72860
|
PathTree,
|
|
72614
72861
|
{
|
|
72862
|
+
selectedPath,
|
|
72615
72863
|
paths: Object.keys(modules),
|
|
72616
72864
|
setSelectedModuleId: (path) => {
|
|
72617
72865
|
navigate(path);
|
|
72618
72866
|
}
|
|
72619
72867
|
}
|
|
72620
72868
|
) : !error && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "py-4", children: "Loading..." }) }),
|
|
72621
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-start
|
|
72869
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-start h-[50px] gap-2 font-serif text-xs", children: [
|
|
72622
72870
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
72623
72871
|
"button",
|
|
72624
72872
|
{
|
|
@@ -72628,10 +72876,10 @@ Showing stack trace of: 1. ${fatalErrors[0].message}`;
|
|
|
72628
72876
|
children: /* @__PURE__ */ jsxRuntime.jsx(ChevronLeft, {})
|
|
72629
72877
|
}
|
|
72630
72878
|
),
|
|
72631
|
-
/* @__PURE__ */ jsxRuntime.jsx("
|
|
72879
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { children: /* @__PURE__ */ jsxRuntime.jsx(Path, { children: selectedPath || "/" }) })
|
|
72632
72880
|
] }),
|
|
72633
72881
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-4", children: [
|
|
72634
|
-
error && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-lg text-destructive-foreground", children: [
|
|
72882
|
+
error && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-4 text-lg bg-destructive text-destructive-foreground max-w-xl", children: [
|
|
72635
72883
|
"ERROR: ",
|
|
72636
72884
|
error
|
|
72637
72885
|
] }),
|
|
@@ -72700,7 +72948,7 @@ function AnyVal({
|
|
|
72700
72948
|
initOnSubmit,
|
|
72701
72949
|
top
|
|
72702
72950
|
}) {
|
|
72703
|
-
if (
|
|
72951
|
+
if (schema.opt) {
|
|
72704
72952
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
72705
72953
|
ValOptional,
|
|
72706
72954
|
{
|
|
@@ -72713,6 +72961,18 @@ function AnyVal({
|
|
|
72713
72961
|
}
|
|
72714
72962
|
);
|
|
72715
72963
|
}
|
|
72964
|
+
if (source === null) {
|
|
72965
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
72966
|
+
ValDefaultOf,
|
|
72967
|
+
{
|
|
72968
|
+
source,
|
|
72969
|
+
schema,
|
|
72970
|
+
path,
|
|
72971
|
+
setSelectedPath,
|
|
72972
|
+
initOnSubmit
|
|
72973
|
+
}
|
|
72974
|
+
);
|
|
72975
|
+
}
|
|
72716
72976
|
if (schema.type === "object") {
|
|
72717
72977
|
if (typeof source !== "object" || isJsonArray(source)) {
|
|
72718
72978
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
@@ -72738,15 +72998,18 @@ function AnyVal({
|
|
|
72738
72998
|
typeof source
|
|
72739
72999
|
] });
|
|
72740
73000
|
}
|
|
72741
|
-
return /* @__PURE__ */ jsxRuntime.
|
|
72742
|
-
|
|
72743
|
-
|
|
72744
|
-
|
|
72745
|
-
|
|
72746
|
-
|
|
72747
|
-
|
|
72748
|
-
|
|
72749
|
-
|
|
73001
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
73002
|
+
field ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-left", children: field }) : /* @__PURE__ */ jsxRuntime.jsx(Path, { children: path }),
|
|
73003
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
73004
|
+
ValList,
|
|
73005
|
+
{
|
|
73006
|
+
source,
|
|
73007
|
+
path,
|
|
73008
|
+
schema,
|
|
73009
|
+
setSelectedPath
|
|
73010
|
+
}
|
|
73011
|
+
)
|
|
73012
|
+
] });
|
|
72750
73013
|
} else if (schema.type === "record") {
|
|
72751
73014
|
if (typeof source !== "object") {
|
|
72752
73015
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
@@ -72762,18 +73025,38 @@ function AnyVal({
|
|
|
72762
73025
|
schema.type
|
|
72763
73026
|
] });
|
|
72764
73027
|
}
|
|
72765
|
-
return /* @__PURE__ */ jsxRuntime.
|
|
72766
|
-
|
|
72767
|
-
|
|
72768
|
-
|
|
72769
|
-
|
|
72770
|
-
|
|
72771
|
-
|
|
72772
|
-
|
|
72773
|
-
|
|
73028
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
73029
|
+
field ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-left", children: field }) : /* @__PURE__ */ jsxRuntime.jsx(Path, { children: path }),
|
|
73030
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
73031
|
+
ValRecord,
|
|
73032
|
+
{
|
|
73033
|
+
source,
|
|
73034
|
+
path,
|
|
73035
|
+
schema,
|
|
73036
|
+
setSelectedPath
|
|
73037
|
+
}
|
|
73038
|
+
)
|
|
73039
|
+
] });
|
|
73040
|
+
} else if ((schema == null ? void 0 : schema.type) === "union") {
|
|
73041
|
+
if (schema.key && typeof source === "object" && !isJsonArray(source)) {
|
|
73042
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
73043
|
+
ValTaggedUnion,
|
|
73044
|
+
{
|
|
73045
|
+
tag: schema.key,
|
|
73046
|
+
source,
|
|
73047
|
+
path,
|
|
73048
|
+
schema,
|
|
73049
|
+
initOnSubmit,
|
|
73050
|
+
setSelectedPath,
|
|
73051
|
+
top
|
|
73052
|
+
}
|
|
73053
|
+
);
|
|
73054
|
+
}
|
|
73055
|
+
} else if ((schema == null ? void 0 : schema.type) === "literal") {
|
|
73056
|
+
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, {});
|
|
72774
73057
|
}
|
|
72775
73058
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "py-2 gap-y-4", children: [
|
|
72776
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-left", children: field
|
|
73059
|
+
field ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-left", children: field }) : /* @__PURE__ */ jsxRuntime.jsx(Path, { children: path }),
|
|
72777
73060
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
72778
73061
|
ValFormField,
|
|
72779
73062
|
{
|
|
@@ -72786,6 +73069,97 @@ function AnyVal({
|
|
|
72786
73069
|
)
|
|
72787
73070
|
] });
|
|
72788
73071
|
}
|
|
73072
|
+
function ValTaggedUnion({
|
|
73073
|
+
tag,
|
|
73074
|
+
path,
|
|
73075
|
+
source,
|
|
73076
|
+
schema,
|
|
73077
|
+
setSelectedPath,
|
|
73078
|
+
initOnSubmit,
|
|
73079
|
+
top
|
|
73080
|
+
}) {
|
|
73081
|
+
const [currentKey, setCurrentKey] = React$3.useState(null);
|
|
73082
|
+
const [current, setCurrent] = React$3.useState(null);
|
|
73083
|
+
const keys = schema.items.flatMap((item) => {
|
|
73084
|
+
if (item.type === "object" && item.items[tag]) {
|
|
73085
|
+
const maybeLiteral = item.items[tag];
|
|
73086
|
+
if (maybeLiteral.type === "literal") {
|
|
73087
|
+
return [maybeLiteral.value];
|
|
73088
|
+
}
|
|
73089
|
+
}
|
|
73090
|
+
return [];
|
|
73091
|
+
});
|
|
73092
|
+
React$3.useEffect(() => {
|
|
73093
|
+
if (!currentKey) {
|
|
73094
|
+
const maybeCurrentKey = source == null ? void 0 : source[tag];
|
|
73095
|
+
if (maybeCurrentKey && typeof maybeCurrentKey === "string") {
|
|
73096
|
+
setCurrentKey(maybeCurrentKey);
|
|
73097
|
+
}
|
|
73098
|
+
} else {
|
|
73099
|
+
const sourceKey = source[tag];
|
|
73100
|
+
const unionSchema = schema.items.find((item) => {
|
|
73101
|
+
if (item.type === "object" && item.items[tag]) {
|
|
73102
|
+
const maybeLiteral = item.items[tag];
|
|
73103
|
+
if (maybeLiteral.type === "literal") {
|
|
73104
|
+
return maybeLiteral.value === currentKey;
|
|
73105
|
+
}
|
|
73106
|
+
return false;
|
|
73107
|
+
}
|
|
73108
|
+
});
|
|
73109
|
+
if (sourceKey && typeof sourceKey === "string" && unionSchema) {
|
|
73110
|
+
setCurrent({ source, schema: unionSchema });
|
|
73111
|
+
} else {
|
|
73112
|
+
console.error(
|
|
73113
|
+
"Could not find source or schema of key",
|
|
73114
|
+
currentKey,
|
|
73115
|
+
source,
|
|
73116
|
+
schema
|
|
73117
|
+
);
|
|
73118
|
+
setCurrent(null);
|
|
73119
|
+
}
|
|
73120
|
+
}
|
|
73121
|
+
}, [currentKey, source, schema, keys]);
|
|
73122
|
+
if (keys.length !== schema.items.length) {
|
|
73123
|
+
console.warn("Not all items have tag:", tag);
|
|
73124
|
+
}
|
|
73125
|
+
const loading = false;
|
|
73126
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
73127
|
+
"div",
|
|
73128
|
+
{
|
|
73129
|
+
className: classNames("flex flex-col gap-y-8", {
|
|
73130
|
+
"border-l-2 border-border pl-6": !top
|
|
73131
|
+
}),
|
|
73132
|
+
children: [
|
|
73133
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
73134
|
+
Select,
|
|
73135
|
+
{
|
|
73136
|
+
defaultValue: currentKey ?? void 0,
|
|
73137
|
+
disabled: loading,
|
|
73138
|
+
onValueChange: (key) => {
|
|
73139
|
+
setCurrentKey(key);
|
|
73140
|
+
},
|
|
73141
|
+
children: [
|
|
73142
|
+
/* @__PURE__ */ jsxRuntime.jsx(SelectTrigger, { children: /* @__PURE__ */ jsxRuntime.jsx(SelectValue, { placeholder: "Select type" }) }),
|
|
73143
|
+
/* @__PURE__ */ jsxRuntime.jsx(SelectContent, { children: keys.map((tag2) => /* @__PURE__ */ jsxRuntime.jsx(SelectItem, { value: tag2.toString(), children: tag2.toString() }, tag2)) })
|
|
73144
|
+
]
|
|
73145
|
+
}
|
|
73146
|
+
),
|
|
73147
|
+
current && /* @__PURE__ */ jsxRuntime.jsx(
|
|
73148
|
+
AnyVal,
|
|
73149
|
+
{
|
|
73150
|
+
path,
|
|
73151
|
+
source: current.source,
|
|
73152
|
+
schema: current.schema,
|
|
73153
|
+
setSelectedPath,
|
|
73154
|
+
initOnSubmit,
|
|
73155
|
+
top
|
|
73156
|
+
}
|
|
73157
|
+
)
|
|
73158
|
+
]
|
|
73159
|
+
},
|
|
73160
|
+
path
|
|
73161
|
+
);
|
|
73162
|
+
}
|
|
72789
73163
|
function ValObject({
|
|
72790
73164
|
path,
|
|
72791
73165
|
source,
|
|
@@ -72806,7 +73180,7 @@ function ValObject({
|
|
|
72806
73180
|
AnyVal,
|
|
72807
73181
|
{
|
|
72808
73182
|
path: subPath,
|
|
72809
|
-
source: source[key],
|
|
73183
|
+
source: (source == null ? void 0 : source[key]) ?? null,
|
|
72810
73184
|
schema: property,
|
|
72811
73185
|
setSelectedPath,
|
|
72812
73186
|
field: key,
|
|
@@ -73129,8 +73503,8 @@ function ValOptional({
|
|
|
73129
73503
|
field
|
|
73130
73504
|
}) {
|
|
73131
73505
|
const [enable, setEnable] = React$3.useState(source !== null);
|
|
73132
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-y-
|
|
73133
|
-
|
|
73506
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-y-2", children: [
|
|
73507
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-start gap-x-4", children: [
|
|
73134
73508
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
73135
73509
|
Switch,
|
|
73136
73510
|
{
|
|
@@ -73140,16 +73514,8 @@ function ValOptional({
|
|
|
73140
73514
|
}
|
|
73141
73515
|
}
|
|
73142
73516
|
),
|
|
73143
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { children: field })
|
|
73144
|
-
] })
|
|
73145
|
-
Switch,
|
|
73146
|
-
{
|
|
73147
|
-
checked: enable,
|
|
73148
|
-
onClick: () => {
|
|
73149
|
-
setEnable((prev) => !prev);
|
|
73150
|
-
}
|
|
73151
|
-
}
|
|
73152
|
-
),
|
|
73517
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { children: field ? field : /* @__PURE__ */ jsxRuntime.jsx(Path, { children: path }) })
|
|
73518
|
+
] }),
|
|
73153
73519
|
enable && /* @__PURE__ */ jsxRuntime.jsx(
|
|
73154
73520
|
ValDefaultOf,
|
|
73155
73521
|
{
|
|
@@ -73218,61 +73584,62 @@ function ValDefaultOf({
|
|
|
73218
73584
|
function isJsonArray(source) {
|
|
73219
73585
|
return Array.isArray(source);
|
|
73220
73586
|
}
|
|
73221
|
-
function
|
|
73222
|
-
const
|
|
73587
|
+
function dirPaths(paths) {
|
|
73588
|
+
const res = {};
|
|
73223
73589
|
paths.forEach((path) => {
|
|
73224
|
-
const
|
|
73225
|
-
|
|
73226
|
-
|
|
73227
|
-
|
|
73228
|
-
current[part] = {};
|
|
73590
|
+
const allParts = path.split("/").filter((part) => part !== "");
|
|
73591
|
+
if (allParts.length === 1) {
|
|
73592
|
+
if (!res[""]) {
|
|
73593
|
+
res[""] = [];
|
|
73229
73594
|
}
|
|
73230
|
-
|
|
73231
|
-
})
|
|
73595
|
+
res[""].push(allParts[0]);
|
|
73596
|
+
} else if (allParts.length > 1) {
|
|
73597
|
+
const dir = allParts.slice(0, allParts.length - 1).join("/");
|
|
73598
|
+
const file = allParts.slice(-1)[0];
|
|
73599
|
+
if (!res[dir]) {
|
|
73600
|
+
res[dir] = [];
|
|
73601
|
+
}
|
|
73602
|
+
res[dir].push(file);
|
|
73603
|
+
}
|
|
73232
73604
|
});
|
|
73233
|
-
return
|
|
73605
|
+
return res;
|
|
73234
73606
|
}
|
|
73235
73607
|
function PathTree({
|
|
73608
|
+
selectedPath,
|
|
73236
73609
|
paths,
|
|
73237
73610
|
setSelectedModuleId
|
|
73238
73611
|
}) {
|
|
73239
|
-
const tree =
|
|
73240
|
-
|
|
73241
|
-
|
|
73242
|
-
{
|
|
73243
|
-
|
|
73244
|
-
|
|
73245
|
-
|
|
73246
|
-
|
|
73247
|
-
|
|
73248
|
-
|
|
73249
|
-
}
|
|
73250
|
-
|
|
73251
|
-
|
|
73252
|
-
|
|
73253
|
-
|
|
73254
|
-
|
|
73255
|
-
|
|
73256
|
-
|
|
73257
|
-
|
|
73258
|
-
|
|
73259
|
-
|
|
73260
|
-
|
|
73261
|
-
|
|
73262
|
-
|
|
73263
|
-
|
|
73264
|
-
|
|
73265
|
-
|
|
73266
|
-
|
|
73267
|
-
|
|
73268
|
-
|
|
73269
|
-
|
|
73270
|
-
tree: childTree,
|
|
73271
|
-
moduleId: `${moduleId}/${childName}`,
|
|
73272
|
-
setSelectedModuleId
|
|
73273
|
-
}
|
|
73274
|
-
) }, `${moduleId}/${childName}`))
|
|
73275
|
-
] });
|
|
73612
|
+
const tree = dirPaths(paths);
|
|
73613
|
+
const selectedModuleId = selectedPath && Internal.splitModuleIdAndModulePath(selectedPath)[0];
|
|
73614
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-col w-full py-2 text-xs", children: Object.entries(tree).map(([dir, files]) => {
|
|
73615
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "px-4 py-2", children: [
|
|
73616
|
+
dir && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "font-bold", children: /* @__PURE__ */ jsxRuntime.jsx(Path, { children: dir }) }),
|
|
73617
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
73618
|
+
"div",
|
|
73619
|
+
{
|
|
73620
|
+
className: classNames({
|
|
73621
|
+
"flex flex-col py-2 justify-start items-start": !!dir
|
|
73622
|
+
}),
|
|
73623
|
+
children: files.map((file) => {
|
|
73624
|
+
const moduleId = `/${dir}/${file}`;
|
|
73625
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
73626
|
+
"button",
|
|
73627
|
+
{
|
|
73628
|
+
className: classNames("block px-2 py-1 rounded-full", {
|
|
73629
|
+
"bg-accent text-accent-foreground": selectedModuleId === moduleId
|
|
73630
|
+
}),
|
|
73631
|
+
onClick: () => {
|
|
73632
|
+
setSelectedModuleId(moduleId);
|
|
73633
|
+
},
|
|
73634
|
+
children: file
|
|
73635
|
+
},
|
|
73636
|
+
moduleId
|
|
73637
|
+
);
|
|
73638
|
+
})
|
|
73639
|
+
}
|
|
73640
|
+
)
|
|
73641
|
+
] }, `/${dir}`);
|
|
73642
|
+
}) });
|
|
73276
73643
|
}
|
|
73277
73644
|
const theme = {
|
|
73278
73645
|
tags: {
|
|
@@ -73464,76 +73831,90 @@ function ValOverlay({
|
|
|
73464
73831
|
windowSize,
|
|
73465
73832
|
setWindowSize
|
|
73466
73833
|
},
|
|
73467
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
73468
|
-
|
|
73469
|
-
|
|
73470
|
-
|
|
73471
|
-
|
|
73472
|
-
|
|
73473
|
-
|
|
73474
|
-
|
|
73475
|
-
|
|
73476
|
-
|
|
73477
|
-
|
|
73478
|
-
|
|
73479
|
-
|
|
73480
|
-
|
|
73481
|
-
|
|
73482
|
-
setHoverTarget,
|
|
73483
|
-
setEditMode,
|
|
73484
|
-
setWindowTarget
|
|
73485
|
-
}
|
|
73486
|
-
),
|
|
73487
|
-
editMode === "window" && windowTarget && /* @__PURE__ */ jsxRuntime.jsx(
|
|
73488
|
-
ValWindow,
|
|
73489
|
-
{
|
|
73490
|
-
onClose: () => {
|
|
73491
|
-
setWindowTarget(null);
|
|
73492
|
-
setEditMode("hover");
|
|
73493
|
-
},
|
|
73494
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
73495
|
-
"div",
|
|
73834
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
73835
|
+
"div",
|
|
73836
|
+
{
|
|
73837
|
+
"data-mode": theme2,
|
|
73838
|
+
className: "font-serif antialiased",
|
|
73839
|
+
style: {
|
|
73840
|
+
position: "fixed",
|
|
73841
|
+
top: 0,
|
|
73842
|
+
left: 0,
|
|
73843
|
+
zIndex: 8999
|
|
73844
|
+
// 1 less than the NextJS error z-index: 9000
|
|
73845
|
+
},
|
|
73846
|
+
children: [
|
|
73847
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "fixed -translate-y-1/2 right-4 top-1/2 z-overlay", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
73848
|
+
ValMenu,
|
|
73496
73849
|
{
|
|
73497
|
-
|
|
73498
|
-
|
|
73499
|
-
|
|
73850
|
+
direction: "vertical",
|
|
73851
|
+
api,
|
|
73852
|
+
patches,
|
|
73853
|
+
onCommit: () => {
|
|
73854
|
+
setPatchResetId((patchResetId) => patchResetId + 1);
|
|
73855
|
+
}
|
|
73856
|
+
}
|
|
73857
|
+
) }),
|
|
73858
|
+
session.status === "success" && session.data.enabled && editMode === "hover" && hoverTarget.path && /* @__PURE__ */ jsxRuntime.jsx(
|
|
73859
|
+
ValHover,
|
|
73860
|
+
{
|
|
73861
|
+
hoverTarget,
|
|
73862
|
+
setHoverTarget,
|
|
73863
|
+
setEditMode,
|
|
73864
|
+
setWindowTarget
|
|
73865
|
+
}
|
|
73866
|
+
),
|
|
73867
|
+
editMode === "window" && windowTarget && /* @__PURE__ */ jsxRuntime.jsx(
|
|
73868
|
+
ValWindow,
|
|
73869
|
+
{
|
|
73870
|
+
onClose: () => {
|
|
73871
|
+
setWindowTarget(null);
|
|
73872
|
+
setEditMode("hover");
|
|
73500
73873
|
},
|
|
73501
|
-
children:
|
|
73502
|
-
|
|
73503
|
-
|
|
73504
|
-
|
|
73505
|
-
|
|
73506
|
-
|
|
73507
|
-
] }, path);
|
|
73508
|
-
}
|
|
73509
|
-
const { source, schema } = data.data;
|
|
73510
|
-
if (!source || !schema) {
|
|
73511
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
73512
|
-
"Module: ",
|
|
73513
|
-
path,
|
|
73514
|
-
" is missing source or schema"
|
|
73515
|
-
] });
|
|
73516
|
-
}
|
|
73517
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
73518
|
-
AnyVal,
|
|
73519
|
-
{
|
|
73520
|
-
initOnSubmit,
|
|
73521
|
-
path,
|
|
73522
|
-
schema,
|
|
73523
|
-
source,
|
|
73524
|
-
setSelectedPath: () => {
|
|
73525
|
-
},
|
|
73526
|
-
field: path,
|
|
73527
|
-
top: true
|
|
73874
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
73875
|
+
"div",
|
|
73876
|
+
{
|
|
73877
|
+
className: "p-4",
|
|
73878
|
+
style: {
|
|
73879
|
+
maxHeight: windowSize == null ? void 0 : windowSize.innerHeight
|
|
73528
73880
|
},
|
|
73529
|
-
path
|
|
73530
|
-
|
|
73531
|
-
|
|
73881
|
+
children: Object.entries(formData).map(([path, data]) => {
|
|
73882
|
+
if (data.status !== "success") {
|
|
73883
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
73884
|
+
path,
|
|
73885
|
+
": ",
|
|
73886
|
+
data.status
|
|
73887
|
+
] }, path);
|
|
73888
|
+
}
|
|
73889
|
+
const { source, schema } = data.data;
|
|
73890
|
+
if (!source || !schema) {
|
|
73891
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
73892
|
+
"Module: ",
|
|
73893
|
+
path,
|
|
73894
|
+
" is missing source or schema"
|
|
73895
|
+
] });
|
|
73896
|
+
}
|
|
73897
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
73898
|
+
AnyVal,
|
|
73899
|
+
{
|
|
73900
|
+
initOnSubmit,
|
|
73901
|
+
path,
|
|
73902
|
+
schema,
|
|
73903
|
+
source,
|
|
73904
|
+
setSelectedPath: () => {
|
|
73905
|
+
},
|
|
73906
|
+
top: true
|
|
73907
|
+
},
|
|
73908
|
+
path
|
|
73909
|
+
);
|
|
73910
|
+
})
|
|
73911
|
+
}
|
|
73912
|
+
)
|
|
73532
73913
|
}
|
|
73533
73914
|
)
|
|
73534
|
-
|
|
73535
|
-
|
|
73536
|
-
|
|
73915
|
+
]
|
|
73916
|
+
}
|
|
73917
|
+
)
|
|
73537
73918
|
}
|
|
73538
73919
|
);
|
|
73539
73920
|
}
|
|
@@ -73600,7 +73981,7 @@ function ValHover({
|
|
|
73600
73981
|
"div",
|
|
73601
73982
|
{
|
|
73602
73983
|
id: "val-hover",
|
|
73603
|
-
className: "fixed border-2 cursor-pointer z-overlay-hover border-
|
|
73984
|
+
className: "fixed border-2 cursor-pointer z-overlay-hover border-accent",
|
|
73604
73985
|
style: {
|
|
73605
73986
|
top: rect == null ? void 0 : rect.top,
|
|
73606
73987
|
left: rect == null ? void 0 : rect.left,
|
|
@@ -73621,7 +74002,7 @@ function ValHover({
|
|
|
73621
74002
|
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-end w-full text-xs", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
73622
74003
|
"div",
|
|
73623
74004
|
{
|
|
73624
|
-
className: "flex items-center justify-center px-3 py-1 text-
|
|
74005
|
+
className: "flex items-center justify-center px-3 py-1 text-accent-foreground bg-accent border-l-2 border-b-2 border-accent",
|
|
73625
74006
|
style: {
|
|
73626
74007
|
maxHeight: (rect == null ? void 0 : rect.height) && rect.height - 4,
|
|
73627
74008
|
fontSize: (rect == null ? void 0 : rect.height) && rect.height <= 16 ? rect.height - 4 : void 0
|
|
@@ -73665,9 +74046,19 @@ function useHoverTarget(editMode) {
|
|
|
73665
74046
|
setTargetRect(targetElement.getBoundingClientRect());
|
|
73666
74047
|
}
|
|
73667
74048
|
};
|
|
74049
|
+
const observer = new ResizeObserver(() => {
|
|
74050
|
+
if (targetElement) {
|
|
74051
|
+
setTargetRect(targetElement.getBoundingClientRect());
|
|
74052
|
+
}
|
|
74053
|
+
});
|
|
74054
|
+
const valUIElement = document.getElementById("val-ui");
|
|
74055
|
+
if (targetElement && valUIElement) {
|
|
74056
|
+
observer.observe(valUIElement);
|
|
74057
|
+
}
|
|
73668
74058
|
document.addEventListener("scroll", scrollListener, { passive: true });
|
|
73669
74059
|
return () => {
|
|
73670
74060
|
document.removeEventListener("scroll", scrollListener);
|
|
74061
|
+
observer.disconnect();
|
|
73671
74062
|
};
|
|
73672
74063
|
}, [targetElement]);
|
|
73673
74064
|
return [
|
|
@@ -73714,7 +74105,7 @@ function useInitEditMode() {
|
|
|
73714
74105
|
}, []);
|
|
73715
74106
|
return [editMode, setEditMode];
|
|
73716
74107
|
}
|
|
73717
|
-
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-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\\/10 {\n background-color: hsl(var(--background) / 0.1);\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-3xl {\n --tw-backdrop-blur: blur(64px);\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-lg {\n --tw-backdrop-blur: blur(16px);\n -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n}\n.backdrop-blur-sm {\n --tw-backdrop-blur: blur(4px);\n -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n}\n.transition-all {\n transition-property: all;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.transition-colors {\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.transition-opacity {\n transition-property: opacity;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.transition-transform {\n transition-property: transform;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.duration-150 {\n transition-duration: 150ms;\n}\n.duration-200 {\n transition-duration: 200ms;\n}\n.ease-in-out {\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n}\n@keyframes enter {\n\n from {\n opacity: var(--tw-enter-opacity, 1);\n transform: translate3d(var(--tw-enter-translate-x, 0), var(--tw-enter-translate-y, 0), 0) scale3d(var(--tw-enter-scale, 1), var(--tw-enter-scale, 1), var(--tw-enter-scale, 1)) rotate(var(--tw-enter-rotate, 0));\n }\n}\n@keyframes exit {\n\n to {\n opacity: var(--tw-exit-opacity, 1);\n transform: translate3d(var(--tw-exit-translate-x, 0), var(--tw-exit-translate-y, 0), 0) scale3d(var(--tw-exit-scale, 1), var(--tw-exit-scale, 1), var(--tw-exit-scale, 1)) rotate(var(--tw-exit-rotate, 0));\n }\n}\n.animate-in {\n animation-name: enter;\n animation-duration: 150ms;\n --tw-enter-opacity: initial;\n --tw-enter-scale: initial;\n --tw-enter-rotate: initial;\n --tw-enter-translate-x: initial;\n --tw-enter-translate-y: initial;\n}\n.fade-in-0 {\n --tw-enter-opacity: 0;\n}\n.zoom-in-95 {\n --tw-enter-scale: .95;\n}\n.duration-150 {\n animation-duration: 150ms;\n}\n.duration-200 {\n animation-duration: 200ms;\n}\n.ease-in-out {\n animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n}\n.file\\:border-0::file-selector-button {\n border-width: 0px;\n}\n.file\\:bg-transparent::file-selector-button {\n background-color: transparent;\n}\n.file\\:text-sm::file-selector-button {\n font-size: 0.875rem;\n line-height: 1.25rem;\n}\n.file\\:font-medium::file-selector-button {\n font-weight: 500;\n}\n.placeholder\\:text-muted-foreground::-moz-placeholder {\n color: hsl(var(--muted-foreground));\n}\n.placeholder\\:text-muted-foreground::placeholder {\n color: hsl(var(--muted-foreground));\n}\n.focus-within\\:relative:focus-within {\n position: relative;\n}\n.hover\\:w-\\[2px\\]:hover {\n width: 2px;\n}\n.hover\\:w-\\[3px\\]:hover {\n width: 3px;\n}\n.hover\\:cursor-pointer:hover {\n cursor: pointer;\n}\n.hover\\:rounded-lg:hover {\n border-radius: var(--radius);\n}\n.hover\\:bg-accent:hover {\n background-color: hsl(var(--accent));\n}\n.hover\\:bg-border:hover {\n background-color: hsl(var(--border));\n}\n.hover\\:bg-destructive\\/90:hover {\n background-color: hsl(var(--destructive) / 0.9);\n}\n.hover\\:bg-muted:hover {\n background-color: hsl(var(--muted));\n}\n.hover\\:bg-primary:hover {\n background-color: hsl(var(--primary));\n}\n.hover\\:bg-primary\\/90:hover {\n background-color: hsl(var(--primary) / 0.9);\n}\n.hover\\:bg-red-700:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(185 28 28 / var(--tw-bg-opacity));\n}\n.hover\\:bg-secondary\\/80:hover {\n background-color: hsl(var(--secondary) / 0.8);\n}\n.hover\\:text-accent-foreground:hover {\n color: hsl(var(--accent-foreground));\n}\n.hover\\:text-muted-foreground:hover {\n color: hsl(var(--muted-foreground));\n}\n.hover\\:text-primary-foreground:hover {\n color: hsl(var(--primary-foreground));\n}\n.hover\\:text-white:hover {\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity));\n}\n.hover\\:underline:hover {\n text-decoration-line: underline;\n}\n.hover\\:opacity-100:hover {\n opacity: 1;\n}\n.focus\\:bg-accent:focus {\n background-color: hsl(var(--accent));\n}\n.focus\\:bg-primary:focus {\n background-color: hsl(var(--primary));\n}\n.focus\\:text-accent-foreground:focus {\n color: hsl(var(--accent-foreground));\n}\n.focus\\:text-primary-foreground:focus {\n color: hsl(var(--primary-foreground));\n}\n.focus\\:outline-none:focus {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n.focus\\:ring-2:focus {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n.focus\\:ring-ring:focus {\n --tw-ring-color: hsl(var(--ring));\n}\n.focus\\:ring-offset-2:focus {\n --tw-ring-offset-width: 2px;\n}\n.focus-visible\\:outline-none:focus-visible {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n.focus-visible\\:outline-accent:focus-visible {\n outline-color: hsl(var(--accent));\n}\n.focus-visible\\:ring-2:focus-visible {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n.focus-visible\\:ring-ring:focus-visible {\n --tw-ring-color: hsl(var(--ring));\n}\n.focus-visible\\:ring-offset-2:focus-visible {\n --tw-ring-offset-width: 2px;\n}\n.focus-visible\\:ring-offset-background:focus-visible {\n --tw-ring-offset-color: hsl(var(--background));\n}\n.disabled\\:pointer-events-none:disabled {\n pointer-events: none;\n}\n.disabled\\:cursor-not-allowed:disabled {\n cursor: not-allowed;\n}\n.disabled\\:text-background:disabled {\n color: hsl(var(--background));\n}\n.disabled\\:opacity-50:disabled {\n opacity: 0.5;\n}\n.peer:disabled ~ .peer-disabled\\:cursor-not-allowed {\n cursor: not-allowed;\n}\n.peer:disabled ~ .peer-disabled\\:opacity-70 {\n opacity: 0.7;\n}\n.aria-selected\\:bg-accent[aria-selected=\"true\"] {\n background-color: hsl(var(--accent));\n}\n.aria-selected\\:text-accent-foreground[aria-selected=\"true\"] {\n color: hsl(var(--accent-foreground));\n}\n.aria-selected\\:opacity-100[aria-selected=\"true\"] {\n opacity: 1;\n}\n.data-\\[disabled\\]\\:pointer-events-none[data-disabled] {\n pointer-events: none;\n}\n.data-\\[side\\=bottom\\]\\:translate-y-1[data-side=bottom] {\n --tw-translate-y: 0.25rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.data-\\[side\\=left\\]\\:-translate-x-1[data-side=left] {\n --tw-translate-x: -0.25rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.data-\\[side\\=right\\]\\:translate-x-1[data-side=right] {\n --tw-translate-x: 0.25rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.data-\\[side\\=top\\]\\:-translate-y-1[data-side=top] {\n --tw-translate-y: -0.25rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.data-\\[state\\=checked\\]\\:translate-x-5[data-state=checked] {\n --tw-translate-x: 1.25rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.data-\\[state\\=unchecked\\]\\:translate-x-0[data-state=unchecked] {\n --tw-translate-x: 0px;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n@keyframes accordion-up {\n\n from {\n height: var(--radix-accordion-content-height);\n }\n\n to {\n height: 0;\n }\n}\n.data-\\[state\\=closed\\]\\:animate-accordion-up[data-state=closed] {\n animation: accordion-up 0.2s ease-out;\n}\n@keyframes accordion-down {\n\n from {\n height: 0;\n }\n\n to {\n height: var(--radix-accordion-content-height);\n }\n}\n.data-\\[state\\=open\\]\\:animate-accordion-down[data-state=open] {\n animation: accordion-down 0.2s ease-out;\n}\n.data-\\[state\\=active\\]\\:bg-background[data-state=active] {\n background-color: hsl(var(--background));\n}\n.data-\\[state\\=checked\\]\\:bg-accent[data-state=checked] {\n background-color: hsl(var(--accent));\n}\n.data-\\[state\\=checked\\]\\:bg-primary[data-state=checked] {\n background-color: hsl(var(--primary));\n}\n.data-\\[state\\=on\\]\\:bg-accent[data-state=on] {\n background-color: hsl(var(--accent));\n}\n.data-\\[state\\=open\\]\\:bg-accent[data-state=open] {\n background-color: hsl(var(--accent));\n}\n.data-\\[state\\=unchecked\\]\\:bg-primary[data-state=unchecked] {\n background-color: hsl(var(--primary));\n}\n.data-\\[state\\=active\\]\\:text-foreground[data-state=active] {\n color: hsl(var(--foreground));\n}\n.data-\\[state\\=checked\\]\\:text-primary-foreground[data-state=checked] {\n color: hsl(var(--primary-foreground));\n}\n.data-\\[state\\=on\\]\\:text-accent-foreground[data-state=on] {\n color: hsl(var(--accent-foreground));\n}\n.data-\\[state\\=open\\]\\:text-muted-foreground[data-state=open] {\n color: hsl(var(--muted-foreground));\n}\n.data-\\[disabled\\]\\:opacity-50[data-disabled] {\n opacity: 0.5;\n}\n.data-\\[state\\=active\\]\\:shadow-sm[data-state=active] {\n --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.data-\\[state\\=open\\]\\:animate-in[data-state=open] {\n animation-name: enter;\n animation-duration: 150ms;\n --tw-enter-opacity: initial;\n --tw-enter-scale: initial;\n --tw-enter-rotate: initial;\n --tw-enter-translate-x: initial;\n --tw-enter-translate-y: initial;\n}\n.data-\\[state\\=closed\\]\\:animate-out[data-state=closed] {\n animation-name: exit;\n animation-duration: 150ms;\n --tw-exit-opacity: initial;\n --tw-exit-scale: initial;\n --tw-exit-rotate: initial;\n --tw-exit-translate-x: initial;\n --tw-exit-translate-y: initial;\n}\n.data-\\[state\\=closed\\]\\:fade-out-0[data-state=closed] {\n --tw-exit-opacity: 0;\n}\n.data-\\[state\\=open\\]\\:fade-in-0[data-state=open] {\n --tw-enter-opacity: 0;\n}\n.data-\\[state\\=closed\\]\\:zoom-out-95[data-state=closed] {\n --tw-exit-scale: .95;\n}\n.data-\\[state\\=open\\]\\:zoom-in-95[data-state=open] {\n --tw-enter-scale: .95;\n}\n.data-\\[side\\=bottom\\]\\:slide-in-from-top-2[data-side=bottom] {\n --tw-enter-translate-y: -0.5rem;\n}\n.data-\\[side\\=left\\]\\:slide-in-from-right-2[data-side=left] {\n --tw-enter-translate-x: 0.5rem;\n}\n.data-\\[side\\=right\\]\\:slide-in-from-left-2[data-side=right] {\n --tw-enter-translate-x: -0.5rem;\n}\n.data-\\[side\\=top\\]\\:slide-in-from-bottom-2[data-side=top] {\n --tw-enter-translate-y: 0.5rem;\n}\n.data-\\[state\\=closed\\]\\:slide-out-to-left-1\\/2[data-state=closed] {\n --tw-exit-translate-x: -50%;\n}\n.data-\\[state\\=closed\\]\\:slide-out-to-top-\\[48\\%\\][data-state=closed] {\n --tw-exit-translate-y: -48%;\n}\n.data-\\[state\\=open\\]\\:slide-in-from-left-1\\/2[data-state=open] {\n --tw-enter-translate-x: -50%;\n}\n.data-\\[state\\=open\\]\\:slide-in-from-top-\\[48\\%\\][data-state=open] {\n --tw-enter-translate-y: -48%;\n}\n:is([data-mode=\"dark\"] .dark\\:border-white) {\n --tw-border-opacity: 1;\n border-color: rgb(255 255 255 / var(--tw-border-opacity));\n}\n@media (min-width: 640px) {\n\n .sm\\:mt-0 {\n margin-top: 0px;\n }\n\n .sm\\:block {\n display: block;\n }\n\n .sm\\:flex-row {\n flex-direction: row;\n }\n\n .sm\\:justify-end {\n justify-content: flex-end;\n }\n\n .sm\\:space-x-2 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-x-reverse: 0;\n margin-right: calc(0.5rem * var(--tw-space-x-reverse));\n margin-left: calc(0.5rem * calc(1 - var(--tw-space-x-reverse)));\n }\n\n .sm\\:space-x-4 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-x-reverse: 0;\n margin-right: calc(1rem * var(--tw-space-x-reverse));\n margin-left: calc(1rem * calc(1 - var(--tw-space-x-reverse)));\n }\n\n .sm\\:space-y-0 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(0px * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(0px * var(--tw-space-y-reverse));\n }\n\n .sm\\:rounded-lg {\n border-radius: var(--radius);\n }\n\n .sm\\:p-0 {\n padding: 0px;\n }\n\n .sm\\:text-left {\n text-align: left;\n }\n}\n@media (min-width: 768px) {\n\n .md\\:w-full {\n width: 100%;\n }\n}\n.\\[\\&\\:has\\(\\[aria-selected\\]\\)\\]\\:bg-accent:has([aria-selected]) {\n background-color: hsl(var(--accent));\n}\n.first\\:\\[\\&\\:has\\(\\[aria-selected\\]\\)\\]\\:rounded-l-md:has([aria-selected]):first-child {\n border-top-left-radius: calc(var(--radius) - 2px);\n border-bottom-left-radius: calc(var(--radius) - 2px);\n}\n.last\\:\\[\\&\\:has\\(\\[aria-selected\\]\\)\\]\\:rounded-r-md:has([aria-selected]):last-child {\n border-top-right-radius: calc(var(--radius) - 2px);\n border-bottom-right-radius: calc(var(--radius) - 2px);\n}\n.\\[\\&\\[data-state\\=open\\]\\>svg\\]\\:rotate-180[data-state=open]>svg {\n --tw-rotate: 180deg;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.\\[\\&_\\[cmdk-group-heading\\]\\]\\:px-2 [cmdk-group-heading] {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n}\n.\\[\\&_\\[cmdk-group-heading\\]\\]\\:py-1\\.5 [cmdk-group-heading] {\n padding-top: 0.375rem;\n padding-bottom: 0.375rem;\n}\n.\\[\\&_\\[cmdk-group-heading\\]\\]\\:text-xs [cmdk-group-heading] {\n font-size: 0.75rem;\n line-height: 1rem;\n}\n.\\[\\&_\\[cmdk-group-heading\\]\\]\\:font-medium [cmdk-group-heading] {\n font-weight: 500;\n}\n.\\[\\&_\\[cmdk-group-heading\\]\\]\\:text-muted-foreground [cmdk-group-heading] {\n color: hsl(var(--muted-foreground));\n}\n.\\[\\&_\\[cmdk-group\\]\\:not\\(\\[hidden\\]\\)_\\~\\[cmdk-group\\]\\]\\:pt-0 [cmdk-group]:not([hidden]) ~[cmdk-group] {\n padding-top: 0px;\n}\n.\\[\\&_\\[cmdk-group\\]\\]\\:px-2 [cmdk-group] {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n}\n.\\[\\&_\\[cmdk-input-wrapper\\]_svg\\]\\:h-5 [cmdk-input-wrapper] svg {\n height: 1.25rem;\n}\n.\\[\\&_\\[cmdk-input-wrapper\\]_svg\\]\\:w-5 [cmdk-input-wrapper] svg {\n width: 1.25rem;\n}\n.\\[\\&_\\[cmdk-input\\]\\]\\:h-12 [cmdk-input] {\n height: 3rem;\n}\n.\\[\\&_\\[cmdk-item\\]\\]\\:px-2 [cmdk-item] {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n}\n.\\[\\&_\\[cmdk-item\\]\\]\\:py-3 [cmdk-item] {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n}\n.\\[\\&_\\[cmdk-item\\]_svg\\]\\:h-5 [cmdk-item] svg {\n height: 1.25rem;\n}\n.\\[\\&_\\[cmdk-item\\]_svg\\]\\:w-5 [cmdk-item] svg {\n width: 1.25rem;\n}\n";
|
|
74108
|
+
const styleCss = "/*\n Need to explicitly set config path, otherwise it may fail to resolve when\n built from outside packages/ui.\n*/\n\n/*\n ! tailwindcss v3.3.5 | MIT License | https://tailwindcss.com\n*/\n\n/*\n1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)\n2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116)\n*/\n\n*,\n::before,\n::after {\n box-sizing: border-box; /* 1 */\n border-width: 0; /* 2 */\n border-style: solid; /* 2 */\n border-color: #e5e7eb; /* 2 */\n}\n\n::before,\n::after {\n --tw-content: '';\n}\n\n/*\n1. Use a consistent sensible line-height in all browsers.\n2. Prevent adjustments of font size after orientation changes in iOS.\n3. Use a more readable tab size.\n4. Use the user's configured `sans` font-family by default.\n5. Use the user's configured `sans` font-feature-settings by default.\n6. Use the user's configured `sans` font-variation-settings by default.\n*/\n\nhtml {\n line-height: 1.5; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n -moz-tab-size: 4; /* 3 */\n -o-tab-size: 4;\n tab-size: 4; /* 3 */\n font-family: 'Roboto', sans-serif; /* 4 */\n font-feature-settings: normal; /* 5 */\n font-variation-settings: normal; /* 6 */\n}\n\n/*\n1. Remove the margin in all browsers.\n2. Inherit line-height from `html` so users can set them as a class directly on the `html` element.\n*/\n\nbody {\n margin: 0; /* 1 */\n line-height: inherit; /* 2 */\n}\n\n/*\n1. Add the correct height in Firefox.\n2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)\n3. Ensure horizontal rules are visible by default.\n*/\n\nhr {\n height: 0; /* 1 */\n color: inherit; /* 2 */\n border-top-width: 1px; /* 3 */\n}\n\n/*\nAdd the correct text decoration in Chrome, Edge, and Safari.\n*/\n\nabbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n}\n\n/*\nRemove the default font size and weight for headings.\n*/\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n font-size: inherit;\n font-weight: inherit;\n}\n\n/*\nReset links to optimize for opt-in styling instead of opt-out.\n*/\n\na {\n color: inherit;\n text-decoration: inherit;\n}\n\n/*\nAdd the correct font weight in Edge and Safari.\n*/\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/*\n1. Use the user's configured `mono` font family by default.\n2. Correct the odd `em` font sizing in all browsers.\n*/\n\ncode,\nkbd,\nsamp,\npre {\n font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/*\nAdd the correct font size in all browsers.\n*/\n\nsmall {\n font-size: 80%;\n}\n\n/*\nPrevent `sub` and `sup` elements from affecting the line height in all browsers.\n*/\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/*\n1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)\n2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)\n3. Remove gaps between table borders by default.\n*/\n\ntable {\n text-indent: 0; /* 1 */\n border-color: inherit; /* 2 */\n border-collapse: collapse; /* 3 */\n}\n\n/*\n1. Change the font styles in all browsers.\n2. Remove the margin in Firefox and Safari.\n3. Remove default padding in all browsers.\n*/\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-feature-settings: inherit; /* 1 */\n font-variation-settings: inherit; /* 1 */\n font-size: 100%; /* 1 */\n font-weight: inherit; /* 1 */\n line-height: inherit; /* 1 */\n color: inherit; /* 1 */\n margin: 0; /* 2 */\n padding: 0; /* 3 */\n}\n\n/*\nRemove the inheritance of text transform in Edge and Firefox.\n*/\n\nbutton,\nselect {\n text-transform: none;\n}\n\n/*\n1. Correct the inability to style clickable types in iOS and Safari.\n2. Remove default button styles.\n*/\n\nbutton,\n[type='button'],\n[type='reset'],\n[type='submit'] {\n -webkit-appearance: button; /* 1 */\n background-color: transparent; /* 2 */\n background-image: none; /* 2 */\n}\n\n/*\nUse the modern Firefox focus style for all focusable elements.\n*/\n\n:-moz-focusring {\n outline: auto;\n}\n\n/*\nRemove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737)\n*/\n\n:-moz-ui-invalid {\n box-shadow: none;\n}\n\n/*\nAdd the correct vertical alignment in Chrome and Firefox.\n*/\n\nprogress {\n vertical-align: baseline;\n}\n\n/*\nCorrect the cursor style of increment and decrement buttons in Safari.\n*/\n\n::-webkit-inner-spin-button,\n::-webkit-outer-spin-button {\n height: auto;\n}\n\n/*\n1. Correct the odd appearance in Chrome and Safari.\n2. Correct the outline style in Safari.\n*/\n\n[type='search'] {\n -webkit-appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/*\nRemove the inner padding in Chrome and Safari on macOS.\n*/\n\n::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/*\n1. Correct the inability to style clickable types in iOS and Safari.\n2. Change font properties to `inherit` in Safari.\n*/\n\n::-webkit-file-upload-button {\n -webkit-appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/*\nAdd the correct display in Chrome and Safari.\n*/\n\nsummary {\n display: list-item;\n}\n\n/*\nRemoves the default spacing and border for appropriate elements.\n*/\n\nblockquote,\ndl,\ndd,\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\nhr,\nfigure,\np,\npre {\n margin: 0;\n}\n\nfieldset {\n margin: 0;\n padding: 0;\n}\n\nlegend {\n padding: 0;\n}\n\nol,\nul,\nmenu {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n/*\nReset default styling for dialogs.\n*/\n\ndialog {\n padding: 0;\n}\n\n/*\nPrevent resizing textareas horizontally by default.\n*/\n\ntextarea {\n resize: vertical;\n}\n\n/*\n1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300)\n2. Set the default placeholder color to the user's configured gray 400 color.\n*/\n\ninput::-moz-placeholder, textarea::-moz-placeholder {\n opacity: 1; /* 1 */\n color: #9ca3af; /* 2 */\n}\n\ninput::placeholder,\ntextarea::placeholder {\n opacity: 1; /* 1 */\n color: #9ca3af; /* 2 */\n}\n\n/*\nSet the default cursor for buttons.\n*/\n\nbutton,\n[role=\"button\"] {\n cursor: pointer;\n}\n\n/*\nMake sure disabled buttons don't get the pointer cursor.\n*/\n\n:disabled {\n cursor: default;\n}\n\n/*\n1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14)\n2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210)\n This can trigger a poorly considered lint error in some tools but is included by design.\n*/\n\nimg,\nsvg,\nvideo,\ncanvas,\naudio,\niframe,\nembed,\nobject {\n display: block; /* 1 */\n vertical-align: middle; /* 2 */\n}\n\n/*\nConstrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14)\n*/\n\nimg,\nvideo {\n max-width: 100%;\n height: auto;\n}\n\n/* Make elements with the HTML hidden attribute stay hidden by default */\n\n[hidden] {\n display: none;\n}\n\n/* :host for use with Shadow DOM, copied from the TailwindCSS prelude */\n\n:host {\n --background: 0 0% 100%;\n --foreground: 222.2 84% 4.9%;\n\n --card: 0 0% 100%;\n --card-foreground: 222.2 84% 4.9%;\n\n --popover: 0 0% 100%;\n --popover-foreground: 222.2 84% 4.9%;\n\n --primary: 222.2 47.4% 11.2%;\n --primary-foreground: 210 40% 98%;\n\n --secondary: 210 40% 96.1%;\n --secondary-foreground: 222.2 47.4% 11.2%;\n\n --muted: 0 0% 57.3%;\n --muted-foreground: 215.4 16.3% 46.9%;\n\n --accent: 273 60% 51%;\n --accent-foreground: 110 10% 94%;\n\n --destructive: 0 84.2% 60.2%;\n --destructive-foreground: 210 40% 98%;\n\n --border: 214.3 31.8% 91.4%;\n --input: 214.3 31.8% 91.4%;\n --ring: 222.2 84% 4.9%;\n\n --radius: 0.5rem;\n }\n\n:root {\n --background: 110 10% 94%;\n --foreground: 222.2 84% 4.9%;\n\n --card: 0 0% 100%;\n --card-foreground: 222.2 84% 4.9%;\n\n --popover: 0 0% 100%;\n --popover-foreground: 222.2 84% 4.9%;\n\n --primary: 222.2 47.4% 11.2%;\n --primary-foreground: 210 40% 98%;\n\n --secondary: 210 40% 96.1%;\n --secondary-foreground: 222.2 47.4% 11.2%;\n\n --muted: 0 0% 57.3%;\n --muted-foreground: 215.4 16.3% 46.9%;\n\n --accent: 273 60% 51%;\n --accent-foreground: 110 10% 94%;\n\n --destructive: 0 84.2% 60.2%;\n --destructive-foreground: 210 40% 98%;\n\n --border: 214.3 31.8% 91.4%;\n --input: 212.7 9.1% 76.3%;\n --ring: 222.2 84% 4.9%;\n\n --radius: 0.5rem;\n }\n\n/* dark theme */\n\n*[data-mode=\"dark\"] {\n --background: 0 0% 4%;\n --foreground: 210 40% 98%;\n\n --card: 222.2 84% 4.9%;\n --card-foreground: 210 40% 98%;\n\n --popover: 222.2 84% 4.9%;\n --popover-foreground: 210 40% 98%;\n\n --primary: 210 40% 98%;\n --primary-foreground: 222.2 47.4% 11.2%;\n\n --secondary: 217.2 32.6% 17.5%;\n --secondary-foreground: 210 40% 98%;\n\n --muted: 178 23% 76%;\n --muted-foreground: 215 20.2% 65.1%;\n\n --accent: 159 60% 51%;\n --accent-foreground: 210 40% 98%;\n\n --destructive: 0 62.8% 30.6%;\n --destructive-foreground: 210 40% 98%;\n\n --border: 217.2 32.6% 17.5%;\n --input: 217.2 32.6% 17.5%;\n --ring: 212.7 26.8% 83.9%;\n }\n\n* {\n border-color: hsl(var(--border));\n}\n\nbody {\n background-color: hsl(var(--background));\n color: hsl(var(--foreground));\n}\n\n*, ::before, ::after {\n --tw-border-spacing-x: 0;\n --tw-border-spacing-y: 0;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-rotate: 0;\n --tw-skew-x: 0;\n --tw-skew-y: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-pan-x: ;\n --tw-pan-y: ;\n --tw-pinch-zoom: ;\n --tw-scroll-snap-strictness: proximity;\n --tw-gradient-from-position: ;\n --tw-gradient-via-position: ;\n --tw-gradient-to-position: ;\n --tw-ordinal: ;\n --tw-slashed-zero: ;\n --tw-numeric-figure: ;\n --tw-numeric-spacing: ;\n --tw-numeric-fraction: ;\n --tw-ring-inset: ;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: rgb(59 130 246 / 0.5);\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n --tw-blur: ;\n --tw-brightness: ;\n --tw-contrast: ;\n --tw-grayscale: ;\n --tw-hue-rotate: ;\n --tw-invert: ;\n --tw-saturate: ;\n --tw-sepia: ;\n --tw-drop-shadow: ;\n --tw-backdrop-blur: ;\n --tw-backdrop-brightness: ;\n --tw-backdrop-contrast: ;\n --tw-backdrop-grayscale: ;\n --tw-backdrop-hue-rotate: ;\n --tw-backdrop-invert: ;\n --tw-backdrop-opacity: ;\n --tw-backdrop-saturate: ;\n --tw-backdrop-sepia: ;\n}\n\n::backdrop {\n --tw-border-spacing-x: 0;\n --tw-border-spacing-y: 0;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-rotate: 0;\n --tw-skew-x: 0;\n --tw-skew-y: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-pan-x: ;\n --tw-pan-y: ;\n --tw-pinch-zoom: ;\n --tw-scroll-snap-strictness: proximity;\n --tw-gradient-from-position: ;\n --tw-gradient-via-position: ;\n --tw-gradient-to-position: ;\n --tw-ordinal: ;\n --tw-slashed-zero: ;\n --tw-numeric-figure: ;\n --tw-numeric-spacing: ;\n --tw-numeric-fraction: ;\n --tw-ring-inset: ;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: rgb(59 130 246 / 0.5);\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n --tw-blur: ;\n --tw-brightness: ;\n --tw-contrast: ;\n --tw-grayscale: ;\n --tw-hue-rotate: ;\n --tw-invert: ;\n --tw-saturate: ;\n --tw-sepia: ;\n --tw-drop-shadow: ;\n --tw-backdrop-blur: ;\n --tw-backdrop-brightness: ;\n --tw-backdrop-contrast: ;\n --tw-backdrop-grayscale: ;\n --tw-backdrop-hue-rotate: ;\n --tw-backdrop-invert: ;\n --tw-backdrop-opacity: ;\n --tw-backdrop-saturate: ;\n --tw-backdrop-sepia: ;\n}\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n}\n.pointer-events-none {\n pointer-events: none;\n}\n.invisible {\n visibility: hidden;\n}\n.static {\n position: static;\n}\n.fixed {\n position: fixed;\n}\n.absolute {\n position: absolute;\n}\n.relative {\n position: relative;\n}\n.sticky {\n position: sticky;\n}\n.inset-0 {\n inset: 0px;\n}\n.inset-y-0 {\n top: 0px;\n bottom: 0px;\n}\n.-left-2 {\n left: -0.5rem;\n}\n.-right-\\[10px\\] {\n right: -10px;\n}\n.-top-\\[10px\\] {\n top: -10px;\n}\n.-top-\\[4px\\] {\n top: -4px;\n}\n.bottom-0 {\n bottom: 0px;\n}\n.left-0 {\n left: 0px;\n}\n.left-1 {\n left: 0.25rem;\n}\n.left-2 {\n left: 0.5rem;\n}\n.left-\\[50\\%\\] {\n left: 50%;\n}\n.right-0 {\n right: 0px;\n}\n.right-1 {\n right: 0.25rem;\n}\n.right-4 {\n right: 1rem;\n}\n.right-\\[16px\\] {\n right: 16px;\n}\n.top-0 {\n top: 0px;\n}\n.top-1\\/2 {\n top: 50%;\n}\n.top-4 {\n top: 1rem;\n}\n.top-\\[50\\%\\] {\n top: 50%;\n}\n.z-50 {\n z-index: 50;\n}\n.z-\\[1\\] {\n z-index: 1;\n}\n.z-\\[5\\] {\n z-index: 5;\n}\n.z-overlay {\n z-index: 4;\n}\n.m-4 {\n margin: 1rem;\n}\n.-mx-1 {\n margin-left: -0.25rem;\n margin-right: -0.25rem;\n}\n.-my-2 {\n margin-top: -0.5rem;\n margin-bottom: -0.5rem;\n}\n.-my-\\[100px\\] {\n margin-top: -100px;\n margin-bottom: -100px;\n}\n.mx-2 {\n margin-left: 0.5rem;\n margin-right: 0.5rem;\n}\n.my-1 {\n margin-top: 0.25rem;\n margin-bottom: 0.25rem;\n}\n.mb-4 {\n margin-bottom: 1rem;\n}\n.ml-0 {\n margin-left: 0px;\n}\n.ml-2 {\n margin-left: 0.5rem;\n}\n.ml-4 {\n margin-left: 1rem;\n}\n.ml-\\[20px\\] {\n margin-left: 20px;\n}\n.ml-auto {\n margin-left: auto;\n}\n.mr-2 {\n margin-right: 0.5rem;\n}\n.mt-2 {\n margin-top: 0.5rem;\n}\n.block {\n display: block;\n}\n.inline {\n display: inline;\n}\n.flex {\n display: flex;\n}\n.inline-flex {\n display: inline-flex;\n}\n.table {\n display: table;\n}\n.grid {\n display: grid;\n}\n.hidden {\n display: none;\n}\n.aspect-square {\n aspect-ratio: 1 / 1;\n}\n.h-10 {\n height: 2.5rem;\n}\n.h-11 {\n height: 2.75rem;\n}\n.h-2 {\n height: 0.5rem;\n}\n.h-2\\.5 {\n height: 0.625rem;\n}\n.h-3 {\n height: 0.75rem;\n}\n.h-3\\.5 {\n height: 0.875rem;\n}\n.h-4 {\n height: 1rem;\n}\n.h-7 {\n height: 1.75rem;\n}\n.h-9 {\n height: 2.25rem;\n}\n.h-\\[100\\] {\n height: 100;\n}\n.h-\\[12px\\] {\n height: 12px;\n}\n.h-\\[14px\\] {\n height: 14px;\n}\n.h-\\[18px\\] {\n height: 18px;\n}\n.h-\\[1px\\] {\n height: 1px;\n}\n.h-\\[20px\\] {\n height: 20px;\n}\n.h-\\[22px\\] {\n height: 22px;\n}\n.h-\\[24px\\] {\n height: 24px;\n}\n.h-\\[32px\\] {\n height: 32px;\n}\n.h-\\[50px\\] {\n height: 50px;\n}\n.h-\\[75px\\] {\n height: 75px;\n}\n.h-\\[9px\\] {\n height: 9px;\n}\n.h-\\[var\\(--radix-select-trigger-height\\)\\] {\n height: var(--radix-select-trigger-height);\n}\n.h-full {\n height: 100%;\n}\n.h-px {\n height: 1px;\n}\n.h-screen {\n height: 100vh;\n}\n.max-h-\\[300px\\] {\n max-height: 300px;\n}\n.min-h-\\[200px\\] {\n min-height: 200px;\n}\n.min-h-\\[300px\\] {\n min-height: 300px;\n}\n.min-h-screen {\n min-height: 100vh;\n}\n.w-0 {\n width: 0px;\n}\n.w-1\\/3 {\n width: 33.333333%;\n}\n.w-10 {\n width: 2.5rem;\n}\n.w-2 {\n width: 0.5rem;\n}\n.w-2\\.5 {\n width: 0.625rem;\n}\n.w-3 {\n width: 0.75rem;\n}\n.w-3\\.5 {\n width: 0.875rem;\n}\n.w-4 {\n width: 1rem;\n}\n.w-5 {\n width: 1.25rem;\n}\n.w-7 {\n width: 1.75rem;\n}\n.w-72 {\n width: 18rem;\n}\n.w-9 {\n width: 2.25rem;\n}\n.w-\\[12px\\] {\n width: 12px;\n}\n.w-\\[14px\\] {\n width: 14px;\n}\n.w-\\[1px\\] {\n width: 1px;\n}\n.w-\\[20px\\] {\n width: 20px;\n}\n.w-\\[24px\\] {\n width: 24px;\n}\n.w-\\[300px\\] {\n width: 300px;\n}\n.w-\\[32px\\] {\n width: 32px;\n}\n.w-\\[44px\\] {\n width: 44px;\n}\n.w-\\[9px\\] {\n width: 9px;\n}\n.w-fit {\n width: -moz-fit-content;\n width: fit-content;\n}\n.w-full {\n width: 100%;\n}\n.w-screen {\n width: 100vw;\n}\n.min-w-0 {\n min-width: 0px;\n}\n.min-w-\\[320px\\] {\n min-width: 320px;\n}\n.min-w-\\[500px\\] {\n min-width: 500px;\n}\n.min-w-\\[8rem\\] {\n min-width: 8rem;\n}\n.min-w-\\[var\\(--radix-select-trigger-width\\)\\] {\n min-width: var(--radix-select-trigger-width);\n}\n.max-w-4xl {\n max-width: 56rem;\n}\n.max-w-\\[1000px\\] {\n max-width: 1000px;\n}\n.max-w-\\[10vw\\] {\n max-width: 10vw;\n}\n.max-w-\\[300px\\] {\n max-width: 300px;\n}\n.max-w-\\[90vw\\] {\n max-width: 90vw;\n}\n.max-w-lg {\n max-width: 32rem;\n}\n.max-w-xl {\n max-width: 36rem;\n}\n.flex-1 {\n flex: 1 1 0%;\n}\n.flex-auto {\n flex: 1 1 auto;\n}\n.flex-shrink-0 {\n flex-shrink: 0;\n}\n.shrink-0 {\n flex-shrink: 0;\n}\n.flex-grow {\n flex-grow: 1;\n}\n.border-collapse {\n border-collapse: collapse;\n}\n.-translate-y-1\\/2 {\n --tw-translate-y: -50%;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.translate-x-\\[-50\\%\\] {\n --tw-translate-x: -50%;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.translate-y-\\[-50\\%\\] {\n --tw-translate-y: -50%;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.-rotate-90 {\n --tw-rotate: -90deg;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.rotate-90 {\n --tw-rotate: 90deg;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.rotate-\\[-90deg\\] {\n --tw-rotate: -90deg;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.rotate-\\[90deg\\] {\n --tw-rotate: 90deg;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.transform {\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.cursor-col-resize {\n cursor: col-resize;\n}\n.cursor-default {\n cursor: default;\n}\n.cursor-grab {\n cursor: grab;\n}\n.cursor-pointer {\n cursor: pointer;\n}\n.cursor-se-resize {\n cursor: se-resize;\n}\n.touch-none {\n touch-action: none;\n}\n.select-none {\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n}\n.resize-none {\n resize: none;\n}\n.resize {\n resize: both;\n}\n.list-decimal {\n list-style-type: decimal;\n}\n.list-disc {\n list-style-type: disc;\n}\n.grid-cols-\\[min-content_1fr\\] {\n grid-template-columns: min-content 1fr;\n}\n.grid-rows-\\[1fr\\2c _min-content\\] {\n grid-template-rows: 1fr min-content;\n}\n.flex-row {\n flex-direction: row;\n}\n.flex-col {\n flex-direction: column;\n}\n.flex-col-reverse {\n flex-direction: column-reverse;\n}\n.items-start {\n align-items: flex-start;\n}\n.items-center {\n align-items: center;\n}\n.justify-start {\n justify-content: flex-start;\n}\n.justify-end {\n justify-content: flex-end;\n}\n.justify-center {\n justify-content: center;\n}\n.justify-between {\n justify-content: space-between;\n}\n.gap-1 {\n gap: 0.25rem;\n}\n.gap-2 {\n gap: 0.5rem;\n}\n.gap-3 {\n gap: 0.75rem;\n}\n.gap-4 {\n gap: 1rem;\n}\n.gap-5 {\n gap: 1.25rem;\n}\n.gap-\\[0\\.5em\\] {\n gap: 0.5em;\n}\n.gap-\\[36px\\] {\n gap: 36px;\n}\n.gap-x-4 {\n -moz-column-gap: 1rem;\n column-gap: 1rem;\n}\n.gap-y-1 {\n row-gap: 0.25rem;\n}\n.gap-y-2 {\n row-gap: 0.5rem;\n}\n.gap-y-4 {\n row-gap: 1rem;\n}\n.gap-y-8 {\n row-gap: 2rem;\n}\n.space-x-1 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-x-reverse: 0;\n margin-right: calc(0.25rem * var(--tw-space-x-reverse));\n margin-left: calc(0.25rem * calc(1 - var(--tw-space-x-reverse)));\n}\n.space-y-1 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(0.25rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(0.25rem * var(--tw-space-y-reverse));\n}\n.space-y-1\\.5 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(0.375rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(0.375rem * var(--tw-space-y-reverse));\n}\n.space-y-2 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(0.5rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(0.5rem * var(--tw-space-y-reverse));\n}\n.space-y-4 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(1rem * var(--tw-space-y-reverse));\n}\n.overflow-auto {\n overflow: auto;\n}\n.overflow-hidden {\n overflow: hidden;\n}\n.overflow-clip {\n overflow: clip;\n}\n.overflow-scroll {\n overflow: scroll;\n}\n.overflow-y-auto {\n overflow-y: auto;\n}\n.overflow-x-hidden {\n overflow-x: hidden;\n}\n.overflow-y-scroll {\n overflow-y: scroll;\n}\n.truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.whitespace-nowrap {\n white-space: nowrap;\n}\n.rounded {\n border-radius: 0.25rem;\n}\n.rounded-\\[inherit\\] {\n border-radius: inherit;\n}\n.rounded-full {\n border-radius: 9999px;\n}\n.rounded-lg {\n border-radius: var(--radius);\n}\n.rounded-md {\n border-radius: calc(var(--radius) - 2px);\n}\n.rounded-sm {\n border-radius: calc(var(--radius) - 4px);\n}\n.rounded-b-none {\n border-bottom-right-radius: 0px;\n border-bottom-left-radius: 0px;\n}\n.rounded-b-sm {\n border-bottom-right-radius: calc(var(--radius) - 4px);\n border-bottom-left-radius: calc(var(--radius) - 4px);\n}\n.rounded-t-none {\n border-top-left-radius: 0px;\n border-top-right-radius: 0px;\n}\n.border {\n border-width: 1px;\n}\n.border-2 {\n border-width: 2px;\n}\n.border-\\[2px\\] {\n border-width: 2px;\n}\n.border-x {\n border-left-width: 1px;\n border-right-width: 1px;\n}\n.border-y {\n border-top-width: 1px;\n border-bottom-width: 1px;\n}\n.border-b {\n border-bottom-width: 1px;\n}\n.border-b-0 {\n border-bottom-width: 0px;\n}\n.border-b-2 {\n border-bottom-width: 2px;\n}\n.border-l {\n border-left-width: 1px;\n}\n.border-l-2 {\n border-left-width: 2px;\n}\n.border-r {\n border-right-width: 1px;\n}\n.border-t {\n border-top-width: 1px;\n}\n.border-t-0 {\n border-top-width: 0px;\n}\n.border-accent {\n border-color: hsl(var(--accent));\n}\n.border-border {\n border-color: hsl(var(--border));\n}\n.border-gray-400 {\n --tw-border-opacity: 1;\n border-color: rgb(156 163 175 / var(--tw-border-opacity));\n}\n.border-input {\n border-color: hsl(var(--input));\n}\n.border-primary {\n border-color: hsl(var(--primary));\n}\n.border-transparent {\n border-color: transparent;\n}\n.border-l-transparent {\n border-left-color: transparent;\n}\n.border-t-transparent {\n border-top-color: transparent;\n}\n.bg-accent {\n background-color: hsl(var(--accent));\n}\n.bg-background {\n background-color: hsl(var(--background));\n}\n.bg-background\\/80 {\n background-color: hsl(var(--background) / 0.8);\n}\n.bg-border {\n background-color: hsl(var(--border));\n}\n.bg-card {\n background-color: hsl(var(--card));\n}\n.bg-card-foreground {\n background-color: hsl(var(--card-foreground));\n}\n.bg-destructive {\n background-color: hsl(var(--destructive));\n}\n.bg-gray-300 {\n --tw-bg-opacity: 1;\n background-color: rgb(209 213 219 / var(--tw-bg-opacity));\n}\n.bg-gray-500 {\n --tw-bg-opacity: 1;\n background-color: rgb(107 114 128 / var(--tw-bg-opacity));\n}\n.bg-muted {\n background-color: hsl(var(--muted));\n}\n.bg-popover {\n background-color: hsl(var(--popover));\n}\n.bg-primary {\n background-color: hsl(var(--primary));\n}\n.bg-red-500 {\n --tw-bg-opacity: 1;\n background-color: rgb(239 68 68 / var(--tw-bg-opacity));\n}\n.bg-secondary {\n background-color: hsl(var(--secondary));\n}\n.bg-transparent {\n background-color: transparent;\n}\n.bg-white {\n --tw-bg-opacity: 1;\n background-color: rgb(255 255 255 / var(--tw-bg-opacity));\n}\n.bg-gradient-to-b {\n background-image: linear-gradient(to bottom, var(--tw-gradient-stops));\n}\n.bg-gradient-to-br {\n background-image: linear-gradient(to bottom right, var(--tw-gradient-stops));\n}\n.from-background\\/90 {\n --tw-gradient-from: hsl(var(--background) / 0.9) var(--tw-gradient-from-position);\n --tw-gradient-to: hsl(var(--background) / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\n}\n.from-card {\n --tw-gradient-from: hsl(var(--card)) var(--tw-gradient-from-position);\n --tw-gradient-to: hsl(var(--card) / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\n}\n.from-transparent {\n --tw-gradient-from: transparent var(--tw-gradient-from-position);\n --tw-gradient-to: rgb(0 0 0 / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\n}\n.from-40\\% {\n --tw-gradient-from-position: 40%;\n}\n.from-50\\% {\n --tw-gradient-from-position: 50%;\n}\n.to-background {\n --tw-gradient-to: hsl(var(--background)) var(--tw-gradient-to-position);\n}\n.fill-current {\n fill: currentColor;\n}\n.fill-white {\n fill: #fff;\n}\n.stroke-\\[2px\\] {\n stroke-width: 2px;\n}\n.stroke-\\[3px\\] {\n stroke-width: 3px;\n}\n.object-contain {\n -o-object-fit: contain;\n object-fit: contain;\n}\n.p-0 {\n padding: 0px;\n}\n.p-1 {\n padding: 0.25rem;\n}\n.p-10 {\n padding: 2.5rem;\n}\n.p-2 {\n padding: 0.5rem;\n}\n.p-3 {\n padding: 0.75rem;\n}\n.p-4 {\n padding: 1rem;\n}\n.p-6 {\n padding: 1.5rem;\n}\n.p-\\[1px\\] {\n padding: 1px;\n}\n.px-1 {\n padding-left: 0.25rem;\n padding-right: 0.25rem;\n}\n.px-2 {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n}\n.px-2\\.5 {\n padding-left: 0.625rem;\n padding-right: 0.625rem;\n}\n.px-3 {\n padding-left: 0.75rem;\n padding-right: 0.75rem;\n}\n.px-4 {\n padding-left: 1rem;\n padding-right: 1rem;\n}\n.px-5 {\n padding-left: 1.25rem;\n padding-right: 1.25rem;\n}\n.px-8 {\n padding-left: 2rem;\n padding-right: 2rem;\n}\n.px-\\[24px\\] {\n padding-left: 24px;\n padding-right: 24px;\n}\n.px-\\[2px\\] {\n padding-left: 2px;\n padding-right: 2px;\n}\n.py-1 {\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n}\n.py-1\\.5 {\n padding-top: 0.375rem;\n padding-bottom: 0.375rem;\n}\n.py-2 {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n}\n.py-3 {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n}\n.py-4 {\n padding-top: 1rem;\n padding-bottom: 1rem;\n}\n.py-6 {\n padding-top: 1.5rem;\n padding-bottom: 1.5rem;\n}\n.py-7 {\n padding-top: 1.75rem;\n padding-bottom: 1.75rem;\n}\n.py-\\[2px\\] {\n padding-top: 2px;\n padding-bottom: 2px;\n}\n.pb-0 {\n padding-bottom: 0px;\n}\n.pb-20 {\n padding-bottom: 5rem;\n}\n.pb-4 {\n padding-bottom: 1rem;\n}\n.pl-0 {\n padding-left: 0px;\n}\n.pl-6 {\n padding-left: 1.5rem;\n}\n.pl-8 {\n padding-left: 2rem;\n}\n.pl-\\[300px\\] {\n padding-left: 300px;\n}\n.pr-2 {\n padding-right: 0.5rem;\n}\n.pt-0 {\n padding-top: 0px;\n}\n.pt-1 {\n padding-top: 0.25rem;\n}\n.pt-2 {\n padding-top: 0.5rem;\n}\n.pt-4 {\n padding-top: 1rem;\n}\n.text-left {\n text-align: left;\n}\n.text-center {\n text-align: center;\n}\n.text-start {\n text-align: start;\n}\n.font-sans {\n font-family: 'Roboto', sans-serif;\n}\n.font-serif {\n font-family: 'Space Mono', monospace;\n}\n.text-2xl {\n font-size: 1.5rem;\n line-height: 2rem;\n}\n.text-3xl {\n font-size: 1.875rem;\n line-height: 2.25rem;\n}\n.text-4xl {\n font-size: 2.25rem;\n line-height: 2.5rem;\n}\n.text-\\[0\\.8rem\\] {\n font-size: 0.8rem;\n}\n.text-\\[12px\\] {\n font-size: 12px;\n}\n.text-lg {\n font-size: 1.125rem;\n line-height: 1.75rem;\n}\n.text-sm {\n font-size: 0.875rem;\n line-height: 1.25rem;\n}\n.text-xl {\n font-size: 1.25rem;\n line-height: 1.75rem;\n}\n.text-xs {\n font-size: 0.75rem;\n line-height: 1rem;\n}\n.font-\\[12px\\] {\n font-weight: 12px;\n}\n.font-\\[400\\] {\n font-weight: 400;\n}\n.font-\\[500\\] {\n font-weight: 500;\n}\n.font-\\[550\\] {\n font-weight: 550;\n}\n.font-bold {\n font-weight: 700;\n}\n.font-extrabold {\n font-weight: 800;\n}\n.font-medium {\n font-weight: 500;\n}\n.font-normal {\n font-weight: 400;\n}\n.font-semibold {\n font-weight: 600;\n}\n.uppercase {\n text-transform: uppercase;\n}\n.italic {\n font-style: italic;\n}\n.leading-4 {\n line-height: 1rem;\n}\n.leading-none {\n line-height: 1;\n}\n.tracking-\\[0\\.04em\\] {\n letter-spacing: 0.04em;\n}\n.tracking-tight {\n letter-spacing: -0.025em;\n}\n.tracking-wider {\n letter-spacing: 0.05em;\n}\n.tracking-widest {\n letter-spacing: 0.1em;\n}\n.text-accent {\n color: hsl(var(--accent));\n}\n.text-accent-foreground {\n color: hsl(var(--accent-foreground));\n}\n.text-background {\n color: hsl(var(--background));\n}\n.text-card-foreground {\n color: hsl(var(--card-foreground));\n}\n.text-current {\n color: currentColor;\n}\n.text-destructive {\n color: hsl(var(--destructive));\n}\n.text-destructive-foreground {\n color: hsl(var(--destructive-foreground));\n}\n.text-foreground {\n color: hsl(var(--foreground));\n}\n.text-muted {\n color: hsl(var(--muted));\n}\n.text-muted-foreground {\n color: hsl(var(--muted-foreground));\n}\n.text-popover-foreground {\n color: hsl(var(--popover-foreground));\n}\n.text-primary {\n color: hsl(var(--primary));\n}\n.text-primary-foreground {\n color: hsl(var(--primary-foreground));\n}\n.text-secondary-foreground {\n color: hsl(var(--secondary-foreground));\n}\n.text-white {\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity));\n}\n.underline {\n text-decoration-line: underline;\n}\n.line-through {\n text-decoration-line: line-through;\n}\n.underline-offset-4 {\n text-underline-offset: 4px;\n}\n.antialiased {\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n.opacity-0 {\n opacity: 0;\n}\n.opacity-100 {\n opacity: 1;\n}\n.opacity-50 {\n opacity: 0.5;\n}\n.opacity-60 {\n opacity: 0.6;\n}\n.opacity-70 {\n opacity: 0.7;\n}\n.opacity-75 {\n opacity: 0.75;\n}\n.mix-blend-difference {\n mix-blend-mode: difference;\n}\n.shadow {\n --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);\n --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.shadow-lg {\n --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);\n --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.shadow-md {\n --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);\n --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.shadow-sm {\n --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.outline-none {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n.outline {\n outline-style: solid;\n}\n.ring-0 {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n.ring-offset-background {\n --tw-ring-offset-color: hsl(var(--background));\n}\n.drop-shadow-2xl {\n --tw-drop-shadow: drop-shadow(0 25px 25px rgb(0 0 0 / 0.15));\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n.drop-shadow-\\[0px_0px_12px_hsl\\(var\\(--accent\\)\\)\\] {\n --tw-drop-shadow: drop-shadow(0px 0px 12px hsl(var(--accent)));\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n.filter {\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n.backdrop-blur-lg {\n --tw-backdrop-blur: blur(16px);\n -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n}\n.backdrop-blur-sm {\n --tw-backdrop-blur: blur(4px);\n -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n}\n.transition-all {\n transition-property: all;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.transition-colors {\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.transition-opacity {\n transition-property: opacity;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.transition-transform {\n transition-property: transform;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.duration-150 {\n transition-duration: 150ms;\n}\n.duration-200 {\n transition-duration: 200ms;\n}\n.ease-in-out {\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n}\n@keyframes enter {\n\n from {\n opacity: var(--tw-enter-opacity, 1);\n transform: translate3d(var(--tw-enter-translate-x, 0), var(--tw-enter-translate-y, 0), 0) scale3d(var(--tw-enter-scale, 1), var(--tw-enter-scale, 1), var(--tw-enter-scale, 1)) rotate(var(--tw-enter-rotate, 0));\n }\n}\n@keyframes exit {\n\n to {\n opacity: var(--tw-exit-opacity, 1);\n transform: translate3d(var(--tw-exit-translate-x, 0), var(--tw-exit-translate-y, 0), 0) scale3d(var(--tw-exit-scale, 1), var(--tw-exit-scale, 1), var(--tw-exit-scale, 1)) rotate(var(--tw-exit-rotate, 0));\n }\n}\n.animate-in {\n animation-name: enter;\n animation-duration: 150ms;\n --tw-enter-opacity: initial;\n --tw-enter-scale: initial;\n --tw-enter-rotate: initial;\n --tw-enter-translate-x: initial;\n --tw-enter-translate-y: initial;\n}\n.fade-in-0 {\n --tw-enter-opacity: 0;\n}\n.zoom-in-95 {\n --tw-enter-scale: .95;\n}\n.duration-150 {\n animation-duration: 150ms;\n}\n.duration-200 {\n animation-duration: 200ms;\n}\n.ease-in-out {\n animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n}\n.file\\:border-0::file-selector-button {\n border-width: 0px;\n}\n.file\\:bg-transparent::file-selector-button {\n background-color: transparent;\n}\n.file\\:text-sm::file-selector-button {\n font-size: 0.875rem;\n line-height: 1.25rem;\n}\n.file\\:font-medium::file-selector-button {\n font-weight: 500;\n}\n.placeholder\\:text-muted-foreground::-moz-placeholder {\n color: hsl(var(--muted-foreground));\n}\n.placeholder\\:text-muted-foreground::placeholder {\n color: hsl(var(--muted-foreground));\n}\n.focus-within\\:relative:focus-within {\n position: relative;\n}\n.hover\\:w-\\[2px\\]:hover {\n width: 2px;\n}\n.hover\\:w-\\[3px\\]:hover {\n width: 3px;\n}\n.hover\\:cursor-pointer:hover {\n cursor: pointer;\n}\n.hover\\:rounded-lg:hover {\n border-radius: var(--radius);\n}\n.hover\\:bg-accent:hover {\n background-color: hsl(var(--accent));\n}\n.hover\\:bg-border:hover {\n background-color: hsl(var(--border));\n}\n.hover\\:bg-destructive\\/90:hover {\n background-color: hsl(var(--destructive) / 0.9);\n}\n.hover\\:bg-muted:hover {\n background-color: hsl(var(--muted));\n}\n.hover\\:bg-primary:hover {\n background-color: hsl(var(--primary));\n}\n.hover\\:bg-primary\\/90:hover {\n background-color: hsl(var(--primary) / 0.9);\n}\n.hover\\:bg-red-700:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(185 28 28 / var(--tw-bg-opacity));\n}\n.hover\\:bg-secondary\\/80:hover {\n background-color: hsl(var(--secondary) / 0.8);\n}\n.hover\\:text-accent-foreground:hover {\n color: hsl(var(--accent-foreground));\n}\n.hover\\:text-muted-foreground:hover {\n color: hsl(var(--muted-foreground));\n}\n.hover\\:text-primary-foreground:hover {\n color: hsl(var(--primary-foreground));\n}\n.hover\\:text-white:hover {\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity));\n}\n.hover\\:underline:hover {\n text-decoration-line: underline;\n}\n.hover\\:opacity-100:hover {\n opacity: 1;\n}\n.focus\\:bg-accent:focus {\n background-color: hsl(var(--accent));\n}\n.focus\\:bg-primary:focus {\n background-color: hsl(var(--primary));\n}\n.focus\\:text-accent-foreground:focus {\n color: hsl(var(--accent-foreground));\n}\n.focus\\:text-primary-foreground:focus {\n color: hsl(var(--primary-foreground));\n}\n.focus\\:outline-none:focus {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n.focus\\:ring-2:focus {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n.focus\\:ring-ring:focus {\n --tw-ring-color: hsl(var(--ring));\n}\n.focus\\:ring-offset-2:focus {\n --tw-ring-offset-width: 2px;\n}\n.focus-visible\\:outline-none:focus-visible {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n.focus-visible\\:outline-accent:focus-visible {\n outline-color: hsl(var(--accent));\n}\n.focus-visible\\:ring-2:focus-visible {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n.focus-visible\\:ring-ring:focus-visible {\n --tw-ring-color: hsl(var(--ring));\n}\n.focus-visible\\:ring-offset-2:focus-visible {\n --tw-ring-offset-width: 2px;\n}\n.focus-visible\\:ring-offset-background:focus-visible {\n --tw-ring-offset-color: hsl(var(--background));\n}\n.disabled\\:pointer-events-none:disabled {\n pointer-events: none;\n}\n.disabled\\:cursor-not-allowed:disabled {\n cursor: not-allowed;\n}\n.disabled\\:text-background:disabled {\n color: hsl(var(--background));\n}\n.disabled\\:opacity-50:disabled {\n opacity: 0.5;\n}\n.peer:disabled ~ .peer-disabled\\:cursor-not-allowed {\n cursor: not-allowed;\n}\n.peer:disabled ~ .peer-disabled\\:opacity-70 {\n opacity: 0.7;\n}\n.aria-selected\\:bg-accent[aria-selected=\"true\"] {\n background-color: hsl(var(--accent));\n}\n.aria-selected\\:text-accent-foreground[aria-selected=\"true\"] {\n color: hsl(var(--accent-foreground));\n}\n.aria-selected\\:opacity-100[aria-selected=\"true\"] {\n opacity: 1;\n}\n.data-\\[disabled\\]\\:pointer-events-none[data-disabled] {\n pointer-events: none;\n}\n.data-\\[side\\=bottom\\]\\:translate-y-1[data-side=bottom] {\n --tw-translate-y: 0.25rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.data-\\[side\\=left\\]\\:-translate-x-1[data-side=left] {\n --tw-translate-x: -0.25rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.data-\\[side\\=right\\]\\:translate-x-1[data-side=right] {\n --tw-translate-x: 0.25rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.data-\\[side\\=top\\]\\:-translate-y-1[data-side=top] {\n --tw-translate-y: -0.25rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.data-\\[state\\=checked\\]\\:translate-x-5[data-state=checked] {\n --tw-translate-x: 1.25rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.data-\\[state\\=unchecked\\]\\:translate-x-0[data-state=unchecked] {\n --tw-translate-x: 0px;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n@keyframes accordion-up {\n\n from {\n height: var(--radix-accordion-content-height);\n }\n\n to {\n height: 0;\n }\n}\n.data-\\[state\\=closed\\]\\:animate-accordion-up[data-state=closed] {\n animation: accordion-up 0.2s ease-out;\n}\n@keyframes accordion-down {\n\n from {\n height: 0;\n }\n\n to {\n height: var(--radix-accordion-content-height);\n }\n}\n.data-\\[state\\=open\\]\\:animate-accordion-down[data-state=open] {\n animation: accordion-down 0.2s ease-out;\n}\n.data-\\[state\\=active\\]\\:bg-background[data-state=active] {\n background-color: hsl(var(--background));\n}\n.data-\\[state\\=checked\\]\\:bg-accent[data-state=checked] {\n background-color: hsl(var(--accent));\n}\n.data-\\[state\\=checked\\]\\:bg-primary[data-state=checked] {\n background-color: hsl(var(--primary));\n}\n.data-\\[state\\=on\\]\\:bg-accent[data-state=on] {\n background-color: hsl(var(--accent));\n}\n.data-\\[state\\=open\\]\\:bg-accent[data-state=open] {\n background-color: hsl(var(--accent));\n}\n.data-\\[state\\=unchecked\\]\\:bg-primary[data-state=unchecked] {\n background-color: hsl(var(--primary));\n}\n.data-\\[state\\=active\\]\\:text-foreground[data-state=active] {\n color: hsl(var(--foreground));\n}\n.data-\\[state\\=checked\\]\\:text-primary-foreground[data-state=checked] {\n color: hsl(var(--primary-foreground));\n}\n.data-\\[state\\=on\\]\\:text-accent-foreground[data-state=on] {\n color: hsl(var(--accent-foreground));\n}\n.data-\\[state\\=open\\]\\:text-muted-foreground[data-state=open] {\n color: hsl(var(--muted-foreground));\n}\n.data-\\[disabled\\]\\:opacity-50[data-disabled] {\n opacity: 0.5;\n}\n.data-\\[state\\=active\\]\\:shadow-sm[data-state=active] {\n --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.data-\\[state\\=open\\]\\:animate-in[data-state=open] {\n animation-name: enter;\n animation-duration: 150ms;\n --tw-enter-opacity: initial;\n --tw-enter-scale: initial;\n --tw-enter-rotate: initial;\n --tw-enter-translate-x: initial;\n --tw-enter-translate-y: initial;\n}\n.data-\\[state\\=closed\\]\\:animate-out[data-state=closed] {\n animation-name: exit;\n animation-duration: 150ms;\n --tw-exit-opacity: initial;\n --tw-exit-scale: initial;\n --tw-exit-rotate: initial;\n --tw-exit-translate-x: initial;\n --tw-exit-translate-y: initial;\n}\n.data-\\[state\\=closed\\]\\:fade-out-0[data-state=closed] {\n --tw-exit-opacity: 0;\n}\n.data-\\[state\\=open\\]\\:fade-in-0[data-state=open] {\n --tw-enter-opacity: 0;\n}\n.data-\\[state\\=closed\\]\\:zoom-out-95[data-state=closed] {\n --tw-exit-scale: .95;\n}\n.data-\\[state\\=open\\]\\:zoom-in-95[data-state=open] {\n --tw-enter-scale: .95;\n}\n.data-\\[side\\=bottom\\]\\:slide-in-from-top-2[data-side=bottom] {\n --tw-enter-translate-y: -0.5rem;\n}\n.data-\\[side\\=left\\]\\:slide-in-from-right-2[data-side=left] {\n --tw-enter-translate-x: 0.5rem;\n}\n.data-\\[side\\=right\\]\\:slide-in-from-left-2[data-side=right] {\n --tw-enter-translate-x: -0.5rem;\n}\n.data-\\[side\\=top\\]\\:slide-in-from-bottom-2[data-side=top] {\n --tw-enter-translate-y: 0.5rem;\n}\n.data-\\[state\\=closed\\]\\:slide-out-to-left-1\\/2[data-state=closed] {\n --tw-exit-translate-x: -50%;\n}\n.data-\\[state\\=closed\\]\\:slide-out-to-top-\\[48\\%\\][data-state=closed] {\n --tw-exit-translate-y: -48%;\n}\n.data-\\[state\\=open\\]\\:slide-in-from-left-1\\/2[data-state=open] {\n --tw-enter-translate-x: -50%;\n}\n.data-\\[state\\=open\\]\\:slide-in-from-top-\\[48\\%\\][data-state=open] {\n --tw-enter-translate-y: -48%;\n}\n:is([data-mode=\"dark\"] .dark\\:border-white) {\n --tw-border-opacity: 1;\n border-color: rgb(255 255 255 / var(--tw-border-opacity));\n}\n@media (min-width: 640px) {\n\n .sm\\:mt-0 {\n margin-top: 0px;\n }\n\n .sm\\:block {\n display: block;\n }\n\n .sm\\:flex-row {\n flex-direction: row;\n }\n\n .sm\\:justify-end {\n justify-content: flex-end;\n }\n\n .sm\\:space-x-2 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-x-reverse: 0;\n margin-right: calc(0.5rem * var(--tw-space-x-reverse));\n margin-left: calc(0.5rem * calc(1 - var(--tw-space-x-reverse)));\n }\n\n .sm\\:space-x-4 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-x-reverse: 0;\n margin-right: calc(1rem * var(--tw-space-x-reverse));\n margin-left: calc(1rem * calc(1 - var(--tw-space-x-reverse)));\n }\n\n .sm\\:space-y-0 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(0px * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(0px * var(--tw-space-y-reverse));\n }\n\n .sm\\:rounded-lg {\n border-radius: var(--radius);\n }\n\n .sm\\:p-0 {\n padding: 0px;\n }\n\n .sm\\:text-left {\n text-align: left;\n }\n}\n@media (min-width: 768px) {\n\n .md\\:relative {\n position: relative;\n }\n\n .md\\:flex {\n display: flex;\n }\n\n .md\\:hidden {\n display: none;\n }\n\n .md\\:w-\\[300px\\] {\n width: 300px;\n }\n\n .md\\:w-full {\n width: 100%;\n }\n\n .md\\:px-4 {\n padding-left: 1rem;\n padding-right: 1rem;\n }\n\n .md\\:pl-0 {\n padding-left: 0px;\n }\n}\n.\\[\\&\\:has\\(\\[aria-selected\\]\\)\\]\\:bg-accent:has([aria-selected]) {\n background-color: hsl(var(--accent));\n}\n.first\\:\\[\\&\\:has\\(\\[aria-selected\\]\\)\\]\\:rounded-l-md:has([aria-selected]):first-child {\n border-top-left-radius: calc(var(--radius) - 2px);\n border-bottom-left-radius: calc(var(--radius) - 2px);\n}\n.last\\:\\[\\&\\:has\\(\\[aria-selected\\]\\)\\]\\:rounded-r-md:has([aria-selected]):last-child {\n border-top-right-radius: calc(var(--radius) - 2px);\n border-bottom-right-radius: calc(var(--radius) - 2px);\n}\n.\\[\\&\\[data-state\\=open\\]\\>svg\\]\\:rotate-180[data-state=open]>svg {\n --tw-rotate: 180deg;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.\\[\\&_\\[cmdk-group-heading\\]\\]\\:px-2 [cmdk-group-heading] {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n}\n.\\[\\&_\\[cmdk-group-heading\\]\\]\\:py-1\\.5 [cmdk-group-heading] {\n padding-top: 0.375rem;\n padding-bottom: 0.375rem;\n}\n.\\[\\&_\\[cmdk-group-heading\\]\\]\\:text-xs [cmdk-group-heading] {\n font-size: 0.75rem;\n line-height: 1rem;\n}\n.\\[\\&_\\[cmdk-group-heading\\]\\]\\:font-medium [cmdk-group-heading] {\n font-weight: 500;\n}\n.\\[\\&_\\[cmdk-group-heading\\]\\]\\:text-muted-foreground [cmdk-group-heading] {\n color: hsl(var(--muted-foreground));\n}\n.\\[\\&_\\[cmdk-group\\]\\:not\\(\\[hidden\\]\\)_\\~\\[cmdk-group\\]\\]\\:pt-0 [cmdk-group]:not([hidden]) ~[cmdk-group] {\n padding-top: 0px;\n}\n.\\[\\&_\\[cmdk-group\\]\\]\\:px-2 [cmdk-group] {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n}\n.\\[\\&_\\[cmdk-input-wrapper\\]_svg\\]\\:h-5 [cmdk-input-wrapper] svg {\n height: 1.25rem;\n}\n.\\[\\&_\\[cmdk-input-wrapper\\]_svg\\]\\:w-5 [cmdk-input-wrapper] svg {\n width: 1.25rem;\n}\n.\\[\\&_\\[cmdk-input\\]\\]\\:h-12 [cmdk-input] {\n height: 3rem;\n}\n.\\[\\&_\\[cmdk-item\\]\\]\\:px-2 [cmdk-item] {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n}\n.\\[\\&_\\[cmdk-item\\]\\]\\:py-3 [cmdk-item] {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n}\n.\\[\\&_\\[cmdk-item\\]_svg\\]\\:h-5 [cmdk-item] svg {\n height: 1.25rem;\n}\n.\\[\\&_\\[cmdk-item\\]_svg\\]\\:w-5 [cmdk-item] svg {\n width: 1.25rem;\n}\n";
|
|
73718
74109
|
function Style() {
|
|
73719
74110
|
return /* @__PURE__ */ jsxRuntime.jsx("style", { children: styleCss });
|
|
73720
74111
|
}
|