From c48f24a09c9f7d628b682cfd07a8d426d8bb1307 Mon Sep 17 00:00:00 2001 From: fredpena Date: Fri, 25 Jul 2025 08:54:25 -0400 Subject: [PATCH 01/10] docs: enhance description of TemporaryFileUploadHandler in file-handling.adoc --- articles/components/upload/file-handling.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/articles/components/upload/file-handling.adoc b/articles/components/upload/file-handling.adoc index 6ebd274303..1d4f0a8364 100644 --- a/articles/components/upload/file-handling.adoc +++ b/articles/components/upload/file-handling.adoc @@ -22,7 +22,7 @@ The following built-in implementations of [classname]`UploadHandler` are availab - [classname]`InMemoryUploadHandler`, stores uploaded files in memory - [classname]`FileUploadHandler`, stores uploaded files to the file system -- [classname]`TemporaryFileUploadHandler`, stores uploaded files to temporary filestly even when +- [classname]`TemporaryFileUploadHandler`, stores uploaded files to temporary files, typically using the system's temporary directory. This handler is useful when dealing with large files or when memory usage needs to be minimized. The temporary files are automatically deleted when the upload is complete or the component is detached. These are described in the sub-sections that follow. All of the build-in implementations extend [classname]`TransferProgressAwareHandler` and support <>. From d44f3dc179f51695db9d0854a0f2ec47dec67095 Mon Sep 17 00:00:00 2001 From: fredpena Date: Fri, 25 Jul 2025 10:29:24 -0400 Subject: [PATCH 02/10] docs: Clarify Spring Boot multipart limits and stream handling in Upload file size section --- articles/components/upload/index.adoc | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/articles/components/upload/index.adoc b/articles/components/upload/index.adoc index deaa19e715..df6e44de9f 100644 --- a/articles/components/upload/index.adoc +++ b/articles/components/upload/index.adoc @@ -272,8 +272,31 @@ endif::[] .Revalidate Size Limit on Server [NOTE] +==== This constraint is set on the client and is checked before contacting the server. +When using Java Flow with Spring Boot, file size limits are also affected by Spring’s multipart configuration. + +By default, Spring Boot applies restrictive limits that may cause uploads to fail — typically for files larger than 1MB. +You can increase these limits in your `application.properties` or `application.yml` file: + +[source,properties] +---- +spring.servlet.multipart.max-file-size=50MB +spring.servlet.multipart.max-request-size=100MB +---- + +Additionally, if you're using an `UploadHandler` or `StreamReceiver`, you may need to disable Spring’s multipart resolver entirely to allow the Upload component to handle the stream directly: + +[source,properties] +---- +spring.servlet.multipart.enabled=false +---- + +By default, Spring intercepts multipart requests and caches the file content before the Upload component receives it. +This behavior can prevent upload event listeners or stream receivers from working correctly. +==== + == File Actions From f9a035b1781910f6ee2caa0207b0fe9dd24ac8ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fred=20Pe=C3=B1a?= Date: Fri, 1 Aug 2025 12:25:27 -0400 Subject: [PATCH 03/10] Update articles/components/upload/index.adoc Co-authored-by: Marco Collovati --- articles/components/upload/index.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/articles/components/upload/index.adoc b/articles/components/upload/index.adoc index df6e44de9f..58232f391b 100644 --- a/articles/components/upload/index.adoc +++ b/articles/components/upload/index.adoc @@ -286,7 +286,7 @@ spring.servlet.multipart.max-file-size=50MB spring.servlet.multipart.max-request-size=100MB ---- -Additionally, if you're using an `UploadHandler` or `StreamReceiver`, you may need to disable Spring’s multipart resolver entirely to allow the Upload component to handle the stream directly: +Additionally, if you're using an [interfacename]`UploadHandler` or [interfacename]`Receiver`, you may need to disable Spring’s multipart resolver entirely to allow the Upload component to handle the stream directly: [source,properties] ---- From b61333731e9aa353e17b33e43f419b5f705505e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fred=20Pe=C3=B1a?= Date: Fri, 1 Aug 2025 12:37:37 -0400 Subject: [PATCH 04/10] Update file-handling.adoc Remove 'The temporary files are automatically deleted when the upload is complete or the component is detached.' --- articles/components/upload/file-handling.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/articles/components/upload/file-handling.adoc b/articles/components/upload/file-handling.adoc index 1d4f0a8364..4e7c2c43d5 100644 --- a/articles/components/upload/file-handling.adoc +++ b/articles/components/upload/file-handling.adoc @@ -22,7 +22,7 @@ The following built-in implementations of [classname]`UploadHandler` are availab - [classname]`InMemoryUploadHandler`, stores uploaded files in memory - [classname]`FileUploadHandler`, stores uploaded files to the file system -- [classname]`TemporaryFileUploadHandler`, stores uploaded files to temporary files, typically using the system's temporary directory. This handler is useful when dealing with large files or when memory usage needs to be minimized. The temporary files are automatically deleted when the upload is complete or the component is detached. +- [classname]`TemporaryFileUploadHandler`, stores uploaded files to temporary files, typically using the system's temporary directory. This handler is useful when dealing with large files or when memory usage needs to be minimized. These are described in the sub-sections that follow. All of the build-in implementations extend [classname]`TransferProgressAwareHandler` and support <>. From e86def7d411dc118bee17abf259a5fdfa03c807d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fred=20Pe=C3=B1a?= Date: Fri, 8 Aug 2025 17:41:43 -0400 Subject: [PATCH 05/10] Update vaadin-security-configurer.adoc Provided detailed documentation on what Custom Authorization Rules are, their use cases, and how they complement Vaadin's view-based access control. --- .../flow/security/vaadin-security-configurer.adoc | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/articles/flow/security/vaadin-security-configurer.adoc b/articles/flow/security/vaadin-security-configurer.adoc index 2766ef3485..0064aa0316 100644 --- a/articles/flow/security/vaadin-security-configurer.adoc +++ b/articles/flow/security/vaadin-security-configurer.adoc @@ -298,6 +298,19 @@ public class SecurityConfig { ===== Custom Authorization Rules +In Spring Security, *Custom Authorization Rules* are developer-defined rules that control who can access certain HTTP routes or resources. In Vaadin, they complement the access control already applied to views through annotations like `@PermitAll` or `@RolesAllowed`. + +====== Use cases + +- Protect REST endpoints that are not part of Vaadin navigation. +- Define public routes that don’t require authentication (`/public/**`). +- Restrict specific areas based on roles (`/admin-only/**`). +- Allow access to error pages without authentication (`/error`). + +====== How it works with Vaadin + +Vaadin uses annotations to control access to views at the navigation level, while Spring Security applies these *Custom Authorization Rules* at the HTTP request level. Both layers work together to ensure a secure application. + [source,java] ---- @Configuration @@ -343,4 +356,4 @@ public class SecurityConfig { }).build(); } } ----- \ No newline at end of file +---- From 23382d74a036e3837428d8e53e76a7a055764710 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fred=20Pe=C3=B1a?= Date: Fri, 8 Aug 2025 17:53:40 -0400 Subject: [PATCH 06/10] Update vaadin-security-configurer.adoc Documented the purpose and effects of disabling CSRF configuration and Navigation Access Control in VaadinSecurityConfigurer. Clarified default behavior, when it is safe to disable, and the implications for application security. --- .../security/vaadin-security-configurer.adoc | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/articles/flow/security/vaadin-security-configurer.adoc b/articles/flow/security/vaadin-security-configurer.adoc index 0064aa0316..c04ce633f4 100644 --- a/articles/flow/security/vaadin-security-configurer.adoc +++ b/articles/flow/security/vaadin-security-configurer.adoc @@ -340,6 +340,42 @@ public class SecurityConfig { ===== Disabling Features +The `VaadinSecurityConfigurer` provides some security features enabled by +default to ensure smooth integration between Vaadin and Spring Security. +In certain scenarios, you may disable these defaults to apply your own +custom security configuration. + +====== Features that can be disabled + +- **CSRF Configuration** (`enableCsrfConfiguration(false)`): + By default, the configurer automatically sets up Spring Security’s CSRF + filter so that Vaadin internal framework requests (such as UIDL, heartbeat, + and push) are processed without issues. + Disabling this means you will need to handle CSRF configuration yourself, + ensuring that internal Vaadin requests are not blocked. + +- **Navigation Access Control** (`enableNavigationAccessControl(false)`): + Vaadin enables `NavigationAccessControl` by default to check access + annotations (such as `@PermitAll` or `@RolesAllowed`) when navigating + between views. + Disabling this means Vaadin will no longer enforce annotation-based + navigation security, and you will need to implement your own access control + logic for view navigation. + +====== When to disable + +You should only disable these features if: + +- You have a clear, secure, and tested replacement for the default behavior. + +- You understand the implications of removing these protections. + +- Your application has special requirements that conflict with the defaults. + +In most applications, keeping these features enabled is the recommended and +safest option. + + [source,java] ---- @Configuration From 624d08b16b7f08c68a714b1a568843d7ea5ce57e Mon Sep 17 00:00:00 2001 From: Mikhail Shabarov <61410877+mshabarov@users.noreply.github.com> Date: Fri, 15 Aug 2025 15:49:46 +0300 Subject: [PATCH 07/10] Apply suggestions from code review --- articles/flow/security/vaadin-security-configurer.adoc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/articles/flow/security/vaadin-security-configurer.adoc b/articles/flow/security/vaadin-security-configurer.adoc index c04ce633f4..d562f6c94c 100644 --- a/articles/flow/security/vaadin-security-configurer.adoc +++ b/articles/flow/security/vaadin-security-configurer.adoc @@ -300,14 +300,14 @@ public class SecurityConfig { In Spring Security, *Custom Authorization Rules* are developer-defined rules that control who can access certain HTTP routes or resources. In Vaadin, they complement the access control already applied to views through annotations like `@PermitAll` or `@RolesAllowed`. -====== Use cases +====== Use Cases - Protect REST endpoints that are not part of Vaadin navigation. - Define public routes that don’t require authentication (`/public/**`). - Restrict specific areas based on roles (`/admin-only/**`). - Allow access to error pages without authentication (`/error`). -====== How it works with Vaadin +====== How It Works With Vaadin Vaadin uses annotations to control access to views at the navigation level, while Spring Security applies these *Custom Authorization Rules* at the HTTP request level. Both layers work together to ensure a secure application. @@ -345,7 +345,7 @@ default to ensure smooth integration between Vaadin and Spring Security. In certain scenarios, you may disable these defaults to apply your own custom security configuration. -====== Features that can be disabled +====== Features That Can Be Disabled - **CSRF Configuration** (`enableCsrfConfiguration(false)`): By default, the configurer automatically sets up Spring Security’s CSRF @@ -362,7 +362,7 @@ custom security configuration. navigation security, and you will need to implement your own access control logic for view navigation. -====== When to disable +====== When To Disable You should only disable these features if: From 282b9b2f493d0e405ad9fac43847417f50ad5a9e Mon Sep 17 00:00:00 2001 From: fredpena Date: Mon, 18 Aug 2025 14:37:20 -0400 Subject: [PATCH 08/10] docs: Add documentation for Lumo Utility Classes - Responsive Breakpoints --- .../styling/_images/align_items_large.png | Bin 0 -> 20071 bytes .../styling/_images/align_items_medium.png | Bin 0 -> 16482 bytes .../styling/_images/align_items_small.png | Bin 0 -> 15038 bytes articles/styling/_images/display_desktop.png | Bin 0 -> 18030 bytes articles/styling/_images/display_mobile.png | Bin 0 -> 12688 bytes articles/styling/_images/display_tablet.png | Bin 0 -> 13830 bytes .../styling/_images/flex_direction_column.png | Bin 0 -> 16915 bytes .../styling/_images/flex_direction_row.png | Bin 0 -> 16566 bytes articles/styling/_images/font_size_large.png | Bin 0 -> 42028 bytes articles/styling/_images/font_size_medium.png | Bin 0 -> 31328 bytes articles/styling/_images/font_size_small.png | Bin 0 -> 25537 bytes articles/styling/_images/grid_extra_large.png | Bin 0 -> 31331 bytes articles/styling/_images/grid_medium.png | Bin 0 -> 21208 bytes articles/styling/_images/grid_small.png | Bin 0 -> 16978 bytes articles/styling/_images/position_large.png | Bin 0 -> 23085 bytes articles/styling/_images/position_medium.png | Bin 0 -> 23041 bytes articles/styling/_images/position_small.png | Bin 0 -> 22626 bytes articles/styling/lumo/lumo-breakpoint.adoc | 976 ++++++++ articles/styling/lumo/lumo-breakpoint.html | 2035 +++++++++++++++++ 19 files changed, 3011 insertions(+) create mode 100644 articles/styling/_images/align_items_large.png create mode 100644 articles/styling/_images/align_items_medium.png create mode 100644 articles/styling/_images/align_items_small.png create mode 100644 articles/styling/_images/display_desktop.png create mode 100644 articles/styling/_images/display_mobile.png create mode 100644 articles/styling/_images/display_tablet.png create mode 100644 articles/styling/_images/flex_direction_column.png create mode 100644 articles/styling/_images/flex_direction_row.png create mode 100644 articles/styling/_images/font_size_large.png create mode 100644 articles/styling/_images/font_size_medium.png create mode 100644 articles/styling/_images/font_size_small.png create mode 100644 articles/styling/_images/grid_extra_large.png create mode 100644 articles/styling/_images/grid_medium.png create mode 100644 articles/styling/_images/grid_small.png create mode 100644 articles/styling/_images/position_large.png create mode 100644 articles/styling/_images/position_medium.png create mode 100644 articles/styling/_images/position_small.png create mode 100644 articles/styling/lumo/lumo-breakpoint.adoc create mode 100644 articles/styling/lumo/lumo-breakpoint.html diff --git a/articles/styling/_images/align_items_large.png b/articles/styling/_images/align_items_large.png new file mode 100644 index 0000000000000000000000000000000000000000..37fcd0341a385d26c013f741f0b85635d5f096df GIT binary patch literal 20071 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 literal 0 HcmV?d00001 diff --git a/articles/styling/_images/align_items_medium.png b/articles/styling/_images/align_items_medium.png new file mode 100644 index 0000000000000000000000000000000000000000..5d21a69c4617ff200ffecd512e5ae37ba795bcb3 GIT binary patch literal 16482 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 nFNA-u=P!>^j|DRlU3S zuKHDVpK$qK;;_(I&_F;yu#yrYih%0}pp-*`1HR!; zjE+9>2M|i2JrR3iV!(}q$hQ6O0vaIs$1oj!a%qm?zmU}7aiEAPG7fh?do%ZjEX4Lp zeTW9qAgw_B$?Mk&jDaLZ!m=}_CB^pQJ`h@v>|a5CJ0ZGGj;W7`w!s=04T*={D0_SE z>Ftqx)0!5rkY#4m9Hw{6z-&e4Qp%Vef94*(Y$wFi<>&;3P*928#d@W=VJw;}j{32tvO<`Ub)M%VC@dA_BFM)2Sr)~`)Ag?yW+)KK>G zpyalU26)tvZ)s#=1kb~Tkf%Kc4p{XLOB)bf(D@G92?Trq=+B^3eVi_cLDa#?|%qb zpt}S31}V}&srxnS5UrsW48U=K#QP$5jomr3;L!&%cOBcn`9NFy(09)5`Dp_529PQI z69miioE45JxFW)##fI|}02ssvdIH5Ycsw<;hlVw@pkMV921n>#hZti$7m zALXSMs^zoiQ~!B9L31X5WAjAdjrj^8G-6>i#W4E`gB&C|a-biLrsUWLzwmKj0YXFG5;%w{xeC+C_qZ0>~ZG9wY$m#>O;AS?c`kfJPLJcP-tm6kFb6-@cps*2(X`NMKsWgEpyrO!MzxoP3(Qq`*Es^!`zjqHl6 z>YS1u*>083dT`A_WnyJwaiiQ3(&%~*seA1sha=QkZm#P9vMP%T%o2^fcD+U|Cn0IA zNj2%RX07vr<+PTFmQdGJG1 zl`dY+{?c;-1tm;7QFjEGG5)LC69jITi=V_3&NmA3Pie~Rio9?z|!o~v}(9&_%=4QO0{z7 zKmO62Ti^D~cIkY?##X|Pku9Fa)oQ4Yy|mn5+gNcmb>->waecm^e1f@TUv*pcbFp_u z;AG*9;=GF5&iuFp4_kp(!uNiL^lPpSkgm8pfj#@7M7-|+? z#_UMy$b&v9wN|ZOEw;75t;j9-85y59*Em-!*Fn!~8)W<57o!)b*T&aPLz4!sGJy5! z`lNThm)Rc$0Z$(BhUE{7Jj!Yhg6>JL{riBpV2EH~-m*Tz6!aF}2gh%;2A%_D3N{v! zCZ-3CG?&$gx*B__m-(BZ-D_eV;uaB}D3%x$aaWOX(P42`5udQ92)gK$A@z}}sCK+c z#K~Bj$iZRJ;iVB-nmgSlr#bsBA8&<^KEw6B&0)1va~erKN7M36#iw~AsI=cFzk{Ik zR{Jloo>F#B~gh?BNdut=X<6ui-ltIK~`O9Y8yF-pkyx9r4aSkAD{f>GV;asONVY zUPkmMMgen@5nhTt!GGm{vTpj@=C$8yXnWg?RGH9_K%dExS@UW9sq`wh%}#D}wYFDh zvaNcd+P@rNbG30MjVg679oj;_xz!NVQRqI}nJw+6OWR0Yxh}d%xnws*>w>^zB`{-r7+-QdVNk@9OvTWd>0I z=lm)3U7W94*i!Ulm7VuX5npwCZD;k5z5M-7iddV%CWj}**PrS^-O!DUsmzK@l?>?^ zf8sr2dSBTWmmTxIxfr7dBiT{d*lSKfPK8a7=7Z*_){-Wvb;Au$xwqU4b2kfqhlxGq zzZQQNlFgE4tvRK6wA`QG+drI;kAsg#=}7c2&eYd$Zw#k~xwG@Lc~e2?blNYRUJcO; z&o@z5s7q_P^msj@eXAck1|L&w->;C_FYK~T98N6SPu&|YQx>Y9w!pg0-Z$UrHlI3t zUg6GX9>4OwwgSciyxjJ$rLG*Vqc`PxzuyF(g2qFw@C@)!`BVI~pG58@r|rmkS*3AE z%)q|NJzu?!uJuA-a^rK8c~?BP7z~*mJr~U$mLo;!L-e5ae#M}E=HHCw zsEyRde4pN$J-bi6+*r+>U)!;DtN3X>&s^z@ii`~Xcf56Bf zzsT_{c*#Zn01BP?fzSmGq$hHYz$&zb8Yf4H2PEPSw7RTX(a3w_+{;IrA@MDuB(_d= zQhy7H`XOxU`PzH%Ig2P!_+|5fUfm55!+I!-4ZyFeChC%=va&!_02&eqIMf0N6hHw3 z3KpOM0sTk_0fGQrkpM*`59B|sA9+9iLzn;4QBX-(QW9`gGIBIAv2`-HbB<*K)dz@L zwoq1gR+p9GGP1LwGcdL@G@*01vHyn!h{v4^K-!o%8xXkLSlc>rx$_eJs|Oc={->Ir zh~QscoUM3?)Me!fgzX$n2-xTt=opCjpa}>FcpQyQxfDgj{>={f#Y<%F>}=0PPw(dD zM(4&%XXj`}&&bKiNzcGU&%{Iv=t1k`Ve4$*PHXE#{69keuN)B*CnHA-duIzfTY`V& z8W`HSIP($_{iEnVpZ^)BiMz%BYO;0u_iX`gkp7<*dPX`1`v1rVu=4y<%O!8&Zepz= zVqpWA9)J!$MmA2KfA#dRSIhs)sp4efC~Ri~Q0dI~zbo@^ z=KpT|HzN=IKX?9LGx0yu{I6QTJo7>G(En%6_@Fn+SvY`zXu~8$1eM)^FLfZ?l||8c zi^z-EHO+yAphPPO<`s${slwC|P~-GOM2aKT5opRN2xLVO5Ks~733NQ^^W7lhev=eE zOMQ8fTQ^9unKTlv$zFZ-80)1!&2(`)9nW-eCNoJ85J5tMpn?E5Lf-iyW|L{Vo z-Rl6OpfFcg#}L|?NsaZoI2v@RS>P}T?#b_zGEn+=x^Dy~|3rNh)z0gt_F%iCUK!m@5r6tvfY+6jv=r5zU2TAuLCx~vmjZ#-w@7r6H zD&1%J9^JYmnNRg7{O4Zpg)v2UIE4hb4sWN$j(7z_Cm_x6iF^WmB1jTaQiF?^Qx1nC zA~gDpATbv!w912+r({OURsGdfO{1+YQF|w+{<`DbkaP{*Z}lze;R!_|D3CyZKFGQs zSEacthWAf@-JLG1hE-iJc_853fBJy)#CX8?4NYqWthYAAi0(G##r+V>dq4;aj~=Yh zTPgIq-a6T6R0=n?wz7$aABhb~G(+`%7+;Z)o8>k}3#LabBSjPx;0Im)_(Ct(Ph_;1 zqJ9&l5jr`}!Sl!MeBQrd?B&UKirT&3oOU5h=Q-D!-4u~Al&az8l$)kj5n3VBE!!i3 zv2r9LHVXubOGycNjZDqgioLRTXrgzJSZ}p~A}1%e-fY6X+-MOZofnTjDZQ~cy}5^{ z*4~|_>R*|ZMbQmv_<#n{gnY^7iX1D$XtG?>KDT@_u%u#zoK!W_%PT~jg&m6N4z<7A z6y@ONEO3pkI9V(ILA9}V1UX8cQ!`_})k6C#w>u0pqqSC>vvYq*dKcHGn&EQ1#e*ph z2Jqs^JA=;Xb%993z$}&@7BeeqdSWeqbYs%PVFA^isVHMeYpQyEJa8(yLMYen1-N`$ z52}1?VX!-v{j&2;4c#!h?XruPU-RzbuLPFoi=~1YI!(W#hcE2*)d?+*v{m|FK6MYYiXE= zD~QozwUJO2VNrBEtu_zf-83Gb^n~w@y>}nrX1h0FjzR*wJ%Ba)W)yMyUj6YcJ_ttikgg2 z>V$-ZB}eVcrbk70H7_e~p0*zeV;*X8e-Q9ocp_R@>hhcqatP${5bFq>a`*|1j&U=e zI(~mz=Umm4iIR0!N82nHaNupcyRWEPos09lCpDlr56czBTDynSmKM@>I4!{CyI2cS zyIFQ}SJb*T(H-*^$sAC(b=8fb3i>137t?RdFPtjfmZ>YdxQ#<3NtrJUu*XV%Uttp` zOXkWIRZXgW{Lq)9zL}bKs&JoatlH^-FF;CQG%Lj4ON7B2%v3=CwuZoOs@l)zCTypI zRMrPQTP`p5eAWu+2czgR0J`M85Z7C8?;qhhe$k~5Zq0|+_3qY2l!O6?MsiYgPYOARs@DW_`+Re0vYF$6M`>YWTkSOv%{j-9@#CFk)j@w@UhnRFD$@Y!)LwA) zr0N0#Z=F45T};l`Mg|29_&_W>Rl(KaY94LLerI?I=X-^qIm&KKts&kC;n&4jg-~th zd1+{BNz0RB5$r<%CF}m=`iQ|B-c>^XDJf>QIlbXVL`w?xMw)Q8|do#k&e-9xEUo+?MJ&-1PM!5LRfDFG9oAy z69{jo%Yawn$lmOupW)tnE>Unxm*HQEin?{=1{5Lo38viQ*`_?zi$HWpP)8hDbOWWD+!p9PEiO{xFBZ(XkVw{+PtW^#)8g z-X*kMttHrz-|96E+gB%M=QEzNmP#-8F6{d9dVU{=M&~k<;82RR0mgiRXU?HJSc&{p zCWNg>K}jQRSC(}|dY}k0=ma{*EfiGR<10_q+o4<0g0^QNgyvp+&fh=z$@G>BNE;+? z2uDoSc^mED6fHJuF?D%B&E8Lu8rQq!z}+sstf|=fG{MK%rM9C4oV-75y0RLUua08$ zPdKru(XWSyqtLE-XuRgJp-YG8Lm{<0ykWhb@JDtF$@@n8n;?8};^l5il72mSSWjau zp`Oc(!rAoY_II4!j2uHq!v!A;i2o>XAY#DcJ?kuFOW!mlEqdz`wlUYHdeVj$H?eYh zusBKAOF!r!Ab{K?2fd@rsdx0mjJ>U`x&INFqo4M;%I!d>9G9Qu`tx1ox_?%JiXQ zqS`34V&fuPDIdlUr161hY$zW;QykOl_6G!sH`->VXXfY2@itj+p|G(XnpIX5j>;Kc za4#?>x4d1}1|?F%0R4a~C@`#Z{oHOtMfm-^?ZZ7wS6JJ_7eDq*!{|37L!3UHEhu;C~Z-=wUUoKV`2&%!#@+SWG3cclXW8?bf=KjW@T#CW@ z!`#O}(#hNHnoo76Z>P34jzj#qs4J9;8}XPogSRMpeZ6+3dW}^AR$5qvMPw$srK;GH zoqF+(vTDc4vJcV}T0hbY2`|s>S-W6%yX|0jQ{Uo=&Ba#29N)8BoI`%sJ(Q~IMr;M~ z^?a6e3E=C{i%lOOJ@0M+C=$*>{n~t;RR0)+u9&Sk`CIw^Ii^_4f}EHTE_p~@pwbgL zk$mYmafyI(UUg?NU=${pl}`I+7_CBRl&F&O~hvq;a9T zgoy8Lg<55SkV^Spj31lrARLp9?Ixr=^lbOnIxKd*-8SOT(8yl?la2C^eup&9PqAzSuf~_^UDzQWKK+iGTbeb_WI$Q)H938HgYjVG_Oe=nVdOrIX z7n6RJS5fO-(vNLgO$mKgzUHIsAm)N&VbLmI6h2IVEr)Pdcw(U{QP!S1ELEYtglStwS zY~9|m3x~@ajwat9<>K7;ZF(yNp zDt&cg{l5OzOmL;qq;JK#gn}(0??3HF=sCPif!*BP2v%&P=VFU^c$h~d?x&tdKN}q9 z$F$i0c)TUwF5AkzZ*8rOLiRPgnQq-K^lA-N$yoWcGkCN+cSt(Rq)g9Xw~0y(g(HhB zLFC2QhC;8t=PTxYweHPN>v~ZrSfeVe)y%^;fM>*Vi&j~)>AfMv)P5)Tm1<` z-~IA)Ca3o|?Qh1>%av!u2j8Mh*V~4e{e9%V>-nqh(73p?vK+TRi9X7M8K`9_@DWuv z>n4WG)QpUhkH4&KZ{4lP7)@`29DKddn1E9!tSkQXED$68S^~c5J$MpHx8q zU_4FQq3wSJQ>Q&I{mdc-+j`p81r6;Ak}^%+5!+p{WIj+3B^PEx=oD4@oPB=erHm`yA`4oVs*dm7^c@^&3%Lk`0w;bZe?m4MHe~ zuP|7?$PbMS8w^)8p9Oy!?4m;w2OlvxyVo^K<;L1rTQ}%lDV5F|4Q^*L-d@hNVIqW? z>3Qm~{*-&Xj)p1HSK502Js;M$I#+8hob1w-i1O%a56PF!2v+qmsrn%{;Y^|zY*u{8 zL_$VR$jOOWxSbV|?FEoUXM!F6Euc0n>=YSD?DycEIJP1)U-51t66i3DuTD|RZc zq7-7i#e<-drX7A2eP1fAadl%OA3E5K`Zx9*qn#`<^EkV#mOd@s?N|=uXnCt3TRiz78VZu5gLnLb~9Z@*EV<1 zVdyyMwuMtXZ$eIX?^E;n%DwbsJ74Va6#c6-=`9{FyYbHV{t>a__;{;x7FpQgX+YF^ zy)I$T-Ef3lZ$I>~(&6$=7VB%NQ0$B8EH3?P9wum4V6fCw7CYcPA$ekLjgeY*y1#f* zZ7$EEB)Pc#iT})@R0bnx<@-6o6Wwf911M*%&Gi$Ute07ga`|#cp68d8>UL+1C;i$p zi~Sg614HdmT6DQeBNy82w~Rw)H=k|A*=eZ)`CTufaC}@`*ptp%;&A$9(-9NH!eoX@ zWKypQzDCKQcy|ze+3xAwqk$~q5`FBU2EAC^@I5f6g$5o`OPYcanE|qftk3uzjSXeP zz_(P%&+mGMP7`{f#_!*f$K#uu4K}SzYO6(_yUF!bKQsF_2OO-%R0R^nVC#|x>JwTl zmOy^wo<#S{Jt`Tnes5v2OHp#?^2_w8YiSV1Re{(xw->B_?5idRYdv-}TMpz-&4TV7 z%tQ8eRprrGZ#7zsS9g;?YFba!dps{P6D!Yh`FGvQDZ*DaQq@ixe>n`gJ+4PrF;!qc#7^^n87ZZCc?iXM zCW}?jL?J(qfkAmawzuvco0*tdJPI(g*lfzPcC9$Ig(KYw@ntk zSZCe0vunOKpavVXGKrG^;a|{y~M%PD$V5FuQOU}cQgj?*Z#&AheS76=CP!)X-B)+ zFZAId(;oScy=8)VZZzGi~4o;KTPDJXP%8aoO(75@d;rLpJBfX zj6z$~Z>DKv8#H>YRg^2w%BS3Y1C++JwnAx=A39GfWG<{L#ps($)b<)UmRBw1eM?)sV*xkB@R)%-xwZS+Qmudz*w@ZBgj6Z4ih+!J2 zzOc@xGsO}sa{6p@@8m?H5%cpdYL|7F$2@E_8jGFc-~Fr=hd3f4vUAFbP!=LU`>|DsT*jD#(2A6 z(zPx&_Xh6VGe$!J&K69L=PS)oe(dh2K*UN2)%SYD&l!_cu|11e0& z9@aIdbB##z4hX_VY%Of7^&`JXWB6_N-dTEhpswnjU}BBdKo4`$rv=s2%$WGGE4$oj zTw`it3Gcg2B4tXo{#+s)UhL@#X|;)(g_5xI!IT@6yUyN@cas|R&2T@)ED~M#;jlkESa@=x?#<_vfn|5smYf~533M-ARa*yACu|RZ zG2^j!T@^vk789wX{p91~^RK%QkFrRSJz4=GQf@oQKJ__R_ALV(KCT~*x(lT}#W*gT z9zQW28XPIkvn6XFFF5dc7#eqvcGs%=2=1IX6oV4ifGq>x6@>@yC}90`alZn&j>L8` zG=AY7e9*!GjFuJjX!Tmt_M#7WCAEY*+l_j3n4X;S zsg+|ryh6?9@qInDPb7ArO{GPG;3Y_}u=f3Z)lA;@O;6X$&48}blHg;j22E%1yc$L|JVn}iMp{k;XGGM z4|tpBe5);_lpnb)BYYuS#=HmQvg1EZM;EvuN z&W^VBVQlFjq2a-4?A3*IYP6;f3=O-WUK4^H_H^9*<^Imfirg>NV|+?g{9vnG%HuUS z^B0`ur!mBSv=(qj!=LwcUq^5`K!TbR_S^uLGqqg-=XSoaLSf}s6)vaLnmD7~ZtO$M zdZOq_{#oYa!{8qM?xl_vw|hB`*#@1bv05(lda;t%-OQGP620}z3|Y)sO*Yp~rCo~t zYM8@=P);dj@#(?hSy2g{X~HQU21?ZwP0#ECrj;t~j6n&#&O`DUtj8O5kPLoI;jQ=G z;@FA8V3`_sYdZ3pHP60R22lf$3LjHZ#B+O7#ShNSOs!qRup+nMY+;F~%o>iK6Ow9z&FSx{FpQ@R6oT5z& z+)UyiIAhDfUzD1X&giuL-mQ%u6+iIb59ZXH{qmpMzsL`&d2rS-8a5R*+x}Tgb@1#@ z8<9MDM0u{DmIc``ghux&$;rERJMJg#_a-V^d0QoGbhmiFNL7oE@x5#{0g^6`D{SV8 z-X6~-5q&C6yj`IC(sJhRe3*aD+A`J_^kRR6!+QTf2J80vIYrA;1pw=*Qfhnz(xw>6 z`#bUb6?EM5O)lw>-S(tZ#*U_OhGuc&70fz!52kU6w4>eic5;(t3biia>3^y4(nnuM zj-7*SA67%o~OmHyugip>^=eD7n-PBBE_G;GgBQW6sty%i* z*AS0tFyZ0usnFK~T8mgk9H(Z&fEBZpFh=D&VN^Ju@6Q~|qkKyZ>2PXq2fVV+ARB#2 z`t-Xgbn*a4yikX9aTtF0m=FHD7x6z8BM=+S1?|_iEbQA|S^V9%Ji7a0d>BmbKwWp3 zAXsve_w?a6gU7Mab6dOP?OlnYVp`giX^4dKG^N>y$-P2oqDkFCs$StdO%&eYeH7u4 zASD6*6kQgJiAjnG6o`OSlr*TAqzD27EP#|P%qdC=6bL5(WTl80q=*9jEdZn))+0$V z3aAt)AjgFipn!x3D)R$a!F{2OoU)iep6H*v6=YOG7=b<(fXo!*m81j8#;5Hz`LC9@`)VK0cAzXFJL2i zR^1KT9pyyIgAi^U8~W$` z&4cCJi&}<*v1cb3)__Zl2LiBzg5fkrczfq(?4Z_mt+@ zajIw$5{=W8ls#V(YEUKR5ZYoPjZb!v7sm& z-3mmFPtlA|?FhA#jXJrK#ykHg1vWxf+Hqt43BO!fum>hG6!5+7?llkyDfctJ>7i5I z?SRU6%MFn^$2Rt;c@tK$W^oVeX|Y&UW?TXRh>NW%CVkeq54&4)XZ2D3f)ihzfX2-b z`F7#zUP5NP=!Op)A!Zv+n~V*R8y}&bn6_hk-<_(?0xc2^S6em!BrH3?Nxq4Q|13_z z(w325E)T)bp1b$))1Zx8oVt4r;=-M-Pht1?IobJADj8%4mSKfW-$6R;Q78Zz39eB zDvhE%sLR^yb;&s&@fAebTD6jxNDb}_m~6dWxjldR>TQH9-0IYu?1<3iAz*^L9Z&Ce zXQDI|aHr9x+Q{>(?0B$>Hps>5I#dNK9xo&vF#6~rKx?`S z9!Sc<6+jclZMpiVQ`ClroI1c_s@Y_3zuG|9+o6Q4;HE^?2(_(i)9QYEDGuW;QcOZd zsKAP4B0*njG(4Nh15r z?HjTBn{BcM=8lQVLV}8#`vnjhG^2N>1l_^DR3myOU0rDUD`YqDuOqwZRl-nVh$cvDX{WrVrc)`QR+P zu289V;{6#i?mZ)l3)8?$7E^rZvBVfFouupY51ZF4$!tM1KXRnJ+O3SLw)~*DXTS;Q z7*T8a*Sj_w?~0UH4fo&WaS`{W`$!sqBU`+)IgG`4R0~V2fV}*u{=^sj!t@AkGEQ9JroM3m#9(&NZfLw`ZF3w;F3b@%-G0Kw^V>{S zhrTatM9<-ITy+#ab|ObzV^E=Sg=0gj)%7bPGcsU>jbU(h;^NR$wfraq{p&8m{c$F$ zmT}X`Nvj2>pGMR1cw5GmdeC%`C$auhgXgj7Llh4!r>vMJFx zGqCfoNng2_ZH1}EDW=JT_^P(5mud5`J`ohPutwYdWhMK@RzYn?sy&O=^jOO74BNF# zIR-DAV=-3c{lSaosW2nA*bFLhgXkL(lr2bV(TF7Ufc>Jf>uTOG^MW*J@}pI^Fqe?$ zR5MRXTTqq(BexWCO)sPCV1i*Bt-r-gIo3+>?_p0K=A~j0@uqVv%{&p{0eSHbcGf9 zf(7=mYA`k`gB{nw#D)xZTNV!5oM_p&fRn@u&(g7lm>R2`OsIzte!xbiMg}Rm^3_~k zVAk6sDxTi^|La;{Q9o2kl^ z0pRSccGN&oyv*g4;^`I$a7pq!S_`ClnoL497#iDTx?WEA*EouvRa?&Wvf`A=Y?kvi z-yB+VnF0eU;9W`1sMtAt=tT~qEw!UM@dvuxwuXKajTe07V#@0oa~#=S0~%eLi>lbYu1R8&3RBL%tevWs2+;!Au5@8*dNEI z?NMf*AFTrpAzu}9b@@J@6~Usk_wNNaCc0pX{sRd55SqeFz3}nmS;xEQ^I6YhSF*{4 zRb~qrkVN-cUfOuEPQrZ=Gu{rhuFu6Bgo}yfg=mc9F(*gTyMf7~e~tsVEI)eBy$L+_ zY#8eGs8L7LJ-^5_g~9CZw$w<$HEqK4UOxa>CajAI*O&dOOiQxdf-L{$&ZEjzcA{Pv z5(C+bCiCo~c}0yW6+(>(GsD~Y_n-+XMVp>zY|GkUSW27~+=S$jJD`H_kh*^T z!l8@zz!&e9f0}Rw{4WS}mGVr08>Er+PAH%n+4q7!~v< z0BUa`Jdo57=o|h6z}15#9l(Hv0UO8cpuFMKkZBkocg`^_`{Fo?(kfezV zOk>jYzHbR-N5H^RE+ia4ji@EGY-n z@dDe=p`)dHj_N#T341Fp&CC=Y|DG*kbKK9meP$^7cVKV_hDAPVb(s>sI zWT#!eM!KS$BXzVZTUGxfY2`?B>y z-FVYRg45=V?Q@-t4Ppj;Y1C`I;$hA06q#np^yhCY*=51G7Ex7GNKz$*LvbiQv=maw z6yiVdjyd<#fBbWUATW$v^}07H$dJknI95TMiXSDk2K+oxBs~~4n4bBB)W`?HzPS4|9jl_bl^oAj9k#v++`l#L%XmS1;fZM$r623=)W}{O z>Fach>O5=9*eQU0({T!IDlMbw{>g}68I-x1E3Ttz-&q18)(MspX;}q9a;#nR%}{K) z9Z)TBO~o3r>qoD@X5(Ze3zzKj%9 zdiPnVIq9Zpx-+3|d+E_7EuDqyL0h3!pr$1T9c5-*F9<O5n_cYV|H;vK&_8 z(-PV}Oy9ckbcIngk{~1qYus&+pszj`t`Oyz%8SIT&9ej0u$#F|k)+6)z0*0)+i1GB zH|MjDSrnq))KIp{D#f8o1^tub(+!Zr4j-AKTWP0WwHl;`Ak1KUGYy>SVacy=yBu(y zjv9r;Sx#EAsc3(q;lgyW9IH_XE>~8+f zvbF;epD1Qt|OC^VoB0RuDYo0eb@)f3OKzK+`Fj-i2#X}NdL5l5-m4HM?nEQ zK(O%`BJ)4B6kVsw*-6?6f3N|7yqho)GSL4NaPY^j!-bp_9rQs=07chsj3kgizXS3E Z|Cf0C5`!`JKj-y`MR^H$7#tW75D<7NNl_&b5O8#0I`usy@IRVDg8&E!Ou4y;h@zB; z2$7<_t%;j_`1gjBDA00$v78V8rC9d6E-F^n~E$Ca^ zQLcV@e)K_ypl65$2SM||y|)DOrKq0IF#?h7`;wkADkZ-0?Fp#?#qJ&~&;i+bctE31tO;J< z@Q1{gGZjzw4ZsHJE1gLWD|u=FGj4mP@k=J?FauQe|GGTa0`_3(`%*PZ0|ZmP~N)8wiRBP1dy{v;EW>p6^$cG z3y5xzd-mf55i3l)AOCmCq<1vkT2;ta(9`;mcpws8;p;}OTxp1yJ*n&VO_2QW8oMyp z4($YJ{Qy0vl)f=S#aWIYcPP2TLSe*vvttyAe^RS3mB6V6SP0kWwkS4!MEQwzfQl1d zkX3BvPzSq!h#$I>m6)rZ&5=zralMD(Nb$h#j>H%F68yoCmB|Fl6b=?OK&o%+Qy8Oh zlGX_H2$`&a3DzY+cyGxka}9|yLUxSQFuE?Ao|9g7!*N58YLQ>icnF1&EZ>_q{6Aai zU{t(s#C3V^f-o0?+voLTc+KgI-IdT2PtO++!tkB&M`rKsdgdkt^u;?7f0hqPU1VFx z4M+$`3(y?U-vgy`z@o(+$;6SALoGwMe~@pGZIEneV`F3UVN)b4Vt0(-B-tOMW%_Z$l4GANCiIl#N`iY4b&Jl*OVI5 z7;76n8UY58x8Sz1>}9qtwuiPN2bbe;V<`r32U)h~FG{y)wiSj}<1-brC^cx_(HK!$ zDRCCrsp^X&7nFtq<>xGRg;9~O zg=%H9WwVtxn&~AcRY+7wBn&hA$i7y)Nnh&heBMDH=ixr}BQG;A z!7k9uY6jG5I|$2Y539=*)oUN-%qBI2HH0{q+#np+F645f;d9`3j3J~ua5EGQsX(%& zYsnwyMIKrlJnV-#l{$GiQe2z4N4p3fI$=Iye)=TJ62`vp>8Ay&uySs-*?pb(0*PTwb?dqPCe9`gxdv*BRLY=Utad?F zal3h#dH%i}%de5{2-}9aG8cZ6j%m;Cr<8k_QK=ocORG!qOCebFaKUgVjB<=hT6o$` z+D1)hP4C*8M(IZGPuCM#lMAcv=}xWJxVXx=k#hN?_}Vq)QO6dG?2B{GCeFOAUe32i zR5!549KT$C`8e4*B5|>DMR4PAl5?JXZj({Z37O!StmM>B<4srNNq2tOI$BHH_WXIT zfa#FPnixP&0&52A3X4FCWk2I!+^W_py;NiaZ6nYswdAxsf5LX6z<0&hL{LvKj!hn+ z()Xc{MuA2ldKY>eQPy-vddH0+F0oR*T0N>U$0g4t=oXcbFViSfJo7WaV-;-m(i^K2 zq|@5lMN^9wq12D<tQnyyuQg^yPxj%}17ZDf{3nnI%lI4(mQ?q2;F3h4I ztyr_y!D7D&tkPBem{XKkJjl0~vJbOPP=chNYF7fR{?>FE7d^UKn$iWa zC9)MVDnwe_Me8b$!xIK{D)i_0jQCLx)?2HkOMM0x+g1K3FF92$RWj8~pPg6F%7w<3 z{Jx?BD*jFj^Vt04fVvyB+fPplz&g-aI6pHO>E%h! zPUlMmqt|Uda=16Z%spH}pQ9 z{ALBB-Slzkk$&l>#p@p7aP0ae>t)4nz|X^F^Hloe^XbZLx-!~-B>Pw9bl+4#nbu~fFB^#jR^*U0)C?aKcZP+|IGzQ&jSB%8YK01K_O)kDJkH$ zvZ1}Pv5kY7t)n>^1p=_CS#uQ)M-4eyZbMsZdVM2X17mtuYrEf7KzLobfk|s)M|~n! zYbzTEZdX3yf0f_{rhh+XASU`(5l2ftVhuS(A`x4AVgo^Y`z58oQeRk!0iWpJ4$9$nZOdfr*}x z;h(mFRe66ulY^7%ZOu11|Ffp5 zgR#Actu;`jBmbY7`A_Ayng6NC%kX>TZ#405HUH}=P|y4@ybS-$89$7OB8e>s2p6Z6 zsE~>)=<%|XE1Ehc05j4zbHRBY$8_(T=^*oe$voA*4o`#^LPh2l&h~-dF=i|ag2}iW?V|A-5I>2!~5(iB2YRUG@yl$L^;^e z&fdOe_=kz&`P{xXWd=EcPWr0sU~dX4$45q0ydMrO)rV{I$$u%d3geg09;Nu#)Uag_ z1S0ir|030LFr|EHzrgd29vLuLQ)nDdqlS%@=a8n)hwKRWe31aPCqD@n+ic-^rM>xU zSW;P}b7;s^p&*0{8YAhuJ`)7_70(DPl&-wcLmRptvNtn|mL(Vn!T!_^kKb}F(H0mw zQ7vK_N1MbWyvToj-TOpVTIITKU?dp}wkk^ylqZEEW~QC0jQp?`#*rL`#u6MW+bOF1 z!8LF!E&VT5MMBfw8>4gkaJ?rJpbQ$^3>N3iQiN>8Vwx!VC?|`>0f*TBJW=H4k;d!A zE-Vb3iucxo@_%=$4*6HLB_SjtVU)iZOs?rJyJQOE#=cCq0i+{&br`7v%)cXwgsqT=&#$dj(^z-XW0LNYN6Xick z{Oklqr^6n7SiM5L7*U$od?WCqdk$M^g2+?eV724Dt^Nte2!%yR{q}lzqut%caaBu_ zQ}KpJw&;%0`b~Hk0(`2s->A0BpqCT=XuC_T(b$)SQJfs{`mh}@70Xo%z&U35SXu{@D`m2an0?~z|&TIi>Q$nHZth;?3M_NlYFCff^ezn)n z$2Q1g#D##*%TOqYK(-)af1=#blK0vz3_i7C7{nP1g)Aa!Lku?9qwMt*fzVSCPX=R5 zuqH1w_egP}?g?(b#t3Es@K9GApmz!JXFqo>GE|ulJLiq2K_qXnS2ZjYJ788>JQrlC zN;z8TFf#1C)PbF#u>J_$4nj04OJlMw$>Q$@pbe$tM^@NqwA%#elvSd6s!kkA77EPJ z#USV6Vj$iE9>b7Z8Ehty+c(1RE(D{f}7WOw3lg4yM$t#^{rKz*t#P7;ULW?G!phXg7Mc-(qvy{}7 zSEJP&IM+p@SiP29mFcPwugA>@p5d~>;#%cb?T;1Gd~wA(60`U{ar+JtGUX3+pVv2x zYX$gD8t^>~qn{LE6HCJSGF^H?l}&{SQsyfOJi^(RBRoz)N$j={oJzfQ{(VjSYYQQ@ zbiD-hE2{K)X4lK8SFVrThYuvt*WV{HyD2TTd11C9;0Znaq&h#FG<1BmpsiT0;?qZB zDQMNXlK1ayJbHgjg0!C{Y)XWn*Mxr3IqdSi6GF8};x>%NX1N92*6qrbJG6y0vC}4( zy@|xHw%)qvlI2Rx4hu#yhlUcc&gbY}#?aT`l(2LAx6i9CrB6 z;+R~iT<)aCHHwII&hL2hbIe%;eBRvrF<*{rgX_=JdBME)ilols3sLo2oxxMtZTpK^ zb|*^QNX*(rUn~2Pylx127d)u~9$h5xlM7N9x3!;0iWRi#eJ-xJP&v)QrW9n&M zJpPHBkwLKcXe?ov*PRNfVfE(xMMiD1+h?{nmLoLT{mEQWs#XzquP$stg@=!i%#%Pt zoj@IiphW+T+?d%azR-5j!Y1Y-PLW*-UsLP(Hk!&i?|JAbr|14D-p3$ zJFfh7_Xibrmvhh<N~Wr2XjAe@I6LAIwcYt1~M5aHYE99!{RNgTwaAp6%x?+ z`T0#A3eB>gC>yQ#mzJ0OBlo{c8yin7FSN~JN4UWzN`|S@u*iJOv*WM3e^SQ&!n2;E zQ~c^NEWecK*TDV^26?k@pl5l0?N8{<4sHT(S4Wmelx?>DWOk#e%gMvj$+}me(!p9V zmK3h*aYIs?$6&qO0gEaQ&nz@)lgyXI{+ZK$XTaY|lSThH)5mZb;FH?jG5@*h)nxPq zbPR>o%)!M$?4GVuhA0LGwGU2sE(4%{*|1EhT!JMXPe~05Rduo3Ox`rvC25O)^OyoJ zBtXPRi2u|diV6#a38<|icR6y?ue9niigx%N{2e>Bj*sW|K8EQ^!)Z+I$>kIMKRgCU zqVw?+`nwNDL{ABhzXE9Q^?gxSec&9bY!F`9mG`_ltm zTp$payF%K{3;do}XuR=P`LfAVxvJsfCROGAX)GQISt1HlA2Xuh(%9mqpvIt4e{g^s z9Dn=ZrSyiSzUv9u{#Q(i_vDD?HufA zPU>X&b;Nxs#?QlQ>)U1%4GUzHQJBTXPtA+%megcex}?c@5N&J4&J#){%1q5|tRtp< z^q~Z17G#P1s=^RnJTY(>zLQXZ4+ZFm4OP$QUU+Elr|0L>zY>((*Iz?t_*mxIG3q>BVApom#8g+eS1rrqjtso(PzXWYtTh-L^)f zXLfe{Vqi`gKqbw@7Fs?6@6)>sn=i)%FCuJd{_sZD1jc9#vLCn%ju+Wk)Vr=TT6_jO zqe|6m*tn#Z9CtHp8*S(b6T0-xSe1k2-y@L znl~h*KI5<&r6qqH%wTg+Jk>yXzyJ9F?#F0qqufJ$!DrnVR%(T)q&sP)!i%jT8^|Yj zf(OH@859a>U)Bq^4~q@y9$!DAeAcXY=i@I^fqW#bw0RhD!#Y>BWi7i6MccFzO-0}n zv9Y*(zEs@kEeXf0lspdQxPmIHr^R91b3tv(kH+Iq=S${s@P{^Ft(Q4ey?Xlf24@nJ zXJIyv>$QdPa@7X42*C_~qXN`OPCPs_cgSV1B11Y`dFy|uA_4|@9Z*#wi6+fYy)^Otl^V{!`_{O{3* z{naMVt4aLkoEfejhFNHZKP$Dt&o_Hx>&Vne<4RoNh3m@oI+6Xx!Q}Y-Awfq|ezG`$ ze8rvV<3L&d8a+NCxUp;8nY<=qN+@jUZNJ@FiDqsIABeDYIye%b_pHEBi}FExG^+H| z*sVYc&8-O3Eo&{_`DULGfAahu-zQT3_&R#Id@Yh|6hjHPZ`kpeLZQY0Ey)hIL-}EC z)_9dtkmPFf)qIAlI~sM`fMB@}-&twW7(!A~q=gQL%;L&BjR zW3(ErHnB~8Of2O6FI?!3v^Z$JUvV+hjSF&Q_YGp?ov`{9GP-YT$%O-`-FpwCp4LV7IsQTq`pW#Y=`JfA_D z7p%>-c-swTw3Gwe9VZ*_oc4KHk_b2*@izKGzjk}Iez^5P)}28dHoW*bzcbW{;0$%M zZvlDUQppc+W&{mDa2F`iLgvoRJ`SIi8(s6bY3oIC;cP zK&J)r!_}T|vI9nnR-^*%&luK9hn*zd?YkLS*!Ft2A90tlb>zd38U~fMj0v|XeJUlQ z`m!19+At%ihBp!C_Li&fIGr8aV{NjjoN(VskFE9wq$Fvn0Gr|np9J;qYwi;N zF=j*svlRV2lh{qGoAo0j&xIS9dtroLA#C09*s~&#Hsf?vD{`{Kb-kblZAm7CG#tD@tCW|##o%~T40~L!%3}TsCLOXbRWBFT*NDxswg6m_6N7y4 zt0F5cnw);4;>0SK)$~@xAH}u1XNwG%`SRcUn>764wI8Q4*HES6r&7LFJ;`hUMp^8J^u?bGjV8f6?e5`spPwehTe$-P$Z%d9#S~qB10ai*xe>M61vFIwG_j;FvyjpWKQ%~-m zE6a;e#g7B{c2DTADON{PY+>q3B}=?Dj@#3U-@}q_agV;valdc)0_*DTT18L1p>y=d z^3>DJ(pU#GqvXKHVe@3YA>g`Sm3txS)Go)=dw9(J)utZ{t#L&zsm}(9uD@@G|Ho7U zfmlKDyRk>jMwG_r&8igtH0PHa&2Qn=u<%5fxVgB`lFjk1L}xv~?iQWSA4ZwxWmPw* zhtI(I54rOj{*}GElFwcB;lQSfCH;YU-12F@Wpw8wm>T|fjVwfd0xl0t+)m5G4E8=aOYqiUV))k_M-PEOvAoPWrp-|ZhEH#zJQ z^bO=fd22R9-e2sB)my}W%=tv%hLL(4LU!0ux!Mxm3545~H0qnP*Oq(qQHo}?QG{R2 zYOz(UxILimWBdIJ4-YFh5x#kri#=9mIalP_IYeThQXtnG3j8x8Ks!WK+Yd<9WXtuh zTvTo0o<-mik`2cRHOB-+lQ?L(4wgSv%A8d{t_f%~>cb)&{X*~o0OF`r;ZXbG*vBbq zcYjzxqTgmb=x-+TP^M5Lpm=BsBz9*YzArsRb#q53=_?bh=RP>yw*9j_aiG#izZpo%Nv` z@5s@to|;%Os0yOwcj#_0{o=HZMXB{?*N8u=52LCcr}#W$NT5;N1NqSnxiDVx|59pB zpysN zAxibe1{Cxw!n8ZPyo^dYI4lxiKZ*Y5O#96%y28HGD0;^5l;RcrYvN2nXH`UZZA1G1 zkP(!EevN{@LcQ8&Wamh4B_O3kVEunoIOr?GV1GYU6oEi>_0A}r``OwDAVOVTg1U(P z=j;T|J(3itsYk=3^>t>G_p`|ad9`7`aI~;nG_U4Vma*+4EC2xbSvH3f3f#n3gCuJ> zB;s-DQ+^^6)wZweS&1^ni}ch~T%6g*UlwkT8dcVh1hRMTt1`Vm z%8lMocqph4O0HlU^-9D3iuSuE_if7gOk)au{the_eQukTmVhLtWdQez>*r0;#jK6l z^wwV;4h;O(iqrPgPcnaY!Wj&hGX#3VxF+YVkYl7bMAv(cR6Lm+>uzf;Hbg@i>tVP|X0$ZfFm&7M1L63p`tBMn6*7J71(Okib# zyxRBgWVh)BplE3Lhk-*y8Qc%eaN6x*DHTdb+8aw}*#{vai717#s+!!FuxZrVkW{QT z1x4&n=jf$Jk$$BnJXvWDSvM?5qPfqPLGOJEk{Ma+Pzfb2(k^X*HoAJ8pxG3l*YrDX zz4^e%h!g~~B{YgdIAog72vG00c^){m$U$6sI-LBR&G?8++Eq4CiU zkx8s1cDu+cy3u#LS4Z&ne%V`aVEm2zz1z9#h(748AA#rNf^lG zQiBvMRQl!}Fd2pMO4R71xa&)j*Q^Jp;!%8$x|UmSqxrPSJ+(S9ep~7uw**N| zWV!RZQ39_p931L#bh>!;{KW=f@!$IGWS+hC{H%FygewP)=~$S!Ssd<% z*sk`bAor*9yUQ0{CQR2T&4`$@TuhfbUy)=I%6nE{(^Fg6%5I^7RxFhhT@;i166@W= zeYR+IkH&}2R37`b1MM1DebfP)#g0YK)6rB`#+!bHw7!9Az_4uvDKDSlkXuC{Bxn3k zqWJfR%&vLys@zT}Ib`kIU6V_Xfpi)g3zgEqwq}PmM}AL{KWq7u_F6n_z3pm;CFFi6 zDg|Sv-O-&CtMv>-DVZ7NHvvp~oi+o=eHyh2wnNjgd(da7DE5H!2PX^3wa@Qx-lcK6 z_2ns9Cx9Nu0Mzu?zEvxku0^t#jvF??9Z`7k4O{sDV3JZB4kA9sns&|1h(SgYU$>~~?{0}YXY(K5|lbJ1NCqfG&;NL^(cHq&1UwN4Lx?k?l zIUcfMJpy?^-#h{9I1v5aljrx}e8r&h4#_?(d;pDT2tg#2s=8zud-3S@yjg+}$TnTo zZ=wT@hUB2xa=>Lf{1mxph2-~IqCy`ITr-Li6l#M^eejs*8k(C^Sh_XbzYs8DH*MI@y(SL` z{@QO!$DQ(k#=yXEUon?0k@>;Ihufo|U%+j_3J!;R#mYgW;}jI|wVM)}-HOfWfVvav zIelw9Q5kHb-fXd&qe8D$zmzBOANBzhCJ^b%PubpJxy7~ZZS#tQgHLLg`-h%N%W%FS z5lLn*W64Yen%f7>2yg-wb9jd2UWSlA7M+j$Bu0`Ze1)Ov+>Kv>-VGy@ZnC|Jx|L5G zN!=#E{bHqFIrCE|{$!?|FQNPnJOtsDgzf$4M6EVY?PwkLo>q2>oYg~)9lXy**x>W)q2b7BZ1yO-R- z?zx5N*ursPaNKsKih5+_&g5`UH~Y26Q}X2bXeBb3T(QNIB$7oq{5#_buApmSOA33F zasS+Y`2oS37HBovXD5^0Ow>Xo8OU+?1Fs0Yd1exc*^yr~5UY{$3> zeL(j5?BlVCM%$LUquJt84b7!`<V$ zwHLmvR{Q>nWvDe$HdbR90mOHD3)yX4KIktxP59jW<(p>rXVvEwxzd>Fg^ z$J{+Ryvpv&XKa@cw2k{Vf=4_xQy@b+=~AQ6m|>kRcdUOFE$VoS$ZX$!T%GEDn$b*s zL9s)lOCtpOQy7O+WIlV|ms~T+d)ES~0@q@J)i?fI4Omg?qKPXaYi_}r0#ILsrqg8~ zBELSi*oG;OwSg=H)AaHthQkU;oQRw0t{kt#j-3O~pc=Btqv;m%dP%651=efI5V)Fp z^OPA1LREJ448)=3*hoAcn~JJK!JktWb7f(n%(2zp-*>XIgv0yT%qDk$%yk6zR0_>x z)V5l6$^om4{}-S?Wr!&+mInkqE~_YIsh2u*COzV6s6IqOcJC;7RuGTRdFpENa$+7G zo^dRLCkp6pV9&fhncOh3`dws>ZIg;NWR&DU;2@B#{2A#8C-Ev8Qu15jnAPvxhx zuQ&))AubcVE*buT+pcr(h|yJ^ZiYR7#CNZ+t#2AvHBG{`rKP9m5p<8|A(|hH0=YqB z-y@4QM@0e|6ZWfvY6Ql53`5{;RiFmEng^3uoiKJrl91wJD_s(%o;9^(ljkQ2xNf*F z*Z1~_{CdJgTe+x3KeK5{;d=!9lcs9$5!>RBj#ajfDooCT9jXB-)c z)VRs^+58dt6-SjO87CSl=Alj%EQizHv_Oejx%#y0a`Ag#e9raOAWG_}r`Klk16Vo} zQqo#0%ym7&&b4#x0Z^wF4zdYj7LyVt=yf+nSwDl z6^6NgEHYQkwcdfJ?QQ)I8FFy5bfF1TN~@KY;XLyFc#rlOE6--?GIf`01PS+Tz+$J; zUfKOVwDHZ_z$9uxm2(&xzd(XxEp5&Fc$6N?1;C+% z%~F#&WKAe4nI~1z#IA{1c>sp-+(T1XGIlbTNA?Km2uEY+jK7h!mQQw{7D#!muy(^S z%IUj4-a95U!glS%v6l$EDebV9<-9(F9hvd*i8#h~)Od^q%XFy}R;p+k)0?%{>ceYh zss#c1+7H(jUV+9avKDgvSsl9DN#m)S-!7Q7*=&A-#LC~q=Z)h>r+iblZoS20ZQPl; zqGy|pV}w_^<|w{qNGM>@SYRHGh~MVBVlb#J@G?m=#fThZMm*8q|X%;R{LGoJ` zI7fSKbpCQI4;VZSx4ix7a7qW1v7L5-Bh!ya^kK9Y@6J6;s<8}xFa(NXn%{u{u?I?z zu_Xz*f%od+k=N`Mx;*v5(f;?Od(B1_l9tp7K`=Yr6Vb6FvY}*mldZJ-y8a3D zulU7EWFp<3Zn7}5J-wY-mi=lwk+Kapg|(~_q-PVY8pkpIXP1}^A9NR3_g0$gRbA4P zCl^O8sy}Bk@DK;U`H#zV<(sP(=i4n#)d4a=Nj??}n>WW!x+@=9AFexm&X*T5jbxXZ zs1{PnYRfm-#B}r3Ju3iBoGma*4}$!n^@^f~lQ_mHn{ty54MY1l>E&oOxAabOlYC5Y zKSpeHxn>N|;*W0s;@(IvmpFxuK}S31Shi?yN>T0-8dl&^Z$Sxhsha0)So*|2qW}(o zr$)ecL#{Imi}Ma~H}o4+?i3kI)0FdN)Aet-u})1%$t>a|I0^WN7ib#>t3*>VlYjjN z%BNVZ1@0h`foQZ=1n$u;TnS!>VcnV>huWTg&76yp5kEC74jUDjj8Ds)8kLCvHCk;L9_JI5pk?S=bJ|q}@z_Bp?IB5;aV7R1I!^HOtXUIlVwPBS1*8fUM@5Pq zXeMJX>-iNa1qJ5%3VB(&;p5k>z;|7A2VE{c{aBMbq)p){rs%&!PcsV6YDAkqY=*<0 zz*n{KH0fyVMKN-=SOqhr7!d?IS&Tt4wIN@~$|K3{yh$EfEVk{*%_fr(C2=&$qe`XM z?-I%3sqgq%oh+6HKvCkz{rHzY9{M|KnsQY*m#4ft9h!S%r)IzB9Edj?WcA^bGo|`{ zV$>tddy5^e$uOE7f@BqLQR+x zJ_}z*O6jxlxxhpE3sj9w0S@8DB-ian-7~){`{%)zCJxX}UYa^;Jcw=syh`qXQ7Zl? zH&@h;vlPa2=09=hQrUXCI&??qe6Js?u5s(GxgL(t%2}%K77o4}zZo6_Y}=GELis*zNCA4#jO@_YcVyXY>DwT}0Kx_5gl%rv93cN~meLc?ns(_nGd}6}*)?GE zY*sr`Xna{sF#C|l@!0f)ohFwtAIyL=Bmgp7E4DAEx)e^=2KR zx|RzCd4+(*Rw(7VlU?G$dNg_g9xahRHkw>BX0BOR%GKmaZJDn?e-u;t5{5o#d%E*F z_Y#`N+3vlJ6NA!UsQ(J+eDBTqU#M^z-(@N1<6cSXR`X_jXs!wn#2m`VSdeV@$tu4P34fPaPppgL!2VPe_FMkySA^I)@DuRw4dZ#J}1- zQ-kIlz-PkO(OKUjc#(@flJ=SMC0+~VuYagtW;`hO-|7B~Le#~yvkL{?O|qv@Y@Spw zqq_=04E(jBDF_1AhOHR*X;s%l;*TiU7o3}Yx zf=0i&MYYJqH?|cJPmB8sLHNA?t7I1qG>{b~T(=2jDCG;Cd@8l(5AGVwzZL3(Y3E8#M=Y`ax`vPe0V$qG6Q*Vv=Gk1+!zLc_ z{<_ie;{3X|L*(_-V@Y#@*jpOwH=zp-n#c()%ojGttQ^fK#0z&Y3j@8`4}TqCUEbvO zNU!CHYha1~)?fqy}^s)#Lo@rGV$vJBqP1pUq6%3vegmgRObkGw%ab zd-PT1HzOjFewSmccz)VTL#bPeEdPdp z_cYcnuj?cc=`VZ)9vIJ)b=K7N~Lj&2to>4YPC32aF2y^8e zi)NG}y=+qQ(Fag1wUfi$5H5iV(NT=$Nrzu(OI~LaX{+_PjT70cSSprF*esazu^kL^ zS(%CRp)a|GBCtJ$W6#i!h=l!J)vH8`FcY_fht6K&IYNv4Nw?F~clVE}Ufyi_v@IM`Pz)GMZ;wCNgZu4 z5j_1NiYZ_p)X+4`b5QusSr)*_&7H!Z@N720=(^Nsrd7#p(A1Rm(jWhg%}~p8vaSL< z%cpe>v#tmL9^g^eeG(v1Z7@n+TRdjA)Z&1c`{*RvI~Bxq-`eYXaGAsZLA8eT&ZFOZ zsr|O=YPIE&2xe;#5&#gGKk4AA@Xjp|F{SUjIkD5OzhLqt z=rjvZ2Y3U1R(^zr-sol8t?(NVZKf6wQ!1V+lm~@^g8C7Kifdz2AxY{|!tMP4AeD(h zy0`-X#n@9N>^o~3sUBbiAKQ4-H!-f(^6jjTc{jfBZnW7IXv7cz35 zo`@YBCk1%-4(HomnP^{KF)5L|KPmL42zV4Q-ZSy>EOOqTG4Umi3}KtB{`J>vo#iMl{}@tv1VhU&1WmY)o&z)lC)WW zRH(Ru*W`E|3@u5o(_sVWluiH$%L_f*3*`vI918!g9Jw9LFwswVnqG$a)}QPS4Z9&(&AvJi@0?DjOm`Y<)Fk7jVC8#`R8 zgMVEi>0tN!S`estvX#d|&a}J?IKZ97ox`FxyOJ`-<93GeK*Uefisvn8g`}n+t@8hV zS#IgAAwG6r9?J2Z+qmMb=?D&1X}neBg4a@L&dYq)xSMH{yJ#_;<|82B!_w4A5Bg&% zQ!Phr#vT|{E_&|oW+eWh-VKneWKJ4452jw+J<)AXMRjnpoZSr9r92eTb=k_}rC0~@ z;Bt=_OX_4k-fd{|DzDV_1f)~$pxzPLM$&Tn+?QaNJ<7;^KY(BSrc<%R!^I_(nVwyX z_!7gPx0|ys#bjhh(8h-dhR3LIQlpaXh@5PEXX{9xzADoHcmlEXGNIpHT&4CHEi9#=Y>P~2FSO7sJY3$#+*e%a7XJCq!J zV1YKB#zU)AsC`VAM5$E9yVQ?NxC1`${1tHJ;F|59Q%CHK*urBeqynW0(c(90Oic_? z25G;^I##{Cm5GFbiYwUIh__Vwwem=chm5MUYsE&Ycz*S#u`|xg0VovDf8x zaHf}Z{;U*B9VcP}PB5J1agdfN+oJ5JGe2SblQmh$j@=0tyrqtH(OmKD($+_sslKsT zZi1+fq~Q9|acE81y-^uo0^cCw`m9SE!XYCBJHDuQqf`(IiSAt@c!4upZ%f zi(RTdtP!z*F{}~~ic{!r{l*(&jN|<3%@6FiF|?nB9l|wq=RclIIc`75r9LA(H~-qX z_y)_CH9;h(97ii>igN|ijv*|Ow?Fa)VUJEuIeaO9wr7eP5i3N$eL<-5<|ww4arT1$D|oa9s3-p$b)e>yN) zzUhY)(!pRm*4L1Q-WT*<*qw&vXbj3Zn|tGlmWc-lr}w*JBd=4w{w~u*Bnj$26lh!p zvmc?k80SiFxxdWioT!_(L~&MUj>CyM3sn2hSiD;eDTZ?6A{j1gpvanl$5MQ!zHRvj zG5URhX-h~Bo8af&f)f`tB^6#IOni$*e8FtR*S?Oc1oD<2+qbG}kJhxA`RO#MIbi<{ z;xOK~MJI>(tKx)6RX^U|>sRbb{}BR&gKMueNVBrNxX{!uorU8Hg>N7@2!x(0QCZeT zuXU8(wQ>{R-wo>lfu$=$r*j7D+vhp*zCvO@HSHDN&aNv15W==40(cZs-lCn46kS=w z2ei!;Z#&eM2!@P6jhAM{TXWw|x+(Q`%xljmc6N?1mw_aBDx57XA^xb!OX{-o#u$OIV-*s>e@?%>=G*R|8@eSZt-&zO0V5cd* z0kyDce1?POT!C&D$lf{5XYIVOXZqA#o z4+5?8-_aLkKn-i8+Wqww66L25kN_B-s$cPMwT@PW@kvqN`hUEC~p#F9) z6uY#1g@Wp#6W{Rnz~ujS_J1||zsulvaLNCJ4YuZE;d%eg!E&+u_q(uCV)CLD!k_&A E51$K?8~^|S literal 0 HcmV?d00001 diff --git a/articles/styling/_images/display_mobile.png b/articles/styling/_images/display_mobile.png new file mode 100644 index 0000000000000000000000000000000000000000..ff9affe16ac070a98e6fdbd3e50f8074b816b9bf GIT binary patch literal 12688 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 literal 0 HcmV?d00001 diff --git a/articles/styling/_images/display_tablet.png b/articles/styling/_images/display_tablet.png new file mode 100644 index 0000000000000000000000000000000000000000..193ddbde67fe9fd1b6794b4658ed295663a8bf03 GIT binary patch literal 13830 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 literal 0 HcmV?d00001 diff --git a/articles/styling/_images/flex_direction_row.png b/articles/styling/_images/flex_direction_row.png new file mode 100644 index 0000000000000000000000000000000000000000..66f88ed30d4b4ba3bbdf8c13fd62f7477f2f96bd GIT binary patch literal 16566 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 G|9=5CI}QW@ literal 0 HcmV?d00001 diff --git a/articles/styling/_images/font_size_large.png b/articles/styling/_images/font_size_large.png new file mode 100644 index 0000000000000000000000000000000000000000..84fe81b30fe969baedadb55f4f4e815f01433330 GIT binary patch literal 42028 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 (UJhxTo`Y?vDPVN+H?N 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 literal 0 HcmV?d00001 diff --git a/articles/styling/_images/font_size_medium.png b/articles/styling/_images/font_size_medium.png new file mode 100644 index 0000000000000000000000000000000000000000..4055eb66dc7acba554924f85d2508122596f5115 GIT binary patch literal 31328 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 literal 0 HcmV?d00001 diff --git a/articles/styling/_images/grid_extra_large.png b/articles/styling/_images/grid_extra_large.png new file mode 100644 index 0000000000000000000000000000000000000000..c92c64b131f97c16dcae942a060b404696249dce GIT binary patch literal 31331 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�Nt%QYR!tw_;up8{6+oX3XM21T0T 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 Hskr|F=ei3c literal 0 HcmV?d00001 diff --git a/articles/styling/_images/grid_small.png b/articles/styling/_images/grid_small.png new file mode 100644 index 0000000000000000000000000000000000000000..6b47293829560f796c730382439b6644c746680b GIT binary patch literal 16978 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 literal 0 HcmV?d00001 diff --git a/articles/styling/_images/position_medium.png b/articles/styling/_images/position_medium.png new file mode 100644 index 0000000000000000000000000000000000000000..4932c6b2801af16f9d9d6e2a5a7370e5fa54b686 GIT binary patch literal 23041 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 documentation. +==== + +The default breakpoints are activated at the following minimum widths: + +.Available Responsive Breakpoint Classes +|=== +|Breakpoint |CSS class name prefixes |Minimum width |Equivalent screens |Equivalent in CSS + +|Breakpoint.Small +|sm +|640px +|Mobile devices +|@media (min-width: 640px) {} + +|Breakpoint.Medium +|md +|768px +|Tablets +|@media (min-width: 768px) {} + +|Breakpoint.Large +|lg +|1024px +|Small laptops +|@media (min-width: 1024px) {} + +|Breakpoint.XLarge +|xl +|1280px +|Large laptops +|@media (min-width: 1280px) {} + +|Breakpoint.XXLarge +|2xl +|1536px +|Large desktops +|@media (min-width: 1536px) {} +|=== + +=== Responsive Utilities and Limitations + +Currently, Lumo provides responsive breakpoint prefixes (e.g., `sm:`, `md:`) for a specific set of utility groups. +This allows you to apply styles that adapt to different screen sizes directly from Java. + +The utility groups that support responsive breakpoints are: + +1. *Align Items:* Controls alignment of flex items along the cross-axis. (e.g., `sm:items-start`, `lg:items-center`) +2. *Display:* Controls whether an element is shown, hidden, or changes display mode. (e.g., `sm:hidden`, `md:block`, `lg:flex`) +3. *Flex Direction:* Defines the direction of items in a flex container (`row` or `column`). (e.g., `sm:flex-col`, `lg:flex-row`) +4. *Font Size:* Adjusts the text size based on screen size for readability and hierarchy. (e.g., `sm:text-lg`, `lg:text-3xl`) +5. *Grid:* Controls the number of columns in a grid layout depending on screen width. (e.g., `sm:grid-cols-2`, `md:grid-cols-4`) +6. *Position:* Controls the position property (`static`, `sticky`, `absolute`, etc.) responsively. (e.g., `md:sticky`, `lg:fixed`) + +[IMPORTANT] +==== +**What about other utilities like Spacing, Gap, or Justify Content?** + +Common utilities such as `Padding`, `Margin`, `Gap`, and `JustifyContent` **do not currently have responsive breakpoint variants** in the `LumoUtility` Java API. + +To apply responsive styles for these properties, you should use custom CSS with media queries in your application's theme. +This approach gives you full control over the responsive behavior. +==== + +==== Example: Creating Responsive Padding with Custom CSS + +Let's say you want a `Div` to have small padding on mobile devices and large padding on desktops. + +1- **Apply a custom class name in Java:** + +[.example] +-- +[source,java] +---- +Div responsiveCard = new Div(); +responsiveCard.addClassName("responsive-padding-card"); +// You can still apply non-responsive utilities +responsiveCard.addClassNames(LumoUtility.Background.CONTRAST_5, LumoUtility.BorderRadius.LARGE); +---- +-- + +2- **Define the responsive styles in your theme's CSS file (`styles.css`):** + +[.example] +-- +[source,css] +---- +/* styles.css */ + +.responsive-padding-card { + /* Default style for mobile */ + padding: var(--lumo-space-s); +} + +/* Apply larger padding on medium screens and up */ +@media (min-width: 768px) { + .responsive-padding-card { + padding: var(--lumo-space-l); + } +} +---- +-- + +== Responsive Utility Examples + +The following sections explore each of the 6 utility groups that currently offer responsive variants in the `LumoUtility` Java API. + +Each section follows a similar structure to facilitate understanding: +a brief description of the utility, a basic usage example, a list of the available classes, and a complete, practical example demonstrating its application in a real-world scenario. + +== Align Items + +`LumoUtility.AlignItems` controls the alignment of items along the cross axis of a flexbox or the block axis of a grid. + +`LumoUtility.AlignItems.Breakpoint` provides the same alignment options, but scoped to specific viewport sizes. + +=== Basic Breakpoint Usage + +[.example] +-- +[source,java] +---- +// Instantiate a container component +Div container = new Div(); + +// Apply different align-items at different breakpoints +container.addClassNames( + LumoUtility.Display.FLEX, + // align-items: start on small screens + LumoUtility.AlignItems.Breakpoint.Small.START, + // align-items: center on medium screens + LumoUtility.AlignItems.Breakpoint.Medium.CENTER, + // align-items: end on large screens + LumoUtility.AlignItems.Breakpoint.Large.END +); +---- +-- + +The available classes within `Small`, `Medium`, `Large`, `XLarge`, and `XXLarge` breakpoints are: + +* `BASELINE` (e.g., `sm:items-baseline`, `md:items-baseline`) equivalent in CSS to `align-items: baseline` +* `CENTER` (e.g., `sm:items-center`, `md:items-center`) equivalent in CSS to `align-items: center` +* `END` (e.g., `sm:items-end`, `md:items-end`) equivalent in CSS to `align-items: flex-end` +* `START` (e.g., `sm:items-start`, `md:items-start`) equivalent in CSS to `align-items: flex-start` +* `STRETCH` (e.g., `sm:items-stretch`, `md:items-stretch`) equivalent in CSS to `align-items: stretch` + +=== Complete Responsive Example + +[.example] +-- +[source,java] +---- +import com.vaadin.flow.component.button.Button; +import com.vaadin.flow.component.html.Div; +import com.vaadin.flow.component.html.H3; +import com.vaadin.flow.theme.lumo.LumoUtility; + +public class ResponsiveAlignItemsExample extends Div { + + public ResponsiveAlignItemsExample() { + H3 title = new H3("Responsive Align Items Example"); + + // Create a responsive flex container + Div responsiveContainer = new Div(); + + responsiveContainer.addClassNames( + // Basic flex setup + LumoUtility.Display.FLEX, + LumoUtility.FlexDirection.COLUMN, + LumoUtility.Padding.MEDIUM, + + // Responsive align-items + + // End on mobile + LumoUtility.AlignItems.END, + // Center on tablet + LumoUtility.AlignItems.Breakpoint.Medium.CENTER, + // Start on desktop + LumoUtility.AlignItems.Breakpoint.Large.START + ); + + // Add content + responsiveContainer.add( + new Button("Button 1"), + new Button("Button 2"), + new Button("Button 3") + ); + + add(title, responsiveContainer); + } +} +---- +-- + +.Example of AlignItems Responsive `Viewport >= Breakpoint.Large | Breakpoint.Large.START` +[.fill.white] +image::../_images/align_items_large.png[AlignItems Responsive Breakpoints] + +.Example of AlignItems Responsive `Viewport >= Breakpoint.Medium | Breakpoint.Medium.CENTER` +[.fill.white] +image::../_images/align_items_medium.png[AlignItems Responsive Breakpoints] + +.Example of AlignItems Responsive `Viewport >= Breakpoint.Small | Breakpoint.Small.END` +[.fill.white] +image::../_images/align_items_small.png[AlignItems Responsive Breakpoints] + +==== Key Points + +1. *Mobile First*: Breakpoint utilities typically work mobile-first, so `Small` applies to all screen sizes unless overridden. +2. *Cascading*: Larger breakpoint styles override smaller ones. +For example, `Large.CENTER` will override `Medium.START` on large screens. +3. *Combining*: You can combine multiple breakpoint utilities for different properties (`align-items`, `justify-content`, `flex-direction`, etc.). +4. *Testing*: Test your responsive behavior by resizing your browser window or using browser dev tools to simulate different screen sizes. + +The breakpoint system makes it easy to create responsive layouts that adapt to different screen sizes without writing custom CSS media queries. + +== Display + +`LumoUtility.Display` setting the display property of an element. +Determines whether the element is a block or inline element and how its items are laid out. + +`LumoUtility.Display.Breakpoint` defining the display property of an element that will be applied only for certain viewport sizes. + +=== Basic Breakpoint Usage + +[.example] +-- +[source,java] +---- +// Instantiate a container component +Div container = new Div(); + +// Apply different display values at different breakpoints +container.addClassNames( + // Hide on small screens + LumoUtility.Display.HIDDEN, + // Show as block on medium screens + LumoUtility.Display.Breakpoint.Medium.BLOCK, + // Show as flex on large screens + LumoUtility.Display.Breakpoint.Large.FLEX +); +---- +-- + +The available classes within `Small`, `Medium`, `Large`, `XLarge`, and `XXLarge` breakpoints are: + +* `BLOCK` (e.g., `sm:block`, `md:block`) equivalent in CSS to `display: block` +* `FLEX` (e.g., `sm:flex`, `md:flex`) equivalent in CSS to `display: flex` +* `GRID` (e.g., `sm:grid`, `md:grid`) equivalent in CSS to `display: grid` +* `HIDDEN` (e.g., `sm:hidden`, `md:hidden`) equivalent in CSS to `display: none` +* `INLINE` (e.g., `sm:inline`, `md:inline`) equivalent in CSS to `display: inline` +* `INLINE_BLOCK` (e.g., `sm:inline-block`, `md:inline-block`) equivalent in CSS to `display: inline-block` +* `INLINE_FLEX` (e.g., `sm:inline-flex`, `md:inline-flex`) equivalent in CSS to `display: inline-flex` +* `INLINE_GRID` (e.g., `sm:inline-grid`, `md:inline-grid`) equivalent in CSS to `display: inline-grid` + +=== Complete Responsive Example + +[.example] +-- +[source,java] +---- +import com.vaadin.flow.component.button.Button; +import com.vaadin.flow.component.html.Div; +import com.vaadin.flow.component.html.H3; +import com.vaadin.flow.component.html.Span; +import com.vaadin.flow.theme.lumo.LumoUtility; + +public class ResponsiveDisplayExample extends Div { + + public ResponsiveDisplayExample() { + H3 title = new H3("Responsive Display Example"); + + // Mobile-only message + Div mobileMessage = new Div(); + mobileMessage.add(VaadinIcon.MOBILE.create(), new Span("Mobile view active")); + mobileMessage.addClassNames( + // Show on mobile + LumoUtility.Display.BLOCK, + // Hide on tablet and up + LumoUtility.Display.Breakpoint.Medium.HIDDEN, + // Hide on desktop + LumoUtility.Display.Breakpoint.Large.HIDDEN, + LumoUtility.Background.SUCCESS_10, + LumoUtility.Padding.MEDIUM, + LumoUtility.BorderRadius.MEDIUM + ); + + // Tablet-only message + Div tabletMessage = new Div(); + tabletMessage.add(VaadinIcon.TABLET.create(), new Span("Tablet view active")); + tabletMessage.addClassNames( + // Hide on mobile + LumoUtility.Display.HIDDEN, + // Show on tablet + LumoUtility.Display.Breakpoint.Medium.BLOCK, + // Hide on desktop + LumoUtility.Display.Breakpoint.Large.HIDDEN, + LumoUtility.Background.PRIMARY_10, + LumoUtility.Padding.MEDIUM, + LumoUtility.BorderRadius.MEDIUM + ); + + // Desktop-only message + Div desktopMessage = new Div(); + desktopMessage.add(VaadinIcon.DESKTOP.create(), new Span("Desktop view active")); + desktopMessage.addClassNames( + // Hide on mobile + LumoUtility.Display.HIDDEN, + // Hide on tablet + LumoUtility.Display.Breakpoint.Medium.HIDDEN, + // Show on desktop + LumoUtility.Display.Breakpoint.Large.BLOCK, + LumoUtility.Background.ERROR_10, + LumoUtility.Padding.MEDIUM, + LumoUtility.BorderRadius.MEDIUM + ); + + add(title, mobileMessage, tabletMessage, desktopMessage); + } +} +---- +-- + +.Example of Display Desktop Responsive `Viewport >= Breakpoint.Large` +[.fill.white] +image::../_images/display_desktop.png[Display Responsive Breakpoints] + +.Example of Display Tablet Responsive `Viewport >= Breakpoint.Medium` +[.fill.white] +image::../_images/display_tablet.png[Display Responsive Breakpoints] + +.Example of Display Mobile Responsive `Viewport >= Breakpoint.Small` +[.fill.white] +image::../_images/display_mobile.png[Display Responsive Breakpoints] + + +==== Key Points + +1. *Mobile First:* Display breakpoints work mobile-first, so `Small` applies to all screen sizes unless overridden. +2. *Visibility Control:* Use `HIDDEN` to hide elements at specific breakpoints, which is great for responsive navigation. +3. *Layout Switching:* Change between `BLOCK`, `FLEX`, and `GRID` to create completely different layouts at different screen sizes. +4. *Performance:* Elements with `display: none` are not rendered, which can improve performance on mobile devices. +5. *Progressive Enhancement:* Start with a simple mobile layout and enhance for larger screens. +6. *Testing:* Always test responsive behavior by resizing your browser or using developer tools to simulate different devices. + +The Display breakpoint system provides powerful control over element visibility and layout behavior across different screen sizes, enabling you to create truly responsive interfaces without custom CSS. + +== Flex Direction + +`LumoUtility.FlexDirection` defines the direction of items in a flex container. +This is extremely useful for switching from a column layout on mobile to a row layout on desktop. + +`LumoUtility.FlexDirection.Breakpoint` allows you to apply different `flex-direction` values at different screen sizes (responsive design). +This is particularly useful for changing layout orientation based on screen size, such as switching from horizontal to vertical layouts. + +=== Basic Breakpoint Usage + +[.example] +-- +[source,java] +---- +// Instantiate a container component +Div container = new Div(); + +// Apply different flex-direction values at different breakpoints +container.addClassNames( + LumoUtility.Display.FLEX, + // Stack vertically on small screens + LumoUtility.FlexDirection.Breakpoint.Small.COLUMN, + // Arrange horizontally on medium screens + LumoUtility.FlexDirection.Breakpoint.Medium.ROW +); +---- +-- + +The available classes within `Small`, `Medium`, `Large`, `XLarge`, and `XXLarge` breakpoints are: + +* `COLUMN` (e.g., `sm:flex-col`, `md:flex-col`) equivalent in CSS to `flex-direction: column` +* `ROW` (e.g., `sm:flex-row`, `md:flex-row`) equivalent in CSS to `flex-direction: row` + +=== Complete Responsive Example + +[.example] +-- +[source,java] +---- +import com.vaadin.flow.component.html.Div; +import com.vaadin.flow.component.html.H3; +import com.vaadin.flow.component.html.Span; +import com.vaadin.flow.theme.lumo.LumoUtility; + +public class ResponsiveFlexDirectionExample extends Div { + + public ResponsiveFlexDirectionExample() { + H3 title = new H3("Responsive Flex Direction Example"); + + // Container that changes flex direction based on screen size + Div flexContainer = new Div(); + flexContainer.addClassNames( + // Basic flex setup + LumoUtility.Display.FLEX, + LumoUtility.Gap.MEDIUM, + LumoUtility.Padding.LARGE, + LumoUtility.BorderRadius.MEDIUM, + LumoUtility.Background.CONTRAST_5, + + // Responsive flex-direction + + // Stack on mobile + LumoUtility.FlexDirection.COLUMN, + // Horizontal on tablet + LumoUtility.FlexDirection.Breakpoint.Medium.ROW, + + // Responsive alignment (works with flex-direction changes) + LumoUtility.AlignItems.CENTER, + LumoUtility.AlignItems.Breakpoint.Large.START + ); + + // Add content with indicators + flexContainer.add( + createFlexItem("First", "1", LumoUtility.Background.SUCCESS_10), + createFlexItem("Second", "2", LumoUtility.Background.PRIMARY_10), + createFlexItem("Third", "3", LumoUtility.Background.ERROR_10) + ); + + add(title, flexContainer); + } + + private Div createFlexItem(String text, String number, String bgColor) { + Div item = new Div(); + item.addClassNames( + bgColor, + LumoUtility.Padding.MEDIUM, + LumoUtility.BorderRadius.SMALL, + LumoUtility.Display.FLEX, + LumoUtility.AlignItems.CENTER, + LumoUtility.JustifyContent.CENTER, + LumoUtility.FlexDirection.COLUMN, + LumoUtility.Gap.SMALL + ); + + Span label = new Span(text); + label.addClassName(LumoUtility.FontWeight.BOLD); + + Span numberSpan = new Span("#" + number); + numberSpan.addClassName(LumoUtility.FontSize.SMALL); + + item.add(label, numberSpan); + return item; + } +} +---- +-- + +.Example of FlexDirection Column Breakpoints +[.fill.white] +image::../_images/flex_direction_column.png[FlexDirection Responsive Breakpoints] + +.Example of FlexDirection Row Responsive +[.fill.white] +image::../_images/flex_direction_row.png[FlexDirection Responsive Breakpoints] + + +==== Key Points + +1. *Mobile First:* FlexDirection breakpoints work mobile-first, so `Small.COLUMN` applies to all screen sizes unless overridden by larger breakpoints. +2. *Layout Transformation:* Easily switch between vertical stacking (mobile) and horizontal layouts (desktop) for better space utilization. +3. *Combined with Other Flex Properties:* FlexDirection changes work well with responsive *AlignItems*, *JustifyContent*, and *Gap* utilities. +4. *Form Optimization:* Perfect for forms that need to stack on mobile but can be side-by-side on desktop. +5. *Navigation Patterns:* Essential for responsive navigation that collapses to vertical on mobile devices. +6. *Testing:* Always test the flow and visual hierarchy when direction changes across breakpoints. + +The FlexDirection breakpoint system provides powerful control over layout flow and element arrangement, making it easy to create responsive designs that adapt naturally to different screen sizes. + +== Font Size + +`LumoUtility.FontSize` adjusts the font size of text based on the screen size to improve readability and visual hierarchy. + +`LumoUtility.FontSize.Breakpoint` allows you to apply different `font-size` values at different screen sizes (responsive design). +This is particularly useful for creating typography that scales appropriately across devices, ensuring optimal readability on all screen sizes. + +=== Basic Breakpoint Usage + +[.example] +-- +[source,java] +---- +// Instantiate a container component +Div container = new Div(); + +// Apply different align-items at different breakpoints +container.addClassNames( + // Large font on small screens + LumoUtility.FontSize.LARGE, + // Extra large on medium screens + LumoUtility.FontSize.Breakpoint.Medium.XLARGE, + // Extra extra large on large screens + LumoUtility.FontSize.Breakpoint.Large.XXLARGE +); +---- +-- + +The available classes within `Small`, `Medium`, `Large`, `XLarge`, and `XXLarge` breakpoints are: + +.Available Responsive Font Sizes +[cols="1,2,2a,2b"] +|=== +| Java Constant | Description | CSS class name prefixes | Equivalent in CSS + +| `XXSMALL` +| Extra extra small text +| `text-2xs` +| `font-size: 0.75rem` + +| `XSMALL` +| Extra small text +| `text-xs` +| `font-size: 0.8125rem` + +| `SMALL` +| Small text +| `text-s` +| `font-size: 0.875rem` + +| `MEDIUM` +| Medium/normal text +| `text-m` +| `font-size: 1rem` + +| `LARGE` +| Large text +| `text-l` +| `font-size: 1.125rem` + +| `XLARGE` +| Extra large text +| `text-xl` +| `font-size: 1.375rem` + +| `XXLARGE` +| Extra extra large text +| `text-2xl` +| `font-size: 1.75rem` + +| `XXXLARGE` +| Extra extra extra large text +| `text-3xl` +| `font-size: 2.5rem` +|=== + +=== Complete Responsive Typography Example + +[.example] +-- +[source,java] +---- +import com.vaadin.flow.component.html.H1; +import com.vaadin.flow.component.html.H2; +import com.vaadin.flow.component.html.Span; +import com.vaadin.flow.theme.lumo.LumoUtility; + +public class ResponsiveTypographyExample extends Div { + + public ResponsiveTypographyExample() { + // Main heading with significant size changes + H1 mainHeading = new H1("Welcome to Our Platform"); + mainHeading.addClassNames( + // Responsive font sizes + + // Large on mobile + LumoUtility.FontSize.LARGE, + // XXLarge on tablet + LumoUtility.FontSize.Breakpoint.Medium.XXLARGE, + // XXXLarge on desktop + LumoUtility.FontSize.Breakpoint.Large.XXXLARGE, + + // Additional styling + LumoUtility.FontWeight.BOLD, + LumoUtility.TextColor.PRIMARY, + LumoUtility.Margin.NONE, + LumoUtility.Padding.MEDIUM + ); + + // Subtitle with moderate scaling + H2 subtitle = new H2("Discover amazing features and services"); + subtitle.addClassNames( + // Medium on mobile + LumoUtility.FontSize.MEDIUM, + // Large on tablet + LumoUtility.FontSize.Breakpoint.Medium.LARGE, + // XL on desktop + LumoUtility.FontSize.Breakpoint.Large.XLARGE, + + LumoUtility.TextColor.SECONDARY, + LumoUtility.FontWeight.NORMAL, + LumoUtility.Margin.SMALL + ); + + // Body text with subtle scaling + Span bodyText = new Span( + "Our platform offers cutting-edge solutions for modern businesses. " + + "Experience seamless integration, powerful analytics, and intuitive design " + + "that adapts to your needs across all devices." + ); + bodyText.addClassNames( + // Small on mobile + LumoUtility.FontSize.SMALL, + // Medium on tablet+ + LumoUtility.FontSize.Breakpoint.Medium.MEDIUM, + // Large on desktop + LumoUtility.FontSize.Breakpoint.Large.LARGE, + + LumoUtility.TextColor.BODY, + LumoUtility.LineHeight.MEDIUM, + LumoUtility.Padding.MEDIUM + ); + + add(mainHeading, subtitle, bodyText); + } +} +---- +-- + +.Example of FontSize Responsive `Viewport >= Breakpoint.Large` +[.fill.white] +image::../_images/font_size_large.png[FontSize Responsive Breakpoints] + +.Example of FontSize Responsive `Viewport >= Breakpoint.Medium` +[.fill.white] +image::../_images/font_size_medium.png[FontSize Responsive Breakpoints] + +.Example of FontSize Responsive `Viewport >= Breakpoint.Small` +[.fill.white] +image::../_images/font_size_small.png[FontSize Responsive Breakpoints] + + +==== Key Points + +1. *Reading Comfort:* Font sizes should be comfortable to read at typical viewing distances for each device type. +2. *Visual Hierarchy:* Maintain proper typographic hierarchy across breakpoints - headlines should always be larger than body text. +3. *Content Density:* Mobile screens benefit from slightly smaller body text to fit more content, while desktop can use larger text for better readability. +4. *Progressive Enhancement:* Start with readable mobile sizes and enhance for larger screens rather than scaling down. +5. *Performance Impact:* Font size changes are lightweight and don't significantly impact performance. +6. *Accessibility:* Ensure minimum font sizes meet accessibility guidelines (typically 14px+ for body text). +7. *Brand Consistency:* Maintain your brand's typographic personality while adapting sizes for different contexts. + +The FontSize breakpoint system enables you to create typography that feels native to each device while maintaining consistent information hierarchy and readability across all screen sizes. + +== Grid + +`LumoUtility.Grid` defines the number of columns and rows in a grid container. +This is perfect for creating responsive card layouts that adapt to the available space. + +`LumoUtility.Grid.Breakpoint` allows you to apply different CSS Grid properties at different screen sizes (responsive design). +This includes *columns* configurations that adapt to create optimal layouts across devices. + +=== Basic Breakpoint Usage + +[.example] +-- +[source,java] +---- +// Instantiate a container component +Div container = new Div(); + +// Apply different align-items at different breakpoints +container.addClassNames( + LumoUtility.Display.GRID, + // 1 column on small screens + LumoUtility.Grid.Column.COLUMNS_1, + // 2 columns on medium screens + LumoUtility.Grid.Breakpoint.Medium.COLUMNS_2, + // 3 columns on large screens + LumoUtility.Grid.Breakpoint.Large.COLUMNS_3, + // 4 columns on extra large screens + LumoUtility.Grid.Breakpoint.XLarge.COLUMNS_4 +); +---- +-- + +The available classes within `Small`, `Medium`, `Large`, `XLarge`, and `XXLarge` breakpoints are: + +* `COLUMNS_1` through `COLUMNS_12` - Grid with 1 to 12 columns (e.g., `sm:grid-cols-1`, `md:grid-cols-12`) equivalent in CSS to `grid-template-columns: repeat(1, minmax(0, 1fr))` through `grid-template-columns: repeat(12, minmax(0, 1fr))` + +=== Complete Responsive Grid Example with Columns and Rows + +[.example] +-- +[source,java] +---- +import com.vaadin.flow.component.html.Div; +import com.vaadin.flow.component.html.H3; +import com.vaadin.flow.component.html.Span; +import com.vaadin.flow.theme.lumo.LumoUtility; + +public class ResponsiveGridColumnsRowsExample extends Div { + + public ResponsiveGridColumnsRowsExample() { + H3 title = new H3("Responsive Grid with Columns and Rows"); + + // Grid container with responsive columns and rows + Div gridContainer = new Div(); + gridContainer.addClassNames( + LumoUtility.Display.GRID, + LumoUtility.Gap.MEDIUM, + LumoUtility.Padding.LARGE, + LumoUtility.Background.CONTRAST_5, + LumoUtility.BorderRadius.LARGE, + + // Responsive grid columns + + // 1 column on mobile + LumoUtility.Grid.Column.COLUMNS_1, + // 2 columns on tablet + LumoUtility.Grid.Breakpoint.Medium.COLUMNS_2, + // 3 columns on desktop + LumoUtility.Grid.Breakpoint.Large.COLUMNS_3, + // 4 columns on large desktop + LumoUtility.Grid.Breakpoint.XLarge.COLUMNS_4, + // 6 columns on extra large + LumoUtility.Grid.Breakpoint.XXLarge.COLUMNS_6 + ); + + // Create grid items with different spans + for (int i = 1; i <= 12; i++) { + Div gridItem = createGridItem("Item " + i, i); + + gridContainer.add(gridItem); + } + + add(title, gridContainer); + } + + private Div createGridItem(String title, int index) { + Div item = new Div(); + + // Different background colors for visual distinction + String bgColor = switch (index % 4) { + case 1 -> LumoUtility.Background.SUCCESS_10; + case 2 -> LumoUtility.Background.PRIMARY_10; + case 3 -> LumoUtility.Background.ERROR_10; + default -> LumoUtility.Background.CONTRAST_10; + }; + + item.addClassNames( + bgColor, + LumoUtility.BorderRadius.MEDIUM, + LumoUtility.Padding.LARGE, + LumoUtility.Display.FLEX, + LumoUtility.AlignItems.CENTER, + LumoUtility.JustifyContent.CENTER, + LumoUtility.Height.LARGE + ); + + item.add(new Span(title)); + return item; + } +} +---- +-- + +.Example of Grid Responsive `Viewport >= Breakpoint.XLarge` +[.fill.white] +image::../_images/grid_extra_large.png[Grid Responsive Breakpoints] + +.Example of Grid Responsive `Viewport >= Breakpoint.Medium` +[.fill.white] +image::../_images/grid_medium.png[Grid Responsive Breakpoints] + +.Example of Grid Responsive `Viewport >= Breakpoint.Small` +[.fill.white] +image::../_images/grid_small.png[Grid Responsive Breakpoints] + +==== Key Points + +1. *Mobile First Approach:* Start with single column layouts and expand for larger screens using `Small.COLUMNS_1` -> `Large.COLUMNS_4`. +2. *Column Spans:* Use `COLUMN_SPAN_*` to create featured content that stands out across multiple grid cells. +3. *Content Hierarchy:* Larger spans naturally create visual hierarchy - use them for important content like hero sections or featured products. +4. *Auto-Placement:* Grid automatically places items in available cells, making it easy to add/remove content without breaking the layout. +5. *Performance:* CSS Grid with breakpoints provides excellent performance compared to JavaScript-based responsive solutions. + +The Grid breakpoint system with columns provides fine-grained control over responsive layouts, enabling complex magazine-style designs that adapt beautifully across all device sizes while maintaining visual hierarchy and content flow. + +== Position + +`LumoUtility.Position` controls the property of an element at different breakpoints, enabling advanced layouts like fixed sidebars on desktop that are part of the normal flow on mobile. + +`LumoUtility.Position.Breakpoint` allows you to apply different CSS positioning properties at different screen sizes (responsive design). +This includes positioning types, directional offsets, and negative positioning that adapt to create optimal layouts and overlays across devices. + +=== Basic Breakpoint Usage + +[.example] +-- +[source,java] +---- +// Instantiate a container component +Div container = new Div(); + +// Apply different align-items at different breakpoints +container.addClassNames( + // Relative positioning on small screens + LumoUtility.Position.RELATIVE, + // Absolute positioning on medium screens + LumoUtility.Position.Breakpoint.Medium.ABSOLUTE, + // Fixed positioning on large screens + LumoUtility.Position.Breakpoint.Large.FIXED +); +---- +-- + +The available classes within `Small`, `Medium`, `Large`, `XLarge`, and `XXLarge` breakpoints are: + +* `ABSOLUTE` - Absolutely positioned (e.g., `sm:absolute`, `md:absolute`) equivalent in CSS to `position: absolute` +* `FIXED` - Fixed positioned (e.g., `sm:fixed`, `md:fixed`) equivalent in CSS to `position: fixed` +* `RELATIVE` - Relatively positioned (e.g., `sm:relative`, `md:relative`) equivalent in CSS to `position: relative` +* `STATIC` - Static positioned (e.g., `sm:static`, `md:static`) equivalent in CSS to `position: static` +* `STICKY` - Sticky positioned (e.g., `sm:sticky`, `md:sticky`) equivalent in CSS to `position: sticky` + +=== Complete Responsive Position Example + +[.example] +-- +[source,java] +---- +import com.vaadin.flow.component.button.Button; +import com.vaadin.flow.component.html.Div; +import com.vaadin.flow.component.html.H3; +import com.vaadin.flow.component.html.Span; +import com.vaadin.flow.theme.lumo.LumoUtility; +import com.vaadin.flow.component.icon.VaadinIcon; + +public class ResponsivePositionExample extends Div { + + public ResponsivePositionExample() { + H3 title = new H3("Responsive Position Example"); + + // Container with relative positioning + Div container = new Div(); + container.addClassNames( + LumoUtility.Position.RELATIVE, + LumoUtility.Background.CONTRAST_5, + LumoUtility.Height.XLARGE, + LumoUtility.Width.FULL, + LumoUtility.BorderRadius.LARGE, + LumoUtility.Margin.LARGE + ); + + // Main content + Div mainContent = new Div("Main Content Area"); + mainContent.addClassNames( + LumoUtility.Background.BASE, + LumoUtility.Padding.LARGE, + LumoUtility.BorderRadius.MEDIUM, + LumoUtility.Height.LARGE, + LumoUtility.Display.FLEX, + LumoUtility.AlignItems.CENTER, + LumoUtility.JustifyContent.CENTER + ); + + // Floating action button - responsive positioning + Button fab = new Button(VaadinIcon.ENVELOPE_O.create()); + fab.addClassNames( + // Position types change with screen size + + // On mobile, keep it in the normal document flow to avoid overlap issues + LumoUtility.Position.RELATIVE, + // On tablets and up, float it over the content + LumoUtility.Position.Breakpoint.Medium.ABSOLUTE, + + // --- Position offsets (only apply when position is absolute/fixed) --- + LumoUtility.Position.Bottom.MEDIUM, + LumoUtility.Position.End.MEDIUM, + + // Styling + LumoUtility.Background.PRIMARY, + LumoUtility.TextColor.PRIMARY_CONTRAST, + LumoUtility.BorderRadius.FULL, + LumoUtility.Width.LARGE, + LumoUtility.Height.LARGE, + LumoUtility.BoxShadow.LARGE + ); + + // Notification banner - responsive positioning + Div notification = new Div(VaadinIcon.BELL_O.create(), new Span("New updates available!")); + notification.addClassNames( + // Changes from static to sticky to fixed + + // On mobile, it's just a static block at the top + LumoUtility.Position.STATIC, + // On tablets, it sticks to the top when you scroll + LumoUtility.Position.Breakpoint.Medium.STICKY, + // On desktops, it's always fixed to the top of the viewport + LumoUtility.Position.Breakpoint.Large.FIXED, + + // Position when fixed/sticky + + // Top of viewport + LumoUtility.Position.Top.NONE, + // Left edge + LumoUtility.Position.Start.NONE, + + // Styling + LumoUtility.Background.SUCCESS, + LumoUtility.TextColor.SUCCESS_CONTRAST, + LumoUtility.Padding.MEDIUM, + LumoUtility.Width.FULL, + LumoUtility.TextAlignment.CENTER, + LumoUtility.BoxShadow.MEDIUM + ); + + container.add(mainContent, fab); + add(title, notification, container); + } +} +---- +-- + +.Example of Position Responsive `Viewport >= Breakpoint.Large` +[.fill.white] +image::../_images/position_large.png[Position Responsive Breakpoints] + +.Example of Position Responsive `Viewport >= Breakpoint.Medium` +[.fill.white] +image::../_images/position_medium.png[Position Responsive Breakpoints] + +.Example of Position Responsive `Viewport >= Breakpoint.Small` +[.fill.white] +image::../_images/position_small.png[Position Responsive Breakpoints] + +==== Key Points + +1. *Position Type Changes:* Elements can change from `RELATIVE` on mobile to `ABSOLUTE` or `FIXED` on desktop, enabling different interaction patterns. +2. *Layout Strategy:* Mobile-first approach often uses normal document flow (`RELATIVE`, `STATIC`) and adds positioned overlays on larger screens. +3. *Z-Index Management:* When using positioned elements, consider z-index stacking context for proper layering. +4. *Performance:* Positioned elements, especially `FIXED`, can impact scroll performance on mobile devices. +5. *Accessibility:* Ensure positioned elements don't obstruct important content and remain accessible via keyboard navigation. +6. *Responsive Context:* Position changes work best when the parent container's positioning context is considered across breakpoints. + +The Position breakpoint system enables sophisticated responsive layouts with floating elements, overlays, and adaptive positioning strategies that enhance user experience across all device sizes while maintaining proper document flow and accessibility. + +== Conclusion + +Lumo’s responsive breakpoint utilities offer a structured and consistent way to adapt layouts and styles across different device sizes directly from Java code. +By leveraging the six supported groups — *Align Items, Display, Flex Direction, Font Size, Grid,* and *Position* — developers can create responsive, mobile-first designs without writing custom media queries. + +Keep in mind the following best practices: + +* Start with a **mobile-first** approach and progressively enhance for larger screens. +* **Combine utilities** carefully to maintain readability and consistent layout behavior. +* **Test across devices** and use browser developer tools to validate responsiveness. +* For utilities not yet covered by breakpoints (such as spacing, gap, or justify content), extend your theme with **custom CSS** media queries. + +For a complete overview of all available utility classes, refer to the main <> documentation. diff --git a/articles/styling/lumo/lumo-breakpoint.html b/articles/styling/lumo/lumo-breakpoint.html new file mode 100644 index 0000000000..19333fb138 --- /dev/null +++ b/articles/styling/lumo/lumo-breakpoint.html @@ -0,0 +1,2035 @@ + + + + + + + +Lumo Utility Classes: Responsive Breakpoints + + + + + +

+
+
+
+
+

Lumo includes a powerful set of responsive utility classes that allow you to apply specific styles based on the screen (viewport) size. +These classes use breakpoint CSS class name prefixes (sm:, md:, lg:, xl:, 2xl:) to apply styles only when the screen width meets a certain minimum threshold.

+
+
+

You can apply these classes to any Vaadin Flow component using the addClassNames() method. +This enables you to build complex, adaptive interfaces declaratively and directly from your Java code.

+
+
+ + + + + +
+
Important
+
+
Exclusive Focus on Breakpoints
+
+

This document focuses specifically on the responsive breakpoint prefixes (e.g., sm:, md:) and their corresponding Java APIs within LumoUtility.Breakpoint.

+
+
+

Although the examples use various base utility classes (like Display.FLEX or Padding.MEDIUM) to provide context, they are not the main topic here. +For a complete reference of all available utility classes, see the main Lumo Utility Classes documentation.

+
+
+
+
+

The default breakpoints are activated at the following minimum widths:

+
+ + +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 1. Available Responsive Breakpoint Classes
BreakpointCSS class name prefixesMinimum widthEquivalent screensEquivalent in CSS

Breakpoint.Small

sm

640px

Mobile devices

@media (min-width: 640px) {}

Breakpoint.Medium

md

768px

Tablets

@media (min-width: 768px) {}

Breakpoint.Large

lg

1024px

Small laptops

@media (min-width: 1024px) {}

Breakpoint.XLarge

xl

1280px

Large laptops

@media (min-width: 1280px) {}

Breakpoint.XXLarge

2xl

1536px

Large desktops

@media (min-width: 1536px) {}

+
+
+
+

Responsive Utilities and Limitations

+
+

Currently, Lumo provides responsive breakpoint prefixes (e.g., sm:, md:) for a specific set of utility groups. +This allows you to apply styles that adapt to different screen sizes directly from Java.

+
+
+

The utility groups that support responsive breakpoints are:

+
+
+
    +
  1. +

    Align Items: Controls alignment of flex items along the cross-axis. (e.g., sm:items-start, lg:items-center)

    +
  2. +
  3. +

    Display: Controls whether an element is shown, hidden, or changes display mode. (e.g., sm:hidden, md:block, lg:flex)

    +
  4. +
  5. +

    Flex Direction: Defines the direction of items in a flex container (row or column). (e.g., sm:flex-col, lg:flex-row)

    +
  6. +
  7. +

    Font Size: Adjusts the text size based on screen size for readability and hierarchy. (e.g., sm:text-lg, lg:text-3xl)

    +
  8. +
  9. +

    Grid: Controls the number of columns in a grid layout depending on screen width. (e.g., sm:grid-cols-2, md:grid-cols-4)

    +
  10. +
  11. +

    Position: Controls the position property (static, sticky, absolute, etc.) responsively. (e.g., md:sticky, lg:fixed)

    +
  12. +
+
+
+ + + + + +
+
Important
+
+
+

What about other utilities like Spacing, Gap, or Justify Content?

+
+
+

Common utilities such as Padding, Margin, Gap, and JustifyContent do not currently have responsive breakpoint variants in the LumoUtility Java API.

+
+
+

To apply responsive styles for these properties, you should use custom CSS with media queries in your application’s theme. +This approach gives you full control over the responsive behavior.

+
+
+
+
+

Example: Creating Responsive Padding with Custom CSS

+
+

Let’s say you want a Div to have small padding on mobile devices and large padding on desktops.

+
+
+

1- Apply a custom class name in Java:

+
+
+
+
+
+
Div responsiveCard = new Div();
+responsiveCard.addClassName("responsive-padding-card");
+// You can still apply non-responsive utilities
+responsiveCard.addClassNames(LumoUtility.Background.CONTRAST_5, LumoUtility.BorderRadius.LARGE);
+
+
+
+
+
+

2- Define the responsive styles in your theme’s CSS file (styles.css):

+
+
+
+
+
+
/* styles.css */
+
+.responsive-padding-card {
+  /* Default style for mobile */
+  padding: var(--lumo-space-s);
+}
+
+/* Apply larger padding on medium screens and up */
+@media (min-width: 768px) {
+  .responsive-padding-card {
+    padding: var(--lumo-space-l);
+  }
+}
+
+
+
+
+
+
+
+

Responsive Utility Examples

+
+
+

The following sections explore each of the 6 utility groups that currently offer responsive variants in the LumoUtility Java API.

+
+
+

Each section follows a similar structure to facilitate understanding: +a brief description of the utility, a basic usage example, a list of the available classes, and a complete, practical example demonstrating its application in a real-world scenario.

+
+
+
+
+

Align Items

+
+
+

LumoUtility.AlignItems controls the alignment of items along the cross axis of a flexbox or the block axis of a grid.

+
+
+

LumoUtility.AlignItems.Breakpoint provides the same alignment options, but scoped to specific viewport sizes.

+
+
+

Basic Breakpoint Usage

+
+
+
+
+
// Instantiate a container component
+Div container = new Div();
+
+// Apply different align-items at different breakpoints
+container.addClassNames(
+        LumoUtility.Display.FLEX,
+        // align-items: start on small screens
+        LumoUtility.AlignItems.Breakpoint.Small.START,
+        // align-items: center on medium screens
+        LumoUtility.AlignItems.Breakpoint.Medium.CENTER,
+        // align-items: end on large screens
+        LumoUtility.AlignItems.Breakpoint.Large.END
+);
+
+
+
+
+
+

The available classes within Small, Medium, Large, XLarge, and XXLarge breakpoints are:

+
+
+
    +
  • +

    BASELINE (e.g., sm:items-baseline, md:items-baseline) equivalent in CSS to align-items: baseline

    +
  • +
  • +

    CENTER (e.g., sm:items-center, md:items-center) equivalent in CSS to align-items: center

    +
  • +
  • +

    END (e.g., sm:items-end, md:items-end) equivalent in CSS to align-items: flex-end

    +
  • +
  • +

    START (e.g., sm:items-start, md:items-start) equivalent in CSS to align-items: flex-start

    +
  • +
  • +

    STRETCH (e.g., sm:items-stretch, md:items-stretch) equivalent in CSS to align-items: stretch

    +
  • +
+
+
+
+

Complete Responsive Example

+
+
+
+
+
import com.vaadin.flow.component.button.Button;
+import com.vaadin.flow.component.html.Div;
+import com.vaadin.flow.component.html.H3;
+import com.vaadin.flow.theme.lumo.LumoUtility;
+
+public class ResponsiveAlignItemsExample extends Div {
+
+    public ResponsiveAlignItemsExample() {
+        H3 title = new H3("Responsive Align Items Example");
+
+        // Create a responsive flex container
+        Div responsiveContainer = new Div();
+
+        responsiveContainer.addClassNames(
+             // Basic flex setup
+            LumoUtility.Display.FLEX,
+            LumoUtility.FlexDirection.COLUMN,
+            LumoUtility.Padding.MEDIUM,
+
+            // Responsive align-items
+
+            // End on mobile
+            LumoUtility.AlignItems.END,
+            // Center on tablet
+            LumoUtility.AlignItems.Breakpoint.Medium.CENTER,
+            // Start on desktop
+            LumoUtility.AlignItems.Breakpoint.Large.START
+        );
+
+        // Add content
+        responsiveContainer.add(
+            new Button("Button 1"),
+            new Button("Button 2"),
+            new Button("Button 3")
+        );
+
+        add(title, responsiveContainer);
+    }
+}
+
+
+
+
+
+
+AlignItems Responsive Breakpoints +
+
Figure 1. Example of AlignItems Responsive Viewport >= Breakpoint.Large | Breakpoint.Large.START
+
+
+
+AlignItems Responsive Breakpoints +
+
Figure 2. Example of AlignItems Responsive Viewport >= Breakpoint.Medium | Breakpoint.Medium.CENTER
+
+
+
+AlignItems Responsive Breakpoints +
+
Figure 3. Example of AlignItems Responsive Viewport >= Breakpoint.Small | Breakpoint.Small.END
+
+
+

Key Points

+
+
    +
  1. +

    Mobile First: Breakpoint utilities typically work mobile-first, so Small applies to all screen sizes unless overridden.

    +
  2. +
  3. +

    Cascading: Larger breakpoint styles override smaller ones. +For example, Large.CENTER will override Medium.START on large screens.

    +
  4. +
  5. +

    Combining: You can combine multiple breakpoint utilities for different properties (align-items, justify-content, flex-direction, etc.).

    +
  6. +
  7. +

    Testing: Test your responsive behavior by resizing your browser window or using browser dev tools to simulate different screen sizes.

    +
  8. +
+
+
+

The breakpoint system makes it easy to create responsive layouts that adapt to different screen sizes without writing custom CSS media queries.

+
+
+
+
+
+
+

Display

+
+
+

LumoUtility.Display setting the display property of an element. +Determines whether the element is a block or inline element and how its items are laid out.

+
+
+

LumoUtility.Display.Breakpoint defining the display property of an element that will be applied only for certain viewport sizes.

+
+
+

Basic Breakpoint Usage

+
+
+
+
+
// Instantiate a container component
+Div container = new Div();
+
+// Apply different display values at different breakpoints
+container.addClassNames(
+        // Hide on small screens
+        LumoUtility.Display.HIDDEN,
+        // Show as block on medium screens
+        LumoUtility.Display.Breakpoint.Medium.BLOCK,
+        // Show as flex on large screens
+        LumoUtility.Display.Breakpoint.Large.FLEX
+);
+
+
+
+
+
+

The available classes within Small, Medium, Large, XLarge, and XXLarge breakpoints are:

+
+
+
    +
  • +

    BLOCK (e.g., sm:block, md:block) equivalent in CSS to display: block

    +
  • +
  • +

    FLEX (e.g., sm:flex, md:flex) equivalent in CSS to display: flex

    +
  • +
  • +

    GRID (e.g., sm:grid, md:grid) equivalent in CSS to display: grid

    +
  • +
  • +

    HIDDEN (e.g., sm:hidden, md:hidden) equivalent in CSS to display: none

    +
  • +
  • +

    INLINE (e.g., sm:inline, md:inline) equivalent in CSS to display: inline

    +
  • +
  • +

    INLINE_BLOCK (e.g., sm:inline-block, md:inline-block) equivalent in CSS to display: inline-block

    +
  • +
  • +

    INLINE_FLEX (e.g., sm:inline-flex, md:inline-flex) equivalent in CSS to display: inline-flex

    +
  • +
  • +

    INLINE_GRID (e.g., sm:inline-grid, md:inline-grid) equivalent in CSS to display: inline-grid

    +
  • +
+
+
+
+

Complete Responsive Example

+
+
+
+
+
import com.vaadin.flow.component.button.Button;
+import com.vaadin.flow.component.html.Div;
+import com.vaadin.flow.component.html.H3;
+import com.vaadin.flow.component.html.Span;
+import com.vaadin.flow.theme.lumo.LumoUtility;
+
+public class ResponsiveDisplayExample extends Div {
+
+    public ResponsiveDisplayExample() {
+        H3 title = new H3("Responsive Display Example");
+
+        // Mobile-only message
+        Div mobileMessage = new Div();
+        mobileMessage.add(VaadinIcon.MOBILE.create(), new Span("Mobile view active"));
+        mobileMessage.addClassNames(
+                // Show on mobile
+                LumoUtility.Display.BLOCK,
+                // Hide on tablet and up
+                LumoUtility.Display.Breakpoint.Medium.HIDDEN,
+                // Hide on desktop
+                LumoUtility.Display.Breakpoint.Large.HIDDEN,
+                LumoUtility.Background.SUCCESS_10,
+                LumoUtility.Padding.MEDIUM,
+                LumoUtility.BorderRadius.MEDIUM
+        );
+
+        // Tablet-only message
+        Div tabletMessage = new Div();
+        tabletMessage.add(VaadinIcon.TABLET.create(), new Span("Tablet view active"));
+        tabletMessage.addClassNames(
+                // Hide on mobile
+                LumoUtility.Display.HIDDEN,
+                // Show on tablet
+                LumoUtility.Display.Breakpoint.Medium.BLOCK,
+                // Hide on desktop
+                LumoUtility.Display.Breakpoint.Large.HIDDEN,
+                LumoUtility.Background.PRIMARY_10,
+                LumoUtility.Padding.MEDIUM,
+                LumoUtility.BorderRadius.MEDIUM
+        );
+
+        // Desktop-only message
+        Div desktopMessage = new Div();
+        desktopMessage.add(VaadinIcon.DESKTOP.create(), new Span("Desktop view active"));
+        desktopMessage.addClassNames(
+                // Hide on mobile
+                LumoUtility.Display.HIDDEN,
+                // Hide on tablet
+                LumoUtility.Display.Breakpoint.Medium.HIDDEN,
+                // Show on desktop
+                LumoUtility.Display.Breakpoint.Large.BLOCK,
+                LumoUtility.Background.ERROR_10,
+                LumoUtility.Padding.MEDIUM,
+                LumoUtility.BorderRadius.MEDIUM
+        );
+
+        add(title, mobileMessage, tabletMessage, desktopMessage);
+    }
+}
+
+
+
+
+
+
+Display Responsive Breakpoints +
+
Figure 4. Example of Display Desktop Responsive Viewport >= Breakpoint.Large
+
+
+
+Display Responsive Breakpoints +
+
Figure 5. Example of Display Tablet Responsive Viewport >= Breakpoint.Medium
+
+
+
+Display Responsive Breakpoints +
+
Figure 6. Example of Display Mobile Responsive Viewport >= Breakpoint.Small
+
+
+

Key Points

+
+
    +
  1. +

    Mobile First: Display breakpoints work mobile-first, so Small applies to all screen sizes unless overridden.

    +
  2. +
  3. +

    Visibility Control: Use HIDDEN to hide elements at specific breakpoints, which is great for responsive navigation.

    +
  4. +
  5. +

    Layout Switching: Change between BLOCK, FLEX, and GRID to create completely different layouts at different screen sizes.

    +
  6. +
  7. +

    Performance: Elements with display: none are not rendered, which can improve performance on mobile devices.

    +
  8. +
  9. +

    Progressive Enhancement: Start with a simple mobile layout and enhance for larger screens.

    +
  10. +
  11. +

    Testing: Always test responsive behavior by resizing your browser or using developer tools to simulate different devices.

    +
  12. +
+
+
+

The Display breakpoint system provides powerful control over element visibility and layout behavior across different screen sizes, enabling you to create truly responsive interfaces without custom CSS.

+
+
+
+
+
+
+

Flex Direction

+
+
+

LumoUtility.FlexDirection defines the direction of items in a flex container. +This is extremely useful for switching from a column layout on mobile to a row layout on desktop.

+
+
+

LumoUtility.FlexDirection.Breakpoint allows you to apply different flex-direction values at different screen sizes (responsive design). +This is particularly useful for changing layout orientation based on screen size, such as switching from horizontal to vertical layouts.

+
+
+

Basic Breakpoint Usage

+
+
+
+
+
// Instantiate a container component
+Div container = new Div();
+
+// Apply different flex-direction values at different breakpoints
+container.addClassNames(
+    LumoUtility.Display.FLEX,
+    // Stack vertically on small screens
+    LumoUtility.FlexDirection.Breakpoint.Small.COLUMN,
+    // Arrange horizontally on medium screens
+    LumoUtility.FlexDirection.Breakpoint.Medium.ROW
+);
+
+
+
+
+
+

The available classes within Small, Medium, Large, XLarge, and XXLarge breakpoints are:

+
+
+
    +
  • +

    COLUMN (e.g., sm:flex-col, md:flex-col) equivalent in CSS to flex-direction: column

    +
  • +
  • +

    ROW (e.g., sm:flex-row, md:flex-row) equivalent in CSS to flex-direction: row

    +
  • +
+
+
+
+

Complete Responsive Example

+
+
+
+
+
import com.vaadin.flow.component.html.Div;
+import com.vaadin.flow.component.html.H3;
+import com.vaadin.flow.component.html.Span;
+import com.vaadin.flow.theme.lumo.LumoUtility;
+
+public class ResponsiveFlexDirectionExample extends Div {
+
+    public ResponsiveFlexDirectionExample() {
+        H3 title = new H3("Responsive Flex Direction Example");
+
+        // Container that changes flex direction based on screen size
+        Div flexContainer = new Div();
+        flexContainer.addClassNames(
+            // Basic flex setup
+            LumoUtility.Display.FLEX,
+            LumoUtility.Gap.MEDIUM,
+            LumoUtility.Padding.LARGE,
+            LumoUtility.BorderRadius.MEDIUM,
+            LumoUtility.Background.CONTRAST_5,
+
+            // Responsive flex-direction
+
+            // Stack on mobile
+            LumoUtility.FlexDirection.COLUMN,
+            // Horizontal on tablet
+            LumoUtility.FlexDirection.Breakpoint.Medium.ROW,
+
+            // Responsive alignment (works with flex-direction changes)
+            LumoUtility.AlignItems.CENTER,
+            LumoUtility.AlignItems.Breakpoint.Large.START
+        );
+
+        // Add content with indicators
+        flexContainer.add(
+            createFlexItem("First", "1", LumoUtility.Background.SUCCESS_10),
+            createFlexItem("Second", "2", LumoUtility.Background.PRIMARY_10),
+            createFlexItem("Third", "3", LumoUtility.Background.ERROR_10)
+        );
+
+        add(title, flexContainer);
+    }
+
+    private Div createFlexItem(String text, String number, String bgColor) {
+        Div item = new Div();
+        item.addClassNames(
+            bgColor,
+            LumoUtility.Padding.MEDIUM,
+            LumoUtility.BorderRadius.SMALL,
+            LumoUtility.Display.FLEX,
+            LumoUtility.AlignItems.CENTER,
+            LumoUtility.JustifyContent.CENTER,
+            LumoUtility.FlexDirection.COLUMN,
+            LumoUtility.Gap.SMALL
+        );
+
+        Span label = new Span(text);
+        label.addClassName(LumoUtility.FontWeight.BOLD);
+
+        Span numberSpan = new Span("#" + number);
+        numberSpan.addClassName(LumoUtility.FontSize.SMALL);
+
+        item.add(label, numberSpan);
+        return item;
+    }
+}
+
+
+
+
+
+
+FlexDirection Responsive Breakpoints +
+
Figure 7. Example of FlexDirection Column Breakpoints
+
+
+
+FlexDirection Responsive Breakpoints +
+
Figure 8. Example of FlexDirection Row Responsive
+
+
+

Key Points

+
+
    +
  1. +

    Mobile First: FlexDirection breakpoints work mobile-first, so Small.COLUMN applies to all screen sizes unless overridden by larger breakpoints.

    +
  2. +
  3. +

    Layout Transformation: Easily switch between vertical stacking (mobile) and horizontal layouts (desktop) for better space utilization.

    +
  4. +
  5. +

    Combined with Other Flex Properties: FlexDirection changes work well with responsive AlignItems, JustifyContent, and Gap utilities.

    +
  6. +
  7. +

    Form Optimization: Perfect for forms that need to stack on mobile but can be side-by-side on desktop.

    +
  8. +
  9. +

    Navigation Patterns: Essential for responsive navigation that collapses to vertical on mobile devices.

    +
  10. +
  11. +

    Testing: Always test the flow and visual hierarchy when direction changes across breakpoints.

    +
  12. +
+
+
+

The FlexDirection breakpoint system provides powerful control over layout flow and element arrangement, making it easy to create responsive designs that adapt naturally to different screen sizes.

+
+
+
+
+
+
+

Font Size

+
+
+

LumoUtility.FontSize adjusts the font size of text based on the screen size to improve readability and visual hierarchy.

+
+
+

LumoUtility.FontSize.Breakpoint allows you to apply different font-size values at different screen sizes (responsive design). +This is particularly useful for creating typography that scales appropriately across devices, ensuring optimal readability on all screen sizes.

+
+
+

Basic Breakpoint Usage

+
+
+
+
+
// Instantiate a container component
+Div container = new Div();
+
+// Apply different align-items at different breakpoints
+container.addClassNames(
+        // Large font on small screens
+        LumoUtility.FontSize.LARGE,
+        // Extra large on medium screens
+        LumoUtility.FontSize.Breakpoint.Medium.XLARGE,
+        // Extra extra large on large screens
+        LumoUtility.FontSize.Breakpoint.Large.XXLARGE
+);
+
+
+
+
+
+

The available classes within Small, Medium, Large, XLarge, and XXLarge breakpoints are:

+
+ + ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 2. Available Responsive Font Sizes
Java ConstantDescriptionCSS class name prefixesEquivalent in CSS

XXSMALL

Extra extra small text

+

text-2xs

+

font-size: 0.75rem

XSMALL

Extra small text

+

text-xs

+

font-size: 0.8125rem

SMALL

Small text

+

text-s

+

font-size: 0.875rem

MEDIUM

Medium/normal text

+

text-m

+

font-size: 1rem

LARGE

Large text

+

text-l

+

font-size: 1.125rem

XLARGE

Extra large text

+

text-xl

+

font-size: 1.375rem

XXLARGE

Extra extra large text

+

text-2xl

+

font-size: 1.75rem

XXXLARGE

Extra extra extra large text

+

text-3xl

+

font-size: 2.5rem

+
+
+

Complete Responsive Typography Example

+
+
+
+
+
import com.vaadin.flow.component.html.H1;
+import com.vaadin.flow.component.html.H2;
+import com.vaadin.flow.component.html.Span;
+import com.vaadin.flow.theme.lumo.LumoUtility;
+
+public class ResponsiveTypographyExample extends Div {
+
+    public ResponsiveTypographyExample() {
+        // Main heading with significant size changes
+        H1 mainHeading = new H1("Welcome to Our Platform");
+        mainHeading.addClassNames(
+                // Responsive font sizes
+
+                // Large on mobile
+                LumoUtility.FontSize.LARGE,
+                // XXLarge on tablet
+                LumoUtility.FontSize.Breakpoint.Medium.XXLARGE,
+                // XXXLarge on desktop
+                LumoUtility.FontSize.Breakpoint.Large.XXXLARGE,
+
+                // Additional styling
+                LumoUtility.FontWeight.BOLD,
+                LumoUtility.TextColor.PRIMARY,
+                LumoUtility.Margin.NONE,
+                LumoUtility.Padding.MEDIUM
+        );
+
+        // Subtitle with moderate scaling
+        H2 subtitle = new H2("Discover amazing features and services");
+        subtitle.addClassNames(
+                // Medium on mobile
+                LumoUtility.FontSize.MEDIUM,
+                // Large on tablet
+                LumoUtility.FontSize.Breakpoint.Medium.LARGE,
+                // XL on desktop
+                LumoUtility.FontSize.Breakpoint.Large.XLARGE,
+
+                LumoUtility.TextColor.SECONDARY,
+                LumoUtility.FontWeight.NORMAL,
+                LumoUtility.Margin.SMALL
+        );
+
+        // Body text with subtle scaling
+        Span bodyText = new Span(
+                "Our platform offers cutting-edge solutions for modern businesses. " +
+                "Experience seamless integration, powerful analytics, and intuitive design " +
+                "that adapts to your needs across all devices."
+        );
+        bodyText.addClassNames(
+                // Small on mobile
+                LumoUtility.FontSize.SMALL,
+                // Medium on tablet+
+                LumoUtility.FontSize.Breakpoint.Medium.MEDIUM,
+                // Large on desktop
+                LumoUtility.FontSize.Breakpoint.Large.LARGE,
+
+                LumoUtility.TextColor.BODY,
+                LumoUtility.LineHeight.MEDIUM,
+                LumoUtility.Padding.MEDIUM
+        );
+
+        add(mainHeading, subtitle, bodyText);
+    }
+}
+
+
+
+
+
+
+FontSize Responsive Breakpoints +
+
Figure 9. Example of FontSize Responsive Viewport >= Breakpoint.Large
+
+
+
+FontSize Responsive Breakpoints +
+
Figure 10. Example of FontSize Responsive Viewport >= Breakpoint.Medium
+
+
+
+FontSize Responsive Breakpoints +
+
Figure 11. Example of FontSize Responsive Viewport >= Breakpoint.Small
+
+
+

Key Points

+
+
    +
  1. +

    Reading Comfort: Font sizes should be comfortable to read at typical viewing distances for each device type.

    +
  2. +
  3. +

    Visual Hierarchy: Maintain proper typographic hierarchy across breakpoints - headlines should always be larger than body text.

    +
  4. +
  5. +

    Content Density: Mobile screens benefit from slightly smaller body text to fit more content, while desktop can use larger text for better readability.

    +
  6. +
  7. +

    Progressive Enhancement: Start with readable mobile sizes and enhance for larger screens rather than scaling down.

    +
  8. +
  9. +

    Performance Impact: Font size changes are lightweight and don’t significantly impact performance.

    +
  10. +
  11. +

    Accessibility: Ensure minimum font sizes meet accessibility guidelines (typically 14px+ for body text).

    +
  12. +
  13. +

    Brand Consistency: Maintain your brand’s typographic personality while adapting sizes for different contexts.

    +
  14. +
+
+
+

The FontSize breakpoint system enables you to create typography that feels native to each device while maintaining consistent information hierarchy and readability across all screen sizes.

+
+
+
+
+
+
+

Grid

+
+
+

LumoUtility.Grid defines the number of columns and rows in a grid container. +This is perfect for creating responsive card layouts that adapt to the available space.

+
+
+

LumoUtility.Grid.Breakpoint allows you to apply different CSS Grid properties at different screen sizes (responsive design). +This includes columns configurations that adapt to create optimal layouts across devices.

+
+
+

Basic Breakpoint Usage

+
+
+
+
+
// Instantiate a container component
+Div container = new Div();
+
+// Apply different align-items at different breakpoints
+container.addClassNames(
+            LumoUtility.Display.GRID,
+            // 1 column on small screens
+            LumoUtility.Grid.Column.COLUMNS_1,
+            // 2 columns on medium screens
+            LumoUtility.Grid.Breakpoint.Medium.COLUMNS_2,
+            // 3 columns on large screens
+            LumoUtility.Grid.Breakpoint.Large.COLUMNS_3,
+            // 4 columns on extra large screens
+            LumoUtility.Grid.Breakpoint.XLarge.COLUMNS_4
+);
+
+
+
+
+
+

The available classes within Small, Medium, Large, XLarge, and XXLarge breakpoints are:

+
+
+
    +
  • +

    COLUMNS_1 through COLUMNS_12 - Grid with 1 to 12 columns (e.g., sm:grid-cols-1, md:grid-cols-12) equivalent in CSS to grid-template-columns: repeat(1, minmax(0, 1fr)) through grid-template-columns: repeat(12, minmax(0, 1fr))

    +
  • +
+
+
+
+

Complete Responsive Grid Example with Columns and Rows

+
+
+
+
+
import com.vaadin.flow.component.html.Div;
+import com.vaadin.flow.component.html.H3;
+import com.vaadin.flow.component.html.Span;
+import com.vaadin.flow.theme.lumo.LumoUtility;
+
+public class ResponsiveGridColumnsRowsExample extends Div {
+
+    public ResponsiveGridColumnsRowsExample() {
+        H3 title = new H3("Responsive Grid with Columns and Rows");
+
+        // Grid container with responsive columns and rows
+        Div gridContainer = new Div();
+        gridContainer.addClassNames(
+            LumoUtility.Display.GRID,
+            LumoUtility.Gap.MEDIUM,
+            LumoUtility.Padding.LARGE,
+            LumoUtility.Background.CONTRAST_5,
+            LumoUtility.BorderRadius.LARGE,
+
+            // Responsive grid columns
+
+            // 1 column on mobile
+            LumoUtility.Grid.Column.COLUMNS_1,
+            // 2 columns on tablet
+            LumoUtility.Grid.Breakpoint.Medium.COLUMNS_2,
+            // 3 columns on desktop
+            LumoUtility.Grid.Breakpoint.Large.COLUMNS_3,
+            // 4 columns on large desktop
+            LumoUtility.Grid.Breakpoint.XLarge.COLUMNS_4,
+            // 6 columns on extra large
+            LumoUtility.Grid.Breakpoint.XXLarge.COLUMNS_6
+        );
+
+        // Create grid items with different spans
+        for (int i = 1; i <= 12; i++) {
+            Div gridItem = createGridItem("Item " + i, i);
+
+            gridContainer.add(gridItem);
+        }
+
+        add(title, gridContainer);
+    }
+
+    private Div createGridItem(String title, int index) {
+        Div item = new Div();
+
+        // Different background colors for visual distinction
+        String bgColor = switch (index % 4) {
+            case 1 -> LumoUtility.Background.SUCCESS_10;
+            case 2 -> LumoUtility.Background.PRIMARY_10;
+            case 3 -> LumoUtility.Background.ERROR_10;
+            default -> LumoUtility.Background.CONTRAST_10;
+        };
+
+        item.addClassNames(
+            bgColor,
+            LumoUtility.BorderRadius.MEDIUM,
+            LumoUtility.Padding.LARGE,
+            LumoUtility.Display.FLEX,
+            LumoUtility.AlignItems.CENTER,
+            LumoUtility.JustifyContent.CENTER,
+            LumoUtility.Height.LARGE
+        );
+
+        item.add(new Span(title));
+        return item;
+    }
+}
+
+
+
+
+
+
+Grid Responsive Breakpoints +
+
Figure 12. Example of Grid Responsive Viewport >= Breakpoint.XLarge
+
+
+
+Grid Responsive Breakpoints +
+
Figure 13. Example of Grid Responsive Viewport >= Breakpoint.Medium
+
+
+
+Grid Responsive Breakpoints +
+
Figure 14. Example of Grid Responsive Viewport >= Breakpoint.Small
+
+
+

Key Points

+
+
    +
  1. +

    Mobile First Approach: Start with single column layouts and expand for larger screens using Small.COLUMNS_1Large.COLUMNS_4.

    +
  2. +
  3. +

    Column Spans: Use COLUMN_SPAN_* to create featured content that stands out across multiple grid cells.

    +
  4. +
  5. +

    Content Hierarchy: Larger spans naturally create visual hierarchy - use them for important content like hero sections or featured products.

    +
  6. +
  7. +

    Auto-Placement: Grid automatically places items in available cells, making it easy to add/remove content without breaking the layout.

    +
  8. +
  9. +

    Performance: CSS Grid with breakpoints provides excellent performance compared to JavaScript-based responsive solutions.

    +
  10. +
+
+
+

The Grid breakpoint system with columns provides fine-grained control over responsive layouts, enabling complex magazine-style designs that adapt beautifully across all device sizes while maintaining visual hierarchy and content flow.

+
+
+
+
+
+
+

Position

+
+
+

LumoUtility.Position controls the property of an element at different breakpoints, enabling advanced layouts like fixed sidebars on desktop that are part of the normal flow on mobile.

+
+
+

LumoUtility.Position.Breakpoint allows you to apply different CSS positioning properties at different screen sizes (responsive design). +This includes positioning types, directional offsets, and negative positioning that adapt to create optimal layouts and overlays across devices.

+
+
+

Basic Breakpoint Usage

+
+
+
+
+
// Instantiate a container component
+Div container = new Div();
+
+// Apply different align-items at different breakpoints
+container.addClassNames(
+        // Relative positioning on small screens
+        LumoUtility.Position.RELATIVE,
+        // Absolute positioning on medium screens
+        LumoUtility.Position.Breakpoint.Medium.ABSOLUTE,
+        // Fixed positioning on large screens
+        LumoUtility.Position.Breakpoint.Large.FIXED
+);
+
+
+
+
+
+

The available classes within Small, Medium, Large, XLarge, and XXLarge breakpoints are:

+
+
+
    +
  • +

    ABSOLUTE - Absolutely positioned (e.g., sm:absolute, md:absolute) equivalent in CSS to position: absolute

    +
  • +
  • +

    FIXED - Fixed positioned (e.g., sm:fixed, md:fixed) equivalent in CSS to position: fixed

    +
  • +
  • +

    RELATIVE - Relatively positioned (e.g., sm:relative, md:relative) equivalent in CSS to position: relative

    +
  • +
  • +

    STATIC - Static positioned (e.g., sm:static, md:static) equivalent in CSS to position: static

    +
  • +
  • +

    STICKY - Sticky positioned (e.g., sm:sticky, md:sticky) equivalent in CSS to position: sticky

    +
  • +
+
+
+
+

Complete Responsive Position Example

+
+
+
+
+
import com.vaadin.flow.component.button.Button;
+import com.vaadin.flow.component.html.Div;
+import com.vaadin.flow.component.html.H3;
+import com.vaadin.flow.component.html.Span;
+import com.vaadin.flow.theme.lumo.LumoUtility;
+import com.vaadin.flow.component.icon.VaadinIcon;
+
+public class ResponsivePositionExample extends Div {
+
+    public ResponsivePositionExample() {
+        H3 title = new H3("Responsive Position Example");
+
+        // Container with relative positioning
+        Div container = new Div();
+        container.addClassNames(
+                LumoUtility.Position.RELATIVE,
+                LumoUtility.Background.CONTRAST_5,
+                LumoUtility.Height.XLARGE,
+                LumoUtility.Width.FULL,
+                LumoUtility.BorderRadius.LARGE,
+                LumoUtility.Margin.LARGE
+        );
+
+        // Main content
+        Div mainContent = new Div("Main Content Area");
+        mainContent.addClassNames(
+                LumoUtility.Background.BASE,
+                LumoUtility.Padding.LARGE,
+                LumoUtility.BorderRadius.MEDIUM,
+                LumoUtility.Height.LARGE,
+                LumoUtility.Display.FLEX,
+                LumoUtility.AlignItems.CENTER,
+                LumoUtility.JustifyContent.CENTER
+        );
+
+        // Floating action button - responsive positioning
+        Button fab = new Button(VaadinIcon.ENVELOPE_O.create());
+        fab.addClassNames(
+                // Position types change with screen size
+
+                // On mobile, keep it in the normal document flow to avoid overlap issues
+                LumoUtility.Position.RELATIVE,
+                // On tablets and up, float it over the content
+                LumoUtility.Position.Breakpoint.Medium.ABSOLUTE,
+
+                // --- Position offsets (only apply when position is absolute/fixed) ---
+                LumoUtility.Position.Bottom.MEDIUM,
+                LumoUtility.Position.End.MEDIUM,
+
+                // Styling
+                LumoUtility.Background.PRIMARY,
+                LumoUtility.TextColor.PRIMARY_CONTRAST,
+                LumoUtility.BorderRadius.FULL,
+                LumoUtility.Width.LARGE,
+                LumoUtility.Height.LARGE,
+                LumoUtility.BoxShadow.LARGE
+        );
+
+        // Notification banner - responsive positioning
+        Div notification = new Div(VaadinIcon.BELL_O.create(), new Span("New updates available!"));
+        notification.addClassNames(
+                // Changes from static to sticky to fixed
+
+                // On mobile, it's just a static block at the top
+                LumoUtility.Position.STATIC,
+                // On tablets, it sticks to the top when you scroll
+                LumoUtility.Position.Breakpoint.Medium.STICKY,
+                // On desktops, it's always fixed to the top of the viewport
+                LumoUtility.Position.Breakpoint.Large.FIXED,
+
+                // Position when fixed/sticky
+
+                // Top of viewport
+                LumoUtility.Position.Top.NONE,
+                // Left edge
+                LumoUtility.Position.Start.NONE,
+
+                // Styling
+                LumoUtility.Background.SUCCESS,
+                LumoUtility.TextColor.SUCCESS_CONTRAST,
+                LumoUtility.Padding.MEDIUM,
+                LumoUtility.Width.FULL,
+                LumoUtility.TextAlignment.CENTER,
+                LumoUtility.BoxShadow.MEDIUM
+        );
+
+        container.add(mainContent, fab);
+        add(title, notification, container);
+    }
+}
+
+
+
+
+
+
+Position Responsive Breakpoints +
+
Figure 15. Example of Position Responsive Viewport >= Breakpoint.Large
+
+
+
+Position Responsive Breakpoints +
+
Figure 16. Example of Position Responsive Viewport >= Breakpoint.Medium
+
+
+
+Position Responsive Breakpoints +
+
Figure 17. Example of Position Responsive Viewport >= Breakpoint.Small
+
+
+

Key Points

+
+
    +
  1. +

    Position Type Changes: Elements can change from RELATIVE on mobile to ABSOLUTE or FIXED on desktop, enabling different interaction patterns.

    +
  2. +
  3. +

    Layout Strategy: Mobile-first approach often uses normal document flow (RELATIVE, STATIC) and adds positioned overlays on larger screens.

    +
  4. +
  5. +

    Z-Index Management: When using positioned elements, consider z-index stacking context for proper layering.

    +
  6. +
  7. +

    Performance: Positioned elements, especially FIXED, can impact scroll performance on mobile devices.

    +
  8. +
  9. +

    Accessibility: Ensure positioned elements don’t obstruct important content and remain accessible via keyboard navigation.

    +
  10. +
  11. +

    Responsive Context: Position changes work best when the parent container’s positioning context is considered across breakpoints.

    +
  12. +
+
+
+

The Position breakpoint system enables sophisticated responsive layouts with floating elements, overlays, and adaptive positioning strategies that enhance user experience across all device sizes while maintaining proper document flow and accessibility.

+
+
+
+
+
+
+
+ + + + \ No newline at end of file From fc5612a475775c0da879f08e117a2f3197f03509 Mon Sep 17 00:00:00 2001 From: fredpena Date: Mon, 18 Aug 2025 14:44:51 -0400 Subject: [PATCH 09/10] docs: Add documentation for Lumo Utility Classes - Responsive Breakpoints --- articles/styling/lumo/lumo-breakpoint.html | 2035 -------------------- 1 file changed, 2035 deletions(-) delete mode 100644 articles/styling/lumo/lumo-breakpoint.html diff --git a/articles/styling/lumo/lumo-breakpoint.html b/articles/styling/lumo/lumo-breakpoint.html deleted file mode 100644 index 19333fb138..0000000000 --- a/articles/styling/lumo/lumo-breakpoint.html +++ /dev/null @@ -1,2035 +0,0 @@ - - - - - - - -Lumo Utility Classes: Responsive Breakpoints - - - - - - -
-
-
-
-

Lumo includes a powerful set of responsive utility classes that allow you to apply specific styles based on the screen (viewport) size. -These classes use breakpoint CSS class name prefixes (sm:, md:, lg:, xl:, 2xl:) to apply styles only when the screen width meets a certain minimum threshold.

-
-
-

You can apply these classes to any Vaadin Flow component using the addClassNames() method. -This enables you to build complex, adaptive interfaces declaratively and directly from your Java code.

-
-
- - - - - -
-
Important
-
-
Exclusive Focus on Breakpoints
-
-

This document focuses specifically on the responsive breakpoint prefixes (e.g., sm:, md:) and their corresponding Java APIs within LumoUtility.Breakpoint.

-
-
-

Although the examples use various base utility classes (like Display.FLEX or Padding.MEDIUM) to provide context, they are not the main topic here. -For a complete reference of all available utility classes, see the main Lumo Utility Classes documentation.

-
-
-
-
-

The default breakpoints are activated at the following minimum widths:

-
- - ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Table 1. Available Responsive Breakpoint Classes
BreakpointCSS class name prefixesMinimum widthEquivalent screensEquivalent in CSS

Breakpoint.Small

sm

640px

Mobile devices

@media (min-width: 640px) {}

Breakpoint.Medium

md

768px

Tablets

@media (min-width: 768px) {}

Breakpoint.Large

lg

1024px

Small laptops

@media (min-width: 1024px) {}

Breakpoint.XLarge

xl

1280px

Large laptops

@media (min-width: 1280px) {}

Breakpoint.XXLarge

2xl

1536px

Large desktops

@media (min-width: 1536px) {}

-
-
-
-

Responsive Utilities and Limitations

-
-

Currently, Lumo provides responsive breakpoint prefixes (e.g., sm:, md:) for a specific set of utility groups. -This allows you to apply styles that adapt to different screen sizes directly from Java.

-
-
-

The utility groups that support responsive breakpoints are:

-
-
-
    -
  1. -

    Align Items: Controls alignment of flex items along the cross-axis. (e.g., sm:items-start, lg:items-center)

    -
  2. -
  3. -

    Display: Controls whether an element is shown, hidden, or changes display mode. (e.g., sm:hidden, md:block, lg:flex)

    -
  4. -
  5. -

    Flex Direction: Defines the direction of items in a flex container (row or column). (e.g., sm:flex-col, lg:flex-row)

    -
  6. -
  7. -

    Font Size: Adjusts the text size based on screen size for readability and hierarchy. (e.g., sm:text-lg, lg:text-3xl)

    -
  8. -
  9. -

    Grid: Controls the number of columns in a grid layout depending on screen width. (e.g., sm:grid-cols-2, md:grid-cols-4)

    -
  10. -
  11. -

    Position: Controls the position property (static, sticky, absolute, etc.) responsively. (e.g., md:sticky, lg:fixed)

    -
  12. -
-
-
- - - - - -
-
Important
-
-
-

What about other utilities like Spacing, Gap, or Justify Content?

-
-
-

Common utilities such as Padding, Margin, Gap, and JustifyContent do not currently have responsive breakpoint variants in the LumoUtility Java API.

-
-
-

To apply responsive styles for these properties, you should use custom CSS with media queries in your application’s theme. -This approach gives you full control over the responsive behavior.

-
-
-
-
-

Example: Creating Responsive Padding with Custom CSS

-
-

Let’s say you want a Div to have small padding on mobile devices and large padding on desktops.

-
-
-

1- Apply a custom class name in Java:

-
-
-
-
-
-
Div responsiveCard = new Div();
-responsiveCard.addClassName("responsive-padding-card");
-// You can still apply non-responsive utilities
-responsiveCard.addClassNames(LumoUtility.Background.CONTRAST_5, LumoUtility.BorderRadius.LARGE);
-
-
-
-
-
-

2- Define the responsive styles in your theme’s CSS file (styles.css):

-
-
-
-
-
-
/* styles.css */
-
-.responsive-padding-card {
-  /* Default style for mobile */
-  padding: var(--lumo-space-s);
-}
-
-/* Apply larger padding on medium screens and up */
-@media (min-width: 768px) {
-  .responsive-padding-card {
-    padding: var(--lumo-space-l);
-  }
-}
-
-
-
-
-
-
-
-

Responsive Utility Examples

-
-
-

The following sections explore each of the 6 utility groups that currently offer responsive variants in the LumoUtility Java API.

-
-
-

Each section follows a similar structure to facilitate understanding: -a brief description of the utility, a basic usage example, a list of the available classes, and a complete, practical example demonstrating its application in a real-world scenario.

-
-
-
-
-

Align Items

-
-
-

LumoUtility.AlignItems controls the alignment of items along the cross axis of a flexbox or the block axis of a grid.

-
-
-

LumoUtility.AlignItems.Breakpoint provides the same alignment options, but scoped to specific viewport sizes.

-
-
-

Basic Breakpoint Usage

-
-
-
-
-
// Instantiate a container component
-Div container = new Div();
-
-// Apply different align-items at different breakpoints
-container.addClassNames(
-        LumoUtility.Display.FLEX,
-        // align-items: start on small screens
-        LumoUtility.AlignItems.Breakpoint.Small.START,
-        // align-items: center on medium screens
-        LumoUtility.AlignItems.Breakpoint.Medium.CENTER,
-        // align-items: end on large screens
-        LumoUtility.AlignItems.Breakpoint.Large.END
-);
-
-
-
-
-
-

The available classes within Small, Medium, Large, XLarge, and XXLarge breakpoints are:

-
-
-
    -
  • -

    BASELINE (e.g., sm:items-baseline, md:items-baseline) equivalent in CSS to align-items: baseline

    -
  • -
  • -

    CENTER (e.g., sm:items-center, md:items-center) equivalent in CSS to align-items: center

    -
  • -
  • -

    END (e.g., sm:items-end, md:items-end) equivalent in CSS to align-items: flex-end

    -
  • -
  • -

    START (e.g., sm:items-start, md:items-start) equivalent in CSS to align-items: flex-start

    -
  • -
  • -

    STRETCH (e.g., sm:items-stretch, md:items-stretch) equivalent in CSS to align-items: stretch

    -
  • -
-
-
-
-

Complete Responsive Example

-
-
-
-
-
import com.vaadin.flow.component.button.Button;
-import com.vaadin.flow.component.html.Div;
-import com.vaadin.flow.component.html.H3;
-import com.vaadin.flow.theme.lumo.LumoUtility;
-
-public class ResponsiveAlignItemsExample extends Div {
-
-    public ResponsiveAlignItemsExample() {
-        H3 title = new H3("Responsive Align Items Example");
-
-        // Create a responsive flex container
-        Div responsiveContainer = new Div();
-
-        responsiveContainer.addClassNames(
-             // Basic flex setup
-            LumoUtility.Display.FLEX,
-            LumoUtility.FlexDirection.COLUMN,
-            LumoUtility.Padding.MEDIUM,
-
-            // Responsive align-items
-
-            // End on mobile
-            LumoUtility.AlignItems.END,
-            // Center on tablet
-            LumoUtility.AlignItems.Breakpoint.Medium.CENTER,
-            // Start on desktop
-            LumoUtility.AlignItems.Breakpoint.Large.START
-        );
-
-        // Add content
-        responsiveContainer.add(
-            new Button("Button 1"),
-            new Button("Button 2"),
-            new Button("Button 3")
-        );
-
-        add(title, responsiveContainer);
-    }
-}
-
-
-
-
-
-
-AlignItems Responsive Breakpoints -
-
Figure 1. Example of AlignItems Responsive Viewport >= Breakpoint.Large | Breakpoint.Large.START
-
-
-
-AlignItems Responsive Breakpoints -
-
Figure 2. Example of AlignItems Responsive Viewport >= Breakpoint.Medium | Breakpoint.Medium.CENTER
-
-
-
-AlignItems Responsive Breakpoints -
-
Figure 3. Example of AlignItems Responsive Viewport >= Breakpoint.Small | Breakpoint.Small.END
-
-
-

Key Points

-
-
    -
  1. -

    Mobile First: Breakpoint utilities typically work mobile-first, so Small applies to all screen sizes unless overridden.

    -
  2. -
  3. -

    Cascading: Larger breakpoint styles override smaller ones. -For example, Large.CENTER will override Medium.START on large screens.

    -
  4. -
  5. -

    Combining: You can combine multiple breakpoint utilities for different properties (align-items, justify-content, flex-direction, etc.).

    -
  6. -
  7. -

    Testing: Test your responsive behavior by resizing your browser window or using browser dev tools to simulate different screen sizes.

    -
  8. -
-
-
-

The breakpoint system makes it easy to create responsive layouts that adapt to different screen sizes without writing custom CSS media queries.

-
-
-
-
-
-
-

Display

-
-
-

LumoUtility.Display setting the display property of an element. -Determines whether the element is a block or inline element and how its items are laid out.

-
-
-

LumoUtility.Display.Breakpoint defining the display property of an element that will be applied only for certain viewport sizes.

-
-
-

Basic Breakpoint Usage

-
-
-
-
-
// Instantiate a container component
-Div container = new Div();
-
-// Apply different display values at different breakpoints
-container.addClassNames(
-        // Hide on small screens
-        LumoUtility.Display.HIDDEN,
-        // Show as block on medium screens
-        LumoUtility.Display.Breakpoint.Medium.BLOCK,
-        // Show as flex on large screens
-        LumoUtility.Display.Breakpoint.Large.FLEX
-);
-
-
-
-
-
-

The available classes within Small, Medium, Large, XLarge, and XXLarge breakpoints are:

-
-
-
    -
  • -

    BLOCK (e.g., sm:block, md:block) equivalent in CSS to display: block

    -
  • -
  • -

    FLEX (e.g., sm:flex, md:flex) equivalent in CSS to display: flex

    -
  • -
  • -

    GRID (e.g., sm:grid, md:grid) equivalent in CSS to display: grid

    -
  • -
  • -

    HIDDEN (e.g., sm:hidden, md:hidden) equivalent in CSS to display: none

    -
  • -
  • -

    INLINE (e.g., sm:inline, md:inline) equivalent in CSS to display: inline

    -
  • -
  • -

    INLINE_BLOCK (e.g., sm:inline-block, md:inline-block) equivalent in CSS to display: inline-block

    -
  • -
  • -

    INLINE_FLEX (e.g., sm:inline-flex, md:inline-flex) equivalent in CSS to display: inline-flex

    -
  • -
  • -

    INLINE_GRID (e.g., sm:inline-grid, md:inline-grid) equivalent in CSS to display: inline-grid

    -
  • -
-
-
-
-

Complete Responsive Example

-
-
-
-
-
import com.vaadin.flow.component.button.Button;
-import com.vaadin.flow.component.html.Div;
-import com.vaadin.flow.component.html.H3;
-import com.vaadin.flow.component.html.Span;
-import com.vaadin.flow.theme.lumo.LumoUtility;
-
-public class ResponsiveDisplayExample extends Div {
-
-    public ResponsiveDisplayExample() {
-        H3 title = new H3("Responsive Display Example");
-
-        // Mobile-only message
-        Div mobileMessage = new Div();
-        mobileMessage.add(VaadinIcon.MOBILE.create(), new Span("Mobile view active"));
-        mobileMessage.addClassNames(
-                // Show on mobile
-                LumoUtility.Display.BLOCK,
-                // Hide on tablet and up
-                LumoUtility.Display.Breakpoint.Medium.HIDDEN,
-                // Hide on desktop
-                LumoUtility.Display.Breakpoint.Large.HIDDEN,
-                LumoUtility.Background.SUCCESS_10,
-                LumoUtility.Padding.MEDIUM,
-                LumoUtility.BorderRadius.MEDIUM
-        );
-
-        // Tablet-only message
-        Div tabletMessage = new Div();
-        tabletMessage.add(VaadinIcon.TABLET.create(), new Span("Tablet view active"));
-        tabletMessage.addClassNames(
-                // Hide on mobile
-                LumoUtility.Display.HIDDEN,
-                // Show on tablet
-                LumoUtility.Display.Breakpoint.Medium.BLOCK,
-                // Hide on desktop
-                LumoUtility.Display.Breakpoint.Large.HIDDEN,
-                LumoUtility.Background.PRIMARY_10,
-                LumoUtility.Padding.MEDIUM,
-                LumoUtility.BorderRadius.MEDIUM
-        );
-
-        // Desktop-only message
-        Div desktopMessage = new Div();
-        desktopMessage.add(VaadinIcon.DESKTOP.create(), new Span("Desktop view active"));
-        desktopMessage.addClassNames(
-                // Hide on mobile
-                LumoUtility.Display.HIDDEN,
-                // Hide on tablet
-                LumoUtility.Display.Breakpoint.Medium.HIDDEN,
-                // Show on desktop
-                LumoUtility.Display.Breakpoint.Large.BLOCK,
-                LumoUtility.Background.ERROR_10,
-                LumoUtility.Padding.MEDIUM,
-                LumoUtility.BorderRadius.MEDIUM
-        );
-
-        add(title, mobileMessage, tabletMessage, desktopMessage);
-    }
-}
-
-
-
-
-
-
-Display Responsive Breakpoints -
-
Figure 4. Example of Display Desktop Responsive Viewport >= Breakpoint.Large
-
-
-
-Display Responsive Breakpoints -
-
Figure 5. Example of Display Tablet Responsive Viewport >= Breakpoint.Medium
-
-
-
-Display Responsive Breakpoints -
-
Figure 6. Example of Display Mobile Responsive Viewport >= Breakpoint.Small
-
-
-

Key Points

-
-
    -
  1. -

    Mobile First: Display breakpoints work mobile-first, so Small applies to all screen sizes unless overridden.

    -
  2. -
  3. -

    Visibility Control: Use HIDDEN to hide elements at specific breakpoints, which is great for responsive navigation.

    -
  4. -
  5. -

    Layout Switching: Change between BLOCK, FLEX, and GRID to create completely different layouts at different screen sizes.

    -
  6. -
  7. -

    Performance: Elements with display: none are not rendered, which can improve performance on mobile devices.

    -
  8. -
  9. -

    Progressive Enhancement: Start with a simple mobile layout and enhance for larger screens.

    -
  10. -
  11. -

    Testing: Always test responsive behavior by resizing your browser or using developer tools to simulate different devices.

    -
  12. -
-
-
-

The Display breakpoint system provides powerful control over element visibility and layout behavior across different screen sizes, enabling you to create truly responsive interfaces without custom CSS.

-
-
-
-
-
-
-

Flex Direction

-
-
-

LumoUtility.FlexDirection defines the direction of items in a flex container. -This is extremely useful for switching from a column layout on mobile to a row layout on desktop.

-
-
-

LumoUtility.FlexDirection.Breakpoint allows you to apply different flex-direction values at different screen sizes (responsive design). -This is particularly useful for changing layout orientation based on screen size, such as switching from horizontal to vertical layouts.

-
-
-

Basic Breakpoint Usage

-
-
-
-
-
// Instantiate a container component
-Div container = new Div();
-
-// Apply different flex-direction values at different breakpoints
-container.addClassNames(
-    LumoUtility.Display.FLEX,
-    // Stack vertically on small screens
-    LumoUtility.FlexDirection.Breakpoint.Small.COLUMN,
-    // Arrange horizontally on medium screens
-    LumoUtility.FlexDirection.Breakpoint.Medium.ROW
-);
-
-
-
-
-
-

The available classes within Small, Medium, Large, XLarge, and XXLarge breakpoints are:

-
-
-
    -
  • -

    COLUMN (e.g., sm:flex-col, md:flex-col) equivalent in CSS to flex-direction: column

    -
  • -
  • -

    ROW (e.g., sm:flex-row, md:flex-row) equivalent in CSS to flex-direction: row

    -
  • -
-
-
-
-

Complete Responsive Example

-
-
-
-
-
import com.vaadin.flow.component.html.Div;
-import com.vaadin.flow.component.html.H3;
-import com.vaadin.flow.component.html.Span;
-import com.vaadin.flow.theme.lumo.LumoUtility;
-
-public class ResponsiveFlexDirectionExample extends Div {
-
-    public ResponsiveFlexDirectionExample() {
-        H3 title = new H3("Responsive Flex Direction Example");
-
-        // Container that changes flex direction based on screen size
-        Div flexContainer = new Div();
-        flexContainer.addClassNames(
-            // Basic flex setup
-            LumoUtility.Display.FLEX,
-            LumoUtility.Gap.MEDIUM,
-            LumoUtility.Padding.LARGE,
-            LumoUtility.BorderRadius.MEDIUM,
-            LumoUtility.Background.CONTRAST_5,
-
-            // Responsive flex-direction
-
-            // Stack on mobile
-            LumoUtility.FlexDirection.COLUMN,
-            // Horizontal on tablet
-            LumoUtility.FlexDirection.Breakpoint.Medium.ROW,
-
-            // Responsive alignment (works with flex-direction changes)
-            LumoUtility.AlignItems.CENTER,
-            LumoUtility.AlignItems.Breakpoint.Large.START
-        );
-
-        // Add content with indicators
-        flexContainer.add(
-            createFlexItem("First", "1", LumoUtility.Background.SUCCESS_10),
-            createFlexItem("Second", "2", LumoUtility.Background.PRIMARY_10),
-            createFlexItem("Third", "3", LumoUtility.Background.ERROR_10)
-        );
-
-        add(title, flexContainer);
-    }
-
-    private Div createFlexItem(String text, String number, String bgColor) {
-        Div item = new Div();
-        item.addClassNames(
-            bgColor,
-            LumoUtility.Padding.MEDIUM,
-            LumoUtility.BorderRadius.SMALL,
-            LumoUtility.Display.FLEX,
-            LumoUtility.AlignItems.CENTER,
-            LumoUtility.JustifyContent.CENTER,
-            LumoUtility.FlexDirection.COLUMN,
-            LumoUtility.Gap.SMALL
-        );
-
-        Span label = new Span(text);
-        label.addClassName(LumoUtility.FontWeight.BOLD);
-
-        Span numberSpan = new Span("#" + number);
-        numberSpan.addClassName(LumoUtility.FontSize.SMALL);
-
-        item.add(label, numberSpan);
-        return item;
-    }
-}
-
-
-
-
-
-
-FlexDirection Responsive Breakpoints -
-
Figure 7. Example of FlexDirection Column Breakpoints
-
-
-
-FlexDirection Responsive Breakpoints -
-
Figure 8. Example of FlexDirection Row Responsive
-
-
-

Key Points

-
-
    -
  1. -

    Mobile First: FlexDirection breakpoints work mobile-first, so Small.COLUMN applies to all screen sizes unless overridden by larger breakpoints.

    -
  2. -
  3. -

    Layout Transformation: Easily switch between vertical stacking (mobile) and horizontal layouts (desktop) for better space utilization.

    -
  4. -
  5. -

    Combined with Other Flex Properties: FlexDirection changes work well with responsive AlignItems, JustifyContent, and Gap utilities.

    -
  6. -
  7. -

    Form Optimization: Perfect for forms that need to stack on mobile but can be side-by-side on desktop.

    -
  8. -
  9. -

    Navigation Patterns: Essential for responsive navigation that collapses to vertical on mobile devices.

    -
  10. -
  11. -

    Testing: Always test the flow and visual hierarchy when direction changes across breakpoints.

    -
  12. -
-
-
-

The FlexDirection breakpoint system provides powerful control over layout flow and element arrangement, making it easy to create responsive designs that adapt naturally to different screen sizes.

-
-
-
-
-
-
-

Font Size

-
-
-

LumoUtility.FontSize adjusts the font size of text based on the screen size to improve readability and visual hierarchy.

-
-
-

LumoUtility.FontSize.Breakpoint allows you to apply different font-size values at different screen sizes (responsive design). -This is particularly useful for creating typography that scales appropriately across devices, ensuring optimal readability on all screen sizes.

-
-
-

Basic Breakpoint Usage

-
-
-
-
-
// Instantiate a container component
-Div container = new Div();
-
-// Apply different align-items at different breakpoints
-container.addClassNames(
-        // Large font on small screens
-        LumoUtility.FontSize.LARGE,
-        // Extra large on medium screens
-        LumoUtility.FontSize.Breakpoint.Medium.XLARGE,
-        // Extra extra large on large screens
-        LumoUtility.FontSize.Breakpoint.Large.XXLARGE
-);
-
-
-
-
-
-

The available classes within Small, Medium, Large, XLarge, and XXLarge breakpoints are:

-
- - ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Table 2. Available Responsive Font Sizes
Java ConstantDescriptionCSS class name prefixesEquivalent in CSS

XXSMALL

Extra extra small text

-

text-2xs

-

font-size: 0.75rem

XSMALL

Extra small text

-

text-xs

-

font-size: 0.8125rem

SMALL

Small text

-

text-s

-

font-size: 0.875rem

MEDIUM

Medium/normal text

-

text-m

-

font-size: 1rem

LARGE

Large text

-

text-l

-

font-size: 1.125rem

XLARGE

Extra large text

-

text-xl

-

font-size: 1.375rem

XXLARGE

Extra extra large text

-

text-2xl

-

font-size: 1.75rem

XXXLARGE

Extra extra extra large text

-

text-3xl

-

font-size: 2.5rem

-
-
-

Complete Responsive Typography Example

-
-
-
-
-
import com.vaadin.flow.component.html.H1;
-import com.vaadin.flow.component.html.H2;
-import com.vaadin.flow.component.html.Span;
-import com.vaadin.flow.theme.lumo.LumoUtility;
-
-public class ResponsiveTypographyExample extends Div {
-
-    public ResponsiveTypographyExample() {
-        // Main heading with significant size changes
-        H1 mainHeading = new H1("Welcome to Our Platform");
-        mainHeading.addClassNames(
-                // Responsive font sizes
-
-                // Large on mobile
-                LumoUtility.FontSize.LARGE,
-                // XXLarge on tablet
-                LumoUtility.FontSize.Breakpoint.Medium.XXLARGE,
-                // XXXLarge on desktop
-                LumoUtility.FontSize.Breakpoint.Large.XXXLARGE,
-
-                // Additional styling
-                LumoUtility.FontWeight.BOLD,
-                LumoUtility.TextColor.PRIMARY,
-                LumoUtility.Margin.NONE,
-                LumoUtility.Padding.MEDIUM
-        );
-
-        // Subtitle with moderate scaling
-        H2 subtitle = new H2("Discover amazing features and services");
-        subtitle.addClassNames(
-                // Medium on mobile
-                LumoUtility.FontSize.MEDIUM,
-                // Large on tablet
-                LumoUtility.FontSize.Breakpoint.Medium.LARGE,
-                // XL on desktop
-                LumoUtility.FontSize.Breakpoint.Large.XLARGE,
-
-                LumoUtility.TextColor.SECONDARY,
-                LumoUtility.FontWeight.NORMAL,
-                LumoUtility.Margin.SMALL
-        );
-
-        // Body text with subtle scaling
-        Span bodyText = new Span(
-                "Our platform offers cutting-edge solutions for modern businesses. " +
-                "Experience seamless integration, powerful analytics, and intuitive design " +
-                "that adapts to your needs across all devices."
-        );
-        bodyText.addClassNames(
-                // Small on mobile
-                LumoUtility.FontSize.SMALL,
-                // Medium on tablet+
-                LumoUtility.FontSize.Breakpoint.Medium.MEDIUM,
-                // Large on desktop
-                LumoUtility.FontSize.Breakpoint.Large.LARGE,
-
-                LumoUtility.TextColor.BODY,
-                LumoUtility.LineHeight.MEDIUM,
-                LumoUtility.Padding.MEDIUM
-        );
-
-        add(mainHeading, subtitle, bodyText);
-    }
-}
-
-
-
-
-
-
-FontSize Responsive Breakpoints -
-
Figure 9. Example of FontSize Responsive Viewport >= Breakpoint.Large
-
-
-
-FontSize Responsive Breakpoints -
-
Figure 10. Example of FontSize Responsive Viewport >= Breakpoint.Medium
-
-
-
-FontSize Responsive Breakpoints -
-
Figure 11. Example of FontSize Responsive Viewport >= Breakpoint.Small
-
-
-

Key Points

-
-
    -
  1. -

    Reading Comfort: Font sizes should be comfortable to read at typical viewing distances for each device type.

    -
  2. -
  3. -

    Visual Hierarchy: Maintain proper typographic hierarchy across breakpoints - headlines should always be larger than body text.

    -
  4. -
  5. -

    Content Density: Mobile screens benefit from slightly smaller body text to fit more content, while desktop can use larger text for better readability.

    -
  6. -
  7. -

    Progressive Enhancement: Start with readable mobile sizes and enhance for larger screens rather than scaling down.

    -
  8. -
  9. -

    Performance Impact: Font size changes are lightweight and don’t significantly impact performance.

    -
  10. -
  11. -

    Accessibility: Ensure minimum font sizes meet accessibility guidelines (typically 14px+ for body text).

    -
  12. -
  13. -

    Brand Consistency: Maintain your brand’s typographic personality while adapting sizes for different contexts.

    -
  14. -
-
-
-

The FontSize breakpoint system enables you to create typography that feels native to each device while maintaining consistent information hierarchy and readability across all screen sizes.

-
-
-
-
-
-
-

Grid

-
-
-

LumoUtility.Grid defines the number of columns and rows in a grid container. -This is perfect for creating responsive card layouts that adapt to the available space.

-
-
-

LumoUtility.Grid.Breakpoint allows you to apply different CSS Grid properties at different screen sizes (responsive design). -This includes columns configurations that adapt to create optimal layouts across devices.

-
-
-

Basic Breakpoint Usage

-
-
-
-
-
// Instantiate a container component
-Div container = new Div();
-
-// Apply different align-items at different breakpoints
-container.addClassNames(
-            LumoUtility.Display.GRID,
-            // 1 column on small screens
-            LumoUtility.Grid.Column.COLUMNS_1,
-            // 2 columns on medium screens
-            LumoUtility.Grid.Breakpoint.Medium.COLUMNS_2,
-            // 3 columns on large screens
-            LumoUtility.Grid.Breakpoint.Large.COLUMNS_3,
-            // 4 columns on extra large screens
-            LumoUtility.Grid.Breakpoint.XLarge.COLUMNS_4
-);
-
-
-
-
-
-

The available classes within Small, Medium, Large, XLarge, and XXLarge breakpoints are:

-
-
-
    -
  • -

    COLUMNS_1 through COLUMNS_12 - Grid with 1 to 12 columns (e.g., sm:grid-cols-1, md:grid-cols-12) equivalent in CSS to grid-template-columns: repeat(1, minmax(0, 1fr)) through grid-template-columns: repeat(12, minmax(0, 1fr))

    -
  • -
-
-
-
-

Complete Responsive Grid Example with Columns and Rows

-
-
-
-
-
import com.vaadin.flow.component.html.Div;
-import com.vaadin.flow.component.html.H3;
-import com.vaadin.flow.component.html.Span;
-import com.vaadin.flow.theme.lumo.LumoUtility;
-
-public class ResponsiveGridColumnsRowsExample extends Div {
-
-    public ResponsiveGridColumnsRowsExample() {
-        H3 title = new H3("Responsive Grid with Columns and Rows");
-
-        // Grid container with responsive columns and rows
-        Div gridContainer = new Div();
-        gridContainer.addClassNames(
-            LumoUtility.Display.GRID,
-            LumoUtility.Gap.MEDIUM,
-            LumoUtility.Padding.LARGE,
-            LumoUtility.Background.CONTRAST_5,
-            LumoUtility.BorderRadius.LARGE,
-
-            // Responsive grid columns
-
-            // 1 column on mobile
-            LumoUtility.Grid.Column.COLUMNS_1,
-            // 2 columns on tablet
-            LumoUtility.Grid.Breakpoint.Medium.COLUMNS_2,
-            // 3 columns on desktop
-            LumoUtility.Grid.Breakpoint.Large.COLUMNS_3,
-            // 4 columns on large desktop
-            LumoUtility.Grid.Breakpoint.XLarge.COLUMNS_4,
-            // 6 columns on extra large
-            LumoUtility.Grid.Breakpoint.XXLarge.COLUMNS_6
-        );
-
-        // Create grid items with different spans
-        for (int i = 1; i <= 12; i++) {
-            Div gridItem = createGridItem("Item " + i, i);
-
-            gridContainer.add(gridItem);
-        }
-
-        add(title, gridContainer);
-    }
-
-    private Div createGridItem(String title, int index) {
-        Div item = new Div();
-
-        // Different background colors for visual distinction
-        String bgColor = switch (index % 4) {
-            case 1 -> LumoUtility.Background.SUCCESS_10;
-            case 2 -> LumoUtility.Background.PRIMARY_10;
-            case 3 -> LumoUtility.Background.ERROR_10;
-            default -> LumoUtility.Background.CONTRAST_10;
-        };
-
-        item.addClassNames(
-            bgColor,
-            LumoUtility.BorderRadius.MEDIUM,
-            LumoUtility.Padding.LARGE,
-            LumoUtility.Display.FLEX,
-            LumoUtility.AlignItems.CENTER,
-            LumoUtility.JustifyContent.CENTER,
-            LumoUtility.Height.LARGE
-        );
-
-        item.add(new Span(title));
-        return item;
-    }
-}
-
-
-
-
-
-
-Grid Responsive Breakpoints -
-
Figure 12. Example of Grid Responsive Viewport >= Breakpoint.XLarge
-
-
-
-Grid Responsive Breakpoints -
-
Figure 13. Example of Grid Responsive Viewport >= Breakpoint.Medium
-
-
-
-Grid Responsive Breakpoints -
-
Figure 14. Example of Grid Responsive Viewport >= Breakpoint.Small
-
-
-

Key Points

-
-
    -
  1. -

    Mobile First Approach: Start with single column layouts and expand for larger screens using Small.COLUMNS_1Large.COLUMNS_4.

    -
  2. -
  3. -

    Column Spans: Use COLUMN_SPAN_* to create featured content that stands out across multiple grid cells.

    -
  4. -
  5. -

    Content Hierarchy: Larger spans naturally create visual hierarchy - use them for important content like hero sections or featured products.

    -
  6. -
  7. -

    Auto-Placement: Grid automatically places items in available cells, making it easy to add/remove content without breaking the layout.

    -
  8. -
  9. -

    Performance: CSS Grid with breakpoints provides excellent performance compared to JavaScript-based responsive solutions.

    -
  10. -
-
-
-

The Grid breakpoint system with columns provides fine-grained control over responsive layouts, enabling complex magazine-style designs that adapt beautifully across all device sizes while maintaining visual hierarchy and content flow.

-
-
-
-
-
-
-

Position

-
-
-

LumoUtility.Position controls the property of an element at different breakpoints, enabling advanced layouts like fixed sidebars on desktop that are part of the normal flow on mobile.

-
-
-

LumoUtility.Position.Breakpoint allows you to apply different CSS positioning properties at different screen sizes (responsive design). -This includes positioning types, directional offsets, and negative positioning that adapt to create optimal layouts and overlays across devices.

-
-
-

Basic Breakpoint Usage

-
-
-
-
-
// Instantiate a container component
-Div container = new Div();
-
-// Apply different align-items at different breakpoints
-container.addClassNames(
-        // Relative positioning on small screens
-        LumoUtility.Position.RELATIVE,
-        // Absolute positioning on medium screens
-        LumoUtility.Position.Breakpoint.Medium.ABSOLUTE,
-        // Fixed positioning on large screens
-        LumoUtility.Position.Breakpoint.Large.FIXED
-);
-
-
-
-
-
-

The available classes within Small, Medium, Large, XLarge, and XXLarge breakpoints are:

-
-
-
    -
  • -

    ABSOLUTE - Absolutely positioned (e.g., sm:absolute, md:absolute) equivalent in CSS to position: absolute

    -
  • -
  • -

    FIXED - Fixed positioned (e.g., sm:fixed, md:fixed) equivalent in CSS to position: fixed

    -
  • -
  • -

    RELATIVE - Relatively positioned (e.g., sm:relative, md:relative) equivalent in CSS to position: relative

    -
  • -
  • -

    STATIC - Static positioned (e.g., sm:static, md:static) equivalent in CSS to position: static

    -
  • -
  • -

    STICKY - Sticky positioned (e.g., sm:sticky, md:sticky) equivalent in CSS to position: sticky

    -
  • -
-
-
-
-

Complete Responsive Position Example

-
-
-
-
-
import com.vaadin.flow.component.button.Button;
-import com.vaadin.flow.component.html.Div;
-import com.vaadin.flow.component.html.H3;
-import com.vaadin.flow.component.html.Span;
-import com.vaadin.flow.theme.lumo.LumoUtility;
-import com.vaadin.flow.component.icon.VaadinIcon;
-
-public class ResponsivePositionExample extends Div {
-
-    public ResponsivePositionExample() {
-        H3 title = new H3("Responsive Position Example");
-
-        // Container with relative positioning
-        Div container = new Div();
-        container.addClassNames(
-                LumoUtility.Position.RELATIVE,
-                LumoUtility.Background.CONTRAST_5,
-                LumoUtility.Height.XLARGE,
-                LumoUtility.Width.FULL,
-                LumoUtility.BorderRadius.LARGE,
-                LumoUtility.Margin.LARGE
-        );
-
-        // Main content
-        Div mainContent = new Div("Main Content Area");
-        mainContent.addClassNames(
-                LumoUtility.Background.BASE,
-                LumoUtility.Padding.LARGE,
-                LumoUtility.BorderRadius.MEDIUM,
-                LumoUtility.Height.LARGE,
-                LumoUtility.Display.FLEX,
-                LumoUtility.AlignItems.CENTER,
-                LumoUtility.JustifyContent.CENTER
-        );
-
-        // Floating action button - responsive positioning
-        Button fab = new Button(VaadinIcon.ENVELOPE_O.create());
-        fab.addClassNames(
-                // Position types change with screen size
-
-                // On mobile, keep it in the normal document flow to avoid overlap issues
-                LumoUtility.Position.RELATIVE,
-                // On tablets and up, float it over the content
-                LumoUtility.Position.Breakpoint.Medium.ABSOLUTE,
-
-                // --- Position offsets (only apply when position is absolute/fixed) ---
-                LumoUtility.Position.Bottom.MEDIUM,
-                LumoUtility.Position.End.MEDIUM,
-
-                // Styling
-                LumoUtility.Background.PRIMARY,
-                LumoUtility.TextColor.PRIMARY_CONTRAST,
-                LumoUtility.BorderRadius.FULL,
-                LumoUtility.Width.LARGE,
-                LumoUtility.Height.LARGE,
-                LumoUtility.BoxShadow.LARGE
-        );
-
-        // Notification banner - responsive positioning
-        Div notification = new Div(VaadinIcon.BELL_O.create(), new Span("New updates available!"));
-        notification.addClassNames(
-                // Changes from static to sticky to fixed
-
-                // On mobile, it's just a static block at the top
-                LumoUtility.Position.STATIC,
-                // On tablets, it sticks to the top when you scroll
-                LumoUtility.Position.Breakpoint.Medium.STICKY,
-                // On desktops, it's always fixed to the top of the viewport
-                LumoUtility.Position.Breakpoint.Large.FIXED,
-
-                // Position when fixed/sticky
-
-                // Top of viewport
-                LumoUtility.Position.Top.NONE,
-                // Left edge
-                LumoUtility.Position.Start.NONE,
-
-                // Styling
-                LumoUtility.Background.SUCCESS,
-                LumoUtility.TextColor.SUCCESS_CONTRAST,
-                LumoUtility.Padding.MEDIUM,
-                LumoUtility.Width.FULL,
-                LumoUtility.TextAlignment.CENTER,
-                LumoUtility.BoxShadow.MEDIUM
-        );
-
-        container.add(mainContent, fab);
-        add(title, notification, container);
-    }
-}
-
-
-
-
-
-
-Position Responsive Breakpoints -
-
Figure 15. Example of Position Responsive Viewport >= Breakpoint.Large
-
-
-
-Position Responsive Breakpoints -
-
Figure 16. Example of Position Responsive Viewport >= Breakpoint.Medium
-
-
-
-Position Responsive Breakpoints -
-
Figure 17. Example of Position Responsive Viewport >= Breakpoint.Small
-
-
-

Key Points

-
-
    -
  1. -

    Position Type Changes: Elements can change from RELATIVE on mobile to ABSOLUTE or FIXED on desktop, enabling different interaction patterns.

    -
  2. -
  3. -

    Layout Strategy: Mobile-first approach often uses normal document flow (RELATIVE, STATIC) and adds positioned overlays on larger screens.

    -
  4. -
  5. -

    Z-Index Management: When using positioned elements, consider z-index stacking context for proper layering.

    -
  6. -
  7. -

    Performance: Positioned elements, especially FIXED, can impact scroll performance on mobile devices.

    -
  8. -
  9. -

    Accessibility: Ensure positioned elements don’t obstruct important content and remain accessible via keyboard navigation.

    -
  10. -
  11. -

    Responsive Context: Position changes work best when the parent container’s positioning context is considered across breakpoints.

    -
  12. -
-
-
-

The Position breakpoint system enables sophisticated responsive layouts with floating elements, overlays, and adaptive positioning strategies that enhance user experience across all device sizes while maintaining proper document flow and accessibility.

-
-
-
-
-
-
-

Conclusion

-
-
-

Lumo’s responsive breakpoint utilities offer a structured and consistent way to adapt layouts and styles across different device sizes directly from Java code. -By leveraging the six supported groups — Align Items, Display, Flex Direction, Font Size, Grid, and Position — developers can create responsive, mobile-first designs without writing custom media queries.

-
-
-

Keep in mind the following best practices:

-
-
-
    -
  • -

    Start with a mobile-first approach and progressively enhance for larger screens.

    -
  • -
  • -

    Combine utilities carefully to maintain readability and consistent layout behavior.

    -
  • -
  • -

    Test across devices and use browser developer tools to validate responsiveness.

    -
  • -
  • -

    For utilities not yet covered by breakpoints (such as spacing, gap, or justify content), extend your theme with custom CSS media queries.

    -
  • -
-
-
-

For a complete overview of all available utility classes, refer to the main Lumo Utility Classes documentation.

-
-
-
-
- - - - \ No newline at end of file From 0c50c09c9e474ca45a376b0d4e0af23ca2668bc4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fred=20Pe=C3=B1a?= Date: Thu, 28 Aug 2025 08:32:49 -0400 Subject: [PATCH 10/10] Apply suggestion from @jouni Co-authored-by: Jouni Koivuviita --- articles/styling/lumo/lumo-breakpoint.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/articles/styling/lumo/lumo-breakpoint.adoc b/articles/styling/lumo/lumo-breakpoint.adoc index f78cedba6c..c321d9c9ef 100644 --- a/articles/styling/lumo/lumo-breakpoint.adoc +++ b/articles/styling/lumo/lumo-breakpoint.adoc @@ -1,5 +1,5 @@ --- -title: Lumo Utility Classes - Responsive Breakpoints +title: Responsive Utility Classes page-title: How to use Lumo's responsive utility classes description: Applying styles based on screen size using Lumo's responsive breakpoint utility classes in Vaadin. meta-description: Learn how to create responsive layouts in Vaadin Flow by applying Lumo's breakpoint-based utility classes for properties like display, flex-direction, grid, and more.