diff --git a/packages/semcom-components/lib/demo.css b/packages/semcom-components/lib/demo.css
new file mode 100644
index 00000000..092a9cfd
--- /dev/null
+++ b/packages/semcom-components/lib/demo.css
@@ -0,0 +1,32 @@
+@import '../node_modules/@digita-ai/dgt-theme/dist/style.css';
+
+html {
+ height: 100%;
+ background-color: #ddd;
+ padding: 0;
+ margin: 0;
+}
+
+body {
+ margin: auto;
+ width: 550px;
+ height: 100%;
+ background-color: var(--colors-background-normal);
+ display: flex;
+ flex-direction: column;
+ align-items: stretch;
+ max-width: 1200px;
+ background-color: #eee;
+ margin: 0 auto;
+ box-shadow: 8px 0 10px -4px rgba(100, 100, 100, 0.3), -8px 0 8px -4px rgba(100, 100, 100, 0.3);
+}
+
+body > * {
+ margin-bottom: var(--gap-large);
+ max-width: 600px;
+}
+
+:global(.content) {
+ flex: 1 0;
+ padding: 80px;
+}
diff --git a/packages/semcom-components/lib/demo.ts b/packages/semcom-components/lib/demo.ts
index fc410063..d1dd0818 100644
--- a/packages/semcom-components/lib/demo.ts
+++ b/packages/semcom-components/lib/demo.ts
@@ -1,14 +1,33 @@
import { Parser } from 'n3';
-import { addListener, ComponentEventType, ComponentEventTypes, ComponentReadEvent, ComponentResponseEvent, ComponentWriteEvent } from '@digita-ai/semcom-sdk';
-import ProfileComponent from './components/profile.component';
-import PayslipComponent from './components/payslip.component';
-import InputComponent from './components/input.component';
-import GenderComponent from './components/gender.component';
+import { addListener, ComponentEventTypes, ComponentReadEvent, ComponentResponseEvent, ComponentWriteEvent } from '@digita-ai/semcom-sdk';
+import { CardComponent, ContentHeaderComponent, FormElementComponent, SidebarItemComponent, SidebarListComponent, SidebarListItemComponent } from '@digita-ai/dgt-components';
+import { ProfileComponent } from '../lib/components/profile.component';
+import { DocumentComponent } from '../lib/components/document.component';
+import { PayslipComponent } from '../lib/components/payslip.component';
+import { InputComponent } from '../lib/components/input.component';
+import { GenderComponent } from '../lib/components/gender.component';
+import { BarcodeComponent } from '../lib/components/barcode.component';
+import { CredentialComponent } from '../lib/components/credential.component';
+import { ProfileContactComponent } from '../lib/components/profile-contact.component';
+import { ProfileNameComponent } from '../lib/components/profile-name.component';
+import { ProfilePayslipComponent } from '../lib/components/profile-payslip.component';
customElements.define('profile-component', ProfileComponent);
customElements.define('payslip-component', PayslipComponent);
customElements.define('input-component', InputComponent);
customElements.define('gender-component', GenderComponent);
+customElements.define('document-component', DocumentComponent);
+customElements.define('barcode-component', BarcodeComponent);
+customElements.define('credential-component', CredentialComponent);
+customElements.define('profile-contact-component', ProfileContactComponent);
+customElements.define('profile-name-component', ProfileNameComponent);
+customElements.define('profile-payslip-component', ProfilePayslipComponent);
+customElements.define('nde-form-element', FormElementComponent);
+customElements.define('nde-card', CardComponent);
+customElements.define('card-header', ContentHeaderComponent);
+customElements.define('nde-sidebar-list-item', SidebarListItemComponent);
+customElements.define('nde-sidebar-list', SidebarListComponent);
+customElements.define('nde-sidebar-item', SidebarItemComponent);
const parser = new Parser();
diff --git a/packages/semcom-components/lib/demo/barcodes.ttl b/packages/semcom-components/lib/demo/barcodes.ttl
new file mode 100644
index 00000000..c079c540
--- /dev/null
+++ b/packages/semcom-components/lib/demo/barcodes.ttl
@@ -0,0 +1,22 @@
+@prefix : <#>.
+@prefix solid:
.
+@prefix foaf: .
+@prefix pim: .
+@prefix schema: .
+
+:barcode-uitpas
+ schema:hostingOrganization ;
+ schema:member ;
+ schema:membershipNumber "121345687789" ;
+ schema:programName "UiTPAS" .
+
+:barcode-mock-1
+ schema:member ;
+ schema:membershipNumber "9876543210" ;
+ schema:programName "UiTPAS" .
+
+:barcode-mock-2
+ schema:hostingOrganization ;
+ schema:member ;
+ schema:membershipNumber "012345543210" ;
+ schema:programName "UiTPAS" .
\ No newline at end of file
diff --git a/packages/semcom-components/lib/testdata/payslips.txt b/packages/semcom-components/lib/demo/payslips.ttl
similarity index 100%
rename from packages/semcom-components/lib/testdata/payslips.txt
rename to packages/semcom-components/lib/demo/payslips.ttl
diff --git a/packages/semcom-components/lib/demo/profile-2.ttl b/packages/semcom-components/lib/demo/profile-2.ttl
new file mode 100644
index 00000000..0e580480
--- /dev/null
+++ b/packages/semcom-components/lib/demo/profile-2.ttl
@@ -0,0 +1,244 @@
+@prefix : <#>.
+@prefix solid: .
+@prefix foaf: .
+@prefix pim: .
+@prefix schema: .
+@prefix ldp: .
+@prefix c0: .
+@prefix c1: .
+@prefix prof: <./>.
+@prefix n3: .
+@prefix in: .
+@prefix n4: >.
+@prefix c: .
+@prefix n: .
+@prefix pay: .
+
+prof:card a foaf:PersonalProfileDocument; foaf:maker :me; foaf:primaryTopic :me.
+
+:id1601909945358
+ n:country-name "Belgium";
+ n:locality "Brussels";
+ n:postal-code "1000";
+ n:region "Brusssels";
+ n:street-address "Country Road 69".
+
+:id1589374025993 a n:Work; n:value .
+:id1589374027282 a n:Home; n:value .
+
+:id1601214413622 a n:Work; n:value .
+:id1601214413645 a n:Home; n:value .
+
+:me
+ a schema:Person, foaf:Person;
+ n:note "I enjoy nettle soup!";
+ n:organization-name "Cynalco Medics";
+ n:role "Janitor & Maintenance";
+ solid:privateTypeIndex ;
+ solid:publicTypeIndex ;
+ n:hasEmail :id1589374025993, :id1589374027282;
+ n:hasAddress :id1601909945358;
+ n:hasTelephone :id1601214413622, :id1601214413645;
+ foaf:nick "tonyp";
+ n:honorific-prefix "Mr.";
+ foaf:name "Tony Paillard".
+
+:payslip-jan-2021-w1
+ a pay:payslip;
+ pay:employer ;
+ pay:employee ;
+ pay:from "1609459200";
+ pay:until "1612051200";
+ pay:stature "White Collar";
+ pay:dependent "1";
+ pay:wageUnit ;
+ pay:grossAmount "2600";
+ pay:taxableAmount "2200";
+ pay:netAmount "1500".
+
+
+:payslip-feb-2021-w1
+ a pay:payslip;
+ pay:employer ;
+ pay:employee ;
+ pay:from "1612137600";
+ pay:until "1614470400";
+ pay:stature "White Collar";
+ pay:dependent "1";
+ pay:wageUnit ;
+ pay:grossAmount "2600";
+ pay:taxableAmount "2200";
+ pay:netAmount "1500".
+
+
+:payslip-mar-2021-w1
+ a pay:payslip;
+ pay:employer ;
+ pay:employee ;
+ pay:from "1614556800";
+ pay:until "1617148800";
+ pay:stature "White Collar";
+ pay:dependent "1";
+ pay:wageUnit ;
+ pay:grossAmount "2600";
+ pay:taxableAmount "2200";
+ pay:netAmount "1500".
+
+
+:payslip-apr-2021-w1
+ a pay:payslip;
+ pay:employer ;
+ pay:employee ;
+ pay:from "1616976000";
+ pay:until "1617494400";
+ pay:stature "White Collar";
+ pay:dependent "1";
+ pay:wageUnit ;
+ pay:grossAmount "750";
+ pay:taxableAmount "650";
+ pay:netAmount "550".
+
+:payslip-apr-2021-w2
+ a pay:payslip;
+ pay:employer ;
+ pay:employee ;
+ pay:from "1617580800";
+ pay:until "1618099200";
+ pay:stature "White Collar";
+ pay:dependent "1";
+ pay:wageUnit ;
+ pay:grossAmount "750";
+ pay:taxableAmount "650";
+ pay:netAmount "550".
+
+:payslip-apr-2021-w3
+ a pay:payslip;
+ pay:employer ;
+ pay:employee ;
+ pay:from "1618185600";
+ pay:until "1618704000";
+ pay:stature "White Collar";
+ pay:dependent "1";
+ pay:wageUnit ;
+ pay:grossAmount "750";
+ pay:taxableAmount "650";
+ pay:netAmount "550".
+
+:payslip-apr-2021-w4
+ a pay:payslip;
+ pay:employer ;
+ pay:employee ;
+ pay:from "1618790400";
+ pay:until "1619308800";
+ pay:stature "White Collar";
+ pay:dependent "1";
+ pay:wageUnit ;
+ pay:grossAmount "750";
+ pay:taxableAmount "650";
+ pay:netAmount "550".
+
+
+:payslip-may-2021-w1
+ a pay:payslip;
+ pay:employer ;
+ pay:employee ;
+ pay:from "1620000000";
+ pay:until "1620518400";
+ pay:stature "White Collar";
+ pay:dependent "1";
+ pay:wageUnit ;
+ pay:grossAmount "750";
+ pay:taxableAmount "650";
+ pay:netAmount "550".
+
+:payslip-may-2021-w2
+ a pay:payslip;
+ pay:employer ;
+ pay:employee ;
+ pay:from "1620604800";
+ pay:until "1621123200";
+ pay:stature "White Collar";
+ pay:dependent "1";
+ pay:wageUnit ;
+ pay:grossAmount "750";
+ pay:taxableAmount "650";
+ pay:netAmount "550".
+
+:payslip-may-2021-w3
+ a pay:payslip;
+ pay:employer ;
+ pay:employee ;
+ pay:from "1621209600";
+ pay:until "1621728000";
+ pay:stature "White Collar";
+ pay:dependent "1";
+ pay:wageUnit ;
+ pay:grossAmount "750";
+ pay:taxableAmount "650";
+ pay:netAmount "550".
+
+:payslip-may-2021-w4
+ a pay:payslip;
+ pay:employer ;
+ pay:employee ;
+ pay:from "1621814400";
+ pay:until "1622332800";
+ pay:stature "White Collar";
+ pay:dependent "1";
+ pay:wageUnit ;
+ pay:grossAmount "750";
+ pay:taxableAmount "650";
+ pay:netAmount "550".
+
+
+:payslip-jun-2021-w1
+ a pay:payslip;
+ pay:employer ;
+ pay:employee ;
+ pay:from "1622419200";
+ pay:until "1622937600";
+ pay:stature "White Collar";
+ pay:dependent "1";
+ pay:wageUnit ;
+ pay:grossAmount "750";
+ pay:taxableAmount "650";
+ pay:netAmount "550".
+
+:payslip-jun-2021-w2
+ a pay:payslip;
+ pay:employer ;
+ pay:employee ;
+ pay:from "1623024000";
+ pay:until "1623542400";
+ pay:stature "White Collar";
+ pay:dependent "1";
+ pay:wageUnit ;
+ pay:grossAmount "750";
+ pay:taxableAmount "650";
+ pay:netAmount "550".
+
+:payslip-jun-2021-w3
+ a pay:payslip;
+ pay:employer ;
+ pay:employee ;
+ pay:from "1623628800";
+ pay:until "1624147200";
+ pay:stature "White Collar";
+ pay:dependent "1";
+ pay:wageUnit ;
+ pay:grossAmount "750";
+ pay:taxableAmount "650";
+ pay:netAmount "550".
+
+:payslip-jun-2021-w4
+ a pay:payslip;
+ pay:employer ;
+ pay:employee ;
+ pay:from "1624233600";
+ pay:until "1624752000";
+ pay:stature "White Collar";
+ pay:dependent "1";
+ pay:wageUnit ;
+ pay:grossAmount "750";
+ pay:taxableAmount "650";
+ pay:netAmount "550".
diff --git a/packages/semcom-components/lib/testdata/profile.txt b/packages/semcom-components/lib/demo/profile.ttl
similarity index 100%
rename from packages/semcom-components/lib/testdata/profile.txt
rename to packages/semcom-components/lib/demo/profile.ttl
diff --git a/packages/semcom-components/lib/testdata/singlePayslip.txt b/packages/semcom-components/lib/demo/singlePayslip.ttl
similarity index 100%
rename from packages/semcom-components/lib/testdata/singlePayslip.txt
rename to packages/semcom-components/lib/demo/singlePayslip.ttl
diff --git a/packages/semcom-components/lib/index.html b/packages/semcom-components/lib/index.html
index b54a98d9..96b6e11a 100644
--- a/packages/semcom-components/lib/index.html
+++ b/packages/semcom-components/lib/index.html
@@ -4,7 +4,7 @@
SemCom Components
-
+
@@ -14,9 +14,15 @@
-
-
+
+
+
+
+
+
+
+