This is a starter template for Framework7 created via Vite Cli.
The project structure diverges somewhat from the conventional Framework7 CLI setup, aligning itself with the standard Vue 3 structure. It's using pages from the Framework7 Tabbed layout, which acts as the default view for this starter template. Upon building, the compiled files can be found in the main dist
directory. Furthermore, the index.html
file resides in the root directory of the project.
π Check out the live demo. It looks even better in the mobile view of your browser.
-
π± Framework7 to develop mobile, desktop apps with native look & feel.
-
π Capacitor - A cross-platform native runtime for web apps
-
π¨ UnoCSS - the instant on-demand atomic CSS engine
-
π I18n ready
-
π₯ Use the new
<script setup>
syntax -
πͺ TypeScript
UnoCSS presets are managed through the uno.config.ts
file. The default setup employs the Wind Preset, which closely resembles Tailwind and Windi CSS. Additionally, the default configuration includes presets for Material Icons, Tabler Icons, and Carbon Icons for handling icons. This configuration serves as the initial setup, but you can expand its capabilities by incorporating additional presets.
You can use it like this for example.
<f7-block strong class="bg-blue-500 text-white mt-3">
<h2 class="text-xl font-bold mb-3">UnoCSS Classes & Icons</h2>
<p>This is an example of tabs-layout application.</p>
</f7-block>
<!-- Usage with UnoCSS Attributify preset & custom font via WebFonts preset -->
<h2 text="xl blue-500" font="bold lobster">Lobster Font Heading</h2>
<!-- An orange alarm from Material Design Icons -->
<div class="i-mdi-alarm text-orange-400 hover:text-teal-400" />
<!-- Sun in light mode, Moon in dark mode, from Carbon -->
<button class="i-carbon-sun dark:i-carbon-moon" />
<!-- Bell icon from Carbon -->
<i class="i-tabler-bell" />
The project utilizes the official vue-i18n translation plugin. To add a new language, simply insert a JSON file into the ./src/locale/lang
directory. For instance, you can name it zh-CN.json
. Afterward, include this new file in the ./src/locale/index.ts
file.
import zhCN from "./lang/zh-CN.json";
const i18n = createI18n<[MessageSchema], "en-US" | "zh-CN">({
locale: "en-US",
fallbackLocale: "en-US",
messages: {
'en-US': enUS,
'zh-CN': zhCN,
},
});
The language switcher drop-down select can be found in the ./src/pages/home.vue
file.
Create a repo from this template on GitHub.
If you prefer to do it manually with the cleaner git history
npx degit sajjadalis/f7-vue-typescript f7-vue-typescript
cd f7-vue-typescript
npm install
When you use this template, try follow the checklist to update your info properly
- Change the author name in
LICENSE
- Change the
appId
andappName
incapacitor.config.json
- Change the
name
andid
for f7params inApp.vue
The easiest way is to use Search (Ctrl+Shift+F) feature in VS Code. Search for com.example.app
and replace with com.yourdomain.app
. Similarly search for F7-Vue Typescript
and replace with Your App Name
.
And, enjoy :)
npm run dev
To build, run
npm run build
To builds, sync capacitor & copies to Android
npm run android
To builds, sync capacitor & copies to iOS
npm run ios
VSCode + Volar (and disable Vetur) + TypeScript Vue Plugin (Volar) + UnoCSS.