@tinya-code/gas-admin-ui 0.2.0-alpha.15 → 0.2.0-alpha.18

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 (368) hide show
  1. package/fesm2022/tinya-code-gas-admin-ui-badge-EeCA_l-o.mjs +84 -0
  2. package/fesm2022/tinya-code-gas-admin-ui-badge-EeCA_l-o.mjs.map +1 -0
  3. package/fesm2022/tinya-code-gas-admin-ui-bar-chart-G7sEMSBY.mjs +140 -0
  4. package/fesm2022/tinya-code-gas-admin-ui-bar-chart-G7sEMSBY.mjs.map +1 -0
  5. package/fesm2022/tinya-code-gas-admin-ui-boolean-B2ASKL0E.mjs +113 -0
  6. package/fesm2022/tinya-code-gas-admin-ui-boolean-B2ASKL0E.mjs.map +1 -0
  7. package/fesm2022/tinya-code-gas-admin-ui-button-BQjNW8KB.mjs +163 -0
  8. package/fesm2022/tinya-code-gas-admin-ui-button-BQjNW8KB.mjs.map +1 -0
  9. package/fesm2022/tinya-code-gas-admin-ui-calendar-view-DCY8bj2V.mjs +1027 -0
  10. package/fesm2022/tinya-code-gas-admin-ui-calendar-view-DCY8bj2V.mjs.map +1 -0
  11. package/fesm2022/tinya-code-gas-admin-ui-chart-line-BjdlKHoH.mjs +278 -0
  12. package/fesm2022/tinya-code-gas-admin-ui-chart-line-BjdlKHoH.mjs.map +1 -0
  13. package/fesm2022/tinya-code-gas-admin-ui-color-Dljh_By3.mjs +107 -0
  14. package/fesm2022/tinya-code-gas-admin-ui-color-Dljh_By3.mjs.map +1 -0
  15. package/fesm2022/tinya-code-gas-admin-ui-condition-evaluator-DY2k1M3C.mjs +101 -0
  16. package/fesm2022/tinya-code-gas-admin-ui-condition-evaluator-DY2k1M3C.mjs.map +1 -0
  17. package/fesm2022/tinya-code-gas-admin-ui-currency-BvuF3Z63.mjs +141 -0
  18. package/fesm2022/tinya-code-gas-admin-ui-currency-BvuF3Z63.mjs.map +1 -0
  19. package/fesm2022/tinya-code-gas-admin-ui-data-source.service-96FSbN72.mjs +88 -0
  20. package/fesm2022/tinya-code-gas-admin-ui-data-source.service-96FSbN72.mjs.map +1 -0
  21. package/fesm2022/tinya-code-gas-admin-ui-date-1SJGXZrd.mjs +107 -0
  22. package/fesm2022/tinya-code-gas-admin-ui-date-1SJGXZrd.mjs.map +1 -0
  23. package/fesm2022/tinya-code-gas-admin-ui-display-badge-fwk6sDU7.mjs +140 -0
  24. package/fesm2022/tinya-code-gas-admin-ui-display-badge-fwk6sDU7.mjs.map +1 -0
  25. package/fesm2022/tinya-code-gas-admin-ui-display-date-D7zLiDiG.mjs +119 -0
  26. package/fesm2022/tinya-code-gas-admin-ui-display-date-D7zLiDiG.mjs.map +1 -0
  27. package/fesm2022/tinya-code-gas-admin-ui-display-file-BiIhqvQC.mjs +125 -0
  28. package/fesm2022/tinya-code-gas-admin-ui-display-file-BiIhqvQC.mjs.map +1 -0
  29. package/fesm2022/tinya-code-gas-admin-ui-display-image-C1dhnZi1.mjs +152 -0
  30. package/fesm2022/tinya-code-gas-admin-ui-display-image-C1dhnZi1.mjs.map +1 -0
  31. package/fesm2022/tinya-code-gas-admin-ui-display-list-DOEuUbGe.mjs +211 -0
  32. package/fesm2022/tinya-code-gas-admin-ui-display-list-DOEuUbGe.mjs.map +1 -0
  33. package/fesm2022/tinya-code-gas-admin-ui-display-number-DDMzr4Hn.mjs +116 -0
  34. package/fesm2022/tinya-code-gas-admin-ui-display-number-DDMzr4Hn.mjs.map +1 -0
  35. package/fesm2022/tinya-code-gas-admin-ui-display-text-B8CdVNpv.mjs +111 -0
  36. package/fesm2022/tinya-code-gas-admin-ui-display-text-B8CdVNpv.mjs.map +1 -0
  37. package/fesm2022/tinya-code-gas-admin-ui-dropdown-C3blvmE1.mjs +122 -0
  38. package/fesm2022/tinya-code-gas-admin-ui-dropdown-C3blvmE1.mjs.map +1 -0
  39. package/fesm2022/tinya-code-gas-admin-ui-email-CT_O5ihA.mjs +107 -0
  40. package/fesm2022/tinya-code-gas-admin-ui-email-CT_O5ihA.mjs.map +1 -0
  41. package/fesm2022/tinya-code-gas-admin-ui-empty-state-BMc0QtoT.mjs +109 -0
  42. package/fesm2022/tinya-code-gas-admin-ui-empty-state-BMc0QtoT.mjs.map +1 -0
  43. package/fesm2022/tinya-code-gas-admin-ui-error-mapper.service-DY5y1FjE.mjs +45 -0
  44. package/fesm2022/tinya-code-gas-admin-ui-error-mapper.service-DY5y1FjE.mjs.map +1 -0
  45. package/fesm2022/tinya-code-gas-admin-ui-field-aria-BD1Wiggc.mjs +50 -0
  46. package/fesm2022/tinya-code-gas-admin-ui-field-aria-BD1Wiggc.mjs.map +1 -0
  47. package/fesm2022/tinya-code-gas-admin-ui-field-node-CIK6KNN_.mjs +24 -0
  48. package/fesm2022/tinya-code-gas-admin-ui-field-node-CIK6KNN_.mjs.map +1 -0
  49. package/fesm2022/tinya-code-gas-admin-ui-field-path-B4-FTBGZ.mjs +27 -0
  50. package/fesm2022/tinya-code-gas-admin-ui-field-path-B4-FTBGZ.mjs.map +1 -0
  51. package/fesm2022/tinya-code-gas-admin-ui-file-Dmxioog7.mjs +408 -0
  52. package/fesm2022/tinya-code-gas-admin-ui-file-Dmxioog7.mjs.map +1 -0
  53. package/fesm2022/tinya-code-gas-admin-ui-form-view-CEe7aZ4m.mjs +4516 -0
  54. package/fesm2022/tinya-code-gas-admin-ui-form-view-CEe7aZ4m.mjs.map +1 -0
  55. package/fesm2022/tinya-code-gas-admin-ui-format-badge-CK8ct5Wk.mjs +82 -0
  56. package/fesm2022/tinya-code-gas-admin-ui-format-badge-CK8ct5Wk.mjs.map +1 -0
  57. package/fesm2022/tinya-code-gas-admin-ui-format-boolean-ClzezZz-.mjs +105 -0
  58. package/fesm2022/tinya-code-gas-admin-ui-format-boolean-ClzezZz-.mjs.map +1 -0
  59. package/fesm2022/tinya-code-gas-admin-ui-format-currency-CVmniKml.mjs +65 -0
  60. package/fesm2022/tinya-code-gas-admin-ui-format-currency-CVmniKml.mjs.map +1 -0
  61. package/fesm2022/tinya-code-gas-admin-ui-format-date-Dr1YsDd_.mjs +65 -0
  62. package/fesm2022/tinya-code-gas-admin-ui-format-date-Dr1YsDd_.mjs.map +1 -0
  63. package/fesm2022/tinya-code-gas-admin-ui-format-number-CWCjpI4n.mjs +65 -0
  64. package/fesm2022/tinya-code-gas-admin-ui-format-number-CWCjpI4n.mjs.map +1 -0
  65. package/fesm2022/tinya-code-gas-admin-ui-format-text-DBOgJkH0.mjs +59 -0
  66. package/fesm2022/tinya-code-gas-admin-ui-format-text-DBOgJkH0.mjs.map +1 -0
  67. package/fesm2022/tinya-code-gas-admin-ui-format-thumbnail-PCRvxWKt.mjs +94 -0
  68. package/fesm2022/tinya-code-gas-admin-ui-format-thumbnail-PCRvxWKt.mjs.map +1 -0
  69. package/fesm2022/tinya-code-gas-admin-ui-gap-sorting-iTdy_DYG.mjs +72 -0
  70. package/fesm2022/tinya-code-gas-admin-ui-gap-sorting-iTdy_DYG.mjs.map +1 -0
  71. package/fesm2022/tinya-code-gas-admin-ui-group-h7-O8tt4.mjs +238 -0
  72. package/fesm2022/tinya-code-gas-admin-ui-group-h7-O8tt4.mjs.map +1 -0
  73. package/fesm2022/tinya-code-gas-admin-ui-image-7UhJ7nqI.mjs +416 -0
  74. package/fesm2022/tinya-code-gas-admin-ui-image-7UhJ7nqI.mjs.map +1 -0
  75. package/fesm2022/tinya-code-gas-admin-ui-kanban-view-Dl0Ol5Kb.mjs +439 -0
  76. package/fesm2022/tinya-code-gas-admin-ui-kanban-view-Dl0Ol5Kb.mjs.map +1 -0
  77. package/fesm2022/tinya-code-gas-admin-ui-key-value-nVdgg5at.mjs +513 -0
  78. package/fesm2022/tinya-code-gas-admin-ui-key-value-nVdgg5at.mjs.map +1 -0
  79. package/fesm2022/tinya-code-gas-admin-ui-list-DTtCYS4d.mjs +637 -0
  80. package/fesm2022/tinya-code-gas-admin-ui-list-DTtCYS4d.mjs.map +1 -0
  81. package/fesm2022/tinya-code-gas-admin-ui-metric-card-DnGMQL8l.mjs +127 -0
  82. package/fesm2022/tinya-code-gas-admin-ui-metric-card-DnGMQL8l.mjs.map +1 -0
  83. package/fesm2022/tinya-code-gas-admin-ui-multiselect-PB28e-jl.mjs +251 -0
  84. package/fesm2022/tinya-code-gas-admin-ui-multiselect-PB28e-jl.mjs.map +1 -0
  85. package/fesm2022/tinya-code-gas-admin-ui-notification.service-LjSULER6.mjs +66 -0
  86. package/fesm2022/tinya-code-gas-admin-ui-notification.service-LjSULER6.mjs.map +1 -0
  87. package/fesm2022/tinya-code-gas-admin-ui-number-JNr7glc8.mjs +114 -0
  88. package/fesm2022/tinya-code-gas-admin-ui-number-JNr7glc8.mjs.map +1 -0
  89. package/fesm2022/tinya-code-gas-admin-ui-phone-jR417hPf.mjs +116 -0
  90. package/fesm2022/tinya-code-gas-admin-ui-phone-jR417hPf.mjs.map +1 -0
  91. package/fesm2022/tinya-code-gas-admin-ui-quick-actions-DCQ6emmF.mjs +235 -0
  92. package/fesm2022/tinya-code-gas-admin-ui-quick-actions-DCQ6emmF.mjs.map +1 -0
  93. package/fesm2022/tinya-code-gas-admin-ui-radio-mode-DxvN07DY.mjs +8 -0
  94. package/fesm2022/tinya-code-gas-admin-ui-radio-mode-DxvN07DY.mjs.map +1 -0
  95. package/fesm2022/tinya-code-gas-admin-ui-readonly-text-BL7-4qie.mjs +124 -0
  96. package/fesm2022/tinya-code-gas-admin-ui-readonly-text-BL7-4qie.mjs.map +1 -0
  97. package/fesm2022/tinya-code-gas-admin-ui-record-list-BiZfnd_7.mjs +249 -0
  98. package/fesm2022/tinya-code-gas-admin-ui-record-list-BiZfnd_7.mjs.map +1 -0
  99. package/fesm2022/tinya-code-gas-admin-ui-relation-drawer.service-B0kT8EiW.mjs +39 -0
  100. package/fesm2022/tinya-code-gas-admin-ui-relation-drawer.service-B0kT8EiW.mjs.map +1 -0
  101. package/fesm2022/tinya-code-gas-admin-ui-relation-ykpJ3PYl.mjs +309 -0
  102. package/fesm2022/tinya-code-gas-admin-ui-relation-ykpJ3PYl.mjs.map +1 -0
  103. package/fesm2022/tinya-code-gas-admin-ui-render-registry-B88Pme-y.mjs +576 -0
  104. package/fesm2022/tinya-code-gas-admin-ui-render-registry-B88Pme-y.mjs.map +1 -0
  105. package/fesm2022/tinya-code-gas-admin-ui-rich-select-CIHaOrbU.mjs +161 -0
  106. package/fesm2022/tinya-code-gas-admin-ui-rich-select-CIHaOrbU.mjs.map +1 -0
  107. package/fesm2022/tinya-code-gas-admin-ui-rolldown-runtime-DpJrqANO.mjs +11 -0
  108. package/fesm2022/tinya-code-gas-admin-ui-schema-catalog-D0Pk0wAN.mjs +685 -0
  109. package/fesm2022/tinya-code-gas-admin-ui-schema-catalog-D0Pk0wAN.mjs.map +1 -0
  110. package/fesm2022/tinya-code-gas-admin-ui-seed-DkVZbxPP.mjs +80 -0
  111. package/fesm2022/tinya-code-gas-admin-ui-seed-DkVZbxPP.mjs.map +1 -0
  112. package/fesm2022/tinya-code-gas-admin-ui-select-CDwX9yNO.mjs +296 -0
  113. package/fesm2022/tinya-code-gas-admin-ui-select-CDwX9yNO.mjs.map +1 -0
  114. package/fesm2022/tinya-code-gas-admin-ui-skeleton-DnWK0tcZ.mjs +119 -0
  115. package/fesm2022/tinya-code-gas-admin-ui-skeleton-DnWK0tcZ.mjs.map +1 -0
  116. package/fesm2022/tinya-code-gas-admin-ui-slug-DU58cbiY.mjs +158 -0
  117. package/fesm2022/tinya-code-gas-admin-ui-slug-DU58cbiY.mjs.map +1 -0
  118. package/fesm2022/tinya-code-gas-admin-ui-source-options-B9R4mw8-.mjs +26 -0
  119. package/fesm2022/tinya-code-gas-admin-ui-source-options-B9R4mw8-.mjs.map +1 -0
  120. package/fesm2022/tinya-code-gas-admin-ui-status-progress-DmeG8htE.mjs +205 -0
  121. package/fesm2022/tinya-code-gas-admin-ui-status-progress-DmeG8htE.mjs.map +1 -0
  122. package/fesm2022/tinya-code-gas-admin-ui-string-list-gleasqzD.mjs +432 -0
  123. package/fesm2022/tinya-code-gas-admin-ui-string-list-gleasqzD.mjs.map +1 -0
  124. package/fesm2022/tinya-code-gas-admin-ui-template-interpolator-ewv7CkNX.mjs +36 -0
  125. package/fesm2022/tinya-code-gas-admin-ui-template-interpolator-ewv7CkNX.mjs.map +1 -0
  126. package/fesm2022/tinya-code-gas-admin-ui-text-CUPmL7W_.mjs +107 -0
  127. package/fesm2022/tinya-code-gas-admin-ui-text-CUPmL7W_.mjs.map +1 -0
  128. package/fesm2022/tinya-code-gas-admin-ui-textarea-CGLSIW13.mjs +223 -0
  129. package/fesm2022/tinya-code-gas-admin-ui-textarea-CGLSIW13.mjs.map +1 -0
  130. package/fesm2022/tinya-code-gas-admin-ui-time-BcHzsTWf.mjs +107 -0
  131. package/fesm2022/tinya-code-gas-admin-ui-time-BcHzsTWf.mjs.map +1 -0
  132. package/fesm2022/tinya-code-gas-admin-ui-upload.service-CZPEPCeN.mjs +60 -0
  133. package/fesm2022/tinya-code-gas-admin-ui-upload.service-CZPEPCeN.mjs.map +1 -0
  134. package/fesm2022/tinya-code-gas-admin-ui-url-GO4LZi__.mjs +141 -0
  135. package/fesm2022/tinya-code-gas-admin-ui-url-GO4LZi__.mjs.map +1 -0
  136. package/fesm2022/tinya-code-gas-admin-ui.mjs +4738 -0
  137. package/fesm2022/tinya-code-gas-admin-ui.mjs.map +1 -0
  138. package/package.json +15 -3
  139. package/types/tinya-code-gas-admin-ui.d.ts +3634 -0
  140. package/ng-package.json +0 -7
  141. package/src/lib/actions/action-registry.spec.ts +0 -52
  142. package/src/lib/actions/action-registry.ts +0 -126
  143. package/src/lib/actions/action-service.spec.ts +0 -215
  144. package/src/lib/actions/action-service.ts +0 -87
  145. package/src/lib/actions/descriptors.spec.ts +0 -155
  146. package/src/lib/actions/descriptors.ts +0 -154
  147. package/src/lib/columns/column-cell.ts +0 -33
  148. package/src/lib/columns/column-defaults.spec.ts +0 -99
  149. package/src/lib/columns/column-defaults.ts +0 -84
  150. package/src/lib/columns/column-format.spec.ts +0 -274
  151. package/src/lib/columns/descriptors.ts +0 -113
  152. package/src/lib/columns/format-badge.ts +0 -51
  153. package/src/lib/columns/format-boolean.ts +0 -58
  154. package/src/lib/columns/format-currency.ts +0 -30
  155. package/src/lib/columns/format-date.ts +0 -35
  156. package/src/lib/columns/format-number.ts +0 -32
  157. package/src/lib/columns/format-text.ts +0 -23
  158. package/src/lib/columns/format-thumbnail.ts +0 -63
  159. package/src/lib/core/adapters/firebase-auth.adapter.ts +0 -6
  160. package/src/lib/core/guards/auth.guard.spec.ts +0 -88
  161. package/src/lib/core/guards/auth.guard.ts +0 -48
  162. package/src/lib/core/guards/unsaved-changes.guard.ts +0 -16
  163. package/src/lib/core/interceptors/api-error.interceptor.spec.ts +0 -182
  164. package/src/lib/core/interceptors/api-error.interceptor.ts +0 -87
  165. package/src/lib/core/models/api.model.ts +0 -104
  166. package/src/lib/core/models/schema-descriptions.ts +0 -118
  167. package/src/lib/core/models/schema.model.ts +0 -1097
  168. package/src/lib/core/registry/composition-validator.spec.ts +0 -358
  169. package/src/lib/core/registry/composition-validator.ts +0 -270
  170. package/src/lib/core/registry/field-validators.spec.ts +0 -199
  171. package/src/lib/core/registry/field-validators.ts +0 -440
  172. package/src/lib/core/registry/render-host.spec.ts +0 -208
  173. package/src/lib/core/registry/render-host.ts +0 -646
  174. package/src/lib/core/registry/render-registry.spec.ts +0 -96
  175. package/src/lib/core/registry/render-registry.ts +0 -312
  176. package/src/lib/core/registry/schema-catalog.ts +0 -156
  177. package/src/lib/core/services/api.service.spec.ts +0 -1142
  178. package/src/lib/core/services/api.service.ts +0 -371
  179. package/src/lib/core/services/auth.service.spec.ts +0 -653
  180. package/src/lib/core/services/auth.service.ts +0 -503
  181. package/src/lib/core/services/config.service.spec.ts +0 -121
  182. package/src/lib/core/services/config.service.ts +0 -119
  183. package/src/lib/core/services/data-source.service.spec.ts +0 -179
  184. package/src/lib/core/services/data-source.service.ts +0 -142
  185. package/src/lib/core/services/error-mapper.service.spec.ts +0 -50
  186. package/src/lib/core/services/error-mapper.service.ts +0 -49
  187. package/src/lib/core/services/notification.service.ts +0 -73
  188. package/src/lib/core/services/relation-drawer.service.ts +0 -41
  189. package/src/lib/core/services/theme.service.spec.ts +0 -106
  190. package/src/lib/core/services/theme.service.ts +0 -86
  191. package/src/lib/core/services/transport.spec.ts +0 -198
  192. package/src/lib/core/services/transport.ts +0 -164
  193. package/src/lib/core/services/upload.service.ts +0 -81
  194. package/src/lib/core/testing/categories.schema.ts +0 -125
  195. package/src/lib/core/testing/orders.schema.ts +0 -372
  196. package/src/lib/core/testing/products.schema.ts +0 -258
  197. package/src/lib/core/testing/site.schema.ts +0 -195
  198. package/src/lib/core/testing/test-catalog.ts +0 -21
  199. package/src/lib/core/tokens.ts +0 -112
  200. package/src/lib/core/utils/clipboard.spec.ts +0 -55
  201. package/src/lib/core/utils/clipboard.ts +0 -90
  202. package/src/lib/core/utils/context-resolver.spec.ts +0 -95
  203. package/src/lib/core/utils/context-resolver.ts +0 -101
  204. package/src/lib/core/utils/response-unwrapper.spec.ts +0 -70
  205. package/src/lib/core/utils/response-unwrapper.ts +0 -103
  206. package/src/lib/core/utils/source-options.spec.ts +0 -96
  207. package/src/lib/core/utils/source-options.ts +0 -54
  208. package/src/lib/core/utils/template-interpolator.spec.ts +0 -59
  209. package/src/lib/core/utils/template-interpolator.ts +0 -56
  210. package/src/lib/core/view-navigation/view-navigation.service.spec.ts +0 -207
  211. package/src/lib/core/view-navigation/view-navigation.service.ts +0 -132
  212. package/src/lib/fields/boolean/boolean.descriptor.ts +0 -11
  213. package/src/lib/fields/boolean/boolean.ts +0 -40
  214. package/src/lib/fields/color/color.descriptor.ts +0 -12
  215. package/src/lib/fields/color/color.ts +0 -34
  216. package/src/lib/fields/currency/currency.descriptor.ts +0 -12
  217. package/src/lib/fields/currency/currency.ts +0 -67
  218. package/src/lib/fields/date/date.descriptor.ts +0 -12
  219. package/src/lib/fields/date/date.ts +0 -36
  220. package/src/lib/fields/descriptors.ts +0 -122
  221. package/src/lib/fields/display/display-badge.ts +0 -65
  222. package/src/lib/fields/display/display-date.ts +0 -39
  223. package/src/lib/fields/display/display-defaults.ts +0 -84
  224. package/src/lib/fields/display/display-file.ts +0 -41
  225. package/src/lib/fields/display/display-image.ts +0 -54
  226. package/src/lib/fields/display/display-list.ts +0 -107
  227. package/src/lib/fields/display/display-number.ts +0 -41
  228. package/src/lib/fields/display/display-text.ts +0 -42
  229. package/src/lib/fields/display/display.spec.ts +0 -242
  230. package/src/lib/fields/dropdown/dropdown.descriptor.ts +0 -12
  231. package/src/lib/fields/dropdown/dropdown.ts +0 -45
  232. package/src/lib/fields/email/email.descriptor.ts +0 -12
  233. package/src/lib/fields/email/email.ts +0 -28
  234. package/src/lib/fields/field-aria.ts +0 -60
  235. package/src/lib/fields/field-host/field-host.spec.ts +0 -118
  236. package/src/lib/fields/field-host/field-host.ts +0 -47
  237. package/src/lib/fields/field-node.ts +0 -88
  238. package/src/lib/fields/file/file.descriptor.ts +0 -14
  239. package/src/lib/fields/file/file.spec.ts +0 -134
  240. package/src/lib/fields/file/file.ts +0 -281
  241. package/src/lib/fields/group/group.descriptor.ts +0 -21
  242. package/src/lib/fields/group/group.ts +0 -110
  243. package/src/lib/fields/image/image.descriptor.ts +0 -12
  244. package/src/lib/fields/image/image.spec.ts +0 -117
  245. package/src/lib/fields/image/image.ts +0 -281
  246. package/src/lib/fields/key-value/key-value.descriptor.ts +0 -11
  247. package/src/lib/fields/key-value/key-value.ts +0 -283
  248. package/src/lib/fields/list/list.descriptor.ts +0 -21
  249. package/src/lib/fields/list/list.ts +0 -376
  250. package/src/lib/fields/multiselect/multiselect.descriptor.ts +0 -11
  251. package/src/lib/fields/multiselect/multiselect.spec.ts +0 -142
  252. package/src/lib/fields/multiselect/multiselect.ts +0 -152
  253. package/src/lib/fields/number/number.descriptor.ts +0 -12
  254. package/src/lib/fields/number/number.ts +0 -40
  255. package/src/lib/fields/phone/phone.descriptor.ts +0 -12
  256. package/src/lib/fields/phone/phone.ts +0 -46
  257. package/src/lib/fields/readonly-text/readonly-text.descriptor.ts +0 -12
  258. package/src/lib/fields/readonly-text/readonly-text.ts +0 -58
  259. package/src/lib/fields/relation/relation.descriptor.ts +0 -12
  260. package/src/lib/fields/relation/relation.spec.ts +0 -193
  261. package/src/lib/fields/relation/relation.ts +0 -224
  262. package/src/lib/fields/rich-select/rich-select.descriptor.ts +0 -12
  263. package/src/lib/fields/rich-select/rich-select.ts +0 -175
  264. package/src/lib/fields/select/radio-mode.ts +0 -25
  265. package/src/lib/fields/select/select.descriptor.ts +0 -12
  266. package/src/lib/fields/select/select.spec.ts +0 -162
  267. package/src/lib/fields/select/select.ts +0 -210
  268. package/src/lib/fields/slug/slug.descriptor.ts +0 -19
  269. package/src/lib/fields/slug/slug.ts +0 -67
  270. package/src/lib/fields/string-list/string-list.descriptor.ts +0 -11
  271. package/src/lib/fields/string-list/string-list.ts +0 -222
  272. package/src/lib/fields/text/text.descriptor.ts +0 -12
  273. package/src/lib/fields/text/text.ts +0 -35
  274. package/src/lib/fields/textarea/textarea.descriptor.ts +0 -12
  275. package/src/lib/fields/textarea/textarea.spec.ts +0 -117
  276. package/src/lib/fields/textarea/textarea.ts +0 -126
  277. package/src/lib/fields/time/time.descriptor.ts +0 -12
  278. package/src/lib/fields/time/time.ts +0 -28
  279. package/src/lib/fields/unknown-render/unknown-render.ts +0 -49
  280. package/src/lib/fields/url/url.descriptor.ts +0 -12
  281. package/src/lib/fields/url/url.ts +0 -53
  282. package/src/lib/gas-admin-ui.spec.ts +0 -21
  283. package/src/lib/gas-admin-ui.ts +0 -9
  284. package/src/lib/layouts/descriptors.ts +0 -9
  285. package/src/lib/pages/dashboard/dashboard.ts +0 -167
  286. package/src/lib/pages/detail-view/detail-view.spec.ts +0 -333
  287. package/src/lib/pages/detail-view/detail-view.ts +0 -570
  288. package/src/lib/pages/drawer-form/drawer-form.ts +0 -228
  289. package/src/lib/pages/form-view/form-model.ts +0 -88
  290. package/src/lib/pages/form-view/form-schema.ts +0 -255
  291. package/src/lib/pages/form-view/form-view.ts +0 -1622
  292. package/src/lib/pages/list-view/list-view.formats.spec.ts +0 -214
  293. package/src/lib/pages/list-view/list-view.ts +0 -882
  294. package/src/lib/pages/login/login.spec.ts +0 -109
  295. package/src/lib/pages/login/login.ts +0 -227
  296. package/src/lib/pages/resource-page/resource-page.ts +0 -234
  297. package/src/lib/shared/components/badge/badge.ts +0 -35
  298. package/src/lib/shared/components/button/button.ts +0 -65
  299. package/src/lib/shared/components/confirm-dialog/confirm-dialog.ts +0 -48
  300. package/src/lib/shared/components/copy-button/copy-button.ts +0 -56
  301. package/src/lib/shared/components/copy-share/copy-share.spec.ts +0 -122
  302. package/src/lib/shared/components/copy-share/copy-share.ts +0 -107
  303. package/src/lib/shared/components/drawer/drawer.spec.ts +0 -127
  304. package/src/lib/shared/components/drawer/drawer.ts +0 -172
  305. package/src/lib/shared/components/empty-state/empty-state.ts +0 -30
  306. package/src/lib/shared/components/modal/modal.spec.ts +0 -149
  307. package/src/lib/shared/components/modal/modal.ts +0 -145
  308. package/src/lib/shared/components/post-create-modal/post-create-modal.spec.ts +0 -165
  309. package/src/lib/shared/components/post-create-modal/post-create-modal.ts +0 -159
  310. package/src/lib/shared/components/skeleton/skeleton.ts +0 -31
  311. package/src/lib/shared/components/toast/toast.ts +0 -58
  312. package/src/lib/shared/utils/col-span.ts +0 -25
  313. package/src/lib/shared/utils/condition-evaluator.ts +0 -53
  314. package/src/lib/shared/utils/depends-on.ts +0 -48
  315. package/src/lib/shared/utils/dialog-focus.ts +0 -28
  316. package/src/lib/shared/utils/field-path.ts +0 -49
  317. package/src/lib/shared/utils/gap-sorting.ts +0 -144
  318. package/src/lib/shared/utils/seed.spec.ts +0 -64
  319. package/src/lib/shared/utils/seed.ts +0 -149
  320. package/src/lib/shared/utils/slugify.ts +0 -13
  321. package/src/lib/shared/utils/validators.ts +0 -41
  322. package/src/lib/shell/layout/layout.ts +0 -63
  323. package/src/lib/shell/shell.routes.spec.ts +0 -59
  324. package/src/lib/shell/shell.routes.ts +0 -122
  325. package/src/lib/shell/sidebar/sidebar.ts +0 -139
  326. package/src/lib/shell/theme-toggle/theme-toggle.ts +0 -74
  327. package/src/lib/views/calendar-view/calendar-model.ts +0 -426
  328. package/src/lib/views/calendar-view/calendar-view.spec.ts +0 -557
  329. package/src/lib/views/calendar-view/calendar-view.ts +0 -568
  330. package/src/lib/views/composer/composer-host.spec.ts +0 -301
  331. package/src/lib/views/composer/composer-host.ts +0 -248
  332. package/src/lib/views/composer/composer-imports.spec.ts +0 -54
  333. package/src/lib/views/composer/view-context.spec.ts +0 -117
  334. package/src/lib/views/composer/view-context.ts +0 -109
  335. package/src/lib/views/composer/view-slot.spec.ts +0 -130
  336. package/src/lib/views/composer/view-slot.ts +0 -178
  337. package/src/lib/views/descriptors.ts +0 -46
  338. package/src/lib/views/kanban-view/kanban-model.ts +0 -173
  339. package/src/lib/views/kanban-view/kanban-view.spec.ts +0 -540
  340. package/src/lib/views/kanban-view/kanban-view.ts +0 -327
  341. package/src/lib/widgets/bar-chart/bar-chart.descriptor.ts +0 -17
  342. package/src/lib/widgets/bar-chart/bar-chart.spec.ts +0 -66
  343. package/src/lib/widgets/bar-chart/bar-chart.ts +0 -76
  344. package/src/lib/widgets/chart-line/chart-line.descriptor.ts +0 -17
  345. package/src/lib/widgets/chart-line/chart-line.spec.ts +0 -113
  346. package/src/lib/widgets/chart-line/chart-line.ts +0 -219
  347. package/src/lib/widgets/descriptors.ts +0 -29
  348. package/src/lib/widgets/metric-card/metric-card.descriptor.ts +0 -41
  349. package/src/lib/widgets/metric-card/metric-card.spec.ts +0 -52
  350. package/src/lib/widgets/metric-card/metric-card.ts +0 -48
  351. package/src/lib/widgets/quick-actions/quick-actions.descriptor.ts +0 -13
  352. package/src/lib/widgets/quick-actions/quick-actions.spec.ts +0 -61
  353. package/src/lib/widgets/quick-actions/quick-actions.ts +0 -100
  354. package/src/lib/widgets/record-list/record-list.descriptor.ts +0 -16
  355. package/src/lib/widgets/record-list/record-list.spec.ts +0 -79
  356. package/src/lib/widgets/record-list/record-list.ts +0 -115
  357. package/src/lib/widgets/series.spec.ts +0 -42
  358. package/src/lib/widgets/series.ts +0 -56
  359. package/src/lib/widgets/status-progress/status-progress.descriptor.ts +0 -19
  360. package/src/lib/widgets/status-progress/status-progress.spec.ts +0 -63
  361. package/src/lib/widgets/status-progress/status-progress.ts +0 -104
  362. package/src/lib/widgets/widget-host/widget-host.spec.ts +0 -179
  363. package/src/lib/widgets/widget-host/widget-host.ts +0 -99
  364. package/src/public-api.ts +0 -104
  365. package/tinya-code-gas-admin-ui-0.2.0-alpha.15.tgz +0 -0
  366. package/tsconfig.lib.json +0 -13
  367. package/tsconfig.lib.prod.json +0 -11
  368. package/tsconfig.spec.json +0 -10
@@ -0,0 +1,116 @@
1
+ import { n as FieldAria } from "./tinya-code-gas-admin-ui-field-aria-BD1Wiggc.mjs";
2
+ import { t as childTree } from "./tinya-code-gas-admin-ui-field-node-CIK6KNN_.mjs";
3
+ import * as i0 from "@angular/core";
4
+ import { Component, computed, input } from "@angular/core";
5
+ import { FormField } from "@angular/forms/signals";
6
+ var FieldPhone = class FieldPhone {
7
+ field = input.required(...ngDevMode ? [{ debugName: "field" }] : /* istanbul ignore next */ []);
8
+ tree = input.required(...ngDevMode ? [{ debugName: "tree" }] : /* istanbul ignore next */ []);
9
+ node = computed(() => childTree(this.tree(), this.field().key), ...ngDevMode ? [{ debugName: "node" }] : /* istanbul ignore next */ []);
10
+ state = computed(() => this.node()(), ...ngDevMode ? [{ debugName: "state" }] : /* istanbul ignore next */ []);
11
+ normalize() {
12
+ const current = this.state().value();
13
+ if (typeof current !== "string" || current === "") return;
14
+ const digits = current.replace(/\D/g, "");
15
+ const normalized = this.field().format === "digits" ? digits : digits !== "" ? `+${digits.slice(0, 15)}` : "";
16
+ if (normalized !== current) this.state().value.set(normalized);
17
+ }
18
+ static ɵfac = i0.ɵɵngDeclareFactory({
19
+ minVersion: "12.0.0",
20
+ version: "22.2.3",
21
+ ngImport: i0,
22
+ type: FieldPhone,
23
+ deps: [],
24
+ target: i0.ɵɵFactoryTarget.Component
25
+ });
26
+ static ɵcmp = i0.ɵɵngDeclareComponent({
27
+ minVersion: "17.1.0",
28
+ version: "22.2.3",
29
+ type: FieldPhone,
30
+ isStandalone: true,
31
+ selector: "app-field-phone",
32
+ inputs: {
33
+ field: {
34
+ classPropertyName: "field",
35
+ publicName: "field",
36
+ isSignal: true,
37
+ isRequired: true,
38
+ transformFunction: null
39
+ },
40
+ tree: {
41
+ classPropertyName: "tree",
42
+ publicName: "tree",
43
+ isSignal: true,
44
+ isRequired: true,
45
+ transformFunction: null
46
+ }
47
+ },
48
+ ngImport: i0,
49
+ template: `
50
+ <input
51
+ type="tel"
52
+ class="field-input"
53
+ [id]="state().name()"
54
+ [formField]="node()"
55
+ [placeholder]="field().placeholder ?? ''"
56
+ (blur)="normalize()"
57
+ />
58
+ `,
59
+ isInline: true,
60
+ dependencies: [{
61
+ kind: "directive",
62
+ type: FieldAria,
63
+ selector: "input[id], select[id], textarea[id], output[id]"
64
+ }, {
65
+ kind: "directive",
66
+ type: FormField,
67
+ selector: "[formField]",
68
+ inputs: ["formField"],
69
+ exportAs: ["formField"]
70
+ }]
71
+ });
72
+ };
73
+ i0.ɵɵngDeclareClassMetadata({
74
+ minVersion: "12.0.0",
75
+ version: "22.2.3",
76
+ ngImport: i0,
77
+ type: FieldPhone,
78
+ decorators: [{
79
+ type: Component,
80
+ args: [{
81
+ selector: "app-field-phone",
82
+ imports: [FieldAria, FormField],
83
+ template: `
84
+ <input
85
+ type="tel"
86
+ class="field-input"
87
+ [id]="state().name()"
88
+ [formField]="node()"
89
+ [placeholder]="field().placeholder ?? ''"
90
+ (blur)="normalize()"
91
+ />
92
+ `
93
+ }]
94
+ }],
95
+ propDecorators: {
96
+ field: [{
97
+ type: i0.Input,
98
+ args: [{
99
+ isSignal: true,
100
+ alias: "field",
101
+ required: true
102
+ }]
103
+ }],
104
+ tree: [{
105
+ type: i0.Input,
106
+ args: [{
107
+ isSignal: true,
108
+ alias: "tree",
109
+ required: true
110
+ }]
111
+ }]
112
+ }
113
+ });
114
+ export { FieldPhone };
115
+
116
+ //# sourceMappingURL=tinya-code-gas-admin-ui-phone-jR417hPf.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tinya-code-gas-admin-ui-phone-jR417hPf.mjs","names":[],"sources":["../../../projects/gas-admin-ui/src/lib/fields/phone/phone.ts"],"sourcesContent":["import { Component, computed, input } from '@angular/core';\nimport { FormField } from '@angular/forms/signals';\n\nimport type { PhoneField } from '../../core/models/schema.model';\nimport { FieldAria } from '../field-aria';\nimport { childTree, type RootTree } from '../field-node';\n\n/**\n * Input telefónico (base.md §5.1). El valor se normaliza al perder el foco:\n * `e164` → `+` y dígitos (máx. 15); `digits` → solo dígitos. Mientras se\n * escribe se conserva lo tipeado.\n */\n@Component({\n selector: 'app-field-phone',\n imports: [FieldAria, FormField],\n template: `\n <input\n type=\"tel\"\n class=\"field-input\"\n [id]=\"state().name()\"\n [formField]=\"node()\"\n [placeholder]=\"field().placeholder ?? ''\"\n (blur)=\"normalize()\"\n />\n `,\n})\nexport class FieldPhone {\n readonly field = input.required<PhoneField>();\n readonly tree = input.required<RootTree>();\n\n protected readonly node = computed(() => childTree<string>(this.tree(), this.field().key));\n protected readonly state = computed(() => this.node()());\n\n protected normalize(): void {\n const current = this.state().value();\n if (typeof current !== 'string' || current === '') {\n return;\n }\n const digits = current.replace(/\\D/g, '');\n const normalized =\n this.field().format === 'digits' ? digits : digits !== '' ? `+${digits.slice(0, 15)}` : '';\n if (normalized !== current) {\n this.state().value.set(normalized);\n }\n }\n}\n"],"mappings":";;;;;AA0BA,IAAa,aAAb,MAAa,WAAU;CACZ,QAAQ,MAAM,SAAsB,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;CACpC,OAAO,MAAM,SAAoB,GAAA,YAAA,CAAA,EAAA,WAAA,OAAA,CAAA,+BAAA,CAAA,CAAA;CAEvB,OAAO,eAAe,UAAkB,KAAK,KAAI,GAAI,KAAK,MAAK,CAAE,CAAC,GAAG,GAAE,GAAA,YAAA,CAAA,EAAA,WAAA,OAAA,CAAA,+BAAA,CAAA,CAAA;CACvE,QAAQ,eAAe,KAAK,KAAI,CAAE,CAAA,GAAG,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;CAE9C,YAAS;EACjB,MAAM,UAAU,KAAK,MAAK,CAAE,CAAC,MAAK;EAClC,IAAI,OAAO,YAAY,YAAY,YAAY,IAC7C;EAEF,MAAM,SAAS,QAAQ,QAAQ,OAAO,EAAE;EACxC,MAAM,aACJ,KAAK,MAAK,CAAE,CAAC,WAAW,WAAW,SAAS,WAAW,KAAK,IAAI,OAAO,MAAM,GAAG,EAAE,MAAM;EAC1F,IAAI,eAAe,SACjB,KAAK,MAAK,CAAE,CAAC,MAAM,IAAI,UAAU;CAErC;CAlBW,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAU,MAAA,CAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAAV,OAAA,OAAA,GAAA,qBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,MAAA;EAAU,cAAA;EAAA,UAAA;EAAA,QAAA;GAAA,OAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,MAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;EAAA;EAAA,UAAA;EAAA,UAXX;;;;;;;;;;EAST,UAAA;EAAA,cAAA,CAAA;GAAA,MAAA;GAAA,MAVS;GAAS,UAAA;EAAA,GAAA;GAAA,MAAA;GAAA,MAAE;GAAS,UAAA;GAAA,QAAA,CAAA,WAAA;GAAA,UAAA,CAAA,WAAA;EAAA,CAAA;CAAA,CAAA;;AAYnB,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAU,YAAA,CAAA;EAdtB,MAAA;EAAU,MAAA,CAAA;GACT,UAAU;GACV,SAAS,CAAC,WAAW,SAAS;GAC9B,UAAU;;;;;;;;;;EAUX,CAAA"}
@@ -0,0 +1,235 @@
1
+ import { n as parseNavigationUrl } from "./tinya-code-gas-admin-ui-template-interpolator-ewv7CkNX.mjs";
2
+ import * as i0 from "@angular/core";
3
+ import { Component, input } from "@angular/core";
4
+ import { RouterLink } from "@angular/router";
5
+ import { LucideExternalLink, LucideFileText, LucidePlus, LucideSettings, LucideZap } from "@lucide/angular";
6
+ const BUTTON_CLASSES = {
7
+ primary: "bg-primary text-surface hover:bg-primary/90 font-medium px-4 py-2.5 rounded-lg inline-flex items-center gap-2 text-sm transition-colors",
8
+ outline: "border border-neutral/40 bg-surface text-neutral hover:bg-neutral/10 font-medium px-4 py-2.5 rounded-lg inline-flex items-center gap-2 text-sm transition-colors",
9
+ secondary: "bg-neutral/10 text-neutral-light hover:bg-neutral/20 font-medium px-4 py-2.5 rounded-lg inline-flex items-center gap-2 text-sm transition-colors"
10
+ };
11
+ var QuickActions = class QuickActions {
12
+ widget = input.required(...ngDevMode ? [{ debugName: "widget" }] : /* istanbul ignore next */ []);
13
+ isExternal(url) {
14
+ return /^https?:\/\//i.test(url);
15
+ }
16
+ parseRoute(url) {
17
+ return parseNavigationUrl(url);
18
+ }
19
+ buttonClass(variant) {
20
+ return BUTTON_CLASSES[variant || "secondary"] || BUTTON_CLASSES["secondary"];
21
+ }
22
+ static ɵfac = i0.ɵɵngDeclareFactory({
23
+ minVersion: "12.0.0",
24
+ version: "22.2.3",
25
+ ngImport: i0,
26
+ type: QuickActions,
27
+ deps: [],
28
+ target: i0.ɵɵFactoryTarget.Component
29
+ });
30
+ static ɵcmp = i0.ɵɵngDeclareComponent({
31
+ minVersion: "17.0.0",
32
+ version: "22.2.3",
33
+ type: QuickActions,
34
+ isStandalone: true,
35
+ selector: "app-quick-actions",
36
+ inputs: { widget: {
37
+ classPropertyName: "widget",
38
+ publicName: "widget",
39
+ isSignal: true,
40
+ isRequired: true,
41
+ transformFunction: null
42
+ } },
43
+ ngImport: i0,
44
+ template: `
45
+ <article class="flex h-full flex-col rounded-xl border border-neutral/20 bg-surface p-4">
46
+ <h2 class="mb-3 text-sm font-semibold text-neutral-light">{{ widget().label }}</h2>
47
+
48
+ <div class="grid flex-1 grid-cols-1 gap-2.5 sm:grid-cols-2">
49
+ @for (action of widget().actions; track action.label) {
50
+ @if (isExternal(action.navigateTo)) {
51
+ <a
52
+ [href]="action.navigateTo"
53
+ target="_blank"
54
+ rel="noopener noreferrer"
55
+ [class]="buttonClass(action.variant)"
56
+ >
57
+ @switch (action.icon) {
58
+ @case ('plus') {
59
+ <svg lucidePlus size="16" class="shrink-0" />
60
+ }
61
+ @case ('settings') {
62
+ <svg lucideSettings size="16" class="shrink-0" />
63
+ }
64
+ @case ('document') {
65
+ <svg lucideFileText size="16" class="shrink-0" />
66
+ }
67
+ @default {
68
+ <svg lucideExternalLink size="16" class="shrink-0" />
69
+ }
70
+ }
71
+ <span class="truncate">{{ action.label }}</span>
72
+ </a>
73
+ } @else {
74
+ <a
75
+ [routerLink]="parseRoute(action.navigateTo).path"
76
+ [queryParams]="parseRoute(action.navigateTo).queryParams"
77
+ [class]="buttonClass(action.variant)"
78
+ >
79
+ @switch (action.icon) {
80
+ @case ('plus') {
81
+ <svg lucidePlus size="16" class="shrink-0" />
82
+ }
83
+ @case ('settings') {
84
+ <svg lucideSettings size="16" class="shrink-0" />
85
+ }
86
+ @case ('document') {
87
+ <svg lucideFileText size="16" class="shrink-0" />
88
+ }
89
+ @default {
90
+ <svg lucideZap size="16" class="shrink-0" />
91
+ }
92
+ }
93
+ <span class="truncate">{{ action.label }}</span>
94
+ </a>
95
+ }
96
+ }
97
+ </div>
98
+ </article>
99
+ `,
100
+ isInline: true,
101
+ dependencies: [
102
+ {
103
+ kind: "directive",
104
+ type: RouterLink,
105
+ selector: "[routerLink]",
106
+ inputs: [
107
+ "target",
108
+ "queryParams",
109
+ "fragment",
110
+ "queryParamsHandling",
111
+ "state",
112
+ "info",
113
+ "relativeTo",
114
+ "preserveFragment",
115
+ "skipLocationChange",
116
+ "replaceUrl",
117
+ "browserUrl",
118
+ "routerLink"
119
+ ]
120
+ },
121
+ {
122
+ kind: "component",
123
+ type: LucidePlus,
124
+ selector: "svg[lucidePlus]"
125
+ },
126
+ {
127
+ kind: "component",
128
+ type: LucideSettings,
129
+ selector: "svg[lucideSettings]"
130
+ },
131
+ {
132
+ kind: "component",
133
+ type: LucideFileText,
134
+ selector: "svg[lucideFileText]"
135
+ },
136
+ {
137
+ kind: "component",
138
+ type: LucideExternalLink,
139
+ selector: "svg[lucideExternalLink]"
140
+ },
141
+ {
142
+ kind: "component",
143
+ type: LucideZap,
144
+ selector: "svg[lucideZap]"
145
+ }
146
+ ]
147
+ });
148
+ };
149
+ i0.ɵɵngDeclareClassMetadata({
150
+ minVersion: "12.0.0",
151
+ version: "22.2.3",
152
+ ngImport: i0,
153
+ type: QuickActions,
154
+ decorators: [{
155
+ type: Component,
156
+ args: [{
157
+ selector: "app-quick-actions",
158
+ imports: [
159
+ RouterLink,
160
+ LucidePlus,
161
+ LucideSettings,
162
+ LucideFileText,
163
+ LucideExternalLink,
164
+ LucideZap
165
+ ],
166
+ template: `
167
+ <article class="flex h-full flex-col rounded-xl border border-neutral/20 bg-surface p-4">
168
+ <h2 class="mb-3 text-sm font-semibold text-neutral-light">{{ widget().label }}</h2>
169
+
170
+ <div class="grid flex-1 grid-cols-1 gap-2.5 sm:grid-cols-2">
171
+ @for (action of widget().actions; track action.label) {
172
+ @if (isExternal(action.navigateTo)) {
173
+ <a
174
+ [href]="action.navigateTo"
175
+ target="_blank"
176
+ rel="noopener noreferrer"
177
+ [class]="buttonClass(action.variant)"
178
+ >
179
+ @switch (action.icon) {
180
+ @case ('plus') {
181
+ <svg lucidePlus size="16" class="shrink-0" />
182
+ }
183
+ @case ('settings') {
184
+ <svg lucideSettings size="16" class="shrink-0" />
185
+ }
186
+ @case ('document') {
187
+ <svg lucideFileText size="16" class="shrink-0" />
188
+ }
189
+ @default {
190
+ <svg lucideExternalLink size="16" class="shrink-0" />
191
+ }
192
+ }
193
+ <span class="truncate">{{ action.label }}</span>
194
+ </a>
195
+ } @else {
196
+ <a
197
+ [routerLink]="parseRoute(action.navigateTo).path"
198
+ [queryParams]="parseRoute(action.navigateTo).queryParams"
199
+ [class]="buttonClass(action.variant)"
200
+ >
201
+ @switch (action.icon) {
202
+ @case ('plus') {
203
+ <svg lucidePlus size="16" class="shrink-0" />
204
+ }
205
+ @case ('settings') {
206
+ <svg lucideSettings size="16" class="shrink-0" />
207
+ }
208
+ @case ('document') {
209
+ <svg lucideFileText size="16" class="shrink-0" />
210
+ }
211
+ @default {
212
+ <svg lucideZap size="16" class="shrink-0" />
213
+ }
214
+ }
215
+ <span class="truncate">{{ action.label }}</span>
216
+ </a>
217
+ }
218
+ }
219
+ </div>
220
+ </article>
221
+ `
222
+ }]
223
+ }],
224
+ propDecorators: { widget: [{
225
+ type: i0.Input,
226
+ args: [{
227
+ isSignal: true,
228
+ alias: "widget",
229
+ required: true
230
+ }]
231
+ }] }
232
+ });
233
+ export { QuickActions };
234
+
235
+ //# sourceMappingURL=tinya-code-gas-admin-ui-quick-actions-DCQ6emmF.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tinya-code-gas-admin-ui-quick-actions-DCQ6emmF.mjs","names":[],"sources":["../../../projects/gas-admin-ui/src/lib/widgets/quick-actions/quick-actions.ts"],"sourcesContent":["import { Component, input } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport {\n LucideExternalLink,\n LucideFileText,\n LucidePlus,\n LucideSettings,\n LucideZap,\n} from '@lucide/angular';\n\nimport type { QuickActionsWidget } from '../../core/models/schema.model';\nimport { parseNavigationUrl, type ParsedRoute } from '../../core/utils/template-interpolator';\n\nconst BUTTON_CLASSES: Record<string, string> = {\n primary:\n 'bg-primary text-surface hover:bg-primary/90 font-medium px-4 py-2.5 rounded-lg inline-flex items-center gap-2 text-sm transition-colors',\n outline:\n 'border border-neutral/40 bg-surface text-neutral hover:bg-neutral/10 font-medium px-4 py-2.5 rounded-lg inline-flex items-center gap-2 text-sm transition-colors',\n secondary:\n 'bg-neutral/10 text-neutral-light hover:bg-neutral/20 font-medium px-4 py-2.5 rounded-lg inline-flex items-center gap-2 text-sm transition-colors',\n};\n\n/**\n * Grid de accesos directos y atajos operativos para el Dashboard.\n */\n@Component({\n selector: 'app-quick-actions',\n imports: [RouterLink, LucidePlus, LucideSettings, LucideFileText, LucideExternalLink, LucideZap],\n template: `\n <article class=\"flex h-full flex-col rounded-xl border border-neutral/20 bg-surface p-4\">\n <h2 class=\"mb-3 text-sm font-semibold text-neutral-light\">{{ widget().label }}</h2>\n\n <div class=\"grid flex-1 grid-cols-1 gap-2.5 sm:grid-cols-2\">\n @for (action of widget().actions; track action.label) {\n @if (isExternal(action.navigateTo)) {\n <a\n [href]=\"action.navigateTo\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n [class]=\"buttonClass(action.variant)\"\n >\n @switch (action.icon) {\n @case ('plus') {\n <svg lucidePlus size=\"16\" class=\"shrink-0\" />\n }\n @case ('settings') {\n <svg lucideSettings size=\"16\" class=\"shrink-0\" />\n }\n @case ('document') {\n <svg lucideFileText size=\"16\" class=\"shrink-0\" />\n }\n @default {\n <svg lucideExternalLink size=\"16\" class=\"shrink-0\" />\n }\n }\n <span class=\"truncate\">{{ action.label }}</span>\n </a>\n } @else {\n <a\n [routerLink]=\"parseRoute(action.navigateTo).path\"\n [queryParams]=\"parseRoute(action.navigateTo).queryParams\"\n [class]=\"buttonClass(action.variant)\"\n >\n @switch (action.icon) {\n @case ('plus') {\n <svg lucidePlus size=\"16\" class=\"shrink-0\" />\n }\n @case ('settings') {\n <svg lucideSettings size=\"16\" class=\"shrink-0\" />\n }\n @case ('document') {\n <svg lucideFileText size=\"16\" class=\"shrink-0\" />\n }\n @default {\n <svg lucideZap size=\"16\" class=\"shrink-0\" />\n }\n }\n <span class=\"truncate\">{{ action.label }}</span>\n </a>\n }\n }\n </div>\n </article>\n `,\n})\nexport class QuickActions {\n readonly widget = input.required<QuickActionsWidget>();\n\n protected isExternal(url: string): boolean {\n return /^https?:\\/\\//i.test(url);\n }\n\n protected parseRoute(url: string): ParsedRoute {\n return parseNavigationUrl(url);\n }\n\n protected buttonClass(variant?: string): string {\n return BUTTON_CLASSES[variant || 'secondary'] || BUTTON_CLASSES['secondary'];\n }\n}\n"],"mappings":";;;;;AAaA,MAAM,iBAAyC;CAC7C,SACE;CACF,SACE;CACF,WACE;AACH;AAiED,IAAa,eAAb,MAAa,aAAY;CACd,SAAS,MAAM,SAA8B,GAAA,YAAA,CAAA,EAAA,WAAA,SAAA,CAAA,+BAAA,CAAA,CAAA;CAE5C,WAAW,KAAW;EAC9B,OAAO,gBAAgB,KAAK,GAAG;CACjC;CAEU,WAAW,KAAW;EAC9B,OAAO,mBAAmB,GAAG;CAC/B;CAEU,YAAY,SAAgB;EACpC,OAAO,eAAe,WAAW,gBAAgB,eAAe;CAClE;CAbW,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAY,MAAA,CAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAAZ,OAAA,OAAA,GAAA,qBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,MAAA;EAAY,cAAA;EAAA,UAAA;EAAA,QAAA,EAAA,QAAA;GAAA,mBAAA;GAAA,YAAA;GAAA,UAAA;GAAA,YAAA;GAAA,mBAAA;EAAA,EAAA;EAAA,UAAA;EAAA,UAzDb;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuDT,UAAA;EAAA,cAAA;GAAA;IAAA,MAAA;IAAA,MAxDS;IAAU,UAAA;IAAA,QAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;IAAA;GAAA;GAAA;IAAA,MAAA;IAAA,MAAE;IAAU,UAAA;GAAA;GAAA;IAAA,MAAA;IAAA,MAAE;IAAc,UAAA;GAAA;GAAA;IAAA,MAAA;IAAA,MAAE;IAAc,UAAA;GAAA;GAAA;IAAA,MAAA;IAAA,MAAE;IAAkB,UAAA;GAAA;GAAA;IAAA,MAAA;IAAA,MAAE;IAAS,UAAA;GAAA;EAAA;CAAA,CAAA;;AA0DpF,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAY,YAAA,CAAA;EA5DxB,MAAA;EAAU,MAAA,CAAA;GACT,UAAU;GACV,SAAS;IAAC;IAAY;IAAY;IAAgB;IAAgB;IAAoB;GAAS;GAC/F,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwDX,CAAA"}
@@ -0,0 +1,8 @@
1
+ function esGrupoRadio(field) {
2
+ if (field.source !== void 0) return false;
3
+ const total = field.options?.length ?? 0;
4
+ return total >= 2 && total <= 4;
5
+ }
6
+ export { esGrupoRadio as t };
7
+
8
+ //# sourceMappingURL=tinya-code-gas-admin-ui-radio-mode-DxvN07DY.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tinya-code-gas-admin-ui-radio-mode-DxvN07DY.mjs","names":[],"sources":["../../../projects/gas-admin-ui/src/lib/fields/select/radio-mode.ts"],"sourcesContent":["import type { SelectField } from '../../core/models/schema.model';\n\n/**\n * Guía de control (standards §Control selection): 2–4 opciones → radio\n * buttons; 5–7 → dropdown simple; más de 7 → dropdown con búsqueda.\n *\n * Dos limitaciones deliberadas:\n * - **Sólo opciones estáticas** (`source` excluido): una fuente se carga\n * después y su cantidad de filas puede cambiar; el control no debe mutar\n * de `<select>` a radios en mitad de una edición.\n * - **Mínimo 2**: con una sola opción el dropdown (o un único radio) no\n * aporta nada y el caso real (`users.role`) ya existe así.\n *\n * La comparten el campo (`select.ts`, para ramificar su plantilla) y el\n * rótulo del host (`render-host.ts`): sin este mismo cálculo el host\n * dibujaría un `label[for]` apuntando a un id que un grupo de radios no\n * tiene (el ancla la reemplaza `role=\"radiogroup\"` + `aria-label`).\n */\nexport function esGrupoRadio(field: SelectField): boolean {\n if (field.source !== undefined) {\n return false;\n }\n const total = field.options?.length ?? 0;\n return total >= 2 && total <= 4;\n}\n"],"mappings":"AAkBA,SAAgB,aAAa,OAAkB;CAC7C,IAAI,MAAM,WAAW,QACnB,OAAO;CAET,MAAM,QAAQ,MAAM,SAAS,UAAU;CACvC,OAAO,SAAS,KAAK,SAAS;AAChC"}
@@ -0,0 +1,124 @@
1
+ import { n as FieldAria } from "./tinya-code-gas-admin-ui-field-aria-BD1Wiggc.mjs";
2
+ import { t as childTree } from "./tinya-code-gas-admin-ui-field-node-CIK6KNN_.mjs";
3
+ import * as i0 from "@angular/core";
4
+ import { Component, computed, input } from "@angular/core";
5
+ var FieldReadonlyText = class FieldReadonlyText {
6
+ field = input.required(...ngDevMode ? [{ debugName: "field" }] : /* istanbul ignore next */ []);
7
+ tree = input.required(...ngDevMode ? [{ debugName: "tree" }] : /* istanbul ignore next */ []);
8
+ node = computed(() => childTree(this.tree(), this.field().key), ...ngDevMode ? [{ debugName: "node" }] : /* istanbul ignore next */ []);
9
+ state = computed(() => this.node()(), ...ngDevMode ? [{ debugName: "state" }] : /* istanbul ignore next */ []);
10
+ display = computed(() => {
11
+ const value = this.state().value();
12
+ if (value === null || value === void 0 || value === "") return "—";
13
+ const format = this.field().format;
14
+ if (format === "date" || format === "datetime") {
15
+ const date = new Date(String(value));
16
+ if (Number.isNaN(date.getTime())) return String(value);
17
+ return new Intl.DateTimeFormat("es-PE", {
18
+ timeZone: "UTC",
19
+ day: "2-digit",
20
+ month: "2-digit",
21
+ year: "numeric",
22
+ ...format === "datetime" ? {
23
+ hour: "2-digit",
24
+ minute: "2-digit"
25
+ } : {}
26
+ }).format(date);
27
+ }
28
+ if (format === "number") {
29
+ const number = Number(value);
30
+ return Number.isNaN(number) ? String(value) : new Intl.NumberFormat("es-PE").format(number);
31
+ }
32
+ return typeof value === "string" ? value : String(value);
33
+ }, ...ngDevMode ? [{ debugName: "display" }] : /* istanbul ignore next */ []);
34
+ static ɵfac = i0.ɵɵngDeclareFactory({
35
+ minVersion: "12.0.0",
36
+ version: "22.2.3",
37
+ ngImport: i0,
38
+ type: FieldReadonlyText,
39
+ deps: [],
40
+ target: i0.ɵɵFactoryTarget.Component
41
+ });
42
+ static ɵcmp = i0.ɵɵngDeclareComponent({
43
+ minVersion: "17.1.0",
44
+ version: "22.2.3",
45
+ type: FieldReadonlyText,
46
+ isStandalone: true,
47
+ selector: "app-field-readonly-text",
48
+ inputs: {
49
+ field: {
50
+ classPropertyName: "field",
51
+ publicName: "field",
52
+ isSignal: true,
53
+ isRequired: true,
54
+ transformFunction: null
55
+ },
56
+ tree: {
57
+ classPropertyName: "tree",
58
+ publicName: "tree",
59
+ isSignal: true,
60
+ isRequired: true,
61
+ transformFunction: null
62
+ }
63
+ },
64
+ ngImport: i0,
65
+ template: `
66
+ <output
67
+ [id]="state().name()"
68
+ class="block py-2 text-sm text-neutral"
69
+ data-testid="readonly-text"
70
+ >
71
+ {{ display() }}
72
+ </output>
73
+ `,
74
+ isInline: true,
75
+ dependencies: [{
76
+ kind: "directive",
77
+ type: FieldAria,
78
+ selector: "input[id], select[id], textarea[id], output[id]"
79
+ }]
80
+ });
81
+ };
82
+ i0.ɵɵngDeclareClassMetadata({
83
+ minVersion: "12.0.0",
84
+ version: "22.2.3",
85
+ ngImport: i0,
86
+ type: FieldReadonlyText,
87
+ decorators: [{
88
+ type: Component,
89
+ args: [{
90
+ selector: "app-field-readonly-text",
91
+ imports: [FieldAria],
92
+ template: `
93
+ <output
94
+ [id]="state().name()"
95
+ class="block py-2 text-sm text-neutral"
96
+ data-testid="readonly-text"
97
+ >
98
+ {{ display() }}
99
+ </output>
100
+ `
101
+ }]
102
+ }],
103
+ propDecorators: {
104
+ field: [{
105
+ type: i0.Input,
106
+ args: [{
107
+ isSignal: true,
108
+ alias: "field",
109
+ required: true
110
+ }]
111
+ }],
112
+ tree: [{
113
+ type: i0.Input,
114
+ args: [{
115
+ isSignal: true,
116
+ alias: "tree",
117
+ required: true
118
+ }]
119
+ }]
120
+ }
121
+ });
122
+ export { FieldReadonlyText };
123
+
124
+ //# sourceMappingURL=tinya-code-gas-admin-ui-readonly-text-BL7-4qie.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tinya-code-gas-admin-ui-readonly-text-BL7-4qie.mjs","names":[],"sources":["../../../projects/gas-admin-ui/src/lib/fields/readonly-text/readonly-text.ts"],"sourcesContent":["import { Component, computed, input } from '@angular/core';\n\nimport type { ReadonlyTextField } from '../../core/models/schema.model';\nimport { FieldAria } from '../field-aria';\nimport { childTree, type RootTree } from '../field-node';\n\n/**\n * Dato de solo lectura (base.md §5.1, ej. `updated_at`). No edita: lee el\n * valor del árbol y lo presenta según `format` (`date`, `datetime`,\n * `number`; por defecto, texto). Renderiza `<output>` para que el `<label>`\n * del host pueda asociarse por `for`.\n */\n@Component({\n selector: 'app-field-readonly-text',\n imports: [FieldAria],\n template: `\n <output\n [id]=\"state().name()\"\n class=\"block py-2 text-sm text-neutral\"\n data-testid=\"readonly-text\"\n >\n {{ display() }}\n </output>\n `,\n})\nexport class FieldReadonlyText {\n readonly field = input.required<ReadonlyTextField>();\n readonly tree = input.required<RootTree>();\n\n private readonly node = computed(() => childTree<unknown>(this.tree(), this.field().key));\n protected readonly state = computed(() => this.node()());\n\n protected readonly display = computed(() => {\n const value = this.state().value();\n if (value === null || value === undefined || value === '') {\n return '—';\n }\n const format = this.field().format;\n if (format === 'date' || format === 'datetime') {\n const date = new Date(String(value));\n if (Number.isNaN(date.getTime())) {\n return String(value);\n }\n return new Intl.DateTimeFormat('es-PE', {\n timeZone: 'UTC',\n day: '2-digit',\n month: '2-digit',\n year: 'numeric',\n ...(format === 'datetime' ? { hour: '2-digit', minute: '2-digit' } : {}),\n }).format(date);\n }\n if (format === 'number') {\n const number = Number(value);\n return Number.isNaN(number) ? String(value) : new Intl.NumberFormat('es-PE').format(number);\n }\n return typeof value === 'string' ? value : String(value);\n });\n}\n"],"mappings":";;;;AAyBA,IAAa,oBAAb,MAAa,kBAAiB;CACnB,QAAQ,MAAM,SAA6B,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;CAC3C,OAAO,MAAM,SAAoB,GAAA,YAAA,CAAA,EAAA,WAAA,OAAA,CAAA,+BAAA,CAAA,CAAA;CAEzB,OAAO,eAAe,UAAmB,KAAK,KAAI,GAAI,KAAK,MAAK,CAAE,CAAC,GAAG,GAAE,GAAA,YAAA,CAAA,EAAA,WAAA,OAAA,CAAA,+BAAA,CAAA,CAAA;CACtE,QAAQ,eAAe,KAAK,KAAI,CAAE,CAAA,GAAG,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;CAErC,UAAU,eAAc;EACzC,MAAM,QAAQ,KAAK,MAAK,CAAE,CAAC,MAAK;EAChC,IAAI,UAAU,QAAQ,UAAU,UAAa,UAAU,IACrD,OAAO;EAET,MAAM,SAAS,KAAK,MAAK,CAAE,CAAC;EAC5B,IAAI,WAAW,UAAU,WAAW,YAAY;GAC9C,MAAM,OAAO,IAAI,KAAK,OAAO,KAAK,CAAC;GACnC,IAAI,OAAO,MAAM,KAAK,QAAO,CAAE,GAC7B,OAAO,OAAO,KAAK;GAErB,OAAO,IAAI,KAAK,eAAe,SAAS;IACtC,UAAU;IACV,KAAK;IACL,OAAO;IACP,MAAM;IACN,GAAI,WAAW,aAAa;KAAE,MAAM;KAAW,QAAQ;IAAS,IAAK,CAAA;GACtE,CAAA,CAAC,CAAC,OAAO,IAAI;EAChB;EACA,IAAI,WAAW,UAAU;GACvB,MAAM,SAAS,OAAO,KAAK;GAC3B,OAAO,OAAO,MAAM,MAAM,IAAI,OAAO,KAAK,IAAI,IAAI,KAAK,aAAa,OAAO,CAAC,CAAC,OAAO,MAAM;EAC5F;EACA,OAAO,OAAO,UAAU,WAAW,QAAQ,OAAO,KAAK;CACzD,GAAE,GAAA,YAAA,CAAA,EAAA,WAAA,UAAA,CAAA,+BAAA,CAAA,CAAA;CA/BS,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAiB,MAAA,CAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAAjB,OAAA,OAAA,GAAA,qBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,MAAA;EAAiB,cAAA;EAAA,UAAA;EAAA,QAAA;GAAA,OAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,MAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;EAAA;EAAA,UAAA;EAAA,UAVlB;;;;;;;;;EAQT,UAAA;EAAA,cAAA,CAAA;GAAA,MAAA;GAAA,MATS;GAAS,UAAA;EAAA,CAAA;CAAA,CAAA;;AAWR,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAiB,YAAA,CAAA;EAb7B,MAAA;EAAU,MAAA,CAAA;GACT,UAAU;GACV,SAAS,CAAC,SAAS;GACnB,UAAU;;;;;;;;;EASX,CAAA"}