@affinda/wc 0.0.1

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 (97) hide show
  1. package/dist/affinda/af-badge.af-button.af-card.af-icon-button.af-input.entry.esm.js.map +1 -0
  2. package/dist/affinda/affinda.css +1 -0
  3. package/dist/affinda/affinda.esm.js +2 -0
  4. package/dist/affinda/affinda.esm.js.map +1 -0
  5. package/dist/affinda/index.esm.js +2 -0
  6. package/dist/affinda/index.esm.js.map +1 -0
  7. package/dist/affinda/loader.esm.js.map +1 -0
  8. package/dist/affinda/p-bca10492.entry.js +2 -0
  9. package/dist/affinda/p-bca10492.entry.js.map +1 -0
  10. package/dist/affinda/p-o0tfWqnY.js +3 -0
  11. package/dist/affinda/p-o0tfWqnY.js.map +1 -0
  12. package/dist/cjs/af-badge.af-button.af-card.af-icon-button.af-input.entry.cjs.js.map +1 -0
  13. package/dist/cjs/af-badge_5.cjs.entry.js +13 -0
  14. package/dist/cjs/affinda.cjs.js +25 -0
  15. package/dist/cjs/affinda.cjs.js.map +1 -0
  16. package/dist/cjs/index-5BGpYleS.js +1413 -0
  17. package/dist/cjs/index-5BGpYleS.js.map +1 -0
  18. package/dist/cjs/index.cjs.js +139 -0
  19. package/dist/cjs/index.cjs.js.map +1 -0
  20. package/dist/cjs/loader.cjs.js +13 -0
  21. package/dist/cjs/loader.cjs.js.map +1 -0
  22. package/dist/collection/collection-manifest.json +16 -0
  23. package/dist/collection/components/af-badge/af-badge.css +29 -0
  24. package/dist/collection/components/af-badge/af-badge.js +47 -0
  25. package/dist/collection/components/af-badge/af-badge.js.map +1 -0
  26. package/dist/collection/components/af-button/af-button.css +74 -0
  27. package/dist/collection/components/af-button/af-button.js +149 -0
  28. package/dist/collection/components/af-button/af-button.js.map +1 -0
  29. package/dist/collection/components/af-card/af-card.css +69 -0
  30. package/dist/collection/components/af-card/af-card.js +70 -0
  31. package/dist/collection/components/af-card/af-card.js.map +1 -0
  32. package/dist/collection/components/af-icon-button/af-icon-button.css +70 -0
  33. package/dist/collection/components/af-icon-button/af-icon-button.js +145 -0
  34. package/dist/collection/components/af-icon-button/af-icon-button.js.map +1 -0
  35. package/dist/collection/components/af-input/af-input.css +57 -0
  36. package/dist/collection/components/af-input/af-input.js +193 -0
  37. package/dist/collection/components/af-input/af-input.js.map +1 -0
  38. package/dist/collection/components.js +6 -0
  39. package/dist/collection/components.js.map +1 -0
  40. package/dist/collection/index.js +2 -0
  41. package/dist/collection/index.js.map +1 -0
  42. package/dist/components/af-badge.d.ts +11 -0
  43. package/dist/components/af-badge.js +9 -0
  44. package/dist/components/af-badge.js.map +1 -0
  45. package/dist/components/af-button.d.ts +11 -0
  46. package/dist/components/af-button.js +9 -0
  47. package/dist/components/af-button.js.map +1 -0
  48. package/dist/components/af-card.d.ts +11 -0
  49. package/dist/components/af-card.js +9 -0
  50. package/dist/components/af-card.js.map +1 -0
  51. package/dist/components/af-icon-button.d.ts +11 -0
  52. package/dist/components/af-icon-button.js +9 -0
  53. package/dist/components/af-icon-button.js.map +1 -0
  54. package/dist/components/af-input.d.ts +11 -0
  55. package/dist/components/af-input.js +9 -0
  56. package/dist/components/af-input.js.map +1 -0
  57. package/dist/components/index.d.ts +33 -0
  58. package/dist/components/index.js +9 -0
  59. package/dist/components/index.js.map +1 -0
  60. package/dist/components/p-B7I93sz2.js +39 -0
  61. package/dist/components/p-B7I93sz2.js.map +1 -0
  62. package/dist/components/p-CZd1ieht.js +62 -0
  63. package/dist/components/p-CZd1ieht.js.map +1 -0
  64. package/dist/components/p-D6PwARU0.js +59 -0
  65. package/dist/components/p-D6PwARU0.js.map +1 -0
  66. package/dist/components/p-DOtgsZRB.js +1209 -0
  67. package/dist/components/p-DOtgsZRB.js.map +1 -0
  68. package/dist/components/p-DZIXhvI0.js +44 -0
  69. package/dist/components/p-DZIXhvI0.js.map +1 -0
  70. package/dist/components/p-zIKPa48S.js +62 -0
  71. package/dist/components/p-zIKPa48S.js.map +1 -0
  72. package/dist/esm/af-badge.af-button.af-card.af-icon-button.af-input.entry.js.map +1 -0
  73. package/dist/esm/af-badge_5.entry.js +3 -0
  74. package/dist/esm/affinda.js +21 -0
  75. package/dist/esm/affinda.js.map +1 -0
  76. package/dist/esm/index-o0tfWqnY.js +1405 -0
  77. package/dist/esm/index-o0tfWqnY.js.map +1 -0
  78. package/dist/esm/index.js +133 -0
  79. package/dist/esm/index.js.map +1 -0
  80. package/dist/esm/loader.js +11 -0
  81. package/dist/esm/loader.js.map +1 -0
  82. package/dist/index.cjs.js +1 -0
  83. package/dist/index.js +1 -0
  84. package/dist/types/components/af-badge/af-badge.d.ts +5 -0
  85. package/dist/types/components/af-button/af-button.d.ts +15 -0
  86. package/dist/types/components/af-card/af-card.d.ts +7 -0
  87. package/dist/types/components/af-icon-button/af-icon-button.d.ts +15 -0
  88. package/dist/types/components/af-input/af-input.d.ts +24 -0
  89. package/dist/types/components.d.ts +311 -0
  90. package/dist/types/index.d.ts +1 -0
  91. package/dist/types/stencil-public-runtime.d.ts +1756 -0
  92. package/loader/cdn.js +1 -0
  93. package/loader/index.cjs.js +1 -0
  94. package/loader/index.d.ts +24 -0
  95. package/loader/index.es2017.js +1 -0
  96. package/loader/index.js +2 -0
  97. package/package.json +27 -0
@@ -0,0 +1,133 @@
1
+ import { r as registerInstance, c as createEvent, h } from './index-o0tfWqnY.js';
2
+
3
+ const afButtonCss = ":host{display:inline-block}button{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:var(--af-space-2);font:var(--af-font-weight-semibold) var(--af-size-font-md) / 1 var(--af-font-family-sans);border-radius:var(--af-radius-md);padding:var(--af-space-2) var(--af-space-4);border:none;cursor:pointer;transition:transform 120ms ease, box-shadow 160ms ease;box-shadow:0 8px 20px rgba(124, 58, 237, 0.18)}button:is(:hover,:focus-visible){transform:translateY(-1px);box-shadow:0 12px 24px rgba(124, 58, 237, 0.24)}button:active{transform:translateY(0);box-shadow:0 6px 16px rgba(124, 58, 237, 0.16)}button:disabled{cursor:not-allowed;opacity:0.6;transform:none;box-shadow:none}button.variant-primary{background:linear-gradient(135deg, var(--af-color-brand-primary-500), var(--af-color-brand-primary-600));color:var(--af-color-fg-inverse)}button.variant-secondary{background:var(--af-color-bg-subtle);color:var(--af-color-fg-default);box-shadow:inset 0 0 0 1px rgba(18, 15, 31, 0.08)}button.variant-ghost{background:transparent;color:var(--af-color-brand-primary-500);box-shadow:inset 0 0 0 1px rgba(124, 58, 237, 0.3)}button.size-lg{padding:calc(var(--af-space-3)) calc(var(--af-space-4) + 4px);font-size:var(--af-size-font-lg)}button .spinner{position:absolute;inset:0;border-radius:inherit;background:radial-gradient(circle at center, rgba(255, 255, 255, 0.18), transparent 55%);opacity:0;transition:opacity 120ms ease}button.is-loading .spinner{opacity:1}button.is-loading .content{opacity:0.6}";
4
+
5
+ const AfButton = class {
6
+ constructor(hostRef) {
7
+ registerInstance(this, hostRef);
8
+ this.afClick = createEvent(this, "afClick");
9
+ /** Visual style of the button */
10
+ this.variant = 'primary';
11
+ /** Size of the button */
12
+ this.size = 'md';
13
+ /** Disabled state */
14
+ this.disabled = false;
15
+ /** Loading state */
16
+ this.loading = false;
17
+ this.handleClick = (event) => {
18
+ if (this.disabled || this.loading) {
19
+ event.preventDefault();
20
+ event.stopPropagation();
21
+ return;
22
+ }
23
+ this.afClick.emit(event);
24
+ };
25
+ }
26
+ render() {
27
+ const classes = {
28
+ [`variant-${this.variant}`]: true,
29
+ [`size-${this.size}`]: true,
30
+ 'is-loading': this.loading
31
+ };
32
+ return (h("button", { key: '11e06f0158591b7aaf60633fa12e91a2904d2f57', class: classes, part: "base", disabled: this.disabled || this.loading, onClick: this.handleClick }, h("span", { key: 'bdea09a13233b2e9c682e3c0a3d02fc8fe791668', class: "spinner", part: "spinner", "aria-hidden": !this.loading }), h("span", { key: '24a80ba696aecacda181203379345b28e741583c', class: "content", part: "label" }, h("slot", { key: 'bdd3731c9c98091503e1c87a7fe940bb72579d27' }))));
33
+ }
34
+ };
35
+ AfButton.style = afButtonCss;
36
+
37
+ const afBadgeCss = ":host{display:inline-block}span{display:inline-flex;align-items:center;justify-content:center;padding:2px var(--af-space-2);border-radius:var(--af-radius-pill);font:var(--af-font-weight-semibold) var(--af-size-font-sm) / 1 var(--af-font-family-sans);letter-spacing:0.02em;text-transform:uppercase}span.tone-brand{background:rgba(124, 58, 237, 0.12);color:var(--af-color-brand-primary-500)}span.tone-neutral{background:rgba(18, 15, 31, 0.1);color:var(--af-color-fg-default)}span.tone-success{background:rgba(16, 185, 129, 0.12);color:#0f766e}";
38
+
39
+ const AfBadge = class {
40
+ constructor(hostRef) {
41
+ registerInstance(this, hostRef);
42
+ /** Color theme of the badge */
43
+ this.tone = 'brand';
44
+ }
45
+ render() {
46
+ return (h("span", { key: '1f9d4015b429e012eade75e331c991d5c785482d', class: `tone-${this.tone}`, part: "base" }, h("slot", { key: 'b69b37a3e996c43cb16d04d829232d9539f45e06' })));
47
+ }
48
+ };
49
+ AfBadge.style = afBadgeCss;
50
+
51
+ const afIconButtonCss = ":host{display:inline-flex}button{--button-size-sm:36px;--button-size-md:44px;width:var(--button-size-md);height:var(--button-size-md);border-radius:50%;border:none;display:inline-flex;align-items:center;justify-content:center;background:transparent;color:var(--af-color-brand-primary-500);cursor:pointer;transition:transform 120ms ease, box-shadow 160ms ease, background-color 160ms ease;box-shadow:none}button.size-sm{width:var(--button-size-sm);height:var(--button-size-sm)}button:disabled{cursor:not-allowed;opacity:0.5;box-shadow:none}button.variant-solid{background:linear-gradient(135deg, var(--af-color-brand-primary-500), var(--af-color-brand-primary-600));color:var(--af-color-fg-inverse);box-shadow:0 10px 24px rgba(124, 58, 237, 0.24)}button.variant-soft{background:rgba(124, 58, 237, 0.14);color:var(--af-color-brand-primary-500)}button.variant-ghost{border:1px solid rgba(124, 58, 237, 0.4);background:transparent}button:is(:hover,:focus-visible){transform:translateY(-1px);box-shadow:0 14px 30px rgba(124, 58, 237, 0.28)}button:active{transform:translateY(0);box-shadow:0 8px 18px rgba(124, 58, 237, 0.2)}.icon{display:inline-flex;align-items:center;justify-content:center;width:1.5em;height:1.5em}:host([disabled]) button{transform:none;box-shadow:none}";
52
+
53
+ const AfIconButton = class {
54
+ constructor(hostRef) {
55
+ registerInstance(this, hostRef);
56
+ this.afClick = createEvent(this, "afClick");
57
+ /** Visual style of the icon button */
58
+ this.variant = 'solid';
59
+ /** Size preset */
60
+ this.size = 'md';
61
+ /** Disabled state */
62
+ this.disabled = false;
63
+ this.onClick = (event) => {
64
+ if (this.disabled) {
65
+ event.preventDefault();
66
+ event.stopPropagation();
67
+ return;
68
+ }
69
+ this.afClick.emit(event);
70
+ };
71
+ }
72
+ render() {
73
+ const classes = {
74
+ [`variant-${this.variant}`]: true,
75
+ [`size-${this.size}`]: true
76
+ };
77
+ return (h("button", { key: '0f63eddac5f4dab95835506b896e437218aa50e1', type: "button", class: classes, part: "base", disabled: this.disabled, "aria-label": this.label, onClick: this.onClick }, h("span", { key: '6400064df3b666cbcc0a4a51523f1cd08dcbe81a', part: "icon", class: "icon" }, h("slot", { key: 'a74fff21c0a3af05da37b12e45db8ca8913bbdea' }))));
78
+ }
79
+ };
80
+ AfIconButton.style = afIconButtonCss;
81
+
82
+ const afCardCss = ":host{display:block}article{position:relative;border-radius:var(--af-radius-md);background:var(--af-color-bg-surface);color:var(--af-color-fg-default);padding:calc(var(--af-space-4) * 1.5);box-shadow:none;border:1px solid rgba(18, 15, 31, 0.06);transition:box-shadow 160ms ease, transform 160ms ease;display:block;overflow:hidden}article.variant-elevated{box-shadow:0 18px 36px rgba(47, 22, 94, 0.18);border:none}article:hover{transform:translateY(-2px);box-shadow:0 24px 44px rgba(47, 22, 94, 0.24)}.accent{position:absolute;inset:0;width:6px;left:0;right:auto;background:linear-gradient(180deg, var(--af-color-brand-primary-500), var(--af-color-brand-primary-600))}article.accent-brand .accent{background:linear-gradient(180deg, var(--af-color-brand-primary-500), var(--af-color-brand-primary-600))}article.accent-success .accent{background:linear-gradient(180deg, #22c55e, #16a34a)}article.accent-neutral .accent{background:rgba(18, 15, 31, 0.18)}.content{margin-left:12px;display:grid;gap:var(--af-space-3)}.header:empty,.footer:empty{display:none}.header ::slotted(*){font-size:1.125rem;font-weight:var(--af-font-weight-semibold)}.footer ::slotted(*){display:inline-flex;gap:var(--af-space-2);align-items:center}";
83
+
84
+ const AfCard = class {
85
+ constructor(hostRef) {
86
+ registerInstance(this, hostRef);
87
+ /** Visual style of the card */
88
+ this.variant = 'surface';
89
+ }
90
+ render() {
91
+ const classes = {
92
+ [`variant-${this.variant}`]: true,
93
+ [`accent-${this.accent}`]: Boolean(this.accent)
94
+ };
95
+ return (h("article", { key: '6341b7150eb902027923228343dd017fee6aef32', class: classes, part: "base" }, this.accent ? h("span", { class: "accent", part: "accent", "aria-hidden": "true" }) : null, h("div", { key: '06256637c0e9e3a150b59fbc6f73d5b2867729ad', class: "content", part: "content" }, h("header", { key: '8f8c893d528cece13d1e9de7115b490a5ed84c88', class: "header", part: "header" }, h("slot", { key: 'b404fcc38918bb952678d78c035e9e7ad6e797ef', name: "header" })), h("div", { key: '2028736e547446fe12469cf74aec97daf6e3f10a', class: "body", part: "body" }, h("slot", { key: 'a2110bc4cfa174e4514d572d7a9cd28652c7da9a' })), h("footer", { key: '221a8202625e2794846ff7d68af45f9046fcfe58', class: "footer", part: "footer" }, h("slot", { key: 'b20d0e41962dbe766116845e2ef20c68003be7a7', name: "footer" })))));
96
+ }
97
+ };
98
+ AfCard.style = afCardCss;
99
+
100
+ const afInputCss = ":host{display:block;font-family:var(--af-font-family-sans)}label{display:grid;gap:var(--af-space-2);color:var(--af-color-fg-default)}.label{font-size:0.95rem;font-weight:var(--af-font-weight-semibold)}.control{position:relative}input{width:100%;padding:calc(var(--af-space-2) + 2px) calc(var(--af-space-4) + 8px);border-radius:var(--af-radius-md);border:1px solid rgba(18, 15, 31, 0.18);background:rgba(255, 255, 255, 0.9);color:inherit;font:inherit;transition:border-color 160ms ease, box-shadow 160ms ease;box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.6)}input::placeholder{color:var(--af-color-fg-muted);opacity:0.8}input:focus-visible{outline:none;border-color:var(--af-color-brand-primary-500);box-shadow:0 0 0 4px rgba(124, 58, 237, 0.18)}label.disabled{opacity:0.55;cursor:not-allowed}input:disabled{background:rgba(241, 240, 247, 0.7);cursor:not-allowed}.description{font-size:0.825rem;color:var(--af-color-fg-muted)}";
101
+
102
+ let inputIds = 0;
103
+ const AfInput = class {
104
+ constructor(hostRef) {
105
+ registerInstance(this, hostRef);
106
+ this.afInput = createEvent(this, "afInput");
107
+ this.afChange = createEvent(this, "afChange");
108
+ this.inputId = `af-input-${++inputIds}`;
109
+ this.descriptionId = `${this.inputId}-desc`;
110
+ /** Input type attribute */
111
+ this.type = 'text';
112
+ /** Current value (mutable so the component stays in sync) */
113
+ this.value = '';
114
+ /** Disabled state */
115
+ this.disabled = false;
116
+ this.handleInput = (event) => {
117
+ const target = event.target;
118
+ this.value = target.value;
119
+ this.afInput.emit(this.value);
120
+ };
121
+ this.handleChange = () => {
122
+ this.afChange.emit(this.value);
123
+ };
124
+ }
125
+ render() {
126
+ const describedBy = this.description ? this.descriptionId : undefined;
127
+ return (h("label", { key: 'd14267dee125c07311c07bc31f0151448095dba6', part: "label", class: { disabled: this.disabled }, htmlFor: this.inputId }, this.label ? (h("span", { class: "label", part: "label-text" }, this.label)) : null, h("div", { key: 'd3b6428100e25c981650f5faa23df549d587ac10', class: "control" }, h("input", { key: '9e26981c32775b79ce9c3458a4890968fab04ef6', part: "field", id: this.inputId, type: this.type, placeholder: this.placeholder, value: this.value, disabled: this.disabled, "aria-describedby": describedBy, onInput: this.handleInput, onChange: this.handleChange })), this.description ? (h("p", { id: this.descriptionId, class: "description", part: "description" }, this.description)) : null));
128
+ }
129
+ };
130
+ AfInput.style = afInputCss;
131
+
132
+ export { AfBadge, AfButton, AfCard, AfIconButton, AfInput };
133
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["src/components/af-button/af-button.css?tag=af-button&encapsulation=shadow","src/components/af-button/af-button.tsx","src/components/af-badge/af-badge.css?tag=af-badge&encapsulation=shadow","src/components/af-badge/af-badge.tsx","src/components/af-icon-button/af-icon-button.css?tag=af-icon-button&encapsulation=shadow","src/components/af-icon-button/af-icon-button.tsx","src/components/af-card/af-card.css?tag=af-card&encapsulation=shadow","src/components/af-card/af-card.tsx","src/components/af-input/af-input.css?tag=af-input&encapsulation=shadow","src/components/af-input/af-input.tsx"],"sourcesContent":[":host {\n display: inline-block;\n}\n\nbutton {\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--af-space-2);\n font: var(--af-font-weight-semibold) var(--af-size-font-md) / 1 var(--af-font-family-sans);\n border-radius: var(--af-radius-md);\n padding: var(--af-space-2) var(--af-space-4);\n border: none;\n cursor: pointer;\n transition: transform 120ms ease, box-shadow 160ms ease;\n box-shadow: 0 8px 20px rgba(124, 58, 237, 0.18);\n}\n\nbutton:is(:hover, :focus-visible) {\n transform: translateY(-1px);\n box-shadow: 0 12px 24px rgba(124, 58, 237, 0.24);\n}\n\nbutton:active {\n transform: translateY(0);\n box-shadow: 0 6px 16px rgba(124, 58, 237, 0.16);\n}\n\nbutton:disabled {\n cursor: not-allowed;\n opacity: 0.6;\n transform: none;\n box-shadow: none;\n}\n\nbutton.variant-primary {\n background: linear-gradient(135deg, var(--af-color-brand-primary-500), var(--af-color-brand-primary-600));\n color: var(--af-color-fg-inverse);\n}\n\nbutton.variant-secondary {\n background: var(--af-color-bg-subtle);\n color: var(--af-color-fg-default);\n box-shadow: inset 0 0 0 1px rgba(18, 15, 31, 0.08);\n}\n\nbutton.variant-ghost {\n background: transparent;\n color: var(--af-color-brand-primary-500);\n box-shadow: inset 0 0 0 1px rgba(124, 58, 237, 0.3);\n}\n\nbutton.size-lg {\n padding: calc(var(--af-space-3)) calc(var(--af-space-4) + 4px);\n font-size: var(--af-size-font-lg);\n}\n\nbutton .spinner {\n position: absolute;\n inset: 0;\n border-radius: inherit;\n background: radial-gradient(circle at center, rgba(255, 255, 255, 0.18), transparent 55%);\n opacity: 0;\n transition: opacity 120ms ease;\n}\n\nbutton.is-loading .spinner {\n opacity: 1;\n}\n\nbutton.is-loading .content {\n opacity: 0.6;\n}\n","import { Component, Event, EventEmitter, h, Prop } from '@stencil/core';\n\n@Component({\n tag: 'af-button',\n styleUrl: 'af-button.css',\n shadow: true\n})\nexport class AfButton {\n /** Visual style of the button */\n @Prop() variant: 'primary' | 'secondary' | 'ghost' = 'primary';\n\n /** Size of the button */\n @Prop() size: 'md' | 'lg' = 'md';\n\n /** Disabled state */\n @Prop({ reflect: true }) disabled = false;\n\n /** Loading state */\n @Prop({ reflect: true }) loading = false;\n\n /** Fired when the button is clicked while enabled */\n @Event() afClick!: EventEmitter<MouseEvent>;\n\n private handleClick = (event: MouseEvent) => {\n if (this.disabled || this.loading) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n\n this.afClick.emit(event);\n };\n\n render() {\n const classes = {\n [`variant-${this.variant}`]: true,\n [`size-${this.size}`]: true,\n 'is-loading': this.loading\n };\n\n return (\n <button\n class={classes}\n part=\"base\"\n disabled={this.disabled || this.loading}\n onClick={this.handleClick}\n >\n <span class=\"spinner\" part=\"spinner\" aria-hidden={!this.loading}></span>\n <span class=\"content\" part=\"label\">\n <slot />\n </span>\n </button>\n );\n }\n}\n",":host {\n display: inline-block;\n}\n\nspan {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: 2px var(--af-space-2);\n border-radius: var(--af-radius-pill);\n font: var(--af-font-weight-semibold) var(--af-size-font-sm) / 1 var(--af-font-family-sans);\n letter-spacing: 0.02em;\n text-transform: uppercase;\n}\n\nspan.tone-brand {\n background: rgba(124, 58, 237, 0.12);\n color: var(--af-color-brand-primary-500);\n}\n\nspan.tone-neutral {\n background: rgba(18, 15, 31, 0.1);\n color: var(--af-color-fg-default);\n}\n\nspan.tone-success {\n background: rgba(16, 185, 129, 0.12);\n color: #0f766e;\n}\n","import { Component, h, Prop } from '@stencil/core';\n\n@Component({\n tag: 'af-badge',\n styleUrl: 'af-badge.css',\n shadow: true\n})\nexport class AfBadge {\n /** Color theme of the badge */\n @Prop() tone: 'brand' | 'neutral' | 'success' = 'brand';\n\n render() {\n return (\n <span class={`tone-${this.tone}`} part=\"base\">\n <slot />\n </span>\n );\n }\n}\n",":host {\n display: inline-flex;\n}\n\nbutton {\n --button-size-sm: 36px;\n --button-size-md: 44px;\n width: var(--button-size-md);\n height: var(--button-size-md);\n border-radius: 50%;\n border: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n color: var(--af-color-brand-primary-500);\n cursor: pointer;\n transition: transform 120ms ease, box-shadow 160ms ease, background-color 160ms ease;\n box-shadow: none;\n}\n\nbutton.size-sm {\n width: var(--button-size-sm);\n height: var(--button-size-sm);\n}\n\nbutton:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n box-shadow: none;\n}\n\nbutton.variant-solid {\n background: linear-gradient(135deg, var(--af-color-brand-primary-500), var(--af-color-brand-primary-600));\n color: var(--af-color-fg-inverse);\n box-shadow: 0 10px 24px rgba(124, 58, 237, 0.24);\n}\n\nbutton.variant-soft {\n background: rgba(124, 58, 237, 0.14);\n color: var(--af-color-brand-primary-500);\n}\n\nbutton.variant-ghost {\n border: 1px solid rgba(124, 58, 237, 0.4);\n background: transparent;\n}\n\nbutton:is(:hover, :focus-visible) {\n transform: translateY(-1px);\n box-shadow: 0 14px 30px rgba(124, 58, 237, 0.28);\n}\n\nbutton:active {\n transform: translateY(0);\n box-shadow: 0 8px 18px rgba(124, 58, 237, 0.2);\n}\n\n.icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 1.5em;\n height: 1.5em;\n}\n\n:host([disabled]) button {\n transform: none;\n box-shadow: none;\n}\n","import { Component, Event, EventEmitter, h, Prop } from '@stencil/core';\n\n@Component({\n tag: 'af-icon-button',\n styleUrl: 'af-icon-button.css',\n shadow: true\n})\nexport class AfIconButton {\n /** Visual style of the icon button */\n @Prop() variant: 'solid' | 'soft' | 'ghost' = 'solid';\n\n /** Size preset */\n @Prop() size: 'sm' | 'md' = 'md';\n\n /** Accessible label text */\n @Prop() label?: string;\n\n /** Disabled state */\n @Prop({ reflect: true }) disabled = false;\n\n /** Raised when the button is activated */\n @Event() afClick!: EventEmitter<MouseEvent>;\n\n private onClick = (event: MouseEvent) => {\n if (this.disabled) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n\n this.afClick.emit(event);\n };\n\n render() {\n const classes = {\n [`variant-${this.variant}`]: true,\n [`size-${this.size}`]: true\n };\n\n return (\n <button\n type=\"button\"\n class={classes}\n part=\"base\"\n disabled={this.disabled}\n aria-label={this.label}\n onClick={this.onClick}\n >\n <span part=\"icon\" class=\"icon\">\n <slot />\n </span>\n </button>\n );\n }\n}\n",":host {\n display: block;\n}\n\narticle {\n position: relative;\n border-radius: var(--af-radius-md);\n background: var(--af-color-bg-surface);\n color: var(--af-color-fg-default);\n padding: calc(var(--af-space-4) * 1.5);\n box-shadow: none;\n border: 1px solid rgba(18, 15, 31, 0.06);\n transition: box-shadow 160ms ease, transform 160ms ease;\n display: block;\n overflow: hidden;\n}\n\narticle.variant-elevated {\n box-shadow: 0 18px 36px rgba(47, 22, 94, 0.18);\n border: none;\n}\n\narticle:hover {\n transform: translateY(-2px);\n box-shadow: 0 24px 44px rgba(47, 22, 94, 0.24);\n}\n\n.accent {\n position: absolute;\n inset: 0;\n width: 6px;\n left: 0;\n right: auto;\n background: linear-gradient(180deg, var(--af-color-brand-primary-500), var(--af-color-brand-primary-600));\n}\n\narticle.accent-brand .accent {\n background: linear-gradient(180deg, var(--af-color-brand-primary-500), var(--af-color-brand-primary-600));\n}\n\narticle.accent-success .accent {\n background: linear-gradient(180deg, #22c55e, #16a34a);\n}\n\narticle.accent-neutral .accent {\n background: rgba(18, 15, 31, 0.18);\n}\n\n.content {\n margin-left: 12px;\n display: grid;\n gap: var(--af-space-3);\n}\n\n.header:empty,\n.footer:empty {\n display: none;\n}\n\n.header ::slotted(*) {\n font-size: 1.125rem;\n font-weight: var(--af-font-weight-semibold);\n}\n\n.footer ::slotted(*) {\n display: inline-flex;\n gap: var(--af-space-2);\n align-items: center;\n}\n","import { Component, h, Prop } from '@stencil/core';\n\n@Component({\n tag: 'af-card',\n styleUrl: 'af-card.css',\n shadow: true\n})\nexport class AfCard {\n /** Visual style of the card */\n @Prop() variant: 'surface' | 'elevated' = 'surface';\n\n /** Optional accent colour strip */\n @Prop() accent?: 'brand' | 'success' | 'neutral';\n\n render() {\n const classes = {\n [`variant-${this.variant}`]: true,\n [`accent-${this.accent}`]: Boolean(this.accent)\n };\n\n return (\n <article class={classes} part=\"base\">\n {this.accent ? <span class=\"accent\" part=\"accent\" aria-hidden=\"true\"></span> : null}\n <div class=\"content\" part=\"content\">\n <header class=\"header\" part=\"header\">\n <slot name=\"header\"></slot>\n </header>\n <div class=\"body\" part=\"body\">\n <slot></slot>\n </div>\n <footer class=\"footer\" part=\"footer\">\n <slot name=\"footer\"></slot>\n </footer>\n </div>\n </article>\n );\n }\n}\n",":host {\n display: block;\n font-family: var(--af-font-family-sans);\n}\n\nlabel {\n display: grid;\n gap: var(--af-space-2);\n color: var(--af-color-fg-default);\n}\n\n.label {\n font-size: 0.95rem;\n font-weight: var(--af-font-weight-semibold);\n}\n\n.control {\n position: relative;\n}\n\ninput {\n width: 100%;\n padding: calc(var(--af-space-2) + 2px) calc(var(--af-space-4) + 8px);\n border-radius: var(--af-radius-md);\n border: 1px solid rgba(18, 15, 31, 0.18);\n background: rgba(255, 255, 255, 0.9);\n color: inherit;\n font: inherit;\n transition: border-color 160ms ease, box-shadow 160ms ease;\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.6);\n}\n\ninput::placeholder {\n color: var(--af-color-fg-muted);\n opacity: 0.8;\n}\n\ninput:focus-visible {\n outline: none;\n border-color: var(--af-color-brand-primary-500);\n box-shadow: 0 0 0 4px rgba(124, 58, 237, 0.18);\n}\n\nlabel.disabled {\n opacity: 0.55;\n cursor: not-allowed;\n}\n\ninput:disabled {\n background: rgba(241, 240, 247, 0.7);\n cursor: not-allowed;\n}\n\n.description {\n font-size: 0.825rem;\n color: var(--af-color-fg-muted);\n}\n","import { Component, Event, EventEmitter, h, Prop } from '@stencil/core';\n\nlet inputIds = 0;\n\n@Component({\n tag: 'af-input',\n styleUrl: 'af-input.css',\n shadow: true\n})\nexport class AfInput {\n private inputId = `af-input-${++inputIds}`;\n private descriptionId = `${this.inputId}-desc`;\n\n /** Optional label text */\n @Prop() label?: string;\n\n /** Assistive description shown below the field */\n @Prop() description?: string;\n\n /** Input type attribute */\n @Prop() type: 'text' | 'email' | 'password' | 'search' = 'text';\n\n /** Placeholder text */\n @Prop() placeholder?: string;\n\n /** Current value (mutable so the component stays in sync) */\n @Prop({ mutable: true }) value = '';\n\n /** Disabled state */\n @Prop({ reflect: true }) disabled = false;\n\n /** Fired as the user types */\n @Event() afInput!: EventEmitter<string>;\n\n /** Fired when the field loses focus after a change */\n @Event() afChange!: EventEmitter<string>;\n\n private handleInput = (event: Event) => {\n const target = event.target as HTMLInputElement;\n this.value = target.value;\n this.afInput.emit(this.value);\n };\n\n private handleChange = () => {\n this.afChange.emit(this.value);\n };\n\n render() {\n const describedBy = this.description ? this.descriptionId : undefined;\n\n return (\n <label part=\"label\" class={{ disabled: this.disabled }} htmlFor={this.inputId}>\n {this.label ? (\n <span class=\"label\" part=\"label-text\">\n {this.label}\n </span>\n ) : null}\n <div class=\"control\">\n <input\n part=\"field\"\n id={this.inputId}\n type={this.type}\n placeholder={this.placeholder}\n value={this.value}\n disabled={this.disabled}\n aria-describedby={describedBy}\n onInput={this.handleInput}\n onChange={this.handleChange}\n />\n </div>\n {this.description ? (\n <p id={this.descriptionId} class=\"description\" part=\"description\">\n {this.description}\n </p>\n ) : null}\n </label>\n );\n }\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { g as globalScripts, b as bootstrapLazy } from './index-o0tfWqnY.js';
2
+ export { s as setNonce } from './index-o0tfWqnY.js';
3
+
4
+ const defineCustomElements = async (win, options) => {
5
+ if (typeof window === 'undefined') return undefined;
6
+ await globalScripts();
7
+ return bootstrapLazy([["af-badge_5",[[257,"af-badge",{"tone":[1]}],[257,"af-button",{"variant":[1],"size":[1],"disabled":[516],"loading":[516]}],[257,"af-card",{"variant":[1],"accent":[1]}],[257,"af-icon-button",{"variant":[1],"size":[1],"label":[1],"disabled":[516]}],[257,"af-input",{"label":[1],"description":[1],"type":[1],"placeholder":[1],"value":[1025],"disabled":[516]}]]]], options);
8
+ };
9
+
10
+ export { defineCustomElements };
11
+ //# sourceMappingURL=loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.js","sources":["@lazy-external-entrypoint?app-data=conditional"],"sourcesContent":["export { setNonce } from '@stencil/core';\nimport { bootstrapLazy } from '@stencil/core';\nimport { globalScripts } from '@stencil/core/internal/app-globals';\nexport const defineCustomElements = async (win, options) => {\n if (typeof window === 'undefined') return undefined;\n await globalScripts();\n return bootstrapLazy([/*!__STENCIL_LAZY_DATA__*/], options);\n};\n"],"names":[],"mappings":";;;AAGY,MAAC,oBAAoB,GAAG,OAAO,GAAG,EAAE,OAAO,KAAK;AAC5D,EAAE,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,OAAO,SAAS;AACrD,EAAE,MAAM,aAAa,EAAE;AACvB,EAAE,OAAO,aAAa,CAAC,4BAA4B,EAAE,OAAO,CAAC;AAC7D;;;;"}
@@ -0,0 +1 @@
1
+ module.exports = require('./cjs/index.cjs.js');
package/dist/index.js ADDED
@@ -0,0 +1 @@
1
+ export * from './esm/index.js';
@@ -0,0 +1,5 @@
1
+ export declare class AfBadge {
2
+ /** Color theme of the badge */
3
+ tone: 'brand' | 'neutral' | 'success';
4
+ render(): any;
5
+ }
@@ -0,0 +1,15 @@
1
+ import { EventEmitter } from '../../stencil-public-runtime';
2
+ export declare class AfButton {
3
+ /** Visual style of the button */
4
+ variant: 'primary' | 'secondary' | 'ghost';
5
+ /** Size of the button */
6
+ size: 'md' | 'lg';
7
+ /** Disabled state */
8
+ disabled: boolean;
9
+ /** Loading state */
10
+ loading: boolean;
11
+ /** Fired when the button is clicked while enabled */
12
+ afClick: EventEmitter<MouseEvent>;
13
+ private handleClick;
14
+ render(): any;
15
+ }
@@ -0,0 +1,7 @@
1
+ export declare class AfCard {
2
+ /** Visual style of the card */
3
+ variant: 'surface' | 'elevated';
4
+ /** Optional accent colour strip */
5
+ accent?: 'brand' | 'success' | 'neutral';
6
+ render(): any;
7
+ }
@@ -0,0 +1,15 @@
1
+ import { EventEmitter } from '../../stencil-public-runtime';
2
+ export declare class AfIconButton {
3
+ /** Visual style of the icon button */
4
+ variant: 'solid' | 'soft' | 'ghost';
5
+ /** Size preset */
6
+ size: 'sm' | 'md';
7
+ /** Accessible label text */
8
+ label?: string;
9
+ /** Disabled state */
10
+ disabled: boolean;
11
+ /** Raised when the button is activated */
12
+ afClick: EventEmitter<MouseEvent>;
13
+ private onClick;
14
+ render(): any;
15
+ }
@@ -0,0 +1,24 @@
1
+ import { EventEmitter } from '../../stencil-public-runtime';
2
+ export declare class AfInput {
3
+ private inputId;
4
+ private descriptionId;
5
+ /** Optional label text */
6
+ label?: string;
7
+ /** Assistive description shown below the field */
8
+ description?: string;
9
+ /** Input type attribute */
10
+ type: 'text' | 'email' | 'password' | 'search';
11
+ /** Placeholder text */
12
+ placeholder?: string;
13
+ /** Current value (mutable so the component stays in sync) */
14
+ value: string;
15
+ /** Disabled state */
16
+ disabled: boolean;
17
+ /** Fired as the user types */
18
+ afInput: EventEmitter<string>;
19
+ /** Fired when the field loses focus after a change */
20
+ afChange: EventEmitter<string>;
21
+ private handleInput;
22
+ private handleChange;
23
+ render(): any;
24
+ }
@@ -0,0 +1,311 @@
1
+ /* eslint-disable */
2
+ /* tslint:disable */
3
+ /**
4
+ * This is an autogenerated file created by the Stencil compiler.
5
+ * It contains typing information for all components that exist in this project.
6
+ */
7
+ import { HTMLStencilElement, JSXBase } from "./stencil-public-runtime";
8
+ export namespace Components {
9
+ interface AfBadge {
10
+ /**
11
+ * Color theme of the badge
12
+ * @default 'brand'
13
+ */
14
+ "tone": 'brand' | 'neutral' | 'success';
15
+ }
16
+ interface AfButton {
17
+ /**
18
+ * Disabled state
19
+ * @default false
20
+ */
21
+ "disabled": boolean;
22
+ /**
23
+ * Loading state
24
+ * @default false
25
+ */
26
+ "loading": boolean;
27
+ /**
28
+ * Size of the button
29
+ * @default 'md'
30
+ */
31
+ "size": 'md' | 'lg';
32
+ /**
33
+ * Visual style of the button
34
+ * @default 'primary'
35
+ */
36
+ "variant": 'primary' | 'secondary' | 'ghost';
37
+ }
38
+ interface AfCard {
39
+ /**
40
+ * Optional accent colour strip
41
+ */
42
+ "accent"?: 'brand' | 'success' | 'neutral';
43
+ /**
44
+ * Visual style of the card
45
+ * @default 'surface'
46
+ */
47
+ "variant": 'surface' | 'elevated';
48
+ }
49
+ interface AfIconButton {
50
+ /**
51
+ * Disabled state
52
+ * @default false
53
+ */
54
+ "disabled": boolean;
55
+ /**
56
+ * Accessible label text
57
+ */
58
+ "label"?: string;
59
+ /**
60
+ * Size preset
61
+ * @default 'md'
62
+ */
63
+ "size": 'sm' | 'md';
64
+ /**
65
+ * Visual style of the icon button
66
+ * @default 'solid'
67
+ */
68
+ "variant": 'solid' | 'soft' | 'ghost';
69
+ }
70
+ interface AfInput {
71
+ /**
72
+ * Assistive description shown below the field
73
+ */
74
+ "description"?: string;
75
+ /**
76
+ * Disabled state
77
+ * @default false
78
+ */
79
+ "disabled": boolean;
80
+ /**
81
+ * Optional label text
82
+ */
83
+ "label"?: string;
84
+ /**
85
+ * Placeholder text
86
+ */
87
+ "placeholder"?: string;
88
+ /**
89
+ * Input type attribute
90
+ * @default 'text'
91
+ */
92
+ "type": 'text' | 'email' | 'password' | 'search';
93
+ /**
94
+ * Current value (mutable so the component stays in sync)
95
+ * @default ''
96
+ */
97
+ "value": string;
98
+ }
99
+ }
100
+ export interface AfButtonCustomEvent<T> extends CustomEvent<T> {
101
+ detail: T;
102
+ target: HTMLAfButtonElement;
103
+ }
104
+ export interface AfIconButtonCustomEvent<T> extends CustomEvent<T> {
105
+ detail: T;
106
+ target: HTMLAfIconButtonElement;
107
+ }
108
+ export interface AfInputCustomEvent<T> extends CustomEvent<T> {
109
+ detail: T;
110
+ target: HTMLAfInputElement;
111
+ }
112
+ declare global {
113
+ interface HTMLAfBadgeElement extends Components.AfBadge, HTMLStencilElement {
114
+ }
115
+ var HTMLAfBadgeElement: {
116
+ prototype: HTMLAfBadgeElement;
117
+ new (): HTMLAfBadgeElement;
118
+ };
119
+ interface HTMLAfButtonElementEventMap {
120
+ "afClick": MouseEvent;
121
+ }
122
+ interface HTMLAfButtonElement extends Components.AfButton, HTMLStencilElement {
123
+ addEventListener<K extends keyof HTMLAfButtonElementEventMap>(type: K, listener: (this: HTMLAfButtonElement, ev: AfButtonCustomEvent<HTMLAfButtonElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
124
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
125
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
126
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
127
+ removeEventListener<K extends keyof HTMLAfButtonElementEventMap>(type: K, listener: (this: HTMLAfButtonElement, ev: AfButtonCustomEvent<HTMLAfButtonElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
128
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
129
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
130
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
131
+ }
132
+ var HTMLAfButtonElement: {
133
+ prototype: HTMLAfButtonElement;
134
+ new (): HTMLAfButtonElement;
135
+ };
136
+ interface HTMLAfCardElement extends Components.AfCard, HTMLStencilElement {
137
+ }
138
+ var HTMLAfCardElement: {
139
+ prototype: HTMLAfCardElement;
140
+ new (): HTMLAfCardElement;
141
+ };
142
+ interface HTMLAfIconButtonElementEventMap {
143
+ "afClick": MouseEvent;
144
+ }
145
+ interface HTMLAfIconButtonElement extends Components.AfIconButton, HTMLStencilElement {
146
+ addEventListener<K extends keyof HTMLAfIconButtonElementEventMap>(type: K, listener: (this: HTMLAfIconButtonElement, ev: AfIconButtonCustomEvent<HTMLAfIconButtonElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
147
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
148
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
149
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
150
+ removeEventListener<K extends keyof HTMLAfIconButtonElementEventMap>(type: K, listener: (this: HTMLAfIconButtonElement, ev: AfIconButtonCustomEvent<HTMLAfIconButtonElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
151
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
152
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
153
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
154
+ }
155
+ var HTMLAfIconButtonElement: {
156
+ prototype: HTMLAfIconButtonElement;
157
+ new (): HTMLAfIconButtonElement;
158
+ };
159
+ interface HTMLAfInputElementEventMap {
160
+ "afInput": string;
161
+ "afChange": string;
162
+ }
163
+ interface HTMLAfInputElement extends Components.AfInput, HTMLStencilElement {
164
+ addEventListener<K extends keyof HTMLAfInputElementEventMap>(type: K, listener: (this: HTMLAfInputElement, ev: AfInputCustomEvent<HTMLAfInputElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
165
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
166
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
167
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
168
+ removeEventListener<K extends keyof HTMLAfInputElementEventMap>(type: K, listener: (this: HTMLAfInputElement, ev: AfInputCustomEvent<HTMLAfInputElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
169
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
170
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
171
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
172
+ }
173
+ var HTMLAfInputElement: {
174
+ prototype: HTMLAfInputElement;
175
+ new (): HTMLAfInputElement;
176
+ };
177
+ interface HTMLElementTagNameMap {
178
+ "af-badge": HTMLAfBadgeElement;
179
+ "af-button": HTMLAfButtonElement;
180
+ "af-card": HTMLAfCardElement;
181
+ "af-icon-button": HTMLAfIconButtonElement;
182
+ "af-input": HTMLAfInputElement;
183
+ }
184
+ }
185
+ declare namespace LocalJSX {
186
+ interface AfBadge {
187
+ /**
188
+ * Color theme of the badge
189
+ * @default 'brand'
190
+ */
191
+ "tone"?: 'brand' | 'neutral' | 'success';
192
+ }
193
+ interface AfButton {
194
+ /**
195
+ * Disabled state
196
+ * @default false
197
+ */
198
+ "disabled"?: boolean;
199
+ /**
200
+ * Loading state
201
+ * @default false
202
+ */
203
+ "loading"?: boolean;
204
+ /**
205
+ * Fired when the button is clicked while enabled
206
+ */
207
+ "onAfClick"?: (event: AfButtonCustomEvent<MouseEvent>) => void;
208
+ /**
209
+ * Size of the button
210
+ * @default 'md'
211
+ */
212
+ "size"?: 'md' | 'lg';
213
+ /**
214
+ * Visual style of the button
215
+ * @default 'primary'
216
+ */
217
+ "variant"?: 'primary' | 'secondary' | 'ghost';
218
+ }
219
+ interface AfCard {
220
+ /**
221
+ * Optional accent colour strip
222
+ */
223
+ "accent"?: 'brand' | 'success' | 'neutral';
224
+ /**
225
+ * Visual style of the card
226
+ * @default 'surface'
227
+ */
228
+ "variant"?: 'surface' | 'elevated';
229
+ }
230
+ interface AfIconButton {
231
+ /**
232
+ * Disabled state
233
+ * @default false
234
+ */
235
+ "disabled"?: boolean;
236
+ /**
237
+ * Accessible label text
238
+ */
239
+ "label"?: string;
240
+ /**
241
+ * Raised when the button is activated
242
+ */
243
+ "onAfClick"?: (event: AfIconButtonCustomEvent<MouseEvent>) => void;
244
+ /**
245
+ * Size preset
246
+ * @default 'md'
247
+ */
248
+ "size"?: 'sm' | 'md';
249
+ /**
250
+ * Visual style of the icon button
251
+ * @default 'solid'
252
+ */
253
+ "variant"?: 'solid' | 'soft' | 'ghost';
254
+ }
255
+ interface AfInput {
256
+ /**
257
+ * Assistive description shown below the field
258
+ */
259
+ "description"?: string;
260
+ /**
261
+ * Disabled state
262
+ * @default false
263
+ */
264
+ "disabled"?: boolean;
265
+ /**
266
+ * Optional label text
267
+ */
268
+ "label"?: string;
269
+ /**
270
+ * Fired when the field loses focus after a change
271
+ */
272
+ "onAfChange"?: (event: AfInputCustomEvent<string>) => void;
273
+ /**
274
+ * Fired as the user types
275
+ */
276
+ "onAfInput"?: (event: AfInputCustomEvent<string>) => void;
277
+ /**
278
+ * Placeholder text
279
+ */
280
+ "placeholder"?: string;
281
+ /**
282
+ * Input type attribute
283
+ * @default 'text'
284
+ */
285
+ "type"?: 'text' | 'email' | 'password' | 'search';
286
+ /**
287
+ * Current value (mutable so the component stays in sync)
288
+ * @default ''
289
+ */
290
+ "value"?: string;
291
+ }
292
+ interface IntrinsicElements {
293
+ "af-badge": AfBadge;
294
+ "af-button": AfButton;
295
+ "af-card": AfCard;
296
+ "af-icon-button": AfIconButton;
297
+ "af-input": AfInput;
298
+ }
299
+ }
300
+ export { LocalJSX as JSX };
301
+ declare module "@stencil/core" {
302
+ export namespace JSX {
303
+ interface IntrinsicElements {
304
+ "af-badge": LocalJSX.AfBadge & JSXBase.HTMLAttributes<HTMLAfBadgeElement>;
305
+ "af-button": LocalJSX.AfButton & JSXBase.HTMLAttributes<HTMLAfButtonElement>;
306
+ "af-card": LocalJSX.AfCard & JSXBase.HTMLAttributes<HTMLAfCardElement>;
307
+ "af-icon-button": LocalJSX.AfIconButton & JSXBase.HTMLAttributes<HTMLAfIconButtonElement>;
308
+ "af-input": LocalJSX.AfInput & JSXBase.HTMLAttributes<HTMLAfInputElement>;
309
+ }
310
+ }
311
+ }
@@ -0,0 +1 @@
1
+ export * from './components';