Skip to content

Commit 3eba33f

Browse files
committed
feat: knowledge documentation
1 parent 5d095f9 commit 3eba33f

7 files changed

Lines changed: 318 additions & 697 deletions

File tree

.storybook/main.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,15 @@ import { StorybookConfig } from '@storybook/nextjs';
33
const path = require('path')
44

55
const config: StorybookConfig = {
6-
stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'],
6+
stories: [
7+
'../src/**/*.stories.@(js|jsx|mjs|ts|tsx)',
8+
'../src/**/*.docs.mdx'
9+
],
710
addons: [
811
getAbsolutePath("@storybook/addon-onboarding"),
912
getAbsolutePath("@storybook/addon-links"),
1013
getAbsolutePath("@storybook/addon-essentials"),
14+
// getAbsolutePath("@storybook/addon-docs"),
1115
getAbsolutePath("@storybook/addon-interactions"),
1216
getAbsolutePath("@storybook/addon-themes"),
1317
{

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
},
4242
"devDependencies": {
4343
"@chromatic-com/storybook": "^3.2.6",
44+
"@mdx-js/react": "^3.1.0",
4445
"@semantic-release/changelog": "^6.0.3",
4546
"@storybook/addon-actions": "^8.6.12",
4647
"@storybook/addon-essentials": "^8.6.12",

pnpm-lock.yaml

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 307 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,307 @@
1+
import { Meta } from '@storybook/blocks'
2+
3+
<Meta title="Digital Colleagues/Views/KnowledgeView/Documentation" />
4+
5+
# KnowledgeView Component Documentation
6+
7+
The **KnowledgeView** component is a comprehensive knowledge management interface that provides organized access to documentation and knowledge resources.
8+
9+
## Overview
10+
11+
This component serves as the primary interface for browsing, searching, and managing organizational knowledge. It supports multiple organizational contexts, document filtering, and various interaction patterns.
12+
13+
## Key Features
14+
15+
### 🔄 Context-based Navigation
16+
Switch between different organizational views:
17+
- **All Documentation**: Browse all documents by category and type
18+
- **Services**: Organize by service and team
19+
- **Architecture**: View by component and layer
20+
- **Teams**: Group by team and project
21+
- **Security**: Filter security documentation
22+
23+
### 📚 Document Browser
24+
- **Hierarchical organization** with expandable categories
25+
- **Search functionality** across all document content
26+
- **Document metadata** display (author, date, tags)
27+
- **Quick preview** capabilities
28+
29+
### 🎯 Interactive Features
30+
- **Document selection** with visual feedback
31+
- **Sharing capabilities** for collaboration
32+
- **Cross-context document selection** for comparison
33+
- **Preview panels** for quick content review
34+
35+
### ⚡ Performance Optimizations
36+
- **Lazy content loading** for large document sets
37+
- **Virtual scrolling** for massive lists
38+
- **Optimistic updates** for better UX
39+
- **Caching strategies** for repeated access
40+
41+
## Architecture
42+
43+
### Component Structure
44+
```
45+
KnowledgeView
46+
├── Context Selector (dropdown)
47+
├── Search Bar
48+
├── Document Tree
49+
│ ├── Category Nodes
50+
│ ├── Document Items
51+
│ └── Loading States
52+
└── Action Buttons
53+
├── Share
54+
├── Preview
55+
└── Custom Actions
56+
```
57+
58+
### Props Interface
59+
```typescript
60+
interface KnowledgeViewProps {
61+
contexts: KnowledgeContext[]
62+
selectedDocuments?: KnowledgeDocument[]
63+
onDocumentSelect?: (documents: KnowledgeDocument[]) => void
64+
onShare?: (documents: KnowledgeDocument[]) => void
65+
onLoadDocumentContent?: (document: KnowledgeDocument) => Promise<string>
66+
className?: string
67+
}
68+
```
69+
70+
### Context System
71+
The component uses a context-based organization system where each context represents a different way to organize and view the same underlying documents:
72+
73+
```typescript
74+
interface KnowledgeContext {
75+
id: string
76+
name: string
77+
description: string
78+
icon: React.ReactNode
79+
categories: KnowledgeCategory[]
80+
}
81+
```
82+
83+
## Usage Patterns
84+
85+
### Basic Usage
86+
```tsx
87+
import { KnowledgeView } from '@/components/DigitalColleagues/Views'
88+
import { defaultContexts } from './KnowledgeView.stories'
89+
90+
const MyComponent = () => {
91+
return (
92+
<KnowledgeView
93+
contexts={defaultContexts}
94+
onDocumentSelect={(docs) => console.log('Selected:', docs)}
95+
/>
96+
)
97+
}
98+
```
99+
100+
### With Custom Content Loading
101+
```tsx
102+
const MyComponent = () => {
103+
const handleLoadContent = async (document: KnowledgeDocument) => {
104+
// Fetch content lazily for performance
105+
const response = await fetch(`/api/documents/${document.id}/content`)
106+
return response.text()
107+
}
108+
109+
return (
110+
<KnowledgeView
111+
contexts={contexts}
112+
onLoadDocumentContent={handleLoadContent}
113+
/>
114+
)
115+
}
116+
```
117+
118+
### With Sharing Integration
119+
```tsx
120+
const MyComponent = () => {
121+
const handleShare = (documents: KnowledgeDocument[]) => {
122+
const urls = documents.map(doc => doc.url).join('\n')
123+
navigator.clipboard.writeText(urls)
124+
toast.success('Document links copied to clipboard!')
125+
}
126+
127+
return (
128+
<KnowledgeView
129+
contexts={contexts}
130+
onShare={handleShare}
131+
/>
132+
)
133+
}
134+
```
135+
136+
## Context Design Guidelines
137+
138+
### Creating Effective Contexts
139+
1. **Purpose-driven**: Each context should serve a specific user need
140+
2. **Comprehensive**: Include all relevant documents for that context
141+
3. **Intuitive organization**: Use familiar categorization schemes
142+
4. **Balanced depth**: Avoid overly deep or flat hierarchies
143+
144+
### Best Practices
145+
- **Limit context count**: 3-7 contexts work best for cognitive load
146+
- **Clear naming**: Use descriptive, action-oriented names
147+
- **Consistent structure**: Maintain similar organization patterns
148+
- **Regular review**: Update contexts as organizational needs evolve
149+
150+
## Performance Considerations
151+
152+
### Large Document Sets
153+
- Use `onLoadDocumentContent` for lazy loading
154+
- Implement virtual scrolling for 1000+ documents
155+
- Consider pagination for very large sets
156+
- Cache frequently accessed content
157+
158+
### Memory Management
159+
- Unload content when switching contexts
160+
- Implement cleanup in useEffect hooks
161+
- Monitor memory usage in production
162+
- Use React.memo for expensive renders
163+
164+
### Network Optimization
165+
- Batch API requests when possible
166+
- Implement request debouncing for search
167+
- Use service workers for offline support
168+
- Compress document metadata
169+
170+
## Accessibility Features
171+
172+
### Keyboard Navigation
173+
- **Tab**: Navigate through interactive elements
174+
- **Arrow keys**: Navigate tree structure
175+
- **Space/Enter**: Select/expand items
176+
- **Escape**: Close modals/dropdowns
177+
178+
### Screen Reader Support
179+
- Semantic HTML structure
180+
- ARIA labels and descriptions
181+
- Focus management
182+
- Status announcements
183+
184+
### Visual Accessibility
185+
- High contrast mode support
186+
- Respects `prefers-reduced-motion`
187+
- Scalable text and icons
188+
- Clear focus indicators
189+
190+
## Testing Strategies
191+
192+
### Unit Tests
193+
- Test document selection logic
194+
- Verify context switching
195+
- Mock API interactions
196+
- Test keyboard navigation
197+
198+
### Integration Tests
199+
- Test with real data sets
200+
- Verify performance thresholds
201+
- Test error boundary behavior
202+
- Cross-browser compatibility
203+
204+
### User Experience Tests
205+
- Usability testing with real users
206+
- Performance testing with large datasets
207+
- Accessibility audit compliance
208+
- Mobile responsiveness testing
209+
210+
## Troubleshooting
211+
212+
### Common Issues
213+
214+
**Documents not loading**
215+
- Check context data structure
216+
- Verify document URLs are accessible
217+
- Check network connectivity
218+
- Review console for errors
219+
220+
**Performance issues**
221+
- Implement lazy loading
222+
- Reduce initial data load
223+
- Check for memory leaks
224+
- Profile React components
225+
226+
**Accessibility problems**
227+
- Run automated accessibility tests
228+
- Test with screen readers
229+
- Verify keyboard navigation
230+
- Check color contrast ratios
231+
232+
### Debug Mode
233+
Enable debug logging by setting:
234+
```typescript
235+
window.__KNOWLEDGE_VIEW_DEBUG__ = true
236+
```
237+
238+
This will log:
239+
- Context switching events
240+
- Document selection changes
241+
- API request timing
242+
- Performance metrics
243+
244+
## API Integration
245+
246+
### Expected Data Format
247+
```typescript
248+
// Sample API response structure
249+
{
250+
"contexts": [
251+
{
252+
"id": "all-docs",
253+
"name": "All Documentation",
254+
"categories": [
255+
{
256+
"id": "guides",
257+
"name": "User Guides",
258+
"documents": [
259+
{
260+
"id": "user-onboarding",
261+
"title": "User Onboarding Guide",
262+
"url": "/docs/onboarding",
263+
"author": "John Doe",
264+
"lastModified": "2025-01-15T10:30:00Z",
265+
"tags": ["onboarding", "users"]
266+
}
267+
]
268+
}
269+
]
270+
}
271+
]
272+
}
273+
```
274+
275+
### Error Handling
276+
The component handles various error states:
277+
- Network failures
278+
- Invalid data structures
279+
- Missing documents
280+
- Permission errors
281+
282+
Implement proper error boundaries and user feedback for production use.
283+
284+
## Future Enhancements
285+
286+
### Planned Features
287+
- **Advanced search**: Full-text search with filters
288+
- **Document versioning**: Track and compare versions
289+
- **Collaborative features**: Comments and annotations
290+
- **Analytics integration**: Usage tracking and insights
291+
292+
### Extension Points
293+
- **Custom renderers**: For different document types
294+
- **Plugin system**: For third-party integrations
295+
- **Theme customization**: Beyond basic styling
296+
- **Workflow integration**: Connect to approval processes
297+
298+
---
299+
300+
## Related Components
301+
302+
- **DocumentPreview**: For detailed document viewing
303+
- **SearchInterface**: Advanced search capabilities
304+
- **DocumentEditor**: For content creation/editing
305+
- **AnalyticsDashboard**: Usage insights and metrics
306+
307+
For interactive examples and component variations, see the **Stories** tab.

0 commit comments

Comments
 (0)