From 3f19281a81531dcac5c389ae2fd2db0d1b89299f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Loi=CC=88c=20Correnson?= <loic.correnson@cea.fr> Date: Wed, 8 Jul 2020 18:28:15 +0200 Subject: [PATCH] [dome] cleaning duplicates doc --- ivette/src/dome/doc/tutorials/application.md | 119 ----------- ivette/src/dome/doc/tutorials/dataflow.png | Bin 48365 -> 0 bytes ivette/src/dome/doc/tutorials/development.md | 204 ------------------- ivette/src/dome/doc/tutorials/glossary.md | 30 --- ivette/src/dome/doc/tutorials/hooks.md | 20 -- ivette/src/dome/doc/tutorials/hotreload.md | 45 ---- ivette/src/dome/doc/tutorials/icons.md | 3 - ivette/src/dome/doc/tutorials/index.json | 10 - ivette/src/dome/doc/tutorials/quickstart.md | 26 --- ivette/src/dome/doc/tutorials/styling.md | 63 ------ 10 files changed, 520 deletions(-) delete mode 100644 ivette/src/dome/doc/tutorials/application.md delete mode 100644 ivette/src/dome/doc/tutorials/dataflow.png delete mode 100644 ivette/src/dome/doc/tutorials/development.md delete mode 100644 ivette/src/dome/doc/tutorials/glossary.md delete mode 100644 ivette/src/dome/doc/tutorials/hooks.md delete mode 100644 ivette/src/dome/doc/tutorials/hotreload.md delete mode 100644 ivette/src/dome/doc/tutorials/icons.md delete mode 100644 ivette/src/dome/doc/tutorials/index.json delete mode 100644 ivette/src/dome/doc/tutorials/quickstart.md delete mode 100644 ivette/src/dome/doc/tutorials/styling.md diff --git a/ivette/src/dome/doc/tutorials/application.md b/ivette/src/dome/doc/tutorials/application.md deleted file mode 100644 index ec13570b915..00000000000 --- a/ivette/src/dome/doc/tutorials/application.md +++ /dev/null @@ -1,119 +0,0 @@ -<!-- Application Design --> - -This tutorial introduces how to design a **Dome** application within the -**Electron** & **React** frameworks. You shall be reasonably familiar with -**React** concepts, but no knowledge of **Electron** is required. - -A desktop **Dome** application looks like a native application, but is actually -a static web page rendered in a **Chrome** web browser. This is what provides -the **Electron** framework by default. **Dome** is simply a library of **React** -components and development templates tuned together to enable professional -application development. - -This tutorial provides an overview of this environment and how to design a typical -**Dome** application. - -## System Architecture - -Following the **Electron** framework design, your application will consists of -two different processes interacting with each others. -One is responsible for the management of the main GUI resources -(windows, menu-bar, desktop interaction, user settings, etc.) -and is named the `Main` process. -The second one will be responsible for running the -web page holding the main application window, and is named the `Renderer` process. -Both kind of process communicates through the message-passing API provided by -the **Electron** framework. - -When several instances of your application are running simultaneously, each invokation -have its own window, running its owan, separate `Renderer` process. However, the -**Dome** framework automatically makes them sharing the same `Main` process. - -Hence, each application instance has its own working directory and command-line arguments, -depending on how its has been launched by the user. The **Dome** framework build -both command-line and desktop entry points, depending on each target platform. - -## Event Driven Design - -On the renderer process side, the **React** framework induces a natural design where -_Application State_ is separated from _Application Rendering_. Moreover, -following a popular design introduced with **Redux**, application rendering tend -to be written like a pure function (or _view_) on the state, where user -actions are just state updater callbacks. Each time the state is modified, the -entire application rendering is recomputed, and **React** computes a minimal -diff to apply on the web page displayed in the main application window. - -Putting everything together, its is recommended to design **Dome** application -into two different parts, both running in the `Renderer` process of each -application instance: - -- **Application Internals (State)** -holding your application state and data and updating it in response to user or -system events; - -- **Application Components (View)** -responsible for rendering the application main window and -binding callbacks to application services. - -<img src="dataflow.png" style="float: right; width: 30em"/> - -Such an architecture is typical of a _Model-View-Controller_ design, but -revisited to scale. In particular, data flow between those three different -layers shall follow a unique-direction pattern in order to avoid the -combinatorial explosion of interactions between components that is generally -observed in most Model-View-Controller designs. - -Hence, data-flow shall follow one of the following routes between these -three layers, illustrated above: - -- from `State` to `View` : your rendering components shall only access the -current application state and data; -- from `View` to `State` or `System` : user action callbacks shall only trigger -state update or system operation, not any other view direct modification. -- from `System` to `State` : upon completion, system services shall trigger state -updates that would in turn trigger new requests and view re-rendering. - -## Data Management - -To implement the recommended data-flow described above, you may use a full -featured [Redux](https://redux.js.org) platform or any other framework of your -choice. However, **Dome** provides you with many facilities for implementing -your data flow. - -- **Global States** are necessary to implement the unidirectional data-flow. These - data are stored in the renderer process, but outside of the view hierarchy of - **React** components actually mounted in the DOM. Hence, it remains consistent whatever - the evolution of the view. See `Dome.State` class and the associated custom **React** hooks - to implement global states. You may also use global JavaScript variables and emit events - on your own. - -- **Local States** are necessary to maintain local states associated - to views. We strongly encourage the use of the `Dome.useState()` hook for this - purpose, since it generalizes `React.useState()` with persistent window settings - (see below). - -- **View Updates** to make your views listening for updates of the various data - sources, we encourage to use the **React** hooks we provide, since they - transparently make your components to re-render when required. However, - sometimes you will need to respond to special events by hand. For this purpose, - you can use **Dome** as a central event emitter, by using `Dome.emit()`, - `Dome.on()` and `Dome.off()` functions. Moreover, the `Dome.useUpdate()` and - `Dome.useEvent()` hooks can be used to make your components being notified by - events. - -- **Window Settings** are stored in the user's home directory but remain - generally unnoticed by most users, although they are responsible for a good user - experience. They typically include the window's position and dimension, - resizable items position, fold/unfold states, presentation options, etc. Most - **Dome** components with presentation options can be assigned a `settings` key - to make their state persistent. Contrary to Global Settings, however, they are - not shared across several windows. You may also access these data by using - `Dome.setWindowSetting()` and `Dome.getWindowSetting()`, or the **React** hook - `Dome.useWindowSetting()`. - -- **Global Settings** are stored in the user's home directory and automatically - saved and load with your application; they are typically modified _via_ the - Settings Window, which is accessible from the application menubar. In **Dome**, - you access these data by using `Dome.setGlobalSetting()` and - `Dome.getGlobalSetting()`, or the **React** hook `Dome.useGlobalSetting()`. - Settings must be JSON serializable JavaScript values. diff --git a/ivette/src/dome/doc/tutorials/dataflow.png b/ivette/src/dome/doc/tutorials/dataflow.png deleted file mode 100644 index 648a290cadfa3d89ffe5861b76076ab18edfeac1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48365 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묮L5NAiGO+wMGSWRK3|tbz*mQL-(a&_1 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 diff --git a/ivette/src/dome/doc/tutorials/development.md b/ivette/src/dome/doc/tutorials/development.md deleted file mode 100644 index af424ab5c5b..00000000000 --- a/ivette/src/dome/doc/tutorials/development.md +++ /dev/null @@ -1,204 +0,0 @@ -<!-- Application Development --> - -The [Quick Start](tutorial-quickstart.html) tutorial introduces how to setup a new application project, -and [Application Design](tutorial-application.html) draw a high-level view of how it works. -This tutorial goes into more details about the development environment provided by the **Dome** -framework. - - -## HTML & JavaScript Environment - -The Web environment for designing your application is based on the following -framework: - -- **Electron** [v5.0+](https://electronjs.org) runtime environment (packaging Chrome and Node) -- **Node** [v12.0+](https://nodejs.org/dist/latest-v12.x/docs/api) provided by Electron -- **Chromium** [v73.0+](https://www.chromium.org/Home) HTML rendering engine provided by Electron - -You will write your application in a an environment setup with the following -JavaScript features: - -- **Webpack** for packaging the application from sources -- **Babel** to parse language extensions -- **Babel Presets Env** to use ECMA modules and JavaScript strict mode -- **Babel Presets React** to use JSX react notation in all your `*.js` files -- **Babel Object Rest Spread** to use object spread syntax `{ ...props }` -- **React v16** with its latest features (including Hooks) -- **React Hot Loader** for [live-editing](tutorial-hotreload.html) your application -- **CSS Loader** to load and install `*.css` files - -## Available Packages - -The implementation and internals of the **Dome** framework rely on -high-quality and mature popular packages. They are automatically packed -into your dependencies by the provided template makefile. We list them here -since you may re-use them for your own purpose: - -- [**Lodash**](https://lodash.com) convenient JavaScript utilities -- [**React-Virtualized**](http://bvaughn.github.io/react-virtualized) -for layout of large data set in list, tables and grids -- [**React-Draggable**](https://github.com/mzabriskie/react-draggable) -for straightforward drag-and-drop features -- [**CodeMirror**](https://codemirror.net) for rich text capabilities and edition -that scales on large document -- [**ZeroMQ**](http://zeromq.org) for inter-process and distant communications -(see also [System Services](tutorial-services.html)). - - -## Project Files Organization - -The main directory holding your application project with **Dome** consists of -several files and directories. Each is created and/or managed by various -entities : yourself the **Developer**, the **Dome** template makefile, the -**Yarn** JavaScript package manager and the **Electron** suite of -utilities. Parts of those files are generated and updated on demand and shall or -shall _not_ be tracked in your source version control system, be it based on `git`, -`svn` or anything else. - -Most files are actually created and used by **Dome**, **Electron** and **Yarn**. -However, that are _in fine_ under the responsibility of the **Developer** -since you can edit and extend them to fit your needs. -Those generated files generally contains comments to indicate how you -can extend them. You shall put those files under version control only if you edit them. - -As depicted in the [Quick Start](tutorial-quickstart.html) tutorial, the only file you -need to create by yourself is the main `Makefile`, with a minimal content -limited to: - -```makefile -DOME="..." ;; path to your dome installation -include $(DOME)/template/makefile -``` - -The following table lists the main files and directories of your project, with -the associated entity responsible for it, and whether they should be tracked by -your source version control system (VCS). - -Optional files are tagged with « (Opt.) » in the corresponding `Entity` column, -and are _not_ generated by default. Similarly, files mainly used by the system -but that can still be configured by the developer are tagged with « (+Dev) ». -Files are tagged with « ✓(*) » in the `VCS` column shall be tracked only if you -actually modified them. - -| File or Directory | Description | Entity | VCS | -|:------------------|:------------|:-------:|:---:| -| `./Makefile` | Drives the build system | **Developer** | ✓ | -| `./src/main/` | Sources for the main process | **Developer** | ✓ | -| `./src/main/index.js` | Main process entry point | **Electron** (+Dev) | ✓ | -| `./src/renderer/` | Sources for the renderer process | **Developer** | ✓ | -| `./src/renderer/index.js` | Renderer process entry point | **Electron** (+Dev) | ✓ | -| `./src/renderer/Application.js` | Top React component of the main application window | **Developer** | ✓ | -| `./src/renderer/Preferences.js` | Top React component of the user preferences window | **Developer** | ✓ | -| `./src/common/` | Sources for _both_ processes | **Developer** (Opt.) | ✓ | -| `./static/` | Static resources | **Developer** (Opt.) | ✓ | -| `./package.json` | JavaScript packages configuration | **Yarn** (+Dev) | ✓ | -| `./node_modules` | Downloaded packages | **Yarn** | ð„‚ | -| `./yarn.lock` | Packages versions stamps | **Yarn** | ✓ | -| `./electron-webpack.json` | Electron configuration | **Electron** (+Dev) | ✓(*) | -| `./babelrc` | Babel configuration | **Electron** (+Dev) | ✓(*) | -| `./webpack.main.json` | Webpack main process config. | **Electron** (+Dev) | ✓(*) | -| `./webpack.renderer.json` | Webpack renderer process config. | **Electron** (+Dev) | ✓(*) | -| `./.dome-*` | Dome makefile stamps | **Dome** | ð„‚ | -| `$(DOME)/*` | Dome framework clone | **Dome** | (var.) | -| `./dist/` | Packaged application | **Dome** | ð„‚ | -| `./bin/` | Local command-lines | **Dome** | ð„‚ | - -The main entry points of the two **Electron** processes running your application, -`src/main/index.js` and `src/renderer/index.js` shall be modified with extreme care, -since they are in charge with the correct bootstrap of your application. -The generated files from **Dome** templates contains explicit comments and guidelines. - -You may want to modify the name of your application top-level **React** components, -namely `src/renderer/Application.js` and `src/render/Preferences.js` by default. -To do this, you shall hook into the -`src/renderer/index.js` file and follow the provided comments and guidelines, -and set the `DOME_CUSTOM_ENTRIES` variable into your own `./Makefile` to make -**Dome** aware about this. - -If you need static resource files to be packed with your application, put them in the `static` directory. -You can then access to their actual path from your code by using the `System.getStatic(<path>)` utility function. - -The location of the **Dome** resources actually depends on the developer -profile, as explained in more detailed in the [Live Editing](tutorial-hotreload.html) tutorial. -To summarize: -- for normal developers, it can be a local copy of the dome framework, for instance in your `/usr/local/lib/dome` directory; -- for developers working with a specific or modified version of the dome framework, it can be in the local -`./dome/` directory of your project, with or without versioning control; -- for **Dome** developers, it is also possible to clone the Git repository inside the `./src/dome/` sub-directory of your -project, hence also enabling live-editing of **Dome** itself; -- for **Dome** maintainers, it is even possible to use the root of the **Dome** development repository as an application project -in itself, for demos, examples or testing purposes. - -Most of the **Electron** configuration files depends on the definition of the -`DOME` environment variable to find the necessary resources for your application -during development. Commands initiated by **Dome** from `$(DOME)/template/makefile` -will explicitly copy the `$(DOME)` makefile variable into the `$DOME` shell environment -variable when calling the **Electron** builder utilities, and might use it to generate static -files from templates, if necessary. - -If you ever _move_ the place where **Dome** is installed, you -probably have to inspect the generated files that you have modified to check -if they still behave as expected. - -Notice, however, that distributed versions of -the application (those accessible from the `./dist/` directory) are -self-contained: they are _not_ tied to your local installation of **Dome**. - -The command-line version of the application is accessible to the developer from the `./bin` directory. - -# Common Development Tasks - -Most development tasks shall be accessible from your `./Makefile`, and simply delegate to the -predefined **Dome** targets in `$(DOME)/template/makefile` ; however, for very specific needs, -you can borrow the content of the template makefile into your own one and modify it at your -convenience. The **Dome** environment will not target this template makefile explicitly. - -The top target of the **Dome** template makefile is `make dome-help`, -which is thus activated by default unless you put your own targets _before_ -its inclusion. The `dome-help` target simply echoes a short list of all the -`dome-xxx` predefined targets in the template. It also reports on -actual values of makefile variables used by the template. - -``` -$ make dome-help - -[Dome] Builtin Targets: - make dome-help This help - make dome-dev Run application in development mode - make dome-app Compile application - make dome-dist Package application for production - make dome-doc Generate Dome documentation - make dome-api Generate Application documentation - make dome-pkg Install development packages - make dome-templ Update templates - make dome-reboot Rebuild templates from scratch - make dome-clean Remove dome temporary files - make dome-plugins Package plugins for distribution - -[Dome] Development: - Dome framework DOME = '…' - Local command DOME_CLI = '…' - Arguments (dev) DOME_ARGS = '…' - Export modules DOME_EXPORTS = '…' - Plugin modules DOME_PLUGINS = '…' - -[Dome] Documentation: - Application APP = '…' - Copyright COPYRIGHT = '…' - Dome framework DOME_DOC = '…' - Output dir DOME_DOC = '…' - Public API DOME_API = '…' - -``` - -As depicted above, the **Dome** template also provides two extensible targets `help::` and `clean::`. -By default, the `make clean` would only remove the **Dome** stamp files, not the actually generated files, -since they can have been modified when developing the application. This can cause, however, an _update_ of -configuration files that can be managed incrementally, typically for the `package.json` and the installed -JavaScript packages. - -The **Dome** framework can generate its own documentation locally, hence you may consult it offline. It -is also capable of generating internal **JSDoc** documentation of the application itself. The application -documentation does _not_ contain the framework documentation, though. - -The environment variable can be redefined _via_ your own Makefile before the **Dome** template inclusion. diff --git a/ivette/src/dome/doc/tutorials/glossary.md b/ivette/src/dome/doc/tutorials/glossary.md deleted file mode 100644 index 1368e8e25b9..00000000000 --- a/ivette/src/dome/doc/tutorials/glossary.md +++ /dev/null @@ -1,30 +0,0 @@ -<!-- Glossary --> - -## Basic Concepts - -- **Component** a React Component definition (class of function) -- **Element** a React Component instance of a Component, typically `<Component ...>` -- **Elements** a fragment of any number of elements, typically the `children` properties of elements -- **Render Prop** a function returning element(s), typically used instead of children elements - -## Component Properties - -- `id` an element identifier -- `icon` an icon identifier, as listed in the [icon gallery](tutorial-icons.html) -- `label` a short text used as the displayed title of a component -- `text` textual content to be printed on screen -- `title` a description for a component, usually provided in a tooltip box -- `settings` a key for making local state(s) persistent in user's settings -- `value` the value associated to some basic control (see `onChange`) -- `state` an object holding some current state (see `onUpdate`) -- `default` identifies the element selected by default in a list -- `selected` whether an element is selected or not (never by default) -- `disabled` whether an element will not responds to user actions (never by default) -- `selection` the identifier or value of current selection, or `undefined` (see `onSelect`) -- `children` the children elements of a component instance -- `onClick` a callback function in response to a click event -- `onClose` a callback function in response to closing action -- `onChange` a callback function in response to value changes (see `value`) -- `onUpdate` a callback function in response to (partial) state updates (see `state`) -- `onSelection` a callback function in response to user selection (see `selection`) -- `style` an inlined CSS style object to inject in a DOM element diff --git a/ivette/src/dome/doc/tutorials/hooks.md b/ivette/src/dome/doc/tutorials/hooks.md deleted file mode 100644 index 00f2f0dd59b..00000000000 --- a/ivette/src/dome/doc/tutorials/hooks.md +++ /dev/null @@ -1,20 +0,0 @@ -<!-- Dome React Hooks ---> - -The **Dome** framework provides several [React Hooks](https://reactjs.org/docs/hooks-intro.html) -to ease your developpement process. Here is a summary of them. - -- [`useUpdate(evt)`](dome_.html#.useUpdate) to trigger re-rendering on **Dome** events; -- [`useEvent(emitter,event,callback)`](dome_.html#.useEvent) to trigger callbacks on events; -- [`useForceUpdate()`](dome_.html#.useForceUpdate) to trigger re-rendering on demand; -- [`useState(settings,defaultValue)`](dome_.html#.useState) - similar to `React.useState()` with optional persistent _window_ settings; -- [`useSwitch(settings,defaultValue)`](dome_.html#.useSwitch) - similar to `React.useState()` for boolean values with _window_ settings; -- [`useGlobalSetting(settings,defaultValue)`](dome_.html#.useGlobalSetting) - similar to `React.useState()` with optional persistent _global_ settings; -- [`useHistory(settings,defaultValue)`](dome_.html#.useHistory) - for managing histories -- [`useClock(period,initStart)`](dome_.html#.useClock) -returns start/stop clocks synchronized on period. -- [`useCommand()`](dome_.html#.useCommand) for working with different application instances. -- See also the [`Dome.State`](dome(renderer).State.html) and the associated hooks. diff --git a/ivette/src/dome/doc/tutorials/hotreload.md b/ivette/src/dome/doc/tutorials/hotreload.md deleted file mode 100644 index 283ae63281c..00000000000 --- a/ivette/src/dome/doc/tutorials/hotreload.md +++ /dev/null @@ -1,45 +0,0 @@ -<!-- Live Code Editing --> - -The **Dome** framework comes with live-editing facilities, provided by a -combination of -[Webpack Hot Module Reloading](https://webpack.js.org/concepts/hot-module-replacement) -and [React Hot Loader](http://gaearon.github.io/react-hot-loader). -This allows you to live edit your code and style sheets in real time while application -is running. This feature is only enabled in development mode, not in production mode -used when packaging the application for some platform. - -Hot reloading for **React** components is known to be a fragile feature and to -suffer from certain limitations. Typically, files that can trigger live updates -must be reachable from the `./src` directory, without traversing symbolic links. -Style sheets in `*.css` files can be live edited, and **React** components in -`*.js` files as well. Most **React** components can be live-edited, provided -they are defined in top-level variables or exported by modules. Generally, the -component states are preserved during live-editing. - -For live-editing to work properly, your source code must follow strict -configuration settings. These rules are enforced when using configuration files -and application entry points generated from **Dome** templates. Pay attention to -the provided comments in generated files when modifying them. - -By default, we suggest to install the **Dome** framework in the sub-directory `./dome` -of your project. Being outside `./src`, this normally prevents **Dome** files to -be live-edited. If you want to also live-edit the framework, you shall move the -`$(DOME)` directory inside your own `./src`. -In particular, you might install the framework with `DOME=src/dome` for instance. - -**State Management:** hot-reloading on **React** components preserves application -states _only_ when they are stored outside the reloaded module. This is the case -for local states maintained in **React** components, as they live in the virtual DOM. -However, for global application state stored in global variables of modules, -they simply vanish when a module is hot-reloaded. Worst, the virtual DOM will -be still bound to the _old_ versions of the modules. However, you usually don't -want to live-edit the global state of your application and mix new data with -old ones. A good practice is to separate files holding global state from files -implementing views. Hence, live-editing the views will not cause the global state -modules to reload, and views will stay in sync with your data. If you ever modify -the global state, you will have to reload the application window (`CmdOrCtrl-R`). - -**Versioning Note:** the framework currently sticks on `webpack` version 3 and -`react-hot-loader` version 3, because of limitations and issues when using -`electron-webpack` with most recent versions of those libraries. However, we -hope to be able to migrate to newer versions as soon as possible. diff --git a/ivette/src/dome/doc/tutorials/icons.md b/ivette/src/dome/doc/tutorials/icons.md deleted file mode 100644 index ee71eb82740..00000000000 --- a/ivette/src/dome/doc/tutorials/icons.md +++ /dev/null @@ -1,3 +0,0 @@ -<!-- Icon Gallery --> - -<!-- (Generated) --> diff --git a/ivette/src/dome/doc/tutorials/index.json b/ivette/src/dome/doc/tutorials/index.json deleted file mode 100644 index 981c5505336..00000000000 --- a/ivette/src/dome/doc/tutorials/index.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "quickstart": { "order": 1, "title": "Quick Start" }, - "application": { "order": 2, "title": "Application Design" }, - "development": { "order": 3, "title": "Application Development" }, - "hooks": { "order": 4, "title": "Custom React Hooks" }, - "hotreload": { "order": 5, "title": "Live Editing" }, - "styling": { "order": 7, "title": "Styling Components" }, - "icons": { "order": 8, "title": "Icon Gallery" }, - "glossary": { "order": 9, "title": "Glossary" } -} diff --git a/ivette/src/dome/doc/tutorials/quickstart.md b/ivette/src/dome/doc/tutorials/quickstart.md deleted file mode 100644 index 44d9925fdd1..00000000000 --- a/ivette/src/dome/doc/tutorials/quickstart.md +++ /dev/null @@ -1,26 +0,0 @@ -<!-- -------------------------------------------------------------------------- --> -<!-- --- Quick Start --- --> -<!-- -------------------------------------------------------------------------- --> - -We strongly recommand to use [**Yarn**](https://reactjs.org) -for installing the necessary Node packages and their dependencies. - -Then, prepare a directory for developing your application, and download -the Dome Application Framework into sub-directory `dome`. -You shall now setup a makefile for your application as follows: - -<pre> - # Makefile - include dome/template/makefile - all: dome-dev -</pre> - -Now, simply type `make` and all the necessary packages will be automatically -installed and configured. This can take a while for the very first installation. -You will be prompted for generating a default `package.json` file -if you do not have some already. - -Eventually, your application will start with -a « _Hello World_ » window. -Now, you can _live edit_ the generated `src/renderer/Application.js` which is the main entry point -of your application and see what happens into the main window. diff --git a/ivette/src/dome/doc/tutorials/styling.md b/ivette/src/dome/doc/tutorials/styling.md deleted file mode 100644 index 9074a9373f0..00000000000 --- a/ivette/src/dome/doc/tutorials/styling.md +++ /dev/null @@ -1,63 +0,0 @@ -<!-- Styling Components --> - -This tutorial explains how **Dome** style sheets are organized and how -to reuse them for styling your own components. Although modern styling -usually rely on _style preprocessors_ to leverage the complexity of -CSS style sheets development, the approach used here is based on separation -of concerns and multi-class styling. The advantage is that you can -develop your _own_ style sheets, while still being able -to re-use the existing classes provided by the framework. - -All CSS classes provided by **Dome** start with prefix `dome-` ; you shall not -use such a prefix when designing your own classes. Many class names are provided -with optional or mandatory variants. Typically: - -- `dome-<base>[-<a>,<b>,...]` describes class `dome-<base>` and its variants -`dome-<base>-<a>`, `dome-<base>-<b>` _etc_. - -- `dome-<name>-[<a>,<b>,...]` describes classes `dome-<name>-<a>`, `dome-<name>-<b>` _etc_. - -## Platform Context - -These classes can be used when writing selectors in order to style things -with respect to the target platform. The main window container is attributed -with one of the following class: - -- `dome-platform-[darwin,linux,windows]` derived from the `process.darwin` -global variable (**Node.js** environment). - -- `dome-window-[active|inactive]` depending on whether the main application window -has focus or not. - -## Color Palettes - -Attributing colors to graphical elements is often an issue, since a precise -hex variants shall be tuned depending on the surrounding context. However, -base colors are provided in public classes for several usages: - -- `dome-color-frame` background, foreground and borders for -window frames, which includes tool-bars, status-bars, tabs and such. -Those colors actually depend on the focus state of the main application window. - -- `dome-color-[dragzone|dragging]` for painting the background of a dragging -zone, typically a splitting rule. The `dragzone` variant is completely -transparent with a very transparent light gray when hovered. -The `dragging` variant is semi-transparent blended blue with light gray. -All these drag background effects are smoothly transitioned. - -## Text Properties - -- `dome-text-[label|title|descr]` for labels (_eg._ buttons, tabs, menu -entries), titles (larger labels) and descriptions (_eg._ tooltips). -Uses a sans-serif font, is non-selectable and truncated with an ellipsis. - -- `dome-text-[data|code]` for selectable text, typically input fields. -Uses a sans-serif font (for `data`) or monospace font (for `code`), -never wraps and is clipped when overflow. - -## Component Layout - -The entire application uses the `box-model` box-sizing property by default, -since it is usually much more consistent with nested `<div>` components. -Similarly, default margins and paddings are set to `0px` to avoid unwanted -messy background issues. -- GitLab