thread-ui 0.4.2 → 0.6.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 (244) hide show
  1. package/README.md +10 -2
  2. package/dist/components/data-display/filter-controls/filter-controls.d.ts +10 -0
  3. package/dist/components/data-display/filter-controls/filter-controls.js +39 -0
  4. package/dist/components/data-display/filter-controls/filter-controls.js.map +1 -0
  5. package/dist/components/data-display/filter-controls/filter-controls.types.d.ts +75 -0
  6. package/dist/components/data-display/filter-controls/filter-controls.types.js +2 -0
  7. package/dist/components/data-display/filter-controls/filter-controls.types.js.map +1 -0
  8. package/dist/components/data-display/filter-controls/index.d.ts +2 -0
  9. package/dist/components/data-display/filter-controls/index.js +2 -0
  10. package/dist/components/data-display/filter-controls/index.js.map +1 -0
  11. package/dist/components/data-display/filter-controls/use-filter-controls.d.ts +23 -0
  12. package/dist/components/data-display/filter-controls/use-filter-controls.js +89 -0
  13. package/dist/components/data-display/filter-controls/use-filter-controls.js.map +1 -0
  14. package/dist/components/data-display/index.d.ts +2 -0
  15. package/dist/components/data-display/index.js +3 -0
  16. package/dist/components/data-display/index.js.map +1 -0
  17. package/dist/components/data-display/sort-controls/index.d.ts +3 -0
  18. package/dist/components/data-display/sort-controls/index.js +3 -0
  19. package/dist/components/data-display/sort-controls/index.js.map +1 -0
  20. package/dist/components/data-display/sort-controls/sort-controls.d.ts +11 -0
  21. package/dist/components/data-display/sort-controls/sort-controls.js +51 -0
  22. package/dist/components/data-display/sort-controls/sort-controls.js.map +1 -0
  23. package/dist/components/data-display/sort-controls/sort-controls.types.d.ts +62 -0
  24. package/dist/components/data-display/sort-controls/sort-controls.types.js +2 -0
  25. package/dist/components/data-display/sort-controls/sort-controls.types.js.map +1 -0
  26. package/dist/components/data-display/sort-controls/use-sort-controls.d.ts +23 -0
  27. package/dist/components/data-display/sort-controls/use-sort-controls.js +94 -0
  28. package/dist/components/data-display/sort-controls/use-sort-controls.js.map +1 -0
  29. package/dist/components/form-elements/{dropdown → dropdowns/dropdown}/dropdown.d.ts +1 -1
  30. package/dist/components/form-elements/dropdowns/dropdown/dropdown.js +41 -0
  31. package/dist/components/form-elements/dropdowns/dropdown/dropdown.js.map +1 -0
  32. package/dist/components/form-elements/{dropdown → dropdowns/dropdown}/dropdown.types.d.ts +4 -9
  33. package/dist/components/form-elements/dropdowns/dropdown/dropdown.types.js.map +1 -0
  34. package/dist/components/form-elements/dropdowns/dropdown/index.js.map +1 -0
  35. package/dist/components/form-elements/dropdowns/dropdown-base/dropdown-base.d.ts +8 -0
  36. package/dist/components/form-elements/dropdowns/dropdown-base/dropdown-base.js +46 -0
  37. package/dist/components/form-elements/dropdowns/dropdown-base/dropdown-base.js.map +1 -0
  38. package/dist/components/form-elements/dropdowns/dropdown-base/dropdown-base.types.d.ts +25 -0
  39. package/dist/components/form-elements/dropdowns/dropdown-base/dropdown-base.types.js +2 -0
  40. package/dist/components/form-elements/dropdowns/dropdown-base/dropdown-base.types.js.map +1 -0
  41. package/dist/components/form-elements/dropdowns/dropdown-base/index.d.ts +2 -0
  42. package/dist/components/form-elements/dropdowns/dropdown-base/index.js +2 -0
  43. package/dist/components/form-elements/dropdowns/dropdown-base/index.js.map +1 -0
  44. package/dist/components/form-elements/dropdowns/index.d.ts +2 -0
  45. package/dist/components/form-elements/dropdowns/index.js +3 -0
  46. package/dist/components/form-elements/dropdowns/index.js.map +1 -0
  47. package/dist/components/form-elements/dropdowns/multi-dropdown/index.d.ts +2 -0
  48. package/dist/components/form-elements/dropdowns/multi-dropdown/index.js +2 -0
  49. package/dist/components/form-elements/dropdowns/multi-dropdown/index.js.map +1 -0
  50. package/dist/components/form-elements/dropdowns/multi-dropdown/multi-dropdown.d.ts +15 -0
  51. package/dist/components/form-elements/dropdowns/multi-dropdown/multi-dropdown.js +55 -0
  52. package/dist/components/form-elements/dropdowns/multi-dropdown/multi-dropdown.js.map +1 -0
  53. package/dist/components/form-elements/dropdowns/multi-dropdown/multi-dropdown.types.d.ts +25 -0
  54. package/dist/components/form-elements/dropdowns/multi-dropdown/multi-dropdown.types.js +2 -0
  55. package/dist/components/form-elements/dropdowns/multi-dropdown/multi-dropdown.types.js.map +1 -0
  56. package/dist/components/form-elements/form-label/form-label.d.ts +1 -1
  57. package/dist/components/form-elements/form-label/form-label.js +34 -8
  58. package/dist/components/form-elements/form-label/form-label.js.map +1 -1
  59. package/dist/components/form-elements/form-label/form-label.types.d.ts +3 -0
  60. package/dist/components/form-elements/index.d.ts +2 -2
  61. package/dist/components/form-elements/index.js +2 -2
  62. package/dist/components/form-elements/index.js.map +1 -1
  63. package/dist/components/index.d.ts +1 -0
  64. package/dist/components/index.js +1 -0
  65. package/dist/components/index.js.map +1 -1
  66. package/dist/components/layouts/column-layout/column-layout.d.ts +1 -1
  67. package/dist/components/layouts/column-layout/column-layout.js +5 -4
  68. package/dist/components/layouts/column-layout/column-layout.js.map +1 -1
  69. package/dist/components/layouts/column-layout/column-layout.types.d.ts +5 -2
  70. package/dist/components/layouts/column-layout/column-skeleton/column-skeleton.js +2 -1
  71. package/dist/components/layouts/column-layout/column-skeleton/column-skeleton.js.map +1 -1
  72. package/dist/components/layouts/column-layout/column-skeleton/column-skeleton.types.d.ts +1 -1
  73. package/dist/components/layouts/container/container.d.ts +11 -0
  74. package/dist/components/layouts/container/container.js +28 -0
  75. package/dist/components/layouts/container/container.js.map +1 -0
  76. package/dist/components/layouts/container/container.types.d.ts +11 -0
  77. package/dist/components/layouts/container/container.types.js +2 -0
  78. package/dist/components/layouts/container/container.types.js.map +1 -0
  79. package/dist/components/layouts/container/index.d.ts +2 -0
  80. package/dist/components/layouts/container/index.js +2 -0
  81. package/dist/components/layouts/container/index.js.map +1 -0
  82. package/dist/components/layouts/index.d.ts +1 -0
  83. package/dist/components/layouts/index.js +1 -0
  84. package/dist/components/layouts/index.js.map +1 -1
  85. package/dist/components/layouts/layout-component.types.d.ts +9 -0
  86. package/dist/components/layouts/layout-component.types.js +2 -0
  87. package/dist/components/layouts/layout-component.types.js.map +1 -0
  88. package/dist/components/layouts/layout-wrapper.d.ts +7 -0
  89. package/dist/components/layouts/layout-wrapper.js +9 -0
  90. package/dist/components/layouts/layout-wrapper.js.map +1 -0
  91. package/dist/components/layouts/masonry-layout/masonry-layout.d.ts +1 -1
  92. package/dist/components/layouts/masonry-layout/masonry-layout.js +5 -5
  93. package/dist/components/layouts/masonry-layout/masonry-layout.js.map +1 -1
  94. package/dist/components/layouts/masonry-layout/masonry-layout.types.d.ts +3 -2
  95. package/dist/components/media/info-card/info-card.js +3 -4
  96. package/dist/components/media/info-card/info-card.js.map +1 -1
  97. package/dist/components/navigation/nav-menu/items/base-item/base-item.d.ts +1 -1
  98. package/dist/components/navigation/nav-menu/items/base-item/base-item.js +1 -1
  99. package/dist/components/navigation/nav-menu/items/base-item/base-item.js.map +1 -1
  100. package/dist/components/navigation/side-nav/side-nav-item/side-nav-item.js +1 -1
  101. package/dist/components/typography/typography.d.ts +10 -8
  102. package/dist/components/typography/typography.js +42 -8
  103. package/dist/components/typography/typography.js.map +1 -1
  104. package/dist/components/ui/button/button-recipe.js +90 -6
  105. package/dist/components/ui/button/button-recipe.js.map +1 -1
  106. package/dist/components/ui/button/button.d.ts +1 -1
  107. package/dist/components/ui/button/button.js +2 -1
  108. package/dist/components/ui/button/button.js.map +1 -1
  109. package/dist/components/ui/button/button.types.d.ts +3 -1
  110. package/dist/components/ui/icon/icon.d.ts +1 -1
  111. package/dist/components/ui/icon/icon.js +1 -1
  112. package/dist/components/ui/icon-button/icon-button.d.ts +1 -1
  113. package/dist/components/ui/icon-button/icon-button.js +4 -7
  114. package/dist/components/ui/icon-button/icon-button.js.map +1 -1
  115. package/dist/components/ui/index.d.ts +1 -0
  116. package/dist/components/ui/index.js +1 -0
  117. package/dist/components/ui/index.js.map +1 -1
  118. package/dist/components/ui/loaders/dots-loader/dots-loader.d.ts +8 -0
  119. package/dist/components/ui/loaders/dots-loader/dots-loader.js +59 -0
  120. package/dist/components/ui/loaders/dots-loader/dots-loader.js.map +1 -0
  121. package/dist/components/ui/loaders/dots-loader/dots-loader.types.d.ts +2 -0
  122. package/dist/components/ui/loaders/dots-loader/dots-loader.types.js +2 -0
  123. package/dist/components/ui/loaders/dots-loader/dots-loader.types.js.map +1 -0
  124. package/dist/components/ui/loaders/dots-loader/index.d.ts +2 -0
  125. package/dist/components/ui/loaders/dots-loader/index.js +2 -0
  126. package/dist/components/ui/loaders/dots-loader/index.js.map +1 -0
  127. package/dist/components/ui/loaders/index.d.ts +5 -0
  128. package/dist/components/ui/loaders/index.js +5 -0
  129. package/dist/components/ui/loaders/index.js.map +1 -0
  130. package/dist/components/ui/loaders/loaders.types.d.ts +9 -0
  131. package/dist/components/ui/loaders/loaders.types.js +2 -0
  132. package/dist/components/ui/loaders/loaders.types.js.map +1 -0
  133. package/dist/components/ui/loaders/skeleton/index.d.ts +2 -0
  134. package/dist/components/ui/loaders/skeleton/index.js +2 -0
  135. package/dist/components/ui/loaders/skeleton/index.js.map +1 -0
  136. package/dist/components/ui/loaders/skeleton/skeleton.d.ts +10 -0
  137. package/dist/components/ui/loaders/skeleton/skeleton.js +31 -0
  138. package/dist/components/ui/loaders/skeleton/skeleton.js.map +1 -0
  139. package/dist/components/ui/loaders/skeleton/skeleton.types.d.ts +8 -0
  140. package/dist/components/ui/loaders/skeleton/skeleton.types.js +2 -0
  141. package/dist/components/ui/loaders/skeleton/skeleton.types.js.map +1 -0
  142. package/dist/components/ui/loaders/skeleton-layout/index.d.ts +2 -0
  143. package/dist/components/ui/loaders/skeleton-layout/index.js +2 -0
  144. package/dist/components/ui/loaders/skeleton-layout/index.js.map +1 -0
  145. package/dist/components/ui/loaders/skeleton-layout/skeleton-layout.d.ts +14 -0
  146. package/dist/components/ui/loaders/skeleton-layout/skeleton-layout.js +23 -0
  147. package/dist/components/ui/loaders/skeleton-layout/skeleton-layout.js.map +1 -0
  148. package/dist/components/ui/loaders/skeleton-layout/skeleton-layout.types.d.ts +8 -0
  149. package/dist/components/ui/loaders/skeleton-layout/skeleton-layout.types.js +2 -0
  150. package/dist/components/ui/loaders/skeleton-layout/skeleton-layout.types.js.map +1 -0
  151. package/dist/components/ui/loaders/spin-loader/index.d.ts +2 -0
  152. package/dist/components/ui/loaders/spin-loader/index.js +2 -0
  153. package/dist/components/ui/loaders/spin-loader/index.js.map +1 -0
  154. package/dist/components/ui/loaders/spin-loader/spin-loader.d.ts +8 -0
  155. package/dist/components/ui/loaders/spin-loader/spin-loader.js +40 -0
  156. package/dist/components/ui/loaders/spin-loader/spin-loader.js.map +1 -0
  157. package/dist/components/ui/loaders/spin-loader/spin-loader.types.d.ts +2 -0
  158. package/dist/components/ui/loaders/spin-loader/spin-loader.types.js +2 -0
  159. package/dist/components/ui/loaders/spin-loader/spin-loader.types.js.map +1 -0
  160. package/dist/components/ui/modal/components/modal-content.js +3 -3
  161. package/dist/components/ui/modal/components/modal-content.js.map +1 -1
  162. package/dist/components/ui/modal/modal.js +8 -2
  163. package/dist/components/ui/modal/modal.js.map +1 -1
  164. package/dist/components/ui/modal/modal.types.d.ts +2 -0
  165. package/dist/hooks/index.d.ts +3 -0
  166. package/dist/hooks/index.js +4 -0
  167. package/dist/hooks/index.js.map +1 -0
  168. package/dist/hooks/use-click-outside/index.d.ts +1 -0
  169. package/dist/hooks/use-click-outside/index.js +2 -0
  170. package/dist/hooks/use-click-outside/index.js.map +1 -0
  171. package/dist/hooks/use-click-outside/use-click-outside.d.ts +10 -0
  172. package/dist/hooks/use-click-outside/use-click-outside.js +26 -0
  173. package/dist/hooks/use-click-outside/use-click-outside.js.map +1 -0
  174. package/dist/hooks/use-dismiss/index.d.ts +1 -0
  175. package/dist/hooks/use-dismiss/index.js +2 -0
  176. package/dist/hooks/use-dismiss/index.js.map +1 -0
  177. package/dist/hooks/use-dismiss/use-dismiss.d.ts +13 -0
  178. package/dist/hooks/use-dismiss/use-dismiss.js +42 -0
  179. package/dist/hooks/use-dismiss/use-dismiss.js.map +1 -0
  180. package/dist/hooks/use-pathname/index.js.map +1 -0
  181. package/dist/hooks/use-pathname/use-pathname.d.ts +8 -0
  182. package/dist/{utils/hooks → hooks}/use-pathname/use-pathname.js +7 -0
  183. package/dist/hooks/use-pathname/use-pathname.js.map +1 -0
  184. package/dist/index.d.ts +1 -0
  185. package/dist/index.js +2 -0
  186. package/dist/index.js.map +1 -1
  187. package/dist/internal-components/conditional-wrapper/conditional-wrapper.d.ts +2 -0
  188. package/dist/internal-components/conditional-wrapper/conditional-wrapper.js +12 -0
  189. package/dist/internal-components/conditional-wrapper/conditional-wrapper.js.map +1 -0
  190. package/dist/internal-components/conditional-wrapper/conditional-wrapper.types.d.ts +9 -0
  191. package/dist/internal-components/conditional-wrapper/conditional-wrapper.types.js +2 -0
  192. package/dist/internal-components/conditional-wrapper/conditional-wrapper.types.js.map +1 -0
  193. package/dist/internal-components/conditional-wrapper/index.d.ts +2 -0
  194. package/dist/internal-components/conditional-wrapper/index.js +2 -0
  195. package/dist/internal-components/conditional-wrapper/index.js.map +1 -0
  196. package/dist/internal-components/image/render-image.js.map +1 -1
  197. package/dist/internal-components/index.d.ts +3 -1
  198. package/dist/internal-components/index.js +3 -1
  199. package/dist/internal-components/index.js.map +1 -1
  200. package/dist/internal-components/optional-icon-button/index.d.ts +2 -0
  201. package/dist/internal-components/optional-icon-button/index.js +2 -0
  202. package/dist/internal-components/optional-icon-button/index.js.map +1 -0
  203. package/dist/internal-components/optional-icon-button/optional-icon-button.d.ts +2 -0
  204. package/dist/internal-components/optional-icon-button/optional-icon-button.js +9 -0
  205. package/dist/internal-components/optional-icon-button/optional-icon-button.js.map +1 -0
  206. package/dist/internal-components/optional-icon-button/optional-icon-button.types.d.ts +4 -0
  207. package/dist/internal-components/optional-icon-button/optional-icon-button.types.js +2 -0
  208. package/dist/internal-components/optional-icon-button/optional-icon-button.types.js.map +1 -0
  209. package/dist/styled-system/recipes/button.d.ts +2 -1
  210. package/dist/styled-system/recipes/button.mjs +114 -1
  211. package/dist/styled-system/styles.css +1 -1
  212. package/dist/styled-system/types/prop-type.d.ts +1 -1
  213. package/dist/styles/panda.css +1 -1
  214. package/dist/types/colors/utility-color-options.types.d.ts +2 -0
  215. package/dist/types/image/image.types.d.ts +2 -0
  216. package/dist/types/theme/theme.types.d.ts +24 -10
  217. package/dist/types/utility/deep-partial.types.d.ts +1 -0
  218. package/dist/utils/index.d.ts +0 -1
  219. package/dist/utils/index.js +0 -1
  220. package/dist/utils/index.js.map +1 -1
  221. package/dist/utils/theme-utilities/get-utility-icon-size/get-utility-icon-size.js +4 -4
  222. package/dist/utils/theme-utilities/get-utility-icon-size/get-utility-icon-size.js.map +1 -1
  223. package/package.json +1 -1
  224. package/dist/components/form-elements/dropdown/dropdown.js +0 -83
  225. package/dist/components/form-elements/dropdown/dropdown.js.map +0 -1
  226. package/dist/components/form-elements/dropdown/dropdown.types.js.map +0 -1
  227. package/dist/components/form-elements/dropdown/index.js.map +0 -1
  228. package/dist/utils/hooks/index.d.ts +0 -2
  229. package/dist/utils/hooks/index.js +0 -3
  230. package/dist/utils/hooks/index.js.map +0 -1
  231. package/dist/utils/hooks/use-outside-close-click/index.d.ts +0 -1
  232. package/dist/utils/hooks/use-outside-close-click/index.js +0 -2
  233. package/dist/utils/hooks/use-outside-close-click/index.js.map +0 -1
  234. package/dist/utils/hooks/use-outside-close-click/use-outside-close-click.d.ts +0 -2
  235. package/dist/utils/hooks/use-outside-close-click/use-outside-close-click.js +0 -16
  236. package/dist/utils/hooks/use-outside-close-click/use-outside-close-click.js.map +0 -1
  237. package/dist/utils/hooks/use-pathname/index.js.map +0 -1
  238. package/dist/utils/hooks/use-pathname/use-pathname.d.ts +0 -1
  239. package/dist/utils/hooks/use-pathname/use-pathname.js.map +0 -1
  240. /package/dist/components/form-elements/{dropdown → dropdowns/dropdown}/dropdown.types.js +0 -0
  241. /package/dist/components/form-elements/{dropdown → dropdowns/dropdown}/index.d.ts +0 -0
  242. /package/dist/components/form-elements/{dropdown → dropdowns/dropdown}/index.js +0 -0
  243. /package/dist/{utils/hooks → hooks}/use-pathname/index.d.ts +0 -0
  244. /package/dist/{utils/hooks → hooks}/use-pathname/index.js +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/use-dismiss/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { RefObject } from 'react';
2
+ /**
3
+ * Calls `onClose` when a click is detected outside of `elementRef` or when `Escape` is pressed.
4
+ * Each trigger can be independently disabled. Only active when `isOpen` is true.
5
+ *
6
+ * @example
7
+ * const ref = useRef<HTMLDivElement>(null);
8
+ * useDismiss(ref, isOpen, () => setIsOpen(false));
9
+ *
10
+ * // Disable outside click, keep Escape
11
+ * useDismiss(ref, isOpen, () => setIsOpen(false), true, false);
12
+ */
13
+ export declare const useDismiss: (elementRef: RefObject<HTMLElement | null>, isOpen: boolean, onClose: () => void, isClickDisabled?: boolean, isEscDisabled?: boolean) => void;
@@ -0,0 +1,42 @@
1
+ 'use client';
2
+ import { useEffect, useRef } from 'react';
3
+ /**
4
+ * Calls `onClose` when a click is detected outside of `elementRef` or when `Escape` is pressed.
5
+ * Each trigger can be independently disabled. Only active when `isOpen` is true.
6
+ *
7
+ * @example
8
+ * const ref = useRef<HTMLDivElement>(null);
9
+ * useDismiss(ref, isOpen, () => setIsOpen(false));
10
+ *
11
+ * // Disable outside click, keep Escape
12
+ * useDismiss(ref, isOpen, () => setIsOpen(false), true, false);
13
+ */
14
+ export const useDismiss = (elementRef, isOpen, onClose, isClickDisabled = false, isEscDisabled = false) => {
15
+ const onCloseRef = useRef(onClose);
16
+ onCloseRef.current = onClose;
17
+ useEffect(() => {
18
+ if (!isOpen || (isClickDisabled && isEscDisabled))
19
+ return;
20
+ const handleClickOutside = (e) => {
21
+ if (elementRef.current && !elementRef.current.contains(e.target)) {
22
+ onCloseRef.current();
23
+ }
24
+ };
25
+ const handleKeyDown = (e) => {
26
+ if (e.key === 'Escape') {
27
+ onCloseRef.current();
28
+ }
29
+ };
30
+ if (!isClickDisabled) {
31
+ document.addEventListener('mousedown', handleClickOutside);
32
+ }
33
+ if (!isEscDisabled) {
34
+ document.addEventListener('keydown', handleKeyDown);
35
+ }
36
+ return () => {
37
+ document.removeEventListener('mousedown', handleClickOutside);
38
+ document.removeEventListener('keydown', handleKeyDown);
39
+ };
40
+ }, [elementRef, isOpen, isClickDisabled, isEscDisabled]);
41
+ };
42
+ //# sourceMappingURL=use-dismiss.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-dismiss.js","sourceRoot":"","sources":["../../../src/hooks/use-dismiss/use-dismiss.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AACb,OAAO,EAAE,SAAS,EAAE,MAAM,EAAa,MAAM,OAAO,CAAC;AAErD;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CACzB,UAAyC,EACzC,MAAe,EACf,OAAmB,EACnB,kBAA2B,KAAK,EAChC,gBAAyB,KAAK,EAC7B,EAAE;IACH,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IACnC,UAAU,CAAC,OAAO,GAAG,OAAO,CAAC;IAE7B,SAAS,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,MAAM,IAAI,CAAC,eAAe,IAAI,aAAa,CAAC;YAAE,OAAO;QAE1D,MAAM,kBAAkB,GAAG,CAAC,CAAa,EAAE,EAAE;YAC5C,IAAI,UAAU,CAAC,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAc,CAAC,EAAE,CAAC;gBAC1E,UAAU,CAAC,OAAO,EAAE,CAAC;YACtB,CAAC;QACF,CAAC,CAAC;QAEF,MAAM,aAAa,GAAG,CAAC,CAAgB,EAAE,EAAE;YAC1C,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;gBACxB,UAAU,CAAC,OAAO,EAAE,CAAC;YACtB,CAAC;QACF,CAAC,CAAC;QAEF,IAAI,CAAC,eAAe,EAAE,CAAC;YACtB,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;QAC5D,CAAC;QAED,IAAI,CAAC,aAAa,EAAE,CAAC;YACpB,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QACrD,CAAC;QAED,OAAO,GAAG,EAAE;YACX,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;YAC9D,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QACxD,CAAC,CAAC;IACH,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,eAAe,EAAE,aAAa,CAAC,CAAC,CAAC;AAC1D,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/use-pathname/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Returns the current `window.location.pathname` and updates on `popstate` events.
3
+ * Initializes as an empty string on the server to avoid hydration mismatches.
4
+ *
5
+ * @example
6
+ * const pathname = usePathname();
7
+ */
8
+ export declare const usePathname: () => string;
@@ -1,5 +1,12 @@
1
1
  'use client';
2
2
  import { useState, useEffect } from 'react';
3
+ /**
4
+ * Returns the current `window.location.pathname` and updates on `popstate` events.
5
+ * Initializes as an empty string on the server to avoid hydration mismatches.
6
+ *
7
+ * @example
8
+ * const pathname = usePathname();
9
+ */
3
10
  export const usePathname = () => {
4
11
  const [pathname, setPathname] = useState(''); // Safe initial state
5
12
  useEffect(() => {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-pathname.js","sourceRoot":"","sources":["../../../src/hooks/use-pathname/use-pathname.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AACb,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAE5C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,EAAE;IAC/B,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,qBAAqB;IAEnE,SAAS,CAAC,GAAG,EAAE;QACd,mCAAmC;QACnC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAEtC,MAAM,oBAAoB,GAAG,GAAG,EAAE;YACjC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACvC,CAAC,CAAC;QAEF,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC;QAC1D,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC;IAC3E,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,QAAQ,CAAC;AACjB,CAAC,CAAC"}
package/dist/index.d.ts CHANGED
@@ -3,3 +3,4 @@ import './styles/panda.css';
3
3
  export * from './components';
4
4
  export * from './types';
5
5
  export * from './theme';
6
+ export * from './hooks';
package/dist/index.js CHANGED
@@ -8,4 +8,6 @@ export * from './components';
8
8
  export * from './types';
9
9
  // Export Theme
10
10
  export * from './theme';
11
+ // Export Hooks
12
+ export * from './hooks';
11
13
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,OAAO,qBAAqB,CAAC;AAC7B,gCAAgC;AAChC,OAAO,oBAAoB,CAAC;AAE5B,oBAAoB;AACpB,cAAc,cAAc,CAAC;AAE7B,eAAe;AACf,cAAc,SAAS,CAAC;AAExB,eAAe;AACf,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,OAAO,qBAAqB,CAAC;AAC7B,gCAAgC;AAChC,OAAO,oBAAoB,CAAC;AAE5B,oBAAoB;AACpB,cAAc,cAAc,CAAC;AAE7B,eAAe;AACf,cAAc,SAAS,CAAC;AAExB,eAAe;AACf,cAAc,SAAS,CAAC;AAExB,eAAe;AACf,cAAc,SAAS,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { ConditionalWrapperProps } from './conditional-wrapper.types';
2
+ export declare const ConditionalWrapper: ({ children, wrapper, wrapperProps, fallbackWrapper, }: ConditionalWrapperProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,12 @@
1
+ import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
2
+ export const ConditionalWrapper = ({ children, wrapper, wrapperProps = {}, fallbackWrapper, }) => {
3
+ const resolved = wrapper ?? fallbackWrapper?.wrapper ?? 'fragment';
4
+ const resolvedProps = wrapper ? wrapperProps : (fallbackWrapper?.wrapperProps ?? {});
5
+ if (resolved === 'fragment')
6
+ return _jsx(_Fragment, { children: children });
7
+ if (resolved === 'div')
8
+ return _jsx("div", { ...resolvedProps, children: children });
9
+ const Wrapper = resolved;
10
+ return _jsx(Wrapper, { ...resolvedProps, children: children });
11
+ };
12
+ //# sourceMappingURL=conditional-wrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conditional-wrapper.js","sourceRoot":"","sources":["../../../src/internal-components/conditional-wrapper/conditional-wrapper.tsx"],"names":[],"mappings":";AAEA,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,EAClC,QAAQ,EACR,OAAO,EACP,YAAY,GAAG,EAAE,EACjB,eAAe,GACU,EAAE,EAAE;IAC7B,MAAM,QAAQ,GAAG,OAAO,IAAI,eAAe,EAAE,OAAO,IAAI,UAAU,CAAC;IACnE,MAAM,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,eAAe,EAAE,YAAY,IAAI,EAAE,CAAC,CAAC;IAErF,IAAI,QAAQ,KAAK,UAAU;QAAE,OAAO,4BAAG,QAAQ,GAAI,CAAC;IACpD,IAAI,QAAQ,KAAK,KAAK;QAAE,OAAO,iBAAS,aAAa,YAAG,QAAQ,GAAO,CAAC;IACxE,MAAM,OAAO,GAAG,QAAQ,CAAC;IACzB,OAAO,KAAC,OAAO,OAAM,aAAqB,YAAG,QAAQ,GAAW,CAAC;AAClE,CAAC,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { ComponentType, ReactNode } from 'react';
2
+ type WrapperType = ComponentType<any> | 'div' | 'fragment';
3
+ export type ConditionalWrapperProps = {
4
+ children: ReactNode;
5
+ wrapper?: WrapperType;
6
+ wrapperProps?: Record<string, unknown>;
7
+ fallbackWrapper?: Omit<ConditionalWrapperProps, 'children' | 'fallbackWrapper'>;
8
+ };
9
+ export {};
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=conditional-wrapper.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conditional-wrapper.types.js","sourceRoot":"","sources":["../../../src/internal-components/conditional-wrapper/conditional-wrapper.types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export type { ConditionalWrapperProps } from './conditional-wrapper.types';
2
+ export { ConditionalWrapper } from './conditional-wrapper';
@@ -0,0 +1,2 @@
1
+ export { ConditionalWrapper } from './conditional-wrapper';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/internal-components/conditional-wrapper/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"render-image.js","sourceRoot":"","sources":["../../../src/internal-components/image/render-image.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,EAAiB,cAAc,EAAgB,MAAM,OAAO,CAAC;AAE3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,EAAE,EAAE,MAAM,qBAAqB,CAAC,CAAC,kBAAkB;AAE5D,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,UAAsB,EAAE,MAAsB,EAAE,SAAkB,EAAgB,EAAE;IAC/G,IAAI,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC;QAChC,MAAM,SAAS,GAAG,UAAU,CAAC,KAA0C,CAAC;QACxE,MAAM,QAAQ,GAAsC;YACnD,GAAG,SAAS;YACZ,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC;YAC7C,KAAK,EAAE;gBACN,GAAG,SAAS,CAAC,KAAK;gBAClB,GAAG,MAAM;aACT;SACD,CAAC;QACF,OAAO,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IACjD,CAAC;IAED,IAAI,gBAAgB,CAAC,UAAU,CAAC,EAAE,CAAC;QAClC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,SAAS,EAAE,GAAG,UAAU,CAAC;QACtF,OAAO,CACN,cACC,GAAG,EAAE,GAAG,EACR,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,EAAE,CAAC,YAAY,EAAE,SAAS,CAAC,EACtC,KAAK,EAAE,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,KACrC,SAAS,GACZ,CACF,CAAC;IACH,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;IAC5D,OAAO,cAAK,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,eAAe,EAAC,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAI,CAAC;AACvE,CAAC,CAAC"}
1
+ {"version":3,"file":"render-image.js","sourceRoot":"","sources":["../../../src/internal-components/image/render-image.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,EAAiB,cAAc,EAAgB,MAAM,OAAO,CAAC;AAE3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,EAAE,EAAE,MAAM,qBAAqB,CAAC,CAAC,kBAAkB;AAE5D,MAAM,CAAC,MAAM,WAAW,GAAG,CAC1B,UAAsB,EACtB,MAAsB,EACtB,SAAkB,EACH,EAAE;IACjB,IAAI,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC;QAChC,MAAM,SAAS,GAAG,UAAU,CAAC,KAA0C,CAAC;QACxE,MAAM,QAAQ,GAAsC;YACnD,GAAG,SAAS;YACZ,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC;YAC7C,KAAK,EAAE;gBACN,GAAG,SAAS,CAAC,KAAK;gBAClB,GAAG,MAAM;aACT;SACD,CAAC;QACF,OAAO,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IACjD,CAAC;IAED,IAAI,gBAAgB,CAAC,UAAU,CAAC,EAAE,CAAC;QAClC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,SAAS,EAAE,GAAG,UAAU,CAAC;QACtF,OAAO,CACN,cACC,GAAG,EAAE,GAAG,EACR,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,EAAE,CAAC,YAAY,EAAE,SAAS,CAAC,EACtC,KAAK,EAAE,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,KACrC,SAAS,GACZ,CACF,CAAC;IACH,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;IAC5D,OAAO,cAAK,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,eAAe,EAAC,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAI,CAAC;AACvE,CAAC,CAAC"}
@@ -1,2 +1,4 @@
1
- export * from './link-wrapper';
1
+ export * from './conditional-wrapper';
2
2
  export * from './image';
3
+ export * from './link-wrapper';
4
+ export * from './optional-icon-button';
@@ -1,4 +1,6 @@
1
1
  // Export Internal Components
2
- export * from './link-wrapper';
2
+ export * from './conditional-wrapper';
3
3
  export * from './image';
4
+ export * from './link-wrapper';
5
+ export * from './optional-icon-button';
4
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/internal-components/index.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/internal-components/index.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export type { OptionalIconButtonProps } from './optional-icon-button.types';
2
+ export { OptionalIconButton } from './optional-icon-button';
@@ -0,0 +1,2 @@
1
+ export { OptionalIconButton } from './optional-icon-button';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/internal-components/optional-icon-button/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { OptionalIconButtonProps } from './optional-icon-button.types';
2
+ export declare const OptionalIconButton: (props: OptionalIconButtonProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,9 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Button, IconButton } from '../../components';
3
+ import { ConditionalWrapper } from '../conditional-wrapper';
4
+ export const OptionalIconButton = (props) => {
5
+ const { name, children, ...buttonProps } = props;
6
+ const iconButtonProps = name ? { ...buttonProps, name } : undefined;
7
+ return (_jsx(ConditionalWrapper, { wrapper: iconButtonProps ? IconButton : undefined, wrapperProps: iconButtonProps, fallbackWrapper: { wrapper: Button, wrapperProps: buttonProps }, children: children }));
8
+ };
9
+ //# sourceMappingURL=optional-icon-button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"optional-icon-button.js","sourceRoot":"","sources":["../../../src/internal-components/optional-icon-button/optional-icon-button.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAG5D,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,KAA8B,EAAE,EAAE;IACpE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,WAAW,EAAE,GAAG,KAAK,CAAC;IAEjD,MAAM,eAAe,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAEpE,OAAO,CACN,KAAC,kBAAkB,IAClB,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,EACjD,YAAY,EAAE,eAAe,EAC7B,eAAe,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,YAE9D,QAAQ,GACW,CACrB,CAAC;AACH,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { IconButtonProps } from '../../components';
2
+ export type OptionalIconButtonProps = Omit<IconButtonProps, 'name'> & {
3
+ name?: IconButtonProps['name'];
4
+ };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=optional-icon-button.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"optional-icon-button.types.js","sourceRoot":"","sources":["../../../src/internal-components/optional-icon-button/optional-icon-button.types.ts"],"names":[],"mappings":""}
@@ -6,7 +6,7 @@ interface ButtonVariant {
6
6
  /**
7
7
  * @default "primary"
8
8
  */
9
- color: "primary" | "secondary" | "tertiary" | "black" | "gray" | "success" | "error" | "info" | "text"
9
+ color: "primary" | "secondary" | "tertiary" | "black" | "gray" | "success" | "error" | "info" | "text" | "neutral"
10
10
  /**
11
11
  * @default "md"
12
12
  */
@@ -19,6 +19,7 @@ fullWidth: boolean
19
19
  * @default false
20
20
  */
21
21
  disabled: boolean
22
+ textVariant: boolean
22
23
  }
23
24
 
24
25
  type ButtonVariantMap = {
@@ -105,6 +105,115 @@ const buttonFn = /* @__PURE__ */ createRecipe('button', {
105
105
  "borderColor": "white"
106
106
  }
107
107
  }
108
+ },
109
+ {
110
+ "textVariant": true,
111
+ "disabled": true,
112
+ "css": {
113
+ "_hover": {
114
+ "textDecoration": "none"
115
+ }
116
+ }
117
+ },
118
+ {
119
+ "textVariant": true,
120
+ "color": "primary",
121
+ "css": {
122
+ "color": "primary.main",
123
+ "_hover": {
124
+ "color": "primary.main"
125
+ }
126
+ }
127
+ },
128
+ {
129
+ "textVariant": true,
130
+ "color": "secondary",
131
+ "css": {
132
+ "color": "secondary.main",
133
+ "_hover": {
134
+ "color": "secondary.main"
135
+ }
136
+ }
137
+ },
138
+ {
139
+ "textVariant": true,
140
+ "color": "tertiary",
141
+ "css": {
142
+ "color": "tertiary.main",
143
+ "_hover": {
144
+ "color": "tertiary.main"
145
+ }
146
+ }
147
+ },
148
+ {
149
+ "textVariant": true,
150
+ "color": "gray",
151
+ "css": {
152
+ "color": "gray.main",
153
+ "_hover": {
154
+ "color": "gray.main"
155
+ }
156
+ }
157
+ },
158
+ {
159
+ "textVariant": true,
160
+ "color": "success",
161
+ "css": {
162
+ "color": "success.main",
163
+ "_hover": {
164
+ "color": "success.main"
165
+ }
166
+ }
167
+ },
168
+ {
169
+ "textVariant": true,
170
+ "color": "error",
171
+ "css": {
172
+ "color": "error.main",
173
+ "_hover": {
174
+ "color": "error.main"
175
+ }
176
+ }
177
+ },
178
+ {
179
+ "textVariant": true,
180
+ "color": "info",
181
+ "css": {
182
+ "color": "info.main",
183
+ "_hover": {
184
+ "color": "info.main"
185
+ }
186
+ }
187
+ },
188
+ {
189
+ "textVariant": true,
190
+ "color": "neutral",
191
+ "css": {
192
+ "color": "text.standard",
193
+ "_hover": {
194
+ "color": "text.standard"
195
+ }
196
+ }
197
+ },
198
+ {
199
+ "textVariant": true,
200
+ "color": "black",
201
+ "css": {
202
+ "color": "black",
203
+ "_hover": {
204
+ "color": "black"
205
+ }
206
+ }
207
+ },
208
+ {
209
+ "textVariant": true,
210
+ "color": "text",
211
+ "css": {
212
+ "color": "text.standard",
213
+ "_hover": {
214
+ "color": "text.standard"
215
+ }
216
+ }
108
217
  }
109
218
  ])
110
219
 
@@ -118,7 +227,8 @@ const buttonVariantMap = {
118
227
  "success",
119
228
  "error",
120
229
  "info",
121
- "text"
230
+ "text",
231
+ "neutral"
122
232
  ],
123
233
  "size": [
124
234
  "sm",
@@ -132,6 +242,9 @@ const buttonVariantMap = {
132
242
  "disabled": [
133
243
  "true",
134
244
  "false"
245
+ ],
246
+ "textVariant": [
247
+ "true"
135
248
  ]
136
249
  }
137
250