Design system.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

1.9 KiB

Philosophy

Design

  • Tesseract components follow a strict and simple design philosophy.
  • The aesthetics of the elements are rigid--any element which users can interact with should be easily recognizable--they are determined by the usage of the chosen accent color.
  • The look and feel of the elements are designed to be less opinionated as possible.

Engineering

  • Every component is a derivative of an existing HTML element, thus any Tesseract component can substitute for any HTML element with added capabilities like improved user experience and consistency.
  • In case of overloaded HTML elements such as <input>, Tesseract dissects the element into multiple components each having a single defined behavior.
  • Tesseract components gracefully degrade to their native counterparts, allowing user agents without client-side JavaScript to still use the components with minimal loss of functionality.
  • Tesseract components render Web-compliant HTML and CSS, thus making it resilient to future changes in the HTML/CSS specifications.
  • Tesseract components are designed to be used with popular JavaScript frameworks like React. Consumption of the components using the framework of choice should be seamless, even with the use of form-handling libraries.
  • Terminal-based browsers such as Lynx are used to test the components for accessibility and graceful degradation.

Accessibility

  • Components are made to be accessible according to Web standards (WAI-ARIA).
  • Focus handling is managed sensibly to facilitate functional keyboard navigation.
  • In cases where there are improvements in user experience, some elements may have different markup and appearance. Tesseract ensures components are still usable on most assistive technologies given both versions of the user interface.
  • All components are named in order to depict the purpose, the nature of data being operated, and UX expectations.