@design.estate/dees-catalog
An extensive library for building modern web applications with dynamic components using Web Components, JavaScript, and TypeScript.
Install
To install the @design.estate/dees-catalog library, you can use npm or any other compatible JavaScript package manager:
npm install @design.estate/dees-catalog
Components Overview
| Category | Components | 
|---|---|
| Core UI | DeesButton,DeesBadge,DeesChips,DeesIcon,DeesLabel,DeesSpinner,DeesToast | 
| Forms | DeesForm,DeesInputText,DeesInputCheckbox,DeesInputDropdown,DeesInputRadio,DeesInputFileupload,DeesInputIban,DeesInputPhone,DeesInputQuantitySelector,DeesInputMultitoggle,DeesFormSubmit | 
| Layout | DeesAppuiBase,DeesAppuiMainmenu,DeesAppuiMainselector,DeesAppuiMaincontent,DeesAppuiAppbar,DeesMobileNavigation | 
| Data Display | DeesTable,DeesDataviewCodebox,DeesDataviewStatusobject,DeesPdf | 
| Visualization | DeesChartArea,DeesChartLog | 
| Dialogs & Overlays | DeesModal,DeesContextmenu,DeesSpeechbubble,DeesWindowlayer | 
| Navigation | DeesStepper,DeesProgressbar | 
| Development | DeesEditor,DeesEditorMarkdown,DeesTerminal,DeesUpdater | 
Detailed Component Documentation
Core UI Components
DeesButton
A versatile button component supporting multiple styles and states.
// Basic usage
const button = document.createElement('dees-button');
button.text = 'Click me';
// With options
<dees-button
  type="highlighted"  // Options: normal, highlighted, discreet
  status="pending"    // Options: normal, pending, success, error
  disabled={false}    // Optional: disables the button
  @click=${handleClick}
>Click me</dees-button>
DeesBadge
Display status indicators or counts with customizable styles.
<dees-badge
  type="success"  // Options: default, primary, success, warning, error
  text="New"      // Text to display
  rounded        // Optional: applies rounded corners
></dees-badge>
DeesChips
Interactive chips/tags with selection capabilities.
<dees-chips
  selectionMode="multiple"  // Options: none, single, multiple
  chipsAreRemovable        // Optional: allows removing chips
  .selectableChips=${[
    { key: 'tag1', value: 'Important' },
    { key: 'tag2', value: 'Urgent' }
  ]}
  @selection-change=${handleSelection}
></dees-chips>
DeesIcon
Display icons from various icon sets including FontAwesome.
<dees-icon
  icon="home"           // FontAwesome icon name
  type="solid"          // Options: solid, regular, brands
  size="1.5rem"         // Optional: custom size
  color="#007bff"       // Optional: custom color
></dees-icon>
DeesLabel
Text label component with optional icon and status indicators.
<dees-label
  text="Status"         // Label text
  icon="info-circle"    // Optional: icon name
  type="info"           // Options: default, info, success, warning, error
  size="medium"         // Options: small, medium, large
></dees-label>
DeesSpinner
Loading indicator with customizable appearance.
<dees-spinner
  size="medium"         // Options: small, medium, large
  type="primary"        // Options: primary, secondary, light, dark
  overlay              // Optional: adds a full-screen overlay
></dees-spinner>
DeesToast
Notification toast messages with various styles and auto-dismiss.
// Programmatic usage
DeesToast.show({
  message: 'Operation successful',
  type: 'success',      // Options: info, success, warning, error
  duration: 3000,       // Time in milliseconds before auto-dismiss
  position: 'top-right' // Options: top-right, top-left, bottom-right, bottom-left
});
// Component usage
<dees-toast
  message="Changes saved"
  type="success"
  autoClose
  duration="3000"
></dees-toast>
Form Components
DeesForm
Container component for form elements with built-in validation and data handling.
<dees-form
  @formData=${(e) => handleFormData(e.detail)}  // Emitted when form is submitted
  @formValidation=${(e) => handleValidation(e.detail)}  // Emitted during validation
>
  <dees-input-text required></dees-input-text>
  <dees-form-submit>Submit</dees-form-submit>
</dees-form>
DeesInputText
Text input field with validation and formatting options.
<dees-input-text
  key="email"           // Unique identifier for form data
  label="Email"         // Input label
  value="initial@value.com"  // Initial value
  required             // Makes the field required
  disabled            // Disables the input
  placeholder="Enter your email"
></dees-input-text>
DeesInputCheckbox
Checkbox input component for boolean values.
<dees-input-checkbox
  key="terms"
  label="Accept Terms"
  checked             // Initial checked state
  required
  @change=${handleChange}
></dees-input-checkbox>
DeesInputDropdown
Dropdown selection component with search and filtering capabilities.
<dees-input-dropdown
  key="country"
  label="Select Country"
  .options=${[
    { key: 'us', option: 'United States' },
    { key: 'uk', option: 'United Kingdom' }
  ]}
  searchable          // Enables search functionality
  multiple           // Allows multiple selections
></dees-input-dropdown>
DeesInputRadio
Radio button group for single-choice selections.
<dees-input-radio
  key="gender"
  label="Gender"
  .options=${[
    { key: 'male', option: 'Male' },
    { key: 'female', option: 'Female' },
    { key: 'other', option: 'Other' }
  ]}
  required
></dees-input-radio>
DeesInputFileupload
File upload component with drag-and-drop support.
<dees-input-fileupload
  key="documents"
  label="Upload Files"
  multiple            // Allow multiple file selection
  accept=".pdf,.doc"  // Accepted file types
  maxSize="5MB"      // Maximum file size
  @upload=${handleUpload}
></dees-input-fileupload>
DeesInputIban
Specialized input for IBAN (International Bank Account Number) with validation.
<dees-input-iban
  key="bankAccount"
  label="IBAN"
  country="DE"        // Default country format
  required
  @validate=${handleIbanValidation}
></dees-input-iban>
DeesInputPhone
Phone number input with country code selection and formatting.
<dees-input-phone
  key="phone"
  label="Phone Number"
  defaultCountry="US"  // Default country code
  required
  @validate=${handlePhoneValidation}
></dees-input-phone>
DeesInputQuantitySelector
Numeric input with increment/decrement controls.
<dees-input-quantity-selector
  key="quantity"
  label="Quantity"
  min="0"             // Minimum value
  max="100"           // Maximum value
  step="1"            // Increment/decrement step
  value="1"           // Initial value
></dees-input-quantity-selector>
DeesInputMultitoggle
Multi-state toggle button group.
<dees-input-multitoggle
  key="status"
  label="Status"
  .options=${[
    { key: 'active', label: 'Active' },
    { key: 'pending', label: 'Pending' },
    { key: 'inactive', label: 'Inactive' }
  ]}
  value="active"      // Initial selected value
></dees-input-multitoggle>
DeesFormSubmit
Submit button component specifically designed for DeesForm.
<dees-form-submit
  disabled            // Optional: disable submit button
  status="normal"     // Options: normal, pending, success, error
>Submit Form</dees-form-submit>
Layout Components
DeesAppuiBase
Base container component for application layout structure.
<dees-appui-base>
  <dees-appui-mainmenu></dees-appui-mainmenu>
  <dees-appui-mainselector></dees-appui-mainselector>
  <dees-appui-maincontent></dees-appui-maincontent>
  <dees-appui-appbar></dees-appui-appbar>
</dees-appui-base>
DeesAppuiMainmenu
Main navigation menu component for application-wide navigation.
<dees-appui-mainmenu
  .menuItems=${[
    {
      key: 'dashboard',
      label: 'Dashboard',
      icon: 'home',
      action: () => handleNavigation('dashboard')
    },
    {
      key: 'settings',
      label: 'Settings',
      icon: 'cog',
      action: () => handleNavigation('settings')
    }
  ]}
  collapsed           // Optional: show collapsed version
  position="left"     // Options: left, right
></dees-appui-mainmenu>
DeesAppuiMainselector
Secondary navigation component for sub-section selection.
<dees-appui-mainselector
  .items=${[
    {
      key: 'section1',
      label: 'Section 1',
      icon: 'folder',
      action: () => selectSection('section1')
    }
  ]}
  selectedKey="section1"  // Currently selected section
  @selection-change=${handleSectionChange}
></dees-appui-mainselector>
DeesAppuiMaincontent
Main content area with tab management support.
<dees-appui-maincontent
  .tabs=${[
    {
      key: 'tab1',
      label: 'Tab 1',
      content: html`<div>Tab 1 Content</div>`,
      action: () => handleTabAction('tab1')
    }
  ]}
  selectedTab="tab1"     // Currently active tab
  @tab-change=${handleTabChange}
></dees-appui-maincontent>
DeesAppuiAppbar
Top application bar with actions and status information.
<dees-appui-appbar
  title="My Application"
  .actions=${[
    {
      icon: 'bell',
      label: 'Notifications',
      action: () => showNotifications()
    },
    {
      icon: 'user',
      label: 'Profile',
      action: () => showProfile()
    }
  ]}
  showSearch          // Optional: display search bar
  @search=${handleSearch}
></dees-appui-appbar>
DeesMobileNavigation
Responsive navigation component for mobile devices.
<dees-mobile-navigation
  .menuItems=${[
    {
      key: 'home',
      label: 'Home',
      icon: 'home',
      action: () => navigate('home')
    },
    {
      key: 'profile',
      label: 'Profile',
      icon: 'user',
      action: () => navigate('profile')
    }
  ]}
  activeKey="home"    // Currently active item
  position="bottom"   // Options: bottom, top
  @item-click=${handleNavigationClick}
></dees-mobile-navigation>
Data Display Components
DeesTable
Advanced table component with sorting, filtering, and action support.
<dees-table
  .data=${tableData}
  .displayFunction=${(item) => ({
    name: item.name,
    date: item.date,
    amount: item.amount,
    description: item.description
  })}
  .dataActions=${[
    {
      name: 'Edit',
      icon: 'edit',
      action: (item) => handleEdit(item)
    },
    {
      name: 'Delete',
      icon: 'trash',
      action: (item) => handleDelete(item)
    }
  ]}
  heading1="Transactions"
  heading2="Recent Activity"
  searchable           // Enable search functionality
  dataName="transaction"  // Name for single data item
  @selection-change=${handleSelectionChange}
></dees-table>
DeesDataviewCodebox
Code display component with syntax highlighting and line numbers.
<dees-dataview-codebox
  progLang="typescript"  // Programming language for syntax highlighting
  .codeToDisplay=${`
    import { html } from '@design.estate/dees-element';
    
    export const myComponent = () => {
      return html\`<div>Hello World</div>\`;
    };
  `}
></dees-dataview-codebox>
DeesDataviewStatusobject
Status display component for complex objects with nested status indicators.
<dees-dataview-statusobject
  .statusObject=${{
    id: '1',
    name: 'System Status',
    combinedStatus: 'partly_ok',
    combinedStatusText: 'Partially OK',
    details: [
      {
        name: 'Database',
        value: 'Connected',
        status: 'ok',
        statusText: 'OK'
      },
      {
        name: 'API Service',
        value: 'Degraded',
        status: 'partly_ok',
        statusText: 'Partially OK'
      }
    ]
  }}
></dees-dataview-statusobject>
DeesPdf
PDF viewer component with navigation and zoom controls.
<dees-pdf
  source="path/to/document.pdf"  // URL or base64 encoded PDF
  page={1}            // Current page number
  scale={1.0}         // Zoom level
  .controls=${[       // Optional: customize available controls
    'zoom',
    'download',
    'print',
    'navigation'
  ]}
  @page-change=${handlePageChange}
  @document-loaded=${handleDocumentLoaded}
></dees-pdf>
Key Features:
- 
DeesTable:- Sortable columns
- Searchable content
- Customizable row actions
- Selection support
- Form compatibility
- Custom display formatting
 
- 
DeesDataviewCodebox:- Syntax highlighting for multiple languages
- Line numbering
- Copy to clipboard functionality
- Custom theme support
- Window-like appearance with controls
 
- 
DeesDataviewStatusobject:- Hierarchical status display
- Color-coded status indicators
- Expandable details
- JSON export capability
- Customizable styling
 
- 
DeesPdf:- Page navigation
- Zoom controls
- Download support
- Print functionality
- Responsive layout
- Loading states
 
Visualization Components
DeesChartArea
Area chart component built on ApexCharts for visualizing time-series data.
<dees-chart-area
  label="System Usage"    // Chart title
  .series=${[
    {
      name: 'CPU',
      data: [
        { x: '2025-01-15T03:00:00', y: 25 },
        { x: '2025-01-15T07:00:00', y: 30 },
        { x: '2025-01-15T11:00:00', y: 20 }
      ]
    },
    {
      name: 'Memory',
      data: [
        { x: '2025-01-15T03:00:00', y: 10 },
        { x: '2025-01-15T07:00:00', y: 12 },
        { x: '2025-01-15T11:00:00', y: 10 }
      ]
    }
  ]}
></dees-chart-area>
Key Features:
- Responsive design with automatic resizing
- Gradient fill support
- Interactive tooltips
- Grid customization
- Multiple series support
- Time-based x-axis
- Customizable styling
Configuration Options:
- Series data format: { x: timestamp, y: value }
- Tooltip customization with datetime formatting
- Grid line styling and colors
- Gradient fill properties
- Chart dimensions and responsiveness
DeesChartLog
Specialized chart component for visualizing log data and events.
<dees-chart-log
  label="System Events"
  .data=${[
    {
      timestamp: '2025-01-15T03:00:00',
      event: 'Server Start',
      type: 'info'
    },
    {
      timestamp: '2025-01-15T03:15:00',
      event: 'Error Detected',
      type: 'error'
    }
  ]}
  .filters=${['info', 'warning', 'error']}  // Event types to display
  @event-click=${handleEventClick}
></dees-chart-log>
Key Features:
- Event timeline visualization
- Color-coded event types
- Interactive event details
- Filtering capabilities
- Zoom and pan support
- Time-based navigation
- Event clustering
Common Use Cases:
- System monitoring
- Performance tracking
- Resource utilization
- Event logging
- Time-series analysis
- Trend visualization
Best Practices:
- 
Data Formatting - Use consistent timestamp formats
- Provide meaningful series names
- Include appropriate data points
 
- 
Responsiveness - Charts automatically adjust to container size
- Consider mobile viewports
- Set appropriate min/max dimensions
 
- 
Interaction - Enable relevant tooltips
- Configure meaningful click handlers
- Implement appropriate zoom levels
 
- 
Styling - Use consistent color schemes
- Configure appropriate grid lines
- Set readable font sizes
 
Dialogs & Overlays Components
DeesModal
Modal dialog component with customizable content and actions.
// Programmatic usage
DeesModal.createAndShow({
  heading: 'Confirm Action',
  content: html`
    <dees-form>
      <dees-input-text
        .label=${'Enter reason'}
      ></dees-input-text>
    </dees-form>
  `,
  menuOptions: [
    {
      name: 'Cancel',
      action: async (modal) => {
        modal.destroy();
        return null;
      }
    },
    {
      name: 'Confirm',
      action: async (modal) => {
        // Handle confirmation
        modal.destroy();
        return null;
      }
    }
  ]
});
// Component usage
<dees-modal
  heading="Settings"
  .content=${settingsContent}
  .menuOptions=${actions}
></dees-modal>
Key Features:
- Backdrop blur effect
- Customizable content using HTML templates
- Flexible action buttons
- Outside click handling
- Animated transitions
- Automatic window layer management
DeesContextmenu
Context menu component for right-click actions.
<dees-contextmenu
  .items=${[
    {
      label: 'Edit',
      icon: 'edit',
      action: () => handleEdit()
    },
    {
      label: 'Delete',
      icon: 'trash',
      action: () => handleDelete()
    }
  ]}
  position="right"    // Options: right, left, auto
  @item-click=${handleMenuItemClick}
></dees-contextmenu>
DeesSpeechbubble
Tooltip-style speech bubble component for contextual information.
// Programmatic usage
const bubble = await DeesSpeechbubble.createAndShow(
  referenceElement,    // Element to attach to
  'Helpful information about this feature'
);
// Component usage
<dees-speechbubble
  .reffedElement=${targetElement}
  text="Click here to continue"
></dees-speechbubble>
Key Features:
- Automatic positioning
- Non-intrusive overlay
- Animated appearance
- Reference element tracking
- Custom styling options
DeesWindowlayer
Base overlay component used by modal dialogs and other overlay components.
// Programmatic usage
const layer = await DeesWindowLayer.createAndShow({
  blur: true,    // Enable backdrop blur
});
// Component usage
<dees-windowlayer
  .options=${{
    blur: true
  }}
  @clicked=${handleOverlayClick}
>
  <div class="content">
    <!-- Overlay content -->
  </div>
</dees-windowlayer>
Key Features:
- Backdrop blur support
- Click event handling
- Z-index management
- Animated transitions
- Flexible content container
Best Practices:
- 
Modal Dialogs - Use for important user interactions
- Provide clear action buttons
- Include close/cancel options
- Handle outside clicks appropriately
- Use meaningful headings
 
- 
Context Menus - Group related actions
- Use consistent icons
- Provide keyboard shortcuts
- Consider position constraints
- Handle menu item states
 
- 
Speech Bubbles - Keep content concise
- Position strategically
- Avoid overlapping
- Consider mobile viewports
- Use appropriate timing
 
- 
Window Layers - Manage z-index carefully
- Handle backdrop interactions
- Consider performance impact
- Implement proper cleanup
- Manage multiple layers
 
Navigation Components
DeesStepper
Multi-step navigation component for guided user flows.
<dees-stepper
  .steps=${[
    {
      key: 'personal',
      label: 'Personal Info',
      content: html`<div>Personal Information Form</div>`,
      validation: () => validatePersonalInfo()
    },
    {
      key: 'address',
      label: 'Address',
      content: html`<div>Address Form</div>`,
      validation: () => validateAddress()
    },
    {
      key: 'confirm',
      label: 'Confirmation',
      content: html`<div>Review and Confirm</div>`
    }
  ]}
  currentStep="personal"
  @step-change=${handleStepChange}
  @complete=${handleComplete}
></dees-stepper>
Key Features:
- Linear or non-linear progression
- Step validation
- Progress tracking
- Customizable step content
- Navigation controls
- Step completion indicators
DeesProgressbar
Progress indicator component for tracking completion status.
<dees-progressbar
  value={75}           // Current progress (0-100)
  label="Uploading"    // Optional label
  showPercentage      // Display percentage
  type="determinate"  // Options: determinate, indeterminate
  status="normal"     // Options: normal, success, warning, error
  @progress=${handleProgress}
></dees-progressbar>
Key Features:
- Determinate and indeterminate states
- Percentage display
- Custom styling options
- Status indicators
- Animation support
- Accessibility features
DeesMobileNavigation
Mobile-optimized navigation component with touch support.
// Programmatic usage
DeesMobilenavigation.createAndShow([
  {
    name: 'Home',
    action: async (nav) => {
      // Handle navigation
      return null;
    }
  },
  {
    name: 'Settings',
    action: async (nav) => {
      // Handle navigation
      return null;
    }
  }
]);
// Component usage
<dees-mobilenavigation
  heading="MENU"
  .menuItems=${[
    {
      name: 'Profile',
      action: (nav) => handleNavigation('profile')
    },
    {
      name: 'Settings',
      action: (nav) => handleNavigation('settings')
    }
  ]}
></dees-mobilenavigation>
Key Features:
- Touch-friendly interface
- Slide-in animation
- Backdrop overlay
- Single instance management
- Custom menu items
- Responsive design
Best Practices:
- 
Stepper Implementation - Clear step labels
- Validation feedback
- Progress indication
- Error handling
- Consistent navigation
 
- 
Progress Tracking - Accurate progress calculation
- Clear visual feedback
- Status communication
- Performance monitoring
- Error state handling
 
- 
Mobile Navigation - Touch-optimized targets
- Clear visual hierarchy
- Smooth animations
- Gesture support
- Responsive behavior
 
Common Use Cases:
- 
Stepper - Multi-step forms
- User onboarding
- Checkout processes
- Setup wizards
- Tutorial flows
 
- 
Progress Bar - File uploads
- Process tracking
- Loading indicators
- Task completion
- Step progression
 
- 
Mobile Navigation - Responsive menus
- App navigation
- Settings access
- User actions
- Context switching
 
Accessibility Considerations:
- Keyboard navigation support
- ARIA labels and roles
- Focus management
- Screen reader compatibility
- Color contrast compliance
Development Components
DeesEditor
Code editor component with syntax highlighting and code completion, powered by Monaco Editor.
<dees-editor
  .value=${code}
  @change=${handleCodeChange}
  .language=${'typescript'}
  .theme=${'vs-dark'}
  .options=${{
    lineNumbers: true,
    minimap: { enabled: true },
    autoClosingBrackets: 'always'
  }}
></dees-editor>
Key Features:
- Syntax highlighting for multiple languages
- Code completion
- Line numbers
- Minimap navigation
- Customizable options
- Theme support
- Search and replace
- Multiple cursors
- Code folding
DeesEditorMarkdown
Markdown editor component with live preview.
<dees-editor-markdown
  .value=${markdown}
  @change=${handleMarkdownChange}
  .options=${{
    preview: true,
    toolbar: true,
    spellcheck: true,
    autosave: true
  }}
></dees-editor-markdown>
Key Features:
- Live preview
- Toolbar for common formatting
- Markdown syntax highlighting
- Image upload support
- Table editor
- Customizable preview styles
- Spellcheck integration
- Auto-save functionality
DeesTerminal
Terminal emulator component for command-line interface.
<dees-terminal
  .commands=${{
    'echo': (args) => `Echo: ${args.join(' ')}`,
    'help': () => 'Available commands: echo, help'
  }}
  .prompt=${'$'}
  .welcomeMessage=${'Welcome! Type "help" for available commands.'}
  .historySize=${100}
  .autoFocus={true}
></dees-terminal>
Key Features:
- Command history
- Custom commands
- Auto-completion
- Copy/paste support
- ANSI color support
- Scrollback buffer
- Keyboard shortcuts
- Command aliases
DeesUpdater
Component for managing application updates and version control.
<dees-updater
  .currentVersion=${'1.5.2'}
  .checkInterval=${3600000}  // Check every hour
  .autoUpdate=${false}
  @update-available=${handleUpdateAvailable}
  @update-progress=${handleUpdateProgress}
></dees-updater>
Key Features:
- Version checking
- Update notifications
- Progress tracking
- Automatic updates
- Rollback support
- Update scheduling
- Dependency management
Best Practices:
- 
Code Editor Usage - Configure appropriate language
- Set reasonable defaults
- Handle content changes
- Manage undo/redo stack
- Consider performance
 
- 
Markdown Editing - Provide clear toolbar
- Show live preview
- Handle image uploads
- Support shortcuts
- Maintain consistent styling
 
- 
Terminal Implementation - Clear command documentation
- Handle errors gracefully
- Provide command history
- Support common shortcuts
- Implement auto-completion
 
- 
Update Management - Regular version checks
- Clear update messaging
- Progress indication
- Error recovery
- User confirmation
 
Common Use Cases:
- 
Code Editor - Configuration editing
- Script development
- Code snippets
- Documentation
- Teaching tools
 
- 
Markdown Editor - Documentation
- Content creation
- README files
- Blog posts
- Release notes
 
- 
Terminal - Command execution
- System monitoring
- Development tools
- Debugging
- Training environments
 
- 
Updater - Application updates
- Plugin management
- Feature deployment
- Security patches
- Configuration updates
 
Integration Examples:
// Combining components for a development environment
<dees-form>
  <dees-editor
    .language=${'javascript'}
    .value=${code}
    @change=${updatePreview}
  ></dees-editor>
  
  <dees-terminal
    .commands=${devCommands}
    @command=${executeCommand}
  ></dees-terminal>
  
  <dees-updater
    .currentVersion=${appVersion}
    @update-available=${notifyUser}
  ></dees-updater>
</dees-form>
Performance Considerations:
- Lazy loading of heavy components
- Memory management
- Resource cleanup
- Event handling optimization
- Efficient updates
Accessibility Features:
- Keyboard navigation
- Screen reader support
- High contrast themes
- Focus management
- ARIA attributes
[End of component documentation]