Rica Nuxt Theme

Welcome to Rica!

When you unpack downloaded archive from ThemeForest.net you'll get folder containing 2 folders.

  1. Documentation - Documentation for Rica HTML site template
  2. Frontend - Rica Frotnend Folder
  • Rica
    • document
      • index.html
    • Frontend
      • .nuxt
      • components
      • pages// all the inner pages set this folder
      • assets
        • css
          • all css files
        • fonts
          • all fonts files
        • scss
          • font-awesome
            • all font-awesome scss
          • theme
            • _menu.scss
            • _price-range.scss
            • _responsive.scss
            • _rtl.scss
            • _style.scss
            • _theme-dark.scss
            • _variables.scss
          • other scss files
        • globals.scss
      • public
        • images
          • all images
        • video
          • all video files
        • data
          • all json files
      • composables
      • svg// all svg files
      • layouts // common layout structure like header ,footer ,menu
      • plugins // all plugins call set here
      • store
      • animation
      • locales
      • offerText
      • app.vue
      • nuxt.config.ts
      • i18n.config.ts

Welcome to Nuxt! Nuxt helps you build modern web applications.

For getting started an Nuxt application you needs two things as Prerequisites.

Prerequisites
  • Before you begin, make sure your development environment includes Node and an npm package manager.

Node.js
  • Download 18+ version of node.js from nodejs.org.

  • Install Node.js using downloaded file

  • To check your node version, run node -v in a terminal/console window.

Npm package manager
  • Nuxt apps depend on features and functionality provided by libraries that are available as npm packages. To download and install npm packages, you must have an npm package manager.

  • This Quick Start uses the npm client command line interface, which is installed with Node.js by default. To check that you have the npm client installed, run npm -v in a terminal/console window.

  • For better understanding Vue we suggest you to once go through official documentation of Nuxt from Nuxt.com

Nuxt setup

If you want Rica theme setup then directly follow next Rica setup section

Create Initial application
  • 1. Open a terminal (if you're using Visual Studio Code, you can open an integrated terminal) and use the following command to create a new starter project:
    npx nuxi init my-app
Run Application
  • 1. Go to the workspace folder (my-app).
    cd my-app
  • 2. Launch the server by using the CLI command npm run dev
    npm run dev
Supplemental

Rica setup

If you have already downloaded and installed node.js and npm then ignore prerequisites accordingly.

Node.js
  • Download 18+ version of node.js from nodejs.org.

  • Install Node.js using downloaded file

  • To check your node version, run node -v in a terminal/console window.

Setup Rica theme by
  • 1) Download and extract an Rica themes from themeforest
  • 2) Extract it and then go in to theme folder.
    cd theme
  • 3) Install all dependency by running npm install command
    npm install
  • 4) Now you are in stage to successfully run rica using below command:
    npm run dev

    Once you serve your application by default it will take their defalult port so you can open port using localhost://3000

    Some Common solution if you do not run project successfully
    • Use Latest Version of node.js
    • Remove node_module and package-lock.json file and again do npm install
    • You can again download theme from themeforst and then again run
    • Then also if you don't solve issue you can generate a ticket.
    Build Application
    • 1. Build you application for host on server using below command:
      npm run build
    • 2. It will create one dist file in your theme folder. Make zip of dist folder. so here you are ready to upload your theme on server.
Setup Rica Admin theme by
  • 1) Download and extract an Rica themes from themeforest
  • 2) Extract it and then go in to admin folder.
    cd theme
  • 3) Install all dependency by running npm install command
    npm install
  • 4) Now you are in stage to successfully run rica using below command:
    npm run dev

    Once you serve your application by default it will take their defalult port so you can open port using localhost://3000

    • Note: This is just an admin design, as it is template we have not integrate it with frontend.
    Build Application
    • 1. Build you application for host on server using below command:
      npm run build
    • 2. It will create one dist file in your admin folder. Make zip of dist folder. so here you are ready to upload your theme on server.

You can customise your theme using customiser. This tool lets you adjust the appearance and functionality of your website according to your preferences. One of the features you can modify is the text direction and color scheme of your theme.

You can find two toggle buttons in the customiser that allow you to switch between right-to-left and left-to-right text direction, as well as dark and light color schemes. You can see an example of these buttons in the image below, which is located in the page folder layouts/customizer folder.

custmizer

SCSS Folder Structure

We have used scss for styling the website, as it makes the development process fast and convenient for the developers. Below given is a detailed explanation of the scss folder structure, so that if you want to make any changes in your personal theme then you can make changes easily.

Refer this page to understand the folder structure of our project, so that you can navigate and make changes in the project easily.

  • assets
    • css
      • all css files
    • fonts
      • all fonts files
    • scss
      • font-awesome
        • all font-awesome scss
      • theme
        • _menu.scss
        • _price-range.scss
        • _responsive.scss
        • _rtl.scss
        • _style.scss
        • _theme-dark.scss
        • _variables.scss
      • other scss files

What is Skeleton Screen?

Skeleton screen is a low fidelity UI into which information is gradually loaded. It gives users a visual cue that the content is being loaded into each UI element.

Skeleton Screen when used as the feature in the product make people perceive that app/website is loading fast. Improved perceived performance not only provide good UX but also helps in increasing conversion ratio.

How to set Skeleton Loader

If you want to disable the loader section that appears at the beginning of the HTML pages, you can simply delete that section from the code. The loader section is located in the folder container/common/loader/skeletonLoader. There are different designs for the skeleton loader page, depending on the layout you choose.

<!-- loader start -->
<div class='skeleton_loader' >
...
</div>
<!-- loader end -->

You need to use this dependency react-360-view. which will help you to get the result.

"use client";

import React, { useMemo } from "react";

import View360, { EquirectProjection } from "@egjs/react-view360";

import "@egjs/react-view360/css/view360.min.css";

const BannerImage = () => {

const projection = useMemo(

    () =>

     new EquirectProjection({

    src: "/assets/images/360/room.jpg",

   }),

[],

);

return <View360 className="is-16by9" zoom={false} disableContextMenu={true} scrollable={false} wheelScrollable={true} autoResize={true} projection={projection} />;

};

export default BannerImage;

Installing Bootstrap


We have use bootstrap to design most of the components, make sure you install it and integrate with the project.

step 1:

      
 npm install --save bootstrap
                                      

step 2:

Create useBootstrap.client.ts file in plugins folder all the following code:

      
import bootstrap from 'bootstrap/dist/js/bootstrap.bundle'

 export default defineNuxtPlugin(nuxtApp => {
     nuxtApp.provide('bootstrap', bootstrap)
 
 })
                                      

Title modules


Title 1
new

"emergency call"

 
 <div className="title-1">
 <span className="title-label">new</span>
 <h2>
   "emergency call"
 </h2>
 </div>
                                  
Title 2

Featured... Destinations

Lorem Ipsum is simply dummy text of the printing and Lorem Ipsum has been standard.......

<div className="title-2">
<h2>Featured... <span>Destinations/span></h2>
<p>Lorem Ipsum is simply dummy text of the printing and Lorem Ipsum has been standard.......</p>
</div>
                                    
Title 3
new

our happy customercustomer

 <div className="language-HTML" id="titlecode1">
 <div className="title-3 rounded">
   <span className="title-label">new</span>
     <h2>our happy customer<span>customer</span></h2>
   </div>
                                    

Ratio Classes: Change your image proportion by just adding class

If you use image as background than add class ".bg-img" in image and add below class in parent.

  • .ratio_40 - 40%
  • .ratio_45 - 45%
  • .ratio2_1 - 50%
  • .ratio2_3 - 60%
  • .ratio3_2 - 66.66%
  • .ratio_landscape - 75%
  • .ratio_square - 100%
  • .ratio_asos - 127.77%
  • .ratio_portrait - 150%
  • .ratio1_2 - 200%

Fonts

You can change font of your theme from nuxt.config.ts

                            
 export default defineNuxtConfig({
   app: {
       head: {
           link: [
               { href: 'https://fonts.googleapis.com/css?family=Nunito:300,300i,400,400i,600,600i,700,700i,800,800i,900,900i&display=swap', rel: 'stylesheet' },
               { href: 'https://fonts.googleapis.com/css?family=Work+Sans:400,500,600,700,800,900&display=swap', rel: 'stylesheet' },
               { href: 'https://fonts.googleapis.com/css?family=Vampiro+One&display=swap', rel: 'stylesheet' },
               { href: 'https://fonts.googleapis.com/css?family=Dancing+Script&display=swap', rel: 'stylesheet' },
               { href: 'https://fonts.googleapis.com/css?family=Pacifico&display=swap', rel: 'stylesheet' },
               { href: 'https://fonts.googleapis.com/css?family=Bangers&display=swap', rel: 'stylesheet' }
           ],
       }
   },
 })
  

Charts


Apex Charts Example

Installing and usage

npm i vue3-apexcharts

I will create Apexchart file in Component folder

Inside Your template tags add

<ClientOnly> <VueApexCharts :height="height" :type="type" :options="options" :series="series" /> </ClientOnly>

Inside Your script tags add

<script lang="ts" setup> import VueApexCharts from "vue3-apexcharts"; let props = defineProps(['height', 'type', 'options', 'series']); </script>

Then Import a folder in plugin.ts file

 import { defineNuxtPlugin } from '#app'
 import VueApexCharts from "@/components/apexcharts.vue";
 export default defineNuxtPlugin(nuxtApp => {
   nuxtApp.vueApp.component('apexchart', VueApexCharts)
 })
                                      

Inside Your template tags add

 <apexchart height="350" type="radialBar" :options="chartOptions" :series="series"></apexchart>
                                      

Inside Your script tags add


 <script lang="ts" setup>
 const series = [50, 30, 20]
 const chartOptions = {
   chart: {
       height: 350,
       type: "radialBar",
   },
   plotOptions: {
       radialBar: {
           dataLabels: {
               name: {
                   fontSize: "22px",
               },
               value: {
                   fontSize: "16px",
               },
               total: {
                   show: true,
                   label: "Total",
                   formatter: function () {
                       return 80
                   },
               },
           },
       },
   },
   labels: ["Apples", "Oranges", "Bananas", "Berries"],
   colors: ['#fa4962', '#379cf9', '#a264ff'],
   stroke: { lineCap: "round", }
}
</script>
                                      

Maps

Rica have used 2 maps which is google map, leaflet map. following are the maps which used for map box.


Google Map

Installing and usage

npm i vue3-google-map

Inside Your template tags add


    <GoogleMap :center="center" :zoom="4" style="width: auto; height: 100%">
        <Marker v-for="(location, index) in positions.lists" :key="index"
            :options="{ position: { lat: location.lat, lng: location.lng } }" />
    </GoogleMap>

                                      

Inside Your script tags add

<script lang="ts" setup>
import { reactive, ref } from "vue";
import { GoogleMap, Marker } from "vue3-google-map";
interface item {
    lat: number,
    lng: number,
}
const center = ref({ lat: 50, lng: 5 });
const positions = reactive({
    lists: ref([
        { lat: 48.8567, lng: 2.3508 },
        { lat: 41.9, lng: 12.5 },
        { lat: 52.5166, lng: 13.3833 },
        { lat: 40.4, lng: -3.6833 },
        { lat: 51.5008, lng: -0.1224 },
    ]),
})
</script>
                                      
Leaflet Map

Installing and usage

npm i @vue-leaflet/vue-leaflet

Inside Your template tags add

  <l-map ref="locationsMap" :min-zoom="polygon.minZoom" :max-zoom="polygon.maxZoom" :zoom-animation="true"
  :zoom="polygon.zoom" :center="polygon.center" :useGlobalLeaflet="false" :options="{ tap: false }">
  <l-tile-layer :url="polygon.url" />
  <template v-for="(item, index) in datas" :key="index">
      <l-marker :lat-lng="[item.location_latitude, item.location_longitude]">
          <div v-if="item.location_latitude && item.location_longitude">
              <l-popup class="">
                
              </l-popup>
              <l-icon>
                  <img src="/images/leaflet/marker-icon.png" />
              </l-icon>
          </div>
      </l-marker>
  </template>
</l-map>
                                      

Inside Your script tags add

 <script lang="ts" setupgt
  import { getImages } from "@/composables/getImages"
  import "leaflet/dist/leaflet.css";
  import {
      LIcon,
      LMap,
      LMarker,
      LPopup,
      LTileLayer
  } from "@vue-leaflet/vue-leaflet";
  let props = defineProps({
      datas: Object
  })
  console.log("llppp", props.datas);
  const polygon = {
      minZoom: 13,
      maxZoom: 13,
      zoom: 13,
      center: [25.206426, 55.319011],
      color: '#ff00ff',
      url: "https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
  }
   </scriptgt
                                      

DatePicker


Installing and usage

npm i @vuepic/vue-datepicker

In your plugin.ts file all the following code:

import Datepicker from '@vuepic/vue-datepicker';
import "@vuepic/vue-datepicker/dist/main.css";
export default defineNuxtPlugin(nuxtApp => {
  nuxtApp.vueApp.component('Datepicker', Datepicker)
})
                                      

Inside Your template tags add

  <Datepicker v-model="date" :format="format" placeholder="Depart Date" id="datepicker"
  class="form-control open-select" />

                                      

Inside Your script tags add

 <script lang="ts" setup>
   import { ref } from 'vue';
   const router = useRoute()
   const date = ref();
   const date1 = ref();
   const filter = ref<boolean>(false)
   const format = (date) => {
       const day = date.getDate();
       const month = date.getMonth() + 1;
       const year = date.getFullYear();
       return ` ${day}/${month}/${year}`;
   }
   </script>
                                          

If you remove RTL or Dark setting button, please remove customizer compoent from layout file components > container > common (bottom of the page) .

Inside Your template tags add

 <div class="theme-setting">
   <div class="dark">
       <input class="tgl tgl-skewed" id="dark" type="checkbox">
       <label class="tgl-btn" data-tg-off="Dark" data-tg-on="Light" for="dark" @click="myFunction"> </label>
   </div>
   <div class="rtl">
       <input class="tgl tgl-skewed" id="rtl" type="checkbox">
       <label class="tgl-btn" data-tg-off="RTL" data-tg-on="LTR" for="rtl" @click="myRtl"> </label>
   </div>
</div>
                  

Inside Your script tags add

 <script lang="ts" setup>
  function myFunction() {
      var element = document.body;
      element.classList.toggle("dark");
  }
  function myRtl() {
      var element = document.body;
      element.classList.toggle("rtl");
  }
  
 </script>
                  

To customize the layout of your website, follow these steps:

- Remove layout path in public>data>menu.json folder.remove other layout path which is defined inside file.

- Navigate to Pages > Hotel. The menu layout is kept in this folder. the alternative layout, which is specified inside the pages folder, should be removed.

- Some pages available inside common folder so be carefull you not remove that. first check all the pages which is you need to use and other then you can delete.

- We prodvide you header ,sidebar and footer with loader and tiptop compoent . This all component inside layout folder. Please don't remove that folder.

- We provide data inside data folder. that also same name as menu name. so you can check that according to that and delete other uneccery data from the data folder.

rtl rtl rtl

without this plugins and products, our theme will be incomplete.

open source plugins

Once again thank you for purchasing one of our Templates , if you like our Templates please rate us

Best Regards, Pixelstrap