@besaitech/ng-design-system 0.0.75 → 0.0.77

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.
package/index.d.ts CHANGED
@@ -1686,25 +1686,26 @@ declare class SdsBulkBar {
1686
1686
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<SdsBulkBar, "sds-bulk-bar", never, { "count": { "alias": "count"; "required": false; "isSignal": true; }; "countLabel": { "alias": "countLabel"; "required": false; "isSignal": true; }; "clearLabel": { "alias": "clearLabel"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; }, { "clear": "clear"; }, never, ["*"], true, never>;
1687
1687
  }
1688
1688
 
1689
- /** Whether the bar pins to the bottom of the scroll container (default) or sits in flow. */
1689
+ /** Whether the bar floats at the bottom of the scroll container (default) or sits in flow. */
1690
1690
  type SdsFormActionsPosition = 'sticky' | 'static';
1691
1691
  /**
1692
1692
  * The action bar at the foot of a form: Cancel, Save, and whatever commits the thing — projected as
1693
- * buttons, right-aligned, on a bordered strip that pins to the bottom of the scroll container so the
1694
- * save button stays in reach on a long editor.
1693
+ * buttons on a floating card that rides at the bottom of the scroll container, so the save button
1694
+ * stays in reach on a long editor.
1695
1695
  *
1696
1696
  * Project a destructive or secondary action with `sdsFormActionsStart` and it is pushed to the left,
1697
1697
  * away from the confirming buttons, which is the point: Delete should not sit a few pixels from Save.
1698
1698
  *
1699
- * Not {@link SdsBulkBar}, which is for a selection: that one hides itself at zero, says "N selected",
1700
- * carries a clear-selection button and is announced as a toolbar. A form footer is none of those, and
1701
- * dressing one up as the other costs a fake count and a screen reader that announces a save bar as
1702
- * bulk actions. This is a plain labelled `role="group"` — not a toolbar, because the buttons belong in
1703
- * the form's normal tab order and a toolbar role tells a screen-reader user to expect arrow keys.
1699
+ * Deliberately the same chrome as {@link SdsBulkBar} — rounded card, full border, solid surface,
1700
+ * `shadow-xl`, floating clear of the bottom edge rather than welded to it, same entrance. The two are
1701
+ * the app's only bars that hover over scrolling content, and a form footer that looked like a
1702
+ * different species from the bulk bar would read as a different kind of thing. What they are not is
1703
+ * the same semantics: that one is a `role="toolbar"` for a selection, announcing "N selected" and
1704
+ * hiding itself at zero. This is a plain labelled `role="group"`, because these buttons belong in the
1705
+ * form's normal tab order and a toolbar role tells a screen-reader user to expect arrow keys.
1704
1706
  *
1705
- * The bar spans its container and carries its own horizontal padding. To let it bleed past a padded
1706
- * container's edge, put the matching negative margin on the host — the host is a block element:
1707
- * `<sds-form-actions class="-mx-4 md:-mx-6">`.
1707
+ * It floats, so do not bleed it past its container with negative margins the way a flush strip wants:
1708
+ * the rounded corners and the shadow need the inset to read as a card.
1708
1709
  *
1709
1710
  * @example
1710
1711
  * <sds-form-actions>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@besaitech/ng-design-system",
3
- "version": "0.0.75",
3
+ "version": "0.0.77",
4
4
  "publishConfig": {
5
5
  "registry": "https://registry.npmjs.org/",
6
6
  "access": "public"
@@ -1,52 +1,68 @@
1
1
  /*
2
- * Saitech theme — the library's original brand blues, and its default.
2
+ * Saitech theme — the SAITECH brand teal, and the library's default.
3
3
  *
4
- * This file is the DEFAULT look every consumer got before themes existed, extracted verbatim so that
5
- * adding a second brand could not change the first one. If you are looking for the values that used to
6
- * live in the showcase's own `styles.css`, they are here.
4
+ * This file used to hold a monochrome zinc ramp under a comment calling it "brand blues". It was
5
+ * neither: it was the library's pre-theme default, extracted verbatim so that adding a second brand
6
+ * could not change the first. SAITECH's actual brand colour is the teal the public site at
7
+ * saitech.be is built on, so that is what this now carries.
7
8
  *
8
9
  * Import AFTER `@import "tailwindcss"` — Tailwind v4 processes `@theme` in imported files, and later
9
10
  * declarations win:
10
11
  *
11
12
  * @import "tailwindcss";
12
13
  * @source "../node_modules/@besaitech/ng-design-system";
14
+ * @import "@besaitech/ng-design-system/themes/base.css";
13
15
  * @import "@besaitech/ng-design-system/themes/saitech.css";
16
+ *
17
+ * WHY THE STOPS ARE NOT saitech.be's RAMP VERBATIM
18
+ * The public site uses Tailwind's teal, where 500 is #14b8a6 and 600 is #0d9488. Those are right for
19
+ * a marketing accent, which is mostly thin strokes, small text and dark-on-light buttons. They are
20
+ * wrong here, because this library hardcodes `text-white` on the brand fills — `bg-brand-600
21
+ * text-white` is the primary button, the selected calendar day and the active nav item, and
22
+ * `bg-brand-500 text-white` is the active nav item on a surface. Against white:
23
+ *
24
+ * #14b8a6 2.49:1 #0d9488 3.74:1 — both fail WCAG AA (4.5:1)
25
+ *
26
+ * So the ramp is the same hue, shifted darker at the interactive pins: 500 takes the value the
27
+ * public site calls 700, and everything below follows. Every stop that carries white text clears AA
28
+ * with room to spare. Keep it that way — if a stop here is ever lightened, check it against white
29
+ * first, because nothing in the build will catch it.
14
30
  */
15
31
  @theme {
16
- /* Brand blues */
17
- --color-brand-50: #fafafa;
18
- --color-brand-100: #f4f4f5;
19
- --color-brand-200: #e4e4e7;
20
- --color-brand-300: #d4d4d8;
21
- --color-brand-400: #a1a1aa;
22
- --color-brand-500: #52525b; /* active nav highlight */
23
- --color-brand-600: #27272a; /* primary button */
24
- --color-brand-700: #18181b; /* top bar base */
25
- --color-brand-800: #131316;
26
- --color-brand-900: #0a0a0b; /* sidebar background */
27
- --color-brand-950: #000000;
32
+ /* Brand teal */
33
+ --color-brand-50: #f0fdfa;
34
+ --color-brand-100: #ccfbf1;
35
+ --color-brand-200: #99f6e4;
36
+ --color-brand-300: #5eead4;
37
+ --color-brand-400: #2dd4bf;
38
+ --color-brand-500: #0f766e; /* active nav highlight — 5.47:1 on white */
39
+ --color-brand-600: #115e59; /* primary button — 7.58:1 on white */
40
+ --color-brand-700: #134e4a; /* top bar base */
41
+ --color-brand-800: #0f3c39;
42
+ --color-brand-900: #0a2b29; /* sidebar background — a near-black with the brand cast */
43
+ --color-brand-950: #04201e;
28
44
  }
29
45
 
30
46
  /*
31
47
  * Dark brand ramp. The base.css `.dark` block already flips the neutral roles; this flips the eleven
32
- * brand steps so the monochrome ramp stays legible on a dark canvas. The pins keep their meaning:
48
+ * brand steps so the ramp stays legible on a dark canvas. The pins keep their meaning:
33
49
  *
34
50
  * 50/100/200 soft brand tints (chips, the glass bar's brand edge) — must go DARK, not stay near-white
35
51
  * 500 active nav highlight — light enough to read as "selected" on the dark rail/surface
36
- * 600 primary button — a mid chip that keeps white label text readable (~9:1)
52
+ * 600 primary button — a mid chip that keeps white label text readable
37
53
  * 700 glass top-bar edge
38
54
  * 900 sidebar rail background
39
55
  */
40
56
  html.dark {
41
- --color-brand-50: #1c1c20;
42
- --color-brand-100: #212127;
43
- --color-brand-200: #2a2a31;
44
- --color-brand-300: #3a3a42;
45
- --color-brand-400: #52525b;
46
- --color-brand-500: #6f6f7a; /* active nav highlight — dark enough for white label text to reach AA */
47
- --color-brand-600: #3f3f46; /* primary button */
48
- --color-brand-700: #2a2a31; /* glass top-bar edge */
49
- --color-brand-800: #202024;
50
- --color-brand-900: #14141a; /* sidebar rail background */
57
+ --color-brand-50: #0c2422;
58
+ --color-brand-100: #0f2e2b;
59
+ --color-brand-200: #13403c;
60
+ --color-brand-300: #1a564f;
61
+ --color-brand-400: #1d6b62;
62
+ --color-brand-500: #237a6f; /* active nav highlight — 5.14:1 on white, 3.27:1 against the 900 rail */
63
+ --color-brand-600: #1a5f58; /* primary button — 7.44:1 on white */
64
+ --color-brand-700: #14403c; /* glass top-bar edge */
65
+ --color-brand-800: #102f2d;
66
+ --color-brand-900: #0a211f; /* sidebar rail background */
51
67
  --color-brand-950: #000000;
52
68
  }