bunnyquery 1.8.6 → 1.8.8

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/bunnyquery.css CHANGED
@@ -762,7 +762,7 @@
762
762
  cursor: pointer;
763
763
  z-index: 1;
764
764
  }
765
- .bq-attach-btn:hover:not(:disabled) { color: var(--bq-main); }
765
+ .bq-attach-btn:hover:not(:disabled) { color: var(--bq-main);transform: none; }
766
766
  .bq-attach-btn:disabled { opacity: 0.5; cursor: not-allowed; }
767
767
  .bq-attach-input { display: none; }
768
768
  .bq-input {
@@ -826,6 +826,40 @@
826
826
  pointer-events: none;
827
827
  }
828
828
  .bq-attachment.is-uploading > * { position: relative; z-index: 1; }
829
+ /* The two indeterminate phases, both drawn as a barber pole over the full chip
830
+ because neither has a percentage to show (mirror of agent.vue):
831
+ is-preparing: before the first byte-progress event, while get-signed-url
832
+ is in flight. A bar at 0% here reads as a stalled upload.
833
+ is-finalizing: bytes done, post-upload work (signed url, src:: record,
834
+ indexing dispatch) still running. A bar frozen at a solid
835
+ 100% reads as hung.
836
+ Between them the bar is determinate and driven by --att-progress. */
837
+ .bq-attachment.is-preparing::before,
838
+ .bq-attachment.is-finalizing::before {
839
+ width: 100%;
840
+ background: repeating-linear-gradient(
841
+ -45deg,
842
+ color-mix(in srgb, var(--bq-main) 22%, transparent) 0 8px,
843
+ color-mix(in srgb, var(--bq-main) 10%, transparent) 8px 16px
844
+ );
845
+ background-size: 22.6px 100%;
846
+ animation: bq-att-barber 0.8s linear infinite;
847
+ transition: none;
848
+ }
849
+ .bq-attachment.is-preparing .bq-attachment-meta::after,
850
+ .bq-attachment.is-finalizing .bq-attachment-meta::after {
851
+ content: ".";
852
+ display: inline-block;
853
+ width: 1.1em;
854
+ text-align: left;
855
+ animation: bq-att-dots 1.2s steps(1) infinite;
856
+ }
857
+ @keyframes bq-att-barber { to { background-position: 22.6px 0; } }
858
+ @keyframes bq-att-dots {
859
+ 0% { content: "."; }
860
+ 33% { content: ".."; }
861
+ 66% { content: "..."; }
862
+ }
829
863
  .bq-attachment.is-error { border-color: var(--bq-danger); background: var(--bq-danger-bg); }
830
864
  .bq-attachment.is-error .bq-attachment-meta,
831
865
  .bq-attachment.is-error .bq-attachment-name { color: var(--bq-danger); }
@@ -1026,6 +1060,7 @@
1026
1060
  .bq-message.is-assistant { justify-content: flex-start; }
1027
1061
 
1028
1062
  .bq-bubble {
1063
+ max-width: 100%;
1029
1064
  padding: 0.55rem 0.7rem;
1030
1065
  border: 1px solid var(--bq-line);
1031
1066
  white-space: pre-wrap;
@@ -1220,6 +1255,24 @@
1220
1255
  state does not know. A slow fade says "pending" without claiming progress. */
1221
1256
  .bq-index-group.is-resolving .bq-index-icon svg { animation: bq-index-fade 1.6s ease-in-out infinite; }
1222
1257
  @keyframes bq-index-fade { 0%, 100% { opacity: 1; } 50% { opacity: 0.35; } }
1258
+ /* Expand-triggered history fetch: spinning arrows in the row head while the
1259
+ run's passes are being paged in. A SEPARATE element from the status icon on
1260
+ purpose — the row keeps its verdict (green check, grey clock) and this only
1261
+ says "fetching more detail about it", whatever that verdict is. */
1262
+ .bq-index-fetch {
1263
+ width: 0.85rem;
1264
+ height: 0.85rem;
1265
+ flex: none;
1266
+ margin-left: 0.35rem;
1267
+ color: var(--bq-muted);
1268
+ display: inline-flex;
1269
+ }
1270
+ .bq-index-fetch svg { width: 100%; height: 100%; display: block; animation: bq-index-spin 1.1s linear infinite; }
1271
+ /* The in-row loading note under an OPEN row while its passes stream in. */
1272
+ .bq-index-note .bq-loader { margin-left: 0.15rem; }
1273
+ @media (prefers-reduced-motion: reduce) {
1274
+ .bq-index-fetch svg { animation-duration: 3s; }
1275
+ }
1223
1276
  @media (prefers-reduced-motion: reduce) {
1224
1277
  .bq-index-group.is-active .bq-index-icon svg { animation-duration: 3s; }
1225
1278
  /* A fade has no end state to settle on, so it stops rather than slows. */
@@ -1257,7 +1310,7 @@
1257
1310
  line-height: 1.3;
1258
1311
  letter-spacing: 0.02em;
1259
1312
  cursor: pointer;
1260
- box-shadow: none;
1313
+ box-shadow: 2px 2px rgba(0, 0, 0, 0.12);
1261
1314
  opacity: 0.8;
1262
1315
  }
1263
1316
  .bq-index-cancel:hover:not(.is-disabled) { background: var(--bq-warning-bg); color: var(--bq-warning); opacity: 1; }
@@ -1311,10 +1364,12 @@
1311
1364
  font-size: 0.78rem;
1312
1365
  color: var(--bq-muted);
1313
1366
  }
1314
- /* An open row animates for as long as the file is indexing, which can be minutes.
1315
- Readers who ask for less motion get the static end state. */
1367
+ /* An open row animates for as long as the file is indexing, which can be
1368
+ minutes, and the user-side drafting bubble animates for as long as a draft
1369
+ sits in the composer. Readers who ask for less motion get the static dots. */
1316
1370
  @media (prefers-reduced-motion: reduce) {
1317
- .bq-index-tail .bq-loader::after { animation: none; content: '...'; }
1371
+ .bq-index-tail .bq-loader::after,
1372
+ .bq-user-drafting .bq-loader::after { animation: none; content: '...'; }
1318
1373
  }
1319
1374
  .bq-index-note {
1320
1375
  padding: 0 0.6rem 0.45rem;
@@ -1480,3 +1535,38 @@
1480
1535
  .bq-md strong { font-weight: 600; }
1481
1536
  .bq-md em { font-style: italic; }
1482
1537
  .bq-md del { text-decoration: line-through; }
1538
+ /* ---- host-page insulation -------------------------------------------------*/
1539
+ /* The markdown above renders into whatever page this chat sits in: the admin
1540
+ app with its own global stylesheet, or - for the embedded widget - a HOST
1541
+ page with arbitrary CSS. Element-level globals leak straight into it, and
1542
+ form controls are the class nothing above styles on purpose: the admin app
1543
+ styles every <input> as a 3rem bordered mono text field, which turned a GFM
1544
+ task-list checkbox into a giant text box. `revert` rolls each property back
1545
+ to the BROWSER default (as if no author CSS existed), which is the honest
1546
+ baseline for a control the markdown produced; `initial`/`unset` would
1547
+ instead strip even the user-agent's own control styling. */
1548
+ .bq-md input,
1549
+ .bq-md select,
1550
+ .bq-md textarea,
1551
+ .bq-md button {
1552
+ all: revert;
1553
+ }
1554
+ /* GFM task list: `- [x] item` renders as a disabled checkbox in the list item.
1555
+ Re-state the little we DO want on top of the revert: sit on the text
1556
+ baseline with a small gap, brand accent. The geometry (width/height/
1557
+ min-height/padding) is pinned explicitly, at higher specificity than the
1558
+ revert rule, so a host sheet whose input rules are more specific than
1559
+ `.bq-md input` still loses the properties that actually break layout. */
1560
+ .bq-md input[type="checkbox"] {
1561
+ width: auto;
1562
+ height: auto;
1563
+ min-height: 0;
1564
+ padding: 0;
1565
+ margin: 0 0.4em 0.1em 0;
1566
+ vertical-align: middle;
1567
+ accent-color: var(--bq-main);
1568
+ }
1569
+ /* GitHub-style: a task-list item shows the checkbox INSTEAD of a bullet, not
1570
+ next to one. :has() is safe here - every supported browser ships it, and a
1571
+ miss only means a redundant bullet. */
1572
+ .bq-md li:has(> input[type="checkbox"]:first-child) { list-style: none; }