UNPKG

linked-panels

Version:

A powerful React library for building interconnected panel systems with advanced state management, inter-panel communication, and flexible persistence.

221 lines (177 loc) โ€ข 6.15 kB
# Changelog All notable changes to the Linked Panels library will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [1.0.0] - 2024-01-21 ### ๐ŸŽ‰ Initial Release The first stable release of the Linked Panels library, providing a complete solution for building interconnected panel systems. #### โœจ Added **Core Components** - `LinkedPanelsContainer` - Root container for managing panel systems - `LinkedPanel` - Individual panel component with navigation and state - `useResourceAPI` - Hook for resource-level state and messaging - `useLinkedPanelsStore` - Hook for global state access **State Management** - Zustand + Immer-based reactive state management - Selective re-rendering for optimal performance - Type-safe state subscriptions and updates - Automatic cleanup of unused state **Messaging System** - Type-safe inter-panel communication - Three message lifecycles: `event`, `state`, `command` - Message filtering and querying utilities - Automatic message delivery and history **Persistence Framework** - Pluggable storage adapter architecture - Automatic state saving and restoration - Configurable TTL and cleanup strategies - Message filtering for persistence **Storage Adapters** - `LocalStorageAdapter` - Browser localStorage support - `SessionStorageAdapter` - Browser sessionStorage support - `MemoryStorageAdapter` - In-memory storage for testing - `IndexedDBAdapter` - Robust browser database storage - `HTTPStorageAdapter` - Server-side API storage - `AsyncStorageAdapter` - React Native AsyncStorage support **Plugin System** - Extensible messaging with custom message types - Plugin registry for managing extensions - Built-in message validation and handling - Type safety for custom message content **TypeScript Support** - Complete type safety throughout the library - Generic types for custom message content - Comprehensive type definitions - IntelliSense support for all APIs **Testing Utilities** - `createTestEnvironment` - Testing helper - Memory storage adapter for tests - Mock implementations for CI/CD #### ๐Ÿ“š Documentation - Comprehensive README with quick start guide - Complete API reference documentation - Getting started tutorial with examples - Use case guides for common applications: - Document Management Systems - Data Dashboards and Analytics - Educational Platforms - Collaborative Workflows - Advanced topics covering: - Performance optimization - Testing strategies - Plugin development - Custom storage adapters #### ๐ŸŽฏ Use Cases Covered **Document Management** - Synchronized document viewers - Annotation and comment systems - Version comparison tools - Real-time collaborative editing - Multi-format document support **Data Analytics** - Synchronized chart filtering - Cross-panel drill-down navigation - Real-time data updates - Interactive data exploration - Export and sharing capabilities **Educational Platforms** - Multi-language learning interfaces - Progress tracking and resumption - Interactive exercises and quizzes - Synchronized content and resources - Offline-capable mobile apps **Collaborative Applications** - Real-time synchronized workspaces - Team-based editing workflows - Notification and messaging systems - Role-based access controls - Activity tracking and history #### ๐Ÿš€ Performance Features - Selective component re-rendering - Efficient state subscriptions - Lazy loading support - Memory management and cleanup - Bundle size optimization - Tree-shaking compatibility #### ๐Ÿ”ง Developer Experience - Hot module replacement support - Comprehensive error boundaries - Detailed error messages and logging - React DevTools integration - Vite and Webpack compatibility - ESM and CommonJS support #### ๐Ÿ“ฆ Package Management - npm package with proper exports - TypeScript declarations included - Peer dependency management - Optional dependencies for platform-specific features - Proper semantic versioning #### ๐Ÿงช Quality Assurance - Comprehensive test suite - Type checking with TypeScript - ESLint code quality checks - Automated CI/CD pipeline - Cross-browser compatibility testing - React 18+ concurrent features support ### ๐ŸŽจ Examples Included **Basic Panel System** ```tsx import { LinkedPanelsContainer, LinkedPanel } from 'linked-panels'; function App() { return ( <LinkedPanelsContainer config={config}> <LinkedPanel id="main"> {({ current, navigate }) => ( <div>{current.resource?.component}</div> )} </LinkedPanel> </LinkedPanelsContainer> ); } ``` **Advanced Dashboard** ```tsx function Dashboard() { const persistenceOptions = { storageAdapter: new IndexedDBAdapter(), autoSave: true, stateTTL: 7 * 24 * 60 * 60 * 1000 // 7 days }; return ( <LinkedPanelsContainer config={config} persistence={persistenceOptions} > {/* Panel implementation */} </LinkedPanelsContainer> ); } ``` **Custom Plugin** ```tsx const customPlugin = createPlugin({ name: 'analytics', messageTypes: { 'track-event': TrackEventMessage }, handlers: { 'track-event': trackAnalyticsEvent } }); ``` ### ๐Ÿ”ฎ Future Roadmap While this initial release provides a comprehensive foundation, future versions will include: - Visual panel layout editor - Drag-and-drop panel arrangement - Advanced animation and transitions - Server-side rendering (SSR) support - React Native optimizations - Additional storage adapters - Performance monitoring tools - Advanced debugging utilities ### ๐Ÿ“ˆ Migration Path This is the initial stable release. Future versions will maintain backward compatibility and provide clear migration guides for any breaking changes. ### ๐Ÿ™ Acknowledgments Special thanks to: - The React team for the amazing framework - Zustand for excellent state management - The TypeScript team for type safety - The open source community for inspiration and feedback --- **Full Changelog**: https://github.com/bt-toolkit/bt-toolkit/releases/tag/v1.0.0