@avenue-ticketing/ui 0.4.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/dist/react/avatar.d.ts +42 -0
  2. package/dist/react/avatar.js +159 -0
  3. package/dist/react/avatar.js.map +1 -0
  4. package/dist/react/badge.d.ts +12 -0
  5. package/dist/react/badge.js +35 -1
  6. package/dist/react/badge.js.map +1 -1
  7. package/dist/react/button.d.ts +1 -1
  8. package/dist/react/button.js +3 -3
  9. package/dist/react/button.js.map +1 -1
  10. package/dist/react/calendar.d.ts +13 -0
  11. package/dist/react/calendar.js +4639 -0
  12. package/dist/react/calendar.js.map +1 -0
  13. package/dist/react/card.d.ts +11 -0
  14. package/dist/react/card.js +113 -0
  15. package/dist/react/card.js.map +1 -0
  16. package/dist/react/checkbox.d.ts +11 -0
  17. package/dist/react/checkbox.js +129 -0
  18. package/dist/react/checkbox.js.map +1 -0
  19. package/dist/react/datetime-picker.d.ts +21 -0
  20. package/dist/react/datetime-picker.js +6124 -0
  21. package/dist/react/datetime-picker.js.map +1 -0
  22. package/dist/react/dialog.js +1 -1
  23. package/dist/react/dialog.js.map +1 -1
  24. package/dist/react/dropdown.d.ts +34 -9
  25. package/dist/react/dropdown.js +295 -144
  26. package/dist/react/dropdown.js.map +1 -1
  27. package/dist/react/input.d.ts +7 -0
  28. package/dist/react/input.js +15 -2
  29. package/dist/react/input.js.map +1 -1
  30. package/dist/react/pagination.d.ts +28 -0
  31. package/dist/react/pagination.js +262 -0
  32. package/dist/react/pagination.js.map +1 -0
  33. package/dist/react/popover.d.ts +76 -0
  34. package/dist/react/popover.js +564 -0
  35. package/dist/react/popover.js.map +1 -0
  36. package/dist/react/scroll-header.js +13 -1
  37. package/dist/react/scroll-header.js.map +1 -1
  38. package/dist/react/scroll-wheel.d.ts +45 -0
  39. package/dist/react/scroll-wheel.js +557 -0
  40. package/dist/react/scroll-wheel.js.map +1 -0
  41. package/dist/react/select.d.ts +62 -0
  42. package/dist/react/select.js +889 -0
  43. package/dist/react/select.js.map +1 -0
  44. package/dist/react/sheet.js +1 -1
  45. package/dist/react/sheet.js.map +1 -1
  46. package/dist/react/switch.d.ts +38 -0
  47. package/dist/react/switch.js +117 -0
  48. package/dist/react/switch.js.map +1 -0
  49. package/dist/react/table-pagination.d.ts +15 -0
  50. package/dist/react/table-pagination.js +1153 -0
  51. package/dist/react/table-pagination.js.map +1 -0
  52. package/dist/react/table-view/column-menu.d.ts +15 -0
  53. package/dist/react/table-view/column-menu.js +955 -0
  54. package/dist/react/table-view/column-menu.js.map +1 -0
  55. package/dist/react/table-view/index.d.ts +70 -0
  56. package/dist/react/table-view/index.js +2190 -0
  57. package/dist/react/table-view/index.js.map +1 -0
  58. package/dist/react/table.d.ts +86 -0
  59. package/dist/react/table.js +414 -0
  60. package/dist/react/table.js.map +1 -0
  61. package/dist/react/tabs.d.ts +9 -3
  62. package/dist/react/tabs.js +204 -48
  63. package/dist/react/tabs.js.map +1 -1
  64. package/dist/react/textarea.d.ts +6 -0
  65. package/dist/react/textarea.js +33 -0
  66. package/dist/react/textarea.js.map +1 -0
  67. package/dist/react/time-picker.d.ts +22 -0
  68. package/dist/react/time-picker.js +856 -0
  69. package/dist/react/time-picker.js.map +1 -0
  70. package/dist/react/tooltip.d.ts +45 -0
  71. package/dist/react/tooltip.js +540 -0
  72. package/dist/react/tooltip.js.map +1 -0
  73. package/package.json +1 -1
@@ -380,7 +380,7 @@ var DialogFooter = ({ className, fixed, ...props }) => {
380
380
  {
381
381
  className: cn(
382
382
  "flex flex-col-reverse p-6 sm:flex-row sm:justify-end sm:space-x-2",
383
- fixed && "bg-background border-primary/10 sticky bottom-0 z-10 border-t",
383
+ fixed && "bg-background border-primary/10 sticky bottom-0 z-10 border-t pb-[max(1.5rem,env(safe-area-inset-bottom))]",
384
384
  className
385
385
  ),
386
386
  ...props
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lib/utils.ts","../../src/react/dialog.tsx"],"names":[],"mappings":";;;;;;;AAGO,SAAS,MAAM,MAAA,EAAsB;AAC1C,EAAA,OAAO,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAC,CAAA;AAC7B;ACQA,IAAM,gBAAA,GAAmB,GAAA;AACzB,IAAM,0BAAA,GAA6B,gCAAA;AACnC,IAAM,yBAAA,GAA4B,gCAAA;AAGlC,IAAM,iCAAA,GAAoC,IAAA;AAE1C,IAAM,aAAA,GAAgB,EAAA;AACtB,IAAM,aAAA,GAAgB,EAAA;AAEtB,IAAI,yBAAA,GAA4B,CAAA;AAChC,IAAM,sBAAyC,EAAC;AAEhD,SAAS,sBAAsB,CAAA,EAAkB;AAC/C,EAAA,IAAI,CAAA,CAAE,QAAQ,QAAA,EAAU;AACxB,EAAA,MAAM,GAAA,GAAM,mBAAA,CAAoB,mBAAA,CAAoB,MAAA,GAAS,CAAC,CAAA;AAC9D,EAAA,IAAI,CAAC,GAAA,EAAK;AACV,EAAA,CAAA,CAAE,cAAA,EAAe;AACjB,EAAA,GAAA,EAAI;AACN;AAEA,SAAS,uBAAuB,MAAA,EAAoB;AAClD,EAAA,mBAAA,CAAoB,KAAK,MAAM,CAAA;AAC/B,EAAA,IAAI,mBAAA,CAAoB,WAAW,CAAA,EAAG;AACpC,IAAA,MAAA,CAAO,gBAAA,CAAiB,SAAA,EAAW,qBAAA,EAAuB,IAAI,CAAA;AAAA,EAChE;AACF;AAEA,SAAS,sBAAsB,MAAA,EAAoB;AACjD,EAAA,MAAM,CAAA,GAAI,mBAAA,CAAoB,WAAA,CAAY,MAAM,CAAA;AAChD,EAAA,IAAI,CAAA,IAAK,CAAA,EAAG,mBAAA,CAAoB,MAAA,CAAO,GAAG,CAAC,CAAA;AAC3C,EAAA,IAAI,mBAAA,CAAoB,WAAW,CAAA,EAAG;AACpC,IAAA,MAAA,CAAO,mBAAA,CAAoB,SAAA,EAAW,qBAAA,EAAuB,IAAI,CAAA;AAAA,EACnE;AACF;AAIA,SAAS,kCAAA,GAAqC;AAC5C,EAAA,MAAM,KAAA,GAAQ,eAAe,iCAAiC,CAAA,GAAA,CAAA;AAC9D,EAAA,OAAO,oBAAA;AAAA,IACL,CAAC,QAAA,KAAa;AACZ,MAAA,MAAM,EAAA,GAAK,MAAA,CAAO,UAAA,CAAW,KAAK,CAAA;AAClC,MAAA,EAAA,CAAG,gBAAA,CAAiB,UAAU,QAAQ,CAAA;AACtC,MAAA,OAAO,MAAM,EAAA,CAAG,mBAAA,CAAoB,QAAA,EAAU,QAAQ,CAAA;AAAA,IACxD,CAAA;AAAA,IACA,MAAM,MAAA,CAAO,UAAA,CAAW,KAAK,CAAA,CAAE,OAAA;AAAA,IAC/B,MAAM;AAAA,GACR;AACF;AAMA,IAAM,wBAAA,GAAuD;AAAA,EAC3D,EAAA,EAAI,EAAA;AAAA,EACJ,EAAA,EAAI,EAAA;AAAA,EACJ,EAAA,EAAI,EAAA;AAAA,EACJ,EAAA,EAAI,EAAA;AAAA,EACJ,IAAA,EAAM;AACR,CAAA;AAEA,IAAM,YAAA,GAA4D;AAAA,EAChE,EAAA,EAAI,aAAA;AAAA,EACJ,EAAA,EAAI,aAAA;AAAA,EACJ,EAAA,EAAI,aAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAEA,IAAM,oBAAA,GAAoE;AAAA,EACxE,EAAA,EAAI,aAAA;AAAA,EACJ,EAAA,EAAI,aAAA;AAAA,EACJ,EAAA,EAAI,aAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAGA,SAAS,wBAAA,CAAyB,MAAe,YAAA,EAAsB;AACrE,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAI,SAAS,IAAI,CAAA;AACrD,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAI,SAAS,KAAK,CAAA;AAEpD,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,IAAA,EAAM;AACR,MAAA,eAAA,CAAgB,IAAI,CAAA;AAAA,IACtB,CAAA,MAAO;AACL,MAAA,cAAA,CAAe,KAAK,CAAA;AACpB,MAAA,MAAM,QAAQ,UAAA,CAAW,MAAM,eAAA,CAAgB,KAAK,GAAG,YAAY,CAAA;AACnE,MAAA,OAAO,MAAM,aAAa,KAAK,CAAA;AAAA,IACjC;AAAA,EACF,CAAA,EAAG,CAAC,IAAA,EAAM,YAAY,CAAC,CAAA;AAEvB,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,YAAA,IAAgB,CAAC,IAAA,EAAM;AAE5B,IAAA,IAAI,IAAA,GAAO,CAAA;AACX,IAAA,MAAM,IAAA,GAAO,sBAAsB,MAAM;AACvC,MAAA,IAAA,GAAO,qBAAA,CAAsB,MAAM,cAAA,CAAe,IAAI,CAAC,CAAA;AAAA,IACzD,CAAC,CAAA;AACD,IAAA,OAAO,MAAM;AACX,MAAA,oBAAA,CAAqB,IAAI,CAAA;AACzB,MAAA,IAAI,IAAA,uBAA2B,IAAI,CAAA;AAAA,IACrC,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,YAAA,EAAc,IAAI,CAAC,CAAA;AAEvB,EAAA,OAAO,EAAE,cAAc,WAAA,EAAY;AACrC;AAWA,IAAM,gBAAgB,KAAA,CAAM,aAAA;AAAA,EAC1B;AACF,CAAA;AAEA,SAAS,SAAA,GAAY;AACnB,EAAA,MAAM,OAAA,GAAU,KAAA,CAAM,UAAA,CAAW,aAAa,CAAA;AAC9C,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,MAAM,IAAI,MAAM,oDAAoD,CAAA;AAAA,EACtE;AACA,EAAA,OAAO,OAAA;AACT;AAUO,IAAM,SAAgC,CAAC;AAAA,EAC5C,QAAA;AAAA,EACA,IAAA,EAAM,cAAA;AAAA,EACN;AACF,CAAA,KAAM;AACJ,EAAA,MAAM,SAAA,GAAY,KAAA,CAAM,UAAA,CAAW,aAAa,CAAA;AAChD,EAAA,MAAM,WAAA,GAAc,WAAW,KAAA,IAAS,CAAA;AACxC,EAAA,MAAM,QAAQ,WAAA,GAAc,CAAA;AAE5B,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAI,SAAS,KAAK,CAAA;AACtD,EAAA,MAAM,eAAe,cAAA,KAAmB,MAAA;AACxC,EAAA,MAAM,IAAA,GAAO,eAAe,cAAA,GAAiB,YAAA;AAE7C,EAAA,MAAM,UAAU,KAAA,CAAM,WAAA;AAAA,IACpB,CAAC,KAAA,KAAmB;AAClB,MAAA,IAAI,CAAC,YAAA,EAAc;AACjB,QAAA,eAAA,CAAgB,KAAK,CAAA;AAAA,MACvB;AACA,MAAA,YAAA,GAAe,KAAK,CAAA;AAAA,IACtB,CAAA;AAAA,IACA,CAAC,cAAc,YAAY;AAAA,GAC7B;AAEA,EAAA,MAAM,YAAA,GAAe,OAAA;AAAA,IACnB,OAAO,EAAE,IAAA,EAAM,OAAA,EAAS,KAAA,EAAM,CAAA;AAAA,IAC9B,CAAC,IAAA,EAAM,OAAA,EAAS,KAAK;AAAA,GACvB;AAEA,EAAA,2BACG,aAAA,CAAc,QAAA,EAAd,EAAuB,KAAA,EAAO,cAC5B,QAAA,EACH,CAAA;AAEJ;AAEO,IAAM,aAAA,GAGR,CAAC,EAAE,QAAA,EAAU,SAAQ,KAAM;AAC9B,EAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,SAAA,EAAU;AAE9B,EAAA,MAAM,WAAA,GAAc,MAAM,OAAA,CAAQ,IAAI,CAAA;AAEtC,EAAA,IAAI,OAAA,IAAW,KAAA,CAAM,cAAA,CAAe,QAAQ,CAAA,EAAG;AAC7C,IAAA,MAAM,KAAA,GAAQ,QAAA;AAGd,IAAA,OAAO,KAAA,CAAM,aAAa,KAAA,EAAO;AAAA,MAC/B,OAAA,EAAS,CAAC,CAAA,KAAwB;AAChC,QAAA,KAAA,CAAM,KAAA,CAAM,UAAU,CAAC,CAAA;AACvB,QAAA,WAAA,EAAY;AAAA,MACd;AAAA,KACD,CAAA;AAAA,EACH;AAEA,EAAA,2BACG,QAAA,EAAA,EAAO,IAAA,EAAK,QAAA,EAAS,OAAA,EAAS,aAC5B,QAAA,EACH,CAAA;AAEJ;AAEO,IAAM,WAAA,GAGR,CAAC,EAAE,QAAA,EAAU,SAAQ,KAAM;AAC9B,EAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,SAAA,EAAU;AAE9B,EAAA,MAAM,WAAA,GAAc,MAAM,OAAA,CAAQ,KAAK,CAAA;AAEvC,EAAA,IAAI,OAAA,IAAW,KAAA,CAAM,cAAA,CAAe,QAAQ,CAAA,EAAG;AAC7C,IAAA,MAAM,KAAA,GAAQ,QAAA;AAGd,IAAA,OAAO,KAAA,CAAM,aAAa,KAAA,EAAO;AAAA,MAC/B,OAAA,EAAS,CAAC,CAAA,KAAwB;AAChC,QAAA,KAAA,CAAM,KAAA,CAAM,UAAU,CAAC,CAAA;AACvB,QAAA,WAAA,EAAY;AAAA,MACd;AAAA,KACD,CAAA;AAAA,EACH;AAEA,EAAA,2BACG,QAAA,EAAA,EAAO,IAAA,EAAK,QAAA,EAAS,OAAA,EAAS,aAC5B,QAAA,EACH,CAAA;AAEJ;AAWO,IAAM,iBAAA,GAAoB,KAAA,CAAM,UAAA,CAGrC,CAAC,EAAE,SAAA,EAAW,IAAA,GAAO,QAAA,EAAU,OAAA,EAAS,GAAG,KAAA,EAAM,EAAG,GAAA,KAAQ;AAC5D,EAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,SAAA,EAAU;AAC9B,EAAA,MAAM,WAAA,GAAc,WAAA;AAAA,IAClB,CAAC,CAAA,KAA2C;AAC1C,MAAA,OAAA,GAAU,CAAC,CAAA;AACX,MAAA,IAAI,WAAW,IAAA,EAAM;AACnB,QAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,MACf;AAAA,IACF,CAAA;AAAA,IACA,CAAC,SAAS,OAAO;AAAA,GACnB;AAEA,EAAA,uBACE,IAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,IAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,6IAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,OAAA,EAAS,WAAA;AAAA,MACR,GAAG,KAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,CAAA,EAAA,EAAE,WAAU,UAAA,EAAW,CAAA;AAAA,wBACxB,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,SAAA,EAAU,QAAA,EAAA,OAAA,EAAK;AAAA;AAAA;AAAA,GACjC;AAEJ,CAAC;AACD,iBAAA,CAAkB,WAAA,GAAc,mBAAA;AAyBzB,IAAM,gBAA8C,CAAC;AAAA,EAC1D,QAAA;AAAA,EACA,IAAA,GAAO,IAAA;AAAA,EACP,SAAA;AAAA,EACA,QAAA,GAAW,GAAA;AAAA,EACX,mBAAA,GAAsB,IAAA;AAAA,EACtB,SAAA,GAAY,IAAA;AAAA,EACZ,iBAAA,GAAoB,IAAA;AAAA,EACpB,aAAA,GAAgB,KAAA;AAAA,EAChB,qBAAA,EAAuB,yBAAA;AAAA,EACvB,GAAG;AACL,CAAA,KAAM;AACJ,EAAA,MAAM,EAAE,IAAA,EAAM,OAAA,EAAS,KAAA,KAAU,SAAA,EAAU;AAE3C,EAAA,MAAM,mBAAmB,kCAAA,EAAmC;AAE5D,EAAA,MAAM,oBAAA,GAAuB,OAAA;AAAA,IAC3B,MAAM,sBAAsB,KAAA,IAAS,gBAAA;AAAA,IACrC,CAAC,mBAAmB,gBAAgB;AAAA,GACtC;AAEA,EAAA,MAAM,0BAAA,GAA6B,OAAA;AAAA,IACjC,MAAM,iBAAA,KAAsB,KAAA,IAAS,IAAA,KAAS,MAAA;AAAA,IAC9C,CAAC,mBAAmB,IAAI;AAAA,GAC1B;AAEA,EAAA,MAAM,aAAA,GAAgB,OAAA;AAAA,IACpB,MAAM,yBAAA,IAA6B,wBAAA,CAAyB,IAAI,CAAA;AAAA,IAChE,CAAC,2BAA2B,IAAI;AAAA,GAClC;AAEA,EAAA,MAAM,oBAAA,GAAuB,oBAAA;AAC7B,EAAA,MAAM,uBAAA,GAA0B,iBAAiB,CAAC,oBAAA;AAElD,EAAA,MAAM,YAAA,GAAe,OAAA;AAAA,IACnB,MACE,oBAAA,GACI,gBAAA,GACA,aAAA,GACE,gBAAA,GACA,QAAA;AAAA,IACR,CAAC,oBAAA,EAAsB,aAAA,EAAe,QAAQ;AAAA,GAChD;AAEA,EAAA,MAAM,EAAE,YAAA,EAAc,WAAA,EAAY,GAAI,wBAAA;AAAA,IACpC,IAAA;AAAA,IACA;AAAA,GACF;AAEA,EAAA,MAAM,iBAAA,GAAoB,OAAA;AAAA,IACxB,MAAO,OAAO,0BAAA,GAA6B,yBAAA;AAAA,IAC3C,CAAC,IAAI;AAAA,GACP;AAEA,EAAA,MAAM,YAAA,GAAe,OAAA;AAAA,IACnB,MAAM,aAAA,GAAA,CAAiB,KAAA,GAAQ,CAAA,IAAK,aAAA;AAAA,IACpC,CAAC,KAAK;AAAA,GACR;AAEA,EAAA,MAAM,kBAAA,GAAqB,YAAY,MAAM;AAC3C,IAAA,IAAI,mBAAA,UAA6B,KAAK,CAAA;AAAA,EACxC,CAAA,EAAG,CAAC,mBAAA,EAAqB,OAAO,CAAC,CAAA;AAEjC,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,IAAA,IAAQ,OAAO,QAAA,KAAa,WAAA,EAAa;AAE9C,IAAA,MAAM,MAAA,GAAS,MAAM,OAAA,CAAQ,KAAK,CAAA;AAClC,IAAA,sBAAA,CAAuB,MAAM,CAAA;AAE7B,IAAA,yBAAA,IAA6B,CAAA;AAC7B,IAAA,IAAI,8BAA8B,CAAA,EAAG;AACnC,MAAA,QAAA,CAAS,IAAA,CAAK,MAAM,QAAA,GAAW,QAAA;AAAA,IACjC;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,qBAAA,CAAsB,MAAM,CAAA;AAC5B,MAAA,yBAAA,IAA6B,CAAA;AAC7B,MAAA,IAAI,6BAA6B,CAAA,EAAG;AAClC,QAAA,yBAAA,GAA4B,CAAA;AAC5B,QAAA,QAAA,CAAS,IAAA,CAAK,MAAM,QAAA,GAAW,EAAA;AAAA,MACjC;AAAA,IACF,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,IAAA,EAAM,OAAO,CAAC,CAAA;AAElB,EAAA,MAAM,aAAA,GAAgB,OAAA;AAAA,IACpB,MACE,EAAA;AAAA,MACE,oBAAA;AAAA,MACA,IAAA,KAAS,MAAA,GACL,2BAAA,GACA,iBAAA,KAAsB,QACpB,4FAAA,GACA;AAAA,KACR;AAAA,IACF,CAAC,MAAM,iBAAiB;AAAA,GAC1B;AAEA,EAAA,MAAM,SAAA,GAAY,OAAA;AAAA,IAChB,OAA4B,EAAE,MAAA,EAAQ,YAAA,EAAa,CAAA;AAAA,IACnD,CAAC,YAAY;AAAA,GACf;AAEA,EAAA,MAAM,gBAAA,GAAmB,OAAA;AAAA,IACvB,MACE,EAAA;AAAA,MACE,4CAAA;AAAA,MACA,CAAC,oBAAA,IACC,CAAC,aAAA,IACD,gCAAA;AAAA,MACF,cAAc,aAAA,GAAgB;AAAA,KAChC;AAAA,IACF,CAAC,oBAAA,EAAsB,aAAA,EAAe,WAAW;AAAA,GACnD;AAEA,EAAA,MAAM,YAAA,GAAe,QAAQ,MAA2B;AACtD,IAAA,MAAM,KAAA,GAA6B;AAAA,MACjC,kBAAA,EAAoB,GAAG,YAAY,CAAA,EAAA;AAAA,KACrC;AACA,IAAA,IAAI,wBAAwB,aAAA,EAAe;AACzC,MAAA,KAAA,CAAM,kBAAA,GAAqB,SAAA;AAC3B,MAAA,KAAA,CAAM,wBAAA,GAA2B,iBAAA;AAAA,IACnC;AACA,IAAA,OAAO,KAAA;AAAA,EACT,GAAG,CAAC,YAAA,EAAc,oBAAA,EAAsB,aAAA,EAAe,iBAAiB,CAAC,CAAA;AAEzE,EAAA,MAAM,cAAA,GAAiB,QAAQ,MAAM;AACnC,IAAA,MAAM,OAAA,GAAU,IAAA,KAAS,MAAA,GAAS,IAAA,GAAO,IAAA;AACzC,IAAA,OAAO,EAAA;AAAA,MACL,+DAAA;AAAA,MACA,IAAA,KAAS,SACL,sDAAA,GACA,EAAA;AAAA,QACE,0BAAA;AAAA,QACA,6BACI,+MAAA,GACA,aAAA;AAAA,QACJ,YACG,0BAAA,GACG,oBAAA,CAAqB,OAAO,CAAA,GAC5B,aAAa,OAAO,CAAA;AAAA,OAC5B;AAAA,MACJ,CAAC,oBAAA,IACC,CAAC,uBAAA,IACD,EAAA;AAAA,QACE,4BAAA;AAAA,QACA,cAAc,uBAAA,GAA0B;AAAA,OAC1C;AAAA,MACF;AAAA,KACF;AAAA,EACF,CAAA,EAAG;AAAA,IACD,IAAA;AAAA,IACA,0BAAA;AAAA,IACA,oBAAA;AAAA,IACA,uBAAA;AAAA,IACA,WAAA;AAAA,IACA;AAAA,GACD,CAAA;AAED,EAAA,MAAM,UAAA,GAAa,QAAQ,MAA2B;AACpD,IAAA,MAAM,IAAA,GAAO,EAAE,GAAG,IAAA,CAAK,KAAA,EAAM;AAC7B,IAAA,IAAI,oBAAA,EAAsB;AACxB,MAAA,OAAO;AAAA,QACL,GAAG,IAAA;AAAA,QACH,SAAA,EAAW,cAAc,eAAA,GAAkB,kBAAA;AAAA,QAC3C,OAAA,EAAS,cAAc,CAAA,GAAI,CAAA;AAAA,QAC3B,kBAAA,EAAoB,oBAAA;AAAA,QACpB,kBAAA,EAAoB,GAAG,gBAAgB,CAAA,EAAA,CAAA;AAAA,QACvC,wBAAA,EAA0B;AAAA,OAC5B;AAAA,IACF;AACA,IAAA,IAAI,uBAAA,EAAyB;AAC3B,MAAA,OAAO;AAAA,QACL,GAAG,IAAA;AAAA,QACH,SAAA,EAAW,WAAA,GACP,eAAA,GACA,CAAA,WAAA,EAAc,aAAa,CAAA,GAAA,CAAA;AAAA,QAC/B,OAAA,EAAS,cAAc,CAAA,GAAI,CAAA;AAAA,QAC3B,kBAAA,EAAoB,oBAAA;AAAA,QACpB,kBAAA,EAAoB,GAAG,gBAAgB,CAAA,EAAA,CAAA;AAAA,QACvC,wBAAA,EAA0B;AAAA,OAC5B;AAAA,IACF;AACA,IAAA,OAAO;AAAA,MACL,GAAG,IAAA;AAAA,MACH,kBAAA,EAAoB,GAAG,QAAQ,CAAA,EAAA;AAAA,KACjC;AAAA,EACF,CAAA,EAAG;AAAA,IACD,IAAA,CAAK,KAAA;AAAA,IACL,oBAAA;AAAA,IACA,uBAAA;AAAA,IACA,WAAA;AAAA,IACA,aAAA;AAAA,IACA,iBAAA;AAAA,IACA;AAAA,GACD,CAAA;AAED,EAAA,IAAI,CAAC,cAAc,OAAO,IAAA;AAE1B,EAAA,OAAO,YAAA;AAAA,oBACL,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,aAAA,EAAe,OAAO,SAAA,EACpC,QAAA,EAAA;AAAA,sBAAA,GAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAW,gBAAA;AAAA,UACX,KAAA,EAAO,YAAA;AAAA,UACP,OAAA,EAAS;AAAA;AAAA,OACX;AAAA,2BAEC,KAAA,EAAA,EAAK,GAAG,MAAM,SAAA,EAAW,cAAA,EAAgB,OAAO,UAAA,EAC9C,QAAA,EAAA;AAAA,QAAA,QAAA;AAAA,QAEA,SAAA,oBACC,GAAA;AAAA,UAAC,iBAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAW,GAAG,4CAA4C;AAAA;AAAA;AAC5D,OAAA,EAEJ;AAAA,KAAA,EACF,CAAA;AAAA,IACA,QAAA,CAAS;AAAA,GACX;AACF;AAEO,IAAM,eAET,CAAC,EAAE,WAAW,KAAA,EAAO,GAAG,OAAM,KAAM;AACtC,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,wDAAA;AAAA,QACA,KAAA,IAAS,4DAAA;AAAA,QACT;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAEO,IAAM,eAET,CAAC,EAAE,WAAW,KAAA,EAAO,GAAG,OAAM,KAAM;AACtC,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,mEAAA;AAAA,QACA,KAAA,IACE,+DAAA;AAAA,QACF;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAEO,IAAM,cAET,CAAC,EAAE,SAAA,EAAW,GAAG,OAAM,KAAM;AAC/B,EAAA,uBACE,GAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,iDAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAEO,IAAM,oBAET,CAAC,EAAE,SAAA,EAAW,GAAG,OAAM,KAAM;AAC/B,EAAA,uBACE,GAAA,CAAC,OAAE,SAAA,EAAW,EAAA,CAAG,iCAAiC,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO,CAAA;AAE7E","file":"dialog.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","\"use client\";\nimport React, {\n useCallback,\n useEffect,\n useMemo,\n useState,\n useSyncExternalStore,\n} from \"react\";\nimport { cn } from \"@/lib/utils\";\nimport { createPortal } from \"react-dom\";\nimport { X } from \"lucide-react\";\n\n/** Used for slide / bottom-sheet motion — duration + entry/exit easing (see `slideMotionEasing`). */\nconst DIALOG_MOTION_MS = 200;\nconst DIALOG_ENTRY_MOTION_EASING = \"cubic-bezier(0.85, 0, 0.15, 1)\";\nconst DIALOG_EXIT_MOTION_EASING = \"cubic-bezier(0.85, 0, 1, 0.15)\";\n\n/** matches `SHEET_MOBILE_MAX_WIDTH_PX` in sheet.tsx */\nconst DIALOG_MOBILE_BOTTOM_SHEET_MAX_PX = 1024;\n\nconst DIALOG_Z_BASE = 50;\nconst DIALOG_Z_STEP = 10;\n\nlet dialogBodyScrollLockCount = 0;\nconst dialogEscapeClosers: Array<() => void> = [];\n\nfunction dialogEscapeOnKeydown(e: KeyboardEvent) {\n if (e.key !== \"Escape\") return;\n const top = dialogEscapeClosers[dialogEscapeClosers.length - 1];\n if (!top) return;\n e.preventDefault();\n top();\n}\n\nfunction dialogPushEscapeCloser(closer: () => void) {\n dialogEscapeClosers.push(closer);\n if (dialogEscapeClosers.length === 1) {\n window.addEventListener(\"keydown\", dialogEscapeOnKeydown, true);\n }\n}\n\nfunction dialogPopEscapeCloser(closer: () => void) {\n const i = dialogEscapeClosers.lastIndexOf(closer);\n if (i >= 0) dialogEscapeClosers.splice(i, 1);\n if (dialogEscapeClosers.length === 0) {\n window.removeEventListener(\"keydown\", dialogEscapeOnKeydown, true);\n }\n}\n\ntype DialogSize = \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\n\nfunction useDialogMobileBottomSheetViewport() {\n const query = `(max-width: ${DIALOG_MOBILE_BOTTOM_SHEET_MAX_PX}px)`;\n return useSyncExternalStore(\n (onChange) => {\n const mq = window.matchMedia(query);\n mq.addEventListener(\"change\", onChange);\n return () => mq.removeEventListener(\"change\", onChange);\n },\n () => window.matchMedia(query).matches,\n () => false,\n );\n}\n\n/**\n * Slide distance for `slideEntrance`, scaled to `size` (full keeps 120px like a\n * mobile sheet; smaller presets use shorter travel so the motion matches width).\n */\nconst SLIDE_ENTRANCE_OFFSET_PX: Record<DialogSize, number> = {\n sm: 16,\n md: 16,\n lg: 16,\n xl: 16,\n full: 120,\n};\n\nconst SIZE_CLASSES: Record<Exclude<DialogSize, \"full\">, string> = {\n sm: \"sm:max-w-sm\",\n md: \"sm:max-w-md\",\n lg: \"sm:max-w-lg\",\n xl: \"sm:max-w-xl\",\n};\n\nconst SIZE_CLASSES_LG_ONLY: Record<Exclude<DialogSize, \"full\">, string> = {\n sm: \"lg:max-w-sm\",\n md: \"lg:max-w-md\",\n lg: \"lg:max-w-lg\",\n xl: \"lg:max-w-xl\",\n};\n\n/** Same pattern as `useSheetRenderLifecycle` in sheet.tsx (portal + enter/exit timing). */\nfunction useDialogRenderLifecycle(open: boolean, panelCloseMs: number) {\n const [shouldRender, setShouldRender] = useState(open);\n const [isAnimating, setIsAnimating] = useState(false);\n\n useEffect(() => {\n if (open) {\n setShouldRender(true);\n } else {\n setIsAnimating(false);\n const timer = setTimeout(() => setShouldRender(false), panelCloseMs);\n return () => clearTimeout(timer);\n }\n }, [open, panelCloseMs]);\n\n useEffect(() => {\n if (!shouldRender || !open) return;\n\n let raf2 = 0;\n const raf1 = requestAnimationFrame(() => {\n raf2 = requestAnimationFrame(() => setIsAnimating(true));\n });\n return () => {\n cancelAnimationFrame(raf1);\n if (raf2) cancelAnimationFrame(raf2);\n };\n }, [shouldRender, open]);\n\n return { shouldRender, isAnimating };\n}\n\n//////////////////////////////////////////////// Context\n\ntype DialogContextValue = {\n open: boolean;\n setOpen: (open: boolean) => void;\n /** nesting depth for z-index (1 = outermost dialog in tree) */\n depth: number;\n};\n\nconst DialogContext = React.createContext<DialogContextValue | undefined>(\n undefined,\n);\n\nfunction useDialog() {\n const context = React.useContext(DialogContext);\n if (!context) {\n throw new Error(\"Dialog components must be used within a <Dialog />\");\n }\n return context;\n}\n\n//////////////////////////////////////////////// Main\n\ninterface DialogProps {\n children: React.ReactNode;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n}\n\nexport const Dialog: React.FC<DialogProps> = ({\n children,\n open: controlledOpen,\n onOpenChange,\n}) => {\n const parentCtx = React.useContext(DialogContext);\n const parentDepth = parentCtx?.depth ?? 0;\n const depth = parentDepth + 1;\n\n const [internalOpen, setInternalOpen] = useState(false);\n const isControlled = controlledOpen !== undefined;\n const open = isControlled ? controlledOpen : internalOpen;\n\n const setOpen = React.useCallback(\n (value: boolean) => {\n if (!isControlled) {\n setInternalOpen(value);\n }\n onOpenChange?.(value);\n },\n [isControlled, onOpenChange],\n );\n\n const contextValue = useMemo<DialogContextValue>(\n () => ({ open, setOpen, depth }),\n [open, setOpen, depth],\n );\n\n return (\n <DialogContext.Provider value={contextValue}>\n {children}\n </DialogContext.Provider>\n );\n};\n\nexport const DialogTrigger: React.FC<{\n children: React.ReactNode;\n asChild?: boolean;\n}> = ({ children, asChild }) => {\n const { setOpen } = useDialog();\n\n const handleClick = () => setOpen(true);\n\n if (asChild && React.isValidElement(children)) {\n const child = children as React.ReactElement<{\n onClick?: React.MouseEventHandler;\n }>;\n return React.cloneElement(child, {\n onClick: (e: React.MouseEvent) => {\n child.props.onClick?.(e);\n handleClick();\n },\n });\n }\n\n return (\n <button type=\"button\" onClick={handleClick}>\n {children}\n </button>\n );\n};\n\nexport const DialogClose: React.FC<{\n children: React.ReactNode;\n asChild?: boolean;\n}> = ({ children, asChild }) => {\n const { setOpen } = useDialog();\n\n const handleClick = () => setOpen(false);\n\n if (asChild && React.isValidElement(children)) {\n const child = children as React.ReactElement<{\n onClick?: React.MouseEventHandler;\n }>;\n return React.cloneElement(child, {\n onClick: (e: React.MouseEvent) => {\n child.props.onClick?.(e);\n handleClick();\n },\n });\n }\n\n return (\n <button type=\"button\" onClick={handleClick}>\n {children}\n </button>\n );\n};\n\n//////////////////////////////////////////////// Close\n\nexport interface DialogCloseButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {}\n\n/**\n * Default dismiss control for {@link DialogContent}. Includes absolute top-right\n * placement; pass `className` to adjust or replace positioning.\n * When `onClick` is omitted, closes via the surrounding `Dialog` context (`setOpen(false)`).\n */\nexport const DialogCloseButton = React.forwardRef<\n HTMLButtonElement,\n DialogCloseButtonProps\n>(({ className, type = \"button\", onClick, ...props }, ref) => {\n const { setOpen } = useDialog();\n const handleClick = useCallback(\n (e: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(e);\n if (onClick == null) {\n setOpen(false);\n }\n },\n [onClick, setOpen],\n );\n\n return (\n <button\n ref={ref}\n type={type}\n className={cn(\n \"z-100 flex size-12 cursor-pointer items-center justify-center rounded-full transition-all hover:bg-secondary-background active:scale-[0.96]\",\n className,\n )}\n onClick={handleClick}\n {...props}\n >\n <X className=\"size-5.5\" />\n <span className=\"sr-only\">Close</span>\n </button>\n );\n});\nDialogCloseButton.displayName = \"DialogCloseButton\";\n\n//////////////////////////////////////////////// Content\n\ninterface DialogContentProps extends React.HTMLAttributes<HTMLDivElement> {\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\n duration?: number;\n closeOnOverlayClick?: boolean;\n showClose?: boolean;\n /**\n * When `true` (default), viewports ≤1024px use a bottom-anchored panel and\n * slide-up motion (same breakpoint as {@link SheetContent}). Wider viewports\n * keep the centered dialog. Set `false` to always use the centered dialog.\n */\n mobileBottomSheet?: boolean;\n /**\n * When `true`, panel uses translateY + opacity with fixed timing and separate\n * entry/exit curves (works with any `size`). Default `false` uses scale + fade.\n * Ignored when `mobileBottomSheet` applies on a narrow viewport.\n */\n slideEntrance?: boolean;\n /** Override slide distance (px); default follows `size` via `SLIDE_ENTRANCE_OFFSET_PX`. */\n slideEntranceOffsetPx?: number;\n}\n\nexport const DialogContent: React.FC<DialogContentProps> = ({\n children,\n size = \"md\",\n className,\n duration = 200,\n closeOnOverlayClick = true,\n showClose = true,\n mobileBottomSheet = true,\n slideEntrance = false,\n slideEntranceOffsetPx: slideEntranceOffsetPxProp,\n ...rest\n}) => {\n const { open, setOpen, depth } = useDialog();\n\n const isNarrowViewport = useDialogMobileBottomSheetViewport();\n\n const useMobileBottomSheet = useMemo(\n () => mobileBottomSheet !== false && isNarrowViewport,\n [mobileBottomSheet, isNarrowViewport],\n );\n\n const useMobileBottomSheetChrome = useMemo(\n () => mobileBottomSheet !== false && size !== \"full\",\n [mobileBottomSheet, size],\n );\n\n const slideOffsetPx = useMemo(\n () => slideEntranceOffsetPxProp ?? SLIDE_ENTRANCE_OFFSET_PX[size],\n [slideEntranceOffsetPxProp, size],\n );\n\n const useBottomSheetMotion = useMobileBottomSheet;\n const useDesktopSlideEntrance = slideEntrance && !useBottomSheetMotion;\n\n const panelCloseMs = useMemo(\n () =>\n useBottomSheetMotion\n ? DIALOG_MOTION_MS\n : slideEntrance\n ? DIALOG_MOTION_MS\n : duration,\n [useBottomSheetMotion, slideEntrance, duration],\n );\n\n const { shouldRender, isAnimating } = useDialogRenderLifecycle(\n open,\n panelCloseMs,\n );\n\n const slideMotionEasing = useMemo(\n () => (open ? DIALOG_ENTRY_MOTION_EASING : DIALOG_EXIT_MOTION_EASING),\n [open],\n );\n\n const portalZIndex = useMemo(\n () => DIALOG_Z_BASE + (depth - 1) * DIALOG_Z_STEP,\n [depth],\n );\n\n const handleOverlayClick = useCallback(() => {\n if (closeOnOverlayClick) setOpen(false);\n }, [closeOnOverlayClick, setOpen]);\n\n useEffect(() => {\n if (!open || typeof document === \"undefined\") return;\n\n const closer = () => setOpen(false);\n dialogPushEscapeCloser(closer);\n\n dialogBodyScrollLockCount += 1;\n if (dialogBodyScrollLockCount === 1) {\n document.body.style.overflow = \"hidden\";\n }\n\n return () => {\n dialogPopEscapeCloser(closer);\n dialogBodyScrollLockCount -= 1;\n if (dialogBodyScrollLockCount <= 0) {\n dialogBodyScrollLockCount = 0;\n document.body.style.overflow = \"\";\n }\n };\n }, [open, setOpen]);\n\n const rootClassName = useMemo(\n () =>\n cn(\n \"fixed inset-0 flex\",\n size === \"full\"\n ? \"h-dvh w-full flex-col p-0\"\n : mobileBottomSheet !== false\n ? \"max-lg:items-end max-lg:justify-center max-lg:p-0 lg:items-center lg:justify-center lg:p-4\"\n : \"items-center justify-center p-4\",\n ),\n [size, mobileBottomSheet],\n );\n\n const rootStyle = useMemo(\n (): React.CSSProperties => ({ zIndex: portalZIndex }),\n [portalZIndex],\n );\n\n const overlayClassName = useMemo(\n () =>\n cn(\n \"fixed inset-0 bg-black/40 dark:bg-black/60\",\n !useBottomSheetMotion &&\n !slideEntrance &&\n \"transition-opacity ease-in-out\",\n isAnimating ? \"opacity-100\" : \"opacity-0\",\n ),\n [useBottomSheetMotion, slideEntrance, isAnimating],\n );\n\n const overlayStyle = useMemo((): React.CSSProperties => {\n const style: React.CSSProperties = {\n transitionDuration: `${panelCloseMs}ms`,\n };\n if (useBottomSheetMotion || slideEntrance) {\n style.transitionProperty = \"opacity\";\n style.transitionTimingFunction = slideMotionEasing;\n }\n return style;\n }, [panelCloseMs, useBottomSheetMotion, slideEntrance, slideMotionEasing]);\n\n const panelClassName = useMemo(() => {\n const sizeKey = size === \"full\" ? null : size;\n return cn(\n \"bg-background relative z-10 w-full overflow-hidden shadow-2xl\",\n size === \"full\"\n ? \"flex min-h-0 flex-1 flex-col max-w-none rounded-none\"\n : cn(\n \"border-primary/10 border\",\n useMobileBottomSheetChrome\n ? \"max-lg:max-h-[min(90dvh,calc(100dvh-env(safe-area-inset-bottom,0px)))] max-lg:rounded-t-2xl max-lg:rounded-b-none max-lg:border-x-0 max-lg:border-b-0 max-lg:border-t max-lg:border-primary/10 lg:rounded-2xl\"\n : \"rounded-2xl\",\n sizeKey &&\n (useMobileBottomSheetChrome\n ? SIZE_CLASSES_LG_ONLY[sizeKey]\n : SIZE_CLASSES[sizeKey]),\n ),\n !useBottomSheetMotion &&\n !useDesktopSlideEntrance &&\n cn(\n \"transition-all ease-in-out\",\n isAnimating ? \"scale-100 opacity-100\" : \"scale-95 opacity-0\",\n ),\n className,\n );\n }, [\n size,\n useMobileBottomSheetChrome,\n useBottomSheetMotion,\n useDesktopSlideEntrance,\n isAnimating,\n className,\n ]);\n\n const panelStyle = useMemo((): React.CSSProperties => {\n const base = { ...rest.style };\n if (useBottomSheetMotion) {\n return {\n ...base,\n transform: isAnimating ? \"translateY(0)\" : \"translateY(100%)\",\n opacity: isAnimating ? 1 : 0,\n transitionProperty: \"transform, opacity\",\n transitionDuration: `${DIALOG_MOTION_MS}ms`,\n transitionTimingFunction: slideMotionEasing,\n };\n }\n if (useDesktopSlideEntrance) {\n return {\n ...base,\n transform: isAnimating\n ? \"translateY(0)\"\n : `translateY(${slideOffsetPx}px)`,\n opacity: isAnimating ? 1 : 0,\n transitionProperty: \"transform, opacity\",\n transitionDuration: `${DIALOG_MOTION_MS}ms`,\n transitionTimingFunction: slideMotionEasing,\n };\n }\n return {\n ...base,\n transitionDuration: `${duration}ms`,\n };\n }, [\n rest.style,\n useBottomSheetMotion,\n useDesktopSlideEntrance,\n isAnimating,\n slideOffsetPx,\n slideMotionEasing,\n duration,\n ]);\n\n if (!shouldRender) return null;\n\n return createPortal(\n <div className={rootClassName} style={rootStyle}>\n <div\n className={overlayClassName}\n style={overlayStyle}\n onClick={handleOverlayClick}\n />\n\n <div {...rest} className={panelClassName} style={panelStyle}>\n {children}\n\n {showClose && (\n <DialogCloseButton\n className={cn(\"absolute top-4 right-4 md:top-4 md:right-4\")}\n />\n )}\n </div>\n </div>,\n document.body,\n );\n};\n\nexport const DialogHeader: React.FC<\n React.HTMLAttributes<HTMLDivElement> & { fixed?: boolean }\n> = ({ className, fixed, ...props }) => {\n return (\n <div\n className={cn(\n \"flex flex-col space-y-1.5 p-6 text-center sm:text-left\",\n fixed && \"bg-background border-primary/10 sticky top-0 z-10 border-b\",\n className,\n )}\n {...props}\n />\n );\n};\n\nexport const DialogFooter: React.FC<\n React.HTMLAttributes<HTMLDivElement> & { fixed?: boolean }\n> = ({ className, fixed, ...props }) => {\n return (\n <div\n className={cn(\n \"flex flex-col-reverse p-6 sm:flex-row sm:justify-end sm:space-x-2\",\n fixed &&\n \"bg-background border-primary/10 sticky bottom-0 z-10 border-t\",\n className,\n )}\n {...props}\n />\n );\n};\n\nexport const DialogTitle: React.FC<\n React.HTMLAttributes<HTMLHeadingElement>\n> = ({ className, ...props }) => {\n return (\n <h3\n className={cn(\n \"text-primary text-xl leading-none font-semibold\",\n className,\n )}\n {...props}\n />\n );\n};\n\nexport const DialogDescription: React.FC<\n React.HTMLAttributes<HTMLParagraphElement>\n> = ({ className, ...props }) => {\n return (\n <p className={cn(\"text-muted-foreground text-sm\", className)} {...props} />\n );\n};\n"]}
1
+ {"version":3,"sources":["../../src/lib/utils.ts","../../src/react/dialog.tsx"],"names":[],"mappings":"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","file":"dialog.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","\"use client\";\nimport React, {\n useCallback,\n useEffect,\n useMemo,\n useState,\n useSyncExternalStore,\n} from \"react\";\nimport { cn } from \"@/lib/utils\";\nimport { createPortal } from \"react-dom\";\nimport { X } from \"lucide-react\";\n\n/** Used for slide / bottom-sheet motion — duration + entry/exit easing (see `slideMotionEasing`). */\nconst DIALOG_MOTION_MS = 200;\nconst DIALOG_ENTRY_MOTION_EASING = \"cubic-bezier(0.85, 0, 0.15, 1)\";\nconst DIALOG_EXIT_MOTION_EASING = \"cubic-bezier(0.85, 0, 1, 0.15)\";\n\n/** matches `SHEET_MOBILE_MAX_WIDTH_PX` in sheet.tsx */\nconst DIALOG_MOBILE_BOTTOM_SHEET_MAX_PX = 1024;\n\nconst DIALOG_Z_BASE = 50;\nconst DIALOG_Z_STEP = 10;\n\nlet dialogBodyScrollLockCount = 0;\nconst dialogEscapeClosers: Array<() => void> = [];\n\nfunction dialogEscapeOnKeydown(e: KeyboardEvent) {\n if (e.key !== \"Escape\") return;\n const top = dialogEscapeClosers[dialogEscapeClosers.length - 1];\n if (!top) return;\n e.preventDefault();\n top();\n}\n\nfunction dialogPushEscapeCloser(closer: () => void) {\n dialogEscapeClosers.push(closer);\n if (dialogEscapeClosers.length === 1) {\n window.addEventListener(\"keydown\", dialogEscapeOnKeydown, true);\n }\n}\n\nfunction dialogPopEscapeCloser(closer: () => void) {\n const i = dialogEscapeClosers.lastIndexOf(closer);\n if (i >= 0) dialogEscapeClosers.splice(i, 1);\n if (dialogEscapeClosers.length === 0) {\n window.removeEventListener(\"keydown\", dialogEscapeOnKeydown, true);\n }\n}\n\ntype DialogSize = \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\n\nfunction useDialogMobileBottomSheetViewport() {\n const query = `(max-width: ${DIALOG_MOBILE_BOTTOM_SHEET_MAX_PX}px)`;\n return useSyncExternalStore(\n (onChange) => {\n const mq = window.matchMedia(query);\n mq.addEventListener(\"change\", onChange);\n return () => mq.removeEventListener(\"change\", onChange);\n },\n () => window.matchMedia(query).matches,\n () => false,\n );\n}\n\n/**\n * Slide distance for `slideEntrance`, scaled to `size` (full keeps 120px like a\n * mobile sheet; smaller presets use shorter travel so the motion matches width).\n */\nconst SLIDE_ENTRANCE_OFFSET_PX: Record<DialogSize, number> = {\n sm: 16,\n md: 16,\n lg: 16,\n xl: 16,\n full: 120,\n};\n\nconst SIZE_CLASSES: Record<Exclude<DialogSize, \"full\">, string> = {\n sm: \"sm:max-w-sm\",\n md: \"sm:max-w-md\",\n lg: \"sm:max-w-lg\",\n xl: \"sm:max-w-xl\",\n};\n\nconst SIZE_CLASSES_LG_ONLY: Record<Exclude<DialogSize, \"full\">, string> = {\n sm: \"lg:max-w-sm\",\n md: \"lg:max-w-md\",\n lg: \"lg:max-w-lg\",\n xl: \"lg:max-w-xl\",\n};\n\n/** Same pattern as `useSheetRenderLifecycle` in sheet.tsx (portal + enter/exit timing). */\nfunction useDialogRenderLifecycle(open: boolean, panelCloseMs: number) {\n const [shouldRender, setShouldRender] = useState(open);\n const [isAnimating, setIsAnimating] = useState(false);\n\n useEffect(() => {\n if (open) {\n setShouldRender(true);\n } else {\n setIsAnimating(false);\n const timer = setTimeout(() => setShouldRender(false), panelCloseMs);\n return () => clearTimeout(timer);\n }\n }, [open, panelCloseMs]);\n\n useEffect(() => {\n if (!shouldRender || !open) return;\n\n let raf2 = 0;\n const raf1 = requestAnimationFrame(() => {\n raf2 = requestAnimationFrame(() => setIsAnimating(true));\n });\n return () => {\n cancelAnimationFrame(raf1);\n if (raf2) cancelAnimationFrame(raf2);\n };\n }, [shouldRender, open]);\n\n return { shouldRender, isAnimating };\n}\n\n//////////////////////////////////////////////// Context\n\ntype DialogContextValue = {\n open: boolean;\n setOpen: (open: boolean) => void;\n /** nesting depth for z-index (1 = outermost dialog in tree) */\n depth: number;\n};\n\nconst DialogContext = React.createContext<DialogContextValue | undefined>(\n undefined,\n);\n\nfunction useDialog() {\n const context = React.useContext(DialogContext);\n if (!context) {\n throw new Error(\"Dialog components must be used within a <Dialog />\");\n }\n return context;\n}\n\n//////////////////////////////////////////////// Main\n\ninterface DialogProps {\n children: React.ReactNode;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n}\n\nexport const Dialog: React.FC<DialogProps> = ({\n children,\n open: controlledOpen,\n onOpenChange,\n}) => {\n const parentCtx = React.useContext(DialogContext);\n const parentDepth = parentCtx?.depth ?? 0;\n const depth = parentDepth + 1;\n\n const [internalOpen, setInternalOpen] = useState(false);\n const isControlled = controlledOpen !== undefined;\n const open = isControlled ? controlledOpen : internalOpen;\n\n const setOpen = React.useCallback(\n (value: boolean) => {\n if (!isControlled) {\n setInternalOpen(value);\n }\n onOpenChange?.(value);\n },\n [isControlled, onOpenChange],\n );\n\n const contextValue = useMemo<DialogContextValue>(\n () => ({ open, setOpen, depth }),\n [open, setOpen, depth],\n );\n\n return (\n <DialogContext.Provider value={contextValue}>\n {children}\n </DialogContext.Provider>\n );\n};\n\nexport const DialogTrigger: React.FC<{\n children: React.ReactNode;\n asChild?: boolean;\n}> = ({ children, asChild }) => {\n const { setOpen } = useDialog();\n\n const handleClick = () => setOpen(true);\n\n if (asChild && React.isValidElement(children)) {\n const child = children as React.ReactElement<{\n onClick?: React.MouseEventHandler;\n }>;\n return React.cloneElement(child, {\n onClick: (e: React.MouseEvent) => {\n child.props.onClick?.(e);\n handleClick();\n },\n });\n }\n\n return (\n <button type=\"button\" onClick={handleClick}>\n {children}\n </button>\n );\n};\n\nexport const DialogClose: React.FC<{\n children: React.ReactNode;\n asChild?: boolean;\n}> = ({ children, asChild }) => {\n const { setOpen } = useDialog();\n\n const handleClick = () => setOpen(false);\n\n if (asChild && React.isValidElement(children)) {\n const child = children as React.ReactElement<{\n onClick?: React.MouseEventHandler;\n }>;\n return React.cloneElement(child, {\n onClick: (e: React.MouseEvent) => {\n child.props.onClick?.(e);\n handleClick();\n },\n });\n }\n\n return (\n <button type=\"button\" onClick={handleClick}>\n {children}\n </button>\n );\n};\n\n//////////////////////////////////////////////// Close\n\nexport interface DialogCloseButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {}\n\n/**\n * Default dismiss control for {@link DialogContent}. Includes absolute top-right\n * placement; pass `className` to adjust or replace positioning.\n * When `onClick` is omitted, closes via the surrounding `Dialog` context (`setOpen(false)`).\n */\nexport const DialogCloseButton = React.forwardRef<\n HTMLButtonElement,\n DialogCloseButtonProps\n>(({ className, type = \"button\", onClick, ...props }, ref) => {\n const { setOpen } = useDialog();\n const handleClick = useCallback(\n (e: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(e);\n if (onClick == null) {\n setOpen(false);\n }\n },\n [onClick, setOpen],\n );\n\n return (\n <button\n ref={ref}\n type={type}\n className={cn(\n \"z-100 flex size-12 cursor-pointer items-center justify-center rounded-full transition-all hover:bg-secondary-background active:scale-[0.96]\",\n className,\n )}\n onClick={handleClick}\n {...props}\n >\n <X className=\"size-5.5\" />\n <span className=\"sr-only\">Close</span>\n </button>\n );\n});\nDialogCloseButton.displayName = \"DialogCloseButton\";\n\n//////////////////////////////////////////////// Content\n\ninterface DialogContentProps extends React.HTMLAttributes<HTMLDivElement> {\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\n duration?: number;\n closeOnOverlayClick?: boolean;\n showClose?: boolean;\n /**\n * When `true` (default), viewports ≤1024px use a bottom-anchored panel and\n * slide-up motion (same breakpoint as {@link SheetContent}). Wider viewports\n * keep the centered dialog. Set `false` to always use the centered dialog.\n */\n mobileBottomSheet?: boolean;\n /**\n * When `true`, panel uses translateY + opacity with fixed timing and separate\n * entry/exit curves (works with any `size`). Default `false` uses scale + fade.\n * Ignored when `mobileBottomSheet` applies on a narrow viewport.\n */\n slideEntrance?: boolean;\n /** Override slide distance (px); default follows `size` via `SLIDE_ENTRANCE_OFFSET_PX`. */\n slideEntranceOffsetPx?: number;\n}\n\nexport const DialogContent: React.FC<DialogContentProps> = ({\n children,\n size = \"md\",\n className,\n duration = 200,\n closeOnOverlayClick = true,\n showClose = true,\n mobileBottomSheet = true,\n slideEntrance = false,\n slideEntranceOffsetPx: slideEntranceOffsetPxProp,\n ...rest\n}) => {\n const { open, setOpen, depth } = useDialog();\n\n const isNarrowViewport = useDialogMobileBottomSheetViewport();\n\n const useMobileBottomSheet = useMemo(\n () => mobileBottomSheet !== false && isNarrowViewport,\n [mobileBottomSheet, isNarrowViewport],\n );\n\n const useMobileBottomSheetChrome = useMemo(\n () => mobileBottomSheet !== false && size !== \"full\",\n [mobileBottomSheet, size],\n );\n\n const slideOffsetPx = useMemo(\n () => slideEntranceOffsetPxProp ?? SLIDE_ENTRANCE_OFFSET_PX[size],\n [slideEntranceOffsetPxProp, size],\n );\n\n const useBottomSheetMotion = useMobileBottomSheet;\n const useDesktopSlideEntrance = slideEntrance && !useBottomSheetMotion;\n\n const panelCloseMs = useMemo(\n () =>\n useBottomSheetMotion\n ? DIALOG_MOTION_MS\n : slideEntrance\n ? DIALOG_MOTION_MS\n : duration,\n [useBottomSheetMotion, slideEntrance, duration],\n );\n\n const { shouldRender, isAnimating } = useDialogRenderLifecycle(\n open,\n panelCloseMs,\n );\n\n const slideMotionEasing = useMemo(\n () => (open ? DIALOG_ENTRY_MOTION_EASING : DIALOG_EXIT_MOTION_EASING),\n [open],\n );\n\n const portalZIndex = useMemo(\n () => DIALOG_Z_BASE + (depth - 1) * DIALOG_Z_STEP,\n [depth],\n );\n\n const handleOverlayClick = useCallback(() => {\n if (closeOnOverlayClick) setOpen(false);\n }, [closeOnOverlayClick, setOpen]);\n\n useEffect(() => {\n if (!open || typeof document === \"undefined\") return;\n\n const closer = () => setOpen(false);\n dialogPushEscapeCloser(closer);\n\n dialogBodyScrollLockCount += 1;\n if (dialogBodyScrollLockCount === 1) {\n document.body.style.overflow = \"hidden\";\n }\n\n return () => {\n dialogPopEscapeCloser(closer);\n dialogBodyScrollLockCount -= 1;\n if (dialogBodyScrollLockCount <= 0) {\n dialogBodyScrollLockCount = 0;\n document.body.style.overflow = \"\";\n }\n };\n }, [open, setOpen]);\n\n const rootClassName = useMemo(\n () =>\n cn(\n \"fixed inset-0 flex\",\n size === \"full\"\n ? \"h-dvh w-full flex-col p-0\"\n : mobileBottomSheet !== false\n ? \"max-lg:items-end max-lg:justify-center max-lg:p-0 lg:items-center lg:justify-center lg:p-4\"\n : \"items-center justify-center p-4\",\n ),\n [size, mobileBottomSheet],\n );\n\n const rootStyle = useMemo(\n (): React.CSSProperties => ({ zIndex: portalZIndex }),\n [portalZIndex],\n );\n\n const overlayClassName = useMemo(\n () =>\n cn(\n \"fixed inset-0 bg-black/40 dark:bg-black/60\",\n !useBottomSheetMotion && !slideEntrance && \"transition-opacity ease-in-out\",\n isAnimating ? \"opacity-100\" : \"opacity-0\",\n ),\n [useBottomSheetMotion, slideEntrance, isAnimating],\n );\n\n const overlayStyle = useMemo((): React.CSSProperties => {\n const style: React.CSSProperties = {\n transitionDuration: `${panelCloseMs}ms`,\n };\n if (useBottomSheetMotion || slideEntrance) {\n style.transitionProperty = \"opacity\";\n style.transitionTimingFunction = slideMotionEasing;\n }\n return style;\n }, [panelCloseMs, useBottomSheetMotion, slideEntrance, slideMotionEasing]);\n\n const panelClassName = useMemo(() => {\n const sizeKey = size === \"full\" ? null : size;\n return cn(\n \"bg-background relative z-10 w-full overflow-hidden shadow-2xl\",\n size === \"full\"\n ? \"flex min-h-0 flex-1 flex-col max-w-none rounded-none\"\n : cn(\n \"border-primary/10 border\",\n useMobileBottomSheetChrome\n ? \"max-lg:max-h-[min(90dvh,calc(100dvh-env(safe-area-inset-bottom,0px)))] max-lg:rounded-t-2xl max-lg:rounded-b-none max-lg:border-x-0 max-lg:border-b-0 max-lg:border-t max-lg:border-primary/10 lg:rounded-2xl\"\n : \"rounded-2xl\",\n sizeKey &&\n (useMobileBottomSheetChrome\n ? SIZE_CLASSES_LG_ONLY[sizeKey]\n : SIZE_CLASSES[sizeKey]),\n ),\n !useBottomSheetMotion &&\n !useDesktopSlideEntrance &&\n cn(\n \"transition-all ease-in-out\",\n isAnimating ? \"scale-100 opacity-100\" : \"scale-95 opacity-0\",\n ),\n className,\n );\n }, [\n size,\n useMobileBottomSheetChrome,\n useBottomSheetMotion,\n useDesktopSlideEntrance,\n isAnimating,\n className,\n ]);\n\n const panelStyle = useMemo((): React.CSSProperties => {\n const base = { ...rest.style };\n if (useBottomSheetMotion) {\n return {\n ...base,\n transform: isAnimating ? \"translateY(0)\" : \"translateY(100%)\",\n opacity: isAnimating ? 1 : 0,\n transitionProperty: \"transform, opacity\",\n transitionDuration: `${DIALOG_MOTION_MS}ms`,\n transitionTimingFunction: slideMotionEasing,\n };\n }\n if (useDesktopSlideEntrance) {\n return {\n ...base,\n transform: isAnimating\n ? \"translateY(0)\"\n : `translateY(${slideOffsetPx}px)`,\n opacity: isAnimating ? 1 : 0,\n transitionProperty: \"transform, opacity\",\n transitionDuration: `${DIALOG_MOTION_MS}ms`,\n transitionTimingFunction: slideMotionEasing,\n };\n }\n return {\n ...base,\n transitionDuration: `${duration}ms`,\n };\n }, [\n rest.style,\n useBottomSheetMotion,\n useDesktopSlideEntrance,\n isAnimating,\n slideOffsetPx,\n slideMotionEasing,\n duration,\n ]);\n\n if (!shouldRender) return null;\n\n return createPortal(\n <div className={rootClassName} style={rootStyle}>\n <div\n className={overlayClassName}\n style={overlayStyle}\n onClick={handleOverlayClick}\n />\n\n <div {...rest} className={panelClassName} style={panelStyle}>\n {children}\n\n {showClose && (\n <DialogCloseButton\n className={cn(\"absolute top-4 right-4 md:top-4 md:right-4\")}\n />\n )}\n </div>\n </div>,\n document.body,\n );\n};\n\nexport const DialogHeader: React.FC<\n React.HTMLAttributes<HTMLDivElement> & { fixed?: boolean }\n> = ({ className, fixed, ...props }) => {\n return (\n <div\n className={cn(\n \"flex flex-col space-y-1.5 p-6 text-center sm:text-left\",\n fixed && \"bg-background border-primary/10 sticky top-0 z-10 border-b\",\n className,\n )}\n {...props}\n />\n );\n};\n\nexport const DialogFooter: React.FC<\n React.HTMLAttributes<HTMLDivElement> & { fixed?: boolean }\n> = ({ className, fixed, ...props }) => {\n return (\n <div\n className={cn(\n \"flex flex-col-reverse p-6 sm:flex-row sm:justify-end sm:space-x-2\",\n fixed &&\n \"bg-background border-primary/10 sticky bottom-0 z-10 border-t pb-[max(1.5rem,env(safe-area-inset-bottom))]\",\n className,\n )}\n {...props}\n />\n );\n};\n\nexport const DialogTitle: React.FC<\n React.HTMLAttributes<HTMLHeadingElement>\n> = ({ className, ...props }) => {\n return (\n <h3\n className={cn(\n \"text-primary text-xl leading-none font-semibold\",\n className,\n )}\n {...props}\n />\n );\n};\n\nexport const DialogDescription: React.FC<\n React.HTMLAttributes<HTMLParagraphElement>\n> = ({ className, ...props }) => {\n return (\n <p className={cn(\"text-muted-foreground text-sm\", className)} {...props} />\n );\n};\n"]}
@@ -3,6 +3,25 @@ import React__default from 'react';
3
3
  import { ChevronDown } from 'lucide-react';
4
4
  import { ButtonProps } from './button.js';
5
5
 
6
+ /**
7
+ * Narrow-viewport (≤1024px) bottom-sheet options for {@link DropdownContent}
8
+ * and {@link DropdownSubContent}. `className` merges onto the same panel as
9
+ * `DropdownContent`’s root `className` (after base sheet styles); use it for
10
+ * overrides such as `max-h-[…]`.
11
+ */
12
+ interface DropdownMobileSheetOptions {
13
+ /** When `false`, keep the floating menu on narrow viewports. Default `true`. */
14
+ sheet?: boolean;
15
+ /** Optional header title on the same row as the close control. */
16
+ title?: string;
17
+ /** Extra classes on the sheet panel (merged after base sheet styles, before root `className`). */
18
+ className?: string;
19
+ /**
20
+ * Extra classes on the scrollable body below the header (merged after the
21
+ * default `pb-20` and safe-area bottom padding).
22
+ */
23
+ contentClassName?: string;
24
+ }
6
25
  type Side = "top" | "bottom" | "left" | "right";
7
26
  type Align = "start" | "center" | "end";
8
27
  interface DropdownProps {
@@ -41,12 +60,11 @@ interface DropdownContentProps extends React__default.HTMLAttributes<HTMLDivElem
41
60
  /** Loop keyboard focus at list boundaries */
42
61
  loop?: boolean;
43
62
  /**
44
- * On viewports ≤1024px (same as `Dialog` mobile bottom sheet), render as a
45
- * bottom sheet instead of a floating menu. Defaults to true.
63
+ * Mobile (≤1024px) bottom-sheet configuration (`sheet`, `title`, panel
64
+ * `className`, optional scroll body `contentClassName` after default `pb-20`
65
+ * + safe area).
46
66
  */
47
- mobileSheet?: boolean;
48
- /** Title shown in the mobile sheet header (optional) */
49
- mobileTitle?: string;
67
+ mobileOptions?: DropdownMobileSheetOptions;
50
68
  /**
51
69
  * Mobile bottom sheet only. When `true` (default), panel motion matches Dialog
52
70
  * `slideEntrance`: `translateY(slideEntranceOffsetPx)` + opacity, with the same
@@ -87,8 +105,16 @@ interface DropdownRadioItemProps extends Omit<DropdownItemProps, "icon"> {
87
105
  value: string;
88
106
  }
89
107
  declare const DropdownRadioItem: React__default.FC<DropdownRadioItemProps>;
108
+ /**
109
+ * `openOnHover` (default `true`) controls whether moving a mouse onto the
110
+ * `DropdownSubTrigger` (or off the `DropdownSubContent`) opens / closes the
111
+ * sub. Set to `false` for menus rendered inside a scrollable container, where
112
+ * rows passing under a stationary cursor would otherwise toggle the sub on
113
+ * every scroll tick. Click, Enter, ArrowRight always open regardless.
114
+ */
90
115
  declare const DropdownSub: React__default.FC<{
91
116
  children: React__default.ReactNode;
117
+ openOnHover?: boolean;
92
118
  }>;
93
119
  declare const DropdownSubTrigger: React__default.FC<React__default.HTMLAttributes<HTMLDivElement> & {
94
120
  icon?: React__default.ReactNode;
@@ -98,12 +124,11 @@ declare const DropdownSubTrigger: React__default.FC<React__default.HTMLAttribute
98
124
  declare const DropdownSubContent: React__default.FC<React__default.HTMLAttributes<HTMLDivElement> & {
99
125
  duration?: number;
100
126
  viewportPadding?: number;
101
- /** Same breakpoint and sheet as {@link DropdownContent}; default true. */
102
- mobileSheet?: boolean;
103
- mobileTitle?: string;
127
+ /** Same meaning as {@link DropdownContent}. */
128
+ mobileOptions?: DropdownMobileSheetOptions;
104
129
  /** Same as {@link DropdownContent} slideEntrance; default true. */
105
130
  slideEntrance?: boolean;
106
131
  slideEntranceOffsetPx?: number;
107
132
  }>;
108
133
 
109
- export { Dropdown, DropdownCheckboxItem, DropdownChevron, DropdownContent, DropdownItem, DropdownLabel, DropdownMobileClose, type DropdownMobileCloseProps, DropdownRadioGroup, DropdownRadioItem, DropdownSeparator, DropdownSub, DropdownSubContent, DropdownSubTrigger, DropdownTrigger, type DropdownTriggerProps };
134
+ export { Dropdown, DropdownCheckboxItem, DropdownChevron, DropdownContent, DropdownItem, DropdownLabel, DropdownMobileClose, type DropdownMobileCloseProps, type DropdownMobileSheetOptions, DropdownRadioGroup, DropdownRadioItem, DropdownSeparator, DropdownSub, DropdownSubContent, DropdownSubTrigger, DropdownTrigger, type DropdownTriggerProps };