commons-shared-web-ui 0.0.55 → 0.0.57

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 (223) hide show
  1. package/fesm2022/commons-shared-web-ui.mjs +15897 -0
  2. package/fesm2022/commons-shared-web-ui.mjs.map +1 -0
  3. package/index.d.ts +4916 -0
  4. package/package.json +34 -53
  5. package/src/lib/modules/button/button.theme.scss +4 -4
  6. package/.claude/settings.local.json +0 -10
  7. package/documentation/alert.md +0 -123
  8. package/documentation/button-dropdown.md +0 -126
  9. package/documentation/button.md +0 -184
  10. package/documentation/cards-usage-guidelines.md +0 -131
  11. package/documentation/configurable-form.md +0 -605
  12. package/documentation/confirmation-modal.md +0 -250
  13. package/documentation/filter-sidebar.md +0 -178
  14. package/documentation/filter-table-selector.md +0 -228
  15. package/documentation/form-builder.md +0 -599
  16. package/documentation/form-components.md +0 -384
  17. package/documentation/form-field-configuration.md +0 -250
  18. package/documentation/nav.md +0 -427
  19. package/documentation/pagination.md +0 -181
  20. package/documentation/side-nav-documentation.md +0 -169
  21. package/documentation/smart-form.md +0 -2765
  22. package/documentation/smart-table.md +0 -1221
  23. package/documentation/snackbar.md +0 -118
  24. package/documentation/style-externalization.md +0 -88
  25. package/documentation/summary-card.md +0 -279
  26. package/documentation/table-column-configuration.md +0 -221
  27. package/documentation/time-picker.md +0 -274
  28. package/ng-package.json +0 -30
  29. package/src/lib/modules/alert/alert.models.ts +0 -6
  30. package/src/lib/modules/alert/alert.module.ts +0 -16
  31. package/src/lib/modules/alert/components/alert/alert.component.html +0 -27
  32. package/src/lib/modules/alert/components/alert/alert.component.scss +0 -92
  33. package/src/lib/modules/alert/components/alert/alert.component.ts +0 -81
  34. package/src/lib/modules/button/button.models.ts +0 -13
  35. package/src/lib/modules/button/button.module.ts +0 -16
  36. package/src/lib/modules/button/components/button/button.component.html +0 -22
  37. package/src/lib/modules/button/components/button/button.component.scss +0 -88
  38. package/src/lib/modules/button/components/button/button.component.ts +0 -67
  39. package/src/lib/modules/button-dropdown/button-dropdown.models.ts +0 -26
  40. package/src/lib/modules/button-dropdown/button-dropdown.module.ts +0 -22
  41. package/src/lib/modules/button-dropdown/components/button-dropdown/button-dropdown.component.html +0 -41
  42. package/src/lib/modules/button-dropdown/components/button-dropdown/button-dropdown.component.scss +0 -135
  43. package/src/lib/modules/button-dropdown/components/button-dropdown/button-dropdown.component.ts +0 -160
  44. package/src/lib/modules/configurable-form/component/configurable-form.component.html +0 -294
  45. package/src/lib/modules/configurable-form/component/configurable-form.component.scss +0 -503
  46. package/src/lib/modules/configurable-form/component/configurable-form.component.ts +0 -628
  47. package/src/lib/modules/configurable-form/configurable-form.examples.ts +0 -154
  48. package/src/lib/modules/configurable-form/configurable-form.model.ts +0 -131
  49. package/src/lib/modules/configurable-form/configurable-form.module.ts +0 -19
  50. package/src/lib/modules/confirmation-modal/components/confirmation-modal/confirmation-modal.component.html +0 -77
  51. package/src/lib/modules/confirmation-modal/components/confirmation-modal/confirmation-modal.component.scss +0 -395
  52. package/src/lib/modules/confirmation-modal/components/confirmation-modal/confirmation-modal.component.ts +0 -266
  53. package/src/lib/modules/confirmation-modal/confirmation-modal.models.ts +0 -71
  54. package/src/lib/modules/confirmation-modal/confirmation-modal.module.ts +0 -20
  55. package/src/lib/modules/filter/components/filter/filter.component.html +0 -131
  56. package/src/lib/modules/filter/components/filter/filter.component.scss +0 -245
  57. package/src/lib/modules/filter/components/filter/filter.component.ts +0 -216
  58. package/src/lib/modules/filter/filter.models.ts +0 -88
  59. package/src/lib/modules/filter/filter.module.ts +0 -24
  60. package/src/lib/modules/filter-sidebar/components/filter-sidebar/filter-sidebar.component.html +0 -112
  61. package/src/lib/modules/filter-sidebar/components/filter-sidebar/filter-sidebar.component.scss +0 -186
  62. package/src/lib/modules/filter-sidebar/components/filter-sidebar/filter-sidebar.component.ts +0 -163
  63. package/src/lib/modules/filter-sidebar/filter-sidebar.models.ts +0 -95
  64. package/src/lib/modules/filter-sidebar/filter-sidebar.module.ts +0 -24
  65. package/src/lib/modules/filter-table-selector/components/filter-table-selector/filter-table-selector.component.html +0 -73
  66. package/src/lib/modules/filter-table-selector/components/filter-table-selector/filter-table-selector.component.scss +0 -321
  67. package/src/lib/modules/filter-table-selector/components/filter-table-selector/filter-table-selector.component.ts +0 -361
  68. package/src/lib/modules/filter-table-selector/filter-table-selector.models.ts +0 -91
  69. package/src/lib/modules/filter-table-selector/filter-table-selector.module.ts +0 -22
  70. package/src/lib/modules/form-builder/components/field-configurator/configurator-config-panel/configurator-config-panel.component.html +0 -63
  71. package/src/lib/modules/form-builder/components/field-configurator/configurator-config-panel/configurator-config-panel.component.scss +0 -496
  72. package/src/lib/modules/form-builder/components/field-configurator/configurator-config-panel/configurator-config-panel.component.ts +0 -445
  73. package/src/lib/modules/form-builder/components/field-configurator/configurator-tree/configurator-tree.component.html +0 -75
  74. package/src/lib/modules/form-builder/components/field-configurator/configurator-tree/configurator-tree.component.scss +0 -210
  75. package/src/lib/modules/form-builder/components/field-configurator/configurator-tree/configurator-tree.component.ts +0 -55
  76. package/src/lib/modules/form-builder/components/field-configurator/field-configurator.component.html +0 -25
  77. package/src/lib/modules/form-builder/components/field-configurator/field-configurator.component.scss +0 -82
  78. package/src/lib/modules/form-builder/components/field-configurator/field-configurator.component.ts +0 -95
  79. package/src/lib/modules/form-builder/components/field-selection/field-selection.component.html +0 -20
  80. package/src/lib/modules/form-builder/components/field-selection/field-selection.component.scss +0 -37
  81. package/src/lib/modules/form-builder/components/field-selection/field-selection.component.ts +0 -94
  82. package/src/lib/modules/form-builder/components/field-selection/group-node/group-node.component.html +0 -46
  83. package/src/lib/modules/form-builder/components/field-selection/group-node/group-node.component.scss +0 -102
  84. package/src/lib/modules/form-builder/components/field-selection/group-node/group-node.component.ts +0 -50
  85. package/src/lib/modules/form-builder/components/field-selection/selection-field-node/selection-field-node.component.html +0 -35
  86. package/src/lib/modules/form-builder/components/field-selection/selection-field-node/selection-field-node.component.scss +0 -67
  87. package/src/lib/modules/form-builder/components/field-selection/selection-field-node/selection-field-node.component.ts +0 -34
  88. package/src/lib/modules/form-builder/components/field-selection/selection-section-node/selection-section-node.component.html +0 -68
  89. package/src/lib/modules/form-builder/components/field-selection/selection-section-node/selection-section-node.component.scss +0 -113
  90. package/src/lib/modules/form-builder/components/field-selection/selection-section-node/selection-section-node.component.ts +0 -74
  91. package/src/lib/modules/form-builder/configs/field-type-schema.map.ts +0 -533
  92. package/src/lib/modules/form-builder/form-builder.module.ts +0 -36
  93. package/src/lib/modules/form-builder/index.ts +0 -9
  94. package/src/lib/modules/form-builder/models/builder.models.ts +0 -7
  95. package/src/lib/modules/form-builder/models/field-configurator.models.ts +0 -38
  96. package/src/lib/modules/form-builder/models/field-selection.models.ts +0 -51
  97. package/src/lib/modules/form-builder/services/field-configurator.service.ts +0 -258
  98. package/src/lib/modules/form-builder/services/field-selection.service.ts +0 -299
  99. package/src/lib/modules/form-builder/services/form-schema-tree.service.ts +0 -670
  100. package/src/lib/modules/form-builder/tokens/builder.tokens.ts +0 -10
  101. package/src/lib/modules/form-builder/utils/constants.ts +0 -43
  102. package/src/lib/modules/form-components/components/checkbox/checkbox.component.html +0 -29
  103. package/src/lib/modules/form-components/components/checkbox/checkbox.component.scss +0 -111
  104. package/src/lib/modules/form-components/components/checkbox/checkbox.component.ts +0 -207
  105. package/src/lib/modules/form-components/components/checkbox/checkbox.models.ts +0 -35
  106. package/src/lib/modules/form-components/components/datepicker/datepicker.component.html +0 -42
  107. package/src/lib/modules/form-components/components/datepicker/datepicker.component.scss +0 -115
  108. package/src/lib/modules/form-components/components/datepicker/datepicker.component.ts +0 -267
  109. package/src/lib/modules/form-components/components/datepicker/datepicker.models.ts +0 -45
  110. package/src/lib/modules/form-components/components/dropdown/dropdown.component.html +0 -74
  111. package/src/lib/modules/form-components/components/dropdown/dropdown.component.scss +0 -252
  112. package/src/lib/modules/form-components/components/dropdown/dropdown.component.ts +0 -377
  113. package/src/lib/modules/form-components/components/dropdown/dropdown.models.ts +0 -53
  114. package/src/lib/modules/form-components/components/input/input.component.html +0 -51
  115. package/src/lib/modules/form-components/components/input/input.component.scss +0 -128
  116. package/src/lib/modules/form-components/components/input/input.component.ts +0 -250
  117. package/src/lib/modules/form-components/components/input/input.models.ts +0 -55
  118. package/src/lib/modules/form-components/components/radio/radio.component.html +0 -22
  119. package/src/lib/modules/form-components/components/radio/radio.component.scss +0 -107
  120. package/src/lib/modules/form-components/components/radio/radio.component.ts +0 -181
  121. package/src/lib/modules/form-components/components/radio/radio.models.ts +0 -39
  122. package/src/lib/modules/form-components/components/search/search.component.html +0 -15
  123. package/src/lib/modules/form-components/components/search/search.component.scss +0 -87
  124. package/src/lib/modules/form-components/components/search/search.component.ts +0 -213
  125. package/src/lib/modules/form-components/components/search/search.models.ts +0 -40
  126. package/src/lib/modules/form-components/components/toggle/toggle.component.html +0 -15
  127. package/src/lib/modules/form-components/components/toggle/toggle.component.scss +0 -81
  128. package/src/lib/modules/form-components/components/toggle/toggle.component.ts +0 -166
  129. package/src/lib/modules/form-components/components/toggle/toggle.models.ts +0 -27
  130. package/src/lib/modules/form-components/directives/click-outside.directive.ts +0 -22
  131. package/src/lib/modules/form-components/form-components.module.ts +0 -42
  132. package/src/lib/modules/form-field-configuration/components/_ffc-controls.scss +0 -89
  133. package/src/lib/modules/form-field-configuration/components/config-field-node/config-field-node.component.html +0 -68
  134. package/src/lib/modules/form-field-configuration/components/config-field-node/config-field-node.component.scss +0 -73
  135. package/src/lib/modules/form-field-configuration/components/config-field-node/config-field-node.component.ts +0 -34
  136. package/src/lib/modules/form-field-configuration/components/config-section-node/config-section-node.component.html +0 -78
  137. package/src/lib/modules/form-field-configuration/components/config-section-node/config-section-node.component.scss +0 -83
  138. package/src/lib/modules/form-field-configuration/components/config-section-node/config-section-node.component.ts +0 -94
  139. package/src/lib/modules/form-field-configuration/components/form-field-configuration/form-field-configuration.component.html +0 -38
  140. package/src/lib/modules/form-field-configuration/components/form-field-configuration/form-field-configuration.component.scss +0 -42
  141. package/src/lib/modules/form-field-configuration/components/form-field-configuration/form-field-configuration.component.ts +0 -92
  142. package/src/lib/modules/form-field-configuration/form-field-configuration.module.ts +0 -23
  143. package/src/lib/modules/form-field-configuration/index.ts +0 -7
  144. package/src/lib/modules/form-field-configuration/models/field-configuration.models.ts +0 -62
  145. package/src/lib/modules/form-field-configuration/services/config-schema-tree.service.ts +0 -159
  146. package/src/lib/modules/form-field-configuration/services/field-configuration.service.ts +0 -228
  147. package/src/lib/modules/material/material.module.ts +0 -94
  148. package/src/lib/modules/nav/components/nav/nav.component.html +0 -34
  149. package/src/lib/modules/nav/components/nav/nav.component.scss +0 -171
  150. package/src/lib/modules/nav/components/nav/nav.component.ts +0 -82
  151. package/src/lib/modules/nav/nav.models.ts +0 -31
  152. package/src/lib/modules/nav/nav.module.ts +0 -17
  153. package/src/lib/modules/pagination/components/pagination/pagination.component.html +0 -52
  154. package/src/lib/modules/pagination/components/pagination/pagination.component.scss +0 -155
  155. package/src/lib/modules/pagination/components/pagination/pagination.component.ts +0 -109
  156. package/src/lib/modules/pagination/pagination.module.ts +0 -17
  157. package/src/lib/modules/side-nav/components/side-nav/side-nav.component.html +0 -56
  158. package/src/lib/modules/side-nav/components/side-nav/side-nav.component.scss +0 -342
  159. package/src/lib/modules/side-nav/components/side-nav/side-nav.component.ts +0 -135
  160. package/src/lib/modules/side-nav/side-nav.models.ts +0 -38
  161. package/src/lib/modules/side-nav/side-nav.module.ts +0 -16
  162. package/src/lib/modules/smart-form/components/form-field/form-field.component.html +0 -1330
  163. package/src/lib/modules/smart-form/components/form-field/form-field.component.scss +0 -2112
  164. package/src/lib/modules/smart-form/components/form-field/form-field.component.ts +0 -3006
  165. package/src/lib/modules/smart-form/components/form-section/form-section.component.html +0 -65
  166. package/src/lib/modules/smart-form/components/form-section/form-section.component.scss +0 -209
  167. package/src/lib/modules/smart-form/components/form-section/form-section.component.ts +0 -131
  168. package/src/lib/modules/smart-form/components/smart-form/smart-form.component.html +0 -253
  169. package/src/lib/modules/smart-form/components/smart-form/smart-form.component.scss +0 -689
  170. package/src/lib/modules/smart-form/components/smart-form/smart-form.component.ts +0 -1131
  171. package/src/lib/modules/smart-form/index.ts +0 -10
  172. package/src/lib/modules/smart-form/models/form-schema.model.ts +0 -793
  173. package/src/lib/modules/smart-form/models/hierarchy-config.model.ts +0 -21
  174. package/src/lib/modules/smart-form/services/expression.service.ts +0 -75
  175. package/src/lib/modules/smart-form/services/smart-form-controller.service.ts +0 -67
  176. package/src/lib/modules/smart-form/smart-form.examples.ts +0 -1324
  177. package/src/lib/modules/smart-form/smart-form.module.ts +0 -38
  178. package/src/lib/modules/smart-form/utils/translation.utils.ts +0 -82
  179. package/src/lib/modules/smart-form/utils/trusted-url.pipe.ts +0 -25
  180. package/src/lib/modules/smart-form/utils/validation.utils.ts +0 -98
  181. package/src/lib/modules/smart-table/components/smart-table/smart-table.component.html +0 -283
  182. package/src/lib/modules/smart-table/components/smart-table/smart-table.component.scss +0 -685
  183. package/src/lib/modules/smart-table/components/smart-table/smart-table.component.ts +0 -1128
  184. package/src/lib/modules/smart-table/models/table-config.model.ts +0 -213
  185. package/src/lib/modules/smart-table/smart-table.module.ts +0 -30
  186. package/src/lib/modules/smart-table/utils/safe-html.pipe.ts +0 -28
  187. package/src/lib/modules/smart-table/utils/smart-table.utils.ts +0 -18
  188. package/src/lib/modules/snackbar/components/snackbar.component.html +0 -41
  189. package/src/lib/modules/snackbar/components/snackbar.component.scss +0 -99
  190. package/src/lib/modules/snackbar/components/snackbar.component.ts +0 -18
  191. package/src/lib/modules/snackbar/models/snackbar.models.ts +0 -10
  192. package/src/lib/modules/snackbar/services/snackbar.service.ts +0 -40
  193. package/src/lib/modules/snackbar/snackbar.module.ts +0 -11
  194. package/src/lib/modules/summary-card/components/summary-card/summary-card.component.html +0 -47
  195. package/src/lib/modules/summary-card/components/summary-card/summary-card.component.scss +0 -199
  196. package/src/lib/modules/summary-card/components/summary-card/summary-card.component.ts +0 -126
  197. package/src/lib/modules/summary-card/summary-card.module.ts +0 -18
  198. package/src/lib/modules/table-column-configuration/components/_tcc-controls.scss +0 -53
  199. package/src/lib/modules/table-column-configuration/components/config-column-node/config-column-node.component.html +0 -47
  200. package/src/lib/modules/table-column-configuration/components/config-column-node/config-column-node.component.scss +0 -50
  201. package/src/lib/modules/table-column-configuration/components/config-column-node/config-column-node.component.ts +0 -33
  202. package/src/lib/modules/table-column-configuration/components/table-column-configuration/table-column-configuration.component.html +0 -30
  203. package/src/lib/modules/table-column-configuration/components/table-column-configuration/table-column-configuration.component.scss +0 -36
  204. package/src/lib/modules/table-column-configuration/components/table-column-configuration/table-column-configuration.component.ts +0 -78
  205. package/src/lib/modules/table-column-configuration/index.ts +0 -5
  206. package/src/lib/modules/table-column-configuration/models/table-column-configuration.models.ts +0 -20
  207. package/src/lib/modules/table-column-configuration/services/table-column-configuration.service.ts +0 -77
  208. package/src/lib/modules/table-column-configuration/table-column-configuration.module.ts +0 -21
  209. package/src/lib/modules/time-picker/components/time-picker/time-picker.component.html +0 -37
  210. package/src/lib/modules/time-picker/components/time-picker/time-picker.component.scss +0 -102
  211. package/src/lib/modules/time-picker/components/time-picker/time-picker.component.ts +0 -178
  212. package/src/lib/modules/time-picker/components/time-wheel-panel/time-wheel-panel.component.html +0 -78
  213. package/src/lib/modules/time-picker/components/time-wheel-panel/time-wheel-panel.component.scss +0 -226
  214. package/src/lib/modules/time-picker/components/time-wheel-panel/time-wheel-panel.component.ts +0 -595
  215. package/src/lib/modules/time-picker/models/time-picker.models.ts +0 -49
  216. package/src/lib/modules/time-picker/time-picker.module.ts +0 -23
  217. package/src/lib/shared-ui.module.ts +0 -55
  218. package/src/lib/utils/constants.ts +0 -11
  219. package/src/lib/utils/storage.utils.ts +0 -37
  220. package/src/lib/utils/string.utils.ts +0 -23
  221. package/src/lib/utils/translation.utils.ts +0 -87
  222. package/src/public-api.ts +0 -127
  223. package/tsconfig.lib.json +0 -15
@@ -1,2112 +0,0 @@
1
- @import '../../../../styles/utilities.scss';
2
-
3
- .form-field {
4
- font-family: var(--cc-sf-font-family, 'Poppins', sans-serif) !important;
5
- }
6
-
7
- /* Base Variable Fallbacks (mapping to global.scss tokens) */
8
- :host {
9
- --cc-sf-input-border: #D1D5DB;
10
- --cc-sf-input-bg: #ffffff;
11
- --cc-sf-input-radius: 9px;
12
- --cc-sf-input-height: 44px;
13
- --cc-sf-label-color: #111827;
14
- --cc-sf-hint-color: #9CA3AF;
15
- --cc-sf-error-border: #EF4444;
16
- --cc-sf-error-bg: #FFF5F5;
17
- /* Indigo accent for focus rings */
18
- --cc-sf-accent-color: #6366F1;
19
- --cc-sf-input-focus-border: #6366F1;
20
- --cc-sf-input-hover-border: #A5B4FC;
21
- --cc-sf-input-placeholder: #C4C9D4;
22
- --cc-sf-input-disabled-bg: #F8F9FB;
23
- --cc-sf-input-disabled-border: #E5E7EB;
24
- --cc-sf-switch-track-on: #6366F1;
25
- --cc-sf-switch-track-off: #D1D5DB;
26
- --cc-sf-switch-thumb: #ffffff;
27
- --cc-sf-selected-color: #6366F1;
28
- }
29
-
30
- .form-row {
31
- gap: var(--cc-sf-grid-gap, 16px);
32
-
33
- &.horizontal {
34
- display: flex;
35
- flex-direction: row;
36
-
37
- >* {
38
- flex: 1;
39
- }
40
- }
41
-
42
- &:not(.horizontal) {
43
- flex-direction: column;
44
- }
45
-
46
- &.grid-row {
47
- display: grid;
48
- grid-template-columns: repeat(12, 1fr);
49
- gap: var(--cc-sf-grid-gap, 16px);
50
- align-items: start;
51
-
52
- @media (max-width: 640px) {
53
- grid-template-columns: 1fr;
54
-
55
- .row-field {
56
- grid-column: span 12 !important;
57
- }
58
- }
59
- }
60
- }
61
-
62
- .field-label {
63
- font-size: 0.8rem !important;
64
- font-weight: 600;
65
- line-height: 1;
66
- letter-spacing: .04em;
67
- text-transform: uppercase;
68
- color: #202124 !important;
69
- }
70
-
71
- .field-input,
72
- input.matInput,
73
- .mat-mdc-input-element {
74
- display: block;
75
- width: 100%;
76
- height: var(--cc-sf-input-height) !important;
77
- padding: 0 14px !important;
78
- font-family: inherit;
79
- font-size: 0.9rem;
80
- color: var(--cc-sf-label-color);
81
- background-color: var(--cc-sf-input-bg) !important;
82
- border: 1.5px solid var(--cc-sf-input-border) !important;
83
- border-radius: var(--cc-sf-input-radius) !important;
84
- box-sizing: border-box;
85
- box-shadow: 0 1px 2px rgba(0, 0, 0, .04) !important;
86
- transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
87
-
88
- &::placeholder {
89
- font-weight: 400;
90
- font-size: 14px;
91
- color: var(--cc-sf-input-placeholder);
92
- }
93
- }
94
-
95
- .field-input {
96
- opacity: var(--cc-sf-input-opacity, 1);
97
- line-height: var(--cc-sf-input-line-height, 1.5);
98
- transition: var(--cc-sf-input-transition, all 0.2s ease);
99
-
100
- &::placeholder {
101
- font-weight: var(--cc-sf-placeholder-weight, 400);
102
- font-size: var(--cc-sf-placeholder-size, 14px);
103
- line-height: var(--cc-sf-placeholder-line-height, 100%);
104
- color: var(--cc-sf-input-placeholder);
105
- }
106
-
107
- &:hover:not(:disabled):not([readonly]) {
108
- border-color: var(--cc-sf-input-hover-border) !important;
109
- box-shadow: 0 1px 4px rgba(99, 102, 241, .08) !important;
110
- }
111
-
112
- &:focus {
113
- outline: none;
114
- border-color: var(--cc-sf-input-focus-border) !important;
115
- box-shadow:
116
- 0 0 0 3px rgba(99, 102, 241, .14),
117
- 0 1px 4px rgba(99, 102, 241, .1) !important;
118
- background-color: #FEFEFF !important;
119
- }
120
-
121
- &:disabled,
122
- &[readonly] {
123
- background-color: var(--cc-sf-input-disabled-bg) !important;
124
- color: #9CA3AF !important;
125
- cursor: not-allowed;
126
- border-color: var(--cc-sf-input-disabled-border) !important;
127
- box-shadow: none !important;
128
- }
129
-
130
- &.is-invalid {
131
- border-color: var(--cc-sf-error-border) !important;
132
- background-color: var(--cc-sf-error-bg) !important;
133
-
134
- &:focus {
135
- box-shadow:
136
- 0 0 0 3px rgba(239, 68, 68, .12),
137
- 0 1px 4px rgba(239, 68, 68, .1) !important;
138
- }
139
- }
140
-
141
- &.textarea {
142
- resize: vertical;
143
- min-height: 100px;
144
- height: auto;
145
- padding: 12px 16px !important;
146
- }
147
- }
148
-
149
- input[type="time"].time-input {
150
- cursor: pointer;
151
-
152
- &::-webkit-calendar-picker-indicator {
153
- cursor: pointer;
154
- opacity: 0.7;
155
- filter: invert(30%);
156
-
157
- &:hover {
158
- opacity: 1;
159
- }
160
- }
161
- }
162
-
163
- select.field-input {
164
- appearance: none;
165
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath stroke='%236B7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3E%3C/svg%3E");
166
- background-position: right 0.5rem center;
167
- background-repeat: no-repeat;
168
- background-size: 1.5em 1.5em;
169
- padding-right: 2.5rem;
170
- cursor: pointer;
171
-
172
- &:disabled {
173
- cursor: not-allowed;
174
- }
175
- }
176
-
177
- // ── Shared dropdown search input ────────────────────────────────────────────
178
- .dropdown-search-wrapper {
179
- display: flex;
180
- align-items: center;
181
- gap: 8px;
182
- padding: 8px 12px;
183
- border-bottom: 1px solid var(--cc-sf-input-border, #E5E7EB);
184
- background: var(--cc-sf-input-bg, #ffffff);
185
-
186
- .dropdown-search-icon {
187
- font-size: 18px;
188
- width: 18px;
189
- height: 18px;
190
- color: var(--cc-sf-input-placeholder, #9CA3AF);
191
- flex-shrink: 0;
192
- }
193
-
194
- .dropdown-search-input {
195
- flex: 1;
196
- border: none;
197
- outline: none;
198
- background: transparent;
199
- font-size: 0.875rem;
200
- color: var(--cc-sf-label-color, #111827);
201
- font-family: inherit;
202
-
203
- &::placeholder {
204
- color: var(--cc-sf-input-placeholder, #C4C9D4);
205
- }
206
- }
207
-
208
- .dropdown-search-clear {
209
- font-size: 18px;
210
- width: 18px;
211
- height: 18px;
212
- color: var(--cc-sf-input-placeholder, #9CA3AF);
213
- flex-shrink: 0;
214
- transition: color 0.15s;
215
-
216
- &:hover {
217
- color: var(--cc-sf-label-color, #111827);
218
- }
219
- }
220
- }
221
-
222
- // ── Multiple-select custom dropdown ─────────────────────────────────────────
223
- .multi-select-wrapper {
224
- position: relative;
225
-
226
- .multi-select-trigger {
227
- min-height: var(--cc-sf-input-height, 44px);
228
- height: auto;
229
- user-select: none;
230
-
231
- &.ms-open {
232
- border-color: var(--cc-sf-input-focus-border, #6366F1) !important;
233
- box-shadow: 0 0 0 3px rgba(99, 102, 241, .14), 0 1px 4px rgba(99, 102, 241, .1) !important;
234
- }
235
-
236
- .multi-select-value {
237
- flex: 1;
238
- color: var(--cc-sf-label-color, #111827);
239
- white-space: nowrap;
240
- overflow: hidden;
241
- text-overflow: ellipsis;
242
- }
243
-
244
- .multi-select-placeholder {
245
- flex: 1;
246
- font-weight: 400;
247
- font-size: 14px;
248
- color: var(--cc-sf-input-placeholder, #C4C9D4);
249
- }
250
-
251
- .multi-select-arrow {
252
- font-size: 20px;
253
- width: 20px;
254
- height: 20px;
255
- line-height: 20px;
256
- color: var(--cc-sf-label-color, #6B7280);
257
- flex-shrink: 0;
258
- }
259
- }
260
-
261
- .multi-select-panel {
262
- position: absolute;
263
- top: calc(100% + 4px);
264
- left: 0;
265
- right: 0;
266
- background: var(--cc-sf-input-bg, #ffffff);
267
- border: 1.5px solid var(--cc-sf-input-border, #D1D5DB);
268
- border-radius: var(--cc-sf-input-radius, 9px);
269
- box-shadow: 0 8px 24px rgba(0, 0, 0, 0.10), 0 2px 6px rgba(0, 0, 0, 0.06);
270
- z-index: 1050;
271
- display: flex;
272
- flex-direction: column;
273
- overflow: hidden;
274
- max-height: 320px;
275
- }
276
-
277
- .multi-select-options-list {
278
- flex: 1;
279
- overflow-y: auto;
280
- max-height: 240px;
281
-
282
- &::-webkit-scrollbar { width: 4px; }
283
- &::-webkit-scrollbar-thumb {
284
- background: var(--cc-sf-input-border, #D1D5DB);
285
- border-radius: 2px;
286
- }
287
- }
288
-
289
- .multi-select-option {
290
- padding: 8px 12px;
291
- border-bottom: 1px solid var(--cc-sf-input-border, #F3F4F6);
292
- transition: background 0.1s;
293
-
294
- &:last-of-type { border-bottom: none; }
295
-
296
- &:hover { background: var(--cc-sf-input-hover-bg, #F9FAFB); }
297
-
298
- input[type='checkbox'] {
299
- flex-shrink: 0;
300
- cursor: pointer;
301
- accent-color: var(--cc-sf-selected-color, #6366F1);
302
- width: 15px;
303
- height: 15px;
304
- }
305
-
306
- &.multi-select-all {
307
- border-bottom: 1px solid var(--cc-sf-input-border, #E5E7EB);
308
- background: var(--cc-sf-input-bg, #FAFBFC);
309
- }
310
- }
311
-
312
- .multi-select-empty {
313
- padding: 12px;
314
- text-align: center;
315
- }
316
-
317
- &.is-invalid .multi-select-trigger {
318
- border-color: var(--cc-sf-error-border, #EF4444) !important;
319
- background-color: var(--cc-sf-error-bg, #FFF5F5) !important;
320
- }
321
- }
322
-
323
- // ── Single-select searchable custom dropdown ────────────────────────────────
324
- .single-select-wrapper {
325
- position: relative;
326
-
327
- .single-select-trigger {
328
- min-height: var(--cc-sf-input-height, 44px);
329
- height: auto;
330
- user-select: none;
331
-
332
- &.ss-open {
333
- border-color: var(--cc-sf-input-focus-border, #6366F1) !important;
334
- box-shadow: 0 0 0 3px rgba(99, 102, 241, .14), 0 1px 4px rgba(99, 102, 241, .1) !important;
335
- }
336
-
337
- .single-select-value {
338
- flex: 1;
339
- color: var(--cc-sf-label-color, #111827);
340
- white-space: nowrap;
341
- overflow: hidden;
342
- text-overflow: ellipsis;
343
- }
344
-
345
- .single-select-placeholder {
346
- flex: 1;
347
- font-weight: 400;
348
- font-size: 14px;
349
- color: var(--cc-sf-input-placeholder, #C4C9D4);
350
- }
351
-
352
- .single-select-arrow {
353
- font-size: 20px;
354
- width: 20px;
355
- height: 20px;
356
- line-height: 20px;
357
- color: var(--cc-sf-label-color, #6B7280);
358
- flex-shrink: 0;
359
- }
360
- }
361
-
362
- .single-select-panel {
363
- position: absolute;
364
- top: calc(100% + 4px);
365
- left: 0;
366
- right: 0;
367
- background: var(--cc-sf-input-bg, #ffffff);
368
- border: 1.5px solid var(--cc-sf-input-border, #D1D5DB);
369
- border-radius: var(--cc-sf-input-radius, 9px);
370
- box-shadow: 0 8px 24px rgba(0, 0, 0, 0.10), 0 2px 6px rgba(0, 0, 0, 0.06);
371
- z-index: 1050;
372
- display: flex;
373
- flex-direction: column;
374
- overflow: hidden;
375
- max-height: 320px;
376
- }
377
-
378
- .single-select-options-list {
379
- flex: 1;
380
- overflow-y: auto;
381
- max-height: 240px;
382
-
383
- &::-webkit-scrollbar { width: 4px; }
384
- &::-webkit-scrollbar-thumb {
385
- background: var(--cc-sf-input-border, #D1D5DB);
386
- border-radius: 2px;
387
- }
388
- }
389
-
390
- .single-select-option {
391
- padding: 8px 12px;
392
- border-bottom: 1px solid var(--cc-sf-input-border, #F3F4F6);
393
- transition: background 0.1s;
394
- justify-content: space-between;
395
-
396
- &:last-of-type { border-bottom: none; }
397
-
398
- &:hover { background: var(--cc-sf-input-hover-bg, #F9FAFB); }
399
-
400
- &.selected {
401
- background: var(--cc-sf-input-hover-bg, #F0F5FF);
402
- color: var(--cc-sf-selected-color, #6366F1);
403
- }
404
-
405
- .single-select-check {
406
- font-size: 18px;
407
- width: 18px;
408
- height: 18px;
409
- color: var(--cc-sf-selected-color, #6366F1);
410
- }
411
- }
412
-
413
- &.is-invalid .single-select-trigger {
414
- border-color: var(--cc-sf-error-border, #EF4444) !important;
415
- background-color: var(--cc-sf-error-bg, #FFF5F5) !important;
416
- }
417
- }
418
-
419
- .char-count-hint {
420
- font-style: normal;
421
- line-height: 100%;
422
- letter-spacing: 0.02em;
423
- margin-top: 0.4rem;
424
- }
425
-
426
- .radio-group,
427
- .checkbox-group {
428
- &.layout-column {
429
- display: grid !important;
430
- grid-template-columns: repeat(12, 1fr);
431
- gap: 16px;
432
- width: 100%;
433
- }
434
-
435
- &.layout-row {
436
- flex-direction: column !important;
437
- gap: 12px;
438
- width: 100%;
439
- }
440
- }
441
-
442
- .radio-label,
443
- .checkbox-label {
444
- input {
445
- cursor: pointer;
446
- accent-color: var(--cc-sf-chip-selected-bg, #F05A28);
447
- }
448
-
449
- &.card-item {
450
- display: flex !important;
451
- flex-direction: row-reverse !important;
452
- justify-content: space-between !important;
453
- align-items: center !important;
454
- border: 1px solid var(--cc-sf-input-disabled-border, #E5E7EB);
455
- border-radius: 12px;
456
- padding: 16px 20px;
457
- box-sizing: border-box;
458
- transition: all 0.2s ease;
459
- background: var(--cc-sf-input-bg, #ffffff);
460
- margin-bottom: 0px;
461
-
462
- input {
463
- margin-left: 16px;
464
- }
465
-
466
- &.selected {
467
- border-color: var(--cc-sf-selected-color);
468
- background-color: rgba(240, 90, 40, 0.05); // Keep light tint
469
- }
470
-
471
- .option-content {
472
- .label-text {
473
- font-weight: var(--cc-sf-label-weight, 500);
474
- }
475
- }
476
- }
477
- }
478
-
479
- .checkbox-single {
480
- .checkbox-label {
481
- font-weight: var(--cc-sf-label-weight, 500);
482
- }
483
- }
484
-
485
- .chip-label {
486
- transition: var(--cc-sf-input-transition, all 0.2s ease);
487
-
488
- &:hover {
489
- background: var(--cc-sf-chip-hover-bg, #F3F4F6);
490
- }
491
-
492
- &.selected {
493
- background: var(--cc-sf-selected-color);
494
- color: var(--cc-sf-chip-selected-color, #ffffff);
495
- border-color: var(--cc-sf-selected-color);
496
- }
497
- }
498
-
499
- .switch {
500
- width: 50px;
501
- height: 24px;
502
- display: inline-block;
503
-
504
- input {
505
- opacity: 0;
506
- width: 0;
507
- height: 0;
508
- position: absolute;
509
-
510
- &:checked+.slider {
511
- background-color: var(--cc-sf-switch-track-on) !important;
512
-
513
- &::before {
514
- transform: translateX(26px);
515
- }
516
- }
517
- }
518
-
519
- .slider {
520
- top: 0;
521
- left: 0;
522
- right: 0;
523
- bottom: 0;
524
- transition: 0.4s;
525
- background-color: var(--cc-sf-switch-track-off);
526
- border-radius: 24px;
527
-
528
- &::before {
529
- position: absolute;
530
- content: "";
531
- height: 18px;
532
- width: 18px;
533
- left: 3px;
534
- bottom: 3px;
535
- background-color: var(--cc-sf-switch-thumb);
536
- transition: 0.4s;
537
- border-radius: 50%;
538
- }
539
- }
540
- }
541
-
542
- .rating-group {
543
- .star {
544
- transition: var(--cc-sf-input-transition, all 0.2s ease);
545
-
546
- mat-icon {
547
- font-size: var(--cc-sf-star-size, 28px);
548
- width: var(--cc-sf-star-size, 28px);
549
- height: var(--cc-sf-star-size, 28px);
550
- line-height: var(--cc-sf-star-size, 28px);
551
- color: var(--cc-sf-star-empty, #D1D5DB);
552
- transition: var(--cc-sf-input-transition, all 0.2s ease);
553
- }
554
-
555
- &.filled mat-icon,
556
- &.half mat-icon {
557
- color: var(--cc-sf-star-filled, #F59E0B);
558
- }
559
-
560
- &:hover mat-icon {
561
- color: var(--cc-sf-star-filled, #F59E0B);
562
- }
563
- }
564
- }
565
-
566
- .password-wrapper {
567
- .password-toggle {
568
- right: 0.625rem;
569
- top: 50%;
570
- transform: translateY(-50%);
571
- line-height: 1;
572
- transition: color var(--cc-sf-input-transition, 0.2s ease);
573
-
574
- mat-icon.eye-icon {
575
- font-size: 1.125rem;
576
- width: 1.125rem;
577
- height: 1.125rem;
578
- line-height: 1.125rem;
579
- }
580
-
581
- &:hover {
582
- color: var(--cc-sf-label-color, #374151);
583
- }
584
-
585
- &:focus {
586
- outline: none;
587
- }
588
- }
589
- }
590
-
591
- .group-section-wrapper {
592
- // Flat — no card shell; card border/shadow removed
593
-
594
- // ── Section heading: left accent bar ────────────────────────────────────────
595
- .group-label {
596
- font-size: var(--cc-sf-section-label-size, 1rem);
597
- font-weight: var(--cc-sf-section-label-weight, 600);
598
- color: var(--cc-sf-section-label-color, #1F2937);
599
- margin: 0 0 16px 0;
600
- padding-left: 12px;
601
- padding-top: 2px;
602
- padding-bottom: 2px;
603
- border-left: var(--cc-sf-section-header-accent-width, 4px) solid var(--cc-sf-section-header-accent-color, #3B82F6);
604
- line-height: 1.4;
605
- }
606
-
607
- .group-fields {
608
- &.sf-grid {
609
- display: grid;
610
- grid-template-columns: repeat(12, 1fr);
611
- gap: var(--cc-sf-grid-gap, 16px);
612
- align-items: start;
613
-
614
- @media (max-width: 640px) {
615
- grid-template-columns: 1fr;
616
-
617
- .sf-col {
618
- grid-column: span 12 !important;
619
- }
620
- }
621
- }
622
- }
623
-
624
- // ── Standard GROUP accordion instance ────────────────────────────────────────
625
- .group-accordion-instance {
626
- border: var(--cc-sf-instance-border, 1px solid #E5E7EB);
627
- border-radius: var(--cc-sf-section-border-radius-inner, 8px);
628
- margin-bottom: 8px;
629
- overflow: hidden;
630
- transition: border-color 0.2s ease;
631
-
632
- &:last-of-type {
633
- margin-bottom: 0;
634
- }
635
-
636
- .group-accordion-header {
637
- display: flex;
638
- justify-content: space-between;
639
- align-items: center;
640
- padding: 10px 14px;
641
- background: var(--cc-sf-repeater-accordion-header-bg, #F9FAFB);
642
- cursor: pointer;
643
- user-select: none;
644
- transition: background 0.15s ease;
645
-
646
- &:hover {
647
- background: var(--cc-sf-repeater-accordion-active-bg, #EFF6FF);
648
- }
649
-
650
- .instance-badge {
651
- width: 22px;
652
- height: 22px;
653
- border-radius: 50%;
654
- background: var(--cc-sf-repeater-badge-bg, #E5E7EB);
655
- color: var(--cc-sf-repeater-badge-color, #374151);
656
- font-size: 0.75rem;
657
- font-weight: 600;
658
- display: flex;
659
- align-items: center;
660
- justify-content: center;
661
- flex-shrink: 0;
662
- }
663
-
664
- .instance-title {
665
- font-size: var(--cc-sf-instance-num-size, 0.8125rem);
666
- font-weight: 600;
667
- color: var(--cc-sf-repeater-accordion-header-color, #1F2937);
668
- }
669
-
670
- .accordion-remove-btn {
671
- background: none;
672
- border: none;
673
- cursor: pointer;
674
- color: var(--cc-sf-btn-remove-color, #E53E3E);
675
- padding: 4px;
676
- border-radius: 4px;
677
- line-height: 1;
678
- display: flex;
679
- align-items: center;
680
- transition: background 0.15s ease;
681
-
682
- mat-icon {
683
- font-size: 1.1rem;
684
- width: 1.1rem;
685
- height: 1.1rem;
686
- line-height: 1.1rem;
687
- }
688
-
689
- &:hover {
690
- background: var(--cc-sf-btn-remove-hover-bg, #FED7D7);
691
- }
692
- }
693
-
694
- .accordion-chevron {
695
- font-size: 1.25rem;
696
- width: 1.25rem;
697
- height: 1.25rem;
698
- line-height: 1.25rem;
699
- color: var(--cc-sf-instance-num-color, #4B5563);
700
- }
701
- }
702
-
703
- .group-accordion-body {
704
- padding: var(--cc-sf-instance-padding, 16px);
705
- background: var(--cc-sf-instance-bg, #F9FAFB);
706
- border-top: var(--cc-sf-instance-divider, 1px dashed #D1D5DB);
707
- }
708
- }
709
-
710
- // ── Full-width dashed Add button ─────────────────────────────────────────────
711
- .btn-add-group {
712
- display: flex;
713
- align-items: center;
714
- justify-content: center;
715
- gap: 6px;
716
- width: 100%;
717
- padding: 10px 20px;
718
- margin-top: 12px;
719
- background: var(--cc-sf-btn-add-bg, transparent);
720
- color: var(--cc-sf-btn-add-color, #3B82F6);
721
- border: var(--cc-sf-btn-add-border, 1px dashed #CBD5E1);
722
- border-radius: var(--cc-sf-btn-add-radius, 6px);
723
- cursor: pointer;
724
- font-family: inherit;
725
- font-size: var(--cc-sf-btn-font-size, 0.875rem);
726
- font-weight: var(--cc-sf-btn-font-weight, 600);
727
- transition: var(--cc-sf-btn-transition, all 0.2s ease);
728
-
729
- mat-icon {
730
- font-size: 1.1rem;
731
- width: 1.1rem;
732
- height: 1.1rem;
733
- line-height: 1.1rem;
734
- }
735
-
736
- &:hover {
737
- background: var(--cc-sf-btn-add-hover-bg, #EFF6FF);
738
- border-color: var(--cc-sf-btn-add-hover-border, #BFDBFE);
739
- }
740
- }
741
-
742
- .group-instance {
743
- &:last-child {
744
- margin-bottom: 0;
745
- }
746
- }
747
-
748
- &.multi-save-active {
749
- border: none;
750
- box-shadow: none;
751
- padding: 0;
752
- background: transparent;
753
-
754
- .multi-save-header {
755
- .btn-add-multi {
756
- ::ng-deep button {
757
- color: var(--ms-btn-add-color, #3B82F6);
758
- font-weight: 600;
759
- font-size: 0.875rem;
760
- padding: 8px 12px;
761
-
762
- &:hover {
763
- color: var(--ms-btn-add-hover, #2563EB);
764
- background-color: var(--cc-sf-btn-add-hover-bg, #EFF6FF);
765
- }
766
- }
767
- }
768
- }
769
-
770
- .group-instance {
771
- // box-shadow: var(--ms-card-shadow, 0 1px 4px rgba(0, 0, 0, 0.05));
772
-
773
- // &.is-editing {
774
- // padding: 24px;
775
- // }
776
-
777
- &.is-card {
778
- cursor: pointer;
779
- transition: all 0.2s ease-in-out;
780
-
781
- &:hover {
782
- box-shadow: var(--ms-card-shadow-hover, 0 8px 24px rgba(0, 0, 0, 0.08));
783
- border-color: var(--cc-sf-input-focus-border, #3B82F6);
784
- }
785
-
786
- .card-view {
787
- .card-content {
788
- .card-title {
789
- white-space: nowrap;
790
- text-overflow: ellipsis;
791
- }
792
-
793
- .card-desc {
794
- line-height: 1.4;
795
- display: -webkit-box;
796
- -webkit-line-clamp: 1;
797
- line-clamp: 1;
798
- -webkit-box-orient: vertical;
799
- }
800
- }
801
-
802
- &.is-expanded {
803
- .card-content .card-desc {
804
- -webkit-line-clamp: unset;
805
- line-clamp: unset;
806
- }
807
- }
808
-
809
- .card-actions {
810
- mat-icon {
811
- font-size: 22px;
812
- width: 22px;
813
- height: 22px;
814
- color: var(--cc-sf-hint-color, #9CA3AF);
815
- transition: color 0.2s;
816
-
817
- &.icon-delete:hover {
818
- color: var(--cc-sf-error-border, #DC2626);
819
- }
820
-
821
- &.icon-edit:hover {
822
- color: var(--cc-sf-input-focus-border, #3B82F6);
823
- }
824
-
825
- &.icon-expand {
826
- color: var(--cc-sf-input-disabled-border, #E5E7EB);
827
- }
828
- }
829
- }
830
- }
831
- }
832
- }
833
- }
834
- }
835
-
836
- .btn-remove {
837
- transition: var(--cc-sf-btn-transition, all 0.2s ease);
838
-
839
- mat-icon {
840
- font-size: 1rem;
841
- width: 1rem;
842
- height: 1rem;
843
- line-height: 1rem;
844
- }
845
-
846
- &:hover {
847
- background: var(--cc-sf-btn-remove-hover-bg, #FED7D7);
848
- }
849
- }
850
-
851
- .btn-add-group {
852
- font-weight: var(--cc-sf-btn-font-weight, 600);
853
- transition: var(--cc-sf-btn-transition, all 0.2s ease);
854
-
855
- mat-icon {
856
- font-size: 1.1rem;
857
- width: 1.1rem;
858
- height: 1.1rem;
859
- line-height: 1.1rem;
860
- }
861
-
862
- &:hover {
863
- background: var(--cc-sf-btn-add-hover-bg, #EFF6FF);
864
- border-color: var(--cc-sf-btn-add-hover-border, #BFDBFE);
865
- }
866
- }
867
-
868
- .upload-drop-zone {
869
- background-color: var(--cc-sf-dropzone-bg, #F8FAFC);
870
- border: var(--cc-sf-dropzone-border, 1.5px dashed #CBD5E1);
871
- border-radius: var(--cc-sf-dropzone-radius, 12px);
872
- transition: background-color 0.2s ease, border-color 0.2s ease;
873
-
874
- &:hover {
875
- background-color: var(--cc-sf-dropzone-hover-bg, #EFF6FF);
876
- border-color: var(--cc-sf-dropzone-hover-border, #93C5FD);
877
- }
878
-
879
- &.drag-over {
880
- background-color: var(--cc-sf-dropzone-hover-bg, #EFF6FF);
881
- border-color: var(--cc-sf-dropzone-over-border, #3B82F6);
882
- box-shadow: var(--cc-sf-dropzone-over-shadow, 0 0 0 4px rgba(59, 130, 246, 0.12));
883
- }
884
-
885
- &.is-invalid {
886
- border-color: var(--cc-sf-error-border, #DC2626);
887
- background-color: var(--cc-sf-error-bg, #FEF2F2);
888
- }
889
- }
890
-
891
- .upload-icon-wrap {
892
- .dropzone-icon-pill {
893
- width: 52px;
894
- height: 52px;
895
- border-radius: 50%;
896
- background: var(--cc-sf-dropzone-icon-bg, rgba(59, 130, 246, 0.10));
897
- }
898
-
899
- mat-icon.upload-cloud-icon {
900
- font-size: 28px;
901
- width: 28px;
902
- height: 28px;
903
- line-height: 28px;
904
- color: var(--cc-sf-accent-color, #3B82F6);
905
- }
906
- }
907
-
908
- .upload-main-text {
909
- color: var(--cc-sf-label-color, #1E293B);
910
- }
911
-
912
- .upload-sub-text {
913
- color: var(--cc-sf-hint-color, #64748B);
914
- }
915
-
916
- .upload-link {
917
- color: var(--cc-sf-dropzone-link-color, #3B82F6);
918
- font-weight: 500;
919
- }
920
-
921
- .upload-formats {
922
- color: var(--cc-sf-dropzone-link-color, #3B82F6);
923
- }
924
-
925
- .upload-size-badge {
926
- display: inline-block;
927
- padding: 2px 8px;
928
- border-radius: 20px;
929
- background: var(--cc-sf-input-disabled-bg, #F3F4F6);
930
- color: var(--cc-sf-hint-color, #6B7280);
931
- font-weight: 500;
932
- }
933
-
934
- .uploaded-item {
935
- background: var(--cc-sf-uploaded-item-bg, #ffffff);
936
- border: var(--cc-sf-uploaded-item-border, 1px solid #E2E8F0);
937
- border-radius: var(--cc-sf-uploaded-item-radius, 8px);
938
- transition: box-shadow 0.15s ease;
939
-
940
- &:hover {
941
- box-shadow: 0 2px 6px rgba(0, 0, 0, 0.06);
942
- }
943
-
944
- mat-icon.file-type-icon {
945
- font-size: 20px;
946
- width: 20px;
947
- height: 20px;
948
- line-height: 20px;
949
- flex-shrink: 0;
950
- color: var(--cc-sf-hint-color, #64748B);
951
- }
952
-
953
- .file-thumb {
954
- width: 36px;
955
- height: 36px;
956
- object-fit: cover;
957
- flex-shrink: 0;
958
- }
959
-
960
- .file-info {
961
- min-width: 0;
962
- gap: 2px;
963
-
964
- .file-name {
965
- white-space: nowrap;
966
- text-overflow: ellipsis;
967
- }
968
- }
969
-
970
- .file-remove-btn {
971
- flex-shrink: 0;
972
- width: 32px;
973
- height: 32px;
974
- background: none;
975
- border: none;
976
- cursor: pointer;
977
- color: var(--cc-sf-uploaded-remove-color, #94A3B8);
978
- padding: 0;
979
- display: flex;
980
- align-items: center;
981
- justify-content: center;
982
- transition: color 0.15s ease, background 0.15s ease;
983
-
984
- mat-icon {
985
- font-size: 1.1rem;
986
- width: 1.1rem;
987
- height: 1.1rem;
988
- line-height: 1.1rem;
989
- }
990
-
991
- &:hover:not(:disabled) {
992
- color: var(--cc-sf-uploaded-remove-hover-color, #DC2626);
993
- background: var(--cc-sf-uploaded-remove-hover-bg, #FEF2F2);
994
- }
995
-
996
- &:disabled {
997
- opacity: 0.4;
998
- cursor: not-allowed;
999
- }
1000
- }
1001
-
1002
- &.uploading {
1003
- background: var(--cc-sf-uploaded-uploading-bg, #F8FAFC);
1004
- border-color: var(--cc-sf-uploaded-uploading-border, #CBD5E1);
1005
- opacity: 0.85;
1006
- }
1007
- }
1008
-
1009
- .upload-spinner {
1010
- width: 20px;
1011
- height: 20px;
1012
- flex-shrink: 0;
1013
- border-top-color: var(--cc-sf-accent-color, #3B82F6);
1014
- animation: cc-spin 0.7s linear infinite;
1015
- }
1016
-
1017
- @keyframes cc-spin {
1018
- to {
1019
- transform: rotate(360deg);
1020
- }
1021
- }
1022
-
1023
- .uploading-label {
1024
- font-style: italic;
1025
- }
1026
-
1027
- .input-group {
1028
- align-items: stretch;
1029
-
1030
- .field-input {
1031
- flex: 1;
1032
- width: auto; // Allow flex to control width
1033
-
1034
- .input-prefix+& {
1035
- border-top-left-radius: 0;
1036
- border-bottom-left-radius: 0;
1037
- }
1038
- }
1039
-
1040
- .field-input:has(+ .input-suffix) {
1041
- border-top-right-radius: 0;
1042
- border-bottom-right-radius: 0;
1043
- }
1044
-
1045
- .field-input.has-icon-right {
1046
- padding-right: 3rem;
1047
- }
1048
-
1049
- &.readonly {
1050
- .field-input {
1051
- cursor: default;
1052
- }
1053
- }
1054
- }
1055
-
1056
- .input-prefix,
1057
- .input-suffix {
1058
- display: flex !important;
1059
- align-items: center;
1060
- white-space: nowrap;
1061
- padding: 0 14px;
1062
- background-color: var(--cc-sf-input-disabled-bg);
1063
- border: 1px solid var(--cc-sf-input-border);
1064
- font-size: 0.875rem;
1065
- color: var(--cc-sf-hint-color);
1066
- user-select: none;
1067
- }
1068
-
1069
- .input-prefix {
1070
- border-right: none;
1071
- border-top-left-radius: var(--cc-sf-input-radius, 8px);
1072
- border-bottom-left-radius: var(--cc-sf-input-radius, 8px);
1073
- }
1074
-
1075
- .input-suffix {
1076
- border-left: none;
1077
- border-top-right-radius: var(--cc-sf-input-radius, 8px);
1078
- border-bottom-right-radius: var(--cc-sf-input-radius, 8px);
1079
- }
1080
-
1081
- .readonly-icons {
1082
- right: 0.875rem;
1083
- top: 50%;
1084
- transform: translateY(-50%);
1085
-
1086
- mat-icon.lock-icon {
1087
- font-size: 1rem;
1088
- width: 1rem;
1089
- height: 1rem;
1090
- line-height: 1rem;
1091
- opacity: 0.5;
1092
- color: var(--cc-sf-hint-color, #6B7280);
1093
- }
1094
- }
1095
-
1096
- .suffix-action-icons {
1097
- right: 0.875rem;
1098
- top: 50%;
1099
- transform: translateY(-50%);
1100
- z-index: 1;
1101
- pointer-events: auto;
1102
-
1103
- mat-icon.suffix-action-icon {
1104
- font-size: 1.125rem;
1105
- width: 1.125rem;
1106
- height: 1.125rem;
1107
- line-height: 1.125rem;
1108
- color: var(--cc-sf-hint-color, #6B7280);
1109
- cursor: pointer;
1110
- transition: color 0.2s ease, transform 0.15s ease;
1111
-
1112
- &:hover {
1113
- color: var(--cc-sf-text-color, #202124);
1114
- transform: scale(1.15);
1115
- }
1116
- }
1117
- }
1118
-
1119
- .date-icon-wrapper {
1120
- right: 0.5rem;
1121
- top: 50%;
1122
- transform: translateY(-50%);
1123
- pointer-events: auto;
1124
-
1125
- .mat-icon-button {
1126
- width: 32px;
1127
- height: 32px;
1128
- line-height: 32px;
1129
- }
1130
- }
1131
-
1132
- .subfields-group-wrapper {
1133
- .subfields-row {
1134
- transition: all 0.2s ease;
1135
-
1136
- &.is-invalid {
1137
- .subfield-item ::ng-deep .field-input {
1138
- border-color: var(--cc-sf-error-border, #DC2626);
1139
- background-color: var(--cc-sf-error-bg, #FEF2F2);
1140
- }
1141
- }
1142
-
1143
- .subfield-item {
1144
- min-width: 0;
1145
-
1146
- ::ng-deep .field-label {
1147
- font-size: 0.75rem !important;
1148
- margin-bottom: 4px !important;
1149
- font-weight: 500 !important;
1150
- color: var(--cc-sf-hint-color, #6B7280) !important;
1151
- }
1152
- }
1153
-
1154
- .subfield-separator {
1155
- font-weight: bold;
1156
- }
1157
- }
1158
- }
1159
-
1160
- .autocomplete-wrapper {
1161
- .ac-input {
1162
- padding-left: 40px !important;
1163
- }
1164
-
1165
- .ac-search-icon {
1166
- left: 0.75rem;
1167
- width: 1.1rem;
1168
- height: 1.1rem;
1169
- line-height: 1.1rem;
1170
- z-index: 1;
1171
- transition: color var(--cc-sf-input-transition, 0.2s ease);
1172
- }
1173
-
1174
- .ac-clear-btn {
1175
- right: 0.6rem;
1176
- transition: color 0.15s ease, background 0.15s ease;
1177
-
1178
- mat-icon {
1179
- font-size: 1rem;
1180
- width: 1rem;
1181
- height: 1rem;
1182
- line-height: 1rem;
1183
- }
1184
-
1185
- &:hover {
1186
- color: var(--cc-sf-label-color, #374151);
1187
- background: var(--cc-sf-input-disabled-bg, #F3F4F6);
1188
- }
1189
-
1190
- &:focus {
1191
- outline: none;
1192
- }
1193
- }
1194
-
1195
- &:focus-within .ac-search-icon {
1196
- color: var(--cc-sf-accent-color, #3B82F6);
1197
- }
1198
-
1199
- &.is-invalid .ac-input {
1200
- border-color: var(--cc-sf-error-border) !important;
1201
- background-color: var(--cc-sf-error-bg);
1202
- }
1203
-
1204
- &.readonly .ac-input {
1205
- background-color: var(--cc-sf-input-disabled-bg);
1206
- color: var(--cc-sf-input-disabled-color, #6B7280);
1207
- cursor: not-allowed;
1208
- border-color: var(--cc-sf-input-disabled-border) !important;
1209
- }
1210
- }
1211
-
1212
- .ac-no-results {
1213
- font-style: italic;
1214
- }
1215
-
1216
- // ── mat-autocomplete panel global fix ───────────────────────────────────────
1217
- // The CDK overlay is appended to <body> so it is outside component scope.
1218
- // ::ng-deep is required to pierce view encapsulation for the panel.
1219
- ::ng-deep {
1220
-
1221
- .mat-mdc-autocomplete-panel,
1222
- .mat-autocomplete-panel {
1223
- background: var(--cc-sf-input-bg, #ffffff) !important;
1224
- border-radius: var(--cc-sf-input-radius, 9px) !important;
1225
- border: 1px solid var(--cc-sf-input-disabled-border, #E5E7EB) !important;
1226
- box-shadow: 0 8px 24px rgba(0, 0, 0, 0.10), 0 2px 6px rgba(0, 0, 0, 0.06) !important;
1227
- padding: 4px 0 !important;
1228
- min-width: 200px;
1229
-
1230
- mat-option,
1231
- .mat-mdc-option,
1232
- .mat-option {
1233
- background: var(--cc-sf-input-bg, #ffffff) !important;
1234
- color: var(--cc-sf-label-color, #111827) !important;
1235
- font-size: 0.875rem !important;
1236
- padding: 10px 16px !important;
1237
- min-height: 40px !important;
1238
- line-height: 1.4 !important;
1239
- // Column direction so displayMeta fields stack below the label
1240
- display: flex !important;
1241
- flex-direction: column !important;
1242
- align-items: flex-start !important;
1243
- transition: background var(--cc-sf-input-transition, 0.2s ease) !important;
1244
-
1245
- &:hover:not(.mat-option-disabled):not([disabled]) {
1246
- background: var(--cc-sf-input-disabled-bg, #F3F4F6) !important;
1247
- }
1248
-
1249
- &.mat-selected:not(.mat-option-multiple),
1250
- &.mdc-list-item--selected {
1251
- background: var(--cc-sf-dropzone-hover-bg, #EFF6FF) !important;
1252
- color: var(--cc-sf-selected-color, #6366F1) !important;
1253
- font-weight: 600 !important;
1254
- }
1255
-
1256
- // ── Dynamic display fields rendered below the option label ────────────
1257
- .ac-option-label {
1258
- font-weight: 500;
1259
- color: var(--cc-sf-label-color, #111827);
1260
- font-size: 0.875rem;
1261
- display: block;
1262
- }
1263
-
1264
- .ac-display-fields {
1265
- align-items: center;
1266
- line-height: 1;
1267
- }
1268
-
1269
- .ac-df-item {
1270
- display: inline-flex;
1271
- align-items: center;
1272
- font-size: 0.72rem;
1273
- color: var(--cc-sf-hint-color, #6B7280);
1274
- gap: 3px;
1275
- }
1276
-
1277
- // Chip style: used for email and phone entries
1278
- .ac-df-chip {
1279
- background: var(--cc-sf-input-disabled-bg, #F3F4F6);
1280
- border-radius: 4px;
1281
- padding: 2px 6px;
1282
- }
1283
-
1284
- // Plain text style
1285
- .ac-df-text {
1286
- color: var(--cc-sf-hint-color, #6B7280);
1287
- }
1288
-
1289
- // Avatar image
1290
- .ac-df-image {
1291
- // No background chip for images
1292
- }
1293
-
1294
- .ac-df-avatar {
1295
- width: 24px;
1296
- height: 24px;
1297
- border-radius: 50%;
1298
- object-fit: cover;
1299
- border: 1px solid var(--cc-sf-input-border, #D1D5DB);
1300
- vertical-align: middle;
1301
- }
1302
-
1303
- .ac-df-label {
1304
- font-weight: 600;
1305
- color: var(--cc-sf-hint-color, #9CA3AF);
1306
- margin-right: 2px;
1307
- }
1308
-
1309
- .ac-df-icon {
1310
- font-size: 11px;
1311
- width: 11px;
1312
- height: 11px;
1313
- line-height: 11px;
1314
- color: var(--cc-sf-hint-color, #9CA3AF);
1315
- flex-shrink: 0;
1316
- }
1317
- }
1318
- }
1319
- }
1320
-
1321
- .mu-layout {
1322
- grid-template-columns: 1fr 1fr;
1323
- gap: 32px;
1324
-
1325
- @media (max-width: 768px) {
1326
- grid-template-columns: 1fr;
1327
- }
1328
- }
1329
-
1330
- .mu-title {
1331
- font-weight: 700;
1332
- line-height: 1.3;
1333
- }
1334
-
1335
- .mu-badge {
1336
- white-space: nowrap;
1337
- flex-shrink: 0;
1338
- }
1339
-
1340
- .mu-description {
1341
- line-height: 1.6;
1342
- }
1343
-
1344
- .mu-feature-item {
1345
- .mu-check {
1346
- width: 16px;
1347
- height: 16px;
1348
- line-height: 16px;
1349
- flex-shrink: 0;
1350
- }
1351
- }
1352
-
1353
- .mu-right {
1354
- min-height: 260px;
1355
- }
1356
-
1357
- .mu-right-empty {
1358
- min-height: 250px;
1359
- max-width: 400px;
1360
- box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05);
1361
- transition: box-shadow 0.2s ease;
1362
-
1363
- &:hover {
1364
- cursor: pointer;
1365
- box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1);
1366
- }
1367
-
1368
- .mu-right-empty-icon {
1369
- width: 52px;
1370
- height: 52px;
1371
- line-height: 52px;
1372
- opacity: 0.3;
1373
- }
1374
-
1375
- p {
1376
- margin: 0;
1377
- font-size: 0.85rem;
1378
- }
1379
- }
1380
-
1381
- .media-add-container {
1382
- display: inline-block;
1383
-
1384
- ::ng-deep button {
1385
- display: flex;
1386
- align-items: center;
1387
- gap: 6px;
1388
-
1389
- .menu-chevron {
1390
- width: 18px;
1391
- height: 18px;
1392
- line-height: 18px;
1393
- transition: transform 0.2s ease;
1394
- }
1395
- }
1396
- }
1397
-
1398
- .media-dropdown {
1399
- top: calc(100% + 6px);
1400
- left: 0;
1401
- z-index: 200;
1402
- min-width: 240px;
1403
- box-shadow: var(--mu-dropdown-shadow, 0 8px 32px rgba(0, 0, 0, 0.12));
1404
- animation: mu-fade-in 0.15s ease;
1405
- }
1406
-
1407
- @keyframes mu-fade-in {
1408
- from {
1409
- opacity: 0;
1410
- transform: translateY(-6px);
1411
- }
1412
-
1413
- to {
1414
- opacity: 1;
1415
- transform: translateY(0);
1416
- }
1417
- }
1418
-
1419
- .media-dropdown-item {
1420
- transition: background 0.15s ease;
1421
-
1422
- &:last-child {
1423
- border-bottom: none;
1424
- }
1425
-
1426
- &:hover {
1427
- background: var(--cc-sf-dropzone-hover-bg, #F0F9FF);
1428
- }
1429
- }
1430
-
1431
- .media-drop-icon {
1432
- width: 36px;
1433
- height: 36px;
1434
- flex-shrink: 0;
1435
-
1436
- mat-icon {
1437
- font-size: 20px;
1438
- width: 20px;
1439
- height: 20px;
1440
- line-height: 20px;
1441
- }
1442
-
1443
- &--video {
1444
- background: var(--mu-icon-video-bg, #FFF0F0);
1445
- color: var(--mu-icon-video-color, #EF4444);
1446
- }
1447
-
1448
- &--device {
1449
- background: var(--mu-icon-device-bg, #EFF6FF);
1450
- color: var(--mu-icon-device-color, #3B82F6);
1451
- }
1452
-
1453
- &--library {
1454
- background: var(--mu-icon-library-bg, #F0FDF4);
1455
- color: var(--mu-icon-library-color, #22C55E);
1456
- }
1457
- }
1458
-
1459
- .media-drop-text {
1460
- gap: 2px;
1461
- }
1462
-
1463
- .youtube-input-panel {
1464
- animation: mu-fade-in 0.18s ease;
1465
- }
1466
-
1467
- .youtube-panel-label {
1468
- mat-icon {
1469
- font-size: 18px;
1470
- width: 18px;
1471
- height: 18px;
1472
- line-height: 18px;
1473
- color: var(--mu-icon-video-color, #EF4444);
1474
- }
1475
- }
1476
-
1477
- .youtube-input-row {
1478
- align-items: stretch;
1479
- }
1480
-
1481
- .media-menu-backdrop {
1482
- position: fixed;
1483
- inset: 0;
1484
- z-index: 100;
1485
- }
1486
-
1487
- .media-upload-status {
1488
- animation: mu-fade-in 0.2s ease;
1489
-
1490
- .status-icon {
1491
- width: 18px;
1492
- height: 18px;
1493
- line-height: 18px;
1494
- }
1495
- }
1496
-
1497
- .media-carousel-main {
1498
- max-width: 400px;
1499
- height: var(--mu-carousel-height, 250px);
1500
- }
1501
-
1502
- .carousel-viewer {
1503
- inset: 0;
1504
-
1505
- .carousel-image {
1506
- object-fit: cover;
1507
- }
1508
-
1509
- .carousel-spinner {
1510
- width: 36px;
1511
- height: 36px;
1512
- border-top-color: var(--cc-sf-accent-color, #3B82F6);
1513
- animation: cc-spin 0.7s linear infinite;
1514
- }
1515
- }
1516
-
1517
- .carousel-nav {
1518
- top: 50%;
1519
- transform: translateY(-50%);
1520
- z-index: 10;
1521
- width: 40px;
1522
- height: 40px;
1523
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
1524
- transition: background 0.2s ease, opacity 0.2s ease;
1525
- backdrop-filter: blur(4px);
1526
-
1527
- mat-icon {
1528
- font-size: 22px;
1529
- width: 22px;
1530
- height: 22px;
1531
- line-height: 22px;
1532
- color: #1E293B;
1533
- }
1534
-
1535
- &:hover:not(:disabled) {
1536
- background: rgba(255, 255, 255, 1);
1537
- }
1538
-
1539
- &:disabled {
1540
- opacity: 0.3;
1541
- cursor: not-allowed;
1542
- }
1543
-
1544
- &--prev {
1545
- left: 12px;
1546
- }
1547
-
1548
- &--next {
1549
- right: 12px;
1550
- }
1551
- }
1552
-
1553
- .carousel-remove-btn {
1554
- top: 10px;
1555
- right: 10px;
1556
- z-index: 10;
1557
- width: 32px;
1558
- height: 32px;
1559
- transition: background 0.2s ease;
1560
-
1561
- mat-icon {
1562
- font-size: 18px;
1563
- width: 18px;
1564
- height: 18px;
1565
- line-height: 18px;
1566
- color: #ffffff;
1567
- }
1568
-
1569
- &:hover:not(:disabled) {
1570
- background: rgba(220, 38, 38, 0.85);
1571
- }
1572
-
1573
- &:disabled {
1574
- opacity: 0.4;
1575
- cursor: not-allowed;
1576
- }
1577
- }
1578
-
1579
- .carousel-dots {
1580
- bottom: 10px;
1581
- left: 50%;
1582
- transform: translateX(-50%);
1583
- z-index: 10;
1584
- }
1585
-
1586
- .carousel-dot {
1587
- width: 8px;
1588
- height: 8px;
1589
- transition: background 0.2s ease, transform 0.2s ease;
1590
-
1591
- &.active {
1592
- background: #ffffff;
1593
- transform: scale(1.3);
1594
- }
1595
- }
1596
-
1597
- .media-thumbnail-strip {
1598
- max-width: 400px;
1599
- overflow-x: auto;
1600
-
1601
- &::-webkit-scrollbar {
1602
- height: 4px;
1603
- }
1604
-
1605
- &::-webkit-scrollbar-thumb {
1606
- background: var(--cc-sf-input-disabled-border, #D1D5DB);
1607
- border-radius: 2px;
1608
- }
1609
- }
1610
-
1611
- .media-thumb {
1612
- flex-shrink: 0;
1613
- width: 72px;
1614
- height: 52px;
1615
- transition: border-color 0.2s ease, transform 0.15s ease;
1616
-
1617
- &.active {
1618
- border-color: var(--mu-thumb-active-border, var(--cc-sf-accent-color, #3B82F6));
1619
- transform: scale(1.04);
1620
- }
1621
-
1622
- &:hover:not(.active) {
1623
- border-color: var(--cc-sf-input-hover-border, #9CA3AF);
1624
- }
1625
-
1626
- .thumb-img {
1627
- object-fit: cover;
1628
- }
1629
-
1630
- .thumb-yt-placeholder {
1631
- mat-icon {
1632
- font-size: 28px;
1633
- width: 28px;
1634
- height: 28px;
1635
- line-height: 28px;
1636
- }
1637
- }
1638
-
1639
- .thumb-uploading {
1640
- .thumb-spinner {
1641
- width: 20px;
1642
- height: 20px;
1643
- border-top-color: var(--cc-sf-accent-color, #3B82F6);
1644
- animation: cc-spin 0.7s linear infinite;
1645
- }
1646
- }
1647
- }
1648
-
1649
- // ── Portal Modal Styles (rendered in document.body) ───────────────
1650
-
1651
- .media-library-portal-host {
1652
- position: fixed;
1653
- inset: 0;
1654
- z-index: 9999;
1655
- display: flex;
1656
- align-items: center;
1657
- justify-content: center;
1658
- visibility: hidden;
1659
- opacity: 0;
1660
- pointer-events: none;
1661
- transition: opacity 0.2s ease, visibility 0.2s ease;
1662
-
1663
- &.is-open {
1664
- visibility: visible;
1665
- opacity: 1;
1666
- pointer-events: auto;
1667
-
1668
- .media-library-modal {
1669
- transform: scale(1) translateY(0);
1670
- }
1671
- }
1672
- }
1673
-
1674
- .media-library-overlay {
1675
- position: absolute;
1676
- inset: 0;
1677
- background: rgba(0, 0, 0, 0.5);
1678
- backdrop-filter: blur(2px);
1679
- }
1680
-
1681
- .media-library-modal {
1682
- position: relative;
1683
- z-index: 10000;
1684
- width: 90vw;
1685
- max-width: 900px;
1686
- max-height: 90vh;
1687
- background: #ffffff;
1688
- border-radius: 16px;
1689
- box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
1690
- transform: scale(0.95) translateY(10px);
1691
- transition: transform 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275);
1692
- }
1693
-
1694
-
1695
- .library-modal-header {
1696
- flex-shrink: 0;
1697
- }
1698
-
1699
- .library-modal-title {
1700
- font-weight: 700;
1701
- }
1702
-
1703
- .library-modal-subtitle {
1704
- line-height: 1.5;
1705
- max-width: 600px;
1706
- }
1707
-
1708
- .library-close-btn {
1709
- width: 32px;
1710
- height: 32px;
1711
- transition: background 0.15s ease, color 0.15s ease;
1712
-
1713
- mat-icon {
1714
- font-size: 20px;
1715
- width: 20px;
1716
- height: 20px;
1717
- line-height: 20px;
1718
- }
1719
-
1720
- &:hover {
1721
- background: var(--cc-sf-input-disabled-bg, #F3F4F6);
1722
- color: var(--cc-sf-label-color, #374151);
1723
- }
1724
- }
1725
-
1726
- .library-loading,
1727
- .library-empty {
1728
- mat-icon {
1729
- font-size: 40px;
1730
- width: 40px;
1731
- height: 40px;
1732
- line-height: 40px;
1733
- opacity: 0.5;
1734
- }
1735
- }
1736
-
1737
- .lib-spinner {
1738
- width: 36px;
1739
- height: 36px;
1740
- border-top-color: var(--cc-sf-accent-color, #3B82F6);
1741
- animation: cc-spin 0.7s linear infinite;
1742
- }
1743
-
1744
- .library-error {
1745
- flex-shrink: 0;
1746
-
1747
- mat-icon {
1748
- font-size: 20px;
1749
- width: 20px;
1750
- height: 20px;
1751
- line-height: 20px;
1752
- }
1753
- }
1754
-
1755
- .library-grid {
1756
- grid-template-columns: repeat(5, 1fr);
1757
- max-height: 50vh;
1758
- overflow-y: auto;
1759
-
1760
- &::-webkit-scrollbar {
1761
- width: 8px;
1762
- }
1763
-
1764
- &::-webkit-scrollbar-track {
1765
- background: #F1F1F1;
1766
- }
1767
-
1768
- &::-webkit-scrollbar-thumb {
1769
- background: #C1C1C1;
1770
- border-radius: 10px;
1771
- border: 2px solid #F1F1F1;
1772
- }
1773
- }
1774
-
1775
- .library-grid-item {
1776
- aspect-ratio: 1 / 1;
1777
- transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
1778
- box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
1779
-
1780
- &:hover {
1781
- transform: translateY(-4px) scale(1.02);
1782
- box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
1783
- }
1784
-
1785
- &.selected {
1786
- border-color: var(--cc-sf-accent-color, #3B82F6);
1787
-
1788
- .library-grid-img {
1789
- opacity: 0.7;
1790
- }
1791
- }
1792
-
1793
- &:hover .library-overlay-hover {
1794
- opacity: 1;
1795
- }
1796
- }
1797
-
1798
- .library-grid-img {
1799
- object-fit: cover;
1800
- }
1801
-
1802
- .library-overlay-hover {
1803
- inset: 0;
1804
- opacity: 0;
1805
- transition: opacity 0.15s ease;
1806
- }
1807
-
1808
- .library-check {
1809
- top: 6px;
1810
- right: 6px;
1811
- width: 22px;
1812
- height: 22px;
1813
- box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15);
1814
-
1815
- mat-icon {
1816
- font-size: 18px;
1817
- width: 18px;
1818
- height: 18px;
1819
- line-height: 18px;
1820
- }
1821
- }
1822
-
1823
- .library-modal-footer {
1824
- flex-shrink: 0;
1825
-
1826
- .library-footer-actions {
1827
- ::ng-deep .cc-btn-primary {
1828
- background-color: var(--cc-sf-accent-color, #3B82F6) !important;
1829
- border-color: var(--cc-sf-accent-color, #3B82F6) !important;
1830
- color: #ffffff !important;
1831
- font-weight: 600;
1832
- padding-left: 32px;
1833
- padding-right: 32px;
1834
-
1835
- &:hover {
1836
- background-color: var(--cc-sf-btn-primary-hover-bg, #2563EB) !important;
1837
- }
1838
-
1839
- &:disabled {
1840
- background-color: #93C5FD !important;
1841
- cursor: not-allowed;
1842
- }
1843
- }
1844
-
1845
- ::ng-deep .cc-btn-outline {
1846
- font-weight: 600;
1847
- padding-left: 24px;
1848
- padding-right: 24px;
1849
- border-color: #D1D5DB;
1850
- color: #374151;
1851
-
1852
- &:hover {
1853
- background-color: #F9FAFB;
1854
- }
1855
- }
1856
- }
1857
- }
1858
-
1859
- .location-subtitle {
1860
- line-height: 1.5;
1861
- }
1862
-
1863
- .loc-tab-btn {
1864
- ::ng-deep button {
1865
- width: 100%;
1866
-
1867
- &:not(.cc-btn-warning) {
1868
- background-color: var(--cc-sf-input-bg, #ffffff) !important;
1869
- color: var(--cc-sf-label-color, #000000) !important;
1870
- border: 1px solid var(--cc-sf-input-disabled-border, #E5E7EB);
1871
-
1872
- &:hover {
1873
- background-color: var(--cc-sf-input-disabled-bg, #F3F4F6) !important;
1874
- }
1875
- }
1876
- }
1877
- }
1878
-
1879
- .loc-venue-item {
1880
- transition: box-shadow 0.15s ease, border-color 0.15s ease;
1881
-
1882
- &:hover {
1883
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
1884
- border-color: var(--cc-sf-input-hover-border, #9CA3AF);
1885
- }
1886
- }
1887
-
1888
- .loc-venue-search-icon {
1889
- width: 18px;
1890
- height: 18px;
1891
- line-height: 18px;
1892
- flex-shrink: 0;
1893
- }
1894
-
1895
- .loc-venue-text {
1896
- white-space: nowrap;
1897
- text-overflow: ellipsis;
1898
- }
1899
-
1900
- .loc-action-btn {
1901
- transition: background 0.15s ease, color 0.15s ease;
1902
- flex-shrink: 0;
1903
-
1904
- mat-icon {
1905
- font-size: 18px;
1906
- width: 18px;
1907
- height: 18px;
1908
- line-height: 18px;
1909
- }
1910
-
1911
- &.loc-delete-btn {
1912
- color: var(--loc-delete-color, #E53E3E);
1913
-
1914
- &:hover {
1915
- background: var(--cc-sf-error-bg, #FEF2F2);
1916
- }
1917
- }
1918
-
1919
- &.loc-edit-btn {
1920
- color: var(--cc-sf-hint-color, #9CA3AF);
1921
-
1922
- &:hover {
1923
- color: var(--cc-sf-input-focus-border, #3B82F6);
1924
- background: var(--cc-sf-dropzone-hover-bg, #EFF6FF);
1925
- }
1926
- }
1927
- }
1928
-
1929
- .loc-search-icon {
1930
- left: 0.75rem;
1931
- width: 1.1rem;
1932
- height: 1.1rem;
1933
- line-height: 1.1rem;
1934
- z-index: 1;
1935
- }
1936
-
1937
- .loc-suggestions-panel {
1938
- top: calc(100% + 4px);
1939
- left: 0;
1940
- right: 0;
1941
- z-index: 300;
1942
- box-shadow: 0 8px 24px rgba(0, 0, 0, 0.10);
1943
- animation: mu-fade-in 0.15s ease;
1944
- max-height: 260px;
1945
- overflow-y: auto;
1946
- }
1947
-
1948
- .loc-suggestion-item {
1949
- transition: background 0.12s ease;
1950
-
1951
- &:hover,
1952
- &:focus {
1953
- background: var(--loc-suggestion-hover-bg, #F0F9FF);
1954
- }
1955
-
1956
- &:not(:last-child) {
1957
- border-bottom: 1px solid var(--cc-sf-input-disabled-border, #F3F4F6);
1958
- }
1959
- }
1960
-
1961
- .loc-suggestion-icon {
1962
- width: 18px;
1963
- height: 18px;
1964
- line-height: 18px;
1965
- flex-shrink: 0;
1966
- }
1967
-
1968
- .loc-suggestion-text {
1969
- white-space: nowrap;
1970
- text-overflow: ellipsis;
1971
- }
1972
-
1973
- .loc-add-btn {
1974
- transition: opacity 0.15s ease;
1975
-
1976
- mat-icon {
1977
- font-size: 20px;
1978
- width: 20px;
1979
- height: 20px;
1980
- line-height: 20px;
1981
- }
1982
-
1983
- &:hover {
1984
- opacity: 0.8;
1985
- }
1986
- }
1987
-
1988
- .loc-map-container {
1989
- box-shadow: 0 2px 10px rgba(0, 0, 0, 0.06);
1990
- }
1991
-
1992
- .loc-tba-panel {
1993
- min-height: 120px;
1994
- }
1995
-
1996
- .loc-tba-icon {
1997
- width: 40px;
1998
- height: 40px;
1999
- line-height: 40px;
2000
- opacity: 0.6;
2001
- }
2002
-
2003
- .loc-tba-text {
2004
- line-height: 1.6;
2005
- max-width: 360px;
2006
- }
2007
-
2008
- .radio-label {
2009
- display: flex !important;
2010
-
2011
- .option-content {
2012
- padding-left: 10px;
2013
- }
2014
- }
2015
-
2016
- /* ==========================================================================
2017
- LINK_LIST Field Styling
2018
- ========================================================================== */
2019
- .link-list-container {
2020
- border: none !important;
2021
- background-color: transparent !important;
2022
- padding: 0 !important;
2023
- box-shadow: none !important;
2024
- overflow: visible !important;
2025
- }
2026
-
2027
- .link-items-list {
2028
- list-style: none;
2029
-
2030
- @media (max-width: 640px) {
2031
- grid-template-columns: 1fr !important;
2032
-
2033
- .link-list-item {
2034
- grid-column: span 12 !important;
2035
- }
2036
- }
2037
- }
2038
-
2039
- .link-list-item {
2040
- display: flex;
2041
- align-items: center;
2042
- justify-content: space-between;
2043
- padding: 10px 16px;
2044
- background-color: var(--cc-sf-link-item-bg, #f9fafb) !important;
2045
- border: 1px solid var(--cc-sf-link-item-border, #E5E7EB) !important;
2046
- border-radius: var(--cc-sf-input-radius, 9px) !important;
2047
- gap: 12px;
2048
- min-height: 48px;
2049
-
2050
- .link-url-text {
2051
- font-size: 0.875rem;
2052
- color: var(--cc-sf-link-item-text, #111827);
2053
- word-break: break-all;
2054
- }
2055
- }
2056
-
2057
- .link-list-item .action-btn {
2058
- border: none;
2059
- background: transparent;
2060
- cursor: pointer;
2061
- display: inline-flex;
2062
- align-items: center;
2063
- justify-content: center;
2064
- width: 34px;
2065
- height: 34px;
2066
- padding: 0;
2067
- border-radius: 6px;
2068
- transition: background 0.15s ease, color 0.15s ease;
2069
-
2070
- mat-icon {
2071
- font-size: 22px;
2072
- width: 22px;
2073
- height: 22px;
2074
- line-height: 22px;
2075
- display: flex;
2076
- align-items: center;
2077
- justify-content: center;
2078
- }
2079
-
2080
- &.edit-btn {
2081
- color: var(--cc-sf-link-edit-color, #4b5563);
2082
- &:hover {
2083
- color: var(--cc-sf-accent-color, #6366F1);
2084
- background-color: #F3F4F6;
2085
- }
2086
- }
2087
-
2088
- &.delete-btn {
2089
- color: var(--cc-sf-link-delete-color, #ef4444);
2090
- &:hover {
2091
- background-color: var(--cc-sf-error-bg, #FFF5F5);
2092
- }
2093
- }
2094
-
2095
- &.save-btn {
2096
- color: var(--cc-sf-link-save-color, #16a34a) !important;
2097
- &:hover {
2098
- background-color: #ECFDF5;
2099
- }
2100
- }
2101
-
2102
- &.cancel-btn {
2103
- color: #ef4444 !important; // Red cancel icon color
2104
- &:hover {
2105
- background-color: var(--cc-sf-error-bg, #FFF5F5);
2106
- }
2107
- }
2108
- }
2109
-
2110
- .pe-40px {
2111
- padding-right: 40px !important;
2112
- }