EPAM UUI

repository·develop·Indexed 42 days ago

https://github.com/epam/uui

A React-based library of components and accelerators developed by EPAM Systems. It provides a rich set of UI components, common services like modals and notifications, and state-management primitives for forms and lazy-loading tables. The library includes core packages (@epam/uui, @epam/uui-components, @epam/uui-core), specialized tools like @epam/uui-editor and @epam/uui-timeline, and multiple styled theme skins including Electric, Promo, and Loveship.

Tokens
56.7K
Snippets
215
Records
385
Agent score
52%

What's inside UUI

  1. Overview of the @epam/uui-core package

    develop

    The @epam/uui-core package provides the foundational building blocks for the EPAM UUI library. It is designed to enable interoperability between different UUI packages and provides essential logic for application development.

    Key capabilities include:

    • Interoperability: TypeScript interfaces that allow various UUI packages to work together seamlessly.
    • Services: Core logic for API calls, error handling, modal management, and notifications.
    • State Management: Primitives for managing Forms, validation logic, and Data Sources.
    • Hooks: Specialized React hooks such as useForm, useTableState, and useVirtualList.
    • Utilities: Various helper functions for common development tasks.
  2. Overview of UUI Timeline package

    develop

    The UUI Timeline package is a specialized module within the EPAM UUI library designed for building Gantt-chart-like interfaces. It combines high-performance rendering with ease of development by using a hybrid approach: Canvas is utilized for high-speed rendering of timeline elements, while DOM elements can be used to simplify the development of user interactions.

    Key capabilities include:

    • Time-based Coordinate Computation: Helpers to calculate coordinates for timeline objects based on time.
    • Smooth Transitions: Support for smooth transitions between different positions and scales.
    • Hybrid Rendering: Mixed canvas-based and DOM-element rendering for a balance of performance and interactivity.
    • Core Components: Includes a basic timeline bar component, as well as timeline scale, grid, and navigation components to create a fully interactive timeline canvas.
  3. Overview of @epam/uui-db

    develop
    The @epam/uui-db package is an experimental state-management solution within the EPAM UUI library. It provides an immutable relational database on the client side to manage UI state. It is designed to handle complex data synchronization between the client and server, supporting normalized storage, transactional updates, and asynchronous bi-directional synchronization.
  4. Overview of the @epam/extra package

    develop
    The @epam/extra package is a specialized part of the EPAM UUI library. It serves as a sandbox environment for experimental components and ongoing development work. Developers should use this package to explore new or unreleased UUI features that are not yet part of the stable core packages.
  5. Overview of @epam/uui-editor

    develop
    The @epam/uui-editor package is a Rich Text Editor built on top of Slate.js. It is designed to provide a full-featured editing experience that is styled to match the EPAM UUI design system. It supports seamless transitions between view and edit modes using a modern floating panels UX.
  6. What is included in the @epam/assets package

    develop

    The @epam/assets package is a specialized module within the EPAM UUI library that provides the visual and stylistic foundation for UUI applications. It contains the following assets:

    • Icon set: A collection of standardized icons used across UUI components.
    • Themes and fonts: Pre-defined visual themes and associated typography settings.
    • SCSS folder: Legacy helpers and mixins maintained for backward compatibility with older UUI implementations.
  7. Use @epam/uui-test-utils for component testing

    develop

    The @epam/uui-test-utils package provides a collection of helper functions designed to simplify the creation of unit tests for UUI components. It is intended to be used alongside your testing framework (such as Jest or Vitest) to handle the specific requirements of testing UUI-based UI elements.

    For detailed guidance on recommended testing strategies and approaches within the UUI ecosystem, refer to the official UUI testing documentation.

  8. Use @epam/uui-docs to document UUI libraries

    develop

    The @epam/uui-docs package provides a suite of helpers designed specifically for documenting UUI libraries. It allows you to generate in-code documentation for React Component props and provides utilities for creating rich, interactive documentation environments.

    Key capabilities include:

    • DocBuilder: A tool to build in-code documentation specifically for React Component props.
    • Demo API & Demo Data: Utilities to provide realistic example property values for your documentation.
    • Sandbox Data Domain: TypeScript interfaces that provide structured data for documentation sandboxes.
    • Property Editors: Specialized UI editors for component properties, such as color pickers, to enhance the documentation experience.
  9. Understand the UUI Project Structure and Packages

    develop

    UUI is organized as a monorepo using Yarn Workspaces and Lerna. The repository is divided into several key packages that consumers use to build applications with themeable components, logic-only components, and core utilities.

    Key Consumer Packages:

    • @epam/uui: The primary package containing ready-to-use, themeable UUI components for both default and custom themes.
    • @epam/uui-components: Contains logic-only components. These do not include visual styles; styles are provided by the uui package.
    • @epam/uui-core: Provides the foundational layer, including core interfaces, types, services, data sources, hooks, helpers, and utilities.
    • @epam/uui-db: A client-side relational state cache.
    • @epam/assets: Contains the icon set, fonts, SCSS global variables, and common mixins.
    • @epam/uui-editor: A Rich Text Editor built on top of SlateJS.
    • @epam/uui-timeline: Components specifically designed for building interactive timelines.
    • @epam/uui-test-utils: Common utilities for writing tests using UUI components.
  10. Understand the purpose of @epam/uui-components

    develop

    The @epam/uui-components package provides a set of base, unstyled components designed to serve as a foundation for building custom, brand-specific component libraries.

    Key characteristics:

    • Unstyled: Components do not come with pre-defined visual styles.
    • CSS Marker Classes: Every component includes specific CSS marker classes. This allows you to apply your own branding and styles directly via these classes without having to override complex base styles or use high-specificity selectors.
  11. Features of @epam/uui-editor

    develop

    The @epam/uui-editor provides several built-in capabilities for rich text editing:

    • Basic Markup: Support for headers, bold, italic, and other standard text styles.
    • Media & Files: Embedding and resizing images, as well as embedding video, files, and PDFs.
    • Advanced Layouts: A full-featured tables plugin and additional markup blocks like quotes and notes.
    • UX Patterns: Modern floating panels for in-line usage, allowing for seamless transitions from view to edit modes.
    • Extensibility: The editor can be extended with custom components.