Skip to content

Commit 24241c5

Browse files
authored
migrate documentation to v2 (#2)
1 parent 2a8f8fd commit 24241c5

23 files changed

Lines changed: 67 additions & 190 deletions

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
# SuperProvenanceWidgets (SW) Homepage
1+
# ProvenanceWidgets Documentation
22

3-
The homepage for SuperProvenanceWidgets (SW), the React-based second generation of ProvenanceWidgets. This repository contains its documentation and live playground.
3+
The homepage and documentation for ProvenanceWidgets. Version 2.0 integrates SuperProvenanceWidgets (SW), an extension for tracking and visualizing analytic provenance across multiple UI controls. This repository also contains the SW live playground.
44

55
Operating Systems: Windows 10 or newer, MacOSX 11 or newer, Ubuntu 20.04.1 LTS or newer
66

docs/index.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ title: Introduction
66
import Tabs from '@theme/Tabs';
77
import TabItem from '@theme/TabItem';
88

9-
SuperProvenanceWidgets (SW) is the React-based second generation of ProvenanceWidgets, a JavaScript library of UI control elements that track and dynamically overlay a user's analytic provenance ***in situ*** and ***out of the box***. SW preserves the frequency and recency overlays introduced by PW and extends them with Aggregate and Temporal views, including a shared provenance view that connects the interaction histories of multiple controls in one interface.
9+
ProvenanceWidgets is a JavaScript library of UI control elements that track and dynamically overlay a user's analytic provenance ***in situ*** and ***out of the box***. Version 2.0 integrates SuperProvenanceWidgets (SW), an extension that preserves PW's frequency and recency overlays while adding Aggregate and Temporal views, including a shared provenance view that connects the interaction histories of multiple controls in one interface.
1010

1111
## Getting Started
1212

docusaurus.config.ts

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,8 @@ const config: Config = {
9797
"@docusaurus/plugin-client-redirects",
9898
{
9999
redirects: [
100+
{ from: "/sw/showcase", to: "/showcase/" },
101+
{ from: "/pw/showcase", to: "/showcase/" },
100102
{ from: "/docs", to: "/docs/pw/" },
101103
{
102104
from: "/docs/category/widgets",
@@ -194,28 +196,25 @@ const config: Config = {
194196
],
195197
},
196198
{
197-
title: "Contacts",
199+
title: "Collaborators",
198200
items: [
199201
{
200-
label: "Arpit Narechania",
201-
href: "https://arpitnarechania.github.io/",
202+
label: "Georgia Tech",
203+
href: "https://www.gatech.edu/",
202204
},
203205
{
204-
label: "Kaustubh Odak",
205-
href: "https://kaustubhodak.me/",
206+
label: "ETH Zürich",
207+
href: "https://ethz.ch/",
206208
},
207209
{
208-
label: "Mennatallah El-Assady",
209-
href: "https://el-assady.com/",
210-
},
211-
{
212-
label: "Alex Endert",
213-
href: "https://va.gatech.edu/endert/",
210+
label: "AWS",
211+
href: "https://aws.amazon.com/",
214212
},
215213
],
216214
},
217215
],
218-
copyright: `Copyright © ${new Date().getFullYear()} ProvenanceWidgets`,
216+
copyright:
217+
'Copyright 2026 <a href="https://datavisards.com/">DataVisards Lab</a> at <a href="https://hkust.edu.hk/">HKUST</a>. Contact <a href="https://narechania.com/">Arpit Narechania</a> about anything.',
219218
},
220219
prism: {
221220
additionalLanguages: ["bash", "json", "typescript"],

src/components/SiteVersionNavbarLink/index.tsx

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import {
77
import {useLocation} from '@docusaurus/router';
88
import DefaultNavbarItem from '@theme/NavbarItem/DefaultNavbarItem';
99
import {
10-
getShowcasePath,
1110
getSiteVersionFromPath,
1211
type SiteVersionName,
1312
} from '@site/src/utils/siteVersion';
@@ -34,7 +33,7 @@ export default function SiteVersionNavbarLink({
3433
const version =
3534
versions.find(candidate => candidate.name === versionName) ?? versions[0];
3635
const mainDoc = version.docs.find(doc => doc.id === version.mainDocId)!;
37-
const to = target === 'docs' ? mainDoc.path : getShowcasePath(versionName);
36+
const to = target === 'docs' ? mainDoc.path : '/showcase/';
3837

3938
return (
4039
<DefaultNavbarItem
@@ -43,7 +42,7 @@ export default function SiteVersionNavbarLink({
4342
isActive={() =>
4443
target === 'docs'
4544
? /^\/docs\/(?:sw|pw)(?:\/|$)/.test(pathname)
46-
: /^(?:\/sw|\/pw)\/showcase(?:\/|$)/.test(pathname)
45+
: /^\/showcase(?:\/|$)/.test(pathname)
4746
}
4847
/>
4948
);

src/components/showcase/ShowcasePage.tsx

Lines changed: 10 additions & 113 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@ import React from "react";
66

77
import styles from "./showcase.module.css";
88

9-
type ShowcaseVersion = "2.0" | "1.0";
10-
119
type Project = {
1210
title: string;
1311
description: string;
@@ -16,10 +14,9 @@ type Project = {
1614
route: string;
1715
};
1816

19-
const swShowcaseBaseUrl: string = "";
20-
const pwShowcaseBaseUrl = "https://provenancewidgets.github.io/showcase/#";
17+
const showcaseBaseUrl = "https://provenancewidgets.github.io/showcase/#";
2118

22-
const swProjects: Project[] = [
19+
const projects: Project[] = [
2320
{
2421
title: "Playground",
2522
description:
@@ -86,99 +83,14 @@ const swProjects: Project[] = [
8683
},
8784
];
8885

89-
const pwProjects: Project[] = [
90-
{
91-
title: "Playground",
92-
description: "A playground to test out all widgets available in the library.",
93-
image: "/img/playground.png",
94-
imageAlt: "ProvenanceWidgets playground",
95-
route: "/playground",
96-
},
97-
{
98-
title: "Scented Widgets",
99-
description:
100-
"A showcase replicating Scented Widgets for facilitating navigation in information spaces.",
101-
image: "/img/scented-widgets.png",
102-
imageAlt: "ProvenanceWidgets Scented Widgets showcase",
103-
route: "/scented-widgets",
104-
},
105-
{
106-
title: "Phosphor Objects",
107-
description:
108-
"A showcase replicating Phosphor objects by limiting provenance to the last two interactions.",
109-
image: "/img/phosphor-objects.png",
110-
imageAlt: "ProvenanceWidgets Phosphor Objects showcase",
111-
route: "/phosphor-objects",
112-
},
113-
{
114-
title: "Data Distribution",
115-
description:
116-
"A showcase visualizing attribute distributions using different widgets in the library.",
117-
image: "/img/data-distribution.png",
118-
imageAlt: "ProvenanceWidgets Data Distribution showcase",
119-
route: "/data-distribution",
120-
},
121-
{
122-
title: "Vega Integration",
123-
description:
124-
"A showcase demonstrating the integration of ProvenanceWidgets with Vega signals.",
125-
image: "/img/vega-example.png",
126-
imageAlt: "ProvenanceWidgets Vega Integration showcase",
127-
route: "/vega-example",
128-
},
129-
{
130-
title: "Dynamic Query Widgets",
131-
description:
132-
"A showcase replicating dynamic query widgets for the HomeFinder application.",
133-
image: "/img/dynamic-query-widgets-homefinder.png",
134-
imageAlt: "ProvenanceWidgets Dynamic Query Widgets showcase",
135-
route: "/dynamic-query-widgets-homefinder",
136-
},
137-
{
138-
title: "Widgets to Visualization one-way",
139-
description:
140-
"A showcase using ProvenanceWidgets to interact with a visualization.",
141-
image: "/img/widgets-to-vis-one-way.png",
142-
imageAlt: "ProvenanceWidgets Widgets to Visualization showcase",
143-
route: "/widgets-to-vis-one-way",
144-
},
145-
{
146-
title: "Visualization to Widgets one-way",
147-
description:
148-
"A showcase updating widgets through interactions with a visualization.",
149-
image: "/img/vis-to-widgets-one-way.png",
150-
imageAlt: "ProvenanceWidgets Visualization to Widgets showcase",
151-
route: "/vis-to-widgets-one-way",
152-
},
153-
];
154-
155-
const showcases = {
156-
"2.0": {
157-
description:
158-
"Demonstrations of the SuperProvenanceWidgets library in action.",
159-
baseUrl: swShowcaseBaseUrl,
160-
projects: swProjects,
161-
},
162-
"1.0": {
163-
description: "Demonstrations of the ProvenanceWidgets library in action.",
164-
baseUrl: pwShowcaseBaseUrl,
165-
projects: pwProjects,
166-
},
167-
} satisfies Record<
168-
ShowcaseVersion,
169-
{ description: string; baseUrl: string; projects: Project[] }
170-
>;
86+
const description = "See the library in action.";
17187

17288
function ProjectCard({
17389
project,
174-
baseUrl,
17590
}: {
17691
project: Project;
177-
baseUrl: string;
17892
}) {
179-
const href = baseUrl
180-
? `${baseUrl.replace(/\/$/, "")}${project.route}`
181-
: undefined;
93+
const href = `${showcaseBaseUrl}${project.route}`;
18294
const content = (
18395
<>
18496
<div className="card__image">
@@ -189,21 +101,12 @@ function ProjectCard({
189101
<Heading as="h3" className={styles.titleOverride}>
190102
{project.title}
191103
</Heading>
192-
{!href && <span className={styles.status}>Coming soon</span>}
193104
</div>
194105
<p className={styles.paragraphReset}>{project.description}</p>
195106
</div>
196107
</>
197108
);
198109

199-
if (!href) {
200-
return (
201-
<article className={clsx("card h-full", styles.pendingCard)}>
202-
{content}
203-
</article>
204-
);
205-
}
206-
207110
return (
208111
<Link
209112
className={clsx("card h-full", styles.linkReset)}
@@ -214,31 +117,25 @@ function ProjectCard({
214117
);
215118
}
216119

217-
export function ShowcasePage({
218-
version,
219-
}: {
220-
version: ShowcaseVersion;
221-
}): JSX.Element {
222-
const activeShowcase = showcases[version];
223-
120+
export function ShowcasePage(): JSX.Element {
224121
return (
225122
<Layout
226-
title={`Showcase ${version}`}
227-
description={activeShowcase.description}
123+
title="Showcase"
124+
description={description}
228125
wrapperClassName={styles.layout}
229126
>
230127
<main className="container padding-top--lg padding-bottom--lg">
231128
<header className={styles.pageHeader}>
232129
<Heading as="h1" className="hero__title">
233130
Showcase
234131
</Heading>
235-
<p className="hero__subtitle">{activeShowcase.description}</p>
132+
<p className="hero__subtitle">{description}</p>
236133
</header>
237134

238135
<div className="grid">
239-
{activeShowcase.projects.map(project => (
136+
{projects.map(project => (
240137
<div className="col col--3 margin-bottom--lg" key={project.title}>
241-
<ProjectCard project={project} baseUrl={activeShowcase.baseUrl} />
138+
<ProjectCard project={project} />
242139
</div>
243140
))}
244141
</div>

src/components/showcase/showcase.module.css

Lines changed: 2 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,7 @@
2929
transform: translateY(-2px);
3030
}
3131

32-
.linkReset :global(.card__image),
33-
.pendingCard :global(.card__image) {
32+
.linkReset :global(.card__image) {
3433
display: flex;
3534
height: 10.5rem;
3635
overflow: hidden;
@@ -39,8 +38,7 @@
3938
background: #fff;
4039
}
4140

42-
.linkReset :global(.card__image img),
43-
.pendingCard :global(.card__image img) {
41+
.linkReset :global(.card__image img) {
4442
width: 100%;
4543
height: 100%;
4644
object-fit: contain;
@@ -65,19 +63,3 @@
6563
font-size: 0.88rem;
6664
line-height: 1.65;
6765
}
68-
69-
.pendingCard {
70-
opacity: 0.82;
71-
}
72-
73-
.status {
74-
flex: 0 0 auto;
75-
padding: 0.2rem 0.42rem;
76-
border-radius: 999px;
77-
color: var(--ifm-color-emphasis-700);
78-
background: var(--ifm-color-emphasis-200);
79-
font-size: 0.64rem;
80-
font-weight: 700;
81-
letter-spacing: 0.03em;
82-
text-transform: uppercase;
83-
}

src/pages/index.module.css

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@
5959
.heroTitle {
6060
margin-bottom: 0.85rem;
6161
color: #1d2733;
62-
font-size: clamp(3rem, 7vw, 5.5rem);
62+
font-size: clamp(2.4rem, 4vw, 3.5rem);
6363
letter-spacing: -0.055em;
6464
line-height: 0.98;
6565
}
@@ -407,7 +407,7 @@
407407

408408
@media screen and (max-width: 560px) {
409409
.heroTitle {
410-
font-size: 2.65rem;
410+
font-size: 2.15rem;
411411
line-height: 1.02;
412412
}
413413

src/pages/index.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ const papers: Paper[] = [
3939
links: [
4040
{
4141
label: "PDF",
42-
href: "https://narechania.com/docs/publications/provenance_widgets_2024.pdf",
42+
href: "https://datavisards.com/assets/pdfs/publications/2025-paper-provenance-widgets.pdf",
4343
kind: "primary",
4444
},
4545
{
@@ -76,11 +76,11 @@ const papers: Paper[] = [
7676
imageAlt:
7777
"Overview of SuperProvenanceWidgets showing aggregate and temporal provenance within and across controls",
7878
summary:
79-
"SuperProvenanceWidgets extends the library from individual controls to the interface as a whole. Its cross-widget provenance view summarizes which controls were used, how often, when, and in what sequence - supporting workflow auditing and sharing, reflection on exploration bias, and interface personalization.",
79+
"SuperProvenanceWidgets extends ProvenanceWidgets from individual controls to the interface as a whole. Its cross-widget provenance view summarizes which controls were used, how often, when, and in what sequence - supporting workflow auditing and sharing, reflection on exploration bias, and interface personalization.",
8080
links: [
8181
{
8282
label: "PDF",
83-
href: "https://narechania.com/docs/publications/superprovenancewidgets_chi_2026.pdf",
83+
href: "https://datavisards.com/assets/pdfs/publications/2026-paper-super-provenance-widgets.pdf",
8484
kind: "primary",
8585
},
8686
{

src/pages/pw/index.module.css

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,11 @@
44
text-align: center;
55
}
66

7+
.heroTitle {
8+
font-size: clamp(2.4rem, 4vw, 3.5rem);
9+
line-height: 1.05;
10+
}
11+
712
.citationLink {
813
display: inline-flex;
914
align-items: center;
@@ -29,3 +34,9 @@
2934
aspect-ratio: 5 / 3;
3035
}
3136
}
37+
38+
@media screen and (max-width: 560px) {
39+
.heroTitle {
40+
font-size: 2.15rem;
41+
}
42+
}

src/pages/pw/index.tsx

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,16 @@ function HomepageHeader() {
3333
return (
3434
<header className={clsx("hero hero--primary", styles.heroBanner)}>
3535
<div className="container">
36-
<Heading as="h1" className="hero__title hidden sm:block">
36+
<Heading
37+
as="h1"
38+
className={clsx("hero__title hidden sm:block", styles.heroTitle)}
39+
>
3740
{siteConfig.title}
3841
</Heading>
39-
<Heading as="h1" className="text-5xl block sm:hidden">
42+
<Heading
43+
as="h1"
44+
className={clsx("block sm:hidden", styles.heroTitle)}
45+
>
4046
Provenance Widgets
4147
</Heading>
4248
<p className="hero__subtitle">{siteConfig.tagline}</p>

0 commit comments

Comments
 (0)