sdocs-dev 1.3.0 → 1.3.1

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,240 +0,0 @@
1
- /* ═══════════════════════════════════════════════════
2
- RESET & BASE
3
- ═══════════════════════════════════════════════════ */
4
- *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
5
-
6
- body {
7
- font-family: var(--font-ui);
8
- background: var(--bg);
9
- color: var(--text);
10
- height: 100vh;
11
- display: flex;
12
- flex-direction: column;
13
- overflow: hidden;
14
- font-size: 13px;
15
- -webkit-font-smoothing: antialiased;
16
- }
17
-
18
- /* ═══════════════════════════════════════════════════
19
- TOOLBAR BRAND
20
- ═══════════════════════════════════════════════════ */
21
- #toolbar-brand {
22
- display: inline-flex;
23
- align-items: center;
24
- text-decoration: none;
25
- cursor: pointer;
26
- color: var(--accent);
27
- flex-shrink: 0;
28
- border-radius: var(--radius-sm);
29
- padding: 2px;
30
- margin-right: auto;
31
- transition: opacity .12s;
32
- }
33
- #toolbar-brand:hover { opacity: .7; }
34
- .toolbar-brand-text { display: none; }
35
- .toolbar-brand-full { display: inline; font-size: 13px; font-weight: 600; }
36
- .toolbar-brand-short { display: none; }
37
- .toolbar-brand-tiny { display: none; }
38
-
39
- .btn {
40
- display: inline-flex;
41
- align-items: center;
42
- gap: 5px;
43
- padding: 5px 11px;
44
- border-radius: var(--radius);
45
- border: 1px solid var(--border);
46
- background: var(--bg-input);
47
- color: var(--text-2);
48
- cursor: pointer;
49
- font-size: 12px;
50
- font-weight: 500;
51
- font-family: var(--font-ui);
52
- line-height: 1;
53
- transition: background .12s, border-color .12s, color .12s, box-shadow .12s;
54
- white-space: nowrap;
55
- box-shadow: var(--shadow-sm);
56
- }
57
- .btn:hover {
58
- background: var(--bg-hover);
59
- border-color: var(--border-strong);
60
- color: var(--text);
61
- }
62
- .btn:active { background: var(--bg-active); }
63
- .btn.active {
64
- background: var(--accent);
65
- border-color: var(--accent);
66
- color: var(--text-inv);
67
- box-shadow: 0 1px 3px rgba(37,99,235,.25);
68
- }
69
- .btn.ghost {
70
- background: transparent;
71
- border-color: transparent;
72
- box-shadow: none;
73
- color: var(--text-2);
74
- }
75
- .btn.ghost:hover {
76
- background: var(--bg-hover);
77
- border-color: var(--border);
78
- color: var(--text);
79
- }
80
-
81
-
82
- /* ═══════════════════════════════════════════════════
83
- MAIN LAYOUT
84
- ═══════════════════════════════════════════════════ */
85
- #main {
86
- display: flex;
87
- flex: 1;
88
- overflow: hidden;
89
- }
90
-
91
- /* ═══════════════════════════════════════════════════
92
- LEFT PANEL
93
- ═══════════════════════════════════════════════════ */
94
- #left {
95
- flex: 1;
96
- display: flex;
97
- flex-direction: column;
98
- overflow: hidden;
99
- background: var(--bg-input);
100
- }
101
-
102
- #left-toolbar {
103
- display: flex;
104
- align-items: center;
105
- gap: 6px;
106
- height: 40px;
107
- padding: 0 12px;
108
- background: var(--bg);
109
- border-bottom: 1px solid var(--border-subtle);
110
- flex-shrink: 0;
111
- overflow-x: auto;
112
- overflow-y: hidden;
113
- -webkit-overflow-scrolling: touch;
114
- scrollbar-width: none;
115
- }
116
- #left-toolbar::-webkit-scrollbar {
117
- display: none;
118
- }
119
-
120
- .toggle-group {
121
- display: flex;
122
- background: none;
123
- border: none;
124
- border-radius: var(--radius);
125
- overflow: hidden;
126
- padding: 2px;
127
- gap: 2px;
128
- }
129
- .toggle-group .btn {
130
- border: none;
131
- border-radius: calc(var(--radius) - 2px);
132
- box-shadow: none;
133
- background: transparent;
134
- padding: 6px 8px;
135
- color: var(--text-2);
136
- display: inline-flex;
137
- align-items: center;
138
- justify-content: center;
139
- }
140
- .toggle-group .btn.active {
141
- background: var(--bg-input);
142
- color: var(--text);
143
- box-shadow: var(--shadow-sm);
144
- }
145
- .toggle-group .btn:hover:not(.active) {
146
- background: var(--bg-hover);
147
- border-color: transparent;
148
- color: var(--text);
149
- }
150
-
151
- #drop-hint {
152
- font-size: 11.5px;
153
- color: var(--text-3);
154
- margin-left: auto;
155
- display: flex;
156
- align-items: center;
157
- gap: 4px;
158
- }
159
-
160
- .toolbar-icon-btn {
161
- display: inline-flex;
162
- align-items: center;
163
- justify-content: center;
164
- width: 26px;
165
- height: 26px;
166
- border: none;
167
- background: none;
168
- color: var(--text-3);
169
- cursor: pointer;
170
- border-radius: var(--radius-sm);
171
- padding: 0;
172
- transition: color .12s, background .12s;
173
- flex-shrink: 0;
174
- }
175
- @media (hover: hover) {
176
- .toolbar-icon-btn:hover {
177
- color: var(--text-2);
178
- background: var(--bg-hover);
179
- }
180
- }
181
-
182
- #content-area {
183
- flex: 1;
184
- overflow: auto;
185
- position: relative;
186
- background-color: #FFFFFF;
187
- outline: none;
188
- }
189
- html[data-theme="dark"] #content-area {
190
- background-color: #2c2a26;
191
- }
192
-
193
- /* drag overlay */
194
- #content-area.drag-over::after {
195
- content: 'Drop file to load';
196
- position: absolute;
197
- inset: 0;
198
- background: rgba(37,99,235,.06);
199
- border: 2px dashed var(--accent);
200
- border-radius: var(--radius-md);
201
- display: flex;
202
- align-items: center;
203
- justify-content: center;
204
- font-size: 16px;
205
- font-weight: 500;
206
- color: var(--accent);
207
- pointer-events: none;
208
- z-index: 10;
209
- margin: 8px;
210
- }
211
-
212
- /* ═══════════════════════════════════════════════════
213
- RAW TEXTAREA
214
- ═══════════════════════════════════════════════════ */
215
- #raw {
216
- display: none;
217
- width: 100%;
218
- height: 100%;
219
- padding: 40px 48px;
220
- background: var(--bg-input);
221
- color: var(--text);
222
- border: none;
223
- resize: none;
224
- font-family: 'JetBrains Mono', 'Fira Mono', monospace;
225
- font-size: 13px;
226
- line-height: 1.7;
227
- outline: none;
228
- }
229
-
230
- /* ═══════════════════════════════════════════════════
231
- DIVIDER (resize handle aesthetic)
232
- ═══════════════════════════════════════════════════ */
233
- #divider {
234
- width: 0;
235
- background: var(--border);
236
- flex-shrink: 0;
237
- transition: width .32s cubic-bezier(.4,0,.2,1);
238
- }
239
- body.style-mode #divider,
240
- body.export-mode #divider { width: 1px; }
@@ -1,196 +0,0 @@
1
- /* ═══════════════════════════════════════════════════
2
- MOBILE
3
- ═══════════════════════════════════════════════════ */
4
- @media (max-width: 768px) {
5
- /* ── Make body the scroll container (iOS tap-to-top) ── */
6
- body { overflow: visible; height: auto; }
7
- #main { flex-direction: column; overflow: visible; }
8
- #left { min-height: 0; overflow: visible; }
9
- #content-area { overflow: visible; }
10
- html { scroll-padding-top: 44px; }
11
-
12
- /* ── Show short brand text on mobile ── */
13
- .toolbar-brand-full { display: none; }
14
- .toolbar-brand-short { display: inline; font-size: 13px; font-weight: 600; }
15
-
16
- /* ── Sticky left toolbar: horizontal scroll, left-aligned ── */
17
- #left-toolbar { position: sticky; top: 0; z-index: 99; overflow-x: auto; -webkit-overflow-scrolling: touch; }
18
- #left-toolbar > * { flex-shrink: 0; }
19
- #toolbar-brand { margin-right: 0; }
20
-
21
- /* ── Stack layout instead of side-by-side ── */
22
- #divider { display: none; }
23
-
24
- /* ── Content: tighter padding for small screens ── */
25
- #rendered { padding: 24px 20px 40px; max-width: 100%; overflow-x: hidden; }
26
- #write { padding: 24px 20px 40px; max-width: 100%; }
27
- #raw { padding: 20px 16px; min-height: calc(100dvh - 36px); font-size: 16px; }
28
-
29
- /* ── File-info card: inset 20px from viewport edges ── */
30
- #file-info-card {
31
- max-width: none;
32
- margin: 16px 20px 0;
33
- padding: 8px 12px;
34
- }
35
-
36
- /* ── Write toolbar: sticky below left-toolbar ── */
37
- body.write-mode #write-toolbar { position: sticky; top: 36px; z-index: 98; justify-content: flex-start; }
38
-
39
- /* ── Left toolbar: hide drop hint ── */
40
- #drop-hint { display: none; }
41
-
42
- /* ── Status bar: hidden on mobile ── */
43
- #statusbar { display: none; }
44
-
45
- /* ── Right panel: bottom sheet overlay ── */
46
- #right {
47
- position: fixed;
48
- bottom: 0;
49
- left: 0;
50
- right: 0;
51
- width: 100% !important;
52
- max-height: 0;
53
- border-radius: 16px 16px 0 0;
54
- box-shadow: 0 -4px 24px rgba(28,25,23,.15), 0 -1px 4px rgba(28,25,23,.08);
55
- z-index: 100;
56
- transition: max-height .32s cubic-bezier(.4,0,.2,1),
57
- transform .32s cubic-bezier(.4,0,.2,1),
58
- opacity .25s ease;
59
- overflow: hidden;
60
- }
61
- /* Style mode: show bottom sheet */
62
- body.style-mode #right {
63
- max-height: 52px;
64
- opacity: 1;
65
- }
66
- /* Expanded state */
67
- body.mobile-sheet-open #right {
68
- max-height: 70vh;
69
- overflow-y: auto;
70
- }
71
-
72
- /* ── Drag handle indicator on the sheet ── */
73
- #right::before {
74
- content: '';
75
- display: block;
76
- width: 36px;
77
- height: 4px;
78
- background: var(--border-strong);
79
- border-radius: 2px;
80
- margin: 6px auto 0px;
81
- flex-shrink: 0;
82
- }
83
-
84
- /* ── Make header tappable to expand ── */
85
- #right-header {
86
- cursor: pointer;
87
- user-select: none;
88
- flex-shrink: 0;
89
- min-height: 42px;
90
- align-items: baseline;
91
- padding: 4px 12px 0px 12px;
92
- }
93
-
94
- /* ── Hide "Save as default styles" on mobile ── */
95
- #right .panel-section:last-child { display: none; }
96
-
97
- /* ── Export panel: bottom sheet overlay ── */
98
- #export-panel {
99
- position: fixed;
100
- bottom: 0;
101
- left: 0;
102
- right: 0;
103
- width: 100% !important;
104
- max-height: 0;
105
- border-radius: 16px 16px 0 0;
106
- box-shadow: 0 -4px 24px rgba(28,25,23,.15), 0 -1px 4px rgba(28,25,23,.08);
107
- z-index: 100;
108
- transition: max-height .32s cubic-bezier(.4,0,.2,1),
109
- opacity .25s ease;
110
- overflow: hidden;
111
- }
112
- body.export-mode #export-panel {
113
- max-height: 52px;
114
- opacity: 1;
115
- }
116
- body.mobile-export-open #export-panel {
117
- max-height: 70vh;
118
- overflow-y: auto;
119
- }
120
-
121
- /* ── Export panel drag handle ── */
122
- #export-panel::before {
123
- content: '';
124
- display: block;
125
- width: 36px;
126
- height: 4px;
127
- background: var(--border-strong);
128
- border-radius: 2px;
129
- margin: 6px auto 0px;
130
- flex-shrink: 0;
131
- }
132
-
133
- /* ── Export panel header: tappable ── */
134
- #export-panel-header {
135
- cursor: pointer;
136
- user-select: none;
137
- flex-shrink: 0;
138
- min-height: 42px;
139
- align-items: baseline;
140
- padding: 4px 12px 0px 12px;
141
- }
142
- }
143
-
144
- /* ═══════════════════════════════════════════════════
145
- TOOLBAR SCROLL FADE HINT (< 560px / < 342px)
146
- Right-edge gradient that fades out when scrolled
147
- ═══════════════════════════════════════════════════ */
148
- @media (max-width: 560px) {
149
- body.write-mode #write-toolbar.has-overflow::after {
150
- content: '';
151
- position: absolute;
152
- top: 0;
153
- right: 0;
154
- width: 32px;
155
- height: 100%;
156
- background: linear-gradient(to right, transparent, var(--bg) 90%);
157
- pointer-events: none;
158
- opacity: 1;
159
- transition: opacity .2s ease;
160
- }
161
- body.write-mode #write-toolbar.scrolled-end::after {
162
- opacity: 0;
163
- }
164
- }
165
-
166
- /* ═══════════════════════════════════════════════════
167
- NARROW MOBILE (< 366px)
168
- ═══════════════════════════════════════════════════ */
169
- @media (max-width: 366px) {
170
- .toolbar-brand-short { display: none; }
171
- .toolbar-brand-tiny { display: inline; font-size: 13px; font-weight: 600; }
172
- }
173
-
174
- /* ═══════════════════════════════════════════════════
175
- VERY NARROW (< 342px)
176
- ═══════════════════════════════════════════════════ */
177
- @media (max-width: 342px) {
178
- #left-toolbar {
179
- position: sticky;
180
- }
181
- #left-toolbar.has-overflow::after {
182
- content: '';
183
- position: absolute;
184
- top: 0;
185
- right: 0;
186
- width: 32px;
187
- height: 100%;
188
- background: linear-gradient(to right, transparent, var(--bg) 90%);
189
- pointer-events: none;
190
- opacity: 1;
191
- transition: opacity .2s ease;
192
- }
193
- #left-toolbar.scrolled-end::after {
194
- opacity: 0;
195
- }
196
- }