@tekus/design-system 4.0.3 → 5.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (240) hide show
  1. package/assets/img/avatar.png +0 -0
  2. package/assets/img/pexels-jodaarba-4250980.jpg +0 -0
  3. package/assets/img/shadown.png +0 -0
  4. package/assets/img/tk-logo-compound-dark.svg +9 -0
  5. package/assets/img/tk-logo-minimal-dark.svg +16 -0
  6. package/assets/img/tk-logo-minimal-light.svg +16 -0
  7. package/assets/img/tk-logo-normal-dark.svg +12 -0
  8. package/assets/img/tk-logo-normal-light.svg +12 -0
  9. package/assets/styles/_index.scss +10 -0
  10. package/assets/styles/docs/_branding.doc.scss +69 -0
  11. package/assets/styles/docs/_grids.doc.scss +13 -0
  12. package/assets/styles/docs/_icons.doc.scss +102 -0
  13. package/assets/styles/docs/_illustrations.doc.scss +86 -0
  14. package/assets/styles/docs/_paginador.doc.scss +16 -0
  15. package/assets/styles/docs/_table-of-content.scss +22 -0
  16. package/{services/typography → components/branding}/index.d.ts +1 -1
  17. package/components/branding/public-api.d.ts +1 -0
  18. package/components/branding/src/branding-register-logo.d.ts +22 -0
  19. package/components/branding/src/branding.component.d.ts +54 -0
  20. package/components/{tk-search-bar → button}/index.d.ts +1 -1
  21. package/components/button/public-api.d.ts +1 -0
  22. package/components/button/src/button.component.d.ts +99 -0
  23. package/components/{tk-typography → fallback-view}/index.d.ts +1 -1
  24. package/components/fallback-view/public-api.d.ts +1 -0
  25. package/components/fallback-view/src/fallback-view.component.d.ts +149 -0
  26. package/components/grid-container/index.d.ts +5 -0
  27. package/components/grid-container/public-api.d.ts +1 -0
  28. package/components/grid-container/src/grid-container.component.d.ts +121 -0
  29. package/components/icon/core/icon-catalog.d.ts +76 -0
  30. package/components/icon/core/icons/ads.icons.d.ts +2 -0
  31. package/components/icon/core/icons/angle.icons.d.ts +2 -0
  32. package/components/icon/core/icons/arrow.icons.d.ts +2 -0
  33. package/components/icon/core/icons/bars.icons.d.ts +2 -0
  34. package/components/icon/core/icons/bolt.icons.d.ts +2 -0
  35. package/components/icon/core/icons/book.icons.d.ts +2 -0
  36. package/components/icon/core/icons/calendar.icons.d.ts +2 -0
  37. package/components/icon/core/icons/camera.icons.d.ts +2 -0
  38. package/components/icon/core/icons/chart.icons.d.ts +2 -0
  39. package/components/icon/core/icons/check.icons.d.ts +2 -0
  40. package/components/icon/core/icons/chevron.icons.d.ts +2 -0
  41. package/components/icon/core/icons/circle.icons.d.ts +2 -0
  42. package/components/icon/core/icons/clock.icons.d.ts +2 -0
  43. package/components/icon/core/icons/clone.icons.d.ts +2 -0
  44. package/components/icon/core/icons/download.icons.d.ts +2 -0
  45. package/components/icon/core/icons/ellipsis.icons.d.ts +2 -0
  46. package/components/icon/core/icons/eye.icons.d.ts +2 -0
  47. package/components/icon/core/icons/filter.icons.d.ts +2 -0
  48. package/components/icon/core/icons/folders.icons.d.ts +2 -0
  49. package/components/icon/core/icons/gears.icons.d.ts +2 -0
  50. package/components/icon/core/icons/hand.icons.d.ts +2 -0
  51. package/components/icon/core/icons/language.icons.d.ts +2 -0
  52. package/components/icon/core/icons/layer.icons.d.ts +2 -0
  53. package/components/icon/core/icons/link.icons.d.ts +2 -0
  54. package/components/icon/core/icons/list.icons.d.ts +2 -0
  55. package/components/icon/core/icons/location.icons.d.ts +2 -0
  56. package/components/icon/core/icons/lock.icons.d.ts +2 -0
  57. package/components/icon/core/icons/magnifying-glass.icons.d.ts +2 -0
  58. package/components/icon/core/icons/media.icons.d.ts +2 -0
  59. package/components/icon/core/icons/megaphone.icons.d.ts +2 -0
  60. package/components/icon/core/icons/money.icons.d.ts +2 -0
  61. package/components/icon/core/icons/pen.icons.d.ts +2 -0
  62. package/components/icon/core/icons/pencil.icons.d.ts +2 -0
  63. package/components/icon/core/icons/plug.icons.d.ts +2 -0
  64. package/components/icon/core/icons/plus.icons.d.ts +2 -0
  65. package/components/icon/core/icons/qr-code.icons.d.ts +2 -0
  66. package/components/icon/core/icons/screwdriver-wrench.icons.d.ts +2 -0
  67. package/components/icon/core/icons/shuffle.icons.d.ts +2 -0
  68. package/components/icon/core/icons/square.icons.d.ts +2 -0
  69. package/components/icon/core/icons/tag.icons.d.ts +2 -0
  70. package/components/icon/core/icons/thumbs.icons.d.ts +2 -0
  71. package/components/icon/core/icons/trash.icons.d.ts +2 -0
  72. package/components/icon/core/icons/triangle.icons.d.ts +2 -0
  73. package/components/icon/core/icons/user.icons.d.ts +2 -0
  74. package/components/icon/core/icons/xmark.icons.d.ts +2 -0
  75. package/components/icon/core/svg-icons/ads-icon.svg.d.ts +2 -0
  76. package/components/icon/core/svg-icons/index.d.ts +1 -0
  77. package/components/{forms → icon}/index.d.ts +1 -1
  78. package/components/icon/public-api.d.ts +2 -0
  79. package/components/icon/src/icon.component.d.ts +79 -0
  80. package/components/illustration/assets/illustrations/tk-catalogs.svg.d.ts +2 -0
  81. package/components/illustration/assets/illustrations/tk-categories.svg.d.ts +2 -0
  82. package/components/illustration/assets/illustrations/tk-confirmation-action.svg.d.ts +2 -0
  83. package/components/illustration/assets/illustrations/tk-create-an-account.svg.d.ts +2 -0
  84. package/components/illustration/assets/illustrations/tk-custom-design.svg.d.ts +2 -0
  85. package/components/illustration/assets/illustrations/tk-delete.svg.d.ts +2 -0
  86. package/components/illustration/assets/illustrations/tk-download-AKF.svg.d.ts +2 -0
  87. package/components/illustration/assets/illustrations/tk-error.svg.d.ts +2 -0
  88. package/components/illustration/assets/illustrations/tk-graphics.svg.d.ts +2 -0
  89. package/components/illustration/assets/illustrations/tk-items.svg.d.ts +2 -0
  90. package/components/illustration/assets/illustrations/tk-kiosk.svg.d.ts +2 -0
  91. package/components/illustration/assets/illustrations/tk-list.svg.d.ts +2 -0
  92. package/components/illustration/assets/illustrations/tk-locations.svg.d.ts +2 -0
  93. package/components/illustration/assets/illustrations/tk-login.svg.d.ts +2 -0
  94. package/components/illustration/assets/illustrations/tk-multimedia.svg.d.ts +2 -0
  95. package/components/illustration/assets/illustrations/tk-no-connection.svg.d.ts +2 -0
  96. package/components/illustration/assets/illustrations/tk-no-found.svg.d.ts +2 -0
  97. package/components/illustration/assets/illustrations/tk-order.svg.d.ts +2 -0
  98. package/components/illustration/assets/illustrations/tk-playlist.svg.d.ts +2 -0
  99. package/components/illustration/assets/illustrations/tk-screens.svg.d.ts +2 -0
  100. package/components/illustration/assets/illustrations/tk-success.svg.d.ts +2 -0
  101. package/components/illustration/assets/illustrations/tk-support.svg.d.ts +2 -0
  102. package/components/illustration/assets/illustrations/tk-technical-failure.svg.d.ts +2 -0
  103. package/components/illustration/assets/illustrations/tk-tip.svg.d.ts +2 -0
  104. package/components/illustration/assets/illustrations/tk-upload.svg.d.ts +2 -0
  105. package/components/illustration/assets/illustrations/tk-void.svg.d.ts +2 -0
  106. package/components/illustration/assets/illustrations/tk-warning.svg.d.ts +2 -0
  107. package/components/illustration/assets/illustrations/tk-welcome.svg.d.ts +2 -0
  108. package/components/illustration/assets/illustrations/tk-without-catalogs.svg.d.ts +2 -0
  109. package/components/illustration/illustrations.registry.d.ts +5 -0
  110. package/components/illustration/index.d.ts +5 -0
  111. package/components/illustration/public-api.d.ts +1 -0
  112. package/components/illustration/src/illustration.component.d.ts +117 -0
  113. package/components/typography/index.d.ts +5 -0
  114. package/components/typography/public-api.d.ts +1 -0
  115. package/components/typography/src/typography.component.d.ts +10 -0
  116. package/core/index.d.ts +5 -0
  117. package/core/public-api.d.ts +1 -0
  118. package/core/types/index.d.ts +5 -0
  119. package/core/types/public-api.d.ts +9 -0
  120. package/core/types/src/branding/branding.types.d.ts +15 -0
  121. package/core/types/src/branding/index.d.ts +1 -0
  122. package/core/types/src/breakpoints/breakpoints.d.ts +10 -0
  123. package/core/types/src/breakpoints/index.d.ts +1 -0
  124. package/core/types/src/grids/grid.enum.d.ts +18 -0
  125. package/core/types/src/grids/grid.model.d.ts +10 -0
  126. package/core/types/src/grids/grid.type.d.ts +40 -0
  127. package/core/types/src/grids/index.d.ts +3 -0
  128. package/core/types/src/illustration-config/illustration-config.model.d.ts +4 -0
  129. package/core/types/src/illustration-config/index.d.ts +1 -0
  130. package/core/types/src/option/index.d.ts +1 -0
  131. package/core/types/src/option/option.model.d.ts +8 -0
  132. package/core/types/src/theme/theme.provider.d.ts +1 -0
  133. package/core/types/src/theme/tk-preset.d.ts +1 -0
  134. package/core/types/src/typography-styles/index.d.ts +1 -0
  135. package/core/types/src/validator-with-message/index.d.ts +1 -0
  136. package/directives/gird-item/index.d.ts +5 -0
  137. package/directives/gird-item/public-api.d.ts +1 -0
  138. package/directives/gird-item/src/grid-item.directive.d.ts +42 -0
  139. package/fesm2022/tekus-design-system-components-branding.mjs +93 -0
  140. package/fesm2022/tekus-design-system-components-branding.mjs.map +1 -0
  141. package/fesm2022/tekus-design-system-components-button.mjs +129 -0
  142. package/fesm2022/tekus-design-system-components-button.mjs.map +1 -0
  143. package/fesm2022/tekus-design-system-components-fallback-view.mjs +187 -0
  144. package/fesm2022/tekus-design-system-components-fallback-view.mjs.map +1 -0
  145. package/fesm2022/tekus-design-system-components-grid-container.mjs +193 -0
  146. package/fesm2022/tekus-design-system-components-grid-container.mjs.map +1 -0
  147. package/fesm2022/tekus-design-system-components-icon.mjs +1206 -0
  148. package/fesm2022/tekus-design-system-components-icon.mjs.map +1 -0
  149. package/fesm2022/tekus-design-system-components-illustration.mjs +3893 -0
  150. package/fesm2022/tekus-design-system-components-illustration.mjs.map +1 -0
  151. package/fesm2022/tekus-design-system-components-typography.mjs +36 -0
  152. package/fesm2022/tekus-design-system-components-typography.mjs.map +1 -0
  153. package/fesm2022/tekus-design-system-core-types.mjs +307 -0
  154. package/fesm2022/tekus-design-system-core-types.mjs.map +1 -0
  155. package/fesm2022/tekus-design-system-core.mjs +307 -0
  156. package/fesm2022/tekus-design-system-core.mjs.map +1 -0
  157. package/fesm2022/tekus-design-system-directives-gird-item.mjs +95 -0
  158. package/fesm2022/tekus-design-system-directives-gird-item.mjs.map +1 -0
  159. package/fesm2022/tekus-design-system-utils-sanitizer-utils.mjs +53 -0
  160. package/fesm2022/tekus-design-system-utils-sanitizer-utils.mjs.map +1 -0
  161. package/package.json +47 -49
  162. package/tokens/blur/_blur.scss +11 -0
  163. package/tokens/colors/_colors.scss +97 -0
  164. package/tokens/index.scss +5 -0
  165. package/tokens/shadow/_shadow.scss +10 -0
  166. package/tokens/shapes/_shapes.scss +9 -0
  167. package/tokens/spacing/_spacing.scss +25 -0
  168. package/utils/sanitizer-utils/index.d.ts +5 -0
  169. package/utils/sanitizer-utils/public-api.d.ts +1 -0
  170. package/utils/sanitizer-utils/src/sanitizer-utils.d.ts +20 -0
  171. package/components/forms/public-api.d.ts +0 -3
  172. package/components/forms/tk-form-autocomplete-field/index.d.ts +0 -5
  173. package/components/forms/tk-form-autocomplete-field/models/option.model.d.ts +0 -4
  174. package/components/forms/tk-form-autocomplete-field/public-api.d.ts +0 -1
  175. package/components/forms/tk-form-autocomplete-field/tk-form-autocomplete-field.component.d.ts +0 -173
  176. package/components/forms/tk-form-chips-autocomplete-field/index.d.ts +0 -5
  177. package/components/forms/tk-form-chips-autocomplete-field/models/option.model.d.ts +0 -4
  178. package/components/forms/tk-form-chips-autocomplete-field/public-api.d.ts +0 -1
  179. package/components/forms/tk-form-chips-autocomplete-field/tk-form-chips-autocomplete-field.component.d.ts +0 -124
  180. package/components/forms/tk-form-input-field/index.d.ts +0 -5
  181. package/components/forms/tk-form-input-field/public-api.d.ts +0 -1
  182. package/components/forms/tk-form-input-field/tk-form-input-field.component.d.ts +0 -137
  183. package/components/tk-dropdown-list/index.d.ts +0 -5
  184. package/components/tk-dropdown-list/models/dropdown-list-item.model.d.ts +0 -4
  185. package/components/tk-dropdown-list/public-api.d.ts +0 -1
  186. package/components/tk-dropdown-list/tk-dropdown-list.component.d.ts +0 -113
  187. package/components/tk-search-bar/public-api.d.ts +0 -1
  188. package/components/tk-search-bar/tk-search-bar.component.d.ts +0 -25
  189. package/components/tk-typography/public-api.d.ts +0 -1
  190. package/components/tk-typography/tk-typography.component.d.ts +0 -10
  191. package/esm2022/components/forms/public-api.mjs +0 -4
  192. package/esm2022/components/forms/tekus-design-system-components-forms.mjs +0 -5
  193. package/esm2022/components/forms/tk-form-autocomplete-field/models/option.model.mjs +0 -2
  194. package/esm2022/components/forms/tk-form-autocomplete-field/public-api.mjs +0 -2
  195. package/esm2022/components/forms/tk-form-autocomplete-field/tekus-design-system-components-forms-tk-form-autocomplete-field.mjs +0 -5
  196. package/esm2022/components/forms/tk-form-autocomplete-field/tk-form-autocomplete-field.component.mjs +0 -263
  197. package/esm2022/components/forms/tk-form-chips-autocomplete-field/models/option.model.mjs +0 -2
  198. package/esm2022/components/forms/tk-form-chips-autocomplete-field/public-api.mjs +0 -2
  199. package/esm2022/components/forms/tk-form-chips-autocomplete-field/tekus-design-system-components-forms-tk-form-chips-autocomplete-field.mjs +0 -5
  200. package/esm2022/components/forms/tk-form-chips-autocomplete-field/tk-form-chips-autocomplete-field.component.mjs +0 -187
  201. package/esm2022/components/forms/tk-form-input-field/models/validator-with-message.model.mjs +0 -2
  202. package/esm2022/components/forms/tk-form-input-field/public-api.mjs +0 -2
  203. package/esm2022/components/forms/tk-form-input-field/tekus-design-system-components-forms-tk-form-input-field.mjs +0 -5
  204. package/esm2022/components/forms/tk-form-input-field/tk-form-input-field.component.mjs +0 -206
  205. package/esm2022/components/tk-dropdown-list/models/dropdown-list-item.model.mjs +0 -2
  206. package/esm2022/components/tk-dropdown-list/public-api.mjs +0 -2
  207. package/esm2022/components/tk-dropdown-list/tekus-design-system-components-tk-dropdown-list.mjs +0 -5
  208. package/esm2022/components/tk-dropdown-list/tk-dropdown-list.component.mjs +0 -137
  209. package/esm2022/components/tk-search-bar/public-api.mjs +0 -2
  210. package/esm2022/components/tk-search-bar/tekus-design-system-components-tk-search-bar.mjs +0 -5
  211. package/esm2022/components/tk-search-bar/tk-search-bar.component.mjs +0 -49
  212. package/esm2022/components/tk-typography/public-api.mjs +0 -2
  213. package/esm2022/components/tk-typography/tekus-design-system-components-tk-typography.mjs +0 -5
  214. package/esm2022/components/tk-typography/tk-typography.component.mjs +0 -29
  215. package/esm2022/index.mjs +0 -2
  216. package/esm2022/services/typography/models/typographyStyles.model.mjs +0 -2
  217. package/esm2022/services/typography/public-api.mjs +0 -2
  218. package/esm2022/services/typography/tekus-design-system-services-typography.mjs +0 -5
  219. package/esm2022/services/typography/typography.service.mjs +0 -84
  220. package/esm2022/tekus-design-system.mjs +0 -5
  221. package/fesm2022/tekus-design-system-components-forms-tk-form-autocomplete-field.mjs +0 -270
  222. package/fesm2022/tekus-design-system-components-forms-tk-form-autocomplete-field.mjs.map +0 -1
  223. package/fesm2022/tekus-design-system-components-forms-tk-form-chips-autocomplete-field.mjs +0 -194
  224. package/fesm2022/tekus-design-system-components-forms-tk-form-chips-autocomplete-field.mjs.map +0 -1
  225. package/fesm2022/tekus-design-system-components-forms-tk-form-input-field.mjs +0 -213
  226. package/fesm2022/tekus-design-system-components-forms-tk-form-input-field.mjs.map +0 -1
  227. package/fesm2022/tekus-design-system-components-forms.mjs +0 -642
  228. package/fesm2022/tekus-design-system-components-forms.mjs.map +0 -1
  229. package/fesm2022/tekus-design-system-components-tk-dropdown-list.mjs +0 -144
  230. package/fesm2022/tekus-design-system-components-tk-dropdown-list.mjs.map +0 -1
  231. package/fesm2022/tekus-design-system-components-tk-search-bar.mjs +0 -56
  232. package/fesm2022/tekus-design-system-components-tk-search-bar.mjs.map +0 -1
  233. package/fesm2022/tekus-design-system-components-tk-typography.mjs +0 -36
  234. package/fesm2022/tekus-design-system-components-tk-typography.mjs.map +0 -1
  235. package/fesm2022/tekus-design-system-services-typography.mjs +0 -91
  236. package/fesm2022/tekus-design-system-services-typography.mjs.map +0 -1
  237. package/services/typography/public-api.d.ts +0 -1
  238. package/services/typography/typography.service.d.ts +0 -8
  239. /package/{services/typography/models → core/types/src/typography-styles}/typographyStyles.model.d.ts +0 -0
  240. /package/{components/forms/tk-form-input-field/models → core/types/src/validator-with-message}/validator-with-message.model.d.ts +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tekus-design-system-components-fallback-view.mjs","sources":["../../../projects/design-system/components/fallback-view/src/fallback-view.component.ts","../../../projects/design-system/components/fallback-view/src/fallback-view.component.html","../../../projects/design-system/components/fallback-view/tekus-design-system-components-fallback-view.ts"],"sourcesContent":["import {\n Component,\n EventEmitter,\n Input,\n Output,\n ViewEncapsulation,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ButtonComponent } from '@tekus/design-system/components/button';\nimport { CardModule } from 'primeng/card';\n\nexport type FallbackViewType = 'content' | 'section';\n\n/**\n * @component FallbackViewComponent\n * @description\n * A reusable component for displaying fallback or empty states such as\n * “no results found”, “error loading data”, or “content not available”.\n * It provides a consistent structure with support for an image, title,\n * message, and optional action buttons.\n *\n * The component can be used in two ways:\n * 1. **Via Inputs:** Pass data directly through component inputs (`imageSrc`, `title`, `message`, etc.).\n * 2. **Via Content Projection (`ng-content`):** Use your own HTML structure for full customization.\n *\n * @usage\n * ### Basic Usage (via Inputs)\n * ```html\n * <tk-fallback-view\n * imageSrc=\"assets/img/empty-state.svg\"\n * title=\"No Items Found\"\n * message=\"There are currently no items to display. Try adding one.\"\n * buttonLabel=\"Add New Item\"\n * linkLabel=\"Learn More\"\n * (buttonAction)=\"handleAddNewItem()\"\n * (linkAction)=\"handleLearnMore()\">\n * </tk-fallback-view>\n * ```\n *\n * ### Compact Variant (Section type)\n * ```html\n * <tk-fallback-view\n * [type]=\"'small'\"\n * imageSrc=\"assets/img/check.svg\"\n * message=\"Saved successfully\">\n * </tk-fallback-view>\n * ```\n *\n * ### Advanced Usage (via ng-content)\n * ```html\n * <tk-fallback-view [type]=\"'content'\">\n * <img image src=\"assets/img/empty-state.svg\" alt=\"Tekus logo\">\n * <h2 title>Custom Title</h2>\n * <p message>\n * This is a <b>custom message</b> with <strong>HTML content</strong>.\n * </p>\n * <div actions>\n * <tk-button\n * label=\"Primary Action\"\n * severity=\"primary\"\n * (click)=\"onPrimaryAction()\">\n * </tk-button>\n * <tk-button\n * label=\"Secondary Action\"\n * [link]=\"true\"\n * (click)=\"onSecondaryAction()\">\n * </tk-button>\n * </div>\n * </tk-fallback-view>\n * ```\n */\n\n@Component({\n selector: 'tk-fallback-view',\n standalone: true,\n imports: [CommonModule, ButtonComponent, CardModule],\n templateUrl: './fallback-view.component.html',\n styleUrl: './fallback-view.component.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class FallbackViewComponent {\n /**\n * @property {FallbackViewType} type\n * @description\n * Controls the overall type and spacing of the component.\n * - `'content'`: Standard size.\n * - `'section'`: A more compact version.\n *\n * @default `'default'`\n */\n @Input() type: FallbackViewType = 'content';\n\n /**\n * @property {string} imageSrc\n * @description\n * The URL for the illustrative image to be displayed at the top.\n *\n * @default `''`\n */\n @Input() imageSrc = '';\n\n /**\n * @property {string} illustrationAlt\n * Descriptive alternative text for the image. Improves accessibility.\n */\n @Input() illustrationAlt = '';\n\n /**\n * @property {string} title\n * @description\n * The main title or heading of the fallback view.\n *\n * @default `''`\n */\n @Input() title = '';\n\n /**\n * @property {string} message\n * @description\n * The descriptive text or message displayed below the title.\n *\n * @default `''`\n */\n @Input() message = '';\n\n /**\n * @property {string} buttonLabel\n * @description\n * Text for the primary action button. If left empty, the button is not rendered.\n *\n * @default `''`\n */\n @Input() buttonLabel = '';\n\n /**\n * @property {string} linkLabel\n * @description\n * Text for the secondary action, which is styled as a link.\n * If left empty, the link is not rendered.\n *\n * @default `''`\n */\n @Input() linkLabel = '';\n\n /**\n * @event buttonAction\n * @description\n * Emits when the main action button is clicked. Listen to this event\n * to handle the primary call-to-action.\n */\n @Output() buttonAction = new EventEmitter<void>();\n\n /**\n * @event linkAction\n * @description\n * Emits when the link-styled button is clicked. Use for secondary\n * or alternative actions.\n */\n @Output() linkAction = new EventEmitter<void>();\n\n /**\n * @method onButtonActionClick\n * @description\n * Internal handler that emits the `primaryAction` event when the\n * main button is clicked.\n */\n onButtonActionClick(): void {\n this.buttonAction.emit();\n }\n\n /**\n * @method onLinkActionClick\n * @description\n * Internal handler that emits the `linkAction` event when the\n * link button is clicked.\n */\n onLinkActionClick(): void {\n this.linkAction.emit();\n }\n}\n","<div\n class=\"tk-fallback-view\"\n [class.tk-fallback-view--section]=\"type === 'section'\">\n <ng-content select=\"[image]\"></ng-content>\n @if (imageSrc) {\n <img\n [src]=\"imageSrc\"\n [alt]=\"illustrationAlt || 'fallback illustration'\"\n class=\"tk-fallback-view__image\" />\n }\n\n <ng-content select=\"[title]\"></ng-content>\n @if (title && type === 'content') {\n <h2 class=\"tk-fallback-view__title\">{{ title }}</h2>\n }\n\n <ng-content select=\"[message]\"></ng-content>\n @if (message) {\n <p class=\"tk-fallback-view__message\">{{ message }}</p>\n }\n\n <ng-content select=\"[actions]\"></ng-content>\n @if (type === 'content' && (buttonLabel || linkLabel)) {\n <div class=\"tk-fallback-view__actions\">\n @if (buttonLabel) {\n <tk-button\n [label]=\"buttonLabel\"\n severity=\"primary\"\n (clicked)=\"onButtonActionClick()\" />\n } @if (linkLabel) {\n <tk-button\n [label]=\"linkLabel\"\n [link]=\"true\"\n (clicked)=\"onLinkActionClick()\" />\n }\n </div>\n }\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;AAaA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyDG;MAUU,qBAAqB,CAAA;AARlC,IAAA,WAAA,GAAA;AASE;;;;;;;;AAQG;QACM,IAAI,CAAA,IAAA,GAAqB,SAAS;AAE3C;;;;;;AAMG;QACM,IAAQ,CAAA,QAAA,GAAG,EAAE;AAEtB;;;AAGG;QACM,IAAe,CAAA,eAAA,GAAG,EAAE;AAE7B;;;;;;AAMG;QACM,IAAK,CAAA,KAAA,GAAG,EAAE;AAEnB;;;;;;AAMG;QACM,IAAO,CAAA,OAAA,GAAG,EAAE;AAErB;;;;;;AAMG;QACM,IAAW,CAAA,WAAA,GAAG,EAAE;AAEzB;;;;;;;AAOG;QACM,IAAS,CAAA,SAAA,GAAG,EAAE;AAEvB;;;;;AAKG;AACO,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAQ;AAEjD;;;;;AAKG;AACO,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAQ;AAqBhD;AAnBC;;;;;AAKG;IACH,mBAAmB,GAAA;AACjB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;;AAG1B;;;;;AAKG;IACH,iBAAiB,GAAA;AACf,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;;+GAjGb,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,6TChFlC,siCAsCA,EAAA,MAAA,EAAA,CAAA,s2CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDqCY,YAAY,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,eAAe,sIAAE,UAAU,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAKxC,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBARjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,EAChB,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,EAAE,eAAe,EAAE,UAAU,CAAC,EAGrC,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,siCAAA,EAAA,MAAA,EAAA,CAAA,s2CAAA,CAAA,EAAA;8BAY5B,IAAI,EAAA,CAAA;sBAAZ;gBASQ,QAAQ,EAAA,CAAA;sBAAhB;gBAMQ,eAAe,EAAA,CAAA;sBAAvB;gBASQ,KAAK,EAAA,CAAA;sBAAb;gBASQ,OAAO,EAAA,CAAA;sBAAf;gBASQ,WAAW,EAAA,CAAA;sBAAnB;gBAUQ,SAAS,EAAA,CAAA;sBAAjB;gBAQS,YAAY,EAAA,CAAA;sBAArB;gBAQS,UAAU,EAAA,CAAA;sBAAnB;;;AE9JH;;AAEG;;;;"}
@@ -0,0 +1,193 @@
1
+ import * as i0 from '@angular/core';
2
+ import { model, inject, computed, HostBinding, Component } from '@angular/core';
3
+ import { GridItemDirective } from '@tekus/design-system/directives/gird-item';
4
+ import { BreakpointObserver } from '@angular/cdk/layout';
5
+ import { toSignal } from '@angular/core/rxjs-interop';
6
+ import { Gutter, Breakpoints, GapGutter, PaddingGridContainer } from '@tekus/design-system/core/types';
7
+
8
+ /**
9
+ * A responsive CSS Grid container that exposes typed, two-way models to control
10
+ * column count, track size, inter-item gutter, and container padding.
11
+ *
12
+ * Behavior:
13
+ * - columns: GridColumns (default 12). Numeric values are capped per Breakpoints
14
+ * (2/3/4/8 for mobileSmall/mobileLarge/tabletVertical/tabletHorizontal). No cap when size is minmax().
15
+ * - size: ComposeSize (default '1fr'). Required to be minmax() when columns is 'auto-fill', otherwise an error is thrown.
16
+ * - gutter: Gutter (default 'normal'), mapped to GapGutter for host gap.
17
+ * - containerType: ContainerType (default 'medium'), mapped to PaddingGridContainer for host padding.
18
+ *
19
+ * Host bindings:
20
+ * - style.grid-template-columns via repeat(...) from computed columns/size.
21
+ * - style.gap via GapGutter.
22
+ * - style.padding via PaddingGridContainer.
23
+ *
24
+ * Intended to wrap GridItemDirective children. Public type is compatible with FixedGridProps | AutoFillGridProps.
25
+ * @selector tk-grid-container
26
+ */
27
+ class GridContainerComponent {
28
+ constructor() {
29
+ /**
30
+ * Two-way bound model defining the number of columns in the grid.
31
+ *
32
+ * The value is capped based on the current screen breakpoint. If the `size` model
33
+ * is a `minmax()` function, the column cap is disabled.
34
+ *
35
+ * @default 12
36
+ * @see GridColumns
37
+ */
38
+ this.columns = model(12);
39
+ /**
40
+ * Two-way bound model defining the spacing between grid items.
41
+ *
42
+ * The value is mapped to a CSS `gap` property based on the `Gutter` type.
43
+ *
44
+ * @default Gutter.normal
45
+ * @see Gutter
46
+ * @see GutterType
47
+ */
48
+ this.gutter = model(Gutter.normal);
49
+ /**
50
+ * Two-way bound model defining the grid track size.
51
+ *
52
+ * Accepts any ComposeSize value (e.g., '1fr', fixed lengths, or minmax()) and
53
+ * drives the computed grid template for the container.
54
+ *
55
+ * @default '1fr'
56
+ * @see ComposeSize
57
+ */
58
+ this.size = model('1fr');
59
+ /**
60
+ * Two-way bound model defining the internal spacing of the grid container.
61
+ *
62
+ * The value is mapped to a CSS `padding` property based on the `PaddingGridContainer` type.
63
+ *
64
+ * @default 'medium'
65
+ * @see ContainerType
66
+ */
67
+ this.containerType = model('medium');
68
+ /**
69
+ * A private static RegExp to validate strings that match the `minmax()` function.
70
+ */
71
+ this.MINMAX_RE = /^minmax\(\s*(\d+(px|rem|em|%|fr))\s*,\s*(\d+(px|rem|em|%|fr))\s*\)$/i;
72
+ /**
73
+ * A private service injection to observe screen breakpoint changes.
74
+ */
75
+ this.breakpointObserver = inject(BreakpointObserver);
76
+ /**
77
+ * A signal derived from `breakpointObserver` to reactively track changes
78
+ * across all defined breakpoints.
79
+ */
80
+ this.screenChanges = toSignal(this.breakpointObserver.observe([
81
+ Breakpoints.mobileSmall,
82
+ Breakpoints.mobile,
83
+ Breakpoints.mobileLarge,
84
+ Breakpoints.tabletVertical,
85
+ Breakpoints.tabletHorizontal,
86
+ Breakpoints.desktopSmall,
87
+ Breakpoints.desktop,
88
+ Breakpoints.desktopLarge,
89
+ ]));
90
+ /**
91
+ * A computed signal that determines the final number of columns for the grid.
92
+ *
93
+ * It caps the `columns` model value based on the current screen breakpoint,
94
+ * unless the `size` model is a `minmax()` function.
95
+ */
96
+ this.finalColumns = computed(() => {
97
+ const breakpoints = this.screenChanges()?.breakpoints;
98
+ const columnsNumber = parseInt(this.columns());
99
+ if (isNaN(columnsNumber) ||
100
+ !breakpoints ||
101
+ this.isMinMax(this.size())) {
102
+ return this.columns();
103
+ }
104
+ let maxColumns = 12;
105
+ if (breakpoints[Breakpoints.mobileSmall] ||
106
+ breakpoints[Breakpoints.mobile]) {
107
+ maxColumns = 2;
108
+ }
109
+ else if (breakpoints[Breakpoints.mobileLarge]) {
110
+ maxColumns = 3;
111
+ }
112
+ else if (breakpoints[Breakpoints.tabletVertical]) {
113
+ maxColumns = 4;
114
+ }
115
+ else if (breakpoints[Breakpoints.tabletHorizontal]) {
116
+ maxColumns = 8;
117
+ }
118
+ return columnsNumber <= maxColumns ? columnsNumber : maxColumns;
119
+ });
120
+ }
121
+ /**
122
+ * Host binding that maps the `gutter` model to the host element's `style.gap` property.
123
+ * @returns The CSS gap value from the `GapGutter` type.
124
+ */
125
+ get hostGap() {
126
+ const key = this.gutter() ?? Gutter.normal;
127
+ return GapGutter[key];
128
+ }
129
+ /**
130
+ * Host binding that sets the `style.grid-template-columns` property based on
131
+ * the computed column count and track size.
132
+ * @returns The computed CSS value for `grid-template-columns`.
133
+ */
134
+ get gridColumns() {
135
+ return this.computeGridTemplateColumns();
136
+ }
137
+ /**
138
+ * Host binding that sets the `style.padding` property based on the `containerType` model.
139
+ * @returns The CSS padding value from the `PaddingGridContainer` type.
140
+ */
141
+ get containerPadding() {
142
+ return PaddingGridContainer[this.containerType()] ?? PaddingGridContainer.medium;
143
+ }
144
+ /**
145
+ * Computes the final `grid-template-columns` string for the host element.
146
+ *
147
+ * It handles both fixed and `auto-fill` column types and validates that the `size`
148
+ * model is a `minmax()` function when `columns` is set to `'auto-fill'`.
149
+ * @returns The CSS value for the `grid-template-columns` property.
150
+ */
151
+ computeGridTemplateColumns() {
152
+ const columnsVal = this.finalColumns();
153
+ const sizeVal = this.size() ?? '1fr';
154
+ if (columnsVal === 'auto-fill') {
155
+ if (this.isMinMax(sizeVal)) {
156
+ return `repeat(auto-fill, ${sizeVal})`;
157
+ }
158
+ throw new Error('When using columns="auto-fill", the "size" model must be a minmax() function, e.g., minmax(200px,1fr).');
159
+ }
160
+ return `repeat(${columnsVal}, ${sizeVal})`;
161
+ }
162
+ /**
163
+ * A private helper method to check if a given value is a valid `minmax()` function string.
164
+ * @param value The value to check.
165
+ * @returns `true` if the value is a valid `minmax()` string, `false` otherwise.
166
+ */
167
+ isMinMax(value) {
168
+ return (typeof value === 'string' &&
169
+ this.MINMAX_RE.test(value.trim()));
170
+ }
171
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: GridContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
172
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.15", type: GridContainerComponent, isStandalone: true, selector: "tk-grid-container", inputs: { columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: false, transformFunction: null }, gutter: { classPropertyName: "gutter", publicName: "gutter", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, containerType: { classPropertyName: "containerType", publicName: "containerType", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { columns: "columnsChange", gutter: "gutterChange", size: "sizeChange", containerType: "containerTypeChange" }, host: { properties: { "style.gap": "this.hostGap", "style.grid-template-columns": "this.gridColumns", "style.padding": "this.containerPadding" } }, ngImport: i0, template: `<ng-content />`, isInline: true, styles: [":host{display:grid}\n"] }); }
173
+ }
174
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: GridContainerComponent, decorators: [{
175
+ type: Component,
176
+ args: [{ selector: 'tk-grid-container', standalone: true, imports: [GridItemDirective], template: `<ng-content />`, styles: [":host{display:grid}\n"] }]
177
+ }], propDecorators: { hostGap: [{
178
+ type: HostBinding,
179
+ args: ['style.gap']
180
+ }], gridColumns: [{
181
+ type: HostBinding,
182
+ args: ['style.grid-template-columns']
183
+ }], containerPadding: [{
184
+ type: HostBinding,
185
+ args: ['style.padding']
186
+ }] } });
187
+
188
+ /**
189
+ * Generated bundle index. Do not edit.
190
+ */
191
+
192
+ export { GridContainerComponent };
193
+ //# sourceMappingURL=tekus-design-system-components-grid-container.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tekus-design-system-components-grid-container.mjs","sources":["../../../projects/design-system/components/grid-container/src/grid-container.component.ts","../../../projects/design-system/components/grid-container/tekus-design-system-components-grid-container.ts"],"sourcesContent":["import { Component, computed, HostBinding, inject, model } from '@angular/core';\nimport { GridItemDirective } from '@tekus/design-system/directives/gird-item';\nimport { BreakpointObserver } from '@angular/cdk/layout';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport {\n AutoFillGridProps,\n ComposeMinMax,\n ComposeSize,\n ContainerType,\n FixedGridProps,\n GapGutter,\n GridColumns,\n PaddingGridContainer,\n Breakpoints,\n Gutter,\n GutterType\n} from '@tekus/design-system/core/types';\n\n/**\n * A responsive CSS Grid container that exposes typed, two-way models to control\n * column count, track size, inter-item gutter, and container padding.\n *\n * Behavior:\n * - columns: GridColumns (default 12). Numeric values are capped per Breakpoints\n * (2/3/4/8 for mobileSmall/mobileLarge/tabletVertical/tabletHorizontal). No cap when size is minmax().\n * - size: ComposeSize (default '1fr'). Required to be minmax() when columns is 'auto-fill', otherwise an error is thrown.\n * - gutter: Gutter (default 'normal'), mapped to GapGutter for host gap.\n * - containerType: ContainerType (default 'medium'), mapped to PaddingGridContainer for host padding.\n *\n * Host bindings:\n * - style.grid-template-columns via repeat(...) from computed columns/size.\n * - style.gap via GapGutter.\n * - style.padding via PaddingGridContainer.\n *\n * Intended to wrap GridItemDirective children. Public type is compatible with FixedGridProps | AutoFillGridProps.\n * @selector tk-grid-container\n */\n@Component({\n selector: 'tk-grid-container',\n standalone: true,\n imports: [GridItemDirective],\n styleUrls: ['./grid-container.component.scss'],\n template: `<ng-content />`,\n})\nexport class GridContainerComponent {\n\n /**\n * Two-way bound model defining the number of columns in the grid.\n *\n * The value is capped based on the current screen breakpoint. If the `size` model\n * is a `minmax()` function, the column cap is disabled.\n *\n * @default 12\n * @see GridColumns\n */\n columns = model<GridColumns>(12);\n\n /**\n * Two-way bound model defining the spacing between grid items.\n *\n * The value is mapped to a CSS `gap` property based on the `Gutter` type.\n *\n * @default Gutter.normal\n * @see Gutter\n * @see GutterType\n */\n gutter = model<GutterType>(Gutter.normal);\n\n /**\n * Two-way bound model defining the grid track size.\n *\n * Accepts any ComposeSize value (e.g., '1fr', fixed lengths, or minmax()) and\n * drives the computed grid template for the container.\n *\n * @default '1fr'\n * @see ComposeSize\n */\n size = model<ComposeSize>('1fr');\n\n /**\n * Two-way bound model defining the internal spacing of the grid container.\n *\n * The value is mapped to a CSS `padding` property based on the `PaddingGridContainer` type.\n *\n * @default 'medium'\n * @see ContainerType\n */\n containerType = model<ContainerType>('medium');\n\n /**\n * A private static RegExp to validate strings that match the `minmax()` function.\n */\n readonly MINMAX_RE = /^minmax\\(\\s*(\\d+(px|rem|em|%|fr))\\s*,\\s*(\\d+(px|rem|em|%|fr))\\s*\\)$/i;\n\n /**\n * A private service injection to observe screen breakpoint changes.\n */\n private readonly breakpointObserver = inject(BreakpointObserver);\n\n /**\n * A signal derived from `breakpointObserver` to reactively track changes\n * across all defined breakpoints.\n */\n screenChanges = toSignal(\n this.breakpointObserver.observe([\n Breakpoints.mobileSmall,\n Breakpoints.mobile,\n Breakpoints.mobileLarge,\n Breakpoints.tabletVertical,\n Breakpoints.tabletHorizontal,\n Breakpoints.desktopSmall,\n Breakpoints.desktop,\n Breakpoints.desktopLarge,\n ])\n );\n\n /**\n * A computed signal that determines the final number of columns for the grid.\n *\n * It caps the `columns` model value based on the current screen breakpoint,\n * unless the `size` model is a `minmax()` function.\n */\n readonly finalColumns = computed(() => {\n const breakpoints = this.screenChanges()?.breakpoints;\n const columnsNumber = parseInt(this.columns() as string);\n if (\n isNaN(columnsNumber) ||\n !breakpoints ||\n this.isMinMax(this.size())\n ) {\n return this.columns();\n }\n\n let maxColumns = 12;\n\n if (\n breakpoints[Breakpoints.mobileSmall] ||\n breakpoints[Breakpoints.mobile]\n ) {\n maxColumns = 2;\n } else if (breakpoints[Breakpoints.mobileLarge]) {\n maxColumns = 3;\n } else if (breakpoints[Breakpoints.tabletVertical]) {\n maxColumns = 4;\n } else if (breakpoints[Breakpoints.tabletHorizontal]) {\n maxColumns = 8;\n }\n\n return columnsNumber <= maxColumns ? columnsNumber : maxColumns;\n });\n\n /**\n * Host binding that maps the `gutter` model to the host element's `style.gap` property.\n * @returns The CSS gap value from the `GapGutter` type.\n */\n @HostBinding('style.gap')\n get hostGap(): GapGutter {\n const key: GutterType = this.gutter() ?? Gutter.normal;\n return GapGutter[key as Gutter];\n }\n\n /**\n * Host binding that sets the `style.grid-template-columns` property based on\n * the computed column count and track size.\n * @returns The computed CSS value for `grid-template-columns`.\n */\n @HostBinding('style.grid-template-columns')\n get gridColumns(): string {\n return this.computeGridTemplateColumns();\n }\n\n /**\n * Host binding that sets the `style.padding` property based on the `containerType` model.\n * @returns The CSS padding value from the `PaddingGridContainer` type.\n */\n @HostBinding('style.padding')\n get containerPadding(): string {\n return PaddingGridContainer[this.containerType() as keyof typeof PaddingGridContainer] ?? PaddingGridContainer.medium;\n }\n\n /**\n * Computes the final `grid-template-columns` string for the host element.\n *\n * It handles both fixed and `auto-fill` column types and validates that the `size`\n * model is a `minmax()` function when `columns` is set to `'auto-fill'`.\n * @returns The CSS value for the `grid-template-columns` property.\n */\n computeGridTemplateColumns(): string {\n const columnsVal = this.finalColumns();\n const sizeVal = this.size() ?? '1fr';\n\n if (columnsVal === 'auto-fill') {\n if (this.isMinMax(sizeVal)) {\n return `repeat(auto-fill, ${sizeVal})`;\n }\n throw new Error(\n 'When using columns=\"auto-fill\", the \"size\" model must be a minmax() function, e.g., minmax(200px,1fr).'\n );\n }\n\n return `repeat(${columnsVal}, ${sizeVal})`;\n }\n\n /**\n * A private helper method to check if a given value is a valid `minmax()` function string.\n * @param value The value to check.\n * @returns `true` if the value is a valid `minmax()` string, `false` otherwise.\n */\n private isMinMax(value: unknown): value is ComposeMinMax {\n return (\n typeof value === 'string' &&\n this.MINMAX_RE.test(value.trim())\n );\n }\n}\n\n/**\n * A public type to represent an instance of the `GridContainerComponent` class,\n * combined with its public input properties.\n *\n * This allows for better type-checking when the component is used in a template.\n */\nexport type GridComponent = new () => GridContainerComponent &\n (FixedGridProps | AutoFillGridProps);\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}