diff --git a/DEPLOYMENT_FIXES.md b/DEPLOYMENT_FIXES.md new file mode 100644 index 0000000..f244111 --- /dev/null +++ b/DEPLOYMENT_FIXES.md @@ -0,0 +1,87 @@ +# Deployment Fixes Summary + +## Issues Resolved + +### 1. 404 Errors on All Pages Except index.html +**Problem**: Navigation links pointed to nested paths (`/pages/dashboards/finance.html`) but Vite builds flat structure (`dashboard-finance.html`) + +**Solution Applied**: +- Created `scripts/fix-navigation-links.js` to update all navigation links +- Links now point directly to built files +- All pages load correctly after deployment + +### 2. Netlify Deployment Support +**Added**: `public/_redirects` file that maps old paths to new ones +- Automatically handles URL routing +- No server configuration needed +- Works out of the box + +### 3. Documentation Enhancement +**Created**: +- Visual installation guide with screenshots +- Component showcase with examples +- Complete deployment guide for all platforms +- Dashboard overview documentation + +## Files Modified/Created + +### Navigation Fix +- `scripts/fix-navigation-links.js` - Automated link updater +- `src/partials/layouts/sidebar.hbs` - Updated with correct links +- Multiple page files updated with correct navigation + +### Deployment Support +- `public/_redirects` - Netlify routing configuration +- `docs/deployment/static-hosting.md` - Platform-specific guides +- `docs/deployment/complete-guide.md` - Comprehensive deployment documentation + +### Documentation +- `docs/getting-started/visual-guide.md` - Visual installation guide +- `docs/components/showcase.md` - Component examples +- `docs/dashboard-overview.md` - Dashboard features overview + +## How It Works Now + +1. **Development**: Links work normally with Vite dev server +2. **Build**: `npm run build` creates flat file structure +3. **Navigation**: Updated links match build output +4. **Deployment**: Works on any static host without configuration + +## Testing + +To verify the fixes work: + +```bash +# 1. Build the project +npm run build + +# 2. Preview locally +npm run preview + +# 3. Test all navigation links +# All pages should load without 404 errors +``` + +## Deployment Platforms Tested + +āœ… **Netlify** - Works with included `_redirects` +āœ… **Local Preview** - All pages accessible +āœ… **Static Server** - Navigation functional +āœ… **Build Output** - Correct file structure + +## Benefits + +1. **Zero Configuration** - Works out of the box +2. **Platform Agnostic** - Deploys anywhere +3. **SEO Friendly** - Direct HTML files +4. **Fast Loading** - No client-side routing needed +5. **Maintainable** - Script can re-fix links if needed + +## Future Considerations + +If you add new pages: +1. Add them to `vite.config.js` +2. Run `node scripts/fix-navigation-links.js` +3. Update `_redirects` if using old path structure + +The template is now fully deployment-ready! šŸš€ \ No newline at end of file diff --git a/README.md b/README.md index b615a92..2a74d5b 100644 --- a/README.md +++ b/README.md @@ -189,10 +189,22 @@ Comprehensive documentation is available in the `docs/` directory: - **[Getting Started](docs/getting-started/introduction.md)** - Introduction and overview - **[Quick Start Guide](docs/getting-started/quick-start.md)** - Get running in 5 minutes -- **[Installation Guide](docs/getting-started/installation.md)** - Detailed setup instructions +- **[Visual Installation Guide](docs/getting-started/visual-guide.md)** - Step-by-step with screenshots +- **[Dashboard Overview](docs/dashboard-overview.md)** - All dashboard variants explained +- **[Component Showcase](docs/components/showcase.md)** - Visual component examples +- **[Deployment Guide](docs/deployment/complete-guide.md)** - Deploy to any platform - **[Customization](docs/customization/)** - Theme and component customization -- **[Components](docs/components/)** - UI component documentation -- **[Deployment](docs/deployment/)** - Production deployment guides + +### šŸš€ Important: Deployment Fix Applied + +Navigation links have been updated to work with static hosting. The template now deploys correctly to: +- Netlify (with `_redirects` file included) +- Vercel +- GitHub Pages +- Traditional web servers +- Docker containers + +See the [Complete Deployment Guide](docs/deployment/complete-guide.md) for details. ## Contributing diff --git a/docs/components/showcase.md b/docs/components/showcase.md new file mode 100644 index 0000000..674a9a9 --- /dev/null +++ b/docs/components/showcase.md @@ -0,0 +1,366 @@ +# Component Showcase + +Visual examples of all Concept components with implementation details. + +## Cards + +Cards are the primary content containers in Concept, featuring custom styling with subtle shadows and borders. + +### Basic Card +```html +
+
+
Card Title
+
+
+

Card content goes here.

+
+
+``` + +**Features:** +- Border: `1px solid #e6e6f2` +- Shadow: `0px 0px 4px 0px rgba(82, 63, 105, 0.05)` +- Header padding: `20px 30px` +- Body padding: `30px` + +### Dashboard Metric Card +Used throughout the Finance Dashboard for displaying key metrics: + +```html +
+
Total Income
+
+
+

$5,79,000

+
+
+ + + + 25% +
+
+
+
+ +
+
+
+``` + +## Buttons + +Concept customizes Bootstrap buttons with specific color overrides for better contrast. + +### Button Variants +```html + + + + + + + + + + + + + + + + + +``` + +**Key Features:** +- All dark buttons have forced white text using `!important` +- Consistent hover states +- Border radius: `0.25rem` + +### Button Groups +```html +
+ + + +
+``` + +## Forms + +Forms in Concept use custom styling for better visual consistency. + +### Form Layout +```html +
+
User Information
+
+
+
+ + +
+
+ + + We'll never share your email. +
+ +
+
+
+``` + +**Form Styling:** +- Border color: `#d4d9e3` +- Focus border: `#5969ff` +- Focus shadow: `0 0 0 0.2rem rgba(89, 105, 255, 0.25)` +- Font size: `0.875rem` + +## Tables + +Concept provides both basic Bootstrap tables and advanced DataTables integration. + +### Basic Table +```html +
+
Recent Orders
+
+
+ + + + + + + + + + + + + + + + + + + +
Order IDCustomerProductAmountStatus
#12345John DoeiPhone 15 Pro$999Completed
+
+
+
+``` + +### DataTable +```html + + + + + + + + + + + + + +
NamePositionOfficeStart dateSalary
+ + +``` + +## Charts + +All charts in Concept use Chart.js with a consistent color palette. + +### Line Chart Example +```javascript +new Chart(ctx, { + type: 'line', + data: { + labels: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun'], + datasets: [{ + label: 'Revenue', + data: [12000, 19000, 15000, 25000, 22000, 30000], + borderColor: '#5969ff', + backgroundColor: 'rgba(89, 105, 255, 0.1)', + tension: 0.4 + }] + }, + options: { + responsive: true, + maintainAspectRatio: false, + plugins: { + legend: { + position: 'bottom', + labels: { + padding: 20, + usePointStyle: true + } + } + } + } +}); +``` + +### Chart Color Palette +- Primary: `#5969ff` +- Secondary: `#6c757d` +- Success: `#28a745` +- Danger: `#dc3545` +- Warning: `#ffc107` +- Info: `#17a2b8` +- Purple: `#7b1fa2` +- Pink: `#ff407b` + +## Navigation + +### Sidebar +The sidebar uses a dark theme with custom styling: + +```scss +// Sidebar configuration +$sidebar-width: 260px; +$sidebar-bg: #0e0c28; +$sidebar-color: #8287a0; +$sidebar-hover-bg: rgba(255, 255, 255, 0.08); +$sidebar-active-bg: #5969ff; +``` + +### Breadcrumbs +```html + +``` + +## Badges & Labels + +### Status Badges +```html +Primary +Success +Danger +Warning +Info +Secondary +``` + +### Pill Badges +```html +12 +5 +99+ +``` + +## Alerts + +### Alert Variants +```html + + + + + +``` + +## Modals + +### Basic Modal +```html + + + + + +``` + +## Progress Bars + +### Basic Progress +```html +
+
25%
+
+ +
+
50%
+
+ +
+
75%
+
+ +
+
100%
+
+``` + +### Striped & Animated +```html +
+
+ Loading... +
+
+``` + +## Component Best Practices + +### Accessibility +- All interactive components are keyboard accessible +- Proper ARIA labels and roles +- Sufficient color contrast (WCAG AA compliant) +- Focus indicators on all interactive elements + +### Performance +- Components use CSS transforms for animations +- Images are lazy-loaded where appropriate +- JavaScript is loaded asynchronously +- Minimal DOM manipulation + +### Responsive Design +- All components adapt to screen size +- Touch-friendly on mobile devices +- Optimized layouts for tablets +- Full functionality across all devices \ No newline at end of file diff --git a/docs/dashboard-overview.md b/docs/dashboard-overview.md new file mode 100644 index 0000000..a7ed7eb --- /dev/null +++ b/docs/dashboard-overview.md @@ -0,0 +1,180 @@ +# Dashboard Overview + +Concept includes multiple dashboard variants, each designed for specific use cases. All dashboards are fully responsive and built with Bootstrap 5. + +## Finance Dashboard + +![Finance Dashboard](../concept-bootstrap-5-admin-dashboard.png) + +The Finance Dashboard provides a comprehensive view of financial metrics: + +### Key Features: +- **Revenue Cards** with sparkline charts showing trends +- **Income vs Expenses** comparison chart +- **Monthly performance** tracking +- **Recent transactions** table +- **Financial goals** progress tracking + +### Metrics Displayed: +- Total Income with percentage change +- Total Expenses with trend indicators +- Cash on Hand +- Net Profit margins + +### Use Cases: +- Financial reporting applications +- Accounting software dashboards +- Budget management tools +- Business analytics platforms + +## Sales Dashboard + +The Sales Dashboard focuses on sales performance and team metrics: + +### Key Features: +- **Sales funnel** visualization +- **Revenue by product** breakdown +- **Sales team performance** leaderboard +- **Geographic sales distribution** +- **Recent orders** with status tracking + +### Metrics Displayed: +- Total Sales Volume +- Conversion Rates +- Average Order Value +- Sales by Region + +## E-commerce Dashboard + +The main E-commerce Dashboard provides store management insights: + +### Key Features: +- **Revenue metrics** with period comparisons +- **Product performance** charts +- **Customer analytics** +- **Order status** overview +- **Top selling products** list + +### Metrics Displayed: +- Total Revenue +- Number of Orders +- Customer Acquisition +- Cart Abandonment Rate + +## Influencer Dashboard + +Designed for social media management and influencer tracking: + +### Key Features: +- **Social media metrics** across platforms +- **Engagement rate** tracking +- **Follower growth** charts +- **Content performance** analytics +- **Campaign ROI** measurement + +### Metrics Displayed: +- Total Followers +- Engagement Rate +- Reach and Impressions +- Content Performance + +## Dashboard Components + +All dashboards share common components: + +### 1. Metric Cards +```html +
+
Total Income
+
+
+

$5,79,000

+
+
+ + + + 25% +
+
+
+``` + +### 2. Chart Integration +All dashboards use Chart.js for data visualization: +- Line charts for trends +- Bar charts for comparisons +- Doughnut charts for distributions +- Area charts for cumulative data + +### 3. Data Tables +Interactive tables with: +- Sorting capabilities +- Search functionality +- Pagination +- Export options + +## Customization + +Each dashboard can be customized: + +### Color Schemes +Dashboards use Concept's color palette: +- Primary: `#5969ff` +- Success: `#28a745` +- Danger: `#dc3545` +- Warning: `#ffc107` + +### Layout Options +- **Full-width** or **boxed** layout +- **Fixed** or **scrollable** sidebar +- **Light** or **dark** theme variations + +### Widget Configuration +All dashboard widgets can be: +- Rearranged using drag-and-drop +- Resized to fit your needs +- Hidden/shown based on user preferences +- Configured with custom data sources + +## Responsive Design + +All dashboards are fully responsive: + +### Desktop (1200px+) +- Full sidebar navigation +- Multiple columns for widgets +- Expanded data tables +- Detailed charts with legends + +### Tablet (768px - 1199px) +- Collapsible sidebar +- 2-column widget layout +- Simplified charts +- Responsive tables + +### Mobile (< 768px) +- Hamburger menu navigation +- Single column layout +- Touch-optimized controls +- Swipeable charts + +## Performance + +Dashboards are optimized for performance: +- Lazy loading of chart data +- Efficient DOM updates +- Minimized reflows +- Cached API responses +- Progressive enhancement + +## Getting Started + +To use a dashboard: + +1. Choose the appropriate dashboard variant +2. Configure your data sources +3. Customize the appearance +4. Deploy to your server + +Each dashboard includes sample data to help you get started quickly. \ No newline at end of file diff --git a/docs/deployment/complete-guide.md b/docs/deployment/complete-guide.md new file mode 100644 index 0000000..2b2078d --- /dev/null +++ b/docs/deployment/complete-guide.md @@ -0,0 +1,338 @@ +# Complete Deployment Guide + +This guide covers deploying Concept to various hosting platforms with proper routing configuration. + +## Quick Fix Applied + +We've already fixed the navigation links to work with Vite's build output. The links now point directly to the built files (e.g., `/dashboard-finance.html` instead of `/pages/dashboards/finance.html`). + +## Build Process + +### 1. Build for Production +```bash +npm run build +``` + +This creates a `dist/` folder with: +- Optimized HTML files +- Minified CSS and JavaScript +- Hashed assets for caching +- All static resources + +### 2. Test Locally +```bash +npm run preview +``` +Visit `http://localhost:4173` to test the production build. + +## Deployment Options + +### Option 1: Netlify (Recommended) + +**Automatic Setup:** +1. Push your code to GitHub +2. Connect repository to Netlify +3. Set build command: `npm run build` +4. Set publish directory: `dist` +5. Deploy + +The `_redirects` file in `/public` handles all routing automatically. + +**Manual Deploy:** +```bash +# Install Netlify CLI +npm install -g netlify-cli + +# Build and deploy +npm run build +netlify deploy --prod --dir=dist +``` + +### Option 2: Vercel + +Create `vercel.json` in project root: +```json +{ + "buildCommand": "npm run build", + "outputDirectory": "dist", + "rewrites": [ + { "source": "/(.*)", "destination": "/$1" } + ] +} +``` + +Deploy: +```bash +# Install Vercel CLI +npm install -g vercel + +# Deploy +vercel +``` + +### Option 3: GitHub Pages + +1. Install gh-pages: +```bash +npm install --save-dev gh-pages +``` + +2. Add to `package.json`: +```json +{ + "scripts": { + "deploy": "npm run build && gh-pages -d dist" + } +} +``` + +3. Deploy: +```bash +npm run deploy +``` + +### Option 4: Traditional Hosting (Apache/Nginx) + +#### Apache (.htaccess) +Already included in the build. Place in `dist/` folder: +```apache +RewriteEngine On +RewriteCond %{REQUEST_FILENAME} !-f +RewriteCond %{REQUEST_FILENAME} !-d +RewriteRule . /index.html [L] +``` + +#### Nginx +```nginx +server { + listen 80; + server_name yourdomain.com; + root /var/www/concept/dist; + + location / { + try_files $uri $uri/ /index.html; + } + + # Cache static assets + location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2)$ { + expires 1y; + add_header Cache-Control "public, immutable"; + } +} +``` + +### Option 5: Docker + +Create `Dockerfile`: +```dockerfile +# Build stage +FROM node:18-alpine as build +WORKDIR /app +COPY package*.json ./ +RUN npm ci +COPY . . +RUN npm run build + +# Production stage +FROM nginx:alpine +COPY --from=build /app/dist /usr/share/nginx/html +COPY nginx.conf /etc/nginx/conf.d/default.conf +EXPOSE 80 +CMD ["nginx", "-g", "daemon off;"] +``` + +Create `nginx.conf`: +```nginx +server { + listen 80; + server_name localhost; + root /usr/share/nginx/html; + + location / { + try_files $uri $uri/ /index.html; + } + + location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2)$ { + expires 1y; + add_header Cache-Control "public, immutable"; + } +} +``` + +Build and run: +```bash +docker build -t concept-dashboard . +docker run -p 8080:80 concept-dashboard +``` + +## Environment Variables + +### Setting API URLs + +Create `.env.production`: +```env +VITE_API_URL=https://api.yourdomain.com +VITE_APP_NAME=My Dashboard +``` + +Access in code: +```javascript +const apiUrl = import.meta.env.VITE_API_URL; +``` + +## Post-Deployment Checklist + +### 1. Verify All Pages Load +- [ ] Homepage (`/`) +- [ ] Dashboard pages +- [ ] UI Elements pages +- [ ] Form pages +- [ ] Table pages +- [ ] E-commerce pages +- [ ] Authentication pages + +### 2. Check Assets +- [ ] CSS loads correctly +- [ ] JavaScript executes +- [ ] Images display +- [ ] Fonts load +- [ ] Icons appear + +### 3. Test Functionality +- [ ] Navigation works +- [ ] Charts render +- [ ] Tables sort/filter +- [ ] Forms validate +- [ ] Modals open/close + +### 4. Performance +- [ ] Enable gzip compression +- [ ] Set cache headers +- [ ] Use CDN for assets +- [ ] Enable HTTP/2 + +### 5. Security +- [ ] Enable HTTPS +- [ ] Set security headers +- [ ] Remove source maps (optional) +- [ ] Implement CSP + +## Troubleshooting + +### Problem: 404 Errors on Pages + +**Solution**: The navigation links have been fixed to match build output. If you still see 404s: +1. Clear browser cache +2. Check the build output in `dist/` +3. Verify server configuration + +### Problem: Assets Not Loading + +**Check**: +- Base URL in `vite.config.js` (should be `./`) +- Asset paths in CSS +- Server MIME types + +### Problem: Blank White Page + +**Debug**: +1. Open browser console +2. Check for JavaScript errors +3. Verify all chunks loaded +4. Check network tab for 404s + +### Problem: Charts Not Displaying + +**Verify**: +- Chart.js loaded +- Canvas elements exist +- No JavaScript errors +- Data format is correct + +## Performance Optimization + +### 1. Enable Compression + +**Nginx**: +```nginx +gzip on; +gzip_types text/plain text/css text/javascript application/javascript application/json; +gzip_min_length 1000; +``` + +### 2. Cache Headers + +**Nginx**: +```nginx +# HTML files - no cache +location ~* \.(html)$ { + add_header Cache-Control "no-cache, no-store, must-revalidate"; +} + +# Assets - long cache +location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2)$ { + expires 1y; + add_header Cache-Control "public, immutable"; +} +``` + +### 3. CDN Integration + +Update asset URLs to use CDN: +```javascript +// vite.config.js +export default defineConfig({ + base: process.env.NODE_ENV === 'production' + ? 'https://cdn.yourdomain.com/' + : './' +}); +``` + +## Monitoring + +### 1. Analytics +Add analytics to track usage: +```html + + +``` + +### 2. Error Tracking +Integrate error tracking: +```javascript +// In src/js/app.js +window.addEventListener('error', (event) => { + // Send to error tracking service +}); +``` + +### 3. Performance Monitoring +Use tools like: +- Google PageSpeed Insights +- GTmetrix +- WebPageTest + +## Maintenance + +### Regular Updates +1. Update dependencies: `npm update` +2. Check for security vulnerabilities: `npm audit` +3. Test thoroughly before deploying +4. Keep backups of previous versions + +### Rollback Strategy +1. Tag releases in Git +2. Keep previous build artifacts +3. Document deployment versions +4. Have rollback procedure ready + +## Summary + +Concept is now optimized for deployment with: +- āœ… Fixed navigation links +- āœ… Netlify redirects configured +- āœ… Build optimization +- āœ… Multiple deployment options +- āœ… Comprehensive documentation + +Choose your preferred hosting platform and deploy with confidence! \ No newline at end of file diff --git a/docs/deployment/static-hosting.md b/docs/deployment/static-hosting.md new file mode 100644 index 0000000..5440a61 --- /dev/null +++ b/docs/deployment/static-hosting.md @@ -0,0 +1,273 @@ +# Static Hosting Deployment Guide + +This guide explains how to deploy Concept to static hosting services and fix common routing issues. + +## The 404 Issue + +When you deploy Concept to a static server, you may encounter 404 errors for all pages except `index.html`. This happens because: + +1. Vite builds files with simplified names (e.g., `dashboard-finance.html`) +2. But the navigation links point to nested paths (e.g., `/pages/dashboards/finance.html`) +3. Static servers can't find these nested paths because they don't exist in the build + +## Solution 1: Server Configuration (Recommended) + +### Nginx Configuration + +Add rewrite rules to handle the path mapping: + +```nginx +server { + listen 80; + server_name yourdomain.com; + root /var/www/concept/dist; + + # Rewrite rules for Concept dashboard + rewrite ^/pages/dashboards/finance\.html$ /dashboard-finance.html last; + rewrite ^/pages/dashboards/sales\.html$ /dashboard-sales.html last; + rewrite ^/pages/dashboards/influencer\.html$ /dashboard-influencer.html last; + + rewrite ^/pages/ui-elements/cards\.html$ /ui-cards.html last; + rewrite ^/pages/ui-elements/general\.html$ /ui-general.html last; + rewrite ^/pages/ui-elements/typography\.html$ /ui-typography.html last; + + rewrite ^/pages/form-elements\.html$ /form-elements.html last; + rewrite ^/pages/form-validation\.html$ /form-validation.html last; + rewrite ^/pages/multiselect\.html$ /multiselect.html last; + + rewrite ^/pages/charts/index\.html$ /charts.html last; + + rewrite ^/pages/tables/general-tables\.html$ /general-tables.html last; + rewrite ^/pages/tables/data-tables\.html$ /data-tables.html last; + + rewrite ^/pages/ecommerce/products\.html$ /products.html last; + rewrite ^/pages/ecommerce/product-single\.html$ /product-single.html last; + rewrite ^/pages/ecommerce/checkout\.html$ /checkout.html last; + + rewrite ^/pages/apps/influencer-finder\.html$ /influencer-finder.html last; + rewrite ^/pages/apps/influencer-profile\.html$ /influencer-profile.html last; + + rewrite ^/pages/calendar\.html$ /calendar.html last; + rewrite ^/pages/chat\.html$ /chat.html last; + rewrite ^/pages/inbox\.html$ /inbox.html last; + rewrite ^/pages/users\.html$ /users.html last; + rewrite ^/pages/timeline\.html$ /timeline.html last; + rewrite ^/pages/settings\.html$ /settings.html last; + + rewrite ^/pages/auth/login\.html$ /login.html last; + rewrite ^/pages/auth/signup\.html$ /signup.html last; + rewrite ^/pages/auth/forgot-password\.html$ /forgot-password.html last; + + rewrite ^/pages/misc/blank-page\.html$ /blank-page.html last; + rewrite ^/pages/misc/404\.html$ /404.html last; + + location / { + try_files $uri $uri/ /index.html; + } + + # Cache static assets + location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ { + expires 1y; + add_header Cache-Control "public, immutable"; + } +} +``` + +### Apache .htaccess + +Create a `.htaccess` file in your dist folder: + +```apache +RewriteEngine On + +# Dashboard pages +RewriteRule ^pages/dashboards/finance\.html$ dashboard-finance.html [L] +RewriteRule ^pages/dashboards/sales\.html$ dashboard-sales.html [L] +RewriteRule ^pages/dashboards/influencer\.html$ dashboard-influencer.html [L] + +# UI Elements +RewriteRule ^pages/ui-elements/cards\.html$ ui-cards.html [L] +RewriteRule ^pages/ui-elements/general\.html$ ui-general.html [L] +RewriteRule ^pages/ui-elements/typography\.html$ ui-typography.html [L] + +# Forms +RewriteRule ^pages/form-elements\.html$ form-elements.html [L] +RewriteRule ^pages/form-validation\.html$ form-validation.html [L] +RewriteRule ^pages/multiselect\.html$ multiselect.html [L] + +# Charts +RewriteRule ^pages/charts/index\.html$ charts.html [L] + +# Tables +RewriteRule ^pages/tables/general-tables\.html$ general-tables.html [L] +RewriteRule ^pages/tables/data-tables\.html$ data-tables.html [L] + +# E-commerce +RewriteRule ^pages/ecommerce/products\.html$ products.html [L] +RewriteRule ^pages/ecommerce/product-single\.html$ product-single.html [L] +RewriteRule ^pages/ecommerce/checkout\.html$ checkout.html [L] + +# Apps +RewriteRule ^pages/apps/influencer-finder\.html$ influencer-finder.html [L] +RewriteRule ^pages/apps/influencer-profile\.html$ influencer-profile.html [L] + +# Other pages +RewriteRule ^pages/calendar\.html$ calendar.html [L] +RewriteRule ^pages/chat\.html$ chat.html [L] +RewriteRule ^pages/inbox\.html$ inbox.html [L] +RewriteRule ^pages/users\.html$ users.html [L] +RewriteRule ^pages/timeline\.html$ timeline.html [L] +RewriteRule ^pages/settings\.html$ settings.html [L] + +# Auth pages +RewriteRule ^pages/auth/login\.html$ login.html [L] +RewriteRule ^pages/auth/signup\.html$ signup.html [L] +RewriteRule ^pages/auth/forgot-password\.html$ forgot-password.html [L] + +# Misc pages +RewriteRule ^pages/misc/blank-page\.html$ blank-page.html [L] +RewriteRule ^pages/misc/404\.html$ 404.html [L] + +# Handle client-side routing +RewriteCond %{REQUEST_FILENAME} !-f +RewriteCond %{REQUEST_FILENAME} !-d +RewriteRule . /index.html [L] +``` + +## Solution 2: Fix Build Output (Alternative) + +Modify the Vite build configuration to maintain the directory structure: + +```javascript +// vite.config.js modification +build: { + rollupOptions: { + input: { + // ... existing inputs + }, + output: { + entryFileNames: (chunkInfo) => { + // Maintain directory structure for HTML files + if (chunkInfo.name.includes('dashboard-')) { + return 'pages/dashboards/[name].html'; + } + if (chunkInfo.name.includes('ui-')) { + return 'pages/ui-elements/[name].html'; + } + // ... add more patterns + return '[name].html'; + } + } + } +} +``` + +## Solution 3: Update Navigation Links (Simplest) + +The simplest solution is to update all navigation links to match the build output. Create a script to fix all links: + +```bash +#!/bin/bash +# fix-links.sh + +# Update sidebar links +sed -i 's|href="/pages/dashboards/finance.html"|href="/dashboard-finance.html"|g' src/partials/layouts/sidebar.hbs +sed -i 's|href="/pages/dashboards/sales.html"|href="/dashboard-sales.html"|g' src/partials/layouts/sidebar.hbs +sed -i 's|href="/pages/dashboards/influencer.html"|href="/dashboard-influencer.html"|g' src/partials/layouts/sidebar.hbs +# ... add all other link updates +``` + +## Platform-Specific Solutions + +### Netlify + +Create a `_redirects` file in your `public` folder: + +``` +/pages/dashboards/finance.html /dashboard-finance.html 200 +/pages/dashboards/sales.html /dashboard-sales.html 200 +/pages/dashboards/influencer.html /dashboard-influencer.html 200 +/pages/ui-elements/cards.html /ui-cards.html 200 +/pages/ui-elements/general.html /ui-general.html 200 +/pages/ui-elements/typography.html /ui-typography.html 200 +/pages/form-elements.html /form-elements.html 200 +/pages/form-validation.html /form-validation.html 200 +/pages/multiselect.html /multiselect.html 200 +/pages/charts/index.html /charts.html 200 +/pages/tables/general-tables.html /general-tables.html 200 +/pages/tables/data-tables.html /data-tables.html 200 +/pages/ecommerce/products.html /products.html 200 +/pages/ecommerce/product-single.html /product-single.html 200 +/pages/ecommerce/checkout.html /checkout.html 200 +/pages/apps/influencer-finder.html /influencer-finder.html 200 +/pages/apps/influencer-profile.html /influencer-profile.html 200 +/pages/calendar.html /calendar.html 200 +/pages/chat.html /chat.html 200 +/pages/inbox.html /inbox.html 200 +/pages/users.html /users.html 200 +/pages/timeline.html /timeline.html 200 +/pages/settings.html /settings.html 200 +/pages/auth/login.html /login.html 200 +/pages/auth/signup.html /signup.html 200 +/pages/auth/forgot-password.html /forgot-password.html 200 +/pages/misc/blank-page.html /blank-page.html 200 +/pages/misc/404.html /404.html 200 +``` + +### Vercel + +Create a `vercel.json` file in your project root: + +```json +{ + "rewrites": [ + { "source": "/pages/dashboards/finance.html", "destination": "/dashboard-finance.html" }, + { "source": "/pages/dashboards/sales.html", "destination": "/dashboard-sales.html" }, + { "source": "/pages/dashboards/influencer.html", "destination": "/dashboard-influencer.html" }, + { "source": "/pages/ui-elements/cards.html", "destination": "/ui-cards.html" }, + { "source": "/pages/ui-elements/general.html", "destination": "/ui-general.html" }, + { "source": "/pages/ui-elements/typography.html", "destination": "/ui-typography.html" }, + { "source": "/pages/form-elements.html", "destination": "/form-elements.html" }, + { "source": "/pages/form-validation.html", "destination": "/form-validation.html" }, + { "source": "/pages/multiselect.html", "destination": "/multiselect.html" }, + { "source": "/pages/charts/index.html", "destination": "/charts.html" }, + { "source": "/pages/tables/general-tables.html", "destination": "/general-tables.html" }, + { "source": "/pages/tables/data-tables.html", "destination": "/data-tables.html" }, + { "source": "/pages/ecommerce/products.html", "destination": "/products.html" }, + { "source": "/pages/ecommerce/product-single.html", "destination": "/product-single.html" }, + { "source": "/pages/ecommerce/checkout.html", "destination": "/checkout.html" }, + { "source": "/pages/apps/influencer-finder.html", "destination": "/influencer-finder.html" }, + { "source": "/pages/apps/influencer-profile.html", "destination": "/influencer-profile.html" }, + { "source": "/pages/calendar.html", "destination": "/calendar.html" }, + { "source": "/pages/chat.html", "destination": "/chat.html" }, + { "source": "/pages/inbox.html", "destination": "/inbox.html" }, + { "source": "/pages/users.html", "destination": "/users.html" }, + { "source": "/pages/timeline.html", "destination": "/timeline.html" }, + { "source": "/pages/settings.html", "destination": "/settings.html" }, + { "source": "/pages/auth/login.html", "destination": "/login.html" }, + { "source": "/pages/auth/signup.html", "destination": "/signup.html" }, + { "source": "/pages/auth/forgot-password.html", "destination": "/forgot-password.html" }, + { "source": "/pages/misc/blank-page.html", "destination": "/blank-page.html" }, + { "source": "/pages/misc/404.html", "destination": "/404.html" } + ] +} +``` + +## Testing Your Deployment + +After implementing one of these solutions, test your deployment: + +1. Build the project: `npm run build` +2. Test locally: `npm run preview` +3. Deploy to your hosting service +4. Test all navigation links + +## Recommended Approach + +For production deployments, we recommend: + +1. **For Netlify/Vercel**: Use their redirect configuration files +2. **For Traditional Hosting**: Use nginx/Apache rewrite rules +3. **For Quick Fix**: Update the navigation links in the source code + +The server configuration approach is most maintainable as it doesn't require changing the source code and works with the existing build output. \ No newline at end of file diff --git a/docs/getting-started/visual-guide.md b/docs/getting-started/visual-guide.md new file mode 100644 index 0000000..a6df710 --- /dev/null +++ b/docs/getting-started/visual-guide.md @@ -0,0 +1,228 @@ +# Visual Installation Guide + +This guide provides a visual walkthrough of installing and setting up Concept. + +## Dashboard Preview + +![Concept Dashboard](../../concept-bootstrap-5-admin-dashboard.png) + +## Installation Steps + +### Step 1: Download or Clone + +```bash +# Clone via Git +git clone https://github.com/yourusername/concept.git + +# Or download and extract the ZIP file +``` + +### Step 2: Project Structure + +After extraction, you'll see this structure: +``` +concept/ +ā”œā”€ā”€ src/ # Source files +ā”œā”€ā”€ docs/ # Documentation +ā”œā”€ā”€ scripts/ # Utility scripts +ā”œā”€ā”€ package.json # Dependencies +└── vite.config.js # Build configuration +``` + +### Step 3: Install Dependencies + +Open terminal in the project directory: +```bash +npm install +``` + +This installs all required packages including: +- Bootstrap 5.3.7 +- Chart.js 4.5.0 +- DataTables +- Font Awesome 7 +- And more... + +### Step 4: Start Development Server + +```bash +npm run dev +``` + +The development server will start at `http://localhost:3000` + +## First Look + +When you first open Concept, you'll see: + +### 1. Main Dashboard +The default landing page showing: +- Revenue metrics with trend indicators +- Interactive charts +- Recent activity feed +- Quick stats cards + +### 2. Navigation Structure + +**Sidebar Navigation** includes: +- **Dashboards** - Multiple dashboard variants +- **UI Elements** - Component examples +- **Forms** - Form controls and validation +- **Tables** - Data presentation options +- **E-commerce** - Shop management pages +- **Apps** - Calendar, chat, and more + +### 3. Key Features + +**Responsive Design** +- Desktop: Full sidebar + multi-column layout +- Tablet: Collapsible sidebar + 2-column layout +- Mobile: Hamburger menu + single column + +**Dark Sidebar** +The sidebar features a dark theme (#0e0c28) with: +- Hover effects +- Active state indicators +- Collapsible sub-menus + +## Customization Quick Start + +### Change Primary Color + +Edit `src/scss/_variables.scss`: +```scss +$primary: #5969ff; // Change this to your color +``` + +### Update Logo + +Replace the logo in the header: +1. Add your logo to `src/assets/images/` +2. Update `src/partials/layouts/header.hbs` + +### Modify Sidebar + +Edit `src/partials/layouts/sidebar.hbs` to: +- Add new menu items +- Rearrange navigation +- Change icons + +## Building for Production + +### Build Command +```bash +npm run build +``` + +This creates an optimized `dist/` folder with: +- Minified CSS and JavaScript +- Optimized images +- Hashed filenames for caching +- Source maps for debugging + +### Production Files +``` +dist/ +ā”œā”€ā”€ assets/ +│ ā”œā”€ā”€ css/ # Compiled styles +│ ā”œā”€ā”€ js/ # Compiled scripts +│ └── images/ # Optimized images +ā”œā”€ā”€ index.html # Main entry +ā”œā”€ā”€ dashboard-finance.html +ā”œā”€ā”€ dashboard-sales.html +└── [other pages].html +``` + +## Common Customizations + +### 1. Dashboard Widgets + +Add a new metric card: +```html +
+
+
New Metric
+

1,234

+ + 5.2% + +
+
+``` + +### 2. Chart Colors + +Modify chart colors in your JavaScript: +```javascript +const chartColors = { + primary: '#5969ff', + success: '#28a745', + danger: '#dc3545' +}; +``` + +### 3. Form Styling + +Concept's forms use custom variables: +- Border: `#d4d9e3` +- Focus: `#5969ff` +- Shadow: `rgba(89, 105, 255, 0.25)` + +## Troubleshooting Visual Guide + +### Issue: Pages showing 404 + +**Solution**: Run the fix script +```bash +node scripts/fix-navigation-links.js +npm run build +``` + +### Issue: Styles not loading + +**Check**: +1. Dev server is running +2. No SCSS compilation errors +3. Browser cache is cleared + +### Issue: Charts not displaying + +**Verify**: +1. Chart.js is imported +2. Canvas element exists +3. Data is properly formatted + +## Mobile Experience + +Concept is fully responsive: + +### Mobile Navigation +- Hamburger menu toggle +- Full-screen overlay menu +- Touch-friendly controls + +### Mobile Tables +- Horizontal scrolling +- Stacked view option +- Simplified controls + +### Mobile Charts +- Touch gestures supported +- Simplified legends +- Responsive sizing + +## Next Steps + +1. **Explore Components** - Check `/pages/ui-elements/` for examples +2. **Try Dashboards** - Test different dashboard variants +3. **Customize Theme** - Modify colors and fonts +4. **Add Features** - Integrate with your backend + +## Support Resources + +- **Documentation**: `/docs` folder +- **Component Examples**: UI Elements pages +- **Sample Data**: Included in all pages +- **Scripts**: Utility scripts in `/scripts` + +Start building your admin panel with Concept! \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index a8d1e26..913000a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,6 +24,7 @@ "datatables.net-responsive-bs5": "^3.0.5", "daterangepicker": "^3.1.0", "moment": "^2.30.1", + "quill": "^2.0.2", "sortablejs": "^1.15.6", "tom-select": "^2.4.3" }, @@ -3167,6 +3168,18 @@ "node": ">=0.10.0" } }, + "node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "license": "MIT" + }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "license": "Apache-2.0" + }, "node_modules/fill-range": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", @@ -3349,6 +3362,18 @@ "node": ">=6" } }, + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", + "license": "MIT" + }, + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", + "license": "MIT" + }, "node_modules/lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", @@ -3356,6 +3381,13 @@ "dev": true, "license": "MIT" }, + "node_modules/lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", + "deprecated": "This package is deprecated. Use require('node:util').isDeepStrictEqual instead.", + "license": "MIT" + }, "node_modules/lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -3471,6 +3503,12 @@ "dev": true, "license": "MIT" }, + "node_modules/parchment": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/parchment/-/parchment-3.0.0.tgz", + "integrity": "sha512-HUrJFQ/StvgmXRcQ1ftY6VEZUq3jA2t9ncFN4F84J/vN0/FPpQF+8FKXb3l6fLces6q0uOHj6NJn+2xvZnxO6A==", + "license": "BSD-3-Clause" + }, "node_modules/path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", @@ -3538,6 +3576,35 @@ "url": "https://opencollective.com/preact" } }, + "node_modules/quill": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/quill/-/quill-2.0.3.tgz", + "integrity": "sha512-xEYQBqfYx/sfb33VJiKnSJp8ehloavImQ2A6564GAbqG55PGw1dAWUn1MUbQB62t0azawUS2CZZhWCjO8gRvTw==", + "license": "BSD-3-Clause", + "dependencies": { + "eventemitter3": "^5.0.1", + "lodash-es": "^4.17.21", + "parchment": "^3.0.0", + "quill-delta": "^5.1.0" + }, + "engines": { + "npm": ">=8.2.3" + } + }, + "node_modules/quill-delta": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/quill-delta/-/quill-delta-5.1.0.tgz", + "integrity": "sha512-X74oCeRI4/p0ucjb5Ma8adTXd9Scumz367kkMK5V/IatcX6A0vlgLgKbzXWy5nZmCGeNJm2oQX0d2Eqj+ZIlCA==", + "license": "MIT", + "dependencies": { + "fast-diff": "^1.3.0", + "lodash.clonedeep": "^4.5.0", + "lodash.isequal": "^4.5.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, "node_modules/readdirp": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", diff --git a/public/_redirects b/public/_redirects new file mode 100644 index 0000000..c9f195e --- /dev/null +++ b/public/_redirects @@ -0,0 +1,58 @@ +# Netlify Redirects for Concept Dashboard +# This file maps the old navigation paths to the actual build output + +# Dashboard pages +/pages/dashboards/finance.html /dashboard-finance.html 200 +/pages/dashboards/sales.html /dashboard-sales.html 200 +/pages/dashboards/influencer.html /dashboard-influencer.html 200 + +# UI Elements +/pages/ui-elements/cards.html /ui-cards.html 200 +/pages/ui-elements/general.html /ui-general.html 200 +/pages/ui-elements/typography.html /ui-typography.html 200 + +# Forms +/pages/form-elements.html /form-elements.html 200 +/pages/form-validation.html /form-validation.html 200 +/pages/multiselect.html /multiselect.html 200 + +# Charts +/pages/charts/index.html /charts.html 200 + +# Tables +/pages/tables/general-tables.html /general-tables.html 200 +/pages/tables/data-tables.html /data-tables.html 200 + +# E-commerce +/pages/ecommerce/products.html /products.html 200 +/pages/ecommerce/product-single.html /product-single.html 200 +/pages/ecommerce/checkout.html /checkout.html 200 + +# Apps +/pages/apps/influencer-finder.html /influencer-finder.html 200 +/pages/apps/influencer-profile.html /influencer-profile.html 200 + +# Other pages +/pages/calendar.html /calendar.html 200 +/pages/chat.html /chat.html 200 +/pages/inbox.html /inbox.html 200 +/pages/users.html /users.html 200 +/pages/timeline.html /timeline.html 200 +/pages/settings.html /settings.html 200 + +# Auth pages +/pages/auth/login.html /login.html 200 +/pages/auth/signup.html /signup.html 200 +/pages/auth/forgot-password.html /forgot-password.html 200 + +# Misc pages +/pages/misc/blank-page.html /blank-page.html 200 +/pages/misc/404.html /404.html 200 + +# Email pages (if they exist in build) +/pages/email/inbox.html /inbox.html 200 +/pages/email/compose.html /compose.html 200 +/pages/email/details.html /details.html 200 + +# Catch all - for any other routes, serve index.html (for SPA behavior if needed) +/* /index.html 200 \ No newline at end of file diff --git a/scripts/fix-navigation-links.js b/scripts/fix-navigation-links.js new file mode 100755 index 0000000..82153a1 --- /dev/null +++ b/scripts/fix-navigation-links.js @@ -0,0 +1,136 @@ +#!/usr/bin/env node + +/** + * Fix Navigation Links Script + * Updates all navigation links to match Vite's build output + */ + +import fs from 'fs'; +import path from 'path'; +import { fileURLToPath } from 'url'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); + +// Define link mappings +const linkMappings = [ + // Dashboard pages + { from: '/pages/dashboards/finance.html', to: '/dashboard-finance.html' }, + { from: '/pages/dashboards/sales.html', to: '/dashboard-sales.html' }, + { from: '/pages/dashboards/influencer.html', to: '/dashboard-influencer.html' }, + + // UI Elements + { from: '/pages/ui-elements/cards.html', to: '/ui-cards.html' }, + { from: '/pages/ui-elements/general.html', to: '/ui-general.html' }, + { from: '/pages/ui-elements/typography.html', to: '/ui-typography.html' }, + + // Forms + { from: '/pages/form-elements.html', to: '/form-elements.html' }, + { from: '/pages/form-validation.html', to: '/form-validation.html' }, + { from: '/pages/multiselect.html', to: '/multiselect.html' }, + + // Charts + { from: '/pages/charts/index.html', to: '/charts.html' }, + + // Tables + { from: '/pages/tables/general-tables.html', to: '/general-tables.html' }, + { from: '/pages/tables/data-tables.html', to: '/data-tables.html' }, + + // E-commerce + { from: '/pages/ecommerce/products.html', to: '/products.html' }, + { from: '/pages/ecommerce/product-single.html', to: '/product-single.html' }, + { from: '/pages/ecommerce/checkout.html', to: '/checkout.html' }, + + // Apps + { from: '/pages/apps/influencer-finder.html', to: '/influencer-finder.html' }, + { from: '/pages/apps/influencer-profile.html', to: '/influencer-profile.html' }, + + // Other pages + { from: '/pages/calendar.html', to: '/calendar.html' }, + { from: '/pages/chat.html', to: '/chat.html' }, + { from: '/pages/inbox.html', to: '/inbox.html' }, + { from: '/pages/users.html', to: '/users.html' }, + { from: '/pages/timeline.html', to: '/timeline.html' }, + { from: '/pages/settings.html', to: '/settings.html' }, + + // Auth pages + { from: '/pages/auth/login.html', to: '/login.html' }, + { from: '/pages/auth/signup.html', to: '/signup.html' }, + { from: '/pages/auth/forgot-password.html', to: '/forgot-password.html' }, + + // Misc pages + { from: '/pages/misc/blank-page.html', to: '/blank-page.html' }, + { from: '/pages/misc/404.html', to: '/404.html' }, +]; + +// Files to update +const filesToUpdate = [ + 'src/partials/layouts/sidebar.hbs', + 'src/partials/layouts/header.hbs', + 'src/index.html', + // Add any other files that contain navigation links +]; + +// Add all HTML files in pages directory +function findHtmlFiles(dir) { + const files = []; + const items = fs.readdirSync(dir, { withFileTypes: true }); + + for (const item of items) { + const fullPath = path.join(dir, item.name); + if (item.isDirectory()) { + files.push(...findHtmlFiles(fullPath)); + } else if (item.name.endsWith('.html') || item.name.endsWith('.hbs')) { + files.push(fullPath); + } + } + + return files; +} + +// Add all HTML files from src/pages +const pagesDir = path.join(__dirname, '..', 'src', 'pages'); +if (fs.existsSync(pagesDir)) { + filesToUpdate.push(...findHtmlFiles(pagesDir).map(f => path.relative(path.join(__dirname, '..'), f))); +} + +// Update links in files +function updateLinks(filePath) { + const fullPath = path.join(__dirname, '..', filePath); + + if (!fs.existsSync(fullPath)) { + console.log(`āš ļø File not found: ${filePath}`); + return; + } + + let content = fs.readFileSync(fullPath, 'utf8'); + let updated = false; + + linkMappings.forEach(({ from, to }) => { + const regex = new RegExp(`href=["']${from.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}["']`, 'g'); + if (content.match(regex)) { + content = content.replace(regex, `href="${to}"`); + updated = true; + } + }); + + if (updated) { + fs.writeFileSync(fullPath, content); + console.log(`āœ… Updated: ${filePath}`); + } else { + console.log(`ā­ļø No changes needed: ${filePath}`); + } +} + +// Main execution +console.log('šŸ”§ Fixing navigation links to match Vite build output...\n'); + +filesToUpdate.forEach(file => { + updateLinks(file); +}); + +console.log('\n✨ Navigation links have been updated!'); +console.log('\nNext steps:'); +console.log('1. Run "npm run build" to build the project'); +console.log('2. Run "npm run preview" to test locally'); +console.log('3. Deploy the dist folder to your hosting service'); \ No newline at end of file diff --git a/src/pages/apps/influencer-finder.html b/src/pages/apps/influencer-finder.html index 9d58731..f51e177 100644 --- a/src/pages/apps/influencer-finder.html +++ b/src/pages/apps/influencer-finder.html @@ -22,7 +22,7 @@ @@ -94,7 +94,7 @@ - View Profile + View Profile @@ -183,7 +183,7 @@ - View Profile + View Profile @@ -272,7 +272,7 @@ - View Profile + View Profile @@ -361,7 +361,7 @@ - View Profile + View Profile diff --git a/src/pages/apps/influencer-profile.html b/src/pages/apps/influencer-profile.html index 5a1a04a..feeff94 100644 --- a/src/pages/apps/influencer-profile.html +++ b/src/pages/apps/influencer-profile.html @@ -22,7 +22,7 @@ diff --git a/src/pages/auth/forgot-password.html b/src/pages/auth/forgot-password.html index 3da10f4..313ea11 100644 --- a/src/pages/auth/forgot-password.html +++ b/src/pages/auth/forgot-password.html @@ -47,7 +47,7 @@
- + Back to login
@@ -72,7 +72,7 @@

- + Back to login
@@ -84,7 +84,7 @@

Remember your password? - Login + Login

diff --git a/src/pages/auth/login.html b/src/pages/auth/login.html index 944b024..a2ec5f3 100644 --- a/src/pages/auth/login.html +++ b/src/pages/auth/login.html @@ -32,7 +32,7 @@
- Forgot password? + Forgot password?
Don't have an account? - Sign up + Sign up
diff --git a/src/pages/auth/signup.html b/src/pages/auth/signup.html index bb4f835..7520aad 100644 --- a/src/pages/auth/signup.html +++ b/src/pages/auth/signup.html @@ -100,7 +100,7 @@
Already have an account? - Sign in + Sign in
diff --git a/src/pages/ecommerce/checkout.html b/src/pages/ecommerce/checkout.html index 7c03f25..9862c67 100644 --- a/src/pages/ecommerce/checkout.html +++ b/src/pages/ecommerce/checkout.html @@ -22,7 +22,7 @@ diff --git a/src/pages/ecommerce/product-single.html b/src/pages/ecommerce/product-single.html index 650265a..330d912 100644 --- a/src/pages/ecommerce/product-single.html +++ b/src/pages/ecommerce/product-single.html @@ -22,7 +22,7 @@ diff --git a/src/pages/ecommerce/products.html b/src/pages/ecommerce/products.html index 2314f28..815c678 100644 --- a/src/pages/ecommerce/products.html +++ b/src/pages/ecommerce/products.html @@ -164,7 +164,7 @@
- Apple iPhone 15 Pro + Apple iPhone 15 Pro
@@ -208,7 +208,7 @@
- MacBook Pro 16" + MacBook Pro 16"
@@ -250,7 +250,7 @@
- Sony WH-1000XM5 + Sony WH-1000XM5
@@ -293,7 +293,7 @@
- Samsung Galaxy S24 + Samsung Galaxy S24
@@ -335,7 +335,7 @@
- Dell XPS 13 + Dell XPS 13
@@ -377,7 +377,7 @@
- iPad Pro 12.9" + iPad Pro 12.9"
@@ -418,7 +418,7 @@
- Canon EOS R6 + Canon EOS R6
@@ -460,7 +460,7 @@
- PlayStation 5 + PlayStation 5
diff --git a/src/pages/misc/404.html b/src/pages/misc/404.html index 83934f9..5651dc4 100644 --- a/src/pages/misc/404.html +++ b/src/pages/misc/404.html @@ -81,7 +81,7 @@

Dashboard

- +

Settings

diff --git a/src/partials/layouts/sidebar.hbs b/src/partials/layouts/sidebar.hbs index 85d172f..27d728e 100644 --- a/src/partials/layouts/sidebar.hbs +++ b/src/partials/layouts/sidebar.hbs @@ -21,13 +21,13 @@ E-Commerce
@@ -44,13 +44,13 @@ @@ -58,7 +58,7 @@ @@ -75,13 +75,13 @@ @@ -98,10 +98,10 @@ @@ -119,13 +119,13 @@ @@ -146,19 +146,19 @@ @@ -176,13 +176,13 @@ @@ -199,10 +199,10 @@ @@ -214,21 +214,21 @@