@skdx/web-components-blocks 0.34.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 (166) hide show
  1. package/custom-elements.json +5067 -285
  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/empty-state/EmptyState.cjs +29 -0
  51. package/dist/empty-state/EmptyState.d.cts +69 -0
  52. package/dist/empty-state/EmptyState.d.ts +69 -0
  53. package/dist/empty-state/EmptyState.js +29 -0
  54. package/dist/empty-state/index.cjs +1 -0
  55. package/dist/empty-state/index.d.cts +1 -0
  56. package/dist/empty-state/index.d.ts +1 -0
  57. package/dist/empty-state/index.js +1 -0
  58. package/dist/filter-bar/FilterBar.cjs +44 -0
  59. package/dist/filter-bar/FilterBar.d.cts +110 -0
  60. package/dist/filter-bar/FilterBar.d.ts +110 -0
  61. package/dist/filter-bar/FilterBar.js +44 -0
  62. package/dist/filter-bar/index.cjs +1 -0
  63. package/dist/filter-bar/index.d.cts +1 -0
  64. package/dist/filter-bar/index.d.ts +1 -0
  65. package/dist/filter-bar/index.js +1 -0
  66. package/dist/forgot-password-page/ForgotPasswordPage.cjs +57 -0
  67. package/dist/forgot-password-page/ForgotPasswordPage.d.cts +95 -0
  68. package/dist/forgot-password-page/ForgotPasswordPage.d.ts +95 -0
  69. package/dist/forgot-password-page/ForgotPasswordPage.js +57 -0
  70. package/dist/forgot-password-page/index.cjs +1 -0
  71. package/dist/forgot-password-page/index.d.cts +1 -0
  72. package/dist/forgot-password-page/index.d.ts +1 -0
  73. package/dist/forgot-password-page/index.js +1 -0
  74. package/dist/form-section/FormSection.cjs +28 -0
  75. package/dist/form-section/FormSection.d.cts +63 -0
  76. package/dist/form-section/FormSection.d.ts +63 -0
  77. package/dist/form-section/FormSection.js +28 -0
  78. package/dist/form-section/index.cjs +1 -0
  79. package/dist/form-section/index.d.cts +1 -0
  80. package/dist/form-section/index.d.ts +1 -0
  81. package/dist/form-section/index.js +1 -0
  82. package/dist/index.cjs +1 -1
  83. package/dist/index.d.cts +19 -0
  84. package/dist/index.d.ts +19 -0
  85. package/dist/index.js +1 -1
  86. package/dist/internal/slots.cjs +1 -1
  87. package/dist/internal/slots.d.cts +2 -0
  88. package/dist/internal/slots.d.ts +2 -0
  89. package/dist/internal/slots.js +1 -1
  90. package/dist/notification-center/NotificationCenter.cjs +74 -0
  91. package/dist/notification-center/NotificationCenter.d.cts +147 -0
  92. package/dist/notification-center/NotificationCenter.d.ts +147 -0
  93. package/dist/notification-center/NotificationCenter.js +74 -0
  94. package/dist/notification-center/index.cjs +1 -0
  95. package/dist/notification-center/index.d.cts +1 -0
  96. package/dist/notification-center/index.d.ts +1 -0
  97. package/dist/notification-center/index.js +1 -0
  98. package/dist/onboarding-checklist/OnboardingChecklist.cjs +55 -0
  99. package/dist/onboarding-checklist/OnboardingChecklist.d.cts +89 -0
  100. package/dist/onboarding-checklist/OnboardingChecklist.d.ts +89 -0
  101. package/dist/onboarding-checklist/OnboardingChecklist.js +55 -0
  102. package/dist/onboarding-checklist/index.cjs +1 -0
  103. package/dist/onboarding-checklist/index.d.cts +1 -0
  104. package/dist/onboarding-checklist/index.d.ts +1 -0
  105. package/dist/onboarding-checklist/index.js +1 -0
  106. package/dist/reset-password-page/ResetPasswordPage.cjs +59 -0
  107. package/dist/reset-password-page/ResetPasswordPage.d.cts +104 -0
  108. package/dist/reset-password-page/ResetPasswordPage.d.ts +104 -0
  109. package/dist/reset-password-page/ResetPasswordPage.js +59 -0
  110. package/dist/reset-password-page/index.cjs +1 -0
  111. package/dist/reset-password-page/index.d.cts +1 -0
  112. package/dist/reset-password-page/index.d.ts +1 -0
  113. package/dist/reset-password-page/index.js +1 -0
  114. package/dist/sign-up-page/SignUpPage.cjs +97 -0
  115. package/dist/sign-up-page/SignUpPage.d.cts +133 -0
  116. package/dist/sign-up-page/SignUpPage.d.ts +133 -0
  117. package/dist/sign-up-page/SignUpPage.js +97 -0
  118. package/dist/sign-up-page/index.cjs +1 -0
  119. package/dist/sign-up-page/index.d.cts +1 -0
  120. package/dist/sign-up-page/index.d.ts +1 -0
  121. package/dist/sign-up-page/index.js +1 -0
  122. package/dist/stat-card/StatCard.cjs +61 -0
  123. package/dist/stat-card/StatCard.d.cts +90 -0
  124. package/dist/stat-card/StatCard.d.ts +90 -0
  125. package/dist/stat-card/StatCard.js +61 -0
  126. package/dist/stat-card/index.cjs +1 -0
  127. package/dist/stat-card/index.d.cts +1 -0
  128. package/dist/stat-card/index.d.ts +1 -0
  129. package/dist/stat-card/index.js +1 -0
  130. package/dist/usage-card/UsageCard.cjs +42 -0
  131. package/dist/usage-card/UsageCard.d.cts +81 -0
  132. package/dist/usage-card/UsageCard.d.ts +81 -0
  133. package/dist/usage-card/UsageCard.js +42 -0
  134. package/dist/usage-card/index.cjs +1 -0
  135. package/dist/usage-card/index.d.cts +1 -0
  136. package/dist/usage-card/index.d.ts +1 -0
  137. package/dist/usage-card/index.js +1 -0
  138. package/dist/usage-card/usage.cjs +1 -0
  139. package/dist/usage-card/usage.d.cts +18 -0
  140. package/dist/usage-card/usage.d.ts +18 -0
  141. package/dist/usage-card/usage.js +1 -0
  142. package/dist/user-menu/UserMenu.cjs +30 -0
  143. package/dist/user-menu/UserMenu.d.cts +84 -0
  144. package/dist/user-menu/UserMenu.d.ts +84 -0
  145. package/dist/user-menu/UserMenu.js +30 -0
  146. package/dist/user-menu/index.cjs +1 -0
  147. package/dist/user-menu/index.d.cts +1 -0
  148. package/dist/user-menu/index.d.ts +1 -0
  149. package/dist/user-menu/index.js +1 -0
  150. package/dist/verification-page/VerificationPage.cjs +63 -0
  151. package/dist/verification-page/VerificationPage.d.cts +149 -0
  152. package/dist/verification-page/VerificationPage.d.ts +149 -0
  153. package/dist/verification-page/VerificationPage.js +63 -0
  154. package/dist/verification-page/index.cjs +1 -0
  155. package/dist/verification-page/index.d.cts +1 -0
  156. package/dist/verification-page/index.d.ts +1 -0
  157. package/dist/verification-page/index.js +1 -0
  158. package/dist/workspace-switcher/WorkspaceSwitcher.cjs +69 -0
  159. package/dist/workspace-switcher/WorkspaceSwitcher.d.cts +165 -0
  160. package/dist/workspace-switcher/WorkspaceSwitcher.d.ts +165 -0
  161. package/dist/workspace-switcher/WorkspaceSwitcher.js +69 -0
  162. package/dist/workspace-switcher/index.cjs +1 -0
  163. package/dist/workspace-switcher/index.d.cts +1 -0
  164. package/dist/workspace-switcher/index.d.ts +1 -0
  165. package/dist/workspace-switcher/index.js +1 -0
  166. package/package.json +272 -6
@@ -0,0 +1,42 @@
1
+ var p=Object.defineProperty;var h=Object.getOwnPropertyDescriptor;var s=(l,r,e,a)=>{for(var i=a>1?void 0:a?h(r,e):r,o=l.length-1,m;o>=0;o--)(m=l[o])&&(i=(a?m(r,e,i):m(i))||i);return a&&i&&p(r,e,i),i};import{html as d,LitElement as f,nothing as u}from"lit";import{property as n}from"lit/decorators.js";import{customElement as b}from"../internal/define.js";import{placeSlotted as v}from"../internal/slots.js";import{normalizeUsage as x,usageMeter as $}from"./usage.js";import"@skdx/web-components/progress";import"@skdx/web-components/text";var _="data-skdx-usage-card-generated",k=0;function g(l,r,e){e===void 0?l.removeAttribute(r):l.setAttribute(r,e)}var t=class extends f{constructor(){super(...arguments);this.unlimitedLabel="Unlimited";this.labelId=`skdx-usage-card-label-${++k}`}createRenderRoot(){return this}connectedCallback(){super.connectedCallback(),this.setAttribute("role","group"),this.setAttribute("aria-labelledby",this.labelId),queueMicrotask(()=>this.requestUpdate())}region(e){return this.querySelector(`.skdx-usage-card__${e}`)}hasSlotted(e){return this.querySelector(`[slot="${e}"]`)!==null}get format(){return this.formatValue??String}get reading(){if(this.limit===null)return{limitText:this.unlimitedLabel,overLimit:!1,range:null};if(this.limit===void 0)return{limitText:void 0,overLimit:!1,range:null};let e=$(this.used??0,this.limit);return{limitText:`/ ${this.format(e.limit)}`,overLimit:e.overLimit,range:e.range}}updated(){g(this,"data-state",this.reading.overLimit?"over-limit":void 0),g(this,"data-status",this.status),v(this,_,{actions:this.region("actions"),footer:this.region("footer")},null)}render(){let{limitText:e,range:a}=this.reading,i=this.format,o=this.unit?` ${this.unit}`:"";return d`
2
+ <div
3
+ class="skdx-usage-card__header"
4
+ data-skdx-usage-card-generated
5
+ >
6
+ <span
7
+ class="skdx-usage-card__label"
8
+ id=${this.labelId}
9
+ >${this.label??""}</span
10
+ >
11
+ ${this.hasSlotted("actions")?d`<div class="skdx-usage-card__actions"></div>`:u}
12
+ </div>
13
+ <div
14
+ class="skdx-usage-card__value"
15
+ data-skdx-usage-card-generated
16
+ >
17
+ <span class="skdx-usage-card__used">${i(x(this.used??0))}</span>
18
+ ${e===void 0?u:d`<span class="skdx-usage-card__limit">${e}</span>`}
19
+ ${this.unit?d`<span class="skdx-usage-card__unit">${this.unit}</span>`:u}
20
+ </div>
21
+ ${a?d`<skdx-progress
22
+ class="skdx-usage-card__progress"
23
+ role="meter"
24
+ min="0"
25
+ .max=${a.max}
26
+ .value=${a.value}
27
+ aria-labelledby=${this.labelId}
28
+ .getValueLabel=${(m,y,c)=>`${i(m)} / ${i(c)}${o}`}
29
+ data-skdx-usage-card-generated
30
+ ></skdx-progress>`:u}
31
+ ${this.description?d`<skdx-text
32
+ class="skdx-usage-card__description"
33
+ as="p"
34
+ .tone=${"muted"}
35
+ data-skdx-usage-card-generated
36
+ >${this.description}</skdx-text
37
+ >`:u}
38
+ ${this.hasSlotted("footer")?d`<div
39
+ class="skdx-usage-card__footer"
40
+ data-skdx-usage-card-generated
41
+ ></div>`:u}
42
+ `}};s([n({type:String})],t.prototype,"label",2),s([n({type:Number})],t.prototype,"used",2),s([n({type:Number})],t.prototype,"limit",2),s([n({type:String})],t.prototype,"unit",2),s([n({attribute:!1})],t.prototype,"formatValue",2),s([n({type:String,attribute:"unlimited-label"})],t.prototype,"unlimitedLabel",2),s([n({type:String})],t.prototype,"description",2),s([n({type:String})],t.prototype,"status",2),t=s([b("skdx-usage-card","usage-card","root")],t);export{t as SkdxUsageCard};
@@ -0,0 +1 @@
1
+ "use strict";var o=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var k=Object.getOwnPropertyNames;var m=Object.prototype.hasOwnProperty;var p=(a,r)=>{for(var e in r)o(a,e,{get:r[e],enumerable:!0})},s=(a,r,e,x)=>{if(r&&typeof r=="object"||typeof r=="function")for(let d of k(r))!m.call(a,d)&&d!==e&&o(a,d,{get:()=>r[d],enumerable:!(x=g(r,d))||x.enumerable});return a};var t=a=>s(o({},"__esModule",{value:!0}),a);var C={};p(C,{SkdxUsageCard:()=>f.SkdxUsageCard});module.exports=t(C);var f=require("./UsageCard.cjs");0&&(module.exports={SkdxUsageCard});
@@ -0,0 +1 @@
1
+ export { SkdxUsageCard } from './UsageCard.cjs';
@@ -0,0 +1 @@
1
+ export { SkdxUsageCard } from './UsageCard.js';
@@ -0,0 +1 @@
1
+ import{SkdxUsageCard as d}from"./UsageCard.js";export{d as SkdxUsageCard};
@@ -0,0 +1 @@
1
+ "use strict";var i=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var o=Object.getOwnPropertyNames;var s=Object.prototype.hasOwnProperty;var l=(e,r)=>{for(var n in r)i(e,n,{get:r[n],enumerable:!0})},g=(e,r,n,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let a of o(r))!s.call(e,a)&&a!==n&&i(e,a,{get:()=>r[a],enumerable:!(t=u(r,a))||t.enumerable});return e};var b=e=>g(i({},"__esModule",{value:!0}),e);var x={};l(x,{normalizeUsage:()=>m,usageMeter:()=>f});module.exports=b(x);function m(e){return Number.isNaN(e)?0:Math.max(e,0)}function f(e,r){let n=m(e),t=m(r);return t===0?{limit:t,overLimit:n>0,range:null}:{limit:t,overLimit:n>t,range:{max:t,value:Math.min(n,t)}}}0&&(module.exports={normalizeUsage,usageMeter});
@@ -0,0 +1,18 @@
1
+ /** @internal Clamps a raw amount into a safe non-negative number: `NaN` becomes `0`, a negative clamps to `0`. */
2
+ export declare function normalizeUsage(value: number): number;
3
+ /** @internal The `[0, max]` range a finite, positive limit renders as a meter. */
4
+ export interface UsageMeterRange {
5
+ max: number;
6
+ value: number;
7
+ }
8
+ /** @internal What a finite limit resolves to: its normalized value, whether usage exceeds it, and the meter range to render. */
9
+ export interface UsageMeterResult {
10
+ limit: number;
11
+ overLimit: boolean;
12
+ range: UsageMeterRange | null;
13
+ }
14
+ /**
15
+ * @internal Derives the meter range and over-limit flag for a finite limit.
16
+ * A zero limit renders no meter but counts as over-limit as soon as anything is used.
17
+ */
18
+ export declare function usageMeter(used: number, limit: number): UsageMeterResult;
@@ -0,0 +1,18 @@
1
+ /** @internal Clamps a raw amount into a safe non-negative number: `NaN` becomes `0`, a negative clamps to `0`. */
2
+ export declare function normalizeUsage(value: number): number;
3
+ /** @internal The `[0, max]` range a finite, positive limit renders as a meter. */
4
+ export interface UsageMeterRange {
5
+ max: number;
6
+ value: number;
7
+ }
8
+ /** @internal What a finite limit resolves to: its normalized value, whether usage exceeds it, and the meter range to render. */
9
+ export interface UsageMeterResult {
10
+ limit: number;
11
+ overLimit: boolean;
12
+ range: UsageMeterRange | null;
13
+ }
14
+ /**
15
+ * @internal Derives the meter range and over-limit flag for a finite limit.
16
+ * A zero limit renders no meter but counts as over-limit as soon as anything is used.
17
+ */
18
+ export declare function usageMeter(used: number, limit: number): UsageMeterResult;
@@ -0,0 +1 @@
1
+ function n(r){return Number.isNaN(r)?0:Math.max(r,0)}function i(r,a){let t=n(r),e=n(a);return e===0?{limit:e,overLimit:t>0,range:null}:{limit:e,overLimit:t>e,range:{max:e,value:Math.min(t,e)}}}export{n as normalizeUsage,i as usageMeter};
@@ -0,0 +1,30 @@
1
+ "use strict";var m=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var h=Object.getOwnPropertyNames;var v=Object.prototype.hasOwnProperty;var k=(t,e)=>{for(var a in e)m(t,a,{get:e[a],enumerable:!0})},f=(t,e,a,d)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of h(e))!v.call(t,r)&&r!==a&&m(t,r,{get:()=>e[r],enumerable:!(d=p(e,r))||d.enumerable});return t};var x=t=>f(m({},"__esModule",{value:!0}),t),i=(t,e,a,d)=>{for(var r=d>1?void 0:d?p(e,a):e,u=t.length-1,l;u>=0;u--)(l=t[u])&&(r=(d?l(e,a,r):l(r))||r);return d&&r&&m(e,a,r),r};var T={};k(T,{SkdxUserMenu:()=>s});module.exports=x(T);var n=require("lit"),o=require("lit/decorators.js"),c=require("../internal/define.cjs"),g=require("../internal/slots.cjs"),y=require("@skdx/web-components/avatar"),E=require("@skdx/web-components/primitives/menu");var _="data-skdx-user-menu-generated",b={fromAttribute:t=>t!=="false"},s=class extends n.LitElement{constructor(){super(...arguments);this.defaultOpen=!1;this.side="bottom";this.align="end"}createRenderRoot(){return this}connectedCallback(){super.connectedCallback(),queueMicrotask(()=>this.requestUpdate())}get hasTrigger(){return this.querySelector('[slot="trigger"]')!==null}updated(){this.variant&&!this.hasTrigger?this.setAttribute("data-variant",this.variant):this.removeAttribute("data-variant");let a=this.querySelector("skdx-menu-trigger");(0,g.placeSlotted)(this,_,{trigger:a,status:a},this.querySelector("skdx-menu-content"))}derivedTrigger(){return n.html`<skdx-avatar
2
+ class="skdx-user-menu__avatar"
3
+ src=${this.avatarSrc??n.nothing}
4
+ name=${this.name??n.nothing}
5
+ decorative
6
+ .size=${"sm"}
7
+ ></skdx-avatar>
8
+ <span class="skdx-user-menu__identity">
9
+ <span class="skdx-user-menu__name">${this.name??""}</span>
10
+ ${this.description?n.html`<span class="skdx-user-menu__description">${this.description}</span>`:n.nothing}
11
+ </span>`}render(){return n.html`
12
+ <skdx-menu-root
13
+ data-skdx-user-menu-generated
14
+ .open=${this.open}
15
+ ?default-open=${this.defaultOpen}
16
+ >
17
+ <skdx-menu-trigger>${this.hasTrigger?n.nothing:this.derivedTrigger()}</skdx-menu-trigger>
18
+ <skdx-menu-content
19
+ class="skdx-user-menu__content"
20
+ side=${this.side}
21
+ align=${this.align}
22
+ >
23
+ <skdx-menu-label class="skdx-user-menu__header">
24
+ <span class="skdx-user-menu__name">${this.name??""}</span>
25
+ ${this.description?n.html`<span class="skdx-user-menu__description">${this.description}</span>`:n.nothing}
26
+ </skdx-menu-label>
27
+ <skdx-menu-separator></skdx-menu-separator>
28
+ </skdx-menu-content>
29
+ </skdx-menu-root>
30
+ `}};i([(0,o.property)({type:String})],s.prototype,"name",2),i([(0,o.property)({type:String})],s.prototype,"description",2),i([(0,o.property)({type:String,attribute:"avatar-src"})],s.prototype,"avatarSrc",2),i([(0,o.property)({type:String})],s.prototype,"variant",2),i([(0,o.property)({converter:b})],s.prototype,"open",2),i([(0,o.property)({type:Boolean,attribute:"default-open"})],s.prototype,"defaultOpen",2),i([(0,o.property)({type:String})],s.prototype,"side",2),i([(0,o.property)({type:String})],s.prototype,"align",2),s=i([(0,c.customElement)("skdx-user-menu","user-menu","root")],s);0&&(module.exports={SkdxUserMenu});
@@ -0,0 +1,84 @@
1
+ import { LitElement, type TemplateResult } from 'lit';
2
+ import '@skdx/web-components/avatar';
3
+ import '@skdx/web-components/primitives/menu';
4
+ /**
5
+ * The signed-in user's menu: a derived trigger showing an avatar, name and
6
+ * description that opens a panel repeating the identity above the
7
+ * application's own entries.
8
+ *
9
+ * Renders light DOM, so its parts are classes rather than shadow `::part()`
10
+ * targets: `.skdx-user-menu` on the host, then `__avatar`, `__identity`,
11
+ * `__name`, `__description`, `__content` and `__header`. `data-variant` sits on
12
+ * the host while the derived trigger renders.
13
+ *
14
+ * @example
15
+ * ```html
16
+ * <skdx-user-menu name="Ada Lovelace" description="ada@example.com" avatar-src="/ada.png">
17
+ * <skdx-menu-item>Profile</skdx-menu-item>
18
+ * <skdx-menu-item>Sign out</skdx-menu-item>
19
+ * </skdx-user-menu>
20
+ * ```
21
+ *
22
+ * @slot - The application's own menu entries, rendered below the repeated identity header.
23
+ * @slot trigger - Content that replaces the derived avatar-and-identity trigger entirely.
24
+ * @slot status - An extra indicator rendered after the identity in the trigger.
25
+ * @fires open-change - Fires with the new open state whenever the trigger opens or closes the menu.
26
+ * @fires open-change-complete - Fires with the new open state once the panel's enter or exit animation has settled.
27
+ * @fires escape-key-down - Fires when Escape is pressed while the menu is open; `preventDefault()` keeps it open.
28
+ * @fires pointer-down-outside - Fires on a pointer-down outside the panel while open; `preventDefault()` keeps it open.
29
+ * @fires focus-outside - Fires when focus moves outside the panel while open; `preventDefault()` keeps it open.
30
+ * @fires interact-outside - Fires for either kind of outside interaction, just before the specific event.
31
+ * @fires close-auto-focus - Fires before focus returns to the trigger on close; `preventDefault()` suppresses that return.
32
+ */
33
+ export declare class SkdxUserMenu extends LitElement {
34
+ /** Light DOM, so `@skdx/skins` and consumer CSS reach the composed core elements. */
35
+ createRenderRoot(): HTMLElement | DocumentFragment;
36
+ /** The signed-in user's name, rendered in the trigger and repeated in the menu header. */
37
+ name: string;
38
+ /**
39
+ * Secondary text such as an email or role, rendered below the name in the trigger and the header.
40
+ * @default undefined — no description renders in either place.
41
+ */
42
+ description?: string | undefined;
43
+ /**
44
+ * Source of the identity image, passed straight through to the derived Avatar.
45
+ * @default undefined — the Avatar renders its initials fallback.
46
+ */
47
+ avatarSrc?: string | undefined;
48
+ /**
49
+ * Visual rung written to `data-variant`; `'compact'` visually hides the identity text while keeping it as the accessible name.
50
+ * @default undefined — the identity text stays visible.
51
+ */
52
+ variant?: 'compact' | (string & {}) | undefined;
53
+ /**
54
+ * Whether the menu is open, for controlled usage paired with `open-change`.
55
+ * @default undefined — uncontrolled, following `defaultOpen`.
56
+ */
57
+ open?: boolean | undefined;
58
+ /**
59
+ * Whether the menu starts open, for uncontrolled usage.
60
+ * @default false
61
+ */
62
+ defaultOpen: boolean;
63
+ /**
64
+ * Which side of the trigger the menu panel opens on.
65
+ * @default 'bottom'
66
+ */
67
+ side: 'top' | 'right' | 'bottom' | 'left';
68
+ /**
69
+ * Alignment of the menu panel relative to the side it opens on.
70
+ * @default 'end'
71
+ */
72
+ align: 'start' | 'center' | 'end';
73
+ connectedCallback(): void;
74
+ /** Whether the consumer supplied their own trigger — still true once it has been moved in. */
75
+ private get hasTrigger();
76
+ protected updated(): void;
77
+ private derivedTrigger;
78
+ render(): TemplateResult;
79
+ }
80
+ declare global {
81
+ interface HTMLElementTagNameMap {
82
+ 'skdx-user-menu': SkdxUserMenu;
83
+ }
84
+ }
@@ -0,0 +1,84 @@
1
+ import { LitElement, type TemplateResult } from 'lit';
2
+ import '@skdx/web-components/avatar';
3
+ import '@skdx/web-components/primitives/menu';
4
+ /**
5
+ * The signed-in user's menu: a derived trigger showing an avatar, name and
6
+ * description that opens a panel repeating the identity above the
7
+ * application's own entries.
8
+ *
9
+ * Renders light DOM, so its parts are classes rather than shadow `::part()`
10
+ * targets: `.skdx-user-menu` on the host, then `__avatar`, `__identity`,
11
+ * `__name`, `__description`, `__content` and `__header`. `data-variant` sits on
12
+ * the host while the derived trigger renders.
13
+ *
14
+ * @example
15
+ * ```html
16
+ * <skdx-user-menu name="Ada Lovelace" description="ada@example.com" avatar-src="/ada.png">
17
+ * <skdx-menu-item>Profile</skdx-menu-item>
18
+ * <skdx-menu-item>Sign out</skdx-menu-item>
19
+ * </skdx-user-menu>
20
+ * ```
21
+ *
22
+ * @slot - The application's own menu entries, rendered below the repeated identity header.
23
+ * @slot trigger - Content that replaces the derived avatar-and-identity trigger entirely.
24
+ * @slot status - An extra indicator rendered after the identity in the trigger.
25
+ * @fires open-change - Fires with the new open state whenever the trigger opens or closes the menu.
26
+ * @fires open-change-complete - Fires with the new open state once the panel's enter or exit animation has settled.
27
+ * @fires escape-key-down - Fires when Escape is pressed while the menu is open; `preventDefault()` keeps it open.
28
+ * @fires pointer-down-outside - Fires on a pointer-down outside the panel while open; `preventDefault()` keeps it open.
29
+ * @fires focus-outside - Fires when focus moves outside the panel while open; `preventDefault()` keeps it open.
30
+ * @fires interact-outside - Fires for either kind of outside interaction, just before the specific event.
31
+ * @fires close-auto-focus - Fires before focus returns to the trigger on close; `preventDefault()` suppresses that return.
32
+ */
33
+ export declare class SkdxUserMenu extends LitElement {
34
+ /** Light DOM, so `@skdx/skins` and consumer CSS reach the composed core elements. */
35
+ createRenderRoot(): HTMLElement | DocumentFragment;
36
+ /** The signed-in user's name, rendered in the trigger and repeated in the menu header. */
37
+ name: string;
38
+ /**
39
+ * Secondary text such as an email or role, rendered below the name in the trigger and the header.
40
+ * @default undefined — no description renders in either place.
41
+ */
42
+ description?: string | undefined;
43
+ /**
44
+ * Source of the identity image, passed straight through to the derived Avatar.
45
+ * @default undefined — the Avatar renders its initials fallback.
46
+ */
47
+ avatarSrc?: string | undefined;
48
+ /**
49
+ * Visual rung written to `data-variant`; `'compact'` visually hides the identity text while keeping it as the accessible name.
50
+ * @default undefined — the identity text stays visible.
51
+ */
52
+ variant?: 'compact' | (string & {}) | undefined;
53
+ /**
54
+ * Whether the menu is open, for controlled usage paired with `open-change`.
55
+ * @default undefined — uncontrolled, following `defaultOpen`.
56
+ */
57
+ open?: boolean | undefined;
58
+ /**
59
+ * Whether the menu starts open, for uncontrolled usage.
60
+ * @default false
61
+ */
62
+ defaultOpen: boolean;
63
+ /**
64
+ * Which side of the trigger the menu panel opens on.
65
+ * @default 'bottom'
66
+ */
67
+ side: 'top' | 'right' | 'bottom' | 'left';
68
+ /**
69
+ * Alignment of the menu panel relative to the side it opens on.
70
+ * @default 'end'
71
+ */
72
+ align: 'start' | 'center' | 'end';
73
+ connectedCallback(): void;
74
+ /** Whether the consumer supplied their own trigger — still true once it has been moved in. */
75
+ private get hasTrigger();
76
+ protected updated(): void;
77
+ private derivedTrigger;
78
+ render(): TemplateResult;
79
+ }
80
+ declare global {
81
+ interface HTMLElementTagNameMap {
82
+ 'skdx-user-menu': SkdxUserMenu;
83
+ }
84
+ }
@@ -0,0 +1,30 @@
1
+ var p=Object.defineProperty;var c=Object.getOwnPropertyDescriptor;var t=(a,i,n,d)=>{for(var s=d>1?void 0:d?c(i,n):i,u=a.length-1,l;u>=0;u--)(l=a[u])&&(s=(d?l(i,n,s):l(s))||s);return d&&s&&p(i,n,s),s};import{html as m,LitElement as g,nothing as o}from"lit";import{property as r}from"lit/decorators.js";import{customElement as h}from"../internal/define.js";import{placeSlotted as v}from"../internal/slots.js";import"@skdx/web-components/avatar";import"@skdx/web-components/primitives/menu";var k="data-skdx-user-menu-generated",f={fromAttribute:a=>a!=="false"},e=class extends g{constructor(){super(...arguments);this.defaultOpen=!1;this.side="bottom";this.align="end"}createRenderRoot(){return this}connectedCallback(){super.connectedCallback(),queueMicrotask(()=>this.requestUpdate())}get hasTrigger(){return this.querySelector('[slot="trigger"]')!==null}updated(){this.variant&&!this.hasTrigger?this.setAttribute("data-variant",this.variant):this.removeAttribute("data-variant");let n=this.querySelector("skdx-menu-trigger");v(this,k,{trigger:n,status:n},this.querySelector("skdx-menu-content"))}derivedTrigger(){return m`<skdx-avatar
2
+ class="skdx-user-menu__avatar"
3
+ src=${this.avatarSrc??o}
4
+ name=${this.name??o}
5
+ decorative
6
+ .size=${"sm"}
7
+ ></skdx-avatar>
8
+ <span class="skdx-user-menu__identity">
9
+ <span class="skdx-user-menu__name">${this.name??""}</span>
10
+ ${this.description?m`<span class="skdx-user-menu__description">${this.description}</span>`:o}
11
+ </span>`}render(){return m`
12
+ <skdx-menu-root
13
+ data-skdx-user-menu-generated
14
+ .open=${this.open}
15
+ ?default-open=${this.defaultOpen}
16
+ >
17
+ <skdx-menu-trigger>${this.hasTrigger?o:this.derivedTrigger()}</skdx-menu-trigger>
18
+ <skdx-menu-content
19
+ class="skdx-user-menu__content"
20
+ side=${this.side}
21
+ align=${this.align}
22
+ >
23
+ <skdx-menu-label class="skdx-user-menu__header">
24
+ <span class="skdx-user-menu__name">${this.name??""}</span>
25
+ ${this.description?m`<span class="skdx-user-menu__description">${this.description}</span>`:o}
26
+ </skdx-menu-label>
27
+ <skdx-menu-separator></skdx-menu-separator>
28
+ </skdx-menu-content>
29
+ </skdx-menu-root>
30
+ `}};t([r({type:String})],e.prototype,"name",2),t([r({type:String})],e.prototype,"description",2),t([r({type:String,attribute:"avatar-src"})],e.prototype,"avatarSrc",2),t([r({type:String})],e.prototype,"variant",2),t([r({converter:f})],e.prototype,"open",2),t([r({type:Boolean,attribute:"default-open"})],e.prototype,"defaultOpen",2),t([r({type:String})],e.prototype,"side",2),t([r({type:String})],e.prototype,"align",2),e=t([h("skdx-user-menu","user-menu","root")],e);export{e as SkdxUserMenu};
@@ -0,0 +1 @@
1
+ "use strict";var d=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var n=Object.getOwnPropertyNames;var p=Object.prototype.hasOwnProperty;var s=(r,e)=>{for(var x in e)d(r,x,{get:e[x],enumerable:!0})},t=(r,e,x,f)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of n(e))!p.call(r,o)&&o!==x&&d(r,o,{get:()=>e[o],enumerable:!(f=m(e,o))||f.enumerable});return r};var u=r=>t(d({},"__esModule",{value:!0}),r);var M={};s(M,{SkdxUserMenu:()=>k.SkdxUserMenu});module.exports=u(M);var k=require("./UserMenu.cjs");0&&(module.exports={SkdxUserMenu});
@@ -0,0 +1 @@
1
+ export { SkdxUserMenu } from './UserMenu.cjs';
@@ -0,0 +1 @@
1
+ export { SkdxUserMenu } from './UserMenu.js';
@@ -0,0 +1 @@
1
+ import{SkdxUserMenu as o}from"./UserMenu.js";export{o as SkdxUserMenu};
@@ -0,0 +1,63 @@
1
+ "use strict";var l=Object.defineProperty;var h=Object.getOwnPropertyDescriptor;var b=Object.getOwnPropertyNames;var E=Object.prototype.hasOwnProperty;var f=(d,s)=>{for(var e in s)l(d,e,{get:s[e],enumerable:!0})},L=(d,s,e,r)=>{if(s&&typeof s=="object"||typeof s=="function")for(let t of b(s))!E.call(d,t)&&t!==e&&l(d,t,{get:()=>s[t],enumerable:!(r=h(s,t))||r.enumerable});return d};var k=d=>L(l({},"__esModule",{value:!0}),d),a=(d,s,e,r)=>{for(var t=r>1?void 0:r?h(s,e):s,u=d.length-1,c;u>=0;u--)(c=d[u])&&(t=(r?c(s,e,t):c(t))||t);return r&&t&&l(s,e,t),t};var _={};f(_,{SkdxVerificationPage:()=>i});module.exports=k(_);var n=require("lit"),o=require("lit/decorators.js"),m=require("../internal/define.cjs"),p=require("../internal/events.cjs"),v=require("../internal/slots.cjs"),T=require("@skdx/web-components/alert"),H=require("@skdx/web-components/button"),C=require("@skdx/web-components/field"),O=require("@skdx/web-components/form"),V=require("@skdx/web-components/heading"),D=require("@skdx/web-components/pin-input"),S=require("@skdx/web-components/text");var g="data-skdx-verification-page-generated",x="data-skdx-verification-page-content",y=["resend"],$=0,i=class extends n.LitElement{constructor(){super(...arguments);this.title="Enter your verification code";this.pending=!1;this.codeLabel="Verification code";this.length=6;this.defaultValue="";this.submitLabel="Verify";this.resendLabel="Resend code";this.resendDisabled=!1;this.titleId=`skdx-verification-page-title-${++$}`;this.gated=new Map;this.handleValueChange=e=>{e.stopPropagation(),this.setValue(e.detail,"keyboard")};this.handleSubmit=e=>{e.target?.closest("skdx-form")&&(e.preventDefault(),(0,p.emit)(this,"verify",{code:this.currentValue}))};this.resend=()=>{(0,p.emit)(this,"resend")}}createRenderRoot(){return this}addEventListener(e,r,t){super.addEventListener(e,r,t),this.countListener(e,1)}removeEventListener(e,r,t){super.removeEventListener(e,r,t),this.countListener(e,-1)}countListener(e,r){y.includes(e)&&(this.gated.set(e,Math.max(0,(this.gated.get(e)??0)+r)),this.requestUpdate())}handles(e){return(this.gated.get(e)??0)>0}get currentValue(){return this.value??this.uncontrolledValue??this.defaultValue}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-verification-page__${e}`)}get contentRegion(){return this.querySelector(`[${x}]`)}get hasContent(){return(0,v.hasUnslottedChild)(this,g)||(this.contentRegion?.hasChildNodes()??!1)}updated(){let e=this.querySelector(".skdx-verification-page__code");e&&(e.value=this.currentValue),(0,v.placeSlotted)(this,g,{footer:this.region("footer")},this.contentRegion)}setValue(e,r){let t=this.currentValue;this.uncontrolledValue=e,this.requestUpdate(),(0,p.emit)(this,"value-change",{value:e,previousValue:t,reason:r})}render(){return n.html`
2
+ <div
3
+ class="skdx-verification-page__panel"
4
+ data-skdx-verification-page-generated
5
+ >
6
+ <skdx-heading
7
+ class="skdx-verification-page__title"
8
+ as="h1"
9
+ id=${this.titleId}
10
+ >${this.title}</skdx-heading
11
+ >
12
+ ${this.error?n.html`<skdx-alert
13
+ class="skdx-verification-page__error"
14
+ .status=${"danger"}
15
+ >${this.error}</skdx-alert
16
+ >`:n.nothing}
17
+ ${this.description?n.html`<skdx-text
18
+ class="skdx-verification-page__description"
19
+ as="p"
20
+ .tone=${"muted"}
21
+ >${this.description}</skdx-text
22
+ >`:n.nothing}
23
+ <skdx-form class="skdx-verification-page__form">
24
+ <form>
25
+ <skdx-field
26
+ class="skdx-verification-page__field"
27
+ label=${this.codeLabel}
28
+ >
29
+ <skdx-pin-input
30
+ class="skdx-verification-page__code"
31
+ aria-label=${this.codeLabel}
32
+ name="code"
33
+ required
34
+ length=${this.length}
35
+ .value=${this.currentValue}
36
+ @value-change=${this.handleValueChange}
37
+ ></skdx-pin-input>
38
+ </skdx-field>
39
+ ${this.hasContent?n.html`<div data-skdx-verification-page-content></div>`:n.nothing}
40
+ <skdx-button
41
+ class="skdx-verification-page__submit"
42
+ type="submit"
43
+ ?loading=${this.pending}
44
+ ?disabled=${this.pending}
45
+ >${this.submitLabel}</skdx-button
46
+ >
47
+ </form>
48
+ </skdx-form>
49
+ ${this.handles("resend")?n.html`<div class="skdx-verification-page__resend">
50
+ <skdx-button
51
+ type="button"
52
+ .variant=${"ghost"}
53
+ ?disabled=${this.resendDisabled}
54
+ @click=${this.resend}
55
+ >${this.resendLabel}</skdx-button
56
+ >
57
+ ${this.resendHint?n.html`<span class="skdx-verification-page__resend-hint"
58
+ >${this.resendHint}</span
59
+ >`:n.nothing}
60
+ </div>`:n.nothing}
61
+ ${this.hasSlotted("footer")?n.html`<div class="skdx-verification-page__footer"></div>`:n.nothing}
62
+ </div>
63
+ `}};a([(0,o.property)({type:String})],i.prototype,"title",2),a([(0,o.property)({type:String})],i.prototype,"description",2),a([(0,o.property)({type:String})],i.prototype,"error",2),a([(0,o.property)({type:Boolean})],i.prototype,"pending",2),a([(0,o.property)({type:String,attribute:"code-label"})],i.prototype,"codeLabel",2),a([(0,o.property)({type:Number})],i.prototype,"length",2),a([(0,o.property)({type:String})],i.prototype,"value",2),a([(0,o.property)({type:String,attribute:"default-value"})],i.prototype,"defaultValue",2),a([(0,o.property)({type:String,attribute:"submit-label"})],i.prototype,"submitLabel",2),a([(0,o.property)({type:String,attribute:"resend-label"})],i.prototype,"resendLabel",2),a([(0,o.property)({type:Boolean,attribute:"resend-disabled"})],i.prototype,"resendDisabled",2),a([(0,o.property)({type:String,attribute:"resend-hint"})],i.prototype,"resendHint",2),i=a([(0,m.customElement)("skdx-verification-page","verification-page","root")],i);0&&(module.exports={SkdxVerificationPage});
@@ -0,0 +1,149 @@
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/pin-input';
8
+ import '@skdx/web-components/text';
9
+ /** What a `verify` event carries: the complete code the form held. */
10
+ export interface SkdxVerificationDetail {
11
+ /** The full code, exactly `length` characters long. */
12
+ code: string;
13
+ }
14
+ /** What a `value-change` event carries: the new code, the one it replaced, and what drove the edit. */
15
+ export interface SkdxVerificationValueChangeDetail {
16
+ /** The code as it stands after the edit. */
17
+ value: string;
18
+ /** The code held immediately before, or `null` when nothing was. */
19
+ previousValue: string | null;
20
+ /** What drove the change: a key press, a pointer, or the application. */
21
+ reason: 'keyboard' | 'pointer' | 'programmatic';
22
+ }
23
+ /**
24
+ * Verification block: a pin input for a one-time code, a submit button and a
25
+ * resend control whose cooldown the consumer owns.
26
+ *
27
+ * Renders light DOM, so its parts are classes rather than shadow `::part()`
28
+ * targets: `.skdx-verification-page` on the host, then `__panel`, `__title`,
29
+ * `__description`, `__error`, `__form`, `__field`, `__code`, `__submit`,
30
+ * `__resend`, `__resend-hint` and `__footer`.
31
+ *
32
+ * @example
33
+ * ```html
34
+ * <skdx-verification-page
35
+ * id="verify"
36
+ * description="We sent a code to ada@example.com."
37
+ * ></skdx-verification-page>
38
+ * <script>
39
+ * const page = document.getElementById('verify');
40
+ * page.addEventListener('verify', (event) => console.log(event.detail.code));
41
+ * page.addEventListener('resend', () => send());
42
+ * </script>
43
+ * ```
44
+ *
45
+ * @slot - Extra fields rendered inside the form, above the submit button.
46
+ * @slot footer - Navigation below the resend region, such as a link back to the sign-in page.
47
+ * @fires verify - Fires with `{ code }` when the form submits with a code of exactly the declared length.
48
+ * @fires resend - Fires when the resend button is activated; listening for it is what renders the resend region.
49
+ * @fires value-change - Fires with `{ value, previousValue, reason }` whenever any code box changes.
50
+ */
51
+ export declare class SkdxVerificationPage extends LitElement {
52
+ /** Light DOM, so `@skdx/skins` and consumer CSS reach the composed core elements. */
53
+ createRenderRoot(): HTMLElement | DocumentFragment;
54
+ /**
55
+ * Heading text, rendered into a derived `<h1>` that names the section.
56
+ * @default 'Enter your verification code'
57
+ */
58
+ title: string;
59
+ /**
60
+ * Supporting copy rendered below the title, naming where the code was sent.
61
+ * @default undefined — no description region renders.
62
+ */
63
+ description?: string;
64
+ /**
65
+ * Message rendered into a derived error Alert above the form. The block never clears it.
66
+ * @default undefined — no error region renders.
67
+ */
68
+ error?: string;
69
+ /**
70
+ * Marks the request in flight, making the submit button busy while the code boxes stay editable.
71
+ * @default false
72
+ */
73
+ pending: boolean;
74
+ /**
75
+ * Field label and accessible name of the derived pin input holding the code.
76
+ * @default 'Verification code'
77
+ */
78
+ codeLabel: string;
79
+ /**
80
+ * How many character boxes the code is entered into, and how long a complete code is.
81
+ * @default 6
82
+ */
83
+ length: number;
84
+ /**
85
+ * Current code, for controlled usage paired with `value-change`.
86
+ * @default undefined — uncontrolled, seeded from `defaultValue`.
87
+ */
88
+ value?: string;
89
+ /**
90
+ * Initial code for uncontrolled usage, seeding the boxes on first render.
91
+ * @default '' — the boxes start empty.
92
+ */
93
+ defaultValue: string;
94
+ /**
95
+ * Text of the form's submit button.
96
+ * @default 'Verify'
97
+ */
98
+ submitLabel: string;
99
+ /**
100
+ * Text of the resend button, which renders only alongside a resend listener.
101
+ * @default 'Resend code'
102
+ */
103
+ resendLabel: string;
104
+ /**
105
+ * Makes the resend button unusable, for a consumer running its own cooldown.
106
+ * @default false
107
+ */
108
+ resendDisabled: boolean;
109
+ /**
110
+ * Note rendered beside the resend button, such as how long the cooldown has left.
111
+ * @default undefined — no hint renders; the block runs no timer of its own.
112
+ */
113
+ resendHint?: string;
114
+ /** Generated title id, published as the section's `aria-labelledby`. */
115
+ private readonly titleId;
116
+ /** What the boxes last held; outranked by `value` whenever the consumer controls the code. */
117
+ private uncontrolledValue?;
118
+ /** How many listeners each gated event holds, so the anatomy it drives renders only while one is bound. */
119
+ private readonly gated;
120
+ /** @internal Standard DOM registration, counted so a listener-gated region knows it has one. */
121
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, event: HTMLElementEventMap[K]) => unknown, options?: boolean | AddEventListenerOptions): void;
122
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
123
+ /** @internal Standard DOM removal, counted so a listener-gated region knows it lost one. */
124
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, event: HTMLElementEventMap[K]) => unknown, options?: boolean | EventListenerOptions): void;
125
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
126
+ private countListener;
127
+ /** Whether the consumer is listening for `type` on this element, which is what renders its control. */
128
+ private handles;
129
+ /** The code right now, controlled or not. */
130
+ private get currentValue();
131
+ connectedCallback(): void;
132
+ disconnectedCallback(): void;
133
+ /** Whether the consumer supplied content for `name` — still true once it has been moved in. */
134
+ private hasSlotted;
135
+ private region;
136
+ private get contentRegion();
137
+ private get hasContent();
138
+ protected updated(): void;
139
+ private setValue;
140
+ private readonly handleValueChange;
141
+ private readonly handleSubmit;
142
+ private readonly resend;
143
+ render(): TemplateResult;
144
+ }
145
+ declare global {
146
+ interface HTMLElementTagNameMap {
147
+ 'skdx-verification-page': SkdxVerificationPage;
148
+ }
149
+ }