Installation
- cp .env.example .env
- using yarn 1
- yarn install
- yarn dev
Stack
VueJS 3, Nuxt 3, Chakra UI (vue-next), TypeScript, Vercel
State
- most of
apps
aren't used and will be removed soon, hence the duplication and lack of consistency. Most of work is happening inportfolios
. - chakra-ui is still in beta, but the core layout & theming components are fine. A number of interactive elements are half-working, you can see the status on their roadmap, but beware that "Completed" doesn't mean pushed to NPM.
Todo:
- Split apps/ on nuxt
modules
, they're quite powerful and easy to use now. At the moment the transition is WIP, some components are modules already, others not yet.- for how to split
pages/
see the example from docs - Simplify naming of components. With the
modules
feature there's no need to bother with the namespacing.
- for how to split
- Wrap more of Chakra components into
src/modules/formkit
, eg asf-textarea.vue
.
Caveats
- a number of chakra-ui components don't work in practice on vue-next, eg
CDrawer
andCMenu
. That's why most of components insrc/apps/chakra/
are simple replacements.- A number of components have been fixed since I started this project so don't use apps/chakra for them anymore, specifically
CTable
CCheckbox
CTabs
CTooltip
CModal
- in the latest
yarn.lock
you need to setv-if="state.isOpen.value"
along withv-model="state.isOpen.value"
. Perhaps becauseemotion
doesn't like to render something without a node, and a node appears only afternextTick()
call that adds the target nodes.
- in the latest
- Packages we no longer need since they work in chakra now
vue-final-modal
floating-vue
- ok to use for dropdowns, but not tooltips
- A number of components have been fixed since I started this project so don't use apps/chakra for them anymore, specifically
~/apps
doesn't export its components unless you add the directory (and all its children) toindex.ts
. It's a Nuxt bug inyarn dev
, it works normally if you runyarn build && yarn dev
. But for now keep adding dirs & subdirs toindex.ts
.floating-vue
doesn't work with chakra elements, but wrapping its slot children in adiv
works- HMR doesn't work with two
CFlex
properties, specificallyalign
andjustify
, but adding & removing akey="1"
props helps to force-trigger it. Or use the full notation asalignItems
- files in
/public/
sometimes don't reload until you delete the.nuxt
generated folder, a cache bug