{"id":42814,"date":"2019-05-09T14:20:01","date_gmt":"2019-05-09T14:20:01","guid":{"rendered":"https:\/\/owncloud.com\/?p=42814"},"modified":"2023-01-16T15:30:02","modified_gmt":"2023-01-16T15:30:02","slug":"the-owncloud-design-system-phoenix-makes-frontend-development-easy","status":"publish","type":"post","link":"https:\/\/owncloud.com\/de\/blogs\/the-owncloud-design-system-phoenix-makes-frontend-development-easy\/","title":{"rendered":"The ownCloud Design System \u2013 Phoenix Makes Frontend Development Easy"},"content":{"rendered":"<div class=\"headline-wrap\">\n<h1>The ownCloud Design System \u2013 Phoenix Makes Frontend Development Easy<\/h1>\n<div class=\"excerpt bold\">\n<p>Whether you want to write an app or a theme for ownCloud, the ownCloud Design System for the new Phoenix frontend is a great toolbox. How can you get started? An overview:<\/p>\n<\/div>\n<\/div>\n<div class=\"content\">\n<p>To make the development process more transparent, there is an update on the\u00a0<a href=\"https:\/\/owncloud.org\/news\/owncloud-phoenix-rebirth-of-the-owncloud-user-interface\/\" target=\"_blank\" rel=\"noopener\">new Phoenix frontend<\/a>. We already told you how to\u00a0<a href=\"https:\/\/owncloud.org\/news\/write-owncloud-app-new-owncloud-vue-js-frontend-phoenix\/\" target=\"_blank\" rel=\"noopener\">write an app<\/a>\u00a0of your own for Phoenix \u2013 this time it\u2019s about the ownCloud Design System, the new framework for giving Phoenix a nice look and feel.<\/p>\n<p>You can use it for making both apps and themes; you just need to touch different parts of the ownCloud Design System. This article will give you an overview, so you know where to start.<\/p>\n<p>&nbsp;<\/p>\n<div id=\"attachment_17266\" class=\"wp-caption alignnone\" style=\"width: 551px;\"><a class=\"fancybox image\" href=\"https:\/\/owncloud.org\/wp-content\/uploads\/2019\/05\/ownCloud-design-system-phoenix-preview-2.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-17266\" src=\"https:\/\/owncloud.org\/wp-content\/uploads\/2019\/05\/ownCloud-design-system-phoenix-preview-2.png\" sizes=\"(max-width: 1905px) 100vw, 1905px\" srcset=\"https:\/\/owncloud.org\/wp-content\/uploads\/2019\/05\/ownCloud-design-system-phoenix-preview-2.png 1905w, https:\/\/owncloud.org\/wp-content\/uploads\/2019\/05\/ownCloud-design-system-phoenix-preview-2-300x147.png 300w, https:\/\/owncloud.org\/wp-content\/uploads\/2019\/05\/ownCloud-design-system-phoenix-preview-2-768x376.png 768w, https:\/\/owncloud.org\/wp-content\/uploads\/2019\/05\/ownCloud-design-system-phoenix-preview-2-1024x502.png 1024w, https:\/\/owncloud.org\/wp-content\/uploads\/2019\/05\/ownCloud-design-system-phoenix-preview-2-1800x882.png 1800w, https:\/\/owncloud.org\/wp-content\/uploads\/2019\/05\/ownCloud-design-system-phoenix-preview-2-1320x646.png 1320w\" alt=\"A preview of the new Phoenix UI\" width=\"551\" height=\"270\" aria-describedby=\"caption-attachment-17266\" \/><\/a><\/p>\n<p id=\"caption-attachment-17266\" class=\"wp-caption-text\"><em>The current state of Phoenix \u2013 there are already many components to create pages and apps.<\/em><\/p>\n<\/div>\n<p>&nbsp;<\/p>\n<p>Phoenix is still work in progress. But you can use\u00a0<a href=\"https:\/\/vuejs.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">vueJS<\/a>\u00a0to display components, which are based on\u00a0<a href=\"https:\/\/getuikit.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">UIkit<\/a>. The ownCloud Design System already defines several useful components. Let\u2019s take a look at them:<\/p>\n<h2>The Interactive ownCloud Design System Documentation<\/h2>\n<p>One great thing about the ownCloud Design System is that the documentation is interactive. It explains how it works and shows how to use the components in your app. At the same time you can preview the components and their design.<\/p>\n<p>&nbsp;<\/p>\n<div id=\"attachment_17254\" class=\"wp-caption alignnone\" style=\"width: 551px;\"><a class=\"fancybox image\" href=\"https:\/\/owncloud.org\/wp-content\/uploads\/2019\/05\/ownCloud-design-system-phoenix-documentation.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-17254\" src=\"https:\/\/owncloud.org\/wp-content\/uploads\/2019\/05\/ownCloud-design-system-phoenix-documentation.png\" sizes=\"(max-width: 1143px) 100vw, 1143px\" srcset=\"https:\/\/owncloud.org\/wp-content\/uploads\/2019\/05\/ownCloud-design-system-phoenix-documentation.png 1143w, https:\/\/owncloud.org\/wp-content\/uploads\/2019\/05\/ownCloud-design-system-phoenix-documentation-300x156.png 300w, https:\/\/owncloud.org\/wp-content\/uploads\/2019\/05\/ownCloud-design-system-phoenix-documentation-768x398.png 768w, https:\/\/owncloud.org\/wp-content\/uploads\/2019\/05\/ownCloud-design-system-phoenix-documentation-1024x531.png 1024w\" alt=\"A dialog which can be edited through code in the web interface.\" width=\"551\" height=\"286\" aria-describedby=\"caption-attachment-17254\" \/><\/a><\/p>\n<p id=\"caption-attachment-17254\" class=\"wp-caption-text\"><em>What it says: you can directly edit the components in the documentation and preview the changes.<\/em><\/p>\n<\/div>\n<p>&nbsp;<\/p>\n<p>Best take a look at it yourself. You can preview the elements here:\u00a0<a href=\"https:\/\/owncloud.github.io\/owncloud-design-system\/#\/Elements\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/owncloud.github.io\/owncloud-design-system\/#\/Elements<\/a><\/p>\n<p>Note that this is still work in progress; as of the time of this writing, some of the texts are still missing. On the other hand, it updates itself automatically when new components are added to the ownCloud Design System.<\/p>\n<h2>UIkit Components \u2013 the Atomic Design Approach<\/h2>\n<p>With Phoenix, all the components of the web interface can be dynamically ordered. You can easily decide what you want to have where, by placing the components where they belong in your vueJS code.<\/p>\n<p>These components are based on UIkit components. They follow the principles of\u00a0<a href=\"http:\/\/atomicdesign.bradfrost.com\/chapter-2\/\" target=\"_blank\" rel=\"noopener noreferrer\">atomic design<\/a>\u00a0for frontend development, so we have elements, patterns, templates, and pages. To start with the smallest unit, elements:<\/p>\n<h3>Elements \u2013 the Atoms of Phoenix<\/h3>\n<p>Elements are basic items which can be used in many ways; think of them as the atoms of the web interface. Menu items, file icons, search bars, warning messages, confirmation buttons, and all the other stuff a webpage needs \u2013 they are elements.<\/p>\n<p>&nbsp;<\/p>\n<div id=\"attachment_17252\" class=\"wp-caption alignnone\" style=\"width: 551px;\"><a class=\"fancybox image\" href=\"https:\/\/owncloud.org\/wp-content\/uploads\/2019\/05\/ownCloud-design-system-phoenix-elements-buttons.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-17252\" src=\"https:\/\/owncloud.org\/wp-content\/uploads\/2019\/05\/ownCloud-design-system-phoenix-elements-buttons.png\" sizes=\"(max-width: 1001px) 100vw, 1001px\" srcset=\"https:\/\/owncloud.org\/wp-content\/uploads\/2019\/05\/ownCloud-design-system-phoenix-elements-buttons.png 1001w, https:\/\/owncloud.org\/wp-content\/uploads\/2019\/05\/ownCloud-design-system-phoenix-elements-buttons-300x256.png 300w, https:\/\/owncloud.org\/wp-content\/uploads\/2019\/05\/ownCloud-design-system-phoenix-elements-buttons-768x655.png 768w\" alt=\"Some example buttons.\" width=\"551\" height=\"470\" aria-describedby=\"caption-attachment-17252\" \/><\/a><\/p>\n<p id=\"caption-attachment-17252\" class=\"wp-caption-text\"><em>You can find elements in the documentation, e.g. these buttons.<\/em><\/p>\n<\/div>\n<p>&nbsp;<\/p>\n<p>You can implement them easily wherever you need them. They will automatically follow the general look of the page. To get an overview what you can use them for, just take a look at the\u00a0<a href=\"https:\/\/owncloud.github.io\/owncloud-design-system\/#\/Elements\" target=\"_blank\" rel=\"noopener noreferrer\">Pages<\/a>.<\/p>\n<p>If you need to get into the details, you might need the elements. But most of the time, you will not need that level of detail. Instead, the patterns might be all you wish for:<\/p>\n<h3>Patterns \u2013 Molecular Components<\/h3>\n<p>Patterns are groups of elements; like in molecules, in patterns you have all the necessary elements already ordered in a useful way. An example is the top bar, the side menu, and other screens which belong to the default furniture of any webpage<\/p>\n<p>&nbsp;<\/p>\n<div id=\"attachment_17257\" class=\"wp-caption alignnone\" style=\"width: 549px;\"><a class=\"fancybox image\" href=\"https:\/\/owncloud.org\/wp-content\/uploads\/2019\/05\/ownCloud-design-system-nav-bar-pattern-phoenix.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-17257\" src=\"https:\/\/owncloud.org\/wp-content\/uploads\/2019\/05\/ownCloud-design-system-nav-bar-pattern-phoenix.png\" sizes=\"(max-width: 1582px) 100vw, 1582px\" srcset=\"https:\/\/owncloud.org\/wp-content\/uploads\/2019\/05\/ownCloud-design-system-nav-bar-pattern-phoenix.png 1582w, https:\/\/owncloud.org\/wp-content\/uploads\/2019\/05\/ownCloud-design-system-nav-bar-pattern-phoenix-300x104.png 300w, https:\/\/owncloud.org\/wp-content\/uploads\/2019\/05\/ownCloud-design-system-nav-bar-pattern-phoenix-768x267.png 768w, https:\/\/owncloud.org\/wp-content\/uploads\/2019\/05\/ownCloud-design-system-nav-bar-pattern-phoenix-1024x356.png 1024w, https:\/\/owncloud.org\/wp-content\/uploads\/2019\/05\/ownCloud-design-system-nav-bar-pattern-phoenix-1320x459.png 1320w\" alt=\"The ownCloud navigation bar, next to the code which created it.\" width=\"549\" height=\"191\" aria-describedby=\"caption-attachment-17257\" \/><\/a><\/p>\n<p id=\"caption-attachment-17257\" class=\"wp-caption-text\"><em>An example for a pattern is the navigation bar \u2013 pretty sure you will need it.<\/em><\/p>\n<\/div>\n<p>&nbsp;<\/p>\n<p>This way you don\u2019t have to implement each single element on its own \u2013 you can reuse groups of elements. Because of this, many parts in Phoenix will look similar, and users can find their way even if they use an app they haven\u2019t used before.<\/p>\n<p>If something does not entirely fit your requirements, just tinker your own! You can take the\u00a0<a href=\"https:\/\/owncloud.github.io\/owncloud-design-system\/#\/Patterns\" target=\"_blank\" rel=\"noopener noreferrer\">example patterns<\/a>\u00a0as a model, and change them until it fits your need.<\/p>\n<h3>Templates \u2013 Organisms of Patterns<\/h3>\n<p>Templates define the layout and structure of a section. This is where you order the patterns you need to build a reusable page. The whole organism is defined here \u2013 should your page have arms and a head? Should it be able to walk, and does it need legs for it?<\/p>\n<p>With templates you can put the components of your app where you need them, and where the user will see them later.<\/p>\n<h3>Pages \u2013 so be it, Amen<\/h3>\n<p>When your templates are filled with content, you can see a page. This is where arms, legs, and head come together to form the beautiful\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Wolpertinger\" target=\"_blank\" rel=\"noopener noreferrer\">Wolpertinger<\/a>\u00a0you imagined. You should render a few pages to test whether your templates make the content actually look good.<\/p>\n<p>The documentation mentioned above is a good example of it \u2013 you can see the pages directly rendering the code. If you build it locally, you can change every aspect of it and see how different it looks.<\/p>\n<p>That\u2019s it! Those are all the tools you need to create the layout of your ownCloud app in Phoenix.<\/p>\n<h2>Design Tokens \u2013 my Kingdom for a Theme<\/h2>\n<p>So now you know everything for creating an app layout \u2013 but what about the looks? In Phoenix, themes take care of the design. This has the advantage that on one ownCloud instance, every app looks the same.<\/p>\n<p>Design tokens are where the theming happens \u2013 app developers won\u2019t need it, but if you write a Phoenix theme, this is where you change colors, fonts, and icons.<\/p>\n<p>&nbsp;<\/p>\n<div id=\"attachment_17258\" class=\"wp-caption alignnone\" style=\"width: 551px;\"><a class=\"fancybox image\" href=\"https:\/\/owncloud.org\/wp-content\/uploads\/2019\/05\/ownCloud-design-system-phoenix-color-palette-theme.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-17258\" src=\"https:\/\/owncloud.org\/wp-content\/uploads\/2019\/05\/ownCloud-design-system-phoenix-color-palette-theme.png\" sizes=\"(max-width: 1333px) 100vw, 1333px\" srcset=\"https:\/\/owncloud.org\/wp-content\/uploads\/2019\/05\/ownCloud-design-system-phoenix-color-palette-theme.png 1333w, https:\/\/owncloud.org\/wp-content\/uploads\/2019\/05\/ownCloud-design-system-phoenix-color-palette-theme-300x188.png 300w, https:\/\/owncloud.org\/wp-content\/uploads\/2019\/05\/ownCloud-design-system-phoenix-color-palette-theme-768x482.png 768w, https:\/\/owncloud.org\/wp-content\/uploads\/2019\/05\/ownCloud-design-system-phoenix-color-palette-theme-1024x643.png 1024w, https:\/\/owncloud.org\/wp-content\/uploads\/2019\/05\/ownCloud-design-system-phoenix-color-palette-theme-1320x829.png 1320w\" alt=\"The default color palette in Phoenix.\" width=\"551\" height=\"346\" aria-describedby=\"caption-attachment-17258\" \/><\/a><\/p>\n<p id=\"caption-attachment-17258\" class=\"wp-caption-text\"><em>You can choose from these colors for your components \u2013 or create a theme with your own favorite colors.<\/em><\/p>\n<\/div>\n<p>&nbsp;<\/p>\n<p>The design tokens are SCSS variables which define how components look like application-wide. When you want to choose one of them for your component, you can preview the look\u00a0<a href=\"https:\/\/owncloud.github.io\/owncloud-design-system\/#\/Design%20Tokens\" target=\"_blank\" rel=\"noopener noreferrer\">in the documentation<\/a>.<\/p>\n<p>They also include the icons. The ownCloud Design System provides an abundant\u00a0<a href=\"https:\/\/owncloud.github.io\/owncloud-design-system\/#\/Design%20Tokens\/Icon\" target=\"_blank\" rel=\"noopener noreferrer\">set of icons already<\/a>\u00a0\u2013 but if you want different icons, just ship your own and use them in the design token class.<\/p>\n<p>No need to make it more complicated \u2013 with themes, you can concentrate on designing instead of worrying about architecture.<\/p>\n<p>&nbsp;<\/p>\n<div id=\"attachment_17259\" class=\"wp-caption alignnone\" style=\"width: 478px;\"><a class=\"fancybox image\" href=\"https:\/\/owncloud.org\/wp-content\/uploads\/2019\/05\/ownCloud-design-system-phoenix-icons-theme.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-17259\" src=\"https:\/\/owncloud.org\/wp-content\/uploads\/2019\/05\/ownCloud-design-system-phoenix-icons-theme.png\" sizes=\"(max-width: 424px) 100vw, 424px\" srcset=\"https:\/\/owncloud.org\/wp-content\/uploads\/2019\/05\/ownCloud-design-system-phoenix-icons-theme.png 424w, https:\/\/owncloud.org\/wp-content\/uploads\/2019\/05\/ownCloud-design-system-phoenix-icons-theme-261x300.png 261w\" alt=\"A lot of icons, each one in 5 different colors.\" width=\"478\" height=\"550\" aria-describedby=\"caption-attachment-17259\" \/><\/a><\/p>\n<p id=\"caption-attachment-17259\" class=\"wp-caption-text\"><em>There are plenty of existing icons to choose from.<\/em><\/p>\n<\/div>\n<p>&nbsp;<\/p>\n<h2>Intrigued? Try it Out!<\/h2>\n<p>To start designing, you need an app of your own of course. Fortunately, getting started with Phoenix app development is really easy. This blogpost is a great start:<\/p>\n<p><a class=\"button-oc\" href=\"https:\/\/owncloud.org\/news\/write-owncloud-app-new-owncloud-vue-js-frontend-phoenix\/\" target=\"\" rel=\"noopener noreferrer\">Write an ownCloud app for the new Phoenix frontend!<\/a><\/p>\n<p>Did you like this blogpost? Do you have further questions? Leave something in the comments below or share this article on social media!<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Whether you want to write an app or a theme for ownCloud, the ownCloud Design System for the new Phoenix frontend is a great toolbox. How can you get started? An overview:<\/p>\n","protected":false},"author":7,"featured_media":42815,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_et_pb_use_builder":"","_et_pb_old_content":"","_et_gb_content_width":"","inline_featured_image":false,"footnotes":""},"categories":[603,43,55],"tags":[],"class_list":["post-42814","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-apps","category-blog","category-owncloud-product"],"acf":[],"_links":{"self":[{"href":"https:\/\/owncloud.com\/de\/wp-json\/wp\/v2\/posts\/42814","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/owncloud.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/owncloud.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/owncloud.com\/de\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/owncloud.com\/de\/wp-json\/wp\/v2\/comments?post=42814"}],"version-history":[{"count":1,"href":"https:\/\/owncloud.com\/de\/wp-json\/wp\/v2\/posts\/42814\/revisions"}],"predecessor-version":[{"id":68035,"href":"https:\/\/owncloud.com\/de\/wp-json\/wp\/v2\/posts\/42814\/revisions\/68035"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/owncloud.com\/de\/wp-json\/wp\/v2\/media\/42815"}],"wp:attachment":[{"href":"https:\/\/owncloud.com\/de\/wp-json\/wp\/v2\/media?parent=42814"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/owncloud.com\/de\/wp-json\/wp\/v2\/categories?post=42814"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/owncloud.com\/de\/wp-json\/wp\/v2\/tags?post=42814"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}