@brandsync/angular 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.
package/README.md ADDED
@@ -0,0 +1,29 @@
1
+ # @brandsync/angular
2
+
3
+ Angular wrappers for the Brandsync design system web components (`@brandsync/wc`), generated by
4
+ `@stencil/angular-output-target`. Components are exposed as Angular **standalone components**, so
5
+ they can be imported directly into other standalone components or NgModules without an
6
+ intermediate module.
7
+
8
+ ## Install
9
+
10
+ ```sh
11
+ npm install @brandsync/angular @brandsync/wc
12
+ ```
13
+
14
+ `@angular/core` (`^19.0.0`) is a peer dependency and must already be present in your app.
15
+
16
+ ## Usage
17
+
18
+ ```ts
19
+ import { Component } from '@angular/core';
20
+ import { BsComposer } from '@brandsync/angular';
21
+
22
+ @Component({
23
+ selector: 'app-root',
24
+ standalone: true,
25
+ imports: [BsComposer],
26
+ template: `<bs-composer></bs-composer>`,
27
+ })
28
+ export class AppComponent {}
29
+ ```
@@ -0,0 +1,346 @@
1
+ import { __decorate } from 'tslib';
2
+ import * as i0 from '@angular/core';
3
+ import { ChangeDetectionStrategy, Component, EventEmitter, Output } from '@angular/core';
4
+ import { fromEvent } from 'rxjs';
5
+ import { defineCustomElement as defineCustomElement$1 } from '@brandsync/wc/dist/components/bs-badge.js';
6
+ import { defineCustomElement as defineCustomElement$2 } from '@brandsync/wc/dist/components/bs-button.js';
7
+ import { defineCustomElement as defineCustomElement$3 } from '@brandsync/wc/dist/components/bs-button-skeleton.js';
8
+ import { defineCustomElement as defineCustomElement$4 } from '@brandsync/wc/dist/components/bs-card.js';
9
+ import { defineCustomElement as defineCustomElement$5 } from '@brandsync/wc/dist/components/bs-composer.js';
10
+ import { defineCustomElement as defineCustomElement$6 } from '@brandsync/wc/dist/components/bs-data-table.js';
11
+ import { defineCustomElement as defineCustomElement$7 } from '@brandsync/wc/dist/components/bs-input.js';
12
+ import { defineCustomElement as defineCustomElement$8 } from '@brandsync/wc/dist/components/bs-modal.js';
13
+
14
+ /* eslint-disable */
15
+ /* tslint:disable */
16
+ const proxyInputs = (Cmp, inputs) => {
17
+ const Prototype = Cmp.prototype;
18
+ inputs.forEach((item) => {
19
+ Object.defineProperty(Prototype, item, {
20
+ get() {
21
+ return this.el[item];
22
+ },
23
+ set(val) {
24
+ this.z.runOutsideAngular(() => (this.el[item] = val));
25
+ },
26
+ /**
27
+ * In the event that proxyInputs is called
28
+ * multiple times re-defining these inputs
29
+ * will cause an error to be thrown. As a result
30
+ * we set configurable: true to indicate these
31
+ * properties can be changed.
32
+ */
33
+ configurable: true,
34
+ });
35
+ });
36
+ };
37
+ const proxyMethods = (Cmp, methods) => {
38
+ const Prototype = Cmp.prototype;
39
+ methods.forEach((methodName) => {
40
+ Prototype[methodName] = function () {
41
+ const args = arguments;
42
+ return this.z.runOutsideAngular(() => this.el[methodName].apply(this.el, args));
43
+ };
44
+ });
45
+ };
46
+ const proxyOutputs = (instance, el, events) => {
47
+ events.forEach((eventName) => (instance[eventName] = fromEvent(el, eventName)));
48
+ };
49
+ const defineCustomElement = (tagName, customElement) => {
50
+ if (customElement !== undefined && typeof customElements !== 'undefined' && !customElements.get(tagName)) {
51
+ customElements.define(tagName, customElement);
52
+ }
53
+ };
54
+ // tslint:disable-next-line: only-arrow-functions
55
+ function ProxyCmp(opts) {
56
+ const decorator = function (cls) {
57
+ const { defineCustomElementFn, inputs, methods } = opts;
58
+ if (defineCustomElementFn !== undefined) {
59
+ defineCustomElementFn();
60
+ }
61
+ if (inputs) {
62
+ proxyInputs(cls, inputs);
63
+ }
64
+ if (methods) {
65
+ proxyMethods(cls, methods);
66
+ }
67
+ return cls;
68
+ };
69
+ return decorator;
70
+ }
71
+
72
+ let BsBadge = class BsBadge {
73
+ z;
74
+ el;
75
+ constructor(c, r, z) {
76
+ this.z = z;
77
+ c.detach();
78
+ this.el = r.nativeElement;
79
+ }
80
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: BsBadge, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
81
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: BsBadge, isStandalone: true, selector: "bs-badge", inputs: { variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
82
+ };
83
+ BsBadge = __decorate([
84
+ ProxyCmp({
85
+ defineCustomElementFn: defineCustomElement$1,
86
+ inputs: ['variant']
87
+ })
88
+ ], BsBadge);
89
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: BsBadge, decorators: [{
90
+ type: Component,
91
+ args: [{
92
+ selector: 'bs-badge',
93
+ changeDetection: ChangeDetectionStrategy.OnPush,
94
+ template: '<ng-content></ng-content>',
95
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
96
+ inputs: ['variant'],
97
+ }]
98
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
99
+ let BsButton = class BsButton {
100
+ z;
101
+ el;
102
+ constructor(c, r, z) {
103
+ this.z = z;
104
+ c.detach();
105
+ this.el = r.nativeElement;
106
+ }
107
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: BsButton, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
108
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: BsButton, isStandalone: true, selector: "bs-button", inputs: { ariaLabel: "ariaLabel", disabled: "disabled", size: "size", type: "type", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
109
+ };
110
+ BsButton = __decorate([
111
+ ProxyCmp({
112
+ defineCustomElementFn: defineCustomElement$2,
113
+ inputs: ['ariaLabel', 'disabled', 'size', 'type', 'variant']
114
+ })
115
+ ], BsButton);
116
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: BsButton, decorators: [{
117
+ type: Component,
118
+ args: [{
119
+ selector: 'bs-button',
120
+ changeDetection: ChangeDetectionStrategy.OnPush,
121
+ template: '<ng-content></ng-content>',
122
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
123
+ inputs: ['ariaLabel', 'disabled', 'size', 'type', 'variant'],
124
+ }]
125
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
126
+ let BsButtonSkeleton = class BsButtonSkeleton {
127
+ z;
128
+ el;
129
+ constructor(c, r, z) {
130
+ this.z = z;
131
+ c.detach();
132
+ this.el = r.nativeElement;
133
+ }
134
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: BsButtonSkeleton, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
135
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: BsButtonSkeleton, isStandalone: true, selector: "bs-button-skeleton", inputs: { size: "size" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
136
+ };
137
+ BsButtonSkeleton = __decorate([
138
+ ProxyCmp({
139
+ defineCustomElementFn: defineCustomElement$3,
140
+ inputs: ['size']
141
+ })
142
+ ], BsButtonSkeleton);
143
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: BsButtonSkeleton, decorators: [{
144
+ type: Component,
145
+ args: [{
146
+ selector: 'bs-button-skeleton',
147
+ changeDetection: ChangeDetectionStrategy.OnPush,
148
+ template: '<ng-content></ng-content>',
149
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
150
+ inputs: ['size'],
151
+ }]
152
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
153
+ let BsCard = class BsCard {
154
+ z;
155
+ el;
156
+ constructor(c, r, z) {
157
+ this.z = z;
158
+ c.detach();
159
+ this.el = r.nativeElement;
160
+ }
161
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: BsCard, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
162
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: BsCard, isStandalone: true, selector: "bs-card", inputs: { surface: "surface" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
163
+ };
164
+ BsCard = __decorate([
165
+ ProxyCmp({
166
+ defineCustomElementFn: defineCustomElement$4,
167
+ inputs: ['surface']
168
+ })
169
+ ], BsCard);
170
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: BsCard, decorators: [{
171
+ type: Component,
172
+ args: [{
173
+ selector: 'bs-card',
174
+ changeDetection: ChangeDetectionStrategy.OnPush,
175
+ template: '<ng-content></ng-content>',
176
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
177
+ inputs: ['surface'],
178
+ }]
179
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
180
+ let BsComposer = class BsComposer {
181
+ z;
182
+ el;
183
+ bsInput = new EventEmitter();
184
+ bsSubmit = new EventEmitter();
185
+ bsStop = new EventEmitter();
186
+ bsVoiceConfirm = new EventEmitter();
187
+ bsAttach = new EventEmitter();
188
+ bsMicToggle = new EventEmitter();
189
+ constructor(c, r, z) {
190
+ this.z = z;
191
+ c.detach();
192
+ this.el = r.nativeElement;
193
+ }
194
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: BsComposer, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
195
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: BsComposer, isStandalone: true, selector: "bs-composer", inputs: { ariaLabel: "ariaLabel", placeholder: "placeholder", state: "state", value: "value", variant: "variant" }, outputs: { bsInput: "bsInput", bsSubmit: "bsSubmit", bsStop: "bsStop", bsVoiceConfirm: "bsVoiceConfirm", bsAttach: "bsAttach", bsMicToggle: "bsMicToggle" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
196
+ };
197
+ BsComposer = __decorate([
198
+ ProxyCmp({
199
+ defineCustomElementFn: defineCustomElement$5,
200
+ inputs: ['ariaLabel', 'placeholder', 'state', 'value', 'variant']
201
+ })
202
+ ], BsComposer);
203
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: BsComposer, decorators: [{
204
+ type: Component,
205
+ args: [{
206
+ selector: 'bs-composer',
207
+ changeDetection: ChangeDetectionStrategy.OnPush,
208
+ template: '<ng-content></ng-content>',
209
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
210
+ inputs: ['ariaLabel', 'placeholder', 'state', 'value', 'variant'],
211
+ outputs: ['bsInput', 'bsSubmit', 'bsStop', 'bsVoiceConfirm', 'bsAttach', 'bsMicToggle'],
212
+ }]
213
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { bsInput: [{
214
+ type: Output
215
+ }], bsSubmit: [{
216
+ type: Output
217
+ }], bsStop: [{
218
+ type: Output
219
+ }], bsVoiceConfirm: [{
220
+ type: Output
221
+ }], bsAttach: [{
222
+ type: Output
223
+ }], bsMicToggle: [{
224
+ type: Output
225
+ }] } });
226
+ let BsDataTable = class BsDataTable {
227
+ z;
228
+ el;
229
+ bsSort = new EventEmitter();
230
+ bsRowSelect = new EventEmitter();
231
+ constructor(c, r, z) {
232
+ this.z = z;
233
+ c.detach();
234
+ this.el = r.nativeElement;
235
+ }
236
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: BsDataTable, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
237
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: BsDataTable, isStandalone: true, selector: "bs-data-table", inputs: { cellRenderer: "cellRenderer", columns: "columns", rows: "rows", selectable: "selectable", sortColumn: "sortColumn", sortDirection: "sortDirection" }, outputs: { bsSort: "bsSort", bsRowSelect: "bsRowSelect" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
238
+ };
239
+ BsDataTable = __decorate([
240
+ ProxyCmp({
241
+ defineCustomElementFn: defineCustomElement$6,
242
+ inputs: ['cellRenderer', 'columns', 'rows', 'selectable', 'sortColumn', 'sortDirection']
243
+ })
244
+ ], BsDataTable);
245
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: BsDataTable, decorators: [{
246
+ type: Component,
247
+ args: [{
248
+ selector: 'bs-data-table',
249
+ changeDetection: ChangeDetectionStrategy.OnPush,
250
+ template: '<ng-content></ng-content>',
251
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
252
+ inputs: ['cellRenderer', 'columns', 'rows', 'selectable', 'sortColumn', 'sortDirection'],
253
+ outputs: ['bsSort', 'bsRowSelect'],
254
+ }]
255
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { bsSort: [{
256
+ type: Output
257
+ }], bsRowSelect: [{
258
+ type: Output
259
+ }] } });
260
+ let BsInput = class BsInput {
261
+ z;
262
+ el;
263
+ bsInput = new EventEmitter();
264
+ bsChange = new EventEmitter();
265
+ constructor(c, r, z) {
266
+ this.z = z;
267
+ c.detach();
268
+ this.el = r.nativeElement;
269
+ }
270
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: BsInput, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
271
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: BsInput, isStandalone: true, selector: "bs-input", inputs: { description: "description", disabled: "disabled", error: "error", label: "label", placeholder: "placeholder", type: "type", value: "value" }, outputs: { bsInput: "bsInput", bsChange: "bsChange" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
272
+ };
273
+ BsInput = __decorate([
274
+ ProxyCmp({
275
+ defineCustomElementFn: defineCustomElement$7,
276
+ inputs: ['description', 'disabled', 'error', 'label', 'placeholder', 'type', 'value']
277
+ })
278
+ ], BsInput);
279
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: BsInput, decorators: [{
280
+ type: Component,
281
+ args: [{
282
+ selector: 'bs-input',
283
+ changeDetection: ChangeDetectionStrategy.OnPush,
284
+ template: '<ng-content></ng-content>',
285
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
286
+ inputs: ['description', 'disabled', 'error', 'label', 'placeholder', 'type', 'value'],
287
+ outputs: ['bsInput', 'bsChange'],
288
+ }]
289
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { bsInput: [{
290
+ type: Output
291
+ }], bsChange: [{
292
+ type: Output
293
+ }] } });
294
+ let BsModal = class BsModal {
295
+ z;
296
+ el;
297
+ bsClose = new EventEmitter();
298
+ constructor(c, r, z) {
299
+ this.z = z;
300
+ c.detach();
301
+ this.el = r.nativeElement;
302
+ }
303
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: BsModal, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
304
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: BsModal, isStandalone: true, selector: "bs-modal", inputs: { heading: "heading", open: "open", size: "size" }, outputs: { bsClose: "bsClose" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
305
+ };
306
+ BsModal = __decorate([
307
+ ProxyCmp({
308
+ defineCustomElementFn: defineCustomElement$8,
309
+ inputs: ['heading', 'open', 'size']
310
+ })
311
+ ], BsModal);
312
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: BsModal, decorators: [{
313
+ type: Component,
314
+ args: [{
315
+ selector: 'bs-modal',
316
+ changeDetection: ChangeDetectionStrategy.OnPush,
317
+ template: '<ng-content></ng-content>',
318
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
319
+ inputs: ['heading', 'open', 'size'],
320
+ outputs: ['bsClose'],
321
+ }]
322
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { bsClose: [{
323
+ type: Output
324
+ }] } });
325
+
326
+ const DIRECTIVES = [
327
+ BsBadge,
328
+ BsButton,
329
+ BsButtonSkeleton,
330
+ BsCard,
331
+ BsComposer,
332
+ BsDataTable,
333
+ BsInput,
334
+ BsModal
335
+ ];
336
+
337
+ /*
338
+ * Public API surface of @brandsync/angular
339
+ */
340
+
341
+ /**
342
+ * Generated bundle index. Do not edit.
343
+ */
344
+
345
+ export { BsBadge, BsButton, BsButtonSkeleton, BsCard, BsComposer, BsDataTable, BsInput, BsModal, DIRECTIVES };
346
+ //# sourceMappingURL=brandsync-angular.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brandsync-angular.mjs","sources":["../../src/lib/angular-component-lib/utils.ts","../../src/lib/components.ts","../../src/lib/index.ts","../../src/public-api.ts","../../src/brandsync-angular.ts"],"sourcesContent":["/* eslint-disable */\n/* tslint:disable */\nimport { fromEvent } from 'rxjs';\n\nexport const proxyInputs = (Cmp: any, inputs: string[]) => {\n const Prototype = Cmp.prototype;\n inputs.forEach((item) => {\n Object.defineProperty(Prototype, item, {\n get() {\n return this.el[item];\n },\n set(val: any) {\n this.z.runOutsideAngular(() => (this.el[item] = val));\n },\n /**\n * In the event that proxyInputs is called\n * multiple times re-defining these inputs\n * will cause an error to be thrown. As a result\n * we set configurable: true to indicate these\n * properties can be changed.\n */\n configurable: true,\n });\n });\n};\n\nexport const proxyMethods = (Cmp: any, methods: string[]) => {\n const Prototype = Cmp.prototype;\n methods.forEach((methodName) => {\n Prototype[methodName] = function () {\n const args = arguments;\n return this.z.runOutsideAngular(() => this.el[methodName].apply(this.el, args));\n };\n });\n};\n\nexport const proxyOutputs = (instance: any, el: any, events: string[]) => {\n events.forEach((eventName) => (instance[eventName] = fromEvent(el, eventName)));\n};\n\nexport const defineCustomElement = (tagName: string, customElement: any) => {\n if (customElement !== undefined && typeof customElements !== 'undefined' && !customElements.get(tagName)) {\n customElements.define(tagName, customElement);\n }\n};\n\n// tslint:disable-next-line: only-arrow-functions\nexport function ProxyCmp(opts: { defineCustomElementFn?: () => void; inputs?: any; methods?: any }) {\n const decorator = function (cls: any) {\n const { defineCustomElementFn, inputs, methods } = opts;\n\n if (defineCustomElementFn !== undefined) {\n defineCustomElementFn();\n }\n\n if (inputs) {\n proxyInputs(cls, inputs);\n }\n if (methods) {\n proxyMethods(cls, methods);\n }\n return cls;\n };\n return decorator;\n}\n","/* tslint:disable */\n/* auto-generated angular directive proxies */\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Output, NgZone } from '@angular/core';\n\nimport { ProxyCmp } from './angular-component-lib/utils';\n\nimport type { Components } from '@brandsync/wc/dist/components';\n\nimport { defineCustomElement as defineBsBadge } from '@brandsync/wc/dist/components/bs-badge.js';\nimport { defineCustomElement as defineBsButton } from '@brandsync/wc/dist/components/bs-button.js';\nimport { defineCustomElement as defineBsButtonSkeleton } from '@brandsync/wc/dist/components/bs-button-skeleton.js';\nimport { defineCustomElement as defineBsCard } from '@brandsync/wc/dist/components/bs-card.js';\nimport { defineCustomElement as defineBsComposer } from '@brandsync/wc/dist/components/bs-composer.js';\nimport { defineCustomElement as defineBsDataTable } from '@brandsync/wc/dist/components/bs-data-table.js';\nimport { defineCustomElement as defineBsInput } from '@brandsync/wc/dist/components/bs-input.js';\nimport { defineCustomElement as defineBsModal } from '@brandsync/wc/dist/components/bs-modal.js';\n@ProxyCmp({\n defineCustomElementFn: defineBsBadge,\n inputs: ['variant']\n})\n@Component({\n selector: 'bs-badge',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: '<ng-content></ng-content>',\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: ['variant'],\n})\nexport class BsBadge {\n protected el: HTMLBsBadgeElement;\n constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {\n c.detach();\n this.el = r.nativeElement;\n }\n}\n\n\nexport declare interface BsBadge extends Components.BsBadge {}\n\n\n@ProxyCmp({\n defineCustomElementFn: defineBsButton,\n inputs: ['ariaLabel', 'disabled', 'size', 'type', 'variant']\n})\n@Component({\n selector: 'bs-button',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: '<ng-content></ng-content>',\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: ['ariaLabel', 'disabled', 'size', 'type', 'variant'],\n})\nexport class BsButton {\n protected el: HTMLBsButtonElement;\n constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {\n c.detach();\n this.el = r.nativeElement;\n }\n}\n\n\nexport declare interface BsButton extends Components.BsButton {}\n\n\n@ProxyCmp({\n defineCustomElementFn: defineBsButtonSkeleton,\n inputs: ['size']\n})\n@Component({\n selector: 'bs-button-skeleton',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: '<ng-content></ng-content>',\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: ['size'],\n})\nexport class BsButtonSkeleton {\n protected el: HTMLBsButtonSkeletonElement;\n constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {\n c.detach();\n this.el = r.nativeElement;\n }\n}\n\n\nexport declare interface BsButtonSkeleton extends Components.BsButtonSkeleton {}\n\n\n@ProxyCmp({\n defineCustomElementFn: defineBsCard,\n inputs: ['surface']\n})\n@Component({\n selector: 'bs-card',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: '<ng-content></ng-content>',\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: ['surface'],\n})\nexport class BsCard {\n protected el: HTMLBsCardElement;\n constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {\n c.detach();\n this.el = r.nativeElement;\n }\n}\n\n\nexport declare interface BsCard extends Components.BsCard {}\n\n\n@ProxyCmp({\n defineCustomElementFn: defineBsComposer,\n inputs: ['ariaLabel', 'placeholder', 'state', 'value', 'variant']\n})\n@Component({\n selector: 'bs-composer',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: '<ng-content></ng-content>',\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: ['ariaLabel', 'placeholder', 'state', 'value', 'variant'],\n outputs: ['bsInput', 'bsSubmit', 'bsStop', 'bsVoiceConfirm', 'bsAttach', 'bsMicToggle'],\n})\nexport class BsComposer {\n protected el: HTMLBsComposerElement;\n @Output() bsInput = new EventEmitter<BsComposerCustomEvent<string>>();\n @Output() bsSubmit = new EventEmitter<BsComposerCustomEvent<void>>();\n @Output() bsStop = new EventEmitter<BsComposerCustomEvent<void>>();\n @Output() bsVoiceConfirm = new EventEmitter<BsComposerCustomEvent<void>>();\n @Output() bsAttach = new EventEmitter<BsComposerCustomEvent<void>>();\n @Output() bsMicToggle = new EventEmitter<BsComposerCustomEvent<void>>();\n constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {\n c.detach();\n this.el = r.nativeElement;\n }\n}\n\n\nimport type { BsComposerCustomEvent } from '@brandsync/wc/dist/components';\n\nexport declare interface BsComposer extends Components.BsComposer {\n /**\n * Fires on every keystroke in the text field, with the current value.\n */\n bsInput: EventEmitter<BsComposerCustomEvent<string>>;\n /**\n * Fires when the primary action button is clicked while `state=\"idle\"`.\n */\n bsSubmit: EventEmitter<BsComposerCustomEvent<void>>;\n /**\n * Fires when the primary action button is clicked while `state=\"generating\"`.\n */\n bsStop: EventEmitter<BsComposerCustomEvent<void>>;\n /**\n * Fires when the primary action button is clicked while `state=\"recording\"`.\n */\n bsVoiceConfirm: EventEmitter<BsComposerCustomEvent<void>>;\n /**\n * Fires when the \"+\" attach button is clicked.\n */\n bsAttach: EventEmitter<BsComposerCustomEvent<void>>;\n /**\n * Fires when the mic/stop-recording button is clicked. The consumer decides what that means\n(e.g. start recording when idle/generating, or stop recording when `state=\"recording\"`).\n */\n bsMicToggle: EventEmitter<BsComposerCustomEvent<void>>;\n}\n\n\n@ProxyCmp({\n defineCustomElementFn: defineBsDataTable,\n inputs: ['cellRenderer', 'columns', 'rows', 'selectable', 'sortColumn', 'sortDirection']\n})\n@Component({\n selector: 'bs-data-table',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: '<ng-content></ng-content>',\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: ['cellRenderer', 'columns', 'rows', 'selectable', 'sortColumn', 'sortDirection'],\n outputs: ['bsSort', 'bsRowSelect'],\n})\nexport class BsDataTable {\n protected el: HTMLBsDataTableElement;\n @Output() bsSort = new EventEmitter<BsDataTableCustomEvent<{ column: string; direction: 'asc' | 'desc' }>>();\n @Output() bsRowSelect = new EventEmitter<BsDataTableCustomEvent<{ id: string | number; selected: boolean }>>();\n constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {\n c.detach();\n this.el = r.nativeElement;\n }\n}\n\n\nimport type { BsDataTableCustomEvent } from '@brandsync/wc/dist/components';\n\nexport declare interface BsDataTable extends Components.BsDataTable {\n\n bsSort: EventEmitter<BsDataTableCustomEvent<{ column: string; direction: 'asc' | 'desc' }>>;\n\n bsRowSelect: EventEmitter<BsDataTableCustomEvent<{ id: string | number; selected: boolean }>>;\n}\n\n\n@ProxyCmp({\n defineCustomElementFn: defineBsInput,\n inputs: ['description', 'disabled', 'error', 'label', 'placeholder', 'type', 'value']\n})\n@Component({\n selector: 'bs-input',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: '<ng-content></ng-content>',\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: ['description', 'disabled', 'error', 'label', 'placeholder', 'type', 'value'],\n outputs: ['bsInput', 'bsChange'],\n})\nexport class BsInput {\n protected el: HTMLBsInputElement;\n @Output() bsInput = new EventEmitter<BsInputCustomEvent<string>>();\n @Output() bsChange = new EventEmitter<BsInputCustomEvent<string>>();\n constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {\n c.detach();\n this.el = r.nativeElement;\n }\n}\n\n\nimport type { BsInputCustomEvent } from '@brandsync/wc/dist/components';\n\nexport declare interface BsInput extends Components.BsInput {\n\n bsInput: EventEmitter<BsInputCustomEvent<string>>;\n\n bsChange: EventEmitter<BsInputCustomEvent<string>>;\n}\n\n\n@ProxyCmp({\n defineCustomElementFn: defineBsModal,\n inputs: ['heading', 'open', 'size']\n})\n@Component({\n selector: 'bs-modal',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: '<ng-content></ng-content>',\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: ['heading', 'open', 'size'],\n outputs: ['bsClose'],\n})\nexport class BsModal {\n protected el: HTMLBsModalElement;\n @Output() bsClose = new EventEmitter<BsModalCustomEvent<void>>();\n constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {\n c.detach();\n this.el = r.nativeElement;\n }\n}\n\n\nimport type { BsModalCustomEvent } from '@brandsync/wc/dist/components';\n\nexport declare interface BsModal extends Components.BsModal {\n\n bsClose: EventEmitter<BsModalCustomEvent<void>>;\n}\n\n\n","\nimport * as d from './components';\n\nexport const DIRECTIVES = [\n d.BsBadge,\n d.BsButton,\n d.BsButtonSkeleton,\n d.BsCard,\n d.BsComposer,\n d.BsDataTable,\n d.BsInput,\n d.BsModal\n];\n","/*\n * Public API surface of @brandsync/angular\n */\nexport * from './lib/index';\nexport * from './lib/components';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["defineBsBadge","defineBsButton","defineBsButtonSkeleton","defineBsCard","defineBsComposer","defineBsDataTable","defineBsInput","defineBsModal","d.BsBadge","d.BsButton","d.BsButtonSkeleton","d.BsCard","d.BsComposer","d.BsDataTable","d.BsInput","d.BsModal"],"mappings":"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"}
package/index.d.ts ADDED
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ /// <amd-module name="@brandsync/angular" />
5
+ export * from './public-api';
@@ -0,0 +1,9 @@
1
+ export declare const proxyInputs: (Cmp: any, inputs: string[]) => void;
2
+ export declare const proxyMethods: (Cmp: any, methods: string[]) => void;
3
+ export declare const proxyOutputs: (instance: any, el: any, events: string[]) => void;
4
+ export declare const defineCustomElement: (tagName: string, customElement: any) => void;
5
+ export declare function ProxyCmp(opts: {
6
+ defineCustomElementFn?: () => void;
7
+ inputs?: any;
8
+ methods?: any;
9
+ }): (cls: any) => any;
@@ -0,0 +1,132 @@
1
+ import { ChangeDetectorRef, ElementRef, EventEmitter, NgZone } from '@angular/core';
2
+ import type { Components } from '@brandsync/wc/dist/components';
3
+ import type { BsComposerCustomEvent } from '@brandsync/wc/dist/components';
4
+ import type { BsDataTableCustomEvent } from '@brandsync/wc/dist/components';
5
+ import type { BsInputCustomEvent } from '@brandsync/wc/dist/components';
6
+ import type { BsModalCustomEvent } from '@brandsync/wc/dist/components';
7
+ import * as i0 from "@angular/core";
8
+ export declare class BsBadge {
9
+ protected z: NgZone;
10
+ protected el: HTMLBsBadgeElement;
11
+ constructor(c: ChangeDetectorRef, r: ElementRef, z: NgZone);
12
+ static ɵfac: i0.ɵɵFactoryDeclaration<BsBadge, never>;
13
+ static ɵcmp: i0.ɵɵComponentDeclaration<BsBadge, "bs-badge", never, { "variant": { "alias": "variant"; "required": false; }; }, {}, never, ["*"], true, never>;
14
+ }
15
+ export declare interface BsBadge extends Components.BsBadge {
16
+ }
17
+ export declare class BsButton {
18
+ protected z: NgZone;
19
+ protected el: HTMLBsButtonElement;
20
+ constructor(c: ChangeDetectorRef, r: ElementRef, z: NgZone);
21
+ static ɵfac: i0.ɵɵFactoryDeclaration<BsButton, never>;
22
+ static ɵcmp: i0.ɵɵComponentDeclaration<BsButton, "bs-button", never, { "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "size": { "alias": "size"; "required": false; }; "type": { "alias": "type"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; }, {}, never, ["*"], true, never>;
23
+ }
24
+ export declare interface BsButton extends Components.BsButton {
25
+ }
26
+ export declare class BsButtonSkeleton {
27
+ protected z: NgZone;
28
+ protected el: HTMLBsButtonSkeletonElement;
29
+ constructor(c: ChangeDetectorRef, r: ElementRef, z: NgZone);
30
+ static ɵfac: i0.ɵɵFactoryDeclaration<BsButtonSkeleton, never>;
31
+ static ɵcmp: i0.ɵɵComponentDeclaration<BsButtonSkeleton, "bs-button-skeleton", never, { "size": { "alias": "size"; "required": false; }; }, {}, never, ["*"], true, never>;
32
+ }
33
+ export declare interface BsButtonSkeleton extends Components.BsButtonSkeleton {
34
+ }
35
+ export declare class BsCard {
36
+ protected z: NgZone;
37
+ protected el: HTMLBsCardElement;
38
+ constructor(c: ChangeDetectorRef, r: ElementRef, z: NgZone);
39
+ static ɵfac: i0.ɵɵFactoryDeclaration<BsCard, never>;
40
+ static ɵcmp: i0.ɵɵComponentDeclaration<BsCard, "bs-card", never, { "surface": { "alias": "surface"; "required": false; }; }, {}, never, ["*"], true, never>;
41
+ }
42
+ export declare interface BsCard extends Components.BsCard {
43
+ }
44
+ export declare class BsComposer {
45
+ protected z: NgZone;
46
+ protected el: HTMLBsComposerElement;
47
+ bsInput: EventEmitter<BsComposerCustomEvent<string>>;
48
+ bsSubmit: EventEmitter<BsComposerCustomEvent<void>>;
49
+ bsStop: EventEmitter<BsComposerCustomEvent<void>>;
50
+ bsVoiceConfirm: EventEmitter<BsComposerCustomEvent<void>>;
51
+ bsAttach: EventEmitter<BsComposerCustomEvent<void>>;
52
+ bsMicToggle: EventEmitter<BsComposerCustomEvent<void>>;
53
+ constructor(c: ChangeDetectorRef, r: ElementRef, z: NgZone);
54
+ static ɵfac: i0.ɵɵFactoryDeclaration<BsComposer, never>;
55
+ static ɵcmp: i0.ɵɵComponentDeclaration<BsComposer, "bs-composer", never, { "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "state": { "alias": "state"; "required": false; }; "value": { "alias": "value"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; }, { "bsInput": "bsInput"; "bsSubmit": "bsSubmit"; "bsStop": "bsStop"; "bsVoiceConfirm": "bsVoiceConfirm"; "bsAttach": "bsAttach"; "bsMicToggle": "bsMicToggle"; }, never, ["*"], true, never>;
56
+ }
57
+ export declare interface BsComposer extends Components.BsComposer {
58
+ /**
59
+ * Fires on every keystroke in the text field, with the current value.
60
+ */
61
+ bsInput: EventEmitter<BsComposerCustomEvent<string>>;
62
+ /**
63
+ * Fires when the primary action button is clicked while `state="idle"`.
64
+ */
65
+ bsSubmit: EventEmitter<BsComposerCustomEvent<void>>;
66
+ /**
67
+ * Fires when the primary action button is clicked while `state="generating"`.
68
+ */
69
+ bsStop: EventEmitter<BsComposerCustomEvent<void>>;
70
+ /**
71
+ * Fires when the primary action button is clicked while `state="recording"`.
72
+ */
73
+ bsVoiceConfirm: EventEmitter<BsComposerCustomEvent<void>>;
74
+ /**
75
+ * Fires when the "+" attach button is clicked.
76
+ */
77
+ bsAttach: EventEmitter<BsComposerCustomEvent<void>>;
78
+ /**
79
+ * Fires when the mic/stop-recording button is clicked. The consumer decides what that means
80
+ (e.g. start recording when idle/generating, or stop recording when `state="recording"`).
81
+ */
82
+ bsMicToggle: EventEmitter<BsComposerCustomEvent<void>>;
83
+ }
84
+ export declare class BsDataTable {
85
+ protected z: NgZone;
86
+ protected el: HTMLBsDataTableElement;
87
+ bsSort: EventEmitter<BsDataTableCustomEvent<{
88
+ column: string;
89
+ direction: "asc" | "desc";
90
+ }>>;
91
+ bsRowSelect: EventEmitter<BsDataTableCustomEvent<{
92
+ id: string | number;
93
+ selected: boolean;
94
+ }>>;
95
+ constructor(c: ChangeDetectorRef, r: ElementRef, z: NgZone);
96
+ static ɵfac: i0.ɵɵFactoryDeclaration<BsDataTable, never>;
97
+ static ɵcmp: i0.ɵɵComponentDeclaration<BsDataTable, "bs-data-table", never, { "cellRenderer": { "alias": "cellRenderer"; "required": false; }; "columns": { "alias": "columns"; "required": false; }; "rows": { "alias": "rows"; "required": false; }; "selectable": { "alias": "selectable"; "required": false; }; "sortColumn": { "alias": "sortColumn"; "required": false; }; "sortDirection": { "alias": "sortDirection"; "required": false; }; }, { "bsSort": "bsSort"; "bsRowSelect": "bsRowSelect"; }, never, ["*"], true, never>;
98
+ }
99
+ export declare interface BsDataTable extends Components.BsDataTable {
100
+ bsSort: EventEmitter<BsDataTableCustomEvent<{
101
+ column: string;
102
+ direction: 'asc' | 'desc';
103
+ }>>;
104
+ bsRowSelect: EventEmitter<BsDataTableCustomEvent<{
105
+ id: string | number;
106
+ selected: boolean;
107
+ }>>;
108
+ }
109
+ export declare class BsInput {
110
+ protected z: NgZone;
111
+ protected el: HTMLBsInputElement;
112
+ bsInput: EventEmitter<BsInputCustomEvent<string>>;
113
+ bsChange: EventEmitter<BsInputCustomEvent<string>>;
114
+ constructor(c: ChangeDetectorRef, r: ElementRef, z: NgZone);
115
+ static ɵfac: i0.ɵɵFactoryDeclaration<BsInput, never>;
116
+ static ɵcmp: i0.ɵɵComponentDeclaration<BsInput, "bs-input", never, { "description": { "alias": "description"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "error": { "alias": "error"; "required": false; }; "label": { "alias": "label"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "type": { "alias": "type"; "required": false; }; "value": { "alias": "value"; "required": false; }; }, { "bsInput": "bsInput"; "bsChange": "bsChange"; }, never, ["*"], true, never>;
117
+ }
118
+ export declare interface BsInput extends Components.BsInput {
119
+ bsInput: EventEmitter<BsInputCustomEvent<string>>;
120
+ bsChange: EventEmitter<BsInputCustomEvent<string>>;
121
+ }
122
+ export declare class BsModal {
123
+ protected z: NgZone;
124
+ protected el: HTMLBsModalElement;
125
+ bsClose: EventEmitter<BsModalCustomEvent<void>>;
126
+ constructor(c: ChangeDetectorRef, r: ElementRef, z: NgZone);
127
+ static ɵfac: i0.ɵɵFactoryDeclaration<BsModal, never>;
128
+ static ɵcmp: i0.ɵɵComponentDeclaration<BsModal, "bs-modal", never, { "heading": { "alias": "heading"; "required": false; }; "open": { "alias": "open"; "required": false; }; "size": { "alias": "size"; "required": false; }; }, { "bsClose": "bsClose"; }, never, ["*"], true, never>;
129
+ }
130
+ export declare interface BsModal extends Components.BsModal {
131
+ bsClose: EventEmitter<BsModalCustomEvent<void>>;
132
+ }
package/lib/index.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ import * as d from './components';
2
+ export declare const DIRECTIVES: (typeof d.BsBadge | typeof d.BsButton | typeof d.BsButtonSkeleton | typeof d.BsCard | typeof d.BsComposer | typeof d.BsDataTable | typeof d.BsInput | typeof d.BsModal)[];
package/package.json ADDED
@@ -0,0 +1,28 @@
1
+ {
2
+ "name": "@brandsync/angular",
3
+ "version": "0.0.1",
4
+ "description": "Brandsync design system components as Angular standalone components",
5
+ "publishConfig": {
6
+ "access": "public"
7
+ },
8
+ "peerDependencies": {
9
+ "@angular/core": "^19.0.0"
10
+ },
11
+ "dependencies": {
12
+ "@brandsync/wc": "0.0.1",
13
+ "tslib": "^2.3.0"
14
+ },
15
+ "license": "MIT",
16
+ "module": "fesm2022/brandsync-angular.mjs",
17
+ "typings": "index.d.ts",
18
+ "exports": {
19
+ "./package.json": {
20
+ "default": "./package.json"
21
+ },
22
+ ".": {
23
+ "types": "./index.d.ts",
24
+ "default": "./fesm2022/brandsync-angular.mjs"
25
+ }
26
+ },
27
+ "sideEffects": false
28
+ }
@@ -0,0 +1,2 @@
1
+ export * from './lib/index';
2
+ export * from './lib/components';