Mobile App Wireframe Kit
Run ID: 69cca4f03e7fb09ff16a3cc22026-04-01Design
PantheraHive BOS
BOS Dashboard

Generate a complete mobile app wireframe specification with screen flows, component library, interaction patterns, and developer handoff notes.

Mobile App Wireframe Kit: Detailed Study Plan

This document outlines a comprehensive, 4-week study plan designed for individuals looking to master the creation and utilization of Mobile App Wireframe Kits. Whether you are an aspiring UI/UX designer, product manager, developer, or simply keen to understand the foundations of mobile app design, this plan will equip you with the necessary knowledge and practical skills.


1. Introduction & Overall Goal

Purpose: This study plan provides a structured approach to learning the principles, tools, and best practices for developing effective mobile app wireframes and organizing them into a reusable wireframe kit.

Target Audience:

  • Aspiring UI/UX Designers
  • Product Managers
  • Business Analysts
  • Developers interested in design
  • Anyone looking to improve their understanding of mobile app design foundations

Overall Goal: By the end of this 4-week program, you will be able to:

  • Understand the role and importance of wireframing in the product development lifecycle.
  • Apply core UX principles to design user-centric mobile app layouts.
  • Create low-to-mid fidelity wireframes and interactive prototypes for mobile applications.
  • Organize wireframes into a structured, reusable component library (a "Wireframe Kit").
  • Effectively document and prepare wireframes for developer handoff.

2. Weekly Schedule & Learning Objectives

This plan suggests dedicating approximately 8-12 hours per week to learning and practice.


Week 1: Foundations of Wireframing & UX Principles

Learning Objectives:

  • Understand Wireframing: Define what wireframes are, their purpose, different fidelities (low, mid, high), and their role in the design process.
  • Grasp Core UX Principles: Learn about usability, accessibility, user-centered design, information architecture, and common design heuristics.
  • Introduction to User Research: Understand basic user research methods (e.g., user interviews, surveys, persona creation) and how they inform wireframing.
  • Tool Familiarization: Get acquainted with a chosen wireframing tool (e.g., Figma, Sketch, Adobe XD) by learning basic shapes, text, and grouping functionalities.

Recommended Activities:

  • Read foundational articles on UX design and wireframing.
  • Watch introductory tutorials for your chosen wireframing tool.
  • Practice creating basic shapes and text elements.
  • Analyze existing popular mobile apps to identify common layouts and components.

Week 2: Wireframe Components & Interaction Patterns

Learning Objectives:

  • Master Common UI Components: Identify and understand the function of standard mobile UI elements (buttons, input fields, navigation bars, tabs, cards, lists, modals, etc.).
  • Explore Interaction Patterns: Learn about common mobile interaction patterns (onboarding flows, search, filtering, sorting, data entry, error states, confirmations).
  • Design Screen Flows: Translate user stories or tasks into logical, multi-screen wireframe flows.
  • Responsive Design Basics: Understand the importance of designing for different screen sizes and orientations (though wireframes focus on structure, keep responsiveness in mind).

Recommended Activities:

  • Study UI pattern libraries and design systems (e.g., Material Design, Apple Human Interface Guidelines).
  • Practice wireframing various common UI components.
  • Choose a simple mobile app idea (e.g., a to-do list, a recipe app) and wireframe a key user flow (e.g., adding a new item, viewing a recipe).
  • Experiment with different layout structures for the same content.

Week 3: Prototyping, Feedback & Iteration

Learning Objectives:

  • Create Interactive Prototypes: Learn to link wireframe screens together to create basic interactive prototypes within your chosen tool.
  • Understand Prototyping Fidelity: Differentiate between low-fidelity and mid-fidelity prototypes and when to use each.
  • Basic Usability Testing: Learn how to conduct informal usability tests (e.g., with friends/family) to gather initial feedback.
  • Iterate Designs: Understand the importance of feedback and how to incorporate it to refine and improve wireframes.

Recommended Activities:

  • Convert the wireframe flow from Week 2 into an interactive prototype.
  • Develop a simple script for a usability test and conduct it with at least 2-3 people.
  • Document the feedback received and identify areas for improvement.
  • Apply the feedback to iterate on your wireframes and prototype.
  • Explore different animation and transition options within your prototyping tool.

Week 4: Wireframe Kit Organization & Handoff

Learning Objectives:

  • Build a Component Library: Learn to create reusable components (e.g., buttons, input fields, navigation bars) and organize them into a structured library within your tool.
  • Establish Naming Conventions: Understand the importance of consistent naming for layers, components, and files for better organization and collaboration.
  • Annotation & Documentation: Learn to add clear annotations and specifications to wireframes for developer understanding.
  • Developer Handoff Best Practices: Understand the process of preparing wireframes for developers, including asset export, specification generation, and communication.
  • Version Control Basics: Learn basic strategies for managing different versions of your wireframes.

Recommended Activities:

  • Take all the components and screens you've created and organize them into a "Wireframe Kit" or design system within your tool.
  • Create detailed annotations for your final wireframe flow, explaining functionality and interaction.
  • Practice preparing your wireframes for developer handoff using your tool's features (e.g., Figma Dev Mode, Sketch Cloud, Adobe XD Share for Development).
  • Research tools specifically for developer handoff (e.g., Zeplin, Supernova).

3. Recommended Resources

Books:

  • "Don't Make Me Think, Revisited" by Steve Krug (UX/Usability)
  • "The Design of Everyday Things" by Don Norman (Design Principles)
  • "About Face: The Essentials of Interaction Design" by Alan Cooper et al. (Interaction Patterns)
  • "Lean UX: Applying Lean Principles to Improve User Experience" by Jeff Gothelf & Josh Seiden (Agile UX)

Online Courses & Tutorials:

  • Figma: Figma Learn (official), Udemy/Coursera courses on Figma UI/UX.
  • Sketch: Sketch Tutorials (official), Udemy/Coursera courses on Sketch.
  • Adobe XD: Adobe XD Learn (official), Udemy/Coursera courses on Adobe XD.
  • General UX/Wireframing: Interaction Design Foundation, Nielsen Norman Group articles, Coursera/edX courses on UX Design.

Websites & Blogs:

  • Nielsen Norman Group (NN/g): In-depth articles on usability, UX research, and design.
  • Smashing Magazine: Articles on web and mobile design, UX, and development.
  • UX Planet (Medium): Collection of UX articles from various designers.
  • Mobbin.design / UI-patterns.com: Libraries of mobile UI patterns and flows from existing apps.
  • Material Design (Google) / Apple Human Interface Guidelines: Official design systems and guidelines.

Tools (Choose one primary tool):

  • Figma: Cloud-based, collaborative, excellent for wireframing, prototyping, and design systems. (Highly recommended)
  • Sketch: Mac-only, robust for UI design, requires plugins for full collaboration.
  • Adobe XD: Part of Adobe Creative Cloud, good for wireframing and prototyping.

4. Milestones

  • End of Week 1: Create low-fidelity wireframes for 3 distinct screens of a chosen mobile app, demonstrating understanding of basic layout and content hierarchy.
  • End of Week 2: Design a complete, multi-screen wireframe flow (e.g., user login, product browsing, checkout) for a specific user task, incorporating various UI components.
  • End of Week 3: Develop an interactive prototype of the wireframe flow from Week 2 and conduct an informal usability test, documenting feedback.
  • End of Week 4: Assemble a "Mini Wireframe Kit" including at least 5 reusable components and a documented wireframe flow with annotations ready for developer handoff.

5. Assessment Strategies

  • Self-Assessment: Regularly review your wireframes against UX principles, guidelines, and feedback. Ask yourself: Is it clear? Is it intuitive? Does it solve the user's problem?
  • Peer Review: Share your wireframes and prototypes with peers, friends, or online communities (e.g., Reddit's r/userexperience, design Discord servers) for constructive criticism.
  • Project-Based Evaluation: The milestones serve as practical projects. Evaluate your work based on completeness, adherence to objectives, and the quality of your output.
  • Portfolio Building: As you complete each milestone, curate your best work. This not only serves as a self-assessment of your progress but also starts building a foundational portfolio.
  • Tool Proficiency Check: Regularly challenge yourself to use new features within your chosen wireframing tool to ensure you're leveraging its full capabilities.

This detailed study plan provides a solid framework for anyone embarking on their journey to master mobile app wireframing. Consistent practice and critical self-reflection are key to success. Good luck!

gemini Output

Mobile App Wireframe Kit: Detailed Specification & Developer Handoff

This document provides a comprehensive wireframe specification for a mobile application, encompassing screen flows, a component library, interaction patterns, and essential developer handoff notes. The goal is to provide a clear, structured blueprint for the application's user experience and foundational UI elements, facilitating efficient development.


1. Introduction & Overview

This specification serves as the foundational blueprint for the mobile application's user interface and experience. It outlines the core screens, user journeys, reusable UI components, and interaction paradigms at a wireframe fidelity, focusing on functionality, layout, and user flow rather than visual design.

Purpose:

  • To define the application's structure and key user flows.
  • To establish a consistent set of UI components.
  • To communicate interaction behaviors and system responses.
  • To provide a clear, actionable guide for development teams.

Target Audience:

  • Product Managers
  • UI/UX Designers
  • Mobile Application Developers (iOS, Android, Cross-platform)
  • QA Engineers

Scope:

This document details the wireframe-level specification. Visual design, branding, and high-fidelity mockups are outside the scope of this particular deliverable but will build upon this foundation.


2. Wireframe Specification (Structured Data - JSON)

This section provides a machine-readable JSON representation of the wireframe specification. This structured format allows for programmatic processing, integration with design tools, or automated documentation generation. It defines screens, their components, and navigation logic.

For illustrative purposes, we will model a simplified "Task Manager" application.


{
  "app_name": "Panthera Tasks",
  "version": "1.0.0-wireframe",
  "description": "A simple mobile task management application wireframe specification.",
  "metadata": {
    "author": "PantheraHive AI",
    "date_generated": "2023-10-27",
    "tool": "gemini-generate_code"
  },
  "components": [
    {
      "id": "button_primary",
      "name": "Primary Button",
      "type": "button",
      "description": "Main call-to-action button.",
      "states": ["default", "pressed", "disabled", "loading"],
      "properties": {
        "text": "String",
        "icon_left": "Optional Icon Name",
        "icon_right": "Optional Icon Name"
      }
    },
    {
      "id": "button_secondary",
      "name": "Secondary Button",
      "type": "button",
      "description": "Alternative action button, less prominent.",
      "states": ["default", "pressed", "disabled"],
      "properties": {
        "text": "String"
      }
    },
    {
      "id": "input_text",
      "name": "Text Input Field",
      "type": "input",
      "description": "Single line text input.",
      "states": ["default", "focused", "error", "disabled"],
      "properties": {
        "label": "String",
        "placeholder": "String",
        "keyboard_type": "text | number | email | password",
        "is_required": "Boolean"
      }
    },
    {
      "id": "input_textarea",
      "name": "Multiline Text Input Field",
      "type": "input",
      "description": "Multiline text input for descriptions.",
      "states": ["default", "focused", "error", "disabled"],
      "properties": {
        "label": "String",
        "placeholder": "String",
        "min_lines": "Number",
        "max_lines": "Number"
      }
    },
    {
      "id": "checkbox",
      "name": "Checkbox",
      "type": "selection",
      "description": "A single checkbox for binary selection.",
      "states": ["checked", "unchecked", "disabled"],
      "properties": {
        "label": "String"
      }
    },
    {
      "id": "list_item_task",
      "name": "Task List Item",
      "type": "list_item",
      "description": "Displays a single task with title, due date, and completion status.",
      "properties": {
        "task_title": "String",
        "due_date": "String (e.g., 'Today', 'Tomorrow', 'Oct 28')",
        "is_completed": "Boolean",
        "priority_indicator": "Optional (e.g., 'high', 'medium', 'low')"
      }
    },
    {
      "id": "top_app_bar",
      "name": "Top App Bar",
      "type": "navigation",
      "description": "Standard top bar with title and optional actions.",
      "properties": {
        "title": "String",
        "left_icon": "Optional Icon Name (e.g., 'back', 'menu')",
        "right_actions": "Array of {icon: String, action: String}"
      }
    },
    {
      "id": "bottom_nav_bar",
      "name": "Bottom Navigation Bar",
      "type": "navigation",
      "description": "Standard bottom navigation for primary sections.",
      "properties": {
        "items": "Array of {label: String, icon: String, screen_id: String}"
      }
    },
    {
      "id": "fab",
      "name": "Floating Action Button",
      "type": "button",
      "description": "Prominent action button, typically for creating new content.",
      "properties": {
        "icon": "Icon Name",
        "action": "String (e.g., 'add_task')"
      }
    }
  ],
  "screens": [
    {
      "id": "splash_screen",
      "name": "Splash Screen",
      "description": "Initial loading screen.",
      "layout": [
        {"component_id": "text", "properties": {"content": "Panthera Tasks"}},
        {"component_id": "spinner", "properties": {"size": "large"}}
      ],
      "transitions": [
        {"event": "on_load_complete", "target_screen_id": "task_list_screen", "delay_ms": 1500}
      ]
    },
    {
      "id": "task_list_screen",
      "name": "Task List",
      "description": "Displays all tasks, filterable by status.",
      "layout": [
        {"component_id": "top_app_bar", "properties": {"title": "My Tasks", "left_icon": "menu", "right_actions": [{"icon": "search", "action": "search_tasks"}, {"icon": "filter", "action": "filter_tasks"}]}},
        {"component_id": "segment_control", "properties": {"options": ["All", "Pending", "Completed"], "selected_index": 0, "action": "filter_tasks_by_status"}},
        {"component_id": "list_container", "properties": {
          "items_data_source": "tasks_data",
          "item_template_id": "list_item_task"
        }},
        {"component_id": "fab", "properties": {"icon": "add", "action": "navigate_to_add_task"}},
        {"component_id": "bottom_nav_bar", "properties": {"items": [
          {"label": "Tasks", "icon": "list", "screen_id": "task_list_screen"},
          {"label": "Settings", "icon": "settings", "screen_id": "settings_screen"}
        ]}}
      ],
      "interactions": [
        {"component_id": "list_item_task", "event": "on_tap", "action": "navigate_to_task_detail", "payload_key": "task_id"},
        {"component_id": "list_item_task", "event": "on_swipe_left", "action": "delete_task", "confirm_dialog": true},
        {"component_id": "list_item_task", "event": "on_swipe_right", "action": "mark_task_complete_toggle"}
      ],
      "transitions": [
        {"event": "navigate_to_add_task", "target_screen_id": "add_edit_task_screen"},
        {"event": "navigate_to_task_detail", "target_screen_id": "task_detail_screen"}
      ]
    },
    {
      "id": "add_edit_task_screen",
      "name": "Add/Edit Task",
      "description": "Form for creating or modifying a task.",
      "layout": [
        {"component_id": "top_app_bar", "properties": {"title": "Add Task", "left_icon": "back", "right_actions": [{"icon": "save", "action": "save_task"}]}},
        {"component_id": "input_text", "properties": {"label": "Task Title", "placeholder": "e.g., Buy groceries", "is_required": true}},
        {"component_id": "input_textarea", "properties": {"label": "Description", "placeholder": "Optional details..."}},
        {"component_id": "date_picker", "properties": {"label": "Due Date", "placeholder": "Select Date", "action": "open_date_picker"}},
        {"component_id": "checkbox", "properties": {"label": "Mark as High Priority", "default_value": false}},
        {"component_id": "button_primary", "properties": {"text": "Save Task", "action": "save_task"}}
      ],
      "interactions": [
        {"component_id": "button_primary", "event": "on_tap", "action": "validate_and_save_task", "success_transition": "task_list_screen"}
      ],
      "transitions": [
        {"event": "on_back_pressed", "target_screen_id": "task_list_screen"}
      ]
    },
    {
      "id": "task_detail_screen",
      "name": "Task Detail",
      "description": "View full details of a single task.",
      "layout": [
        {"component_id": "top_app_bar", "properties": {"title": "Task Details", "left_icon": "back", "right_actions": [{"icon": "edit", "action": "edit_task"}, {"icon": "delete", "action": "delete_task"}]}},
        {"component_id": "text", "properties": {"content": "Task Title: [Dynamic Task Title]", "style": "headline"}},
        {"component_id": "text", "properties": {"content": "Description: [Dynamic Task Description]"}},
        {"component_id": "text", "properties": {"content": "Due Date: [Dynamic Due Date]"}},
        {"component_id": "checkbox", "properties": {"label": "Completed", "is_checked": "[Dynamic Completion Status]", "is_disabled": true}},
        {"component_id": "button_secondary", "properties": {"text": "Mark as Complete", "action": "mark_task_complete_toggle"}}
      ],
      "interactions": [
        {"component_id": "top_app_bar", "event": "on_right_action_edit", "action": "navigate_to_edit_task", "payload_key": "task_id"},
        {"component_id": "top_app_bar", "event": "on_right_action_delete", "action": "show_confirm_delete_dialog"}
      ],
      "transitions": [
        {"event": "navigate_to_edit_task", "target_screen_id": "add_edit_task_screen"},
        {"event": "on_back_pressed", "target_screen_id": "task_list_screen"}
      ]
    },
    {
      "id": "settings_screen",
      "name": "Settings",
      "description": "Application settings and preferences.",
      "layout": [
        {"component_id": "top_app_bar", "properties": {"title": "Settings", "left_icon": "back"}},
        {"component_id": "list_item", "properties": {"label": "Notifications", "action": "navigate_to_notification_settings"}},
        {"component_id": "list_item", "properties": {"label": "Account", "action": "navigate_to_account_settings"}},
        {"component_id": "list_item", "properties": {"label": "About", "action": "navigate_to_about_screen"}},
        {"component_id": "bottom_nav_bar", "properties": {"items": [
          {"label": "Tasks", "icon": "list", "screen_id": "task_list_screen"},
          {"label": "Settings", "icon": "settings", "screen_id": "settings_screen"}
        ]}}
      ],
      "transitions": [
        {"event": "on_back_pressed", "target_screen_id": "task_list_screen"}
      ]
    }
  ],
  "flows": [
    {
      "id": "onboarding_flow",
      "name": "App Launch to Main
gemini Output

Mobile App Wireframe Specification Kit: Service Booking & Management App

Date: October 26, 2023

Version: 1.0

Prepared For: [Customer Name/Company]


1. Introduction & Purpose

This document provides a comprehensive wireframe specification kit for a mobile application, outlining the core structure, user flows, interactive elements, and essential development considerations. The purpose of this kit is to establish a foundational blueprint for the app's user experience (UX) and functionality, serving as a critical reference point for subsequent UI design, prototyping, and development phases.

This specification aims to:

  • Clearly define the app's key screens and their interconnections.
  • Establish a consistent library of UI components.
  • Detail standard interaction patterns for a smooth user experience.
  • Provide actionable notes for developers to ensure accurate implementation.

2. Table of Contents

  1. Introduction & Purpose
  2. Table of Contents
  3. App Overview & Scope
  4. Screen Flows (User Journeys)

* 4.1. Onboarding & Account Creation

* 4.2. Service Browsing & Booking

* 4.3. Managing Bookings & Profile

* 4.4. Provider Interaction (Chat/Support)

  1. Component Library

* 5.1. Navigation Components

* 5.2. Input & Selection Controls

* 5.3. Buttons & Actions

* 5.4. Content & Display Elements

* 5.5. Feedback & Notification Elements

  1. Interaction Patterns

* 6.1. Tap & Long Press

* 6.2. Swipe & Scroll

* 6.3. Drag & Drop

* 6.4. Pull to Refresh

* 6.5. Loading States

* 6.6. Error Handling

* 6.7. Modals & Sheets

  1. Wireframe Specifications: Key Screen Examples

* 7.1. Splash Screen

* 7.2. Onboarding Screen 1: Welcome

* 7.3. Onboarding Screen 3: Sign Up / Log In

* 7.4. Home / Dashboard Screen

* 7.5. Service Details Screen

* 7.6. Booking Confirmation Screen

* 7.7. My Bookings Screen

* 7.8. Profile Screen

  1. Developer Handoff Notes

* 8.1. General Guidelines

* 8.2. Naming Conventions

* 8.3. Asset Management

* 8.4. Interaction & Animation Details

* 8.5. Error States & Edge Cases

* 8.6. Platform-Specific Considerations

* 8.7. Accessibility

  1. Next Steps & Feedback

3. App Overview & Scope

App Name (Placeholder): ServiceConnect

App Concept: A mobile application that allows users to browse, book, and manage various local services (e.g., home cleaning, plumbing, tutoring, beauty services). It connects users with service providers, facilitates scheduling, payments, and communication.

Target Audience: Individuals seeking convenient access to local services, looking for reliable and vetted service providers.

Key Features:

  • User registration and profile management.
  • Service browsing by category, location, and ratings.
  • Detailed service provider profiles.
  • In-app booking and scheduling.
  • Secure payment processing.
  • Booking history and management.
  • In-app chat with service providers.
  • Ratings and reviews.

4. Screen Flows (User Journeys)

This section outlines key user journeys within the ServiceConnect app, detailing the sequence of screens and primary actions.

4.1. Onboarding & Account Creation

Purpose: To guide new users through the initial setup and allow them to create an account or log in.

  • Flow:

1. Splash Screen: App logo, brief loading animation.

2. Onboarding Screen 1 (Welcome): Welcome message, brief app description, "Get Started" button.

3. Onboarding Screen 2 (Features Tour): Carousel of key features with illustrations/icons, "Next" button.

4. Onboarding Screen 3 (Sign Up / Log In): Options for "Sign Up with Email," "Continue with Google," "Continue with Apple," "Already have an account? Log In."

If Sign Up:* Leads to Registration Screen (Name, Email, Password, Terms & Conditions checkbox).

If Log In:* Leads to Login Screen (Email, Password, "Forgot Password?").

5. Location Permission Request Screen: Explains why location is needed, "Allow Access" / "Maybe Later."

6. Home / Dashboard Screen: Upon successful login/registration.

4.2. Service Browsing & Booking

Purpose: To enable users to find a service, view details, and complete a booking.

  • Flow:

1. Home / Dashboard Screen: Displays categories, featured services, search bar.

2. Search Results / Category List Screen: Displays a list of services based on search query or selected category. Filters/Sort options available.

3. Service Details Screen: Comprehensive information about a specific service (description, price, ratings, provider info, gallery). "Book Now" button.

4. Select Date & Time Screen: Calendar and time slot picker.

5. Add Details / Notes Screen: Text area for specific instructions, confirmation of address.

6. Payment Method Screen: Select existing card or "Add New Card."

7. Booking Confirmation Screen: Review booking summary, total cost, payment method. "Confirm Booking" button.

8. Booking Success Screen: Confirmation message, booking ID, "View Booking" / "Go to Home" options.

4.3. Managing Bookings & Profile

Purpose: To allow users to review past/upcoming bookings and manage their personal information.

  • Flow:

1. Home / Dashboard Screen: Access "My Bookings" via bottom navigation or profile icon.

2. My Bookings Screen: Tabs for "Upcoming," "Completed," "Cancelled." Lists each booking with key details.

3. Individual Booking Details Screen: Detailed view of a specific booking. Options: "Reschedule," "Cancel," "Chat with Provider," "Leave Review" (for completed).

4. Home / Dashboard Screen: Access "Profile" via bottom navigation or profile icon.

5. Profile Screen: Displays user info, options to "Edit Profile," "Payment Methods," "Addresses," "Notifications," "Settings," "Help," "Log Out."

6. Edit Profile Screen: Editable fields for Name, Email, Phone, Profile Picture. "Save Changes" button.

4.4. Provider Interaction (Chat/Support)

Purpose: To facilitate communication between users and service providers or customer support.

  • Flow:

1. Individual Booking Details Screen: "Chat with Provider" button.

2. Chat Screen (Provider): Displays chat history, text input field, attachment icon.

3. Profile Screen: "Help & Support" option.

4. Help & Support Screen: FAQs, "Contact Us" (Email, Phone, In-App Chat with Support).

5. Chat Screen (Support): Displays chat history, text input field.


5. Component Library

This section defines the reusable UI components that form the building blocks of the ServiceConnect app, ensuring consistency and efficiency in design and development.

5.1. Navigation Components

  • Top Bar / Header:

* Elements: App Title/Logo, Back Button (contextual), Hamburger Menu Icon (for global nav), Notification Icon, Search Icon, Profile Avatar.

* Behavior: Fixed at the top, typically with a subtle shadow. Back button navigates to the previous screen.

  • Bottom Navigation Bar:

* Elements: 3-5 primary navigation icons (e.g., Home, Bookings, Favorites, Profile).

* Behavior: Fixed at the bottom, persistent across main sections. Active icon is highlighted.

  • Tabs:

* Elements: Horizontal list of clickable labels (e.g., "Upcoming", "Completed", "Cancelled").

* Behavior: Tapping a tab displays associated content below. Active tab is visually distinct.

  • Drawer / Side Menu (Hamburger Menu):

* Elements: List of secondary navigation items (e.g., Settings, Help, Log Out).

* Behavior: Slides in from the side (left/right) when the hamburger icon is tapped.

5.2. Input & Selection Controls

  • Text Input Field:

* Elements: Label, Placeholder text, Input area, Optional clear button, Error message below.

* States: Default, Focused, Filled, Disabled, Error.

* Types: Single line (text, email, password, phone, number), Multi-line (textarea).

  • Search Bar:

* Elements: Search icon, Placeholder text, Input area, Clear button (when text is present), Optional voice search icon.

* Behavior: On focus, may display recent searches or suggestions.

  • Dropdown / Select:

* Elements: Label, Current selection, Down arrow icon.

* Behavior: Tapping opens a list of options (modal or inline).

  • Checkbox:

* Elements: Square box, Label.

* States: Unchecked, Checked, Indeterminate, Disabled.

  • Radio Button:

* Elements: Circle, Label.

* States: Unselected, Selected, Disabled. (Only one can be selected in a group).

  • Toggle / Switch:

* Elements: Switch control, Label.

* States: Off, On, Disabled.

  • Date Picker / Time Picker:

* Elements: Input field or icon, Calendar/clock interface.

* Behavior: Tapping opens a native or custom picker.

  • Slider:

* Elements: Track, Thumb, Optional value label.

* Behavior: Allows selecting a value within a range.

5.3. Buttons & Actions

  • Primary Button:

* Purpose: Main call to action on a screen.

* States: Default, Hover/Pressed, Disabled, Loading.

  • Secondary / Outline Button:

* Purpose: Less prominent actions, alternatives to primary.

* States: Default, Hover/Pressed, Disabled.

  • Tertiary / Text Button:

* Purpose: Lowest hierarchy actions, often within content (e.g., "Learn More," "Edit").

* States: Default, Hover/Pressed, Disabled.

  • Icon Button:

* Purpose: Action triggered by an icon (e.g., Delete, Share, Favorite).

* States: Default, Pressed.

  • Floating Action Button (FAB):

* Purpose: Prominent, primary action on a screen, often for creation (+).

* Behavior: Fixed position, typically bottom right.

5.4. Content & Display Elements

  • Cards:

* Purpose: Group related information (e.g., service listing, booking summary).

* Elements: Image/icon, Title, Description, Metadata (rating, price), Action buttons.

  • Lists:

* Purpose: Display rows of items (e.g., search results, settings options).

* Elements: Text, Subtext, Icon/Avatar, Accessory (arrow, toggle).

  • Images & Avatars:

* Purpose: Visual content, user profiles.

* Shapes: Square, Rounded corners, Circle.

* States: Loading placeholder, Error placeholder.

  • Badges / Tags:

* Purpose: Small labels for status, categories, or counts (e.g., "New," "Popular," "5 Services").

  • Rating Stars:

* Purpose: Visual representation of ratings (e.g., 4.5 out of 5 stars).

* Elements: Filled and unfilled star icons.

  • Progress Indicators:

* Linear Progress Bar: For definite progress (e.g., upload).

* Circular Progress Indicator: For indefinite loading (spinner).

5.5. Feedback & Notification Elements

  • Toast / Snackbar:

* Purpose: Brief, non-intrusive messages (e.g., "Item added to cart," "Booking confirmed").

* Behavior: Appears temporarily at the bottom, automatically dismisses.

  • Alert Dialog / Modal:

*

mobile_app_wireframe_kit.md
Download as Markdown
Copy all content
Full output as text
Download ZIP
IDE-ready project ZIP
Copy share link
Permanent URL for this run
Get Embed Code
Embed this result on any website
Print / Save PDF
Use browser print dialog
"); var hasSrcMain=Object.keys(extracted).some(function(k){return k.indexOf("src/main")>=0;}); if(!hasSrcMain) zip.file(folder+"src/main."+ext,"import React from 'react' import ReactDOM from 'react-dom/client' import App from './App' import './index.css' ReactDOM.createRoot(document.getElementById('root')!).render( ) "); var hasSrcApp=Object.keys(extracted).some(function(k){return k==="src/App."+ext||k==="App."+ext;}); if(!hasSrcApp) zip.file(folder+"src/App."+ext,"import React from 'react' import './App.css' function App(){ return(

"+slugTitle(pn)+"

Built with PantheraHive BOS

) } export default App "); zip.file(folder+"src/index.css","*{margin:0;padding:0;box-sizing:border-box} body{font-family:system-ui,-apple-system,sans-serif;background:#f0f2f5;color:#1a1a2e} .app{min-height:100vh;display:flex;flex-direction:column} .app-header{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:40px} h1{font-size:2.5rem;font-weight:700} "); zip.file(folder+"src/App.css",""); zip.file(folder+"src/components/.gitkeep",""); zip.file(folder+"src/pages/.gitkeep",""); zip.file(folder+"src/hooks/.gitkeep",""); Object.keys(extracted).forEach(function(p){ var fp=p.startsWith("src/")?p:"src/"+p; zip.file(folder+fp,extracted[p]); }); zip.file(folder+"README.md","# "+slugTitle(pn)+" Generated by PantheraHive BOS. ## Setup ```bash npm install npm run dev ``` ## Build ```bash npm run build ``` ## Open in IDE Open the project folder in VS Code or WebStorm. "); zip.file(folder+".gitignore","node_modules/ dist/ .env .DS_Store *.local "); } /* --- Vue (Vite + Composition API + TypeScript) --- */ function buildVue(zip,folder,app,code,panelTxt){ var pn=pkgName(app); var C=cc(pn); var extracted=extractCode(panelTxt); zip.file(folder+"package.json",'{ "name": "'+pn+'", "version": "0.0.0", "type": "module", "scripts": { "dev": "vite", "build": "vue-tsc -b && vite build", "preview": "vite preview" }, "dependencies": { "vue": "^3.5.13", "vue-router": "^4.4.5", "pinia": "^2.3.0", "axios": "^1.7.9" }, "devDependencies": { "@vitejs/plugin-vue": "^5.2.1", "typescript": "~5.7.3", "vite": "^6.0.5", "vue-tsc": "^2.2.0" } } '); zip.file(folder+"vite.config.ts","import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' import { resolve } from 'path' export default defineConfig({ plugins: [vue()], resolve: { alias: { '@': resolve(__dirname,'src') } } }) "); zip.file(folder+"tsconfig.json",'{"files":[],"references":[{"path":"./tsconfig.app.json"},{"path":"./tsconfig.node.json"}]} '); zip.file(folder+"tsconfig.app.json",'{ "compilerOptions":{ "target":"ES2020","useDefineForClassFields":true,"module":"ESNext","lib":["ES2020","DOM","DOM.Iterable"], "skipLibCheck":true,"moduleResolution":"bundler","allowImportingTsExtensions":true, "isolatedModules":true,"moduleDetection":"force","noEmit":true,"jsxImportSource":"vue", "strict":true,"paths":{"@/*":["./src/*"]} }, "include":["src/**/*.ts","src/**/*.d.ts","src/**/*.tsx","src/**/*.vue"] } '); zip.file(folder+"env.d.ts","/// "); zip.file(folder+"index.html"," "+slugTitle(pn)+"
"); var hasMain=Object.keys(extracted).some(function(k){return k==="src/main.ts"||k==="main.ts";}); if(!hasMain) zip.file(folder+"src/main.ts","import { createApp } from 'vue' import { createPinia } from 'pinia' import App from './App.vue' import './assets/main.css' const app = createApp(App) app.use(createPinia()) app.mount('#app') "); var hasApp=Object.keys(extracted).some(function(k){return k.indexOf("App.vue")>=0;}); if(!hasApp) zip.file(folder+"src/App.vue"," "); zip.file(folder+"src/assets/main.css","*{margin:0;padding:0;box-sizing:border-box}body{font-family:system-ui,sans-serif;background:#fff;color:#213547} "); zip.file(folder+"src/components/.gitkeep",""); zip.file(folder+"src/views/.gitkeep",""); zip.file(folder+"src/stores/.gitkeep",""); Object.keys(extracted).forEach(function(p){ var fp=p.startsWith("src/")?p:"src/"+p; zip.file(folder+fp,extracted[p]); }); zip.file(folder+"README.md","# "+slugTitle(pn)+" Generated by PantheraHive BOS. ## Setup ```bash npm install npm run dev ``` ## Build ```bash npm run build ``` Open in VS Code or WebStorm. "); zip.file(folder+".gitignore","node_modules/ dist/ .env .DS_Store *.local "); } /* --- Angular (v19 standalone) --- */ function buildAngular(zip,folder,app,code,panelTxt){ var pn=pkgName(app); var C=cc(pn); var sel=pn.replace(/_/g,"-"); var extracted=extractCode(panelTxt); zip.file(folder+"package.json",'{ "name": "'+pn+'", "version": "0.0.0", "scripts": { "ng": "ng", "start": "ng serve", "build": "ng build", "test": "ng test" }, "dependencies": { "@angular/animations": "^19.0.0", "@angular/common": "^19.0.0", "@angular/compiler": "^19.0.0", "@angular/core": "^19.0.0", "@angular/forms": "^19.0.0", "@angular/platform-browser": "^19.0.0", "@angular/platform-browser-dynamic": "^19.0.0", "@angular/router": "^19.0.0", "rxjs": "~7.8.0", "tslib": "^2.3.0", "zone.js": "~0.15.0" }, "devDependencies": { "@angular-devkit/build-angular": "^19.0.0", "@angular/cli": "^19.0.0", "@angular/compiler-cli": "^19.0.0", "typescript": "~5.6.0" } } '); zip.file(folder+"angular.json",'{ "$schema": "./node_modules/@angular/cli/lib/config/schema.json", "version": 1, "newProjectRoot": "projects", "projects": { "'+pn+'": { "projectType": "application", "root": "", "sourceRoot": "src", "prefix": "app", "architect": { "build": { "builder": "@angular-devkit/build-angular:application", "options": { "outputPath": "dist/'+pn+'", "index": "src/index.html", "browser": "src/main.ts", "tsConfig": "tsconfig.app.json", "styles": ["src/styles.css"], "scripts": [] } }, "serve": {"builder":"@angular-devkit/build-angular:dev-server","configurations":{"production":{"buildTarget":"'+pn+':build:production"},"development":{"buildTarget":"'+pn+':build:development"}},"defaultConfiguration":"development"} } } } } '); zip.file(folder+"tsconfig.json",'{ "compileOnSave": false, "compilerOptions": {"baseUrl":"./","outDir":"./dist/out-tsc","forceConsistentCasingInFileNames":true,"strict":true,"noImplicitOverride":true,"noPropertyAccessFromIndexSignature":true,"noImplicitReturns":true,"noFallthroughCasesInSwitch":true,"paths":{"@/*":["src/*"]},"skipLibCheck":true,"esModuleInterop":true,"sourceMap":true,"declaration":false,"experimentalDecorators":true,"moduleResolution":"bundler","importHelpers":true,"target":"ES2022","module":"ES2022","useDefineForClassFields":false,"lib":["ES2022","dom"]}, "references":[{"path":"./tsconfig.app.json"}] } '); zip.file(folder+"tsconfig.app.json",'{ "extends":"./tsconfig.json", "compilerOptions":{"outDir":"./dist/out-tsc","types":[]}, "files":["src/main.ts"], "include":["src/**/*.d.ts"] } '); zip.file(folder+"src/index.html"," "+slugTitle(pn)+" "); zip.file(folder+"src/main.ts","import { bootstrapApplication } from '@angular/platform-browser'; import { appConfig } from './app/app.config'; import { AppComponent } from './app/app.component'; bootstrapApplication(AppComponent, appConfig) .catch(err => console.error(err)); "); zip.file(folder+"src/styles.css","* { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: system-ui, -apple-system, sans-serif; background: #f9fafb; color: #111827; } "); var hasComp=Object.keys(extracted).some(function(k){return k.indexOf("app.component")>=0;}); if(!hasComp){ zip.file(folder+"src/app/app.component.ts","import { Component } from '@angular/core'; import { RouterOutlet } from '@angular/router'; @Component({ selector: 'app-root', standalone: true, imports: [RouterOutlet], templateUrl: './app.component.html', styleUrl: './app.component.css' }) export class AppComponent { title = '"+pn+"'; } "); zip.file(folder+"src/app/app.component.html","

"+slugTitle(pn)+"

Built with PantheraHive BOS

"); zip.file(folder+"src/app/app.component.css",".app-header{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60vh;gap:16px}h1{font-size:2.5rem;font-weight:700;color:#6366f1} "); } zip.file(folder+"src/app/app.config.ts","import { ApplicationConfig, provideZoneChangeDetection } from '@angular/core'; import { provideRouter } from '@angular/router'; import { routes } from './app.routes'; export const appConfig: ApplicationConfig = { providers: [ provideZoneChangeDetection({ eventCoalescing: true }), provideRouter(routes) ] }; "); zip.file(folder+"src/app/app.routes.ts","import { Routes } from '@angular/router'; export const routes: Routes = []; "); Object.keys(extracted).forEach(function(p){ var fp=p.startsWith("src/")?p:"src/"+p; zip.file(folder+fp,extracted[p]); }); zip.file(folder+"README.md","# "+slugTitle(pn)+" Generated by PantheraHive BOS. ## Setup ```bash npm install ng serve # or: npm start ``` ## Build ```bash ng build ``` Open in VS Code with Angular Language Service extension. "); zip.file(folder+".gitignore","node_modules/ dist/ .env .DS_Store *.local .angular/ "); } /* --- Python --- */ function buildPython(zip,folder,app,code){ var title=slugTitle(app); var pn=pkgName(app); var src=code.replace(/^```[w]* ?/m,"").replace(/ ?```$/m,"").trim(); var reqMap={"numpy":"numpy","pandas":"pandas","sklearn":"scikit-learn","tensorflow":"tensorflow","torch":"torch","flask":"flask","fastapi":"fastapi","uvicorn":"uvicorn","requests":"requests","sqlalchemy":"sqlalchemy","pydantic":"pydantic","dotenv":"python-dotenv","PIL":"Pillow","cv2":"opencv-python","matplotlib":"matplotlib","seaborn":"seaborn","scipy":"scipy"}; var reqs=[]; Object.keys(reqMap).forEach(function(k){if(src.indexOf("import "+k)>=0||src.indexOf("from "+k)>=0)reqs.push(reqMap[k]);}); var reqsTxt=reqs.length?reqs.join(" "):"# add dependencies here "; zip.file(folder+"main.py",src||"# "+title+" # Generated by PantheraHive BOS print(title+" loaded") "); zip.file(folder+"requirements.txt",reqsTxt); zip.file(folder+".env.example","# Environment variables "); zip.file(folder+"README.md","# "+title+" Generated by PantheraHive BOS. ## Setup ```bash python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt ``` ## Run ```bash python main.py ``` "); zip.file(folder+".gitignore",".venv/ __pycache__/ *.pyc .env .DS_Store "); } /* --- Node.js --- */ function buildNode(zip,folder,app,code){ var title=slugTitle(app); var pn=pkgName(app); var src=code.replace(/^```[w]* ?/m,"").replace(/ ?```$/m,"").trim(); var depMap={"mongoose":"^8.0.0","dotenv":"^16.4.5","axios":"^1.7.9","cors":"^2.8.5","bcryptjs":"^2.4.3","jsonwebtoken":"^9.0.2","socket.io":"^4.7.4","uuid":"^9.0.1","zod":"^3.22.4","express":"^4.18.2"}; var deps={}; Object.keys(depMap).forEach(function(k){if(src.indexOf(k)>=0)deps[k]=depMap[k];}); if(!deps["express"])deps["express"]="^4.18.2"; var pkgJson=JSON.stringify({"name":pn,"version":"1.0.0","main":"src/index.js","scripts":{"start":"node src/index.js","dev":"nodemon src/index.js"},"dependencies":deps,"devDependencies":{"nodemon":"^3.0.3"}},null,2)+" "; zip.file(folder+"package.json",pkgJson); var fallback="const express=require("express"); const app=express(); app.use(express.json()); app.get("/",(req,res)=>{ res.json({message:""+title+" API"}); }); const PORT=process.env.PORT||3000; app.listen(PORT,()=>console.log("Server on port "+PORT)); "; zip.file(folder+"src/index.js",src||fallback); zip.file(folder+".env.example","PORT=3000 "); zip.file(folder+".gitignore","node_modules/ .env .DS_Store "); zip.file(folder+"README.md","# "+title+" Generated by PantheraHive BOS. ## Setup ```bash npm install ``` ## Run ```bash npm run dev ``` "); } /* --- Vanilla HTML --- */ function buildVanillaHtml(zip,folder,app,code){ var title=slugTitle(app); var isFullDoc=code.trim().toLowerCase().indexOf("=0||code.trim().toLowerCase().indexOf("=0; var indexHtml=isFullDoc?code:" "+title+" "+code+" "; zip.file(folder+"index.html",indexHtml); zip.file(folder+"style.css","/* "+title+" — styles */ *{margin:0;padding:0;box-sizing:border-box} body{font-family:system-ui,-apple-system,sans-serif;background:#fff;color:#1a1a2e} "); zip.file(folder+"script.js","/* "+title+" — scripts */ "); zip.file(folder+"assets/.gitkeep",""); zip.file(folder+"README.md","# "+title+" Generated by PantheraHive BOS. ## Open Double-click `index.html` in your browser. Or serve locally: ```bash npx serve . # or python3 -m http.server 3000 ``` "); zip.file(folder+".gitignore",".DS_Store node_modules/ .env "); } /* ===== MAIN ===== */ var sc=document.createElement("script"); sc.src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.10.1/jszip.min.js"; sc.onerror=function(){ if(lbl)lbl.textContent="Download ZIP"; alert("JSZip load failed — check connection."); }; sc.onload=function(){ var zip=new JSZip(); var base=(_phFname||"output").replace(/.[^.]+$/,""); var app=base.toLowerCase().replace(/[^a-z0-9]+/g,"_").replace(/^_+|_+$/g,"")||"my_app"; var folder=app+"/"; var vc=document.getElementById("panel-content"); var panelTxt=vc?(vc.innerText||vc.textContent||""):""; var lang=detectLang(_phCode,panelTxt); if(_phIsHtml){ buildVanillaHtml(zip,folder,app,_phCode); } else if(lang==="flutter"){ buildFlutter(zip,folder,app,_phCode,panelTxt); } else if(lang==="react-native"){ buildReactNative(zip,folder,app,_phCode,panelTxt); } else if(lang==="swift"){ buildSwift(zip,folder,app,_phCode,panelTxt); } else if(lang==="kotlin"){ buildKotlin(zip,folder,app,_phCode,panelTxt); } else if(lang==="react"){ buildReact(zip,folder,app,_phCode,panelTxt); } else if(lang==="vue"){ buildVue(zip,folder,app,_phCode,panelTxt); } else if(lang==="angular"){ buildAngular(zip,folder,app,_phCode,panelTxt); } else if(lang==="python"){ buildPython(zip,folder,app,_phCode); } else if(lang==="node"){ buildNode(zip,folder,app,_phCode); } else { /* Document/content workflow */ var title=app.replace(/_/g," "); var md=_phAll||_phCode||panelTxt||"No content"; zip.file(folder+app+".md",md); var h=""+title+""; h+="

"+title+"

"; var hc=md.replace(/&/g,"&").replace(//g,">"); hc=hc.replace(/^### (.+)$/gm,"

$1

"); hc=hc.replace(/^## (.+)$/gm,"

$1

"); hc=hc.replace(/^# (.+)$/gm,"

$1

"); hc=hc.replace(/**(.+?)**/g,"$1"); hc=hc.replace(/ {2,}/g,"

"); h+="

"+hc+"

Generated by PantheraHive BOS
"; zip.file(folder+app+".html",h); zip.file(folder+"README.md","# "+title+" Generated by PantheraHive BOS. Files: - "+app+".md (Markdown) - "+app+".html (styled HTML) "); } zip.generateAsync({type:"blob"}).then(function(blob){ var a=document.createElement("a"); a.href=URL.createObjectURL(blob); a.download=app+".zip"; a.click(); URL.revokeObjectURL(a.href); if(lbl)lbl.textContent="Download ZIP"; }); }; document.head.appendChild(sc); }function phShare(){navigator.clipboard.writeText(window.location.href).then(function(){var el=document.getElementById("ph-share-lbl");if(el){el.textContent="Link copied!";setTimeout(function(){el.textContent="Copy share link";},2500);}});}function phEmbed(){var runId=window.location.pathname.split("/").pop().replace(".html","");var embedUrl="https://pantherahive.com/embed/"+runId;var code='';navigator.clipboard.writeText(code).then(function(){var el=document.getElementById("ph-embed-lbl");if(el){el.textContent="Embed code copied!";setTimeout(function(){el.textContent="Get Embed Code";},2500);}});}