import { createVNode } from "vue";
import "./styles/app.scss";
import { makeThemeProps, provideTheme } from "../../composables/theme/index.mjs";
import { useProviders } from "../../composables/providers/index.mjs";
import { makeLayoutProps, provideLayout } from "../../composables/layout/layout.mjs";
import { defineComponent } from "../../utils/define-component.mjs";
import { useRender } from "../../utils/dist/index.mjs";
const App = defineComponent({
  name: "VeApp",
  props: {
    ...makeThemeProps(),
    ...makeLayoutProps({
      fullHeight: true
    })
  },
  setup(props, {
    slots
  }) {
    const theme = provideTheme(props);
    const {
      getLayoutItem,
      items,
      layoutClasses
    } = provideLayout(props);
    const {
      createRootProvider
    } = useProviders();
    useRender(() => {
      const RootProvider = createRootProvider();
      return createVNode("div", {
        "class": ["ve-app", theme.themeClasses.value, layoutClasses.value],
        "data-app": "true"
      }, [createVNode("div", {
        "class": "ve-app__wrapper"
      }, [createVNode(RootProvider, null, {
        default: () => {
          var _a;
          return [(_a = slots.default) == null ? void 0 : _a.call(slots)];
        }
      })])]);
    });
    return {
      theme,
      getLayoutItem,
      items
    };
  }
});
export {
  App
};
//# sourceMappingURL=app.mjs.map
