@simplysm/sd-claude 14.0.51 → 14.0.52

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 (318) hide show
  1. package/claude/references/sd-frontend-design.md +10 -9
  2. package/claude/references/sd-simplysm-v14/angular/README.md +497 -0
  3. package/claude/references/sd-simplysm-v14/angular/bootstrap/provide-sd-angular.md +37 -0
  4. package/claude/references/sd-simplysm-v14/angular/bootstrap/sd-angular-config-provider.md +16 -0
  5. package/claude/references/sd-simplysm-v14/angular/directives/sd-command-directive.md +27 -0
  6. package/claude/references/sd-simplysm-v14/angular/directives/sd-events.md +25 -0
  7. package/claude/references/sd-simplysm-v14/angular/directives/sd-intersection-directive.md +36 -0
  8. package/claude/references/sd-simplysm-v14/angular/directives/sd-invalid.md +24 -0
  9. package/claude/references/sd-simplysm-v14/angular/directives/sd-resize-directive.md +42 -0
  10. package/claude/references/sd-simplysm-v14/angular/directives/sd-ripple.md +23 -0
  11. package/claude/references/sd-simplysm-v14/angular/directives/sd-router-link.md +38 -0
  12. package/claude/references/sd-simplysm-v14/angular/directives/sd-show-effect.md +18 -0
  13. package/claude/references/sd-simplysm-v14/angular/directives/sd-typed-template.md +69 -0
  14. package/claude/references/sd-simplysm-v14/angular/features/sd-address-search-modal.md +50 -0
  15. package/claude/references/sd-simplysm-v14/angular/features/sd-permission-table.md +20 -0
  16. package/claude/references/sd-simplysm-v14/angular/features/sd-shared-data-components.md +158 -0
  17. package/claude/references/sd-simplysm-v14/angular/features/sd-tiptap-editor.md +26 -0
  18. package/claude/references/sd-simplysm-v14/angular/pipes/format-pipe.md +41 -0
  19. package/claude/references/sd-simplysm-v14/angular/plugins/sd-global-error-handler.md +23 -0
  20. package/claude/references/sd-simplysm-v14/angular/plugins/sd-option-event-plugin.md +34 -0
  21. package/claude/references/sd-simplysm-v14/angular/provider-types/sd-menu.md +65 -0
  22. package/claude/references/sd-simplysm-v14/angular/provider-types/sd-modal-content-def.md +148 -0
  23. package/claude/references/sd-simplysm-v14/angular/provider-types/sd-toast-content-def.md +73 -0
  24. package/claude/references/sd-simplysm-v14/angular/provider-types/shared-data-base.md +59 -0
  25. package/claude/references/sd-simplysm-v14/angular/providers/sd-activated-modal-provider.md +34 -0
  26. package/claude/references/sd-simplysm-v14/angular/providers/sd-app-structure-provider.md +81 -0
  27. package/claude/references/sd-simplysm-v14/angular/providers/sd-busy-provider.md +18 -0
  28. package/claude/references/sd-simplysm-v14/angular/providers/sd-file-dialog-provider.md +40 -0
  29. package/claude/references/sd-simplysm-v14/angular/providers/sd-local-storage-provider.md +20 -0
  30. package/claude/references/sd-simplysm-v14/angular/providers/sd-modal-provider.md +67 -0
  31. package/claude/references/sd-simplysm-v14/angular/providers/sd-navigate-window-provider.md +18 -0
  32. package/claude/references/sd-simplysm-v14/angular/providers/sd-print-provider.md +25 -0
  33. package/claude/references/sd-simplysm-v14/angular/providers/sd-service-client-factory-provider.md +43 -0
  34. package/claude/references/sd-simplysm-v14/angular/providers/sd-shared-data-provider.md +64 -0
  35. package/claude/references/sd-simplysm-v14/angular/providers/sd-system-config-provider.md +46 -0
  36. package/claude/references/sd-simplysm-v14/angular/providers/sd-system-log-provider.md +18 -0
  37. package/claude/references/sd-simplysm-v14/angular/providers/sd-theme-provider.md +38 -0
  38. package/claude/references/sd-simplysm-v14/angular/providers/sd-toast-provider.md +65 -0
  39. package/claude/references/sd-simplysm-v14/angular/recipes/_common-rules.md +336 -0
  40. package/claude/references/sd-simplysm-v14/angular/recipes/crud-detail/extension-a-edit-save.md +191 -0
  41. package/claude/references/sd-simplysm-v14/angular/recipes/crud-detail/extension-b-delete-restore.md +103 -0
  42. package/claude/references/sd-simplysm-v14/angular/recipes/crud-detail/extension-c-modal-view.md +198 -0
  43. package/claude/references/sd-simplysm-v14/angular/recipes/crud-detail/extension-d-control-view.md +109 -0
  44. package/claude/references/sd-simplysm-v14/angular/recipes/crud-detail/extension-e-auxiliary.md +87 -0
  45. package/claude/references/sd-simplysm-v14/angular/recipes/crud-detail/extension-f-complex-detail.md +202 -0
  46. package/claude/references/sd-simplysm-v14/angular/recipes/crud-detail.md +280 -0
  47. package/claude/references/sd-simplysm-v14/angular/recipes/crud-list/extension-a-inline-edit.md +386 -0
  48. package/claude/references/sd-simplysm-v14/angular/recipes/crud-list/extension-b-selection.md +215 -0
  49. package/claude/references/sd-simplysm-v14/angular/recipes/crud-list/extension-c-inline-delete.md +64 -0
  50. package/claude/references/sd-simplysm-v14/angular/recipes/crud-list/extension-d-select-modal.md +193 -0
  51. package/claude/references/sd-simplysm-v14/angular/recipes/crud-list/extension-e-readonly-modal.md +140 -0
  52. package/claude/references/sd-simplysm-v14/angular/recipes/crud-list/extension-f-modal-edit.md +123 -0
  53. package/claude/references/sd-simplysm-v14/angular/recipes/crud-list/extension-g-excel.md +145 -0
  54. package/claude/references/sd-simplysm-v14/angular/recipes/crud-list.md +377 -0
  55. package/claude/references/sd-simplysm-v14/angular/recipes/data-select-button.md +368 -0
  56. package/claude/references/sd-simplysm-v14/angular/recipes/page-modal-container.md +238 -0
  57. package/claude/references/sd-simplysm-v14/angular/styling/classes.md +149 -0
  58. package/claude/references/sd-simplysm-v14/angular/styling/mixins.md +100 -0
  59. package/claude/references/sd-simplysm-v14/angular/styling/themes.md +35 -0
  60. package/claude/references/sd-simplysm-v14/angular/styling/variables.md +147 -0
  61. package/claude/references/sd-simplysm-v14/angular/type-utilities/directive-input-signals.md +232 -0
  62. package/claude/references/sd-simplysm-v14/angular/ui-data/sd-list.md +37 -0
  63. package/claude/references/sd-simplysm-v14/angular/ui-data/sd-sheet.md +212 -0
  64. package/claude/references/sd-simplysm-v14/angular/ui-form/sd-additional-button.md +26 -0
  65. package/claude/references/sd-simplysm-v14/angular/ui-form/sd-anchor.md +31 -0
  66. package/claude/references/sd-simplysm-v14/angular/ui-form/sd-button.md +103 -0
  67. package/claude/references/sd-simplysm-v14/angular/ui-form/sd-checkbox-group.md +39 -0
  68. package/claude/references/sd-simplysm-v14/angular/ui-form/sd-checkbox.md +81 -0
  69. package/claude/references/sd-simplysm-v14/angular/ui-form/sd-date-range-picker.md +27 -0
  70. package/claude/references/sd-simplysm-v14/angular/ui-form/sd-form.md +89 -0
  71. package/claude/references/sd-simplysm-v14/angular/ui-form/sd-modal-select-button.md +54 -0
  72. package/claude/references/sd-simplysm-v14/angular/ui-form/sd-numpad.md +26 -0
  73. package/claude/references/sd-simplysm-v14/angular/ui-form/sd-range.md +26 -0
  74. package/claude/references/sd-simplysm-v14/angular/ui-form/sd-select.md +68 -0
  75. package/claude/references/sd-simplysm-v14/angular/ui-form/sd-shared-data-select.md +52 -0
  76. package/claude/references/sd-simplysm-v14/angular/ui-form/sd-state-preset.md +37 -0
  77. package/claude/references/sd-simplysm-v14/angular/ui-form/sd-switch.md +27 -0
  78. package/claude/references/sd-simplysm-v14/angular/ui-form/sd-textarea.md +33 -0
  79. package/claude/references/sd-simplysm-v14/angular/ui-form/sd-textfield.md +145 -0
  80. package/claude/references/sd-simplysm-v14/angular/ui-layout/sd-dock-container.md +64 -0
  81. package/claude/references/sd-simplysm-v14/angular/ui-layout/sd-dock.md +37 -0
  82. package/claude/references/sd-simplysm-v14/angular/ui-layout/sd-gap.md +26 -0
  83. package/claude/references/sd-simplysm-v14/angular/ui-layout/sd-kanban-board.md +96 -0
  84. package/claude/references/sd-simplysm-v14/angular/ui-layout/sd-kanban-lane.md +34 -0
  85. package/claude/references/sd-simplysm-v14/angular/ui-layout/sd-kanban.md +29 -0
  86. package/claude/references/sd-simplysm-v14/angular/ui-navigation/sd-collapse.md +35 -0
  87. package/claude/references/sd-simplysm-v14/angular/ui-navigation/sd-pagination.md +26 -0
  88. package/claude/references/sd-simplysm-v14/angular/ui-navigation/sd-sidebar-container.md +49 -0
  89. package/claude/references/sd-simplysm-v14/angular/ui-navigation/sd-sidebar-menu.md +22 -0
  90. package/claude/references/sd-simplysm-v14/angular/ui-navigation/sd-sidebar-user.md +43 -0
  91. package/claude/references/sd-simplysm-v14/angular/ui-navigation/sd-tab.md +51 -0
  92. package/claude/references/sd-simplysm-v14/angular/ui-navigation/sd-topbar-container.md +97 -0
  93. package/claude/references/sd-simplysm-v14/angular/ui-navigation/sd-topbar-menu.md +23 -0
  94. package/claude/references/sd-simplysm-v14/angular/ui-navigation/sd-topbar-user.md +38 -0
  95. package/claude/references/sd-simplysm-v14/angular/ui-navigation/sd-topbar.md +30 -0
  96. package/claude/references/sd-simplysm-v14/angular/ui-overlay/sd-busy-container.md +69 -0
  97. package/claude/references/sd-simplysm-v14/angular/ui-overlay/sd-confirm-modal.md +30 -0
  98. package/claude/references/sd-simplysm-v14/angular/ui-overlay/sd-dropdown.md +40 -0
  99. package/claude/references/sd-simplysm-v14/angular/ui-overlay/sd-modal.md +34 -0
  100. package/claude/references/sd-simplysm-v14/angular/ui-overlay/sd-prompt-modal.md +30 -0
  101. package/claude/references/sd-simplysm-v14/angular/ui-overlay/sd-toast.md +35 -0
  102. package/claude/references/sd-simplysm-v14/angular/ui-visual/sd-barcode.md +36 -0
  103. package/claude/references/sd-simplysm-v14/angular/ui-visual/sd-calendar.md +34 -0
  104. package/claude/references/sd-simplysm-v14/angular/ui-visual/sd-echarts.md +32 -0
  105. package/claude/references/sd-simplysm-v14/angular/ui-visual/sd-label.md +24 -0
  106. package/claude/references/sd-simplysm-v14/angular/ui-visual/sd-note.md +23 -0
  107. package/claude/references/sd-simplysm-v14/angular/ui-visual/sd-progress.md +23 -0
  108. package/claude/references/sd-simplysm-v14/angular/utils/inject-routing-signals.md +161 -0
  109. package/claude/references/sd-simplysm-v14/angular/utils/inject-sd-system-config-resource.md +35 -0
  110. package/claude/references/sd-simplysm-v14/angular/utils/mark.md +43 -0
  111. package/claude/references/sd-simplysm-v14/angular/utils/selection-managers.md +96 -0
  112. package/claude/references/sd-simplysm-v14/angular/utils/set-safe-style.md +19 -0
  113. package/claude/references/sd-simplysm-v14/angular/utils/setup-functions.md +93 -0
  114. package/claude/references/sd-simplysm-v14/capacitor-plugin-auto-update/README.md +38 -0
  115. package/claude/references/sd-simplysm-v14/capacitor-plugin-auto-update/apk-installer/apk-installer.md +115 -0
  116. package/claude/references/sd-simplysm-v14/capacitor-plugin-auto-update/auto-update/auto-update.md +113 -0
  117. package/claude/references/sd-simplysm-v14/capacitor-plugin-file-system/README.md +197 -0
  118. package/claude/references/sd-simplysm-v14/capacitor-plugin-intent/README.md +235 -0
  119. package/claude/references/sd-simplysm-v14/capacitor-plugin-usb-storage/README.md +251 -0
  120. package/claude/references/sd-simplysm-v14/core-browser/README.md +52 -0
  121. package/claude/references/sd-simplysm-v14/core-browser/extensions/copy-paste.md +59 -0
  122. package/claude/references/sd-simplysm-v14/core-browser/extensions/element-prototype-extensions.md +137 -0
  123. package/claude/references/sd-simplysm-v14/core-browser/extensions/get-bounds.md +84 -0
  124. package/claude/references/sd-simplysm-v14/core-browser/utils/download-blob.md +59 -0
  125. package/claude/references/sd-simplysm-v14/core-browser/utils/fetch-url-bytes.md +91 -0
  126. package/claude/references/sd-simplysm-v14/core-browser/utils/indexed-db-store.md +131 -0
  127. package/claude/references/sd-simplysm-v14/core-browser/utils/indexed-db-virtual-fs.md +121 -0
  128. package/claude/references/sd-simplysm-v14/core-browser/utils/open-file-dialog.md +60 -0
  129. package/claude/references/sd-simplysm-v14/core-common/README.md +179 -0
  130. package/claude/references/sd-simplysm-v14/core-common/errors/argument-error.md +26 -0
  131. package/claude/references/sd-simplysm-v14/core-common/errors/not-implemented-error.md +33 -0
  132. package/claude/references/sd-simplysm-v14/core-common/errors/sd-error.md +38 -0
  133. package/claude/references/sd-simplysm-v14/core-common/errors/timeout-error.md +36 -0
  134. package/claude/references/sd-simplysm-v14/core-common/extensions/array.md +125 -0
  135. package/claude/references/sd-simplysm-v14/core-common/extensions/map.md +43 -0
  136. package/claude/references/sd-simplysm-v14/core-common/extensions/set.md +35 -0
  137. package/claude/references/sd-simplysm-v14/core-common/features/debounce-queue.md +48 -0
  138. package/claude/references/sd-simplysm-v14/core-common/features/event-emitter.md +52 -0
  139. package/claude/references/sd-simplysm-v14/core-common/features/serial-queue.md +44 -0
  140. package/claude/references/sd-simplysm-v14/core-common/type-utils/common-types.md +100 -0
  141. package/claude/references/sd-simplysm-v14/core-common/type-utils/env.md +42 -0
  142. package/claude/references/sd-simplysm-v14/core-common/types/date-only.md +86 -0
  143. package/claude/references/sd-simplysm-v14/core-common/types/date-time.md +106 -0
  144. package/claude/references/sd-simplysm-v14/core-common/types/lazy-gc-map.md +59 -0
  145. package/claude/references/sd-simplysm-v14/core-common/types/time.md +62 -0
  146. package/claude/references/sd-simplysm-v14/core-common/types/uuid.md +41 -0
  147. package/claude/references/sd-simplysm-v14/core-common/utils/bytes.md +36 -0
  148. package/claude/references/sd-simplysm-v14/core-common/utils/dt.md +60 -0
  149. package/claude/references/sd-simplysm-v14/core-common/utils/err.md +26 -0
  150. package/claude/references/sd-simplysm-v14/core-common/utils/json.md +58 -0
  151. package/claude/references/sd-simplysm-v14/core-common/utils/num.md +56 -0
  152. package/claude/references/sd-simplysm-v14/core-common/utils/obj.md +107 -0
  153. package/claude/references/sd-simplysm-v14/core-common/utils/path.md +30 -0
  154. package/claude/references/sd-simplysm-v14/core-common/utils/primitive.md +28 -0
  155. package/claude/references/sd-simplysm-v14/core-common/utils/str.md +63 -0
  156. package/claude/references/sd-simplysm-v14/core-common/utils/template-strings.md +49 -0
  157. package/claude/references/sd-simplysm-v14/core-common/utils/transfer.md +35 -0
  158. package/claude/references/sd-simplysm-v14/core-common/utils/wait.md +35 -0
  159. package/claude/references/sd-simplysm-v14/core-common/utils/xml.md +49 -0
  160. package/claude/references/sd-simplysm-v14/core-common/utils/zip-archive.md +77 -0
  161. package/claude/references/sd-simplysm-v14/core-node/README.md +59 -0
  162. package/claude/references/sd-simplysm-v14/core-node/features/fs-watcher.md +110 -0
  163. package/claude/references/sd-simplysm-v14/core-node/logging/create-file-reporter.md +78 -0
  164. package/claude/references/sd-simplysm-v14/core-node/logging/pretty-reporter.md +38 -0
  165. package/claude/references/sd-simplysm-v14/core-node/logging/setup-consola.md +77 -0
  166. package/claude/references/sd-simplysm-v14/core-node/utils/cpx.md +128 -0
  167. package/claude/references/sd-simplysm-v14/core-node/utils/fsx.md +168 -0
  168. package/claude/references/sd-simplysm-v14/core-node/utils/pathx.md +73 -0
  169. package/claude/references/sd-simplysm-v14/core-node/worker/create-worker.md +85 -0
  170. package/claude/references/sd-simplysm-v14/core-node/worker/worker.md +160 -0
  171. package/claude/references/sd-simplysm-v14/excel/README.md +66 -0
  172. package/claude/references/sd-simplysm-v14/excel/core-classes/excel-cell.md +79 -0
  173. package/claude/references/sd-simplysm-v14/excel/core-classes/excel-col.md +36 -0
  174. package/claude/references/sd-simplysm-v14/excel/core-classes/excel-row.md +34 -0
  175. package/claude/references/sd-simplysm-v14/excel/core-classes/excel-workbook.md +93 -0
  176. package/claude/references/sd-simplysm-v14/excel/core-classes/excel-worksheet.md +147 -0
  177. package/claude/references/sd-simplysm-v14/excel/types/excel-address-point.md +33 -0
  178. package/claude/references/sd-simplysm-v14/excel/types/excel-style-options.md +57 -0
  179. package/claude/references/sd-simplysm-v14/excel/types/excel-value-type.md +28 -0
  180. package/claude/references/sd-simplysm-v14/excel/types/excel-xml-content-type-data.md +23 -0
  181. package/claude/references/sd-simplysm-v14/excel/types/excel-xml-drawing-data.md +29 -0
  182. package/claude/references/sd-simplysm-v14/excel/types/excel-xml-relationship-data.md +39 -0
  183. package/claude/references/sd-simplysm-v14/excel/types/excel-xml-shared-string-data.md +42 -0
  184. package/claude/references/sd-simplysm-v14/excel/types/excel-xml-style-data.md +97 -0
  185. package/claude/references/sd-simplysm-v14/excel/types/excel-xml-workbook-data.md +22 -0
  186. package/claude/references/sd-simplysm-v14/excel/types/excel-xml-worksheet-data.md +68 -0
  187. package/claude/references/sd-simplysm-v14/excel/types/excel-xml.md +15 -0
  188. package/claude/references/sd-simplysm-v14/excel/utilities/excel-utils.md +101 -0
  189. package/claude/references/sd-simplysm-v14/excel/wrapper/excel-wrapper.md +108 -0
  190. package/claude/references/sd-simplysm-v14/lint/README.md +183 -0
  191. package/claude/references/sd-simplysm-v14/orm-common/README.md +156 -0
  192. package/claude/references/sd-simplysm-v14/orm-common/core/db-context.md +208 -0
  193. package/claude/references/sd-simplysm-v14/orm-common/core/db-transaction-error.md +64 -0
  194. package/claude/references/sd-simplysm-v14/orm-common/expression/expr-unit.md +62 -0
  195. package/claude/references/sd-simplysm-v14/orm-common/expression/expr.md +198 -0
  196. package/claude/references/sd-simplysm-v14/orm-common/models/migration.md +37 -0
  197. package/claude/references/sd-simplysm-v14/orm-common/query-builder/create-query-builder.md +80 -0
  198. package/claude/references/sd-simplysm-v14/orm-common/queryable-executable/executable.md +54 -0
  199. package/claude/references/sd-simplysm-v14/orm-common/queryable-executable/parse-search-query.md +75 -0
  200. package/claude/references/sd-simplysm-v14/orm-common/queryable-executable/queryable.md +238 -0
  201. package/claude/references/sd-simplysm-v14/orm-common/schema-builders/column-builder.md +63 -0
  202. package/claude/references/sd-simplysm-v14/orm-common/schema-builders/foreign-key-builder.md +137 -0
  203. package/claude/references/sd-simplysm-v14/orm-common/schema-builders/index-builder.md +54 -0
  204. package/claude/references/sd-simplysm-v14/orm-common/schema-builders/procedure.md +67 -0
  205. package/claude/references/sd-simplysm-v14/orm-common/schema-builders/table.md +95 -0
  206. package/claude/references/sd-simplysm-v14/orm-common/schema-builders/view.md +71 -0
  207. package/claude/references/sd-simplysm-v14/orm-common/types/data-type.md +146 -0
  208. package/claude/references/sd-simplysm-v14/orm-common/types/dialect.md +151 -0
  209. package/claude/references/sd-simplysm-v14/orm-common/types/expr.md +175 -0
  210. package/claude/references/sd-simplysm-v14/orm-common/types/parse-query-result.md +58 -0
  211. package/claude/references/sd-simplysm-v14/orm-common/types/query-def.md +224 -0
  212. package/claude/references/sd-simplysm-v14/orm-node/README.md +65 -0
  213. package/claude/references/sd-simplysm-v14/orm-node/connections/mssql-db-conn.md +85 -0
  214. package/claude/references/sd-simplysm-v14/orm-node/connections/mysql-db-conn.md +83 -0
  215. package/claude/references/sd-simplysm-v14/orm-node/connections/postgresql-db-conn.md +86 -0
  216. package/claude/references/sd-simplysm-v14/orm-node/core/create-db-conn.md +62 -0
  217. package/claude/references/sd-simplysm-v14/orm-node/core/create-orm.md +107 -0
  218. package/claude/references/sd-simplysm-v14/orm-node/core/node-db-context-executor.md +50 -0
  219. package/claude/references/sd-simplysm-v14/orm-node/types/db-conn-config.md +91 -0
  220. package/claude/references/sd-simplysm-v14/orm-node/types/db-conn-constants.md +33 -0
  221. package/claude/references/sd-simplysm-v14/orm-node/types/db-conn.md +60 -0
  222. package/claude/references/sd-simplysm-v14/orm-node/types/get-dialect-from-config.md +17 -0
  223. package/{README.md → claude/references/sd-simplysm-v14/sd-claude/README.md} +85 -84
  224. package/{docs → claude/references/sd-simplysm-v14/sd-claude}/assets.md +2 -2
  225. package/{docs → claude/references/sd-simplysm-v14/sd-claude}/hooks.md +15 -1
  226. package/claude/references/sd-simplysm-v14/sd-cli/README.md +138 -0
  227. package/claude/references/sd-simplysm-v14/sd-cli/angular-vite-plugin/sd-angular-plugin.md +60 -0
  228. package/claude/references/sd-simplysm-v14/sd-cli/config/build-target.md +31 -0
  229. package/claude/references/sd-simplysm-v14/sd-cli/config/npm-config.md +27 -0
  230. package/claude/references/sd-simplysm-v14/sd-cli/config/sd-browser-support-config.md +19 -0
  231. package/claude/references/sd-simplysm-v14/sd-cli/config/sd-build-package-config.md +21 -0
  232. package/claude/references/sd-simplysm-v14/sd-cli/config/sd-capacitor-config.md +109 -0
  233. package/claude/references/sd-simplysm-v14/sd-cli/config/sd-client-package-config.md +33 -0
  234. package/claude/references/sd-simplysm-v14/sd-cli/config/sd-config.md +78 -0
  235. package/claude/references/sd-simplysm-v14/sd-cli/config/sd-electron-config.md +27 -0
  236. package/claude/references/sd-simplysm-v14/sd-cli/config/sd-package-config.md +18 -0
  237. package/claude/references/sd-simplysm-v14/sd-cli/config/sd-post-publish-script-config.md +19 -0
  238. package/claude/references/sd-simplysm-v14/sd-cli/config/sd-publish-config.md +72 -0
  239. package/claude/references/sd-simplysm-v14/sd-cli/config/sd-pwa-config.md +41 -0
  240. package/claude/references/sd-simplysm-v14/sd-cli/config/sd-scripts-package-config.md +19 -0
  241. package/claude/references/sd-simplysm-v14/sd-cli/config/sd-server-package-config.md +32 -0
  242. package/claude/references/sd-simplysm-v14/sd-cli/config/sd-watch-hook-config.md +19 -0
  243. package/claude/references/sd-simplysm-v14/sd-cli/ts-compiler/sd-ts-compiler.md +158 -0
  244. package/claude/references/sd-simplysm-v14/service-client/README.md +74 -0
  245. package/claude/references/sd-simplysm-v14/service-client/features/event-client.md +93 -0
  246. package/claude/references/sd-simplysm-v14/service-client/features/file-client.md +63 -0
  247. package/claude/references/sd-simplysm-v14/service-client/features/orm-client-connector.md +89 -0
  248. package/claude/references/sd-simplysm-v14/service-client/features/orm-client-db-context-executor.md +31 -0
  249. package/claude/references/sd-simplysm-v14/service-client/main/service-client.md +206 -0
  250. package/claude/references/sd-simplysm-v14/service-client/protocol/client-protocol-wrapper.md +64 -0
  251. package/claude/references/sd-simplysm-v14/service-client/transport/service-transport.md +68 -0
  252. package/claude/references/sd-simplysm-v14/service-client/transport/socket-provider.md +100 -0
  253. package/claude/references/sd-simplysm-v14/service-client/types/blob-input.md +7 -0
  254. package/claude/references/sd-simplysm-v14/service-client/types/browser-worker.md +47 -0
  255. package/claude/references/sd-simplysm-v14/service-client/types/file-collection.md +21 -0
  256. package/claude/references/sd-simplysm-v14/service-client/types/service-connection-options.md +22 -0
  257. package/claude/references/sd-simplysm-v14/service-client/types/service-progress.md +39 -0
  258. package/claude/references/sd-simplysm-v14/service-common/README.md +161 -0
  259. package/claude/references/sd-simplysm-v14/service-common/app-structure/app-structure-item.md +107 -0
  260. package/claude/references/sd-simplysm-v14/service-common/app-structure/get-flat-permissions.md +57 -0
  261. package/claude/references/sd-simplysm-v14/service-common/app-structure/is-usable-modules-chain.md +23 -0
  262. package/claude/references/sd-simplysm-v14/service-common/app-structure/is-usable-modules.md +42 -0
  263. package/claude/references/sd-simplysm-v14/service-common/events/define-event.md +68 -0
  264. package/claude/references/sd-simplysm-v14/service-common/protocol/create-service-protocol.md +93 -0
  265. package/claude/references/sd-simplysm-v14/service-common/protocol/protocol-config.md +21 -0
  266. package/claude/references/sd-simplysm-v14/service-common/protocol/service-add-event-listener-message.md +23 -0
  267. package/claude/references/sd-simplysm-v14/service-common/protocol/service-auth-message.md +17 -0
  268. package/claude/references/sd-simplysm-v14/service-common/protocol/service-emit-event-message.md +21 -0
  269. package/claude/references/sd-simplysm-v14/service-common/protocol/service-error-message.md +29 -0
  270. package/claude/references/sd-simplysm-v14/service-common/protocol/service-event-message.md +21 -0
  271. package/claude/references/sd-simplysm-v14/service-common/protocol/service-get-event-listener-infos-message.md +19 -0
  272. package/claude/references/sd-simplysm-v14/service-common/protocol/service-message.md +52 -0
  273. package/claude/references/sd-simplysm-v14/service-common/protocol/service-progress-message.md +21 -0
  274. package/claude/references/sd-simplysm-v14/service-common/protocol/service-remove-event-listener-message.md +19 -0
  275. package/claude/references/sd-simplysm-v14/service-common/protocol/service-request-message.md +17 -0
  276. package/claude/references/sd-simplysm-v14/service-common/protocol/service-response-message.md +17 -0
  277. package/claude/references/sd-simplysm-v14/service-common/service-types/app-structure-service.md +15 -0
  278. package/claude/references/sd-simplysm-v14/service-common/service-types/auto-update-service.md +20 -0
  279. package/claude/references/sd-simplysm-v14/service-common/service-types/orm-service.md +61 -0
  280. package/claude/references/sd-simplysm-v14/service-common/types/service-upload-result.md +19 -0
  281. package/claude/references/sd-simplysm-v14/service-server/README.md +162 -0
  282. package/claude/references/sd-simplysm-v14/service-server/auth/auth-token-payload.md +18 -0
  283. package/claude/references/sd-simplysm-v14/service-server/auth/sign-jwt.md +30 -0
  284. package/claude/references/sd-simplysm-v14/service-server/auth/verify-jwt.md +35 -0
  285. package/claude/references/sd-simplysm-v14/service-server/core/auth.md +64 -0
  286. package/claude/references/sd-simplysm-v14/service-server/core/define-service.md +81 -0
  287. package/claude/references/sd-simplysm-v14/service-server/core/execute-service-method.md +43 -0
  288. package/claude/references/sd-simplysm-v14/service-server/core/service-context.md +79 -0
  289. package/claude/references/sd-simplysm-v14/service-server/legacy/handle-v1-connection.md +25 -0
  290. package/claude/references/sd-simplysm-v14/service-server/main/create-service-server.md +32 -0
  291. package/claude/references/sd-simplysm-v14/service-server/main/service-server.md +113 -0
  292. package/claude/references/sd-simplysm-v14/service-server/protocol/server-protocol-wrapper.md +35 -0
  293. package/claude/references/sd-simplysm-v14/service-server/services/app-structure-service.md +59 -0
  294. package/claude/references/sd-simplysm-v14/service-server/services/auto-update-service.md +34 -0
  295. package/claude/references/sd-simplysm-v14/service-server/services/orm-service.md +43 -0
  296. package/claude/references/sd-simplysm-v14/service-server/transport-http/handle-http-request.md +33 -0
  297. package/claude/references/sd-simplysm-v14/service-server/transport-http/handle-static-file.md +29 -0
  298. package/claude/references/sd-simplysm-v14/service-server/transport-http/handle-upload.md +33 -0
  299. package/claude/references/sd-simplysm-v14/service-server/transport-socket/service-socket.md +64 -0
  300. package/claude/references/sd-simplysm-v14/service-server/transport-socket/websocket-handler.md +57 -0
  301. package/claude/references/sd-simplysm-v14/service-server/types/service-server-options.md +36 -0
  302. package/claude/references/sd-simplysm-v14/service-server/utils/get-config.md +29 -0
  303. package/claude/references/sd-simplysm-v14/storage/README.md +99 -0
  304. package/claude/references/sd-simplysm-v14/storage/clients/ftp-storage-client.md +99 -0
  305. package/claude/references/sd-simplysm-v14/storage/clients/sftp-storage-client.md +108 -0
  306. package/claude/references/sd-simplysm-v14/storage/factory/storage-factory.md +114 -0
  307. package/claude/references/sd-simplysm-v14/storage/types/file-info.md +32 -0
  308. package/claude/references/sd-simplysm-v14/storage/types/storage-client.md +55 -0
  309. package/claude/references/sd-simplysm-v14/storage/types/storage-conn-config.md +34 -0
  310. package/claude/rules/sd-claude-rules.md +8 -8
  311. package/claude/rules/sd-simplysm-v14.md +33 -0
  312. package/claude/skills/sd-claude-docs/SKILL.md +41 -24
  313. package/claude/skills/sd-claude-docs/references/package-docs.md +240 -116
  314. package/claude/skills/sd-inner-debug/SKILL.md +1 -1
  315. package/claude/skills/sd-inner-review/SKILL.md +4 -2
  316. package/package.json +2 -3
  317. /package/{docs → claude/references/sd-simplysm-v14/sd-claude}/cli.md +0 -0
  318. /package/{docs → claude/references/sd-simplysm-v14/sd-claude}/scripts.md +0 -0
@@ -1,10 +1,11 @@
1
- # sd-frontend-design: 프론트엔드 디자인 규칙
1
+ # sd-frontend-design: 프론트엔드 디자인 일반 규칙
2
2
 
3
3
  프론트엔드 UI 코드(HTML 템플릿, SCSS, 컴포넌트 구성)를 작성·수정할 때 적용한다.
4
+ 이 문서의 규칙은 일반 규칙이며, 특정 라이브러리 사용시 해당 라이브러리의 `README.md` 문서의 규칙을 우선시 한다.
4
5
 
5
- ## 기존 페이지 패턴 확인 (필수)
6
+ ## 기존 페이지 패턴 확인
6
7
 
7
- 코드 작성 전, 동일 프로젝트 내 **기존 페이지를 먼저 확인**하여 패턴을 파악한다.
8
+ 코드 작성 전, 동일 프로젝트 내 기존 페이지를 먼저 확인하여 패턴을 파악한다.
8
9
 
9
10
  - 레이아웃 구성 (Topbar, Sidebar, View 등의 조합 방식)
10
11
  - 색상·테마 사용 방식
@@ -12,16 +13,16 @@
12
13
  - 폼 컴포넌트 배치·스타일링 방식
13
14
  - 반응형 처리 방식
14
15
 
15
- **기존 패턴과 다른 방식을 사용해야 할 경우, 사용자에게 확인한다.**
16
+ 기존 패턴과 다른 방식을 사용해야 할 경우, 사용자에게 확인한다.
16
17
 
17
18
  ## 스타일링 수단 우선순위
18
19
 
19
- 스타일링 시 다음 우선순위에 따라 **상위 수단으로 해결 가능하면 하위 수단을 사용하지 않는다.**
20
+ 스타일링 시 다음 우선순위에 따라 **상위 수단으로 해결 가능하면 하위 수단을 사용하지 않는다.
20
21
 
21
- 1. **component** 패키지가 제공하는 컴포넌트 자체로 해결
22
- 2. **attribute** component input, directive 등 속성으로 해결
23
- 3. **class** 유틸리티 클래스로 해결
24
- 4. **style** 인라인 스타일, CSS 변수 직접 지정
22
+ 1. component: 패키지가 제공하는 컴포넌트 자체로 해결
23
+ 2. attribute: component input, directive 등 속성으로 해결
24
+ 3. class: 유틸리티 클래스로 해결
25
+ 4. style: 인라인 스타일, CSS 변수 직접 지정
25
26
 
26
27
  ## dependency 패키지 스타일 규칙 준수
27
28
 
@@ -0,0 +1,497 @@
1
+ # @simplysm/angular
2
+
3
+ Angular 21 기반 UI 컴포넌트 라이브러리. Zoneless, signal-based, standalone 컴포넌트로 구성된다.
4
+
5
+ > **NOTE:** 이 문서는 `@simplysm/angular` 라이브러리의 사용법만 다룬다. Angular 프레임워크 자체의 사용법(컴포넌트 작성, DI, 라우팅, signal 등)은 `angular-cli` MCP를 활용한다.
6
+
7
+ ## Installation
8
+
9
+ ```bash
10
+ npm install @simplysm/angular
11
+ ```
12
+
13
+ ## 하려는 작업 → 먼저 읽을 파일
14
+
15
+ | 작업 | 먼저 읽을 파일 |
16
+ |------|----------------|
17
+ | 앱 부트스트랩 | [provide-sd-angular.md](./bootstrap/provide-sd-angular.md) |
18
+ | CRUD 목록 화면 만들기 | [crud-list.md](./recipes/crud-list.md) |
19
+ | CRUD 상세 화면 만들기 | [crud-detail.md](./recipes/crud-detail.md) |
20
+ | 페이지/모달/컨트롤 컨테이너 | [page-modal-container.md](./recipes/page-modal-container.md) |
21
+ | 모달 선택 버튼 | [data-select-button.md](./recipes/data-select-button.md) |
22
+ | 모달 열기 | [sd-modal-provider.md](./providers/sd-modal-provider.md) |
23
+ | 토스트 알림 표시 | [sd-toast-provider.md](./providers/sd-toast-provider.md) |
24
+ | 인쇄/PDF 생성 | [sd-print-provider.md](./providers/sd-print-provider.md) |
25
+ | 공유 데이터 캐시 | [sd-shared-data-provider.md](./providers/sd-shared-data-provider.md) |
26
+ | 다크모드/폰트 크기 | [sd-theme-provider.md](./providers/sd-theme-provider.md) |
27
+ | 시트(스프레드시트) 사용 | [sd-sheet.md](./ui-data/sd-sheet.md) |
28
+
29
+ ## 먼저 읽기 (횡단 전제)
30
+
31
+ - [공통 규칙](./recipes/_common-rules.md) — 여러 Entry에 걸친 금지·컨벤션
32
+ - [provideSdAngular](./bootstrap/provide-sd-angular.md) — 반드시 등록해야 하는 환경 프로바이더
33
+
34
+ ## API Overview
35
+
36
+ ### Bootstrap
37
+
38
+ | API | Type | Description |
39
+ |-----|------|-------------|
40
+ | [`provideSdAngular`](./bootstrap/provide-sd-angular.md) | function | 모든 기반 설정을 제공하는 환경 프로바이더 팩토리 |
41
+ | [`SdAngularConfigProvider`](./bootstrap/sd-angular-config-provider.md) | class | `clientName` 설정을 보유하는 프로바이더 |
42
+
43
+ ### Providers
44
+
45
+ | API | Type | Description |
46
+ |-----|------|-------------|
47
+ | [`SdThemeProvider`](./providers/sd-theme-provider.md) | class | 다크모드/폰트 크기 프로바이더 (`dark`, `fontSize` signal) |
48
+ | [`SdThemeSelector`](./providers/sd-theme-provider.md) | component | 테마 설정 드롭다운 (다크모드 토글, 폰트 크기 조절) |
49
+ | [`SdSystemLogProvider`](./providers/sd-system-log-provider.md) | class | 시스템 로그 기록 프로바이더 |
50
+ | [`SdAppStructureProvider`](./providers/sd-app-structure-provider.md) | class | 앱 구조(메뉴/권한) 관리 프로바이더 |
51
+ | [`injectPermsSignal`](./providers/sd-app-structure-provider.md) | function | 현재 뷰의 권한 목록을 signal로 반환 |
52
+ | [`SdAppStructureUtils`](./providers/sd-app-structure-provider.md) | class | 앱 구조 유틸리티 (메뉴/권한 조회 정적 메서드) |
53
+ | [`SdFileDialogProvider`](./providers/sd-file-dialog-provider.md) | class | 네이티브 파일 선택 대화상자 프로바이더 |
54
+ | [`SdLocalStorageProvider`](./providers/sd-local-storage-provider.md) | class | `clientName` 스코프 localStorage 래퍼 |
55
+ | [`SdSystemConfigProvider`](./providers/sd-system-config-provider.md) | class | 비동기 설정 저장/조회 프로바이더 |
56
+ | [`SdServiceClientFactoryProvider`](./providers/sd-service-client-factory-provider.md) | class | ServiceClient 인스턴스 팩토리/관리 |
57
+ | [`SdSharedDataProvider`](./providers/sd-shared-data-provider.md) | class | 이벤트 기반 공유 데이터 캐시 추상 프로바이더 |
58
+ | [`SdSharedDataChangeEvent`](./providers/sd-shared-data-provider.md) | const | 공유 데이터 변경 이벤트 정의 |
59
+ | [`SdNavigateWindowProvider`](./providers/sd-navigate-window-provider.md) | class | 새 윈도우 네비게이션 + 자동 닫기 |
60
+ | [`SdActivatedModalProvider`](./providers/sd-activated-modal-provider.md) | class | 모달 내부에서 inject하여 모달/컨텐츠 참조 |
61
+ | [`SdToastProvider`](./providers/sd-toast-provider.md) | class | 토스트 알림 (info/success/warning/danger) |
62
+ | [`SdBusyProvider`](./providers/sd-busy-provider.md) | class | 글로벌 busy 상태 관리 (spinner/bar/cube) |
63
+ | [`SdPrintProvider`](./providers/sd-print-provider.md) | class | 인쇄 및 PDF 생성 프로바이더 |
64
+ | [`SdModalProvider`](./providers/sd-modal-provider.md) | class | 프로그래밍 방식 모달 생성 |
65
+
66
+ ### Provider Types
67
+
68
+ | API | Type | Description |
69
+ |-----|------|-------------|
70
+ | [`SdMenu`](./provider-types/sd-menu.md) | interface | 메뉴 트리 노드 |
71
+ | [`SdFlatMenu`](./provider-types/sd-menu.md) | interface | 플랫 메뉴 항목 |
72
+ | [`SdPermission`](./provider-types/sd-menu.md) | interface | 권한 트리 노드 |
73
+ | [`SharedDataBase`](./provider-types/shared-data-base.md) | interface | 공유 데이터 기본 인터페이스 |
74
+ | [`SharedDataInfo`](./provider-types/shared-data-base.md) | interface | 공유 데이터 등록 정보 |
75
+ | [`SharedDataHandle`](./provider-types/shared-data-base.md) | interface | 공유 데이터 핸들 (items signal + get) |
76
+ | [`SdModalContentDef`](./provider-types/sd-modal-content-def.md) | interface | 모달 컴포넌트 구현 인터페이스 |
77
+ | [`SdModalInfo`](./provider-types/sd-modal-content-def.md) | interface | 모달 생성 시 전달하는 정보 |
78
+ | [`SdModalOptions`](./provider-types/sd-modal-content-def.md) | interface | 모달 옵션 (크기, 위치, 동작) |
79
+ | [`SdToastContentDef`](./provider-types/sd-toast-content-def.md) | interface | 토스트 컴포넌트 구현 인터페이스 |
80
+ | [`SdToastInput`](./provider-types/sd-toast-content-def.md) | interface | 커스텀 토스트 생성 입력 |
81
+ | [`SdToastSeverity`](./provider-types/sd-toast-content-def.md) | type | 토스트 심각도 (`"info" \| "success" \| "warning" \| "danger"`) |
82
+ | [`SdToastTheme`](./provider-types/sd-toast-content-def.md) | type | 토스트 테마 (severity + `"primary" \| "secondary" \| "gray" \| "blue-gray"`) |
83
+ | [`SdBusyType`](./provider-types/sd-toast-content-def.md) | type | busy 표시 유형 (`"spinner" \| "bar" \| "cube"`) |
84
+ | [`SdPrint`](./provider-types/sd-toast-content-def.md) | interface | 인쇄 컴포넌트 구현 인터페이스 |
85
+ | [`SdPrintInput`](./provider-types/sd-toast-content-def.md) | interface | 인쇄 생성 입력 |
86
+ | [`SelectModalOutputResult`](./provider-types/sd-modal-content-def.md) | interface | 모달 선택 결과 (`selectedItemKeys`, `selectedItems`) |
87
+
88
+ ### Directives
89
+
90
+ | API | Type | Description |
91
+ |-----|------|-------------|
92
+ | [`SdEvents`](./directives/sd-events.md) | directive | `.capture`, `.passive`, `.once` 수식어 및 커스텀 이벤트 바인딩 |
93
+ | [`SdRipple`](./directives/sd-ripple.md) | directive | `[sdRipple]` 리플 효과 |
94
+ | [`SdShowEffect`](./directives/sd-show-effect.md) | directive | `[sdShowEffect]` 뷰포트 진입 시 reveal 애니메이션 |
95
+ | [`SdInvalid`](./directives/sd-invalid.md) | directive | `[sdInvalid]` 유효성 검증 표시기 |
96
+ | [`SdTypedTemplate`](./directives/sd-typed-template.md) | directive | `ng-template[typed]` 템플릿 컨텍스트 타입 가드 |
97
+ | [`SdItemOfTemplate`](./directives/sd-typed-template.md) | directive | `ng-template[itemOf]` 항목 반복 템플릿 타입 가드 |
98
+ | [`SdItemOfTemplateContext`](./directives/sd-typed-template.md) | interface | itemOf 템플릿 컨텍스트 (`$implicit`, `item`, `index`, `depth`) |
99
+ | [`SdRouterLink`](./directives/sd-router-link.md) | directive | `[sdRouterLink]` 라우터 네비게이션 (Ctrl+클릭 새 창) |
100
+ | [`SdCommandDirective`](./directives/sd-command-directive.md) | directive | `[sdSaveCommand]`, `[sdInsertCommand]` 키보드 단축키 output 이벤트 디렉티브 |
101
+ | [`SdResizeDirective`](./directives/sd-resize-directive.md) | directive | `[sdResize]` ResizeObserver 기반 resize output 이벤트 디렉티브 |
102
+ | [`SdResizeEvent`](./directives/sd-resize-directive.md) | interface | resize 이벤트 데이터 (`heightChanged`, `widthChanged`, `target`, `contentRect`) |
103
+ | [`SdIntersectionDirective`](./directives/sd-intersection-directive.md) | directive | `[sdIntersection]` IntersectionObserver 기반 intersection output 이벤트 디렉티브 |
104
+ | [`SdIntersectionEvent`](./directives/sd-intersection-directive.md) | interface | intersection 이벤트 데이터 (`entry`) |
105
+
106
+ ### Plugins
107
+
108
+ | API | Type | Description |
109
+ |-----|------|-------------|
110
+ | [`SdOptionEventPlugin`](./plugins/sd-option-event-plugin.md) | class | `.capture`, `.passive`, `.once` 이벤트 옵션 플러그인 (`provideSdAngular`에서 자동 등록) |
111
+ | [`SdGlobalErrorHandlerPlugin`](./plugins/sd-global-error-handler.md) | class | 글로벌 에러 핸들러 (PromiseRejection, ErrorEvent 등) |
112
+
113
+ ### Pipes
114
+
115
+ | API | Type | Description |
116
+ |-----|------|-------------|
117
+ | [`FormatPipe`](./pipes/format-pipe.md) | pipe | DateTime/DateOnly/string 포매팅 파이프 |
118
+
119
+ ### Utils & Setups
120
+
121
+ | API | Type | Description |
122
+ |-----|------|-------------|
123
+ | [`mark`](./utils/mark.md) | function | WritableSignal 변경 알림 트리거 (shallow copy) |
124
+ | [`setSafeStyle`](./utils/set-safe-style.md) | function | Renderer2로 여러 CSS 스타일 일괄 적용 |
125
+ | [`injectSdSystemConfigResource`](./utils/inject-sd-system-config-resource.md) | function | 시스템 설정 resource 래퍼 |
126
+ | [`injectCurrentPageCodeSignal`](./utils/inject-routing-signals.md) | function | 현재 페이지 코드 signal |
127
+ | [`injectFullPageCodeSignal`](./utils/inject-routing-signals.md) | function | 전체 페이지 코드 signal (NavigationEnd 기반) |
128
+ | [`injectViewTitleSignal`](./utils/inject-routing-signals.md) | function | 현재 뷰 타이틀 signal |
129
+ | [`injectViewTypeSignal`](./utils/inject-routing-signals.md) | function | 현재 뷰 타입 signal (`page \| modal \| control`) |
130
+ | [`useSelectionManager`](./utils/selection-managers.md) | function | 선택 관리 composable (single/multi) |
131
+ | [`useSortingManager`](./utils/selection-managers.md) | function | 정렬 관리 composable |
132
+ | [`useExpandingManager`](./utils/selection-managers.md) | function | 트리 확장/축소 관리 composable |
133
+ | [`setupBgTheme`](./utils/setup-functions.md) | function | body 배경 테마 색상 설정 |
134
+ | [`setupRipple`](./utils/setup-functions.md) | function | 리플 효과 설정 |
135
+ | [`setupRevealOnShow`](./utils/setup-functions.md) | function | 뷰포트 진입 시 reveal 애니메이션 설정 |
136
+ | [`setupInvalid`](./utils/setup-functions.md) | function | 유효성 검증 표시기 설정 |
137
+ | [`setupModelHook`](./utils/setup-functions.md) | function | model signal의 set을 가드 함수로 래핑 |
138
+ | [`setupCanDeactivate`](./utils/setup-functions.md) | function | 모달/라우트 canDeactivate 설정 |
139
+
140
+ ### Type Utilities
141
+
142
+ | API | Type | Description |
143
+ |-----|------|-------------|
144
+ | [`DirectiveInputSignals`](./type-utilities/directive-input-signals.md) | type | InputSignal 프로퍼티에서 값 타입 추출 |
145
+ | [`UndefToOptional`](./type-utilities/directive-input-signals.md) | type | undefined 포함 프로퍼티를 optional로 변환 |
146
+ | [`WithOptional`](./type-utilities/directive-input-signals.md) | type | 특정 키를 optional로 변환 |
147
+ | [`SdViewType`](./type-utilities/directive-input-signals.md) | type | 뷰 타입 (`"page" \| "modal" \| "control"`) |
148
+ | [`SortingDef`](./type-utilities/directive-input-signals.md) | interface | 정렬 정의 (`key`, `desc`) |
149
+ | [`ExpandItemDef`](./type-utilities/directive-input-signals.md) | interface | 트리 확장 항목 정의 |
150
+ | [`SdSelectModal`](./type-utilities/directive-input-signals.md) | interface | 모달 선택 컴포넌트 인터페이스 |
151
+ | [`SdSelectModalInfo`](./type-utilities/directive-input-signals.md) | type | 모달 선택 정보 타입 |
152
+ | [`SdTextfieldTypes`](./type-utilities/directive-input-signals.md) | type | 텍스트필드 타입별 값 타입 매핑 |
153
+ | [`sdTextfieldTypes`](./type-utilities/directive-input-signals.md) | const | 텍스트필드 타입 문자열 배열 |
154
+ | [`SelectModeValue`](./type-utilities/directive-input-signals.md) | type | select mode별 value 타입 매핑 |
155
+
156
+ ### Features
157
+
158
+ | API | Type | Description |
159
+ |-----|------|-------------|
160
+ | [`SdAddressSearchModal`](./features/sd-address-search-modal.md) | component | Daum Postcode 주소 검색 모달 |
161
+ | [`Address`](./features/sd-address-search-modal.md) | interface | 주소 검색 결과 |
162
+ | [`SdPermissionTable`](./features/sd-permission-table.md) | component | 권한 매트릭스 테이블 (items, value) |
163
+ | [`SdSharedDataSelect`](./features/sd-shared-data-components.md) | component | 공유 데이터 드롭다운 선택 |
164
+ | [`SdSharedDataSelectButton`](./features/sd-shared-data-components.md) | component | 공유 데이터 모달 선택 버튼 |
165
+ | [`SdSharedDataSelectList`](./features/sd-shared-data-components.md) | component | 공유 데이터 목록형 선택 (selectedItem model) |
166
+ | [`matchesSearchText`](./features/sd-shared-data-components.md) | function | 공백 구분 AND 조건 텍스트 검색 매칭 |
167
+
168
+ ### UI - Layout
169
+
170
+ | API | Type | Description |
171
+ |-----|------|-------------|
172
+ | [`SdDockContainer`](./ui-layout/sd-dock-container.md) | component | 도킹 레이아웃 컨테이너 |
173
+ | [`SdDock`](./ui-layout/sd-dock.md) | component | 도킹 영역 (top/bottom/left/right) |
174
+ | [`SdGap`](./ui-layout/sd-gap.md) | component | 간격 (gap) 컴포넌트 |
175
+ | [`SdKanbanBoard`](./ui-layout/sd-kanban-board.md) | component | 칸반 보드 (드래그앤드롭, selectedValues) |
176
+ | [`SdKanbanBoardDropInfo`](./ui-layout/sd-kanban-board.md) | interface | 칸반 보드 드롭 이벤트 정보 |
177
+ | [`SdKanbanDragRef`](./ui-layout/sd-kanban-board.md) | interface | 칸반 드래그 참조 인터페이스 |
178
+ | [`SdKanbanDropTarget`](./ui-layout/sd-kanban-board.md) | interface | 칸반 드롭 타겟 인터페이스 |
179
+ | [`SdKanban`](./ui-layout/sd-kanban.md) | component | 칸반 아이템 |
180
+ | [`SdKanbanLane`](./ui-layout/sd-kanban-lane.md) | component | 칸반 레인 |
181
+
182
+ ### UI - Form
183
+
184
+ | API | Type | Description |
185
+ |-----|------|-------------|
186
+ | [`SdButton`](./ui-form/sd-button.md) | component | 버튼 |
187
+ | [`SdAnchor`](./ui-form/sd-anchor.md) | component | 앵커 (인라인 버튼) |
188
+ | [`SdAdditionalButton`](./ui-form/sd-additional-button.md) | component | 추가 동작 버튼 (드롭다운 포함) |
189
+ | [`SdModalSelectButton`](./ui-form/sd-modal-select-button.md) | component | 모달 선택 버튼 |
190
+ | [`SdTextfield`](./ui-form/sd-textfield.md) | component | 텍스트 입력 (13가지 타입: number, text, password, color, email, format, date, month, year, datetime, datetime-sec, time, time-sec) |
191
+ | [`SdTextarea`](./ui-form/sd-textarea.md) | component | 멀티라인 텍스트 입력 |
192
+ | [`SdNumpad`](./ui-form/sd-numpad.md) | component | 숫자 패드 |
193
+ | [`SdRange`](./ui-form/sd-range.md) | component | 범위 슬라이더 |
194
+ | [`SdDateRangePicker`](./ui-form/sd-date-range-picker.md) | component | 날짜 범위 선택기 |
195
+ | [`SdStatePreset`](./ui-form/sd-state-preset.md) | component | 상태 프리셋 저장/불러오기 |
196
+ | [`SdStatePresetDef`](./ui-form/sd-state-preset.md) | interface | 상태 프리셋 데이터 (name, state) |
197
+ | [`SdCheckbox`](./ui-form/sd-checkbox.md) | component | 체크박스 |
198
+ | [`SdSwitch`](./ui-form/sd-switch.md) | component | 스위치 토글 |
199
+ | [`SdCheckboxGroup`](./ui-form/sd-checkbox-group.md) | component | 체크박스 그룹 |
200
+ | [`SdCheckboxGroupItem`](./ui-form/sd-checkbox-group.md) | component | 체크박스 그룹 항목 |
201
+ | [`SdTiptapEditor`](./features/sd-tiptap-editor.md) | component | TipTap 리치 텍스트 에디터 |
202
+ | [`SdSelect`](./ui-form/sd-select.md) | component | 드롭다운 선택 (single/multi) |
203
+ | [`SdSelectItem`](./ui-form/sd-select.md) | component | 드롭다운 선택 항목 |
204
+ | [`SdSelectButton`](./ui-form/sd-select.md) | component | 버튼 스타일 선택 |
205
+ | [`SdForm`](./ui-form/sd-form.md) | component | 폼 래퍼 (submit 이벤트, busy 관리) |
206
+
207
+ ### UI - Navigation
208
+
209
+ | API | Type | Description |
210
+ |-----|------|-------------|
211
+ | [`SdCollapse`](./ui-navigation/sd-collapse.md) | component | 접기/펼치기 패널 |
212
+ | [`SdCollapseIcon`](./ui-navigation/sd-collapse.md) | component | 접기/펼치기 아이콘 |
213
+ | [`SdTab`](./ui-navigation/sd-tab.md) | component | 탭 컨테이너 |
214
+ | [`SdTabItem`](./ui-navigation/sd-tab.md) | component | 탭 항목 |
215
+ | [`SdPagination`](./ui-navigation/sd-pagination.md) | component | 페이지네이션 |
216
+ | [`SdSidebarContainer`](./ui-navigation/sd-sidebar-container.md) | component | 사이드바 컨테이너 |
217
+ | [`SdSidebar`](./ui-navigation/sd-sidebar-container.md) | component | 사이드바 |
218
+ | [`SdSidebarMenu`](./ui-navigation/sd-sidebar-menu.md) | component | 사이드바 메뉴 |
219
+ | [`SdSidebarUser`](./ui-navigation/sd-sidebar-user.md) | component | 사이드바 사용자 영역 |
220
+ | [`SdSidebarUserMenu`](./ui-navigation/sd-sidebar-user.md) | interface | 사이드바 사용자 메뉴 항목 |
221
+ | [`SdTopbarContainer`](./ui-navigation/sd-topbar-container.md) | component | 탑바 컨테이너 |
222
+ | [`SdTopbar`](./ui-navigation/sd-topbar.md) | component | 탑바 |
223
+ | [`SdTopbarMenu`](./ui-navigation/sd-topbar-menu.md) | component | 탑바 메뉴 |
224
+ | [`SdTopbarUser`](./ui-navigation/sd-topbar-user.md) | component | 탑바 사용자 영역 |
225
+ | [`SdTopbarUserMenu`](./ui-navigation/sd-topbar-user.md) | interface | 탑바 사용자 메뉴 항목 |
226
+ | [`getMenuRouterLinkOption`](./ui-navigation/sd-sidebar-menu.md) | function | 메뉴에서 라우터 링크 옵션 추출 |
227
+ | [`getIsMenuSelected`](./ui-navigation/sd-sidebar-menu.md) | function | 메뉴 선택 여부 확인 |
228
+
229
+ ### UI - Data
230
+
231
+ | API | Type | Description |
232
+ |-----|------|-------------|
233
+ | [`SdList`](./ui-data/sd-list.md) | component | 리스트 |
234
+ | [`SdListItem`](./ui-data/sd-list.md) | component | 리스트 항목 |
235
+ | [`SdSheet`](./ui-data/sd-sheet.md) | component | 스프레드시트 (정렬, 고정, 리사이즈). `key`로 설정 저장 |
236
+ | [`SdSheetColumn`](./ui-data/sd-sheet.md) | directive | 시트 컬럼 정의 (헤더, 너비, 고정, 정렬 등) |
237
+ | [`SdSheetColumnCellTemplate`](./ui-data/sd-sheet.md) | directive | 시트 컬럼 셀 내용 정의 (`ng-template[cell]`), `SdSheetCellContext` 타입 가드 제공 |
238
+ | [`SdSheetCellContext`](./ui-data/sd-sheet.md) | interface | 시트 셀 템플릿 컨텍스트 (`$implicit`, `item`, `index`, `depth`, `edit`) |
239
+ | [`SdSheetConfigModal`](./ui-data/sd-sheet.md) | component | 시트 설정 모달 |
240
+ | [`SdSheetColumnDef`](./ui-data/sd-sheet.md) | interface | 시트 컬럼 정의 데이터 |
241
+ | [`SdSheetConfig`](./ui-data/sd-sheet.md) | interface | 시트 설정 데이터 |
242
+ | [`SdSheetHeaderDef`](./ui-data/sd-sheet.md) | interface | 시트 헤더 정의 |
243
+ | [`SdSheetItemKeydownEventParam`](./ui-data/sd-sheet.md) | interface | 시트 항목 keydown 이벤트 파라미터 |
244
+ | [`SdSheetCellKeydownEventParam`](./ui-data/sd-sheet.md) | interface | 시트 셀 keydown 이벤트 파라미터 |
245
+
246
+ ### UI - Visual
247
+
248
+ | API | Type | Description |
249
+ |-----|------|-------------|
250
+ | [`SdLabel`](./ui-visual/sd-label.md) | component | 라벨 (테마, 크기) |
251
+ | [`SdNote`](./ui-visual/sd-note.md) | component | 노트/알림 메시지 |
252
+ | [`SdProgress`](./ui-visual/sd-progress.md) | component | 진행률 바 |
253
+ | [`SdCalendar`](./ui-visual/sd-calendar.md) | component | 캘린더 |
254
+ | [`SdBarcode`](./ui-visual/sd-barcode.md) | component | 바코드 생성 (bwip-js) |
255
+ | [`SdEcharts`](./ui-visual/sd-echarts.md) | component | ECharts 차트 래퍼 |
256
+ | [`BarcodeType`](./ui-visual/sd-barcode.md) | type | 바코드 타입 |
257
+
258
+ ### UI - Overlay
259
+
260
+ | API | Type | Description |
261
+ |-----|------|-------------|
262
+ | [`SdDropdown`](./ui-overlay/sd-dropdown.md) | component | 드롭다운 트리거 |
263
+ | [`SdDropdownPopup`](./ui-overlay/sd-dropdown.md) | component | 드롭다운 팝업 |
264
+ | [`SdModal`](./ui-overlay/sd-modal.md) | component | 모달 래퍼 컴포넌트 |
265
+ | [`SdPromptModal`](./ui-overlay/sd-prompt-modal.md) | component | 프롬프트 입력 모달 |
266
+ | [`SdConfirmModal`](./ui-overlay/sd-confirm-modal.md) | component | 확인/취소 모달 |
267
+ | [`SdToast`](./ui-overlay/sd-toast.md) | component | 토스트 개별 항목 |
268
+ | [`SdToastContainer`](./ui-overlay/sd-toast.md) | component | 토스트 컨테이너 |
269
+ | [`SdBusyContainer`](./ui-overlay/sd-busy-container.md) | component | busy 표시 컨테이너 |
270
+
271
+ ### Recipes
272
+
273
+ 화면 조립 레시피. "무엇을 만들고 싶은가" 기준으로 진입한다.
274
+
275
+ | Recipe | Description |
276
+ |--------|-------------|
277
+ | [페이지/모달 컨테이너](./recipes/page-modal-container.md) | `<sd-busy-container>` · `<sd-topbar-container>` · `<sd-topbar>` 직접 조립으로 page/modal/control 뷰 재사용 |
278
+ | [CRUD 리스트](./recipes/crud-list.md) | 조회 전용 page → 인라인 편집 → 선택 모달 → 엑셀 내보내기까지 누적 확장 |
279
+ | [CRUD 상세폼](./recipes/crud-detail.md) | 읽기 전용 상세 → 편집/저장 → 삭제/복원 → modal/control 뷰까지 누적 확장 |
280
+ | [모달 선택 버튼](./recipes/data-select-button.md) | `<sd-modal-select-button>` 직접 사용 / `<sd-shared-data-select-button>` / 사용자 정의 wrapper |
281
+
282
+ ### Styling
283
+
284
+ | Entry | Description |
285
+ |-------|-------------|
286
+ | [CSS Classes](./styling/classes.md) | 레이아웃, 유틸리티, 폼, 테이블 클래스 |
287
+ | [CSS Custom Properties](./styling/variables.md) | OKLCH 색상 팔레트, 간격, 폰트, 레이아웃 변수 |
288
+ | [Themes](./styling/themes.md) | 다크 모드 테마 클래스 |
289
+ | [Mixins / Functions](./styling/mixins.md) | 공개 SCSS mixin/function |
290
+
291
+ ## 컴포넌트 비동기 초기화 규칙
292
+
293
+ 컴포넌트에서 비동기 초기화가 필요한 경우 constructor `effect()` + `void untracked(async () => ...)` 패턴을 사용한다. signal 의존성을 `effect` 콜백의 동기 부분에서 읽어 등록하고, 비동기 작업은 `untracked` 안에서 수행한다. 의존 signal이 변경되면 effect가 자동 재실행된다.
294
+
295
+ ```typescript
296
+ export class SomePage {
297
+ busyCount = signal(0);
298
+ initialized = signal(false);
299
+
300
+ constructor() {
301
+ effect(() => {
302
+ // signal 의존성 등록 (untracked 바깥)
303
+ this.someInput();
304
+ this.lastFilter();
305
+
306
+ void untracked(async () => {
307
+ this.busyCount.update((v) => v + 1);
308
+ await this._sdToast.try(async () => {
309
+ // 비동기 초기화 로직
310
+ });
311
+ this.busyCount.update((v) => v - 1);
312
+ this.initialized.set(true);
313
+ });
314
+ });
315
+ }
316
+ }
317
+ ```
318
+
319
+ - constructor 내 `void (async () => { ... })()` IIFE 패턴 **금지**
320
+ - constructor 내 `void this._init()` 같은 수동 호출 패턴 **금지** — effect가 이미 같은 역할
321
+ - `async ngOnInit()` 패턴 **금지** — 1회만 실행되어 input signal 변경에 반응하지 않는다. effect는 의존 signal 변경 시 자동 재실행된다
322
+ - `resource()` / `httpResource()`는 데이터 로딩 → signal 매핑 용도. 사이드이펙트(라우팅, toast 등) 포함 초기화에는 사용하지 않는다
323
+
324
+ ## 소비 프로젝트 네이밍 규칙
325
+
326
+ `@simplysm/angular`를 소비하는 앱 프로젝트에서의 파일명·클래스명·selector 규칙이다.
327
+ 파일명은 **kebab-case + dot-suffix**, 클래스명은 **PascalCase**를 따른다.
328
+
329
+ | 접미어 | 조건 | 파일명 예시 | 클래스명 예시 | selector 예시 |
330
+ |--------|------|-------------|---------------|---------------|
331
+ | `.list.ts` / `*List` | 여러 레코드를 조회·관리하는 화면 ([recipes/crud-list.md](./recipes/crud-list.md)) | `outbound-instruction.list.ts` | `OutboundInstructionList` | `app-outbound-instruction-list` |
332
+ | `.detail.ts` / `*Detail` | 단일 레코드를 조회·편집하는 화면 ([recipes/crud-detail.md](./recipes/crud-detail.md)) | `outbound-instruction.detail.ts` | `OutboundInstructionDetail` | `app-outbound-instruction-detail` |
333
+ | `.view.ts` / `*View` | list/detail 아닌 route 연결 화면 (대시보드, 설정 등) | `dashboard.view.ts` | `DashboardView` | `app-dashboard-view` |
334
+ | `.modal.ts` / `*Modal` | 모달 전용 컴포넌트 (route 없이 `SdModalProvider.showAsync`로만 열림) | `item-select.modal.ts` | `ItemSelectModal` | `app-item-select-modal` |
335
+ | `.print-template.ts` / `*PrintTemplate` | 인쇄 전용 컴포넌트 (`SdPrintProvider`로 호출, `SdPrint` 구현) | `box-label.print-template.ts` | `BoxLabelPrintTemplate` | `app-box-label-print-template` |
336
+ | `.provider.ts` / `*Provider` | `@Injectable` 클래스 (**`*Service` 금지**) | `app-service.provider.ts` | `AppServiceProvider` | — |
337
+ | 접미어 없음 | route 미연결 일반 컨트롤 컴포넌트 | `instruction-item.ts` | `InstructionItem` | `app-instruction-item` |
338
+
339
+ - `pipe`, `directive` 등 기타 Angular 구성요소는 `@simplysm/angular` 패키지 자체의 네이밍 패턴(`.pipe.ts`, `.directive.ts`)을 따른다
340
+ - route 화면이 모달로도 재사용되는 경우(예: 선택 모달 겸용 리스트) **주 용도(route)의 suffix**를 유지한다 (예: `CustomerList` + `implements SdSelectModal`)
341
+
342
+ ### selector 규칙
343
+
344
+ selector는 `app-{도메인}-{suffix}` 형식이다. 같은 도메인에 list와 detail이 공존할 수 있으므로 suffix를 반드시 포함한다.
345
+
346
+ | 클래스명 | selector |
347
+ |----------|----------|
348
+ | `CustomerList` | `app-customer-list` |
349
+ | `CustomerDetail` | `app-customer-detail` |
350
+ | `DashboardView` | `app-dashboard-view` |
351
+ | `ItemSelectModal` | `app-item-select-modal` |
352
+
353
+ ### interface 네이밍
354
+
355
+ 소비앱 내부의 로컬 interface에는 **`I` prefix**를 사용한다. 라이브러리에서 import하는 타입(`SortingDef`, `SharedDataBase` 등)에는 붙이지 않는다.
356
+
357
+ ```typescript
358
+ // 소비앱 로컬 interface — I prefix 사용
359
+ interface IFilter { searchText?: string; }
360
+ interface ICustomer { id: number; name: string; }
361
+
362
+ // 라이브러리 타입 — 그대로 사용
363
+ import type { SortingDef, SharedDataBase } from "@simplysm/angular";
364
+ ```
365
+
366
+ ## 소비 프로젝트 디렉토리 구조
367
+
368
+ ```
369
+ src/
370
+ ├── app/ # 라우팅 페이지 (사이드바 메뉴 트리 구조와 대응)
371
+ │ ├── login/
372
+ │ └── home/
373
+ │ ├── {메뉴-그룹}/ # 사이드바 메뉴 그룹
374
+ │ │ └── {도메인}/ # 개별 도메인 (트리 깊이 제한 없음)
375
+ │ │ ├── {도메인}.view.ts # route 연결 병합 컴포넌트
376
+ │ │ ├── {도메인}.list.ts # 여러 레코드 조회·관리 (recipes/crud-list.md)
377
+ │ │ ├── {도메인}.detail.ts # 단일 레코드 조회·편집 (recipes/crud-detail.md)
378
+ │ │ ├── {이름}.modal.ts # 도메인 전용 모달
379
+ │ │ └── {이름}.ts # 일반 컨트롤 (route 미연결)
380
+ │ └── main/
381
+ ├── controls/ # 앱 공유 컨트롤 컴포넌트
382
+ ├── directives/ # 앱 공유 디렉티브
383
+ ├── modals/ # 앱 전역 공통 모달
384
+ ├── providers/ # 앱 전역 프로바이더
385
+ ├── types/ # 타입 정의
386
+ └── utils/ # 유틸리티
387
+ ```
388
+
389
+ - `app/` 하위 트리는 사이드바 메뉴 구조와 거의 대응된다
390
+ - **배치 기준은 "어느 도메인에 소속되는가"**이다. provider, modal, directive, print-template, util 등 모든 종류의 파일이 소속 도메인 폴더 안에 배치된다 (다른 도메인에서 import하여 사용하는 것은 자유)
391
+ - 특정 도메인에 소속되지 않는 공통 파일만 `src/` 직하의 `controls/`, `modals/`, `providers/` 등에 배치한다
392
+
393
+ ## inject 네이밍 컨벤션
394
+
395
+ `Sd*Provider`를 `inject()`할 때 변수명은 다음 규칙을 따른다:
396
+
397
+ - **Sd 접두어 유지**: 클래스명에서 `Sd`를 camelCase로 변환하여 유지한다
398
+ - **Provider 접미어 제거**: 변수명에서 `Provider`를 제거한다
399
+
400
+ | inject 대상 | 클래스 필드 | 로컬 변수 |
401
+ |-------------|-----------|----------|
402
+ | `SdToastProvider` | `private _sdToast = inject(SdToastProvider)` | `const sdToast = inject(SdToastProvider)` |
403
+ | `SdModalProvider` | `private _sdModal = inject(SdModalProvider)` | `const sdModal = inject(SdModalProvider)` |
404
+ | `SdServiceClientFactoryProvider` | `private _sdServiceClientFactory = inject(SdServiceClientFactoryProvider)` | `const sdServiceClientFactory = inject(...)` |
405
+
406
+ ## Usage Examples
407
+
408
+ ### 앱 부트스트랩
409
+
410
+ ```typescript
411
+ import { provideSdAngular } from "@simplysm/angular";
412
+
413
+ bootstrapApplication(AppComponent, {
414
+ providers: [
415
+ provideSdAngular({ clientName: "my-app" }),
416
+ provideRouter(routes),
417
+ ],
418
+ });
419
+ ```
420
+
421
+ ### 모달 표시
422
+
423
+ ```typescript
424
+ import { SdModalProvider, type SdModalInfo } from "@simplysm/angular";
425
+
426
+ const sdModal = inject(SdModalProvider);
427
+
428
+ const result = await sdModal.showAsync(
429
+ { title: "사용자 선택", type: UserSelectModal, inputs: { filter: "active" } },
430
+ { useCloseByBackdrop: true },
431
+ );
432
+ ```
433
+
434
+ ### 서비스 + 이벤트 프록시 (AppServiceProvider 패턴)
435
+
436
+ 소비 프로젝트에서 서비스와 이벤트를 한 곳에서 관리하는 패턴:
437
+
438
+ ```typescript
439
+ import { inject, Injectable } from "@angular/core";
440
+ import { SdServiceClientFactoryProvider } from "@simplysm/angular";
441
+ import { createOrmClientConnector, type OrmClientConnector, type ServiceProxy } from "@simplysm/service-client";
442
+ import type { SystemLogServiceType } from "@my-server-package";
443
+ import type { OrderUpdatedEvent } from "@my-server-package"; // import type만 가능
444
+
445
+ @Injectable({ providedIn: "root" })
446
+ export class AppServiceProvider {
447
+ private readonly _sdServiceClientFactory = inject(SdServiceClientFactoryProvider);
448
+
449
+ get client() {
450
+ return this._sdServiceClientFactory.get("MAIN");
451
+ }
452
+
453
+ // 서비스 프록시 — getService() 패턴
454
+ get systemLog() {
455
+ return this.client.getService<SystemLogServiceType>("SystemLog");
456
+ }
457
+
458
+ // 이벤트 프록시 — getEvent() 패턴 (getService()와 동일)
459
+ get orderUpdated() {
460
+ return this.client.getEvent<typeof OrderUpdatedEvent>("OrderUpdated");
461
+ }
462
+ }
463
+ ```
464
+
465
+ 사용처에서:
466
+
467
+ ```typescript
468
+ const appSvc = inject(AppServiceProvider);
469
+
470
+ // 서비스 호출
471
+ await appSvc.systemLog.writeLog("hello");
472
+
473
+ // 이벤트 구독 — 이벤트 이름과 제네릭 타입을 반복 지정할 필요 없음
474
+ const key = await appSvc.orderUpdated.addListener({ orderId: 123 }, async (data) => {
475
+ // data.status는 string으로 타입 추론
476
+ });
477
+
478
+ // 이벤트 발행
479
+ await appSvc.orderUpdated.emit((info) => info.orderId === 123, { status: "shipped" });
480
+
481
+ // 구독 해제
482
+ await appSvc.orderUpdated.removeListener(key);
483
+ ```
484
+
485
+ ### 토스트 알림
486
+
487
+ ```typescript
488
+ import { SdToastProvider } from "@simplysm/angular";
489
+
490
+ const sdToast = inject(SdToastProvider);
491
+
492
+ sdToast.success("저장되었습니다.");
493
+ const result = await sdToast.try(async () => {
494
+ return await someAsyncWork();
495
+ });
496
+ ```
497
+
@@ -0,0 +1,37 @@
1
+ # `provideSdAngular`
2
+
3
+ 모든 기반 설정을 제공하는 환경 프로바이더 팩토리. `bootstrapApplication`의 `providers`에 추가한다.
4
+
5
+ ```typescript
6
+ function provideSdAngular(opt: { clientName: string }): EnvironmentProviders
7
+ ```
8
+
9
+ ## Parameters
10
+
11
+ | Param | Type | Description |
12
+ |-------|------|-------------|
13
+ | `opt.clientName` | `string` | 클라이언트 이름 (localStorage 키 접두사 등에 사용) |
14
+
15
+ ## 제공하는 기능
16
+
17
+ - `provideZonelessChangeDetection()` — Zone 없는 변경 감지
18
+ - `IMAGE_CONFIG` — 이미지 크기/지연 로딩 경고 비활성화
19
+ - `provideNgIconsConfig({ strokeWidth: 1.5, size: "1.33em" })`
20
+ - `SdOptionEventPlugin` 등록 (`EVENT_MANAGER_PLUGINS` multi-provider) — `.capture`/`.passive`/`.once` 이벤트 수식어
21
+ - `SdGlobalErrorHandlerPlugin` — 글로벌 에러 핸들러
22
+ - 테마 초기화 (localStorage 동기화, body 클래스 토글)
23
+ - Service Worker 업데이트 폴링 (5분 간격, 실패 시 exponential backoff, 최대 1시간)
24
+ - 라우터 네비게이션 busy 상태 추적 (`SdBusyProvider.globalBusyCount` signal 증감)
25
+
26
+ ## Usage
27
+
28
+ ```typescript
29
+ import { provideSdAngular } from "@simplysm/angular";
30
+
31
+ bootstrapApplication(AppComponent, {
32
+ providers: [
33
+ provideSdAngular({ clientName: "my-app" }),
34
+ provideRouter(routes),
35
+ ],
36
+ });
37
+ ```
@@ -0,0 +1,16 @@
1
+ # `SdAngularConfigProvider`
2
+
3
+ `clientName` 설정을 보유하는 프로바이더. [`provideSdAngular`](./provide-sd-angular.md)에서 자동 설정된다.
4
+
5
+ ```typescript
6
+ @Injectable({ providedIn: "root" })
7
+ class SdAngularConfigProvider {
8
+ clientName!: string;
9
+ }
10
+ ```
11
+
12
+ ## Members
13
+
14
+ | Member | Kind | Type | Description |
15
+ |--------|------|------|-------------|
16
+ | `clientName` | property | `string` | 클라이언트 이름 |
@@ -0,0 +1,27 @@
1
+ # `SdCommandDirective`
2
+
3
+ 키보드 단축키를 output 이벤트로 제공하는 디렉티브. `document` keydown을 감지하며, `shouldProcessCommandEvent()`로 최상위 모달만 이벤트 처리한다.
4
+
5
+ ```typescript
6
+ @Directive({ selector: "[sdSaveCommand],[sdInsertCommand]" })
7
+ class SdCommandDirective {
8
+ sdSaveCommand = output<KeyboardEvent>(); // Ctrl+S
9
+ sdInsertCommand = output<KeyboardEvent>(); // Ctrl+Insert
10
+ }
11
+ ```
12
+
13
+ ## Members
14
+
15
+ | Member | Kind | Type | Description |
16
+ |--------|------|------|-------------|
17
+ | `sdSaveCommand` | output | `KeyboardEvent` | Ctrl+S 단축키 이벤트 |
18
+ | `sdInsertCommand` | output | `KeyboardEvent` | Ctrl+Insert 단축키 이벤트 |
19
+
20
+ ## Usage
21
+
22
+ ```html
23
+ <div
24
+ (sdSaveCommand)="onSave($event)"
25
+ (sdInsertCommand)="onInsert($event)"
26
+ ></div>
27
+ ```
@@ -0,0 +1,25 @@
1
+ # `SdEvents`
2
+
3
+ `.capture`, `.passive`, `.once` 수식어 및 커스텀 이벤트 바인딩을 지원하는 디렉티브. Angular 템플릿에서 해당 이벤트를 사용할 때 자동 매칭된다.
4
+
5
+ ```typescript
6
+ @Directive({
7
+ selector: `[click.capture], [scroll.passive], ...`,
8
+ })
9
+ class SdEvents {}
10
+ ```
11
+
12
+ ## 지원 이벤트
13
+
14
+ - 클릭: `click.capture`, `click.once`, `click.capture.once`
15
+ - 마우스: `mousedown.capture`, `mouseup.capture`, `mouseover.capture`, `mouseout.capture`
16
+ - 키보드: `keydown.capture`, `keyup.capture`
17
+ - 포커스: `focus.capture`, `blur.capture`
18
+ - 폼: `invalid.capture`
19
+ - 스크롤: `scroll.capture`, `scroll.passive`, `scroll.capture.passive`
20
+ - 휠: `wheel.passive`, `wheel.capture.passive`
21
+ - 터치: `touchstart.passive`, `touchstart.capture.passive`, `touchmove.passive`, `touchmove.capture.passive`, `touchend.passive`
22
+ - 드래그: `dragover.capture`, `dragenter.capture`, `dragleave.capture`, `drop.capture`
23
+ - 애니메이션: `transitionend.once`, `animationend.once`
24
+
25
+ > **NOTE:** `sdResize`는 [`SdResizeDirective`](./sd-resize-directive.md)로, `sdSaveCommand`/`sdInsertCommand`는 [`SdCommandDirective`](./sd-command-directive.md)로 분리되어 독립 디렉티브로 제공된다. [`SdIntersectionDirective`](./sd-intersection-directive.md)는 IntersectionObserver 기반 디렉티브.