@rchemist/listgrid 0.2.6

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 (592) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +343 -0
  3. package/dist/adapters/next/NextListGridProvider.d.ts +5 -0
  4. package/dist/adapters/next/NextListGridProvider.js +7 -0
  5. package/dist/adapters/next/NextRouterAdapter.d.ts +2 -0
  6. package/dist/adapters/next/NextRouterAdapter.js +34 -0
  7. package/dist/adapters/next/NextUrlStateAdapter.d.ts +2 -0
  8. package/dist/adapters/next/NextUrlStateAdapter.js +31 -0
  9. package/dist/adapters/next/index.d.ts +4 -0
  10. package/dist/adapters/next/index.js +12 -0
  11. package/dist/index.d.ts +1 -0
  12. package/dist/index.js +3 -0
  13. package/dist/listgrid/api/ApiClient.d.ts +20 -0
  14. package/dist/listgrid/api/ApiClient.js +32 -0
  15. package/dist/listgrid/api/index.d.ts +4 -0
  16. package/dist/listgrid/api/index.js +2 -0
  17. package/dist/listgrid/api/types.d.ts +21 -0
  18. package/dist/listgrid/api/types.js +30 -0
  19. package/dist/listgrid/auth/AuthContext.d.ts +12 -0
  20. package/dist/listgrid/auth/AuthContext.js +25 -0
  21. package/dist/listgrid/auth/SessionProvider.d.ts +4 -0
  22. package/dist/listgrid/auth/SessionProvider.js +16 -0
  23. package/dist/listgrid/auth/index.d.ts +6 -0
  24. package/dist/listgrid/auth/index.js +17 -0
  25. package/dist/listgrid/auth/types.d.ts +15 -0
  26. package/dist/listgrid/auth/types.js +12 -0
  27. package/dist/listgrid/common/func.d.ts +16 -0
  28. package/dist/listgrid/common/func.js +351 -0
  29. package/dist/listgrid/common/type.d.ts +35 -0
  30. package/dist/listgrid/common/type.js +46 -0
  31. package/dist/listgrid/components/api/ApiSpecificationButton.d.ts +5 -0
  32. package/dist/listgrid/components/api/ApiSpecificationButton.js +16 -0
  33. package/dist/listgrid/components/api/Type.d.ts +23 -0
  34. package/dist/listgrid/components/api/Type.js +8 -0
  35. package/dist/listgrid/components/api/ViewApiSpecification.d.ts +2 -0
  36. package/dist/listgrid/components/api/ViewApiSpecification.js +32 -0
  37. package/dist/listgrid/components/fields/ApplyFullAddressFields.d.ts +45 -0
  38. package/dist/listgrid/components/fields/ApplyFullAddressFields.js +177 -0
  39. package/dist/listgrid/components/fields/BirthdayField.d.ts +39 -0
  40. package/dist/listgrid/components/fields/BirthdayField.js +205 -0
  41. package/dist/listgrid/components/fields/BooleanField.d.ts +38 -0
  42. package/dist/listgrid/components/fields/BooleanField.js +141 -0
  43. package/dist/listgrid/components/fields/CheckboxField.d.ts +23 -0
  44. package/dist/listgrid/components/fields/CheckboxField.js +33 -0
  45. package/dist/listgrid/components/fields/ColorField.d.ts +18 -0
  46. package/dist/listgrid/components/fields/ColorField.js +63 -0
  47. package/dist/listgrid/components/fields/ColorPresetField.d.ts +19 -0
  48. package/dist/listgrid/components/fields/ColorPresetField.js +56 -0
  49. package/dist/listgrid/components/fields/CustomOptionField.d.ts +45 -0
  50. package/dist/listgrid/components/fields/CustomOptionField.js +176 -0
  51. package/dist/listgrid/components/fields/DateField.d.ts +34 -0
  52. package/dist/listgrid/components/fields/DateField.js +116 -0
  53. package/dist/listgrid/components/fields/DatetimeField.d.ts +29 -0
  54. package/dist/listgrid/components/fields/DatetimeField.js +93 -0
  55. package/dist/listgrid/components/fields/EmailField.d.ts +37 -0
  56. package/dist/listgrid/components/fields/EmailField.js +144 -0
  57. package/dist/listgrid/components/fields/FileField.d.ts +36 -0
  58. package/dist/listgrid/components/fields/FileField.js +157 -0
  59. package/dist/listgrid/components/fields/HtmlField.d.ts +24 -0
  60. package/dist/listgrid/components/fields/HtmlField.js +70 -0
  61. package/dist/listgrid/components/fields/ImageField.d.ts +34 -0
  62. package/dist/listgrid/components/fields/ImageField.js +125 -0
  63. package/dist/listgrid/components/fields/InlineMapField.d.ts +40 -0
  64. package/dist/listgrid/components/fields/InlineMapField.js +85 -0
  65. package/dist/listgrid/components/fields/LinkField.d.ts +26 -0
  66. package/dist/listgrid/components/fields/LinkField.js +61 -0
  67. package/dist/listgrid/components/fields/ManyToOneField.d.ts +80 -0
  68. package/dist/listgrid/components/fields/ManyToOneField.js +416 -0
  69. package/dist/listgrid/components/fields/MappedJoinField.d.ts +16 -0
  70. package/dist/listgrid/components/fields/MappedJoinField.js +29 -0
  71. package/dist/listgrid/components/fields/MarkdownField.d.ts +20 -0
  72. package/dist/listgrid/components/fields/MarkdownField.js +58 -0
  73. package/dist/listgrid/components/fields/MessageViewField.d.ts +20 -0
  74. package/dist/listgrid/components/fields/MessageViewField.js +27 -0
  75. package/dist/listgrid/components/fields/MonthField.d.ts +25 -0
  76. package/dist/listgrid/components/fields/MonthField.js +68 -0
  77. package/dist/listgrid/components/fields/MultiSelectField.d.ts +59 -0
  78. package/dist/listgrid/components/fields/MultiSelectField.js +74 -0
  79. package/dist/listgrid/components/fields/MultipleAssetField.d.ts +31 -0
  80. package/dist/listgrid/components/fields/MultipleAssetField.js +200 -0
  81. package/dist/listgrid/components/fields/NumberField.d.ts +54 -0
  82. package/dist/listgrid/components/fields/NumberField.js +216 -0
  83. package/dist/listgrid/components/fields/PasswordField.d.ts +23 -0
  84. package/dist/listgrid/components/fields/PasswordField.js +70 -0
  85. package/dist/listgrid/components/fields/PhoneNumberField.d.ts +39 -0
  86. package/dist/listgrid/components/fields/PhoneNumberField.js +91 -0
  87. package/dist/listgrid/components/fields/Preset.d.ts +68 -0
  88. package/dist/listgrid/components/fields/Preset.js +306 -0
  89. package/dist/listgrid/components/fields/ProfileField.d.ts +14 -0
  90. package/dist/listgrid/components/fields/ProfileField.js +25 -0
  91. package/dist/listgrid/components/fields/QrField.d.ts +21 -0
  92. package/dist/listgrid/components/fields/QrField.js +31 -0
  93. package/dist/listgrid/components/fields/RuleField.d.ts +11 -0
  94. package/dist/listgrid/components/fields/RuleField.js +24 -0
  95. package/dist/listgrid/components/fields/SelectField.d.ts +223 -0
  96. package/dist/listgrid/components/fields/SelectField.js +379 -0
  97. package/dist/listgrid/components/fields/SelectFieldRenderer.d.ts +35 -0
  98. package/dist/listgrid/components/fields/SelectFieldRenderer.js +363 -0
  99. package/dist/listgrid/components/fields/StatusChangeReasonModal.d.ts +18 -0
  100. package/dist/listgrid/components/fields/StatusChangeReasonModal.js +25 -0
  101. package/dist/listgrid/components/fields/StringField.d.ts +34 -0
  102. package/dist/listgrid/components/fields/StringField.js +131 -0
  103. package/dist/listgrid/components/fields/TagField.d.ts +35 -0
  104. package/dist/listgrid/components/fields/TagField.js +75 -0
  105. package/dist/listgrid/components/fields/TelephoneNumberField.d.ts +35 -0
  106. package/dist/listgrid/components/fields/TelephoneNumberField.js +121 -0
  107. package/dist/listgrid/components/fields/TextareaField.d.ts +27 -0
  108. package/dist/listgrid/components/fields/TextareaField.js +47 -0
  109. package/dist/listgrid/components/fields/TimeField.d.ts +21 -0
  110. package/dist/listgrid/components/fields/TimeField.js +40 -0
  111. package/dist/listgrid/components/fields/XrefAvailableDateMappingField.d.ts +22 -0
  112. package/dist/listgrid/components/fields/XrefAvailableDateMappingField.js +39 -0
  113. package/dist/listgrid/components/fields/XrefMappingField.d.ts +30 -0
  114. package/dist/listgrid/components/fields/XrefMappingField.js +59 -0
  115. package/dist/listgrid/components/fields/XrefPreferMappingField.d.ts +30 -0
  116. package/dist/listgrid/components/fields/XrefPreferMappingField.js +53 -0
  117. package/dist/listgrid/components/fields/XrefPriceMappingField.d.ts +33 -0
  118. package/dist/listgrid/components/fields/XrefPriceMappingField.js +56 -0
  119. package/dist/listgrid/components/fields/YearField.d.ts +32 -0
  120. package/dist/listgrid/components/fields/YearField.js +99 -0
  121. package/dist/listgrid/components/fields/abstract/AbstractDateField.d.ts +33 -0
  122. package/dist/listgrid/components/fields/abstract/AbstractDateField.js +61 -0
  123. package/dist/listgrid/components/fields/abstract/AbstractManyToOneField.d.ts +97 -0
  124. package/dist/listgrid/components/fields/abstract/AbstractManyToOneField.js +50 -0
  125. package/dist/listgrid/components/fields/abstract/CheckButtonValidationField.d.ts +22 -0
  126. package/dist/listgrid/components/fields/abstract/CheckButtonValidationField.js +92 -0
  127. package/dist/listgrid/components/fields/abstract/FormField.d.ts +250 -0
  128. package/dist/listgrid/components/fields/abstract/FormField.js +606 -0
  129. package/dist/listgrid/components/fields/abstract/ListableFormField.d.ts +140 -0
  130. package/dist/listgrid/components/fields/abstract/ListableFormField.js +285 -0
  131. package/dist/listgrid/components/fields/abstract/OptionalField.d.ts +96 -0
  132. package/dist/listgrid/components/fields/abstract/OptionalField.js +310 -0
  133. package/dist/listgrid/components/fields/abstract/index.d.ts +6 -0
  134. package/dist/listgrid/components/fields/abstract/index.js +12 -0
  135. package/dist/listgrid/components/fields/address/AddressFieldView.d.ts +9 -0
  136. package/dist/listgrid/components/fields/address/AddressFieldView.js +92 -0
  137. package/dist/listgrid/components/fields/address/AddressMapField.d.ts +33 -0
  138. package/dist/listgrid/components/fields/address/AddressMapField.js +49 -0
  139. package/dist/listgrid/components/fields/address/KakaoMap.d.ts +10 -0
  140. package/dist/listgrid/components/fields/address/KakaoMap.js +50 -0
  141. package/dist/listgrid/components/fields/address/PostCodeSelector.d.ts +9 -0
  142. package/dist/listgrid/components/fields/address/PostCodeSelector.js +125 -0
  143. package/dist/listgrid/components/fields/contentasset/ContentAssetField.d.ts +61 -0
  144. package/dist/listgrid/components/fields/contentasset/ContentAssetField.js +80 -0
  145. package/dist/listgrid/components/fields/contentasset/ContentAssetItem.d.ts +17 -0
  146. package/dist/listgrid/components/fields/contentasset/ContentAssetItem.js +67 -0
  147. package/dist/listgrid/components/fields/contentasset/components/AddContentDialog.d.ts +11 -0
  148. package/dist/listgrid/components/fields/contentasset/components/AddContentDialog.js +68 -0
  149. package/dist/listgrid/components/fields/contentasset/components/ContentAssetItemUI.d.ts +30 -0
  150. package/dist/listgrid/components/fields/contentasset/components/ContentAssetItemUI.js +38 -0
  151. package/dist/listgrid/components/fields/contentasset/hooks/useContentAsset.d.ts +36 -0
  152. package/dist/listgrid/components/fields/contentasset/hooks/useContentAsset.js +188 -0
  153. package/dist/listgrid/components/fields/contentasset/index.d.ts +2 -0
  154. package/dist/listgrid/components/fields/contentasset/index.js +1 -0
  155. package/dist/listgrid/components/fields/contentasset/types.d.ts +50 -0
  156. package/dist/listgrid/components/fields/contentasset/types.js +48 -0
  157. package/dist/listgrid/components/fields/filter/DatetimeFilter.d.ts +7 -0
  158. package/dist/listgrid/components/fields/filter/DatetimeFilter.js +46 -0
  159. package/dist/listgrid/components/fields/filter/NumberFilter.d.ts +7 -0
  160. package/dist/listgrid/components/fields/filter/NumberFilter.js +74 -0
  161. package/dist/listgrid/components/fields/rule/RuleBasedFieldView.d.ts +15 -0
  162. package/dist/listgrid/components/fields/rule/RuleBasedFieldView.js +351 -0
  163. package/dist/listgrid/components/fields/rule/RuleBasedSelector.d.ts +13 -0
  164. package/dist/listgrid/components/fields/rule/RuleBasedSelector.js +75 -0
  165. package/dist/listgrid/components/fields/rule/RuleCondition.d.ts +14 -0
  166. package/dist/listgrid/components/fields/rule/RuleCondition.js +173 -0
  167. package/dist/listgrid/components/fields/rule/RuleFieldRenderer.d.ts +7 -0
  168. package/dist/listgrid/components/fields/rule/RuleFieldRenderer.js +21 -0
  169. package/dist/listgrid/components/fields/rule/RuleFieldView.d.ts +7 -0
  170. package/dist/listgrid/components/fields/rule/RuleFieldView.js +28 -0
  171. package/dist/listgrid/components/fields/rule/Type.d.ts +54 -0
  172. package/dist/listgrid/components/fields/rule/Type.js +72 -0
  173. package/dist/listgrid/components/fields/view/CardManyToOneView.d.ts +93 -0
  174. package/dist/listgrid/components/fields/view/CardManyToOneView.js +409 -0
  175. package/dist/listgrid/components/fields/view/CopyableTextView.d.ts +11 -0
  176. package/dist/listgrid/components/fields/view/CopyableTextView.js +44 -0
  177. package/dist/listgrid/components/fields/view/DynamicSelectFieldView.d.ts +28 -0
  178. package/dist/listgrid/components/fields/view/DynamicSelectFieldView.js +119 -0
  179. package/dist/listgrid/components/fields/view/LinkFieldView.d.ts +14 -0
  180. package/dist/listgrid/components/fields/view/LinkFieldView.js +41 -0
  181. package/dist/listgrid/components/fields/view/ManyToOneListView.d.ts +8 -0
  182. package/dist/listgrid/components/fields/view/ManyToOneListView.js +25 -0
  183. package/dist/listgrid/components/fields/view/ManyToOneMultiFilterView.d.ts +12 -0
  184. package/dist/listgrid/components/fields/view/ManyToOneMultiFilterView.js +142 -0
  185. package/dist/listgrid/components/fields/view/ManyToOneView.d.ts +8 -0
  186. package/dist/listgrid/components/fields/view/ManyToOneView.js +322 -0
  187. package/dist/listgrid/components/fields/view/MultipleAssetUpload.d.ts +7 -0
  188. package/dist/listgrid/components/fields/view/MultipleAssetUpload.js +47 -0
  189. package/dist/listgrid/components/fields/view/PhoneNumberFieldView.d.ts +19 -0
  190. package/dist/listgrid/components/fields/view/PhoneNumberFieldView.js +82 -0
  191. package/dist/listgrid/components/fields/view/PhoneNumberListView.d.ts +9 -0
  192. package/dist/listgrid/components/fields/view/PhoneNumberListView.js +49 -0
  193. package/dist/listgrid/components/fields/view/SelectBoxManyToOneView.d.ts +47 -0
  194. package/dist/listgrid/components/fields/view/SelectBoxManyToOneView.js +286 -0
  195. package/dist/listgrid/components/fields/view/SmsModal.d.ts +6 -0
  196. package/dist/listgrid/components/fields/view/SmsModal.js +124 -0
  197. package/dist/listgrid/components/fields/view/TreeSelectView.d.ts +11 -0
  198. package/dist/listgrid/components/fields/view/TreeSelectView.js +118 -0
  199. package/dist/listgrid/components/fields/view/XrefAvailableDateMappingView.d.ts +19 -0
  200. package/dist/listgrid/components/fields/view/XrefAvailableDateMappingView.js +305 -0
  201. package/dist/listgrid/components/fields/view/XrefMappingView.d.ts +16 -0
  202. package/dist/listgrid/components/fields/view/XrefMappingView.js +173 -0
  203. package/dist/listgrid/components/fields/view/XrefPiceMappingView.d.ts +19 -0
  204. package/dist/listgrid/components/fields/view/XrefPiceMappingView.js +319 -0
  205. package/dist/listgrid/components/fields/view/XrefPreferMappingView.d.ts +19 -0
  206. package/dist/listgrid/components/fields/view/XrefPreferMappingView.js +261 -0
  207. package/dist/listgrid/components/fields/view/XrefPriorityMappingView.d.ts +19 -0
  208. package/dist/listgrid/components/fields/view/XrefPriorityMappingView.js +180 -0
  209. package/dist/listgrid/components/form/FieldRenderer.d.ts +23 -0
  210. package/dist/listgrid/components/form/FieldRenderer.js +292 -0
  211. package/dist/listgrid/components/form/SubCollectionRenderer.d.ts +22 -0
  212. package/dist/listgrid/components/form/SubCollectionRenderer.js +46 -0
  213. package/dist/listgrid/components/form/ViewEntityForm.d.ts +14 -0
  214. package/dist/listgrid/components/form/ViewEntityForm.js +124 -0
  215. package/dist/listgrid/components/form/ViewFieldGroup.d.ts +27 -0
  216. package/dist/listgrid/components/form/ViewFieldGroup.js +164 -0
  217. package/dist/listgrid/components/form/ViewTab.d.ts +24 -0
  218. package/dist/listgrid/components/form/ViewTab.js +68 -0
  219. package/dist/listgrid/components/form/ViewTabPanel.d.ts +14 -0
  220. package/dist/listgrid/components/form/ViewTabPanel.js +32 -0
  221. package/dist/listgrid/components/form/context/EntityFormThemeContext.d.ts +52 -0
  222. package/dist/listgrid/components/form/context/EntityFormThemeContext.js +129 -0
  223. package/dist/listgrid/components/form/context/index.d.ts +1 -0
  224. package/dist/listgrid/components/form/context/index.js +1 -0
  225. package/dist/listgrid/components/form/hooks/useAlertManager.d.ts +12 -0
  226. package/dist/listgrid/components/form/hooks/useAlertManager.js +103 -0
  227. package/dist/listgrid/components/form/hooks/useEntityFormAutoSave.d.ts +23 -0
  228. package/dist/listgrid/components/form/hooks/useEntityFormAutoSave.js +145 -0
  229. package/dist/listgrid/components/form/hooks/useEntityFormInitializer.d.ts +24 -0
  230. package/dist/listgrid/components/form/hooks/useEntityFormInitializer.js +109 -0
  231. package/dist/listgrid/components/form/hooks/useEntityFormLogic.d.ts +63 -0
  232. package/dist/listgrid/components/form/hooks/useEntityFormLogic.js +513 -0
  233. package/dist/listgrid/components/form/hooks/useEntityFormSave.d.ts +28 -0
  234. package/dist/listgrid/components/form/hooks/useEntityFormSave.js +89 -0
  235. package/dist/listgrid/components/form/hooks/useEntityFormTitle.d.ts +12 -0
  236. package/dist/listgrid/components/form/hooks/useEntityFormTitle.js +53 -0
  237. package/dist/listgrid/components/form/themes/defaultTheme.d.ts +11 -0
  238. package/dist/listgrid/components/form/themes/defaultTheme.js +129 -0
  239. package/dist/listgrid/components/form/themes/index.d.ts +1 -0
  240. package/dist/listgrid/components/form/themes/index.js +1 -0
  241. package/dist/listgrid/components/form/types/ViewEntityForm.types.d.ts +169 -0
  242. package/dist/listgrid/components/form/types/ViewEntityForm.types.js +1 -0
  243. package/dist/listgrid/components/form/types/ViewEntityFormAlerts.types.d.ts +26 -0
  244. package/dist/listgrid/components/form/types/ViewEntityFormAlerts.types.js +1 -0
  245. package/dist/listgrid/components/form/types/ViewEntityFormButtons.types.d.ts +49 -0
  246. package/dist/listgrid/components/form/types/ViewEntityFormButtons.types.js +1 -0
  247. package/dist/listgrid/components/form/types/ViewEntityFormTheme.types.d.ts +518 -0
  248. package/dist/listgrid/components/form/types/ViewEntityFormTheme.types.js +1 -0
  249. package/dist/listgrid/components/form/ui/AlertItem.d.ts +7 -0
  250. package/dist/listgrid/components/form/ui/AlertItem.js +18 -0
  251. package/dist/listgrid/components/form/ui/CreateStepButtons.d.ts +25 -0
  252. package/dist/listgrid/components/form/ui/CreateStepButtons.js +18 -0
  253. package/dist/listgrid/components/form/ui/CreateStepView.d.ts +39 -0
  254. package/dist/listgrid/components/form/ui/CreateStepView.js +50 -0
  255. package/dist/listgrid/components/form/ui/ViewEntityError.d.ts +13 -0
  256. package/dist/listgrid/components/form/ui/ViewEntityError.js +90 -0
  257. package/dist/listgrid/components/form/ui/ViewEntityFormAlerts.d.ts +3 -0
  258. package/dist/listgrid/components/form/ui/ViewEntityFormAlerts.js +24 -0
  259. package/dist/listgrid/components/form/ui/ViewEntityFormButtons.d.ts +24 -0
  260. package/dist/listgrid/components/form/ui/ViewEntityFormButtons.js +208 -0
  261. package/dist/listgrid/components/form/ui/ViewEntityFormErrors.d.ts +25 -0
  262. package/dist/listgrid/components/form/ui/ViewEntityFormErrors.js +9 -0
  263. package/dist/listgrid/components/form/ui/ViewEntityFormFields.d.ts +38 -0
  264. package/dist/listgrid/components/form/ui/ViewEntityFormFields.js +25 -0
  265. package/dist/listgrid/components/form/ui/ViewEntityFormSkeleton.d.ts +16 -0
  266. package/dist/listgrid/components/form/ui/ViewEntityFormSkeleton.js +79 -0
  267. package/dist/listgrid/components/form/ui/ViewEntityFormTitle.d.ts +15 -0
  268. package/dist/listgrid/components/form/ui/ViewEntityFormTitle.js +21 -0
  269. package/dist/listgrid/components/form/ui/ViewFieldError.d.ts +5 -0
  270. package/dist/listgrid/components/form/ui/ViewFieldError.js +12 -0
  271. package/dist/listgrid/components/form/ui/ViewHelpIcon.d.ts +5 -0
  272. package/dist/listgrid/components/form/ui/ViewHelpIcon.js +13 -0
  273. package/dist/listgrid/components/form/ui/ViewHelpText.d.ts +5 -0
  274. package/dist/listgrid/components/form/ui/ViewHelpText.js +10 -0
  275. package/dist/listgrid/components/form/ui/buttons/ClosePopupButton.d.ts +8 -0
  276. package/dist/listgrid/components/form/ui/buttons/ClosePopupButton.js +32 -0
  277. package/dist/listgrid/components/form/ui/buttons/DeleteButton.d.ts +2 -0
  278. package/dist/listgrid/components/form/ui/buttons/DeleteButton.js +101 -0
  279. package/dist/listgrid/components/form/ui/buttons/ListButton.d.ts +2 -0
  280. package/dist/listgrid/components/form/ui/buttons/ListButton.js +55 -0
  281. package/dist/listgrid/components/form/ui/buttons/SaveButton.d.ts +2 -0
  282. package/dist/listgrid/components/form/ui/buttons/SaveButton.js +55 -0
  283. package/dist/listgrid/components/helper/FieldRendererHelper.d.ts +23 -0
  284. package/dist/listgrid/components/helper/FieldRendererHelper.js +27 -0
  285. package/dist/listgrid/components/helper/ShowNotifications.d.ts +13 -0
  286. package/dist/listgrid/components/helper/ShowNotifications.js +58 -0
  287. package/dist/listgrid/components/list/AdvancedSearchForm.d.ts +17 -0
  288. package/dist/listgrid/components/list/AdvancedSearchForm.js +113 -0
  289. package/dist/listgrid/components/list/AdvancedSearchFormV2.d.ts +19 -0
  290. package/dist/listgrid/components/list/AdvancedSearchFormV2.js +347 -0
  291. package/dist/listgrid/components/list/ListGridHeader.d.ts +2 -0
  292. package/dist/listgrid/components/list/ListGridHeader.js +21 -0
  293. package/dist/listgrid/components/list/QuickSearchBar.d.ts +22 -0
  294. package/dist/listgrid/components/list/QuickSearchBar.js +17 -0
  295. package/dist/listgrid/components/list/RowItem.d.ts +2 -0
  296. package/dist/listgrid/components/list/RowItem.js +70 -0
  297. package/dist/listgrid/components/list/SubCollectionButtons.d.ts +2 -0
  298. package/dist/listgrid/components/list/SubCollectionButtons.js +36 -0
  299. package/dist/listgrid/components/list/ViewFieldSelector.d.ts +10 -0
  300. package/dist/listgrid/components/list/ViewFieldSelector.js +48 -0
  301. package/dist/listgrid/components/list/ViewListGrid.d.ts +2 -0
  302. package/dist/listgrid/components/list/ViewListGrid.js +359 -0
  303. package/dist/listgrid/components/list/context/EntityFormScopeContext.d.ts +39 -0
  304. package/dist/listgrid/components/list/context/EntityFormScopeContext.js +75 -0
  305. package/dist/listgrid/components/list/context/ListGridThemeContext.d.ts +70 -0
  306. package/dist/listgrid/components/list/context/ListGridThemeContext.js +157 -0
  307. package/dist/listgrid/components/list/context/index.d.ts +2 -0
  308. package/dist/listgrid/components/list/context/index.js +1 -0
  309. package/dist/listgrid/components/list/hooks/searchFormUrlSync.d.ts +42 -0
  310. package/dist/listgrid/components/list/hooks/searchFormUrlSync.js +212 -0
  311. package/dist/listgrid/components/list/hooks/urlStateParsers.d.ts +63 -0
  312. package/dist/listgrid/components/list/hooks/urlStateParsers.js +241 -0
  313. package/dist/listgrid/components/list/hooks/useCardSubCollectionData.d.ts +34 -0
  314. package/dist/listgrid/components/list/hooks/useCardSubCollectionData.js +181 -0
  315. package/dist/listgrid/components/list/hooks/useListGridHeader.d.ts +6 -0
  316. package/dist/listgrid/components/list/hooks/useListGridHeader.js +92 -0
  317. package/dist/listgrid/components/list/hooks/useListGridLogic.d.ts +2 -0
  318. package/dist/listgrid/components/list/hooks/useListGridLogic.js +625 -0
  319. package/dist/listgrid/components/list/hooks/useListGridUrlState.d.ts +45 -0
  320. package/dist/listgrid/components/list/hooks/useListGridUrlState.js +131 -0
  321. package/dist/listgrid/components/list/hooks/useQuickSearchBar.d.ts +22 -0
  322. package/dist/listgrid/components/list/hooks/useQuickSearchBar.js +104 -0
  323. package/dist/listgrid/components/list/hooks/useSubCollectionExpansion.d.ts +21 -0
  324. package/dist/listgrid/components/list/hooks/useSubCollectionExpansion.js +62 -0
  325. package/dist/listgrid/components/list/themes/defaultListGridTheme.d.ts +14 -0
  326. package/dist/listgrid/components/list/themes/defaultListGridTheme.js +169 -0
  327. package/dist/listgrid/components/list/themes/index.d.ts +4 -0
  328. package/dist/listgrid/components/list/themes/index.js +4 -0
  329. package/dist/listgrid/components/list/themes/variants/mainTheme.d.ts +8 -0
  330. package/dist/listgrid/components/list/themes/variants/mainTheme.js +37 -0
  331. package/dist/listgrid/components/list/themes/variants/modalTheme.d.ts +8 -0
  332. package/dist/listgrid/components/list/themes/variants/modalTheme.js +47 -0
  333. package/dist/listgrid/components/list/themes/variants/subCollectionTheme.d.ts +8 -0
  334. package/dist/listgrid/components/list/themes/variants/subCollectionTheme.js +101 -0
  335. package/dist/listgrid/components/list/types/ListGridHeader.types.d.ts +35 -0
  336. package/dist/listgrid/components/list/types/ListGridHeader.types.js +3 -0
  337. package/dist/listgrid/components/list/types/RowItem.types.d.ts +57 -0
  338. package/dist/listgrid/components/list/types/RowItem.types.js +1 -0
  339. package/dist/listgrid/components/list/types/SubCollectionButtons.type.d.ts +29 -0
  340. package/dist/listgrid/components/list/types/SubCollectionButtons.type.js +1 -0
  341. package/dist/listgrid/components/list/types/ViewListGrid.types.d.ts +152 -0
  342. package/dist/listgrid/components/list/types/ViewListGrid.types.js +2 -0
  343. package/dist/listgrid/components/list/types/ViewListGridTheme.types.d.ts +374 -0
  344. package/dist/listgrid/components/list/types/ViewListGridTheme.types.js +1 -0
  345. package/dist/listgrid/components/list/ui/CardFieldRenderer.d.ts +31 -0
  346. package/dist/listgrid/components/list/ui/CardFieldRenderer.js +71 -0
  347. package/dist/listgrid/components/list/ui/CardFieldSection.d.ts +27 -0
  348. package/dist/listgrid/components/list/ui/CardFieldSection.js +108 -0
  349. package/dist/listgrid/components/list/ui/CardItem.d.ts +28 -0
  350. package/dist/listgrid/components/list/ui/CardItem.js +376 -0
  351. package/dist/listgrid/components/list/ui/CardSubCollectionModal.d.ts +38 -0
  352. package/dist/listgrid/components/list/ui/CardSubCollectionModal.js +80 -0
  353. package/dist/listgrid/components/list/ui/CardSubCollectionView.d.ts +44 -0
  354. package/dist/listgrid/components/list/ui/CardSubCollectionView.js +238 -0
  355. package/dist/listgrid/components/list/ui/DataTransferModal.d.ts +12 -0
  356. package/dist/listgrid/components/list/ui/DataTransferModal.js +10 -0
  357. package/dist/listgrid/components/list/ui/EntireChecker.d.ts +11 -0
  358. package/dist/listgrid/components/list/ui/EntireChecker.js +46 -0
  359. package/dist/listgrid/components/list/ui/FieldSelector.d.ts +11 -0
  360. package/dist/listgrid/components/list/ui/FieldSelector.js +40 -0
  361. package/dist/listgrid/components/list/ui/FilterButton.d.ts +7 -0
  362. package/dist/listgrid/components/list/ui/FilterButton.js +5 -0
  363. package/dist/listgrid/components/list/ui/FilterDropdown.d.ts +15 -0
  364. package/dist/listgrid/components/list/ui/FilterDropdown.js +106 -0
  365. package/dist/listgrid/components/list/ui/FilterView.d.ts +12 -0
  366. package/dist/listgrid/components/list/ui/FilterView.js +22 -0
  367. package/dist/listgrid/components/list/ui/HeaderActionButtons.d.ts +10 -0
  368. package/dist/listgrid/components/list/ui/HeaderActionButtons.js +39 -0
  369. package/dist/listgrid/components/list/ui/HeaderField.d.ts +19 -0
  370. package/dist/listgrid/components/list/ui/HeaderField.js +32 -0
  371. package/dist/listgrid/components/list/ui/HeaderFieldFilter.d.ts +14 -0
  372. package/dist/listgrid/components/list/ui/HeaderFieldFilter.js +166 -0
  373. package/dist/listgrid/components/list/ui/HeaderTitle.d.ts +4 -0
  374. package/dist/listgrid/components/list/ui/HeaderTitle.js +13 -0
  375. package/dist/listgrid/components/list/ui/InlineSubCollectionView.d.ts +30 -0
  376. package/dist/listgrid/components/list/ui/InlineSubCollectionView.js +260 -0
  377. package/dist/listgrid/components/list/ui/MemoizedFilterField.d.ts +14 -0
  378. package/dist/listgrid/components/list/ui/MemoizedFilterField.js +67 -0
  379. package/dist/listgrid/components/list/ui/QuickSearchInput.d.ts +9 -0
  380. package/dist/listgrid/components/list/ui/QuickSearchInput.js +17 -0
  381. package/dist/listgrid/components/list/ui/SearchBarActions.d.ts +19 -0
  382. package/dist/listgrid/components/list/ui/SearchBarActions.js +39 -0
  383. package/dist/listgrid/components/list/ui/SortField.d.ts +8 -0
  384. package/dist/listgrid/components/list/ui/SortField.js +42 -0
  385. package/dist/listgrid/components/list/ui/SubCollectionInlineView.d.ts +23 -0
  386. package/dist/listgrid/components/list/ui/SubCollectionInlineView.js +47 -0
  387. package/dist/listgrid/components/list/ui/SubCollectionModal.d.ts +15 -0
  388. package/dist/listgrid/components/list/ui/SubCollectionModal.js +34 -0
  389. package/dist/listgrid/components/list/ui/SubCollectionViewModal.d.ts +13 -0
  390. package/dist/listgrid/components/list/ui/SubCollectionViewModal.js +33 -0
  391. package/dist/listgrid/components/list/ui/SyncTopScrollbar.d.ts +18 -0
  392. package/dist/listgrid/components/list/ui/SyncTopScrollbar.js +91 -0
  393. package/dist/listgrid/components/list/ui/TableSubCollectionView.d.ts +25 -0
  394. package/dist/listgrid/components/list/ui/TableSubCollectionView.js +213 -0
  395. package/dist/listgrid/components/list/ui/ViewColumn.d.ts +2 -0
  396. package/dist/listgrid/components/list/ui/ViewColumn.js +56 -0
  397. package/dist/listgrid/components/list/ui/ViewListGridSkeleton.d.ts +20 -0
  398. package/dist/listgrid/components/list/ui/ViewListGridSkeleton.js +82 -0
  399. package/dist/listgrid/components/list/ui/ViewRows.d.ts +15 -0
  400. package/dist/listgrid/components/list/ui/ViewRows.js +283 -0
  401. package/dist/listgrid/components/list/ui/buttons/CacheClearButton.d.ts +9 -0
  402. package/dist/listgrid/components/list/ui/buttons/CacheClearButton.js +35 -0
  403. package/dist/listgrid/components/list/ui/buttons/CreateButton.d.ts +13 -0
  404. package/dist/listgrid/components/list/ui/buttons/CreateButton.js +13 -0
  405. package/dist/listgrid/components/list/ui/buttons/PriorityButton.d.ts +11 -0
  406. package/dist/listgrid/components/list/ui/buttons/PriorityButton.js +49 -0
  407. package/dist/listgrid/components/list/ui/headerFilterStore.d.ts +8 -0
  408. package/dist/listgrid/components/list/ui/headerFilterStore.js +13 -0
  409. package/dist/listgrid/components/list/utils/mappedByFieldFilter.d.ts +21 -0
  410. package/dist/listgrid/components/list/utils/mappedByFieldFilter.js +54 -0
  411. package/dist/listgrid/components/list/utils/performanceLogger.d.ts +48 -0
  412. package/dist/listgrid/components/list/utils/performanceLogger.js +67 -0
  413. package/dist/listgrid/components/revision/RevisionField.d.ts +13 -0
  414. package/dist/listgrid/components/revision/RevisionField.js +194 -0
  415. package/dist/listgrid/config/AdvancedSearchOpenCache.d.ts +3 -0
  416. package/dist/listgrid/config/AdvancedSearchOpenCache.js +48 -0
  417. package/dist/listgrid/config/CardSubCollectionField.d.ts +133 -0
  418. package/dist/listgrid/config/CardSubCollectionField.js +164 -0
  419. package/dist/listgrid/config/CommonType.d.ts +4 -0
  420. package/dist/listgrid/config/CommonType.js +15 -0
  421. package/dist/listgrid/config/Config.d.ts +251 -0
  422. package/dist/listgrid/config/Config.js +299 -0
  423. package/dist/listgrid/config/EntityField.d.ts +148 -0
  424. package/dist/listgrid/config/EntityField.js +1 -0
  425. package/dist/listgrid/config/EntityFieldGroup.d.ts +37 -0
  426. package/dist/listgrid/config/EntityFieldGroup.js +55 -0
  427. package/dist/listgrid/config/EntityForm.d.ts +101 -0
  428. package/dist/listgrid/config/EntityForm.js +859 -0
  429. package/dist/listgrid/config/EntityFormButton.d.ts +56 -0
  430. package/dist/listgrid/config/EntityFormButton.js +42 -0
  431. package/dist/listgrid/config/EntityFormMethod.d.ts +32 -0
  432. package/dist/listgrid/config/EntityFormMethod.js +152 -0
  433. package/dist/listgrid/config/EntityFormTypes.d.ts +62 -0
  434. package/dist/listgrid/config/EntityFormTypes.js +1 -0
  435. package/dist/listgrid/config/EntityItem.d.ts +86 -0
  436. package/dist/listgrid/config/EntityItem.js +1 -0
  437. package/dist/listgrid/config/EntityTab.d.ts +26 -0
  438. package/dist/listgrid/config/EntityTab.js +68 -0
  439. package/dist/listgrid/config/InlineSubCollectionField.d.ts +184 -0
  440. package/dist/listgrid/config/InlineSubCollectionField.js +194 -0
  441. package/dist/listgrid/config/ListGrid.d.ts +56 -0
  442. package/dist/listgrid/config/ListGrid.js +183 -0
  443. package/dist/listgrid/config/ListGridViewFieldCache.d.ts +3 -0
  444. package/dist/listgrid/config/ListGridViewFieldCache.js +53 -0
  445. package/dist/listgrid/config/OnChangeEntityForm.d.ts +43 -0
  446. package/dist/listgrid/config/OnChangeEntityForm.js +266 -0
  447. package/dist/listgrid/config/RuntimeConfig.d.ts +18 -0
  448. package/dist/listgrid/config/RuntimeConfig.js +22 -0
  449. package/dist/listgrid/config/SubCollectionField.d.ts +119 -0
  450. package/dist/listgrid/config/SubCollectionField.js +241 -0
  451. package/dist/listgrid/config/TableSubCollectionField.d.ts +66 -0
  452. package/dist/listgrid/config/TableSubCollectionField.js +132 -0
  453. package/dist/listgrid/config/form/EntityFormActions.d.ts +69 -0
  454. package/dist/listgrid/config/form/EntityFormActions.js +459 -0
  455. package/dist/listgrid/config/form/EntityFormBase.d.ts +204 -0
  456. package/dist/listgrid/config/form/EntityFormBase.js +526 -0
  457. package/dist/listgrid/config/form/EntityFormData.d.ts +32 -0
  458. package/dist/listgrid/config/form/EntityFormData.js +184 -0
  459. package/dist/listgrid/config/form/EntityFormExtensions.d.ts +37 -0
  460. package/dist/listgrid/config/form/EntityFormExtensions.js +105 -0
  461. package/dist/listgrid/config/form/EntityFormValidation.d.ts +28 -0
  462. package/dist/listgrid/config/form/EntityFormValidation.js +128 -0
  463. package/dist/listgrid/extensions/EntityFormExtension.types.d.ts +52 -0
  464. package/dist/listgrid/extensions/EntityFormExtension.types.js +19 -0
  465. package/dist/listgrid/extensions/FieldExtensions.d.ts +5 -0
  466. package/dist/listgrid/extensions/FieldExtensions.js +21 -0
  467. package/dist/listgrid/form/SearchForm.d.ts +153 -0
  468. package/dist/listgrid/form/SearchForm.js +689 -0
  469. package/dist/listgrid/form/TagsInput/types.d.ts +133 -0
  470. package/dist/listgrid/form/TagsInput/types.js +1 -0
  471. package/dist/listgrid/form/Type.d.ts +50 -0
  472. package/dist/listgrid/form/Type.js +95 -0
  473. package/dist/listgrid/index.d.ts +205 -0
  474. package/dist/listgrid/index.js +244 -0
  475. package/dist/listgrid/loading/index.d.ts +6 -0
  476. package/dist/listgrid/loading/index.js +17 -0
  477. package/dist/listgrid/menu/MenuPermissionChecker.d.ts +15 -0
  478. package/dist/listgrid/menu/MenuPermissionChecker.js +15 -0
  479. package/dist/listgrid/menu/index.d.ts +1 -0
  480. package/dist/listgrid/menu/index.js +1 -0
  481. package/dist/listgrid/message/MessageProvider.d.ts +19 -0
  482. package/dist/listgrid/message/MessageProvider.js +62 -0
  483. package/dist/listgrid/message/index.d.ts +1 -0
  484. package/dist/listgrid/message/index.js +1 -0
  485. package/dist/listgrid/misc/index.d.ts +64 -0
  486. package/dist/listgrid/misc/index.js +478 -0
  487. package/dist/listgrid/router/RouterProvider.d.ts +12 -0
  488. package/dist/listgrid/router/RouterProvider.js +34 -0
  489. package/dist/listgrid/router/index.d.ts +3 -0
  490. package/dist/listgrid/router/index.js +1 -0
  491. package/dist/listgrid/router/types.d.ts +34 -0
  492. package/dist/listgrid/router/types.js +6 -0
  493. package/dist/listgrid/store/index.d.ts +24 -0
  494. package/dist/listgrid/store/index.js +40 -0
  495. package/dist/listgrid/transfer/DataExportProcessor.d.ts +18 -0
  496. package/dist/listgrid/transfer/DataExportProcessor.js +102 -0
  497. package/dist/listgrid/transfer/DataExportService.d.ts +37 -0
  498. package/dist/listgrid/transfer/DataExportService.js +225 -0
  499. package/dist/listgrid/transfer/DataExporter.d.ts +10 -0
  500. package/dist/listgrid/transfer/DataExporter.js +85 -0
  501. package/dist/listgrid/transfer/DataImportDescription.d.ts +8 -0
  502. package/dist/listgrid/transfer/DataImportDescription.js +18 -0
  503. package/dist/listgrid/transfer/DataImportProcessor.d.ts +24 -0
  504. package/dist/listgrid/transfer/DataImportProcessor.js +59 -0
  505. package/dist/listgrid/transfer/DataImportResultView.d.ts +13 -0
  506. package/dist/listgrid/transfer/DataImportResultView.js +64 -0
  507. package/dist/listgrid/transfer/DataImportSample.d.ts +10 -0
  508. package/dist/listgrid/transfer/DataImportSample.js +105 -0
  509. package/dist/listgrid/transfer/DataImporter.d.ts +8 -0
  510. package/dist/listgrid/transfer/DataImporter.js +335 -0
  511. package/dist/listgrid/transfer/DynamicDataImporter.d.ts +4 -0
  512. package/dist/listgrid/transfer/DynamicDataImporter.js +13 -0
  513. package/dist/listgrid/transfer/ExcelPasswordField.d.ts +9 -0
  514. package/dist/listgrid/transfer/ExcelPasswordField.js +23 -0
  515. package/dist/listgrid/transfer/Provider/ExcelProvider.d.ts +24 -0
  516. package/dist/listgrid/transfer/Provider/ExcelProvider.js +194 -0
  517. package/dist/listgrid/transfer/Type.d.ts +176 -0
  518. package/dist/listgrid/transfer/Type.js +568 -0
  519. package/dist/listgrid/ui/GlobalModalManager.d.ts +22 -0
  520. package/dist/listgrid/ui/GlobalModalManager.js +65 -0
  521. package/dist/listgrid/ui/UIProvider.d.ts +151 -0
  522. package/dist/listgrid/ui/UIProvider.js +292 -0
  523. package/dist/listgrid/ui/index.d.ts +2 -0
  524. package/dist/listgrid/ui/index.js +2 -0
  525. package/dist/listgrid/urlState/UrlStateProvider.d.ts +8 -0
  526. package/dist/listgrid/urlState/UrlStateProvider.js +20 -0
  527. package/dist/listgrid/urlState/index.d.ts +4 -0
  528. package/dist/listgrid/urlState/index.js +2 -0
  529. package/dist/listgrid/urlState/types.d.ts +21 -0
  530. package/dist/listgrid/urlState/types.js +14 -0
  531. package/dist/listgrid/utils/BooleanUtil.d.ts +1 -0
  532. package/dist/listgrid/utils/BooleanUtil.js +9 -0
  533. package/dist/listgrid/utils/CompareUtil.d.ts +7 -0
  534. package/dist/listgrid/utils/CompareUtil.js +87 -0
  535. package/dist/listgrid/utils/PhoneUtil.d.ts +19 -0
  536. package/dist/listgrid/utils/PhoneUtil.js +38 -0
  537. package/dist/listgrid/utils/RequestUtil.d.ts +6 -0
  538. package/dist/listgrid/utils/RequestUtil.js +6 -0
  539. package/dist/listgrid/utils/StringUtil.d.ts +32 -0
  540. package/dist/listgrid/utils/StringUtil.js +316 -0
  541. package/dist/listgrid/utils/classNames.d.ts +21 -0
  542. package/dist/listgrid/utils/classNames.js +29 -0
  543. package/dist/listgrid/utils/cn.d.ts +12 -0
  544. package/dist/listgrid/utils/cn.js +15 -0
  545. package/dist/listgrid/utils/hash.d.ts +1 -0
  546. package/dist/listgrid/utils/hash.js +15 -0
  547. package/dist/listgrid/utils/i18n.d.ts +16 -0
  548. package/dist/listgrid/utils/i18n.js +31 -0
  549. package/dist/listgrid/utils/index.d.ts +10 -0
  550. package/dist/listgrid/utils/index.js +17 -0
  551. package/dist/listgrid/utils/jsonUtils.d.ts +4 -0
  552. package/dist/listgrid/utils/jsonUtils.js +77 -0
  553. package/dist/listgrid/utils/lazy.d.ts +10 -0
  554. package/dist/listgrid/utils/lazy.js +13 -0
  555. package/dist/listgrid/utils/simpleCrypt.d.ts +4 -0
  556. package/dist/listgrid/utils/simpleCrypt.js +79 -0
  557. package/dist/listgrid/validations/CustomValidation.d.ts +8 -0
  558. package/dist/listgrid/validations/CustomValidation.js +10 -0
  559. package/dist/listgrid/validations/EmailValidation.d.ts +4 -0
  560. package/dist/listgrid/validations/EmailValidation.js +7 -0
  561. package/dist/listgrid/validations/IpAddressValidation.d.ts +26 -0
  562. package/dist/listgrid/validations/IpAddressValidation.js +57 -0
  563. package/dist/listgrid/validations/MinMaxNumberValidation.d.ts +14 -0
  564. package/dist/listgrid/validations/MinMaxNumberValidation.js +28 -0
  565. package/dist/listgrid/validations/PasswordValidation.d.ts +4 -0
  566. package/dist/listgrid/validations/PasswordValidation.js +7 -0
  567. package/dist/listgrid/validations/PhoneNumberValidation.d.ts +12 -0
  568. package/dist/listgrid/validations/PhoneNumberValidation.js +24 -0
  569. package/dist/listgrid/validations/RegexFormularValidation.d.ts +7 -0
  570. package/dist/listgrid/validations/RegexFormularValidation.js +28 -0
  571. package/dist/listgrid/validations/RegexValidation.d.ts +8 -0
  572. package/dist/listgrid/validations/RegexValidation.js +17 -0
  573. package/dist/listgrid/validations/RequiredValidation.d.ts +7 -0
  574. package/dist/listgrid/validations/RequiredValidation.js +12 -0
  575. package/dist/listgrid/validations/StringValidation.d.ts +17 -0
  576. package/dist/listgrid/validations/StringValidation.js +33 -0
  577. package/dist/listgrid/validations/TelephoneNumberValidation.d.ts +12 -0
  578. package/dist/listgrid/validations/TelephoneNumberValidation.js +24 -0
  579. package/dist/listgrid/validations/Validation.d.ts +63 -0
  580. package/dist/listgrid/validations/Validation.js +72 -0
  581. package/dist/listgrid/view/ViewEntityFormWrapper.d.ts +16 -0
  582. package/dist/listgrid/view/ViewEntityFormWrapper.js +98 -0
  583. package/dist/listgrid/view/ViewListGridWrapper.d.ts +10 -0
  584. package/dist/listgrid/view/ViewListGridWrapper.js +96 -0
  585. package/dist/styles/base.css +116 -0
  586. package/dist/styles/components.css +1404 -0
  587. package/dist/styles/layouts.css +3206 -0
  588. package/dist/styles/primitives.css +1542 -0
  589. package/dist/styles/tokens.css +218 -0
  590. package/dist/styles.css +6486 -0
  591. package/docs/PRIMITIVES.md +271 -0
  592. package/package.json +201 -0
@@ -0,0 +1,3206 @@
1
+ /*
2
+ * @rchemist/listgrid layouts stylesheet (Phase 7 split).
3
+ *
4
+ * Structural composite classes — flex/grid layout for the listgrid panel,
5
+ * cards, forms, subcollections, etc. Loaded AFTER primitives.css so composite
6
+ * classes can override primitive properties, and BEFORE components.css /
7
+ * base.css so those can tweak or override layout pieces.
8
+ */
9
+
10
+ /* BEGIN — unlayered (see top comment for rationale) */
11
+ /* ------------------------------------------------------------------ *
12
+ * Layout primitives
13
+ * ------------------------------------------------------------------ */
14
+ .rcm-stack {
15
+ display: flex;
16
+ flex-direction: column;
17
+ gap: var(--rcm-space-md);
18
+ }
19
+
20
+ .rcm-row {
21
+ display: flex;
22
+ flex-direction: row;
23
+ align-items: center;
24
+ gap: var(--rcm-space-sm);
25
+ }
26
+
27
+ .rcm-row-center {
28
+ display: flex;
29
+ flex-direction: row;
30
+ align-items: center;
31
+ justify-content: center;
32
+ gap: var(--rcm-space-sm);
33
+ }
34
+
35
+ .rcm-row-between {
36
+ display: flex;
37
+ flex-direction: row;
38
+ align-items: center;
39
+ justify-content: space-between;
40
+ gap: var(--rcm-space-sm);
41
+ }
42
+
43
+ .rcm-grid {
44
+ display: grid;
45
+ gap: var(--rcm-space-md);
46
+ }
47
+
48
+ /* ------------------------------------------------------------------ *
49
+ * Field — generic wrapper for every form field
50
+ * ------------------------------------------------------------------ */
51
+ .rcm-field-root {
52
+ display: flex;
53
+ flex-direction: column;
54
+ gap: var(--rcm-space-xs);
55
+ }
56
+
57
+ .rcm-field-label {
58
+ font-size: var(--rcm-font-size-sm);
59
+ font-weight: var(--rcm-font-weight-medium);
60
+ color: var(--rcm-color-text);
61
+ }
62
+
63
+ .rcm-field-label-required::after {
64
+ content: ' *';
65
+ color: var(--rcm-color-error);
66
+ }
67
+
68
+ .rcm-field-description {
69
+ font-size: var(--rcm-font-size-xs);
70
+ color: var(--rcm-color-text-muted);
71
+ }
72
+
73
+ .rcm-field-error {
74
+ font-size: var(--rcm-font-size-xs);
75
+ color: var(--rcm-color-error);
76
+ }
77
+
78
+ .rcm-field-input {
79
+ box-sizing: border-box;
80
+ width: 100%;
81
+ height: var(--rcm-size-input-height);
82
+ padding: 0 var(--rcm-space-md);
83
+ font-family: inherit;
84
+ font-size: var(--rcm-font-size-md);
85
+ line-height: var(--rcm-line-height-normal);
86
+ color: var(--rcm-color-text);
87
+ background: var(--rcm-color-surface);
88
+ border: var(--rcm-border-width) solid var(--rcm-color-border);
89
+ border-radius: var(--rcm-radius-md);
90
+ transition: border-color var(--rcm-transition-fast);
91
+ }
92
+
93
+ .rcm-field-input:hover {
94
+ border-color: var(--rcm-color-border-hover);
95
+ }
96
+
97
+ .rcm-field-input:focus,
98
+ .rcm-field-input:focus-visible {
99
+ outline: none;
100
+ border-color: var(--rcm-color-border-focus);
101
+ }
102
+
103
+ .rcm-field-input[aria-invalid='true'] {
104
+ border-color: var(--rcm-color-error);
105
+ }
106
+
107
+ .rcm-field-input[disabled],
108
+ .rcm-field-input[readonly] {
109
+ background: var(--rcm-color-surface-disabled);
110
+ color: var(--rcm-color-text-disabled);
111
+ cursor: not-allowed;
112
+ }
113
+
114
+ /* ------------------------------------------------------------------ *
115
+ * Field selector (Advanced Search 에서 검색 필드 선택)
116
+ * ------------------------------------------------------------------ */
117
+ .rcm-field-selector {
118
+ background: var(--rcm-color-surface);
119
+ border: var(--rcm-border-width) solid var(--rcm-color-border);
120
+ border-radius: var(--rcm-radius-lg);
121
+ }
122
+
123
+ .rcm-field-selector-header {
124
+ display: flex;
125
+ align-items: center;
126
+ justify-content: space-between;
127
+ padding: var(--rcm-space-sm) var(--rcm-space-md);
128
+ cursor: pointer;
129
+ transition: background var(--rcm-transition-fast);
130
+ }
131
+
132
+ .rcm-field-selector-header:hover {
133
+ background: var(--rcm-color-surface-muted);
134
+ }
135
+
136
+ .rcm-field-selector-header-left,
137
+ .rcm-field-selector-header-right {
138
+ display: flex;
139
+ align-items: center;
140
+ gap: var(--rcm-space-sm);
141
+ }
142
+
143
+ /* .rcm-field-selector-title / -count / -hint / -toggle / -chevron removed — JSX uses rcm-text / rcm-badge / rcm-icon-btn / rcm-icon primitives. */
144
+
145
+ .rcm-field-selector-body {
146
+ border-top: var(--rcm-border-width) solid var(--rcm-color-border);
147
+ }
148
+
149
+ .rcm-field-selector-search-row {
150
+ display: flex;
151
+ align-items: center;
152
+ gap: var(--rcm-space-sm);
153
+ padding: var(--rcm-space-sm) var(--rcm-space-md);
154
+ border-bottom: var(--rcm-border-width) solid var(--rcm-color-border);
155
+ }
156
+
157
+ .rcm-field-selector-search-input-wrap {
158
+ position: relative;
159
+ flex: 1;
160
+ }
161
+
162
+ .rcm-field-selector-search-icon {
163
+ position: absolute;
164
+ left: var(--rcm-space-sm);
165
+ top: 50%;
166
+ transform: translateY(-50%);
167
+ }
168
+
169
+ /* .rcm-field-selector-search-input / -action* removed — JSX uses rcm-input / rcm-button primitives. */
170
+
171
+ .rcm-field-selector-list {
172
+ max-height: 12rem;
173
+ overflow-y: auto;
174
+ }
175
+
176
+ .rcm-field-selector-grid {
177
+ display: grid;
178
+ grid-template-columns: repeat(2, minmax(0, 1fr));
179
+ gap: var(--rcm-space-xs);
180
+ padding: var(--rcm-space-sm);
181
+ }
182
+
183
+ @media (min-width: 640px) {
184
+ .rcm-field-selector-grid {
185
+ grid-template-columns: repeat(3, minmax(0, 1fr));
186
+ }
187
+ }
188
+
189
+ @media (min-width: 768px) {
190
+ .rcm-field-selector-grid {
191
+ grid-template-columns: repeat(4, minmax(0, 1fr));
192
+ }
193
+ }
194
+
195
+ /* .rcm-field-selector-chip / -chip-selected removed — JSX uses rcm-chip data-state="selected". */
196
+
197
+ .rcm-field-selector-chip-check {
198
+ flex-shrink: 0;
199
+ width: 1rem;
200
+ height: 1rem;
201
+ border: var(--rcm-border-width) solid var(--rcm-color-border-hover);
202
+ border-radius: var(--rcm-radius-sm);
203
+ display: flex;
204
+ align-items: center;
205
+ justify-content: center;
206
+ }
207
+
208
+ .rcm-field-selector-chip-check-selected {
209
+ background: var(--rcm-color-primary);
210
+ border-color: var(--rcm-color-primary);
211
+ }
212
+
213
+ .rcm-field-selector-chip-check-icon {
214
+ color: var(--rcm-color-primary-text);
215
+ }
216
+
217
+ .rcm-field-selector-empty {
218
+ text-align: center;
219
+ padding: var(--rcm-space-lg);
220
+ }
221
+
222
+ /* ------------------------------------------------------------------ *
223
+ * Card view — section 카드 (FieldGroup 카드 렌더링) + field row
224
+ * ------------------------------------------------------------------ */
225
+ .rcm-card-section {
226
+ background: color-mix(in srgb, var(--rcm-color-surface-muted) 50%, var(--rcm-color-surface));
227
+ border: var(--rcm-border-width) solid var(--rcm-color-border);
228
+ border-radius: var(--rcm-radius-lg);
229
+ overflow: hidden;
230
+ }
231
+
232
+ .rcm-card-section-header {
233
+ padding: 0.625rem var(--rcm-space-lg);
234
+ background: var(--rcm-color-surface-muted);
235
+ border-bottom: var(--rcm-border-width) solid var(--rcm-color-border);
236
+ cursor: pointer;
237
+ }
238
+
239
+ .rcm-card-section-header-row {
240
+ display: flex;
241
+ align-items: center;
242
+ justify-content: space-between;
243
+ }
244
+
245
+ .rcm-card-section-title {
246
+ margin: 0;
247
+ font-size: var(--rcm-font-size-xs);
248
+ font-weight: var(--rcm-font-weight-semibold);
249
+ text-transform: uppercase;
250
+ letter-spacing: 0.05em;
251
+ color: var(--rcm-color-text-muted);
252
+ }
253
+
254
+ .rcm-card-section-header-actions {
255
+ display: flex;
256
+ align-items: center;
257
+ gap: var(--rcm-space-sm);
258
+ }
259
+
260
+ .rcm-card-section-help-icon {
261
+ width: 1rem;
262
+ height: 1rem;
263
+ color: var(--rcm-color-text-muted);
264
+ cursor: help;
265
+ }
266
+
267
+ .rcm-card-section-toggle {
268
+ padding: 2px;
269
+ background: transparent;
270
+ border: 0;
271
+ border-radius: var(--rcm-radius-sm);
272
+ cursor: pointer;
273
+ transition: background var(--rcm-transition-fast);
274
+ }
275
+
276
+ .rcm-card-section-toggle:hover {
277
+ background: var(--rcm-color-surface-hover);
278
+ }
279
+
280
+ .rcm-card-section-chevron {
281
+ width: 1rem;
282
+ height: 1rem;
283
+ color: var(--rcm-color-text-muted);
284
+ transition: transform 200ms;
285
+ }
286
+
287
+ .rcm-card-section-body {
288
+ margin: 0;
289
+ padding: var(--rcm-space-sm) var(--rcm-space-lg);
290
+ }
291
+
292
+ .rcm-card-field-row {
293
+ display: grid;
294
+ grid-template-columns: repeat(3, minmax(0, 1fr));
295
+ gap: 0.75rem;
296
+ padding: 0.625rem 0;
297
+ border-bottom: var(--rcm-border-width) solid
298
+ color-mix(in srgb, var(--rcm-color-border) 50%, transparent);
299
+ }
300
+
301
+ .rcm-card-field-row:last-child {
302
+ border-bottom: 0;
303
+ }
304
+
305
+ .rcm-card-field-label {
306
+ display: flex;
307
+ align-items: center;
308
+ gap: var(--rcm-space-xs);
309
+ font-size: var(--rcm-font-size-xs);
310
+ font-weight: var(--rcm-font-weight-medium);
311
+ color: var(--rcm-color-text-muted);
312
+ }
313
+
314
+ .rcm-card-field-value {
315
+ grid-column: span 2 / span 2;
316
+ font-size: var(--rcm-font-size-sm);
317
+ color: var(--rcm-color-text);
318
+ }
319
+
320
+ .rcm-card-field-help-icon {
321
+ width: 0.75rem;
322
+ height: 0.75rem;
323
+ color: var(--rcm-color-text-muted);
324
+ cursor: help;
325
+ }
326
+
327
+ .rcm-card-field-help-text {
328
+ font-size: var(--rcm-font-size-xs);
329
+ color: var(--rcm-color-text-disabled);
330
+ }
331
+
332
+ .rcm-card-field-value-inner {
333
+ display: flex;
334
+ flex-direction: column;
335
+ gap: 0.25rem;
336
+ }
337
+
338
+ .rcm-card-field-loading {
339
+ display: inline-block;
340
+ height: 1rem;
341
+ width: 5rem;
342
+ background: var(--rcm-color-surface-muted);
343
+ border-radius: var(--rcm-radius-sm);
344
+ animation: rcm-pulse 2s ease-in-out infinite;
345
+ }
346
+
347
+ /* ------------------------------------------------------------------ *
348
+ * CardManyToOneView — 카드 형태의 ManyToOne 선택 UI
349
+ * ------------------------------------------------------------------ */
350
+ .rcm-card-m2o-wrapper {
351
+ width: 100%;
352
+ }
353
+ .rcm-card-m2o-stack {
354
+ display: flex;
355
+ flex-direction: column;
356
+ gap: var(--rcm-space-md);
357
+ }
358
+
359
+ .rcm-card-m2o {
360
+ position: relative;
361
+ padding: var(--rcm-space-lg);
362
+ border: var(--rcm-border-width) solid var(--rcm-color-border);
363
+ border-radius: var(--rcm-radius-lg);
364
+ background: var(--rcm-color-surface);
365
+ transition: all var(--rcm-transition-fast);
366
+ }
367
+
368
+ .rcm-card-m2o-clickable {
369
+ cursor: pointer;
370
+ }
371
+
372
+ .rcm-card-m2o-clickable:hover {
373
+ box-shadow: var(--rcm-shadow-sm);
374
+ }
375
+
376
+ .rcm-card-m2o-selected {
377
+ border-color: color-mix(in srgb, var(--rcm-color-primary) 40%, transparent);
378
+ background: color-mix(in srgb, var(--rcm-color-primary) 2%, var(--rcm-color-surface));
379
+ }
380
+
381
+ .rcm-card-m2o-default {
382
+ border-color: var(--rcm-color-border);
383
+ }
384
+
385
+ .rcm-card-m2o-default:hover {
386
+ border-color: var(--rcm-color-border-hover);
387
+ }
388
+
389
+ .rcm-card-m2o-check {
390
+ position: absolute;
391
+ right: var(--rcm-space-sm);
392
+ top: var(--rcm-space-sm);
393
+ display: flex;
394
+ align-items: center;
395
+ justify-content: center;
396
+ width: 1.25rem;
397
+ height: 1.25rem;
398
+ border-radius: 9999px;
399
+ background: color-mix(in srgb, var(--rcm-color-primary) 70%, transparent);
400
+ color: var(--rcm-color-primary-text);
401
+ }
402
+
403
+ .rcm-card-m2o-image-wrap {
404
+ margin-bottom: var(--rcm-space-md);
405
+ aspect-ratio: 16 / 9;
406
+ width: 100%;
407
+ overflow: hidden;
408
+ border-radius: var(--rcm-radius-md);
409
+ background: var(--rcm-color-surface-muted);
410
+ }
411
+
412
+ .rcm-card-m2o-image {
413
+ width: 100%;
414
+ height: 100%;
415
+ object-fit: cover;
416
+ }
417
+
418
+ /* .rcm-card-m2o-badge / -badge-primary / -badge-neutral / -title removed — JSX uses rcm-badge + rcm-text. */
419
+
420
+ .rcm-card-m2o-title-sm {
421
+ font-size: var(--rcm-font-size-sm);
422
+ }
423
+
424
+ .rcm-card-m2o-description {
425
+ margin-top: var(--rcm-space-xs);
426
+ font-size: var(--rcm-font-size-sm);
427
+ color: var(--rcm-color-text-muted);
428
+ }
429
+
430
+ .rcm-card-m2o-description-clamp {
431
+ font-size: var(--rcm-font-size-xs);
432
+ display: -webkit-box;
433
+ -webkit-line-clamp: 2;
434
+ -webkit-box-orient: vertical;
435
+ overflow: hidden;
436
+ }
437
+
438
+ .rcm-card-m2o-action {
439
+ margin-top: var(--rcm-space-sm);
440
+ }
441
+
442
+ .rcm-card-m2o-actions {
443
+ display: flex;
444
+ align-items: center;
445
+ gap: var(--rcm-space-md);
446
+ }
447
+
448
+ /* .rcm-card-m2o-action-btn* removed — JSX uses rcm-button data-variant primitive. */
449
+
450
+ .rcm-card-m2o-loading {
451
+ display: flex;
452
+ align-items: center;
453
+ justify-content: center;
454
+ padding: 2rem 0;
455
+ }
456
+
457
+ .rcm-card-m2o-spinner {
458
+ width: 1.5rem;
459
+ height: 1.5rem;
460
+ border: 2px solid var(--rcm-color-primary);
461
+ border-top-color: transparent;
462
+ border-radius: 9999px;
463
+ animation: rcm-spin 1s linear infinite;
464
+ }
465
+
466
+ .rcm-card-m2o-spinner-inverse {
467
+ width: 1rem;
468
+ height: 1rem;
469
+ border: 2px solid var(--rcm-color-primary-text);
470
+ border-top-color: transparent;
471
+ }
472
+
473
+ .rcm-card-m2o-empty-readonly {
474
+ padding: var(--rcm-space-lg) 0;
475
+ font-size: var(--rcm-font-size-sm);
476
+ color: var(--rcm-color-text-muted);
477
+ }
478
+
479
+ .rcm-card-m2o-change-header {
480
+ display: flex;
481
+ align-items: center;
482
+ justify-content: space-between;
483
+ margin-bottom: var(--rcm-space-lg);
484
+ padding-bottom: 0.75rem;
485
+ border-bottom: var(--rcm-border-width) solid var(--rcm-color-border);
486
+ }
487
+
488
+ /* .rcm-card-m2o-change-title / -change-cancel removed — JSX uses rcm-text + rcm-button. */
489
+
490
+ .rcm-card-m2o-search-section {
491
+ margin-bottom: var(--rcm-space-lg);
492
+ }
493
+
494
+ .rcm-card-m2o-search-row {
495
+ position: relative;
496
+ display: flex;
497
+ gap: var(--rcm-space-sm);
498
+ }
499
+
500
+ .rcm-card-m2o-search-input-wrap {
501
+ position: relative;
502
+ flex: 1;
503
+ }
504
+
505
+ .rcm-card-m2o-search-icon {
506
+ position: absolute;
507
+ left: 0.75rem;
508
+ top: 50%;
509
+ transform: translateY(-50%);
510
+ color: var(--rcm-color-text-muted);
511
+ pointer-events: none;
512
+ }
513
+
514
+ .rcm-card-m2o-search-input {
515
+ width: 100%;
516
+ padding: 0.625rem 1rem 0.625rem 2.5rem;
517
+ font-size: var(--rcm-font-size-sm);
518
+ background: var(--rcm-color-surface);
519
+ border: var(--rcm-border-width) solid var(--rcm-color-border-hover);
520
+ border-radius: var(--rcm-radius-lg);
521
+ }
522
+
523
+ .rcm-card-m2o-search-input:focus {
524
+ outline: none;
525
+ border-color: var(--rcm-color-primary);
526
+ box-shadow: 0 0 0 2px color-mix(in srgb, var(--rcm-color-primary) 20%, transparent);
527
+ }
528
+
529
+ .rcm-card-m2o-search-clear {
530
+ position: absolute;
531
+ right: 0.75rem;
532
+ top: 50%;
533
+ transform: translateY(-50%);
534
+ padding: 0;
535
+ background: transparent;
536
+ border: 0;
537
+ color: var(--rcm-color-text-muted);
538
+ cursor: pointer;
539
+ transition: color var(--rcm-transition-fast);
540
+ }
541
+
542
+ .rcm-card-m2o-search-clear:hover {
543
+ color: var(--rcm-color-text);
544
+ }
545
+
546
+ /* .rcm-card-m2o-search-submit removed — JSX uses rcm-button data-variant="primary". */
547
+
548
+ .rcm-card-m2o-search-status {
549
+ margin-top: var(--rcm-space-sm);
550
+ font-size: var(--rcm-font-size-xs);
551
+ color: var(--rcm-color-text-muted);
552
+ }
553
+
554
+ .rcm-card-m2o-search-empty {
555
+ display: flex;
556
+ flex-direction: column;
557
+ align-items: center;
558
+ justify-content: center;
559
+ padding: 3rem 0;
560
+ color: var(--rcm-color-text-disabled);
561
+ }
562
+
563
+ .rcm-card-m2o-search-empty-icon {
564
+ margin-bottom: 0.75rem;
565
+ opacity: 0.5;
566
+ }
567
+
568
+ /* .rcm-card-m2o-search-empty-text removed — JSX uses rcm-text. */
569
+
570
+ .rcm-card-m2o-grid {
571
+ display: grid;
572
+ gap: var(--rcm-space-lg);
573
+ }
574
+
575
+ .rcm-card-m2o-no-results {
576
+ display: flex;
577
+ flex-direction: column;
578
+ align-items: center;
579
+ justify-content: center;
580
+ padding: 2rem 0;
581
+ color: var(--rcm-color-text-muted);
582
+ }
583
+
584
+ .rcm-card-m2o-pagination {
585
+ margin-top: var(--rcm-space-lg);
586
+ display: flex;
587
+ align-items: center;
588
+ justify-content: center;
589
+ gap: var(--rcm-space-sm);
590
+ }
591
+
592
+ /* .rcm-card-m2o-page-nav removed — JSX uses rcm-icon-btn. */
593
+
594
+ .rcm-card-m2o-page-numbers {
595
+ display: flex;
596
+ align-items: center;
597
+ gap: 0.25rem;
598
+ }
599
+
600
+ /* .rcm-card-m2o-page / -page-active removed — JSX uses rcm-button data-variant. */
601
+
602
+ /* ------------------------------------------------------------------ *
603
+ * CardItem — 리스트 카드 variant (group hover + header + tabs + body)
604
+ * ------------------------------------------------------------------ */
605
+ .rcm-card-item {
606
+ position: relative;
607
+ border-radius: 0.75rem;
608
+ background: var(--rcm-color-surface);
609
+ border: var(--rcm-border-width) solid var(--rcm-color-border);
610
+ box-shadow: var(--rcm-shadow-sm);
611
+ transition: all 200ms;
612
+ }
613
+
614
+ .rcm-card-item-hover:hover {
615
+ border-color: var(--rcm-color-border-hover);
616
+ box-shadow: var(--rcm-shadow-md);
617
+ }
618
+
619
+ .rcm-card-item-clickable {
620
+ cursor: pointer;
621
+ }
622
+
623
+ .rcm-card-item-body {
624
+ padding: var(--rcm-space-lg);
625
+ }
626
+
627
+ .rcm-card-item-header {
628
+ padding: var(--rcm-space-lg) 1.25rem;
629
+ border-bottom: var(--rcm-border-width) solid
630
+ color-mix(in srgb, var(--rcm-color-border) 50%, transparent);
631
+ }
632
+
633
+ .rcm-card-item-header-row {
634
+ display: flex;
635
+ align-items: flex-start;
636
+ justify-content: space-between;
637
+ gap: 0.75rem;
638
+ }
639
+
640
+ .rcm-card-item-header-left {
641
+ flex: 1;
642
+ min-width: 0;
643
+ }
644
+
645
+ .rcm-card-item-title-row {
646
+ display: flex;
647
+ align-items: center;
648
+ gap: 0.625rem;
649
+ flex-wrap: wrap;
650
+ }
651
+
652
+ .rcm-card-item-title {
653
+ font-size: var(--rcm-font-size-md);
654
+ font-weight: var(--rcm-font-weight-semibold);
655
+ color: var(--rcm-color-text);
656
+ overflow: hidden;
657
+ text-overflow: ellipsis;
658
+ white-space: nowrap;
659
+ margin: 0;
660
+ }
661
+
662
+ .rcm-card-item-actions {
663
+ display: flex;
664
+ align-items: center;
665
+ gap: 0.25rem;
666
+ flex-shrink: 0;
667
+ opacity: 0;
668
+ transition: opacity var(--rcm-transition-fast);
669
+ }
670
+
671
+ .rcm-card-item:hover .rcm-card-item-actions {
672
+ opacity: 1;
673
+ }
674
+
675
+ /* rcm-card-item-action-btn* removed in Phase 6 — JSX now uses rcm-icon-btn primitive. */
676
+
677
+ .rcm-card-item-chevron-wrap {
678
+ padding: 0.375rem;
679
+ }
680
+
681
+ /* .rcm-card-item-chevron-icon removed — JSX uses rcm-icon data-size data-tone. */
682
+
683
+ .rcm-card-item-tabbar {
684
+ padding: 0.75rem 1.25rem 0;
685
+ border-bottom: var(--rcm-border-width) solid
686
+ color-mix(in srgb, var(--rcm-color-border) 50%, transparent);
687
+ }
688
+
689
+ .rcm-card-item-tabnav {
690
+ display: flex;
691
+ gap: 0.25rem;
692
+ margin-bottom: -1px;
693
+ overflow-x: auto;
694
+ }
695
+
696
+ .rcm-card-item-tab {
697
+ padding: var(--rcm-space-sm) 0.75rem;
698
+ font-size: var(--rcm-font-size-xs);
699
+ font-weight: var(--rcm-font-weight-medium);
700
+ border-top-left-radius: var(--rcm-radius-lg);
701
+ border-top-right-radius: var(--rcm-radius-lg);
702
+ background: transparent;
703
+ border: 0;
704
+ color: var(--rcm-color-text-muted);
705
+ cursor: pointer;
706
+ white-space: nowrap;
707
+ transition:
708
+ background var(--rcm-transition-fast),
709
+ color var(--rcm-transition-fast);
710
+ }
711
+
712
+ .rcm-card-item-tab:hover {
713
+ background: var(--rcm-color-surface-muted);
714
+ color: var(--rcm-color-text);
715
+ }
716
+
717
+ .rcm-card-item-tab-active {
718
+ background: var(--rcm-color-surface-muted);
719
+ color: var(--rcm-color-text);
720
+ border-bottom: 2px solid var(--rcm-color-primary);
721
+ }
722
+
723
+ .rcm-card-item-empty {
724
+ font-size: var(--rcm-font-size-sm);
725
+ color: var(--rcm-color-text-disabled);
726
+ font-style: italic;
727
+ text-align: center;
728
+ padding: var(--rcm-space-lg) 0;
729
+ }
730
+
731
+ .rcm-card-item-sections,
732
+ .rcm-card-item-skel-stack {
733
+ display: flex;
734
+ flex-direction: column;
735
+ gap: 0.75rem;
736
+ }
737
+
738
+ .rcm-card-item-skel-group {
739
+ border: var(--rcm-border-width) solid color-mix(in srgb, var(--rcm-color-border) 50%, transparent);
740
+ border-radius: var(--rcm-radius-lg);
741
+ padding: var(--rcm-space-lg);
742
+ }
743
+
744
+ .rcm-card-item-skel-line {
745
+ height: 1rem;
746
+ background: var(--rcm-color-surface-muted);
747
+ border-radius: var(--rcm-radius-sm);
748
+ animation: rcm-pulse 2s ease-in-out infinite;
749
+ }
750
+
751
+ .rcm-card-item-skel-line-title {
752
+ width: 8rem;
753
+ height: 1.5rem;
754
+ }
755
+ .rcm-card-item-skel-line-subtitle {
756
+ width: 12rem;
757
+ }
758
+ .rcm-card-item-skel-line-label {
759
+ height: 0.75rem;
760
+ width: 4rem;
761
+ }
762
+ .rcm-card-item-skel-line-value {
763
+ height: 0.75rem;
764
+ width: 6rem;
765
+ grid-column: span 2;
766
+ }
767
+
768
+ .rcm-card-item-skel-rows {
769
+ display: flex;
770
+ flex-direction: column;
771
+ gap: var(--rcm-space-sm);
772
+ }
773
+
774
+ .rcm-card-item-skel-row {
775
+ display: grid;
776
+ grid-template-columns: repeat(3, minmax(0, 1fr));
777
+ gap: var(--rcm-space-lg);
778
+ }
779
+
780
+ .rcm-card-item-subcollections {
781
+ display: flex;
782
+ flex-direction: column;
783
+ gap: var(--rcm-space-lg);
784
+ padding-top: var(--rcm-space-sm);
785
+ }
786
+
787
+ .rcm-card-item-sub {
788
+ display: flex;
789
+ flex-direction: column;
790
+ gap: var(--rcm-space-sm);
791
+ }
792
+
793
+ .rcm-card-item-sub-label {
794
+ margin: 0;
795
+ font-size: var(--rcm-font-size-xs);
796
+ font-weight: var(--rcm-font-weight-semibold);
797
+ text-transform: uppercase;
798
+ letter-spacing: 0.05em;
799
+ color: var(--rcm-color-text-muted);
800
+ }
801
+
802
+ .rcm-card-item-sub-view {
803
+ border: var(--rcm-border-width) solid color-mix(in srgb, var(--rcm-color-border) 50%, transparent);
804
+ background: color-mix(in srgb, var(--rcm-color-surface-muted) 30%, var(--rcm-color-surface));
805
+ border-radius: var(--rcm-radius-lg);
806
+ padding: 0.75rem;
807
+ }
808
+
809
+ .rcm-card-item-sub-loading-wrap {
810
+ border: var(--rcm-border-width) solid color-mix(in srgb, var(--rcm-color-border) 50%, transparent);
811
+ border-radius: var(--rcm-radius-lg);
812
+ padding: var(--rcm-space-lg);
813
+ }
814
+
815
+ .rcm-card-item-sub-loading {
816
+ display: flex;
817
+ align-items: center;
818
+ justify-content: center;
819
+ padding: var(--rcm-space-lg) 0;
820
+ }
821
+
822
+ .rcm-card-item-sub-spinner {
823
+ width: 1.25rem;
824
+ height: 1.25rem;
825
+ border: 2px solid var(--rcm-color-primary);
826
+ border-top-color: transparent;
827
+ border-radius: 9999px;
828
+ animation: rcm-spin 1s linear infinite;
829
+ }
830
+
831
+ /* ------------------------------------------------------------------ *
832
+ * Advanced search form (Full layout: header + filters + quicksearch + footer)
833
+ * ------------------------------------------------------------------ */
834
+ @media (min-width: 1280px) {
835
+ .rcm-adv-search-outer {
836
+ margin: 0 0.75rem 0.75rem;
837
+ }
838
+ }
839
+
840
+ .rcm-adv-search-scroll {
841
+ display: flex;
842
+ height: 100%;
843
+ flex: 1;
844
+ overflow: auto;
845
+ }
846
+
847
+ .rcm-adv-search-inner {
848
+ width: 100%;
849
+ padding: 0.75rem;
850
+ display: flex;
851
+ flex-direction: column;
852
+ gap: 0.75rem;
853
+ max-height: 80vh;
854
+ container-type: inline-size;
855
+ container-name: rcm-adv-search;
856
+ overflow-y: auto;
857
+ }
858
+
859
+ .rcm-adv-search-inner-compact {
860
+ padding: 0.75rem 0;
861
+ background: transparent;
862
+ }
863
+
864
+ .rcm-adv-search-inner-panel {
865
+ padding: 0.75rem var(--rcm-space-lg);
866
+ background: var(--rcm-color-surface);
867
+ border: var(--rcm-border-width) solid color-mix(in srgb, var(--rcm-color-border) 50%, transparent);
868
+ border-radius: var(--rcm-radius-lg);
869
+ box-shadow: var(--rcm-shadow-sm);
870
+ }
871
+
872
+ .rcm-adv-search-header {
873
+ display: flex;
874
+ align-items: center;
875
+ justify-content: space-between;
876
+ padding-bottom: var(--rcm-space-sm);
877
+ border-bottom: var(--rcm-border-width) solid
878
+ color-mix(in srgb, var(--rcm-color-border) 50%, transparent);
879
+ }
880
+
881
+ .rcm-adv-search-header-left {
882
+ display: flex;
883
+ align-items: center;
884
+ gap: var(--rcm-space-sm);
885
+ }
886
+
887
+ .rcm-adv-search-header-right {
888
+ display: flex;
889
+ align-items: center;
890
+ gap: var(--rcm-space-md);
891
+ }
892
+
893
+ .rcm-adv-search-header-icon {
894
+ width: 1.25rem;
895
+ height: 1.25rem;
896
+ color: var(--rcm-color-primary);
897
+ }
898
+
899
+ /* .rcm-adv-search-title removed — JSX uses rcm-text data-weight="semibold". */
900
+
901
+ .rcm-adv-search-count {
902
+ font-size: var(--rcm-font-size-xs);
903
+ color: var(--rcm-color-text-muted);
904
+ background: var(--rcm-color-surface-muted);
905
+ padding: 0.125rem var(--rcm-space-sm);
906
+ border-radius: var(--rcm-radius-sm);
907
+ }
908
+
909
+ .rcm-adv-search-view-toggle {
910
+ padding: 0.375rem;
911
+ background: transparent;
912
+ border: 0;
913
+ border-radius: var(--rcm-radius-md);
914
+ cursor: pointer;
915
+ transition: background var(--rcm-transition-fast);
916
+ }
917
+
918
+ .rcm-adv-search-view-toggle:hover {
919
+ background: var(--rcm-color-surface-muted);
920
+ }
921
+
922
+ .rcm-adv-search-view-icon {
923
+ width: 1rem;
924
+ height: 1rem;
925
+ color: var(--rcm-color-text-muted);
926
+ }
927
+
928
+ .rcm-adv-search-qs-toggle {
929
+ display: flex;
930
+ align-items: center;
931
+ gap: 0.75rem;
932
+ padding: var(--rcm-space-sm) 0.75rem;
933
+ background: var(--rcm-color-info-surface);
934
+ border: var(--rcm-border-width) solid color-mix(in srgb, var(--rcm-color-info) 30%, transparent);
935
+ border-radius: var(--rcm-radius-lg);
936
+ }
937
+
938
+ .rcm-adv-search-qs-label {
939
+ display: flex;
940
+ align-items: center;
941
+ gap: var(--rcm-space-sm);
942
+ cursor: pointer;
943
+ }
944
+
945
+ .rcm-adv-search-qs-checkbox {
946
+ width: 1rem;
947
+ height: 1rem;
948
+ accent-color: var(--rcm-color-primary);
949
+ }
950
+
951
+ .rcm-adv-search-qs-title {
952
+ font-size: var(--rcm-font-size-sm);
953
+ font-weight: var(--rcm-font-weight-medium);
954
+ color: var(--rcm-color-info);
955
+ }
956
+
957
+ .rcm-adv-search-qs-hint {
958
+ font-size: var(--rcm-font-size-xs);
959
+ color: var(--rcm-color-info);
960
+ }
961
+
962
+ .rcm-adv-search-qs-input-panel {
963
+ padding: 0.75rem;
964
+ background: var(--rcm-color-surface-muted);
965
+ border: var(--rcm-border-width) solid var(--rcm-color-border);
966
+ border-radius: var(--rcm-radius-lg);
967
+ }
968
+
969
+ .rcm-adv-search-qs-input-label {
970
+ display: block;
971
+ font-size: var(--rcm-font-size-sm);
972
+ font-weight: var(--rcm-font-weight-medium);
973
+ color: var(--rcm-color-text);
974
+ margin-bottom: 0.375rem;
975
+ }
976
+
977
+ /* .rcm-adv-search-qs-input removed — JSX uses rcm-input primitive. */
978
+
979
+ .rcm-adv-search-qs-description {
980
+ margin-top: 0.25rem;
981
+ font-size: var(--rcm-font-size-xs);
982
+ color: var(--rcm-color-text-muted);
983
+ }
984
+
985
+ .rcm-adv-search-grid {
986
+ display: grid;
987
+ grid-template-columns: repeat(1, minmax(0, 1fr));
988
+ column-gap: 1.5rem;
989
+ row-gap: 1rem;
990
+ }
991
+
992
+ /* Container-query based columns so modal/popup AdvSearch (narrow container)
993
+ * tops out at 2 columns even on wide viewports, while full-width inline
994
+ * usage (wide container) reaches 3. Breakpoints refer to the
995
+ * rcm-adv-search container's inline size, not the viewport. */
996
+ @container rcm-adv-search (min-width: 640px) {
997
+ .rcm-adv-search-grid {
998
+ grid-template-columns: repeat(2, minmax(0, 1fr));
999
+ }
1000
+ }
1001
+
1002
+ @container rcm-adv-search (min-width: 1200px) {
1003
+ .rcm-adv-search-grid {
1004
+ grid-template-columns: repeat(3, minmax(0, 1fr));
1005
+ }
1006
+ }
1007
+
1008
+ .rcm-adv-search-list {
1009
+ display: flex;
1010
+ flex-direction: column;
1011
+ gap: 1rem;
1012
+ }
1013
+
1014
+ .rcm-adv-search-empty {
1015
+ text-align: center;
1016
+ padding: 2rem 0;
1017
+ color: var(--rcm-color-text-muted);
1018
+ }
1019
+
1020
+ .rcm-adv-search-empty-text {
1021
+ font-size: var(--rcm-font-size-sm);
1022
+ }
1023
+
1024
+ .rcm-adv-search-empty-action {
1025
+ margin-top: var(--rcm-space-sm);
1026
+ color: var(--rcm-color-primary);
1027
+ font-size: var(--rcm-font-size-sm);
1028
+ background: transparent;
1029
+ border: 0;
1030
+ text-decoration: underline;
1031
+ cursor: pointer;
1032
+ }
1033
+
1034
+ .rcm-adv-search-empty-action:hover {
1035
+ color: var(--rcm-color-primary-hover);
1036
+ }
1037
+
1038
+ .rcm-adv-search-footer {
1039
+ padding-top: 0.75rem;
1040
+ border-top: var(--rcm-border-width) solid
1041
+ color-mix(in srgb, var(--rcm-color-border) 50%, transparent);
1042
+ display: flex;
1043
+ align-items: center;
1044
+ justify-content: center;
1045
+ gap: var(--rcm-space-sm);
1046
+ }
1047
+
1048
+ .rcm-adv-search-btn {
1049
+ display: inline-flex;
1050
+ align-items: center;
1051
+ gap: 0.25rem;
1052
+ padding-left: 1rem;
1053
+ padding-right: 1rem;
1054
+ }
1055
+
1056
+ .rcm-adv-search-btn-submit {
1057
+ padding-left: 1.5rem;
1058
+ padding-right: 1.5rem;
1059
+ }
1060
+
1061
+ /* ------------------------------------------------------------------ *
1062
+ * RevisionField (변경 이력) + diff wrapper
1063
+ * ------------------------------------------------------------------ */
1064
+ .rcm-revision-diff-container {
1065
+ height: 100%;
1066
+ min-height: 100%;
1067
+ }
1068
+
1069
+ .rcm-revision-diff-banner {
1070
+ padding: var(--rcm-space-sm) 0.75rem;
1071
+ margin: var(--rcm-space-sm) var(--rcm-space-lg) 0;
1072
+ border-radius: var(--rcm-radius-md);
1073
+ font-size: var(--rcm-font-size-sm);
1074
+ }
1075
+
1076
+ .rcm-revision-diff-banner-changed {
1077
+ background: var(--rcm-color-warning-surface);
1078
+ border: var(--rcm-border-width) solid
1079
+ color-mix(in srgb, var(--rcm-color-warning) 30%, transparent);
1080
+ color: var(--rcm-color-warning);
1081
+ }
1082
+
1083
+ .rcm-revision-diff-banner-same {
1084
+ background: var(--rcm-color-success-surface);
1085
+ border: var(--rcm-border-width) solid
1086
+ color-mix(in srgb, var(--rcm-color-success) 30%, transparent);
1087
+ color: var(--rcm-color-success);
1088
+ }
1089
+
1090
+ .rcm-revision-diff-banner-row {
1091
+ display: flex;
1092
+ align-items: center;
1093
+ gap: var(--rcm-space-sm);
1094
+ }
1095
+
1096
+ /* .rcm-revision-diff-indicator removed — JSX uses rcm-icon-frame data-color="warning". */
1097
+
1098
+ .rcm-revision-diff-labels {
1099
+ margin-top: 0.375rem;
1100
+ margin-left: 1.25rem;
1101
+ display: flex;
1102
+ flex-wrap: wrap;
1103
+ gap: 0.25rem;
1104
+ }
1105
+
1106
+ /* .rcm-revision-diff-label-chip removed — JSX uses rcm-tag data-color="warning". */
1107
+
1108
+ .rcm-revision-state {
1109
+ display: flex;
1110
+ align-items: center;
1111
+ gap: var(--rcm-space-sm);
1112
+ padding: var(--rcm-space-lg);
1113
+ }
1114
+
1115
+ .rcm-revision-state-empty {
1116
+ color: var(--rcm-color-text-muted);
1117
+ }
1118
+
1119
+ /* .rcm-revision-state-icon / -state-text removed — JSX uses rcm-icon + rcm-text. */
1120
+
1121
+ .rcm-revision-state-icon-spin {
1122
+ animation: rcm-spin 1s linear infinite;
1123
+ }
1124
+
1125
+ .rcm-revision-wrap {
1126
+ display: flex;
1127
+ flex-direction: column;
1128
+ gap: var(--rcm-space-sm);
1129
+ }
1130
+
1131
+ .rcm-revision-panel {
1132
+ display: flex;
1133
+ flex-direction: column;
1134
+ gap: 0.25rem;
1135
+ padding: 0.75rem;
1136
+ background: var(--rcm-color-surface-muted);
1137
+ border: var(--rcm-border-width) solid var(--rcm-color-border);
1138
+ border-radius: var(--rcm-radius-lg);
1139
+ }
1140
+
1141
+ .rcm-revision-list {
1142
+ display: flex;
1143
+ flex-direction: column;
1144
+ gap: 0.25rem;
1145
+ }
1146
+
1147
+ .rcm-revision-item {
1148
+ display: flex;
1149
+ align-items: center;
1150
+ justify-content: space-between;
1151
+ padding: var(--rcm-space-sm);
1152
+ border-radius: var(--rcm-radius-md);
1153
+ font-size: var(--rcm-font-size-sm);
1154
+ transition: background var(--rcm-transition-fast);
1155
+ }
1156
+
1157
+ .rcm-revision-item-latest {
1158
+ background: var(--rcm-color-info-surface);
1159
+ color: var(--rcm-color-info);
1160
+ cursor: pointer;
1161
+ }
1162
+
1163
+ .rcm-revision-item-latest:hover {
1164
+ background: color-mix(in srgb, var(--rcm-color-info) 20%, var(--rcm-color-surface));
1165
+ }
1166
+
1167
+ .rcm-revision-item-muted {
1168
+ background: var(--rcm-color-surface-muted);
1169
+ color: var(--rcm-color-text-muted);
1170
+ }
1171
+
1172
+ .rcm-revision-item-default {
1173
+ background: var(--rcm-color-surface);
1174
+ cursor: pointer;
1175
+ }
1176
+
1177
+ .rcm-revision-item-default:hover {
1178
+ background: var(--rcm-color-surface-hover);
1179
+ }
1180
+
1181
+ .rcm-revision-item-row {
1182
+ display: flex;
1183
+ align-items: center;
1184
+ gap: 0.75rem;
1185
+ }
1186
+
1187
+ /* .rcm-revision-item-name / -item-date removed — JSX uses rcm-text. */
1188
+
1189
+ /* .rcm-revision-badge* removed — JSX uses rcm-badge data-color primitive. */
1190
+
1191
+ .rcm-revision-pagination {
1192
+ padding-top: 0.75rem;
1193
+ margin-top: 0.75rem;
1194
+ border-top: var(--rcm-border-width) solid var(--rcm-color-border);
1195
+ display: flex;
1196
+ justify-content: center;
1197
+ }
1198
+
1199
+ /* ------------------------------------------------------------------ *
1200
+ * ContentAsset (파일/컨텐츠 첨부 필드)
1201
+ * ------------------------------------------------------------------ */
1202
+ .rcm-ca-loading {
1203
+ padding: var(--rcm-space-lg);
1204
+ color: var(--rcm-color-text-muted);
1205
+ }
1206
+
1207
+ .rcm-ca-wrap {
1208
+ display: flex;
1209
+ flex-direction: column;
1210
+ gap: var(--rcm-space-lg);
1211
+ }
1212
+
1213
+ .rcm-ca-empty {
1214
+ border: var(--rcm-border-width) solid var(--rcm-color-border);
1215
+ border-radius: var(--rcm-radius-lg);
1216
+ padding: 2rem;
1217
+ text-align: center;
1218
+ }
1219
+
1220
+ /* .rcm-ca-empty-text removed — JSX uses rcm-text data-tone="muted". */
1221
+
1222
+ .rcm-ca-add-btn {
1223
+ margin: var(--rcm-space-lg) auto 0;
1224
+ display: inline-flex;
1225
+ align-items: center;
1226
+ gap: var(--rcm-space-sm);
1227
+ padding: var(--rcm-space-sm) var(--rcm-space-lg);
1228
+ background: var(--rcm-color-primary);
1229
+ color: var(--rcm-color-primary-text);
1230
+ border: 0;
1231
+ border-radius: var(--rcm-radius-lg);
1232
+ cursor: pointer;
1233
+ transition: background var(--rcm-transition-fast);
1234
+ }
1235
+
1236
+ .rcm-ca-add-btn:hover {
1237
+ background: var(--rcm-color-primary-hover);
1238
+ }
1239
+
1240
+ /* .rcm-ca-add-btn-text removed — JSX uses plain span inheriting from parent button. */
1241
+
1242
+ .rcm-ca-add-btn-row {
1243
+ display: flex;
1244
+ justify-content: center;
1245
+ padding-top: var(--rcm-space-sm);
1246
+ }
1247
+
1248
+ .rcm-ca-item {
1249
+ border: var(--rcm-border-width) solid var(--rcm-color-border);
1250
+ border-radius: var(--rcm-radius-lg);
1251
+ padding: var(--rcm-space-lg);
1252
+ display: flex;
1253
+ flex-direction: column;
1254
+ gap: 0.75rem;
1255
+ transition: box-shadow var(--rcm-transition-fast);
1256
+ }
1257
+
1258
+ .rcm-ca-item:hover {
1259
+ box-shadow: var(--rcm-shadow-md);
1260
+ }
1261
+
1262
+ .rcm-ca-item-error {
1263
+ border-color: color-mix(in srgb, var(--rcm-color-error) 30%, transparent);
1264
+ background: var(--rcm-color-error-surface);
1265
+ }
1266
+
1267
+ .rcm-ca-item-header {
1268
+ display: flex;
1269
+ align-items: flex-start;
1270
+ gap: 0.75rem;
1271
+ }
1272
+
1273
+ .rcm-ca-item-title-col {
1274
+ flex: 1;
1275
+ }
1276
+
1277
+ /* .rcm-ca-item-label / -required / -optional / -item-error-msg removed — JSX uses rcm-label / rcm-text primitives. */
1278
+
1279
+ .rcm-ca-input-error {
1280
+ border-color: var(--rcm-color-error) !important;
1281
+ }
1282
+
1283
+ .rcm-ca-item-remove-wrap {
1284
+ padding-top: 1.5rem;
1285
+ }
1286
+
1287
+ /* .rcm-ca-item-remove removed — JSX uses rcm-icon-btn data-color="error". */
1288
+
1289
+ .rcm-ca-errors {
1290
+ margin-top: var(--rcm-space-sm);
1291
+ }
1292
+
1293
+ /* .rcm-ca-error removed — JSX uses rcm-text data-color="error" data-size="sm". */
1294
+
1295
+ .rcm-ca-dialog {
1296
+ display: flex;
1297
+ flex-direction: column;
1298
+ gap: var(--rcm-space-lg);
1299
+ }
1300
+
1301
+ .rcm-ca-dialog-footer {
1302
+ display: flex;
1303
+ justify-content: flex-end;
1304
+ gap: var(--rcm-space-sm);
1305
+ padding-top: var(--rcm-space-sm);
1306
+ }
1307
+
1308
+ /* ------------------------------------------------------------------ *
1309
+ * TreeSelectView (트리 노드)
1310
+ * ------------------------------------------------------------------ */
1311
+ .rcm-tree-node {
1312
+ width: 100%;
1313
+ display: flex;
1314
+ align-items: center;
1315
+ padding: 0.25rem 0;
1316
+ }
1317
+
1318
+ .rcm-tree-node-icon-wrap {
1319
+ display: flex;
1320
+ align-items: center;
1321
+ justify-content: center;
1322
+ width: 1.5rem;
1323
+ height: 1.5rem;
1324
+ margin-right: var(--rcm-space-sm);
1325
+ flex-shrink: 0;
1326
+ }
1327
+
1328
+ .rcm-tree-node-toggle {
1329
+ display: flex;
1330
+ align-items: center;
1331
+ justify-content: center;
1332
+ width: 1.25rem;
1333
+ height: 1.25rem;
1334
+ color: var(--rcm-color-text-muted);
1335
+ background: transparent;
1336
+ border: 0;
1337
+ border-radius: var(--rcm-radius-sm);
1338
+ cursor: pointer;
1339
+ transition:
1340
+ color var(--rcm-transition-fast),
1341
+ background var(--rcm-transition-fast);
1342
+ }
1343
+
1344
+ .rcm-tree-node-toggle:hover {
1345
+ color: var(--rcm-color-text);
1346
+ background: var(--rcm-color-surface-muted);
1347
+ }
1348
+
1349
+ .rcm-tree-node-leaf {
1350
+ width: 1.25rem;
1351
+ height: 1.25rem;
1352
+ display: flex;
1353
+ align-items: center;
1354
+ justify-content: center;
1355
+ }
1356
+
1357
+ .rcm-tree-node-leaf-dot {
1358
+ width: 0.25rem;
1359
+ height: 0.25rem;
1360
+ background: var(--rcm-color-text-disabled);
1361
+ border-radius: 9999px;
1362
+ }
1363
+
1364
+ .rcm-tree-node-btn {
1365
+ flex: 1;
1366
+ text-align: left;
1367
+ padding: var(--rcm-space-sm) 0.75rem;
1368
+ background: transparent;
1369
+ border: var(--rcm-border-width) solid transparent;
1370
+ border-radius: var(--rcm-radius-md);
1371
+ font-weight: var(--rcm-font-weight-medium);
1372
+ color: var(--rcm-color-text);
1373
+ cursor: pointer;
1374
+ transition: all 200ms;
1375
+ }
1376
+
1377
+ .rcm-tree-node-btn:hover {
1378
+ background: var(--rcm-color-info-surface);
1379
+ border-color: color-mix(in srgb, var(--rcm-color-info) 30%, transparent);
1380
+ }
1381
+
1382
+ .rcm-tree-node-span {
1383
+ flex: 1;
1384
+ padding: var(--rcm-space-sm) 0.75rem;
1385
+ color: var(--rcm-color-text-disabled);
1386
+ font-size: var(--rcm-font-size-sm);
1387
+ }
1388
+
1389
+ /* ------------------------------------------------------------------ *
1390
+ * Input group (field stretched + copy/link button addon)
1391
+ * ------------------------------------------------------------------ */
1392
+ .rcm-input-group-stretch {
1393
+ display: flex;
1394
+ width: 100%;
1395
+ align-items: stretch;
1396
+ }
1397
+
1398
+ .rcm-input-group-grow {
1399
+ flex-grow: 1;
1400
+ }
1401
+
1402
+ .rcm-input-group-full {
1403
+ display: flex;
1404
+ width: 100%;
1405
+ }
1406
+
1407
+ .rcm-input-group-full-center {
1408
+ display: flex;
1409
+ width: 100%;
1410
+ align-items: center;
1411
+ }
1412
+
1413
+ .rcm-input-group-full-relative {
1414
+ position: relative;
1415
+ display: flex;
1416
+ width: 100%;
1417
+ }
1418
+
1419
+ /* ------------------------------------------------------------------ *
1420
+ * Multiple asset field (여러 파일 첨부 테이블)
1421
+ * ------------------------------------------------------------------ */
1422
+ .rcm-asset-th-row {
1423
+ display: flex;
1424
+ justify-content: space-between;
1425
+ align-items: center;
1426
+ width: 100%;
1427
+ }
1428
+
1429
+ .rcm-asset-btn-fill {
1430
+ display: flex;
1431
+ justify-content: center;
1432
+ align-items: center;
1433
+ overflow: hidden;
1434
+ width: 100%;
1435
+ height: 100%;
1436
+ background: transparent;
1437
+ border: 0;
1438
+ cursor: pointer;
1439
+ }
1440
+
1441
+ .rcm-asset-add-btn {
1442
+ display: flex;
1443
+ white-space: nowrap;
1444
+ min-width: 95px;
1445
+ gap: 0.25rem;
1446
+ align-items: center;
1447
+ justify-content: center;
1448
+ height: 40px;
1449
+ padding: 0 0.75rem;
1450
+ background: var(--rcm-color-text-muted);
1451
+ color: var(--rcm-color-primary-text);
1452
+ font-weight: var(--rcm-font-weight-semibold);
1453
+ border: var(--rcm-border-width) solid var(--rcm-color-text-muted);
1454
+ border-radius: var(--rcm-radius-md);
1455
+ cursor: pointer;
1456
+ transition: background var(--rcm-transition-fast);
1457
+ }
1458
+
1459
+ .rcm-asset-add-btn:hover {
1460
+ background: color-mix(in srgb, var(--rcm-color-text-muted) 85%, black);
1461
+ }
1462
+
1463
+ .rcm-asset-th-remove {
1464
+ flex-shrink: 0;
1465
+ margin-left: var(--rcm-space-sm);
1466
+ display: flex;
1467
+ justify-content: flex-end;
1468
+ }
1469
+
1470
+ /* MultipleAssetField outer container */
1471
+ .rcm-asset-outer {
1472
+ display: flex;
1473
+ flex-direction: column;
1474
+ gap: 0.625rem;
1475
+ margin-top: var(--rcm-space-sm);
1476
+ padding: var(--rcm-space-md) var(--rcm-space-sm);
1477
+ border: var(--rcm-border-width) solid var(--rcm-color-border);
1478
+ border-radius: var(--rcm-radius-md);
1479
+ }
1480
+
1481
+ /* Horizontal scroll wrapper (replaces legacy .table-responsive) */
1482
+ .rcm-asset-table-responsive {
1483
+ overflow-x: auto;
1484
+ }
1485
+
1486
+ /* Responsive grid — 2 cols on sm, 6 cols on md */
1487
+ .rcm-asset-grid {
1488
+ display: grid;
1489
+ grid-template-columns: 1fr;
1490
+ gap: var(--rcm-space-md);
1491
+ }
1492
+
1493
+ @media (min-width: 640px) {
1494
+ .rcm-asset-grid {
1495
+ grid-template-columns: repeat(2, 1fr);
1496
+ min-width: 400px;
1497
+ }
1498
+ }
1499
+
1500
+ @media (min-width: 768px) {
1501
+ .rcm-asset-grid {
1502
+ grid-template-columns: repeat(6, 1fr);
1503
+ min-width: 860px;
1504
+ }
1505
+ }
1506
+
1507
+ /* Asset cell table + header */
1508
+ .rcm-asset-table {
1509
+ width: 100%;
1510
+ border: var(--rcm-border-width) solid var(--rcm-color-border);
1511
+ border-bottom-left-radius: var(--rcm-radius-md);
1512
+ border-bottom-right-radius: var(--rcm-radius-md);
1513
+ }
1514
+
1515
+ .rcm-asset-th {
1516
+ padding: 0 var(--rcm-space-sm);
1517
+ }
1518
+
1519
+ @media (min-width: 640px) {
1520
+ .rcm-asset-th {
1521
+ width: 12.5rem;
1522
+ }
1523
+ }
1524
+
1525
+ @media (min-width: 768px) {
1526
+ .rcm-asset-th {
1527
+ width: 5rem;
1528
+ max-width: 5rem;
1529
+ }
1530
+ }
1531
+
1532
+ .rcm-asset-th-name {
1533
+ flex-grow: 1;
1534
+ }
1535
+
1536
+ .rcm-asset-th-name-compact {
1537
+ max-width: 70%;
1538
+ }
1539
+
1540
+ .rcm-asset-th-remove-btn {
1541
+ display: flex;
1542
+ background: transparent;
1543
+ border: 0;
1544
+ cursor: pointer;
1545
+ padding: 0;
1546
+ }
1547
+
1548
+ /* Asset image cell */
1549
+ .rcm-asset-td {
1550
+ padding: var(--rcm-space-sm);
1551
+ min-width: 120px;
1552
+ min-height: 120px;
1553
+ }
1554
+
1555
+ .rcm-asset-td-inner {
1556
+ display: flex;
1557
+ align-items: center;
1558
+ justify-content: center;
1559
+ overflow: hidden;
1560
+ width: 100%;
1561
+ height: 100%;
1562
+ cursor: pointer;
1563
+ }
1564
+
1565
+ .rcm-asset-placeholder-icon {
1566
+ color: var(--rcm-color-text-muted);
1567
+ font-weight: var(--rcm-font-weight-normal);
1568
+ }
1569
+
1570
+ .rcm-asset-img {
1571
+ height: 100%;
1572
+ width: auto;
1573
+ max-width: 6rem;
1574
+ object-fit: cover;
1575
+ }
1576
+
1577
+ /* Add column (right-most "+ 추가" button) */
1578
+ .rcm-asset-add-col {
1579
+ height: 100%;
1580
+ }
1581
+
1582
+ .rcm-asset-add-table {
1583
+ height: 100%;
1584
+ max-width: 13.125rem;
1585
+ }
1586
+
1587
+ @media (min-width: 768px) {
1588
+ .rcm-asset-add-table {
1589
+ max-width: 8.125rem;
1590
+ }
1591
+ }
1592
+
1593
+ .rcm-asset-add-td {
1594
+ display: flex;
1595
+ align-items: center;
1596
+ justify-content: center;
1597
+ min-width: 120px;
1598
+ height: 100%;
1599
+ padding: var(--rcm-space-sm);
1600
+ }
1601
+
1602
+ /* MultipleAssetField modal body + labels */
1603
+ .rcm-asset-modal-body {
1604
+ display: flex;
1605
+ flex-direction: column;
1606
+ gap: var(--rcm-space-md);
1607
+ }
1608
+
1609
+ .rcm-asset-modal-label {
1610
+ display: flex;
1611
+ align-items: flex-end;
1612
+ gap: var(--rcm-space-xs);
1613
+ margin-left: 0.125rem;
1614
+ font-size: 0.7rem;
1615
+ font-weight: var(--rcm-font-weight-bold);
1616
+ }
1617
+
1618
+ .rcm-asset-modal-footer {
1619
+ display: flex;
1620
+ flex-direction: column;
1621
+ align-items: center;
1622
+ justify-content: center;
1623
+ padding: var(--rcm-space-md) 0;
1624
+ }
1625
+
1626
+ .rcm-asset-modal-error {
1627
+ margin-bottom: var(--rcm-space-sm);
1628
+ font-size: 0.8rem;
1629
+ color: var(--rcm-color-error);
1630
+ }
1631
+
1632
+ /* ------------------------------------------------------------------ *
1633
+ * QuickSearch input (리스트 상단 통합검색 박스)
1634
+ * ------------------------------------------------------------------ */
1635
+ .rcm-quick-search-wrap {
1636
+ display: flex;
1637
+ flex: 0 1 auto;
1638
+ max-width: 100%;
1639
+ }
1640
+
1641
+ .rcm-quick-search-input {
1642
+ max-width: 300px;
1643
+ min-width: 300px;
1644
+ padding: 0.75rem 2.5rem 0.75rem 0.75rem;
1645
+ font-weight: normal;
1646
+ color: var(--rcm-color-text);
1647
+ background: var(--rcm-color-surface);
1648
+ border: var(--rcm-border-width) solid var(--rcm-color-border-hover);
1649
+ border-radius: var(--rcm-radius-md);
1650
+ }
1651
+
1652
+ .rcm-quick-search-input:focus {
1653
+ outline: none;
1654
+ border-color: var(--rcm-color-primary);
1655
+ }
1656
+
1657
+ .rcm-quick-search-input:disabled {
1658
+ background: var(--rcm-color-surface-disabled);
1659
+ cursor: not-allowed;
1660
+ }
1661
+
1662
+ .rcm-quick-search-input::placeholder {
1663
+ color: var(--rcm-color-text-disabled);
1664
+ }
1665
+
1666
+ .rcm-quick-search-addon {
1667
+ display: flex;
1668
+ align-items: center;
1669
+ justify-content: center;
1670
+ height: 40px;
1671
+ font-weight: var(--rcm-font-weight-semibold);
1672
+ color: var(--rcm-color-error);
1673
+ }
1674
+
1675
+ .rcm-quick-search-addon-search {
1676
+ margin-left: -2rem;
1677
+ }
1678
+ .rcm-quick-search-addon-clear {
1679
+ margin-left: -2.75rem;
1680
+ }
1681
+
1682
+ .rcm-quick-search-btn {
1683
+ display: flex;
1684
+ min-height: 1.5rem;
1685
+ min-width: 1.5rem;
1686
+ align-items: center;
1687
+ justify-content: center;
1688
+ background: transparent;
1689
+ border: 0;
1690
+ cursor: pointer;
1691
+ }
1692
+
1693
+ .rcm-quick-search-icon {
1694
+ width: 0.875rem;
1695
+ height: 0.875rem;
1696
+ color: var(--rcm-color-text);
1697
+ }
1698
+
1699
+ /* ------------------------------------------------------------------ *
1700
+ * ListGrid theme defaults (referenced by defaultListGridTheme.ts)
1701
+ * ------------------------------------------------------------------ */
1702
+ .rcm-listgrid-header {
1703
+ display: flex;
1704
+ flex-wrap: wrap;
1705
+ align-items: flex-start;
1706
+ gap: var(--rcm-space-sm);
1707
+ margin-top: var(--rcm-space-sm);
1708
+ }
1709
+
1710
+ .rcm-listgrid-title-container {
1711
+ min-width: 200px;
1712
+ max-width: 100%;
1713
+ flex: 1 1 auto;
1714
+ overflow: hidden;
1715
+ }
1716
+
1717
+ .rcm-listgrid-title {
1718
+ display: flex;
1719
+ align-items: center;
1720
+ min-height: 60px;
1721
+ padding: var(--rcm-space-sm) 0;
1722
+ font-size: 1.8rem;
1723
+ font-weight: var(--rcm-font-weight-bold);
1724
+ line-height: var(--rcm-line-height-tight);
1725
+ text-overflow: ellipsis;
1726
+ overflow: hidden;
1727
+ white-space: nowrap;
1728
+ }
1729
+
1730
+ .rcm-listgrid-button-group {
1731
+ display: flex;
1732
+ flex-wrap: wrap;
1733
+ align-items: center;
1734
+ gap: var(--rcm-space-sm);
1735
+ }
1736
+
1737
+ .rcm-listgrid-panel {
1738
+ flex: 1;
1739
+ gap: var(--rcm-space-sm);
1740
+ }
1741
+
1742
+ .rcm-listgrid-panel-main {
1743
+ margin-top: var(--rcm-space-xl);
1744
+ padding: var(--rcm-space-md) var(--rcm-space-lg);
1745
+ background: var(--rcm-color-surface);
1746
+ border: var(--rcm-border-width) solid var(--rcm-color-border);
1747
+ border-radius: var(--rcm-radius-lg);
1748
+ box-shadow: var(--rcm-shadow-sm);
1749
+ }
1750
+
1751
+ .rcm-listgrid-panel-sub {
1752
+ margin-top: var(--rcm-space-sm);
1753
+ padding: var(--rcm-space-lg) 0;
1754
+ background: var(--rcm-color-surface);
1755
+ border: var(--rcm-border-width) solid var(--rcm-color-border);
1756
+ border-radius: var(--rcm-radius-md);
1757
+ }
1758
+
1759
+ .rcm-listgrid-searchbar {
1760
+ flex: 1;
1761
+ width: 100%;
1762
+ margin-bottom: var(--rcm-space-sm);
1763
+ }
1764
+
1765
+ .rcm-listgrid-searchbar-inner {
1766
+ width: 100%;
1767
+ padding: 0 var(--rcm-space-lg);
1768
+ }
1769
+
1770
+ .rcm-listgrid-search-input {
1771
+ width: 100%;
1772
+ padding-right: 2.25rem;
1773
+ border-radius: var(--rcm-radius-full);
1774
+ background: var(--rcm-color-surface-muted);
1775
+ border: var(--rcm-border-width) solid var(--rcm-color-border);
1776
+ height: var(--rcm-size-input-height);
1777
+ }
1778
+
1779
+ .rcm-listgrid-search-input:focus {
1780
+ outline: none;
1781
+ border-color: var(--rcm-color-primary);
1782
+ background: var(--rcm-color-surface);
1783
+ }
1784
+
1785
+ .rcm-listgrid-search-icon {
1786
+ position: absolute;
1787
+ right: var(--rcm-space-md);
1788
+ top: 50%;
1789
+ transform: translateY(-50%);
1790
+ color: var(--rcm-color-text-muted);
1791
+ }
1792
+
1793
+ .rcm-listgrid-search-clear {
1794
+ position: absolute;
1795
+ right: 2.5rem;
1796
+ top: 50%;
1797
+ transform: translateY(-50%);
1798
+ color: var(--rcm-color-text-muted);
1799
+ cursor: pointer;
1800
+ }
1801
+
1802
+ .rcm-listgrid-search-clear:hover {
1803
+ color: var(--rcm-color-text);
1804
+ }
1805
+
1806
+ .rcm-listgrid-thead {
1807
+ background: var(--rcm-color-surface-muted);
1808
+ border-top: var(--rcm-border-width) solid var(--rcm-color-border);
1809
+ border-bottom: var(--rcm-border-width) solid var(--rcm-color-border);
1810
+ }
1811
+
1812
+ /* Header 우측 액션 버튼 그룹 (다운로드 / 업로드 / 삭제 / 신규 입력 등) */
1813
+ .rcm-header-actions {
1814
+ display: flex;
1815
+ align-items: center;
1816
+ justify-content: flex-start;
1817
+ gap: var(--rcm-space-sm);
1818
+ white-space: nowrap;
1819
+ }
1820
+
1821
+ /* 검색 바 우측 액션 영역 (페이지 사이즈 셀렉터 / 통합 검색 버튼) */
1822
+ .rcm-search-bar-actions {
1823
+ display: flex;
1824
+ justify-content: flex-end;
1825
+ gap: var(--rcm-space-sm);
1826
+ margin-top: var(--rcm-space-lg);
1827
+ margin-bottom: var(--rcm-space-sm);
1828
+ margin-left: auto;
1829
+ flex-shrink: 0;
1830
+ }
1831
+
1832
+ @media (min-width: 768px) {
1833
+ .rcm-search-bar-actions {
1834
+ margin-top: 0;
1835
+ margin-bottom: 0;
1836
+ }
1837
+ }
1838
+
1839
+ @media (min-width: 1024px) {
1840
+ .rcm-search-bar-actions {
1841
+ margin-top: var(--rcm-space-sm);
1842
+ margin-bottom: var(--rcm-space-sm);
1843
+ }
1844
+ }
1845
+
1846
+ .rcm-search-bar-pagesize {
1847
+ display: flex;
1848
+ align-items: center;
1849
+ gap: var(--rcm-space-sm);
1850
+ justify-content: flex-end;
1851
+ }
1852
+
1853
+ @media (min-width: 768px) {
1854
+ .rcm-search-bar-pagesize {
1855
+ margin-right: var(--rcm-space-sm);
1856
+ }
1857
+ }
1858
+
1859
+ .rcm-search-bar-pagesize-select {
1860
+ width: 140px;
1861
+ min-width: 140px;
1862
+ }
1863
+
1864
+ .rcm-search-bar-submit {
1865
+ display: inline-flex;
1866
+ align-items: center;
1867
+ justify-content: center;
1868
+ white-space: nowrap;
1869
+ }
1870
+
1871
+ /* `sm:block` + `hidden` 조합의 scoped 치환: 기본 감춤, sm 이상에서 표시 */
1872
+ .rcm-hide-below-sm {
1873
+ display: none;
1874
+ }
1875
+
1876
+ @media (min-width: 640px) {
1877
+ .rcm-hide-below-sm {
1878
+ display: block;
1879
+ }
1880
+ }
1881
+
1882
+ .rcm-listgrid-thead th {
1883
+ padding: var(--rcm-space-md) var(--rcm-space-md);
1884
+ font-weight: var(--rcm-font-weight-semibold);
1885
+ font-size: var(--rcm-font-size-sm);
1886
+ color: var(--rcm-color-text);
1887
+ text-align: left;
1888
+ white-space: nowrap;
1889
+ }
1890
+
1891
+ .rcm-listgrid-tbody {
1892
+ overflow: auto;
1893
+ }
1894
+
1895
+ .rcm-listgrid-tbody td {
1896
+ padding: var(--rcm-space-md);
1897
+ border-bottom: var(--rcm-border-width) solid var(--rcm-color-border);
1898
+ }
1899
+
1900
+ .rcm-listgrid-row-hover:hover {
1901
+ background: var(--rcm-color-surface-hover);
1902
+ }
1903
+
1904
+ .rcm-listgrid-row-selected {
1905
+ background: color-mix(in srgb, var(--rcm-color-primary) 10%, transparent);
1906
+ }
1907
+
1908
+ .rcm-listgrid-row-dragging {
1909
+ opacity: 0.5;
1910
+ }
1911
+
1912
+ .rcm-listgrid-empty {
1913
+ display: flex;
1914
+ min-height: 400px;
1915
+ align-items: center;
1916
+ justify-content: center;
1917
+ color: var(--rcm-color-text-muted);
1918
+ }
1919
+
1920
+ .rcm-listgrid-pagination {
1921
+ width: 100%;
1922
+ padding: var(--rcm-space-xl) 0;
1923
+ display: flex;
1924
+ justify-content: center;
1925
+ }
1926
+
1927
+ .rcm-listgrid-dropdown {
1928
+ position: absolute;
1929
+ right: 0;
1930
+ top: 100%;
1931
+ margin-top: var(--rcm-space-xs);
1932
+ width: 16rem;
1933
+ max-height: 20rem;
1934
+ overflow-y: auto;
1935
+ background: var(--rcm-color-surface);
1936
+ border: var(--rcm-border-width) solid var(--rcm-color-border);
1937
+ border-radius: var(--rcm-radius-md);
1938
+ box-shadow: var(--rcm-shadow-md);
1939
+ z-index: var(--rcm-z-dropdown);
1940
+ }
1941
+
1942
+ .rcm-listgrid-dropdown-left {
1943
+ position: absolute;
1944
+ left: 0;
1945
+ top: 100%;
1946
+ margin-top: var(--rcm-space-xs);
1947
+ width: 16rem;
1948
+ padding: var(--rcm-space-lg);
1949
+ background: var(--rcm-color-surface);
1950
+ border: var(--rcm-border-width) solid var(--rcm-color-border);
1951
+ border-radius: var(--rcm-radius-md);
1952
+ box-shadow: var(--rcm-shadow-md);
1953
+ z-index: var(--rcm-z-dropdown);
1954
+ }
1955
+
1956
+ .rcm-listgrid-dropdown-item {
1957
+ display: flex;
1958
+ align-items: center;
1959
+ padding: var(--rcm-space-sm) var(--rcm-space-lg);
1960
+ cursor: pointer;
1961
+ }
1962
+
1963
+ .rcm-listgrid-dropdown-item:hover {
1964
+ background: var(--rcm-color-surface-hover);
1965
+ }
1966
+
1967
+ .rcm-modal-overlay {
1968
+ position: fixed;
1969
+ inset: 0;
1970
+ background: rgba(0, 0, 0, 0.5);
1971
+ z-index: var(--rcm-z-modal);
1972
+ }
1973
+
1974
+ .rcm-modal-container {
1975
+ position: fixed;
1976
+ inset: 1rem;
1977
+ background: var(--rcm-color-surface);
1978
+ border-radius: var(--rcm-radius-lg);
1979
+ box-shadow: var(--rcm-shadow-lg);
1980
+ z-index: var(--rcm-z-modal);
1981
+ overflow: hidden;
1982
+ display: flex;
1983
+ flex-direction: column;
1984
+ }
1985
+
1986
+ .rcm-modal-header {
1987
+ display: flex;
1988
+ align-items: center;
1989
+ justify-content: space-between;
1990
+ padding: var(--rcm-space-lg) var(--rcm-space-xl);
1991
+ border-bottom: var(--rcm-border-width) solid var(--rcm-color-border);
1992
+ }
1993
+
1994
+ .rcm-modal-body {
1995
+ flex: 1;
1996
+ overflow: auto;
1997
+ padding: var(--rcm-space-xl);
1998
+ }
1999
+
2000
+ .rcm-modal-footer {
2001
+ display: flex;
2002
+ align-items: center;
2003
+ justify-content: flex-end;
2004
+ gap: var(--rcm-space-sm);
2005
+ padding: var(--rcm-space-lg) var(--rcm-space-xl);
2006
+ border-top: var(--rcm-border-width) solid var(--rcm-color-border);
2007
+ }
2008
+
2009
+ .rcm-progress-bar {
2010
+ height: 0.5rem;
2011
+ background: var(--rcm-color-surface-hover);
2012
+ border-radius: var(--rcm-radius-full);
2013
+ overflow: hidden;
2014
+ }
2015
+
2016
+ /* ------------------------------------------------------------------ *
2017
+ * ViewEntityForm panel / layout
2018
+ *
2019
+ * Matches the original three-div structure:
2020
+ * <layoutWrapper> (flex column, vertical pt)
2021
+ * <panel> (border, bg, rounded, no horizontal padding)
2022
+ * <inner> (horizontal padding lives here)
2023
+ * {children}
2024
+ * ------------------------------------------------------------------ */
2025
+ .rcm-form-layout-wrapper {
2026
+ display: flex;
2027
+ flex-direction: column;
2028
+ gap: var(--rcm-space-xs);
2029
+ padding-top: var(--rcm-space-md);
2030
+ width: 100%;
2031
+ max-width: 100%;
2032
+ }
2033
+
2034
+ @media (min-width: 1280px) {
2035
+ .rcm-form-layout-wrapper {
2036
+ flex-direction: row;
2037
+ }
2038
+ }
2039
+
2040
+ .rcm-form-panel {
2041
+ width: 100%;
2042
+ max-width: 100%;
2043
+ flex: 1;
2044
+ background: var(--rcm-color-surface);
2045
+ border: var(--rcm-border-width) solid var(--rcm-color-border);
2046
+ border-radius: var(--rcm-radius-lg);
2047
+ padding: var(--rcm-space-xs) 0;
2048
+ box-shadow: var(--rcm-shadow-sm);
2049
+ }
2050
+
2051
+ .rcm-form-panel-inline {
2052
+ border: 0;
2053
+ box-shadow: none;
2054
+ background: transparent;
2055
+ padding: 0;
2056
+ }
2057
+
2058
+ .rcm-form-scroll-container {
2059
+ position: relative;
2060
+ height: 100%;
2061
+ }
2062
+
2063
+ .rcm-form-sticky-header {
2064
+ position: sticky;
2065
+ top: 0;
2066
+ z-index: 20;
2067
+ background: var(--rcm-color-surface);
2068
+ }
2069
+
2070
+ .rcm-form-header {
2071
+ margin-top: var(--rcm-space-xs);
2072
+ width: 100%;
2073
+ min-width: 0;
2074
+ }
2075
+
2076
+ .rcm-form-header-title {
2077
+ margin-bottom: var(--rcm-space-md);
2078
+ }
2079
+
2080
+ .rcm-form-header-buttons {
2081
+ width: 100%;
2082
+ min-width: 0;
2083
+ overflow: hidden;
2084
+ }
2085
+
2086
+ .rcm-form-header-area {
2087
+ margin-top: var(--rcm-space-sm);
2088
+ border-bottom: var(--rcm-border-width) solid var(--rcm-color-border);
2089
+ }
2090
+
2091
+ /* Inline 모드에서 탭과 버튼을 한 줄에 배치하는 row */
2092
+ .rcm-form-tab-row {
2093
+ display: flex;
2094
+ align-items: center;
2095
+ justify-content: space-between;
2096
+ margin-bottom: var(--rcm-space-sm);
2097
+ }
2098
+
2099
+ .rcm-form-tab-row-border {
2100
+ border-bottom: var(--rcm-border-width) solid var(--rcm-color-border);
2101
+ }
2102
+
2103
+ .rcm-form-tab-row-tabs {
2104
+ flex: 1;
2105
+ }
2106
+
2107
+ /* Inline 탭 row 안의 버튼 영역 — 컴팩트 버튼 스타일 */
2108
+ .rcm-form-tab-buttons {
2109
+ flex-shrink: 0;
2110
+ margin-left: var(--rcm-space-sm);
2111
+ }
2112
+
2113
+ .rcm-form-tab-buttons button {
2114
+ padding: 0.25rem 0.75rem !important;
2115
+ font-size: var(--rcm-font-size-sm) !important;
2116
+ min-height: 0 !important;
2117
+ height: auto !important;
2118
+ padding-bottom: 0.125rem !important;
2119
+ }
2120
+
2121
+ /* Inline 탭 리스트 (scroll wrapper 없이 flex row 로만) */
2122
+ .rcm-tab-list-inline {
2123
+ display: flex;
2124
+ flex-direction: row;
2125
+ white-space: nowrap;
2126
+ }
2127
+
2128
+ /* 일반 탭 scroll wrapper */
2129
+ .rcm-tab-scroll {
2130
+ position: relative;
2131
+ width: 100%;
2132
+ white-space: nowrap;
2133
+ }
2134
+
2135
+ /* 범용 hide utility (display:none) */
2136
+ .rcm-hide {
2137
+ display: none !important;
2138
+ }
2139
+
2140
+ /* 스켈레톤 placeholder (lazy load 중 공간 확보) */
2141
+ .rcm-skeleton-placeholder-xs {
2142
+ height: 1rem;
2143
+ }
2144
+ .rcm-skeleton-placeholder-tab {
2145
+ height: 2rem;
2146
+ background: var(--rcm-color-surface-muted);
2147
+ border-radius: var(--rcm-radius-md);
2148
+ animation: rcm-pulse 2s ease-in-out infinite;
2149
+ }
2150
+ .rcm-skeleton-placeholder-panel {
2151
+ height: 24rem;
2152
+ background: var(--rcm-color-surface-muted);
2153
+ border-radius: var(--rcm-radius-md);
2154
+ animation: rcm-pulse 2s ease-in-out infinite;
2155
+ }
2156
+ .rcm-skeleton-placeholder-md {
2157
+ height: 8rem;
2158
+ background: var(--rcm-color-surface-muted);
2159
+ border-radius: var(--rcm-radius-md);
2160
+ animation: rcm-pulse 2s ease-in-out infinite;
2161
+ }
2162
+ .rcm-skeleton-placeholder-lg {
2163
+ height: 3rem;
2164
+ }
2165
+ .rcm-skeleton-placeholder-fill {
2166
+ width: 100%;
2167
+ height: 100%;
2168
+ }
2169
+
2170
+ @keyframes rcm-pulse {
2171
+ 0%,
2172
+ 100% {
2173
+ opacity: 1;
2174
+ }
2175
+ 50% {
2176
+ opacity: 0.5;
2177
+ }
2178
+ }
2179
+
2180
+ .rcm-form-panel-inner {
2181
+ width: 100%;
2182
+ max-width: 100%;
2183
+ padding-left: 0.375rem; /* 6px — matches `pl-1.5` */
2184
+ padding-right: 0.375rem;
2185
+ }
2186
+
2187
+ @media (min-width: 768px) {
2188
+ .rcm-form-panel-inner {
2189
+ padding-left: var(--rcm-space-md); /* 12px — matches `md:pl-3` */
2190
+ padding-right: var(--rcm-space-md);
2191
+ }
2192
+ }
2193
+
2194
+ /* Save/List/Delete button row at the top of ViewEntityForm.
2195
+ * Replaces Tailwind's `md:flex md:justify-end md:w-full` which do not
2196
+ * generate when library JSX is outside the host's tailwind content scan. */
2197
+ .rcm-form-buttons-scroll {
2198
+ width: 100%;
2199
+ overflow-x: auto;
2200
+ }
2201
+
2202
+ @media (min-width: 768px) {
2203
+ .rcm-form-buttons-scroll {
2204
+ overflow-x: visible;
2205
+ }
2206
+ }
2207
+
2208
+ .rcm-form-buttons-row {
2209
+ display: inline-flex;
2210
+ align-items: center;
2211
+ gap: var(--rcm-space-sm);
2212
+ white-space: nowrap;
2213
+ }
2214
+
2215
+ @media (min-width: 768px) {
2216
+ .rcm-form-buttons-row {
2217
+ display: flex;
2218
+ flex-wrap: wrap;
2219
+ width: 100%;
2220
+ justify-content: flex-end;
2221
+ }
2222
+ }
2223
+
2224
+ /* ------------------------------------------------------------------ *
2225
+ * CreateStepView — 다단계 생성 패널
2226
+ * Replaces Tailwind `flex flex-col gap-2.5 pt-5 xl:flex-row`
2227
+ * + `panel relative flex-1 rounded-xl p-5` compound styles.
2228
+ * ------------------------------------------------------------------ */
2229
+ .rcm-create-step-container {
2230
+ display: flex;
2231
+ flex-direction: column;
2232
+ gap: 0.625rem; /* gap-2.5 */
2233
+ padding-top: var(--rcm-space-xl); /* pt-5 */
2234
+ }
2235
+
2236
+ @media (min-width: 1280px) {
2237
+ .rcm-create-step-container {
2238
+ flex-direction: row;
2239
+ }
2240
+ }
2241
+
2242
+ .rcm-create-step-panel {
2243
+ position: relative;
2244
+ flex: 1;
2245
+ background: var(--rcm-color-surface);
2246
+ border: var(--rcm-border-width) solid var(--rcm-color-border);
2247
+ border-radius: var(--rcm-radius-lg);
2248
+ padding: var(--rcm-space-lg); /* p-5 ≈ 1.25rem */
2249
+ box-shadow: var(--rcm-shadow-sm);
2250
+ }
2251
+
2252
+ .rcm-create-step-stepper-wrapper {
2253
+ margin-bottom: var(--rcm-space-sm);
2254
+ }
2255
+
2256
+ .rcm-create-step-label {
2257
+ font-size: var(--rcm-font-size-lg); /* text-lg */
2258
+ font-weight: var(--rcm-font-weight-semibold);
2259
+ color: var(--rcm-color-text);
2260
+ }
2261
+
2262
+ /* CreateStepView 내부 버튼 그룹 (Group justify="center" + pt-2 space-x-2) */
2263
+ .rcm-create-step-button-group {
2264
+ display: flex;
2265
+ align-items: center;
2266
+ justify-content: center;
2267
+ gap: var(--rcm-space-sm);
2268
+ padding-top: var(--rcm-space-xs);
2269
+ }
2270
+
2271
+ /* CreateStepButtons 하단 버튼 스트립 (flex justify-center gap-3) */
2272
+ .rcm-create-step-buttons {
2273
+ display: flex;
2274
+ justify-content: center;
2275
+ gap: var(--rcm-space-md);
2276
+ }
2277
+
2278
+ /* ViewEntityForm 하단 footer (인라인 모드가 아닐 때 버튼 영역)
2279
+ * Replaces Tailwind `mt-6 flex flex-col items-center gap-3`. */
2280
+ .rcm-form-footer {
2281
+ display: flex;
2282
+ flex-direction: column;
2283
+ align-items: center;
2284
+ gap: var(--rcm-space-md);
2285
+ margin-top: var(--rcm-space-xl);
2286
+ }
2287
+
2288
+ /* ------------------------------------------------------------------ *
2289
+ * FieldGroup container (replaces a .panel compound + responsive
2290
+ * Tailwind utilities which don't generate for library JSX outside the
2291
+ * host's content scan). Compact subCollection variant separate.
2292
+ * ------------------------------------------------------------------ */
2293
+ .rcm-fieldgroup {
2294
+ position: relative;
2295
+ margin-bottom: var(--rcm-space-md);
2296
+ padding: var(--rcm-space-xs);
2297
+ background: transparent;
2298
+ }
2299
+
2300
+ @media (min-width: 768px) {
2301
+ .rcm-fieldgroup {
2302
+ margin-bottom: var(--rcm-space-lg);
2303
+ padding: var(--rcm-space-lg);
2304
+ background: var(--rcm-color-surface);
2305
+ border: var(--rcm-border-width) solid var(--rcm-color-border);
2306
+ border-radius: var(--rcm-radius-lg);
2307
+ box-shadow: var(--rcm-shadow-md);
2308
+ }
2309
+ }
2310
+
2311
+ .rcm-fieldgroup-subcollection {
2312
+ position: relative;
2313
+ margin-bottom: var(--rcm-space-sm);
2314
+ padding: var(--rcm-space-md);
2315
+ background: var(--rcm-color-surface-muted);
2316
+ border: var(--rcm-border-width) solid var(--rcm-color-border);
2317
+ border-radius: var(--rcm-radius-md);
2318
+ }
2319
+
2320
+ .rcm-fieldgroup-header {
2321
+ margin-bottom: var(--rcm-space-sm);
2322
+ }
2323
+
2324
+ @media (min-width: 768px) {
2325
+ .rcm-fieldgroup-header {
2326
+ margin-bottom: var(--rcm-space-md);
2327
+ }
2328
+ }
2329
+
2330
+ .rcm-fieldgroup-title {
2331
+ display: flex;
2332
+ flex: 1;
2333
+ align-items: center;
2334
+ justify-content: space-between;
2335
+ font-size: var(--rcm-font-size-sm);
2336
+ font-weight: var(--rcm-font-weight-semibold);
2337
+ color: var(--rcm-color-text);
2338
+ margin: 0;
2339
+ }
2340
+
2341
+ @media (min-width: 768px) {
2342
+ .rcm-fieldgroup-title {
2343
+ font-size: var(--rcm-font-size-md);
2344
+ }
2345
+ }
2346
+
2347
+ .rcm-fieldgroup-collapse {
2348
+ font-size: var(--rcm-font-size-sm);
2349
+ color: var(--rcm-color-text-muted);
2350
+ cursor: pointer;
2351
+ }
2352
+
2353
+ .rcm-rotate-180 {
2354
+ transform: rotate(180deg);
2355
+ }
2356
+
2357
+ /* ------------------------------------------------------------------ *
2358
+ * FieldRenderer — label, required/dirty icons, tooltip, value, help
2359
+ * ------------------------------------------------------------------ */
2360
+ .rcm-field-label-wrapper {
2361
+ display: flex;
2362
+ align-items: center;
2363
+ margin-bottom: -2px;
2364
+ }
2365
+
2366
+ .rcm-field-label-wrapper-with-tooltip {
2367
+ justify-content: space-between;
2368
+ }
2369
+
2370
+ /* Label + required/dirty icon row — no gap between label and trailing icon,
2371
+ * matching the original `<div class="flex items-center">` layout. */
2372
+ .rcm-field-label-row {
2373
+ display: flex;
2374
+ align-items: center;
2375
+ }
2376
+
2377
+ .rcm-field-label {
2378
+ font-size: var(--rcm-font-size-xs);
2379
+ color: var(--rcm-color-text-muted);
2380
+ font-weight: var(--rcm-font-weight-normal);
2381
+ }
2382
+
2383
+ @media (min-width: 768px) {
2384
+ .rcm-field-label {
2385
+ font-size: var(--rcm-font-size-sm);
2386
+ }
2387
+ }
2388
+
2389
+ .rcm-field-icon-wrap {
2390
+ margin-bottom: 2px;
2391
+ }
2392
+
2393
+ @media (min-width: 768px) {
2394
+ .rcm-field-icon-wrap {
2395
+ margin-bottom: 4px;
2396
+ }
2397
+ }
2398
+
2399
+ .rcm-field-icon {
2400
+ width: 0.625rem;
2401
+ height: 0.625rem;
2402
+ cursor: help;
2403
+ }
2404
+
2405
+ @media (min-width: 768px) {
2406
+ .rcm-field-icon {
2407
+ width: 0.75rem;
2408
+ height: 0.75rem;
2409
+ }
2410
+ }
2411
+
2412
+ .rcm-field-icon-required {
2413
+ color: var(--rcm-color-error);
2414
+ }
2415
+
2416
+ .rcm-field-icon-dirty {
2417
+ color: var(--rcm-color-warning);
2418
+ }
2419
+
2420
+ .rcm-field-tooltip-icon {
2421
+ font-size: 11px;
2422
+ color: var(--rcm-color-text-muted);
2423
+ cursor: help;
2424
+ }
2425
+
2426
+ .rcm-field-value {
2427
+ max-width: 100%;
2428
+ text-wrap: wrap;
2429
+ }
2430
+
2431
+ .rcm-field-help {
2432
+ display: inline-block;
2433
+ font-size: 11px;
2434
+ color: var(--rcm-color-text-muted);
2435
+ margin-top: var(--rcm-space-xs);
2436
+ }
2437
+
2438
+ /* ------------------------------------------------------------------ *
2439
+ * Field layout — responsive grid + col-span / col-start helpers.
2440
+ *
2441
+ * These replace Tailwind's `col-span-full` / `lg:col-start-1` /
2442
+ * `grid grid-cols-1 lg:grid-cols-2 2xl:grid-cols-3` utilities that
2443
+ * would otherwise require host's Tailwind scanner to include
2444
+ * `node_modules/@rchemist/listgrid/**` — which isn't realistic for library
2445
+ * consumers. These scoped rules ship with our stylesheet directly.
2446
+ * ------------------------------------------------------------------ */
2447
+ .rcm-field-grid {
2448
+ display: grid;
2449
+ grid-template-columns: repeat(1, minmax(0, 1fr));
2450
+ column-gap: var(--rcm-space-lg);
2451
+ row-gap: var(--rcm-space-md);
2452
+ }
2453
+
2454
+ @media (min-width: 1024px) {
2455
+ .rcm-field-grid {
2456
+ grid-template-columns: repeat(2, minmax(0, 1fr));
2457
+ }
2458
+ }
2459
+
2460
+ @media (min-width: 1536px) {
2461
+ .rcm-field-grid {
2462
+ grid-template-columns: repeat(3, minmax(0, 1fr));
2463
+ }
2464
+ }
2465
+
2466
+ .rcm-col-span-full {
2467
+ grid-column: 1 / -1;
2468
+ }
2469
+
2470
+ /* Forces a field to start at column 1 on lg+ breakpoints so a previous
2471
+ * field's `lineBreak` actually breaks the row. Below lg the grid is
2472
+ * 1-column anyway so no col-start override is needed. */
2473
+ @media (min-width: 1024px) {
2474
+ .rcm-col-start-1-lg {
2475
+ grid-column-start: 1;
2476
+ }
2477
+ }
2478
+
2479
+ /* ------------------------------------------------------------------ *
2480
+ * Alert items (sticky form alert stack in ViewEntityFormAlerts)
2481
+ * ------------------------------------------------------------------ */
2482
+ .rcm-alerts-single {
2483
+ margin-bottom: var(--rcm-space-lg);
2484
+ }
2485
+
2486
+ .rcm-alerts-multi {
2487
+ margin-bottom: var(--rcm-space-lg);
2488
+ }
2489
+
2490
+ .rcm-alerts-header {
2491
+ display: flex;
2492
+ align-items: center;
2493
+ justify-content: space-between;
2494
+ padding: var(--rcm-space-md);
2495
+ background: var(--rcm-color-surface-muted);
2496
+ border: var(--rcm-border-width) solid var(--rcm-color-border);
2497
+ cursor: pointer;
2498
+ transition: background var(--rcm-transition-fast);
2499
+ }
2500
+
2501
+ .rcm-alerts-header-collapsed {
2502
+ border-radius: var(--rcm-radius-md);
2503
+ }
2504
+
2505
+ .rcm-alerts-header-expanded {
2506
+ border-top-left-radius: var(--rcm-radius-md);
2507
+ border-top-right-radius: var(--rcm-radius-md);
2508
+ border-bottom: 0;
2509
+ }
2510
+
2511
+ .rcm-alerts-header-left {
2512
+ display: flex;
2513
+ align-items: center;
2514
+ gap: var(--rcm-space-sm);
2515
+ }
2516
+
2517
+ .rcm-alerts-indicator {
2518
+ width: 8px;
2519
+ height: 8px;
2520
+ border-radius: 9999px;
2521
+ background: var(--rcm-color-info);
2522
+ }
2523
+
2524
+ .rcm-alerts-indicator-error {
2525
+ background: var(--rcm-color-error);
2526
+ }
2527
+ .rcm-alerts-indicator-warning {
2528
+ background: var(--rcm-color-warning);
2529
+ }
2530
+ .rcm-alerts-indicator-success {
2531
+ background: var(--rcm-color-success);
2532
+ }
2533
+ .rcm-alerts-indicator-info {
2534
+ background: var(--rcm-color-info);
2535
+ }
2536
+
2537
+ /* .rcm-alerts-header-title removed — JSX uses rcm-text data-weight="medium". */
2538
+
2539
+ /* .rcm-alerts-toggle / -chevron removed — JSX uses rcm-icon-btn + rcm-icon. */
2540
+
2541
+ .rcm-alerts-body {
2542
+ background: var(--rcm-color-surface);
2543
+ border-left: var(--rcm-border-width) solid var(--rcm-color-border);
2544
+ border-right: var(--rcm-border-width) solid var(--rcm-color-border);
2545
+ border-bottom: var(--rcm-border-width) solid var(--rcm-color-border);
2546
+ border-bottom-left-radius: var(--rcm-radius-md);
2547
+ border-bottom-right-radius: var(--rcm-radius-md);
2548
+ overflow: hidden;
2549
+ transition:
2550
+ max-height 300ms,
2551
+ opacity 300ms;
2552
+ }
2553
+
2554
+ .rcm-alerts-body-collapsed {
2555
+ max-height: 0;
2556
+ opacity: 0;
2557
+ }
2558
+
2559
+ .rcm-alerts-body-expanded {
2560
+ max-height: 2000px;
2561
+ opacity: 1;
2562
+ }
2563
+
2564
+ .rcm-alerts-list {
2565
+ display: flex;
2566
+ flex-direction: column;
2567
+ gap: var(--rcm-space-sm);
2568
+ padding: var(--rcm-space-sm);
2569
+ }
2570
+
2571
+ /* ------------------------------------------------------------------ *
2572
+ * Alert item (individual alert row)
2573
+ * ------------------------------------------------------------------ */
2574
+ .rcm-alert-item {
2575
+ display: flex;
2576
+ align-items: flex-start;
2577
+ justify-content: space-between;
2578
+ gap: var(--rcm-space-md);
2579
+ }
2580
+
2581
+ .rcm-alert-item-content {
2582
+ display: flex;
2583
+ align-items: flex-start;
2584
+ gap: var(--rcm-space-md);
2585
+ flex: 1;
2586
+ }
2587
+
2588
+ /* .rcm-alert-item-icon / -message / -description / -external* removed — JSX uses rcm-icon / rcm-text / rcm-button[data-variant="link"]. */
2589
+
2590
+ .rcm-alert-item-body {
2591
+ flex: 1;
2592
+ }
2593
+
2594
+ /* .rcm-alert-item-close / -close-icon removed — JSX uses rcm-icon-btn + rcm-icon. */
2595
+
2596
+ /* ------------------------------------------------------------------ *
2597
+ * Panels / containers (surface with padding, used for dialog sections)
2598
+ * ------------------------------------------------------------------ */
2599
+ .rcm-panel {
2600
+ background: var(--rcm-color-surface);
2601
+ border: var(--rcm-border-width) solid var(--rcm-color-border);
2602
+ border-radius: var(--rcm-radius-md);
2603
+ padding: var(--rcm-space-lg);
2604
+ }
2605
+
2606
+ .rcm-panel-muted {
2607
+ background: var(--rcm-color-surface-muted);
2608
+ }
2609
+
2610
+ .rcm-field-indent {
2611
+ padding-left: var(--rcm-space-xl);
2612
+ }
2613
+
2614
+ .rcm-field-input-compact {
2615
+ max-width: 24rem;
2616
+ }
2617
+
2618
+ .rcm-cursor-pointer {
2619
+ cursor: pointer;
2620
+ }
2621
+
2622
+ .rcm-dialog-body {
2623
+ display: flex;
2624
+ flex-direction: column;
2625
+ gap: var(--rcm-space-xl);
2626
+ padding: var(--rcm-space-xl);
2627
+ }
2628
+
2629
+ .rcm-action-bar {
2630
+ display: flex;
2631
+ align-items: center;
2632
+ justify-content: center;
2633
+ padding-top: var(--rcm-space-xl);
2634
+ }
2635
+
2636
+ .rcm-action-bar-end {
2637
+ display: flex;
2638
+ align-items: center;
2639
+ justify-content: flex-end;
2640
+ gap: var(--rcm-space-sm);
2641
+ padding-top: var(--rcm-space-lg);
2642
+ }
2643
+
2644
+ /* ------------------------------------------------------------------ *
2645
+ * Checkable row (used in data-export field selector and similar lists)
2646
+ * ------------------------------------------------------------------ */
2647
+ .rcm-checkbox-row {
2648
+ display: flex;
2649
+ align-items: center;
2650
+ gap: var(--rcm-space-sm);
2651
+ padding: var(--rcm-space-sm);
2652
+ border-radius: var(--rcm-radius-md);
2653
+ cursor: pointer;
2654
+ transition: background var(--rcm-transition-fast);
2655
+ }
2656
+
2657
+ .rcm-checkbox-row:hover {
2658
+ background: var(--rcm-color-surface-hover);
2659
+ }
2660
+
2661
+ .rcm-checkbox-label {
2662
+ font-size: var(--rcm-font-size-sm);
2663
+ color: var(--rcm-color-text);
2664
+ cursor: pointer;
2665
+ user-select: none;
2666
+ margin: 0;
2667
+ }
2668
+
2669
+ /* ------------------------------------------------------------------ *
2670
+ * SubCollection views — shared toolbar / empty / error / pagination
2671
+ * shell used by TableSubCollectionView, CardSubCollectionView, and
2672
+ * any future sibling that renders a list of related entities.
2673
+ * ------------------------------------------------------------------ */
2674
+ .rcm-subcollection {
2675
+ display: flex;
2676
+ flex-direction: column;
2677
+ gap: var(--rcm-space-lg);
2678
+ }
2679
+
2680
+ .rcm-subcollection-toolbar {
2681
+ display: flex;
2682
+ flex-direction: column;
2683
+ gap: var(--rcm-space-md);
2684
+ }
2685
+
2686
+ @media (min-width: 640px) {
2687
+ .rcm-subcollection-toolbar {
2688
+ flex-direction: row;
2689
+ align-items: center;
2690
+ justify-content: space-between;
2691
+ }
2692
+ }
2693
+
2694
+ .rcm-subcollection-search {
2695
+ position: relative;
2696
+ flex: 1 1 auto;
2697
+ max-width: 28rem;
2698
+ }
2699
+
2700
+ .rcm-subcollection-search-input {
2701
+ display: block;
2702
+ width: 100%;
2703
+ height: var(--rcm-size-input-height);
2704
+ padding: 0 2.5rem;
2705
+ font-size: var(--rcm-font-size-sm);
2706
+ color: var(--rcm-color-text);
2707
+ background: var(--rcm-color-surface);
2708
+ border: var(--rcm-border-width) solid var(--rcm-color-border);
2709
+ border-radius: var(--rcm-radius-lg);
2710
+ box-shadow: var(--rcm-shadow-sm);
2711
+ transition: border-color var(--rcm-transition-fast);
2712
+ }
2713
+
2714
+ .rcm-subcollection-search-input::placeholder {
2715
+ color: var(--rcm-color-text-muted);
2716
+ }
2717
+
2718
+ .rcm-subcollection-search-input:focus {
2719
+ outline: none;
2720
+ border-color: var(--rcm-color-primary);
2721
+ }
2722
+
2723
+ .rcm-subcollection-search-icon {
2724
+ position: absolute;
2725
+ left: var(--rcm-space-md);
2726
+ top: 50%;
2727
+ transform: translateY(-50%);
2728
+ display: inline-flex;
2729
+ align-items: center;
2730
+ pointer-events: none;
2731
+ color: var(--rcm-color-text-muted);
2732
+ transition: color var(--rcm-transition-fast);
2733
+ }
2734
+
2735
+ .rcm-subcollection-search-icon-focused {
2736
+ color: var(--rcm-color-primary);
2737
+ }
2738
+
2739
+ .rcm-subcollection-search-clear {
2740
+ position: absolute;
2741
+ right: var(--rcm-space-md);
2742
+ top: 50%;
2743
+ transform: translateY(-50%);
2744
+ display: inline-flex;
2745
+ align-items: center;
2746
+ padding: 0;
2747
+ background: transparent;
2748
+ border: 0;
2749
+ color: var(--rcm-color-text-muted);
2750
+ cursor: pointer;
2751
+ transition: color var(--rcm-transition-fast);
2752
+ }
2753
+
2754
+ .rcm-subcollection-search-clear:hover {
2755
+ color: var(--rcm-color-text);
2756
+ }
2757
+
2758
+ .rcm-subcollection-actions {
2759
+ display: flex;
2760
+ align-items: center;
2761
+ gap: var(--rcm-space-sm);
2762
+ }
2763
+
2764
+ .rcm-subcollection-count {
2765
+ display: inline-flex;
2766
+ align-items: center;
2767
+ gap: var(--rcm-space-xs);
2768
+ padding: var(--rcm-space-xs) var(--rcm-space-md);
2769
+ font-size: var(--rcm-font-size-sm);
2770
+ font-weight: var(--rcm-font-weight-medium);
2771
+ color: var(--rcm-color-text-muted);
2772
+ background: var(--rcm-color-surface-muted);
2773
+ border-radius: var(--rcm-radius-md);
2774
+ }
2775
+
2776
+ .rcm-subcollection-count-accent {
2777
+ color: var(--rcm-color-primary);
2778
+ font-weight: var(--rcm-font-weight-semibold);
2779
+ }
2780
+
2781
+ .rcm-subcollection-count-sep {
2782
+ color: var(--rcm-color-border-hover);
2783
+ }
2784
+
2785
+ .rcm-subcollection-icon-btn {
2786
+ display: inline-flex;
2787
+ align-items: center;
2788
+ justify-content: center;
2789
+ width: 2.25rem;
2790
+ height: 2.25rem;
2791
+ padding: 0;
2792
+ color: var(--rcm-color-text-muted);
2793
+ background: var(--rcm-color-surface-muted);
2794
+ border: 0;
2795
+ border-radius: var(--rcm-radius-md);
2796
+ cursor: pointer;
2797
+ transition:
2798
+ background var(--rcm-transition-fast),
2799
+ color var(--rcm-transition-fast);
2800
+ }
2801
+
2802
+ .rcm-subcollection-icon-btn:hover {
2803
+ background: var(--rcm-color-surface-hover);
2804
+ color: var(--rcm-color-text);
2805
+ }
2806
+
2807
+ .rcm-subcollection-icon-btn-help {
2808
+ cursor: help;
2809
+ }
2810
+
2811
+ .rcm-subcollection-add-btn {
2812
+ display: inline-flex;
2813
+ align-items: center;
2814
+ gap: var(--rcm-space-xs);
2815
+ height: var(--rcm-size-button-height);
2816
+ padding: 0 var(--rcm-space-lg);
2817
+ font-size: var(--rcm-font-size-sm);
2818
+ font-weight: var(--rcm-font-weight-medium);
2819
+ color: var(--rcm-color-primary-text);
2820
+ background: var(--rcm-color-primary);
2821
+ border: 0;
2822
+ border-radius: var(--rcm-radius-md);
2823
+ box-shadow: var(--rcm-shadow-sm);
2824
+ cursor: pointer;
2825
+ transition: background var(--rcm-transition-fast);
2826
+ }
2827
+
2828
+ .rcm-subcollection-add-btn:hover {
2829
+ background: var(--rcm-color-primary-hover);
2830
+ }
2831
+
2832
+ .rcm-subcollection-add-btn-label {
2833
+ display: none;
2834
+ }
2835
+
2836
+ @media (min-width: 640px) {
2837
+ .rcm-subcollection-add-btn-label {
2838
+ display: inline;
2839
+ }
2840
+ }
2841
+
2842
+ .rcm-subcollection-empty {
2843
+ display: flex;
2844
+ flex-direction: column;
2845
+ align-items: center;
2846
+ justify-content: center;
2847
+ padding: var(--rcm-space-2xl) var(--rcm-space-lg);
2848
+ background: var(--rcm-color-surface-muted);
2849
+ border: var(--rcm-border-width) dashed var(--rcm-color-border);
2850
+ border-radius: var(--rcm-radius-lg);
2851
+ text-align: center;
2852
+ }
2853
+
2854
+ .rcm-subcollection-empty-icon {
2855
+ display: flex;
2856
+ align-items: center;
2857
+ justify-content: center;
2858
+ width: 4rem;
2859
+ height: 4rem;
2860
+ margin-bottom: var(--rcm-space-lg);
2861
+ background: var(--rcm-color-surface-hover);
2862
+ border-radius: var(--rcm-radius-lg);
2863
+ color: var(--rcm-color-text-disabled);
2864
+ }
2865
+
2866
+ .rcm-subcollection-empty-title {
2867
+ font-size: var(--rcm-font-size-md);
2868
+ font-weight: var(--rcm-font-weight-medium);
2869
+ color: var(--rcm-color-text-muted);
2870
+ margin: 0;
2871
+ }
2872
+
2873
+ .rcm-subcollection-empty-hint {
2874
+ font-size: var(--rcm-font-size-sm);
2875
+ color: var(--rcm-color-text-disabled);
2876
+ margin-top: var(--rcm-space-xs);
2877
+ }
2878
+
2879
+ .rcm-subcollection-empty-action {
2880
+ display: inline-flex;
2881
+ align-items: center;
2882
+ gap: var(--rcm-space-xs);
2883
+ margin-top: var(--rcm-space-lg);
2884
+ padding: var(--rcm-space-xs) var(--rcm-space-lg);
2885
+ font-size: var(--rcm-font-size-sm);
2886
+ font-weight: var(--rcm-font-weight-medium);
2887
+ color: var(--rcm-color-primary);
2888
+ background: color-mix(in srgb, var(--rcm-color-primary) 8%, transparent);
2889
+ border: 0;
2890
+ border-radius: var(--rcm-radius-md);
2891
+ cursor: pointer;
2892
+ transition: background var(--rcm-transition-fast);
2893
+ }
2894
+
2895
+ .rcm-subcollection-empty-action:hover {
2896
+ background: color-mix(in srgb, var(--rcm-color-primary) 16%, transparent);
2897
+ }
2898
+
2899
+ .rcm-subcollection-error {
2900
+ display: flex;
2901
+ align-items: flex-start;
2902
+ gap: var(--rcm-space-lg);
2903
+ padding: var(--rcm-space-xl);
2904
+ background: var(--rcm-color-error-surface);
2905
+ border: var(--rcm-border-width) solid color-mix(in srgb, var(--rcm-color-error) 25%, transparent);
2906
+ border-radius: var(--rcm-radius-lg);
2907
+ }
2908
+
2909
+ .rcm-subcollection-error-icon {
2910
+ display: flex;
2911
+ align-items: center;
2912
+ justify-content: center;
2913
+ flex-shrink: 0;
2914
+ width: 3rem;
2915
+ height: 3rem;
2916
+ background: color-mix(in srgb, var(--rcm-color-error) 15%, transparent);
2917
+ border-radius: var(--rcm-radius-lg);
2918
+ color: var(--rcm-color-error);
2919
+ }
2920
+
2921
+ .rcm-subcollection-error-body {
2922
+ flex: 1 1 auto;
2923
+ min-width: 0;
2924
+ }
2925
+
2926
+ .rcm-subcollection-error-title {
2927
+ font-size: var(--rcm-font-size-md);
2928
+ font-weight: var(--rcm-font-weight-semibold);
2929
+ color: var(--rcm-color-error);
2930
+ margin: 0;
2931
+ }
2932
+
2933
+ .rcm-subcollection-error-message {
2934
+ font-size: var(--rcm-font-size-sm);
2935
+ color: var(--rcm-color-text-muted);
2936
+ margin-top: var(--rcm-space-xs);
2937
+ }
2938
+
2939
+ .rcm-subcollection-error-retry {
2940
+ display: inline-flex;
2941
+ align-items: center;
2942
+ gap: var(--rcm-space-xs);
2943
+ margin-top: var(--rcm-space-lg);
2944
+ padding: var(--rcm-space-xs) var(--rcm-space-lg);
2945
+ font-size: var(--rcm-font-size-sm);
2946
+ font-weight: var(--rcm-font-weight-medium);
2947
+ color: var(--rcm-color-error);
2948
+ background: var(--rcm-color-surface);
2949
+ border: var(--rcm-border-width) solid color-mix(in srgb, var(--rcm-color-error) 25%, transparent);
2950
+ border-radius: var(--rcm-radius-md);
2951
+ cursor: pointer;
2952
+ transition: background var(--rcm-transition-fast);
2953
+ }
2954
+
2955
+ .rcm-subcollection-error-retry:hover {
2956
+ background: var(--rcm-color-error-surface);
2957
+ }
2958
+
2959
+ /* Skeleton variants */
2960
+ .rcm-subcollection-skeleton {
2961
+ display: flex;
2962
+ flex-direction: column;
2963
+ gap: var(--rcm-space-md);
2964
+ }
2965
+
2966
+ .rcm-subcollection-skeleton-toolbar {
2967
+ display: flex;
2968
+ align-items: center;
2969
+ justify-content: space-between;
2970
+ gap: var(--rcm-space-lg);
2971
+ }
2972
+
2973
+ .rcm-subcollection-skeleton-search {
2974
+ height: 2.25rem;
2975
+ width: 16rem;
2976
+ background: var(--rcm-color-surface-hover);
2977
+ border-radius: var(--rcm-radius-lg);
2978
+ animation: rcm-pulse 1.5s ease-in-out infinite;
2979
+ }
2980
+
2981
+ .rcm-subcollection-skeleton-actions {
2982
+ display: flex;
2983
+ align-items: center;
2984
+ gap: var(--rcm-space-sm);
2985
+ }
2986
+
2987
+ .rcm-subcollection-skeleton-pill {
2988
+ height: 2rem;
2989
+ width: 4rem;
2990
+ background: var(--rcm-color-surface-hover);
2991
+ border-radius: var(--rcm-radius-md);
2992
+ animation: rcm-pulse 1.5s ease-in-out infinite;
2993
+ }
2994
+
2995
+ .rcm-subcollection-skeleton-table {
2996
+ overflow: hidden;
2997
+ border: var(--rcm-border-width) solid var(--rcm-color-border);
2998
+ border-radius: var(--rcm-radius-lg);
2999
+ }
3000
+
3001
+ .rcm-subcollection-skeleton-thead {
3002
+ height: 2.5rem;
3003
+ background: var(--rcm-color-surface-muted);
3004
+ animation: rcm-pulse 1.5s ease-in-out infinite;
3005
+ }
3006
+
3007
+ .rcm-subcollection-skeleton-tr {
3008
+ height: 2.5rem;
3009
+ background: var(--rcm-color-surface);
3010
+ border-top: var(--rcm-border-width) solid var(--rcm-color-border);
3011
+ animation: rcm-pulse 1.5s ease-in-out infinite;
3012
+ }
3013
+
3014
+ .rcm-subcollection-skeleton-card {
3015
+ height: 13rem;
3016
+ background: var(--rcm-color-surface);
3017
+ border: var(--rcm-border-width) solid var(--rcm-color-border);
3018
+ border-radius: var(--rcm-radius-lg);
3019
+ box-shadow: var(--rcm-shadow-sm);
3020
+ overflow: hidden;
3021
+ }
3022
+
3023
+ .rcm-subcollection-skeleton-card-header {
3024
+ height: 3.5rem;
3025
+ background: var(--rcm-color-surface-muted);
3026
+ padding: var(--rcm-space-lg);
3027
+ }
3028
+
3029
+ .rcm-subcollection-skeleton-card-body {
3030
+ display: flex;
3031
+ flex-direction: column;
3032
+ gap: var(--rcm-space-md);
3033
+ padding: var(--rcm-space-lg);
3034
+ }
3035
+
3036
+ .rcm-subcollection-skeleton-card-row {
3037
+ display: grid;
3038
+ grid-template-columns: repeat(2, minmax(0, 1fr));
3039
+ gap: var(--rcm-space-lg);
3040
+ }
3041
+
3042
+ .rcm-subcollection-skeleton-card-field {
3043
+ display: flex;
3044
+ flex-direction: column;
3045
+ gap: var(--rcm-space-xs);
3046
+ }
3047
+
3048
+ .rcm-subcollection-skeleton-label {
3049
+ height: 0.75rem;
3050
+ width: 3rem;
3051
+ background: var(--rcm-color-surface-hover);
3052
+ border-radius: var(--rcm-radius-sm);
3053
+ animation: rcm-pulse 1.5s ease-in-out infinite;
3054
+ }
3055
+
3056
+ .rcm-subcollection-skeleton-value {
3057
+ height: 1rem;
3058
+ width: 5rem;
3059
+ background: var(--rcm-color-surface-hover);
3060
+ border-radius: var(--rcm-radius-sm);
3061
+ animation: rcm-pulse 1.5s ease-in-out infinite;
3062
+ }
3063
+
3064
+ /* Table body */
3065
+ .rcm-subcollection-table-wrapper {
3066
+ overflow-x: auto;
3067
+ border: var(--rcm-border-width) solid var(--rcm-color-border);
3068
+ border-radius: var(--rcm-radius-lg);
3069
+ }
3070
+
3071
+ .rcm-subcollection-table {
3072
+ width: 100%;
3073
+ border-collapse: collapse;
3074
+ font-size: var(--rcm-font-size-sm);
3075
+ }
3076
+
3077
+ .rcm-subcollection-table thead tr {
3078
+ background: var(--rcm-color-surface-muted);
3079
+ }
3080
+
3081
+ .rcm-subcollection-table th {
3082
+ padding: var(--rcm-space-md);
3083
+ border-bottom: var(--rcm-border-width) solid var(--rcm-color-border);
3084
+ text-align: center;
3085
+ font-size: var(--rcm-font-size-xs);
3086
+ font-weight: var(--rcm-font-weight-semibold);
3087
+ color: var(--rcm-color-text-muted);
3088
+ text-transform: uppercase;
3089
+ letter-spacing: 0.05em;
3090
+ white-space: nowrap;
3091
+ }
3092
+
3093
+ .rcm-subcollection-th-no {
3094
+ width: 3rem;
3095
+ }
3096
+
3097
+ .rcm-subcollection-table tbody tr {
3098
+ background: var(--rcm-color-surface);
3099
+ transition: background var(--rcm-transition-fast);
3100
+ }
3101
+
3102
+ .rcm-subcollection-table tbody tr:hover {
3103
+ background: var(--rcm-color-surface-hover);
3104
+ }
3105
+
3106
+ .rcm-subcollection-table tbody tr + tr {
3107
+ border-top: var(--rcm-border-width) solid var(--rcm-color-border);
3108
+ }
3109
+
3110
+ .rcm-subcollection-table td {
3111
+ padding: var(--rcm-space-sm) var(--rcm-space-md);
3112
+ text-align: center;
3113
+ color: var(--rcm-color-text);
3114
+ }
3115
+
3116
+ .rcm-subcollection-td-no {
3117
+ color: var(--rcm-color-text-disabled);
3118
+ font-variant-numeric: tabular-nums;
3119
+ }
3120
+
3121
+ /* Card grid */
3122
+ .rcm-subcollection-card-grid {
3123
+ display: grid;
3124
+ gap: var(--rcm-space-lg);
3125
+ grid-template-columns: repeat(1, minmax(0, 1fr));
3126
+ }
3127
+
3128
+ @media (min-width: 640px) {
3129
+ .rcm-subcollection-card-grid-1 {
3130
+ grid-template-columns: repeat(1, minmax(0, 1fr));
3131
+ }
3132
+ .rcm-subcollection-card-grid-2 {
3133
+ grid-template-columns: repeat(2, minmax(0, 1fr));
3134
+ }
3135
+ .rcm-subcollection-card-grid-3 {
3136
+ grid-template-columns: repeat(3, minmax(0, 1fr));
3137
+ }
3138
+ .rcm-subcollection-card-grid-4 {
3139
+ grid-template-columns: repeat(4, minmax(0, 1fr));
3140
+ }
3141
+ }
3142
+
3143
+ /* Pagination */
3144
+ .rcm-subcollection-pagination {
3145
+ display: flex;
3146
+ align-items: center;
3147
+ justify-content: center;
3148
+ gap: var(--rcm-space-sm);
3149
+ padding-top: var(--rcm-space-md);
3150
+ }
3151
+
3152
+ .rcm-subcollection-page-btn {
3153
+ display: inline-flex;
3154
+ align-items: center;
3155
+ justify-content: center;
3156
+ width: 2rem;
3157
+ height: 2rem;
3158
+ padding: 0;
3159
+ color: var(--rcm-color-text-muted);
3160
+ background: var(--rcm-color-surface);
3161
+ border: var(--rcm-border-width) solid var(--rcm-color-border);
3162
+ border-radius: var(--rcm-radius-md);
3163
+ cursor: pointer;
3164
+ transition:
3165
+ background var(--rcm-transition-fast),
3166
+ color var(--rcm-transition-fast);
3167
+ }
3168
+
3169
+ .rcm-subcollection-page-btn:hover:not(:disabled) {
3170
+ background: var(--rcm-color-surface-hover);
3171
+ color: var(--rcm-color-text);
3172
+ }
3173
+
3174
+ .rcm-subcollection-page-btn:disabled {
3175
+ opacity: 0.4;
3176
+ cursor: not-allowed;
3177
+ }
3178
+
3179
+ .rcm-subcollection-page-info {
3180
+ display: inline-flex;
3181
+ align-items: center;
3182
+ gap: var(--rcm-space-xs);
3183
+ padding: 0 var(--rcm-space-md);
3184
+ font-size: var(--rcm-font-size-sm);
3185
+ font-weight: var(--rcm-font-weight-medium);
3186
+ color: var(--rcm-color-text-muted);
3187
+ }
3188
+
3189
+ .rcm-subcollection-page-info-current {
3190
+ color: var(--rcm-color-primary);
3191
+ font-weight: var(--rcm-font-weight-semibold);
3192
+ }
3193
+
3194
+ .rcm-subcollection-page-size-badge {
3195
+ display: inline-flex;
3196
+ align-items: center;
3197
+ margin-left: var(--rcm-space-sm);
3198
+ padding: var(--rcm-space-xs) var(--rcm-space-sm);
3199
+ font-size: var(--rcm-font-size-xs);
3200
+ color: var(--rcm-color-text-disabled);
3201
+ background: var(--rcm-color-surface-muted);
3202
+ border-radius: var(--rcm-radius-sm);
3203
+ }
3204
+ /* END — unlayered */
3205
+
3206
+ /* END — unlayered */