@riebeckite/plugin-garden-explorer 0.0.19 → 0.0.20

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/README.md CHANGED
@@ -141,6 +141,6 @@ explorer/detail structure and links in semantic lists.
141
141
 
142
142
  ## See also
143
143
 
144
- - [Plugin guide](../../../docs/docs/reference/plugin-api.en.md)
144
+ - [Plugin guide](../../../docs/docs/reference/plugin-api.md)
145
145
  - [`@riebeckite/plugin-local-graph`](../local-graph/README.md)
146
146
 
package/README_ja.md CHANGED
@@ -102,6 +102,6 @@ return <GardenExplorer data={data} />;
102
102
 
103
103
  ## 関連資料
104
104
 
105
- - [プラグインシステム](../../../docs/docs/reference/plugin-api.md)
105
+ - [プラグインシステム](../../../docs/docs/reference/plugin-api.ja.md)
106
106
  - [`@riebeckite/plugin-local-graph`](../local-graph/README_ja.md)
107
107
 
package/dist/client.js CHANGED
@@ -101,13 +101,13 @@ function scoreFuzzyMatch(value, query) {
101
101
  // components/explorer-panels.tsx
102
102
  import { jsx, jsxs } from "hono/jsx/jsx-runtime";
103
103
  function FilterList(props) {
104
- return /* @__PURE__ */ jsxs("div", { class: "garden-explorer__section", children: [
105
- /* @__PURE__ */ jsx("p", { class: "garden-explorer__eyebrow", children: props.title }),
106
- /* @__PURE__ */ jsx("div", { class: "garden-explorer__chips", children: props.items.slice(0, 28).map((item) => /* @__PURE__ */ jsxs(
104
+ return /* @__PURE__ */ jsxs("div", { class: "rr-garden-explorer__section", children: [
105
+ /* @__PURE__ */ jsx("p", { class: "rr-garden-explorer__eyebrow", children: props.title }),
106
+ /* @__PURE__ */ jsx("div", { class: "rr-garden-explorer__chips", children: props.items.slice(0, 28).map((item) => /* @__PURE__ */ jsxs(
107
107
  "button",
108
108
  {
109
109
  type: "button",
110
- class: "garden-explorer__chip",
110
+ class: "rr-garden-explorer__chip",
111
111
  "aria-pressed": props.selectedKey === item.key,
112
112
  onClick: () => props.onSelect(item.key),
113
113
  children: [
@@ -120,7 +120,7 @@ function FilterList(props) {
120
120
  ] });
121
121
  }
122
122
  function NoteList(props) {
123
- return /* @__PURE__ */ jsx("ul", { class: "garden-explorer__note-list", children: props.notes.map((note) => /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsxs(
123
+ return /* @__PURE__ */ jsx("ul", { class: "rr-garden-explorer__note-list", children: props.notes.map((note) => /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsxs(
124
124
  "button",
125
125
  {
126
126
  type: "button",
@@ -134,12 +134,12 @@ function NoteList(props) {
134
134
  ) }, note.slug)) });
135
135
  }
136
136
  function NoteDetails(props) {
137
- return /* @__PURE__ */ jsxs("div", { class: "garden-explorer__details", children: [
138
- /* @__PURE__ */ jsx("p", { class: "garden-explorer__eyebrow", children: "Selected Note" }),
137
+ return /* @__PURE__ */ jsxs("div", { class: "rr-garden-explorer__details", children: [
138
+ /* @__PURE__ */ jsx("p", { class: "rr-garden-explorer__eyebrow", children: "Selected Note" }),
139
139
  /* @__PURE__ */ jsx("h2", { children: /* @__PURE__ */ jsx("a", { href: props.note.permalink, children: props.note.title }) }),
140
- /* @__PURE__ */ jsx("p", { class: "garden-explorer__path", children: props.note.slug }),
140
+ /* @__PURE__ */ jsx("p", { class: "rr-garden-explorer__path", children: props.note.slug }),
141
141
  props.note.excerpt && /* @__PURE__ */ jsx("p", { children: props.note.excerpt }),
142
- /* @__PURE__ */ jsx("div", { class: "garden-explorer__tag-row", children: props.note.tags.map((tag) => /* @__PURE__ */ jsxs("span", { children: [
142
+ /* @__PURE__ */ jsx("div", { class: "rr-garden-explorer__tag-row", children: props.note.tags.map((tag) => /* @__PURE__ */ jsxs("span", { children: [
143
143
  "#",
144
144
  tag
145
145
  ] }, tag)) }),
@@ -161,8 +161,8 @@ function NoteDetails(props) {
161
161
  onSelect: props.onSelect
162
162
  }
163
163
  ),
164
- /* @__PURE__ */ jsxs("div", { class: "garden-explorer__section garden-explorer__section--flush", children: [
165
- /* @__PURE__ */ jsx("p", { class: "garden-explorer__eyebrow", children: "Related Notes" }),
164
+ /* @__PURE__ */ jsxs("div", { class: "rr-garden-explorer__section rr-garden-explorer__section--flush", children: [
165
+ /* @__PURE__ */ jsx("p", { class: "rr-garden-explorer__eyebrow", children: "Related Notes" }),
166
166
  /* @__PURE__ */ jsx(
167
167
  NoteList,
168
168
  {
@@ -176,9 +176,9 @@ function NoteDetails(props) {
176
176
  }
177
177
  function LinkedNoteSection(props) {
178
178
  const notes = props.slugs.map((slug) => props.noteBySlug.get(slug)).filter((note) => note !== void 0);
179
- return /* @__PURE__ */ jsxs("div", { class: "garden-explorer__section garden-explorer__section--flush", children: [
180
- /* @__PURE__ */ jsx("p", { class: "garden-explorer__eyebrow", children: props.title }),
181
- notes.length > 0 ? /* @__PURE__ */ jsx(NoteList, { notes, selectedSlug: "", onSelect: props.onSelect }) : /* @__PURE__ */ jsx("p", { class: "garden-explorer__empty", children: "No notes." })
179
+ return /* @__PURE__ */ jsxs("div", { class: "rr-garden-explorer__section rr-garden-explorer__section--flush", children: [
180
+ /* @__PURE__ */ jsx("p", { class: "rr-garden-explorer__eyebrow", children: props.title }),
181
+ notes.length > 0 ? /* @__PURE__ */ jsx(NoteList, { notes, selectedSlug: "", onSelect: props.onSelect }) : /* @__PURE__ */ jsx("p", { class: "rr-garden-explorer__empty", children: "No notes." })
182
182
  ] });
183
183
  }
184
184
 
@@ -380,14 +380,14 @@ function GardenExplorer(props) {
380
380
  setPinnedNodes((current) => ({ ...current, [currentDrag.slug]: point }));
381
381
  if (!currentDrag.hasMoved) setDrag({ ...currentDrag, hasMoved: true });
382
382
  };
383
- return /* @__PURE__ */ jsxs2("div", { class: "garden-explorer rr-garden-explorer", "data-garden-explorer": true, children: [
384
- /* @__PURE__ */ jsxs2("fieldset", { class: "garden-explorer__mobile-tabs", children: [
383
+ return /* @__PURE__ */ jsxs2("div", { class: "rr-garden-explorer", "data-garden-explorer": true, children: [
384
+ /* @__PURE__ */ jsxs2("fieldset", { class: "rr-garden-explorer__mobile-tabs", children: [
385
385
  /* @__PURE__ */ jsx2("legend", { class: "sr-only", children: "Explorer panels" }),
386
386
  ["graph", "explorer", "details"].map((panel) => /* @__PURE__ */ jsx2(
387
387
  "button",
388
388
  {
389
389
  type: "button",
390
- class: "garden-explorer__mobile-tab",
390
+ class: "rr-garden-explorer__mobile-tab",
391
391
  "aria-pressed": mobilePanel === panel,
392
392
  onClick: () => setMobilePanel(panel),
393
393
  children: panel
@@ -395,9 +395,9 @@ function GardenExplorer(props) {
395
395
  ))
396
396
  ] }),
397
397
  /* @__PURE__ */ jsxs2("aside", { class: panelClass("explorer", mobilePanel), children: [
398
- /* @__PURE__ */ jsxs2("div", { class: "garden-explorer__section", children: [
399
- /* @__PURE__ */ jsx2("p", { class: "garden-explorer__eyebrow", children: "Explorer" }),
400
- /* @__PURE__ */ jsxs2("label", { class: "garden-explorer__search", children: [
398
+ /* @__PURE__ */ jsxs2("div", { class: "rr-garden-explorer__section", children: [
399
+ /* @__PURE__ */ jsx2("p", { class: "rr-garden-explorer__eyebrow", children: "Explorer" }),
400
+ /* @__PURE__ */ jsxs2("label", { class: "rr-garden-explorer__search", children: [
401
401
  /* @__PURE__ */ jsx2("span", { class: "sr-only", children: "Search notes" }),
402
402
  /* @__PURE__ */ jsx2(
403
403
  "input",
@@ -413,7 +413,7 @@ function GardenExplorer(props) {
413
413
  "button",
414
414
  {
415
415
  type: "button",
416
- class: "garden-explorer__text-button",
416
+ class: "rr-garden-explorer__text-button",
417
417
  onClick: clearFilters,
418
418
  children: "Clear filters"
419
419
  }
@@ -445,10 +445,10 @@ function GardenExplorer(props) {
445
445
  onSelect: (key) => setSelectedFolder(key === selectedFolder ? null : key)
446
446
  }
447
447
  ) : null,
448
- /* @__PURE__ */ jsxs2("div", { class: "garden-explorer__section", children: [
449
- /* @__PURE__ */ jsxs2("p", { class: "garden-explorer__eyebrow", children: [
448
+ /* @__PURE__ */ jsxs2("div", { class: "rr-garden-explorer__section", children: [
449
+ /* @__PURE__ */ jsxs2("p", { class: "rr-garden-explorer__eyebrow", children: [
450
450
  "Notes",
451
- filteredNotes.length > listNotes.length && /* @__PURE__ */ jsxs2("span", { class: "garden-explorer__count-badge", children: [
451
+ filteredNotes.length > listNotes.length && /* @__PURE__ */ jsxs2("span", { class: "rr-garden-explorer__count-badge", children: [
452
452
  "showing ",
453
453
  listNotes.length,
454
454
  " of ",
@@ -466,7 +466,7 @@ function GardenExplorer(props) {
466
466
  ] })
467
467
  ] }),
468
468
  /* @__PURE__ */ jsxs2("section", { class: panelClass("graph", mobilePanel), "aria-label": "Note graph", children: [
469
- /* @__PURE__ */ jsxs2("div", { class: "garden-explorer__graph-toolbar", children: [
469
+ /* @__PURE__ */ jsxs2("div", { class: "rr-garden-explorer__graph-toolbar", children: [
470
470
  /* @__PURE__ */ jsxs2("span", { children: [
471
471
  graphMode === "local" ? "Local" : "Global",
472
472
  " graph ·",
@@ -478,18 +478,18 @@ function GardenExplorer(props) {
478
478
  filteredNotes.length,
479
479
  " filtered)"
480
480
  ] }),
481
- shouldGuard && /* @__PURE__ */ jsxs2("span", { class: "garden-explorer__perf-warning", "aria-live": "polite", children: [
481
+ shouldGuard && /* @__PURE__ */ jsxs2("span", { class: "rr-garden-explorer__perf-warning", "aria-live": "polite", children: [
482
482
  "⚠ Force layout may freeze this page (",
483
483
  graphNotes.length,
484
484
  " nodes)"
485
485
  ] }),
486
486
  shouldGuard && !forceLayoutApproved && /* @__PURE__ */ jsxs2(Fragment, { children: [
487
- /* @__PURE__ */ jsx2("span", { class: "garden-explorer__perf-warning", children: "Force layout not run automatically." }),
487
+ /* @__PURE__ */ jsx2("span", { class: "rr-garden-explorer__perf-warning", children: "Force layout not run automatically." }),
488
488
  /* @__PURE__ */ jsx2(
489
489
  "button",
490
490
  {
491
491
  type: "button",
492
- class: "garden-explorer__force-approve",
492
+ class: "rr-garden-explorer__force-approve",
493
493
  onClick: approveForceLayout,
494
494
  children: "Run force layout anyway"
495
495
  }
@@ -667,7 +667,7 @@ function GardenExplorer(props) {
667
667
  relatedNotes,
668
668
  onSelect: selectNote
669
669
  }
670
- ) : /* @__PURE__ */ jsx2("p", { class: "garden-explorer__empty", children: "Select a note to inspect links." }) })
670
+ ) : /* @__PURE__ */ jsx2("p", { class: "rr-garden-explorer__empty", children: "Select a note to inspect links." }) })
671
671
  ] });
672
672
  }
673
673
  function layoutNodes(notes, selectedSlug, options) {
@@ -718,7 +718,7 @@ function getRelatedSlugSet(selectedSlug, hoveredSlug, edges) {
718
718
  return related;
719
719
  }
720
720
  function panelClass(panel, activePanel) {
721
- return `garden-explorer__panel garden-explorer__panel--${panel}${panel === activePanel ? " garden-explorer__panel--active" : ""}`;
721
+ return `rr-garden-explorer__panel rr-garden-explorer__panel--${panel}${panel === activePanel ? " rr-garden-explorer__panel--active" : ""}`;
722
722
  }
723
723
  function clamp(value, min, max) {
724
724
  return Math.min(Math.max(value, min), max);
@@ -98,13 +98,13 @@ function scoreFuzzyMatch(value, query) {
98
98
  // components/explorer-panels.tsx
99
99
  import { jsx, jsxs } from "hono/jsx/jsx-runtime";
100
100
  function FilterList(props) {
101
- return /* @__PURE__ */ jsxs("div", { class: "garden-explorer__section", children: [
102
- /* @__PURE__ */ jsx("p", { class: "garden-explorer__eyebrow", children: props.title }),
103
- /* @__PURE__ */ jsx("div", { class: "garden-explorer__chips", children: props.items.slice(0, 28).map((item) => /* @__PURE__ */ jsxs(
101
+ return /* @__PURE__ */ jsxs("div", { class: "rr-garden-explorer__section", children: [
102
+ /* @__PURE__ */ jsx("p", { class: "rr-garden-explorer__eyebrow", children: props.title }),
103
+ /* @__PURE__ */ jsx("div", { class: "rr-garden-explorer__chips", children: props.items.slice(0, 28).map((item) => /* @__PURE__ */ jsxs(
104
104
  "button",
105
105
  {
106
106
  type: "button",
107
- class: "garden-explorer__chip",
107
+ class: "rr-garden-explorer__chip",
108
108
  "aria-pressed": props.selectedKey === item.key,
109
109
  onClick: () => props.onSelect(item.key),
110
110
  children: [
@@ -117,7 +117,7 @@ function FilterList(props) {
117
117
  ] });
118
118
  }
119
119
  function NoteList(props) {
120
- return /* @__PURE__ */ jsx("ul", { class: "garden-explorer__note-list", children: props.notes.map((note) => /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsxs(
120
+ return /* @__PURE__ */ jsx("ul", { class: "rr-garden-explorer__note-list", children: props.notes.map((note) => /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsxs(
121
121
  "button",
122
122
  {
123
123
  type: "button",
@@ -131,12 +131,12 @@ function NoteList(props) {
131
131
  ) }, note.slug)) });
132
132
  }
133
133
  function NoteDetails(props) {
134
- return /* @__PURE__ */ jsxs("div", { class: "garden-explorer__details", children: [
135
- /* @__PURE__ */ jsx("p", { class: "garden-explorer__eyebrow", children: "Selected Note" }),
134
+ return /* @__PURE__ */ jsxs("div", { class: "rr-garden-explorer__details", children: [
135
+ /* @__PURE__ */ jsx("p", { class: "rr-garden-explorer__eyebrow", children: "Selected Note" }),
136
136
  /* @__PURE__ */ jsx("h2", { children: /* @__PURE__ */ jsx("a", { href: props.note.permalink, children: props.note.title }) }),
137
- /* @__PURE__ */ jsx("p", { class: "garden-explorer__path", children: props.note.slug }),
137
+ /* @__PURE__ */ jsx("p", { class: "rr-garden-explorer__path", children: props.note.slug }),
138
138
  props.note.excerpt && /* @__PURE__ */ jsx("p", { children: props.note.excerpt }),
139
- /* @__PURE__ */ jsx("div", { class: "garden-explorer__tag-row", children: props.note.tags.map((tag) => /* @__PURE__ */ jsxs("span", { children: [
139
+ /* @__PURE__ */ jsx("div", { class: "rr-garden-explorer__tag-row", children: props.note.tags.map((tag) => /* @__PURE__ */ jsxs("span", { children: [
140
140
  "#",
141
141
  tag
142
142
  ] }, tag)) }),
@@ -158,8 +158,8 @@ function NoteDetails(props) {
158
158
  onSelect: props.onSelect
159
159
  }
160
160
  ),
161
- /* @__PURE__ */ jsxs("div", { class: "garden-explorer__section garden-explorer__section--flush", children: [
162
- /* @__PURE__ */ jsx("p", { class: "garden-explorer__eyebrow", children: "Related Notes" }),
161
+ /* @__PURE__ */ jsxs("div", { class: "rr-garden-explorer__section rr-garden-explorer__section--flush", children: [
162
+ /* @__PURE__ */ jsx("p", { class: "rr-garden-explorer__eyebrow", children: "Related Notes" }),
163
163
  /* @__PURE__ */ jsx(
164
164
  NoteList,
165
165
  {
@@ -173,9 +173,9 @@ function NoteDetails(props) {
173
173
  }
174
174
  function LinkedNoteSection(props) {
175
175
  const notes = props.slugs.map((slug) => props.noteBySlug.get(slug)).filter((note) => note !== void 0);
176
- return /* @__PURE__ */ jsxs("div", { class: "garden-explorer__section garden-explorer__section--flush", children: [
177
- /* @__PURE__ */ jsx("p", { class: "garden-explorer__eyebrow", children: props.title }),
178
- notes.length > 0 ? /* @__PURE__ */ jsx(NoteList, { notes, selectedSlug: "", onSelect: props.onSelect }) : /* @__PURE__ */ jsx("p", { class: "garden-explorer__empty", children: "No notes." })
176
+ return /* @__PURE__ */ jsxs("div", { class: "rr-garden-explorer__section rr-garden-explorer__section--flush", children: [
177
+ /* @__PURE__ */ jsx("p", { class: "rr-garden-explorer__eyebrow", children: props.title }),
178
+ notes.length > 0 ? /* @__PURE__ */ jsx(NoteList, { notes, selectedSlug: "", onSelect: props.onSelect }) : /* @__PURE__ */ jsx("p", { class: "rr-garden-explorer__empty", children: "No notes." })
179
179
  ] });
180
180
  }
181
181
 
@@ -377,14 +377,14 @@ function GardenExplorer(props) {
377
377
  setPinnedNodes((current) => ({ ...current, [currentDrag.slug]: point }));
378
378
  if (!currentDrag.hasMoved) setDrag({ ...currentDrag, hasMoved: true });
379
379
  };
380
- return /* @__PURE__ */ jsxs2("div", { class: "garden-explorer rr-garden-explorer", "data-garden-explorer": true, children: [
381
- /* @__PURE__ */ jsxs2("fieldset", { class: "garden-explorer__mobile-tabs", children: [
380
+ return /* @__PURE__ */ jsxs2("div", { class: "rr-garden-explorer", "data-garden-explorer": true, children: [
381
+ /* @__PURE__ */ jsxs2("fieldset", { class: "rr-garden-explorer__mobile-tabs", children: [
382
382
  /* @__PURE__ */ jsx2("legend", { class: "sr-only", children: "Explorer panels" }),
383
383
  ["graph", "explorer", "details"].map((panel) => /* @__PURE__ */ jsx2(
384
384
  "button",
385
385
  {
386
386
  type: "button",
387
- class: "garden-explorer__mobile-tab",
387
+ class: "rr-garden-explorer__mobile-tab",
388
388
  "aria-pressed": mobilePanel === panel,
389
389
  onClick: () => setMobilePanel(panel),
390
390
  children: panel
@@ -392,9 +392,9 @@ function GardenExplorer(props) {
392
392
  ))
393
393
  ] }),
394
394
  /* @__PURE__ */ jsxs2("aside", { class: panelClass("explorer", mobilePanel), children: [
395
- /* @__PURE__ */ jsxs2("div", { class: "garden-explorer__section", children: [
396
- /* @__PURE__ */ jsx2("p", { class: "garden-explorer__eyebrow", children: "Explorer" }),
397
- /* @__PURE__ */ jsxs2("label", { class: "garden-explorer__search", children: [
395
+ /* @__PURE__ */ jsxs2("div", { class: "rr-garden-explorer__section", children: [
396
+ /* @__PURE__ */ jsx2("p", { class: "rr-garden-explorer__eyebrow", children: "Explorer" }),
397
+ /* @__PURE__ */ jsxs2("label", { class: "rr-garden-explorer__search", children: [
398
398
  /* @__PURE__ */ jsx2("span", { class: "sr-only", children: "Search notes" }),
399
399
  /* @__PURE__ */ jsx2(
400
400
  "input",
@@ -410,7 +410,7 @@ function GardenExplorer(props) {
410
410
  "button",
411
411
  {
412
412
  type: "button",
413
- class: "garden-explorer__text-button",
413
+ class: "rr-garden-explorer__text-button",
414
414
  onClick: clearFilters,
415
415
  children: "Clear filters"
416
416
  }
@@ -442,10 +442,10 @@ function GardenExplorer(props) {
442
442
  onSelect: (key) => setSelectedFolder(key === selectedFolder ? null : key)
443
443
  }
444
444
  ) : null,
445
- /* @__PURE__ */ jsxs2("div", { class: "garden-explorer__section", children: [
446
- /* @__PURE__ */ jsxs2("p", { class: "garden-explorer__eyebrow", children: [
445
+ /* @__PURE__ */ jsxs2("div", { class: "rr-garden-explorer__section", children: [
446
+ /* @__PURE__ */ jsxs2("p", { class: "rr-garden-explorer__eyebrow", children: [
447
447
  "Notes",
448
- filteredNotes.length > listNotes.length && /* @__PURE__ */ jsxs2("span", { class: "garden-explorer__count-badge", children: [
448
+ filteredNotes.length > listNotes.length && /* @__PURE__ */ jsxs2("span", { class: "rr-garden-explorer__count-badge", children: [
449
449
  "showing ",
450
450
  listNotes.length,
451
451
  " of ",
@@ -463,7 +463,7 @@ function GardenExplorer(props) {
463
463
  ] })
464
464
  ] }),
465
465
  /* @__PURE__ */ jsxs2("section", { class: panelClass("graph", mobilePanel), "aria-label": "Note graph", children: [
466
- /* @__PURE__ */ jsxs2("div", { class: "garden-explorer__graph-toolbar", children: [
466
+ /* @__PURE__ */ jsxs2("div", { class: "rr-garden-explorer__graph-toolbar", children: [
467
467
  /* @__PURE__ */ jsxs2("span", { children: [
468
468
  graphMode === "local" ? "Local" : "Global",
469
469
  " graph ·",
@@ -475,18 +475,18 @@ function GardenExplorer(props) {
475
475
  filteredNotes.length,
476
476
  " filtered)"
477
477
  ] }),
478
- shouldGuard && /* @__PURE__ */ jsxs2("span", { class: "garden-explorer__perf-warning", "aria-live": "polite", children: [
478
+ shouldGuard && /* @__PURE__ */ jsxs2("span", { class: "rr-garden-explorer__perf-warning", "aria-live": "polite", children: [
479
479
  "⚠ Force layout may freeze this page (",
480
480
  graphNotes.length,
481
481
  " nodes)"
482
482
  ] }),
483
483
  shouldGuard && !forceLayoutApproved && /* @__PURE__ */ jsxs2(Fragment, { children: [
484
- /* @__PURE__ */ jsx2("span", { class: "garden-explorer__perf-warning", children: "Force layout not run automatically." }),
484
+ /* @__PURE__ */ jsx2("span", { class: "rr-garden-explorer__perf-warning", children: "Force layout not run automatically." }),
485
485
  /* @__PURE__ */ jsx2(
486
486
  "button",
487
487
  {
488
488
  type: "button",
489
- class: "garden-explorer__force-approve",
489
+ class: "rr-garden-explorer__force-approve",
490
490
  onClick: approveForceLayout,
491
491
  children: "Run force layout anyway"
492
492
  }
@@ -664,7 +664,7 @@ function GardenExplorer(props) {
664
664
  relatedNotes,
665
665
  onSelect: selectNote
666
666
  }
667
- ) : /* @__PURE__ */ jsx2("p", { class: "garden-explorer__empty", children: "Select a note to inspect links." }) })
667
+ ) : /* @__PURE__ */ jsx2("p", { class: "rr-garden-explorer__empty", children: "Select a note to inspect links." }) })
668
668
  ] });
669
669
  }
670
670
  function layoutNodes(notes, selectedSlug, options) {
@@ -715,7 +715,7 @@ function getRelatedSlugSet(selectedSlug, hoveredSlug, edges) {
715
715
  return related;
716
716
  }
717
717
  function panelClass(panel, activePanel) {
718
- return `garden-explorer__panel garden-explorer__panel--${panel}${panel === activePanel ? " garden-explorer__panel--active" : ""}`;
718
+ return `rr-garden-explorer__panel rr-garden-explorer__panel--${panel}${panel === activePanel ? " rr-garden-explorer__panel--active" : ""}`;
719
719
  }
720
720
  function clamp(value, min, max) {
721
721
  return Math.min(Math.max(value, min), max);
package/dist/index.js CHANGED
@@ -214,13 +214,13 @@ function scoreFuzzyMatch(value, query) {
214
214
  // components/explorer-panels.tsx
215
215
  import { jsx, jsxs } from "hono/jsx/jsx-runtime";
216
216
  function FilterList(props) {
217
- return /* @__PURE__ */ jsxs("div", { class: "garden-explorer__section", children: [
218
- /* @__PURE__ */ jsx("p", { class: "garden-explorer__eyebrow", children: props.title }),
219
- /* @__PURE__ */ jsx("div", { class: "garden-explorer__chips", children: props.items.slice(0, 28).map((item) => /* @__PURE__ */ jsxs(
217
+ return /* @__PURE__ */ jsxs("div", { class: "rr-garden-explorer__section", children: [
218
+ /* @__PURE__ */ jsx("p", { class: "rr-garden-explorer__eyebrow", children: props.title }),
219
+ /* @__PURE__ */ jsx("div", { class: "rr-garden-explorer__chips", children: props.items.slice(0, 28).map((item) => /* @__PURE__ */ jsxs(
220
220
  "button",
221
221
  {
222
222
  type: "button",
223
- class: "garden-explorer__chip",
223
+ class: "rr-garden-explorer__chip",
224
224
  "aria-pressed": props.selectedKey === item.key,
225
225
  onClick: () => props.onSelect(item.key),
226
226
  children: [
@@ -233,7 +233,7 @@ function FilterList(props) {
233
233
  ] });
234
234
  }
235
235
  function NoteList(props) {
236
- return /* @__PURE__ */ jsx("ul", { class: "garden-explorer__note-list", children: props.notes.map((note) => /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsxs(
236
+ return /* @__PURE__ */ jsx("ul", { class: "rr-garden-explorer__note-list", children: props.notes.map((note) => /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsxs(
237
237
  "button",
238
238
  {
239
239
  type: "button",
@@ -247,12 +247,12 @@ function NoteList(props) {
247
247
  ) }, note.slug)) });
248
248
  }
249
249
  function NoteDetails(props) {
250
- return /* @__PURE__ */ jsxs("div", { class: "garden-explorer__details", children: [
251
- /* @__PURE__ */ jsx("p", { class: "garden-explorer__eyebrow", children: "Selected Note" }),
250
+ return /* @__PURE__ */ jsxs("div", { class: "rr-garden-explorer__details", children: [
251
+ /* @__PURE__ */ jsx("p", { class: "rr-garden-explorer__eyebrow", children: "Selected Note" }),
252
252
  /* @__PURE__ */ jsx("h2", { children: /* @__PURE__ */ jsx("a", { href: props.note.permalink, children: props.note.title }) }),
253
- /* @__PURE__ */ jsx("p", { class: "garden-explorer__path", children: props.note.slug }),
253
+ /* @__PURE__ */ jsx("p", { class: "rr-garden-explorer__path", children: props.note.slug }),
254
254
  props.note.excerpt && /* @__PURE__ */ jsx("p", { children: props.note.excerpt }),
255
- /* @__PURE__ */ jsx("div", { class: "garden-explorer__tag-row", children: props.note.tags.map((tag) => /* @__PURE__ */ jsxs("span", { children: [
255
+ /* @__PURE__ */ jsx("div", { class: "rr-garden-explorer__tag-row", children: props.note.tags.map((tag) => /* @__PURE__ */ jsxs("span", { children: [
256
256
  "#",
257
257
  tag
258
258
  ] }, tag)) }),
@@ -274,8 +274,8 @@ function NoteDetails(props) {
274
274
  onSelect: props.onSelect
275
275
  }
276
276
  ),
277
- /* @__PURE__ */ jsxs("div", { class: "garden-explorer__section garden-explorer__section--flush", children: [
278
- /* @__PURE__ */ jsx("p", { class: "garden-explorer__eyebrow", children: "Related Notes" }),
277
+ /* @__PURE__ */ jsxs("div", { class: "rr-garden-explorer__section rr-garden-explorer__section--flush", children: [
278
+ /* @__PURE__ */ jsx("p", { class: "rr-garden-explorer__eyebrow", children: "Related Notes" }),
279
279
  /* @__PURE__ */ jsx(
280
280
  NoteList,
281
281
  {
@@ -289,9 +289,9 @@ function NoteDetails(props) {
289
289
  }
290
290
  function LinkedNoteSection(props) {
291
291
  const notes = props.slugs.map((slug) => props.noteBySlug.get(slug)).filter((note) => note !== void 0);
292
- return /* @__PURE__ */ jsxs("div", { class: "garden-explorer__section garden-explorer__section--flush", children: [
293
- /* @__PURE__ */ jsx("p", { class: "garden-explorer__eyebrow", children: props.title }),
294
- notes.length > 0 ? /* @__PURE__ */ jsx(NoteList, { notes, selectedSlug: "", onSelect: props.onSelect }) : /* @__PURE__ */ jsx("p", { class: "garden-explorer__empty", children: "No notes." })
292
+ return /* @__PURE__ */ jsxs("div", { class: "rr-garden-explorer__section rr-garden-explorer__section--flush", children: [
293
+ /* @__PURE__ */ jsx("p", { class: "rr-garden-explorer__eyebrow", children: props.title }),
294
+ notes.length > 0 ? /* @__PURE__ */ jsx(NoteList, { notes, selectedSlug: "", onSelect: props.onSelect }) : /* @__PURE__ */ jsx("p", { class: "rr-garden-explorer__empty", children: "No notes." })
295
295
  ] });
296
296
  }
297
297
 
@@ -493,14 +493,14 @@ function GardenExplorer(props) {
493
493
  setPinnedNodes((current) => ({ ...current, [currentDrag.slug]: point }));
494
494
  if (!currentDrag.hasMoved) setDrag({ ...currentDrag, hasMoved: true });
495
495
  };
496
- return /* @__PURE__ */ jsxs2("div", { class: "garden-explorer rr-garden-explorer", "data-garden-explorer": true, children: [
497
- /* @__PURE__ */ jsxs2("fieldset", { class: "garden-explorer__mobile-tabs", children: [
496
+ return /* @__PURE__ */ jsxs2("div", { class: "rr-garden-explorer", "data-garden-explorer": true, children: [
497
+ /* @__PURE__ */ jsxs2("fieldset", { class: "rr-garden-explorer__mobile-tabs", children: [
498
498
  /* @__PURE__ */ jsx2("legend", { class: "sr-only", children: "Explorer panels" }),
499
499
  ["graph", "explorer", "details"].map((panel) => /* @__PURE__ */ jsx2(
500
500
  "button",
501
501
  {
502
502
  type: "button",
503
- class: "garden-explorer__mobile-tab",
503
+ class: "rr-garden-explorer__mobile-tab",
504
504
  "aria-pressed": mobilePanel === panel,
505
505
  onClick: () => setMobilePanel(panel),
506
506
  children: panel
@@ -508,9 +508,9 @@ function GardenExplorer(props) {
508
508
  ))
509
509
  ] }),
510
510
  /* @__PURE__ */ jsxs2("aside", { class: panelClass("explorer", mobilePanel), children: [
511
- /* @__PURE__ */ jsxs2("div", { class: "garden-explorer__section", children: [
512
- /* @__PURE__ */ jsx2("p", { class: "garden-explorer__eyebrow", children: "Explorer" }),
513
- /* @__PURE__ */ jsxs2("label", { class: "garden-explorer__search", children: [
511
+ /* @__PURE__ */ jsxs2("div", { class: "rr-garden-explorer__section", children: [
512
+ /* @__PURE__ */ jsx2("p", { class: "rr-garden-explorer__eyebrow", children: "Explorer" }),
513
+ /* @__PURE__ */ jsxs2("label", { class: "rr-garden-explorer__search", children: [
514
514
  /* @__PURE__ */ jsx2("span", { class: "sr-only", children: "Search notes" }),
515
515
  /* @__PURE__ */ jsx2(
516
516
  "input",
@@ -526,7 +526,7 @@ function GardenExplorer(props) {
526
526
  "button",
527
527
  {
528
528
  type: "button",
529
- class: "garden-explorer__text-button",
529
+ class: "rr-garden-explorer__text-button",
530
530
  onClick: clearFilters,
531
531
  children: "Clear filters"
532
532
  }
@@ -558,10 +558,10 @@ function GardenExplorer(props) {
558
558
  onSelect: (key) => setSelectedFolder(key === selectedFolder ? null : key)
559
559
  }
560
560
  ) : null,
561
- /* @__PURE__ */ jsxs2("div", { class: "garden-explorer__section", children: [
562
- /* @__PURE__ */ jsxs2("p", { class: "garden-explorer__eyebrow", children: [
561
+ /* @__PURE__ */ jsxs2("div", { class: "rr-garden-explorer__section", children: [
562
+ /* @__PURE__ */ jsxs2("p", { class: "rr-garden-explorer__eyebrow", children: [
563
563
  "Notes",
564
- filteredNotes.length > listNotes.length && /* @__PURE__ */ jsxs2("span", { class: "garden-explorer__count-badge", children: [
564
+ filteredNotes.length > listNotes.length && /* @__PURE__ */ jsxs2("span", { class: "rr-garden-explorer__count-badge", children: [
565
565
  "showing ",
566
566
  listNotes.length,
567
567
  " of ",
@@ -579,7 +579,7 @@ function GardenExplorer(props) {
579
579
  ] })
580
580
  ] }),
581
581
  /* @__PURE__ */ jsxs2("section", { class: panelClass("graph", mobilePanel), "aria-label": "Note graph", children: [
582
- /* @__PURE__ */ jsxs2("div", { class: "garden-explorer__graph-toolbar", children: [
582
+ /* @__PURE__ */ jsxs2("div", { class: "rr-garden-explorer__graph-toolbar", children: [
583
583
  /* @__PURE__ */ jsxs2("span", { children: [
584
584
  graphMode === "local" ? "Local" : "Global",
585
585
  " graph ·",
@@ -591,18 +591,18 @@ function GardenExplorer(props) {
591
591
  filteredNotes.length,
592
592
  " filtered)"
593
593
  ] }),
594
- shouldGuard && /* @__PURE__ */ jsxs2("span", { class: "garden-explorer__perf-warning", "aria-live": "polite", children: [
594
+ shouldGuard && /* @__PURE__ */ jsxs2("span", { class: "rr-garden-explorer__perf-warning", "aria-live": "polite", children: [
595
595
  "⚠ Force layout may freeze this page (",
596
596
  graphNotes.length,
597
597
  " nodes)"
598
598
  ] }),
599
599
  shouldGuard && !forceLayoutApproved && /* @__PURE__ */ jsxs2(Fragment, { children: [
600
- /* @__PURE__ */ jsx2("span", { class: "garden-explorer__perf-warning", children: "Force layout not run automatically." }),
600
+ /* @__PURE__ */ jsx2("span", { class: "rr-garden-explorer__perf-warning", children: "Force layout not run automatically." }),
601
601
  /* @__PURE__ */ jsx2(
602
602
  "button",
603
603
  {
604
604
  type: "button",
605
- class: "garden-explorer__force-approve",
605
+ class: "rr-garden-explorer__force-approve",
606
606
  onClick: approveForceLayout,
607
607
  children: "Run force layout anyway"
608
608
  }
@@ -780,7 +780,7 @@ function GardenExplorer(props) {
780
780
  relatedNotes,
781
781
  onSelect: selectNote
782
782
  }
783
- ) : /* @__PURE__ */ jsx2("p", { class: "garden-explorer__empty", children: "Select a note to inspect links." }) })
783
+ ) : /* @__PURE__ */ jsx2("p", { class: "rr-garden-explorer__empty", children: "Select a note to inspect links." }) })
784
784
  ] });
785
785
  }
786
786
  function layoutNodes(notes, selectedSlug, options) {
@@ -831,7 +831,7 @@ function getRelatedSlugSet(selectedSlug, hoveredSlug, edges) {
831
831
  return related;
832
832
  }
833
833
  function panelClass(panel, activePanel) {
834
- return `garden-explorer__panel garden-explorer__panel--${panel}${panel === activePanel ? " garden-explorer__panel--active" : ""}`;
834
+ return `rr-garden-explorer__panel rr-garden-explorer__panel--${panel}${panel === activePanel ? " rr-garden-explorer__panel--active" : ""}`;
835
835
  }
836
836
  function clamp(value, min, max) {
837
837
  return Math.min(Math.max(value, min), max);
@@ -852,11 +852,11 @@ function zoomView(current, delta, origin = { x: GRAPH_WIDTH / 2, y: GRAPH_HEIGHT
852
852
  import { jsx as jsx3, jsxs as jsxs3 } from "hono/jsx/jsx-runtime";
853
853
  function renderGardenExplorerPage(data, siteTitle) {
854
854
  return renderToString(
855
- /* @__PURE__ */ jsxs3("main", { class: "garden-explorer-page", children: [
856
- /* @__PURE__ */ jsxs3("header", { class: "garden-explorer-page__header", children: [
857
- /* @__PURE__ */ jsx3("p", { class: "garden-explorer-page__eyebrow", children: siteTitle }),
858
- /* @__PURE__ */ jsx3("h1", { class: "garden-explorer-page__title", children: "Garden Explorer" }),
859
- /* @__PURE__ */ jsx3("p", { class: "garden-explorer-page__description", children: "Explore your digital garden across graph, search, tags, folders, backlinks, and related notes." })
855
+ /* @__PURE__ */ jsxs3("div", { class: "rr-garden-explorer-page", children: [
856
+ /* @__PURE__ */ jsxs3("header", { class: "rr-garden-explorer-page__header", children: [
857
+ /* @__PURE__ */ jsx3("p", { class: "rr-garden-explorer-page__eyebrow", children: siteTitle }),
858
+ /* @__PURE__ */ jsx3("h1", { class: "rr-garden-explorer-page__title", children: "Garden Explorer" }),
859
+ /* @__PURE__ */ jsx3("p", { class: "rr-garden-explorer-page__description", children: "Explore your digital garden across graph, search, tags, folders, backlinks, and related notes." })
860
860
  ] }),
861
861
  /* @__PURE__ */ jsx3("div", { "data-riebeckite-garden-explorer": true, children: /* @__PURE__ */ jsx3(GardenExplorer, { data }) }),
862
862
  /* @__PURE__ */ jsx3(
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@riebeckite/plugin-garden-explorer",
3
- "version": "0.0.19",
3
+ "version": "0.0.20",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -28,7 +28,7 @@
28
28
  },
29
29
  "dependencies": {
30
30
  "hono": "^4.12.25",
31
- "@riebeckite/core": "0.0.19"
31
+ "@riebeckite/core": "0.0.20"
32
32
  },
33
33
  "publishConfig": {
34
34
  "access": "public"
package/style.css CHANGED
@@ -1,18 +1,18 @@
1
1
  @layer components {
2
- .garden-explorer-page {
2
+ .rr-garden-explorer-page {
3
3
  width: min(100%, 96rem);
4
4
  padding-inline: var(--rb-space-2);
5
5
  }
6
6
 
7
- .garden-explorer-page__header {
7
+ .rr-garden-explorer-page__header {
8
8
  display: grid;
9
9
  gap: var(--rb-space-1);
10
10
  border-block: var(--rb-rule-width) solid var(--rb-color-border);
11
11
  padding-block: var(--rb-space-3);
12
12
  }
13
13
 
14
- .garden-explorer-page__eyebrow,
15
- .garden-explorer__eyebrow {
14
+ .rr-garden-explorer-page__eyebrow,
15
+ .rr-garden-explorer__eyebrow {
16
16
  margin: 0;
17
17
  color: var(--rb-color-muted);
18
18
  font-size: 0.72rem;
@@ -21,7 +21,7 @@
21
21
  text-transform: uppercase;
22
22
  }
23
23
 
24
- .garden-explorer-page__title {
24
+ .rr-garden-explorer-page__title {
25
25
  margin: 0;
26
26
  font-family: var(--rb-font-heading);
27
27
  font-size: clamp(2.5rem, 8vw, 5.5rem);
@@ -29,13 +29,13 @@
29
29
  letter-spacing: -0.06em;
30
30
  }
31
31
 
32
- .garden-explorer-page__description {
32
+ .rr-garden-explorer-page__description {
33
33
  max-width: 42rem;
34
34
  margin: 0;
35
35
  color: var(--rb-color-muted);
36
36
  }
37
37
 
38
- .garden-explorer {
38
+ .rr-garden-explorer {
39
39
  display: grid;
40
40
  grid-template-columns: minmax(14rem, 18rem) minmax(0, 1fr) minmax(
41
41
  16rem,
@@ -46,38 +46,38 @@
46
46
  border: var(--rb-rule-width) solid var(--rb-color-border);
47
47
  }
48
48
 
49
- .garden-explorer__panel {
49
+ .rr-garden-explorer__panel {
50
50
  min-width: 0;
51
51
  border-color: var(--rb-color-border);
52
52
  }
53
53
 
54
- .garden-explorer__panel--explorer,
55
- .garden-explorer__panel--details {
54
+ .rr-garden-explorer__panel--explorer,
55
+ .rr-garden-explorer__panel--details {
56
56
  overflow: auto;
57
57
  max-height: 46rem;
58
58
  padding: var(--rb-space-2);
59
59
  }
60
60
 
61
- .garden-explorer__panel--explorer {
61
+ .rr-garden-explorer__panel--explorer {
62
62
  border-right: var(--rb-rule-width) solid var(--rb-color-border);
63
63
  }
64
64
 
65
- .garden-explorer__panel--details {
65
+ .rr-garden-explorer__panel--details {
66
66
  border-left: var(--rb-rule-width) solid var(--rb-color-border);
67
67
  }
68
68
 
69
- .garden-explorer__section {
69
+ .rr-garden-explorer__section {
70
70
  display: grid;
71
71
  gap: var(--rb-space-1);
72
72
  padding-block: var(--rb-space-2);
73
73
  border-bottom: var(--rb-rule-width) solid var(--rb-color-border);
74
74
  }
75
75
 
76
- .garden-explorer__section--flush {
76
+ .rr-garden-explorer__section--flush {
77
77
  padding-bottom: 0;
78
78
  }
79
79
 
80
- .garden-explorer__search input {
80
+ .rr-garden-explorer__search input {
81
81
  width: 100%;
82
82
  border: var(--rb-rule-width) solid var(--rb-color-border);
83
83
  background: var(--rb-color-paper);
@@ -85,18 +85,18 @@
85
85
  padding: 0.7rem 0.75rem;
86
86
  }
87
87
 
88
- .garden-explorer__search input:focus,
89
- .garden-explorer button:focus-visible,
88
+ .rr-garden-explorer__search input:focus,
89
+ .rr-garden-explorer button:focus-visible,
90
90
  .garden-graph a:focus-visible {
91
91
  outline: 2px solid var(--rb-color-accent);
92
92
  outline-offset: 2px;
93
93
  }
94
94
 
95
- .garden-explorer__text-button,
96
- .garden-explorer__chip,
97
- .garden-explorer__note-list button,
98
- .garden-explorer__graph-toolbar button,
99
- .garden-explorer__mobile-tab {
95
+ .rr-garden-explorer__text-button,
96
+ .rr-garden-explorer__chip,
97
+ .rr-garden-explorer__note-list button,
98
+ .rr-garden-explorer__graph-toolbar button,
99
+ .rr-garden-explorer__mobile-tab {
100
100
  cursor: pointer;
101
101
  border: var(--rb-rule-width) solid var(--rb-color-border);
102
102
  background: var(--rb-color-paper);
@@ -104,7 +104,7 @@
104
104
  font: inherit;
105
105
  }
106
106
 
107
- .garden-explorer__text-button {
107
+ .rr-garden-explorer__text-button {
108
108
  justify-self: start;
109
109
  border: 0;
110
110
  border-bottom: var(--rb-rule-width) solid currentColor;
@@ -112,13 +112,13 @@
112
112
  color: var(--rb-color-muted);
113
113
  }
114
114
 
115
- .garden-explorer__chips {
115
+ .rr-garden-explorer__chips {
116
116
  display: flex;
117
117
  flex-wrap: wrap;
118
118
  gap: 0.4rem;
119
119
  }
120
120
 
121
- .garden-explorer__chip {
121
+ .rr-garden-explorer__chip {
122
122
  display: inline-flex;
123
123
  gap: 0.45rem;
124
124
  align-items: center;
@@ -126,15 +126,15 @@
126
126
  font-size: 0.85rem;
127
127
  }
128
128
 
129
- .garden-explorer__chip[aria-pressed="true"],
130
- .garden-explorer__note-list button[aria-pressed="true"],
131
- .garden-explorer__graph-toolbar button[aria-pressed="true"],
132
- .garden-explorer__mobile-tab[aria-pressed="true"] {
129
+ .rr-garden-explorer__chip[aria-pressed="true"],
130
+ .rr-garden-explorer__note-list button[aria-pressed="true"],
131
+ .rr-garden-explorer__graph-toolbar button[aria-pressed="true"],
132
+ .rr-garden-explorer__mobile-tab[aria-pressed="true"] {
133
133
  background: var(--rb-color-accent);
134
134
  color: var(--rb-color-paper);
135
135
  }
136
136
 
137
- .garden-explorer__note-list {
137
+ .rr-garden-explorer__note-list {
138
138
  display: grid;
139
139
  gap: 0.35rem;
140
140
  padding: 0;
@@ -142,7 +142,7 @@
142
142
  list-style: none;
143
143
  }
144
144
 
145
- .garden-explorer__note-list button {
145
+ .rr-garden-explorer__note-list button {
146
146
  display: grid;
147
147
  width: 100%;
148
148
  gap: 0.2rem;
@@ -150,13 +150,13 @@
150
150
  text-align: left;
151
151
  }
152
152
 
153
- .garden-explorer__note-list small,
154
- .garden-explorer__path,
155
- .garden-explorer__empty {
153
+ .rr-garden-explorer__note-list small,
154
+ .rr-garden-explorer__path,
155
+ .rr-garden-explorer__empty {
156
156
  color: var(--rb-color-muted);
157
157
  }
158
158
 
159
- .garden-explorer__count-badge {
159
+ .rr-garden-explorer__count-badge {
160
160
  margin-inline-start: var(--rb-space-1);
161
161
  font-size: 0.72rem;
162
162
  font-weight: 400;
@@ -165,7 +165,7 @@
165
165
  color: var(--rb-color-muted);
166
166
  }
167
167
 
168
- .garden-explorer__perf-warning {
168
+ .rr-garden-explorer__perf-warning {
169
169
  margin-inline-start: var(--rb-space-2);
170
170
  font-size: 0.72rem;
171
171
  font-weight: 400;
@@ -174,7 +174,7 @@
174
174
  color: var(--rb-color-error);
175
175
  }
176
176
 
177
- .garden-explorer__force-approve {
177
+ .rr-garden-explorer__force-approve {
178
178
  margin-inline-start: var(--rb-space-1);
179
179
  padding: 0.2rem 0.5rem;
180
180
  font-size: 0.72rem;
@@ -187,12 +187,12 @@
187
187
  cursor: pointer;
188
188
  }
189
189
 
190
- .garden-explorer__force-approve:hover {
190
+ .rr-garden-explorer__force-approve:hover {
191
191
  background: var(--rb-color-error);
192
192
  color: var(--rb-color-paper);
193
193
  }
194
194
 
195
- .garden-explorer__graph-toolbar {
195
+ .rr-garden-explorer__graph-toolbar {
196
196
  display: flex;
197
197
  justify-content: space-between;
198
198
  align-items: center;
@@ -203,12 +203,12 @@
203
203
  color: var(--rb-color-muted);
204
204
  }
205
205
 
206
- .garden-explorer__graph-toolbar div {
206
+ .rr-garden-explorer__graph-toolbar div {
207
207
  display: flex;
208
208
  gap: 0.35rem;
209
209
  }
210
210
 
211
- .garden-explorer__graph-toolbar button {
211
+ .rr-garden-explorer__graph-toolbar button {
212
212
  min-width: 2rem;
213
213
  padding: 0.35rem 0.55rem;
214
214
  }
@@ -278,33 +278,33 @@
278
278
  cursor: grabbing;
279
279
  }
280
280
 
281
- .garden-explorer__details h2 {
281
+ .rr-garden-explorer__details h2 {
282
282
  margin-block: var(--rb-space-1);
283
283
  font-size: 1.6rem;
284
284
  line-height: 1.1;
285
285
  }
286
286
 
287
- .garden-explorer__details a {
287
+ .rr-garden-explorer__details a {
288
288
  color: inherit;
289
289
  text-decoration: none;
290
290
  }
291
291
 
292
- .garden-explorer__details a:hover {
292
+ .rr-garden-explorer__details a:hover {
293
293
  color: var(--rb-color-accent);
294
294
  }
295
295
 
296
- .garden-explorer__tag-row {
296
+ .rr-garden-explorer__tag-row {
297
297
  display: flex;
298
298
  flex-wrap: wrap;
299
299
  gap: 0.4rem;
300
300
  }
301
301
 
302
- .garden-explorer__tag-row span {
302
+ .rr-garden-explorer__tag-row span {
303
303
  border-bottom: var(--rb-rule-width) solid var(--rb-color-border);
304
304
  color: var(--rb-color-muted);
305
305
  }
306
306
 
307
- .garden-explorer__mobile-tabs {
307
+ .rr-garden-explorer__mobile-tabs {
308
308
  display: none;
309
309
  }
310
310
 
@@ -316,34 +316,34 @@
316
316
  }
317
317
 
318
318
  @media (max-width: 58rem) {
319
- .garden-explorer {
319
+ .rr-garden-explorer {
320
320
  display: block;
321
321
  border: 0;
322
322
  }
323
323
 
324
- .garden-explorer__mobile-tabs {
324
+ .rr-garden-explorer__mobile-tabs {
325
325
  display: grid;
326
326
  grid-template-columns: repeat(3, 1fr);
327
327
  gap: 0.35rem;
328
328
  margin-bottom: var(--rb-space-1);
329
329
  }
330
330
 
331
- .garden-explorer__mobile-tab {
331
+ .rr-garden-explorer__mobile-tab {
332
332
  padding: 0.6rem 0.4rem;
333
333
  text-transform: capitalize;
334
334
  }
335
335
 
336
- .garden-explorer__panel {
336
+ .rr-garden-explorer__panel {
337
337
  display: none;
338
338
  border: var(--rb-rule-width) solid var(--rb-color-border);
339
339
  }
340
340
 
341
- .garden-explorer__panel--active {
341
+ .rr-garden-explorer__panel--active {
342
342
  display: block;
343
343
  }
344
344
 
345
- .garden-explorer__panel--explorer,
346
- .garden-explorer__panel--details {
345
+ .rr-garden-explorer__panel--explorer,
346
+ .rr-garden-explorer__panel--details {
347
347
  max-height: none;
348
348
  border: var(--rb-rule-width) solid var(--rb-color-border);
349
349
  }