@tribepad/themis 1.0.17 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (233) hide show
  1. package/dist/elements/Accordion/Accordion.d.ts +3 -1
  2. package/dist/elements/Accordion/Accordion.d.ts.map +1 -1
  3. package/dist/elements/Accordion/index.js +1 -1
  4. package/dist/elements/Accordion/index.js.map +1 -1
  5. package/dist/elements/Accordion/index.mjs +1 -1
  6. package/dist/elements/Accordion/index.mjs.map +1 -1
  7. package/dist/elements/AlertDialog/index.js +1 -1
  8. package/dist/elements/AlertDialog/index.js.map +1 -1
  9. package/dist/elements/AlertDialog/index.mjs +1 -1
  10. package/dist/elements/AlertDialog/index.mjs.map +1 -1
  11. package/dist/elements/Breadcrumbs/index.js +1 -1
  12. package/dist/elements/Breadcrumbs/index.js.map +1 -1
  13. package/dist/elements/Breadcrumbs/index.mjs +1 -1
  14. package/dist/elements/Breadcrumbs/index.mjs.map +1 -1
  15. package/dist/elements/Button/Button.d.ts.map +1 -1
  16. package/dist/elements/Button/index.js +1 -1
  17. package/dist/elements/Button/index.js.map +1 -1
  18. package/dist/elements/Button/index.mjs +1 -1
  19. package/dist/elements/Button/index.mjs.map +1 -1
  20. package/dist/elements/Card/Card.d.ts +21 -1
  21. package/dist/elements/Card/Card.d.ts.map +1 -1
  22. package/dist/elements/Card/Card.types.d.ts +36 -0
  23. package/dist/elements/Card/Card.types.d.ts.map +1 -1
  24. package/dist/elements/Card/index.d.ts +10 -3
  25. package/dist/elements/Card/index.d.ts.map +1 -1
  26. package/dist/elements/Card/index.js +1 -1
  27. package/dist/elements/Card/index.js.map +1 -1
  28. package/dist/elements/Card/index.mjs +1 -1
  29. package/dist/elements/Card/index.mjs.map +1 -1
  30. package/dist/elements/Carousel/Carousel.d.ts.map +1 -1
  31. package/dist/elements/Carousel/index.js +1 -1
  32. package/dist/elements/Carousel/index.js.map +1 -1
  33. package/dist/elements/Carousel/index.mjs +1 -1
  34. package/dist/elements/Carousel/index.mjs.map +1 -1
  35. package/dist/elements/Chart/Chart.d.ts.map +1 -1
  36. package/dist/elements/Chart/Chart.types.d.ts +21 -4
  37. package/dist/elements/Chart/Chart.types.d.ts.map +1 -1
  38. package/dist/elements/Chart/ChartAreaSeries.d.ts +32 -0
  39. package/dist/elements/Chart/ChartAreaSeries.d.ts.map +1 -0
  40. package/dist/elements/Chart/ChartContext.d.ts +4 -1
  41. package/dist/elements/Chart/ChartContext.d.ts.map +1 -1
  42. package/dist/elements/Chart/ChartLegend.d.ts +2 -2
  43. package/dist/elements/Chart/ChartLegend.d.ts.map +1 -1
  44. package/dist/elements/Chart/ChartPieSeries.d.ts +28 -0
  45. package/dist/elements/Chart/ChartPieSeries.d.ts.map +1 -0
  46. package/dist/elements/Chart/ChartRadarSeries.d.ts +28 -0
  47. package/dist/elements/Chart/ChartRadarSeries.d.ts.map +1 -0
  48. package/dist/elements/Chart/ChartSVG.d.ts +7 -1
  49. package/dist/elements/Chart/ChartSVG.d.ts.map +1 -1
  50. package/dist/elements/Chart/ChartScatterSeries.d.ts +31 -0
  51. package/dist/elements/Chart/ChartScatterSeries.d.ts.map +1 -0
  52. package/dist/elements/Chart/index.js +1 -1
  53. package/dist/elements/Chart/index.js.map +1 -1
  54. package/dist/elements/Chart/index.mjs +1 -1
  55. package/dist/elements/Chart/index.mjs.map +1 -1
  56. package/dist/elements/Checkbox/index.js +1 -1
  57. package/dist/elements/Checkbox/index.js.map +1 -1
  58. package/dist/elements/Checkbox/index.mjs +1 -1
  59. package/dist/elements/Checkbox/index.mjs.map +1 -1
  60. package/dist/elements/ColorPicker/ColorPicker.d.ts.map +1 -1
  61. package/dist/elements/ColorPicker/ColorPicker.styles.d.ts +3 -1
  62. package/dist/elements/ColorPicker/ColorPicker.styles.d.ts.map +1 -1
  63. package/dist/elements/ColorPicker/index.js +1 -1
  64. package/dist/elements/ColorPicker/index.js.map +1 -1
  65. package/dist/elements/ColorPicker/index.mjs +1 -1
  66. package/dist/elements/ColorPicker/index.mjs.map +1 -1
  67. package/dist/elements/Combobox/Combobox.d.ts +1 -1
  68. package/dist/elements/Combobox/Combobox.d.ts.map +1 -1
  69. package/dist/elements/Combobox/Combobox.styles.d.ts.map +1 -1
  70. package/dist/elements/Combobox/index.js +1 -1
  71. package/dist/elements/Combobox/index.js.map +1 -1
  72. package/dist/elements/Combobox/index.mjs +1 -1
  73. package/dist/elements/Combobox/index.mjs.map +1 -1
  74. package/dist/elements/DatePicker/DatePicker.d.ts.map +1 -1
  75. package/dist/elements/DatePicker/index.js +1 -1
  76. package/dist/elements/DatePicker/index.js.map +1 -1
  77. package/dist/elements/DatePicker/index.mjs +1 -1
  78. package/dist/elements/DatePicker/index.mjs.map +1 -1
  79. package/dist/elements/Dropdown/Dropdown.d.ts.map +1 -1
  80. package/dist/elements/Dropdown/index.js +1 -1
  81. package/dist/elements/Dropdown/index.js.map +1 -1
  82. package/dist/elements/Dropdown/index.mjs +1 -1
  83. package/dist/elements/Dropdown/index.mjs.map +1 -1
  84. package/dist/elements/FileField/index.js +1 -1
  85. package/dist/elements/FileField/index.js.map +1 -1
  86. package/dist/elements/FileField/index.mjs +1 -1
  87. package/dist/elements/FileField/index.mjs.map +1 -1
  88. package/dist/elements/Modal/Modal.d.ts +2 -1
  89. package/dist/elements/Modal/Modal.d.ts.map +1 -1
  90. package/dist/elements/Modal/index.js +1 -1
  91. package/dist/elements/Modal/index.js.map +1 -1
  92. package/dist/elements/Modal/index.mjs +1 -1
  93. package/dist/elements/Modal/index.mjs.map +1 -1
  94. package/dist/elements/NumberField/NumberField.d.ts.map +1 -1
  95. package/dist/elements/NumberField/NumberField.types.d.ts +1 -1
  96. package/dist/elements/NumberField/NumberField.variants.d.ts.map +1 -1
  97. package/dist/elements/NumberField/index.js +1 -1
  98. package/dist/elements/NumberField/index.js.map +1 -1
  99. package/dist/elements/NumberField/index.mjs +1 -1
  100. package/dist/elements/NumberField/index.mjs.map +1 -1
  101. package/dist/elements/OTPInput/index.js +1 -1
  102. package/dist/elements/OTPInput/index.js.map +1 -1
  103. package/dist/elements/OTPInput/index.mjs +1 -1
  104. package/dist/elements/OTPInput/index.mjs.map +1 -1
  105. package/dist/elements/Pagination/index.js +1 -1
  106. package/dist/elements/Pagination/index.js.map +1 -1
  107. package/dist/elements/Pagination/index.mjs +1 -1
  108. package/dist/elements/Pagination/index.mjs.map +1 -1
  109. package/dist/elements/Panel/index.js +1 -1
  110. package/dist/elements/Panel/index.js.map +1 -1
  111. package/dist/elements/Panel/index.mjs +1 -1
  112. package/dist/elements/Panel/index.mjs.map +1 -1
  113. package/dist/elements/PasswordField/index.js +1 -1
  114. package/dist/elements/PasswordField/index.js.map +1 -1
  115. package/dist/elements/PasswordField/index.mjs +1 -1
  116. package/dist/elements/PasswordField/index.mjs.map +1 -1
  117. package/dist/elements/Progress/index.js +1 -1
  118. package/dist/elements/Progress/index.js.map +1 -1
  119. package/dist/elements/Progress/index.mjs +1 -1
  120. package/dist/elements/Progress/index.mjs.map +1 -1
  121. package/dist/elements/RatingScale/index.js +1 -1
  122. package/dist/elements/RatingScale/index.js.map +1 -1
  123. package/dist/elements/RatingScale/index.mjs +1 -1
  124. package/dist/elements/RatingScale/index.mjs.map +1 -1
  125. package/dist/elements/Resizable/index.js +1 -1
  126. package/dist/elements/Resizable/index.js.map +1 -1
  127. package/dist/elements/Resizable/index.mjs +1 -1
  128. package/dist/elements/Resizable/index.mjs.map +1 -1
  129. package/dist/elements/SearchField/index.js +1 -1
  130. package/dist/elements/SearchField/index.js.map +1 -1
  131. package/dist/elements/SearchField/index.mjs +1 -1
  132. package/dist/elements/SearchField/index.mjs.map +1 -1
  133. package/dist/elements/Select/Select.d.ts.map +1 -1
  134. package/dist/elements/Select/Select.styles.d.ts.map +1 -1
  135. package/dist/elements/Select/index.js +1 -1
  136. package/dist/elements/Select/index.js.map +1 -1
  137. package/dist/elements/Select/index.mjs +1 -1
  138. package/dist/elements/Select/index.mjs.map +1 -1
  139. package/dist/elements/Sidebar/Sidebar.styles.d.ts +41 -0
  140. package/dist/elements/Sidebar/Sidebar.styles.d.ts.map +1 -0
  141. package/dist/elements/Sidebar/Sidebar.types.d.ts +224 -0
  142. package/dist/elements/Sidebar/Sidebar.types.d.ts.map +1 -0
  143. package/dist/elements/Sidebar/SidebarCompound.d.ts +39 -0
  144. package/dist/elements/Sidebar/SidebarCompound.d.ts.map +1 -0
  145. package/dist/elements/Sidebar/SidebarMobileDrawer.d.ts +7 -0
  146. package/dist/elements/Sidebar/SidebarMobileDrawer.d.ts.map +1 -0
  147. package/dist/elements/Sidebar/SidebarPanel.d.ts +21 -0
  148. package/dist/elements/Sidebar/SidebarPanel.d.ts.map +1 -0
  149. package/dist/elements/Sidebar/SidebarPopover.d.ts +13 -0
  150. package/dist/elements/Sidebar/SidebarPopover.d.ts.map +1 -0
  151. package/dist/elements/Sidebar/SidebarRail.d.ts +10 -0
  152. package/dist/elements/Sidebar/SidebarRail.d.ts.map +1 -0
  153. package/dist/elements/Sidebar/SidebarRoot.d.ts +24 -0
  154. package/dist/elements/Sidebar/SidebarRoot.d.ts.map +1 -0
  155. package/dist/elements/Sidebar/index.d.ts +5 -0
  156. package/dist/elements/Sidebar/index.d.ts.map +1 -0
  157. package/dist/elements/Sidebar/index.js +3 -0
  158. package/dist/elements/Sidebar/index.js.map +1 -0
  159. package/dist/elements/Sidebar/index.mjs +3 -0
  160. package/dist/elements/Sidebar/index.mjs.map +1 -0
  161. package/dist/elements/SituationalJudgement/index.js +1 -1
  162. package/dist/elements/SituationalJudgement/index.js.map +1 -1
  163. package/dist/elements/SituationalJudgement/index.mjs +1 -1
  164. package/dist/elements/SituationalJudgement/index.mjs.map +1 -1
  165. package/dist/elements/Table/index.js +1 -1
  166. package/dist/elements/Table/index.js.map +1 -1
  167. package/dist/elements/Table/index.mjs +1 -1
  168. package/dist/elements/Table/index.mjs.map +1 -1
  169. package/dist/elements/Tabs/index.js +1 -1
  170. package/dist/elements/Tabs/index.js.map +1 -1
  171. package/dist/elements/Tabs/index.mjs +1 -1
  172. package/dist/elements/Tabs/index.mjs.map +1 -1
  173. package/dist/elements/TextField/TextField.d.ts.map +1 -1
  174. package/dist/elements/TextField/TextField.styles.d.ts.map +1 -1
  175. package/dist/elements/TextField/index.js +1 -1
  176. package/dist/elements/TextField/index.js.map +1 -1
  177. package/dist/elements/TextField/index.mjs +1 -1
  178. package/dist/elements/TextField/index.mjs.map +1 -1
  179. package/dist/elements/TimeField/TimeField.d.ts.map +1 -1
  180. package/dist/elements/TimeField/TimeField.types.d.ts.map +1 -1
  181. package/dist/elements/TimeField/index.js +1 -1
  182. package/dist/elements/TimeField/index.js.map +1 -1
  183. package/dist/elements/TimeField/index.mjs +1 -1
  184. package/dist/elements/TimeField/index.mjs.map +1 -1
  185. package/dist/elements/Toast/Toast.d.ts +21 -43
  186. package/dist/elements/Toast/Toast.d.ts.map +1 -1
  187. package/dist/elements/Toast/Toast.types.d.ts +27 -1
  188. package/dist/elements/Toast/Toast.types.d.ts.map +1 -1
  189. package/dist/elements/Toast/Toaster.d.ts +0 -12
  190. package/dist/elements/Toast/Toaster.d.ts.map +1 -1
  191. package/dist/elements/Toast/index.d.ts +1 -1
  192. package/dist/elements/Toast/index.d.ts.map +1 -1
  193. package/dist/elements/Toast/index.js +1 -1
  194. package/dist/elements/Toast/index.js.map +1 -1
  195. package/dist/elements/Toast/index.mjs +1 -1
  196. package/dist/elements/Toast/index.mjs.map +1 -1
  197. package/dist/elements/Tooltip/index.js +1 -1
  198. package/dist/elements/Tooltip/index.js.map +1 -1
  199. package/dist/elements/Tooltip/index.mjs +1 -1
  200. package/dist/elements/Tooltip/index.mjs.map +1 -1
  201. package/dist/elements/index.d.ts +5 -1
  202. package/dist/elements/index.d.ts.map +1 -1
  203. package/dist/elements/index.js +1 -1
  204. package/dist/elements/index.js.map +1 -1
  205. package/dist/elements/index.mjs +1 -1
  206. package/dist/elements/index.mjs.map +1 -1
  207. package/dist/hooks/index.d.ts +1 -0
  208. package/dist/hooks/index.d.ts.map +1 -1
  209. package/dist/hooks/index.js +1 -1
  210. package/dist/hooks/index.js.map +1 -1
  211. package/dist/hooks/index.mjs +1 -1
  212. package/dist/hooks/index.mjs.map +1 -1
  213. package/dist/hooks/useMediaQuery.d.ts +12 -0
  214. package/dist/hooks/useMediaQuery.d.ts.map +1 -0
  215. package/dist/index.js +2 -2
  216. package/dist/index.js.map +1 -1
  217. package/dist/index.mjs +2 -2
  218. package/dist/index.mjs.map +1 -1
  219. package/dist/styles/animations.css +110 -0
  220. package/dist/styles/defaults.css +32 -0
  221. package/dist/styles/index.d.ts +1 -1
  222. package/dist/styles/index.d.ts.map +1 -1
  223. package/dist/styles/index.js +1 -1
  224. package/dist/styles/index.js.map +1 -1
  225. package/dist/styles/index.mjs +1 -1
  226. package/dist/styles/index.mjs.map +1 -1
  227. package/dist/styles/shared-variants.d.ts +21 -2
  228. package/dist/styles/shared-variants.d.ts.map +1 -1
  229. package/package.json +40 -34
  230. package/src/elements/Chart/Chart.stories.tsx +186 -2
  231. package/src/elements/Modal/Modal.stories.tsx +6 -9
  232. package/src/elements/Sidebar/Sidebar.stories.tsx +514 -0
  233. package/src/elements/Toast/Toast.stories.tsx +745 -648
@@ -1,2 +1,3 @@
1
+ export { useMediaQuery } from './useMediaQuery';
1
2
  export { useReducedMotion } from './useReducedMotion';
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -1,2 +1,2 @@
1
- 'use strict';var react=require('react');var o="(prefers-reduced-motion: reduce)";function s(){return typeof window>"u"?false:window.matchMedia(o).matches}function u(){let[r,t]=react.useState(s);return react.useEffect(()=>{let e=window.matchMedia(o);t(e.matches);let n=d=>{t(d.matches);};return e.addEventListener("change",n),()=>e.removeEventListener("change",n)},[]),r}exports.useReducedMotion=u;//# sourceMappingURL=index.js.map
1
+ 'use strict';var react=require('react');function d(e){let n=react.useCallback(r=>{let i=window.matchMedia(e);return i.addEventListener("change",r),()=>i.removeEventListener("change",r)},[e]),t=react.useCallback(()=>window.matchMedia(e).matches,[e]),o=react.useCallback(()=>false,[]);return react.useSyncExternalStore(n,t,o)}var a="(prefers-reduced-motion: reduce)";function f(){return typeof window>"u"?false:window.matchMedia(a).matches}function h(){let[e,n]=react.useState(f);return react.useEffect(()=>{let t=window.matchMedia(a);n(t.matches);let o=r=>{n(r.matches);};return t.addEventListener("change",o),()=>t.removeEventListener("change",o)},[]),e}exports.useMediaQuery=d;exports.useReducedMotion=h;//# sourceMappingURL=index.js.map
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/hooks/useReducedMotion.ts"],"names":["QUERY","getInitialState","useReducedMotion","prefersReducedMotion","setPrefersReducedMotion","useState","useEffect","mql","handler","event"],"mappings":"wCAIA,IAAMA,CAAAA,CAAQ,kCAAA,CAEd,SAASC,GAA2B,CAClC,OAAI,OAAO,MAAA,CAAW,IAAoB,KAAA,CACnC,MAAA,CAAO,UAAA,CAAWD,CAAK,CAAA,CAAE,OAClC,CASO,SAASE,GAA4B,CAC1C,GAAM,CAACC,CAAAA,CAAsBC,CAAuB,CAAA,CAAIC,cAAAA,CAASJ,CAAe,CAAA,CAEhF,OAAAK,eAAAA,CAAU,IAAM,CACd,IAAMC,CAAAA,CAAM,MAAA,CAAO,UAAA,CAAWP,CAAK,EACnCI,CAAAA,CAAwBG,CAAAA,CAAI,OAAO,CAAA,CAEnC,IAAMC,CAAAA,CAAWC,CAAAA,EAAqC,CACpDL,CAAAA,CAAwBK,EAAM,OAAO,EACvC,CAAA,CAEA,OAAAF,CAAAA,CAAI,gBAAA,CAAiB,QAAA,CAAUC,CAAO,EAC/B,IAAMD,CAAAA,CAAI,mBAAA,CAAoB,QAAA,CAAUC,CAAO,CACxD,CAAA,CAAG,EAAE,EAEEL,CACT","file":"index.js","sourcesContent":["'use client';\n\nimport { useState, useEffect } from 'react';\n\nconst QUERY = '(prefers-reduced-motion: reduce)';\n\nfunction getInitialState(): boolean {\n if (typeof window === 'undefined') return false;\n return window.matchMedia(QUERY).matches;\n}\n\n/**\n * Detects whether the user prefers reduced motion.\n *\n * - SSR-safe (returns `false` on the server)\n * - Reacts to changes in the OS preference\n * - Cleans up the listener on unmount\n */\nexport function useReducedMotion(): boolean {\n const [prefersReducedMotion, setPrefersReducedMotion] = useState(getInitialState);\n\n useEffect(() => {\n const mql = window.matchMedia(QUERY);\n setPrefersReducedMotion(mql.matches);\n\n const handler = (event: MediaQueryListEvent): void => {\n setPrefersReducedMotion(event.matches);\n };\n\n mql.addEventListener('change', handler);\n return () => mql.removeEventListener('change', handler);\n }, []);\n\n return prefersReducedMotion;\n}\n"]}
1
+ {"version":3,"sources":["../../src/hooks/useMediaQuery.ts","../../src/hooks/useReducedMotion.ts"],"names":["useMediaQuery","query","subscribe","useCallback","callback","mql","getSnapshot","getServerSnapshot","useSyncExternalStore","QUERY","getInitialState","useReducedMotion","prefersReducedMotion","setPrefersReducedMotion","useState","useEffect","handler","event"],"mappings":"wCAcO,SAASA,CAAAA,CAAcC,CAAAA,CAAwB,CACpD,IAAMC,CAAAA,CAAYC,iBAAAA,CACfC,GAAyB,CACxB,IAAMC,CAAAA,CAAM,MAAA,CAAO,UAAA,CAAWJ,CAAK,CAAA,CACnC,OAAAI,EAAI,gBAAA,CAAiB,QAAA,CAAUD,CAAQ,CAAA,CAChC,IAAMC,CAAAA,CAAI,mBAAA,CAAoB,QAAA,CAAUD,CAAQ,CACzD,CAAA,CACA,CAACH,CAAK,CACR,CAAA,CAEMK,CAAAA,CAAcH,iBAAAA,CAClB,IAAM,MAAA,CAAO,UAAA,CAAWF,CAAK,CAAA,CAAE,OAAA,CAC/B,CAACA,CAAK,CACR,CAAA,CAEMM,CAAAA,CAAoBJ,iBAAAA,CAAY,IAAM,KAAA,CAAO,EAAE,CAAA,CAErD,OAAOK,0BAAAA,CAAqBN,CAAAA,CAAWI,CAAAA,CAAaC,CAAiB,CACvE,CC5BA,IAAME,CAAAA,CAAQ,kCAAA,CAEd,SAASC,CAAAA,EAA2B,CAClC,OAAI,OAAO,MAAA,CAAW,GAAA,CAAoB,KAAA,CACnC,MAAA,CAAO,UAAA,CAAWD,CAAK,CAAA,CAAE,OAClC,CASO,SAASE,CAAAA,EAA4B,CAC1C,GAAM,CAACC,EAAsBC,CAAuB,CAAA,CAAIC,cAAAA,CAASJ,CAAe,CAAA,CAEhF,OAAAK,eAAAA,CAAU,IAAM,CACd,IAAMV,CAAAA,CAAM,MAAA,CAAO,UAAA,CAAWI,CAAK,CAAA,CACnCI,CAAAA,CAAwBR,CAAAA,CAAI,OAAO,CAAA,CAEnC,IAAMW,CAAAA,CAAWC,CAAAA,EAAqC,CACpDJ,CAAAA,CAAwBI,CAAAA,CAAM,OAAO,EACvC,CAAA,CAEA,OAAAZ,CAAAA,CAAI,gBAAA,CAAiB,QAAA,CAAUW,CAAO,CAAA,CAC/B,IAAMX,CAAAA,CAAI,mBAAA,CAAoB,QAAA,CAAUW,CAAO,CACxD,CAAA,CAAG,EAAE,EAEEJ,CACT","file":"index.js","sourcesContent":["'use client';\n\nimport { useCallback, useSyncExternalStore } from 'react';\n\n/**\n * SSR-safe media query hook using useSyncExternalStore.\n *\n * - No hydration mismatch flicker (getServerSnapshot returns false)\n * - Listener registered once per query value (no dependency bugs)\n * - Reacts to changes in real time\n *\n * @param query - CSS media query string, e.g. '(max-width: 767px)'\n * @returns Whether the media query currently matches\n */\nexport function useMediaQuery(query: string): boolean {\n const subscribe = useCallback(\n (callback: () => void) => {\n const mql = window.matchMedia(query);\n mql.addEventListener('change', callback);\n return () => mql.removeEventListener('change', callback);\n },\n [query],\n );\n\n const getSnapshot = useCallback(\n () => window.matchMedia(query).matches,\n [query],\n );\n\n const getServerSnapshot = useCallback(() => false, []);\n\n return useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n}\n","'use client';\n\nimport { useState, useEffect } from 'react';\n\nconst QUERY = '(prefers-reduced-motion: reduce)';\n\nfunction getInitialState(): boolean {\n if (typeof window === 'undefined') return false;\n return window.matchMedia(QUERY).matches;\n}\n\n/**\n * Detects whether the user prefers reduced motion.\n *\n * - SSR-safe (returns `false` on the server)\n * - Reacts to changes in the OS preference\n * - Cleans up the listener on unmount\n */\nexport function useReducedMotion(): boolean {\n const [prefersReducedMotion, setPrefersReducedMotion] = useState(getInitialState);\n\n useEffect(() => {\n const mql = window.matchMedia(QUERY);\n setPrefersReducedMotion(mql.matches);\n\n const handler = (event: MediaQueryListEvent): void => {\n setPrefersReducedMotion(event.matches);\n };\n\n mql.addEventListener('change', handler);\n return () => mql.removeEventListener('change', handler);\n }, []);\n\n return prefersReducedMotion;\n}\n"]}
@@ -1,2 +1,2 @@
1
- import {useState,useEffect}from'react';var o="(prefers-reduced-motion: reduce)";function s(){return typeof window>"u"?false:window.matchMedia(o).matches}function u(){let[r,t]=useState(s);return useEffect(()=>{let e=window.matchMedia(o);t(e.matches);let n=d=>{t(d.matches);};return e.addEventListener("change",n),()=>e.removeEventListener("change",n)},[]),r}export{u as useReducedMotion};//# sourceMappingURL=index.mjs.map
1
+ import {useCallback,useSyncExternalStore,useState,useEffect}from'react';function d(e){let n=useCallback(r=>{let i=window.matchMedia(e);return i.addEventListener("change",r),()=>i.removeEventListener("change",r)},[e]),t=useCallback(()=>window.matchMedia(e).matches,[e]),o=useCallback(()=>false,[]);return useSyncExternalStore(n,t,o)}var a="(prefers-reduced-motion: reduce)";function f(){return typeof window>"u"?false:window.matchMedia(a).matches}function h(){let[e,n]=useState(f);return useEffect(()=>{let t=window.matchMedia(a);n(t.matches);let o=r=>{n(r.matches);};return t.addEventListener("change",o),()=>t.removeEventListener("change",o)},[]),e}export{d as useMediaQuery,h as useReducedMotion};//# sourceMappingURL=index.mjs.map
2
2
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/hooks/useReducedMotion.ts"],"names":["QUERY","getInitialState","useReducedMotion","prefersReducedMotion","setPrefersReducedMotion","useState","useEffect","mql","handler","event"],"mappings":"uCAIA,IAAMA,CAAAA,CAAQ,kCAAA,CAEd,SAASC,GAA2B,CAClC,OAAI,OAAO,MAAA,CAAW,IAAoB,KAAA,CACnC,MAAA,CAAO,UAAA,CAAWD,CAAK,CAAA,CAAE,OAClC,CASO,SAASE,GAA4B,CAC1C,GAAM,CAACC,CAAAA,CAAsBC,CAAuB,CAAA,CAAIC,QAAAA,CAASJ,CAAe,CAAA,CAEhF,OAAAK,SAAAA,CAAU,IAAM,CACd,IAAMC,CAAAA,CAAM,MAAA,CAAO,UAAA,CAAWP,CAAK,EACnCI,CAAAA,CAAwBG,CAAAA,CAAI,OAAO,CAAA,CAEnC,IAAMC,CAAAA,CAAWC,CAAAA,EAAqC,CACpDL,CAAAA,CAAwBK,EAAM,OAAO,EACvC,CAAA,CAEA,OAAAF,CAAAA,CAAI,gBAAA,CAAiB,QAAA,CAAUC,CAAO,EAC/B,IAAMD,CAAAA,CAAI,mBAAA,CAAoB,QAAA,CAAUC,CAAO,CACxD,CAAA,CAAG,EAAE,EAEEL,CACT","file":"index.mjs","sourcesContent":["'use client';\n\nimport { useState, useEffect } from 'react';\n\nconst QUERY = '(prefers-reduced-motion: reduce)';\n\nfunction getInitialState(): boolean {\n if (typeof window === 'undefined') return false;\n return window.matchMedia(QUERY).matches;\n}\n\n/**\n * Detects whether the user prefers reduced motion.\n *\n * - SSR-safe (returns `false` on the server)\n * - Reacts to changes in the OS preference\n * - Cleans up the listener on unmount\n */\nexport function useReducedMotion(): boolean {\n const [prefersReducedMotion, setPrefersReducedMotion] = useState(getInitialState);\n\n useEffect(() => {\n const mql = window.matchMedia(QUERY);\n setPrefersReducedMotion(mql.matches);\n\n const handler = (event: MediaQueryListEvent): void => {\n setPrefersReducedMotion(event.matches);\n };\n\n mql.addEventListener('change', handler);\n return () => mql.removeEventListener('change', handler);\n }, []);\n\n return prefersReducedMotion;\n}\n"]}
1
+ {"version":3,"sources":["../../src/hooks/useMediaQuery.ts","../../src/hooks/useReducedMotion.ts"],"names":["useMediaQuery","query","subscribe","useCallback","callback","mql","getSnapshot","getServerSnapshot","useSyncExternalStore","QUERY","getInitialState","useReducedMotion","prefersReducedMotion","setPrefersReducedMotion","useState","useEffect","handler","event"],"mappings":"wEAcO,SAASA,CAAAA,CAAcC,CAAAA,CAAwB,CACpD,IAAMC,CAAAA,CAAYC,WAAAA,CACfC,GAAyB,CACxB,IAAMC,CAAAA,CAAM,MAAA,CAAO,UAAA,CAAWJ,CAAK,CAAA,CACnC,OAAAI,EAAI,gBAAA,CAAiB,QAAA,CAAUD,CAAQ,CAAA,CAChC,IAAMC,CAAAA,CAAI,mBAAA,CAAoB,QAAA,CAAUD,CAAQ,CACzD,CAAA,CACA,CAACH,CAAK,CACR,CAAA,CAEMK,CAAAA,CAAcH,WAAAA,CAClB,IAAM,MAAA,CAAO,UAAA,CAAWF,CAAK,CAAA,CAAE,OAAA,CAC/B,CAACA,CAAK,CACR,CAAA,CAEMM,CAAAA,CAAoBJ,WAAAA,CAAY,IAAM,KAAA,CAAO,EAAE,CAAA,CAErD,OAAOK,oBAAAA,CAAqBN,CAAAA,CAAWI,CAAAA,CAAaC,CAAiB,CACvE,CC5BA,IAAME,CAAAA,CAAQ,kCAAA,CAEd,SAASC,CAAAA,EAA2B,CAClC,OAAI,OAAO,MAAA,CAAW,GAAA,CAAoB,KAAA,CACnC,MAAA,CAAO,UAAA,CAAWD,CAAK,CAAA,CAAE,OAClC,CASO,SAASE,CAAAA,EAA4B,CAC1C,GAAM,CAACC,EAAsBC,CAAuB,CAAA,CAAIC,QAAAA,CAASJ,CAAe,CAAA,CAEhF,OAAAK,SAAAA,CAAU,IAAM,CACd,IAAMV,CAAAA,CAAM,MAAA,CAAO,UAAA,CAAWI,CAAK,CAAA,CACnCI,CAAAA,CAAwBR,CAAAA,CAAI,OAAO,CAAA,CAEnC,IAAMW,CAAAA,CAAWC,CAAAA,EAAqC,CACpDJ,CAAAA,CAAwBI,CAAAA,CAAM,OAAO,EACvC,CAAA,CAEA,OAAAZ,CAAAA,CAAI,gBAAA,CAAiB,QAAA,CAAUW,CAAO,CAAA,CAC/B,IAAMX,CAAAA,CAAI,mBAAA,CAAoB,QAAA,CAAUW,CAAO,CACxD,CAAA,CAAG,EAAE,EAEEJ,CACT","file":"index.mjs","sourcesContent":["'use client';\n\nimport { useCallback, useSyncExternalStore } from 'react';\n\n/**\n * SSR-safe media query hook using useSyncExternalStore.\n *\n * - No hydration mismatch flicker (getServerSnapshot returns false)\n * - Listener registered once per query value (no dependency bugs)\n * - Reacts to changes in real time\n *\n * @param query - CSS media query string, e.g. '(max-width: 767px)'\n * @returns Whether the media query currently matches\n */\nexport function useMediaQuery(query: string): boolean {\n const subscribe = useCallback(\n (callback: () => void) => {\n const mql = window.matchMedia(query);\n mql.addEventListener('change', callback);\n return () => mql.removeEventListener('change', callback);\n },\n [query],\n );\n\n const getSnapshot = useCallback(\n () => window.matchMedia(query).matches,\n [query],\n );\n\n const getServerSnapshot = useCallback(() => false, []);\n\n return useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n}\n","'use client';\n\nimport { useState, useEffect } from 'react';\n\nconst QUERY = '(prefers-reduced-motion: reduce)';\n\nfunction getInitialState(): boolean {\n if (typeof window === 'undefined') return false;\n return window.matchMedia(QUERY).matches;\n}\n\n/**\n * Detects whether the user prefers reduced motion.\n *\n * - SSR-safe (returns `false` on the server)\n * - Reacts to changes in the OS preference\n * - Cleans up the listener on unmount\n */\nexport function useReducedMotion(): boolean {\n const [prefersReducedMotion, setPrefersReducedMotion] = useState(getInitialState);\n\n useEffect(() => {\n const mql = window.matchMedia(QUERY);\n setPrefersReducedMotion(mql.matches);\n\n const handler = (event: MediaQueryListEvent): void => {\n setPrefersReducedMotion(event.matches);\n };\n\n mql.addEventListener('change', handler);\n return () => mql.removeEventListener('change', handler);\n }, []);\n\n return prefersReducedMotion;\n}\n"]}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * SSR-safe media query hook using useSyncExternalStore.
3
+ *
4
+ * - No hydration mismatch flicker (getServerSnapshot returns false)
5
+ * - Listener registered once per query value (no dependency bugs)
6
+ * - Reacts to changes in real time
7
+ *
8
+ * @param query - CSS media query string, e.g. '(max-width: 767px)'
9
+ * @returns Whether the media query currently matches
10
+ */
11
+ export declare function useMediaQuery(query: string): boolean;
12
+ //# sourceMappingURL=useMediaQuery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMediaQuery.d.ts","sourceRoot":"","sources":["../../src/hooks/useMediaQuery.ts"],"names":[],"mappings":"AAIA;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAkBpD"}