@dogsbay/plugin-ask 0.2.0-beta.101

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/styles.css ADDED
@@ -0,0 +1,207 @@
1
+ /**
2
+ * Styles for @dogsbay/plugin-ask. Uses Dogsbay theme tokens where available
3
+ * with safe fallbacks, so it themes automatically but never breaks if a token
4
+ * is missing. All selectors are namespaced under .dba- to avoid collisions.
5
+ */
6
+
7
+ #dba-root {
8
+ --dba-accent: var(--color-primary, #2563eb);
9
+ --dba-accent-contrast: var(--color-primary-foreground, #ffffff);
10
+ --dba-surface: var(--color-background, #ffffff);
11
+ --dba-text: var(--color-foreground, #1f2937);
12
+ --dba-border: var(--color-border, #e5e7eb);
13
+ --dba-radius: var(--radius, 0.5rem);
14
+ }
15
+
16
+ /* Docked rail panel (RightRailAsk.astro) lives OUTSIDE #dba-root, so it needs
17
+ its own token block to pick up the site theme (same tokens as #dba-root). */
18
+ .dba-panel {
19
+ --dba-accent: var(--color-primary, #2563eb);
20
+ --dba-accent-contrast: var(--color-primary-foreground, #ffffff);
21
+ --dba-surface: var(--color-background, #ffffff);
22
+ --dba-text: var(--color-foreground, #1f2937);
23
+ --dba-border: var(--color-border, #e5e7eb);
24
+ --dba-radius: var(--radius, 0.5rem);
25
+ color: var(--dba-text);
26
+ font-size: 0.9rem;
27
+ }
28
+ /* The docked form fills the rail column. */
29
+ .dba-panel .dba-form { padding: 0; gap: 0.5rem; }
30
+ .dba-panel .dba-title { font-size: 0.95rem; }
31
+ /* The rail aside scrolls, so let answers grow rather than scroll internally. */
32
+ .dba-panel .dba-answer { max-height: none; }
33
+ /* Keep the input visible while the rail scrolls the conversation. */
34
+ .dba-panel .dba-inputrow {
35
+ position: sticky;
36
+ bottom: 0;
37
+ background: var(--dba-surface);
38
+ padding-block: 0.4rem;
39
+ }
40
+
41
+ /* Conversation thread (docked panel + floating dialog). */
42
+ .dba-thread { display: flex; flex-direction: column; gap: 0.75rem; }
43
+ .dba-thread:empty { display: none; }
44
+ .dba-turn-user {
45
+ align-self: flex-end;
46
+ max-width: 92%;
47
+ padding: 0.4rem 0.7rem;
48
+ white-space: pre-wrap;
49
+ background: color-mix(in srgb, var(--dba-accent) 14%, transparent);
50
+ border-radius: var(--dba-radius);
51
+ }
52
+ .dba-turn-assistant { align-self: stretch; }
53
+ .dba-header-actions { display: flex; align-items: center; gap: 0.4rem; }
54
+ .dba-newchat {
55
+ font: inherit;
56
+ font-size: 0.78rem;
57
+ padding: 0.2rem 0.5rem;
58
+ cursor: pointer;
59
+ color: var(--dba-text);
60
+ opacity: 0.7;
61
+ background: none;
62
+ border: 1px solid var(--dba-border);
63
+ border-radius: var(--dba-radius);
64
+ }
65
+ .dba-newchat:hover { opacity: 1; }
66
+ /* In the modal, bound the thread so it scrolls and the input stays visible. */
67
+ .dba-dialog .dba-thread { max-height: 55vh; overflow-y: auto; }
68
+
69
+ /* Reader opt-out for conversation persistence. */
70
+ .dba-remember {
71
+ display: flex;
72
+ align-items: center;
73
+ gap: 0.4rem;
74
+ font-size: 0.78rem;
75
+ opacity: 0.75;
76
+ cursor: pointer;
77
+ }
78
+ .dba-remember input { cursor: pointer; }
79
+
80
+ .dba-trigger {
81
+ position: fixed;
82
+ bottom: 1.25rem;
83
+ z-index: 60;
84
+ padding: 0.625rem 1rem;
85
+ font: inherit;
86
+ font-weight: 600;
87
+ color: var(--dba-accent-contrast);
88
+ background: var(--dba-accent);
89
+ border: none;
90
+ border-radius: 999px;
91
+ box-shadow: 0 2px 10px rgb(0 0 0 / 0.18);
92
+ cursor: pointer;
93
+ }
94
+ #dba-root[data-position="bottom-right"] .dba-trigger { right: 1.25rem; }
95
+ #dba-root[data-position="bottom-left"] .dba-trigger { left: 1.25rem; }
96
+ .dba-trigger:hover { filter: brightness(1.05); }
97
+ .dba-trigger:focus-visible { outline: 2px solid var(--dba-accent); outline-offset: 2px; }
98
+
99
+ /* When a docked panel is present the floating button is only the mobile entry —
100
+ hide it at the breakpoint where the rail (and its docked panel) is visible.
101
+ 1024px matches DocsLayout's `lg:block` rail. */
102
+ @media (min-width: 1024px) {
103
+ #dba-root[data-has-docked] .dba-trigger { display: none; }
104
+ }
105
+
106
+ .dba-dialog {
107
+ width: min(40rem, 92vw);
108
+ max-height: 80vh;
109
+ padding: 0;
110
+ color: var(--dba-text);
111
+ background: var(--dba-surface);
112
+ border: 1px solid var(--dba-border);
113
+ border-radius: var(--dba-radius);
114
+ box-shadow: 0 10px 40px rgb(0 0 0 / 0.25);
115
+ }
116
+ .dba-dialog::backdrop { background: rgb(0 0 0 / 0.4); }
117
+
118
+ .dba-form { display: flex; flex-direction: column; gap: 0.75rem; padding: 1rem 1.25rem 1.25rem; }
119
+ .dba-header { display: flex; align-items: center; justify-content: space-between; }
120
+ .dba-title { margin: 0; font-size: 1.05rem; }
121
+ .dba-close {
122
+ font-size: 1.5rem; line-height: 1; padding: 0 0.25rem;
123
+ color: inherit; background: none; border: none; cursor: pointer; opacity: 0.6;
124
+ }
125
+ .dba-close:hover { opacity: 1; }
126
+
127
+ .dba-inputrow { display: flex; gap: 0.5rem; }
128
+ .dba-input {
129
+ flex: 1; padding: 0.55rem 0.75rem; font: inherit;
130
+ color: var(--dba-text); background: var(--dba-surface);
131
+ border: 1px solid var(--dba-border); border-radius: var(--dba-radius);
132
+ }
133
+ .dba-input:focus-visible { outline: 2px solid var(--dba-accent); outline-offset: 1px; }
134
+ .dba-submit {
135
+ padding: 0.55rem 1rem; font: inherit; font-weight: 600;
136
+ color: var(--dba-accent-contrast); background: var(--dba-accent);
137
+ border: none; border-radius: var(--dba-radius); cursor: pointer;
138
+ }
139
+ .dba-submit:disabled { opacity: 0.6; cursor: progress; }
140
+
141
+ .dba-answer {
142
+ min-height: 2rem; max-height: 50vh; overflow-y: auto;
143
+ padding: 0.75rem; line-height: 1.55;
144
+ background: color-mix(in srgb, var(--dba-text) 4%, transparent);
145
+ border-radius: var(--dba-radius);
146
+ }
147
+ .dba-turnstile { margin: 0.25rem 0; min-height: 0; }
148
+ .dba-answer[data-state="loading"] { opacity: 0.6; }
149
+ .dba-answer[data-state="error"] { color: #b91c1c; }
150
+
151
+ @media (prefers-reduced-motion: no-preference) {
152
+ .dba-dialog[open] { animation: dba-in 0.12s ease-out; }
153
+ }
154
+ @keyframes dba-in { from { transform: translateY(6px); opacity: 0; } to { transform: none; opacity: 1; } }
155
+
156
+ /* Rendered Markdown inside the answer */
157
+ .dba-answer h1, .dba-answer h2, .dba-answer h3, .dba-answer h4 {
158
+ margin: 0.8em 0 0.3em; line-height: 1.25; font-weight: 600;
159
+ }
160
+ .dba-answer h1 { font-size: 1.2rem; }
161
+ .dba-answer h2 { font-size: 1.1rem; }
162
+ .dba-answer h3 { font-size: 1rem; }
163
+ .dba-answer h4 { font-size: 0.95rem; }
164
+ .dba-answer p { margin: 0.5em 0; }
165
+ .dba-answer ul, .dba-answer ol { margin: 0.5em 0; padding-left: 1.4em; }
166
+ .dba-answer li { margin: 0.15em 0; }
167
+ .dba-answer a { color: var(--dba-accent); text-decoration: underline; }
168
+ .dba-answer code {
169
+ font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 0.9em;
170
+ padding: 0.1em 0.3em; border-radius: 4px;
171
+ background: color-mix(in srgb, var(--dba-text) 9%, transparent);
172
+ }
173
+ .dba-answer pre {
174
+ margin: 0.6em 0; padding: 0.7em 0.8em; overflow-x: auto; border-radius: var(--dba-radius);
175
+ background: color-mix(in srgb, var(--dba-text) 9%, transparent);
176
+ }
177
+ .dba-answer pre code { padding: 0; background: none; }
178
+
179
+ /* Answer feedback (thumbs up/down) */
180
+ .dba-feedback {
181
+ display: flex;
182
+ align-items: center;
183
+ gap: 0.4rem;
184
+ margin-top: 0.6em;
185
+ font-size: 0.8rem;
186
+ opacity: 0.85;
187
+ }
188
+ .dba-feedback-q { opacity: 0.7; }
189
+ .dba-fb {
190
+ font-size: 0.95rem;
191
+ line-height: 1;
192
+ padding: 0.15rem 0.35rem;
193
+ cursor: pointer;
194
+ background: none;
195
+ border: 1px solid var(--dba-border);
196
+ border-radius: var(--dba-radius);
197
+ }
198
+ .dba-fb:hover { background: color-mix(in srgb, var(--dba-text) 8%, transparent); }
199
+ .dba-fb:focus-visible { outline: 2px solid var(--dba-accent); outline-offset: 1px; }
200
+ .dba-feedback-done { opacity: 0.6; font-style: italic; }
201
+
202
+ /* Sources list */
203
+ .dba-sources { margin-top: 1em; padding-top: 0.6em; border-top: 1px solid var(--dba-border); }
204
+ .dba-sources-title { font-size: 0.8rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.04em; opacity: 0.7; margin-bottom: 0.3em; }
205
+ .dba-sources ul { margin: 0; padding-left: 1.2em; }
206
+ .dba-sources li { margin: 0.1em 0; font-size: 0.9em; }
207
+ .dba-sources a { color: var(--dba-accent); }