@synopackageland/ui 0.14.6 → 0.14.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,62 @@
1
+ # Button policy
2
+
3
+ DSM 7 draws two button shapes. A **capsule** belongs to the bar that closes a
4
+ window, dialog or form: OK / Cancel, Apply / Reset, a wizard's Next, a
5
+ confirmation's Delete. Every other button is a **tool button** with the 3px
6
+ control radius: toolbars, page headers, sections, rows, fields. The components
7
+ pick the shape from where a button sits; an App chooses only the variant.
8
+
9
+ ![Each case in the light theme](screenshots/button-policy-light.png)
10
+
11
+ Measured on DSM 7.4 (Control Panel, Package Center, File Station): every button
12
+ is 28px high. A footer capsule is at least 80px wide, 120px for the blue or red
13
+ one; a tool button sizes to its label with 13px each side. Colours and states
14
+ are in [dsm-native-metrics.md](dsm-native-metrics.md).
15
+
16
+ ## Where each button goes
17
+
18
+ | Place | Component | Shape | Variants |
19
+ | --- | --- | --- | --- |
20
+ | Dialog, sheet or wizard footer | `Dialog`, `Sheet`, `Wizard` `#footer` | capsule | Cancel `secondary`, then OK `primary` |
21
+ | Confirmation of a destructive action | `Dialog` `#footer` | capsule | Cancel `secondary`, then Delete `danger` |
22
+ | Form or window footer | `FormActions`, `AppActionBar`, `Footbar`, `Panel` `#fbar` | capsule | Reset `secondary`, then Apply `primary` |
23
+ | Notification | `Notification` `confirm` / `cancel` | capsule | Cancel `secondary`, then the action `primary` |
24
+ | Toolbar | `AppToolbar`, a row above a list | tool | `secondary`; `SplitButton` for Create and its variants |
25
+ | Page header | `PageHeader` `#actions` | tool | one refresh `IconButton` per page |
26
+ | Section or card | `SettingsSection` / `Card` body, `#actions`, `#footer` | tool | `secondary`; a Save / Cancel row there goes in `FormActions` |
27
+ | Beside a field | `InputGroup` | tool | `secondary` (Open, Copy, Test) |
28
+ | Row of a list or grid | `ListItem` `#actions`, an `actions` column | tool | `IconButton` with a `label` |
29
+ | Navigation, help, external page | `Link` | text link | not a button |
30
+
31
+ ## Rules
32
+
33
+ 1. A capsule only ends something: it closes a dialog, applies a form or moves a
34
+ wizard. An action that stays on the page, such as Disable this connection,
35
+ Open or Check again, is a tool button even in a section footer.
36
+ 2. One main action per footer: one `primary`, or one `danger` for a
37
+ destructive confirmation. The others are `secondary`.
38
+ 3. The main action goes last, at the right edge: Cancel then OK, Reset then
39
+ Apply. A footer is right-aligned, except `FormActions` in a page form, which
40
+ starts at the field edge.
41
+ 4. Toolbar and row actions are grey, Delete too. Red appears in the dialog that
42
+ confirms the deletion, not on the button that opens it.
43
+ 5. Inside a page, use `primary` only for the one step that unblocks the page,
44
+ such as Sign in in a callout; at most one per section.
45
+ 6. Keep the default size. `sm` and `lg` exist for dense rows and touch layouts;
46
+ neighbouring buttons share one size.
47
+ 7. A disabled button keeps its shape and place. Say why next to it.
48
+ 8. An icon-only action is an `IconButton` with a `label`; it shows as its
49
+ tooltip and names the button for screen readers.
50
+ 9. Labels are verbs, without a closing period: Apply, Disable this connection.
51
+
52
+ ## What the components do
53
+
54
+ - A Button takes its shape from the closest footer: inside `Dialog`, `Sheet`
55
+ and `Wizard` footers, `FormActions`, `AppActionBar`, `Footbar`, a `Panel`
56
+ `#fbar` or a `Notification` it is a capsule, everywhere else a tool button.
57
+ Set `kind="tool"` on one footer button to keep it a tool button (Help, say).
58
+ - In development, a Button warns in the console when `kind="action"` is set
59
+ outside a footer, when a footer has two main actions, or when the main action
60
+ is not last. Production builds do not check.
61
+
62
+ ![Each case in the dark theme, in a DSM window](screenshots/button-policy-dark.png)
@@ -15,8 +15,9 @@ These rules keep pages built from `@synopackageland/ui` consistent. The componen
15
15
 
16
16
  ## Actions
17
17
 
18
+ - [Button policy](button-policy.md) says which button goes where: its shape, variant and order.
18
19
  - Buttons that belong together sit in one row with an 8px gap: `FormActions` in a form, the `#footer` slot in a section or card.
19
- - Footer rows draw capsule `action` buttons without a `kind`: `FormActions`, `Footbar`, `AppActionBar`, and the footers of `Dialog`, `Wizard`, `Sheet`, `SettingsSection`, `Card` and `Panel` (`#fbar`). `kind="tool"` opts one button out. Header actions and content stay `tool` buttons.
20
+ - Only the bar that closes a dialog or form draws capsule `action` buttons, without a `kind`: `FormActions`, `Footbar`, `AppActionBar`, a `Notification`'s actions, and the footers of `Dialog`, `Wizard`, `Sheet` and `Panel` (`#fbar`), with the main action last. `kind="tool"` opts one button out. A `SettingsSection` or `Card` footer, header actions and content stay `tool` buttons; put a section's Save / Cancel in `FormActions`.
20
21
  - On a settings form longer than the window, `FormActions sticky` keeps Apply in view at the bottom over a divider. Do not write your own sticky footer.
21
22
  - Each page has one refresh, in the page header. Panels expose `refresh()` for it instead of their own button.
22
23
  - A disabled primary button keeps readable text. Put the reason next to it, such as "Enter the password to confirm."
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@synopackageland/ui",
3
- "version": "0.14.6",
3
+ "version": "0.14.7",
4
4
  "description": "Shared Vue 3 UI component library with a DSM 7 inspired application theme",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -15,6 +15,7 @@
15
15
  "README.md",
16
16
  "docs/adaptive-layout.md",
17
17
  "docs/app-local-modal.md",
18
+ "docs/button-policy.md",
18
19
  "docs/color-system.md",
19
20
  "docs/component-defaults-0.5.7.md",
20
21
  "docs/json-ui.md",