@idp.global/catalog 2.1.0 → 2.2.0

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.
@@ -32,7 +32,7 @@ var __runInitializers = (this && this.__runInitializers) || function (thisArg, i
32
32
  }
33
33
  return useValue ? value : void 0;
34
34
  };
35
- import { DeesElement, html, customElement, css } from '@design.estate/dees-element';
35
+ import { DeesElement, html, customElement, css, property } from '@design.estate/dees-element';
36
36
  import { idpElementStyles } from './tokens.js';
37
37
  import './idp-badge.js';
38
38
  import './idp-button.js';
@@ -45,16 +45,47 @@ let IdpLandingPage = (() => {
45
45
  let _classExtraInitializers = [];
46
46
  let _classThis;
47
47
  let _classSuper = DeesElement;
48
+ let _links_decorators;
49
+ let _links_initializers = [];
50
+ let _links_extraInitializers = [];
48
51
  var IdpLandingPage = class extends _classSuper {
49
52
  static { _classThis = this; }
50
53
  static {
51
54
  const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
55
+ _links_decorators = [property({ type: Object })];
56
+ __esDecorate(this, null, _links_decorators, { kind: "accessor", name: "links", static: false, private: false, access: { has: obj => "links" in obj, get: obj => obj.links, set: (obj, value) => { obj.links = value; } }, metadata: _metadata }, _links_initializers, _links_extraInitializers);
52
57
  __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
53
58
  IdpLandingPage = _classThis = _classDescriptor.value;
54
59
  if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
55
60
  }
56
61
  static demo = () => html `<idp-landing-page></idp-landing-page>`;
57
62
  static demoGroups = ['idp.global v5 full pages'];
63
+ #links_accessor_storage = __runInitializers(this, _links_initializers, {});
64
+ /**
65
+ * Real navigation targets for the page chrome. Consumers override any subset;
66
+ * labels without a link target stay presentational.
67
+ */
68
+ get links() { return this.#links_accessor_storage; }
69
+ set links(value) { this.#links_accessor_storage = value; }
70
+ getLinks() {
71
+ return {
72
+ signIn: 'https://idp.global/login',
73
+ claim: 'https://idp.global/register',
74
+ docs: 'https://about.idp.global/docs',
75
+ github: 'https://code.foss.global/idp.global/idp.global',
76
+ contact: 'mailto:hello@task.vc',
77
+ ...this.links,
78
+ };
79
+ }
80
+ scrollToSection(eventArg, sectionIdArg) {
81
+ eventArg.preventDefault();
82
+ if (sectionIdArg === 'product') {
83
+ // the product screenshot lives inside the hero's shadow root
84
+ this.shadowRoot?.querySelector('idp-landing-hero')?.scrollIntoView({ behavior: 'smooth', block: 'end' });
85
+ return;
86
+ }
87
+ this.shadowRoot?.getElementById(sectionIdArg)?.scrollIntoView({ behavior: 'smooth' });
88
+ }
58
89
  static styles = [
59
90
  ...idpElementStyles,
60
91
  css `
@@ -804,20 +835,26 @@ let IdpLandingPage = (() => {
804
835
  `,
805
836
  ];
806
837
  renderNav() {
838
+ const links = this.getLinks();
839
+ const sections = [
840
+ ['product', 'Product'],
841
+ ['features', 'Features'],
842
+ ['chain', 'On-chain'],
843
+ ['pricing', 'Pricing'],
844
+ ['developers', 'Developers'],
845
+ ];
807
846
  return html `
808
847
  <div class="nav-shell">
809
848
  <nav>
810
- <a class="logo" href="#">idp<span class="logo-dot"></span>global</a>
849
+ <a class="logo" href="#" @click=${(eventArg) => this.scrollToSection(eventArg, 'product')}>idp<span class="logo-dot"></span>global</a>
811
850
  <div class="nav-links">
812
- <a href="#product">Product</a>
813
- <a href="#features">Features</a>
814
- <a href="#chain">On-chain</a>
815
- <a href="#pricing">Pricing</a>
816
- <a href="#developers">Developers</a>
851
+ ${sections.map(([sectionId, label]) => html `
852
+ <a href="#${sectionId}" @click=${(eventArg) => this.scrollToSection(eventArg, sectionId)}>${label}</a>
853
+ `)}
817
854
  </div>
818
855
  <div class="actions">
819
- <a class="nav-signin">Sign in</a>
820
- <idp-button variant="accent" size="sm">Claim identity</idp-button>
856
+ <a class="nav-signin" href=${links.signIn}>Sign in</a>
857
+ <idp-button variant="accent" size="sm" href=${links.claim}>Claim identity</idp-button>
821
858
  </div>
822
859
  </nav>
823
860
  </div>
@@ -1006,6 +1043,7 @@ let IdpLandingPage = (() => {
1006
1043
  `;
1007
1044
  }
1008
1045
  renderPricing() {
1046
+ const links = this.getLinks();
1009
1047
  const tiers = [
1010
1048
  {
1011
1049
  name: 'Personal',
@@ -1021,6 +1059,7 @@ let IdpLandingPage = (() => {
1021
1059
  'Recovery via your other devices',
1022
1060
  ],
1023
1061
  cta: 'Claim your identity',
1062
+ ctaHref: links.claim,
1024
1063
  variant: 'tint',
1025
1064
  featured: false,
1026
1065
  },
@@ -1038,6 +1077,7 @@ let IdpLandingPage = (() => {
1038
1077
  'SSO & SCIM included, no upsell',
1039
1078
  ],
1040
1079
  cta: 'Start an organisation',
1080
+ ctaHref: links.claim,
1041
1081
  variant: 'accent',
1042
1082
  featured: true,
1043
1083
  },
@@ -1055,6 +1095,7 @@ let IdpLandingPage = (() => {
1055
1095
  'Priority engineering & SLA',
1056
1096
  ],
1057
1097
  cta: 'Talk to us',
1098
+ ctaHref: links.contact,
1058
1099
  variant: 'tint',
1059
1100
  featured: false,
1060
1101
  },
@@ -1079,7 +1120,7 @@ let IdpLandingPage = (() => {
1079
1120
  <div class="price">${tierArg.price}<span class="sub">${tierArg.sub}</span></div>
1080
1121
  <div class="price-note">${tierArg.note}</div>
1081
1122
  <ul class="tier-list">${tierArg.items.map((itemArg) => html `<li>${itemArg}</li>`)}</ul>
1082
- <idp-button variant=${tierArg.variant}>${tierArg.cta}</idp-button>
1123
+ <idp-button variant=${tierArg.variant} href=${tierArg.ctaHref}>${tierArg.cta}</idp-button>
1083
1124
  </div>
1084
1125
  `)}
1085
1126
  </div>
@@ -1103,8 +1144,8 @@ let IdpLandingPage = (() => {
1103
1144
  <p>One CLI. Standard OAuth 2 &amp; OIDC. Native SDKs for Node, Python, Swift, Kotlin, Go, Rust.</p>
1104
1145
  <div class="dev-tags">${tags.map((tagArg) => html `<span class="dev-tag">${tagArg}</span>`)}</div>
1105
1146
  <div class="dev-actions">
1106
- <idp-button variant="accent" icon="lucide:github">View on GitHub</idp-button>
1107
- <idp-button variant="link">Read the docs</idp-button>
1147
+ <idp-button variant="accent" icon="lucide:github" href=${this.getLinks().github}>View on GitHub</idp-button>
1148
+ <idp-button variant="link" href=${this.getLinks().docs}>Read the docs</idp-button>
1108
1149
  </div>
1109
1150
  </div>
1110
1151
  <div class="terminal">
@@ -1140,7 +1181,7 @@ let IdpLandingPage = (() => {
1140
1181
  }
1141
1182
  renderManifesto() {
1142
1183
  return html `
1143
- <section class="manifesto">
1184
+ <section class="manifesto" id="manifesto">
1144
1185
  <div class="wrap">
1145
1186
  <div class="eyebrow sm" style="margin-bottom: 24px;">Why we built this</div>
1146
1187
  <q>Identity should not be a product the user is sold. It should be a permanent <em>fact</em>, owned by the person it describes.</q>
@@ -1159,25 +1200,37 @@ let IdpLandingPage = (() => {
1159
1200
  we disappear.
1160
1201
  </p>
1161
1202
  <div class="cta-actions">
1162
- <idp-button variant="accent" size="lg">Claim your identity</idp-button>
1163
- <idp-button variant="link" size="lg">Read the manifesto</idp-button>
1203
+ <idp-button variant="accent" size="lg" href=${this.getLinks().claim}>Claim your identity</idp-button>
1204
+ <idp-button variant="link" size="lg" @click=${(eventArg) => this.scrollToSection(eventArg, 'manifesto')}>Read the manifesto</idp-button>
1164
1205
  </div>
1165
1206
  </div>
1166
1207
  </section>
1167
1208
  `;
1168
1209
  }
1169
1210
  renderFooter() {
1211
+ const links = this.getLinks();
1212
+ const labelHrefs = {
1213
+ Documentation: links.docs,
1214
+ 'API reference': links.docs,
1215
+ 'Self-hosting': links.docs,
1216
+ GitHub: links.github,
1217
+ };
1170
1218
  const cols = [
1171
1219
  ['Product', ['For individuals', 'For organisations', 'Enterprise', 'Cardano sync', 'Changelog']],
1172
1220
  ['Developers', ['Documentation', 'API reference', 'Self-hosting', 'SDKs', 'GitHub']],
1173
1221
  ['Company', ['Manifesto', 'Blog', 'Security', 'Privacy', 'Terms']],
1174
1222
  ];
1223
+ const renderFooterLink = (labelArg) => labelHrefs[labelArg]
1224
+ ? html `<a href=${labelHrefs[labelArg]}>${labelArg}</a>`
1225
+ : labelArg === 'Manifesto'
1226
+ ? html `<a href="#manifesto" @click=${(eventArg) => this.scrollToSection(eventArg, 'manifesto')}>${labelArg}</a>`
1227
+ : html `<a>${labelArg}</a>`;
1175
1228
  return html `
1176
1229
  <footer>
1177
1230
  <div class="wrap-wide">
1178
1231
  <div class="footer-cols">
1179
1232
  <div class="footer-brand">
1180
- <a class="logo" href="#">idp<span class="logo-dot"></span>global</a>
1233
+ <a class="logo" href="#" @click=${(eventArg) => this.scrollToSection(eventArg, 'product')}>idp<span class="logo-dot"></span>global</a>
1181
1234
  <p>
1182
1235
  An open identity provider for everyone — from individuals to enterprises. Anchored on Cardano. Built in
1183
1236
  the open. Yours forever.
@@ -1187,13 +1240,13 @@ let IdpLandingPage = (() => {
1187
1240
  ${cols.map((colArg) => html `
1188
1241
  <div class="footer-col">
1189
1242
  <h4>${colArg[0]}</h4>
1190
- <ul>${colArg[1].map((linkArg) => html `<li><a>${linkArg}</a></li>`)}</ul>
1243
+ <ul>${colArg[1].map((linkArg) => html `<li>${renderFooterLink(linkArg)}</li>`)}</ul>
1191
1244
  </div>
1192
1245
  `)}
1193
1246
  </div>
1194
1247
  <div class="footer-bottom">
1195
1248
  <span>© 2026 idp.global · MIT · Anchored to Cardano</span>
1196
- <span class="links"><a>Status</a><a>Twitter</a><a>GitHub</a><a>Discord</a></span>
1249
+ <span class="links"><a>Status</a><a href=${links.github}>GitHub</a></span>
1197
1250
  </div>
1198
1251
  </div>
1199
1252
  </footer>
@@ -1203,7 +1256,10 @@ let IdpLandingPage = (() => {
1203
1256
  return html `
1204
1257
  <div class="page">
1205
1258
  ${this.renderNav()}
1206
- <idp-landing-hero></idp-landing-hero>
1259
+ <idp-landing-hero
1260
+ claimHref=${this.getLinks().claim}
1261
+ secondaryHref=${this.getLinks().docs}
1262
+ ></idp-landing-hero>
1207
1263
  ${this.renderProof()}
1208
1264
  ${this.renderFeatures()}
1209
1265
  ${this.renderChain()}
@@ -1215,6 +1271,10 @@ let IdpLandingPage = (() => {
1215
1271
  </div>
1216
1272
  `;
1217
1273
  }
1274
+ constructor() {
1275
+ super(...arguments);
1276
+ __runInitializers(this, _links_extraInitializers);
1277
+ }
1218
1278
  static {
1219
1279
  __runInitializers(_classThis, _classExtraInitializers);
1220
1280
  }
@@ -1222,4 +1282,4 @@ let IdpLandingPage = (() => {
1222
1282
  return IdpLandingPage = _classThis;
1223
1283
  })();
1224
1284
  export { IdpLandingPage };
1225
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRwLWxhbmRpbmctcGFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzX3dlYi9lbGVtZW50cy9pZHAtbGFuZGluZy1wYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUF1QixNQUFNLDZCQUE2QixDQUFDO0FBQ3pHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMvQyxPQUFPLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8saUJBQWlCLENBQUM7QUFDekIsT0FBTyxlQUFlLENBQUM7QUFDdkIsT0FBTyxpQ0FBaUMsQ0FBQztBQUN6QyxPQUFPLHVCQUF1QixDQUFDO0lBU2xCLGNBQWM7NEJBRDFCLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQzs7OztzQkFDRSxXQUFXOzhCQUFuQixTQUFRLFdBQVc7Ozs7WUFBL0MsNktBOHBDQzs7OztRQTdwQ1EsTUFBTSxDQUFDLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUEsdUNBQXVDLENBQUM7UUFDaEUsTUFBTSxDQUFDLFVBQVUsR0FBRyxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFFakQsTUFBTSxDQUFDLE1BQU0sR0FBRztZQUNyQixHQUFHLGdCQUFnQjtZQUNuQixHQUFHLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
1285
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRwLWxhbmRpbmctcGFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzX3dlYi9lbGVtZW50cy9pZHAtbGFuZGluZy1wYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBdUIsTUFBTSw2QkFBNkIsQ0FBQztBQUNuSCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDL0MsT0FBTyxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8saUNBQWlDLENBQUM7QUFDekMsT0FBTyx1QkFBdUIsQ0FBQztJQWlCbEIsY0FBYzs0QkFEMUIsYUFBYSxDQUFDLGtCQUFrQixDQUFDOzs7O3NCQUNFLFdBQVc7Ozs7OEJBQW5CLFNBQVEsV0FBVzs7OztpQ0FRNUMsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQzNCLG9LQUFnQixLQUFLLDZCQUFMLEtBQUsscUZBQWlDO1lBVHhELDZLQXN0Q0M7Ozs7UUFydENRLE1BQU0sQ0FBQyxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFBLHVDQUF1QyxDQUFDO1FBQ2hFLE1BQU0sQ0FBQyxVQUFVLEdBQUcsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBT3hELHVFQUFtRCxFQUFFLEVBQUM7UUFMdEQ7OztXQUdHO1FBRUgsSUFBZ0IsS0FBSywyQ0FBaUM7UUFBdEQsSUFBZ0IsS0FBSyxpREFBaUM7UUFFOUMsUUFBUTtZQUNkLE9BQU87Z0JBQ0wsTUFBTSxFQUFFLDBCQUEwQjtnQkFDbEMsS0FBSyxFQUFFLDZCQUE2QjtnQkFDcEMsSUFBSSxFQUFFLCtCQUErQjtnQkFDckMsTUFBTSxFQUFFLGdEQUFnRDtnQkFDeEQsT0FBTyxFQUFFLHNCQUFzQjtnQkFDL0IsR0FBRyxJQUFJLENBQUMsS0FBSzthQUNkLENBQUM7UUFDSixDQUFDO1FBRU8sZUFBZSxDQUFDLFFBQWUsRUFBRSxZQUFvQjtZQUMzRCxRQUFRLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDMUIsSUFBSSxZQUFZLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQy9CLDZEQUE2RDtnQkFDN0QsSUFBSSxDQUFDLFVBQVUsRUFBRSxhQUFhLENBQUMsa0JBQWtCLENBQUMsRUFBRSxjQUFjLENBQUMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO2dCQUN6RyxPQUFPO1lBQ1QsQ0FBQztZQUNELElBQUksQ0FBQyxVQUFVLEVBQUUsY0FBYyxDQUFDLFlBQVksQ0FBQyxFQUFFLGNBQWMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ3hGLENBQUM7UUFFTSxNQUFNLENBQUMsTUFBTSxHQUFHO1lBQ3JCLEdBQUcsZ0JBQWdCO1lBQ25CLEdBQUcsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBd3VCRjtTQUNGLENBQUM7UUFFTSxTQUFTO1lBQ2YsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzlCLE1BQU0sUUFBUSxHQUFHO2dCQUNmLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQztnQkFDdEIsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDO2dCQUN4QixDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUM7Z0JBQ3JCLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQztnQkFDdEIsQ0FBQyxZQUFZLEVBQUUsWUFBWSxDQUFDO2FBQ3BCLENBQUM7WUFDWCxPQUFPLElBQUksQ0FBQTs7OzRDQUc2QixDQUFDLFFBQWUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDOztjQUU1RixRQUFRLENBQUMsR0FBRyxDQUNaLENBQUMsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQTs0QkFDZCxTQUFTLFlBQVksQ0FBQyxRQUFlLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxJQUFJLEtBQUs7ZUFDekcsQ0FDRjs7O3lDQUc0QixLQUFLLENBQUMsTUFBTTswREFDSyxLQUFLLENBQUMsS0FBSzs7OztLQUloRSxDQUFDO1FBQ0osQ0FBQztRQUVPLFdBQVc7WUFDakIsTUFBTSxLQUFLLEdBQUcsQ0FBQyxVQUFVLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQ3pGLE9BQU8sSUFBSSxDQUFBOzs7O21DQUlvQixLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUEsMkJBQTJCLE9BQU8sUUFBUSxDQUFDOzs7S0FHcEcsQ0FBQztRQUNKLENBQUM7UUFFTyxjQUFjO1lBQ3BCLE1BQU0sT0FBTyxHQUFHO2dCQUNkLENBQUMsUUFBUSxFQUFFLG1CQUFtQixFQUFFLFlBQVksQ0FBQztnQkFDN0MsQ0FBQyxPQUFPLEVBQUUsY0FBYyxFQUFFLFlBQVksQ0FBQztnQkFDdkMsQ0FBQyxNQUFNLEVBQUUsZUFBZSxFQUFFLFlBQVksQ0FBQztnQkFDdkMsQ0FBQyxLQUFLLEVBQUUsZUFBZSxFQUFFLFVBQVUsQ0FBQzthQUNyQyxDQUFDO1lBQ0YsT0FBTyxJQUFJLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7a0JBb0RHLE9BQU8sQ0FBQyxHQUFHLENBQ1gsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQTs7NkRBRXdCLFNBQVMsQ0FBQyxDQUFDLENBQVEsVUFBVSxFQUFFOzhDQUM5QyxTQUFTLENBQUMsQ0FBQyxDQUFDOzZDQUNiLFNBQVMsQ0FBQyxDQUFDLENBQUM7O21CQUV0QyxDQUNGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBNEJaLENBQUM7UUFDSixDQUFDO1FBRU8sV0FBVztZQUNqQixNQUFNLEtBQUssR0FBRztnQkFDWjtvQkFDRSxTQUFTO29CQUNULGtCQUFrQjtvQkFDbEIsZ0tBQWdLO2lCQUNqSztnQkFDRDtvQkFDRSxTQUFTO29CQUNULHdCQUF3QjtvQkFDeEIseUpBQXlKO2lCQUMxSjtnQkFDRDtvQkFDRSxTQUFTO29CQUNULDBCQUEwQjtvQkFDMUIsbUlBQW1JO2lCQUNwSTthQUNGLENBQUM7WUFDRixPQUFPLElBQUksQ0FBQTs7Ozs7Ozs7Ozs7OztnQkFhQyxLQUFLLENBQUMsR0FBRyxDQUNULENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUE7O3VDQUVNLE9BQU8sQ0FBQyxDQUFDLENBQUM7K0JBQ2xCLE9BQU8sQ0FBQyxDQUFDLENBQUMsV0FBVyxPQUFPLENBQUMsQ0FBQyxDQUFDOztpQkFFN0MsQ0FDRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0FzQ1YsQ0FBQztRQUNKLENBQUM7UUFFTyxhQUFhO1lBQ25CLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUM5QixNQUFNLEtBQUssR0FBRztnQkFDWjtvQkFDRSxJQUFJLEVBQUUsVUFBVTtvQkFDaEIsUUFBUSxFQUFFLGlCQUFpQjtvQkFDM0IsS0FBSyxFQUFFLElBQUk7b0JBQ1gsR0FBRyxFQUFFLFlBQVk7b0JBQ2pCLElBQUksRUFBRSxxQ0FBcUM7b0JBQzNDLEtBQUssRUFBRTt3QkFDTCw0Q0FBNEM7d0JBQzVDLDJDQUEyQzt3QkFDM0MseUJBQXlCO3dCQUN6QixpQ0FBaUM7d0JBQ2pDLGlDQUFpQztxQkFDbEM7b0JBQ0QsR0FBRyxFQUFFLHFCQUFxQjtvQkFDMUIsT0FBTyxFQUFFLEtBQUssQ0FBQyxLQUFLO29CQUNwQixPQUFPLEVBQUUsTUFBTTtvQkFDZixRQUFRLEVBQUUsS0FBSztpQkFDaEI7Z0JBQ0Q7b0JBQ0UsSUFBSSxFQUFFLGNBQWM7b0JBQ3BCLFFBQVEsRUFBRSx3QkFBd0I7b0JBQ2xDLEtBQUssRUFBRSxJQUFJO29CQUNYLEdBQUcsRUFBRSxtQkFBbUI7b0JBQ3hCLElBQUksRUFBRSw0Q0FBNEM7b0JBQ2xELEtBQUssRUFBRTt3QkFDTCxpREFBaUQ7d0JBQ2pELG1EQUFtRDt3QkFDbkQsOEJBQThCO3dCQUM5QixtQ0FBbUM7d0JBQ25DLGdDQUFnQztxQkFDakM7b0JBQ0QsR0FBRyxFQUFFLHVCQUF1QjtvQkFDNUIsT0FBTyxFQUFFLEtBQUssQ0FBQyxLQUFLO29CQUNwQixPQUFPLEVBQUUsUUFBUTtvQkFDakIsUUFBUSxFQUFFLElBQUk7aUJBQ2Y7Z0JBQ0Q7b0JBQ0UsSUFBSSxFQUFFLFlBQVk7b0JBQ2xCLFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLEtBQUssRUFBRSxNQUFNO29CQUNiLEdBQUcsRUFBRSxlQUFlO29CQUNwQixJQUFJLEVBQUUsNkNBQTZDO29CQUNuRCxLQUFLLEVBQUU7d0JBQ0wsa0NBQWtDO3dCQUNsQywrQ0FBK0M7d0JBQy9DLDBCQUEwQjt3QkFDMUIseUNBQXlDO3dCQUN6Qyw0QkFBNEI7cUJBQzdCO29CQUNELEdBQUcsRUFBRSxZQUFZO29CQUNqQixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87b0JBQ3RCLE9BQU8sRUFBRSxNQUFNO29CQUNmLFFBQVEsRUFBRSxLQUFLO2lCQUNoQjthQUNGLENBQUM7WUFDRixPQUFPLElBQUksQ0FBQTs7Ozs7Ozs7Ozs7O2NBWUQsS0FBSyxDQUFDLEdBQUcsQ0FDVCxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFBO21DQUNJLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRTtvQkFDakQsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBLDZDQUE2QyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUEsRUFBRTsyQ0FDdEQsT0FBTyxDQUFDLElBQUk7d0JBQy9CLE9BQU8sQ0FBQyxRQUFRO3VDQUNELE9BQU8sQ0FBQyxLQUFLLHFCQUFxQixPQUFPLENBQUMsR0FBRzs0Q0FDeEMsT0FBTyxDQUFDLElBQUk7MENBQ2QsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQSxPQUFPLE9BQU8sT0FBTyxDQUFDO3dDQUMzRCxPQUFPLENBQUMsT0FBYyxTQUFTLE9BQU8sQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLEdBQUc7O2VBRXRGLENBQ0Y7Ozs7S0FJUixDQUFDO1FBQ0osQ0FBQztRQUVPLGdCQUFnQjtZQUN0QixNQUFNLElBQUksR0FBRyxDQUFDLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQzVHLE9BQU8sSUFBSSxDQUFBOzs7Ozs7Ozs7Ozs7c0NBWXVCLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQSx5QkFBeUIsTUFBTSxTQUFTLENBQUM7O3lFQUUvQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTTtrREFDN0MsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBZ0NqRSxDQUFDO1FBQ0osQ0FBQztRQUVPLGVBQWU7WUFDckIsT0FBTyxJQUFJLENBQUE7Ozs7Ozs7O0tBUVYsQ0FBQztRQUNKLENBQUM7UUFFTyxTQUFTO1lBQ2YsT0FBTyxJQUFJLENBQUE7Ozs7Ozs7OzswREFTMkMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUs7MERBQ3JCLENBQUMsUUFBZSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRSxXQUFXLENBQUM7Ozs7S0FJckgsQ0FBQztRQUNKLENBQUM7UUFFTyxZQUFZO1lBQ2xCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUM5QixNQUFNLFVBQVUsR0FBMkI7Z0JBQ3pDLGFBQWEsRUFBRSxLQUFLLENBQUMsSUFBSTtnQkFDekIsZUFBZSxFQUFFLEtBQUssQ0FBQyxJQUFJO2dCQUMzQixjQUFjLEVBQUUsS0FBSyxDQUFDLElBQUk7Z0JBQzFCLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTTthQUNyQixDQUFDO1lBQ0YsTUFBTSxJQUFJLEdBQUc7Z0JBQ1gsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxtQkFBbUIsRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLFdBQVcsQ0FBQyxDQUFDO2dCQUNoRyxDQUFDLFlBQVksRUFBRSxDQUFDLGVBQWUsRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztnQkFDcEYsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxXQUFXLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7YUFDMUQsQ0FBQztZQUNYLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxRQUFnQixFQUFFLEVBQUUsQ0FDNUMsVUFBVSxDQUFDLFFBQVEsQ0FBQztnQkFDbEIsQ0FBQyxDQUFDLElBQUksQ0FBQSxXQUFXLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxRQUFRLE1BQU07Z0JBQ3ZELENBQUMsQ0FBQyxRQUFRLEtBQUssV0FBVztvQkFDeEIsQ0FBQyxDQUFDLElBQUksQ0FBQSwrQkFBK0IsQ0FBQyxRQUFlLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLFdBQVcsQ0FBQyxJQUFJLFFBQVEsTUFBTTtvQkFDdkgsQ0FBQyxDQUFDLElBQUksQ0FBQSxNQUFNLFFBQVEsTUFBTSxDQUFDO1lBQ2pDLE9BQU8sSUFBSSxDQUFBOzs7OztnREFLaUMsQ0FBQyxRQUFlLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQzs7Ozs7OztjQU9oRyxJQUFJLENBQUMsR0FBRyxDQUNSLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUE7O3dCQUVOLE1BQU0sQ0FBQyxDQUFDLENBQUM7d0JBQ1QsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFBLE9BQU8sZ0JBQWdCLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQzs7ZUFFaEYsQ0FDRjs7Ozt1REFJMEMsS0FBSyxDQUFDLE1BQU07Ozs7S0FJOUQsQ0FBQztRQUNKLENBQUM7UUFFTSxNQUFNO1lBQ1gsT0FBTyxJQUFJLENBQUE7O1VBRUwsSUFBSSxDQUFDLFNBQVMsRUFBRTs7c0JBRUosSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUs7MEJBQ2pCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJOztVQUVwQyxJQUFJLENBQUMsV0FBVyxFQUFFO1VBQ2xCLElBQUksQ0FBQyxjQUFjLEVBQUU7VUFDckIsSUFBSSxDQUFDLFdBQVcsRUFBRTtVQUNsQixJQUFJLENBQUMsYUFBYSxFQUFFO1VBQ3BCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtVQUN2QixJQUFJLENBQUMsZUFBZSxFQUFFO1VBQ3RCLElBQUksQ0FBQyxTQUFTLEVBQUU7VUFDaEIsSUFBSSxDQUFDLFlBQVksRUFBRTs7S0FFeEIsQ0FBQztRQUNKLENBQUM7Ozs7OztZQXJ0Q1UsdURBQWM7Ozs7O1NBQWQsY0FBYyJ9
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@idp.global/catalog",
3
- "version": "2.1.0",
3
+ "version": "2.2.0",
4
4
  "private": false,
5
5
  "description": "Web component catalog for idp.global, based on the v5 Apple-system design language.",
6
6
  "exports": {
@@ -12,7 +12,7 @@
12
12
  "author": "Task Venture Capital GmbH",
13
13
  "license": "MIT",
14
14
  "dependencies": {
15
- "@design.estate/dees-catalog": "^3.81.0",
15
+ "@design.estate/dees-catalog": "^3.90.1",
16
16
  "@design.estate/dees-domtools": "^2.5.6",
17
17
  "@design.estate/dees-element": "^2.2.4",
18
18
  "@design.estate/dees-wcctools": "^3.9.0",
@@ -3,6 +3,6 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@idp.global/catalog',
6
- version: '2.1.0',
6
+ version: '2.2.0',
7
7
  description: 'Web component catalog for idp.global, based on the v5 Apple-system design language.'
8
8
  }
@@ -60,7 +60,8 @@ export class IdpAdminSidebar extends DeesElement {
60
60
  min-height: 0;
61
61
  display: flex;
62
62
  flex-direction: column;
63
- overflow: hidden;
63
+ /* visible so the user menu can be wider than the sidebar column */
64
+ overflow: visible;
64
65
  border-right: 1px solid var(--idp-border);
65
66
  background: var(--idp-bg);
66
67
  }
@@ -285,7 +286,8 @@ export class IdpAdminSidebar extends DeesElement {
285
286
  position: absolute;
286
287
  bottom: calc(100% + 2px);
287
288
  left: 8px;
288
- right: 8px;
289
+ width: 252px;
290
+ max-width: calc(100vw - 24px);
289
291
  z-index: 40;
290
292
  padding: 4px;
291
293
  background: var(--idp-card);
@@ -57,6 +57,16 @@ export class IdpButton extends DeesElement {
57
57
  @property({ type: Boolean, reflect: true })
58
58
  public accessor loading = false;
59
59
 
60
+ /**
61
+ * When set, the button renders as a real anchor so it works as a link
62
+ * (new-tab, middle-click, crawlers) without any host-side click wiring.
63
+ */
64
+ @property({ type: String })
65
+ public accessor href = '';
66
+
67
+ @property({ type: String })
68
+ public accessor target = '';
69
+
60
70
  public static styles = [
61
71
  ...idpElementStyles,
62
72
  css`
@@ -69,10 +79,12 @@ export class IdpButton extends DeesElement {
69
79
  :host([block]) {
70
80
  display: block;
71
81
  }
72
- :host([block]) button {
82
+ :host([block]) button,
83
+ :host([block]) a {
73
84
  width: 100%;
74
85
  }
75
- button {
86
+ button,
87
+ a {
76
88
  display: inline-flex;
77
89
  align-items: center;
78
90
  justify-content: center;
@@ -87,10 +99,16 @@ export class IdpButton extends DeesElement {
87
99
  cursor: pointer;
88
100
  transition: background 120ms ease, color 120ms ease, border-color 120ms ease, transform 80ms ease;
89
101
  }
90
- button:active:not(:disabled) {
102
+ a {
103
+ text-decoration: none;
104
+ box-sizing: border-box;
105
+ }
106
+ button:active:not(:disabled),
107
+ a:active {
91
108
  transform: translateY(1px);
92
109
  }
93
- button:focus-visible {
110
+ button:focus-visible,
111
+ a:focus-visible {
94
112
  outline: 2px solid color-mix(in srgb, var(--idp-accent), transparent 68%);
95
113
  outline-offset: 2px;
96
114
  }
@@ -212,12 +230,22 @@ export class IdpButton extends DeesElement {
212
230
  ];
213
231
 
214
232
  public render(): TemplateResult {
233
+ const contentTemplate = html`
234
+ ${this.loading
235
+ ? html`<span class="spinner" aria-hidden="true"></span>`
236
+ : this.icon ? html`<idp-icon name=${this.icon as any} size="14"></idp-icon>` : html``}
237
+ <slot></slot>
238
+ `;
239
+ if (this.href && !this.disabled) {
240
+ return html`
241
+ <a class="${this.variant} ${this.size} ${this.shape === 'rect' ? 'rect' : ''}" href=${this.href} target=${this.target || ''} part="button">
242
+ ${contentTemplate}
243
+ </a>
244
+ `;
245
+ }
215
246
  return html`
216
247
  <button class="${this.variant} ${this.size} ${this.shape === 'rect' ? 'rect' : ''}" type=${this.type} ?disabled=${this.disabled || this.loading} part="button">
217
- ${this.loading
218
- ? html`<span class="spinner" aria-hidden="true"></span>`
219
- : this.icon ? html`<idp-icon name=${this.icon as any} size="14"></idp-icon>` : html``}
220
- <slot></slot>
248
+ ${contentTemplate}
221
249
  </button>
222
250
  `;
223
251
  }
@@ -95,7 +95,7 @@ export class IdpConsentCard extends DeesElement {
95
95
 
96
96
  public render(): TemplateResult {
97
97
  return html`
98
- <idp-auth-card heading="${this.appName} wants access" description="This will allow ${this.appName} to:">
98
+ <idp-auth-card heading="${this.appName} wants to access your idp.global account" description="This will allow ${this.appName} to:">
99
99
  <idp-app-pair
100
100
  slot="top"
101
101
  appName=${this.appName}
@@ -1,4 +1,4 @@
1
- import { DeesElement, html, customElement, css, type TemplateResult } from '@design.estate/dees-element';
1
+ import { DeesElement, html, customElement, css, property, type TemplateResult } from '@design.estate/dees-element';
2
2
  import { idpElementStyles } from './tokens.js';
3
3
  import './idp-button.js';
4
4
  import './idp-screenshot-placeholder.js';
@@ -14,6 +14,12 @@ export class IdpLandingHero extends DeesElement {
14
14
  public static demo = () => html`<idp-landing-hero></idp-landing-hero>`;
15
15
  public static demoGroups = ['idp.global v5 composed surfaces'];
16
16
 
17
+ @property({ type: String })
18
+ public accessor claimHref = '';
19
+
20
+ @property({ type: String })
21
+ public accessor secondaryHref = '';
22
+
17
23
  public static styles = [
18
24
  ...idpElementStyles,
19
25
  css`
@@ -100,8 +106,8 @@ export class IdpLandingHero extends DeesElement {
100
106
  Anchored to Cardano, so it can never be erased or taken away.
101
107
  </p>
102
108
  <div class="hero-actions">
103
- <idp-button variant="accent" size="lg">Claim your identity</idp-button>
104
- <idp-button variant="link" size="lg">See how it works</idp-button>
109
+ <idp-button variant="accent" size="lg" href=${this.claimHref}>Claim your identity</idp-button>
110
+ <idp-button variant="link" size="lg" href=${this.secondaryHref}>See how it works</idp-button>
105
111
  </div>
106
112
  <div class="hero-fine">
107
113
  <span>MIT licensed</span><span>Self-hostable</span><span>No credit card</span><span>Cardano mainnet</span>