@wavemaker-ai/foundation-css 1.0.0-rc.647469

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 (630) hide show
  1. package/cjs/foundation-css.cjs +9454 -0
  2. package/cjs/src_tokens_mobile_components_accordion-pane_accordion-pane_json.foundation-css.cjs +14 -0
  3. package/cjs/src_tokens_mobile_components_accordion_accordion_json.foundation-css.cjs +14 -0
  4. package/cjs/src_tokens_mobile_components_anchor_anchor_json.foundation-css.cjs +14 -0
  5. package/cjs/src_tokens_mobile_components_audio_audio_json.foundation-css.cjs +14 -0
  6. package/cjs/src_tokens_mobile_components_badge_badge_json.foundation-css.cjs +14 -0
  7. package/cjs/src_tokens_mobile_components_barcodescanner_barcodescanner_json.foundation-css.cjs +14 -0
  8. package/cjs/src_tokens_mobile_components_bottomsheet_bottomsheet_json.foundation-css.cjs +14 -0
  9. package/cjs/src_tokens_mobile_components_breadcrumb_breadcrumb_json.foundation-css.cjs +14 -0
  10. package/cjs/src_tokens_mobile_components_button-group_button-group_json.foundation-css.cjs +14 -0
  11. package/cjs/src_tokens_mobile_components_button_button_json.foundation-css.cjs +14 -0
  12. package/cjs/src_tokens_mobile_components_calendar_calendar_json.foundation-css.cjs +14 -0
  13. package/cjs/src_tokens_mobile_components_camera_camera_json.foundation-css.cjs +14 -0
  14. package/cjs/src_tokens_mobile_components_cards_cards_json.foundation-css.cjs +14 -0
  15. package/cjs/src_tokens_mobile_components_carousel_carousel_json.foundation-css.cjs +14 -0
  16. package/cjs/src_tokens_mobile_components_checkbox_checkbox_json.foundation-css.cjs +14 -0
  17. package/cjs/src_tokens_mobile_components_checkboxset_checkboxset_json.foundation-css.cjs +14 -0
  18. package/cjs/src_tokens_mobile_components_chips_chips_json.foundation-css.cjs +14 -0
  19. package/cjs/src_tokens_mobile_components_container_container_json.foundation-css.cjs +14 -0
  20. package/cjs/src_tokens_mobile_components_currency_currency_json.foundation-css.cjs +14 -0
  21. package/cjs/src_tokens_mobile_components_datetime_datetime_json.foundation-css.cjs +14 -0
  22. package/cjs/src_tokens_mobile_components_dropdown-menu_dropdown-menu_json.foundation-css.cjs +14 -0
  23. package/cjs/src_tokens_mobile_components_fileupload_fileupload_json.foundation-css.cjs +14 -0
  24. package/cjs/src_tokens_mobile_components_form-controls_form-controls_json.foundation-css.cjs +14 -0
  25. package/cjs/src_tokens_mobile_components_form-wrapper_form-wrapper_json.foundation-css.cjs +14 -0
  26. package/cjs/src_tokens_mobile_components_grid-layout_grid-layout_json.foundation-css.cjs +14 -0
  27. package/cjs/src_tokens_mobile_components_icon_icon_json.foundation-css.cjs +14 -0
  28. package/cjs/src_tokens_mobile_components_label_label_json.foundation-css.cjs +14 -0
  29. package/cjs/src_tokens_mobile_components_list_list_json.foundation-css.cjs +14 -0
  30. package/cjs/src_tokens_mobile_components_listtemplate_listtemplate_json.foundation-css.cjs +14 -0
  31. package/cjs/src_tokens_mobile_components_login_login_json.foundation-css.cjs +14 -0
  32. package/cjs/src_tokens_mobile_components_lottie_lottie_json.foundation-css.cjs +14 -0
  33. package/cjs/src_tokens_mobile_components_message_message_json.foundation-css.cjs +14 -0
  34. package/cjs/src_tokens_mobile_components_modal-dialog_modal-dialog_json.foundation-css.cjs +14 -0
  35. package/cjs/src_tokens_mobile_components_nav_nav_json.foundation-css.cjs +14 -0
  36. package/cjs/src_tokens_mobile_components_navbar_navbar_json.foundation-css.cjs +14 -0
  37. package/cjs/src_tokens_mobile_components_navitem_navitem_json.foundation-css.cjs +14 -0
  38. package/cjs/src_tokens_mobile_components_page-content_page-content_json.foundation-css.cjs +14 -0
  39. package/cjs/src_tokens_mobile_components_page-left-nav_page-left-nav_json.foundation-css.cjs +14 -0
  40. package/cjs/src_tokens_mobile_components_panel-footer_panel-footer_json.foundation-css.cjs +14 -0
  41. package/cjs/src_tokens_mobile_components_panel_panel_json.foundation-css.cjs +14 -0
  42. package/cjs/src_tokens_mobile_components_partial-container_partial-container_json.foundation-css.cjs +14 -0
  43. package/cjs/src_tokens_mobile_components_picture_picture_json.foundation-css.cjs +14 -0
  44. package/cjs/src_tokens_mobile_components_popover_popover_json.foundation-css.cjs +14 -0
  45. package/cjs/src_tokens_mobile_components_progress-bar_progress-bar_json.foundation-css.cjs +14 -0
  46. package/cjs/src_tokens_mobile_components_progress-circle_progress-circle_json.foundation-css.cjs +14 -0
  47. package/cjs/src_tokens_mobile_components_radioset_radioset_json.foundation-css.cjs +14 -0
  48. package/cjs/src_tokens_mobile_components_rating_rating_json.foundation-css.cjs +14 -0
  49. package/cjs/src_tokens_mobile_components_scrollbar_scrollbar_json.foundation-css.cjs +14 -0
  50. package/cjs/src_tokens_mobile_components_search_search_json.foundation-css.cjs +14 -0
  51. package/cjs/src_tokens_mobile_components_select_select_json.foundation-css.cjs +14 -0
  52. package/cjs/src_tokens_mobile_components_slider_slider_json.foundation-css.cjs +14 -0
  53. package/cjs/src_tokens_mobile_components_spinner_spinner_json.foundation-css.cjs +14 -0
  54. package/cjs/src_tokens_mobile_components_switch_switch_json.foundation-css.cjs +14 -0
  55. package/cjs/src_tokens_mobile_components_tabbar_tabbar_json.foundation-css.cjs +14 -0
  56. package/cjs/src_tokens_mobile_components_tabs_tabs_json.foundation-css.cjs +14 -0
  57. package/cjs/src_tokens_mobile_components_textarea_textarea_json.foundation-css.cjs +14 -0
  58. package/cjs/src_tokens_mobile_components_tile_tile_json.foundation-css.cjs +14 -0
  59. package/cjs/src_tokens_mobile_components_toast_toast_json.foundation-css.cjs +14 -0
  60. package/cjs/src_tokens_mobile_components_toggle_toggle_json.foundation-css.cjs +14 -0
  61. package/cjs/src_tokens_mobile_components_video_video_json.foundation-css.cjs +14 -0
  62. package/cjs/src_tokens_mobile_components_webview_webview_json.foundation-css.cjs +14 -0
  63. package/cjs/src_tokens_mobile_components_wizard_wizard_json.foundation-css.cjs +14 -0
  64. package/cjs/src_tokens_web_components_accordion_accordion_json.foundation-css.cjs +14 -0
  65. package/cjs/src_tokens_web_components_anchor_anchor_json.foundation-css.cjs +14 -0
  66. package/cjs/src_tokens_web_components_audio_audio_json.foundation-css.cjs +14 -0
  67. package/cjs/src_tokens_web_components_badge_badge_json.foundation-css.cjs +14 -0
  68. package/cjs/src_tokens_web_components_breadcrumb_breadcrumb_json.foundation-css.cjs +14 -0
  69. package/cjs/src_tokens_web_components_button-group_button-group_json.foundation-css.cjs +14 -0
  70. package/cjs/src_tokens_web_components_button_button_json.foundation-css.cjs +14 -0
  71. package/cjs/src_tokens_web_components_calendar_calendar_json.foundation-css.cjs +14 -0
  72. package/cjs/src_tokens_web_components_cards_cards_json.foundation-css.cjs +14 -0
  73. package/cjs/src_tokens_web_components_carousel_carousel_json.foundation-css.cjs +14 -0
  74. package/cjs/src_tokens_web_components_checkbox_checkbox_json.foundation-css.cjs +14 -0
  75. package/cjs/src_tokens_web_components_checkboxset_checkboxset_json.foundation-css.cjs +14 -0
  76. package/cjs/src_tokens_web_components_chips_chips_json.foundation-css.cjs +14 -0
  77. package/cjs/src_tokens_web_components_color-picker_color-picker_json.foundation-css.cjs +14 -0
  78. package/cjs/src_tokens_web_components_container_container_json.foundation-css.cjs +14 -0
  79. package/cjs/src_tokens_web_components_currency_currency_json.foundation-css.cjs +14 -0
  80. package/cjs/src_tokens_web_components_data-table_data-table_json.foundation-css.cjs +14 -0
  81. package/cjs/src_tokens_web_components_date_date_json.foundation-css.cjs +14 -0
  82. package/cjs/src_tokens_web_components_dropdown-menu_dropdown-menu_json.foundation-css.cjs +14 -0
  83. package/cjs/src_tokens_web_components_fileupload_fileupload_json.foundation-css.cjs +14 -0
  84. package/cjs/src_tokens_web_components_form-controls_form-controls_json.foundation-css.cjs +14 -0
  85. package/cjs/src_tokens_web_components_grid-layout_grid-layout_json.foundation-css.cjs +14 -0
  86. package/cjs/src_tokens_web_components_icon_icon_json.foundation-css.cjs +14 -0
  87. package/cjs/src_tokens_web_components_iconbutton-toggleable_iconbutton-toggleable_json.foundation-css.cjs +14 -0
  88. package/cjs/src_tokens_web_components_iframe_iframe_json.foundation-css.cjs +14 -0
  89. package/cjs/src_tokens_web_components_label_label_json.foundation-css.cjs +14 -0
  90. package/cjs/src_tokens_web_components_list_list_json.foundation-css.cjs +14 -0
  91. package/cjs/src_tokens_web_components_message_message_json.foundation-css.cjs +14 -0
  92. package/cjs/src_tokens_web_components_modal-dialog_modal-dialog_json.foundation-css.cjs +14 -0
  93. package/cjs/src_tokens_web_components_nav_nav_json.foundation-css.cjs +14 -0
  94. package/cjs/src_tokens_web_components_page-content_page-content_json.foundation-css.cjs +14 -0
  95. package/cjs/src_tokens_web_components_page-footer_page-footer_json.foundation-css.cjs +14 -0
  96. package/cjs/src_tokens_web_components_page-header_page-header_json.foundation-css.cjs +14 -0
  97. package/cjs/src_tokens_web_components_page-left-nav_page-left-nav_json.foundation-css.cjs +14 -0
  98. package/cjs/src_tokens_web_components_page-right-nav_page-right-nav_json.foundation-css.cjs +14 -0
  99. package/cjs/src_tokens_web_components_page-top-nav_page-top-nav_json.foundation-css.cjs +14 -0
  100. package/cjs/src_tokens_web_components_pagination_pagination_json.foundation-css.cjs +14 -0
  101. package/cjs/src_tokens_web_components_panel_panel_json.foundation-css.cjs +14 -0
  102. package/cjs/src_tokens_web_components_picture_picture_json.foundation-css.cjs +14 -0
  103. package/cjs/src_tokens_web_components_popover_popover_json.foundation-css.cjs +14 -0
  104. package/cjs/src_tokens_web_components_progress-bar_progress-bar_json.foundation-css.cjs +14 -0
  105. package/cjs/src_tokens_web_components_progress-circle_progress-circle_json.foundation-css.cjs +14 -0
  106. package/cjs/src_tokens_web_components_radioset_radioset_json.foundation-css.cjs +14 -0
  107. package/cjs/src_tokens_web_components_rating_rating_json.foundation-css.cjs +14 -0
  108. package/cjs/src_tokens_web_components_richtext-editor_richtext-editor_json.foundation-css.cjs +14 -0
  109. package/cjs/src_tokens_web_components_scrollbar_scrollbar_json.foundation-css.cjs +14 -0
  110. package/cjs/src_tokens_web_components_search_search_json.foundation-css.cjs +14 -0
  111. package/cjs/src_tokens_web_components_slider_slider_json.foundation-css.cjs +14 -0
  112. package/cjs/src_tokens_web_components_spinner_spinner_json.foundation-css.cjs +14 -0
  113. package/cjs/src_tokens_web_components_switch_switch_json.foundation-css.cjs +14 -0
  114. package/cjs/src_tokens_web_components_tabs_tabs_json.foundation-css.cjs +14 -0
  115. package/cjs/src_tokens_web_components_tile_tile_json.foundation-css.cjs +14 -0
  116. package/cjs/src_tokens_web_components_time_time_json.foundation-css.cjs +14 -0
  117. package/cjs/src_tokens_web_components_toast_toast_json.foundation-css.cjs +14 -0
  118. package/cjs/src_tokens_web_components_toggle_toggle_json.foundation-css.cjs +14 -0
  119. package/cjs/src_tokens_web_components_tree_tree_json.foundation-css.cjs +14 -0
  120. package/cjs/src_tokens_web_components_video_video_json.foundation-css.cjs +14 -0
  121. package/cjs/src_tokens_web_components_wizard_wizard_json.foundation-css.cjs +14 -0
  122. package/foundation/fonts/fonts/roboto.ttf +0 -0
  123. package/foundation/fonts/icons/fontawesome/fontawesome-webfont.eot +0 -0
  124. package/foundation/fonts/icons/fontawesome/fontawesome-webfont.svg +686 -0
  125. package/foundation/fonts/icons/fontawesome/fontawesome-webfont.ttf +0 -0
  126. package/foundation/fonts/icons/fontawesome/fontawesome-webfont.woff +0 -0
  127. package/foundation/fonts/icons/material/materialicon.eot +0 -0
  128. package/foundation/fonts/icons/material/materialicon.svg +97 -0
  129. package/foundation/fonts/icons/material/materialicon.ttf +0 -0
  130. package/foundation/fonts/icons/material/materialicon.woff +0 -0
  131. package/foundation/fonts/icons/summernote/summernote.eot +0 -0
  132. package/foundation/fonts/icons/summernote/summernote.svg +63 -0
  133. package/foundation/fonts/icons/summernote/summernote.ttf +0 -0
  134. package/foundation/fonts/icons/summernote/summernote.woff +0 -0
  135. package/foundation/fonts/icons/wavicon/wavicon.eot +0 -0
  136. package/foundation/fonts/icons/wavicon/wavicon.svg +1160 -0
  137. package/foundation/fonts/icons/wavicon/wavicon.ttf +0 -0
  138. package/foundation/fonts/icons/wavicon/wavicon.woff +0 -0
  139. package/foundation/fonts/icons/wm-streamline-light/wm-streamline-light-icon.eot +0 -0
  140. package/foundation/fonts/icons/wm-streamline-light/wm-streamline-light-icon.svg +244 -0
  141. package/foundation/fonts/icons/wm-streamline-light/wm-streamline-light-icon.ttf +0 -0
  142. package/foundation/fonts/icons/wm-streamline-light/wm-streamline-light-icon.woff +0 -0
  143. package/foundation/fonts/icons/wm-streamline-regular/wm-streamline-regular-icon.eot +0 -0
  144. package/foundation/fonts/icons/wm-streamline-regular/wm-streamline-regular-icon.svg +216 -0
  145. package/foundation/fonts/icons/wm-streamline-regular/wm-streamline-regular-icon.ttf +0 -0
  146. package/foundation/fonts/icons/wm-streamline-regular/wm-streamline-regular-icon.woff +0 -0
  147. package/foundation/foundation.css +26884 -0
  148. package/foundation/foundation.min.css +1 -0
  149. package/foundation/icon-fonts.min.css +1 -0
  150. package/index.d.ts +10 -0
  151. package/index.js +64 -0
  152. package/index.js.map +1 -0
  153. package/native_mobile.index.d.ts +280 -0
  154. package/native_mobile.index.js +321 -0
  155. package/native_mobile.index.js.map +1 -0
  156. package/npm-shrinkwrap.json +4373 -0
  157. package/package-lock.json +4373 -0
  158. package/package.json +57 -0
  159. package/src/node/index.d.ts +1 -0
  160. package/src/node/index.js +2 -0
  161. package/src/node/index.js.map +1 -0
  162. package/src/styles/mobile/components/advanced/carousel/carousel-content.less +3 -0
  163. package/src/styles/mobile/components/advanced/carousel/carousel-template.less +3 -0
  164. package/src/styles/mobile/components/advanced/carousel.less +141 -0
  165. package/src/styles/mobile/components/advanced/customwidgetcontainer.less +0 -0
  166. package/src/styles/mobile/components/advanced/login.less +11 -0
  167. package/src/styles/mobile/components/advanced/network-toast.less +15 -0
  168. package/src/styles/mobile/components/advanced/webview.less +4 -0
  169. package/src/styles/mobile/components/basic/anchor.less +38 -0
  170. package/src/styles/mobile/components/basic/audio.less +3 -0
  171. package/src/styles/mobile/components/basic/base.less +0 -0
  172. package/src/styles/mobile/components/basic/bottomsheet.less +32 -0
  173. package/src/styles/mobile/components/basic/button.less +76 -0
  174. package/src/styles/mobile/components/basic/buttongroup.less +43 -0
  175. package/src/styles/mobile/components/basic/custom.less +6 -0
  176. package/src/styles/mobile/components/basic/icon.less +22 -0
  177. package/src/styles/mobile/components/basic/label.less +314 -0
  178. package/src/styles/mobile/components/basic/lottie.less +10 -0
  179. package/src/styles/mobile/components/basic/message.less +77 -0
  180. package/src/styles/mobile/components/basic/modal.less +9 -0
  181. package/src/styles/mobile/components/basic/picture.less +48 -0
  182. package/src/styles/mobile/components/basic/progress-bar.less +75 -0
  183. package/src/styles/mobile/components/basic/progress-circle.less +28 -0
  184. package/src/styles/mobile/components/basic/search.less +110 -0
  185. package/src/styles/mobile/components/basic/skeleton.less +9 -0
  186. package/src/styles/mobile/components/basic/spinner.less +41 -0
  187. package/src/styles/mobile/components/basic/video.less +4 -0
  188. package/src/styles/mobile/components/chart/area-chart.less +81 -0
  189. package/src/styles/mobile/components/chart/bar-chart.less +39 -0
  190. package/src/styles/mobile/components/chart/bubble-chart.less +36 -0
  191. package/src/styles/mobile/components/chart/column-chart.less +36 -0
  192. package/src/styles/mobile/components/chart/donut-chart.less +33 -0
  193. package/src/styles/mobile/components/chart/line-chart.less +36 -0
  194. package/src/styles/mobile/components/chart/pie-chart.less +30 -0
  195. package/src/styles/mobile/components/container/accordion/accordionpane.less +9 -0
  196. package/src/styles/mobile/components/container/accordion.less +150 -0
  197. package/src/styles/mobile/components/container/layoutgrid/gridcolumn.less +8 -0
  198. package/src/styles/mobile/components/container/layoutgrid/gridrow.less +7 -0
  199. package/src/styles/mobile/components/container/layoutgrid.less +11 -0
  200. package/src/styles/mobile/components/container/linearlayout/linearlayoutitem.less +3 -0
  201. package/src/styles/mobile/components/container/linearlayout.less +3 -0
  202. package/src/styles/mobile/components/container/panel/panel-content.less +3 -0
  203. package/src/styles/mobile/components/container/panel/panel-footer.less +15 -0
  204. package/src/styles/mobile/components/container/panel.less +168 -0
  205. package/src/styles/mobile/components/container/tabs/tab-header.less +67 -0
  206. package/src/styles/mobile/components/container/tabs/tabpane.less +4 -0
  207. package/src/styles/mobile/components/container/tabs.less +12 -0
  208. package/src/styles/mobile/components/container/tile.less +47 -0
  209. package/src/styles/mobile/components/container/wizard/wizardstep.less +3 -0
  210. package/src/styles/mobile/components/container/wizard.less +89 -0
  211. package/src/styles/mobile/components/container.less +50 -0
  212. package/src/styles/mobile/components/data/card/card-content.less +6 -0
  213. package/src/styles/mobile/components/data/card/card-footer.less +5 -0
  214. package/src/styles/mobile/components/data/card.less +55 -0
  215. package/src/styles/mobile/components/data/form/form-body.less +3 -0
  216. package/src/styles/mobile/components/data/form/form-field.less +9 -0
  217. package/src/styles/mobile/components/data/form/form-footer.less +3 -0
  218. package/src/styles/mobile/components/data/form.less +394 -0
  219. package/src/styles/mobile/components/data/list/list-action-template.less +6 -0
  220. package/src/styles/mobile/components/data/list/list-template.less +6 -0
  221. package/src/styles/mobile/components/data/list.less +20 -0
  222. package/src/styles/mobile/components/device/barcodescanner.less +25 -0
  223. package/src/styles/mobile/components/device/camera.less +18 -0
  224. package/src/styles/mobile/components/dialogs/alertdialog.less +15 -0
  225. package/src/styles/mobile/components/dialogs/confirmdialog.less +30 -0
  226. package/src/styles/mobile/components/dialogs/dialog.less +132 -0
  227. package/src/styles/mobile/components/dialogs/dialogactions.less +3 -0
  228. package/src/styles/mobile/components/dialogs/dialogcontent.less +3 -0
  229. package/src/styles/mobile/components/input/basedataset.less +0 -0
  230. package/src/styles/mobile/components/input/baseinput.less +0 -0
  231. package/src/styles/mobile/components/input/basenumber.less +0 -0
  232. package/src/styles/mobile/components/input/calendar/views.less +3 -0
  233. package/src/styles/mobile/components/input/calendar.less +110 -0
  234. package/src/styles/mobile/components/input/checkbox.less +47 -0
  235. package/src/styles/mobile/components/input/checkboxset.less +62 -0
  236. package/src/styles/mobile/components/input/chips.less +98 -0
  237. package/src/styles/mobile/components/input/composite.less +4 -0
  238. package/src/styles/mobile/components/input/currency.less +71 -0
  239. package/src/styles/mobile/components/input/epoch/wheelpickermodal/datetime-picker-modal.less +62 -0
  240. package/src/styles/mobile/components/input/fileupload.less +26 -0
  241. package/src/styles/mobile/components/input/radioset.less +75 -0
  242. package/src/styles/mobile/components/input/rating.less +30 -0
  243. package/src/styles/mobile/components/input/select.less +41 -0
  244. package/src/styles/mobile/components/input/slider.less +39 -0
  245. package/src/styles/mobile/components/input/switch.less +44 -0
  246. package/src/styles/mobile/components/input/toggle.less +61 -0
  247. package/src/styles/mobile/components/navigation/appnavbar.less +106 -0
  248. package/src/styles/mobile/components/navigation/basenav.less +3 -0
  249. package/src/styles/mobile/components/navigation/menu.less +52 -0
  250. package/src/styles/mobile/components/navigation/navbar.less +9 -0
  251. package/src/styles/mobile/components/navigation/navitem.less +88 -0
  252. package/src/styles/mobile/components/navigation/popover.less +83 -0
  253. package/src/styles/mobile/components/page/content.less +3 -0
  254. package/src/styles/mobile/components/page/left-panel.less +7 -0
  255. package/src/styles/mobile/components/page/page-content.less +4 -0
  256. package/src/styles/mobile/components/page/partial-container.less +4 -0
  257. package/src/styles/mobile/components/page/partial.less +6 -0
  258. package/src/styles/mobile/components/page/tabbar.less +93 -0
  259. package/src/styles/mobile/components/page.less +3 -0
  260. package/src/styles/mobile/components/prefab.less +6 -0
  261. package/src/styles/mobile/components/tokens.dark.css +68 -0
  262. package/src/styles/mobile/components/tokens.light.css +1354 -0
  263. package/src/styles/mobile/components/variables/accordion.variant.less +18 -0
  264. package/src/styles/mobile/components/variables/button.variant.less +254 -0
  265. package/src/styles/mobile/components/variables/cards.variant.less +23 -0
  266. package/src/styles/mobile/components/variables/carousel.variant.less +18 -0
  267. package/src/styles/mobile/components/variables/checkbox.variant.less +16 -0
  268. package/src/styles/mobile/components/variables/checkboxset.variant.less +18 -0
  269. package/src/styles/mobile/components/variables/chips.variant.less +40 -0
  270. package/src/styles/mobile/components/variables/container.variant.less +26 -0
  271. package/src/styles/mobile/components/variables/form-controls.variant.less +105 -0
  272. package/src/styles/mobile/components/variables/icon.variant.less +48 -0
  273. package/src/styles/mobile/components/variables/label.variant.less +155 -0
  274. package/src/styles/mobile/components/variables/message.variant.less +29 -0
  275. package/src/styles/mobile/components/variables/navitem.variant.less +14 -0
  276. package/src/styles/mobile/components/variables/panel.variant.less +55 -0
  277. package/src/styles/mobile/components/variables/picture.variant.less +28 -0
  278. package/src/styles/mobile/components/variables/progress-bar.variant.less +24 -0
  279. package/src/styles/mobile/components/variables/progress-circle.variant.less +24 -0
  280. package/src/styles/mobile/components/variables/radioset.variant.less +12 -0
  281. package/src/styles/mobile/components/variables/rating.variant.less +8 -0
  282. package/src/styles/mobile/components/variables/switch.variant.less +14 -0
  283. package/src/styles/mobile/components/variables/tabbar.variant.less +16 -0
  284. package/src/styles/mobile/components/variables/tabs.variant.less +21 -0
  285. package/src/styles/mobile/components/variables/tile.variant.less +79 -0
  286. package/src/styles/mobile/components/variables/toggle.variant.less +17 -0
  287. package/src/styles/mobile/components/variables/wizard.variant.less +26 -0
  288. package/src/styles/mobile/studio/advanced/carousel.less +75 -0
  289. package/src/styles/mobile/studio/advanced/login.less +6 -0
  290. package/src/styles/mobile/studio/advanced/styles.less +3 -0
  291. package/src/styles/mobile/studio/advanced/webview.less +4 -0
  292. package/src/styles/mobile/studio/basic/anchor.less +16 -0
  293. package/src/styles/mobile/studio/basic/button-group.less +47 -0
  294. package/src/styles/mobile/studio/basic/button.less +22 -0
  295. package/src/styles/mobile/studio/basic/icon.less +21 -0
  296. package/src/styles/mobile/studio/basic/label.less +29 -0
  297. package/src/styles/mobile/studio/basic/message.less +75 -0
  298. package/src/styles/mobile/studio/basic/picture.less +10 -0
  299. package/src/styles/mobile/studio/basic/progress-bar.less +6 -0
  300. package/src/styles/mobile/studio/basic/progress-circle.less +9 -0
  301. package/src/styles/mobile/studio/basic/search.less +39 -0
  302. package/src/styles/mobile/studio/basic/spinner.less +6 -0
  303. package/src/styles/mobile/studio/basic/styles.less +11 -0
  304. package/src/styles/mobile/studio/container/accordion.less +23 -0
  305. package/src/styles/mobile/studio/container/container.less +19 -0
  306. package/src/styles/mobile/studio/container/grid.less +8 -0
  307. package/src/styles/mobile/studio/container/linearlayout.less +8 -0
  308. package/src/styles/mobile/studio/container/panel.less +42 -0
  309. package/src/styles/mobile/studio/container/styles.less +7 -0
  310. package/src/styles/mobile/studio/container/tabs.less +122 -0
  311. package/src/styles/mobile/studio/container/tile.less +7 -0
  312. package/src/styles/mobile/studio/container/wizard.less +48 -0
  313. package/src/styles/mobile/studio/data/card.less +25 -0
  314. package/src/styles/mobile/studio/data/form.less +22 -0
  315. package/src/styles/mobile/studio/data/list.less +25 -0
  316. package/src/styles/mobile/studio/data/listtemplate.less +11 -0
  317. package/src/styles/mobile/studio/data/styles.less +4 -0
  318. package/src/styles/mobile/studio/device/barcode.less +17 -0
  319. package/src/styles/mobile/studio/device/camera.less +4 -0
  320. package/src/styles/mobile/studio/device/styles.less +2 -0
  321. package/src/styles/mobile/studio/dialogs/alert-dialog.less +10 -0
  322. package/src/styles/mobile/studio/dialogs/base-dialog.less +180 -0
  323. package/src/styles/mobile/studio/dialogs/confirm-dialog.less +26 -0
  324. package/src/styles/mobile/studio/dialogs/styles.less +3 -0
  325. package/src/styles/mobile/studio/input/calendar.less +68 -0
  326. package/src/styles/mobile/studio/input/checkbox.less +78 -0
  327. package/src/styles/mobile/studio/input/checkboxset.less +82 -0
  328. package/src/styles/mobile/studio/input/chips.less +11 -0
  329. package/src/styles/mobile/studio/input/currency.less +24 -0
  330. package/src/styles/mobile/studio/input/date.less +7 -0
  331. package/src/styles/mobile/studio/input/epoch/datetime-picker-modal.less +49 -0
  332. package/src/styles/mobile/studio/input/form.less +204 -0
  333. package/src/styles/mobile/studio/input/number.less +6 -0
  334. package/src/styles/mobile/studio/input/radioset.less +110 -0
  335. package/src/styles/mobile/studio/input/rating.less +21 -0
  336. package/src/styles/mobile/studio/input/select.less +39 -0
  337. package/src/styles/mobile/studio/input/slider.less +132 -0
  338. package/src/styles/mobile/studio/input/styles.less +17 -0
  339. package/src/styles/mobile/studio/input/switch.less +13 -0
  340. package/src/styles/mobile/studio/input/text.less +6 -0
  341. package/src/styles/mobile/studio/input/textarea.less +5 -0
  342. package/src/styles/mobile/studio/input/toggle.less +99 -0
  343. package/src/styles/mobile/studio/layouts/appnavbar.less +78 -0
  344. package/src/styles/mobile/studio/layouts/content.less +5 -0
  345. package/src/styles/mobile/studio/layouts/page-content.less +11 -0
  346. package/src/styles/mobile/studio/layouts/page.less +5 -0
  347. package/src/styles/mobile/studio/layouts/styles.less +5 -0
  348. package/src/styles/mobile/studio/layouts/tabbar.less +50 -0
  349. package/src/styles/mobile/studio/navigation/menu.less +21 -0
  350. package/src/styles/mobile/studio/navigation/nav.less +4 -0
  351. package/src/styles/mobile/studio/navigation/popover.less +31 -0
  352. package/src/styles/mobile/studio/navigation/styles.less +3 -0
  353. package/src/styles/mobile/studio/styles.less +17 -0
  354. package/src/token-validation/component-token-schema.d.ts +171 -0
  355. package/src/token-validation/component-token-schema.js +148 -0
  356. package/src/token-validation/component-token-schema.js.map +1 -0
  357. package/src/token-validation/constants.d.ts +42 -0
  358. package/src/token-validation/constants.js +55 -0
  359. package/src/token-validation/constants.js.map +1 -0
  360. package/src/token-validation/global-token-schema.d.ts +38 -0
  361. package/src/token-validation/global-token-schema.js +42 -0
  362. package/src/token-validation/global-token-schema.js.map +1 -0
  363. package/src/token-validation/validate-token.d.ts +72 -0
  364. package/src/token-validation/validate-token.js +1070 -0
  365. package/src/token-validation/validate-token.js.map +1 -0
  366. package/src/token-validation/validate-value.d.ts +13 -0
  367. package/src/token-validation/validate-value.js +57 -0
  368. package/src/token-validation/validate-value.js.map +1 -0
  369. package/src/token-validation/validator-utils/common/constants.d.ts +185 -0
  370. package/src/token-validation/validator-utils/common/constants.js +281 -0
  371. package/src/token-validation/validator-utils/common/constants.js.map +1 -0
  372. package/src/token-validation/validator-utils/common/primitives.d.ts +14 -0
  373. package/src/token-validation/validator-utils/common/primitives.js +35 -0
  374. package/src/token-validation/validator-utils/common/primitives.js.map +1 -0
  375. package/src/token-validation/validator-utils/common/utils.d.ts +192 -0
  376. package/src/token-validation/validator-utils/common/utils.js +418 -0
  377. package/src/token-validation/validator-utils/common/utils.js.map +1 -0
  378. package/src/token-validation/validator-utils/native_mobile.d.ts +1 -0
  379. package/src/token-validation/validator-utils/native_mobile.js +11 -0
  380. package/src/token-validation/validator-utils/native_mobile.js.map +1 -0
  381. package/src/token-validation/validator-utils/web.d.ts +1 -0
  382. package/src/token-validation/validator-utils/web.js +12 -0
  383. package/src/token-validation/validator-utils/web.js.map +1 -0
  384. package/src/tokens/mobile/components/accordion/accordion.json +518 -0
  385. package/src/tokens/mobile/components/accordion-pane/accordion-pane.json +65 -0
  386. package/src/tokens/mobile/components/anchor/anchor.json +129 -0
  387. package/src/tokens/mobile/components/audio/audio.json +15 -0
  388. package/src/tokens/mobile/components/badge/badge.json +122 -0
  389. package/src/tokens/mobile/components/barcodescanner/barcodescanner.json +140 -0
  390. package/src/tokens/mobile/components/bottomsheet/bottomsheet.json +154 -0
  391. package/src/tokens/mobile/components/breadcrumb/breadcrumb.json +86 -0
  392. package/src/tokens/mobile/components/button/button.json +736 -0
  393. package/src/tokens/mobile/components/button-group/button-group.json +51 -0
  394. package/src/tokens/mobile/components/calendar/calendar.json +435 -0
  395. package/src/tokens/mobile/components/camera/camera.json +73 -0
  396. package/src/tokens/mobile/components/cards/cards.json +180 -0
  397. package/src/tokens/mobile/components/carousel/carousel.json +603 -0
  398. package/src/tokens/mobile/components/checkbox/checkbox.json +232 -0
  399. package/src/tokens/mobile/components/checkboxset/checkboxset.json +334 -0
  400. package/src/tokens/mobile/components/chips/chips.json +423 -0
  401. package/src/tokens/mobile/components/container/container.json +191 -0
  402. package/src/tokens/mobile/components/currency/currency.json +96 -0
  403. package/src/tokens/mobile/components/datetime/datetime.json +223 -0
  404. package/src/tokens/mobile/components/dropdown-menu/dropdown-menu.json +199 -0
  405. package/src/tokens/mobile/components/fileupload/fileupload.json +121 -0
  406. package/src/tokens/mobile/components/form-controls/form-controls.json +727 -0
  407. package/src/tokens/mobile/components/form-wrapper/form-wrapper.json +361 -0
  408. package/src/tokens/mobile/components/grid-layout/grid-layout.json +30 -0
  409. package/src/tokens/mobile/components/icon/icon.json +246 -0
  410. package/src/tokens/mobile/components/label/label.json +618 -0
  411. package/src/tokens/mobile/components/list/list.json +66 -0
  412. package/src/tokens/mobile/components/listtemplate/listtemplate.json +84 -0
  413. package/src/tokens/mobile/components/login/login.json +65 -0
  414. package/src/tokens/mobile/components/lottie/lottie.json +52 -0
  415. package/src/tokens/mobile/components/message/message.json +336 -0
  416. package/src/tokens/mobile/components/modal-dialog/modal-dialog.json +353 -0
  417. package/src/tokens/mobile/components/nav/nav.json +14 -0
  418. package/src/tokens/mobile/components/navbar/navbar.json +368 -0
  419. package/src/tokens/mobile/components/navitem/navitem.json +521 -0
  420. package/src/tokens/mobile/components/page-content/page-content.json +31 -0
  421. package/src/tokens/mobile/components/page-left-nav/page-left-nav.json +56 -0
  422. package/src/tokens/mobile/components/panel/panel.json +478 -0
  423. package/src/tokens/mobile/components/panel-footer/panel-footer.json +116 -0
  424. package/src/tokens/mobile/components/partial-container/partial-container.json +23 -0
  425. package/src/tokens/mobile/components/picture/picture.json +166 -0
  426. package/src/tokens/mobile/components/popover/popover.json +387 -0
  427. package/src/tokens/mobile/components/progress-bar/progress-bar.json +216 -0
  428. package/src/tokens/mobile/components/progress-circle/progress-circle.json +176 -0
  429. package/src/tokens/mobile/components/radioset/radioset.json +279 -0
  430. package/src/tokens/mobile/components/rating/rating.json +117 -0
  431. package/src/tokens/mobile/components/scrollbar/scrollbar.json +38 -0
  432. package/src/tokens/mobile/components/search/search.json +408 -0
  433. package/src/tokens/mobile/components/select/select.json +229 -0
  434. package/src/tokens/mobile/components/slider/slider.json +111 -0
  435. package/src/tokens/mobile/components/spinner/spinner.json +92 -0
  436. package/src/tokens/mobile/components/switch/switch.json +213 -0
  437. package/src/tokens/mobile/components/tabbar/tabbar.json +415 -0
  438. package/src/tokens/mobile/components/tabs/tabs.json +432 -0
  439. package/src/tokens/mobile/components/textarea/textarea.json +16 -0
  440. package/src/tokens/mobile/components/tile/tile.json +377 -0
  441. package/src/tokens/mobile/components/toast/toast.json +186 -0
  442. package/src/tokens/mobile/components/toggle/toggle.json +239 -0
  443. package/src/tokens/mobile/components/video/video.json +23 -0
  444. package/src/tokens/mobile/components/webview/webview.json +32 -0
  445. package/src/tokens/mobile/components/wizard/wizard.json +550 -0
  446. package/src/tokens/mobile/global/border/border.json +90 -0
  447. package/src/tokens/mobile/global/border-style/border-style.json +30 -0
  448. package/src/tokens/mobile/global/box-shadow/box-shadow.json +40 -0
  449. package/src/tokens/mobile/global/colors/color.dark.json +150 -0
  450. package/src/tokens/mobile/global/colors/color.json +338 -0
  451. package/src/tokens/mobile/global/colors/color.light.json +1 -0
  452. package/src/tokens/mobile/global/elevation/elevation.json +36 -0
  453. package/src/tokens/mobile/global/font/font.json +377 -0
  454. package/src/tokens/mobile/global/gap/gap.json +60 -0
  455. package/src/tokens/mobile/global/icon/icon.json +15 -0
  456. package/src/tokens/mobile/global/margin/margin.json +60 -0
  457. package/src/tokens/mobile/global/opacity/opacity.json +6 -0
  458. package/src/tokens/mobile/global/radius/radius.json +15 -0
  459. package/src/tokens/mobile/global/space/space.json +18 -0
  460. package/src/tokens/mobile/global/spacer/spacer.json +15 -0
  461. package/src/tokens/web/components/accordion/Readme.md +18 -0
  462. package/src/tokens/web/components/accordion/Token.Readme.md +30 -0
  463. package/src/tokens/web/components/accordion/accordion.json +321 -0
  464. package/src/tokens/web/components/anchor/Token.Readme.md +20 -0
  465. package/src/tokens/web/components/anchor/anchor.json +189 -0
  466. package/src/tokens/web/components/audio/Token.Readme.md +9 -0
  467. package/src/tokens/web/components/audio/audio.json +15 -0
  468. package/src/tokens/web/components/badge/Token.Readme.md +19 -0
  469. package/src/tokens/web/components/badge/badge.json +100 -0
  470. package/src/tokens/web/components/breadcrumb/Readme.md +23 -0
  471. package/src/tokens/web/components/breadcrumb/Token.Readme.md +21 -0
  472. package/src/tokens/web/components/breadcrumb/breadcrumb.json +392 -0
  473. package/src/tokens/web/components/button/Readme.md +54 -0
  474. package/src/tokens/web/components/button/Token.Readme.md +29 -0
  475. package/src/tokens/web/components/button/button.json +734 -0
  476. package/src/tokens/web/components/button-group/Token.Readme.md +9 -0
  477. package/src/tokens/web/components/button-group/button-group.json +22 -0
  478. package/src/tokens/web/components/calendar/Token.Readme.md +63 -0
  479. package/src/tokens/web/components/calendar/calendar.json +501 -0
  480. package/src/tokens/web/components/cards/Readme.md +23 -0
  481. package/src/tokens/web/components/cards/Token.Readme.md +22 -0
  482. package/src/tokens/web/components/cards/cards.json +371 -0
  483. package/src/tokens/web/components/carousel/Token.Readme.md +20 -0
  484. package/src/tokens/web/components/carousel/carousel.json +160 -0
  485. package/src/tokens/web/components/checkbox/Token.Readme.md +25 -0
  486. package/src/tokens/web/components/checkbox/checkbox.json +274 -0
  487. package/src/tokens/web/components/checkboxset/Token.Readme.md +9 -0
  488. package/src/tokens/web/components/checkboxset/checkboxset.json +18 -0
  489. package/src/tokens/web/components/chips/Readme.md +26 -0
  490. package/src/tokens/web/components/chips/Token.Readme.md +43 -0
  491. package/src/tokens/web/components/chips/chips.json +653 -0
  492. package/src/tokens/web/components/color-picker/Token.Readme.md +10 -0
  493. package/src/tokens/web/components/color-picker/color-picker.json +24 -0
  494. package/src/tokens/web/components/container/Readme.md +23 -0
  495. package/src/tokens/web/components/container/Token.Readme.md +13 -0
  496. package/src/tokens/web/components/container/container.json +207 -0
  497. package/src/tokens/web/components/currency/Token.Readme.md +14 -0
  498. package/src/tokens/web/components/currency/currency.json +59 -0
  499. package/src/tokens/web/components/data-table/Readme.md +29 -0
  500. package/src/tokens/web/components/data-table/Token.Readme.md +54 -0
  501. package/src/tokens/web/components/data-table/data-table.json +603 -0
  502. package/src/tokens/web/components/date/Token.Readme.md +33 -0
  503. package/src/tokens/web/components/date/date.json +328 -0
  504. package/src/tokens/web/components/dropdown-menu/Readme.md +16 -0
  505. package/src/tokens/web/components/dropdown-menu/Token.Readme.md +25 -0
  506. package/src/tokens/web/components/dropdown-menu/dropdown-menu.json +259 -0
  507. package/src/tokens/web/components/fileupload/Token.Readme.md +44 -0
  508. package/src/tokens/web/components/fileupload/fileupload.json +328 -0
  509. package/src/tokens/web/components/form-controls/Token.Readme.md +48 -0
  510. package/src/tokens/web/components/form-controls/form-controls.json +548 -0
  511. package/src/tokens/web/components/grid-layout/Token.Readme.md +11 -0
  512. package/src/tokens/web/components/grid-layout/grid-layout.json +34 -0
  513. package/src/tokens/web/components/icon/Readme.md +22 -0
  514. package/src/tokens/web/components/icon/Token.Readme.md +14 -0
  515. package/src/tokens/web/components/icon/icon.json +364 -0
  516. package/src/tokens/web/components/iconbutton-toggleable/Readme.md +17 -0
  517. package/src/tokens/web/components/iconbutton-toggleable/Token.Readme.md +19 -0
  518. package/src/tokens/web/components/iconbutton-toggleable/iconbutton-toggleable.json +557 -0
  519. package/src/tokens/web/components/iframe/Token.Readme.md +10 -0
  520. package/src/tokens/web/components/iframe/iframe.json +23 -0
  521. package/src/tokens/web/components/label/Readme.md +55 -0
  522. package/src/tokens/web/components/label/Token.Readme.md +17 -0
  523. package/src/tokens/web/components/label/label.json +723 -0
  524. package/src/tokens/web/components/list/Token.Readme.md +19 -0
  525. package/src/tokens/web/components/list/list.json +198 -0
  526. package/src/tokens/web/components/message/Readme.md +19 -0
  527. package/src/tokens/web/components/message/Token.Readme.md +22 -0
  528. package/src/tokens/web/components/message/message.json +312 -0
  529. package/src/tokens/web/components/modal-dialog/Readme.md +35 -0
  530. package/src/tokens/web/components/modal-dialog/Token.Readme.md +31 -0
  531. package/src/tokens/web/components/modal-dialog/modal-dialog.json +462 -0
  532. package/src/tokens/web/components/nav/Readme.md +41 -0
  533. package/src/tokens/web/components/nav/Token.Readme.md +25 -0
  534. package/src/tokens/web/components/nav/nav.json +236 -0
  535. package/src/tokens/web/components/page-content/Token.Readme.md +9 -0
  536. package/src/tokens/web/components/page-content/page-content.json +17 -0
  537. package/src/tokens/web/components/page-footer/Token.Readme.md +18 -0
  538. package/src/tokens/web/components/page-footer/page-footer.json +98 -0
  539. package/src/tokens/web/components/page-header/Token.Readme.md +18 -0
  540. package/src/tokens/web/components/page-header/page-header.json +90 -0
  541. package/src/tokens/web/components/page-left-nav/Readme.md +27 -0
  542. package/src/tokens/web/components/page-left-nav/Token.Readme.md +55 -0
  543. package/src/tokens/web/components/page-left-nav/page-left-nav.json +961 -0
  544. package/src/tokens/web/components/page-right-nav/Readme.md +27 -0
  545. package/src/tokens/web/components/page-right-nav/Token.Readme.md +53 -0
  546. package/src/tokens/web/components/page-right-nav/page-right-nav.json +950 -0
  547. package/src/tokens/web/components/page-top-nav/Token.Readme.md +16 -0
  548. package/src/tokens/web/components/page-top-nav/page-top-nav.json +83 -0
  549. package/src/tokens/web/components/pagination/Readme.md +23 -0
  550. package/src/tokens/web/components/pagination/Token.Readme.md +35 -0
  551. package/src/tokens/web/components/pagination/pagination.json +477 -0
  552. package/src/tokens/web/components/panel/Readme.md +18 -0
  553. package/src/tokens/web/components/panel/Token.Readme.md +39 -0
  554. package/src/tokens/web/components/panel/panel.json +397 -0
  555. package/src/tokens/web/components/picture/Readme.md +24 -0
  556. package/src/tokens/web/components/picture/Token.Readme.md +16 -0
  557. package/src/tokens/web/components/picture/picture.json +233 -0
  558. package/src/tokens/web/components/popover/Token.Readme.md +34 -0
  559. package/src/tokens/web/components/popover/popover.json +222 -0
  560. package/src/tokens/web/components/progress-bar/Readme.md +35 -0
  561. package/src/tokens/web/components/progress-bar/Token.Readme.md +15 -0
  562. package/src/tokens/web/components/progress-bar/progress-bar.json +439 -0
  563. package/src/tokens/web/components/progress-circle/Readme.md +19 -0
  564. package/src/tokens/web/components/progress-circle/Token.Readme.md +16 -0
  565. package/src/tokens/web/components/progress-circle/progress-circle.json +257 -0
  566. package/src/tokens/web/components/radioset/Token.Readme.md +24 -0
  567. package/src/tokens/web/components/radioset/radioset.json +259 -0
  568. package/src/tokens/web/components/rating/Token.Readme.md +14 -0
  569. package/src/tokens/web/components/rating/rating.json +116 -0
  570. package/src/tokens/web/components/richtext-editor/Token.Readme.md +106 -0
  571. package/src/tokens/web/components/richtext-editor/richtext-editor.json +1054 -0
  572. package/src/tokens/web/components/scrollbar/Token.Readme.md +15 -0
  573. package/src/tokens/web/components/scrollbar/scrollbar.json +66 -0
  574. package/src/tokens/web/components/search/Token.Readme.md +39 -0
  575. package/src/tokens/web/components/search/search.json +390 -0
  576. package/src/tokens/web/components/slider/Token.Readme.md +24 -0
  577. package/src/tokens/web/components/slider/slider.json +153 -0
  578. package/src/tokens/web/components/spinner/Token.Readme.md +15 -0
  579. package/src/tokens/web/components/spinner/spinner.json +77 -0
  580. package/src/tokens/web/components/switch/Token.Readme.md +20 -0
  581. package/src/tokens/web/components/switch/switch.json +241 -0
  582. package/src/tokens/web/components/tabs/Token.Readme.md +36 -0
  583. package/src/tokens/web/components/tabs/tabs.json +328 -0
  584. package/src/tokens/web/components/tile/Readme.md +39 -0
  585. package/src/tokens/web/components/tile/Token.Readme.md +13 -0
  586. package/src/tokens/web/components/tile/tile.json +442 -0
  587. package/src/tokens/web/components/time/Token.Readme.md +37 -0
  588. package/src/tokens/web/components/time/time.json +263 -0
  589. package/src/tokens/web/components/toast/Readme.md +19 -0
  590. package/src/tokens/web/components/toast/Token.Readme.md +35 -0
  591. package/src/tokens/web/components/toast/toast.json +464 -0
  592. package/src/tokens/web/components/toggle/Token.Readme.md +20 -0
  593. package/src/tokens/web/components/toggle/toggle.json +249 -0
  594. package/src/tokens/web/components/tree/Token.Readme.md +27 -0
  595. package/src/tokens/web/components/tree/tree.json +265 -0
  596. package/src/tokens/web/components/video/Token.Readme.md +10 -0
  597. package/src/tokens/web/components/video/video.json +23 -0
  598. package/src/tokens/web/components/wizard/Readme.md +41 -0
  599. package/src/tokens/web/components/wizard/Token.Readme.md +76 -0
  600. package/src/tokens/web/components/wizard/wizard.json +1449 -0
  601. package/src/tokens/web/global/border/border.json +116 -0
  602. package/src/tokens/web/global/border-style/border-style.json +72 -0
  603. package/src/tokens/web/global/box-shadow/box-shadow.json +24 -0
  604. package/src/tokens/web/global/colors/color.dark.json +398 -0
  605. package/src/tokens/web/global/colors/color.json +566 -0
  606. package/src/tokens/web/global/colors/color.light.json +1 -0
  607. package/src/tokens/web/global/elevation/elevation.json +48 -0
  608. package/src/tokens/web/global/font/font.json +599 -0
  609. package/src/tokens/web/global/gap/gap.json +57 -0
  610. package/src/tokens/web/global/icon/icon.json +84 -0
  611. package/src/tokens/web/global/margin/margin.json +57 -0
  612. package/src/tokens/web/global/opacity/opacity.json +7 -0
  613. package/src/tokens/web/global/radius/radius.json +77 -0
  614. package/src/tokens/web/global/space/space.json +125 -0
  615. package/src/tokens/web/global/spacer/spacer.json +45 -0
  616. package/src/utils/style-dictionary-utils.d.ts +25 -0
  617. package/src/utils/style-dictionary-utils.js +360 -0
  618. package/src/utils/style-dictionary-utils.js.map +1 -0
  619. package/src/utils/utils.d.ts +15 -0
  620. package/src/utils/utils.js +25 -0
  621. package/src/utils/utils.js.map +1 -0
  622. package/src/wm-namespace.d.ts +11 -0
  623. package/src/wm-namespace.js +12 -0
  624. package/src/wm-namespace.js.map +1 -0
  625. package/web.index.d.ts +20 -0
  626. package/web.index.js +300 -0
  627. package/web.index.js.map +1 -0
  628. package/webpack.config.cjs +43 -0
  629. package/webpack.config.cjs.map +1 -0
  630. package/webpack.config.d.cts +32 -0
@@ -0,0 +1,418 @@
1
+ import { isUnitlessNumber, isNonNegativeUnitlessNumber, isPercent, isNamedColor } from "./primitives.js";
2
+ export function generateAllowedListDescription(allowed) {
3
+ if (!allowed || allowed.length === 0)
4
+ return "";
5
+ if (allowed.length === 1)
6
+ return `"${allowed[0]}"`;
7
+ if (allowed.length === 2)
8
+ return `"${allowed[0]}" or "${allowed[1]}"`;
9
+ const last = allowed[allowed.length - 1];
10
+ const rest = allowed.slice(0, -1);
11
+ return `"${rest.join('", "')}", or "${last}"`;
12
+ }
13
+ /**
14
+ * Generate description for numeric ranges
15
+ * @param {number} min - Minimum value
16
+ * @param {number} max - Maximum value
17
+ * @param {string} [unit] - Optional unit suffix
18
+ * @returns {string} Description like "number between 0 and 1"
19
+ */
20
+ export function generateRangeDescription(min, max, unit = "") {
21
+ const unitSuffix = unit ? ` ${unit}` : "";
22
+ return `number between ${min} and ${max}${unitSuffix}`;
23
+ }
24
+ /**
25
+ * Generate description for platform-specific units
26
+ * @param {string[]} units - Array of supported units
27
+ * @returns {string} Description of supported units
28
+ */
29
+ export function generateUnitsDescription(units) {
30
+ if (!units || units.length === 0)
31
+ return "";
32
+ const unitDescriptions = {
33
+ px: "px value",
34
+ number: "plain number",
35
+ rem: "rem value",
36
+ em: "em value",
37
+ "%": "percentage",
38
+ auto: "auto"
39
+ };
40
+ const descriptions = units.map(unit => unitDescriptions[unit] || unit);
41
+ if (descriptions.length === 1)
42
+ return descriptions[0];
43
+ if (descriptions.length === 2)
44
+ return `${descriptions[0]} or ${descriptions[1]}`;
45
+ const last = descriptions[descriptions.length - 1];
46
+ const rest = descriptions.slice(0, -1);
47
+ return `${rest.join(", ")}, or ${last}`;
48
+ }
49
+ // ─── Shared Validation Functions ─────────────────────────────────────────────
50
+ /**
51
+ * Validate value against an allowed list
52
+ * @param {string} value - Value to validate
53
+ * @param {string[]} allowed - Array of allowed values
54
+ * @returns {{ valid: boolean }}
55
+ */
56
+ export function validateFromAllowedList(value, allowed) {
57
+ const trimmed = String(value).trim();
58
+ return { valid: allowed.includes(trimmed) };
59
+ }
60
+ /**
61
+ * Validate numeric value within a range
62
+ * @param {string|number} value - Value to validate
63
+ * @param {number} min - Minimum allowed value
64
+ * @param {number} max - Maximum allowed value
65
+ * @returns {{ valid: boolean }}
66
+ */
67
+ export function validateNumericRange(value, min, max) {
68
+ const num = Number(value);
69
+ if (isNaN(num))
70
+ return { valid: false };
71
+ return { valid: num >= min && num <= max };
72
+ }
73
+ /**
74
+ * Validate non-empty string values
75
+ * @param {string} value - Value to validate
76
+ * @returns {{ valid: boolean }}
77
+ */
78
+ export function validateNonEmptyString(value) {
79
+ const trimmed = String(value).trim();
80
+ return { valid: trimmed.length > 0 };
81
+ }
82
+ /**
83
+ * Validate numeric range with optional keyword support
84
+ * @param {string|number} value - Value to validate
85
+ * @param {Object} rule - Rule configuration containing range and keywords
86
+ * @param {boolean} [caseInsensitive=false] - Match keywords case-insensitively
87
+ * @returns {{ valid: boolean }}
88
+ */
89
+ export function validateRangeWithKeywords(value, rule, caseInsensitive = false) {
90
+ const trimmed = String(value).trim();
91
+ const normalized = caseInsensitive ? trimmed.toLowerCase() : trimmed;
92
+ const keywords = rule?.keywords || [];
93
+ if (keywords.includes(normalized)) {
94
+ return createSuccessResponse();
95
+ }
96
+ const num = Number(trimmed);
97
+ if (!isNaN(num) && rule?.range) {
98
+ const [min, max] = rule.range;
99
+ if (num >= min && num <= max && num % 100 === 0) {
100
+ return createSuccessResponse();
101
+ }
102
+ }
103
+ return { valid: false };
104
+ }
105
+ /**
106
+ * Build size validation options from rule configuration
107
+ * @param {Object} rule - Rule config
108
+ * @param {Object} defaults - Default options for a platform
109
+ * @returns {Object} Final validation options
110
+ */
111
+ export function buildSizeOptions(rule = {}, defaults = {}) {
112
+ const mergedAllowedKeywords = defaults.allowedKeywords || [];
113
+ return {
114
+ allowedUnits: rule.allowedUnits || defaults.allowedUnits || ['px'],
115
+ allowUnitless: rule.allowUnitless !== false,
116
+ allowNegative: rule.allowNegative ?? defaults.allowNegative ?? false,
117
+ allowPercent: rule.allowPercent ?? defaults.allowPercent ?? false,
118
+ allowedKeywords: rule.allowAuto
119
+ ? ['auto']
120
+ : (rule.allowedKeywords || mergedAllowedKeywords)
121
+ };
122
+ }
123
+ /**
124
+ * Validate size values with platform-specific unit support
125
+ * @param {string} value - Value to validate
126
+ * @param {Object} options - Validation options
127
+ * @param {boolean} [options.allowNegative=false] - Allow negative values
128
+ * @param {boolean} [options.allowUnitless=true] - Allow unitless numbers
129
+ * @param {boolean} [options.allowPercent=false] - Allow percentage values
130
+ * @param {string[]} [options.allowedUnits=['px']] - Allowed CSS units
131
+ * @param {string[]} [options.allowedKeywords=[]] - Allowed keyword values
132
+ * @returns {{ valid: boolean }}
133
+ */
134
+ export function validateSizeValue(value, options = {}) {
135
+ const { allowNegative = false, allowUnitless = true, allowPercent = false, allowedUnits = ['px'], allowedKeywords = [] } = options;
136
+ const trimmed = String(value).trim();
137
+ // Check keywords first
138
+ if (allowedKeywords.includes(trimmed)) {
139
+ return { valid: true };
140
+ }
141
+ // Check percentage
142
+ if (allowPercent && isPercent(trimmed)) {
143
+ return { valid: true };
144
+ }
145
+ // Check unitless numbers
146
+ if (allowUnitless) {
147
+ if (allowNegative && isUnitlessNumber(trimmed)) {
148
+ return { valid: true };
149
+ }
150
+ if (!allowNegative && isNonNegativeUnitlessNumber(trimmed)) {
151
+ return { valid: true };
152
+ }
153
+ }
154
+ // Check CSS units - generic validation for any unit
155
+ for (const unit of allowedUnits) {
156
+ // Escape special regex characters in unit name
157
+ const escapedUnit = unit.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
158
+ const unitRegex = new RegExp(`^-?[\\d.]+${escapedUnit}$`);
159
+ if (unitRegex.test(trimmed)) {
160
+ const numericValue = parseFloat(trimmed);
161
+ if (allowNegative || numericValue >= 0) {
162
+ return { valid: true };
163
+ }
164
+ }
165
+ }
166
+ return { valid: false };
167
+ }
168
+ /**
169
+ * Validate space-separated multi-value strings
170
+ * @param {string} value - Space-separated values
171
+ * @param {Function} validator - Function to validate each individual value
172
+ * @param {Object} [validatorOptions] - Options to pass to validator
173
+ * @returns {{ valid: boolean }}
174
+ */
175
+ export function validateMultiValue(value, validator, validatorOptions = {}) {
176
+ const trimmed = String(value).trim();
177
+ const parts = trimmed.split(/\s+/).filter(Boolean);
178
+ if (parts.length === 0)
179
+ return { valid: false };
180
+ return { valid: parts.every(part => validator(part, validatorOptions).valid) };
181
+ }
182
+ /**
183
+ * Create standardized error response
184
+ * @param {string} subtype - Token subtype
185
+ * @param {string} value - Invalid value
186
+ * @param {string} expectedFormat - Expected format description
187
+ * @param {string} platform - Platform identifier
188
+ * @returns {{ valid: false, errorObject: Object }}
189
+ */
190
+ export function createErrorResponse(subtype, value, expectedFormat, platform) {
191
+ // Tests expect a human-friendly platform name in some cases.
192
+ // Keep other subtypes unchanged to avoid breaking existing validations.
193
+ const platformForError = platform === "native_mobile" && (subtype === "border-width" || subtype === "font-family")
194
+ ? "mobile"
195
+ : platform;
196
+ return {
197
+ valid: false,
198
+ errorObject: {
199
+ subtype,
200
+ value,
201
+ expectedFormat,
202
+ platform: platformForError
203
+ }
204
+ };
205
+ }
206
+ export function createSuccessResponse() {
207
+ return { valid: true };
208
+ }
209
+ export function validateFontFamily(value, config = {}) {
210
+ const trimmed = String(value).trim();
211
+ // Basic non-empty validation
212
+ if (!trimmed) {
213
+ return { valid: false };
214
+ }
215
+ // If multiple fonts are not allowed, check for any comma (regardless of separator config)
216
+ if (!config.allowMultipleFonts && trimmed.includes(',')) {
217
+ return { valid: false };
218
+ }
219
+ // If multiple fonts are allowed, validate each font
220
+ if (config.allowMultipleFonts && config.separator) {
221
+ const fonts = trimmed.split(config.separator).map(font => font.trim()).filter(Boolean);
222
+ // Check maximum fonts limit
223
+ if (config.maxFonts && fonts.length > config.maxFonts) {
224
+ return { valid: false };
225
+ }
226
+ // Validate each font name is non-empty
227
+ if (fonts.some(font => !font)) {
228
+ return { valid: false };
229
+ }
230
+ return { valid: true };
231
+ }
232
+ // Single font validation - just check it's non-empty
233
+ return { valid: true };
234
+ }
235
+ /**
236
+ * Common validator for font weight - validates range with keywords
237
+ * @param {string} value - Value to validate
238
+ * @param {Object} rule - Rule configuration with range and keywords
239
+ * @param {boolean} [requireMultipleOf100] - Whether to require multiples of 100
240
+ * @returns {{ valid: boolean }} Validation result
241
+ */
242
+ export function validateFontWeight(value, rule, requireMultipleOf100 = false) {
243
+ return validateRangeWithKeywords(value, rule, requireMultipleOf100);
244
+ }
245
+ /**
246
+ * Common validator for opacity - validates numeric range
247
+ * @param {string} value - Value to validate
248
+ * @param {Object} rule - Rule configuration with min/max
249
+ * @returns {{ valid: boolean }} Validation result
250
+ */
251
+ export function validateOpacity(value, rule) {
252
+ const trimmed = String(value).trim();
253
+ if (trimmed.endsWith('%')) {
254
+ const num = Number(trimmed.slice(0, -1));
255
+ if (isNaN(num))
256
+ return { valid: false };
257
+ return { valid: num >= rule.percentMin && num <= rule.percentMax };
258
+ }
259
+ return validateNumericRange(value, rule.min, rule.max);
260
+ }
261
+ /**
262
+ * Platform-specific size value validator
263
+ * @param {string} value - Value to validate
264
+ * @param {Object} rule - Rule configuration
265
+ * @param {string[]} defaultUnits - Default allowed units for platform
266
+ * @returns {{ valid: boolean }} Validation result
267
+ */
268
+ export function validatePlatformSizeValue(value, rule = {}, defaultUnits = ['px']) {
269
+ const options = buildSizeOptions(rule, {
270
+ allowedUnits: defaultUnits,
271
+ allowPercent: false,
272
+ allowNegative: false,
273
+ allowedKeywords: []
274
+ });
275
+ return validateSizeValue(value, options);
276
+ }
277
+ /**
278
+ * Platform-specific space value validator (supports multi-value)
279
+ * @param {string} value - Value to validate
280
+ * @param {Object} rule - Rule configuration
281
+ * @param {string[]} defaultUnits - Default allowed units for platform
282
+ * @returns {{ valid: boolean }} Validation result
283
+ */
284
+ export function validatePlatformSpaceValue(value, rule = {}, defaultUnits = ['px']) {
285
+ const { allowMultiValue } = rule;
286
+ const options = buildSizeOptions(rule, {
287
+ allowedUnits: defaultUnits,
288
+ allowPercent: false,
289
+ allowNegative: false,
290
+ allowedKeywords: []
291
+ });
292
+ if (allowMultiValue) {
293
+ return validateMultiValue(value, validateSizeValue, options);
294
+ }
295
+ return validateSizeValue(value, options);
296
+ }
297
+ /**
298
+ * Get description for a rule, using customDescription if available or generating dynamically
299
+ * @param {Object} rule - Rule configuration
300
+ * @returns {string} Description for the rule
301
+ */
302
+ export function getRuleDescription(rule) {
303
+ // Use custom description if provided
304
+ if (rule.customDescription) {
305
+ return rule.customDescription;
306
+ }
307
+ // Generate dynamic description based on rule type
308
+ if (rule.allowed) {
309
+ return generateAllowedListDescription(rule.allowed);
310
+ }
311
+ if (rule.min !== undefined && rule.max !== undefined) {
312
+ let desc = generateRangeDescription(rule.min, rule.max);
313
+ if (rule.keywords && rule.keywords.length > 0) {
314
+ desc += ', ' + generateAllowedListDescription(rule.keywords);
315
+ }
316
+ return desc;
317
+ }
318
+ if (rule.allowedUnits) {
319
+ return generateUnitsDescription(rule.allowedUnits);
320
+ }
321
+ return "valid value";
322
+ }
323
+ /** Split "a, rgba(1,2,3), b" by commas NOT inside parentheses */
324
+ export function splitByTopLevelComma(value) {
325
+ const result = [];
326
+ let depth = 0, current = "";
327
+ for (const ch of value) {
328
+ if (ch === "(")
329
+ depth++;
330
+ else if (ch === ")")
331
+ depth--;
332
+ else if (ch === "," && depth === 0) {
333
+ result.push(current.trim());
334
+ current = "";
335
+ continue;
336
+ }
337
+ current += ch;
338
+ }
339
+ if (current.trim())
340
+ result.push(current.trim());
341
+ return result;
342
+ }
343
+ /**
344
+ * Extract a color token from a shadow string.
345
+ * Handles function-form colors (rgb, rgba, hsl, hsla) which may contain
346
+ * internal commas and spaces, as well as hex (#rrggbb) and named colors.
347
+ *
348
+ * @param {string} s - Shadow string after stripping inset keyword
349
+ * @returns {{ color: string|null, remainder: string }}
350
+ */
351
+ export function extractColor(s) {
352
+ // Function-form colors: rgb(), rgba(), hsl(), hsla()
353
+ const funcMatch = s.match(/(rgba?|hsla?)\([^)]+\)/);
354
+ if (funcMatch) {
355
+ const before = s.slice(0, funcMatch.index);
356
+ const after = s.slice(funcMatch.index + funcMatch[0].length);
357
+ return { color: funcMatch[0], remainder: (before + after).trim() };
358
+ }
359
+ // Hex or named: must be the last token
360
+ const tokens = s.split(/\s+/);
361
+ const last = tokens[tokens.length - 1];
362
+ if (/^#[0-9a-fA-F]{3,8}$/.test(last) || isNamedColor(last)) {
363
+ return { color: last, remainder: tokens.slice(0, -1).join(" ").trim() };
364
+ }
365
+ return { color: null, remainder: s };
366
+ }
367
+ /**
368
+ * Validate a box-shadow / elevation value.
369
+ * Shared by all platforms — callers supply the color validator and allowed length units.
370
+ *
371
+ * @param {string} value
372
+ * @param {Object} options
373
+ * @param {boolean} [options.allowNone=false] - Accept the keyword "none"
374
+ * @param {Function} options.colorValidator - (color: string) => boolean
375
+ * @param {string[]} options.lengthUnits - e.g. ["px"] or ["px","rem","em"]
376
+ * @returns {{ valid: boolean }}
377
+ */
378
+ export function validateShadowValue(value, { allowNone = false, colorValidator, lengthUnits }) {
379
+ const trimmed = String(value).trim();
380
+ if (allowNone && trimmed === "none")
381
+ return { valid: true };
382
+ const shadows = splitByTopLevelComma(trimmed);
383
+ return { valid: shadows.length > 0 && shadows.every(s => isValidShadow(s, colorValidator, lengthUnits)) };
384
+ }
385
+ function isValidShadow(raw, colorValidator, lengthUnits) {
386
+ let s = raw.trim();
387
+ if (!s)
388
+ return false;
389
+ s = s.replace(/^inset\s+/, "").replace(/\s+inset$/, "").trim();
390
+ const { color, remainder } = extractColor(s);
391
+ if (color !== null && !colorValidator(color))
392
+ return false;
393
+ s = remainder;
394
+ // 2 to 4 length tokens: x y [blur] [spread]
395
+ const lengths = s.split(/\s+/).filter(Boolean);
396
+ if (lengths.length < 2 || lengths.length > 4)
397
+ return false;
398
+ // blur (index 2) must be non-negative; offsets and spread may be negative
399
+ return lengths.every((len, i) => isValidShadowLength(len, i !== 2, lengthUnits));
400
+ }
401
+ function isValidShadowLength(v, allowNegative, units) {
402
+ if (v === "0")
403
+ return true;
404
+ return validateSizeValue(v, { allowedUnits: units, allowUnitless: false, allowNegative }).valid;
405
+ }
406
+ /**
407
+ * Shared validator functions used by all platforms.
408
+ * Extend with a platform-specific validateBoxShadow before passing to generatePlatformRules().
409
+ */
410
+ export const COMMON_VALIDATORS = {
411
+ validateFromAllowedList,
412
+ validatePlatformSizeValue,
413
+ validatePlatformSpaceValue,
414
+ validateFontFamily,
415
+ validateOpacity,
416
+ validateFontWeight
417
+ };
418
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"./","sources":["src/token-validation/validator-utils/common/utils.js"],"names":[],"mappings":"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","sourcesContent":["import {isUnitlessNumber, isNonNegativeUnitlessNumber, isPercent, isNamedColor} from \"./primitives.js\";\n\nexport function generateAllowedListDescription(allowed) {\n if (!allowed || allowed.length === 0) return \"\";\n if (allowed.length === 1) return `\"${allowed[0]}\"`;\n if (allowed.length === 2) return `\"${allowed[0]}\" or \"${allowed[1]}\"`;\n\n const last = allowed[allowed.length - 1];\n const rest = allowed.slice(0, -1);\n return `\"${rest.join('\", \"')}\", or \"${last}\"`;\n}\n\n/**\n * Generate description for numeric ranges\n * @param {number} min - Minimum value\n * @param {number} max - Maximum value\n * @param {string} [unit] - Optional unit suffix\n * @returns {string} Description like \"number between 0 and 1\"\n */\nexport function generateRangeDescription(min, max, unit = \"\") {\n const unitSuffix = unit ? ` ${unit}` : \"\";\n return `number between ${min} and ${max}${unitSuffix}`;\n}\n\n/**\n * Generate description for platform-specific units\n * @param {string[]} units - Array of supported units\n * @returns {string} Description of supported units\n */\nexport function generateUnitsDescription(units) {\n if (!units || units.length === 0) return \"\";\n\n const unitDescriptions = {\n px: \"px value\",\n number: \"plain number\",\n rem: \"rem value\",\n em: \"em value\",\n \"%\": \"percentage\",\n auto: \"auto\"\n };\n\n const descriptions = units.map(unit => unitDescriptions[unit] || unit);\n\n if (descriptions.length === 1) return descriptions[0];\n if (descriptions.length === 2) return `${descriptions[0]} or ${descriptions[1]}`;\n\n const last = descriptions[descriptions.length - 1];\n const rest = descriptions.slice(0, -1);\n return `${rest.join(\", \")}, or ${last}`;\n}\n\n// ─── Shared Validation Functions ─────────────────────────────────────────────\n\n/**\n * Validate value against an allowed list\n * @param {string} value - Value to validate\n * @param {string[]} allowed - Array of allowed values\n * @returns {{ valid: boolean }}\n */\nexport function validateFromAllowedList(value, allowed) {\n const trimmed = String(value).trim();\n return { valid: allowed.includes(trimmed) };\n}\n\n/**\n * Validate numeric value within a range\n * @param {string|number} value - Value to validate\n * @param {number} min - Minimum allowed value\n * @param {number} max - Maximum allowed value\n * @returns {{ valid: boolean }}\n */\nexport function validateNumericRange(value, min, max) {\n const num = Number(value);\n if (isNaN(num)) return { valid: false };\n return { valid: num >= min && num <= max };\n}\n\n/**\n * Validate non-empty string values\n * @param {string} value - Value to validate\n * @returns {{ valid: boolean }}\n */\nexport function validateNonEmptyString(value) {\n const trimmed = String(value).trim();\n return { valid: trimmed.length > 0 };\n}\n\n/**\n * Validate numeric range with optional keyword support\n * @param {string|number} value - Value to validate\n * @param {Object} rule - Rule configuration containing range and keywords\n * @param {boolean} [caseInsensitive=false] - Match keywords case-insensitively\n * @returns {{ valid: boolean }}\n */\nexport function validateRangeWithKeywords(value, rule, caseInsensitive = false) {\n const trimmed = String(value).trim();\n const normalized = caseInsensitive ? trimmed.toLowerCase() : trimmed;\n const keywords = rule?.keywords || [];\n\n if (keywords.includes(normalized)) {\n return createSuccessResponse();\n }\n\n const num = Number(trimmed);\n if (!isNaN(num) && rule?.range) {\n const [min, max] = rule.range;\n if (num >= min && num <= max && num % 100 === 0) {\n return createSuccessResponse();\n }\n }\n\n return { valid: false };\n}\n\n/**\n * Build size validation options from rule configuration\n * @param {Object} rule - Rule config\n * @param {Object} defaults - Default options for a platform\n * @returns {Object} Final validation options\n */\nexport function buildSizeOptions(rule = {}, defaults = {}) {\n const mergedAllowedKeywords = defaults.allowedKeywords || [];\n return {\n allowedUnits: rule.allowedUnits || defaults.allowedUnits || ['px'],\n allowUnitless: rule.allowUnitless !== false,\n allowNegative: rule.allowNegative ?? defaults.allowNegative ?? false,\n allowPercent: rule.allowPercent ?? defaults.allowPercent ?? false,\n allowedKeywords: rule.allowAuto\n ? ['auto']\n : (rule.allowedKeywords || mergedAllowedKeywords)\n };\n}\n\n/**\n * Validate size values with platform-specific unit support\n * @param {string} value - Value to validate\n * @param {Object} options - Validation options\n * @param {boolean} [options.allowNegative=false] - Allow negative values\n * @param {boolean} [options.allowUnitless=true] - Allow unitless numbers\n * @param {boolean} [options.allowPercent=false] - Allow percentage values\n * @param {string[]} [options.allowedUnits=['px']] - Allowed CSS units\n * @param {string[]} [options.allowedKeywords=[]] - Allowed keyword values\n * @returns {{ valid: boolean }}\n */\nexport function validateSizeValue(value, options = {}) {\n const {\n allowNegative = false,\n allowUnitless = true,\n allowPercent = false,\n allowedUnits = ['px'],\n allowedKeywords = []\n } = options;\n\n const trimmed = String(value).trim();\n\n // Check keywords first\n if (allowedKeywords.includes(trimmed)) {\n return { valid: true };\n }\n\n // Check percentage\n if (allowPercent && isPercent(trimmed)) {\n return { valid: true };\n }\n\n // Check unitless numbers\n if (allowUnitless) {\n if (allowNegative && isUnitlessNumber(trimmed)) {\n return { valid: true };\n }\n if (!allowNegative && isNonNegativeUnitlessNumber(trimmed)) {\n return { valid: true };\n }\n }\n\n // Check CSS units - generic validation for any unit\n for (const unit of allowedUnits) {\n // Escape special regex characters in unit name\n const escapedUnit = unit.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n const unitRegex = new RegExp(`^-?[\\\\d.]+${escapedUnit}$`);\n \n if (unitRegex.test(trimmed)) {\n const numericValue = parseFloat(trimmed);\n if (allowNegative || numericValue >= 0) {\n return { valid: true };\n }\n }\n }\n\n return { valid: false };\n}\n\n\n/**\n * Validate space-separated multi-value strings\n * @param {string} value - Space-separated values\n * @param {Function} validator - Function to validate each individual value\n * @param {Object} [validatorOptions] - Options to pass to validator\n * @returns {{ valid: boolean }}\n */\nexport function validateMultiValue(value, validator, validatorOptions = {}) {\n const trimmed = String(value).trim();\n const parts = trimmed.split(/\\s+/).filter(Boolean);\n\n if (parts.length === 0) return { valid: false };\n\n return { valid: parts.every(part => validator(part, validatorOptions).valid) };\n}\n\n/**\n * Create standardized error response\n * @param {string} subtype - Token subtype\n * @param {string} value - Invalid value\n * @param {string} expectedFormat - Expected format description\n * @param {string} platform - Platform identifier\n * @returns {{ valid: false, errorObject: Object }}\n */\nexport function createErrorResponse(subtype, value, expectedFormat, platform) {\n // Tests expect a human-friendly platform name in some cases.\n // Keep other subtypes unchanged to avoid breaking existing validations.\n const platformForError =\n platform === \"native_mobile\" && (subtype === \"border-width\" || subtype === \"font-family\")\n ? \"mobile\"\n : platform;\n return {\n valid: false,\n errorObject: {\n subtype,\n value,\n expectedFormat,\n platform: platformForError\n }\n };\n}\n\nexport function createSuccessResponse() {\n return { valid: true };\n}\n\n\nexport function validateFontFamily(value, config = {}) {\n const trimmed = String(value).trim();\n \n // Basic non-empty validation\n if (!trimmed) {\n return { valid: false };\n }\n \n // If multiple fonts are not allowed, check for any comma (regardless of separator config)\n if (!config.allowMultipleFonts && trimmed.includes(',')) {\n return { valid: false };\n }\n \n // If multiple fonts are allowed, validate each font\n if (config.allowMultipleFonts && config.separator) {\n const fonts = trimmed.split(config.separator).map(font => font.trim()).filter(Boolean);\n \n // Check maximum fonts limit\n if (config.maxFonts && fonts.length > config.maxFonts) {\n return { valid: false };\n }\n \n // Validate each font name is non-empty\n if (fonts.some(font => !font)) {\n return { valid: false };\n }\n \n return { valid: true };\n }\n \n // Single font validation - just check it's non-empty\n return { valid: true };\n}\n\n/**\n * Common validator for font weight - validates range with keywords\n * @param {string} value - Value to validate\n * @param {Object} rule - Rule configuration with range and keywords\n * @param {boolean} [requireMultipleOf100] - Whether to require multiples of 100\n * @returns {{ valid: boolean }} Validation result\n */\nexport function validateFontWeight(value, rule, requireMultipleOf100 = false) {\n return validateRangeWithKeywords(value, rule, requireMultipleOf100);\n}\n\n/**\n * Common validator for opacity - validates numeric range\n * @param {string} value - Value to validate\n * @param {Object} rule - Rule configuration with min/max\n * @returns {{ valid: boolean }} Validation result\n */\nexport function validateOpacity(value, rule) {\n const trimmed = String(value).trim();\n if (trimmed.endsWith('%')) {\n const num = Number(trimmed.slice(0, -1));\n if (isNaN(num)) return { valid: false };\n return { valid: num >= rule.percentMin && num <= rule.percentMax };\n }\n return validateNumericRange(value, rule.min, rule.max);\n}\n\n/**\n * Platform-specific size value validator\n * @param {string} value - Value to validate\n * @param {Object} rule - Rule configuration\n * @param {string[]} defaultUnits - Default allowed units for platform\n * @returns {{ valid: boolean }} Validation result\n */\nexport function validatePlatformSizeValue(value, rule = {}, defaultUnits = ['px']) {\n const options = buildSizeOptions(rule, {\n allowedUnits: defaultUnits,\n allowPercent: false,\n allowNegative: false,\n allowedKeywords: []\n });\n return validateSizeValue(value, options);\n}\n\n/**\n * Platform-specific space value validator (supports multi-value)\n * @param {string} value - Value to validate\n * @param {Object} rule - Rule configuration\n * @param {string[]} defaultUnits - Default allowed units for platform\n * @returns {{ valid: boolean }} Validation result\n */\nexport function validatePlatformSpaceValue(value, rule = {}, defaultUnits = ['px']) {\n const { allowMultiValue } = rule;\n const options = buildSizeOptions(rule, {\n allowedUnits: defaultUnits,\n allowPercent: false,\n allowNegative: false,\n allowedKeywords: []\n });\n\n if (allowMultiValue) {\n return validateMultiValue(value, validateSizeValue, options);\n }\n\n return validateSizeValue(value, options);\n}\n\n/**\n * Get description for a rule, using customDescription if available or generating dynamically\n * @param {Object} rule - Rule configuration\n * @returns {string} Description for the rule\n */\nexport function getRuleDescription(rule) {\n // Use custom description if provided\n if (rule.customDescription) {\n return rule.customDescription;\n }\n\n // Generate dynamic description based on rule type\n if (rule.allowed) {\n return generateAllowedListDescription(rule.allowed);\n }\n\n if (rule.min !== undefined && rule.max !== undefined) {\n let desc = generateRangeDescription(rule.min, rule.max);\n if (rule.keywords && rule.keywords.length > 0) {\n desc += ', ' + generateAllowedListDescription(rule.keywords);\n }\n return desc;\n }\n\n if (rule.allowedUnits) {\n return generateUnitsDescription(rule.allowedUnits);\n }\n\n return \"valid value\";\n}\n\n/** Split \"a, rgba(1,2,3), b\" by commas NOT inside parentheses */\nexport function splitByTopLevelComma(value) {\n const result = [];\n let depth = 0, current = \"\";\n for (const ch of value) {\n if (ch === \"(\") depth++;\n else if (ch === \")\") depth--;\n else if (ch === \",\" && depth === 0) {\n result.push(current.trim());\n current = \"\";\n continue;\n }\n current += ch;\n }\n if (current.trim()) result.push(current.trim());\n return result;\n}\n\n/**\n * Extract a color token from a shadow string.\n * Handles function-form colors (rgb, rgba, hsl, hsla) which may contain\n * internal commas and spaces, as well as hex (#rrggbb) and named colors.\n *\n * @param {string} s - Shadow string after stripping inset keyword\n * @returns {{ color: string|null, remainder: string }}\n */\nexport function extractColor(s) {\n // Function-form colors: rgb(), rgba(), hsl(), hsla()\n const funcMatch = s.match(/(rgba?|hsla?)\\([^)]+\\)/);\n if (funcMatch) {\n const before = s.slice(0, funcMatch.index);\n const after = s.slice(funcMatch.index + funcMatch[0].length);\n return { color: funcMatch[0], remainder: (before + after).trim() };\n }\n // Hex or named: must be the last token\n const tokens = s.split(/\\s+/);\n const last = tokens[tokens.length - 1];\n if (/^#[0-9a-fA-F]{3,8}$/.test(last) || isNamedColor(last)) {\n return { color: last, remainder: tokens.slice(0, -1).join(\" \").trim() };\n }\n return { color: null, remainder: s };\n}\n\n/**\n * Validate a box-shadow / elevation value.\n * Shared by all platforms — callers supply the color validator and allowed length units.\n *\n * @param {string} value\n * @param {Object} options\n * @param {boolean} [options.allowNone=false] - Accept the keyword \"none\"\n * @param {Function} options.colorValidator - (color: string) => boolean\n * @param {string[]} options.lengthUnits - e.g. [\"px\"] or [\"px\",\"rem\",\"em\"]\n * @returns {{ valid: boolean }}\n */\nexport function validateShadowValue(value, { allowNone = false, colorValidator, lengthUnits }) {\n const trimmed = String(value).trim();\n if (allowNone && trimmed === \"none\") return { valid: true };\n\n const shadows = splitByTopLevelComma(trimmed);\n return { valid: shadows.length > 0 && shadows.every(s => isValidShadow(s, colorValidator, lengthUnits)) };\n}\n\nfunction isValidShadow(raw, colorValidator, lengthUnits) {\n let s = raw.trim();\n if (!s) return false;\n\n s = s.replace(/^inset\\s+/, \"\").replace(/\\s+inset$/, \"\").trim();\n\n const { color, remainder } = extractColor(s);\n if (color !== null && !colorValidator(color)) return false;\n s = remainder;\n\n // 2 to 4 length tokens: x y [blur] [spread]\n const lengths = s.split(/\\s+/).filter(Boolean);\n if (lengths.length < 2 || lengths.length > 4) return false;\n\n // blur (index 2) must be non-negative; offsets and spread may be negative\n return lengths.every((len, i) => isValidShadowLength(len, i !== 2, lengthUnits));\n}\n\nfunction isValidShadowLength(v, allowNegative, units) {\n if (v === \"0\") return true;\n return validateSizeValue(v, { allowedUnits: units, allowUnitless: false, allowNegative }).valid;\n}\n/**\n * Shared validator functions used by all platforms.\n * Extend with a platform-specific validateBoxShadow before passing to generatePlatformRules().\n */\nexport const COMMON_VALIDATORS = {\n validateFromAllowedList,\n validatePlatformSizeValue,\n validatePlatformSpaceValue,\n validateFontFamily,\n validateOpacity,\n validateFontWeight\n};\n"]}
@@ -0,0 +1 @@
1
+ export const MOBILE_RULES: any;
@@ -0,0 +1,11 @@
1
+ import { isMobileColor } from "./common/primitives.js";
2
+ import { validateShadowValue, COMMON_VALIDATORS } from "./common/utils.js";
3
+ import { generatePlatformRules } from "./common/constants.js";
4
+ export const MOBILE_RULES = generatePlatformRules('native_mobile', {
5
+ ...COMMON_VALIDATORS,
6
+ validateBoxShadow: (value) => validateShadowValue(value, {
7
+ colorValidator: isMobileColor,
8
+ lengthUnits: ["px"]
9
+ })
10
+ });
11
+ //# sourceMappingURL=native_mobile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native_mobile.js","sourceRoot":"./","sources":["src/token-validation/validator-utils/native_mobile.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,MAAM,CAAC,MAAM,YAAY,GAAG,qBAAqB,CAAC,eAAe,EAAE;IAC/D,GAAG,iBAAiB;IACpB,iBAAiB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,mBAAmB,CAAC,KAAK,EAAE;QACrD,cAAc,EAAE,aAAa;QAC7B,WAAW,EAAE,CAAC,IAAI,CAAC;KACtB,CAAC;CACL,CAAC,CAAC","sourcesContent":["import { isMobileColor } from \"./common/primitives.js\";\nimport { validateShadowValue, COMMON_VALIDATORS } from \"./common/utils.js\";\nimport { generatePlatformRules } from \"./common/constants.js\";\n\nexport const MOBILE_RULES = generatePlatformRules('native_mobile', {\n ...COMMON_VALIDATORS,\n validateBoxShadow: (value) => validateShadowValue(value, {\n colorValidator: isMobileColor,\n lengthUnits: [\"px\"]\n })\n});\n"]}
@@ -0,0 +1 @@
1
+ export const WEB_VALIDATION_RULES: any;
@@ -0,0 +1,12 @@
1
+ import { isWebColor } from "./common/primitives.js";
2
+ import { validateShadowValue, COMMON_VALIDATORS } from "./common/utils.js";
3
+ import { generatePlatformRules } from "./common/constants.js";
4
+ export const WEB_VALIDATION_RULES = generatePlatformRules('web', {
5
+ ...COMMON_VALIDATORS,
6
+ validateBoxShadow: (value) => validateShadowValue(value, {
7
+ allowNone: true,
8
+ colorValidator: isWebColor,
9
+ lengthUnits: ["px", "rem", "em"]
10
+ })
11
+ });
12
+ //# sourceMappingURL=web.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web.js","sourceRoot":"./","sources":["src/token-validation/validator-utils/web.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,MAAM,CAAC,MAAM,oBAAoB,GAAG,qBAAqB,CAAC,KAAK,EAAE;IAC7D,GAAG,iBAAiB;IACpB,iBAAiB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,mBAAmB,CAAC,KAAK,EAAE;QACrD,SAAS,EAAE,IAAI;QACf,cAAc,EAAE,UAAU;QAC1B,WAAW,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC;KACnC,CAAC;CACL,CAAC,CAAC","sourcesContent":["import { isWebColor } from \"./common/primitives.js\";\nimport { validateShadowValue, COMMON_VALIDATORS } from \"./common/utils.js\";\nimport { generatePlatformRules } from \"./common/constants.js\";\n\nexport const WEB_VALIDATION_RULES = generatePlatformRules('web', {\n ...COMMON_VALIDATORS,\n validateBoxShadow: (value) => validateShadowValue(value, {\n allowNone: true,\n colorValidator: isWebColor,\n lengthUnits: [\"px\", \"rem\", \"em\"]\n })\n});\n"]}