origam 2.5.0 → 2.6.1

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 (523) hide show
  1. package/dist/src/assets/css/tokens/dark.css +3788 -3768
  2. package/dist/src/assets/css/tokens/light.css +1894 -1884
  3. package/dist/src/assets/css/tokens/primitive.css +2 -0
  4. package/dist/src/assets/css/tokens/themes-all.css +44226 -0
  5. package/dist/src/assets/locales/en.json +34 -2
  6. package/dist/src/assets/locales/fr.json +34 -2
  7. package/dist/src/assets/scss/tokens/_dark.scss +1894 -1884
  8. package/dist/src/assets/scss/tokens/_light.scss +1894 -1884
  9. package/dist/src/assets/scss/tokens/_primitive.scss +2 -0
  10. package/dist/src/assets/scss/tokens/_themes-all.scss +44241 -0
  11. package/dist/src/components/Alert/OrigamAlert.vue +16 -21
  12. package/dist/src/components/App/OrigamApp.vue +7 -38
  13. package/dist/src/components/App/OrigamAppBar.vue +35 -17
  14. package/dist/src/components/Audio/OrigamAudio.vue +77 -6
  15. package/dist/src/components/Avatar/OrigamAvatar.vue +11 -9
  16. package/dist/src/components/Avatar/OrigamAvatarGroup.vue +26 -8
  17. package/dist/src/components/Badge/OrigamBadge.vue +13 -3
  18. package/dist/src/components/Blockquote/OrigamBlockquote.vue +137 -13
  19. package/dist/src/components/BottomNav/OrigamBottomNav.vue +34 -4
  20. package/dist/src/components/Bracket/OrigamBracket.vue +386 -64
  21. package/dist/src/components/Bracket/OrigamBracketCompetitor.vue +190 -13
  22. package/dist/src/components/Bracket/OrigamBracketMatch.vue +197 -42
  23. package/dist/src/components/Bracket/OrigamBracketRound.vue +11 -3
  24. package/dist/src/components/Breadcrumb/OrigamBreadcrumb.vue +14 -12
  25. package/dist/src/components/Breadcrumb/OrigamBreadcrumbDivider.vue +4 -1
  26. package/dist/src/components/Breadcrumb/OrigamBreadcrumbItem.vue +3 -5
  27. package/dist/src/components/Btn/OrigamBtn.vue +69 -30
  28. package/dist/src/components/Btn/OrigamBtnGroup.vue +33 -7
  29. package/dist/src/components/Btn/OrigamBtnToggle.vue +4 -7
  30. package/dist/src/components/Calendar/OrigamCalendar.vue +785 -658
  31. package/dist/src/components/Card/OrigamCard.vue +24 -3
  32. package/dist/src/components/Card/OrigamCardHeader.vue +17 -3
  33. package/dist/src/components/Card/OrigamCardText.vue +29 -7
  34. package/dist/src/components/Carousel/OrigamCarousel.vue +29 -9
  35. package/dist/src/components/Carousel/OrigamCarouselItem.vue +2 -2
  36. package/dist/src/components/Chart/OrigamChart.vue +3 -1
  37. package/dist/src/components/Chart/OrigamChartAxis.vue +1 -1
  38. package/dist/src/components/Chart/OrigamChartBoxPlot.vue +7 -3
  39. package/dist/src/components/Chart/OrigamChartBullet.vue +7 -3
  40. package/dist/src/components/Chart/OrigamChartCandlestick.vue +7 -3
  41. package/dist/src/components/Chart/OrigamChartCartesian.vue +14 -10
  42. package/dist/src/components/Chart/OrigamChartGauge.vue +7 -3
  43. package/dist/src/components/Chart/OrigamChartHeatmap.vue +7 -3
  44. package/dist/src/components/Chart/OrigamChartHoneycomb.vue +7 -3
  45. package/dist/src/components/Chart/OrigamChartLegend.vue +1 -2
  46. package/dist/src/components/Chart/OrigamChartMap.vue +7 -3
  47. package/dist/src/components/Chart/OrigamChartPareto.vue +7 -3
  48. package/dist/src/components/Chart/OrigamChartPictorial.vue +9 -6
  49. package/dist/src/components/Chart/OrigamChartPolar.vue +13 -6
  50. package/dist/src/components/Chart/OrigamChartPolarBar.vue +7 -3
  51. package/dist/src/components/Chart/OrigamChartPyramid.vue +7 -3
  52. package/dist/src/components/Chart/OrigamChartRadar.vue +7 -5
  53. package/dist/src/components/Chart/OrigamChartRangeSelector.vue +3 -4
  54. package/dist/src/components/Chart/OrigamChartSankey.vue +7 -3
  55. package/dist/src/components/Chart/OrigamChartSparkline.vue +5 -3
  56. package/dist/src/components/Chart/OrigamChartStreamgraph.vue +9 -5
  57. package/dist/src/components/Chart/OrigamChartSunburst.vue +7 -3
  58. package/dist/src/components/Chart/OrigamChartTooltip.vue +1 -1
  59. package/dist/src/components/Chart/OrigamChartTreemap.vue +7 -3
  60. package/dist/src/components/Chart/OrigamChartVariwide.vue +7 -3
  61. package/dist/src/components/Chart/OrigamChartWordCloud.vue +3 -2
  62. package/dist/src/components/Checkbox/OrigamCheckbox.vue +18 -3
  63. package/dist/src/components/Checkbox/OrigamCheckboxBtn.vue +4 -2
  64. package/dist/src/components/Chip/OrigamChip.vue +25 -12
  65. package/dist/src/components/Chip/OrigamChipGroup.vue +5 -5
  66. package/dist/src/components/ClientOnly/OrigamClientOnly.vue +1 -1
  67. package/dist/src/components/Clipboard/OrigamClipboard.vue +12 -4
  68. package/dist/src/components/Code/OrigamCode.vue +144 -39
  69. package/dist/src/components/ColorPicker/OrigamColorPicker.vue +7 -2
  70. package/dist/src/components/ColorPicker/OrigamColorPickerCanvas.vue +3 -2
  71. package/dist/src/components/ColorPicker/OrigamColorPickerEdit.vue +2 -2
  72. package/dist/src/components/ColorPicker/OrigamColorPickerPreview.vue +1 -1
  73. package/dist/src/components/ColorPicker/OrigamColorPickerSwatches.vue +1 -1
  74. package/dist/src/components/ColorPickerField/OrigamColorPickerField.vue +15 -5
  75. package/dist/src/components/CommandPalette/OrigamCommandPalette.vue +13 -3
  76. package/dist/src/components/ConfirmWrapper/OrigamConfirmWrapper.vue +1 -1
  77. package/dist/src/components/ContextualMenu/OrigamContextualMenu.vue +7 -2
  78. package/dist/src/components/Counter/OrigamCounter.vue +2 -1
  79. package/dist/src/components/DataList/OrigamDataList.vue +21 -5
  80. package/dist/src/components/DataList/OrigamDataText.vue +5 -1
  81. package/dist/src/components/DataList/OrigamDataTitle.vue +5 -1
  82. package/dist/src/components/DataTable/OrigamDataTable.vue +15 -7
  83. package/dist/src/components/DataTable/OrigamDataTableColumnCell.vue +1 -1
  84. package/dist/src/components/DataTable/OrigamDataTableFooter.vue +1 -1
  85. package/dist/src/components/DataTable/OrigamDataTableGroupHeaderRow.vue +1 -1
  86. package/dist/src/components/DataTable/OrigamDataTableHeaderCell.vue +3 -2
  87. package/dist/src/components/DataTable/OrigamDataTableHeaders.vue +2 -1
  88. package/dist/src/components/DataTable/OrigamDataTableHeadersCell.vue +1 -1
  89. package/dist/src/components/DataTable/OrigamDataTableHeadersCellMobile.vue +1 -1
  90. package/dist/src/components/DataTable/OrigamDataTableRow.vue +5 -3
  91. package/dist/src/components/DataTable/OrigamDataTableRows.vue +3 -3
  92. package/dist/src/components/DatePicker/OrigamDatePicker.vue +21 -30
  93. package/dist/src/components/DatePicker/OrigamDatePickerControls.vue +2 -2
  94. package/dist/src/components/DatePicker/OrigamDatePickerHeader.vue +1 -1
  95. package/dist/src/components/DatePicker/OrigamDatePickerMonth.vue +16 -28
  96. package/dist/src/components/DatePicker/OrigamDatePickerMonths.vue +3 -3
  97. package/dist/src/components/DatePicker/OrigamDatePickerYears.vue +3 -3
  98. package/dist/src/components/DatePickerField/OrigamDatePickerField.vue +27 -16
  99. package/dist/src/components/DefaultsProvider/OrigamDefaultsProvider.vue +1 -1
  100. package/dist/src/components/Dialog/OrigamDialog.vue +1 -1
  101. package/dist/src/components/Dialog/OrigamDialogConfirmation.vue +1 -1
  102. package/dist/src/components/Divider/OrigamDivider.vue +2 -2
  103. package/dist/src/components/Drawer/OrigamDrawer.vue +5 -11
  104. package/dist/src/components/EmptyState/OrigamEmptyState.vue +14 -4
  105. package/dist/src/components/ExpansionPanel/OrigamExpansionPanel.vue +12 -2
  106. package/dist/src/components/ExpansionPanel/OrigamExpansionPanelContent.vue +4 -2
  107. package/dist/src/components/ExpansionPanel/OrigamExpansionPanelHeader.vue +14 -5
  108. package/dist/src/components/ExpansionPanel/OrigamExpansionPanels.vue +2 -1
  109. package/dist/src/components/Field/OrigamField.vue +26 -9
  110. package/dist/src/components/FileField/OrigamFileField.vue +8 -3
  111. package/dist/src/components/FileField/OrigamFileFieldDragNDropItem.vue +14 -4
  112. package/dist/src/components/FileField/OrigamFileFieldListItem.vue +14 -4
  113. package/dist/src/components/Form/OrigamForm.vue +10 -2
  114. package/dist/src/components/Grid/OrigamGrid.vue +1 -1
  115. package/dist/src/components/Grid/OrigamGridItem.vue +1 -1
  116. package/dist/src/components/Grids/OrigamCol.vue +1 -1
  117. package/dist/src/components/Grids/OrigamContainer.vue +1 -1
  118. package/dist/src/components/Grids/OrigamRow.vue +6 -2
  119. package/dist/src/components/Grids/OrigamSpacer.vue +1 -1
  120. package/dist/src/components/Icon/OrigamClassIcon.vue +1 -1
  121. package/dist/src/components/Icon/OrigamComponentIcon.vue +1 -1
  122. package/dist/src/components/Icon/OrigamIcon.vue +1 -1
  123. package/dist/src/components/Icon/OrigamLigatureIcon.vue +1 -1
  124. package/dist/src/components/Icon/OrigamSvgIcon.vue +2 -2
  125. package/dist/src/components/Img/OrigamImg.vue +10 -9
  126. package/dist/src/components/InfiniteScroll/OrigamInfiniteScroll.vue +14 -7
  127. package/dist/src/components/InfiniteScroll/OrigamInfiniteScrollIntersect.vue +3 -2
  128. package/dist/src/components/InlineEdit/OrigamInlineEdit.vue +13 -4
  129. package/dist/src/components/Input/OrigamInput.vue +17 -3
  130. package/dist/src/components/ItemGroup/OrigamItem.vue +1 -1
  131. package/dist/src/components/ItemGroup/OrigamItemGroup.vue +1 -1
  132. package/dist/src/components/Kbd/OrigamKbd.vue +18 -8
  133. package/dist/src/components/Label/OrigamLabel.vue +14 -3
  134. package/dist/src/components/Layout/OrigamLayout.vue +1 -1
  135. package/dist/src/components/Lazy/OrigamLazy.vue +1 -1
  136. package/dist/src/components/List/OrigamList.vue +1 -1
  137. package/dist/src/components/List/OrigamListChildren.vue +1 -1
  138. package/dist/src/components/List/OrigamListGroup.vue +4 -1
  139. package/dist/src/components/List/OrigamListGroupActivator.vue +1 -1
  140. package/dist/src/components/List/OrigamListItem.vue +14 -4
  141. package/dist/src/components/List/OrigamListSubheader.vue +13 -3
  142. package/dist/src/components/Loader/OrigamLoader.vue +1 -1
  143. package/dist/src/components/Main/OrigamMain.vue +1 -1
  144. package/dist/src/components/Masonry/OrigamMasonry.vue +2 -2
  145. package/dist/src/components/Media/OrigamMediaController.vue +1 -1
  146. package/dist/src/components/Media/OrigamMediaScrubber.vue +3 -2
  147. package/dist/src/components/Media/OrigamMediaVolumeControl.vue +3 -2
  148. package/dist/src/components/Menu/OrigamMenu.vue +9 -2
  149. package/dist/src/components/Messages/OrigamMessages.vue +13 -4
  150. package/dist/src/components/NumberField/OrigamNumberField.vue +80 -40
  151. package/dist/src/components/NumberFormat/OrigamNumberFormat.vue +1 -1
  152. package/dist/src/components/OtpInputField/OrigamOtpInputField.vue +107 -11
  153. package/dist/src/components/Overlay/OrigamOverlay.vue +1 -1
  154. package/dist/src/components/Overlay/OrigamOverlayScrim.vue +1 -1
  155. package/dist/src/components/Pagination/OrigamPagination.vue +16 -4
  156. package/dist/src/components/Parallax/OrigamParallax.vue +9 -2
  157. package/dist/src/components/Parallax/OrigamParallaxElement.vue +1 -1
  158. package/dist/src/components/Parallax/OrigamParallaxLayer.vue +2 -2
  159. package/dist/src/components/PasswordField/OrigamPasswordField.vue +9 -2
  160. package/dist/src/components/Picker/OrigamPicker.vue +8 -3
  161. package/dist/src/components/Picker/OrigamPickerTitle.vue +10 -3
  162. package/dist/src/components/Progress/OrigamProgress.vue +6 -3
  163. package/dist/src/components/Progress/OrigamProgressCircular.vue +3 -1
  164. package/dist/src/components/Progress/OrigamProgressLinear.vue +5 -6
  165. package/dist/src/components/{QRCode → QrCode}/OrigamQrCode.vue +1 -1
  166. package/dist/src/components/QrCode/index.d.ts +1 -0
  167. package/dist/src/components/Radio/OrigamRadio.vue +20 -11
  168. package/dist/src/components/Radio/OrigamRadioBtn.vue +4 -2
  169. package/dist/src/components/Radio/OrigamRadioGroup.vue +48 -41
  170. package/dist/src/components/RatingField/OrigamRatingField.vue +9 -13
  171. package/dist/src/components/RatingField/OrigamRatingFieldItem.vue +3 -6
  172. package/dist/src/components/Responsive/OrigamResponsive.vue +1 -1
  173. package/dist/src/components/Section/OrigamSection.vue +1 -1
  174. package/dist/src/components/Select/OrigamSelect.vue +19 -10
  175. package/dist/src/components/SelectionControl/OrigamSelectionControl.vue +12 -6
  176. package/dist/src/components/SelectionControl/OrigamSelectionControlGroup.vue +2 -2
  177. package/dist/src/components/Sheet/OrigamSheet.vue +11 -3
  178. package/dist/src/components/Skeleton/OrigamSkeleton.vue +2 -4
  179. package/dist/src/components/Slide/OrigamSlideGroup.vue +1 -1
  180. package/dist/src/components/SliderField/OrigamSliderField.vue +7 -6
  181. package/dist/src/components/SliderField/OrigamSliderFieldTrack.vue +1 -1
  182. package/dist/src/components/Snackbar/OrigamSnackbar.vue +5 -4
  183. package/dist/src/components/Snackbar/OrigamSnackbarGroup.vue +1 -1
  184. package/dist/src/components/Snackbar/OrigamSnackbarItem.vue +27 -26
  185. package/dist/src/components/Stepper/OrigamStepper.vue +6 -2
  186. package/dist/src/components/Stepper/OrigamStepperItem.vue +10 -3
  187. package/dist/src/components/Switch/OrigamSwitch.vue +35 -37
  188. package/dist/src/components/Switch/OrigamSwitchTrack.vue +9 -15
  189. package/dist/src/components/SystemBar/OrigamSystemBar.vue +14 -4
  190. package/dist/src/components/Table/OrigamTable.vue +15 -3
  191. package/dist/src/components/Tabs/OrigamTab.vue +13 -3
  192. package/dist/src/components/Tabs/OrigamTabPanel.vue +1 -1
  193. package/dist/src/components/Tabs/OrigamTabPanels.vue +1 -1
  194. package/dist/src/components/Tabs/OrigamTabs.vue +1 -1
  195. package/dist/src/components/TextField/OrigamTextField.vue +8 -1
  196. package/dist/src/components/TextMask/OrigamTextMask.vue +17 -27
  197. package/dist/src/components/TextareaField/OrigamRichToolbar.vue +15 -11
  198. package/dist/src/components/TextareaField/OrigamTextareaField.vue +11 -1
  199. package/dist/src/components/ThemeProvider/OrigamThemeProvider.vue +4 -1
  200. package/dist/src/components/Timeline/OrigamTimeline.vue +3 -3
  201. package/dist/src/components/Timeline/OrigamTimelineItem.vue +3 -1
  202. package/dist/src/components/Title/OrigamTitle.vue +20 -8
  203. package/dist/src/components/Toolbar/OrigamToolbar.vue +17 -5
  204. package/dist/src/components/Tooltip/OrigamTooltip.vue +12 -3
  205. package/dist/src/components/Transition/OrigamExpandX.vue +1 -1
  206. package/dist/src/components/Transition/OrigamExpandY.vue +1 -1
  207. package/dist/src/components/Transition/OrigamFade.vue +1 -1
  208. package/dist/src/components/Transition/OrigamReverseTranslatePicker.vue +1 -1
  209. package/dist/src/components/Transition/OrigamScaleRotate.vue +1 -1
  210. package/dist/src/components/Transition/OrigamSlideX.vue +1 -1
  211. package/dist/src/components/Transition/OrigamSlideY.vue +1 -1
  212. package/dist/src/components/Transition/OrigamSnack.vue +1 -1
  213. package/dist/src/components/Transition/OrigamTransition.vue +1 -1
  214. package/dist/src/components/Transition/OrigamTranslateBottom.vue +1 -1
  215. package/dist/src/components/Transition/OrigamTranslatePicker.vue +1 -1
  216. package/dist/src/components/Transition/OrigamTranslateScale.vue +1 -1
  217. package/dist/src/components/Transition/OrigamWindowXReverseTranslate.vue +1 -1
  218. package/dist/src/components/Transition/OrigamWindowXTranslate.vue +1 -1
  219. package/dist/src/components/Transition/OrigamWindowYReverseTranslate.vue +1 -1
  220. package/dist/src/components/Transition/OrigamWindowYTranslate.vue +1 -1
  221. package/dist/src/components/Treeview/OrigamTreeview.vue +1 -1
  222. package/dist/src/components/Treeview/OrigamTreeviewNode.vue +7 -5
  223. package/dist/src/components/Video/OrigamVideo.vue +56 -63
  224. package/dist/src/components/VirtualScroll/OrigamVirtualScroll.vue +1 -1
  225. package/dist/src/components/VirtualScroll/OrigamVirtualScrollItem.vue +1 -6
  226. package/dist/src/components/Watermark/OrigamWatermark.vue +1 -1
  227. package/dist/src/components/Window/OrigamWindow.vue +32 -2
  228. package/dist/src/components/Window/OrigamWindowItem.vue +1 -1
  229. package/dist/src/components/index.cjs +1 -1
  230. package/dist/src/components/index.js +1 -1
  231. package/dist/src/composables/Chart/chart-gauge.composable.cjs +1 -1
  232. package/dist/src/composables/Chart/chart-gauge.composable.js +1 -1
  233. package/dist/src/composables/Chart/chart-header-typography.composable.cjs +20 -0
  234. package/dist/src/composables/Chart/chart-header-typography.composable.d.ts +27 -0
  235. package/dist/src/composables/Chart/chart-header-typography.composable.js +11 -0
  236. package/dist/src/composables/Chart/chart-zoom.composable.cjs +0 -1
  237. package/dist/src/composables/Chart/chart-zoom.composable.js +0 -1
  238. package/dist/src/composables/Chart/chart.composable.cjs +0 -11
  239. package/dist/src/composables/Chart/chart.composable.js +0 -11
  240. package/dist/src/composables/Code/code.composable.js +4 -1
  241. package/dist/src/composables/Commons/audio.composable.d.ts +9 -9
  242. package/dist/src/composables/Commons/border.composable.cjs +10 -0
  243. package/dist/src/composables/Commons/border.composable.js +7 -0
  244. package/dist/src/composables/Commons/color.composable.cjs +42 -42
  245. package/dist/src/composables/Commons/color.composable.d.ts +8 -3
  246. package/dist/src/composables/Commons/color.composable.js +2 -2
  247. package/dist/src/composables/Commons/date-picker-calendar.composable.cjs +1 -1
  248. package/dist/src/composables/Commons/date-picker-calendar.composable.d.ts +1 -1
  249. package/dist/src/composables/Commons/date-picker-calendar.composable.js +1 -1
  250. package/dist/src/composables/Commons/defaults.composable.cjs +10 -9
  251. package/dist/src/composables/Commons/defaults.composable.js +10 -9
  252. package/dist/src/composables/Commons/delay.composable.cjs +8 -3
  253. package/dist/src/composables/Commons/delay.composable.js +7 -4
  254. package/dist/src/composables/Commons/density.composable.cjs +1 -1
  255. package/dist/src/composables/Commons/density.composable.js +2 -2
  256. package/dist/src/composables/Commons/dragResizer.composable.cjs +7 -9
  257. package/dist/src/composables/Commons/dragResizer.composable.js +8 -9
  258. package/dist/src/composables/Commons/focus.composable.cjs +1 -1
  259. package/dist/src/composables/Commons/focus.composable.js +1 -1
  260. package/dist/src/composables/Commons/layout.composable.cjs +12 -0
  261. package/dist/src/composables/Commons/layout.composable.js +14 -0
  262. package/dist/src/composables/Commons/message.composable.cjs +1 -1
  263. package/dist/src/composables/Commons/message.composable.d.ts +1 -1
  264. package/dist/src/composables/Commons/message.composable.js +1 -1
  265. package/dist/src/composables/Commons/rounded.composable.cjs +15 -4
  266. package/dist/src/composables/Commons/rounded.composable.d.ts +1 -1
  267. package/dist/src/composables/Commons/rounded.composable.js +17 -6
  268. package/dist/src/composables/Commons/scroll.composable.cjs +2 -2
  269. package/dist/src/composables/Commons/scroll.composable.js +2 -2
  270. package/dist/src/composables/Commons/stateEffect.composable.cjs +36 -14
  271. package/dist/src/composables/Commons/stateEffect.composable.js +38 -14
  272. package/dist/src/composables/Commons/status.composable.cjs +11 -1
  273. package/dist/src/composables/Commons/status.composable.d.ts +2 -0
  274. package/dist/src/composables/Commons/status.composable.js +10 -1
  275. package/dist/src/composables/Commons/sticky.composable.d.ts +2 -14
  276. package/dist/src/composables/Commons/style.composable.cjs +5 -3
  277. package/dist/src/composables/Commons/style.composable.js +5 -3
  278. package/dist/src/composables/Commons/typography.composable.cjs +23 -0
  279. package/dist/src/composables/Commons/typography.composable.d.ts +7 -0
  280. package/dist/src/composables/Commons/typography.composable.js +21 -0
  281. package/dist/src/composables/DataTable/headers.composable.d.ts +4 -364
  282. package/dist/src/composables/Icon/icon.composable.cjs +6 -1
  283. package/dist/src/composables/Icon/icon.composable.js +4 -1
  284. package/dist/src/composables/InlineEdit/inline-edit.composable.cjs +16 -2
  285. package/dist/src/composables/InlineEdit/inline-edit.composable.js +16 -2
  286. package/dist/src/composables/Masonry/masonry.composable.d.ts +2 -1
  287. package/dist/src/composables/Responsive/aspect.composable.cjs +9 -1
  288. package/dist/src/composables/Responsive/aspect.composable.d.ts +1 -1
  289. package/dist/src/composables/Responsive/aspect.composable.js +9 -1
  290. package/dist/src/composables/Theme/installed-themes.composable.cjs +11 -0
  291. package/dist/src/composables/Theme/installed-themes.composable.d.ts +19 -0
  292. package/dist/src/composables/Theme/installed-themes.composable.js +5 -0
  293. package/dist/src/composables/Theme/theme.composable.cjs +86 -15
  294. package/dist/src/composables/Theme/theme.composable.d.ts +55 -10
  295. package/dist/src/composables/Theme/theme.composable.js +88 -17
  296. package/dist/src/composables/index.cjs +36 -0
  297. package/dist/src/composables/index.d.ts +3 -0
  298. package/dist/src/composables/index.js +3 -0
  299. package/dist/src/consts/Bracket/bracket.const.cjs +4 -2
  300. package/dist/src/consts/Bracket/bracket.const.d.ts +12 -0
  301. package/dist/src/consts/Bracket/bracket.const.js +2 -0
  302. package/dist/src/consts/Commons/density.const.cjs +2 -2
  303. package/dist/src/consts/Commons/density.const.d.ts +1 -1
  304. package/dist/src/consts/Commons/density.const.js +1 -1
  305. package/dist/src/consts/Commons/rounded.const.cjs +4 -2
  306. package/dist/src/consts/Commons/rounded.const.d.ts +22 -2
  307. package/dist/src/consts/Commons/rounded.const.js +3 -1
  308. package/dist/src/consts/DataTable/select.const.cjs +1 -1
  309. package/dist/src/consts/DataTable/select.const.js +1 -1
  310. package/dist/src/consts/Icon/mdi.const.cjs +6 -1
  311. package/dist/src/consts/Icon/mdi.const.js +10 -2
  312. package/dist/src/consts/Theme/theme.const.cjs +11 -1
  313. package/dist/src/consts/Theme/theme.const.d.ts +16 -0
  314. package/dist/src/consts/Theme/theme.const.js +10 -0
  315. package/dist/src/directives/Contrast/contrast.directive.cjs +150 -0
  316. package/dist/src/directives/Contrast/contrast.directive.d.ts +5 -0
  317. package/dist/src/directives/Contrast/contrast.directive.js +131 -0
  318. package/dist/src/directives/index.cjs +7 -0
  319. package/dist/src/directives/index.d.ts +1 -0
  320. package/dist/src/directives/index.js +1 -0
  321. package/dist/src/enums/BottomNav/bottom-nav-position.enum.cjs +12 -0
  322. package/dist/src/enums/BottomNav/bottom-nav-position.enum.d.ts +10 -0
  323. package/dist/src/enums/BottomNav/bottom-nav-position.enum.js +6 -0
  324. package/dist/src/enums/Toolbar/toolbar.enum.cjs +1 -0
  325. package/dist/src/enums/Toolbar/toolbar.enum.d.ts +2 -1
  326. package/dist/src/enums/Toolbar/toolbar.enum.js +1 -0
  327. package/dist/src/enums/index.cjs +22 -0
  328. package/dist/src/enums/index.d.ts +2 -0
  329. package/dist/src/enums/index.js +2 -0
  330. package/dist/src/interfaces/Alert/alert.interface.d.ts +2 -3
  331. package/dist/src/interfaces/App/app-bar.interface.d.ts +19 -1
  332. package/dist/src/interfaces/App/app.interface.cjs +1 -0
  333. package/dist/src/interfaces/App/app.interface.d.ts +24 -0
  334. package/dist/src/interfaces/Audio/audio-player.interface.d.ts +23 -2
  335. package/dist/src/interfaces/Avatar/avatar.interface.d.ts +2 -4
  336. package/dist/src/interfaces/Badge/badge.interface.d.ts +2 -2
  337. package/dist/src/interfaces/Blockquote/blockquote.interface.d.ts +23 -21
  338. package/dist/src/interfaces/BottomNav/bottom-nav.interface.d.ts +12 -4
  339. package/dist/src/interfaces/Bracket/bracket-competitor-component.interface.d.ts +17 -6
  340. package/dist/src/interfaces/Bracket/bracket-match-component.interface.d.ts +13 -6
  341. package/dist/src/interfaces/Bracket/bracket-match.interface.d.ts +22 -0
  342. package/dist/src/interfaces/Bracket/bracket-round-component.interface.d.ts +2 -2
  343. package/dist/src/interfaces/Bracket/bracket.interface.d.ts +17 -2
  344. package/dist/src/interfaces/Breadcrumb/breadcrumb-divider.interface.d.ts +2 -2
  345. package/dist/src/interfaces/Breadcrumb/breadcrumb.interface.d.ts +2 -3
  346. package/dist/src/interfaces/Btn/btn-group.interface.d.ts +2 -2
  347. package/dist/src/interfaces/Btn/btn.interface.d.ts +11 -3
  348. package/dist/src/interfaces/Calendar/calendar.interface.d.ts +7 -2
  349. package/dist/src/interfaces/Card/card-header.interface.d.ts +2 -2
  350. package/dist/src/interfaces/Card/card-text.interface.d.ts +2 -2
  351. package/dist/src/interfaces/Carousel/carousel.interface.d.ts +2 -2
  352. package/dist/src/interfaces/Chart/chart-base.interface.d.ts +9 -8
  353. package/dist/src/interfaces/Chart/chart-word-cloud.interface.d.ts +1 -1
  354. package/dist/src/interfaces/Chart/chart.interface.d.ts +12 -1
  355. package/dist/src/interfaces/Checkbox/checkbox-btn.interface.d.ts +3 -3
  356. package/dist/src/interfaces/Checkbox/checkbox.interface.d.ts +10 -9
  357. package/dist/src/interfaces/Chip/chip-group.interface.d.ts +3 -1
  358. package/dist/src/interfaces/Chip/chip.interface.d.ts +2 -2
  359. package/dist/src/interfaces/Clipboard/clipboard.interface.d.ts +2 -2
  360. package/dist/src/interfaces/Code/code.interface.d.ts +19 -2
  361. package/dist/src/interfaces/ColorPickerField/color-picker-field.interface.d.ts +2 -2
  362. package/dist/src/interfaces/CommandPalette/command-palette.interface.d.ts +2 -1
  363. package/dist/src/interfaces/Commons/calendar.interface.d.ts +3 -3
  364. package/dist/src/interfaces/Commons/commons.interface.d.ts +34 -1
  365. package/dist/src/interfaces/Commons/filters.interface.d.ts +2 -2
  366. package/dist/src/interfaces/Commons/hover.interface.d.ts +18 -3
  367. package/dist/src/interfaces/Commons/scroll.interface.d.ts +8 -1
  368. package/dist/src/interfaces/Commons/typography.interface.cjs +1 -0
  369. package/dist/src/interfaces/Commons/typography.interface.d.ts +52 -0
  370. package/dist/src/interfaces/Commons/typography.interface.js +0 -0
  371. package/dist/src/interfaces/Commons/validation.interface.d.ts +3 -1
  372. package/dist/src/interfaces/Counter/counter.interface.d.ts +2 -2
  373. package/dist/src/interfaces/DataList/data-list.interface.d.ts +2 -2
  374. package/dist/src/interfaces/DataList/data-text.interface.d.ts +5 -0
  375. package/dist/src/interfaces/DataList/data-title.interface.d.ts +5 -0
  376. package/dist/src/interfaces/DataTable/headers.interface.d.ts +5 -5
  377. package/dist/src/interfaces/DataTable/row.interface.d.ts +2 -2
  378. package/dist/src/interfaces/DatePicker/date-picker-controls.interface.d.ts +16 -8
  379. package/dist/src/interfaces/DatePicker/date-picker-header.interface.d.ts +6 -3
  380. package/dist/src/interfaces/DatePicker/date-picker-months.interface.d.ts +2 -2
  381. package/dist/src/interfaces/DatePicker/date-picker-years.interface.d.ts +1 -1
  382. package/dist/src/interfaces/DatePicker/date-picker.interface.d.ts +1 -1
  383. package/dist/src/interfaces/Dialog/dialog-confirmation.interface.d.ts +2 -2
  384. package/dist/src/interfaces/EmptyState/empty-state.interface.d.ts +9 -2
  385. package/dist/src/interfaces/ExpensionPanel/expansion-panel-header.interface.d.ts +2 -2
  386. package/dist/src/interfaces/Field/field.interface.d.ts +7 -2
  387. package/dist/src/interfaces/FileField/file-field-dragndrop-item.interface.d.ts +2 -2
  388. package/dist/src/interfaces/FileField/file-field-list-item.interface.d.ts +2 -2
  389. package/dist/src/interfaces/FileField/file-field.interface.d.ts +1 -1
  390. package/dist/src/interfaces/Form/form.interface.d.ts +2 -2
  391. package/dist/src/interfaces/Grids/row.interface.d.ts +2 -2
  392. package/dist/src/interfaces/InfiniteScroll/infinite-scroll.interface.d.ts +2 -2
  393. package/dist/src/interfaces/InlineEdit/inline-edit.interface.d.ts +31 -2
  394. package/dist/src/interfaces/Input/input.interface.d.ts +4 -3
  395. package/dist/src/interfaces/Kbd/kbd.interface.d.ts +2 -2
  396. package/dist/src/interfaces/Label/label.interface.d.ts +2 -2
  397. package/dist/src/interfaces/List/list-group.interface.d.ts +4 -1
  398. package/dist/src/interfaces/List/list-item.interface.d.ts +2 -2
  399. package/dist/src/interfaces/List/list-subheader.interface.d.ts +2 -2
  400. package/dist/src/interfaces/Media/media-scrubber.interface.d.ts +10 -2
  401. package/dist/src/interfaces/Messages/messages.interface.d.ts +2 -2
  402. package/dist/src/interfaces/NumberField/number-field.interface.d.ts +1 -1
  403. package/dist/src/interfaces/Nuxt/nuxt-module.interface.d.ts +55 -15
  404. package/dist/src/interfaces/OtpInputField/otp-input-field.interface.d.ts +4 -2
  405. package/dist/src/interfaces/Pagination/pagination.interface.d.ts +18 -3
  406. package/dist/src/interfaces/Parallax/parallax.interface.d.ts +2 -2
  407. package/dist/src/interfaces/PasswordField/password-field.interface.d.ts +1 -1
  408. package/dist/src/interfaces/Picker/picker-title.interface.d.ts +2 -2
  409. package/dist/src/interfaces/Progress/progress.interface.d.ts +8 -2
  410. package/dist/src/interfaces/RatingField/rating-field-item.interface.d.ts +2 -1
  411. package/dist/src/interfaces/SelectionControl/selection-control-group.interface.d.ts +2 -1
  412. package/dist/src/interfaces/SelectionControl/selection-control.interface.d.ts +23 -5
  413. package/dist/src/interfaces/Sheet/sheet.interface.d.ts +2 -2
  414. package/dist/src/interfaces/Snackbar/snackbar-item.interface.d.ts +2 -2
  415. package/dist/src/interfaces/SystemBar/system-bar.interface.d.ts +2 -2
  416. package/dist/src/interfaces/Table/table.interface.d.ts +2 -2
  417. package/dist/src/interfaces/Tabs/tab.interface.d.ts +7 -2
  418. package/dist/src/interfaces/TextField/text-field.interface.d.ts +1 -1
  419. package/dist/src/interfaces/TextMask/text-mask.interface.d.ts +7 -33
  420. package/dist/src/interfaces/TextareaField/textarea-field.interface.d.ts +3 -3
  421. package/dist/src/interfaces/Theme/origam-theme.interface.cjs +1 -0
  422. package/dist/src/interfaces/Theme/origam-theme.interface.d.ts +114 -0
  423. package/dist/src/interfaces/Theme/origam-theme.interface.js +0 -0
  424. package/dist/src/interfaces/Timeline/timeline.interface.d.ts +1 -1
  425. package/dist/src/interfaces/Title/title.interface.d.ts +2 -2
  426. package/dist/src/interfaces/Toolbar/toolbar.interface.d.ts +2 -2
  427. package/dist/src/interfaces/Tooltip/tooltip.interface.d.ts +2 -2
  428. package/dist/src/interfaces/Video/video.interface.d.ts +2 -2
  429. package/dist/src/interfaces/Window/window.interface.d.ts +2 -2
  430. package/dist/src/interfaces/index.cjs +33 -0
  431. package/dist/src/interfaces/index.d.ts +3 -0
  432. package/dist/src/interfaces/index.js +3 -0
  433. package/dist/src/nuxt/module.cjs +78 -8
  434. package/dist/src/nuxt/module.js +81 -9
  435. package/dist/src/nuxt/plugin.client.cjs +28 -10
  436. package/dist/src/nuxt/plugin.client.js +28 -10
  437. package/dist/src/nuxt/plugin.server.cjs +52 -12
  438. package/dist/src/nuxt/plugin.server.js +55 -13
  439. package/dist/src/origam.cjs +39 -2
  440. package/dist/src/origam.d.ts +19 -1
  441. package/dist/src/origam.js +46 -5
  442. package/dist/src/themes/index.cjs +24 -0
  443. package/dist/src/themes/index.d.ts +1 -0
  444. package/dist/src/themes/index.js +1 -0
  445. package/dist/src/themes/origam.theme.cjs +906 -0
  446. package/dist/src/themes/origam.theme.d.ts +4 -0
  447. package/dist/src/themes/origam.theme.js +379 -0
  448. package/dist/src/types/BottomNav/bottom-nav.type.d.ts +2 -0
  449. package/dist/src/types/Commons/font-family.type.cjs +1 -0
  450. package/dist/src/types/Commons/font-family.type.d.ts +5 -0
  451. package/dist/src/types/Commons/font-family.type.js +0 -0
  452. package/dist/src/types/Commons/font-size.type.cjs +1 -0
  453. package/dist/src/types/Commons/font-size.type.d.ts +6 -0
  454. package/dist/src/types/Commons/font-size.type.js +0 -0
  455. package/dist/src/types/Commons/font-weight.type.cjs +1 -0
  456. package/dist/src/types/Commons/font-weight.type.d.ts +5 -0
  457. package/dist/src/types/Commons/font-weight.type.js +0 -0
  458. package/dist/src/types/Commons/letter-spacing.type.cjs +1 -0
  459. package/dist/src/types/Commons/letter-spacing.type.d.ts +5 -0
  460. package/dist/src/types/Commons/letter-spacing.type.js +0 -0
  461. package/dist/src/types/Commons/line-height.type.cjs +1 -0
  462. package/dist/src/types/Commons/line-height.type.d.ts +5 -0
  463. package/dist/src/types/Commons/line-height.type.js +0 -0
  464. package/dist/src/types/Commons/mode.type.d.ts +1 -1
  465. package/dist/src/types/Theme/installed-theme.type.cjs +1 -0
  466. package/dist/src/types/Theme/installed-theme.type.d.ts +31 -0
  467. package/dist/src/types/Theme/installed-theme.type.js +0 -0
  468. package/dist/src/types/Theme/semantic-tree.type.cjs +1 -0
  469. package/dist/src/types/Theme/semantic-tree.type.d.ts +48 -0
  470. package/dist/src/types/Theme/semantic-tree.type.js +0 -0
  471. package/dist/src/types/Theme/theme.type.d.ts +27 -6
  472. package/dist/src/types/Theme/token-tree.type.cjs +1 -0
  473. package/dist/src/types/Theme/token-tree.type.d.ts +10 -0
  474. package/dist/src/types/Theme/token-tree.type.js +0 -0
  475. package/dist/src/types/index.cjs +88 -0
  476. package/dist/src/types/index.d.ts +8 -0
  477. package/dist/src/types/index.js +8 -0
  478. package/dist/src/types/tokens.type.d.ts +1 -1
  479. package/dist/src/utils/Bracket/bracket-surface.util.cjs +106 -0
  480. package/dist/src/utils/Bracket/bracket-surface.util.d.ts +47 -0
  481. package/dist/src/utils/Bracket/bracket-surface.util.js +88 -0
  482. package/dist/src/utils/Commons/color.util.cjs +4 -2
  483. package/dist/src/utils/Commons/color.util.js +4 -2
  484. package/dist/src/utils/Commons/commons.util.cjs +3 -2
  485. package/dist/src/utils/Commons/commons.util.js +3 -2
  486. package/dist/src/utils/Commons/dom.util.d.ts +1 -1
  487. package/dist/src/utils/Commons/elevation.util.cjs +1 -1
  488. package/dist/src/utils/Commons/elevation.util.js +1 -1
  489. package/dist/src/utils/Commons/forwardRefs.util.cjs +1 -1
  490. package/dist/src/utils/Commons/forwardRefs.util.js +1 -1
  491. package/dist/src/utils/Commons/gradient.util.cjs +3 -3
  492. package/dist/src/utils/Commons/gradient.util.js +1 -1
  493. package/dist/src/utils/Commons/hover.util.cjs +5 -1
  494. package/dist/src/utils/Commons/hover.util.js +5 -1
  495. package/dist/src/utils/Commons/ripple.util.cjs +1 -2
  496. package/dist/src/utils/Commons/ripple.util.js +2 -3
  497. package/dist/src/utils/Commons/rounded.util.cjs +5 -0
  498. package/dist/src/utils/Commons/rounded.util.d.ts +9 -0
  499. package/dist/src/utils/Commons/rounded.util.js +4 -0
  500. package/dist/src/utils/DataTable/headers.util.cjs +1 -1
  501. package/dist/src/utils/DataTable/headers.util.js +1 -1
  502. package/dist/src/utils/DataTable/sort.util.cjs +2 -2
  503. package/dist/src/utils/DataTable/sort.util.js +2 -2
  504. package/dist/src/utils/List/list-item.util.d.ts +7 -0
  505. package/dist/src/utils/Theme/apply-theme.util.cjs +148 -0
  506. package/dist/src/utils/Theme/apply-theme.util.d.ts +65 -0
  507. package/dist/src/utils/Theme/apply-theme.util.js +125 -0
  508. package/dist/src/utils/Theme/token-name.util.cjs +47 -0
  509. package/dist/src/utils/Theme/token-name.util.d.ts +54 -0
  510. package/dist/src/utils/Theme/token-name.util.js +55 -0
  511. package/dist/src/utils/index.cjs +22 -0
  512. package/dist/src/utils/index.d.ts +2 -0
  513. package/dist/src/utils/index.js +2 -0
  514. package/package.json +17 -58
  515. package/CHANGELOG.md +0 -807
  516. package/README.md +0 -275
  517. package/dist/src/App.vue +0 -25
  518. package/dist/src/main.cjs +0 -7
  519. package/dist/src/main.d.ts +0 -1
  520. package/dist/src/main.js +0 -4
  521. /package/dist/src/components/{QRCode → QrCode}/index.cjs +0 -0
  522. /package/dist/src/components/{QRCode → QrCode}/index.js +0 -0
  523. /package/dist/src/{components/QRCode/index.d.ts → interfaces/App/app.interface.js} +0 -0
package/CHANGELOG.md DELETED
@@ -1,807 +0,0 @@
1
- # origam — Changelog
2
-
3
- This changelog tracks releases of the `origam` package itself. Token-value
4
- churn (Tokens Studio sync from Figma, semantic primitive shifts) lives in
5
- [`tokens/CHANGELOG.md`](./tokens/CHANGELOG.md) — keep them separate so
6
- "the design moved" never blocks a release of "the code shipped a new
7
- component".
8
-
9
- Format inspired by [Keep a Changelog](https://keepachangelog.com).
10
- This project follows [Semantic Versioning](https://semver.org).
11
-
12
- ---
13
-
14
- ## [Unreleased]
15
-
16
- ### Added
17
-
18
- - `OrigamTextMask` — text reveals an animated background via
19
- `background-clip: text`. Accepts gradient (raw / `IGradient` /
20
- preset name) or image / video URL as `background`. 4 animation
21
- types (`pan` / `rotate` / `pulse` / `zoom`) with respect to
22
- `prefers-reduced-motion`. Default slot supports rich markup
23
- (multi-line headlines, nested elements). Zero JS animation
24
- (pure CSS keyframes). SSR-safe. Baseline 2024 browser support
25
- documented.
26
- - Gradient support for `color` / `bgColor` / `textColor` props across
27
- the DS. Three input formats: raw CSS gradient string
28
- (`color="linear-gradient(...)"`), structured `IGradient` object
29
- (`{ from, to, via?, direction?, type? }` or `{ stops: [...] }`), and
30
- preset names (`color="gradient-sunset"` resolves to
31
- `var(--origam-gradient---sunset)`). 5 built-in semantic presets
32
- (`sunset`, `ocean`, `forest`, `fire`, `midnight`) with light + dark
33
- variants. Text gradient via `background-clip: text` when applied to
34
- `color` (not `bgColor`). 100 % backward compatible.
35
- - `OrigamChart` + `useChart` — in-house chart component. 8 types
36
- (`line` / `area` / `bar` / `column` / `pie` / `donut` / `scatter` /
37
- `radar`). Pure SVG rendering (no canvas, no `d3`, no `chart.js`,
38
- no `echarts`). Tooltip rendered inline (positioned via mouse move),
39
- legend as a `<ul role="list">` with click-to-toggle series
40
- visibility. Animated entrance with `prefers-reduced-motion` respect.
41
- Custom slots for `tooltip` / `legend-item` / `title` / `empty`.
42
- ARIA `role="img"` with `<title>` + `<desc>` for screen readers,
43
- every data point is `tabindex="0"` + `role="button"` with a
44
- descriptive `aria-label`. Pure-function SVG path utilities
45
- (`linePath`, `smoothPath`, `areaPath`, `arcPath`, `polygonPath`,
46
- `polarToCartesian`, `pathLength`) — SSR-safe. Scales / ticks /
47
- paths produced by the `useChart` composable; reusable on its own
48
- outside the component template. New `tokens/component/chart.json`
49
- (title, subtitle, axis, grid, tooltip, legend, point, bar, pie,
50
- radar, animation groups).
51
- - `OrigamCalendar` + `useCalendar` — full calendar component. 4 views
52
- (month/week/day/agenda), navigation, events with
53
- start/end/color/category, range select with drag-to-create, recurring
54
- events (RRULE subset: `FREQ=DAILY|WEEKLY|MONTHLY` + `INTERVAL` +
55
- `COUNT` + `UNTIL` + `BYDAY`). Built-in toolbar with view switcher.
56
- Locale-aware via `Intl.DateTimeFormat`. Custom slots for header,
57
- event card, day cell, empty state. Zero external dep — no FullCalendar
58
- / Vue-Cal / event-source. Pure date helpers in
59
- `src/utils/Calendar/`. ARIA `application/gridcell/toolbar` pattern +
60
- keyboard navigation (arrow keys, Page Up / Page Down). SSR-safe (no
61
- `window` / `document` at setup).
62
- - `OrigamSound` + `useAudioPlayer` + `useWaveform` composables —
63
- in-house audio player. Wraps native `<audio>` with custom UI
64
- (play/pause, scrubber, volume, optional waveform via
65
- `OfflineAudioContext`). Media Session API integration for
66
- lock-screen controls + metadata (title/artist/album/artwork).
67
- Cover image. 3 controls modes (custom/native/none). Respects
68
- `prefers-reduced-motion`. Zero external dep — no wavesurfer.js /
69
- howler. ARIA: dynamic aria-labels, `role="slider"` on scrubber,
70
- `role="img"` on waveform canvas. SSR-safe (Web Audio guarded).
71
- New `tokens/component/sound.json` (background, cover, metadata,
72
- controls, btn, time, scrubber, volume, waveform groups; aligned
73
- with light/dark themes).
74
- - `OrigamVideo` + `useVideoPlayer` composable — in-house video player.
75
- Wraps native `<video>` with custom UI (play/pause, scrubber, volume,
76
- fullscreen, PIP, captions). 3 controls modes (custom/native/none).
77
- Captions/subtitles via WebVTT tracks with language switcher. Aspect-
78
- ratio prop preset (`16/9`, `4/3`, `1/1`, `21/9`, `9/16`, raw values).
79
- Respects `prefers-reduced-motion` (auto-disables autoplay + console
80
- warn). Zero external dep — no plyr / video.js / hls.js (HLS/DASH
81
- stays peer dep optional if needed later). ARIA: dynamic aria-labels
82
- on controls, `role="slider"` on scrubber, `role="status"` on
83
- loading, `role="alert"` on error. SSR-friendly (composable defers
84
- every DOM access to `onMounted`). New `tokens/component/video.json`
85
- (background, controls, btn, time, scrubber, volume, loading, error
86
- groups; aligned with light/dark themes).
87
- - `OrigamWatermark` + `useWatermark` composable — diagonal repeating
88
- overlay for confidential previews / draft markers / sensitive
89
- screenshots. SVG data-URL pattern (no canvas, no images required
90
- for text mode). Configurable text or image, opacity, angle, gap,
91
- font. Anti-tamper option via MutationObserver (dissuasive, not a
92
- security feature). `pointer-events: none` so the wrapped content
93
- stays interactive. New `tokens/component/watermark.json`
94
- (color, opacity presets low/medium/high, gap presets
95
- tight/medium/loose, font-size presets sm/md/lg, z-index).
96
- `aria-hidden="true"` on the overlay so screen readers ignore the
97
- watermark. SSR-safe (pure-string SVG construction). Programmatic
98
- `install(target?)` / `uninstall()` helpers exposed by the
99
- composable for non-component use cases.
100
- - `OrigamQRCode` + `useQRCode` composable — SVG QR code rendering.
101
- Powered by `qrcode-generator` (~5 kB, pure JS, no canvas dep). 4
102
- error correction levels (L/M/Q/H). Optional logo overlay
103
- (auto-padded white background, ~20 % max recommended size).
104
- Rounded modules option. SSR-safe (pure JS encoding). ARIA
105
- `role="img"` + `aria-label` (defaults to `"QR code for {value}"`,
106
- overridable via prop). Module-level LRU cache (16 entries, keyed on
107
- value + ECC) so re-renders with the same payload reuse the matrix.
108
- - `OrigamNumberFormat` + `useNumberFormat` composable — i18n number
109
- formatting via `Intl.NumberFormat` (no external dep). 7 formats
110
- (`decimal` / `currency` / `percent` / `unit` / `compact` /
111
- `scientific` / `engineering`), full locale support with auto
112
- resolution chain (`<html lang>` → `navigator.language` → `'en-US'`),
113
- currency / unit / sign / notation controls. LRU-cached `Intl`
114
- instances (16-entry capacity, keyed on serialised options). Scoped
115
- `#default` slot exposes `{ formatted, parts, value }` for custom
116
- rendering (e.g. highlight currency symbol). ARIA `aria-label`
117
- expansion for compact notation (`1.2M` visible → `"1.2 million"` for
118
- screen readers).
119
- - `OrigamInlineEdit` + `useInlineEdit` composable — edit-in-place
120
- pattern. Click the display affordance → an input appears prefilled
121
- with the current value → `Enter` confirms / `Escape` cancels. v-model
122
- binds to the value, sync or async `validate` callback returns
123
- `true | string | Promise<true | string>` and keeps the editor open
124
- on error (`role="alert"` for screen readers). Multiline mode renders
125
- a `<textarea>` (Cmd/Ctrl+Enter to confirm). Custom slots for
126
- `#display` / `#edit` / `#actions`. Loading state during async
127
- validation via `aria-busy` + optional CSS hook. New
128
- `tokens/component/inline-edit.json` (display + editor + error
129
- padding / border / color / focus ring). ARIA `aria-label` on the
130
- display button, `aria-invalid` + `aria-describedby` on the input.
131
- - `OrigamClipboard` + `useClipboard` composable — copy-to-clipboard
132
- helper. Wraps any trigger with `navigator.clipboard.writeText` +
133
- `execCommand` fallback. Scoped `#default` slot exposes
134
- `{ copy, copied, error }`. Auto-resetting feedback state after
135
- configurable duration. ARIA `aria-live="polite"` on the feedback
136
- overlay. SSR-safe (guards on `typeof navigator` /
137
- `typeof document`). New `tokens/component/clipboard.json` (feedback
138
- pill color, background, padding, border-radius, transition
139
- duration).
140
- - `OrigamEmptyState` — placeholder for absent data. 5 visual presets
141
- (`no-data` / `no-results` / `error` / `offline` / `locked`) with
142
- auto icon + intent mapping via `EMPTY_STATE_PRESET_CONFIG`. Slots
143
- for `icon` / `title` / `description` / `actions` / `default` (full
144
- layout override). Three sizes (`sm` / `md` / `lg`) and two
145
- alignments (`center` / `left`). ARIA `role="status"` +
146
- `aria-live="polite"` for dynamic empty transitions. New
147
- `tokens/component/empty-state.json` (per-size padding / gap /
148
- font-size, per-preset intent color).
149
- - `OrigamBlockquote` — typography component for long citations. 5
150
- variants (default / elegant / quoted / minimal / pull). Author +
151
- source + cite attribute support. Locale-aware decorative quote
152
- marks (fr / en / es / de). Slots for custom author / source
153
- rendering. ARIA via native blockquote semantics.
154
- - `OrigamMasonry` — Pinterest-style masonry layout. CSS-first via
155
- `grid-template-rows: masonry` when supported (detected via
156
- `useCssSupport` — new `masonry` feature flag in the registry). JS
157
- fallback bucket-fill algorithm with `ResizeObserver` (no external
158
- dep). Responsive columns via container-query breakpoints
159
- (`columnBreakpoints`). Optional `transform` transition on item
160
- reposition (`animated`, default `true`). Vertical alignment via
161
- `align: 'top' | 'center'` (JS path only). New `useMasonry`
162
- composable exporting `pickColumnsForWidth` and `bucketFill` pure
163
- helpers; new `tokens/component/masonry.json`
164
- (`animation-duration`, `animation-easing`).
165
- - `OrigamGrid` + `OrigamGridItem` — declarative CSS Grid wrapper. Props
166
- for `columns` / `rows` / `areas` / `gap` (token or raw CSS) /
167
- `autoFlow` / `align*` / `justify*` and the matching item-level
168
- `column` / `row` / `area` / `*Self` shorthands. `GridItem` accepts
169
- both object syntax (`{ start: 1, end: 5 }`, `{ start: 1, span: 4 }`)
170
- and raw CSS strings (`'1 / 5'`, `'span 2'`) for fine-grained column /
171
- row span control. New tokens `--origam-grid---gap-{xs,sm,md,lg,xl}`
172
- resolved against `space.*` primitives. CSS Grid is stable since 2017
173
- — no fallback needed.
174
-
175
- ---
176
-
177
- ## [2.3.0] — 2026-05-15
178
-
179
- > **The features release.** Four new components, four major
180
- > enrichments, an official Nuxt module, and a comprehensive SSR
181
- > safety audit. All additions are backward-compatible — drop-in
182
- > upgrade from 2.2.x. 378 unit tests (+158 vs 2.2.1), 0 lint errors.
183
-
184
- ### Added
185
-
186
- - `origam/nuxt` sub-export — official Nuxt 3 / Nuxt 4 module. Auto-imports
187
- components and composables. SSR-safe theme resolution via cookie +
188
- `Sec-CH-Prefers-Color-Scheme` header (no FOUC, no hydration mismatch).
189
- Auto-injects token CSS files (primitive + selected themes + utilities).
190
- Configurable via `origam: {}` in `nuxt.config.ts`. Resolves through
191
- `modules: ['origam/nuxt']`. New `IOrigamNuxtModuleOptions` and
192
- `IOrigamNuxtRuntimeConfig` interfaces; new theme constants
193
- (`ORIGAM_THEME_AUTO`, `ORIGAM_THEME_LIGHT`, `ORIGAM_THEME_DARK`,
194
- `ORIGAM_THEME_ATTR`, `ORIGAM_THEME_STORAGE_KEY`). Reference
195
- documentation at `docs/integrations/nuxt.md`.
196
-
197
- ### Changed
198
-
199
- - `OrigamTextField` — new `mask` prop with built-in patterns
200
- (`phone:fr`, `phone:us`, `phone:international`, `iban`, `siret`,
201
- `creditcard`, `date:iso`, `date:fr`, `date:us`, `time`, `time:12h`,
202
- `postcode:fr`, `postcode:us`) plus a custom pattern syntax
203
- (`#` = digit, `A` = letter, `*` = any, anything else is a literal).
204
- In-house mask engine — zero external dependency (no `imask.js` /
205
- `cleave.js` / `vue-the-mask`). Reactive validation pipeline with
206
- built-in `luhn` (credit card), `iban` (mod-97) and date parsers
207
- (`date:iso` / `date:fr` / `date:us`); custom validators accepted as
208
- `(unmasked) => boolean`. New emits `@valid(boolean)` and
209
- `@complete({ complete, unmasked })` fire on every value change. The
210
- v-model exposes the **unmasked** value while the DOM input displays
211
- the formatted (masked) one — paste handling strips literals and
212
- reformats, `aria-invalid` toggles on touched fields, and the engine
213
- auto-promotes phone-shaped patterns to `type="tel"` for mobile
214
- keyboard hints. New `useMask` composable, `applyMask` / `unmaskValue`
215
- / `resolveMaskConfig` / `validatePattern` utils, new `IMaskOptions`
216
- interface and `TMask` / `TBuiltInPattern` / `TPatternValidator`
217
- types.
218
- - `OrigamTextareaField` — new `mode="rich"` enabling a lightweight
219
- HTML / Markdown editor based on `contenteditable`. Built in-house
220
- with zero external dependencies (no TipTap, ProseMirror, Quill).
221
- 9 toolbar commands (`bold`, `italic`, `underline`, `link`,
222
- `list-bullet`, `list-ordered`, `heading`, `code-inline`,
223
- `clear-format`), customisable via the new `toolbar` prop (or
224
- `toolbar: false` to hide). Keyboard shortcuts (Cmd/Ctrl+B/I/U/K/E
225
- and Cmd/Ctrl+Shift+7/8 for the two list modes). New `output` prop
226
- switches the v-model serialisation between `'html'` (sanitised) and
227
- `'markdown'` (CommonMark-flavoured subset). New `toolbarPosition`
228
- prop (`'top' | 'bottom' | 'floating'`). New `format` emit fired on
229
- every toolbar click or keyboard shortcut with the command id (and
230
- the URL for link insertion). New slots `#toolbar` and
231
- `#toolbar-item` allow replacing the default UI entirely. Internal
232
- sub-component `OrigamRichToolbar.vue` + composable
233
- `useTextareaRich` own the contenteditable contract. In-house HTML
234
- sanitiser with allowlist on tags (`p`, `br`, `strong`, `b`, `em`,
235
- `i`, `u`, `a`, `ul`, `ol`, `li`, `h1`, `h2`, `h3`, `code`),
236
- attributes (`href` restricted to `http:` / `https:` / `mailto:` /
237
- `tel:` plus relative URLs; `class` restricted to the
238
- `origam-rich--*` prefix), and stripping every `on*` event handler
239
- before per-tag filtering. External links are auto-hardened with
240
- `rel="noopener noreferrer nofollow" target="_blank"`. ARIA:
241
- `role="toolbar" + aria-label` on the toolbar, real `<button>` per
242
- command with `aria-label` + `aria-pressed`, the editing surface
243
- carries `role="textbox" + aria-multiline="true"`. New tokens under
244
- `component/textarea-field/rich-*` (toolbar surface, button states,
245
- content padding, inline-code colors, link color, heading sizes).
246
- The plain-mode (`mode="plain"`, default) API is fully
247
- backward-compatible — passing nothing keeps the previous
248
- `<textarea>` behaviour.
249
-
250
- - `OrigamCode` — major enrichment via shiki integration. Syntax
251
- highlighting for 13 languages (vue, ts, js, tsx, jsx, scss, css, json,
252
- bash, html, xml, yaml, md) plus `plaintext`. New props: `lineNumbers`,
253
- `highlightLines` (accepts both `number[]` and the range syntax
254
- `'2,5-7'`), `copyable`, `maxHeight`, `theme` (`'auto' | 'light' | 'dark'`),
255
- `wrap`, `filename`. Copy button with `navigator.clipboard` and an
256
- `execCommand('copy')` fallback for legacy WebViews. Lazy-init shiki
257
- highlighter cached as a module-level singleton across instances; an
258
- LRU (max 64 entries) caches highlighted HTML by `(code, lang, theme)`
259
- so re-renders never re-tokenise. Theme defaults to `auto` and tracks
260
- the host `<html data-theme>` attribute. New `useCode` composable
261
- exposing `{ highlight, prime, isReady, resetCacheForTesting }`. New
262
- utility `parseHighlightLines()` shared with stories/tests. Pure-CSS
263
- line-numbers gutter (CSS counter, no JS layout) and line-highlight
264
- swap (class toggle on already-rendered rows, no re-tokenisation).
265
- ARIA: `role="region"` on the surface, `aria-live="polite"` on the
266
- copy feedback, hidden line numbers. `shiki` (`^3.8.1`) promoted from
267
- `devDependencies` to `dependencies` (it's a runtime dep now); the
268
- bundle adds ~3 MB to installed `node_modules` for the curated subset.
269
- New tokens under `component/code` (35 vars: surface, header, filename,
270
- copy button, line-number gutter, line-highlight, scrollbar). The v2.x
271
- plain-text `<pre>` API is fully backward-compatible — passing just
272
- `code` and `lang` keeps the previous behaviour.
273
-
274
- - `OrigamParallax` — major enrichment. Multi-layer support via new
275
- `OrigamParallaxLayer` subcomponent (`speed`, `offsetX`, `offsetY`,
276
- `zIndex` props; layers register themselves into the host runtime and
277
- receive direct DOM mutations of `transform` outside Vue reactivity).
278
- Host gains `direction` (`'vertical' | 'horizontal' | 'both'`),
279
- `easing` (`'linear' | 'ease-out' | 'spring'`, in addition to the
280
- legacy raw CSS timing-function string), `disabled`, `speed`,
281
- `threshold` props. New emits: `@enter`, `@leave`,
282
- `@scroll-progress(0→1)` driven by `IntersectionObserver` +
283
- `requestAnimationFrame`. `prefers-reduced-motion: reduce` is honoured
284
- natively — layers stay at `translate3d(offsetX, offsetY, 0)` and the
285
- rAF loop short-circuits. CSS-first scroll-driven animations
286
- (`animation-timeline: view()`) when `view-timeline` is supported
287
- (Chrome 115+, Edge 115+) AND `easing === 'linear'`; JS fallback
288
- otherwise. Spring easing implemented as a damped lerp in the JS path.
289
- Existing single-layer / `<OrigamParallaxElement>` API preserved (the
290
- two layer kinds use independent injection contexts and can coexist
291
- inside the same host). New tokens: `parallax.transition-duration-spring`,
292
- `parallax.transition-easing-default` / `-spring`,
293
- `parallax.layer.will-change` / `.transform-origin`.
294
-
295
- ### Added
296
-
297
- - `OrigamCommandPalette` — ⌘K command launcher. Built on a teleported
298
- dialog with focus trap + focus restoration. Custom subsequence-based
299
- fuzzy-match algorithm (no external dep) ranks results by
300
- consecutive-run + label-prefix + first-position bonuses. Composable
301
- `useCommand` exposes a process-wide command registry — entries
302
- registered inside a Vue effect scope auto-unregister on dispose.
303
- Reuses `OrigamKbd` for inline shortcut display. Hotkey listener
304
- built on `useHotkey` (default `⌘+K` on macOS, `Ctrl+K` on
305
- Windows / Linux, configurable per combination or disabled with
306
- `:hotkey="null"`). ARIA combobox pattern (`role="combobox"` on the
307
- input, `role="listbox"` on the result list, `role="option"` per
308
- item, `aria-activedescendant` tracking the keyboard cursor) +
309
- `role="dialog"` + `aria-modal="true"` on the surface. Tokens exposed
310
- under `tokens/component/command-palette.json`
311
- (`--origam-command-palette---*`,
312
- `--origam-command-palette__input---*`,
313
- `--origam-command-palette__item---*`,
314
- `--origam-command-palette__group-title---*`,
315
- `--origam-command-palette__empty---*`,
316
- `--origam-command-palette__footer---*`,
317
- `--origam-command-palette--backdrop---*`).
318
-
319
- - `OrigamBracket` — e-sport tournament tree. Supports single-elimination,
320
- double-elimination and round-robin variants. SVG connectors
321
- auto-computed from `nextMatchId` (with positional fallback). Slots for
322
- custom match / competitor / round-title / connector rendering. ARIA
323
- `role="region"` with per-round `role="group"` + `aria-labelledby`
324
- pointing at title headings. Tokens exposed under
325
- `tokens/component/bracket.json` (`--origam-bracket---*`,
326
- `--origam-bracket-match---*`, `--origam-bracket-competitor---*`,
327
- `--origam-bracket-connector---*`, `--origam-bracket-round-robin---*`).
328
-
329
- - `OrigamSnackbarStack` — multi-toast notification system. Reuses
330
- `OrigamSnackbar` styling vocabulary for rendering. Composable
331
- `useSnackbarStack({ id })` exposes `notify` / `dismiss` /
332
- `dismissAll`. 8 anchor locations, max stack size with FIFO eviction,
333
- per-item auto-dismiss (or `0` for sticky), action buttons with
334
- optional `keepOpen`, ARIA `role="region"` on the stack root +
335
- `role="status"` / `"alert"` per intent on each item with matching
336
- `aria-live`. Slide-in / slide-out transitions degrade to a fade under
337
- `prefers-reduced-motion`. Tokens exposed under
338
- `tokens/component/snackbar-stack.json`
339
- (`--origam-snackbar-stack---*`, `--origam-snackbar-stack__item---*`).
340
-
341
- - `OrigamTabs` / `OrigamTab` / `OrigamTabPanels` / `OrigamTabPanel` —
342
- full tab system with horizontal / vertical orientation, three visual
343
- variants (`default` / `pills` / `underline`), ARIA `role="tablist"` +
344
- `role="tab"` + `role="tabpanel"` wiring, full keyboard navigation
345
- (`←`/`→`/`↑`/`↓`/`Home`/`End`/`Enter`/`Space`), lazy or eager panel
346
- mounting, optional touch-swipeable panels. Reuses the shared
347
- `useGroup` orchestration so the selection state, mandatory behaviour
348
- and disabled-tab semantics align with the rest of the system
349
- (`OrigamBtnToggle`, `OrigamCarousel`, `OrigamBottomNav`). Tokens
350
- exposed under `tokens/component/tabs.json` (item color, indicator
351
- color, panel padding, transition duration).
352
-
353
- - `OrigamClientOnly` — SSR helper component that renders its default
354
- slot only after `onMounted`. Optional `#fallback` slot (or
355
- `placeholder-tag` / `placeholder-class` props) reserves layout space
356
- during SSR to avoid CLS. Use to wrap fragments whose markup truly must
357
- differ between server and client (audio, deviceorientation,
358
- IntersectionObserver-driven features, …) without triggering hydration
359
- mismatches.
360
-
361
- - `useCssSupportClient(feature, { defaultValue })` — hydration-safe
362
- feature-gate helper. Returns a `Ref<boolean>` that starts at
363
- `defaultValue` (default `false`) on both SSR and first client render,
364
- then flips to the real `CSS.supports()` result inside `onMounted`.
365
- Use to gate **markup** branches (template `v-if`) when the regular
366
- `useCssSupport().css.value.X` would produce a hydration mismatch
367
- (class-only branches keep using the existing API — Vue 3 reconciles
368
- class diffs fine).
369
-
370
- ### Fixed
371
-
372
- - SSR safety — comprehensive audit of all composables and components
373
- that previously could crash on server render (`window is not defined`,
374
- `document is not defined`). `useCssSupport` already returned all-false
375
- flags during SSR; the rest of the surface (`useTheme`, `useCommand`,
376
- `useSnackbarStack`, `useCode`, `useMask`, `useTouch`, `useHotkey`,
377
- `useSticky`, `useSheetSwipe`, `useScroll`, `useParallax`, `useStyleTag`,
378
- `useTeleport`, `useLocationStrategies`, `useScrollStrategies`,
379
- `useDisplay`) was confirmed safe via the audit and patched where a
380
- composable's public method or a `computed` could be evaluated during
381
- SSR. Specifically: `useAspectRatio` no longer dereferences
382
- `window.innerWidth/Height` when no explicit `aspectRatio` prop is
383
- given; `useVirtual`'s `viewportHeight` computed guards
384
- `document.documentElement`; `useSnackbarStack.dismiss()` guards
385
- `window.clearTimeout`. Overlay components (Dialog, Drawer, Menu,
386
- Tooltip, Snackbar, ContextualMenu, SnackbarStack, CommandPalette)
387
- confirmed SSR-safe via `<Teleport>` (Vue defers the mount until the
388
- client). New guide `docs/guide/ssr.md`. New `src/__tests__/ssr-smoke.spec.ts`
389
- exercises every refactored composable in a simulated SSR environment
390
- (window/document/CSS stripped) **and** through `@vue/server-renderer`'s
391
- real `renderToString()`.
392
-
393
- ---
394
-
395
- ## [2.2.1] — 2026-05-14
396
-
397
- ### Fixed
398
-
399
- - Expose `./package.json` explicitly in the `exports` map. The catch-all
400
- `"./*": "./dist/src/*"` previously intercepted `import 'origam/package.json'`
401
- and re-routed it to a non-existent file inside `dist/`. Standard
402
- consumer pattern (reading the version from the package metadata) was
403
- broken — fixed by adding `"./package.json": "./package.json"` ahead
404
- of the catch-all so it matches first.
405
- - 2.2.0 was tagged but never published to npm. 2.2.1 is the first
406
- version that lands on the registry.
407
-
408
- ---
409
-
410
- ## [2.2.0] — 2026-05-14
411
-
412
- > **The "ready for npm" release.** Package metadata, peer dependencies,
413
- > tree-shaking signals and a real README are all in. Tarball preview
414
- > shrunk from 5.6 MB to **867.9 kB** (2 343 files, zero suspect entry).
415
- > No public API change vs 2.1.0 — every consumer upgrade is a
416
- > drop-in.
417
-
418
- ### Added — stories, slots, emits coverage
419
-
420
- - 525+ missing `Slot` / `Emit` Variants across 113 component stories
421
- (`feat(stories)`). Every documented slot now has a dedicated Variant
422
- with a custom-content example, and every emit a Variant that logs
423
- to a live counter.
424
- - `OrigamSwitchTrack` extracted as a standalone primitive (track-only)
425
- so consumers can build switch-like compounds without rewriting the
426
- thumb logic.
427
- - Tooling: `useStateEffect` now reacts to every per-axis composable
428
- (`useHover` / `useActive` / `useFocus`) in a single call — collapses
429
- the 14 components that historically wired them axis by axis.
430
-
431
- ### Fixed
432
-
433
- - `useStyle` now instrumented across the 124 components that
434
- previously inlined `*Styles` arrays — single source of truth for the
435
- inline-style escape hatch.
436
- - Carousel — `progress` prop renders a real-time progress bar wired to
437
- the cycle timer (was rendering a static "step / total" bar).
438
- - Carousel — `hideDelimiterBackground` finally has a background to
439
- hide (default `__controls` bg = `rgba(0, 0, 0, 0.4)`).
440
- - Histoire sandbox/panel sash now resizes the iframe in **both
441
- directions** (was capped at the 720 px responsive-preset width when
442
- dragging right).
443
- - `useRounded` — utility variants (`xs|sm|md|lg|xl|none|full`) now
444
- emit BOTH the `.origam--rounded-*` class AND an inline
445
- `border-radius` declaration as a specificity escape hatch (Strategy
446
- A documented in `CLAUDE.md`).
447
- - 130 unused-vars cleared from `src/`, 39 ESLint warnings fixed.
448
-
449
- ### Changed — package for npm
450
-
451
- - `peerDependencies` introduced: `vue ^3.5`, `vue-i18n ^11`,
452
- `vue-router ^4.5` (last two `optional` via `peerDependenciesMeta`).
453
- They are no longer auto-installed as `dependencies` — consumers
454
- bring their own versions.
455
- - `sideEffects: ["**/*.css", "**/*.scss", "**/*.vue"]` for downstream
456
- tree-shaking.
457
- - `engines.node: ">=22"` (matches `.nvmrc`).
458
- - `prepublishOnly` script chains `tokens:build` → `server:build` →
459
- unit tests. Every `npm publish` rebuilds from scratch with green
460
- tests.
461
- - `files` whitelist tightened to `dist/src/`, `dist/tokens/`, LICENSE,
462
- README, CHANGELOG. The Histoire bundle (`dist/stories/`, ~13 MB) is
463
- no longer shipped to consumers.
464
- - `build.config.ts` `externals` extended to `['vue', 'vue-i18n',
465
- 'vue-router', '@mdi/font']` so peer deps don't get re-bundled.
466
- - mkdist exclusion patterns expanded: `.spec.ts`, `__tests__/**`,
467
- `.cy.ts`, `.story.vue` are stripped from `dist/`.
468
- - ESLint config ignores `docs/.vitepress/cache/**` and
469
- `figma-plugin/**` (these aren't part of the published library).
470
-
471
- ### Documentation
472
-
473
- - Full `README.md` written from scratch (253 lines) — install,
474
- peer deps, plugin registration, theming (`data-theme` +
475
- `useTheme()` + `<OrigamThemeProvider>`), token tiers, component
476
- families, composable table, CSS-first principle.
477
-
478
- ### Internal
479
-
480
- - ESLint rule `no-restricted-imports` blocks `@origam` /
481
- `@stories` / `@docs` / `@cypress` aliases inside `src/` — once
482
- published, those aliases can't be resolved by consumers.
483
- - 124 components instrumented with `useStyle` following the
484
- canonical pattern.
485
- - `.tsbuildinfo` and other transient artefacts removed from the tree.
486
-
487
- ---
488
-
489
- ## [2.1.0] — 2026-05-07
490
-
491
- > **The classes-first release.** The 13 transversal composables
492
- > (`useColor`, `useBackgroundColor`, `useTextColor`, `useColorEffect`,
493
- > `useElevation`, `useRounded`, `useBorder`, `useMargin`, `usePadding`,
494
- > `useSize`) now emit utility classes (e.g. `.origam--bg-primary`,
495
- > `.origam--shadow-md`) when the consumer passes a tokenised value. The
496
- > existing `*Styles` outputs stay populated only when the value is
497
- > non-tokenisable (legacy hex, custom dimensions) — the inline style
498
- > stack on a typical button drops from ~12 to ~6 declarations.
499
- >
500
- > **Non-breaking.** Every composable keeps its previous return shape;
501
- > the new `*Classes` keys are additive. Components have been migrated
502
- > to read both shapes in parallel (transition strategy A).
503
-
504
- ### Migrating from v2.0 to v2.1
505
-
506
- Nothing is required. The release is additive; existing consumers keep
507
- working unchanged. To start using the new path:
508
-
509
- ```vue
510
- <!-- v2.0 — still works, still emits inline style -->
511
- <OrigamBtn color="primary">Click</OrigamBtn>
512
-
513
- <!-- v2.1 — same code, but the emitted DOM now also carries the
514
- `.origam--bg-primary` utility class instead of inline
515
- `background-color: var(...)`. Inspecting the DOM is much cleaner. -->
516
- ```
517
-
518
- If you write your own components on top of `useColor*` / `useElevation`
519
- / `useRounded` / etc., you can now destructure the new `*Classes`
520
- return:
521
-
522
- ```ts
523
- const { colorClasses, colorStyles } = useColorEffect(props, isHover, isActive, isDisabled)
524
- // colorClasses: ['origam--bg-primary'] when intent
525
- // colorStyles : [] when intent
526
- // colorClasses: [] when '#7c3aed'
527
- // colorStyles : ['background-color: ...']when '#7c3aed'
528
- ```
529
-
530
- Bind both — `:class="[..., colorClasses]"` AND `:style="[..., colorStyles]"`.
531
- The hover/active/disabled state still flows through `colorStyles` (utility
532
- classes are static, by design).
533
-
534
- ### Added
535
-
536
- - **66 utility classes** generated by Style Dictionary, exposed at
537
- `origam/tokens/css/utilities` and forwarded by `origam/styles`:
538
- - `.origam--color-{primary|secondary|success|warning|danger|info|neutral}`
539
- - `.origam--bg-{primary|secondary|success|warning|danger|info|neutral}`
540
- - `.origam--shadow-{none|xs|sm|md|lg|xl}`
541
- - `.origam--rounded-{none|xs|sm|md|lg|xl|full}`
542
- - `.origam--border-{none|thin|thick}`
543
- - `.origam--p-{0..12}`, `.origam--m-{0..12}`, `.origam--gap-{0..12}`
544
- - `.origam--text-{xs|sm|md|lg|xl|2xl}`
545
- - New return keys on transversal composables:
546
- `colorClasses`, `backgroundColorClasses`, `textColorClasses`,
547
- `elevationClasses` (extended), `roundedClasses` (extended),
548
- `borderClasses` (extended), `marginClasses`, `paddingClasses`,
549
- `sizeClasses`.
550
- - `tests/e2e/utilities.spec.ts` — 66 Playwright tests, one per
551
- utility class, asserting both class presence and `getComputedStyle`
552
- resolution against the CSS var pipeline.
553
- - `tests/e2e/prop-audit-phase4.spec.ts` — DOM audit on representative
554
- components confirming the inline-style pile reduction.
555
- - 79 new Vitest unit specs in `src/composables/Commons/__tests__/`
556
- covering the classes-first branch of every refactored composable.
557
-
558
- ### Changed
559
-
560
- - ~54 components migrated to consume `*Classes` in parallel with
561
- `*Styles`. Notable surface-bearing children: Menu/Tooltip/Picker/
562
- Snackbar/Badge — utility class lands on the `__content` / `__pill` /
563
- `__wrapper` BEM child, never on the teleport root.
564
- - `OrigamSelectionControl.__wrapper` now carries
565
- `useTextColor(color)`'s class + style on its root element. This
566
- re-instates the Switch thumb tinting (`currentColor`) for tokenised
567
- intents, which had silently broken when `OrigamSwitchTrack` was
568
- extracted earlier in the cycle.
569
- - `OrigamSwitch` SCSS — the legacy `[style*="color:"]` selector is
570
- joined by a class-driven set
571
- (`.origam-selection-control__wrapper.origam--color-{intent} &__thumb`)
572
- so both the new tokenised path and the legacy hex path tint the thumb
573
- via `currentColor`.
574
-
575
- ### Deprecated
576
-
577
- - `*Styles` returns on the 10 refactored composables — prefer the
578
- matching `*Classes` for tokenised values. Both are kept for one
579
- major cycle; removal scheduled for v3.0.0.
580
-
581
- ### Fixed
582
-
583
- - `OrigamSwitch` thumb stayed white when `color="primary"` (or any
584
- tokenised intent) — regression from the `OrigamSwitchTrack`
585
- extraction. Re-introduced via classes-first.
586
- - `OrigamSnackbar` `__wrapper` no longer duplicates the
587
- `roundedClasses`/`borderClasses` already applied at the root.
588
-
589
- ### Known limits — planned for v2.2 (Phase 1.5)
590
-
591
- - No utility for margin / padding axes (`mx`, `my`, `mt`, `mb`, `ml`,
592
- `mr`, `px`, `py`, `pt`, `pb`, `pl`, `pr`). Components passing
593
- axis-specific values fall back to inline styles for now.
594
- - No `2xl` / `3xl` shadow utilities (the rungs exist as primitives but
595
- are off the manifest).
596
- - Legacy `ROUNDED` enum (`x-small | small | default | medium | large
597
- | x-large | shaped | shaped-invert`) does not bridge to the
598
- `none|xs|sm|md|lg|xl|full` utility taxonomy — components passing a
599
- legacy value get their existing component-scoped BEM modifier and an
600
- inline style fallback.
601
- - `useColorEffect` does NOT emit a `*Classes` value when `isHover` /
602
- `isActive` / `isDisabled` is true (states are inline-only by design).
603
- Components that bind `useActive(props, 'modelValue')` (Alert, Badge,
604
- BottomNav) therefore never carry a utility class while visible — the
605
- inline style still paints them correctly. This is intentional; do not
606
- rely on the utility class for state-dependent styling.
607
-
608
- ---
609
-
610
- ## [2.0.0] — 2026-04-26
611
-
612
- > **The design tokens release.** Every component now resolves its colors,
613
- > spacing, typography, and motion through a centralised, theme-aware
614
- > token pipeline (Style Dictionary v4 + Tokens Studio for Figma). 50+
615
- > components migrated; 18 of them also picked up real bug fixes from the
616
- > companion `optimus-design-system` codebase. Multi-theme (light / dark)
617
- > works out of the box; `brand-X` themes are an additive layer.
618
-
619
- ### Migrating from v0.x to v2.0.0
620
-
621
- This is a major bump because three things change:
622
-
623
- 1. **The CSS variables that components read are now generated.** The old
624
- `<style>:root{}` blocks that each component shipped have been removed.
625
- Consumers MUST load the generated token CSS — either:
626
-
627
- ```ts
628
- import 'origam/styles' // primitive + light + dark + helpers
629
- ```
630
- or pick the layers separately:
631
- ```ts
632
- import 'origam/tokens/css/primitive'
633
- import 'origam/tokens/css/light'
634
- import 'origam/tokens/css/dark' // applied via [data-theme="dark"]
635
- ```
636
-
637
- If you were overriding origam vars at the document root (e.g.
638
- `:root { --origam-btn---background-color: red }`), that still works —
639
- the generated CSS is just a default. But if you depended on the
640
- per-component `:root{}` block being injected when the component
641
- mounted, that's gone. The vars are now set once globally.
642
-
643
- 2. **`useColorEffect` is intent-aware.** The `color` / `bgColor` props on
644
- `<OrigamBtn>`, `<OrigamChip>`, `<OrigamAvatar>`, etc. now expect a
645
- semantic intent (`'primary'`, `'success'`, `'danger'`, …) rather than
646
- a raw hex. Raw hex still works but emits a one-shot `console.warn`
647
- per `(prop, value)` pair (full removal in v3.0.0).
648
-
649
- ```vue
650
- <!-- v0.x -->
651
- <OrigamBtn color="#7c3aed">Click</OrigamBtn>
652
-
653
- <!-- v2.0 -->
654
- <OrigamBtn color="primary">Click</OrigamBtn>
655
-
656
- <!-- One-off custom color -->
657
- <OrigamBtn :style="{ '--origam-btn---background-color': '#7c3aed' }">…</OrigamBtn>
658
- ```
659
-
660
- 3. **`useElevation` no longer computes shadows in JS.** The `bgColor`
661
- parameter is accepted for signature compat but ignored. The composable
662
- now emits `box-shadow: var(--origam-shadow-{rung})` and the rung is
663
- themed at the token level (different shadow recipes for light vs dark).
664
-
665
- The legacy `formatElevationStyle(level, bgColor)` utility is still
666
- exported but `@deprecated` — it will be removed in v3.0.0.
667
-
668
- ### Added
669
-
670
- - **Multi-tier design tokens** (`tokens/`):
671
- - Primitive: 12 color ramps, 12 spacing steps, full font / radius /
672
- shadow / motion / zIndex / opacity / border ladders.
673
- - Semantic: `surface`, `text`, `border`, `action.{primary,secondary,
674
- ghost}`, `feedback.{success,warning,danger,info}`, `overlay`. Per
675
- theme (light + dark), with hooks for brand-X.
676
- - Component: ~60 files, one per component, in DTCG / Tokens Studio
677
- format — editable from the Figma plugin.
678
- - **Pipeline**: Style Dictionary v4 + sd-transforms. Outputs CSS,
679
- SCSS partials, and TypeScript union types. `npm run tokens:build`,
680
- `tokens:watch`, `tokens:lint`.
681
- - **GitHub Action** (`.github/workflows/tokens-sync.yml`): consumes
682
- Figma → Tokens Studio → `tokens-sync` branch, rebuilds artifacts,
683
- opens a PR to `develop` automatically.
684
- - **Multi-theme runtime**:
685
- - `useTheme()` composable — singleton ref, persistence, prefers-
686
- color-scheme fallback, toggle helper.
687
- - `<OrigamThemeProvider theme="dark">` for sub-tree overrides.
688
- - **CSS-first / JS-fallback principle**:
689
- - `useCssSupport()` composable — feature detection layer wrapping
690
- `CSS.supports()` with caching for 20 modern features (subgrid,
691
- container queries, `:has()`, aspect-ratio, color-mix, anchor
692
- positioning, view transitions, …). Components now branch via
693
- this composable instead of calling `CSS.supports()` directly.
694
- - **Defaults system** (ported from optimus):
695
- - `useDefaults()` composable + `<OrigamDefaultsProvider>` for
696
- cascading default props (mirrors Vuetify's `<v-defaults-provider>`).
697
- - `IDefault`, `IDefaultProviderProps`, `IDefaultProviderSlots`.
698
- - **`<OrigamConfirmWrapper>`** — type-it-twice form helper with
699
- auto-injected validation, two render modes (slot-based / `field=`
700
- shortcut), and bidirectional defaults forwarding.
701
- - **`SCSS helpers`** (`src/assets/scss/_helpers.scss`): `ds-intent`,
702
- `ds-elevation`, `ds-text-style`, `ds-space`, `ds-focus-ring`,
703
- `ds-visually-hidden`.
704
- - **VARIANT / VARIANT_INPUT enums** + `TVariant` / `TVariantInput`
705
- types.
706
- - Common emit / slot interfaces: `IFieldEmits`, `IFieldSlots`,
707
- `IFieldDefaultSlotProps`, `IInputEmits`, `IInputSlots`,
708
- `IAdjacentEmits`, `IAdjacentSlots`, `IAdjacentInnerEmits`,
709
- `IAdjacentInnerSlots`, `IActiveEmits`, `IFocusEmits`,
710
- `ICommonsComponentEmits`, `ICommonsComponentSlots`.
711
-
712
- ### Changed
713
-
714
- - **Every component** with chrome (~50) now consumes design tokens
715
- rather than hardcoded values. The per-component `<style>:root{}`
716
- blocks are gone.
717
- - **`OrigamPasswordField`** rebuilt from the optimus version (629
718
- vs 399 lines). New features: strength-requirements popup
719
- (`requirements` + `need*` flags + `minLength`), auto-injected
720
- validation rules, show/hide toggle, intersect-driven autofocus,
721
- click:control / mousedown:control emits.
722
- - **`OrigamFileField`** split into 3 files (FileField + DragNDropItem
723
- + ListItem) for clearer responsibility boundaries; drag-and-drop
724
- mode reworked, `maxFileSize` validation added, typed emits.
725
- - **`OrigamForm`** grew form-level validation, `scrollToError`,
726
- global `messages` rendering through OrigamMessages.
727
- - **`OrigamField`** now exposes the `outline__notch` BEM child for
728
- the floating-label rendering, slot-based prefix/suffix detection,
729
- and proper focus↔active synchronisation.
730
- - **Snackbar z-index** normalised from `10000` to `1060` via
731
- `{zIndex.toast}`. Consumers stacking custom overlays on top must
732
- verify their stacking context.
733
- - **`color.action.primary.bgSubtle / fgSubtle`** added to the
734
- semantic layer (was missing — Select selected-item background and
735
- Slider thumb focus ring needed it).
736
-
737
- ### Fixed
738
-
739
- - **OrigamMessages**: `:id` was bound to the entire messages array
740
- instead of the current message. Fixed by using a kebab-cased
741
- per-message key.
742
- - **OrigamNumberField**: `watchEffect` → `watch(props.modelValue)` —
743
- the eager mode was causing reactive write loops while the user
744
- typed. Increment / decrement handlers split.
745
- - **OrigamOtpInputField**: undefined-current crash guard;
746
- `isValidNumber` → `isInvalidValue` (semantic was inverted);
747
- double `update:focused` emit prevented; handleClear added.
748
- - **OrigamFileField**: `@clik:append` and `@lick:append-inner` typo
749
- fixes; drag&drop append mode no longer overwrites existing files;
750
- locale arg shape `t(key, [arg])` corrected.
751
- - **OrigamMenu**: stray `console.log()` removed.
752
- - **OrigamOverlayScrim**: `<style scoped>` block was missing
753
- entirely — scrim wasn't rendering.
754
- - **OrigamProgressCircular**: `backgroundColorClasses` /
755
- `loaderColorClasses` were missing on the SVG `<circle>` elements.
756
- - **OrigamProgressLinear**: `useBackgroundColor` → `useTextColor`
757
- (the bar's color was being applied as background, washing it out).
758
- - **OrigamListSubheader**: vuetify-specific
759
- `rgba(var(--v-theme-on-surface), …)` references replaced with
760
- origam-native tokens. Style block converted from `lang="css"` to
761
- `lang="scss"`.
762
- - **OrigamExpansionPanel**: vuetify shadow var leak
763
- (`var(--v-shadow-key-umbra-opacity, …)`) removed; selector
764
- `:not(.v-expansion-panel-title--static)` matched a vuetify class
765
- that never renders in origam — corrected to the origam class.
766
- - **OrigamSlideGroup**: `<style scoped>` block was missing entirely.
767
- - **OrigamCheckbox / OrigamCheckboxBtn / OrigamSelectionControl**:
768
- `handleClickLabel` argument typed `MouseEvent` (was `Event` —
769
- caused TS strict failures).
770
- - **OrigamSelectionControlGroup**: `item` slot now exposes
771
- `{ item, index }` (was `{ item }` only).
772
-
773
- ### Deprecated
774
-
775
- - `formatElevationStyle(level, bgColor)` — replaced by the
776
- `--origam-shadow-{rung}` token ladder. Kept exported for one
777
- major version; full removal in v3.0.0.
778
- - Raw hex / rgb passed to `useColorEffect` color props — pass a
779
- `TIntent` value or use `:style` for one-off custom colors. Removal
780
- in v3.0.0.
781
-
782
- ### Outstanding (deferred to v2.x or v3.0.0)
783
-
784
- - Several form components still carry hardcoded hex inside their
785
- scoped styles (Switch 11, Select 8, DatePickerField 5,
786
- ColorPickerField 2, Img 2, Highlight 3). The token JSONs are in
787
- place; the `var(--origam-…)` references need to be wired in a
788
- follow-up. Fallback-only behaviour ensures consumers see the
789
- intended design today.
790
- - Outstanding token-naming gaps: `color.surface.chrome` (SystemBar),
791
- `color.overlay.backdrop` (Drawer / Overlay scrim), `color.surface
792
- .inverse` (Tooltip), `opacity.20` / `opacity.30`, `radius.xs2: 6px`,
793
- `font.size.6xl: 45px`, `font.letterSpacing.widish`. Promote at
794
- next ui-designer review.
795
- - `OrigamMain` uses `--origam-main--{prop}` (double-tiret) instead
796
- of the canonical `---` convention. Cosmetic, breaks consumer
797
- overrides. To be aligned at v3.
798
-
799
- ---
800
-
801
- ## Pre-2.0 history
802
-
803
- The `[WIP]` commits before this release were the foundation work
804
- (audit, Figma integration spike, package layout). The design-token
805
- migration started at commit `2124ab8` (Lot 0) and shipped over
806
- ten incremental commits visible in `git log --oneline main..HEAD`.
807
-