@epilot/zenith-react 0.1.0-next.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 (682) hide show
  1. package/ADOPTING.md +73 -0
  2. package/README.md +35 -0
  3. package/delivery.d.ts +2 -0
  4. package/delivery.js +2 -0
  5. package/dist/_virtual/index.js +6 -0
  6. package/dist/_virtual/index.js.map +1 -0
  7. package/dist/_virtual/index2.js +5 -0
  8. package/dist/_virtual/index2.js.map +1 -0
  9. package/dist/_virtual/use-sync-external-store-shim.development.js +5 -0
  10. package/dist/_virtual/use-sync-external-store-shim.development.js.map +1 -0
  11. package/dist/_virtual/use-sync-external-store-shim.production.js +5 -0
  12. package/dist/_virtual/use-sync-external-store-shim.production.js.map +1 -0
  13. package/dist/components/accordion/accordion.js +168 -0
  14. package/dist/components/accordion/accordion.js.map +1 -0
  15. package/dist/components/alert-dialog/alert-dialog.js +274 -0
  16. package/dist/components/alert-dialog/alert-dialog.js.map +1 -0
  17. package/dist/components/appearance-boundary/appearance-boundary.js +53 -0
  18. package/dist/components/appearance-boundary/appearance-boundary.js.map +1 -0
  19. package/dist/components/avatar/avatar-group.js +142 -0
  20. package/dist/components/avatar/avatar-group.js.map +1 -0
  21. package/dist/components/avatar/avatar.js +174 -0
  22. package/dist/components/avatar/avatar.js.map +1 -0
  23. package/dist/components/badge/badge.js +143 -0
  24. package/dist/components/badge/badge.js.map +1 -0
  25. package/dist/components/breadcrumb/breadcrumb.js +111 -0
  26. package/dist/components/breadcrumb/breadcrumb.js.map +1 -0
  27. package/dist/components/button/button.js +221 -0
  28. package/dist/components/button/button.js.map +1 -0
  29. package/dist/components/button-group/button-group.js +122 -0
  30. package/dist/components/button-group/button-group.js.map +1 -0
  31. package/dist/components/callout/callout.js +313 -0
  32. package/dist/components/callout/callout.js.map +1 -0
  33. package/dist/components/card/card.js +171 -0
  34. package/dist/components/card/card.js.map +1 -0
  35. package/dist/components/checkbox/checkbox.js +124 -0
  36. package/dist/components/checkbox/checkbox.js.map +1 -0
  37. package/dist/components/code-block/code-block.js +422 -0
  38. package/dist/components/code-block/code-block.js.map +1 -0
  39. package/dist/components/code-editor/code-editor.js +667 -0
  40. package/dist/components/code-editor/code-editor.js.map +1 -0
  41. package/dist/components/code-editor/indent.js +35 -0
  42. package/dist/components/code-editor/indent.js.map +1 -0
  43. package/dist/components/collapsible-sidebar/collapsible-sidebar.js +214 -0
  44. package/dist/components/collapsible-sidebar/collapsible-sidebar.js.map +1 -0
  45. package/dist/components/command/command.js +376 -0
  46. package/dist/components/command/command.js.map +1 -0
  47. package/dist/components/data-table/data-table-body.js +84 -0
  48. package/dist/components/data-table/data-table-body.js.map +1 -0
  49. package/dist/components/data-table/data-table-column-header.js +126 -0
  50. package/dist/components/data-table/data-table-column-header.js.map +1 -0
  51. package/dist/components/data-table/data-table-column-visibility.js +79 -0
  52. package/dist/components/data-table/data-table-column-visibility.js.map +1 -0
  53. package/dist/components/data-table/data-table-content.js +98 -0
  54. package/dist/components/data-table/data-table-content.js.map +1 -0
  55. package/dist/components/data-table/data-table-context.js +10 -0
  56. package/dist/components/data-table/data-table-context.js.map +1 -0
  57. package/dist/components/data-table/data-table-error.js +82 -0
  58. package/dist/components/data-table/data-table-error.js.map +1 -0
  59. package/dist/components/data-table/data-table-header.js +98 -0
  60. package/dist/components/data-table/data-table-header.js.map +1 -0
  61. package/dist/components/data-table/data-table-loading.js +37 -0
  62. package/dist/components/data-table/data-table-loading.js.map +1 -0
  63. package/dist/components/data-table/data-table-pagination.js +30 -0
  64. package/dist/components/data-table/data-table-pagination.js.map +1 -0
  65. package/dist/components/data-table/data-table-pinning-utils.js +25 -0
  66. package/dist/components/data-table/data-table-pinning-utils.js.map +1 -0
  67. package/dist/components/data-table/data-table-row.js +161 -0
  68. package/dist/components/data-table/data-table-row.js.map +1 -0
  69. package/dist/components/data-table/data-table-toolbar.js +33 -0
  70. package/dist/components/data-table/data-table-toolbar.js.map +1 -0
  71. package/dist/components/data-table/data-table.js +271 -0
  72. package/dist/components/data-table/data-table.js.map +1 -0
  73. package/dist/components/data-table/get-selected-row-data.js +8 -0
  74. package/dist/components/data-table/get-selected-row-data.js.map +1 -0
  75. package/dist/components/data-table/hooks/use-data-table-content.js +9 -0
  76. package/dist/components/data-table/hooks/use-data-table-content.js.map +1 -0
  77. package/dist/components/data-table/hooks/use-data-table.js +12 -0
  78. package/dist/components/data-table/hooks/use-data-table.js.map +1 -0
  79. package/dist/components/date-range-picker/date-range-picker.js +393 -0
  80. package/dist/components/date-range-picker/date-range-picker.js.map +1 -0
  81. package/dist/components/date-range-picker/range-calendar.js +141 -0
  82. package/dist/components/date-range-picker/range-calendar.js.map +1 -0
  83. package/dist/components/date-time-picker/calendar.js +636 -0
  84. package/dist/components/date-time-picker/calendar.js.map +1 -0
  85. package/dist/components/date-time-picker/date-time-picker-context.js +79 -0
  86. package/dist/components/date-time-picker/date-time-picker-context.js.map +1 -0
  87. package/dist/components/date-time-picker/date-time-picker-input.js +228 -0
  88. package/dist/components/date-time-picker/date-time-picker-input.js.map +1 -0
  89. package/dist/components/date-time-picker/date-time-picker-panel.js +280 -0
  90. package/dist/components/date-time-picker/date-time-picker-panel.js.map +1 -0
  91. package/dist/components/date-time-picker/date-time-picker-popover.js +26 -0
  92. package/dist/components/date-time-picker/date-time-picker-popover.js.map +1 -0
  93. package/dist/components/date-time-picker/date-time-picker-utils.js +103 -0
  94. package/dist/components/date-time-picker/date-time-picker-utils.js.map +1 -0
  95. package/dist/components/date-time-picker/date-time-picker.js +115 -0
  96. package/dist/components/date-time-picker/date-time-picker.js.map +1 -0
  97. package/dist/components/date-time-picker/time-picker.js +275 -0
  98. package/dist/components/date-time-picker/time-picker.js.map +1 -0
  99. package/dist/components/density-provider/density-provider.js +32 -0
  100. package/dist/components/density-provider/density-provider.js.map +1 -0
  101. package/dist/components/dialog/dialog.js +357 -0
  102. package/dist/components/dialog/dialog.js.map +1 -0
  103. package/dist/components/drawer/drawer.js +441 -0
  104. package/dist/components/drawer/drawer.js.map +1 -0
  105. package/dist/components/dropdown-menu/dropdown-menu.js +431 -0
  106. package/dist/components/dropdown-menu/dropdown-menu.js.map +1 -0
  107. package/dist/components/field/field-combobox.js +474 -0
  108. package/dist/components/field/field-combobox.js.map +1 -0
  109. package/dist/components/field/field-select.js +26 -0
  110. package/dist/components/field/field-select.js.map +1 -0
  111. package/dist/components/field/field.js +487 -0
  112. package/dist/components/field/field.js.map +1 -0
  113. package/dist/components/label/label.js +95 -0
  114. package/dist/components/label/label.js.map +1 -0
  115. package/dist/components/list/list.js +746 -0
  116. package/dist/components/list/list.js.map +1 -0
  117. package/dist/components/option-card/option-card.js +454 -0
  118. package/dist/components/option-card/option-card.js.map +1 -0
  119. package/dist/components/pill/pill.js +161 -0
  120. package/dist/components/pill/pill.js.map +1 -0
  121. package/dist/components/popover/popover.js +147 -0
  122. package/dist/components/popover/popover.js.map +1 -0
  123. package/dist/components/radio/radio.js +139 -0
  124. package/dist/components/radio/radio.js.map +1 -0
  125. package/dist/components/scroll-area/scroll-area.js +199 -0
  126. package/dist/components/scroll-area/scroll-area.js.map +1 -0
  127. package/dist/components/scroll-area/scrollbar-styles.js +21 -0
  128. package/dist/components/scroll-area/scrollbar-styles.js.map +1 -0
  129. package/dist/components/scroll-overflow/scroll-overflow.js +476 -0
  130. package/dist/components/scroll-overflow/scroll-overflow.js.map +1 -0
  131. package/dist/components/segmented-control/segmented-control.js +261 -0
  132. package/dist/components/segmented-control/segmented-control.js.map +1 -0
  133. package/dist/components/select/select.js +541 -0
  134. package/dist/components/select/select.js.map +1 -0
  135. package/dist/components/separator/separator.js +41 -0
  136. package/dist/components/separator/separator.js.map +1 -0
  137. package/dist/components/skeleton/skeleton.js +119 -0
  138. package/dist/components/skeleton/skeleton.js.map +1 -0
  139. package/dist/components/slot/compose-as-child.js +21 -0
  140. package/dist/components/slot/compose-as-child.js.map +1 -0
  141. package/dist/components/spinner/spinner.js +94 -0
  142. package/dist/components/spinner/spinner.js.map +1 -0
  143. package/dist/components/surface/surface.js +44 -0
  144. package/dist/components/surface/surface.js.map +1 -0
  145. package/dist/components/switch/switch.js +256 -0
  146. package/dist/components/switch/switch.js.map +1 -0
  147. package/dist/components/table/table-pagination.js +446 -0
  148. package/dist/components/table/table-pagination.js.map +1 -0
  149. package/dist/components/table/table.js +250 -0
  150. package/dist/components/table/table.js.map +1 -0
  151. package/dist/components/tabs/tabs.js +179 -0
  152. package/dist/components/tabs/tabs.js.map +1 -0
  153. package/dist/components/text/text.js +89 -0
  154. package/dist/components/text/text.js.map +1 -0
  155. package/dist/components/toast/toast.js +266 -0
  156. package/dist/components/toast/toast.js.map +1 -0
  157. package/dist/components/toggle/toggle-group.js +47 -0
  158. package/dist/components/toggle/toggle-group.js.map +1 -0
  159. package/dist/components/toggle/toggle.js +122 -0
  160. package/dist/components/toggle/toggle.js.map +1 -0
  161. package/dist/components/tooltip/tooltip.js +169 -0
  162. package/dist/components/tooltip/tooltip.js.map +1 -0
  163. package/dist/delivery/index.d.ts +56 -0
  164. package/dist/delivery/index.js +12 -0
  165. package/dist/delivery/index.js.map +1 -0
  166. package/dist/index.d.ts +9679 -0
  167. package/dist/index.js +308 -0
  168. package/dist/index.js.map +1 -0
  169. package/dist/lib/clear-button.js +51 -0
  170. package/dist/lib/clear-button.js.map +1 -0
  171. package/dist/lib/code-highlight.js +113 -0
  172. package/dist/lib/code-highlight.js.map +1 -0
  173. package/dist/lib/code-lines.js +65 -0
  174. package/dist/lib/code-lines.js.map +1 -0
  175. package/dist/lib/code-tokens.js +126 -0
  176. package/dist/lib/code-tokens.js.map +1 -0
  177. package/dist/lib/icons.js +15 -0
  178. package/dist/lib/icons.js.map +1 -0
  179. package/dist/lib/pagination.js +46 -0
  180. package/dist/lib/pagination.js.map +1 -0
  181. package/dist/packages/tokens/dist/delivery/index.js +54 -0
  182. package/dist/packages/tokens/dist/delivery/index.js.map +1 -0
  183. package/dist/packages/tokens/dist/delivery/internal.js +181 -0
  184. package/dist/packages/tokens/dist/delivery/internal.js.map +1 -0
  185. package/dist/packages/tokens/dist/generated/core.meta.generated.js +10 -0
  186. package/dist/packages/tokens/dist/generated/core.meta.generated.js.map +1 -0
  187. package/dist/packages/tokens/dist/generated/palette.generated.js +8 -0
  188. package/dist/packages/tokens/dist/generated/palette.generated.js.map +1 -0
  189. package/dist/packages/tokens/dist/install.js +31 -0
  190. package/dist/packages/tokens/dist/install.js.map +1 -0
  191. package/dist/styles/document-context.js +12 -0
  192. package/dist/styles/document-context.js.map +1 -0
  193. package/dist/styles/make-styles.js +27 -0
  194. package/dist/styles/make-styles.js.map +1 -0
  195. package/dist/styles/text-box.js +7 -0
  196. package/dist/styles/text-box.js.map +1 -0
  197. package/dist/token-assets/core/5cd4072decf5df2a664f0b1d5f2ec250a3309101ded3056c1f87c8bbe3738d50.css +22 -0
  198. package/dist/tokens/core.meta.generated.js +5 -0
  199. package/dist/tokens/core.meta.generated.js.map +1 -0
  200. package/dist/tokens/index.d.ts +1107 -0
  201. package/dist/tokens/index.js +1109 -0
  202. package/dist/tokens/index.js.map +1 -0
  203. package/dist/tokens/palette.generated.js +5 -0
  204. package/dist/tokens/palette.generated.js.map +1 -0
  205. package/dist/tokens/use-palette-tokens.js +20 -0
  206. package/dist/tokens/use-palette-tokens.js.map +1 -0
  207. package/dist/tokens.json +2240 -0
  208. package/dist/vendor/.bun/@dnd-kit_accessibility@3.1.1_62547eec5a2188e3/vendor/@dnd-kit/accessibility/dist/accessibility.esm.js +57 -0
  209. package/dist/vendor/.bun/@dnd-kit_accessibility@3.1.1_62547eec5a2188e3/vendor/@dnd-kit/accessibility/dist/accessibility.esm.js.map +1 -0
  210. package/dist/vendor/.bun/@dnd-kit_core@6.3.1_6f4b9a1cfb20c0ae/vendor/@dnd-kit/core/dist/core.esm.js +2599 -0
  211. package/dist/vendor/.bun/@dnd-kit_core@6.3.1_6f4b9a1cfb20c0ae/vendor/@dnd-kit/core/dist/core.esm.js.map +1 -0
  212. package/dist/vendor/.bun/@dnd-kit_sortable@10.0.0_1d291640e1250bbe/vendor/@dnd-kit/sortable/dist/sortable.esm.js +368 -0
  213. package/dist/vendor/.bun/@dnd-kit_sortable@10.0.0_1d291640e1250bbe/vendor/@dnd-kit/sortable/dist/sortable.esm.js.map +1 -0
  214. package/dist/vendor/.bun/@dnd-kit_utilities@3.2.2_62547eec5a2188e3/vendor/@dnd-kit/utilities/dist/utilities.esm.js +236 -0
  215. package/dist/vendor/.bun/@dnd-kit_utilities@3.2.2_62547eec5a2188e3/vendor/@dnd-kit/utilities/dist/utilities.esm.js.map +1 -0
  216. package/dist/vendor/.bun/@floating-ui_core@1.8.0/vendor/@floating-ui/core/dist/floating-ui.core.js +512 -0
  217. package/dist/vendor/.bun/@floating-ui_core@1.8.0/vendor/@floating-ui/core/dist/floating-ui.core.js.map +1 -0
  218. package/dist/vendor/.bun/@floating-ui_dom@1.8.0/vendor/@floating-ui/dom/dist/floating-ui.dom.js +396 -0
  219. package/dist/vendor/.bun/@floating-ui_dom@1.8.0/vendor/@floating-ui/dom/dist/floating-ui.dom.js.map +1 -0
  220. package/dist/vendor/.bun/@floating-ui_react-dom@2.1.9_6f4b9a1cfb20c0ae/vendor/@floating-ui/react-dom/dist/floating-ui.react-dom.js +233 -0
  221. package/dist/vendor/.bun/@floating-ui_react-dom@2.1.9_6f4b9a1cfb20c0ae/vendor/@floating-ui/react-dom/dist/floating-ui.react-dom.js.map +1 -0
  222. package/dist/vendor/.bun/@floating-ui_utils@0.2.12/vendor/@floating-ui/utils/dist/floating-ui.utils.dom.js +137 -0
  223. package/dist/vendor/.bun/@floating-ui_utils@0.2.12/vendor/@floating-ui/utils/dist/floating-ui.utils.dom.js.map +1 -0
  224. package/dist/vendor/.bun/@floating-ui_utils@0.2.12/vendor/@floating-ui/utils/dist/floating-ui.utils.js +129 -0
  225. package/dist/vendor/.bun/@floating-ui_utils@0.2.12/vendor/@floating-ui/utils/dist/floating-ui.utils.js.map +1 -0
  226. package/dist/vendor/.bun/@radix-ui_number@1.1.1/vendor/@radix-ui/number/dist/index.js +7 -0
  227. package/dist/vendor/.bun/@radix-ui_number@1.1.1/vendor/@radix-ui/number/dist/index.js.map +1 -0
  228. package/dist/vendor/.bun/@radix-ui_primitive@1.1.3/vendor/@radix-ui/primitive/dist/index.js +10 -0
  229. package/dist/vendor/.bun/@radix-ui_primitive@1.1.3/vendor/@radix-ui/primitive/dist/index.js.map +1 -0
  230. package/dist/vendor/.bun/@radix-ui_react-accordion@1.2.12_2b23df507bdda662/vendor/@radix-ui/react-accordion/dist/index.js +240 -0
  231. package/dist/vendor/.bun/@radix-ui_react-accordion@1.2.12_2b23df507bdda662/vendor/@radix-ui/react-accordion/dist/index.js.map +1 -0
  232. package/dist/vendor/.bun/@radix-ui_react-alert-dialog@1.1.15_2b23df507bdda662/vendor/@radix-ui/react-alert-dialog/dist/index.js +128 -0
  233. package/dist/vendor/.bun/@radix-ui_react-alert-dialog@1.1.15_2b23df507bdda662/vendor/@radix-ui/react-alert-dialog/dist/index.js.map +1 -0
  234. package/dist/vendor/.bun/@radix-ui_react-arrow@1.1.7_2b23df507bdda662/vendor/@radix-ui/react-arrow/dist/index.js +25 -0
  235. package/dist/vendor/.bun/@radix-ui_react-arrow@1.1.7_2b23df507bdda662/vendor/@radix-ui/react-arrow/dist/index.js.map +1 -0
  236. package/dist/vendor/.bun/@radix-ui_react-avatar@1.1.10_2b23df507bdda662/vendor/@radix-ui/react-avatar/dist/index.js +76 -0
  237. package/dist/vendor/.bun/@radix-ui_react-avatar@1.1.10_2b23df507bdda662/vendor/@radix-ui/react-avatar/dist/index.js.map +1 -0
  238. package/dist/vendor/.bun/@radix-ui_react-checkbox@1.3.3_2b23df507bdda662/vendor/@radix-ui/react-checkbox/dist/index.js +252 -0
  239. package/dist/vendor/.bun/@radix-ui_react-checkbox@1.3.3_2b23df507bdda662/vendor/@radix-ui/react-checkbox/dist/index.js.map +1 -0
  240. package/dist/vendor/.bun/@radix-ui_react-collapsible@1.1.12_2b23df507bdda662/vendor/@radix-ui/react-collapsible/dist/index.js +121 -0
  241. package/dist/vendor/.bun/@radix-ui_react-collapsible@1.1.12_2b23df507bdda662/vendor/@radix-ui/react-collapsible/dist/index.js.map +1 -0
  242. package/dist/vendor/.bun/@radix-ui_react-collection@1.1.7_2b23df507bdda662/vendor/@radix-ui/react-collection/dist/index.js +49 -0
  243. package/dist/vendor/.bun/@radix-ui_react-collection@1.1.7_2b23df507bdda662/vendor/@radix-ui/react-collection/dist/index.js.map +1 -0
  244. package/dist/vendor/.bun/@radix-ui_react-compose-refs@1.1.2_0ac650c021fb1b59/vendor/@radix-ui/react-compose-refs/dist/index.js +30 -0
  245. package/dist/vendor/.bun/@radix-ui_react-compose-refs@1.1.2_0ac650c021fb1b59/vendor/@radix-ui/react-compose-refs/dist/index.js.map +1 -0
  246. package/dist/vendor/.bun/@radix-ui_react-context@1.1.2_0ac650c021fb1b59/vendor/@radix-ui/react-context/dist/index.js +71 -0
  247. package/dist/vendor/.bun/@radix-ui_react-context@1.1.2_0ac650c021fb1b59/vendor/@radix-ui/react-context/dist/index.js.map +1 -0
  248. package/dist/vendor/.bun/@radix-ui_react-dialog@1.1.15_2b23df507bdda662/vendor/@radix-ui/react-dialog/dist/index.js +263 -0
  249. package/dist/vendor/.bun/@radix-ui_react-dialog@1.1.15_2b23df507bdda662/vendor/@radix-ui/react-dialog/dist/index.js.map +1 -0
  250. package/dist/vendor/.bun/@radix-ui_react-direction@1.1.1_0ac650c021fb1b59/vendor/@radix-ui/react-direction/dist/index.js +11 -0
  251. package/dist/vendor/.bun/@radix-ui_react-direction@1.1.1_0ac650c021fb1b59/vendor/@radix-ui/react-direction/dist/index.js.map +1 -0
  252. package/dist/vendor/.bun/@radix-ui_react-dismissable-layer@1.1.11_2b23df507bdda662/vendor/@radix-ui/react-dismissable-layer/dist/index.js +128 -0
  253. package/dist/vendor/.bun/@radix-ui_react-dismissable-layer@1.1.11_2b23df507bdda662/vendor/@radix-ui/react-dismissable-layer/dist/index.js.map +1 -0
  254. package/dist/vendor/.bun/@radix-ui_react-dropdown-menu@2.1.16_2b23df507bdda662/vendor/@radix-ui/react-dropdown-menu/dist/index.js +228 -0
  255. package/dist/vendor/.bun/@radix-ui_react-dropdown-menu@2.1.16_2b23df507bdda662/vendor/@radix-ui/react-dropdown-menu/dist/index.js.map +1 -0
  256. package/dist/vendor/.bun/@radix-ui_react-focus-guards@1.1.3_0ac650c021fb1b59/vendor/@radix-ui/react-focus-guards/dist/index.js +18 -0
  257. package/dist/vendor/.bun/@radix-ui_react-focus-guards@1.1.3_0ac650c021fb1b59/vendor/@radix-ui/react-focus-guards/dist/index.js.map +1 -0
  258. package/dist/vendor/.bun/@radix-ui_react-focus-scope@1.1.7_2b23df507bdda662/vendor/@radix-ui/react-focus-scope/dist/index.js +138 -0
  259. package/dist/vendor/.bun/@radix-ui_react-focus-scope@1.1.7_2b23df507bdda662/vendor/@radix-ui/react-focus-scope/dist/index.js.map +1 -0
  260. package/dist/vendor/.bun/@radix-ui_react-id@1.1.1_0ac650c021fb1b59/vendor/@radix-ui/react-id/dist/index.js +14 -0
  261. package/dist/vendor/.bun/@radix-ui_react-id@1.1.1_0ac650c021fb1b59/vendor/@radix-ui/react-id/dist/index.js.map +1 -0
  262. package/dist/vendor/.bun/@radix-ui_react-menu@2.1.16_2b23df507bdda662/vendor/@radix-ui/react-menu/dist/index.js +653 -0
  263. package/dist/vendor/.bun/@radix-ui_react-menu@2.1.16_2b23df507bdda662/vendor/@radix-ui/react-menu/dist/index.js.map +1 -0
  264. package/dist/vendor/.bun/@radix-ui_react-popover@1.1.15_2b23df507bdda662/vendor/@radix-ui/react-popover/dist/index.js +244 -0
  265. package/dist/vendor/.bun/@radix-ui_react-popover@1.1.15_2b23df507bdda662/vendor/@radix-ui/react-popover/dist/index.js.map +1 -0
  266. package/dist/vendor/.bun/@radix-ui_react-popper@1.2.8_2b23df507bdda662/vendor/@radix-ui/react-popper/dist/index.js +222 -0
  267. package/dist/vendor/.bun/@radix-ui_react-popper@1.2.8_2b23df507bdda662/vendor/@radix-ui/react-popper/dist/index.js.map +1 -0
  268. package/dist/vendor/.bun/@radix-ui_react-portal@1.1.9_2b23df507bdda662/vendor/@radix-ui/react-portal/dist/index.js +17 -0
  269. package/dist/vendor/.bun/@radix-ui_react-portal@1.1.9_2b23df507bdda662/vendor/@radix-ui/react-portal/dist/index.js.map +1 -0
  270. package/dist/vendor/.bun/@radix-ui_react-presence@1.1.5_2b23df507bdda662/vendor/@radix-ui/react-presence/dist/index.js +72 -0
  271. package/dist/vendor/.bun/@radix-ui_react-presence@1.1.5_2b23df507bdda662/vendor/@radix-ui/react-presence/dist/index.js.map +1 -0
  272. package/dist/vendor/.bun/@radix-ui_react-primitive@2.1.3_2b23df507bdda662/vendor/@radix-ui/react-primitive/dist/index.js +37 -0
  273. package/dist/vendor/.bun/@radix-ui_react-primitive@2.1.3_2b23df507bdda662/vendor/@radix-ui/react-primitive/dist/index.js.map +1 -0
  274. package/dist/vendor/.bun/@radix-ui_react-radio-group@1.3.8_2b23df507bdda662/vendor/@radix-ui/react-radio-group/dist/index.js +239 -0
  275. package/dist/vendor/.bun/@radix-ui_react-radio-group@1.3.8_2b23df507bdda662/vendor/@radix-ui/react-radio-group/dist/index.js.map +1 -0
  276. package/dist/vendor/.bun/@radix-ui_react-roving-focus@1.1.11_2b23df507bdda662/vendor/@radix-ui/react-roving-focus/dist/index.js +184 -0
  277. package/dist/vendor/.bun/@radix-ui_react-roving-focus@1.1.11_2b23df507bdda662/vendor/@radix-ui/react-roving-focus/dist/index.js.map +1 -0
  278. package/dist/vendor/.bun/@radix-ui_react-scroll-area@1.2.10_2b23df507bdda662/vendor/@radix-ui/react-scroll-area/dist/index.js +535 -0
  279. package/dist/vendor/.bun/@radix-ui_react-scroll-area@1.2.10_2b23df507bdda662/vendor/@radix-ui/react-scroll-area/dist/index.js.map +1 -0
  280. package/dist/vendor/.bun/@radix-ui_react-select@2.2.6_2b23df507bdda662/vendor/@radix-ui/react-select/dist/index.js +863 -0
  281. package/dist/vendor/.bun/@radix-ui_react-select@2.2.6_2b23df507bdda662/vendor/@radix-ui/react-select/dist/index.js.map +1 -0
  282. package/dist/vendor/.bun/@radix-ui_react-slot@1.2.3_0ac650c021fb1b59/vendor/@radix-ui/react-slot/dist/index.js +57 -0
  283. package/dist/vendor/.bun/@radix-ui_react-slot@1.2.3_0ac650c021fb1b59/vendor/@radix-ui/react-slot/dist/index.js.map +1 -0
  284. package/dist/vendor/.bun/@radix-ui_react-slot@1.2.4_0ac650c021fb1b59/vendor/@radix-ui/react-slot/dist/index.js +63 -0
  285. package/dist/vendor/.bun/@radix-ui_react-slot@1.2.4_0ac650c021fb1b59/vendor/@radix-ui/react-slot/dist/index.js.map +1 -0
  286. package/dist/vendor/.bun/@radix-ui_react-switch@1.2.6_2b23df507bdda662/vendor/@radix-ui/react-switch/dist/index.js +133 -0
  287. package/dist/vendor/.bun/@radix-ui_react-switch@1.2.6_2b23df507bdda662/vendor/@radix-ui/react-switch/dist/index.js.map +1 -0
  288. package/dist/vendor/.bun/@radix-ui_react-tabs@1.1.13_2b23df507bdda662/vendor/@radix-ui/react-tabs/dist/index.js +164 -0
  289. package/dist/vendor/.bun/@radix-ui_react-tabs@1.1.13_2b23df507bdda662/vendor/@radix-ui/react-tabs/dist/index.js.map +1 -0
  290. package/dist/vendor/.bun/@radix-ui_react-toggle-group@1.1.11_2b23df507bdda662/vendor/@radix-ui/react-toggle-group/dist/index.js +138 -0
  291. package/dist/vendor/.bun/@radix-ui_react-toggle-group@1.1.11_2b23df507bdda662/vendor/@radix-ui/react-toggle-group/dist/index.js.map +1 -0
  292. package/dist/vendor/.bun/@radix-ui_react-toggle@1.1.10_2b23df507bdda662/vendor/@radix-ui/react-toggle/dist/index.js +34 -0
  293. package/dist/vendor/.bun/@radix-ui_react-toggle@1.1.10_2b23df507bdda662/vendor/@radix-ui/react-toggle/dist/index.js.map +1 -0
  294. package/dist/vendor/.bun/@radix-ui_react-tooltip@1.2.8_2b23df507bdda662/vendor/@radix-ui/react-tooltip/dist/index.js +340 -0
  295. package/dist/vendor/.bun/@radix-ui_react-tooltip@1.2.8_2b23df507bdda662/vendor/@radix-ui/react-tooltip/dist/index.js.map +1 -0
  296. package/dist/vendor/.bun/@radix-ui_react-use-callback-ref@1.1.1_0ac650c021fb1b59/vendor/@radix-ui/react-use-callback-ref/dist/index.js +14 -0
  297. package/dist/vendor/.bun/@radix-ui_react-use-callback-ref@1.1.1_0ac650c021fb1b59/vendor/@radix-ui/react-use-callback-ref/dist/index.js.map +1 -0
  298. package/dist/vendor/.bun/@radix-ui_react-use-controllable-state@1.2.2_0ac650c021fb1b59/vendor/@radix-ui/react-use-controllable-state/dist/index.js +55 -0
  299. package/dist/vendor/.bun/@radix-ui_react-use-controllable-state@1.2.2_0ac650c021fb1b59/vendor/@radix-ui/react-use-controllable-state/dist/index.js.map +1 -0
  300. package/dist/vendor/.bun/@radix-ui_react-use-escape-keydown@1.1.1_0ac650c021fb1b59/vendor/@radix-ui/react-use-escape-keydown/dist/index.js +15 -0
  301. package/dist/vendor/.bun/@radix-ui_react-use-escape-keydown@1.1.1_0ac650c021fb1b59/vendor/@radix-ui/react-use-escape-keydown/dist/index.js.map +1 -0
  302. package/dist/vendor/.bun/@radix-ui_react-use-is-hydrated@0.1.0_0ac650c021fb1b59/vendor/@radix-ui/react-use-is-hydrated/dist/index.js +16 -0
  303. package/dist/vendor/.bun/@radix-ui_react-use-is-hydrated@0.1.0_0ac650c021fb1b59/vendor/@radix-ui/react-use-is-hydrated/dist/index.js.map +1 -0
  304. package/dist/vendor/.bun/@radix-ui_react-use-layout-effect@1.1.1_0ac650c021fb1b59/vendor/@radix-ui/react-use-layout-effect/dist/index.js +7 -0
  305. package/dist/vendor/.bun/@radix-ui_react-use-layout-effect@1.1.1_0ac650c021fb1b59/vendor/@radix-ui/react-use-layout-effect/dist/index.js.map +1 -0
  306. package/dist/vendor/.bun/@radix-ui_react-use-previous@1.1.1_0ac650c021fb1b59/vendor/@radix-ui/react-use-previous/dist/index.js +9 -0
  307. package/dist/vendor/.bun/@radix-ui_react-use-previous@1.1.1_0ac650c021fb1b59/vendor/@radix-ui/react-use-previous/dist/index.js.map +1 -0
  308. package/dist/vendor/.bun/@radix-ui_react-use-size@1.1.1_0ac650c021fb1b59/vendor/@radix-ui/react-use-size/dist/index.js +28 -0
  309. package/dist/vendor/.bun/@radix-ui_react-use-size@1.1.1_0ac650c021fb1b59/vendor/@radix-ui/react-use-size/dist/index.js.map +1 -0
  310. package/dist/vendor/.bun/@radix-ui_react-visually-hidden@1.2.3_2b23df507bdda662/vendor/@radix-ui/react-visually-hidden/dist/index.js +33 -0
  311. package/dist/vendor/.bun/@radix-ui_react-visually-hidden@1.2.3_2b23df507bdda662/vendor/@radix-ui/react-visually-hidden/dist/index.js.map +1 -0
  312. package/dist/vendor/.bun/@tanstack_react-table@8.21.3_6f4b9a1cfb20c0ae/vendor/@tanstack/react-table/build/lib/index.js +103 -0
  313. package/dist/vendor/.bun/@tanstack_react-table@8.21.3_6f4b9a1cfb20c0ae/vendor/@tanstack/react-table/build/lib/index.js.map +1 -0
  314. package/dist/vendor/.bun/@tanstack_table-core@8.21.3/vendor/@tanstack/table-core/build/lib/index.js +1896 -0
  315. package/dist/vendor/.bun/@tanstack_table-core@8.21.3/vendor/@tanstack/table-core/build/lib/index.js.map +1 -0
  316. package/dist/vendor/.bun/aria-hidden@1.2.6/vendor/aria-hidden/dist/es2015/index.js +53 -0
  317. package/dist/vendor/.bun/aria-hidden@1.2.6/vendor/aria-hidden/dist/es2015/index.js.map +1 -0
  318. package/dist/vendor/.bun/character-entities-legacy@3.0.0/vendor/character-entities-legacy/index.js +112 -0
  319. package/dist/vendor/.bun/character-entities-legacy@3.0.0/vendor/character-entities-legacy/index.js.map +1 -0
  320. package/dist/vendor/.bun/character-entities@2.0.2/vendor/character-entities/index.js +2132 -0
  321. package/dist/vendor/.bun/character-entities@2.0.2/vendor/character-entities/index.js.map +1 -0
  322. package/dist/vendor/.bun/character-reference-invalid@2.0.1/vendor/character-reference-invalid/index.js +34 -0
  323. package/dist/vendor/.bun/character-reference-invalid@2.0.1/vendor/character-reference-invalid/index.js.map +1 -0
  324. package/dist/vendor/.bun/cmdk@1.1.1_2b23df507bdda662/vendor/cmdk/dist/chunk-NZJY6EH4.js +18 -0
  325. package/dist/vendor/.bun/cmdk@1.1.1_2b23df507bdda662/vendor/cmdk/dist/chunk-NZJY6EH4.js.map +1 -0
  326. package/dist/vendor/.bun/cmdk@1.1.1_2b23df507bdda662/vendor/cmdk/dist/index.js +313 -0
  327. package/dist/vendor/.bun/cmdk@1.1.1_2b23df507bdda662/vendor/cmdk/dist/index.js.map +1 -0
  328. package/dist/vendor/.bun/comma-separated-tokens@2.0.3/vendor/comma-separated-tokens/index.js +14 -0
  329. package/dist/vendor/.bun/comma-separated-tokens@2.0.3/vendor/comma-separated-tokens/index.js.map +1 -0
  330. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/_lib/addLeadingZeros.js +8 -0
  331. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/_lib/addLeadingZeros.js.map +1 -0
  332. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/_lib/defaultOptions.js +8 -0
  333. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/_lib/defaultOptions.js.map +1 -0
  334. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/_lib/format/formatters.js +584 -0
  335. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/_lib/format/formatters.js.map +1 -0
  336. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/_lib/format/lightFormatters.js +60 -0
  337. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/_lib/format/lightFormatters.js.map +1 -0
  338. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/_lib/format/longFormatters.js +53 -0
  339. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/_lib/format/longFormatters.js.map +1 -0
  340. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/_lib/getTimezoneOffsetInMilliseconds.js +19 -0
  341. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/_lib/getTimezoneOffsetInMilliseconds.js.map +1 -0
  342. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/_lib/normalizeDates.js +12 -0
  343. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/_lib/normalizeDates.js.map +1 -0
  344. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/_lib/normalizeInterval.js +9 -0
  345. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/_lib/normalizeInterval.js.map +1 -0
  346. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/_lib/protectedTokens.js +21 -0
  347. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/_lib/protectedTokens.js.map +1 -0
  348. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/addDays.js +10 -0
  349. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/addDays.js.map +1 -0
  350. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/addMonths.js +20 -0
  351. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/addMonths.js.map +1 -0
  352. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/constants.js +10 -0
  353. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/constants.js.map +1 -0
  354. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/constructFrom.js +8 -0
  355. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/constructFrom.js.map +1 -0
  356. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/constructNow.js +8 -0
  357. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/constructNow.js.map +1 -0
  358. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/differenceInCalendarDays.js +16 -0
  359. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/differenceInCalendarDays.js.map +1 -0
  360. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/eachDayOfInterval.js +17 -0
  361. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/eachDayOfInterval.js.map +1 -0
  362. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/endOfWeek.js +9 -0
  363. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/endOfWeek.js.map +1 -0
  364. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/format.js +59 -0
  365. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/format.js.map +1 -0
  366. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/getDayOfYear.js +11 -0
  367. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/getDayOfYear.js.map +1 -0
  368. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/getDefaultOptions.js +8 -0
  369. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/getDefaultOptions.js.map +1 -0
  370. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/getISODay.js +9 -0
  371. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/getISODay.js.map +1 -0
  372. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/getISOWeek.js +12 -0
  373. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/getISOWeek.js.map +1 -0
  374. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/getISOWeekYear.js +15 -0
  375. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/getISOWeekYear.js.map +1 -0
  376. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/getWeek.js +12 -0
  377. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/getWeek.js.map +1 -0
  378. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/getWeekYear.js +17 -0
  379. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/getWeekYear.js.map +1 -0
  380. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/isAfter.js +8 -0
  381. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/isAfter.js.map +1 -0
  382. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/isBefore.js +8 -0
  383. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/isBefore.js.map +1 -0
  384. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/isDate.js +7 -0
  385. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/isDate.js.map +1 -0
  386. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/isSameDay.js +14 -0
  387. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/isSameDay.js.map +1 -0
  388. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/isSameMonth.js +13 -0
  389. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/isSameMonth.js.map +1 -0
  390. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/isToday.js +13 -0
  391. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/isToday.js.map +1 -0
  392. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/isValid.js +9 -0
  393. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/isValid.js.map +1 -0
  394. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/locale/_lib/buildFormatLongFn.js +10 -0
  395. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/locale/_lib/buildFormatLongFn.js.map +1 -0
  396. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/locale/_lib/buildLocalizeFn.js +19 -0
  397. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/locale/_lib/buildLocalizeFn.js.map +1 -0
  398. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/locale/_lib/buildMatchFn.js +32 -0
  399. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/locale/_lib/buildMatchFn.js.map +1 -0
  400. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/locale/_lib/buildMatchPatternFn.js +16 -0
  401. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/locale/_lib/buildMatchPatternFn.js.map +1 -0
  402. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/locale/de/_lib/formatDistance.js +164 -0
  403. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/locale/de/_lib/formatDistance.js.map +1 -0
  404. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/locale/de/_lib/formatLong.js +38 -0
  405. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/locale/de/_lib/formatLong.js.map +1 -0
  406. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/locale/de/_lib/formatRelative.js +12 -0
  407. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/locale/de/_lib/formatRelative.js.map +1 -0
  408. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/locale/de/_lib/localize.js +162 -0
  409. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/locale/de/_lib/localize.js.map +1 -0
  410. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/locale/de/_lib/match.js +113 -0
  411. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/locale/de/_lib/match.js.map +1 -0
  412. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/locale/de.js +21 -0
  413. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/locale/de.js.map +1 -0
  414. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/locale/en-US/_lib/formatDistance.js +71 -0
  415. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/locale/en-US/_lib/formatDistance.js.map +1 -0
  416. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/locale/en-US/_lib/formatLong.js +34 -0
  417. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/locale/en-US/_lib/formatLong.js.map +1 -0
  418. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/locale/en-US/_lib/formatRelative.js +12 -0
  419. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/locale/en-US/_lib/formatRelative.js.map +1 -0
  420. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/locale/en-US/_lib/localize.js +156 -0
  421. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/locale/en-US/_lib/localize.js.map +1 -0
  422. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/locale/en-US/_lib/match.js +111 -0
  423. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/locale/en-US/_lib/match.js.map +1 -0
  424. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/locale/en-US.js +21 -0
  425. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/locale/en-US.js.map +1 -0
  426. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/locale/fr/_lib/formatDistance.js +71 -0
  427. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/locale/fr/_lib/formatDistance.js.map +1 -0
  428. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/locale/fr/_lib/formatLong.js +34 -0
  429. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/locale/fr/_lib/formatLong.js.map +1 -0
  430. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/locale/fr/_lib/formatRelative.js +12 -0
  431. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/locale/fr/_lib/formatRelative.js.map +1 -0
  432. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/locale/fr/_lib/localize.js +122 -0
  433. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/locale/fr/_lib/localize.js.map +1 -0
  434. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/locale/fr/_lib/match.js +111 -0
  435. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/locale/fr/_lib/match.js.map +1 -0
  436. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/locale/fr.js +21 -0
  437. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/locale/fr.js.map +1 -0
  438. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse/_lib/Parser.js +23 -0
  439. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse/_lib/Parser.js.map +1 -0
  440. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse/_lib/Setter.js +42 -0
  441. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse/_lib/Setter.js.map +1 -0
  442. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse/_lib/constants.js +50 -0
  443. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse/_lib/constants.js.map +1 -0
  444. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse/_lib/parsers/AMPMMidnightParser.js +50 -0
  445. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse/_lib/parsers/AMPMMidnightParser.js.map +1 -0
  446. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse/_lib/parsers/AMPMParser.js +50 -0
  447. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse/_lib/parsers/AMPMParser.js.map +1 -0
  448. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse/_lib/parsers/DateParser.js +62 -0
  449. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse/_lib/parsers/DateParser.js.map +1 -0
  450. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse/_lib/parsers/DayOfYearParser.js +52 -0
  451. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse/_lib/parsers/DayOfYearParser.js.map +1 -0
  452. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse/_lib/parsers/DayParser.js +50 -0
  453. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse/_lib/parsers/DayParser.js.map +1 -0
  454. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse/_lib/parsers/DayPeriodParser.js +50 -0
  455. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse/_lib/parsers/DayPeriodParser.js.map +1 -0
  456. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse/_lib/parsers/EraParser.js +34 -0
  457. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse/_lib/parsers/EraParser.js.map +1 -0
  458. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse/_lib/parsers/ExtendedYearParser.js +22 -0
  459. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse/_lib/parsers/ExtendedYearParser.js.map +1 -0
  460. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse/_lib/parsers/FractionOfSecondParser.js +23 -0
  461. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse/_lib/parsers/FractionOfSecondParser.js.map +1 -0
  462. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse/_lib/parsers/Hour0To11Parser.js +33 -0
  463. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse/_lib/parsers/Hour0To11Parser.js.map +1 -0
  464. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse/_lib/parsers/Hour0to23Parser.js +33 -0
  465. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse/_lib/parsers/Hour0to23Parser.js.map +1 -0
  466. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse/_lib/parsers/Hour1To24Parser.js +34 -0
  467. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse/_lib/parsers/Hour1To24Parser.js.map +1 -0
  468. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse/_lib/parsers/Hour1to12Parser.js +34 -0
  469. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse/_lib/parsers/Hour1to12Parser.js.map +1 -0
  470. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse/_lib/parsers/ISODayParser.js +106 -0
  471. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse/_lib/parsers/ISODayParser.js.map +1 -0
  472. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse/_lib/parsers/ISOTimezoneParser.js +49 -0
  473. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse/_lib/parsers/ISOTimezoneParser.js.map +1 -0
  474. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse/_lib/parsers/ISOTimezoneWithZParser.js +49 -0
  475. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse/_lib/parsers/ISOTimezoneWithZParser.js.map +1 -0
  476. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse/_lib/parsers/ISOWeekParser.js +50 -0
  477. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse/_lib/parsers/ISOWeekParser.js.map +1 -0
  478. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse/_lib/parsers/ISOWeekYearParser.js +41 -0
  479. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse/_lib/parsers/ISOWeekYearParser.js.map +1 -0
  480. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse/_lib/parsers/LocalDayParser.js +81 -0
  481. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse/_lib/parsers/LocalDayParser.js.map +1 -0
  482. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse/_lib/parsers/LocalWeekParser.js +49 -0
  483. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse/_lib/parsers/LocalWeekParser.js.map +1 -0
  484. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse/_lib/parsers/LocalWeekYearParser.js +70 -0
  485. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse/_lib/parsers/LocalWeekYearParser.js.map +1 -0
  486. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse/_lib/parsers/MinuteParser.js +33 -0
  487. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse/_lib/parsers/MinuteParser.js.map +1 -0
  488. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse/_lib/parsers/MonthParser.js +78 -0
  489. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse/_lib/parsers/MonthParser.js.map +1 -0
  490. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse/_lib/parsers/QuarterParser.js +76 -0
  491. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse/_lib/parsers/QuarterParser.js.map +1 -0
  492. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse/_lib/parsers/SecondParser.js +33 -0
  493. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse/_lib/parsers/SecondParser.js.map +1 -0
  494. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse/_lib/parsers/StandAloneLocalDayParser.js +81 -0
  495. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse/_lib/parsers/StandAloneLocalDayParser.js.map +1 -0
  496. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse/_lib/parsers/StandAloneMonthParser.js +78 -0
  497. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse/_lib/parsers/StandAloneMonthParser.js.map +1 -0
  498. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse/_lib/parsers/StandAloneQuarterParser.js +76 -0
  499. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse/_lib/parsers/StandAloneQuarterParser.js.map +1 -0
  500. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse/_lib/parsers/TimestampMillisecondsParser.js +23 -0
  501. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse/_lib/parsers/TimestampMillisecondsParser.js.map +1 -0
  502. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse/_lib/parsers/TimestampSecondsParser.js +23 -0
  503. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse/_lib/parsers/TimestampSecondsParser.js.map +1 -0
  504. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse/_lib/parsers/YearParser.js +50 -0
  505. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse/_lib/parsers/YearParser.js.map +1 -0
  506. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse/_lib/parsers.js +68 -0
  507. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse/_lib/parsers.js.map +1 -0
  508. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse/_lib/utils.js +104 -0
  509. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse/_lib/utils.js.map +1 -0
  510. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse.js +89 -0
  511. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/parse.js.map +1 -0
  512. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/setDay.js +12 -0
  513. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/setDay.js.map +1 -0
  514. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/setHours.js +9 -0
  515. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/setHours.js.map +1 -0
  516. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/setISODay.js +11 -0
  517. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/setISODay.js.map +1 -0
  518. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/setISOWeek.js +10 -0
  519. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/setISOWeek.js.map +1 -0
  520. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/setMinutes.js +9 -0
  521. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/setMinutes.js.map +1 -0
  522. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/setWeek.js +10 -0
  523. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/setWeek.js.map +1 -0
  524. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/startOfDay.js +9 -0
  525. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/startOfDay.js.map +1 -0
  526. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/startOfISOWeek.js +8 -0
  527. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/startOfISOWeek.js.map +1 -0
  528. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/startOfISOWeekYear.js +11 -0
  529. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/startOfISOWeekYear.js.map +1 -0
  530. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/startOfMonth.js +9 -0
  531. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/startOfMonth.js.map +1 -0
  532. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/startOfWeek.js +11 -0
  533. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/startOfWeek.js.map +1 -0
  534. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/startOfWeekYear.js +13 -0
  535. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/startOfWeekYear.js.map +1 -0
  536. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/startOfYear.js +9 -0
  537. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/startOfYear.js.map +1 -0
  538. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/subMonths.js +8 -0
  539. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/subMonths.js.map +1 -0
  540. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/toDate.js +8 -0
  541. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/toDate.js.map +1 -0
  542. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/transpose.js +18 -0
  543. package/dist/vendor/.bun/date-fns@4.1.0/vendor/date-fns/transpose.js.map +1 -0
  544. package/dist/vendor/.bun/decode-named-character-reference@1.3.0/vendor/decode-named-character-reference/index.js +9 -0
  545. package/dist/vendor/.bun/decode-named-character-reference@1.3.0/vendor/decode-named-character-reference/index.js.map +1 -0
  546. package/dist/vendor/.bun/get-nonce@1.0.1/vendor/get-nonce/dist/es2015/index.js +8 -0
  547. package/dist/vendor/.bun/get-nonce@1.0.1/vendor/get-nonce/dist/es2015/index.js.map +1 -0
  548. package/dist/vendor/.bun/hast-util-parse-selector@4.0.0/vendor/hast-util-parse-selector/lib/index.js +21 -0
  549. package/dist/vendor/.bun/hast-util-parse-selector@4.0.0/vendor/hast-util-parse-selector/lib/index.js.map +1 -0
  550. package/dist/vendor/.bun/hastscript@9.0.1/vendor/hastscript/lib/create-h.js +113 -0
  551. package/dist/vendor/.bun/hastscript@9.0.1/vendor/hastscript/lib/create-h.js.map +1 -0
  552. package/dist/vendor/.bun/hastscript@9.0.1/vendor/hastscript/lib/index.js +9 -0
  553. package/dist/vendor/.bun/hastscript@9.0.1/vendor/hastscript/lib/index.js.map +1 -0
  554. package/dist/vendor/.bun/hastscript@9.0.1/vendor/hastscript/lib/svg-case-sensitive-tag-names.js +45 -0
  555. package/dist/vendor/.bun/hastscript@9.0.1/vendor/hastscript/lib/svg-case-sensitive-tag-names.js.map +1 -0
  556. package/dist/vendor/.bun/is-alphabetical@2.0.1/vendor/is-alphabetical/index.js +8 -0
  557. package/dist/vendor/.bun/is-alphabetical@2.0.1/vendor/is-alphabetical/index.js.map +1 -0
  558. package/dist/vendor/.bun/is-alphanumerical@2.0.1/vendor/is-alphanumerical/index.js +9 -0
  559. package/dist/vendor/.bun/is-alphanumerical@2.0.1/vendor/is-alphanumerical/index.js.map +1 -0
  560. package/dist/vendor/.bun/is-decimal@2.0.1/vendor/is-decimal/index.js +8 -0
  561. package/dist/vendor/.bun/is-decimal@2.0.1/vendor/is-decimal/index.js.map +1 -0
  562. package/dist/vendor/.bun/is-hexadecimal@2.0.1/vendor/is-hexadecimal/index.js +8 -0
  563. package/dist/vendor/.bun/is-hexadecimal@2.0.1/vendor/is-hexadecimal/index.js.map +1 -0
  564. package/dist/vendor/.bun/parse-entities@4.0.2/vendor/parse-entities/lib/index.js +136 -0
  565. package/dist/vendor/.bun/parse-entities@4.0.2/vendor/parse-entities/lib/index.js.map +1 -0
  566. package/dist/vendor/.bun/property-information@7.2.0/vendor/property-information/index.js +13 -0
  567. package/dist/vendor/.bun/property-information@7.2.0/vendor/property-information/index.js.map +1 -0
  568. package/dist/vendor/.bun/property-information@7.2.0/vendor/property-information/lib/aria.js +62 -0
  569. package/dist/vendor/.bun/property-information@7.2.0/vendor/property-information/lib/aria.js.map +1 -0
  570. package/dist/vendor/.bun/property-information@7.2.0/vendor/property-information/lib/find.js +34 -0
  571. package/dist/vendor/.bun/property-information@7.2.0/vendor/property-information/lib/find.js.map +1 -0
  572. package/dist/vendor/.bun/property-information@7.2.0/vendor/property-information/lib/html.js +379 -0
  573. package/dist/vendor/.bun/property-information@7.2.0/vendor/property-information/lib/html.js.map +1 -0
  574. package/dist/vendor/.bun/property-information@7.2.0/vendor/property-information/lib/normalize.js +7 -0
  575. package/dist/vendor/.bun/property-information@7.2.0/vendor/property-information/lib/normalize.js.map +1 -0
  576. package/dist/vendor/.bun/property-information@7.2.0/vendor/property-information/lib/svg.js +569 -0
  577. package/dist/vendor/.bun/property-information@7.2.0/vendor/property-information/lib/svg.js.map +1 -0
  578. package/dist/vendor/.bun/property-information@7.2.0/vendor/property-information/lib/util/case-insensitive-transform.js +8 -0
  579. package/dist/vendor/.bun/property-information@7.2.0/vendor/property-information/lib/util/case-insensitive-transform.js.map +1 -0
  580. package/dist/vendor/.bun/property-information@7.2.0/vendor/property-information/lib/util/case-sensitive-transform.js +7 -0
  581. package/dist/vendor/.bun/property-information@7.2.0/vendor/property-information/lib/util/case-sensitive-transform.js.map +1 -0
  582. package/dist/vendor/.bun/property-information@7.2.0/vendor/property-information/lib/util/create.js +20 -0
  583. package/dist/vendor/.bun/property-information@7.2.0/vendor/property-information/lib/util/create.js.map +1 -0
  584. package/dist/vendor/.bun/property-information@7.2.0/vendor/property-information/lib/util/defined-info.js +37 -0
  585. package/dist/vendor/.bun/property-information@7.2.0/vendor/property-information/lib/util/defined-info.js.map +1 -0
  586. package/dist/vendor/.bun/property-information@7.2.0/vendor/property-information/lib/util/info.js +29 -0
  587. package/dist/vendor/.bun/property-information@7.2.0/vendor/property-information/lib/util/info.js.map +1 -0
  588. package/dist/vendor/.bun/property-information@7.2.0/vendor/property-information/lib/util/merge.js +11 -0
  589. package/dist/vendor/.bun/property-information@7.2.0/vendor/property-information/lib/util/merge.js.map +1 -0
  590. package/dist/vendor/.bun/property-information@7.2.0/vendor/property-information/lib/util/schema.js +22 -0
  591. package/dist/vendor/.bun/property-information@7.2.0/vendor/property-information/lib/util/schema.js.map +1 -0
  592. package/dist/vendor/.bun/property-information@7.2.0/vendor/property-information/lib/util/types.js +15 -0
  593. package/dist/vendor/.bun/property-information@7.2.0/vendor/property-information/lib/util/types.js.map +1 -0
  594. package/dist/vendor/.bun/property-information@7.2.0/vendor/property-information/lib/xlink.js +20 -0
  595. package/dist/vendor/.bun/property-information@7.2.0/vendor/property-information/lib/xlink.js.map +1 -0
  596. package/dist/vendor/.bun/property-information@7.2.0/vendor/property-information/lib/xml.js +12 -0
  597. package/dist/vendor/.bun/property-information@7.2.0/vendor/property-information/lib/xml.js.map +1 -0
  598. package/dist/vendor/.bun/property-information@7.2.0/vendor/property-information/lib/xmlns.js +12 -0
  599. package/dist/vendor/.bun/property-information@7.2.0/vendor/property-information/lib/xmlns.js.map +1 -0
  600. package/dist/vendor/.bun/react-remove-scroll-bar@2.3.8_0ac650c021fb1b59/vendor/react-remove-scroll-bar/dist/es2015/component.js +72 -0
  601. package/dist/vendor/.bun/react-remove-scroll-bar@2.3.8_0ac650c021fb1b59/vendor/react-remove-scroll-bar/dist/es2015/component.js.map +1 -0
  602. package/dist/vendor/.bun/react-remove-scroll-bar@2.3.8_0ac650c021fb1b59/vendor/react-remove-scroll-bar/dist/es2015/constants.js +8 -0
  603. package/dist/vendor/.bun/react-remove-scroll-bar@2.3.8_0ac650c021fb1b59/vendor/react-remove-scroll-bar/dist/es2015/constants.js.map +1 -0
  604. package/dist/vendor/.bun/react-remove-scroll-bar@2.3.8_0ac650c021fb1b59/vendor/react-remove-scroll-bar/dist/es2015/utils.js +26 -0
  605. package/dist/vendor/.bun/react-remove-scroll-bar@2.3.8_0ac650c021fb1b59/vendor/react-remove-scroll-bar/dist/es2015/utils.js.map +1 -0
  606. package/dist/vendor/.bun/react-remove-scroll@2.7.2_0ac650c021fb1b59/vendor/react-remove-scroll/dist/es2015/Combination.js +12 -0
  607. package/dist/vendor/.bun/react-remove-scroll@2.7.2_0ac650c021fb1b59/vendor/react-remove-scroll/dist/es2015/Combination.js.map +1 -0
  608. package/dist/vendor/.bun/react-remove-scroll@2.7.2_0ac650c021fb1b59/vendor/react-remove-scroll/dist/es2015/SideEffect.js +116 -0
  609. package/dist/vendor/.bun/react-remove-scroll@2.7.2_0ac650c021fb1b59/vendor/react-remove-scroll/dist/es2015/SideEffect.js.map +1 -0
  610. package/dist/vendor/.bun/react-remove-scroll@2.7.2_0ac650c021fb1b59/vendor/react-remove-scroll/dist/es2015/UI.js +32 -0
  611. package/dist/vendor/.bun/react-remove-scroll@2.7.2_0ac650c021fb1b59/vendor/react-remove-scroll/dist/es2015/UI.js.map +1 -0
  612. package/dist/vendor/.bun/react-remove-scroll@2.7.2_0ac650c021fb1b59/vendor/react-remove-scroll/dist/es2015/aggresiveCapture.js +17 -0
  613. package/dist/vendor/.bun/react-remove-scroll@2.7.2_0ac650c021fb1b59/vendor/react-remove-scroll/dist/es2015/aggresiveCapture.js.map +1 -0
  614. package/dist/vendor/.bun/react-remove-scroll@2.7.2_0ac650c021fb1b59/vendor/react-remove-scroll/dist/es2015/handleScroll.js +69 -0
  615. package/dist/vendor/.bun/react-remove-scroll@2.7.2_0ac650c021fb1b59/vendor/react-remove-scroll/dist/es2015/handleScroll.js.map +1 -0
  616. package/dist/vendor/.bun/react-remove-scroll@2.7.2_0ac650c021fb1b59/vendor/react-remove-scroll/dist/es2015/medium.js +6 -0
  617. package/dist/vendor/.bun/react-remove-scroll@2.7.2_0ac650c021fb1b59/vendor/react-remove-scroll/dist/es2015/medium.js.map +1 -0
  618. package/dist/vendor/.bun/react-remove-scroll@2.7.2_0ac650c021fb1b59/vendor/react-remove-scroll/dist/es2015/sidecar.js +8 -0
  619. package/dist/vendor/.bun/react-remove-scroll@2.7.2_0ac650c021fb1b59/vendor/react-remove-scroll/dist/es2015/sidecar.js.map +1 -0
  620. package/dist/vendor/.bun/react-style-singleton@2.2.3_0ac650c021fb1b59/vendor/react-style-singleton/dist/es2015/component.js +12 -0
  621. package/dist/vendor/.bun/react-style-singleton@2.2.3_0ac650c021fb1b59/vendor/react-style-singleton/dist/es2015/component.js.map +1 -0
  622. package/dist/vendor/.bun/react-style-singleton@2.2.3_0ac650c021fb1b59/vendor/react-style-singleton/dist/es2015/hook.js +16 -0
  623. package/dist/vendor/.bun/react-style-singleton@2.2.3_0ac650c021fb1b59/vendor/react-style-singleton/dist/es2015/hook.js.map +1 -0
  624. package/dist/vendor/.bun/react-style-singleton@2.2.3_0ac650c021fb1b59/vendor/react-style-singleton/dist/es2015/singleton.js +31 -0
  625. package/dist/vendor/.bun/react-style-singleton@2.2.3_0ac650c021fb1b59/vendor/react-style-singleton/dist/es2015/singleton.js.map +1 -0
  626. package/dist/vendor/.bun/refractor@5.0.0/vendor/refractor/lang/bash.js +227 -0
  627. package/dist/vendor/.bun/refractor@5.0.0/vendor/refractor/lang/bash.js.map +1 -0
  628. package/dist/vendor/.bun/refractor@5.0.0/vendor/refractor/lang/clike.js +39 -0
  629. package/dist/vendor/.bun/refractor@5.0.0/vendor/refractor/lang/clike.js.map +1 -0
  630. package/dist/vendor/.bun/refractor@5.0.0/vendor/refractor/lang/css.js +70 -0
  631. package/dist/vendor/.bun/refractor@5.0.0/vendor/refractor/lang/css.js.map +1 -0
  632. package/dist/vendor/.bun/refractor@5.0.0/vendor/refractor/lang/javascript.js +140 -0
  633. package/dist/vendor/.bun/refractor@5.0.0/vendor/refractor/lang/javascript.js.map +1 -0
  634. package/dist/vendor/.bun/refractor@5.0.0/vendor/refractor/lang/json.js +32 -0
  635. package/dist/vendor/.bun/refractor@5.0.0/vendor/refractor/lang/json.js.map +1 -0
  636. package/dist/vendor/.bun/refractor@5.0.0/vendor/refractor/lang/jsx.js +76 -0
  637. package/dist/vendor/.bun/refractor@5.0.0/vendor/refractor/lang/jsx.js.map +1 -0
  638. package/dist/vendor/.bun/refractor@5.0.0/vendor/refractor/lang/markdown.js +310 -0
  639. package/dist/vendor/.bun/refractor@5.0.0/vendor/refractor/lang/markdown.js.map +1 -0
  640. package/dist/vendor/.bun/refractor@5.0.0/vendor/refractor/lang/markup.js +175 -0
  641. package/dist/vendor/.bun/refractor@5.0.0/vendor/refractor/lang/markup.js.map +1 -0
  642. package/dist/vendor/.bun/refractor@5.0.0/vendor/refractor/lang/tsx.js +19 -0
  643. package/dist/vendor/.bun/refractor@5.0.0/vendor/refractor/lang/tsx.js.map +1 -0
  644. package/dist/vendor/.bun/refractor@5.0.0/vendor/refractor/lang/typescript.js +54 -0
  645. package/dist/vendor/.bun/refractor@5.0.0/vendor/refractor/lang/typescript.js.map +1 -0
  646. package/dist/vendor/.bun/refractor@5.0.0/vendor/refractor/lang/yaml.js +89 -0
  647. package/dist/vendor/.bun/refractor@5.0.0/vendor/refractor/lang/yaml.js.map +1 -0
  648. package/dist/vendor/.bun/refractor@5.0.0/vendor/refractor/lib/core.js +108 -0
  649. package/dist/vendor/.bun/refractor@5.0.0/vendor/refractor/lib/core.js.map +1 -0
  650. package/dist/vendor/.bun/refractor@5.0.0/vendor/refractor/lib/prism-core.js +431 -0
  651. package/dist/vendor/.bun/refractor@5.0.0/vendor/refractor/lib/prism-core.js.map +1 -0
  652. package/dist/vendor/.bun/rifm@0.12.1_62547eec5a2188e3/vendor/rifm/dist/rifm.esm.js +87 -0
  653. package/dist/vendor/.bun/rifm@0.12.1_62547eec5a2188e3/vendor/rifm/dist/rifm.esm.js.map +1 -0
  654. package/dist/vendor/.bun/sonner@2.0.7_6f4b9a1cfb20c0ae/vendor/sonner/dist/index.js +747 -0
  655. package/dist/vendor/.bun/sonner@2.0.7_6f4b9a1cfb20c0ae/vendor/sonner/dist/index.js.map +1 -0
  656. package/dist/vendor/.bun/space-separated-tokens@2.0.2/vendor/space-separated-tokens/index.js +8 -0
  657. package/dist/vendor/.bun/space-separated-tokens@2.0.2/vendor/space-separated-tokens/index.js.map +1 -0
  658. package/dist/vendor/.bun/tslib@2.8.1/vendor/tslib/tslib.es6.js +28 -0
  659. package/dist/vendor/.bun/tslib@2.8.1/vendor/tslib/tslib.es6.js.map +1 -0
  660. package/dist/vendor/.bun/use-callback-ref@1.3.3_0ac650c021fb1b59/vendor/use-callback-ref/dist/es2015/assignRef.js +7 -0
  661. package/dist/vendor/.bun/use-callback-ref@1.3.3_0ac650c021fb1b59/vendor/use-callback-ref/dist/es2015/assignRef.js.map +1 -0
  662. package/dist/vendor/.bun/use-callback-ref@1.3.3_0ac650c021fb1b59/vendor/use-callback-ref/dist/es2015/useMergeRef.js +27 -0
  663. package/dist/vendor/.bun/use-callback-ref@1.3.3_0ac650c021fb1b59/vendor/use-callback-ref/dist/es2015/useMergeRef.js.map +1 -0
  664. package/dist/vendor/.bun/use-callback-ref@1.3.3_0ac650c021fb1b59/vendor/use-callback-ref/dist/es2015/useRef.js +26 -0
  665. package/dist/vendor/.bun/use-callback-ref@1.3.3_0ac650c021fb1b59/vendor/use-callback-ref/dist/es2015/useRef.js.map +1 -0
  666. package/dist/vendor/.bun/use-sidecar@1.1.3_0ac650c021fb1b59/vendor/use-sidecar/dist/es2015/exports.js +19 -0
  667. package/dist/vendor/.bun/use-sidecar@1.1.3_0ac650c021fb1b59/vendor/use-sidecar/dist/es2015/exports.js.map +1 -0
  668. package/dist/vendor/.bun/use-sidecar@1.1.3_0ac650c021fb1b59/vendor/use-sidecar/dist/es2015/medium.js +68 -0
  669. package/dist/vendor/.bun/use-sidecar@1.1.3_0ac650c021fb1b59/vendor/use-sidecar/dist/es2015/medium.js.map +1 -0
  670. package/dist/vendor/.bun/use-sync-external-store@1.7.0_62547eec5a2188e3/vendor/use-sync-external-store/cjs/use-sync-external-store-shim.development.js +68 -0
  671. package/dist/vendor/.bun/use-sync-external-store@1.7.0_62547eec5a2188e3/vendor/use-sync-external-store/cjs/use-sync-external-store-shim.development.js.map +1 -0
  672. package/dist/vendor/.bun/use-sync-external-store@1.7.0_62547eec5a2188e3/vendor/use-sync-external-store/cjs/use-sync-external-store-shim.production.js +56 -0
  673. package/dist/vendor/.bun/use-sync-external-store@1.7.0_62547eec5a2188e3/vendor/use-sync-external-store/cjs/use-sync-external-store-shim.production.js.map +1 -0
  674. package/dist/vendor/.bun/use-sync-external-store@1.7.0_62547eec5a2188e3/vendor/use-sync-external-store/shim/index.js +11 -0
  675. package/dist/vendor/.bun/use-sync-external-store@1.7.0_62547eec5a2188e3/vendor/use-sync-external-store/shim/index.js.map +1 -0
  676. package/package.json +139 -0
  677. package/scripts/migration-diagnostics-core.mjs +991 -0
  678. package/scripts/migration-diagnostics.mjs +427 -0
  679. package/scripts/migration-sweep.mjs +205 -0
  680. package/testing/jest-preset.cjs +64 -0
  681. package/tokens.d.ts +3 -0
  682. package/tokens.js +13 -0
@@ -0,0 +1,991 @@
1
+ /**
2
+ * Pure, fs-free migration-diagnostics rule core (WP6B-2 extraction). Every rule in this file
3
+ * is a straight-line function of its
4
+ * arguments: no `node:fs`/`node:path`/`node:module`/`node:process`/`node:child_process`/network
5
+ * access, no dynamic `import()`, no `eval`/`new Function`, no ambient DOM/global mutation, no
6
+ * module-load side effects. TypeScript is INJECTED by the caller (a `ts` parameter) — this module
7
+ * never imports, requires, or resolves `typescript` itself. `identity` (package name/version/
8
+ * generatedInputHash and the `core`/`palette` token-family `Set`s) is likewise always supplied by
9
+ * the caller; this module never reads a `dist/tokens/*` file or a `package.json` to derive it.
10
+ *
11
+ * `migration-diagnostics.mjs` (the sibling fs-bound orchestration module — file/directory walking,
12
+ * symlink boundary checks, hashing, `resolvePackageIdentity`, `resolveConsumerTypeScript`) is the
13
+ * CLI's entrypoint and delegates every file it reads to this module's `analyzeSource`. A future
14
+ * remote MCP tool would call `analyzeSource` directly with a caller-submitted string and a
15
+ * build-time-embedded identity — no path ever reaches this file. This module is not itself a
16
+ * "complete scan" API: it analyzes exactly the one string it is given, and callers remain
17
+ * responsible for their own completeness/incompleteness accounting (e.g. the CLI's
18
+ * `analysisIncomplete`/`toolingWarning` contract when TypeScript could not be resolved at all).
19
+ *
20
+ * Three rules, deliberately bounded to what survived every other gate on the four pilot
21
+ * migrations (see the outer module's original header for the incident history):
22
+ *
23
+ * legacy-volt-class — a v1-only `volt-*` utility class left in a className string.
24
+ * hand-written-volt-css-var — a raw `var(--volt-*)` (v1) or a hand-typed, hash-inlined
25
+ * `var(--zenith-<hash>-*)` (v2) custom property, instead of
26
+ * importing the token.
27
+ * unestablished-palette-install — a decorative (non-core) token family is used, but no
28
+ * correctly-scoped install call was found for it.
29
+ *
30
+ * `unestablished-palette-install` uses TypeScript's parser (syntax only — no type checker, no
31
+ * cross-module resolution) to do real lexical binding resolution: a name only counts as "the
32
+ * installer" or "a decorative token" if it resolves, through actual scope/shadowing, to an import
33
+ * from this package's own public specifiers, is not a type-only import, and is not shadowed by a
34
+ * closer local declaration. Certification is evaluated per DECORATIVE USAGE (not merely its
35
+ * enclosing scope), scoped to that usage's own consuming function plus at most one hop into a
36
+ * locally-declared helper the consuming scope calls directly, unconditionally, and BEFORE the
37
+ * usage in document order — never "this name is exported/called somewhere in the file".
38
+ *
39
+ * Supported analysis boundary: single-source, syntax-aware static analysis. It can prove a call
40
+ * exists, is unconditional relative to its own enclosing function, is reachable (not dead code
41
+ * after an unconditional return/throw), and precedes a given usage in straight-line document
42
+ * order. It cannot prove a *conditional* or *deferred* (callback/event) call's path always runs
43
+ * before the usage renders, and it cannot trace an install performed in a genuinely different
44
+ * source (e.g. a shared bootstrap/provider component) or through a relative (non-public-specifier)
45
+ * import — both get an explicit warning/uncertain finding, never a silent pass or a hard "error"
46
+ * (this rule never asserts a definite defect — see `RULES` below).
47
+ */
48
+
49
+ // ---------------------------------------------------------------------------
50
+ // Rule catalogue (also the "rule-support matrix" source of truth)
51
+ // ---------------------------------------------------------------------------
52
+
53
+ export const RULES = [
54
+ {
55
+ code: "legacy-volt-class",
56
+ title: "Legacy v1 volt-* class usage",
57
+ defaultSeverity: "error",
58
+ requiresTypeScript: false,
59
+ description:
60
+ "A v1-only Tailwind utility class (volt-*) is referenced in a className string. v2 ships no such class, and the singleton stylesheet is what is quietly still supplying it.",
61
+ },
62
+ {
63
+ code: "hand-written-volt-css-var",
64
+ title: "Hand-written legacy or hashed Volt CSS custom property",
65
+ defaultSeverity: "error",
66
+ requiresTypeScript: false,
67
+ description:
68
+ 'A raw var(--volt-*) (v1, unpublished by v2) or a hand-typed var(--zenith-<hash>-*) (v2, with the generated salt/hash inlined) custom property is referenced directly instead of importing the token — see AGENTS.md: "never hardcode a namespace or salt hash."',
69
+ },
70
+ {
71
+ code: "unestablished-palette-install",
72
+ title: "Decorative token used without an established palette install",
73
+ defaultSeverity: "warning (always — see below)",
74
+ requiresTypeScript: true,
75
+ description:
76
+ 'A decorative (non-core) token family is used, with varying confidence that a correctly-scoped install call covers it (high confidence for no local evidence at all, down to low for an unresolved dynamic path). This rule NEVER reports severity "error": local absence of an install call does not prove a bootstrap/provider install does not exist elsewhere — this is single-source analysis with no cross-file tracing, so it cannot assert a definite defect, only flag what needs verification. Core families (accent/gray/error/warning/success/info) are excluded — they load by default. Requires an injected TypeScript module (see requiresTypeScript).',
77
+ },
78
+ ]
79
+
80
+ /** ts/tsx/js/jsx — the extensions `unestablished-palette-install` can parse. Exported so the
81
+ * fs-bound outer module can reuse the exact same rule (e.g. for its own `hasScriptFiles` check)
82
+ * without redefining it. */
83
+ export const SCRIPT_EXT_RE = /\.(tsx?|jsx?)$/
84
+
85
+ // ---------------------------------------------------------------------------
86
+ // Diagnostic shape
87
+ // ---------------------------------------------------------------------------
88
+
89
+ /** Exported (not just internal) so the fs-bound outer module can build a finding for its own
90
+ * fs-level failures (e.g. "could not read this file") in the exact same shape, without a second,
91
+ * possibly-drifting definition of what a finding looks like. */
92
+ export function makeFinding(
93
+ identity,
94
+ {
95
+ code,
96
+ severity,
97
+ confidence,
98
+ file,
99
+ line,
100
+ column,
101
+ evidence,
102
+ explanation,
103
+ suggestion,
104
+ }
105
+ ) {
106
+ return {
107
+ code,
108
+ severity,
109
+ confidence,
110
+ file,
111
+ line,
112
+ column,
113
+ package: {
114
+ name: identity.packageName,
115
+ version: identity.packageVersion,
116
+ generatedInputHash: identity.generatedInputHash,
117
+ },
118
+ evidence,
119
+ explanation,
120
+ suggestion,
121
+ }
122
+ }
123
+
124
+ // ---------------------------------------------------------------------------
125
+ // Rule 1 + 2: textual, comment-stripped scan (no TypeScript needed)
126
+ // ---------------------------------------------------------------------------
127
+
128
+ /** `volt-` inside a quoted string, skipping the package name itself. */
129
+ const CLASS_RE =
130
+ /(['"`])((?:(?!\1)[^\\]|\\.)*?\bvolt-[a-z][a-z0-9-]*(?:(?!\1)[^\\]|\\.)*?)\1/g
131
+ const VAR_RE_V1 = /var\(\s*--volt-[a-z0-9-]+/g
132
+ /** A hand-typed v2 hashed custom property — same salt-shaped pattern the family reader uses. */
133
+ const VAR_RE_V2_HASH = /var\(\s*--zenith-[a-z0-9]+-[a-z]+-[a-z0-9-]*/g
134
+
135
+ const stripComments = (s) =>
136
+ s
137
+ .replace(/\/\*[\s\S]*?\*\//g, (m) => m.replace(/[^\n]/g, " "))
138
+ .replace(
139
+ /(^|[^:'"`\\])\/\/[^\n]*/g,
140
+ (m, p) => p + " ".repeat(m.length - p.length)
141
+ )
142
+
143
+ /** Module specifiers are paths, not class lists — `./volt-token-bridge` is a filename. */
144
+ const isModulePath = (src, idx) =>
145
+ /\b(?:import|require|from)\s*\(?\s*$/.test(
146
+ src.slice(Math.max(0, idx - 40), idx)
147
+ )
148
+
149
+ function textualFindings(identity, fileLabel, raw) {
150
+ const findings = []
151
+ const stripped = stripComments(raw)
152
+ const lineOf = (idx) => stripped.slice(0, idx).split("\n").length
153
+ const colOf = (idx) => idx - stripped.lastIndexOf("\n", idx - 1)
154
+
155
+ for (const m of stripped.matchAll(CLASS_RE)) {
156
+ if (isModulePath(stripped, m.index)) continue
157
+ const cls = m[2].match(/\bvolt-[a-z][a-z0-9-]*/g) ?? []
158
+ const orphans = cls.filter((c) => !c.startsWith("volt-ui"))
159
+ if (orphans.length) {
160
+ findings.push(
161
+ makeFinding(identity, {
162
+ code: "legacy-volt-class",
163
+ severity: "error",
164
+ confidence: "high",
165
+ file: fileLabel,
166
+ line: lineOf(m.index),
167
+ column: colOf(m.index),
168
+ evidence: orphans.join(" "),
169
+ explanation:
170
+ "This v1-only utility class has no v2 equivalent and disappears once the v1 singleton stops loading its stylesheet. Note: this rule matches any quoted string shaped like a volt-* class, not only className attribute values — an unrelated string literal with the same shape can also match (see the WP6A report's documented limitation).",
171
+ suggestion:
172
+ "Replace with the equivalent Griffel component prop, or a makeZenithStyles() rule using a canonical token.",
173
+ })
174
+ )
175
+ }
176
+ }
177
+
178
+ for (const m of stripped.matchAll(VAR_RE_V1)) {
179
+ findings.push(
180
+ makeFinding(identity, {
181
+ code: "hand-written-volt-css-var",
182
+ severity: "error",
183
+ confidence: "high",
184
+ file: fileLabel,
185
+ line: lineOf(m.index),
186
+ column: colOf(m.index),
187
+ evidence: `${m[0]})`,
188
+ explanation:
189
+ "v2 publishes no such custom property; this resolves today only because the v1 singleton's stylesheet is still loaded at the portal root.",
190
+ suggestion:
191
+ "Import the equivalent token from the package's /tokens subpath instead of the raw CSS custom property.",
192
+ })
193
+ )
194
+ }
195
+
196
+ for (const m of stripped.matchAll(VAR_RE_V2_HASH)) {
197
+ findings.push(
198
+ makeFinding(identity, {
199
+ code: "hand-written-volt-css-var",
200
+ severity: "error",
201
+ confidence: "high",
202
+ file: fileLabel,
203
+ line: lineOf(m.index),
204
+ column: colOf(m.index),
205
+ evidence: `${m[0]})`,
206
+ explanation:
207
+ "The generated salt/hash is not a stable contract — it changes across Griffel engine or token-generation version bumps.",
208
+ suggestion:
209
+ "Import the token by name from the package's /tokens subpath and let makeZenithStyles() resolve the current hash; never hardcode a namespace or salt hash.",
210
+ })
211
+ )
212
+ }
213
+
214
+ return findings
215
+ }
216
+
217
+ // ---------------------------------------------------------------------------
218
+ // Rule 3: syntax-aware (TypeScript AST) palette-install analysis
219
+ // ---------------------------------------------------------------------------
220
+
221
+ function scriptKindFor(ts, fileLabel) {
222
+ if (fileLabel.endsWith(".tsx")) return ts.ScriptKind.TSX
223
+ if (fileLabel.endsWith(".jsx")) return ts.ScriptKind.JSX
224
+ if (fileLabel.endsWith(".ts")) return ts.ScriptKind.TS
225
+ return ts.ScriptKind.JS
226
+ }
227
+
228
+ const isPaletteBindingName = (identity, name) => {
229
+ const fam = name.match(
230
+ /^([a-z]+)(?:A?\d+|Contrast|Surface|Indicator|Track)$/
231
+ )?.[1]
232
+ return Boolean(fam && identity.palette.has(fam))
233
+ }
234
+
235
+ /** The decorative family a token identifier belongs to (e.g. "blue11" -> "blue"), for suggestion
236
+ * text — never the specific token accessor itself, which is not the argument ensurePaletteTokensFor
237
+ * documents. */
238
+ const familyOf = (identity, tokenName) => {
239
+ const fam = tokenName.match(
240
+ /^([a-z]+)(?:A?\d+|Contrast|Surface|Indicator|Track)$/
241
+ )?.[1]
242
+ return fam && identity.palette.has(fam) ? fam : tokenName
243
+ }
244
+
245
+ /** Real lexical scope/shadow resolution and same-scope call collection, bound to one `ts` module. */
246
+ function createScopeHelpers(ts) {
247
+ /** Recursively checks a binding NAME (a plain identifier, or an object/array destructuring
248
+ * pattern — parameters, `const`/`let`/`var`, catch, and for-loop bindings can all destructure)
249
+ * for whether it declares `name` anywhere within it — `{ ensurePaletteTokens }`,
250
+ * `{ ensurePaletteTokens: x }` (bound as `x`, not shadowing), `[a, { b }]`, etc. */
251
+ function bindingNameDeclares(bindingName, name) {
252
+ if (ts.isIdentifier(bindingName)) return bindingName.text === name
253
+ if (
254
+ ts.isObjectBindingPattern(bindingName) ||
255
+ ts.isArrayBindingPattern(bindingName)
256
+ ) {
257
+ return bindingName.elements.some((el) => {
258
+ if (ts.isOmittedExpression(el)) return false
259
+ return bindingNameDeclares(el.name, name)
260
+ })
261
+ }
262
+ return false
263
+ }
264
+
265
+ function declarationDeclares(stmt, name) {
266
+ if (ts.isVariableStatement(stmt)) {
267
+ return stmt.declarationList.declarations.some((d) =>
268
+ bindingNameDeclares(d.name, name)
269
+ )
270
+ }
271
+ if (ts.isFunctionDeclaration(stmt)) return stmt.name?.text === name
272
+ if (ts.isClassDeclaration(stmt)) return stmt.name?.text === name
273
+ return false
274
+ }
275
+
276
+ /** True if `name`, referenced at `identifierNode`, is bound by something OTHER than a top-level
277
+ * (SourceFile-scope) import before the walk reaches the SourceFile — a parameter (including a
278
+ * destructured one), a local const/let/var (including destructured), a nested function/class
279
+ * declaration, a catch binding, or a for-loop variable. */
280
+ function isShadowedBeforeSourceFile(identifierNode, name) {
281
+ let cur = identifierNode.parent
282
+ while (cur && !ts.isSourceFile(cur)) {
283
+ if (
284
+ ts.isFunctionDeclaration(cur) ||
285
+ ts.isFunctionExpression(cur) ||
286
+ ts.isArrowFunction(cur) ||
287
+ ts.isMethodDeclaration(cur)
288
+ ) {
289
+ if (cur.parameters.some((p) => bindingNameDeclares(p.name, name)))
290
+ return true
291
+ if (
292
+ (ts.isFunctionDeclaration(cur) || ts.isFunctionExpression(cur)) &&
293
+ cur.name?.text === name
294
+ )
295
+ return true
296
+ }
297
+ if (
298
+ ts.isBlock(cur) &&
299
+ cur.statements.some((s) => declarationDeclares(s, name))
300
+ )
301
+ return true
302
+ if (
303
+ ts.isCatchClause(cur) &&
304
+ cur.variableDeclaration &&
305
+ bindingNameDeclares(cur.variableDeclaration.name, name)
306
+ ) {
307
+ return true
308
+ }
309
+ if (
310
+ (ts.isForStatement(cur) ||
311
+ ts.isForInStatement(cur) ||
312
+ ts.isForOfStatement(cur)) &&
313
+ cur.initializer &&
314
+ ts.isVariableDeclarationList(cur.initializer) &&
315
+ cur.initializer.declarations.some((d) =>
316
+ bindingNameDeclares(d.name, name)
317
+ )
318
+ ) {
319
+ return true
320
+ }
321
+ cur = cur.parent
322
+ }
323
+ return false
324
+ }
325
+
326
+ /** True if `node` sits under any branch that can fail to execute, up to (not past) `boundary`. */
327
+ function isWithinConditional(node, boundary) {
328
+ let cur = node.parent
329
+ while (cur && cur !== boundary) {
330
+ if (
331
+ ts.isIfStatement(cur) ||
332
+ ts.isConditionalExpression(cur) ||
333
+ ts.isSwitchStatement(cur) ||
334
+ ts.isCaseClause(cur) ||
335
+ ts.isForStatement(cur) ||
336
+ ts.isForInStatement(cur) ||
337
+ ts.isForOfStatement(cur) ||
338
+ ts.isWhileStatement(cur) ||
339
+ ts.isDoStatement(cur) ||
340
+ ts.isCatchClause(cur) ||
341
+ (ts.isBinaryExpression(cur) &&
342
+ [
343
+ ts.SyntaxKind.AmpersandAmpersandToken,
344
+ ts.SyntaxKind.BarBarToken,
345
+ ts.SyntaxKind.QuestionQuestionToken,
346
+ ].includes(cur.operatorToken.kind))
347
+ ) {
348
+ return true
349
+ }
350
+ cur = cur.parent
351
+ }
352
+ return false
353
+ }
354
+
355
+ /** The nearest enclosing function-like node, or the SourceFile itself for a module-scope node. */
356
+ function enclosingFunctionOrFile(node, sf) {
357
+ let cur = node.parent
358
+ while (cur) {
359
+ if (
360
+ ts.isFunctionDeclaration(cur) ||
361
+ ts.isFunctionExpression(cur) ||
362
+ ts.isArrowFunction(cur) ||
363
+ ts.isMethodDeclaration(cur)
364
+ ) {
365
+ return cur
366
+ }
367
+ cur = cur.parent
368
+ }
369
+ return sf
370
+ }
371
+
372
+ function functionName(fn, sf) {
373
+ if (fn === sf) return null
374
+ if (ts.isFunctionDeclaration(fn) && fn.name) return fn.name.text
375
+ if (
376
+ fn.parent &&
377
+ ts.isVariableDeclaration(fn.parent) &&
378
+ ts.isIdentifier(fn.parent.name)
379
+ )
380
+ return fn.parent.name.text
381
+ if (ts.isMethodDeclaration(fn) && ts.isIdentifier(fn.name))
382
+ return fn.name.text
383
+ return null
384
+ }
385
+
386
+ /** Nodes matching `matcher` that are direct descendants of `scope`'s own body — NOT nested
387
+ * inside a further function-like declared within `scope` (so a callback/handler's contents are
388
+ * excluded; see collectNested for the complement). */
389
+ function collectDirect(scope, matcher) {
390
+ const results = []
391
+ const body = ts.isSourceFile(scope) ? scope : scope.body
392
+ if (!body) return results
393
+ const visit = (node) => {
394
+ if (matcher(node)) results.push(node)
395
+ if (
396
+ node !== body &&
397
+ (ts.isFunctionDeclaration(node) ||
398
+ ts.isFunctionExpression(node) ||
399
+ ts.isArrowFunction(node) ||
400
+ ts.isMethodDeclaration(node))
401
+ ) {
402
+ return // stop: do not descend into a NESTED function's own body from here
403
+ }
404
+ ts.forEachChild(node, visit)
405
+ }
406
+ ts.forEachChild(body, visit)
407
+ return results
408
+ }
409
+
410
+ /** The complement of collectDirect: matches nested inside a function-like descendant of
411
+ * `scope` — a callback/event-handler/deferred position relative to `scope`. */
412
+ function collectNested(scope, matcher) {
413
+ const results = []
414
+ const body = ts.isSourceFile(scope) ? scope : scope.body
415
+ if (!body) return results
416
+ const visitInside = (node) => {
417
+ if (matcher(node)) results.push(node)
418
+ ts.forEachChild(node, visitInside)
419
+ }
420
+ const visitTop = (node) => {
421
+ if (
422
+ ts.isFunctionDeclaration(node) ||
423
+ ts.isFunctionExpression(node) ||
424
+ ts.isArrowFunction(node) ||
425
+ ts.isMethodDeclaration(node)
426
+ ) {
427
+ ts.forEachChild(node, visitInside)
428
+ return
429
+ }
430
+ ts.forEachChild(node, visitTop)
431
+ }
432
+ ts.forEachChild(body, visitTop)
433
+ return results
434
+ }
435
+
436
+ return {
437
+ isShadowedBeforeSourceFile,
438
+ isWithinConditional,
439
+ enclosingFunctionOrFile,
440
+ functionName,
441
+ collectDirect,
442
+ collectNested,
443
+ }
444
+ }
445
+
446
+ /** Collects trusted import bindings (installer, namespace, individual token names) — value-only:
447
+ * a `import type {...}` clause or a `import { type X }` specifier is never trusted as a runtime
448
+ * binding, since it cannot be called/read at runtime (and using it as if it could is itself a
449
+ * compiler error the consumer's own tsc will catch, not something to certify as evidence). */
450
+ function collectBindings(sf, ts, identity) {
451
+ const validSpecifiers = new Set([
452
+ identity.packageName,
453
+ `${identity.packageName}/tokens`,
454
+ ])
455
+ // local (possibly aliased) name -> the ORIGINAL imported symbol ("ensurePaletteTokens" or
456
+ // "ensurePaletteTokensFor"). installDecorativeStatus must key off this canonical name, never the
457
+ // local spelling — `import { ensurePaletteTokens as install }` is a genuine, correct install.
458
+ const installerNames = new Map()
459
+ const namespaceNames = new Set()
460
+ const tokenBindings = new Map()
461
+
462
+ for (const stmt of sf.statements) {
463
+ if (
464
+ !ts.isImportDeclaration(stmt) ||
465
+ !ts.isStringLiteral(stmt.moduleSpecifier)
466
+ )
467
+ continue
468
+ if (!validSpecifiers.has(stmt.moduleSpecifier.text)) continue
469
+ const clause = stmt.importClause
470
+ if (!clause || clause.isTypeOnly || !clause.namedBindings) continue
471
+ if (ts.isNamespaceImport(clause.namedBindings)) {
472
+ namespaceNames.add(clause.namedBindings.name.text)
473
+ } else if (ts.isNamedImports(clause.namedBindings)) {
474
+ for (const el of clause.namedBindings.elements) {
475
+ if (el.isTypeOnly) continue
476
+ const imported = (el.propertyName ?? el.name).text
477
+ const local = el.name.text
478
+ if (
479
+ imported === "ensurePaletteTokens" ||
480
+ imported === "ensurePaletteTokensFor"
481
+ ) {
482
+ installerNames.set(local, imported)
483
+ } else if (imported === "tokens") {
484
+ // `export * as tokens from "./tokens"` at the package root — a named import of this
485
+ // object is functionally a namespace import (`import { tokens } from packageName`, or
486
+ // `import { tokens as t } from packageName`).
487
+ namespaceNames.add(local)
488
+ } else if (isPaletteBindingName(identity, imported)) {
489
+ tokenBindings.set(local, imported)
490
+ }
491
+ }
492
+ }
493
+ }
494
+
495
+ return { installerNames, namespaceNames, tokenBindings }
496
+ }
497
+
498
+ /** Whether `call` installs the decorative palette sheet: "confirmed" (the bare no-arg
499
+ * `ensurePaletteTokens()` form, or an `ensurePaletteTokensFor(<literal>)` argument that is not a
500
+ * known core family — matching the REAL runtime contract in `tokens/install.ts`:
501
+ * `if (CORE_FAMILIES.has(family)) return false; return ensurePaletteTokens(doc)` — an
502
+ * unrecognized/unknown literal still reaches installation; only a KNOWN CORE family is rejected),
503
+ * "uncertain" (a non-literal/dynamic argument to `-For` — cannot be resolved statically), or
504
+ * "not-decorative": either a known core family literal argument (a real, provable runtime no-op
505
+ * per the contract above), OR a call to `ensurePaletteTokensFor` with NO argument at all — `family`
506
+ * is a required, non-optional parameter, so a genuinely zero-argument call is not a valid typed
507
+ * call in the first place (it would fail `tsc` with "Expected 1-2 arguments, but got 0"), not a
508
+ * proven runtime no-op the way the core-family case is. Classified "not-decorative" defensively
509
+ * (there is no valid evidence of an install here), never claimed as a confirmed no-op. ANY
510
+ * "confirmed" call installs the WHOLE decorative sheet, not just one family — this does not
511
+ * require matching the specific family a usage reads. Resolves the callee through `bindings` to
512
+ * its ORIGINAL imported symbol, never the local (possibly aliased) spelling. */
513
+ function installDecorativeStatus(call, ts, identity, bindings) {
514
+ const callee = call.expression
515
+ let canonicalName = null
516
+ if (ts.isIdentifier(callee)) {
517
+ canonicalName = bindings.installerNames.get(callee.text) ?? null
518
+ } else if (ts.isPropertyAccessExpression(callee)) {
519
+ // Property access names cannot be import-aliased — `tokens.ensurePaletteTokensFor` always
520
+ // uses the real member name.
521
+ canonicalName = callee.name.text
522
+ }
523
+ if (canonicalName === "ensurePaletteTokens") return "confirmed"
524
+ if (canonicalName === "ensurePaletteTokensFor") {
525
+ const arg = call.arguments[0]
526
+ if (!arg) return "not-decorative"
527
+ if (ts.isStringLiteralLike(arg)) {
528
+ return identity.core.has(arg.text) ? "not-decorative" : "confirmed"
529
+ }
530
+ return "uncertain"
531
+ }
532
+ return "not-decorative"
533
+ }
534
+
535
+ function isTrustedInstallerCall(call, ts, scope, bindings) {
536
+ const callee = call.expression
537
+ if (ts.isIdentifier(callee)) {
538
+ return (
539
+ bindings.installerNames.has(callee.text) &&
540
+ !scope.isShadowedBeforeSourceFile(callee, callee.text)
541
+ )
542
+ }
543
+ if (
544
+ ts.isPropertyAccessExpression(callee) &&
545
+ ts.isIdentifier(callee.expression)
546
+ ) {
547
+ const objName = callee.expression.text
548
+ return (
549
+ bindings.namespaceNames.has(objName) &&
550
+ !scope.isShadowedBeforeSourceFile(callee.expression, objName) &&
551
+ (callee.name.text === "ensurePaletteTokens" ||
552
+ callee.name.text === "ensurePaletteTokensFor")
553
+ )
554
+ }
555
+ return false
556
+ }
557
+
558
+ /** Every decorative-token usage in the source: a direct trusted token identifier, `namespace.blue11`,
559
+ * or `namespace["blue11"]` (a literal computed member). A computed member with a non-literal key
560
+ * (`namespace[dynamicExpr]`) cannot be resolved to a family — recorded as `dynamic: true` so it
561
+ * gets an explicit uncertain finding rather than silently disappearing. */
562
+ function collectDecorativeUsages(sf, ts, scope, bindings, identity) {
563
+ const usages = []
564
+ const visit = (node) => {
565
+ if (
566
+ ts.isIdentifier(node) &&
567
+ !ts.isImportSpecifier(node.parent) &&
568
+ bindings.tokenBindings.has(node.text)
569
+ ) {
570
+ if (!scope.isShadowedBeforeSourceFile(node, node.text)) {
571
+ usages.push({
572
+ node,
573
+ family: bindings.tokenBindings.get(node.text),
574
+ dynamic: false,
575
+ })
576
+ }
577
+ } else if (
578
+ ts.isPropertyAccessExpression(node) &&
579
+ ts.isIdentifier(node.expression) &&
580
+ bindings.namespaceNames.has(node.expression.text) &&
581
+ !scope.isShadowedBeforeSourceFile(
582
+ node.expression,
583
+ node.expression.text
584
+ ) &&
585
+ isPaletteBindingName(identity, node.name.text)
586
+ ) {
587
+ usages.push({ node, family: node.name.text, dynamic: false })
588
+ } else if (
589
+ ts.isElementAccessExpression(node) &&
590
+ ts.isIdentifier(node.expression) &&
591
+ bindings.namespaceNames.has(node.expression.text) &&
592
+ !scope.isShadowedBeforeSourceFile(node.expression, node.expression.text)
593
+ ) {
594
+ const arg = node.argumentExpression
595
+ if (arg && ts.isStringLiteralLike(arg)) {
596
+ if (isPaletteBindingName(identity, arg.text)) {
597
+ usages.push({ node, family: arg.text, dynamic: false })
598
+ }
599
+ } else if (arg) {
600
+ usages.push({ node, family: null, dynamic: true })
601
+ }
602
+ }
603
+ ts.forEachChild(node, visit)
604
+ }
605
+ visit(sf)
606
+ return usages
607
+ }
608
+
609
+ /**
610
+ * True if `node` is positioned after an unconditional `return`/`throw` STATEMENT in the same
611
+ * block, anywhere between `node` and `boundaryFn` — i.e. it is dead code that can never execute
612
+ * (bounded, single-block-level reachability; not a full CFG — a `return`/`throw` nested inside its
613
+ * own further conditional does not count, since it does not unconditionally exit ITS enclosing
614
+ * block).
615
+ */
616
+ function isDeadCode(node, boundaryFn, ts) {
617
+ let child = node
618
+ let cur = node.parent
619
+ while (cur && cur !== boundaryFn) {
620
+ if (ts.isBlock(cur) || ts.isSourceFile(cur)) {
621
+ const idx = cur.statements.indexOf(child)
622
+ if (idx > 0) {
623
+ for (let i = 0; i < idx; i++) {
624
+ if (
625
+ ts.isReturnStatement(cur.statements[i]) ||
626
+ ts.isThrowStatement(cur.statements[i])
627
+ ) {
628
+ return true
629
+ }
630
+ }
631
+ }
632
+ }
633
+ child = cur
634
+ cur = cur.parent
635
+ }
636
+ return false
637
+ }
638
+
639
+ /** The direct child of `block.statements` that (transitively) contains `node`, or null if `node`
640
+ * is not actually within `block`. */
641
+ function directStatementContaining(block, node, _ts) {
642
+ let cur = node
643
+ while (cur && cur.parent) {
644
+ if (cur.parent === block) return cur
645
+ cur = cur.parent
646
+ }
647
+ return null
648
+ }
649
+
650
+ /**
651
+ * Bounded, order-sensitive coverage check (straight-line document order — no loop/goto modelling):
652
+ * true if `call` is guaranteed to run before `usageNode` can be evaluated, within the same
653
+ * consuming scope `F`. This is what makes classification USAGE-sensitive rather than scope-wide —
654
+ * `isWithinConditional`/`isDeadCode` alone say a call is "unconditional in F", but that does not
655
+ * mean it precedes every usage in F: a guard clause can return an EARLIER usage before the call
656
+ * ever runs.
657
+ *
658
+ * Walks the block-ancestor chain of both `call` and `usageNode` up to `F`, finds their lowest
659
+ * shared block (outermost-first), and at the first level where they sit in DIFFERENT direct
660
+ * statements of that block, compares statement index — the call covers the usage only if its
661
+ * statement comes first. If they share the exact same direct statement at every checked level
662
+ * (e.g. both nested in the same `if` body), the deeper shared block is checked next. No shared
663
+ * block, or no resolvable statement, is conservatively "not covered".
664
+ */
665
+ function callCoversUsage(call, usageNode, F, ts) {
666
+ const blockChain = (node) => {
667
+ const blocks = []
668
+ let cur = node.parent
669
+ while (cur && cur !== F) {
670
+ if (ts.isBlock(cur) || ts.isSourceFile(cur)) blocks.push(cur)
671
+ cur = cur.parent
672
+ }
673
+ const fBody = ts.isSourceFile(F) ? F : F.body
674
+ if (fBody) blocks.push(fBody)
675
+ return blocks.reverse() // outermost first
676
+ }
677
+ const callBlocks = blockChain(call)
678
+ const usageBlocks = new Set(blockChain(usageNode))
679
+ const shared = callBlocks.filter((b) => usageBlocks.has(b))
680
+ if (shared.length === 0) return false
681
+
682
+ for (const block of shared) {
683
+ const callStmt = directStatementContaining(block, call, ts)
684
+ const usageStmt = directStatementContaining(block, usageNode, ts)
685
+ if (!callStmt || !usageStmt) return false
686
+ if (callStmt === usageStmt) continue // same statement at this level -- check the next, deeper shared block
687
+ const callIdx = block.statements.indexOf(callStmt)
688
+ const usageIdx = block.statements.indexOf(usageStmt)
689
+ if (callIdx === -1 || usageIdx === -1) return false
690
+ return callIdx < usageIdx
691
+ }
692
+ return false
693
+ }
694
+
695
+ /**
696
+ * Classifies one decorative USAGE (not merely its enclosing scope — see `callCoversUsage`):
697
+ * "confirmed" if a reachable, unconditional, correctly-scoped install call precedes it; "uncertain"
698
+ * with a `reason` if the best (or only) evidence is conditional, dead/unreachable, deferred into a
699
+ * callback, dynamic, positioned after the usage, or reached through an ambiguously-named or
700
+ * conditionally-called helper; "absent" if no relevant candidate exists at all. The caller maps
701
+ * ALL non-"confirmed" tiers to severity "warning" — this function's tiers only drive relative
702
+ * confidence and the reported reason, never an "error".
703
+ */
704
+ function classifyScope(F, sf, ts, scope, bindings, identity, usageNode) {
705
+ const isInstaller = (n) =>
706
+ ts.isCallExpression(n) && isTrustedInstallerCall(n, ts, scope, bindings)
707
+ const relevant = (call) =>
708
+ installDecorativeStatus(call, ts, identity, bindings) !== "not-decorative"
709
+ const reachable = (call) => !isDeadCode(call, F, ts)
710
+ const precedesUsage = (call) => callCoversUsage(call, usageNode, F, ts)
711
+
712
+ const direct = scope
713
+ .collectDirect(F, isInstaller)
714
+ .filter(relevant)
715
+ .filter(reachable)
716
+ for (const call of direct) {
717
+ if (
718
+ installDecorativeStatus(call, ts, identity, bindings) === "confirmed" &&
719
+ !scope.isWithinConditional(call, F) &&
720
+ precedesUsage(call)
721
+ ) {
722
+ return { tier: "confirmed" }
723
+ }
724
+ }
725
+
726
+ // One hop into a locally-declared helper the consuming scope calls directly (not nested in a
727
+ // further callback) — conditionally called helpers, ambiguously-named helpers (more than one
728
+ // local declaration shares the name — cannot safely resolve which one runs), helpers whose only
729
+ // internal install call is itself conditional/dynamic/unreachable, or a helper call that does not
730
+ // itself PRECEDE this usage (same guard-ordering rule as a direct call), do not certify.
731
+ const helperDecls = collectLocalFunctionDeclarations(sf, ts)
732
+ const helperCalls = scope
733
+ .collectDirect(
734
+ F,
735
+ (n) =>
736
+ ts.isCallExpression(n) &&
737
+ ts.isIdentifier(n.expression) &&
738
+ helperDecls.has(n.expression.text)
739
+ )
740
+ .filter(
741
+ (call) =>
742
+ !scope.isShadowedBeforeSourceFile(call.expression, call.expression.text)
743
+ )
744
+ .filter(reachable)
745
+
746
+ let helperUncertain = false
747
+ for (const helperCall of helperCalls) {
748
+ const helperFn = helperDecls.get(helperCall.expression.text)
749
+ if (helperFn === "ambiguous") {
750
+ helperUncertain = true
751
+ continue
752
+ }
753
+ const helperConditional = scope.isWithinConditional(helperCall, F)
754
+ const helperOrdered = precedesUsage(helperCall)
755
+ const innerDirect = scope
756
+ .collectDirect(helperFn, isInstaller)
757
+ .filter(relevant)
758
+ .filter((c) => !isDeadCode(c, helperFn, ts))
759
+ if (innerDirect.length > 0) helperUncertain = true
760
+ for (const inner of innerDirect) {
761
+ const innerConfirmed =
762
+ installDecorativeStatus(inner, ts, identity, bindings) === "confirmed"
763
+ const innerConditional = scope.isWithinConditional(inner, helperFn)
764
+ if (
765
+ innerConfirmed &&
766
+ !innerConditional &&
767
+ !helperConditional &&
768
+ helperOrdered
769
+ ) {
770
+ return { tier: "confirmed" }
771
+ }
772
+ }
773
+ }
774
+
775
+ if (direct.length > 0) {
776
+ const dynamicOnly = direct.every(
777
+ (c) => installDecorativeStatus(c, ts, identity, bindings) === "uncertain"
778
+ )
779
+ const anyOrdered = direct.some((c) => precedesUsage(c))
780
+ return {
781
+ tier: "uncertain",
782
+ reason: dynamicOnly
783
+ ? "the install call's family argument is not a literal, so it cannot be statically confirmed as decorative."
784
+ : !anyOrdered
785
+ ? "a reachable, unconditional ensurePaletteTokens()/-For() call exists in this scope, but only AFTER this usage — an earlier return/branch can reach this usage before the install runs."
786
+ : "a reachable ensurePaletteTokens()/-For() call exists in this scope, but only inside a conditional/guarded path.",
787
+ }
788
+ }
789
+
790
+ const nested = scope.collectNested(F, isInstaller).filter(relevant)
791
+ if (nested.length > 0) {
792
+ return {
793
+ tier: "uncertain",
794
+ reason:
795
+ "an ensurePaletteTokens()/-For() call exists, but only inside a nested callback/event handler — it does not run synchronously as part of this scope's own render path.",
796
+ }
797
+ }
798
+
799
+ if (helperUncertain) {
800
+ return {
801
+ tier: "uncertain",
802
+ reason:
803
+ "an ensurePaletteTokens()/-For() call exists in a locally-declared helper this scope calls, but either the helper's name is ambiguous (more than one local declaration), the call to the helper is conditional or positioned after this usage, or the call inside it is conditional/unreachable.",
804
+ }
805
+ }
806
+
807
+ return { tier: "absent" }
808
+ }
809
+
810
+ /** Top-level (and nested) named function/arrow declarations, for one-hop helper-call tracing.
811
+ * Keyed by declared name. A second declaration sharing a name marks it `"ambiguous"` instead of
812
+ * silently keeping the first one found — classifyScope treats an ambiguous helper call as
813
+ * uncertain, never resolving into (and potentially mis-certifying from) the wrong declaration. */
814
+ function collectLocalFunctionDeclarations(sf, ts) {
815
+ const decls = new Map()
816
+ const record = (name, fn) => {
817
+ if (decls.has(name)) decls.set(name, "ambiguous")
818
+ else decls.set(name, fn)
819
+ }
820
+ const visit = (node) => {
821
+ if (ts.isFunctionDeclaration(node) && node.name) {
822
+ record(node.name.text, node)
823
+ } else if (
824
+ ts.isVariableDeclaration(node) &&
825
+ ts.isIdentifier(node.name) &&
826
+ node.initializer
827
+ ) {
828
+ if (
829
+ ts.isArrowFunction(node.initializer) ||
830
+ ts.isFunctionExpression(node.initializer)
831
+ ) {
832
+ record(node.name.text, node.initializer)
833
+ }
834
+ }
835
+ ts.forEachChild(node, visit)
836
+ }
837
+ visit(sf)
838
+ return decls
839
+ }
840
+
841
+ function describeScope(F, sf, scope, _ts) {
842
+ const name = scope.functionName(F, sf)
843
+ return name ? `\`${name}\`` : "module scope"
844
+ }
845
+
846
+ function analyzePaletteInstallation(ts, identity, fileLabel, raw) {
847
+ const scope = createScopeHelpers(ts)
848
+ const sf = ts.createSourceFile(
849
+ fileLabel,
850
+ raw,
851
+ ts.ScriptTarget.Latest,
852
+ true,
853
+ scriptKindFor(ts, fileLabel)
854
+ )
855
+ const bindings = collectBindings(sf, ts, identity)
856
+ const usages = collectDecorativeUsages(sf, ts, scope, bindings, identity)
857
+ if (usages.length === 0) return []
858
+
859
+ const findings = []
860
+ const reportedScopes = new Set()
861
+
862
+ for (const usage of usages) {
863
+ if (usage.dynamic) {
864
+ const key = `dynamic:${usage.node.getStart(sf)}`
865
+ if (reportedScopes.has(key)) continue
866
+ reportedScopes.add(key)
867
+ const pos = sf.getLineAndCharacterOfPosition(usage.node.getStart(sf))
868
+ findings.push(
869
+ makeFinding(identity, {
870
+ code: "unestablished-palette-install",
871
+ severity: "warning",
872
+ confidence: "low",
873
+ file: fileLabel,
874
+ line: pos.line + 1,
875
+ column: pos.character + 1,
876
+ evidence:
877
+ "A computed member access on the tokens namespace uses a non-literal key, so the referenced family cannot be statically determined.",
878
+ explanation:
879
+ "Static analysis cannot resolve which decorative family this reads, so palette-install coverage for this usage cannot be verified.",
880
+ suggestion:
881
+ 'Prefer a literal token member (e.g. tokens.blue11 or tokens["blue11"]) so this is verifiable, or confirm manually that every family this path may resolve to has its palette sheet installed.',
882
+ })
883
+ )
884
+ continue
885
+ }
886
+
887
+ // Classified PER USAGE, not per scope: a scope can contain an unconditional install call that
888
+ // still does not cover an EARLIER usage reachable via a guard clause that returns first (see
889
+ // callCoversUsage) — deduping by scope alone would let that earlier usage silently inherit a
890
+ // later usage's "confirmed" verdict.
891
+ const F = scope.enclosingFunctionOrFile(usage.node, sf)
892
+ const usageKey = String(usage.node.getStart(sf))
893
+ if (reportedScopes.has(usageKey)) continue
894
+ reportedScopes.add(usageKey)
895
+
896
+ const status = classifyScope(
897
+ F,
898
+ sf,
899
+ ts,
900
+ scope,
901
+ bindings,
902
+ identity,
903
+ usage.node
904
+ )
905
+ if (status.tier === "confirmed") continue
906
+
907
+ const pos = sf.getLineAndCharacterOfPosition(usage.node.getStart(sf))
908
+ const scopeDesc = describeScope(F, sf, scope, ts)
909
+ const family = familyOf(identity, usage.family)
910
+
911
+ // Never "error" here: this is single-source analysis with no cross-file tracing, so it can
912
+ // never prove a decorative usage is actually broken — a shared bootstrap/provider install
913
+ // elsewhere is always a possibility this source alone cannot rule out. Severity stays
914
+ // "warning" for every tier; only confidence varies.
915
+ const verifyAction =
916
+ `Not confirmable from this source alone — local absence does not prove a bootstrap/provider install does not exist elsewhere. ` +
917
+ `Inspect this integration's existing installation contract for "${family}" before assuming a defect. ` +
918
+ `Once available, establish the install through the pending WP2B React adapter (not yet shipped) rather than adding an ad hoc render-time call here.`
919
+
920
+ if (status.tier === "uncertain") {
921
+ findings.push(
922
+ makeFinding(identity, {
923
+ code: "unestablished-palette-install",
924
+ severity: "warning",
925
+ confidence: "medium",
926
+ file: fileLabel,
927
+ line: pos.line + 1,
928
+ column: pos.character + 1,
929
+ evidence: `Decorative token "${usage.family}" is used in ${scopeDesc}: ${status.reason}`,
930
+ explanation:
931
+ "Static analysis cannot prove this path always runs, unconditionally and synchronously, before the decorative token renders. If it does not actually cover this usage, the palette sheet may never load and the value renders as an invalid custom property with no colour.",
932
+ suggestion: verifyAction,
933
+ })
934
+ )
935
+ } else {
936
+ findings.push(
937
+ makeFinding(identity, {
938
+ code: "unestablished-palette-install",
939
+ severity: "warning",
940
+ confidence: "high",
941
+ file: fileLabel,
942
+ line: pos.line + 1,
943
+ column: pos.character + 1,
944
+ evidence: `Decorative token "${usage.family}" is used in ${scopeDesc}, with no reachable, unconditional, correctly-scoped ensurePaletteTokens()/-For() call found for it in this source.`,
945
+ explanation: `"${family}" sits outside the core sheet (accent/gray/error/warning/success/info) that loads by default. Without an install covering it, this renders an invalid custom property and no colour — but this source alone cannot confirm whether a shared bootstrap/provider elsewhere already covers it.`,
946
+ suggestion: verifyAction,
947
+ })
948
+ )
949
+ }
950
+ }
951
+
952
+ return findings
953
+ }
954
+
955
+ // ---------------------------------------------------------------------------
956
+ // Public entrypoint
957
+ // ---------------------------------------------------------------------------
958
+
959
+ /**
960
+ * Analyzes one already-in-memory source string — no fs, no path resolution, nothing derived from
961
+ * `sourceText` is ever used as a filesystem path or executed. Runs `legacy-volt-class` and
962
+ * `hand-written-volt-css-var` unconditionally (pure text, no TypeScript needed). Runs
963
+ * `unestablished-palette-install` only if BOTH `ts` is supplied (injected by the caller — this
964
+ * module never resolves it) AND `fileNameHint` looks like a script file (`.ts`/`.tsx`/`.js`/`.jsx`)
965
+ * — a `.css`/`.scss` hint (or any non-script hint) only ever produces the two textual rules'
966
+ * findings, same as the CLI's file-based behavior for a stylesheet. `fileNameHint` is a LABEL for
967
+ * output only (the `file` field on findings, and which parse mode to use) — never treated as a
968
+ * path to read.
969
+ *
970
+ * Returns the same finding array shape `migration-diagnostics.mjs` (via its `analyzeFile`) has
971
+ * always returned, in the same order (textual findings first, then palette findings). Calling this
972
+ * twice with the same inputs returns equivalent findings and does not mutate `identity` (its
973
+ * `core`/`palette` `Set`s are only ever read, never written).
974
+ */
975
+ export function analyzeSource(
976
+ sourceText,
977
+ { identity, ts, fileNameHint = "source.tsx" } = {}
978
+ ) {
979
+ if (!identity) {
980
+ throw new Error(
981
+ "analyzeSource requires a resolved `identity` — { packageName, packageVersion, generatedInputHash, core: Set<string>, palette: Set<string> }."
982
+ )
983
+ }
984
+ const findings = textualFindings(identity, fileNameHint, sourceText)
985
+ if (ts && SCRIPT_EXT_RE.test(fileNameHint)) {
986
+ findings.push(
987
+ ...analyzePaletteInstallation(ts, identity, fileNameHint, sourceText)
988
+ )
989
+ }
990
+ return findings
991
+ }