Giter Club home page Giter Club logo

uinix-theme's People

Contributors

chrisrzhou avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

uinix-theme's Issues

Implement uinix-theme via uinix-css

uinix-theme is currently implemented using the delightful fela library.

uinix-theme does not expose fela APIs directly and intends to only support a closed set of CSS features.

Currently, fela is not a pure ESM module, and the implementation of uinix-theme using fela has clunky integration points (example).

It is likely expensive to research and abstract out of fela, but this issue tracks yet another opportunity for simplification of uinix-theme and formalizing the implementation of uinix-* packages as a closed ecosystem of well defined programs. This work would likely be implemented in a new package called uinix-css that uinix-theme consumes.

[v1.1.0] Support theme renderer in uinix-theme

Context

Currently, the theme renderer is left for consumers to implement. One such implementation is done in uinix-ui: https://github.com/uinix-js/uinix-ui/blob/1381d444b6481db4168891b3edff047855de4853/lib/renderer/create-renderer.js

Advantages

  • It will be more convenient to simply support uinix-ui's theme renderer in uinix-theme. Consumers may prefer to implement their own renderers optionally, but this should simplify using just uinix-theme for theme-related features.
  • Makes uinix-theme more useful (since it is currently just a trivial set of utils and theme spec).
  • Improves code maintainence of theme rendering related utils (e.g. plugins).
  • Simplifies uinix-ui to deal purely with integration of a collection primitive components against a UI system (mapping theme with styles).

Tasks

  • Implement createThemeRenderer which returns a theme renderer.
    • Implement renderer.render.
    • Implement renderer.renderStaticStyles.
    • Implement renderer.renderStyle.
    • Implement combineStyles util (merges and combines fela styles).
  • Update tests
  • Update types
  • Update readme (Intro/Gist, Use, API, Infrastructure).

V3 Release

Planned V3 Updates

Breaking

Removed

  • createTheme will be removed

Changed

  • renderer.render is renamed to renderer.load
  • renderer.clear is renamed to renderer.unload
  • renderer.renderStaticStyles is renamed to renderer.renderGlobalStyles

Inconsequential

  • Improved types (using csstypes)
  • Improve docs/tests

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.