@nuraly/runtime 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (970) hide show
  1. package/README.md +778 -0
  2. package/components/index.ts +13 -0
  3. package/components/ui/components/Event/EventAttribute/EventAttribute.style.ts +11 -0
  4. package/components/ui/components/Event/EventAttribute/EventAttribute.ts +28 -0
  5. package/components/ui/components/Event/EventLabel/EventLabel.ts +19 -0
  6. package/components/ui/components/Event/EventValue/EventValue.ts +79 -0
  7. package/components/ui/components/ToastContainer/ToastContainer.ts +126 -0
  8. package/components/ui/components/advanced/AIChat/AIChat.helper.ts +22 -0
  9. package/components/ui/components/advanced/AIChat/AIChat.style.ts +52 -0
  10. package/components/ui/components/advanced/AIChat/AIChat.ts +143 -0
  11. package/components/ui/components/advanced/CodeEditor/CodeEditor.ts +489 -0
  12. package/components/ui/components/advanced/Collapse/Collapse.ts +86 -0
  13. package/components/ui/components/advanced/Collections/Collections.style.ts +21 -0
  14. package/components/ui/components/advanced/Collections/Collections.ts +125 -0
  15. package/components/ui/components/advanced/MicroApp/MicroApp.ts +98 -0
  16. package/components/ui/components/advanced/RefComponent/RefComponent.ts +86 -0
  17. package/components/ui/components/advanced/RichText/RichText.ts +98 -0
  18. package/components/ui/components/advanced/RichText/RichTextEditor.ts +536 -0
  19. package/components/ui/components/base/BaseElement/base-change-detection.ts +18 -0
  20. package/components/ui/components/base/BaseElement/calculateStyles.ts +31 -0
  21. package/components/ui/components/base/BaseElement/drag-events.helpers.ts +71 -0
  22. package/components/ui/components/base/BaseElement/execute-event.helpers.ts +45 -0
  23. package/components/ui/components/base/BaseElement/handler-component-error.ts +28 -0
  24. package/components/ui/components/base/BaseElement/input-handler.helpers.ts +358 -0
  25. package/components/ui/components/base/BaseElement/interactions.helpers.ts +14 -0
  26. package/components/ui/components/base/BaseElement.ts +711 -0
  27. package/components/ui/components/display/Badge/Badge.ts +61 -0
  28. package/components/ui/components/display/BoxModel/BoxModel.ts +372 -0
  29. package/components/ui/components/display/Code/Code.ts +103 -0
  30. package/components/ui/components/display/Divider/Divider.ts +98 -0
  31. package/components/ui/components/display/Icon/Icon.ts +60 -0
  32. package/components/ui/components/display/Image/Image.ts +75 -0
  33. package/components/ui/components/display/Table/Table.style.ts +0 -0
  34. package/components/ui/components/display/Table/Table.ts +178 -0
  35. package/components/ui/components/display/Tag/Tag.ts +49 -0
  36. package/components/ui/components/display/TextLabel/TextLabel.style.ts +21 -0
  37. package/components/ui/components/display/TextLabel/TextLabel.ts +72 -0
  38. package/components/ui/components/display/Video/Video.ts +46 -0
  39. package/components/ui/components/inputs/Button/Button.style.ts +0 -0
  40. package/components/ui/components/inputs/Button/Button.ts +79 -0
  41. package/components/ui/components/inputs/Checkbox/Checkbox.ts +76 -0
  42. package/components/ui/components/inputs/ColorPicker/colorpicker.ts +65 -0
  43. package/components/ui/components/inputs/DatePicker/DatePicker.ts +60 -0
  44. package/components/ui/components/inputs/Dropdown/Dropdown.ts +128 -0
  45. package/components/ui/components/inputs/FileUpload/FileUpload.ts +43 -0
  46. package/components/ui/components/inputs/IconButton/iconbutton.ts +54 -0
  47. package/components/ui/components/inputs/IconPicker/IconPicker.style.ts +109 -0
  48. package/components/ui/components/inputs/IconPicker/IconPicker.ts +61 -0
  49. package/components/ui/components/inputs/InsertDropdown/InsertDropdown.ts +75 -0
  50. package/components/ui/components/inputs/NumberInput/NumberInput.ts +84 -0
  51. package/components/ui/components/inputs/RadioButton/Radio-button.ts +69 -0
  52. package/components/ui/components/inputs/Select/Select.ts +65 -0
  53. package/components/ui/components/inputs/Slider/Slider.ts +63 -0
  54. package/components/ui/components/inputs/TextInput/TextInput.style.ts +0 -0
  55. package/components/ui/components/inputs/TextInput/TextInput.ts +153 -0
  56. package/components/ui/components/inputs/Textarea/Textarea.ts +110 -0
  57. package/components/ui/components/inputs/UsersDropdown/UsersDropdown.ts +30 -0
  58. package/components/ui/components/layout/Card/Card.ts +46 -0
  59. package/components/ui/components/layout/Containers/Container.style.ts +34 -0
  60. package/components/ui/components/layout/Containers/Container.ts +127 -0
  61. package/components/ui/components/layout/Panel/Panel.ts +156 -0
  62. package/components/ui/components/layout/Panel/index.ts +1 -0
  63. package/components/ui/components/layout/Tabs/Tabs.style.ts +5 -0
  64. package/components/ui/components/layout/Tabs/Tabs.ts +120 -0
  65. package/components/ui/components/navigation/EmbedURL/EmbedURL.ts +108 -0
  66. package/components/ui/components/navigation/Link/Link.ts +83 -0
  67. package/components/ui/components/navigation/Menu/Menu.ts +92 -0
  68. package/components/ui/components/runtime/MicroApp/MicroApp.ts +485 -0
  69. package/components/ui/components/runtime/MicroApp/MicroAppDataLoader.ts +240 -0
  70. package/components/ui/components/utility/Border/Border.ts +643 -0
  71. package/components/ui/components/utility/BoxShadow/BoxShadow.ts +253 -0
  72. package/components/ui/components/utility/Document/Document.ts +47 -0
  73. package/components/ui/components/utility/Export-Import/Export-Import.ts +122 -0
  74. package/components/ui/components/utility/Function/InvokeFunction.ts +63 -0
  75. package/components/ui/components/utility/Handlers/Handlers.style.ts +0 -0
  76. package/components/ui/components/utility/Handlers/Handlers.ts +200 -0
  77. package/components/ui/components/wrappers/ComponentTitle/ComponentTitle.ts +95 -0
  78. package/components/ui/components/wrappers/GenerikWrapper/DragWrapper/DragWrapper.style.ts +17 -0
  79. package/components/ui/components/wrappers/GenerikWrapper/DragWrapper/DragWrapper.ts +230 -0
  80. package/components/ui/components/wrappers/GenerikWrapper/GenerikWrapper.style.ts +135 -0
  81. package/components/ui/components/wrappers/GenerikWrapper/GenerikWrapper.ts +230 -0
  82. package/components/ui/components/wrappers/GenerikWrapper/QuickActionWrapper/QuickActionWrapper.style.ts +99 -0
  83. package/components/ui/components/wrappers/GenerikWrapper/QuickActionWrapper/QuickActionWrapper.ts +94 -0
  84. package/components/ui/components/wrappers/GenerikWrapper/ResizeWrapper/ResizeWrapper.style.ts +102 -0
  85. package/components/ui/components/wrappers/GenerikWrapper/ResizeWrapper/ResizeWrapper.ts +258 -0
  86. package/components/ui/components/wrappers/PreviewWrapper.ts +28 -0
  87. package/components/ui/components/wrappers/RectangleSelection/RectangleSelection.ts +154 -0
  88. package/components/ui/nuraly-ui/.storybook/main.ts +31 -0
  89. package/components/ui/nuraly-ui/.storybook/manager.ts +17 -0
  90. package/components/ui/nuraly-ui/.storybook/preview.ts +94 -0
  91. package/components/ui/nuraly-ui/LICENSE +28 -0
  92. package/components/ui/nuraly-ui/README.md +248 -0
  93. package/components/ui/nuraly-ui/examples/README.md +413 -0
  94. package/components/ui/nuraly-ui/packages/common/README.md +137 -0
  95. package/components/ui/nuraly-ui/packages/common/dist/constants/index.js +2 -0
  96. package/components/ui/nuraly-ui/packages/common/dist/constants.js +7 -0
  97. package/components/ui/nuraly-ui/packages/common/dist/controllers/index.js +2 -0
  98. package/components/ui/nuraly-ui/packages/common/dist/controllers.js +22 -0
  99. package/components/ui/nuraly-ui/packages/common/dist/index.js +27 -0
  100. package/components/ui/nuraly-ui/packages/common/dist/mixins/index.js +3 -0
  101. package/components/ui/nuraly-ui/packages/common/dist/mixins.js +29 -0
  102. package/components/ui/nuraly-ui/packages/common/dist/shared/base-mixin.js +38 -0
  103. package/components/ui/nuraly-ui/packages/common/dist/shared/constants.js +2 -0
  104. package/components/ui/nuraly-ui/packages/common/dist/shared/controllers/dropdown.controller.js +341 -0
  105. package/components/ui/nuraly-ui/packages/common/dist/shared/controllers/dropdown.interface.js +2 -0
  106. package/components/ui/nuraly-ui/packages/common/dist/shared/controllers/index.js +4 -0
  107. package/components/ui/nuraly-ui/packages/common/dist/shared/controllers/theme.controller.js +133 -0
  108. package/components/ui/nuraly-ui/packages/common/dist/shared/dependency-mixin.js +141 -0
  109. package/components/ui/nuraly-ui/packages/common/dist/shared/event-handler-mixin.js +95 -0
  110. package/components/ui/nuraly-ui/packages/common/dist/shared/index.js +17 -0
  111. package/components/ui/nuraly-ui/packages/common/dist/shared/theme-mixin.js +194 -0
  112. package/components/ui/nuraly-ui/packages/common/dist/shared/themes.js +85 -0
  113. package/components/ui/nuraly-ui/packages/common/dist/shared/utils.js +85 -0
  114. package/components/ui/nuraly-ui/packages/common/dist/shared/validation.types.js +17 -0
  115. package/components/ui/nuraly-ui/packages/common/dist/themes/index.js +2 -0
  116. package/components/ui/nuraly-ui/packages/common/dist/themes.js +23 -0
  117. package/components/ui/nuraly-ui/packages/common/dist/utils/index.js +2 -0
  118. package/components/ui/nuraly-ui/packages/common/dist/utils.js +22 -0
  119. package/components/ui/nuraly-ui/packages/forms/README.md +84 -0
  120. package/components/ui/nuraly-ui/packages/forms/node_modules/fs-extra/LICENSE +15 -0
  121. package/components/ui/nuraly-ui/packages/forms/node_modules/fs-extra/README.md +294 -0
  122. package/components/ui/nuraly-ui/packages/forms/node_modules/fs-extra/lib/copy/copy-sync.js +171 -0
  123. package/components/ui/nuraly-ui/packages/forms/node_modules/fs-extra/lib/copy/copy.js +175 -0
  124. package/components/ui/nuraly-ui/packages/forms/node_modules/fs-extra/lib/copy/index.js +7 -0
  125. package/components/ui/nuraly-ui/packages/forms/node_modules/fs-extra/lib/empty/index.js +39 -0
  126. package/components/ui/nuraly-ui/packages/forms/node_modules/fs-extra/lib/ensure/file.js +66 -0
  127. package/components/ui/nuraly-ui/packages/forms/node_modules/fs-extra/lib/ensure/index.js +23 -0
  128. package/components/ui/nuraly-ui/packages/forms/node_modules/fs-extra/lib/ensure/link.js +64 -0
  129. package/components/ui/nuraly-ui/packages/forms/node_modules/fs-extra/lib/ensure/symlink-paths.js +101 -0
  130. package/components/ui/nuraly-ui/packages/forms/node_modules/fs-extra/lib/ensure/symlink-type.js +34 -0
  131. package/components/ui/nuraly-ui/packages/forms/node_modules/fs-extra/lib/ensure/symlink.js +67 -0
  132. package/components/ui/nuraly-ui/packages/forms/node_modules/fs-extra/lib/fs/index.js +146 -0
  133. package/components/ui/nuraly-ui/packages/forms/node_modules/fs-extra/lib/index.js +16 -0
  134. package/components/ui/nuraly-ui/packages/forms/node_modules/fs-extra/lib/json/index.js +16 -0
  135. package/components/ui/nuraly-ui/packages/forms/node_modules/fs-extra/lib/json/jsonfile.js +11 -0
  136. package/components/ui/nuraly-ui/packages/forms/node_modules/fs-extra/lib/json/output-json-sync.js +12 -0
  137. package/components/ui/nuraly-ui/packages/forms/node_modules/fs-extra/lib/json/output-json.js +12 -0
  138. package/components/ui/nuraly-ui/packages/forms/node_modules/fs-extra/lib/mkdirs/index.js +14 -0
  139. package/components/ui/nuraly-ui/packages/forms/node_modules/fs-extra/lib/mkdirs/make-dir.js +27 -0
  140. package/components/ui/nuraly-ui/packages/forms/node_modules/fs-extra/lib/mkdirs/utils.js +21 -0
  141. package/components/ui/nuraly-ui/packages/forms/node_modules/fs-extra/lib/move/index.js +7 -0
  142. package/components/ui/nuraly-ui/packages/forms/node_modules/fs-extra/lib/move/move-sync.js +55 -0
  143. package/components/ui/nuraly-ui/packages/forms/node_modules/fs-extra/lib/move/move.js +59 -0
  144. package/components/ui/nuraly-ui/packages/forms/node_modules/fs-extra/lib/output-file/index.js +31 -0
  145. package/components/ui/nuraly-ui/packages/forms/node_modules/fs-extra/lib/path-exists/index.js +12 -0
  146. package/components/ui/nuraly-ui/packages/forms/node_modules/fs-extra/lib/remove/index.js +17 -0
  147. package/components/ui/nuraly-ui/packages/forms/node_modules/fs-extra/lib/util/async.js +29 -0
  148. package/components/ui/nuraly-ui/packages/forms/node_modules/fs-extra/lib/util/stat.js +159 -0
  149. package/components/ui/nuraly-ui/packages/forms/node_modules/fs-extra/lib/util/utimes.js +36 -0
  150. package/components/ui/nuraly-ui/packages/layout/README.md +77 -0
  151. package/components/ui/nuraly-ui/packages/layout/node_modules/fs-extra/LICENSE +15 -0
  152. package/components/ui/nuraly-ui/packages/layout/node_modules/fs-extra/README.md +294 -0
  153. package/components/ui/nuraly-ui/packages/layout/node_modules/fs-extra/lib/copy/copy-sync.js +171 -0
  154. package/components/ui/nuraly-ui/packages/layout/node_modules/fs-extra/lib/copy/copy.js +175 -0
  155. package/components/ui/nuraly-ui/packages/layout/node_modules/fs-extra/lib/copy/index.js +7 -0
  156. package/components/ui/nuraly-ui/packages/layout/node_modules/fs-extra/lib/empty/index.js +39 -0
  157. package/components/ui/nuraly-ui/packages/layout/node_modules/fs-extra/lib/ensure/file.js +66 -0
  158. package/components/ui/nuraly-ui/packages/layout/node_modules/fs-extra/lib/ensure/index.js +23 -0
  159. package/components/ui/nuraly-ui/packages/layout/node_modules/fs-extra/lib/ensure/link.js +64 -0
  160. package/components/ui/nuraly-ui/packages/layout/node_modules/fs-extra/lib/ensure/symlink-paths.js +101 -0
  161. package/components/ui/nuraly-ui/packages/layout/node_modules/fs-extra/lib/ensure/symlink-type.js +34 -0
  162. package/components/ui/nuraly-ui/packages/layout/node_modules/fs-extra/lib/ensure/symlink.js +67 -0
  163. package/components/ui/nuraly-ui/packages/layout/node_modules/fs-extra/lib/fs/index.js +146 -0
  164. package/components/ui/nuraly-ui/packages/layout/node_modules/fs-extra/lib/index.js +16 -0
  165. package/components/ui/nuraly-ui/packages/layout/node_modules/fs-extra/lib/json/index.js +16 -0
  166. package/components/ui/nuraly-ui/packages/layout/node_modules/fs-extra/lib/json/jsonfile.js +11 -0
  167. package/components/ui/nuraly-ui/packages/layout/node_modules/fs-extra/lib/json/output-json-sync.js +12 -0
  168. package/components/ui/nuraly-ui/packages/layout/node_modules/fs-extra/lib/json/output-json.js +12 -0
  169. package/components/ui/nuraly-ui/packages/layout/node_modules/fs-extra/lib/mkdirs/index.js +14 -0
  170. package/components/ui/nuraly-ui/packages/layout/node_modules/fs-extra/lib/mkdirs/make-dir.js +27 -0
  171. package/components/ui/nuraly-ui/packages/layout/node_modules/fs-extra/lib/mkdirs/utils.js +21 -0
  172. package/components/ui/nuraly-ui/packages/layout/node_modules/fs-extra/lib/move/index.js +7 -0
  173. package/components/ui/nuraly-ui/packages/layout/node_modules/fs-extra/lib/move/move-sync.js +55 -0
  174. package/components/ui/nuraly-ui/packages/layout/node_modules/fs-extra/lib/move/move.js +59 -0
  175. package/components/ui/nuraly-ui/packages/layout/node_modules/fs-extra/lib/output-file/index.js +31 -0
  176. package/components/ui/nuraly-ui/packages/layout/node_modules/fs-extra/lib/path-exists/index.js +12 -0
  177. package/components/ui/nuraly-ui/packages/layout/node_modules/fs-extra/lib/remove/index.js +17 -0
  178. package/components/ui/nuraly-ui/packages/layout/node_modules/fs-extra/lib/util/async.js +29 -0
  179. package/components/ui/nuraly-ui/packages/layout/node_modules/fs-extra/lib/util/stat.js +159 -0
  180. package/components/ui/nuraly-ui/packages/layout/node_modules/fs-extra/lib/util/utimes.js +36 -0
  181. package/components/ui/nuraly-ui/packages/themes/README.md +146 -0
  182. package/components/ui/nuraly-ui/packages/themes/scripts/build.js +444 -0
  183. package/components/ui/nuraly-ui/rollup.config.js +144 -0
  184. package/components/ui/nuraly-ui/src/components/alert/README.md +236 -0
  185. package/components/ui/nuraly-ui/src/components/alert/alert.component.ts +225 -0
  186. package/components/ui/nuraly-ui/src/components/alert/alert.stories.ts +466 -0
  187. package/components/ui/nuraly-ui/src/components/alert/alert.style.ts +192 -0
  188. package/components/ui/nuraly-ui/src/components/alert/alert.types.ts +57 -0
  189. package/components/ui/nuraly-ui/src/components/alert/index.ts +8 -0
  190. package/components/ui/nuraly-ui/src/components/alert/react.ts +17 -0
  191. package/components/ui/nuraly-ui/src/components/badge/README.md +319 -0
  192. package/components/ui/nuraly-ui/src/components/badge/badge.component.ts +314 -0
  193. package/components/ui/nuraly-ui/src/components/badge/badge.stories.ts +582 -0
  194. package/components/ui/nuraly-ui/src/components/badge/badge.style.ts +250 -0
  195. package/components/ui/nuraly-ui/src/components/badge/badge.types.ts +100 -0
  196. package/components/ui/nuraly-ui/src/components/badge/index.ts +1 -0
  197. package/components/ui/nuraly-ui/src/components/badge/react.ts +9 -0
  198. package/components/ui/nuraly-ui/src/components/breadcrumb/README.md +243 -0
  199. package/components/ui/nuraly-ui/src/components/breadcrumb/breadcrumb.component.ts +280 -0
  200. package/components/ui/nuraly-ui/src/components/breadcrumb/breadcrumb.stories.ts +389 -0
  201. package/components/ui/nuraly-ui/src/components/breadcrumb/breadcrumb.style.ts +154 -0
  202. package/components/ui/nuraly-ui/src/components/breadcrumb/breadcrumb.types.ts +66 -0
  203. package/components/ui/nuraly-ui/src/components/breadcrumb/index.ts +1 -0
  204. package/components/ui/nuraly-ui/src/components/breadcrumb/react.ts +11 -0
  205. package/components/ui/nuraly-ui/src/components/button/README.md +331 -0
  206. package/components/ui/nuraly-ui/src/components/button/button.component.ts +317 -0
  207. package/components/ui/nuraly-ui/src/components/button/button.stories.ts +861 -0
  208. package/components/ui/nuraly-ui/src/components/button/button.style.ts +520 -0
  209. package/components/ui/nuraly-ui/src/components/button/button.types.ts +68 -0
  210. package/components/ui/nuraly-ui/src/components/button/controllers/base.controller.ts +99 -0
  211. package/components/ui/nuraly-ui/src/components/button/controllers/index.ts +10 -0
  212. package/components/ui/nuraly-ui/src/components/button/controllers/keyboard.controller.ts +89 -0
  213. package/components/ui/nuraly-ui/src/components/button/controllers/link.controller.ts +86 -0
  214. package/components/ui/nuraly-ui/src/components/button/controllers/ripple.controller.ts +79 -0
  215. package/components/ui/nuraly-ui/src/components/button/index.ts +1 -0
  216. package/components/ui/nuraly-ui/src/components/button/interfaces/base-controller.interface.ts +67 -0
  217. package/components/ui/nuraly-ui/src/components/button/interfaces/index.ts +1 -0
  218. package/components/ui/nuraly-ui/src/components/button/react.ts +11 -0
  219. package/components/ui/nuraly-ui/src/components/button/test/nr-button_test.ts +90 -0
  220. package/components/ui/nuraly-ui/src/components/canvas/canvas.component.ts +306 -0
  221. package/components/ui/nuraly-ui/src/components/canvas/demo/canvas-demo.ts +18 -0
  222. package/components/ui/nuraly-ui/src/components/canvas/index.ts +1 -0
  223. package/components/ui/nuraly-ui/src/components/canvas/react.ts +13 -0
  224. package/components/ui/nuraly-ui/src/components/card/card.component.ts +50 -0
  225. package/components/ui/nuraly-ui/src/components/card/card.stories.ts +360 -0
  226. package/components/ui/nuraly-ui/src/components/card/card.style.ts +62 -0
  227. package/components/ui/nuraly-ui/src/components/card/card.types.ts +17 -0
  228. package/components/ui/nuraly-ui/src/components/card/index.ts +2 -0
  229. package/components/ui/nuraly-ui/src/components/card/react.ts +12 -0
  230. package/components/ui/nuraly-ui/src/components/carousel/carousel.component.ts +116 -0
  231. package/components/ui/nuraly-ui/src/components/carousel/carousel.style.ts +69 -0
  232. package/components/ui/nuraly-ui/src/components/carousel/demo/carousel-demo.ts +59 -0
  233. package/components/ui/nuraly-ui/src/components/carousel/index.ts +1 -0
  234. package/components/ui/nuraly-ui/src/components/carousel/react.ts +12 -0
  235. package/components/ui/nuraly-ui/src/components/chatbot/README.md +527 -0
  236. package/components/ui/nuraly-ui/src/components/chatbot/chatbot.component.ts +730 -0
  237. package/components/ui/nuraly-ui/src/components/chatbot/chatbot.stories.ts +2549 -0
  238. package/components/ui/nuraly-ui/src/components/chatbot/chatbot.style.ts +1272 -0
  239. package/components/ui/nuraly-ui/src/components/chatbot/chatbot.types.ts +269 -0
  240. package/components/ui/nuraly-ui/src/components/chatbot/controllers/index.ts +9 -0
  241. package/components/ui/nuraly-ui/src/components/chatbot/controllers/scroll.controller.ts +59 -0
  242. package/components/ui/nuraly-ui/src/components/chatbot/core/README.md +550 -0
  243. package/components/ui/nuraly-ui/src/components/chatbot/core/chatbot-core.controller.ts +918 -0
  244. package/components/ui/nuraly-ui/src/components/chatbot/core/event-bus.ts +104 -0
  245. package/components/ui/nuraly-ui/src/components/chatbot/core/handlers/file-handler.ts +79 -0
  246. package/components/ui/nuraly-ui/src/components/chatbot/core/handlers/index.ts +12 -0
  247. package/components/ui/nuraly-ui/src/components/chatbot/core/handlers/message-handler.ts +117 -0
  248. package/components/ui/nuraly-ui/src/components/chatbot/core/handlers/module-handler.ts +49 -0
  249. package/components/ui/nuraly-ui/src/components/chatbot/core/handlers/state-handler.ts +152 -0
  250. package/components/ui/nuraly-ui/src/components/chatbot/core/handlers/suggestion-handler.ts +38 -0
  251. package/components/ui/nuraly-ui/src/components/chatbot/core/handlers/thread-handler.ts +153 -0
  252. package/components/ui/nuraly-ui/src/components/chatbot/core/index.ts +47 -0
  253. package/components/ui/nuraly-ui/src/components/chatbot/core/services/index.ts +11 -0
  254. package/components/ui/nuraly-ui/src/components/chatbot/core/services/localization.service.ts +20 -0
  255. package/components/ui/nuraly-ui/src/components/chatbot/core/services/plugin.service.ts +103 -0
  256. package/components/ui/nuraly-ui/src/components/chatbot/core/services/provider.service.ts +342 -0
  257. package/components/ui/nuraly-ui/src/components/chatbot/core/services/storage.service.ts +122 -0
  258. package/components/ui/nuraly-ui/src/components/chatbot/core/services/validation.service.ts +107 -0
  259. package/components/ui/nuraly-ui/src/components/chatbot/core/types.ts +456 -0
  260. package/components/ui/nuraly-ui/src/components/chatbot/file-upload-validation.stories.ts +278 -0
  261. package/components/ui/nuraly-ui/src/components/chatbot/index.ts +27 -0
  262. package/components/ui/nuraly-ui/src/components/chatbot/locales/generated/ar.ts +19 -0
  263. package/components/ui/nuraly-ui/src/components/chatbot/locales/generated/fr.ts +19 -0
  264. package/components/ui/nuraly-ui/src/components/chatbot/locales/locale-codes.ts +25 -0
  265. package/components/ui/nuraly-ui/src/components/chatbot/plugins/analytics-plugin.ts +63 -0
  266. package/components/ui/nuraly-ui/src/components/chatbot/plugins/chat-plugin.ts +76 -0
  267. package/components/ui/nuraly-ui/src/components/chatbot/plugins/flight-card-plugin.ts +636 -0
  268. package/components/ui/nuraly-ui/src/components/chatbot/plugins/flight-card.stories.ts +929 -0
  269. package/components/ui/nuraly-ui/src/components/chatbot/plugins/index.ts +14 -0
  270. package/components/ui/nuraly-ui/src/components/chatbot/plugins/markdown-plugin.stories.ts +155 -0
  271. package/components/ui/nuraly-ui/src/components/chatbot/plugins/markdown-plugin.ts +103 -0
  272. package/components/ui/nuraly-ui/src/components/chatbot/plugins/persistence-plugin.ts +97 -0
  273. package/components/ui/nuraly-ui/src/components/chatbot/plugins/print-job-card-plugin.ts +537 -0
  274. package/components/ui/nuraly-ui/src/components/chatbot/plugins/print-job-card.stories.ts +649 -0
  275. package/components/ui/nuraly-ui/src/components/chatbot/providers/custom-api-provider.ts +239 -0
  276. package/components/ui/nuraly-ui/src/components/chatbot/providers/index.ts +11 -0
  277. package/components/ui/nuraly-ui/src/components/chatbot/providers/mock-provider.ts +433 -0
  278. package/components/ui/nuraly-ui/src/components/chatbot/providers/openai-provider.ts +239 -0
  279. package/components/ui/nuraly-ui/src/components/chatbot/react.ts +57 -0
  280. package/components/ui/nuraly-ui/src/components/chatbot/storage/index.ts +8 -0
  281. package/components/ui/nuraly-ui/src/components/chatbot/storage/storage-implementations.ts +167 -0
  282. package/components/ui/nuraly-ui/src/components/chatbot/templates/chatbot-main.template.ts +157 -0
  283. package/components/ui/nuraly-ui/src/components/chatbot/templates/file-preview-modal.template.ts +90 -0
  284. package/components/ui/nuraly-ui/src/components/chatbot/templates/file-upload-area.template.ts +43 -0
  285. package/components/ui/nuraly-ui/src/components/chatbot/templates/index.ts +14 -0
  286. package/components/ui/nuraly-ui/src/components/chatbot/templates/input-box.template.ts +267 -0
  287. package/components/ui/nuraly-ui/src/components/chatbot/templates/message.template.ts +240 -0
  288. package/components/ui/nuraly-ui/src/components/chatbot/templates/suggestion.template.ts +57 -0
  289. package/components/ui/nuraly-ui/src/components/chatbot/templates/thread-sidebar.template.ts +67 -0
  290. package/components/ui/nuraly-ui/src/components/chatbot/templates/url-modal.template.ts +121 -0
  291. package/components/ui/nuraly-ui/src/components/checkbox/checkbox.component.ts +173 -0
  292. package/components/ui/nuraly-ui/src/components/checkbox/checkbox.stories.ts +521 -0
  293. package/components/ui/nuraly-ui/src/components/checkbox/checkbox.style.ts +324 -0
  294. package/components/ui/nuraly-ui/src/components/checkbox/checkbox.types.ts +5 -0
  295. package/components/ui/nuraly-ui/src/components/checkbox/index.ts +1 -0
  296. package/components/ui/nuraly-ui/src/components/checkbox/mixins/checkbox-event-mixin.ts +180 -0
  297. package/components/ui/nuraly-ui/src/components/checkbox/mixins/checkbox-focus-mixin.ts +99 -0
  298. package/components/ui/nuraly-ui/src/components/checkbox/mixins/index.ts +27 -0
  299. package/components/ui/nuraly-ui/src/components/checkbox/react.ts +12 -0
  300. package/components/ui/nuraly-ui/src/components/checkbox/test/checkbox_test.ts +97 -0
  301. package/components/ui/nuraly-ui/src/components/collapse/collapse.component.ts +315 -0
  302. package/components/ui/nuraly-ui/src/components/collapse/collapse.stories.ts +738 -0
  303. package/components/ui/nuraly-ui/src/components/collapse/collapse.style.ts +236 -0
  304. package/components/ui/nuraly-ui/src/components/collapse/collapse.type.ts +95 -0
  305. package/components/ui/nuraly-ui/src/components/collapse/controllers/accordion.controller.ts +169 -0
  306. package/components/ui/nuraly-ui/src/components/collapse/controllers/animation.controller.ts +129 -0
  307. package/components/ui/nuraly-ui/src/components/collapse/controllers/base.controller.ts +114 -0
  308. package/components/ui/nuraly-ui/src/components/collapse/controllers/index.ts +15 -0
  309. package/components/ui/nuraly-ui/src/components/collapse/controllers/keyboard.controller.ts +212 -0
  310. package/components/ui/nuraly-ui/src/components/collapse/index.ts +1 -0
  311. package/components/ui/nuraly-ui/src/components/collapse/react.ts +13 -0
  312. package/components/ui/nuraly-ui/src/components/colorpicker/color-holder.component.ts +104 -0
  313. package/components/ui/nuraly-ui/src/components/colorpicker/color-holder.style.ts +46 -0
  314. package/components/ui/nuraly-ui/src/components/colorpicker/color-picker.component.ts +398 -0
  315. package/components/ui/nuraly-ui/src/components/colorpicker/color-picker.stories.ts +888 -0
  316. package/components/ui/nuraly-ui/src/components/colorpicker/color-picker.style.ts +86 -0
  317. package/components/ui/nuraly-ui/src/components/colorpicker/color-picker.types.ts +64 -0
  318. package/components/ui/nuraly-ui/src/components/colorpicker/controllers/base.controller.ts +64 -0
  319. package/components/ui/nuraly-ui/src/components/colorpicker/controllers/dropdown.controller.ts +268 -0
  320. package/components/ui/nuraly-ui/src/components/colorpicker/controllers/event.controller.ts +147 -0
  321. package/components/ui/nuraly-ui/src/components/colorpicker/controllers/index.ts +3 -0
  322. package/components/ui/nuraly-ui/src/components/colorpicker/default-color-sets.component.ts +119 -0
  323. package/components/ui/nuraly-ui/src/components/colorpicker/default-color-sets.style.ts +35 -0
  324. package/components/ui/nuraly-ui/src/components/colorpicker/index.ts +2 -0
  325. package/components/ui/nuraly-ui/src/components/colorpicker/interfaces/index.ts +67 -0
  326. package/components/ui/nuraly-ui/src/components/colorpicker/react.ts +13 -0
  327. package/components/ui/nuraly-ui/src/components/console/react.ts +12 -0
  328. package/components/ui/nuraly-ui/src/components/datepicker/README.md +60 -0
  329. package/components/ui/nuraly-ui/src/components/datepicker/controllers/calendar.controller.ts +252 -0
  330. package/components/ui/nuraly-ui/src/components/datepicker/controllers/index.ts +11 -0
  331. package/components/ui/nuraly-ui/src/components/datepicker/controllers/keyboard.controller.ts +290 -0
  332. package/components/ui/nuraly-ui/src/components/datepicker/controllers/month-year-dropdown.controller.ts +108 -0
  333. package/components/ui/nuraly-ui/src/components/datepicker/controllers/positioning.controller.ts +278 -0
  334. package/components/ui/nuraly-ui/src/components/datepicker/controllers/selection.controller.ts +303 -0
  335. package/components/ui/nuraly-ui/src/components/datepicker/datepicker.component.ts +659 -0
  336. package/components/ui/nuraly-ui/src/components/datepicker/datepicker.constant.ts +81 -0
  337. package/components/ui/nuraly-ui/src/components/datepicker/datepicker.stories.ts +461 -0
  338. package/components/ui/nuraly-ui/src/components/datepicker/datepicker.style.ts +456 -0
  339. package/components/ui/nuraly-ui/src/components/datepicker/datepicker.style.variables.ts +119 -0
  340. package/components/ui/nuraly-ui/src/components/datepicker/datepicker.types.ts +154 -0
  341. package/components/ui/nuraly-ui/src/components/datepicker/index.ts +3 -0
  342. package/components/ui/nuraly-ui/src/components/datepicker/interfaces/base-controller.interface.ts +42 -0
  343. package/components/ui/nuraly-ui/src/components/datepicker/interfaces/datepicker-controllers.interface.ts +128 -0
  344. package/components/ui/nuraly-ui/src/components/datepicker/interfaces/index.ts +15 -0
  345. package/components/ui/nuraly-ui/src/components/datepicker/react.ts +24 -0
  346. package/components/ui/nuraly-ui/src/components/datepicker/templates/days.template.ts +57 -0
  347. package/components/ui/nuraly-ui/src/components/datepicker/templates/dropdown.template.ts +61 -0
  348. package/components/ui/nuraly-ui/src/components/datepicker/templates/headers.template.ts +7 -0
  349. package/components/ui/nuraly-ui/src/components/datepicker/templates/months.template.ts +16 -0
  350. package/components/ui/nuraly-ui/src/components/datepicker/templates/years.template.ts +18 -0
  351. package/components/ui/nuraly-ui/src/components/datepicker/test/datepicker_test.ts +124 -0
  352. package/components/ui/nuraly-ui/src/components/datepicker/utils/day.helper.ts +56 -0
  353. package/components/ui/nuraly-ui/src/components/datepicker/utils/formatter.ts +8 -0
  354. package/components/ui/nuraly-ui/src/components/datepicker/utils/index.ts +11 -0
  355. package/components/ui/nuraly-ui/src/components/datepicker/utils/locale.helper.ts +152 -0
  356. package/components/ui/nuraly-ui/src/components/datepicker/utils/month.helper.ts +26 -0
  357. package/components/ui/nuraly-ui/src/components/datepicker/utils/string.helper.ts +3 -0
  358. package/components/ui/nuraly-ui/src/components/divider/divider.component.ts +172 -0
  359. package/components/ui/nuraly-ui/src/components/divider/divider.stories.ts +271 -0
  360. package/components/ui/nuraly-ui/src/components/divider/divider.style.ts +139 -0
  361. package/components/ui/nuraly-ui/src/components/divider/divider.types.ts +59 -0
  362. package/components/ui/nuraly-ui/src/components/divider/index.ts +2 -0
  363. package/components/ui/nuraly-ui/src/components/divider/react.ts +9 -0
  364. package/components/ui/nuraly-ui/src/components/document/demo/document-demo.ts +28 -0
  365. package/components/ui/nuraly-ui/src/components/document/document.component.ts +133 -0
  366. package/components/ui/nuraly-ui/src/components/document/document.stories.ts +266 -0
  367. package/components/ui/nuraly-ui/src/components/document/document.style.ts +210 -0
  368. package/components/ui/nuraly-ui/src/components/document/document.types.ts +83 -0
  369. package/components/ui/nuraly-ui/src/components/document/index.ts +2 -0
  370. package/components/ui/nuraly-ui/src/components/document/react.ts +15 -0
  371. package/components/ui/nuraly-ui/src/components/dropdown/controllers/base.controller.ts +85 -0
  372. package/components/ui/nuraly-ui/src/components/dropdown/controllers/dropdown.controller.ts +476 -0
  373. package/components/ui/nuraly-ui/src/components/dropdown/controllers/index.ts +2 -0
  374. package/components/ui/nuraly-ui/src/components/dropdown/dropdown.component.ts +348 -0
  375. package/components/ui/nuraly-ui/src/components/dropdown/dropdown.stories.ts +1271 -0
  376. package/components/ui/nuraly-ui/src/components/dropdown/dropdown.style.ts +462 -0
  377. package/components/ui/nuraly-ui/src/components/dropdown/dropdown.types.ts +109 -0
  378. package/components/ui/nuraly-ui/src/components/dropdown/index.ts +2 -0
  379. package/components/ui/nuraly-ui/src/components/dropdown/interfaces/controller-interfaces.ts +98 -0
  380. package/components/ui/nuraly-ui/src/components/dropdown/interfaces/index.ts +1 -0
  381. package/components/ui/nuraly-ui/src/components/dropdown/react.ts +14 -0
  382. package/components/ui/nuraly-ui/src/components/dropdown/templates/nr-dropdown-item.style.ts +35 -0
  383. package/components/ui/nuraly-ui/src/components/dropdown/templates/nr-dropdown-item.ts +47 -0
  384. package/components/ui/nuraly-ui/src/components/dropdown/templates/nr-dropdown-menu.style.ts +50 -0
  385. package/components/ui/nuraly-ui/src/components/dropdown/templates/nr-dropdown-menu.ts +52 -0
  386. package/components/ui/nuraly-ui/src/components/file-upload/demo/file-upload-demo.ts +151 -0
  387. package/components/ui/nuraly-ui/src/components/file-upload/file-upload.component.ts +371 -0
  388. package/components/ui/nuraly-ui/src/components/file-upload/index.ts +1 -0
  389. package/components/ui/nuraly-ui/src/components/file-upload/react.ts +14 -0
  390. package/components/ui/nuraly-ui/src/components/file-upload/readme.md +98 -0
  391. package/components/ui/nuraly-ui/src/components/file-upload/styles.ts +284 -0
  392. package/components/ui/nuraly-ui/src/components/file-upload/types.ts +10 -0
  393. package/components/ui/nuraly-ui/src/components/file-upload/utils.ts +23 -0
  394. package/components/ui/nuraly-ui/src/components/flex/README.md +235 -0
  395. package/components/ui/nuraly-ui/src/components/flex/flex.component.ts +186 -0
  396. package/components/ui/nuraly-ui/src/components/flex/flex.stories.ts +486 -0
  397. package/components/ui/nuraly-ui/src/components/flex/flex.style.ts +101 -0
  398. package/components/ui/nuraly-ui/src/components/flex/flex.types.ts +70 -0
  399. package/components/ui/nuraly-ui/src/components/flex/index.ts +2 -0
  400. package/components/ui/nuraly-ui/src/components/flex/react.ts +9 -0
  401. package/components/ui/nuraly-ui/src/components/form/README.md +152 -0
  402. package/components/ui/nuraly-ui/src/components/form/controllers/submission.controller.ts +243 -0
  403. package/components/ui/nuraly-ui/src/components/form/controllers/validation.controller.ts +268 -0
  404. package/components/ui/nuraly-ui/src/components/form/form.component.ts +699 -0
  405. package/components/ui/nuraly-ui/src/components/form/form.stories.ts +794 -0
  406. package/components/ui/nuraly-ui/src/components/form/form.style.ts +69 -0
  407. package/components/ui/nuraly-ui/src/components/form/form.types.ts +104 -0
  408. package/components/ui/nuraly-ui/src/components/form/index.ts +15 -0
  409. package/components/ui/nuraly-ui/src/components/form/interfaces/validation.interface.ts +139 -0
  410. package/components/ui/nuraly-ui/src/components/grid/README.md +196 -0
  411. package/components/ui/nuraly-ui/src/components/grid/col.component.ts +262 -0
  412. package/components/ui/nuraly-ui/src/components/grid/col.style.ts +117 -0
  413. package/components/ui/nuraly-ui/src/components/grid/grid.stories.ts +442 -0
  414. package/components/ui/nuraly-ui/src/components/grid/grid.types.ts +89 -0
  415. package/components/ui/nuraly-ui/src/components/grid/index.ts +3 -0
  416. package/components/ui/nuraly-ui/src/components/grid/react.ts +16 -0
  417. package/components/ui/nuraly-ui/src/components/grid/row.component.ts +203 -0
  418. package/components/ui/nuraly-ui/src/components/grid/row.style.ts +68 -0
  419. package/components/ui/nuraly-ui/src/components/icon/icon.component.ts +219 -0
  420. package/components/ui/nuraly-ui/src/components/icon/icon.stories.ts +160 -0
  421. package/components/ui/nuraly-ui/src/components/icon/icon.style.ts +214 -0
  422. package/components/ui/nuraly-ui/src/components/icon/icon.types.ts +4 -0
  423. package/components/ui/nuraly-ui/src/components/icon/icon.variables.ts +132 -0
  424. package/components/ui/nuraly-ui/src/components/icon/index.ts +1 -0
  425. package/components/ui/nuraly-ui/src/components/icon/mixins/clickable-mixin.ts +154 -0
  426. package/components/ui/nuraly-ui/src/components/icon/mixins/index.ts +7 -0
  427. package/components/ui/nuraly-ui/src/components/icon/react.ts +8 -0
  428. package/components/ui/nuraly-ui/src/components/iconpicker/README.md +106 -0
  429. package/components/ui/nuraly-ui/src/components/iconpicker/controllers/event.controller.ts +94 -0
  430. package/components/ui/nuraly-ui/src/components/iconpicker/controllers/index.ts +9 -0
  431. package/components/ui/nuraly-ui/src/components/iconpicker/controllers/search.controller.ts +76 -0
  432. package/components/ui/nuraly-ui/src/components/iconpicker/controllers/selection.controller.ts +50 -0
  433. package/components/ui/nuraly-ui/src/components/iconpicker/icon-picker.component.ts +324 -0
  434. package/components/ui/nuraly-ui/src/components/iconpicker/icon-picker.constant.ts +33 -0
  435. package/components/ui/nuraly-ui/src/components/iconpicker/icon-picker.stories.ts +255 -0
  436. package/components/ui/nuraly-ui/src/components/iconpicker/icon-picker.style.ts +217 -0
  437. package/components/ui/nuraly-ui/src/components/iconpicker/icon-picker.types.ts +56 -0
  438. package/components/ui/nuraly-ui/src/components/iconpicker/index.ts +9 -0
  439. package/components/ui/nuraly-ui/src/components/iconpicker/interfaces/icon-picker.interface.ts +14 -0
  440. package/components/ui/nuraly-ui/src/components/iconpicker/interfaces/index.ts +7 -0
  441. package/components/ui/nuraly-ui/src/components/iconpicker/react.ts +22 -0
  442. package/components/ui/nuraly-ui/src/components/iconpicker/utils/icon-filter.utils.ts +119 -0
  443. package/components/ui/nuraly-ui/src/components/iconpicker/utils/icon-loader.utils.ts +129 -0
  444. package/components/ui/nuraly-ui/src/components/iconpicker/utils/index.ts +8 -0
  445. package/components/ui/nuraly-ui/src/components/iconpicker/utils/lucide-icons.ts +1624 -0
  446. package/components/ui/nuraly-ui/src/components/image/image.component.ts +136 -0
  447. package/components/ui/nuraly-ui/src/components/image/image.stories.ts +236 -0
  448. package/components/ui/nuraly-ui/src/components/image/image.style.ts +83 -0
  449. package/components/ui/nuraly-ui/src/components/image/image.types.ts +83 -0
  450. package/components/ui/nuraly-ui/src/components/image/index.ts +2 -0
  451. package/components/ui/nuraly-ui/src/components/image/react.ts +15 -0
  452. package/components/ui/nuraly-ui/src/components/input/README.md +432 -0
  453. package/components/ui/nuraly-ui/src/components/input/controllers/base.controller.ts +114 -0
  454. package/components/ui/nuraly-ui/src/components/input/controllers/event.controller.ts +421 -0
  455. package/components/ui/nuraly-ui/src/components/input/controllers/index.ts +32 -0
  456. package/components/ui/nuraly-ui/src/components/input/controllers/state.controller.ts +313 -0
  457. package/components/ui/nuraly-ui/src/components/input/controllers/validation.controller.ts +806 -0
  458. package/components/ui/nuraly-ui/src/components/input/index.ts +2 -0
  459. package/components/ui/nuraly-ui/src/components/input/input.component.ts +557 -0
  460. package/components/ui/nuraly-ui/src/components/input/input.stories.ts +1759 -0
  461. package/components/ui/nuraly-ui/src/components/input/input.style.ts +812 -0
  462. package/components/ui/nuraly-ui/src/components/input/input.types.ts +195 -0
  463. package/components/ui/nuraly-ui/src/components/input/mixins/focus-mixin.ts +112 -0
  464. package/components/ui/nuraly-ui/src/components/input/mixins/index.ts +14 -0
  465. package/components/ui/nuraly-ui/src/components/input/mixins/number-mixin.ts +167 -0
  466. package/components/ui/nuraly-ui/src/components/input/mixins/selection-mixin.ts +125 -0
  467. package/components/ui/nuraly-ui/src/components/input/react.ts +15 -0
  468. package/components/ui/nuraly-ui/src/components/input/test/nr-input_test.ts +163 -0
  469. package/components/ui/nuraly-ui/src/components/input/utils/index.ts +8 -0
  470. package/components/ui/nuraly-ui/src/components/input/utils/input-renderers.ts +217 -0
  471. package/components/ui/nuraly-ui/src/components/input/utils/input-validation.utils.ts +133 -0
  472. package/components/ui/nuraly-ui/src/components/input/validation.ts +3 -0
  473. package/components/ui/nuraly-ui/src/components/label/index.ts +1 -0
  474. package/components/ui/nuraly-ui/src/components/label/label.component.ts +52 -0
  475. package/components/ui/nuraly-ui/src/components/label/label.stories.ts +311 -0
  476. package/components/ui/nuraly-ui/src/components/label/label.style.ts +70 -0
  477. package/components/ui/nuraly-ui/src/components/label/label.style.variables.ts +35 -0
  478. package/components/ui/nuraly-ui/src/components/label/label.types.ts +48 -0
  479. package/components/ui/nuraly-ui/src/components/label/react.ts +11 -0
  480. package/components/ui/nuraly-ui/src/components/layout/README.md +200 -0
  481. package/components/ui/nuraly-ui/src/components/layout/content.component.ts +45 -0
  482. package/components/ui/nuraly-ui/src/components/layout/content.style.ts +17 -0
  483. package/components/ui/nuraly-ui/src/components/layout/footer.component.ts +54 -0
  484. package/components/ui/nuraly-ui/src/components/layout/footer.style.ts +17 -0
  485. package/components/ui/nuraly-ui/src/components/layout/header.component.ts +55 -0
  486. package/components/ui/nuraly-ui/src/components/layout/header.style.ts +19 -0
  487. package/components/ui/nuraly-ui/src/components/layout/index.ts +18 -0
  488. package/components/ui/nuraly-ui/src/components/layout/layout.component.ts +87 -0
  489. package/components/ui/nuraly-ui/src/components/layout/layout.stories.ts +616 -0
  490. package/components/ui/nuraly-ui/src/components/layout/layout.style.ts +23 -0
  491. package/components/ui/nuraly-ui/src/components/layout/layout.types.ts +90 -0
  492. package/components/ui/nuraly-ui/src/components/layout/react.ts +41 -0
  493. package/components/ui/nuraly-ui/src/components/layout/sider.component.ts +294 -0
  494. package/components/ui/nuraly-ui/src/components/layout/sider.style.ts +104 -0
  495. package/components/ui/nuraly-ui/src/components/menu/README.md +390 -0
  496. package/components/ui/nuraly-ui/src/components/menu/controllers/accessibility.controller.ts +257 -0
  497. package/components/ui/nuraly-ui/src/components/menu/controllers/base.controller.ts +123 -0
  498. package/components/ui/nuraly-ui/src/components/menu/controllers/index.ts +10 -0
  499. package/components/ui/nuraly-ui/src/components/menu/controllers/keyboard.controller.ts +360 -0
  500. package/components/ui/nuraly-ui/src/components/menu/controllers/state.controller.ts +268 -0
  501. package/components/ui/nuraly-ui/src/components/menu/index.ts +3 -0
  502. package/components/ui/nuraly-ui/src/components/menu/interfaces/controller.interface.ts +56 -0
  503. package/components/ui/nuraly-ui/src/components/menu/interfaces/index.ts +7 -0
  504. package/components/ui/nuraly-ui/src/components/menu/menu.component.ts +341 -0
  505. package/components/ui/nuraly-ui/src/components/menu/menu.constants.ts +12 -0
  506. package/components/ui/nuraly-ui/src/components/menu/menu.stories.ts +807 -0
  507. package/components/ui/nuraly-ui/src/components/menu/menu.style.ts +358 -0
  508. package/components/ui/nuraly-ui/src/components/menu/menu.types.ts +60 -0
  509. package/components/ui/nuraly-ui/src/components/menu/react.ts +11 -0
  510. package/components/ui/nuraly-ui/src/components/modal/controllers/index.ts +8 -0
  511. package/components/ui/nuraly-ui/src/components/modal/controllers/modal-drag-controller.ts +139 -0
  512. package/components/ui/nuraly-ui/src/components/modal/controllers/modal-keyboard-controller.ts +152 -0
  513. package/components/ui/nuraly-ui/src/components/modal/index.ts +10 -0
  514. package/components/ui/nuraly-ui/src/components/modal/modal-manager.ts +209 -0
  515. package/components/ui/nuraly-ui/src/components/modal/modal.component.ts +475 -0
  516. package/components/ui/nuraly-ui/src/components/modal/modal.stories.ts +823 -0
  517. package/components/ui/nuraly-ui/src/components/modal/modal.style.ts +369 -0
  518. package/components/ui/nuraly-ui/src/components/modal/modal.types.ts +148 -0
  519. package/components/ui/nuraly-ui/src/components/modal/react.ts +16 -0
  520. package/components/ui/nuraly-ui/src/components/panel/README.md +218 -0
  521. package/components/ui/nuraly-ui/src/components/panel/controllers/index.ts +8 -0
  522. package/components/ui/nuraly-ui/src/components/panel/controllers/panel-drag-controller.ts +151 -0
  523. package/components/ui/nuraly-ui/src/components/panel/controllers/panel-resize-controller.ts +153 -0
  524. package/components/ui/nuraly-ui/src/components/panel/index.ts +9 -0
  525. package/components/ui/nuraly-ui/src/components/panel/panel.component.ts +760 -0
  526. package/components/ui/nuraly-ui/src/components/panel/panel.stories.ts +978 -0
  527. package/components/ui/nuraly-ui/src/components/panel/panel.style.ts +499 -0
  528. package/components/ui/nuraly-ui/src/components/panel/panel.types.ts +89 -0
  529. package/components/ui/nuraly-ui/src/components/panel/react.ts +18 -0
  530. package/components/ui/nuraly-ui/src/components/popconfirm/README.md +403 -0
  531. package/components/ui/nuraly-ui/src/components/popconfirm/index.ts +2 -0
  532. package/components/ui/nuraly-ui/src/components/popconfirm/popconfirm.component.ts +336 -0
  533. package/components/ui/nuraly-ui/src/components/popconfirm/popconfirm.stories.ts +491 -0
  534. package/components/ui/nuraly-ui/src/components/popconfirm/popconfirm.style.ts +207 -0
  535. package/components/ui/nuraly-ui/src/components/popconfirm/popconfirm.types.ts +66 -0
  536. package/components/ui/nuraly-ui/src/components/popconfirm/react.ts +14 -0
  537. package/components/ui/nuraly-ui/src/components/radio/README.md +95 -0
  538. package/components/ui/nuraly-ui/src/components/radio/index.ts +2 -0
  539. package/components/ui/nuraly-ui/src/components/radio/radio.component.ts +186 -0
  540. package/components/ui/nuraly-ui/src/components/radio/radio.stories.ts +317 -0
  541. package/components/ui/nuraly-ui/src/components/radio/radio.style.ts +150 -0
  542. package/components/ui/nuraly-ui/src/components/radio/radio.types.ts +14 -0
  543. package/components/ui/nuraly-ui/src/components/radio/react.ts +20 -0
  544. package/components/ui/nuraly-ui/src/components/radio-group/controllers/focus.controller.ts +251 -0
  545. package/components/ui/nuraly-ui/src/components/radio-group/controllers/group.controller.ts +198 -0
  546. package/components/ui/nuraly-ui/src/components/radio-group/controllers/index.ts +11 -0
  547. package/components/ui/nuraly-ui/src/components/radio-group/controllers/keyboard.controller.ts +122 -0
  548. package/components/ui/nuraly-ui/src/components/radio-group/controllers/ripple.controller.ts +248 -0
  549. package/components/ui/nuraly-ui/src/components/radio-group/controllers/validation.controller.ts +189 -0
  550. package/components/ui/nuraly-ui/src/components/radio-group/index.ts +2 -0
  551. package/components/ui/nuraly-ui/src/components/radio-group/interfaces/base-controller.interface.ts +87 -0
  552. package/components/ui/nuraly-ui/src/components/radio-group/interfaces/focus-controller.interface.ts +45 -0
  553. package/components/ui/nuraly-ui/src/components/radio-group/interfaces/index.ts +14 -0
  554. package/components/ui/nuraly-ui/src/components/radio-group/interfaces/ripple-controller.interface.ts +35 -0
  555. package/components/ui/nuraly-ui/src/components/radio-group/interfaces/selection-controller.interface.ts +51 -0
  556. package/components/ui/nuraly-ui/src/components/radio-group/interfaces/validation-controller.interface.ts +53 -0
  557. package/components/ui/nuraly-ui/src/components/radio-group/radio-group.component.ts +426 -0
  558. package/components/ui/nuraly-ui/src/components/radio-group/radio-group.stories.ts +1334 -0
  559. package/components/ui/nuraly-ui/src/components/radio-group/radio-group.style.ts +248 -0
  560. package/components/ui/nuraly-ui/src/components/radio-group/radio-group.types.ts +43 -0
  561. package/components/ui/nuraly-ui/src/components/radio-group/radio.constant.ts +1 -0
  562. package/components/ui/nuraly-ui/src/components/radio-group/react.ts +18 -0
  563. package/components/ui/nuraly-ui/src/components/radio-group/test/radio_test.ts +87 -0
  564. package/components/ui/nuraly-ui/src/components/select/README.md +316 -0
  565. package/components/ui/nuraly-ui/src/components/select/controllers/base.controller.ts +93 -0
  566. package/components/ui/nuraly-ui/src/components/select/controllers/dropdown.controller.ts +415 -0
  567. package/components/ui/nuraly-ui/src/components/select/controllers/event.controller.ts +118 -0
  568. package/components/ui/nuraly-ui/src/components/select/controllers/focus.controller.ts +255 -0
  569. package/components/ui/nuraly-ui/src/components/select/controllers/index.ts +8 -0
  570. package/components/ui/nuraly-ui/src/components/select/controllers/keyboard.controller.ts +407 -0
  571. package/components/ui/nuraly-ui/src/components/select/controllers/search.controller.ts +187 -0
  572. package/components/ui/nuraly-ui/src/components/select/controllers/selection.controller.ts +238 -0
  573. package/components/ui/nuraly-ui/src/components/select/controllers/validation.controller.ts +236 -0
  574. package/components/ui/nuraly-ui/src/components/select/index.ts +36 -0
  575. package/components/ui/nuraly-ui/src/components/select/interfaces/base-controller.interface.ts +155 -0
  576. package/components/ui/nuraly-ui/src/components/select/interfaces/controller-interfaces.ts +105 -0
  577. package/components/ui/nuraly-ui/src/components/select/interfaces/index.ts +2 -0
  578. package/components/ui/nuraly-ui/src/components/select/react.ts +30 -0
  579. package/components/ui/nuraly-ui/src/components/select/select.component.ts +804 -0
  580. package/components/ui/nuraly-ui/src/components/select/select.constant.ts +142 -0
  581. package/components/ui/nuraly-ui/src/components/select/select.stories.ts +1653 -0
  582. package/components/ui/nuraly-ui/src/components/select/select.style.ts +593 -0
  583. package/components/ui/nuraly-ui/src/components/select/select.types.ts +120 -0
  584. package/components/ui/nuraly-ui/src/components/skeleton/README.md +373 -0
  585. package/components/ui/nuraly-ui/src/components/skeleton/index.ts +2 -0
  586. package/components/ui/nuraly-ui/src/components/skeleton/react.ts +10 -0
  587. package/components/ui/nuraly-ui/src/components/skeleton/skeleton.component.ts +385 -0
  588. package/components/ui/nuraly-ui/src/components/skeleton/skeleton.stories.ts +425 -0
  589. package/components/ui/nuraly-ui/src/components/skeleton/skeleton.style.ts +224 -0
  590. package/components/ui/nuraly-ui/src/components/skeleton/skeleton.types.ts +90 -0
  591. package/components/ui/nuraly-ui/src/components/slider-input/README.md +145 -0
  592. package/components/ui/nuraly-ui/src/components/slider-input/index.ts +2 -0
  593. package/components/ui/nuraly-ui/src/components/slider-input/react.ts +12 -0
  594. package/components/ui/nuraly-ui/src/components/slider-input/slider-input.component.ts +184 -0
  595. package/components/ui/nuraly-ui/src/components/slider-input/slider-input.stories.ts +361 -0
  596. package/components/ui/nuraly-ui/src/components/slider-input/slider-input.style.ts +171 -0
  597. package/components/ui/nuraly-ui/src/components/slider-input/slider-input.style.variables.ts +59 -0
  598. package/components/ui/nuraly-ui/src/components/slider-input/slider-input.types.ts +24 -0
  599. package/components/ui/nuraly-ui/src/components/slider-input/utils/debounce.ts +7 -0
  600. package/components/ui/nuraly-ui/src/components/slider-input/utils/index.ts +1 -0
  601. package/components/ui/nuraly-ui/src/components/table/controllers/base.controller.ts +99 -0
  602. package/components/ui/nuraly-ui/src/components/table/controllers/filter.controller.ts +163 -0
  603. package/components/ui/nuraly-ui/src/components/table/controllers/index.ts +11 -0
  604. package/components/ui/nuraly-ui/src/components/table/controllers/pagination.controller.ts +83 -0
  605. package/components/ui/nuraly-ui/src/components/table/controllers/selection.controller.ts +143 -0
  606. package/components/ui/nuraly-ui/src/components/table/controllers/sort.controller.ts +115 -0
  607. package/components/ui/nuraly-ui/src/components/table/index.ts +1 -0
  608. package/components/ui/nuraly-ui/src/components/table/interfaces/index.ts +7 -0
  609. package/components/ui/nuraly-ui/src/components/table/interfaces/table-host.interface.ts +53 -0
  610. package/components/ui/nuraly-ui/src/components/table/react.ts +14 -0
  611. package/components/ui/nuraly-ui/src/components/table/table.component.ts +344 -0
  612. package/components/ui/nuraly-ui/src/components/table/table.stories.ts +1072 -0
  613. package/components/ui/nuraly-ui/src/components/table/table.style.ts +689 -0
  614. package/components/ui/nuraly-ui/src/components/table/table.types.ts +91 -0
  615. package/components/ui/nuraly-ui/src/components/table/templates/actions.template.ts +22 -0
  616. package/components/ui/nuraly-ui/src/components/table/templates/column-filter.template.ts +88 -0
  617. package/components/ui/nuraly-ui/src/components/table/templates/content.template.ts +257 -0
  618. package/components/ui/nuraly-ui/src/components/table/templates/empty.template.ts +49 -0
  619. package/components/ui/nuraly-ui/src/components/table/templates/filter.template.ts +35 -0
  620. package/components/ui/nuraly-ui/src/components/table/templates/index.ts +7 -0
  621. package/components/ui/nuraly-ui/src/components/table/templates/loading.template.ts +56 -0
  622. package/components/ui/nuraly-ui/src/components/table/templates/pagination.template.ts +70 -0
  623. package/components/ui/nuraly-ui/src/components/tabs/controllers/base.controller.ts +136 -0
  624. package/components/ui/nuraly-ui/src/components/tabs/controllers/dragdrop.controller.ts +251 -0
  625. package/components/ui/nuraly-ui/src/components/tabs/controllers/editable.controller.ts +292 -0
  626. package/components/ui/nuraly-ui/src/components/tabs/controllers/event.controller.ts +294 -0
  627. package/components/ui/nuraly-ui/src/components/tabs/controllers/index.ts +42 -0
  628. package/components/ui/nuraly-ui/src/components/tabs/controllers/keyboard.controller.ts +276 -0
  629. package/components/ui/nuraly-ui/src/components/tabs/controllers/popout.controller.ts +516 -0
  630. package/components/ui/nuraly-ui/src/components/tabs/index.ts +11 -0
  631. package/components/ui/nuraly-ui/src/components/tabs/react.ts +52 -0
  632. package/components/ui/nuraly-ui/src/components/tabs/tabs.component.ts +499 -0
  633. package/components/ui/nuraly-ui/src/components/tabs/tabs.constant.ts +30 -0
  634. package/components/ui/nuraly-ui/src/components/tabs/tabs.stories.ts +1334 -0
  635. package/components/ui/nuraly-ui/src/components/tabs/tabs.style.ts +569 -0
  636. package/components/ui/nuraly-ui/src/components/tabs/tabs.types.ts +261 -0
  637. package/components/ui/nuraly-ui/src/components/tag/README.md +22 -0
  638. package/components/ui/nuraly-ui/src/components/tag/index.ts +1 -0
  639. package/components/ui/nuraly-ui/src/components/tag/react.ts +13 -0
  640. package/components/ui/nuraly-ui/src/components/tag/tag.component.ts +167 -0
  641. package/components/ui/nuraly-ui/src/components/tag/tag.stories.ts +50 -0
  642. package/components/ui/nuraly-ui/src/components/tag/tag.style.ts +89 -0
  643. package/components/ui/nuraly-ui/src/components/tag/tag.types.ts +30 -0
  644. package/components/ui/nuraly-ui/src/components/textarea/README.md +314 -0
  645. package/components/ui/nuraly-ui/src/components/textarea/controllers/base.controller.ts +142 -0
  646. package/components/ui/nuraly-ui/src/components/textarea/controllers/event.controller.ts +484 -0
  647. package/components/ui/nuraly-ui/src/components/textarea/controllers/index.ts +16 -0
  648. package/components/ui/nuraly-ui/src/components/textarea/controllers/validation.controller.ts +347 -0
  649. package/components/ui/nuraly-ui/src/components/textarea/index.ts +19 -0
  650. package/components/ui/nuraly-ui/src/components/textarea/react.ts +16 -0
  651. package/components/ui/nuraly-ui/src/components/textarea/textarea.component.ts +716 -0
  652. package/components/ui/nuraly-ui/src/components/textarea/textarea.stories.ts +453 -0
  653. package/components/ui/nuraly-ui/src/components/textarea/textarea.style.ts +387 -0
  654. package/components/ui/nuraly-ui/src/components/textarea/textarea.types.ts +113 -0
  655. package/components/ui/nuraly-ui/src/components/timeline/README.md +340 -0
  656. package/components/ui/nuraly-ui/src/components/timeline/index.ts +1 -0
  657. package/components/ui/nuraly-ui/src/components/timeline/react.ts +9 -0
  658. package/components/ui/nuraly-ui/src/components/timeline/timeline.component.ts +235 -0
  659. package/components/ui/nuraly-ui/src/components/timeline/timeline.stories.ts +313 -0
  660. package/components/ui/nuraly-ui/src/components/timeline/timeline.style.ts +235 -0
  661. package/components/ui/nuraly-ui/src/components/timeline/timeline.types.ts +75 -0
  662. package/components/ui/nuraly-ui/src/components/timepicker/README.md +238 -0
  663. package/components/ui/nuraly-ui/src/components/timepicker/controllers/formatting.controller.ts +230 -0
  664. package/components/ui/nuraly-ui/src/components/timepicker/controllers/index.ts +9 -0
  665. package/components/ui/nuraly-ui/src/components/timepicker/controllers/selection.controller.ts +213 -0
  666. package/components/ui/nuraly-ui/src/components/timepicker/controllers/validation.controller.ts +240 -0
  667. package/components/ui/nuraly-ui/src/components/timepicker/index.ts +12 -0
  668. package/components/ui/nuraly-ui/src/components/timepicker/interfaces/timepicker.interface.ts +122 -0
  669. package/components/ui/nuraly-ui/src/components/timepicker/test/timepicker.test.ts +249 -0
  670. package/components/ui/nuraly-ui/src/components/timepicker/timepicker.component.ts +786 -0
  671. package/components/ui/nuraly-ui/src/components/timepicker/timepicker.constants.ts +94 -0
  672. package/components/ui/nuraly-ui/src/components/timepicker/timepicker.stories.ts +643 -0
  673. package/components/ui/nuraly-ui/src/components/timepicker/timepicker.style.ts +569 -0
  674. package/components/ui/nuraly-ui/src/components/timepicker/timepicker.style.variables.ts +122 -0
  675. package/components/ui/nuraly-ui/src/components/timepicker/timepicker.types.ts +183 -0
  676. package/components/ui/nuraly-ui/src/components/timepicker/utils/time.utils.ts +288 -0
  677. package/components/ui/nuraly-ui/src/components/toast/README.md +535 -0
  678. package/components/ui/nuraly-ui/src/components/toast/controllers/base.controller.ts +105 -0
  679. package/components/ui/nuraly-ui/src/components/toast/controllers/index.ts +8 -0
  680. package/components/ui/nuraly-ui/src/components/toast/index.ts +10 -0
  681. package/components/ui/nuraly-ui/src/components/toast/react.ts +19 -0
  682. package/components/ui/nuraly-ui/src/components/toast/toast.component.ts +394 -0
  683. package/components/ui/nuraly-ui/src/components/toast/toast.stories.ts +895 -0
  684. package/components/ui/nuraly-ui/src/components/toast/toast.style.ts +339 -0
  685. package/components/ui/nuraly-ui/src/components/toast/toast.types.ts +155 -0
  686. package/components/ui/nuraly-ui/src/components/tooltips/demo/tooltips-demo.ts +128 -0
  687. package/components/ui/nuraly-ui/src/components/tooltips/index.ts +1 -0
  688. package/components/ui/nuraly-ui/src/components/tooltips/react.ts +0 -0
  689. package/components/ui/nuraly-ui/src/components/tooltips/test/tooltips_test.ts +175 -0
  690. package/components/ui/nuraly-ui/src/components/tooltips/tooltips.component.ts +282 -0
  691. package/components/ui/nuraly-ui/src/components/tooltips/tooltips.constant.ts +15 -0
  692. package/components/ui/nuraly-ui/src/components/tooltips/tooltips.style.ts +103 -0
  693. package/components/ui/nuraly-ui/src/components/tooltips/tooltips.variables.ts +14 -0
  694. package/components/ui/nuraly-ui/src/components/video/index.ts +2 -0
  695. package/components/ui/nuraly-ui/src/components/video/react.ts +17 -0
  696. package/components/ui/nuraly-ui/src/components/video/video.component.ts +179 -0
  697. package/components/ui/nuraly-ui/src/components/video/video.stories.ts +289 -0
  698. package/components/ui/nuraly-ui/src/components/video/video.style.ts +124 -0
  699. package/components/ui/nuraly-ui/src/components/video/video.types.ts +102 -0
  700. package/components/ui/nuraly-ui/src/helpers/ThemeHandler.ts +68 -0
  701. package/components/ui/nuraly-ui/src/helpers/test.ts +8 -0
  702. package/components/ui/nuraly-ui/src/introduction.stories.ts +161 -0
  703. package/components/ui/nuraly-ui/src/shared/README.md +87 -0
  704. package/components/ui/nuraly-ui/src/shared/base-mixin.ts +48 -0
  705. package/components/ui/nuraly-ui/src/shared/constants.ts +0 -0
  706. package/components/ui/nuraly-ui/src/shared/controllers/dropdown.controller.ts +393 -0
  707. package/components/ui/nuraly-ui/src/shared/controllers/dropdown.interface.ts +39 -0
  708. package/components/ui/nuraly-ui/src/shared/controllers/index.ts +3 -0
  709. package/components/ui/nuraly-ui/src/shared/controllers/theme.controller.ts +158 -0
  710. package/components/ui/nuraly-ui/src/shared/dependency-mixin.ts +174 -0
  711. package/components/ui/nuraly-ui/src/shared/event-handler-mixin.ts +190 -0
  712. package/components/ui/nuraly-ui/src/shared/index.ts +20 -0
  713. package/components/ui/nuraly-ui/src/shared/theme-mixin.ts +227 -0
  714. package/components/ui/nuraly-ui/src/shared/themes/README.md +135 -0
  715. package/components/ui/nuraly-ui/src/shared/themes/editor/README.md +202 -0
  716. package/components/ui/nuraly-ui/src/shared/themes/editor.stories.ts +366 -0
  717. package/components/ui/nuraly-ui/src/shared/themes/index.ts +132 -0
  718. package/components/ui/nuraly-ui/src/shared/utils.ts +94 -0
  719. package/components/ui/nuraly-ui/src/shared/validation.types.ts +118 -0
  720. package/components/ui/nuraly-ui/tools/bump-versions.js +83 -0
  721. package/components/ui/nuraly-ui/web-dev-server.config.js +25 -0
  722. package/components/ui/nuraly-ui/web-test-runner.config.js +124 -0
  723. package/dist/CodeEditor-Ch2tv9BE.js +106211 -0
  724. package/dist/SmartAttributeHandler-hoSLpm1Y.js +153 -0
  725. package/dist/abap-B2diVmjb.js +1314 -0
  726. package/dist/apex-3NuJ-nsI.js +315 -0
  727. package/dist/assets/editor.worker-vBWydyGC.js +11 -0
  728. package/dist/assets/html.worker-BSmGlhXp.js +458 -0
  729. package/dist/assets/json.worker-Dqnoedz4.js +42 -0
  730. package/dist/assets/ts.worker-DyHHPhrh.js +37021 -0
  731. package/dist/azcli-XGXuUsMB.js +74 -0
  732. package/dist/bat-B8Vhm634.js +95 -0
  733. package/dist/bicep-Cc8X5S_k.js +108 -0
  734. package/dist/cameligo-Bo3wBh9T.js +168 -0
  735. package/dist/clojure-CPoQlpIK.js +754 -0
  736. package/dist/coffee-BxvTGz39.js +228 -0
  737. package/dist/cpp-5RpEV7vC.js +390 -0
  738. package/dist/csharp-slXXP3fo.js +320 -0
  739. package/dist/csp-B98p6-gH.js +57 -0
  740. package/dist/css-BDsDSAin.js +186 -0
  741. package/dist/cssMode-Bt2uK8XM.js +1446 -0
  742. package/dist/cypher-Dc4IMouD.js +262 -0
  743. package/dist/dart-LhvE3yD2.js +270 -0
  744. package/dist/dockerfile-CwzplJeZ.js +132 -0
  745. package/dist/ecl-DxW3FiJi.js +454 -0
  746. package/dist/elixir-BI40g7TU.js +489 -0
  747. package/dist/flow9-tR2v0bGz.js +141 -0
  748. package/dist/freemarker2-DNc2IxPf.js +643 -0
  749. package/dist/fsharp-BLAma0OT.js +210 -0
  750. package/dist/go-nYcD3y4Z.js +208 -0
  751. package/dist/graphql-Dp1cHWmP.js +141 -0
  752. package/dist/handlebars-CIbFckEw.js +391 -0
  753. package/dist/hcl-6NT8Kbna.js +177 -0
  754. package/dist/html-nRs_fneU.js +281 -0
  755. package/dist/htmlMode-BjehA1YF.js +1456 -0
  756. package/dist/ini-BZCOLrEc.js +68 -0
  757. package/dist/java-DAMcfJbX.js +221 -0
  758. package/dist/javascript-Bn0HduZA.js +75 -0
  759. package/dist/jsonMode-CfGfcJRX.js +1866 -0
  760. package/dist/julia-CQ46G71H.js +496 -0
  761. package/dist/kotlin-CEjVo_6E.js +245 -0
  762. package/dist/less-DreV99nP.js +168 -0
  763. package/dist/lexon-DBVJhqLb.js +151 -0
  764. package/dist/liquid-m4D_LCnC.js +238 -0
  765. package/dist/lua-Dcc_j6L-.js +157 -0
  766. package/dist/m3-B9SlZL4n.js +210 -0
  767. package/dist/markdown-CuGw9_MP.js +202 -0
  768. package/dist/mdx-CakMRbCr.js +171 -0
  769. package/dist/micro-app-entry-CI1Rupdh.js +17479 -0
  770. package/dist/micro-app.bundle.js +8 -0
  771. package/dist/mips-BUWqP-OH.js +194 -0
  772. package/dist/msdax-DtkouYCg.js +377 -0
  773. package/dist/mysql-IkAsWSmF.js +876 -0
  774. package/dist/objective-c-B2-ronfg.js +188 -0
  775. package/dist/pascal-Bsnz2eJA.js +245 -0
  776. package/dist/pascaligo-D_sMUn0Q.js +158 -0
  777. package/dist/perl-BPzHt9SS.js +599 -0
  778. package/dist/pgsql-DlTJB0PD.js +847 -0
  779. package/dist/php-Dmq5OjwK.js +471 -0
  780. package/dist/pla-HJcccrBy.js +131 -0
  781. package/dist/postiats-OQn6DKv-.js +544 -0
  782. package/dist/powerquery-DKaMYC8w.js +890 -0
  783. package/dist/powershell-DWeJHik1.js +233 -0
  784. package/dist/protobuf-CBn_IseU.js +422 -0
  785. package/dist/pug-BoRpCINl.js +393 -0
  786. package/dist/python-oJwaiPUY.js +259 -0
  787. package/dist/qsharp-4rGyVZOw.js +282 -0
  788. package/dist/r-DsgLhBOb.js +245 -0
  789. package/dist/razor-u_dd4rqc.js +512 -0
  790. package/dist/redis-B2fdL4Bg.js +298 -0
  791. package/dist/redshift-DoaeyCkH.js +806 -0
  792. package/dist/restructuredtext-D-6OFBY9.js +162 -0
  793. package/dist/ruby-D1DD6baV.js +444 -0
  794. package/dist/rust-DssUV39M.js +337 -0
  795. package/dist/sb-Dmb6tAdv.js +110 -0
  796. package/dist/scala-Co3ETaym.js +353 -0
  797. package/dist/scheme-CMrqXTty.js +114 -0
  798. package/dist/scss-DkGudv8Q.js +244 -0
  799. package/dist/shell-BHN2BI4L.js +224 -0
  800. package/dist/solidity-b-R-raGB.js +1351 -0
  801. package/dist/sophia-Y4GjyxNB.js +190 -0
  802. package/dist/sparql-CDAPZb88.js +193 -0
  803. package/dist/sql-DkkpPiUq.js +818 -0
  804. package/dist/st-CSPV91Ej.js +415 -0
  805. package/dist/style.css +1 -0
  806. package/dist/swift-DdSC5O48.js +315 -0
  807. package/dist/systemverilog-CI03XpAv.js +556 -0
  808. package/dist/tcl-B8DayMSI.js +232 -0
  809. package/dist/tsMode-DlZ38d3D.js +813 -0
  810. package/dist/twig-B1AUPVB_.js +323 -0
  811. package/dist/typescript-Bjs2N5Be.js +328 -0
  812. package/dist/vb-BIC7ccdG.js +364 -0
  813. package/dist/wgsl-Bv2xeo60.js +420 -0
  814. package/dist/xml-BCveATLl.js +95 -0
  815. package/dist/yaml-BfWQPJQi.js +184 -0
  816. package/handlers/compiler.ts +362 -0
  817. package/handlers/context-setup.ts +349 -0
  818. package/handlers/handler-executor.ts +348 -0
  819. package/handlers/index.ts +184 -0
  820. package/handlers/runtime-api/applications.ts +18 -0
  821. package/handlers/runtime-api/component-properties.ts +78 -0
  822. package/handlers/runtime-api/components.ts +63 -0
  823. package/handlers/runtime-api/editor.ts +29 -0
  824. package/handlers/runtime-api/functions.ts +42 -0
  825. package/handlers/runtime-api/index.ts +221 -0
  826. package/handlers/runtime-api/navigation.ts +52 -0
  827. package/handlers/runtime-api/pages.ts +45 -0
  828. package/handlers/runtime-api/storage.ts +95 -0
  829. package/handlers/runtime-api/toast.ts +108 -0
  830. package/handlers/runtime-api/variables.ts +400 -0
  831. package/index.ts +188 -0
  832. package/micro-app/README.md +565 -0
  833. package/micro-app/index.ts +29 -0
  834. package/micro-app/messaging/MicroAppMessageBus.ts +246 -0
  835. package/micro-app/state/MicroAppPageManager.ts +275 -0
  836. package/micro-app/state/MicroAppRuntimeContext.ts +423 -0
  837. package/micro-app/state/MicroAppStoreContext.ts +441 -0
  838. package/micro-app/state/SharedVariableRegistry.ts +187 -0
  839. package/micro-app/state/VariableScopeManager.ts +310 -0
  840. package/micro-app/utils/ComponentNamespaceManager.ts +88 -0
  841. package/micro-app-entry.ts +34 -0
  842. package/package.json +119 -0
  843. package/redux/actions/aitchat.ts +17 -0
  844. package/redux/actions/application/addPageToApplicationAction.ts +14 -0
  845. package/redux/actions/application/addTempApplication.ts +8 -0
  846. package/redux/actions/application/closeShareApplicationModalAction.ts +5 -0
  847. package/redux/actions/application/index.ts +20 -0
  848. package/redux/actions/application/loadApplicationPermissionAction.ts +10 -0
  849. package/redux/actions/application/resetPermissionMessage.ts +8 -0
  850. package/redux/actions/application/setApplication.ts +5 -0
  851. package/redux/actions/application/setApplicationPermissionAction.ts +6 -0
  852. package/redux/actions/application/setDefaultApplicationPageIfNotSet.ts +12 -0
  853. package/redux/actions/application/setPermissionMessage.ts +8 -0
  854. package/redux/actions/application/showCreateApplicationModalAction.ts +5 -0
  855. package/redux/actions/application/showShareApplicationModalAction.ts +5 -0
  856. package/redux/actions/application/updateApplication.ts +16 -0
  857. package/redux/actions/component/addComponentAction.ts +90 -0
  858. package/redux/actions/component/addComponentAsChildOf.ts +29 -0
  859. package/redux/actions/component/addComponentToCurrentPageAction.ts +32 -0
  860. package/redux/actions/component/copyComponentAction.ts +12 -0
  861. package/redux/actions/component/deleteComponentAction.ts +52 -0
  862. package/redux/actions/component/index.ts +22 -0
  863. package/redux/actions/component/moveDraggedComponent.ts +130 -0
  864. package/redux/actions/component/moveDraggedComponentInside.ts +64 -0
  865. package/redux/actions/component/moveDraggedComponentIntoCurrentPageRoot.ts +50 -0
  866. package/redux/actions/component/setCurrentComponentIdAction.ts +6 -0
  867. package/redux/actions/component/setDraggingComponentInfo.ts +14 -0
  868. package/redux/actions/component/setHoveredComponentAction.ts +5 -0
  869. package/redux/actions/component/setHoveredComponentIdAction.ts +5 -0
  870. package/redux/actions/component/update-component-name.ts +63 -0
  871. package/redux/actions/component/updateComponentAttributes.ts +192 -0
  872. package/redux/actions/component.ts +25 -0
  873. package/redux/actions/debug/index.ts +1 -0
  874. package/redux/actions/debug/store.ts +72 -0
  875. package/redux/actions/editor/closeCreateApplicationModalAction.ts +5 -0
  876. package/redux/actions/editor/closeEditorTab.ts +9 -0
  877. package/redux/actions/editor/index.ts +12 -0
  878. package/redux/actions/editor/openEditorTab.ts +12 -0
  879. package/redux/actions/editor/setCurrentEditorTab.ts +8 -0
  880. package/redux/actions/editor/setEnvirementMode.ts +8 -0
  881. package/redux/actions/environment.ts +5 -0
  882. package/redux/actions/index.ts +28 -0
  883. package/redux/actions/kernel/index.ts +1 -0
  884. package/redux/actions/kernel/set-property.ts +0 -0
  885. package/redux/actions/page/addPageAction.ts +7 -0
  886. package/redux/actions/page/deletePageAction.ts +13 -0
  887. package/redux/actions/page/index.ts +12 -0
  888. package/redux/actions/page/removeComponentToCurrentPageAction.ts +32 -0
  889. package/redux/actions/page/setContextMenuEvent.ts +5 -0
  890. package/redux/actions/page/setCurrentPageAction.ts +6 -0
  891. package/redux/actions/page/setCurrentPageViewPort.ts +5 -0
  892. package/redux/actions/page/setResizing.ts +5 -0
  893. package/redux/actions/page/setShowBorder.ts +5 -0
  894. package/redux/actions/page/updatePageAction.ts +20 -0
  895. package/redux/actions/page/updatePageInfo.ts +5 -0
  896. package/redux/actions/page/updatePageStyleAttributes.ts +13 -0
  897. package/redux/actions/page/updatePageZoom.ts +5 -0
  898. package/redux/handlers/aichat/create-chat.handler.ts +22 -0
  899. package/redux/handlers/api-urls.ts +8 -0
  900. package/redux/handlers/applications/handler.ts +78 -0
  901. package/redux/handlers/applications/index.ts +1 -0
  902. package/redux/handlers/components/add-component.handler.ts +30 -0
  903. package/redux/handlers/components/delete-component.handler.ts +21 -0
  904. package/redux/handlers/components/index.ts +6 -0
  905. package/redux/handlers/components/interfaces/add-component.request.ts +4 -0
  906. package/redux/handlers/components/interfaces/index.ts +2 -0
  907. package/redux/handlers/components/interfaces/update-component.reques.ts +3 -0
  908. package/redux/handlers/components/refresh-component.ts +25 -0
  909. package/redux/handlers/components/update-component.handler.ts +32 -0
  910. package/redux/handlers/components/validation-handler.ts +45 -0
  911. package/redux/handlers/functions/build-function-handler.ts +10 -0
  912. package/redux/handlers/functions/deploy-function-handler.ts +10 -0
  913. package/redux/handlers/functions/index.ts +13 -0
  914. package/redux/handlers/functions/invoke-function-handler.ts +13 -0
  915. package/redux/handlers/functions/load-functions-handler.ts +10 -0
  916. package/redux/handlers/functions/update-function-handler.ts +13 -0
  917. package/redux/handlers/index.ts +10 -0
  918. package/redux/handlers/pages/deletePageHandler.ts +23 -0
  919. package/redux/handlers/pages/handler.ts +59 -0
  920. package/redux/handlers/pages/index.ts +4 -0
  921. package/redux/handlers/pages/page.interface.ts +14 -0
  922. package/redux/handlers/pages/refresh-pages.ts +26 -0
  923. package/redux/handlers/providers/interface.ts +7 -0
  924. package/redux/index.ts +8 -0
  925. package/redux/store/actions/component.ts +9 -0
  926. package/redux/store/apps.ts +160 -0
  927. package/redux/store/component/component.interface.ts +90 -0
  928. package/redux/store/component/helper.ts +78 -0
  929. package/redux/store/component/index.ts +51 -0
  930. package/redux/store/component/runtime-store.ts +0 -0
  931. package/redux/store/component/store.ts +306 -0
  932. package/redux/store/context.ts +138 -0
  933. package/redux/store/debug.ts +28 -0
  934. package/redux/store/environment.ts +20 -0
  935. package/redux/store/index.ts +77 -0
  936. package/redux/store/interfaces/component.interfaces.ts +4 -0
  937. package/redux/store/page.ts +105 -0
  938. package/redux/store/provider.ts +24 -0
  939. package/redux/store/ssr/server-data.ts +4 -0
  940. package/redux/store/toast.ts +26 -0
  941. package/state/editor.ts +370 -0
  942. package/state/index.ts +27 -0
  943. package/state/runtime-context.ts +784 -0
  944. package/types/IRuntimeContext.ts +203 -0
  945. package/types/core.types.ts +28 -0
  946. package/types/database.types.ts +395 -0
  947. package/types/index.ts +7 -0
  948. package/utils/RuntimeContextHelpers.ts +454 -0
  949. package/utils/api-calls-utils.ts +9 -0
  950. package/utils/change-detection.ts +58 -0
  951. package/utils/clipboard-utils.ts +113 -0
  952. package/utils/constants.ts +2 -0
  953. package/utils/envirement.ts +2 -0
  954. package/utils/handler-security-rules.ts +153 -0
  955. package/utils/handler-validator.ts +447 -0
  956. package/utils/index.ts +67 -0
  957. package/utils/local-storage.ts +26 -0
  958. package/utils/logger.ts +90 -0
  959. package/utils/memoize.ts +15 -0
  960. package/utils/naming-generator.ts +6 -0
  961. package/utils/object.utils.ts +15 -0
  962. package/utils/performance-utils.ts +589 -0
  963. package/utils/randomness.ts +3 -0
  964. package/utils/register-components.ts +49 -0
  965. package/utils/render-util.ts +173 -0
  966. package/utils/runtime-helpers.ts +57 -0
  967. package/utils/styleUtil.ts +7 -0
  968. package/utils/time.ts +7 -0
  969. package/utils/validation-error-formatter.ts +11 -0
  970. package/vite.config.ts +83 -0
@@ -0,0 +1,1759 @@
1
+ import type { Meta, StoryObj } from '@storybook/web-components';
2
+ import { html } from 'lit';
3
+ import '../icon/index.js';
4
+ import './index.js';
5
+
6
+ const meta: Meta = {
7
+ title: 'Data Entry/Input',
8
+ component: 'nr-input',
9
+ parameters: {
10
+ layout: 'centered',
11
+ },
12
+ tags: ['autodocs'],
13
+ argTypes: {
14
+ type: {
15
+ control: { type: 'select' },
16
+ options: ['text', 'password', 'email', 'number', 'tel', 'url', 'search'],
17
+ description: 'Input type',
18
+ },
19
+ placeholder: {
20
+ control: { type: 'text' },
21
+ description: 'Placeholder text',
22
+ },
23
+ label: {
24
+ control: { type: 'text' },
25
+ description: 'Label text',
26
+ },
27
+ value: {
28
+ control: { type: 'text' },
29
+ description: 'Input value',
30
+ },
31
+ disabled: {
32
+ control: { type: 'boolean' },
33
+ description: 'Whether the input is disabled',
34
+ },
35
+ readonly: {
36
+ control: { type: 'boolean' },
37
+ description: 'Whether the input is readonly',
38
+ },
39
+ required: {
40
+ control: { type: 'boolean' },
41
+ description: 'Whether the input is required',
42
+ },
43
+ size: {
44
+ control: { type: 'select' },
45
+ options: ['small', 'medium', 'large'],
46
+ description: 'Input size',
47
+ },
48
+ state: {
49
+ control: { type: 'select' },
50
+ options: ['default', 'error', 'warning'],
51
+ description: 'Input state',
52
+ },
53
+ withCopy: {
54
+ control: { type: 'boolean' },
55
+ description: 'Show copy button',
56
+ },
57
+ allowClear: {
58
+ control: { type: 'boolean' },
59
+ description: 'Show clear button when input has content',
60
+ },
61
+ showCount: {
62
+ control: { type: 'boolean' },
63
+ description: 'Show character count',
64
+ },
65
+ maxLength: {
66
+ control: { type: 'number' },
67
+ description: 'Maximum character length',
68
+ },
69
+ variant: {
70
+ control: { type: 'select' },
71
+ options: ['outlined', 'filled', 'borderless', 'underlined'],
72
+ description: 'Input visual variant',
73
+ },
74
+ },
75
+ args: {
76
+ type: 'text',
77
+ placeholder: 'Enter text...',
78
+ label: 'Input Label',
79
+ value: '',
80
+ disabled: false,
81
+ readonly: false,
82
+ required: false,
83
+ size: 'medium',
84
+ state: 'default',
85
+ withCopy: false,
86
+ allowClear: false,
87
+ showCount: false,
88
+ maxLength: undefined,
89
+ variant: 'outlined',
90
+ },
91
+ };
92
+
93
+ export default meta;
94
+ type Story = StoryObj;
95
+
96
+ export const Default: Story = {
97
+ args: {
98
+ label: 'Default Input',
99
+ placeholder: 'Type something...',
100
+ },
101
+ render: (args) => html`
102
+ <nr-input
103
+ type="${args.type}"
104
+ placeholder="${args.placeholder}"
105
+ label="${args.label}"
106
+ value="${args.value}"
107
+ size="${args.size}"
108
+ state="${args.state}"
109
+ variant="${args.variant}"
110
+ ?disabled="${args.disabled}"
111
+ ?readonly="${args.readonly}"
112
+ ?required="${args.required}"
113
+ ?withCopy="${args.withCopy}"
114
+ ?allowClear="${args.allowClear}"
115
+ ?showCount="${args.showCount}"
116
+ maxLength="${args.maxLength}"
117
+ ></nr-input>
118
+ `,
119
+ };
120
+
121
+ export const WithValue: Story = {
122
+ args: {
123
+ label: 'Input with Value',
124
+ value: 'Predefined value',
125
+ placeholder: 'Type something...',
126
+ },
127
+ render: (args) => html`
128
+ <nr-input
129
+ type="${args.type}"
130
+ placeholder="${args.placeholder}"
131
+ label="${args.label}"
132
+ value="${args.value}"
133
+ size="${args.size}"
134
+ state="${args.state}"
135
+ variant="${args.variant}"
136
+ ?disabled="${args.disabled}"
137
+ ?readonly="${args.readonly}"
138
+ ?required="${args.required}"
139
+ ?withCopy="${args.withCopy}"
140
+ ?allowClear="${args.allowClear}"
141
+ ?showCount="${args.showCount}"
142
+ maxLength="${args.maxLength}"
143
+ ></nr-input>
144
+ `,
145
+ };
146
+
147
+ export const Password: Story = {
148
+ args: {
149
+ type: 'password',
150
+ label: 'Password',
151
+ placeholder: 'Enter your password',
152
+ },
153
+ render: (args) => html`
154
+ <nr-input
155
+ type="${args.type}"
156
+ placeholder="${args.placeholder}"
157
+ label="${args.label}"
158
+ value="${args.value}"
159
+ size="${args.size}"
160
+ state="${args.state}"
161
+ variant="${args.variant}"
162
+ ?disabled="${args.disabled}"
163
+ ?readonly="${args.readonly}"
164
+ ?required="${args.required}"
165
+ ?withCopy="${args.withCopy}"
166
+ ?allowClear="${args.allowClear}"
167
+ ?showCount="${args.showCount}"
168
+ maxLength="${args.maxLength}"
169
+ ></nr-input>
170
+ `,
171
+ };
172
+
173
+ export const Email: Story = {
174
+ args: {
175
+ type: 'email',
176
+ label: 'Email Address',
177
+ placeholder: 'Enter your email',
178
+ required: true,
179
+ },
180
+ render: (args) => html`
181
+ <nr-input
182
+ type="${args.type}"
183
+ placeholder="${args.placeholder}"
184
+ label="${args.label}"
185
+ value="${args.value}"
186
+ size="${args.size}"
187
+ state="${args.state}"
188
+ variant="${args.variant}"
189
+ ?disabled="${args.disabled}"
190
+ ?readonly="${args.readonly}"
191
+ ?required="${args.required}"
192
+ ?withCopy="${args.withCopy}"
193
+ ?allowClear="${args.allowClear}"
194
+ ?showCount="${args.showCount}"
195
+ maxLength="${args.maxLength}"
196
+ ></nr-input>
197
+ `,
198
+ };
199
+
200
+ export const Number: Story = {
201
+ args: {
202
+ type: 'number',
203
+ label: 'Number Input',
204
+ placeholder: 'Enter a number',
205
+ },
206
+ render: (args) => html`
207
+ <nr-input
208
+ type="${args.type}"
209
+ placeholder="${args.placeholder}"
210
+ label="${args.label}"
211
+ value="${args.value}"
212
+ size="${args.size}"
213
+ state="${args.state}"
214
+ variant="${args.variant}"
215
+ ?disabled="${args.disabled}"
216
+ ?readonly="${args.readonly}"
217
+ ?required="${args.required}"
218
+ ?withCopy="${args.withCopy}"
219
+ ?allowClear="${args.allowClear}"
220
+ ?showCount="${args.showCount}"
221
+ maxLength="${args.maxLength}"
222
+ ></nr-input>
223
+ `,
224
+ };
225
+
226
+ export const Search: Story = {
227
+ args: {
228
+ type: 'search',
229
+ label: 'Search',
230
+ placeholder: 'Search...',
231
+ },
232
+ render: (args) => html`
233
+ <nr-input
234
+ type="${args.type}"
235
+ placeholder="${args.placeholder}"
236
+ label="${args.label}"
237
+ value="${args.value}"
238
+ size="${args.size}"
239
+ state="${args.state}"
240
+ variant="${args.variant}"
241
+ ?disabled="${args.disabled}"
242
+ ?readonly="${args.readonly}"
243
+ ?required="${args.required}"
244
+ ?withCopy="${args.withCopy}"
245
+ ?allowClear="${args.allowClear}"
246
+ ?showCount="${args.showCount}"
247
+ maxLength="${args.maxLength}"
248
+ ></nr-input>
249
+ `,
250
+ };
251
+
252
+ export const Sizes: Story = {
253
+ render: () => html`
254
+ <div style="display: flex; flex-direction: column; gap: 1rem; width: 500px;">
255
+ <nr-input size="small" label="Small Input" placeholder="Small size"></nr-input>
256
+ <nr-input size="medium" label="Medium Input" placeholder="Medium size"></nr-input>
257
+ <nr-input size="large" label="Large Input" placeholder="Large size"></nr-input>
258
+ </div>
259
+ `,
260
+ };
261
+
262
+ export const States: Story = {
263
+ render: () => html`
264
+ <div style="display: flex; flex-direction: column; gap: 1rem; width: 500px;">
265
+ <nr-input label="Normal" placeholder="Normal input"></nr-input>
266
+ <nr-input label="Disabled" placeholder="Disabled input" disabled></nr-input>
267
+ <nr-input label="Readonly" value="Readonly value" readonly></nr-input>
268
+ <nr-input label="Required" placeholder="Required input" required></nr-input>
269
+ </div>
270
+ `,
271
+ };
272
+
273
+ export const ErrorState: Story = {
274
+ args: {
275
+ state: 'error',
276
+ label: 'Error Input',
277
+ placeholder: 'This input has an error',
278
+ value: 'Invalid value',
279
+ },
280
+ render: (args) => html`
281
+ <div style="max-width: 400px;">
282
+ <nr-input
283
+ type="${args.type}"
284
+ placeholder="${args.placeholder}"
285
+ label="${args.label}"
286
+ value="${args.value}"
287
+ size="${args.size}"
288
+ state="${args.state}"
289
+ variant="${args.variant}"
290
+ ?disabled="${args.disabled}"
291
+ ?readonly="${args.readonly}"
292
+ ?required="${args.required}"
293
+ ?withCopy="${args.withCopy}"
294
+ ?allowClear="${args.allowClear}"
295
+ ?showCount="${args.showCount}"
296
+ maxLength="${args.maxLength}"
297
+ .rules=${[
298
+ { required: true, message: 'This field contains an error and this message should follow the error state color and not overflow the parent container width even with very long text that demonstrates text wrapping behavior' }
299
+ ]}
300
+ validation-trigger="blur"
301
+ ></nr-input>
302
+
303
+ <div style="margin-top: 1rem;">
304
+ <nr-input
305
+ type="text"
306
+ label="Error with helper text"
307
+ placeholder="Another error example"
308
+ state="error"
309
+ helper-text="This is helper text that should also follow error state color and wrap properly within the container width even with very long text content"
310
+ ></nr-input>
311
+ </div>
312
+ </div>
313
+ `,
314
+ };
315
+
316
+ export const WarningState: Story = {
317
+ args: {
318
+ state: 'warning',
319
+ label: 'Warning Input',
320
+ placeholder: 'This input has a warning',
321
+ value: 'Check this value',
322
+ },
323
+ render: (args) => html`
324
+ <div style="max-width: 400px;">
325
+ <nr-input
326
+ type="${args.type}"
327
+ placeholder="${args.placeholder}"
328
+ label="${args.label}"
329
+ value="${args.value}"
330
+ size="${args.size}"
331
+ state="${args.state}"
332
+ variant="${args.variant}"
333
+ ?disabled="${args.disabled}"
334
+ ?readonly="${args.readonly}"
335
+ ?required="${args.required}"
336
+ ?withCopy="${args.withCopy}"
337
+ ?allowClear="${args.allowClear}"
338
+ ?showCount="${args.showCount}"
339
+ maxLength="${args.maxLength}"
340
+ .rules=${[
341
+ { required: true, message: 'This field has a warning and this message should follow the warning state color and not overflow the parent container width even with very long text that demonstrates text wrapping behavior' }
342
+ ]}
343
+ validation-trigger="blur"
344
+ ></nr-input>
345
+
346
+ <div style="margin-top: 1rem;">
347
+ <nr-input
348
+ type="text"
349
+ label="Warning with helper text"
350
+ placeholder="Another warning example"
351
+ state="warning"
352
+ helper-text="This is helper text that should also follow warning state color and wrap properly within the container width even with very long text content"
353
+ ></nr-input>
354
+ </div>
355
+ </div>
356
+ `,
357
+ };
358
+
359
+ export const WithCopyButton: Story = {
360
+ args: {
361
+ label: 'Input with Copy',
362
+ value: 'This text can be copied',
363
+ withCopy: true,
364
+ },
365
+ render: (args) => html`
366
+ <nr-input
367
+ type="${args.type}"
368
+ placeholder="${args.placeholder}"
369
+ label="${args.label}"
370
+ value="${args.value}"
371
+ size="${args.size}"
372
+ state="${args.state}"
373
+ variant="${args.variant}"
374
+ ?disabled="${args.disabled}"
375
+ ?readonly="${args.readonly}"
376
+ ?required="${args.required}"
377
+ ?withCopy="${args.withCopy}"
378
+ ?allowClear="${args.allowClear}"
379
+ ?showCount="${args.showCount}"
380
+ maxLength="${args.maxLength}"
381
+ ></nr-input>
382
+ `,
383
+ };
384
+
385
+ export const WithPrefixSuffix: Story = {
386
+ render: () => html`
387
+ <div style="display: flex; flex-direction: column; gap: 1rem; width: 500px;">
388
+ <h3>Prefix and Suffix Examples</h3>
389
+
390
+ <!-- Text prefix/suffix -->
391
+ <nr-input label="Price" placeholder="Enter amount">
392
+ <span slot="prefix">$</span>
393
+ <span slot="suffix">USD</span>
394
+ </nr-input>
395
+
396
+ <!-- Icon prefix/suffix -->
397
+ <nr-input label="Search" placeholder="Type to search">
398
+ <nr-icon slot="prefix" name="search"></nr-icon>
399
+ <nr-icon slot="suffix" name="close"></nr-icon>
400
+ </nr-input>
401
+
402
+ <!-- Email with icon -->
403
+ <nr-input type="email" label="Email" placeholder="Enter your email">
404
+ <nr-icon slot="prefix" name="envelope"></nr-icon>
405
+ </nr-input>
406
+
407
+ <!-- Password with lock icon -->
408
+ <nr-input type="password" label="Password" placeholder="Enter password">
409
+ <nr-icon slot="prefix" name="lock"></nr-icon>
410
+ </nr-input>
411
+ </div>
412
+ `,
413
+ };
414
+
415
+ export const AddonBeforeAfterExamples: Story = {
416
+ render: () => html`
417
+ <div style="display: flex; flex-direction: column; gap: 1rem; width: 500px;">
418
+ <h3>Addon Before/After Examples</h3>
419
+
420
+ <!-- URL with protocol addon before -->
421
+ <nr-input label="Website URL" placeholder="mysite">
422
+ <span slot="addon-before">https://</span>
423
+ <span slot="addon-after">.com</span>
424
+ </nr-input>
425
+
426
+ <!-- Phone with country code -->
427
+ <nr-input label="Phone Number" placeholder="555-1234">
428
+ <span slot="addon-before">+1</span>
429
+ </nr-input>
430
+
431
+ <!-- Currency input -->
432
+ <nr-input type="number" label="Amount" placeholder="0.00">
433
+ <span slot="addon-before">$</span>
434
+ <span slot="addon-after">USD</span>
435
+ </nr-input>
436
+
437
+ <!-- File path -->
438
+ <nr-input label="File Path" placeholder="filename">
439
+ <span slot="addon-before">/home/user/</span>
440
+ <span slot="addon-after">.txt</span>
441
+ </nr-input>
442
+
443
+ <!-- Combined with icons in addons -->
444
+ <nr-input label="Search with Button" placeholder="Search term">
445
+ <div slot="addon-before" style="display: flex; align-items: center; gap: 4px;">
446
+ <nr-icon name="search"></nr-icon>
447
+ <span>Find:</span>
448
+ </div>
449
+ <button slot="addon-after" style="border: none; background: #0f62fe; color: white; padding: 4px 8px; cursor: pointer;">Go</button>
450
+ </nr-input>
451
+ </div>
452
+ `,
453
+ };
454
+
455
+ export const AllStates: Story = {
456
+ name: 'All States & Themes',
457
+ render: () => html`
458
+ <div style="display: flex; flex-direction: column; gap: 2rem; width: 100%; max-width: 1000px;">
459
+
460
+ <!-- Default Theme -->
461
+ <div data-theme="default-light" style="padding: 20px; border: 2px solid #1890ff; border-radius: 8px; background: #fafafa;">
462
+ <h3 style="margin-top: 0; color: #1890ff; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto;">🎨 Default Theme</h3>
463
+ <div style="display: grid; grid-template-columns: 1fr 1fr; gap: 1rem;">
464
+ <nr-input
465
+ state="default"
466
+ label="Default State"
467
+ placeholder="Default input"
468
+ value="Normal text"
469
+ helper-text="Default styled input with clean borders"
470
+ ></nr-input>
471
+ <nr-input
472
+ state="error"
473
+ label="Error State"
474
+ placeholder="Error input"
475
+ value="Invalid email format"
476
+ helper-text="Default error state with red accent"
477
+ ></nr-input>
478
+ <nr-input
479
+ state="warning"
480
+ label="Warning State"
481
+ placeholder="Warning input"
482
+ value="Password might be weak"
483
+ helper-text="Default warning state with orange accent"
484
+ ></nr-input>
485
+ <nr-input
486
+ state="default"
487
+ label="With Icons"
488
+ placeholder="Search..."
489
+ withCopy
490
+ helper-text="Clean default styling with icons"
491
+ ></nr-input>
492
+ </div>
493
+ </div>
494
+
495
+ <!-- Carbon Design Theme -->
496
+ <div data-theme="carbon-light" style="padding: 20px; border: 2px solid #0f62fe; border-radius: 4px; background: #f4f4f4;">
497
+ <h3 style="margin-top: 0; color: #0f62fe; font-family: 'IBM Plex Sans', sans-serif;">⚡ Carbon Design Theme</h3>
498
+ <div style="display: grid; grid-template-columns: 1fr 1fr; gap: 1rem;">
499
+ <nr-input
500
+ state="default"
501
+ label="Default State"
502
+ placeholder="Default input"
503
+ value="Normal text"
504
+ helper-text="Carbon Design System underlined style"
505
+ ></nr-input>
506
+ <nr-input
507
+ state="error"
508
+ label="Error State"
509
+ placeholder="Error input"
510
+ value="Invalid email format"
511
+ helper-text="Carbon error state with IBM styling"
512
+ ></nr-input>
513
+ <nr-input
514
+ state="warning"
515
+ label="Warning State"
516
+ placeholder="Warning input"
517
+ value="Password might be weak"
518
+ helper-text="Carbon warning state with proper contrast"
519
+ ></nr-input>
520
+ <nr-input
521
+ state="default"
522
+ label="With Icons"
523
+ placeholder="Search..."
524
+ withCopy
525
+ helper-text="IBM Carbon Design System styling"
526
+ ></nr-input>
527
+ </div>
528
+ </div>
529
+
530
+ <!-- Dark Theme Example -->
531
+ <div data-theme="default-dark" style="padding: 20px; border: 2px solid #1890ff; border-radius: 8px; background: #141414; color: #fff;">
532
+ <h3 style="margin-top: 0; color: #40a9ff; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto;">🌙 Dark Theme (Default)</h3>
533
+ <div style="display: grid; grid-template-columns: 1fr 1fr; gap: 1rem;">
534
+ <nr-input
535
+ state="default"
536
+ label="Default State"
537
+ placeholder="Default input"
538
+ value="Normal text"
539
+ helper-text="Dark theme with proper contrast"
540
+ ></nr-input>
541
+ <nr-input
542
+ state="error"
543
+ label="Error State"
544
+ placeholder="Error input"
545
+ value="Invalid email format"
546
+ helper-text="Dark theme error state"
547
+ ></nr-input>
548
+ <nr-input
549
+ state="warning"
550
+ label="Warning State"
551
+ placeholder="Warning input"
552
+ value="Password might be weak"
553
+ helper-text="Dark theme warning state"
554
+ ></nr-input>
555
+ <nr-input
556
+ state="default"
557
+ label="With Icons"
558
+ placeholder="Search..."
559
+ withCopy
560
+ helper-text="Dark theme with accessible colors"
561
+ ></nr-input>
562
+ </div>
563
+ </div>
564
+
565
+ <div style="background: #f9f9f9; padding: 15px; border-radius: 6px; margin-top: 10px;">
566
+ <p style="margin: 0; color: #666; font-size: 14px;">
567
+ 💡 <strong>Theme Switching:</strong> This showcase demonstrates how the same input component
568
+ automatically adapts to different design systems (Default vs Carbon) and theme variants
569
+ (light vs dark) using CSS custom properties.
570
+ </p>
571
+ </div>
572
+ </div>
573
+ `,
574
+ };
575
+
576
+ export const InputValidation: Story = {
577
+ parameters: {
578
+ docs: {
579
+ description: {
580
+ story: 'Input components with comprehensive validation features using declarative rules approach.',
581
+ },
582
+ },
583
+ },
584
+ render: () => html`
585
+ <div style="display: flex; flex-direction: column; gap: 2rem; padding: 1rem; max-width: 600px;">
586
+ <h3>Input Validation Examples</h3>
587
+
588
+ <!-- Required Field Validation -->
589
+ <div>
590
+ <h4>Required Field Validation</h4>
591
+ <nr-input
592
+ type="text"
593
+ label="Full Name *"
594
+ placeholder="Enter your full name"
595
+ .rules=${[{ required: true, message: 'Please input your full name!' }]}
596
+ validation-trigger="blur"
597
+ help-text="This field is required"
598
+ ></nr-input>
599
+ </div>
600
+
601
+ <!-- Email Validation -->
602
+ <div>
603
+ <h4>Email Validation</h4>
604
+ <nr-input
605
+ type="email"
606
+ label="Email Address *"
607
+ placeholder="user@example.com"
608
+ .rules=${[
609
+ { required: true, message: 'Please input your email!' },
610
+ { type: 'email', message: 'Please enter a valid email address!' }
611
+ ]}
612
+ validation-trigger="change"
613
+ help-text="Please enter a valid email address"
614
+ ></nr-input>
615
+ </div>
616
+
617
+ <!-- Password Validation -->
618
+ <div>
619
+ <h4>Password with Custom Rules</h4>
620
+ <nr-input
621
+ type="password"
622
+ label="Password *"
623
+ placeholder="Create a strong password"
624
+ .rules=${[
625
+ { required: true, message: 'Please input your password!' },
626
+ { min: 8, message: 'Password must be at least 8 characters!' },
627
+ { pattern: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]/, message: 'Password must contain uppercase, lowercase, number and special character!' }
628
+ ]}
629
+ validation-trigger="change"
630
+ help-text="Password must be at least 8 characters with uppercase, lowercase, number and special character"
631
+ ></nr-input>
632
+ </div>
633
+
634
+ <!-- Number Range Validation -->
635
+ <div>
636
+ <h4>Number Range Validation</h4>
637
+ <nr-input
638
+ type="number"
639
+ label="Age"
640
+ placeholder="Enter your age"
641
+ .rules=${[
642
+ { required: true, message: 'Please input your age!' },
643
+ { type: 'number', min: 18, max: 120, message: 'Age must be between 18 and 120!' }
644
+ ]}
645
+ validation-trigger="blur"
646
+ help-text="Age must be between 18 and 120"
647
+ ></nr-input>
648
+ </div>
649
+
650
+ <!-- Custom Pattern Validation -->
651
+ <div>
652
+ <h4>Phone Number Pattern</h4>
653
+ <nr-input
654
+ type="tel"
655
+ label="Phone Number"
656
+ placeholder="+1 (555) 123-4567"
657
+ .rules=${[
658
+ { required: true, message: 'Please input your phone number!' },
659
+ { pattern: /^\+?1?\d{9,15}$/, message: 'Please enter a valid phone number!' }
660
+ ]}
661
+ validation-trigger="blur"
662
+ help-text="Enter a valid phone number"
663
+ ></nr-input>
664
+ </div>
665
+
666
+ <!-- Real-time Username Validation -->
667
+ <div>
668
+ <h4>Real-time Username Validation</h4>
669
+ <nr-input
670
+ type="text"
671
+ label="Username"
672
+ placeholder="Choose a username"
673
+ .rules=${[
674
+ { required: true, message: 'Please input your username!' },
675
+ { min: 3, max: 20, message: 'Username must be 3-20 characters!' },
676
+ { pattern: /^[a-zA-Z0-9_]+$/, message: 'Username can only contain letters, numbers, and underscores!' }
677
+ ]}
678
+ validation-trigger="change"
679
+ help-text="Username must be 3-20 characters, alphanumeric and underscores only"
680
+ ></nr-input>
681
+ </div>
682
+ </div>
683
+ `,
684
+ };
685
+
686
+ export const FormExample: Story = {
687
+ render: () => html`
688
+ <form style="display: flex; flex-direction: column; gap: 1rem; width: 500px; padding: 1rem; border: 1px solid #ccc; border-radius: 8px;">
689
+ <h3>User Registration</h3>
690
+ <nr-input type="text" label="Full Name" placeholder="Enter your full name" required></nr-input>
691
+ <nr-input type="email" label="Email" placeholder="Enter your email" required></nr-input>
692
+ <nr-input type="password" label="Password" placeholder="Create a password" required></nr-input>
693
+ <nr-input type="tel" label="Phone" placeholder="Enter your phone number"></nr-input>
694
+ <nr-input type="url" label="Website" placeholder="Your website URL"></nr-input>
695
+ </form>
696
+ `,
697
+ };
698
+
699
+ export const ClearFunctionality: Story = {
700
+ parameters: {
701
+ docs: {
702
+ description: {
703
+ story: 'Input with clear functionality - shows a clear icon when there\'s content that allows users to quickly clear the input value.',
704
+ },
705
+ },
706
+ },
707
+ render: () => html`
708
+ <div style="display: flex; flex-direction: column; gap: 2rem; padding: 1rem; width : 400px">
709
+ <div>
710
+ <h3>Clear Examples</h3>
711
+ <div style="display: flex; flex-direction: column; gap: 1rem;">
712
+ <nr-input
713
+ type="text"
714
+ label="Basic Clear Input"
715
+ placeholder="Type something to see clear icon"
716
+ value="Sample text"
717
+ allowClear
718
+ ></nr-input>
719
+
720
+ <nr-input
721
+ type="email"
722
+ label="Email with Clear"
723
+ placeholder="Enter your email"
724
+ value="user@example.com"
725
+ allowClear
726
+ ></nr-input>
727
+
728
+ <nr-input
729
+ type="url"
730
+ label="URL with Clear"
731
+ placeholder="Enter website URL"
732
+ value="https://example.com"
733
+ allowClear
734
+ ></nr-input>
735
+
736
+ <nr-input
737
+ type="search"
738
+ label="Search with Clear"
739
+ placeholder="Search products..."
740
+ value="laptop"
741
+ allowClear
742
+ ></nr-input>
743
+ </div>
744
+ </div>
745
+
746
+ <div>
747
+ <h3>Clear + Copy Combination</h3>
748
+ <nr-input
749
+ type="text"
750
+ label="Both Clear and Copy"
751
+ placeholder="Type something..."
752
+ value="This text can be cleared or copied"
753
+ allowClear
754
+ withCopy
755
+ ></nr-input>
756
+ </div>
757
+
758
+ <div>
759
+ <h3>Disabled/Readonly States</h3>
760
+ <div style="display: flex; flex-direction: column; gap: 1rem;">
761
+ <nr-input
762
+ type="text"
763
+ label="Disabled with Clear (no icon shown)"
764
+ value="Can't clear when disabled"
765
+ allowClear
766
+ disabled
767
+ ></nr-input>
768
+
769
+ <nr-input
770
+ type="text"
771
+ label="Readonly with Clear (no icon shown)"
772
+ value="Can't clear when readonly"
773
+ allowClear
774
+ readonly
775
+ ></nr-input>
776
+ </div>
777
+ </div>
778
+ </div>
779
+ `,
780
+ };
781
+
782
+ export const CharacterCount: Story = {
783
+ parameters: {
784
+ docs: {
785
+ description: {
786
+ story: 'Input with character count functionality - shows character count and enforces character limits with visual feedback.',
787
+ },
788
+ },
789
+ },
790
+ render: () => html`
791
+ <div style="display: flex; flex-direction: column; gap: 2rem; padding: 1rem;">
792
+ <div>
793
+ <h3>Character Count Examples</h3>
794
+ <div style="display: flex; flex-direction: column; gap: 1rem;">
795
+ <nr-input
796
+ type="text"
797
+ label="Basic Character Count"
798
+ placeholder="Type to see character count"
799
+ value="Sample text"
800
+ showCount
801
+ ></nr-input>
802
+
803
+ <nr-input
804
+ type="text"
805
+ label="With Character Limit (50)"
806
+ placeholder="Maximum 50 characters"
807
+ value="This text has exactly fifty characters in total!"
808
+ showCount
809
+ maxLength="50"
810
+ ></nr-input>
811
+
812
+ <nr-input
813
+ type="text"
814
+ label="Over Limit Example (20)"
815
+ placeholder="Maximum 20 characters"
816
+ value="This text exceeds the limit"
817
+ showCount
818
+ maxLength="20"
819
+ ></nr-input>
820
+
821
+ <nr-input
822
+ type="textarea"
823
+ label="Description with Limit (200)"
824
+ placeholder="Enter your description..."
825
+ value="A longer description that shows how character counting works with longer text content. This helps users understand when they're approaching or exceeding the character limit."
826
+ showCount
827
+ maxLength="200"
828
+ ></nr-input>
829
+ </div>
830
+ </div>
831
+
832
+ <div>
833
+ <h3>Different Input Types with Count</h3>
834
+ <div style="display: flex; flex-direction: column; gap: 1rem;">
835
+ <nr-input
836
+ type="email"
837
+ label="Email (30 chars max)"
838
+ placeholder="Enter email"
839
+ value="user@example.com"
840
+ showCount
841
+ maxLength="30"
842
+ ></nr-input>
843
+
844
+ <nr-input
845
+ type="url"
846
+ label="Website URL (100 chars max)"
847
+ placeholder="Enter website URL"
848
+ value="https://www.example-website.com"
849
+ showCount
850
+ maxLength="100"
851
+ ></nr-input>
852
+
853
+ <nr-input
854
+ type="search"
855
+ label="Search Query (50 chars max)"
856
+ placeholder="Search products..."
857
+ value="laptop computers"
858
+ showCount
859
+ maxLength="50"
860
+ ></nr-input>
861
+ </div>
862
+ </div>
863
+
864
+ <div>
865
+ <h3>Combined Features</h3>
866
+ <div style="display: flex; flex-direction: column; gap: 1rem;">
867
+ <nr-input
868
+ type="text"
869
+ label="Count + Clear + Copy"
870
+ placeholder="All features combined"
871
+ value="Text with multiple features"
872
+ showCount
873
+ maxLength="40"
874
+ allowClear
875
+ withCopy
876
+ ></nr-input>
877
+
878
+ <nr-input
879
+ type="text"
880
+ label="Count + Prefix/Suffix"
881
+ placeholder="Username"
882
+ value="johndoe"
883
+ showCount
884
+ maxLength="15"
885
+ >
886
+ <span slot="prefix">@</span>
887
+ <span slot="suffix">.com</span>
888
+ </nr-input>
889
+ </div>
890
+ </div>
891
+ </div>
892
+ `,
893
+ };
894
+
895
+ export const InputVariants: Story = {
896
+ name: 'Input Variants',
897
+ render: () => html`
898
+ <div style="max-width: 600px; padding: 20px;">
899
+ <h3 style="margin-bottom: 20px; color: #333;">Input Variants</h3>
900
+
901
+ <!-- Outlined Variant -->
902
+ <div style="margin-bottom: 30px;">
903
+ <h4 style="margin-bottom: 15px; color: #666;">Outlined (Full Border)</h4>
904
+ <div style="display: flex; gap: 15px; align-items: end; flex-wrap: wrap;">
905
+ <nr-input
906
+ variant="outlined"
907
+ label="Outlined Input"
908
+ placeholder="Enter text..."
909
+ style="flex: 1; min-width: 200px;"
910
+ ></nr-input>
911
+ <nr-input
912
+ variant="outlined"
913
+ label="With Prefix"
914
+ placeholder="Enter username"
915
+ style="flex: 1; min-width: 200px;"
916
+ >
917
+ <span slot="prefix">@</span>
918
+ </nr-input>
919
+ <nr-input
920
+ variant="outlined"
921
+ label="Error State"
922
+ placeholder="Enter text..."
923
+ state="error"
924
+ helper-text="This field is required"
925
+ style="flex: 1; min-width: 200px;"
926
+ ></nr-input>
927
+ </div>
928
+ </div>
929
+
930
+ <!-- Filled Variant -->
931
+ <div style="margin-bottom: 30px;">
932
+ <h4 style="margin-bottom: 15px; color: #666;">Filled (Background + Bottom Border)</h4>
933
+ <div style="display: flex; gap: 15px; align-items: end; flex-wrap: wrap;">
934
+ <nr-input
935
+ variant="filled"
936
+ label="Filled Input"
937
+ placeholder="Enter text..."
938
+ style="flex: 1; min-width: 200px;"
939
+ ></nr-input>
940
+ <nr-input
941
+ variant="filled"
942
+ label="With Suffix"
943
+ placeholder="Enter amount"
944
+ style="flex: 1; min-width: 200px;"
945
+ >
946
+ <span slot="suffix">USD</span>
947
+ </nr-input>
948
+ <nr-input
949
+ variant="filled"
950
+ label="Warning State"
951
+ placeholder="Enter text..."
952
+ state="warning"
953
+ helper-text="Please check your input"
954
+ style="flex: 1; min-width: 200px;"
955
+ ></nr-input>
956
+ </div>
957
+ </div>
958
+
959
+ <!-- Borderless Variant -->
960
+ <div style="margin-bottom: 30px;">
961
+ <h4 style="margin-bottom: 15px; color: #666;">Borderless (Focus Outline Only)</h4>
962
+ <div style="display: flex; gap: 15px; align-items: end; flex-wrap: wrap;">
963
+ <nr-input
964
+ variant="borderless"
965
+ label="Borderless Input"
966
+ placeholder="Enter text..."
967
+ style="flex: 1; min-width: 200px;"
968
+ ></nr-input>
969
+ <nr-input
970
+ variant="borderless"
971
+ label="With Clear"
972
+ placeholder="Enter text..."
973
+ value="Sample text"
974
+ allow-clear
975
+ style="flex: 1; min-width: 200px;"
976
+ ></nr-input>
977
+ <nr-input
978
+ variant="borderless"
979
+ label="Disabled"
980
+ placeholder="Enter text..."
981
+ disabled
982
+ style="flex: 1; min-width: 200px;"
983
+ ></nr-input>
984
+ </div>
985
+ </div>
986
+
987
+ <!-- Underlined Variant (Default) -->
988
+ <div style="margin-bottom: 30px;">
989
+ <h4 style="margin-bottom: 15px; color: #666;">Underlined (Bottom Border Only)</h4>
990
+ <div style="display: flex; gap: 15px; align-items: end; flex-wrap: wrap;">
991
+ <nr-input
992
+ variant="underlined"
993
+ label="Underlined Input"
994
+ placeholder="Enter text..."
995
+ style="flex: 1; min-width: 200px;"
996
+ ></nr-input>
997
+ <nr-input
998
+ variant="underlined"
999
+ label="With Character Count"
1000
+ placeholder="Enter text..."
1001
+ show-count
1002
+ max-length="50"
1003
+ style="flex: 1; min-width: 200px;"
1004
+ ></nr-input>
1005
+ <nr-input
1006
+ variant="underlined"
1007
+ label="Password Type"
1008
+ type="password"
1009
+ placeholder="Enter password..."
1010
+ style="flex: 1; min-width: 200px;"
1011
+ ></nr-input>
1012
+ </div>
1013
+ </div>
1014
+
1015
+ <!-- Size Variations with Different Variants -->
1016
+ <div style="margin-bottom: 30px;">
1017
+ <h4 style="margin-bottom: 15px; color: #666;">Size Variations Across Variants</h4>
1018
+
1019
+ <!-- Small Size -->
1020
+ <div style="margin-bottom: 15px;">
1021
+ <p style="margin-bottom: 10px; font-weight: 500;">Small Size:</p>
1022
+ <div style="display: flex; gap: 15px; align-items: end; flex-wrap: wrap;">
1023
+ <nr-input
1024
+ variant="outlined"
1025
+ size="small"
1026
+ label="Small Outlined"
1027
+ placeholder="Small..."
1028
+ style="flex: 1; min-width: 140px;"
1029
+ ></nr-input>
1030
+ <nr-input
1031
+ variant="filled"
1032
+ size="small"
1033
+ label="Small Filled"
1034
+ placeholder="Small..."
1035
+ style="flex: 1; min-width: 140px;"
1036
+ ></nr-input>
1037
+ <nr-input
1038
+ variant="borderless"
1039
+ size="small"
1040
+ label="Small Borderless"
1041
+ placeholder="Small..."
1042
+ style="flex: 1; min-width: 140px;"
1043
+ ></nr-input>
1044
+ <nr-input
1045
+ variant="underlined"
1046
+ size="small"
1047
+ label="Small Underlined"
1048
+ placeholder="Small..."
1049
+ style="flex: 1; min-width: 140px;"
1050
+ ></nr-input>
1051
+ </div>
1052
+ </div>
1053
+
1054
+ <!-- Large Size -->
1055
+ <div style="margin-bottom: 15px;">
1056
+ <p style="margin-bottom: 10px; font-weight: 500;">Large Size:</p>
1057
+ <div style="display: flex; gap: 15px; align-items: end; flex-wrap: wrap;">
1058
+ <nr-input
1059
+ variant="outlined"
1060
+ size="large"
1061
+ label="Large Outlined"
1062
+ placeholder="Large..."
1063
+ style="flex: 1; min-width: 140px;"
1064
+ ></nr-input>
1065
+ <nr-input
1066
+ variant="filled"
1067
+ size="large"
1068
+ label="Large Filled"
1069
+ placeholder="Large..."
1070
+ style="flex: 1; min-width: 140px;"
1071
+ ></nr-input>
1072
+ <nr-input
1073
+ variant="borderless"
1074
+ size="large"
1075
+ label="Large Borderless"
1076
+ placeholder="Large..."
1077
+ style="flex: 1; min-width: 140px;"
1078
+ ></nr-input>
1079
+ <nr-input
1080
+ variant="underlined"
1081
+ size="large"
1082
+ label="Large Underlined"
1083
+ placeholder="Large..."
1084
+ style="flex: 1; min-width: 140px;"
1085
+ ></nr-input>
1086
+ </div>
1087
+ </div>
1088
+ </div>
1089
+
1090
+ <!-- Combined Features -->
1091
+ <div style="margin-bottom: 30px;">
1092
+ <h4 style="margin-bottom: 15px; color: #666;">Combined Features</h4>
1093
+ <div style="display: flex; gap: 15px; align-items: end; flex-wrap: wrap;">
1094
+ <nr-input
1095
+ variant="outlined"
1096
+ label="Full Featured"
1097
+ placeholder="Enter username..."
1098
+ show-count
1099
+ max-length="20"
1100
+ allow-clear
1101
+ style="flex: 1; min-width: 200px;"
1102
+ >
1103
+ <span slot="prefix">@</span>
1104
+ <span slot="suffix">.com</span>
1105
+ </nr-input>
1106
+ <nr-input
1107
+ variant="filled"
1108
+ label="Addons + Count"
1109
+ placeholder="Enter amount..."
1110
+ show-count
1111
+ max-length="10"
1112
+ style="flex: 1; min-width: 200px;"
1113
+ >
1114
+ <span slot="addon-before">$</span>
1115
+ <span slot="addon-after">USD</span>
1116
+ </nr-input>
1117
+ </div>
1118
+ </div>
1119
+ </div>
1120
+ `,
1121
+ };
1122
+
1123
+ export const FocusManagement: Story = {
1124
+ parameters: {
1125
+ docs: {
1126
+ description: {
1127
+ story: 'Advanced focus management with cursor positioning, text selection, and programmatic focus control.',
1128
+ },
1129
+ },
1130
+ },
1131
+ render: () => html`
1132
+ <div style="display: flex; flex-direction: column; gap: 2rem; padding: 1rem;">
1133
+ <div>
1134
+ <h3>Focus Management Examples</h3>
1135
+ <div style="display: flex; flex-direction: column; gap: 1rem;">
1136
+ <nr-input
1137
+ id="focus-basic"
1138
+ type="text"
1139
+ label="Basic Focus"
1140
+ placeholder="Click buttons to test focus"
1141
+ value="Sample text for testing"
1142
+ ></nr-input>
1143
+
1144
+ <div style="display: flex; gap: 0.5rem; flex-wrap: wrap;">
1145
+ <button
1146
+ onclick="document.getElementById('focus-basic').focus();"
1147
+ >Focus</button>
1148
+
1149
+ <button
1150
+ onclick="document.getElementById('focus-basic').focus({ preventScroll: true });"
1151
+ >Focus (No Scroll)</button>
1152
+
1153
+ <button
1154
+ onclick="document.getElementById('focus-basic').focus({ cursor: 'start' });"
1155
+ >Focus at Start</button>
1156
+
1157
+ <button
1158
+ onclick="document.getElementById('focus-basic').focus({ cursor: 'end' });"
1159
+ >Focus at End</button>
1160
+
1161
+ <button
1162
+ onclick="document.getElementById('focus-basic').focus({ cursor: 5 });"
1163
+ >Focus at Position 5</button>
1164
+
1165
+ <button
1166
+ onclick="document.getElementById('focus-basic').focus({ select: true });"
1167
+ >Focus & Select All</button>
1168
+
1169
+ <button
1170
+ onclick="document.getElementById('focus-basic').blur();"
1171
+ >Blur</button>
1172
+ </div>
1173
+ </div>
1174
+ </div>
1175
+
1176
+ <div>
1177
+ <h3>Text Selection Methods</h3>
1178
+ <div style="display: flex; flex-direction: column; gap: 1rem;">
1179
+ <nr-input
1180
+ id="selection-test"
1181
+ type="text"
1182
+ label="Selection Test"
1183
+ placeholder="Text selection methods"
1184
+ value="This is a sample text for selection testing"
1185
+ ></nr-input>
1186
+
1187
+ <div style="display: flex; gap: 0.5rem; flex-wrap: wrap;">
1188
+ <button
1189
+ onclick="document.getElementById('selection-test').selectAll();"
1190
+ >Select All</button>
1191
+
1192
+ <button
1193
+ onclick="document.getElementById('selection-test').selectRange(5, 15);"
1194
+ >Select Range (5-15)</button>
1195
+
1196
+ <button
1197
+ onclick="document.getElementById('selection-test').setCursorPosition('start');"
1198
+ >Cursor to Start</button>
1199
+
1200
+ <button
1201
+ onclick="document.getElementById('selection-test').setCursorPosition('end');"
1202
+ >Cursor to End</button>
1203
+
1204
+ <button
1205
+ onclick="document.getElementById('selection-test').setCursorPosition(10);"
1206
+ >Cursor to Position 10</button>
1207
+
1208
+ <button
1209
+ onclick="alert('Selected: ' + document.getElementById('selection-test').getSelectedText());"
1210
+ >Get Selected Text</button>
1211
+
1212
+ <button
1213
+ onclick="alert('Cursor Position: ' + document.getElementById('selection-test').getCursorPosition());"
1214
+ >Get Cursor Position</button>
1215
+ </div>
1216
+ >Cursor to End</button>
1217
+
1218
+ <button
1219
+ @click=${() => {
1220
+ const input = document.getElementById('selection-test') as any;
1221
+ input?.setCursorPosition(10);
1222
+ }}
1223
+ >Cursor to Position 10</button>
1224
+ </div>
1225
+ </div>
1226
+ </div>
1227
+
1228
+ <div>
1229
+ <h3>Focus State Information</h3>
1230
+ <div style="display: flex; flex-direction: column; gap: 1rem;">
1231
+ <nr-input
1232
+ id="focus-info"
1233
+ type="text"
1234
+ label="Focus Info Test"
1235
+ placeholder="Focus to see state information"
1236
+ value="Test focus state tracking"
1237
+ ></nr-input>
1238
+
1239
+ <div style="display: flex; gap: 0.5rem; flex-wrap: wrap;">
1240
+ <button
1241
+ @click=${() => {
1242
+ const input = document.getElementById('focus-info') as any;
1243
+ const pos = input?.getCursorPosition();
1244
+ alert(`Cursor position: ${pos}`);
1245
+ }}
1246
+ >Get Cursor Position</button>
1247
+
1248
+ <button
1249
+ @click=${() => {
1250
+ const input = document.getElementById('focus-info') as any;
1251
+ const text = input?.getSelectedText();
1252
+ alert(`Selected text: "${text}"`);
1253
+ }}
1254
+ >Get Selected Text</button>
1255
+
1256
+ <button
1257
+ @click=${() => {
1258
+ const input = document.getElementById('focus-info') as any;
1259
+ const focused = input?.isFocused();
1260
+ alert(`Is focused: ${focused}`);
1261
+ }}
1262
+ >Check Focus State</button>
1263
+ </div>
1264
+ </div>
1265
+ </div>
1266
+
1267
+ <div>
1268
+ <h3>Advanced Focus Options</h3>
1269
+ <div style="display: flex; flex-direction: column; gap: 1rem;">
1270
+ <nr-input
1271
+ id="advanced-focus"
1272
+ type="text"
1273
+ label="Advanced Focus Options"
1274
+ placeholder="Test advanced focus features"
1275
+ value="Advanced focus management testing"
1276
+ ></nr-input>
1277
+
1278
+ <div style="display: flex; gap: 0.5rem; flex-wrap: wrap;">
1279
+ <button
1280
+ @click=${() => {
1281
+ const input = document.getElementById('advanced-focus') as any;
1282
+ input?.focus({ cursor: 'all' });
1283
+ }}
1284
+ >Focus & Select All</button>
1285
+
1286
+ <button
1287
+ @click=${() => {
1288
+ const input = document.getElementById('advanced-focus') as any;
1289
+ input?.blur({ restoreCursor: true });
1290
+ setTimeout(() => input?.focus(), 1000);
1291
+ }}
1292
+ >Blur & Restore (1s delay)</button>
1293
+
1294
+ <button
1295
+ @click=${() => {
1296
+ const input = document.getElementById('advanced-focus') as any;
1297
+ input?.focus({
1298
+ preventScroll: true,
1299
+ cursor: 15,
1300
+ select: false
1301
+ });
1302
+ }}
1303
+ >Focus (No Scroll, Pos 15)</button>
1304
+ </div>
1305
+ </div>
1306
+ </div>
1307
+
1308
+ <div>
1309
+ <h3>Focus Events Demo</h3>
1310
+ <div style="display: flex; flex-direction: column; gap: 1rem;">
1311
+ <nr-input
1312
+ id="focus-events"
1313
+ type="text"
1314
+ label="Focus Events"
1315
+ placeholder="Focus/blur to see events in console"
1316
+ value="Event tracking demo"
1317
+ @nr-focus-change=${(e: CustomEvent) => {
1318
+ console.log('Focus change event:', e.detail);
1319
+ }}
1320
+ @nr-focus=${(e: CustomEvent) => {
1321
+ console.log('Focus event:', e.detail);
1322
+ }}
1323
+ @nr-blur=${(e: CustomEvent) => {
1324
+ console.log('Blur event:', e.detail);
1325
+ }}
1326
+ ></nr-input>
1327
+
1328
+ <p style="font-size: 0.875rem; color: #666; margin: 0;">
1329
+ Open browser console to see focus change events with cursor position and selection details.
1330
+ </p>
1331
+ </div>
1332
+ </div>
1333
+ </div>
1334
+ `,
1335
+ };
1336
+
1337
+ export const AdvancedValidation: Story = {
1338
+ parameters: {
1339
+ docs: {
1340
+ description: {
1341
+ story: 'Advanced validation features including custom validators, async validation, and cross-field validation.',
1342
+ },
1343
+ },
1344
+ },
1345
+ render: () => html`
1346
+ <div style="display: flex; flex-direction: column; gap: 2rem; padding: 1rem; max-width: 800px;">
1347
+ <h3>Advanced Validation Examples</h3>
1348
+
1349
+ <!-- Custom Validation Rules -->
1350
+ <div style="border: 1px solid #ddd; border-radius: 8px; padding: 1rem;">
1351
+ <h4>Custom Validation Rules</h4>
1352
+ <div style="display: flex; flex-direction: column; gap: 1rem;">
1353
+ <nr-input
1354
+ id="credit-card-input"
1355
+ type="text"
1356
+ label="Credit Card Number"
1357
+ placeholder="1234 5678 9012 3456"
1358
+ validation-trigger="change"
1359
+ help-text="Enter a valid credit card number - validation happens as you type"
1360
+ .rules=${[
1361
+ { required: true, message: 'Please input your credit card number!' },
1362
+ {
1363
+ pattern: /^[0-9\s-]{13,19}$/,
1364
+ message: 'Credit card number must be 13-19 digits'
1365
+ },
1366
+ {
1367
+ validator: (rule: any, value: any) => {
1368
+ if (!value) return Promise.resolve();
1369
+
1370
+ // Remove spaces and hyphens
1371
+ const cleaned = value.replace(/[\s-]/g, '');
1372
+
1373
+ // Check if it's all digits
1374
+ if (!/^\d+$/.test(cleaned)) {
1375
+ return Promise.reject(new Error('Credit card number must contain only digits'));
1376
+ }
1377
+
1378
+ // Check length
1379
+ if (cleaned.length < 13 || cleaned.length > 19) {
1380
+ return Promise.reject(new Error('Credit card number must be 13-19 digits'));
1381
+ }
1382
+
1383
+ // Luhn algorithm check
1384
+ let sum = 0;
1385
+ let isEven = false;
1386
+ for (let i = cleaned.length - 1; i >= 0; i--) {
1387
+ let digit = parseInt(cleaned[i]);
1388
+ if (isEven) {
1389
+ digit *= 2;
1390
+ if (digit > 9) digit -= 9;
1391
+ }
1392
+ sum += digit;
1393
+ isEven = !isEven;
1394
+ }
1395
+
1396
+ if (sum % 10 !== 0) {
1397
+ return Promise.reject(new Error('Invalid credit card number'));
1398
+ }
1399
+
1400
+ return Promise.resolve();
1401
+ }
1402
+ }
1403
+ ]}
1404
+ ></nr-input>
1405
+
1406
+ <nr-input
1407
+ id="zip-code-input"
1408
+ type="text"
1409
+ label="ZIP Code"
1410
+ placeholder="12345 or 12345-6789"
1411
+ validation-trigger="blur"
1412
+ help-text="Enter a valid US ZIP code"
1413
+ .rules=${[
1414
+ { required: true, message: 'Please input your ZIP code!' },
1415
+ {
1416
+ pattern: /^\d{5}(-\d{4})?$/,
1417
+ message: 'ZIP code must be in format 12345 or 12345-6789'
1418
+ }
1419
+ ]}
1420
+ ></nr-input>
1421
+
1422
+ <nr-input
1423
+ id="hex-color-input"
1424
+ type="text"
1425
+ label="Hex Color"
1426
+ placeholder="#FF0000 or #f00"
1427
+ .rules=${[
1428
+ { required: true, message: 'Please input a hex color!' },
1429
+ { pattern: /^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/, message: 'Color must be in hex format (#FF0000 or #f00)!' }
1430
+ ]}
1431
+ validation-trigger="change"
1432
+ help-text="Enter a valid hex color code - validation happens as you type"
1433
+ ></nr-input>
1434
+ </div>
1435
+ </div>
1436
+
1437
+ <!-- $ Validation -->
1438
+ <div style="border: 1px solid #ddd; border-radius: 8px; padding: 1rem;">
1439
+ <h4>Async Validation (Simulated API Calls)</h4>
1440
+ <div style="display: flex; flex-direction: column; gap: 1rem;">
1441
+ <nr-input
1442
+ id="username-async"
1443
+ type="text"
1444
+ label="Username Availability"
1445
+ placeholder="Check username availability"
1446
+ has-feedback
1447
+ .rules=${[
1448
+ { required: true, message: 'Please input your username!' },
1449
+ {
1450
+ validator: (rule: any, value: any) => {
1451
+ if (!value) return Promise.resolve();
1452
+ return new Promise<void>((resolve, reject) => {
1453
+ setTimeout(() => {
1454
+ const takenUsernames = ['admin', 'user', 'test', 'demo', 'guest'];
1455
+ if (takenUsernames.includes(value.toLowerCase())) {
1456
+ reject(new Error('Username is already taken'));
1457
+ } else {
1458
+ resolve();
1459
+ }
1460
+ }, 1000);
1461
+ });
1462
+ }
1463
+ }
1464
+ ]}
1465
+ validation-trigger="change"
1466
+ validation-debounce="500"
1467
+ help-text="We'll check if this username is available (try: admin, user, test) - validates while typing with 500ms debounce. Watch for spinner!"
1468
+ ></nr-input>
1469
+
1470
+ <nr-input
1471
+ id="domain-async"
1472
+ type="text"
1473
+ label="Domain Validation"
1474
+ placeholder="example.com"
1475
+ has-feedback
1476
+ .rules=${[
1477
+ { required: true, message: 'Please input a domain!' },
1478
+ {
1479
+ validator: (rule: any, value: any) => {
1480
+ if (!value) return Promise.resolve();
1481
+ return new Promise<void>((resolve, reject) => {
1482
+ setTimeout(() => {
1483
+ const validDomains = ['google.com', 'github.com', 'stackoverflow.com', 'example.com'];
1484
+ if (validDomains.includes(value.toLowerCase())) {
1485
+ resolve();
1486
+ } else {
1487
+ reject(new Error('Domain does not exist or is unreachable'));
1488
+ }
1489
+ }, 800);
1490
+ });
1491
+ }
1492
+ }
1493
+ ]}
1494
+ validation-trigger="change"
1495
+ validation-debounce="300"
1496
+ help-text="We'll validate if the domain exists (try: google.com, invalid-domain-123.xyz) - validates while typing with 300ms debounce. Watch for spinner!"
1497
+ ></nr-input>
1498
+ </div>
1499
+ </div>
1500
+
1501
+ <!-- Cross-field Validation -->
1502
+ <div style="border: 1px solid #ddd; border-radius: 8px; padding: 1rem;">
1503
+ <h4>Cross-field Validation</h4>
1504
+ <div style="display: flex; flex-direction: column; gap: 1rem;">
1505
+ <nr-input
1506
+ id="start-date"
1507
+ type="date"
1508
+ label="Start Date"
1509
+ .rules=${[
1510
+ { required: true, message: 'Please select a start date!' }
1511
+ ]}
1512
+ validation-trigger="change"
1513
+ help-text="Select a start date"
1514
+ ></nr-input>
1515
+
1516
+ <nr-input
1517
+ id="end-date"
1518
+ type="date"
1519
+ label="End Date"
1520
+ .rules=${[
1521
+ { required: true, message: 'Please select an end date!' },
1522
+ {
1523
+ validator: (rule: any, value: any) => {
1524
+ if (!value) return Promise.resolve();
1525
+ const startDateElement = document.getElementById('start-date') as any;
1526
+ const startDate = startDateElement?.value;
1527
+ if (startDate && new Date(value) <= new Date(startDate)) {
1528
+ return Promise.reject(new Error('End date must be after start date'));
1529
+ }
1530
+ return Promise.resolve();
1531
+ }
1532
+ }
1533
+ ]}
1534
+ validation-trigger="change"
1535
+ help-text="End date must be after start date"
1536
+ ></nr-input>
1537
+
1538
+ <nr-input
1539
+ id="new-password"
1540
+ type="password"
1541
+ label="New Password"
1542
+ placeholder="Enter new password"
1543
+ .rules=${[
1544
+ { required: true, message: 'Please input your password!' },
1545
+ { min: 8, message: 'Password must be at least 8 characters!' },
1546
+ {
1547
+ validator: (rule: any, value: any) => {
1548
+ if (!value) return Promise.resolve();
1549
+ const checks = [
1550
+ { test: /[A-Z]/.test(value), message: 'uppercase letter' },
1551
+ { test: /[a-z]/.test(value), message: 'lowercase letter' },
1552
+ { test: /\d/.test(value), message: 'number' },
1553
+ { test: /[!@#$%^&*(),.?":{}|<>]/.test(value), message: 'special character' }
1554
+ ];
1555
+ const failed = checks.filter(check => !check.test);
1556
+ if (failed.length > 0) {
1557
+ return Promise.reject(new Error(`Missing: ${failed.map(f => f.message).join(', ')}`));
1558
+ }
1559
+ return Promise.resolve();
1560
+ }
1561
+ }
1562
+ ]}
1563
+ validation-trigger="change"
1564
+ help-text="Password requirements: 8+ chars, uppercase, lowercase, number, special char"
1565
+ ></nr-input>
1566
+
1567
+ <nr-input
1568
+ id="confirm-new-password"
1569
+ type="password"
1570
+ label="Confirm New Password"
1571
+ placeholder="Confirm new password"
1572
+ .rules=${[
1573
+ { required: true, message: 'Please confirm your password!' },
1574
+ {
1575
+ validator: (rule: any, value: any) => {
1576
+ if (!value) return Promise.resolve();
1577
+ const newPasswordElement = document.getElementById('new-password') as any;
1578
+ const newPassword = newPasswordElement?.value;
1579
+ if (value !== newPassword) {
1580
+ return Promise.reject(new Error('Passwords do not match'));
1581
+ }
1582
+ return Promise.resolve();
1583
+ }
1584
+ }
1585
+ ]}
1586
+ validation-trigger="blur"
1587
+ help-text="Must match the new password"
1588
+ ></nr-input>
1589
+ </div>
1590
+ </div>
1591
+
1592
+ <!-- Dynamic Validation Rules -->
1593
+ <div style="border: 1px solid #ddd; border-radius: 8px; padding: 1rem;">
1594
+ <h4>Dynamic Validation Rules</h4>
1595
+ <div style="display: flex; flex-direction: column; gap: 1rem;">
1596
+ <div style="display: flex; align-items: center; gap: 1rem;">
1597
+ <label>Validation Mode:</label>
1598
+ <select id="validation-mode" style="padding: 0.5rem; border: 1px solid #ddd; border-radius: 4px;">
1599
+ <option value="basic">Basic (required only)</option>
1600
+ <option value="strict">Strict (length + format)</option>
1601
+ <option value="enterprise">Enterprise (all rules)</option>
1602
+ </select>
1603
+ </div>
1604
+
1605
+ <nr-input
1606
+ id="dynamic-input"
1607
+ type="text"
1608
+ label="Dynamic Validation Input"
1609
+ placeholder="Validation rules change based on mode"
1610
+ .rules=${[
1611
+ { required: true, message: 'This field is required!' }
1612
+ ]}
1613
+ validation-trigger="change"
1614
+ help-text="Change validation mode above to see different rules"
1615
+ ></nr-input>
1616
+ </div>
1617
+ </div>
1618
+ </div>
1619
+ `,
1620
+ };
1621
+
1622
+ export const ValidationPerformance: Story = {
1623
+ parameters: {
1624
+ docs: {
1625
+ description: {
1626
+ story: 'Performance testing for validation with multiple fields using declarative rules.',
1627
+ },
1628
+ },
1629
+ },
1630
+ render: () => html`
1631
+ <div style="display: flex; flex-direction: column; gap: 1rem; padding: 1rem; max-width: 600px;">
1632
+ <h3>Validation Performance Test</h3>
1633
+ <p style="font-size: 0.875rem; color: #666;">
1634
+ This form contains 20 fields with complex validation rules to test performance using declarative rules approach.
1635
+ </p>
1636
+
1637
+ <div style="display: grid; grid-template-columns: 1fr 1fr; gap: 1rem;">
1638
+ ${Array.from({ length: 20 }, (_, i) => html`
1639
+ <nr-input
1640
+ id="perf-input-${i}"
1641
+ type="text"
1642
+ label="Field ${i + 1}"
1643
+ placeholder="Enter value for field ${i + 1}"
1644
+ .rules=${[
1645
+ { required: true, message: 'This field is required!' },
1646
+ { min: 3, max: 50, message: 'Must be 3-50 characters!' },
1647
+ { pattern: /^[a-zA-Z0-9\s]+$/, message: 'Only letters, numbers and spaces allowed!' },
1648
+ {
1649
+ validator: (rule: any, value: any) => {
1650
+ if (!value) return Promise.resolve();
1651
+ if (value.includes('test')) {
1652
+ return Promise.reject(new Error('Cannot contain the word "test"'));
1653
+ }
1654
+ return Promise.resolve();
1655
+ }
1656
+ }
1657
+ ]}
1658
+ validation-trigger="change"
1659
+ ></nr-input>
1660
+ `)}
1661
+ </div>
1662
+
1663
+ <div style="margin-top: 1rem; padding: 1rem; background-color: #f9f9f9; border-radius: 8px;">
1664
+ <h4>Performance Info</h4>
1665
+ <p style="font-size: 0.875rem; color: #666;">
1666
+ All validation is handled declaratively through the rules property.
1667
+ Each field has multiple validation rules including required, length, pattern, and custom validator.
1668
+ </p>
1669
+ </div>
1670
+ </div>
1671
+ `,
1672
+ };
1673
+
1674
+ export const CustomIconColors: Story = {
1675
+ render: () => html`
1676
+ <div style="display: flex; flex-direction: column; gap: 2rem; max-width: 500px;">
1677
+ <h3>Icon Color Customization</h3>
1678
+
1679
+ <div style="padding: 1rem; border: 1px solid #e0e0e0; border-radius: 8px;">
1680
+ <h4>Global Icon Color Override</h4>
1681
+ <nr-input
1682
+ type="password"
1683
+ placeholder="Custom icon colors"
1684
+ value="example123"
1685
+ with-clear
1686
+ with-copy
1687
+ style="--nuraly-color-input-icon: #9c27b0; --nuraly-size-input-icon: 20px;"
1688
+ ></nr-input>
1689
+ <p style="font-size: 0.875rem; color: #666; margin-top: 0.5rem;">
1690
+ All icons are purple (20px) using: <code>--nuraly-color-input-icon: #9c27b0</code>
1691
+ </p>
1692
+ </div>
1693
+
1694
+ <div style="padding: 1rem; border: 1px solid #e0e0e0; border-radius: 8px;">
1695
+ <h4>Specific Icon Type Colors</h4>
1696
+ <nr-input
1697
+ type="text"
1698
+ placeholder="Error input with custom colors"
1699
+ state="error"
1700
+ value="Invalid value"
1701
+ with-clear
1702
+ style="
1703
+ --nuraly-color-input-error-icon: #ff5722;
1704
+ --nuraly-color-input-clear-icon: #4caf50;
1705
+ --nuraly-size-input-icon: 18px;
1706
+ "
1707
+ ></nr-input>
1708
+ <p style="font-size: 0.875rem; color: #666; margin-top: 0.5rem;">
1709
+ Error icon is orange, clear icon is green using specific CSS variables
1710
+ </p>
1711
+ </div>
1712
+
1713
+ <div style="padding: 1rem; border: 1px solid #e0e0e0; border-radius: 8px;">
1714
+ <h4>Number Input with Custom Icon Colors</h4>
1715
+ <nr-input
1716
+ type="number"
1717
+ placeholder="Number with custom increment icons"
1718
+ value="42"
1719
+ style="--nuraly-color-input-number-icons: #2196f3;"
1720
+ ></nr-input>
1721
+ <p style="font-size: 0.875rem; color: #666; margin-top: 0.5rem;">
1722
+ Number increment/decrement icons are blue using: <code>--nuraly-color-input-number-icons: #2196f3</code>
1723
+ </p>
1724
+ </div>
1725
+
1726
+ <div style="padding: 1rem; border: 1px solid #e0e0e0; border-radius: 8px;">
1727
+ <h4>Interactive State Colors</h4>
1728
+ <nr-input
1729
+ type="password"
1730
+ placeholder="Hover/active custom colors"
1731
+ value="interactive"
1732
+ style="
1733
+ --nuraly-color-input-icon: #795548;
1734
+ --nuraly-color-input-icon-hover: #ff9800;
1735
+ --nuraly-color-input-icon-active: #f44336;
1736
+ "
1737
+ ></nr-input>
1738
+ <p style="font-size: 0.875rem; color: #666; margin-top: 0.5rem;">
1739
+ Brown default, orange on hover, red on active - try interacting with the password toggle icon
1740
+ </p>
1741
+ </div>
1742
+
1743
+ <div style="padding: 1rem; background-color: #f5f5f5; border-radius: 8px;">
1744
+ <h4>Available CSS Variables</h4>
1745
+ <ul style="font-size: 0.875rem; color: #444; margin: 0.5rem 0;">
1746
+ <li><code>--nuraly-color-input-icon</code> - All icons</li>
1747
+ <li><code>--nuraly-size-input-icon</code> - Icon size</li>
1748
+ <li><code>--nuraly-color-input-error-icon</code> - Error state icons</li>
1749
+ <li><code>--nuraly-color-input-warning-icon</code> - Warning state icons</li>
1750
+ <li><code>--nuraly-color-input-password-icon</code> - Password toggle</li>
1751
+ <li><code>--nuraly-color-input-clear-icon</code> - Clear button</li>
1752
+ <li><code>--nuraly-color-input-copy-icon</code> - Copy button</li>
1753
+ <li><code>--nuraly-color-input-number-icons</code> - Number increment/decrement</li>
1754
+ <li><code>--nuraly-color-input-calendar-icon</code> - Calendar icons</li>
1755
+ </ul>
1756
+ </div>
1757
+ </div>
1758
+ `,
1759
+ };