@mantine-vue/core 1.1.4 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/cjs/index.cjs +755 -979
  2. package/cjs/index.cjs.map +1 -1
  3. package/esm/index.mjs +754 -980
  4. package/esm/index.mjs.map +1 -1
  5. package/lib/components/Accordion/Accordion.d.ts +7 -7
  6. package/lib/components/Accordion/AccordionControl/AccordionControl.d.ts +14 -8
  7. package/lib/components/Alert/Alert.d.ts +14 -8
  8. package/lib/components/Autocomplete/Autocomplete.d.ts +14 -2
  9. package/lib/components/Badge/Badge.d.ts +12 -9
  10. package/lib/components/Blockquote/Blockquote.d.ts +14 -8
  11. package/lib/components/Breadcrumbs/Breadcrumbs.d.ts +10 -5
  12. package/lib/components/Checkbox/Checkbox.d.ts +44 -32
  13. package/lib/components/Checkbox/CheckboxGroup/CheckboxGroup.d.ts +18 -11
  14. package/lib/components/Checkbox/CheckboxIndicator/CheckboxIndicator.d.ts +9 -2
  15. package/lib/components/CloseButton/CloseButton.d.ts +10 -5
  16. package/lib/components/Combobox/OptionsDropdown/OptionsDropdown.d.ts +6 -2
  17. package/lib/components/Divider/Divider.d.ts +10 -5
  18. package/lib/components/Drawer/Drawer.d.ts +14 -9
  19. package/lib/components/Fieldset/Fieldset.d.ts +10 -5
  20. package/lib/components/FileInput/FileInput.d.ts +26 -17
  21. package/lib/components/Indicator/Indicator.d.ts +10 -5
  22. package/lib/components/Input/Input.d.ts +29 -25
  23. package/lib/components/Input/InputWrapper/InputWrapper.d.ts +18 -11
  24. package/lib/components/InputBase/InputBase.d.ts +21 -14
  25. package/lib/components/List/List.d.ts +18 -13
  26. package/lib/components/List/ListItem/ListItem.d.ts +10 -5
  27. package/lib/components/Menu/Menu.d.ts +66 -27
  28. package/lib/components/Modal/Modal.d.ts +14 -9
  29. package/lib/components/MultiSelect/MultiSelect.d.ts +14 -2
  30. package/lib/components/NativeSelect/NativeSelect.d.ts +23 -14
  31. package/lib/components/NavLink/NavLink.d.ts +14 -8
  32. package/lib/components/Notification/Notification.d.ts +14 -8
  33. package/lib/components/NumberInput/NumberInput.d.ts +22 -14
  34. package/lib/components/Pagination/Pagination.d.ts +5 -5
  35. package/lib/components/Pagination/PaginationDots/PaginationDots.d.ts +5 -2
  36. package/lib/components/Pagination/PaginationEdges/PaginationEdges.d.ts +8 -5
  37. package/lib/components/PasswordInput/PasswordInput.d.ts +25 -17
  38. package/lib/components/PillsInput/PillsInput.d.ts +30 -21
  39. package/lib/components/Radio/Radio.d.ts +42 -32
  40. package/lib/components/Radio/RadioGroup/RadioGroup.d.ts +18 -11
  41. package/lib/components/Radio/RadioIndicator/RadioIndicator.d.ts +8 -2
  42. package/lib/components/Rating/Rating.d.ts +17 -8
  43. package/lib/components/Select/Select.d.ts +14 -2
  44. package/lib/components/SemiCircleProgress/SemiCircleProgress.d.ts +9 -5
  45. package/lib/components/Slider/RangeSlider/RangeSlider.d.ts +11 -2
  46. package/lib/components/Slider/Slider/Slider.d.ts +8 -2
  47. package/lib/components/Spoiler/Spoiler.d.ts +18 -10
  48. package/lib/components/Stepper/Stepper.d.ts +16 -4
  49. package/lib/components/Stepper/StepperStep/StepperStep.d.ts +12 -2
  50. package/lib/components/Switch/Switch.d.ts +58 -49
  51. package/lib/components/Switch/SwitchGroup/SwitchGroup.d.ts +18 -11
  52. package/lib/components/Tabs/Tabs.d.ts +7 -7
  53. package/lib/components/Tabs/TabsTab/TabsTab.d.ts +12 -8
  54. package/lib/components/TagsInput/TagsInput.d.ts +14 -2
  55. package/lib/components/Timeline/Timeline.d.ts +7 -7
  56. package/lib/components/Timeline/TimelineItem/TimelineItem.d.ts +14 -8
  57. package/lib/components/TreeSelect/TreeSelect.d.ts +11 -2
  58. package/lib/core/index.d.ts +1 -0
  59. package/lib/core/renderable-node.d.ts +10 -0
  60. package/package.json +3 -3
package/cjs/index.cjs CHANGED
@@ -2142,6 +2142,16 @@ var DirectionProvider = (0, vue.defineComponent)({
2142
2142
  return () => slots.default?.();
2143
2143
  }
2144
2144
  });
2145
+ //#endregion
2146
+ //#region src/core/renderable-node.ts
2147
+ /** Prop content takes precedence over slot content. Explicit null is preserved. */
2148
+ function resolveNode(prop, slot) {
2149
+ if (prop !== void 0) return typeof prop === "function" ? prop() : prop;
2150
+ return slot?.();
2151
+ }
2152
+ function hasNode(node) {
2153
+ return node !== null && node !== void 0 && node !== false;
2154
+ }
2145
2155
  var VisuallyHidden_module_default = { root: "_root_5rq9d_1" };
2146
2156
  //#endregion
2147
2157
  //#region src/components/VisuallyHidden/VisuallyHidden.ts
@@ -2867,6 +2877,7 @@ var varsResolver$87 = createVarsResolver((theme, { color, variant, size }) => ({
2867
2877
  var Divider = withBoxProps((0, vue.defineComponent)({
2868
2878
  name: "Divider",
2869
2879
  inheritAttrs: false,
2880
+ slots: Object,
2870
2881
  props: {
2871
2882
  color: {
2872
2883
  type: String,
@@ -2874,12 +2885,7 @@ var Divider = withBoxProps((0, vue.defineComponent)({
2874
2885
  },
2875
2886
  size: [String, Number],
2876
2887
  label: {
2877
- type: [
2878
- String,
2879
- Number,
2880
- Object,
2881
- Function
2882
- ],
2888
+ type: null,
2883
2889
  default: void 0
2884
2890
  },
2885
2891
  labelPosition: {
@@ -2926,16 +2932,16 @@ var Divider = withBoxProps((0, vue.defineComponent)({
2926
2932
  unstyled: props.unstyled
2927
2933
  });
2928
2934
  return () => {
2929
- const label = slots.default?.() ?? props.label;
2935
+ const label = resolveNode(props.label, slots.label ?? slots.default);
2930
2936
  return (0, vue.h)(Box, {
2931
2937
  ...attrs,
2932
2938
  role: "separator",
2933
2939
  ...getStyles("root"),
2934
2940
  mod: {
2935
2941
  orientation: props.orientation,
2936
- withLabel: Boolean(label)
2942
+ withLabel: hasNode(label)
2937
2943
  }
2938
- }, () => label ? (0, vue.h)(Box, {
2944
+ }, () => hasNode(label) ? (0, vue.h)(Box, {
2939
2945
  component: "span",
2940
2946
  ...getStyles("label"),
2941
2947
  mod: { position: props.labelPosition }
@@ -3908,6 +3914,7 @@ var varsResolver$76 = createVarsResolver((theme, { radius, color, gradient, vari
3908
3914
  var Badge = withBoxProps((0, vue.defineComponent)({
3909
3915
  name: "Badge",
3910
3916
  inheritAttrs: false,
3917
+ slots: Object,
3911
3918
  props: {
3912
3919
  component: {
3913
3920
  type: String,
@@ -3928,21 +3935,11 @@ var Badge = withBoxProps((0, vue.defineComponent)({
3928
3935
  default: void 0
3929
3936
  },
3930
3937
  leftSection: {
3931
- type: [
3932
- String,
3933
- Number,
3934
- Object,
3935
- Function
3936
- ],
3938
+ type: null,
3937
3939
  default: void 0
3938
3940
  },
3939
3941
  rightSection: {
3940
- type: [
3941
- String,
3942
- Number,
3943
- Object,
3944
- Function
3945
- ],
3942
+ type: null,
3946
3943
  default: void 0
3947
3944
  },
3948
3945
  fullWidth: {
@@ -3988,12 +3985,14 @@ var Badge = withBoxProps((0, vue.defineComponent)({
3988
3985
  varsResolver: varsResolver$76,
3989
3986
  unstyled: props.unstyled
3990
3987
  });
3991
- const renderSection = (section, position) => section ? (0, vue.h)("span", {
3988
+ const renderSection = (section, position) => hasNode(section) ? (0, vue.h)("span", {
3992
3989
  ...getStyles("section"),
3993
3990
  "data-position": position
3994
- }, typeof section === "function" ? section() : section) : null;
3991
+ }, () => section) : null;
3995
3992
  return () => {
3996
- const children = slots.default?.();
3993
+ const children = slots.default?.() ?? [];
3994
+ const leftSection = resolveNode(props.leftSection, slots.leftSection);
3995
+ const rightSection = resolveNode(props.rightSection, slots.rightSection);
3997
3996
  return (0, vue.h)(Box, {
3998
3997
  ...attrs,
3999
3998
  ...getStyles("root"),
@@ -4002,13 +4001,13 @@ var Badge = withBoxProps((0, vue.defineComponent)({
4002
4001
  mod: {
4003
4002
  block: props.fullWidth,
4004
4003
  circle: props.circle,
4005
- withRightSection: Boolean(props.rightSection),
4006
- withLeftSection: Boolean(props.leftSection)
4004
+ withRightSection: hasNode(rightSection),
4005
+ withLeftSection: hasNode(leftSection)
4007
4006
  }
4008
4007
  }, () => [
4009
- renderSection(props.leftSection, "left"),
4008
+ renderSection(leftSection, "left"),
4010
4009
  (0, vue.h)("span", getStyles("label"), children),
4011
- renderSection(props.rightSection, "right")
4010
+ renderSection(rightSection, "right")
4012
4011
  ]);
4013
4012
  };
4014
4013
  }
@@ -4811,6 +4810,7 @@ var varsResolver$71 = createVarsResolver((_, { size, radius, iconSize }) => ({ r
4811
4810
  var CloseButton = (0, vue.defineComponent)({
4812
4811
  name: "CloseButton",
4813
4812
  inheritAttrs: false,
4813
+ slots: Object,
4814
4814
  props: {
4815
4815
  component: {
4816
4816
  type: String,
@@ -4824,11 +4824,7 @@ var CloseButton = (0, vue.defineComponent)({
4824
4824
  },
4825
4825
  iconSize: [String, Number],
4826
4826
  icon: {
4827
- type: [
4828
- String,
4829
- Object,
4830
- Function
4831
- ],
4827
+ type: null,
4832
4828
  default: void 0
4833
4829
  },
4834
4830
  variant: {
@@ -4870,15 +4866,18 @@ var CloseButton = (0, vue.defineComponent)({
4870
4866
  vars: props.vars,
4871
4867
  varsResolver: varsResolver$71
4872
4868
  });
4873
- return () => (0, vue.h)(UnstyledButton, {
4874
- ...attrs,
4875
- ...getStyles("root"),
4876
- component: props.component,
4877
- unstyled: props.unstyled,
4878
- variant: props.variant,
4879
- disabled: props.disabled,
4880
- mod: { disabled: props.disabled }
4881
- }, () => [props.icon ? props.icon : (0, vue.h)(CloseIcon), slots.default?.()]);
4869
+ return () => {
4870
+ const icon = resolveNode(props.icon, slots.icon);
4871
+ return (0, vue.h)(UnstyledButton, {
4872
+ ...attrs,
4873
+ ...getStyles("root"),
4874
+ component: props.component,
4875
+ unstyled: props.unstyled,
4876
+ variant: props.variant,
4877
+ disabled: props.disabled,
4878
+ mod: { disabled: props.disabled }
4879
+ }, () => [hasNode(icon) ? icon : (0, vue.h)(CloseIcon), slots.default?.()]);
4880
+ };
4882
4881
  }
4883
4882
  });
4884
4883
  var Button_module_default = {
@@ -5059,7 +5058,7 @@ var varsResolver$68 = createVarsResolver((theme, { radius, color, gradient, vari
5059
5058
  "--button-hover-color": color || variant ? colors.hoverColor : void 0
5060
5059
  } };
5061
5060
  });
5062
- function renderContent$13(content) {
5061
+ function renderContent$5(content) {
5063
5062
  return typeof content === "function" ? content() : content;
5064
5063
  }
5065
5064
  var ButtonBase = (0, vue.defineComponent)({
@@ -5184,14 +5183,14 @@ var ButtonBase = (0, vue.defineComponent)({
5184
5183
  },
5185
5184
  varsResolver: varsResolver$68
5186
5185
  });
5187
- const renderSection = (content, position) => content ? (0, vue.h)(Box, {
5186
+ const renderSection = (content, position) => hasNode(content) ? (0, vue.h)(Box, {
5188
5187
  component: "span",
5189
5188
  ...getStyles("section"),
5190
5189
  mod: { position }
5191
- }, () => renderContent$13(content)) : null;
5190
+ }, () => renderContent$5(content)) : null;
5192
5191
  return () => {
5193
- const leftSection = props.leftSection ?? slots.leftSection?.();
5194
- const rightSection = props.rightSection ?? slots.rightSection?.();
5192
+ const leftSection = resolveNode(props.leftSection, slots.leftSection);
5193
+ const rightSection = resolveNode(props.rightSection, slots.rightSection);
5195
5194
  const disabled = props.disabled || props.loading;
5196
5195
  const dataDisabled = disabled || props["data-disabled"] || props.dataDisabled || attrs["data-disabled"];
5197
5196
  return (0, vue.h)(UnstyledButton, {
@@ -5205,8 +5204,8 @@ var ButtonBase = (0, vue.defineComponent)({
5205
5204
  disabled: dataDisabled,
5206
5205
  loading: props.loading,
5207
5206
  block: props.fullWidth,
5208
- withLeftSection: Boolean(leftSection),
5209
- withRightSection: Boolean(rightSection)
5207
+ withLeftSection: hasNode(leftSection),
5208
+ withRightSection: hasNode(rightSection)
5210
5209
  }, props.mod],
5211
5210
  ref: elementRef
5212
5211
  }, () => [(0, vue.h)(Transition, {
@@ -5744,12 +5743,10 @@ var varsResolver$64 = createVarsResolver((theme, { radius, color, variant, autoC
5744
5743
  "--alert-bd": color || variant ? colors.border : void 0
5745
5744
  } };
5746
5745
  });
5747
- function renderContent$12(content) {
5748
- return typeof content === "function" ? content() : content;
5749
- }
5750
5746
  var Alert = withBoxProps((0, vue.defineComponent)({
5751
5747
  name: "Alert",
5752
5748
  inheritAttrs: false,
5749
+ slots: Object,
5753
5750
  props: {
5754
5751
  id: {
5755
5752
  type: String,
@@ -5761,21 +5758,11 @@ var Alert = withBoxProps((0, vue.defineComponent)({
5761
5758
  default: void 0
5762
5759
  },
5763
5760
  title: {
5764
- type: [
5765
- String,
5766
- Number,
5767
- Object,
5768
- Function
5769
- ],
5761
+ type: null,
5770
5762
  default: void 0
5771
5763
  },
5772
5764
  icon: {
5773
- type: [
5774
- String,
5775
- Number,
5776
- Object,
5777
- Function
5778
- ],
5765
+ type: null,
5779
5766
  default: void 0
5780
5767
  },
5781
5768
  withCloseButton: {
@@ -5835,11 +5822,11 @@ var Alert = withBoxProps((0, vue.defineComponent)({
5835
5822
  unstyled: props.unstyled
5836
5823
  });
5837
5824
  return () => {
5838
- const title = props.title ?? slots.title?.();
5839
- const icon = props.icon ?? slots.icon?.();
5825
+ const title = resolveNode(props.title, slots.title);
5826
+ const icon = resolveNode(props.icon, slots.icon);
5840
5827
  const message = slots.default?.();
5841
5828
  const id = rootId.value || void 0;
5842
- const titleId = title && id ? `${id}-title` : void 0;
5829
+ const titleId = hasNode(title) && id ? `${id}-title` : void 0;
5843
5830
  const bodyId = id ? `${id}-body` : void 0;
5844
5831
  return (0, vue.h)(Box, {
5845
5832
  ...attrs,
@@ -5847,17 +5834,17 @@ var Alert = withBoxProps((0, vue.defineComponent)({
5847
5834
  id,
5848
5835
  variant: props.variant,
5849
5836
  role: props.role || "alert",
5850
- "aria-describedby": message ? bodyId : void 0,
5851
- "aria-labelledby": title ? titleId : void 0
5837
+ "aria-describedby": hasNode(message) ? bodyId : void 0,
5838
+ "aria-labelledby": hasNode(title) ? titleId : void 0
5852
5839
  }, () => (0, vue.h)("div", getStyles("wrapper"), [
5853
- icon ? (0, vue.h)("div", getStyles("icon"), renderContent$12(icon)) : null,
5854
- (0, vue.h)("div", getStyles("body"), [title ? (0, vue.h)("div", {
5840
+ hasNode(icon) ? (0, vue.h)("div", getStyles("icon"), icon) : null,
5841
+ (0, vue.h)("div", getStyles("body"), [hasNode(title) ? (0, vue.h)("div", {
5855
5842
  ...getStyles("title"),
5856
5843
  "data-with-close-button": props.withCloseButton ? "" : void 0
5857
5844
  }, [(0, vue.h)("span", {
5858
5845
  id: titleId,
5859
5846
  ...getStyles("label")
5860
- }, renderContent$12(title))]) : null, message ? (0, vue.h)("div", {
5847
+ }, title)]) : null, hasNode(message) ? (0, vue.h)("div", {
5861
5848
  id: bodyId,
5862
5849
  ...getStyles("message"),
5863
5850
  "data-variant": props.variant
@@ -5902,20 +5889,13 @@ var varsResolver$63 = createVarsResolver((theme, { color, iconSize, radius, text
5902
5889
  "--bq-text-wrap": textWrap
5903
5890
  } };
5904
5891
  });
5905
- function renderContent$11(content) {
5906
- return typeof content === "function" ? content() : content;
5907
- }
5908
5892
  var Blockquote = withBoxProps((0, vue.defineComponent)({
5909
5893
  name: "Blockquote",
5910
5894
  inheritAttrs: false,
5895
+ slots: Object,
5911
5896
  props: {
5912
5897
  icon: {
5913
- type: [
5914
- String,
5915
- Number,
5916
- Object,
5917
- Function
5918
- ],
5898
+ type: null,
5919
5899
  default: void 0
5920
5900
  },
5921
5901
  iconSize: [String, Number],
@@ -5925,12 +5905,7 @@ var Blockquote = withBoxProps((0, vue.defineComponent)({
5925
5905
  },
5926
5906
  radius: [String, Number],
5927
5907
  cite: {
5928
- type: [
5929
- String,
5930
- Number,
5931
- Object,
5932
- Function
5933
- ],
5908
+ type: null,
5934
5909
  default: void 0
5935
5910
  },
5936
5911
  textWrap: {
@@ -5969,16 +5944,16 @@ var Blockquote = withBoxProps((0, vue.defineComponent)({
5969
5944
  unstyled: props.unstyled
5970
5945
  });
5971
5946
  return () => {
5972
- const icon = props.icon ?? slots.icon?.();
5973
- const cite = props.cite ?? slots.cite?.();
5947
+ const icon = resolveNode(props.icon, slots.icon);
5948
+ const cite = resolveNode(props.cite, slots.cite);
5974
5949
  return (0, vue.h)(Box, {
5975
5950
  ...attrs,
5976
5951
  ...getStyles("root"),
5977
5952
  component: "blockquote"
5978
5953
  }, () => [
5979
- icon ? (0, vue.h)("span", getStyles("icon"), renderContent$11(icon)) : null,
5954
+ hasNode(icon) ? (0, vue.h)("span", getStyles("icon"), icon) : null,
5980
5955
  slots.default?.(),
5981
- cite ? (0, vue.h)("cite", getStyles("cite"), renderContent$11(cite)) : null
5956
+ hasNode(cite) ? (0, vue.h)("cite", getStyles("cite"), cite) : null
5982
5957
  ]);
5983
5958
  };
5984
5959
  }
@@ -5992,23 +5967,16 @@ var Breadcrumbs_module_default = {
5992
5967
  //#region src/components/Breadcrumbs/Breadcrumbs.ts
5993
5968
  var defaultProps$38 = { separator: "/" };
5994
5969
  var varsResolver$62 = createVarsResolver((_, { separatorMargin }) => ({ root: { "--bc-separator-margin": getSpacing(separatorMargin) } }));
5995
- function renderContent$10(content) {
5996
- return typeof content === "function" ? content() : content;
5997
- }
5998
5970
  function flattenChildren$2(children) {
5999
5971
  return children.flatMap((child) => child.type === vue.Fragment && Array.isArray(child.children) ? flattenChildren$2(child.children) : child.type === vue.Comment ? [] : [child]);
6000
5972
  }
6001
5973
  var Breadcrumbs = withBoxProps((0, vue.defineComponent)({
6002
5974
  name: "Breadcrumbs",
6003
5975
  inheritAttrs: false,
5976
+ slots: Object,
6004
5977
  props: {
6005
5978
  separator: {
6006
- type: [
6007
- String,
6008
- Number,
6009
- Object,
6010
- Function
6011
- ],
5979
+ type: null,
6012
5980
  default: void 0
6013
5981
  },
6014
5982
  separatorMargin: [String, Number],
@@ -6051,7 +6019,7 @@ var Breadcrumbs = withBoxProps((0, vue.defineComponent)({
6051
6019
  if (index !== children.length - 1) acc.push((0, vue.h)(Box, {
6052
6020
  ...getStyles("separator"),
6053
6021
  key: `separator-${index}`
6054
- }, () => renderContent$10(props.separator)));
6022
+ }, () => resolveNode(props.separator, slots.separator)));
6055
6023
  return acc;
6056
6024
  }, []);
6057
6025
  return (0, vue.h)(Box, {
@@ -6073,14 +6041,10 @@ function renderListIcon(icon) {
6073
6041
  var ListItem = withBoxProps((0, vue.defineComponent)({
6074
6042
  name: "ListItem",
6075
6043
  inheritAttrs: false,
6044
+ slots: Object,
6076
6045
  props: {
6077
6046
  icon: {
6078
- type: [
6079
- String,
6080
- Number,
6081
- Object,
6082
- Function
6083
- ],
6047
+ type: null,
6084
6048
  default: void 0
6085
6049
  },
6086
6050
  mod: {
@@ -6104,7 +6068,8 @@ var ListItem = withBoxProps((0, vue.defineComponent)({
6104
6068
  const props = useProps("ListItem", null, rawProps);
6105
6069
  const ctx = useListContext();
6106
6070
  return () => {
6107
- const icon = props.icon ?? ctx.icon;
6071
+ const ownIcon = resolveNode(props.icon, slots.icon);
6072
+ const icon = hasNode(ownIcon) ? ownIcon : renderListIcon(ctx.icon);
6108
6073
  return (0, vue.h)(Box, {
6109
6074
  ...attrs,
6110
6075
  ...ctx.getStyles("item", {
@@ -6113,10 +6078,10 @@ var ListItem = withBoxProps((0, vue.defineComponent)({
6113
6078
  }),
6114
6079
  component: "li",
6115
6080
  mod: [{
6116
- withIcon: Boolean(icon),
6081
+ withIcon: hasNode(icon),
6117
6082
  centered: ctx.center
6118
6083
  }, props.mod]
6119
- }, () => (0, vue.h)("div", ctx.getStyles("itemWrapper"), [icon ? (0, vue.h)("span", ctx.getStyles("itemIcon"), renderListIcon(icon)) : null, (0, vue.h)("span", ctx.getStyles("itemLabel"), slots.default?.())]));
6084
+ }, () => (0, vue.h)("div", ctx.getStyles("itemWrapper"), [hasNode(icon) ? (0, vue.h)("span", ctx.getStyles("itemIcon"), icon) : null, (0, vue.h)("span", ctx.getStyles("itemLabel"), slots.default?.())]));
6120
6085
  };
6121
6086
  }
6122
6087
  }));
@@ -6137,6 +6102,7 @@ var varsResolver$61 = createVarsResolver((_, { size, spacing }) => ({ root: {
6137
6102
  var ListBase = (0, vue.defineComponent)({
6138
6103
  name: "List",
6139
6104
  inheritAttrs: false,
6105
+ slots: Object,
6140
6106
  props: {
6141
6107
  type: {
6142
6108
  type: String,
@@ -6151,12 +6117,7 @@ var ListBase = (0, vue.defineComponent)({
6151
6117
  default: void 0
6152
6118
  },
6153
6119
  icon: {
6154
- type: [
6155
- String,
6156
- Number,
6157
- Object,
6158
- Function
6159
- ],
6120
+ type: null,
6160
6121
  default: void 0
6161
6122
  },
6162
6123
  spacing: [String, Number],
@@ -6214,19 +6175,24 @@ var ListBase = (0, vue.defineComponent)({
6214
6175
  provideListContext({
6215
6176
  getStyles,
6216
6177
  center: props.center,
6217
- icon: props.icon
6178
+ get icon() {
6179
+ return resolveNode(props.icon, slots.icon);
6180
+ }
6218
6181
  });
6219
- return () => (0, vue.h)(Box, {
6220
- ...attrs,
6221
- ...getStyles("root", { style: { listStyleType: props.listStyleType } }),
6222
- component: props.type === "unordered" ? "ul" : "ol",
6223
- start: props.type === "ordered" ? props.start : void 0,
6224
- reversed: props.type === "ordered" && props.reversed ? "" : void 0,
6225
- mod: [{
6226
- withPadding: props.withPadding,
6227
- type: props.icon ? "none" : props.listStyleType
6228
- }, props.mod]
6229
- }, () => slots.default?.());
6182
+ return () => {
6183
+ const icon = resolveNode(props.icon, slots.icon);
6184
+ return (0, vue.h)(Box, {
6185
+ ...attrs,
6186
+ ...getStyles("root", { style: { listStyleType: props.listStyleType } }),
6187
+ component: props.type === "unordered" ? "ul" : "ol",
6188
+ start: props.type === "ordered" ? props.start : void 0,
6189
+ reversed: props.type === "ordered" && props.reversed ? "" : void 0,
6190
+ mod: [{
6191
+ withPadding: props.withPadding,
6192
+ type: hasNode(icon) ? "none" : props.listStyleType
6193
+ }, props.mod]
6194
+ }, () => slots.default?.());
6195
+ };
6230
6196
  }
6231
6197
  });
6232
6198
  var List = withBoxProps(Object.assign(ListBase, { Item: ListItem }));
@@ -6295,12 +6261,10 @@ var varsResolver$60 = createVarsResolver((theme, { color, position, offset, size
6295
6261
  "--indicator-z-index": zIndex?.toString(),
6296
6262
  ...getPositionVariables(position, offset)
6297
6263
  } }));
6298
- function renderContent$9(content) {
6299
- return typeof content === "function" ? content() : content;
6300
- }
6301
6264
  var Indicator = withBoxProps((0, vue.defineComponent)({
6302
6265
  name: "Indicator",
6303
6266
  inheritAttrs: false,
6267
+ slots: Object,
6304
6268
  props: {
6305
6269
  position: {
6306
6270
  type: String,
@@ -6316,12 +6280,7 @@ var Indicator = withBoxProps((0, vue.defineComponent)({
6316
6280
  },
6317
6281
  size: [String, Number],
6318
6282
  label: {
6319
- type: [
6320
- String,
6321
- Number,
6322
- Object,
6323
- Function
6324
- ],
6283
+ type: null,
6325
6284
  default: void 0
6326
6285
  },
6327
6286
  radius: [String, Number],
@@ -6390,8 +6349,9 @@ var Indicator = withBoxProps((0, vue.defineComponent)({
6390
6349
  unstyled: props.unstyled
6391
6350
  });
6392
6351
  return () => {
6352
+ const labelContent = resolveNode(props.label, slots.label);
6393
6353
  const shouldHideZero = !props.showZero && (props.label === 0 || props.label === "0");
6394
- const formattedLabel = props.maxValue !== void 0 && typeof props.label === "number" && props.label > props.maxValue ? `${props.maxValue}+` : props.label;
6354
+ const formattedLabel = props.maxValue !== void 0 && typeof props.label === "number" && props.label > props.maxValue ? `${props.maxValue}+` : labelContent;
6395
6355
  return (0, vue.h)(Box, {
6396
6356
  ...attrs,
6397
6357
  ...getStyles("root"),
@@ -6399,11 +6359,11 @@ var Indicator = withBoxProps((0, vue.defineComponent)({
6399
6359
  }, () => [!props.disabled && !shouldHideZero ? (0, vue.h)(Box, {
6400
6360
  ...getStyles("indicator"),
6401
6361
  mod: {
6402
- withLabel: Boolean(props.label),
6362
+ withLabel: hasNode(labelContent),
6403
6363
  withBorder: props.withBorder,
6404
6364
  processing: props.processing
6405
6365
  }
6406
- }, () => renderContent$9(formattedLabel)) : null, slots.default?.()]);
6366
+ }, () => formattedLabel) : null, slots.default?.()]);
6407
6367
  };
6408
6368
  }
6409
6369
  }));
@@ -8334,9 +8294,6 @@ var AccordionChevron = (0, vue.defineComponent)({
8334
8294
  var [provideAccordionItemContext, useAccordionItemContext] = createSafeContext("Accordion.Item component was not found in the tree");
8335
8295
  //#endregion
8336
8296
  //#region src/components/Accordion/AccordionControl/AccordionControl.ts
8337
- function renderContent$8(content) {
8338
- return typeof content === "function" ? content() : content;
8339
- }
8340
8297
  function createAccordionKeydownHandler(loop, onKeydown) {
8341
8298
  return (event) => {
8342
8299
  onKeydown?.(event);
@@ -8355,28 +8312,18 @@ function createAccordionKeydownHandler(loop, onKeydown) {
8355
8312
  var AccordionControl = withBoxProps((0, vue.defineComponent)({
8356
8313
  name: "AccordionControl",
8357
8314
  inheritAttrs: false,
8315
+ slots: Object,
8358
8316
  props: {
8359
8317
  disabled: {
8360
8318
  type: Boolean,
8361
8319
  default: false
8362
8320
  },
8363
8321
  chevron: {
8364
- type: [
8365
- String,
8366
- Number,
8367
- Object,
8368
- Function,
8369
- null
8370
- ],
8322
+ type: null,
8371
8323
  default: void 0
8372
8324
  },
8373
8325
  icon: {
8374
- type: [
8375
- String,
8376
- Number,
8377
- Object,
8378
- Function
8379
- ],
8326
+ type: null,
8380
8327
  default: void 0
8381
8328
  },
8382
8329
  onClick: {
@@ -8409,6 +8356,8 @@ var AccordionControl = withBoxProps((0, vue.defineComponent)({
8409
8356
  const ctx = useAccordionContext();
8410
8357
  const renderControl = () => {
8411
8358
  const isActive = ctx.isItemActive(value);
8359
+ const chevron = props.chevron !== void 0 || slots.chevron ? resolveNode(props.chevron, slots.chevron) : typeof ctx.chevron === "function" ? ctx.chevron() : ctx.chevron;
8360
+ const icon = resolveNode(props.icon, slots.icon);
8412
8361
  return (0, vue.h)(UnstyledButton, {
8413
8362
  ...attrs,
8414
8363
  ...ctx.getStyles("control", {
@@ -8449,13 +8398,13 @@ var AccordionControl = withBoxProps((0, vue.defineComponent)({
8449
8398
  styles: props.styles,
8450
8399
  props
8451
8400
  })
8452
- }, () => renderContent$8(props.chevron === void 0 ? ctx.chevron : props.chevron)),
8401
+ }, () => chevron),
8453
8402
  (0, vue.h)("span", ctx.getStyles("label", {
8454
8403
  classNames: props.classNames,
8455
8404
  styles: props.styles,
8456
8405
  props
8457
8406
  }), slots.default?.()),
8458
- props.icon ? (0, vue.h)(Box, {
8407
+ hasNode(icon) ? (0, vue.h)(Box, {
8459
8408
  component: "span",
8460
8409
  mod: { chevronPosition: ctx.chevronPosition },
8461
8410
  ...ctx.getStyles("icon", {
@@ -8463,7 +8412,7 @@ var AccordionControl = withBoxProps((0, vue.defineComponent)({
8463
8412
  styles: props.styles,
8464
8413
  props
8465
8414
  })
8466
- }, () => renderContent$8(props.icon)) : null
8415
+ }, () => icon) : null
8467
8416
  ]);
8468
8417
  };
8469
8418
  return () => typeof ctx.order === "number" ? (0, vue.h)(`h${ctx.order}`, ctx.getStyles("itemTitle", {
@@ -8606,7 +8555,7 @@ function getSafeId$2(prefix) {
8606
8555
  return `${prefix}-${value}`;
8607
8556
  };
8608
8557
  }
8609
- function renderContent$7(content) {
8558
+ function renderContent$4(content) {
8610
8559
  return typeof content === "function" ? content() : content;
8611
8560
  }
8612
8561
  var varsResolver$55 = createVarsResolver((_, { transitionDuration, chevronSize, radius }) => ({ root: {
@@ -8778,7 +8727,7 @@ var AccordionBase = (0, vue.defineComponent)({
8778
8727
  id: uid.value,
8779
8728
  variant: props.variant,
8780
8729
  "data-accordion": true
8781
- }, () => renderContent$7(slots.default));
8730
+ }, () => renderContent$4(slots.default));
8782
8731
  }
8783
8732
  });
8784
8733
  var Accordion = Object.assign(AccordionBase, {
@@ -8806,7 +8755,7 @@ var varsResolver$54 = createVarsResolver((theme, { controlSize, edgeGradientColo
8806
8755
  "--scroller-control-size": controlSize === void 0 ? void 0 : rem(controlSize),
8807
8756
  "--scroller-background-color": edgeGradientColor ? getThemeColor(edgeGradientColor, theme) : void 0
8808
8757
  } }));
8809
- function renderContent$6(content) {
8758
+ function renderContent$3(content) {
8810
8759
  return typeof content === "function" ? content() : content;
8811
8760
  }
8812
8761
  var Scroller = withBoxProps((0, vue.defineComponent)({
@@ -8916,7 +8865,7 @@ var Scroller = withBoxProps((0, vue.defineComponent)({
8916
8865
  "data-hidden": !showStart || void 0,
8917
8866
  "aria-label": "Scroll left",
8918
8867
  tabindex: showStart ? 0 : -1
8919
- }, () => renderContent$6(props.startControlIcon) || (0, vue.h)(AccordionChevron, getStyles("chevron"))),
8868
+ }, () => renderContent$3(props.startControlIcon) || (0, vue.h)(AccordionChevron, getStyles("chevron"))),
8920
8869
  (0, vue.h)("div", {
8921
8870
  ...getStyles("container"),
8922
8871
  ref: scroller.ref,
@@ -8932,7 +8881,7 @@ var Scroller = withBoxProps((0, vue.defineComponent)({
8932
8881
  "data-hidden": !showEnd || void 0,
8933
8882
  "aria-label": "Scroll right",
8934
8883
  tabindex: showEnd ? 0 : -1
8935
- }, () => renderContent$6(props.endControlIcon) || (0, vue.h)(AccordionChevron, getStyles("chevron")))
8884
+ }, () => renderContent$3(props.endControlIcon) || (0, vue.h)(AccordionChevron, getStyles("chevron")))
8936
8885
  ]);
8937
8886
  };
8938
8887
  }
@@ -10269,6 +10218,7 @@ var Timeline_module_default = {
10269
10218
  var TimelineItem = withBoxProps((0, vue.defineComponent)({
10270
10219
  name: "TimelineItem",
10271
10220
  inheritAttrs: false,
10221
+ slots: Object,
10272
10222
  props: {
10273
10223
  __active: {
10274
10224
  type: Boolean,
@@ -10291,21 +10241,11 @@ var TimelineItem = withBoxProps((0, vue.defineComponent)({
10291
10241
  default: void 0
10292
10242
  },
10293
10243
  title: {
10294
- type: [
10295
- String,
10296
- Number,
10297
- Object,
10298
- Function
10299
- ],
10244
+ type: null,
10300
10245
  default: void 0
10301
10246
  },
10302
10247
  bullet: {
10303
- type: [
10304
- String,
10305
- Number,
10306
- Object,
10307
- Function
10308
- ],
10248
+ type: null,
10309
10249
  default: void 0
10310
10250
  },
10311
10251
  radius: {
@@ -10353,10 +10293,11 @@ var TimelineItem = withBoxProps((0, vue.defineComponent)({
10353
10293
  const props = useProps("TimelineItem", null, rawProps);
10354
10294
  const ctx = useTimelineContext();
10355
10295
  const theme = useMantineTheme();
10356
- const renderContent = (value) => typeof value === "function" ? value() : value;
10357
10296
  return () => {
10358
10297
  const active = props.active ?? props.__active;
10359
10298
  const lineActive = props.lineActive ?? props.__lineActive;
10299
+ const bullet = resolveNode(props.bullet, slots.bullet);
10300
+ const title = resolveNode(props.title, slots.title);
10360
10301
  const stylesApiProps = {
10361
10302
  className: props.className ?? attrs.class,
10362
10303
  props
@@ -10380,11 +10321,11 @@ var TimelineItem = withBoxProps((0, vue.defineComponent)({
10380
10321
  }, () => [(0, vue.h)(Box, {
10381
10322
  ...ctx.getStyles("itemBullet", { props }),
10382
10323
  mod: {
10383
- withChild: Boolean(props.bullet),
10324
+ withChild: hasNode(bullet),
10384
10325
  align: props.__align,
10385
10326
  active
10386
10327
  }
10387
- }, () => renderContent(props.bullet)), (0, vue.h)("div", ctx.getStyles("itemBody", { props }), [props.title ? (0, vue.h)("div", ctx.getStyles("itemTitle", { props }), renderContent(props.title)) : null, (0, vue.h)("div", ctx.getStyles("itemContent", { props }), slots.default?.())])]);
10328
+ }, () => bullet), (0, vue.h)("div", ctx.getStyles("itemBody", { props }), [hasNode(title) ? (0, vue.h)("div", ctx.getStyles("itemTitle", { props }), title) : null, (0, vue.h)("div", ctx.getStyles("itemContent", { props }), slots.default?.())])]);
10388
10329
  };
10389
10330
  }
10390
10331
  }));
@@ -10760,6 +10701,7 @@ var varsResolver$47 = createVarsResolver((theme, { filledSegmentColor, emptySegm
10760
10701
  var SemiCircleProgress = withBoxProps((0, vue.defineComponent)({
10761
10702
  name: "SemiCircleProgress",
10762
10703
  inheritAttrs: false,
10704
+ slots: Object,
10763
10705
  props: {
10764
10706
  value: {
10765
10707
  type: Number,
@@ -10794,12 +10736,7 @@ var SemiCircleProgress = withBoxProps((0, vue.defineComponent)({
10794
10736
  default: void 0
10795
10737
  },
10796
10738
  label: {
10797
- type: [
10798
- String,
10799
- Number,
10800
- Object,
10801
- Function
10802
- ],
10739
+ type: null,
10803
10740
  default: void 0
10804
10741
  },
10805
10742
  labelPosition: {
@@ -10837,7 +10774,6 @@ var SemiCircleProgress = withBoxProps((0, vue.defineComponent)({
10837
10774
  vars: props.vars,
10838
10775
  varsResolver: varsResolver$47
10839
10776
  });
10840
- const renderContent = (value) => typeof value === "function" ? value() : value;
10841
10777
  return () => {
10842
10778
  const size = props.size ?? defaultProps$21.size;
10843
10779
  const thickness = props.thickness ?? defaultProps$21.thickness;
@@ -10845,7 +10781,7 @@ var SemiCircleProgress = withBoxProps((0, vue.defineComponent)({
10845
10781
  const radius = (size - 2 * thickness) / 2;
10846
10782
  const circumference = Math.PI * radius;
10847
10783
  const semiCirclePercentage = clamp$4(props.value, 0, 100) * (circumference / 100);
10848
- const label = props.label ?? slots.label?.();
10784
+ const label = resolveNode(props.label, slots.label);
10849
10785
  return (0, vue.h)(Box, {
10850
10786
  ...attrs,
10851
10787
  w: size,
@@ -10853,11 +10789,11 @@ var SemiCircleProgress = withBoxProps((0, vue.defineComponent)({
10853
10789
  className: attrs.class,
10854
10790
  style: attrs.style
10855
10791
  })
10856
- }, () => [label ? (0, vue.h)("div", {
10792
+ }, () => [hasNode(label) ? (0, vue.h)("div", {
10857
10793
  ...getStyles("label"),
10858
10794
  "data-position": props.labelPosition,
10859
10795
  "data-orientation": props.orientation
10860
- }, renderContent(label)) : null, (0, vue.h)("svg", {
10796
+ }, label) : null, (0, vue.h)("svg", {
10861
10797
  width: size,
10862
10798
  height: size / 2,
10863
10799
  viewBox: `0 0 ${size} ${size / 2}`,
@@ -10903,28 +10839,19 @@ var varsResolver$46 = createVarsResolver((_, { transitionDuration }) => ({ root:
10903
10839
  var Spoiler = withBoxProps((0, vue.defineComponent)({
10904
10840
  name: "Spoiler",
10905
10841
  inheritAttrs: false,
10842
+ slots: Object,
10906
10843
  props: {
10907
10844
  maxHeight: {
10908
10845
  type: Number,
10909
10846
  default: void 0
10910
10847
  },
10911
10848
  showLabel: {
10912
- type: [
10913
- String,
10914
- Number,
10915
- Object,
10916
- Function
10917
- ],
10918
- required: true
10849
+ type: null,
10850
+ default: void 0
10919
10851
  },
10920
10852
  hideLabel: {
10921
- type: [
10922
- String,
10923
- Number,
10924
- Object,
10925
- Function
10926
- ],
10927
- required: true
10853
+ type: null,
10854
+ default: void 0
10928
10855
  },
10929
10856
  defaultExpanded: {
10930
10857
  type: Boolean,
@@ -10993,12 +10920,11 @@ var Spoiler = withBoxProps((0, vue.defineComponent)({
10993
10920
  onChange: (value) => props.onExpandedChange?.(value)
10994
10921
  });
10995
10922
  const { ref: contentRef, height } = (0, _mantine_vue_hooks.useElementSize)();
10996
- const renderContent = (value) => typeof value === "function" ? value() : value;
10997
10923
  return () => {
10998
10924
  const regionId = `${id.value}-region`;
10999
- const currentLabel = show.value ? props.hideLabel : props.showLabel;
10925
+ const currentLabel = show.value ? resolveNode(props.hideLabel, slots.hideLabel) : resolveNode(props.showLabel, slots.showLabel);
11000
10926
  const maxHeight = props.maxHeight ?? defaultProps$20.maxHeight;
11001
- const hasSpoiler = currentLabel !== null && maxHeight < height.value;
10927
+ const hasSpoiler = hasNode(currentLabel) && maxHeight < height.value;
11002
10928
  const ariaLabel = show.value ? props.hideAriaLabel : props.showAriaLabel;
11003
10929
  return (0, vue.h)(Box, {
11004
10930
  ...attrs,
@@ -11016,7 +10942,7 @@ var Spoiler = withBoxProps((0, vue.defineComponent)({
11016
10942
  "aria-controls": regionId,
11017
10943
  "aria-label": ariaLabel,
11018
10944
  ...getStyles("control")
11019
- }, () => renderContent(currentLabel)) : null, (0, vue.h)("div", {
10945
+ }, () => currentLabel) : null, (0, vue.h)("div", {
11020
10946
  ...getStyles("content", { style: { maxHeight: !show.value ? rem(maxHeight) : height.value ? rem(height.value) : void 0 } }),
11021
10947
  "data-reduce-motion": "",
11022
10948
  role: "region",
@@ -11040,14 +10966,10 @@ var varsResolver$45 = createVarsResolver((_, { radius }) => ({ root: { "--fields
11040
10966
  var Fieldset = withBoxProps((0, vue.defineComponent)({
11041
10967
  name: "Fieldset",
11042
10968
  inheritAttrs: false,
10969
+ slots: Object,
11043
10970
  props: {
11044
10971
  legend: {
11045
- type: [
11046
- String,
11047
- Number,
11048
- Object,
11049
- Function
11050
- ],
10972
+ type: null,
11051
10973
  default: void 0
11052
10974
  },
11053
10975
  radius: {
@@ -11089,16 +11011,18 @@ var Fieldset = withBoxProps((0, vue.defineComponent)({
11089
11011
  vars: props.vars,
11090
11012
  varsResolver: varsResolver$45
11091
11013
  });
11092
- const renderContent = (value) => typeof value === "function" ? value() : value;
11093
- return () => (0, vue.h)(Box, {
11094
- ...attrs,
11095
- component: "fieldset",
11096
- variant: props.variant,
11097
- ...getStyles("root", {
11098
- className: attrs.class,
11099
- style: attrs.style
11100
- })
11101
- }, () => [props.legend ? (0, vue.h)("legend", getStyles("legend"), renderContent(props.legend)) : null, slots.default?.()]);
11014
+ return () => {
11015
+ const legend = resolveNode(props.legend, slots.legend);
11016
+ return (0, vue.h)(Box, {
11017
+ ...attrs,
11018
+ component: "fieldset",
11019
+ variant: props.variant,
11020
+ ...getStyles("root", {
11021
+ className: attrs.class,
11022
+ style: attrs.style
11023
+ })
11024
+ }, () => [hasNode(legend) ? (0, vue.h)("legend", getStyles("legend"), legend) : null, slots.default?.()]);
11025
+ };
11102
11026
  }
11103
11027
  }));
11104
11028
  Object.assign(Fieldset, {
@@ -11245,13 +11169,13 @@ var clearSectionOffset = {
11245
11169
  lg: 12,
11246
11170
  xl: 15
11247
11171
  };
11248
- function renderContent$5(content) {
11172
+ function renderContent$2(content) {
11249
11173
  return typeof content === "function" ? content() : content;
11250
11174
  }
11251
11175
  function InputClearSection({ __clearable, __clearSection, rightSection, __defaultRightSection, size = "sm", __clearSectionMode = "both" }) {
11252
11176
  const clearSection = __clearable && __clearSection;
11253
- if (__clearSectionMode === "rightSection") return rightSection === null ? null : renderContent$5(rightSection || __defaultRightSection);
11254
- if (__clearSectionMode === "clear") return rightSection === null ? null : renderContent$5(clearSection || __defaultRightSection);
11177
+ if (__clearSectionMode === "rightSection") return rightSection === null ? null : renderContent$2(rightSection || __defaultRightSection);
11178
+ if (__clearSectionMode === "clear") return rightSection === null ? null : renderContent$2(clearSection || __defaultRightSection);
11255
11179
  if (clearSection && (rightSection || __defaultRightSection)) return (0, vue.h)("div", {
11256
11180
  "data-combined-clear-section": true,
11257
11181
  style: {
@@ -11260,8 +11184,8 @@ function InputClearSection({ __clearable, __clearSection, rightSection, __defaul
11260
11184
  alignItems: "center",
11261
11185
  paddingInlineEnd: `${clearSectionOffset[String(size)] ?? clearSectionOffset.sm}px`
11262
11186
  }
11263
- }, [renderContent$5(clearSection), renderContent$5(rightSection || __defaultRightSection)]);
11264
- return rightSection === null ? null : renderContent$5(rightSection || clearSection || __defaultRightSection);
11187
+ }, [renderContent$2(clearSection), renderContent$2(rightSection || __defaultRightSection)]);
11188
+ return rightSection === null ? null : renderContent$2(rightSection || clearSection || __defaultRightSection);
11265
11189
  }
11266
11190
  //#endregion
11267
11191
  //#region src/components/Input/InputWrapper.context.ts
@@ -11580,6 +11504,15 @@ var defaultOrder = [
11580
11504
  "input",
11581
11505
  "error"
11582
11506
  ];
11507
+ /**
11508
+ * Determines whether renderable content is present, honouring prop-over-slot precedence.
11509
+ * Uses truthiness for the prop (matching the original `Boolean(...)` checks) so that an
11510
+ * empty string or `false` is treated as "no content".
11511
+ */
11512
+ function nodePresent(prop, slot) {
11513
+ if (prop !== void 0) return Boolean(prop);
11514
+ return Boolean(slot);
11515
+ }
11583
11516
  var varsResolver$41 = createVarsResolver((_, { size }) => ({
11584
11517
  label: {
11585
11518
  "--input-label-size": getFontSize(size),
@@ -11588,39 +11521,21 @@ var varsResolver$41 = createVarsResolver((_, { size }) => ({
11588
11521
  error: { "--input-error-size": size === void 0 ? void 0 : `calc(${getFontSize(size)} - ${rem(2)})` },
11589
11522
  description: { "--input-description-size": size === void 0 ? void 0 : `calc(${getFontSize(size)} - ${rem(2)})` }
11590
11523
  }));
11591
- function renderContent$4(content) {
11592
- return typeof content === "function" ? content() : content;
11593
- }
11594
11524
  var InputWrapper = (0, vue.defineComponent)({
11595
11525
  name: "InputWrapper",
11596
11526
  inheritAttrs: false,
11527
+ slots: Object,
11597
11528
  props: {
11598
11529
  label: {
11599
- type: [
11600
- String,
11601
- Number,
11602
- Object,
11603
- Function
11604
- ],
11530
+ type: null,
11605
11531
  default: void 0
11606
11532
  },
11607
11533
  description: {
11608
- type: [
11609
- String,
11610
- Number,
11611
- Object,
11612
- Function
11613
- ],
11534
+ type: null,
11614
11535
  default: void 0
11615
11536
  },
11616
11537
  error: {
11617
- type: [
11618
- String,
11619
- Number,
11620
- Object,
11621
- Function,
11622
- Boolean
11623
- ],
11538
+ type: null,
11624
11539
  default: void 0
11625
11540
  },
11626
11541
  required: {
@@ -11705,8 +11620,8 @@ var InputWrapper = (0, vue.defineComponent)({
11705
11620
  const ids = (0, vue.computed)(() => {
11706
11621
  const errorId = props.errorProps?.id || `${idBase.value}-error`;
11707
11622
  const descriptionId = props.descriptionProps?.id || `${idBase.value}-description`;
11708
- const hasError = Boolean(props.error) && typeof props.error !== "boolean";
11709
- const hasDescription = Boolean(props.description);
11623
+ const hasError = props.error !== void 0 ? Boolean(props.error) && typeof props.error !== "boolean" : Boolean(slots.error);
11624
+ const hasDescription = nodePresent(props.description, slots.description);
11710
11625
  const describedBy = `${hasError ? errorId : ""} ${hasDescription ? descriptionId : ""}`.trim();
11711
11626
  return {
11712
11627
  errorId,
@@ -11749,7 +11664,10 @@ var InputWrapper = (0, vue.defineComponent)({
11749
11664
  size: props.size,
11750
11665
  variant: props.variant
11751
11666
  };
11752
- const label = props.label ? (0, vue.h)(InputLabel, {
11667
+ const labelContent = resolveNode(props.label, slots.label);
11668
+ const descriptionContent = resolveNode(props.description, slots.description);
11669
+ const errorContent = resolveNode(props.error, slots.error);
11670
+ const label = labelContent ? (0, vue.h)(InputLabel, {
11753
11671
  key: "label",
11754
11672
  labelElement: props.labelElement,
11755
11673
  id: ids.value.labelId,
@@ -11757,14 +11675,14 @@ var InputWrapper = (0, vue.defineComponent)({
11757
11675
  required: isRequired,
11758
11676
  ...sharedProps,
11759
11677
  ...props.labelProps
11760
- }, () => renderContent$4(props.label)) : null;
11678
+ }, () => labelContent) : null;
11761
11679
  const description = ids.value.hasDescription ? (0, vue.h)(InputDescription, {
11762
11680
  key: "description",
11763
11681
  ...props.descriptionProps,
11764
11682
  ...sharedProps,
11765
11683
  size: props.descriptionProps?.size || props.size,
11766
11684
  id: props.descriptionProps?.id || ids.value.descriptionId
11767
- }, () => renderContent$4(props.description)) : null;
11685
+ }, () => descriptionContent) : null;
11768
11686
  const input = props.inputContainer ? props.inputContainer(slots.default?.()) : slots.default?.();
11769
11687
  const error = ids.value.hasError ? (0, vue.h)(InputError, {
11770
11688
  key: "error",
@@ -11772,7 +11690,7 @@ var InputWrapper = (0, vue.defineComponent)({
11772
11690
  ...sharedProps,
11773
11691
  size: props.errorProps?.size || props.size,
11774
11692
  id: props.errorProps?.id || ids.value.errorId
11775
- }, () => renderContent$4(props.error)) : null;
11693
+ }, () => errorContent) : null;
11776
11694
  const content = order.map((part) => {
11777
11695
  if (part === "label") return label;
11778
11696
  if (part === "description") return description;
@@ -11783,7 +11701,7 @@ var InputWrapper = (0, vue.defineComponent)({
11783
11701
  ...attrs,
11784
11702
  variant: props.variant,
11785
11703
  "data-size": props.size,
11786
- mod: [{ error: Boolean(props.error) }, props.mod],
11704
+ mod: [{ error: nodePresent(props.error, slots.error) }, props.mod],
11787
11705
  id: props.labelElement === "label" ? void 0 : props.id,
11788
11706
  ...getStyles("root", {
11789
11707
  className: attrs.class,
@@ -11811,12 +11729,13 @@ var varsResolver$40 = createVarsResolver((_, props, ctx) => ({ wrapper: {
11811
11729
  "--input-left-section-pointer-events": props.leftSectionPointerEvents,
11812
11730
  "--input-right-section-pointer-events": props.rightSectionPointerEvents
11813
11731
  } }));
11814
- function renderContent$3(content) {
11732
+ function renderContent$1(content) {
11815
11733
  return typeof content === "function" ? content() : content;
11816
11734
  }
11817
11735
  var InputBase$1 = (0, vue.defineComponent)({
11818
11736
  name: "Input",
11819
11737
  inheritAttrs: false,
11738
+ slots: Object,
11820
11739
  props: {
11821
11740
  component: {
11822
11741
  type: [
@@ -11835,12 +11754,7 @@ var InputBase$1 = (0, vue.defineComponent)({
11835
11754
  default: void 0
11836
11755
  },
11837
11756
  leftSection: {
11838
- type: [
11839
- String,
11840
- Number,
11841
- Object,
11842
- Function
11843
- ],
11757
+ type: null,
11844
11758
  default: void 0
11845
11759
  },
11846
11760
  leftSectionWidth: {
@@ -11856,13 +11770,7 @@ var InputBase$1 = (0, vue.defineComponent)({
11856
11770
  default: "none"
11857
11771
  },
11858
11772
  rightSection: {
11859
- type: [
11860
- String,
11861
- Number,
11862
- Object,
11863
- Function,
11864
- null
11865
- ],
11773
+ type: null,
11866
11774
  default: void 0
11867
11775
  },
11868
11776
  rightSectionWidth: {
@@ -12031,11 +11939,13 @@ var InputBase$1 = (0, vue.defineComponent)({
12031
11939
  stylesCtx.offsetBottom = wrapperCtx.offsetBottom;
12032
11940
  stylesCtx.offsetTop = wrapperCtx.offsetTop;
12033
11941
  const loadingIndicator = props.loading ? (0, vue.h)(Loader, { size: props.loadingPosition === "left" ? "calc(var(--input-left-section-size) / 2)" : "calc(var(--input-right-section-size) / 2)" }) : null;
12034
- const leftSection = props.loading && props.loadingPosition === "left" ? loadingIndicator : props.leftSection;
11942
+ const resolvedLeftSection = resolveNode(props.leftSection, slots.leftSection);
11943
+ const resolvedRightSection = resolveNode(props.rightSection, slots.rightSection);
11944
+ const leftSection = props.loading && props.loadingPosition === "left" ? loadingIndicator : resolvedLeftSection;
12035
11945
  const rightSection = InputClearSection({
12036
11946
  __clearable: props.__clearable,
12037
11947
  __clearSection: props.__clearSection,
12038
- rightSection: props.loading && props.loadingPosition === "right" ? loadingIndicator : props.rightSection,
11948
+ rightSection: props.loading && props.loadingPosition === "right" ? loadingIndicator : resolvedRightSection,
12039
11949
  __defaultRightSection: props.__defaultRightSection,
12040
11950
  size: props.size,
12041
11951
  __clearSectionMode: props.__clearSectionMode
@@ -12070,7 +11980,7 @@ var InputBase$1 = (0, vue.defineComponent)({
12070
11980
  className: props.leftSectionProps?.class,
12071
11981
  style: props.leftSectionProps?.style
12072
11982
  })
12073
- }, renderContent$3(leftSection)) : null,
11983
+ }, renderContent$1(leftSection)) : null,
12074
11984
  (0, vue.h)(Box, {
12075
11985
  ...attrs,
12076
11986
  ...ariaAttributes,
@@ -12091,7 +12001,7 @@ var InputBase$1 = (0, vue.defineComponent)({
12091
12001
  className: props.__bottomSectionProps?.class,
12092
12002
  style: props.__bottomSectionProps?.style
12093
12003
  })
12094
- }, renderContent$3(props.__bottomSection)) : null,
12004
+ }, renderContent$1(props.__bottomSection)) : null,
12095
12005
  rightSection ? (0, vue.h)("div", {
12096
12006
  ...props.rightSectionProps,
12097
12007
  "data-position": "right",
@@ -12099,7 +12009,7 @@ var InputBase$1 = (0, vue.defineComponent)({
12099
12009
  className: props.rightSectionProps?.class,
12100
12010
  style: props.rightSectionProps?.style
12101
12011
  })
12102
- }, renderContent$3(rightSection)) : null
12012
+ }, renderContent$1(rightSection)) : null
12103
12013
  ]);
12104
12014
  };
12105
12015
  }
@@ -12119,6 +12029,7 @@ var Input = withBoxProps(Object.assign(InputBase$1, {
12119
12029
  var InputBase = withBoxProps((0, vue.defineComponent)({
12120
12030
  name: "InputBase",
12121
12031
  inheritAttrs: false,
12032
+ slots: Object,
12122
12033
  props: {
12123
12034
  component: {
12124
12035
  type: [
@@ -12137,31 +12048,15 @@ var InputBase = withBoxProps((0, vue.defineComponent)({
12137
12048
  default: void 0
12138
12049
  },
12139
12050
  label: {
12140
- type: [
12141
- String,
12142
- Number,
12143
- Object,
12144
- Function
12145
- ],
12051
+ type: null,
12146
12052
  default: void 0
12147
12053
  },
12148
12054
  description: {
12149
- type: [
12150
- String,
12151
- Number,
12152
- Object,
12153
- Function
12154
- ],
12055
+ type: null,
12155
12056
  default: void 0
12156
12057
  },
12157
12058
  error: {
12158
- type: [
12159
- String,
12160
- Number,
12161
- Object,
12162
- Function,
12163
- Boolean
12164
- ],
12059
+ type: null,
12165
12060
  default: void 0
12166
12061
  },
12167
12062
  required: {
@@ -12258,13 +12153,7 @@ var InputBase = withBoxProps((0, vue.defineComponent)({
12258
12153
  default: void 0
12259
12154
  },
12260
12155
  rightSection: {
12261
- type: [
12262
- String,
12263
- Number,
12264
- Object,
12265
- Function,
12266
- null
12267
- ],
12156
+ type: null,
12268
12157
  default: void 0
12269
12158
  },
12270
12159
  rightSectionWidth: {
@@ -12377,45 +12266,54 @@ var InputBase = withBoxProps((0, vue.defineComponent)({
12377
12266
  vars: props.vars,
12378
12267
  unstyled: props.unstyled,
12379
12268
  mod: props.mod
12380
- }, () => (0, vue.h)(Input, {
12381
- ...attrs,
12382
- component: props.component,
12383
- __staticSelector: props.__staticSelector,
12384
- __stylesApiProps: props.__stylesApiProps ?? props,
12385
- error: props.error,
12386
- required: props.required,
12387
- id: props.id,
12388
- size: props.size,
12389
- variant: props.variant,
12390
- multiline: props.multiline,
12391
- withAria: props.withAria,
12392
- classNames: props.classNames,
12393
- styles: props.styles,
12394
- vars: props.vars,
12395
- unstyled: props.unstyled,
12396
- leftSection: props.leftSection,
12397
- leftSectionWidth: props.leftSectionWidth,
12398
- leftSectionProps: props.leftSectionProps,
12399
- leftSectionPointerEvents: props.leftSectionPointerEvents,
12400
- rightSection: props.rightSection,
12401
- rightSectionWidth: props.rightSectionWidth,
12402
- rightSectionProps: props.rightSectionProps,
12403
- rightSectionPointerEvents: props.rightSectionPointerEvents,
12404
- __clearSection: props.__clearSection,
12405
- __clearable: props.__clearable,
12406
- __clearSectionMode: props.__clearSectionMode,
12407
- __defaultRightSection: props.__defaultRightSection,
12408
- radius: props.radius,
12409
- disabled: props.disabled,
12410
- pointer: props.pointer,
12411
- withErrorStyles: props.withErrorStyles,
12412
- inputSize: props.inputSize,
12413
- loading: props.loading,
12414
- loadingPosition: props.loadingPosition,
12415
- __bottomSection: props.__bottomSection,
12416
- __bottomSectionProps: props.__bottomSectionProps,
12417
- rootRef: props.rootRef
12418
- }, () => slots.default?.()));
12269
+ }, {
12270
+ label: slots.label,
12271
+ description: slots.description,
12272
+ error: slots.error,
12273
+ default: () => (0, vue.h)(Input, {
12274
+ ...attrs,
12275
+ component: props.component,
12276
+ __staticSelector: props.__staticSelector,
12277
+ __stylesApiProps: props.__stylesApiProps ?? props,
12278
+ error: props.error ?? (slots.error ? true : void 0),
12279
+ required: props.required,
12280
+ id: props.id,
12281
+ size: props.size,
12282
+ variant: props.variant,
12283
+ multiline: props.multiline,
12284
+ withAria: props.withAria,
12285
+ classNames: props.classNames,
12286
+ styles: props.styles,
12287
+ vars: props.vars,
12288
+ unstyled: props.unstyled,
12289
+ leftSection: props.leftSection,
12290
+ leftSectionWidth: props.leftSectionWidth,
12291
+ leftSectionProps: props.leftSectionProps,
12292
+ leftSectionPointerEvents: props.leftSectionPointerEvents,
12293
+ rightSection: props.rightSection,
12294
+ rightSectionWidth: props.rightSectionWidth,
12295
+ rightSectionProps: props.rightSectionProps,
12296
+ rightSectionPointerEvents: props.rightSectionPointerEvents,
12297
+ __clearSection: props.__clearSection,
12298
+ __clearable: props.__clearable,
12299
+ __clearSectionMode: props.__clearSectionMode,
12300
+ __defaultRightSection: props.__defaultRightSection,
12301
+ radius: props.radius,
12302
+ disabled: props.disabled,
12303
+ pointer: props.pointer,
12304
+ withErrorStyles: props.withErrorStyles,
12305
+ inputSize: props.inputSize,
12306
+ loading: props.loading,
12307
+ loadingPosition: props.loadingPosition,
12308
+ __bottomSection: props.__bottomSection,
12309
+ __bottomSectionProps: props.__bottomSectionProps,
12310
+ rootRef: props.rootRef
12311
+ }, {
12312
+ default: () => slots.default?.(),
12313
+ leftSection: slots.leftSection,
12314
+ rightSection: slots.rightSection
12315
+ })
12316
+ });
12419
12317
  }
12420
12318
  }));
12421
12319
  Object.assign(InputBase, { classes: Input.classes });
@@ -12431,6 +12329,7 @@ function defaultValueComponent(value) {
12431
12329
  var FileInput = (0, vue.defineComponent)({
12432
12330
  name: "FileInput",
12433
12331
  inheritAttrs: false,
12332
+ slots: Object,
12434
12333
  props: {
12435
12334
  component: {
12436
12335
  type: String,
@@ -12501,12 +12400,7 @@ var FileInput = (0, vue.defineComponent)({
12501
12400
  default: void 0
12502
12401
  },
12503
12402
  placeholder: {
12504
- type: [
12505
- String,
12506
- Number,
12507
- Object,
12508
- Function
12509
- ],
12403
+ type: null,
12510
12404
  default: void 0
12511
12405
  },
12512
12406
  resetRef: {
@@ -12514,13 +12408,7 @@ var FileInput = (0, vue.defineComponent)({
12514
12408
  default: void 0
12515
12409
  },
12516
12410
  rightSection: {
12517
- type: [
12518
- String,
12519
- Number,
12520
- Object,
12521
- Function,
12522
- null
12523
- ],
12411
+ type: null,
12524
12412
  default: void 0
12525
12413
  },
12526
12414
  size: {
@@ -12528,31 +12416,15 @@ var FileInput = (0, vue.defineComponent)({
12528
12416
  default: "sm"
12529
12417
  },
12530
12418
  label: {
12531
- type: [
12532
- String,
12533
- Number,
12534
- Object,
12535
- Function
12536
- ],
12419
+ type: null,
12537
12420
  default: void 0
12538
12421
  },
12539
12422
  description: {
12540
- type: [
12541
- String,
12542
- Number,
12543
- Object,
12544
- Function
12545
- ],
12423
+ type: null,
12546
12424
  default: void 0
12547
12425
  },
12548
12426
  error: {
12549
- type: [
12550
- String,
12551
- Number,
12552
- Object,
12553
- Function,
12554
- Boolean
12555
- ],
12427
+ type: null,
12556
12428
  default: void 0
12557
12429
  },
12558
12430
  required: {
@@ -12584,7 +12456,7 @@ var FileInput = (0, vue.defineComponent)({
12584
12456
  default: false
12585
12457
  }
12586
12458
  },
12587
- setup(props, { attrs }) {
12459
+ setup(props, { attrs, slots }) {
12588
12460
  const resetRef = (0, vue.ref)(null);
12589
12461
  const [value, setValue] = (0, _mantine_vue_hooks.useUncontrolled)({
12590
12462
  value: () => props.value,
@@ -12643,7 +12515,18 @@ var FileInput = (0, vue.defineComponent)({
12643
12515
  classNames: props.classNames,
12644
12516
  styles: props.styles,
12645
12517
  vars: props.vars
12646
- }, () => !hasValue.value ? (0, vue.h)(Input.Placeholder, { __staticSelector: "FileInput" }, () => props.placeholder) : props.valueComponent(value.value)) });
12518
+ }, {
12519
+ default: () => {
12520
+ if (hasValue.value) return props.valueComponent(value.value);
12521
+ const placeholder = resolveNode(props.placeholder, slots.placeholder);
12522
+ return hasNode(placeholder) ? (0, vue.h)(Input.Placeholder, { __staticSelector: "FileInput" }, () => placeholder) : null;
12523
+ },
12524
+ label: slots.label,
12525
+ description: slots.description,
12526
+ error: slots.error,
12527
+ leftSection: slots.leftSection,
12528
+ rightSection: slots.rightSection
12529
+ }) });
12647
12530
  };
12648
12531
  }
12649
12532
  });
@@ -12667,6 +12550,7 @@ var varsResolver$39 = createVarsResolver((theme, { radius, color }) => ({ root:
12667
12550
  var Notification = withBoxProps((0, vue.defineComponent)({
12668
12551
  name: "Notification",
12669
12552
  inheritAttrs: false,
12553
+ slots: Object,
12670
12554
  props: {
12671
12555
  onClose: {
12672
12556
  type: Function,
@@ -12681,21 +12565,11 @@ var Notification = withBoxProps((0, vue.defineComponent)({
12681
12565
  default: void 0
12682
12566
  },
12683
12567
  icon: {
12684
- type: [
12685
- String,
12686
- Number,
12687
- Object,
12688
- Function
12689
- ],
12568
+ type: null,
12690
12569
  default: void 0
12691
12570
  },
12692
12571
  title: {
12693
- type: [
12694
- String,
12695
- Number,
12696
- Object,
12697
- Function
12698
- ],
12572
+ type: null,
12699
12573
  default: void 0
12700
12574
  },
12701
12575
  loading: {
@@ -12753,43 +12627,46 @@ var Notification = withBoxProps((0, vue.defineComponent)({
12753
12627
  vars: props.vars,
12754
12628
  varsResolver: varsResolver$39
12755
12629
  });
12756
- const renderContent = (value) => typeof value === "function" ? value() : value;
12757
- return () => (0, vue.h)(Box, {
12758
- ...attrs,
12759
- role: attrs.role || "alert",
12760
- mod: [{
12761
- withIcon: Boolean(props.icon) || props.loading,
12762
- withBorder: props.withBorder
12763
- }, props.mod],
12764
- ...getStyles("root", {
12765
- className: attrs.class,
12766
- style: attrs.style
12767
- })
12768
- }, () => [
12769
- props.icon && !props.loading ? (0, vue.h)("div", getStyles("icon"), renderContent(props.icon)) : null,
12770
- props.loading ? (0, vue.h)(Loader, {
12771
- size: 28,
12772
- color: props.color,
12773
- ...getStyles("loader"),
12774
- ...props.loaderProps
12775
- }) : null,
12776
- (0, vue.h)("div", getStyles("body"), [props.title ? (0, vue.h)("div", getStyles("title"), renderContent(props.title)) : null, (0, vue.h)(Box, {
12777
- ...getStyles("description"),
12778
- mod: { withTitle: Boolean(props.title) }
12779
- }, () => slots.default?.())]),
12780
- props.withCloseButton ? (0, vue.h)(CloseButton, {
12781
- iconSize: 16,
12782
- color: "gray",
12783
- __staticSelector: "Notification",
12784
- unstyled: props.unstyled,
12785
- ...props.closeButtonProps,
12786
- ...getStyles("closeButton"),
12787
- onClick: (event) => {
12788
- props.closeButtonProps?.onClick?.(event);
12789
- props.onClose?.();
12790
- }
12791
- }) : null
12792
- ]);
12630
+ return () => {
12631
+ const icon = resolveNode(props.icon, slots.icon);
12632
+ const title = resolveNode(props.title, slots.title);
12633
+ return (0, vue.h)(Box, {
12634
+ ...attrs,
12635
+ role: attrs.role || "alert",
12636
+ mod: [{
12637
+ withIcon: hasNode(icon) || props.loading,
12638
+ withBorder: props.withBorder
12639
+ }, props.mod],
12640
+ ...getStyles("root", {
12641
+ className: attrs.class,
12642
+ style: attrs.style
12643
+ })
12644
+ }, () => [
12645
+ hasNode(icon) && !props.loading ? (0, vue.h)("div", getStyles("icon"), icon) : null,
12646
+ props.loading ? (0, vue.h)(Loader, {
12647
+ size: 28,
12648
+ color: props.color,
12649
+ ...getStyles("loader"),
12650
+ ...props.loaderProps
12651
+ }) : null,
12652
+ (0, vue.h)("div", getStyles("body"), [hasNode(title) ? (0, vue.h)("div", getStyles("title"), title) : null, (0, vue.h)(Box, {
12653
+ ...getStyles("description"),
12654
+ mod: { withTitle: hasNode(title) }
12655
+ }, () => slots.default?.())]),
12656
+ props.withCloseButton ? (0, vue.h)(CloseButton, {
12657
+ iconSize: 16,
12658
+ color: "gray",
12659
+ __staticSelector: "Notification",
12660
+ unstyled: props.unstyled,
12661
+ ...props.closeButtonProps,
12662
+ ...getStyles("closeButton"),
12663
+ onClick: (event) => {
12664
+ props.closeButtonProps?.onClick?.(event);
12665
+ props.onClose?.();
12666
+ }
12667
+ }) : null
12668
+ ]);
12669
+ };
12793
12670
  }
12794
12671
  }));
12795
12672
  Object.assign(Notification, {
@@ -13043,6 +12920,7 @@ function getDecimalPlaces(value) {
13043
12920
  var NumberInput = (0, vue.defineComponent)({
13044
12921
  name: "NumberInput",
13045
12922
  inheritAttrs: false,
12923
+ slots: Object,
13046
12924
  props: {
13047
12925
  value: {
13048
12926
  type: [
@@ -13181,13 +13059,7 @@ var NumberInput = (0, vue.defineComponent)({
13181
13059
  default: false
13182
13060
  },
13183
13061
  rightSection: {
13184
- type: [
13185
- String,
13186
- Number,
13187
- Object,
13188
- Function,
13189
- null
13190
- ],
13062
+ type: null,
13191
13063
  default: void 0
13192
13064
  },
13193
13065
  rightSectionWidth: {
@@ -13199,31 +13071,15 @@ var NumberInput = (0, vue.defineComponent)({
13199
13071
  default: void 0
13200
13072
  },
13201
13073
  label: {
13202
- type: [
13203
- String,
13204
- Number,
13205
- Object,
13206
- Function
13207
- ],
13074
+ type: null,
13208
13075
  default: void 0
13209
13076
  },
13210
13077
  description: {
13211
- type: [
13212
- String,
13213
- Number,
13214
- Object,
13215
- Function
13216
- ],
13078
+ type: null,
13217
13079
  default: void 0
13218
13080
  },
13219
13081
  error: {
13220
- type: [
13221
- String,
13222
- Number,
13223
- Object,
13224
- Function,
13225
- Boolean
13226
- ],
13082
+ type: null,
13227
13083
  default: void 0
13228
13084
  },
13229
13085
  required: {
@@ -13255,7 +13111,7 @@ var NumberInput = (0, vue.defineComponent)({
13255
13111
  default: false
13256
13112
  }
13257
13113
  },
13258
- setup(props, { attrs }) {
13114
+ setup(props, { attrs, slots }) {
13259
13115
  const inputRef = (0, vue.ref)(null);
13260
13116
  const isEditing = (0, vue.ref)(false);
13261
13117
  const isBigIntMode = (0, vue.computed)(() => typeof props.value === "bigint" || typeof props.defaultValue === "bigint");
@@ -13436,7 +13292,7 @@ var NumberInput = (0, vue.defineComponent)({
13436
13292
  styles: props.styles,
13437
13293
  vars: props.vars,
13438
13294
  unstyled: props.unstyled,
13439
- rightSection: props.hideControls || props.readOnly ? props.rightSection : props.rightSection || controls,
13295
+ rightSection: props.hideControls || props.readOnly ? props.rightSection : props.rightSection !== void 0 || slots.rightSection ? props.rightSection : controls,
13440
13296
  rightSectionPointerEvents: props.rightSectionPointerEvents ?? (props.disabled ? "none" : void 0),
13441
13297
  rightSectionWidth: props.rightSectionWidth ?? `var(--ni-right-section-width-${props.size || "sm"})`,
13442
13298
  class: [NumberInput_module_default.root, attrs.class],
@@ -13490,7 +13346,7 @@ var NumberInput = (0, vue.defineComponent)({
13490
13346
  rootRef: (node) => {
13491
13347
  inputRef.value = node?.querySelector?.("input") ?? node;
13492
13348
  }
13493
- });
13349
+ }, slots);
13494
13350
  }
13495
13351
  });
13496
13352
  Object.assign(NumberInput, {
@@ -14040,6 +13896,7 @@ function NativeSelectChevron() {
14040
13896
  var NativeSelect = (0, vue.defineComponent)({
14041
13897
  name: "NativeSelect",
14042
13898
  inheritAttrs: false,
13899
+ slots: Object,
14043
13900
  props: {
14044
13901
  data: {
14045
13902
  type: Array,
@@ -14050,23 +13907,11 @@ var NativeSelect = (0, vue.defineComponent)({
14050
13907
  default: void 0
14051
13908
  },
14052
13909
  error: {
14053
- type: [
14054
- String,
14055
- Number,
14056
- Object,
14057
- Function,
14058
- Boolean
14059
- ],
13910
+ type: null,
14060
13911
  default: void 0
14061
13912
  },
14062
13913
  rightSection: {
14063
- type: [
14064
- String,
14065
- Number,
14066
- Object,
14067
- Function,
14068
- null
14069
- ],
13914
+ type: null,
14070
13915
  default: void 0
14071
13916
  },
14072
13917
  rightSectionPointerEvents: {
@@ -14074,21 +13919,11 @@ var NativeSelect = (0, vue.defineComponent)({
14074
13919
  default: void 0
14075
13920
  },
14076
13921
  label: {
14077
- type: [
14078
- String,
14079
- Number,
14080
- Object,
14081
- Function
14082
- ],
13922
+ type: null,
14083
13923
  default: void 0
14084
13924
  },
14085
13925
  description: {
14086
- type: [
14087
- String,
14088
- Number,
14089
- Object,
14090
- Function
14091
- ],
13926
+ type: null,
14092
13927
  default: void 0
14093
13928
  },
14094
13929
  required: {
@@ -14163,7 +13998,7 @@ var NativeSelect = (0, vue.defineComponent)({
14163
13998
  pointer: true,
14164
13999
  error: props.error,
14165
14000
  unstyled: props.unstyled,
14166
- rightSection: props.rightSection ?? NativeSelectChevron,
14001
+ rightSection: props.rightSection !== void 0 || slots.rightSection ? props.rightSection : NativeSelectChevron,
14167
14002
  rightSectionPointerEvents: props.rightSectionPointerEvents,
14168
14003
  label: props.label,
14169
14004
  description: props.description,
@@ -14180,7 +14015,14 @@ var NativeSelect = (0, vue.defineComponent)({
14180
14015
  classNames: props.classNames,
14181
14016
  styles: props.styles,
14182
14017
  vars: props.vars
14183
- }, () => slots.default?.() ?? parsedOptions);
14018
+ }, {
14019
+ default: () => slots.default?.() ?? parsedOptions,
14020
+ label: slots.label,
14021
+ description: slots.description,
14022
+ error: slots.error,
14023
+ leftSection: slots.leftSection,
14024
+ rightSection: slots.rightSection
14025
+ });
14184
14026
  };
14185
14027
  }
14186
14028
  });
@@ -14212,7 +14054,7 @@ var varsResolver$35 = createVarsResolver((theme, { variant, color, childrenOffse
14212
14054
  children: { "--nl-offset": getSpacing(childrenOffset) }
14213
14055
  };
14214
14056
  });
14215
- function renderContent$2(content) {
14057
+ function renderContent(content) {
14216
14058
  return typeof content === "function" ? content() : content;
14217
14059
  }
14218
14060
  function callHandler$8(handler, event) {
@@ -14222,6 +14064,7 @@ function callHandler$8(handler, event) {
14222
14064
  var NavLink = withBoxProps((0, vue.defineComponent)({
14223
14065
  name: "NavLink",
14224
14066
  inheritAttrs: false,
14067
+ slots: Object,
14225
14068
  props: {
14226
14069
  component: {
14227
14070
  type: String,
@@ -14237,12 +14080,7 @@ var NavLink = withBoxProps((0, vue.defineComponent)({
14237
14080
  default: void 0
14238
14081
  },
14239
14082
  description: {
14240
- type: [
14241
- String,
14242
- Number,
14243
- Object,
14244
- Function
14245
- ],
14083
+ type: null,
14246
14084
  default: void 0
14247
14085
  },
14248
14086
  leftSection: {
@@ -14255,13 +14093,7 @@ var NavLink = withBoxProps((0, vue.defineComponent)({
14255
14093
  default: void 0
14256
14094
  },
14257
14095
  rightSection: {
14258
- type: [
14259
- String,
14260
- Number,
14261
- Object,
14262
- Function,
14263
- null
14264
- ],
14096
+ type: null,
14265
14097
  default: void 0
14266
14098
  },
14267
14099
  active: {
@@ -14353,10 +14185,10 @@ var NavLink = withBoxProps((0, vue.defineComponent)({
14353
14185
  varsResolver: varsResolver$35
14354
14186
  });
14355
14187
  return () => {
14356
- const children = slots.default?.();
14357
- const withChildren = Boolean(children && children.length > 0);
14358
- const rightSection = props.rightSection ?? slots.rightSection?.();
14359
- const leftSection = props.leftSection ?? slots.leftSection?.();
14188
+ const children = slots.default?.() ?? [];
14189
+ const withChildren = hasNode(children);
14190
+ const rightSection = resolveNode(props.rightSection, slots.rightSection);
14191
+ const leftSection = resolveNode(props.leftSection, slots.leftSection);
14360
14192
  const toggle = (event) => {
14361
14193
  if (withChildren) {
14362
14194
  event.preventDefault();
@@ -14386,30 +14218,30 @@ var NavLink = withBoxProps((0, vue.defineComponent)({
14386
14218
  if (event.code === "Space" && withChildren) toggle(event);
14387
14219
  }
14388
14220
  }, () => [
14389
- leftSection ? (0, vue.h)(Box, {
14221
+ hasNode(leftSection) ? (0, vue.h)(Box, {
14390
14222
  component: "span",
14391
14223
  ...getStyles("section"),
14392
14224
  mod: { position: "left" }
14393
- }, () => renderContent$2(leftSection)) : null,
14225
+ }, () => renderContent(leftSection)) : null,
14394
14226
  (0, vue.h)(Box, {
14395
14227
  ...getStyles("body"),
14396
14228
  mod: { "no-wrap": props.noWrap }
14397
14229
  }, () => [(0, vue.h)(Box, {
14398
14230
  component: "span",
14399
14231
  ...getStyles("label")
14400
- }, () => renderContent$2(props.label ?? slots.label?.())), props.description || slots.description ? (0, vue.h)(Box, {
14232
+ }, () => renderContent(props.label ?? slots.label?.())), props.description || slots.description ? (0, vue.h)(Box, {
14401
14233
  component: "span",
14402
14234
  mod: { active: props.active },
14403
14235
  ...getStyles("description")
14404
- }, () => renderContent$2(props.description ?? slots.description?.())) : null]),
14405
- withChildren || rightSection !== void 0 ? (0, vue.h)(Box, {
14236
+ }, () => renderContent(props.description ?? slots.description?.())) : null]),
14237
+ withChildren || hasNode(rightSection) ? (0, vue.h)(Box, {
14406
14238
  ...getStyles("section"),
14407
14239
  component: "span",
14408
14240
  mod: {
14409
14241
  rotate: opened.value && !props.disableRightSectionRotation,
14410
14242
  position: "right"
14411
14243
  }
14412
- }, () => withChildren ? rightSection !== void 0 ? renderContent$2(rightSection) : (0, vue.h)(AccordionChevron, getStyles("chevron")) : renderContent$2(rightSection)) : null
14244
+ }, () => withChildren ? hasNode(rightSection) ? renderContent(rightSection) : (0, vue.h)(AccordionChevron, getStyles("chevron")) : renderContent(rightSection)) : null
14413
14245
  ]), withChildren ? (0, vue.h)(Collapse, {
14414
14246
  expanded: opened.value,
14415
14247
  keepMounted: props.keepMounted,
@@ -14945,6 +14777,7 @@ var varsResolver$31 = createVarsResolver((theme, { size, color }) => ({ root: {
14945
14777
  var Rating = withBoxProps((0, vue.defineComponent)({
14946
14778
  name: "Rating",
14947
14779
  inheritAttrs: false,
14780
+ slots: Object,
14948
14781
  props: {
14949
14782
  defaultValue: {
14950
14783
  type: Number,
@@ -14959,21 +14792,11 @@ var Rating = withBoxProps((0, vue.defineComponent)({
14959
14792
  default: void 0
14960
14793
  },
14961
14794
  emptySymbol: {
14962
- type: [
14963
- String,
14964
- Number,
14965
- Object,
14966
- Function
14967
- ],
14795
+ type: null,
14968
14796
  default: void 0
14969
14797
  },
14970
14798
  fullSymbol: {
14971
- type: [
14972
- String,
14973
- Number,
14974
- Object,
14975
- Function
14976
- ],
14799
+ type: null,
14977
14800
  default: void 0
14978
14801
  },
14979
14802
  fractions: {
@@ -15037,7 +14860,7 @@ var Rating = withBoxProps((0, vue.defineComponent)({
15037
14860
  default: false
15038
14861
  }
15039
14862
  },
15040
- setup(rawProps, { attrs }) {
14863
+ setup(rawProps, { attrs, slots }) {
15041
14864
  const props = useProps("Rating", defaultProps$11, rawProps);
15042
14865
  const rootRef = (0, vue.ref)(null);
15043
14866
  const hovered = (0, vue.ref)(-1);
@@ -15071,6 +14894,8 @@ var Rating = withBoxProps((0, vue.defineComponent)({
15071
14894
  return clamp$2(roundValueTo((dir.value === "rtl" ? right - x : x - left) / symbolWidth + decimalUnit / 2, decimalUnit), decimalUnit, count);
15072
14895
  };
15073
14896
  return () => {
14897
+ const emptySymbol = props.emptySymbol ?? (slots.emptySymbol ? (value) => slots.emptySymbol({ value }) : void 0);
14898
+ const fullSymbol = props.fullSymbol ?? (slots.fullSymbol ? (value) => slots.fullSymbol({ value }) : void 0);
15074
14899
  const count = Math.max(0, Math.floor(props.count ?? defaultProps$11.count));
15075
14900
  const fractions = Math.floor(props.fractions ?? defaultProps$11.fractions);
15076
14901
  if (fractions < 0) throw new Error("Rating fractions cannot be negative");
@@ -15090,8 +14915,8 @@ var Rating = withBoxProps((0, vue.defineComponent)({
15090
14915
  return (0, vue.h)(RatingItem, {
15091
14916
  key: `${integerValue}-${symbolValue}`,
15092
14917
  getSymbolLabel: props.getSymbolLabel,
15093
- emptyIcon: props.emptySymbol,
15094
- fullIcon: props.fullSymbol,
14918
+ emptyIcon: emptySymbol,
14919
+ fullIcon: fullSymbol,
15095
14920
  full: props.highlightSelectedOnly ? symbolValue === finalValue : symbolValue <= finalValue,
15096
14921
  active: symbolValue === finalValue,
15097
14922
  checked: symbolValue === stableValueRounded,
@@ -15684,6 +15509,7 @@ function createEdge(name, icon, label, getDisabled, getAction) {
15684
15509
  return (0, vue.defineComponent)({
15685
15510
  name,
15686
15511
  inheritAttrs: false,
15512
+ slots: Object,
15687
15513
  props: {
15688
15514
  icon: {
15689
15515
  type: [Object, Function],
@@ -15694,7 +15520,7 @@ function createEdge(name, icon, label, getDisabled, getAction) {
15694
15520
  default: false
15695
15521
  }
15696
15522
  },
15697
- setup(props, { attrs }) {
15523
+ setup(props, { attrs, slots }) {
15698
15524
  const ctx = usePaginationContext();
15699
15525
  return () => {
15700
15526
  const Icon = props.icon ?? icon;
@@ -15705,7 +15531,7 @@ function createEdge(name, icon, label, getDisabled, getAction) {
15705
15531
  withPadding: false,
15706
15532
  "aria-label": attrs["aria-label"] ?? label,
15707
15533
  onClick: disabled ? void 0 : getAction(ctx)
15708
- }, () => (0, vue.h)(Icon, { class: "mantine-rotate-rtl" }));
15534
+ }, () => slots.icon ? slots.icon() : (0, vue.h)(Icon, { class: "mantine-rotate-rtl" }));
15709
15535
  };
15710
15536
  }
15711
15537
  });
@@ -15719,11 +15545,12 @@ var PaginationLast = withBoxProps(createEdge("PaginationLast", PaginationLastIco
15719
15545
  var PaginationDots = withBoxProps((0, vue.defineComponent)({
15720
15546
  name: "PaginationDots",
15721
15547
  inheritAttrs: false,
15548
+ slots: Object,
15722
15549
  props: { icon: {
15723
15550
  type: [Object, Function],
15724
15551
  default: void 0
15725
15552
  } },
15726
- setup(props, { attrs }) {
15553
+ setup(props, { attrs, slots }) {
15727
15554
  const ctx = usePaginationContext();
15728
15555
  return () => {
15729
15556
  const Icon = props.icon ?? PaginationDotsIcon;
@@ -15734,7 +15561,7 @@ var PaginationDots = withBoxProps((0, vue.defineComponent)({
15734
15561
  className: attrs.class,
15735
15562
  style: attrs.style
15736
15563
  })
15737
- }, () => (0, vue.h)(Icon));
15564
+ }, () => slots.icon ? slots.icon() : (0, vue.h)(Icon));
15738
15565
  };
15739
15566
  }
15740
15567
  }));
@@ -16216,9 +16043,6 @@ var TabsPanel = withBoxProps((0, vue.defineComponent)({
16216
16043
  }));
16217
16044
  //#endregion
16218
16045
  //#region src/components/Tabs/TabsTab/TabsTab.ts
16219
- function renderContent$1(content) {
16220
- return typeof content === "function" ? content() : content;
16221
- }
16222
16046
  function getTabs(event, selector) {
16223
16047
  const parent = event.currentTarget.closest("[role=\"tablist\"]");
16224
16048
  return Array.from(parent?.querySelectorAll(selector) ?? []).filter((item) => !item.hasAttribute("disabled") && item.getAttribute("aria-disabled") !== "true");
@@ -16251,27 +16075,18 @@ function createTabsKeydownHandler({ orientation, dir, loop, activateOnFocus, onK
16251
16075
  var TabsTab = (0, vue.defineComponent)({
16252
16076
  name: "TabsTab",
16253
16077
  inheritAttrs: false,
16078
+ slots: Object,
16254
16079
  props: {
16255
16080
  value: {
16256
16081
  type: String,
16257
16082
  required: true
16258
16083
  },
16259
16084
  rightSection: {
16260
- type: [
16261
- String,
16262
- Number,
16263
- Object,
16264
- Function
16265
- ],
16085
+ type: null,
16266
16086
  default: void 0
16267
16087
  },
16268
16088
  leftSection: {
16269
- type: [
16270
- String,
16271
- Number,
16272
- Object,
16273
- Function
16274
- ],
16089
+ type: null,
16275
16090
  default: void 0
16276
16091
  },
16277
16092
  color: {
@@ -16317,6 +16132,8 @@ var TabsTab = (0, vue.defineComponent)({
16317
16132
  const ctx = useTabsContext();
16318
16133
  return () => {
16319
16134
  const active = props.value === ctx.value;
16135
+ const leftSection = resolveNode(props.leftSection, slots.leftSection);
16136
+ const rightSection = resolveNode(props.rightSection, slots.rightSection);
16320
16137
  const stylesApiProps = {
16321
16138
  classNames: props.classNames,
16322
16139
  styles: props.styles,
@@ -16361,20 +16178,20 @@ var TabsTab = (0, vue.defineComponent)({
16361
16178
  onKeydown: props.onKeydown ?? props.onKeyDown
16362
16179
  })
16363
16180
  }, () => [
16364
- props.leftSection ? (0, vue.h)(Box, {
16181
+ hasNode(leftSection) ? (0, vue.h)(Box, {
16365
16182
  component: "span",
16366
16183
  ...ctx.getStyles("tabSection", stylesApiProps),
16367
16184
  "data-position": "left"
16368
- }, () => renderContent$1(props.leftSection)) : null,
16185
+ }, () => leftSection) : null,
16369
16186
  slots.default ? (0, vue.h)(Box, {
16370
16187
  component: "span",
16371
16188
  ...ctx.getStyles("tabLabel", stylesApiProps)
16372
16189
  }, () => slots.default?.()) : null,
16373
- props.rightSection ? (0, vue.h)(Box, {
16190
+ hasNode(rightSection) ? (0, vue.h)(Box, {
16374
16191
  component: "span",
16375
16192
  ...ctx.getStyles("tabSection", stylesApiProps),
16376
16193
  "data-position": "right"
16377
- }, () => renderContent$1(props.rightSection)) : null
16194
+ }, () => rightSection) : null
16378
16195
  ]);
16379
16196
  };
16380
16197
  }
@@ -16807,7 +16624,7 @@ var Textarea = (0, vue.defineComponent)({
16807
16624
  default: void 0
16808
16625
  }
16809
16626
  },
16810
- setup(props, { attrs }) {
16627
+ setup(props, { attrs, slots }) {
16811
16628
  return () => {
16812
16629
  const shouldAutosize = props.autosize;
16813
16630
  const autosizeProps = shouldAutosize ? {
@@ -16824,7 +16641,7 @@ var Textarea = (0, vue.defineComponent)({
16824
16641
  __bottomSectionProps: props.bottomSectionProps,
16825
16642
  style: [{ "--input-resize": props.resize }, attrs.style],
16826
16643
  ...autosizeProps
16827
- });
16644
+ }, slots);
16828
16645
  };
16829
16646
  }
16830
16647
  });
@@ -16903,7 +16720,7 @@ var JsonInput = (0, vue.defineComponent)({
16903
16720
  default: void 0
16904
16721
  }
16905
16722
  },
16906
- setup(props, { attrs }) {
16723
+ setup(props, { attrs, slots }) {
16907
16724
  const [value, setValue] = (0, _mantine_vue_hooks.useUncontrolled)({
16908
16725
  value: () => props.value,
16909
16726
  defaultValue: props.defaultValue,
@@ -16934,7 +16751,7 @@ var JsonInput = (0, vue.defineComponent)({
16934
16751
  if (props.formatOnBlur && !props.readOnly && isValid && target.value.trim() !== "") setValue(props.serialize(props.deserialize(target.value), null, props.indentSpaces));
16935
16752
  valid.value = isValid;
16936
16753
  }
16937
- });
16754
+ }, slots);
16938
16755
  }
16939
16756
  });
16940
16757
  Object.assign(JsonInput, { classes: InputBase.classes });
@@ -16943,13 +16760,13 @@ Object.assign(JsonInput, { classes: InputBase.classes });
16943
16760
  var TextInput = (0, vue.defineComponent)({
16944
16761
  name: "TextInput",
16945
16762
  inheritAttrs: false,
16946
- setup(_, { attrs }) {
16763
+ setup(_, { attrs, slots }) {
16947
16764
  return () => (0, vue.h)(InputBase, {
16948
16765
  ...attrs,
16949
16766
  component: "input",
16950
16767
  __staticSelector: "TextInput",
16951
16768
  __stylesApiProps: attrs
16952
- });
16769
+ }, slots);
16953
16770
  }
16954
16771
  });
16955
16772
  Object.assign(TextInput, { classes: InputBase.classes });
@@ -17035,6 +16852,7 @@ var mergedClasses$3 = {
17035
16852
  var PasswordInput = (0, vue.defineComponent)({
17036
16853
  name: "PasswordInput",
17037
16854
  inheritAttrs: false,
16855
+ slots: Object,
17038
16856
  props: {
17039
16857
  visibilityToggleIcon: {
17040
16858
  type: [Object, Function],
@@ -17057,31 +16875,15 @@ var PasswordInput = (0, vue.defineComponent)({
17057
16875
  default: void 0
17058
16876
  },
17059
16877
  label: {
17060
- type: [
17061
- String,
17062
- Number,
17063
- Object,
17064
- Function
17065
- ],
16878
+ type: null,
17066
16879
  default: void 0
17067
16880
  },
17068
16881
  description: {
17069
- type: [
17070
- String,
17071
- Number,
17072
- Object,
17073
- Function
17074
- ],
16882
+ type: null,
17075
16883
  default: void 0
17076
16884
  },
17077
16885
  error: {
17078
- type: [
17079
- String,
17080
- Number,
17081
- Object,
17082
- Function,
17083
- Boolean
17084
- ],
16886
+ type: null,
17085
16887
  default: void 0
17086
16888
  },
17087
16889
  required: {
@@ -17137,12 +16939,7 @@ var PasswordInput = (0, vue.defineComponent)({
17137
16939
  default: false
17138
16940
  },
17139
16941
  leftSection: {
17140
- type: [
17141
- String,
17142
- Number,
17143
- Object,
17144
- Function
17145
- ],
16942
+ type: null,
17146
16943
  default: void 0
17147
16944
  },
17148
16945
  leftSectionWidth: {
@@ -17158,13 +16955,7 @@ var PasswordInput = (0, vue.defineComponent)({
17158
16955
  default: void 0
17159
16956
  },
17160
16957
  rightSection: {
17161
- type: [
17162
- String,
17163
- Number,
17164
- Object,
17165
- Function,
17166
- null
17167
- ],
16958
+ type: null,
17168
16959
  default: void 0
17169
16960
  },
17170
16961
  rightSectionWidth: {
@@ -17200,7 +16991,7 @@ var PasswordInput = (0, vue.defineComponent)({
17200
16991
  default: false
17201
16992
  }
17202
16993
  },
17203
- setup(props, { attrs }) {
16994
+ setup(props, { attrs, slots }) {
17204
16995
  const uuid = (0, _mantine_vue_hooks.useId)(props.id);
17205
16996
  const fallbackId = (0, vue.ref)(`password-input-${Math.random().toString(36).slice(2)}`);
17206
16997
  const [visible, setVisible] = (0, _mantine_vue_hooks.useUncontrolled)({
@@ -17226,8 +17017,8 @@ var PasswordInput = (0, vue.defineComponent)({
17226
17017
  const id = uuid.value || fallbackId.value;
17227
17018
  const errorId = props.errorProps?.id || `${id}-error`;
17228
17019
  const descriptionId = props.descriptionProps?.id || `${id}-description`;
17229
- const hasError = Boolean(props.error) && typeof props.error !== "boolean";
17230
- const hasDescription = Boolean(props.description);
17020
+ const hasError = props.error !== void 0 ? Boolean(props.error) && typeof props.error !== "boolean" : Boolean(slots.error);
17021
+ const hasDescription = props.description !== void 0 ? props.description !== null : Boolean(slots.description);
17231
17022
  const describedBy = `${hasError ? errorId : ""} ${hasDescription ? descriptionId : ""}`.trim() || void 0;
17232
17023
  const VisibilityToggleIcon = props.visibilityToggleIcon || PasswordToggleIcon;
17233
17024
  const visibilityToggleButton = (0, vue.h)(ActionIcon, {
@@ -17291,43 +17082,52 @@ var PasswordInput = (0, vue.defineComponent)({
17291
17082
  className: attrs.class,
17292
17083
  style: attrs.style
17293
17084
  })
17294
- }, () => (0, vue.h)(Input, {
17295
- component: "div",
17296
- error: props.error,
17297
- leftSection: props.leftSection,
17298
- size: props.size,
17299
- classNames: {
17300
- ...props.classNames,
17301
- input: [PasswordInput_module_default.input, props.classNames?.input]
17302
- },
17303
- styles: props.styles,
17304
- radius: props.radius,
17305
- disabled: props.disabled,
17306
- __staticSelector: "PasswordInput",
17307
- __stylesApiProps: props,
17308
- rightSectionWidth: props.rightSectionWidth,
17309
- rightSection: props.rightSection ?? visibilityToggleButton,
17310
- variant: props.variant,
17311
- unstyled: props.unstyled,
17312
- leftSectionWidth: props.leftSectionWidth,
17313
- rightSectionPointerEvents: props.rightSectionPointerEvents || "all",
17314
- rightSectionProps: props.rightSectionProps,
17315
- leftSectionProps: props.leftSectionProps,
17316
- leftSectionPointerEvents: props.leftSectionPointerEvents,
17317
- withAria: false,
17318
- withErrorStyles: props.withErrorStyles
17319
- }, () => (0, vue.h)("input", {
17320
- ...attrs,
17321
- ...getStyles("innerInput"),
17322
- required: props.required,
17323
- "data-invalid": props.error ? true : void 0,
17324
- "data-with-left-section": props.leftSection ? true : void 0,
17325
- disabled: props.disabled,
17326
- id,
17327
- "aria-describedby": describedBy,
17328
- autocomplete: attrs.autocomplete || "off",
17329
- type: visible.value ? "text" : "password"
17330
- })));
17085
+ }, {
17086
+ label: slots.label,
17087
+ description: slots.description,
17088
+ error: slots.error,
17089
+ default: () => (0, vue.h)(Input, {
17090
+ component: "div",
17091
+ error: props.error ?? (slots.error ? true : void 0),
17092
+ leftSection: props.leftSection,
17093
+ size: props.size,
17094
+ classNames: {
17095
+ ...props.classNames,
17096
+ input: [PasswordInput_module_default.input, props.classNames?.input]
17097
+ },
17098
+ styles: props.styles,
17099
+ radius: props.radius,
17100
+ disabled: props.disabled,
17101
+ __staticSelector: "PasswordInput",
17102
+ __stylesApiProps: props,
17103
+ rightSectionWidth: props.rightSectionWidth,
17104
+ rightSection: props.rightSection !== void 0 || slots.rightSection ? props.rightSection : visibilityToggleButton,
17105
+ variant: props.variant,
17106
+ unstyled: props.unstyled,
17107
+ leftSectionWidth: props.leftSectionWidth,
17108
+ rightSectionPointerEvents: props.rightSectionPointerEvents || "all",
17109
+ rightSectionProps: props.rightSectionProps,
17110
+ leftSectionProps: props.leftSectionProps,
17111
+ leftSectionPointerEvents: props.leftSectionPointerEvents,
17112
+ withAria: false,
17113
+ withErrorStyles: props.withErrorStyles
17114
+ }, {
17115
+ default: () => (0, vue.h)("input", {
17116
+ ...attrs,
17117
+ ...getStyles("innerInput"),
17118
+ required: props.required,
17119
+ "data-invalid": props.error || slots.error ? true : void 0,
17120
+ "data-with-left-section": props.leftSection !== void 0 || slots.leftSection ? true : void 0,
17121
+ disabled: props.disabled,
17122
+ id,
17123
+ "aria-describedby": describedBy,
17124
+ autocomplete: attrs.autocomplete || "off",
17125
+ type: visible.value ? "text" : "password"
17126
+ }),
17127
+ leftSection: slots.leftSection,
17128
+ rightSection: slots.rightSection
17129
+ })
17130
+ });
17331
17131
  };
17332
17132
  }
17333
17133
  });
@@ -17566,6 +17366,7 @@ function useCheckboxGroupContext() {
17566
17366
  var CheckboxGroup = (0, vue.defineComponent)({
17567
17367
  name: "CheckboxGroup",
17568
17368
  inheritAttrs: false,
17369
+ slots: Object,
17569
17370
  props: {
17570
17371
  value: {
17571
17372
  type: Array,
@@ -17612,31 +17413,15 @@ var CheckboxGroup = (0, vue.defineComponent)({
17612
17413
  default: false
17613
17414
  },
17614
17415
  label: {
17615
- type: [
17616
- String,
17617
- Number,
17618
- Object,
17619
- Function
17620
- ],
17416
+ type: null,
17621
17417
  default: void 0
17622
17418
  },
17623
17419
  description: {
17624
- type: [
17625
- String,
17626
- Number,
17627
- Object,
17628
- Function
17629
- ],
17420
+ type: null,
17630
17421
  default: void 0
17631
17422
  },
17632
17423
  error: {
17633
- type: [
17634
- String,
17635
- Number,
17636
- Object,
17637
- Function,
17638
- Boolean
17639
- ],
17424
+ type: null,
17640
17425
  default: void 0
17641
17426
  },
17642
17427
  classNames: {
@@ -17693,9 +17478,9 @@ var CheckboxGroup = (0, vue.defineComponent)({
17693
17478
  size: props.size,
17694
17479
  ...props.wrapperProps,
17695
17480
  ...attrs,
17696
- label: props.label,
17697
- description: props.description,
17698
- error: props.error,
17481
+ label: resolveNode(props.label, slots.label),
17482
+ description: resolveNode(props.description, slots.description),
17483
+ error: resolveNode(props.error, slots.error),
17699
17484
  classNames: props.classNames,
17700
17485
  styles: props.styles,
17701
17486
  vars: props.vars,
@@ -17837,6 +17622,7 @@ var varsResolver$24 = createVarsResolver((theme, { radius, color, size, iconColo
17837
17622
  var CheckboxIndicator = withBoxProps((0, vue.defineComponent)({
17838
17623
  name: "CheckboxIndicator",
17839
17624
  inheritAttrs: false,
17625
+ slots: Object,
17840
17626
  props: {
17841
17627
  color: {
17842
17628
  type: String,
@@ -17899,7 +17685,7 @@ var CheckboxIndicator = withBoxProps((0, vue.defineComponent)({
17899
17685
  default: false
17900
17686
  }
17901
17687
  },
17902
- setup(props, { attrs }) {
17688
+ setup(props, { attrs, slots }) {
17903
17689
  const cardContext = useCheckboxCardContext();
17904
17690
  const getStyles = useStyles({
17905
17691
  name: "CheckboxIndicator",
@@ -17914,6 +17700,7 @@ var CheckboxIndicator = withBoxProps((0, vue.defineComponent)({
17914
17700
  varsResolver: varsResolver$24
17915
17701
  });
17916
17702
  return () => {
17703
+ const iconStyles = getStyles("icon");
17917
17704
  const Icon = props.icon || CheckboxIcon;
17918
17705
  const checked = typeof props.checked === "boolean" || props.indeterminate ? props.checked || props.indeterminate : cardContext?.checked || false;
17919
17706
  return (0, vue.h)(Box, {
@@ -17928,9 +17715,12 @@ var CheckboxIndicator = withBoxProps((0, vue.defineComponent)({
17928
17715
  indeterminate: props.indeterminate,
17929
17716
  disabled: props.disabled
17930
17717
  }, props.mod]
17931
- }, () => (0, vue.h)(Icon, {
17718
+ }, () => slots.icon ? slots.icon({
17932
17719
  indeterminate: props.indeterminate,
17933
- ...getStyles("icon")
17720
+ ...iconStyles
17721
+ }) : (0, vue.h)(Icon, {
17722
+ indeterminate: props.indeterminate,
17723
+ ...iconStyles
17934
17724
  }));
17935
17725
  };
17936
17726
  }
@@ -17968,18 +17758,14 @@ function callHandler$6(handler, event) {
17968
17758
  var CheckboxBase = (0, vue.defineComponent)({
17969
17759
  name: "Checkbox",
17970
17760
  inheritAttrs: false,
17761
+ slots: Object,
17971
17762
  props: {
17972
17763
  id: {
17973
17764
  type: String,
17974
17765
  default: void 0
17975
17766
  },
17976
17767
  label: {
17977
- type: [
17978
- String,
17979
- Number,
17980
- Object,
17981
- Function
17982
- ],
17768
+ type: null,
17983
17769
  default: void 0
17984
17770
  },
17985
17771
  color: {
@@ -18003,22 +17789,11 @@ var CheckboxBase = (0, vue.defineComponent)({
18003
17789
  default: "right"
18004
17790
  },
18005
17791
  description: {
18006
- type: [
18007
- String,
18008
- Number,
18009
- Object,
18010
- Function
18011
- ],
17792
+ type: null,
18012
17793
  default: void 0
18013
17794
  },
18014
17795
  error: {
18015
- type: [
18016
- String,
18017
- Number,
18018
- Object,
18019
- Function,
18020
- Boolean
18021
- ],
17796
+ type: null,
18022
17797
  default: void 0
18023
17798
  },
18024
17799
  indeterminate: {
@@ -18082,7 +17857,7 @@ var CheckboxBase = (0, vue.defineComponent)({
18082
17857
  default: false
18083
17858
  }
18084
17859
  },
18085
- setup(props, { attrs }) {
17860
+ setup(props, { attrs, slots }) {
18086
17861
  const uuid = (0, _mantine_vue_hooks.useId)(props.id);
18087
17862
  const groupContext = useCheckboxGroupContext();
18088
17863
  const getStyles = useStyles({
@@ -18099,11 +17874,19 @@ var CheckboxBase = (0, vue.defineComponent)({
18099
17874
  });
18100
17875
  return () => {
18101
17876
  const id = uuid.value || props.id || "";
17877
+ const label = resolveNode(props.label, slots.label);
17878
+ const description = resolveNode(props.description, slots.description);
17879
+ const error = resolveNode(props.error, slots.error);
18102
17880
  const describedBy = [
18103
- props.description ? `${id}-description` : void 0,
18104
- props.error && typeof props.error !== "boolean" ? `${id}-error` : void 0,
17881
+ description ? `${id}-description` : void 0,
17882
+ error && typeof error !== "boolean" ? `${id}-error` : void 0,
18105
17883
  attrs["aria-describedby"]
18106
17884
  ].filter(Boolean).join(" ") || void 0;
17885
+ const iconStyles = getStyles("icon");
17886
+ const iconSlotProps = {
17887
+ indeterminate: props.indeterminate,
17888
+ ...iconStyles
17889
+ };
18107
17890
  const Icon = props.icon || CheckboxIcon;
18108
17891
  const value = String(attrs.value ?? "");
18109
17892
  const checked = groupContext ? groupContext.value.includes(value) : props.checked;
@@ -18120,9 +17903,9 @@ var CheckboxBase = (0, vue.defineComponent)({
18120
17903
  id,
18121
17904
  size,
18122
17905
  labelPosition: props.labelPosition,
18123
- label: props.label,
18124
- description: props.description,
18125
- error: props.error,
17906
+ label,
17907
+ description,
17908
+ error,
18126
17909
  disabled,
18127
17910
  classNames: props.classNames,
18128
17911
  styles: props.styles,
@@ -18146,7 +17929,7 @@ var CheckboxBase = (0, vue.defineComponent)({
18146
17929
  "aria-describedby": describedBy,
18147
17930
  "data-indeterminate": props.indeterminate || void 0,
18148
17931
  mod: {
18149
- error: Boolean(props.error),
17932
+ error: Boolean(error),
18150
17933
  withErrorStyles: props.withErrorStyles
18151
17934
  },
18152
17935
  variant: props.variant,
@@ -18158,9 +17941,9 @@ var CheckboxBase = (0, vue.defineComponent)({
18158
17941
  callHandler$6(attrs.onChange, event);
18159
17942
  groupContext?.onChange(event);
18160
17943
  }
18161
- }), (0, vue.h)(Icon, {
17944
+ }), slots.icon ? slots.icon(iconSlotProps) : (0, vue.h)(Icon, {
18162
17945
  indeterminate: props.indeterminate,
18163
- ...getStyles("icon")
17946
+ ...iconStyles
18164
17947
  })]));
18165
17948
  };
18166
17949
  }
@@ -18752,6 +18535,7 @@ Object.assign(PillsInputField, { classes: PillsInput_module_default });
18752
18535
  var PillsInputBase = (0, vue.defineComponent)({
18753
18536
  name: "PillsInput",
18754
18537
  inheritAttrs: false,
18538
+ slots: Object,
18755
18539
  props: {
18756
18540
  size: {
18757
18541
  type: [String, Number],
@@ -18762,13 +18546,7 @@ var PillsInputBase = (0, vue.defineComponent)({
18762
18546
  default: false
18763
18547
  },
18764
18548
  error: {
18765
- type: [
18766
- String,
18767
- Number,
18768
- Object,
18769
- Function,
18770
- Boolean
18771
- ],
18549
+ type: null,
18772
18550
  default: void 0
18773
18551
  },
18774
18552
  variant: {
@@ -18784,21 +18562,11 @@ var PillsInputBase = (0, vue.defineComponent)({
18784
18562
  default: void 0
18785
18563
  },
18786
18564
  label: {
18787
- type: [
18788
- String,
18789
- Number,
18790
- Object,
18791
- Function
18792
- ],
18793
- default: void 0
18794
- },
18795
- description: {
18796
- type: [
18797
- String,
18798
- Number,
18799
- Object,
18800
- Function
18801
- ],
18565
+ type: null,
18566
+ default: void 0
18567
+ },
18568
+ description: {
18569
+ type: null,
18802
18570
  default: void 0
18803
18571
  },
18804
18572
  required: {
@@ -18895,7 +18663,14 @@ var PillsInputBase = (0, vue.defineComponent)({
18895
18663
  else handler?.(event);
18896
18664
  }
18897
18665
  }
18898
- }, () => slots.default?.());
18666
+ }, {
18667
+ default: () => slots.default?.(),
18668
+ label: slots.label,
18669
+ description: slots.description,
18670
+ error: slots.error,
18671
+ leftSection: slots.leftSection,
18672
+ rightSection: slots.rightSection
18673
+ });
18899
18674
  }
18900
18675
  });
18901
18676
  var PillsInput = Object.assign(PillsInputBase, {
@@ -18911,6 +18686,7 @@ function useRadioGroupContext() {
18911
18686
  var RadioGroup = (0, vue.defineComponent)({
18912
18687
  name: "RadioGroup",
18913
18688
  inheritAttrs: false,
18689
+ slots: Object,
18914
18690
  props: {
18915
18691
  value: {
18916
18692
  type: String,
@@ -18945,31 +18721,15 @@ var RadioGroup = (0, vue.defineComponent)({
18945
18721
  default: false
18946
18722
  },
18947
18723
  label: {
18948
- type: [
18949
- String,
18950
- Number,
18951
- Object,
18952
- Function
18953
- ],
18724
+ type: null,
18954
18725
  default: void 0
18955
18726
  },
18956
18727
  description: {
18957
- type: [
18958
- String,
18959
- Number,
18960
- Object,
18961
- Function
18962
- ],
18728
+ type: null,
18963
18729
  default: void 0
18964
18730
  },
18965
18731
  error: {
18966
- type: [
18967
- String,
18968
- Number,
18969
- Object,
18970
- Function,
18971
- Boolean
18972
- ],
18732
+ type: null,
18973
18733
  default: void 0
18974
18734
  },
18975
18735
  classNames: {
@@ -19020,9 +18780,9 @@ var RadioGroup = (0, vue.defineComponent)({
19020
18780
  size: props.size,
19021
18781
  ...props.wrapperProps,
19022
18782
  ...attrs,
19023
- label: props.label,
19024
- description: props.description,
19025
- error: props.error,
18783
+ label: resolveNode(props.label, slots.label),
18784
+ description: resolveNode(props.description, slots.description),
18785
+ error: resolveNode(props.error, slots.error),
19026
18786
  classNames: props.classNames,
19027
18787
  styles: props.styles,
19028
18788
  vars: props.vars,
@@ -19178,6 +18938,7 @@ var varsResolver$18 = createVarsResolver((theme, { radius, color, size, iconColo
19178
18938
  var RadioIndicator = withBoxProps((0, vue.defineComponent)({
19179
18939
  name: "RadioIndicator",
19180
18940
  inheritAttrs: false,
18941
+ slots: Object,
19181
18942
  props: {
19182
18943
  color: {
19183
18944
  type: String,
@@ -19236,7 +18997,7 @@ var RadioIndicator = withBoxProps((0, vue.defineComponent)({
19236
18997
  default: false
19237
18998
  }
19238
18999
  },
19239
- setup(props, { attrs }) {
19000
+ setup(props, { attrs, slots }) {
19240
19001
  const cardContext = useRadioCardContext();
19241
19002
  const getStyles = useStyles({
19242
19003
  name: "RadioIndicator",
@@ -19251,6 +19012,7 @@ var RadioIndicator = withBoxProps((0, vue.defineComponent)({
19251
19012
  varsResolver: varsResolver$18
19252
19013
  });
19253
19014
  return () => {
19015
+ const iconStyles = getStyles("icon");
19254
19016
  const Icon = props.icon || RadioIcon;
19255
19017
  const checked = typeof props.checked === "boolean" ? props.checked : cardContext?.checked || false;
19256
19018
  return (0, vue.h)(Box, {
@@ -19264,7 +19026,7 @@ var RadioIndicator = withBoxProps((0, vue.defineComponent)({
19264
19026
  checked,
19265
19027
  disabled: props.disabled
19266
19028
  }, props.mod]
19267
- }, () => (0, vue.h)(Icon, getStyles("icon")));
19029
+ }, () => slots.icon ? slots.icon(iconStyles) : (0, vue.h)(Icon, iconStyles));
19268
19030
  };
19269
19031
  }
19270
19032
  }));
@@ -19302,18 +19064,14 @@ function callHandler$2(handler, event) {
19302
19064
  var RadioBase = (0, vue.defineComponent)({
19303
19065
  name: "Radio",
19304
19066
  inheritAttrs: false,
19067
+ slots: Object,
19305
19068
  props: {
19306
19069
  id: {
19307
19070
  type: String,
19308
19071
  default: void 0
19309
19072
  },
19310
19073
  label: {
19311
- type: [
19312
- String,
19313
- Number,
19314
- Object,
19315
- Function
19316
- ],
19074
+ type: null,
19317
19075
  default: void 0
19318
19076
  },
19319
19077
  color: {
@@ -19337,22 +19095,11 @@ var RadioBase = (0, vue.defineComponent)({
19337
19095
  default: "right"
19338
19096
  },
19339
19097
  description: {
19340
- type: [
19341
- String,
19342
- Number,
19343
- Object,
19344
- Function
19345
- ],
19098
+ type: null,
19346
19099
  default: void 0
19347
19100
  },
19348
19101
  error: {
19349
- type: [
19350
- String,
19351
- Number,
19352
- Object,
19353
- Function,
19354
- Boolean
19355
- ],
19102
+ type: null,
19356
19103
  default: void 0
19357
19104
  },
19358
19105
  radius: {
@@ -19408,7 +19155,7 @@ var RadioBase = (0, vue.defineComponent)({
19408
19155
  default: false
19409
19156
  }
19410
19157
  },
19411
- setup(props, { attrs }) {
19158
+ setup(props, { attrs, slots }) {
19412
19159
  const uuid = (0, _mantine_vue_hooks.useId)(props.id);
19413
19160
  const groupContext = useRadioGroupContext();
19414
19161
  const getStyles = useStyles({
@@ -19425,11 +19172,15 @@ var RadioBase = (0, vue.defineComponent)({
19425
19172
  });
19426
19173
  return () => {
19427
19174
  const id = uuid.value || props.id || "";
19175
+ const label = resolveNode(props.label, slots.label);
19176
+ const description = resolveNode(props.description, slots.description);
19177
+ const error = resolveNode(props.error, slots.error);
19428
19178
  const describedBy = [
19429
- props.description ? `${id}-description` : void 0,
19430
- props.error && typeof props.error !== "boolean" ? `${id}-error` : void 0,
19179
+ description ? `${id}-description` : void 0,
19180
+ error && typeof error !== "boolean" ? `${id}-error` : void 0,
19431
19181
  attrs["aria-describedby"]
19432
19182
  ].filter(Boolean).join(" ") || void 0;
19183
+ const iconStyles = getStyles("icon");
19433
19184
  const Icon = props.icon || RadioIcon;
19434
19185
  const value = String(attrs.value ?? "");
19435
19186
  const checked = groupContext ? groupContext.value === value : props.checked;
@@ -19447,9 +19198,9 @@ var RadioBase = (0, vue.defineComponent)({
19447
19198
  id,
19448
19199
  size,
19449
19200
  labelPosition: props.labelPosition,
19450
- label: props.label,
19451
- description: props.description,
19452
- error: props.error,
19201
+ label,
19202
+ description,
19203
+ error,
19453
19204
  disabled,
19454
19205
  classNames: props.classNames,
19455
19206
  styles: props.styles,
@@ -19472,7 +19223,7 @@ var RadioBase = (0, vue.defineComponent)({
19472
19223
  type: "radio",
19473
19224
  "aria-describedby": describedBy,
19474
19225
  mod: {
19475
- error: Boolean(props.error),
19226
+ error: Boolean(error),
19476
19227
  withErrorStyles: props.withErrorStyles
19477
19228
  },
19478
19229
  variant: props.variant,
@@ -19480,7 +19231,7 @@ var RadioBase = (0, vue.defineComponent)({
19480
19231
  callHandler$2(attrs.onChange, event);
19481
19232
  groupContext?.onChange(event);
19482
19233
  }
19483
- }), (0, vue.h)(Icon, getStyles("icon"))]));
19234
+ }), slots.icon ? slots.icon(iconStyles) : (0, vue.h)(Icon, iconStyles)]));
19484
19235
  };
19485
19236
  }
19486
19237
  });
@@ -19500,6 +19251,7 @@ function useSwitchGroupContext() {
19500
19251
  var SwitchGroup = (0, vue.defineComponent)({
19501
19252
  name: "SwitchGroup",
19502
19253
  inheritAttrs: false,
19254
+ slots: Object,
19503
19255
  props: {
19504
19256
  value: {
19505
19257
  type: Array,
@@ -19546,31 +19298,15 @@ var SwitchGroup = (0, vue.defineComponent)({
19546
19298
  default: false
19547
19299
  },
19548
19300
  label: {
19549
- type: [
19550
- String,
19551
- Number,
19552
- Object,
19553
- Function
19554
- ],
19301
+ type: null,
19555
19302
  default: void 0
19556
19303
  },
19557
19304
  description: {
19558
- type: [
19559
- String,
19560
- Number,
19561
- Object,
19562
- Function
19563
- ],
19305
+ type: null,
19564
19306
  default: void 0
19565
19307
  },
19566
19308
  error: {
19567
- type: [
19568
- String,
19569
- Number,
19570
- Object,
19571
- Function,
19572
- Boolean
19573
- ],
19309
+ type: null,
19574
19310
  default: void 0
19575
19311
  },
19576
19312
  classNames: {
@@ -19625,9 +19361,9 @@ var SwitchGroup = (0, vue.defineComponent)({
19625
19361
  size: props.size,
19626
19362
  ...props.wrapperProps,
19627
19363
  ...attrs,
19628
- label: props.label,
19629
- description: props.description,
19630
- error: props.error,
19364
+ label: resolveNode(props.label, slots.label),
19365
+ description: resolveNode(props.description, slots.description),
19366
+ error: resolveNode(props.error, slots.error),
19631
19367
  classNames: props.classNames,
19632
19368
  styles: props.styles,
19633
19369
  vars: props.vars,
@@ -19665,9 +19401,6 @@ var varsResolver$16 = createVarsResolver((theme, { radius, color, size }) => ({
19665
19401
  "--switch-track-label-padding": getSize(size, "switch-track-label-padding"),
19666
19402
  "--switch-color": color ? getThemeColor(color, theme) : void 0
19667
19403
  } }));
19668
- function renderContent(content) {
19669
- return typeof content === "function" ? content() : content;
19670
- }
19671
19404
  function callHandler$1(handler, event) {
19672
19405
  if (Array.isArray(handler)) handler.forEach((item) => item?.(event));
19673
19406
  else handler?.(event);
@@ -19675,36 +19408,22 @@ function callHandler$1(handler, event) {
19675
19408
  var SwitchBase = (0, vue.defineComponent)({
19676
19409
  name: "Switch",
19677
19410
  inheritAttrs: false,
19411
+ slots: Object,
19678
19412
  props: {
19679
19413
  id: {
19680
19414
  type: String,
19681
19415
  default: void 0
19682
19416
  },
19683
19417
  label: {
19684
- type: [
19685
- String,
19686
- Number,
19687
- Object,
19688
- Function
19689
- ],
19418
+ type: null,
19690
19419
  default: void 0
19691
19420
  },
19692
19421
  offLabel: {
19693
- type: [
19694
- String,
19695
- Number,
19696
- Object,
19697
- Function
19698
- ],
19422
+ type: null,
19699
19423
  default: void 0
19700
19424
  },
19701
19425
  onLabel: {
19702
- type: [
19703
- String,
19704
- Number,
19705
- Object,
19706
- Function
19707
- ],
19426
+ type: null,
19708
19427
  default: void 0
19709
19428
  },
19710
19429
  color: {
@@ -19724,12 +19443,7 @@ var SwitchBase = (0, vue.defineComponent)({
19724
19443
  default: void 0
19725
19444
  },
19726
19445
  thumbIcon: {
19727
- type: [
19728
- String,
19729
- Number,
19730
- Object,
19731
- Function
19732
- ],
19446
+ type: null,
19733
19447
  default: void 0
19734
19448
  },
19735
19449
  labelPosition: {
@@ -19737,22 +19451,11 @@ var SwitchBase = (0, vue.defineComponent)({
19737
19451
  default: "right"
19738
19452
  },
19739
19453
  description: {
19740
- type: [
19741
- String,
19742
- Number,
19743
- Object,
19744
- Function
19745
- ],
19454
+ type: null,
19746
19455
  default: void 0
19747
19456
  },
19748
19457
  error: {
19749
- type: [
19750
- String,
19751
- Number,
19752
- Object,
19753
- Function,
19754
- Boolean
19755
- ],
19458
+ type: null,
19756
19459
  default: void 0
19757
19460
  },
19758
19461
  rootRef: {
@@ -19804,7 +19507,7 @@ var SwitchBase = (0, vue.defineComponent)({
19804
19507
  default: false
19805
19508
  }
19806
19509
  },
19807
- setup(props, { attrs }) {
19510
+ setup(props, { attrs, slots }) {
19808
19511
  const uuid = (0, _mantine_vue_hooks.useId)(props.id);
19809
19512
  const groupContext = useSwitchGroupContext();
19810
19513
  const internalChecked = (0, vue.ref)(false);
@@ -19830,9 +19533,15 @@ var SwitchBase = (0, vue.defineComponent)({
19830
19533
  });
19831
19534
  return () => {
19832
19535
  const id = uuid.value || props.id || "";
19536
+ const label = resolveNode(props.label, slots.label);
19537
+ const description = resolveNode(props.description, slots.description);
19538
+ const error = resolveNode(props.error, slots.error);
19539
+ const thumbIcon = resolveNode(props.thumbIcon, slots.thumbIcon);
19540
+ const onLabel = resolveNode(props.onLabel, slots.onLabel);
19541
+ const offLabel = resolveNode(props.offLabel, slots.offLabel);
19833
19542
  const describedBy = [
19834
- props.description ? `${id}-description` : void 0,
19835
- props.error && typeof props.error !== "boolean" ? `${id}-error` : void 0,
19543
+ description ? `${id}-description` : void 0,
19544
+ error && typeof error !== "boolean" ? `${id}-error` : void 0,
19836
19545
  attrs["aria-describedby"]
19837
19546
  ].filter(Boolean).join(" ") || void 0;
19838
19547
  const value = String(attrs.value ?? "");
@@ -19850,9 +19559,9 @@ var SwitchBase = (0, vue.defineComponent)({
19850
19559
  id,
19851
19560
  size,
19852
19561
  labelPosition: props.labelPosition,
19853
- label: props.label,
19854
- description: props.description,
19855
- error: props.error,
19562
+ label,
19563
+ description,
19564
+ error,
19856
19565
  disabled,
19857
19566
  bodyElement: "label",
19858
19567
  labelElement: "span",
@@ -19882,16 +19591,16 @@ var SwitchBase = (0, vue.defineComponent)({
19882
19591
  component: "span",
19883
19592
  "aria-hidden": "true",
19884
19593
  mod: {
19885
- error: Boolean(props.error),
19594
+ error: Boolean(error),
19886
19595
  labelPosition: props.labelPosition,
19887
- withoutLabels: !props.onLabel && !props.offLabel
19596
+ withoutLabels: !onLabel && !offLabel
19888
19597
  },
19889
19598
  ...getStyles("track")
19890
19599
  }, () => [(0, vue.h)(Box, {
19891
19600
  component: "span",
19892
- mod: { withThumbIndicator: props.withThumbIndicator && !props.thumbIcon },
19601
+ mod: { withThumbIndicator: props.withThumbIndicator && !thumbIcon },
19893
19602
  ...getStyles("thumb")
19894
- }, () => renderContent(props.thumbIcon)), (0, vue.h)("span", getStyles("trackLabel"), renderContent(currentChecked ? props.onLabel : props.offLabel))])]);
19603
+ }, () => thumbIcon), (0, vue.h)("span", getStyles("trackLabel"), currentChecked ? onLabel : offLabel)])]);
19895
19604
  };
19896
19605
  }
19897
19606
  });
@@ -20144,6 +19853,11 @@ function renderFragment(fragment, step = 0) {
20144
19853
  if (typeof fragment === "function") return fragment({ step });
20145
19854
  return (0, vue.isVNode)(fragment) ? fragment : fragment;
20146
19855
  }
19856
+ /** Resolve a Stepper fragment, honouring prop-over-slot precedence and passing `{ step }`. */
19857
+ function resolveFragment(prop, slot, step) {
19858
+ if (prop !== void 0) return renderFragment(prop, step);
19859
+ return slot ? slot({ step }) : void 0;
19860
+ }
20147
19861
  var defaultProps$6 = {
20148
19862
  withIcon: true,
20149
19863
  allowStepClick: true,
@@ -20152,6 +19866,7 @@ var defaultProps$6 = {
20152
19866
  var StepperStep = withBoxProps((0, vue.defineComponent)({
20153
19867
  name: "StepperStep",
20154
19868
  inheritAttrs: false,
19869
+ slots: Object,
20155
19870
  props: {
20156
19871
  step: {
20157
19872
  type: Number,
@@ -20267,7 +19982,7 @@ var StepperStep = withBoxProps((0, vue.defineComponent)({
20267
19982
  default: void 0
20268
19983
  }
20269
19984
  },
20270
- setup(rawProps, { attrs }) {
19985
+ setup(rawProps, { attrs, slots }) {
20271
19986
  const props = useProps("StepperStep", defaultProps$6, rawProps);
20272
19987
  const ctx = useStepperContext();
20273
19988
  const theme = useMantineTheme();
@@ -20276,17 +19991,24 @@ var StepperStep = withBoxProps((0, vue.defineComponent)({
20276
19991
  "data-progress": props.state === "stepProgress" || void 0,
20277
19992
  "data-completed": props.state === "stepCompleted" || void 0
20278
19993
  };
19994
+ const step = props.step ?? 0;
20279
19995
  const iconPosition = props.iconPosition ?? ctx.iconPosition;
20280
19996
  const stylesApi = {
20281
19997
  classNames: props.classNames,
20282
19998
  styles: props.styles,
20283
19999
  props
20284
20000
  };
20285
- const currentIcon = props.state === "stepProgress" ? props.progressIcon ?? props.icon : props.icon;
20286
- const completed = props.completedIcon ? renderFragment(props.completedIcon, props.step) : (0, vue.h)(CheckIcon, {
20001
+ const iconNode = resolveFragment(props.icon, slots.icon, step);
20002
+ const progressIconNode = props.progressIcon !== void 0 || slots.progressIcon ? resolveFragment(props.progressIcon, slots.progressIcon, step) : void 0;
20003
+ const currentIcon = props.state === "stepProgress" ? progressIconNode ?? iconNode : iconNode;
20004
+ const completed = props.completedIcon !== void 0 || !!slots.completedIcon ? resolveFragment(props.completedIcon, slots.completedIcon, step) : (0, vue.h)(CheckIcon, {
20287
20005
  width: "60%",
20288
20006
  height: "60%"
20289
20007
  });
20008
+ const labelPresent = props.label !== void 0 || !!slots.label;
20009
+ const descriptionPresent = props.description !== void 0 || !!slots.description;
20010
+ const labelNode = resolveFragment(props.label, slots.label, step);
20011
+ const descriptionNode = resolveFragment(props.description, slots.description, step);
20290
20012
  const stepStyles = ctx.getStyles("step", {
20291
20013
  className: [props.className ?? attrs.class, Stepper_module_default[`step--${ctx.orientation}`]],
20292
20014
  style: props.style ?? attrs.style,
@@ -20325,14 +20047,14 @@ var StepperStep = withBoxProps((0, vue.defineComponent)({
20325
20047
  size: "calc(var(--stepper-icon-size) / 2)",
20326
20048
  color: props.color,
20327
20049
  ...ctx.getStyles("stepLoader", stylesApi)
20328
- }) : renderFragment(currentIcon, props.step)) : null]), props.orientation === "vertical" ? (0, vue.h)("span", {
20050
+ }) : currentIcon) : null]), props.orientation === "vertical" ? (0, vue.h)("span", {
20329
20051
  ...ctx.getStyles("verticalSeparator", stylesApi),
20330
20052
  "data-active": props.state === "stepCompleted" || void 0
20331
- }) : null]) : null, props.label !== void 0 || props.description !== void 0 ? (0, vue.h)("span", {
20053
+ }) : null]) : null, labelPresent || descriptionPresent ? (0, vue.h)("span", {
20332
20054
  ...ctx.getStyles("stepBody", stylesApi),
20333
20055
  "data-orientation": ctx.orientation,
20334
20056
  "data-icon-position": iconPosition
20335
- }, [props.label !== void 0 ? (0, vue.h)("span", ctx.getStyles("stepLabel", stylesApi), renderFragment(props.label, props.step)) : null, props.description !== void 0 ? (0, vue.h)("span", ctx.getStyles("stepDescription", stylesApi), renderFragment(props.description, props.step)) : null]) : null]);
20057
+ }, [labelPresent ? (0, vue.h)("span", ctx.getStyles("stepLabel", stylesApi), labelNode) : null, descriptionPresent ? (0, vue.h)("span", ctx.getStyles("stepDescription", stylesApi), descriptionNode) : null]) : null]);
20336
20058
  };
20337
20059
  }
20338
20060
  }));
@@ -20368,6 +20090,7 @@ function flattenChildren$1(children) {
20368
20090
  var StepperBase = (0, vue.defineComponent)({
20369
20091
  name: "Stepper",
20370
20092
  inheritAttrs: false,
20093
+ slots: Object,
20371
20094
  props: {
20372
20095
  active: {
20373
20096
  type: Number,
@@ -20502,13 +20225,13 @@ var StepperBase = (0, vue.defineComponent)({
20502
20225
  const state = props.active === index ? "stepProgress" : props.active > index ? "stepCompleted" : "stepInactive";
20503
20226
  const selectable = typeof props.onStepClick === "function" && (typeof itemProps.allowStepSelect === "boolean" ? itemProps.allowStepSelect : state === "stepCompleted" || props.allowNextStepsSelect);
20504
20227
  items.push((0, vue.cloneVNode)(item, {
20505
- icon: itemProps.icon ?? props.icon ?? index + 1,
20228
+ icon: itemProps.icon ?? props.icon ?? (slots.icon ? (payload) => slots.icon(payload) : index + 1),
20506
20229
  step: index,
20507
20230
  state,
20508
20231
  onClick: () => selectable && props.onStepClick?.(index),
20509
20232
  allowStepClick: selectable,
20510
- completedIcon: itemProps.completedIcon ?? props.completedIcon,
20511
- progressIcon: itemProps.progressIcon ?? props.progressIcon,
20233
+ completedIcon: itemProps.completedIcon ?? props.completedIcon ?? (slots.completedIcon ? (payload) => slots.completedIcon(payload) : void 0),
20234
+ progressIcon: itemProps.progressIcon ?? props.progressIcon ?? (slots.progressIcon ? (payload) => slots.progressIcon(payload) : void 0),
20512
20235
  color: itemProps.color ?? props.color,
20513
20236
  iconSize: props.iconSize,
20514
20237
  iconPosition: itemProps.iconPosition ?? props.iconPosition,
@@ -21480,6 +21203,7 @@ var varsResolver$11 = createVarsResolver((theme, { size, color, thumbSize, radiu
21480
21203
  var Slider = withBoxProps((0, vue.defineComponent)({
21481
21204
  name: "Slider",
21482
21205
  inheritAttrs: false,
21206
+ slots: Object,
21483
21207
  props: {
21484
21208
  color: {
21485
21209
  type: String,
@@ -21628,7 +21352,7 @@ var Slider = withBoxProps((0, vue.defineComponent)({
21628
21352
  default: false
21629
21353
  }
21630
21354
  },
21631
- setup(rawProps, { attrs }) {
21355
+ setup(rawProps, { attrs, slots }) {
21632
21356
  const props = useProps("Slider", defaultProps$1, rawProps);
21633
21357
  const direction = useDirection();
21634
21358
  const hovered = (0, vue.ref)(false);
@@ -21690,7 +21414,7 @@ var Slider = withBoxProps((0, vue.defineComponent)({
21690
21414
  max: domain.value[1]
21691
21415
  });
21692
21416
  const scaled = props.scale(current.value);
21693
- const label = typeof props.label === "function" ? props.label(scaled) : props.label;
21417
+ const label = slots.label ? slots.label({ value: scaled }) : typeof props.label === "function" ? props.label(scaled) : props.label;
21694
21418
  const start = typeof props.startPointValue === "number" && !props.inverted ? getPosition$1({
21695
21419
  value: props.startPointValue,
21696
21420
  min: domain.value[0],
@@ -21734,7 +21458,7 @@ var Slider = withBoxProps((0, vue.defineComponent)({
21734
21458
  disabled: props.disabled,
21735
21459
  orientation: props.orientation,
21736
21460
  onKeydown: keydown
21737
- }, () => props.thumbChildren) }), props.name ? (0, vue.h)("input", {
21461
+ }, () => resolveNode(props.thumbChildren, slots.thumbChildren)) }), props.name ? (0, vue.h)("input", {
21738
21462
  type: "hidden",
21739
21463
  name: props.name,
21740
21464
  value: current.value,
@@ -21773,6 +21497,7 @@ var varsResolver$10 = createVarsResolver((theme, { size, color, thumbSize, radiu
21773
21497
  var RangeSlider = (0, vue.defineComponent)({
21774
21498
  name: "RangeSlider",
21775
21499
  inheritAttrs: false,
21500
+ slots: Object,
21776
21501
  props: {
21777
21502
  value: {
21778
21503
  type: Array,
@@ -21920,7 +21645,7 @@ var RangeSlider = (0, vue.defineComponent)({
21920
21645
  default: false
21921
21646
  }
21922
21647
  },
21923
- setup(rawProps, { attrs }) {
21648
+ setup(rawProps, { attrs, slots }) {
21924
21649
  const props = useProps("RangeSlider", defaults$5, rawProps);
21925
21650
  const direction = useDirection();
21926
21651
  const activeThumb = (0, vue.ref)(0);
@@ -22022,7 +21747,10 @@ var RangeSlider = (0, vue.defineComponent)({
22022
21747
  value: props.scale(current.value[index]),
22023
21748
  position: positions[index],
22024
21749
  dragging: move.active.value && activeThumb.value === index,
22025
- label: typeof props.label === "function" ? props.label(props.scale(current.value[index])) : props.label,
21750
+ label: slots.label ? slots.label({
21751
+ value: props.scale(current.value[index]),
21752
+ index
21753
+ }) : typeof props.label === "function" ? props.label(props.scale(current.value[index])) : props.label,
22026
21754
  labelAlwaysOn: props.labelAlwaysOn,
22027
21755
  thumbLabel: props.thumbLabel?.[index],
22028
21756
  thumbValueText: props.thumbValueText,
@@ -22033,7 +21761,7 @@ var RangeSlider = (0, vue.defineComponent)({
22033
21761
  onMousedown: () => activeThumb.value = index,
22034
21762
  onFocus: () => focused.value = index,
22035
21763
  onKeydown: (event) => keydown(index, event)
22036
- }, () => props.thumbChildren?.[index])) }), props.name ? [(0, vue.h)("input", {
21764
+ }, () => slots.thumbChildren ? slots.thumbChildren({ index }) : props.thumbChildren?.[index])) }), props.name ? [(0, vue.h)("input", {
22037
21765
  type: "hidden",
22038
21766
  name: `${props.name}_from`,
22039
21767
  value: current.value[0],
@@ -23655,7 +23383,7 @@ var MaskInput = (0, vue.defineComponent)({
23655
23383
  default: void 0
23656
23384
  }
23657
23385
  },
23658
- setup(props, { attrs }) {
23386
+ setup(props, { attrs, slots }) {
23659
23387
  const input = (0, vue.ref)(null);
23660
23388
  const processed = (0, vue.ref)("");
23661
23389
  const rawValue = (0, vue.ref)("");
@@ -23858,7 +23586,7 @@ var MaskInput = (0, vue.defineComponent)({
23858
23586
  onBlur: handleBlur,
23859
23587
  onKeydown: handleKeydown,
23860
23588
  onPaste: handlePaste
23861
- });
23589
+ }, slots);
23862
23590
  };
23863
23591
  }
23864
23592
  });
@@ -26108,6 +25836,7 @@ var ModalContent = compound$1("ModalContent", ModalBaseContent, "content", (ctx)
26108
25836
  var ModalBaseComponent = (0, vue.defineComponent)({
26109
25837
  name: "Modal",
26110
25838
  inheritAttrs: false,
25839
+ slots: Object,
26111
25840
  props: {
26112
25841
  opened: {
26113
25842
  type: Boolean,
@@ -26118,11 +25847,7 @@ var ModalBaseComponent = (0, vue.defineComponent)({
26118
25847
  required: true
26119
25848
  },
26120
25849
  title: {
26121
- type: [
26122
- String,
26123
- Object,
26124
- Function
26125
- ],
25850
+ type: null,
26126
25851
  default: void 0
26127
25852
  },
26128
25853
  withOverlay: {
@@ -26138,13 +25863,13 @@ var ModalBaseComponent = (0, vue.defineComponent)({
26138
25863
  },
26139
25864
  setup(props, { attrs, slots }) {
26140
25865
  return () => {
26141
- const title = typeof props.title === "function" ? props.title() : props.title;
26142
- const header = title != null || props.withCloseButton;
25866
+ const title = resolveNode(props.title, slots.title);
25867
+ const header = hasNode(title) || props.withCloseButton;
26143
25868
  return (0, vue.h)(ModalRoot, {
26144
25869
  ...attrs,
26145
25870
  opened: props.opened,
26146
25871
  onClose: props.onClose
26147
- }, { default: () => [props.withOverlay && (0, vue.h)(ModalOverlay, props.overlayProps), (0, vue.h)(ModalContent, null, { default: () => [header && (0, vue.h)(ModalHeader, null, { default: () => [title != null && (0, vue.h)(ModalTitle, null, { default: () => title }), props.withCloseButton && (0, vue.h)(ModalCloseButton, props.closeButtonProps)] }), (0, vue.h)(ModalBody, null, slots)] })] });
25872
+ }, { default: () => [props.withOverlay && (0, vue.h)(ModalOverlay, props.overlayProps), (0, vue.h)(ModalContent, null, { default: () => [header && (0, vue.h)(ModalHeader, null, { default: () => [hasNode(title) && (0, vue.h)(ModalTitle, null, { default: () => title }), props.withCloseButton && (0, vue.h)(ModalCloseButton, props.closeButtonProps)] }), (0, vue.h)(ModalBody, null, { default: () => slots.default?.() })] })] });
26148
25873
  };
26149
25874
  }
26150
25875
  });
@@ -26375,6 +26100,7 @@ var DrawerContent = compound("DrawerContent", ModalBaseContent, "content", (ctx)
26375
26100
  var DrawerBaseComponent = (0, vue.defineComponent)({
26376
26101
  name: "Drawer",
26377
26102
  inheritAttrs: false,
26103
+ slots: Object,
26378
26104
  props: {
26379
26105
  opened: {
26380
26106
  type: Boolean,
@@ -26385,11 +26111,7 @@ var DrawerBaseComponent = (0, vue.defineComponent)({
26385
26111
  required: true
26386
26112
  },
26387
26113
  title: {
26388
- type: [
26389
- String,
26390
- Object,
26391
- Function
26392
- ],
26114
+ type: null,
26393
26115
  default: void 0
26394
26116
  },
26395
26117
  withOverlay: {
@@ -26439,8 +26161,8 @@ var DrawerBaseComponent = (0, vue.defineComponent)({
26439
26161
  return false;
26440
26162
  });
26441
26163
  return () => {
26442
- const title = typeof props.title === "function" ? props.title() : props.title;
26443
- const header = title != null || props.withCloseButton;
26164
+ const title = resolveNode(props.title, slots.title);
26165
+ const header = hasNode(title) || props.withCloseButton;
26444
26166
  return (0, vue.h)(DrawerRoot, {
26445
26167
  ...attrs,
26446
26168
  opened: props.opened,
@@ -26451,7 +26173,7 @@ var DrawerBaseComponent = (0, vue.defineComponent)({
26451
26173
  visible: overlayVisible.value,
26452
26174
  transitionProps: stackCtx && props.stackId ? { duration: 0 } : void 0,
26453
26175
  ...props.overlayProps
26454
- }), (0, vue.h)(DrawerContent, { __hidden: contentHidden.value }, { default: () => [header && (0, vue.h)(DrawerHeader, null, { default: () => [title != null && (0, vue.h)(DrawerTitle, null, { default: () => title }), props.withCloseButton && (0, vue.h)(DrawerCloseButton, props.closeButtonProps)] }), (0, vue.h)(DrawerBody, null, slots)] })] });
26176
+ }), (0, vue.h)(DrawerContent, { __hidden: contentHidden.value }, { default: () => [header && (0, vue.h)(DrawerHeader, null, { default: () => [hasNode(title) && (0, vue.h)(DrawerTitle, null, { default: () => title }), props.withCloseButton && (0, vue.h)(DrawerCloseButton, props.closeButtonProps)] }), (0, vue.h)(DrawerBody, null, { default: () => slots.default?.() })] })] });
26455
26177
  };
26456
26178
  }
26457
26179
  });
@@ -28155,6 +27877,7 @@ var MenuDropdown = (0, vue.defineComponent)({
28155
27877
  var MenuItem = (0, vue.defineComponent)({
28156
27878
  name: "MenuItem",
28157
27879
  inheritAttrs: false,
27880
+ slots: Object,
28158
27881
  props: {
28159
27882
  component: {
28160
27883
  type: [
@@ -28188,6 +27911,8 @@ var MenuItem = (0, vue.defineComponent)({
28188
27911
  const ctx = useMenuContext();
28189
27912
  return () => {
28190
27913
  const indicator = ctx.alignItemsLabels === "all" || props.reserveIndicator;
27914
+ const leftSection = resolveNode(props.leftSection, slots.leftSection);
27915
+ const rightSection = resolveNode(props.rightSection, slots.rightSection);
28191
27916
  return (0, vue.h)(UnstyledButton, {
28192
27917
  ...attrs,
28193
27918
  component: props.component,
@@ -28210,15 +27935,15 @@ var MenuItem = (0, vue.defineComponent)({
28210
27935
  }
28211
27936
  }, () => [
28212
27937
  indicator && (0, vue.h)("span", ctx.getStyles("itemIndicator"), props.indicator),
28213
- props.leftSection != null && (0, vue.h)("span", {
27938
+ hasNode(leftSection) && (0, vue.h)("span", {
28214
27939
  ...ctx.getStyles("itemSection"),
28215
27940
  "data-position": "left"
28216
- }, props.leftSection),
27941
+ }, leftSection),
28217
27942
  (0, vue.h)("span", ctx.getStyles("itemLabel"), slots),
28218
- props.rightSection != null && (0, vue.h)("span", {
27943
+ hasNode(rightSection) && (0, vue.h)("span", {
28219
27944
  ...ctx.getStyles("itemSection"),
28220
27945
  "data-position": "right"
28221
- }, props.rightSection)
27946
+ }, rightSection)
28222
27947
  ]);
28223
27948
  };
28224
27949
  }
@@ -28394,6 +28119,7 @@ var MenuRadioGroup = group$1(RadioGroupKey, false);
28394
28119
  var MenuCheckboxItem = (0, vue.defineComponent)({
28395
28120
  name: "MenuCheckboxItem",
28396
28121
  inheritAttrs: false,
28122
+ slots: Object,
28397
28123
  props: {
28398
28124
  value: String,
28399
28125
  checked: {
@@ -28423,21 +28149,24 @@ var MenuCheckboxItem = (0, vue.defineComponent)({
28423
28149
  else if (props.checked === void 0) local.value = next;
28424
28150
  props.onChange?.(next);
28425
28151
  };
28152
+ const checkIcon = props.checkIcon !== void 0 ? typeof props.checkIcon === "function" ? props.checkIcon() : props.checkIcon : slots.checkIcon ? slots.checkIcon({ checked: !!checked }) : menu.checkIcon ?? "✓";
28153
+ const { checkIcon: _checkIconSlot, ...forwardedSlots } = slots;
28426
28154
  return (0, vue.h)(MenuItem, {
28427
28155
  ...attrs,
28428
28156
  role: "menuitemcheckbox",
28429
28157
  "aria-checked": checked,
28430
28158
  reserveIndicator: menu.alignItemsLabels !== "none" || checked,
28431
- indicator: checked ? props.checkIcon ?? menu.checkIcon ?? "✓" : void 0,
28159
+ indicator: checked ? checkIcon : void 0,
28432
28160
  closeMenuOnClick: props.closeMenuOnClick,
28433
28161
  onClick: toggle
28434
- }, slots);
28162
+ }, forwardedSlots);
28435
28163
  };
28436
28164
  }
28437
28165
  });
28438
28166
  var MenuRadioItem = (0, vue.defineComponent)({
28439
28167
  name: "MenuRadioItem",
28440
28168
  inheritAttrs: false,
28169
+ slots: Object,
28441
28170
  props: {
28442
28171
  value: {
28443
28172
  type: String,
@@ -28448,6 +28177,10 @@ var MenuRadioItem = (0, vue.defineComponent)({
28448
28177
  default: void 0
28449
28178
  },
28450
28179
  onChange: Function,
28180
+ checkIcon: {
28181
+ type: null,
28182
+ default: void 0
28183
+ },
28451
28184
  closeMenuOnClick: {
28452
28185
  type: Boolean,
28453
28186
  default: false
@@ -28462,15 +28195,17 @@ var MenuRadioItem = (0, vue.defineComponent)({
28462
28195
  group?.setValue(props.value);
28463
28196
  props.onChange?.(props.value);
28464
28197
  };
28198
+ const checkIcon = props.checkIcon !== void 0 ? typeof props.checkIcon === "function" ? props.checkIcon() : props.checkIcon : slots.checkIcon ? slots.checkIcon({ checked: !!checked }) : menu.checkIcon ?? "✓";
28199
+ const { checkIcon: _checkIconSlot, ...forwardedSlots } = slots;
28465
28200
  return (0, vue.h)(MenuItem, {
28466
28201
  ...attrs,
28467
28202
  role: "menuitemradio",
28468
28203
  "aria-checked": checked,
28469
28204
  reserveIndicator: menu.alignItemsLabels !== "none" || checked,
28470
- indicator: checked ? menu.checkIcon ?? "✓" : void 0,
28205
+ indicator: checked ? checkIcon : void 0,
28471
28206
  closeMenuOnClick: props.closeMenuOnClick,
28472
28207
  onClick: select
28473
- }, slots);
28208
+ }, forwardedSlots);
28474
28209
  };
28475
28210
  }
28476
28211
  });
@@ -29411,6 +29146,7 @@ function renderItem(item, props) {
29411
29146
  var OptionsDropdown = (0, vue.defineComponent)({
29412
29147
  name: "OptionsDropdown",
29413
29148
  inheritAttrs: false,
29149
+ slots: Object,
29414
29150
  props: {
29415
29151
  data: {
29416
29152
  type: Array,
@@ -29456,17 +29192,22 @@ var OptionsDropdown = (0, vue.defineComponent)({
29456
29192
  renderOption: Function,
29457
29193
  scrollAreaProps: Object
29458
29194
  },
29459
- setup(props) {
29195
+ setup(props, { slots }) {
29460
29196
  const ctx = useComboboxContext();
29461
29197
  return () => {
29462
29198
  validateOptions(props.data);
29199
+ const renderOption = props.renderOption ?? (slots.renderOption ? (input) => slots.renderOption(input) : void 0);
29200
+ const nothingFound = props.nothingFoundMessage ?? (slots.nothingFound ? slots.nothingFound() : void 0);
29463
29201
  const data = typeof props.search === "string" ? (props.filter || defaultOptionsFilter)({
29464
29202
  options: props.data,
29465
29203
  search: props.filterOptions ? props.search : "",
29466
29204
  limit: props.limit ?? Infinity
29467
29205
  }) : props.data;
29468
29206
  const empty = isEmptyComboboxData(data);
29469
- const options = data.map((item) => renderItem(item, props));
29207
+ const options = data.map((item) => renderItem(item, {
29208
+ ...props,
29209
+ renderOption
29210
+ }));
29470
29211
  const content = props.withScrollArea ? (0, vue.h)(ScrollAreaAutosize, {
29471
29212
  mah: (props.floatingHeight ?? ctx.floatingHeight) === "viewport" ? "var(--combobox-floating-options-max-height)" : props.maxDropdownHeight ?? 220,
29472
29213
  type: "scroll",
@@ -29480,7 +29221,7 @@ var OptionsDropdown = (0, vue.defineComponent)({
29480
29221
  }, () => (0, vue.h)(Combobox.Options, {
29481
29222
  labelledBy: props.labelId,
29482
29223
  "aria-label": props.ariaLabel
29483
- }, () => [content, empty && props.nothingFoundMessage != null && (0, vue.h)(Combobox.Empty, null, () => props.nothingFoundMessage)]));
29224
+ }, () => [content, empty && nothingFound != null && (0, vue.h)(Combobox.Empty, null, () => nothingFound)]));
29484
29225
  };
29485
29226
  }
29486
29227
  });
@@ -29548,6 +29289,7 @@ function usePillsReorder(input) {
29548
29289
  var Select = (0, vue.defineComponent)({
29549
29290
  name: "Select",
29550
29291
  inheritAttrs: false,
29292
+ slots: Object,
29551
29293
  props: {
29552
29294
  modelValue: {
29553
29295
  type: null,
@@ -29628,7 +29370,7 @@ var Select = (0, vue.defineComponent)({
29628
29370
  }
29629
29371
  },
29630
29372
  emits: ["update:modelValue", "update:searchValue"],
29631
- setup(props, { attrs, emit }) {
29373
+ setup(props, { attrs, emit, slots }) {
29632
29374
  const parsed = (0, vue.computed)(() => getParsedComboboxData(props.data));
29633
29375
  const lockup = (0, vue.computed)(() => getOptionsLockup(parsed.value));
29634
29376
  const retained = {};
@@ -29749,13 +29491,13 @@ var Select = (0, vue.defineComponent)({
29749
29491
  else combobox.toggleDropdown();
29750
29492
  attrs.onClick?.(event);
29751
29493
  }
29752
- })), (0, vue.h)(OptionsDropdown, {
29494
+ }, slots)), (0, vue.h)(OptionsDropdown, {
29753
29495
  data: parsed.value,
29754
29496
  hidden: readOnly || disabled,
29755
29497
  filter: props.filter,
29756
29498
  search: search(),
29757
29499
  limit: props.limit,
29758
- hiddenWhenEmpty: !props.nothingFoundMessage,
29500
+ hiddenWhenEmpty: !props.nothingFoundMessage && !slots.nothingFound,
29759
29501
  withScrollArea: props.withScrollArea,
29760
29502
  maxDropdownHeight: props.maxDropdownHeight,
29761
29503
  filterOptions: !!props.searchable && selected.value?.label !== search(),
@@ -29767,6 +29509,9 @@ var Select = (0, vue.defineComponent)({
29767
29509
  labelId: attrs.label ? `${id.value}-label` : void 0,
29768
29510
  renderOption: props.renderOption,
29769
29511
  scrollAreaProps: props.scrollAreaProps
29512
+ }, {
29513
+ renderOption: slots.renderOption,
29514
+ nothingFound: slots.nothingFound
29770
29515
  })]), (0, vue.h)(Combobox.HiddenInput, {
29771
29516
  value: current(),
29772
29517
  name: attrs.name,
@@ -29786,6 +29531,7 @@ Object.assign(Select, { classes: {
29786
29531
  var Autocomplete = (0, vue.defineComponent)({
29787
29532
  name: "Autocomplete",
29788
29533
  inheritAttrs: false,
29534
+ slots: Object,
29789
29535
  props: {
29790
29536
  modelValue: {
29791
29537
  type: String,
@@ -29833,7 +29579,7 @@ var Autocomplete = (0, vue.defineComponent)({
29833
29579
  }
29834
29580
  },
29835
29581
  emits: { "update:modelValue": (value) => typeof value === "string" },
29836
- setup(props, { attrs, emit }) {
29582
+ setup(props, { attrs, emit, slots }) {
29837
29583
  const internal = (0, vue.ref)(props.defaultValue);
29838
29584
  const current = () => props.modelValue ?? props.value ?? internal.value;
29839
29585
  const controlled = () => props.modelValue !== void 0 || props.value !== void 0;
@@ -29920,18 +29666,21 @@ var Autocomplete = (0, vue.defineComponent)({
29920
29666
  combobox.openDropdown();
29921
29667
  attrs.onClick?.(event);
29922
29668
  }
29923
- })), (0, vue.h)(OptionsDropdown, {
29669
+ }, slots)), (0, vue.h)(OptionsDropdown, {
29924
29670
  data: parsed.value,
29925
29671
  hidden: readOnly || disabled,
29926
29672
  filter: props.filter,
29927
29673
  search: current(),
29928
29674
  limit: props.limit,
29929
- hiddenWhenEmpty: true,
29675
+ hiddenWhenEmpty: !slots.nothingFound,
29930
29676
  withScrollArea: props.withScrollArea,
29931
29677
  maxDropdownHeight: props.maxDropdownHeight,
29932
29678
  labelId: attrs.label ? `${id.value}-label` : void 0,
29933
29679
  renderOption: props.renderOption,
29934
29680
  scrollAreaProps: props.scrollAreaProps
29681
+ }, {
29682
+ renderOption: slots.renderOption,
29683
+ nothingFound: slots.nothingFound
29935
29684
  })]);
29936
29685
  };
29937
29686
  }
@@ -29951,6 +29700,7 @@ function filterPicked(data, values) {
29951
29700
  var MultiSelect = (0, vue.defineComponent)({
29952
29701
  name: "MultiSelect",
29953
29702
  inheritAttrs: false,
29703
+ slots: Object,
29954
29704
  props: {
29955
29705
  modelValue: Array,
29956
29706
  value: Array,
@@ -30024,7 +29774,7 @@ var MultiSelect = (0, vue.defineComponent)({
30024
29774
  selectFirstOptionOnDropdownOpen: Boolean
30025
29775
  },
30026
29776
  emits: ["update:modelValue", "update:searchValue"],
30027
- setup(props, { attrs, emit }) {
29777
+ setup(props, { attrs, emit, slots }) {
30028
29778
  const parsed = (0, vue.computed)(() => getParsedComboboxData(props.data));
30029
29779
  const lockup = (0, vue.computed)(() => getOptionsLockup(parsed.value));
30030
29780
  const retained = {};
@@ -30111,56 +29861,63 @@ var MultiSelect = (0, vue.defineComponent)({
30111
29861
  rightSection,
30112
29862
  rightSectionPointerEvents: canClear ? "all" : "none",
30113
29863
  onClick: () => props.searchable ? combobox.openDropdown() : combobox.toggleDropdown()
30114
- }, () => (0, vue.h)(Pill.Group, null, () => [...values.map((item, index) => {
30115
- const option = lockup.value[String(item)] ?? retained[String(item)] ?? {
30116
- value: item,
30117
- label: String(item)
30118
- };
30119
- const onRemove = () => remove(item);
30120
- return props.renderPill ? props.renderPill({
30121
- option,
30122
- value: item,
30123
- onRemove,
30124
- disabled
30125
- }) : (0, vue.h)(Pill, {
30126
- key: `${String(item)}-${index}`,
30127
- withRemoveButton: !readOnly && !option.disabled,
29864
+ }, {
29865
+ label: slots.label,
29866
+ description: slots.description,
29867
+ error: slots.error,
29868
+ leftSection: slots.leftSection,
29869
+ rightSection: slots.rightSection,
29870
+ default: () => (0, vue.h)(Pill.Group, null, () => [...values.map((item, index) => {
29871
+ const option = lockup.value[String(item)] ?? retained[String(item)] ?? {
29872
+ value: item,
29873
+ label: String(item)
29874
+ };
29875
+ const onRemove = () => remove(item);
29876
+ return props.renderPill ? props.renderPill({
29877
+ option,
29878
+ value: item,
29879
+ onRemove,
29880
+ disabled
29881
+ }) : (0, vue.h)(Pill, {
29882
+ key: `${String(item)}-${index}`,
29883
+ withRemoveButton: !readOnly && !option.disabled,
29884
+ disabled,
29885
+ onRemove
29886
+ }, () => option.label);
29887
+ }), (0, vue.h)(Combobox.EventsTarget, { withExpandedAttribute: true }, () => (0, vue.h)(PillsInput.Field, {
29888
+ value: search(),
29889
+ readonly: !props.searchable || readOnly,
30128
29890
  disabled,
30129
- onRemove
30130
- }, () => option.label);
30131
- }), (0, vue.h)(Combobox.EventsTarget, { withExpandedAttribute: true }, () => (0, vue.h)(PillsInput.Field, {
30132
- value: search(),
30133
- readonly: !props.searchable || readOnly,
30134
- disabled,
30135
- placeholder: values.length === 0 ? attrs.placeholder : void 0,
30136
- onInput: (event) => {
30137
- setSearch(event.target.value);
30138
- combobox.openDropdown();
30139
- },
30140
- onFocus: (event) => {
30141
- if (props.openOnFocus && props.searchable) combobox.openDropdown();
30142
- attrs.onFocus?.(event);
30143
- },
30144
- onBlur: (event) => {
30145
- combobox.closeDropdown();
30146
- attrs.onBlur?.(event);
30147
- },
30148
- onKeydown: (event) => {
30149
- if (event.key === " " && !props.searchable) {
30150
- event.preventDefault();
30151
- combobox.toggleDropdown();
29891
+ placeholder: values.length === 0 ? attrs.placeholder : void 0,
29892
+ onInput: (event) => {
29893
+ setSearch(event.target.value);
29894
+ combobox.openDropdown();
29895
+ },
29896
+ onFocus: (event) => {
29897
+ if (props.openOnFocus && props.searchable) combobox.openDropdown();
29898
+ attrs.onFocus?.(event);
29899
+ },
29900
+ onBlur: (event) => {
29901
+ combobox.closeDropdown();
29902
+ attrs.onBlur?.(event);
29903
+ },
29904
+ onKeydown: (event) => {
29905
+ if (event.key === " " && !props.searchable) {
29906
+ event.preventDefault();
29907
+ combobox.toggleDropdown();
29908
+ }
29909
+ if (event.key === "Backspace" && !search() && values.length && !readOnly) remove(values[values.length - 1]);
29910
+ attrs.onKeydown?.(event);
30152
29911
  }
30153
- if (event.key === "Backspace" && !search() && values.length && !readOnly) remove(values[values.length - 1]);
30154
- attrs.onKeydown?.(event);
30155
- }
30156
- }))]))), (0, vue.h)(OptionsDropdown, {
29912
+ }))])
29913
+ })), (0, vue.h)(OptionsDropdown, {
30157
29914
  data: options,
30158
29915
  hidden: disabled || readOnly,
30159
29916
  search: search(),
30160
29917
  filter: props.filter,
30161
29918
  limit: props.limit,
30162
29919
  filterOptions: props.searchable,
30163
- hiddenWhenEmpty: props.nothingFoundMessage == null,
29920
+ hiddenWhenEmpty: props.nothingFoundMessage == null && !slots.nothingFound,
30164
29921
  nothingFoundMessage: props.nothingFoundMessage,
30165
29922
  value: values,
30166
29923
  withCheckIcon: props.withCheckIcon,
@@ -30170,6 +29927,9 @@ var MultiSelect = (0, vue.defineComponent)({
30170
29927
  maxDropdownHeight: props.maxDropdownHeight,
30171
29928
  renderOption: props.renderOption,
30172
29929
  scrollAreaProps: props.scrollAreaProps
29930
+ }, {
29931
+ renderOption: slots.renderOption,
29932
+ nothingFound: slots.nothingFound
30173
29933
  })]), (0, vue.h)(Combobox.HiddenInput, {
30174
29934
  value: values,
30175
29935
  valuesDivider: props.hiddenInputValuesDivider,
@@ -30202,6 +29962,7 @@ function getSplittedTags({ value, splitChars = [","], currentTags = [], allowDup
30202
29962
  var TagsInput = (0, vue.defineComponent)({
30203
29963
  name: "TagsInput",
30204
29964
  inheritAttrs: false,
29965
+ slots: Object,
30205
29966
  props: {
30206
29967
  modelValue: Array,
30207
29968
  value: Array,
@@ -30271,7 +30032,7 @@ var TagsInput = (0, vue.defineComponent)({
30271
30032
  selectFirstOptionOnDropdownOpen: Boolean
30272
30033
  },
30273
30034
  emits: ["update:modelValue", "update:searchValue"],
30274
- setup(props, { attrs, emit }) {
30035
+ setup(props, { attrs, emit, slots }) {
30275
30036
  const parsed = (0, vue.computed)(() => getParsedComboboxData(props.data));
30276
30037
  const lockup = (0, vue.computed)(() => getOptionsLockup(parsed.value));
30277
30038
  const internal = (0, vue.ref)([...props.defaultValue]);
@@ -30379,74 +30140,84 @@ var TagsInput = (0, vue.defineComponent)({
30379
30140
  disabled,
30380
30141
  rightSection,
30381
30142
  rightSectionPointerEvents: canClear ? "all" : void 0
30382
- }, () => (0, vue.h)(Pill.Group, null, () => [...current.map((item, index) => {
30383
- const onRemove = () => removeAt(index);
30384
- const option = lockup.value[item] ?? {
30385
- value: item,
30386
- label: item,
30387
- disabled: false
30388
- };
30389
- return props.renderPill ? props.renderPill({
30390
- option,
30391
- value: item,
30392
- onRemove,
30393
- disabled
30394
- }) : (0, vue.h)(Pill, {
30395
- key: `${item}-${index}`,
30396
- withRemoveButton: !readOnly,
30143
+ }, {
30144
+ label: slots.label,
30145
+ description: slots.description,
30146
+ error: slots.error,
30147
+ leftSection: slots.leftSection,
30148
+ rightSection: slots.rightSection,
30149
+ default: () => (0, vue.h)(Pill.Group, null, () => [...current.map((item, index) => {
30150
+ const onRemove = () => removeAt(index);
30151
+ const option = lockup.value[item] ?? {
30152
+ value: item,
30153
+ label: item,
30154
+ disabled: false
30155
+ };
30156
+ return props.renderPill ? props.renderPill({
30157
+ option,
30158
+ value: item,
30159
+ onRemove,
30160
+ disabled
30161
+ }) : (0, vue.h)(Pill, {
30162
+ key: `${item}-${index}`,
30163
+ withRemoveButton: !readOnly,
30164
+ disabled,
30165
+ onRemove
30166
+ }, () => item);
30167
+ }), (0, vue.h)(PillsInput.Field, {
30168
+ value: search(),
30169
+ readonly: readOnly,
30397
30170
  disabled,
30398
- onRemove
30399
- }, () => item);
30400
- }), (0, vue.h)(PillsInput.Field, {
30401
- value: search(),
30402
- readonly: readOnly,
30403
- disabled,
30404
- placeholder: current.length === 0 ? attrs.placeholder : void 0,
30405
- onInput: (event) => {
30406
- const input = event.target.value;
30407
- if (props.splitChars.some((char) => input.includes(char))) split(input);
30408
- else setSearch(input);
30409
- combobox.openDropdown();
30410
- },
30411
- onPaste: (event) => {
30412
- if (!event.clipboardData) return;
30413
- event.preventDefault();
30414
- split(`${search()}${event.clipboardData.getData("text/plain")}`);
30415
- attrs.onPaste?.(event);
30416
- },
30417
- onFocus: (event) => {
30418
- if (props.openOnFocus) combobox.openDropdown();
30419
- attrs.onFocus?.(event);
30420
- },
30421
- onBlur: (event) => {
30422
- if (props.acceptValueOnBlur) submit(search());
30423
- combobox.closeDropdown();
30424
- attrs.onBlur?.(event);
30425
- },
30426
- onClick: () => combobox.openDropdown(),
30427
- onKeydown: (event) => {
30428
- if (event.isComposing) return;
30429
- if (event.key === "Enter" && search().trim()) {
30430
- event.preventDefault();
30431
- submit(search());
30432
- } else if (props.splitChars.includes(event.key) && search().trim()) {
30171
+ placeholder: current.length === 0 ? attrs.placeholder : void 0,
30172
+ onInput: (event) => {
30173
+ const input = event.target.value;
30174
+ if (props.splitChars.some((char) => input.includes(char))) split(input);
30175
+ else setSearch(input);
30176
+ combobox.openDropdown();
30177
+ },
30178
+ onPaste: (event) => {
30179
+ if (!event.clipboardData) return;
30433
30180
  event.preventDefault();
30434
- split(search());
30435
- } else if (event.key === "Backspace" && !search() && current.length && !readOnly) removeAt(current.length - 1);
30436
- attrs.onKeydown?.(event);
30437
- }
30438
- })]))), (0, vue.h)(OptionsDropdown, {
30181
+ split(`${search()}${event.clipboardData.getData("text/plain")}`);
30182
+ attrs.onPaste?.(event);
30183
+ },
30184
+ onFocus: (event) => {
30185
+ if (props.openOnFocus) combobox.openDropdown();
30186
+ attrs.onFocus?.(event);
30187
+ },
30188
+ onBlur: (event) => {
30189
+ if (props.acceptValueOnBlur) submit(search());
30190
+ combobox.closeDropdown();
30191
+ attrs.onBlur?.(event);
30192
+ },
30193
+ onClick: () => combobox.openDropdown(),
30194
+ onKeydown: (event) => {
30195
+ if (event.isComposing) return;
30196
+ if (event.key === "Enter" && search().trim()) {
30197
+ event.preventDefault();
30198
+ submit(search());
30199
+ } else if (props.splitChars.includes(event.key) && search().trim()) {
30200
+ event.preventDefault();
30201
+ split(search());
30202
+ } else if (event.key === "Backspace" && !search() && current.length && !readOnly) removeAt(current.length - 1);
30203
+ attrs.onKeydown?.(event);
30204
+ }
30205
+ })])
30206
+ })), (0, vue.h)(OptionsDropdown, {
30439
30207
  data: parsed.value,
30440
30208
  hidden: disabled || readOnly,
30441
30209
  search: search(),
30442
30210
  filter: props.filter,
30443
30211
  limit: props.limit,
30444
- hiddenWhenEmpty: props.nothingFoundMessage == null,
30212
+ hiddenWhenEmpty: props.nothingFoundMessage == null && !slots.nothingFound,
30445
30213
  nothingFoundMessage: props.nothingFoundMessage,
30446
30214
  withScrollArea: props.withScrollArea,
30447
30215
  maxDropdownHeight: props.maxDropdownHeight,
30448
30216
  renderOption: props.renderOption,
30449
30217
  scrollAreaProps: props.scrollAreaProps
30218
+ }, {
30219
+ renderOption: slots.renderOption,
30220
+ nothingFound: slots.nothingFound
30450
30221
  })]), (0, vue.h)(Combobox.HiddenInput, {
30451
30222
  value: current,
30452
30223
  valuesDivider: props.hiddenInputValuesDivider,
@@ -30552,7 +30323,7 @@ var ColorInput = (0, vue.defineComponent)({
30552
30323
  }
30553
30324
  },
30554
30325
  emits: ["update:modelValue"],
30555
- setup(props, { attrs, emit }) {
30326
+ setup(props, { attrs, emit, slots }) {
30556
30327
  const internal = (0, vue.ref)(props.defaultValue);
30557
30328
  const current = () => props.modelValue ?? props.value ?? internal.value;
30558
30329
  const controlled = () => props.modelValue !== void 0 || props.value !== void 0;
@@ -30622,8 +30393,8 @@ var ColorInput = (0, vue.defineComponent)({
30622
30393
  readonly: props.disallowInput || readOnly,
30623
30394
  pointer: props.disallowInput,
30624
30395
  value,
30625
- leftSection: attrs.leftSection ?? preview,
30626
- rightSection: attrs.rightSection ?? eye,
30396
+ leftSection: attrs.leftSection !== void 0 || slots.leftSection ? attrs.leftSection : preview,
30397
+ rightSection: attrs.rightSection !== void 0 || slots.rightSection ? attrs.rightSection : eye,
30627
30398
  onInput: (event) => setValue(event.target.value, true),
30628
30399
  onFocus: (event) => {
30629
30400
  opened.value = true;
@@ -30638,7 +30409,7 @@ var ColorInput = (0, vue.defineComponent)({
30638
30409
  opened.value = false;
30639
30410
  attrs.onBlur?.(event);
30640
30411
  }
30641
- })), (0, vue.h)(Popover.Dropdown, {
30412
+ }, slots)), (0, vue.h)(Popover.Dropdown, {
30642
30413
  class: ColorInput_module_default.dropdown,
30643
30414
  onMousedown: (event) => event.preventDefault()
30644
30415
  }, () => (0, vue.h)(ColorPicker, {
@@ -30874,6 +30645,7 @@ var TreeSelectOption = (0, vue.defineComponent)({
30874
30645
  var TreeSelect = (0, vue.defineComponent)({
30875
30646
  name: "TreeSelect",
30876
30647
  inheritAttrs: false,
30648
+ slots: Object,
30877
30649
  props: {
30878
30650
  data: {
30879
30651
  type: Array,
@@ -30969,7 +30741,7 @@ var TreeSelect = (0, vue.defineComponent)({
30969
30741
  chevronAriaLabels: Object
30970
30742
  },
30971
30743
  emits: ["update:modelValue", "update:searchValue"],
30972
- setup(props, { attrs, emit }) {
30744
+ setup(props, { attrs, emit, slots }) {
30973
30745
  const isMulti = () => props.mode !== "single";
30974
30746
  const internal = (0, vue.ref)(props.defaultValue !== void 0 ? props.defaultValue : isMulti() ? [] : null);
30975
30747
  const current = () => props.modelValue ?? props.value ?? internal.value;
@@ -31071,6 +30843,8 @@ var TreeSelect = (0, vue.defineComponent)({
31071
30843
  const multiValues = selectedArray();
31072
30844
  const hasValue = isMulti() ? multiValues.length > 0 : current() != null;
31073
30845
  const canClear = props.clearable && hasValue && !disabled && !readOnly;
30846
+ const nothingFound = props.nothingFoundMessage ?? (slots.nothingFound ? slots.nothingFound() : void 0);
30847
+ const renderNode = props.renderNode ?? (slots.renderNode ? (payload) => slots.renderNode(payload) : void 0);
31074
30848
  const clear = (event) => {
31075
30849
  event.stopPropagation();
31076
30850
  setValue(isMulti() ? [] : null);
@@ -31080,7 +30854,7 @@ var TreeSelect = (0, vue.defineComponent)({
31080
30854
  const rightSection = canClear ? (0, vue.h)(Combobox.ClearButton, {
31081
30855
  ...attrs.clearButtonProps,
31082
30856
  onClick: clear
31083
- }) : attrs.rightSection ?? (0, vue.h)(Combobox.Chevron, {
30857
+ }) : attrs.rightSection !== void 0 || slots.rightSection ? attrs.rightSection : (0, vue.h)(Combobox.Chevron, {
31084
30858
  size: attrs.size ?? "sm",
31085
30859
  error: attrs.error
31086
30860
  });
@@ -31148,7 +30922,7 @@ var TreeSelect = (0, vue.defineComponent)({
31148
30922
  combobox.closeDropdown();
31149
30923
  setSearch(current() ? String(nodes.value[current()]?.label ?? "") : "");
31150
30924
  }
31151
- });
30925
+ }, slots);
31152
30926
  const treeOptions = flat.value.map((flatNode) => {
31153
30927
  const { node, level, hasChildren, expanded: nodeExpanded, isLastChild, lineGuides } = flatNode;
31154
30928
  const vals = selectedArray();
@@ -31170,7 +30944,7 @@ var TreeSelect = (0, vue.defineComponent)({
31170
30944
  lineGuides,
31171
30945
  withLines: props.withLines,
31172
30946
  onToggleExpand: toggleExpand,
31173
- renderNode: props.renderNode,
30947
+ renderNode,
31174
30948
  chevronAriaLabels: props.chevronAriaLabels
31175
30949
  });
31176
30950
  });
@@ -31181,7 +30955,7 @@ var TreeSelect = (0, vue.defineComponent)({
31181
30955
  maxHeight: typeof props.maxDropdownHeight === "number" ? `${props.maxDropdownHeight}px` : props.maxDropdownHeight,
31182
30956
  overflowY: "auto"
31183
30957
  }, props.scrollAreaProps?.style]
31184
- }, treeOptions) : props.nothingFoundMessage != null ? (0, vue.h)(Combobox.Empty, null, () => props.nothingFoundMessage) : null;
30958
+ }, treeOptions) : nothingFound != null ? (0, vue.h)(Combobox.Empty, null, () => nothingFound) : null;
31185
30959
  return [(0, vue.h)(Combobox, {
31186
30960
  store: combobox,
31187
30961
  readOnly,
@@ -31539,6 +31313,7 @@ exports.getSplittedTags = getSplittedTags;
31539
31313
  exports.getThemeColor = getThemeColor;
31540
31314
  exports.getTitleSize = getTitleSize;
31541
31315
  exports.getTreeExpandedState = getTreeExpandedState;
31316
+ exports.hasNode = hasNode;
31542
31317
  exports.hashStyleProps = hashStyleProps;
31543
31318
  exports.highlighter = highlighter;
31544
31319
  exports.hsvaToHex = hsvaToHex;
@@ -31581,6 +31356,7 @@ exports.px = px;
31581
31356
  exports.rem = rem;
31582
31357
  exports.renderPolymorphic = renderPolymorphic;
31583
31358
  exports.resolveColorScheme = resolveColorScheme;
31359
+ exports.resolveNode = resolveNode;
31584
31360
  exports.rgba = rgba;
31585
31361
  exports.round = round;
31586
31362
  exports.toRgba = toRgba;