se-design 1.0.2 → 1.0.8-5.dev.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 (564) hide show
  1. package/dist/assets/colors.css +26 -13
  2. package/dist/assets/icons/ai-off.svg +6 -0
  3. package/dist/assets/icons/ai-re-run.svg +5 -0
  4. package/dist/assets/icons/arrow-head.svg +8 -0
  5. package/dist/assets/icons/center-align.svg +3 -0
  6. package/dist/assets/icons/chat.svg +4 -0
  7. package/dist/assets/icons/checkbox-disabled-minus.svg +1 -1
  8. package/dist/assets/icons/checkbox-disabled-tick.svg +1 -1
  9. package/dist/assets/icons/checkbox-fill.svg +1 -1
  10. package/dist/assets/icons/checkbox-hover-fill.svg +2 -2
  11. package/dist/assets/icons/checkbox-hover-minus.svg +1 -1
  12. package/dist/assets/icons/checkbox-hover-tick.svg +1 -1
  13. package/dist/assets/icons/checkbox-minus.svg +1 -1
  14. package/dist/assets/icons/checkbox-tick.svg +1 -1
  15. package/dist/assets/icons/combobox-field.svg +6 -0
  16. package/dist/assets/icons/command.svg +1 -1
  17. package/dist/assets/icons/csv-file.svg +4 -4
  18. package/dist/assets/icons/doc-file.svg +6 -0
  19. package/dist/assets/icons/envelope.svg +4 -0
  20. package/dist/assets/icons/file-filled-checked.svg +8 -0
  21. package/dist/assets/icons/filter.svg +3 -0
  22. package/dist/assets/icons/google-drive.svg +8 -0
  23. package/dist/assets/icons/home.svg +3 -2
  24. package/dist/assets/icons/left-align.svg +3 -0
  25. package/dist/assets/icons/library.svg +6 -0
  26. package/dist/assets/icons/minus.svg +3 -0
  27. package/dist/assets/icons/office-building.svg +9 -0
  28. package/dist/assets/icons/photo.svg +5 -3
  29. package/dist/assets/icons/plus.svg +4 -0
  30. package/dist/assets/icons/reports.svg +4 -0
  31. package/dist/assets/icons/repository.svg +4 -0
  32. package/dist/assets/icons/right-align.svg +3 -0
  33. package/dist/assets/icons/sort-asc.svg +3 -4
  34. package/dist/assets/icons/sort-desc.svg +2 -3
  35. package/dist/assets/icons/tag.svg +2 -2
  36. package/dist/assets/icons/upload-csv.svg +37 -0
  37. package/dist/assets/icons/views.svg +7 -0
  38. package/dist/assets/icons/warning.svg +10 -0
  39. package/dist/assets/style.css +1 -1
  40. package/dist/assets/typographyMixin.scss +8 -0
  41. package/dist/components/AccessibleDiv/index.d.ts +46 -0
  42. package/dist/components/Accordion/index.d.ts +2 -0
  43. package/dist/components/AutoCompleteInput/index.d.ts +37 -7
  44. package/dist/components/Avatar/index.d.ts +1 -0
  45. package/dist/components/Badge/index.d.ts +2 -0
  46. package/dist/components/Banner/index.d.ts +17 -4
  47. package/dist/components/BottomSheet/index.d.ts +14 -0
  48. package/dist/components/BreadCrumbs/index.d.ts +5 -0
  49. package/dist/components/Button/index.d.ts +51 -7
  50. package/dist/components/Checkbox/index.d.ts +36 -0
  51. package/dist/components/CustomAccordion/index.d.ts +6 -0
  52. package/dist/components/CustomModal/index.d.ts +56 -1
  53. package/dist/components/DatePicker/index.d.ts +7 -0
  54. package/dist/components/DatePicker/useDatePickerA11y.d.ts +47 -0
  55. package/dist/components/Dropdown/index.d.ts +24 -0
  56. package/dist/components/DropdownWithInputTags/index.d.ts +14 -2
  57. package/dist/components/GuidedTour/index.d.ts +27 -0
  58. package/dist/components/Header/index.d.ts +3 -2
  59. package/dist/components/Icon/index.d.ts +45 -4
  60. package/dist/components/InfoBar/index.d.ts +10 -0
  61. package/dist/components/InfoTooltip/index.d.ts +21 -0
  62. package/dist/components/Input/index.d.ts +38 -6
  63. package/dist/components/InputWithIcon/index.d.ts +36 -2
  64. package/dist/components/KebabMenu/index.d.ts +1 -0
  65. package/dist/components/LabelChip/index.d.ts +3 -0
  66. package/dist/components/Link/index.d.ts +64 -0
  67. package/dist/components/MenuItem/index.d.ts +13 -3
  68. package/dist/components/MenuList/index.d.ts +3 -2
  69. package/dist/components/MessageBar/index.d.ts +20 -1
  70. package/dist/components/Modal/index.d.ts +3 -0
  71. package/dist/components/NavigationBar/TabButton.d.ts +20 -0
  72. package/dist/components/NavigationBar/index.d.ts +8 -1
  73. package/dist/components/OTPInput/index.d.ts +1 -0
  74. package/dist/components/OnboardingTour/index.d.ts +35 -0
  75. package/dist/components/Pagination/index.d.ts +2 -0
  76. package/dist/components/Paywall/index.d.ts +47 -0
  77. package/dist/components/PhoneInput/index.d.ts +27 -0
  78. package/dist/components/Popover/index.d.ts +19 -3
  79. package/dist/components/Radio/index.d.ts +7 -0
  80. package/dist/components/RadioGroup/index.d.ts +18 -0
  81. package/dist/components/ShimmerLoader/index.d.ts +4 -2
  82. package/dist/components/SidebarOverlay/index.d.ts +36 -0
  83. package/dist/components/SkipLinksBar/index.d.ts +11 -0
  84. package/dist/components/SnackBar/index.d.ts +5 -2
  85. package/dist/components/Spinner/index.d.ts +13 -1
  86. package/dist/components/TableLayout/index.d.ts +18 -0
  87. package/dist/components/Tabs/index.d.ts +6 -1
  88. package/dist/components/TimePicker/index.d.ts +14 -0
  89. package/dist/components/Toggle/index.d.ts +25 -1
  90. package/dist/components/Tooltip/index.d.ts +19 -2
  91. package/dist/components/index.d.ts +10 -0
  92. package/dist/index.js +152 -103
  93. package/dist/index.js.map +1 -1
  94. package/dist/index10.js +23 -48
  95. package/dist/index10.js.map +1 -1
  96. package/dist/index100.js +1 -1
  97. package/dist/index100.js.map +1 -1
  98. package/dist/index101.js +1 -1
  99. package/dist/index101.js.map +1 -1
  100. package/dist/index102.js +1 -1
  101. package/dist/index102.js.map +1 -1
  102. package/dist/index103.js +1 -1
  103. package/dist/index103.js.map +1 -1
  104. package/dist/index104.js +1 -1
  105. package/dist/index104.js.map +1 -1
  106. package/dist/index105.js +1 -1
  107. package/dist/index105.js.map +1 -1
  108. package/dist/index106.js +1 -1
  109. package/dist/index106.js.map +1 -1
  110. package/dist/index107.js +1 -1
  111. package/dist/index107.js.map +1 -1
  112. package/dist/index108.js +1 -1
  113. package/dist/index108.js.map +1 -1
  114. package/dist/index109.js +2 -2
  115. package/dist/index109.js.map +1 -1
  116. package/dist/index11.js +74 -18
  117. package/dist/index11.js.map +1 -1
  118. package/dist/index110.js +1 -1
  119. package/dist/index110.js.map +1 -1
  120. package/dist/index111.js +1 -1
  121. package/dist/index111.js.map +1 -1
  122. package/dist/index112.js +1 -1
  123. package/dist/index112.js.map +1 -1
  124. package/dist/index113.js +2 -2
  125. package/dist/index113.js.map +1 -1
  126. package/dist/index114.js +1 -1
  127. package/dist/index114.js.map +1 -1
  128. package/dist/index115.js +2 -2
  129. package/dist/index115.js.map +1 -1
  130. package/dist/index116.js +1 -1
  131. package/dist/index116.js.map +1 -1
  132. package/dist/index117.js +2 -2
  133. package/dist/index117.js.map +1 -1
  134. package/dist/index118.js +1 -1
  135. package/dist/index118.js.map +1 -1
  136. package/dist/index119.js +2 -2
  137. package/dist/index119.js.map +1 -1
  138. package/dist/index12.js +76 -11
  139. package/dist/index12.js.map +1 -1
  140. package/dist/index120.js +1 -1
  141. package/dist/index120.js.map +1 -1
  142. package/dist/index121.js +1 -1
  143. package/dist/index121.js.map +1 -1
  144. package/dist/index122.js +1 -1
  145. package/dist/index122.js.map +1 -1
  146. package/dist/index123.js +1 -1
  147. package/dist/index123.js.map +1 -1
  148. package/dist/index124.js +1 -1
  149. package/dist/index124.js.map +1 -1
  150. package/dist/index125.js +2 -2
  151. package/dist/index125.js.map +1 -1
  152. package/dist/index126.js +2 -2
  153. package/dist/index126.js.map +1 -1
  154. package/dist/index127.js +2 -2
  155. package/dist/index127.js.map +1 -1
  156. package/dist/index128.js +1 -1
  157. package/dist/index128.js.map +1 -1
  158. package/dist/index129.js +1 -1
  159. package/dist/index129.js.map +1 -1
  160. package/dist/index13.js +64 -5
  161. package/dist/index13.js.map +1 -1
  162. package/dist/index130.js +2 -2
  163. package/dist/index130.js.map +1 -1
  164. package/dist/index131.js +1 -1
  165. package/dist/index131.js.map +1 -1
  166. package/dist/index132.js +1 -1
  167. package/dist/index132.js.map +1 -1
  168. package/dist/index133.js +1 -1
  169. package/dist/index133.js.map +1 -1
  170. package/dist/index134.js +1 -1
  171. package/dist/index134.js.map +1 -1
  172. package/dist/index135.js +2 -2
  173. package/dist/index135.js.map +1 -1
  174. package/dist/index136.js +2 -2
  175. package/dist/index136.js.map +1 -1
  176. package/dist/index137.js +1 -1
  177. package/dist/index137.js.map +1 -1
  178. package/dist/index138.js +1 -1
  179. package/dist/index138.js.map +1 -1
  180. package/dist/index139.js +1 -1
  181. package/dist/index139.js.map +1 -1
  182. package/dist/index14.js +15 -138
  183. package/dist/index14.js.map +1 -1
  184. package/dist/index140.js +2 -2
  185. package/dist/index140.js.map +1 -1
  186. package/dist/index141.js +1 -1
  187. package/dist/index141.js.map +1 -1
  188. package/dist/index142.js +1 -1
  189. package/dist/index142.js.map +1 -1
  190. package/dist/index143.js +1 -1
  191. package/dist/index143.js.map +1 -1
  192. package/dist/index144.js +2 -2
  193. package/dist/index144.js.map +1 -1
  194. package/dist/index145.js +1 -1
  195. package/dist/index145.js.map +1 -1
  196. package/dist/index146.js +2 -2
  197. package/dist/index146.js.map +1 -1
  198. package/dist/index147.js +1 -1
  199. package/dist/index147.js.map +1 -1
  200. package/dist/index148.js +1 -1
  201. package/dist/index148.js.map +1 -1
  202. package/dist/index149.js +1 -1
  203. package/dist/index149.js.map +1 -1
  204. package/dist/index15.js +10 -54
  205. package/dist/index15.js.map +1 -1
  206. package/dist/index150.js +1 -1
  207. package/dist/index150.js.map +1 -1
  208. package/dist/index151.js +1 -1
  209. package/dist/index151.js.map +1 -1
  210. package/dist/index152.js +2 -2
  211. package/dist/index152.js.map +1 -1
  212. package/dist/index153.js +1 -1
  213. package/dist/index153.js.map +1 -1
  214. package/dist/index154.js +2 -2
  215. package/dist/index154.js.map +1 -1
  216. package/dist/index155.js +2 -149
  217. package/dist/index155.js.map +1 -1
  218. package/dist/index156.js +5 -0
  219. package/dist/index156.js.map +1 -0
  220. package/dist/index157.js +5 -0
  221. package/dist/index157.js.map +1 -0
  222. package/dist/index158.js +5 -0
  223. package/dist/index158.js.map +1 -0
  224. package/dist/index159.js +5 -0
  225. package/dist/index159.js.map +1 -0
  226. package/dist/index16.js +216 -54
  227. package/dist/index16.js.map +1 -1
  228. package/dist/index160.js +5 -0
  229. package/dist/index160.js.map +1 -0
  230. package/dist/index161.js +5 -0
  231. package/dist/index161.js.map +1 -0
  232. package/dist/index162.js +5 -0
  233. package/dist/index162.js.map +1 -0
  234. package/dist/index163.js +5 -0
  235. package/dist/index163.js.map +1 -0
  236. package/dist/index164.js +5 -0
  237. package/dist/index164.js.map +1 -0
  238. package/dist/index165.js +5 -0
  239. package/dist/index165.js.map +1 -0
  240. package/dist/index166.js +5 -0
  241. package/dist/index166.js.map +1 -0
  242. package/dist/index167.js +2 -12
  243. package/dist/index167.js.map +1 -1
  244. package/dist/index168.js +5 -0
  245. package/dist/index168.js.map +1 -0
  246. package/dist/index169.js +5 -0
  247. package/dist/index169.js.map +1 -0
  248. package/dist/index17.js +60 -250
  249. package/dist/index17.js.map +1 -1
  250. package/dist/index170.js +5 -0
  251. package/dist/index170.js.map +1 -0
  252. package/dist/index171.js +5 -0
  253. package/dist/index171.js.map +1 -0
  254. package/dist/index172.js +5 -0
  255. package/dist/index172.js.map +1 -0
  256. package/dist/index173.js +5 -0
  257. package/dist/index173.js.map +1 -0
  258. package/dist/index174.js +5 -0
  259. package/dist/index174.js.map +1 -0
  260. package/dist/index175.js +1 -1232
  261. package/dist/index175.js.map +1 -1
  262. package/dist/index176.js +5 -0
  263. package/dist/index176.js.map +1 -0
  264. package/dist/index177.js +5 -0
  265. package/dist/index177.js.map +1 -0
  266. package/dist/index178.js +5 -0
  267. package/dist/index178.js.map +1 -0
  268. package/dist/index179.js +2 -4
  269. package/dist/index179.js.map +1 -1
  270. package/dist/index18.js +128 -11
  271. package/dist/index18.js.map +1 -1
  272. package/dist/index180.js +5 -0
  273. package/dist/index180.js.map +1 -0
  274. package/dist/index181.js +5 -0
  275. package/dist/index181.js.map +1 -0
  276. package/dist/index182.js +5 -0
  277. package/dist/index182.js.map +1 -0
  278. package/dist/index183.js +2 -10
  279. package/dist/index183.js.map +1 -1
  280. package/dist/index184.js +1 -9
  281. package/dist/index184.js.map +1 -1
  282. package/dist/index185.js +2 -5
  283. package/dist/index185.js.map +1 -1
  284. package/dist/index186.js +2 -170
  285. package/dist/index186.js.map +1 -1
  286. package/dist/index187.js +2 -11
  287. package/dist/index187.js.map +1 -1
  288. package/dist/index188.js +1 -5
  289. package/dist/index188.js.map +1 -1
  290. package/dist/index189.js +2 -6
  291. package/dist/index189.js.map +1 -1
  292. package/dist/index19.js +360 -32
  293. package/dist/index19.js.map +1 -1
  294. package/dist/index190.js +2 -38
  295. package/dist/index190.js.map +1 -1
  296. package/dist/index191.js +2 -2
  297. package/dist/index191.js.map +1 -1
  298. package/dist/index192.js +2 -8
  299. package/dist/index192.js.map +1 -1
  300. package/dist/index193.js +2 -327
  301. package/dist/index193.js.map +1 -1
  302. package/dist/index194.js +2 -50
  303. package/dist/index194.js.map +1 -1
  304. package/dist/index195.js +2 -2
  305. package/dist/index195.js.map +1 -1
  306. package/dist/index196.js +2 -76
  307. package/dist/index196.js.map +1 -1
  308. package/dist/index197.js +2 -93
  309. package/dist/index197.js.map +1 -1
  310. package/dist/index198.js +2 -52
  311. package/dist/index198.js.map +1 -1
  312. package/dist/index199.js +2 -8
  313. package/dist/index199.js.map +1 -1
  314. package/dist/index20.js +18 -55
  315. package/dist/index20.js.map +1 -1
  316. package/dist/index200.js +2 -5
  317. package/dist/index200.js.map +1 -1
  318. package/dist/index201.js +2 -52
  319. package/dist/index201.js.map +1 -1
  320. package/dist/index202.js +2 -2
  321. package/dist/index202.js.map +1 -1
  322. package/dist/index203.js +149 -2
  323. package/dist/index203.js.map +1 -1
  324. package/dist/index204.js +12 -0
  325. package/dist/index204.js.map +1 -0
  326. package/dist/index205.js +9 -0
  327. package/dist/index205.js.map +1 -0
  328. package/dist/index206.js +8 -0
  329. package/dist/index206.js.map +1 -0
  330. package/dist/index207.js +46 -0
  331. package/dist/index207.js.map +1 -0
  332. package/dist/index208.js +24 -0
  333. package/dist/index208.js.map +1 -0
  334. package/dist/index21.js +33 -45
  335. package/dist/index21.js.map +1 -1
  336. package/dist/index215.js +31 -0
  337. package/dist/index215.js.map +1 -0
  338. package/dist/index216.js +75 -0
  339. package/dist/index216.js.map +1 -0
  340. package/dist/index22.js +64 -21
  341. package/dist/index22.js.map +1 -1
  342. package/dist/index224.js +15 -0
  343. package/dist/index224.js.map +1 -0
  344. package/dist/index23.js +84 -189
  345. package/dist/index23.js.map +1 -1
  346. package/dist/index232.js +1236 -0
  347. package/dist/index232.js.map +1 -0
  348. package/dist/index235.js +46 -0
  349. package/dist/index235.js.map +1 -0
  350. package/dist/index24.js +21 -45
  351. package/dist/index24.js.map +1 -1
  352. package/dist/index244.js +173 -0
  353. package/dist/index244.js.map +1 -0
  354. package/dist/index245.js +7 -0
  355. package/dist/index245.js.map +1 -0
  356. package/dist/index247.js +22 -0
  357. package/dist/index247.js.map +1 -0
  358. package/dist/index248.js +13 -0
  359. package/dist/index248.js.map +1 -0
  360. package/dist/index249.js +13 -0
  361. package/dist/index249.js.map +1 -0
  362. package/dist/index25.js +384 -18
  363. package/dist/index25.js.map +1 -1
  364. package/dist/index250.js +8 -0
  365. package/dist/index250.js.map +1 -0
  366. package/dist/index251.js +173 -0
  367. package/dist/index251.js.map +1 -0
  368. package/dist/index252.js +14 -0
  369. package/dist/index252.js.map +1 -0
  370. package/dist/index253.js +9 -0
  371. package/dist/index253.js.map +1 -0
  372. package/dist/index254.js +9 -0
  373. package/dist/index254.js.map +1 -0
  374. package/dist/index255.js +41 -0
  375. package/dist/index255.js.map +1 -0
  376. package/dist/index256.js +5 -0
  377. package/dist/index256.js.map +1 -0
  378. package/dist/index257.js +11 -0
  379. package/dist/index257.js.map +1 -0
  380. package/dist/index258.js +330 -0
  381. package/dist/index258.js.map +1 -0
  382. package/dist/index259.js +53 -0
  383. package/dist/index259.js.map +1 -0
  384. package/dist/index26.js +46 -51
  385. package/dist/index26.js.map +1 -1
  386. package/dist/index260.js +5 -0
  387. package/dist/index260.js.map +1 -0
  388. package/dist/index261.js +79 -0
  389. package/dist/index261.js.map +1 -0
  390. package/dist/index262.js +96 -0
  391. package/dist/index262.js.map +1 -0
  392. package/dist/index263.js +55 -0
  393. package/dist/index263.js.map +1 -0
  394. package/dist/index264.js +11 -0
  395. package/dist/index264.js.map +1 -0
  396. package/dist/index265.js +8 -0
  397. package/dist/index265.js.map +1 -0
  398. package/dist/index266.js +55 -0
  399. package/dist/index266.js.map +1 -0
  400. package/dist/index267.js +5 -0
  401. package/dist/index267.js.map +1 -0
  402. package/dist/index268.js +5 -0
  403. package/dist/index268.js.map +1 -0
  404. package/dist/index27.js +22 -74
  405. package/dist/index27.js.map +1 -1
  406. package/dist/index28.js +108 -83
  407. package/dist/index28.js.map +1 -1
  408. package/dist/index29.js +148 -49
  409. package/dist/index29.js.map +1 -1
  410. package/dist/index3.js +69 -65
  411. package/dist/index3.js.map +1 -1
  412. package/dist/index30.js +133 -95
  413. package/dist/index30.js.map +1 -1
  414. package/dist/index31.js +77 -77
  415. package/dist/index31.js.map +1 -1
  416. package/dist/index32.js +99 -32
  417. package/dist/index32.js.map +1 -1
  418. package/dist/index33.js +75 -36
  419. package/dist/index33.js.map +1 -1
  420. package/dist/index34.js +42 -46
  421. package/dist/index34.js.map +1 -1
  422. package/dist/index35.js +72 -56
  423. package/dist/index35.js.map +1 -1
  424. package/dist/index36.js +99 -169
  425. package/dist/index36.js.map +1 -1
  426. package/dist/index37.js +51 -38
  427. package/dist/index37.js.map +1 -1
  428. package/dist/index38.js +306 -82
  429. package/dist/index38.js.map +1 -1
  430. package/dist/index39.js +70 -31
  431. package/dist/index39.js.map +1 -1
  432. package/dist/index4.js +108 -42
  433. package/dist/index4.js.map +1 -1
  434. package/dist/index40.js +82 -50
  435. package/dist/index40.js.map +1 -1
  436. package/dist/index41.js +27 -67
  437. package/dist/index41.js.map +1 -1
  438. package/dist/index42.js +45 -51
  439. package/dist/index42.js.map +1 -1
  440. package/dist/index43.js +109 -94
  441. package/dist/index43.js.map +1 -1
  442. package/dist/index44.js +54 -92
  443. package/dist/index44.js.map +1 -1
  444. package/dist/index45.js +143 -35
  445. package/dist/index45.js.map +1 -1
  446. package/dist/index46.js +194 -30
  447. package/dist/index46.js.map +1 -1
  448. package/dist/index47.js +36 -30
  449. package/dist/index47.js.map +1 -1
  450. package/dist/index48.js +34 -53
  451. package/dist/index48.js.map +1 -1
  452. package/dist/index49.js +142 -359
  453. package/dist/index49.js.map +1 -1
  454. package/dist/index5.js +41 -232
  455. package/dist/index5.js.map +1 -1
  456. package/dist/index50.js +82 -61
  457. package/dist/index50.js.map +1 -1
  458. package/dist/index51.js +458 -35
  459. package/dist/index51.js.map +1 -1
  460. package/dist/index52.js +98 -38
  461. package/dist/index52.js.map +1 -1
  462. package/dist/index53.js +42 -84
  463. package/dist/index53.js.map +1 -1
  464. package/dist/index54.js +36 -140
  465. package/dist/index54.js.map +1 -1
  466. package/dist/index55.js +88 -136
  467. package/dist/index55.js.map +1 -1
  468. package/dist/index56.js +166 -0
  469. package/dist/index56.js.map +1 -0
  470. package/dist/index57.js +149 -2
  471. package/dist/index57.js.map +1 -1
  472. package/dist/index58.js +33 -2
  473. package/dist/index58.js.map +1 -1
  474. package/dist/index59.js +86 -2
  475. package/dist/index59.js.map +1 -1
  476. package/dist/index6.js +328 -50
  477. package/dist/index6.js.map +1 -1
  478. package/dist/index60.js +119 -2
  479. package/dist/index60.js.map +1 -1
  480. package/dist/index61.js +78 -2
  481. package/dist/index61.js.map +1 -1
  482. package/dist/index62.js +152 -2
  483. package/dist/index62.js.map +1 -1
  484. package/dist/index63.js +318 -2
  485. package/dist/index63.js.map +1 -1
  486. package/dist/index64.js +47 -2
  487. package/dist/index64.js.map +1 -1
  488. package/dist/index65.js +145 -2
  489. package/dist/index65.js.map +1 -1
  490. package/dist/index66.js +12 -2
  491. package/dist/index66.js.map +1 -1
  492. package/dist/index67.js +46 -2
  493. package/dist/index67.js.map +1 -1
  494. package/dist/index68.js +103 -2
  495. package/dist/index68.js.map +1 -1
  496. package/dist/index69.js +19 -2
  497. package/dist/index69.js.map +1 -1
  498. package/dist/index7.js +44 -51
  499. package/dist/index7.js.map +1 -1
  500. package/dist/index70.js +66 -2
  501. package/dist/index70.js.map +1 -1
  502. package/dist/index71.js +27 -2
  503. package/dist/index71.js.map +1 -1
  504. package/dist/index72.js +108 -2
  505. package/dist/index72.js.map +1 -1
  506. package/dist/index73.js +62 -2
  507. package/dist/index73.js.map +1 -1
  508. package/dist/index74.js +21 -2
  509. package/dist/index74.js.map +1 -1
  510. package/dist/index75.js +171 -2
  511. package/dist/index75.js.map +1 -1
  512. package/dist/index76.js +18 -2
  513. package/dist/index76.js.map +1 -1
  514. package/dist/index77.js +11 -2
  515. package/dist/index77.js.map +1 -1
  516. package/dist/index78.js +5 -2
  517. package/dist/index78.js.map +1 -1
  518. package/dist/index79.js +56 -2
  519. package/dist/index79.js.map +1 -1
  520. package/dist/index8.js +48 -18
  521. package/dist/index8.js.map +1 -1
  522. package/dist/index80.js +27 -2
  523. package/dist/index80.js.map +1 -1
  524. package/dist/index81.js +9 -2
  525. package/dist/index81.js.map +1 -1
  526. package/dist/index83.js +2 -2
  527. package/dist/index83.js.map +1 -1
  528. package/dist/index84.js +2 -2
  529. package/dist/index84.js.map +1 -1
  530. package/dist/index85.js +1 -1
  531. package/dist/index85.js.map +1 -1
  532. package/dist/index86.js +2 -2
  533. package/dist/index86.js.map +1 -1
  534. package/dist/index87.js +1 -1
  535. package/dist/index87.js.map +1 -1
  536. package/dist/index88.js +1 -1
  537. package/dist/index88.js.map +1 -1
  538. package/dist/index89.js +1 -1
  539. package/dist/index89.js.map +1 -1
  540. package/dist/index9.js +91 -59
  541. package/dist/index9.js.map +1 -1
  542. package/dist/index90.js +1 -1
  543. package/dist/index90.js.map +1 -1
  544. package/dist/index91.js +2 -2
  545. package/dist/index91.js.map +1 -1
  546. package/dist/index92.js +2 -2
  547. package/dist/index92.js.map +1 -1
  548. package/dist/index93.js +2 -2
  549. package/dist/index93.js.map +1 -1
  550. package/dist/index94.js +1 -1
  551. package/dist/index94.js.map +1 -1
  552. package/dist/index95.js +2 -2
  553. package/dist/index95.js.map +1 -1
  554. package/dist/index96.js +1 -1
  555. package/dist/index96.js.map +1 -1
  556. package/dist/index97.js +1 -1
  557. package/dist/index97.js.map +1 -1
  558. package/dist/index98.js +1 -1
  559. package/dist/index98.js.map +1 -1
  560. package/dist/index99.js +2 -2
  561. package/dist/index99.js.map +1 -1
  562. package/package.json +1 -1
  563. package/dist/index82.js +0 -5
  564. package/dist/index82.js.map +0 -1
package/dist/index65.js CHANGED
@@ -1,5 +1,148 @@
1
- const e = "data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M1.875%209.66284H22.125M15.8942%2015.1148H18.2307M20.5673%204.21094H3.43274C2.57245%204.21094%201.87505%204.94505%201.87505%205.85061V18.1482C1.87505%2019.0537%202.57245%2019.7878%203.43274%2019.7878H20.5673C21.4276%2019.7878%2022.125%2019.0537%2022.125%2018.1482V5.85061C22.125%204.94505%2021.4276%204.21094%2020.5673%204.21094Z'%20stroke='%23415575'%20stroke-width='1.6'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3c/svg%3e";
1
+ import a from "react";
2
+ import { Button as f } from "./index4.js";
3
+ import { Badge as j } from "./index10.js";
4
+ import { Icon as q } from "./index6.js";
5
+ import { Link as N } from "./index64.js";
6
+ import { CustomModal as G } from "./index13.js";
7
+ import { useStableId as J } from "./index205.js";
8
+ /* empty css */
9
+ const K = {
10
+ lg: {
11
+ width: "768px",
12
+ height: "500px"
13
+ },
14
+ sm: {
15
+ width: "656px",
16
+ height: "384px"
17
+ }
18
+ }, ea = ({
19
+ isOpen: u,
20
+ onClose: n,
21
+ trigger: c,
22
+ modalWidth: b,
23
+ modalHeight: g,
24
+ variant: x,
25
+ size: t = "lg",
26
+ availabilityLabel: k = "Available on ",
27
+ availabilityBadgeText: r,
28
+ title: C,
29
+ description: v,
30
+ learnMoreLinkText: o,
31
+ learnMoreHref: l,
32
+ onLearnMoreClick: s,
33
+ featureListDesc: m,
34
+ featuresList: I = [],
35
+ featureItemIcon: L,
36
+ mediaContent: S,
37
+ laterButtonText: _,
38
+ purchaseButtonText: A,
39
+ onLaterClick: F,
40
+ onPurchaseClick: P,
41
+ className: $ = "",
42
+ modalContentClassName: D = "",
43
+ automationId: i = "",
44
+ id: z
45
+ }) => {
46
+ const p = J(z, "paywall-title"), B = () => {
47
+ F?.(), n();
48
+ }, d = K[t], O = b ?? d.width, w = g ?? d.height, y = x === "with-points" && t === "lg", h = I.map((e) => typeof e == "string" ? {
49
+ text: e
50
+ } : {
51
+ text: e.text,
52
+ icon: e.icon,
53
+ href: e.href,
54
+ external: e.external,
55
+ onLinkClick: e.onLinkClick
56
+ }), R = y && h.length > 0, W = L ?? /* @__PURE__ */ a.createElement(q, {
57
+ name: "info",
58
+ rotation: "180"
59
+ }), Y = /* @__PURE__ */ a.createElement("section", {
60
+ className: `paywall paywall-ctn paywall-ctn--${t} ${$}`,
61
+ "data-automation-id": i
62
+ }, /* @__PURE__ */ a.createElement("div", {
63
+ className: "paywall-card"
64
+ }, /* @__PURE__ */ a.createElement("div", {
65
+ className: "paywall-card-content"
66
+ }, r && /* @__PURE__ */ a.createElement("span", {
67
+ className: "paywall-card-availability"
68
+ }, /* @__PURE__ */ a.createElement("span", {
69
+ className: "paywall-card-availability-label"
70
+ }, k), /* @__PURE__ */ a.createElement(j, {
71
+ label: r,
72
+ className: "paywall-card-badge",
73
+ bgColor: "var(--color-yellow-100)",
74
+ textColor: "var(--color-yellow-700)"
75
+ })), /* @__PURE__ */ a.createElement("h3", {
76
+ id: p,
77
+ className: "paywall-card-title"
78
+ }, C), /* @__PURE__ */ a.createElement("p", {
79
+ className: "paywall-card-description"
80
+ }, v, o && (l || s) && /* @__PURE__ */ a.createElement(N, {
81
+ href: l ?? "#",
82
+ label: o,
83
+ external: !!l,
84
+ className: "paywall-card-learn-more",
85
+ onClick: (e) => {
86
+ l || e.preventDefault(), s?.(e);
87
+ }
88
+ })), y && m && /* @__PURE__ */ a.createElement("p", {
89
+ className: "paywall-card-features-intro"
90
+ }, m), R && /* @__PURE__ */ a.createElement("ul", {
91
+ className: "paywall-card-features-list"
92
+ }, h.map((e) => /* @__PURE__ */ a.createElement("li", {
93
+ key: e.text,
94
+ className: "paywall-card-feature-item"
95
+ }, /* @__PURE__ */ a.createElement("span", {
96
+ className: "paywall-card-feature-icon",
97
+ "aria-hidden": !0
98
+ }, e.icon ?? W), /* @__PURE__ */ a.createElement("span", null, e.href || e.onLinkClick ? /* @__PURE__ */ a.createElement(N, {
99
+ href: e.href ?? "#",
100
+ label: e.text,
101
+ external: e.external,
102
+ onClick: (E) => {
103
+ e.href || E.preventDefault(), e.onLinkClick?.(E);
104
+ }
105
+ }) : e.text)))), /* @__PURE__ */ a.createElement("div", {
106
+ className: "paywall-card-actions"
107
+ }, /* @__PURE__ */ a.createElement(f, {
108
+ type: "ghost",
109
+ size: "md",
110
+ label: _,
111
+ onClick: B,
112
+ className: "paywall-card-btn-later"
113
+ }), /* @__PURE__ */ a.createElement(f, {
114
+ type: "primary",
115
+ size: "md",
116
+ label: A,
117
+ onClick: P,
118
+ className: "paywall-card-btn-purchase"
119
+ }))), /* @__PURE__ */ a.createElement("div", {
120
+ className: "paywall-card-media"
121
+ }, S))), Z = /* @__PURE__ */ a.createElement("div", {
122
+ role: "dialog",
123
+ "aria-modal": "true",
124
+ "aria-labelledby": p,
125
+ className: `paywall-modal-content ${D}`,
126
+ style: {
127
+ height: w,
128
+ minHeight: w
129
+ }
130
+ }, Y);
131
+ return /* @__PURE__ */ a.createElement(a.Fragment, null, c && /* @__PURE__ */ a.createElement("span", {
132
+ className: "paywall-trigger"
133
+ }, c), /* @__PURE__ */ a.createElement(G, {
134
+ isOpen: u,
135
+ onClose: n,
136
+ onModalClick: () => {
137
+ },
138
+ renderModalContent: () => Z,
139
+ width: O,
140
+ contentClassName: "paywall-modal-content-wrapper",
141
+ automationId: i
142
+ }));
143
+ };
2
144
  export {
3
- e as default
145
+ ea as Paywall,
146
+ ea as default
4
147
  };
5
148
  //# sourceMappingURL=index65.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index65.js","sources":["../src/assets/icons/card.svg?url"],"sourcesContent":["export default \"data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M1.875%209.66284H22.125M15.8942%2015.1148H18.2307M20.5673%204.21094H3.43274C2.57245%204.21094%201.87505%204.94505%201.87505%205.85061V18.1482C1.87505%2019.0537%202.57245%2019.7878%203.43274%2019.7878H20.5673C21.4276%2019.7878%2022.125%2019.0537%2022.125%2018.1482V5.85061C22.125%204.94505%2021.4276%204.21094%2020.5673%204.21094Z'%20stroke='%23415575'%20stroke-width='1.6'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3c/svg%3e\""],"names":["__vite_glob_0_8"],"mappings":"AAAA,MAAeA,IAAA;"}
1
+ {"version":3,"file":"index65.js","sources":["../src/components/Paywall/index.tsx"],"sourcesContent":["import React, { FC, ReactNode } from 'react';\nimport { Button } from 'src/components/Button';\nimport { Badge } from 'src/components/Badge';\nimport { Icon } from 'src/components/Icon';\nimport { Link } from 'src/components/Link';\nimport { CustomModal } from 'src/components/CustomModal';\nimport { useStableId } from 'src/utils/useStableId';\nimport './style.scss';\n\n/** Variant: with bullet points list, or description only */\nexport type PaywallVariant = 'with-points' | 'description-only';\n\n/** Size: small (656×384) or large (768×500) – sets modal dimensions and media panel proportion */\nexport type PaywallSize = 'sm' | 'lg';\n\n/** Feature list item: plain string (uses default/list icon) or object with text, optional per-item icon, and optional link/action */\nexport type PaywallFeatureItem =\n | string\n | {\n text: string;\n icon?: ReactNode;\n /** If provided, the feature text becomes a hyperlink navigating to this URL */\n href?: string;\n /** If true, opens the href in a new tab (only applicable when href is set) */\n external?: boolean;\n /** Click handler — use with href for analytics, or alone for SPA actions */\n onLinkClick?: (e: React.MouseEvent<HTMLAnchorElement>) => void;\n };\n\nconst PAYWALL_SIZE_DIMENSIONS: Record<PaywallSize, { width: string; height: string }> = {\n lg: { width: '768px', height: '500px' },\n sm: { width: '656px', height: '384px' },\n};\n\nexport interface PaywallProps {\n isOpen: boolean;\n onClose: () => void;\n trigger?: ReactNode;\n modalWidth?: string;\n modalHeight?: string;\n variant: PaywallVariant;\n size?: PaywallSize;\n availabilityLabel?: string;\n availabilityBadgeText?: string;\n title: string;\n description: string;\n learnMoreLinkText?: string;\n learnMoreHref?: string;\n onLearnMoreClick?: (e: React.MouseEvent<HTMLAnchorElement>) => void;\n featureListDesc?: string;\n featuresList?: PaywallFeatureItem[];\n featureItemIcon?: ReactNode;\n mediaContent?: ReactNode;\n laterButtonText: string;\n purchaseButtonText: string;\n onLaterClick?: () => void;\n onPurchaseClick?: () => void;\n className?: string;\n modalContentClassName?: string;\n automationId?: string;\n id?: string;\n}\n\n/** Paywall – always shown in a modal. Pass isOpen/onClose and optionally a trigger. */\nexport const Paywall: FC<PaywallProps> = ({\n isOpen,\n onClose,\n trigger,\n modalWidth,\n modalHeight,\n variant,\n size = 'lg',\n availabilityLabel = 'Available on ',\n availabilityBadgeText,\n title,\n description,\n learnMoreLinkText,\n learnMoreHref,\n onLearnMoreClick,\n featureListDesc,\n featuresList = [],\n featureItemIcon,\n mediaContent,\n laterButtonText,\n purchaseButtonText,\n onLaterClick,\n onPurchaseClick,\n className = '',\n modalContentClassName = '',\n automationId = '',\n id: providedId,\n}) => {\n const titleId = useStableId(providedId, 'paywall-title');\n\n const handleLaterClick = () => {\n onLaterClick?.();\n onClose();\n };\n\n const dimensions = PAYWALL_SIZE_DIMENSIONS[size];\n const width = modalWidth ?? dimensions.width;\n const height = modalHeight ?? dimensions.height;\n\n const withPoints = variant === 'with-points' && size === 'lg';\n const normalizedFeatures = featuresList.map((item): { text: string; icon?: ReactNode; href?: string; external?: boolean; onLinkClick?: (e: React.MouseEvent<HTMLAnchorElement>) => void } =>\n typeof item === 'string'\n ? { text: item }\n : { text: item.text, icon: item.icon, href: item.href, external: item.external, onLinkClick: item.onLinkClick }\n );\n const showFeatures = withPoints && normalizedFeatures.length > 0;\n const defaultIcon = featureItemIcon ?? <Icon name=\"info\" rotation='180'/>;\n\n const content = (\n <section\n className={`paywall paywall-ctn paywall-ctn--${size} ${className}`}\n data-automation-id={automationId}\n >\n <div className=\"paywall-card\">\n <div className=\"paywall-card-content\">\n {availabilityBadgeText && (\n <span className=\"paywall-card-availability\">\n <span className=\"paywall-card-availability-label\">{availabilityLabel}</span>\n <Badge\n label={availabilityBadgeText}\n className=\"paywall-card-badge\"\n bgColor=\"var(--color-yellow-100)\"\n textColor=\"var(--color-yellow-700)\"\n />\n </span>\n )}\n <h3 id={titleId} className=\"paywall-card-title\">{title}</h3>\n <p className=\"paywall-card-description\">\n {description}\n {learnMoreLinkText && (learnMoreHref || onLearnMoreClick) && (\n <Link\n href={learnMoreHref ?? '#'}\n label={learnMoreLinkText}\n external={!!learnMoreHref}\n className=\"paywall-card-learn-more\"\n onClick={(e) => { if (!learnMoreHref) { e.preventDefault(); } onLearnMoreClick?.(e); }}\n />\n )}\n </p>\n {withPoints && featureListDesc && (\n <p className=\"paywall-card-features-intro\">{featureListDesc}</p>\n )}\n {showFeatures && (\n <ul className=\"paywall-card-features-list\">\n {normalizedFeatures.map((item) => (\n <li key={item.text} className=\"paywall-card-feature-item\">\n <span className=\"paywall-card-feature-icon\" aria-hidden>\n {item.icon ?? defaultIcon}\n </span>\n <span>\n {item.href || item.onLinkClick ? (\n <Link\n href={item.href ?? '#'}\n label={item.text}\n external={item.external}\n onClick={(e) => { if (!item.href) { e.preventDefault(); } item.onLinkClick?.(e); }}\n />\n ) : (\n item.text\n )}\n </span>\n </li>\n ))}\n </ul>\n )}\n <div className=\"paywall-card-actions\">\n <Button\n type=\"ghost\"\n size=\"md\"\n label={laterButtonText}\n onClick={handleLaterClick}\n className=\"paywall-card-btn-later\"\n />\n <Button\n type=\"primary\"\n size=\"md\"\n label={purchaseButtonText}\n onClick={onPurchaseClick}\n className=\"paywall-card-btn-purchase\"\n />\n </div>\n </div>\n <div className=\"paywall-card-media\">\n {mediaContent}\n </div>\n </div>\n </section>\n );\n\n const modalContent = (\n <div\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={titleId}\n className={`paywall-modal-content ${modalContentClassName}`}\n style={{ height, minHeight: height }}\n >\n {content}\n </div>\n );\n\n return (\n <>\n {trigger && <span className=\"paywall-trigger\">{trigger}</span>}\n <CustomModal\n isOpen={isOpen}\n onClose={onClose}\n onModalClick={() => {}}\n renderModalContent={() => modalContent}\n width={width}\n contentClassName=\"paywall-modal-content-wrapper\"\n automationId={automationId}\n />\n </>\n );\n};\n\nexport default Paywall;\n"],"names":["React__default","Button","Badge","Icon","Link","CustomModal","useStableId","PAYWALL_SIZE_DIMENSIONS","lg","width","height","sm","Paywall","isOpen","onClose","trigger","modalWidth","modalHeight","variant","size","availabilityLabel","availabilityBadgeText","title","description","learnMoreLinkText","learnMoreHref","onLearnMoreClick","featureListDesc","featuresList","featureItemIcon","mediaContent","laterButtonText","purchaseButtonText","onLaterClick","onPurchaseClick","className","modalContentClassName","automationId","id","providedId","titleId","handleLaterClick","dimensions","withPoints","normalizedFeatures","map","item","text","icon","href","external","onLinkClick","showFeatures","length","defaultIcon","React","createElement","name","rotation","content","label","bgColor","textColor","onClick","e","preventDefault","key","type","modalContent","role","style","minHeight","Fragment","onModalClick","renderModalContent","contentClassName"],"mappings":"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"}
package/dist/index66.js CHANGED
@@ -1,5 +1,15 @@
1
- const e = "data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M0%204C0%201.79086%201.79086%200%204%200H12C14.2091%200%2016%201.79086%2016%204V12C16%2014.2091%2014.2091%2016%2012%2016H4C1.79086%2016%200%2014.2091%200%2012V4Z'%20fill='%23E4E9F1'/%3e%3cpath%20d='M12%208H4'%20stroke='%2392A1B9'%20stroke-width='1.2'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3c/svg%3e";
1
+ function i({
2
+ titleId: r,
3
+ descriptionId: t,
4
+ isFocusable: a = !1
5
+ }) {
6
+ const e = {
7
+ role: "region",
8
+ "aria-labelledby": r
9
+ };
10
+ return t && (e["aria-describedby"] = t), a && (e.tabIndex = -1), e;
11
+ }
2
12
  export {
3
- e as default
13
+ i as getRegionAttributes
4
14
  };
5
15
  //# sourceMappingURL=index66.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index66.js","sources":["../src/assets/icons/checkbox-disabled-minus.svg?url"],"sourcesContent":["export default \"data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M0%204C0%201.79086%201.79086%200%204%200H12C14.2091%200%2016%201.79086%2016%204V12C16%2014.2091%2014.2091%2016%2012%2016H4C1.79086%2016%200%2014.2091%200%2012V4Z'%20fill='%23E4E9F1'/%3e%3cpath%20d='M12%208H4'%20stroke='%2392A1B9'%20stroke-width='1.2'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3c/svg%3e\""],"names":["__vite_glob_0_9"],"mappings":"AAAA,MAAeA,IAAA;"}
1
+ {"version":3,"file":"index66.js","sources":["../src/utils/a11y/regionAttributes.ts"],"sourcesContent":["/**\n * Returns ARIA attributes for a region container element.\n * Used for semantic containers that need role=\"region\" with proper labeling.\n * \n * @param options - Configuration options\n * @param options.titleId - Required. ID of the heading element that labels this region\n * @param options.descriptionId - Optional. ID of the description element\n * @param options.isFocusable - Optional. Whether to make the region focusable (adds tabIndex={-1})\n * @returns Object with region ARIA attributes\n */\nexport function getRegionAttributes({\n titleId,\n descriptionId,\n isFocusable = false\n}: {\n titleId: string;\n descriptionId?: string;\n isFocusable?: boolean;\n}): {\n role: 'region';\n 'aria-labelledby': string;\n 'aria-describedby'?: string;\n tabIndex?: number;\n} {\n const attributes: {\n role: 'region';\n 'aria-labelledby': string;\n 'aria-describedby'?: string;\n tabIndex?: number;\n } = {\n role: 'region',\n 'aria-labelledby': titleId\n };\n\n if (descriptionId) {\n attributes['aria-describedby'] = descriptionId;\n }\n\n if (isFocusable) {\n attributes.tabIndex = -1;\n }\n\n return attributes;\n}\n"],"names":["getRegionAttributes","titleId","descriptionId","isFocusable","attributes","role","tabIndex"],"mappings":"AAUO,SAASA,EAAoB;AAAA,EAClCC,SAAAA;AAAAA,EACAC,eAAAA;AAAAA,EACAC,aAAAA,IAAc;AAKhB,GAKE;AACA,QAAMC,IAKF;AAAA,IACFC,MAAM;AAAA,IACN,mBAAmBJ;AAAAA,EAAAA;AAGrB,SAAIC,MACFE,EAAW,kBAAkB,IAAIF,IAG/BC,MACFC,EAAWE,WAAW,KAGjBF;AACT;"}
package/dist/index67.js CHANGED
@@ -1,5 +1,49 @@
1
- const e = "data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M0%204C0%201.79086%201.79086%200%204%200H12C14.2091%200%2016%201.79086%2016%204V12C16%2014.2091%2014.2091%2016%2012%2016H4C1.79086%2016%200%2014.2091%200%2012V4Z'%20fill='%23E4E9F1'/%3e%3cpath%20d='M11.8082%205.5L6.89749%2010.5L4.66534%208.22727'%20stroke='%2392A1B9'%20stroke-width='1.2'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3c/svg%3e";
1
+ import * as t from "react";
2
+ import { isVirtualClick as w } from "./index78.js";
3
+ function R({
4
+ disabled: p = !1,
5
+ loading: i = !1,
6
+ onClick: u,
7
+ onKeyboardActivate: s,
8
+ isNative: l = !0,
9
+ role: d = "button",
10
+ tabIndex: D = 0,
11
+ stopPropagation: c = !1,
12
+ preventDefault: f = !1,
13
+ pressed: P
14
+ } = {}) {
15
+ const e = p || i, n = t.useRef(!1), o = t.useCallback(() => {
16
+ n.current = !0;
17
+ }, []), m = t.useCallback((r) => {
18
+ if (e) return;
19
+ c && r.stopPropagation(), f && r.preventDefault();
20
+ const y = w(r.nativeEvent), C = n.current;
21
+ n.current = !1;
22
+ const b = y ? "virtual" : C ? "pointer" : "keyboard";
23
+ if ((b === "keyboard" || b === "virtual") && s) {
24
+ s(r);
25
+ return;
26
+ }
27
+ u?.(r);
28
+ }, [e, u, s, c, f]), v = t.useCallback((r) => {
29
+ e || (r.key === "Enter" || r.key === " ") && (r.preventDefault(), r.currentTarget.click());
30
+ }, [e]), k = {
31
+ onPointerDown: o,
32
+ onMouseDown: o,
33
+ onTouchStart: o,
34
+ onClick: m,
35
+ "aria-disabled": e ? "true" : void 0,
36
+ "aria-busy": i ? "true" : void 0,
37
+ "aria-pressed": P
38
+ };
39
+ l || (k.onKeyDown = v);
40
+ const a = {
41
+ pressProps: k,
42
+ isDisabled: e
43
+ };
44
+ return l || (a.role = d, a.tabIndex = e ? -1 : D), a;
45
+ }
2
46
  export {
3
- e as default
47
+ R as useAccessiblePress
4
48
  };
5
49
  //# sourceMappingURL=index67.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index67.js","sources":["../src/assets/icons/checkbox-disabled-tick.svg?url"],"sourcesContent":["export default \"data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M0%204C0%201.79086%201.79086%200%204%200H12C14.2091%200%2016%201.79086%2016%204V12C16%2014.2091%2014.2091%2016%2012%2016H4C1.79086%2016%200%2014.2091%200%2012V4Z'%20fill='%23E4E9F1'/%3e%3cpath%20d='M11.8082%205.5L6.89749%2010.5L4.66534%208.22727'%20stroke='%2392A1B9'%20stroke-width='1.2'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3c/svg%3e\""],"names":["__vite_glob_0_10"],"mappings":"AAAA,MAAeA,IAAA;"}
1
+ {"version":3,"file":"index67.js","sources":["../src/utils/a11y/useAccessiblePress.ts"],"sourcesContent":["import * as React from 'react';\nimport { isVirtualClick } from '../virtualClick';\n\n/**\n * Hook for accessible press interactions (pointer vs keyboard vs virtual click).\n *\n * Handles:\n * - Pointer intent tracking (mouse/touch)\n * - Virtual click detection (NVDA browse mode, etc.)\n * - Routing to appropriate handler (onClick vs onKeyboardActivate)\n * - For non-native elements: Enter/Space → activation\n * - Optional stopPropagation and preventDefault\n *\n * @example\n * // Native button (isNative=true, the default)\n * const { pressProps } = useAccessiblePress({ onClick, disabled });\n * <button {...pressProps}>Click me</button>\n *\n * @example\n * // Non-native element (div acting as button)\n * const { pressProps, role, tabIndex } = useAccessiblePress({ onClick, isNative: false });\n * <div role={role} tabIndex={tabIndex} {...pressProps}>Click me</div>\n *\n * @example\n * // Element nested inside clickable parent (prevent event bubbling)\n * const { pressProps, tabIndex } = useAccessiblePress({ \n * onClick, \n * isNative: false, \n * stopPropagation: true \n * });\n * <div role=\"button\" tabIndex={tabIndex} {...pressProps}>Click me</div>\n */\n\ntype InputKind = 'pointer' | 'keyboard' | 'virtual';\n\nexport type UseAccessiblePressOptions = {\n /**\n * Whether the element is disabled\n */\n disabled?: boolean;\n\n /**\n * Whether the element is in a loading state (will also disable)\n */\n loading?: boolean;\n\n /**\n * Handler for pointer/touch activations (or all activations if onKeyboardActivate is not provided)\n */\n onClick?: (e: React.MouseEvent<HTMLElement>) => void;\n\n /**\n * Handler for keyboard + assistive tech virtual activation.\n * If omitted, onClick is used for all activations.\n */\n onKeyboardActivate?: (e: React.MouseEvent<HTMLElement>) => void;\n\n /**\n * If true, this is a native <button> (or other native pressable) and we MUST NOT add Enter/Space handling.\n * Default: true\n */\n isNative?: boolean;\n\n /**\n * Only for non-native elements (div/span). Defaults to 'button'.\n */\n role?: string;\n\n /**\n * Only for non-native elements. Defaults to 0.\n */\n tabIndex?: number;\n\n /**\n * If true, calls e.stopPropagation() before invoking onClick handler.\n * Useful when element is nested inside another clickable element.\n * Default: false\n */\n stopPropagation?: boolean;\n\n /**\n * If true, calls e.preventDefault() before invoking onClick handler.\n * Note: For non-native elements, preventDefault is already called on Space/Enter keys.\n * Default: false\n */\n preventDefault?: boolean;\n\n /**\n * Toggle/pressed state. When true or false, sets aria-pressed on the element (e.g. selected color swatch).\n * Omit for non-toggle buttons.\n */\n pressed?: boolean;\n};\n\nexport type UseAccessiblePressReturn = {\n /**\n * Props to spread onto the element. Includes event handlers and ARIA attributes.\n * Does NOT include role/tabIndex — apply those separately.\n */\n pressProps: React.HTMLAttributes<HTMLElement> & {\n 'aria-disabled'?: 'true';\n 'aria-busy'?: 'true';\n 'aria-pressed'?: boolean;\n };\n\n /**\n * Combined disabled state (disabled || loading)\n */\n isDisabled: boolean;\n\n /**\n * Role for non-native elements (e.g., 'button', 'menuitem').\n * Only returned when isNative=false.\n */\n role?: string;\n\n /**\n * TabIndex for non-native elements.\n * Returns -1 when disabled, otherwise the provided tabIndex (default 0).\n * Only returned when isNative=false.\n */\n tabIndex?: number;\n};\n\nexport function useAccessiblePress({\n disabled = false,\n loading = false,\n onClick,\n onKeyboardActivate,\n isNative = true,\n role = 'button',\n tabIndex = 0,\n stopPropagation = false,\n preventDefault = false,\n pressed\n}: UseAccessiblePressOptions = {}): UseAccessiblePressReturn {\n const isDisabled = disabled || loading;\n const lastWasPointerRef = React.useRef(false);\n\n const markPointer = React.useCallback(() => {\n lastWasPointerRef.current = true;\n }, []);\n\n const handleClick = React.useCallback(\n (e: React.MouseEvent<HTMLElement>) => {\n if (isDisabled) return;\n\n // Handle event control flags\n if (stopPropagation) e.stopPropagation();\n if (preventDefault) e.preventDefault();\n\n const virtual = isVirtualClick(e.nativeEvent as any);\n const isPointer = lastWasPointerRef.current;\n lastWasPointerRef.current = false;\n\n const input: InputKind = virtual ? 'virtual' : isPointer ? 'pointer' : 'keyboard';\n\n // If we have a keyboard handler, route keyboard + virtual clicks there.\n if ((input === 'keyboard' || input === 'virtual') && onKeyboardActivate) {\n onKeyboardActivate(e);\n return;\n }\n\n onClick?.(e);\n },\n [isDisabled, onClick, onKeyboardActivate, stopPropagation, preventDefault]\n );\n\n // Only used for non-native elements: Enter/Space should trigger click(), reusing the same click routing.\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent<HTMLElement>) => {\n if (isDisabled) return;\n\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n // Trigger native click event so all routing goes through handleClick\n (e.currentTarget as HTMLElement).click();\n }\n },\n [isDisabled]\n );\n\n const pressProps: UseAccessiblePressReturn['pressProps'] = {\n onPointerDown: markPointer,\n onMouseDown: markPointer,\n onTouchStart: markPointer,\n onClick: handleClick,\n 'aria-disabled': isDisabled ? 'true' : undefined,\n 'aria-busy': loading ? 'true' : undefined,\n 'aria-pressed': pressed\n };\n\n // For non-native elements, add Enter/Space handling\n if (!isNative) {\n pressProps.onKeyDown = handleKeyDown;\n }\n\n // Return role/tabIndex separately (only for non-native elements)\n const result: UseAccessiblePressReturn = { pressProps, isDisabled };\n\n if (!isNative) {\n result.role = role;\n result.tabIndex = isDisabled ? -1 : tabIndex;\n }\n\n return result;\n}\n\n"],"names":["React","isVirtualClick","useAccessiblePress","disabled","loading","onClick","onKeyboardActivate","isNative","role","tabIndex","stopPropagation","preventDefault","pressed","isDisabled","lastWasPointerRef","useRef","markPointer","useCallback","current","handleClick","e","virtual","nativeEvent","isPointer","input","handleKeyDown","key","currentTarget","click","pressProps","onPointerDown","onMouseDown","onTouchStart","undefined","onKeyDown","result"],"mappings":"AA4HO,YAAAA,OAAA;AAAA,SAAA,kBAAAC,SAAA;AAAA,SAASC,EAAmB;AAAA,EACjCC,UAAAA,IAAW;AAAA,EACXC,SAAAA,IAAU;AAAA,EACVC,SAAAA;AAAAA,EACAC,oBAAAA;AAAAA,EACAC,UAAAA,IAAW;AAAA,EACXC,MAAAA,IAAO;AAAA,EACPC,UAAAA,IAAW;AAAA,EACXC,iBAAAA,IAAkB;AAAA,EAClBC,gBAAAA,IAAiB;AAAA,EACjBC,SAAAA;AACyB,IAAI,IAA8B;AAC3D,QAAMC,IAAaV,KAAYC,GACzBU,IAAoBd,EAAMe,OAAO,EAAK,GAEtCC,IAAchB,EAAMiB,YAAY,MAAM;AAC1CH,IAAAA,EAAkBI,UAAU;AAAA,EAC9B,GAAG,CAAA,CAAE,GAECC,IAAcnB,EAAMiB,YACxB,CAACG,MAAqC;AACpC,QAAIP,EAAY;AAGhB,IAAIH,OAAmBA,gBAAAA,GACnBC,OAAkBA,eAAAA;AAEtB,UAAMU,IAAUpB,EAAemB,EAAEE,WAAkB,GAC7CC,IAAYT,EAAkBI;AACpCJ,IAAAA,EAAkBI,UAAU;AAE5B,UAAMM,IAAmBH,IAAU,YAAYE,IAAY,YAAY;AAGvE,SAAKC,MAAU,cAAcA,MAAU,cAAclB,GAAoB;AACvEA,MAAAA,EAAmBc,CAAC;AACpB;AAAA,IACF;AAEAf,IAAAA,IAAUe,CAAC;AAAA,EACb,GACA,CAACP,GAAYR,GAASC,GAAoBI,GAAiBC,CAAc,CAC3E,GAGMc,IAAgBzB,EAAMiB,YAC1B,CAACG,MAAwC;AACvC,IAAIP,MAEAO,EAAEM,QAAQ,WAAWN,EAAEM,QAAQ,SACjCN,EAAET,eAAAA,GAEDS,EAAEO,cAA8BC,MAAAA;AAAAA,EAErC,GACA,CAACf,CAAU,CACb,GAEMgB,IAAqD;AAAA,IACzDC,eAAed;AAAAA,IACfe,aAAaf;AAAAA,IACbgB,cAAchB;AAAAA,IACdX,SAASc;AAAAA,IACT,iBAAiBN,IAAa,SAASoB;AAAAA,IACvC,aAAa7B,IAAU,SAAS6B;AAAAA,IAChC,gBAAgBrB;AAAAA,EAAAA;AAIlB,EAAKL,MACHsB,EAAWK,YAAYT;AAIzB,QAAMU,IAAmC;AAAA,IAAEN,YAAAA;AAAAA,IAAYhB,YAAAA;AAAAA,EAAAA;AAEvD,SAAKN,MACH4B,EAAO3B,OAAOA,GACd2B,EAAO1B,WAAWI,IAAa,KAAKJ,IAG/B0B;AACT;"}
package/dist/index68.js CHANGED
@@ -1,5 +1,106 @@
1
- const e = "data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M0%204C0%201.79086%201.79086%200%204%200H12C14.2091%200%2016%201.79086%2016%204V12C16%2014.2091%2014.2091%2016%2012%2016H4C1.79086%2016%200%2014.2091%200%2012V4Z'%20fill='%23E4E9F1'/%3e%3c/svg%3e";
1
+ import { useRef as i, useState as R, useCallback as w, useEffect as A } from "react";
2
+ import { useComboboxNavigation as M } from "./index79.js";
3
+ import { useDismissOnFocusOut as U } from "./index80.js";
4
+ function _({
5
+ items: d,
6
+ isOpen: t,
7
+ onOpenChange: l,
8
+ onSelect: b,
9
+ listboxId: n,
10
+ loop: x = !0,
11
+ disabled: y = !1,
12
+ optionSelector: D = '[role="option"]',
13
+ hasItems: p,
14
+ keepHighlightOnSelect: m = !1,
15
+ closeOnTab: C = !0
16
+ }) {
17
+ const g = i(null), s = i(!1), c = i(!1), a = i(!1), [h, r] = R(!1), v = p !== void 0 ? p : d.length > 0, f = w(() => {
18
+ l(!1);
19
+ }, [l]);
20
+ A(() => {
21
+ t || (s.current = !1, a.current = !1);
22
+ }, [t]);
23
+ const o = M({
24
+ items: d,
25
+ isOpen: t,
26
+ onSelect: b,
27
+ onClose: f,
28
+ onOpen: () => l(!0),
29
+ loop: x,
30
+ disabled: y,
31
+ listboxRef: g,
32
+ optionSelector: D,
33
+ keepHighlightOnSelect: m,
34
+ closeOnTab: C
35
+ }), u = U({
36
+ onFocusOut: f,
37
+ onEscape: f,
38
+ disabled: !t
39
+ }), I = {
40
+ ...u,
41
+ onPointerMove: () => {
42
+ h && r(!1);
43
+ },
44
+ onPointerDown: () => {
45
+ a.current = !0, r(!1);
46
+ },
47
+ onPointerUp: () => {
48
+ },
49
+ onFocusCapture: (e) => {
50
+ u.onFocusCapture(e), a.current ? r(!1) : r(!0);
51
+ },
52
+ onKeyDownCapture: (e) => {
53
+ u.onKeyDownCapture(e), (e.key === "Tab" || e.key === "ArrowDown" || e.key === "ArrowUp") && (a.current = !1), (e.key === "ArrowDown" || e.key === "ArrowUp") && r(!0);
54
+ },
55
+ onBlurCapture: (e) => {
56
+ if (r(!1), !s.current) {
57
+ if (c.current) {
58
+ c.current = !1;
59
+ return;
60
+ }
61
+ u.onBlurCapture(e);
62
+ }
63
+ }
64
+ }, P = {
65
+ role: "combobox",
66
+ "aria-expanded": t && v,
67
+ "aria-haspopup": "listbox",
68
+ "aria-controls": t ? n : void 0,
69
+ "aria-autocomplete": "list",
70
+ "aria-activedescendant": o.highlightedIndex >= 0 ? o.getOptionId(n, o.highlightedIndex) : void 0,
71
+ onKeyDown: (e) => {
72
+ e.key === "Tab" && (c.current = !0), o.handleKeyDown(e);
73
+ }
74
+ }, k = {
75
+ id: n,
76
+ role: "listbox",
77
+ ref: g,
78
+ onMouseDownCapture: (e) => {
79
+ s.current = !0;
80
+ },
81
+ onMouseUpCapture: (e) => {
82
+ s.current = !1;
83
+ },
84
+ onMouseLeave: (e) => {
85
+ s.current = !1;
86
+ }
87
+ }, F = w((e, K = !1) => ({
88
+ id: o.getOptionId(n, e),
89
+ role: "option",
90
+ "aria-selected": K
91
+ }), [o.getOptionId, n]);
92
+ return {
93
+ containerProps: I,
94
+ inputProps: P,
95
+ listboxProps: k,
96
+ getOptionProps: F,
97
+ highlightedIndex: o.highlightedIndex,
98
+ setHighlightedIndex: o.setHighlightedIndex,
99
+ getOptionId: o.getOptionId,
100
+ isKeyboardFocused: h
101
+ };
102
+ }
2
103
  export {
3
- e as default
104
+ _ as useCombobox
4
105
  };
5
106
  //# sourceMappingURL=index68.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index68.js","sources":["../src/assets/icons/checkbox-disabled.svg?url"],"sourcesContent":["export default \"data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M0%204C0%201.79086%201.79086%200%204%200H12C14.2091%200%2016%201.79086%2016%204V12C16%2014.2091%2014.2091%2016%2012%2016H4C1.79086%2016%200%2014.2091%200%2012V4Z'%20fill='%23E4E9F1'/%3e%3c/svg%3e\""],"names":["__vite_glob_0_11"],"mappings":"AAAA,MAAeA,IAAA;"}
1
+ {"version":3,"file":"index68.js","sources":["../src/utils/a11y/useCombobox.ts"],"sourcesContent":["import { useRef, useCallback, useEffect, useState } from 'react';\nimport type { RefObject } from 'react';\nimport { useComboboxNavigation } from './useComboboxNavigation';\nimport { useDismissOnFocusOut } from './useDismissOnFocusOut';\nimport type { UseDismissOnFocusOutReturn } from './useDismissOnFocusOut';\n\nexport interface UseComboboxOptions<T = any> {\n /**\n * Array of items to navigate through\n */\n items: T[];\n \n /**\n * Whether the dropdown is currently open\n */\n isOpen: boolean;\n \n /**\n * Callback to change the open state\n */\n onOpenChange: (open: boolean) => void;\n \n /**\n * Callback when an item is selected (Enter key)\n */\n onSelect: (item: T, index: number) => void;\n \n /**\n * Stable ID for the listbox element\n */\n listboxId: string;\n \n /**\n * Whether to wrap around at the ends of the list.\n * Default: true\n */\n loop?: boolean;\n \n /**\n * Whether keyboard navigation is disabled\n * (e.g., for custom rendered content)\n */\n disabled?: boolean;\n \n /**\n * CSS selector for option elements (default: '[role=\"option\"]')\n */\n optionSelector?: string;\n \n /**\n * Whether the listbox has any items to show\n * Used for aria-expanded logic\n * Default: items.length > 0\n */\n hasItems?: boolean;\n\n /**\n * Whether to keep the highlighted index after selecting an item.\n * Useful for multi-select where the dropdown stays open after selection.\n * Default: false\n */\n keepHighlightOnSelect?: boolean;\n\n /**\n * Whether Tab should close the dropdown.\n * Set to false when Tab should move focus to elements within the popup (e.g. CTAs).\n * Default: true\n */\n closeOnTab?: boolean;\n}\n\nexport interface UseComboboxReturn {\n /**\n * Props to spread on the container element (handles dismiss on focus out + keyboard focus tracking)\n */\n containerProps: UseDismissOnFocusOutReturn<HTMLElement> & {\n onPointerMove: () => void;\n onPointerDown: () => void;\n onPointerUp: () => void;\n };\n \n /**\n * Props to spread on the combobox input element\n */\n inputProps: {\n role: 'combobox';\n 'aria-expanded': boolean;\n 'aria-haspopup': 'listbox';\n 'aria-controls': string | undefined;\n 'aria-autocomplete': 'list';\n 'aria-activedescendant': string | undefined;\n onKeyDown: (e: React.KeyboardEvent) => void;\n };\n \n /**\n * Props to spread on the listbox element\n */\n listboxProps: {\n id: string;\n role: 'listbox';\n ref: RefObject<HTMLDivElement | null>;\n onMouseDownCapture: (e: React.MouseEvent) => void;\n onMouseUpCapture: (e: React.MouseEvent) => void;\n onMouseLeave: (e: React.MouseEvent) => void;\n };\n \n /**\n * Generate props for an option element at the given index\n * @param selected - Whether this option is the currently selected/chosen value (not keyboard highlight)\n */\n getOptionProps: (index: number, selected?: boolean) => {\n id: string;\n role: 'option';\n 'aria-selected': boolean;\n };\n \n /**\n * Currently highlighted index (-1 if none)\n */\n highlightedIndex: number;\n \n /**\n * Set the highlighted index manually\n */\n setHighlightedIndex: (index: number | ((prev: number) => number)) => void;\n \n /**\n * Generate stable ID for an option\n */\n getOptionId: (listboxId: string, index: number) => string;\n\n /**\n * Whether the combobox input was focused via keyboard (Tab) rather than pointer.\n * Use to conditionally show focus ring only on keyboard interaction.\n */\n isKeyboardFocused: boolean;\n}\n\n/**\n * Comprehensive hook for implementing WAI-ARIA combobox pattern.\n * \n * Combines:\n * - Keyboard navigation (Arrow Up/Down, Enter, Escape, Tab)\n * - Focus management and dismissal\n * - ARIA attributes for accessibility\n * - Auto-scroll highlighted item into view\n * \n * This hook provides a complete, batteries-included solution for building\n * accessible combobox components (autocomplete, select, search with suggestions, etc.)\n * \n * @example Basic usage\n * ```tsx\n * const MyCombobox = () => {\n * const [isOpen, setIsOpen] = useState(false);\n * const [items, setItems] = useState(['Apple', 'Banana', 'Cherry']);\n * \n * const {\n * containerProps,\n * inputProps,\n * listboxProps,\n * getOptionProps,\n * highlightedIndex\n * } = useCombobox({\n * items,\n * isOpen,\n * onOpenChange: setIsOpen,\n * onSelect: (item) => console.log('Selected:', item),\n * listboxId: 'my-listbox'\n * });\n * \n * return (\n * <div {...containerProps}>\n * <input {...inputProps} />\n * {isOpen && (\n * <div {...listboxProps}>\n * {items.map((item, i) => (\n * <div key={i} {...getOptionProps(i)}>\n * {item}\n * </div>\n * ))}\n * </div>\n * )}\n * </div>\n * );\n * };\n * ```\n * \n * @example With custom ARIA labels and handlers\n * ```tsx\n * const MySearchBox = () => {\n * const [query, setQuery] = useState('');\n * const [suggestions, setSuggestions] = useState([]);\n * const [isOpen, setIsOpen] = useState(false);\n * \n * const { containerProps, inputProps, listboxProps, getOptionProps } = useCombobox({\n * items: suggestions,\n * isOpen,\n * onOpenChange: setIsOpen,\n * onSelect: (suggestion) => {\n * setQuery(suggestion);\n * setIsOpen(false);\n * },\n * listboxId: 'search-suggestions'\n * });\n * \n * return (\n * <div {...containerProps}>\n * <input\n * {...inputProps}\n * value={query}\n * onChange={(e) => setQuery(e.target.value)}\n * aria-label=\"Search\"\n * />\n * {isOpen && suggestions.length > 0 && (\n * <div {...listboxProps} aria-label=\"Search suggestions\">\n * {suggestions.map((suggestion, i) => (\n * <div\n * key={i}\n * {...getOptionProps(i)}\n * onClick={() => {\n * setQuery(suggestion);\n * setIsOpen(false);\n * }}\n * >\n * {suggestion}\n * </div>\n * ))}\n * </div>\n * )}\n * </div>\n * );\n * };\n * ```\n */\nexport function useCombobox<T = any>({\n items,\n isOpen,\n onOpenChange,\n onSelect,\n listboxId,\n loop = true,\n disabled = false,\n optionSelector = '[role=\"option\"]',\n hasItems,\n keepHighlightOnSelect = false,\n closeOnTab = true\n}: UseComboboxOptions<T>): UseComboboxReturn {\n const listboxRef = useRef<HTMLDivElement | null>(null);\n const pointerDownInListboxRef = useRef(false);\n const tabKeyPressedRef = useRef(false);\n const pointerFocusRef = useRef(false);\n const [isKeyboardFocused, setIsKeyboardFocused] = useState(false);\n \n // Determine if we should show as expanded\n const shouldShowExpanded = hasItems !== undefined ? hasItems : items.length > 0;\n \n // Close dropdown callback\n const closeDropdown = useCallback(() => {\n onOpenChange(false);\n }, [onOpenChange]);\n\n // Ensure pointer state doesn't get stuck when listbox unmounts\n useEffect(() => {\n if (!isOpen) {\n pointerDownInListboxRef.current = false;\n pointerFocusRef.current = false;\n }\n }, [isOpen]);\n \n // Keyboard navigation with aria-activedescendant\n const navigation = useComboboxNavigation<T>({\n items,\n isOpen,\n onSelect,\n onClose: closeDropdown,\n onOpen: () => onOpenChange(true),\n loop,\n disabled,\n listboxRef,\n optionSelector,\n keepHighlightOnSelect,\n closeOnTab\n });\n \n // Focus out / Escape dismissal\n const dismissHandlers = useDismissOnFocusOut({\n onFocusOut: closeDropdown,\n onEscape: closeDropdown,\n disabled: !isOpen\n });\n\n const containerProps = {\n ...dismissHandlers,\n onPointerMove: () => {\n if (isKeyboardFocused) {\n setIsKeyboardFocused(false);\n }\n },\n onPointerDown: () => {\n pointerFocusRef.current = true;\n setIsKeyboardFocused(false);\n },\n onPointerUp: () => {\n // Don't reset pointerFocusRef here — timing races with programmatic focus\n // (e.g. focus-on-open via double rAF) cause it to clear before onFocusCapture\n // fires, incorrectly setting isKeyboardFocused=true.\n // Instead, pointerFocusRef is reset only when keyboard navigation starts\n // (Tab/Arrow in onKeyDownCapture), ensuring any programmatic focus after a\n // click is always treated as pointer context.\n },\n onFocusCapture: (e: React.FocusEvent<HTMLElement>) => {\n dismissHandlers.onFocusCapture(e);\n\n if (pointerFocusRef.current) {\n setIsKeyboardFocused(false);\n } else {\n setIsKeyboardFocused(true);\n }\n },\n onKeyDownCapture: (e: React.KeyboardEvent<HTMLElement>) => {\n dismissHandlers.onKeyDownCapture(e);\n\n // Keyboard interaction starts — clear pointer context so subsequent\n // focus events are correctly identified as keyboard-initiated.\n if (e.key === 'Tab' || e.key === 'ArrowDown' || e.key === 'ArrowUp') {\n pointerFocusRef.current = false;\n }\n\n // Arrow keys mean keyboard navigation — show focus outline even if\n // the combobox was opened with mouse (activedescendant doesn't move\n // DOM focus, so onFocusCapture alone can't detect the switch).\n if (e.key === 'ArrowDown' || e.key === 'ArrowUp') {\n setIsKeyboardFocused(true);\n }\n },\n onBlurCapture: (e: React.FocusEvent<HTMLElement>) => {\n setIsKeyboardFocused(false);\n\n // Clicking inside a listbox option can blur the input (relatedTarget is null),\n // which would dismiss before the click handler runs. Prevent that.\n if (pointerDownInListboxRef.current) return;\n\n // Tab key pressed - let Tab handler close dropdown, skip blur detection\n if (tabKeyPressedRef.current) {\n tabKeyPressedRef.current = false;\n return;\n }\n\n dismissHandlers.onBlurCapture(e);\n }\n };\n \n // Build input props\n const inputProps = {\n role: 'combobox' as const,\n 'aria-expanded': isOpen && shouldShowExpanded,\n 'aria-haspopup': 'listbox' as const,\n 'aria-controls': isOpen ? listboxId : undefined,\n 'aria-autocomplete': 'list' as const,\n 'aria-activedescendant': \n navigation.highlightedIndex >= 0 \n ? navigation.getOptionId(listboxId, navigation.highlightedIndex) \n : undefined,\n onKeyDown: (e: React.KeyboardEvent) => {\n // Set flag when Tab is pressed (before blur fires)\n if (e.key === 'Tab') {\n tabKeyPressedRef.current = true;\n }\n navigation.handleKeyDown(e);\n }\n };\n \n // Build listbox props\n const listboxProps = {\n id: listboxId,\n role: 'listbox' as const,\n ref: listboxRef,\n onMouseDownCapture: (_e: React.MouseEvent) => {\n pointerDownInListboxRef.current = true;\n },\n onMouseUpCapture: (_e: React.MouseEvent) => {\n pointerDownInListboxRef.current = false;\n },\n onMouseLeave: (_e: React.MouseEvent) => {\n pointerDownInListboxRef.current = false;\n }\n };\n \n // Option props generator\n const getOptionProps = useCallback(\n (index: number, selected: boolean = false) => ({\n id: navigation.getOptionId(listboxId, index),\n role: 'option' as const,\n 'aria-selected': selected\n }),\n [navigation.getOptionId, listboxId]\n );\n \n return {\n containerProps,\n inputProps,\n listboxProps,\n getOptionProps,\n highlightedIndex: navigation.highlightedIndex,\n setHighlightedIndex: navigation.setHighlightedIndex,\n getOptionId: navigation.getOptionId,\n isKeyboardFocused\n };\n}\n"],"names":["useRef","useState","useCallback","useEffect","useComboboxNavigation","useDismissOnFocusOut","useCombobox","items","isOpen","onOpenChange","onSelect","listboxId","loop","disabled","optionSelector","hasItems","keepHighlightOnSelect","closeOnTab","listboxRef","pointerDownInListboxRef","tabKeyPressedRef","pointerFocusRef","isKeyboardFocused","setIsKeyboardFocused","shouldShowExpanded","undefined","length","closeDropdown","current","navigation","onClose","onOpen","dismissHandlers","onFocusOut","onEscape","containerProps","onPointerMove","onPointerDown","onPointerUp","onFocusCapture","e","onKeyDownCapture","key","onBlurCapture","inputProps","role","highlightedIndex","getOptionId","onKeyDown","handleKeyDown","listboxProps","id","ref","onMouseDownCapture","_e","onMouseUpCapture","onMouseLeave","getOptionProps","index","selected","setHighlightedIndex"],"mappings":"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"}
package/dist/index69.js CHANGED
@@ -1,5 +1,22 @@
1
- const e = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%3e%3cpath%20d='M11.0198%205.66834L6.87692%2010.8469L4.80549%209.29334M1.78467%202.82038V13.1775C1.78467%2013.7496%202.24838%2014.2132%202.82038%2014.2132H13.1775C13.7496%2014.2132%2014.2132%2013.7496%2014.2132%2013.1775V2.82038C14.2132%202.24837%2013.7496%201.78467%2013.1775%201.78467H2.82038C2.24838%201.78467%201.78467%202.24838%201.78467%202.82038Z'%20stroke='black'%20stroke-width='1.2'%20stroke-linecap='round'%20stroke-linejoin='round'%20/%3e%3c/svg%3e";
1
+ import { useRef as u, useEffect as i } from "react";
2
+ function f(n, {
3
+ targetSelector: r = "#main-content h1",
4
+ fallbackId: c = "main-content"
5
+ } = {}) {
6
+ const t = u(!0);
7
+ i(() => {
8
+ if (t.current) {
9
+ t.current = !1;
10
+ return;
11
+ }
12
+ const o = requestAnimationFrame(() => {
13
+ const e = document.querySelector(r) || document.getElementById(c);
14
+ e && (e.hasAttribute("tabindex") || e.setAttribute("tabindex", "-1"), e.focus());
15
+ });
16
+ return () => cancelAnimationFrame(o);
17
+ }, n);
18
+ }
2
19
  export {
3
- e as default
20
+ f as useFocusManagement
4
21
  };
5
22
  //# sourceMappingURL=index69.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index69.js","sources":["../src/assets/icons/checkbox-field.svg?url"],"sourcesContent":["export default \"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%3e%3cpath%20d='M11.0198%205.66834L6.87692%2010.8469L4.80549%209.29334M1.78467%202.82038V13.1775C1.78467%2013.7496%202.24838%2014.2132%202.82038%2014.2132H13.1775C13.7496%2014.2132%2014.2132%2013.7496%2014.2132%2013.1775V2.82038C14.2132%202.24837%2013.7496%201.78467%2013.1775%201.78467H2.82038C2.24838%201.78467%201.78467%202.24838%201.78467%202.82038Z'%20stroke='black'%20stroke-width='1.2'%20stroke-linecap='round'%20stroke-linejoin='round'%20/%3e%3c/svg%3e\""],"names":["__vite_glob_0_12"],"mappings":"AAAA,MAAeA,IAAA;"}
1
+ {"version":3,"file":"index69.js","sources":["../src/utils/a11y/useFocusManagement.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\nimport type { DependencyList } from 'react';\n\nexport interface UseFocusManagementOptions {\n /**\n * CSS selector to query the primary focus target.\n * Default: 'h1'\n */\n targetSelector?: string;\n /**\n * Fallback element id if selector target is not found.\n * Default: 'main-content'\n */\n fallbackId?: string;\n}\n\n/**\n * Generic focus management hook for route/state driven UI transitions.\n * Useful for both route changes and in-page multi-step wizards.\n * \n * Always skips first render and uses animation frame for safe DOM timing.\n */\nexport function useFocusManagement(\n dependencies: DependencyList,\n {\n targetSelector = '#main-content h1',\n fallbackId = 'main-content'\n }: UseFocusManagementOptions = {}\n): void {\n const isFirstRender = useRef(true);\n\n useEffect(() => {\n // Always skip first render\n if (isFirstRender.current) {\n isFirstRender.current = false;\n return;\n }\n\n const focusTarget = () => {\n const el = (document.querySelector(targetSelector) || document.getElementById(fallbackId)) as HTMLElement;\n if (el) {\n if (!el.hasAttribute('tabindex')) el.setAttribute('tabindex', '-1');\n el.focus();\n }\n };\n\n // Always use animation frame for safe DOM timing\n const rafId = requestAnimationFrame(focusTarget);\n return () => cancelAnimationFrame(rafId);\n }, dependencies);\n}\n"],"names":["useFocusManagement","dependencies","targetSelector","fallbackId","isFirstRender","useRef","useEffect","current","rafId","requestAnimationFrame","focusTarget","el","document","querySelector","getElementById","hasAttribute","setAttribute","focus","cancelAnimationFrame"],"mappings":";AAsBO,SAASA,EACdC,GACA;AAAA,EACEC,gBAAAA,IAAiB;AAAA,EACjBC,YAAAA,IAAa;AACY,IAAI,IACzB;AACN,QAAMC,IAAgBC,EAAO,EAAI;AAEjCC,EAAAA,EAAU,MAAM;AAEd,QAAIF,EAAcG,SAAS;AACzBH,MAAAA,EAAcG,UAAU;AACxB;AAAA,IACF;AAWA,UAAMC,IAAQC,sBATMC,MAAM;AACxB,YAAMC,IAAMC,SAASC,cAAcX,CAAc,KAAKU,SAASE,eAAeX,CAAU;AACxF,MAAIQ,MACGA,EAAGI,aAAa,UAAU,KAAGJ,EAAGK,aAAa,YAAY,IAAI,GAClEL,EAAGM,MAAAA;AAAAA,IAEP,CAG+C;AAC/C,WAAO,MAAMC,qBAAqBV,CAAK;AAAA,EACzC,GAAGP,CAAY;AACjB;"}
package/dist/index7.js CHANGED
@@ -1,56 +1,49 @@
1
- import r from "react";
2
- const v = ({
3
- checked: o = !1,
4
- onToggle: d = () => {
5
- },
6
- disabled: e = !1,
7
- label: t,
8
- labelPosition: n = "left",
9
- labelClickable: l = !0,
10
- automationId: i = ""
1
+ import s, { useState as h, useCallback as i } from "react";
2
+ import "./index72.js";
3
+ import { isElementVisible as p } from "./index204.js";
4
+ const x = ({
5
+ skipLinks: n,
6
+ className: c = ""
11
7
  }) => {
12
- const c = () => {
13
- e || d(!o);
14
- }, s = (a, b = !1) => a ? /* @__PURE__ */ r.createElement("label", {
15
- className: `select-none ${m[b ? "disabled" : "enabled"]}`,
16
- "data-automation-id": "toggle-label"
17
- }, a) : null, u = {
18
- enabled: "cursor-pointer",
19
- disabled: "cursor-not-allowed"
20
- }, m = {
21
- enabled: `text-[var(--color-gray-700)] ${l ? "cursor-pointer" : ""}`,
22
- disabled: "text-[var(--color-gray-600)] cursor-not-allowed"
23
- }, g = {
24
- checked: ` ${e ? "bg-[var(--color-green-100)]" : "bg-[var(--color-green-300)] hover:bg-[var(--color-green-500)]"}`,
25
- unchecked: ` ${e ? "bg-[var(--color-gray-400)]" : "bg-[var(--color-gray-500)] hover:bg-[var(--color-gray-600)]"}`,
26
- enabled: " cursor-pointer",
27
- disabled: " cursor-not-allowed"
28
- };
29
- return /* @__PURE__ */ r.createElement("div", {
30
- className: `se-design-toggle flex items-center gap-1 ${u[e ? "disabled" : "enabled"]}`,
31
- onClick: l ? c : void 0,
32
- "data-automation-id": "toggle-container"
33
- }, t && n === "left" && s(t, e), /* @__PURE__ */ r.createElement("div", {
34
- className: `toggle-btn block w-8 h-4 p-0.5 rounded-full transition ease-in-out
35
- ${g[o ? "checked" : "unchecked"]}
36
- ${g[e ? "disabled" : "enabled"]}
37
- `,
38
- onClick: (a) => {
39
- a.stopPropagation(), c();
40
- },
41
- "data-automation-id": i || "toggle-button"
42
- }, /* @__PURE__ */ r.createElement("input", {
43
- className: "opacity-0 hidden",
44
- type: "checkbox",
45
- checked: o,
46
- readOnly: !0,
47
- disabled: e
48
- }), /* @__PURE__ */ r.createElement("span", {
49
- className: `block w-3 h-3 rounded-full bg-[var(--color-white)]
50
- transform transition-transform ${o ? "translate-x-4" : ""}`
51
- })), t && n === "right" && s(t, e));
8
+ const [r, u] = h(n), l = i(() => {
9
+ const t = n.filter((e) => {
10
+ const o = document.getElementById(e.id);
11
+ return p(o);
12
+ });
13
+ u(t);
14
+ }, [n]), a = i(() => {
15
+ l();
16
+ }, [l]), d = i((t) => {
17
+ const e = document.getElementById(t);
18
+ if (e) {
19
+ const o = document.getElementById("main-header") || document.querySelector("header");
20
+ if (e === o) {
21
+ e.focus();
22
+ return;
23
+ }
24
+ const f = o ? o.offsetHeight : 0, m = e.getBoundingClientRect().top + window.scrollY - f - 16;
25
+ window.scrollTo({
26
+ top: m,
27
+ behavior: "smooth"
28
+ }), e.focus({
29
+ preventScroll: !0
30
+ });
31
+ }
32
+ }, []);
33
+ return n.length === 0 ? null : /* @__PURE__ */ s.createElement("div", {
34
+ className: `se-design-skip-links-bar relative w-full h-0 overflow-hidden p-0 flex items-center justify-center bg-[var(--color-blue-50)] transition-[height] duration-300 ease-out focus-within:h-auto focus-within:py-1 focus-within:px-2 ${c}`,
35
+ onFocus: a
36
+ }, r.map((t) => /* @__PURE__ */ s.createElement("a", {
37
+ key: t.id,
38
+ href: `#${t.id}`,
39
+ className: "absolute -left-[9999px] [clip:rect(0,0,0,0)] no-underline text-[var(--color-blue-500)] text-md py-1 px-2.5 rounded capitalize focus:static focus:left-auto focus:[clip:auto] focus:outline-none focus-visible:!outline-none hover:text-[var(--color-blue-600)] hover:bg-[var(--color-blue-200)]",
40
+ onClick: (e) => {
41
+ e.preventDefault(), d(t.id);
42
+ }
43
+ }, t.label)));
52
44
  };
53
45
  export {
54
- v as Toggle
46
+ x as SkipLinksBar,
47
+ x as default
55
48
  };
56
49
  //# sourceMappingURL=index7.js.map