NetTalk WebServer Themes
    
    Introduction
    One of the most striking differences between developing
      programs for a desktop, and developing for the web is the way that screens
      (pages) are designed. Taking advantage of the benefits offered by CSS, in
      a web application, is a critical step forward in leveraging the benefits
      offered by the web platform.
      
      This document is an introduction to the way CSS is used in NetTalk web
      applications (and by extension in Web Services applications, and also
      mobile applications.) It is designed to be read by both the web
      application developer, and also the web application UI designer. Several
      of the topics in this document will be helpful to the person creating the
      CSS for the application.
    
    A Primer for Desktop Programmers
     The architecture of a typical desktop application is
      very screen-design focused. Procedures in the application have a screen,
      and code is added to the procedure to handle the user interacting with the
      screen, and for the screen to show information to the user. Each screen
      has to be crafted individually, and manually changed to meet the design
      standards and consistency of your application. Getting screen design
      exactly right in a desktop program is time-consuming, and getting each
      detail correct takes effort. Things like button spacing, button sizes,
      field locations and so on can easily differ from screen to screen creating
      a visual inconsistency. 
      
      By contrast, one of the first things that NetTalk programmers notice is
      the complete lack of a screen designer at the procedure level. Desktop
      programmers are so wedded to the screen designer that the concept of
      designing without a screen-designer can be very foreign. The most common
      request received (by new NetTalk programmers) is for a screen designer.
      Interestingly though, once the true power of the CSS layer has been
      exploited, this request disappears. 
      
      In order to understand why the visual aspects of the UI, and the
      procedures have been disconnected, it helps to understand where current
      desktop visual designers fall short, and also the additional problems that
      web applications have to cater for. In no particular order;
      
        - Programming on a visual designer hides information from the program.
          By manually placing each component on a desktop window, the only
          information available to the program is the control position and size.
          All information on why those values are what they are is lost. For
          example, your program may have the convention of setting each button
          to be a size of 50 x 14 where possible. A diligent designer keeps to
          this convention, but the program never knows this is the case - it's
          all in the programmers head. Insert, Change and Delete buttons are
          often horizontally aligned, right-aligned to the list box, and equally
          spaced. Again this is purely by convention and relies on the
          programmer to enforce this consistency.
 
- Because there are no rules, every element on every page has to be
          manually set, and if a convention is changed every control on every
          window has to be manually reset. 
 
- When the screen-size changes, because there are no rules, each
          screen element has to be replaced. Since it is desirable to support
          multiple monitor sizes Resizing templates exist to let you add rules
          to each screen element. Again, these rules have to be applied
          manually, on a field by field basis, and each screen has to be
          manually tested and maintained. Yes, it can be made to work, but it
          takes a lot of effort to set it up correctly, and to maintain these
          resizing rules.
 
- Given the work required to make each screen correct, developing for
          the desktop is slow. It can take several minutes, or tens of minutes,
          per screen to get everything perfect.
 
- A typical desktop app needs to support screen sizes which, while
          varied, are all large. Applications have a minimal acceptable screen
          size - and this is usually 1024 x 768 or larger. By contrast web
          applications have to work well on screens of any size - from 4 inches
          to 30 inches. 
      Changing the way a programmer works can be difficult. Decades of
      programming screen-first have lead to habits that are hard to break.
      However once broken, the benefits of CSS become apparent, and desktop
      programing seems slow and stifled by comparison. Some of these benefits
      are;
      
        - Global Design - instead of designing screens one at a time, you can
          design a Theme - and then this theme is reused on each
          browse, form, menu and so on. 
 
- The visual UI theme is designed outside the application - in a CSS
          file. This means the UI design can be separated from the program code,
          which in turn means that the design can be created, and improved, by
          another person. Also because the development of the program, from the
          UI, is separate, they can progress on different timelines.
 
- Because the design is global, and outside the application, you can
          reuse themes from one application to the next. 
 
- Themes created by one programmer can be shared with other
          programmers. NetTalk conveniently ships with a number of themes,
          allowing you scope to have a consistent and good-looking application
          without having to do any design at all.
 
- Because the programmer only has to worry about the procedure
          function, not the way it looks, programing is a LOT faster. Adding a
          browse or form to a web application is several times faster than doing
          the same to a desktop application.
      It is a reasonable assumption that if you are currently a desktop
      programmer, this will be one of the biggest changes to the way you
      approach programming. However with great change comes great benefit - and
      this will also be one of the biggest benefits you see when programming for
      the web. 
    
Programming Languages
     A web application, running in a browser, makes use of
      three separate languages to accomplish its goals. In addition to this the
      server makes use of a fourth language, separate from these three. It helps
      to see how these languages fit together;
      
Server Side - Clarion
       In a NetTalk application, the server-side language
        is Clarion. This is the code that runs on the server computer, and
        generates the code, or supplies the static files, that will run in the
        browser. The NetTalk server program mostly generates HTML code, with
        minor amounts of CSS and JavaScript code.The server also supplies the
        static CSS and JavaScript files to the browser.
      
      
      While somewhat simplistic, it's fair to say that the
        server supplies the browser with the HTML, CSS and JavaScript that it
        needs to present the application to the user. The HTML is mostly
        dynamically generated on the fly - the CSS and JavaScript are in
        external static text files, and are served to the browser (where they
        are cached). So the server is mostly just sending HTML to the browser as
        the user navigates through the program.
      Client Side - HTML / CSS / JavaScript
       The browser supports three different languages, each
        with a different goal. Some web sites can be built using just 1, or
        possibly 2 of these languages, but NetTalk applications make use of all
        three.
        
HTML
         This is the primary building block of the
          procedure (page). Most of the code generated by the NetTalk templates
          is HTML. HTML is great for "data" - putting information on the page,
          and identifying items on the page (This is a button, it's this kind of
          button, when someone clicks it run this function and so on.) HTML can
          be thought of as the content of the page. 
        JavaScript
         [Hint: JavaScript is not JAVA]
          
          JavaScript is the language that determines the page
              behavior. It can interact with the items on the
          page, but it also "runs" as you would expect code to run. It can hide
          or unhide elements, deal with clicks, update the server with new data,
          and so on. 
        CSS
         CSS is the UI language of the browser. It
          determines what things look like. It is
          ultimately just a list of rules that determine what things should look
          like, how they should adapt to small and large screens, and where
          things go on the screen. 
          
        
        While all three languages serve a different purpose, it is true to say
        that there is some cross-over between them. Some "layout" features are
        managed primarily in HTML, not CSS. For example a browse consists of a
        number of fields. The primary order for these fields is set in HTML, not
        CSS. 
        
        That said, the true power lies in the use of HTML and CSS together. For
        example the page at 
https://www.clarionlive.com/
        consists of two browses - but neither of them look like a typical
        spreadsheet-like browse. 
      
A Primer for the CSS Designer
     If your role is primarily to create, or modify a CSS
      theme for a NetTalk program, then this document is for you. It will
      explore in some depth the way the CSS is constructed, and how best to make
      changes in the CSS.
      
      While the CSS designer is focused on the CSS, the programmer will be
      focused on the HTML. There may well be cases where adding some HTML to the
      procedure (or adding a CSS class to an element) simplifies the design.
      Doing these things is straight-forward for the developer, and can be added
      to their application on request.
      
      It's worth noting that the Theme model is constantly evolving and being
      improved. If you encounter areas which you feel could be improved (or make
      your life easier) please don't hesitate to reach out to us at support at
      capesoft dot com.
      
      
 Hint: While in some cases it is necessary
      to use 
#id selectors in the CSS, this should
      be avoided if possible. Using 
#id selectors
      can lead to UI bugs in the future if the ID in the program changes. Since
      the programmer is unlikely to be aware of this dependence on procedure and
      field names, it's better to use some other selector if possible. 
      
      
 Hint: The server has two basic modes of
      operation - 
Development and 
 Deployment. Make sure
      the server is set into Development mode while you are working on the
      theme. Specifically if you find you are editing
        Theme.CSS then stop - that is a combined file, and you should be
      editing the source file(s) not that file. 
      
      
 Hint: You can change theme at run time
      using the following parameter to the website URL;
      
      
?_theme_=whatever
      
      This will change the theme for the duration of your session. This lets you
      test a new theme, without interfering with the current production theme.
      For example
      
      
https://capesoft.com/clarion?_theme_=sunny
        
      HTML Layout
       HTML Layout, via CSS, options have evolved
        considerably over the years. Early programs used Table layout, while
        later programs were able to use Div layouts, using the CSS Flexbox
        feature set. More recently CSS Grids have become available. Each
        approach has strengths and weaknesses, so it can be advantageous to use
        the correct approach in a specific situation.
        
        From a programmer's point of view, layout is organized into three broad
        categories; Browses, Forms and Children. The default mode for each of
        these categories can be set globally, but they can also be overridden at
        the procedure level. So, for example, Browses might be set to default to
        Grid, forms can be set to default to Flexbox, and a specific browse
        procedure could be set to say Flexbox, or even Table.
        
        From a designers point of view it is useful to liaise with the
        programmer to set the default approach you prefer, but also to let them
        know where an alternate approach may be useful. 
    Programmer Responsibilities
    
      
      Development / Deployment mode
       In the WebServer procedure, NetTalk Extension,
        Settings / Performance tab are items for improving site performance. All
        of these settings can be quick-set using two buttons at the top of the
        tab. The one is labelled Deployment, and the other is
        Development.
        
        While working on the CSS it is best to put the server into Development
          mode. This means that the individual source files are sent to
        the browser, and any changes made by the designer (and saved to the
        server) take immediate effect (by just pressing Ctrl-F5 in the browser.)
        
        
        When development is complete, the server can be switch back into
        Deployment mode. This will optimize the performance of the server. After
        clicking the Deployment option run the GZIPALL.BAT
        file in the application folder. This will combine all the CSS into a
        single Theme.CSS file. Copy this file to
        the server web\themes\whatever folder. (if it's not already there).
        Other support files (like icon SVG files) should also be deployed to the
        server. 
      Custom CSS, Custom Theme CSS
       Editing the shipping source files will lead to
        problems, as these files will be overwritten by NetTalk updates. For
        this reason it is possible for the programmer to add custom css files to
        the \web\styles folder, as well as custom theme files to the
        \web\themes\whatever folder. Custom designs can be added to these files
        in the knowledge that they will be safe from future NetTalk updates.
        
        To tell your program to use these new file(s) go to the WebServer
        procedure, NetTalk Extension, Settings / Styles / Files tab. 
        
        If you wish to edit the files in the \web\themes\whatever folder then it
        is recommended that you clone this folder to a new
        \web\themes\somenewname folder. You may wish to prefix this folder name
        so as not to run the risk of the theme being supplanted by a
        future-shipping nettalk theme with the same name. 
        
        For example to make a new theme, similar to the PalmTree theme, calling
        it xSailing copy the \web\themes\palmtree folder to \web\themes\xsailing
        folder. For new themes, you are free to edit any of the files in the
        Themes folder and they will not be overwritten by future NetTalk
        releases. You do not need to "register" new themes in the program - just
        including them in the \web\themes folder is sufficient.
      
      Setting the Default Theme
       The default theme (the theme which will be applied
        to the site) is set in the WebServer procedure, NetTalk Extension,
        Defaults / General tab. the theme name should be in quotes (if a
        constant value) or can be set to an expression (variable) if desired. 
      Assigning Classes to Elements
       
      Assigning Icons
       In any of the Icon template prompts you can put the
        name of an icon. You can supplement this with the space-separated list
        of additional css classes. the following classes, exist and can make
        useful additions;
        
          
            
              | CSS Class | Use Case | 
            
              | ui-icons-light | Use an icon from the "light" set | 
            
              | ui-icons-dark | Use an icon from the "dark" set | 
            
              | ui-icons-16 | Set the size of the icon to 16 pixels | 
            
              | ui-icons-20 | Set the size of the icon to 20 pixels | 
            
              | ui-icons-24 | Set the size of the icon to 24 pixels | 
            
              | ui-icons-32 | Set the size of the icon to 32 pixels | 
            
              | ui-icons-48 | Set the size of the icon to 48 pixels | 
            
              | ui-icons-64 | Set the size of the icon to 64 pixels | 
          
        
       
    CSS and Theme File Locations
     There are two primary locations for CSS files in the \web folder. The first is \web\styles
      and contains CSS files that are common to all themes. 
      Theme specific files are located in the \web\themes\whatever
      folder. 
      
      When the program is put into Deployment mode, all the CSS files from the \web\styles and \web\themes\whatever
      folders are combine to make a single theme.css
      file. This is located in the \web\themes\whatever
      folder. Using this combined (and pre-compressed) file improves performance
      for the client. It should also be noted that this file is cached by the
      browser, so it is only sent to the browser once.
    
    Themer (86) Example Program
     NetTalk ships with a number of web application
      examples - one of which is called Themer (86). This example is useful to
      CSS designers because it allows a number of common theming attributes
      (like colors, corners, gradients etc) to be set directly in the browser.
      
      The example also contains Expo pages, which contain various different
      controls. This makes it a good example application to test a new theme to
      see if it is complete and consistent.
      
      If making a new theme, then this is a good starting point as this
      application allows for rapid changes to the most common theme settings.
      This program is safe to run with manually-edited 
nt-theme.css
      files, as it only affects the settings it is designed to change. All other
      settings are preserved. 
      
      To see a webinar of this example program in action see 
https://www.youtube.com/watch?v=Stve8cfX2kg from the
      1:07:00 mark to around the 1:35:00. This webinar also acts as a good
      introduction to some of the CSS techniques used in the theme.
      
    
Understanding NetTalk Themes
     This section will explore the low-level mechanics of
      the theme files. It is faster to edit these properties using the Themer
      program, but of course there are many more settings in the CSS files than
      are exposed in the Themer program, and so manual editing is often desired.
      You can safely use theme on these files after manually editing the files.
      
      CSS files in \themes\whatever
       Each theme is stored in it's own folder, located
        under the themes folder. The folder name is the theme name.
        
        Each theme consists of (at least) 3 source files, as detailed below. 
        
        When working on the theme, make sure the server is in 
Development
          mode.
        
        When the program is in 
Deployment mode then these
        three files, and all the styles used in the 
\styles
        folder, are combined into a single file (
theme.css)
        which is then pre-compressed using GZIP to make
          theme.css.gz. If the browser supports file compression (as most
        do) then only this single 
theme.css.gz
        file is set to the browser.
        
nt-theme.css
        Note: If you edit
          this file, make sure you make a new theme, don't edit a shipping theme
          as it will be overwritten with a later NetTalk build.
          
          The primary theme file in each theme is 
            nt-theme.css. This file contains (only) CSS Custom Properties
          (aka CSS Variables) which are then used by other CSS files. The vast
          majority of the custom theme changes will take place in this file.
          
          The file is broken down into a number of sections;
          
            - Icons - determines the size, and icon files to use
- Typography - determines the font, fontsize, and various other
              font related settings
- Curvature - determines the corner radius for on-screen elements,
              as well as gradients 
- Colors - determines the colors used by the theme
- Elements - applies the various settings above to the various
              screen element types
 
        jquery-ui-theme.css
        Note: If you edit
          this file, make sure you make a new theme, don't edit a shipping theme
          as it will be overwritten with a later NetTalk build.
          
          This file contains the CSS related to the visual options for all the
          jQuery widgets.  Most of the classes in this file have the ui- prefix.
          
          This file originated as part of the jQuery UI themes, but it has since
          been heavily modified to work with nt-theme.css.
          It is no longer compatible with themeroller, but can be manually
          edited. Most of the settings in this file use variables set in nt-theme.css
        
        nettalk-ui.css
        Note: If you edit
          this file, make sure you make a new theme, don't edit a shipping theme
          as it will be overwritten with a later NetTalk build.
          
          This file contains the CSS related to the visual options for all the
          NetTalk widgets. Most of the classes in this file have the nt-
          prefix
          
          This file can be manually edited. Many of the settings in this file
          use variables set in nt-theme.css 
      SVG Icons
      
        
        NetTalk 12 themes make use of SVG icons, which display well at all
        screen resolutions, and which can support multiple colors per icon. SVG
        (Simple Vector Graphic) files are text files, and can be viewed in a
        text editor. Some simple changes to the header part of the 
Icons.SVG
        file can dramatically alter the icon set quickly, and easily. 
        
        
Note: In this section 
Icons.SVG
        refers to the Icons file(s) used by the theme, regardless of the name of
        the file.
        
        Icons are located in the 
\web\icons
        folder. A number of default files are shipped in this folder in both
        light and dark variants. A sample test file (using the Palmtree theme)
        is also included as 
\icons\icons.htm. You
        can edit this file, or clone it, to test other themes.
        
        The colors used in the 
Icons.SVG file
        needs to be set at the top of that file. 
[1]
        
        The primary change you will make to the 
Icons.SVG
        file is the 
color of the icons. 
        
        Note 1 : Aside:  Because Icons in jQuery are implemented as
        background images, and because the 
:root
        custom properties are out of scope for SVG files used in this way, the
        colors from the
 nt-theme.css file cannot
        be used directly in the 
Icons.SVG file.
        
Size
         Because the icons are defined as vector graphics,
          they scale very well to many different sizes. This can be done using
          the css 
transform property.
          For example;
          
          
 transform: scale(0.5)
          
          Since the icons are drawn on an arbitrarily chosen 32x32 pixel space,
          a scale of 0.5 leads to a icon of 16 x 16 pixels. 
          
          NetTalk has seven categories of icons - and of course you can add more
          if you need them. These are declared in the 
nt-theme-css
          file. In this file you can specify the scale used for each category.
          For example;
          
          
--icons:url("/icons/nt-icons-light.svg");
            --icons-scale:0.5; 
            
            --icons-tab:var(--icons);
            --icons-tab-scale:0.8;
          
          The built-in use of each category is set in 
jquery-ui.theme.css.
          
          They are generally applied as follows; 
          
          
            
              
                | Category | Use | 
              
                | --icons | Used by the jQuery UI JavaScript code. This is basically all
                  the dynamic icons like the open/close icons on menus,
                  accordions and taskpanels. | 
              
                | --icons-entry | Used on form controls - like check boxes, drop lists and so
                  on. Typically these icons should contrast well with the
                  --entry-background color. | 
              
                | --icons-button | Used on all buttons | 
              
                | --icons-menu | Used on menu items, but not for menu navigation icons. (see
                  --icons above) | 
              
                | --icons-tab | Used on Tab headers | 
              
                | --icons-highlight | Used when a widget (button etc) is highlighted. | 
              
                | --icons-error | Used for Error messages etc. | 
            
          
        Color
         The top of the icons file contains a number of
          colors that are declared here, and used in the icon drawings. You may
          wish to customize these colors to match your theme. You can create
          your own icon files, and just adjust the URL properties in nt-theme.css
          
          Here is a sample set of colors as taken from the nt-icons-light.SVG
          file. 
          
              <style>
                    .colors{
                       
            --icon-color:#FFFFFF;
                       
            --icon-shade:#999999;
                       
            --icon-contrast:#333333;
                       
            --icon-warning:#bbac1d;
                       
            --icon-error:#9d412a;
                       
            --transparent:transparent;
                    }
                </style>
          
        
        Colored Button Icons 
         The ShoeStrap2 theme is an example of a theme with
          colored icons - in the sense that the buttons in the them are colored
          based on their function. So an Insert button has a green icon, a
          Delete button has a red icon and so on. 
          
          The specific changes to the theme to support this are annotated below;
          
          
            - The custom icons SVG file (nt-icons-buttons.svg)
              is created by copying from the default icons (\icons\nt-icons-dark.svg)
              to the \themes\shoestrap2 folder. 
- The nt-icons-buttons.svg file is
              edited to set the icon colors; --green,
              --blue and --red
              added to the <style> section 
- The individual icons are edited to use these colors (see trash as an example) 
- In \themes\shoestrap2\nt-theme.css
              the --icons-button property is set to
 
 --icons-button:url("nt-icons-buttons.svg");
 
 This is a custom icon file, unique to this theme (created in step
              1 above), and located in the specific theme folder. (Note the url
              is relative, not pointing to the icons folder as the other
              settings do.)
Available Icons
        The icon names follow the same pattern as for
          jQuery UI. However a number of new icons have been added to the set to
          make it a bit more useful. For a list of the available icons check out
          the /icons/icons.htm document on your server.
        Making Your Own Icons
        The icon system is easily extended to incorporate
          your own icons. There are a couple of approaches you can take;
          
          a) Clone the existing icons.svg file to a new file, and add in
          additional icons to the file. There are a few empty spaces you can use
          for this. Then add entries to either jquery-ui.theme.css (or better
          yet, your custom.css) to define the new icon names and locations.
          However this approach will mean that any improvements to the shipping
          icons, or new shipping icons, will be difficult to merge into your
          application. 
          
          b) Create a new icons.svg file (say 
myicons.svg),
          and new css file (say 
myicons.css), and
          use this in conjunction with the shipping icons. The Themer (86)
          example includes an example of this approach.  It includes 
/icons/customicons.svg, and 
/styles/customicons.css.
          This example also shows the use of multi-colored icons - in this case
          the icons attached to the menus.
          
 TroubleShooting 
          
         
      Font Based Icons
      
        
        Note that the use of the Webdings or Wingdings fonts are not recommended
        in web applications since they are not universal to all platforms. If a
        font is to be used to draw icons, then use a Unicode font, and make sure
        the application is set to use the utf-8 charset. 
        
        There are a number of free and commercial icon-based fonts available on
        the web (see links below). While each may have specific installation
        instructions, they will all follow a similar pattern, and one (Font
        Awesome) is documented below.
 
      Colored Button Icons
      
        
          - If necessary, add the colors you want to use to the nt-theme.css
            file. For example;
 
 --icons-red:#c43c35;
 --icons-green:#57a957;
 --icons-blue:#0064cd;
 
- Add a section to the nettalk-ui.css file, based on the button that
            needs coloring. For example, for the insert button;
 
 .nt-insert-button>.nt-font-icon-button{
 color:var(--icons-green);
 }
 
 Repeat for all the buttons that need coloring.
 
      Font Awesome Icons
      One of the most popular icons to use on webapps are a
        set of icons created by 
Font
          Awesome. These are available in both a free, and commercial
        version. The commercial version is notable for having a wider selection
        of icons. The icons are extremely well drawn, and are provided as a Font
        file rather than as a sprite file.
        
        This section assumes some familiarity with the Font Awesome methodology
        in naming, and identifying icons. Specifically the icon name consists of
        a style (
fas, 
far, 
fal,
        
fab) followed by an icon name with the 
fa-
        prefix. So
 'fas fa-umbrella' .
        
        NetTalk 12 allows FontAwesome icons to be used in a number of places
        where icons are supported. Support includes icons on buttons, icons on
        menu and menu items, and tab headings. In some places (notably where
        icons are live-changed in JavaScript such as on a checkbox) only SVG
        based icons can be used.
        
 Installing 
         After downloading the Font Awesome files, you will
          need to 
          
            -  Add their webfonts folder to your web folder (as \web\webfonts)
               [2] 
- Copy their \css\all.css file to
              the \styles folder. Rename this
              file to something more descriptive (like FontAwesomeAll.Css).
- Go to the Application, WebServer procedure, NetTalk Extension,
              Settings, Styles, Files and add the css file there. (Use the same
              name as used in step 2, so in this example
                'FontAwesomeAll.Css')
 [Note 2] You can place the fonts in a
          different folder - like the 
\fonts
          folder, if you prefer. If you do this wold will need to change all the
          URL references in 
FontAwesomeAll.Css Using 
        the places where Font Awesome fonts are supported
          you can simply use the Font Awesome style name, and font name. For
          example to use the Font Awesome trash icon (which is part of the solid
          style - hence fas - you would set the icon to be
            'fas fa-trash'.
          
          Font Awesome icons can be used in places where the icons are "non
          functional" - including buttons, menu items, and tab headings. They
          cannot be used on functional items (checkboxes, accordions and so on.)
          
          Hint: It is a common misconception that
          Font Awesome requires an <i> block.
          This is not the case, and in NetTalk a <span>
          is used as this is semantically more correct.
        
      Useful Links
    
    Backward Compatibility
     Considerable effort has gone into making the new theme
      system backward compatible with themes from NetTalk 11 and earlier.
      Nevertheless some small modifications to the old themes are likely
      desirable to keep using them. These changes have been made to those
      shipping themes that have not yet been updated to the new framework. If
      you have your own custom theme, then these changes may well be desirable
      in your own theme.
      
      
        
          
            | File | Class | Suggested Change | Comments | 
          
            | nettalk-ui.css | .nt-small-button .nt-small-button span
 | Move these 2 lines down to below the nt-button declaration. (only 1 line lower)
 | The nt-button class has been added to the HTML to small buttons,
              so this class is now in play, and needs to be overridden by the
              n-small-button class. | 
          
            | 
 | .nt-button | remove font-size property. .nt-button{min-width: 7em;}
 | No longer desirable - causes buttons to appear with a smaller
              font. | 
          
            | 
 | .nt-small-button | remove width and height properties, set min-width to Auto .nt-small-button{margin: 0!important;
              margin-right:0.5em!important;min-width: auto;}
 | 
 | 
          
            | 
 | 
 | 
 | 
 | 
        
      
    Random CSS Tips
     This section contains some tips to do some common
      adjustments in custom.css files.
      
      #1. Remove Close button from top right of Dialog Headers;
      
      
 .ui-dialog .ui-dialog-titlebar-close {display:
        none;} 
      
      #2. Left-Justify Dialog titles
      
      
.ui-dialog .ui-dialog-title {justify-content:start}
      
      #3. Size main panels
      
      
@media screen and (min-width: 1025px){
            .nt-leftpanel-l {
                width: 12em;
            }
        }
      
      If you have both a left and right panel then use
      
      
@media screen and (min-width: 1025px){
            .nt-leftpanel-lr {
                width: 12em;
            }
        }
      
      If you have a right-side-menu set the width to accommodate your longest
      menu item, without getting too small.
      
 @media screen and (min-width: 1025px){
              .nt-rightpanel-r {
                  width: 12em;
              }
          }
        
        If you have both a left and right panel then use
      @media screen and (min-width: 1025px){
              .nt-rightpanel-lr {
                  width: 12em;
              }
          }
      
      Adjust the size of the middle panel to match
      
      
@media screen and (min-width: 1025px){
            .nt-contentpanel-lr {
                min-width: calc(100% - 25em);
            }    
        }
      
      
      #5. To make the header text in browses not wrap
      
      
.nt-browse-header-all{
            flex-wrap:nowrap;
        }
      
      #6 To make the content part of a browse scrollable, with fixed hearers and
      footers (Flex mode only)
      Add 
.nt-browse-flex-body-scroll to the Browse
      Body Div. Adjust height as desired;
      
      
.nt-browse-flex-body-scroll{
            height: 50vh;
        }
      
      #7 Change the "line height" of browses
      
      A browse row (ie a row in the data table) can consist of one or more lines
      in an HTML table, flex, or grid.
      The following classes are applied to cells in the browse;
      
        
          
            | Class | Use case | 
          
            | nt-browse-first-line | Applied to the first HTML row of a multi-line browse. | 
          
            | nt-browse-middle-line | Applied to the middle HTML row of a multi-line browse. | 
          
            | nt-browse-last-line | Applied to the last HTML row of a multi-line browse. | 
          
            | nt-browse-only-line | Appears in the HTML row if the browse is set as one line per
              row. | 
        
      
      
      The primary theme settings (in 
nt-theme.css)
      which are used are;
      
        
          
            | Setting | Use case | Example value | 
          
            | --browse-line-padding-top | The padding between one browse row and the next | 0.3em; | 
          
            | --browse-line-padding-bottom | The padding between one browse row and the next | 0.3em; | 
          
            | --browse-line-border-top | The border line between this line and the one above it | 1px solid var(--light-grey); | 
          
            | --browse-line-border-bottom | The border line between this line and the one below it | 1px solid var(--light-grey); | 
        
      
      
      #8 change the size of small buttons;
      
      
.nt-small-button {
            height:1.5em;
            width:1.6em;
        }
      
      #9 Change the size of Icons in in-row small buttons
      
      in 
nt-theme.css, set the 
--icons-button-scale.
      This is as a fraction of 32pixels. For example, for 16 pixel icons use.
      
      
--icons-button-scale: 0.50;
      
     Shipping Themes 
     NetTalk ships with a collection of themes. This
      section describes some of the differences between the themes. While
      picking the theme you prefer is largely a matter of taste, if you are
      making your own them then it helps to start with the theme "closest" to
      your desired behavior. Don't be concerned too much with the color to begin
      with - that's easy to change. It's sometimes the other parts of the theme
      that set it apart.
      
        
          
            | Theme | Notes | 
          
            | Base | A flat theme, based around the color blue. Uses a 12 point font.
 
 | 
          
            | 
 | 
 | 
          
            | ShoeStrap1 | A pale theme based around white, grey and black with blue
              highlights. Is a "compact" theme, using small (10pt) fonts and low padding.
              Can be used to create a quite dense look, useful for applications
              with lots of data.
 Buttons are grey, Icons are dark grey.
 | 
          
            | ShoeStrap 2 | Same as ShoeStrap 1 but uses a custom set of button icons. The
              icons are colored. This theme is a good example of using a custom set of icons, in
              this case attached to buttons.
 | 
          
            | ShoeStrap3 | 
 | 
        
      
    [End of this document]