@iarunsaragadam/ngx-tailwind-flex-ui 0.0.1-canary.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/.editorconfig +13 -0
  2. package/.github/workflows/ci.yml +131 -0
  3. package/.prettierignore +6 -0
  4. package/.prettierrc +3 -0
  5. package/.vscode/extensions.json +9 -0
  6. package/CODE_OF_CONDUCT.md +130 -0
  7. package/CONTRIBUTING.md +145 -0
  8. package/LICENSE +201 -0
  9. package/README.md +3 -0
  10. package/documentation.json +405 -0
  11. package/eslint.config.mjs +42 -0
  12. package/jest.config.ts +5 -0
  13. package/jest.preset.js +3 -0
  14. package/libs/ngx-tailwind-flex-ui/.storybook/main.ts +18 -0
  15. package/libs/ngx-tailwind-flex-ui/.storybook/preview.ts +0 -0
  16. package/libs/ngx-tailwind-flex-ui/.storybook/tailwind-imports.scss +3 -0
  17. package/libs/ngx-tailwind-flex-ui/.storybook/tsconfig.json +18 -0
  18. package/libs/ngx-tailwind-flex-ui/README.md +7 -0
  19. package/libs/ngx-tailwind-flex-ui/documentation.json +405 -0
  20. package/libs/ngx-tailwind-flex-ui/eslint.config.mjs +48 -0
  21. package/libs/ngx-tailwind-flex-ui/jest.config.ts +21 -0
  22. package/libs/ngx-tailwind-flex-ui/ng-package.json +7 -0
  23. package/libs/ngx-tailwind-flex-ui/package.json +9 -0
  24. package/libs/ngx-tailwind-flex-ui/project.json +90 -0
  25. package/libs/ngx-tailwind-flex-ui/src/index.ts +1 -0
  26. package/libs/ngx-tailwind-flex-ui/src/lib/button/button.component.css +0 -0
  27. package/libs/ngx-tailwind-flex-ui/src/lib/button/button.component.html +3 -0
  28. package/libs/ngx-tailwind-flex-ui/src/lib/button/button.component.spec.ts +21 -0
  29. package/libs/ngx-tailwind-flex-ui/src/lib/button/button.component.stories.ts +93 -0
  30. package/libs/ngx-tailwind-flex-ui/src/lib/button/button.component.ts +34 -0
  31. package/libs/ngx-tailwind-flex-ui/src/styles.scss +3 -0
  32. package/libs/ngx-tailwind-flex-ui/src/test-setup.ts +6 -0
  33. package/libs/ngx-tailwind-flex-ui/tailwind.config.js +14 -0
  34. package/libs/ngx-tailwind-flex-ui/tsconfig.json +31 -0
  35. package/libs/ngx-tailwind-flex-ui/tsconfig.lib.json +19 -0
  36. package/libs/ngx-tailwind-flex-ui/tsconfig.lib.prod.json +9 -0
  37. package/libs/ngx-tailwind-flex-ui/tsconfig.spec.json +16 -0
  38. package/nx.json +99 -0
  39. package/package.json +80 -0
  40. package/tsconfig.base.json +22 -0
@@ -0,0 +1,405 @@
1
+ {
2
+ "pipes": [],
3
+ "interfaces": [],
4
+ "injectables": [],
5
+ "guards": [],
6
+ "interceptors": [],
7
+ "classes": [],
8
+ "directives": [],
9
+ "components": [
10
+ {
11
+ "name": "ButtonComponent",
12
+ "id": "component-ButtonComponent-7b549b2939b9a34abd922e3a0255997fdcdc44e13e0d3149f6f081fd94e8328dfcef16d4b504efc25d22156e814a32fd37682ce25460fb63fbe9f89259f6c17c",
13
+ "file": "libs/ngx-tailwind-flex-ui/src/lib/button/button.component.ts",
14
+ "encapsulation": [],
15
+ "entryComponents": [],
16
+ "inputs": [],
17
+ "outputs": [],
18
+ "providers": [],
19
+ "selector": "lib-button",
20
+ "styleUrls": [],
21
+ "styles": [],
22
+ "templateUrl": [
23
+ "./button.component.html"
24
+ ],
25
+ "viewProviders": [],
26
+ "hostDirectives": [],
27
+ "inputsClass": [
28
+ {
29
+ "name": "class",
30
+ "defaultValue": "''",
31
+ "deprecated": false,
32
+ "deprecationMessage": "",
33
+ "line": 12,
34
+ "type": "string",
35
+ "decorators": []
36
+ },
37
+ {
38
+ "name": "disabled",
39
+ "defaultValue": "false",
40
+ "deprecated": false,
41
+ "deprecationMessage": "",
42
+ "line": 11,
43
+ "type": "boolean",
44
+ "decorators": []
45
+ },
46
+ {
47
+ "name": "variant",
48
+ "defaultValue": "'primary'",
49
+ "deprecated": false,
50
+ "deprecationMessage": "",
51
+ "line": 10,
52
+ "type": "\"primary\" | \"accent\" | \"outline\" | \"text\"",
53
+ "decorators": []
54
+ }
55
+ ],
56
+ "outputsClass": [],
57
+ "propertiesClass": [],
58
+ "methodsClass": [],
59
+ "deprecated": false,
60
+ "deprecationMessage": "",
61
+ "hostBindings": [
62
+ {
63
+ "name": "class",
64
+ "deprecated": false,
65
+ "deprecationMessage": "",
66
+ "line": 14,
67
+ "type": "any",
68
+ "decorators": []
69
+ }
70
+ ],
71
+ "hostListeners": [],
72
+ "standalone": true,
73
+ "imports": [],
74
+ "description": "",
75
+ "rawdescription": "\n",
76
+ "type": "component",
77
+ "sourceCode": "import { Component, Input, HostBinding } from '@angular/core';\n\n@Component({\n selector: 'lib-button',\n standalone: true,\n templateUrl: './button.component.html',\n styles: [], // No inline styles; Tailwind handles it\n})\nexport class ButtonComponent {\n @Input() variant: 'primary' | 'accent' | 'outline' | 'text' = 'primary';\n @Input() disabled = false;\n @Input() class = ''; // Allow users to pass custom Tailwind classes\n\n @HostBinding('class') get hostClasses() {\n const baseClasses =\n 'inline-flex items-center justify-center px-4 py-2 rounded-md font-medium transition-colors duration-200';\n const variantClasses = {\n primary:\n 'bg-blue-600 text-white hover:bg-blue-700 focus:ring-2 focus:ring-blue-500 focus:ring-offset-2',\n accent:\n 'bg-purple-600 text-white hover:bg-purple-700 focus:ring-2 focus:ring-purple-500 focus:ring-offset-2',\n outline:\n 'border border-gray-300 text-gray-700 hover:bg-gray-100 focus:ring-2 focus:ring-gray-500 focus:ring-offset-2',\n text: 'text-gray-700 hover:bg-gray-100 focus:ring-2 focus:ring-gray-500 focus:ring-offset-2',\n };\n const disabledClasses = this.disabled\n ? 'opacity-50 cursor-not-allowed'\n : '';\n\n return `${baseClasses} ${variantClasses[this.variant]} ${disabledClasses} ${\n this.class\n }`.trim();\n }\n}\n",
78
+ "assetsDirs": [],
79
+ "styleUrlsData": "",
80
+ "stylesData": "",
81
+ "extends": [],
82
+ "accessors": {
83
+ "hostClasses": {
84
+ "name": "hostClasses",
85
+ "getSignature": {
86
+ "name": "hostClasses",
87
+ "type": "",
88
+ "returnType": "",
89
+ "line": 14
90
+ }
91
+ }
92
+ },
93
+ "templateData": "<button [disabled]=\"disabled\">\n <ng-content></ng-content>\n</button>\n"
94
+ }
95
+ ],
96
+ "modules": [],
97
+ "miscellaneous": {
98
+ "variables": [
99
+ {
100
+ "name": "Accent",
101
+ "ctype": "miscellaneous",
102
+ "subtype": "variable",
103
+ "file": "libs/ngx-tailwind-flex-ui/src/lib/button/button.component.stories.ts",
104
+ "deprecated": false,
105
+ "deprecationMessage": "",
106
+ "type": "Story",
107
+ "defaultValue": "{\n args: {\n variant: 'accent',\n disabled: false,\n },\n render: (args) => ({\n props: args,\n template: `<lib-button [variant]=\"variant\" [disabled]=\"disabled\">Accent Button</lib-button>`,\n }),\n}"
108
+ },
109
+ {
110
+ "name": "config",
111
+ "ctype": "miscellaneous",
112
+ "subtype": "variable",
113
+ "file": "libs/ngx-tailwind-flex-ui/.storybook/main.ts",
114
+ "deprecated": false,
115
+ "deprecationMessage": "",
116
+ "type": "StorybookConfig",
117
+ "defaultValue": "{\n stories: ['../**/*.@(mdx|stories.@(js|jsx|ts|tsx))'],\n addons: ['@storybook/addon-essentials', '@storybook/addon-interactions'],\n framework: {\n name: '@storybook/angular',\n options: {},\n },\n docs: {\n autodocs: true,\n defaultName: 'Docs',\n },\n}"
118
+ },
119
+ {
120
+ "name": "CustomStyled",
121
+ "ctype": "miscellaneous",
122
+ "subtype": "variable",
123
+ "file": "libs/ngx-tailwind-flex-ui/src/lib/button/button.component.stories.ts",
124
+ "deprecated": false,
125
+ "deprecationMessage": "",
126
+ "type": "Story",
127
+ "defaultValue": "{\n args: {\n variant: 'primary',\n class: 'text-lg px-6 py-3 bg-green-500 hover:bg-green-600',\n },\n render: (args) => ({\n props: args,\n template: `<lib-button [variant]=\"variant\" [class]=\"class\">Custom Styled Button</lib-button>`,\n }),\n}"
128
+ },
129
+ {
130
+ "name": "Disabled",
131
+ "ctype": "miscellaneous",
132
+ "subtype": "variable",
133
+ "file": "libs/ngx-tailwind-flex-ui/src/lib/button/button.component.stories.ts",
134
+ "deprecated": false,
135
+ "deprecationMessage": "",
136
+ "type": "Story",
137
+ "defaultValue": "{\n args: {\n variant: 'primary',\n disabled: true,\n },\n render: (args) => ({\n props: args,\n template: `<lib-button [variant]=\"variant\" [disabled]=\"disabled\">Disabled Button</lib-button>`,\n }),\n}"
138
+ },
139
+ {
140
+ "name": "meta",
141
+ "ctype": "miscellaneous",
142
+ "subtype": "variable",
143
+ "file": "libs/ngx-tailwind-flex-ui/src/lib/button/button.component.stories.ts",
144
+ "deprecated": false,
145
+ "deprecationMessage": "",
146
+ "type": "Meta<ButtonComponent>",
147
+ "defaultValue": "{\n title: 'Components/Button',\n component: ButtonComponent,\n tags: ['autodocs'],\n argTypes: {\n variant: {\n control: 'select',\n options: ['primary', 'accent', 'outline', 'text'],\n description: 'Button style variant',\n },\n disabled: {\n control: 'boolean',\n description: 'Disables the button',\n },\n class: {\n control: 'text',\n description: 'Additional Tailwind CSS classes for customization',\n },\n },\n}"
148
+ },
149
+ {
150
+ "name": "Outline",
151
+ "ctype": "miscellaneous",
152
+ "subtype": "variable",
153
+ "file": "libs/ngx-tailwind-flex-ui/src/lib/button/button.component.stories.ts",
154
+ "deprecated": false,
155
+ "deprecationMessage": "",
156
+ "type": "Story",
157
+ "defaultValue": "{\n args: {\n variant: 'outline',\n disabled: false,\n },\n render: (args) => ({\n props: args,\n template: `<lib-button [variant]=\"variant\" [disabled]=\"disabled\">Outline Button</lib-button>`,\n }),\n}"
158
+ },
159
+ {
160
+ "name": "Primary",
161
+ "ctype": "miscellaneous",
162
+ "subtype": "variable",
163
+ "file": "libs/ngx-tailwind-flex-ui/src/lib/button/button.component.stories.ts",
164
+ "deprecated": false,
165
+ "deprecationMessage": "",
166
+ "type": "Story",
167
+ "defaultValue": "{\n args: {\n variant: 'primary',\n disabled: false,\n },\n render: (args) => ({\n props: args,\n template: `<lib-button [variant]=\"variant\" [disabled]=\"disabled\">Primary Button</lib-button>`,\n }),\n}"
168
+ },
169
+ {
170
+ "name": "Text",
171
+ "ctype": "miscellaneous",
172
+ "subtype": "variable",
173
+ "file": "libs/ngx-tailwind-flex-ui/src/lib/button/button.component.stories.ts",
174
+ "deprecated": false,
175
+ "deprecationMessage": "",
176
+ "type": "Story",
177
+ "defaultValue": "{\n args: {\n variant: 'text',\n disabled: false,\n },\n render: (args) => ({\n props: args,\n template: `<lib-button [variant]=\"variant\" [disabled]=\"disabled\">Text Button</lib-button>`,\n }),\n}"
178
+ }
179
+ ],
180
+ "functions": [],
181
+ "typealiases": [
182
+ {
183
+ "name": "Story",
184
+ "ctype": "miscellaneous",
185
+ "subtype": "typealias",
186
+ "rawtype": "StoryObj<ButtonComponent>",
187
+ "file": "libs/ngx-tailwind-flex-ui/src/lib/button/button.component.stories.ts",
188
+ "deprecated": false,
189
+ "deprecationMessage": "",
190
+ "description": "",
191
+ "kind": 183
192
+ }
193
+ ],
194
+ "enumerations": [],
195
+ "groupedVariables": {
196
+ "libs/ngx-tailwind-flex-ui/src/lib/button/button.component.stories.ts": [
197
+ {
198
+ "name": "Accent",
199
+ "ctype": "miscellaneous",
200
+ "subtype": "variable",
201
+ "file": "libs/ngx-tailwind-flex-ui/src/lib/button/button.component.stories.ts",
202
+ "deprecated": false,
203
+ "deprecationMessage": "",
204
+ "type": "Story",
205
+ "defaultValue": "{\n args: {\n variant: 'accent',\n disabled: false,\n },\n render: (args) => ({\n props: args,\n template: `<lib-button [variant]=\"variant\" [disabled]=\"disabled\">Accent Button</lib-button>`,\n }),\n}"
206
+ },
207
+ {
208
+ "name": "CustomStyled",
209
+ "ctype": "miscellaneous",
210
+ "subtype": "variable",
211
+ "file": "libs/ngx-tailwind-flex-ui/src/lib/button/button.component.stories.ts",
212
+ "deprecated": false,
213
+ "deprecationMessage": "",
214
+ "type": "Story",
215
+ "defaultValue": "{\n args: {\n variant: 'primary',\n class: 'text-lg px-6 py-3 bg-green-500 hover:bg-green-600',\n },\n render: (args) => ({\n props: args,\n template: `<lib-button [variant]=\"variant\" [class]=\"class\">Custom Styled Button</lib-button>`,\n }),\n}"
216
+ },
217
+ {
218
+ "name": "Disabled",
219
+ "ctype": "miscellaneous",
220
+ "subtype": "variable",
221
+ "file": "libs/ngx-tailwind-flex-ui/src/lib/button/button.component.stories.ts",
222
+ "deprecated": false,
223
+ "deprecationMessage": "",
224
+ "type": "Story",
225
+ "defaultValue": "{\n args: {\n variant: 'primary',\n disabled: true,\n },\n render: (args) => ({\n props: args,\n template: `<lib-button [variant]=\"variant\" [disabled]=\"disabled\">Disabled Button</lib-button>`,\n }),\n}"
226
+ },
227
+ {
228
+ "name": "meta",
229
+ "ctype": "miscellaneous",
230
+ "subtype": "variable",
231
+ "file": "libs/ngx-tailwind-flex-ui/src/lib/button/button.component.stories.ts",
232
+ "deprecated": false,
233
+ "deprecationMessage": "",
234
+ "type": "Meta<ButtonComponent>",
235
+ "defaultValue": "{\n title: 'Components/Button',\n component: ButtonComponent,\n tags: ['autodocs'],\n argTypes: {\n variant: {\n control: 'select',\n options: ['primary', 'accent', 'outline', 'text'],\n description: 'Button style variant',\n },\n disabled: {\n control: 'boolean',\n description: 'Disables the button',\n },\n class: {\n control: 'text',\n description: 'Additional Tailwind CSS classes for customization',\n },\n },\n}"
236
+ },
237
+ {
238
+ "name": "Outline",
239
+ "ctype": "miscellaneous",
240
+ "subtype": "variable",
241
+ "file": "libs/ngx-tailwind-flex-ui/src/lib/button/button.component.stories.ts",
242
+ "deprecated": false,
243
+ "deprecationMessage": "",
244
+ "type": "Story",
245
+ "defaultValue": "{\n args: {\n variant: 'outline',\n disabled: false,\n },\n render: (args) => ({\n props: args,\n template: `<lib-button [variant]=\"variant\" [disabled]=\"disabled\">Outline Button</lib-button>`,\n }),\n}"
246
+ },
247
+ {
248
+ "name": "Primary",
249
+ "ctype": "miscellaneous",
250
+ "subtype": "variable",
251
+ "file": "libs/ngx-tailwind-flex-ui/src/lib/button/button.component.stories.ts",
252
+ "deprecated": false,
253
+ "deprecationMessage": "",
254
+ "type": "Story",
255
+ "defaultValue": "{\n args: {\n variant: 'primary',\n disabled: false,\n },\n render: (args) => ({\n props: args,\n template: `<lib-button [variant]=\"variant\" [disabled]=\"disabled\">Primary Button</lib-button>`,\n }),\n}"
256
+ },
257
+ {
258
+ "name": "Text",
259
+ "ctype": "miscellaneous",
260
+ "subtype": "variable",
261
+ "file": "libs/ngx-tailwind-flex-ui/src/lib/button/button.component.stories.ts",
262
+ "deprecated": false,
263
+ "deprecationMessage": "",
264
+ "type": "Story",
265
+ "defaultValue": "{\n args: {\n variant: 'text',\n disabled: false,\n },\n render: (args) => ({\n props: args,\n template: `<lib-button [variant]=\"variant\" [disabled]=\"disabled\">Text Button</lib-button>`,\n }),\n}"
266
+ }
267
+ ],
268
+ "libs/ngx-tailwind-flex-ui/.storybook/main.ts": [
269
+ {
270
+ "name": "config",
271
+ "ctype": "miscellaneous",
272
+ "subtype": "variable",
273
+ "file": "libs/ngx-tailwind-flex-ui/.storybook/main.ts",
274
+ "deprecated": false,
275
+ "deprecationMessage": "",
276
+ "type": "StorybookConfig",
277
+ "defaultValue": "{\n stories: ['../**/*.@(mdx|stories.@(js|jsx|ts|tsx))'],\n addons: ['@storybook/addon-essentials', '@storybook/addon-interactions'],\n framework: {\n name: '@storybook/angular',\n options: {},\n },\n docs: {\n autodocs: true,\n defaultName: 'Docs',\n },\n}"
278
+ }
279
+ ]
280
+ },
281
+ "groupedFunctions": {},
282
+ "groupedEnumerations": {},
283
+ "groupedTypeAliases": {
284
+ "libs/ngx-tailwind-flex-ui/src/lib/button/button.component.stories.ts": [
285
+ {
286
+ "name": "Story",
287
+ "ctype": "miscellaneous",
288
+ "subtype": "typealias",
289
+ "rawtype": "StoryObj<ButtonComponent>",
290
+ "file": "libs/ngx-tailwind-flex-ui/src/lib/button/button.component.stories.ts",
291
+ "deprecated": false,
292
+ "deprecationMessage": "",
293
+ "description": "",
294
+ "kind": 183
295
+ }
296
+ ]
297
+ }
298
+ },
299
+ "routes": [],
300
+ "coverage": {
301
+ "count": 0,
302
+ "status": "low",
303
+ "files": [
304
+ {
305
+ "filePath": "libs/ngx-tailwind-flex-ui/.storybook/main.ts",
306
+ "type": "variable",
307
+ "linktype": "miscellaneous",
308
+ "linksubtype": "variable",
309
+ "name": "config",
310
+ "coveragePercent": 0,
311
+ "coverageCount": "0/1",
312
+ "status": "low"
313
+ },
314
+ {
315
+ "filePath": "libs/ngx-tailwind-flex-ui/src/lib/button/button.component.stories.ts",
316
+ "type": "variable",
317
+ "linktype": "miscellaneous",
318
+ "linksubtype": "variable",
319
+ "name": "Accent",
320
+ "coveragePercent": 0,
321
+ "coverageCount": "0/1",
322
+ "status": "low"
323
+ },
324
+ {
325
+ "filePath": "libs/ngx-tailwind-flex-ui/src/lib/button/button.component.stories.ts",
326
+ "type": "variable",
327
+ "linktype": "miscellaneous",
328
+ "linksubtype": "variable",
329
+ "name": "CustomStyled",
330
+ "coveragePercent": 0,
331
+ "coverageCount": "0/1",
332
+ "status": "low"
333
+ },
334
+ {
335
+ "filePath": "libs/ngx-tailwind-flex-ui/src/lib/button/button.component.stories.ts",
336
+ "type": "variable",
337
+ "linktype": "miscellaneous",
338
+ "linksubtype": "variable",
339
+ "name": "Disabled",
340
+ "coveragePercent": 0,
341
+ "coverageCount": "0/1",
342
+ "status": "low"
343
+ },
344
+ {
345
+ "filePath": "libs/ngx-tailwind-flex-ui/src/lib/button/button.component.stories.ts",
346
+ "type": "variable",
347
+ "linktype": "miscellaneous",
348
+ "linksubtype": "variable",
349
+ "name": "meta",
350
+ "coveragePercent": 0,
351
+ "coverageCount": "0/1",
352
+ "status": "low"
353
+ },
354
+ {
355
+ "filePath": "libs/ngx-tailwind-flex-ui/src/lib/button/button.component.stories.ts",
356
+ "type": "variable",
357
+ "linktype": "miscellaneous",
358
+ "linksubtype": "variable",
359
+ "name": "Outline",
360
+ "coveragePercent": 0,
361
+ "coverageCount": "0/1",
362
+ "status": "low"
363
+ },
364
+ {
365
+ "filePath": "libs/ngx-tailwind-flex-ui/src/lib/button/button.component.stories.ts",
366
+ "type": "variable",
367
+ "linktype": "miscellaneous",
368
+ "linksubtype": "variable",
369
+ "name": "Primary",
370
+ "coveragePercent": 0,
371
+ "coverageCount": "0/1",
372
+ "status": "low"
373
+ },
374
+ {
375
+ "filePath": "libs/ngx-tailwind-flex-ui/src/lib/button/button.component.stories.ts",
376
+ "type": "variable",
377
+ "linktype": "miscellaneous",
378
+ "linksubtype": "variable",
379
+ "name": "Text",
380
+ "coveragePercent": 0,
381
+ "coverageCount": "0/1",
382
+ "status": "low"
383
+ },
384
+ {
385
+ "filePath": "libs/ngx-tailwind-flex-ui/src/lib/button/button.component.stories.ts",
386
+ "type": "type alias",
387
+ "linktype": "miscellaneous",
388
+ "linksubtype": "typealias",
389
+ "name": "Story",
390
+ "coveragePercent": 0,
391
+ "coverageCount": "0/1",
392
+ "status": "low"
393
+ },
394
+ {
395
+ "filePath": "libs/ngx-tailwind-flex-ui/src/lib/button/button.component.ts",
396
+ "type": "component",
397
+ "linktype": "component",
398
+ "name": "ButtonComponent",
399
+ "coveragePercent": 0,
400
+ "coverageCount": "0/5",
401
+ "status": "low"
402
+ }
403
+ ]
404
+ }
405
+ }
@@ -0,0 +1,48 @@
1
+ import nx from '@nx/eslint-plugin';
2
+ import baseConfig from '../../eslint.config.mjs';
3
+
4
+ export default [
5
+ ...baseConfig,
6
+ {
7
+ files: ['**/*.json'],
8
+ rules: {
9
+ '@nx/dependency-checks': [
10
+ 'error',
11
+ {
12
+ ignoredFiles: ['{projectRoot}/eslint.config.{js,cjs,mjs}'],
13
+ },
14
+ ],
15
+ },
16
+ languageOptions: {
17
+ parser: await import('jsonc-eslint-parser'),
18
+ },
19
+ },
20
+ ...nx.configs['flat/angular'],
21
+ ...nx.configs['flat/angular-template'],
22
+ {
23
+ files: ['**/*.ts'],
24
+ rules: {
25
+ '@angular-eslint/directive-selector': [
26
+ 'error',
27
+ {
28
+ type: 'attribute',
29
+ prefix: 'lib',
30
+ style: 'camelCase',
31
+ },
32
+ ],
33
+ '@angular-eslint/component-selector': [
34
+ 'error',
35
+ {
36
+ type: 'element',
37
+ prefix: 'lib',
38
+ style: 'kebab-case',
39
+ },
40
+ ],
41
+ },
42
+ },
43
+ {
44
+ files: ['**/*.html'],
45
+ // Override or add rules here
46
+ rules: {},
47
+ },
48
+ ];
@@ -0,0 +1,21 @@
1
+ export default {
2
+ displayName: 'ngx-tailwind-flex-ui',
3
+ preset: '../../jest.preset.js',
4
+ setupFilesAfterEnv: ['<rootDir>/src/test-setup.ts'],
5
+ coverageDirectory: '../../coverage/libs/ngx-tailwind-flex-ui',
6
+ transform: {
7
+ '^.+\\.(ts|mjs|js|html)$': [
8
+ 'jest-preset-angular',
9
+ {
10
+ tsconfig: '<rootDir>/tsconfig.spec.json',
11
+ stringifyContentPathRegex: '\\.(html|svg)$',
12
+ },
13
+ ],
14
+ },
15
+ transformIgnorePatterns: ['node_modules/(?!.*\\.mjs$)'],
16
+ snapshotSerializers: [
17
+ 'jest-preset-angular/build/serializers/no-ng-attributes',
18
+ 'jest-preset-angular/build/serializers/ng-snapshot',
19
+ 'jest-preset-angular/build/serializers/html-comment',
20
+ ],
21
+ };
@@ -0,0 +1,7 @@
1
+ {
2
+ "$schema": "../../node_modules/ng-packagr/ng-package.schema.json",
3
+ "dest": "../../dist/libs/ngx-tailwind-flex-ui",
4
+ "lib": {
5
+ "entryFile": "src/index.ts"
6
+ }
7
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "name": "@ngx-tailwind-flex-ui",
3
+ "version": "0.0.1",
4
+ "peerDependencies": {
5
+ "@angular/common": "^19.1.0",
6
+ "@angular/core": "^19.1.0"
7
+ },
8
+ "sideEffects": false
9
+ }
@@ -0,0 +1,90 @@
1
+ {
2
+ "name": "ngx-tailwind-flex-ui",
3
+ "$schema": "../../node_modules/nx/schemas/project-schema.json",
4
+ "sourceRoot": "libs/ngx-tailwind-flex-ui/src",
5
+ "prefix": "lib",
6
+ "projectType": "library",
7
+ "tags": [],
8
+ "targets": {
9
+ "build": {
10
+ "executor": "@nx/angular:package",
11
+ "outputs": ["{workspaceRoot}/dist/{projectRoot}"],
12
+ "options": {
13
+ "project": "libs/ngx-tailwind-flex-ui/ng-package.json"
14
+ },
15
+ "configurations": {
16
+ "production": {
17
+ "tsConfig": "libs/ngx-tailwind-flex-ui/tsconfig.lib.prod.json"
18
+ },
19
+ "development": {
20
+ "tsConfig": "libs/ngx-tailwind-flex-ui/tsconfig.lib.json"
21
+ }
22
+ },
23
+ "defaultConfiguration": "production"
24
+ },
25
+ "test": {
26
+ "executor": "@nx/jest:jest",
27
+ "outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
28
+ "options": {
29
+ "jestConfig": "libs/ngx-tailwind-flex-ui/jest.config.ts"
30
+ }
31
+ },
32
+ "lint": {
33
+ "executor": "@nx/eslint:lint"
34
+ },
35
+ "storybook": {
36
+ "executor": "@storybook/angular:start-storybook",
37
+ "options": {
38
+ "port": 4400,
39
+ "configDir": "libs/ngx-tailwind-flex-ui/.storybook",
40
+ "browserTarget": "ngx-tailwind-flex-ui:build-storybook",
41
+ "compodoc": true,
42
+ "compodocArgs": ["-e", "json", "-d", "libs/ngx-tailwind-flex-ui"],
43
+ "styles": ["libs/ngx-tailwind-flex-ui/src/styles.scss"]
44
+ },
45
+ "configurations": {
46
+ "ci": {
47
+ "quiet": true
48
+ }
49
+ }
50
+ },
51
+ "build-storybook": {
52
+ "executor": "@storybook/angular:build-storybook",
53
+ "outputs": ["{options.outputDir}"],
54
+ "options": {
55
+ "outputDir": "dist/storybook/ngx-tailwind-flex-ui",
56
+ "configDir": "libs/ngx-tailwind-flex-ui/.storybook",
57
+ "browserTarget": "ngx-tailwind-flex-ui:build-storybook",
58
+ "compodoc": true,
59
+ "compodocArgs": ["-e", "json", "-d", "libs/ngx-tailwind-flex-ui"],
60
+ "styles": ["libs/ngx-tailwind-flex-ui/src/styles.scss"]
61
+
62
+ },
63
+ "configurations": {
64
+ "ci": {
65
+ "quiet": true
66
+ }
67
+ }
68
+ },
69
+ "test-storybook": {
70
+ "executor": "nx:run-commands",
71
+ "options": {
72
+ "command": "test-storybook -c libs/ngx-tailwind-flex-ui/.storybook --url=http://localhost:4400"
73
+ }
74
+ },
75
+ "static-storybook": {
76
+ "executor": "@nx/web:file-server",
77
+ "dependsOn": ["build-storybook"],
78
+ "options": {
79
+ "buildTarget": "ngx-tailwind-flex-ui:build-storybook",
80
+ "staticFilePath": "dist/storybook/ngx-tailwind-flex-ui",
81
+ "spa": true
82
+ },
83
+ "configurations": {
84
+ "ci": {
85
+ "buildTarget": "ngx-tailwind-flex-ui:build-storybook:ci"
86
+ }
87
+ }
88
+ }
89
+ }
90
+ }
@@ -0,0 +1 @@
1
+ export * from './lib/button/button.component';
@@ -0,0 +1,3 @@
1
+ <button [disabled]="disabled">
2
+ <ng-content></ng-content>
3
+ </button>
@@ -0,0 +1,21 @@
1
+ import { ComponentFixture, TestBed } from '@angular/core/testing';
2
+ import { ButtonComponent } from './button.component';
3
+
4
+ describe('ButtonComponent', () => {
5
+ let component: ButtonComponent;
6
+ let fixture: ComponentFixture<ButtonComponent>;
7
+
8
+ beforeEach(async () => {
9
+ await TestBed.configureTestingModule({
10
+ imports: [ButtonComponent],
11
+ }).compileComponents();
12
+
13
+ fixture = TestBed.createComponent(ButtonComponent);
14
+ component = fixture.componentInstance;
15
+ fixture.detectChanges();
16
+ });
17
+
18
+ it('should create', () => {
19
+ expect(component).toBeTruthy();
20
+ });
21
+ });