=== Team Members & Staff Profiles — Our Team ===
Contributors: devhasib
Tags: team members, staff profiles, employee directory, team page, our team
Requires at least: 6.0
Tested up to: 7.1
Requires PHP: 8.0
Stable tag: 1.1.2
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Display team member profiles with departments, job roles, vCard, Schema.org & Elementor widgets. No code required.

== Description ==

**Team Members & Staff Profiles — Our Team** lets agencies, law firms, clinics, and corporate sites showcase their team professionally — without writing a single line of code.

Whether you need a simple staff directory or a fully branded team page with department filters, profile modals, and Schema.org Person markup, this plugin handles it out of the box.

= Key Features =

* Custom Post Type for Team Members with photo, job title, bio, email, phone
* Department and Job Role taxonomies with custom icons and colours
* Multiple display layouts: Grid, List, Carousel, Masonry
* Gutenberg blocks: Team Grid and Single Team Member
* Native Elementor widgets with full style controls
* Schema.org Person/Employee JSON-LD markup for SEO
* vCard (.vcf) download — visitors save a contact card in one click
* AJAX-powered department/role filtering with no page reload
* REST API (webtend-tm/v1) for headless and custom integrations
* WooCommerce "Handled By" product tab — link a product to its account manager
* Import/Export settings, one-click reset
* Translation-ready (POT file included), RTL support
* HPOS-compatible, multisite-compatible
* Built with PSR-4 OOP architecture, fully namespaced, PHPCS-compliant

= Four Card Style Presets =

Choose from **Classic Card**, **Overlay** (hover reveal), **Horizontal**, and **Minimal** — all configurable from Settings → Display without touching any code.

= Accessible Profile Modal =

Enable a full-profile lightbox popup on card click. The modal is fully accessible — focus trap, ESC to close, ARIA roles, keyboard navigation, and in-memory caching for instant second opens.

= Privacy & Public Data =

Email and phone fields are **hidden from public display and the REST API by default**. They are only exposed publicly when the site administrator explicitly enables them in **Settings → Display**. The vCard download endpoint honours the same setting.

= Compatibility =

Tested alongside Astra, Kadence, GeneratePress, OceanWP, Blocksy, Hello Elementor, Storefront, and Flatsome themes; Elementor, Elementor Pro, Gutenberg, Spectra, Kadence Blocks, and GenerateBlocks; WooCommerce (including HPOS); Rank Math, Yoast SEO, and AIOSEO; WP Rocket, LiteSpeed Cache, and Perfmatters; WPML, Polylang, and TranslatePress; Wordfence.

== Installation ==

1. Upload the `webtend-team-staff-manager` folder to `/wp-content/plugins/`, or install via Plugins → Add New → Upload Plugin.
2. Activate the plugin through the Plugins menu.
3. You will be redirected to the Getting Started page — follow the 4 steps to add your first team member.
4. Use the `[webtend_team]` shortcode, the "Team Grid" Gutenberg block, or the Elementor widget to display your team anywhere.

== Screenshots ==

1. Display settings — layout, visibility, and privacy controls with a live preview
2. The front-end team grid with filters, social links, and vCard download
3. Adding a team member — job title, social profiles, skills, photo, and departments

== Frequently Asked Questions ==

= Does this work with my theme? =

Yes. The plugin ships with its own lightweight, theme-agnostic templates and CSS that adapt to any standards-compliant theme, including all major business themes (Astra, Kadence, GeneratePress, OceanWP, Blocksy).

= Can I override the templates? =

Yes. Copy any file from `/templates/` into `your-theme/webtend-team-staff-manager/` keeping the same relative path, and the plugin will use your version automatically.

= Does it slow down my site? =

No. All CSS/JS is loaded conditionally — only on pages that actually display team members. No assets are loaded site-wide.

= Is it GDPR compliant? =

Yes. Email and phone number are hidden from public display and the public REST API by default. The site administrator explicitly opts in to publishing them via Settings → Display.

= Does the plugin call any external services? =

No. All functionality runs entirely on your own installation. No analytics, telemetry, license checks, or remote API calls are made.

== External services ==

This plugin does not connect to, send data to, or receive data from any external service.

All functionality — including team listings, Schema.org markup, the REST API, and vCard generation — runs entirely on the user's own installation. No analytics, telemetry, license checks, update pings, or remote API calls are made by this build.

== Changelog ==

= 1.1.2 =
* New: Location field — add an office, city, or region to each team member. Displayed as a pin-icon badge on every card style.
* New: Featured Member toggle — mark individual members as "featured" via a checkbox in the Display Options meta box. Featured members show a gold star badge on their card.
* New: Shortcode `featured` attribute — `[webtend_team featured="1"]` displays only featured members. Works with all other shortcode attributes.
* New: Shortcode `location` attribute — `[webtend_team location="New York"]` filters members by location (LIKE match, case-insensitive).
* New: "Show location" toggle in Settings → Display — globally enable or disable the location badge on cards.
* New: "Location" and "Featured" columns added to the Team Members admin list table.
* New: `location` and `is_featured` fields exposed in the REST API (`/wp-json/webtend-tm/v1/team-members`).
* Improvement: `build_query_args()` now handles `wttm_featured` and `wttm_location` meta_query injection cleanly without polluting WP_Query with unknown args.

= 1.1.1 =
* Fix: Corrected inconsistent method indentation in Admin class register() and handle_rewrite_flush() methods (WPCS compliance).
* Fix: Corrected extra indentation on activate_single() method in Activator class.
* Fix: Plugin name string in requirements-check admin notices now matches actual plugin header name.
* Improvement: Activator::seed_default_options() now includes card_style, enable_modal, enable_search, search_placeholder, and pagination_type defaults so fresh installs never rely on fallback coercion.
* Improvement: handle_rewrite_flush() settings_version calculation reformatted for readability; no logic change.
* Improvement: Main plugin file doc-block comments improved for clarity on webtend_tm() and webtend_tm_requirements_met().
* Optimization: Removed redundant double-tab indentation across several class methods that caused PHPCS warnings.

= 1.1.0 =
* Fix: Modal social icons now render as proper SVGs instead of plain text network names.
* Fix: aria-busy="true" set on modal dialog while REST API data is loading; removed when content is ready.
* New: In-memory member data cache — opening the same profile modal a second time is instant with no repeat API call.
* New: Copy email to clipboard button inside the profile modal — one-click copy with a checkmark confirmation.
* New: Skeleton shimmer loading animation on the team grid during filter/pagination fetch.
* New: aria-live="polite" region announces member count to screen readers after each filter change.
* Fix: Removed inline style attribute from admin settings page live preview panel.
* Improvement: Modal loader div now has role="status" for better screen reader compatibility.
* New: Four card style presets — Classic Card, Overlay, Horizontal, and Minimal.
* New: Profile Modal / Lightbox — enable a full-profile popup on card click.
* New: Modal is fully accessible — focus trap, ESC to close, ARIA roles, keyboard navigation.
* New: Modal pulls rich profile data from the REST API.
* Improvement: Replaced jQuery AJAX with native fetch() — removes jQuery dependency.
* Improvement: Card style preserved on AJAX filter/load-more requests.

= 1.0.1 =
* Fix: Added missing elementor-editor.css file.
* Fix: Team Grid Elementor widget empty-state in the editor.
* Fix: Added get_script_depends() and get_style_depends() to both Elementor widgets.
* Improvement: Elementor Team Grid Style tab now includes controls for Job Title, Bio, Filter Tabs, Social Icons, and vCard button.

= 1.0.0 =
* Initial release.

== Upgrade Notice ==

= 1.1.1 =
Code quality and consistency fixes. No database changes — upgrade is safe.

= 1.1.0 =
Fixes modal social icons, adds copy-email button, skeleton loader, and screen reader announcements.
Adds four card style presets and a fully accessible profile modal. Removes jQuery frontend dependency.

= 1.0.1 =
Fixes missing CSS file and adds full Elementor Style tab controls.
