platformcommons-web-lib 1.0.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 (208) hide show
  1. package/commons-shared-web-ui-1.0.0.tgz +0 -0
  2. package/documentation/alert.md +123 -0
  3. package/documentation/button-dropdown.md +126 -0
  4. package/documentation/button.md +184 -0
  5. package/documentation/cards-usage-guidelines.md +131 -0
  6. package/documentation/configurable-form.md +605 -0
  7. package/documentation/confirmation-modal.md +250 -0
  8. package/documentation/filter-sidebar.md +178 -0
  9. package/documentation/filter-table-selector.md +228 -0
  10. package/documentation/form-builder.md +597 -0
  11. package/documentation/form-components.md +384 -0
  12. package/documentation/nav.md +427 -0
  13. package/documentation/pagination.md +181 -0
  14. package/documentation/side-nav-documentation.md +169 -0
  15. package/documentation/smart-form.md +2177 -0
  16. package/documentation/smart-table.md +1198 -0
  17. package/documentation/snackbar.md +118 -0
  18. package/documentation/style-externalization.md +88 -0
  19. package/documentation/summary-card.md +279 -0
  20. package/ng-package.json +28 -0
  21. package/package.json +54 -0
  22. package/src/lib/modules/alert/alert.models.ts +6 -0
  23. package/src/lib/modules/alert/alert.module.ts +16 -0
  24. package/src/lib/modules/alert/alert.theme.scss +85 -0
  25. package/src/lib/modules/alert/components/alert/alert.component.html +27 -0
  26. package/src/lib/modules/alert/components/alert/alert.component.scss +92 -0
  27. package/src/lib/modules/alert/components/alert/alert.component.ts +81 -0
  28. package/src/lib/modules/button/button.models.ts +13 -0
  29. package/src/lib/modules/button/button.module.ts +16 -0
  30. package/src/lib/modules/button/button.theme.scss +121 -0
  31. package/src/lib/modules/button/components/button/button.component.html +22 -0
  32. package/src/lib/modules/button/components/button/button.component.scss +88 -0
  33. package/src/lib/modules/button/components/button/button.component.ts +67 -0
  34. package/src/lib/modules/button-dropdown/button-dropdown.models.ts +26 -0
  35. package/src/lib/modules/button-dropdown/button-dropdown.module.ts +22 -0
  36. package/src/lib/modules/button-dropdown/button-dropdown.theme.scss +87 -0
  37. package/src/lib/modules/button-dropdown/components/button-dropdown/button-dropdown.component.html +41 -0
  38. package/src/lib/modules/button-dropdown/components/button-dropdown/button-dropdown.component.scss +135 -0
  39. package/src/lib/modules/button-dropdown/components/button-dropdown/button-dropdown.component.ts +160 -0
  40. package/src/lib/modules/configurable-form/component/configurable-form.component.html +294 -0
  41. package/src/lib/modules/configurable-form/component/configurable-form.component.scss +503 -0
  42. package/src/lib/modules/configurable-form/component/configurable-form.component.ts +628 -0
  43. package/src/lib/modules/configurable-form/configurable-form.examples.ts +154 -0
  44. package/src/lib/modules/configurable-form/configurable-form.model.ts +131 -0
  45. package/src/lib/modules/configurable-form/configurable-form.module.ts +19 -0
  46. package/src/lib/modules/configurable-form/configurable-form.theme.scss +78 -0
  47. package/src/lib/modules/confirmation-modal/components/confirmation-modal/confirmation-modal.component.html +77 -0
  48. package/src/lib/modules/confirmation-modal/components/confirmation-modal/confirmation-modal.component.scss +395 -0
  49. package/src/lib/modules/confirmation-modal/components/confirmation-modal/confirmation-modal.component.ts +266 -0
  50. package/src/lib/modules/confirmation-modal/confirmation-modal.models.ts +71 -0
  51. package/src/lib/modules/confirmation-modal/confirmation-modal.module.ts +20 -0
  52. package/src/lib/modules/confirmation-modal/confirmation-modal.theme.scss +87 -0
  53. package/src/lib/modules/filter/components/filter/filter.component.html +131 -0
  54. package/src/lib/modules/filter/components/filter/filter.component.scss +245 -0
  55. package/src/lib/modules/filter/components/filter/filter.component.ts +216 -0
  56. package/src/lib/modules/filter/filter.models.ts +88 -0
  57. package/src/lib/modules/filter/filter.module.ts +24 -0
  58. package/src/lib/modules/filter/filter.theme.scss +92 -0
  59. package/src/lib/modules/filter-sidebar/components/filter-sidebar/filter-sidebar.component.html +112 -0
  60. package/src/lib/modules/filter-sidebar/components/filter-sidebar/filter-sidebar.component.scss +186 -0
  61. package/src/lib/modules/filter-sidebar/components/filter-sidebar/filter-sidebar.component.ts +163 -0
  62. package/src/lib/modules/filter-sidebar/filter-sidebar.models.ts +95 -0
  63. package/src/lib/modules/filter-sidebar/filter-sidebar.module.ts +24 -0
  64. package/src/lib/modules/filter-sidebar/filter-sidebar.theme.scss +38 -0
  65. package/src/lib/modules/filter-table-selector/components/filter-table-selector/filter-table-selector.component.html +73 -0
  66. package/src/lib/modules/filter-table-selector/components/filter-table-selector/filter-table-selector.component.scss +321 -0
  67. package/src/lib/modules/filter-table-selector/components/filter-table-selector/filter-table-selector.component.ts +361 -0
  68. package/src/lib/modules/filter-table-selector/filter-table-selector.models.ts +91 -0
  69. package/src/lib/modules/filter-table-selector/filter-table-selector.module.ts +22 -0
  70. package/src/lib/modules/filter-table-selector/filter-table-selector.theme.scss +36 -0
  71. package/src/lib/modules/form-builder/components/field-configurator/configurator-config-panel/configurator-config-panel.component.html +63 -0
  72. package/src/lib/modules/form-builder/components/field-configurator/configurator-config-panel/configurator-config-panel.component.scss +496 -0
  73. package/src/lib/modules/form-builder/components/field-configurator/configurator-config-panel/configurator-config-panel.component.ts +445 -0
  74. package/src/lib/modules/form-builder/components/field-configurator/configurator-tree/configurator-tree.component.html +75 -0
  75. package/src/lib/modules/form-builder/components/field-configurator/configurator-tree/configurator-tree.component.scss +210 -0
  76. package/src/lib/modules/form-builder/components/field-configurator/configurator-tree/configurator-tree.component.ts +55 -0
  77. package/src/lib/modules/form-builder/components/field-configurator/field-configurator.component.html +25 -0
  78. package/src/lib/modules/form-builder/components/field-configurator/field-configurator.component.scss +82 -0
  79. package/src/lib/modules/form-builder/components/field-configurator/field-configurator.component.ts +95 -0
  80. package/src/lib/modules/form-builder/components/field-selection/field-selection.component.html +20 -0
  81. package/src/lib/modules/form-builder/components/field-selection/field-selection.component.scss +37 -0
  82. package/src/lib/modules/form-builder/components/field-selection/field-selection.component.ts +94 -0
  83. package/src/lib/modules/form-builder/components/field-selection/group-node/group-node.component.html +46 -0
  84. package/src/lib/modules/form-builder/components/field-selection/group-node/group-node.component.scss +102 -0
  85. package/src/lib/modules/form-builder/components/field-selection/group-node/group-node.component.ts +50 -0
  86. package/src/lib/modules/form-builder/components/field-selection/selection-field-node/selection-field-node.component.html +35 -0
  87. package/src/lib/modules/form-builder/components/field-selection/selection-field-node/selection-field-node.component.scss +67 -0
  88. package/src/lib/modules/form-builder/components/field-selection/selection-field-node/selection-field-node.component.ts +34 -0
  89. package/src/lib/modules/form-builder/components/field-selection/selection-section-node/selection-section-node.component.html +68 -0
  90. package/src/lib/modules/form-builder/components/field-selection/selection-section-node/selection-section-node.component.scss +113 -0
  91. package/src/lib/modules/form-builder/components/field-selection/selection-section-node/selection-section-node.component.ts +74 -0
  92. package/src/lib/modules/form-builder/configs/field-type-schema.map.ts +533 -0
  93. package/src/lib/modules/form-builder/form-builder.module.ts +36 -0
  94. package/src/lib/modules/form-builder/form-builder.theme.scss +212 -0
  95. package/src/lib/modules/form-builder/index.ts +9 -0
  96. package/src/lib/modules/form-builder/models/builder.models.ts +7 -0
  97. package/src/lib/modules/form-builder/models/field-configurator.models.ts +38 -0
  98. package/src/lib/modules/form-builder/models/field-selection.models.ts +51 -0
  99. package/src/lib/modules/form-builder/services/field-configurator.service.ts +258 -0
  100. package/src/lib/modules/form-builder/services/field-selection.service.ts +300 -0
  101. package/src/lib/modules/form-builder/services/form-schema-tree.service.ts +652 -0
  102. package/src/lib/modules/form-builder/tokens/builder.tokens.ts +10 -0
  103. package/src/lib/modules/form-builder/utils/constants.ts +43 -0
  104. package/src/lib/modules/form-components/components/checkbox/_theme.scss +63 -0
  105. package/src/lib/modules/form-components/components/checkbox/checkbox.component.html +29 -0
  106. package/src/lib/modules/form-components/components/checkbox/checkbox.component.scss +111 -0
  107. package/src/lib/modules/form-components/components/checkbox/checkbox.component.ts +207 -0
  108. package/src/lib/modules/form-components/components/checkbox/checkbox.models.ts +35 -0
  109. package/src/lib/modules/form-components/components/datepicker/_theme.scss +82 -0
  110. package/src/lib/modules/form-components/components/datepicker/datepicker.component.html +42 -0
  111. package/src/lib/modules/form-components/components/datepicker/datepicker.component.scss +115 -0
  112. package/src/lib/modules/form-components/components/datepicker/datepicker.component.ts +267 -0
  113. package/src/lib/modules/form-components/components/datepicker/datepicker.models.ts +45 -0
  114. package/src/lib/modules/form-components/components/dropdown/_theme.scss +91 -0
  115. package/src/lib/modules/form-components/components/dropdown/dropdown.component.html +74 -0
  116. package/src/lib/modules/form-components/components/dropdown/dropdown.component.scss +252 -0
  117. package/src/lib/modules/form-components/components/dropdown/dropdown.component.ts +377 -0
  118. package/src/lib/modules/form-components/components/dropdown/dropdown.models.ts +53 -0
  119. package/src/lib/modules/form-components/components/input/_theme.scss +77 -0
  120. package/src/lib/modules/form-components/components/input/input.component.html +51 -0
  121. package/src/lib/modules/form-components/components/input/input.component.scss +128 -0
  122. package/src/lib/modules/form-components/components/input/input.component.ts +250 -0
  123. package/src/lib/modules/form-components/components/input/input.models.ts +55 -0
  124. package/src/lib/modules/form-components/components/radio/_theme.scss +61 -0
  125. package/src/lib/modules/form-components/components/radio/radio.component.html +22 -0
  126. package/src/lib/modules/form-components/components/radio/radio.component.scss +107 -0
  127. package/src/lib/modules/form-components/components/radio/radio.component.ts +181 -0
  128. package/src/lib/modules/form-components/components/radio/radio.models.ts +39 -0
  129. package/src/lib/modules/form-components/components/search/_theme.scss +73 -0
  130. package/src/lib/modules/form-components/components/search/search.component.html +15 -0
  131. package/src/lib/modules/form-components/components/search/search.component.scss +87 -0
  132. package/src/lib/modules/form-components/components/search/search.component.ts +213 -0
  133. package/src/lib/modules/form-components/components/search/search.models.ts +40 -0
  134. package/src/lib/modules/form-components/components/toggle/_theme.scss +45 -0
  135. package/src/lib/modules/form-components/components/toggle/toggle.component.html +15 -0
  136. package/src/lib/modules/form-components/components/toggle/toggle.component.scss +81 -0
  137. package/src/lib/modules/form-components/components/toggle/toggle.component.ts +166 -0
  138. package/src/lib/modules/form-components/components/toggle/toggle.models.ts +27 -0
  139. package/src/lib/modules/form-components/directives/click-outside.directive.ts +22 -0
  140. package/src/lib/modules/form-components/form-components.module.ts +41 -0
  141. package/src/lib/modules/form-components/form-components.theme.scss +25 -0
  142. package/src/lib/modules/material/material.module.ts +94 -0
  143. package/src/lib/modules/nav/components/nav/nav.component.html +34 -0
  144. package/src/lib/modules/nav/components/nav/nav.component.scss +171 -0
  145. package/src/lib/modules/nav/components/nav/nav.component.ts +82 -0
  146. package/src/lib/modules/nav/nav.models.ts +31 -0
  147. package/src/lib/modules/nav/nav.module.ts +17 -0
  148. package/src/lib/modules/nav/nav.theme.scss +86 -0
  149. package/src/lib/modules/pagination/components/pagination/pagination.component.html +52 -0
  150. package/src/lib/modules/pagination/components/pagination/pagination.component.scss +155 -0
  151. package/src/lib/modules/pagination/components/pagination/pagination.component.ts +109 -0
  152. package/src/lib/modules/pagination/pagination.module.ts +17 -0
  153. package/src/lib/modules/pagination/pagination.theme.scss +66 -0
  154. package/src/lib/modules/side-nav/components/side-nav/side-nav.component.html +56 -0
  155. package/src/lib/modules/side-nav/components/side-nav/side-nav.component.scss +342 -0
  156. package/src/lib/modules/side-nav/components/side-nav/side-nav.component.ts +135 -0
  157. package/src/lib/modules/side-nav/side-nav.models.ts +38 -0
  158. package/src/lib/modules/side-nav/side-nav.module.ts +16 -0
  159. package/src/lib/modules/side-nav/side-nav.theme.scss +111 -0
  160. package/src/lib/modules/smart-form/components/form-field/form-field.component.html +1109 -0
  161. package/src/lib/modules/smart-form/components/form-field/form-field.component.scss +1860 -0
  162. package/src/lib/modules/smart-form/components/form-field/form-field.component.ts +2232 -0
  163. package/src/lib/modules/smart-form/components/form-section/form-section.component.html +64 -0
  164. package/src/lib/modules/smart-form/components/form-section/form-section.component.scss +209 -0
  165. package/src/lib/modules/smart-form/components/form-section/form-section.component.ts +119 -0
  166. package/src/lib/modules/smart-form/components/smart-form/smart-form.component.html +253 -0
  167. package/src/lib/modules/smart-form/components/smart-form/smart-form.component.scss +689 -0
  168. package/src/lib/modules/smart-form/components/smart-form/smart-form.component.ts +1087 -0
  169. package/src/lib/modules/smart-form/index.ts +10 -0
  170. package/src/lib/modules/smart-form/models/form-schema.model.ts +700 -0
  171. package/src/lib/modules/smart-form/models/hierarchy-config.model.ts +21 -0
  172. package/src/lib/modules/smart-form/services/expression.service.ts +75 -0
  173. package/src/lib/modules/smart-form/services/smart-form-controller.service.ts +65 -0
  174. package/src/lib/modules/smart-form/smart-form.examples.ts +1324 -0
  175. package/src/lib/modules/smart-form/smart-form.module.ts +36 -0
  176. package/src/lib/modules/smart-form/smart-form.theme.scss +890 -0
  177. package/src/lib/modules/smart-form/utils/translation.utils.ts +82 -0
  178. package/src/lib/modules/smart-form/utils/trusted-url.pipe.ts +25 -0
  179. package/src/lib/modules/smart-form/utils/validation.utils.ts +98 -0
  180. package/src/lib/modules/smart-table/components/smart-table/smart-table.component.html +283 -0
  181. package/src/lib/modules/smart-table/components/smart-table/smart-table.component.scss +685 -0
  182. package/src/lib/modules/smart-table/components/smart-table/smart-table.component.ts +1118 -0
  183. package/src/lib/modules/smart-table/models/table-config.model.ts +202 -0
  184. package/src/lib/modules/smart-table/smart-table.module.ts +30 -0
  185. package/src/lib/modules/smart-table/smart-table.theme.scss +335 -0
  186. package/src/lib/modules/smart-table/utils/safe-html.pipe.ts +22 -0
  187. package/src/lib/modules/smart-table/utils/smart-table.utils.ts +18 -0
  188. package/src/lib/modules/snackbar/components/snackbar.component.html +41 -0
  189. package/src/lib/modules/snackbar/components/snackbar.component.scss +99 -0
  190. package/src/lib/modules/snackbar/components/snackbar.component.ts +18 -0
  191. package/src/lib/modules/snackbar/models/snackbar.models.ts +10 -0
  192. package/src/lib/modules/snackbar/services/snackbar.service.ts +40 -0
  193. package/src/lib/modules/snackbar/snackbar.module.ts +11 -0
  194. package/src/lib/modules/snackbar/snackbar.theme.scss +93 -0
  195. package/src/lib/modules/summary-card/components/summary-card/summary-card.component.html +47 -0
  196. package/src/lib/modules/summary-card/components/summary-card/summary-card.component.scss +199 -0
  197. package/src/lib/modules/summary-card/components/summary-card/summary-card.component.ts +126 -0
  198. package/src/lib/modules/summary-card/summary-card.module.ts +18 -0
  199. package/src/lib/modules/summary-card/summary-card.theme.scss +176 -0
  200. package/src/lib/shared-ui.module.ts +44 -0
  201. package/src/lib/styles/global.scss +152 -0
  202. package/src/lib/styles/utilities.scss +250 -0
  203. package/src/lib/utils/constants.ts +11 -0
  204. package/src/lib/utils/storage.utils.ts +37 -0
  205. package/src/lib/utils/string.utils.ts +23 -0
  206. package/src/lib/utils/translation.utils.ts +87 -0
  207. package/src/public-api.ts +104 -0
  208. package/tsconfig.lib.json +15 -0
@@ -0,0 +1,176 @@
1
+ @use 'sass:map';
2
+
3
+ // Default configuration for the summary card theme (Theme 1 - Clean & Minimal)
4
+ $default-summary-card-config: (
5
+ // Base
6
+ font-family: ('Inter', sans-serif),
7
+ bg-color: #ffffff,
8
+ border-radius: 8px,
9
+ border: 1px solid #e0e0e0,
10
+ padding: 20px,
11
+ shadow: 0 1px 3px rgba(0, 0, 0, 0.05),
12
+ min-height: auto,
13
+ transition-duration: 0.2s,
14
+
15
+ // Hover States
16
+ hover-transform: translateY(-2px),
17
+ hover-shadow: 0 4px 8px rgba(0, 0, 0, 0.1),
18
+
19
+ // Disabled State
20
+ disabled-opacity: 0.5,
21
+
22
+ // Icon Section
23
+ icon-box-size: 48px,
24
+ icon-size: 24px,
25
+ icon-radius: 8px,
26
+ icon-bg: rgba(0, 0, 0, 0.05),
27
+ icon-color: #666666,
28
+ icon-margin: 1rem,
29
+
30
+ // Content Section
31
+ content-gap: 0.5rem,
32
+
33
+ // Header
34
+ header-size: 0.75rem,
35
+ header-weight: 600,
36
+ header-color: #6c757d,
37
+ header-transform: uppercase,
38
+ header-letter-spacing: 0.05em,
39
+ header-line-height: 1.2,
40
+
41
+ // Value
42
+ value-size: 1.5rem,
43
+ value-weight: 700,
44
+ value-color: #333333,
45
+ value-line-height: 1.2,
46
+
47
+ // Description
48
+ desc-size: 0.75rem,
49
+ desc-weight: 400,
50
+ desc-color: #6c757d,
51
+ desc-line-height: 1.4,
52
+ value-desc-gap: 0.25rem,
53
+
54
+ // Meta Pill
55
+ meta-pill-bg: #f1f5f9,
56
+ meta-pill-color: #475569,
57
+ meta-pill-padding: 4px 12px,
58
+ meta-pill-radius: 20px,
59
+ meta-pill-font-size: 0.75rem,
60
+ meta-pill-font-weight: 600
61
+ );
62
+
63
+ // Theme 2 configuration (Aesthetic & Modern)
64
+ $theme-2-summary-card-config: (
65
+ // Base
66
+ font-family: ('Poppins', 'Segoe UI', sans-serif),
67
+ bg-color: #ffffff,
68
+ border-radius: 16px,
69
+ border: none,
70
+ padding: 28px,
71
+ shadow: 0 8px 24px rgba(0, 0, 0, 0.08),
72
+ min-height: 120px,
73
+ transition-duration: 0.3s,
74
+
75
+ // Hover States
76
+ hover-transform: translateY(-4px),
77
+ hover-shadow: 0 12px 32px rgba(0, 0, 0, 0.15),
78
+
79
+ // Disabled State
80
+ disabled-opacity: 0.4,
81
+
82
+ // Icon Section
83
+ icon-box-size: 56px,
84
+ icon-size: 28px,
85
+ icon-radius: 12px,
86
+ icon-bg: linear-gradient(135deg, rgba(99, 102, 241, 0.1) 0%, rgba(168, 85, 247, 0.1) 100%),
87
+ icon-color: #6366f1,
88
+ icon-margin: 1.25rem,
89
+
90
+ // Content Section
91
+ content-gap: 0.75rem,
92
+
93
+ // Header
94
+ header-size: 0.8rem,
95
+ header-weight: 500,
96
+ header-color: #94a3b8,
97
+ header-transform: none,
98
+ header-letter-spacing: 0.02em,
99
+ header-line-height: 1.3,
100
+
101
+ // Value
102
+ value-size: 2rem,
103
+ value-weight: 700,
104
+ value-color: #1e293b,
105
+ value-line-height: 1.1,
106
+
107
+ // Description
108
+ desc-size: 0.85rem,
109
+ desc-weight: 400,
110
+ desc-color: #64748b,
111
+ desc-line-height: 1.5,
112
+ value-desc-gap: 0.5rem,
113
+
114
+ // Meta Pill
115
+ meta-pill-bg: #f1f5f9,
116
+ meta-pill-color: #475569,
117
+ meta-pill-padding: 4px 12px,
118
+ meta-pill-radius: 20px,
119
+ meta-pill-font-size: 0.75rem,
120
+ meta-pill-font-weight: 600
121
+ );
122
+
123
+ // Mixin to generate CSS variables for the summary card component
124
+ @mixin summary-card-theme($user-config: ()) {
125
+ // Merge user config with defaults
126
+ $config: map.merge($default-summary-card-config, $user-config);
127
+
128
+ // Generate CSS Variables
129
+ --cc-sc-font-family: #{map.get($config, font-family)};
130
+ --cc-sc-bg-color: #{map.get($config, bg-color)};
131
+ --cc-sc-border-radius: #{map.get($config, border-radius)};
132
+ --cc-sc-border: #{map.get($config, border)};
133
+ --cc-sc-padding: #{map.get($config, padding)};
134
+ --cc-sc-shadow: #{map.get($config, shadow)};
135
+ --cc-sc-min-height: #{map.get($config, min-height)};
136
+ --cc-sc-transition-duration: #{map.get($config, transition-duration)};
137
+
138
+ --cc-sc-hover-transform: #{map.get($config, hover-transform)};
139
+ --cc-sc-hover-shadow: #{map.get($config, hover-shadow)};
140
+
141
+ --cc-sc-disabled-opacity: #{map.get($config, disabled-opacity)};
142
+
143
+ --cc-sc-icon-box-size: #{map.get($config, icon-box-size)};
144
+ --cc-sc-icon-size: #{map.get($config, icon-size)};
145
+ --cc-sc-icon-radius: #{map.get($config, icon-radius)};
146
+ --cc-sc-icon-bg: #{map.get($config, icon-bg)};
147
+ --cc-sc-icon-color: #{map.get($config, icon-color)};
148
+ --cc-sc-icon-margin: #{map.get($config, icon-margin)};
149
+
150
+ --cc-sc-content-gap: #{map.get($config, content-gap)};
151
+
152
+ --cc-sc-header-size: #{map.get($config, header-size)};
153
+ --cc-sc-header-weight: #{map.get($config, header-weight)};
154
+ --cc-sc-header-color: #{map.get($config, header-color)};
155
+ --cc-sc-header-transform: #{map.get($config, header-transform)};
156
+ --cc-sc-header-letter-spacing: #{map.get($config, header-letter-spacing)};
157
+ --cc-sc-header-line-height: #{map.get($config, header-line-height)};
158
+
159
+ --cc-sc-value-size: #{map.get($config, value-size)};
160
+ --cc-sc-value-weight: #{map.get($config, value-weight)};
161
+ --cc-sc-value-color: #{map.get($config, value-color)};
162
+ --cc-sc-value-line-height: #{map.get($config, value-line-height)};
163
+
164
+ --cc-sc-desc-size: #{map.get($config, desc-size)};
165
+ --cc-sc-desc-weight: #{map.get($config, desc-weight)};
166
+ --cc-sc-desc-color: #{map.get($config, desc-color)};
167
+ --cc-sc-desc-line-height: #{map.get($config, desc-line-height)};
168
+ --cc-sc-value-desc-gap: #{map.get($config, value-desc-gap)};
169
+
170
+ --cc-sc-meta-pill-bg: #{map.get($config, meta-pill-bg)};
171
+ --cc-sc-meta-pill-color: #{map.get($config, meta-pill-color)};
172
+ --cc-sc-meta-pill-padding: #{map.get($config, meta-pill-padding)};
173
+ --cc-sc-meta-pill-radius: #{map.get($config, meta-pill-radius)};
174
+ --cc-sc-meta-pill-font-size: #{map.get($config, meta-pill-font-size)};
175
+ --cc-sc-meta-pill-font-weight: #{map.get($config, meta-pill-font-weight)};
176
+ }
@@ -0,0 +1,44 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { MaterialModule } from './modules/material/material.module';
4
+ import { AlertModule } from './modules/alert/alert.module';
5
+ import { ButtonModule } from './modules/button/button.module';
6
+ import { ButtonDropdownModule } from './modules/button-dropdown/button-dropdown.module';
7
+ import { ConfirmationModalModule } from './modules/confirmation-modal/confirmation-modal.module';
8
+ import { FilterSidebarModule } from './modules/filter-sidebar/filter-sidebar.module';
9
+ import { SummaryCardModule } from './modules/summary-card/summary-card.module';
10
+ import { ConfigurableFormModule } from './modules/configurable-form/configurable-form.module';
11
+ import { FormComponentsModule } from './modules/form-components/form-components.module';
12
+ import { SmartFormModule } from './modules/smart-form/smart-form.module';
13
+ import { FilterModule } from './modules/filter/filter.module';
14
+ import { SideNavModule } from './modules/side-nav/side-nav.module';
15
+ import { FormBuilderModule } from './modules/form-builder/form-builder.module';
16
+ import { FilterTableSelectorModule } from './modules/filter-table-selector/filter-table-selector.module';
17
+
18
+ @NgModule({
19
+ declarations: [],
20
+ imports: [
21
+ CommonModule,
22
+ MaterialModule,
23
+ AlertModule, ButtonModule, ButtonDropdownModule, ConfirmationModalModule, FilterSidebarModule, FilterModule,
24
+ SummaryCardModule,
25
+ ConfigurableFormModule,
26
+ FormComponentsModule,
27
+ SmartFormModule,
28
+ SideNavModule,
29
+ FormBuilderModule,
30
+ FilterTableSelectorModule
31
+ ],
32
+ exports: [
33
+ MaterialModule,
34
+ AlertModule, ButtonModule, ButtonDropdownModule, ConfirmationModalModule, FilterSidebarModule, FilterModule,
35
+ SummaryCardModule,
36
+ ConfigurableFormModule,
37
+ FormComponentsModule,
38
+ SmartFormModule,
39
+ SideNavModule,
40
+ FormBuilderModule,
41
+ FilterTableSelectorModule
42
+ ],
43
+ })
44
+ export class SharedUiModule { }
@@ -0,0 +1,152 @@
1
+ @use '../modules/side-nav/side-nav.theme' as sideNav;
2
+ @use '../modules/form-builder/form-builder.theme' as fb;
3
+ @use '../modules/filter-table-selector/filter-table-selector.theme' as fts;
4
+ @import 'quill/dist/quill.snow.css';
5
+ @import './utilities.scss';
6
+
7
+ :root {
8
+ @include sideNav.side-nav-theme();
9
+ @include fb.form-builder-theme();
10
+ --cc-card-bg: #ffffff;
11
+ --cc-card-border-color: #e0e0e0;
12
+ --cc-card-border-radius: 8px;
13
+ --cc-card-padding: 16px;
14
+ --cc-card-shadow: none;
15
+
16
+ @include fts.filter-table-selector-theme();
17
+
18
+ /* Text Colors */
19
+ --text-color: #333333;
20
+ --text-muted: #666666;
21
+ --text-muted-2: #888888;
22
+ --text-light: #6c757d;
23
+ --text-on-primary: #ffffff;
24
+
25
+ /* Borders & Icons */
26
+ --border-color: #dee2e6;
27
+ --icon-bg: rgba(0, 0, 0, 0.05);
28
+
29
+ /* Components */
30
+ --primary-color: #c21e25;
31
+ /* Default Base Primary */
32
+ --btn-primary-bg: var(--primary-color);
33
+ --btn-primary-text: #ffffff;
34
+ --card-bg: #ffffff;
35
+ --input-bg: #fcfcfc;
36
+ --sidenav-bg: #ffffff;
37
+ --sidenav-active-bg: #fff0f0;
38
+ --sidenav-active-text: #ff0000;
39
+
40
+ /* Status & Chips */
41
+ --status-active-bg: #f6ffed;
42
+ --status-active-text: #52c41a;
43
+ --status-inactive-bg: #fffbe6;
44
+ --status-inactive-text: #faad14;
45
+
46
+ --chip-blue-bg: #e6f7ff;
47
+ --chip-blue-text: #1890ff;
48
+ --chip-green-bg: #f6ffed;
49
+ --chip-green-text: #52c41a;
50
+
51
+ /* Form Fields */
52
+ --field-label-color: #202124;
53
+ --field-label-height: 27px;
54
+ --field-input-bg: #fefefe;
55
+ --field-input-border: #bdc1c6;
56
+ --field-input-height: 40px;
57
+ --field-input-radius: 7px;
58
+ --field-hint-color: #5f6368;
59
+
60
+ /* Smart Table Inline Edit Controls */
61
+ --st-cell-input-border: 1px solid var(--field-input-border, #dee2e6);
62
+ --st-cell-input-focus-outline-color: var(--primary-color, #c21e25);
63
+ --st-cell-input-bg: var(--field-input-bg, #fcfcfc);
64
+ --st-cell-select-bg: var(--field-input-bg, #fcfcfc);
65
+
66
+ /* Smart Table Inline Edit Controls (Mirrored) */
67
+ --st-edit-actions-gap: 0.75rem;
68
+ --st-action-btn-size: 32px;
69
+ --st-action-btn-icon-size: 16px;
70
+ --st-tick-btn-bg: transparent;
71
+ --st-cross-btn-bg: #ffffff;
72
+ --st-cross-btn-border: 1px solid #e8eaed;
73
+ --st-cross-btn-hover-bg: #f8f9fa;
74
+ --st-top-add-btn-bg: #4d89eb;
75
+ --st-top-add-btn-hover-bg: #295eb7;
76
+
77
+ /* MultiSave (Card Repeater) */
78
+ --ms-card-bg: #ffffff;
79
+ --ms-card-border: #e8eaed;
80
+ --ms-card-radius: 10px;
81
+ --ms-card-shadow: 0 1px 4px rgba(0, 0, 0, 0.05);
82
+ --ms-card-shadow-hover: 0 6px 16px rgba(0, 0, 0, 0.08);
83
+ --ms-title-color: #111827;
84
+ --ms-desc-color: #6b7280;
85
+ --ms-btn-add-color: #3b82f6;
86
+ --ms-btn-add-hover: #2563eb;
87
+
88
+ @include sideNav.side-nav-theme();
89
+ }
90
+
91
+ /* ----------------------------------------------------
92
+ Theme 2 - Aesthetic Midnight (Dark/Neon)
93
+ ---------------------------------------------------- */
94
+ body.theme-2 {
95
+ --primary-color: #00d4ff;
96
+ /* Neon Cyan */
97
+ --secondary-color: #2b52ff;
98
+ /* Bright Blue */
99
+
100
+ /* Layout Backgrounds */
101
+ --header-bg: rgba(15, 28, 63, 0.95);
102
+ /* Deep Indigo */
103
+ --footer-bg-start: #0a1128;
104
+ --footer-bg-end: #0f1c3f;
105
+ --sidebar-bg: #0a1128;
106
+ --content-bg: #0f1c3f;
107
+
108
+ /* Text Colors */
109
+ --text-color: #ffffff;
110
+ --text-muted: rgba(255, 255, 255, 0.7);
111
+ --text-muted-2: rgba(255, 255, 255, 0.6);
112
+ --text-light: #aaaaaa;
113
+ --text-on-primary: #000000;
114
+
115
+ /* Borders & Icons */
116
+ --border-color: rgba(255, 255, 255, 0.1);
117
+ --icon-bg: rgba(255, 255, 255, 0.1);
118
+ /* Typography */
119
+ --cc-font-family: 'Roboto', 'Helvetica Neue', sans-serif;
120
+ --cc-text-color-primary: #000000;
121
+ --cc-text-color-secondary: #757575;
122
+ --cc-text-size-label: 12px;
123
+ --cc-text-size-value: 24px;
124
+ --cc-text-weight-bold: 700;
125
+ --cc-text-weight-medium: 500;
126
+
127
+ /* Theme 1 - Screenshot Match */
128
+ --cc-theme-1-padding: 20px;
129
+ --cc-theme-1-border-radius: 6px;
130
+ --cc-theme-1-border: 1px solid #eeeeee;
131
+ --cc-theme-1-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
132
+
133
+ /* Theme 2 - Aesthetic */
134
+ --cc-theme-2-padding: 32px;
135
+ --cc-theme-2-border-radius: 16px;
136
+ --cc-theme-2-border: none;
137
+ --cc-theme-2-shadow: 0 10px 30px -10px rgba(0, 0, 0, 0.1);
138
+ --cc-theme-2-bg: #ffffff;
139
+
140
+ }
141
+
142
+ /* Global Reset/Base */
143
+ body {
144
+ margin: 0;
145
+ font-family: 'Inter', sans-serif;
146
+ background-color: var(--content-bg);
147
+ /* Use content-bg, not generic bg-color */
148
+ color: var(--text-color);
149
+ transition:
150
+ background-color 0.3s ease,
151
+ color 0.3s ease;
152
+ }
@@ -0,0 +1,250 @@
1
+ /* utilities.scss */
2
+
3
+ /* Display Classes */
4
+ .d-flex { display: flex; }
5
+ .d-inline-flex { display: inline-flex; }
6
+ .d-grid { display: grid; }
7
+ .d-block { display: block; }
8
+ .d-none { display: none; }
9
+
10
+ /* Flexbox Directions & Wraps */
11
+ .flex-column { flex-direction: column; }
12
+ .flex-row { flex-direction: row; }
13
+ .flex-row-reverse { flex-direction: row-reverse; }
14
+ .flex-wrap { flex-wrap: wrap; }
15
+ .flex-1 { flex: 1; }
16
+
17
+ /* Alignments */
18
+ .align-items-center { align-items: center; }
19
+ .align-items-start { align-items: flex-start; }
20
+ .align-items-end { align-items: flex-end; }
21
+ .justify-content-center { justify-content: center; }
22
+ .justify-content-between { justify-content: space-between; }
23
+ .justify-content-start { justify-content: flex-start; }
24
+ .justify-content-end { justify-content: flex-end; }
25
+
26
+ /* Grid */
27
+ .grid-cols-12 { grid-template-columns: repeat(12, 1fr); }
28
+
29
+ /* Width & Height (Percentages) */
30
+ .w-100 { width: 100%; }
31
+ .h-100 { height: 100%; }
32
+
33
+ /* Positioning */
34
+ .position-relative { position: relative; }
35
+ .position-absolute { position: absolute; }
36
+
37
+ /* Text Alignment */
38
+ .text-center { text-align: center; }
39
+ .text-left { text-align: left; }
40
+ .text-right { text-align: right; }
41
+
42
+ /* Fonts */
43
+ .font-poppins { font-family: var(--cc-sf-font-family, 'Poppins', sans-serif); }
44
+ .font-weight-400 { font-weight: 400; }
45
+ .font-weight-500 { font-weight: 500; }
46
+ .font-weight-600 { font-weight: 600; }
47
+
48
+ .text-13 { font-size: 13px; }
49
+ .text-14 { font-size: 14px; }
50
+ .text-16 { font-size: 16px; }
51
+
52
+ /* Colors (from variables) */
53
+ .color-white { color: #ffffff; }
54
+ .color-dark { color: #111827; }
55
+ .color-gray { color: #6B7280; }
56
+ .color-error { color: var(--cc-sf-error-text-color, #DC2626); }
57
+ .bg-white { background-color: #ffffff; }
58
+ .bg-transparent { background-color: transparent; }
59
+
60
+ /* Margins */
61
+ .m-0 { margin: 0; }
62
+ .mt-4 { margin-top: 4px; }
63
+ .mt-8 { margin-top: 8px; }
64
+ .mt-10 { margin-top: 10px; }
65
+ .mt-12 { margin-top: 12px; }
66
+ .mt-16 { margin-top: 16px; }
67
+ .mt-20 { margin-top: 20px; }
68
+ .mt-24 { margin-top: 24px; }
69
+
70
+ .mb-0 { margin-bottom: 0px; }
71
+ .mb-4 { margin-bottom: 4px; }
72
+ .mb-8 { margin-bottom: 8px; }
73
+ .mb-10 { margin-bottom: 10px; }
74
+ .mb-12 { margin-bottom: 12px; }
75
+ .mb-16 { margin-bottom: 16px; }
76
+ .mb-20 { margin-bottom: 20px; }
77
+ .mb-24 { margin-bottom: 24px; }
78
+
79
+ .ml-16 { margin-left: 16px; }
80
+ .ml-20 { margin-left: 20px; }
81
+
82
+ /* Paddings */
83
+ .p-0 { padding: 0; }
84
+ .p-16 { padding: 16px; }
85
+ .p-20 { padding: 20px; }
86
+ .p-24 { padding: 24px; }
87
+ .pt-20 { padding-top: 20px; }
88
+ .pb-10 { padding-bottom: 10px; }
89
+
90
+ /* Gaps */
91
+ .gap-4 { gap: 4px; }
92
+ .gap-6 { gap: 6px; }
93
+ .gap-8 { gap: 8px; }
94
+ .gap-10 { gap: 10px; }
95
+ .gap-12 { gap: 12px; }
96
+ .gap-16 { gap: 16px; }
97
+ .gap-20 { gap: 20px; }
98
+
99
+ /* Border Radius */
100
+ .rounded-4 { border-radius: 4px; }
101
+ .rounded-6 { border-radius: 6px; }
102
+ .rounded-8 { border-radius: 8px; }
103
+ .rounded-10 { border-radius: 10px; }
104
+ .rounded-12 { border-radius: 12px; }
105
+ .rounded-20 { border-radius: 20px; }
106
+ .rounded-24 { border-radius: 24px; }
107
+ .rounded-50 { border-radius: 50%; }
108
+
109
+ /* Utilities */
110
+ .cursor-pointer { cursor: pointer; }
111
+ .overflow-hidden { overflow: hidden; }
112
+ .resize-vertical { resize: vertical; }
113
+ .box-sizing-border { box-sizing: border-box; }
114
+
115
+ /* Form Auto Extracted Utilities 2 */
116
+ .border-none { border: none !important; }
117
+ .mb-16px { margin-bottom: var(--cc-sf-grid-gap, 16px) !important; }
118
+ .c-DC2626 { color: var(--cc-sf-label-required-color, #DC2626) !important; }
119
+ .ml-0-125rem { margin-left: 0.125rem !important; }
120
+ .fs-0-875rem { font-size: 0.875rem !important; }
121
+ .c-111827 { color: var(--cc-sf-label-color, #111827) !important; }
122
+ .br-7px { border-radius: var(--cc-sf-input-radius, 7px) !important; }
123
+ .c-6B7280 { color: var(--cc-sf-hint-color, #6B7280) !important; }
124
+ .fs-0-75rem { font-size: var(--cc-sf-error-text-size, 0.75rem) !important; }
125
+ .b-none { background: none !important; }
126
+ .p-32px-24px { padding: 32px 24px !important; }
127
+ .us-none { user-select: none !important; }
128
+ .c-1E293B { color: var(--cc-sf-label-color, #1E293B) !important; }
129
+ .c-3B82F6 { color: var(--cc-sf-chip-selected-bg, #3B82F6) !important; }
130
+ .fs-0-78rem { font-size: 0.78rem !important; }
131
+ .p-10px-14px { padding: 10px 14px !important; }
132
+ .fs-0-85rem { font-size: 0.85rem !important; }
133
+ .fs-0-72rem { font-size: 0.72rem !important; }
134
+ .c-94A3B8 { color: #94A3B8 !important; }
135
+ .p-4px { padding: 4px !important; }
136
+ .br-8px { border-radius: var(--cc-sf-input-radius, 8px) !important; }
137
+ .bc-F3F4F6 { background-color: var(--cc-sf-input-disabled-bg, #F3F4F6) !important; }
138
+ .br-none { border-right: none !important; }
139
+ .bl-none { border-left: none !important; }
140
+ .pe-none { pointer-events: none !important; }
141
+ .fs-1-1rem { font-size: 1.1rem !important; }
142
+ .c-9CA3AF { color: var(--cc-sf-hint-color, #9CA3AF) !important; }
143
+ .pl-2-4rem { padding-left: 2.4rem !important; }
144
+ .fs-0-8125rem { font-size: 0.8125rem !important; }
145
+ .ls-none { list-style: none !important; }
146
+ .br-12px { border-radius: var(--mu-carousel-radius, 12px) !important; }
147
+ .b-FFFAF1 { background: var(--cc-sf-dropzone-bg, #FFFAF1) !important; }
148
+ .fs-18px { font-size: 18px !important; }
149
+ .b-FEF2F2 { background: var(--cc-sf-error-bg, #FEF2F2) !important; }
150
+
151
+ /* Form Auto Extracted Utilities 3 */
152
+ .bc-DC2626 { border-color: var(--cc-sf-error-border, #DC2626) !important; }
153
+ .c-202124 { color: var(--cc-sf-label-color, #202124) !important; }
154
+ .fs-18px { font-size: var(--cc-sf-label-size, 18px) !important; }
155
+ .mb-0-5rem { margin-bottom: 0.5rem !important; }
156
+ .pt-0-625rem { padding-top: var(--cc-sf-input-padding-y, 0.625rem) !important; }
157
+ .pb-0-625rem { padding-bottom: var(--cc-sf-input-padding-y, 0.625rem) !important; }
158
+ .pl-16px { padding-left: var(--cc-sf-input-padding-x, 16px) !important; }
159
+ .pr-16px { padding-right: var(--cc-sf-input-padding-x, 16px) !important; }
160
+ .bc-ffffff { background-color: var(--cc-sf-section-bg, #ffffff) !important; }
161
+ .b-1px-solid-D1D5DB { border: 1px solid var(--cc-sf-input-border, #D1D5DB) !important; }
162
+ .fs-0-75rem { font-size: 0.75rem !important; }
163
+ .c-1F2937 { color: var(--cc-sf-section-label-color, #1F2937) !important; }
164
+ .p-6px-14px { padding: var(--cc-sf-chip-padding, 6px 14px) !important; }
165
+ .b-ffffff { background: var(--loc-suggestion-bg, #ffffff) !important; }
166
+ .c-374151 { color: var(--cc-sf-label-color, #374151) !important; }
167
+ .br-20px { border-radius: var(--cc-sf-chip-radius, 20px) !important; }
168
+ .fs-0-875rem { font-size: var(--cc-sf-btn-font-size, 0.875rem) !important; }
169
+ .bc-D1D5DB { background-color: var(--cc-sf-switch-track-off, #D1D5DB) !important; }
170
+ .pr-2-75rem { padding-right: 2.75rem !important; }
171
+ .p-0-25rem { padding: 0.25rem !important; }
172
+ .p-0-625rem-0-875rem { padding: var(--cc-sf-generated-padding, 0.625rem 0.875rem) !important; }
173
+ .b-F3F4F6 { background: var(--cc-sf-generated-bg, #F3F4F6) !important; }
174
+ .b-1px-solid-E5E7EB { border: 1px solid var(--cc-sf-input-disabled-border, #E5E7EB) !important; }
175
+ .br-8px { border-radius: var(--cc-sf-uploaded-item-radius, 8px) !important; }
176
+ .c-6B7280 { color: var(--ms-desc-color, #6B7280) !important; }
177
+ .mb-20px { margin-bottom: var(--cc-sf-section-gap, 20px) !important; }
178
+ .br-10px { border-radius: var(--cc-sf-input-radius, 10px) !important; }
179
+ .p-20px { padding: var(--cc-sf-section-padding, 20px) !important; }
180
+ .fs-1rem { font-size: 1rem !important; }
181
+ .m-0-0-16px-0 { margin: 0 0 16px 0 !important; }
182
+ .bb-2px-solid-E5E7EB { border-bottom: var(--cc-sf-section-label-border, 2px solid #E5E7EB) !important; }
183
+ .p-16px { padding: var(--cc-sf-instance-padding, 16px) !important; }
184
+ .b-F9FAFB { background: var(--loc-tba-bg, #F9FAFB) !important; }
185
+ .bb-1px-dashed-D1D5DB { border-bottom: var(--cc-sf-instance-divider, 1px dashed #D1D5DB) !important; }
186
+ .c-4B5563 { color: var(--cc-sf-instance-num-color, #4B5563) !important; }
187
+ .fs-0-8125rem { font-size: var(--cc-sf-hint-size, 0.8125rem) !important; }
188
+ .pb-0 { padding-bottom: 0 !important; }
189
+ .p-18px-24px { padding: 18px 24px !important; }
190
+ .c-111827 { color: var(--ms-title-color, #111827) !important; }
191
+ .bt-1px-solid-E5E7EB { border-top: 1px solid #E5E7EB !important; }
192
+ .p-4px-10px { padding: 4px 10px !important; }
193
+ .b-FFF5F5 { background: var(--cc-sf-btn-remove-bg, #FFF5F5) !important; }
194
+ .c-E53E3E { color: var(--loc-delete-color, #E53E3E) !important; }
195
+ .b-1px-solid-FED7D7 { border: var(--cc-sf-btn-remove-border, 1px solid #FED7D7) !important; }
196
+ .br-4px { border-radius: var(--cc-sf-btn-remove-radius, 4px) !important; }
197
+ .p-8px-16px { padding: 8px 16px !important; }
198
+ .b-transparent { background: var(--cc-sf-btn-add-bg, transparent) !important; }
199
+ .c-3B82F6 { color: var(--cc-sf-input-focus-border, #3B82F6) !important; }
200
+ .b-1px-dashed-CBD5E1 { border: var(--cc-sf-btn-add-border, 1px dashed #CBD5E1) !important; }
201
+ .br-6px { border-radius: var(--cc-sf-btn-add-radius, 6px) !important; }
202
+ .b-1-5px-dashed-CBD5E1 { border: var(--cc-sf-dropzone-border, 1.5px dashed #CBD5E1) !important; }
203
+ .br-12px { border-radius: var(--cc-sf-dropzone-radius, 12px) !important; }
204
+ .bc-FFFAF1 { background-color: var(--cc-sf-dropzone-bg, #FFFAF1) !important; }
205
+ .c-94A3B8 { color: var(--cc-sf-uploaded-remove-color, #94A3B8) !important; }
206
+ .fs-0-9rem { font-size: var(--cc-sf-input-font-size, 0.9rem) !important; }
207
+ .c-64748B { color: var(--cc-sf-dropzone-hint-color, #64748B) !important; }
208
+ .b-1px-solid-E2E8F0 { border: var(--cc-sf-uploaded-item-border, 1px solid #E2E8F0) !important; }
209
+ .b-2px-solid-E2E8F0 { border: 2px solid #E2E8F0 !important; }
210
+ .pr-3-5rem { padding-right: 3.5rem !important; }
211
+ .p-0-0-875rem { padding: 0 0.875rem !important; }
212
+ .bc-FFFFFF { background-color: var(--cc-sf-input-bg, #FFFFFF) !important; }
213
+ .b-1-5px-solid-D1D5DB { border: var(--cc-sf-input-border, 1.5px solid #D1D5DB) !important; }
214
+ .mb-0-75rem { margin-bottom: 0.75rem !important; }
215
+ .mt-6px { margin-top: 6px !important; }
216
+ .pr-2-4rem { padding-right: 2.4rem !important; }
217
+ .p-0-2rem { padding: 0.2rem !important; }
218
+ .fs-1-35rem { font-size: 1.35rem !important; }
219
+ .p-4px-12px { padding: 4px 12px !important; }
220
+ .b-111827 { background: var(--cc-sf-label-color, #111827) !important; }
221
+ .b-2px-dashed-CBD5E1 { border: 2px dashed var(--cc-sf-dropzone-border, #CBD5E1) !important; }
222
+ .fs-52px { font-size: 52px !important; }
223
+ .p-12px-16px { padding: 12px 16px !important; }
224
+ .bb-1px-solid-F3F4F6 { border-bottom: 1px solid var(--cc-sf-input-disabled-border, #F3F4F6) !important; }
225
+ .b-0F172A { background: var(--mu-carousel-bg, #0F172A) !important; }
226
+ .b-3px-solid-rgba-255-255-255-0-15 { border: 3px solid rgba(255, 255, 255, 0.15) !important; }
227
+ .b-rgba-255-255-255-0-85 { background: rgba(255, 255, 255, 0.85) !important; }
228
+ .b-rgba-0-0-0-0-55 { background: rgba(0, 0, 0, 0.55) !important; }
229
+ .b-rgba-255-255-255-0-45 { background: rgba(255, 255, 255, 0.45) !important; }
230
+ .pb-4px { padding-bottom: 4px !important; }
231
+ .b-2px-solid-transparent { border: 2px solid transparent !important; }
232
+ .b-E2E8F0 { background: var(--mu-thumb-bg, #E2E8F0) !important; }
233
+ .b-1E293B { background: #1E293B !important; }
234
+ .c-EF4444 { color: #EF4444 !important; }
235
+ .b-rgba-0-0-0-0-5 { background: rgba(0, 0, 0, 0.5) !important; }
236
+ .br-16px { border-radius: var(--mu-modal-radius, 16px) !important; }
237
+ .p-24px-28px { padding: 24px 28px !important; }
238
+ .bb-1px-solid-E5E7EB { border-bottom: 1px solid var(--cc-sf-input-disabled-border, #E5E7EB) !important; }
239
+ .fs-1-25rem { font-size: 1.25rem !important; }
240
+ .p-48px-24px { padding: 48px 24px !important; }
241
+ .b-3px-solid-E2E8F0 { border: 3px solid #E2E8F0 !important; }
242
+ .p-16px-24px { padding: 16px 24px !important; }
243
+ .p-28px { padding: 28px !important; }
244
+ .b-3px-solid-transparent { border: 3px solid transparent !important; }
245
+ .b-rgba-59-130-246-0-12 { background: rgba(59, 130, 246, 0.12) !important; }
246
+ .p-20px-28px { padding: 20px 28px !important; }
247
+ .c-1A56DB { color: var(--loc-add-color, #1A56DB) !important; }
248
+ .b-1px-dashed-D1D5DB { border: 1px dashed var(--cc-sf-input-disabled-border, #D1D5DB) !important; }
249
+ .fs-40px { font-size: 40px !important; }
250
+ .c-9CA3AF { color: var(--loc-tba-icon-color, #9CA3AF) !important; }
@@ -0,0 +1,11 @@
1
+ export const DEFAULT_ITEMS_PER_PAGE = 10;
2
+ export const DEFAULT_PAGE_SIZE_OPTIONS = [5, 10, 20, 50, 100];
3
+ export const PAGINATION_THEME_DEFAULT = 'theme-1';
4
+ export const PAGINATION_THEME_DARK = 'theme-2';
5
+
6
+ // Nav
7
+ export const NAV_VARIANT_DEFAULT: 'filled' | 'underline' | 'pills' = 'filled';
8
+ export const NAV_ORIENTATION_DEFAULT: 'horizontal' | 'vertical' = 'horizontal';
9
+
10
+ // Side Nav
11
+ export const DEFAULT_SIDE_NAV_TOOLTIP_POSITION = 'right';
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Utility functions for LocalStorage operations
3
+ */
4
+ export const getLocalStorageItem = (key: string): string | null => {
5
+ return localStorage.getItem(key);
6
+ };
7
+
8
+ export const setLocalStorageItem = (key: string, value: string): void => {
9
+ localStorage.setItem(key, value);
10
+ };
11
+
12
+ export const removeLocalStorageItem = (key: string): void => {
13
+ localStorage.removeItem(key);
14
+ };
15
+
16
+ export const clearLocalStorage = (): void => {
17
+ localStorage.clear();
18
+ };
19
+
20
+ /**
21
+ * Utility functions for SessionStorage operations
22
+ */
23
+ export const getSessionStorageItem = (key: string): string | null => {
24
+ return sessionStorage.getItem(key);
25
+ };
26
+
27
+ export const setSessionStorageItem = (key: string, value: string): void => {
28
+ sessionStorage.setItem(key, value);
29
+ };
30
+
31
+ export const removeSessionStorageItem = (key: string): void => {
32
+ sessionStorage.removeItem(key);
33
+ };
34
+
35
+ export const clearSessionStorage = (): void => {
36
+ sessionStorage.clear();
37
+ };
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Utility functions for string manipulation
3
+ */
4
+ export class StringUtils {
5
+
6
+ /**
7
+ * Converts a string to camelCase.
8
+ * Example: "First Name" -> "firstName", "Profile Picture" -> "profilePicture"
9
+ */
10
+ static toCamelCase(str?: string): string {
11
+ if (!str) return '';
12
+ return str
13
+ .replace(/[^a-zA-Z0-9 ]/g, '')
14
+ .split(' ')
15
+ .filter(Boolean)
16
+ .map((word, i) =>
17
+ i === 0
18
+ ? word.charAt(0).toLowerCase() + word.slice(1)
19
+ : word.charAt(0).toUpperCase() + word.slice(1)
20
+ )
21
+ .join('');
22
+ }
23
+ }