@allsorter/ui-components 0.0.330 → 0.0.333

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/README.md +40 -73
  2. package/fesm2022/allsorter-ui-components.mjs +329 -0
  3. package/fesm2022/allsorter-ui-components.mjs.map +1 -0
  4. package/index.d.ts +5 -0
  5. package/lib/allsorter-lib.component.d.ts +5 -0
  6. package/lib/allsorter-lib.service.d.ts +6 -0
  7. package/lib/button/button.component.d.ts +46 -0
  8. package/lib/button/button.module.d.ts +13 -0
  9. package/lib/input/input.component.d.ts +34 -0
  10. package/lib/input/input.module.d.ts +8 -0
  11. package/package.json +16 -57
  12. package/{projects/allsorter-lib/src/public-api.ts → public-api.d.ts} +0 -4
  13. package/.editorconfig +0 -16
  14. package/.gitignore copy +0 -44
  15. package/.storybook/main.ts +0 -21
  16. package/.storybook/preview.ts +0 -17
  17. package/.storybook/tsconfig.doc.json +0 -10
  18. package/.storybook/tsconfig.json +0 -11
  19. package/.storybook/typings.d.ts +0 -4
  20. package/.vscode/settings.json +0 -1
  21. package/LICENSE +0 -21
  22. package/angular.json +0 -135
  23. package/bitbucket-pipelines.yml +0 -108
  24. package/documentation.json +0 -1604
  25. package/ng-package.json +0 -7
  26. package/projects/allsorter-lib/.storybook/main.js +0 -15
  27. package/projects/allsorter-lib/README.md +0 -63
  28. package/projects/allsorter-lib/ng-package.json +0 -7
  29. package/projects/allsorter-lib/package.json +0 -12
  30. package/projects/allsorter-lib/src/lib/allsorter-lib.component.spec.ts +0 -23
  31. package/projects/allsorter-lib/src/lib/allsorter-lib.component.ts +0 -15
  32. package/projects/allsorter-lib/src/lib/allsorter-lib.service.spec.ts +0 -16
  33. package/projects/allsorter-lib/src/lib/allsorter-lib.service.ts +0 -9
  34. package/projects/allsorter-lib/src/lib/button/button.component.html +0 -116
  35. package/projects/allsorter-lib/src/lib/button/button.component.scss +0 -466
  36. package/projects/allsorter-lib/src/lib/button/button.component.spec.ts +0 -23
  37. package/projects/allsorter-lib/src/lib/button/button.component.ts +0 -105
  38. package/projects/allsorter-lib/src/lib/button/button.module.ts +0 -23
  39. package/projects/allsorter-lib/src/lib/button/stories/button-gallery.stories.ts +0 -155
  40. package/projects/allsorter-lib/src/lib/button/stories/button-playground.stories.ts +0 -63
  41. package/projects/allsorter-lib/src/lib/input/input.component.css +0 -58
  42. package/projects/allsorter-lib/src/lib/input/input.component.html +0 -27
  43. package/projects/allsorter-lib/src/lib/input/input.component.spec.ts +0 -60
  44. package/projects/allsorter-lib/src/lib/input/input.component.ts +0 -92
  45. package/projects/allsorter-lib/src/lib/input/input.module.ts +0 -9
  46. package/projects/allsorter-lib/src/lib/input/stories/input-gallery.stories.ts +0 -124
  47. package/projects/allsorter-lib/src/lib/input/stories/input-playground.stories.ts +0 -135
  48. package/projects/allsorter-lib/src/lib/styles/typography-classes.scss +0 -122
  49. package/projects/allsorter-lib/tsconfig.lib.json +0 -15
  50. package/projects/allsorter-lib/tsconfig.lib.prod.json +0 -11
  51. package/projects/allsorter-lib/tsconfig.spec.json +0 -15
  52. package/src/app/app.component.css +0 -0
  53. package/src/app/app.component.html +0 -328
  54. package/src/app/app.component.spec.ts +0 -31
  55. package/src/app/app.component.ts +0 -11
  56. package/src/app/app.module.ts +0 -16
  57. package/src/assets/.gitkeep +0 -0
  58. package/src/assets/font/OpenSans-Light-webfont.eot +0 -0
  59. package/src/assets/font/OpenSans-Light-webfont.svg +0 -252
  60. package/src/assets/font/OpenSans-Light-webfont.ttf +0 -0
  61. package/src/assets/font/OpenSans-Light-webfont.woff +0 -0
  62. package/src/assets/font/OpenSans-Regular-webfont.eot +0 -0
  63. package/src/assets/font/OpenSans-Regular-webfont.svg +0 -252
  64. package/src/assets/font/OpenSans-Regular-webfont.ttf +0 -0
  65. package/src/assets/font/OpenSans-Regular-webfont.woff +0 -0
  66. package/src/assets/icon/percolate.eot +0 -0
  67. package/src/assets/icon/percolate.svg +0 -139
  68. package/src/assets/icon/percolate.ttf +0 -0
  69. package/src/assets/icon/percolate.woff +0 -0
  70. package/src/environments/environment.prod.ts +0 -3
  71. package/src/environments/environment.ts +0 -16
  72. package/src/favicon.ico +0 -0
  73. package/src/index.html +0 -15
  74. package/src/main.ts +0 -7
  75. package/src/polyfills.ts +0 -63
  76. package/src/stories/.eslintrc.json +0 -8
  77. package/src/stories/Configure.mdx +0 -369
  78. package/src/stories/assets/accessibility.png +0 -0
  79. package/src/stories/assets/accessibility.svg +0 -5
  80. package/src/stories/assets/addon-library.png +0 -0
  81. package/src/stories/assets/assets.png +0 -0
  82. package/src/stories/assets/avif-test-image.avif +0 -0
  83. package/src/stories/assets/context.png +0 -0
  84. package/src/stories/assets/discord.svg +0 -15
  85. package/src/stories/assets/docs.png +0 -0
  86. package/src/stories/assets/figma-plugin.png +0 -0
  87. package/src/stories/assets/github.svg +0 -3
  88. package/src/stories/assets/share.png +0 -0
  89. package/src/stories/assets/styling.png +0 -0
  90. package/src/stories/assets/testing.png +0 -0
  91. package/src/stories/assets/theming.png +0 -0
  92. package/src/stories/assets/tutorials.svg +0 -12
  93. package/src/stories/assets/youtube.svg +0 -4
  94. package/src/styles.css +0 -463
  95. package/tsconfig.app.json +0 -10
  96. package/tsconfig.json +0 -34
  97. package/tsconfig.spec.json +0 -10
@@ -1,1604 +0,0 @@
1
- {
2
- "pipes": [],
3
- "interfaces": [],
4
- "injectables": [
5
- {
6
- "name": "AllsorterLibService",
7
- "id": "injectable-AllsorterLibService-501f971c26600eed2bb6ef7e7c841db5a85088f33cc3075c403799f6718e3416b8a175b29933aba7fd3985a5be1c254eca05251e62806c4ca76cae2c439d7ba7",
8
- "file": "projects/allsorter-lib/src/lib/allsorter-lib.service.ts",
9
- "properties": [],
10
- "methods": [],
11
- "deprecated": false,
12
- "deprecationMessage": "",
13
- "description": "",
14
- "rawdescription": "\n",
15
- "sourceCode": "import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AllsorterLibService {\n\n constructor() { }\n}\n",
16
- "constructorObj": {
17
- "name": "constructor",
18
- "description": "",
19
- "deprecated": false,
20
- "deprecationMessage": "",
21
- "args": [],
22
- "line": 6
23
- },
24
- "extends": [],
25
- "type": "injectable"
26
- }
27
- ],
28
- "guards": [],
29
- "interceptors": [],
30
- "classes": [],
31
- "directives": [],
32
- "components": [
33
- {
34
- "name": "AllsorterLibComponent",
35
- "id": "component-AllsorterLibComponent-97b338ab61f97d65ef635f2bdaf3bb50eb3bc8f12dfa1173b0e08a66802c464cb47df004f6766a5ab68b9e922167c2587ef98e1ade5f9cc4002fc98223c9b1f7",
36
- "file": "projects/allsorter-lib/src/lib/allsorter-lib.component.ts",
37
- "encapsulation": [],
38
- "entryComponents": [],
39
- "inputs": [],
40
- "outputs": [],
41
- "providers": [],
42
- "selector": "lib-allsorter-lib",
43
- "styleUrls": [],
44
- "styles": [
45
- ""
46
- ],
47
- "template": "<p>\n allsorter-lib works!\n</p>\n",
48
- "templateUrl": [],
49
- "viewProviders": [],
50
- "hostDirectives": [],
51
- "inputsClass": [],
52
- "outputsClass": [],
53
- "propertiesClass": [],
54
- "methodsClass": [],
55
- "deprecated": false,
56
- "deprecationMessage": "",
57
- "hostBindings": [],
58
- "hostListeners": [],
59
- "standalone": false,
60
- "imports": [],
61
- "description": "",
62
- "rawdescription": "\n",
63
- "type": "component",
64
- "sourceCode": "import { Component } from '@angular/core';\n\n@Component({\n selector: 'lib-allsorter-lib',\n imports: [],\n template: `\n <p>\n allsorter-lib works!\n </p>\n `,\n styles: ``\n})\nexport class AllsorterLibComponent {\n\n}\n",
65
- "assetsDirs": [],
66
- "styleUrlsData": "",
67
- "stylesData": "\n",
68
- "extends": []
69
- },
70
- {
71
- "name": "AppComponent",
72
- "id": "component-AppComponent-a7aea3f74502fe342ed545942aaddea376f531209a0e06c0e5cc330db64f8fb6b0b15dba35cc9c380ae8f514c7ca32fc545d9e36e392545cc209919b86174236",
73
- "file": "src/app/app.component.ts",
74
- "encapsulation": [],
75
- "entryComponents": [],
76
- "inputs": [],
77
- "outputs": [],
78
- "providers": [],
79
- "selector": "app-root",
80
- "styleUrls": [
81
- "./app.component.css"
82
- ],
83
- "styles": [],
84
- "templateUrl": [
85
- "./app.component.html"
86
- ],
87
- "viewProviders": [],
88
- "hostDirectives": [],
89
- "inputsClass": [],
90
- "outputsClass": [],
91
- "propertiesClass": [
92
- {
93
- "name": "title",
94
- "defaultValue": "'allsorter'",
95
- "deprecated": false,
96
- "deprecationMessage": "",
97
- "type": "string",
98
- "indexKey": "",
99
- "optional": false,
100
- "description": "",
101
- "line": 10
102
- }
103
- ],
104
- "methodsClass": [],
105
- "deprecated": false,
106
- "deprecationMessage": "",
107
- "hostBindings": [],
108
- "hostListeners": [],
109
- "standalone": false,
110
- "imports": [],
111
- "description": "",
112
- "rawdescription": "\n",
113
- "type": "component",
114
- "sourceCode": "import { Component } from '@angular/core';\n\n@Component({\n selector: 'app-root',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.css'],\n standalone: false\n})\nexport class AppComponent {\n title = 'allsorter';\n}\n",
115
- "assetsDirs": [],
116
- "styleUrlsData": [
117
- {
118
- "data": "",
119
- "styleUrl": "./app.component.css"
120
- }
121
- ],
122
- "stylesData": "",
123
- "extends": [],
124
- "templateData": "<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -->\n<!-- * * * * * * * * * * * The content below * * * * * * * * * * * -->\n<!-- * * * * * * * * * * is only a placeholder * * * * * * * * * * -->\n<!-- * * * * * * * * * * and can be replaced. * * * * * * * * * * -->\n<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -->\n<!-- * * * * * * * * * Delete the template below * * * * * * * * * -->\n<!-- * * * * * * * to get started with your project! * * * * * * * -->\n<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -->\n\n<style>\n :host {\n --bright-blue: oklch(51.01% 0.274 263.83);\n --electric-violet: oklch(53.18% 0.28 296.97);\n --french-violet: oklch(47.66% 0.246 305.88);\n --vivid-pink: oklch(69.02% 0.277 332.77);\n --hot-red: oklch(61.42% 0.238 15.34);\n --orange-red: oklch(63.32% 0.24 31.68);\n\n --gray-900: oklch(19.37% 0.006 300.98);\n --gray-700: oklch(36.98% 0.014 302.71);\n --gray-400: oklch(70.9% 0.015 304.04);\n\n --red-to-pink-to-purple-vertical-gradient: linear-gradient(\n 180deg,\n var(--orange-red) 0%,\n var(--vivid-pink) 50%,\n var(--electric-violet) 100%\n );\n\n --red-to-pink-to-purple-horizontal-gradient: linear-gradient(\n 90deg,\n var(--orange-red) 0%,\n var(--vivid-pink) 50%,\n var(--electric-violet) 100%\n );\n\n --pill-accent: var(--bright-blue);\n\n font-family: \"Inter\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto,\n Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\",\n \"Segoe UI Symbol\";\n box-sizing: border-box;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n }\n\n h1 {\n font-size: 3.125rem;\n color: var(--gray-900);\n font-weight: 500;\n line-height: 100%;\n letter-spacing: -0.125rem;\n margin: 0;\n font-family: \"Inter Tight\", -apple-system, BlinkMacSystemFont, \"Segoe UI\",\n Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\",\n \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n }\n\n p {\n margin: 0;\n color: var(--gray-700);\n }\n\n main {\n width: 100%;\n min-height: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 1rem;\n box-sizing: inherit;\n position: relative;\n }\n\n .angular-logo {\n max-width: 9.2rem;\n }\n\n .content {\n display: flex;\n justify-content: space-around;\n width: 100%;\n max-width: 700px;\n margin-bottom: 3rem;\n }\n\n .content h1 {\n margin-top: 1.75rem;\n }\n\n .content p {\n margin-top: 1.5rem;\n }\n\n .divider {\n width: 1px;\n background: var(--red-to-pink-to-purple-vertical-gradient);\n margin-inline: 0.5rem;\n }\n\n .pill-group {\n display: flex;\n flex-direction: column;\n align-items: start;\n flex-wrap: wrap;\n gap: 1.25rem;\n }\n\n .pill {\n display: flex;\n align-items: center;\n --pill-accent: var(--bright-blue);\n background: color-mix(in srgb, var(--pill-accent) 5%, transparent);\n color: var(--pill-accent);\n padding-inline: 0.75rem;\n padding-block: 0.375rem;\n border-radius: 2.75rem;\n border: 0;\n transition: background 0.3s ease;\n font-family: var(--inter-font);\n font-size: 0.875rem;\n font-style: normal;\n font-weight: 500;\n line-height: 1.4rem;\n letter-spacing: -0.00875rem;\n text-decoration: none;\n }\n\n .pill:hover {\n background: color-mix(in srgb, var(--pill-accent) 15%, transparent);\n }\n\n .pill-group .pill:nth-child(6n + 1) {\n --pill-accent: var(--bright-blue);\n }\n .pill-group .pill:nth-child(6n + 2) {\n --pill-accent: var(--french-violet);\n }\n .pill-group .pill:nth-child(6n + 3),\n .pill-group .pill:nth-child(6n + 4),\n .pill-group .pill:nth-child(6n + 5) {\n --pill-accent: var(--hot-red);\n }\n\n .pill-group svg {\n margin-inline-start: 0.25rem;\n }\n\n .social-links {\n display: flex;\n align-items: center;\n gap: 0.73rem;\n margin-top: 1.5rem;\n }\n\n .social-links path {\n transition: fill 0.3s ease;\n fill: var(--gray-400);\n }\n\n .social-links a:hover svg path {\n fill: var(--gray-900);\n }\n\n @media screen and (max-width: 650px) {\n .content {\n flex-direction: column;\n width: max-content;\n }\n\n .divider {\n height: 1px;\n width: 100%;\n background: var(--red-to-pink-to-purple-horizontal-gradient);\n margin-block: 1.5rem;\n }\n }\n</style>\n\n<main class=\"main\">\n <div class=\"content\">\n <div class=\"left-side\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 982 239\"\n fill=\"none\"\n class=\"angular-logo\"\n >\n <g clip-path=\"url(#a)\">\n <path\n fill=\"url(#b)\"\n d=\"M388.676 191.625h30.849L363.31 31.828h-35.758l-56.215 159.797h30.848l13.174-39.356h60.061l13.256 39.356Zm-65.461-62.675 21.602-64.311h1.227l21.602 64.311h-44.431Zm126.831-7.527v70.202h-28.23V71.839h27.002v20.374h1.392c2.782-6.71 7.2-12.028 13.255-15.956 6.056-3.927 13.584-5.89 22.503-5.89 8.264 0 15.465 1.8 21.684 5.318 6.137 3.518 10.964 8.673 14.319 15.382 3.437 6.71 5.074 14.81 4.992 24.383v76.175h-28.23v-71.92c0-8.019-2.046-14.237-6.219-18.819-4.173-4.5-9.819-6.791-17.102-6.791-4.91 0-9.328 1.063-13.174 3.272-3.846 2.128-6.792 5.237-9.001 9.328-2.046 4.009-3.191 8.918-3.191 14.728ZM589.233 239c-10.147 0-18.82-1.391-26.103-4.091-7.282-2.7-13.092-6.382-17.511-10.964-4.418-4.582-7.528-9.655-9.164-15.219l25.448-6.136c1.145 2.372 2.782 4.663 4.991 6.954 2.209 2.291 5.155 4.255 8.837 5.81 3.683 1.554 8.428 2.291 14.074 2.291 8.019 0 14.647-1.964 19.884-5.81 5.237-3.845 7.856-10.227 7.856-19.064v-22.665h-1.391c-1.473 2.946-3.601 5.892-6.383 9.001-2.782 3.109-6.464 5.645-10.965 7.691-4.582 2.046-10.228 3.109-17.101 3.109-9.165 0-17.511-2.209-25.039-6.545-7.446-4.337-13.42-10.883-17.757-19.474-4.418-8.673-6.628-19.473-6.628-32.565 0-13.091 2.21-24.301 6.628-33.383 4.419-9.082 10.311-15.955 17.839-20.7 7.528-4.746 15.874-7.037 25.039-7.037 7.037 0 12.846 1.145 17.347 3.518 4.582 2.373 8.182 5.236 10.883 8.51 2.7 3.272 4.746 6.382 6.137 9.327h1.554v-19.8h27.821v121.749c0 10.228-2.454 18.737-7.364 25.447-4.91 6.709-11.538 11.7-20.048 15.055-8.509 3.355-18.165 4.991-28.884 4.991Zm.245-71.266c5.974 0 11.047-1.473 15.302-4.337 4.173-2.945 7.446-7.118 9.573-12.519 2.21-5.482 3.274-12.027 3.274-19.637 0-7.609-1.064-14.155-3.274-19.8-2.127-5.646-5.318-10.064-9.491-13.255-4.174-3.11-9.329-4.746-15.384-4.746s-11.537 1.636-15.792 4.91c-4.173 3.272-7.365 7.772-9.492 13.418-2.128 5.727-3.191 12.191-3.191 19.392 0 7.2 1.063 13.745 3.273 19.228 2.127 5.482 5.318 9.736 9.573 12.764 4.174 3.027 9.41 4.582 15.629 4.582Zm141.56-26.51V71.839h28.23v119.786h-27.412v-21.273h-1.227c-2.7 6.709-7.119 12.191-13.338 16.446-6.137 4.255-13.747 6.382-22.748 6.382-7.855 0-14.81-1.718-20.783-5.237-5.974-3.518-10.72-8.591-14.075-15.382-3.355-6.709-5.073-14.891-5.073-24.464V71.839h28.312v71.921c0 7.609 2.046 13.664 6.219 18.083 4.173 4.5 9.655 6.709 16.365 6.709 4.173 0 8.183-.982 12.111-3.028 3.927-2.045 7.118-5.072 9.655-9.082 2.537-4.091 3.764-9.164 3.764-15.218Zm65.707-109.395v159.796h-28.23V31.828h28.23Zm44.841 162.169c-7.61 0-14.402-1.391-20.457-4.091-6.055-2.7-10.883-6.791-14.32-12.109-3.518-5.319-5.237-11.946-5.237-19.801 0-6.791 1.228-12.355 3.765-16.773 2.536-4.419 5.891-7.937 10.228-10.637 4.337-2.618 9.164-4.664 14.647-6.055 5.4-1.391 11.046-2.373 16.856-3.027 7.037-.737 12.683-1.391 17.102-1.964 4.337-.573 7.528-1.555 9.574-2.782 1.963-1.309 3.027-3.273 3.027-5.973v-.491c0-5.891-1.718-10.391-5.237-13.664-3.518-3.191-8.51-4.828-15.056-4.828-6.955 0-12.356 1.473-16.447 4.5-4.009 3.028-6.71 6.546-8.183 10.719l-26.348-3.764c2.046-7.282 5.483-13.336 10.31-18.328 4.746-4.909 10.638-8.59 17.511-11.045 6.955-2.455 14.565-3.682 22.912-3.682 5.809 0 11.537.654 17.265 2.045s10.965 3.6 15.711 6.71c4.746 3.109 8.51 7.282 11.455 12.6 2.864 5.318 4.337 11.946 4.337 19.883v80.184h-27.166v-16.446h-.9c-1.719 3.355-4.092 6.464-7.201 9.328-3.109 2.864-6.955 5.237-11.619 6.955-4.828 1.718-10.229 2.536-16.529 2.536Zm7.364-20.701c5.646 0 10.556-1.145 14.729-3.354 4.173-2.291 7.364-5.237 9.655-9.001 2.292-3.763 3.355-7.854 3.355-12.273v-14.155c-.9.737-2.373 1.391-4.5 2.046-2.128.654-4.419 1.145-7.037 1.636-2.619.491-5.155.9-7.692 1.227-2.537.328-4.746.655-6.628.901-4.173.572-8.019 1.472-11.292 2.781-3.355 1.31-5.973 3.11-7.855 5.401-1.964 2.291-2.864 5.318-2.864 8.918 0 5.237 1.882 9.164 5.728 11.782 3.682 2.782 8.51 4.091 14.401 4.091Zm64.643 18.328V71.839h27.412v19.965h1.227c2.21-6.955 5.974-12.274 11.292-16.038 5.319-3.763 11.456-5.645 18.329-5.645 1.555 0 3.355.082 5.237.163 1.964.164 3.601.328 4.91.573v25.938c-1.227-.41-3.109-.819-5.646-1.146a58.814 58.814 0 0 0-7.446-.49c-5.155 0-9.738 1.145-13.829 3.354-4.091 2.209-7.282 5.236-9.655 9.164-2.373 3.927-3.519 8.427-3.519 13.5v70.448h-28.312ZM222.077 39.192l-8.019 125.923L137.387 0l84.69 39.192Zm-53.105 162.825-57.933 33.056-57.934-33.056 11.783-28.556h92.301l11.783 28.556ZM111.039 62.675l30.357 73.803H80.681l30.358-73.803ZM7.937 165.115 0 39.192 84.69 0 7.937 165.115Z\"\n />\n <path\n fill=\"url(#c)\"\n d=\"M388.676 191.625h30.849L363.31 31.828h-35.758l-56.215 159.797h30.848l13.174-39.356h60.061l13.256 39.356Zm-65.461-62.675 21.602-64.311h1.227l21.602 64.311h-44.431Zm126.831-7.527v70.202h-28.23V71.839h27.002v20.374h1.392c2.782-6.71 7.2-12.028 13.255-15.956 6.056-3.927 13.584-5.89 22.503-5.89 8.264 0 15.465 1.8 21.684 5.318 6.137 3.518 10.964 8.673 14.319 15.382 3.437 6.71 5.074 14.81 4.992 24.383v76.175h-28.23v-71.92c0-8.019-2.046-14.237-6.219-18.819-4.173-4.5-9.819-6.791-17.102-6.791-4.91 0-9.328 1.063-13.174 3.272-3.846 2.128-6.792 5.237-9.001 9.328-2.046 4.009-3.191 8.918-3.191 14.728ZM589.233 239c-10.147 0-18.82-1.391-26.103-4.091-7.282-2.7-13.092-6.382-17.511-10.964-4.418-4.582-7.528-9.655-9.164-15.219l25.448-6.136c1.145 2.372 2.782 4.663 4.991 6.954 2.209 2.291 5.155 4.255 8.837 5.81 3.683 1.554 8.428 2.291 14.074 2.291 8.019 0 14.647-1.964 19.884-5.81 5.237-3.845 7.856-10.227 7.856-19.064v-22.665h-1.391c-1.473 2.946-3.601 5.892-6.383 9.001-2.782 3.109-6.464 5.645-10.965 7.691-4.582 2.046-10.228 3.109-17.101 3.109-9.165 0-17.511-2.209-25.039-6.545-7.446-4.337-13.42-10.883-17.757-19.474-4.418-8.673-6.628-19.473-6.628-32.565 0-13.091 2.21-24.301 6.628-33.383 4.419-9.082 10.311-15.955 17.839-20.7 7.528-4.746 15.874-7.037 25.039-7.037 7.037 0 12.846 1.145 17.347 3.518 4.582 2.373 8.182 5.236 10.883 8.51 2.7 3.272 4.746 6.382 6.137 9.327h1.554v-19.8h27.821v121.749c0 10.228-2.454 18.737-7.364 25.447-4.91 6.709-11.538 11.7-20.048 15.055-8.509 3.355-18.165 4.991-28.884 4.991Zm.245-71.266c5.974 0 11.047-1.473 15.302-4.337 4.173-2.945 7.446-7.118 9.573-12.519 2.21-5.482 3.274-12.027 3.274-19.637 0-7.609-1.064-14.155-3.274-19.8-2.127-5.646-5.318-10.064-9.491-13.255-4.174-3.11-9.329-4.746-15.384-4.746s-11.537 1.636-15.792 4.91c-4.173 3.272-7.365 7.772-9.492 13.418-2.128 5.727-3.191 12.191-3.191 19.392 0 7.2 1.063 13.745 3.273 19.228 2.127 5.482 5.318 9.736 9.573 12.764 4.174 3.027 9.41 4.582 15.629 4.582Zm141.56-26.51V71.839h28.23v119.786h-27.412v-21.273h-1.227c-2.7 6.709-7.119 12.191-13.338 16.446-6.137 4.255-13.747 6.382-22.748 6.382-7.855 0-14.81-1.718-20.783-5.237-5.974-3.518-10.72-8.591-14.075-15.382-3.355-6.709-5.073-14.891-5.073-24.464V71.839h28.312v71.921c0 7.609 2.046 13.664 6.219 18.083 4.173 4.5 9.655 6.709 16.365 6.709 4.173 0 8.183-.982 12.111-3.028 3.927-2.045 7.118-5.072 9.655-9.082 2.537-4.091 3.764-9.164 3.764-15.218Zm65.707-109.395v159.796h-28.23V31.828h28.23Zm44.841 162.169c-7.61 0-14.402-1.391-20.457-4.091-6.055-2.7-10.883-6.791-14.32-12.109-3.518-5.319-5.237-11.946-5.237-19.801 0-6.791 1.228-12.355 3.765-16.773 2.536-4.419 5.891-7.937 10.228-10.637 4.337-2.618 9.164-4.664 14.647-6.055 5.4-1.391 11.046-2.373 16.856-3.027 7.037-.737 12.683-1.391 17.102-1.964 4.337-.573 7.528-1.555 9.574-2.782 1.963-1.309 3.027-3.273 3.027-5.973v-.491c0-5.891-1.718-10.391-5.237-13.664-3.518-3.191-8.51-4.828-15.056-4.828-6.955 0-12.356 1.473-16.447 4.5-4.009 3.028-6.71 6.546-8.183 10.719l-26.348-3.764c2.046-7.282 5.483-13.336 10.31-18.328 4.746-4.909 10.638-8.59 17.511-11.045 6.955-2.455 14.565-3.682 22.912-3.682 5.809 0 11.537.654 17.265 2.045s10.965 3.6 15.711 6.71c4.746 3.109 8.51 7.282 11.455 12.6 2.864 5.318 4.337 11.946 4.337 19.883v80.184h-27.166v-16.446h-.9c-1.719 3.355-4.092 6.464-7.201 9.328-3.109 2.864-6.955 5.237-11.619 6.955-4.828 1.718-10.229 2.536-16.529 2.536Zm7.364-20.701c5.646 0 10.556-1.145 14.729-3.354 4.173-2.291 7.364-5.237 9.655-9.001 2.292-3.763 3.355-7.854 3.355-12.273v-14.155c-.9.737-2.373 1.391-4.5 2.046-2.128.654-4.419 1.145-7.037 1.636-2.619.491-5.155.9-7.692 1.227-2.537.328-4.746.655-6.628.901-4.173.572-8.019 1.472-11.292 2.781-3.355 1.31-5.973 3.11-7.855 5.401-1.964 2.291-2.864 5.318-2.864 8.918 0 5.237 1.882 9.164 5.728 11.782 3.682 2.782 8.51 4.091 14.401 4.091Zm64.643 18.328V71.839h27.412v19.965h1.227c2.21-6.955 5.974-12.274 11.292-16.038 5.319-3.763 11.456-5.645 18.329-5.645 1.555 0 3.355.082 5.237.163 1.964.164 3.601.328 4.91.573v25.938c-1.227-.41-3.109-.819-5.646-1.146a58.814 58.814 0 0 0-7.446-.49c-5.155 0-9.738 1.145-13.829 3.354-4.091 2.209-7.282 5.236-9.655 9.164-2.373 3.927-3.519 8.427-3.519 13.5v70.448h-28.312ZM222.077 39.192l-8.019 125.923L137.387 0l84.69 39.192Zm-53.105 162.825-57.933 33.056-57.934-33.056 11.783-28.556h92.301l11.783 28.556ZM111.039 62.675l30.357 73.803H80.681l30.358-73.803ZM7.937 165.115 0 39.192 84.69 0 7.937 165.115Z\"\n />\n </g>\n <defs>\n <radialGradient\n id=\"c\"\n cx=\"0\"\n cy=\"0\"\n r=\"1\"\n gradientTransform=\"rotate(118.122 171.182 60.81) scale(205.794)\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stop-color=\"#FF41F8\" />\n <stop offset=\".707\" stop-color=\"#FF41F8\" stop-opacity=\".5\" />\n <stop offset=\"1\" stop-color=\"#FF41F8\" stop-opacity=\"0\" />\n </radialGradient>\n <linearGradient\n id=\"b\"\n x1=\"0\"\n x2=\"982\"\n y1=\"192\"\n y2=\"192\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stop-color=\"#F0060B\" />\n <stop offset=\"0\" stop-color=\"#F0070C\" />\n <stop offset=\".526\" stop-color=\"#CC26D5\" />\n <stop offset=\"1\" stop-color=\"#7702FF\" />\n </linearGradient>\n <clipPath id=\"a\"><path fill=\"#fff\" d=\"M0 0h982v239H0z\" /></clipPath>\n </defs>\n </svg>\n <h1>Hello, {{ title }}</h1>\n <p>Congratulations! Your app is running. 🎉</p>\n </div>\n <div class=\"divider\" role=\"separator\" aria-label=\"Divider\"></div>\n <div class=\"right-side\">\n <div class=\"pill-group\">\n @for (item of [ { title: 'Explore the Docs', link: 'https://angular.dev'\n }, { title: 'Learn with Tutorials', link:\n 'https://angular.dev/tutorials' }, { title: 'CLI Docs', link:\n 'https://angular.dev/tools/cli' }, { title: 'Angular Language Service',\n link: 'https://angular.dev/tools/language-service' }, { title: 'Angular\n DevTools', link: 'https://angular.dev/tools/devtools' }, ]; track\n item.title) {\n <a class=\"pill\" [href]=\"item.link\" target=\"_blank\" rel=\"noopener\">\n <span>{{ item.title }}</span>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n height=\"14\"\n viewBox=\"0 -960 960 960\"\n width=\"14\"\n fill=\"currentColor\"\n >\n <path\n d=\"M200-120q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h280v80H200v560h560v-280h80v280q0 33-23.5 56.5T760-120H200Zm188-212-56-56 372-372H560v-80h280v280h-80v-144L388-332Z\"\n />\n </svg>\n </a>\n }\n </div>\n <div class=\"social-links\">\n <a\n href=\"https://github.com/angular/angular\"\n aria-label=\"Github\"\n target=\"_blank\"\n rel=\"noopener\"\n >\n <svg\n width=\"25\"\n height=\"24\"\n viewBox=\"0 0 25 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n alt=\"Github\"\n >\n <path\n d=\"M12.3047 0C5.50634 0 0 5.50942 0 12.3047C0 17.7423 3.52529 22.3535 8.41332 23.9787C9.02856 24.0946 9.25414 23.7142 9.25414 23.3871C9.25414 23.0949 9.24389 22.3207 9.23876 21.2953C5.81601 22.0377 5.09414 19.6444 5.09414 19.6444C4.53427 18.2243 3.72524 17.8449 3.72524 17.8449C2.61064 17.082 3.81137 17.0973 3.81137 17.0973C5.04697 17.1835 5.69604 18.3647 5.69604 18.3647C6.79321 20.2463 8.57636 19.7029 9.27978 19.3881C9.39052 18.5924 9.70736 18.0499 10.0591 17.7423C7.32641 17.4347 4.45429 16.3765 4.45429 11.6618C4.45429 10.3185 4.9311 9.22133 5.72065 8.36C5.58222 8.04931 5.16694 6.79833 5.82831 5.10337C5.82831 5.10337 6.85883 4.77319 9.2121 6.36459C10.1965 6.09082 11.2424 5.95546 12.2883 5.94931C13.3342 5.95546 14.3801 6.09082 15.3644 6.36459C17.7023 4.77319 18.7328 5.10337 18.7328 5.10337C19.3942 6.79833 18.9789 8.04931 18.8559 8.36C19.6403 9.22133 20.1171 10.3185 20.1171 11.6618C20.1171 16.3888 17.2409 17.4296 14.5031 17.7321C14.9338 18.1012 15.3337 18.8559 15.3337 20.0084C15.3337 21.6552 15.3183 22.978 15.3183 23.3779C15.3183 23.7009 15.5336 24.0854 16.1642 23.9623C21.0871 22.3484 24.6094 17.7341 24.6094 12.3047C24.6094 5.50942 19.0999 0 12.3047 0Z\"\n />\n </svg>\n </a>\n <a\n href=\"https://twitter.com/angular\"\n aria-label=\"Twitter\"\n target=\"_blank\"\n rel=\"noopener\"\n >\n <svg\n width=\"25\"\n height=\"20\"\n viewBox=\"0 0 25 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n alt=\"Twitter\"\n >\n <path\n d=\"M8.04524 20C17.3335 20 22.4138 12.3047 22.4138 5.63144C22.4138 5.41287 22.4138 5.19529 22.399 4.97869C23.3874 4.26381 24.2405 3.37867 24.9185 2.3647C23.9969 2.77329 23.0192 3.04112 22.018 3.15923C23.0723 2.52818 23.8613 1.53552 24.2382 0.366057C23.2469 0.954335 22.1624 1.36889 21.0315 1.59182C20.2701 0.782212 19.2631 0.246107 18.1663 0.0664704C17.0695 -0.113166 15.9441 0.0736804 14.9642 0.598096C13.9843 1.12251 13.2046 1.95526 12.7457 2.96748C12.2868 3.9797 12.1742 5.11495 12.4255 6.19756C10.4178 6.09685 8.45366 5.57507 6.66064 4.66609C4.86763 3.75712 3.28579 2.48127 2.01781 0.921344C1.37203 2.03306 1.17424 3.34911 1.46472 4.60154C1.75519 5.85397 2.51208 6.9486 3.58128 7.66257C2.77759 7.63903 1.9914 7.42221 1.28924 7.03049V7.09449C1.28956 8.26041 1.69316 9.39034 2.4316 10.2926C3.17003 11.1949 4.19783 11.8139 5.34067 12.0448C4.59721 12.2476 3.81715 12.2772 3.06045 12.1315C3.38327 13.1348 4.01156 14.0122 4.85746 14.641C5.70337 15.2698 6.72461 15.6185 7.77842 15.6384C6.73139 16.4614 5.53237 17.0699 4.24995 17.4291C2.96753 17.7882 1.62687 17.891 0.304688 17.7316C2.61411 19.2136 5.30121 19.9997 8.04524 19.9961\"\n />\n </svg>\n </a>\n <a\n href=\"https://www.youtube.com/channel/UCbn1OgGei-DV7aSRo_HaAiw\"\n aria-label=\"Youtube\"\n target=\"_blank\"\n rel=\"noopener\"\n >\n <svg\n width=\"29\"\n height=\"20\"\n viewBox=\"0 0 29 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n alt=\"Youtube\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M27.4896 1.52422C27.9301 1.96749 28.2463 2.51866 28.4068 3.12258C29.0004 5.35161 29.0004 10 29.0004 10C29.0004 10 29.0004 14.6484 28.4068 16.8774C28.2463 17.4813 27.9301 18.0325 27.4896 18.4758C27.0492 18.9191 26.5 19.2389 25.8972 19.4032C23.6778 20 14.8068 20 14.8068 20C14.8068 20 5.93586 20 3.71651 19.4032C3.11363 19.2389 2.56449 18.9191 2.12405 18.4758C1.68361 18.0325 1.36732 17.4813 1.20683 16.8774C0.613281 14.6484 0.613281 10 0.613281 10C0.613281 10 0.613281 5.35161 1.20683 3.12258C1.36732 2.51866 1.68361 1.96749 2.12405 1.52422C2.56449 1.08095 3.11363 0.76113 3.71651 0.596774C5.93586 0 14.8068 0 14.8068 0C14.8068 0 23.6778 0 25.8972 0.596774C26.5 0.76113 27.0492 1.08095 27.4896 1.52422ZM19.3229 10L11.9036 5.77905V14.221L19.3229 10Z\"\n />\n </svg>\n </a>\n </div>\n </div>\n </div>\n</main>\n\n<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -->\n<!-- * * * * * * * * * * * The content above * * * * * * * * * * * * -->\n<!-- * * * * * * * * * * is only a placeholder * * * * * * * * * * * -->\n<!-- * * * * * * * * * * and can be replaced. * * * * * * * * * * * -->\n<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -->\n<!-- * * * * * * * * * * End of Placeholder * * * * * * * * * * * * -->\n<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -->\n"
125
- },
126
- {
127
- "name": "ButtonComponent",
128
- "id": "component-ButtonComponent-9c9529bc461c96abb36c41a88cc1f0aa63abff53ba4f283eac31116bd9a2aa563d1e51277b0fed568e4f4f0e2d701f2967c8f8c80ee60e36cee99111e945eec8",
129
- "file": "projects/allsorter-lib/src/lib/button/button.component.ts",
130
- "encapsulation": [],
131
- "entryComponents": [],
132
- "inputs": [],
133
- "outputs": [],
134
- "providers": [],
135
- "selector": "al-button",
136
- "styleUrls": [
137
- "./button.component.scss"
138
- ],
139
- "styles": [],
140
- "templateUrl": [
141
- "./button.component.html"
142
- ],
143
- "viewProviders": [],
144
- "hostDirectives": [],
145
- "inputsClass": [
146
- {
147
- "name": "arialabel",
148
- "defaultValue": "' '",
149
- "deprecated": false,
150
- "deprecationMessage": "",
151
- "line": 41,
152
- "type": "string | undefined",
153
- "decorators": []
154
- },
155
- {
156
- "name": "buttonType",
157
- "defaultValue": "'icon-label'",
158
- "deprecated": false,
159
- "deprecationMessage": "",
160
- "rawdescription": "\nVisual type of button: icon only circle, icon+label, two icons + label",
161
- "description": "<p>Visual type of button: icon only circle, icon+label, two icons + label</p>\n",
162
- "line": 56,
163
- "type": "\"icon-circle\" | \"icon-label\" | \"two-icon-label\" | \"dropdown\"",
164
- "decorators": []
165
- },
166
- {
167
- "name": "category",
168
- "deprecated": false,
169
- "deprecationMessage": "",
170
- "line": 38,
171
- "type": "string",
172
- "decorators": []
173
- },
174
- {
175
- "name": "color",
176
- "defaultValue": "'primary'",
177
- "deprecated": false,
178
- "deprecationMessage": "",
179
- "line": 51,
180
- "type": "\"primary\" | \"accent\" | \"warn\"",
181
- "decorators": []
182
- },
183
- {
184
- "name": "dropdownOptions",
185
- "defaultValue": "[]",
186
- "deprecated": false,
187
- "deprecationMessage": "",
188
- "rawdescription": "\nDropdown menu options, used when buttonType is 'dropdown'",
189
- "description": "<p>Dropdown menu options, used when buttonType is &#39;dropdown&#39;</p>\n",
190
- "line": 66,
191
- "type": "Array<literal type>",
192
- "decorators": []
193
- },
194
- {
195
- "name": "fontClass",
196
- "defaultValue": "''",
197
- "deprecated": false,
198
- "deprecationMessage": "",
199
- "rawdescription": "\nOptional typography class, e.g. 'font-display-large'",
200
- "description": "<p>Optional typography class, e.g. &#39;font-display-large&#39;</p>\n",
201
- "line": 59,
202
- "type": "string",
203
- "decorators": []
204
- },
205
- {
206
- "name": "iconOnly",
207
- "defaultValue": "false",
208
- "deprecated": false,
209
- "deprecationMessage": "",
210
- "line": 42,
211
- "type": "boolean",
212
- "decorators": []
213
- },
214
- {
215
- "name": "label",
216
- "defaultValue": "' '",
217
- "deprecated": false,
218
- "deprecationMessage": "",
219
- "line": 40,
220
- "type": "string | undefined",
221
- "decorators": []
222
- },
223
- {
224
- "name": "leftIcon",
225
- "defaultValue": "''",
226
- "deprecated": false,
227
- "deprecationMessage": "",
228
- "line": 43,
229
- "type": "string | null | undefined",
230
- "decorators": []
231
- },
232
- {
233
- "name": "outlined",
234
- "defaultValue": "false",
235
- "deprecated": false,
236
- "deprecationMessage": "",
237
- "rawdescription": "\nIf true, use outlined style for icons",
238
- "description": "<p>If true, use outlined style for icons</p>\n",
239
- "line": 50,
240
- "type": "boolean",
241
- "decorators": []
242
- },
243
- {
244
- "name": "rightIcon",
245
- "defaultValue": "''",
246
- "deprecated": false,
247
- "deprecationMessage": "",
248
- "line": 44,
249
- "type": "string | null | undefined",
250
- "decorators": []
251
- },
252
- {
253
- "name": "showLeftIcon",
254
- "defaultValue": "true",
255
- "deprecated": false,
256
- "deprecationMessage": "",
257
- "rawdescription": "\nShow/hide left icon (Storybook control)",
258
- "description": "<p>Show/hide left icon (Storybook control)</p>\n",
259
- "line": 46,
260
- "type": "boolean",
261
- "decorators": []
262
- },
263
- {
264
- "name": "showRightIcon",
265
- "defaultValue": "true",
266
- "deprecated": false,
267
- "deprecationMessage": "",
268
- "rawdescription": "\nShow/hide right icon (Storybook control)",
269
- "description": "<p>Show/hide right icon (Storybook control)</p>\n",
270
- "line": 48,
271
- "type": "boolean",
272
- "decorators": []
273
- },
274
- {
275
- "name": "size",
276
- "defaultValue": "'base'",
277
- "deprecated": false,
278
- "deprecationMessage": "",
279
- "rawdescription": "\nText size option for label and icons",
280
- "description": "<p>Text size option for label and icons</p>\n",
281
- "line": 53,
282
- "type": "\"header\" | \"xs\" | \"sm\" | \"base\" | \"l\" | \"xl\"",
283
- "decorators": []
284
- },
285
- {
286
- "name": "state",
287
- "defaultValue": "'default'",
288
- "deprecated": false,
289
- "deprecationMessage": "",
290
- "line": 37,
291
- "type": "\"default\" | \"hover\" | \"pressed\" | \"disabled\"",
292
- "decorators": []
293
- }
294
- ],
295
- "outputsClass": [
296
- {
297
- "name": "onClick",
298
- "defaultValue": "new EventEmitter<Event>()",
299
- "deprecated": false,
300
- "deprecationMessage": "",
301
- "line": 61,
302
- "type": "EventEmitter"
303
- },
304
- {
305
- "name": "onHover",
306
- "defaultValue": "new EventEmitter<Event>()",
307
- "deprecated": false,
308
- "deprecationMessage": "",
309
- "line": 62,
310
- "type": "EventEmitter"
311
- },
312
- {
313
- "name": "onMouseLeave",
314
- "defaultValue": "new EventEmitter<Event>()",
315
- "deprecated": false,
316
- "deprecationMessage": "",
317
- "line": 63,
318
- "type": "EventEmitter"
319
- },
320
- {
321
- "name": "optionSelect",
322
- "defaultValue": "new EventEmitter<any>()",
323
- "deprecated": false,
324
- "deprecationMessage": "",
325
- "rawdescription": "\nEmits the selected dropdown option's value",
326
- "description": "<p>Emits the selected dropdown option&#39;s value</p>\n",
327
- "line": 69,
328
- "type": "EventEmitter"
329
- }
330
- ],
331
- "propertiesClass": [
332
- {
333
- "name": "stateClasses",
334
- "defaultValue": "{\n default: 'btn-default',\n hover: 'btn-hover',\n pressed: 'btn-pressed',\n disabled: 'btn-disabled',\n }",
335
- "deprecated": false,
336
- "deprecationMessage": "",
337
- "type": "literal type",
338
- "indexKey": "",
339
- "optional": false,
340
- "description": "",
341
- "line": 99
342
- }
343
- ],
344
- "methodsClass": [
345
- {
346
- "name": "computeGap",
347
- "args": [],
348
- "optional": false,
349
- "returnType": "number",
350
- "typeParameters": [],
351
- "line": 75,
352
- "deprecated": false,
353
- "deprecationMessage": ""
354
- },
355
- {
356
- "name": "selectOption",
357
- "args": [
358
- {
359
- "name": "option",
360
- "type": "any",
361
- "deprecated": false,
362
- "deprecationMessage": ""
363
- }
364
- ],
365
- "optional": false,
366
- "returnType": "void",
367
- "typeParameters": [],
368
- "line": 71,
369
- "deprecated": false,
370
- "deprecationMessage": "",
371
- "jsdoctags": [
372
- {
373
- "name": "option",
374
- "type": "any",
375
- "deprecated": false,
376
- "deprecationMessage": "",
377
- "tagName": {
378
- "text": "param"
379
- }
380
- }
381
- ]
382
- }
383
- ],
384
- "deprecated": false,
385
- "deprecationMessage": "",
386
- "hostBindings": [],
387
- "hostListeners": [],
388
- "standalone": true,
389
- "imports": [
390
- {
391
- "name": "CommonModule",
392
- "type": "module"
393
- },
394
- {
395
- "name": "MatButtonModule",
396
- "type": "module"
397
- },
398
- {
399
- "name": "MatIconModule",
400
- "type": "module"
401
- },
402
- {
403
- "name": "MatMenuModule",
404
- "type": "module"
405
- }
406
- ],
407
- "description": "",
408
- "rawdescription": "\n",
409
- "type": "component",
410
- "sourceCode": "import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatMenuModule } from '@angular/material/menu';\n\n@Component({\n selector: 'al-button',\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.scss'],\n imports: [CommonModule, MatButtonModule, MatIconModule, MatMenuModule],\n standalone:true\n})\nexport class ButtonComponent {\n /**\n * Returns the typography class to apply. If the consumer passes `fontClass`,\n * that value wins. Otherwise we derive a sensible default based on `size`.\n */\n get effectiveFontClass(): string {\n if (this.fontClass) {\n return this.fontClass;\n }\n switch (this.size) {\n case 'xs':\n return 'font-body-small';\n case 'sm':\n case 'base':\n return 'font-body-medium';\n case 'l':\n case 'xl':\n case 'header':\n return 'font-body-large';\n default:\n return '';\n }\n }\n @Input() state: 'default' | 'hover' | 'pressed' | 'disabled' = 'default';\n @Input() category!: string;\n\n @Input() label: string | undefined = ' '; // Default label\n @Input() arialabel: string | undefined = ' '; // Default label\n @Input() iconOnly: boolean = false; // Toggle for icon-only button\n @Input() leftIcon: string | null | undefined = ''; // ✅ Default to null\n @Input() rightIcon: string | null | undefined = ''; // ✅ Default to null\n /** Show/hide left icon (Storybook control) */\n @Input() showLeftIcon: boolean = true;\n /** Show/hide right icon (Storybook control) */\n @Input() showRightIcon: boolean = true;\n /** If true, use outlined style for icons */\n @Input() outlined: boolean = false;\n @Input() color: 'primary' | 'accent' | 'warn' = 'primary';\n /** Text size option for label and icons */\n @Input() size: 'header' | 'xs' | 'sm' | 'base' | 'l' | 'xl' = 'base';\n\n /** Visual type of button: icon only circle, icon+label, two icons + label */\n @Input() buttonType: 'icon-circle' | 'icon-label' | 'two-icon-label' | 'dropdown' = 'icon-label';\n\n /** Optional typography class, e.g. 'font-display-large' */\n @Input() fontClass: string = '';\n\n @Output() onClick = new EventEmitter<Event>(); // Initialize\n @Output() onHover = new EventEmitter<Event>(); // Initialize\n @Output() onMouseLeave = new EventEmitter<Event>(); // Initialize\n\n /** Dropdown menu options, used when buttonType is 'dropdown' */\n @Input() dropdownOptions: Array<{ label: string; value?: any }> = [];\n\n /** Emits the selected dropdown option's value */\n @Output() optionSelect = new EventEmitter<any>();\n\n selectOption(option: any) {\n this.optionSelect.emit(option?.value ?? option);\n }\n\n computeGap(): number {\n // Header size uses a tighter 4px gap across all combinations\n if (this.size === 'header') {\n return 4;\n }\n const hasLabel = !!(this.label && this.label.trim()) && !this.iconOnly;\n const leftIconPresent = !!(this.leftIcon && this.leftIcon.trim());\n const rightIconPresent = !!(this.rightIcon && this.rightIcon.trim());\n const iconCount = (leftIconPresent ? 1 : 0) + (rightIconPresent ? 1 : 0);\n\n // 0 gap for purely icon-only buttons (≤1 icon and no label)\n if (!hasLabel && iconCount <= 1) {\n return 0;\n }\n\n // Tighter gap when we have two icons and a label (e.g., two-icon buttons)\n if (iconCount === 2 && !hasLabel) {\n return 4;\n }\n\n // Default gap\n return 8;\n }\n\n stateClasses: { [key: string]: string } = {\n default: 'btn-default',\n hover: 'btn-hover',\n pressed: 'btn-pressed',\n disabled: 'btn-disabled',\n };\n}\n",
411
- "assetsDirs": [],
412
- "styleUrlsData": [
413
- {
414
- "data": "@import url(\"https://fonts.googleapis.com/icon?family=Material+Icons|Material+Icons+Outlined\");\n@import \"../styles/typography-classes.scss\";\n \n.material-icons-outlined {\n font-family: 'Material Icons Outlined';\n font-weight: normal;\n font-style: normal;\n /* These two preserve the standard Material Icons sizing/ligatures */\n font-feature-settings: 'liga';\n font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24;\n /* everything else can stay at Angular’s defaults */\n/* Base Button Styling */\n}\n.mdc-button.btn {\n\n border-radius: 5px;\n display: flex;\n align-items: center;\n cursor: pointer;\n border: none;\n transition: background 0.2s, border 0.2s, transform 0.1s;\n\n min-width: auto !important;\n gap:8px;\n height:auto !important;\n}\n/* Button Categories primary*/ \n.mdc-button.btn-primary1 {\n background-color: #5473e8;\n color: white;\n}\n.mdc-button.btn-primary2 {\n background-color: #37c1ce;\n color: white;\n}\n.mdc-button.btn-secondary {\n background-color: #383B4A;\n color: white;\n}\n.mdc-button.btn-destructive {\n background-color: #E854A4;\n color: white;\n}\n.mdc-button.btn-gradient {\n background: linear-gradient(275deg, #5473E8 -36.22%, #37C1CE 100.04%);\n color: white;\n}\n\n/* Hover States */\n\n\n.mdc-button.btn-primary2:hover {\n background-color: #4bc7d3 !important;\n}\n\n.mdc-button.btn-primary2:active {\n background-color: #299da8 !important;\n}\n\n.mdc-button.btn-primary2:outlined {\n background-color: #fff;\n border-radius: 4px;\n border: 1px solid #37c1ce;\n}\n\n.mdc-button.btn-primary1:hover {\n background-color: #6581ea !important;\n}\n\n.mdc-button.btn-primary1:active {\n background-color: #1e46df !important;\n}\n\n.mdc-button.btn-primary1:outlined {\n background-color: #fff;\n border-radius: 4px;\n border: 1px solid #5473e8;\n}\n\n.mdc-button.btn-secondary:hover {\n background-color: #4B4F62 !important;\n }\n \n .mdc-button.btn-secondary:active {\n background-color: #252831 !important;\n }\n \n .mdc-button.btn-secondary:outlined {\n background-color: #fff;\n border-radius: 4px;\n border: 1px solid #383B4A;\n }\n\n\n .mdc-button.btn-destructive:hover {\n background-color: #EF87BF !important;\n }\n \n .mdc-button.btn-destructive:active {\n background-color: #E22A8E !important;\n }\n \n .mdc-button.btn-destructive:outlined {\n background-color: #fff;\n border-radius: 4px;\n border: 1px solid #E854A4;\n }\n\n .mdc-button.btn-gradient:hover {\n background: linear-gradient(275deg, #4A90E2 -36.22%, #2BBBAD 100.04%) !important;\n }\n \n .mdc-button.btn-gradient:active {\n background: linear-gradient(275deg, #42A5F5 -36.22%, #1E88E5 100.04%) !important;\n }\n\n \n\n\n/* Pressed States (pseudo-class for active) */\n\n\n/* Disabled State */\n.mdc-button.btn-disabled {\n border: none !important;\n background-color: #b0b0b0;\n color: #666;\n cursor: not-allowed;\n}\n\n/* Outlined State */\n.mdc-button.btn-outlined {\n background: transparent;\n border: 2px solid currentColor;\n}\n\n/* Category colours used by Storybook */\n.blue { background-color:#5473e8 !important; color:#fff; }\n.blue.btn-hover, .blue:hover { background-color:#6581ea !important; }\n.blue.btn-pressed, .blue:active { background-color:#1e46df !important; }\n\n.green { background-color:#37c1ce !important; color:#fff; }\n.green.btn-hover, .green:hover { background-color:#4bc7d3 !important; }\n.green.btn-pressed, .green:active { background-color:#299da8 !important; }\n\n.grey { background-color:#383B4A !important; color:#fff; }\n.grey.btn-hover, .grey:hover { background-color:#4B4F62 !important; }\n.grey.btn-pressed, .grey:active { background-color:#252831 !important; }\n\n.error { background-color:#E854A4 !important; color:#fff; }\n.error.btn-hover, .error:hover { background-color:#EF87BF !important; }\n.error.btn-pressed, .error:active { background-color:#E22A8E !important; }\n\n.gradient { background:linear-gradient(275deg, #5473E8 -36.22%, #37C1CE 100.04%); color:#fff; }\n.gradient.btn-hover, .gradient:hover { opacity:0.9; }\n.gradient.btn-pressed, .gradient:active { opacity:0.8; }\n\n\n/* Spacing between icon and label */\n.btn.custom-button > * + * {\n margin-left: 8px;\n}\n\n/* Fixed 20x20 icon size for label/two-icon buttons */\n.two-icon-label{\n padding:4px 12px !important;\n}\nbutton.two-icon-label .mat-icon {\n width: 20px !important;\n height: 20px !important;\n} \n\n\n/* etc. */\n@font-face {\n font-family: 'Material Icons';\n font-style: normal;\n font-weight: 400;\n src: url(https://fonts.gstatic.com/s/materialicons/v143/flUhRq6tzZclQEJ-Vdg-IuiaDsNcIhQ8tQ.woff2) format('woff2');\n}\n\n.material-icons {\n font-family: 'Material Icons';\n font-weight: normal;\n font-style: normal;\n font-size: 24px;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n display: inline-block;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-feature-settings: 'liga';\n -webkit-font-smoothing: antialiased;\n}\n\n.left-icon{\n order:0;\n}\n\n.right-icon{\n order:2;\n}\n\nmat-icon.mat-icon {\n margin: 0 !important;\n padding: 0 !important;\n}\n\n/* ------------------------------------------------------------------\n Size utility classes\n------------------------------------------------------------------ */\n\n\n\n/* New naming convention */\n.size-header { font-size: 20px; padding: 4px 12px !important; }\n.size-xs { font-size: 12px; padding: 8px 12px !important; }\n.size-sm { font-size: 14px; padding: 8px 12px !important; }\n.size-base { font-size: 14px; padding: 10px 20px !important; }\n.size-l { font-size: 16px; padding: 12px 20px !important; }\n.size-xl{ font-size: 16px; padding: 14px 24px !important; }\n/* Reuse .size-xl for xl */\n\n/* Icon sizes for new naming */\n.size-header .mat-icon { font-size:20px; }\n.size-xs .mat-icon { font-size:16px; }\n.size-sm .mat-icon, .size-base .mat-icon { font-size:16px; }\n.size-l .mat-icon, .size-xl .mat-icon { font-size:20px; }\n\n/* Adjust gap for header size */\n.btn.size-header { gap:4px !important; padding: 4px 12px !important;}\n\n/* --------------------------------------------------\n Dropdown menu custom styling\n-------------------------------------------------- */\n::ng-deep .custom-dropdown-menu.mat-mdc-menu-panel,\n::ng-deep .custom-dropdown-menu.mat-menu-panel {\n padding: 0; /* remove default padding */\n border-radius: 8px; /* rounded corners */\n box-shadow: 0 2px 6px rgba(0,0,0,0.15);\n border: 1px solid rgba(0,0,0,0.12);\n}\n::ng-deep .custom-dropdown-menu .mat-mdc-menu-content,\n::ng-deep .custom-dropdown-menu .mat-menu-content{\n padding: 0;\n}\n::ng-deep .custom-dropdown-menu .mat-mdc-menu-item,\n::ng-deep .custom-dropdown-menu .mat-menu-item{\n font-family: 'Roboto', sans-serif;\n font-size: 16px;\n line-height: 24px;\n height: 56px;\n padding: 16px 24px;\n color:#47515E;\n}\n::ng-deep .custom-dropdown-menu .mat-mdc-menu-item:hover,\n::ng-deep .custom-dropdown-menu .mat-menu-item:hover{\n background: #F5F6F7;\n}\n/* subtle divider between items */\n::ng-deep .custom-dropdown-menu .mat-mdc-menu-item + .mat-mdc-menu-item,\n::ng-deep .custom-dropdown-menu .mat-menu-item + .mat-menu-item{\n border-top: 1px solid #EAECEE;\n}\n\n/* Force white background on Angular Material menu panel */\n::ng-deep .mat-mdc-menu-panel,\n::ng-deep .mat-menu-panel,\n::ng-deep .mdc-menu-surface {\n background-color: #ffffff !important;\n --mdc-theme-surface: #ffffff !important;\n --mdc-menu-container-color: #ffffff !important;\n}\n::ng-deep .mat-mdc-menu-panel .mat-mdc-menu-content,\n::ng-deep .mat-menu-panel .mat-menu-content {\n background-color: #ffffff !important;\n}\n\n/* Ensure dropdown menu is above other elements */\n.cdk-overlay-pane{\n z-index:1000 !important;\n background:#fff !important;\n}\n::ng-deep .mat-mdc-menu-panel,\n::ng-deep .mat-menu-panel,\n::ng-deep .mdc-menu-surface,\n.cdk-overlay-pane .mat-mdc-menu-panel,\n.cdk-overlay-pane .mdc-menu-surface,\n.cdk-overlay-pane .mat-menu-panel{\n background-color:#ffffff !important;\n --mdc-theme-surface:#ffffff !important;\n --mdc-menu-container-color:#fff !important;\n}\n\n/* Make sure the Material menu panel itself is white (use ::ng-deep so rules pierce view encapsulation) */\n\n\n.mat-mdc-menu-panel,\n.mdc-menu-surface,\n.mat-menu-panel {\n --mdc-theme-surface: #ffffff !important; /* Material variable */\n background-color: #ffffff !important;\n}\n\n.cdk-overlay-pane .mat-mdc-menu-panel,\n.cdk-overlay-pane .mdc-menu-surface,\n.cdk-overlay-pane .mat-mdc-menu-panel { --mdc-menu-container-color:#fff !important; }\n\n.cdk-overlay-pane .mat-menu-panel,\n.cdk-overlay-pane .mat-mdc-menu-content,\n.cdk-overlay-pane .mat-menu-content {\n background: #fff !important;\n}\n\n\n/* Icon size helper */\n\n\n/* --------------------------------------------------\n Button types\n-------------------------------------------------- */\nbutton.icon-circle {\n width: auto !important;\n height: auto !important;\n border-radius: 50% !important;\n aspect-ratio: 1 / 1;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: 0 !important;\n min-width: 0 !important;\n justify-content: center;\n padding:6px !important;\n}\n.size-small.icon-circle { \n padding: 4px !important;\n }\n.size-medium.icon-circle { \n padding: 8px !important;\n}\n.size-base.icon-circle { \n padding: 10px !important;\n}\n.size-large.icon-circle { \n padding: 12px !important;\n}\n.size-xl.icon-circle { \n padding: 14px !important;\n}\n\n/* Circle button size overrides */\n.size-header.icon-circle { padding:4px !important; }\n.size-header.icon-circle .mat-icon { width:10px; height:10px; font-size:10px; }\n\n.size-xs.icon-circle { padding:4px !important; }\n.size-xs.icon-circle .mat-icon { font-size:12px; }\n\n.size-sm.icon-circle { padding:8px !important; }\n.size-sm.icon-circle .mat-icon { font-size:12px; }\n\n.size-base.icon-circle { padding:10px !important; }\n.size-base.icon-circle .mat-icon { font-size:14px; }\n\n.size-l.icon-circle { padding:12px !important; }\n.size-l.icon-circle .mat-icon { font-size:16px; }\n\n.size-xl.icon-circle { padding:14px !important; }\n.size-xl.icon-circle .mat-icon { font-size:16px; }\n\n/* icon-label and two-icon-label just rely on default flex behaviour */\n.icon-xs { \n /* width: 16px; height: 16px; */\n padding: 4px !important;\n }\n\n\n/* ------------------------------------------------------------------\n Color category classes (solid)\n------------------------------------------------------------------ */\n.mdc-button.blue { background-color: #5473E8; color: #fff; }\n.mdc-button.blue:hover { background-color: #6581EA; }\n.mdc-button.blue:active { background-color: #1E46DF; }\n\n.mdc-button.green { background-color: #37C1CE; color: #fff; }\n.mdc-button.green:hover { background-color: #4BC7D3; }\n.mdc-button.green:active { background-color: #299DA8; }\n\n.mdc-button.grey { background-color: #383B4A; color: #fff; }\n.mdc-button.grey:hover { background-color: #4B4F62; }\n.mdc-button.grey:active { background-color: #252831; }\n\n.mdc-button.error { background-color: #E854A4; color: #fff; }\n.mdc-button.error:hover { background-color: #EF87BF; }\n.mdc-button.error:active { background-color: #E22A8E; }\n\n.mdc-button.gradient {\n background: linear-gradient(275deg, #5473E8 -36.22%, #37C1CE 100.04%);\n color: #fff;\n}\n.mdc-button.gradient:hover {\n background: linear-gradient(0deg, rgba(250, 250, 253, 0.30) 0%, rgba(250, 250, 253, 0.30) 100%),\n linear-gradient(275deg, #2BBBAD 9.3%, #4A90E2 115.85%);\n}\n.mdc-button.gradient:active {\n background: linear-gradient(0deg, rgba(56, 59, 74, 0.50) 0%, rgba(56, 59, 74, 0.50) 100%),\n linear-gradient(275deg, #2BBBAD 9.3%, #4A90E2 115.85%);\n}\n\n.mdc-button.disabled,\n.mdc-button:disabled {\n background-color: #D1D3DB !important;\n color: #666 !important;\n cursor: not-allowed !important;\n}\n\n/* ------------------------------------------------------------------\n No-outline (outlined) variants\n------------------------------------------------------------------ */\n.mdc-button.blue-no-outline { background-color: #fff; color: #5473E8; border: 1px solid #5473E8; }\n.mdc-button.blue-no-outline:hover { background-color: #6581EA; color:#fff; }\n.mdc-button.blue-no-outline:active { background-color: #1E46DF; color:#fff; }\n\n.mdc-button.green-no-outline { background-color: #fff; color: #37C1CE; border: 1px solid #37C1CE; }\n.mdc-button.green-no-outline:hover { background-color: #4BC7D3; color:#fff; }\n.mdc-button.green-no-outline:active { background-color: #299DA8; color:#fff; }\n\n.mdc-button.grey-no-outline { background-color: #fff; color: #383B4A; border: 1px solid #383B4A; }\n.mdc-button.grey-no-outline:hover { background-color: #4B4F62; color:#fff; }\n.mdc-button.grey-no-outline:active { background-color: #252831; color:#fff; }\n\n.mdc-button.error-no-outline { background-color: #fff; color: #E854A4; border: 1px solid #E854A4; }\n.mdc-button.error-no-outline:hover { background-color: #EF87BF; color:#fff; }\n.mdc-button.error-no-outline:active { background-color: #E22A8E; color:#fff; }\n\n/*************Button Drop down design*********/\n::ng-deep .cdk-overlay-pane {\n border-radius: 6px !important;\n box-shadow: 0px 2px 6px rgba(0, 0, 0, 0.15) !important;\n}\n\n::ng-deep .mat-mdc-menu-panel {\n padding: 4px 0 !important;\n background-color: white !important;\n min-width: 180px !important;\n border-radius: 6px !important;\n box-shadow: none !important; /* handled by cdk-overlay-pane */\n}\n\n::ng-deep .mat-mdc-menu-item {\n font-family: 'Roboto', sans-serif;\n font-size: 14px;\n color: #333;\n padding: 12px 16px;\n border-radius: 0 !important;\n transition: background 0.2s ease-in-out;\n}\n\n::ng-deep .mat-mdc-menu-item:hover {\n background-color: #f5f5f5 !important;\n}\n\n.mat-mdc-unelevated-button>.mat-icon{\n line-height:18px !important\n}",
415
- "styleUrl": "./button.component.scss"
416
- }
417
- ],
418
- "stylesData": "",
419
- "extends": [],
420
- "accessors": {
421
- "effectiveFontClass": {
422
- "name": "effectiveFontClass",
423
- "getSignature": {
424
- "name": "effectiveFontClass",
425
- "type": "string",
426
- "returnType": "string",
427
- "line": 19,
428
- "rawdescription": "\n\nReturns the typography class to apply. If the consumer passes `fontClass`,\nthat value wins. Otherwise we derive a sensible default based on `size`.\n",
429
- "description": "<p>Returns the typography class to apply. If the consumer passes <code>fontClass</code>,\nthat value wins. Otherwise we derive a sensible default based on <code>size</code>.</p>\n"
430
- }
431
- }
432
- },
433
- "templateData": "<!-- Regular button types -->\n<ng-container *ngIf=\"buttonType !== 'dropdown'; else dropdownTpl\">\n <button\n mat-flat-button\n class=\"btn custom-button\" [class]=\"effectiveFontClass\"\n [ngClass]=\"{\n 'size-header': size === 'header' && !fontClass,\n 'size-xs': size === 'xs' && !fontClass,\n 'size-sm': size === 'sm' && !fontClass,\n 'size-base': size === 'base' && !fontClass,\n 'size-l': size === 'l' && !fontClass,\n 'size-xl': size === 'xl' && !fontClass,\n 'mat-raised-button': variant === 'raised',\n 'mat-flat-button': variant === 'flat',\n \n 'mat-stroked-button': variant === 'stroked',\n 'mat-fab': variant === 'fab',\n 'mat-icon-button': variant === 'icon',\n 'icon-circle': buttonType === 'icon-circle',\n 'icon-label': buttonType === 'icon-label',\n 'two-icon-label': buttonType === 'two-icon-label',\n 'blue': category === 'blue',\n 'green': category === 'green',\n 'grey': category === 'grey',\n 'error': category === 'error',\n 'gradient': category === 'gradient',\n 'blue-no-outline': category === 'blue-no-outline',\n 'green-no-outline': category === 'green-no-outline',\n 'grey-no-outline': category === 'grey-no-outline',\n 'error-no-outline': category === 'error-no-outline',\n 'btn-default': state === 'default',\n 'btn-hover': state === 'hover',\n 'btn-pressed': state === 'pressed',\n 'btn-disabled': state === 'disabled'\n }\"\n [ngStyle]=\"{ color: color }\"\n [disabled]=\"state === 'disabled'\"\n (click)=\"onClick.emit($event)\"\n (mouseenter)=\"onHover.emit($event)\"\n (mouseleave)=\"onMouseLeave.emit($event)\"\n [style.display]=\"'inline-flex'\"\n [style.align-items]=\"'center'\"\n [style.gap.px]=\"computeGap()\"\n >\n <!-- Left Icon (Only shown if leftIcon is set and not empty) -->\n <mat-icon *ngIf=\"leftIcon?.trim() as leftIconText\"\n [fontSet]=\"outlined ? 'material-icons-outlined' : 'material-icons'\"\n class=\"left-icon\">{{ leftIconText }}</mat-icon>\n <!-- Label (Only shown if iconOnly is false) -->\n <span *ngIf=\"!iconOnly\" class=\"button-label\" [ngStyle]=\"{ color: color }\">{{ label || '' }}</span>\n \n <!-- Right Icon (Only shown if rightIcon is set and not empty) -->\n <mat-icon *ngIf=\"rightIcon?.trim() as rightIconText\"\n [fontSet]=\"outlined ? 'material-icons-outlined' : 'material-icons'\"\n class=\"right-icon\">{{ rightIconText }}</mat-icon>\n </button>\n </ng-container>\n \n <!-- Dropdown button template -->\n <ng-template #dropdownTpl>\n <button\n mat-flat-button\n class=\"btn custom-button\" [class]=\"effectiveFontClass\"\n [ngClass]=\"{\n 'size-header': size === 'header' && !fontClass,\n 'size-xs': size === 'xs' && !fontClass,\n 'size-sm': size === 'sm' && !fontClass,\n 'size-base': size === 'base' && !fontClass,\n 'size-l': size === 'l' && !fontClass,\n 'size-xl': size === 'xl' && !fontClass,\n 'mat-raised-button': variant === 'raised',\n 'mat-flat-button': variant === 'flat',\n 'mat-stroked-button': variant === 'stroked',\n 'mat-fab': variant === 'fab',\n 'mat-icon-button': variant === 'icon',\n 'icon-label': true,\n 'blue': category === 'blue',\n 'green': category === 'green',\n 'grey': category === 'grey',\n 'error': category === 'error',\n 'gradient': category === 'gradient',\n 'blue-no-outline': category === 'blue-no-outline',\n 'green-no-outline': category === 'green-no-outline',\n 'grey-no-outline': category === 'grey-no-outline',\n 'error-no-outline': category === 'error-no-outline',\n 'btn-default': state === 'default',\n 'btn-hover': state === 'hover',\n 'btn-pressed': state === 'pressed',\n 'btn-disabled': state === 'disabled',\n \n }\"\n [ngStyle]=\"{ color: color }\"\n [disabled]=\"state === 'disabled'\"\n (mouseenter)=\"onHover.emit($event)\"\n (mouseleave)=\"onMouseLeave.emit($event)\"\n [style.display]=\"'inline-flex'\"\n [style.align-items]=\"'center'\"\n [style.gap.px]=\"computeGap()\"\n [matMenuTriggerFor]=\"menu\"\n >\n <!-- Left Icon (optional) -->\n <mat-icon *ngIf=\"leftIcon?.trim() as leftIconText\"\n [fontSet]=\"outlined ? 'material-icons-outlined' : 'material-icons'\"\n class=\"left-icon\">{{ leftIconText }}</mat-icon>\n <!-- Label -->\n <span *ngIf=\"!iconOnly\" class=\"button-label\" [ngStyle]=\"{ color: color }\">{{ label || '' }}</span>\n <!-- Dropdown Arrow Icon -->\n <mat-icon class=\"right-icon\">arrow_drop_down</mat-icon>\n </button>\n <!-- Mat Menu -->\n <mat-menu #menu=\"matMenu\" panelClass=\"custom-dropdown-menu\">\n <button mat-menu-item *ngFor=\"let opt of dropdownOptions\" (click)=\"selectOption(opt)\" [ngClass]=\"effectiveFontClass\">\n {{ opt.label || opt }}\n </button>\n </mat-menu>\n </ng-template>"
434
- },
435
- {
436
- "name": "InputComponent",
437
- "id": "component-InputComponent-02d3f99d30f84b0b6339a285279e183f5ec7fbafacfbbc39cfca6afe2338d0a53cd25ee001b8c9c907893bb9ed2bcab5c781f83a299c6cf18f197c47534301f6",
438
- "file": "projects/allsorter-lib/src/lib/input/input.component.ts",
439
- "encapsulation": [],
440
- "entryComponents": [],
441
- "inputs": [],
442
- "outputs": [],
443
- "providers": [
444
- {
445
- "name": "{\n provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => InputComponent), multi: true\n}",
446
- "type": "component"
447
- }
448
- ],
449
- "selector": "al-input",
450
- "styleUrls": [],
451
- "styles": [],
452
- "templateUrl": [
453
- "./input.component.html"
454
- ],
455
- "viewProviders": [],
456
- "hostDirectives": [],
457
- "inputsClass": [
458
- {
459
- "name": "disabled",
460
- "defaultValue": "false",
461
- "deprecated": false,
462
- "deprecationMessage": "",
463
- "line": 31,
464
- "type": "boolean",
465
- "decorators": []
466
- },
467
- {
468
- "name": "dropDown",
469
- "defaultValue": "false",
470
- "deprecated": false,
471
- "deprecationMessage": "",
472
- "line": 36,
473
- "type": "boolean",
474
- "decorators": []
475
- },
476
- {
477
- "name": "formControlName",
478
- "defaultValue": "''",
479
- "deprecated": false,
480
- "deprecationMessage": "",
481
- "line": 28,
482
- "type": "string",
483
- "decorators": []
484
- },
485
- {
486
- "name": "helperText",
487
- "defaultValue": "false",
488
- "deprecated": false,
489
- "deprecationMessage": "",
490
- "line": 32,
491
- "type": "boolean",
492
- "decorators": []
493
- },
494
- {
495
- "name": "helperTextLabel",
496
- "defaultValue": "''",
497
- "deprecated": false,
498
- "deprecationMessage": "",
499
- "line": 33,
500
- "type": "string",
501
- "decorators": []
502
- },
503
- {
504
- "name": "inputTypes",
505
- "defaultValue": "'simple'",
506
- "deprecated": false,
507
- "deprecationMessage": "",
508
- "line": 39,
509
- "type": "\"simple\" | \"primary\" | \"success\" | \"warn\" | \"disabled\" | \"plain\"",
510
- "decorators": []
511
- },
512
- {
513
- "name": "label",
514
- "defaultValue": "''",
515
- "deprecated": false,
516
- "deprecationMessage": "",
517
- "line": 25,
518
- "type": "string",
519
- "decorators": []
520
- },
521
- {
522
- "name": "leftIcon",
523
- "defaultValue": "''",
524
- "deprecated": false,
525
- "deprecationMessage": "",
526
- "line": 34,
527
- "type": "string",
528
- "decorators": []
529
- },
530
- {
531
- "name": "noBorder",
532
- "defaultValue": "false",
533
- "deprecated": false,
534
- "deprecationMessage": "",
535
- "line": 40,
536
- "type": "boolean",
537
- "decorators": []
538
- },
539
- {
540
- "name": "options",
541
- "defaultValue": "[]",
542
- "deprecated": false,
543
- "deprecationMessage": "",
544
- "line": 37,
545
- "type": "string[]",
546
- "decorators": []
547
- },
548
- {
549
- "name": "placeholder",
550
- "defaultValue": "''",
551
- "deprecated": false,
552
- "deprecationMessage": "",
553
- "line": 26,
554
- "type": "string",
555
- "decorators": []
556
- },
557
- {
558
- "name": "rightIcon",
559
- "defaultValue": "''",
560
- "deprecated": false,
561
- "deprecationMessage": "",
562
- "line": 35,
563
- "type": "string",
564
- "decorators": []
565
- },
566
- {
567
- "name": "size",
568
- "defaultValue": "'base'",
569
- "deprecated": false,
570
- "deprecationMessage": "",
571
- "line": 38,
572
- "type": "\"xs\" | \"small\" | \"base\" | \"large\" | \"header\"",
573
- "decorators": []
574
- },
575
- {
576
- "name": "type",
577
- "defaultValue": "'text'",
578
- "deprecated": false,
579
- "deprecationMessage": "",
580
- "line": 30,
581
- "type": "\"text\" | \"email\" | \"number\" | \"password\" | \"tel\" | \"url\" | \"date\"",
582
- "decorators": []
583
- },
584
- {
585
- "name": "value",
586
- "defaultValue": "''",
587
- "deprecated": false,
588
- "deprecationMessage": "",
589
- "line": 27,
590
- "type": "string",
591
- "decorators": []
592
- }
593
- ],
594
- "outputsClass": [
595
- {
596
- "name": "valueChange",
597
- "defaultValue": "new EventEmitter<string>()",
598
- "deprecated": false,
599
- "deprecationMessage": "",
600
- "line": 42,
601
- "type": "EventEmitter"
602
- }
603
- ],
604
- "propertiesClass": [
605
- {
606
- "name": "onChange",
607
- "defaultValue": "() => {...}",
608
- "deprecated": false,
609
- "deprecationMessage": "",
610
- "type": "",
611
- "indexKey": "",
612
- "optional": false,
613
- "description": "",
614
- "line": 44,
615
- "modifierKind": [
616
- 123
617
- ]
618
- },
619
- {
620
- "name": "onTouched",
621
- "defaultValue": "() => {...}",
622
- "deprecated": false,
623
- "deprecationMessage": "",
624
- "type": "",
625
- "indexKey": "",
626
- "optional": false,
627
- "description": "",
628
- "line": 45
629
- }
630
- ],
631
- "methodsClass": [
632
- {
633
- "name": "getCategoryClass",
634
- "args": [],
635
- "optional": false,
636
- "returnType": "string",
637
- "typeParameters": [],
638
- "line": 83,
639
- "deprecated": false,
640
- "deprecationMessage": ""
641
- },
642
- {
643
- "name": "getSizeClass",
644
- "args": [],
645
- "optional": false,
646
- "returnType": "string",
647
- "typeParameters": [],
648
- "line": 79,
649
- "deprecated": false,
650
- "deprecationMessage": ""
651
- },
652
- {
653
- "name": "onInputChange",
654
- "args": [
655
- {
656
- "name": "value",
657
- "type": "string",
658
- "deprecated": false,
659
- "deprecationMessage": ""
660
- }
661
- ],
662
- "optional": false,
663
- "returnType": "void",
664
- "typeParameters": [],
665
- "line": 67,
666
- "deprecated": false,
667
- "deprecationMessage": "",
668
- "jsdoctags": [
669
- {
670
- "name": "value",
671
- "type": "string",
672
- "deprecated": false,
673
- "deprecationMessage": "",
674
- "tagName": {
675
- "text": "param"
676
- }
677
- }
678
- ]
679
- },
680
- {
681
- "name": "onSelectionChange",
682
- "args": [
683
- {
684
- "name": "value",
685
- "type": "string",
686
- "deprecated": false,
687
- "deprecationMessage": ""
688
- }
689
- ],
690
- "optional": false,
691
- "returnType": "void",
692
- "typeParameters": [],
693
- "line": 73,
694
- "deprecated": false,
695
- "deprecationMessage": "",
696
- "jsdoctags": [
697
- {
698
- "name": "value",
699
- "type": "string",
700
- "deprecated": false,
701
- "deprecationMessage": "",
702
- "tagName": {
703
- "text": "param"
704
- }
705
- }
706
- ]
707
- },
708
- {
709
- "name": "registerOnChange",
710
- "args": [
711
- {
712
- "name": "fn",
713
- "type": "function",
714
- "deprecated": false,
715
- "deprecationMessage": "",
716
- "function": [
717
- {
718
- "name": "value",
719
- "type": "string",
720
- "deprecated": false,
721
- "deprecationMessage": ""
722
- }
723
- ]
724
- }
725
- ],
726
- "optional": false,
727
- "returnType": "void",
728
- "typeParameters": [],
729
- "line": 55,
730
- "deprecated": false,
731
- "deprecationMessage": "",
732
- "jsdoctags": [
733
- {
734
- "name": "fn",
735
- "type": "function",
736
- "deprecated": false,
737
- "deprecationMessage": "",
738
- "function": [
739
- {
740
- "name": "value",
741
- "type": "string",
742
- "deprecated": false,
743
- "deprecationMessage": ""
744
- }
745
- ],
746
- "tagName": {
747
- "text": "param"
748
- }
749
- }
750
- ]
751
- },
752
- {
753
- "name": "registerOnTouched",
754
- "args": [
755
- {
756
- "name": "fn",
757
- "type": "function",
758
- "deprecated": false,
759
- "deprecationMessage": "",
760
- "function": []
761
- }
762
- ],
763
- "optional": false,
764
- "returnType": "void",
765
- "typeParameters": [],
766
- "line": 59,
767
- "deprecated": false,
768
- "deprecationMessage": "",
769
- "jsdoctags": [
770
- {
771
- "name": "fn",
772
- "type": "function",
773
- "deprecated": false,
774
- "deprecationMessage": "",
775
- "function": [],
776
- "tagName": {
777
- "text": "param"
778
- }
779
- }
780
- ]
781
- },
782
- {
783
- "name": "setDisabledState",
784
- "args": [
785
- {
786
- "name": "isDisabled",
787
- "type": "boolean",
788
- "deprecated": false,
789
- "deprecationMessage": ""
790
- }
791
- ],
792
- "optional": false,
793
- "returnType": "void",
794
- "typeParameters": [],
795
- "line": 63,
796
- "deprecated": false,
797
- "deprecationMessage": "",
798
- "jsdoctags": [
799
- {
800
- "name": "isDisabled",
801
- "type": "boolean",
802
- "deprecated": false,
803
- "deprecationMessage": "",
804
- "tagName": {
805
- "text": "param"
806
- }
807
- }
808
- ]
809
- },
810
- {
811
- "name": "writeValue",
812
- "args": [
813
- {
814
- "name": "value",
815
- "type": "string | null | undefined",
816
- "deprecated": false,
817
- "deprecationMessage": ""
818
- }
819
- ],
820
- "optional": false,
821
- "returnType": "void",
822
- "typeParameters": [],
823
- "line": 51,
824
- "deprecated": false,
825
- "deprecationMessage": "",
826
- "jsdoctags": [
827
- {
828
- "name": "value",
829
- "type": "string | null | undefined",
830
- "deprecated": false,
831
- "deprecationMessage": "",
832
- "tagName": {
833
- "text": "param"
834
- }
835
- }
836
- ]
837
- }
838
- ],
839
- "deprecated": false,
840
- "deprecationMessage": "",
841
- "hostBindings": [],
842
- "hostListeners": [],
843
- "standalone": true,
844
- "imports": [
845
- {
846
- "name": "CommonModule",
847
- "type": "module"
848
- },
849
- {
850
- "name": "FormsModule",
851
- "type": "module"
852
- },
853
- {
854
- "name": "MatFormFieldModule",
855
- "type": "module"
856
- },
857
- {
858
- "name": "MatInputModule",
859
- "type": "module"
860
- },
861
- {
862
- "name": "MatIconModule",
863
- "type": "module"
864
- },
865
- {
866
- "name": "MatSelectModule",
867
- "type": "module"
868
- },
869
- {
870
- "name": "MatOptionModule",
871
- "type": "module"
872
- }
873
- ],
874
- "description": "",
875
- "rawdescription": "\n",
876
- "type": "component",
877
- "sourceCode": "import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatOptionModule } from '@angular/material/core';\n\n@Component({\n selector: 'al-input',\n templateUrl: './input.component.html',\n styleUrl: './input.component.css',\n imports: [CommonModule, FormsModule, MatFormFieldModule, MatInputModule, MatIconModule, MatSelectModule, MatOptionModule],\n standalone: true,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => InputComponent),\n multi: true\n }\n ]\n})\nexport class InputComponent implements ControlValueAccessor {\n @Input() label: string = '';\n @Input() placeholder: string = '';\n @Input() value: string = '';\n @Input() formControlName: string = '';\n\n @Input() type: 'text' | 'email' | 'number' | 'password' | 'tel' | 'url' | 'date' = 'text';\n @Input() disabled: boolean = false;\n @Input() helperText: boolean = false;\n @Input() helperTextLabel: string = '';\n @Input() leftIcon: string = '';\n @Input() rightIcon: string = '';\n @Input() dropDown: boolean = false;\n @Input() options: string[] = [];\n @Input() size: 'xs' | 'small' | 'base' | 'large' | 'header' = 'base';\n @Input() inputTypes: 'simple' | 'primary' | 'success' | 'warn' | 'disabled' | 'plain' = 'simple';\n @Input() noBorder: boolean = false;\n\n @Output() valueChange = new EventEmitter<string>();\n\n private onChange = (value: string) => { };\n onTouched = () => { };\n\n get isDisabled(): boolean {\n return this.disabled || this.inputTypes === 'disabled';\n }\n\n writeValue(value: string | null | undefined): void {\n this.value = value || '';\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onInputChange(value: string): void {\n this.value = value;\n this.onChange(value);\n this.valueChange.emit(value);\n }\n\n onSelectionChange(value: string): void {\n this.value = value;\n this.onChange(value);\n this.valueChange.emit(value);\n }\n\n getSizeClass(): string {\n return 'al-input-size-' + this.size;\n }\n\n getCategoryClass(): string {\n if (this.disabled) {\n return 'al-input-category-disabled';\n }\n if (this.inputTypes === 'plain') {\n return 'al-input-category-plain';\n }\n return 'al-input-category-' + this.inputTypes;\n }\n}\n",
878
- "styleUrl": "./input.component.css",
879
- "assetsDirs": [],
880
- "styleUrlsData": "",
881
- "stylesData": "",
882
- "extends": [],
883
- "implements": [
884
- "ControlValueAccessor"
885
- ],
886
- "accessors": {
887
- "isDisabled": {
888
- "name": "isDisabled",
889
- "getSignature": {
890
- "name": "isDisabled",
891
- "type": "boolean",
892
- "returnType": "boolean",
893
- "line": 47
894
- }
895
- }
896
- },
897
- "templateData": "<mat-form-field appearance=\"outline\" class=\"al-input-field\" [ngClass]=\"[\n helperText ? 'has-error' : '',\n getSizeClass(),\n getCategoryClass(),\n noBorder ? 'al-input-no-border' : ''\n ]\">\n <mat-label *ngIf=\"label && !noBorder\">{{ label }}</mat-label>\n\n <span *ngIf=\"leftIcon\" matPrefix class=\"material-symbols-outlined\">\n {{ leftIcon }}\n </span>\n\n <ng-container *ngIf=\"dropDown; else regularInput\">\n <mat-select [disabled]=\"isDisabled\" [(ngModel)]=\"value\" (selectionChange)=\"onSelectionChange($event.value)\">\n <mat-option *ngFor=\"let option of options\" [value]=\"option\">{{ option }}</mat-option>\n </mat-select>\n </ng-container>\n <ng-template #regularInput>\n <input matInput [placeholder]=\"placeholder\" [type]=\"type\" [disabled]=\"isDisabled\" [(ngModel)]=\"value\"\n (input)=\"onInputChange($any($event.target).value)\" (blur)=\"onTouched()\" />\n </ng-template>\n\n <span *ngIf=\"rightIcon\" matSuffix class=\"material-symbols-outlined\">{{ rightIcon }}</span>\n\n <mat-error *ngIf=\"helperText\">{{ helperTextLabel }}</mat-error>\n <mat-hint *ngIf=\"!helperText && helperTextLabel\">{{ helperTextLabel }}</mat-hint>\n</mat-form-field>\n"
898
- }
899
- ],
900
- "modules": [
901
- {
902
- "name": "AppModule",
903
- "id": "module-AppModule-2ec58e7a32463b9b6cd970cb31e08e29029a47873b1b978b2bb334fc7975f6f5b3557f06f1d8edb8d9117c1bc37b26d4301c2a5e8ccced6f4a56dde5c6a98af4",
904
- "description": "",
905
- "deprecationMessage": "",
906
- "deprecated": false,
907
- "file": "src/app/app.module.ts",
908
- "methods": [],
909
- "sourceCode": "import { NgModule } from '@angular/core';\nimport { BrowserModule } from '@angular/platform-browser';\n\nimport { AppComponent } from './app.component';\n\n@NgModule({\n declarations: [\n AppComponent\n ],\n imports: [\n BrowserModule\n ],\n providers: [],\n bootstrap: [AppComponent]\n})\nexport class AppModule { }\n",
910
- "children": [
911
- {
912
- "type": "providers",
913
- "elements": []
914
- },
915
- {
916
- "type": "declarations",
917
- "elements": [
918
- {
919
- "name": "AppComponent"
920
- }
921
- ]
922
- },
923
- {
924
- "type": "imports",
925
- "elements": []
926
- },
927
- {
928
- "type": "exports",
929
- "elements": []
930
- },
931
- {
932
- "type": "bootstrap",
933
- "elements": [
934
- {
935
- "name": "AppComponent"
936
- }
937
- ]
938
- },
939
- {
940
- "type": "classes",
941
- "elements": []
942
- }
943
- ]
944
- },
945
- {
946
- "name": "ButtonModule",
947
- "id": "module-ButtonModule-df66c621e67fe548f0a7f8dff7a2ec19bb2676f9e884f985797c4acf62256cd295a4776e497d7c8f6c4c138d96b105fae74a49fac57da601d03e85d2f74d5329",
948
- "description": "",
949
- "deprecationMessage": "",
950
- "deprecated": false,
951
- "file": "projects/allsorter-lib/src/lib/button/button.module.ts",
952
- "methods": [],
953
- "sourceCode": "import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ButtonComponent } from './button.component';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@NgModule({\n declarations: [], // ✅ Ensure ButtonComponent is declared\n exports: [], // ✅ Export if used in other modules\n imports: [CommonModule, ButtonComponent], // ✅ Required for Angular directives like *ngIf, *ngFor\n})\nexport class ButtonModule {\n constructor(\n private iconRegistry: MatIconRegistry,\n private sanitizer: DomSanitizer\n ) {\n // register the CSS class alias so <mat-icon> knows about it…\n this.iconRegistry.registerFontClassAlias(\n 'material-symbols-outlined',\n 'material-symbols-outlined'\n );\n }\n}\n",
954
- "children": [
955
- {
956
- "type": "providers",
957
- "elements": []
958
- },
959
- {
960
- "type": "declarations",
961
- "elements": []
962
- },
963
- {
964
- "type": "imports",
965
- "elements": [
966
- {
967
- "name": "ButtonComponent"
968
- }
969
- ]
970
- },
971
- {
972
- "type": "exports",
973
- "elements": []
974
- },
975
- {
976
- "type": "bootstrap",
977
- "elements": []
978
- },
979
- {
980
- "type": "classes",
981
- "elements": []
982
- }
983
- ]
984
- },
985
- {
986
- "name": "InputModule",
987
- "id": "module-InputModule-3451cc3463f63e8e68b764fdfca7595356cc64b6c9892fcc639ca376ce7056cad1c7a67c2157ae98cbfd8b0f602ca0bfc5b3e87e33cd158b1299c7dabe7e9a94",
988
- "description": "",
989
- "deprecationMessage": "",
990
- "deprecated": false,
991
- "file": "projects/allsorter-lib/src/lib/input/input.module.ts",
992
- "methods": [],
993
- "sourceCode": "import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { InputComponent } from './input.component';\n\n@NgModule({\n imports: [CommonModule, InputComponent],\n exports: [InputComponent],\n})\nexport class InputModule { }\n",
994
- "children": [
995
- {
996
- "type": "providers",
997
- "elements": []
998
- },
999
- {
1000
- "type": "declarations",
1001
- "elements": []
1002
- },
1003
- {
1004
- "type": "imports",
1005
- "elements": [
1006
- {
1007
- "name": "InputComponent"
1008
- }
1009
- ]
1010
- },
1011
- {
1012
- "type": "exports",
1013
- "elements": [
1014
- {
1015
- "name": "InputComponent"
1016
- }
1017
- ]
1018
- },
1019
- {
1020
- "type": "bootstrap",
1021
- "elements": []
1022
- },
1023
- {
1024
- "type": "classes",
1025
- "elements": []
1026
- }
1027
- ]
1028
- }
1029
- ],
1030
- "miscellaneous": {
1031
- "variables": [
1032
- {
1033
- "name": "Default",
1034
- "ctype": "miscellaneous",
1035
- "subtype": "variable",
1036
- "file": "projects/allsorter-lib/src/lib/button/stories/button-gallery.stories.ts",
1037
- "deprecated": false,
1038
- "deprecationMessage": "",
1039
- "type": "Story",
1040
- "defaultValue": "{\n name: 'Default',\n render: (args: any) => ({\n props: {\n ...args,\n leftIcon: args.showLeftIcon ? args.leftIcon : '',\n rightIcon: args.showRightIcon ? args.rightIcon : '',\n },\n template: `\n <al-button\n [category]=\"category\"\n [buttonType]=\"buttonType\"\n [label]=\"label\"\n [leftIcon]=\"leftIcon\"\n [rightIcon]=\"rightIcon\"\n [size]=\"size\"\n [outlined]=\"outlined\"\n [color]=\"color\"\n [dropdownOptions]=\"dropdownOptions\"\n ></al-button>\n `,\n }),\n}"
1041
- },
1042
- {
1043
- "name": "environment",
1044
- "ctype": "miscellaneous",
1045
- "subtype": "variable",
1046
- "file": "src/environments/environment.prod.ts",
1047
- "deprecated": false,
1048
- "deprecationMessage": "",
1049
- "type": "object",
1050
- "defaultValue": "{\n production: true,\n}"
1051
- },
1052
- {
1053
- "name": "environment",
1054
- "ctype": "miscellaneous",
1055
- "subtype": "variable",
1056
- "file": "src/environments/environment.ts",
1057
- "deprecated": false,
1058
- "deprecationMessage": "",
1059
- "type": "object",
1060
- "defaultValue": "{\n production: false,\n}"
1061
- },
1062
- {
1063
- "name": "FullMatrix",
1064
- "ctype": "miscellaneous",
1065
- "subtype": "variable",
1066
- "file": "projects/allsorter-lib/src/lib/input/stories/input-gallery.stories.ts",
1067
- "deprecated": false,
1068
- "deprecationMessage": "",
1069
- "type": "Story",
1070
- "defaultValue": "{\n render: () => ({\n props: {\n categories: [\n { name: 'Primary Input', value: 'primary' },\n { name: 'Disabled State', value: 'disabled' },\n { name: 'Success State', value: 'success' },\n { name: 'Warn State', value: 'warn' },\n { name: 'Plain Input', value: 'plain' }\n ],\n sizes: ['header', 'xs', 'small', 'base', 'large'],\n options: ['Option 1', 'Option 2', 'Option 3'],\n },\n template: `\n <div style=\"display: flex; flex-direction: column; gap: 48px;\">\n <div *ngFor=\"let size of sizes\">\n <h3 style=\"margin-bottom: 24px; font-size: 20px; font-weight: 600;\">{{ size | titlecase }} Input Fields</h3>\n <div style=\"display: flex; flex-direction: row; gap: 24px; align-items: flex-start;\">\n <div *ngFor=\"let inputType of categories\">\n <h4 style=\"margin-bottom: 16px; font-size: 16px; font-weight: 500;\">{{ inputType.name }}</h4>\n <!-- Default state -->\n <al-input\n [label]=\"'Placeholder text'\"\n [placeholder]=\"'Placeholder'\"\n [value]=\"''\"\n [type]=\"'text'\"\n [disabled]=\"false\"\n [helperText]=\"false\"\n [helperTextLabel]=\"'Helper text'\"\n [leftIcon]=\"'person'\"\n [rightIcon]=\"''\"\n [size]=\"size\"\n [inputTypes]=\"inputType.value\"\n [dropDown]=\"size === 'large'\"\n [options]=\"options\"\n ></al-input>\n </div>\n </div>\n </div>\n </div>\n `,\n }),\n name: 'Full Variation Matrix',\n}"
1071
- },
1072
- {
1073
- "name": "Gallery",
1074
- "ctype": "miscellaneous",
1075
- "subtype": "variable",
1076
- "file": "projects/allsorter-lib/src/lib/input/stories/input-gallery.stories.ts",
1077
- "deprecated": false,
1078
- "deprecationMessage": "",
1079
- "type": "Story",
1080
- "defaultValue": "{\n name: 'Gallery',\n render: (args: any) => ({\n props: args,\n template: `\n <al-input\n [label]=\"label\"\n [placeholder]=\"placeholder\"\n [value]=\"value\"\n [formControlName]=\"formControlName\"\n [type]=\"type\"\n [disabled]=\"disabled\"\n [helperText]=\"helperText\"\n [helperTextLabel]=\"helperTextLabel\"\n [leftIcon]=\"leftIcon\"\n [rightIcon]=\"rightIcon\"\n [dropDown]=\"dropDown\"\n [options]=\"options\"\n [size]=\"size\"\n [inputTypes]=\"inputTypes\"\n (valueChange)=\"value = $event\"\n ></al-input>\n `,\n }),\n}"
1081
- },
1082
- {
1083
- "name": "meta",
1084
- "ctype": "miscellaneous",
1085
- "subtype": "variable",
1086
- "file": "projects/allsorter-lib/src/lib/input/stories/input-gallery.stories.ts",
1087
- "deprecated": false,
1088
- "deprecationMessage": "",
1089
- "type": "Meta<InputComponent>",
1090
- "defaultValue": "{\n tags: ['autodocs'],\n title: 'Components/Input/Gallery',\n component: InputComponent,\n argTypes: {\n label: { control: 'text' },\n placeholder: { control: 'text' },\n value: { control: 'text' },\n formControlName: { control: 'text' },\n type: {\n control: 'select',\n options: ['text', 'email', 'number', 'password', 'tel', 'url', 'date'],\n },\n disabled: { control: 'boolean' },\n helperText: { control: 'boolean' },\n helperTextLabel: { control: 'text' },\n leftIcon: { control: 'text' },\n rightIcon: { control: 'text' },\n dropDown: { control: 'boolean' },\n options: { control: 'object' },\n size: {\n control: 'radio',\n options: ['header', 'xs', 'small', 'base', 'large'],\n },\n inputTypes: {\n control: 'radio',\n options: ['primary', 'success', 'warn', 'disabled', 'plain'],\n },\n },\n args: {\n label: 'Placeholder text',\n placeholder: 'Type here...',\n value: '',\n formControlName: '',\n type: 'text',\n disabled: false,\n helperText: false,\n helperTextLabel: '',\n leftIcon: 'person',\n rightIcon: 'expand_more',\n dropDown: false,\n options: ['Option 1', 'Option 2', 'Option 3'],\n size: 'base',\n inputTypes: 'primary',\n },\n parameters: { controls: { expanded: true } },\n}"
1091
- },
1092
- {
1093
- "name": "meta",
1094
- "ctype": "miscellaneous",
1095
- "subtype": "variable",
1096
- "file": "projects/allsorter-lib/src/lib/input/stories/input-playground.stories.ts",
1097
- "deprecated": false,
1098
- "deprecationMessage": "",
1099
- "type": "Meta<InputComponent>",
1100
- "defaultValue": "{\n title: 'Components/Input/Playground',\n component: InputComponent,\n argTypes: {\n label: { control: 'text' },\n placeholder: { control: 'text' },\n value: { control: 'text' },\n type: {\n control: 'select',\n options: ['text', 'email', 'number', 'password', 'tel', 'url', 'date'],\n },\n disabled: { control: 'boolean' },\n helperText: { control: 'boolean' },\n helperTextLabel: { control: 'text' },\n leftIcon: { control: 'text' },\n rightIcon: { control: 'text' },\n dropDown: { control: 'boolean' },\n options: { control: 'object' },\n size: {\n control: 'radio',\n options: ['xs', 'small', 'base', 'large', 'header'],\n },\n inputTypes: {\n control: 'select',\n options: ['primary', 'success', 'warn', 'disabled', 'plain'],\n },\n noBorder: { control: 'boolean' },\n },\n args: {\n label: 'Label',\n placeholder: 'Placeholder',\n value: '',\n type: 'text',\n disabled: false,\n helperText: false,\n helperTextLabel: '',\n leftIcon: '',\n rightIcon: '',\n dropDown: false,\n options: ['Option 1', 'Option 2', 'Option 3'],\n size: 'base',\n inputTypes: 'primary',\n noBorder: false,\n },\n}"
1101
- },
1102
- {
1103
- "name": "meta",
1104
- "ctype": "miscellaneous",
1105
- "subtype": "variable",
1106
- "file": "projects/allsorter-lib/src/lib/button/stories/button-gallery.stories.ts",
1107
- "deprecated": false,
1108
- "deprecationMessage": "",
1109
- "type": "Meta<ButtonComponent>",
1110
- "defaultValue": "{\n title: 'Components/Button/Gallery',\n component: ButtonComponent,\n tags: ['autodocs'],\n argTypes: {\n label: { control: 'text' },\n category: {\n control: 'select',\n options: [\n 'blue', 'green', 'grey', 'error', 'gradient',\n 'blue-no-outline', 'green-no-outline', 'grey-no-outline', 'error-no-outline',\n ],\n },\n size: {\n control: 'select',\n options: ['header', 'xs', 'sm', 'base', 'l', 'xl'],\n },\n buttonType: {\n control: 'select',\n options: ['icon-circle', 'icon-label', 'two-icon-label', 'dropdown'],\n },\n outlined: { control: 'boolean' },\n showLeftIcon: { control: 'boolean' },\n showRightIcon: { control: 'boolean' },\n leftIcon: { control: 'text' },\n rightIcon: { control: 'text' },\n dropdownOptions: { control: 'object' },\n color: { control: 'text' },\n },\n args: {\n size: 'sm',\n category: 'blue',\n outlined: false,\n buttonType: 'icon-label',\n label: 'Button text',\n showLeftIcon: true,\n showRightIcon: true,\n leftIcon: 'circle',\n rightIcon: 'circle',\n dropdownOptions: [\n { label: 'Create a merge commit', value: 'merge' },\n { label: 'Squash and merge', value: 'squash' },\n { label: 'Rebase and merge', value: 'rebase' },\n ],\n },\n parameters: { controls: { expanded: true } },\n}"
1111
- },
1112
- {
1113
- "name": "meta",
1114
- "ctype": "miscellaneous",
1115
- "subtype": "variable",
1116
- "file": "projects/allsorter-lib/src/lib/button/stories/button-playground.stories.ts",
1117
- "deprecated": false,
1118
- "deprecationMessage": "",
1119
- "type": "Meta<ButtonComponent>",
1120
- "defaultValue": "{\n title: 'Components/Button/Playground',\n component: ButtonComponent,\n argTypes: {\n label: { control: 'text' },\n category: {\n control: 'select',\n options: [\n 'blue', 'green', 'grey', 'error', 'gradient',\n 'blue-no-outline', 'green-no-outline', 'grey-no-outline', 'error-no-outline',\n ],\n },\n\n buttonType: {\n control: 'select',\n options: ['icon-circle', 'icon-label', 'two-icon-label', 'dropdown'],\n },\n size: {\n control: 'select',\n options: ['header','xs','sm','base','l','xl'],\n },\n leftIcon: {\n control: 'text',\n if: { arg: 'showLeftIcon', truthy: true },\n ifDisabled: { arg: 'showLeftIcon', truthy: false },\n },\n rightIcon: {\n control: 'text',\n if: { arg: 'showRightIcon', truthy: true },\n ifDisabled: { arg: 'showRightIcon', truthy: false },\n },\n outlined: { control: 'boolean' },\n iconOnly: { control: 'boolean' },\n showLeftIcon: { control: 'boolean' },\n showRightIcon: { control: 'boolean' },\n dropdownOptions: { control: 'object' },\n },\n args: {\n size: 'sm',\n category: 'blue',\n outlined: true,\n buttonType: 'icon-label',\n label: 'Button text',\n leftIcon: 'add',\n rightIcon: 'add',\n iconOnly: false,\n showLeftIcon: true,\n showRightIcon: true,\n dropdownOptions: [\n { label: 'Create a merge commit', value: 'merge' },\n { label: 'Squash and merge', value: 'squash' },\n { label: 'Rebase and merge', value: 'rebase' },\n ],\n },\n}"
1121
- },
1122
- {
1123
- "name": "Playground",
1124
- "ctype": "miscellaneous",
1125
- "subtype": "variable",
1126
- "file": "projects/allsorter-lib/src/lib/input/stories/input-playground.stories.ts",
1127
- "deprecated": false,
1128
- "deprecationMessage": "",
1129
- "type": "Story",
1130
- "defaultValue": "{\n render: (args: any) => ({\n props: args,\n template: `\n <al-input\n [label]=\"label\"\n [placeholder]=\"placeholder\"\n [value]=\"value\"\n [type]=\"type\"\n [disabled]=\"disabled\"\n [helperText]=\"helperText\"\n [helperTextLabel]=\"helperTextLabel\"\n [icon]=\"icon\"\n [rightIcon]=\"rightIcon\"\n [dropDown]=\"dropDown\"\n [options]=\"options\"\n [size]=\"size\"\n [inputTypes]=\"inputTypes\"\n [noBorder]=\"noBorder\"\n (valueChange)=\"value = $event\"\n ></al-input>\n `,\n }),\n name: 'Playground',\n}"
1131
- },
1132
- {
1133
- "name": "ReactiveFormsExample",
1134
- "ctype": "miscellaneous",
1135
- "subtype": "variable",
1136
- "file": "projects/allsorter-lib/src/lib/input/stories/input-playground.stories.ts",
1137
- "deprecated": false,
1138
- "deprecationMessage": "",
1139
- "type": "Story",
1140
- "defaultValue": "{\n render: (args: any) => {\n const fb = new FormBuilder();\n const form = fb.group({\n courseTitle: [''],\n courseDescription: [''],\n courseType: ['']\n });\n\n return {\n props: { ...args, form },\n template: `\n <form [formGroup]=\"form\">\n <div style=\"display: flex; flex-direction: column; gap: 20px;\">\n <al-input\n label=\"Course Title\"\n placeholder=\"Course Title\"\n formControlName=\"courseTitle\"\n [leftIcon]=\"leftIcon\"\n [size]=\"size\"\n [inputTypes]=\"inputTypes\"\n ></al-input>\n\n <al-input\n label=\"Course Description\"\n placeholder=\"Enter course description\"\n formControlName=\"courseDescription\"\n [leftIcon]=\"'description'\"\n [size]=\"size\"\n [inputTypes]=\"inputTypes\"\n ></al-input>\n\n <al-input\n label=\"Course Type\"\n placeholder=\"Select course type\"\n formControlName=\"courseType\"\n [dropDown]=\"true\"\n [options]=\"['Online', 'In-Person', 'Hybrid']\"\n [leftIcon]=\"'category'\"\n [rightIcon]=\"'expand_more'\"\n [size]=\"size\"\n [inputTypes]=\"inputTypes\"\n ></al-input>\n </div>\n\n <div style=\"margin-top: 20px; padding: 10px; background: #f5f5f5; border-radius: 4px;\">\n <strong>Form Values:</strong>\n <pre>{{ form.value | json }}</pre>\n </div>\n </form>\n `,\n imports: [ReactiveFormsModule]\n };\n },\n name: 'Reactive Forms Example',\n}"
1141
- },
1142
- {
1143
- "name": "Variation",
1144
- "ctype": "miscellaneous",
1145
- "subtype": "variable",
1146
- "file": "projects/allsorter-lib/src/lib/button/stories/button-gallery.stories.ts",
1147
- "deprecated": false,
1148
- "deprecationMessage": "",
1149
- "type": "Story",
1150
- "defaultValue": "{\n name: 'Variation',\n args: {\n category: 'blue',\n buttonType: 'icon-label',\n label: 'Button text',\n leftIcon: 'circle',\n rightIcon: 'circle',\n outlined: false,\n dropdownOptions: [\n { label: 'Create a merge commit', value: 'merge' },\n { label: 'Squash and merge', value: 'squash' },\n { label: 'Rebase and merge', value: 'rebase' },\n ],\n },\n argTypes: {\n category: {\n control: 'select',\n options: [\n 'blue', 'green', 'grey', 'error', 'gradient',\n 'blue-no-outline', 'green-no-outline', 'grey-no-outline', 'error-no-outline',\n ],\n },\n buttonType: {\n control: 'select',\n options: ['icon-label', 'two-icon-label', 'dropdown', 'icon-circle'],\n },\n },\n parameters: {\n docs: { disable: true }\n },\n render: (args: any) => ({\n props: {\n ...args,\n sizes: ['header', 'xs', 'sm', 'base', 'l', 'xl'],\n circleSizes: ['xs', 'sm', 'base', 'l', 'xl'],\n },\n template: `\n <div style=\"display: flex; flex-direction: column; gap: 24px;\">\n <div>\n <div style=\"font-weight: bold; margin-bottom: 8px;\">All Sizes ({{ category }}, {{ buttonType }})</div>\n <div style=\"display: flex; align-items: center; gap: 8px;\">\n <ng-container *ngFor=\"let sz of sizes\">\n <al-button\n [category]=\"category\"\n [buttonType]=\"buttonType\"\n [label]=\"sz === 'header' ? '' : label\"\n [leftIcon]=\"leftIcon\"\n [rightIcon]=\"rightIcon\"\n [size]=\"sz\"\n [outlined]=\"outlined\"\n [dropdownOptions]=\"dropdownOptions\"\n style=\"margin-right: 8px;\"\n ></al-button>\n </ng-container>\n </div>\n </div>\n <hr />\n <div>\n <div style=\"font-weight: bold; margin-bottom: 8px;\">Circular Buttons (icon-circle)</div>\n <div style=\"display: flex; align-items: center; gap: 8px;\">\n <ng-container *ngFor=\"let sz of circleSizes\">\n <al-button\n [category]=\"category\"\n [buttonType]=\"'icon-circle'\"\n [leftIcon]=\"'add'\"\n [size]=\"sz\"\n [outlined]=\"outlined\"\n style=\"margin-right: 8px;\"\n ></al-button>\n </ng-container>\n </div>\n </div>\n </div>\n `,\n }),\n}"
1151
- }
1152
- ],
1153
- "functions": [],
1154
- "typealiases": [
1155
- {
1156
- "name": "Story",
1157
- "ctype": "miscellaneous",
1158
- "subtype": "typealias",
1159
- "rawtype": "StoryObj<InputComponent>",
1160
- "file": "projects/allsorter-lib/src/lib/input/stories/input-gallery.stories.ts",
1161
- "deprecated": false,
1162
- "deprecationMessage": "",
1163
- "description": "",
1164
- "kind": 183
1165
- },
1166
- {
1167
- "name": "Story",
1168
- "ctype": "miscellaneous",
1169
- "subtype": "typealias",
1170
- "rawtype": "StoryObj<InputComponent>",
1171
- "file": "projects/allsorter-lib/src/lib/input/stories/input-playground.stories.ts",
1172
- "deprecated": false,
1173
- "deprecationMessage": "",
1174
- "description": "",
1175
- "kind": 183
1176
- },
1177
- {
1178
- "name": "Story",
1179
- "ctype": "miscellaneous",
1180
- "subtype": "typealias",
1181
- "rawtype": "StoryObj<ButtonComponent>",
1182
- "file": "projects/allsorter-lib/src/lib/button/stories/button-gallery.stories.ts",
1183
- "deprecated": false,
1184
- "deprecationMessage": "",
1185
- "description": "",
1186
- "kind": 183
1187
- },
1188
- {
1189
- "name": "Story",
1190
- "ctype": "miscellaneous",
1191
- "subtype": "typealias",
1192
- "rawtype": "StoryObj<ButtonComponent>",
1193
- "file": "projects/allsorter-lib/src/lib/button/stories/button-playground.stories.ts",
1194
- "deprecated": false,
1195
- "deprecationMessage": "",
1196
- "description": "",
1197
- "kind": 183
1198
- }
1199
- ],
1200
- "enumerations": [],
1201
- "groupedVariables": {
1202
- "projects/allsorter-lib/src/lib/button/stories/button-gallery.stories.ts": [
1203
- {
1204
- "name": "Default",
1205
- "ctype": "miscellaneous",
1206
- "subtype": "variable",
1207
- "file": "projects/allsorter-lib/src/lib/button/stories/button-gallery.stories.ts",
1208
- "deprecated": false,
1209
- "deprecationMessage": "",
1210
- "type": "Story",
1211
- "defaultValue": "{\n name: 'Default',\n render: (args: any) => ({\n props: {\n ...args,\n leftIcon: args.showLeftIcon ? args.leftIcon : '',\n rightIcon: args.showRightIcon ? args.rightIcon : '',\n },\n template: `\n <al-button\n [category]=\"category\"\n [buttonType]=\"buttonType\"\n [label]=\"label\"\n [leftIcon]=\"leftIcon\"\n [rightIcon]=\"rightIcon\"\n [size]=\"size\"\n [outlined]=\"outlined\"\n [color]=\"color\"\n [dropdownOptions]=\"dropdownOptions\"\n ></al-button>\n `,\n }),\n}"
1212
- },
1213
- {
1214
- "name": "meta",
1215
- "ctype": "miscellaneous",
1216
- "subtype": "variable",
1217
- "file": "projects/allsorter-lib/src/lib/button/stories/button-gallery.stories.ts",
1218
- "deprecated": false,
1219
- "deprecationMessage": "",
1220
- "type": "Meta<ButtonComponent>",
1221
- "defaultValue": "{\n title: 'Components/Button/Gallery',\n component: ButtonComponent,\n tags: ['autodocs'],\n argTypes: {\n label: { control: 'text' },\n category: {\n control: 'select',\n options: [\n 'blue', 'green', 'grey', 'error', 'gradient',\n 'blue-no-outline', 'green-no-outline', 'grey-no-outline', 'error-no-outline',\n ],\n },\n size: {\n control: 'select',\n options: ['header', 'xs', 'sm', 'base', 'l', 'xl'],\n },\n buttonType: {\n control: 'select',\n options: ['icon-circle', 'icon-label', 'two-icon-label', 'dropdown'],\n },\n outlined: { control: 'boolean' },\n showLeftIcon: { control: 'boolean' },\n showRightIcon: { control: 'boolean' },\n leftIcon: { control: 'text' },\n rightIcon: { control: 'text' },\n dropdownOptions: { control: 'object' },\n color: { control: 'text' },\n },\n args: {\n size: 'sm',\n category: 'blue',\n outlined: false,\n buttonType: 'icon-label',\n label: 'Button text',\n showLeftIcon: true,\n showRightIcon: true,\n leftIcon: 'circle',\n rightIcon: 'circle',\n dropdownOptions: [\n { label: 'Create a merge commit', value: 'merge' },\n { label: 'Squash and merge', value: 'squash' },\n { label: 'Rebase and merge', value: 'rebase' },\n ],\n },\n parameters: { controls: { expanded: true } },\n}"
1222
- },
1223
- {
1224
- "name": "Variation",
1225
- "ctype": "miscellaneous",
1226
- "subtype": "variable",
1227
- "file": "projects/allsorter-lib/src/lib/button/stories/button-gallery.stories.ts",
1228
- "deprecated": false,
1229
- "deprecationMessage": "",
1230
- "type": "Story",
1231
- "defaultValue": "{\n name: 'Variation',\n args: {\n category: 'blue',\n buttonType: 'icon-label',\n label: 'Button text',\n leftIcon: 'circle',\n rightIcon: 'circle',\n outlined: false,\n dropdownOptions: [\n { label: 'Create a merge commit', value: 'merge' },\n { label: 'Squash and merge', value: 'squash' },\n { label: 'Rebase and merge', value: 'rebase' },\n ],\n },\n argTypes: {\n category: {\n control: 'select',\n options: [\n 'blue', 'green', 'grey', 'error', 'gradient',\n 'blue-no-outline', 'green-no-outline', 'grey-no-outline', 'error-no-outline',\n ],\n },\n buttonType: {\n control: 'select',\n options: ['icon-label', 'two-icon-label', 'dropdown', 'icon-circle'],\n },\n },\n parameters: {\n docs: { disable: true }\n },\n render: (args: any) => ({\n props: {\n ...args,\n sizes: ['header', 'xs', 'sm', 'base', 'l', 'xl'],\n circleSizes: ['xs', 'sm', 'base', 'l', 'xl'],\n },\n template: `\n <div style=\"display: flex; flex-direction: column; gap: 24px;\">\n <div>\n <div style=\"font-weight: bold; margin-bottom: 8px;\">All Sizes ({{ category }}, {{ buttonType }})</div>\n <div style=\"display: flex; align-items: center; gap: 8px;\">\n <ng-container *ngFor=\"let sz of sizes\">\n <al-button\n [category]=\"category\"\n [buttonType]=\"buttonType\"\n [label]=\"sz === 'header' ? '' : label\"\n [leftIcon]=\"leftIcon\"\n [rightIcon]=\"rightIcon\"\n [size]=\"sz\"\n [outlined]=\"outlined\"\n [dropdownOptions]=\"dropdownOptions\"\n style=\"margin-right: 8px;\"\n ></al-button>\n </ng-container>\n </div>\n </div>\n <hr />\n <div>\n <div style=\"font-weight: bold; margin-bottom: 8px;\">Circular Buttons (icon-circle)</div>\n <div style=\"display: flex; align-items: center; gap: 8px;\">\n <ng-container *ngFor=\"let sz of circleSizes\">\n <al-button\n [category]=\"category\"\n [buttonType]=\"'icon-circle'\"\n [leftIcon]=\"'add'\"\n [size]=\"sz\"\n [outlined]=\"outlined\"\n style=\"margin-right: 8px;\"\n ></al-button>\n </ng-container>\n </div>\n </div>\n </div>\n `,\n }),\n}"
1232
- }
1233
- ],
1234
- "src/environments/environment.prod.ts": [
1235
- {
1236
- "name": "environment",
1237
- "ctype": "miscellaneous",
1238
- "subtype": "variable",
1239
- "file": "src/environments/environment.prod.ts",
1240
- "deprecated": false,
1241
- "deprecationMessage": "",
1242
- "type": "object",
1243
- "defaultValue": "{\n production: true,\n}"
1244
- }
1245
- ],
1246
- "src/environments/environment.ts": [
1247
- {
1248
- "name": "environment",
1249
- "ctype": "miscellaneous",
1250
- "subtype": "variable",
1251
- "file": "src/environments/environment.ts",
1252
- "deprecated": false,
1253
- "deprecationMessage": "",
1254
- "type": "object",
1255
- "defaultValue": "{\n production: false,\n}"
1256
- }
1257
- ],
1258
- "projects/allsorter-lib/src/lib/input/stories/input-gallery.stories.ts": [
1259
- {
1260
- "name": "FullMatrix",
1261
- "ctype": "miscellaneous",
1262
- "subtype": "variable",
1263
- "file": "projects/allsorter-lib/src/lib/input/stories/input-gallery.stories.ts",
1264
- "deprecated": false,
1265
- "deprecationMessage": "",
1266
- "type": "Story",
1267
- "defaultValue": "{\n render: () => ({\n props: {\n categories: [\n { name: 'Primary Input', value: 'primary' },\n { name: 'Disabled State', value: 'disabled' },\n { name: 'Success State', value: 'success' },\n { name: 'Warn State', value: 'warn' },\n { name: 'Plain Input', value: 'plain' }\n ],\n sizes: ['header', 'xs', 'small', 'base', 'large'],\n options: ['Option 1', 'Option 2', 'Option 3'],\n },\n template: `\n <div style=\"display: flex; flex-direction: column; gap: 48px;\">\n <div *ngFor=\"let size of sizes\">\n <h3 style=\"margin-bottom: 24px; font-size: 20px; font-weight: 600;\">{{ size | titlecase }} Input Fields</h3>\n <div style=\"display: flex; flex-direction: row; gap: 24px; align-items: flex-start;\">\n <div *ngFor=\"let inputType of categories\">\n <h4 style=\"margin-bottom: 16px; font-size: 16px; font-weight: 500;\">{{ inputType.name }}</h4>\n <!-- Default state -->\n <al-input\n [label]=\"'Placeholder text'\"\n [placeholder]=\"'Placeholder'\"\n [value]=\"''\"\n [type]=\"'text'\"\n [disabled]=\"false\"\n [helperText]=\"false\"\n [helperTextLabel]=\"'Helper text'\"\n [leftIcon]=\"'person'\"\n [rightIcon]=\"''\"\n [size]=\"size\"\n [inputTypes]=\"inputType.value\"\n [dropDown]=\"size === 'large'\"\n [options]=\"options\"\n ></al-input>\n </div>\n </div>\n </div>\n </div>\n `,\n }),\n name: 'Full Variation Matrix',\n}"
1268
- },
1269
- {
1270
- "name": "Gallery",
1271
- "ctype": "miscellaneous",
1272
- "subtype": "variable",
1273
- "file": "projects/allsorter-lib/src/lib/input/stories/input-gallery.stories.ts",
1274
- "deprecated": false,
1275
- "deprecationMessage": "",
1276
- "type": "Story",
1277
- "defaultValue": "{\n name: 'Gallery',\n render: (args: any) => ({\n props: args,\n template: `\n <al-input\n [label]=\"label\"\n [placeholder]=\"placeholder\"\n [value]=\"value\"\n [formControlName]=\"formControlName\"\n [type]=\"type\"\n [disabled]=\"disabled\"\n [helperText]=\"helperText\"\n [helperTextLabel]=\"helperTextLabel\"\n [leftIcon]=\"leftIcon\"\n [rightIcon]=\"rightIcon\"\n [dropDown]=\"dropDown\"\n [options]=\"options\"\n [size]=\"size\"\n [inputTypes]=\"inputTypes\"\n (valueChange)=\"value = $event\"\n ></al-input>\n `,\n }),\n}"
1278
- },
1279
- {
1280
- "name": "meta",
1281
- "ctype": "miscellaneous",
1282
- "subtype": "variable",
1283
- "file": "projects/allsorter-lib/src/lib/input/stories/input-gallery.stories.ts",
1284
- "deprecated": false,
1285
- "deprecationMessage": "",
1286
- "type": "Meta<InputComponent>",
1287
- "defaultValue": "{\n tags: ['autodocs'],\n title: 'Components/Input/Gallery',\n component: InputComponent,\n argTypes: {\n label: { control: 'text' },\n placeholder: { control: 'text' },\n value: { control: 'text' },\n formControlName: { control: 'text' },\n type: {\n control: 'select',\n options: ['text', 'email', 'number', 'password', 'tel', 'url', 'date'],\n },\n disabled: { control: 'boolean' },\n helperText: { control: 'boolean' },\n helperTextLabel: { control: 'text' },\n leftIcon: { control: 'text' },\n rightIcon: { control: 'text' },\n dropDown: { control: 'boolean' },\n options: { control: 'object' },\n size: {\n control: 'radio',\n options: ['header', 'xs', 'small', 'base', 'large'],\n },\n inputTypes: {\n control: 'radio',\n options: ['primary', 'success', 'warn', 'disabled', 'plain'],\n },\n },\n args: {\n label: 'Placeholder text',\n placeholder: 'Type here...',\n value: '',\n formControlName: '',\n type: 'text',\n disabled: false,\n helperText: false,\n helperTextLabel: '',\n leftIcon: 'person',\n rightIcon: 'expand_more',\n dropDown: false,\n options: ['Option 1', 'Option 2', 'Option 3'],\n size: 'base',\n inputTypes: 'primary',\n },\n parameters: { controls: { expanded: true } },\n}"
1288
- }
1289
- ],
1290
- "projects/allsorter-lib/src/lib/input/stories/input-playground.stories.ts": [
1291
- {
1292
- "name": "meta",
1293
- "ctype": "miscellaneous",
1294
- "subtype": "variable",
1295
- "file": "projects/allsorter-lib/src/lib/input/stories/input-playground.stories.ts",
1296
- "deprecated": false,
1297
- "deprecationMessage": "",
1298
- "type": "Meta<InputComponent>",
1299
- "defaultValue": "{\n title: 'Components/Input/Playground',\n component: InputComponent,\n argTypes: {\n label: { control: 'text' },\n placeholder: { control: 'text' },\n value: { control: 'text' },\n type: {\n control: 'select',\n options: ['text', 'email', 'number', 'password', 'tel', 'url', 'date'],\n },\n disabled: { control: 'boolean' },\n helperText: { control: 'boolean' },\n helperTextLabel: { control: 'text' },\n leftIcon: { control: 'text' },\n rightIcon: { control: 'text' },\n dropDown: { control: 'boolean' },\n options: { control: 'object' },\n size: {\n control: 'radio',\n options: ['xs', 'small', 'base', 'large', 'header'],\n },\n inputTypes: {\n control: 'select',\n options: ['primary', 'success', 'warn', 'disabled', 'plain'],\n },\n noBorder: { control: 'boolean' },\n },\n args: {\n label: 'Label',\n placeholder: 'Placeholder',\n value: '',\n type: 'text',\n disabled: false,\n helperText: false,\n helperTextLabel: '',\n leftIcon: '',\n rightIcon: '',\n dropDown: false,\n options: ['Option 1', 'Option 2', 'Option 3'],\n size: 'base',\n inputTypes: 'primary',\n noBorder: false,\n },\n}"
1300
- },
1301
- {
1302
- "name": "Playground",
1303
- "ctype": "miscellaneous",
1304
- "subtype": "variable",
1305
- "file": "projects/allsorter-lib/src/lib/input/stories/input-playground.stories.ts",
1306
- "deprecated": false,
1307
- "deprecationMessage": "",
1308
- "type": "Story",
1309
- "defaultValue": "{\n render: (args: any) => ({\n props: args,\n template: `\n <al-input\n [label]=\"label\"\n [placeholder]=\"placeholder\"\n [value]=\"value\"\n [type]=\"type\"\n [disabled]=\"disabled\"\n [helperText]=\"helperText\"\n [helperTextLabel]=\"helperTextLabel\"\n [icon]=\"icon\"\n [rightIcon]=\"rightIcon\"\n [dropDown]=\"dropDown\"\n [options]=\"options\"\n [size]=\"size\"\n [inputTypes]=\"inputTypes\"\n [noBorder]=\"noBorder\"\n (valueChange)=\"value = $event\"\n ></al-input>\n `,\n }),\n name: 'Playground',\n}"
1310
- },
1311
- {
1312
- "name": "ReactiveFormsExample",
1313
- "ctype": "miscellaneous",
1314
- "subtype": "variable",
1315
- "file": "projects/allsorter-lib/src/lib/input/stories/input-playground.stories.ts",
1316
- "deprecated": false,
1317
- "deprecationMessage": "",
1318
- "type": "Story",
1319
- "defaultValue": "{\n render: (args: any) => {\n const fb = new FormBuilder();\n const form = fb.group({\n courseTitle: [''],\n courseDescription: [''],\n courseType: ['']\n });\n\n return {\n props: { ...args, form },\n template: `\n <form [formGroup]=\"form\">\n <div style=\"display: flex; flex-direction: column; gap: 20px;\">\n <al-input\n label=\"Course Title\"\n placeholder=\"Course Title\"\n formControlName=\"courseTitle\"\n [leftIcon]=\"leftIcon\"\n [size]=\"size\"\n [inputTypes]=\"inputTypes\"\n ></al-input>\n\n <al-input\n label=\"Course Description\"\n placeholder=\"Enter course description\"\n formControlName=\"courseDescription\"\n [leftIcon]=\"'description'\"\n [size]=\"size\"\n [inputTypes]=\"inputTypes\"\n ></al-input>\n\n <al-input\n label=\"Course Type\"\n placeholder=\"Select course type\"\n formControlName=\"courseType\"\n [dropDown]=\"true\"\n [options]=\"['Online', 'In-Person', 'Hybrid']\"\n [leftIcon]=\"'category'\"\n [rightIcon]=\"'expand_more'\"\n [size]=\"size\"\n [inputTypes]=\"inputTypes\"\n ></al-input>\n </div>\n\n <div style=\"margin-top: 20px; padding: 10px; background: #f5f5f5; border-radius: 4px;\">\n <strong>Form Values:</strong>\n <pre>{{ form.value | json }}</pre>\n </div>\n </form>\n `,\n imports: [ReactiveFormsModule]\n };\n },\n name: 'Reactive Forms Example',\n}"
1320
- }
1321
- ],
1322
- "projects/allsorter-lib/src/lib/button/stories/button-playground.stories.ts": [
1323
- {
1324
- "name": "meta",
1325
- "ctype": "miscellaneous",
1326
- "subtype": "variable",
1327
- "file": "projects/allsorter-lib/src/lib/button/stories/button-playground.stories.ts",
1328
- "deprecated": false,
1329
- "deprecationMessage": "",
1330
- "type": "Meta<ButtonComponent>",
1331
- "defaultValue": "{\n title: 'Components/Button/Playground',\n component: ButtonComponent,\n argTypes: {\n label: { control: 'text' },\n category: {\n control: 'select',\n options: [\n 'blue', 'green', 'grey', 'error', 'gradient',\n 'blue-no-outline', 'green-no-outline', 'grey-no-outline', 'error-no-outline',\n ],\n },\n\n buttonType: {\n control: 'select',\n options: ['icon-circle', 'icon-label', 'two-icon-label', 'dropdown'],\n },\n size: {\n control: 'select',\n options: ['header','xs','sm','base','l','xl'],\n },\n leftIcon: {\n control: 'text',\n if: { arg: 'showLeftIcon', truthy: true },\n ifDisabled: { arg: 'showLeftIcon', truthy: false },\n },\n rightIcon: {\n control: 'text',\n if: { arg: 'showRightIcon', truthy: true },\n ifDisabled: { arg: 'showRightIcon', truthy: false },\n },\n outlined: { control: 'boolean' },\n iconOnly: { control: 'boolean' },\n showLeftIcon: { control: 'boolean' },\n showRightIcon: { control: 'boolean' },\n dropdownOptions: { control: 'object' },\n },\n args: {\n size: 'sm',\n category: 'blue',\n outlined: true,\n buttonType: 'icon-label',\n label: 'Button text',\n leftIcon: 'add',\n rightIcon: 'add',\n iconOnly: false,\n showLeftIcon: true,\n showRightIcon: true,\n dropdownOptions: [\n { label: 'Create a merge commit', value: 'merge' },\n { label: 'Squash and merge', value: 'squash' },\n { label: 'Rebase and merge', value: 'rebase' },\n ],\n },\n}"
1332
- }
1333
- ]
1334
- },
1335
- "groupedFunctions": {},
1336
- "groupedEnumerations": {},
1337
- "groupedTypeAliases": {
1338
- "projects/allsorter-lib/src/lib/input/stories/input-gallery.stories.ts": [
1339
- {
1340
- "name": "Story",
1341
- "ctype": "miscellaneous",
1342
- "subtype": "typealias",
1343
- "rawtype": "StoryObj<InputComponent>",
1344
- "file": "projects/allsorter-lib/src/lib/input/stories/input-gallery.stories.ts",
1345
- "deprecated": false,
1346
- "deprecationMessage": "",
1347
- "description": "",
1348
- "kind": 183
1349
- }
1350
- ],
1351
- "projects/allsorter-lib/src/lib/input/stories/input-playground.stories.ts": [
1352
- {
1353
- "name": "Story",
1354
- "ctype": "miscellaneous",
1355
- "subtype": "typealias",
1356
- "rawtype": "StoryObj<InputComponent>",
1357
- "file": "projects/allsorter-lib/src/lib/input/stories/input-playground.stories.ts",
1358
- "deprecated": false,
1359
- "deprecationMessage": "",
1360
- "description": "",
1361
- "kind": 183
1362
- }
1363
- ],
1364
- "projects/allsorter-lib/src/lib/button/stories/button-gallery.stories.ts": [
1365
- {
1366
- "name": "Story",
1367
- "ctype": "miscellaneous",
1368
- "subtype": "typealias",
1369
- "rawtype": "StoryObj<ButtonComponent>",
1370
- "file": "projects/allsorter-lib/src/lib/button/stories/button-gallery.stories.ts",
1371
- "deprecated": false,
1372
- "deprecationMessage": "",
1373
- "description": "",
1374
- "kind": 183
1375
- }
1376
- ],
1377
- "projects/allsorter-lib/src/lib/button/stories/button-playground.stories.ts": [
1378
- {
1379
- "name": "Story",
1380
- "ctype": "miscellaneous",
1381
- "subtype": "typealias",
1382
- "rawtype": "StoryObj<ButtonComponent>",
1383
- "file": "projects/allsorter-lib/src/lib/button/stories/button-playground.stories.ts",
1384
- "deprecated": false,
1385
- "deprecationMessage": "",
1386
- "description": "",
1387
- "kind": 183
1388
- }
1389
- ]
1390
- }
1391
- },
1392
- "routes": [],
1393
- "coverage": {
1394
- "count": 1,
1395
- "status": "low",
1396
- "files": [
1397
- {
1398
- "filePath": "projects/allsorter-lib/src/lib/allsorter-lib.component.ts",
1399
- "type": "component",
1400
- "linktype": "component",
1401
- "name": "AllsorterLibComponent",
1402
- "coveragePercent": 0,
1403
- "coverageCount": "0/1",
1404
- "status": "low"
1405
- },
1406
- {
1407
- "filePath": "projects/allsorter-lib/src/lib/allsorter-lib.service.ts",
1408
- "type": "injectable",
1409
- "linktype": "injectable",
1410
- "name": "AllsorterLibService",
1411
- "coveragePercent": 0,
1412
- "coverageCount": "0/2",
1413
- "status": "low"
1414
- },
1415
- {
1416
- "filePath": "projects/allsorter-lib/src/lib/button/button.component.ts",
1417
- "type": "component",
1418
- "linktype": "component",
1419
- "name": "ButtonComponent",
1420
- "coveragePercent": 34,
1421
- "coverageCount": "8/23",
1422
- "status": "medium"
1423
- },
1424
- {
1425
- "filePath": "projects/allsorter-lib/src/lib/button/stories/button-gallery.stories.ts",
1426
- "type": "variable",
1427
- "linktype": "miscellaneous",
1428
- "linksubtype": "variable",
1429
- "name": "Default",
1430
- "coveragePercent": 0,
1431
- "coverageCount": "0/1",
1432
- "status": "low"
1433
- },
1434
- {
1435
- "filePath": "projects/allsorter-lib/src/lib/button/stories/button-gallery.stories.ts",
1436
- "type": "variable",
1437
- "linktype": "miscellaneous",
1438
- "linksubtype": "variable",
1439
- "name": "meta",
1440
- "coveragePercent": 0,
1441
- "coverageCount": "0/1",
1442
- "status": "low"
1443
- },
1444
- {
1445
- "filePath": "projects/allsorter-lib/src/lib/button/stories/button-gallery.stories.ts",
1446
- "type": "variable",
1447
- "linktype": "miscellaneous",
1448
- "linksubtype": "variable",
1449
- "name": "Variation",
1450
- "coveragePercent": 0,
1451
- "coverageCount": "0/1",
1452
- "status": "low"
1453
- },
1454
- {
1455
- "filePath": "projects/allsorter-lib/src/lib/button/stories/button-gallery.stories.ts",
1456
- "type": "type alias",
1457
- "linktype": "miscellaneous",
1458
- "linksubtype": "typealias",
1459
- "name": "Story",
1460
- "coveragePercent": 0,
1461
- "coverageCount": "0/1",
1462
- "status": "low"
1463
- },
1464
- {
1465
- "filePath": "projects/allsorter-lib/src/lib/button/stories/button-playground.stories.ts",
1466
- "type": "variable",
1467
- "linktype": "miscellaneous",
1468
- "linksubtype": "variable",
1469
- "name": "meta",
1470
- "coveragePercent": 0,
1471
- "coverageCount": "0/1",
1472
- "status": "low"
1473
- },
1474
- {
1475
- "filePath": "projects/allsorter-lib/src/lib/button/stories/button-playground.stories.ts",
1476
- "type": "type alias",
1477
- "linktype": "miscellaneous",
1478
- "linksubtype": "typealias",
1479
- "name": "Story",
1480
- "coveragePercent": 0,
1481
- "coverageCount": "0/1",
1482
- "status": "low"
1483
- },
1484
- {
1485
- "filePath": "projects/allsorter-lib/src/lib/input/input.component.ts",
1486
- "type": "component",
1487
- "linktype": "component",
1488
- "name": "InputComponent",
1489
- "coveragePercent": 0,
1490
- "coverageCount": "0/27",
1491
- "status": "low"
1492
- },
1493
- {
1494
- "filePath": "projects/allsorter-lib/src/lib/input/stories/input-gallery.stories.ts",
1495
- "type": "variable",
1496
- "linktype": "miscellaneous",
1497
- "linksubtype": "variable",
1498
- "name": "FullMatrix",
1499
- "coveragePercent": 0,
1500
- "coverageCount": "0/1",
1501
- "status": "low"
1502
- },
1503
- {
1504
- "filePath": "projects/allsorter-lib/src/lib/input/stories/input-gallery.stories.ts",
1505
- "type": "variable",
1506
- "linktype": "miscellaneous",
1507
- "linksubtype": "variable",
1508
- "name": "Gallery",
1509
- "coveragePercent": 0,
1510
- "coverageCount": "0/1",
1511
- "status": "low"
1512
- },
1513
- {
1514
- "filePath": "projects/allsorter-lib/src/lib/input/stories/input-gallery.stories.ts",
1515
- "type": "variable",
1516
- "linktype": "miscellaneous",
1517
- "linksubtype": "variable",
1518
- "name": "meta",
1519
- "coveragePercent": 0,
1520
- "coverageCount": "0/1",
1521
- "status": "low"
1522
- },
1523
- {
1524
- "filePath": "projects/allsorter-lib/src/lib/input/stories/input-gallery.stories.ts",
1525
- "type": "type alias",
1526
- "linktype": "miscellaneous",
1527
- "linksubtype": "typealias",
1528
- "name": "Story",
1529
- "coveragePercent": 0,
1530
- "coverageCount": "0/1",
1531
- "status": "low"
1532
- },
1533
- {
1534
- "filePath": "projects/allsorter-lib/src/lib/input/stories/input-playground.stories.ts",
1535
- "type": "variable",
1536
- "linktype": "miscellaneous",
1537
- "linksubtype": "variable",
1538
- "name": "meta",
1539
- "coveragePercent": 0,
1540
- "coverageCount": "0/1",
1541
- "status": "low"
1542
- },
1543
- {
1544
- "filePath": "projects/allsorter-lib/src/lib/input/stories/input-playground.stories.ts",
1545
- "type": "variable",
1546
- "linktype": "miscellaneous",
1547
- "linksubtype": "variable",
1548
- "name": "Playground",
1549
- "coveragePercent": 0,
1550
- "coverageCount": "0/1",
1551
- "status": "low"
1552
- },
1553
- {
1554
- "filePath": "projects/allsorter-lib/src/lib/input/stories/input-playground.stories.ts",
1555
- "type": "variable",
1556
- "linktype": "miscellaneous",
1557
- "linksubtype": "variable",
1558
- "name": "ReactiveFormsExample",
1559
- "coveragePercent": 0,
1560
- "coverageCount": "0/1",
1561
- "status": "low"
1562
- },
1563
- {
1564
- "filePath": "projects/allsorter-lib/src/lib/input/stories/input-playground.stories.ts",
1565
- "type": "type alias",
1566
- "linktype": "miscellaneous",
1567
- "linksubtype": "typealias",
1568
- "name": "Story",
1569
- "coveragePercent": 0,
1570
- "coverageCount": "0/1",
1571
- "status": "low"
1572
- },
1573
- {
1574
- "filePath": "src/app/app.component.ts",
1575
- "type": "component",
1576
- "linktype": "component",
1577
- "name": "AppComponent",
1578
- "coveragePercent": 0,
1579
- "coverageCount": "0/2",
1580
- "status": "low"
1581
- },
1582
- {
1583
- "filePath": "src/environments/environment.prod.ts",
1584
- "type": "variable",
1585
- "linktype": "miscellaneous",
1586
- "linksubtype": "variable",
1587
- "name": "environment",
1588
- "coveragePercent": 0,
1589
- "coverageCount": "0/1",
1590
- "status": "low"
1591
- },
1592
- {
1593
- "filePath": "src/environments/environment.ts",
1594
- "type": "variable",
1595
- "linktype": "miscellaneous",
1596
- "linksubtype": "variable",
1597
- "name": "environment",
1598
- "coveragePercent": 0,
1599
- "coverageCount": "0/1",
1600
- "status": "low"
1601
- }
1602
- ]
1603
- }
1604
- }