@btst/stack 1.1.1 → 1.1.3

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 (281) hide show
  1. package/README.md +1 -1
  2. package/dist/client/components/index.cjs +2 -2
  3. package/dist/client/components/index.mjs +2 -2
  4. package/dist/client/index.cjs +3 -3
  5. package/dist/client/index.mjs +3 -3
  6. package/dist/context/index.cjs +1 -1
  7. package/dist/context/index.mjs +1 -1
  8. package/dist/node_modules/.pnpm/@floating-ui_core@1.7.3/node_modules/@floating-ui/core/dist/floating-ui.core.cjs +825 -0
  9. package/dist/node_modules/.pnpm/@floating-ui_core@1.7.3/node_modules/@floating-ui/core/dist/floating-ui.core.mjs +814 -0
  10. package/dist/node_modules/.pnpm/@floating-ui_dom@1.7.4/node_modules/@floating-ui/dom/dist/floating-ui.dom.cjs +763 -0
  11. package/dist/node_modules/.pnpm/@floating-ui_dom@1.7.4/node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs +751 -0
  12. package/dist/node_modules/.pnpm/@floating-ui_react-dom@2.1.6_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.cjs +375 -0
  13. package/dist/node_modules/.pnpm/@floating-ui_react-dom@2.1.6_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.mjs +350 -0
  14. package/dist/node_modules/.pnpm/@floating-ui_utils@0.2.10/node_modules/@floating-ui/utils/dist/floating-ui.utils.cjs +160 -0
  15. package/dist/node_modules/.pnpm/@floating-ui_utils@0.2.10/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.cjs +182 -0
  16. package/dist/node_modules/.pnpm/@floating-ui_utils@0.2.10/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs +161 -0
  17. package/dist/node_modules/.pnpm/@floating-ui_utils@0.2.10/node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs +137 -0
  18. package/dist/node_modules/.pnpm/@radix-ui_number@1.1.1/node_modules/@radix-ui/number/dist/index.cjs +8 -0
  19. package/dist/node_modules/.pnpm/@radix-ui_number@1.1.1/node_modules/@radix-ui/number/dist/index.mjs +6 -0
  20. package/dist/node_modules/.pnpm/@radix-ui_primitive@1.1.3/node_modules/@radix-ui/primitive/dist/index.cjs +13 -0
  21. package/dist/node_modules/.pnpm/@radix-ui_primitive@1.1.3/node_modules/@radix-ui/primitive/dist/index.mjs +11 -0
  22. package/dist/node_modules/.pnpm/@radix-ui_react-arrow@1.1.7_@types_react-dom@19.2.2_@types_react@19.2.2__@types_react@1_9e04309f365863673e44407648bb0cb6/node_modules/@radix-ui/react-arrow/dist/index.cjs +42 -0
  23. package/dist/node_modules/.pnpm/@radix-ui_react-arrow@1.1.7_@types_react-dom@19.2.2_@types_react@19.2.2__@types_react@1_9e04309f365863673e44407648bb0cb6/node_modules/@radix-ui/react-arrow/dist/index.mjs +25 -0
  24. package/dist/node_modules/.pnpm/@radix-ui_react-collection@1.1.7_@types_react-dom@19.2.2_@types_react@19.2.2__@types_re_6d7c277722b3619c9ee7e64e9a822c45/node_modules/@radix-ui/react-collection/dist/index.cjs +77 -0
  25. package/dist/node_modules/.pnpm/@radix-ui_react-collection@1.1.7_@types_react-dom@19.2.2_@types_react@19.2.2__@types_re_6d7c277722b3619c9ee7e64e9a822c45/node_modules/@radix-ui/react-collection/dist/index.mjs +71 -0
  26. package/dist/node_modules/.pnpm/@radix-ui_react-compose-refs@1.1.2_@types_react@19.2.2_react@19.2.0/node_modules/@radix-ui/react-compose-refs/dist/index.cjs +56 -0
  27. package/dist/node_modules/.pnpm/@radix-ui_react-compose-refs@1.1.2_@types_react@19.2.2_react@19.2.0/node_modules/@radix-ui/react-compose-refs/dist/index.mjs +39 -0
  28. package/dist/node_modules/.pnpm/@radix-ui_react-context@1.1.2_@types_react@19.2.2_react@19.2.0/node_modules/@radix-ui/react-context/dist/index.cjs +79 -0
  29. package/dist/node_modules/.pnpm/@radix-ui_react-context@1.1.2_@types_react@19.2.2_react@19.2.0/node_modules/@radix-ui/react-context/dist/index.mjs +63 -0
  30. package/dist/node_modules/.pnpm/@radix-ui_react-direction@1.1.1_@types_react@19.2.2_react@19.2.0/node_modules/@radix-ui/react-direction/dist/index.cjs +27 -0
  31. package/dist/node_modules/.pnpm/@radix-ui_react-direction@1.1.1_@types_react@19.2.2_react@19.2.0/node_modules/@radix-ui/react-direction/dist/index.mjs +11 -0
  32. package/dist/node_modules/.pnpm/@radix-ui_react-dismissable-layer@1.1.11_@types_react-dom@19.2.2_@types_react@19.2.2__@_ca5522e5d45d4722cb9eb5ce53defa61/node_modules/@radix-ui/react-dismissable-layer/dist/index.cjs +229 -0
  33. package/dist/node_modules/.pnpm/@radix-ui_react-dismissable-layer@1.1.11_@types_react-dom@19.2.2_@types_react@19.2.2__@_ca5522e5d45d4722cb9eb5ce53defa61/node_modules/@radix-ui/react-dismissable-layer/dist/index.mjs +212 -0
  34. package/dist/node_modules/.pnpm/@radix-ui_react-focus-guards@1.1.3_@types_react@19.2.2_react@19.2.0/node_modules/@radix-ui/react-focus-guards/dist/index.cjs +46 -0
  35. package/dist/node_modules/.pnpm/@radix-ui_react-focus-guards@1.1.3_@types_react@19.2.2_react@19.2.0/node_modules/@radix-ui/react-focus-guards/dist/index.mjs +30 -0
  36. package/dist/node_modules/.pnpm/@radix-ui_react-focus-scope@1.1.7_@types_react-dom@19.2.2_@types_react@19.2.2__@types_r_93de389b3f622f9f764acc8e59ec80c0/node_modules/@radix-ui/react-focus-scope/dist/index.cjs +224 -0
  37. package/dist/node_modules/.pnpm/@radix-ui_react-focus-scope@1.1.7_@types_react-dom@19.2.2_@types_react@19.2.2__@types_r_93de389b3f622f9f764acc8e59ec80c0/node_modules/@radix-ui/react-focus-scope/dist/index.mjs +208 -0
  38. package/dist/node_modules/.pnpm/@radix-ui_react-id@1.1.1_@types_react@19.2.2_react@19.2.0/node_modules/@radix-ui/react-id/dist/index.cjs +31 -0
  39. package/dist/node_modules/.pnpm/@radix-ui_react-id@1.1.1_@types_react@19.2.2_react@19.2.0/node_modules/@radix-ui/react-id/dist/index.mjs +15 -0
  40. package/dist/node_modules/.pnpm/@radix-ui_react-popper@1.2.8_@types_react-dom@19.2.2_@types_react@19.2.2__@types_react@_d6285b8269ea5d6b59b300f5be279a0c/node_modules/@radix-ui/react-popper/dist/index.cjs +308 -0
  41. package/dist/node_modules/.pnpm/@radix-ui_react-popper@1.2.8_@types_react-dom@19.2.2_@types_react@19.2.2__@types_react@_d6285b8269ea5d6b59b300f5be279a0c/node_modules/@radix-ui/react-popper/dist/index.mjs +284 -0
  42. package/dist/node_modules/.pnpm/@radix-ui_react-portal@1.1.9_@types_react-dom@19.2.2_@types_react@19.2.2__@types_react@_478b3d5dd4afab1a3dcce7ed1748cb95/node_modules/@radix-ui/react-portal/dist/index.cjs +37 -0
  43. package/dist/node_modules/.pnpm/@radix-ui_react-portal@1.1.9_@types_react-dom@19.2.2_@types_react@19.2.2__@types_react@_478b3d5dd4afab1a3dcce7ed1748cb95/node_modules/@radix-ui/react-portal/dist/index.mjs +18 -0
  44. package/dist/node_modules/.pnpm/@radix-ui_react-primitive@2.1.3_@types_react-dom@19.2.2_@types_react@19.2.2__@types_rea_bdc15f10281778271ffcbe8dd3cd491e/node_modules/@radix-ui/react-primitive/dist/index.cjs +61 -0
  45. package/dist/node_modules/.pnpm/@radix-ui_react-primitive@2.1.3_@types_react-dom@19.2.2_@types_react@19.2.2__@types_rea_bdc15f10281778271ffcbe8dd3cd491e/node_modules/@radix-ui/react-primitive/dist/index.mjs +43 -0
  46. package/dist/node_modules/.pnpm/@radix-ui_react-select@2.2.6_@types_react-dom@19.2.2_@types_react@19.2.2__@types_react@_802c3d414c85063bee785fcc98a39c07/node_modules/@radix-ui/react-select/dist/index.cjs +1198 -0
  47. package/dist/node_modules/.pnpm/@radix-ui_react-select@2.2.6_@types_react-dom@19.2.2_@types_react@19.2.2__@types_react@_802c3d414c85063bee785fcc98a39c07/node_modules/@radix-ui/react-select/dist/index.mjs +1154 -0
  48. package/dist/node_modules/.pnpm/@radix-ui_react-use-callback-ref@1.1.1_@types_react@19.2.2_react@19.2.0/node_modules/@radix-ui/react-use-callback-ref/dist/index.cjs +28 -0
  49. package/dist/node_modules/.pnpm/@radix-ui_react-use-callback-ref@1.1.1_@types_react@19.2.2_react@19.2.0/node_modules/@radix-ui/react-use-callback-ref/dist/index.mjs +12 -0
  50. package/dist/node_modules/.pnpm/@radix-ui_react-use-controllable-state@1.2.2_@types_react@19.2.2_react@19.2.0/node_modules/@radix-ui/react-use-controllable-state/dist/index.cjs +86 -0
  51. package/dist/node_modules/.pnpm/@radix-ui_react-use-controllable-state@1.2.2_@types_react@19.2.2_react@19.2.0/node_modules/@radix-ui/react-use-controllable-state/dist/index.mjs +70 -0
  52. package/dist/node_modules/.pnpm/@radix-ui_react-use-escape-keydown@1.1.1_@types_react@19.2.2_react@19.2.0/node_modules/@radix-ui/react-use-escape-keydown/dist/index.cjs +34 -0
  53. package/dist/node_modules/.pnpm/@radix-ui_react-use-escape-keydown@1.1.1_@types_react@19.2.2_react@19.2.0/node_modules/@radix-ui/react-use-escape-keydown/dist/index.mjs +18 -0
  54. package/dist/node_modules/.pnpm/@radix-ui_react-use-layout-effect@1.1.1_@types_react@19.2.2_react@19.2.0/node_modules/@radix-ui/react-use-layout-effect/dist/index.cjs +23 -0
  55. package/dist/node_modules/.pnpm/@radix-ui_react-use-layout-effect@1.1.1_@types_react@19.2.2_react@19.2.0/node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs +7 -0
  56. package/dist/node_modules/.pnpm/@radix-ui_react-use-previous@1.1.1_@types_react@19.2.2_react@19.2.0/node_modules/@radix-ui/react-use-previous/dist/index.cjs +31 -0
  57. package/dist/node_modules/.pnpm/@radix-ui_react-use-previous@1.1.1_@types_react@19.2.2_react@19.2.0/node_modules/@radix-ui/react-use-previous/dist/index.mjs +15 -0
  58. package/dist/node_modules/.pnpm/@radix-ui_react-use-size@1.1.1_@types_react@19.2.2_react@19.2.0/node_modules/@radix-ui/react-use-size/dist/index.cjs +56 -0
  59. package/dist/node_modules/.pnpm/@radix-ui_react-use-size@1.1.1_@types_react@19.2.2_react@19.2.0/node_modules/@radix-ui/react-use-size/dist/index.mjs +40 -0
  60. package/dist/node_modules/.pnpm/@radix-ui_react-visually-hidden@1.2.3_@types_react-dom@19.2.2_@types_react@19.2.2__@typ_a84e98a44624c31e835a98d4b8b0c30d/node_modules/@radix-ui/react-visually-hidden/dist/index.cjs +51 -0
  61. package/dist/node_modules/.pnpm/@radix-ui_react-visually-hidden@1.2.3_@types_react-dom@19.2.2_@types_react@19.2.2__@typ_a84e98a44624c31e835a98d4b8b0c30d/node_modules/@radix-ui/react-visually-hidden/dist/index.mjs +34 -0
  62. package/dist/node_modules/.pnpm/aria-hidden@1.2.6/node_modules/aria-hidden/dist/es2015/index.cjs +139 -0
  63. package/dist/node_modules/.pnpm/aria-hidden@1.2.6/node_modules/aria-hidden/dist/es2015/index.mjs +137 -0
  64. package/dist/node_modules/.pnpm/embla-carousel-react@8.6.0_react@19.2.0/node_modules/embla-carousel-react/esm/embla-carousel-react.esm.cjs +39 -0
  65. package/dist/node_modules/.pnpm/embla-carousel-react@8.6.0_react@19.2.0/node_modules/embla-carousel-react/esm/embla-carousel-react.esm.mjs +37 -0
  66. package/dist/node_modules/.pnpm/embla-carousel-reactive-utils@8.6.0_embla-carousel@8.6.0/node_modules/embla-carousel-reactive-utils/esm/embla-carousel-reactive-utils.esm.cjs +43 -0
  67. package/dist/node_modules/.pnpm/embla-carousel-reactive-utils@8.6.0_embla-carousel@8.6.0/node_modules/embla-carousel-reactive-utils/esm/embla-carousel-reactive-utils.esm.mjs +38 -0
  68. package/dist/node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/esm/embla-carousel.esm.cjs +1671 -0
  69. package/dist/node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/esm/embla-carousel.esm.mjs +1669 -0
  70. package/dist/node_modules/.pnpm/get-nonce@1.0.1/node_modules/get-nonce/dist/es2015/index.cjs +10 -0
  71. package/dist/node_modules/.pnpm/get-nonce@1.0.1/node_modules/get-nonce/dist/es2015/index.mjs +8 -0
  72. package/dist/node_modules/.pnpm/react-remove-scroll-bar@2.3.8_@types_react@19.2.2_react@19.2.0/node_modules/react-remove-scroll-bar/dist/es2015/component.cjs +74 -0
  73. package/dist/node_modules/.pnpm/react-remove-scroll-bar@2.3.8_@types_react@19.2.2_react@19.2.0/node_modules/react-remove-scroll-bar/dist/es2015/component.mjs +56 -0
  74. package/dist/node_modules/.pnpm/react-remove-scroll-bar@2.3.8_@types_react@19.2.2_react@19.2.0/node_modules/react-remove-scroll-bar/dist/es2015/constants.cjs +15 -0
  75. package/dist/node_modules/.pnpm/react-remove-scroll-bar@2.3.8_@types_react@19.2.2_react@19.2.0/node_modules/react-remove-scroll-bar/dist/es2015/constants.mjs +10 -0
  76. package/dist/node_modules/.pnpm/react-remove-scroll-bar@2.3.8_@types_react@19.2.2_react@19.2.0/node_modules/react-remove-scroll-bar/dist/es2015/utils.cjs +34 -0
  77. package/dist/node_modules/.pnpm/react-remove-scroll-bar@2.3.8_@types_react@19.2.2_react@19.2.0/node_modules/react-remove-scroll-bar/dist/es2015/utils.mjs +31 -0
  78. package/dist/node_modules/.pnpm/react-remove-scroll@2.7.1_@types_react@19.2.2_react@19.2.0/node_modules/react-remove-scroll/dist/es2015/Combination.cjs +25 -0
  79. package/dist/node_modules/.pnpm/react-remove-scroll@2.7.1_@types_react@19.2.2_react@19.2.0/node_modules/react-remove-scroll/dist/es2015/Combination.mjs +9 -0
  80. package/dist/node_modules/.pnpm/react-remove-scroll@2.7.1_@types_react@19.2.2_react@19.2.0/node_modules/react-remove-scroll/dist/es2015/SideEffect.cjs +178 -0
  81. package/dist/node_modules/.pnpm/react-remove-scroll@2.7.1_@types_react@19.2.2_react@19.2.0/node_modules/react-remove-scroll/dist/es2015/SideEffect.mjs +160 -0
  82. package/dist/node_modules/.pnpm/react-remove-scroll@2.7.1_@types_react@19.2.2_react@19.2.0/node_modules/react-remove-scroll/dist/es2015/UI.cjs +54 -0
  83. package/dist/node_modules/.pnpm/react-remove-scroll@2.7.1_@types_react@19.2.2_react@19.2.0/node_modules/react-remove-scroll/dist/es2015/UI.mjs +38 -0
  84. package/dist/node_modules/.pnpm/react-remove-scroll@2.7.1_@types_react@19.2.2_react@19.2.0/node_modules/react-remove-scroll/dist/es2015/aggresiveCapture.cjs +23 -0
  85. package/dist/node_modules/.pnpm/react-remove-scroll@2.7.1_@types_react@19.2.2_react@19.2.0/node_modules/react-remove-scroll/dist/es2015/aggresiveCapture.mjs +21 -0
  86. package/dist/node_modules/.pnpm/react-remove-scroll@2.7.1_@types_react@19.2.2_react@19.2.0/node_modules/react-remove-scroll/dist/es2015/handleScroll.cjs +113 -0
  87. package/dist/node_modules/.pnpm/react-remove-scroll@2.7.1_@types_react@19.2.2_react@19.2.0/node_modules/react-remove-scroll/dist/es2015/handleScroll.mjs +110 -0
  88. package/dist/node_modules/.pnpm/react-remove-scroll@2.7.1_@types_react@19.2.2_react@19.2.0/node_modules/react-remove-scroll/dist/es2015/medium.cjs +7 -0
  89. package/dist/node_modules/.pnpm/react-remove-scroll@2.7.1_@types_react@19.2.2_react@19.2.0/node_modules/react-remove-scroll/dist/es2015/medium.mjs +5 -0
  90. package/dist/node_modules/.pnpm/react-remove-scroll@2.7.1_@types_react@19.2.2_react@19.2.0/node_modules/react-remove-scroll/dist/es2015/sidecar.cjs +9 -0
  91. package/dist/node_modules/.pnpm/react-remove-scroll@2.7.1_@types_react@19.2.2_react@19.2.0/node_modules/react-remove-scroll/dist/es2015/sidecar.mjs +7 -0
  92. package/dist/node_modules/.pnpm/react-style-singleton@2.2.3_@types_react@19.2.2_react@19.2.0/node_modules/react-style-singleton/dist/es2015/component.cjs +21 -0
  93. package/dist/node_modules/.pnpm/react-style-singleton@2.2.3_@types_react@19.2.2_react@19.2.0/node_modules/react-style-singleton/dist/es2015/component.mjs +19 -0
  94. package/dist/node_modules/.pnpm/react-style-singleton@2.2.3_@types_react@19.2.2_react@19.2.0/node_modules/react-style-singleton/dist/es2015/hook.cjs +41 -0
  95. package/dist/node_modules/.pnpm/react-style-singleton@2.2.3_@types_react@19.2.2_react@19.2.0/node_modules/react-style-singleton/dist/es2015/hook.mjs +25 -0
  96. package/dist/node_modules/.pnpm/react-style-singleton@2.2.3_@types_react@19.2.2_react@19.2.0/node_modules/react-style-singleton/dist/es2015/singleton.cjs +53 -0
  97. package/dist/node_modules/.pnpm/react-style-singleton@2.2.3_@types_react@19.2.2_react@19.2.0/node_modules/react-style-singleton/dist/es2015/singleton.mjs +51 -0
  98. package/dist/node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.cjs +59 -0
  99. package/dist/node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs +56 -0
  100. package/dist/node_modules/.pnpm/use-callback-ref@1.3.3_@types_react@19.2.2_react@19.2.0/node_modules/use-callback-ref/dist/es2015/assignRef.cjs +26 -0
  101. package/dist/node_modules/.pnpm/use-callback-ref@1.3.3_@types_react@19.2.2_react@19.2.0/node_modules/use-callback-ref/dist/es2015/assignRef.mjs +24 -0
  102. package/dist/node_modules/.pnpm/use-callback-ref@1.3.3_@types_react@19.2.2_react@19.2.0/node_modules/use-callback-ref/dist/es2015/useMergeRef.cjs +64 -0
  103. package/dist/node_modules/.pnpm/use-callback-ref@1.3.3_@types_react@19.2.2_react@19.2.0/node_modules/use-callback-ref/dist/es2015/useMergeRef.mjs +48 -0
  104. package/dist/node_modules/.pnpm/use-callback-ref@1.3.3_@types_react@19.2.2_react@19.2.0/node_modules/use-callback-ref/dist/es2015/useRef.cjs +44 -0
  105. package/dist/node_modules/.pnpm/use-callback-ref@1.3.3_@types_react@19.2.2_react@19.2.0/node_modules/use-callback-ref/dist/es2015/useRef.mjs +42 -0
  106. package/dist/node_modules/.pnpm/use-sidecar@1.1.3_@types_react@19.2.2_react@19.2.0/node_modules/use-sidecar/dist/es2015/exports.cjs +37 -0
  107. package/dist/node_modules/.pnpm/use-sidecar@1.1.3_@types_react@19.2.2_react@19.2.0/node_modules/use-sidecar/dist/es2015/exports.mjs +21 -0
  108. package/dist/node_modules/.pnpm/use-sidecar@1.1.3_@types_react@19.2.2_react@19.2.0/node_modules/use-sidecar/dist/es2015/medium.cjs +79 -0
  109. package/dist/node_modules/.pnpm/use-sidecar@1.1.3_@types_react@19.2.2_react@19.2.0/node_modules/use-sidecar/dist/es2015/medium.mjs +77 -0
  110. package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/forms/image-field.cjs +3 -3
  111. package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/forms/image-field.mjs +3 -3
  112. package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/forms/post-forms.cjs +5 -5
  113. package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/forms/post-forms.mjs +5 -5
  114. package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/forms/tags-multiselect.cjs +2 -6
  115. package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/forms/tags-multiselect.mjs +1 -1
  116. package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/loading/form-page-skeleton.cjs +1 -1
  117. package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/loading/form-page-skeleton.mjs +1 -1
  118. package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/loading/list-page-skeleton.cjs +1 -1
  119. package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/loading/list-page-skeleton.mjs +1 -1
  120. package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/loading/page-header-skeleton.cjs +1 -1
  121. package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/loading/page-header-skeleton.mjs +1 -1
  122. package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/loading/post-card-skeleton.cjs +2 -2
  123. package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/loading/post-card-skeleton.mjs +2 -2
  124. package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/loading/post-page-skeleton.cjs +1 -1
  125. package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/loading/post-page-skeleton.mjs +1 -1
  126. package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/pages/post-page.internal.cjs +1 -1
  127. package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/pages/post-page.internal.mjs +1 -1
  128. package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/shared/empty-list.cjs +1 -1
  129. package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/shared/empty-list.mjs +1 -1
  130. package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/shared/on-this-page.cjs +1 -1
  131. package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/shared/on-this-page.mjs +1 -1
  132. package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/shared/post-card.cjs +2 -2
  133. package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/shared/post-card.mjs +2 -2
  134. package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/shared/post-navigation.cjs +1 -1
  135. package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/shared/post-navigation.mjs +1 -1
  136. package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/shared/posts-list.cjs +1 -1
  137. package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/shared/posts-list.mjs +1 -1
  138. package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/shared/recent-posts-carousel.cjs +1 -1
  139. package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/shared/recent-posts-carousel.mjs +1 -1
  140. package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/shared/search-modal.cjs +1 -1
  141. package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/shared/search-modal.mjs +1 -1
  142. package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/shared/tags-list.cjs +1 -1
  143. package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/shared/tags-list.mjs +1 -1
  144. package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/hooks/blog-hooks.cjs +1 -1
  145. package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/hooks/blog-hooks.mjs +1 -1
  146. package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/plugin.cjs +1 -1
  147. package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/plugin.mjs +1 -1
  148. package/dist/packages/ui/src/components/badge.cjs +42 -0
  149. package/dist/packages/ui/src/components/badge.mjs +39 -0
  150. package/dist/packages/ui/src/components/button.cjs +54 -0
  151. package/dist/packages/ui/src/components/button.mjs +51 -0
  152. package/dist/packages/ui/src/components/card.cjs +67 -0
  153. package/dist/packages/ui/src/components/card.mjs +61 -0
  154. package/dist/packages/ui/src/components/carousel.cjs +215 -0
  155. package/dist/packages/ui/src/components/carousel.mjs +195 -0
  156. package/dist/packages/ui/src/components/command.cjs +142 -0
  157. package/dist/packages/ui/src/components/command.mjs +134 -0
  158. package/dist/packages/ui/src/components/dialog.cjs +127 -0
  159. package/dist/packages/ui/src/components/dialog.mjs +105 -0
  160. package/dist/packages/ui/src/components/empty.cjs +76 -0
  161. package/dist/packages/ui/src/components/empty.mjs +71 -0
  162. package/dist/packages/ui/src/components/form.cjs +133 -0
  163. package/dist/packages/ui/src/components/form.mjs +110 -0
  164. package/dist/packages/ui/src/components/input.cjs +23 -0
  165. package/dist/packages/ui/src/components/input.mjs +21 -0
  166. package/dist/packages/ui/src/components/label.cjs +39 -0
  167. package/dist/packages/ui/src/components/label.mjs +23 -0
  168. package/dist/packages/ui/src/components/multi-select.cjs +555 -0
  169. package/dist/packages/ui/src/components/multi-select.mjs +540 -0
  170. package/dist/packages/ui/src/components/select.cjs +140 -0
  171. package/dist/packages/ui/src/components/select.mjs +132 -0
  172. package/dist/packages/ui/src/components/skeleton.cjs +17 -0
  173. package/dist/packages/ui/src/components/skeleton.mjs +15 -0
  174. package/dist/packages/ui/src/components/switch.cjs +48 -0
  175. package/dist/packages/ui/src/components/switch.mjs +32 -0
  176. package/dist/packages/ui/src/components/textarea.cjs +20 -0
  177. package/dist/packages/ui/src/components/textarea.mjs +18 -0
  178. package/dist/packages/ui/src/hooks/use-debounce.cjs +18 -0
  179. package/dist/packages/ui/src/hooks/use-debounce.mjs +16 -0
  180. package/dist/packages/ui/src/lib/utils.cjs +10 -0
  181. package/dist/packages/ui/src/lib/utils.mjs +8 -0
  182. package/dist/plugins/blog/api/index.cjs +1 -1
  183. package/dist/plugins/blog/api/index.mjs +1 -1
  184. package/dist/plugins/blog/client/components/index.cjs +4 -4
  185. package/dist/plugins/blog/client/components/index.mjs +4 -4
  186. package/dist/plugins/blog/client/hooks/index.cjs +1 -1
  187. package/dist/plugins/blog/client/hooks/index.mjs +1 -1
  188. package/dist/plugins/blog/client/index.cjs +1 -1
  189. package/dist/plugins/blog/client/index.d.cts +164 -177
  190. package/dist/plugins/blog/client/index.d.mts +164 -177
  191. package/dist/plugins/blog/client/index.d.ts +164 -177
  192. package/dist/plugins/blog/client/index.mjs +1 -1
  193. package/dist/plugins/client/index.cjs +1 -1
  194. package/dist/plugins/client/index.d.cts +8 -5
  195. package/dist/plugins/client/index.d.mts +8 -5
  196. package/dist/plugins/client/index.d.ts +8 -5
  197. package/dist/plugins/client/index.mjs +1 -1
  198. package/package.json +5 -5
  199. package/src/plugins/client/index.ts +14 -6
  200. /package/dist/{client → packages/better-stack/src/client}/components/compose.cjs +0 -0
  201. /package/dist/{client → packages/better-stack/src/client}/components/compose.mjs +0 -0
  202. /package/dist/{client → packages/better-stack/src/client}/components/error-boundary.cjs +0 -0
  203. /package/dist/{client → packages/better-stack/src/client}/components/error-boundary.mjs +0 -0
  204. /package/dist/{client → packages/better-stack/src/client}/meta-utils.cjs +0 -0
  205. /package/dist/{client → packages/better-stack/src/client}/meta-utils.mjs +0 -0
  206. /package/dist/{client → packages/better-stack/src/client}/path-utils.cjs +0 -0
  207. /package/dist/{client → packages/better-stack/src/client}/path-utils.mjs +0 -0
  208. /package/dist/{client → packages/better-stack/src/client}/sitemap-utils.cjs +0 -0
  209. /package/dist/{client → packages/better-stack/src/client}/sitemap-utils.mjs +0 -0
  210. /package/dist/{context → packages/better-stack/src/context}/provider.cjs +0 -0
  211. /package/dist/{context → packages/better-stack/src/context}/provider.mjs +0 -0
  212. /package/dist/{plugins → packages/better-stack/src/plugins}/blog/api/plugin.cjs +0 -0
  213. /package/dist/{plugins → packages/better-stack/src/plugins}/blog/api/plugin.mjs +0 -0
  214. /package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/forms/markdown-editor.cjs +0 -0
  215. /package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/forms/markdown-editor.mjs +0 -0
  216. /package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/loading/index.cjs +0 -0
  217. /package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/loading/index.mjs +0 -0
  218. /package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/pages/404-page.cjs +0 -0
  219. /package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/pages/404-page.mjs +0 -0
  220. /package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/pages/edit-post-page.cjs +0 -0
  221. /package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/pages/edit-post-page.internal.cjs +0 -0
  222. /package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/pages/edit-post-page.internal.mjs +0 -0
  223. /package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/pages/edit-post-page.mjs +0 -0
  224. /package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/pages/home-page.cjs +0 -0
  225. /package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/pages/home-page.internal.cjs +0 -0
  226. /package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/pages/home-page.internal.mjs +0 -0
  227. /package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/pages/home-page.mjs +0 -0
  228. /package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/pages/new-post-page.cjs +0 -0
  229. /package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/pages/new-post-page.internal.cjs +0 -0
  230. /package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/pages/new-post-page.internal.mjs +0 -0
  231. /package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/pages/new-post-page.mjs +0 -0
  232. /package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/pages/post-page.cjs +0 -0
  233. /package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/pages/post-page.mjs +0 -0
  234. /package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/pages/tag-page.cjs +0 -0
  235. /package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/pages/tag-page.internal.cjs +0 -0
  236. /package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/pages/tag-page.internal.mjs +0 -0
  237. /package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/pages/tag-page.mjs +0 -0
  238. /package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/shared/better-blog-attribution.cjs +0 -0
  239. /package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/shared/better-blog-attribution.mjs +0 -0
  240. /package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/shared/default-error.cjs +0 -0
  241. /package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/shared/default-error.mjs +0 -0
  242. /package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/shared/defaults.cjs +0 -0
  243. /package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/shared/defaults.mjs +0 -0
  244. /package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/shared/error-placeholder.cjs +0 -0
  245. /package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/shared/error-placeholder.mjs +0 -0
  246. /package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/shared/highlight-text.cjs +0 -0
  247. /package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/shared/highlight-text.mjs +0 -0
  248. /package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/shared/markdown-content.cjs +0 -0
  249. /package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/shared/markdown-content.mjs +0 -0
  250. /package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/shared/page-header.cjs +0 -0
  251. /package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/shared/page-header.mjs +0 -0
  252. /package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/shared/page-layout.cjs +0 -0
  253. /package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/shared/page-layout.mjs +0 -0
  254. /package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/shared/page-wrapper.cjs +0 -0
  255. /package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/shared/page-wrapper.mjs +0 -0
  256. /package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/shared/search-input.cjs +0 -0
  257. /package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/shared/search-input.mjs +0 -0
  258. /package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/shared/use-route-lifecycle.cjs +0 -0
  259. /package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/components/shared/use-route-lifecycle.mjs +0 -0
  260. /package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/hooks/use-debounce.cjs +0 -0
  261. /package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/hooks/use-debounce.mjs +0 -0
  262. /package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/localization/blog-card.cjs +0 -0
  263. /package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/localization/blog-card.mjs +0 -0
  264. /package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/localization/blog-common.cjs +0 -0
  265. /package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/localization/blog-common.mjs +0 -0
  266. /package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/localization/blog-forms.cjs +0 -0
  267. /package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/localization/blog-forms.mjs +0 -0
  268. /package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/localization/blog-list.cjs +0 -0
  269. /package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/localization/blog-list.mjs +0 -0
  270. /package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/localization/blog-post.cjs +0 -0
  271. /package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/localization/blog-post.mjs +0 -0
  272. /package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/localization/index.cjs +0 -0
  273. /package/dist/{plugins → packages/better-stack/src/plugins}/blog/client/localization/index.mjs +0 -0
  274. /package/dist/{plugins → packages/better-stack/src/plugins}/blog/db.cjs +0 -0
  275. /package/dist/{plugins → packages/better-stack/src/plugins}/blog/db.mjs +0 -0
  276. /package/dist/{plugins → packages/better-stack/src/plugins}/blog/schemas.cjs +0 -0
  277. /package/dist/{plugins → packages/better-stack/src/plugins}/blog/schemas.mjs +0 -0
  278. /package/dist/{plugins → packages/better-stack/src/plugins}/blog/utils.cjs +0 -0
  279. /package/dist/{plugins → packages/better-stack/src/plugins}/blog/utils.mjs +0 -0
  280. /package/dist/{plugins → packages/better-stack/src/plugins}/utils.cjs +0 -0
  281. /package/dist/{plugins → packages/better-stack/src/plugins}/utils.mjs +0 -0
@@ -0,0 +1,1198 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ const React = require('react');
5
+ const ReactDOM = require('react-dom');
6
+ const index$i = require('../../../../../@radix-ui_number@1.1.1/node_modules/@radix-ui/number/dist/index.cjs');
7
+ const index$8 = require('../../../../../@radix-ui_primitive@1.1.3/node_modules/@radix-ui/primitive/dist/index.cjs');
8
+ const index$5 = require('../../../../../@radix-ui_react-collection@1.1.7_@types_react-dom@19.2.2_@types_react@19.2.2__@types_re_6d7c277722b3619c9ee7e64e9a822c45/node_modules/@radix-ui/react-collection/dist/index.cjs');
9
+ const index$6 = require('../../../../../@radix-ui_react-compose-refs@1.1.2_@types_react@19.2.2_react@19.2.0/node_modules/@radix-ui/react-compose-refs/dist/index.cjs');
10
+ const index$3 = require('../../../../../@radix-ui_react-context@1.1.2_@types_react@19.2.2_react@19.2.0/node_modules/@radix-ui/react-context/dist/index.cjs');
11
+ const index$1 = require('../../../../../@radix-ui_react-direction@1.1.1_@types_react@19.2.2_react@19.2.0/node_modules/@radix-ui/react-direction/dist/index.cjs');
12
+ const index$h = require('../../../../../@radix-ui_react-dismissable-layer@1.1.11_@types_react-dom@19.2.2_@types_react@19.2.2__@_ca5522e5d45d4722cb9eb5ce53defa61/node_modules/@radix-ui/react-dismissable-layer/dist/index.cjs');
13
+ const index$f = require('../../../../../@radix-ui_react-focus-guards@1.1.3_@types_react@19.2.2_react@19.2.0/node_modules/@radix-ui/react-focus-guards/dist/index.cjs');
14
+ const index$g = require('../../../../../@radix-ui_react-focus-scope@1.1.7_@types_react-dom@19.2.2_@types_react@19.2.2__@types_r_93de389b3f622f9f764acc8e59ec80c0/node_modules/@radix-ui/react-focus-scope/dist/index.cjs');
15
+ const index$4 = require('../../../../../@radix-ui_react-id@1.1.1_@types_react@19.2.2_react@19.2.0/node_modules/@radix-ui/react-id/dist/index.cjs');
16
+ const index = require('../../../../../@radix-ui_react-popper@1.2.8_@types_react-dom@19.2.2_@types_react@19.2.2__@types_react@_d6285b8269ea5d6b59b300f5be279a0c/node_modules/@radix-ui/react-popper/dist/index.cjs');
17
+ const index$a = require('../../../../../@radix-ui_react-portal@1.1.9_@types_react-dom@19.2.2_@types_react@19.2.2__@types_react@_478b3d5dd4afab1a3dcce7ed1748cb95/node_modules/@radix-ui/react-portal/dist/index.cjs');
18
+ const index$7 = require('../../../../../@radix-ui_react-primitive@2.1.3_@types_react-dom@19.2.2_@types_react@19.2.2__@types_rea_bdc15f10281778271ffcbe8dd3cd491e/node_modules/@radix-ui/react-primitive/dist/index.cjs');
19
+ const reactSlot = require('@radix-ui/react-slot');
20
+ const index$d = require('../../../../../@radix-ui_react-use-callback-ref@1.1.1_@types_react@19.2.2_react@19.2.0/node_modules/@radix-ui/react-use-callback-ref/dist/index.cjs');
21
+ const index$2 = require('../../../../../@radix-ui_react-use-controllable-state@1.2.2_@types_react@19.2.2_react@19.2.0/node_modules/@radix-ui/react-use-controllable-state/dist/index.cjs');
22
+ const index$9 = require('../../../../../@radix-ui_react-use-layout-effect@1.1.1_@types_react@19.2.2_react@19.2.0/node_modules/@radix-ui/react-use-layout-effect/dist/index.cjs');
23
+ const index$b = require('../../../../../@radix-ui_react-use-previous@1.1.1_@types_react@19.2.2_react@19.2.0/node_modules/@radix-ui/react-use-previous/dist/index.cjs');
24
+ const index$c = require('../../../../../@radix-ui_react-visually-hidden@1.2.3_@types_react-dom@19.2.2_@types_react@19.2.2__@typ_a84e98a44624c31e835a98d4b8b0c30d/node_modules/@radix-ui/react-visually-hidden/dist/index.cjs');
25
+ const index$e = require('../../../../../aria-hidden@1.2.6/node_modules/aria-hidden/dist/es2015/index.cjs');
26
+ const Combination = require('../../../../../react-remove-scroll@2.7.1_@types_react@19.2.2_react@19.2.0/node_modules/react-remove-scroll/dist/es2015/Combination.cjs');
27
+ const jsxRuntime = require('react/jsx-runtime');
28
+
29
+ function _interopNamespaceCompat(e) {
30
+ if (e && typeof e === 'object' && 'default' in e) return e;
31
+ const n = Object.create(null);
32
+ if (e) {
33
+ for (const k in e) {
34
+ n[k] = e[k];
35
+ }
36
+ }
37
+ n.default = e;
38
+ return n;
39
+ }
40
+
41
+ const React__namespace = /*#__PURE__*/_interopNamespaceCompat(React);
42
+ const ReactDOM__namespace = /*#__PURE__*/_interopNamespaceCompat(ReactDOM);
43
+
44
+ var OPEN_KEYS = [" ", "Enter", "ArrowUp", "ArrowDown"];
45
+ var SELECTION_KEYS = [" ", "Enter"];
46
+ var SELECT_NAME = "Select";
47
+ var [Collection, useCollection, createCollectionScope] = index$5.createCollection(SELECT_NAME);
48
+ var [createSelectContext] = index$3.createContextScope(SELECT_NAME, [
49
+ createCollectionScope,
50
+ index.createPopperScope
51
+ ]);
52
+ var usePopperScope = index.createPopperScope();
53
+ var [SelectProvider, useSelectContext] = createSelectContext(SELECT_NAME);
54
+ var [SelectNativeOptionsProvider, useSelectNativeOptionsContext] = createSelectContext(SELECT_NAME);
55
+ var Select = (props) => {
56
+ const {
57
+ __scopeSelect,
58
+ children,
59
+ open: openProp,
60
+ defaultOpen,
61
+ onOpenChange,
62
+ value: valueProp,
63
+ defaultValue,
64
+ onValueChange,
65
+ dir,
66
+ name,
67
+ autoComplete,
68
+ disabled,
69
+ required,
70
+ form
71
+ } = props;
72
+ const popperScope = usePopperScope(__scopeSelect);
73
+ const [trigger, setTrigger] = React__namespace.useState(null);
74
+ const [valueNode, setValueNode] = React__namespace.useState(null);
75
+ const [valueNodeHasChildren, setValueNodeHasChildren] = React__namespace.useState(false);
76
+ const direction = index$1.useDirection(dir);
77
+ const [open, setOpen] = index$2.useControllableState({
78
+ prop: openProp,
79
+ defaultProp: defaultOpen ?? false,
80
+ onChange: onOpenChange,
81
+ caller: SELECT_NAME
82
+ });
83
+ const [value, setValue] = index$2.useControllableState({
84
+ prop: valueProp,
85
+ defaultProp: defaultValue,
86
+ onChange: onValueChange,
87
+ caller: SELECT_NAME
88
+ });
89
+ const triggerPointerDownPosRef = React__namespace.useRef(null);
90
+ const isFormControl = trigger ? form || !!trigger.closest("form") : true;
91
+ const [nativeOptionsSet, setNativeOptionsSet] = React__namespace.useState(/* @__PURE__ */ new Set());
92
+ const nativeSelectKey = Array.from(nativeOptionsSet).map((option) => option.props.value).join(";");
93
+ return /* @__PURE__ */ jsxRuntime.jsx(index.Root, { ...popperScope, children: /* @__PURE__ */ jsxRuntime.jsxs(
94
+ SelectProvider,
95
+ {
96
+ required,
97
+ scope: __scopeSelect,
98
+ trigger,
99
+ onTriggerChange: setTrigger,
100
+ valueNode,
101
+ onValueNodeChange: setValueNode,
102
+ valueNodeHasChildren,
103
+ onValueNodeHasChildrenChange: setValueNodeHasChildren,
104
+ contentId: index$4.useId(),
105
+ value,
106
+ onValueChange: setValue,
107
+ open,
108
+ onOpenChange: setOpen,
109
+ dir: direction,
110
+ triggerPointerDownPosRef,
111
+ disabled,
112
+ children: [
113
+ /* @__PURE__ */ jsxRuntime.jsx(Collection.Provider, { scope: __scopeSelect, children: /* @__PURE__ */ jsxRuntime.jsx(
114
+ SelectNativeOptionsProvider,
115
+ {
116
+ scope: props.__scopeSelect,
117
+ onNativeOptionAdd: React__namespace.useCallback((option) => {
118
+ setNativeOptionsSet((prev) => new Set(prev).add(option));
119
+ }, []),
120
+ onNativeOptionRemove: React__namespace.useCallback((option) => {
121
+ setNativeOptionsSet((prev) => {
122
+ const optionsSet = new Set(prev);
123
+ optionsSet.delete(option);
124
+ return optionsSet;
125
+ });
126
+ }, []),
127
+ children
128
+ }
129
+ ) }),
130
+ isFormControl ? /* @__PURE__ */ jsxRuntime.jsxs(
131
+ SelectBubbleInput,
132
+ {
133
+ "aria-hidden": true,
134
+ required,
135
+ tabIndex: -1,
136
+ name,
137
+ autoComplete,
138
+ value,
139
+ onChange: (event) => setValue(event.target.value),
140
+ disabled,
141
+ form,
142
+ children: [
143
+ value === void 0 ? /* @__PURE__ */ jsxRuntime.jsx("option", { value: "" }) : null,
144
+ Array.from(nativeOptionsSet)
145
+ ]
146
+ },
147
+ nativeSelectKey
148
+ ) : null
149
+ ]
150
+ }
151
+ ) });
152
+ };
153
+ Select.displayName = SELECT_NAME;
154
+ var TRIGGER_NAME = "SelectTrigger";
155
+ var SelectTrigger = React__namespace.forwardRef(
156
+ (props, forwardedRef) => {
157
+ const { __scopeSelect, disabled = false, ...triggerProps } = props;
158
+ const popperScope = usePopperScope(__scopeSelect);
159
+ const context = useSelectContext(TRIGGER_NAME, __scopeSelect);
160
+ const isDisabled = context.disabled || disabled;
161
+ const composedRefs = index$6.useComposedRefs(forwardedRef, context.onTriggerChange);
162
+ const getItems = useCollection(__scopeSelect);
163
+ const pointerTypeRef = React__namespace.useRef("touch");
164
+ const [searchRef, handleTypeaheadSearch, resetTypeahead] = useTypeaheadSearch((search) => {
165
+ const enabledItems = getItems().filter((item) => !item.disabled);
166
+ const currentItem = enabledItems.find((item) => item.value === context.value);
167
+ const nextItem = findNextItem(enabledItems, search, currentItem);
168
+ if (nextItem !== void 0) {
169
+ context.onValueChange(nextItem.value);
170
+ }
171
+ });
172
+ const handleOpen = (pointerEvent) => {
173
+ if (!isDisabled) {
174
+ context.onOpenChange(true);
175
+ resetTypeahead();
176
+ }
177
+ if (pointerEvent) {
178
+ context.triggerPointerDownPosRef.current = {
179
+ x: Math.round(pointerEvent.pageX),
180
+ y: Math.round(pointerEvent.pageY)
181
+ };
182
+ }
183
+ };
184
+ return /* @__PURE__ */ jsxRuntime.jsx(index.Anchor, { asChild: true, ...popperScope, children: /* @__PURE__ */ jsxRuntime.jsx(
185
+ index$7.Primitive.button,
186
+ {
187
+ type: "button",
188
+ role: "combobox",
189
+ "aria-controls": context.contentId,
190
+ "aria-expanded": context.open,
191
+ "aria-required": context.required,
192
+ "aria-autocomplete": "none",
193
+ dir: context.dir,
194
+ "data-state": context.open ? "open" : "closed",
195
+ disabled: isDisabled,
196
+ "data-disabled": isDisabled ? "" : void 0,
197
+ "data-placeholder": shouldShowPlaceholder(context.value) ? "" : void 0,
198
+ ...triggerProps,
199
+ ref: composedRefs,
200
+ onClick: index$8.composeEventHandlers(triggerProps.onClick, (event) => {
201
+ event.currentTarget.focus();
202
+ if (pointerTypeRef.current !== "mouse") {
203
+ handleOpen(event);
204
+ }
205
+ }),
206
+ onPointerDown: index$8.composeEventHandlers(triggerProps.onPointerDown, (event) => {
207
+ pointerTypeRef.current = event.pointerType;
208
+ const target = event.target;
209
+ if (target.hasPointerCapture(event.pointerId)) {
210
+ target.releasePointerCapture(event.pointerId);
211
+ }
212
+ if (event.button === 0 && event.ctrlKey === false && event.pointerType === "mouse") {
213
+ handleOpen(event);
214
+ event.preventDefault();
215
+ }
216
+ }),
217
+ onKeyDown: index$8.composeEventHandlers(triggerProps.onKeyDown, (event) => {
218
+ const isTypingAhead = searchRef.current !== "";
219
+ const isModifierKey = event.ctrlKey || event.altKey || event.metaKey;
220
+ if (!isModifierKey && event.key.length === 1) handleTypeaheadSearch(event.key);
221
+ if (isTypingAhead && event.key === " ") return;
222
+ if (OPEN_KEYS.includes(event.key)) {
223
+ handleOpen();
224
+ event.preventDefault();
225
+ }
226
+ })
227
+ }
228
+ ) });
229
+ }
230
+ );
231
+ SelectTrigger.displayName = TRIGGER_NAME;
232
+ var VALUE_NAME = "SelectValue";
233
+ var SelectValue = React__namespace.forwardRef(
234
+ (props, forwardedRef) => {
235
+ const { __scopeSelect, className, style, children, placeholder = "", ...valueProps } = props;
236
+ const context = useSelectContext(VALUE_NAME, __scopeSelect);
237
+ const { onValueNodeHasChildrenChange } = context;
238
+ const hasChildren = children !== void 0;
239
+ const composedRefs = index$6.useComposedRefs(forwardedRef, context.onValueNodeChange);
240
+ index$9.useLayoutEffect(() => {
241
+ onValueNodeHasChildrenChange(hasChildren);
242
+ }, [onValueNodeHasChildrenChange, hasChildren]);
243
+ return /* @__PURE__ */ jsxRuntime.jsx(
244
+ index$7.Primitive.span,
245
+ {
246
+ ...valueProps,
247
+ ref: composedRefs,
248
+ style: { pointerEvents: "none" },
249
+ children: shouldShowPlaceholder(context.value) ? /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: placeholder }) : children
250
+ }
251
+ );
252
+ }
253
+ );
254
+ SelectValue.displayName = VALUE_NAME;
255
+ var ICON_NAME = "SelectIcon";
256
+ var SelectIcon = React__namespace.forwardRef(
257
+ (props, forwardedRef) => {
258
+ const { __scopeSelect, children, ...iconProps } = props;
259
+ return /* @__PURE__ */ jsxRuntime.jsx(index$7.Primitive.span, { "aria-hidden": true, ...iconProps, ref: forwardedRef, children: children || "\u25BC" });
260
+ }
261
+ );
262
+ SelectIcon.displayName = ICON_NAME;
263
+ var PORTAL_NAME = "SelectPortal";
264
+ var SelectPortal = (props) => {
265
+ return /* @__PURE__ */ jsxRuntime.jsx(index$a.Portal, { asChild: true, ...props });
266
+ };
267
+ SelectPortal.displayName = PORTAL_NAME;
268
+ var CONTENT_NAME = "SelectContent";
269
+ var SelectContent = React__namespace.forwardRef(
270
+ (props, forwardedRef) => {
271
+ const context = useSelectContext(CONTENT_NAME, props.__scopeSelect);
272
+ const [fragment, setFragment] = React__namespace.useState();
273
+ index$9.useLayoutEffect(() => {
274
+ setFragment(new DocumentFragment());
275
+ }, []);
276
+ if (!context.open) {
277
+ const frag = fragment;
278
+ return frag ? ReactDOM__namespace.createPortal(
279
+ /* @__PURE__ */ jsxRuntime.jsx(SelectContentProvider, { scope: props.__scopeSelect, children: /* @__PURE__ */ jsxRuntime.jsx(Collection.Slot, { scope: props.__scopeSelect, children: /* @__PURE__ */ jsxRuntime.jsx("div", { children: props.children }) }) }),
280
+ frag
281
+ ) : null;
282
+ }
283
+ return /* @__PURE__ */ jsxRuntime.jsx(SelectContentImpl, { ...props, ref: forwardedRef });
284
+ }
285
+ );
286
+ SelectContent.displayName = CONTENT_NAME;
287
+ var CONTENT_MARGIN = 10;
288
+ var [SelectContentProvider, useSelectContentContext] = createSelectContext(CONTENT_NAME);
289
+ var CONTENT_IMPL_NAME = "SelectContentImpl";
290
+ var Slot = reactSlot.createSlot("SelectContent.RemoveScroll");
291
+ var SelectContentImpl = React__namespace.forwardRef(
292
+ (props, forwardedRef) => {
293
+ const {
294
+ __scopeSelect,
295
+ position = "item-aligned",
296
+ onCloseAutoFocus,
297
+ onEscapeKeyDown,
298
+ onPointerDownOutside,
299
+ //
300
+ // PopperContent props
301
+ side,
302
+ sideOffset,
303
+ align,
304
+ alignOffset,
305
+ arrowPadding,
306
+ collisionBoundary,
307
+ collisionPadding,
308
+ sticky,
309
+ hideWhenDetached,
310
+ avoidCollisions,
311
+ //
312
+ ...contentProps
313
+ } = props;
314
+ const context = useSelectContext(CONTENT_NAME, __scopeSelect);
315
+ const [content, setContent] = React__namespace.useState(null);
316
+ const [viewport, setViewport] = React__namespace.useState(null);
317
+ const composedRefs = index$6.useComposedRefs(forwardedRef, (node) => setContent(node));
318
+ const [selectedItem, setSelectedItem] = React__namespace.useState(null);
319
+ const [selectedItemText, setSelectedItemText] = React__namespace.useState(
320
+ null
321
+ );
322
+ const getItems = useCollection(__scopeSelect);
323
+ const [isPositioned, setIsPositioned] = React__namespace.useState(false);
324
+ const firstValidItemFoundRef = React__namespace.useRef(false);
325
+ React__namespace.useEffect(() => {
326
+ if (content) return index$e.hideOthers(content);
327
+ }, [content]);
328
+ index$f.useFocusGuards();
329
+ const focusFirst = React__namespace.useCallback(
330
+ (candidates) => {
331
+ const [firstItem, ...restItems] = getItems().map((item) => item.ref.current);
332
+ const [lastItem] = restItems.slice(-1);
333
+ const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement;
334
+ for (const candidate of candidates) {
335
+ if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;
336
+ candidate?.scrollIntoView({ block: "nearest" });
337
+ if (candidate === firstItem && viewport) viewport.scrollTop = 0;
338
+ if (candidate === lastItem && viewport) viewport.scrollTop = viewport.scrollHeight;
339
+ candidate?.focus();
340
+ if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT) return;
341
+ }
342
+ },
343
+ [getItems, viewport]
344
+ );
345
+ const focusSelectedItem = React__namespace.useCallback(
346
+ () => focusFirst([selectedItem, content]),
347
+ [focusFirst, selectedItem, content]
348
+ );
349
+ React__namespace.useEffect(() => {
350
+ if (isPositioned) {
351
+ focusSelectedItem();
352
+ }
353
+ }, [isPositioned, focusSelectedItem]);
354
+ const { onOpenChange, triggerPointerDownPosRef } = context;
355
+ React__namespace.useEffect(() => {
356
+ if (content) {
357
+ let pointerMoveDelta = { x: 0, y: 0 };
358
+ const handlePointerMove = (event) => {
359
+ pointerMoveDelta = {
360
+ x: Math.abs(Math.round(event.pageX) - (triggerPointerDownPosRef.current?.x ?? 0)),
361
+ y: Math.abs(Math.round(event.pageY) - (triggerPointerDownPosRef.current?.y ?? 0))
362
+ };
363
+ };
364
+ const handlePointerUp = (event) => {
365
+ if (pointerMoveDelta.x <= 10 && pointerMoveDelta.y <= 10) {
366
+ event.preventDefault();
367
+ } else {
368
+ if (!content.contains(event.target)) {
369
+ onOpenChange(false);
370
+ }
371
+ }
372
+ document.removeEventListener("pointermove", handlePointerMove);
373
+ triggerPointerDownPosRef.current = null;
374
+ };
375
+ if (triggerPointerDownPosRef.current !== null) {
376
+ document.addEventListener("pointermove", handlePointerMove);
377
+ document.addEventListener("pointerup", handlePointerUp, { capture: true, once: true });
378
+ }
379
+ return () => {
380
+ document.removeEventListener("pointermove", handlePointerMove);
381
+ document.removeEventListener("pointerup", handlePointerUp, { capture: true });
382
+ };
383
+ }
384
+ }, [content, onOpenChange, triggerPointerDownPosRef]);
385
+ React__namespace.useEffect(() => {
386
+ const close = () => onOpenChange(false);
387
+ window.addEventListener("blur", close);
388
+ window.addEventListener("resize", close);
389
+ return () => {
390
+ window.removeEventListener("blur", close);
391
+ window.removeEventListener("resize", close);
392
+ };
393
+ }, [onOpenChange]);
394
+ const [searchRef, handleTypeaheadSearch] = useTypeaheadSearch((search) => {
395
+ const enabledItems = getItems().filter((item) => !item.disabled);
396
+ const currentItem = enabledItems.find((item) => item.ref.current === document.activeElement);
397
+ const nextItem = findNextItem(enabledItems, search, currentItem);
398
+ if (nextItem) {
399
+ setTimeout(() => nextItem.ref.current.focus());
400
+ }
401
+ });
402
+ const itemRefCallback = React__namespace.useCallback(
403
+ (node, value, disabled) => {
404
+ const isFirstValidItem = !firstValidItemFoundRef.current && !disabled;
405
+ const isSelectedItem = context.value !== void 0 && context.value === value;
406
+ if (isSelectedItem || isFirstValidItem) {
407
+ setSelectedItem(node);
408
+ if (isFirstValidItem) firstValidItemFoundRef.current = true;
409
+ }
410
+ },
411
+ [context.value]
412
+ );
413
+ const handleItemLeave = React__namespace.useCallback(() => content?.focus(), [content]);
414
+ const itemTextRefCallback = React__namespace.useCallback(
415
+ (node, value, disabled) => {
416
+ const isFirstValidItem = !firstValidItemFoundRef.current && !disabled;
417
+ const isSelectedItem = context.value !== void 0 && context.value === value;
418
+ if (isSelectedItem || isFirstValidItem) {
419
+ setSelectedItemText(node);
420
+ }
421
+ },
422
+ [context.value]
423
+ );
424
+ const SelectPosition = position === "popper" ? SelectPopperPosition : SelectItemAlignedPosition;
425
+ const popperContentProps = SelectPosition === SelectPopperPosition ? {
426
+ side,
427
+ sideOffset,
428
+ align,
429
+ alignOffset,
430
+ arrowPadding,
431
+ collisionBoundary,
432
+ collisionPadding,
433
+ sticky,
434
+ hideWhenDetached,
435
+ avoidCollisions
436
+ } : {};
437
+ return /* @__PURE__ */ jsxRuntime.jsx(
438
+ SelectContentProvider,
439
+ {
440
+ scope: __scopeSelect,
441
+ content,
442
+ viewport,
443
+ onViewportChange: setViewport,
444
+ itemRefCallback,
445
+ selectedItem,
446
+ onItemLeave: handleItemLeave,
447
+ itemTextRefCallback,
448
+ focusSelectedItem,
449
+ selectedItemText,
450
+ position,
451
+ isPositioned,
452
+ searchRef,
453
+ children: /* @__PURE__ */ jsxRuntime.jsx(Combination, { as: Slot, allowPinchZoom: true, children: /* @__PURE__ */ jsxRuntime.jsx(
454
+ index$g.FocusScope,
455
+ {
456
+ asChild: true,
457
+ trapped: context.open,
458
+ onMountAutoFocus: (event) => {
459
+ event.preventDefault();
460
+ },
461
+ onUnmountAutoFocus: index$8.composeEventHandlers(onCloseAutoFocus, (event) => {
462
+ context.trigger?.focus({ preventScroll: true });
463
+ event.preventDefault();
464
+ }),
465
+ children: /* @__PURE__ */ jsxRuntime.jsx(
466
+ index$h.DismissableLayer,
467
+ {
468
+ asChild: true,
469
+ disableOutsidePointerEvents: true,
470
+ onEscapeKeyDown,
471
+ onPointerDownOutside,
472
+ onFocusOutside: (event) => event.preventDefault(),
473
+ onDismiss: () => context.onOpenChange(false),
474
+ children: /* @__PURE__ */ jsxRuntime.jsx(
475
+ SelectPosition,
476
+ {
477
+ role: "listbox",
478
+ id: context.contentId,
479
+ "data-state": context.open ? "open" : "closed",
480
+ dir: context.dir,
481
+ onContextMenu: (event) => event.preventDefault(),
482
+ ...contentProps,
483
+ ...popperContentProps,
484
+ onPlaced: () => setIsPositioned(true),
485
+ ref: composedRefs,
486
+ style: {
487
+ // flex layout so we can place the scroll buttons properly
488
+ display: "flex",
489
+ flexDirection: "column",
490
+ // reset the outline by default as the content MAY get focused
491
+ outline: "none",
492
+ ...contentProps.style
493
+ },
494
+ onKeyDown: index$8.composeEventHandlers(contentProps.onKeyDown, (event) => {
495
+ const isModifierKey = event.ctrlKey || event.altKey || event.metaKey;
496
+ if (event.key === "Tab") event.preventDefault();
497
+ if (!isModifierKey && event.key.length === 1) handleTypeaheadSearch(event.key);
498
+ if (["ArrowUp", "ArrowDown", "Home", "End"].includes(event.key)) {
499
+ const items = getItems().filter((item) => !item.disabled);
500
+ let candidateNodes = items.map((item) => item.ref.current);
501
+ if (["ArrowUp", "End"].includes(event.key)) {
502
+ candidateNodes = candidateNodes.slice().reverse();
503
+ }
504
+ if (["ArrowUp", "ArrowDown"].includes(event.key)) {
505
+ const currentElement = event.target;
506
+ const currentIndex = candidateNodes.indexOf(currentElement);
507
+ candidateNodes = candidateNodes.slice(currentIndex + 1);
508
+ }
509
+ setTimeout(() => focusFirst(candidateNodes));
510
+ event.preventDefault();
511
+ }
512
+ })
513
+ }
514
+ )
515
+ }
516
+ )
517
+ }
518
+ ) })
519
+ }
520
+ );
521
+ }
522
+ );
523
+ SelectContentImpl.displayName = CONTENT_IMPL_NAME;
524
+ var ITEM_ALIGNED_POSITION_NAME = "SelectItemAlignedPosition";
525
+ var SelectItemAlignedPosition = React__namespace.forwardRef((props, forwardedRef) => {
526
+ const { __scopeSelect, onPlaced, ...popperProps } = props;
527
+ const context = useSelectContext(CONTENT_NAME, __scopeSelect);
528
+ const contentContext = useSelectContentContext(CONTENT_NAME, __scopeSelect);
529
+ const [contentWrapper, setContentWrapper] = React__namespace.useState(null);
530
+ const [content, setContent] = React__namespace.useState(null);
531
+ const composedRefs = index$6.useComposedRefs(forwardedRef, (node) => setContent(node));
532
+ const getItems = useCollection(__scopeSelect);
533
+ const shouldExpandOnScrollRef = React__namespace.useRef(false);
534
+ const shouldRepositionRef = React__namespace.useRef(true);
535
+ const { viewport, selectedItem, selectedItemText, focusSelectedItem } = contentContext;
536
+ const position = React__namespace.useCallback(() => {
537
+ if (context.trigger && context.valueNode && contentWrapper && content && viewport && selectedItem && selectedItemText) {
538
+ const triggerRect = context.trigger.getBoundingClientRect();
539
+ const contentRect = content.getBoundingClientRect();
540
+ const valueNodeRect = context.valueNode.getBoundingClientRect();
541
+ const itemTextRect = selectedItemText.getBoundingClientRect();
542
+ if (context.dir !== "rtl") {
543
+ const itemTextOffset = itemTextRect.left - contentRect.left;
544
+ const left = valueNodeRect.left - itemTextOffset;
545
+ const leftDelta = triggerRect.left - left;
546
+ const minContentWidth = triggerRect.width + leftDelta;
547
+ const contentWidth = Math.max(minContentWidth, contentRect.width);
548
+ const rightEdge = window.innerWidth - CONTENT_MARGIN;
549
+ const clampedLeft = index$i.clamp(left, [
550
+ CONTENT_MARGIN,
551
+ // Prevents the content from going off the starting edge of the
552
+ // viewport. It may still go off the ending edge, but this can be
553
+ // controlled by the user since they may want to manage overflow in a
554
+ // specific way.
555
+ // https://github.com/radix-ui/primitives/issues/2049
556
+ Math.max(CONTENT_MARGIN, rightEdge - contentWidth)
557
+ ]);
558
+ contentWrapper.style.minWidth = minContentWidth + "px";
559
+ contentWrapper.style.left = clampedLeft + "px";
560
+ } else {
561
+ const itemTextOffset = contentRect.right - itemTextRect.right;
562
+ const right = window.innerWidth - valueNodeRect.right - itemTextOffset;
563
+ const rightDelta = window.innerWidth - triggerRect.right - right;
564
+ const minContentWidth = triggerRect.width + rightDelta;
565
+ const contentWidth = Math.max(minContentWidth, contentRect.width);
566
+ const leftEdge = window.innerWidth - CONTENT_MARGIN;
567
+ const clampedRight = index$i.clamp(right, [
568
+ CONTENT_MARGIN,
569
+ Math.max(CONTENT_MARGIN, leftEdge - contentWidth)
570
+ ]);
571
+ contentWrapper.style.minWidth = minContentWidth + "px";
572
+ contentWrapper.style.right = clampedRight + "px";
573
+ }
574
+ const items = getItems();
575
+ const availableHeight = window.innerHeight - CONTENT_MARGIN * 2;
576
+ const itemsHeight = viewport.scrollHeight;
577
+ const contentStyles = window.getComputedStyle(content);
578
+ const contentBorderTopWidth = parseInt(contentStyles.borderTopWidth, 10);
579
+ const contentPaddingTop = parseInt(contentStyles.paddingTop, 10);
580
+ const contentBorderBottomWidth = parseInt(contentStyles.borderBottomWidth, 10);
581
+ const contentPaddingBottom = parseInt(contentStyles.paddingBottom, 10);
582
+ const fullContentHeight = contentBorderTopWidth + contentPaddingTop + itemsHeight + contentPaddingBottom + contentBorderBottomWidth;
583
+ const minContentHeight = Math.min(selectedItem.offsetHeight * 5, fullContentHeight);
584
+ const viewportStyles = window.getComputedStyle(viewport);
585
+ const viewportPaddingTop = parseInt(viewportStyles.paddingTop, 10);
586
+ const viewportPaddingBottom = parseInt(viewportStyles.paddingBottom, 10);
587
+ const topEdgeToTriggerMiddle = triggerRect.top + triggerRect.height / 2 - CONTENT_MARGIN;
588
+ const triggerMiddleToBottomEdge = availableHeight - topEdgeToTriggerMiddle;
589
+ const selectedItemHalfHeight = selectedItem.offsetHeight / 2;
590
+ const itemOffsetMiddle = selectedItem.offsetTop + selectedItemHalfHeight;
591
+ const contentTopToItemMiddle = contentBorderTopWidth + contentPaddingTop + itemOffsetMiddle;
592
+ const itemMiddleToContentBottom = fullContentHeight - contentTopToItemMiddle;
593
+ const willAlignWithoutTopOverflow = contentTopToItemMiddle <= topEdgeToTriggerMiddle;
594
+ if (willAlignWithoutTopOverflow) {
595
+ const isLastItem = items.length > 0 && selectedItem === items[items.length - 1].ref.current;
596
+ contentWrapper.style.bottom = "0px";
597
+ const viewportOffsetBottom = content.clientHeight - viewport.offsetTop - viewport.offsetHeight;
598
+ const clampedTriggerMiddleToBottomEdge = Math.max(
599
+ triggerMiddleToBottomEdge,
600
+ selectedItemHalfHeight + // viewport might have padding bottom, include it to avoid a scrollable viewport
601
+ (isLastItem ? viewportPaddingBottom : 0) + viewportOffsetBottom + contentBorderBottomWidth
602
+ );
603
+ const height = contentTopToItemMiddle + clampedTriggerMiddleToBottomEdge;
604
+ contentWrapper.style.height = height + "px";
605
+ } else {
606
+ const isFirstItem = items.length > 0 && selectedItem === items[0].ref.current;
607
+ contentWrapper.style.top = "0px";
608
+ const clampedTopEdgeToTriggerMiddle = Math.max(
609
+ topEdgeToTriggerMiddle,
610
+ contentBorderTopWidth + viewport.offsetTop + // viewport might have padding top, include it to avoid a scrollable viewport
611
+ (isFirstItem ? viewportPaddingTop : 0) + selectedItemHalfHeight
612
+ );
613
+ const height = clampedTopEdgeToTriggerMiddle + itemMiddleToContentBottom;
614
+ contentWrapper.style.height = height + "px";
615
+ viewport.scrollTop = contentTopToItemMiddle - topEdgeToTriggerMiddle + viewport.offsetTop;
616
+ }
617
+ contentWrapper.style.margin = `${CONTENT_MARGIN}px 0`;
618
+ contentWrapper.style.minHeight = minContentHeight + "px";
619
+ contentWrapper.style.maxHeight = availableHeight + "px";
620
+ onPlaced?.();
621
+ requestAnimationFrame(() => shouldExpandOnScrollRef.current = true);
622
+ }
623
+ }, [
624
+ getItems,
625
+ context.trigger,
626
+ context.valueNode,
627
+ contentWrapper,
628
+ content,
629
+ viewport,
630
+ selectedItem,
631
+ selectedItemText,
632
+ context.dir,
633
+ onPlaced
634
+ ]);
635
+ index$9.useLayoutEffect(() => position(), [position]);
636
+ const [contentZIndex, setContentZIndex] = React__namespace.useState();
637
+ index$9.useLayoutEffect(() => {
638
+ if (content) setContentZIndex(window.getComputedStyle(content).zIndex);
639
+ }, [content]);
640
+ const handleScrollButtonChange = React__namespace.useCallback(
641
+ (node) => {
642
+ if (node && shouldRepositionRef.current === true) {
643
+ position();
644
+ focusSelectedItem?.();
645
+ shouldRepositionRef.current = false;
646
+ }
647
+ },
648
+ [position, focusSelectedItem]
649
+ );
650
+ return /* @__PURE__ */ jsxRuntime.jsx(
651
+ SelectViewportProvider,
652
+ {
653
+ scope: __scopeSelect,
654
+ contentWrapper,
655
+ shouldExpandOnScrollRef,
656
+ onScrollButtonChange: handleScrollButtonChange,
657
+ children: /* @__PURE__ */ jsxRuntime.jsx(
658
+ "div",
659
+ {
660
+ ref: setContentWrapper,
661
+ style: {
662
+ display: "flex",
663
+ flexDirection: "column",
664
+ position: "fixed",
665
+ zIndex: contentZIndex
666
+ },
667
+ children: /* @__PURE__ */ jsxRuntime.jsx(
668
+ index$7.Primitive.div,
669
+ {
670
+ ...popperProps,
671
+ ref: composedRefs,
672
+ style: {
673
+ // When we get the height of the content, it includes borders. If we were to set
674
+ // the height without having `boxSizing: 'border-box'` it would be too big.
675
+ boxSizing: "border-box",
676
+ // We need to ensure the content doesn't get taller than the wrapper
677
+ maxHeight: "100%",
678
+ ...popperProps.style
679
+ }
680
+ }
681
+ )
682
+ }
683
+ )
684
+ }
685
+ );
686
+ });
687
+ SelectItemAlignedPosition.displayName = ITEM_ALIGNED_POSITION_NAME;
688
+ var POPPER_POSITION_NAME = "SelectPopperPosition";
689
+ var SelectPopperPosition = React__namespace.forwardRef((props, forwardedRef) => {
690
+ const {
691
+ __scopeSelect,
692
+ align = "start",
693
+ collisionPadding = CONTENT_MARGIN,
694
+ ...popperProps
695
+ } = props;
696
+ const popperScope = usePopperScope(__scopeSelect);
697
+ return /* @__PURE__ */ jsxRuntime.jsx(
698
+ index.Content,
699
+ {
700
+ ...popperScope,
701
+ ...popperProps,
702
+ ref: forwardedRef,
703
+ align,
704
+ collisionPadding,
705
+ style: {
706
+ // Ensure border-box for floating-ui calculations
707
+ boxSizing: "border-box",
708
+ ...popperProps.style,
709
+ // re-namespace exposed content custom properties
710
+ ...{
711
+ "--radix-select-content-transform-origin": "var(--radix-popper-transform-origin)",
712
+ "--radix-select-content-available-width": "var(--radix-popper-available-width)",
713
+ "--radix-select-content-available-height": "var(--radix-popper-available-height)",
714
+ "--radix-select-trigger-width": "var(--radix-popper-anchor-width)",
715
+ "--radix-select-trigger-height": "var(--radix-popper-anchor-height)"
716
+ }
717
+ }
718
+ }
719
+ );
720
+ });
721
+ SelectPopperPosition.displayName = POPPER_POSITION_NAME;
722
+ var [SelectViewportProvider, useSelectViewportContext] = createSelectContext(CONTENT_NAME, {});
723
+ var VIEWPORT_NAME = "SelectViewport";
724
+ var SelectViewport = React__namespace.forwardRef(
725
+ (props, forwardedRef) => {
726
+ const { __scopeSelect, nonce, ...viewportProps } = props;
727
+ const contentContext = useSelectContentContext(VIEWPORT_NAME, __scopeSelect);
728
+ const viewportContext = useSelectViewportContext(VIEWPORT_NAME, __scopeSelect);
729
+ const composedRefs = index$6.useComposedRefs(forwardedRef, contentContext.onViewportChange);
730
+ const prevScrollTopRef = React__namespace.useRef(0);
731
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
732
+ /* @__PURE__ */ jsxRuntime.jsx(
733
+ "style",
734
+ {
735
+ dangerouslySetInnerHTML: {
736
+ __html: `[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}`
737
+ },
738
+ nonce
739
+ }
740
+ ),
741
+ /* @__PURE__ */ jsxRuntime.jsx(Collection.Slot, { scope: __scopeSelect, children: /* @__PURE__ */ jsxRuntime.jsx(
742
+ index$7.Primitive.div,
743
+ {
744
+ "data-radix-select-viewport": "",
745
+ role: "presentation",
746
+ ...viewportProps,
747
+ ref: composedRefs,
748
+ style: {
749
+ // we use position: 'relative' here on the `viewport` so that when we call
750
+ // `selectedItem.offsetTop` in calculations, the offset is relative to the viewport
751
+ // (independent of the scrollUpButton).
752
+ position: "relative",
753
+ flex: 1,
754
+ // Viewport should only be scrollable in the vertical direction.
755
+ // This won't work in vertical writing modes, so we'll need to
756
+ // revisit this if/when that is supported
757
+ // https://developer.chrome.com/blog/vertical-form-controls
758
+ overflow: "hidden auto",
759
+ ...viewportProps.style
760
+ },
761
+ onScroll: index$8.composeEventHandlers(viewportProps.onScroll, (event) => {
762
+ const viewport = event.currentTarget;
763
+ const { contentWrapper, shouldExpandOnScrollRef } = viewportContext;
764
+ if (shouldExpandOnScrollRef?.current && contentWrapper) {
765
+ const scrolledBy = Math.abs(prevScrollTopRef.current - viewport.scrollTop);
766
+ if (scrolledBy > 0) {
767
+ const availableHeight = window.innerHeight - CONTENT_MARGIN * 2;
768
+ const cssMinHeight = parseFloat(contentWrapper.style.minHeight);
769
+ const cssHeight = parseFloat(contentWrapper.style.height);
770
+ const prevHeight = Math.max(cssMinHeight, cssHeight);
771
+ if (prevHeight < availableHeight) {
772
+ const nextHeight = prevHeight + scrolledBy;
773
+ const clampedNextHeight = Math.min(availableHeight, nextHeight);
774
+ const heightDiff = nextHeight - clampedNextHeight;
775
+ contentWrapper.style.height = clampedNextHeight + "px";
776
+ if (contentWrapper.style.bottom === "0px") {
777
+ viewport.scrollTop = heightDiff > 0 ? heightDiff : 0;
778
+ contentWrapper.style.justifyContent = "flex-end";
779
+ }
780
+ }
781
+ }
782
+ }
783
+ prevScrollTopRef.current = viewport.scrollTop;
784
+ })
785
+ }
786
+ ) })
787
+ ] });
788
+ }
789
+ );
790
+ SelectViewport.displayName = VIEWPORT_NAME;
791
+ var GROUP_NAME = "SelectGroup";
792
+ var [SelectGroupContextProvider, useSelectGroupContext] = createSelectContext(GROUP_NAME);
793
+ var SelectGroup = React__namespace.forwardRef(
794
+ (props, forwardedRef) => {
795
+ const { __scopeSelect, ...groupProps } = props;
796
+ const groupId = index$4.useId();
797
+ return /* @__PURE__ */ jsxRuntime.jsx(SelectGroupContextProvider, { scope: __scopeSelect, id: groupId, children: /* @__PURE__ */ jsxRuntime.jsx(index$7.Primitive.div, { role: "group", "aria-labelledby": groupId, ...groupProps, ref: forwardedRef }) });
798
+ }
799
+ );
800
+ SelectGroup.displayName = GROUP_NAME;
801
+ var LABEL_NAME = "SelectLabel";
802
+ var SelectLabel = React__namespace.forwardRef(
803
+ (props, forwardedRef) => {
804
+ const { __scopeSelect, ...labelProps } = props;
805
+ const groupContext = useSelectGroupContext(LABEL_NAME, __scopeSelect);
806
+ return /* @__PURE__ */ jsxRuntime.jsx(index$7.Primitive.div, { id: groupContext.id, ...labelProps, ref: forwardedRef });
807
+ }
808
+ );
809
+ SelectLabel.displayName = LABEL_NAME;
810
+ var ITEM_NAME = "SelectItem";
811
+ var [SelectItemContextProvider, useSelectItemContext] = createSelectContext(ITEM_NAME);
812
+ var SelectItem = React__namespace.forwardRef(
813
+ (props, forwardedRef) => {
814
+ const {
815
+ __scopeSelect,
816
+ value,
817
+ disabled = false,
818
+ textValue: textValueProp,
819
+ ...itemProps
820
+ } = props;
821
+ const context = useSelectContext(ITEM_NAME, __scopeSelect);
822
+ const contentContext = useSelectContentContext(ITEM_NAME, __scopeSelect);
823
+ const isSelected = context.value === value;
824
+ const [textValue, setTextValue] = React__namespace.useState(textValueProp ?? "");
825
+ const [isFocused, setIsFocused] = React__namespace.useState(false);
826
+ const composedRefs = index$6.useComposedRefs(
827
+ forwardedRef,
828
+ (node) => contentContext.itemRefCallback?.(node, value, disabled)
829
+ );
830
+ const textId = index$4.useId();
831
+ const pointerTypeRef = React__namespace.useRef("touch");
832
+ const handleSelect = () => {
833
+ if (!disabled) {
834
+ context.onValueChange(value);
835
+ context.onOpenChange(false);
836
+ }
837
+ };
838
+ if (value === "") {
839
+ throw new Error(
840
+ "A <Select.Item /> must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder."
841
+ );
842
+ }
843
+ return /* @__PURE__ */ jsxRuntime.jsx(
844
+ SelectItemContextProvider,
845
+ {
846
+ scope: __scopeSelect,
847
+ value,
848
+ disabled,
849
+ textId,
850
+ isSelected,
851
+ onItemTextChange: React__namespace.useCallback((node) => {
852
+ setTextValue((prevTextValue) => prevTextValue || (node?.textContent ?? "").trim());
853
+ }, []),
854
+ children: /* @__PURE__ */ jsxRuntime.jsx(
855
+ Collection.ItemSlot,
856
+ {
857
+ scope: __scopeSelect,
858
+ value,
859
+ disabled,
860
+ textValue,
861
+ children: /* @__PURE__ */ jsxRuntime.jsx(
862
+ index$7.Primitive.div,
863
+ {
864
+ role: "option",
865
+ "aria-labelledby": textId,
866
+ "data-highlighted": isFocused ? "" : void 0,
867
+ "aria-selected": isSelected && isFocused,
868
+ "data-state": isSelected ? "checked" : "unchecked",
869
+ "aria-disabled": disabled || void 0,
870
+ "data-disabled": disabled ? "" : void 0,
871
+ tabIndex: disabled ? void 0 : -1,
872
+ ...itemProps,
873
+ ref: composedRefs,
874
+ onFocus: index$8.composeEventHandlers(itemProps.onFocus, () => setIsFocused(true)),
875
+ onBlur: index$8.composeEventHandlers(itemProps.onBlur, () => setIsFocused(false)),
876
+ onClick: index$8.composeEventHandlers(itemProps.onClick, () => {
877
+ if (pointerTypeRef.current !== "mouse") handleSelect();
878
+ }),
879
+ onPointerUp: index$8.composeEventHandlers(itemProps.onPointerUp, () => {
880
+ if (pointerTypeRef.current === "mouse") handleSelect();
881
+ }),
882
+ onPointerDown: index$8.composeEventHandlers(itemProps.onPointerDown, (event) => {
883
+ pointerTypeRef.current = event.pointerType;
884
+ }),
885
+ onPointerMove: index$8.composeEventHandlers(itemProps.onPointerMove, (event) => {
886
+ pointerTypeRef.current = event.pointerType;
887
+ if (disabled) {
888
+ contentContext.onItemLeave?.();
889
+ } else if (pointerTypeRef.current === "mouse") {
890
+ event.currentTarget.focus({ preventScroll: true });
891
+ }
892
+ }),
893
+ onPointerLeave: index$8.composeEventHandlers(itemProps.onPointerLeave, (event) => {
894
+ if (event.currentTarget === document.activeElement) {
895
+ contentContext.onItemLeave?.();
896
+ }
897
+ }),
898
+ onKeyDown: index$8.composeEventHandlers(itemProps.onKeyDown, (event) => {
899
+ const isTypingAhead = contentContext.searchRef?.current !== "";
900
+ if (isTypingAhead && event.key === " ") return;
901
+ if (SELECTION_KEYS.includes(event.key)) handleSelect();
902
+ if (event.key === " ") event.preventDefault();
903
+ })
904
+ }
905
+ )
906
+ }
907
+ )
908
+ }
909
+ );
910
+ }
911
+ );
912
+ SelectItem.displayName = ITEM_NAME;
913
+ var ITEM_TEXT_NAME = "SelectItemText";
914
+ var SelectItemText = React__namespace.forwardRef(
915
+ (props, forwardedRef) => {
916
+ const { __scopeSelect, className, style, ...itemTextProps } = props;
917
+ const context = useSelectContext(ITEM_TEXT_NAME, __scopeSelect);
918
+ const contentContext = useSelectContentContext(ITEM_TEXT_NAME, __scopeSelect);
919
+ const itemContext = useSelectItemContext(ITEM_TEXT_NAME, __scopeSelect);
920
+ const nativeOptionsContext = useSelectNativeOptionsContext(ITEM_TEXT_NAME, __scopeSelect);
921
+ const [itemTextNode, setItemTextNode] = React__namespace.useState(null);
922
+ const composedRefs = index$6.useComposedRefs(
923
+ forwardedRef,
924
+ (node) => setItemTextNode(node),
925
+ itemContext.onItemTextChange,
926
+ (node) => contentContext.itemTextRefCallback?.(node, itemContext.value, itemContext.disabled)
927
+ );
928
+ const textContent = itemTextNode?.textContent;
929
+ const nativeOption = React__namespace.useMemo(
930
+ () => /* @__PURE__ */ jsxRuntime.jsx("option", { value: itemContext.value, disabled: itemContext.disabled, children: textContent }, itemContext.value),
931
+ [itemContext.disabled, itemContext.value, textContent]
932
+ );
933
+ const { onNativeOptionAdd, onNativeOptionRemove } = nativeOptionsContext;
934
+ index$9.useLayoutEffect(() => {
935
+ onNativeOptionAdd(nativeOption);
936
+ return () => onNativeOptionRemove(nativeOption);
937
+ }, [onNativeOptionAdd, onNativeOptionRemove, nativeOption]);
938
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
939
+ /* @__PURE__ */ jsxRuntime.jsx(index$7.Primitive.span, { id: itemContext.textId, ...itemTextProps, ref: composedRefs }),
940
+ itemContext.isSelected && context.valueNode && !context.valueNodeHasChildren ? ReactDOM__namespace.createPortal(itemTextProps.children, context.valueNode) : null
941
+ ] });
942
+ }
943
+ );
944
+ SelectItemText.displayName = ITEM_TEXT_NAME;
945
+ var ITEM_INDICATOR_NAME = "SelectItemIndicator";
946
+ var SelectItemIndicator = React__namespace.forwardRef(
947
+ (props, forwardedRef) => {
948
+ const { __scopeSelect, ...itemIndicatorProps } = props;
949
+ const itemContext = useSelectItemContext(ITEM_INDICATOR_NAME, __scopeSelect);
950
+ return itemContext.isSelected ? /* @__PURE__ */ jsxRuntime.jsx(index$7.Primitive.span, { "aria-hidden": true, ...itemIndicatorProps, ref: forwardedRef }) : null;
951
+ }
952
+ );
953
+ SelectItemIndicator.displayName = ITEM_INDICATOR_NAME;
954
+ var SCROLL_UP_BUTTON_NAME = "SelectScrollUpButton";
955
+ var SelectScrollUpButton = React__namespace.forwardRef((props, forwardedRef) => {
956
+ const contentContext = useSelectContentContext(SCROLL_UP_BUTTON_NAME, props.__scopeSelect);
957
+ const viewportContext = useSelectViewportContext(SCROLL_UP_BUTTON_NAME, props.__scopeSelect);
958
+ const [canScrollUp, setCanScrollUp] = React__namespace.useState(false);
959
+ const composedRefs = index$6.useComposedRefs(forwardedRef, viewportContext.onScrollButtonChange);
960
+ index$9.useLayoutEffect(() => {
961
+ if (contentContext.viewport && contentContext.isPositioned) {
962
+ let handleScroll2 = function() {
963
+ const canScrollUp2 = viewport.scrollTop > 0;
964
+ setCanScrollUp(canScrollUp2);
965
+ };
966
+ const viewport = contentContext.viewport;
967
+ handleScroll2();
968
+ viewport.addEventListener("scroll", handleScroll2);
969
+ return () => viewport.removeEventListener("scroll", handleScroll2);
970
+ }
971
+ }, [contentContext.viewport, contentContext.isPositioned]);
972
+ return canScrollUp ? /* @__PURE__ */ jsxRuntime.jsx(
973
+ SelectScrollButtonImpl,
974
+ {
975
+ ...props,
976
+ ref: composedRefs,
977
+ onAutoScroll: () => {
978
+ const { viewport, selectedItem } = contentContext;
979
+ if (viewport && selectedItem) {
980
+ viewport.scrollTop = viewport.scrollTop - selectedItem.offsetHeight;
981
+ }
982
+ }
983
+ }
984
+ ) : null;
985
+ });
986
+ SelectScrollUpButton.displayName = SCROLL_UP_BUTTON_NAME;
987
+ var SCROLL_DOWN_BUTTON_NAME = "SelectScrollDownButton";
988
+ var SelectScrollDownButton = React__namespace.forwardRef((props, forwardedRef) => {
989
+ const contentContext = useSelectContentContext(SCROLL_DOWN_BUTTON_NAME, props.__scopeSelect);
990
+ const viewportContext = useSelectViewportContext(SCROLL_DOWN_BUTTON_NAME, props.__scopeSelect);
991
+ const [canScrollDown, setCanScrollDown] = React__namespace.useState(false);
992
+ const composedRefs = index$6.useComposedRefs(forwardedRef, viewportContext.onScrollButtonChange);
993
+ index$9.useLayoutEffect(() => {
994
+ if (contentContext.viewport && contentContext.isPositioned) {
995
+ let handleScroll2 = function() {
996
+ const maxScroll = viewport.scrollHeight - viewport.clientHeight;
997
+ const canScrollDown2 = Math.ceil(viewport.scrollTop) < maxScroll;
998
+ setCanScrollDown(canScrollDown2);
999
+ };
1000
+ const viewport = contentContext.viewport;
1001
+ handleScroll2();
1002
+ viewport.addEventListener("scroll", handleScroll2);
1003
+ return () => viewport.removeEventListener("scroll", handleScroll2);
1004
+ }
1005
+ }, [contentContext.viewport, contentContext.isPositioned]);
1006
+ return canScrollDown ? /* @__PURE__ */ jsxRuntime.jsx(
1007
+ SelectScrollButtonImpl,
1008
+ {
1009
+ ...props,
1010
+ ref: composedRefs,
1011
+ onAutoScroll: () => {
1012
+ const { viewport, selectedItem } = contentContext;
1013
+ if (viewport && selectedItem) {
1014
+ viewport.scrollTop = viewport.scrollTop + selectedItem.offsetHeight;
1015
+ }
1016
+ }
1017
+ }
1018
+ ) : null;
1019
+ });
1020
+ SelectScrollDownButton.displayName = SCROLL_DOWN_BUTTON_NAME;
1021
+ var SelectScrollButtonImpl = React__namespace.forwardRef((props, forwardedRef) => {
1022
+ const { __scopeSelect, onAutoScroll, ...scrollIndicatorProps } = props;
1023
+ const contentContext = useSelectContentContext("SelectScrollButton", __scopeSelect);
1024
+ const autoScrollTimerRef = React__namespace.useRef(null);
1025
+ const getItems = useCollection(__scopeSelect);
1026
+ const clearAutoScrollTimer = React__namespace.useCallback(() => {
1027
+ if (autoScrollTimerRef.current !== null) {
1028
+ window.clearInterval(autoScrollTimerRef.current);
1029
+ autoScrollTimerRef.current = null;
1030
+ }
1031
+ }, []);
1032
+ React__namespace.useEffect(() => {
1033
+ return () => clearAutoScrollTimer();
1034
+ }, [clearAutoScrollTimer]);
1035
+ index$9.useLayoutEffect(() => {
1036
+ const activeItem = getItems().find((item) => item.ref.current === document.activeElement);
1037
+ activeItem?.ref.current?.scrollIntoView({ block: "nearest" });
1038
+ }, [getItems]);
1039
+ return /* @__PURE__ */ jsxRuntime.jsx(
1040
+ index$7.Primitive.div,
1041
+ {
1042
+ "aria-hidden": true,
1043
+ ...scrollIndicatorProps,
1044
+ ref: forwardedRef,
1045
+ style: { flexShrink: 0, ...scrollIndicatorProps.style },
1046
+ onPointerDown: index$8.composeEventHandlers(scrollIndicatorProps.onPointerDown, () => {
1047
+ if (autoScrollTimerRef.current === null) {
1048
+ autoScrollTimerRef.current = window.setInterval(onAutoScroll, 50);
1049
+ }
1050
+ }),
1051
+ onPointerMove: index$8.composeEventHandlers(scrollIndicatorProps.onPointerMove, () => {
1052
+ contentContext.onItemLeave?.();
1053
+ if (autoScrollTimerRef.current === null) {
1054
+ autoScrollTimerRef.current = window.setInterval(onAutoScroll, 50);
1055
+ }
1056
+ }),
1057
+ onPointerLeave: index$8.composeEventHandlers(scrollIndicatorProps.onPointerLeave, () => {
1058
+ clearAutoScrollTimer();
1059
+ })
1060
+ }
1061
+ );
1062
+ });
1063
+ var SEPARATOR_NAME = "SelectSeparator";
1064
+ var SelectSeparator = React__namespace.forwardRef(
1065
+ (props, forwardedRef) => {
1066
+ const { __scopeSelect, ...separatorProps } = props;
1067
+ return /* @__PURE__ */ jsxRuntime.jsx(index$7.Primitive.div, { "aria-hidden": true, ...separatorProps, ref: forwardedRef });
1068
+ }
1069
+ );
1070
+ SelectSeparator.displayName = SEPARATOR_NAME;
1071
+ var ARROW_NAME = "SelectArrow";
1072
+ var SelectArrow = React__namespace.forwardRef(
1073
+ (props, forwardedRef) => {
1074
+ const { __scopeSelect, ...arrowProps } = props;
1075
+ const popperScope = usePopperScope(__scopeSelect);
1076
+ const context = useSelectContext(ARROW_NAME, __scopeSelect);
1077
+ const contentContext = useSelectContentContext(ARROW_NAME, __scopeSelect);
1078
+ return context.open && contentContext.position === "popper" ? /* @__PURE__ */ jsxRuntime.jsx(index.Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef }) : null;
1079
+ }
1080
+ );
1081
+ SelectArrow.displayName = ARROW_NAME;
1082
+ var BUBBLE_INPUT_NAME = "SelectBubbleInput";
1083
+ var SelectBubbleInput = React__namespace.forwardRef(
1084
+ ({ __scopeSelect, value, ...props }, forwardedRef) => {
1085
+ const ref = React__namespace.useRef(null);
1086
+ const composedRefs = index$6.useComposedRefs(forwardedRef, ref);
1087
+ const prevValue = index$b.usePrevious(value);
1088
+ React__namespace.useEffect(() => {
1089
+ const select = ref.current;
1090
+ if (!select) return;
1091
+ const selectProto = window.HTMLSelectElement.prototype;
1092
+ const descriptor = Object.getOwnPropertyDescriptor(
1093
+ selectProto,
1094
+ "value"
1095
+ );
1096
+ const setValue = descriptor.set;
1097
+ if (prevValue !== value && setValue) {
1098
+ const event = new Event("change", { bubbles: true });
1099
+ setValue.call(select, value);
1100
+ select.dispatchEvent(event);
1101
+ }
1102
+ }, [prevValue, value]);
1103
+ return /* @__PURE__ */ jsxRuntime.jsx(
1104
+ index$7.Primitive.select,
1105
+ {
1106
+ ...props,
1107
+ style: { ...index$c.VISUALLY_HIDDEN_STYLES, ...props.style },
1108
+ ref: composedRefs,
1109
+ defaultValue: value
1110
+ }
1111
+ );
1112
+ }
1113
+ );
1114
+ SelectBubbleInput.displayName = BUBBLE_INPUT_NAME;
1115
+ function shouldShowPlaceholder(value) {
1116
+ return value === "" || value === void 0;
1117
+ }
1118
+ function useTypeaheadSearch(onSearchChange) {
1119
+ const handleSearchChange = index$d.useCallbackRef(onSearchChange);
1120
+ const searchRef = React__namespace.useRef("");
1121
+ const timerRef = React__namespace.useRef(0);
1122
+ const handleTypeaheadSearch = React__namespace.useCallback(
1123
+ (key) => {
1124
+ const search = searchRef.current + key;
1125
+ handleSearchChange(search);
1126
+ (function updateSearch(value) {
1127
+ searchRef.current = value;
1128
+ window.clearTimeout(timerRef.current);
1129
+ if (value !== "") timerRef.current = window.setTimeout(() => updateSearch(""), 1e3);
1130
+ })(search);
1131
+ },
1132
+ [handleSearchChange]
1133
+ );
1134
+ const resetTypeahead = React__namespace.useCallback(() => {
1135
+ searchRef.current = "";
1136
+ window.clearTimeout(timerRef.current);
1137
+ }, []);
1138
+ React__namespace.useEffect(() => {
1139
+ return () => window.clearTimeout(timerRef.current);
1140
+ }, []);
1141
+ return [searchRef, handleTypeaheadSearch, resetTypeahead];
1142
+ }
1143
+ function findNextItem(items, search, currentItem) {
1144
+ const isRepeated = search.length > 1 && Array.from(search).every((char) => char === search[0]);
1145
+ const normalizedSearch = isRepeated ? search[0] : search;
1146
+ const currentItemIndex = currentItem ? items.indexOf(currentItem) : -1;
1147
+ let wrappedItems = wrapArray(items, Math.max(currentItemIndex, 0));
1148
+ const excludeCurrentItem = normalizedSearch.length === 1;
1149
+ if (excludeCurrentItem) wrappedItems = wrappedItems.filter((v) => v !== currentItem);
1150
+ const nextItem = wrappedItems.find(
1151
+ (item) => item.textValue.toLowerCase().startsWith(normalizedSearch.toLowerCase())
1152
+ );
1153
+ return nextItem !== currentItem ? nextItem : void 0;
1154
+ }
1155
+ function wrapArray(array, startIndex) {
1156
+ return array.map((_, index) => array[(startIndex + index) % array.length]);
1157
+ }
1158
+ var Root2 = Select;
1159
+ var Trigger = SelectTrigger;
1160
+ var Value = SelectValue;
1161
+ var Icon = SelectIcon;
1162
+ var Portal = SelectPortal;
1163
+ var Content2 = SelectContent;
1164
+ var Viewport = SelectViewport;
1165
+ var Item = SelectItem;
1166
+ var ItemText = SelectItemText;
1167
+ var ItemIndicator = SelectItemIndicator;
1168
+ var ScrollUpButton = SelectScrollUpButton;
1169
+ var ScrollDownButton = SelectScrollDownButton;
1170
+
1171
+ exports.Content = Content2;
1172
+ exports.Icon = Icon;
1173
+ exports.Item = Item;
1174
+ exports.ItemIndicator = ItemIndicator;
1175
+ exports.ItemText = ItemText;
1176
+ exports.Portal = Portal;
1177
+ exports.Root = Root2;
1178
+ exports.ScrollDownButton = ScrollDownButton;
1179
+ exports.ScrollUpButton = ScrollUpButton;
1180
+ exports.Select = Select;
1181
+ exports.SelectArrow = SelectArrow;
1182
+ exports.SelectContent = SelectContent;
1183
+ exports.SelectGroup = SelectGroup;
1184
+ exports.SelectIcon = SelectIcon;
1185
+ exports.SelectItem = SelectItem;
1186
+ exports.SelectItemIndicator = SelectItemIndicator;
1187
+ exports.SelectItemText = SelectItemText;
1188
+ exports.SelectLabel = SelectLabel;
1189
+ exports.SelectPortal = SelectPortal;
1190
+ exports.SelectScrollDownButton = SelectScrollDownButton;
1191
+ exports.SelectScrollUpButton = SelectScrollUpButton;
1192
+ exports.SelectSeparator = SelectSeparator;
1193
+ exports.SelectTrigger = SelectTrigger;
1194
+ exports.SelectValue = SelectValue;
1195
+ exports.SelectViewport = SelectViewport;
1196
+ exports.Trigger = Trigger;
1197
+ exports.Value = Value;
1198
+ exports.Viewport = Viewport;