Overview
TheService interface represents a product or service offering in the VENCOL catalog. It provides comprehensive data for displaying solutions in both listing and detail views, including descriptions, features, images, and icons.
Type Definition
source/types.ts:19-33
Properties
string
required
Unique identifier for the service. Used for React keys and data lookups.
string
required
URL-friendly identifier for routing (e.g.,
"bolsas-termoencogibles-cryovac" becomes /soluciones/bolsas-termoencogibles-cryovac).string
required
Full display title of the service shown in detail pages and cards.
string
required
Short description displayed in listing cards and previews. Keep concise (1-2 sentences).
string
required
Extended description with detailed information about the service, displayed on the detail page.
string
required
First section subtitle in the detail view for organizing content into themed sections.
string
required
Content for the first subtitle section, providing detailed information about that aspect.
string
required
Second section subtitle in the detail view for additional content organization.
string
required
Content for the second subtitle section with complementary information.
LucideIcon
required
React component reference from
lucide-react library. Used for visual representation in cards and menus.Common icons: Package, Layers, Droplets, Tag, PenToolstring[]
required
Array of key features or benefits. Each string represents one bullet point.
string[]
required
Array of image URLs for the service. First image typically used as hero, others in gallery.
Shortened title for dropdown menus and navigation where space is limited.
Usage Examples
Complete Service Definition
Here’s a real example of a service object from the VENCOL application:source/data/data.tsx:276-299
Service Array for Solutions Catalog
source/data/solutions.tsx:4-85
Rendering Service in Dropdown Menu
source/components/Navbar.tsx:78-87
Using Icon Component
Icon Reference
Common Lucide icons used in the VENCOL services:- Package - Bolsas termoencogibles
- Layers - Film de empaque termoformado
- Droplets - Absorbentes tipo almohadilla
- Tag - Foils para etiquetas
- PenTool - Foils de marcación
lucide-react:
Content Strategy
Description vs Long Description
Description vs Long Description
- description: 1-2 sentences, focusing on key benefits (shown in cards)
- longDescription: 2-3 paragraphs with technical details and use cases (shown on detail page)
Organizing Subtitles
Organizing Subtitles
Use subtitle sections to break down complex product information:
- subtitle1: Often focuses on technical capabilities
- subtitle2: Often focuses on business benefits or applications
Feature Best Practices
Feature Best Practices
- Keep each feature to one line if possible
- Lead with benefit, follow with technical detail
- Use 4-6 features for optimal readability
- Format consistently (e.g., all start with action verbs)
Image Guidelines
Image Guidelines
- First image in array is typically the hero/primary image
- Include 2-4 images total
- Use high-quality product photography
- Ensure images are web-optimized (WebP format recommended)
Related Types
- NavLink - Used for simple navigation items
- BlogPost - Similar content structure for blog articles
TypeScript Notes
- All fields are required (no optional properties)
- The
iconproperty requires a React component type fromlucide-react - Arrays (
features,images) can be empty but should be defined - The
LucideIcontype is imported from"lucide-react"