@transcodes/ui-components 0.3.5 → 0.3.6

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 (85) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/dist/controllers/index.d.ts +0 -2
  3. package/dist/controllers/index.d.ts.map +1 -1
  4. package/dist/controllers/index.js +10 -12
  5. package/dist/index.d.ts +0 -1
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +48 -64
  8. package/dist/primitives/index.d.ts +1 -0
  9. package/dist/primitives/index.d.ts.map +1 -1
  10. package/dist/primitives/index.js +18 -16
  11. package/dist/primitives/tc-box.js +4 -4
  12. package/dist/primitives/tc-button.d.ts.map +1 -1
  13. package/dist/primitives/tc-button.js +21 -20
  14. package/dist/primitives/tc-callout.d.ts.map +1 -1
  15. package/dist/primitives/tc-callout.js +5 -4
  16. package/dist/primitives/tc-card.d.ts.map +1 -1
  17. package/dist/primitives/tc-card.js +11 -10
  18. package/dist/primitives/tc-chip.d.ts.map +1 -1
  19. package/dist/primitives/tc-chip.js +18 -16
  20. package/dist/primitives/tc-container.d.ts.map +1 -1
  21. package/dist/primitives/tc-container.js +12 -10
  22. package/dist/primitives/tc-divider.d.ts.map +1 -1
  23. package/dist/primitives/tc-divider.js +4 -3
  24. package/dist/primitives/tc-error-message.d.ts.map +1 -1
  25. package/dist/primitives/tc-error-message.js +13 -9
  26. package/dist/primitives/tc-form-header.d.ts.map +1 -1
  27. package/dist/primitives/tc-form-header.js +9 -7
  28. package/dist/primitives/tc-icon.js +3 -3
  29. package/dist/primitives/tc-input-with-chip.d.ts.map +1 -1
  30. package/dist/primitives/tc-input-with-chip.js +12 -8
  31. package/dist/primitives/tc-input.d.ts.map +1 -1
  32. package/dist/primitives/tc-input.js +11 -9
  33. package/dist/primitives/tc-item-button.d.ts.map +1 -1
  34. package/dist/primitives/tc-item-button.js +18 -17
  35. package/dist/primitives/tc-item.d.ts.map +1 -1
  36. package/dist/primitives/tc-item.js +13 -12
  37. package/dist/primitives/tc-otp-input.d.ts.map +1 -1
  38. package/dist/primitives/tc-otp-input.js +6 -4
  39. package/dist/primitives/tc-page-decoration.d.ts.map +1 -0
  40. package/dist/{widgets → primitives}/tc-page-decoration.js +8 -8
  41. package/dist/primitives/tc-section.d.ts.map +1 -1
  42. package/dist/primitives/tc-section.js +15 -13
  43. package/dist/primitives/tc-spinner.js +17 -17
  44. package/dist/primitives/tc-symbol.d.ts.map +1 -1
  45. package/dist/primitives/tc-symbol.js +15 -13
  46. package/dist/primitives/tc-text.js +3 -3
  47. package/dist/primitives/tc-toast.js +3 -3
  48. package/dist/screens/tc-error-screen.d.ts +6 -1
  49. package/dist/screens/tc-error-screen.d.ts.map +1 -1
  50. package/dist/screens/tc-error-screen.js +84 -29
  51. package/dist/screens/tc-loading-screen.d.ts +1 -1
  52. package/dist/screens/tc-loading-screen.d.ts.map +1 -1
  53. package/dist/screens/tc-loading-screen.js +16 -11
  54. package/dist/screens/tc-success-screen.d.ts.map +1 -1
  55. package/dist/screens/tc-success-screen.js +19 -13
  56. package/package.json +13 -13
  57. package/dist/controllers/form-validation.controller.d.ts +0 -48
  58. package/dist/controllers/form-validation.controller.d.ts.map +0 -1
  59. package/dist/controllers/form-validation.controller.js +0 -49
  60. package/dist/widgets/index.d.ts +0 -9
  61. package/dist/widgets/index.d.ts.map +0 -1
  62. package/dist/widgets/index.js +0 -18
  63. package/dist/widgets/tc-authenticator-card.d.ts +0 -35
  64. package/dist/widgets/tc-authenticator-card.d.ts.map +0 -1
  65. package/dist/widgets/tc-authenticator-card.js +0 -213
  66. package/dist/widgets/tc-floating-button.d.ts +0 -25
  67. package/dist/widgets/tc-floating-button.d.ts.map +0 -1
  68. package/dist/widgets/tc-floating-button.js +0 -132
  69. package/dist/widgets/tc-iframe-modal.d.ts +0 -43
  70. package/dist/widgets/tc-iframe-modal.d.ts.map +0 -1
  71. package/dist/widgets/tc-iframe-modal.js +0 -263
  72. package/dist/widgets/tc-installation-banner.d.ts +0 -42
  73. package/dist/widgets/tc-installation-banner.d.ts.map +0 -1
  74. package/dist/widgets/tc-installation-banner.js +0 -234
  75. package/dist/widgets/tc-ios-installation-guide.d.ts +0 -34
  76. package/dist/widgets/tc-ios-installation-guide.d.ts.map +0 -1
  77. package/dist/widgets/tc-ios-installation-guide.js +0 -240
  78. package/dist/widgets/tc-notification-modal.d.ts +0 -42
  79. package/dist/widgets/tc-notification-modal.d.ts.map +0 -1
  80. package/dist/widgets/tc-notification-modal.js +0 -230
  81. package/dist/widgets/tc-offline-modal.d.ts +0 -39
  82. package/dist/widgets/tc-offline-modal.d.ts.map +0 -1
  83. package/dist/widgets/tc-offline-modal.js +0 -202
  84. package/dist/widgets/tc-page-decoration.d.ts.map +0 -1
  85. /package/dist/{widgets → primitives}/tc-page-decoration.d.ts +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@transcodes/ui-components",
3
- "version": "0.3.5",
3
+ "version": "0.3.6",
4
4
  "private": false,
5
5
  "description": "Lit 3.x component library with Reactive Controllers",
6
6
  "keywords": [
@@ -32,7 +32,9 @@
32
32
  "module": "./dist/index.js",
33
33
  "types": "./dist/index.d.ts",
34
34
  "sideEffects": [
35
- "dist/**/*.js"
35
+ "dist/**/*.js",
36
+ "src/**/*.ts",
37
+ "src/**/*.js"
36
38
  ],
37
39
  "exports": {
38
40
  ".": {
@@ -43,10 +45,6 @@
43
45
  "types": "./dist/primitives/index.d.ts",
44
46
  "import": "./dist/primitives/index.js"
45
47
  },
46
- "./widgets": {
47
- "types": "./dist/widgets/index.d.ts",
48
- "import": "./dist/widgets/index.js"
49
- },
50
48
  "./screens": {
51
49
  "types": "./dist/screens/index.d.ts",
52
50
  "import": "./dist/screens/index.js"
@@ -64,7 +62,9 @@
64
62
  ],
65
63
  "scripts": {
66
64
  "build": "tsc && vite build",
65
+ "prebuild-storybook": "cd ../design-tokens && bun run build && cd ../ui-components && cp -r ../design-tokens/build .storybook/design-tokens",
67
66
  "build-storybook": "storybook build",
67
+ "predev": "cd ../design-tokens && bun run build && cd ../ui-components && cp -r ../design-tokens/build .storybook/design-tokens",
68
68
  "clean": "rm -rf dist",
69
69
  "dev": "storybook dev -p 6006",
70
70
  "preview": "vite preview",
@@ -74,16 +74,16 @@
74
74
  "lit": "^3.0.0"
75
75
  },
76
76
  "dependencies": {
77
- "@transcodes/design-tokens": "^0.3.5"
77
+ "@transcodes/design-tokens": "^0.3.6"
78
78
  },
79
79
  "devDependencies": {
80
- "@storybook/addon-a11y": "^10.1.5",
81
- "@storybook/addon-docs": "^10.1.5",
82
- "@storybook/addon-links": "^10.1.5",
83
- "@storybook/web-components": "^10.1.5",
84
- "@storybook/web-components-vite": "^10.1.5",
80
+ "@storybook/addon-a11y": "^10.1.9",
81
+ "@storybook/addon-docs": "^10.1.9",
82
+ "@storybook/addon-links": "^10.1.9",
83
+ "@storybook/web-components": "^10.1.9",
84
+ "@storybook/web-components-vite": "^10.1.9",
85
85
  "lit": "^3.3.1",
86
- "storybook": "^10.1.5",
86
+ "storybook": "^10.1.9",
87
87
  "typescript": "^5.9.3",
88
88
  "vite": "^7.2.7",
89
89
  "vite-plugin-dts": "^4.5.4"
@@ -1,48 +0,0 @@
1
- import { BaseController } from './base.controller.js';
2
- export type ValidationType = 'required' | 'email' | 'minLength' | 'maxLength' | 'pattern' | 'custom';
3
- export interface ValidationRule {
4
- type: ValidationType;
5
- value?: string | number | RegExp;
6
- message: string;
7
- validator?: (value: string) => boolean;
8
- }
9
- /**
10
- * Controller for form field validation.
11
- * Manages validation rules and error states.
12
- *
13
- * @example
14
- * ```ts
15
- * class MyForm extends LitElement {
16
- * private validation = new FormValidationController(this);
17
- *
18
- * private emailRules: ValidationRule[] = [
19
- * { type: 'required', message: 'Email is required' },
20
- * { type: 'email', message: 'Please enter a valid email' },
21
- * ];
22
- *
23
- * handleBlur(e: Event) {
24
- * const input = e.target as HTMLInputElement;
25
- * this.validation.validate('email', input.value, this.emailRules);
26
- * }
27
- *
28
- * render() {
29
- * const error = this.validation.getError('email');
30
- * return html`
31
- * <input @blur=${this.handleBlur} />
32
- * ${error ? html`<span class="error">${error}</span>` : ''}
33
- * `;
34
- * }
35
- * }
36
- * ```
37
- */
38
- export declare class FormValidationController extends BaseController {
39
- private errors;
40
- get isValid(): boolean;
41
- getError(field: string): string | undefined;
42
- getAllErrors(): Map<string, string>;
43
- validate(field: string, value: string, rules: ValidationRule[]): boolean;
44
- clearError(field: string): void;
45
- reset(): void;
46
- private runRule;
47
- }
48
- //# sourceMappingURL=form-validation.controller.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"form-validation.controller.d.ts","sourceRoot":"","sources":["../../src/controllers/form-validation.controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,MAAM,MAAM,cAAc,GACtB,UAAU,GACV,OAAO,GACP,WAAW,GACX,WAAW,GACX,SAAS,GACT,QAAQ,CAAC;AAEb,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,cAAc,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;CACxC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,qBAAa,wBAAyB,SAAQ,cAAc;IAC1D,OAAO,CAAC,MAAM,CAA6B;IAE3C,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAI3C,YAAY,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAInC,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,OAAO;IAcxE,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAO/B,KAAK,IAAI,IAAI;IAKb,OAAO,CAAC,OAAO;CAwBhB"}
@@ -1,49 +0,0 @@
1
- import { BaseController as o } from "./base.controller.js";
2
- class i extends o {
3
- constructor() {
4
- super(...arguments), this.errors = /* @__PURE__ */ new Map();
5
- }
6
- get isValid() {
7
- return this.errors.size === 0;
8
- }
9
- getError(r) {
10
- return this.errors.get(r);
11
- }
12
- getAllErrors() {
13
- return new Map(this.errors);
14
- }
15
- validate(r, e, s) {
16
- this.clearError(r);
17
- for (const t of s)
18
- if (!this.runRule(e, t))
19
- return this.errors.set(r, t.message), this.host.requestUpdate(), !1;
20
- return !0;
21
- }
22
- clearError(r) {
23
- this.errors.has(r) && (this.errors.delete(r), this.host.requestUpdate());
24
- }
25
- reset() {
26
- this.errors.clear(), this.host.requestUpdate();
27
- }
28
- runRule(r, e) {
29
- switch (e.type) {
30
- case "required":
31
- return r.trim().length > 0;
32
- case "email":
33
- return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(r);
34
- case "minLength":
35
- return r.length >= e.value;
36
- case "maxLength":
37
- return r.length <= e.value;
38
- case "pattern":
39
- return e.value.test(r);
40
- case "custom":
41
- return e.validator ? e.validator(r) : !0;
42
- default:
43
- return !0;
44
- }
45
- }
46
- }
47
- export {
48
- i as FormValidationController
49
- };
@@ -1,9 +0,0 @@
1
- export { TcAuthenticatorCard } from './tc-authenticator-card.js';
2
- export { TcFloatingButton } from './tc-floating-button.js';
3
- export { TcIframeModal } from './tc-iframe-modal.js';
4
- export { TcInstallationBanner } from './tc-installation-banner.js';
5
- export { TcIosInstallationGuide } from './tc-ios-installation-guide.js';
6
- export { TcNotificationModal } from './tc-notification-modal.js';
7
- export { TcOfflineModal } from './tc-offline-modal.js';
8
- export { TcPageDecoration } from './tc-page-decoration.js';
9
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/widgets/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC"}
@@ -1,18 +0,0 @@
1
- import { TcAuthenticatorCard as t } from "./tc-authenticator-card.js";
2
- import { TcFloatingButton as e } from "./tc-floating-button.js";
3
- import { TcIframeModal as n } from "./tc-iframe-modal.js";
4
- import { TcInstallationBanner as i } from "./tc-installation-banner.js";
5
- import { TcIosInstallationGuide as m } from "./tc-ios-installation-guide.js";
6
- import { TcNotificationModal as x } from "./tc-notification-modal.js";
7
- import { TcOfflineModal as d } from "./tc-offline-modal.js";
8
- import { TcPageDecoration as s } from "./tc-page-decoration.js";
9
- export {
10
- t as TcAuthenticatorCard,
11
- e as TcFloatingButton,
12
- n as TcIframeModal,
13
- i as TcInstallationBanner,
14
- m as TcIosInstallationGuide,
15
- x as TcNotificationModal,
16
- d as TcOfflineModal,
17
- s as TcPageDecoration
18
- };
@@ -1,35 +0,0 @@
1
- import { LitElement } from 'lit';
2
- /**
3
- * A card component for displaying authenticator information.
4
- * Commonly used for passkeys, TOTP, USB security keys, etc.
5
- *
6
- * @fires tc-delete - Fired when the delete button is clicked
7
- * @fires tc-toggle - Fired when the enable/disable toggle is clicked
8
- * @fires tc-click - Fired when the card is clicked
9
- * @csspart card - The card container
10
- * @csspart icon - The authenticator type icon container
11
- * @csspart content - The main content area
12
- * @csspart name - The authenticator name
13
- * @csspart meta - The metadata area (last used, etc.)
14
- * @csspart actions - The actions area
15
- * @csspart delete - The delete button
16
- */
17
- export declare class TcAuthenticatorCard extends LitElement {
18
- name: string;
19
- type: 'passkey' | 'totp' | 'usb' | 'phone' | 'email';
20
- lastUsed: string;
21
- enabled: boolean;
22
- deletable: boolean;
23
- clickable: boolean;
24
- static styles: import('lit').CSSResult;
25
- private getIconName;
26
- private handleCardClick;
27
- private handleDelete;
28
- render(): import('lit').TemplateResult<1>;
29
- }
30
- declare global {
31
- interface HTMLElementTagNameMap {
32
- 'tc-authenticator-card': TcAuthenticatorCard;
33
- }
34
- }
35
- //# sourceMappingURL=tc-authenticator-card.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tc-authenticator-card.d.ts","sourceRoot":"","sources":["../../src/widgets/tc-authenticator-card.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,UAAU,EAAE,MAAM,KAAK,CAAC;AAG5C,OAAO,0BAA0B,CAAC;AAClC,OAAO,0BAA0B,CAAC;AAClC,OAAO,0BAA0B,CAAC;AAGlC;;;;;;;;;;;;;;GAcG;AACH,qBACa,mBAAoB,SAAQ,UAAU;IACrB,IAAI,SAAM;IACV,IAAI,EAC5B,SAAS,GACT,MAAM,GACN,KAAK,GACL,OAAO,GACP,OAAO,CAAa;IAC4B,QAAQ,SAAM;IACrC,OAAO,UAAQ;IACf,SAAS,UAAQ;IACjB,SAAS,UAAS;IAE/C,OAAgB,MAAM,0BAmGpB;IAEF,OAAO,CAAC,WAAW;IAiBnB,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,YAAY;IAWX,MAAM;CAwDhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,uBAAuB,EAAE,mBAAmB,CAAC;KAC9C;CACF"}
@@ -1,213 +0,0 @@
1
- import { LitElement as p, html as l, css as h } from "lit";
2
- import { property as s, customElement as m } from "lit/decorators.js";
3
- import { classMap as u } from "lit/directives/class-map.js";
4
- var b = Object.defineProperty, v = Object.getOwnPropertyDescriptor, a = (r, i, c, n) => {
5
- for (var t = n > 1 ? void 0 : n ? v(i, c) : i, o = r.length - 1, d; o >= 0; o--)
6
- (d = r[o]) && (t = (n ? d(i, c, t) : d(t)) || t);
7
- return n && t && b(i, c, t), t;
8
- };
9
- let e = class extends p {
10
- constructor() {
11
- super(...arguments), this.name = "", this.type = "passkey", this.lastUsed = "", this.enabled = !0, this.deletable = !0, this.clickable = !1;
12
- }
13
- getIconName() {
14
- switch (this.type) {
15
- case "passkey":
16
- return "key";
17
- case "totp":
18
- return "totp";
19
- case "usb":
20
- return "device";
21
- case "phone":
22
- return "phone";
23
- case "email":
24
- return "email";
25
- default:
26
- return "key";
27
- }
28
- }
29
- handleCardClick() {
30
- this.clickable && this.enabled && this.dispatchEvent(
31
- new CustomEvent("tc-click", {
32
- bubbles: !0,
33
- composed: !0
34
- })
35
- );
36
- }
37
- handleDelete(r) {
38
- r.stopPropagation(), this.dispatchEvent(
39
- new CustomEvent("tc-delete", {
40
- bubbles: !0,
41
- composed: !0,
42
- detail: { name: this.name, type: this.type }
43
- })
44
- );
45
- }
46
- render() {
47
- const r = {
48
- card: !0,
49
- clickable: this.clickable && this.enabled,
50
- disabled: !this.enabled
51
- };
52
- return l`
53
- <div
54
- part="card"
55
- class=${u(r)}
56
- @click=${this.handleCardClick}
57
- role=${this.clickable ? "button" : "article"}
58
- tabindex=${this.clickable && this.enabled ? "0" : "-1"}
59
- >
60
- <div part="icon" class="icon-container">
61
- <tc-icon name=${this.getIconName()} size="1.25rem" color="var(--ink-dark)"></tc-icon>
62
- </div>
63
- <div part="content" class="content">
64
- <div part="name" class="name">${this.name}</div>
65
- ${this.lastUsed ? l`
66
- <div part="meta" class="meta">
67
- <span class="last-used">${this.lastUsed}</span>
68
- </div>
69
- ` : ""}
70
- </div>
71
- <div part="actions" class="actions">
72
- ${this.enabled ? "" : l`
73
- <tc-chip class="status-chip" variant="default" size="sm">Disabled</tc-chip>
74
- `}
75
- ${this.deletable ? l`
76
- <button
77
- part="delete"
78
- class="delete-btn"
79
- @click=${this.handleDelete}
80
- aria-label="Delete ${this.name}"
81
- >
82
- <tc-icon name="x" size="1rem"></tc-icon>
83
- </button>
84
- ` : ""}
85
- </div>
86
- </div>
87
- `;
88
- }
89
- };
90
- e.styles = h`
91
- :host {
92
- display: block;
93
- width: 100%;
94
- }
95
-
96
- .card {
97
- display: flex;
98
- align-items: center;
99
- gap: var(--space-md);
100
- padding: var(--space-md);
101
- background: var(--paper-cream);
102
- border-radius: var(--radius-md);
103
- transition: var(--transition-fast);
104
- }
105
-
106
- .card.clickable {
107
- cursor: pointer;
108
- }
109
-
110
- .card.clickable:hover {
111
- background: var(--paper-warm);
112
- }
113
-
114
- .card.disabled {
115
- opacity: var(--opacity-disabled);
116
- }
117
-
118
- .icon-container {
119
- display: flex;
120
- align-items: center;
121
- justify-content: center;
122
- width: 2.5rem;
123
- height: 2.5rem;
124
- background: var(--paper-white);
125
- border-radius: var(--radius-md);
126
- flex-shrink: 0;
127
- }
128
-
129
- .content {
130
- flex: 1;
131
- min-width: 0;
132
- }
133
-
134
- .name {
135
- font-weight: 500;
136
- color: var(--ink-black);
137
- white-space: nowrap;
138
- overflow: hidden;
139
- text-overflow: ellipsis;
140
- }
141
-
142
- .meta {
143
- display: flex;
144
- align-items: center;
145
- gap: var(--space-sm);
146
- margin-top: var(--space-xs);
147
- }
148
-
149
- .last-used {
150
- font-size: var(--font-size-sm);
151
- color: var(--ink-light);
152
- }
153
-
154
- .actions {
155
- display: flex;
156
- align-items: center;
157
- gap: var(--space-sm);
158
- flex-shrink: 0;
159
- }
160
-
161
- .delete-btn {
162
- display: flex;
163
- align-items: center;
164
- justify-content: center;
165
- width: 2rem;
166
- height: 2rem;
167
- padding: 0;
168
- background: transparent;
169
- border: none;
170
- border-radius: var(--radius-sm);
171
- color: var(--ink-light);
172
- cursor: pointer;
173
- transition: var(--transition-fast);
174
- }
175
-
176
- .delete-btn:hover {
177
- background: var(--alpha-ink04);
178
- color: var(--error-base);
179
- }
180
-
181
- .delete-btn:focus-visible {
182
- outline: 2px solid var(--accent-primary);
183
- outline-offset: 2px;
184
- }
185
-
186
- .status-chip {
187
- flex-shrink: 0;
188
- }
189
- `;
190
- a([
191
- s({ type: String })
192
- ], e.prototype, "name", 2);
193
- a([
194
- s({ type: String })
195
- ], e.prototype, "type", 2);
196
- a([
197
- s({ type: String, attribute: "last-used" })
198
- ], e.prototype, "lastUsed", 2);
199
- a([
200
- s({ type: Boolean })
201
- ], e.prototype, "enabled", 2);
202
- a([
203
- s({ type: Boolean })
204
- ], e.prototype, "deletable", 2);
205
- a([
206
- s({ type: Boolean })
207
- ], e.prototype, "clickable", 2);
208
- e = a([
209
- m("tc-authenticator-card")
210
- ], e);
211
- export {
212
- e as TcAuthenticatorCard
213
- };
@@ -1,25 +0,0 @@
1
- import { LitElement } from 'lit';
2
- /**
3
- * A floating action button positioned fixed on the screen.
4
- *
5
- * @slot - Button content (icon recommended)
6
- * @fires tc-click - Fired when the button is clicked
7
- * @csspart button - The button element
8
- */
9
- export declare class TcFloatingButton extends LitElement {
10
- position: 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left';
11
- size: string;
12
- disabled: boolean;
13
- sx: Record<string, string | number>;
14
- static styles: import('lit').CSSResult[];
15
- connectedCallback(): void;
16
- updated(changedProperties: Map<string, unknown>): void;
17
- private handleClick;
18
- render(): import('lit').TemplateResult<1>;
19
- }
20
- declare global {
21
- interface HTMLElementTagNameMap {
22
- 'tc-floating-button': TcFloatingButton;
23
- }
24
- }
25
- //# sourceMappingURL=tc-floating-button.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tc-floating-button.d.ts","sourceRoot":"","sources":["../../src/widgets/tc-floating-button.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,UAAU,EAAE,MAAM,KAAK,CAAC;AAK5C;;;;;;GAMG;AACH,qBACa,gBAAiB,SAAQ,UAAU;IAClB,QAAQ,EAChC,cAAc,GACd,aAAa,GACb,WAAW,GACX,UAAU,CAAkB;IACJ,IAAI,SAAY;IACf,QAAQ,UAAS;IAClB,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAM;IAErE,OAAgB,MAAM,4BAmEpB;IAEO,iBAAiB;IAKjB,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAMxD,OAAO,CAAC,WAAW;IAWV,MAAM;CAmBhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,oBAAoB,EAAE,gBAAgB,CAAC;KACxC;CACF"}
@@ -1,132 +0,0 @@
1
- import { LitElement as c, html as b, css as d } from "lit";
2
- import { property as a, customElement as h } from "lit/decorators.js";
3
- import { styleMap as u } from "lit/directives/style-map.js";
4
- import { sharedStyles as m } from "../styles/shared.js";
5
- var v = Object.defineProperty, f = Object.getOwnPropertyDescriptor, s = (e, i, n, r) => {
6
- for (var t = r > 1 ? void 0 : r ? f(i, n) : i, p = e.length - 1, l; p >= 0; p--)
7
- (l = e[p]) && (t = (r ? l(i, n, t) : l(t)) || t);
8
- return r && t && v(i, n, t), t;
9
- };
10
- let o = class extends c {
11
- constructor() {
12
- super(...arguments), this.position = "bottom-right", this.size = "3.5rem", this.disabled = !1, this.sx = {};
13
- }
14
- connectedCallback() {
15
- super.connectedCallback(), this.setAttribute("position", this.position);
16
- }
17
- updated(e) {
18
- e.has("position") && this.setAttribute("position", this.position);
19
- }
20
- handleClick() {
21
- this.disabled || this.dispatchEvent(
22
- new CustomEvent("tc-click", {
23
- bubbles: !0,
24
- composed: !0
25
- })
26
- );
27
- }
28
- render() {
29
- const e = {
30
- "--fab-size": this.size,
31
- ...this.sx
32
- };
33
- return b`
34
- <button
35
- part="button"
36
- class="button"
37
- ?disabled=${this.disabled}
38
- style=${u(e)}
39
- @click=${this.handleClick}
40
- aria-label="Floating action"
41
- >
42
- <slot></slot>
43
- </button>
44
- `;
45
- }
46
- };
47
- o.styles = [
48
- m,
49
- d`
50
- :host {
51
- display: block;
52
- position: fixed;
53
- z-index: 100;
54
- }
55
-
56
- :host([position='bottom-right']) {
57
- bottom: var(--space-lg);
58
- right: var(--space-lg);
59
- }
60
-
61
- :host([position='bottom-left']) {
62
- bottom: var(--space-lg);
63
- left: var(--space-lg);
64
- }
65
-
66
- :host([position='top-right']) {
67
- top: var(--space-lg);
68
- right: var(--space-lg);
69
- }
70
-
71
- :host([position='top-left']) {
72
- top: var(--space-lg);
73
- left: var(--space-lg);
74
- }
75
-
76
- .button {
77
- display: flex;
78
- align-items: center;
79
- justify-content: center;
80
- width: var(--fab-size);
81
- height: var(--fab-size);
82
- padding: 0;
83
- border: none;
84
- border-radius: var(--radius-full);
85
- background: var(--accent-primary);
86
- color: white;
87
- cursor: pointer;
88
- box-shadow: 0 4px 12px var(--alpha-primary40);
89
- transition: var(--transition-smooth);
90
- }
91
-
92
- .button:hover:not(:disabled) {
93
- background: var(--accent-primary-hover);
94
- transform: scale(1.05);
95
- box-shadow: 0 6px 16px var(--alpha-primary50);
96
- }
97
-
98
- .button:active:not(:disabled) {
99
- background: var(--accent-primary-pressed);
100
- transform: scale(0.98);
101
- }
102
-
103
- .button:focus-visible {
104
- outline: 2px solid var(--accent-primary);
105
- outline-offset: 3px;
106
- }
107
-
108
- .button:disabled {
109
- opacity: var(--opacity-disabled);
110
- cursor: not-allowed;
111
- box-shadow: none;
112
- }
113
- `
114
- ];
115
- s([
116
- a({ type: String })
117
- ], o.prototype, "position", 2);
118
- s([
119
- a({ type: String })
120
- ], o.prototype, "size", 2);
121
- s([
122
- a({ type: Boolean })
123
- ], o.prototype, "disabled", 2);
124
- s([
125
- a({ type: Object })
126
- ], o.prototype, "sx", 2);
127
- o = s([
128
- h("tc-floating-button")
129
- ], o);
130
- export {
131
- o as TcFloatingButton
132
- };
@@ -1,43 +0,0 @@
1
- import { LitElement } from 'lit';
2
- /**
3
- * A modal that displays an iframe with loading states and message communication.
4
- *
5
- * @fires tc-close - Fired when the modal is closed
6
- * @fires tc-message - Fired when a message is received from the iframe
7
- * @fires tc-load - Fired when the iframe content is loaded
8
- * @csspart overlay - The backdrop overlay
9
- * @csspart modal - The modal container
10
- * @csspart header - The modal header
11
- * @csspart close - The close button
12
- * @csspart content - The content area
13
- * @csspart iframe - The iframe element
14
- * @csspart loader - The loading overlay
15
- */
16
- export declare class TcIframeModal extends LitElement {
17
- src: string;
18
- title: string;
19
- closeOnEscape: boolean;
20
- closeOnOverlay: boolean;
21
- useHistory: boolean;
22
- private isLoading;
23
- private animation;
24
- private history;
25
- private messageBus;
26
- static styles: import('lit').CSSResult[];
27
- connectedCallback(): void;
28
- disconnectedCallback(): void;
29
- private handleKeyDown;
30
- private updateDataState;
31
- open(): Promise<void>;
32
- close(): Promise<void>;
33
- private handleOverlayClick;
34
- private handleIframeLoad;
35
- sendMessage(type: string, payload?: unknown): void;
36
- render(): import('lit').TemplateResult<1>;
37
- }
38
- declare global {
39
- interface HTMLElementTagNameMap {
40
- 'tc-iframe-modal': TcIframeModal;
41
- }
42
- }
43
- //# sourceMappingURL=tc-iframe-modal.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tc-iframe-modal.d.ts","sourceRoot":"","sources":["../../src/widgets/tc-iframe-modal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,UAAU,EAAE,MAAM,KAAK,CAAC;AAM5C,OAAO,6BAA6B,CAAC;AAErC;;;;;;;;;;;;;GAaG;AACH,qBACa,aAAc,SAAQ,UAAU;IACf,GAAG,SAAM;IACT,KAAK,SAAM;IACoB,aAAa,UACjE;IACqD,cAAc,UACnE;IACgD,UAAU,UAAQ;IAEhE,OAAO,CAAC,SAAS,CAAQ;IAElC,OAAO,CAAC,SAAS,CAGd;IAEH,OAAO,CAAC,OAAO,CAA+B;IAC9C,OAAO,CAAC,UAAU,CAAkC;IAEpD,OAAgB,MAAM,4BAiIpB;IAEO,iBAAiB;IA6BjB,oBAAoB;IAK7B,OAAO,CAAC,aAAa,CAInB;IAEF,OAAO,CAAC,eAAe;IAIjB,IAAI;IASJ,KAAK;IAeX,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,gBAAgB;IAWxB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO;IAOlC,MAAM;CA+ChB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,iBAAiB,EAAE,aAAa,CAAC;KAClC;CACF"}