@idp.global/catalog 1.2.0 → 2.0.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.
Files changed (31) hide show
  1. package/changelog.md +15 -1
  2. package/dist_bundle/bundle.js +1470 -960
  3. package/dist_ts_web/00_commitinfo_data.js +3 -3
  4. package/dist_ts_web/elements/idp-badge.js +9 -12
  5. package/dist_ts_web/elements/idp-button.d.ts +1 -1
  6. package/dist_ts_web/elements/idp-button.js +39 -16
  7. package/dist_ts_web/elements/idp-landing-hero.d.ts +1 -2
  8. package/dist_ts_web/elements/idp-landing-hero.js +63 -108
  9. package/dist_ts_web/elements/idp-landing-page.d.ts +5 -0
  10. package/dist_ts_web/elements/idp-landing-page.js +922 -391
  11. package/dist_ts_web/elements/idp-mobile-showcase.js +1 -1
  12. package/dist_ts_web/elements/idp-screenshot-placeholder.d.ts +23 -0
  13. package/dist_ts_web/elements/idp-screenshot-placeholder.js +192 -0
  14. package/dist_ts_web/elements/index.d.ts +1 -0
  15. package/dist_ts_web/elements/index.js +2 -1
  16. package/dist_ts_web/elements/tokens.d.ts +1 -1
  17. package/dist_ts_web/elements/tokens.js +129 -115
  18. package/package.json +5 -6
  19. package/readme.md +4 -3
  20. package/ts_web/00_commitinfo_data.ts +2 -2
  21. package/ts_web/elements/idp-badge.ts +8 -11
  22. package/ts_web/elements/idp-button.ts +39 -16
  23. package/ts_web/elements/idp-landing-hero.ts +62 -107
  24. package/ts_web/elements/idp-landing-page.ts +932 -389
  25. package/ts_web/elements/idp-mobile-showcase.ts +1 -1
  26. package/ts_web/elements/idp-screenshot-placeholder.ts +126 -0
  27. package/ts_web/elements/index.ts +1 -0
  28. package/ts_web/elements/tokens.ts +128 -114
  29. package/dist_watch/bundle.js +0 -120699
  30. package/dist_watch/bundle.js.map +0 -7
  31. package/dist_watch/index.html +0 -29
@@ -3,7 +3,7 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@idp.global/catalog',
6
- version: '1.2.0',
7
- description: 'Web component catalog for idp.global, based on the v3 product design language.'
6
+ version: '2.0.0',
7
+ description: 'Web component catalog for idp.global, based on the v5 Apple-system design language.'
8
8
  };
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHNfd2ViLzAwX2NvbW1pdGluZm9fZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRztJQUN4QixJQUFJLEVBQUUscUJBQXFCO0lBQzNCLE9BQU8sRUFBRSxPQUFPO0lBQ2hCLFdBQVcsRUFBRSxnRkFBZ0Y7Q0FDOUYsQ0FBQSJ9
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHNfd2ViLzAwX2NvbW1pdGluZm9fZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRztJQUN4QixJQUFJLEVBQUUscUJBQXFCO0lBQzNCLE9BQU8sRUFBRSxPQUFPO0lBQ2hCLFdBQVcsRUFBRSxxRkFBcUY7Q0FDbkcsQ0FBQSJ9
@@ -62,7 +62,7 @@ let IdpBadge = (() => {
62
62
  <idp-badge variant="error">Denied</idp-badge>
63
63
  </div>
64
64
  `;
65
- static demoGroups = ['idp.global v3 primitives'];
65
+ static demoGroups = ['idp.global v5 primitives'];
66
66
  #variant_accessor_storage = __runInitializers(this, _variant_initializers, 'default');
67
67
  get variant() { return this.#variant_accessor_storage; }
68
68
  set variant(value) { this.#variant_accessor_storage = value; }
@@ -75,15 +75,15 @@ let IdpBadge = (() => {
75
75
  .badge {
76
76
  display: inline-flex;
77
77
  align-items: center;
78
- gap: 4px;
79
- padding: 2px 8px;
78
+ gap: 5px;
79
+ padding: 3px 9px;
80
80
  border: 1px solid transparent;
81
- border-radius: 999px;
82
- font-family: var(--idp-mono);
83
- font-size: 11px;
84
- font-weight: 600;
81
+ border-radius: var(--idp-radius-pill);
82
+ font-family: var(--idp-font);
83
+ font-size: 12px;
84
+ font-weight: 590;
85
85
  letter-spacing: -0.01em;
86
- line-height: 16px;
86
+ line-height: 15px;
87
87
  }
88
88
  .default {
89
89
  background: var(--idp-muted);
@@ -108,9 +108,6 @@ let IdpBadge = (() => {
108
108
  color: var(--idp-error);
109
109
  border-color: var(--idp-error-border);
110
110
  }
111
- .accent {
112
- border-color: var(--idp-info-border);
113
- }
114
111
  .outline {
115
112
  background: transparent;
116
113
  color: var(--idp-fg);
@@ -132,4 +129,4 @@ let IdpBadge = (() => {
132
129
  return IdpBadge = _classThis;
133
130
  })();
134
131
  export { IdpBadge };
135
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRwLWJhZGdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHNfd2ViL2VsZW1lbnRzL2lkcC1iYWRnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQXVCLE1BQU0sNkJBQTZCLENBQUM7QUFDbkgsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFDO0lBV2xDLFFBQVE7NEJBRHBCLGFBQWEsQ0FBQyxXQUFXLENBQUM7Ozs7c0JBQ0csV0FBVzs7Ozt3QkFBbkIsU0FBUSxXQUFXOzs7O21DQVl0QyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDM0IsMEtBQWdCLE9BQU8sNkJBQVAsT0FBTyx5RkFBK0I7WUFieEQsNktBdUVDOzs7O1FBdEVRLE1BQU0sQ0FBQyxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFBOzs7Ozs7OztHQVE5QixDQUFDO1FBQ0ssTUFBTSxDQUFDLFVBQVUsR0FBRyxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFHeEQsMkVBQTRDLFNBQVMsRUFBQztRQUF0RCxJQUFnQixPQUFPLDZDQUErQjtRQUF0RCxJQUFnQixPQUFPLG1EQUErQjtRQUUvQyxNQUFNLENBQUMsTUFBTSxHQUFHO1lBQ3JCLEdBQUcsZ0JBQWdCO1lBQ25CLEdBQUcsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBZ0RGO1NBQ0YsQ0FBQztRQUVLLE1BQU07WUFDWCxPQUFPLElBQUksQ0FBQSxzQkFBc0IsSUFBSSxDQUFDLE9BQU8sd0JBQXdCLENBQUM7UUFDeEUsQ0FBQzs7Ozs7O1lBdEVVLHVEQUFROzs7OztTQUFSLFFBQVEifQ==
132
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRwLWJhZGdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHNfd2ViL2VsZW1lbnRzL2lkcC1iYWRnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQXVCLE1BQU0sNkJBQTZCLENBQUM7QUFDbkgsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFDO0lBV2xDLFFBQVE7NEJBRHBCLGFBQWEsQ0FBQyxXQUFXLENBQUM7Ozs7c0JBQ0csV0FBVzs7Ozt3QkFBbkIsU0FBUSxXQUFXOzs7O21DQVl0QyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDM0IsMEtBQWdCLE9BQU8sNkJBQVAsT0FBTyx5RkFBK0I7WUFieEQsNktBb0VDOzs7O1FBbkVRLE1BQU0sQ0FBQyxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFBOzs7Ozs7OztHQVE5QixDQUFDO1FBQ0ssTUFBTSxDQUFDLFVBQVUsR0FBRyxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFHeEQsMkVBQTRDLFNBQVMsRUFBQztRQUF0RCxJQUFnQixPQUFPLDZDQUErQjtRQUF0RCxJQUFnQixPQUFPLG1EQUErQjtRQUUvQyxNQUFNLENBQUMsTUFBTSxHQUFHO1lBQ3JCLEdBQUcsZ0JBQWdCO1lBQ25CLEdBQUcsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBNkNGO1NBQ0YsQ0FBQztRQUVLLE1BQU07WUFDWCxPQUFPLElBQUksQ0FBQSxzQkFBc0IsSUFBSSxDQUFDLE9BQU8sd0JBQXdCLENBQUM7UUFDeEUsQ0FBQzs7Ozs7O1lBbkVVLHVEQUFROzs7OztTQUFSLFFBQVEifQ==
@@ -1,6 +1,6 @@
1
1
  import { DeesElement, type TemplateResult } from '@design.estate/dees-element';
2
2
  import './idp-icon.js';
3
- export type TIdpButtonVariant = 'default' | 'secondary' | 'outline' | 'ghost' | 'destructive' | 'accent';
3
+ export type TIdpButtonVariant = 'default' | 'secondary' | 'outline' | 'ghost' | 'destructive' | 'accent' | 'tint' | 'link';
4
4
  export type TIdpButtonSize = 'sm' | 'md' | 'lg';
5
5
  declare global {
6
6
  interface HTMLElementTagNameMap {
@@ -80,15 +80,16 @@ let IdpButton = (() => {
80
80
  if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
81
81
  }
82
82
  static demo = () => html `
83
- <div style="display: flex; gap: 10px; flex-wrap: wrap;">
84
- <idp-button>Default</idp-button>
85
- <idp-button variant="accent">Approve</idp-button>
83
+ <div style="display: flex; gap: 10px; flex-wrap: wrap; align-items: center;">
84
+ <idp-button variant="accent">Claim identity</idp-button>
85
+ <idp-button variant="tint">Talk to us</idp-button>
86
86
  <idp-button variant="outline">Deny</idp-button>
87
87
  <idp-button variant="ghost">Ghost</idp-button>
88
+ <idp-button variant="link">See how it works</idp-button>
88
89
  <idp-button variant="destructive">Delete</idp-button>
89
90
  </div>
90
91
  `;
91
- static demoGroups = ['idp.global v3 primitives'];
92
+ static demoGroups = ['idp.global v5 primitives'];
92
93
  #variant_accessor_storage = __runInitializers(this, _variant_initializers, 'default');
93
94
  get variant() { return this.#variant_accessor_storage; }
94
95
  set variant(value) { this.#variant_accessor_storage = value; }
@@ -122,9 +123,10 @@ let IdpButton = (() => {
122
123
  justify-content: center;
123
124
  gap: 6px;
124
125
  border: 1px solid transparent;
125
- border-radius: 6px;
126
+ border-radius: var(--idp-radius-pill);
126
127
  font-family: var(--idp-font);
127
128
  font-weight: 500;
129
+ line-height: 1.4;
128
130
  letter-spacing: -0.01em;
129
131
  white-space: nowrap;
130
132
  cursor: pointer;
@@ -142,19 +144,16 @@ let IdpButton = (() => {
142
144
  cursor: not-allowed;
143
145
  }
144
146
  .sm {
145
- height: 32px;
146
- padding: 0 12px;
147
- font-size: 13px;
147
+ padding: 6px 14px;
148
+ font-size: 14px;
148
149
  }
149
150
  .md {
150
- height: 38px;
151
- padding: 0 14px;
152
- font-size: 14px;
151
+ padding: 8px 18px;
152
+ font-size: 17px;
153
153
  }
154
154
  .lg {
155
- height: 44px;
156
- padding: 0 18px;
157
- font-size: 15px;
155
+ padding: 11px 24px;
156
+ font-size: 19px;
158
157
  }
159
158
  .default {
160
159
  background: var(--idp-primary);
@@ -166,11 +165,35 @@ let IdpButton = (() => {
166
165
  .accent {
167
166
  background: var(--idp-accent);
168
167
  color: var(--idp-accent-fg);
169
- box-shadow: 0 4px 14px color-mix(in srgb, var(--idp-accent), transparent 64%);
170
168
  }
171
169
  .accent:hover:not(:disabled) {
172
170
  background: var(--idp-accent-hover);
173
171
  }
172
+ .tint {
173
+ background: var(--idp-accent-soft);
174
+ color: var(--idp-accent);
175
+ }
176
+ .tint:hover:not(:disabled) {
177
+ background: color-mix(in srgb, var(--idp-accent-soft), var(--idp-accent) 12%);
178
+ }
179
+ .link {
180
+ background: transparent;
181
+ color: var(--idp-accent);
182
+ padding: 0;
183
+ border-radius: 0;
184
+ }
185
+ .link:hover:not(:disabled) {
186
+ text-decoration: underline;
187
+ }
188
+ .link::after {
189
+ content: '›';
190
+ font-size: 1.15em;
191
+ line-height: 0;
192
+ transition: transform 160ms ease;
193
+ }
194
+ .link:hover:not(:disabled)::after {
195
+ transform: translateX(2px);
196
+ }
174
197
  .secondary {
175
198
  background: var(--idp-muted);
176
199
  color: var(--idp-fg);
@@ -231,4 +254,4 @@ let IdpButton = (() => {
231
254
  return IdpButton = _classThis;
232
255
  })();
233
256
  export { IdpButton };
234
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRwLWJ1dHRvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzX3dlYi9lbGVtZW50cy9pZHAtYnV0dG9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQ0wsV0FBVyxFQUNYLElBQUksRUFDSixRQUFRLEVBQ1IsYUFBYSxFQUNiLEdBQUcsR0FFSixNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMvQyxPQUFPLGVBQWUsQ0FBQztJQVlWLFNBQVM7NEJBRHJCLGFBQWEsQ0FBQyxZQUFZLENBQUM7Ozs7c0JBQ0csV0FBVzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt5QkFBbkIsU0FBUSxXQUFXOzs7O21DQVl2QyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7Z0NBRzFCLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQztnQ0FHMUIsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO2dDQUcxQixRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7b0NBRzFCLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDO21DQUcxQyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQztZQWQzQywwS0FBZ0IsT0FBTyw2QkFBUCxPQUFPLHlGQUFnQztZQUd2RCxpS0FBZ0IsSUFBSSw2QkFBSixJQUFJLG1GQUF3QjtZQUc1QyxpS0FBZ0IsSUFBSSw2QkFBSixJQUFJLG1GQUFNO1lBRzFCLGlLQUFnQixJQUFJLDZCQUFKLElBQUksbUZBQTJDO1lBRy9ELDZLQUFnQixRQUFRLDZCQUFSLFFBQVEsMkZBQVM7WUFHakMsMEtBQWdCLE9BQU8sNkJBQVAsT0FBTyx5RkFBUztZQTVCbEMsNktBZ0pDOzs7O1FBL0lRLE1BQU0sQ0FBQyxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFBOzs7Ozs7OztHQVE5QixDQUFDO1FBQ0ssTUFBTSxDQUFDLFVBQVUsR0FBRyxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFHeEQsMkVBQTZDLFNBQVMsRUFBQztRQUF2RCxJQUFnQixPQUFPLDZDQUFnQztRQUF2RCxJQUFnQixPQUFPLG1EQUFnQztRQUd2RCwySEFBdUMsSUFBSSxHQUFDO1FBQTVDLElBQWdCLElBQUksMENBQXdCO1FBQTVDLElBQWdCLElBQUksZ0RBQXdCO1FBRzVDLHdIQUF1QixFQUFFLEdBQUM7UUFBMUIsSUFBZ0IsSUFBSSwwQ0FBTTtRQUExQixJQUFnQixJQUFJLGdEQUFNO1FBRzFCLHdIQUFzRCxRQUFRLEdBQUM7UUFBL0QsSUFBZ0IsSUFBSSwwQ0FBMkM7UUFBL0QsSUFBZ0IsSUFBSSxnREFBMkM7UUFHL0QsZ0lBQTJCLEtBQUssR0FBQztRQUFqQyxJQUFnQixRQUFRLDhDQUFTO1FBQWpDLElBQWdCLFFBQVEsb0RBQVM7UUFHakMsa0lBQTBCLEtBQUssR0FBQztRQUFoQyxJQUFnQixPQUFPLDZDQUFTO1FBQWhDLElBQWdCLE9BQU8sbURBQVM7UUFFekIsTUFBTSxDQUFDLE1BQU0sR0FBRztZQUNyQixHQUFHLGdCQUFnQjtZQUNuQixHQUFHLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQW1HRjtTQUNGLENBQUM7UUFFSyxNQUFNO1lBQ1gsT0FBTyxJQUFJLENBQUE7dUJBQ1EsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxVQUFVLElBQUksQ0FBQyxJQUFJLGNBQWMsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsT0FBTztVQUNwRyxJQUFJLENBQUMsT0FBTztnQkFDWixDQUFDLENBQUMsSUFBSSxDQUFBLGtEQUFrRDtnQkFDeEQsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQSxrQkFBa0IsSUFBSSxDQUFDLElBQVcsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQSxFQUFFOzs7S0FHMUYsQ0FBQztRQUNKLENBQUM7Ozs7OztZQS9JVSx1REFBUzs7Ozs7U0FBVCxTQUFTIn0=
257
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRwLWJ1dHRvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzX3dlYi9lbGVtZW50cy9pZHAtYnV0dG9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQ0wsV0FBVyxFQUNYLElBQUksRUFDSixRQUFRLEVBQ1IsYUFBYSxFQUNiLEdBQUcsR0FFSixNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMvQyxPQUFPLGVBQWUsQ0FBQztJQVlWLFNBQVM7NEJBRHJCLGFBQWEsQ0FBQyxZQUFZLENBQUM7Ozs7c0JBQ0csV0FBVzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt5QkFBbkIsU0FBUSxXQUFXOzs7O21DQWF2QyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7Z0NBRzFCLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQztnQ0FHMUIsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO2dDQUcxQixRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7b0NBRzFCLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDO21DQUcxQyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQztZQWQzQywwS0FBZ0IsT0FBTyw2QkFBUCxPQUFPLHlGQUFnQztZQUd2RCxpS0FBZ0IsSUFBSSw2QkFBSixJQUFJLG1GQUF3QjtZQUc1QyxpS0FBZ0IsSUFBSSw2QkFBSixJQUFJLG1GQUFNO1lBRzFCLGlLQUFnQixJQUFJLDZCQUFKLElBQUksbUZBQTJDO1lBRy9ELDZLQUFnQixRQUFRLDZCQUFSLFFBQVEsMkZBQVM7WUFHakMsMEtBQWdCLE9BQU8sNkJBQVAsT0FBTyx5RkFBUztZQTdCbEMsNktBdUtDOzs7O1FBdEtRLE1BQU0sQ0FBQyxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFBOzs7Ozs7Ozs7R0FTOUIsQ0FBQztRQUNLLE1BQU0sQ0FBQyxVQUFVLEdBQUcsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBR3hELDJFQUE2QyxTQUFTLEVBQUM7UUFBdkQsSUFBZ0IsT0FBTyw2Q0FBZ0M7UUFBdkQsSUFBZ0IsT0FBTyxtREFBZ0M7UUFHdkQsMkhBQXVDLElBQUksR0FBQztRQUE1QyxJQUFnQixJQUFJLDBDQUF3QjtRQUE1QyxJQUFnQixJQUFJLGdEQUF3QjtRQUc1Qyx3SEFBdUIsRUFBRSxHQUFDO1FBQTFCLElBQWdCLElBQUksMENBQU07UUFBMUIsSUFBZ0IsSUFBSSxnREFBTTtRQUcxQix3SEFBc0QsUUFBUSxHQUFDO1FBQS9ELElBQWdCLElBQUksMENBQTJDO1FBQS9ELElBQWdCLElBQUksZ0RBQTJDO1FBRy9ELGdJQUEyQixLQUFLLEdBQUM7UUFBakMsSUFBZ0IsUUFBUSw4Q0FBUztRQUFqQyxJQUFnQixRQUFRLG9EQUFTO1FBR2pDLGtJQUEwQixLQUFLLEdBQUM7UUFBaEMsSUFBZ0IsT0FBTyw2Q0FBUztRQUFoQyxJQUFnQixPQUFPLG1EQUFTO1FBRXpCLE1BQU0sQ0FBQyxNQUFNLEdBQUc7WUFDckIsR0FBRyxnQkFBZ0I7WUFDbkIsR0FBRyxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBeUhGO1NBQ0YsQ0FBQztRQUVLLE1BQU07WUFDWCxPQUFPLElBQUksQ0FBQTt1QkFDUSxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLFVBQVUsSUFBSSxDQUFDLElBQUksY0FBYyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxPQUFPO1VBQ3BHLElBQUksQ0FBQyxPQUFPO2dCQUNaLENBQUMsQ0FBQyxJQUFJLENBQUEsa0RBQWtEO2dCQUN4RCxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBLGtCQUFrQixJQUFJLENBQUMsSUFBVyx3QkFBd0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBLEVBQUU7OztLQUcxRixDQUFDO1FBQ0osQ0FBQzs7Ozs7O1lBdEtVLHVEQUFTOzs7OztTQUFULFNBQVMifQ==
@@ -1,7 +1,6 @@
1
1
  import { DeesElement, type TemplateResult } from '@design.estate/dees-element';
2
2
  import './idp-button.js';
3
- import './idp-dashboard-window.js';
4
- import './idp-icon.js';
3
+ import './idp-screenshot-placeholder.js';
5
4
  declare global {
6
5
  interface HTMLElementTagNameMap {
7
6
  'idp-landing-hero': IdpLandingHero;
@@ -35,8 +35,7 @@ var __runInitializers = (this && this.__runInitializers) || function (thisArg, i
35
35
  import { DeesElement, html, customElement, css } from '@design.estate/dees-element';
36
36
  import { idpElementStyles } from './tokens.js';
37
37
  import './idp-button.js';
38
- import './idp-dashboard-window.js';
39
- import './idp-icon.js';
38
+ import './idp-screenshot-placeholder.js';
40
39
  let IdpLandingHero = (() => {
41
40
  let _classDecorators = [customElement('idp-landing-hero')];
42
41
  let _classDescriptor;
@@ -52,127 +51,77 @@ let IdpLandingHero = (() => {
52
51
  if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
53
52
  }
54
53
  static demo = () => html `<idp-landing-hero></idp-landing-hero>`;
55
- static demoGroups = ['idp.global v3 composed surfaces'];
54
+ static demoGroups = ['idp.global v5 composed surfaces'];
56
55
  static styles = [
57
56
  ...idpElementStyles,
58
57
  css `
59
58
  :host {
60
59
  display: block;
61
- }
62
- .hero {
63
- position: relative;
64
- overflow: hidden;
65
- background: var(--idp-bg);
60
+ background: var(--idp-card);
66
61
  color: var(--idp-fg);
67
- border-bottom: 1px solid var(--idp-border-soft);
68
- }
69
- .grid {
70
- position: absolute;
71
- inset: 0;
72
- background-image: linear-gradient(to right, color-mix(in srgb, var(--idp-fg), transparent 97%) 1px, transparent 1px), linear-gradient(to bottom, color-mix(in srgb, var(--idp-fg), transparent 97%) 1px, transparent 1px);
73
- background-size: 56px 56px;
74
- mask-image: radial-gradient(ellipse 80% 60% at 50% 0%, #000 30%, transparent 70%);
75
- pointer-events: none;
76
62
  }
77
- .glow {
78
- position: absolute;
79
- top: -220px;
80
- left: 50%;
81
- width: 900px;
82
- height: 600px;
83
- transform: translateX(-50%);
84
- background: radial-gradient(ellipse, rgba(59,130,246,0.18) 0%, transparent 60%);
85
- pointer-events: none;
86
- }
87
- .inner {
88
- position: relative;
89
- z-index: 1;
90
- max-width: 1240px;
91
- margin: 0 auto;
92
- padding: 96px 32px 0;
63
+ .hero {
64
+ padding: 84px 0 0;
93
65
  text-align: center;
94
66
  }
95
- .badge {
96
- display: inline-flex;
97
- align-items: center;
98
- gap: 7px;
99
- margin-bottom: 28px;
100
- padding: 5px 12px 5px 8px;
101
- border: 1px solid var(--idp-border);
102
- border-radius: 999px;
103
- background: var(--idp-muted);
104
- color: var(--idp-fg-3);
105
- font-size: 12px;
67
+ .wrap {
68
+ max-width: 1024px;
69
+ margin: 0 auto;
70
+ padding: 0 22px;
106
71
  }
107
- .pill {
108
- padding: 2px 7px;
109
- border-radius: 999px;
110
- background: rgba(59,130,246,0.18);
111
- color: var(--idp-accent-hover);
112
- font-family: var(--idp-mono);
113
- font-size: 10px;
72
+ .hero-tag {
73
+ margin-bottom: 6px;
74
+ color: var(--idp-accent);
75
+ font-size: 21px;
114
76
  font-weight: 600;
115
- letter-spacing: 0.04em;
77
+ letter-spacing: -0.02em;
116
78
  }
117
79
  h1 {
118
- margin: 0 0 24px;
119
- font-size: clamp(44px, 6.5vw, 78px);
80
+ max-width: 16ch;
81
+ margin: 0 auto 22px;
120
82
  font-family: var(--idp-display);
83
+ font-size: clamp(48px, 7vw, 96px);
121
84
  font-weight: 700;
122
- letter-spacing: -0.035em;
123
- line-height: 0.96;
124
- }
125
- h1 em {
126
- color: var(--idp-accent-hover);
127
- font-family: var(--idp-serif);
128
- font-style: italic;
129
- font-weight: 400;
85
+ line-height: 1.04;
86
+ letter-spacing: -0.025em;
130
87
  }
131
- .sub {
132
- max-width: 660px;
133
- margin: 0 auto 36px;
88
+ .hero-sub {
89
+ max-width: 600px;
90
+ margin: 0 auto 28px;
134
91
  color: var(--idp-fg-3);
135
- font-size: clamp(16px, 1.6vw, 19px);
136
- line-height: 1.55;
92
+ font-size: clamp(19px, 2vw, 24px);
93
+ font-weight: 400;
94
+ line-height: 1.4;
95
+ letter-spacing: -0.01em;
137
96
  }
138
- .actions {
97
+ .hero-actions {
139
98
  display: flex;
140
- gap: 12px;
99
+ gap: 26px;
141
100
  flex-wrap: wrap;
142
101
  align-items: center;
143
102
  justify-content: center;
144
- margin-bottom: 20px;
145
103
  }
146
- .fineprint {
147
- color: var(--idp-muted-fg);
148
- font-family: var(--idp-mono);
149
- font-size: 11px;
150
- letter-spacing: 0.04em;
104
+ .hero-fine {
105
+ display: flex;
106
+ flex-wrap: wrap;
107
+ justify-content: center;
108
+ margin-top: 22px;
109
+ color: var(--idp-fg-3);
110
+ font-size: 13px;
151
111
  }
152
- .fineprint span + span::before {
153
- content: '*';
112
+ .hero-fine span + span::before {
113
+ content: '·';
154
114
  margin: 0 10px;
115
+ color: var(--idp-fg-3);
155
116
  }
156
117
  .product {
157
- position: relative;
158
- max-width: 1180px;
159
- margin: 72px auto 0;
160
- padding: 0 32px;
161
- }
162
- .product-glow {
163
- position: absolute;
164
- inset: 30% 10% -10%;
165
- background: radial-gradient(ellipse, rgba(59,130,246,0.25) 0%, transparent 60%);
166
- filter: blur(40px);
167
- pointer-events: none;
168
- }
169
- idp-dashboard-window {
170
- position: relative;
171
- z-index: 1;
118
+ max-width: 1100px;
119
+ margin: 60px auto 0;
120
+ padding: 0 22px;
172
121
  }
173
122
  @media (max-width: 760px) {
174
- .inner {
175
- padding: 72px 20px 0;
123
+ .hero {
124
+ padding: 64px 0 0;
176
125
  }
177
126
  }
178
127
  `,
@@ -180,22 +129,28 @@ let IdpLandingHero = (() => {
180
129
  render() {
181
130
  return html `
182
131
  <section class="hero">
183
- <div class="grid"></div>
184
- <div class="glow"></div>
185
- <div class="inner">
186
- <div class="badge"><span class="pill">v3.81</span>Cardano-anchored identity, now self-hostable</div>
187
- <h1>One identity.<br/><em>Any scale.</em> Yours forever.</h1>
188
- <p class="sub">An open identity provider for everyone, from a single person to a global enterprise. Anchored to the Cardano blockchain so it can never be erased, taken away, or quietly deprecated.</p>
189
- <div class="actions">
190
- <idp-button variant="accent" size="lg" icon="shield">Claim your identity - free</idp-button>
191
- <idp-button variant="ghost" size="lg" icon="globe">View source</idp-button>
132
+ <div class="wrap">
133
+ <div class="hero-tag">idp.global</div>
134
+ <h1>One identity. Any scale.<br />Yours forever.</h1>
135
+ <p class="hero-sub">
136
+ An open identity provider for everyone — from a single person to a global enterprise.
137
+ Anchored to Cardano, so it can never be erased or taken away.
138
+ </p>
139
+ <div class="hero-actions">
140
+ <idp-button variant="accent" size="lg">Claim your identity</idp-button>
141
+ <idp-button variant="link" size="lg">See how it works</idp-button>
192
142
  </div>
193
- <div class="fineprint"><span>MIT licensed</span><span>Self-hostable</span><span>No credit card</span><span>Cardano mainnet</span></div>
194
- <div class="product">
195
- <div class="product-glow"></div>
196
- <idp-dashboard-window></idp-dashboard-window>
143
+ <div class="hero-fine">
144
+ <span>MIT licensed</span><span>Self-hostable</span><span>No credit card</span><span>Cardano mainnet</span>
197
145
  </div>
198
146
  </div>
147
+ <div class="product" id="product">
148
+ <idp-screenshot-placeholder
149
+ variant="hero"
150
+ label="Console dashboard"
151
+ meta="console.idp.global / overview · 1100 × 620"
152
+ ></idp-screenshot-placeholder>
153
+ </div>
199
154
  </section>
200
155
  `;
201
156
  }
@@ -206,4 +161,4 @@ let IdpLandingHero = (() => {
206
161
  return IdpLandingHero = _classThis;
207
162
  })();
208
163
  export { IdpLandingHero };
209
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRwLWxhbmRpbmctaGVyby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzX3dlYi9lbGVtZW50cy9pZHAtbGFuZGluZy1oZXJvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUF1QixNQUFNLDZCQUE2QixDQUFDO0FBQ3pHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMvQyxPQUFPLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxlQUFlLENBQUM7SUFTVixjQUFjOzRCQUQxQixhQUFhLENBQUMsa0JBQWtCLENBQUM7Ozs7c0JBQ0UsV0FBVzs4QkFBbkIsU0FBUSxXQUFXOzs7O1lBQS9DLDZLQXVKQzs7OztRQXRKUSxNQUFNLENBQUMsSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQSx1Q0FBdUMsQ0FBQztRQUNoRSxNQUFNLENBQUMsVUFBVSxHQUFHLENBQUMsaUNBQWlDLENBQUMsQ0FBQztRQUV4RCxNQUFNLENBQUMsTUFBTSxHQUFHO1lBQ3JCLEdBQUcsZ0JBQWdCO1lBQ25CLEdBQUcsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBd0hGO1NBQ0YsQ0FBQztRQUVLLE1BQU07WUFDWCxPQUFPLElBQUksQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQW1CVixDQUFDO1FBQ0osQ0FBQzs7WUF0SlUsdURBQWM7Ozs7O1NBQWQsY0FBYyJ9
164
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRwLWxhbmRpbmctaGVyby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzX3dlYi9lbGVtZW50cy9pZHAtbGFuZGluZy1oZXJvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUF1QixNQUFNLDZCQUE2QixDQUFDO0FBQ3pHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMvQyxPQUFPLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8saUNBQWlDLENBQUM7SUFTNUIsY0FBYzs0QkFEMUIsYUFBYSxDQUFDLGtCQUFrQixDQUFDOzs7O3NCQUNFLFdBQVc7OEJBQW5CLFNBQVEsV0FBVzs7OztZQUEvQyw2S0EyR0M7Ozs7UUExR1EsTUFBTSxDQUFDLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUEsdUNBQXVDLENBQUM7UUFDaEUsTUFBTSxDQUFDLFVBQVUsR0FBRyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7UUFFeEQsTUFBTSxDQUFDLE1BQU0sR0FBRztZQUNyQixHQUFHLGdCQUFnQjtZQUNuQixHQUFHLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0FzRUY7U0FDRixDQUFDO1FBRUssTUFBTTtZQUNYLE9BQU8sSUFBSSxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBeUJWLENBQUM7UUFDSixDQUFDOztZQTFHVSx1REFBYzs7Ozs7U0FBZCxjQUFjIn0=
@@ -2,6 +2,7 @@ import { DeesElement, type TemplateResult } from '@design.estate/dees-element';
2
2
  import './idp-badge.js';
3
3
  import './idp-button.js';
4
4
  import './idp-icon.js';
5
+ import './idp-screenshot-placeholder.js';
5
6
  import './idp-landing-hero.js';
6
7
  declare global {
7
8
  interface HTMLElementTagNameMap {
@@ -13,9 +14,13 @@ export declare class IdpLandingPage extends DeesElement {
13
14
  static demoGroups: string[];
14
15
  static styles: import("@design.estate/dees-element").CSSResult[];
15
16
  private renderNav;
17
+ private renderProof;
16
18
  private renderFeatures;
17
19
  private renderChain;
18
20
  private renderPricing;
19
21
  private renderDevelopers;
22
+ private renderManifesto;
23
+ private renderCta;
24
+ private renderFooter;
20
25
  render(): TemplateResult;
21
26
  }