@besaitech/ng-design-system 0.0.44 → 0.0.46

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@besaitech/ng-design-system",
3
- "version": "0.0.44",
3
+ "version": "0.0.46",
4
4
  "publishConfig": {
5
5
  "registry": "https://registry.npmjs.org/",
6
6
  "access": "public"
package/themes/base.css CHANGED
@@ -53,6 +53,83 @@
53
53
 
54
54
  /* Typography — override in your app's own @theme if your brand uses a different face. */
55
55
  --font-sans: "Inter", "Segoe UI", system-ui, -apple-system, sans-serif;
56
+
57
+ /*
58
+ * Ambient decoration — the slow, breathing drift of the brand-tinted blobs behind the glass top bar,
59
+ * sidebar and gradient container. Registered here so `animate-sds-ambient` exists in any consuming app
60
+ * (the decorations are opt-in via [decorations] on sds-topbar / sds-sidebar / sds-shell). The wave is
61
+ * deliberately gentle — decoration must never pull the eye off content, and it respects reduced motion
62
+ * below.
63
+ */
64
+ --animate-sds-ambient: sds-ambient 14s ease-in-out infinite;
65
+
66
+ @keyframes sds-ambient {
67
+ 0%,
68
+ 100% {
69
+ opacity: 0.55;
70
+ transform: scale(1);
71
+ }
72
+ 50% {
73
+ opacity: 0.9;
74
+ transform: scale(1.08);
75
+ }
76
+ }
77
+ }
78
+
79
+ /*
80
+ * Dark mode is CLASS-based: the `.dark` class on <html> flips the theme, and SdsThemeService toggles it.
81
+ * This overrides Tailwind's default media-query `dark:` so an in-app switch (not just the OS setting) can
82
+ * drive it. Consuming apps get this for free by importing base.css.
83
+ */
84
+ @custom-variant dark (&:where(.dark, .dark *));
85
+
86
+ /*
87
+ * Dark palette. Only the NEUTRAL/semantic roles are redefined here — surfaces, ink, border, the accent
88
+ * tiles and status. Because every sds-* component names a role (bg-surface, text-ink, border-border…)
89
+ * rather than a colour, redefining the role under `.dark` re-themes the whole library at once, with no
90
+ * per-component `dark:` variants. The brand RAMP is theme-specific, so each brand file (saitech.css,
91
+ * belvigo.css) ships its own `.dark` ramp beside its light one.
92
+ *
93
+ * `html.dark` (element + class) outranks Tailwind's `:root`-scoped @theme defaults regardless of source
94
+ * order, so the flip is deterministic.
95
+ */
96
+ html.dark {
97
+ /*
98
+ * Neutrals / surfaces — a neutral near-black in the SAME zinc family as the grayscale brand ramp
99
+ * (brand-900 is #14141a). Deliberately NOT a navy: an earlier deep-blue palette read as blue/purple,
100
+ * especially under the brand-tinted glass and gradient washes. Zinc keeps the dark cohesive and clean.
101
+ */
102
+ --color-canvas: #09090b;
103
+ --color-surface: #18181b;
104
+ --color-muted: #202023;
105
+ --color-border: #2f2f34;
106
+ --color-ink: #f4f4f5;
107
+ --color-ink-soft: #a1a1aa;
108
+ --color-ink-faint: #71717a;
109
+
110
+ /* Accent icon-tiles — brighter foregrounds for contrast on dark, darkened soft backgrounds. */
111
+ --color-accent-blue: #6ea8fe;
112
+ --color-accent-blue-soft: #172a44;
113
+ --color-accent-green: #46d389;
114
+ --color-accent-green-soft: #123324;
115
+ --color-accent-amber: #f3c063;
116
+ --color-accent-amber-soft: #33270f;
117
+ --color-accent-red: #f2748c;
118
+ --color-accent-red-soft: #331722;
119
+ --color-accent-indigo: #a99bf5;
120
+ --color-accent-indigo-soft: #211b3d;
121
+
122
+ /* Status — nudged lighter so they read on the dark canvas. */
123
+ --color-success: #34d67e;
124
+ --color-warning: #f6c453;
125
+ --color-danger: #f2748c;
126
+ }
127
+
128
+ /* Honour a reader's reduced-motion setting: the ambient drift is decoration, so it simply stops. */
129
+ @media (prefers-reduced-motion: reduce) {
130
+ .animate-sds-ambient {
131
+ animation: none !important;
132
+ }
56
133
  }
57
134
 
58
135
  @layer base {
@@ -35,3 +35,22 @@
35
35
  --color-brand-900: #0a0a0b; /* sidebar background */
36
36
  --color-brand-950: #000000;
37
37
  }
38
+
39
+ /*
40
+ * Dark brand ramp — same contract as the light ramp above, flipped for a dark canvas. See the note in
41
+ * saitech.css: soft tints (50–200) go dark, 500 stays light enough to read as the active nav highlight,
42
+ * 600 is a mid chip that keeps white button text legible, and 900 is the dark sidebar rail.
43
+ */
44
+ html.dark {
45
+ --color-brand-50: #1c1c20;
46
+ --color-brand-100: #212127;
47
+ --color-brand-200: #2a2a31;
48
+ --color-brand-300: #3a3a42;
49
+ --color-brand-400: #52525b;
50
+ --color-brand-500: #6f6f7a; /* active nav highlight — dark enough for white label text to reach AA */
51
+ --color-brand-600: #3f3f46; /* primary button */
52
+ --color-brand-700: #2a2a31; /* glass top-bar edge */
53
+ --color-brand-800: #202024;
54
+ --color-brand-900: #14141a; /* sidebar rail background */
55
+ --color-brand-950: #000000;
56
+ }
@@ -26,3 +26,27 @@
26
26
  --color-brand-900: #0a0a0b; /* sidebar background */
27
27
  --color-brand-950: #000000;
28
28
  }
29
+
30
+ /*
31
+ * 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:
33
+ *
34
+ * 50/100/200 soft brand tints (chips, the glass bar's brand edge) — must go DARK, not stay near-white
35
+ * 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)
37
+ * 700 glass top-bar edge
38
+ * 900 sidebar rail background
39
+ */
40
+ 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 */
51
+ --color-brand-950: #000000;
52
+ }