VThemeProvider.mjs 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. import { createVNode as _createVNode } from "vue";
  2. // Styles
  3. import "./VThemeProvider.css";
  4. // Composables
  5. import { makeComponentProps } from "../../composables/component.mjs";
  6. import { makeTagProps } from "../../composables/tag.mjs";
  7. import { makeThemeProps, provideTheme } from "../../composables/theme.mjs"; // Utilities
  8. import { genericComponent, propsFactory } from "../../util/index.mjs";
  9. export const makeVThemeProviderProps = propsFactory({
  10. withBackground: Boolean,
  11. ...makeComponentProps(),
  12. ...makeThemeProps(),
  13. ...makeTagProps()
  14. }, 'VThemeProvider');
  15. export const VThemeProvider = genericComponent()({
  16. name: 'VThemeProvider',
  17. props: makeVThemeProviderProps(),
  18. setup(props, _ref) {
  19. let {
  20. slots
  21. } = _ref;
  22. const {
  23. themeClasses
  24. } = provideTheme(props);
  25. return () => {
  26. if (!props.withBackground) return slots.default?.();
  27. return _createVNode(props.tag, {
  28. "class": ['v-theme-provider', themeClasses.value, props.class],
  29. "style": props.style
  30. }, {
  31. default: () => [slots.default?.()]
  32. });
  33. };
  34. }
  35. });
  36. //# sourceMappingURL=VThemeProvider.mjs.map