@memobit/themes 1.0.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 (141) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +79 -0
  3. package/dist/index.d.ts +4 -0
  4. package/dist/index.js +7 -0
  5. package/dist/previewPalettes.d.ts +2 -0
  6. package/dist/previewPalettes.js +517 -0
  7. package/dist/themeConfig.d.ts +14 -0
  8. package/dist/themeConfig.js +545 -0
  9. package/dist/themes/amber-meridian.css +1 -0
  10. package/dist/themes/archive-indigo.css +1 -0
  11. package/dist/themes/arctic-blue.css +1 -0
  12. package/dist/themes/asphalt-code.css +1 -0
  13. package/dist/themes/atelier-media.css +1 -0
  14. package/dist/themes/audit-ember.css +1 -0
  15. package/dist/themes/azure-night.css +1 -0
  16. package/dist/themes/blossom-meadow.css +1 -0
  17. package/dist/themes/blueprint-clay.css +1 -0
  18. package/dist/themes/blush-market.css +1 -0
  19. package/dist/themes/brass-chronicle.css +1 -0
  20. package/dist/themes/carbon-velocity.css +1 -0
  21. package/dist/themes/chalk-circuit.css +1 -0
  22. package/dist/themes/chrono-atlas.css +1 -0
  23. package/dist/themes/citrus-vital.css +1 -0
  24. package/dist/themes/clinical-aqua.css +1 -0
  25. package/dist/themes/cobalt-pulse.css +1 -0
  26. package/dist/themes/command-slate.css +1 -0
  27. package/dist/themes/crawler-dusk.css +1 -0
  28. package/dist/themes/crimson-dusk.css +1 -0
  29. package/dist/themes/cyber-forest.css +1 -0
  30. package/dist/themes/dashdarkx.css +1 -0
  31. package/dist/themes/ember-night.css +1 -0
  32. package/dist/themes/emerald-ledger.css +1 -0
  33. package/dist/themes/frost-petal.css +1 -0
  34. package/dist/themes/garden-harvest.css +1 -0
  35. package/dist/themes/gilded-bear.css +1 -0
  36. package/dist/themes/graphite-shell.css +1 -0
  37. package/dist/themes/horizon-amber.css +1 -0
  38. package/dist/themes/horizon-drift.css +1 -0
  39. package/dist/themes/ivory-serif.css +1 -0
  40. package/dist/themes/lavender-mist.css +1 -0
  41. package/dist/themes/light-blue.css +1 -0
  42. package/dist/themes/lumen.css +1 -0
  43. package/dist/themes/luna.css +1 -0
  44. package/dist/themes/mesh-circuit.css +1 -0
  45. package/dist/themes/midnight-amber.css +1 -0
  46. package/dist/themes/midnight-atlas.css +1 -0
  47. package/dist/themes/midnight-folio.css +1 -0
  48. package/dist/themes/mint-meadow.css +1 -0
  49. package/dist/themes/mintone.css +1 -0
  50. package/dist/themes/neon-tokyo.css +1 -0
  51. package/dist/themes/noir-marquee.css +1 -0
  52. package/dist/themes/ocean-breeze.css +1 -0
  53. package/dist/themes/ocean-depths.css +1 -0
  54. package/dist/themes/orbital-night.css +1 -0
  55. package/dist/themes/sandstone.css +1 -0
  56. package/dist/themes/sandy-parchment.css +1 -0
  57. package/dist/themes/screening-room.css +1 -0
  58. package/dist/themes/signal-burst.css +1 -0
  59. package/dist/themes/signal-clarity.css +1 -0
  60. package/dist/themes/slate-bazaar.css +1 -0
  61. package/dist/themes/slate-focus.css +1 -0
  62. package/dist/themes/spectrum-vault.css +1 -0
  63. package/dist/themes/tailwind-vue-dark.css +1 -0
  64. package/dist/themes/terminal-phosphor.css +1 -0
  65. package/dist/themes/terracotta-kitchen.css +1 -0
  66. package/dist/themes/twilight-pulse.css +1 -0
  67. package/dist/themes/vault-guard.css +1 -0
  68. package/dist/themes/velvet-reel.css +1 -0
  69. package/dist/themes/velvet-tome.css +1 -0
  70. package/dist/themes/verdant-pulse.css +1 -0
  71. package/dist/themes/vital-aurora.css +1 -0
  72. package/dist/themes/vital-signal.css +1 -0
  73. package/dist/themes.css +1 -0
  74. package/dist/vite.d.ts +38 -0
  75. package/dist/vite.js +66 -0
  76. package/package.json +77 -0
  77. package/src/theming/_profile-theme.scss +317 -0
  78. package/src/theming/amber-meridian.scss +271 -0
  79. package/src/theming/archive-indigo.scss +270 -0
  80. package/src/theming/arctic-blue.scss +266 -0
  81. package/src/theming/asphalt-code.scss +271 -0
  82. package/src/theming/atelier-media.scss +272 -0
  83. package/src/theming/audit-ember.scss +286 -0
  84. package/src/theming/azure-night.scss +269 -0
  85. package/src/theming/blossom-meadow.scss +273 -0
  86. package/src/theming/blueprint-clay.scss +271 -0
  87. package/src/theming/blush-market.scss +271 -0
  88. package/src/theming/brass-chronicle.scss +271 -0
  89. package/src/theming/carbon-velocity.scss +270 -0
  90. package/src/theming/chalk-circuit.scss +271 -0
  91. package/src/theming/chrono-atlas.scss +279 -0
  92. package/src/theming/citrus-vital.scss +34 -0
  93. package/src/theming/clinical-aqua.scss +270 -0
  94. package/src/theming/cobalt-pulse.scss +272 -0
  95. package/src/theming/command-slate.scss +34 -0
  96. package/src/theming/crawler-dusk.scss +270 -0
  97. package/src/theming/crimson-dusk.scss +269 -0
  98. package/src/theming/cyber-forest.scss +269 -0
  99. package/src/theming/dashdarkx.scss +269 -0
  100. package/src/theming/ember-night.scss +269 -0
  101. package/src/theming/emerald-ledger.scss +271 -0
  102. package/src/theming/frost-petal.scss +269 -0
  103. package/src/theming/garden-harvest.scss +271 -0
  104. package/src/theming/gilded-bear.scss +271 -0
  105. package/src/theming/graphite-shell.scss +270 -0
  106. package/src/theming/horizon-amber.scss +270 -0
  107. package/src/theming/horizon-drift.scss +271 -0
  108. package/src/theming/ivory-serif.scss +271 -0
  109. package/src/theming/lavender-mist.scss +269 -0
  110. package/src/theming/light-blue.scss +269 -0
  111. package/src/theming/lumen.scss +276 -0
  112. package/src/theming/luna.scss +269 -0
  113. package/src/theming/mesh-circuit.scss +271 -0
  114. package/src/theming/midnight-amber.scss +273 -0
  115. package/src/theming/midnight-atlas.scss +35 -0
  116. package/src/theming/midnight-folio.scss +34 -0
  117. package/src/theming/mint-meadow.scss +269 -0
  118. package/src/theming/mintone.scss +269 -0
  119. package/src/theming/neon-tokyo.scss +269 -0
  120. package/src/theming/noir-marquee.scss +34 -0
  121. package/src/theming/ocean-breeze.scss +269 -0
  122. package/src/theming/ocean-depths.scss +269 -0
  123. package/src/theming/orbital-night.scss +276 -0
  124. package/src/theming/sandstone.scss +269 -0
  125. package/src/theming/sandy-parchment.scss +270 -0
  126. package/src/theming/screening-room.scss +34 -0
  127. package/src/theming/signal-burst.scss +271 -0
  128. package/src/theming/signal-clarity.scss +34 -0
  129. package/src/theming/slate-bazaar.scss +34 -0
  130. package/src/theming/slate-focus.scss +270 -0
  131. package/src/theming/spectrum-vault.scss +271 -0
  132. package/src/theming/tailwind-vue-dark.scss +269 -0
  133. package/src/theming/terminal-phosphor.scss +272 -0
  134. package/src/theming/terracotta-kitchen.scss +271 -0
  135. package/src/theming/twilight-pulse.scss +269 -0
  136. package/src/theming/vault-guard.scss +271 -0
  137. package/src/theming/velvet-reel.scss +272 -0
  138. package/src/theming/velvet-tome.scss +271 -0
  139. package/src/theming/verdant-pulse.scss +34 -0
  140. package/src/theming/vital-aurora.scss +45 -0
  141. package/src/theming/vital-signal.scss +270 -0
package/dist/vite.d.ts ADDED
@@ -0,0 +1,38 @@
1
+ interface ThemePlugin {
2
+ name: string;
3
+ config(): {
4
+ define: Record<string, string>;
5
+ };
6
+ configureServer(server: {
7
+ middlewares: {
8
+ use(handler: (req: {
9
+ url?: string;
10
+ }, res: ServerResponse, next: () => void) => void): void;
11
+ };
12
+ }): void;
13
+ generateBundle(): void;
14
+ emitFile?: unknown;
15
+ }
16
+ interface ServerResponse {
17
+ setHeader(name: string, value: string): void;
18
+ end(body?: string): void;
19
+ }
20
+ export interface MemobitThemesOptions {
21
+ /** Project root, used to locate the installed package. Defaults to the current directory. */
22
+ root?: string;
23
+ }
24
+ /**
25
+ * Publishes each theme as a standalone stylesheet the app fetches when that theme is
26
+ * selected, instead of shipping all 64 in the bundle.
27
+ *
28
+ * Every app carried ~618 KB of theme CSS though exactly one is ever active, because the
29
+ * themes were imported as a single aggregate. This emits them as separate assets at a
30
+ * predictable path and hands the library a name-to-URL map through a compile-time global,
31
+ * which ThemeContext uses to load one on demand.
32
+ *
33
+ * The global is the reason this fails open: an app without this plugin leaves it
34
+ * undefined, the library falls back to assuming the aggregate stylesheet was imported the
35
+ * old way, and nothing changes for that app.
36
+ */
37
+ export declare const memobitThemes: (options?: MemobitThemesOptions) => ThemePlugin;
38
+ export {};
package/dist/vite.js ADDED
@@ -0,0 +1,66 @@
1
+ import { THEME_ASSET_DIR } from "./index.js";
2
+ import { readFileSync, readdirSync } from "node:fs";
3
+ import { createRequire } from "node:module";
4
+ import { dirname, join } from "node:path";
5
+ //#region src/vite.ts
6
+ var readThemeFiles = (root) => {
7
+ const require = createRequire(join(root, "noop.js"));
8
+ let themesDir;
9
+ try {
10
+ themesDir = join(dirname(require.resolve("@memobit/themes/package.json")), "dist", "themes");
11
+ } catch {
12
+ return /* @__PURE__ */ new Map();
13
+ }
14
+ const themes = /* @__PURE__ */ new Map();
15
+ for (const file of readdirSync(themesDir)) if (file.endsWith(".css")) themes.set(file.slice(0, -4), readFileSync(join(themesDir, file), "utf8"));
16
+ return themes;
17
+ };
18
+ /**
19
+ * Publishes each theme as a standalone stylesheet the app fetches when that theme is
20
+ * selected, instead of shipping all 64 in the bundle.
21
+ *
22
+ * Every app carried ~618 KB of theme CSS though exactly one is ever active, because the
23
+ * themes were imported as a single aggregate. This emits them as separate assets at a
24
+ * predictable path and hands the library a name-to-URL map through a compile-time global,
25
+ * which ThemeContext uses to load one on demand.
26
+ *
27
+ * The global is the reason this fails open: an app without this plugin leaves it
28
+ * undefined, the library falls back to assuming the aggregate stylesheet was imported the
29
+ * old way, and nothing changes for that app.
30
+ */
31
+ var memobitThemes = (options = {}) => {
32
+ const { root = process.cwd() } = options;
33
+ const themes = readThemeFiles(root);
34
+ const urls = Object.fromEntries([...themes.keys()].map((name) => [name, `/${THEME_ASSET_DIR}/${name}.css`]));
35
+ return {
36
+ name: "memobit-themes",
37
+ config() {
38
+ return { define: { __MEMOBIT_THEME_URLS__: JSON.stringify(urls) } };
39
+ },
40
+ configureServer(server) {
41
+ server.middlewares.use((req, res, next) => {
42
+ const path = (req.url ?? "").split("?")[0];
43
+ if (!path.startsWith(`/memobit-themes/`) || !path.endsWith(".css")) {
44
+ next();
45
+ return;
46
+ }
47
+ const css = themes.get(path.slice(`/${THEME_ASSET_DIR}/`.length, -4));
48
+ if (css === void 0) {
49
+ next();
50
+ return;
51
+ }
52
+ res.setHeader("Content-Type", "text/css");
53
+ res.end(css);
54
+ });
55
+ },
56
+ generateBundle() {
57
+ for (const [name, source] of themes) this.emitFile({
58
+ type: "asset",
59
+ fileName: `${THEME_ASSET_DIR}/${name}.css`,
60
+ source
61
+ });
62
+ }
63
+ };
64
+ };
65
+ //#endregion
66
+ export { memobitThemes };
package/package.json ADDED
@@ -0,0 +1,77 @@
1
+ {
2
+ "name": "@memobit/themes",
3
+ "version": "1.0.0",
4
+ "description": "64 themes for the Memobit apps — each published as its own stylesheet so an app loads only the one it is showing, with preview palettes for the theme picker.",
5
+ "keywords": [
6
+ "css",
7
+ "themes",
8
+ "theming",
9
+ "design-tokens",
10
+ "dark-mode",
11
+ "scss",
12
+ "memobit"
13
+ ],
14
+ "author": "Iulian Cristea <iulianx@gmail.com>",
15
+ "license": "Apache-2.0",
16
+ "homepage": "https://react.memobit.ro/",
17
+ "repository": {
18
+ "type": "git",
19
+ "url": "git+https://github.com/CristeaIulian/memobit-react-library-themes.git"
20
+ },
21
+ "bugs": {
22
+ "url": "https://github.com/CristeaIulian/memobit-react-library-themes/issues"
23
+ },
24
+ "publishConfig": {
25
+ "access": "public"
26
+ },
27
+ "sideEffects": [
28
+ "**/*.css",
29
+ "**/*.scss"
30
+ ],
31
+ "type": "module",
32
+ "main": "dist/index.js",
33
+ "module": "dist/index.js",
34
+ "types": "dist/index.d.ts",
35
+ "exports": {
36
+ ".": {
37
+ "types": "./dist/index.d.ts",
38
+ "import": "./dist/index.js"
39
+ },
40
+ "./vite": {
41
+ "types": "./dist/vite.d.ts",
42
+ "import": "./dist/vite.js"
43
+ },
44
+ "./themes.css": "./dist/themes.css",
45
+ "./themes/*.css": "./dist/themes/*.css",
46
+ "./src/theming/*.scss": "./src/theming/*.scss",
47
+ "./package.json": "./package.json"
48
+ },
49
+ "files": [
50
+ "dist",
51
+ "src/theming"
52
+ ],
53
+ "scripts": {
54
+ "build:themes": "node scripts/build-themes.mjs",
55
+ "build": "npm run build:themes && vite build && npm pack",
56
+ "release": "npm run build && npm publish",
57
+ "prepublishOnly": "npm run build:themes && vite build",
58
+ "lint": "eslint src --ext .ts",
59
+ "lint:fix": "eslint src --ext .ts --fix"
60
+ },
61
+ "devDependencies": {
62
+ "@eslint/js": "9.39.4",
63
+ "@types/node": "25.8.0",
64
+ "eslint": "9.39.4",
65
+ "eslint-config-prettier": "10.1.8",
66
+ "eslint-plugin-import-x": "4.17.1",
67
+ "eslint-plugin-prettier": "5.5.5",
68
+ "eslint-plugin-simple-import-sort": "13.0.0",
69
+ "globals": "17.6.0",
70
+ "prettier": "3.8.3",
71
+ "sass": "1.99.0",
72
+ "typescript": "6.0.3",
73
+ "typescript-eslint": "8.59.3",
74
+ "vite": "8.1.5",
75
+ "vite-plugin-dts": "5.0.0"
76
+ }
77
+ }
@@ -0,0 +1,317 @@
1
+ @use 'sass:map';
2
+
3
+ @function token($theme, $key, $fallback: null) {
4
+ @if map.has-key($theme, $key) {
5
+ @return map.get($theme, $key);
6
+ }
7
+
8
+ @return $fallback;
9
+ }
10
+
11
+ @mixin app-profile($theme) {
12
+ $font-family: token($theme, font-family, "'Inter', sans-serif");
13
+ $display-family: token($theme, display-family, $font-family);
14
+ $base: token($theme, base);
15
+ $surface: token($theme, surface);
16
+ $surface-alt: token($theme, surface-alt);
17
+ $surface-strong: token($theme, surface-strong);
18
+ $border: token($theme, border);
19
+ $border-strong: token($theme, border-strong);
20
+ $text: token($theme, text);
21
+ $title: token($theme, title);
22
+ $muted: token($theme, muted);
23
+ $sub-title: token($theme, sub-title);
24
+ $accent: token($theme, accent);
25
+ $accent-strong: token($theme, accent-strong);
26
+ $accent-soft: token($theme, accent-soft);
27
+ $accent-contrast: token($theme, accent-contrast);
28
+ $success: token($theme, success);
29
+ $success-contrast: token($theme, success-contrast, $base);
30
+ $warning: token($theme, warning);
31
+ $warning-contrast: token($theme, warning-contrast, $base);
32
+ $danger: token($theme, danger);
33
+ $info: token($theme, info, $accent);
34
+ $info-contrast: token($theme, info-contrast, $accent-contrast);
35
+ $wash-a: token($theme, wash-a, $accent);
36
+ $wash-b: token($theme, wash-b, $accent-strong);
37
+ $header-background: token($theme, header-background, $surface-strong);
38
+ $header-color: token($theme, header-color, $text);
39
+ $dropdown-header-background: token($theme, dropdown-header-background, $surface-strong);
40
+ $dropdown-header-color: token($theme, dropdown-header-color, $text);
41
+ $form-background: token($theme, form-background, $surface-strong);
42
+ $form-focus-background: token($theme, form-focus-background, $surface-alt);
43
+ $modal-footer-background: token($theme, modal-footer-background, $surface-strong);
44
+ $title-transform: token($theme, title-transform, none);
45
+ $title-letter-spacing: token($theme, title-letter-spacing, 0);
46
+ $label-transform: token($theme, label-transform, uppercase);
47
+ $label-letter-spacing: token($theme, label-letter-spacing, 0.08em);
48
+
49
+ --font-family: #{$font-family};
50
+ --font-family-display: #{$display-family};
51
+ --form-control-font-family: var(--font-family, sans-serif);
52
+
53
+ --body-background: var(--body-background-wash, var(--body-background-base));
54
+ --body-background-base: #{$base};
55
+ --body-background-wash:
56
+ radial-gradient(62% 54% at 100% 0%, #{rgba($wash-a, 0.16)} 0%, transparent 65%),
57
+ radial-gradient(56% 48% at 0% 100%, #{rgba($wash-b, 0.12)} 0%, transparent 68%),
58
+ linear-gradient(155deg, #{$surface-strong} 0%, #{$base} 52%, #{$surface} 100%);
59
+ --body-color: #{$text};
60
+ --body-color-accent: #{$title};
61
+ --body-color-muted: #{$muted};
62
+ --body-title-color: #{$title};
63
+ --body-sub-title-color: #{$sub-title};
64
+ --body-accent-color: #{$accent};
65
+ --body-danger-color: #{$danger};
66
+
67
+ --backdrop-color: rgba(0, 0, 0, 0.76);
68
+ --text-shadow: rgba(0, 0, 0, 0.48);
69
+ --box-shadow: rgba(0, 0, 0, 0.44);
70
+
71
+ --header-background-color: #{$header-background};
72
+ --header-border-bottom-color: #{$border};
73
+ --header-color: #{$header-color};
74
+ --header-font-weight: 600;
75
+
76
+ --card-background-color: #{$surface};
77
+ --card-background-accent-color: #{$surface-alt};
78
+ --card-border-color: #{$border};
79
+ --card-backdrop-filter: none;
80
+ --card-border-accent-color: #{$accent};
81
+ --card-hover-border-color: #{$border-strong};
82
+ --card-color: #{$sub-title};
83
+ --card-accent-color: #{$accent};
84
+ --card-box-shadow: 0 14px 38px rgba(0, 0, 0, 0.34);
85
+ --card-surface-box-shadow: 0 1px 0 #{rgba($title, 0.04)} inset, 0 14px 38px rgba(0, 0, 0, 0.32);
86
+ --card-footer-background-color: #{$surface-alt};
87
+ --card-footer-color: #{$muted};
88
+ --card-title-color: var(--body-title-color);
89
+ --card-title-font-family: var(--font-family-display, sans-serif);
90
+ --card-title-font-size: var(--font-size-lg);
91
+ --card-title-font-style: normal;
92
+ --card-title-font-weight: var(--font-weight-bold);
93
+ --card-title-letter-spacing: #{$title-letter-spacing};
94
+ --card-title-text-transform: #{$title-transform};
95
+
96
+ --links-color: #{$accent};
97
+ --links-hover-color: #{$accent-strong};
98
+
99
+ --delimiter-color: #{$border};
100
+ --border-color: #{$border-strong};
101
+
102
+ --button-default-border-color: #{$border-strong};
103
+ --button-default-background-color: #{$surface-alt};
104
+ --button-default-color: #{$text};
105
+ --button-default-hover-border-color: #{$accent};
106
+ --button-default-hover-background-color: #{rgba($accent, 0.12)};
107
+ --button-default-hover-color: #{$title};
108
+
109
+ --button-info-border-color: #{$accent};
110
+ --button-info-background-color: #{$accent-strong};
111
+ --button-info-color: #{$accent-contrast};
112
+ --button-info-hover-border-color: #{$accent};
113
+ --button-info-hover-background-color: #{$accent};
114
+ --button-info-hover-color: #{$accent-contrast};
115
+
116
+ --button-warning-border-color: #{$warning};
117
+ --button-warning-background-color: #{$warning};
118
+ --button-warning-color: #{$warning-contrast};
119
+ --button-warning-hover-border-color: #{$warning};
120
+ --button-warning-hover-background-color: #{rgba($warning, 0.88)};
121
+ --button-warning-hover-color: #{$warning-contrast};
122
+
123
+ --button-success-border-color: #{$success};
124
+ --button-success-background-color: #{$success};
125
+ --button-success-color: #{$success-contrast};
126
+ --button-success-hover-border-color: #{$success};
127
+ --button-success-hover-background-color: #{rgba($success, 0.86)};
128
+ --button-success-hover-color: #{$success-contrast};
129
+
130
+ --button-danger-border-color: #{$danger};
131
+ --button-danger-background-color: #{$danger};
132
+ --button-danger-color: #ffffff;
133
+ --button-danger-hover-border-color: #{$danger};
134
+ --button-danger-hover-background-color: #{rgba($danger, 0.86)};
135
+ --button-danger-hover-color: #ffffff;
136
+
137
+ --button-plain-color: #{$muted};
138
+ --button-plain-hover-color: #{$title};
139
+ --button-ghost-border-color: transparent;
140
+ --button-ghost-background-color: transparent;
141
+ --button-ghost-color: var(--button-plain-color);
142
+ --button-ghost-hover-border-color: transparent;
143
+ --button-ghost-hover-background-color: #{$surface-alt};
144
+ --button-ghost-hover-color: var(--button-plain-hover-color);
145
+
146
+ --dropdown-border-color: #{$border-strong};
147
+ --dropdown-header-background-color: #{$dropdown-header-background};
148
+ --dropdown-header-border-focus-color: #{$accent};
149
+ --dropdown-header-color: #{$dropdown-header-color};
150
+ --dropdown-options-background-color: #{$surface};
151
+ --dropdown-options-color: #{$text};
152
+ --dropdown-options-hover-background-color: #{rgba($accent, 0.11)};
153
+ --dropdown-options-hover-color: #{$title};
154
+ --dropdown-options-selected-background-color: #{rgba($accent, 0.2)};
155
+ --dropdown-options-selected-color: #{$title};
156
+ --dropdown-chips-background-color: #{rgba($accent, 0.14)};
157
+ --dropdown-chips-color: #{$accent};
158
+ --dropdown-chips-border-color: #{rgba($accent, 0.32)};
159
+ --dropdown-chips-hover-background-color: #{rgba($accent, 0.22)};
160
+ --dropdown-action-color: #{$sub-title};
161
+ --dropdown-action-background-color: #{$surface};
162
+ --dropdown-action-hover-color: #{$title};
163
+ --dropdown-action-hover-background-color: #{$surface-alt};
164
+
165
+ --tabs-active-background-color: #{rgba($accent, 0.15)};
166
+ --tabs-active-color: #{$accent};
167
+ --tabs-inactive-background-color: transparent;
168
+ --tabs-inactive-color: #{$muted};
169
+
170
+ --modal-background-color: #{$surface};
171
+ --modal-border-color: #{$border-strong};
172
+ --modal-backdrop-filter: none;
173
+ --modal-header-background-color: #{$surface-alt};
174
+ --modal-header-color: #{$title};
175
+ --modal-title-color: var(--modal-header-color);
176
+ --modal-title-font-family: var(--font-family-display, sans-serif);
177
+ --modal-title-font-size: var(--font-size-lg);
178
+ --modal-title-font-style: normal;
179
+ --modal-title-font-weight: var(--font-weight-bold);
180
+ --modal-title-letter-spacing: #{$title-letter-spacing};
181
+ --modal-title-text-transform: #{$title-transform};
182
+ --modal-body-color: #{$sub-title};
183
+ --modal-footer-background-color: #{$modal-footer-background};
184
+ --modal-color: #{$text};
185
+ --modal-box-shadow: 0 18px 52px rgba(0, 0, 0, 0.48);
186
+ --modal-surface-box-shadow: var(--modal-box-shadow);
187
+ --modal-box-shadow-hover: 0 22px 60px #{rgba($accent, 0.18)};
188
+
189
+ --list-alternate-background-color: #{$surface-alt};
190
+ --list-hover-background-color: #{rgba($accent, 0.08)};
191
+
192
+ --progress-bar-background-color: #{$surface-alt};
193
+ --progress-bar-color: #{$muted};
194
+
195
+ --progress-default-bar-border-color: #{$border-strong};
196
+ --progress-default-bar-fill-color: #{$muted};
197
+
198
+ --progress-success-bar-border-color: #{$success};
199
+ --progress-success-bar-fill-color: #{$success};
200
+
201
+ --progress-info-bar-border-color: #{$info};
202
+ --progress-info-bar-fill-color: #{$info};
203
+
204
+ --progress-warning-bar-border-color: #{$warning};
205
+ --progress-warning-bar-fill-color: #{$warning};
206
+
207
+ --progress-danger-bar-border-color: #{$danger};
208
+ --progress-danger-bar-fill-color: #{$danger};
209
+
210
+ --form-control-background-color: #{$form-background};
211
+ --form-control-color: #{$text};
212
+ --form-control-label-color: #{$muted};
213
+ --form-control-label-font-size: var(--font-size-xs);
214
+ --form-control-label-font-weight: var(--font-weight-semibold);
215
+ --form-control-label-letter-spacing: #{$label-letter-spacing};
216
+ --form-control-label-text-transform: #{$label-transform};
217
+ --form-control-border-color: #{$border-strong};
218
+ --form-control-error-background-color: #{rgba($danger, 0.1)};
219
+ --form-control-error-color: #{$danger};
220
+ --form-control-error-border-color: #{$danger};
221
+ --form-control-focus-background-color: #{$form-focus-background};
222
+ --form-control-focus-border-color: #{$accent};
223
+ --form-control-focus-color: #{$title};
224
+ --form-control-placeholder-color: #{rgba($muted, 0.72)};
225
+ --form-control-success-background-color: #{rgba($success, 0.1)};
226
+ --form-control-success-color: #{$success};
227
+ --form-control-success-border-color: #{$success};
228
+
229
+ --form-control-selection-background-color: #{rgba($accent, 0.16)};
230
+ --form-control-selection-border-color: #{$accent};
231
+ --form-control-selection-color: #{$title};
232
+ --form-control-selection-label-color: #{$accent};
233
+ --form-control-focus-ring: #{rgba($accent, 0.28)};
234
+
235
+ --calendar-background-color: #{$surface};
236
+ --calendar-border-color: #{$border-strong};
237
+ --calendar-header-background-color: #{$surface-alt};
238
+ --calendar-header-color: #{$title};
239
+ --calendar-day-color: #{$sub-title};
240
+ --calendar-day-hover-background-color: #{$surface-alt};
241
+ --calendar-day-selected-background-color: #{$accent};
242
+ --calendar-day-selected-color: #{$accent-contrast};
243
+ --calendar-day-disabled-color: #{rgba($muted, 0.42)};
244
+ --calendar-day-today-border-color: #{$accent};
245
+ --calendar-day-weekend-color: #{$warning};
246
+
247
+ --datepicker-input-background-color: #{$form-background};
248
+
249
+ --tooltip-background-color: #{$accent};
250
+ --tooltip-border-color: #{$accent};
251
+ --tooltip-color: #{$accent-contrast};
252
+
253
+ --popover-background-color: #{$surface};
254
+ --popover-border-color: #{$accent};
255
+ --popover-color: #{$text};
256
+ --popover-arrow-color: #{$accent};
257
+
258
+ --toast-info-background-color: #{$info};
259
+ --toast-info-color: #{$info-contrast};
260
+ --toast-info-border-color: #{$accent};
261
+
262
+ --toast-success-background-color: #{$success};
263
+ --toast-success-color: #{$success-contrast};
264
+ --toast-success-border-color: #{$success};
265
+
266
+ --toast-warning-background-color: #{$warning};
267
+ --toast-warning-color: #{$warning-contrast};
268
+ --toast-warning-border-color: #{$warning};
269
+
270
+ --toast-danger-background-color: #{$danger};
271
+ --toast-danger-color: #ffffff;
272
+ --toast-danger-border-color: #{$danger};
273
+
274
+ --loader-border-color: #{rgba($accent, 0.2)};
275
+ --loader-border-top-color: #{$accent};
276
+
277
+ --rating-color-success: #{$success};
278
+ --rating-color-warning: #{$warning};
279
+ --rating-color-danger: #{$danger};
280
+ --rating-color-info: #{$info};
281
+ --rating-empty-color: #{$surface-alt};
282
+ --rating-empty-label-color: #{$muted};
283
+ --rating-half-rate-empty-color: #{$surface-alt};
284
+
285
+ --slider-track-background-color: #{$surface-alt};
286
+ --slider-track-border-color: #{$border-strong};
287
+ --slider-track-hover-background-color: #{$accent-soft};
288
+ --slider-track-hover-border-color: #{$accent};
289
+ --slider-thumb-background-color: #{$accent};
290
+ --slider-thumb-border-color: #{$accent};
291
+ --slider-thumb-hover-background-color: #{$accent-strong};
292
+ --slider-thumb-hover-border-color: #{$accent-strong};
293
+
294
+ --chip-selected-background-color: #{rgba($accent, 0.16)};
295
+ --chip-selected-border-color: #{$accent};
296
+ --chip-hover-border-color: #{$accent};
297
+ --chip-hover-background-color: transparent;
298
+ --chip-hover-color: #{$sub-title};
299
+ --chip-selected-color: #{$accent};
300
+ --chip-selected-count-color: #{rgba($accent, 0.72)};
301
+
302
+ --note-container-effect-background-color: #{rgba($accent, 0.08)};
303
+ --note-container-effect-color: #{$text};
304
+ --note-container-effect-border-left-color: #{$accent};
305
+
306
+ --infuse-effect-hover-border-color: #{$accent};
307
+ --infuse-effect-hover-box-shadow-color: #{rgba($accent, 0.32)};
308
+ --infuse-effect-before-background: linear-gradient(90deg, #{$accent-strong}, #{$warning});
309
+
310
+ --up-lift-effect-hover-border-color: #{$accent};
311
+ --up-lift-effect-box-shadow-color: rgba(0, 0, 0, 0.42);
312
+ --up-lift-effect-hover-box-shadow-color: #{rgba($accent, 0.28)};
313
+ --up-lift-effect-before-background: linear-gradient(135deg, #{$accent} 0%, #{$wash-b} 100%);
314
+
315
+ --glow-box-shadow-color: 0 0 18px #{rgba($accent, 0.36)}, 0 0 8px #{rgba($wash-b, 0.18)};
316
+ --glow-hover-border-color: #{rgba($accent, 0.42)};
317
+ }