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