@public-ui/sample-react 4.0.3-rc.1 → 4.0.3

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 (559) hide show
  1. package/dist/assets/{Alert-DMBbjlvg-5edrVeMy.js → Alert-BgN7dY9a-BK1E0Yxi.js} +2 -2
  2. package/dist/assets/{Alert-DMBbjlvg-5edrVeMy.js.map → Alert-BgN7dY9a-BK1E0Yxi.js.map} +1 -1
  3. package/dist/assets/{Collapsible-Ba0nb_Sb-CdsgCREr.js → Collapsible-gqDSgPZS-YAJa-CVu.js} +2 -2
  4. package/dist/assets/{Collapsible-Ba0nb_Sb-CdsgCREr.js.map → Collapsible-gqDSgPZS-YAJa-CVu.js.map} +1 -1
  5. package/dist/assets/CustomSuggestionsOptionsGroup-BqJWXpoB-DC2bZ-bA.js +2 -0
  6. package/dist/assets/CustomSuggestionsOptionsGroup-BqJWXpoB-DC2bZ-bA.js.map +1 -0
  7. package/dist/assets/{FieldControlStateWrapper-CXGjzY3d-DpJavILF.js → FieldControlStateWrapper-BU98kTCJ-CoAhw__l.js} +2 -2
  8. package/dist/assets/{FieldControlStateWrapper-CXGjzY3d-DpJavILF.js.map → FieldControlStateWrapper-BU98kTCJ-CoAhw__l.js.map} +1 -1
  9. package/dist/assets/FormFieldStateWrapper-DM8vsz3R-Do_RgmRh.js +2 -0
  10. package/dist/assets/FormFieldStateWrapper-DM8vsz3R-Do_RgmRh.js.map +1 -0
  11. package/dist/assets/{Heading-ExipjZn2-Dte9jTvK.js → Heading-3bp_rXJz-Dw4iaqcH.js} +2 -2
  12. package/dist/assets/{Heading-ExipjZn2-Dte9jTvK.js.map → Heading-3bp_rXJz-Dw4iaqcH.js.map} +1 -1
  13. package/dist/assets/{Icon-ChuTqoyN-B-1AhLoI.js → Icon-BEIqs1jk-lHBI3UrV.js} +2 -2
  14. package/dist/assets/{Icon-ChuTqoyN-B-1AhLoI.js.map → Icon-BEIqs1jk-lHBI3UrV.js.map} +1 -1
  15. package/dist/assets/{Input-B7luIqWG-B_DwQ4PL.js → Input-CQan4WsF-DqktvY1s.js} +2 -2
  16. package/dist/assets/{Input-B7luIqWG-B_DwQ4PL.js.map → Input-CQan4WsF-DqktvY1s.js.map} +1 -1
  17. package/dist/assets/{InputStateWrapper-C3RikkWu-C1qfLsHt.js → InputStateWrapper-D9om0ETB-Dn0ZrKau.js} +2 -2
  18. package/dist/assets/{InputStateWrapper-C3RikkWu-C1qfLsHt.js.map → InputStateWrapper-D9om0ETB-Dn0ZrKau.js.map} +1 -1
  19. package/dist/assets/{InternalUnderlinedBadgeText-nQF-eXQn-BnjcSViN.js → InternalUnderlinedBadgeText-c3GixNBU-BeoNuzUw.js} +2 -2
  20. package/dist/assets/{InternalUnderlinedBadgeText-nQF-eXQn-BnjcSViN.js.map → InternalUnderlinedBadgeText-c3GixNBU-BeoNuzUw.js.map} +1 -1
  21. package/dist/assets/{Span-Qm_1k5Dm-Dw-PyoiX.js → Span-8IeR7CmV--67kx0v9.js} +2 -2
  22. package/dist/assets/{Span-Qm_1k5Dm-Dw-PyoiX.js.map → Span-8IeR7CmV--67kx0v9.js.map} +1 -1
  23. package/dist/assets/{access-and-short-key-OLoWTcqR-BoOdI1HK.js → access-and-short-key-OLoWTcqR-DT0z6D9C.js} +2 -2
  24. package/dist/assets/{access-and-short-key-OLoWTcqR-BoOdI1HK.js.map → access-and-short-key-OLoWTcqR-DT0z6D9C.js.map} +1 -1
  25. package/dist/assets/{align-DUInjtnX-Dw9xZ3OA.js → align-DUInjtnX-DOHEabkn.js} +2 -2
  26. package/dist/assets/{align-DUInjtnX-Dw9xZ3OA.js.map → align-DUInjtnX-DOHEabkn.js.map} +1 -1
  27. package/dist/assets/{align-floating-elements-AQNQlNaN-C6XTR0iN.js → align-floating-elements-AQNQlNaN-CPxVbPCs.js} +2 -2
  28. package/dist/assets/{align-floating-elements-AQNQlNaN-C6XTR0iN.js.map → align-floating-elements-AQNQlNaN-CPxVbPCs.js.map} +1 -1
  29. package/dist/assets/{associated.controller-BZSp_RI6-kJbGE2Rg.js → associated.controller-BZSp_RI6-BL-9sWhP.js} +2 -2
  30. package/dist/assets/{associated.controller-BZSp_RI6-kJbGE2Rg.js.map → associated.controller-BZSp_RI6-BL-9sWhP.js.map} +1 -1
  31. package/dist/assets/{auto-complete-wULl95GT-BJzDnFBE.js → auto-complete-wULl95GT-CfJFiT2Q.js} +2 -2
  32. package/dist/assets/{auto-complete-wULl95GT-BJzDnFBE.js.map → auto-complete-wULl95GT-CfJFiT2Q.js.map} +1 -1
  33. package/dist/assets/clsx-COFh-Vc8-D7cYsJM5.js +2 -0
  34. package/dist/assets/clsx-COFh-Vc8-D7cYsJM5.js.map +1 -0
  35. package/dist/assets/{color-DZ0Ata5E-B6HcLB9q.js → color-DZ0Ata5E-Ce_NTyBJ.js} +2 -2
  36. package/dist/assets/{color-DZ0Ata5E-B6HcLB9q.js.map → color-DZ0Ata5E-Ce_NTyBJ.js.map} +1 -1
  37. package/dist/assets/{controller-CRuc6jPl-BCgkONMn.js → controller-C-tVRLwP-MsOZ9UK1.js} +2 -2
  38. package/dist/assets/{controller-CRuc6jPl-BCgkONMn.js.map → controller-C-tVRLwP-MsOZ9UK1.js.map} +1 -1
  39. package/dist/assets/{controller-BR_3q1st-C1Eb5l4W.js → controller-CG-a1F9j-BABPrsIQ.js} +2 -2
  40. package/dist/assets/{controller-BR_3q1st-C1Eb5l4W.js.map → controller-CG-a1F9j-BABPrsIQ.js.map} +1 -1
  41. package/dist/assets/{controller-Cmac9vz_-Bq3Zv4L_.js → controller-Cfy-9CwA-TlTKfc-y.js} +2 -2
  42. package/dist/assets/{controller-Cmac9vz_-Bq3Zv4L_.js.map → controller-Cfy-9CwA-TlTKfc-y.js.map} +1 -1
  43. package/dist/assets/{controller-BCXVCtVk-CtNYPV_6.js → controller-CtT1RDh9-C2Tp69K_.js} +2 -2
  44. package/dist/assets/controller-CtT1RDh9-C2Tp69K_.js.map +1 -0
  45. package/dist/assets/{controller-icon-VcdHRSQP-DtuqRSCn.js → controller-icon-CyFFGMOa-C2lnFluJ.js} +2 -2
  46. package/dist/assets/{controller-icon-VcdHRSQP-DtuqRSCn.js.map → controller-icon-CyFFGMOa-C2lnFluJ.js.map} +1 -1
  47. package/dist/assets/custom-class-D9xy9Wzd-mDY7DdMw.js +2 -0
  48. package/dist/assets/{custom-class-D9xy9Wzd-BQxgTvLO.js.map → custom-class-D9xy9Wzd-mDY7DdMw.js.map} +1 -1
  49. package/dist/assets/{dev.utils-BWAGUhdu-r--6Klkz.js → dev.utils-DC4cDFnB-0EoD0rmD.js} +2 -2
  50. package/dist/assets/{dev.utils-BWAGUhdu-r--6Klkz.js.map → dev.utils-DC4cDFnB-0EoD0rmD.js.map} +1 -1
  51. package/dist/assets/{devtools-Cx9nNtPJ-0ks6_V1l.js → devtools-DynTXFEP-Csq-E4Y4.js} +2 -2
  52. package/dist/assets/{devtools-Cx9nNtPJ-0ks6_V1l.js.map → devtools-DynTXFEP-Csq-E4Y4.js.map} +1 -1
  53. package/dist/assets/disabled-BiVzb-WY-DSLt8mjl.js +2 -0
  54. package/dist/assets/{disabled-BiVzb-WY-hfrYxosU.js.map → disabled-BiVzb-WY-DSLt8mjl.js.map} +1 -1
  55. package/dist/assets/fira-sans-v17-latin/fira-sans-v17-latin-500.woff2 +0 -0
  56. package/dist/assets/fira-sans-v17-latin/fira-sans-v17-latin-600.woff2 +0 -0
  57. package/dist/assets/fira-sans-v17-latin/fira-sans-v17-latin-700.woff2 +0 -0
  58. package/dist/assets/fira-sans-v17-latin/fira-sans-v17-latin-regular.woff2 +0 -0
  59. package/dist/assets/fira-sans-v17-latin/style.css +32 -0
  60. package/dist/assets/has-closer-DTWxZxLk-CfXWBLoY.js +2 -0
  61. package/dist/assets/{has-closer-DTWxZxLk-18N9zW9B.js.map → has-closer-DTWxZxLk-CfXWBLoY.js.map} +1 -1
  62. package/dist/assets/hide-label-WZ5WNz3h-CIP_xiSr.js +2 -0
  63. package/dist/assets/{hide-label-WZ5WNz3h-DtRq1P_O.js.map → hide-label-WZ5WNz3h-CIP_xiSr.js.map} +1 -1
  64. package/dist/assets/href-BM8XBoul-C6FKxd9a.js +2 -0
  65. package/dist/assets/{href-BM8XBoul-BAnWYz5W.js.map → href-BM8XBoul-C6FKxd9a.js.map} +1 -1
  66. package/dist/assets/i18n-0_cE4ov3-DH6ez0mK.js +2 -0
  67. package/dist/assets/{i18n-0_cE4ov3-B1FIT8dl.js.map → i18n-0_cE4ov3-DH6ez0mK.js.map} +1 -1
  68. package/dist/assets/{icons-C3vHAMd1-szbVLt4k.js → icons-C3vHAMd1-D5c1HAec.js} +2 -2
  69. package/dist/assets/{icons-C3vHAMd1-szbVLt4k.js.map → icons-C3vHAMd1-D5c1HAec.js.map} +1 -1
  70. package/dist/assets/image-source-t6wt0WTO-pfInyRMi.js +2 -0
  71. package/dist/assets/{image-source-t6wt0WTO-iWsqB_py.js.map → image-source-t6wt0WTO-pfInyRMi.js.map} +1 -1
  72. package/dist/assets/index-D3P_Gb4a.js +38101 -0
  73. package/dist/assets/{index-DCgNdH7R.js.map → index-D3P_Gb4a.js.map} +1 -1
  74. package/dist/assets/inline-6XaAuvMb-R01xsCHf.js +2 -0
  75. package/dist/assets/{inline-6XaAuvMb-RtZLlCAM.js.map → inline-6XaAuvMb-R01xsCHf.js.map} +1 -1
  76. package/dist/assets/{kol-abbr.entry-Buvxx9hF.js → kol-abbr.entry-BI_k5Hrn.js} +2 -2
  77. package/dist/assets/{kol-abbr.entry-Buvxx9hF.js.map → kol-abbr.entry-BI_k5Hrn.js.map} +1 -1
  78. package/dist/assets/{kol-accordion.entry-BLGPe3UQ.js → kol-accordion.entry-D2Gh8PHf.js} +2 -2
  79. package/dist/assets/{kol-accordion.entry-BLGPe3UQ.js.map → kol-accordion.entry-D2Gh8PHf.js.map} +1 -1
  80. package/dist/assets/{kol-alert-wc.entry-Dn5QgMPp.js → kol-alert-wc.entry-BinVox0I.js} +2 -2
  81. package/dist/assets/{kol-alert-wc.entry-Dn5QgMPp.js.map → kol-alert-wc.entry-BinVox0I.js.map} +1 -1
  82. package/dist/assets/{kol-alert.entry-6yztvO1W.js → kol-alert.entry-C41QpTfU.js} +2 -2
  83. package/dist/assets/{kol-alert.entry-6yztvO1W.js.map → kol-alert.entry-C41QpTfU.js.map} +1 -1
  84. package/dist/assets/{kol-avatar-wc.entry-DAJVtfci.js → kol-avatar-wc.entry-Bu6UAiB2.js} +2 -2
  85. package/dist/assets/{kol-avatar-wc.entry-DAJVtfci.js.map → kol-avatar-wc.entry-Bu6UAiB2.js.map} +1 -1
  86. package/dist/assets/{kol-avatar.entry-gyDgSEX9.js → kol-avatar.entry-Z21DNAq9.js} +2 -2
  87. package/dist/assets/{kol-avatar.entry-gyDgSEX9.js.map → kol-avatar.entry-Z21DNAq9.js.map} +1 -1
  88. package/dist/assets/{kol-badge.entry-Ct3yLI0r.js → kol-badge.entry-BKN7HKb0.js} +3 -3
  89. package/dist/assets/{kol-badge.entry-Ct3yLI0r.js.map → kol-badge.entry-BKN7HKb0.js.map} +1 -1
  90. package/dist/assets/{kol-breadcrumb.entry-kYbrDf-n.js → kol-breadcrumb.entry-C59BNg4e.js} +2 -2
  91. package/dist/assets/{kol-breadcrumb.entry-kYbrDf-n.js.map → kol-breadcrumb.entry-C59BNg4e.js.map} +1 -1
  92. package/dist/assets/{kol-button-link.entry-DpFUgpp3.js → kol-button-link.entry-BakE7Ayp.js} +3 -3
  93. package/dist/assets/{kol-button-link.entry-DpFUgpp3.js.map → kol-button-link.entry-BakE7Ayp.js.map} +1 -1
  94. package/dist/assets/kol-button-wc.entry-Cp6gRFIU.js +2 -0
  95. package/dist/assets/kol-button-wc.entry-Cp6gRFIU.js.map +1 -0
  96. package/dist/assets/{kol-button.entry-7DnjDNm7.js → kol-button.entry-Drr6B70S.js} +3 -3
  97. package/dist/assets/{kol-button.entry-7DnjDNm7.js.map → kol-button.entry-Drr6B70S.js.map} +1 -1
  98. package/dist/assets/{kol-card-wc.entry-dx2pN6OQ.js → kol-card-wc.entry-CKaY4AhH.js} +2 -2
  99. package/dist/assets/{kol-card-wc.entry-dx2pN6OQ.js.map → kol-card-wc.entry-CKaY4AhH.js.map} +1 -1
  100. package/dist/assets/{kol-card.entry-DpAyGyxG.js → kol-card.entry-CUPxu-K8.js} +2 -2
  101. package/dist/assets/{kol-card.entry-DpAyGyxG.js.map → kol-card.entry-CUPxu-K8.js.map} +1 -1
  102. package/dist/assets/{kol-combobox.entry-DRq3zcOd.js → kol-combobox.entry-BsiZJPTH.js} +3 -3
  103. package/dist/assets/{kol-combobox.entry-DRq3zcOd.js.map → kol-combobox.entry-BsiZJPTH.js.map} +1 -1
  104. package/dist/assets/{kol-details.entry-D04grVNC.js → kol-details.entry-ClhHrl_u.js} +2 -2
  105. package/dist/assets/{kol-details.entry-D04grVNC.js.map → kol-details.entry-ClhHrl_u.js.map} +1 -1
  106. package/dist/assets/{kol-dialog-wc.entry-WLSJ5Uxz.js → kol-dialog-wc.entry-CUdS9TmG.js} +2 -2
  107. package/dist/assets/{kol-dialog-wc.entry-WLSJ5Uxz.js.map → kol-dialog-wc.entry-CUdS9TmG.js.map} +1 -1
  108. package/dist/assets/{kol-dialog.entry-B9WvGqws.js → kol-dialog.entry-Dav2Rn1f.js} +2 -2
  109. package/dist/assets/{kol-dialog.entry-B9WvGqws.js.map → kol-dialog.entry-Dav2Rn1f.js.map} +1 -1
  110. package/dist/assets/{kol-drawer.entry-BQ4s2Fln.js → kol-drawer.entry-yaFcOaBc.js} +3 -3
  111. package/dist/assets/{kol-drawer.entry-BQ4s2Fln.js.map → kol-drawer.entry-yaFcOaBc.js.map} +1 -1
  112. package/dist/assets/{kol-form.entry-ZIF-EOYs.js → kol-form.entry-12VQvrYB.js} +2 -2
  113. package/dist/assets/{kol-form.entry-ZIF-EOYs.js.map → kol-form.entry-12VQvrYB.js.map} +1 -1
  114. package/dist/assets/{kol-heading.entry-B2EZZgN1.js → kol-heading.entry-CTikPcGd.js} +2 -2
  115. package/dist/assets/{kol-heading.entry-B2EZZgN1.js.map → kol-heading.entry-CTikPcGd.js.map} +1 -1
  116. package/dist/assets/{kol-icon.entry-cV4Z7n2u.js → kol-icon.entry-CNzt5hRQ.js} +4 -4
  117. package/dist/assets/{kol-icon.entry-cV4Z7n2u.js.map → kol-icon.entry-CNzt5hRQ.js.map} +1 -1
  118. package/dist/assets/{kol-image.entry-DmSEZN57.js → kol-image.entry-Dd3VS99J.js} +2 -2
  119. package/dist/assets/{kol-image.entry-DmSEZN57.js.map → kol-image.entry-Dd3VS99J.js.map} +1 -1
  120. package/dist/assets/{kol-input-checkbox.entry-DR6qLg92.js → kol-input-checkbox.entry-CN0DVAoD.js} +6 -12
  121. package/dist/assets/kol-input-checkbox.entry-CN0DVAoD.js.map +1 -0
  122. package/dist/assets/{kol-input-color.entry-DKHuyQSc.js → kol-input-color.entry-BvhP-EdK.js} +3 -3
  123. package/dist/assets/kol-input-color.entry-BvhP-EdK.js.map +1 -0
  124. package/dist/assets/{kol-input-date.entry-28_qZIrw.js → kol-input-date.entry-CdWeccJJ.js} +3 -3
  125. package/dist/assets/{kol-input-date.entry-28_qZIrw.js.map → kol-input-date.entry-CdWeccJJ.js.map} +1 -1
  126. package/dist/assets/{kol-input-email.entry-BA_zejrM.js → kol-input-email.entry-BC2qB_-K.js} +3 -3
  127. package/dist/assets/{kol-input-email.entry-BA_zejrM.js.map → kol-input-email.entry-BC2qB_-K.js.map} +1 -1
  128. package/dist/assets/{kol-input-file.entry-BO7FsbE7.js → kol-input-file.entry-CDdLQIZG.js} +3 -3
  129. package/dist/assets/{kol-input-file.entry-BO7FsbE7.js.map → kol-input-file.entry-CDdLQIZG.js.map} +1 -1
  130. package/dist/assets/{kol-input-number.entry-tmP-I0Cb.js → kol-input-number.entry-x7si2zQb.js} +3 -3
  131. package/dist/assets/{kol-input-number.entry-tmP-I0Cb.js.map → kol-input-number.entry-x7si2zQb.js.map} +1 -1
  132. package/dist/assets/{kol-input-password.entry-LjF5jMJi.js → kol-input-password.entry-CrUwv32j.js} +3 -3
  133. package/dist/assets/{kol-input-password.entry-LjF5jMJi.js.map → kol-input-password.entry-CrUwv32j.js.map} +1 -1
  134. package/dist/assets/{kol-input-radio.entry-BJUapmLX.js → kol-input-radio.entry-DQKdMkNl.js} +6 -12
  135. package/dist/assets/kol-input-radio.entry-DQKdMkNl.js.map +1 -0
  136. package/dist/assets/{kol-input-range.entry-Dao8RATA.js → kol-input-range.entry-DzK7Eb5f.js} +3 -3
  137. package/dist/assets/kol-input-range.entry-DzK7Eb5f.js.map +1 -0
  138. package/dist/assets/{kol-input-text.entry-eMU4Cnh0.js → kol-input-text.entry-BXokOXbl.js} +3 -3
  139. package/dist/assets/{kol-input-text.entry-eMU4Cnh0.js.map → kol-input-text.entry-BXokOXbl.js.map} +1 -1
  140. package/dist/assets/{kol-kolibri.entry-Gx2edjx_.js → kol-kolibri.entry-yc_Abz2v.js} +2 -2
  141. package/dist/assets/{kol-kolibri.entry-Gx2edjx_.js.map → kol-kolibri.entry-yc_Abz2v.js.map} +1 -1
  142. package/dist/assets/{kol-link-button.entry-DeENmEyr.js → kol-link-button.entry-BYku0diL.js} +2 -2
  143. package/dist/assets/{kol-link-button.entry-DeENmEyr.js.map → kol-link-button.entry-BYku0diL.js.map} +1 -1
  144. package/dist/assets/kol-link-wc.entry-btDn0pPM.js +2 -0
  145. package/dist/assets/kol-link-wc.entry-btDn0pPM.js.map +1 -0
  146. package/dist/assets/{kol-link.entry-CrR_rKjh.js → kol-link.entry-BpNb29Rd.js} +3 -3
  147. package/dist/assets/{kol-link.entry-CrR_rKjh.js.map → kol-link.entry-BpNb29Rd.js.map} +1 -1
  148. package/dist/assets/{kol-modal.entry-D-QSQykL.js → kol-modal.entry-C0r7qLSW.js} +2 -2
  149. package/dist/assets/{kol-modal.entry-D-QSQykL.js.map → kol-modal.entry-C0r7qLSW.js.map} +1 -1
  150. package/dist/assets/{kol-nav.entry-CSkW5-qr.js → kol-nav.entry-DRUU6hAO.js} +3 -3
  151. package/dist/assets/{kol-nav.entry-CSkW5-qr.js.map → kol-nav.entry-DRUU6hAO.js.map} +1 -1
  152. package/dist/assets/kol-pagination-wc.entry-kogXvNjA.js +2 -0
  153. package/dist/assets/kol-pagination-wc.entry-kogXvNjA.js.map +1 -0
  154. package/dist/assets/{kol-pagination.entry-mExC2VmI.js → kol-pagination.entry-CtuICCUs.js} +2 -2
  155. package/dist/assets/{kol-pagination.entry-mExC2VmI.js.map → kol-pagination.entry-CtuICCUs.js.map} +1 -1
  156. package/dist/assets/kol-popover-button-wc.entry-DR-JXG6N.js +2 -0
  157. package/dist/assets/{kol-popover-button-wc.entry-BPEDtJok.js.map → kol-popover-button-wc.entry-DR-JXG6N.js.map} +1 -1
  158. package/dist/assets/{kol-popover-button.entry-CWuQpzfh.js → kol-popover-button.entry-BFuWJ27m.js} +3 -3
  159. package/dist/assets/{kol-popover-button.entry-CWuQpzfh.js.map → kol-popover-button.entry-BFuWJ27m.js.map} +1 -1
  160. package/dist/assets/{kol-popover-wc.entry-bXILhVsO.js → kol-popover-wc.entry-CRC01D2I.js} +2 -2
  161. package/dist/assets/{kol-popover-wc.entry-bXILhVsO.js.map → kol-popover-wc.entry-CRC01D2I.js.map} +1 -1
  162. package/dist/assets/{kol-progress.entry-DV29FxQw.js → kol-progress.entry-CbfEcm_D.js} +2 -2
  163. package/dist/assets/{kol-progress.entry-DV29FxQw.js.map → kol-progress.entry-CbfEcm_D.js.map} +1 -1
  164. package/dist/assets/{kol-quote.entry-RJQv2JGa.js → kol-quote.entry-B39Je_A_.js} +2 -2
  165. package/dist/assets/{kol-quote.entry-RJQv2JGa.js.map → kol-quote.entry-B39Je_A_.js.map} +1 -1
  166. package/dist/assets/{kol-select-wc.entry-by8Mbpib.js → kol-select-wc.entry-DLlYy1KX.js} +2 -2
  167. package/dist/assets/kol-select-wc.entry-DLlYy1KX.js.map +1 -0
  168. package/dist/assets/{kol-select.entry-Di5lCsMZ.js → kol-select.entry-5gvjz80h.js} +3 -3
  169. package/dist/assets/{kol-select.entry-Di5lCsMZ.js.map → kol-select.entry-5gvjz80h.js.map} +1 -1
  170. package/dist/assets/{kol-single-select.entry-DSKfxULZ.js → kol-single-select.entry-DTX6oh1v.js} +3 -3
  171. package/dist/assets/kol-single-select.entry-DTX6oh1v.js.map +1 -0
  172. package/dist/assets/{kol-skip-nav.entry-c5Rrwpgf.js → kol-skip-nav.entry-DoecB063.js} +2 -2
  173. package/dist/assets/{kol-skip-nav.entry-c5Rrwpgf.js.map → kol-skip-nav.entry-DoecB063.js.map} +1 -1
  174. package/dist/assets/{kol-spin.entry-C3eejVGu.js → kol-spin.entry-D1tWIMKZ.js} +2 -2
  175. package/dist/assets/{kol-spin.entry-C3eejVGu.js.map → kol-spin.entry-D1tWIMKZ.js.map} +1 -1
  176. package/dist/assets/{kol-split-button.entry-0xllsbDl.js → kol-split-button.entry-CuvTIlm2.js} +3 -3
  177. package/dist/assets/{kol-split-button.entry-0xllsbDl.js.map → kol-split-button.entry-CuvTIlm2.js.map} +1 -1
  178. package/dist/assets/{kol-table-settings-wc.entry-MmKzDOn9.js → kol-table-settings-wc.entry-DmEbNAwP.js} +2 -2
  179. package/dist/assets/{kol-table-settings-wc.entry-MmKzDOn9.js.map → kol-table-settings-wc.entry-DmEbNAwP.js.map} +1 -1
  180. package/dist/assets/{kol-table-stateful.entry-B1w7oCHH.js → kol-table-stateful.entry-BbbDGBFd.js} +3 -3
  181. package/dist/assets/{kol-table-stateful.entry-B1w7oCHH.js.map → kol-table-stateful.entry-BbbDGBFd.js.map} +1 -1
  182. package/dist/assets/{kol-table-stateless-wc.entry-BYOA_T3-.js → kol-table-stateless-wc.entry-CHpOlPI2.js} +2 -2
  183. package/dist/assets/kol-table-stateless-wc.entry-CHpOlPI2.js.map +1 -0
  184. package/dist/assets/{kol-table-stateless.entry-CAgXJa5V.js → kol-table-stateless.entry-CGPq8_at.js} +2 -2
  185. package/dist/assets/{kol-table-stateless.entry-CAgXJa5V.js.map → kol-table-stateless.entry-CGPq8_at.js.map} +1 -1
  186. package/dist/assets/{kol-tabs.entry-0_8i0jxI.js → kol-tabs.entry-Bd6Yy35P.js} +2 -2
  187. package/dist/assets/{kol-tabs.entry-0_8i0jxI.js.map → kol-tabs.entry-Bd6Yy35P.js.map} +1 -1
  188. package/dist/assets/{kol-textarea.entry-BKPYu9O7.js → kol-textarea.entry-Bbk7LvIf.js} +3 -3
  189. package/dist/assets/{kol-textarea.entry-BKPYu9O7.js.map → kol-textarea.entry-Bbk7LvIf.js.map} +1 -1
  190. package/dist/assets/{kol-toast-container.entry-DCtP-KwF.js → kol-toast-container.entry-5Nyymj8R.js} +2 -2
  191. package/dist/assets/{kol-toast-container.entry-DCtP-KwF.js.map → kol-toast-container.entry-5Nyymj8R.js.map} +1 -1
  192. package/dist/assets/{kol-toolbar.entry-Bq4MQXOk.js → kol-toolbar.entry-DESGCa_T.js} +2 -2
  193. package/dist/assets/{kol-toolbar.entry-Bq4MQXOk.js.map → kol-toolbar.entry-DESGCa_T.js.map} +1 -1
  194. package/dist/assets/kol-tooltip-wc.entry-BVYOdCxj.js +2 -0
  195. package/dist/assets/kol-tooltip-wc.entry-BVYOdCxj.js.map +1 -0
  196. package/dist/assets/{kol-tree-item-wc.entry-7l1x7r4s.js → kol-tree-item-wc.entry-CJRyXAjn.js} +2 -2
  197. package/dist/assets/{kol-tree-item-wc.entry-7l1x7r4s.js.map → kol-tree-item-wc.entry-CJRyXAjn.js.map} +1 -1
  198. package/dist/assets/{kol-tree-item.entry-aMg_sFc4.js → kol-tree-item.entry-CPnbUUsc.js} +2 -2
  199. package/dist/assets/{kol-tree-item.entry-aMg_sFc4.js.map → kol-tree-item.entry-CPnbUUsc.js.map} +1 -1
  200. package/dist/assets/{kol-tree-wc.entry-D-ltufRn.js → kol-tree-wc.entry-DEL76eWy.js} +2 -2
  201. package/dist/assets/kol-tree-wc.entry-DEL76eWy.js.map +1 -0
  202. package/dist/assets/{kol-tree.entry-CkNiWSKE.js → kol-tree.entry-BJTeWUee.js} +2 -2
  203. package/dist/assets/{kol-tree.entry-CkNiWSKE.js.map → kol-tree.entry-BJTeWUee.js.map} +1 -1
  204. package/dist/assets/{kol-version.entry-CrbZfL0f.js → kol-version.entry-CzKu3XGd.js} +2 -2
  205. package/dist/assets/{kol-version.entry-CrbZfL0f.js.map → kol-version.entry-CzKu3XGd.js.map} +1 -1
  206. package/dist/assets/kolicons/kolicons.eot +0 -0
  207. package/dist/assets/kolicons/kolicons.ttf +0 -0
  208. package/dist/assets/kolicons/kolicons.woff +0 -0
  209. package/dist/assets/kolicons/kolicons.woff2 +0 -0
  210. package/dist/assets/kolicons/style.css +6 -6
  211. package/dist/assets/{label-BqL4x8lJ-CiffcIxq.js → label-BqL4x8lJ-BipNcWT0.js} +2 -2
  212. package/dist/assets/{label-BqL4x8lJ-CiffcIxq.js.map → label-BqL4x8lJ-BipNcWT0.js.map} +1 -1
  213. package/dist/assets/{markdown-OkxVnUil-BdWlaODw.js → markdown-OkxVnUil-FGwK9bFC.js} +2 -2
  214. package/dist/assets/{markdown-OkxVnUil-BdWlaODw.js.map → markdown-OkxVnUil-FGwK9bFC.js.map} +1 -1
  215. package/dist/assets/material-symbols-subset/fonts/material-symbols-subset.svg +55 -0
  216. package/dist/assets/material-symbols-subset/fonts/material-symbols-subset.ttf +0 -0
  217. package/dist/assets/material-symbols-subset/fonts/material-symbols-subset.woff +0 -0
  218. package/dist/assets/material-symbols-subset/selection.json +1 -0
  219. package/dist/assets/material-symbols-subset/style.css +161 -0
  220. package/dist/assets/material-symbols-subset/style.scss +254 -0
  221. package/dist/assets/material-symbols-subset/variables.scss +49 -0
  222. package/dist/assets/{max-length-behavior-BhW8_k_T-B_sG6j6U.js → max-length-behavior-BhW8_k_T-CxeYn7nV.js} +2 -2
  223. package/dist/assets/{max-length-behavior-BhW8_k_T-B_sG6j6U.js.map → max-length-behavior-BhW8_k_T-CxeYn7nV.js.map} +1 -1
  224. package/dist/assets/multiple-CN7ZfDba-C288fTFz.js +2 -0
  225. package/dist/assets/{multiple-CN7ZfDba-CEIhGVgO.js.map → multiple-CN7ZfDba-C288fTFz.js.map} +1 -1
  226. package/dist/assets/open-BS0uItWa-Dxb14w1d.js +2 -0
  227. package/dist/assets/{open-BS0uItWa-CZAswnjA.js.map → open-BS0uItWa-Dxb14w1d.js.map} +1 -1
  228. package/dist/assets/{orientation-DR4gvMev-Bi3K-9Nh.js → orientation-DR4gvMev-CfimEh6N.js} +2 -2
  229. package/dist/assets/{orientation-DR4gvMev-Bi3K-9Nh.js.map → orientation-DR4gvMev-CfimEh6N.js.map} +1 -1
  230. package/dist/assets/placeholder-DhhN6Rra-C18H0aSE.js +2 -0
  231. package/dist/assets/{placeholder-DhhN6Rra-H4GL-w86.js.map → placeholder-DhhN6Rra-C18H0aSE.js.map} +1 -1
  232. package/dist/assets/read-only-joz0PLP_-CdTc19uy.js +2 -0
  233. package/dist/assets/{read-only-joz0PLP_-CcuMOvhH.js.map → read-only-joz0PLP_-CdTc19uy.js.map} +1 -1
  234. package/dist/assets/required-DJbvNLly-BkmlPj-t.js +2 -0
  235. package/dist/assets/{required-DJbvNLly-DhJ1XMFC.js.map → required-DJbvNLly-BkmlPj-t.js.map} +1 -1
  236. package/dist/assets/rows-BAjzKE6S-BPUxtI9h.js +2 -0
  237. package/dist/assets/{rows-BAjzKE6S-C6UdqU-0.js.map → rows-BAjzKE6S-BPUxtI9h.js.map} +1 -1
  238. package/dist/assets/show-Db770b87-CIfO78H5.js +2 -0
  239. package/dist/assets/{show-Db770b87-BkUx8f8C.js.map → show-Db770b87-CIfO78H5.js.map} +1 -1
  240. package/dist/assets/spell-check-S60TjBC_-zKIV3hGJ.js +2 -0
  241. package/dist/assets/{spell-check-S60TjBC_-CNFTcspP.js.map → spell-check-S60TjBC_-zKIV3hGJ.js.map} +1 -1
  242. package/dist/assets/{suggestions-CcNcD0dX-BleLEbjK.js → suggestions-CcNcD0dX-BIxTDyDA.js} +2 -2
  243. package/dist/assets/{suggestions-CcNcD0dX-BleLEbjK.js.map → suggestions-CcNcD0dX-BIxTDyDA.js.map} +1 -1
  244. package/dist/assets/{table-selection-DjfWF12k-QoQpnBJS.js → table-selection-DjfWF12k-BfTG6SjZ.js} +2 -2
  245. package/dist/assets/{table-selection-DjfWF12k-QoQpnBJS.js.map → table-selection-DjfWF12k-BfTG6SjZ.js.map} +1 -1
  246. package/dist/assets/test-component.entry-B1fV1QSq.js +2 -0
  247. package/dist/assets/{test-component.entry-GT_ejJS3.js.map → test-component.entry-B1fV1QSq.js.map} +1 -1
  248. package/dist/assets/tooltip-align-1XGYSZmF-CFPPW4b1.js +2 -0
  249. package/dist/assets/{tooltip-align-1XGYSZmF-ChgzhAE9.js.map → tooltip-align-1XGYSZmF-CFPPW4b1.js.map} +1 -1
  250. package/dist/assets/{unique-nav-labels-BzOU2gyW-BVqJy2Rs.js → unique-nav-labels-BzOU2gyW-Dr0_JkmR.js} +2 -2
  251. package/dist/assets/{unique-nav-labels-BzOU2gyW-BVqJy2Rs.js.map → unique-nav-labels-BzOU2gyW-Dr0_JkmR.js.map} +1 -1
  252. package/dist/assets/{validation-BIgftzAT-BnVqZMuX.js → validation-BIgftzAT-BpUQj-uX.js} +2 -2
  253. package/dist/assets/{validation-BIgftzAT-BnVqZMuX.js.map → validation-BIgftzAT-BpUQj-uX.js.map} +1 -1
  254. package/dist/assets/validation-Cmv8Nj43-CfZl5H73.js +2 -0
  255. package/dist/assets/{validation-Cmv8Nj43-BkhWqmbj.js.map → validation-Cmv8Nj43-CfZl5H73.js.map} +1 -1
  256. package/dist/assets/variant-class-name-JuamA3G3-FJkvRX0r.js +2 -0
  257. package/dist/assets/variant-class-name-JuamA3G3-FJkvRX0r.js.map +1 -0
  258. package/dist/index.html +3 -1
  259. package/index.html +2 -0
  260. package/package.json +22 -21
  261. package/public/assets/fira-sans-v17-latin/fira-sans-v17-latin-500.woff2 +0 -0
  262. package/public/assets/fira-sans-v17-latin/fira-sans-v17-latin-600.woff2 +0 -0
  263. package/public/assets/fira-sans-v17-latin/fira-sans-v17-latin-700.woff2 +0 -0
  264. package/public/assets/fira-sans-v17-latin/fira-sans-v17-latin-regular.woff2 +0 -0
  265. package/public/assets/fira-sans-v17-latin/style.css +32 -0
  266. package/public/assets/kolicons/kolicons.eot +0 -0
  267. package/public/assets/kolicons/kolicons.ttf +0 -0
  268. package/public/assets/kolicons/kolicons.woff +0 -0
  269. package/public/assets/kolicons/kolicons.woff2 +0 -0
  270. package/public/assets/kolicons/style.css +6 -6
  271. package/public/assets/material-symbols-subset/fonts/material-symbols-subset.svg +55 -0
  272. package/public/assets/material-symbols-subset/fonts/material-symbols-subset.ttf +0 -0
  273. package/public/assets/material-symbols-subset/fonts/material-symbols-subset.woff +0 -0
  274. package/public/assets/material-symbols-subset/selection.json +1 -0
  275. package/public/assets/material-symbols-subset/style.css +161 -0
  276. package/public/assets/material-symbols-subset/style.scss +254 -0
  277. package/public/assets/material-symbols-subset/variables.scss +49 -0
  278. package/src/App.tsx +1 -1
  279. package/src/components/button-link/basic.tsx +3 -0
  280. package/src/components/handout/basic.tsx +6 -6
  281. package/src/components/input-text/pattern.tsx +30 -0
  282. package/src/components/input-text/routes.ts +2 -0
  283. package/src/components/input-text/text-formatter.tsx +240 -139
  284. package/src/components/link/basic.tsx +1 -0
  285. package/src/components/table/interactive-child-elements.tsx +6 -6
  286. package/src/react.main.tsx +2 -2
  287. package/src/scenarios/react-hook-form/disabled.tsx +52 -0
  288. package/src/scenarios/routes.ts +2 -0
  289. package/src/shares/theme.ts +4 -0
  290. package/dist/abgrenzung.jpg +0 -0
  291. package/dist/assets/CustomSuggestionsOptionsGroup-B8V2Ol1V-BqiH4cDM.js +0 -2
  292. package/dist/assets/CustomSuggestionsOptionsGroup-B8V2Ol1V-BqiH4cDM.js.map +0 -1
  293. package/dist/assets/FormFieldStateWrapper-gFvWM0k_-DTufyA3E.js +0 -2
  294. package/dist/assets/FormFieldStateWrapper-gFvWM0k_-DTufyA3E.js.map +0 -1
  295. package/dist/assets/button-variant-0lk5Vbgn-DkGkvl2v.js +0 -2
  296. package/dist/assets/button-variant-0lk5Vbgn-DkGkvl2v.js.map +0 -1
  297. package/dist/assets/clsx-D6cJXTZC-DmzAKo5K.js +0 -2
  298. package/dist/assets/clsx-D6cJXTZC-DmzAKo5K.js.map +0 -1
  299. package/dist/assets/controller-BCXVCtVk-CtNYPV_6.js.map +0 -1
  300. package/dist/assets/custom-class-D9xy9Wzd-BQxgTvLO.js +0 -2
  301. package/dist/assets/disabled-BiVzb-WY-hfrYxosU.js +0 -2
  302. package/dist/assets/has-closer-DTWxZxLk-18N9zW9B.js +0 -2
  303. package/dist/assets/hide-label-WZ5WNz3h-DtRq1P_O.js +0 -2
  304. package/dist/assets/href-BM8XBoul-BAnWYz5W.js +0 -2
  305. package/dist/assets/i18n-0_cE4ov3-B1FIT8dl.js +0 -2
  306. package/dist/assets/icofont/demo.html +0 -18939
  307. package/dist/assets/icofont/fonts/icofont.eot +0 -0
  308. package/dist/assets/icofont/fonts/icofont.svg +0 -2105
  309. package/dist/assets/icofont/fonts/icofont.ttf +0 -0
  310. package/dist/assets/icofont/fonts/icofont.woff +0 -0
  311. package/dist/assets/icofont/fonts/icofont.woff2 +0 -0
  312. package/dist/assets/icofont/icofont.css +0 -10757
  313. package/dist/assets/icofont/icofont.min.css +0 -7
  314. package/dist/assets/image-source-t6wt0WTO-iWsqB_py.js +0 -2
  315. package/dist/assets/index-DCgNdH7R.js +0 -26430
  316. package/dist/assets/inline-6XaAuvMb-RtZLlCAM.js +0 -2
  317. package/dist/assets/kol-button-wc.entry-BV0VGvnv.js +0 -2
  318. package/dist/assets/kol-button-wc.entry-BV0VGvnv.js.map +0 -1
  319. package/dist/assets/kol-input-checkbox.entry-DR6qLg92.js.map +0 -1
  320. package/dist/assets/kol-input-color.entry-DKHuyQSc.js.map +0 -1
  321. package/dist/assets/kol-input-radio.entry-BJUapmLX.js.map +0 -1
  322. package/dist/assets/kol-input-range.entry-Dao8RATA.js.map +0 -1
  323. package/dist/assets/kol-link-wc.entry-CA9W8-ma.js +0 -2
  324. package/dist/assets/kol-link-wc.entry-CA9W8-ma.js.map +0 -1
  325. package/dist/assets/kol-pagination-wc.entry-dWAlKIwQ.js +0 -2
  326. package/dist/assets/kol-pagination-wc.entry-dWAlKIwQ.js.map +0 -1
  327. package/dist/assets/kol-popover-button-wc.entry-BPEDtJok.js +0 -2
  328. package/dist/assets/kol-select-wc.entry-by8Mbpib.js.map +0 -1
  329. package/dist/assets/kol-single-select.entry-DSKfxULZ.js.map +0 -1
  330. package/dist/assets/kol-table-stateless-wc.entry-BYOA_T3-.js.map +0 -1
  331. package/dist/assets/kol-tooltip-wc.entry-C5wZME1j.js +0 -2
  332. package/dist/assets/kol-tooltip-wc.entry-C5wZME1j.js.map +0 -1
  333. package/dist/assets/kol-tree-wc.entry-D-ltufRn.js.map +0 -1
  334. package/dist/assets/kreon/Kreon-VariableFont_wght.ttf +0 -0
  335. package/dist/assets/kreon/OFL.txt +0 -93
  336. package/dist/assets/kreon/README.txt +0 -67
  337. package/dist/assets/kreon/static/Kreon-Bold.ttf +0 -0
  338. package/dist/assets/kreon/static/Kreon-Light.ttf +0 -0
  339. package/dist/assets/kreon/static/Kreon-Medium.ttf +0 -0
  340. package/dist/assets/kreon/static/Kreon-Regular.ttf +0 -0
  341. package/dist/assets/kreon/static/Kreon-SemiBold.ttf +0 -0
  342. package/dist/assets/kreon/style.css +0 -41
  343. package/dist/assets/material-icons/LICENSE +0 -202
  344. package/dist/assets/material-icons/README.md +0 -134
  345. package/dist/assets/material-icons/_data/versions.json +0 -2124
  346. package/dist/assets/material-icons/css/_codepoints.scss +0 -2279
  347. package/dist/assets/material-icons/css/_mixins.scss +0 -13
  348. package/dist/assets/material-icons/css/_variables.scss +0 -6
  349. package/dist/assets/material-icons/css/material-icons.css +0 -9208
  350. package/dist/assets/material-icons/css/material-icons.min.css +0 -1
  351. package/dist/assets/material-icons/css/material-icons.scss +0 -33
  352. package/dist/assets/material-icons/iconfont/_mixins.scss +0 -55
  353. package/dist/assets/material-icons/iconfont/_variables.scss +0 -3
  354. package/dist/assets/material-icons/iconfont/filled.css +0 -24
  355. package/dist/assets/material-icons/iconfont/filled.scss +0 -4
  356. package/dist/assets/material-icons/iconfont/material-icons-outlined.woff +0 -0
  357. package/dist/assets/material-icons/iconfont/material-icons-outlined.woff2 +0 -0
  358. package/dist/assets/material-icons/iconfont/material-icons-round.woff +0 -0
  359. package/dist/assets/material-icons/iconfont/material-icons-round.woff2 +0 -0
  360. package/dist/assets/material-icons/iconfont/material-icons-sharp.woff +0 -0
  361. package/dist/assets/material-icons/iconfont/material-icons-sharp.woff2 +0 -0
  362. package/dist/assets/material-icons/iconfont/material-icons-two-tone.woff +0 -0
  363. package/dist/assets/material-icons/iconfont/material-icons-two-tone.woff2 +0 -0
  364. package/dist/assets/material-icons/iconfont/material-icons.css +0 -124
  365. package/dist/assets/material-icons/iconfont/material-icons.scss +0 -5
  366. package/dist/assets/material-icons/iconfont/material-icons.woff +0 -0
  367. package/dist/assets/material-icons/iconfont/material-icons.woff2 +0 -0
  368. package/dist/assets/material-icons/iconfont/outlined.css +0 -24
  369. package/dist/assets/material-icons/iconfont/outlined.scss +0 -4
  370. package/dist/assets/material-icons/iconfont/round.css +0 -24
  371. package/dist/assets/material-icons/iconfont/round.scss +0 -4
  372. package/dist/assets/material-icons/iconfont/sharp.css +0 -24
  373. package/dist/assets/material-icons/iconfont/sharp.scss +0 -4
  374. package/dist/assets/material-icons/iconfont/two-tone.css +0 -24
  375. package/dist/assets/material-icons/iconfont/two-tone.scss +0 -4
  376. package/dist/assets/material-icons/index.d.ts +0 -2128
  377. package/dist/assets/material-icons/package.json +0 -52
  378. package/dist/assets/material-symbols/LICENSE +0 -202
  379. package/dist/assets/material-symbols/README.md +0 -121
  380. package/dist/assets/material-symbols/_core.scss +0 -46
  381. package/dist/assets/material-symbols/index.css +0 -74
  382. package/dist/assets/material-symbols/index.d.ts +0 -2809
  383. package/dist/assets/material-symbols/index.scss +0 -3
  384. package/dist/assets/material-symbols/material-symbols-outlined.woff2 +0 -0
  385. package/dist/assets/material-symbols/material-symbols-rounded.woff2 +0 -0
  386. package/dist/assets/material-symbols/material-symbols-sharp.woff2 +0 -0
  387. package/dist/assets/material-symbols/outlined.css +0 -24
  388. package/dist/assets/material-symbols/outlined.scss +0 -3
  389. package/dist/assets/material-symbols/package.json +0 -41
  390. package/dist/assets/material-symbols/rounded.css +0 -24
  391. package/dist/assets/material-symbols/rounded.scss +0 -3
  392. package/dist/assets/material-symbols/sharp.css +0 -24
  393. package/dist/assets/material-symbols/sharp.scss +0 -3
  394. package/dist/assets/multiple-CN7ZfDba-CEIhGVgO.js +0 -2
  395. package/dist/assets/noto-sans/fonts/NotoSans-Black.ttf +0 -0
  396. package/dist/assets/noto-sans/fonts/NotoSans-BlackItalic.ttf +0 -0
  397. package/dist/assets/noto-sans/fonts/NotoSans-Bold.ttf +0 -0
  398. package/dist/assets/noto-sans/fonts/NotoSans-BoldItalic.ttf +0 -0
  399. package/dist/assets/noto-sans/fonts/NotoSans-ExtraBold.ttf +0 -0
  400. package/dist/assets/noto-sans/fonts/NotoSans-ExtraBoldItalic.ttf +0 -0
  401. package/dist/assets/noto-sans/fonts/NotoSans-ExtraLight.ttf +0 -0
  402. package/dist/assets/noto-sans/fonts/NotoSans-ExtraLightItalic.ttf +0 -0
  403. package/dist/assets/noto-sans/fonts/NotoSans-Italic.ttf +0 -0
  404. package/dist/assets/noto-sans/fonts/NotoSans-Light.ttf +0 -0
  405. package/dist/assets/noto-sans/fonts/NotoSans-LightItalic.ttf +0 -0
  406. package/dist/assets/noto-sans/fonts/NotoSans-Medium.ttf +0 -0
  407. package/dist/assets/noto-sans/fonts/NotoSans-MediumItalic.ttf +0 -0
  408. package/dist/assets/noto-sans/fonts/NotoSans-Regular.ttf +0 -0
  409. package/dist/assets/noto-sans/fonts/NotoSans-SemiBold.ttf +0 -0
  410. package/dist/assets/noto-sans/fonts/NotoSans-SemiBoldItalic.ttf +0 -0
  411. package/dist/assets/noto-sans/fonts/NotoSans-Thin.ttf +0 -0
  412. package/dist/assets/noto-sans/fonts/NotoSans-ThinItalic.ttf +0 -0
  413. package/dist/assets/noto-sans/fonts/OFL.txt +0 -93
  414. package/dist/assets/noto-sans/noto-sans.css +0 -11
  415. package/dist/assets/open-BS0uItWa-CZAswnjA.js +0 -2
  416. package/dist/assets/placeholder-DhhN6Rra-H4GL-w86.js +0 -2
  417. package/dist/assets/read-only-joz0PLP_-CcuMOvhH.js +0 -2
  418. package/dist/assets/required-DJbvNLly-DhJ1XMFC.js +0 -2
  419. package/dist/assets/roboto/LICENSE.txt +0 -202
  420. package/dist/assets/roboto/Roboto-Black.ttf +0 -0
  421. package/dist/assets/roboto/Roboto-BlackItalic.ttf +0 -0
  422. package/dist/assets/roboto/Roboto-Bold.ttf +0 -0
  423. package/dist/assets/roboto/Roboto-BoldItalic.ttf +0 -0
  424. package/dist/assets/roboto/Roboto-Italic.ttf +0 -0
  425. package/dist/assets/roboto/Roboto-Light.ttf +0 -0
  426. package/dist/assets/roboto/Roboto-LightItalic.ttf +0 -0
  427. package/dist/assets/roboto/Roboto-Medium.ttf +0 -0
  428. package/dist/assets/roboto/Roboto-MediumItalic.ttf +0 -0
  429. package/dist/assets/roboto/Roboto-Regular.ttf +0 -0
  430. package/dist/assets/roboto/Roboto-Thin.ttf +0 -0
  431. package/dist/assets/roboto/Roboto-ThinItalic.ttf +0 -0
  432. package/dist/assets/roboto/roboto.css +0 -27
  433. package/dist/assets/rows-BAjzKE6S-C6UdqU-0.js +0 -2
  434. package/dist/assets/show-Db770b87-BkUx8f8C.js +0 -2
  435. package/dist/assets/spell-check-S60TjBC_-CNFTcspP.js +0 -2
  436. package/dist/assets/tabler-icons/fonts/tabler-icons.eot +0 -0
  437. package/dist/assets/tabler-icons/fonts/tabler-icons.ttf +0 -0
  438. package/dist/assets/tabler-icons/fonts/tabler-icons.woff +0 -0
  439. package/dist/assets/tabler-icons/fonts/tabler-icons.woff2 +0 -0
  440. package/dist/assets/tabler-icons/tabler-icons.css +0 -16056
  441. package/dist/assets/tabler-icons/tabler-icons.html +0 -36226
  442. package/dist/assets/tabler-icons/tabler-icons.min.css +0 -4
  443. package/dist/assets/tabler-icons/tabler-icons.png +0 -0
  444. package/dist/assets/tabler-icons/tabler-icons.scss +0 -8058
  445. package/dist/assets/test-component.entry-GT_ejJS3.js +0 -2
  446. package/dist/assets/tooltip-align-1XGYSZmF-ChgzhAE9.js +0 -2
  447. package/dist/assets/validation-Cmv8Nj43-BkhWqmbj.js +0 -2
  448. package/public/abgrenzung.jpg +0 -0
  449. package/public/assets/icofont/demo.html +0 -18939
  450. package/public/assets/icofont/fonts/icofont.eot +0 -0
  451. package/public/assets/icofont/fonts/icofont.svg +0 -2105
  452. package/public/assets/icofont/fonts/icofont.ttf +0 -0
  453. package/public/assets/icofont/fonts/icofont.woff +0 -0
  454. package/public/assets/icofont/fonts/icofont.woff2 +0 -0
  455. package/public/assets/icofont/icofont.css +0 -10757
  456. package/public/assets/icofont/icofont.min.css +0 -7
  457. package/public/assets/kreon/Kreon-VariableFont_wght.ttf +0 -0
  458. package/public/assets/kreon/OFL.txt +0 -93
  459. package/public/assets/kreon/README.txt +0 -67
  460. package/public/assets/kreon/static/Kreon-Bold.ttf +0 -0
  461. package/public/assets/kreon/static/Kreon-Light.ttf +0 -0
  462. package/public/assets/kreon/static/Kreon-Medium.ttf +0 -0
  463. package/public/assets/kreon/static/Kreon-Regular.ttf +0 -0
  464. package/public/assets/kreon/static/Kreon-SemiBold.ttf +0 -0
  465. package/public/assets/kreon/style.css +0 -41
  466. package/public/assets/material-icons/LICENSE +0 -202
  467. package/public/assets/material-icons/README.md +0 -134
  468. package/public/assets/material-icons/_data/versions.json +0 -2124
  469. package/public/assets/material-icons/css/_codepoints.scss +0 -2279
  470. package/public/assets/material-icons/css/_mixins.scss +0 -13
  471. package/public/assets/material-icons/css/_variables.scss +0 -6
  472. package/public/assets/material-icons/css/material-icons.css +0 -9208
  473. package/public/assets/material-icons/css/material-icons.min.css +0 -1
  474. package/public/assets/material-icons/css/material-icons.scss +0 -33
  475. package/public/assets/material-icons/iconfont/_mixins.scss +0 -55
  476. package/public/assets/material-icons/iconfont/_variables.scss +0 -3
  477. package/public/assets/material-icons/iconfont/filled.css +0 -24
  478. package/public/assets/material-icons/iconfont/filled.scss +0 -4
  479. package/public/assets/material-icons/iconfont/material-icons-outlined.woff +0 -0
  480. package/public/assets/material-icons/iconfont/material-icons-outlined.woff2 +0 -0
  481. package/public/assets/material-icons/iconfont/material-icons-round.woff +0 -0
  482. package/public/assets/material-icons/iconfont/material-icons-round.woff2 +0 -0
  483. package/public/assets/material-icons/iconfont/material-icons-sharp.woff +0 -0
  484. package/public/assets/material-icons/iconfont/material-icons-sharp.woff2 +0 -0
  485. package/public/assets/material-icons/iconfont/material-icons-two-tone.woff +0 -0
  486. package/public/assets/material-icons/iconfont/material-icons-two-tone.woff2 +0 -0
  487. package/public/assets/material-icons/iconfont/material-icons.css +0 -124
  488. package/public/assets/material-icons/iconfont/material-icons.scss +0 -5
  489. package/public/assets/material-icons/iconfont/material-icons.woff +0 -0
  490. package/public/assets/material-icons/iconfont/material-icons.woff2 +0 -0
  491. package/public/assets/material-icons/iconfont/outlined.css +0 -24
  492. package/public/assets/material-icons/iconfont/outlined.scss +0 -4
  493. package/public/assets/material-icons/iconfont/round.css +0 -24
  494. package/public/assets/material-icons/iconfont/round.scss +0 -4
  495. package/public/assets/material-icons/iconfont/sharp.css +0 -24
  496. package/public/assets/material-icons/iconfont/sharp.scss +0 -4
  497. package/public/assets/material-icons/iconfont/two-tone.css +0 -24
  498. package/public/assets/material-icons/iconfont/two-tone.scss +0 -4
  499. package/public/assets/material-icons/index.d.ts +0 -2128
  500. package/public/assets/material-icons/package.json +0 -52
  501. package/public/assets/material-symbols/LICENSE +0 -202
  502. package/public/assets/material-symbols/README.md +0 -121
  503. package/public/assets/material-symbols/_core.scss +0 -46
  504. package/public/assets/material-symbols/index.css +0 -74
  505. package/public/assets/material-symbols/index.d.ts +0 -2809
  506. package/public/assets/material-symbols/index.scss +0 -3
  507. package/public/assets/material-symbols/material-symbols-outlined.woff2 +0 -0
  508. package/public/assets/material-symbols/material-symbols-rounded.woff2 +0 -0
  509. package/public/assets/material-symbols/material-symbols-sharp.woff2 +0 -0
  510. package/public/assets/material-symbols/outlined.css +0 -24
  511. package/public/assets/material-symbols/outlined.scss +0 -3
  512. package/public/assets/material-symbols/package.json +0 -41
  513. package/public/assets/material-symbols/rounded.css +0 -24
  514. package/public/assets/material-symbols/rounded.scss +0 -3
  515. package/public/assets/material-symbols/sharp.css +0 -24
  516. package/public/assets/material-symbols/sharp.scss +0 -3
  517. package/public/assets/noto-sans/fonts/NotoSans-Black.ttf +0 -0
  518. package/public/assets/noto-sans/fonts/NotoSans-BlackItalic.ttf +0 -0
  519. package/public/assets/noto-sans/fonts/NotoSans-Bold.ttf +0 -0
  520. package/public/assets/noto-sans/fonts/NotoSans-BoldItalic.ttf +0 -0
  521. package/public/assets/noto-sans/fonts/NotoSans-ExtraBold.ttf +0 -0
  522. package/public/assets/noto-sans/fonts/NotoSans-ExtraBoldItalic.ttf +0 -0
  523. package/public/assets/noto-sans/fonts/NotoSans-ExtraLight.ttf +0 -0
  524. package/public/assets/noto-sans/fonts/NotoSans-ExtraLightItalic.ttf +0 -0
  525. package/public/assets/noto-sans/fonts/NotoSans-Italic.ttf +0 -0
  526. package/public/assets/noto-sans/fonts/NotoSans-Light.ttf +0 -0
  527. package/public/assets/noto-sans/fonts/NotoSans-LightItalic.ttf +0 -0
  528. package/public/assets/noto-sans/fonts/NotoSans-Medium.ttf +0 -0
  529. package/public/assets/noto-sans/fonts/NotoSans-MediumItalic.ttf +0 -0
  530. package/public/assets/noto-sans/fonts/NotoSans-Regular.ttf +0 -0
  531. package/public/assets/noto-sans/fonts/NotoSans-SemiBold.ttf +0 -0
  532. package/public/assets/noto-sans/fonts/NotoSans-SemiBoldItalic.ttf +0 -0
  533. package/public/assets/noto-sans/fonts/NotoSans-Thin.ttf +0 -0
  534. package/public/assets/noto-sans/fonts/NotoSans-ThinItalic.ttf +0 -0
  535. package/public/assets/noto-sans/fonts/OFL.txt +0 -93
  536. package/public/assets/noto-sans/noto-sans.css +0 -11
  537. package/public/assets/roboto/LICENSE.txt +0 -202
  538. package/public/assets/roboto/Roboto-Black.ttf +0 -0
  539. package/public/assets/roboto/Roboto-BlackItalic.ttf +0 -0
  540. package/public/assets/roboto/Roboto-Bold.ttf +0 -0
  541. package/public/assets/roboto/Roboto-BoldItalic.ttf +0 -0
  542. package/public/assets/roboto/Roboto-Italic.ttf +0 -0
  543. package/public/assets/roboto/Roboto-Light.ttf +0 -0
  544. package/public/assets/roboto/Roboto-LightItalic.ttf +0 -0
  545. package/public/assets/roboto/Roboto-Medium.ttf +0 -0
  546. package/public/assets/roboto/Roboto-MediumItalic.ttf +0 -0
  547. package/public/assets/roboto/Roboto-Regular.ttf +0 -0
  548. package/public/assets/roboto/Roboto-Thin.ttf +0 -0
  549. package/public/assets/roboto/Roboto-ThinItalic.ttf +0 -0
  550. package/public/assets/roboto/roboto.css +0 -27
  551. package/public/assets/tabler-icons/fonts/tabler-icons.eot +0 -0
  552. package/public/assets/tabler-icons/fonts/tabler-icons.ttf +0 -0
  553. package/public/assets/tabler-icons/fonts/tabler-icons.woff +0 -0
  554. package/public/assets/tabler-icons/fonts/tabler-icons.woff2 +0 -0
  555. package/public/assets/tabler-icons/tabler-icons.css +0 -16056
  556. package/public/assets/tabler-icons/tabler-icons.html +0 -36226
  557. package/public/assets/tabler-icons/tabler-icons.min.css +0 -4
  558. package/public/assets/tabler-icons/tabler-icons.png +0 -0
  559. package/public/assets/tabler-icons/tabler-icons.scss +0 -8058
@@ -0,0 +1,49 @@
1
+ $icomoon-font-family: "material-symbols-subset" !default;
2
+ $icomoon-font-path: "fonts" !default;
3
+
4
+ $icon-add: "\e926";
5
+ $icon-arrow-back: "\e922";
6
+ $icon-arrow-down: "\e925";
7
+ $icon-arrow-forward: "\e923";
8
+ $icon-arrow-up: "\e924";
9
+ $icon-autorenew: "\e921";
10
+ $icon-brightness-medium: "\e902";
11
+ $icon-calendar-today: "\e920";
12
+ $icon-check: "\e91f";
13
+ $icon-checklist: "\e91e";
14
+ $icon-chevron-left: "\e91d";
15
+ $icon-chevron-right: "\e91c";
16
+ $icon-close: "\e91b";
17
+ $icon-content-copy: "\e91a";
18
+ $icon-danger: "\e919";
19
+ $icon-dark-mode: "\e900";
20
+ $icon-delete: "\e918";
21
+ $icon-download: "\e917";
22
+ $icon-draft: "\e916";
23
+ $icon-drive-folder-upload: "\e915";
24
+ $icon-easy-language: "\e914";
25
+ $icon-edit: "\e913";
26
+ $icon-help: "\e911";
27
+ $icon-home: "\e912";
28
+ $icon-info: "\e910";
29
+ $icon-keyboard-double-arrow-left: "\e90f";
30
+ $icon-keyboard-double-arrow-right: "\e90e";
31
+ $icon-light-mode: "\e901";
32
+ $icon-logout: "\e90d";
33
+ $icon-mail: "\e90c";
34
+ $icon-more-vert: "\e90b";
35
+ $icon-open-in-new: "\e90a";
36
+ $icon-palette: "\e92b";
37
+ $icon-question-mark: "\e909";
38
+ $icon-remove: "\e92c";
39
+ $icon-save: "\e92d";
40
+ $icon-search: "\e908";
41
+ $icon-settings: "\e92e";
42
+ $icon-sign-language: "\e907";
43
+ $icon-success: "\e906";
44
+ $icon-unfold-less: "\e92f";
45
+ $icon-view-timeline: "\e930";
46
+ $icon-visibility-off: "\e904";
47
+ $icon-visibility: "\e905";
48
+ $icon-warning: "\e903";
49
+
package/src/App.tsx CHANGED
@@ -34,7 +34,7 @@ export const App: FC<Props> = ({ customThemes }) => {
34
34
  setRegisteredThemes(allThemes);
35
35
  return allThemes;
36
36
  }, [customThemes]);
37
- const theme: string = searchParams.get('theme') ?? themes[1].key;
37
+ const theme: string = searchParams.get('theme') ?? getTheme();
38
38
 
39
39
  const getRouteList = (routes: MyRoutes, offset = '/'): string[] => {
40
40
  let list: string[] = [];
@@ -51,6 +51,9 @@ export const ButtonLinkBasic: FC = () => {
51
51
  <p>
52
52
  <KolButtonLink _label="Disabled ButtonLink" _inline={false} _shortKey="s" />
53
53
  </p>
54
+ <p>
55
+ <KolButtonLink _label="Special Variant ButtonLink" _variant="theme-link" />
56
+ </p>
54
57
  </section>
55
58
  </>
56
59
  );
@@ -1,4 +1,4 @@
1
- import type { ButtonProps, KoliBriTableCell, KoliBriTableHeaders } from '@public-ui/components';
1
+ import type { KoliBriTableCell, KoliBriTableHeaders } from '@public-ui/components';
2
2
  import {
3
3
  KolAbbr,
4
4
  KolAccordion,
@@ -32,7 +32,7 @@ import {
32
32
  KolTextarea,
33
33
  KolVersion,
34
34
  } from '@public-ui/react-v19';
35
- import type { FC } from 'react';
35
+ import type { ComponentProps, FC } from 'react';
36
36
  import React from 'react';
37
37
 
38
38
  import { useToasterService } from '../../hooks/useToasterService';
@@ -40,14 +40,14 @@ import { getRoot } from '../../shares/react-roots';
40
40
  import { getTheme, getThemeName } from '../../shares/store';
41
41
  import { TABLE_DATA, type TableDataType } from './table-data';
42
42
 
43
- function KolButtonWrapper({ _on, ...other }: ButtonProps & { style: Record<string, unknown> }) {
44
- const { dummyClickEventHandler } = useToasterService();
43
+ type KolButtonProps = ComponentProps<typeof KolButton>;
45
44
 
45
+ function KolButtonWrapper(props: KolButtonProps & { style: Record<string, unknown> }) {
46
+ const { dummyClickEventHandler } = useToasterService();
46
47
  const dummyEventHandler = {
47
48
  onClick: dummyClickEventHandler,
48
49
  };
49
-
50
- return <KolButton {...other} _on={dummyEventHandler} />;
50
+ return <KolButton {...props} _on={dummyEventHandler} />;
51
51
  }
52
52
 
53
53
  const TABLE_HEADERS: KoliBriTableHeaders = {
@@ -0,0 +1,30 @@
1
+ import type { FC } from 'react';
2
+ import React from 'react';
3
+
4
+ import { KolInputText } from '@public-ui/react-v19';
5
+ import { SampleDescription } from '../SampleDescription';
6
+
7
+ const PATTERN = '^[A-Za-z]{3}-\\d{3}$';
8
+
9
+ export const InputTextPattern: FC = () => (
10
+ <>
11
+ <SampleDescription>
12
+ <p>This sample demonstrates HTML5 pattern validation for both native input and KolInputText components.</p>
13
+ </SampleDescription>
14
+ <form className="grid gap-4">
15
+ <div className="grid gap-2">
16
+ <label htmlFor="native-input">Native Input (Pattern: AAA-123, case-insensitive)</label>
17
+ <input id="native-input" name="native-input" pattern={PATTERN} type="text" />
18
+ </div>
19
+ <KolInputText
20
+ _label="KoliBri Input (Pattern: AAA-123, case-insensitive)"
21
+ _name="kolibri-input"
22
+ _pattern={PATTERN}
23
+ _hint="Note: This input is not linked to the form element. The validation inside the Shadow DOM is currently not triggered on form submit."
24
+ />
25
+ <div>
26
+ <button type="submit">Submit</button>
27
+ </div>
28
+ </form>
29
+ </>
30
+ );
@@ -8,6 +8,7 @@ import { InputTextExpertSlot } from './expert-slot';
8
8
  import { InputTextHideLabel } from './hide-label';
9
9
  import { InputTextHideMsg } from './hide-msg';
10
10
  import { InputTextMessageTypes } from './message-types';
11
+ import { InputTextPattern } from './pattern';
11
12
  import { InputTextPlaceholder } from './placeholder';
12
13
  import { InputTextReadonly } from './readonly';
13
14
  import { InputTextSelectRange } from './select-range';
@@ -28,6 +29,7 @@ export const INPUT_TEXT_ROUTES: Routes = {
28
29
  'text-formatter': InputTextFormatterDemo,
29
30
  'smart-button': InputTextSmartButton,
30
31
  'expert-slot': InputTextExpertSlot,
32
+ pattern: InputTextPattern,
31
33
  'select-range': InputTextSelectRange,
32
34
  background: InputTextBackground,
33
35
  },
@@ -1,48 +1,139 @@
1
- import { KolForm, KolInputText } from '@public-ui/react-v19';
2
- import React, { useMemo, useRef, type BaseSyntheticEvent } from 'react';
1
+ import { KolForm, KolHeading, KolInputText } from '@public-ui/react-v19';
2
+ import * as React from 'react';
3
3
  import { Controller, useForm } from 'react-hook-form';
4
-
5
4
  import { SampleDescription } from '../SampleDescription';
6
5
 
7
- type InputTextElementSelection = {
8
- setSelectionStart?: (position: number) => Promise<void>;
9
- selectionStart?: () => Promise<number | null>;
10
- };
6
+ /**
7
+ * IbanFormatter handles formatting and parsing of IBAN values.
8
+ * It groups characters in blocks of 4, separated by spaces.
9
+ * Example: "DE89370400440532013000" → "DE89 3704 0044 0532 0130 00"
10
+ */
11
+ class IbanFormatter {
12
+ private readonly SEPARATOR = ' ';
13
+ private readonly CHARS_PER_GROUP = 4;
14
+ private readonly KEEP_ALPHANUM = /[^a-zA-Z0-9]/g;
11
15
 
12
- type KolInputTextEvents = {
13
- onBlur?: (event: Event) => void;
14
- onChange?: (event: Event, value: unknown) => void;
15
- onFocus?: (event: Event) => void;
16
- onInput?: (event: Event, value: unknown) => void;
17
- };
18
- type KolInputTextProps = Omit<React.ComponentProps<typeof KolInputText>, '_on' | '_value'> & {
19
- _on?: KolInputTextEvents;
20
- _value?: string;
21
- };
16
+ /**
17
+ * Removes all non-alphanumeric characters and converts to uppercase.
18
+ * This is the raw value stored in the form model.
19
+ */
20
+ parse(value: string): string {
21
+ return value.replace(this.KEEP_ALPHANUM, '').toUpperCase();
22
+ }
22
23
 
23
- const NON_ALPHANUM = /[^a-zA-Z0-9]/g;
24
- const EVERY_FOUR_CHARS = /(.{4})(?!$)/g;
24
+ /**
25
+ * Formats the value into groups of 4 characters separated by spaces.
26
+ * This is the display value shown in the input field.
27
+ */
28
+ format(value: string): string {
29
+ const clean = this.parse(value);
30
+ const regex = new RegExp(`(.{${this.CHARS_PER_GROUP}})(?!$)`, 'g');
31
+ return clean.replace(regex, `$1${this.SEPARATOR}`);
32
+ }
25
33
 
26
- class IbanFormatter {
27
- private electronicFormat(iban: string): string {
28
- return iban.replace(NON_ALPHANUM, '').toUpperCase();
34
+ /**
35
+ * Calculates the correct cursor position after formatting changes.
36
+ * This ensures the cursor stays at the expected position when separators are added/removed.
37
+ */
38
+ adjustCursorPosition(oldValue: string, newValue: string, oldCursorPos: number): number {
39
+ const oldText = this.format(oldValue);
40
+ const newText = this.format(newValue);
41
+
42
+ if (oldCursorPos >= oldText.length) return newText.length;
43
+
44
+ // Count significant characters (excluding separators) up to cursor position
45
+ let significantChars = 0;
46
+ for (let i = 0; i < oldCursorPos && i < oldText.length; i++) {
47
+ if (oldText[i] !== this.SEPARATOR) significantChars++;
48
+ }
49
+
50
+ // Find the corresponding position in the new formatted text
51
+ let count = 0;
52
+ for (let i = 0; i < newText.length; i++) {
53
+ if (newText[i] !== this.SEPARATOR && count++ === significantChars) return i;
54
+ }
55
+ return newText.length;
29
56
  }
57
+ }
58
+
59
+ /**
60
+ * CurrencyFormatter handles formatting and parsing of currency values.
61
+ * It uses the browser's locale for formatting and intelligently detects
62
+ * decimal vs. thousand separators when parsing.
63
+ * Example: 1000000 → "1.000.000,00 €" (German locale)
64
+ */
65
+ class CurrencyFormatter {
66
+ private readonly LOCALE = navigator.language;
67
+ private readonly CURRENCY_SYMBOL = ' €';
68
+
69
+ /**
70
+ * Parses a formatted currency string back to a raw number.
71
+ * Intelligently detects which character is the decimal separator:
72
+ * - German format: "1.000.000,00" → 1000000 (dot is thousand, comma is decimal)
73
+ * - English format: "1,000,000.00" → 1000000 (comma is thousand, dot is decimal)
74
+ */
75
+ parse(value: string): number {
76
+ // Remove currency symbols and keep only digits, dots, and commas
77
+ const sanitized = value.replace(/[^\d.,]/g, '');
78
+
79
+ // Determine which character is the decimal separator
80
+ // The rightmost occurrence is typically the decimal separator
81
+ const lastCommaIndex = sanitized.lastIndexOf(',');
82
+ const lastDotIndex = sanitized.lastIndexOf('.');
30
83
 
31
- private printFormat(iban: string, separator?: string) {
32
- return this.electronicFormat(iban).replace(EVERY_FOUR_CHARS, '$1' + (separator || ' '));
84
+ let normalizedValue: string;
85
+
86
+ if (lastCommaIndex > lastDotIndex) {
87
+ // Comma is decimal separator (e.g., German: 1.000.000,00)
88
+ // Remove all dots (thousand separators) and replace comma with dot for parseFloat
89
+ normalizedValue = sanitized.replace(/\./g, '').replace(',', '.');
90
+ } else if (lastDotIndex > lastCommaIndex) {
91
+ // Dot is decimal separator (e.g., English: 1,000,000.00)
92
+ // Remove all commas (thousand separators)
93
+ normalizedValue = sanitized.replace(/,/g, '');
94
+ } else {
95
+ // No decimal separator present, remove all dots and commas
96
+ normalizedValue = sanitized.replace(/[.,]/g, '');
97
+ }
98
+
99
+ return parseFloat(normalizedValue) || 0;
33
100
  }
34
101
 
35
- public parse(value: string): string {
36
- return this.electronicFormat(value);
102
+ /**
103
+ * Formats a number as currency according to the browser's locale.
104
+ * Always shows 2 decimal places and appends the currency symbol.
105
+ */
106
+ format(value: number | string): string {
107
+ const number = typeof value === 'string' ? this.parse(value) : value;
108
+ const formatted = new Intl.NumberFormat(this.LOCALE, {
109
+ minimumFractionDigits: 2,
110
+ maximumFractionDigits: 2,
111
+ }).format(number);
112
+ return formatted + this.CURRENCY_SYMBOL;
37
113
  }
38
114
 
39
- public format(value: string, ref?: HTMLKolInputTextElement | null, selectionStart?: number | null): string {
40
- const setSelectionStart = (ref as InputTextElementSelection | null)?.setSelectionStart;
41
- if (selectionStart && setSelectionStart) {
42
- if (selectionStart % 5 === 0) selectionStart++;
43
- void setSelectionStart(selectionStart);
115
+ /**
116
+ * Calculates the correct cursor position after formatting changes.
117
+ * This ensures the cursor stays aligned with digits when thousand separators are added/removed.
118
+ */
119
+ adjustCursorPosition(oldValue: string, newValue: string, oldCursorPos: number): number {
120
+ const oldText = this.format(oldValue);
121
+ const newText = this.format(newValue);
122
+
123
+ if (oldCursorPos >= oldText.length) return newText.length;
124
+
125
+ // Count digits up to cursor position (ignoring separators and currency symbols)
126
+ let digitCount = 0;
127
+ for (let i = 0; i < oldCursorPos && i < oldText.length; i++) {
128
+ if (/\d/.test(oldText[i])) digitCount++;
44
129
  }
45
- return this.printFormat(value);
130
+
131
+ // Find the corresponding position in the new formatted text
132
+ let count = 0;
133
+ for (let i = 0; i < newText.length; i++) {
134
+ if (/\d/.test(newText[i]) && count++ === digitCount) return i;
135
+ }
136
+ return newText.length;
46
137
  }
47
138
  }
48
139
 
@@ -50,129 +141,139 @@ type IbanExampleFormValues = {
50
141
  iban: string;
51
142
  };
52
143
 
53
- function FormattedKolInputText({
54
- formatter,
55
- selectionStartRef,
56
- _on,
57
- _value,
58
- ...props
59
- }: KolInputTextProps & {
60
- formatter: IbanFormatter;
61
- selectionStartRef: React.MutableRefObject<number | null>;
62
- }) {
63
- const inputRef = useRef<HTMLKolInputTextElement | null>(null);
64
- const normalizedOn = _on && typeof _on === 'object' ? (_on as KolInputTextEvents) : undefined;
65
- const sanitizedSelectionRef = selectionStartRef as React.MutableRefObject<number | null>;
66
-
67
- const element = inputRef.current;
68
- const selectionStart = sanitizedSelectionRef.current;
69
- const sanitizedFormatter: IbanFormatter = formatter;
70
-
71
- return (
72
- <KolInputText
73
- {...props}
74
- ref={inputRef}
75
- _value={sanitizedFormatter.format(_value ?? '', element, selectionStart)}
76
- _on={{
77
- ...normalizedOn,
78
- onInput: (event: Event, value: unknown) => {
79
- const selectionStartGetter = (inputRef.current as InputTextElementSelection | null)?.selectionStart;
80
- selectionStartGetter?.().then((start) => {
81
- sanitizedSelectionRef.current = start ?? null;
82
- });
83
- const parsedValue = sanitizedFormatter.parse(typeof value === 'string' ? value : '');
84
- normalizedOn?.onInput?.(event, parsedValue);
85
- },
86
- }}
87
- />
88
- );
89
- }
90
-
91
- function KolFormattedIbanController(props: any) {
92
- const { name, control, rules, defaultValue, shouldUnregister, disabled, formatter, selectionStartRef, ...componentProps } = props;
93
- return (
94
- <Controller
95
- name={name}
96
- control={control}
97
- rules={rules}
98
- defaultValue={defaultValue}
99
- shouldUnregister={shouldUnregister}
100
- disabled={disabled}
101
- render={({ field, fieldState }) => {
102
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
103
- const userHandlers = componentProps._on as KolInputTextEvents | undefined;
104
- return (
105
- <FormattedKolInputText
106
- {...(componentProps as any)}
107
- formatter={formatter}
108
- selectionStartRef={selectionStartRef}
109
- _value={field.value}
110
- _touched={fieldState.isTouched}
111
- _msg={
112
- fieldState.error
113
- ? {
114
- _type: 'error' as const,
115
- _description: fieldState.error.message || String(fieldState.error),
116
- }
117
- : undefined
118
- }
119
- _on={{
120
- onInput: (event: Event, value: unknown) => {
121
- field.onChange(value);
122
- userHandlers?.onInput?.(event, value);
123
- },
124
- onBlur: () => field.onBlur(),
125
- }}
126
- />
127
- );
128
- }}
129
- />
130
- );
131
- }
144
+ type CurrencyExampleFormValues = {
145
+ currency: number;
146
+ };
132
147
 
148
+ /**
149
+ * Demo component showcasing two different text formatting strategies for input fields.
150
+ *
151
+ * Strategy 1 - Live Formatting (IBAN):
152
+ * - Formats text while typing
153
+ * - Maintains intelligent cursor positioning
154
+ * - Best for: Fixed-format values where users expect immediate visual feedback
155
+ *
156
+ * Strategy 2 - On-Blur Formatting (Currency):
157
+ * - Formats only when field loses focus (onBlur event)
158
+ * - Allows free typing without formatting interruptions
159
+ * - Best for: Numeric values where users might type in various formats
160
+ */
133
161
  export function InputTextFormatterDemo() {
134
- const formatter = useMemo(() => new IbanFormatter(), []);
135
-
136
- const textInput1SelectionStart = useRef<number | null>(null);
137
-
138
- const initialIbanExampleValues: IbanExampleFormValues = {
139
- iban: 'DE89370400440532013000',
140
- };
162
+ const ibanFormatter = new IbanFormatter();
163
+ const currencyFormatter = new CurrencyFormatter();
141
164
 
142
165
  const ibanForm = useForm<IbanExampleFormValues>({
143
- defaultValues: initialIbanExampleValues,
144
- mode: 'onTouched',
166
+ defaultValues: { iban: 'DE89370400440532013000' },
145
167
  });
168
+ const currencyForm = useForm<CurrencyExampleFormValues>({
169
+ defaultValues: { currency: 1000000 },
170
+ });
171
+
172
+ /**
173
+ * Handles input events for the IBAN field with live formatting.
174
+ * Updates the model value and adjusts cursor position to maintain UX during formatting.
175
+ */
176
+ const handleIbanInput = (event: Event) => {
177
+ const input = event.target as HTMLInputElement;
178
+ const newValue = ibanFormatter.parse(input.value);
179
+ const newCursorPos = ibanFormatter.adjustCursorPosition(ibanForm.getValues('iban'), newValue, input.selectionStart || 0);
146
180
 
147
- const ibanValues = ibanForm.watch();
181
+ // Update the form model with the parsed (unformatted) value
182
+ ibanForm.setValue('iban', newValue);
148
183
 
149
- const handleIbanSubmit = (event: Event) => {
150
- void ibanForm.handleSubmit(async () => {})(event as unknown as BaseSyntheticEvent);
184
+ // Use double requestAnimationFrame to ensure cursor position is set after React re-render
185
+ requestAnimationFrame(() => {
186
+ requestAnimationFrame(() => {
187
+ input.setSelectionRange(newCursorPos, newCursorPos);
188
+ });
189
+ });
151
190
  };
152
191
 
153
192
  return (
154
193
  <>
155
194
  <SampleDescription>
195
+ <p>This example demonstrates two different formatting strategies for input fields:</p>
196
+ <ul>
197
+ <li>
198
+ <strong>Live Formatting (IBAN):</strong> Formatting happens while typing. The value is immediately formatted and displayed with intelligent cursor
199
+ positioning. Best for fixed-format values where users expect visual feedback during input.
200
+ </li>
201
+ <li>
202
+ <strong>On-Blur Formatting (Currency):</strong> Formatting happens when leaving the field (onBlur event). Allows free typing without interruption.
203
+ Best for numeric values where users might input in various formats.
204
+ </li>
205
+ </ul>
156
206
  <p>
157
- This example demonstrates formatting a data value in an input field (example IBAN). The data value is formatted to the input field (print format) and
158
- vice versa the formatting is removed again (machine format)
207
+ <strong>Key Concept:</strong> The form model always stores the <em>unformatted</em> value (raw IBAN string, numeric currency value), while the input
208
+ field displays the <em>formatted</em> value for better readability.
159
209
  </p>
160
210
  </SampleDescription>
161
- <section className="w-full">
162
- <div>
163
- <KolForm _on={{ onSubmit: handleIbanSubmit }}>
164
- <KolFormattedIbanController
165
- control={ibanForm.control as any}
166
- name="iban"
167
- id="field-iban"
168
- formatter={formatter}
169
- selectionStartRef={textInput1SelectionStart}
170
- rules={{ required: 'Please enter an IBAN.' }}
171
- _label="IBAN"
172
- _required
173
- />
211
+ <section className="w-full flex flex-col">
212
+ <div className="p-2">
213
+ <KolHeading _label="Live Formatting - IBAN" _level={2} />
214
+ <p className="text-sm mb-2">Formatting occurs during input with intelligent cursor control</p>
215
+ <KolForm>
216
+ <form onSubmit={ibanForm.handleSubmit(async () => {})}>
217
+ <Controller
218
+ name="iban"
219
+ control={ibanForm.control}
220
+ render={({ field }) => (
221
+ <div className="block mt-2">
222
+ <KolInputText
223
+ id="field-iban"
224
+ _label="IBAN"
225
+ _value={ibanFormatter.format(field.value ?? '')}
226
+ _required
227
+ _on={{
228
+ onInput: handleIbanInput,
229
+ onBlur: field.onBlur,
230
+ }}
231
+ />
232
+ </div>
233
+ )}
234
+ />
235
+ </form>
174
236
  </KolForm>
175
- <pre className="text-base mt-2">{JSON.stringify(ibanValues, null, 2)}</pre>
237
+ </div>
238
+ <div className="p-2">
239
+ <KolHeading _label="Model (Unformatted Value)" _level={2} />
240
+ <pre className="text-base">{JSON.stringify(ibanForm.watch(), null, 2)}</pre>
241
+ </div>
242
+ </section>
243
+
244
+ <section className="w-full flex flex-col">
245
+ <div className="p-2">
246
+ <KolHeading _label="On-Blur Formatting - Currency" _level={2} />
247
+ <p className="text-sm mb-2">Formatting occurs when leaving the field (onBlur) for uninterrupted input</p>
248
+ <KolForm>
249
+ <form onSubmit={currencyForm.handleSubmit(async () => {})}>
250
+ <Controller
251
+ name="currency"
252
+ control={currencyForm.control}
253
+ render={({ field }) => (
254
+ <div className="block mt-2">
255
+ <KolInputText
256
+ id="field-currency"
257
+ _label="Currency"
258
+ _value={currencyFormatter.format(field.value ?? 0)}
259
+ _on={{
260
+ onBlur: (event: Event) => {
261
+ const input = event.target as HTMLInputElement;
262
+ const parsedValue = currencyFormatter.parse(input.value);
263
+ field.onChange(parsedValue);
264
+ field.onBlur();
265
+ },
266
+ }}
267
+ />
268
+ </div>
269
+ )}
270
+ />
271
+ </form>
272
+ </KolForm>
273
+ </div>
274
+ <div className="p-2">
275
+ <KolHeading _label="Model (Numeric Value)" _level={2} />
276
+ <pre className="text-base">{JSON.stringify(currencyForm.watch(), null, 2)}</pre>
176
277
  </div>
177
278
  </section>
178
279
  </>
@@ -31,6 +31,7 @@ export const LinkBasic: FC = () => (
31
31
  After that, there is a link that is rendered as a block element. <KolLink class="d-block" _href="#/back-page" _label="Simple Link" />, therefore, I span
32
32
  the entire width of the parent element, causing a line break.
33
33
  </p>
34
+ <KolLink _href="#/back-page" _inline={false} _label="Special Variant Link" _variant="theme-link" />
34
35
  </div>
35
36
  </>
36
37
  );
@@ -1,19 +1,19 @@
1
- import type { ButtonProps, ButtonVariantPropType, KoliBriTableCell, KoliBriTableHeaderCell } from '@public-ui/components';
1
+ import type { ButtonVariantPropType, KoliBriTableCell, KoliBriTableHeaderCell } from '@public-ui/components';
2
2
  import { createReactRenderElement, KolButton, KolButtonLink, KolLink, KolLinkButton, KolTableStateless } from '@public-ui/react-v19';
3
- import type { FC } from 'react';
3
+ import type { ComponentProps, FC } from 'react';
4
4
  import React from 'react';
5
5
  import { useToasterService } from '../../hooks/useToasterService';
6
6
  import { getRoot } from '../../shares/react-roots';
7
7
  import { SampleDescription } from '../SampleDescription';
8
8
 
9
- function KolButtonWrapper({ _on, ...other }: ButtonProps) {
10
- const { dummyClickEventHandler } = useToasterService();
9
+ type KolButtonProps = ComponentProps<typeof KolButton>;
11
10
 
11
+ function KolButtonWrapper(props: KolButtonProps) {
12
+ const { dummyClickEventHandler } = useToasterService();
12
13
  const dummyEventHandler = {
13
14
  onClick: dummyClickEventHandler,
14
15
  };
15
-
16
- return <KolButton {...other} _on={dummyEventHandler} />;
16
+ return <KolButton {...props} _on={dummyEventHandler} />;
17
17
  }
18
18
 
19
19
  const getButtonHeaderCell = (variant: ButtonVariantPropType): KoliBriTableHeaderCell => {
@@ -5,7 +5,7 @@ import { HashRouter as Router } from 'react-router-dom';
5
5
 
6
6
  import { bootstrap, KoliBriDevHelper } from '@public-ui/components';
7
7
  import { defineCustomElements } from '@public-ui/components/loader';
8
- import { DEFAULT, ECL_EC, ECL_EU } from '@public-ui/themes';
8
+ import { DEFAULT, ECL_EC, ECL_EU, KERN_V2 } from '@public-ui/themes';
9
9
 
10
10
  import { App } from './App';
11
11
 
@@ -40,7 +40,7 @@ const getThemes = async () => {
40
40
  }
41
41
 
42
42
  /* List of regular sample app themes */
43
- return [DEFAULT, ECL_EC, ECL_EU] as Theme[];
43
+ return [DEFAULT, ECL_EC, ECL_EU, KERN_V2] as Theme[];
44
44
  };
45
45
 
46
46
  void (async () => {