@kumbatio/energy-system 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/src/energy.css ADDED
@@ -0,0 +1,134 @@
1
+ /*
2
+ * energy-system - Reference CSS for the UI visibility strategy
3
+ *
4
+ * This is ONE way to consume energy state. Apps can also use
5
+ * the JS strategy API directly and apply styles however they want.
6
+ *
7
+ * Apply these classes to your components:
8
+ * .energy-chrome - any chrome element (titlebar, toolbar, status bar)
9
+ * .energy-sidebar - sidebar container
10
+ * .energy-tab-bar - tab bar container
11
+ * .energy-status-bar - status bar
12
+ * .energy-toolbar - editor/app toolbar
13
+ * .energy-content - main content area
14
+ *
15
+ * Set data-energy-level on your root element (body or container).
16
+ *
17
+ * The per-level custom property values below mirror uiVisibilityStrategy.
18
+ * applyEnergyLevel() sets the same properties as inline styles, which take
19
+ * precedence but resolve to identical values, so the JS and CSS-only paths
20
+ * always agree.
21
+ */
22
+
23
+ /* ── Custom properties per level (mirror of uiVisibilityStrategy) ── */
24
+
25
+ [data-energy-level] {
26
+ --energy-chrome-opacity: 1;
27
+ --energy-chrome-opacity-hover: 1;
28
+ --energy-content-max-width: none;
29
+ --energy-content-font-scale: 1;
30
+ }
31
+
32
+ [data-energy-level='75'] {
33
+ --energy-chrome-opacity: 0.7;
34
+ }
35
+
36
+ [data-energy-level='50'] {
37
+ --energy-chrome-opacity: 0.4;
38
+ --energy-content-max-width: 90ch;
39
+ }
40
+
41
+ [data-energy-level='25'] {
42
+ --energy-chrome-opacity: 0.1;
43
+ --energy-content-max-width: 80ch;
44
+ --energy-content-font-scale: 1.05;
45
+ }
46
+
47
+ [data-energy-level='0'] {
48
+ --energy-chrome-opacity: 0.05;
49
+ --energy-chrome-opacity-hover: 0.8;
50
+ --energy-content-max-width: 75ch;
51
+ --energy-content-font-scale: 1.1;
52
+ }
53
+
54
+ /* ── Level 75 - Active ── */
55
+
56
+ [data-energy-level='75'] .energy-chrome {
57
+ opacity: var(--energy-chrome-opacity, 0.7);
58
+ transition: opacity 0.3s ease;
59
+ }
60
+
61
+ [data-energy-level='75'] .energy-chrome:hover {
62
+ opacity: var(--energy-chrome-opacity-hover, 1);
63
+ }
64
+
65
+ /* ── Level 50 - Steady ── */
66
+
67
+ [data-energy-level='50'] .energy-chrome {
68
+ opacity: var(--energy-chrome-opacity, 0.4);
69
+ transition: opacity 0.3s ease;
70
+ }
71
+
72
+ [data-energy-level='50'] .energy-chrome:hover {
73
+ opacity: var(--energy-chrome-opacity-hover, 1);
74
+ }
75
+
76
+ [data-energy-level='50'] .energy-content {
77
+ max-width: var(--energy-content-max-width, 90ch);
78
+ margin-inline: auto;
79
+ }
80
+
81
+ /* ── Level 25 - Low ── */
82
+
83
+ [data-energy-level='25'] .energy-sidebar,
84
+ [data-energy-level='25'] .energy-tab-bar,
85
+ [data-energy-level='25'] .energy-status-bar {
86
+ display: none;
87
+ }
88
+
89
+ [data-energy-level='25'] .energy-chrome {
90
+ opacity: var(--energy-chrome-opacity, 0.1);
91
+ transition: opacity 0.3s ease;
92
+ }
93
+
94
+ [data-energy-level='25'] .energy-chrome:hover {
95
+ opacity: var(--energy-chrome-opacity-hover, 1);
96
+ }
97
+
98
+ [data-energy-level='25'] .energy-content {
99
+ max-width: var(--energy-content-max-width, 80ch);
100
+ margin-inline: auto;
101
+ padding: 2rem;
102
+ font-size: calc(1em * var(--energy-content-font-scale, 1.05));
103
+ }
104
+
105
+ /* ── Level 0 - Rest ── */
106
+
107
+ [data-energy-level='0'] .energy-sidebar,
108
+ [data-energy-level='0'] .energy-tab-bar,
109
+ [data-energy-level='0'] .energy-status-bar,
110
+ [data-energy-level='0'] .energy-toolbar {
111
+ display: none !important;
112
+ }
113
+
114
+ [data-energy-level='0'] .energy-chrome {
115
+ opacity: var(--energy-chrome-opacity, 0.05);
116
+ transition: opacity 0.3s ease;
117
+ }
118
+
119
+ [data-energy-level='0'] .energy-chrome:hover {
120
+ opacity: var(--energy-chrome-opacity-hover, 0.8);
121
+ }
122
+
123
+ [data-energy-level='0'] .energy-content {
124
+ max-width: var(--energy-content-max-width, 75ch);
125
+ margin-inline: auto;
126
+ padding: 2rem;
127
+ line-height: 1.4;
128
+ font-size: calc(1em * var(--energy-content-font-scale, 1.1));
129
+ cursor: default !important;
130
+ }
131
+
132
+ [data-energy-level='0'] .energy-content * {
133
+ cursor: default !important;
134
+ }