A monorepo containing UGRC's reusable React components, utilities, and configuration packages.
The storybook files are published to the web to view and learn about the components.
This monorepo contains the following packages:
A collection of React components implementing the Utah Design System. Includes spatial components for maps, geocoding, and location services built with React Aria and ArcGIS.
pnpm add @ugrc/utah-design-systemA React component that displays cursor coordinates while hovering over an ArcGIS map. Supports multiple coordinate systems and projections.
pnpm add @ugrc/mouse-trapShared utility functions and React hooks for UGRC projects, including helpers for working with ArcGIS maps and spatial data.
pnpm add @ugrc/utilitiesAutomatically switches between Esri CSS themes based on the browser's preferred color scheme (light/dark mode).
pnpm add @ugrc/esri-theme-toggleShared ESLint configurations for UGRC projects with support for React, TypeScript, and Storybook.
pnpm add -D @ugrc/eslint-configThe default Tailwind CSS preset for UGRC projects with support for React Aria Components.
pnpm add -D @ugrc/tailwind-presetShared TypeScript configurations for UGRC projects, including browser and Vite-specific configurations.
pnpm add -D @ugrc/tsconfigsSome packages in this monorepo depend on each other:
graph TD
utilities[utilities]
utah-design-system[utah-design-system]
mouse-trap[mouse-trap]
utilities --> utah-design-system
utilities --> mouse-trap
style utilities fill:#e1f5ff
style utah-design-system fill:#fff4e1
style mouse-trap fill:#fff4e1
@ugrc/utah-design-systemdepends on@ugrc/utilitiesfor shared utility functions and React hooks@ugrc/mouse-trapdepends on@ugrc/utilitiesfor coordinate projection utilities
The remaining packages (eslint-config, esri-theme-toggle, tailwind-preset, tsconfigs) are standalone and have no internal dependencies.
- Build the packages
pnpm build
- View the stories
pnpm storybook
Please use conventional commits with the following scopes:
monorepodesign-systemeslint-configlayer-selectormouse-traptailwindtsconfigsutilities
Within the utah design system use the lower snake case component name
buttontag-grouphooks
or if general package updates use
uds
To test these packages in other local projects use the pnpm link command. For example:
cd /my-app
pnpm link ../kitchen-sink/packages/utah-design-systemUse @ugrc/utilities by itself when you only need the shared helpers. Link both packages when you need unpublished utah-design-system changes, because it depends on @ugrc/utilities.
To remove the links later:
cd /my-app
pnpm unlink @ugrc/utah-design-system
pnpm unlink @ugrc/utilities
pnpm install