Packages
The following packages are the building blocks used to construct domains all of Event Espresso's next generation UIs. The plan is to eventually release most of these through a package manager like npm or GitHub.
package | description |
---|---|
adapters | buffer layer between EE and UI elements from external libraries |
config | configuration logic powering this monorepo |
constants | business logic that remains the same for every domain |
data | base layer for our Apollo GraphQL implementation |
dates | date based components (used a lot in event management) |
edtr-services | base level services common throughout the EE admin |
ee-components | custom EE React components with embedded business logic |
events | no not that kind of event...this is an event emitter (coming soon) |
form | EE form system built on top of React Final Form |
form-builder | powerful drag n drop form building system |
helpers | common and useful domain related logic |
hooks | basic non-domain oriented hooks |
i18n | internaitionalization logic built on top of wp-i18n |
icons | automagically generated SVG images mostly for use in buttons |
ioc | facade for WP Hooks allowing inversion of control |
predicates | granular functions for composing business logic |
plugins | |
react-exit-modal-typeform | interface with typeform surveys |
registry | manages interoperability between domains |
rich-text-editor | makes text look more purdy |
rrule-generator | used for generating recurring event dates |
services | common functional business logic shared by multiple domains |
slot-fill | |
storage | client side persistence logic |
storybook | UI component development tool |
styles | shared Sass elements |
toaster | non-modal user notifications |
tpc | business logic for calculating ticket prices |
ui-components | UI only custom EE React components |
utils | common and useful non-domain related logic |
It is important to note that to avoid circular dependencies, we have implemented a strict set of rules pertaining to where packages
can be imported. Packages are orgnaized into "levels" and any code within a particular level can ONLY import code from
a lower level or external dependency. So for example, the packages in LEVEL 1 can NOT import any other package as they
are the absolute base level that everything else is built from. Conversely, the tpc
package in LEVEL 9 can import
any code from any other package because it is in the highest code level.
- LEVEL 1 :
constants
i18n
events
ioc
toaster
utils
- LEVEL 2 :
data
dates
hooks
icons
plugins
slot-fill
registry
styles
storage
- LEVEL 3 :
adapters
predicates
- LEVEL 4 :
ui-components
- LEVEL 5 :
rich-text-editor
- LEVEL 6 :
form
form-builder
rrule-generator
- LEVEL 7 :
services
- LEVEL 8 :
edtr-services
ee-components
helpers
- LEVEL 9 :
tpc