@andreagiugni/tailwind-dashboard-ui 1.0.0 → 1.0.2
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.
- package/README.md +7 -4
- package/dist/{Editor-CHBOfOWf.d.cts → Editor-DEv5IZeb.d.cts} +2 -0
- package/dist/{Editor-CHBOfOWf.d.ts → Editor-DEv5IZeb.d.ts} +2 -0
- package/dist/{chunk-YSON6RJC.cjs → chunk-5DEBWZY7.cjs} +178 -43
- package/dist/chunk-5DEBWZY7.cjs.map +1 -0
- package/dist/{chunk-S4ADL5B7.cjs → chunk-6NC3VS54.cjs} +35 -115
- package/dist/chunk-6NC3VS54.cjs.map +1 -0
- package/dist/{chunk-DXUWFHPF.js → chunk-OYBYDSNI.js} +35 -115
- package/dist/chunk-OYBYDSNI.js.map +1 -0
- package/dist/{chunk-QGLKSM7S.js → chunk-PYZG7RY7.js} +179 -44
- package/dist/chunk-PYZG7RY7.js.map +1 -0
- package/dist/{chunk-U2SEFEOB.js → chunk-W3TC7P3Z.js} +8 -21
- package/dist/chunk-W3TC7P3Z.js.map +1 -0
- package/dist/{chunk-553PIOZS.cjs → chunk-ZQ6544NY.cjs} +8 -21
- package/dist/chunk-ZQ6544NY.cjs.map +1 -0
- package/dist/components/Calendar/Calendar.cjs +2 -2
- package/dist/components/Calendar/Calendar.js +1 -1
- package/dist/components/ColorPicker/ColorPicker.cjs +2 -2
- package/dist/components/ColorPicker/ColorPicker.js +1 -1
- package/dist/components/Editor/Editor.cjs +2 -2
- package/dist/components/Editor/Editor.d.cts +1 -1
- package/dist/components/Editor/Editor.d.ts +1 -1
- package/dist/components/Editor/Editor.js +1 -1
- package/dist/index.cjs +64 -558
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +60 -554
- package/dist/index.js.map +1 -1
- package/package.json +3 -1
- package/dist/chunk-553PIOZS.cjs.map +0 -1
- package/dist/chunk-DXUWFHPF.js.map +0 -1
- package/dist/chunk-QGLKSM7S.js.map +0 -1
- package/dist/chunk-S4ADL5B7.cjs.map +0 -1
- package/dist/chunk-U2SEFEOB.js.map +0 -1
- package/dist/chunk-YSON6RJC.cjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Editor/Editor.tsx"],"names":["SuperscriptIcon","SubscriptIcon","LinkIcon","editor","active"],"mappings":";;;;;;;;;;;AAmFA,IAAM,eAAA,GAAoC;AAAA,EACxC,MAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA,aAAA;AAAA,EACA,WAAA;AAAA,EACA,SAAA;AAAA,EACA,UAAA;AAAA,EACA,UAAA;AAAA,EACA,UAAA;AAAA,EACA,SAAA;AAAA,EACA,YAAA;AAAA,EACA,aAAA;AAAA,EACA,YAAA;AAAA,EACA,WAAA;AAAA,EACA,SAAA;AAAA,EACA,MAAA;AAAA,EACA,SAAA;AAAA,EACA,MAAA;AAAA,EACA;AACF,CAAA;AAWA,IAAM,QAAA,GAAkE;AAAA,EACtE,IAAA,EAAM;AAAA,IACJ,sBAAM,GAAA,CAAC,IAAA,EAAA,EAAK,SAAA,EAAU,mBAAA,EAAoB,eAAY,MAAA,EAAO,CAAA;AAAA,IAC7D,KAAA,EAAO,MAAA;AAAA,IACP,OAAA,EAAS,CAAC,CAAA,KAAM,CAAA,CAAE,KAAA,GAAQ,KAAA,EAAM,CAAE,UAAA,EAAW,CAAE,GAAA,EAAI;AAAA,IACnD,QAAA,EAAU,CAAC,CAAA,KAAM,CAAA,CAAE,SAAS,MAAM;AAAA,GACpC;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,sBAAM,GAAA,CAAC,MAAA,EAAA,EAAO,SAAA,EAAU,mBAAA,EAAoB,eAAY,MAAA,EAAO,CAAA;AAAA,IAC/D,KAAA,EAAO,QAAA;AAAA,IACP,OAAA,EAAS,CAAC,CAAA,KAAM,CAAA,CAAE,KAAA,GAAQ,KAAA,EAAM,CAAE,YAAA,EAAa,CAAE,GAAA,EAAI;AAAA,IACrD,QAAA,EAAU,CAAC,CAAA,KAAM,CAAA,CAAE,SAAS,QAAQ;AAAA,GACtC;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,sBAAM,GAAA,CAAC,aAAA,EAAA,EAAc,SAAA,EAAU,mBAAA,EAAoB,eAAY,MAAA,EAAO,CAAA;AAAA,IACtE,KAAA,EAAO,eAAA;AAAA,IACP,OAAA,EAAS,CAAC,CAAA,KAAM,CAAA,CAAE,KAAA,GAAQ,KAAA,EAAM,CAAE,YAAA,EAAa,CAAE,GAAA,EAAI;AAAA,IACrD,QAAA,EAAU,CAAC,CAAA,KAAM,CAAA,CAAE,SAAS,QAAQ;AAAA,GACtC;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,sBAAM,GAAA,CAAC,IAAA,EAAA,EAAK,SAAA,EAAU,mBAAA,EAAoB,eAAY,MAAA,EAAO,CAAA;AAAA,IAC7D,KAAA,EAAO,aAAA;AAAA,IACP,OAAA,EAAS,CAAC,CAAA,KAAM,CAAA,CAAE,KAAA,GAAQ,KAAA,EAAM,CAAE,UAAA,EAAW,CAAE,GAAA,EAAI;AAAA,IACnD,QAAA,EAAU,CAAC,CAAA,KAAM,CAAA,CAAE,SAAS,MAAM;AAAA,GACpC;AAAA,EACA,WAAA,EAAa;AAAA,IACX,sBAAM,GAAA,CAACA,aAAA,EAAA,EAAgB,SAAA,EAAU,mBAAA,EAAoB,eAAY,MAAA,EAAO,CAAA;AAAA,IACxE,KAAA,EAAO,aAAA;AAAA,IACP,OAAA,EAAS,CAAC,CAAA,KAAM,CAAA,CAAE,KAAA,GAAQ,KAAA,EAAM,CAAE,iBAAA,EAAkB,CAAE,GAAA,EAAI;AAAA,IAC1D,QAAA,EAAU,CAAC,CAAA,KAAM,CAAA,CAAE,SAAS,aAAa;AAAA,GAC3C;AAAA,EACA,SAAA,EAAW;AAAA,IACT,sBAAM,GAAA,CAACC,WAAA,EAAA,EAAc,SAAA,EAAU,mBAAA,EAAoB,eAAY,MAAA,EAAO,CAAA;AAAA,IACtE,KAAA,EAAO,WAAA;AAAA,IACP,OAAA,EAAS,CAAC,CAAA,KAAM,CAAA,CAAE,KAAA,GAAQ,KAAA,EAAM,CAAE,eAAA,EAAgB,CAAE,GAAA,EAAI;AAAA,IACxD,QAAA,EAAU,CAAC,CAAA,KAAM,CAAA,CAAE,SAAS,WAAW;AAAA,GACzC;AAAA,EACA,QAAA,EAAU;AAAA,IACR,sBAAM,GAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAU,mBAAA,EAAoB,eAAY,MAAA,EAAO,CAAA;AAAA,IACjE,KAAA,EAAO,WAAA;AAAA,IACP,OAAA,EAAS,CAAC,CAAA,KAAM,CAAA,CAAE,OAAM,CAAE,KAAA,EAAM,CAAE,aAAA,CAAc,EAAE,KAAA,EAAO,CAAA,EAAG,EAAE,GAAA,EAAI;AAAA,IAClE,QAAA,EAAU,CAAC,CAAA,KAAM,CAAA,CAAE,SAAS,SAAA,EAAW,EAAE,KAAA,EAAO,CAAA,EAAG;AAAA,GACrD;AAAA,EACA,QAAA,EAAU;AAAA,IACR,sBAAM,GAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAU,mBAAA,EAAoB,eAAY,MAAA,EAAO,CAAA;AAAA,IACjE,KAAA,EAAO,WAAA;AAAA,IACP,OAAA,EAAS,CAAC,CAAA,KAAM,CAAA,CAAE,OAAM,CAAE,KAAA,EAAM,CAAE,aAAA,CAAc,EAAE,KAAA,EAAO,CAAA,EAAG,EAAE,GAAA,EAAI;AAAA,IAClE,QAAA,EAAU,CAAC,CAAA,KAAM,CAAA,CAAE,SAAS,SAAA,EAAW,EAAE,KAAA,EAAO,CAAA,EAAG;AAAA,GACrD;AAAA,EACA,QAAA,EAAU;AAAA,IACR,sBAAM,GAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAU,mBAAA,EAAoB,eAAY,MAAA,EAAO,CAAA;AAAA,IACjE,KAAA,EAAO,WAAA;AAAA,IACP,OAAA,EAAS,CAAC,CAAA,KAAM,CAAA,CAAE,OAAM,CAAE,KAAA,EAAM,CAAE,aAAA,CAAc,EAAE,KAAA,EAAO,CAAA,EAAG,EAAE,GAAA,EAAI;AAAA,IAClE,QAAA,EAAU,CAAC,CAAA,KAAM,CAAA,CAAE,SAAS,SAAA,EAAW,EAAE,KAAA,EAAO,CAAA,EAAG;AAAA,GACrD;AAAA,EACA,UAAA,EAAY;AAAA,IACV,sBAAM,GAAA,CAAC,IAAA,EAAA,EAAK,SAAA,EAAU,mBAAA,EAAoB,eAAY,MAAA,EAAO,CAAA;AAAA,IAC7D,KAAA,EAAO,aAAA;AAAA,IACP,OAAA,EAAS,CAAC,CAAA,KAAM,CAAA,CAAE,KAAA,GAAQ,KAAA,EAAM,CAAE,gBAAA,EAAiB,CAAE,GAAA,EAAI;AAAA,IACzD,QAAA,EAAU,CAAC,CAAA,KAAM,CAAA,CAAE,SAAS,YAAY;AAAA,GAC1C;AAAA,EACA,WAAA,EAAa;AAAA,IACX,sBAAM,GAAA,CAAC,WAAA,EAAA,EAAY,SAAA,EAAU,mBAAA,EAAoB,eAAY,MAAA,EAAO,CAAA;AAAA,IACpE,KAAA,EAAO,cAAA;AAAA,IACP,OAAA,EAAS,CAAC,CAAA,KAAM,CAAA,CAAE,KAAA,GAAQ,KAAA,EAAM,CAAE,iBAAA,EAAkB,CAAE,GAAA,EAAI;AAAA,IAC1D,QAAA,EAAU,CAAC,CAAA,KAAM,CAAA,CAAE,SAAS,aAAa;AAAA,GAC3C;AAAA,EACA,UAAA,EAAY;AAAA,IACV,sBAAM,GAAA,CAAC,KAAA,EAAA,EAAM,SAAA,EAAU,mBAAA,EAAoB,eAAY,MAAA,EAAO,CAAA;AAAA,IAC9D,KAAA,EAAO,YAAA;AAAA,IACP,OAAA,EAAS,CAAC,CAAA,KAAM,CAAA,CAAE,KAAA,GAAQ,KAAA,EAAM,CAAE,gBAAA,EAAiB,CAAE,GAAA,EAAI;AAAA,IACzD,QAAA,EAAU,CAAC,CAAA,KAAM,CAAA,CAAE,SAAS,YAAY;AAAA,GAC1C;AAAA,EACA,SAAA,EAAW;AAAA,IACT,sBAAM,GAAA,CAAC,OAAA,EAAA,EAAQ,SAAA,EAAU,mBAAA,EAAoB,eAAY,MAAA,EAAO,CAAA;AAAA,IAChE,KAAA,EAAO,YAAA;AAAA,IACP,OAAA,EAAS,CAAC,CAAA,KAAM,CAAA,CAAE,KAAA,GAAQ,KAAA,EAAM,CAAE,eAAA,EAAgB,CAAE,GAAA,EAAI;AAAA,IACxD,QAAA,EAAU,CAAC,CAAA,KAAM,CAAA,CAAE,SAAS,WAAW;AAAA,GACzC;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,sBAAM,GAAA,CAACC,MAAA,EAAA,EAAS,SAAA,EAAU,mBAAA,EAAoB,eAAY,MAAA,EAAO,CAAA;AAAA,IACjE,KAAA,EAAO,MAAA;AAAA;AAAA;AAAA,IAGP,OAAA,EAAS,CAAC,CAAA,KAAM;AACd,MAAA,MAAM,IAAA,GAAQ,CAAA,CAAE,aAAA,CAAc,MAAM,EAAwB,IAAA,IAAQ,EAAA;AACpE,MAAA,MAAM,GAAA,GACJ,OAAO,MAAA,KAAW,WAAA,GACd,OAAO,MAAA,CAAO,WAAA,EAAa,IAAI,CAAA,GAC/B,IAAA;AACN,MAAA,IAAI,QAAQ,IAAA,EAAM;AAClB,MAAA,IAAI,QAAQ,EAAA,EAAI;AACd,QAAA,CAAA,CAAE,KAAA,GAAQ,KAAA,EAAM,CAAE,gBAAgB,MAAM,CAAA,CAAE,SAAA,EAAU,CAAE,GAAA,EAAI;AAC1D,QAAA;AAAA,MACF;AACA,MAAA,CAAA,CAAE,KAAA,EAAM,CAAE,KAAA,EAAM,CAAE,eAAA,CAAgB,MAAM,CAAA,CAAE,OAAA,CAAQ,EAAE,IAAA,EAAM,GAAA,EAAK,EAAE,GAAA,EAAI;AAAA,IACvE,CAAA;AAAA,IACA,QAAA,EAAU,CAAC,CAAA,KAAM,CAAA,CAAE,SAAS,MAAM;AAAA,GACpC;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,sBAAM,GAAA,CAAC,KAAA,EAAA,EAAM,SAAA,EAAU,mBAAA,EAAoB,eAAY,MAAA,EAAO,CAAA;AAAA,IAC9D,KAAA,EAAO,MAAA;AAAA,IACP,OAAA,EAAS,CAAC,CAAA,KAAM,CAAA,CAAE,KAAA,GAAQ,KAAA,EAAM,CAAE,IAAA,EAAK,CAAE,GAAA,EAAI;AAAA,IAC7C,YAAY,CAAC,CAAA,KAAM,CAAC,CAAA,CAAE,GAAA,GAAM,IAAA;AAAK,GACnC;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,sBAAM,GAAA,CAAC,KAAA,EAAA,EAAM,SAAA,EAAU,mBAAA,EAAoB,eAAY,MAAA,EAAO,CAAA;AAAA,IAC9D,KAAA,EAAO,MAAA;AAAA,IACP,OAAA,EAAS,CAAC,CAAA,KAAM,CAAA,CAAE,KAAA,GAAQ,KAAA,EAAM,CAAE,IAAA,EAAK,CAAE,GAAA,EAAI;AAAA,IAC7C,YAAY,CAAC,CAAA,KAAM,CAAC,CAAA,CAAE,GAAA,GAAM,IAAA;AAAK;AAErC,CAAA;AAEA,IAAM,eAAA,GAAkB,CAAC,MAAA,KACvB,EAAA;AAAA,EACE,qFAAA;AAAA,EACA,uFAAA;AAAA,EACA,wEAAA;AAAA,EACA,MAAA,IACE;AACJ,CAAA;AAEF,IAAM,UAAoB,sBACxB,GAAA;AAAA,EAAC,MAAA;AAAA,EAAA;AAAA,IACC,aAAA,EAAW,IAAA;AAAA,IACX,SAAA,EAAU;AAAA;AACZ,CAAA;AAUK,IAAM,SAAgC,CAAC;AAAA,EAC5C,OAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA,GAAc,qBAAA;AAAA,EACd,QAAA,GAAW,IAAA;AAAA,EACX,OAAA,GAAU,eAAA;AAAA,EACV,IAAA,GAAO,CAAA;AAAA,EACP,SAAA;AAAA,EACA;AACF,CAAA,KAAM;AACJ,EAAA,MAAM,cAAc,IAAA,CAAK,GAAA,CAAI,GAAG,IAAA,CAAK,KAAA,CAAM,IAAI,CAAC,CAAA;AAChD,EAAA,MAAM,SAAA,GAAY,CAAA,EAAG,WAAA,GAAc,GAAG,CAAA,GAAA,CAAA;AACtC,EAAA,MAAM,iBAAA,GAAoB;AAAA,IACxB,0BAAA,EAA4B;AAAA,GAC9B;AAEA,EAAA,MAAM,SAAS,SAAA,CAAU;AAAA,IACvB,UAAA,EAAY;AAAA,MACV,UAAA;AAAA,MACA,IAAA,CAAK,SAAA,CAAU,EAAE,WAAA,EAAa,OAAO,CAAA;AAAA,MACrC,WAAA,CAAY,SAAA,CAAU,EAAE,WAAA,EAAa,CAAA;AAAA,MACrC,WAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,OAAA;AAAA,IACA,QAAA;AAAA,IACA,iBAAA,EAAmB,KAAA;AAAA,IACnB,WAAA,EAAa;AAAA,MACX,UAAA,EAAY;AAAA,QACV,KAAA,EAAO;AAAA;AACT,KACF;AAAA,IACA,QAAA,EAAU,CAAC,EAAE,MAAA,EAAAC,SAAO,KAAM,QAAA,GAAWA,OAAAA,CAAO,OAAA,EAAS;AAAA,GACtD,CAAA;AAGD,EAAA,KAAA,CAAM,UAAU,MAAM;AACpB,IAAA,MAAA,EAAQ,YAAY,QAAQ,CAAA;AAAA,EAC9B,CAAA,EAAG,CAAC,MAAA,EAAQ,QAAQ,CAAC,CAAA;AAGrB,EAAA,IAAI,CAAC,MAAA,EAAQ;AACX,IAAA,uBACE,IAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,EAAA;AAAA,UACT,+EAAA;AAAA,UACA;AAAA,SACF;AAAA,QAEC,QAAA,EAAA;AAAA,UAAA,QAAA,oBACC,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,oFAAA,EAAqF,CAAA;AAAA,0BAEtG,GAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAU,wFAAA;AAAA,cACV,KAAA,EAAO;AAAA;AAAA;AACT;AAAA;AAAA,KACF;AAAA,EAEJ;AAEA,EAAA,MAAM,gBAAgB,MAAM;AAC1B,IAAA,IAAI,UAAA,GAAa,CAAA;AACjB,IAAA,OAAO,OAAA,CAAQ,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,KAAU;AAElC,MAAA,IAAI,OAAO,SAAS,QAAA,EAAU;AAC5B,QAAA,MAAMC,OAAAA,GAAS,IAAA,CAAK,QAAA,GAAW,MAAM,CAAA,IAAK,KAAA;AAC1C,QAAA,uBACE,GAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YAEC,IAAA,EAAK,QAAA;AAAA,YACL,OAAO,IAAA,CAAK,KAAA;AAAA,YACZ,cAAY,IAAA,CAAK,KAAA;AAAA,YACjB,cAAA,EAAcA,OAAAA;AAAA,YACd,OAAA,EAAS,MAAM,IAAA,CAAK,OAAA,CAAQ,MAAM,CAAA;AAAA,YAClC,SAAA,EAAW,gBAAgBA,OAAM,CAAA;AAAA,YAEhC,QAAA,EAAA,IAAA,CAAK;AAAA,WAAA;AAAA,UARD,IAAA,CAAK,EAAA,IAAM,CAAA,OAAA,EAAU,KAAK,CAAA;AAAA,SASjC;AAAA,MAEJ;AAEA,MAAA,IAAI,SAAS,SAAA,EAAW;AACtB,QAAA,uBAAO,GAAA,CAAC,OAAA,EAAA,EAAA,EAAa,CAAA,QAAA,EAAW,UAAA,EAAY,CAAA,CAAI,CAAA;AAAA,MAClD;AAEA,MAAA,MAAM,GAAA,GAAM,SAAS,IAAI,CAAA;AACzB,MAAA,IAAI,CAAC,KAAK,OAAO,IAAA;AACjB,MAAA,MAAM,MAAA,GAAS,GAAA,CAAI,QAAA,GAAW,MAAM,CAAA,IAAK,KAAA;AACzC,MAAA,MAAM,QAAA,GAAW,GAAA,CAAI,UAAA,GAAa,MAAM,CAAA,IAAK,KAAA;AAC7C,MAAA,uBACE,GAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UAEC,IAAA,EAAK,QAAA;AAAA,UACL,OAAO,GAAA,CAAI,KAAA;AAAA,UACX,cAAY,GAAA,CAAI,KAAA;AAAA,UAChB,cAAA,EAAc,MAAA;AAAA,UACd,QAAA;AAAA,UACA,OAAA,EAAS,MAAM,GAAA,CAAI,OAAA,CAAQ,MAAM,CAAA;AAAA,UACjC,SAAA,EAAW,gBAAgB,MAAM,CAAA;AAAA,UAEhC,QAAA,EAAA,GAAA,CAAI;AAAA,SAAA;AAAA,QATA;AAAA,OAUP;AAAA,IAEJ,CAAC,CAAA;AAAA,EACH,CAAA;AAEA,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,6HAAA;AAAA,QACA;AAAA,OACF;AAAA,MAEC,QAAA,EAAA;AAAA,QAAA,QAAA,oBACC,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,+HAAA,EACZ,yBAAc,EACjB,CAAA;AAAA,wBAEF,GAAA;AAAA,UAAC,aAAA;AAAA,UAAA;AAAA,YACC,MAAA;AAAA,YACA,KAAA,EAAO,iBAAA;AAAA,YACP,SAAA,EAAW,EAAA;AAAA,cACT,0FAAA;AAAA,cACA,cAAA;AAAA;AAAA,cAEA,sFAAA;AAAA,cACA,6GAAA;AAAA,cACA,4GAAA;AAAA,cACA,4GAAA;AAAA,cACA,kCAAA;AAAA,cACA,0CAAA;AAAA,cACA,6CAAA;AAAA,cACA,2BAAA;AAAA,cACA,2FAAA;AAAA,cACA,2NAAA;AAAA,cACA,oMAAA;AAAA,cACA,0KAAA;AAAA,cACA,wEAAA;AAAA,cACA,gEAAA;AAAA;AAAA,cAEA,4VAAA;AAAA,cACA;AAAA;AACF;AAAA;AACF;AAAA;AAAA,GACF;AAEJ","file":"chunk-OYBYDSNI.js","sourcesContent":["\"use client\";\nimport React from \"react\";\nimport { useEditor, EditorContent, type Editor as TiptapEditor } from \"@tiptap/react\";\nimport StarterKit from \"@tiptap/starter-kit\";\nimport Link from \"@tiptap/extension-link\";\nimport Placeholder from \"@tiptap/extension-placeholder\";\nimport Superscript from \"@tiptap/extension-superscript\";\nimport Subscript from \"@tiptap/extension-subscript\";\nimport {\n Bold,\n Code,\n CodeXml,\n Heading1,\n Heading2,\n Heading3,\n Italic,\n Link as LinkIcon,\n List,\n ListOrdered,\n Quote,\n Redo2,\n Strikethrough,\n Subscript as SubscriptIcon,\n Superscript as SuperscriptIcon,\n Undo2,\n} from \"lucide-react\";\nimport { cn } from \"../../lib/cn\";\nimport { type ColorOverrideProps } from \"../../lib/styleOverride\";\n\n/** Built-in toolbar tool ids. */\nexport type ToolbarItemId =\n | \"bold\"\n | \"italic\"\n | \"strike\"\n | \"code\"\n | \"superscript\"\n | \"subscript\"\n | \"heading1\"\n | \"heading2\"\n | \"heading3\"\n | \"bulletList\"\n | \"orderedList\"\n | \"blockquote\"\n | \"codeBlock\"\n | \"link\"\n | \"undo\"\n | \"redo\"\n | \"divider\";\n\n/** A fully custom toolbar button. */\nexport interface CustomToolbarItem {\n id: string;\n icon: React.ReactNode;\n title: string;\n onClick: (editor: TiptapEditor) => void;\n isActive?: (editor: TiptapEditor) => boolean;\n}\n\n/** A toolbar entry: either a built-in id or a custom button object. */\nexport type EditorToolItem = ToolbarItemId | CustomToolbarItem;\n\n/** @deprecated Alias kept for naming flexibility. Use `EditorToolItem`. */\nexport type ToolbarItem = EditorToolItem;\n\nexport interface EditorProps extends ColorOverrideProps {\n /** Initial HTML content. */\n content?: string;\n /** Fires with the current HTML whenever the document changes. */\n onChange?: (html: string) => void;\n /** Placeholder shown when the document is empty. */\n placeholder?: string;\n /** When false the editor is read-only and the toolbar is hidden. */\n editable?: boolean;\n /** Ordered toolbar configuration. Defaults to a sensible full set. */\n toolbar?: EditorToolItem[];\n /** Minimum visible text rows. Drives the editor content height. Default: 8. */\n rows?: number;\n /** Wrapper class. */\n className?: string;\n /** Class for the prose content area. */\n editorClassName?: string;\n}\n\nconst DEFAULT_TOOLBAR: EditorToolItem[] = [\n \"bold\",\n \"italic\",\n \"strike\",\n \"code\",\n \"superscript\",\n \"subscript\",\n \"divider\",\n \"heading1\",\n \"heading2\",\n \"heading3\",\n \"divider\",\n \"bulletList\",\n \"orderedList\",\n \"blockquote\",\n \"codeBlock\",\n \"divider\",\n \"link\",\n \"divider\",\n \"undo\",\n \"redo\",\n];\n\ninterface BuiltInDef {\n icon: React.ReactNode;\n title: string;\n onClick: (editor: TiptapEditor) => void;\n isActive?: (editor: TiptapEditor) => boolean;\n /** Disable callback (used for undo/redo). */\n isDisabled?: (editor: TiptapEditor) => boolean;\n}\n\nconst BUILTINS: Record<Exclude<ToolbarItemId, \"divider\">, BuiltInDef> = {\n bold: {\n icon: <Bold className=\"h-[18px] w-[18px]\" aria-hidden=\"true\" />,\n title: \"Bold\",\n onClick: (e) => e.chain().focus().toggleBold().run(),\n isActive: (e) => e.isActive(\"bold\"),\n },\n italic: {\n icon: <Italic className=\"h-[18px] w-[18px]\" aria-hidden=\"true\" />,\n title: \"Italic\",\n onClick: (e) => e.chain().focus().toggleItalic().run(),\n isActive: (e) => e.isActive(\"italic\"),\n },\n strike: {\n icon: <Strikethrough className=\"h-[18px] w-[18px]\" aria-hidden=\"true\" />,\n title: \"Strikethrough\",\n onClick: (e) => e.chain().focus().toggleStrike().run(),\n isActive: (e) => e.isActive(\"strike\"),\n },\n code: {\n icon: <Code className=\"h-[18px] w-[18px]\" aria-hidden=\"true\" />,\n title: \"Inline code\",\n onClick: (e) => e.chain().focus().toggleCode().run(),\n isActive: (e) => e.isActive(\"code\"),\n },\n superscript: {\n icon: <SuperscriptIcon className=\"h-[18px] w-[18px]\" aria-hidden=\"true\" />,\n title: \"Superscript\",\n onClick: (e) => e.chain().focus().toggleSuperscript().run(),\n isActive: (e) => e.isActive(\"superscript\"),\n },\n subscript: {\n icon: <SubscriptIcon className=\"h-[18px] w-[18px]\" aria-hidden=\"true\" />,\n title: \"Subscript\",\n onClick: (e) => e.chain().focus().toggleSubscript().run(),\n isActive: (e) => e.isActive(\"subscript\"),\n },\n heading1: {\n icon: <Heading1 className=\"h-[18px] w-[18px]\" aria-hidden=\"true\" />,\n title: \"Heading 1\",\n onClick: (e) => e.chain().focus().toggleHeading({ level: 1 }).run(),\n isActive: (e) => e.isActive(\"heading\", { level: 1 }),\n },\n heading2: {\n icon: <Heading2 className=\"h-[18px] w-[18px]\" aria-hidden=\"true\" />,\n title: \"Heading 2\",\n onClick: (e) => e.chain().focus().toggleHeading({ level: 2 }).run(),\n isActive: (e) => e.isActive(\"heading\", { level: 2 }),\n },\n heading3: {\n icon: <Heading3 className=\"h-[18px] w-[18px]\" aria-hidden=\"true\" />,\n title: \"Heading 3\",\n onClick: (e) => e.chain().focus().toggleHeading({ level: 3 }).run(),\n isActive: (e) => e.isActive(\"heading\", { level: 3 }),\n },\n bulletList: {\n icon: <List className=\"h-[18px] w-[18px]\" aria-hidden=\"true\" />,\n title: \"Bullet list\",\n onClick: (e) => e.chain().focus().toggleBulletList().run(),\n isActive: (e) => e.isActive(\"bulletList\"),\n },\n orderedList: {\n icon: <ListOrdered className=\"h-[18px] w-[18px]\" aria-hidden=\"true\" />,\n title: \"Ordered list\",\n onClick: (e) => e.chain().focus().toggleOrderedList().run(),\n isActive: (e) => e.isActive(\"orderedList\"),\n },\n blockquote: {\n icon: <Quote className=\"h-[18px] w-[18px]\" aria-hidden=\"true\" />,\n title: \"Blockquote\",\n onClick: (e) => e.chain().focus().toggleBlockquote().run(),\n isActive: (e) => e.isActive(\"blockquote\"),\n },\n codeBlock: {\n icon: <CodeXml className=\"h-[18px] w-[18px]\" aria-hidden=\"true\" />,\n title: \"Code block\",\n onClick: (e) => e.chain().focus().toggleCodeBlock().run(),\n isActive: (e) => e.isActive(\"codeBlock\"),\n },\n link: {\n icon: <LinkIcon className=\"h-[18px] w-[18px]\" aria-hidden=\"true\" />,\n title: \"Link\",\n // Minimal UX: window.prompt for the URL (no extra UI deps). Empty input\n // clears any existing link on the selection.\n onClick: (e) => {\n const prev = (e.getAttributes(\"link\") as { href?: string }).href ?? \"\";\n const url =\n typeof window !== \"undefined\"\n ? window.prompt(\"Enter URL\", prev)\n : null;\n if (url === null) return; // cancelled\n if (url === \"\") {\n e.chain().focus().extendMarkRange(\"link\").unsetLink().run();\n return;\n }\n e.chain().focus().extendMarkRange(\"link\").setLink({ href: url }).run();\n },\n isActive: (e) => e.isActive(\"link\"),\n },\n undo: {\n icon: <Undo2 className=\"h-[18px] w-[18px]\" aria-hidden=\"true\" />,\n title: \"Undo\",\n onClick: (e) => e.chain().focus().undo().run(),\n isDisabled: (e) => !e.can().undo(),\n },\n redo: {\n icon: <Redo2 className=\"h-[18px] w-[18px]\" aria-hidden=\"true\" />,\n title: \"Redo\",\n onClick: (e) => e.chain().focus().redo().run(),\n isDisabled: (e) => !e.can().redo(),\n },\n};\n\nconst toolButtonClass = (active: boolean) =>\n cn(\n \"inline-flex h-8 w-8 items-center justify-center rounded-lg text-gray-600 transition\",\n \"hover:bg-gray-100 hover:text-gray-800 disabled:cursor-not-allowed disabled:opacity-40\",\n \"dark:text-gray-400 dark:hover:bg-white/[0.06] dark:hover:text-gray-200\",\n active &&\n \"bg-brand-50 text-brand-600 hover:bg-brand-50 hover:text-brand-600 dark:bg-brand-500/15 dark:text-brand-400 dark:hover:bg-brand-500/15 dark:hover:text-brand-400\"\n );\n\nconst Divider: React.FC = () => (\n <span\n aria-hidden\n className=\"mx-1 h-5 w-px self-center bg-gray-200 dark:bg-gray-700\"\n />\n);\n\n/**\n * Tiptap-powered WYSIWYG editor.\n *\n * Heavy, optional peer-dependency component (`@tiptap/*`). It is a client\n * component and touches the DOM at import time, so in SSR frameworks render it\n * client-only (e.g. next/dynamic with `ssr:false`), like the charts.\n */\nexport const Editor: React.FC<EditorProps> = ({\n content,\n onChange,\n placeholder = \"Start writing…\",\n editable = true,\n toolbar = DEFAULT_TOOLBAR,\n rows = 8,\n className,\n editorClassName,\n}) => {\n const visibleRows = Math.max(1, Math.floor(rows));\n const minHeight = `${visibleRows * 1.5}rem`;\n const editorHeightStyle = {\n \"--tdui-editor-min-height\": minHeight,\n } as React.CSSProperties;\n\n const editor = useEditor({\n extensions: [\n StarterKit,\n Link.configure({ openOnClick: false }),\n Placeholder.configure({ placeholder }),\n Superscript,\n Subscript,\n ],\n content,\n editable,\n immediatelyRender: false,\n editorProps: {\n attributes: {\n class: \"focus:outline-none\",\n },\n },\n onUpdate: ({ editor }) => onChange?.(editor.getHTML()),\n });\n\n // Keep editability in sync if the prop changes after mount.\n React.useEffect(() => {\n editor?.setEditable(editable);\n }, [editor, editable]);\n\n // Not yet mounted (SSR / first paint): render a skeleton placeholder.\n if (!editor) {\n return (\n <div\n className={cn(\n \"w-full overflow-hidden rounded-xl border border-gray-200 dark:border-gray-800\",\n className\n )}\n >\n {editable && (\n <div className=\"h-12 border-b border-gray-200 bg-gray-50 dark:border-gray-800 dark:bg-white/[0.02]\" />\n )}\n <div\n className=\"min-h-[var(--tdui-editor-min-height)] animate-pulse bg-gray-50/50 dark:bg-white/[0.01]\"\n style={editorHeightStyle}\n />\n </div>\n );\n }\n\n const renderToolbar = () => {\n let dividerKey = 0;\n return toolbar.map((item, index) => {\n // Custom button object.\n if (typeof item === \"object\") {\n const active = item.isActive?.(editor) ?? false;\n return (\n <button\n key={item.id || `custom-${index}`}\n type=\"button\"\n title={item.title}\n aria-label={item.title}\n aria-pressed={active}\n onClick={() => item.onClick(editor)}\n className={toolButtonClass(active)}\n >\n {item.icon}\n </button>\n );\n }\n\n if (item === \"divider\") {\n return <Divider key={`divider-${dividerKey++}`} />;\n }\n\n const def = BUILTINS[item];\n if (!def) return null;\n const active = def.isActive?.(editor) ?? false;\n const disabled = def.isDisabled?.(editor) ?? false;\n return (\n <button\n key={item}\n type=\"button\"\n title={def.title}\n aria-label={def.title}\n aria-pressed={active}\n disabled={disabled}\n onClick={() => def.onClick(editor)}\n className={toolButtonClass(active)}\n >\n {def.icon}\n </button>\n );\n });\n };\n\n return (\n <div\n className={cn(\n \"w-full overflow-hidden rounded-xl border border-gray-200 bg-white shadow-theme-xs dark:border-gray-800 dark:bg-white/[0.02]\",\n className\n )}\n >\n {editable && (\n <div className=\"flex flex-wrap items-center gap-0.5 border-b border-gray-200 bg-gray-50 px-2 py-1.5 dark:border-gray-800 dark:bg-white/[0.02]\">\n {renderToolbar()}\n </div>\n )}\n <EditorContent\n editor={editor}\n style={editorHeightStyle}\n className={cn(\n \"min-h-[var(--tdui-editor-min-height)] px-4 py-3 text-sm text-gray-700 dark:text-gray-300\",\n \"rounded-b-xl\",\n // Explicit element styling (no @tailwindcss/typography assumed).\n \"[&_.ProseMirror]:min-h-[var(--tdui-editor-min-height)] [&_.ProseMirror]:outline-none\",\n \"[&_h1]:mb-3 [&_h1]:mt-4 [&_h1]:text-2xl [&_h1]:font-semibold [&_h1]:text-gray-900 dark:[&_h1]:text-white/90\",\n \"[&_h2]:mb-2 [&_h2]:mt-4 [&_h2]:text-xl [&_h2]:font-semibold [&_h2]:text-gray-900 dark:[&_h2]:text-white/90\",\n \"[&_h3]:mb-2 [&_h3]:mt-3 [&_h3]:text-lg [&_h3]:font-semibold [&_h3]:text-gray-900 dark:[&_h3]:text-white/90\",\n \"[&_p]:my-2 [&_p]:leading-relaxed\",\n \"[&_ul]:my-2 [&_ul]:list-disc [&_ul]:pl-6\",\n \"[&_ol]:my-2 [&_ol]:list-decimal [&_ol]:pl-6\",\n \"[&_li]:my-1 [&_li>p]:my-0\",\n \"[&_a]:text-brand-500 [&_a]:underline hover:[&_a]:text-brand-600 dark:[&_a]:text-brand-400\",\n \"[&_blockquote]:my-3 [&_blockquote]:border-l-4 [&_blockquote]:border-gray-300 [&_blockquote]:pl-4 [&_blockquote]:italic [&_blockquote]:text-gray-600 dark:[&_blockquote]:border-gray-700 dark:[&_blockquote]:text-gray-400\",\n \"[&_code]:rounded [&_code]:bg-gray-100 [&_code]:px-1.5 [&_code]:py-0.5 [&_code]:font-mono [&_code]:text-[0.85em] [&_code]:text-brand-600 dark:[&_code]:bg-white/[0.06] dark:[&_code]:text-brand-400\",\n \"[&_pre]:my-3 [&_pre]:overflow-x-auto [&_pre]:rounded-lg [&_pre]:bg-gray-900 [&_pre]:p-4 [&_pre]:font-mono [&_pre]:text-sm [&_pre]:text-gray-100 dark:[&_pre]:bg-black/40\",\n \"[&_pre_code]:bg-transparent [&_pre_code]:p-0 [&_pre_code]:text-inherit\",\n \"[&_hr]:my-4 [&_hr]:border-gray-200 dark:[&_hr]:border-gray-800\",\n // Placeholder styling for the empty-document first node.\n \"[&_.is-editor-empty:first-child::before]:pointer-events-none [&_.is-editor-empty:first-child::before]:float-left [&_.is-editor-empty:first-child::before]:h-0 [&_.is-editor-empty:first-child::before]:text-gray-400 [&_.is-editor-empty:first-child::before]:content-[attr(data-placeholder)] dark:[&_.is-editor-empty:first-child::before]:text-gray-600\",\n editorClassName\n )}\n />\n </div>\n );\n};\n"]}
|
|
@@ -7,43 +7,196 @@ import dayGridPlugin from '@fullcalendar/daygrid';
|
|
|
7
7
|
import timeGridPlugin from '@fullcalendar/timegrid';
|
|
8
8
|
import interactionPlugin from '@fullcalendar/interaction';
|
|
9
9
|
import { createPortal } from 'react-dom';
|
|
10
|
-
import {
|
|
10
|
+
import { X } from 'lucide-react';
|
|
11
|
+
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
11
12
|
|
|
12
13
|
var EXIT_DURATION = 220;
|
|
13
|
-
var BLOB_PATH = "M34.364 6.85053C38.6205 -2.28351 51.3795 -2.28351 55.636 6.85053C58.0129 11.951 63.5594 14.6722 68.9556 13.3853C78.6192 11.0807 86.5743 21.2433 82.2185 30.3287C79.7862 35.402 81.1561 41.5165 85.5082 45.0122C93.3019 51.2725 90.4628 63.9451 80.7747 66.1403C75.3648 67.3661 71.5265 72.2695 71.5572 77.9156C71.6123 88.0265 60.1169 93.6664 52.3918 87.3184C48.0781 83.7737 41.9219 83.7737 37.6082 87.3184C29.8831 93.6664 18.3877 88.0266 18.4428 77.9156C18.4735 72.2695 14.6352 67.3661 9.22531 66.1403C-0.462787 63.9451 -3.30193 51.2725 4.49185 45.0122C8.84391 41.5165 10.2138 35.402 7.78151 30.3287C3.42572 21.2433 11.3808 11.0807 21.0444 13.3853C26.4406 14.6722 31.9871 11.951 34.364 6.85053Z";
|
|
14
14
|
var VARIANTS = {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
15
|
+
confirm: {
|
|
16
|
+
halo: "bg-success-500/10 text-success-500 dark:bg-success-500/15",
|
|
17
|
+
stroke: "stroke-success-500",
|
|
18
|
+
fill: "fill-success-500",
|
|
19
19
|
button: "bg-success-500 hover:bg-success-600"
|
|
20
20
|
},
|
|
21
|
-
info: {
|
|
22
|
-
blob: "fill-blue-light-50 dark:fill-blue-light-500/15",
|
|
23
|
-
icon: "fill-blue-light-500 dark:fill-blue-light-500",
|
|
24
|
-
iconPath: "M5.85547 18.9998C5.85547 11.7396 11.7411 5.854 19.0013 5.854C26.2615 5.854 32.1471 11.7396 32.1471 18.9998C32.1471 26.2601 26.2615 32.1457 19.0013 32.1457C11.7411 32.1457 5.85547 26.2601 5.85547 18.9998ZM19.0013 2.854C10.0842 2.854 2.85547 10.0827 2.85547 18.9998C2.85547 27.9169 10.0842 35.1457 19.0013 35.1457C27.9184 35.1457 35.1471 27.9169 35.1471 18.9998C35.1471 10.0827 27.9184 2.854 19.0013 2.854ZM16.9999 11.9145C16.9999 13.0191 17.8953 13.9145 18.9999 13.9145H19.0015C20.106 13.9145 21.0015 13.0191 21.0015 11.9145C21.0015 10.81 20.106 9.91454 19.0015 9.91454H18.9999C17.8953 9.91454 16.9999 10.81 16.9999 11.9145ZM19.0014 27.8171C18.173 27.8171 17.5014 27.1455 17.5014 26.3171V17.3293C17.5014 16.5008 18.173 15.8293 19.0014 15.8293C19.8299 15.8293 20.5014 16.5008 20.5014 17.3293L20.5014 26.3171C20.5014 27.1455 19.8299 27.8171 19.0014 27.8171Z",
|
|
25
|
-
button: "bg-blue-light-500 hover:bg-blue-light-600"
|
|
26
|
-
},
|
|
27
21
|
warning: {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
22
|
+
halo: "bg-warning-500/10 text-warning-500 dark:bg-warning-500/15 dark:text-orange-400",
|
|
23
|
+
stroke: "stroke-warning-500 dark:stroke-orange-400",
|
|
24
|
+
fill: "fill-warning-500 dark:fill-orange-400",
|
|
31
25
|
button: "bg-warning-500 hover:bg-warning-600"
|
|
32
26
|
},
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
27
|
+
error: {
|
|
28
|
+
halo: "bg-error-500/10 text-error-500 dark:bg-error-500/15",
|
|
29
|
+
stroke: "stroke-error-500",
|
|
30
|
+
fill: "fill-error-500",
|
|
37
31
|
button: "bg-error-500 hover:bg-error-600"
|
|
38
32
|
}
|
|
39
33
|
};
|
|
34
|
+
var AnimatedAlertIcon = ({ variant }) => {
|
|
35
|
+
const v = VARIANTS[variant];
|
|
36
|
+
const commonStroke = cn(
|
|
37
|
+
"fill-none stroke-[4] [stroke-linecap:round] [stroke-linejoin:round]",
|
|
38
|
+
v.stroke
|
|
39
|
+
);
|
|
40
|
+
return /* @__PURE__ */ jsx(
|
|
41
|
+
"span",
|
|
42
|
+
{
|
|
43
|
+
className: cn(
|
|
44
|
+
"relative inline-flex h-[92px] w-[92px] items-center justify-center rounded-full",
|
|
45
|
+
v.halo
|
|
46
|
+
),
|
|
47
|
+
"data-modal-alert-icon": variant,
|
|
48
|
+
"aria-hidden": "true",
|
|
49
|
+
children: /* @__PURE__ */ jsxs(
|
|
50
|
+
"svg",
|
|
51
|
+
{
|
|
52
|
+
className: "h-[72px] w-[72px]",
|
|
53
|
+
viewBox: "0 0 72 72",
|
|
54
|
+
fill: "none",
|
|
55
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
56
|
+
children: [
|
|
57
|
+
/* @__PURE__ */ jsx("style", { children: `
|
|
58
|
+
@keyframes tdui-alert-draw {
|
|
59
|
+
to { stroke-dashoffset: 0; }
|
|
60
|
+
}
|
|
61
|
+
@keyframes tdui-alert-pop {
|
|
62
|
+
0% { opacity: 0; transform: scale(.82); }
|
|
63
|
+
70% { opacity: 1; transform: scale(1.08); }
|
|
64
|
+
100% { opacity: 1; transform: scale(1); }
|
|
65
|
+
}
|
|
66
|
+
.tdui-alert-draw {
|
|
67
|
+
animation: tdui-alert-draw .72s cubic-bezier(.22,1,.36,1) forwards;
|
|
68
|
+
}
|
|
69
|
+
.tdui-alert-pop {
|
|
70
|
+
opacity: 0;
|
|
71
|
+
transform-origin: center;
|
|
72
|
+
animation: tdui-alert-pop .34s cubic-bezier(.22,1,.36,1) forwards;
|
|
73
|
+
}
|
|
74
|
+
@media (prefers-reduced-motion: reduce) {
|
|
75
|
+
.tdui-alert-draw {
|
|
76
|
+
animation: none;
|
|
77
|
+
stroke-dashoffset: 0;
|
|
78
|
+
}
|
|
79
|
+
.tdui-alert-pop {
|
|
80
|
+
animation: none;
|
|
81
|
+
opacity: 1;
|
|
82
|
+
transform: none;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
` }),
|
|
86
|
+
variant === "confirm" && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
87
|
+
/* @__PURE__ */ jsx(
|
|
88
|
+
"circle",
|
|
89
|
+
{
|
|
90
|
+
className: commonStroke,
|
|
91
|
+
cx: "36",
|
|
92
|
+
cy: "36",
|
|
93
|
+
r: "27",
|
|
94
|
+
style: {
|
|
95
|
+
strokeDasharray: 170,
|
|
96
|
+
strokeDashoffset: 170,
|
|
97
|
+
animation: "tdui-alert-draw .72s cubic-bezier(.22,1,.36,1) forwards"
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
),
|
|
101
|
+
/* @__PURE__ */ jsx(
|
|
102
|
+
"path",
|
|
103
|
+
{
|
|
104
|
+
className: commonStroke,
|
|
105
|
+
d: "M23 37.5 31.5 46 50 27",
|
|
106
|
+
style: {
|
|
107
|
+
strokeDasharray: 44,
|
|
108
|
+
strokeDashoffset: 44,
|
|
109
|
+
animation: "tdui-alert-draw .48s cubic-bezier(.22,1,.36,1) .42s forwards"
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
)
|
|
113
|
+
] }),
|
|
114
|
+
variant === "error" && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
115
|
+
/* @__PURE__ */ jsx(
|
|
116
|
+
"circle",
|
|
117
|
+
{
|
|
118
|
+
className: commonStroke,
|
|
119
|
+
cx: "36",
|
|
120
|
+
cy: "36",
|
|
121
|
+
r: "27",
|
|
122
|
+
style: {
|
|
123
|
+
strokeDasharray: 170,
|
|
124
|
+
strokeDashoffset: 170,
|
|
125
|
+
animation: "tdui-alert-draw .62s cubic-bezier(.22,1,.36,1) forwards"
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
),
|
|
129
|
+
/* @__PURE__ */ jsx(
|
|
130
|
+
"path",
|
|
131
|
+
{
|
|
132
|
+
className: commonStroke,
|
|
133
|
+
d: "M27 27 45 45",
|
|
134
|
+
style: {
|
|
135
|
+
strokeDasharray: 26,
|
|
136
|
+
strokeDashoffset: 26,
|
|
137
|
+
animation: "tdui-alert-draw .3s cubic-bezier(.22,1,.36,1) .38s forwards"
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
),
|
|
141
|
+
/* @__PURE__ */ jsx(
|
|
142
|
+
"path",
|
|
143
|
+
{
|
|
144
|
+
className: commonStroke,
|
|
145
|
+
d: "M45 27 27 45",
|
|
146
|
+
style: {
|
|
147
|
+
strokeDasharray: 26,
|
|
148
|
+
strokeDashoffset: 26,
|
|
149
|
+
animation: "tdui-alert-draw .3s cubic-bezier(.22,1,.36,1) .52s forwards"
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
)
|
|
153
|
+
] }),
|
|
154
|
+
variant === "warning" && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
155
|
+
/* @__PURE__ */ jsx(
|
|
156
|
+
"path",
|
|
157
|
+
{
|
|
158
|
+
className: commonStroke,
|
|
159
|
+
d: "M36 10 64 60H8L36 10Z",
|
|
160
|
+
style: {
|
|
161
|
+
strokeDasharray: 174,
|
|
162
|
+
strokeDashoffset: 174,
|
|
163
|
+
animation: "tdui-alert-draw .7s cubic-bezier(.22,1,.36,1) forwards"
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
),
|
|
167
|
+
/* @__PURE__ */ jsx(
|
|
168
|
+
"path",
|
|
169
|
+
{
|
|
170
|
+
className: commonStroke,
|
|
171
|
+
d: "M36 29V42",
|
|
172
|
+
style: {
|
|
173
|
+
strokeDasharray: 13,
|
|
174
|
+
strokeDashoffset: 13,
|
|
175
|
+
animation: "tdui-alert-draw .28s cubic-bezier(.22,1,.36,1) .42s forwards"
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
),
|
|
179
|
+
/* @__PURE__ */ jsx(
|
|
180
|
+
"circle",
|
|
181
|
+
{
|
|
182
|
+
className: cn("tdui-alert-pop", v.fill),
|
|
183
|
+
cx: "36",
|
|
184
|
+
cy: "51",
|
|
185
|
+
r: "2.6",
|
|
186
|
+
style: { animationDelay: ".64s" }
|
|
187
|
+
}
|
|
188
|
+
)
|
|
189
|
+
] })
|
|
190
|
+
]
|
|
191
|
+
}
|
|
192
|
+
)
|
|
193
|
+
}
|
|
194
|
+
);
|
|
195
|
+
};
|
|
40
196
|
var ModalAlert = ({ variant, title, description, actionText, onAction }) => {
|
|
41
197
|
const v = VARIANTS[variant];
|
|
42
198
|
return /* @__PURE__ */ jsxs("div", { className: "text-center", children: [
|
|
43
|
-
/* @__PURE__ */
|
|
44
|
-
/* @__PURE__ */ jsx("svg", { className: v.blob, width: "90", height: "90", viewBox: "0 0 90 90", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsx("path", { d: BLOB_PATH }) }),
|
|
45
|
-
/* @__PURE__ */ jsx("span", { className: "absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2", children: /* @__PURE__ */ jsx("svg", { className: v.icon, width: "38", height: "38", viewBox: "0 0 38 38", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsx("path", { fillRule: "evenodd", clipRule: "evenodd", d: v.iconPath }) }) })
|
|
46
|
-
] }),
|
|
199
|
+
/* @__PURE__ */ jsx("div", { className: "relative z-1 mb-7 flex items-center justify-center", children: /* @__PURE__ */ jsx(AnimatedAlertIcon, { variant }) }),
|
|
47
200
|
title && /* @__PURE__ */ jsx("h4", { className: "mb-2 text-2xl font-semibold text-gray-800 dark:text-white/90", children: title }),
|
|
48
201
|
description && /* @__PURE__ */ jsx("p", { className: "text-sm leading-6 text-gray-500 dark:text-gray-400", children: description }),
|
|
49
202
|
/* @__PURE__ */ jsx("div", { className: "mt-7 flex w-full items-center justify-center gap-3", children: /* @__PURE__ */ jsx(
|
|
@@ -143,25 +296,7 @@ var Modal = ({
|
|
|
143
296
|
"z-99 flex h-9.5 w-9.5 shrink-0 items-center justify-center rounded-full bg-gray-100 text-gray-400 transition-colors hover:bg-gray-200 hover:text-gray-700 dark:bg-gray-800 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-white sm:h-11 sm:w-11",
|
|
144
297
|
!isInline && "absolute right-3 top-3 sm:right-6 sm:top-6"
|
|
145
298
|
),
|
|
146
|
-
children: /* @__PURE__ */ jsx(
|
|
147
|
-
"svg",
|
|
148
|
-
{
|
|
149
|
-
width: "24",
|
|
150
|
-
height: "24",
|
|
151
|
-
viewBox: "0 0 24 24",
|
|
152
|
-
fill: "none",
|
|
153
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
154
|
-
children: /* @__PURE__ */ jsx(
|
|
155
|
-
"path",
|
|
156
|
-
{
|
|
157
|
-
fillRule: "evenodd",
|
|
158
|
-
clipRule: "evenodd",
|
|
159
|
-
d: "M6.04289 16.5413C5.65237 16.9318 5.65237 17.565 6.04289 17.9555C6.43342 18.346 7.06658 18.346 7.45711 17.9555L11.9987 13.4139L16.5408 17.956C16.9313 18.3466 17.5645 18.3466 17.955 17.956C18.3455 17.5655 18.3455 16.9323 17.955 16.5418L13.4129 11.9997L17.955 7.4576C18.3455 7.06707 18.3455 6.43391 17.955 6.04338C17.5645 5.65286 16.9313 5.65286 16.5408 6.04338L11.9987 10.5855L7.45711 6.0439C7.06658 5.65338 6.43342 5.65338 6.04289 6.0439C5.65237 6.43442 5.65237 7.06759 6.04289 7.45811L10.5845 11.9997L6.04289 16.5413Z",
|
|
160
|
-
fill: "currentColor"
|
|
161
|
-
}
|
|
162
|
-
)
|
|
163
|
-
}
|
|
164
|
-
)
|
|
299
|
+
children: /* @__PURE__ */ jsx(X, { className: "h-6 w-6", "aria-hidden": "true" })
|
|
165
300
|
}
|
|
166
301
|
);
|
|
167
302
|
return createPortal(
|
|
@@ -471,5 +606,5 @@ var renderEventContent = (eventInfo) => {
|
|
|
471
606
|
};
|
|
472
607
|
|
|
473
608
|
export { Calendar, Modal };
|
|
474
|
-
//# sourceMappingURL=chunk-
|
|
475
|
-
//# sourceMappingURL=chunk-
|
|
609
|
+
//# sourceMappingURL=chunk-PYZG7RY7.js.map
|
|
610
|
+
//# sourceMappingURL=chunk-PYZG7RY7.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Modal/Modal.tsx","../src/components/Calendar/Calendar.tsx"],"names":["useState","useRef","useEffect","jsxs","jsx"],"mappings":"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","file":"chunk-PYZG7RY7.js","sourcesContent":["\"use client\";\nimport React, { useRef, useEffect, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { X } from \"lucide-react\";\nimport { cn } from \"../../lib/cn\";\nimport { layers } from \"../../lib/layers\";\n\n/** Must match the exit animation duration in theme.css (tdui-modal-*-out). */\nconst EXIT_DURATION = 220;\n\nexport type ModalVariant = \"confirm\" | \"error\" | \"warning\";\n\nexport interface ModalProps extends React.HTMLAttributes<HTMLDivElement> {\n isOpen: boolean;\n onClose: () => void;\n showCloseButton?: boolean;\n isFullscreen?: boolean;\n closeOnBackdrop?: boolean;\n closeOnEsc?: boolean;\n /** Render a preset alert layout (decorative icon + title + message + action button). */\n variant?: ModalVariant;\n /** Header title for a standard modal, or the alert heading when `variant` is set. */\n title?: string;\n /** Alert body text — used when `variant` is set. */\n description?: string;\n /** Action button label. Default: \"Okay, Got It\". */\n actionText?: string;\n /** Action button handler. Defaults to `onClose`. */\n onAction?: () => void;\n}\n\nconst VARIANTS: Record<\n ModalVariant,\n {\n halo: string;\n stroke: string;\n fill: string;\n button: string;\n }\n> = {\n confirm: {\n halo: \"bg-success-500/10 text-success-500 dark:bg-success-500/15\",\n stroke: \"stroke-success-500\",\n fill: \"fill-success-500\",\n button: \"bg-success-500 hover:bg-success-600\",\n },\n warning: {\n halo: \"bg-warning-500/10 text-warning-500 dark:bg-warning-500/15 dark:text-orange-400\",\n stroke: \"stroke-warning-500 dark:stroke-orange-400\",\n fill: \"fill-warning-500 dark:fill-orange-400\",\n button: \"bg-warning-500 hover:bg-warning-600\",\n },\n error: {\n halo: \"bg-error-500/10 text-error-500 dark:bg-error-500/15\",\n stroke: \"stroke-error-500\",\n fill: \"fill-error-500\",\n button: \"bg-error-500 hover:bg-error-600\",\n },\n};\n\nconst AnimatedAlertIcon: React.FC<{ variant: ModalVariant }> = ({ variant }) => {\n const v = VARIANTS[variant];\n const commonStroke = cn(\n \"fill-none stroke-[4] [stroke-linecap:round] [stroke-linejoin:round]\",\n v.stroke\n );\n\n return (\n <span\n className={cn(\n \"relative inline-flex h-[92px] w-[92px] items-center justify-center rounded-full\",\n v.halo\n )}\n data-modal-alert-icon={variant}\n aria-hidden=\"true\"\n >\n <svg\n className=\"h-[72px] w-[72px]\"\n viewBox=\"0 0 72 72\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <style>\n {`\n @keyframes tdui-alert-draw {\n to { stroke-dashoffset: 0; }\n }\n @keyframes tdui-alert-pop {\n 0% { opacity: 0; transform: scale(.82); }\n 70% { opacity: 1; transform: scale(1.08); }\n 100% { opacity: 1; transform: scale(1); }\n }\n .tdui-alert-draw {\n animation: tdui-alert-draw .72s cubic-bezier(.22,1,.36,1) forwards;\n }\n .tdui-alert-pop {\n opacity: 0;\n transform-origin: center;\n animation: tdui-alert-pop .34s cubic-bezier(.22,1,.36,1) forwards;\n }\n @media (prefers-reduced-motion: reduce) {\n .tdui-alert-draw {\n animation: none;\n stroke-dashoffset: 0;\n }\n .tdui-alert-pop {\n animation: none;\n opacity: 1;\n transform: none;\n }\n }\n `}\n </style>\n\n {variant === \"confirm\" && (\n <>\n <circle\n className={commonStroke}\n cx=\"36\"\n cy=\"36\"\n r=\"27\"\n style={{\n strokeDasharray: 170,\n strokeDashoffset: 170,\n animation: \"tdui-alert-draw .72s cubic-bezier(.22,1,.36,1) forwards\",\n }}\n />\n <path\n className={commonStroke}\n d=\"M23 37.5 31.5 46 50 27\"\n style={{\n strokeDasharray: 44,\n strokeDashoffset: 44,\n animation: \"tdui-alert-draw .48s cubic-bezier(.22,1,.36,1) .42s forwards\",\n }}\n />\n </>\n )}\n\n {variant === \"error\" && (\n <>\n <circle\n className={commonStroke}\n cx=\"36\"\n cy=\"36\"\n r=\"27\"\n style={{\n strokeDasharray: 170,\n strokeDashoffset: 170,\n animation: \"tdui-alert-draw .62s cubic-bezier(.22,1,.36,1) forwards\",\n }}\n />\n <path\n className={commonStroke}\n d=\"M27 27 45 45\"\n style={{\n strokeDasharray: 26,\n strokeDashoffset: 26,\n animation: \"tdui-alert-draw .3s cubic-bezier(.22,1,.36,1) .38s forwards\",\n }}\n />\n <path\n className={commonStroke}\n d=\"M45 27 27 45\"\n style={{\n strokeDasharray: 26,\n strokeDashoffset: 26,\n animation: \"tdui-alert-draw .3s cubic-bezier(.22,1,.36,1) .52s forwards\",\n }}\n />\n </>\n )}\n\n {variant === \"warning\" && (\n <>\n <path\n className={commonStroke}\n d=\"M36 10 64 60H8L36 10Z\"\n style={{\n strokeDasharray: 174,\n strokeDashoffset: 174,\n animation: \"tdui-alert-draw .7s cubic-bezier(.22,1,.36,1) forwards\",\n }}\n />\n <path\n className={commonStroke}\n d=\"M36 29V42\"\n style={{\n strokeDasharray: 13,\n strokeDashoffset: 13,\n animation: \"tdui-alert-draw .28s cubic-bezier(.22,1,.36,1) .42s forwards\",\n }}\n />\n <circle\n className={cn(\"tdui-alert-pop\", v.fill)}\n cx=\"36\"\n cy=\"51\"\n r=\"2.6\"\n style={{ animationDelay: \".64s\" }}\n />\n </>\n )}\n </svg>\n </span>\n );\n};\n\nconst ModalAlert: React.FC<{\n variant: ModalVariant;\n title?: string;\n description?: string;\n actionText: string;\n onAction: () => void;\n}> = ({ variant, title, description, actionText, onAction }) => {\n const v = VARIANTS[variant];\n return (\n <div className=\"text-center\">\n <div className=\"relative z-1 mb-7 flex items-center justify-center\">\n <AnimatedAlertIcon variant={variant} />\n </div>\n {title && (\n <h4 className=\"mb-2 text-2xl font-semibold text-gray-800 dark:text-white/90\">\n {title}\n </h4>\n )}\n {description && (\n <p className=\"text-sm leading-6 text-gray-500 dark:text-gray-400\">{description}</p>\n )}\n <div className=\"mt-7 flex w-full items-center justify-center gap-3\">\n <button\n type=\"button\"\n onClick={onAction}\n className={cn(\n \"flex w-full justify-center rounded-lg px-4 py-3 text-sm font-medium text-white shadow-theme-xs sm:w-auto\",\n v.button\n )}\n >\n {actionText}\n </button>\n </div>\n </div>\n );\n};\n\nexport const Modal: React.FC<ModalProps> = ({\n isOpen,\n onClose,\n children,\n className,\n showCloseButton = true,\n isFullscreen = false,\n closeOnBackdrop = true,\n closeOnEsc = true,\n variant,\n title,\n description,\n actionText = \"Okay, Got It\",\n onAction,\n ...rest\n}) => {\n const modalRef = useRef<HTMLDivElement>(null);\n // Keep the modal mounted while the close (fade-out) animation plays.\n const [render, setRender] = useState(isOpen);\n const [closing, setClosing] = useState(false);\n const exitTimer = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n\n useEffect(() => {\n if (isOpen) {\n if (exitTimer.current) clearTimeout(exitTimer.current);\n setRender(true);\n setClosing(false);\n } else {\n // Only animate out if it was actually showing.\n setRender((wasRendered) => {\n if (!wasRendered) return false;\n setClosing(true);\n if (exitTimer.current) clearTimeout(exitTimer.current);\n exitTimer.current = setTimeout(() => {\n setRender(false);\n setClosing(false);\n }, EXIT_DURATION);\n return true;\n });\n }\n return () => {\n if (exitTimer.current) clearTimeout(exitTimer.current);\n };\n }, [isOpen]);\n\n useEffect(() => {\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n onClose();\n }\n };\n\n if (isOpen && closeOnEsc) {\n document.addEventListener(\"keydown\", handleEscape);\n }\n\n return () => {\n document.removeEventListener(\"keydown\", handleEscape);\n };\n }, [isOpen, onClose, closeOnEsc]);\n\n useEffect(() => {\n if (render) {\n document.body.style.overflow = \"hidden\";\n } else {\n document.body.style.overflow = \"unset\";\n }\n\n return () => {\n document.body.style.overflow = \"unset\";\n };\n }, [render]);\n\n if (!render || typeof document === \"undefined\") return null;\n\n const isAlert = !!variant;\n const popAnim = closing ? \"tdui-modal-pop-out\" : \"tdui-modal-pop\";\n const fadeAnim = closing ? \"tdui-modal-fade-out\" : \"tdui-modal-fade\";\n const contentClasses = isFullscreen\n ? cn(\"w-full h-full\", fadeAnim)\n : cn(\n \"relative w-full rounded-3xl bg-white dark:bg-gray-900\",\n popAnim,\n isAlert && \"max-w-[600px] p-5 lg:p-10\"\n );\n\n const closeButton = (isInline: boolean) => (\n <button\n type=\"button\"\n aria-label=\"Close modal\"\n onClick={onClose}\n className={cn(\n \"z-99 flex h-9.5 w-9.5 shrink-0 items-center justify-center rounded-full bg-gray-100 text-gray-400 transition-colors hover:bg-gray-200 hover:text-gray-700 dark:bg-gray-800 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-white sm:h-11 sm:w-11\",\n !isInline && \"absolute right-3 top-3 sm:right-6 sm:top-6\"\n )}\n >\n <X className=\"h-6 w-6\" aria-hidden=\"true\" />\n </button>\n );\n\n return createPortal(\n <div\n className={cn(\n \"modal fixed inset-0 isolate flex items-center justify-center overflow-y-auto\",\n layers.overlay\n )}\n >\n {!isFullscreen && (\n <div\n className={cn(\n \"fixed inset-0 z-0 h-full w-full bg-gray-400/50 backdrop-blur-[32px]\",\n fadeAnim\n )}\n onClick={closeOnBackdrop ? onClose : undefined}\n ></div>\n )}\n <div\n ref={modalRef}\n className={cn(\"z-1\", contentClasses, className)}\n onClick={(e) => e.stopPropagation()}\n {...rest}\n >\n {!isAlert && title && (\n <div className=\"flex items-start gap-4\">\n <h2 className=\"min-w-0 flex-1 break-words pt-1 text-xl font-semibold text-gray-800 dark:text-white/90\">\n {title}\n </h2>\n {showCloseButton && closeButton(true)}\n </div>\n )}\n {showCloseButton && (isAlert || !title) && closeButton(false)}\n {isAlert ? (\n <ModalAlert\n variant={variant}\n title={title}\n description={description}\n actionText={actionText}\n onAction={onAction ?? onClose}\n />\n ) : (\n <div className={cn(title && \"mt-4\")}>\n {children}\n </div>\n )}\n </div>\n </div>,\n document.body\n );\n};\n","\"use client\";\nimport React, { useState, useRef, useEffect } from \"react\";\nimport FullCalendar from \"@fullcalendar/react\";\nimport dayGridPlugin from \"@fullcalendar/daygrid\";\nimport timeGridPlugin from \"@fullcalendar/timegrid\";\nimport interactionPlugin from \"@fullcalendar/interaction\";\nimport {\n EventInput,\n DateSelectArg,\n EventClickArg,\n EventContentArg,\n} from \"@fullcalendar/core\";\nimport { Modal } from \"../Modal/Modal\";\n\ninterface CalendarEvent extends EventInput {\n extendedProps: {\n calendar: string;\n };\n}\n\nexport interface CalendarProps {\n events?: EventInput[];\n initialView?: string;\n onEventClick?: (arg: EventClickArg) => void;\n onDateSelect?: (arg: DateSelectArg) => void;\n}\n\nconst defaultEvents: CalendarEvent[] = [\n {\n id: \"1\",\n title: \"Event Conf.\",\n start: new Date().toISOString().split(\"T\")[0],\n extendedProps: { calendar: \"Danger\" },\n },\n {\n id: \"2\",\n title: \"Meeting\",\n start: new Date(Date.now() + 86400000).toISOString().split(\"T\")[0],\n extendedProps: { calendar: \"Success\" },\n },\n {\n id: \"3\",\n title: \"Workshop\",\n start: new Date(Date.now() + 172800000).toISOString().split(\"T\")[0],\n end: new Date(Date.now() + 259200000).toISOString().split(\"T\")[0],\n extendedProps: { calendar: \"Primary\" },\n },\n];\n\nexport const Calendar: React.FC<CalendarProps> = ({\n events: eventsProp,\n initialView = \"dayGridMonth\",\n onEventClick,\n onDateSelect,\n}) => {\n const [selectedEvent, setSelectedEvent] = useState<CalendarEvent | null>(\n null\n );\n const [eventTitle, setEventTitle] = useState(\"\");\n const [eventStartDate, setEventStartDate] = useState(\"\");\n const [eventEndDate, setEventEndDate] = useState(\"\");\n const [eventLevel, setEventLevel] = useState(\"\");\n const [events, setEvents] = useState<EventInput[]>(eventsProp ?? []);\n const [isOpen, setIsOpen] = useState(false);\n const calendarRef = useRef<FullCalendar>(null);\n\n const openModal = () => setIsOpen(true);\n const closeModal = () => setIsOpen(false);\n\n const calendarsEvents = {\n Danger: \"danger\",\n Success: \"success\",\n Primary: \"primary\",\n Warning: \"warning\",\n };\n\n useEffect(() => {\n // Initialize with provided events, or fall back to the demo events.\n setEvents(eventsProp ?? defaultEvents);\n }, [eventsProp]);\n\n const handleDateSelect = (selectInfo: DateSelectArg) => {\n onDateSelect?.(selectInfo);\n resetModalFields();\n setEventStartDate(selectInfo.startStr);\n setEventEndDate(selectInfo.endStr || selectInfo.startStr);\n openModal();\n };\n\n const handleEventClick = (clickInfo: EventClickArg) => {\n onEventClick?.(clickInfo);\n const event = clickInfo.event;\n setSelectedEvent(event as unknown as CalendarEvent);\n setEventTitle(event.title);\n setEventStartDate(event.start?.toISOString().split(\"T\")[0] || \"\");\n setEventEndDate(event.end?.toISOString().split(\"T\")[0] || \"\");\n setEventLevel(event.extendedProps.calendar);\n openModal();\n };\n\n const handleAddOrUpdateEvent = () => {\n if (selectedEvent) {\n // Update existing event\n setEvents((prevEvents) =>\n prevEvents.map((event) =>\n event.id === selectedEvent.id\n ? {\n ...event,\n title: eventTitle,\n start: eventStartDate,\n end: eventEndDate,\n extendedProps: { calendar: eventLevel },\n }\n : event\n )\n );\n } else {\n // Add new event\n const newEvent: CalendarEvent = {\n id: Date.now().toString(),\n title: eventTitle,\n start: eventStartDate,\n end: eventEndDate,\n allDay: true,\n extendedProps: { calendar: eventLevel },\n };\n setEvents((prevEvents) => [...prevEvents, newEvent]);\n }\n closeModal();\n resetModalFields();\n };\n\n const resetModalFields = () => {\n setEventTitle(\"\");\n setEventStartDate(\"\");\n setEventEndDate(\"\");\n setEventLevel(\"\");\n setSelectedEvent(null);\n };\n\n return (\n <div className=\"rounded-2xl border border-gray-200 bg-white dark:border-gray-800 dark:bg-white/[0.03]\">\n <div className=\"custom-calendar\">\n <FullCalendar\n ref={calendarRef}\n plugins={[dayGridPlugin, timeGridPlugin, interactionPlugin]}\n initialView={initialView}\n headerToolbar={{\n left: \"prev,next addEventButton\",\n center: \"title\",\n right: \"dayGridMonth,timeGridWeek,timeGridDay\",\n }}\n events={events}\n selectable={true}\n select={handleDateSelect}\n eventClick={handleEventClick}\n eventContent={renderEventContent}\n customButtons={{\n addEventButton: {\n text: \"Add Event +\",\n click: openModal,\n },\n }}\n />\n </div>\n <Modal\n isOpen={isOpen}\n onClose={closeModal}\n className=\"max-w-[700px] p-6 lg:p-10\"\n >\n <div className=\"flex flex-col px-2 overflow-y-auto custom-scrollbar\">\n <div>\n <h5 className=\"mb-2 font-semibold text-gray-800 modal-title text-theme-xl dark:text-white/90 lg:text-2xl\">\n {selectedEvent ? \"Edit Event\" : \"Add Event\"}\n </h5>\n <p className=\"text-sm text-gray-500 dark:text-gray-400\">\n Plan your next big moment: schedule or edit an event to stay on\n track\n </p>\n </div>\n <div className=\"mt-8\">\n <div>\n <div>\n <label className=\"mb-1.5 block text-sm font-medium text-gray-700 dark:text-gray-400\">\n Event Title\n </label>\n <input\n id=\"event-title\"\n type=\"text\"\n value={eventTitle}\n onChange={(e) => setEventTitle(e.target.value)}\n className=\"dark:bg-dark-900 h-11 w-full rounded-lg border border-gray-300 bg-transparent px-4 py-2.5 text-sm text-gray-800 shadow-theme-xs placeholder:text-gray-400 focus:border-brand-300 focus:outline-hidden focus:ring-3 focus:ring-brand-500/10 dark:border-gray-700 dark:bg-gray-900 dark:text-white/90 dark:placeholder:text-white/30 dark:focus:border-brand-800\"\n />\n </div>\n </div>\n <div className=\"mt-6\">\n <label className=\"block mb-4 text-sm font-medium text-gray-700 dark:text-gray-400\">\n Event Color\n </label>\n <div className=\"flex flex-wrap items-center gap-4 sm:gap-5\">\n {Object.entries(calendarsEvents).map(([key, value]) => (\n <div key={key} className=\"n-chk\">\n <div\n className={`form-check form-check-${value} form-check-inline`}\n >\n <label\n className=\"flex items-center text-sm text-gray-700 form-check-label dark:text-gray-400\"\n htmlFor={`modal${key}`}\n >\n <span className=\"relative\">\n <input\n className=\"sr-only form-check-input\"\n type=\"radio\"\n name=\"event-level\"\n value={key}\n id={`modal${key}`}\n checked={eventLevel === key}\n onChange={() => setEventLevel(key)}\n />\n <span className=\"flex items-center justify-center w-5 h-5 mr-2 border border-gray-300 rounded-full box dark:border-gray-700\">\n <span\n className={`h-2 w-2 rounded-full bg-white ${\n eventLevel === key ? \"block\" : \"hidden\"\n }`}\n ></span>\n </span>\n </span>\n {key}\n </label>\n </div>\n </div>\n ))}\n </div>\n </div>\n\n <div className=\"mt-6\">\n <label className=\"mb-1.5 block text-sm font-medium text-gray-700 dark:text-gray-400\">\n Enter Start Date\n </label>\n <div className=\"relative\">\n <input\n id=\"event-start-date\"\n type=\"date\"\n value={eventStartDate}\n onChange={(e) => setEventStartDate(e.target.value)}\n className=\"dark:bg-dark-900 h-11 w-full appearance-none rounded-lg border border-gray-300 bg-transparent bg-none px-4 py-2.5 pl-4 pr-11 text-sm text-gray-800 shadow-theme-xs placeholder:text-gray-400 focus:border-brand-300 focus:outline-hidden focus:ring-3 focus:ring-brand-500/10 dark:border-gray-700 dark:bg-gray-900 dark:text-white/90 dark:placeholder:text-white/30 dark:focus:border-brand-800\"\n />\n </div>\n </div>\n\n <div className=\"mt-6\">\n <label className=\"mb-1.5 block text-sm font-medium text-gray-700 dark:text-gray-400\">\n Enter End Date\n </label>\n <div className=\"relative\">\n <input\n id=\"event-end-date\"\n type=\"date\"\n value={eventEndDate}\n onChange={(e) => setEventEndDate(e.target.value)}\n className=\"dark:bg-dark-900 h-11 w-full appearance-none rounded-lg border border-gray-300 bg-transparent bg-none px-4 py-2.5 pl-4 pr-11 text-sm text-gray-800 shadow-theme-xs placeholder:text-gray-400 focus:border-brand-300 focus:outline-hidden focus:ring-3 focus:ring-brand-500/10 dark:border-gray-700 dark:bg-gray-900 dark:text-white/90 dark:placeholder:text-white/30 dark:focus:border-brand-800\"\n />\n </div>\n </div>\n </div>\n <div className=\"flex items-center gap-3 mt-6 modal-footer sm:justify-end\">\n <button\n onClick={closeModal}\n type=\"button\"\n className=\"flex w-full justify-center rounded-lg border border-gray-300 bg-white px-4 py-2.5 text-sm font-medium text-gray-700 hover:bg-gray-50 dark:border-gray-700 dark:bg-gray-800 dark:text-gray-400 dark:hover:bg-white/[0.03] sm:w-auto\"\n >\n Close\n </button>\n <button\n onClick={handleAddOrUpdateEvent}\n type=\"button\"\n className=\"btn btn-success btn-update-event flex w-full justify-center rounded-lg bg-brand-500 px-4 py-2.5 text-sm font-medium text-white hover:bg-brand-600 sm:w-auto\"\n >\n {selectedEvent ? \"Update Changes\" : \"Add Event\"}\n </button>\n </div>\n </div>\n </Modal>\n </div>\n );\n};\n\nconst renderEventContent = (eventInfo: EventContentArg) => {\n const colorClass = `fc-bg-${eventInfo.event.extendedProps.calendar.toLowerCase()}`;\n return (\n <div\n className={`event-fc-color flex fc-event-main ${colorClass} p-1 rounded-sm`}\n >\n <div className=\"fc-daygrid-event-dot\"></div>\n <div className=\"fc-event-time\">{eventInfo.timeText}</div>\n <div className=\"fc-event-title\">{eventInfo.event.title}</div>\n </div>\n );\n};\n"]}
|
|
@@ -4,6 +4,7 @@ import { cn } from './chunk-ZLIYUUA4.js';
|
|
|
4
4
|
import { useState, useMemo, useRef, useEffect, useCallback, useLayoutEffect } from 'react';
|
|
5
5
|
import { createPortal } from 'react-dom';
|
|
6
6
|
import { Color, ColorPicker as ColorPicker$1 } from 'react-beautiful-color';
|
|
7
|
+
import { ChevronDown, Pipette } from 'lucide-react';
|
|
7
8
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
8
9
|
|
|
9
10
|
var ALL_FORMATS = ["hex", "rgb", "rgba", "hsl", "hsla"];
|
|
@@ -49,13 +50,6 @@ function colorToString(color, format) {
|
|
|
49
50
|
return color.getHex();
|
|
50
51
|
}
|
|
51
52
|
}
|
|
52
|
-
var pipetteIcon = /* @__PURE__ */ jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", "aria-hidden": "true", children: /* @__PURE__ */ jsx(
|
|
53
|
-
"path",
|
|
54
|
-
{
|
|
55
|
-
d: "M19.5 3.5a2.12 2.12 0 0 0-3 0l-2.3 2.3-1-1-1.4 1.4 1 1L4 14.9V19h4.1l7.7-7.7 1 1 1.4-1.4-1-1 2.3-2.3a2.12 2.12 0 0 0 0-3ZM7.3 17.6H6v-1.3l6.6-6.6 1.3 1.3-6.6 6.6Z",
|
|
56
|
-
fill: "currentColor"
|
|
57
|
-
}
|
|
58
|
-
) });
|
|
59
53
|
var ColorPicker = ({
|
|
60
54
|
defaultValue = "#3641f5",
|
|
61
55
|
defaultFormat = "hex",
|
|
@@ -194,16 +188,13 @@ var ColorPicker = ({
|
|
|
194
188
|
),
|
|
195
189
|
/* @__PURE__ */ jsx("span", { className: "min-w-0 flex-1 truncate font-mono text-sm text-gray-800 dark:text-white/90", children: display }),
|
|
196
190
|
/* @__PURE__ */ jsx(
|
|
197
|
-
|
|
191
|
+
ChevronDown,
|
|
198
192
|
{
|
|
199
193
|
"aria-hidden": "true",
|
|
200
194
|
className: cn(
|
|
201
195
|
"h-4 w-4 shrink-0 text-gray-500 transition-transform dark:text-gray-400",
|
|
202
196
|
isOpen && "rotate-180"
|
|
203
|
-
)
|
|
204
|
-
viewBox: "0 0 24 24",
|
|
205
|
-
fill: "none",
|
|
206
|
-
children: /* @__PURE__ */ jsx("path", { d: "m6 9 6 6 6-6", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" })
|
|
197
|
+
)
|
|
207
198
|
}
|
|
208
199
|
)
|
|
209
200
|
]
|
|
@@ -235,7 +226,7 @@ var ColorPicker = ({
|
|
|
235
226
|
children: [
|
|
236
227
|
/* @__PURE__ */ jsx(ColorPicker$1.Saturation, { className: "mb-4 h-40 rounded-lg" }),
|
|
237
228
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3", children: [
|
|
238
|
-
withEyeDropper && /* @__PURE__ */ jsx(ColorPicker$1.EyeDropper, { className: "flex h-9 w-9 shrink-0 items-center justify-center rounded-lg border border-gray-300 text-gray-600 hover:bg-gray-50 dark:border-gray-700 dark:text-gray-300 dark:hover:bg-white/[0.03]", children:
|
|
229
|
+
withEyeDropper && /* @__PURE__ */ jsx(ColorPicker$1.EyeDropper, { className: "flex h-9 w-9 shrink-0 items-center justify-center rounded-lg border border-gray-300 text-gray-600 hover:bg-gray-50 dark:border-gray-700 dark:text-gray-300 dark:hover:bg-white/[0.03]", children: /* @__PURE__ */ jsx(Pipette, { className: "h-4 w-4", "aria-hidden": "true" }) }),
|
|
239
230
|
/* @__PURE__ */ jsxs("div", { className: "flex flex-1 flex-col gap-3", children: [
|
|
240
231
|
/* @__PURE__ */ jsx(ColorPicker$1.Hue, { className: "h-4" }),
|
|
241
232
|
/* @__PURE__ */ jsx(ColorPicker$1.Alpha, { className: "h-4" })
|
|
@@ -257,15 +248,11 @@ var ColorPicker = ({
|
|
|
257
248
|
}
|
|
258
249
|
),
|
|
259
250
|
/* @__PURE__ */ jsx(
|
|
260
|
-
|
|
251
|
+
ChevronDown,
|
|
261
252
|
{
|
|
262
253
|
"aria-hidden": "true",
|
|
263
254
|
className: "pointer-events-none absolute right-2.5 top-1/2 -translate-y-1/2 text-gray-500 dark:text-gray-400",
|
|
264
|
-
|
|
265
|
-
height: "14",
|
|
266
|
-
viewBox: "0 0 24 24",
|
|
267
|
-
fill: "none",
|
|
268
|
-
children: /* @__PURE__ */ jsx("path", { d: "m6 9 6 6 6-6", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" })
|
|
255
|
+
size: 14
|
|
269
256
|
}
|
|
270
257
|
)
|
|
271
258
|
] }),
|
|
@@ -291,5 +278,5 @@ var ColorPicker = ({
|
|
|
291
278
|
};
|
|
292
279
|
|
|
293
280
|
export { ColorPicker };
|
|
294
|
-
//# sourceMappingURL=chunk-
|
|
295
|
-
//# sourceMappingURL=chunk-
|
|
281
|
+
//# sourceMappingURL=chunk-W3TC7P3Z.js.map
|
|
282
|
+
//# sourceMappingURL=chunk-W3TC7P3Z.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/ColorPicker/ColorPicker.tsx"],"names":["RBColorPicker"],"mappings":"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","file":"chunk-W3TC7P3Z.js","sourcesContent":["\"use client\";\nimport React, {\n useCallback,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { ColorPicker as RBColorPicker, Color } from \"react-beautiful-color\";\nimport { ChevronDown, Pipette } from \"lucide-react\";\nimport { cn } from \"../../lib/cn\";\nimport { layers } from \"../../lib/layers\";\n\n// `react-beautiful-color` doesn't re-export these types from its entry, so\n// derive them from the values its API does expose.\ntype Hsva = ReturnType<Color[\"getHsva\"]>;\ntype ColorInput = ConstructorParameters<typeof Color>[0] & { type: string };\n\nexport type ColorPickerFormat = \"hex\" | \"rgb\" | \"rgba\" | \"hsl\" | \"hsla\";\n\nexport interface ColorPickerProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n /** Initial color (uncontrolled). Any hex string, e.g. `\"#3641f5\"`. */\n defaultValue?: string;\n /** Format selected on first render. Default: `\"hex\"`. */\n defaultFormat?: ColorPickerFormat;\n /** Formats offered in the switcher. Default: all five. */\n formats?: ColorPickerFormat[];\n /** Render the value input + format switcher. Default: `true`. */\n showInput?: boolean;\n /** Show the native eye-dropper button (browser support varies). */\n withEyeDropper?: boolean;\n /** Optional label rendered above the picker. */\n label?: string;\n /** Fires on every change with the formatted string and the `Color` instance. */\n onChange?: (value: string, color: Color) => void;\n}\n\nconst ALL_FORMATS: ColorPickerFormat[] = [\"hex\", \"rgb\", \"rgba\", \"hsl\", \"hsla\"];\n\n/** Parse the text in the input back into a `ColorInput`, or `null` if invalid. */\nfunction parseValue(text: string, format: ColorPickerFormat): ColorInput | null {\n const t = text.trim();\n if (format === \"hex\") {\n return /^#([0-9a-f]{3}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(t)\n ? { type: \"hex\", value: t }\n : null;\n }\n const n = t.match(/-?\\d*\\.?\\d+/g)?.map(Number) ?? [];\n if (format === \"rgb\" && n.length >= 3) return { type: \"rgb\", r: n[0], g: n[1], b: n[2] };\n if (format === \"rgba\" && n.length >= 4)\n return { type: \"rgba\", r: n[0], g: n[1], b: n[2], a: n[3] };\n if (format === \"hsl\" && n.length >= 3) return { type: \"hsl\", h: n[0], s: n[1], l: n[2] };\n if (format === \"hsla\" && n.length >= 4)\n return { type: \"hsla\", h: n[0], s: n[1], l: n[2], a: n[3] };\n return null;\n}\n\n/** Format a `Color` into the requested CSS string. */\nfunction colorToString(color: Color, format: ColorPickerFormat): string {\n switch (format) {\n case \"hex\": {\n const { r, g, b } = color.getRgb();\n const a = color.getRgba().a;\n const hex = `#${[r, g, b].map((v) => Math.round(v).toString(16).padStart(2, \"0\")).join(\"\")}`;\n return a < 1\n ? `${hex}${Math.round(a * 255).toString(16).padStart(2, \"0\")}`\n : hex;\n }\n case \"rgb\": {\n const { r, g, b } = color.getRgb();\n return `rgb(${r}, ${g}, ${b})`;\n }\n case \"rgba\": {\n const { r, g, b, a } = color.getRgba();\n return `rgba(${r}, ${g}, ${b}, ${a})`;\n }\n case \"hsl\": {\n const { h, s, l } = color.getHsl();\n return `hsl(${h}, ${s}%, ${l}%)`;\n }\n case \"hsla\": {\n const { h, s, l, a } = color.getHsla();\n return `hsla(${h}, ${s}%, ${l}%, ${a})`;\n }\n default:\n return color.getHex();\n }\n}\n\nexport const ColorPicker: React.FC<ColorPickerProps> = ({\n defaultValue = \"#3641f5\",\n defaultFormat = \"hex\",\n formats = ALL_FORMATS,\n showInput = true,\n withEyeDropper = false,\n label,\n onChange,\n className,\n ...rest\n}) => {\n // Internal state lives in full-fidelity HSVA — the picker's native space.\n // Feeding anything lossier (e.g. hex) back into the controlled picker makes\n // the knobs fight the cursor (hue/alpha collapse on round-trip), which is\n // why drag would freeze or snap.\n const [hsva, setHsva] = useState<Hsva>(() =>\n new Color({ type: \"hex\", value: defaultValue }).getHsva()\n );\n const [format, setFormat] = useState<ColorPickerFormat>(defaultFormat);\n const [isOpen, setIsOpen] = useState(false);\n const [popupPosition, setPopupPosition] = useState({\n left: 0,\n top: 0,\n width: 320,\n });\n // While the input is focused we keep a raw draft so partial/invalid typing\n // isn't clobbered by the normalized value.\n const [draft, setDraft] = useState<string | null>(null);\n // HSVA is integer-quantized, so we keep the user's exact text (defaultValue\n // or typed) and show it verbatim until the picker actually changes color.\n const [exact, setExact] = useState<{ format: ColorPickerFormat; value: string } | null>(\n () => ({ format: \"hex\", value: defaultValue })\n );\n\n const colorInput = useMemo(() => ({ type: \"hsva\" as const, ...hsva }), [hsva]);\n const currentColor = useMemo(() => new Color(colorInput), [colorInput]);\n const display =\n exact && exact.format === format ? exact.value : colorToString(currentColor, format);\n const inputValue = draft ?? display;\n\n // The picker's internal drag layer unbinds its document listeners whenever\n // the `onChange` identity changes (its cleanup effect depends on it), which\n // would kill an in-flight drag after the first tick. Keep the handler\n // identity-stable and read mutable values through refs.\n const hsvaRef = useRef(hsva);\n hsvaRef.current = hsva;\n const formatRef = useRef(format);\n formatRef.current = format;\n const onChangeRef = useRef(onChange);\n onChangeRef.current = onChange;\n const rootRef = useRef<HTMLDivElement>(null);\n const triggerRef = useRef<HTMLButtonElement>(null);\n const popupRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (!isOpen) return;\n\n const handlePointerDown = (event: MouseEvent) => {\n const target = event.target as Node;\n if (\n rootRef.current &&\n !rootRef.current.contains(target) &&\n !popupRef.current?.contains(target)\n ) {\n setIsOpen(false);\n }\n };\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") setIsOpen(false);\n };\n\n document.addEventListener(\"mousedown\", handlePointerDown);\n document.addEventListener(\"keydown\", handleEscape);\n return () => {\n document.removeEventListener(\"mousedown\", handlePointerDown);\n document.removeEventListener(\"keydown\", handleEscape);\n };\n }, [isOpen]);\n\n const updatePopupPosition = useCallback(() => {\n const trigger = triggerRef.current;\n if (!trigger) return;\n\n const rect = trigger.getBoundingClientRect();\n const viewportPadding = 16;\n const gap = 8;\n const width = Math.min(320, window.innerWidth - viewportPadding * 2);\n const popupHeight = popupRef.current?.offsetHeight ?? 306;\n const fitsBelow = window.innerHeight - rect.bottom - gap >= popupHeight;\n const top = fitsBelow || rect.top < popupHeight + gap\n ? rect.bottom + gap\n : rect.top - popupHeight - gap;\n const left = Math.min(\n Math.max(rect.left, viewportPadding),\n window.innerWidth - width - viewportPadding\n );\n\n setPopupPosition({ left, top: Math.max(viewportPadding, top), width });\n }, []);\n\n useLayoutEffect(() => {\n if (!isOpen) return;\n\n updatePopupPosition();\n window.addEventListener(\"resize\", updatePopupPosition);\n window.addEventListener(\"scroll\", updatePopupPosition, true);\n return () => {\n window.removeEventListener(\"resize\", updatePopupPosition);\n window.removeEventListener(\"scroll\", updatePopupPosition, true);\n };\n }, [isOpen, updatePopupPosition]);\n\n const handlePickerChange = useCallback((next: Color) => {\n const nv = next.getHsva();\n const cur = hsvaRef.current;\n // The picker re-emits the current color on mount; ignore no-op changes so\n // the exact defaultValue isn't clobbered.\n if (nv.h === cur.h && nv.s === cur.s && nv.v === cur.v && nv.a === cur.a) return;\n setHsva(nv);\n setExact(null);\n setDraft(null);\n onChangeRef.current?.(colorToString(next, formatRef.current), next);\n }, []);\n\n const handleFormatChange = (f: ColorPickerFormat) => {\n setFormat(f);\n setDraft(null);\n onChange?.(\n exact && exact.format === f ? exact.value : colorToString(currentColor, f),\n currentColor\n );\n };\n\n const handleInputChange = (text: string) => {\n setDraft(text);\n const parsed = parseValue(text, format);\n if (parsed) {\n const c = new Color(parsed);\n setHsva(c.getHsva());\n setExact({ format, value: text.trim() });\n onChange?.(text.trim(), c);\n }\n };\n\n return (\n <div\n ref={rootRef}\n className={cn(\"relative w-full max-w-sm\", className)}\n {...rest}\n >\n {label && (\n <span className=\"mb-1.5 block text-sm font-medium text-gray-700 dark:text-gray-400\">\n {label}\n </span>\n )}\n <button\n ref={triggerRef}\n type=\"button\"\n aria-haspopup=\"dialog\"\n aria-expanded={isOpen}\n aria-label={label ? `Open ${label} color picker` : \"Open color picker\"}\n onClick={() => setIsOpen((open) => !open)}\n className=\"flex h-11 w-full items-center gap-3 rounded-lg border border-gray-300 bg-white px-3 text-left shadow-theme-xs transition hover:bg-gray-50 focus:border-brand-300 focus:outline-hidden focus:ring-3 focus:ring-brand-500/10 dark:border-gray-700 dark:bg-gray-900 dark:hover:bg-white/[0.03] dark:focus:border-brand-800\"\n >\n <span\n aria-hidden=\"true\"\n className=\"h-7 w-7 shrink-0 rounded-md border border-gray-200 dark:border-gray-700\"\n style={{ backgroundColor: currentColor.format(\"rgba\") }}\n />\n <span className=\"min-w-0 flex-1 truncate font-mono text-sm text-gray-800 dark:text-white/90\">\n {display}\n </span>\n <ChevronDown\n aria-hidden=\"true\"\n className={cn(\n \"h-4 w-4 shrink-0 text-gray-500 transition-transform dark:text-gray-400\",\n isOpen && \"rotate-180\"\n )}\n />\n </button>\n\n {isOpen && typeof document !== \"undefined\" && createPortal(\n <div\n ref={popupRef}\n role=\"dialog\"\n aria-label={label ? `${label} color picker` : \"Color picker\"}\n className={cn(\n \"fixed rounded-2xl border border-gray-200 bg-white p-3 shadow-theme-lg dark:border-gray-700 dark:bg-gray-900\",\n layers.portal\n )}\n style={{\n left: popupPosition.left,\n top: popupPosition.top,\n width: popupPosition.width,\n }}\n >\n <RBColorPicker\n color={colorInput}\n onChange={handlePickerChange}\n className=\"h-auto w-full\"\n >\n {/* Overflow would clip the drag knobs beyond the track bounds. */}\n <RBColorPicker.Saturation className=\"mb-4 h-40 rounded-lg\" />\n <div className=\"flex items-center gap-3\">\n {withEyeDropper && (\n <RBColorPicker.EyeDropper className=\"flex h-9 w-9 shrink-0 items-center justify-center rounded-lg border border-gray-300 text-gray-600 hover:bg-gray-50 dark:border-gray-700 dark:text-gray-300 dark:hover:bg-white/[0.03]\">\n <Pipette className=\"h-4 w-4\" aria-hidden=\"true\" />\n </RBColorPicker.EyeDropper>\n )}\n <div className=\"flex flex-1 flex-col gap-3\">\n <RBColorPicker.Hue className=\"h-4\" />\n <RBColorPicker.Alpha className=\"h-4\" />\n </div>\n </div>\n </RBColorPicker>\n\n {showInput && (\n <div className=\"mt-4 flex items-stretch gap-2\">\n {formats.length > 1 && (\n <span className=\"relative shrink-0\">\n <select\n aria-label=\"Color format\"\n value={format}\n onChange={(e) => handleFormatChange(e.target.value as ColorPickerFormat)}\n className=\"h-11 appearance-none rounded-lg border border-gray-300 bg-white pl-3 pr-8 text-sm text-gray-700 focus:outline-hidden dark:border-gray-700 dark:bg-gray-900 dark:text-gray-300\"\n >\n {formats.map((f) => (\n <option key={f} value={f}>\n {f.toUpperCase()}\n </option>\n ))}\n </select>\n <ChevronDown\n aria-hidden=\"true\"\n className=\"pointer-events-none absolute right-2.5 top-1/2 -translate-y-1/2 text-gray-500 dark:text-gray-400\"\n size={14}\n />\n </span>\n )}\n <input\n aria-label=\"Color value\"\n value={inputValue}\n onChange={(e) => handleInputChange(e.target.value)}\n onBlur={() => setDraft(null)}\n className=\"h-11 min-w-0 flex-1 rounded-lg border border-gray-300 bg-white px-3 font-mono text-sm text-gray-800 focus:outline-hidden dark:border-gray-700 dark:bg-gray-900 dark:text-white/90\"\n />\n </div>\n )}\n </div>,\n document.body\n )}\n </div>\n );\n};\n"]}
|