Тёмный

Panda CSS First Impressions | Theo Reacts 

Theo - t3․gg
Подписаться 287 тыс.
Просмотров 85 тыс.
50% 1

Panda CSS is interesting. It takes a lot of lessons from Tailwind and the ecosystem around it. Possibly too many of those ideas...
Article: newsletter.baptiste.devessier...
Author's RU-vid: @baptistedevessier
Other sources:
/ 1751623290110509083
windicss.org/features/attribu...
github.com/francoismassart/es...
Check out my Twitch, Twitter, Discord more at t3.gg
S/O Ph4se0n3 for the awesome edit 🙏

Наука

Опубликовано:

 

21 фев 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 309   
@baptistedevessier
@baptistedevessier 2 месяца назад
Thanks for reviewing my article, Theo 🙏 I made a video response because Panda is actually great: ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-55DUCqUS4qM.html
@bholmesdev
@bholmesdev 3 месяца назад
“And pressing comma, and pressing enter, and pressing space…” So you prefer React to Svelte becaaaaause?
@yamyam263
@yamyam263 3 месяца назад
🤑
@patricknelson
@patricknelson 3 месяца назад
Thems fightin’ words. And I’m here for it.🍿
@t3dotgg
@t3dotgg 3 месяца назад
...fair
@chiberrykitchen
@chiberrykitchen 3 месяца назад
Exactly. This is the main reason I prefer svelte to React. Wasting my time writing extra functions and return statements with curly braces etc
@dimaorols8143
@dimaorols8143 3 месяца назад
There's a TypeScript library for CSS. That's insane.
@jacoblockwood4034
@jacoblockwood4034 3 месяца назад
Actually, there's hundreds of TypeScript libraries for CSS. Most of them are insane.
@Sindoku
@Sindoku 3 месяца назад
React has built in types for css attributes, it’s nothing new
@hawtpawkithero
@hawtpawkithero 3 месяца назад
Yeah! I hate it when my compiler catches typos.
@semyaza555
@semyaza555 3 месяца назад
4:53 Panda kicked Theo in the balls Lmfao.
@thecodermehedi
@thecodermehedi 3 месяца назад
🤣🤣
@Shad0wL00p
@Shad0wL00p 3 месяца назад
Yeah, very funny. However I would argue that with where IDEs are going and with AI like Copilot, I don't actually type all these extra characters he is complaining about; I'd argue that its actually quicker to write my CSS this way with the aid of tools like Copilot than the tailwind classes. I think again this depends on the type of project you are working in, how often you're changing the styles etc.
@hamzaabamboo
@hamzaabamboo 3 месяца назад
Thank you for presenting with your views on panda. I love the flexibility it provides and it really shines when you build/use design systems. + Somehow i like my styles in jsx 😂
@GdeVseSvobodnyeNiki
@GdeVseSvobodnyeNiki 3 месяца назад
Days without yet another js/css library: 0
@somerandomchannel382
@somerandomchannel382 3 месяца назад
what is even going on? Panda vs TW? Isn't Panda more like Styled Components, emotion, radium, ? Also this totally removes why TW is used... TW is used for one reason, Not having to write CSS syntax but Classes directly. Panda seems to be 90% syntax based.
@everythingisfine9988
@everythingisfine9988 3 месяца назад
Most of the css I've written, was set it and forget it. But if and when I need to conditionally switch out classes. I'd use a scoped .module.css file and use those classes or update a CSS variable. Tailwind plays nicely with this
@dealloc
@dealloc 3 месяца назад
I have rarely needed to switch out classes based on state. CSS is immensely powerful for defining styling for multiple combinations of state, especially additively. I almost always resort to put my state in either ARIA, or if they don't fit, I use data attributes. Then apply the styles I need using attribute selectors. This also works well with tailwind's `group` class for conditionally styling children based on parent state, without them having to pass that state everywhere just for styling purposes. This way also gives you the ability to align the UX with accessibility very easily. For example, if you have a nav with nav items and want to represent the current selected item/page, you can add the state on aria-current, and then style them with [aria-current=true] selector.
@zenpool
@zenpool 3 месяца назад
All I want isTailwind with first party solution to merging: twMerge built in
@sasivarnan36
@sasivarnan36 3 месяца назад
This would be a great addition to already great solution.
@cookie_doki
@cookie_doki 3 месяца назад
THEO! You don't have eslint auto sorting your component props on save??
@k-yo
@k-yo 3 месяца назад
Never got to deal with Tailwind although I'm super down for it and would love to try at work (I honestly have a hunch it would benefit our team a lot) However, I usually make some CSS/SCSS magic involving somewhat (not very much) complex selectors. Can Tailwind do that? Messing up with states, siblings, children, :has, :not, :is, pseudo-elements, custom properties etc. Is there an awesome reference the community usually points to of Tailwind best practices and patterns (especially for somewhat already large products that are scaling fast)? I understand there is a mental shift to go through in order to use it well, however I would love shortcuts into just "getting it" when I eventually hit a wall.
@xelspeth
@xelspeth 3 месяца назад
There aren't complex selectors in tailwind, no. The idea is that if you are using tailwind there is no need for complex selectors because there is no label that :has an input inside of it, instead there is just a label with extra classes. But even if you need complex selectors, tailwind is just an addon, you can always just write a custom class and custom selectors and just run them beside tailwind, you can also just add tailwind to existing projects and only use it starting from then and refactor old code as you go along
@RachelDotey
@RachelDotey 3 месяца назад
Do you have a video talking about performance improvements for tailwind classes? You mention a few items such as consistent class order. I would love to learn more.
@MrMudbill
@MrMudbill 3 месяца назад
I don't think consistent class order has any impact on performance. It's more for predictability and readability. But 'performance' encapsulates many topics so maybe you're thinking of something different than me.
@k-yo
@k-yo 3 месяца назад
Would love to hear Theo's take on Adam Argyles's Open Props 👀
@jenreiss3107
@jenreiss3107 3 месяца назад
I ran into the JIT problem when I was trying to use a dependently typed language to generate static types based on a tailwind config file at compile time. I.E. your component takes an enum type ike ("red" | "green" | "blue") as a parameter to determine its color, but that enum is generated through a dependent function like (generateTailwindTypes: (tailwindConfigPath: string) -> Type). the dependent function worked great, but the styles weren't picked up by the compiler because they were generated on the fly
@smthngsmthngsmthngdarkside
@smthngsmthngsmthngdarkside 3 месяца назад
larg codebases: tailwind classes: 80% of your markup characters are going to be this single character soup. add in responsive rules and its N+1 pandacss: typesafe, design system constraints, build type css. i've used tailwind on a large project. it's unmaintainable. you guys must be making throw away embeded adverts.
@kippeneneieren2039
@kippeneneieren2039 3 месяца назад
yeah, the comments really show the audience of theo. mostly indie devs or people in small projects.
@rand0mtv660
@rand0mtv660 3 месяца назад
What is actually unmaintainable about Tailwind on large projects? You still use components and work with them, it's not like you copy paste all those classes around each time you use an element? You create a component and you use it, what does Tailwind actually make worse about that? And btw, any project is unmaintainable if developers are messy. I unfortunately had the "pleasure" to work in a styled-components codebase that had type safety with Typescript and well defined design tokens and it sucked. It was the worst experience I had writing CSS ever. I would pick Tailwind over that any day of the week. Hell, I would pick working in fully vanilla CSS over that experience any day of the week.
@IanJamieson
@IanJamieson 3 месяца назад
When you're applying the recipe, there's a way of adding it directly to the className without using the styled approach. I just can't remember off the top of my head as I'm on my phone.
@handomize
@handomize 3 месяца назад
Wouldnt panda's whole type safety be thrown out of the window the moment you have to type components names on a string?
@oscarljimenez5717
@oscarljimenez5717 3 месяца назад
No, those strings are to create new Components. You're not assign it to Components, your creating Components with styles. But that's a advanced use case that usually nobody should use. But they want to give you the ability to do it.
@handomize
@handomize 3 месяца назад
@@oscarljimenez5717 ooh okay thats interesting, didnt realize that
@SnowTheParrot
@SnowTheParrot 3 месяца назад
Great video Theo :) Love your takes!
@user-zu6lo5gj7j
@user-zu6lo5gj7j 3 месяца назад
Which browser do you use? This side tab management looks great.
@swarooprajwal8034
@swarooprajwal8034 3 месяца назад
arc
@erics2133
@erics2133 3 месяца назад
Doesn't returning a component instead of a list of classes make using that in the more template-oriented frameworks difficult/problematic?
@DullJoker
@DullJoker 3 месяца назад
The only reason why im not completely against this is only because it does output the styling to tailwindcss-like classes. I could see this being useful (eventhough its more typing) for people who haven't used tailwindcss before (since this markup seems a little more verbose).
@speedykiller619
@speedykiller619 3 месяца назад
What is the microphone do you use❓
@smbmusic9440
@smbmusic9440 3 месяца назад
To expand on what you speak about at 15:56, you can get dynamic class names to work with tailwindcss with the use of safeList in the tailwind config file. You can define patterns for class names that you want to ensure are included by the tailwind compiler, allowing you to dynamically create the className string as you did return `bg-red-${num}`. Disclaimer: This will add some overhead as classes that are potentially never used will still be there, not here to argue for or against it. You probably want to use it sparingly, if at all. To do it, you can add something like the following to the tailwind.config.js file: safeList: [ pattern: /^(bg-(?red|slate|zinc|stone)-(?:400|500|600)) ]
@roguealien666
@roguealien666 3 месяца назад
It makes everything harder to start and learn. The only difficult part from tailwind is getting it to “work” with your project and learning the styles but once you know the pattern is pretty much there. And tailwind merge is easier to read and make it work
@dheerajsinghnagdali
@dheerajsinghnagdali 2 месяца назад
I was the worst at CSS before Tailwind. I used to get so frustrated that I didn't wanna build any websites after writing a few lines of CSS. Then, I found Tailwind CSS and never looked back. Now, I absolutely love building UI and components using it. Tailwind made me so good at building UI that I can now easily pull off truly pixel-perfect UI. Matter of fact, I'm the one who is responsible for building truly pixel-perfect UI in the team.
@linkfang9300
@linkfang9300 3 месяца назад
Panda offers ways to config !== you need to use all the config. So, you can start easy and keep it easy until when you do need those config stuff. It's like React and Next.js have quite some built-in features, but that does not mean you have to use all of them in your project when you don't need to.
@vjau75
@vjau75 3 месяца назад
The article is wrong about CVA, you don't have to use styled to consume the cva.
@wrux
@wrux 3 месяца назад
A 500 char line of Tailwind classnames is so so so much less readable than a Panda CSS object. But the powerful features of Panda are in the more complex applications and design system bundling etc
@fungilation
@fungilation 3 месяца назад
skill issue and a multiline formatter for tailwind is a better idea than reinventing tw for worse
@syedmohammadsannan964
@syedmohammadsannan964 3 месяца назад
A 500 characters line of tailwind class names is likely the developer not writing decent code.
@wrux
@wrux 3 месяца назад
@@syedmohammadsannan964 ...or a developer writing good hover and focus states
@wrux
@wrux 3 месяца назад
​@@fungilationMy point here is that Theo went into this very biased and completely missed the point of Panda and went on a tangent about various non-core features
@wrux
@wrux 3 месяца назад
@@syedmohammadsannan964 Not at all. An example would be writing focus and hover states which often takes an absolute shit ton of Tailwind classes. When I worked with Panda I created a custom "hocus" condition for hover and focus style combined. Custom styling conditions coupled with layer styles made the Panda styling way simpler than in Tailwind
@VeitLehmann
@VeitLehmann 3 месяца назад
I saw the video thumbnail, then decided to look into the Panda docs, and quickly ended with the same conclusions like you. I think it's too complex and full of options to ensure a maintainable codebase. Right now, I have 3 styling solutions that I like for different reasons: - Tailwind (although I don't use it, I see why it's so popular) - StyleX (haven't used it as well, but it seems really great for authoring a shared component library for bigger projects) - Plain old CSS modules (so simple, perfectly solve the biggest pain points of CSS which is missing colocation and class name clashes, keeps all CSS features, and does nothing more)
@dealloc
@dealloc 3 месяца назад
CSS is more complex than Panda CSS then. Because you have a thousand ways to declare CSS and in different fashions (BEM? OOCSS? Neither?) so if complexity was the argument against Panda CSS, I don't understand your point. CSS modules only solves one problem, which is scoped styles. But the tools you mentioned avoids that too.
@VeitLehmann
@VeitLehmann 3 месяца назад
@@dealloc if you have scoped CSS, you don't need any naming convention like BEM or OOCSS anymore. That's the one major problem solved. The rest are well-documented CSS standards. So I think plain CSS, especially with CSS Modules, is way simpler and easier to get.
@dealloc
@dealloc 3 месяца назад
@@VeitLehmann You still need to name every class for every element that needs some styling, whether it's necessary or not. The problem of duplication is still prevalent, since they are scoped and makes it impossible to merge identical classes between scopes. CSS Modules is easy when you're working on single projects, but as you grow to multiple codebases it becomes increasingly harder to scale. I'm not against CSS Modules. But this is based on my personal experience, working on codebases across multiple projects. It grows exponentially, compared to solutions like Tailwind and StyleX, which grows linearly.
@greenspand
@greenspand 3 месяца назад
we love you Theo, keep up the great work. Learned alot from your videos.
@javiasilis
@javiasilis 3 месяца назад
The problem that happens at 19:19 should be fixed by implementing a "variant" pattern. You have: "primary", "secondary". If variant === "primary", then apply py-1. if variant === "secondary", then apply py-4. Only allow concatenating when you have no overlapping classes.
@dealloc
@dealloc 3 месяца назад
It's common to allow passing className from parent components. It allows for those components to be reused without having to define and update the component API with a ton of props just for styling purposes.
@javiasilis
@javiasilis 3 месяца назад
@@deallocJust had a case today that I needed to do that. Definitely retracting my comment.
@Sindoku
@Sindoku 3 месяца назад
I’ve used Chakra extensively in a previous job, so it’s nice to see what they are up to since it seems work on Chakra has been on hold for some time. I think Chakra and by extension Panda (which basically the primitives in chakra) are frustrating at first until you get comfortable with the work flow. Once you know it fluently, you have unlimited capabilities. There isn’t anything it can’t do. I don’t know why you have a problem with Chakra being a component library when you basically copy pasted Tailwind UI components for Upload Thing. While Chakra may be “componenty”, it still allows maximum flexibility on a level that no other library allows. You can control every aspect of how it looks and feels. It might not be the easiest process in the world, but doing everything it does will likely never be so easy, unless AI gets extremely smart all of a sudden.
@stimw7451
@stimw7451 3 месяца назад
If I want to have flexibility, I may choose shadcn-ui. If I need a component library that works out of the box, I will choose mantine. I've used chakra in several projects, and it's fine, but I don't seem to have a reason to use it anymore.
@zayne-sarutobi
@zayne-sarutobi 3 месяца назад
I've actually come across a few cases where I couldn't control certain parts of a chakra component via the API they provided. Other than that, it as a nice experience overall
@Panda3DS
@Panda3DS 3 месяца назад
Very cool. Personally I use Panda3DS though.
@almohhannad
@almohhannad 3 месяца назад
I can't understand how a tool being too flexible is a bad thing
@julienlecoq3539
@julienlecoq3539 3 месяца назад
It makes decision-making harder and parsing code harder. I like not having too much flexibility. I like being restricted, it usually makes me faster to program.
@julienlecoq3539
@julienlecoq3539 3 месяца назад
That’s what people likes about Go, no class level visibility modifier, no sealed class, no default implementation in interfaces, no inheritance, no a lot of things, which makes development in Go straight forward
@almohhannad
@almohhannad 3 месяца назад
react is too flexible, I would just htmx, no reredering no state management not a lot of things which makes development straight forward
@dealloc
@dealloc 3 месяца назад
@larbi State management is part of any meaningful application.
@SirFrey
@SirFrey 3 месяца назад
What the heck with CSS Modules? it seems like a pretty simple tool that allows you to write css much more faster and natively, it's very cool for me
@oscarljimenez5717
@oscarljimenez5717 3 месяца назад
CSS vars is the problem there. You don't have s way of having safe CSS vars. And also you could ended in huge bundle size. Btw, I'm a fan too, i use SASS modules at work, so i learn all their limits there.
@dealloc
@dealloc 3 месяца назад
@@oscarljimenez5717 That's just an editor problem. CSS vars can be statically analysed. In fact, I believe it's even built in to VSCode Intellisense if I am not wrong. As for your bundle size point. Yes this is a huge part of why things like Stitches, StyleX and Tailwind exists, and why prior art of "utility css" were conceived. Meta should know, they did a ton of work to minimize the amount of CSS they shipped on Instagram and Facebook, even prior to StyleX. That, and naming things sucks.
@oscarljimenez5717
@oscarljimenez5717 3 месяца назад
@@dealloc that's not a editor problem only, because you could have CSS variables that you received from your Node Modules, PandaCSS fix that. Everything is Typesafe, you can go many repos, proyects and packages.
@dealloc
@dealloc 3 месяца назад
@@oscarljimenez5717 As long as your CSS is imported _somewhere_, doesn't matter if from HTML (link/style), CSS (@import) or JS modules (import), it is technically possible to statically analyse any variables and different scopes. node modules are stored in your file system, so that's not a problem.
@oscarljimenez5717
@oscarljimenez5717 3 месяца назад
@@dealloc yeah, but that's not simple as you think. You could have some vars that you wanna import and some you don't. Usually TS, ESLint, etc, will ignore node_modules because can be super slow. So i understand your point, but is not so easy.
@eslint-plugin-tailwindcss
@eslint-plugin-tailwindcss 3 месяца назад
Looks like you forgot to add the link to eslint-plugin-tailwindcss in the description shown at 14:37 😇
@t3dotgg
@t3dotgg 3 месяца назад
Good catch, just added! Love y'all 🙏
@modernkennnern
@modernkennnern 2 месяца назад
Before really getting into Tailwind I thought I would like the "Attributify" pattern, but I've slowly - despite not using it - started liking the concept less and less.
@JS_Jordan
@JS_Jordan 3 месяца назад
I'll stick with tailwind, totally agree with the amount of special keys needed in panda. Doesnt look fun to write
@EthanStandel
@EthanStandel 3 месяца назад
Bet you might like Typewind 🤷‍♂ It literally compiles down to Tailwind strings but is safely typed with TypeScript that is generated based on your tailwind.config.js file.
@mattmmilli8287
@mattmmilli8287 3 месяца назад
I’m sticking with sass. It’s all we ever needed ^^
@Sindoku
@Sindoku 3 месяца назад
I agree with this. I have used it to generate all my utility classes, and I have a small config file that generates color classes for the theme, and that’s it. The power it gives you with for loops and mixins and whatnot make it incredibly easy to automate all the repetitive things. Still, tailwind is nice because it’s so popular that everyone will know the class names, but if you can’t use tailwind at work like me and you only have css or sass then sass it is. I essentially ended up making my own little version of tailwind.
@cooltune
@cooltune 3 месяца назад
Second this. Sass is basically the typescript for css. All its features will eventually make it into the core spec. All css frameworks are marked for depreciation for me from the get-go. We're basically on the cusp of another bootstrap age, where everything looks the same....once again some more. Cause lets face it websites already do, save for the color scheme and some graphics used.
@rand0mtv660
@rand0mtv660 3 месяца назад
@@Sindoku yeah I think that's the right approach. Where I work we are slowly switching to Tailwind for projects, but have used SASS for last few years and (S)CSS Modules just so that we get scoped classes so that we have to think less about naming things. We stuck close to vanilla CSS and that worked great for us. css in js libraries appeared and died and are now frowned upon, but that didn't impact us and projects we have worked on because we didn't use any of those. There are couple of downsides to doing this utility approach with sass for example if you have to generate all utility classes for each breakpoint you end up with an enormous CSS file in the end, but overall it's a good experience. I like the fact that valid CSS is valid in SASS. It doesn't reinvent CSS syntax, but rather adds some superpowers to it. This is why I like Tailwind. It's all CSS classes in the end and I do like the fact that Tailwind generates only classes that you use so CSS file size doesn't increase like crazy.
@rizqyhbb
@rizqyhbb 3 месяца назад
16:00 need to add safelist on tailwind config
@PaulSebastianM
@PaulSebastianM 3 месяца назад
I see this in the frontend world. Developers that are more concerned with presentational aspects don't make really like really really strong tools in the technical aspects, things like type safety, nice abstractions, great performance and so on. But javascript makes it easy to build so we get tons of these free tools. Which I agree is nice and not to be taken for granted. I just think we rely too much on Javascript when instead we should be relying more on preprocessing tools and compilers with strong static analysis... Which is another huge pain to do for JS because of how dynamic and loosy goosy it is with types.
@dealloc
@dealloc 3 месяца назад
Uh... every JS tool we use today are exactly relying on preprocessing since the very early days of JS. Babel, bundlers, TypeScript, CSS Modules, Tailwind, ESLint, lingui... I could go on. What tools are you referring to that people rely on too much that doesn't do any form of preprocessing?
@PaulSebastianM
@PaulSebastianM 3 месяца назад
@@dealloc I am trying to outline the issue with JS that are failed to be fixed with most preprocessor. It feels like the loopholes are just being replaced. ReScript is probably the only language that aims to really fix JS.
@noext7001
@noext7001 3 месяца назад
every time i see something like this, i asked myself if those guy work on real production product
@davixx1995
@davixx1995 3 месяца назад
28:05 peak theo face
@thederpykrafter
@thederpykrafter 2 месяца назад
I always want to use tailwind because it always looks so simple but somehow my brain just gives up when it comes to shorthand stuff so I stick to css 😢
@mattvicent
@mattvicent 3 месяца назад
It's weird that you like StyleX but not this when it comes to writing the object, since they are basically the same hehe Anyways, tailwind approach is better
@ZeldriFR
@ZeldriFR 3 месяца назад
Good point, they're the same. But only because of the merging style issue of Tailwind, I think Panda is a winner here, like having different behaviour based on the order of the class is awful, and possibly hard to debug.
@oscarljimenez5717
@oscarljimenez5717 3 месяца назад
That's because he hate Chakra UI team. Because for some reason the creator of TW hates deeply Chakra without a reason, saying things like the Chakra team copy some text of the TW docs. WDF, are TW not a Open Source proyect?
@Jay-kx4jf
@Jay-kx4jf 3 месяца назад
If you want css to get out of the way, tailwind makes sense.
@AndreGreeff
@AndreGreeff 3 месяца назад
"Tailwind makes CSS just get out of your way"... I guess that explains why I don't use it, I actually enjoy CSS, especially if I get to construct it from SCSS source files. (:
@rashim
@rashim 3 месяца назад
23:52 ~class~ time variance authority
@jazsouf
@jazsouf 3 месяца назад
What's wrong whit CSS modules? Why reach to these libraries like Tailwind, Panda or StyleX if you have CSS modules?
@simonswiss
@simonswiss 3 месяца назад
I cannot agree more with the "typing more characters" of the CSS-in-JS object syntax with nested keys, rather than a string of class, particularly when it comes to prototyping/iterating on designs in the browser, and speed/creativity is key. Matter of fact this is the subject of my upcoming talk for Epic Web Conf in April - "Unleashing Designers with Tailwind". Agree with you, the article by Baptiste was pretty great!
@smthngsmthngsmthngdarkside
@smthngsmthngsmthngdarkside 3 месяца назад
if you hate typing characters, why are you a programmer lmao
@smashbros8645
@smashbros8645 3 месяца назад
Bro doesn't know IDE types that for you when you press Ctrl+space or tab.
@MrMudbill
@MrMudbill 3 месяца назад
@@smthngsmthngsmthngdarkside if you love characters, why aren't you a book author?
@simonswiss
@simonswiss 3 месяца назад
I think you missed my point@@smthngsmthngsmthngdarkside
@davidsiewert8649
@davidsiewert8649 3 месяца назад
tldr: Tailwind won, every other styling solution lost. Join and embrace the new cargo cult of Tailwind!
@darrenpeng01
@darrenpeng01 3 месяца назад
lmaooo - i never knew uploadthing was using a tailwindcss UI template
@Descent098
@Descent098 3 месяца назад
Personally it feels like both of these exist exclusively to deal with the jsx problem of styles. Outside a jsx env tailwind and this seem pointless.
@supriyomonndal6199
@supriyomonndal6199 3 месяца назад
Make a detailed video on react strict dom.
@anhvuuc8693
@anhvuuc8693 3 месяца назад
The reason I use PandaCSS is I don't want someone can steal my CSS just buy copy html :D PandaCSS is good one, althought TW still has better dev exp
@chrsolr
@chrsolr 3 месяца назад
Not everyone uses VS-blip, BTW!!
@danielyrovas
@danielyrovas 3 месяца назад
Thanks Theo, normally not a huge fan of your takes, but I've been a tailwind convert after watching some of your videos (quite a few :P) and I agree with your thoughts on tailwind & panda in this video.
@ChadGauthier
@ChadGauthier 3 месяца назад
uh safelist for tailwind? Like don't have a file with everything you need.
@gtamy5544
@gtamy5544 3 месяца назад
"Tailwind keeping your bundle size tiny" - while making your js bundle larger
@NiklasZiermann
@NiklasZiermann 3 месяца назад
Love to see theo on such an emotional sine curve, being like 'Thats nice.. oh wait..' 😂
@edism
@edism 3 месяца назад
Seems more like a square wave.
@YuriPetusko
@YuriPetusko 3 месяца назад
Wait you never got to my favourite part of Panda (well and chakraui), jsx component where instead of pattenrs like css() or className, you just pass styles as attributes. e.g. ...
@YuriPetusko
@YuriPetusko 3 месяца назад
Panda is more of a low lever library. It's amazing, but unless you are building your own component libraries, the best DX comes once you start using one of the ready-made component libraries based on Panda. Like Ark-ui or park-ui
@andrewk2756
@andrewk2756 3 месяца назад
4:54
@YuriPetusko
@YuriPetusko 3 месяца назад
@@andrewk2756 Still not the same. Ark and park-ui auto generates all the possible components for you so you don't need to do any of this. I just run 3 commands on a new project and have a full component library with any possible building blocks and common elements (Button, Input, Select, Tabs, Link, Heading, Flex, Hstack, Vstack, Grid, etc, etc)
@andrewk2756
@andrewk2756 3 месяца назад
@@YuriPetusko Well I was replying to your original comment about attributes and that's exactly on the timestamp. You said it yourself Ark and Park UI do this stuff so it's not really a Panda's thing? I'm curious to check it btw now that you mentioned.
@YuriPetusko
@YuriPetusko 3 месяца назад
@@andrewk2756 Panda is a low level and framework agnostic. Where it shines the most is the component library built on top of it. Ark is the official one by Panda team, if you try it, make sure to try JSX components, it's much more pleasant to work with them and style them with attributes rather than classes (when it's compiled, panda turns them into atomic classes anyway). Park-ui is extra layer on top of Ark that adds opinionated pre-themed component for any use case like forms, sliders, tabs, containers, buttons etc. they have a cli command in getting started docs that will just generate all of them and put them in your folder for easy importing
@dv_interval42
@dv_interval42 3 месяца назад
EDIT: NEvermind you already mentioned it. I know this is heresy or something, but there's an ESLint plugin for TailwindCSS which points out "invalid" classes. Also since we already get auto-complete for TW classes with a VSCode plugin, I think these 2 features go a long way towards "type-safe" TW. I don't mind this solution in most projects.
@oussamasethoum1665
@oussamasethoum1665 3 месяца назад
one of the features i wanna see in tailwindcss sudo class group, something like this: lg:{bg-red-500 text-md}
@DmitryLapshukov
@DmitryLapshukov 3 месяца назад
Sometimes you have to press harder...
@svarshithkumar3847
@svarshithkumar3847 2 месяца назад
It's like chakra ui
@yanfoo
@yanfoo 3 месяца назад
Reusable component styles, aka "makeStyles" and "useStyles" is a plague. We have a project like this, with a styles modules that is more confusing than a simple CSS file because some styles are functions receiving properties to create conditional rules; different properties for different styles... all "any", of course. If not using TailwindCSS, my best choice is SASS, loading .module.scss files with clsx for conditional styles STRAIGHT from the component.
@theshy6717
@theshy6717 3 месяца назад
Tailwind is the only technology so far that I just can't imagine being beaten by anything, it's beyond perfect and challenging it feels similar to reinventing the wheel at this point
@Shad0wL00p
@Shad0wL00p 3 месяца назад
Tailwind is indeed amazing and I use it for a handful or projects, but it's not suitable for all use cases. We're using Panda CSS for some larger projects where what we need to achieve is more difficult with Tailwind. "reinventing the wheel at this point" - is that not what the Tailwind team have done? They've add classes that apply CSS styles, I seem to recall we could do that around Dec 17th, 1996 when W3C published the first standard for CSS (level 1)!
@upsxace
@upsxace 3 месяца назад
@@Shad0wL00p What can you NOT do with tailwind????? (or its "difficult")
@Shad0wL00p
@Shad0wL00p 3 месяца назад
@@upsxace Well some of it had to do with CSS variables that has been sort of resolved with version 3. The short answer is that we have a a bunch of UI's all built with a base theme; the UI's are "shared" between multiple clients and those clients have their own "branding", therefore we need to override bit s in the base theme to achieve their look and feel; we do NOT want to have all our themes defined in the same place as base, out client theme overrides are in separate repos being published separated and loaded at runtime. The issues we had were more around overriding CSS variables. It's more of a global vs scoped CSS variable issue, with Panda we can achieve what we need/want very easily, with Tailwind it seems to be a faff and gets into a bit mess. It may be that its possible to achieve what we needed, but we've already moved on and now we have type safety for our styles and clean and clear way for our engineers to build the component styles etc. I love Tailwind and I use it in several other smaller projects, but the short of it is that Tailwind has been perfect for smaller tailored applications, but an absolute nightmare for enterprise applications with many many themes etc.
@Shad0wL00p
@Shad0wL00p 2 месяца назад
@@upsxace You know what, given it's been a while since I looked at Tailwind and they have CSS var support in v3...I went back to try it again and found that I can actually achieve what I need to achieve now; for theme overrides (css vars) I used typescript types to define some css variables as a nested structure that I generate the css vars from; there is also a plugin you can use to put variables in under "variables" within the theme of the config too; using the typescript types gives us that type safety around the overrides to ensure that variable names are correct and not mistyped etc. Honestly, dare I say it, we may switch to Tailwind CSS again and abandon Panda CSS; not because there is anything wrong with Panda and it's pretty good, but Tailwind would be a better fit for us based on what we need to do, given that I can now do what we need and couldn't before. 😅
@thegrumpydeveloper
@thegrumpydeveloper 3 месяца назад
The no arbitrary value eslint rule falls down at a few hundred files. It was the slowest lint plugin by far, too slow for even locally let alone ci which made it unusable.
@anubra266
@anubra266 3 месяца назад
Could you expand more on this?
@Bryan-zo6ng
@Bryan-zo6ng 26 дней назад
I like it
@EnriqueDominguezProfile
@EnriqueDominguezProfile 3 месяца назад
At the end of the day it's a matter of taste. I can see how one might argue it's more readable and worth it. I can see how one might argue the opposite.
@mementomori8856
@mementomori8856 3 месяца назад
Tailwind might be the best thing to happen to FE development the past half decade
@jonothan
@jonothan 3 месяца назад
I reckon most are choosting tailwind because it's fun. Not sure any amount of features that don't make styling more fun will compete.
@indrajitsarkar3169
@indrajitsarkar3169 3 месяца назад
tailwind is the most abstract css can get as of now, any other solution now feels like more keywords to type. Also I never liked mixing JS/TS with css.
@shayneoneill1506
@shayneoneill1506 3 месяца назад
God I miss semantic html. We've strayed so far from the path....
@AlphaSteam2
@AlphaSteam2 3 месяца назад
I HATE Tailwind because I have to put everything on the same line. It's much more readable and maintainable to use the object syntax. "But I have to press enter" boo hoo. You won't break your fingers mate.
@nilskaspersson
@nilskaspersson 3 месяца назад
I just don't see the appeal of Tailwind or derivative projects. CSS Modules resolved all the same pain points with CSS since almost a decade ago. Do we seriously need all these libraries with non-standard syntax and configurations and unreadable git diffs and mandatory IDE plugins just so we don't have to switch tabs and type ".item {}" sometimes?
@rand0mtv660
@rand0mtv660 3 месяца назад
I think it's about convenience. I used CSS Modules for last 4-5 years I think and started using Tailwind about 6 months ago and would never want to go back to CSS Modules. The fact that I can just write classes and not worry about creating, importing and using extra files is nice. It's especially nice in those cases where you just have to add some margin/padding to a single element or just do some flex stuff to center it maybe. So instead of creating a css module file, creating a class and then importing and using it for that potentially one off thing, I can just write few classes and be done with it. And you can also have all those classes triggered on certain breakpoints if you need. One other benefit is that if someone joins a project and they used Tailwind, they don't have to decypher your custom styles, they can just use Tailwind. Regarding css in js in general, I think that's horrible and think that was a mistake really for the most part lol
@adamjones7497
@adamjones7497 3 месяца назад
Type safe CSS? Seriously? lol. I want 2005 back.
@smthngsmthngsmthngdarkside
@smthngsmthngsmthngdarkside 3 месяца назад
tell us you dont work in big teams or designs systems without telling us you're a noob
@adamjones7497
@adamjones7497 3 месяца назад
@@smthngsmthngsmthngdarkside lol. Can you elaborate on why one might need type safe CSS? Do it with a straight face.
@rand0mtv660
@rand0mtv660 3 месяца назад
@@adamjones7497 you don't need it, the same way you don't need type safe anything except code for super critical infrastructure maybe. Type safety in CSS is more about peace of mind and ease of work. I don't like these css in js libraries at all, but having type safety when working with design tokens is pretty nice really.
@adamjones7497
@adamjones7497 3 месяца назад
@@rand0mtv660 adding a layer of complexity to solve for a problem that doesn’t necessarily exist doesn’t give me peace of mind. - In terms of CSS specifically why not add audits in CI/CD instead of adding complexity to the implementation?
@rand0mtv660
@rand0mtv660 3 месяца назад
@@adamjones7497 what audits would you add? Why push that feedback that something is wrong into CI if developers can get it immediately inside their code editor? Don't get me wrong, I dislike css in js solutions in general, but I cannot deny getting that autocomplete inside the editor and type safety is a nice perk while working with them. It's not something you really "need", but it's a nice feature.
@brunoais
@brunoais 3 месяца назад
Every time I see these kinds of videos I end up thinking... These web guys really really like to complicate so much.... Everything is SO complicated when HTML + CSS + JS (with DOM) is already SOOO high level... I've always done CSS from scratch and I have a history of fighting vs other coders who like using frameworks and all sorts of stuff but I nearly always end up finishing first or near-first while doing most HTML+CSS+JS work from scratch. It's true I use libraries and I use writing accelerators but I usually end up winning. What I do loads fast, produces WAY smaller content and changing pages is pretty much near-instanteneous from how fast everything is just layed out. So when I see all of these tools... Is it really helping in the end? Or is it just 70% helping and then 30% fighting against it?
@BenRangel
@BenRangel 3 месяца назад
I feel the same way but I’m trying to make myself think ”maybe I’m just stuck in an old mindset”. Kinsa arbitrary we often care about serverside validation and safefty…but when it comes to html templates or css - we don’t care. Even though a css flex mistake could make the site unreadable when new ideas come along to suggest improved validation I feel like saying ”I’ve built sites for 15 years and never needed it” But it feels like old assembly pros saying ”written asm for 15 years and never needed a high level language” 😅 or ”never needed eslint” Most things are initially not strictly NEEDED but sometimes over time provide a small value
@spectrumdad_
@spectrumdad_ 18 дней назад
Yea, I'll stick to my Tailwind thanks lol
@RolandAyala
@RolandAyala 3 месяца назад
I liked pandacss in theory (typed css) and went down that path, but I found it to be too verbose and reverted back to tailwind.
@wojciechzielinski7825
@wojciechzielinski7825 3 месяца назад
One thing just puzzles me: why all the problems that are written about or discussed in such movies, all these issues that strange libraries try to solve, have never (at least since 2005) been a problem I had to specifically address? It seems to me that these problems are made up, and the libraries only aim to promote their authors.
@wrux
@wrux 3 месяца назад
If you hate "lg" styles being top level then just don't do that. There's other ways to apply responsive styling
@oscarljimenez5717
@oscarljimenez5717 3 месяца назад
I don't know, i think that was a mistake from the blog author. If i remember right, the correct and only valid way in PandaCSS is doing "_lg"
@wrux
@wrux 3 месяца назад
@@oscarljimenez5717 I think a better example would have been using something like: `padding: { base: 4, md: 6, lg: 12 }`
@matthewtetley7048
@matthewtetley7048 3 месяца назад
I feel like the creators need to take learning's from Sass and pre-processors eg mixins
@IceQub3
@IceQub3 3 месяца назад
Htmx mentioned
@rafcins
@rafcins 3 месяца назад
I can't go back to CSS in JS, I just moved to tailwind a year ago, please no
@TheD3adlysin
@TheD3adlysin 3 месяца назад
Hello I am a Primeagen chat member. So without further a-do PANDA DEEZ NUTZ!!!!! Thank you.
@alastairtheduke
@alastairtheduke 3 месяца назад
16:15 wtf are you saying?
@osman3404
@osman3404 3 месяца назад
another HUGE problem is the number of concepts to learn in order to use panda effectively. It’s like learning another Language or framework
@oscarljimenez5717
@oscarljimenez5717 3 месяца назад
No, you only use what you need. They give you all posible solution for different teams and problems. But you should always use the basic instead of learning all. For example, with the CSS prop and CVA you could do 99% of cases.
@smthngsmthngsmthngdarkside
@smthngsmthngsmthngdarkside 3 месяца назад
if you have this problem, why are you a programmer lmao?
@MobiusCoin
@MobiusCoin 3 месяца назад
CSS-in-JS solutions, build time or run-time, are not alternatives to Tailwind! Look, 70% of my work is In React but the rest of it is in Laravel, Rails, WordPress, plain ol' HTML, Tailwind works perfectly well with those. This will not.
@jouebien
@jouebien 3 месяца назад
Oh look it's exactly styled components right down to having css`` and shitty default mode that makes you have an individual style object for each element on the screen. Except it smartly maps stuff to classes.
@phyolim5064
@phyolim5064 3 месяца назад
4:53 was opposite of ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-G7lZBKFFnls.html
@Kane0123
@Kane0123 3 месяца назад
The thumbnail isn’t extreme enough.
@GermansEagle
@GermansEagle 3 месяца назад
Pressing more key is not bad if the code is more readable. You may understand it, but you're in a team.
@TheBswan
@TheBswan 3 месяца назад
Your team will get used to it. When you use tailwind, you get better at reading tailwind. I'm tired of this excuse that working on teams somehow justifies unnecessary verbosity.
@ancwhor
@ancwhor 3 месяца назад
​@@TheBswanbased. Thank god
@g.c955
@g.c955 3 месяца назад
not worth the switch, I still prefer tailwind
@vmohammad
@vmohammad 3 месяца назад
hi
@TheBswan
@TheBswan 3 месяца назад
hi
@wobsoriano
@wobsoriano 3 месяца назад
@@TheBswan hi
@discoRyne
@discoRyne 3 месяца назад
hi
@mks-h
@mks-h 3 месяца назад
hi
@MNbenMN
@MNbenMN 3 месяца назад
Hi there, Hello!
@red_991
@red_991 3 месяца назад
Fully agree with Theo here. This is not my cup of tea.
@Aestareth_
@Aestareth_ 3 месяца назад
if it's to make the development experience this horrible, might as well use vanilla CSS
@100timezcooler
@100timezcooler 3 месяца назад
i will forever disagree with theos opinion on whats easier to write/edit. The "atrributify" style is miles easier to parse and modify and not reliant on some external plugin that rewrites your taillwind classes to follow a particular order.
@btx47
@btx47 3 месяца назад
2:00 If you build UI components with Tailwind, and you want to adjust anything for a specific use-case, you are entirely lost, because you don't have any named class selectors. That's why I use Tailwind only with @apply inside scss.
@joshcorbett768
@joshcorbett768 3 месяца назад
Eww dude
@mahendrash7712
@mahendrash7712 3 месяца назад
I think they have just done
@rockywu3733
@rockywu3733 3 месяца назад
Just STOP stupid comments. Do you believe inline styles also exhibit pseudo selectors and atomic characteristics?
Далее
JS At The Speed Of C
27:55
Просмотров 120 тыс.
Cool Tools I’ve Been Using Lately
23:11
Просмотров 92 тыс.
I need your help..
00:28
Просмотров 4,9 млн
How is it possible? 🫢😱 #tiktok #elsarca
00:13
Просмотров 2,2 млн
НЕБЛАГОДАРНЫЙ ВНУК #shorts
00:22
Просмотров 314 тыс.
Facebook Tried Tailwind, Then Built This Instead
28:18
Просмотров 125 тыс.
Responding To The Tailwind Conspiracy
37:25
Просмотров 74 тыс.
Panda is better than you think
23:37
Просмотров 5 тыс.
UI Libraries Are Dying, Here's Why
13:28
Просмотров 264 тыс.
Vercel Gave Up On Edge
17:50
Просмотров 96 тыс.
React's Next Big Change?
35:05
Просмотров 109 тыс.
The INSANE Race for AI Humanoid Robots
1:20:32
Просмотров 25 тыс.
10 Tailwind Classes I Wish I Knew Earlier
13:31
Просмотров 157 тыс.