@mesgflow/ui-kit 0.6.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (227) hide show
  1. package/README.md +56 -5
  2. package/fesm2022/mesgflow-ui-kit-accordion.mjs +9 -8
  3. package/fesm2022/mesgflow-ui-kit-accordion.mjs.map +1 -1
  4. package/fesm2022/mesgflow-ui-kit-agenda.mjs +208 -0
  5. package/fesm2022/mesgflow-ui-kit-agenda.mjs.map +1 -0
  6. package/fesm2022/mesgflow-ui-kit-alert.mjs +3 -3
  7. package/fesm2022/mesgflow-ui-kit-aspect-ratio.mjs +37 -0
  8. package/fesm2022/mesgflow-ui-kit-aspect-ratio.mjs.map +1 -0
  9. package/fesm2022/mesgflow-ui-kit-avatar-group.mjs +3 -3
  10. package/fesm2022/mesgflow-ui-kit-avatar.mjs +3 -3
  11. package/fesm2022/mesgflow-ui-kit-badge.mjs +3 -3
  12. package/fesm2022/mesgflow-ui-kit-banner.mjs +3 -3
  13. package/fesm2022/mesgflow-ui-kit-blocks.mjs +207 -0
  14. package/fesm2022/mesgflow-ui-kit-blocks.mjs.map +1 -0
  15. package/fesm2022/mesgflow-ui-kit-box-input.mjs +4 -4
  16. package/fesm2022/mesgflow-ui-kit-box-input.mjs.map +1 -1
  17. package/fesm2022/mesgflow-ui-kit-brand.mjs +3 -3
  18. package/fesm2022/mesgflow-ui-kit-breadcrumb.mjs +3 -3
  19. package/fesm2022/mesgflow-ui-kit-button-group.mjs +3 -3
  20. package/fesm2022/mesgflow-ui-kit-button.mjs +190 -244
  21. package/fesm2022/mesgflow-ui-kit-button.mjs.map +1 -1
  22. package/fesm2022/mesgflow-ui-kit-card.mjs +48 -27
  23. package/fesm2022/mesgflow-ui-kit-card.mjs.map +1 -1
  24. package/fesm2022/mesgflow-ui-kit-carousel.mjs +308 -0
  25. package/fesm2022/mesgflow-ui-kit-carousel.mjs.map +1 -0
  26. package/fesm2022/mesgflow-ui-kit-chart.mjs +12 -12
  27. package/fesm2022/mesgflow-ui-kit-checkbox.mjs +18 -23
  28. package/fesm2022/mesgflow-ui-kit-checkbox.mjs.map +1 -1
  29. package/fesm2022/mesgflow-ui-kit-chip.mjs +5 -5
  30. package/fesm2022/mesgflow-ui-kit-chip.mjs.map +1 -1
  31. package/fesm2022/mesgflow-ui-kit-code-block.mjs +11 -7
  32. package/fesm2022/mesgflow-ui-kit-code-block.mjs.map +1 -1
  33. package/fesm2022/mesgflow-ui-kit-collapsible.mjs +9 -9
  34. package/fesm2022/mesgflow-ui-kit-color-picker.mjs +9 -7
  35. package/fesm2022/mesgflow-ui-kit-color-picker.mjs.map +1 -1
  36. package/fesm2022/mesgflow-ui-kit-combobox.mjs +147 -67
  37. package/fesm2022/mesgflow-ui-kit-combobox.mjs.map +1 -1
  38. package/fesm2022/mesgflow-ui-kit-command.mjs +15 -16
  39. package/fesm2022/mesgflow-ui-kit-command.mjs.map +1 -1
  40. package/fesm2022/mesgflow-ui-kit-context-menu.mjs +7 -9
  41. package/fesm2022/mesgflow-ui-kit-context-menu.mjs.map +1 -1
  42. package/fesm2022/mesgflow-ui-kit-copy-button.mjs +6 -6
  43. package/fesm2022/mesgflow-ui-kit-core.mjs +446 -128
  44. package/fesm2022/mesgflow-ui-kit-core.mjs.map +1 -1
  45. package/fesm2022/mesgflow-ui-kit-countdown.mjs +149 -0
  46. package/fesm2022/mesgflow-ui-kit-countdown.mjs.map +1 -0
  47. package/fesm2022/mesgflow-ui-kit-date-picker.mjs +140 -19
  48. package/fesm2022/mesgflow-ui-kit-date-picker.mjs.map +1 -1
  49. package/fesm2022/mesgflow-ui-kit-description-list.mjs +3 -3
  50. package/fesm2022/mesgflow-ui-kit-dialog.mjs +310 -64
  51. package/fesm2022/mesgflow-ui-kit-dialog.mjs.map +1 -1
  52. package/fesm2022/mesgflow-ui-kit-divider.mjs +3 -3
  53. package/fesm2022/mesgflow-ui-kit-drawer.mjs +109 -0
  54. package/fesm2022/mesgflow-ui-kit-drawer.mjs.map +1 -0
  55. package/fesm2022/mesgflow-ui-kit-dropzone.mjs +6 -6
  56. package/fesm2022/mesgflow-ui-kit-dropzone.mjs.map +1 -1
  57. package/fesm2022/mesgflow-ui-kit-empty-state.mjs +3 -3
  58. package/fesm2022/mesgflow-ui-kit-field.mjs +55 -14
  59. package/fesm2022/mesgflow-ui-kit-field.mjs.map +1 -1
  60. package/fesm2022/mesgflow-ui-kit-file-upload.mjs +356 -0
  61. package/fesm2022/mesgflow-ui-kit-file-upload.mjs.map +1 -0
  62. package/fesm2022/mesgflow-ui-kit-hover-card.mjs +6 -6
  63. package/fesm2022/mesgflow-ui-kit-i18n-tr.mjs +135 -0
  64. package/fesm2022/mesgflow-ui-kit-i18n-tr.mjs.map +1 -1
  65. package/fesm2022/mesgflow-ui-kit-icon.mjs +8 -3
  66. package/fesm2022/mesgflow-ui-kit-icon.mjs.map +1 -1
  67. package/fesm2022/mesgflow-ui-kit-icons-lucide.mjs +371 -0
  68. package/fesm2022/mesgflow-ui-kit-icons-lucide.mjs.map +1 -0
  69. package/fesm2022/mesgflow-ui-kit-inline-edit.mjs +279 -0
  70. package/fesm2022/mesgflow-ui-kit-inline-edit.mjs.map +1 -0
  71. package/fesm2022/mesgflow-ui-kit-input.mjs +162 -19
  72. package/fesm2022/mesgflow-ui-kit-input.mjs.map +1 -1
  73. package/fesm2022/mesgflow-ui-kit-kbd.mjs +3 -3
  74. package/fesm2022/mesgflow-ui-kit-lightbox.mjs +299 -0
  75. package/fesm2022/mesgflow-ui-kit-lightbox.mjs.map +1 -0
  76. package/fesm2022/mesgflow-ui-kit-link.mjs +5 -5
  77. package/fesm2022/mesgflow-ui-kit-link.mjs.map +1 -1
  78. package/fesm2022/mesgflow-ui-kit-listbox.mjs +151 -0
  79. package/fesm2022/mesgflow-ui-kit-listbox.mjs.map +1 -0
  80. package/fesm2022/mesgflow-ui-kit-mention.mjs +283 -0
  81. package/fesm2022/mesgflow-ui-kit-mention.mjs.map +1 -0
  82. package/fesm2022/mesgflow-ui-kit-menu.mjs +178 -14
  83. package/fesm2022/mesgflow-ui-kit-menu.mjs.map +1 -1
  84. package/fesm2022/mesgflow-ui-kit-nav-menu.mjs +276 -0
  85. package/fesm2022/mesgflow-ui-kit-nav-menu.mjs.map +1 -0
  86. package/fesm2022/mesgflow-ui-kit-notification-center.mjs +281 -0
  87. package/fesm2022/mesgflow-ui-kit-notification-center.mjs.map +1 -0
  88. package/fesm2022/mesgflow-ui-kit-number-input.mjs +9 -6
  89. package/fesm2022/mesgflow-ui-kit-number-input.mjs.map +1 -1
  90. package/fesm2022/mesgflow-ui-kit-otp-input.mjs +3 -3
  91. package/fesm2022/mesgflow-ui-kit-page-header.mjs +6 -6
  92. package/fesm2022/mesgflow-ui-kit-pagination.mjs +7 -6
  93. package/fesm2022/mesgflow-ui-kit-pagination.mjs.map +1 -1
  94. package/fesm2022/mesgflow-ui-kit-password-input.mjs +38 -68
  95. package/fesm2022/mesgflow-ui-kit-password-input.mjs.map +1 -1
  96. package/fesm2022/mesgflow-ui-kit-popover.mjs +12 -52
  97. package/fesm2022/mesgflow-ui-kit-popover.mjs.map +1 -1
  98. package/fesm2022/mesgflow-ui-kit-progress.mjs +164 -23
  99. package/fesm2022/mesgflow-ui-kit-progress.mjs.map +1 -1
  100. package/fesm2022/mesgflow-ui-kit-qr-code.mjs +766 -0
  101. package/fesm2022/mesgflow-ui-kit-qr-code.mjs.map +1 -0
  102. package/fesm2022/mesgflow-ui-kit-radio.mjs +10 -12
  103. package/fesm2022/mesgflow-ui-kit-radio.mjs.map +1 -1
  104. package/fesm2022/mesgflow-ui-kit-rating.mjs +4 -4
  105. package/fesm2022/mesgflow-ui-kit-rating.mjs.map +1 -1
  106. package/fesm2022/mesgflow-ui-kit-scroll-area.mjs +3 -3
  107. package/fesm2022/mesgflow-ui-kit-search-input.mjs +11 -7
  108. package/fesm2022/mesgflow-ui-kit-search-input.mjs.map +1 -1
  109. package/fesm2022/mesgflow-ui-kit-segmented-control.mjs +15 -11
  110. package/fesm2022/mesgflow-ui-kit-segmented-control.mjs.map +1 -1
  111. package/fesm2022/mesgflow-ui-kit-select.mjs +6 -5
  112. package/fesm2022/mesgflow-ui-kit-select.mjs.map +1 -1
  113. package/fesm2022/mesgflow-ui-kit-sidebar.mjs +24 -21
  114. package/fesm2022/mesgflow-ui-kit-sidebar.mjs.map +1 -1
  115. package/fesm2022/mesgflow-ui-kit-skeleton.mjs +6 -5
  116. package/fesm2022/mesgflow-ui-kit-skeleton.mjs.map +1 -1
  117. package/fesm2022/mesgflow-ui-kit-slider.mjs +253 -6
  118. package/fesm2022/mesgflow-ui-kit-slider.mjs.map +1 -1
  119. package/fesm2022/mesgflow-ui-kit-sortable.mjs +526 -0
  120. package/fesm2022/mesgflow-ui-kit-sortable.mjs.map +1 -0
  121. package/fesm2022/mesgflow-ui-kit-spinner.mjs +44 -15
  122. package/fesm2022/mesgflow-ui-kit-spinner.mjs.map +1 -1
  123. package/fesm2022/mesgflow-ui-kit-split-button.mjs +205 -0
  124. package/fesm2022/mesgflow-ui-kit-split-button.mjs.map +1 -0
  125. package/fesm2022/mesgflow-ui-kit-splitter.mjs +213 -6
  126. package/fesm2022/mesgflow-ui-kit-splitter.mjs.map +1 -1
  127. package/fesm2022/mesgflow-ui-kit-stat-tile.mjs +13 -6
  128. package/fesm2022/mesgflow-ui-kit-stat-tile.mjs.map +1 -1
  129. package/fesm2022/mesgflow-ui-kit-stepper.mjs +171 -64
  130. package/fesm2022/mesgflow-ui-kit-stepper.mjs.map +1 -1
  131. package/fesm2022/mesgflow-ui-kit-switch.mjs +4 -4
  132. package/fesm2022/mesgflow-ui-kit-switch.mjs.map +1 -1
  133. package/fesm2022/mesgflow-ui-kit-table.mjs +34 -28
  134. package/fesm2022/mesgflow-ui-kit-table.mjs.map +1 -1
  135. package/fesm2022/mesgflow-ui-kit-tabs.mjs +421 -180
  136. package/fesm2022/mesgflow-ui-kit-tabs.mjs.map +1 -1
  137. package/fesm2022/mesgflow-ui-kit-tag-input.mjs +9 -4
  138. package/fesm2022/mesgflow-ui-kit-tag-input.mjs.map +1 -1
  139. package/fesm2022/mesgflow-ui-kit-theme-switcher.mjs +3 -3
  140. package/fesm2022/mesgflow-ui-kit-theming.mjs +7 -7
  141. package/fesm2022/mesgflow-ui-kit-theming.mjs.map +1 -1
  142. package/fesm2022/mesgflow-ui-kit-time-picker.mjs +6 -6
  143. package/fesm2022/mesgflow-ui-kit-time-picker.mjs.map +1 -1
  144. package/fesm2022/mesgflow-ui-kit-timeline.mjs +3 -3
  145. package/fesm2022/mesgflow-ui-kit-toast.mjs +118 -35
  146. package/fesm2022/mesgflow-ui-kit-toast.mjs.map +1 -1
  147. package/fesm2022/mesgflow-ui-kit-toggle.mjs +12 -11
  148. package/fesm2022/mesgflow-ui-kit-toggle.mjs.map +1 -1
  149. package/fesm2022/mesgflow-ui-kit-toolbar.mjs +13 -11
  150. package/fesm2022/mesgflow-ui-kit-toolbar.mjs.map +1 -1
  151. package/fesm2022/mesgflow-ui-kit-tooltip.mjs +76 -53
  152. package/fesm2022/mesgflow-ui-kit-tooltip.mjs.map +1 -1
  153. package/fesm2022/mesgflow-ui-kit-tour.mjs +17 -29
  154. package/fesm2022/mesgflow-ui-kit-tour.mjs.map +1 -1
  155. package/fesm2022/mesgflow-ui-kit-transfer-list.mjs +288 -0
  156. package/fesm2022/mesgflow-ui-kit-transfer-list.mjs.map +1 -0
  157. package/fesm2022/mesgflow-ui-kit-tree-select.mjs +3 -3
  158. package/fesm2022/mesgflow-ui-kit-tree.mjs +4 -4
  159. package/fesm2022/mesgflow-ui-kit-tree.mjs.map +1 -1
  160. package/fesm2022/mesgflow-ui-kit-virtual-list.mjs +109 -0
  161. package/fesm2022/mesgflow-ui-kit-virtual-list.mjs.map +1 -0
  162. package/fesm2022/mesgflow-ui-kit.mjs +93 -12836
  163. package/fesm2022/mesgflow-ui-kit.mjs.map +1 -1
  164. package/package.json +91 -3
  165. package/schematics/collection.json +10 -0
  166. package/schematics/migration.json +10 -0
  167. package/schematics/migrations/v0-7.cjs +70 -0
  168. package/schematics/ng-add/index.cjs +234 -0
  169. package/schematics/ng-add/schema.json +43 -0
  170. package/tokens/color.css +96 -0
  171. package/tokens/controls.css +145 -0
  172. package/tokens/elevation.css +62 -6
  173. package/tokens/motion.css +304 -66
  174. package/tokens/radius.css +14 -0
  175. package/tokens.css +1 -0
  176. package/tokens.json +1583 -0
  177. package/types/mesgflow-ui-kit-agenda.d.ts +49 -0
  178. package/types/mesgflow-ui-kit-aspect-ratio.d.ts +18 -0
  179. package/types/mesgflow-ui-kit-blocks.d.ts +128 -0
  180. package/types/mesgflow-ui-kit-button.d.ts +23 -38
  181. package/types/mesgflow-ui-kit-card.d.ts +26 -16
  182. package/types/mesgflow-ui-kit-carousel.d.ts +51 -0
  183. package/types/mesgflow-ui-kit-checkbox.d.ts +8 -5
  184. package/types/mesgflow-ui-kit-code-block.d.ts +4 -1
  185. package/types/mesgflow-ui-kit-combobox.d.ts +47 -22
  186. package/types/mesgflow-ui-kit-command.d.ts +2 -2
  187. package/types/mesgflow-ui-kit-core.d.ts +279 -21
  188. package/types/mesgflow-ui-kit-countdown.d.ts +47 -0
  189. package/types/mesgflow-ui-kit-date-picker.d.ts +31 -1
  190. package/types/mesgflow-ui-kit-dialog.d.ts +122 -14
  191. package/types/mesgflow-ui-kit-drawer.d.ts +45 -0
  192. package/types/mesgflow-ui-kit-field.d.ts +17 -8
  193. package/types/mesgflow-ui-kit-file-upload.d.ts +64 -0
  194. package/types/mesgflow-ui-kit-hover-card.d.ts +2 -2
  195. package/types/mesgflow-ui-kit-icons-lucide.d.ts +27 -0
  196. package/types/mesgflow-ui-kit-inline-edit.d.ts +42 -0
  197. package/types/mesgflow-ui-kit-input.d.ts +64 -2
  198. package/types/mesgflow-ui-kit-lightbox.d.ts +54 -0
  199. package/types/mesgflow-ui-kit-listbox.d.ts +30 -0
  200. package/types/mesgflow-ui-kit-mention.d.ts +59 -0
  201. package/types/mesgflow-ui-kit-menu.d.ts +41 -2
  202. package/types/mesgflow-ui-kit-nav-menu.d.ts +58 -0
  203. package/types/mesgflow-ui-kit-notification-center.d.ts +41 -0
  204. package/types/mesgflow-ui-kit-number-input.d.ts +3 -1
  205. package/types/mesgflow-ui-kit-password-input.d.ts +35 -5
  206. package/types/mesgflow-ui-kit-popover.d.ts +13 -5
  207. package/types/mesgflow-ui-kit-progress.d.ts +33 -12
  208. package/types/mesgflow-ui-kit-qr-code.d.ts +160 -0
  209. package/types/mesgflow-ui-kit-radio.d.ts +2 -2
  210. package/types/mesgflow-ui-kit-search-input.d.ts +3 -1
  211. package/types/mesgflow-ui-kit-segmented-control.d.ts +4 -0
  212. package/types/mesgflow-ui-kit-sidebar.d.ts +1 -1
  213. package/types/mesgflow-ui-kit-slider.d.ts +60 -1
  214. package/types/mesgflow-ui-kit-sortable.d.ts +103 -0
  215. package/types/mesgflow-ui-kit-spinner.d.ts +5 -8
  216. package/types/mesgflow-ui-kit-split-button.d.ts +47 -0
  217. package/types/mesgflow-ui-kit-splitter.d.ts +64 -1
  218. package/types/mesgflow-ui-kit-stat-tile.d.ts +3 -0
  219. package/types/mesgflow-ui-kit-stepper.d.ts +54 -32
  220. package/types/mesgflow-ui-kit-table.d.ts +2 -0
  221. package/types/mesgflow-ui-kit-tabs.d.ts +193 -93
  222. package/types/mesgflow-ui-kit-tag-input.d.ts +3 -1
  223. package/types/mesgflow-ui-kit-toast.d.ts +48 -22
  224. package/types/mesgflow-ui-kit-tooltip.d.ts +15 -12
  225. package/types/mesgflow-ui-kit-transfer-list.d.ts +34 -0
  226. package/types/mesgflow-ui-kit-virtual-list.d.ts +35 -0
  227. package/types/mesgflow-ui-kit.d.ts +88 -5444
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mesgflow/ui-kit",
3
- "version": "0.6.0",
3
+ "version": "0.8.0",
4
4
  "description": "Independent Angular component kit (button, select, dialog, table, sidebar, and more) built on a Tailwind v4 design token system. See README.md for setup and prerequisites.",
5
5
  "license": "MIT",
6
6
  "author": "Hurdeniz YENER",
@@ -52,9 +52,18 @@
52
52
  "tslib": "^2.3.0"
53
53
  },
54
54
  "sideEffects": false,
55
+ "schematics": "./schematics/collection.json",
56
+ "ng-add": {
57
+ "save": "dependencies"
58
+ },
59
+ "ng-update": {
60
+ "migrations": "./schematics/migration.json",
61
+ "packageGroup": [
62
+ "@mesgflow/ui-kit"
63
+ ]
64
+ },
55
65
  "publishConfig": {
56
- "access": "public",
57
- "provenance": true
66
+ "access": "public"
58
67
  },
59
68
  "engines": {
60
69
  "node": ">=22"
@@ -72,6 +81,9 @@
72
81
  "style": "./tokens/*",
73
82
  "default": "./tokens/*"
74
83
  },
84
+ "./tokens.json": {
85
+ "default": "./tokens.json"
86
+ },
75
87
  "./package.json": {
76
88
  "default": "./package.json"
77
89
  },
@@ -83,10 +95,18 @@
83
95
  "types": "./types/mesgflow-ui-kit-accordion.d.ts",
84
96
  "default": "./fesm2022/mesgflow-ui-kit-accordion.mjs"
85
97
  },
98
+ "./agenda": {
99
+ "types": "./types/mesgflow-ui-kit-agenda.d.ts",
100
+ "default": "./fesm2022/mesgflow-ui-kit-agenda.mjs"
101
+ },
86
102
  "./alert": {
87
103
  "types": "./types/mesgflow-ui-kit-alert.d.ts",
88
104
  "default": "./fesm2022/mesgflow-ui-kit-alert.mjs"
89
105
  },
106
+ "./aspect-ratio": {
107
+ "types": "./types/mesgflow-ui-kit-aspect-ratio.d.ts",
108
+ "default": "./fesm2022/mesgflow-ui-kit-aspect-ratio.mjs"
109
+ },
90
110
  "./avatar": {
91
111
  "types": "./types/mesgflow-ui-kit-avatar.d.ts",
92
112
  "default": "./fesm2022/mesgflow-ui-kit-avatar.mjs"
@@ -103,6 +123,10 @@
103
123
  "types": "./types/mesgflow-ui-kit-banner.d.ts",
104
124
  "default": "./fesm2022/mesgflow-ui-kit-banner.mjs"
105
125
  },
126
+ "./blocks": {
127
+ "types": "./types/mesgflow-ui-kit-blocks.d.ts",
128
+ "default": "./fesm2022/mesgflow-ui-kit-blocks.mjs"
129
+ },
106
130
  "./box-input": {
107
131
  "types": "./types/mesgflow-ui-kit-box-input.d.ts",
108
132
  "default": "./fesm2022/mesgflow-ui-kit-box-input.mjs"
@@ -127,6 +151,10 @@
127
151
  "types": "./types/mesgflow-ui-kit-card.d.ts",
128
152
  "default": "./fesm2022/mesgflow-ui-kit-card.mjs"
129
153
  },
154
+ "./carousel": {
155
+ "types": "./types/mesgflow-ui-kit-carousel.d.ts",
156
+ "default": "./fesm2022/mesgflow-ui-kit-carousel.mjs"
157
+ },
130
158
  "./chart": {
131
159
  "types": "./types/mesgflow-ui-kit-chart.d.ts",
132
160
  "default": "./fesm2022/mesgflow-ui-kit-chart.mjs"
@@ -171,6 +199,10 @@
171
199
  "types": "./types/mesgflow-ui-kit-core.d.ts",
172
200
  "default": "./fesm2022/mesgflow-ui-kit-core.mjs"
173
201
  },
202
+ "./countdown": {
203
+ "types": "./types/mesgflow-ui-kit-countdown.d.ts",
204
+ "default": "./fesm2022/mesgflow-ui-kit-countdown.mjs"
205
+ },
174
206
  "./date-picker": {
175
207
  "types": "./types/mesgflow-ui-kit-date-picker.d.ts",
176
208
  "default": "./fesm2022/mesgflow-ui-kit-date-picker.mjs"
@@ -187,6 +219,10 @@
187
219
  "types": "./types/mesgflow-ui-kit-divider.d.ts",
188
220
  "default": "./fesm2022/mesgflow-ui-kit-divider.mjs"
189
221
  },
222
+ "./drawer": {
223
+ "types": "./types/mesgflow-ui-kit-drawer.d.ts",
224
+ "default": "./fesm2022/mesgflow-ui-kit-drawer.mjs"
225
+ },
190
226
  "./dropzone": {
191
227
  "types": "./types/mesgflow-ui-kit-dropzone.d.ts",
192
228
  "default": "./fesm2022/mesgflow-ui-kit-dropzone.mjs"
@@ -199,6 +235,10 @@
199
235
  "types": "./types/mesgflow-ui-kit-field.d.ts",
200
236
  "default": "./fesm2022/mesgflow-ui-kit-field.mjs"
201
237
  },
238
+ "./file-upload": {
239
+ "types": "./types/mesgflow-ui-kit-file-upload.d.ts",
240
+ "default": "./fesm2022/mesgflow-ui-kit-file-upload.mjs"
241
+ },
202
242
  "./hover-card": {
203
243
  "types": "./types/mesgflow-ui-kit-hover-card.d.ts",
204
244
  "default": "./fesm2022/mesgflow-ui-kit-hover-card.mjs"
@@ -211,6 +251,14 @@
211
251
  "types": "./types/mesgflow-ui-kit-icon.d.ts",
212
252
  "default": "./fesm2022/mesgflow-ui-kit-icon.mjs"
213
253
  },
254
+ "./icons-lucide": {
255
+ "types": "./types/mesgflow-ui-kit-icons-lucide.d.ts",
256
+ "default": "./fesm2022/mesgflow-ui-kit-icons-lucide.mjs"
257
+ },
258
+ "./inline-edit": {
259
+ "types": "./types/mesgflow-ui-kit-inline-edit.d.ts",
260
+ "default": "./fesm2022/mesgflow-ui-kit-inline-edit.mjs"
261
+ },
214
262
  "./input": {
215
263
  "types": "./types/mesgflow-ui-kit-input.d.ts",
216
264
  "default": "./fesm2022/mesgflow-ui-kit-input.mjs"
@@ -219,14 +267,34 @@
219
267
  "types": "./types/mesgflow-ui-kit-kbd.d.ts",
220
268
  "default": "./fesm2022/mesgflow-ui-kit-kbd.mjs"
221
269
  },
270
+ "./lightbox": {
271
+ "types": "./types/mesgflow-ui-kit-lightbox.d.ts",
272
+ "default": "./fesm2022/mesgflow-ui-kit-lightbox.mjs"
273
+ },
222
274
  "./link": {
223
275
  "types": "./types/mesgflow-ui-kit-link.d.ts",
224
276
  "default": "./fesm2022/mesgflow-ui-kit-link.mjs"
225
277
  },
278
+ "./listbox": {
279
+ "types": "./types/mesgflow-ui-kit-listbox.d.ts",
280
+ "default": "./fesm2022/mesgflow-ui-kit-listbox.mjs"
281
+ },
282
+ "./mention": {
283
+ "types": "./types/mesgflow-ui-kit-mention.d.ts",
284
+ "default": "./fesm2022/mesgflow-ui-kit-mention.mjs"
285
+ },
226
286
  "./menu": {
227
287
  "types": "./types/mesgflow-ui-kit-menu.d.ts",
228
288
  "default": "./fesm2022/mesgflow-ui-kit-menu.mjs"
229
289
  },
290
+ "./nav-menu": {
291
+ "types": "./types/mesgflow-ui-kit-nav-menu.d.ts",
292
+ "default": "./fesm2022/mesgflow-ui-kit-nav-menu.mjs"
293
+ },
294
+ "./notification-center": {
295
+ "types": "./types/mesgflow-ui-kit-notification-center.d.ts",
296
+ "default": "./fesm2022/mesgflow-ui-kit-notification-center.mjs"
297
+ },
230
298
  "./number-input": {
231
299
  "types": "./types/mesgflow-ui-kit-number-input.d.ts",
232
300
  "default": "./fesm2022/mesgflow-ui-kit-number-input.mjs"
@@ -255,6 +323,10 @@
255
323
  "types": "./types/mesgflow-ui-kit-progress.d.ts",
256
324
  "default": "./fesm2022/mesgflow-ui-kit-progress.mjs"
257
325
  },
326
+ "./qr-code": {
327
+ "types": "./types/mesgflow-ui-kit-qr-code.d.ts",
328
+ "default": "./fesm2022/mesgflow-ui-kit-qr-code.mjs"
329
+ },
258
330
  "./radio": {
259
331
  "types": "./types/mesgflow-ui-kit-radio.d.ts",
260
332
  "default": "./fesm2022/mesgflow-ui-kit-radio.mjs"
@@ -291,10 +363,18 @@
291
363
  "types": "./types/mesgflow-ui-kit-slider.d.ts",
292
364
  "default": "./fesm2022/mesgflow-ui-kit-slider.mjs"
293
365
  },
366
+ "./sortable": {
367
+ "types": "./types/mesgflow-ui-kit-sortable.d.ts",
368
+ "default": "./fesm2022/mesgflow-ui-kit-sortable.mjs"
369
+ },
294
370
  "./spinner": {
295
371
  "types": "./types/mesgflow-ui-kit-spinner.d.ts",
296
372
  "default": "./fesm2022/mesgflow-ui-kit-spinner.mjs"
297
373
  },
374
+ "./split-button": {
375
+ "types": "./types/mesgflow-ui-kit-split-button.d.ts",
376
+ "default": "./fesm2022/mesgflow-ui-kit-split-button.mjs"
377
+ },
298
378
  "./splitter": {
299
379
  "types": "./types/mesgflow-ui-kit-splitter.d.ts",
300
380
  "default": "./fesm2022/mesgflow-ui-kit-splitter.mjs"
@@ -359,6 +439,10 @@
359
439
  "types": "./types/mesgflow-ui-kit-tour.d.ts",
360
440
  "default": "./fesm2022/mesgflow-ui-kit-tour.mjs"
361
441
  },
442
+ "./transfer-list": {
443
+ "types": "./types/mesgflow-ui-kit-transfer-list.d.ts",
444
+ "default": "./fesm2022/mesgflow-ui-kit-transfer-list.mjs"
445
+ },
362
446
  "./tree": {
363
447
  "types": "./types/mesgflow-ui-kit-tree.d.ts",
364
448
  "default": "./fesm2022/mesgflow-ui-kit-tree.mjs"
@@ -366,6 +450,10 @@
366
450
  "./tree-select": {
367
451
  "types": "./types/mesgflow-ui-kit-tree-select.d.ts",
368
452
  "default": "./fesm2022/mesgflow-ui-kit-tree-select.mjs"
453
+ },
454
+ "./virtual-list": {
455
+ "types": "./types/mesgflow-ui-kit-virtual-list.d.ts",
456
+ "default": "./fesm2022/mesgflow-ui-kit-virtual-list.mjs"
369
457
  }
370
458
  },
371
459
  "module": "fesm2022/mesgflow-ui-kit.mjs",
@@ -0,0 +1,10 @@
1
+ {
2
+ "$schema": "../../../node_modules/@angular-devkit/schematics/collection-schema.json",
3
+ "schematics": {
4
+ "ng-add": {
5
+ "description": "Adds @mesgflow/ui-kit to an Angular project: peer dependencies, Tailwind v4 + preset, provideMesgflowUi() and the flash-free dark mode script.",
6
+ "factory": "./ng-add/index.cjs#ngAdd",
7
+ "schema": "./ng-add/schema.json"
8
+ }
9
+ }
10
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "$schema": "../../../node_modules/@angular-devkit/schematics/collection-schema.json",
3
+ "schematics": {
4
+ "migration-v0-7": {
5
+ "version": "0.7.0",
6
+ "description": "Rewrites the old @mesgflow/ui package name and pre-0.7 input names/classes to their current form.",
7
+ "factory": "./migrations/v0-7.cjs#migrateV07"
8
+ }
9
+ }
10
+ }
@@ -0,0 +1,70 @@
1
+ // `ng update @mesgflow/ui-kit` → 0.7.0 göçü.
2
+ //
3
+ // Allowlist tabanlı, yalnızca kitin KENDİ eski adlarını hedefler (tüketicinin
4
+ // kendi `severity` prop'u ya da `app-*` bileşenleri gibi ilgisiz metinlere
5
+ // dokunmaz — bkz. scripts/codemod-prefix.mjs'teki aynı doktrin):
6
+ //
7
+ // - Eski paket adı: `'@mesgflow/ui'` / `'@mesgflow/ui/<entry>'` import'ları
8
+ // → `'@mesgflow/ui-kit'` (0.6.0'da yeniden adlandırıldı).
9
+ // - Button `severity="…"` / `[severity]` → `tone` (0.2.0'da taşındı).
10
+ // - Onay dialoğu `tone: 'question'` → `'neutral'`.
11
+ // - Tonal dolgu için eski düz rampa çiftleri → tint rol token'ları;
12
+ // `text-fg-on-success|warning` → `text-success|warning-fill-fg`.
13
+ // - `hover:bg-surface-alt` → `hover:bg-state-hover` (renkli/cam yüzeylerde
14
+ // doğru görünen durum katmanı; kitin kendisi 0.7.0'da aynı geçişi yaptı).
15
+
16
+ 'use strict';
17
+
18
+ const RULES = [
19
+ {
20
+ pattern: /(['"])@mesgflow\/ui(\/[\w-]+)?\1/g,
21
+ replacement: (_m, q, sub) => `${q}@mesgflow/ui-kit${sub ?? ''}${q}`,
22
+ },
23
+ { pattern: /\bseverity="/g, replacement: 'tone="' },
24
+ { pattern: /\[severity\]="/g, replacement: '[tone]="' },
25
+ { pattern: /\btone="question"/g, replacement: 'tone="neutral"' },
26
+ { pattern: /\btone:\s*'question'/g, replacement: "tone: 'neutral'" },
27
+ { pattern: /\btone:\s*"question"/g, replacement: 'tone: "neutral"' },
28
+ { pattern: /\btext-fg-on-success\b/g, replacement: 'text-success-fill-fg' },
29
+ { pattern: /\btext-fg-on-warning\b/g, replacement: 'text-warning-fill-fg' },
30
+ {
31
+ pattern:
32
+ /\bbg-(primary|success|warning|danger|info)-50 text-\1-700 dark:bg-\1-900 dark:text-\1-300\b/g,
33
+ replacement: 'bg-$1-tint text-$1-tint-fg',
34
+ },
35
+ {
36
+ pattern: /\bbg-(primary|success|warning|danger|info)-50 dark:bg-\1-900\b/g,
37
+ replacement: 'bg-$1-tint',
38
+ },
39
+ { pattern: /\bhover:bg-surface-alt\b/g, replacement: 'hover:bg-state-hover' },
40
+ ];
41
+
42
+ const EXTENSIONS = /\.(ts|html|css|scss)$/;
43
+ const SKIP = /(^|\/)(node_modules|dist|\.angular|out-tsc|coverage)\//;
44
+
45
+ /** Saf dönüşüm — test edilebilir olsun diye ayrı. */
46
+ function migrateSource(source) {
47
+ let next = source;
48
+ for (const rule of RULES) next = next.replace(rule.pattern, rule.replacement);
49
+ return next;
50
+ }
51
+
52
+ function migrateV07() {
53
+ return (tree, context) => {
54
+ let changed = 0;
55
+ tree.visit((path) => {
56
+ if (!EXTENSIONS.test(path) || SKIP.test(path)) return;
57
+ const buffer = tree.read(path);
58
+ if (!buffer) return;
59
+ const source = buffer.toString('utf-8');
60
+ const next = migrateSource(source);
61
+ if (next !== source) {
62
+ tree.overwrite(path, next);
63
+ changed++;
64
+ }
65
+ });
66
+ context.logger.info(`@mesgflow/ui-kit 0.7.0 migration: updated ${changed} file(s).`);
67
+ };
68
+ }
69
+
70
+ module.exports = { migrateV07, migrateSource };
@@ -0,0 +1,234 @@
1
+ // `ng add @mesgflow/ui-kit` — bir Angular uygulamasını kite hazırlar:
2
+ //
3
+ // 1. Eksik peer bağımlılıkları (sürümler paketin kendi package.json'undan)
4
+ // + Tailwind v4/PostCSS + isteğe bağlı font yığını package.json'a eklenir.
5
+ // 2. Global stil dosyasına `@import 'tailwindcss';` (yoksa) ve
6
+ // `@import '@mesgflow/ui-kit/preset.css';` (+ fontlar) eklenir;
7
+ // `.postcssrc.json` yoksa oluşturulur.
8
+ // 3. `app.config.ts` providers'ına `provideMesgflowUi()` (Türkçe seçildiyse
9
+ // `mfLabelsTr` + date-fns `tr` yereliyle) eklenir.
10
+ // 4. `index.html` <head>'ine koyu mod flaşını önleyen satır içi betik
11
+ // (`colorModeInitScript()` çıktısının aynısı) eklenir.
12
+ //
13
+ // Her adım idempotent: ikinci kez çalıştırmak hiçbir şeyi çoğaltmaz.
14
+ // Düz CommonJS — derleme adımı gerekmez, ng-packagr olduğu gibi kopyalar.
15
+
16
+ 'use strict';
17
+
18
+ const { chain, SchematicsException } = require('@angular-devkit/schematics');
19
+ const { NodePackageInstallTask } = require('@angular-devkit/schematics/tasks');
20
+
21
+ const KIT_PACKAGE = '@mesgflow/ui-kit';
22
+ const FONT_PACKAGES = [
23
+ '@fontsource-variable/inter',
24
+ '@fontsource-variable/space-grotesk',
25
+ '@fontsource-variable/jetbrains-mono',
26
+ ];
27
+ const TAILWIND_PACKAGES = {
28
+ tailwindcss: '^4.1.12',
29
+ '@tailwindcss/postcss': '^4.1.12',
30
+ postcss: '^8.5.3',
31
+ };
32
+ /** `theming/color-mode.ts` `colorModeInitScript()` varsayılanlarıyla AYNI çıktı. */
33
+ const DARK_MODE_SCRIPT =
34
+ '(function(){try{var m=localStorage.getItem("mf-color-mode")||"system";' +
35
+ "var d=m==='dark'||(m==='system'&&matchMedia('(prefers-color-scheme: dark)').matches);" +
36
+ "var r=document.documentElement;r.classList.toggle('dark',d);r.style.colorScheme=d?'dark':'light';}catch(e){}})();";
37
+
38
+ function kitManifest() {
39
+ try {
40
+ return require('../../package.json');
41
+ } catch {
42
+ return { version: 'latest', peerDependencies: {} };
43
+ }
44
+ }
45
+
46
+ function readJson(tree, path) {
47
+ const buffer = tree.read(path);
48
+ if (!buffer) throw new SchematicsException(`${path} not found.`);
49
+ return JSON.parse(buffer.toString('utf-8'));
50
+ }
51
+
52
+ function writeJson(tree, path, value) {
53
+ tree.overwrite(path, JSON.stringify(value, null, 2) + '\n');
54
+ }
55
+
56
+ function resolveProject(tree, name) {
57
+ const workspace = readJson(tree, 'angular.json');
58
+ const projects = workspace.projects || {};
59
+ const projectName =
60
+ name && projects[name]
61
+ ? name
62
+ : Object.keys(projects).find((key) => projects[key].projectType === 'application');
63
+ if (!projectName) throw new SchematicsException('No application project found in angular.json.');
64
+ const project = projects[projectName];
65
+ const root = project.root ? `${project.root.replace(/\/$/, '')}/` : '';
66
+ const sourceRoot = project.sourceRoot || `${root}src`;
67
+ const buildOptions = (project.architect || project.targets || {}).build?.options || {};
68
+ return { projectName, root, sourceRoot, buildOptions };
69
+ }
70
+
71
+ function addDependencies(options) {
72
+ return (tree, context) => {
73
+ const pkg = readJson(tree, 'package.json');
74
+ pkg.dependencies = pkg.dependencies || {};
75
+ const all = { ...(pkg.dependencies || {}), ...(pkg.devDependencies || {}) };
76
+ const manifest = kitManifest();
77
+ const wanted = { [KIT_PACKAGE]: `^${manifest.version}` };
78
+ for (const [name, range] of Object.entries(manifest.peerDependencies || {})) {
79
+ if (FONT_PACKAGES.includes(name) && !options.fonts) continue;
80
+ wanted[name] = range;
81
+ }
82
+ Object.assign(wanted, TAILWIND_PACKAGES);
83
+ let added = 0;
84
+ for (const [name, range] of Object.entries(wanted)) {
85
+ if (all[name]) continue;
86
+ pkg.dependencies[name] = range;
87
+ added++;
88
+ }
89
+ pkg.dependencies = Object.fromEntries(
90
+ Object.entries(pkg.dependencies).sort(([a], [b]) => a.localeCompare(b)),
91
+ );
92
+ writeJson(tree, 'package.json', pkg);
93
+ if (added && !options.skipInstall) context.addTask(new NodePackageInstallTask());
94
+ context.logger.info(`✔ package.json: added ${added} dependencies.`);
95
+ };
96
+ }
97
+
98
+ function stylesFile(tree, project) {
99
+ const styles = project.buildOptions.styles || [];
100
+ const first = styles
101
+ .map((s) => (typeof s === 'string' ? s : s.input))
102
+ .find((s) => /\.css$/.test(s));
103
+ if (first) return first;
104
+ const guess = `${project.sourceRoot}/styles.css`;
105
+ return tree.exists(guess) ? guess : null;
106
+ }
107
+
108
+ function addStyles(options, projectRef) {
109
+ return (tree, context) => {
110
+ const project = projectRef();
111
+ const path = stylesFile(tree, project);
112
+ if (!path) {
113
+ context.logger.warn(
114
+ "⚠ No global .css stylesheet found — add `@import '@mesgflow/ui-kit/preset.css';` yourself (Tailwind v4 needs a CSS entry, not Sass).",
115
+ );
116
+ return;
117
+ }
118
+ const source = tree.exists(path) ? tree.read(path).toString('utf-8') : '';
119
+ if (source.includes('@mesgflow/ui-kit/preset.css')) {
120
+ context.logger.info(`✔ ${path}: preset already imported.`);
121
+ return;
122
+ }
123
+ const lines = source.split('\n');
124
+ const kitLines = ["@import '@mesgflow/ui-kit/preset.css';"];
125
+ if (options.fonts) kitLines.push(...FONT_PACKAGES.map((p) => `@import '${p}';`));
126
+ const lastTailwind = lines.reduce(
127
+ (last, line, index) => (/^@import\s+['"]tailwindcss/.test(line.trim()) ? index : last),
128
+ -1,
129
+ );
130
+ if (lastTailwind >= 0) lines.splice(lastTailwind + 1, 0, ...kitLines);
131
+ else lines.unshift("@import 'tailwindcss';", ...kitLines, '');
132
+ tree.exists(path)
133
+ ? tree.overwrite(path, lines.join('\n'))
134
+ : tree.create(path, lines.join('\n'));
135
+ context.logger.info(`✔ ${path}: imported Tailwind + the kit preset.`);
136
+
137
+ if (
138
+ !tree.exists('.postcssrc.json') &&
139
+ !tree.exists('postcss.config.js') &&
140
+ !tree.exists('postcss.config.mjs')
141
+ ) {
142
+ writeJsonNew(tree, '.postcssrc.json', { plugins: { '@tailwindcss/postcss': {} } });
143
+ context.logger.info('✔ Created .postcssrc.json (@tailwindcss/postcss).');
144
+ }
145
+ };
146
+ }
147
+
148
+ function writeJsonNew(tree, path, value) {
149
+ tree.create(path, JSON.stringify(value, null, 2) + '\n');
150
+ }
151
+
152
+ function addProvider(options, projectRef) {
153
+ return (tree, context) => {
154
+ const project = projectRef();
155
+ const path = `${project.sourceRoot}/app/app.config.ts`;
156
+ if (!tree.exists(path)) {
157
+ context.logger.warn(
158
+ `⚠ ${path} not found — add \`provideMesgflowUi()\` to your providers (import from '${KIT_PACKAGE}').`,
159
+ );
160
+ return;
161
+ }
162
+ let source = tree.read(path).toString('utf-8');
163
+ if (source.includes('provideMesgflowUi')) {
164
+ context.logger.info(`✔ ${path}: provideMesgflowUi already present.`);
165
+ return;
166
+ }
167
+ const providersAt = source.search(/providers\s*:\s*\[/);
168
+ if (providersAt < 0) {
169
+ context.logger.warn(
170
+ `⚠ ${path}: no providers array found — add provideMesgflowUi() manually.`,
171
+ );
172
+ return;
173
+ }
174
+ const call =
175
+ options.locale === 'tr'
176
+ ? 'provideMesgflowUi({ labels: mfLabelsTr, dateLocale: tr })'
177
+ : 'provideMesgflowUi()';
178
+ const bracket = source.indexOf('[', providersAt) + 1;
179
+ source = `${source.slice(0, bracket)}\n ${call},${source.slice(bracket)}`;
180
+ const imports = [`import { provideMesgflowUi } from '${KIT_PACKAGE}';`];
181
+ if (options.locale === 'tr') {
182
+ imports.push(`import { mfLabelsTr } from '${KIT_PACKAGE}/i18n/tr';`);
183
+ imports.push(`import { tr } from 'date-fns/locale';`);
184
+ }
185
+ const lastImport = [...source.matchAll(/^import[\s\S]*?;\s*$/gm)].pop();
186
+ const insertAt = lastImport ? lastImport.index + lastImport[0].length : 0;
187
+ source = `${source.slice(0, insertAt)}\n${imports.join('\n')}${source.slice(insertAt)}`;
188
+ tree.overwrite(path, source);
189
+ context.logger.info(`✔ ${path}: added ${call}.`);
190
+ };
191
+ }
192
+
193
+ function addDarkModeScript(options, projectRef) {
194
+ return (tree, context) => {
195
+ if (!options.darkModeScript) return;
196
+ const project = projectRef();
197
+ const index = project.buildOptions.index;
198
+ const path =
199
+ (typeof index === 'string' ? index : index?.input) || `${project.sourceRoot}/index.html`;
200
+ if (!tree.exists(path)) {
201
+ context.logger.warn(`⚠ ${path} not found — dark mode script not added.`);
202
+ return;
203
+ }
204
+ const html = tree.read(path).toString('utf-8');
205
+ if (html.includes('mf-color-mode')) return;
206
+ if (!html.includes('</head>')) return;
207
+ tree.overwrite(
208
+ path,
209
+ html.replace('</head>', ` <script>${DARK_MODE_SCRIPT}</script>\n </head>`),
210
+ );
211
+ context.logger.info(`✔ ${path}: added the dark mode boot script (same key as MfColorMode).`);
212
+ };
213
+ }
214
+
215
+ function ngAdd(options) {
216
+ let cached = null;
217
+ const projectRef = () => cached;
218
+ return chain([
219
+ (tree) => {
220
+ cached = resolveProject(tree, options.project);
221
+ },
222
+ addDependencies(options),
223
+ addStyles(options, projectRef),
224
+ addProvider(options, projectRef),
225
+ addDarkModeScript(options, projectRef),
226
+ (_tree, context) => {
227
+ context.logger.info(
228
+ `\n@mesgflow/ui-kit is ready. Try: import { Button } from '${KIT_PACKAGE}/button'; → <button mfButton>Save</button>`,
229
+ );
230
+ },
231
+ ]);
232
+ }
233
+
234
+ module.exports = { ngAdd, DARK_MODE_SCRIPT };
@@ -0,0 +1,43 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema",
3
+ "$id": "MesgflowUiKitNgAdd",
4
+ "title": "@mesgflow/ui-kit ng-add",
5
+ "type": "object",
6
+ "properties": {
7
+ "project": {
8
+ "type": "string",
9
+ "description": "The application project to set up (defaults to the first application).",
10
+ "$default": { "$source": "projectName" }
11
+ },
12
+ "locale": {
13
+ "type": "string",
14
+ "enum": ["en", "tr"],
15
+ "default": "en",
16
+ "description": "Language of the kit's built-in texts.",
17
+ "x-prompt": {
18
+ "message": "Which language should the kit's built-in texts use?",
19
+ "type": "list",
20
+ "items": [
21
+ { "value": "en", "label": "English" },
22
+ { "value": "tr", "label": "Türkçe" }
23
+ ]
24
+ }
25
+ },
26
+ "fonts": {
27
+ "type": "boolean",
28
+ "default": true,
29
+ "description": "Install and import the kit's font stack (Inter, Space Grotesk, JetBrains Mono).",
30
+ "x-prompt": "Use the kit's font stack (Inter, Space Grotesk, JetBrains Mono)?"
31
+ },
32
+ "darkModeScript": {
33
+ "type": "boolean",
34
+ "default": true,
35
+ "description": "Add the inline script that applies dark mode before Angular boots (no white flash)."
36
+ },
37
+ "skipInstall": {
38
+ "type": "boolean",
39
+ "default": false,
40
+ "description": "Do not run the package manager after updating package.json."
41
+ }
42
+ }
43
+ }
package/tokens/color.css CHANGED
@@ -691,3 +691,99 @@
691
691
  }
692
692
  }
693
693
  }
694
+
695
+ /*
696
+ * Marka yüzeyleri (v0.7) — hero/pazarlama/boş-durum alanları için. Rampa
697
+ * basamaklarına `var()` ile bağlı: `applyMfTheme({ accent })` markayı
698
+ * değiştirince gradyanlar da otomatik takip eder.
699
+ * - `bg-brand-gradient` dolu marka yüzeyi (CTA bandı, avatar, logo zemini)
700
+ * - `bg-brand-glow` sayfa tepesinde yumuşak marka ışıması (hero arka planı)
701
+ * - `text-brand-gradient` gradyan metin (başlık vurgusu) — `bg-clip-text`
702
+ * - `bg-grid` ince ızgara dokusu (hero/landing zemini), maske ile söner
703
+ */
704
+ @layer base {
705
+ :root,
706
+ .light {
707
+ --mf-gradient-brand: linear-gradient(
708
+ 135deg,
709
+ var(--color-primary-500) 0%,
710
+ var(--color-primary-700) 55%,
711
+ var(--color-primary-900) 100%
712
+ );
713
+ --mf-gradient-text: linear-gradient(
714
+ 120deg,
715
+ var(--color-primary-700) 0%,
716
+ var(--color-primary-500) 50%,
717
+ var(--color-info-600, var(--color-primary-600)) 100%
718
+ );
719
+ --mf-glow-brand: radial-gradient(
720
+ 60% 55% at 50% 0%,
721
+ color-mix(in srgb, var(--color-primary-300) 45%, transparent) 0%,
722
+ transparent 100%
723
+ );
724
+ --mf-grid-line: color-mix(in srgb, var(--color-primary-900) 6%, transparent);
725
+ }
726
+
727
+ .dark {
728
+ --mf-gradient-brand: linear-gradient(
729
+ 135deg,
730
+ var(--color-primary-300) 0%,
731
+ var(--color-primary-500) 50%,
732
+ var(--color-primary-700) 100%
733
+ );
734
+ --mf-gradient-text: linear-gradient(
735
+ 120deg,
736
+ var(--color-primary-200) 0%,
737
+ var(--color-primary-400) 50%,
738
+ var(--color-info-400, var(--color-primary-300)) 100%
739
+ );
740
+ --mf-glow-brand: radial-gradient(
741
+ 60% 55% at 50% 0%,
742
+ color-mix(in srgb, var(--color-primary-500) 22%, transparent) 0%,
743
+ transparent 100%
744
+ );
745
+ --mf-grid-line: color-mix(in srgb, var(--color-primary-100) 6%, transparent);
746
+ }
747
+ }
748
+
749
+ @utility bg-brand-gradient {
750
+ background-image: var(--mf-gradient-brand);
751
+ }
752
+
753
+ @utility bg-brand-glow {
754
+ background-image: var(--mf-glow-brand);
755
+ }
756
+
757
+ @utility text-brand-gradient {
758
+ background-image: var(--mf-gradient-text);
759
+ background-clip: text;
760
+ -webkit-background-clip: text;
761
+ color: transparent;
762
+ @media (forced-colors: active) {
763
+ color: CanvasText;
764
+ background-image: none;
765
+ }
766
+ }
767
+
768
+ @utility bg-grid {
769
+ background-image:
770
+ linear-gradient(to right, var(--mf-grid-line) 1px, transparent 1px),
771
+ linear-gradient(to bottom, var(--mf-grid-line) 1px, transparent 1px);
772
+ background-size: 32px 32px;
773
+ mask-image: radial-gradient(ellipse 70% 60% at 50% 0%, #000 40%, transparent 100%);
774
+ }
775
+
776
+ /*
777
+ * `bg-brand-deep` — üzerinde BEYAZ metin taşıyan marka yüzeyi (CTA bandı,
778
+ * giriş ekranı marka paneli). `bg-brand-gradient` koyu modda açık basamaklara
779
+ * kayar (üstünde koyu metin için); bu ise iki modda da derin kalır —
780
+ * beyaz metin her iki temada AA sağlar.
781
+ */
782
+ @utility bg-brand-deep {
783
+ background-image: linear-gradient(
784
+ 135deg,
785
+ var(--color-primary-700) 0%,
786
+ var(--color-primary-900) 60%,
787
+ var(--color-primary-950) 100%
788
+ );
789
+ }