@jjlmoya/utils-creative 1.3.0 → 1.5.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.
@@ -1,234 +0,0 @@
1
- .synesthesia-painter {
2
- --sp-bg: #fff;
3
- --sp-bg-muted: #f8fafc;
4
- --sp-text: #0f172a;
5
- --sp-text-muted: #475569;
6
- --sp-text-dim: #64748b;
7
- --sp-border: #e2e8f0;
8
- --sp-shadow: rgba(0, 0, 0, 0.08);
9
- --sp-primary: #6366f1;
10
- --sp-primary-on: #fff;
11
- --sp-header-bg: rgba(255, 255, 255, 0.92);
12
- }
13
-
14
- .theme-dark .synesthesia-painter {
15
- --sp-bg: #0f172a;
16
- --sp-bg-muted: #1e293b;
17
- --sp-text: #f8fafc;
18
- --sp-text-muted: #94a3b8;
19
- --sp-text-dim: #64748b;
20
- --sp-border: #334155;
21
- --sp-shadow: rgba(0, 0, 0, 0.35);
22
- --sp-primary: #818cf8;
23
- --sp-header-bg: rgba(30, 41, 59, 0.92);
24
- }
25
-
26
- .synesthesia-painter-card {
27
- position: relative;
28
- min-height: 420px;
29
- background-color: var(--sp-bg);
30
- border-radius: 2rem;
31
- border: 1px solid var(--sp-border);
32
- box-shadow: 0 20px 40px -8px var(--sp-shadow);
33
- display: flex;
34
- flex-direction: column;
35
- overflow: hidden;
36
- }
37
-
38
- /* ── mode selector ── */
39
- .synesthesia-painter-header {
40
- position: absolute;
41
- top: 1rem;
42
- right: 1rem;
43
- z-index: 30;
44
- background-color: var(--sp-header-bg);
45
- backdrop-filter: blur(8px);
46
- padding: 0.3rem;
47
- border-radius: 9999px;
48
- border: 1px solid var(--sp-border);
49
- box-shadow: 0 1px 4px rgba(0, 0, 0, 0.08);
50
- display: flex;
51
- gap: 0.2rem;
52
- }
53
-
54
- .synesthesia-painter-mode-btn {
55
- padding: 0.4rem 0.875rem;
56
- border-radius: 9999px;
57
- font-size: 0.7rem;
58
- font-weight: 700;
59
- text-transform: uppercase;
60
- letter-spacing: 0.06em;
61
- transition: background 0.2s, color 0.2s;
62
- color: var(--sp-text-muted);
63
- background: none;
64
- border: none;
65
- cursor: pointer;
66
- }
67
-
68
- .synesthesia-painter-mode-btn:hover {
69
- background-color: var(--sp-bg-muted);
70
- color: var(--sp-text);
71
- }
72
-
73
- .synesthesia-painter-mode-btn.active {
74
- background-color: var(--sp-primary);
75
- color: var(--sp-primary-on);
76
- box-shadow: 0 2px 8px rgba(99, 102, 241, 0.35);
77
- }
78
-
79
- /* ── canvas area ── */
80
- .synesthesia-painter-canvas-wrapper {
81
- position: relative;
82
- flex-grow: 1;
83
- padding: 2rem;
84
- padding-top: 5rem;
85
- cursor: text;
86
- }
87
-
88
- @media (min-width: 768px) {
89
- .synesthesia-painter-canvas-wrapper {
90
- padding: 3rem;
91
- padding-top: 5rem;
92
- }
93
- }
94
-
95
- .synesthesia-painter-viz-layer {
96
- word-break: break-all;
97
- white-space: pre-wrap;
98
- line-height: 1.625;
99
- outline: none;
100
- font-size: 2.5rem;
101
- min-height: 100%;
102
- }
103
-
104
- .synesthesia-painter-input {
105
- position: absolute;
106
- inset: 0;
107
- opacity: 0;
108
- cursor: text;
109
- z-index: -10;
110
- width: 100%;
111
- height: 100%;
112
- resize: none;
113
- border: none;
114
- background: transparent;
115
- }
116
-
117
- .synesthesia-painter-placeholder {
118
- position: absolute;
119
- top: 5rem;
120
- left: 2rem;
121
- pointer-events: none;
122
- opacity: 0.35;
123
- user-select: none;
124
- }
125
-
126
- @media (min-width: 768px) {
127
- .synesthesia-painter-placeholder {
128
- left: 3rem;
129
- }
130
- }
131
-
132
- .synesthesia-painter-placeholder-text {
133
- color: var(--sp-text-dim);
134
- font-size: 2.25rem;
135
- font-weight: 300;
136
- font-style: italic;
137
- }
138
-
139
- /* ── footer ── */
140
- .synesthesia-painter-footer {
141
- background-color: var(--sp-bg-muted);
142
- border-top: 1px solid var(--sp-border);
143
- padding: 0.875rem 2rem;
144
- display: flex;
145
- align-items: center;
146
- justify-content: space-between;
147
- gap: 1rem;
148
- }
149
-
150
- .synesthesia-painter-tooltip {
151
- font-size: 0.75rem;
152
- color: var(--sp-text-muted);
153
- font-weight: 500;
154
- margin: 0;
155
- }
156
-
157
- .synesthesia-painter-clear-btn {
158
- font-size: 0.7rem;
159
- font-weight: 700;
160
- color: var(--sp-text-dim);
161
- text-transform: uppercase;
162
- letter-spacing: 0.06em;
163
- background: none;
164
- border: none;
165
- cursor: pointer;
166
- display: flex;
167
- align-items: center;
168
- gap: 0.375rem;
169
- transition: color 0.2s;
170
- white-space: nowrap;
171
- }
172
-
173
- .synesthesia-painter-clear-btn:hover {
174
- color: #ef4444;
175
- }
176
-
177
- /* ── characters ── */
178
- .synesthesia-painter-char {
179
- display: inline-block;
180
- color: var(--char-color);
181
- transition: color 0.3s cubic-bezier(0.4, 0, 0.2, 1);
182
- animation: sp-fade-in 0.2s ease-out forwards;
183
- }
184
-
185
- @keyframes sp-fade-in {
186
- from {
187
- opacity: 0;
188
- transform: translate-y(4px);
189
- }
190
-
191
- to {
192
- opacity: 1;
193
- transform: translate-y(0);
194
- }
195
- }
196
-
197
- /* mode: dots */
198
- .synesthesia-painter-viz-layer.dots .synesthesia-painter-char {
199
- color: transparent;
200
- font-size: 0;
201
- width: 1rem;
202
- height: 1rem;
203
- border-radius: 50%;
204
- background-color: var(--char-color);
205
- margin: 0.25rem;
206
- box-shadow: 0 0 8px var(--char-color);
207
- }
208
-
209
- /* mode: aura */
210
- .synesthesia-painter-viz-layer.aura .synesthesia-painter-char {
211
- color: rgba(255, 255, 255, 0.15);
212
- text-shadow: 0 0 18px var(--char-color), 0 0 36px var(--char-color);
213
- }
214
-
215
- .theme-dark .synesthesia-painter-viz-layer.aura .synesthesia-painter-char {
216
- color: rgba(255, 255, 255, 0.85);
217
- text-shadow: 0 0 14px var(--char-color), 0 0 28px var(--char-color), 0 0 56px var(--char-color);
218
- }
219
-
220
- /* cursor */
221
- .synesthesia-painter-cursor {
222
- display: inline-block;
223
- width: 2px;
224
- height: 2.5rem;
225
- background-color: var(--sp-primary);
226
- animation: sp-blink 1s step-end infinite;
227
- vertical-align: text-bottom;
228
- margin-left: 2px;
229
- }
230
-
231
- @keyframes sp-blink {
232
- 0%, 100% { opacity: 1; }
233
- 50% { opacity: 0; }
234
- }