@keepui/ui 0.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.
- package/README.md +267 -0
- package/capacitor/index.d.ts +6 -0
- package/capacitor/keepui-ui-capacitor.d.ts.map +1 -0
- package/capacitor/lib/providers/provide-keep-ui-capacitor.d.ts +22 -0
- package/capacitor/lib/providers/provide-keep-ui-capacitor.d.ts.map +1 -0
- package/capacitor/lib/services/capacitor-file.service.d.ts +23 -0
- package/capacitor/lib/services/capacitor-file.service.d.ts.map +1 -0
- package/capacitor/public-api.d.ts +3 -0
- package/capacitor/public-api.d.ts.map +1 -0
- package/fesm2022/keepui-ui-capacitor.mjs +79 -0
- package/fesm2022/keepui-ui-capacitor.mjs.map +1 -0
- package/fesm2022/keepui-ui.mjs +656 -0
- package/fesm2022/keepui-ui.mjs.map +1 -0
- package/index.d.ts +6 -0
- package/keepui-ui.d.ts.map +1 -0
- package/lib/components/button/button.component.d.ts +72 -0
- package/lib/components/button/button.component.d.ts.map +1 -0
- package/lib/components/button/button.types.d.ts +17 -0
- package/lib/components/button/button.types.d.ts.map +1 -0
- package/lib/components/card/card.component.d.ts +23 -0
- package/lib/components/card/card.component.d.ts.map +1 -0
- package/lib/components/image-preview/image-preview.component.d.ts +40 -0
- package/lib/components/image-preview/image-preview.component.d.ts.map +1 -0
- package/lib/i18n/keep-ui-translations.d.ts +21 -0
- package/lib/i18n/keep-ui-translations.d.ts.map +1 -0
- package/lib/i18n/translation-keys.d.ts +26 -0
- package/lib/i18n/translation-keys.d.ts.map +1 -0
- package/lib/models/file-result.model.d.ts +11 -0
- package/lib/models/file-result.model.d.ts.map +1 -0
- package/lib/ports/file.port.d.ts +17 -0
- package/lib/ports/file.port.d.ts.map +1 -0
- package/lib/providers/keep-ui-i18n.provider.d.ts +43 -0
- package/lib/providers/keep-ui-i18n.provider.d.ts.map +1 -0
- package/lib/providers/provide-keep-ui.d.ts +16 -0
- package/lib/providers/provide-keep-ui.d.ts.map +1 -0
- package/lib/services/keep-ui-language.service.d.ts +36 -0
- package/lib/services/keep-ui-language.service.d.ts.map +1 -0
- package/lib/services/keep-ui-transloco-loader.service.d.ts +18 -0
- package/lib/services/keep-ui-transloco-loader.service.d.ts.map +1 -0
- package/lib/services/web-file.service.d.ts +17 -0
- package/lib/services/web-file.service.d.ts.map +1 -0
- package/lib/testing/mock-file.service.d.ts +21 -0
- package/lib/testing/mock-file.service.d.ts.map +1 -0
- package/lib/tokens/file.token.d.ts +11 -0
- package/lib/tokens/file.token.d.ts.map +1 -0
- package/package.json +40 -0
- package/public-api.d.ts +15 -0
- package/public-api.d.ts.map +1 -0
- package/schematics/collection.json +10 -0
- package/schematics/ng-add/index.d.ts +12 -0
- package/schematics/ng-add/index.js +34 -0
- package/schematics/ng-add/index.js.map +1 -0
- package/schematics/ng-add/index.ts +42 -0
- package/schematics/ng-add/schema.json +16 -0
- package/styles/_index.css +73 -0
- package/styles/themes.css +130 -0
package/public-api.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export * from './lib/models/file-result.model';
|
|
2
|
+
export * from './lib/ports/file.port';
|
|
3
|
+
export * from './lib/tokens/file.token';
|
|
4
|
+
export * from './lib/services/web-file.service';
|
|
5
|
+
export * from './lib/components/button/button.types';
|
|
6
|
+
export * from './lib/components/button/button.component';
|
|
7
|
+
export * from './lib/components/card/card.component';
|
|
8
|
+
export * from './lib/components/image-preview/image-preview.component';
|
|
9
|
+
export * from './lib/providers/provide-keep-ui';
|
|
10
|
+
export * from './lib/providers/keep-ui-i18n.provider';
|
|
11
|
+
export * from './lib/i18n/translation-keys';
|
|
12
|
+
export * from './lib/i18n/keep-ui-translations';
|
|
13
|
+
export * from './lib/services/keep-ui-language.service';
|
|
14
|
+
export * from './lib/testing/mock-file.service';
|
|
15
|
+
//# sourceMappingURL=public-api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"public-api.d.ts","sourceRoot":"","sources":["../../projects/keep-ui/src/public-api.ts"],"names":[],"mappings":"AAGA,cAAc,gCAAgC,CAAC;AAG/C,cAAc,uBAAuB,CAAC;AAGtC,cAAc,yBAAyB,CAAC;AAGxC,cAAc,iCAAiC,CAAC;AAGhD,cAAc,sCAAsC,CAAC;AACrD,cAAc,0CAA0C,CAAC;AACzD,cAAc,sCAAsC,CAAC;AACrD,cAAc,wDAAwD,CAAC;AAGvE,cAAc,iCAAiC,CAAC;AAChD,cAAc,uCAAuC,CAAC;AAGtD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iCAAiC,CAAC;AAChD,cAAc,yCAAyC,CAAC;AAGxD,cAAc,iCAAiC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Rule } from '@angular-devkit/schematics';
|
|
2
|
+
interface NgAddOptions {
|
|
3
|
+
project?: string;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* `ng add @keepui/ui` schematic.
|
|
7
|
+
*
|
|
8
|
+
* Installs the package and prints guidance on how to register
|
|
9
|
+
* `provideKeepUi()` in the host application's `app.config.ts`.
|
|
10
|
+
*/
|
|
11
|
+
export declare function ngAdd(_options: NgAddOptions): Rule;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ngAdd = ngAdd;
|
|
4
|
+
const tasks_1 = require("@angular-devkit/schematics/tasks");
|
|
5
|
+
/**
|
|
6
|
+
* `ng add @keepui/ui` schematic.
|
|
7
|
+
*
|
|
8
|
+
* Installs the package and prints guidance on how to register
|
|
9
|
+
* `provideKeepUi()` in the host application's `app.config.ts`.
|
|
10
|
+
*/
|
|
11
|
+
function ngAdd(_options) {
|
|
12
|
+
return (tree, context) => {
|
|
13
|
+
context.addTask(new tasks_1.NodePackageInstallTask());
|
|
14
|
+
context.logger.info('');
|
|
15
|
+
context.logger.info('✅ KeepUI has been added to your project!');
|
|
16
|
+
context.logger.info('');
|
|
17
|
+
context.logger.info('Next steps:');
|
|
18
|
+
context.logger.info(' 1. Open your app.config.ts and add provideKeepUi() to the providers array:');
|
|
19
|
+
context.logger.info('');
|
|
20
|
+
context.logger.info(" import { provideKeepUi } from '@keepui/ui';");
|
|
21
|
+
context.logger.info('');
|
|
22
|
+
context.logger.info(' export const appConfig: ApplicationConfig = {');
|
|
23
|
+
context.logger.info(' providers: [provideKeepUi()],');
|
|
24
|
+
context.logger.info(' };');
|
|
25
|
+
context.logger.info('');
|
|
26
|
+
context.logger.info(' 2. Use KeepUI components in your templates:');
|
|
27
|
+
context.logger.info(" import { ImagePreviewComponent } from '@keepui/ui';");
|
|
28
|
+
context.logger.info('');
|
|
29
|
+
context.logger.info(' 3. For Capacitor projects, use provideKeepUiCapacitor() from @keepui/ui/capacitor instead.');
|
|
30
|
+
context.logger.info('');
|
|
31
|
+
return tree;
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;AAaA,sBA4BC;AAxCD,4DAA0E;AAM1E;;;;;GAKG;AACH,SAAgB,KAAK,CAAC,QAAsB;IAC1C,OAAO,CAAC,IAAU,EAAE,OAAyB,EAAE,EAAE;QAC/C,OAAO,CAAC,OAAO,CAAC,IAAI,8BAAsB,EAAE,CAAC,CAAC;QAE9C,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxB,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;QAChE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxB,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACnC,OAAO,CAAC,MAAM,CAAC,IAAI,CACjB,8EAA8E,CAC/E,CAAC;QACF,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxB,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;QACxE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxB,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;QAC1E,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;QAC5D,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC/B,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxB,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;QACrE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;QAChF,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxB,OAAO,CAAC,MAAM,CAAC,IAAI,CACjB,8FAA8F,CAC/F,CAAC;QACF,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAExB,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { Rule, SchematicContext, Tree } from '@angular-devkit/schematics';
|
|
2
|
+
import { NodePackageInstallTask } from '@angular-devkit/schematics/tasks';
|
|
3
|
+
|
|
4
|
+
interface NgAddOptions {
|
|
5
|
+
project?: string;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* `ng add @keepui/ui` schematic.
|
|
10
|
+
*
|
|
11
|
+
* Installs the package and prints guidance on how to register
|
|
12
|
+
* `provideKeepUi()` in the host application's `app.config.ts`.
|
|
13
|
+
*/
|
|
14
|
+
export function ngAdd(_options: NgAddOptions): Rule {
|
|
15
|
+
return (tree: Tree, context: SchematicContext) => {
|
|
16
|
+
context.addTask(new NodePackageInstallTask());
|
|
17
|
+
|
|
18
|
+
context.logger.info('');
|
|
19
|
+
context.logger.info('✅ KeepUI has been added to your project!');
|
|
20
|
+
context.logger.info('');
|
|
21
|
+
context.logger.info('Next steps:');
|
|
22
|
+
context.logger.info(
|
|
23
|
+
' 1. Open your app.config.ts and add provideKeepUi() to the providers array:',
|
|
24
|
+
);
|
|
25
|
+
context.logger.info('');
|
|
26
|
+
context.logger.info(" import { provideKeepUi } from '@keepui/ui';");
|
|
27
|
+
context.logger.info('');
|
|
28
|
+
context.logger.info(' export const appConfig: ApplicationConfig = {');
|
|
29
|
+
context.logger.info(' providers: [provideKeepUi()],');
|
|
30
|
+
context.logger.info(' };');
|
|
31
|
+
context.logger.info('');
|
|
32
|
+
context.logger.info(' 2. Use KeepUI components in your templates:');
|
|
33
|
+
context.logger.info(" import { ImagePreviewComponent } from '@keepui/ui';");
|
|
34
|
+
context.logger.info('');
|
|
35
|
+
context.logger.info(
|
|
36
|
+
' 3. For Capacitor projects, use provideKeepUiCapacitor() from @keepui/ui/capacitor instead.',
|
|
37
|
+
);
|
|
38
|
+
context.logger.info('');
|
|
39
|
+
|
|
40
|
+
return tree;
|
|
41
|
+
};
|
|
42
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema",
|
|
3
|
+
"id": "KeepUINgAdd",
|
|
4
|
+
"title": "Add KeepUI to an Angular project",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"properties": {
|
|
7
|
+
"project": {
|
|
8
|
+
"type": "string",
|
|
9
|
+
"description": "The name of the project to add KeepUI to.",
|
|
10
|
+
"$default": {
|
|
11
|
+
"$source": "projectName"
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"required": []
|
|
16
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* KeepUI — Styles entry point
|
|
3
|
+
*
|
|
4
|
+
* Import this file once in your application's global stylesheet:
|
|
5
|
+
*
|
|
6
|
+
* @import "@keepui/ui/styles";
|
|
7
|
+
*
|
|
8
|
+
* It includes:
|
|
9
|
+
* - Default light & dark theme tokens (CSS custom properties)
|
|
10
|
+
* - Tailwind CSS v4 theme mappings via @theme inline
|
|
11
|
+
*
|
|
12
|
+
* ─── Tailwind v4 utilities generated ────────────────────────────────────────
|
|
13
|
+
*
|
|
14
|
+
* Surface & background:
|
|
15
|
+
* bg-keepui-background bg-keepui-surface bg-keepui-surface-hover
|
|
16
|
+
*
|
|
17
|
+
* Text:
|
|
18
|
+
* text-keepui-text text-keepui-text-muted text-keepui-text-disabled
|
|
19
|
+
*
|
|
20
|
+
* Borders:
|
|
21
|
+
* border-keepui-border border-keepui-border-strong
|
|
22
|
+
*
|
|
23
|
+
* Brand / Primary:
|
|
24
|
+
* bg-keepui-primary bg-keepui-primary-hover bg-keepui-primary-active
|
|
25
|
+
* text-keepui-primary-fg border-keepui-primary
|
|
26
|
+
*
|
|
27
|
+
* Feedback:
|
|
28
|
+
* text-keepui-error bg-keepui-error bg-keepui-success bg-keepui-warning
|
|
29
|
+
*
|
|
30
|
+
* Shadows:
|
|
31
|
+
* shadow-keepui-sm shadow-keepui-md shadow-keepui-lg
|
|
32
|
+
*
|
|
33
|
+
* ─── Requirements ───────────────────────────────────────────────────────────
|
|
34
|
+
*
|
|
35
|
+
* Your application must process this file with Tailwind CSS v4 (e.g. via
|
|
36
|
+
* @tailwindcss/postcss or @tailwindcss/vite) to generate the utility classes.
|
|
37
|
+
* ────────────────────────────────────────────────────────────────────────────
|
|
38
|
+
*/
|
|
39
|
+
|
|
40
|
+
@import "./themes.css";
|
|
41
|
+
|
|
42
|
+
@theme inline {
|
|
43
|
+
/* ── Surfaces ── */
|
|
44
|
+
--color-keepui-background: var(--keepui-background);
|
|
45
|
+
--color-keepui-surface: var(--keepui-surface);
|
|
46
|
+
--color-keepui-surface-hover: var(--keepui-surface-hover);
|
|
47
|
+
|
|
48
|
+
/* ── Borders ── */
|
|
49
|
+
--color-keepui-border: var(--keepui-border);
|
|
50
|
+
--color-keepui-border-strong: var(--keepui-border-strong);
|
|
51
|
+
|
|
52
|
+
/* ── Text ── */
|
|
53
|
+
--color-keepui-text: var(--keepui-text);
|
|
54
|
+
--color-keepui-text-muted: var(--keepui-text-muted);
|
|
55
|
+
--color-keepui-text-disabled: var(--keepui-text-disabled);
|
|
56
|
+
|
|
57
|
+
/* ── Primary ── */
|
|
58
|
+
--color-keepui-primary: var(--keepui-primary);
|
|
59
|
+
--color-keepui-primary-hover: var(--keepui-primary-hover);
|
|
60
|
+
--color-keepui-primary-active: var(--keepui-primary-active);
|
|
61
|
+
--color-keepui-primary-fg: var(--keepui-primary-foreground);
|
|
62
|
+
|
|
63
|
+
/* ── Feedback ── */
|
|
64
|
+
--color-keepui-error: var(--keepui-error);
|
|
65
|
+
--color-keepui-error-fg: var(--keepui-error-foreground);
|
|
66
|
+
--color-keepui-success: var(--keepui-success);
|
|
67
|
+
--color-keepui-warning: var(--keepui-warning);
|
|
68
|
+
|
|
69
|
+
/* ── Shadows ── */
|
|
70
|
+
--shadow-keepui-sm: var(--keepui-shadow-sm);
|
|
71
|
+
--shadow-keepui-md: var(--keepui-shadow-md);
|
|
72
|
+
--shadow-keepui-lg: var(--keepui-shadow-lg);
|
|
73
|
+
}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* KeepUI — Default Theme
|
|
3
|
+
*
|
|
4
|
+
* This file defines all the CSS custom properties (design tokens) used by
|
|
5
|
+
* KeepUI components. Import it once in your application's global stylesheet:
|
|
6
|
+
*
|
|
7
|
+
* @import "@keepui/ui/styles/themes.css";
|
|
8
|
+
*
|
|
9
|
+
* ─── How to customise ───────────────────────────────────────────────────
|
|
10
|
+
*
|
|
11
|
+
* Override any variable in your own CSS to create a custom theme:
|
|
12
|
+
*
|
|
13
|
+
* :root {
|
|
14
|
+
* --keepui-primary: #6366f1;
|
|
15
|
+
* --keepui-primary-hover: #4f46e5;
|
|
16
|
+
* }
|
|
17
|
+
*
|
|
18
|
+
* [data-theme="dark"] {
|
|
19
|
+
* --keepui-primary: #818cf8;
|
|
20
|
+
* --keepui-primary-hover: #a5b4fc;
|
|
21
|
+
* }
|
|
22
|
+
*
|
|
23
|
+
* ─── Switching themes at runtime ────────────────────────────────────────
|
|
24
|
+
*
|
|
25
|
+
* Add `data-theme="dark"` to <html> or any ancestor element:
|
|
26
|
+
*
|
|
27
|
+
* document.documentElement.setAttribute('data-theme', 'dark');
|
|
28
|
+
*
|
|
29
|
+
* Or rely on the user's OS preference — the defaults already include
|
|
30
|
+
* a `@media (prefers-color-scheme: dark)` block.
|
|
31
|
+
* ────────────────────────────────────────────────────────────────────────
|
|
32
|
+
*/
|
|
33
|
+
|
|
34
|
+
/* ===== LIGHT THEME (default) ===== */
|
|
35
|
+
:root {
|
|
36
|
+
/* ── Brand ── */
|
|
37
|
+
--keepui-primary: #3b82f6;
|
|
38
|
+
--keepui-primary-hover: #2563eb;
|
|
39
|
+
--keepui-primary-active: #1d4ed8;
|
|
40
|
+
--keepui-primary-foreground: #ffffff;
|
|
41
|
+
|
|
42
|
+
/* ── Surfaces ── */
|
|
43
|
+
--keepui-background: #f5f5f5;
|
|
44
|
+
--keepui-surface: #ffffff;
|
|
45
|
+
--keepui-surface-hover: #f0f0f0;
|
|
46
|
+
|
|
47
|
+
/* ── Borders ── */
|
|
48
|
+
--keepui-border: #e0e0e0;
|
|
49
|
+
--keepui-border-strong: #cccccc;
|
|
50
|
+
|
|
51
|
+
/* ── Text ── */
|
|
52
|
+
--keepui-text: #1f2937;
|
|
53
|
+
--keepui-text-muted: #6b7280;
|
|
54
|
+
--keepui-text-disabled: #9ca3af;
|
|
55
|
+
|
|
56
|
+
/* ── Feedback ── */
|
|
57
|
+
--keepui-error: #dc2626;
|
|
58
|
+
--keepui-error-foreground: #ffffff;
|
|
59
|
+
--keepui-success: #16a34a;
|
|
60
|
+
--keepui-warning: #f59e0b;
|
|
61
|
+
|
|
62
|
+
/* ── Misc ── */
|
|
63
|
+
--keepui-radius: 0.5rem;
|
|
64
|
+
--keepui-radius-sm: 0.25rem;
|
|
65
|
+
--keepui-shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.12);
|
|
66
|
+
--keepui-shadow-md: 0 3px 6px rgba(0, 0, 0, 0.15);
|
|
67
|
+
--keepui-shadow-lg: 0 6px 12px rgba(0, 0, 0, 0.18);
|
|
68
|
+
--keepui-transition: 0.2s ease;
|
|
69
|
+
--keepui-disabled-opacity: 0.5;
|
|
70
|
+
--keepui-font-family: system-ui, -apple-system, sans-serif;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/* ===== DARK THEME ===== */
|
|
74
|
+
[data-theme="dark"] {
|
|
75
|
+
--keepui-primary: #60a5fa;
|
|
76
|
+
--keepui-primary-hover: #93c5fd;
|
|
77
|
+
--keepui-primary-active: #3b82f6;
|
|
78
|
+
--keepui-primary-foreground: #0f172a;
|
|
79
|
+
|
|
80
|
+
--keepui-background: #0f172a;
|
|
81
|
+
--keepui-surface: #1e293b;
|
|
82
|
+
--keepui-surface-hover: #334155;
|
|
83
|
+
|
|
84
|
+
--keepui-border: #334155;
|
|
85
|
+
--keepui-border-strong: #475569;
|
|
86
|
+
|
|
87
|
+
--keepui-text: #f1f5f9;
|
|
88
|
+
--keepui-text-muted: #94a3b8;
|
|
89
|
+
--keepui-text-disabled: #64748b;
|
|
90
|
+
|
|
91
|
+
--keepui-error: #f87171;
|
|
92
|
+
--keepui-error-foreground: #0f172a;
|
|
93
|
+
--keepui-success: #4ade80;
|
|
94
|
+
--keepui-warning: #fbbf24;
|
|
95
|
+
|
|
96
|
+
--keepui-shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.4);
|
|
97
|
+
--keepui-shadow-md: 0 3px 6px rgba(0, 0, 0, 0.45);
|
|
98
|
+
--keepui-shadow-lg: 0 6px 12px rgba(0, 0, 0, 0.5);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/* ===== Auto dark (OS preference) ===== */
|
|
102
|
+
@media (prefers-color-scheme: dark) {
|
|
103
|
+
:root:not([data-theme="light"]) {
|
|
104
|
+
--keepui-primary: #60a5fa;
|
|
105
|
+
--keepui-primary-hover: #93c5fd;
|
|
106
|
+
--keepui-primary-active: #3b82f6;
|
|
107
|
+
--keepui-primary-foreground: #0f172a;
|
|
108
|
+
|
|
109
|
+
--keepui-background: #0f172a;
|
|
110
|
+
--keepui-surface: #1e293b;
|
|
111
|
+
--keepui-surface-hover: #334155;
|
|
112
|
+
|
|
113
|
+
--keepui-border: #334155;
|
|
114
|
+
--keepui-border-strong: #475569;
|
|
115
|
+
|
|
116
|
+
--keepui-text: #f1f5f9;
|
|
117
|
+
--keepui-text-muted: #94a3b8;
|
|
118
|
+
--keepui-text-disabled: #64748b;
|
|
119
|
+
|
|
120
|
+
--keepui-error: #f87171;
|
|
121
|
+
--keepui-error-foreground: #0f172a;
|
|
122
|
+
--keepui-success: #4ade80;
|
|
123
|
+
--keepui-warning: #fbbf24;
|
|
124
|
+
|
|
125
|
+
--keepui-shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.4);
|
|
126
|
+
--keepui-shadow-md: 0 3px 6px rgba(0, 0, 0, 0.45);
|
|
127
|
+
--keepui-shadow-lg: 0 6px 12px rgba(0, 0, 0, 0.5);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|