@reservi/theme 1.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/src/index.css ADDED
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Punto de entrada del tema de Reservi Calendar.
3
+ * Uso: @import "tailwindcss"; @import "@reservi/theme";
4
+ */
5
+ @import "./theme.css";
6
+ @import "./components.css";
@@ -0,0 +1,43 @@
1
+ /**
2
+ * PLANTILLA DE THEME PERSONALIZADO de Reservi Calendar.
3
+ *
4
+ * Copia este archivo, renómbralo (p. ej. "mi-marca.css"), cambia el nombre del
5
+ * selector data-rsv-theme y ajusta los valores. Luego:
6
+ * 1) impórtalo: @import "./mi-marca.css";
7
+ * 2) actívalo: <ReserviCalendar theme="mi-marca" /> (o data-rsv-theme="mi-marca")
8
+ *
9
+ * Solo necesitas declarar los tokens que quieras cambiar; el resto hereda del
10
+ * tema base. Todos los tokens disponibles están listados abajo. Ver THEMES.md.
11
+ */
12
+ [data-rsv-theme="mi-marca"] {
13
+ /* Superficies */
14
+ --color-rsv-bg: oklch(1 0 0);
15
+ --color-rsv-surface: oklch(0.98 0 0);
16
+ --color-rsv-border: oklch(0.9 0 0);
17
+ --color-rsv-muted: oklch(0.55 0 0);
18
+ --color-rsv-text: oklch(0.2 0 0);
19
+
20
+ /* Marca / acento */
21
+ --color-rsv-primary: oklch(0.55 0.2 264);
22
+ --color-rsv-primary-fg: oklch(0.99 0 0);
23
+ --color-rsv-today: oklch(0.97 0.04 264);
24
+
25
+ /* Eventos (paleta categórica) */
26
+ --color-rsv-event-1: oklch(0.6 0.18 264);
27
+ --color-rsv-event-2: oklch(0.65 0.17 150);
28
+ --color-rsv-event-3: oklch(0.7 0.17 60);
29
+ --color-rsv-event-4: oklch(0.62 0.2 20);
30
+ --color-rsv-event-5: oklch(0.6 0.16 320);
31
+ --color-rsv-event-fg: oklch(0.99 0 0);
32
+
33
+ /* Estados */
34
+ --color-rsv-now: oklch(0.6 0.22 20);
35
+ --color-rsv-selection: oklch(0.9 0.05 264);
36
+ --color-rsv-nonbusiness: oklch(0.96 0 0);
37
+
38
+ /* Geometría / tipografía */
39
+ --radius-rsv: 0.5rem;
40
+ --radius-rsv-event: 0.375rem;
41
+ --spacing-rsv-slot: 2.5rem;
42
+ --font-rsv-sans: ui-sans-serif, system-ui, sans-serif;
43
+ }
package/src/theme.css ADDED
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Design tokens de Reservi Calendar para TailwindCSS 4 (@theme).
3
+ * Sobreescribe cualquier token en tu app para retematizar (ver DESIGN.md).
4
+ */
5
+ @theme {
6
+ /* Superficies */
7
+ --color-rsv-bg: oklch(1 0 0);
8
+ --color-rsv-surface: oklch(0.98 0 0);
9
+ --color-rsv-border: oklch(0.9 0 0);
10
+ --color-rsv-muted: oklch(0.55 0 0);
11
+ --color-rsv-text: oklch(0.2 0 0);
12
+
13
+ /* Marca / acento */
14
+ --color-rsv-primary: oklch(0.55 0.2 264);
15
+ --color-rsv-primary-fg: oklch(0.99 0 0);
16
+ --color-rsv-today: oklch(0.97 0.04 264);
17
+
18
+ /* Paleta categórica de eventos */
19
+ --color-rsv-event-1: oklch(0.6 0.18 264);
20
+ --color-rsv-event-2: oklch(0.65 0.17 150);
21
+ --color-rsv-event-3: oklch(0.7 0.17 60);
22
+ --color-rsv-event-4: oklch(0.62 0.2 20);
23
+ --color-rsv-event-5: oklch(0.6 0.16 320);
24
+ --color-rsv-event-fg: oklch(0.99 0 0);
25
+
26
+ /* Estados */
27
+ --color-rsv-now: oklch(0.6 0.22 20);
28
+ --color-rsv-selection: oklch(0.9 0.05 264);
29
+ --color-rsv-nonbusiness: oklch(0.96 0 0);
30
+
31
+ /* Tipografía */
32
+ --font-rsv-sans: ui-sans-serif, system-ui, sans-serif;
33
+ --text-rsv-xs: 0.75rem;
34
+ --text-rsv-sm: 0.8125rem;
35
+ --text-rsv-base: 0.875rem;
36
+
37
+ /* Geometría */
38
+ --radius-rsv: 0.5rem;
39
+ --radius-rsv-event: 0.375rem;
40
+ --spacing-rsv-slot: 2.5rem;
41
+ --spacing-rsv-gutter: 0.25rem;
42
+
43
+ /* Sombras y transición */
44
+ --shadow-rsv-pop: 0 4px 20px -4px oklch(0 0 0 / 0.2);
45
+ --ease-rsv: cubic-bezier(0.2, 0, 0, 1);
46
+ }
47
+
48
+ /* Modo oscuro automático */
49
+ @media (prefers-color-scheme: dark) {
50
+ @theme {
51
+ --color-rsv-bg: oklch(0.18 0.01 264);
52
+ --color-rsv-surface: oklch(0.22 0.01 264);
53
+ --color-rsv-border: oklch(0.3 0.01 264);
54
+ --color-rsv-text: oklch(0.95 0 0);
55
+ --color-rsv-muted: oklch(0.6 0 0);
56
+ --color-rsv-today: oklch(0.3 0.05 264);
57
+ --color-rsv-nonbusiness: oklch(0.2 0.01 264);
58
+ }
59
+ }
60
+
61
+ /* Modo oscuro por clase (.dark) para toggle manual */
62
+ .dark {
63
+ --color-rsv-bg: oklch(0.18 0.01 264);
64
+ --color-rsv-surface: oklch(0.22 0.01 264);
65
+ --color-rsv-border: oklch(0.3 0.01 264);
66
+ --color-rsv-text: oklch(0.95 0 0);
67
+ --color-rsv-muted: oklch(0.6 0 0);
68
+ --color-rsv-today: oklch(0.3 0.05 264);
69
+ --color-rsv-nonbusiness: oklch(0.2 0.01 264);
70
+ }
@@ -0,0 +1,16 @@
1
+ /** Theme "amber" — claro, acento ámbar cálido. */
2
+ [data-rsv-theme="amber"] {
3
+ --color-rsv-bg: oklch(0.99 0.01 80);
4
+ --color-rsv-surface: oklch(0.97 0.02 80);
5
+ --color-rsv-border: oklch(0.9 0.03 80);
6
+ --color-rsv-text: oklch(0.28 0.04 70);
7
+ --color-rsv-muted: oklch(0.55 0.04 70);
8
+ --color-rsv-primary: oklch(0.7 0.15 75);
9
+ --color-rsv-primary-fg: oklch(0.2 0.04 70);
10
+ --color-rsv-today: oklch(0.95 0.06 80);
11
+ --color-rsv-event-1: oklch(0.72 0.15 75);
12
+ --color-rsv-event-2: oklch(0.7 0.15 50);
13
+ --color-rsv-event-3: oklch(0.74 0.14 100);
14
+ --color-rsv-event-4: oklch(0.68 0.16 30);
15
+ --color-rsv-event-5: oklch(0.72 0.13 130);
16
+ }
@@ -0,0 +1,18 @@
1
+ /** Theme "contrast" — alto contraste (accesibilidad). */
2
+ [data-rsv-theme="contrast"] {
3
+ --color-rsv-bg: oklch(1 0 0);
4
+ --color-rsv-surface: oklch(1 0 0);
5
+ --color-rsv-border: oklch(0.4 0 0);
6
+ --color-rsv-text: oklch(0.12 0 0);
7
+ --color-rsv-muted: oklch(0.3 0 0);
8
+ --color-rsv-primary: oklch(0.4 0.25 264);
9
+ --color-rsv-primary-fg: oklch(1 0 0);
10
+ --color-rsv-today: oklch(0.9 0.1 264);
11
+ --color-rsv-nonbusiness: oklch(0.92 0 0);
12
+ --color-rsv-event-1: oklch(0.4 0.25 264);
13
+ --color-rsv-event-2: oklch(0.42 0.2 150);
14
+ --color-rsv-event-3: oklch(0.4 0.2 30);
15
+ --color-rsv-event-4: oklch(0.38 0.25 10);
16
+ --color-rsv-event-5: oklch(0.4 0.22 320);
17
+ --radius-rsv-event: 0.25rem;
18
+ }
@@ -0,0 +1,17 @@
1
+ /** Theme "dracula" — oscuro, paleta vibrante. */
2
+ [data-rsv-theme="dracula"] {
3
+ --color-rsv-bg: oklch(0.24 0.03 290);
4
+ --color-rsv-surface: oklch(0.28 0.03 290);
5
+ --color-rsv-border: oklch(0.38 0.03 290);
6
+ --color-rsv-text: oklch(0.95 0.02 300);
7
+ --color-rsv-muted: oklch(0.65 0.03 290);
8
+ --color-rsv-primary: oklch(0.75 0.16 330);
9
+ --color-rsv-primary-fg: oklch(0.2 0.03 290);
10
+ --color-rsv-today: oklch(0.34 0.06 320);
11
+ --color-rsv-nonbusiness: oklch(0.26 0.03 290);
12
+ --color-rsv-event-1: oklch(0.75 0.16 330);
13
+ --color-rsv-event-2: oklch(0.78 0.16 180);
14
+ --color-rsv-event-3: oklch(0.85 0.15 110);
15
+ --color-rsv-event-4: oklch(0.72 0.16 25);
16
+ --color-rsv-event-5: oklch(0.78 0.15 280);
17
+ }
@@ -0,0 +1,16 @@
1
+ /** Theme "forest" — claro, acento verde bosque. */
2
+ [data-rsv-theme="forest"] {
3
+ --color-rsv-bg: oklch(0.99 0.01 150);
4
+ --color-rsv-surface: oklch(0.97 0.02 150);
5
+ --color-rsv-border: oklch(0.9 0.03 150);
6
+ --color-rsv-text: oklch(0.25 0.04 150);
7
+ --color-rsv-muted: oklch(0.5 0.04 150);
8
+ --color-rsv-primary: oklch(0.55 0.15 150);
9
+ --color-rsv-primary-fg: oklch(0.99 0 0);
10
+ --color-rsv-today: oklch(0.95 0.05 150);
11
+ --color-rsv-event-1: oklch(0.58 0.15 150);
12
+ --color-rsv-event-2: oklch(0.6 0.13 180);
13
+ --color-rsv-event-3: oklch(0.62 0.15 120);
14
+ --color-rsv-event-4: oklch(0.6 0.14 90);
15
+ --color-rsv-event-5: oklch(0.55 0.13 200);
16
+ }
@@ -0,0 +1,17 @@
1
+ /** Theme "graphite" — oscuro neutro (gris). */
2
+ [data-rsv-theme="graphite"] {
3
+ --color-rsv-bg: oklch(0.2 0 0);
4
+ --color-rsv-surface: oklch(0.24 0 0);
5
+ --color-rsv-border: oklch(0.34 0 0);
6
+ --color-rsv-text: oklch(0.95 0 0);
7
+ --color-rsv-muted: oklch(0.62 0 0);
8
+ --color-rsv-primary: oklch(0.7 0.02 250);
9
+ --color-rsv-primary-fg: oklch(0.18 0 0);
10
+ --color-rsv-today: oklch(0.3 0.01 250);
11
+ --color-rsv-nonbusiness: oklch(0.22 0 0);
12
+ --color-rsv-event-1: oklch(0.65 0.14 264);
13
+ --color-rsv-event-2: oklch(0.68 0.13 160);
14
+ --color-rsv-event-3: oklch(0.75 0.13 90);
15
+ --color-rsv-event-4: oklch(0.65 0.16 25);
16
+ --color-rsv-event-5: oklch(0.68 0.13 320);
17
+ }
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Todos los themes pre-hechos de Reservi Calendar.
3
+ * Importa este archivo para tenerlos todos disponibles vía data-rsv-theme:
4
+ * @import "@reservi/theme/themes";
5
+ */
6
+ @import "./midnight.css";
7
+ @import "./ocean.css";
8
+ @import "./sunset.css";
9
+ @import "./forest.css";
10
+ @import "./lavender.css";
11
+ @import "./rose.css";
12
+ @import "./slate.css";
13
+ @import "./amber.css";
14
+ @import "./mint.css";
15
+ @import "./dracula.css";
16
+ @import "./nord.css";
17
+ @import "./graphite.css";
18
+ @import "./solarized-light.css";
19
+ @import "./solarized-dark.css";
20
+ @import "./contrast.css";
@@ -0,0 +1,16 @@
1
+ /** Theme "lavender" — claro, acento lavanda. */
2
+ [data-rsv-theme="lavender"] {
3
+ --color-rsv-bg: oklch(0.99 0.01 300);
4
+ --color-rsv-surface: oklch(0.97 0.02 300);
5
+ --color-rsv-border: oklch(0.9 0.03 300);
6
+ --color-rsv-text: oklch(0.27 0.04 300);
7
+ --color-rsv-muted: oklch(0.55 0.04 300);
8
+ --color-rsv-primary: oklch(0.58 0.15 300);
9
+ --color-rsv-primary-fg: oklch(0.99 0 0);
10
+ --color-rsv-today: oklch(0.95 0.05 300);
11
+ --color-rsv-event-1: oklch(0.6 0.15 300);
12
+ --color-rsv-event-2: oklch(0.62 0.14 270);
13
+ --color-rsv-event-3: oklch(0.64 0.14 330);
14
+ --color-rsv-event-4: oklch(0.6 0.14 240);
15
+ --color-rsv-event-5: oklch(0.66 0.12 350);
16
+ }
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Theme "midnight" — oscuro azulado. Se activa con data-rsv-theme="midnight"
3
+ * en el root (o la opción `theme: "midnight"`).
4
+ */
5
+ [data-rsv-theme="midnight"] {
6
+ --color-rsv-bg: oklch(0.16 0.03 264);
7
+ --color-rsv-surface: oklch(0.2 0.03 264);
8
+ --color-rsv-border: oklch(0.3 0.03 264);
9
+ --color-rsv-muted: oklch(0.6 0.02 264);
10
+ --color-rsv-text: oklch(0.95 0.01 264);
11
+ --color-rsv-primary: oklch(0.7 0.16 280);
12
+ --color-rsv-primary-fg: oklch(0.15 0.03 264);
13
+ --color-rsv-today: oklch(0.28 0.06 280);
14
+ --color-rsv-nonbusiness: oklch(0.18 0.03 264);
15
+ --color-rsv-event-1: oklch(0.7 0.15 280);
16
+ --color-rsv-event-2: oklch(0.72 0.15 190);
17
+ --color-rsv-event-3: oklch(0.78 0.15 90);
18
+ --color-rsv-event-4: oklch(0.7 0.17 20);
19
+ --color-rsv-event-5: oklch(0.72 0.15 330);
20
+ }
@@ -0,0 +1,16 @@
1
+ /** Theme "mint" — claro, acento menta/teal. */
2
+ [data-rsv-theme="mint"] {
3
+ --color-rsv-bg: oklch(0.99 0.01 170);
4
+ --color-rsv-surface: oklch(0.97 0.02 170);
5
+ --color-rsv-border: oklch(0.9 0.03 170);
6
+ --color-rsv-text: oklch(0.26 0.04 180);
7
+ --color-rsv-muted: oklch(0.52 0.04 180);
8
+ --color-rsv-primary: oklch(0.6 0.12 175);
9
+ --color-rsv-primary-fg: oklch(0.99 0 0);
10
+ --color-rsv-today: oklch(0.95 0.05 170);
11
+ --color-rsv-event-1: oklch(0.62 0.13 175);
12
+ --color-rsv-event-2: oklch(0.64 0.12 200);
13
+ --color-rsv-event-3: oklch(0.66 0.13 150);
14
+ --color-rsv-event-4: oklch(0.62 0.12 220);
15
+ --color-rsv-event-5: oklch(0.64 0.11 130);
16
+ }
@@ -0,0 +1,17 @@
1
+ /** Theme "nord" — oscuro, azul ártico. */
2
+ [data-rsv-theme="nord"] {
3
+ --color-rsv-bg: oklch(0.3 0.02 250);
4
+ --color-rsv-surface: oklch(0.34 0.02 250);
5
+ --color-rsv-border: oklch(0.42 0.02 250);
6
+ --color-rsv-text: oklch(0.92 0.01 230);
7
+ --color-rsv-muted: oklch(0.68 0.02 240);
8
+ --color-rsv-primary: oklch(0.72 0.08 230);
9
+ --color-rsv-primary-fg: oklch(0.22 0.02 250);
10
+ --color-rsv-today: oklch(0.4 0.04 230);
11
+ --color-rsv-nonbusiness: oklch(0.32 0.02 250);
12
+ --color-rsv-event-1: oklch(0.72 0.08 230);
13
+ --color-rsv-event-2: oklch(0.74 0.08 190);
14
+ --color-rsv-event-3: oklch(0.78 0.1 150);
15
+ --color-rsv-event-4: oklch(0.7 0.12 25);
16
+ --color-rsv-event-5: oklch(0.72 0.1 320);
17
+ }
@@ -0,0 +1,16 @@
1
+ /** Theme "ocean" — claro, acento cian/azul. data-rsv-theme="ocean". */
2
+ [data-rsv-theme="ocean"] {
3
+ --color-rsv-bg: oklch(0.99 0.01 220);
4
+ --color-rsv-surface: oklch(0.97 0.02 220);
5
+ --color-rsv-border: oklch(0.9 0.03 220);
6
+ --color-rsv-text: oklch(0.25 0.03 240);
7
+ --color-rsv-muted: oklch(0.55 0.04 230);
8
+ --color-rsv-primary: oklch(0.6 0.13 220);
9
+ --color-rsv-primary-fg: oklch(0.99 0 0);
10
+ --color-rsv-today: oklch(0.95 0.05 220);
11
+ --color-rsv-event-1: oklch(0.62 0.14 220);
12
+ --color-rsv-event-2: oklch(0.66 0.13 190);
13
+ --color-rsv-event-3: oklch(0.68 0.13 160);
14
+ --color-rsv-event-4: oklch(0.64 0.15 260);
15
+ --color-rsv-event-5: oklch(0.66 0.12 300);
16
+ }
@@ -0,0 +1,16 @@
1
+ /** Theme "rose" — claro, acento rosa/rojo. */
2
+ [data-rsv-theme="rose"] {
3
+ --color-rsv-bg: oklch(0.99 0.01 10);
4
+ --color-rsv-surface: oklch(0.97 0.02 10);
5
+ --color-rsv-border: oklch(0.9 0.03 10);
6
+ --color-rsv-text: oklch(0.27 0.04 10);
7
+ --color-rsv-muted: oklch(0.55 0.04 10);
8
+ --color-rsv-primary: oklch(0.6 0.18 10);
9
+ --color-rsv-primary-fg: oklch(0.99 0 0);
10
+ --color-rsv-today: oklch(0.95 0.05 10);
11
+ --color-rsv-event-1: oklch(0.62 0.18 10);
12
+ --color-rsv-event-2: oklch(0.64 0.16 350);
13
+ --color-rsv-event-3: oklch(0.66 0.16 30);
14
+ --color-rsv-event-4: oklch(0.6 0.17 330);
15
+ --color-rsv-event-5: oklch(0.64 0.15 50);
16
+ }
@@ -0,0 +1,16 @@
1
+ /** Theme "slate" — claro, neutro azul-gris sobrio. */
2
+ [data-rsv-theme="slate"] {
3
+ --color-rsv-bg: oklch(0.99 0.005 250);
4
+ --color-rsv-surface: oklch(0.96 0.008 250);
5
+ --color-rsv-border: oklch(0.89 0.01 250);
6
+ --color-rsv-text: oklch(0.3 0.02 250);
7
+ --color-rsv-muted: oklch(0.55 0.02 250);
8
+ --color-rsv-primary: oklch(0.5 0.06 250);
9
+ --color-rsv-primary-fg: oklch(0.99 0 0);
10
+ --color-rsv-today: oklch(0.94 0.02 250);
11
+ --color-rsv-event-1: oklch(0.55 0.08 250);
12
+ --color-rsv-event-2: oklch(0.58 0.1 210);
13
+ --color-rsv-event-3: oklch(0.6 0.1 160);
14
+ --color-rsv-event-4: oklch(0.58 0.12 30);
15
+ --color-rsv-event-5: oklch(0.56 0.1 300);
16
+ }
@@ -0,0 +1,17 @@
1
+ /** Theme "solarized-dark" — base oscura teal, acentos solarized. */
2
+ [data-rsv-theme="solarized-dark"] {
3
+ --color-rsv-bg: oklch(0.27 0.04 200);
4
+ --color-rsv-surface: oklch(0.31 0.04 200);
5
+ --color-rsv-border: oklch(0.4 0.04 200);
6
+ --color-rsv-text: oklch(0.88 0.02 90);
7
+ --color-rsv-muted: oklch(0.66 0.03 190);
8
+ --color-rsv-primary: oklch(0.68 0.13 230);
9
+ --color-rsv-primary-fg: oklch(0.22 0.04 200);
10
+ --color-rsv-today: oklch(0.36 0.05 210);
11
+ --color-rsv-nonbusiness: oklch(0.29 0.04 200);
12
+ --color-rsv-event-1: oklch(0.68 0.13 230);
13
+ --color-rsv-event-2: oklch(0.72 0.13 180);
14
+ --color-rsv-event-3: oklch(0.78 0.14 100);
15
+ --color-rsv-event-4: oklch(0.68 0.16 30);
16
+ --color-rsv-event-5: oklch(0.66 0.15 330);
17
+ }
@@ -0,0 +1,17 @@
1
+ /** Theme "solarized-light" — beige cálido, acentos solarized. */
2
+ [data-rsv-theme="solarized-light"] {
3
+ --color-rsv-bg: oklch(0.97 0.02 90);
4
+ --color-rsv-surface: oklch(0.94 0.025 90);
5
+ --color-rsv-border: oklch(0.86 0.03 90);
6
+ --color-rsv-text: oklch(0.42 0.03 200);
7
+ --color-rsv-muted: oklch(0.58 0.03 200);
8
+ --color-rsv-primary: oklch(0.6 0.13 230);
9
+ --color-rsv-primary-fg: oklch(0.97 0.02 90);
10
+ --color-rsv-today: oklch(0.92 0.04 90);
11
+ --color-rsv-nonbusiness: oklch(0.93 0.025 90);
12
+ --color-rsv-event-1: oklch(0.6 0.13 230);
13
+ --color-rsv-event-2: oklch(0.65 0.13 180);
14
+ --color-rsv-event-3: oklch(0.7 0.14 100);
15
+ --color-rsv-event-4: oklch(0.6 0.16 30);
16
+ --color-rsv-event-5: oklch(0.58 0.15 330);
17
+ }
@@ -0,0 +1,16 @@
1
+ /** Theme "sunset" — cálido, acento naranja/rosa. data-rsv-theme="sunset". */
2
+ [data-rsv-theme="sunset"] {
3
+ --color-rsv-bg: oklch(0.99 0.01 60);
4
+ --color-rsv-surface: oklch(0.97 0.02 50);
5
+ --color-rsv-border: oklch(0.9 0.03 50);
6
+ --color-rsv-text: oklch(0.25 0.03 40);
7
+ --color-rsv-muted: oklch(0.55 0.04 40);
8
+ --color-rsv-primary: oklch(0.65 0.18 35);
9
+ --color-rsv-primary-fg: oklch(0.99 0 0);
10
+ --color-rsv-today: oklch(0.95 0.05 50);
11
+ --color-rsv-event-1: oklch(0.68 0.17 35);
12
+ --color-rsv-event-2: oklch(0.7 0.16 70);
13
+ --color-rsv-event-3: oklch(0.66 0.17 10);
14
+ --color-rsv-event-4: oklch(0.64 0.16 340);
15
+ --color-rsv-event-5: oklch(0.7 0.15 100);
16
+ }