From 4b4da8340db0f0a180dfadff15f88e061a53e5bb Mon Sep 17 00:00:00 2001
From: Cagatay Civici
- At PrimeTek, we are passionate about improving PrimeVue and would like to share our ideas for 2023 with the community. These are planned to be
+ At PrimeTek, we are passionate about improving PrimeVue and would like to share our ideas for 2024 with the community. These are planned to be
implemented in parallel to the regular maintenance work of the library involving review of issue tickets, PRs and PrimeVue PRO support.
WCAG Level AA compliance for all components with screen reader and keyboard support based on community feedback and audit tools. Move theming into core to replace sass repo. Initate the implementation of Pass Through Props to provide advanced control over component internals. Introduce new unstyled mode to fully support styling with CSS libraries like Tailwind. A built-in TailwindCSS theme using the new Unstyled mode. Introduce new design tokens for styled mode. Implement design tokens as CSS variables instead of SCSS. Implement figma design tokens as CSS variables instead of SCSS. Provide presets for the entire UI suite. Layout components, Typography, Meter, Drawer, Content for Steps... Move theming into core to replace external sass repo. Add filled and invalid props to form components. Begin RTL support. RTL support for the UI components. Drag and Drop utilities. Sheet, Event Calendar. Gantt Chart, Flow Chart. Initiated support for Figma Tokens. Update tokens to sync with the new styled mode. Initial release of Figma Tokens. Sync new design tokens. Build the infrastructure to generate themes from Figma. Migrate showcase application to Nuxt for SSR. Standalone demos for each component feature instead of one demo page that demonstrates multiple features. New component API docs generated by TSDoc. Add server backed data samples for data driven examples e.g. VirtualScroll, Lazy. New UI Blocks. Add 80+ New Blocks. Port the entire Blocks to Tailwind. Open source the sass based theming api and the visual designer. Implement a SaaS app to access the blocks instead of an offline download. Advanced Theme Editor with full control over the Theming API. Advanced Theme Editor App with full control over the new Styled Theming API. Bootstrap has a reboot utility to reset the CSS of the standard elements. If you are including this utility, you may give it a layer while importing it. Normalize is another utility to reset CSS of the standard elements. While importing the CSS file, assign it to a layer and define the layer order with primevue coming after the normalized layer.
+ Ease of customization may present an issue if you have global styles on HTML elements like inputs and buttons that are also utilized by PrimeVue because global styles with a broader scope e.g. button { } and no layer always
+ override the PrimeVue components leading to unexpected results. A common use case for global styles applying to standard HTML elements is CSS reset utilities to remove the default styling of the browsers. In this case, best practice is
+ wrapping your CSS in a layer like reset and make sure primevue comes after your layer since layers defined after has higher precedence. This way, your Reset CSS does not get in the way of PrimeVue components.
+ If you are using Nuxt, use the built-in cssLayerOrder property of the PrimeVue nuxt module instead. A CSS layer is utilized in styled mode only, in unstyled mode the built-in CSS classes are not included and as a result no layer is defined. This documentation only applies to styled mode.
+ The @layer is a standard CSS feature to define cascade layers for a customizable order of precedence. If you need to become more familiar with layers, visit the documentation at
+ MDN to begin with. In styled mode, PrimeVue wraps the built-in style classes under the primevue cascade layer to make the library styles easy to override. CSS in
+ your app without a layer has the highest CSS specificity, so you'll be able to override styles regardless of the location or how strong a class is written.
+
+ For example, let's assume you need to remove the rounded borders of the InputSwitch component defined by the theme in use. In order to achieve this, .p-inputswitch .p-inputswitch-slider selector needs to be overriden. Without the
+ layers, we'd have to write a stronger css or use !important however, with layers, this does not present an issue as your CSS can always override PrimeVue with a more straightforward class name such as my-switch-slider.
+ Another advantage of this approach is that it does not force you to figure out the built-in class names of the components.
+ Layers also make it possible to use CSS Modules, view the
+ Tailwind CSS includes a reset utility in base called preflight. If you are using this feature, wrap the base and utilities in separate layers
+ and make sure primevue layer comes after the base.
+ Roadmap
Accessibility
- New Styled Mode
+ Pass Through Props
- Unstyled Mode
- Tailwind Theme
- New Design Tokens
- CSS Variables
- Tailwind CSS Presets
+ New Components
+ New Styled Mode
- Form States
+ RTL Mode
- Drag Drop Utils
+ Advanced Components
+ Advanced Components
+ Tokens
- New Figma Tokens
+ Tokens
- Tokens
- Figma to Theme API
+ Nuxt
- Demos
- Documentation
- Blocks Update
- Tailwind Blocks
+ Open Source Designer
- Online App
+ New UI Based Theme Editor
-
+ The classes of PrimeVue is defined under the primevue CSS layer to be easier to customize by having low specificity. If you are using a CSS library that styles default HTML elements such as Tailwind Preflight, Bootstrap, Normalize
+ or similar a custom CSS layer configuration might be necessary. Note that this only applies to Styled Mode as Unstyled Mode does not use any default styles or layers. Here is an example with Tailwind, visit the
+
Defines the CSS layer order setting for compatibility with libraries like Tailwind.
+Defines the CSS layer order setting for compatibility with libraries like Tailwind and Bootstrap in styled mode. Visit the
Brand new default theme with a modern and attractive design.
+