@skdx/web-components-blocks 0.1.0 → 0.35.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 (168) hide show
  1. package/custom-elements.json +5072 -290
  2. package/dist/chat-composer/ChatComposer.cjs +41 -0
  3. package/dist/chat-composer/ChatComposer.d.cts +125 -0
  4. package/dist/chat-composer/ChatComposer.d.ts +125 -0
  5. package/dist/chat-composer/ChatComposer.js +41 -0
  6. package/dist/chat-composer/index.cjs +1 -0
  7. package/dist/chat-composer/index.d.cts +1 -0
  8. package/dist/chat-composer/index.d.ts +1 -0
  9. package/dist/chat-composer/index.js +1 -0
  10. package/dist/chat-message/ChatMessage.cjs +26 -0
  11. package/dist/chat-message/ChatMessage.d.cts +74 -0
  12. package/dist/chat-message/ChatMessage.d.ts +74 -0
  13. package/dist/chat-message/ChatMessage.js +26 -0
  14. package/dist/chat-message/index.cjs +1 -0
  15. package/dist/chat-message/index.d.cts +1 -0
  16. package/dist/chat-message/index.d.ts +1 -0
  17. package/dist/chat-message/index.js +1 -0
  18. package/dist/comment/Comment.cjs +26 -0
  19. package/dist/comment/Comment.d.cts +66 -0
  20. package/dist/comment/Comment.d.ts +66 -0
  21. package/dist/comment/Comment.js +26 -0
  22. package/dist/comment/index.cjs +1 -0
  23. package/dist/comment/index.d.cts +1 -0
  24. package/dist/comment/index.d.ts +1 -0
  25. package/dist/comment/index.js +1 -0
  26. package/dist/comment-thread/CommentThread.cjs +27 -0
  27. package/dist/comment-thread/CommentThread.d.cts +67 -0
  28. package/dist/comment-thread/CommentThread.d.ts +67 -0
  29. package/dist/comment-thread/CommentThread.js +27 -0
  30. package/dist/comment-thread/index.cjs +1 -0
  31. package/dist/comment-thread/index.d.cts +1 -0
  32. package/dist/comment-thread/index.d.ts +1 -0
  33. package/dist/comment-thread/index.js +1 -0
  34. package/dist/confirm-dialog/ConfirmDialog.cjs +38 -0
  35. package/dist/confirm-dialog/ConfirmDialog.d.cts +101 -0
  36. package/dist/confirm-dialog/ConfirmDialog.d.ts +101 -0
  37. package/dist/confirm-dialog/ConfirmDialog.js +38 -0
  38. package/dist/confirm-dialog/index.cjs +1 -0
  39. package/dist/confirm-dialog/index.d.cts +1 -0
  40. package/dist/confirm-dialog/index.d.ts +1 -0
  41. package/dist/confirm-dialog/index.js +1 -0
  42. package/dist/conversation-list/ConversationList.cjs +52 -0
  43. package/dist/conversation-list/ConversationList.d.cts +124 -0
  44. package/dist/conversation-list/ConversationList.d.ts +124 -0
  45. package/dist/conversation-list/ConversationList.js +52 -0
  46. package/dist/conversation-list/index.cjs +1 -0
  47. package/dist/conversation-list/index.d.cts +1 -0
  48. package/dist/conversation-list/index.d.ts +1 -0
  49. package/dist/conversation-list/index.js +1 -0
  50. package/dist/dashboard-layout/DashboardLayout.cjs +6 -7
  51. package/dist/dashboard-layout/DashboardLayout.js +9 -10
  52. package/dist/empty-state/EmptyState.cjs +29 -0
  53. package/dist/empty-state/EmptyState.d.cts +69 -0
  54. package/dist/empty-state/EmptyState.d.ts +69 -0
  55. package/dist/empty-state/EmptyState.js +29 -0
  56. package/dist/empty-state/index.cjs +1 -0
  57. package/dist/empty-state/index.d.cts +1 -0
  58. package/dist/empty-state/index.d.ts +1 -0
  59. package/dist/empty-state/index.js +1 -0
  60. package/dist/filter-bar/FilterBar.cjs +44 -0
  61. package/dist/filter-bar/FilterBar.d.cts +110 -0
  62. package/dist/filter-bar/FilterBar.d.ts +110 -0
  63. package/dist/filter-bar/FilterBar.js +44 -0
  64. package/dist/filter-bar/index.cjs +1 -0
  65. package/dist/filter-bar/index.d.cts +1 -0
  66. package/dist/filter-bar/index.d.ts +1 -0
  67. package/dist/filter-bar/index.js +1 -0
  68. package/dist/forgot-password-page/ForgotPasswordPage.cjs +57 -0
  69. package/dist/forgot-password-page/ForgotPasswordPage.d.cts +95 -0
  70. package/dist/forgot-password-page/ForgotPasswordPage.d.ts +95 -0
  71. package/dist/forgot-password-page/ForgotPasswordPage.js +57 -0
  72. package/dist/forgot-password-page/index.cjs +1 -0
  73. package/dist/forgot-password-page/index.d.cts +1 -0
  74. package/dist/forgot-password-page/index.d.ts +1 -0
  75. package/dist/forgot-password-page/index.js +1 -0
  76. package/dist/form-section/FormSection.cjs +28 -0
  77. package/dist/form-section/FormSection.d.cts +63 -0
  78. package/dist/form-section/FormSection.d.ts +63 -0
  79. package/dist/form-section/FormSection.js +28 -0
  80. package/dist/form-section/index.cjs +1 -0
  81. package/dist/form-section/index.d.cts +1 -0
  82. package/dist/form-section/index.d.ts +1 -0
  83. package/dist/form-section/index.js +1 -0
  84. package/dist/index.cjs +1 -1
  85. package/dist/index.d.cts +19 -0
  86. package/dist/index.d.ts +19 -0
  87. package/dist/index.js +1 -1
  88. package/dist/internal/slots.cjs +1 -1
  89. package/dist/internal/slots.d.cts +2 -0
  90. package/dist/internal/slots.d.ts +2 -0
  91. package/dist/internal/slots.js +1 -1
  92. package/dist/notification-center/NotificationCenter.cjs +74 -0
  93. package/dist/notification-center/NotificationCenter.d.cts +147 -0
  94. package/dist/notification-center/NotificationCenter.d.ts +147 -0
  95. package/dist/notification-center/NotificationCenter.js +74 -0
  96. package/dist/notification-center/index.cjs +1 -0
  97. package/dist/notification-center/index.d.cts +1 -0
  98. package/dist/notification-center/index.d.ts +1 -0
  99. package/dist/notification-center/index.js +1 -0
  100. package/dist/onboarding-checklist/OnboardingChecklist.cjs +55 -0
  101. package/dist/onboarding-checklist/OnboardingChecklist.d.cts +89 -0
  102. package/dist/onboarding-checklist/OnboardingChecklist.d.ts +89 -0
  103. package/dist/onboarding-checklist/OnboardingChecklist.js +55 -0
  104. package/dist/onboarding-checklist/index.cjs +1 -0
  105. package/dist/onboarding-checklist/index.d.cts +1 -0
  106. package/dist/onboarding-checklist/index.d.ts +1 -0
  107. package/dist/onboarding-checklist/index.js +1 -0
  108. package/dist/reset-password-page/ResetPasswordPage.cjs +59 -0
  109. package/dist/reset-password-page/ResetPasswordPage.d.cts +104 -0
  110. package/dist/reset-password-page/ResetPasswordPage.d.ts +104 -0
  111. package/dist/reset-password-page/ResetPasswordPage.js +59 -0
  112. package/dist/reset-password-page/index.cjs +1 -0
  113. package/dist/reset-password-page/index.d.cts +1 -0
  114. package/dist/reset-password-page/index.d.ts +1 -0
  115. package/dist/reset-password-page/index.js +1 -0
  116. package/dist/sign-up-page/SignUpPage.cjs +97 -0
  117. package/dist/sign-up-page/SignUpPage.d.cts +133 -0
  118. package/dist/sign-up-page/SignUpPage.d.ts +133 -0
  119. package/dist/sign-up-page/SignUpPage.js +97 -0
  120. package/dist/sign-up-page/index.cjs +1 -0
  121. package/dist/sign-up-page/index.d.cts +1 -0
  122. package/dist/sign-up-page/index.d.ts +1 -0
  123. package/dist/sign-up-page/index.js +1 -0
  124. package/dist/stat-card/StatCard.cjs +61 -0
  125. package/dist/stat-card/StatCard.d.cts +90 -0
  126. package/dist/stat-card/StatCard.d.ts +90 -0
  127. package/dist/stat-card/StatCard.js +61 -0
  128. package/dist/stat-card/index.cjs +1 -0
  129. package/dist/stat-card/index.d.cts +1 -0
  130. package/dist/stat-card/index.d.ts +1 -0
  131. package/dist/stat-card/index.js +1 -0
  132. package/dist/usage-card/UsageCard.cjs +42 -0
  133. package/dist/usage-card/UsageCard.d.cts +81 -0
  134. package/dist/usage-card/UsageCard.d.ts +81 -0
  135. package/dist/usage-card/UsageCard.js +42 -0
  136. package/dist/usage-card/index.cjs +1 -0
  137. package/dist/usage-card/index.d.cts +1 -0
  138. package/dist/usage-card/index.d.ts +1 -0
  139. package/dist/usage-card/index.js +1 -0
  140. package/dist/usage-card/usage.cjs +1 -0
  141. package/dist/usage-card/usage.d.cts +18 -0
  142. package/dist/usage-card/usage.d.ts +18 -0
  143. package/dist/usage-card/usage.js +1 -0
  144. package/dist/user-menu/UserMenu.cjs +30 -0
  145. package/dist/user-menu/UserMenu.d.cts +84 -0
  146. package/dist/user-menu/UserMenu.d.ts +84 -0
  147. package/dist/user-menu/UserMenu.js +30 -0
  148. package/dist/user-menu/index.cjs +1 -0
  149. package/dist/user-menu/index.d.cts +1 -0
  150. package/dist/user-menu/index.d.ts +1 -0
  151. package/dist/user-menu/index.js +1 -0
  152. package/dist/verification-page/VerificationPage.cjs +63 -0
  153. package/dist/verification-page/VerificationPage.d.cts +149 -0
  154. package/dist/verification-page/VerificationPage.d.ts +149 -0
  155. package/dist/verification-page/VerificationPage.js +63 -0
  156. package/dist/verification-page/index.cjs +1 -0
  157. package/dist/verification-page/index.d.cts +1 -0
  158. package/dist/verification-page/index.d.ts +1 -0
  159. package/dist/verification-page/index.js +1 -0
  160. package/dist/workspace-switcher/WorkspaceSwitcher.cjs +69 -0
  161. package/dist/workspace-switcher/WorkspaceSwitcher.d.cts +165 -0
  162. package/dist/workspace-switcher/WorkspaceSwitcher.d.ts +165 -0
  163. package/dist/workspace-switcher/WorkspaceSwitcher.js +69 -0
  164. package/dist/workspace-switcher/index.cjs +1 -0
  165. package/dist/workspace-switcher/index.d.cts +1 -0
  166. package/dist/workspace-switcher/index.d.ts +1 -0
  167. package/dist/workspace-switcher/index.js +1 -0
  168. package/package.json +275 -9
@@ -0,0 +1,55 @@
1
+ var m=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var n=(c,r,e,t)=>{for(var s=t>1?void 0:t?g(r,e):r,a=c.length-1,p;a>=0;a--)(p=c[a])&&(s=(t?p(r,e,s):p(s))||s);return t&&s&&m(r,e,s),s};import{html as l,LitElement as h,nothing as o}from"lit";import{property as d}from"lit/decorators.js";import{customElement as u}from"../internal/define.js";import{emit as k}from"../internal/events.js";import"@skdx/web-components/button";import"@skdx/web-components/heading";import"@skdx/web-components/progress";import"@skdx/web-components/text";import"@skdx/web-components/visually-hidden";function x(c,r){return`${c}/${r}`}var $=0,i=class extends h{constructor(){super(...arguments);this.headingLevel=2;this.completeLabel="Completed";this.optionalLabel="Optional";this.titleId=`skdx-onboarding-checklist-title-${++$}`}createRenderRoot(){return this}connectedCallback(){super.connectedCallback(),this.setAttribute("role","region"),this.setAttribute("aria-labelledby",this.titleId)}renderItem(e){let t=e.state??"pending";return l`<li
2
+ class="skdx-onboarding-checklist__item"
3
+ data-state=${t}
4
+ aria-current=${t==="active"?"step":o}
5
+ >
6
+ <span
7
+ class="skdx-onboarding-checklist__indicator"
8
+ aria-hidden="true"
9
+ ></span>
10
+ <div class="skdx-onboarding-checklist__body">
11
+ <span class="skdx-onboarding-checklist__item-title"
12
+ >${e.label}${t==="complete"?l`<skdx-visually-hidden> ${this.completeLabel}</skdx-visually-hidden>`:o}</span
13
+ >
14
+ ${e.optional?l`<span class="skdx-onboarding-checklist__optional">${this.optionalLabel}</span>`:o}
15
+ ${e.description?l`<skdx-text
16
+ class="skdx-onboarding-checklist__item-description"
17
+ as="p"
18
+ .tone=${"muted"}
19
+ >${e.description}</skdx-text
20
+ >`:o}
21
+ </div>
22
+ ${e.actionLabel&&t!=="complete"?l`<skdx-button
23
+ class="skdx-onboarding-checklist__action"
24
+ .size=${"sm"}
25
+ .variant=${t==="active"?"primary":"secondary"}
26
+ ?disabled=${t==="disabled"}
27
+ @click=${()=>{k(this,"action",e)}}
28
+ >${e.actionLabel}</skdx-button
29
+ >`:o}
30
+ </li>`}render(){let e=this.items??[],t=e.filter(a=>(a.state??"pending")==="complete").length,s=this.getProgressLabel??x;return l`
31
+ <div class="skdx-onboarding-checklist__header">
32
+ <skdx-heading
33
+ class="skdx-onboarding-checklist__title"
34
+ as=${`h${this.headingLevel}`}
35
+ id=${this.titleId}
36
+ >${this.title??""}</skdx-heading
37
+ >
38
+ ${this.description?l`<skdx-text
39
+ class="skdx-onboarding-checklist__description"
40
+ as="p"
41
+ .tone=${"muted"}
42
+ >${this.description}</skdx-text
43
+ >`:o}
44
+ ${e.length?l`<skdx-progress
45
+ class="skdx-onboarding-checklist__progress"
46
+ .value=${t}
47
+ .max=${e.length}
48
+ aria-labelledby=${this.titleId}
49
+ .getValueLabel=${(a,p,b)=>s(a,b)}
50
+ ></skdx-progress>`:o}
51
+ </div>
52
+ <ol class="skdx-onboarding-checklist__list">
53
+ ${e.map(a=>this.renderItem(a))}
54
+ </ol>
55
+ `}};n([d({type:String})],i.prototype,"title",2),n([d({type:String})],i.prototype,"description",2),n([d({type:Number,attribute:"heading-level"})],i.prototype,"headingLevel",2),n([d({attribute:!1})],i.prototype,"items",2),n([d({attribute:!1})],i.prototype,"getProgressLabel",2),n([d({type:String,attribute:"complete-label"})],i.prototype,"completeLabel",2),n([d({type:String,attribute:"optional-label"})],i.prototype,"optionalLabel",2),i=n([u("skdx-onboarding-checklist","onboarding-checklist","root")],i);export{i as SkdxOnboardingChecklist};
@@ -0,0 +1 @@
1
+ "use strict";var k=Object.defineProperty;var r=Object.getOwnPropertyDescriptor;var a=Object.getOwnPropertyNames;var x=Object.prototype.hasOwnProperty;var S=(e,t)=>{for(var i in t)k(e,i,{get:t[i],enumerable:!0})},b=(e,t,i,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let d of a(t))!x.call(e,d)&&d!==i&&k(e,d,{get:()=>t[d],enumerable:!(n=r(t,d))||n.enumerable});return e};var c=e=>b(k({},"__esModule",{value:!0}),e);var g={};S(g,{SkdxOnboardingChecklist:()=>o.SkdxOnboardingChecklist});module.exports=c(g);var o=require("./OnboardingChecklist.cjs");0&&(module.exports={SkdxOnboardingChecklist});
@@ -0,0 +1 @@
1
+ export { SkdxOnboardingChecklist, type SkdxOnboardingChecklistItem, type SkdxOnboardingChecklistItemState, } from './OnboardingChecklist.cjs';
@@ -0,0 +1 @@
1
+ export { SkdxOnboardingChecklist, type SkdxOnboardingChecklistItem, type SkdxOnboardingChecklistItemState, } from './OnboardingChecklist.js';
@@ -0,0 +1 @@
1
+ import{SkdxOnboardingChecklist as d}from"./OnboardingChecklist.js";export{d as SkdxOnboardingChecklist};
@@ -0,0 +1,59 @@
1
+ "use strict";var p=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var x=Object.getOwnPropertyNames;var w=Object.prototype.hasOwnProperty;var v=(i,e)=>{for(var t in e)p(i,t,{get:e[t],enumerable:!0})},y=(i,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of x(e))!w.call(i,r)&&r!==t&&p(i,r,{get:()=>e[r],enumerable:!(o=u(e,r))||o.enumerable});return i};var $=i=>y(p({},"__esModule",{value:!0}),i),d=(i,e,t,o)=>{for(var r=o>1?void 0:o?u(e,t):e,l=i.length-1,m;l>=0;l--)(m=i[l])&&(r=(o?m(e,t,r):m(r))||r);return o&&r&&p(e,t,r),r};var C={};v(C,{SkdxResetPasswordPage:()=>a});module.exports=$(C);var s=require("lit"),n=require("lit/decorators.js"),f=require("../internal/define.cjs"),k=require("../internal/events.cjs"),c=require("../internal/slots.cjs"),M=require("@skdx/web-components/alert"),q=require("@skdx/web-components/button"),S=require("@skdx/web-components/field"),T=require("@skdx/web-components/form"),V=require("@skdx/web-components/heading"),N=require("@skdx/web-components/password-input");var h="data-skdx-reset-password-page-generated",_="data-skdx-reset-password-page-content",g="confirmPassword",E=0,a=class extends s.LitElement{constructor(){super(...arguments);this.title="Choose a new password";this.pending=!1;this.passwordLabel="New password";this.passwordMismatchMessage="Passwords do not match";this.submitLabel="Update password";this.titleId=`skdx-reset-password-page-title-${++E}`;this.handleSubmit=t=>{let o=t.target?.closest("skdx-form");if(!o)return;t.preventDefault();let r=b(o,"password")?.value??"",l=b(o,g);if(l&&l.value!==r){l.setCustomValidity(this.passwordMismatchMessage),l.reportValidity();return}(0,k.emit)(this,"reset-password",{password:r})};this.clearMismatch=t=>{t.target.setCustomValidity("")}}createRenderRoot(){return this}connectedCallback(){super.connectedCallback(),this.setAttribute("role","region"),this.setAttribute("aria-labelledby",this.titleId),this.addEventListener("submit",this.handleSubmit),queueMicrotask(()=>this.requestUpdate())}disconnectedCallback(){this.removeEventListener("submit",this.handleSubmit),super.disconnectedCallback()}hasSlotted(t){return this.querySelector(`[slot="${t}"]`)!==null}region(t){return this.querySelector(`.skdx-reset-password-page__${t}`)}get contentRegion(){return this.querySelector(`[${_}]`)}get hasContent(){return(0,c.hasUnslottedChild)(this,h)||(this.contentRegion?.hasChildNodes()??!1)}updated(){(0,c.placeSlotted)(this,h,{requirements:this.region("requirements"),footer:this.region("footer")},this.contentRegion)}render(){return s.html`
2
+ <div
3
+ class="skdx-reset-password-page__panel"
4
+ data-skdx-reset-password-page-generated
5
+ >
6
+ <skdx-heading
7
+ class="skdx-reset-password-page__title"
8
+ as="h1"
9
+ id=${this.titleId}
10
+ >${this.title}</skdx-heading
11
+ >
12
+ ${this.error?s.html`<skdx-alert
13
+ class="skdx-reset-password-page__error"
14
+ .status=${"danger"}
15
+ >${this.error}</skdx-alert
16
+ >`:s.nothing}
17
+ ${this.success?s.html`<skdx-alert
18
+ class="skdx-reset-password-page__success"
19
+ .status=${"success"}
20
+ >${this.success}</skdx-alert
21
+ >`:s.html`<skdx-form class="skdx-reset-password-page__form">
22
+ <form>
23
+ <skdx-field
24
+ class="skdx-reset-password-page__field"
25
+ label=${this.passwordLabel}
26
+ required
27
+ >
28
+ <skdx-password-input
29
+ name="password"
30
+ required
31
+ ></skdx-password-input>
32
+ ${this.hasSlotted("requirements")?s.html`<skdx-field-description
33
+ class="skdx-reset-password-page__requirements"
34
+ ></skdx-field-description>`:s.nothing}
35
+ </skdx-field>
36
+ ${this.confirmPasswordLabel===void 0?s.nothing:s.html`<skdx-field
37
+ class="skdx-reset-password-page__field"
38
+ label=${this.confirmPasswordLabel}
39
+ required
40
+ >
41
+ <skdx-password-input
42
+ name=${g}
43
+ required
44
+ @value-change=${this.clearMismatch}
45
+ ></skdx-password-input>
46
+ </skdx-field>`}
47
+ ${this.hasContent?s.html`<div data-skdx-reset-password-page-content></div>`:s.nothing}
48
+ <skdx-button
49
+ class="skdx-reset-password-page__submit"
50
+ type="submit"
51
+ ?loading=${this.pending}
52
+ ?disabled=${this.pending}
53
+ >${this.submitLabel}</skdx-button
54
+ >
55
+ </form>
56
+ </skdx-form>`}
57
+ ${this.hasSlotted("footer")?s.html`<div class="skdx-reset-password-page__footer"></div>`:s.nothing}
58
+ </div>
59
+ `}};d([(0,n.property)({type:String})],a.prototype,"title",2),d([(0,n.property)({type:String})],a.prototype,"error",2),d([(0,n.property)({type:String})],a.prototype,"success",2),d([(0,n.property)({type:Boolean})],a.prototype,"pending",2),d([(0,n.property)({type:String,attribute:"password-label"})],a.prototype,"passwordLabel",2),d([(0,n.property)({type:String,attribute:"confirm-password-label"})],a.prototype,"confirmPasswordLabel",2),d([(0,n.property)({type:String,attribute:"password-mismatch-message"})],a.prototype,"passwordMismatchMessage",2),d([(0,n.property)({type:String,attribute:"submit-label"})],a.prototype,"submitLabel",2),a=d([(0,f.customElement)("skdx-reset-password-page","reset-password-page","root")],a);function b(i,e){return i.querySelector(`[name="${e}"]`)}0&&(module.exports={SkdxResetPasswordPage});
@@ -0,0 +1,104 @@
1
+ import { LitElement, type TemplateResult } from 'lit';
2
+ import '@skdx/web-components/alert';
3
+ import '@skdx/web-components/button';
4
+ import '@skdx/web-components/field';
5
+ import '@skdx/web-components/form';
6
+ import '@skdx/web-components/heading';
7
+ import '@skdx/web-components/password-input';
8
+ /** What a `reset-password` event carries: the new password the form held. */
9
+ export interface SkdxResetPasswordDetail {
10
+ /** The new password, already matched against the confirmation when one renders. */
11
+ password: string;
12
+ }
13
+ /**
14
+ * Reset-password block: a new-password field with its rules, an optional
15
+ * confirmation matched against it, and a submit button, replaced entirely by a
16
+ * success alert once the change is accepted.
17
+ *
18
+ * Renders light DOM, so its parts are classes rather than shadow `::part()`
19
+ * targets: `.skdx-reset-password-page` on the host, then `__panel`, `__title`,
20
+ * `__error`, `__success`, `__form`, `__field`, `__requirements`, `__submit`
21
+ * and `__footer`.
22
+ *
23
+ * @example
24
+ * ```html
25
+ * <skdx-reset-password-page
26
+ * id="reset"
27
+ * confirm-password-label="Confirm new password"
28
+ * >
29
+ * <span slot="requirements">At least 12 characters.</span>
30
+ * </skdx-reset-password-page>
31
+ * <script>
32
+ * document
33
+ * .getElementById('reset')
34
+ * .addEventListener('reset-password', (event) => console.log(event.detail.password));
35
+ * </script>
36
+ * ```
37
+ *
38
+ * @slot - Extra fields rendered inside the form, above the submit button.
39
+ * @slot requirements - Password rules used as the new-password field's description.
40
+ * @slot footer - Navigation below the form, such as a link back to the sign-in page.
41
+ * @fires reset-password - Fires with `{ password }` when the form submits with a valid password that matches the confirmation.
42
+ */
43
+ export declare class SkdxResetPasswordPage extends LitElement {
44
+ /** Light DOM, so `@skdx/skins` and consumer CSS reach the composed core elements. */
45
+ createRenderRoot(): HTMLElement | DocumentFragment;
46
+ /**
47
+ * Heading text, rendered into a derived `<h1>` that names the section.
48
+ * @default 'Choose a new password'
49
+ */
50
+ title: string;
51
+ /**
52
+ * Message rendered into a derived error Alert above the form. The block never clears it.
53
+ * @default undefined — no error region renders.
54
+ */
55
+ error?: string;
56
+ /**
57
+ * Confirmation rendered into a derived success Alert that replaces the form entirely.
58
+ * @default undefined — the form renders instead.
59
+ */
60
+ success?: string;
61
+ /**
62
+ * Marks the request in flight, making the submit button busy while both fields stay editable.
63
+ * @default false
64
+ */
65
+ pending: boolean;
66
+ /**
67
+ * Label of the field where the new password is typed.
68
+ * @default 'New password'
69
+ */
70
+ passwordLabel: string;
71
+ /**
72
+ * Label of the confirmation field; supplying it is what turns password matching on.
73
+ * @default undefined — no confirmation field renders.
74
+ */
75
+ confirmPasswordLabel?: string;
76
+ /**
77
+ * Validation message pushed onto the confirmation field when the two passwords differ.
78
+ * @default 'Passwords do not match'
79
+ */
80
+ passwordMismatchMessage: string;
81
+ /**
82
+ * Text of the form's submit button.
83
+ * @default 'Update password'
84
+ */
85
+ submitLabel: string;
86
+ /** Generated title id, published as the section's `aria-labelledby`. */
87
+ private readonly titleId;
88
+ connectedCallback(): void;
89
+ disconnectedCallback(): void;
90
+ /** Whether the consumer supplied content for `name` — still true once it has been moved in. */
91
+ private hasSlotted;
92
+ private region;
93
+ private get contentRegion();
94
+ private get hasContent();
95
+ protected updated(): void;
96
+ private readonly handleSubmit;
97
+ private readonly clearMismatch;
98
+ render(): TemplateResult;
99
+ }
100
+ declare global {
101
+ interface HTMLElementTagNameMap {
102
+ 'skdx-reset-password-page': SkdxResetPasswordPage;
103
+ }
104
+ }
@@ -0,0 +1,104 @@
1
+ import { LitElement, type TemplateResult } from 'lit';
2
+ import '@skdx/web-components/alert';
3
+ import '@skdx/web-components/button';
4
+ import '@skdx/web-components/field';
5
+ import '@skdx/web-components/form';
6
+ import '@skdx/web-components/heading';
7
+ import '@skdx/web-components/password-input';
8
+ /** What a `reset-password` event carries: the new password the form held. */
9
+ export interface SkdxResetPasswordDetail {
10
+ /** The new password, already matched against the confirmation when one renders. */
11
+ password: string;
12
+ }
13
+ /**
14
+ * Reset-password block: a new-password field with its rules, an optional
15
+ * confirmation matched against it, and a submit button, replaced entirely by a
16
+ * success alert once the change is accepted.
17
+ *
18
+ * Renders light DOM, so its parts are classes rather than shadow `::part()`
19
+ * targets: `.skdx-reset-password-page` on the host, then `__panel`, `__title`,
20
+ * `__error`, `__success`, `__form`, `__field`, `__requirements`, `__submit`
21
+ * and `__footer`.
22
+ *
23
+ * @example
24
+ * ```html
25
+ * <skdx-reset-password-page
26
+ * id="reset"
27
+ * confirm-password-label="Confirm new password"
28
+ * >
29
+ * <span slot="requirements">At least 12 characters.</span>
30
+ * </skdx-reset-password-page>
31
+ * <script>
32
+ * document
33
+ * .getElementById('reset')
34
+ * .addEventListener('reset-password', (event) => console.log(event.detail.password));
35
+ * </script>
36
+ * ```
37
+ *
38
+ * @slot - Extra fields rendered inside the form, above the submit button.
39
+ * @slot requirements - Password rules used as the new-password field's description.
40
+ * @slot footer - Navigation below the form, such as a link back to the sign-in page.
41
+ * @fires reset-password - Fires with `{ password }` when the form submits with a valid password that matches the confirmation.
42
+ */
43
+ export declare class SkdxResetPasswordPage extends LitElement {
44
+ /** Light DOM, so `@skdx/skins` and consumer CSS reach the composed core elements. */
45
+ createRenderRoot(): HTMLElement | DocumentFragment;
46
+ /**
47
+ * Heading text, rendered into a derived `<h1>` that names the section.
48
+ * @default 'Choose a new password'
49
+ */
50
+ title: string;
51
+ /**
52
+ * Message rendered into a derived error Alert above the form. The block never clears it.
53
+ * @default undefined — no error region renders.
54
+ */
55
+ error?: string;
56
+ /**
57
+ * Confirmation rendered into a derived success Alert that replaces the form entirely.
58
+ * @default undefined — the form renders instead.
59
+ */
60
+ success?: string;
61
+ /**
62
+ * Marks the request in flight, making the submit button busy while both fields stay editable.
63
+ * @default false
64
+ */
65
+ pending: boolean;
66
+ /**
67
+ * Label of the field where the new password is typed.
68
+ * @default 'New password'
69
+ */
70
+ passwordLabel: string;
71
+ /**
72
+ * Label of the confirmation field; supplying it is what turns password matching on.
73
+ * @default undefined — no confirmation field renders.
74
+ */
75
+ confirmPasswordLabel?: string;
76
+ /**
77
+ * Validation message pushed onto the confirmation field when the two passwords differ.
78
+ * @default 'Passwords do not match'
79
+ */
80
+ passwordMismatchMessage: string;
81
+ /**
82
+ * Text of the form's submit button.
83
+ * @default 'Update password'
84
+ */
85
+ submitLabel: string;
86
+ /** Generated title id, published as the section's `aria-labelledby`. */
87
+ private readonly titleId;
88
+ connectedCallback(): void;
89
+ disconnectedCallback(): void;
90
+ /** Whether the consumer supplied content for `name` — still true once it has been moved in. */
91
+ private hasSlotted;
92
+ private region;
93
+ private get contentRegion();
94
+ private get hasContent();
95
+ protected updated(): void;
96
+ private readonly handleSubmit;
97
+ private readonly clearMismatch;
98
+ render(): TemplateResult;
99
+ }
100
+ declare global {
101
+ interface HTMLElementTagNameMap {
102
+ 'skdx-reset-password-page': SkdxResetPasswordPage;
103
+ }
104
+ }
@@ -0,0 +1,59 @@
1
+ var g=Object.defineProperty;var b=Object.getOwnPropertyDescriptor;var r=(l,n,e,i)=>{for(var s=i>1?void 0:i?b(n,e):n,a=l.length-1,c;a>=0;a--)(c=l[a])&&(s=(i?c(n,e,s):c(s))||s);return i&&s&&g(n,e,s),s};import{html as o,LitElement as f,nothing as p}from"lit";import{property as d}from"lit/decorators.js";import{customElement as k}from"../internal/define.js";import{emit as x}from"../internal/events.js";import{hasUnslottedChild as w,placeSlotted as v}from"../internal/slots.js";import"@skdx/web-components/alert";import"@skdx/web-components/button";import"@skdx/web-components/field";import"@skdx/web-components/form";import"@skdx/web-components/heading";import"@skdx/web-components/password-input";var m="data-skdx-reset-password-page-generated",y="data-skdx-reset-password-page-content",u="confirmPassword",$=0,t=class extends f{constructor(){super(...arguments);this.title="Choose a new password";this.pending=!1;this.passwordLabel="New password";this.passwordMismatchMessage="Passwords do not match";this.submitLabel="Update password";this.titleId=`skdx-reset-password-page-title-${++$}`;this.handleSubmit=e=>{let i=e.target?.closest("skdx-form");if(!i)return;e.preventDefault();let s=h(i,"password")?.value??"",a=h(i,u);if(a&&a.value!==s){a.setCustomValidity(this.passwordMismatchMessage),a.reportValidity();return}x(this,"reset-password",{password:s})};this.clearMismatch=e=>{e.target.setCustomValidity("")}}createRenderRoot(){return this}connectedCallback(){super.connectedCallback(),this.setAttribute("role","region"),this.setAttribute("aria-labelledby",this.titleId),this.addEventListener("submit",this.handleSubmit),queueMicrotask(()=>this.requestUpdate())}disconnectedCallback(){this.removeEventListener("submit",this.handleSubmit),super.disconnectedCallback()}hasSlotted(e){return this.querySelector(`[slot="${e}"]`)!==null}region(e){return this.querySelector(`.skdx-reset-password-page__${e}`)}get contentRegion(){return this.querySelector(`[${y}]`)}get hasContent(){return w(this,m)||(this.contentRegion?.hasChildNodes()??!1)}updated(){v(this,m,{requirements:this.region("requirements"),footer:this.region("footer")},this.contentRegion)}render(){return o`
2
+ <div
3
+ class="skdx-reset-password-page__panel"
4
+ data-skdx-reset-password-page-generated
5
+ >
6
+ <skdx-heading
7
+ class="skdx-reset-password-page__title"
8
+ as="h1"
9
+ id=${this.titleId}
10
+ >${this.title}</skdx-heading
11
+ >
12
+ ${this.error?o`<skdx-alert
13
+ class="skdx-reset-password-page__error"
14
+ .status=${"danger"}
15
+ >${this.error}</skdx-alert
16
+ >`:p}
17
+ ${this.success?o`<skdx-alert
18
+ class="skdx-reset-password-page__success"
19
+ .status=${"success"}
20
+ >${this.success}</skdx-alert
21
+ >`:o`<skdx-form class="skdx-reset-password-page__form">
22
+ <form>
23
+ <skdx-field
24
+ class="skdx-reset-password-page__field"
25
+ label=${this.passwordLabel}
26
+ required
27
+ >
28
+ <skdx-password-input
29
+ name="password"
30
+ required
31
+ ></skdx-password-input>
32
+ ${this.hasSlotted("requirements")?o`<skdx-field-description
33
+ class="skdx-reset-password-page__requirements"
34
+ ></skdx-field-description>`:p}
35
+ </skdx-field>
36
+ ${this.confirmPasswordLabel===void 0?p:o`<skdx-field
37
+ class="skdx-reset-password-page__field"
38
+ label=${this.confirmPasswordLabel}
39
+ required
40
+ >
41
+ <skdx-password-input
42
+ name=${u}
43
+ required
44
+ @value-change=${this.clearMismatch}
45
+ ></skdx-password-input>
46
+ </skdx-field>`}
47
+ ${this.hasContent?o`<div data-skdx-reset-password-page-content></div>`:p}
48
+ <skdx-button
49
+ class="skdx-reset-password-page__submit"
50
+ type="submit"
51
+ ?loading=${this.pending}
52
+ ?disabled=${this.pending}
53
+ >${this.submitLabel}</skdx-button
54
+ >
55
+ </form>
56
+ </skdx-form>`}
57
+ ${this.hasSlotted("footer")?o`<div class="skdx-reset-password-page__footer"></div>`:p}
58
+ </div>
59
+ `}};r([d({type:String})],t.prototype,"title",2),r([d({type:String})],t.prototype,"error",2),r([d({type:String})],t.prototype,"success",2),r([d({type:Boolean})],t.prototype,"pending",2),r([d({type:String,attribute:"password-label"})],t.prototype,"passwordLabel",2),r([d({type:String,attribute:"confirm-password-label"})],t.prototype,"confirmPasswordLabel",2),r([d({type:String,attribute:"password-mismatch-message"})],t.prototype,"passwordMismatchMessage",2),r([d({type:String,attribute:"submit-label"})],t.prototype,"submitLabel",2),t=r([k("skdx-reset-password-page","reset-password-page","root")],t);function h(l,n){return l.querySelector(`[name="${n}"]`)}export{t as SkdxResetPasswordPage};
@@ -0,0 +1 @@
1
+ "use strict";var d=Object.defineProperty;var x=Object.getOwnPropertyDescriptor;var P=Object.getOwnPropertyNames;var k=Object.prototype.hasOwnProperty;var p=(s,e)=>{for(var a in e)d(s,a,{get:e[a],enumerable:!0})},w=(s,e,a,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of P(e))!k.call(s,t)&&t!==a&&d(s,t,{get:()=>e[t],enumerable:!(o=x(e,t))||o.enumerable});return s};var R=s=>w(d({},"__esModule",{value:!0}),s);var S={};p(S,{SkdxResetPasswordPage:()=>r.SkdxResetPasswordPage});module.exports=R(S);var r=require("./ResetPasswordPage.cjs");0&&(module.exports={SkdxResetPasswordPage});
@@ -0,0 +1 @@
1
+ export { SkdxResetPasswordPage, type SkdxResetPasswordDetail } from './ResetPasswordPage.cjs';
@@ -0,0 +1 @@
1
+ export { SkdxResetPasswordPage, type SkdxResetPasswordDetail } from './ResetPasswordPage.js';
@@ -0,0 +1 @@
1
+ import{SkdxResetPasswordPage as t}from"./ResetPasswordPage.js";export{t as SkdxResetPasswordPage};
@@ -0,0 +1,97 @@
1
+ "use strict";var u=Object.defineProperty;var h=Object.getOwnPropertyDescriptor;var _=Object.getOwnPropertyNames;var y=Object.prototype.hasOwnProperty;var L=(r,t)=>{for(var e in t)u(r,e,{get:t[e],enumerable:!0})},$=(r,t,e,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of _(t))!y.call(r,s)&&s!==e&&u(r,s,{get:()=>t[s],enumerable:!(a=h(t,s))||a.enumerable});return r};var E=r=>$(u({},"__esModule",{value:!0}),r),n=(r,t,e,a)=>{for(var s=a>1?void 0:a?h(t,e):t,o=r.length-1,p;o>=0;o--)(p=r[o])&&(s=(a?p(t,e,s):p(s))||s);return a&&s&&u(t,e,s),s};var q={};L(q,{SkdxSignUpPage:()=>d});module.exports=E(q);var i=require("lit"),l=require("lit/decorators.js"),k=require("../internal/define.cjs"),g=require("../internal/events.cjs"),m=require("../internal/slots.cjs"),f=require("../sign-in-page/index.cjs"),S=require("@skdx/web-components/alert"),H=require("@skdx/web-components/button"),V=require("@skdx/web-components/checkbox"),I=require("@skdx/web-components/divider"),R=require("@skdx/web-components/field"),A=require("@skdx/web-components/form"),D=require("@skdx/web-components/heading"),N=require("@skdx/web-components/password-input"),F=require("@skdx/web-components/text-field");var x="data-skdx-sign-up-page-generated",w="data-skdx-sign-up-page-content",b="confirmPassword",M=0,d=class extends i.LitElement{constructor(){super(...arguments);this.title="Create account";this.pending=!1;this.emailLabel="Email";this.passwordLabel="Password";this.passwordMismatchMessage="Passwords do not match";this.submitLabel="Create account";this.titleId=`skdx-sign-up-page-title-${++M}`;this.handleSubmit=e=>{let a=e.target?.closest("skdx-form");if(!a)return;e.preventDefault();let s=c(a,"password"),o=v(a,b);if(o&&o.value!==s){o.setCustomValidity(this.passwordMismatchMessage),o.reportValidity();return}let p={providerId:"credentials",email:c(a,"email"),password:s};this.nameLabel!==void 0&&(p.name=c(a,"name")),this.hasSlotted("terms")&&(p.termsAccepted=C(a)),(0,g.emit)(this,"sign-up",p)};this.clearMismatch=e=>{e.target.setCustomValidity("")}}createRenderRoot(){return this}connectedCallback(){super.connectedCallback(),this.setAttribute("role","region"),this.setAttribute("aria-labelledby",this.titleId),this.addEventListener("submit",this.handleSubmit),queueMicrotask(()=>this.requestUpdate())}disconnectedCallback(){this.removeEventListener("submit",this.handleSubmit),super.disconnectedCallback()}hasSlotted(e){return this.querySelector(`[slot="${e}"]`)!==null}region(e){return this.querySelector(`.skdx-sign-up-page__${e}`)}get termsLabel(){return this.querySelector(".skdx-sign-up-page__terms skdx-checkbox > span")}get contentRegion(){return this.querySelector(`[${w}]`)}get hasContent(){return(0,m.hasUnslottedChild)(this,x)||(this.contentRegion?.hasChildNodes()??!1)}updated(){(0,m.placeSlotted)(this,x,{terms:this.termsLabel,footer:this.region("footer")},this.contentRegion)}signUpWithProvider(e){(0,g.emit)(this,"sign-up",{providerId:e})}render(){let e=this.providers??[],a=this.getProviderLabel??f.defaultProviderLabel;return i.html`
2
+ <div
3
+ class="skdx-sign-up-page__panel"
4
+ data-skdx-sign-up-page-generated
5
+ >
6
+ <skdx-heading
7
+ class="skdx-sign-up-page__title"
8
+ as="h1"
9
+ id=${this.titleId}
10
+ >${this.title}</skdx-heading
11
+ >
12
+ ${this.error?i.html`<skdx-alert
13
+ class="skdx-sign-up-page__error"
14
+ .status=${"danger"}
15
+ >${this.error}</skdx-alert
16
+ >`:i.nothing}
17
+ ${e.length?i.html`<div class="skdx-sign-up-page__providers">
18
+ ${e.map(s=>i.html`<skdx-button
19
+ class="skdx-sign-up-page__provider"
20
+ type="button"
21
+ data-provider=${s.id}
22
+ @click=${()=>this.signUpWithProvider(s.id)}
23
+ >${a(s)}</skdx-button
24
+ >`)}
25
+ </div>
26
+ <skdx-divider class="skdx-sign-up-page__divider"></skdx-divider>`:i.nothing}
27
+ <skdx-form class="skdx-sign-up-page__form">
28
+ <form>
29
+ ${this.nameLabel===void 0?i.nothing:i.html`<skdx-field
30
+ class="skdx-sign-up-page__field"
31
+ label=${this.nameLabel}
32
+ required
33
+ >
34
+ <skdx-text-field
35
+ name="name"
36
+ required
37
+ >
38
+ <skdx-text-field-input autocomplete="name"></skdx-text-field-input>
39
+ </skdx-text-field>
40
+ </skdx-field>`}
41
+ <skdx-field
42
+ class="skdx-sign-up-page__field"
43
+ label=${this.emailLabel}
44
+ required
45
+ >
46
+ <skdx-text-field
47
+ name="email"
48
+ type="email"
49
+ required
50
+ >
51
+ <skdx-text-field-input
52
+ type="email"
53
+ autocomplete="email"
54
+ ></skdx-text-field-input>
55
+ </skdx-text-field>
56
+ </skdx-field>
57
+ <skdx-field
58
+ class="skdx-sign-up-page__field"
59
+ label=${this.passwordLabel}
60
+ required
61
+ >
62
+ <skdx-password-input
63
+ name="password"
64
+ required
65
+ ></skdx-password-input>
66
+ </skdx-field>
67
+ ${this.confirmPasswordLabel===void 0?i.nothing:i.html`<skdx-field
68
+ class="skdx-sign-up-page__field"
69
+ label=${this.confirmPasswordLabel}
70
+ required
71
+ >
72
+ <skdx-password-input
73
+ name=${b}
74
+ required
75
+ @value-change=${this.clearMismatch}
76
+ ></skdx-password-input>
77
+ </skdx-field>`}
78
+ ${this.hasContent?i.html`<div data-skdx-sign-up-page-content></div>`:i.nothing}
79
+ ${this.hasSlotted("terms")?i.html`<skdx-field class="skdx-sign-up-page__terms">
80
+ <skdx-checkbox
81
+ name="terms"
82
+ required
83
+ ><span></span
84
+ ></skdx-checkbox>
85
+ </skdx-field>`:i.nothing}
86
+ <skdx-button
87
+ class="skdx-sign-up-page__submit"
88
+ type="submit"
89
+ ?loading=${this.pending}
90
+ ?disabled=${this.pending}
91
+ >${this.submitLabel}</skdx-button
92
+ >
93
+ </form>
94
+ </skdx-form>
95
+ ${this.hasSlotted("footer")?i.html`<div class="skdx-sign-up-page__footer"></div>`:i.nothing}
96
+ </div>
97
+ `}};n([(0,l.property)({type:String})],d.prototype,"title",2),n([(0,l.property)({attribute:!1})],d.prototype,"providers",2),n([(0,l.property)({type:String})],d.prototype,"error",2),n([(0,l.property)({type:Boolean})],d.prototype,"pending",2),n([(0,l.property)({type:String,attribute:"name-label"})],d.prototype,"nameLabel",2),n([(0,l.property)({type:String,attribute:"email-label"})],d.prototype,"emailLabel",2),n([(0,l.property)({type:String,attribute:"password-label"})],d.prototype,"passwordLabel",2),n([(0,l.property)({type:String,attribute:"confirm-password-label"})],d.prototype,"confirmPasswordLabel",2),n([(0,l.property)({type:String,attribute:"password-mismatch-message"})],d.prototype,"passwordMismatchMessage",2),n([(0,l.property)({type:String,attribute:"submit-label"})],d.prototype,"submitLabel",2),n([(0,l.property)({attribute:!1})],d.prototype,"getProviderLabel",2),d=n([(0,k.customElement)("skdx-sign-up-page","sign-up-page","root")],d);function v(r,t){return r.querySelector(`[name="${t}"]`)}function c(r,t){return v(r,t)?.value??""}function C(r){return r.querySelector('[name="terms"]')?.checked===!0}0&&(module.exports={SkdxSignUpPage});