 It's been a lot of time working on with my colleagues and our clients. We of course are going to be talking about layout paragraphs, which is a Drupal module. Provides really easy to use, low or even no code, drag and drop authoring with a particular focus on folks that care about content. So marketers, editorial staff, et cetera, really seeks to make the experience easy to use for them. Real quick, has anyone seen this session before or seen me present on this? Oh, that's awesome, because it's going to be 100% the same. It's the last time I've done this. I was worried maybe too many people would. That's great. So by the end of the session, you should have everything you need to know to decide whether or not layout paragraphs is right for the next project. I bet it likely will be. And as well as everything you need to know to get started with layout paragraphs. My name is Justin. I'm the CEO and founder at Atten Design Group. We are a strategy design development company based in Denver, Colorado, back in the states. We are fully distributed. So we have people all over the states, as well as a few folks in countries all over the world. At my agency, we do everything involved in planning, designing, building, supporting, helping grow digital platforms, products, websites, web applications, primarily for mission-driven organizations with a real strong focus on mission-driven. For us, that means that most of our clients' domains are .gov.org.edu. So big in the non-prof space, higher ed, and government institutions. We're here this week. It's really, really super exciting to be back at Drupalcon Europe. I'm sure a lot of people are feeling that this week. For my agency in particular, we haven't been here in a really long time. It's great to be back after a number of years away. We do have a small, we have a table or a booth in the exhibit hall. Come see us, booth 18. We're giving away a pair of AirPod Pros that you can register for with this QR code. We're also handing out custom design to Drupalcon Prague sketchbooks. We'd love to hand out one of those to all of you. So come by the booth. And then we'd also just love to continue this conversation about layout paragraphs or anything else Drupal related or web related for that matter. Speaking of Drupal, well, I should back up a second. Our agency has been around for a little while. Started the company right out of college. What feels like now a lifetime ago, back in 2020, so 22 years. We've been working with Drupal for a number of those years, since 2006. So 16 years in Drupal, since version 4.7. Anybody here worked with Drupal 4.7? Okay, cool. A few things have changed since 4.7. There are a few things, there are three things I want to talk about just for a minute that I think haven't changed about Drupal generally just to kind of set up context for what we're going to be talking about today. The first is just the incredible community. This community is unlike anything else we've experienced. The community is huge, diverse, global, represents so many different needs and has so many different interesting people using Drupal for many different interesting things. First thing, second thing is flexibility. Drupal is still today incredibly flexible and its flexibility was something that first drew us to the product now 16 years ago. And I think that flexibility comes directly from the nature of the community. But the third thing, and the thing I want to spend some time on today, is that Drupal is still at the end of the day all about content. It's a content management system. For us, for myself, for our clients, that's super important. For our clients, mission and content are often one in the same. And to help our clients push mission forward and deliver on their mission, we have to get content right. And Drupal does a really fantastic job of that. I think one of the underlying reasons that Drupal is so good at working with content boils down to this really simple, but foundational idea of structured content. In my mind, that's important enough to throw up a quick slide that is missing, there we go, missing its image, throw up a quick slide. Based on Wikipedia, structured content, all we mean by structured content is content or information that is organized in a predictable way. Wikipedia goes on to say often with accompanying metadata. Again, simple idea, very foundational, Drupal handles this. The way we probably are all most familiar with is it with entities and fields, configurable entities and fields, content types with fields, custom entities, media entities, etc., entities, often that reference other entities with their own collections of fields. It's extremely powerful and it is this approach and support of structured content that makes Drupal so good at so many of the things we take for granted. Or at least that we use every day, things like migrating content in and out, building, decoupled or headless applications, creating once, publishing everywhere. Again, this idea is really foundational and baked into Drupal and makes it so powerful as a content management system. Though I think something that happens is as we have this tremendous flexibility in the platform coupled with this adherence to structured content, we end up with a lot of complexity. Anyone who here are developers would do some development. Okay, awesome. So we all know at least from whenever we climbed the learning curve, it was a serious thing and that developing with Drupal is complicated. How many folks here do more on the content moderation, the authoring side? Okay, also can be complicated. It's funny because this session is for you. Yeah, and it has created what I think is a bit of an irony that while Drupal is really good at working with content, it can be really difficult for content people to work with Drupal. That's something we run into all the time. Often it's articulated by clients as, hey, we're trying to decide between Drupal and WordPress. Drupal is too complicated. We don't need that. That's not going to serve our needs. We need something simple. And I think that it's misleading and it's taking people away from what might be the better offering simply because of complexity and the way complexity is showing up in the interface. That problem in my mind is really interesting. My agency is really interested in this problem. We've been convinced, we've become convinced, that we can really have things both ways, that we can both have structured content which is extremely valuable and important and again makes Drupal work the way it works. But also have flexible, easy to use interfaces. That's what I'm here to talk about. That's the context from which we're going to be talking about today. So thanks for being here, really excited to be talking with you guys. Let's dive in. What we will cover specifically today is first, what exactly is Layout Paragraphs? I want to talk a little bit about status and adoption. So Layout Paragraphs, it's a little more to it than I'll cover, but it's a Drupal module. So we'll talk about adoption and kind of where the module's at with the statuses. We're going to do a live demo, given the way things worked at the beginning. I'm maybe a little more nervous about that. I think it'll be all right, we'll see. Another live demo, gonna go fine, and then have plenty of time for questions. And I'll try to speed things along a little bit. I know we're running a little bit late because of technical issues in the beginning, I'd really love to have a chance to answer questions, have plenty of conversation about this as we get to the end. Some prerequisite concepts. Things that hopefully you have some understanding of that will make this easier. We're not really going to cover this stuff in detail. First, of course, experience using Drupal. Experience with the Paragraphs module. How many folks here have experience with paragraphs? Awesome. Okay, great, we're good. Configuring content types and fields, obviously you guys have done that. Working with users' roles and permissions, there's a lot of the permissions management stuff available in Layout Paragraphs. We're honestly not going to get too far into that today, if at all. Okay, so first, what is Layout Paragraphs? Actually, another question. How many people here have used Layout Paragraphs? Okay, cool. Great, okay, awesome. Just nice to know I'm in the right place here. So first, it's a Drupal module. It provides low or no code drag and drop content authoring. So the idea is really simple, drag and drop content authoring without having to write a bunch of code. It's built on the structured content model, specifically because it's built on top of paragraphs, which embraces again that whole idea of fieldable entities. Because it's built on paragraphs, it leverages familiar workflow and configuration. So fields, field widgets, field formatters. There are a lot of other systems available in Drupal. One that comes to mind is Gutenberg, a really powerful system for creating complex types of content. But it kind of takes site builders and owners away from these more familiar constructs. It's different than fields, field widgets, and formatters. Whereas Layout Paragraphs is still working within all of the field stuff that we're familiar with. No migration necessary. We'll take a look at exactly what this means and how Layout Paragraphs works with paragraphs out of the box. And then finally, and this is new in the 2x version, which has a stable release now, Layout Paragraphs provides APIs for further building on the authoring experience. As I said, we're super interested in this kind of problem space of improving the authoring experience, making it work really well for editorial marketing staff. I've been investing a lot in building on top of Layout Paragraphs for doing just that. All right, current status. The module page, Drupal.org slash project slash Layout Paragraphs. I'll throw up contact info at the end of this talk. There's a collection of other modules, some on GitHub, some on Drupal, without getting too much into the weeds, but getting into the weeds a little bit. When we're not quite ready to respond in the issue queue, it stays on GitHub. Once we're ready to respond to the issue queue, or we think we're ready to respond in the issue queue, we move things over to Drupal.org. There are a few modules built on top of, or they're in the ecosystem for Layout Paragraphs. I'd be happy to send you all information if you just get in touch with me after. There is currently a 2x stable release. Took quite a while getting here, but we've got a 2x stable release. It has full automated test coverage, well, almost full automated test coverage. One caveat that I'll get to in a minute. Provides an API for building on and extending the authoring experience. We'll take a look at what that can look like, although it is quite flexible, so it can look like many different things. Finally, one piece that ships with Layout Paragraphs. For those who are not yet familiar, this will make more sense here in a minute. There is a front-end builder, the Layout Paragraphs builder formatter. That's still in experimental mode. There's a couple critical issues that we need to nail down just to get that piece ready to remove that denotation of it being an experimental mode. Just the formatter, not the widget. Adoption is growing, so this is over the last couple of years. Over here somewhere is when I gave this talk in Drupalcon Portland, so it's just awesome to see adoption continue to grow, and more and more people moving to the 2x branch. All right, let's take a look at how it works. Then just one more quick show of hands, like, who all has not seen Layout Paragraphs in the way it works? Good number of people? Okay, great. Cool. So I'm going to start with something really basic, just again to illustrate the concept. We'll use case studies from Atten as an example of the kind of content that we wanted Layout Paragraphs to support. So what we need for case studies is the ability to flexibly tell the story of how we solved a particular problem for a particular client. I'll go, this is just a Drupal9 site that has some default content. This site installs with a helper module that just spins everything up. I just ran the script a few minutes ago, so this is a fresh new site with just a few pieces of content. We'll go over to admin content. We're going to start by looking at what Drupal provides out of the box with an article. This is going to be material that everyone is very familiar with already. We are using the Olivero, am I saying that correctly, that just the new default Drupal front-end theme. We're using the default fields that are available in an article. If I'm trying to tell the story of how we worked with a particular client, this works. It definitely delivers on that structure piece of structured content. We have a title field, image, some text. We can flexibly edit the text. But if we want to tell a story that goes more in-depth and that maybe layers, text with other images, slideshows, videos, et cetera, we need something a little bit more complex. And that is what paragraphs is really awesome for. We'll take a look at how that works. Keep in mind that all of this would need some front-end theming. Absolutely no work has been done on the front end of the site. Again, this is all just default install from Drupal. But if I scroll down, we now have an image followed by some text, another chunk of text, a couple of chunks of text. We have a slideshow here that, again, would need some front-end development, but it's working pretty nicely. An image, text, et cetera. And as I'm thinking about this in the context of the different types of case studies I might want to design or build, I might want flexibility, of course, to intermix these different sections. So they shouldn't all follow exactly the same format. And again, that's where paragraphs works really well. If I click Edit and just take a look at the paragraphs classic widget, we can see that each of these is its own paragraph. So a paragraph is just a bundle of fields. We can configure those to our needs on our site. We have a simple text field. We can rearrange these. So if I click and drag, that's been moved up. If I go down here, there's an image. If I want to move this image up the page, I can kind of do that, put it above Key Challenges. If I hit Save, we'll see that reflected. I'll leave that for now. So you can move stuff around. This talk is Layout Paragraphs. I think we should probably start talking about layout. I'll talk first about how layout may be used to work and some of the ways that we tried to make paragraphs provide layout force in the past. In the past, we might have something, let's say, container. Click on Add Container. Within Container, which is another paragraph type, we have a left column field and a right column, which reference their own paragraphs. So I might want to add on the left column, let's say I'll add an image. We'll grab an existing image. Bear with me. Select one. OK, great. So we've got an image. And then let's say, not over there. I want to add a block. Let's add some text, actually. So we'll call this left column. And then we'll do the same thing down here. And in the right, we'll just add a right column. So text in our right column. Now, you can imagine these paragraphs, in turn, could be somewhat complex. We could have images mixed with text, et cetera. There's really no way, once I've added these paragraphs, to drag what's in the right column up into the left column. What's in the right column really just belongs in that very dedicated slot within that paragraph type. And in the previous way of working with paragraphs, what we used to see a lot of without really heavily customized paragraphs, we would have to delete this one, add a text column over here, add it in, et cetera. And that gets a little bit cumbersome. And it can be particularly difficult for people to remember where they are in the system. So I want to drag this up. I mean, it's possible, gets a little bit challenging. That's really what layout paragraphs is intended to solve. And so we'll take a look at how that works. I'm going to just quickly go over to structure, content types, go to basic page. We'll manage the form display for our basic page. Layout paragraphs is installed and has been enabled. And I'll talk about how that works here in a second. We'll just choose layout paragraphs since it's been installed as our field widget. And then I'm going to do the same thing. Choose layout paragraphs for the formatter. Hit Save. Let's go back, view the content. Still looks the same. Hit Edit. This now looks totally different. So this is the interface provided by layout paragraphs. So a couple things. We have all kinds of controls provided by layout paragraphs right out of the box. All of these can be dragged around. We can move up and down with this bump. Hit Edit. And we're editing the text. Hit Save. And our changes are automatically immediately applied. If we want, we can duplicate. We'll look at that in a second. Let's say that we actually want down here. Instead of having this kind of over top of each other, we want to add some layout. We'll just click the plus button, choose a section, two column section, add that in, grab this piece of content, add it to the right. I'm sorry, that's the left column. Put this in the right. We can do the exact same thing down below. Maybe we'll do that in reverse. We'll go to column again. Add this into here. Get in there. And this into here. You guys get the idea, hopefully, get the idea of how that's working. All of this, unlike what we were looking at before, if I want to drag this image up into this section, absolutely not a problem. You can drag virtually anything into anywhere. Another really great idea here would be grab this section and put it inside this layout. Let's see if that even works. Nope, it doesn't work. I'll show you why here in just a second. You can nest layouts. If I click in here, yeah. You can nest layouts. And I'll show how that's working here in a second also. That's layout paragraphs. And it's really simplest form. That's what it does. It provides drag and drop editing for paragraph types and provides layout containers for the various paragraphs. There are a number of options. Let's save this. And go over to structure. Take a look at content types. Go back in the basic page. Manage form display. And let's see here. Let's see what some of the options are here. One thing that layout paragraphs provides is this nesting depth idea. A few options worth noting. You can choose what view mode to use in the back end. So if you wanted to have a different presentation of paragraphs while editing, you could set that up as a separate view mode than choose it here. Make that look a little bit different. Especially useful if you're doing complex form rendering in the front end and you want to do something simpler that admins can look at in the back end. Maximum depth says, how deep can we nest layouts? I don't use nested layouts very often, but you certainly can with layout paragraphs up to 10 nested levels. I'll just change that. Yeah, and I don't know why anyone would ever want to do 10, but we'll go back into our content. If I can find it, hit edit. So I said depth of two. Let's go find a layout here. And we'll add within this another section. We'll do a three column. And then we'll add within that another section. Let's do another three column. This is gonna get kinda nuts. And then we'll add, it's cool. And then we'll add, oh, we can't add any more sections because we said only two levels deep. And then there's actually a framework that controls all of this too. So if you wanna write your own rules for what's allowed in each region, you can do that. If you wanna write your own rules for what you can drag to, you can do that as well. This is using all of those APIs that exist in the module. Okay, that's the basics of layout paragraphs. I wanna show, I know we're starting to run short on time given the late start. I'm gonna show just a couple more pieces of this. I'm gonna not leave the site. I'm gonna hit save. We're gonna go over to manage display and choose instead layout paragraphs builder. Again, this is experimental. Two big issues with the experimental builder. It's not fully developed for translations yet. So the front end builder, there's still some issues with translations. It's close, needs a little bit more work for translations. It also just needs full test coverage. Whereas the widget has full test coverage. The format doesn't quite yet have full test coverage. Couple things to be aware of. And there are issues in Drupal.org for both of those things. We'd love to see people get involved there. But if I turn on that front end formatter, again, we're looking at manage display now. Different than manage form display. Go to the front end, just refresh. Now I, what just happened? Now I get this edit content wrapper. If I hit edit content, the exact same builder that we were just looking at in the form is available in the front end. And when you think about what that kind of unlocks in terms of building really interesting content tools, content editing tools for content people, at least to us, that seems like that's really where the power of this module is. It's in providing this drag and drop really close to what you see is what you get editor right in the front end. When you're done, you hit save. All this is done via AgedAct requests, close and it's done. And that's, again, in a very small nutshell, how layout paragraphs works both in the back end and front end. I think we've got just a few more minutes. I'm gonna show now how this works in a more customized environment. So I'm gonna take a look at our own agency website. Let me bounce them back and forth between this Google Doc so I don't have to type in front of you guys. We're gonna content. We use this thing everywhere. And you can see even on our homepage, it's using the layout paragraphs formatter with that wrapper that we just saw. We go into edit content, add content, choose case study. We'll just do something on our work with boulder.gov. This is your kind of standard Drupal form. Here's Jordan featured front and center. Scroll down to the bottom. This does work with content moderation. There are things to kind of be aware of as you're configuring it with that, which we won't get into too much today. Let's folks have questions. Hit save. Okay, and what we get right out of the box is you haven't created any content yet. Start creating content at a section. Again, you can see some of the customizations that are happening on this particular site. We'll add a one column. Within our one column, we'll add the most complicated component that we have. And it's still, I don't think, terribly complicated. All right, so this is where I'm gonna have to copy some text. Go down here and got some media library integration going on. Grab a couple of these images. Place them. I'm gonna rearrange them just because I know I like the other order better. Hit save, and that's looking pretty good. So it drops that content immediately onto the page. We're also using another module here that we developed and support called style options to add styles or to manage styles in a configurable, a central config file. I go into styles. This is looking pretty good. I'm gonna change to a light on dark color scheme though. Change the background. Not that background, change the background color. Hit save, and again, we see those changes immediately take effect. And then all the controls that we were looking at before are available here. I didn't look at duplicate. If I wanted to duplicate this for some reason, the duplicate button just duplicates the content. And however complicated your kind of section or paragraph is, it'll duplicate that with no problem. We'll get rid of that. Let's add a, actually let's add another section. This time we'll do a three column. We'll add some copy. Let's see, first. This is using one of those experimental models I mentioned provides inline editing specifically for layout paragraphs. I'm happy to follow up with you guys. I don't even remember the name of it offhand, but it's on our GitHub. I'm happy to follow up with information on that if anyone is interested. Add another text item over here. Grab that text too. Let's do it like that. Grab a third paragraph. All right, so hopefully everyone's getting the idea of how this works. We can drag all these paragraphs around. We can drag them wherever we want, literally wherever we want on the page. There are also keyboard controls both for accessibility purposes, but also because sometimes it's just easier to use the keyboard. So sometimes it's just easier to bounce things around quickly up and down a page with your arrow keys. Great. I'll show just real quick. If we edit this and reduce it down to a two column. One capability of layout paragraphs which is a little bit different than layout builder. When we change from one layout to the other, it will ask us what we want to do with items that would otherwise be orphaned. So there were items in the third column. What do you want to do with them? I'm gonna put them in the secondary column. Then when I hit save, that third column has been added to the second column. That's basically how that works. Just to really quickly, one more piece here and then we'll move to Q&A. If I go into the work section of our site, please load quickly. Of course it's not going to. There we go, all right. And we take a look at what the actual bolder case study looks like as we just kind of go down the page. You can get an idea for the types of components that are possible. And then navigating of course between these case studies, we're able to tell these stories really flexibly and they vary a lot from one to the other. So we're not locked into, while there are some things we do, we find ourselves doing kind of over and over like key challenges and the solution, where those exist on the page, where we inject slide shows, the column structure, et cetera, all of that can be handled just to the needs of each individual case study. All right, as I said, we're a little short on time today, just with some of the technical difficulties up front. I could keep building out this page, but I'm not going to. I think hopefully you guys all get a sense for how this works. I'd love to stop now and turn this over to Q&A and just address any questions anybody might have. Is the style kept for content when you move it from one section to the other one? Let's say for images, if you have a centered image in one section and then you drag it to another one, is the style kept? Yes, whatever component the style is attached to. So if the style is applied to a section and you move that section around, the styles go with it. If the style is attached to a paragraph within the component and you move that paragraph around, the styles go with it. Does that make sense? Does that answer your question? Great, great. We're coming. We'll see if I can get there and show you an example. Hiya. So we've spent ages and ages hacking around Gutenberg for WordPress and this actually looks better, so well done, that's amazing. One thing that Gutenberg does that our clients really like is that you can sort of type like a word processor. So you basically start typing, add a block, carry on typing. Is there any room for doing that sort of inline feeling thing? Yeah, great question. Appreciate that question. Thanks a lot and thanks for the kind of remarks about layout paragraphs. So I would say yes and no and it's interesting. That's also a goal of ours is to support that kind of really easy intuitive click and start editing. Our solution for that is that inline text editing capability that I mentioned earlier. So if we look at any of the text that's already on one of these case studies, if I click, I'm just immediately editing right here. Just like, you know, we can start typing away and that's immediately saved, not saved permanently, but immediately saved to this instance for when I go down and hit the save button. So that's one way we're adding that capability. The other way is if you do add in this context, again, if you add a text component, it just immediately drops that in place and you can start typing away. I think Gutenberg, because Gutenberg at its core really is a WYSIWYG and is a rich text editor, that piece of functionality is even faster and will always be sort of more native to that particular application, but this is how we're trying to push that in that direction. You get into five and they also work quite well. So there's all sorts of, it seems like one of these cases where you've got so many projects doing the same thing. So collaboration is a good thing if possible on these things. Yeah, that's a great comment. It's funny, something I often say is like Drupal's so flexible, there's literally 100 right ways to solve the same problem and then like 10 wrong ways for every right way, that kind of thing. So yeah, that's definitely true. You know, the biggest reason that we use Layout Paragraphs versus CK Editor 5 and Gutenberg is storage and it goes back to that structured content idea. When you use paragraphs, you're embracing all of the structured concepts or structured data concepts in Drupal, makes migrations easier, you can standardize on one way of doing things, makes it easier to manage permissions, you can turn permissions on and off per paragraph type, et cetera. A lot of that's possible with Gutenberg and CK Editor 5, it's just taking you into a different subsystem which can pose some challenges for future compatibility. Mike's coming. So could you tell me something about how do you define the layouts that are available? Oh, absolutely. Fantastic question and I would, so this is using Drupal's Layout API system which is in core. Is everyone already, how many folks are familiar with the Layout API system? Somewhat? Okay, great. So the Layout API simply provides a way for modules and themes to declare layouts. Each layout has a few different parts. It has the template for the layout. It has some metadata around like number of columns that maps to that template. And then it can also be attached to a library. So you could have, I mean, you would certainly have CSS in that library to manage the styling of the layout. And then it also supports optionally a custom layout plugin. And with that custom plugin, you can achieve backend functionality. So if you wanted to create a layout, I don't know, in this case, like style options, that's what we're doing. So that style options module I was talking about gives us the ability to add, for example, background images to our layouts using a custom layout plugin. So those three parts. I would definitely just look up the Layout API in Drupal. When you declare layouts, they're available to layout paragraphs. One important thing I skipped over, just moving a little bit more quickly here. To get layout paragraphs to work, all you have to do is turn on the module. But then you do need to have, see if we have just one second here. We do need to have under paragraph types. We need to use one of our paragraphs to kind of contain the layouts. And it can be any paragraph you want. It can be one that already exists. It could be one that you create. In this case, it was one I created. It's called section. When I go to edit section, this behavior is made available through the module. So once the module's there, you'll just see this. When you click it, you'll see what layouts are available in your system. If you're using Drupal 8 or 9, you will see layouts in there that you can apply immediately and just immediately use them. And that's, in fact, that's what these are. These are just core layouts just provided by the API. And then you can also create your own. I mean, in the case of our site, they're using custom layouts we defined. Thank you. Again, I'd love to continue this conversation for folks who can't get their questions out. Come find out. I'll be out in the exhibit hall all afternoon. So come find me. I'd love to talk to you too. Go ahead. Okay, so I was just wondering. Oh yeah, sorry. There it is. I was just wondering with more advanced options for the content creators, like being able to choose which margins you want or the background color or whatnot. How do you solve that? Yeah, great question. So we're using a module called style options. And style options allows us to configure on a per component type basis what the styles should be. So it's happening in a single configuration YAML file. These are all custom to the needs of this project to the needs of our website. So that can all be specified. Basically, the site builder creating this for your site would specify all of that in a configuration file. And the nice thing about that is you can manage it again, essentially, from one config file. One thing that used to be really difficult about paragraphs is having to add style fields to every single paragraph type you have. And if you ever edit one, you have to go back and edit it for every single paragraph you have. And that gets away from that need. So that's the style options module. Again, I'm happy to provide more detail about that if you follow up with me. I'm gonna throw up, I know we're about out of time. We've got one more question over here. Here's some contact info. And honestly, I know it's old school, but the best way to reach out to me is to shoot me an email. If you shoot me an email about any of this, I'm happy to follow up with resources about it and point you all to some of the modules that we're talking about or anything else. It's hopefully, well, it's likely obvious. I spend a lot of time talking about this and I'm really excited about this as a solution for content editors in Drupal. Do we have time for a couple more or are we? So yeah, a short one here. Oh yeah. So the style options is that that's not behaviors. It actually is a behavior, yeah. So it's one behavior? Yep, it's one behavior. So does it support any other behaviors or is that not really? Yeah, I have never tried it without layout paragraphs. So I don't know if it works just with paragraphs. Although it's, I mean, it should work. I've just never tried that. But it works just like, I mean it is a paragraph behavior. So you just turn on that behavior and it gives you the ability to configure style options. And I can show you, I think, exactly what that might look like if I get into. But if I enable further behaviors, right? Would they also be tabs there that I could? Yeah. Yeah, okay, all right. Other behaviors would too. The tabs that are on the site that I showed on our site, that's kind of customized to just show content and then styles. But as far as where those style options are coming from, whoa, a little lost in the thing here. There's a file, I promise, somewhere in here. Style options, there we go. So all of those styles are just defined in this one YAML file. And then it's the style options module, which is available on Drupal.org. To be honest, it's not nearly as far along. It's not nearly as developed as layout paragraphs. It's still in dev-only mode. If you use style options, expect to contribute to it. Either just in the issue queue, or even better, like do some, roll up your sleeves and do some programming. But all of these styles are defined in one file. And then at the bottom of the file, we apply them to the paragraphs that we want to apply them to. And right now, style options works for both paragraphs and layouts. Our goal is to extend that to other systems within Drupal as well. Thank you. Justin, we had a question online before we finish. The people who are watching online were not able to see the demo. And they've asked if there's a recording of your presentation elsewhere that they can watch online. Thanks, Jordan. Yeah, that's a great question. There is a recording online. If you just Google Drupalcon Portland layout paragraphs, I'm sure you'll find it. And I'm sure there'll be a recording of this one up soon too, so yeah. Thanks everybody, appreciate it, thank you.