nexus-shared 3.0.0 → 3.1.0

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.
Files changed (121) hide show
  1. package/CHANGELOG.md +446 -262
  2. package/LICENSE +21 -21
  3. package/README.md +1084 -1000
  4. package/dist/Client.Index.d.ts +3 -0
  5. package/dist/Client.Index.js +3 -0
  6. package/dist/Components/Chats/ChatParts.d.ts +2 -2
  7. package/dist/Components/Chats/ChatParts.js +3 -7
  8. package/dist/Components/Chats/ChatThread.js +3 -3
  9. package/dist/Components/Documents/Button.d.ts +6 -1
  10. package/dist/Components/Documents/Button.js +2 -2
  11. package/dist/Components/Documents/Menu.js +21 -9
  12. package/dist/Components/Documents/SplitButton.d.ts +3 -1
  13. package/dist/Components/Documents/SplitButton.js +7 -5
  14. package/dist/Components/Documents/TabButtons.d.ts +5 -2
  15. package/dist/Components/Documents/TabButtons.js +2 -2
  16. package/dist/Components/Forms/ApiForm.d.ts +1 -1
  17. package/dist/Components/Forms/ApiForm.js +1 -1
  18. package/dist/Components/Forms/Crud.js +177 -58
  19. package/dist/Components/Forms/CrudParts.d.ts +5 -1
  20. package/dist/Components/Forms/CrudParts.js +37 -5
  21. package/dist/Components/Forms/ExcelImport.d.ts +23 -7
  22. package/dist/Components/Forms/ExcelImport.js +189 -60
  23. package/dist/Components/Forms/Form.js +5 -13
  24. package/dist/Components/Forms/SubmitForm.d.ts +11 -2
  25. package/dist/Components/Forms/SubmitForm.js +23 -12
  26. package/dist/Components/Inputs/DropdownParts.d.ts +1 -1
  27. package/dist/Components/Inputs/DropdownParts.js +4 -6
  28. package/dist/Components/Inputs/NumberBox.js +24 -2
  29. package/dist/Components/Inputs/RowsInput.js +2 -2
  30. package/dist/Components/Inputs/Slider.js +4 -1
  31. package/dist/Components/Inputs/TabularForm.js +42 -10
  32. package/dist/Components/Inputs/TimePanel.js +4 -3
  33. package/dist/Components/Layouts/Popup.js +1 -4
  34. package/dist/Components/Layouts/ThemePicker.d.ts +20 -3
  35. package/dist/Components/Layouts/ThemePicker.js +77 -6
  36. package/dist/Components/Layouts/ThemeScript.d.ts +4 -2
  37. package/dist/Components/Layouts/ThemeScript.js +4 -2
  38. package/dist/Components/Layouts/ThemeSwitcher.d.ts +6 -3
  39. package/dist/Components/Layouts/ThemeSwitcher.js +9 -8
  40. package/dist/Components/Viewers/Avatar.d.ts +21 -0
  41. package/dist/Components/Viewers/Avatar.js +21 -0
  42. package/dist/Components/Viewers/DataTable.js +192 -44
  43. package/dist/Components/Viewers/DataTableColumns.d.ts +7 -3
  44. package/dist/Components/Viewers/DataTableColumns.js +25 -68
  45. package/dist/Components/Viewers/DataTableFilters.d.ts +21 -0
  46. package/dist/Components/Viewers/DataTableFilters.js +68 -0
  47. package/dist/Components/Viewers/DataTableParts.d.ts +2 -2
  48. package/dist/Components/Viewers/DataTableParts.js +3 -3
  49. package/dist/Helpers/AnimationHelpers.d.ts +11 -0
  50. package/dist/Helpers/AnimationHelpers.js +20 -2
  51. package/dist/Helpers/CrudBackend.d.ts +7 -4
  52. package/dist/Helpers/CrudBackend.js +4 -2
  53. package/dist/Helpers/ExcelBackend.d.ts +3 -3
  54. package/dist/Helpers/ExcelBackend.js +8 -2
  55. package/dist/Helpers/ExcelHelpers.d.ts +36 -8
  56. package/dist/Helpers/ExcelHelpers.js +55 -13
  57. package/dist/Helpers/FormStore.d.ts +9 -5
  58. package/dist/Helpers/FormStore.js +25 -5
  59. package/dist/Helpers/MessageBuilder.js +1 -0
  60. package/dist/Helpers/NumberHelpers.d.ts +7 -1
  61. package/dist/Helpers/NumberHelpers.js +41 -3
  62. package/dist/Helpers/PopoverHelpers.d.ts +17 -5
  63. package/dist/Helpers/PopoverHelpers.js +52 -17
  64. package/dist/Helpers/PopoverHooks.d.ts +24 -0
  65. package/dist/Helpers/PopoverHooks.js +62 -0
  66. package/dist/Helpers/RowsStore.d.ts +7 -2
  67. package/dist/Helpers/RowsStore.js +15 -3
  68. package/dist/Helpers/TableExport.js +12 -12
  69. package/dist/Helpers/TableFilters.d.ts +25 -0
  70. package/dist/Helpers/TableFilters.js +162 -0
  71. package/dist/Helpers/TableHelpers.d.ts +6 -3
  72. package/dist/Helpers/TableHelpers.js +8 -4
  73. package/dist/Helpers/TableStore.d.ts +11 -3
  74. package/dist/Helpers/TableStore.js +16 -5
  75. package/dist/Helpers/ThemeHelpers.d.ts +21 -4
  76. package/dist/Helpers/ThemeHelpers.js +46 -9
  77. package/dist/Helpers/UserPreferences.d.ts +14 -0
  78. package/dist/Helpers/UserPreferences.js +99 -0
  79. package/dist/Interfaces/CrudInterfaces.d.ts +20 -1
  80. package/dist/Interfaces/ExcelInterfaces.d.ts +12 -0
  81. package/dist/Interfaces/FormInterfaces.d.ts +33 -5
  82. package/dist/Interfaces/PreferenceInterfaces.d.ts +43 -0
  83. package/dist/Interfaces/PreferenceInterfaces.js +28 -0
  84. package/dist/Interfaces/TableInterfaces.d.ts +59 -12
  85. package/dist/Interfaces/ThemeInterfaces.d.ts +25 -0
  86. package/dist/Interfaces/ThemeInterfaces.js +15 -0
  87. package/dist/Services/ExcelApi.d.ts +3 -1
  88. package/dist/Services/ExcelApi.js +1 -1
  89. package/dist/Services/ThemeService.d.ts +18 -2
  90. package/dist/Services/ThemeService.js +80 -16
  91. package/dist/Shared.Index.d.ts +2 -0
  92. package/dist/Shared.Index.js +2 -0
  93. package/package.json +85 -85
  94. package/src/Styles/Nexus.Avatar.css +79 -0
  95. package/src/Styles/Nexus.Base.css +117 -70
  96. package/src/Styles/Nexus.Button.css +180 -153
  97. package/src/Styles/Nexus.Calendar.css +273 -275
  98. package/src/Styles/Nexus.Chat.css +1443 -1489
  99. package/src/Styles/Nexus.Choice.css +343 -345
  100. package/src/Styles/Nexus.Crud.css +168 -161
  101. package/src/Styles/Nexus.DateTime.css +81 -81
  102. package/src/Styles/Nexus.Dropdown.css +725 -774
  103. package/src/Styles/Nexus.Editor.css +295 -297
  104. package/src/Styles/Nexus.Excel.css +389 -370
  105. package/src/Styles/Nexus.Form.css +279 -321
  106. package/src/Styles/Nexus.Index.css +37 -36
  107. package/src/Styles/Nexus.Input.css +602 -637
  108. package/src/Styles/Nexus.Markdown.css +237 -265
  109. package/src/Styles/Nexus.Menu.css +237 -259
  110. package/src/Styles/Nexus.Popup.css +724 -731
  111. package/src/Styles/Nexus.RichText.css +2 -32
  112. package/src/Styles/Nexus.Rows.css +637 -596
  113. package/src/Styles/Nexus.Slider.css +276 -278
  114. package/src/Styles/Nexus.Tab.Buttons.css +432 -419
  115. package/src/Styles/Nexus.Table.css +1386 -1296
  116. package/src/Styles/Nexus.Theme.Picker.css +286 -232
  117. package/src/Styles/Nexus.Themes.css +194 -194
  118. package/src/Styles/Nexus.Time.css +144 -147
  119. package/src/Styles/Nexus.Toast.css +263 -265
  120. package/src/Styles/Nexus.Tokens.css +89 -72
  121. package/src/Styles/Nexus.Tree.css +431 -435
@@ -1,194 +1,194 @@
1
- /*
2
- * Color themes. Each sets its base palette once per color as light-dark(light, dark); the page's color-scheme
3
- * (light, dark, or the system setting) picks the side. Hover colors, soft backgrounds, and the focus ring are
4
- * derived from these in Nexus.Tokens.css.
5
- *
6
- * Colors follow each theme's official palette, darkened or lightened where needed to meet WCAG AA contrast.
7
- * --nx-primary and --nx-danger are the accent as text and lines (light in dark mode, for contrast on dark panels);
8
- * --nx-primary-solid and --nx-danger-solid are the same hue as a fill behind white text (buttons, selected days,
9
- * checks), a darker shade in dark mode. --nx-primary-text and --nx-danger-text sit on the solid fills.
10
- * After changing a color, run: npm run check:themes
11
- *
12
- * A new theme is one more block with its own data-nx-theme value, added to NEXUS_THEMES or passed to the theme components.
13
- */
14
- @layer nexus.themes {
15
- /* Nexus: neutral grays with a confident blue. The default. */
16
- :root,
17
- [data-nx-theme="nexus"] {
18
- --nx-bg: light-dark(#f5f6f8, #0f1115);
19
- --nx-surface: light-dark(#ffffff, #171a20);
20
- --nx-surface-2: light-dark(#f0f2f5, #1e222a);
21
- --nx-surface-hover: light-dark(#e9ecf1, #262b35);
22
- --nx-border: light-dark(#dde1e7, #2c323d);
23
- --nx-border-strong: light-dark(#c3cad4, #3d4552);
24
- --nx-text: light-dark(#171c26, #e6e9ef);
25
- --nx-text-muted: light-dark(#5a6375, #a1a9b7);
26
- --nx-text-subtle: light-dark(#8b93a2, #6f7888);
27
- --nx-primary: light-dark(#1c5cea, #4f8fff);
28
- --nx-primary-solid: light-dark(#1c5cea, #3270dd);
29
- --nx-primary-text: light-dark(#ffffff, #ffffff);
30
- --nx-danger: light-dark(#c5291d, #f26b5e);
31
- --nx-danger-solid: light-dark(#c5291d, #cb473d);
32
- --nx-danger-text: light-dark(#ffffff, #ffffff);
33
- --nx-success: light-dark(#147739, #4cc27a);
34
- --nx-warning: light-dark(#b34608, #f2a54a);
35
- --nx-info: light-dark(#0b6aa2, #5bb3e6);
36
- }
37
-
38
- /* GitHub: Primer grays with GitHub green. */
39
- [data-nx-theme="github"] {
40
- --nx-bg: light-dark(#f6f8fa, #010409);
41
- --nx-surface: light-dark(#ffffff, #0d1117);
42
- --nx-surface-2: light-dark(#f6f8fa, #151b23);
43
- --nx-surface-hover: light-dark(#eef1f4, #212830);
44
- --nx-border: light-dark(#d1d9e0, #3d444d);
45
- --nx-border-strong: light-dark(#b1bac4, #656c76);
46
- --nx-text: light-dark(#1f2328, #f0f6fc);
47
- --nx-text-muted: light-dark(#59636e, #9198a1);
48
- --nx-text-subtle: light-dark(#818b98, #6e7681);
49
- --nx-primary: light-dark(#1b7736, #3fb950);
50
- --nx-primary-solid: light-dark(#1b7736, #388441);
51
- --nx-primary-text: light-dark(#ffffff, #ffffff);
52
- --nx-danger: light-dark(#c8212d, #f85149);
53
- --nx-danger-solid: light-dark(#c8212d, #db3330);
54
- --nx-danger-text: light-dark(#ffffff, #ffffff);
55
- --nx-success: light-dark(#197934, #3fb950);
56
- --nx-warning: light-dark(#8d5e00, #d29922);
57
- --nx-info: light-dark(#0964d0, #4493f8);
58
- }
59
-
60
- /* Nord: arctic, north-bluish calm. */
61
- [data-nx-theme="nord"] {
62
- --nx-bg: light-dark(#e5e9f0, #242933);
63
- --nx-surface: light-dark(#eceff4, #2e3440);
64
- --nx-surface-2: light-dark(#e5e9f0, #3b4252);
65
- --nx-surface-hover: light-dark(#d8dee9, #434c5e);
66
- --nx-border: light-dark(#d8dee9, #434c5e);
67
- --nx-border-strong: light-dark(#b8c2d3, #4c566a);
68
- --nx-text: light-dark(#2e3440, #eceff4);
69
- --nx-text-muted: light-dark(#4c566a, #b9c2d0);
70
- --nx-text-subtle: light-dark(#7b88a1, #7b88a1);
71
- --nx-primary: light-dark(#446184, #88c0d0);
72
- --nx-primary-solid: light-dark(#446184, #4b717c);
73
- --nx-primary-text: light-dark(#eceff4, #eceff4);
74
- --nx-danger: light-dark(#9e4049, #dba6ab);
75
- --nx-danger-solid: light-dark(#9e4049, #8e5e63);
76
- --nx-danger-text: light-dark(#eceff4, #eceff4);
77
- --nx-success: light-dark(#4e6639, #a3be8c);
78
- --nx-warning: light-dark(#954931, #ebcb8b);
79
- --nx-info: light-dark(#406283, #9cb5ce);
80
- }
81
-
82
- /* Dracula: the dark purple classic, with its Alucard palette for light. */
83
- [data-nx-theme="dracula"] {
84
- --nx-bg: light-dark(#f3eed9, #21222c);
85
- --nx-surface: light-dark(#fffbeb, #282a36);
86
- --nx-surface-2: light-dark(#f7f1dc, #303241);
87
- --nx-surface-hover: light-dark(#efe8cf, #44475a);
88
- --nx-border: light-dark(#e4dcc0, #44475a);
89
- --nx-border-strong: light-dark(#cfc49f, #6272a4);
90
- --nx-text: light-dark(#1f1f1f, #f8f8f2);
91
- --nx-text-muted: light-dark(#635d97, #c5c8d8);
92
- --nx-text-subtle: light-dark(#8e89ae, #6272a4);
93
- --nx-primary: light-dark(#644ac9, #bd93f9);
94
- --nx-primary-solid: light-dark(#644ac9, #8a60c1);
95
- --nx-primary-text: light-dark(#ffffff, #ffffff);
96
- --nx-danger: light-dark(#ba3527, #ff7b7b);
97
- --nx-danger-solid: light-dark(#ba3527, #c8494d);
98
- --nx-danger-text: light-dark(#ffffff, #ffffff);
99
- --nx-success: light-dark(#14710a, #50fa7b);
100
- --nx-warning: light-dark(#a34d14, #ffb86c);
101
- --nx-info: light-dark(#036a96, #8be9fd);
102
- }
103
-
104
- /* Solarized: warm cream or deep teal, with precise accents. */
105
- [data-nx-theme="solarized"] {
106
- --nx-bg: light-dark(#eee8d5, #00212b);
107
- --nx-surface: light-dark(#fdf6e3, #002b36);
108
- --nx-surface-2: light-dark(#f5efdc, #073642);
109
- --nx-surface-hover: light-dark(#eee8d5, #0b4453);
110
- --nx-border: light-dark(#e4ddc8, #0d3f4c);
111
- --nx-border-strong: light-dark(#cdc5ab, #2a5561);
112
- --nx-text: light-dark(#073642, #eee8d5);
113
- --nx-text-muted: light-dark(#566b72, #93a1a1);
114
- --nx-text-subtle: light-dark(#809294, #657b83);
115
- --nx-primary: light-dark(#1c679c, #55a7e0);
116
- --nx-primary-solid: light-dark(#1c679c, #247bb2);
117
- --nx-primary-text: light-dark(#ffffff, #ffffff);
118
- --nx-danger: light-dark(#bd2320, #e9807e);
119
- --nx-danger-solid: light-dark(#bd2320, #b95555);
120
- --nx-danger-text: light-dark(#ffffff, #ffffff);
121
- --nx-success: light-dark(#5b6900, #92a800);
122
- --nx-warning: light-dark(#7d5e00, #c69700);
123
- --nx-info: light-dark(#1d6e68, #2fb3a9);
124
- }
125
-
126
- /* Catppuccin: soothing pastels, Latte for light and Mocha for dark. */
127
- [data-nx-theme="catppuccin"] {
128
- --nx-bg: light-dark(#e6e9ef, #11111b);
129
- --nx-surface: light-dark(#eff1f5, #1e1e2e);
130
- --nx-surface-2: light-dark(#e6e9ef, #313244);
131
- --nx-surface-hover: light-dark(#dce0e8, #45475a);
132
- --nx-border: light-dark(#ccd0da, #45475a);
133
- --nx-border-strong: light-dark(#acb0be, #585b70);
134
- --nx-text: light-dark(#42455c, #dce2f7);
135
- --nx-text-muted: light-dark(#65687d, #a6adc8);
136
- --nx-text-subtle: light-dark(#868a9c, #7f849c);
137
- --nx-primary: light-dark(#7a21ed, #cba6f7);
138
- --nx-primary-solid: light-dark(#7a21ed, #8965b1);
139
- --nx-primary-text: light-dark(#ffffff, #ffffff);
140
- --nx-danger: light-dark(#ba0d33, #f38ba8);
141
- --nx-danger-solid: light-dark(#ba0d33, #b75573);
142
- --nx-danger-text: light-dark(#ffffff, #ffffff);
143
- --nx-success: light-dark(#2c6e1d, #a6e3a1);
144
- --nx-warning: light-dark(#875612, #f9e2af);
145
- --nx-info: light-dark(#0a52e0, #89b4fa);
146
- }
147
-
148
- /* Rosé Pine: muted pine, iris, and rose; Dawn for light. */
149
- [data-nx-theme="rose-pine"] {
150
- --nx-bg: light-dark(#faf4ed, #191724);
151
- --nx-surface: light-dark(#fffaf3, #1f1d2e);
152
- --nx-surface-2: light-dark(#f2e9e1, #26233a);
153
- --nx-surface-hover: light-dark(#ebe2da, #2a2740);
154
- --nx-border: light-dark(#dfdad9, #403d52);
155
- --nx-border-strong: light-dark(#cecacd, #524f67);
156
- --nx-text: light-dark(#494565, #e0def4);
157
- --nx-text-muted: light-dark(#6a6683, #908caa);
158
- --nx-text-subtle: light-dark(#948fa2, #6e6a86);
159
- --nx-primary: light-dark(#745c8f, #c4a7e7);
160
- --nx-primary-solid: light-dark(#745c8f, #8166a1);
161
- --nx-primary-text: light-dark(#fffaf3, #fffaf3);
162
- --nx-danger: light-dark(#9d4c63, #eb6f92);
163
- --nx-danger-solid: light-dark(#9d4c63, #bf476c);
164
- --nx-danger-text: light-dark(#fffaf3, #fffaf3);
165
- --nx-success: light-dark(#286983, #9ccfd8);
166
- --nx-warning: light-dark(#90590f, #f6c177);
167
- --nx-info: light-dark(#406d76, #4da0c2);
168
- }
169
-
170
- /* Browsers without light-dark() (before 2024) get the Nexus light palette. */
171
- @supports not (color: light-dark(#fff, #000)) {
172
- :root,
173
- [data-nx-theme] {
174
- --nx-bg: #f5f6f8;
175
- --nx-surface: #ffffff;
176
- --nx-surface-2: #f0f2f5;
177
- --nx-surface-hover: #e9ecf1;
178
- --nx-border: #dde1e7;
179
- --nx-border-strong: #c3cad4;
180
- --nx-text: #171c26;
181
- --nx-text-muted: #5a6375;
182
- --nx-text-subtle: #8b93a2;
183
- --nx-primary: #1c5cea;
184
- --nx-primary-solid: #1c5cea;
185
- --nx-primary-text: #ffffff;
186
- --nx-danger: #c5291d;
187
- --nx-danger-solid: #c5291d;
188
- --nx-danger-text: #ffffff;
189
- --nx-success: #147739;
190
- --nx-warning: #b34608;
191
- --nx-info: #0b6aa2;
192
- }
193
- }
194
- }
1
+ /*
2
+ * Color themes. Each sets its base palette once per color as light-dark(light, dark); the page's color-scheme
3
+ * (light, dark, or the system setting) picks the side. Hover colors, soft backgrounds, and the focus ring are
4
+ * derived from these in Nexus.Tokens.css.
5
+ *
6
+ * Colors follow each theme's official palette, darkened or lightened where needed to meet WCAG AA contrast.
7
+ * --nx-primary and --nx-danger are the accent as text and lines (light in dark mode, for contrast on dark panels);
8
+ * --nx-primary-solid and --nx-danger-solid are the same hue as a fill behind white text (buttons, selected days,
9
+ * checks), a darker shade in dark mode. --nx-primary-text and --nx-danger-text sit on the solid fills.
10
+ * After changing a color, run: npm run check:themes
11
+ *
12
+ * A new theme is one more block with its own data-nx-theme value, added to NEXUS_THEMES or passed to the theme components.
13
+ */
14
+ @layer nexus.themes {
15
+ /* Nexus: neutral grays with a confident blue. The default. */
16
+ :root,
17
+ [data-nx-theme="nexus"] {
18
+ --nx-bg: light-dark(#f5f6f8, #0f1115);
19
+ --nx-surface: light-dark(#ffffff, #171a20);
20
+ --nx-surface-2: light-dark(#f0f2f5, #1e222a);
21
+ --nx-surface-hover: light-dark(#e9ecf1, #262b35);
22
+ --nx-border: light-dark(#dde1e7, #2c323d);
23
+ --nx-border-strong: light-dark(#c3cad4, #3d4552);
24
+ --nx-text: light-dark(#171c26, #e6e9ef);
25
+ --nx-text-muted: light-dark(#5a6375, #a1a9b7);
26
+ --nx-text-subtle: light-dark(#8b93a2, #6f7888);
27
+ --nx-primary: light-dark(#1c5cea, #4f8fff);
28
+ --nx-primary-solid: light-dark(#1c5cea, #3270dd);
29
+ --nx-primary-text: light-dark(#ffffff, #ffffff);
30
+ --nx-danger: light-dark(#c5291d, #f26b5e);
31
+ --nx-danger-solid: light-dark(#c5291d, #cb473d);
32
+ --nx-danger-text: light-dark(#ffffff, #ffffff);
33
+ --nx-success: light-dark(#147739, #4cc27a);
34
+ --nx-warning: light-dark(#b34608, #f2a54a);
35
+ --nx-info: light-dark(#0b6aa2, #5bb3e6);
36
+ }
37
+
38
+ /* GitHub: Primer grays with GitHub green. */
39
+ [data-nx-theme="github"] {
40
+ --nx-bg: light-dark(#f6f8fa, #010409);
41
+ --nx-surface: light-dark(#ffffff, #0d1117);
42
+ --nx-surface-2: light-dark(#f6f8fa, #151b23);
43
+ --nx-surface-hover: light-dark(#eef1f4, #212830);
44
+ --nx-border: light-dark(#d1d9e0, #3d444d);
45
+ --nx-border-strong: light-dark(#b1bac4, #656c76);
46
+ --nx-text: light-dark(#1f2328, #f0f6fc);
47
+ --nx-text-muted: light-dark(#59636e, #9198a1);
48
+ --nx-text-subtle: light-dark(#818b98, #6e7681);
49
+ --nx-primary: light-dark(#1b7736, #3fb950);
50
+ --nx-primary-solid: light-dark(#1b7736, #388441);
51
+ --nx-primary-text: light-dark(#ffffff, #ffffff);
52
+ --nx-danger: light-dark(#c8212d, #f85149);
53
+ --nx-danger-solid: light-dark(#c8212d, #db3330);
54
+ --nx-danger-text: light-dark(#ffffff, #ffffff);
55
+ --nx-success: light-dark(#197934, #3fb950);
56
+ --nx-warning: light-dark(#8d5e00, #d29922);
57
+ --nx-info: light-dark(#0964d0, #4493f8);
58
+ }
59
+
60
+ /* Nord: arctic, north-bluish calm. */
61
+ [data-nx-theme="nord"] {
62
+ --nx-bg: light-dark(#e5e9f0, #242933);
63
+ --nx-surface: light-dark(#eceff4, #2e3440);
64
+ --nx-surface-2: light-dark(#e5e9f0, #3b4252);
65
+ --nx-surface-hover: light-dark(#d8dee9, #434c5e);
66
+ --nx-border: light-dark(#d8dee9, #434c5e);
67
+ --nx-border-strong: light-dark(#b8c2d3, #4c566a);
68
+ --nx-text: light-dark(#2e3440, #eceff4);
69
+ --nx-text-muted: light-dark(#4c566a, #b9c2d0);
70
+ --nx-text-subtle: light-dark(#7b88a1, #7b88a1);
71
+ --nx-primary: light-dark(#446184, #88c0d0);
72
+ --nx-primary-solid: light-dark(#446184, #4b717c);
73
+ --nx-primary-text: light-dark(#eceff4, #eceff4);
74
+ --nx-danger: light-dark(#9e4049, #dba6ab);
75
+ --nx-danger-solid: light-dark(#9e4049, #8e5e63);
76
+ --nx-danger-text: light-dark(#eceff4, #eceff4);
77
+ --nx-success: light-dark(#4e6639, #a3be8c);
78
+ --nx-warning: light-dark(#954931, #ebcb8b);
79
+ --nx-info: light-dark(#406283, #9cb5ce);
80
+ }
81
+
82
+ /* Dracula: the dark purple classic, with its Alucard palette for light. */
83
+ [data-nx-theme="dracula"] {
84
+ --nx-bg: light-dark(#f3eed9, #21222c);
85
+ --nx-surface: light-dark(#fffbeb, #282a36);
86
+ --nx-surface-2: light-dark(#f7f1dc, #303241);
87
+ --nx-surface-hover: light-dark(#efe8cf, #44475a);
88
+ --nx-border: light-dark(#e4dcc0, #44475a);
89
+ --nx-border-strong: light-dark(#cfc49f, #6272a4);
90
+ --nx-text: light-dark(#1f1f1f, #f8f8f2);
91
+ --nx-text-muted: light-dark(#635d97, #c5c8d8);
92
+ --nx-text-subtle: light-dark(#8e89ae, #6272a4);
93
+ --nx-primary: light-dark(#644ac9, #bd93f9);
94
+ --nx-primary-solid: light-dark(#644ac9, #8a60c1);
95
+ --nx-primary-text: light-dark(#ffffff, #ffffff);
96
+ --nx-danger: light-dark(#ba3527, #ff7b7b);
97
+ --nx-danger-solid: light-dark(#ba3527, #c8494d);
98
+ --nx-danger-text: light-dark(#ffffff, #ffffff);
99
+ --nx-success: light-dark(#14710a, #50fa7b);
100
+ --nx-warning: light-dark(#a34d14, #ffb86c);
101
+ --nx-info: light-dark(#036a96, #8be9fd);
102
+ }
103
+
104
+ /* Solarized: warm cream or deep teal, with precise accents. */
105
+ [data-nx-theme="solarized"] {
106
+ --nx-bg: light-dark(#eee8d5, #00212b);
107
+ --nx-surface: light-dark(#fdf6e3, #002b36);
108
+ --nx-surface-2: light-dark(#f5efdc, #073642);
109
+ --nx-surface-hover: light-dark(#eee8d5, #0b4453);
110
+ --nx-border: light-dark(#e4ddc8, #0d3f4c);
111
+ --nx-border-strong: light-dark(#cdc5ab, #2a5561);
112
+ --nx-text: light-dark(#073642, #eee8d5);
113
+ --nx-text-muted: light-dark(#566b72, #93a1a1);
114
+ --nx-text-subtle: light-dark(#809294, #657b83);
115
+ --nx-primary: light-dark(#1c679c, #55a7e0);
116
+ --nx-primary-solid: light-dark(#1c679c, #247bb2);
117
+ --nx-primary-text: light-dark(#ffffff, #ffffff);
118
+ --nx-danger: light-dark(#bd2320, #e9807e);
119
+ --nx-danger-solid: light-dark(#bd2320, #b95555);
120
+ --nx-danger-text: light-dark(#ffffff, #ffffff);
121
+ --nx-success: light-dark(#5b6900, #92a800);
122
+ --nx-warning: light-dark(#7d5e00, #c69700);
123
+ --nx-info: light-dark(#1d6e68, #2fb3a9);
124
+ }
125
+
126
+ /* Catppuccin: soothing pastels, Latte for light and Mocha for dark. */
127
+ [data-nx-theme="catppuccin"] {
128
+ --nx-bg: light-dark(#e6e9ef, #11111b);
129
+ --nx-surface: light-dark(#eff1f5, #1e1e2e);
130
+ --nx-surface-2: light-dark(#e6e9ef, #313244);
131
+ --nx-surface-hover: light-dark(#dce0e8, #45475a);
132
+ --nx-border: light-dark(#ccd0da, #45475a);
133
+ --nx-border-strong: light-dark(#acb0be, #585b70);
134
+ --nx-text: light-dark(#42455c, #dce2f7);
135
+ --nx-text-muted: light-dark(#65687d, #a6adc8);
136
+ --nx-text-subtle: light-dark(#868a9c, #7f849c);
137
+ --nx-primary: light-dark(#7a21ed, #cba6f7);
138
+ --nx-primary-solid: light-dark(#7a21ed, #8965b1);
139
+ --nx-primary-text: light-dark(#ffffff, #ffffff);
140
+ --nx-danger: light-dark(#ba0d33, #f38ba8);
141
+ --nx-danger-solid: light-dark(#ba0d33, #b75573);
142
+ --nx-danger-text: light-dark(#ffffff, #ffffff);
143
+ --nx-success: light-dark(#2c6e1d, #a6e3a1);
144
+ --nx-warning: light-dark(#875612, #f9e2af);
145
+ --nx-info: light-dark(#0a52e0, #89b4fa);
146
+ }
147
+
148
+ /* Rosé Pine: muted pine, iris, and rose; Dawn for light. */
149
+ [data-nx-theme="rose-pine"] {
150
+ --nx-bg: light-dark(#faf4ed, #191724);
151
+ --nx-surface: light-dark(#fffaf3, #1f1d2e);
152
+ --nx-surface-2: light-dark(#f2e9e1, #26233a);
153
+ --nx-surface-hover: light-dark(#ebe2da, #2a2740);
154
+ --nx-border: light-dark(#dfdad9, #403d52);
155
+ --nx-border-strong: light-dark(#cecacd, #524f67);
156
+ --nx-text: light-dark(#494565, #e0def4);
157
+ --nx-text-muted: light-dark(#6a6683, #908caa);
158
+ --nx-text-subtle: light-dark(#948fa2, #6e6a86);
159
+ --nx-primary: light-dark(#745c8f, #c4a7e7);
160
+ --nx-primary-solid: light-dark(#745c8f, #8166a1);
161
+ --nx-primary-text: light-dark(#fffaf3, #fffaf3);
162
+ --nx-danger: light-dark(#9d4c63, #eb6f92);
163
+ --nx-danger-solid: light-dark(#9d4c63, #bf476c);
164
+ --nx-danger-text: light-dark(#fffaf3, #fffaf3);
165
+ --nx-success: light-dark(#286983, #9ccfd8);
166
+ --nx-warning: light-dark(#90590f, #f6c177);
167
+ --nx-info: light-dark(#406d76, #4da0c2);
168
+ }
169
+
170
+ /* Browsers without light-dark() (before 2024) get the Nexus light palette. */
171
+ @supports not (color: light-dark(#fff, #000)) {
172
+ :root,
173
+ [data-nx-theme] {
174
+ --nx-bg: #f5f6f8;
175
+ --nx-surface: #ffffff;
176
+ --nx-surface-2: #f0f2f5;
177
+ --nx-surface-hover: #e9ecf1;
178
+ --nx-border: #dde1e7;
179
+ --nx-border-strong: #c3cad4;
180
+ --nx-text: #171c26;
181
+ --nx-text-muted: #5a6375;
182
+ --nx-text-subtle: #8b93a2;
183
+ --nx-primary: #1c5cea;
184
+ --nx-primary-solid: #1c5cea;
185
+ --nx-primary-text: #ffffff;
186
+ --nx-danger: #c5291d;
187
+ --nx-danger-solid: #c5291d;
188
+ --nx-danger-text: #ffffff;
189
+ --nx-success: #147739;
190
+ --nx-warning: #b34608;
191
+ --nx-info: #0b6aa2;
192
+ }
193
+ }
194
+ }