mogh_ui 1.3.1 → 1.3.3
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/components/config/group.cjs +28 -12
- package/dist/components/config/group.cjs.map +1 -1
- package/dist/components/config/group.d.ts.map +1 -1
- package/dist/components/config/group.js +29 -13
- package/dist/components/config/group.js.map +1 -1
- package/dist/components/config/index.cjs.map +1 -1
- package/dist/components/config/index.d.ts +0 -1
- package/dist/components/config/index.d.ts.map +1 -1
- package/dist/components/config/index.js.map +1 -1
- package/dist/components/config/item.cjs +39 -0
- package/dist/components/config/item.cjs.map +1 -1
- package/dist/components/config/item.d.ts +16 -1
- package/dist/components/config/item.d.ts.map +1 -1
- package/dist/components/config/item.js +39 -0
- package/dist/components/config/item.js.map +1 -1
- package/package.json +23 -23
|
@@ -44,18 +44,34 @@ function ConfigGroup({
|
|
|
44
44
|
}
|
|
45
45
|
switch (value !== void 0 && value !== null ? typeof value : args?.type) {
|
|
46
46
|
case "string":
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
47
|
+
if (args?.options) {
|
|
48
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
49
|
+
import_item.ConfigSelector,
|
|
50
|
+
{
|
|
51
|
+
label: args?.label ?? key,
|
|
52
|
+
value,
|
|
53
|
+
options: args.options,
|
|
54
|
+
onValueChange: (value2) => setUpdate({ [key]: value2 }),
|
|
55
|
+
disabled: args?.disabled || disabled,
|
|
56
|
+
placeholder: args?.placeholder,
|
|
57
|
+
description: args?.description
|
|
58
|
+
},
|
|
59
|
+
key
|
|
60
|
+
);
|
|
61
|
+
} else {
|
|
62
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
63
|
+
import_item.ConfigInput,
|
|
64
|
+
{
|
|
65
|
+
label: args?.label ?? key,
|
|
66
|
+
value,
|
|
67
|
+
onValueChange: (value2) => setUpdate({ [key]: value2 }),
|
|
68
|
+
disabled: args?.disabled || disabled,
|
|
69
|
+
placeholder: args?.placeholder,
|
|
70
|
+
description: args?.description
|
|
71
|
+
},
|
|
72
|
+
key
|
|
73
|
+
);
|
|
74
|
+
}
|
|
59
75
|
case "number":
|
|
60
76
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
61
77
|
import_item.ConfigInput,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/config/group.tsx"],"sourcesContent":["import { Fragment } from \"react\";\nimport { ConfigFieldArgs, ConfigGroupArgs } from \".\";\nimport { ConfigInput, ConfigSwitch } from \"./item\";\nimport { Group, Stack } from \"@mantine/core\";\nimport { CircleQuestionMark } from \"lucide-react\";\n\nexport function ConfigGroup<T>({\n config,\n update,\n setUpdate,\n disabled,\n fields,\n}: {\n config: T;\n update: Partial<T>;\n setUpdate: (update: Partial<T>) => void;\n disabled: boolean;\n fields: ConfigGroupArgs<T>[\"fields\"];\n}) {\n return (\n <Stack gap=\"xl\">\n {Object.entries(fields).map(([key, field]) => {\n const value =\n (update as { [key: string]: unknown })[key] ??\n (config as { [key: string]: unknown })[key];\n if (typeof field === \"function\") {\n return <Fragment key={key}>{field(value, setUpdate)}</Fragment>;\n } else if (typeof field === \"object\" || field === true) {\n const args =\n typeof field === \"object\" ? (field as ConfigFieldArgs) : undefined;\n\n if (args?.hidden) {\n return null;\n }\n\n switch (\n value !== undefined && value !== null ? typeof value : args?.type\n ) {\n case \"string\":\n return (\n <ConfigInput\n
|
|
1
|
+
{"version":3,"sources":["../../../src/components/config/group.tsx"],"sourcesContent":["import { Fragment } from \"react\";\nimport { ConfigFieldArgs, ConfigGroupArgs } from \".\";\nimport { ConfigInput, ConfigSelector, ConfigSwitch } from \"./item\";\nimport { Group, Stack } from \"@mantine/core\";\nimport { CircleQuestionMark } from \"lucide-react\";\n\nexport function ConfigGroup<T>({\n config,\n update,\n setUpdate,\n disabled,\n fields,\n}: {\n config: T;\n update: Partial<T>;\n setUpdate: (update: Partial<T>) => void;\n disabled: boolean;\n fields: ConfigGroupArgs<T>[\"fields\"];\n}) {\n return (\n <Stack gap=\"xl\">\n {Object.entries(fields).map(([key, field]) => {\n const value =\n (update as { [key: string]: unknown })[key] ??\n (config as { [key: string]: unknown })[key];\n if (typeof field === \"function\") {\n return <Fragment key={key}>{field(value, setUpdate)}</Fragment>;\n } else if (typeof field === \"object\" || field === true) {\n const args =\n typeof field === \"object\" ? (field as ConfigFieldArgs) : undefined;\n\n if (args?.hidden) {\n return null;\n }\n\n switch (\n value !== undefined && value !== null ? typeof value : args?.type\n ) {\n case \"string\":\n if (args?.options) {\n return (\n <ConfigSelector\n key={key}\n label={args?.label ?? key}\n value={value as string}\n options={args.options}\n onValueChange={(value) =>\n setUpdate({ [key]: value } as Partial<T>)\n }\n disabled={args?.disabled || disabled}\n placeholder={args?.placeholder}\n description={args?.description}\n />\n );\n } else {\n return (\n <ConfigInput\n key={key}\n label={args?.label ?? key}\n value={value as string}\n onValueChange={(value) =>\n setUpdate({ [key]: value } as Partial<T>)\n }\n disabled={args?.disabled || disabled}\n placeholder={args?.placeholder}\n description={args?.description}\n />\n );\n }\n\n case \"number\":\n return (\n <ConfigInput\n key={key}\n label={args?.label ?? key}\n value={Number(value)}\n onValueChange={(value) =>\n setUpdate({ [key]: Number(value) } as Partial<T>)\n }\n disabled={args?.disabled || disabled}\n placeholder={args?.placeholder}\n description={args?.description}\n />\n );\n\n case \"boolean\":\n return (\n <ConfigSwitch\n key={key}\n label={args?.label ?? key}\n value={value as boolean}\n onCheckedChange={(value) =>\n setUpdate({ [key]: value } as Partial<T>)\n }\n disabled={args?.disabled || disabled}\n description={args?.description}\n />\n );\n\n default:\n return (\n <Group>\n Config '{args?.label ?? key}':{\" \"}\n <CircleQuestionMark size=\"1rem\" />\n </Group>\n );\n }\n } else {\n return <Fragment key={key} />;\n }\n })}\n </Stack>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AA0BiB;AA1BjB,mBAAyB;AAEzB,kBAA0D;AAC1D,kBAA6B;AAC7B,0BAAmC;AAE5B,SAAS,YAAe;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAMG;AACD,SACE,4CAAC,qBAAM,KAAI,MACR,iBAAO,QAAQ,MAAM,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM;AAC5C,UAAM,QACH,OAAsC,GAAG,KACzC,OAAsC,GAAG;AAC5C,QAAI,OAAO,UAAU,YAAY;AAC/B,aAAO,4CAAC,yBAAoB,gBAAM,OAAO,SAAS,KAA5B,GAA8B;AAAA,IACtD,WAAW,OAAO,UAAU,YAAY,UAAU,MAAM;AACtD,YAAM,OACJ,OAAO,UAAU,WAAY,QAA4B;AAE3D,UAAI,MAAM,QAAQ;AAChB,eAAO;AAAA,MACT;AAEA,cACE,UAAU,UAAa,UAAU,OAAO,OAAO,QAAQ,MAAM,MAC7D;AAAA,QACA,KAAK;AACH,cAAI,MAAM,SAAS;AACjB,mBACE;AAAA,cAAC;AAAA;AAAA,gBAEC,OAAO,MAAM,SAAS;AAAA,gBACtB;AAAA,gBACA,SAAS,KAAK;AAAA,gBACd,eAAe,CAACA,WACd,UAAU,EAAE,CAAC,GAAG,GAAGA,OAAM,CAAe;AAAA,gBAE1C,UAAU,MAAM,YAAY;AAAA,gBAC5B,aAAa,MAAM;AAAA,gBACnB,aAAa,MAAM;AAAA;AAAA,cATd;AAAA,YAUP;AAAA,UAEJ,OAAO;AACL,mBACE;AAAA,cAAC;AAAA;AAAA,gBAEC,OAAO,MAAM,SAAS;AAAA,gBACtB;AAAA,gBACA,eAAe,CAACA,WACd,UAAU,EAAE,CAAC,GAAG,GAAGA,OAAM,CAAe;AAAA,gBAE1C,UAAU,MAAM,YAAY;AAAA,gBAC5B,aAAa,MAAM;AAAA,gBACnB,aAAa,MAAM;AAAA;AAAA,cARd;AAAA,YASP;AAAA,UAEJ;AAAA,QAEF,KAAK;AACH,iBACE;AAAA,YAAC;AAAA;AAAA,cAEC,OAAO,MAAM,SAAS;AAAA,cACtB,OAAO,OAAO,KAAK;AAAA,cACnB,eAAe,CAACA,WACd,UAAU,EAAE,CAAC,GAAG,GAAG,OAAOA,MAAK,EAAE,CAAe;AAAA,cAElD,UAAU,MAAM,YAAY;AAAA,cAC5B,aAAa,MAAM;AAAA,cACnB,aAAa,MAAM;AAAA;AAAA,YARd;AAAA,UASP;AAAA,QAGJ,KAAK;AACH,iBACE;AAAA,YAAC;AAAA;AAAA,cAEC,OAAO,MAAM,SAAS;AAAA,cACtB;AAAA,cACA,iBAAiB,CAACA,WAChB,UAAU,EAAE,CAAC,GAAG,GAAGA,OAAM,CAAe;AAAA,cAE1C,UAAU,MAAM,YAAY;AAAA,cAC5B,aAAa,MAAM;AAAA;AAAA,YAPd;AAAA,UAQP;AAAA,QAGJ;AACE,iBACE,6CAAC,qBAAM;AAAA;AAAA,YACI,MAAM,SAAS;AAAA,YAAI;AAAA,YAAG;AAAA,YAC/B,4CAAC,0CAAmB,MAAK,QAAO;AAAA,aAClC;AAAA,MAEN;AAAA,IACF,OAAO;AACL,aAAO,4CAAC,2BAAc,GAAK;AAAA,IAC7B;AAAA,EACF,CAAC,GACH;AAEJ;","names":["value"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"group.d.ts","sourceRoot":"","sources":["../../../src/components/config/group.tsx"],"names":[],"mappings":"AACA,OAAO,EAAmB,eAAe,EAAE,MAAM,GAAG,CAAC;AAKrD,wBAAgB,WAAW,CAAC,CAAC,EAAE,EAC7B,MAAM,EACN,MAAM,EACN,SAAS,EACT,QAAQ,EACR,MAAM,GACP,EAAE;IACD,MAAM,EAAE,CAAC,CAAC;IACV,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACnB,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IACxC,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;CACtC,+
|
|
1
|
+
{"version":3,"file":"group.d.ts","sourceRoot":"","sources":["../../../src/components/config/group.tsx"],"names":[],"mappings":"AACA,OAAO,EAAmB,eAAe,EAAE,MAAM,GAAG,CAAC;AAKrD,wBAAgB,WAAW,CAAC,CAAC,EAAE,EAC7B,MAAM,EACN,MAAM,EACN,SAAS,EACT,QAAQ,EACR,MAAM,GACP,EAAE;IACD,MAAM,EAAE,CAAC,CAAC;IACV,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACnB,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IACxC,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;CACtC,+BA+FA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Fragment } from "react";
|
|
3
|
-
import { ConfigInput, ConfigSwitch } from "./item";
|
|
3
|
+
import { ConfigInput, ConfigSelector, ConfigSwitch } from "./item";
|
|
4
4
|
import { Group, Stack } from "@mantine/core";
|
|
5
5
|
import { CircleQuestionMark } from "lucide-react";
|
|
6
6
|
function ConfigGroup({
|
|
@@ -21,18 +21,34 @@ function ConfigGroup({
|
|
|
21
21
|
}
|
|
22
22
|
switch (value !== void 0 && value !== null ? typeof value : args?.type) {
|
|
23
23
|
case "string":
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
24
|
+
if (args?.options) {
|
|
25
|
+
return /* @__PURE__ */ jsx(
|
|
26
|
+
ConfigSelector,
|
|
27
|
+
{
|
|
28
|
+
label: args?.label ?? key,
|
|
29
|
+
value,
|
|
30
|
+
options: args.options,
|
|
31
|
+
onValueChange: (value2) => setUpdate({ [key]: value2 }),
|
|
32
|
+
disabled: args?.disabled || disabled,
|
|
33
|
+
placeholder: args?.placeholder,
|
|
34
|
+
description: args?.description
|
|
35
|
+
},
|
|
36
|
+
key
|
|
37
|
+
);
|
|
38
|
+
} else {
|
|
39
|
+
return /* @__PURE__ */ jsx(
|
|
40
|
+
ConfigInput,
|
|
41
|
+
{
|
|
42
|
+
label: args?.label ?? key,
|
|
43
|
+
value,
|
|
44
|
+
onValueChange: (value2) => setUpdate({ [key]: value2 }),
|
|
45
|
+
disabled: args?.disabled || disabled,
|
|
46
|
+
placeholder: args?.placeholder,
|
|
47
|
+
description: args?.description
|
|
48
|
+
},
|
|
49
|
+
key
|
|
50
|
+
);
|
|
51
|
+
}
|
|
36
52
|
case "number":
|
|
37
53
|
return /* @__PURE__ */ jsx(
|
|
38
54
|
ConfigInput,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/config/group.tsx"],"sourcesContent":["import { Fragment } from \"react\";\nimport { ConfigFieldArgs, ConfigGroupArgs } from \".\";\nimport { ConfigInput, ConfigSwitch } from \"./item\";\nimport { Group, Stack } from \"@mantine/core\";\nimport { CircleQuestionMark } from \"lucide-react\";\n\nexport function ConfigGroup<T>({\n config,\n update,\n setUpdate,\n disabled,\n fields,\n}: {\n config: T;\n update: Partial<T>;\n setUpdate: (update: Partial<T>) => void;\n disabled: boolean;\n fields: ConfigGroupArgs<T>[\"fields\"];\n}) {\n return (\n <Stack gap=\"xl\">\n {Object.entries(fields).map(([key, field]) => {\n const value =\n (update as { [key: string]: unknown })[key] ??\n (config as { [key: string]: unknown })[key];\n if (typeof field === \"function\") {\n return <Fragment key={key}>{field(value, setUpdate)}</Fragment>;\n } else if (typeof field === \"object\" || field === true) {\n const args =\n typeof field === \"object\" ? (field as ConfigFieldArgs) : undefined;\n\n if (args?.hidden) {\n return null;\n }\n\n switch (\n value !== undefined && value !== null ? typeof value : args?.type\n ) {\n case \"string\":\n return (\n <ConfigInput\n
|
|
1
|
+
{"version":3,"sources":["../../../src/components/config/group.tsx"],"sourcesContent":["import { Fragment } from \"react\";\nimport { ConfigFieldArgs, ConfigGroupArgs } from \".\";\nimport { ConfigInput, ConfigSelector, ConfigSwitch } from \"./item\";\nimport { Group, Stack } from \"@mantine/core\";\nimport { CircleQuestionMark } from \"lucide-react\";\n\nexport function ConfigGroup<T>({\n config,\n update,\n setUpdate,\n disabled,\n fields,\n}: {\n config: T;\n update: Partial<T>;\n setUpdate: (update: Partial<T>) => void;\n disabled: boolean;\n fields: ConfigGroupArgs<T>[\"fields\"];\n}) {\n return (\n <Stack gap=\"xl\">\n {Object.entries(fields).map(([key, field]) => {\n const value =\n (update as { [key: string]: unknown })[key] ??\n (config as { [key: string]: unknown })[key];\n if (typeof field === \"function\") {\n return <Fragment key={key}>{field(value, setUpdate)}</Fragment>;\n } else if (typeof field === \"object\" || field === true) {\n const args =\n typeof field === \"object\" ? (field as ConfigFieldArgs) : undefined;\n\n if (args?.hidden) {\n return null;\n }\n\n switch (\n value !== undefined && value !== null ? typeof value : args?.type\n ) {\n case \"string\":\n if (args?.options) {\n return (\n <ConfigSelector\n key={key}\n label={args?.label ?? key}\n value={value as string}\n options={args.options}\n onValueChange={(value) =>\n setUpdate({ [key]: value } as Partial<T>)\n }\n disabled={args?.disabled || disabled}\n placeholder={args?.placeholder}\n description={args?.description}\n />\n );\n } else {\n return (\n <ConfigInput\n key={key}\n label={args?.label ?? key}\n value={value as string}\n onValueChange={(value) =>\n setUpdate({ [key]: value } as Partial<T>)\n }\n disabled={args?.disabled || disabled}\n placeholder={args?.placeholder}\n description={args?.description}\n />\n );\n }\n\n case \"number\":\n return (\n <ConfigInput\n key={key}\n label={args?.label ?? key}\n value={Number(value)}\n onValueChange={(value) =>\n setUpdate({ [key]: Number(value) } as Partial<T>)\n }\n disabled={args?.disabled || disabled}\n placeholder={args?.placeholder}\n description={args?.description}\n />\n );\n\n case \"boolean\":\n return (\n <ConfigSwitch\n key={key}\n label={args?.label ?? key}\n value={value as boolean}\n onCheckedChange={(value) =>\n setUpdate({ [key]: value } as Partial<T>)\n }\n disabled={args?.disabled || disabled}\n description={args?.description}\n />\n );\n\n default:\n return (\n <Group>\n Config '{args?.label ?? key}':{\" \"}\n <CircleQuestionMark size=\"1rem\" />\n </Group>\n );\n }\n } else {\n return <Fragment key={key} />;\n }\n })}\n </Stack>\n );\n}\n"],"mappings":"AA0BiB,cA2ED,YA3EC;AA1BjB,SAAS,gBAAgB;AAEzB,SAAS,aAAa,gBAAgB,oBAAoB;AAC1D,SAAS,OAAO,aAAa;AAC7B,SAAS,0BAA0B;AAE5B,SAAS,YAAe;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAMG;AACD,SACE,oBAAC,SAAM,KAAI,MACR,iBAAO,QAAQ,MAAM,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM;AAC5C,UAAM,QACH,OAAsC,GAAG,KACzC,OAAsC,GAAG;AAC5C,QAAI,OAAO,UAAU,YAAY;AAC/B,aAAO,oBAAC,YAAoB,gBAAM,OAAO,SAAS,KAA5B,GAA8B;AAAA,IACtD,WAAW,OAAO,UAAU,YAAY,UAAU,MAAM;AACtD,YAAM,OACJ,OAAO,UAAU,WAAY,QAA4B;AAE3D,UAAI,MAAM,QAAQ;AAChB,eAAO;AAAA,MACT;AAEA,cACE,UAAU,UAAa,UAAU,OAAO,OAAO,QAAQ,MAAM,MAC7D;AAAA,QACA,KAAK;AACH,cAAI,MAAM,SAAS;AACjB,mBACE;AAAA,cAAC;AAAA;AAAA,gBAEC,OAAO,MAAM,SAAS;AAAA,gBACtB;AAAA,gBACA,SAAS,KAAK;AAAA,gBACd,eAAe,CAACA,WACd,UAAU,EAAE,CAAC,GAAG,GAAGA,OAAM,CAAe;AAAA,gBAE1C,UAAU,MAAM,YAAY;AAAA,gBAC5B,aAAa,MAAM;AAAA,gBACnB,aAAa,MAAM;AAAA;AAAA,cATd;AAAA,YAUP;AAAA,UAEJ,OAAO;AACL,mBACE;AAAA,cAAC;AAAA;AAAA,gBAEC,OAAO,MAAM,SAAS;AAAA,gBACtB;AAAA,gBACA,eAAe,CAACA,WACd,UAAU,EAAE,CAAC,GAAG,GAAGA,OAAM,CAAe;AAAA,gBAE1C,UAAU,MAAM,YAAY;AAAA,gBAC5B,aAAa,MAAM;AAAA,gBACnB,aAAa,MAAM;AAAA;AAAA,cARd;AAAA,YASP;AAAA,UAEJ;AAAA,QAEF,KAAK;AACH,iBACE;AAAA,YAAC;AAAA;AAAA,cAEC,OAAO,MAAM,SAAS;AAAA,cACtB,OAAO,OAAO,KAAK;AAAA,cACnB,eAAe,CAACA,WACd,UAAU,EAAE,CAAC,GAAG,GAAG,OAAOA,MAAK,EAAE,CAAe;AAAA,cAElD,UAAU,MAAM,YAAY;AAAA,cAC5B,aAAa,MAAM;AAAA,cACnB,aAAa,MAAM;AAAA;AAAA,YARd;AAAA,UASP;AAAA,QAGJ,KAAK;AACH,iBACE;AAAA,YAAC;AAAA;AAAA,cAEC,OAAO,MAAM,SAAS;AAAA,cACtB;AAAA,cACA,iBAAiB,CAACA,WAChB,UAAU,EAAE,CAAC,GAAG,GAAGA,OAAM,CAAe;AAAA,cAE1C,UAAU,MAAM,YAAY;AAAA,cAC5B,aAAa,MAAM;AAAA;AAAA,YAPd;AAAA,UAQP;AAAA,QAGJ;AACE,iBACE,qBAAC,SAAM;AAAA;AAAA,YACI,MAAM,SAAS;AAAA,YAAI;AAAA,YAAG;AAAA,YAC/B,oBAAC,sBAAmB,MAAK,QAAO;AAAA,aAClC;AAAA,MAEN;AAAA,IACF,OAAO;AACL,aAAO,oBAAC,cAAc,GAAK;AAAA,IAC7B;AAAA,EACF,CAAC,GACH;AAEJ;","names":["value"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/config/index.tsx"],"sourcesContent":["import { Fragment, ReactNode, SetStateAction, useMemo } from \"react\";\nimport { MonacoLanguage } from \"../monaco\";\nimport {\n Anchor,\n Box,\n Button,\n Flex,\n Group,\n ScrollArea,\n Select,\n Stack,\n Text,\n} from \"@mantine/core\";\nimport { ConfirmUpdate } from \"./confirm\";\nimport { Bookmark, History } from \"lucide-react\";\nimport { ConfigGroup } from \"./group\";\nimport { UnsavedChanges } from \"./unsaved-changes\";\nimport { ConfigLayout } from \"./layout\";\nimport { SectionProps } from \"../section\";\n\nexport * from \"./confirm\";\nexport * from \"./group\";\nexport * from \"./item\";\nexport * from \"./layout\";\nexport * from \"./unsaved-changes\";\n\nexport interface ConfigFieldArgs {\n label?: string;\n description?: ReactNode;\n /** Useful to set explicitly in cases where value is nullable from the API (so type cannot be inferred). */\n type?:\n | \"string\"\n | \"number\"\n | \"bigint\"\n | \"boolean\"\n | \"symbol\"\n | \"undefined\"\n | \"object\"\n | \"function\";\n /** Use a selector instead of input */\n options?: { value: string; label?: string; icon?: ReactNode }[];\n placeholder?: string;\n hidden?: boolean;\n disabled?: boolean;\n}\n\nexport interface ConfigGroupArgs<T> {\n label: string;\n labelExtra?: ReactNode;\n icon?: ReactNode;\n description?: ReactNode;\n actions?: ReactNode;\n hidden?: boolean;\n labelHidden?: boolean;\n contentHidden?: boolean;\n fields: {\n [K in keyof Partial<T>]:\n | boolean\n | ConfigFieldArgs\n | ((value: T[K], set: (value: Partial<T>) => void) => ReactNode);\n };\n}\n\nexport interface ConfigProps<T> extends SectionProps {\n original: T;\n update: Partial<T>;\n setUpdate: React.Dispatch<SetStateAction<Partial<T>>>;\n disabled: boolean;\n onSave: () => Promise<unknown>;\n disableSidebar?: boolean;\n fileContentsLanguage?: MonacoLanguage;\n enableFancyToml?: boolean;\n groups: Record<\n string, // Section key\n ConfigGroupArgs<T>[] | false | undefined\n >;\n}\n\nexport function Config<T>({\n original,\n update,\n setUpdate,\n disabled,\n onSave,\n disableSidebar,\n fileContentsLanguage,\n enableFancyToml,\n groups: _groups,\n ...sectionProps\n}: ConfigProps<T>) {\n const changesMade = Object.keys(update).length ? true : false;\n const onConfirm = async () => {\n await onSave();\n setUpdate({});\n };\n const onReset = () => setUpdate({});\n\n const groups = useMemo(\n () => Object.entries(_groups).filter(([_, groupArgs]) => !!groupArgs),\n [_groups],\n );\n\n const GroupsComponent = useMemo(\n () =>\n groups.map(([group, groupArgs]) => {\n return (\n <Fragment key={group}>\n {group && (\n <Text visibleFrom=\"lg\" fz=\"h2\" tt=\"uppercase\" mt=\"xl\">\n {group}\n </Text>\n )}\n\n <Stack>\n {(groupArgs as ConfigGroupArgs<T>[])\n .filter(({ hidden }) => !hidden)\n .map(\n ({\n label,\n labelHidden,\n icon,\n labelExtra,\n actions,\n description,\n contentHidden,\n fields,\n }) => (\n <Stack\n key={group + label}\n id={group + label}\n p=\"xl\"\n gap=\"md\"\n className=\"bordered-light\"\n bdrs=\"md\"\n style={{ scrollMarginTop: 94 }}\n >\n {!labelHidden && (\n <Group justify=\"space-between\">\n <Stack gap=\"0\">\n <Group>\n {icon}\n <Text fz=\"h3\">{label}</Text>\n {labelExtra}\n </Group>\n {description && (\n <Text c=\"dimmed\">{description}</Text>\n )}\n </Stack>\n {actions}\n </Group>\n )}\n {!contentHidden && (\n <ConfigGroup\n config={original}\n update={update}\n setUpdate={(u) => setUpdate((p) => ({ ...p, ...u }))}\n fields={fields}\n disabled={disabled}\n />\n )}\n </Stack>\n ),\n )}\n </Stack>\n </Fragment>\n );\n }),\n [groups],\n );\n\n const SaveOrReset = ({\n unsavedIndicator,\n fullWidth,\n }: {\n unsavedIndicator?: boolean;\n fullWidth?: boolean;\n }) =>\n changesMade && (\n <>\n {unsavedIndicator && <UnsavedChanges fullWidth={fullWidth} />}\n <Button\n variant=\"outline\"\n onClick={onReset}\n disabled={disabled || !changesMade}\n leftSection={<History size=\"1rem\" />}\n fullWidth={fullWidth}\n w={fullWidth ? undefined : 100}\n >\n Reset\n </Button>\n <ConfirmUpdate\n original={original}\n update={update}\n onConfirm={onConfirm}\n disabled={disabled}\n fileContentsLanguage={fileContentsLanguage}\n fullWidth={fullWidth}\n enableFancyToml={enableFancyToml}\n />\n </>\n );\n\n const SaveOrResetComponent = changesMade && (\n <>\n <Group visibleFrom=\"xs\" justify=\"flex-end\">\n <SaveOrReset unsavedIndicator />\n </Group>\n <Stack hiddenFrom=\"xs\">\n <SaveOrReset unsavedIndicator fullWidth />\n </Stack>\n </>\n );\n\n return (\n <ConfigLayout SaveOrReset={SaveOrResetComponent} {...sectionProps}>\n {disableSidebar && (\n <>\n {GroupsComponent}\n {SaveOrResetComponent}\n </>\n )}\n {!disableSidebar && (\n <Flex w=\"100%\" gap=\"md\" direction={{ base: \"column\", lg: \"row\" }}>\n {/** SIDEBAR (LG) */}\n <Box\n visibleFrom=\"lg\"\n pos=\"relative\"\n className=\"bordered-light\"\n style={{\n borderLeftWidth: 0,\n borderBottomWidth: 0,\n borderTopRightRadius: \"var(--mantine-radius-md)\",\n }}\n >\n <Stack pos=\"sticky\" w={175} top={88} pb={24} m=\"lg\">\n {/** ANCHORS */}\n <ScrollArea\n mah={\n changesMade ? \"calc(100vh - 220px)\" : \"calc(100vh - 130px)\"\n }\n >\n <Stack>\n {groups\n .filter(([_, groupArgs]) => groupArgs)\n .map(([group, groupArgs]) => (\n <Stack key={group} gap=\"xs\">\n <Group justify=\"flex-end\" mr=\"md\" c=\"dimmed\">\n <Bookmark size=\"1rem\" />\n <Text tt=\"uppercase\">{group || \"GENERAL\"}</Text>\n </Group>\n <Stack gap=\"0.1rem\">\n {groupArgs &&\n groupArgs\n .filter((groupArgs) => !groupArgs.hidden)\n .map((groupArgs) => (\n <Button\n key={group + groupArgs.label}\n variant=\"subtle\"\n justify=\"flex-end\"\n size=\"sm\"\n fullWidth\n renderRoot={(props) => (\n <Anchor\n href={\"#\" + group + groupArgs.label}\n {...props}\n />\n )}\n >\n {groupArgs.label}\n </Button>\n ))}\n </Stack>\n </Stack>\n ))}\n </Stack>\n </ScrollArea>\n\n {/** SAVE */}\n <Stack gap=\"xs\">\n <SaveOrReset fullWidth />\n </Stack>\n </Stack>\n </Box>\n\n {/** SELECTOR (MOBILE) */}\n <Select\n hiddenFrom=\"lg\"\n className=\"select-nondimmed-placeholder\"\n placeholder=\"Go To\"\n leftSection={<Bookmark size=\"1rem\" />}\n value={null}\n data={groups\n .filter(([_, groupArgs]) => groupArgs)\n .map(([group, groupArgs]) => ({\n group,\n items: (groupArgs as ConfigGroupArgs<T>[]).map((arg) => ({\n label: arg.label,\n value: group + arg.label,\n })),\n }))}\n onChange={(group) => {\n if (!group) return;\n window.location.hash = group;\n }}\n />\n\n {/** CONTENT */}\n <Stack style={{ flexGrow: 1 }} gap=\"md\">\n {GroupsComponent}\n {SaveOrResetComponent}\n </Stack>\n </Flex>\n )}\n </ConfigLayout>\n );\n}\n"],"mappings":"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","names":["groupArgs"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/config/index.tsx"],"sourcesContent":["import { Fragment, ReactNode, SetStateAction, useMemo } from \"react\";\nimport { MonacoLanguage } from \"../monaco\";\nimport {\n Anchor,\n Box,\n Button,\n Flex,\n Group,\n ScrollArea,\n Select,\n Stack,\n Text,\n} from \"@mantine/core\";\nimport { ConfirmUpdate } from \"./confirm\";\nimport { Bookmark, History } from \"lucide-react\";\nimport { ConfigGroup } from \"./group\";\nimport { UnsavedChanges } from \"./unsaved-changes\";\nimport { ConfigLayout } from \"./layout\";\nimport { SectionProps } from \"../section\";\n\nexport * from \"./confirm\";\nexport * from \"./group\";\nexport * from \"./item\";\nexport * from \"./layout\";\nexport * from \"./unsaved-changes\";\n\nexport interface ConfigFieldArgs {\n label?: string;\n description?: ReactNode;\n /** Useful to set explicitly in cases where value is nullable from the API (so type cannot be inferred). */\n type?:\n | \"string\"\n | \"number\"\n | \"bigint\"\n | \"boolean\"\n | \"symbol\"\n | \"undefined\"\n | \"object\"\n | \"function\";\n /** Use a selector instead of input */\n options?: { value: string; label?: string }[];\n placeholder?: string;\n hidden?: boolean;\n disabled?: boolean;\n}\n\nexport interface ConfigGroupArgs<T> {\n label: string;\n labelExtra?: ReactNode;\n icon?: ReactNode;\n description?: ReactNode;\n actions?: ReactNode;\n hidden?: boolean;\n labelHidden?: boolean;\n contentHidden?: boolean;\n fields: {\n [K in keyof Partial<T>]:\n | boolean\n | ConfigFieldArgs\n | ((value: T[K], set: (value: Partial<T>) => void) => ReactNode);\n };\n}\n\nexport interface ConfigProps<T> extends SectionProps {\n original: T;\n update: Partial<T>;\n setUpdate: React.Dispatch<SetStateAction<Partial<T>>>;\n disabled: boolean;\n onSave: () => Promise<unknown>;\n disableSidebar?: boolean;\n fileContentsLanguage?: MonacoLanguage;\n enableFancyToml?: boolean;\n groups: Record<\n string, // Section key\n ConfigGroupArgs<T>[] | false | undefined\n >;\n}\n\nexport function Config<T>({\n original,\n update,\n setUpdate,\n disabled,\n onSave,\n disableSidebar,\n fileContentsLanguage,\n enableFancyToml,\n groups: _groups,\n ...sectionProps\n}: ConfigProps<T>) {\n const changesMade = Object.keys(update).length ? true : false;\n const onConfirm = async () => {\n await onSave();\n setUpdate({});\n };\n const onReset = () => setUpdate({});\n\n const groups = useMemo(\n () => Object.entries(_groups).filter(([_, groupArgs]) => !!groupArgs),\n [_groups],\n );\n\n const GroupsComponent = useMemo(\n () =>\n groups.map(([group, groupArgs]) => {\n return (\n <Fragment key={group}>\n {group && (\n <Text visibleFrom=\"lg\" fz=\"h2\" tt=\"uppercase\" mt=\"xl\">\n {group}\n </Text>\n )}\n\n <Stack>\n {(groupArgs as ConfigGroupArgs<T>[])\n .filter(({ hidden }) => !hidden)\n .map(\n ({\n label,\n labelHidden,\n icon,\n labelExtra,\n actions,\n description,\n contentHidden,\n fields,\n }) => (\n <Stack\n key={group + label}\n id={group + label}\n p=\"xl\"\n gap=\"md\"\n className=\"bordered-light\"\n bdrs=\"md\"\n style={{ scrollMarginTop: 94 }}\n >\n {!labelHidden && (\n <Group justify=\"space-between\">\n <Stack gap=\"0\">\n <Group>\n {icon}\n <Text fz=\"h3\">{label}</Text>\n {labelExtra}\n </Group>\n {description && (\n <Text c=\"dimmed\">{description}</Text>\n )}\n </Stack>\n {actions}\n </Group>\n )}\n {!contentHidden && (\n <ConfigGroup\n config={original}\n update={update}\n setUpdate={(u) => setUpdate((p) => ({ ...p, ...u }))}\n fields={fields}\n disabled={disabled}\n />\n )}\n </Stack>\n ),\n )}\n </Stack>\n </Fragment>\n );\n }),\n [groups],\n );\n\n const SaveOrReset = ({\n unsavedIndicator,\n fullWidth,\n }: {\n unsavedIndicator?: boolean;\n fullWidth?: boolean;\n }) =>\n changesMade && (\n <>\n {unsavedIndicator && <UnsavedChanges fullWidth={fullWidth} />}\n <Button\n variant=\"outline\"\n onClick={onReset}\n disabled={disabled || !changesMade}\n leftSection={<History size=\"1rem\" />}\n fullWidth={fullWidth}\n w={fullWidth ? undefined : 100}\n >\n Reset\n </Button>\n <ConfirmUpdate\n original={original}\n update={update}\n onConfirm={onConfirm}\n disabled={disabled}\n fileContentsLanguage={fileContentsLanguage}\n fullWidth={fullWidth}\n enableFancyToml={enableFancyToml}\n />\n </>\n );\n\n const SaveOrResetComponent = changesMade && (\n <>\n <Group visibleFrom=\"xs\" justify=\"flex-end\">\n <SaveOrReset unsavedIndicator />\n </Group>\n <Stack hiddenFrom=\"xs\">\n <SaveOrReset unsavedIndicator fullWidth />\n </Stack>\n </>\n );\n\n return (\n <ConfigLayout SaveOrReset={SaveOrResetComponent} {...sectionProps}>\n {disableSidebar && (\n <>\n {GroupsComponent}\n {SaveOrResetComponent}\n </>\n )}\n {!disableSidebar && (\n <Flex w=\"100%\" gap=\"md\" direction={{ base: \"column\", lg: \"row\" }}>\n {/** SIDEBAR (LG) */}\n <Box\n visibleFrom=\"lg\"\n pos=\"relative\"\n className=\"bordered-light\"\n style={{\n borderLeftWidth: 0,\n borderBottomWidth: 0,\n borderTopRightRadius: \"var(--mantine-radius-md)\",\n }}\n >\n <Stack pos=\"sticky\" w={175} top={88} pb={24} m=\"lg\">\n {/** ANCHORS */}\n <ScrollArea\n mah={\n changesMade ? \"calc(100vh - 220px)\" : \"calc(100vh - 130px)\"\n }\n >\n <Stack>\n {groups\n .filter(([_, groupArgs]) => groupArgs)\n .map(([group, groupArgs]) => (\n <Stack key={group} gap=\"xs\">\n <Group justify=\"flex-end\" mr=\"md\" c=\"dimmed\">\n <Bookmark size=\"1rem\" />\n <Text tt=\"uppercase\">{group || \"GENERAL\"}</Text>\n </Group>\n <Stack gap=\"0.1rem\">\n {groupArgs &&\n groupArgs\n .filter((groupArgs) => !groupArgs.hidden)\n .map((groupArgs) => (\n <Button\n key={group + groupArgs.label}\n variant=\"subtle\"\n justify=\"flex-end\"\n size=\"sm\"\n fullWidth\n renderRoot={(props) => (\n <Anchor\n href={\"#\" + group + groupArgs.label}\n {...props}\n />\n )}\n >\n {groupArgs.label}\n </Button>\n ))}\n </Stack>\n </Stack>\n ))}\n </Stack>\n </ScrollArea>\n\n {/** SAVE */}\n <Stack gap=\"xs\">\n <SaveOrReset fullWidth />\n </Stack>\n </Stack>\n </Box>\n\n {/** SELECTOR (MOBILE) */}\n <Select\n hiddenFrom=\"lg\"\n className=\"select-nondimmed-placeholder\"\n placeholder=\"Go To\"\n leftSection={<Bookmark size=\"1rem\" />}\n value={null}\n data={groups\n .filter(([_, groupArgs]) => groupArgs)\n .map(([group, groupArgs]) => ({\n group,\n items: (groupArgs as ConfigGroupArgs<T>[]).map((arg) => ({\n label: arg.label,\n value: group + arg.label,\n })),\n }))}\n onChange={(group) => {\n if (!group) return;\n window.location.hash = group;\n }}\n />\n\n {/** CONTENT */}\n <Stack style={{ flexGrow: 1 }} gap=\"md\">\n {GroupsComponent}\n {SaveOrResetComponent}\n </Stack>\n </Flex>\n )}\n </ConfigLayout>\n );\n}\n"],"mappings":"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","names":["groupArgs"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/config/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAY,SAAS,EAAE,cAAc,EAAW,MAAM,OAAO,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAiB3C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAElC,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,2GAA2G;IAC3G,IAAI,CAAC,EACD,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,QAAQ,GACR,WAAW,GACX,QAAQ,GACR,UAAU,CAAC;IACf,sCAAsC;IACtC,OAAO,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/config/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAY,SAAS,EAAE,cAAc,EAAW,MAAM,OAAO,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAiB3C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAElC,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,2GAA2G;IAC3G,IAAI,CAAC,EACD,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,QAAQ,GACR,WAAW,GACX,QAAQ,GACR,UAAU,CAAC;IACf,sCAAsC;IACtC,OAAO,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,eAAe,CAAC,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,EAAE;SACL,CAAC,IAAI,MAAM,OAAO,CAAC,CAAC,CAAC,GAClB,OAAO,GACP,eAAe,GACf,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,KAAK,SAAS,CAAC;KACnE,CAAC;CACH;AAED,MAAM,WAAW,WAAW,CAAC,CAAC,CAAE,SAAQ,YAAY;IAClD,QAAQ,EAAE,CAAC,CAAC;IACZ,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACnB,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,oBAAoB,CAAC,EAAE,cAAc,CAAC;IACtC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,MAAM,EAAE,MAAM,CACZ,MAAM,EAAE,cAAc;IACtB,AADQ,cAAc;IACtB,eAAe,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,GAAG,SAAS,CACzC,CAAC;CACH;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,EACxB,QAAQ,EACR,MAAM,EACN,SAAS,EACT,QAAQ,EACR,MAAM,EACN,cAAc,EACd,oBAAoB,EACpB,eAAe,EACf,MAAM,EAAE,OAAO,EACf,GAAG,YAAY,EAChB,EAAE,WAAW,CAAC,CAAC,CAAC,+BAkOhB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/config/index.tsx"],"sourcesContent":["import { Fragment, ReactNode, SetStateAction, useMemo } from \"react\";\nimport { MonacoLanguage } from \"../monaco\";\nimport {\n Anchor,\n Box,\n Button,\n Flex,\n Group,\n ScrollArea,\n Select,\n Stack,\n Text,\n} from \"@mantine/core\";\nimport { ConfirmUpdate } from \"./confirm\";\nimport { Bookmark, History } from \"lucide-react\";\nimport { ConfigGroup } from \"./group\";\nimport { UnsavedChanges } from \"./unsaved-changes\";\nimport { ConfigLayout } from \"./layout\";\nimport { SectionProps } from \"../section\";\n\nexport * from \"./confirm\";\nexport * from \"./group\";\nexport * from \"./item\";\nexport * from \"./layout\";\nexport * from \"./unsaved-changes\";\n\nexport interface ConfigFieldArgs {\n label?: string;\n description?: ReactNode;\n /** Useful to set explicitly in cases where value is nullable from the API (so type cannot be inferred). */\n type?:\n | \"string\"\n | \"number\"\n | \"bigint\"\n | \"boolean\"\n | \"symbol\"\n | \"undefined\"\n | \"object\"\n | \"function\";\n /** Use a selector instead of input */\n options?: { value: string; label?: string; icon?: ReactNode }[];\n placeholder?: string;\n hidden?: boolean;\n disabled?: boolean;\n}\n\nexport interface ConfigGroupArgs<T> {\n label: string;\n labelExtra?: ReactNode;\n icon?: ReactNode;\n description?: ReactNode;\n actions?: ReactNode;\n hidden?: boolean;\n labelHidden?: boolean;\n contentHidden?: boolean;\n fields: {\n [K in keyof Partial<T>]:\n | boolean\n | ConfigFieldArgs\n | ((value: T[K], set: (value: Partial<T>) => void) => ReactNode);\n };\n}\n\nexport interface ConfigProps<T> extends SectionProps {\n original: T;\n update: Partial<T>;\n setUpdate: React.Dispatch<SetStateAction<Partial<T>>>;\n disabled: boolean;\n onSave: () => Promise<unknown>;\n disableSidebar?: boolean;\n fileContentsLanguage?: MonacoLanguage;\n enableFancyToml?: boolean;\n groups: Record<\n string, // Section key\n ConfigGroupArgs<T>[] | false | undefined\n >;\n}\n\nexport function Config<T>({\n original,\n update,\n setUpdate,\n disabled,\n onSave,\n disableSidebar,\n fileContentsLanguage,\n enableFancyToml,\n groups: _groups,\n ...sectionProps\n}: ConfigProps<T>) {\n const changesMade = Object.keys(update).length ? true : false;\n const onConfirm = async () => {\n await onSave();\n setUpdate({});\n };\n const onReset = () => setUpdate({});\n\n const groups = useMemo(\n () => Object.entries(_groups).filter(([_, groupArgs]) => !!groupArgs),\n [_groups],\n );\n\n const GroupsComponent = useMemo(\n () =>\n groups.map(([group, groupArgs]) => {\n return (\n <Fragment key={group}>\n {group && (\n <Text visibleFrom=\"lg\" fz=\"h2\" tt=\"uppercase\" mt=\"xl\">\n {group}\n </Text>\n )}\n\n <Stack>\n {(groupArgs as ConfigGroupArgs<T>[])\n .filter(({ hidden }) => !hidden)\n .map(\n ({\n label,\n labelHidden,\n icon,\n labelExtra,\n actions,\n description,\n contentHidden,\n fields,\n }) => (\n <Stack\n key={group + label}\n id={group + label}\n p=\"xl\"\n gap=\"md\"\n className=\"bordered-light\"\n bdrs=\"md\"\n style={{ scrollMarginTop: 94 }}\n >\n {!labelHidden && (\n <Group justify=\"space-between\">\n <Stack gap=\"0\">\n <Group>\n {icon}\n <Text fz=\"h3\">{label}</Text>\n {labelExtra}\n </Group>\n {description && (\n <Text c=\"dimmed\">{description}</Text>\n )}\n </Stack>\n {actions}\n </Group>\n )}\n {!contentHidden && (\n <ConfigGroup\n config={original}\n update={update}\n setUpdate={(u) => setUpdate((p) => ({ ...p, ...u }))}\n fields={fields}\n disabled={disabled}\n />\n )}\n </Stack>\n ),\n )}\n </Stack>\n </Fragment>\n );\n }),\n [groups],\n );\n\n const SaveOrReset = ({\n unsavedIndicator,\n fullWidth,\n }: {\n unsavedIndicator?: boolean;\n fullWidth?: boolean;\n }) =>\n changesMade && (\n <>\n {unsavedIndicator && <UnsavedChanges fullWidth={fullWidth} />}\n <Button\n variant=\"outline\"\n onClick={onReset}\n disabled={disabled || !changesMade}\n leftSection={<History size=\"1rem\" />}\n fullWidth={fullWidth}\n w={fullWidth ? undefined : 100}\n >\n Reset\n </Button>\n <ConfirmUpdate\n original={original}\n update={update}\n onConfirm={onConfirm}\n disabled={disabled}\n fileContentsLanguage={fileContentsLanguage}\n fullWidth={fullWidth}\n enableFancyToml={enableFancyToml}\n />\n </>\n );\n\n const SaveOrResetComponent = changesMade && (\n <>\n <Group visibleFrom=\"xs\" justify=\"flex-end\">\n <SaveOrReset unsavedIndicator />\n </Group>\n <Stack hiddenFrom=\"xs\">\n <SaveOrReset unsavedIndicator fullWidth />\n </Stack>\n </>\n );\n\n return (\n <ConfigLayout SaveOrReset={SaveOrResetComponent} {...sectionProps}>\n {disableSidebar && (\n <>\n {GroupsComponent}\n {SaveOrResetComponent}\n </>\n )}\n {!disableSidebar && (\n <Flex w=\"100%\" gap=\"md\" direction={{ base: \"column\", lg: \"row\" }}>\n {/** SIDEBAR (LG) */}\n <Box\n visibleFrom=\"lg\"\n pos=\"relative\"\n className=\"bordered-light\"\n style={{\n borderLeftWidth: 0,\n borderBottomWidth: 0,\n borderTopRightRadius: \"var(--mantine-radius-md)\",\n }}\n >\n <Stack pos=\"sticky\" w={175} top={88} pb={24} m=\"lg\">\n {/** ANCHORS */}\n <ScrollArea\n mah={\n changesMade ? \"calc(100vh - 220px)\" : \"calc(100vh - 130px)\"\n }\n >\n <Stack>\n {groups\n .filter(([_, groupArgs]) => groupArgs)\n .map(([group, groupArgs]) => (\n <Stack key={group} gap=\"xs\">\n <Group justify=\"flex-end\" mr=\"md\" c=\"dimmed\">\n <Bookmark size=\"1rem\" />\n <Text tt=\"uppercase\">{group || \"GENERAL\"}</Text>\n </Group>\n <Stack gap=\"0.1rem\">\n {groupArgs &&\n groupArgs\n .filter((groupArgs) => !groupArgs.hidden)\n .map((groupArgs) => (\n <Button\n key={group + groupArgs.label}\n variant=\"subtle\"\n justify=\"flex-end\"\n size=\"sm\"\n fullWidth\n renderRoot={(props) => (\n <Anchor\n href={\"#\" + group + groupArgs.label}\n {...props}\n />\n )}\n >\n {groupArgs.label}\n </Button>\n ))}\n </Stack>\n </Stack>\n ))}\n </Stack>\n </ScrollArea>\n\n {/** SAVE */}\n <Stack gap=\"xs\">\n <SaveOrReset fullWidth />\n </Stack>\n </Stack>\n </Box>\n\n {/** SELECTOR (MOBILE) */}\n <Select\n hiddenFrom=\"lg\"\n className=\"select-nondimmed-placeholder\"\n placeholder=\"Go To\"\n leftSection={<Bookmark size=\"1rem\" />}\n value={null}\n data={groups\n .filter(([_, groupArgs]) => groupArgs)\n .map(([group, groupArgs]) => ({\n group,\n items: (groupArgs as ConfigGroupArgs<T>[]).map((arg) => ({\n label: arg.label,\n value: group + arg.label,\n })),\n }))}\n onChange={(group) => {\n if (!group) return;\n window.location.hash = group;\n }}\n />\n\n {/** CONTENT */}\n <Stack style={{ flexGrow: 1 }} gap=\"md\">\n {GroupsComponent}\n {SaveOrResetComponent}\n </Stack>\n </Flex>\n )}\n </ConfigLayout>\n );\n}\n"],"mappings":"AA4Gc,SAsER,UAtEQ,KA+Bc,YA/Bd;AA5Gd,SAAS,YAAAA,WAAqC,eAAe;AAE7D;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,qBAAqB;AAC9B,SAAS,UAAU,eAAe;AAClC,SAAS,mBAAmB;AAC5B,SAAS,sBAAsB;AAC/B,SAAS,oBAAoB;AAG7B,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AAsDP,SAAS,OAAU;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,QAAQ;AAAA,EACR,GAAG;AACL,GAAmB;AACjB,QAAM,cAAc,OAAO,KAAK,MAAM,EAAE,SAAS,OAAO;AACxD,QAAM,YAAY,YAAY;AAC5B,UAAM,OAAO;AACb,cAAU,CAAC,CAAC;AAAA,EACd;AACA,QAAM,UAAU,MAAM,UAAU,CAAC,CAAC;AAElC,QAAM,SAAS;AAAA,IACb,MAAM,OAAO,QAAQ,OAAO,EAAE,OAAO,CAAC,CAAC,GAAG,SAAS,MAAM,CAAC,CAAC,SAAS;AAAA,IACpE,CAAC,OAAO;AAAA,EACV;AAEA,QAAM,kBAAkB;AAAA,IACtB,MACE,OAAO,IAAI,CAAC,CAAC,OAAO,SAAS,MAAM;AACjC,aACE,qBAACA,WAAA,EACE;AAAA,iBACC,oBAAC,QAAK,aAAY,MAAK,IAAG,MAAK,IAAG,aAAY,IAAG,MAC9C,iBACH;AAAA,QAGF,oBAAC,SACG,oBACC,OAAO,CAAC,EAAE,OAAO,MAAM,CAAC,MAAM,EAC9B;AAAA,UACC,CAAC;AAAA,YACC;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF,MACE;AAAA,YAAC;AAAA;AAAA,cAEC,IAAI,QAAQ;AAAA,cACZ,GAAE;AAAA,cACF,KAAI;AAAA,cACJ,WAAU;AAAA,cACV,MAAK;AAAA,cACL,OAAO,EAAE,iBAAiB,GAAG;AAAA,cAE5B;AAAA,iBAAC,eACA,qBAAC,SAAM,SAAQ,iBACb;AAAA,uCAAC,SAAM,KAAI,KACT;AAAA,yCAAC,SACE;AAAA;AAAA,sBACD,oBAAC,QAAK,IAAG,MAAM,iBAAM;AAAA,sBACpB;AAAA,uBACH;AAAA,oBACC,eACC,oBAAC,QAAK,GAAE,UAAU,uBAAY;AAAA,qBAElC;AAAA,kBACC;AAAA,mBACH;AAAA,gBAED,CAAC,iBACA;AAAA,kBAAC;AAAA;AAAA,oBACC,QAAQ;AAAA,oBACR;AAAA,oBACA,WAAW,CAAC,MAAM,UAAU,CAAC,OAAO,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE;AAAA,oBACnD;AAAA,oBACA;AAAA;AAAA,gBACF;AAAA;AAAA;AAAA,YA9BG,QAAQ;AAAA,UAgCf;AAAA,QAEJ,GACJ;AAAA,WAzDa,KA0Df;AAAA,IAEJ,CAAC;AAAA,IACH,CAAC,MAAM;AAAA,EACT;AAEA,QAAM,cAAc,CAAC;AAAA,IACnB;AAAA,IACA;AAAA,EACF,MAIE,eACE,iCACG;AAAA,wBAAoB,oBAAC,kBAAe,WAAsB;AAAA,IAC3D;AAAA,MAAC;AAAA;AAAA,QACC,SAAQ;AAAA,QACR,SAAS;AAAA,QACT,UAAU,YAAY,CAAC;AAAA,QACvB,aAAa,oBAAC,WAAQ,MAAK,QAAO;AAAA,QAClC;AAAA,QACA,GAAG,YAAY,SAAY;AAAA,QAC5B;AAAA;AAAA,IAED;AAAA,IACA;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AAAA,IACF;AAAA,KACF;AAGJ,QAAM,uBAAuB,eAC3B,iCACE;AAAA,wBAAC,SAAM,aAAY,MAAK,SAAQ,YAC9B,8BAAC,eAAY,kBAAgB,MAAC,GAChC;AAAA,IACA,oBAAC,SAAM,YAAW,MAChB,8BAAC,eAAY,kBAAgB,MAAC,WAAS,MAAC,GAC1C;AAAA,KACF;AAGF,SACE,qBAAC,gBAAa,aAAa,sBAAuB,GAAG,cAClD;AAAA,sBACC,iCACG;AAAA;AAAA,MACA;AAAA,OACH;AAAA,IAED,CAAC,kBACA,qBAAC,QAAK,GAAE,QAAO,KAAI,MAAK,WAAW,EAAE,MAAM,UAAU,IAAI,MAAM,GAE7D;AAAA;AAAA,QAAC;AAAA;AAAA,UACC,aAAY;AAAA,UACZ,KAAI;AAAA,UACJ,WAAU;AAAA,UACV,OAAO;AAAA,YACL,iBAAiB;AAAA,YACjB,mBAAmB;AAAA,YACnB,sBAAsB;AAAA,UACxB;AAAA,UAEA,+BAAC,SAAM,KAAI,UAAS,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,GAAE,MAE7C;AAAA;AAAA,cAAC;AAAA;AAAA,gBACC,KACE,cAAc,wBAAwB;AAAA,gBAGxC,8BAAC,SACE,iBACE,OAAO,CAAC,CAAC,GAAG,SAAS,MAAM,SAAS,EACpC,IAAI,CAAC,CAAC,OAAO,SAAS,MACrB,qBAAC,SAAkB,KAAI,MACrB;AAAA,uCAAC,SAAM,SAAQ,YAAW,IAAG,MAAK,GAAE,UAClC;AAAA,wCAAC,YAAS,MAAK,QAAO;AAAA,oBACtB,oBAAC,QAAK,IAAG,aAAa,mBAAS,WAAU;AAAA,qBAC3C;AAAA,kBACA,oBAAC,SAAM,KAAI,UACR,uBACC,UACG,OAAO,CAACC,eAAc,CAACA,WAAU,MAAM,EACvC,IAAI,CAACA,eACJ;AAAA,oBAAC;AAAA;AAAA,sBAEC,SAAQ;AAAA,sBACR,SAAQ;AAAA,sBACR,MAAK;AAAA,sBACL,WAAS;AAAA,sBACT,YAAY,CAAC,UACX;AAAA,wBAAC;AAAA;AAAA,0BACC,MAAM,MAAM,QAAQA,WAAU;AAAA,0BAC7B,GAAG;AAAA;AAAA,sBACN;AAAA,sBAGD,UAAAA,WAAU;AAAA;AAAA,oBAZN,QAAQA,WAAU;AAAA,kBAazB,CACD,GACP;AAAA,qBA1BU,KA2BZ,CACD,GACL;AAAA;AAAA,YACF;AAAA,YAGA,oBAAC,SAAM,KAAI,MACT,8BAAC,eAAY,WAAS,MAAC,GACzB;AAAA,aACF;AAAA;AAAA,MACF;AAAA,MAGA;AAAA,QAAC;AAAA;AAAA,UACC,YAAW;AAAA,UACX,WAAU;AAAA,UACV,aAAY;AAAA,UACZ,aAAa,oBAAC,YAAS,MAAK,QAAO;AAAA,UACnC,OAAO;AAAA,UACP,MAAM,OACH,OAAO,CAAC,CAAC,GAAG,SAAS,MAAM,SAAS,EACpC,IAAI,CAAC,CAAC,OAAO,SAAS,OAAO;AAAA,YAC5B;AAAA,YACA,OAAQ,UAAmC,IAAI,CAAC,SAAS;AAAA,cACvD,OAAO,IAAI;AAAA,cACX,OAAO,QAAQ,IAAI;AAAA,YACrB,EAAE;AAAA,UACJ,EAAE;AAAA,UACJ,UAAU,CAAC,UAAU;AACnB,gBAAI,CAAC,MAAO;AACZ,mBAAO,SAAS,OAAO;AAAA,UACzB;AAAA;AAAA,MACF;AAAA,MAGA,qBAAC,SAAM,OAAO,EAAE,UAAU,EAAE,GAAG,KAAI,MAChC;AAAA;AAAA,QACA;AAAA,SACH;AAAA,OACF;AAAA,KAEJ;AAEJ;","names":["Fragment","groupArgs"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/config/index.tsx"],"sourcesContent":["import { Fragment, ReactNode, SetStateAction, useMemo } from \"react\";\nimport { MonacoLanguage } from \"../monaco\";\nimport {\n Anchor,\n Box,\n Button,\n Flex,\n Group,\n ScrollArea,\n Select,\n Stack,\n Text,\n} from \"@mantine/core\";\nimport { ConfirmUpdate } from \"./confirm\";\nimport { Bookmark, History } from \"lucide-react\";\nimport { ConfigGroup } from \"./group\";\nimport { UnsavedChanges } from \"./unsaved-changes\";\nimport { ConfigLayout } from \"./layout\";\nimport { SectionProps } from \"../section\";\n\nexport * from \"./confirm\";\nexport * from \"./group\";\nexport * from \"./item\";\nexport * from \"./layout\";\nexport * from \"./unsaved-changes\";\n\nexport interface ConfigFieldArgs {\n label?: string;\n description?: ReactNode;\n /** Useful to set explicitly in cases where value is nullable from the API (so type cannot be inferred). */\n type?:\n | \"string\"\n | \"number\"\n | \"bigint\"\n | \"boolean\"\n | \"symbol\"\n | \"undefined\"\n | \"object\"\n | \"function\";\n /** Use a selector instead of input */\n options?: { value: string; label?: string }[];\n placeholder?: string;\n hidden?: boolean;\n disabled?: boolean;\n}\n\nexport interface ConfigGroupArgs<T> {\n label: string;\n labelExtra?: ReactNode;\n icon?: ReactNode;\n description?: ReactNode;\n actions?: ReactNode;\n hidden?: boolean;\n labelHidden?: boolean;\n contentHidden?: boolean;\n fields: {\n [K in keyof Partial<T>]:\n | boolean\n | ConfigFieldArgs\n | ((value: T[K], set: (value: Partial<T>) => void) => ReactNode);\n };\n}\n\nexport interface ConfigProps<T> extends SectionProps {\n original: T;\n update: Partial<T>;\n setUpdate: React.Dispatch<SetStateAction<Partial<T>>>;\n disabled: boolean;\n onSave: () => Promise<unknown>;\n disableSidebar?: boolean;\n fileContentsLanguage?: MonacoLanguage;\n enableFancyToml?: boolean;\n groups: Record<\n string, // Section key\n ConfigGroupArgs<T>[] | false | undefined\n >;\n}\n\nexport function Config<T>({\n original,\n update,\n setUpdate,\n disabled,\n onSave,\n disableSidebar,\n fileContentsLanguage,\n enableFancyToml,\n groups: _groups,\n ...sectionProps\n}: ConfigProps<T>) {\n const changesMade = Object.keys(update).length ? true : false;\n const onConfirm = async () => {\n await onSave();\n setUpdate({});\n };\n const onReset = () => setUpdate({});\n\n const groups = useMemo(\n () => Object.entries(_groups).filter(([_, groupArgs]) => !!groupArgs),\n [_groups],\n );\n\n const GroupsComponent = useMemo(\n () =>\n groups.map(([group, groupArgs]) => {\n return (\n <Fragment key={group}>\n {group && (\n <Text visibleFrom=\"lg\" fz=\"h2\" tt=\"uppercase\" mt=\"xl\">\n {group}\n </Text>\n )}\n\n <Stack>\n {(groupArgs as ConfigGroupArgs<T>[])\n .filter(({ hidden }) => !hidden)\n .map(\n ({\n label,\n labelHidden,\n icon,\n labelExtra,\n actions,\n description,\n contentHidden,\n fields,\n }) => (\n <Stack\n key={group + label}\n id={group + label}\n p=\"xl\"\n gap=\"md\"\n className=\"bordered-light\"\n bdrs=\"md\"\n style={{ scrollMarginTop: 94 }}\n >\n {!labelHidden && (\n <Group justify=\"space-between\">\n <Stack gap=\"0\">\n <Group>\n {icon}\n <Text fz=\"h3\">{label}</Text>\n {labelExtra}\n </Group>\n {description && (\n <Text c=\"dimmed\">{description}</Text>\n )}\n </Stack>\n {actions}\n </Group>\n )}\n {!contentHidden && (\n <ConfigGroup\n config={original}\n update={update}\n setUpdate={(u) => setUpdate((p) => ({ ...p, ...u }))}\n fields={fields}\n disabled={disabled}\n />\n )}\n </Stack>\n ),\n )}\n </Stack>\n </Fragment>\n );\n }),\n [groups],\n );\n\n const SaveOrReset = ({\n unsavedIndicator,\n fullWidth,\n }: {\n unsavedIndicator?: boolean;\n fullWidth?: boolean;\n }) =>\n changesMade && (\n <>\n {unsavedIndicator && <UnsavedChanges fullWidth={fullWidth} />}\n <Button\n variant=\"outline\"\n onClick={onReset}\n disabled={disabled || !changesMade}\n leftSection={<History size=\"1rem\" />}\n fullWidth={fullWidth}\n w={fullWidth ? undefined : 100}\n >\n Reset\n </Button>\n <ConfirmUpdate\n original={original}\n update={update}\n onConfirm={onConfirm}\n disabled={disabled}\n fileContentsLanguage={fileContentsLanguage}\n fullWidth={fullWidth}\n enableFancyToml={enableFancyToml}\n />\n </>\n );\n\n const SaveOrResetComponent = changesMade && (\n <>\n <Group visibleFrom=\"xs\" justify=\"flex-end\">\n <SaveOrReset unsavedIndicator />\n </Group>\n <Stack hiddenFrom=\"xs\">\n <SaveOrReset unsavedIndicator fullWidth />\n </Stack>\n </>\n );\n\n return (\n <ConfigLayout SaveOrReset={SaveOrResetComponent} {...sectionProps}>\n {disableSidebar && (\n <>\n {GroupsComponent}\n {SaveOrResetComponent}\n </>\n )}\n {!disableSidebar && (\n <Flex w=\"100%\" gap=\"md\" direction={{ base: \"column\", lg: \"row\" }}>\n {/** SIDEBAR (LG) */}\n <Box\n visibleFrom=\"lg\"\n pos=\"relative\"\n className=\"bordered-light\"\n style={{\n borderLeftWidth: 0,\n borderBottomWidth: 0,\n borderTopRightRadius: \"var(--mantine-radius-md)\",\n }}\n >\n <Stack pos=\"sticky\" w={175} top={88} pb={24} m=\"lg\">\n {/** ANCHORS */}\n <ScrollArea\n mah={\n changesMade ? \"calc(100vh - 220px)\" : \"calc(100vh - 130px)\"\n }\n >\n <Stack>\n {groups\n .filter(([_, groupArgs]) => groupArgs)\n .map(([group, groupArgs]) => (\n <Stack key={group} gap=\"xs\">\n <Group justify=\"flex-end\" mr=\"md\" c=\"dimmed\">\n <Bookmark size=\"1rem\" />\n <Text tt=\"uppercase\">{group || \"GENERAL\"}</Text>\n </Group>\n <Stack gap=\"0.1rem\">\n {groupArgs &&\n groupArgs\n .filter((groupArgs) => !groupArgs.hidden)\n .map((groupArgs) => (\n <Button\n key={group + groupArgs.label}\n variant=\"subtle\"\n justify=\"flex-end\"\n size=\"sm\"\n fullWidth\n renderRoot={(props) => (\n <Anchor\n href={\"#\" + group + groupArgs.label}\n {...props}\n />\n )}\n >\n {groupArgs.label}\n </Button>\n ))}\n </Stack>\n </Stack>\n ))}\n </Stack>\n </ScrollArea>\n\n {/** SAVE */}\n <Stack gap=\"xs\">\n <SaveOrReset fullWidth />\n </Stack>\n </Stack>\n </Box>\n\n {/** SELECTOR (MOBILE) */}\n <Select\n hiddenFrom=\"lg\"\n className=\"select-nondimmed-placeholder\"\n placeholder=\"Go To\"\n leftSection={<Bookmark size=\"1rem\" />}\n value={null}\n data={groups\n .filter(([_, groupArgs]) => groupArgs)\n .map(([group, groupArgs]) => ({\n group,\n items: (groupArgs as ConfigGroupArgs<T>[]).map((arg) => ({\n label: arg.label,\n value: group + arg.label,\n })),\n }))}\n onChange={(group) => {\n if (!group) return;\n window.location.hash = group;\n }}\n />\n\n {/** CONTENT */}\n <Stack style={{ flexGrow: 1 }} gap=\"md\">\n {GroupsComponent}\n {SaveOrResetComponent}\n </Stack>\n </Flex>\n )}\n </ConfigLayout>\n );\n}\n"],"mappings":"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","names":["Fragment","groupArgs"]}
|
|
@@ -21,6 +21,7 @@ __export(item_exports, {
|
|
|
21
21
|
ConfigInput: () => ConfigInput,
|
|
22
22
|
ConfigItem: () => ConfigItem,
|
|
23
23
|
ConfigList: () => ConfigList,
|
|
24
|
+
ConfigSelector: () => ConfigSelector,
|
|
24
25
|
ConfigSwitch: () => ConfigSwitch
|
|
25
26
|
});
|
|
26
27
|
module.exports = __toCommonJS(item_exports);
|
|
@@ -86,6 +87,43 @@ function ConfigInput({
|
|
|
86
87
|
inputRight
|
|
87
88
|
] }) : inputNode });
|
|
88
89
|
}
|
|
90
|
+
function ConfigSelector({
|
|
91
|
+
value,
|
|
92
|
+
options,
|
|
93
|
+
disabled,
|
|
94
|
+
placeholder,
|
|
95
|
+
onValueChange,
|
|
96
|
+
onBlur,
|
|
97
|
+
inputLeft,
|
|
98
|
+
inputRight,
|
|
99
|
+
inputProps,
|
|
100
|
+
email,
|
|
101
|
+
...itemProps
|
|
102
|
+
}) {
|
|
103
|
+
const inputNode = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
104
|
+
import_core.Select,
|
|
105
|
+
{
|
|
106
|
+
w: { base: "85%", lg: 400 },
|
|
107
|
+
value,
|
|
108
|
+
data: options?.map(({ value: value2, label }) => ({
|
|
109
|
+
value: value2,
|
|
110
|
+
label: label ?? value2
|
|
111
|
+
})),
|
|
112
|
+
placeholder,
|
|
113
|
+
disabled,
|
|
114
|
+
onChange: (value2) => {
|
|
115
|
+
value2 && onValueChange?.(value2);
|
|
116
|
+
},
|
|
117
|
+
onBlur: (e) => onBlur?.(e.target.value),
|
|
118
|
+
...inputProps
|
|
119
|
+
}
|
|
120
|
+
);
|
|
121
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ConfigItem, { ...itemProps, children: inputLeft || inputRight ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_core.Group, { children: [
|
|
122
|
+
inputLeft,
|
|
123
|
+
inputNode,
|
|
124
|
+
inputRight
|
|
125
|
+
] }) : inputNode });
|
|
126
|
+
}
|
|
89
127
|
function ConfigSwitch({
|
|
90
128
|
value,
|
|
91
129
|
disabled,
|
|
@@ -136,6 +174,7 @@ function ConfigList({
|
|
|
136
174
|
ConfigInput,
|
|
137
175
|
ConfigItem,
|
|
138
176
|
ConfigList,
|
|
177
|
+
ConfigSelector,
|
|
139
178
|
ConfigSwitch
|
|
140
179
|
});
|
|
141
180
|
//# sourceMappingURL=item.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/config/item.tsx"],"sourcesContent":["import {\n Button,\n createPolymorphicComponent,\n Group,\n Stack,\n StackProps,\n SwitchProps,\n Text,\n TextInput,\n TextInputProps,\n} from \"@mantine/core\";\nimport { forwardRef, ReactNode } from \"react\";\nimport { fmtSnakeCaseToUpperSpaceCase } from \"../../formatting\";\nimport { EnableSwitch } from \"../enable-switch\";\nimport { InputList, InputListProps } from \"../input-list\";\nimport { Plus } from \"lucide-react\";\n\n// https://mantine.dev/guides/polymorphic/#create-your-own-polymorphic-components\n\nexport interface ConfigItemProps extends StackProps {\n label?: ReactNode;\n labelExtra?: ReactNode;\n description?: ReactNode;\n children?: ReactNode;\n}\n\nexport const ConfigItem = createPolymorphicComponent<\"div\", ConfigItemProps>(\n forwardRef<HTMLDivElement, ConfigItemProps>(\n ({ label, labelExtra, description, children, ...props }, ref) => {\n const labelDescription = (label || description) && (\n <Stack gap=\"0\">\n {typeof label === \"string\" && (\n <Text fz=\"h3\">{fmtSnakeCaseToUpperSpaceCase(label)}</Text>\n )}\n {label && typeof label !== \"string\" && label}\n {description && (\n // component=\"div\" so ReactNode descriptions (Groups, nested Text)\n // don't produce invalid markup inside the default <p>.\n <Text c=\"dimmed\" component=\"div\">\n {description}\n </Text>\n )}\n </Stack>\n );\n return (\n <Stack {...props} ref={ref}>\n {labelExtra ? (\n <Group>\n {labelDescription}\n {labelExtra}\n </Group>\n ) : (\n labelDescription\n )}\n {children}\n </Stack>\n );\n },\n ),\n);\n\nexport function ConfigInput({\n value,\n disabled,\n placeholder,\n onChange,\n onValueChange,\n onBlur,\n inputLeft,\n inputRight,\n inputProps,\n email,\n ...itemProps\n}: {\n value: string | number | undefined;\n disabled?: boolean;\n placeholder?: string;\n onValueChange?: (value: string) => void;\n onBlur?: (value: string) => void;\n inputLeft?: ReactNode;\n inputRight?: ReactNode;\n inputProps?: TextInputProps;\n email?: boolean;\n} & Omit<ConfigItemProps, \"children\">) {\n const inputNode = (\n <TextInput\n w={{ base: \"85%\", lg: 400 }}\n value={value}\n placeholder={placeholder}\n disabled={disabled}\n type={typeof value === \"number\" ? \"number\" : email ? \"email\" : undefined}\n onChange={(e) => {\n onChange?.(e);\n onValueChange?.(e.target.value);\n }}\n onBlur={(e) => onBlur?.(e.target.value)}\n {...inputProps}\n />\n );\n return (\n <ConfigItem {...itemProps}>\n {inputLeft || inputRight ? (\n <Group>\n {inputLeft}\n {inputNode}\n {inputRight}\n </Group>\n ) : (\n inputNode\n )}\n </ConfigItem>\n );\n}\n\nexport function ConfigSwitch({\n value,\n disabled,\n onCheckedChange,\n switchProps,\n ...itemProps\n}: {\n value: boolean | undefined;\n disabled: boolean;\n onCheckedChange: (value: boolean) => void;\n switchProps?: SwitchProps;\n} & Omit<ConfigItemProps, \"children\">) {\n return (\n <ConfigItem {...itemProps}>\n <EnableSwitch\n checked={value}\n onCheckedChange={onCheckedChange}\n disabled={disabled}\n {...switchProps}\n />\n </ConfigItem>\n );\n}\n\nexport function ConfigList<T>({\n addLabel,\n label,\n description,\n ...inputListProps\n}: { label?: string; addLabel?: string } & InputListProps<T> &\n Omit<ConfigItemProps, \"children\">) {\n return (\n <ConfigItem label={label} description={description}>\n <InputList\n inputProps={{ w: { base: \"85%\", lg: 400 } }}\n {...inputListProps}\n />\n {!inputListProps.disabled && (\n <Button\n leftSection={<Plus size=\"1rem\" />}\n onClick={() =>\n inputListProps.set({\n [inputListProps.field]: [...inputListProps.values, \"\"],\n } as Partial<T>)\n }\n w={{ base: \"85%\", lg: 400 }}\n disabled={inputListProps.disabled}\n >\n {addLabel ??\n (\"Add \" + label?.endsWith(\"s\") ? label?.slice(0, -1) : label)}\n </Button>\n )}\n </ConfigItem>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;
|
|
1
|
+
{"version":3,"sources":["../../../src/components/config/item.tsx"],"sourcesContent":["import {\n Button,\n createPolymorphicComponent,\n Group,\n Select,\n SelectProps,\n Stack,\n StackProps,\n SwitchProps,\n Text,\n TextInput,\n TextInputProps,\n} from \"@mantine/core\";\nimport { forwardRef, ReactNode } from \"react\";\nimport { fmtSnakeCaseToUpperSpaceCase } from \"../../formatting\";\nimport { EnableSwitch } from \"../enable-switch\";\nimport { InputList, InputListProps } from \"../input-list\";\nimport { Plus } from \"lucide-react\";\n\n// https://mantine.dev/guides/polymorphic/#create-your-own-polymorphic-components\n\nexport interface ConfigItemProps extends StackProps {\n label?: ReactNode;\n labelExtra?: ReactNode;\n description?: ReactNode;\n children?: ReactNode;\n}\n\nexport const ConfigItem = createPolymorphicComponent<\"div\", ConfigItemProps>(\n forwardRef<HTMLDivElement, ConfigItemProps>(\n ({ label, labelExtra, description, children, ...props }, ref) => {\n const labelDescription = (label || description) && (\n <Stack gap=\"0\">\n {typeof label === \"string\" && (\n <Text fz=\"h3\">{fmtSnakeCaseToUpperSpaceCase(label)}</Text>\n )}\n {label && typeof label !== \"string\" && label}\n {description && (\n // component=\"div\" so ReactNode descriptions (Groups, nested Text)\n // don't produce invalid markup inside the default <p>.\n <Text c=\"dimmed\" component=\"div\">\n {description}\n </Text>\n )}\n </Stack>\n );\n return (\n <Stack {...props} ref={ref}>\n {labelExtra ? (\n <Group>\n {labelDescription}\n {labelExtra}\n </Group>\n ) : (\n labelDescription\n )}\n {children}\n </Stack>\n );\n },\n ),\n);\n\nexport function ConfigInput({\n value,\n disabled,\n placeholder,\n onChange,\n onValueChange,\n onBlur,\n inputLeft,\n inputRight,\n inputProps,\n email,\n ...itemProps\n}: {\n value: string | number | undefined;\n disabled?: boolean;\n placeholder?: string;\n onValueChange?: (value: string) => void;\n onBlur?: (value: string) => void;\n inputLeft?: ReactNode;\n inputRight?: ReactNode;\n inputProps?: TextInputProps;\n email?: boolean;\n} & Omit<ConfigItemProps, \"children\">) {\n const inputNode = (\n <TextInput\n w={{ base: \"85%\", lg: 400 }}\n value={value}\n placeholder={placeholder}\n disabled={disabled}\n type={typeof value === \"number\" ? \"number\" : email ? \"email\" : undefined}\n onChange={(e) => {\n onChange?.(e);\n onValueChange?.(e.target.value);\n }}\n onBlur={(e) => onBlur?.(e.target.value)}\n {...inputProps}\n />\n );\n return (\n <ConfigItem {...itemProps}>\n {inputLeft || inputRight ? (\n <Group>\n {inputLeft}\n {inputNode}\n {inputRight}\n </Group>\n ) : (\n inputNode\n )}\n </ConfigItem>\n );\n}\n\nexport function ConfigSelector({\n value,\n options,\n disabled,\n placeholder,\n onValueChange,\n onBlur,\n inputLeft,\n inputRight,\n inputProps,\n email,\n ...itemProps\n}: {\n value: string | undefined;\n options?: { value: string; label?: string }[];\n disabled?: boolean;\n placeholder?: string;\n onValueChange?: (value: string) => void;\n onBlur?: (value: string) => void;\n inputLeft?: ReactNode;\n inputRight?: ReactNode;\n inputProps?: SelectProps;\n email?: boolean;\n} & Omit<ConfigItemProps, \"children\">) {\n const inputNode = (\n <Select\n w={{ base: \"85%\", lg: 400 }}\n value={value}\n data={options?.map(({ value, label }) => ({\n value,\n label: label ?? value,\n }))}\n placeholder={placeholder}\n disabled={disabled}\n onChange={(value) => {\n value && onValueChange?.(value);\n }}\n onBlur={(e) => onBlur?.(e.target.value)}\n {...inputProps}\n />\n );\n return (\n <ConfigItem {...itemProps}>\n {inputLeft || inputRight ? (\n <Group>\n {inputLeft}\n {inputNode}\n {inputRight}\n </Group>\n ) : (\n inputNode\n )}\n </ConfigItem>\n );\n}\n\nexport function ConfigSwitch({\n value,\n disabled,\n onCheckedChange,\n switchProps,\n ...itemProps\n}: {\n value: boolean | undefined;\n disabled: boolean;\n onCheckedChange: (value: boolean) => void;\n switchProps?: SwitchProps;\n} & Omit<ConfigItemProps, \"children\">) {\n return (\n <ConfigItem {...itemProps}>\n <EnableSwitch\n checked={value}\n onCheckedChange={onCheckedChange}\n disabled={disabled}\n {...switchProps}\n />\n </ConfigItem>\n );\n}\n\nexport function ConfigList<T>({\n addLabel,\n label,\n description,\n ...inputListProps\n}: { label?: string; addLabel?: string } & InputListProps<T> &\n Omit<ConfigItemProps, \"children\">) {\n return (\n <ConfigItem label={label} description={description}>\n <InputList\n inputProps={{ w: { base: \"85%\", lg: 400 } }}\n {...inputListProps}\n />\n {!inputListProps.disabled && (\n <Button\n leftSection={<Plus size=\"1rem\" />}\n onClick={() =>\n inputListProps.set({\n [inputListProps.field]: [...inputListProps.values, \"\"],\n } as Partial<T>)\n }\n w={{ base: \"85%\", lg: 400 }}\n disabled={inputListProps.disabled}\n >\n {addLabel ??\n (\"Add \" + label?.endsWith(\"s\") ? label?.slice(0, -1) : label)}\n </Button>\n )}\n </ConfigItem>\n );\n}\n"],"mappings":"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","names":["value"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { StackProps, SwitchProps, TextInputProps } from "@mantine/core";
|
|
1
|
+
import { SelectProps, StackProps, SwitchProps, TextInputProps } from "@mantine/core";
|
|
2
2
|
import { ReactNode } from "react";
|
|
3
3
|
import { InputListProps } from "../input-list";
|
|
4
4
|
export interface ConfigItemProps extends StackProps {
|
|
@@ -27,6 +27,21 @@ export declare function ConfigInput({ value, disabled, placeholder, onChange, on
|
|
|
27
27
|
inputProps?: TextInputProps;
|
|
28
28
|
email?: boolean;
|
|
29
29
|
} & Omit<ConfigItemProps, "children">): import("react").JSX.Element;
|
|
30
|
+
export declare function ConfigSelector({ value, options, disabled, placeholder, onValueChange, onBlur, inputLeft, inputRight, inputProps, email, ...itemProps }: {
|
|
31
|
+
value: string | undefined;
|
|
32
|
+
options?: {
|
|
33
|
+
value: string;
|
|
34
|
+
label?: string;
|
|
35
|
+
}[];
|
|
36
|
+
disabled?: boolean;
|
|
37
|
+
placeholder?: string;
|
|
38
|
+
onValueChange?: (value: string) => void;
|
|
39
|
+
onBlur?: (value: string) => void;
|
|
40
|
+
inputLeft?: ReactNode;
|
|
41
|
+
inputRight?: ReactNode;
|
|
42
|
+
inputProps?: SelectProps;
|
|
43
|
+
email?: boolean;
|
|
44
|
+
} & Omit<ConfigItemProps, "children">): import("react").JSX.Element;
|
|
30
45
|
export declare function ConfigSwitch({ value, disabled, onCheckedChange, switchProps, ...itemProps }: {
|
|
31
46
|
value: boolean | undefined;
|
|
32
47
|
disabled: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"item.d.ts","sourceRoot":"","sources":["../../../src/components/config/item.tsx"],"names":[],"mappings":"AAAA,OAAO,EAKL,UAAU,EACV,WAAW,EAGX,cAAc,EACf,MAAM,eAAe,CAAC;AACvB,OAAO,EAAc,SAAS,EAAE,MAAM,OAAO,CAAC;AAG9C,OAAO,EAAa,cAAc,EAAE,MAAM,eAAe,CAAC;AAK1D,MAAM,WAAW,eAAgB,SAAQ,UAAU;IACjD,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,eAAO,MAAM,UAAU;;;;;;;;mCAiCtB,CAAC;AAEF,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,aAAa,EACb,MAAM,EACN,SAAS,EACT,UAAU,EACV,UAAU,EACV,KAAK,EACL,GAAG,SAAS,EACb,EAAE;IACD,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACnC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,GAAG,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,+BA6BpC;AAED,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,QAAQ,EACR,eAAe,EACf,WAAW,EACX,GAAG,SAAS,EACb,EAAE;IACD,KAAK,EAAE,OAAO,GAAG,SAAS,CAAC;IAC3B,QAAQ,EAAE,OAAO,CAAC;IAClB,eAAe,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC1C,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B,GAAG,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,+BAWpC;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,EAC5B,QAAQ,EACR,KAAK,EACL,WAAW,EACX,GAAG,cAAc,EAClB,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,cAAc,CAAC,CAAC,CAAC,GAC1D,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,+BAwBlC"}
|
|
1
|
+
{"version":3,"file":"item.d.ts","sourceRoot":"","sources":["../../../src/components/config/item.tsx"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ import {
|
|
|
3
3
|
Button,
|
|
4
4
|
createPolymorphicComponent,
|
|
5
5
|
Group,
|
|
6
|
+
Select,
|
|
6
7
|
Stack,
|
|
7
8
|
Text,
|
|
8
9
|
TextInput
|
|
@@ -67,6 +68,43 @@ function ConfigInput({
|
|
|
67
68
|
inputRight
|
|
68
69
|
] }) : inputNode });
|
|
69
70
|
}
|
|
71
|
+
function ConfigSelector({
|
|
72
|
+
value,
|
|
73
|
+
options,
|
|
74
|
+
disabled,
|
|
75
|
+
placeholder,
|
|
76
|
+
onValueChange,
|
|
77
|
+
onBlur,
|
|
78
|
+
inputLeft,
|
|
79
|
+
inputRight,
|
|
80
|
+
inputProps,
|
|
81
|
+
email,
|
|
82
|
+
...itemProps
|
|
83
|
+
}) {
|
|
84
|
+
const inputNode = /* @__PURE__ */ jsx(
|
|
85
|
+
Select,
|
|
86
|
+
{
|
|
87
|
+
w: { base: "85%", lg: 400 },
|
|
88
|
+
value,
|
|
89
|
+
data: options?.map(({ value: value2, label }) => ({
|
|
90
|
+
value: value2,
|
|
91
|
+
label: label ?? value2
|
|
92
|
+
})),
|
|
93
|
+
placeholder,
|
|
94
|
+
disabled,
|
|
95
|
+
onChange: (value2) => {
|
|
96
|
+
value2 && onValueChange?.(value2);
|
|
97
|
+
},
|
|
98
|
+
onBlur: (e) => onBlur?.(e.target.value),
|
|
99
|
+
...inputProps
|
|
100
|
+
}
|
|
101
|
+
);
|
|
102
|
+
return /* @__PURE__ */ jsx(ConfigItem, { ...itemProps, children: inputLeft || inputRight ? /* @__PURE__ */ jsxs(Group, { children: [
|
|
103
|
+
inputLeft,
|
|
104
|
+
inputNode,
|
|
105
|
+
inputRight
|
|
106
|
+
] }) : inputNode });
|
|
107
|
+
}
|
|
70
108
|
function ConfigSwitch({
|
|
71
109
|
value,
|
|
72
110
|
disabled,
|
|
@@ -116,6 +154,7 @@ export {
|
|
|
116
154
|
ConfigInput,
|
|
117
155
|
ConfigItem,
|
|
118
156
|
ConfigList,
|
|
157
|
+
ConfigSelector,
|
|
119
158
|
ConfigSwitch
|
|
120
159
|
};
|
|
121
160
|
//# sourceMappingURL=item.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/config/item.tsx"],"sourcesContent":["import {\n Button,\n createPolymorphicComponent,\n Group,\n Stack,\n StackProps,\n SwitchProps,\n Text,\n TextInput,\n TextInputProps,\n} from \"@mantine/core\";\nimport { forwardRef, ReactNode } from \"react\";\nimport { fmtSnakeCaseToUpperSpaceCase } from \"../../formatting\";\nimport { EnableSwitch } from \"../enable-switch\";\nimport { InputList, InputListProps } from \"../input-list\";\nimport { Plus } from \"lucide-react\";\n\n// https://mantine.dev/guides/polymorphic/#create-your-own-polymorphic-components\n\nexport interface ConfigItemProps extends StackProps {\n label?: ReactNode;\n labelExtra?: ReactNode;\n description?: ReactNode;\n children?: ReactNode;\n}\n\nexport const ConfigItem = createPolymorphicComponent<\"div\", ConfigItemProps>(\n forwardRef<HTMLDivElement, ConfigItemProps>(\n ({ label, labelExtra, description, children, ...props }, ref) => {\n const labelDescription = (label || description) && (\n <Stack gap=\"0\">\n {typeof label === \"string\" && (\n <Text fz=\"h3\">{fmtSnakeCaseToUpperSpaceCase(label)}</Text>\n )}\n {label && typeof label !== \"string\" && label}\n {description && (\n // component=\"div\" so ReactNode descriptions (Groups, nested Text)\n // don't produce invalid markup inside the default <p>.\n <Text c=\"dimmed\" component=\"div\">\n {description}\n </Text>\n )}\n </Stack>\n );\n return (\n <Stack {...props} ref={ref}>\n {labelExtra ? (\n <Group>\n {labelDescription}\n {labelExtra}\n </Group>\n ) : (\n labelDescription\n )}\n {children}\n </Stack>\n );\n },\n ),\n);\n\nexport function ConfigInput({\n value,\n disabled,\n placeholder,\n onChange,\n onValueChange,\n onBlur,\n inputLeft,\n inputRight,\n inputProps,\n email,\n ...itemProps\n}: {\n value: string | number | undefined;\n disabled?: boolean;\n placeholder?: string;\n onValueChange?: (value: string) => void;\n onBlur?: (value: string) => void;\n inputLeft?: ReactNode;\n inputRight?: ReactNode;\n inputProps?: TextInputProps;\n email?: boolean;\n} & Omit<ConfigItemProps, \"children\">) {\n const inputNode = (\n <TextInput\n w={{ base: \"85%\", lg: 400 }}\n value={value}\n placeholder={placeholder}\n disabled={disabled}\n type={typeof value === \"number\" ? \"number\" : email ? \"email\" : undefined}\n onChange={(e) => {\n onChange?.(e);\n onValueChange?.(e.target.value);\n }}\n onBlur={(e) => onBlur?.(e.target.value)}\n {...inputProps}\n />\n );\n return (\n <ConfigItem {...itemProps}>\n {inputLeft || inputRight ? (\n <Group>\n {inputLeft}\n {inputNode}\n {inputRight}\n </Group>\n ) : (\n inputNode\n )}\n </ConfigItem>\n );\n}\n\nexport function ConfigSwitch({\n value,\n disabled,\n onCheckedChange,\n switchProps,\n ...itemProps\n}: {\n value: boolean | undefined;\n disabled: boolean;\n onCheckedChange: (value: boolean) => void;\n switchProps?: SwitchProps;\n} & Omit<ConfigItemProps, \"children\">) {\n return (\n <ConfigItem {...itemProps}>\n <EnableSwitch\n checked={value}\n onCheckedChange={onCheckedChange}\n disabled={disabled}\n {...switchProps}\n />\n </ConfigItem>\n );\n}\n\nexport function ConfigList<T>({\n addLabel,\n label,\n description,\n ...inputListProps\n}: { label?: string; addLabel?: string } & InputListProps<T> &\n Omit<ConfigItemProps, \"children\">) {\n return (\n <ConfigItem label={label} description={description}>\n <InputList\n inputProps={{ w: { base: \"85%\", lg: 400 } }}\n {...inputListProps}\n />\n {!inputListProps.disabled && (\n <Button\n leftSection={<Plus size=\"1rem\" />}\n onClick={() =>\n inputListProps.set({\n [inputListProps.field]: [...inputListProps.values, \"\"],\n } as Partial<T>)\n }\n w={{ base: \"85%\", lg: 400 }}\n disabled={inputListProps.disabled}\n >\n {addLabel ??\n (\"Add \" + label?.endsWith(\"s\") ? label?.slice(0, -1) : label)}\n </Button>\n )}\n </ConfigItem>\n );\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../../src/components/config/item.tsx"],"sourcesContent":["import {\n Button,\n createPolymorphicComponent,\n Group,\n Select,\n SelectProps,\n Stack,\n StackProps,\n SwitchProps,\n Text,\n TextInput,\n TextInputProps,\n} from \"@mantine/core\";\nimport { forwardRef, ReactNode } from \"react\";\nimport { fmtSnakeCaseToUpperSpaceCase } from \"../../formatting\";\nimport { EnableSwitch } from \"../enable-switch\";\nimport { InputList, InputListProps } from \"../input-list\";\nimport { Plus } from \"lucide-react\";\n\n// https://mantine.dev/guides/polymorphic/#create-your-own-polymorphic-components\n\nexport interface ConfigItemProps extends StackProps {\n label?: ReactNode;\n labelExtra?: ReactNode;\n description?: ReactNode;\n children?: ReactNode;\n}\n\nexport const ConfigItem = createPolymorphicComponent<\"div\", ConfigItemProps>(\n forwardRef<HTMLDivElement, ConfigItemProps>(\n ({ label, labelExtra, description, children, ...props }, ref) => {\n const labelDescription = (label || description) && (\n <Stack gap=\"0\">\n {typeof label === \"string\" && (\n <Text fz=\"h3\">{fmtSnakeCaseToUpperSpaceCase(label)}</Text>\n )}\n {label && typeof label !== \"string\" && label}\n {description && (\n // component=\"div\" so ReactNode descriptions (Groups, nested Text)\n // don't produce invalid markup inside the default <p>.\n <Text c=\"dimmed\" component=\"div\">\n {description}\n </Text>\n )}\n </Stack>\n );\n return (\n <Stack {...props} ref={ref}>\n {labelExtra ? (\n <Group>\n {labelDescription}\n {labelExtra}\n </Group>\n ) : (\n labelDescription\n )}\n {children}\n </Stack>\n );\n },\n ),\n);\n\nexport function ConfigInput({\n value,\n disabled,\n placeholder,\n onChange,\n onValueChange,\n onBlur,\n inputLeft,\n inputRight,\n inputProps,\n email,\n ...itemProps\n}: {\n value: string | number | undefined;\n disabled?: boolean;\n placeholder?: string;\n onValueChange?: (value: string) => void;\n onBlur?: (value: string) => void;\n inputLeft?: ReactNode;\n inputRight?: ReactNode;\n inputProps?: TextInputProps;\n email?: boolean;\n} & Omit<ConfigItemProps, \"children\">) {\n const inputNode = (\n <TextInput\n w={{ base: \"85%\", lg: 400 }}\n value={value}\n placeholder={placeholder}\n disabled={disabled}\n type={typeof value === \"number\" ? \"number\" : email ? \"email\" : undefined}\n onChange={(e) => {\n onChange?.(e);\n onValueChange?.(e.target.value);\n }}\n onBlur={(e) => onBlur?.(e.target.value)}\n {...inputProps}\n />\n );\n return (\n <ConfigItem {...itemProps}>\n {inputLeft || inputRight ? (\n <Group>\n {inputLeft}\n {inputNode}\n {inputRight}\n </Group>\n ) : (\n inputNode\n )}\n </ConfigItem>\n );\n}\n\nexport function ConfigSelector({\n value,\n options,\n disabled,\n placeholder,\n onValueChange,\n onBlur,\n inputLeft,\n inputRight,\n inputProps,\n email,\n ...itemProps\n}: {\n value: string | undefined;\n options?: { value: string; label?: string }[];\n disabled?: boolean;\n placeholder?: string;\n onValueChange?: (value: string) => void;\n onBlur?: (value: string) => void;\n inputLeft?: ReactNode;\n inputRight?: ReactNode;\n inputProps?: SelectProps;\n email?: boolean;\n} & Omit<ConfigItemProps, \"children\">) {\n const inputNode = (\n <Select\n w={{ base: \"85%\", lg: 400 }}\n value={value}\n data={options?.map(({ value, label }) => ({\n value,\n label: label ?? value,\n }))}\n placeholder={placeholder}\n disabled={disabled}\n onChange={(value) => {\n value && onValueChange?.(value);\n }}\n onBlur={(e) => onBlur?.(e.target.value)}\n {...inputProps}\n />\n );\n return (\n <ConfigItem {...itemProps}>\n {inputLeft || inputRight ? (\n <Group>\n {inputLeft}\n {inputNode}\n {inputRight}\n </Group>\n ) : (\n inputNode\n )}\n </ConfigItem>\n );\n}\n\nexport function ConfigSwitch({\n value,\n disabled,\n onCheckedChange,\n switchProps,\n ...itemProps\n}: {\n value: boolean | undefined;\n disabled: boolean;\n onCheckedChange: (value: boolean) => void;\n switchProps?: SwitchProps;\n} & Omit<ConfigItemProps, \"children\">) {\n return (\n <ConfigItem {...itemProps}>\n <EnableSwitch\n checked={value}\n onCheckedChange={onCheckedChange}\n disabled={disabled}\n {...switchProps}\n />\n </ConfigItem>\n );\n}\n\nexport function ConfigList<T>({\n addLabel,\n label,\n description,\n ...inputListProps\n}: { label?: string; addLabel?: string } & InputListProps<T> &\n Omit<ConfigItemProps, \"children\">) {\n return (\n <ConfigItem label={label} description={description}>\n <InputList\n inputProps={{ w: { base: \"85%\", lg: 400 } }}\n {...inputListProps}\n />\n {!inputListProps.disabled && (\n <Button\n leftSection={<Plus size=\"1rem\" />}\n onClick={() =>\n inputListProps.set({\n [inputListProps.field]: [...inputListProps.values, \"\"],\n } as Partial<T>)\n }\n w={{ base: \"85%\", lg: 400 }}\n disabled={inputListProps.disabled}\n >\n {addLabel ??\n (\"Add \" + label?.endsWith(\"s\") ? label?.slice(0, -1) : label)}\n </Button>\n )}\n </ConfigItem>\n );\n}\n"],"mappings":"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","names":["value"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mogh_ui",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.3",
|
|
4
4
|
"description": "Common UI components and styling used across Mogh apps.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.cjs",
|
|
@@ -29,38 +29,38 @@
|
|
|
29
29
|
"typecheck": "tsc --noEmit"
|
|
30
30
|
},
|
|
31
31
|
"peerDependencies": {
|
|
32
|
-
"@mantine/core": "^9.
|
|
33
|
-
"@mantine/form": "^9.
|
|
34
|
-
"@mantine/hooks": "^9.
|
|
35
|
-
"@mantine/notifications": "^9.
|
|
32
|
+
"@mantine/core": "^9.6.1",
|
|
33
|
+
"@mantine/form": "^9.6.1",
|
|
34
|
+
"@mantine/hooks": "^9.6.1",
|
|
35
|
+
"@mantine/notifications": "^9.6.1",
|
|
36
36
|
"@monaco-editor/react": "^4.7.0",
|
|
37
|
-
"@tanstack/react-table": "^9.
|
|
38
|
-
"@tanstack/react-query": "^5.102.
|
|
39
|
-
"lucide-react": "^1.
|
|
37
|
+
"@tanstack/react-table": "^9.2.4",
|
|
38
|
+
"@tanstack/react-query": "^5.102.8",
|
|
39
|
+
"lucide-react": "^1.43.0",
|
|
40
40
|
"mogh_auth_client": "^2.1.0",
|
|
41
41
|
"monaco-editor": "^0.56.0",
|
|
42
42
|
"monaco-yaml": "^5.5.1",
|
|
43
|
-
"react": "^19.
|
|
44
|
-
"react-dom": "^19.
|
|
43
|
+
"react": "^19.3.0",
|
|
44
|
+
"react-dom": "^19.3.0",
|
|
45
45
|
"react-router-dom": "^7.18.2"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
|
-
"@mantine/core": "^9.
|
|
49
|
-
"@mantine/form": "^9.
|
|
50
|
-
"@mantine/hooks": "^9.
|
|
51
|
-
"@mantine/notifications": "^9.
|
|
48
|
+
"@mantine/core": "^9.6.1",
|
|
49
|
+
"@mantine/form": "^9.6.1",
|
|
50
|
+
"@mantine/hooks": "^9.6.1",
|
|
51
|
+
"@mantine/notifications": "^9.6.1",
|
|
52
52
|
"@monaco-editor/react": "^4.7.0",
|
|
53
|
-
"@tanstack/react-table": "^9.
|
|
54
|
-
"@tanstack/react-query": "^5.102.
|
|
55
|
-
"@types/react": "^19.
|
|
56
|
-
"@types/react-dom": "^19.
|
|
57
|
-
"lucide-react": "^1.
|
|
58
|
-
"mogh_auth_client": "^2.
|
|
53
|
+
"@tanstack/react-table": "^9.2.4",
|
|
54
|
+
"@tanstack/react-query": "^5.102.8",
|
|
55
|
+
"@types/react": "^19.3.0",
|
|
56
|
+
"@types/react-dom": "^19.3.0",
|
|
57
|
+
"lucide-react": "^1.43.0",
|
|
58
|
+
"mogh_auth_client": "^2.1.0",
|
|
59
59
|
"monaco-editor": "^0.56.0",
|
|
60
60
|
"monaco-yaml": "^5.5.1",
|
|
61
|
-
"react": "^19.
|
|
62
|
-
"react-dom": "^19.
|
|
63
|
-
"react-router-dom": "^7.18.
|
|
61
|
+
"react": "^19.3.0",
|
|
62
|
+
"react-dom": "^19.3.0",
|
|
63
|
+
"react-router-dom": "^7.18.3",
|
|
64
64
|
"tsup": "^8.5.1",
|
|
65
65
|
"typescript": "^7.0.2"
|
|
66
66
|
}
|