mogh_ui 1.1.0 → 1.1.2

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.
@@ -37,7 +37,9 @@ const ConfigItem = (0, import_core.createPolymorphicComponent)(
37
37
  const labelDescription = (label || description) && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_core.Stack, { gap: "0", children: [
38
38
  typeof label === "string" && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_core.Text, { fz: "h3", children: (0, import_formatting.fmtSnakeCaseToUpperSpaceCase)(label) }),
39
39
  label && typeof label !== "string" && label,
40
- description && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_core.Text, { c: "dimmed", children: description })
40
+ description && // component="div" so ReactNode descriptions (Groups, nested Text)
41
+ // don't produce invalid markup inside the default <p>.
42
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_core.Text, { c: "dimmed", component: "div", children: description })
41
43
  ] });
42
44
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_core.Stack, { ...props, ref, children: [
43
45
  labelExtra ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_core.Group, { children: [
@@ -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 && <Text c=\"dimmed\">{description}</Text>}\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;AA8BQ;AA9BR,kBAUO;AACP,mBAAsC;AACtC,wBAA6C;AAC7C,2BAA6B;AAC7B,wBAA0C;AAC1C,0BAAqB;AAWd,MAAM,iBAAa;AAAA,MACxB;AAAA,IACE,CAAC,EAAE,OAAO,YAAY,aAAa,UAAU,GAAG,MAAM,GAAG,QAAQ;AAC/D,YAAM,oBAAoB,SAAS,gBACjC,6CAAC,qBAAM,KAAI,KACR;AAAA,eAAO,UAAU,YAChB,4CAAC,oBAAK,IAAG,MAAM,8DAA6B,KAAK,GAAE;AAAA,QAEpD,SAAS,OAAO,UAAU,YAAY;AAAA,QACtC,eAAe,4CAAC,oBAAK,GAAE,UAAU,uBAAY;AAAA,SAChD;AAEF,aACE,6CAAC,qBAAO,GAAG,OAAO,KACf;AAAA,qBACC,6CAAC,qBACE;AAAA;AAAA,UACA;AAAA,WACH,IAEA;AAAA,QAED;AAAA,SACH;AAAA,IAEJ;AAAA,EACF;AACF;AAEO,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAUuC;AACrC,QAAM,YACJ;AAAA,IAAC;AAAA;AAAA,MACC,GAAG,EAAE,MAAM,OAAO,IAAI,IAAI;AAAA,MAC1B;AAAA,MACA;AAAA,MACA;AAAA,MACA,MAAM,OAAO,UAAU,WAAW,WAAW,QAAQ,UAAU;AAAA,MAC/D,UAAU,CAAC,MAAM;AACf,mBAAW,CAAC;AACZ,wBAAgB,EAAE,OAAO,KAAK;AAAA,MAChC;AAAA,MACA,QAAQ,CAAC,MAAM,SAAS,EAAE,OAAO,KAAK;AAAA,MACrC,GAAG;AAAA;AAAA,EACN;AAEF,SACE,4CAAC,cAAY,GAAG,WACb,uBAAa,aACZ,6CAAC,qBACE;AAAA;AAAA,IACA;AAAA,IACA;AAAA,KACH,IAEA,WAEJ;AAEJ;AAEO,SAAS,aAAa;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAKuC;AACrC,SACE,4CAAC,cAAY,GAAG,WACd;AAAA,IAAC;AAAA;AAAA,MACC,SAAS;AAAA,MACT;AAAA,MACA;AAAA,MACC,GAAG;AAAA;AAAA,EACN,GACF;AAEJ;AAEO,SAAS,WAAc;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GACqC;AACnC,SACE,6CAAC,cAAW,OAAc,aACxB;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,YAAY,EAAE,GAAG,EAAE,MAAM,OAAO,IAAI,IAAI,EAAE;AAAA,QACzC,GAAG;AAAA;AAAA,IACN;AAAA,IACC,CAAC,eAAe,YACf;AAAA,MAAC;AAAA;AAAA,QACC,aAAa,4CAAC,4BAAK,MAAK,QAAO;AAAA,QAC/B,SAAS,MACP,eAAe,IAAI;AAAA,UACjB,CAAC,eAAe,KAAK,GAAG,CAAC,GAAG,eAAe,QAAQ,EAAE;AAAA,QACvD,CAAe;AAAA,QAEjB,GAAG,EAAE,MAAM,OAAO,IAAI,IAAI;AAAA,QAC1B,UAAU,eAAe;AAAA,QAExB,uBACE,SAAS,OAAO,SAAS,GAAG,IAAI,OAAO,MAAM,GAAG,EAAE,IAAI;AAAA;AAAA,IAC3D;AAAA,KAEJ;AAEJ;","names":[]}
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;AA8BQ;AA9BR,kBAUO;AACP,mBAAsC;AACtC,wBAA6C;AAC7C,2BAA6B;AAC7B,wBAA0C;AAC1C,0BAAqB;AAWd,MAAM,iBAAa;AAAA,MACxB;AAAA,IACE,CAAC,EAAE,OAAO,YAAY,aAAa,UAAU,GAAG,MAAM,GAAG,QAAQ;AAC/D,YAAM,oBAAoB,SAAS,gBACjC,6CAAC,qBAAM,KAAI,KACR;AAAA,eAAO,UAAU,YAChB,4CAAC,oBAAK,IAAG,MAAM,8DAA6B,KAAK,GAAE;AAAA,QAEpD,SAAS,OAAO,UAAU,YAAY;AAAA,QACtC;AAAA;AAAA,QAGC,4CAAC,oBAAK,GAAE,UAAS,WAAU,OACxB,uBACH;AAAA,SAEJ;AAEF,aACE,6CAAC,qBAAO,GAAG,OAAO,KACf;AAAA,qBACC,6CAAC,qBACE;AAAA;AAAA,UACA;AAAA,WACH,IAEA;AAAA,QAED;AAAA,SACH;AAAA,IAEJ;AAAA,EACF;AACF;AAEO,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAUuC;AACrC,QAAM,YACJ;AAAA,IAAC;AAAA;AAAA,MACC,GAAG,EAAE,MAAM,OAAO,IAAI,IAAI;AAAA,MAC1B;AAAA,MACA;AAAA,MACA;AAAA,MACA,MAAM,OAAO,UAAU,WAAW,WAAW,QAAQ,UAAU;AAAA,MAC/D,UAAU,CAAC,MAAM;AACf,mBAAW,CAAC;AACZ,wBAAgB,EAAE,OAAO,KAAK;AAAA,MAChC;AAAA,MACA,QAAQ,CAAC,MAAM,SAAS,EAAE,OAAO,KAAK;AAAA,MACrC,GAAG;AAAA;AAAA,EACN;AAEF,SACE,4CAAC,cAAY,GAAG,WACb,uBAAa,aACZ,6CAAC,qBACE;AAAA;AAAA,IACA;AAAA,IACA;AAAA,KACH,IAEA,WAEJ;AAEJ;AAEO,SAAS,aAAa;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAKuC;AACrC,SACE,4CAAC,cAAY,GAAG,WACd;AAAA,IAAC;AAAA;AAAA,MACC,SAAS;AAAA,MACT;AAAA,MACA;AAAA,MACC,GAAG;AAAA;AAAA,EACN,GACF;AAEJ;AAEO,SAAS,WAAc;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GACqC;AACnC,SACE,6CAAC,cAAW,OAAc,aACxB;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,YAAY,EAAE,GAAG,EAAE,MAAM,OAAO,IAAI,IAAI,EAAE;AAAA,QACzC,GAAG;AAAA;AAAA,IACN;AAAA,IACC,CAAC,eAAe,YACf;AAAA,MAAC;AAAA;AAAA,QACC,aAAa,4CAAC,4BAAK,MAAK,QAAO;AAAA,QAC/B,SAAS,MACP,eAAe,IAAI;AAAA,UACjB,CAAC,eAAe,KAAK,GAAG,CAAC,GAAG,eAAe,QAAQ,EAAE;AAAA,QACvD,CAAe;AAAA,QAEjB,GAAG,EAAE,MAAM,OAAO,IAAI,IAAI;AAAA,QAC1B,UAAU,eAAe;AAAA,QAExB,uBACE,SAAS,OAAO,SAAS,GAAG,IAAI,OAAO,MAAM,GAAG,EAAE,IAAI;AAAA;AAAA,IAC3D;AAAA,KAEJ;AAEJ;","names":[]}
@@ -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;;;;;;;;mCA2BtB,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":"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"}
@@ -18,7 +18,9 @@ const ConfigItem = createPolymorphicComponent(
18
18
  const labelDescription = (label || description) && /* @__PURE__ */ jsxs(Stack, { gap: "0", children: [
19
19
  typeof label === "string" && /* @__PURE__ */ jsx(Text, { fz: "h3", children: fmtSnakeCaseToUpperSpaceCase(label) }),
20
20
  label && typeof label !== "string" && label,
21
- description && /* @__PURE__ */ jsx(Text, { c: "dimmed", children: description })
21
+ description && // component="div" so ReactNode descriptions (Groups, nested Text)
22
+ // don't produce invalid markup inside the default <p>.
23
+ /* @__PURE__ */ jsx(Text, { c: "dimmed", component: "div", children: description })
22
24
  ] });
23
25
  return /* @__PURE__ */ jsxs(Stack, { ...props, ref, children: [
24
26
  labelExtra ? /* @__PURE__ */ jsxs(Group, { children: [
@@ -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 && <Text c=\"dimmed\">{description}</Text>}\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":"AA8BQ,SAEI,KAFJ;AA9BR;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAGA;AAAA,EACA;AAAA,OAEK;AACP,SAAS,kBAA6B;AACtC,SAAS,oCAAoC;AAC7C,SAAS,oBAAoB;AAC7B,SAAS,iBAAiC;AAC1C,SAAS,YAAY;AAWd,MAAM,aAAa;AAAA,EACxB;AAAA,IACE,CAAC,EAAE,OAAO,YAAY,aAAa,UAAU,GAAG,MAAM,GAAG,QAAQ;AAC/D,YAAM,oBAAoB,SAAS,gBACjC,qBAAC,SAAM,KAAI,KACR;AAAA,eAAO,UAAU,YAChB,oBAAC,QAAK,IAAG,MAAM,uCAA6B,KAAK,GAAE;AAAA,QAEpD,SAAS,OAAO,UAAU,YAAY;AAAA,QACtC,eAAe,oBAAC,QAAK,GAAE,UAAU,uBAAY;AAAA,SAChD;AAEF,aACE,qBAAC,SAAO,GAAG,OAAO,KACf;AAAA,qBACC,qBAAC,SACE;AAAA;AAAA,UACA;AAAA,WACH,IAEA;AAAA,QAED;AAAA,SACH;AAAA,IAEJ;AAAA,EACF;AACF;AAEO,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAUuC;AACrC,QAAM,YACJ;AAAA,IAAC;AAAA;AAAA,MACC,GAAG,EAAE,MAAM,OAAO,IAAI,IAAI;AAAA,MAC1B;AAAA,MACA;AAAA,MACA;AAAA,MACA,MAAM,OAAO,UAAU,WAAW,WAAW,QAAQ,UAAU;AAAA,MAC/D,UAAU,CAAC,MAAM;AACf,mBAAW,CAAC;AACZ,wBAAgB,EAAE,OAAO,KAAK;AAAA,MAChC;AAAA,MACA,QAAQ,CAAC,MAAM,SAAS,EAAE,OAAO,KAAK;AAAA,MACrC,GAAG;AAAA;AAAA,EACN;AAEF,SACE,oBAAC,cAAY,GAAG,WACb,uBAAa,aACZ,qBAAC,SACE;AAAA;AAAA,IACA;AAAA,IACA;AAAA,KACH,IAEA,WAEJ;AAEJ;AAEO,SAAS,aAAa;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAKuC;AACrC,SACE,oBAAC,cAAY,GAAG,WACd;AAAA,IAAC;AAAA;AAAA,MACC,SAAS;AAAA,MACT;AAAA,MACA;AAAA,MACC,GAAG;AAAA;AAAA,EACN,GACF;AAEJ;AAEO,SAAS,WAAc;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GACqC;AACnC,SACE,qBAAC,cAAW,OAAc,aACxB;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,YAAY,EAAE,GAAG,EAAE,MAAM,OAAO,IAAI,IAAI,EAAE;AAAA,QACzC,GAAG;AAAA;AAAA,IACN;AAAA,IACC,CAAC,eAAe,YACf;AAAA,MAAC;AAAA;AAAA,QACC,aAAa,oBAAC,QAAK,MAAK,QAAO;AAAA,QAC/B,SAAS,MACP,eAAe,IAAI;AAAA,UACjB,CAAC,eAAe,KAAK,GAAG,CAAC,GAAG,eAAe,QAAQ,EAAE;AAAA,QACvD,CAAe;AAAA,QAEjB,GAAG,EAAE,MAAM,OAAO,IAAI,IAAI;AAAA,QAC1B,UAAU,eAAe;AAAA,QAExB,uBACE,SAAS,OAAO,SAAS,GAAG,IAAI,OAAO,MAAM,GAAG,EAAE,IAAI;AAAA;AAAA,IAC3D;AAAA,KAEJ;AAEJ;","names":[]}
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":"AA8BQ,SAEI,KAFJ;AA9BR;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAGA;AAAA,EACA;AAAA,OAEK;AACP,SAAS,kBAA6B;AACtC,SAAS,oCAAoC;AAC7C,SAAS,oBAAoB;AAC7B,SAAS,iBAAiC;AAC1C,SAAS,YAAY;AAWd,MAAM,aAAa;AAAA,EACxB;AAAA,IACE,CAAC,EAAE,OAAO,YAAY,aAAa,UAAU,GAAG,MAAM,GAAG,QAAQ;AAC/D,YAAM,oBAAoB,SAAS,gBACjC,qBAAC,SAAM,KAAI,KACR;AAAA,eAAO,UAAU,YAChB,oBAAC,QAAK,IAAG,MAAM,uCAA6B,KAAK,GAAE;AAAA,QAEpD,SAAS,OAAO,UAAU,YAAY;AAAA,QACtC;AAAA;AAAA,QAGC,oBAAC,QAAK,GAAE,UAAS,WAAU,OACxB,uBACH;AAAA,SAEJ;AAEF,aACE,qBAAC,SAAO,GAAG,OAAO,KACf;AAAA,qBACC,qBAAC,SACE;AAAA;AAAA,UACA;AAAA,WACH,IAEA;AAAA,QAED;AAAA,SACH;AAAA,IAEJ;AAAA,EACF;AACF;AAEO,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAUuC;AACrC,QAAM,YACJ;AAAA,IAAC;AAAA;AAAA,MACC,GAAG,EAAE,MAAM,OAAO,IAAI,IAAI;AAAA,MAC1B;AAAA,MACA;AAAA,MACA;AAAA,MACA,MAAM,OAAO,UAAU,WAAW,WAAW,QAAQ,UAAU;AAAA,MAC/D,UAAU,CAAC,MAAM;AACf,mBAAW,CAAC;AACZ,wBAAgB,EAAE,OAAO,KAAK;AAAA,MAChC;AAAA,MACA,QAAQ,CAAC,MAAM,SAAS,EAAE,OAAO,KAAK;AAAA,MACrC,GAAG;AAAA;AAAA,EACN;AAEF,SACE,oBAAC,cAAY,GAAG,WACb,uBAAa,aACZ,qBAAC,SACE;AAAA;AAAA,IACA;AAAA,IACA;AAAA,KACH,IAEA,WAEJ;AAEJ;AAEO,SAAS,aAAa;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAKuC;AACrC,SACE,oBAAC,cAAY,GAAG,WACd;AAAA,IAAC;AAAA;AAAA,MACC,SAAS;AAAA,MACT;AAAA,MACA;AAAA,MACC,GAAG;AAAA;AAAA,EACN,GACF;AAEJ;AAEO,SAAS,WAAc;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GACqC;AACnC,SACE,qBAAC,cAAW,OAAc,aACxB;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,YAAY,EAAE,GAAG,EAAE,MAAM,OAAO,IAAI,IAAI,EAAE;AAAA,QACzC,GAAG;AAAA;AAAA,IACN;AAAA,IACC,CAAC,eAAe,YACf;AAAA,MAAC;AAAA;AAAA,QACC,aAAa,oBAAC,QAAK,MAAK,QAAO;AAAA,QAC/B,SAAS,MACP,eAAe,IAAI;AAAA,UACjB,CAAC,eAAe,KAAK,GAAG,CAAC,GAAG,eAAe,QAAQ,EAAE;AAAA,QACvD,CAAe;AAAA,QAEjB,GAAG,EAAE,MAAM,OAAO,IAAI,IAAI;AAAA,QAC1B,UAAU,eAAe;AAAA,QAExB,uBACE,SAAS,OAAO,SAAS,GAAG,IAAI,OAAO,MAAM,GAAG,EAAE,IAAI;AAAA;AAAA,IAC3D;AAAA,KAEJ;AAEJ;","names":[]}
@@ -26,13 +26,17 @@ var import_core = require("@mantine/core");
26
26
  var import_back_button = require("./back-button");
27
27
  function EntityPage({
28
28
  backTo,
29
+ breadcrumbs,
29
30
  actions,
30
31
  children,
31
32
  ...props
32
33
  }) {
33
34
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_core.Stack, { mb: "50vh", ...props, children: [
34
35
  /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_core.Group, { justify: "space-between", children: [
35
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_back_button.BackButton, { to: backTo }),
36
+ breadcrumbs ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_core.Group, { children: [
37
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_back_button.BackButton, { to: backTo }),
38
+ breadcrumbs
39
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_back_button.BackButton, { to: backTo }),
36
40
  actions && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_core.Group, { wrap: "nowrap", children: actions })
37
41
  ] }),
38
42
  children
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/entity-page.tsx"],"sourcesContent":["import { Group, Stack, StackProps } from \"@mantine/core\";\nimport { ReactNode } from \"react\";\nimport { BackButton } from \"./back-button\";\n\nexport interface EntityPageProps extends StackProps {\n backTo?: string;\n actions?: ReactNode;\n}\n\nexport function EntityPage({\n backTo,\n actions,\n children,\n ...props\n}: EntityPageProps) {\n return (\n <Stack mb=\"50vh\" {...props}>\n <Group justify=\"space-between\">\n <BackButton to={backTo} />\n {actions && <Group wrap=\"nowrap\">{actions}</Group>}\n </Group>\n {children}\n </Stack>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAiBM;AAjBN,kBAAyC;AAEzC,yBAA2B;AAOpB,SAAS,WAAW;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAoB;AAClB,SACE,6CAAC,qBAAM,IAAG,QAAQ,GAAG,OACnB;AAAA,iDAAC,qBAAM,SAAQ,iBACb;AAAA,kDAAC,iCAAW,IAAI,QAAQ;AAAA,MACvB,WAAW,4CAAC,qBAAM,MAAK,UAAU,mBAAQ;AAAA,OAC5C;AAAA,IACC;AAAA,KACH;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../src/components/entity-page.tsx"],"sourcesContent":["import { Group, Stack, StackProps } from \"@mantine/core\";\nimport { ReactNode } from \"react\";\nimport { BackButton } from \"./back-button\";\n\nexport interface EntityPageProps extends StackProps {\n backTo?: string;\n breadcrumbs?: ReactNode;\n actions?: ReactNode;\n}\n\nexport function EntityPage({\n backTo,\n breadcrumbs,\n actions,\n children,\n ...props\n}: EntityPageProps) {\n return (\n <Stack mb=\"50vh\" {...props}>\n <Group justify=\"space-between\">\n {breadcrumbs ? (\n <Group>\n <BackButton to={backTo} />\n {breadcrumbs}\n </Group>\n ) : (\n <BackButton to={backTo} />\n )}\n {actions && <Group wrap=\"nowrap\">{actions}</Group>}\n </Group>\n {children}\n </Stack>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAqBU;AArBV,kBAAyC;AAEzC,yBAA2B;AAQpB,SAAS,WAAW;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAoB;AAClB,SACE,6CAAC,qBAAM,IAAG,QAAQ,GAAG,OACnB;AAAA,iDAAC,qBAAM,SAAQ,iBACZ;AAAA,oBACC,6CAAC,qBACC;AAAA,oDAAC,iCAAW,IAAI,QAAQ;AAAA,QACvB;AAAA,SACH,IAEA,4CAAC,iCAAW,IAAI,QAAQ;AAAA,MAEzB,WAAW,4CAAC,qBAAM,MAAK,UAAU,mBAAQ;AAAA,OAC5C;AAAA,IACC;AAAA,KACH;AAEJ;","names":[]}
@@ -2,7 +2,8 @@ import { StackProps } from "@mantine/core";
2
2
  import { ReactNode } from "react";
3
3
  export interface EntityPageProps extends StackProps {
4
4
  backTo?: string;
5
+ breadcrumbs?: ReactNode;
5
6
  actions?: ReactNode;
6
7
  }
7
- export declare function EntityPage({ backTo, actions, children, ...props }: EntityPageProps): import("react").JSX.Element;
8
+ export declare function EntityPage({ backTo, breadcrumbs, actions, children, ...props }: EntityPageProps): import("react").JSX.Element;
8
9
  //# sourceMappingURL=entity-page.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"entity-page.d.ts","sourceRoot":"","sources":["../../src/components/entity-page.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAgB,UAAU,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGlC,MAAM,WAAW,eAAgB,SAAQ,UAAU;IACjD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,SAAS,CAAC;CACrB;AAED,wBAAgB,UAAU,CAAC,EACzB,MAAM,EACN,OAAO,EACP,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,eAAe,+BAUjB"}
1
+ {"version":3,"file":"entity-page.d.ts","sourceRoot":"","sources":["../../src/components/entity-page.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAgB,UAAU,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGlC,MAAM,WAAW,eAAgB,SAAQ,UAAU;IACjD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,OAAO,CAAC,EAAE,SAAS,CAAC;CACrB;AAED,wBAAgB,UAAU,CAAC,EACzB,MAAM,EACN,WAAW,EACX,OAAO,EACP,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,eAAe,+BAiBjB"}
@@ -3,13 +3,17 @@ import { Group, Stack } from "@mantine/core";
3
3
  import { BackButton } from "./back-button";
4
4
  function EntityPage({
5
5
  backTo,
6
+ breadcrumbs,
6
7
  actions,
7
8
  children,
8
9
  ...props
9
10
  }) {
10
11
  return /* @__PURE__ */ jsxs(Stack, { mb: "50vh", ...props, children: [
11
12
  /* @__PURE__ */ jsxs(Group, { justify: "space-between", children: [
12
- /* @__PURE__ */ jsx(BackButton, { to: backTo }),
13
+ breadcrumbs ? /* @__PURE__ */ jsxs(Group, { children: [
14
+ /* @__PURE__ */ jsx(BackButton, { to: backTo }),
15
+ breadcrumbs
16
+ ] }) : /* @__PURE__ */ jsx(BackButton, { to: backTo }),
13
17
  actions && /* @__PURE__ */ jsx(Group, { wrap: "nowrap", children: actions })
14
18
  ] }),
15
19
  children
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/entity-page.tsx"],"sourcesContent":["import { Group, Stack, StackProps } from \"@mantine/core\";\nimport { ReactNode } from \"react\";\nimport { BackButton } from \"./back-button\";\n\nexport interface EntityPageProps extends StackProps {\n backTo?: string;\n actions?: ReactNode;\n}\n\nexport function EntityPage({\n backTo,\n actions,\n children,\n ...props\n}: EntityPageProps) {\n return (\n <Stack mb=\"50vh\" {...props}>\n <Group justify=\"space-between\">\n <BackButton to={backTo} />\n {actions && <Group wrap=\"nowrap\">{actions}</Group>}\n </Group>\n {children}\n </Stack>\n );\n}\n"],"mappings":"AAiBM,SACE,KADF;AAjBN,SAAS,OAAO,aAAyB;AAEzC,SAAS,kBAAkB;AAOpB,SAAS,WAAW;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAoB;AAClB,SACE,qBAAC,SAAM,IAAG,QAAQ,GAAG,OACnB;AAAA,yBAAC,SAAM,SAAQ,iBACb;AAAA,0BAAC,cAAW,IAAI,QAAQ;AAAA,MACvB,WAAW,oBAAC,SAAM,MAAK,UAAU,mBAAQ;AAAA,OAC5C;AAAA,IACC;AAAA,KACH;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../src/components/entity-page.tsx"],"sourcesContent":["import { Group, Stack, StackProps } from \"@mantine/core\";\nimport { ReactNode } from \"react\";\nimport { BackButton } from \"./back-button\";\n\nexport interface EntityPageProps extends StackProps {\n backTo?: string;\n breadcrumbs?: ReactNode;\n actions?: ReactNode;\n}\n\nexport function EntityPage({\n backTo,\n breadcrumbs,\n actions,\n children,\n ...props\n}: EntityPageProps) {\n return (\n <Stack mb=\"50vh\" {...props}>\n <Group justify=\"space-between\">\n {breadcrumbs ? (\n <Group>\n <BackButton to={backTo} />\n {breadcrumbs}\n </Group>\n ) : (\n <BackButton to={backTo} />\n )}\n {actions && <Group wrap=\"nowrap\">{actions}</Group>}\n </Group>\n {children}\n </Stack>\n );\n}\n"],"mappings":"AAqBU,SACE,KADF;AArBV,SAAS,OAAO,aAAyB;AAEzC,SAAS,kBAAkB;AAQpB,SAAS,WAAW;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAoB;AAClB,SACE,qBAAC,SAAM,IAAG,QAAQ,GAAG,OACnB;AAAA,yBAAC,SAAM,SAAQ,iBACZ;AAAA,oBACC,qBAAC,SACC;AAAA,4BAAC,cAAW,IAAI,QAAQ;AAAA,QACvB;AAAA,SACH,IAEA,oBAAC,cAAW,IAAI,QAAQ;AAAA,MAEzB,WAAW,oBAAC,SAAM,MAAK,UAAU,mBAAQ;AAAA,OAC5C;AAAA,IACC;AAAA,KACH;AAEJ;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mogh_ui",
3
- "version": "1.1.0",
3
+ "version": "1.1.2",
4
4
  "description": "Common UI components and styling used across Mogh apps.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -29,10 +29,10 @@
29
29
  "typecheck": "tsc --noEmit"
30
30
  },
31
31
  "peerDependencies": {
32
- "@mantine/core": "^9.5.1",
33
- "@mantine/form": "^9.5.1",
34
- "@mantine/hooks": "^9.5.1",
35
- "@mantine/notifications": "^9.5.1",
32
+ "@mantine/core": "^9.5.2",
33
+ "@mantine/form": "^9.5.2",
34
+ "@mantine/hooks": "^9.5.2",
35
+ "@mantine/notifications": "^9.5.2",
36
36
  "@monaco-editor/react": "^4.7.0",
37
37
  "@tanstack/react-table": "^9.0.0",
38
38
  "@tanstack/react-query": "^5.101.4",
@@ -45,10 +45,10 @@
45
45
  "react-router-dom": "^7.18.2"
46
46
  },
47
47
  "devDependencies": {
48
- "@mantine/core": "^9.5.1",
49
- "@mantine/form": "^9.5.1",
50
- "@mantine/hooks": "^9.5.1",
51
- "@mantine/notifications": "^9.5.1",
48
+ "@mantine/core": "^9.5.2",
49
+ "@mantine/form": "^9.5.2",
50
+ "@mantine/hooks": "^9.5.2",
51
+ "@mantine/notifications": "^9.5.2",
52
52
  "@monaco-editor/react": "^4.7.0",
53
53
  "@tanstack/react-table": "^9.0.0",
54
54
  "@tanstack/react-query": "^5.101.4",