@archpublicwebsite/rangepicker 1.2.5 → 1.2.7

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.
@@ -1 +1 @@
1
- {"version":3,"file":"Rangepicker.vue.d.ts","sourceRoot":"","sources":["../src/Rangepicker.vue"],"names":[],"mappings":"AA4jBA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAInC,OAAO,KAAK,EAAe,gBAAgB,EAAE,MAAM,SAAS,CAAC;;;mBAgBjB,MAAM;iBAAW,MAAM;;;;;;;mBAAvB,MAAM;iBAAW,MAAM;;;;;;;;;;;;;;;;;;;AA+lBnE,wBAUG"}
1
+ {"version":3,"file":"Rangepicker.vue.d.ts","sourceRoot":"","sources":["../src/Rangepicker.vue"],"names":[],"mappings":"AAikBA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAInC,OAAO,KAAK,EAAe,gBAAgB,EAAE,MAAM,SAAS,CAAC;;;mBAiBjB,MAAM;iBAAW,MAAM;;;;;;;mBAAvB,MAAM;iBAAW,MAAM;;;;;;;;;;;;;;;;;;;AAomBnE,wBAUG"}
@@ -5,7 +5,7 @@ import RangepickerInput from "./RangepickerInput.vue";
5
5
  * for the Rangepicker component.
6
6
  */
7
7
  const meta = {
8
- title: "Components/Rangepicker/Constraints",
8
+ title: "Components/Rangepicker/Examples",
9
9
  component: RangepickerInput,
10
10
  tags: ['autodocs'],
11
11
  parameters: {
@@ -5,7 +5,7 @@ import RangepickerInput from "./RangepickerInput.vue";
5
5
  * for the Rangepicker component.
6
6
  */
7
7
  const meta = {
8
- title: "Components/Rangepicker/Formatting",
8
+ title: "Components/Rangepicker/Examples",
9
9
  component: RangepickerInput,
10
10
  tags: ['autodocs'],
11
11
  parameters: {
@@ -49,5 +49,9 @@ type Story = StoryObj<typeof RangepickerInput>;
49
49
  * - **Theming** - Color and visual customization
50
50
  * - **Special Dates** - Holidays and disabled dates
51
51
  */
52
- export declare const Default: Story;
52
+ export declare const QuickStart: Story;
53
+ /**
54
+ * Props API overview to explore all supported props and options.
55
+ */
56
+ export declare const PropsApi: Story;
53
57
  //# sourceMappingURL=RangepickerInput.stories.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"RangepickerInput.stories.d.ts","sourceRoot":"","sources":["../src/RangepickerInput.stories.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEtD,OAAO,gBAAgB,MAAM,wBAAwB,CAAC;AAEtD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,gBAAgB,CAyIvC,CAAC;AAEF,eAAe,IAAI,CAAC;AAEpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE/C;;;;;;;;;;GAUG;AACH,eAAO,MAAM,OAAO,EAAE,KAqBrB,CAAC"}
1
+ {"version":3,"file":"RangepickerInput.stories.d.ts","sourceRoot":"","sources":["../src/RangepickerInput.stories.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEtD,OAAO,gBAAgB,MAAM,wBAAwB,CAAC;AAEtD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,gBAAgB,CAyIvC,CAAC;AAEF,eAAe,IAAI,CAAC;AAEpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE/C;;;;;;;;;;GAUG;AACH,eAAO,MAAM,UAAU,EAAE,KAmBxB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,QAAQ,EAAE,KAuCtB,CAAC"}
@@ -36,17 +36,17 @@ import RangepickerInput from "./RangepickerInput.vue";
36
36
  * - **Special Dates** - Holidays and disabled dates
37
37
  */
38
38
  const meta = {
39
- title: "Components/Rangepicker/Overview",
39
+ title: "Components/Rangepicker/How to use it",
40
40
  component: RangepickerInput,
41
41
  tags: ['autodocs'],
42
42
  parameters: {
43
43
  docs: {
44
44
  description: {
45
45
  component: `
46
- A flexible date range picker component with responsive design,
47
- customizable theming, and comprehensive date constraints.
46
+ A flexible date range picker component with responsive design,
47
+ customizable theming, and comprehensive date constraints.
48
48
 
49
- See the **Props** categories in the sidebar for detailed documentation.
49
+ Use **Quick Start** to get going fast, then review **Props API** for configuration details.
50
50
  `,
51
51
  },
52
52
  },
@@ -180,12 +180,12 @@ export default meta;
180
180
  * - **Theming** - Color and visual customization
181
181
  * - **Special Dates** - Holidays and disabled dates
182
182
  */
183
- export const Default = {
183
+ export const QuickStart = {
184
184
  parameters: {
185
185
  docs: {
186
186
  description: {
187
187
  story: `
188
- ### Default Configuration
188
+ ### Quick Start
189
189
 
190
190
  The default rangepicker setup with:
191
191
  - Desktop variant (dropdown calendar)
@@ -195,8 +195,49 @@ The default rangepicker setup with:
195
195
  - Min date: Today
196
196
 
197
197
  Click the input field to open the calendar.
198
+ `,
199
+ },
200
+ },
201
+ },
202
+ };
203
+ /**
204
+ * Props API overview to explore all supported props and options.
205
+ */
206
+ export const PropsApi = {
207
+ args: {
208
+ modelValue: "",
209
+ placeholder: "Select dates",
210
+ id: "dates",
211
+ name: "dates",
212
+ variant: "desktop",
213
+ options: {
214
+ autoApply: false,
215
+ allowRepick: true,
216
+ dropdowns: {
217
+ minYear: new Date().getFullYear(),
218
+ maxYear: new Date().getFullYear() + 2,
219
+ months: true,
220
+ years: true,
221
+ },
222
+ format: 'DD MMM YYYY',
223
+ numberOfColumns: 2,
224
+ numberOfMonths: 2,
225
+ singleMode: false,
226
+ },
227
+ },
228
+ parameters: {
229
+ docs: {
230
+ description: {
231
+ story: `
232
+ ### Props API
233
+
234
+ Use the **Controls** panel to explore all supported props and options.
198
235
 
199
- > 💡 **Tip**: Check the other story categories in the sidebar for detailed examples of all features.
236
+ Common props:
237
+ - **modelValue** - Formatted range string
238
+ - **placeholder** - Input placeholder text
239
+ - **variant** - Desktop or mobile display
240
+ - **options** - Litepicker configuration (dates, formatting, constraints)
200
241
  `,
201
242
  },
202
243
  },
@@ -5,7 +5,7 @@ import RangepickerInput from "./RangepickerInput.vue";
5
5
  * for the Rangepicker component.
6
6
  */
7
7
  const meta = {
8
- title: "Components/Rangepicker/Modes",
8
+ title: "Components/Rangepicker/Examples",
9
9
  component: RangepickerInput,
10
10
  tags: ['autodocs'],
11
11
  parameters: {
@@ -32,7 +32,7 @@ const generateHolidays = () => {
32
32
  * including holidays and disabled dates.
33
33
  */
34
34
  const meta = {
35
- title: "Components/Rangepicker/Special Dates",
35
+ title: "Components/Rangepicker/Examples",
36
36
  component: Rangepicker,
37
37
  tags: ['autodocs'],
38
38
  parameters: {
@@ -5,7 +5,7 @@ import RangepickerInput from "./RangepickerInput.vue";
5
5
  * for the Rangepicker component.
6
6
  */
7
7
  const meta = {
8
- title: "Components/Rangepicker/Theming",
8
+ title: "Components/Rangepicker/Examples",
9
9
  component: RangepickerInput,
10
10
  tags: ['autodocs'],
11
11
  parameters: {
@@ -327,14 +327,13 @@ const _hoisted_14 = {
327
327
  class: "arch-w-8"
328
328
  };
329
329
  const _hoisted_15 = { class: "rangepicker-weekdays" };
330
- const _hoisted_16 = { class: "rangepicker-grid" };
331
- const _hoisted_17 = ["disabled", "aria-label", "onClick", "onMouseenter"];
332
- const _hoisted_18 = {
330
+ const _hoisted_16 = ["disabled", "aria-label", "onClick", "onMouseenter"];
331
+ const _hoisted_17 = {
333
332
  key: 0,
334
333
  class: "arch-mt-4 arch-flex arch-items-center arch-justify-end arch-gap-2 arch-border-t arch-border-gray-200 arch-pt-4"
335
334
  };
336
- const _hoisted_19 = ["disabled"];
337
- const _hoisted_20 = { class: "arch-flex arch-items-center arch-gap-1" };
335
+ const _hoisted_18 = ["disabled"];
336
+ const _hoisted_19 = { class: "arch-flex arch-items-center arch-gap-1" };
338
337
  const _sfc_main$1 = /* @__PURE__ */ defineComponent({
339
338
  __name: "Rangepicker",
340
339
  props: {
@@ -437,7 +436,12 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
437
436
  const { width: windowWidth } = useWindowSize();
438
437
  const calendarStyle = ref({});
439
438
  function updatePosition() {
440
- if (props.variant === "mobile") return;
439
+ if (props.variant === "mobile") {
440
+ calendarStyle.value = {
441
+ "--border-radius-day": props.borderRadius
442
+ };
443
+ return;
444
+ }
441
445
  nextTick(() => {
442
446
  const position = calculatePosition(
443
447
  props.triggerElement,
@@ -700,7 +704,10 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
700
704
  }, toDisplayString(weekday), 1);
701
705
  }), 128))
702
706
  ]),
703
- createElementVNode("div", _hoisted_16, [
707
+ createElementVNode("div", {
708
+ class: "rangepicker-grid",
709
+ onMouseleave: handleDayLeave
710
+ }, [
704
711
  (openBlock(true), createElementBlock(Fragment, null, renderList(monthData.days, (day) => {
705
712
  return openBlock(), createElementBlock("button", {
706
713
  key: day.date.unix(),
@@ -708,17 +715,16 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
708
715
  disabled: day.isDisabled,
709
716
  "aria-label": day.date.format("MMMM D, YYYY"),
710
717
  onClick: (e) => selectDate(day, e),
711
- onMouseenter: (e) => handleDayHover(day, e),
712
- onMouseleave: handleDayLeave
718
+ onMouseenter: (e) => handleDayHover(day, e)
713
719
  }, [
714
720
  createElementVNode("span", null, toDisplayString(day.date.date()), 1)
715
- ], 42, _hoisted_17);
721
+ ], 42, _hoisted_16);
716
722
  }), 128))
717
- ])
723
+ ], 32)
718
724
  ]);
719
725
  }), 128))
720
726
  ]),
721
- !__props.autoApply ? (openBlock(), createElementBlock("div", _hoisted_18, [
727
+ !__props.autoApply ? (openBlock(), createElementBlock("div", _hoisted_17, [
722
728
  createElementVNode("button", {
723
729
  class: "arch-px-4 arch-py-2 arch-text-sm arch-font-medium arch-text-gray-700 hover:arch-bg-gray-100 arch-rounded-lg arch-transition-colors",
724
730
  onClick: cancel
@@ -730,7 +736,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
730
736
  }),
731
737
  disabled: !localStartDate.value || !localEndDate.value,
732
738
  onClick: apply
733
- }, " Apply ", 12, _hoisted_19)
739
+ }, " Apply ", 12, _hoisted_18)
734
740
  ])) : createCommentVNode("", true)
735
741
  ]),
736
742
  showTooltipComputed.value ? (openBlock(), createElementBlock("div", {
@@ -738,7 +744,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
738
744
  class: "rangepicker-tooltip",
739
745
  style: normalizeStyle(tooltipStyle.value)
740
746
  }, [
741
- createElementVNode("div", _hoisted_20, toDisplayString(tooltipText.value), 1)
747
+ createElementVNode("div", _hoisted_19, toDisplayString(tooltipText.value), 1)
742
748
  ], 4)) : createCommentVNode("", true)
743
749
  ], 6)
744
750
  ])) : createCommentVNode("", true)
@@ -757,7 +763,7 @@ const _export_sfc = (sfc, props) => {
757
763
  }
758
764
  return target;
759
765
  };
760
- const Rangepicker = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-e38d5229"]]);
766
+ const Rangepicker = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-7627e61d"]]);
761
767
  const _hoisted_1 = { class: "rangepicker-input-container" };
762
768
  const _hoisted_2 = ["id", "value", "placeholder", "readonly", "name"];
763
769
  const _sfc_main = /* @__PURE__ */ defineComponent({
@@ -1 +1 @@
1
- {"version":3,"file":"rangepicker.js","sources":["../../../node_modules/.pnpm/dayjs@1.11.19/node_modules/dayjs/plugin/isBetween.js","../../../node_modules/.pnpm/dayjs@1.11.19/node_modules/dayjs/plugin/isSameOrAfter.js","../../../node_modules/.pnpm/dayjs@1.11.19/node_modules/dayjs/plugin/isSameOrBefore.js","../../../node_modules/.pnpm/dayjs@1.11.19/node_modules/dayjs/plugin/customParseFormat.js","../src/utils/date.ts","../src/utils/calendar.ts","../src/utils/position.ts","../src/Rangepicker.vue","../src/RangepickerInput.vue","../src/index.ts"],"sourcesContent":["!function(e,i){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=i():\"function\"==typeof define&&define.amd?define(i):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_isBetween=i()}(this,(function(){\"use strict\";return function(e,i,t){i.prototype.isBetween=function(e,i,s,f){var n=t(e),o=t(i),r=\"(\"===(f=f||\"()\")[0],u=\")\"===f[1];return(r?this.isAfter(n,s):!this.isBefore(n,s))&&(u?this.isBefore(o,s):!this.isAfter(o,s))||(r?this.isBefore(n,s):!this.isAfter(n,s))&&(u?this.isAfter(o,s):!this.isBefore(o,s))}}}));","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_isSameOrAfter=t()}(this,(function(){\"use strict\";return function(e,t){t.prototype.isSameOrAfter=function(e,t){return this.isSame(e,t)||this.isAfter(e,t)}}}));","!function(e,i){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=i():\"function\"==typeof define&&define.amd?define(i):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_isSameOrBefore=i()}(this,(function(){\"use strict\";return function(e,i){i.prototype.isSameOrBefore=function(e,i){return this.isSame(e,i)||this.isBefore(e,i)}}}));","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_customParseFormat=t()}(this,(function(){\"use strict\";var e={LTS:\"h:mm:ss A\",LT:\"h:mm A\",L:\"MM/DD/YYYY\",LL:\"MMMM D, YYYY\",LLL:\"MMMM D, YYYY h:mm A\",LLLL:\"dddd, MMMM D, YYYY h:mm A\"},t=/(\\[[^[]*\\])|([-_:/.,()\\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,n=/\\d/,r=/\\d\\d/,i=/\\d\\d?/,o=/\\d*[^-_:/,()\\s\\d]+/,s={},a=function(e){return(e=+e)+(e>68?1900:2e3)};var f=function(e){return function(t){this[e]=+t}},h=[/[+-]\\d\\d:?(\\d\\d)?|Z/,function(e){(this.zone||(this.zone={})).offset=function(e){if(!e)return 0;if(\"Z\"===e)return 0;var t=e.match(/([+-]|\\d\\d)/g),n=60*t[1]+(+t[2]||0);return 0===n?0:\"+\"===t[0]?-n:n}(e)}],u=function(e){var t=s[e];return t&&(t.indexOf?t:t.s.concat(t.f))},d=function(e,t){var n,r=s.meridiem;if(r){for(var i=1;i<=24;i+=1)if(e.indexOf(r(i,0,t))>-1){n=i>12;break}}else n=e===(t?\"pm\":\"PM\");return n},c={A:[o,function(e){this.afternoon=d(e,!1)}],a:[o,function(e){this.afternoon=d(e,!0)}],Q:[n,function(e){this.month=3*(e-1)+1}],S:[n,function(e){this.milliseconds=100*+e}],SS:[r,function(e){this.milliseconds=10*+e}],SSS:[/\\d{3}/,function(e){this.milliseconds=+e}],s:[i,f(\"seconds\")],ss:[i,f(\"seconds\")],m:[i,f(\"minutes\")],mm:[i,f(\"minutes\")],H:[i,f(\"hours\")],h:[i,f(\"hours\")],HH:[i,f(\"hours\")],hh:[i,f(\"hours\")],D:[i,f(\"day\")],DD:[r,f(\"day\")],Do:[o,function(e){var t=s.ordinal,n=e.match(/\\d+/);if(this.day=n[0],t)for(var r=1;r<=31;r+=1)t(r).replace(/\\[|\\]/g,\"\")===e&&(this.day=r)}],w:[i,f(\"week\")],ww:[r,f(\"week\")],M:[i,f(\"month\")],MM:[r,f(\"month\")],MMM:[o,function(e){var t=u(\"months\"),n=(u(\"monthsShort\")||t.map((function(e){return e.slice(0,3)}))).indexOf(e)+1;if(n<1)throw new Error;this.month=n%12||n}],MMMM:[o,function(e){var t=u(\"months\").indexOf(e)+1;if(t<1)throw new Error;this.month=t%12||t}],Y:[/[+-]?\\d+/,f(\"year\")],YY:[r,function(e){this.year=a(e)}],YYYY:[/\\d{4}/,f(\"year\")],Z:h,ZZ:h};function l(n){var r,i;r=n,i=s&&s.formats;for(var o=(n=r.replace(/(\\[[^\\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(t,n,r){var o=r&&r.toUpperCase();return n||i[r]||e[r]||i[o].replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g,(function(e,t,n){return t||n.slice(1)}))}))).match(t),a=o.length,f=0;f<a;f+=1){var h=o[f],u=c[h],d=u&&u[0],l=u&&u[1];o[f]=l?{regex:d,parser:l}:h.replace(/^\\[|\\]$/g,\"\")}return function(e){for(var t={},n=0,r=0;n<a;n+=1){var i=o[n];if(\"string\"==typeof i)r+=i.length;else{var s=i.regex,f=i.parser,h=e.slice(r),u=s.exec(h)[0];f.call(t,u),e=e.replace(u,\"\")}}return function(e){var t=e.afternoon;if(void 0!==t){var n=e.hours;t?n<12&&(e.hours+=12):12===n&&(e.hours=0),delete e.afternoon}}(t),t}}return function(e,t,n){n.p.customParseFormat=!0,e&&e.parseTwoDigitYear&&(a=e.parseTwoDigitYear);var r=t.prototype,i=r.parse;r.parse=function(e){var t=e.date,r=e.utc,o=e.args;this.$u=r;var a=o[1];if(\"string\"==typeof a){var f=!0===o[2],h=!0===o[3],u=f||h,d=o[2];h&&(d=o[2]),s=this.$locale(),!f&&d&&(s=n.Ls[d]),this.$d=function(e,t,n,r){try{if([\"x\",\"X\"].indexOf(t)>-1)return new Date((\"X\"===t?1e3:1)*e);var i=l(t)(e),o=i.year,s=i.month,a=i.day,f=i.hours,h=i.minutes,u=i.seconds,d=i.milliseconds,c=i.zone,m=i.week,M=new Date,Y=a||(o||s?1:M.getDate()),p=o||M.getFullYear(),v=0;o&&!s||(v=s>0?s-1:M.getMonth());var D,w=f||0,g=h||0,y=u||0,L=d||0;return c?new Date(Date.UTC(p,v,Y,w,g,y,L+60*c.offset*1e3)):n?new Date(Date.UTC(p,v,Y,w,g,y,L)):(D=new Date(p,v,Y,w,g,y,L),m&&(D=r(D).week(m).toDate()),D)}catch(e){return new Date(\"\")}}(t,a,r,n),this.init(),d&&!0!==d&&(this.$L=this.locale(d).$L),u&&t!=this.format(a)&&(this.$d=new Date(\"\")),s={}}else if(a instanceof Array)for(var c=a.length,m=1;m<=c;m+=1){o[1]=a[m-1];var M=n.apply(this,o);if(M.isValid()){this.$d=M.$d,this.$L=M.$L,this.init();break}m===c&&(this.$d=new Date(\"\"))}else i.call(this,e)}}}));","import type { Dayjs } from 'dayjs'\nimport dayjs from 'dayjs'\nimport isBetween from 'dayjs/plugin/isBetween'\nimport isSameOrAfter from 'dayjs/plugin/isSameOrAfter'\nimport isSameOrBefore from 'dayjs/plugin/isSameOrBefore'\nimport customParseFormat from 'dayjs/plugin/customParseFormat'\n\ndayjs.extend(isBetween)\ndayjs.extend(isSameOrAfter)\ndayjs.extend(isSameOrBefore)\ndayjs.extend(customParseFormat)\n\nexport { dayjs }\nexport type { Dayjs }\n\nexport function parseDate(date: string | Date | Dayjs, format?: string): Dayjs {\n if (dayjs.isDayjs(date))\n return date\n return format ? dayjs(date, format) : dayjs(date)\n}\n\nexport function formatDate(date: Dayjs, format: string = 'YYYY-MM-DD'): string {\n return date.format(format)\n}\n\nexport function isDateInRange(date: Dayjs, start: Dayjs, end: Dayjs): boolean {\n return date.isBetween(start, end, 'day', '[]')\n}\n\nexport function getDaysBetween(start: Dayjs, end: Dayjs): number {\n return end.diff(start, 'day')\n}\n\nexport function isWeekend(date: Dayjs): boolean {\n const day = date.day()\n return day === 0 || day === 6 // Sunday or Saturday\n}\n\nexport function isToday(date: Dayjs): boolean {\n return date.isSame(dayjs(), 'day')\n}\n","import type { CalendarDay, CalendarMonth } from '../types'\nimport { type Dayjs, dayjs } from './date'\n\nexport function getMonthDays(\n monthOffset: number,\n currentDate: Dayjs = dayjs(),\n): {\n month: Dayjs\n days: Array<{\n date: Dayjs\n isPrevMonth: boolean\n isCurrentMonth: boolean\n isNextMonth: boolean\n }>\n } {\n const month = currentDate.add(monthOffset, 'month').startOf('month')\n const firstDayOfMonth = month.day()\n const daysInMonth = month.daysInMonth()\n const daysInPrevMonth = month.subtract(1, 'month').daysInMonth()\n\n const days: Array<{\n date: Dayjs\n isPrevMonth: boolean\n isCurrentMonth: boolean\n isNextMonth: boolean\n }> = []\n\n // Previous month days\n for (let i = firstDayOfMonth - 1; i >= 0; i--) {\n const date = month.subtract(1, 'month').date(daysInPrevMonth - i)\n days.push({\n date,\n isPrevMonth: true,\n isCurrentMonth: false,\n isNextMonth: false,\n })\n }\n\n // Current month days\n for (let i = 1; i <= daysInMonth; i++) {\n const date = month.date(i)\n days.push({\n date,\n isPrevMonth: false,\n isCurrentMonth: true,\n isNextMonth: false,\n })\n }\n\n // Next month days to complete the grid\n const remainingDays = 42 - days.length // 6 weeks * 7 days\n for (let i = 1; i <= remainingDays; i++) {\n const date = month.add(1, 'month').date(i)\n days.push({\n date,\n isPrevMonth: false,\n isCurrentMonth: false,\n isNextMonth: true,\n })\n }\n\n return { month, days }\n}\n\nexport function createCalendarDay(\n date: Dayjs,\n isPrevMonth: boolean,\n isCurrentMonth: boolean,\n isNextMonth: boolean,\n options: {\n startDate?: Dayjs | null\n endDate?: Dayjs | null\n minDate?: Dayjs | null\n maxDate?: Dayjs | null\n disabledDates?: Dayjs[]\n holidays?: Dayjs[]\n } = {},\n): CalendarDay {\n const {\n startDate = null,\n endDate = null,\n minDate = null,\n maxDate = null,\n disabledDates = [],\n holidays = [],\n } = options\n\n const isDisabled\n = (minDate && date.isBefore(minDate, 'day'))\n || (maxDate && date.isAfter(maxDate, 'day'))\n || disabledDates.some(d => d.isSame(date, 'day'))\n\n const isHoliday = holidays.some(h => h.isSame(date, 'day'))\n\n const isSelected\n = (startDate && date.isSame(startDate, 'day'))\n || (endDate && date.isSame(endDate, 'day'))\n\n const isInRange\n = startDate\n && endDate\n && date.isAfter(startDate, 'day')\n && date.isBefore(endDate, 'day')\n\n const isToday = date.isSame(dayjs(), 'day')\n\n const isWeekend = date.day() === 0 || date.day() === 6\n\n return {\n date,\n isPrevMonth,\n isCurrentMonth,\n isNextMonth,\n isDisabled,\n isHoliday,\n isWeekend,\n isSelected,\n isInRange,\n isToday,\n }\n}\n\nexport function generateCalendarMonths(\n numberOfMonths: number,\n startOffset: number = 0,\n options: {\n startDate?: Dayjs | null\n endDate?: Dayjs | null\n minDate?: Dayjs | null\n maxDate?: Dayjs | null\n disabledDates?: Dayjs[]\n holidays?: Dayjs[]\n } = {},\n): CalendarMonth[] {\n const months: CalendarMonth[] = []\n\n for (let i = 0; i < numberOfMonths; i++) {\n const { month, days } = getMonthDays(startOffset + i)\n\n const calendarDays = days.map(day =>\n createCalendarDay(\n day.date,\n day.isPrevMonth,\n day.isCurrentMonth,\n day.isNextMonth,\n options,\n ),\n )\n\n months.push({\n month,\n days: calendarDays,\n })\n }\n\n return months\n}\n\nexport function getWeekDays(locale: string = 'en', format: 'short' | 'narrow' = 'short'): string[] {\n const weekStart = dayjs().startOf('week')\n const days: string[] = []\n\n for (let i = 0; i < 7; i++) {\n const day = weekStart.add(i, 'day')\n days.push(format === 'short' ? day.format('ddd') : day.format('dd'))\n }\n\n return days\n}\n","export interface PositionResult {\n top?: number\n bottom?: number\n left: number\n transform?: string\n}\n\nexport function calculatePosition(\n triggerElement: HTMLElement | null,\n calendarElement: HTMLElement | null,\n preferredPosition: 'auto' | 'top' | 'bottom' = 'auto',\n): PositionResult {\n if (!triggerElement || !calendarElement)\n return { left: 0 }\n\n const triggerRect = triggerElement.getBoundingClientRect()\n const calendarRect = calendarElement.getBoundingClientRect()\n const viewportHeight = window.innerHeight\n const viewportWidth = window.innerWidth\n\n // Calculate available space\n const spaceAbove = triggerRect.top\n const spaceBelow = viewportHeight - triggerRect.bottom\n\n // Determine vertical position\n const position: PositionResult = { left: triggerRect.left }\n\n if (preferredPosition === 'auto') {\n if (spaceBelow >= calendarRect.height || spaceBelow > spaceAbove) {\n // Position below\n position.top = triggerRect.bottom + 8\n }\n else {\n // Position above\n position.bottom = viewportHeight - triggerRect.top + 8\n }\n }\n else if (preferredPosition === 'top') {\n position.bottom = viewportHeight - triggerRect.top + 8\n }\n else {\n position.top = triggerRect.bottom + 8\n }\n\n // Adjust horizontal position to keep within viewport\n if (position.left + calendarRect.width > viewportWidth)\n position.left = viewportWidth - calendarRect.width - 16\n\n if (position.left < 16)\n position.left = 16\n\n return position\n}\n","<script setup lang=\"ts\">\nimport { computed, nextTick, onMounted, onUnmounted, ref, watch } from \"vue\";\nimport {\n breakpointsTailwind,\n onClickOutside,\n useBreakpoints,\n useWindowSize,\n} from \"@vueuse/core\";\nimport type { Dayjs } from \"dayjs\";\nimport { dayjs } from \"./utils/date\";\nimport { generateCalendarMonths, getWeekDays } from \"./utils/calendar\";\nimport { calculatePosition } from \"./utils/position\";\nimport type { CalendarDay, RangepickerProps } from \"./types\";\n\nconst props = withDefaults(defineProps<RangepickerProps>(), {\n isOpen: false,\n variant: \"desktop\",\n valueOfMonths: 2,\n valueOfColumns: 2,\n format: \"YYYY-MM-DD\",\n delimiter: \" - \",\n showTooltip: true,\n autoApply: false,\n position: \"auto\",\n borderRadius: \"0.75rem\",\n});\nconst emit = defineEmits<{\n \"update:modelValue\": [value: { startDate: string; endDate: string }];\n \"update:isOpen\": [value: boolean];\n dateSelected: [date: Dayjs];\n rangeSelected: [start: Dayjs, end: Dayjs];\n}>();\nconst breakpoints = useBreakpoints(breakpointsTailwind);\nconst isMobile = breakpoints.smallerOrEqual(\"lg\");\nconst numberOfMonths = computed(() =>\n isMobile.value ? 1 : props.valueOfMonths,\n);\nconst numberOfColumns = computed(() =>\n isMobile.value ? 1 : props.valueOfColumns,\n);\n\n// Refs\nconst calendarRef = ref<HTMLElement | null>(null);\nconst isFadingOut = ref(false);\nconst hoveredDay = ref<CalendarDay | null>(null);\nconst monthOffset = ref(0);\n\n// Local state\nconst localIsOpen = ref(props.isOpen);\nconst localStartDate = ref<Dayjs | null>(null);\nconst localEndDate = ref<Dayjs | null>(null);\n\n// Parse dates from props\nconst parsedMinDate = computed(() =>\n props.minDate ? dayjs(props.minDate) : null,\n);\nconst parsedMaxDate = computed(() =>\n props.maxDate ? dayjs(props.maxDate) : null,\n);\nconst parsedDisabledDates = computed(\n () => props.disabledDates?.map((d) => dayjs(d)) || [],\n);\nconst parsedHolidays = computed(\n () => props.holidays?.map((h) => dayjs(h)) || [],\n);\n\n// Calendar data\nconst weekdays = computed(() => getWeekDays(\"en\", \"narrow\"));\n\n// For mobile view, show only 1 month\nconst effectiveNumberOfMonths = computed(() =>\n props.variant === \"mobile\" ? 1 : numberOfMonths.value,\n);\n\nconst calendarMonths = computed(() =>\n generateCalendarMonths(effectiveNumberOfMonths.value, monthOffset.value, {\n startDate: localStartDate.value,\n endDate: localEndDate.value,\n minDate: parsedMinDate.value,\n maxDate: parsedMaxDate.value,\n disabledDates: parsedDisabledDates.value,\n holidays: parsedHolidays.value,\n }),\n);\n\nconst nightCount = computed(() => {\n if (!localStartDate.value || !localEndDate.value) return 0;\n return localEndDate.value.diff(localStartDate.value, \"day\");\n});\n\nconst formattedDateRange = computed(() => {\n if (!localStartDate.value && !localEndDate.value) return \"\";\n else if (localStartDate.value && !localEndDate.value)\n return localStartDate.value.format(props.format);\n else if (localStartDate.value && localEndDate.value)\n return `${localStartDate.value.format(props.format)}${props.delimiter}${localEndDate.value.format(props.format)}`;\n else return \"\";\n});\n\n// Navigation\nconst canNavigatePrevious = computed(() => {\n if (!parsedMinDate.value) return true;\n const firstMonth = dayjs().add(monthOffset.value, \"month\").startOf(\"month\");\n return firstMonth.isAfter(parsedMinDate.value, \"month\");\n});\n\nconst canNavigateNext = computed(() => {\n if (!parsedMaxDate.value) return true;\n const lastMonth = dayjs()\n .add(monthOffset.value + effectiveNumberOfMonths.value - 1, \"month\")\n .endOf(\"month\");\n return lastMonth.isBefore(parsedMaxDate.value, \"month\");\n});\n\n// Positioning\nconst { width: windowWidth } = useWindowSize();\nconst calendarStyle = ref<Record<string, string>>({});\n\nfunction updatePosition() {\n if (props.variant === \"mobile\") return;\n\n nextTick(() => {\n const position = calculatePosition(\n props.triggerElement,\n calendarRef.value,\n props.position,\n );\n\n calendarStyle.value = {\n left: `${position.left}px`,\n ...(position.top !== undefined && { top: `${position.top}px` }),\n ...(position.bottom !== undefined && { bottom: `${position.bottom}px` }),\n ...(position.transform && { transform: position.transform }),\n '--border-radius-day': props.borderRadius,\n };\n });\n}\n\n// Tooltip\nconst tooltipStyle = ref<Record<string, string>>({});\nconst tooltipText = computed(() => {\n if (!hoveredDay.value || !localStartDate.value) return \"\";\n const nights = hoveredDay.value.date.diff(localStartDate.value, \"day\");\n if (nights <= 0) return \"\";\n return `${nights} ${nights === 1 ? \"night\" : \"nights\"}`;\n});\n\nconst showTooltipComputed = computed(() => {\n return (\n props.showTooltip &&\n hoveredDay.value &&\n localStartDate.value &&\n !localEndDate.value &&\n hoveredDay.value.date.isAfter(localStartDate.value, \"day\")\n );\n});\n\n// Methods\nfunction getDayClasses(day: CalendarDay) {\n const classes = [\"rangepicker-day\"];\n\n if (!day.isCurrentMonth) classes.push(\"rangepicker-day-other-month\");\n\n if (day.isDisabled) classes.push(\"rangepicker-day-disabled\");\n\n if (day.isToday) classes.push(\"rangepicker-day-today\");\n\n if (day.isWeekend && !day.isSelected) classes.push(\"rangepicker-day-weekend\");\n\n if (day.isHoliday) classes.push(\"rangepicker-day-holiday\");\n\n if (day.isSelected) {\n if (\n localStartDate.value &&\n localEndDate.value &&\n day.date.isSame(localStartDate.value, \"day\") &&\n day.date.isSame(localEndDate.value, \"day\")\n )\n classes.push(\"rangepicker-day-selected-single\");\n else if (\n localStartDate.value &&\n day.date.isSame(localStartDate.value, \"day\")\n )\n classes.push(\"rangepicker-day-selected-start\");\n else if (localEndDate.value && day.date.isSame(localEndDate.value, \"day\"))\n classes.push(\"rangepicker-day-selected-end\");\n else classes.push(\"rangepicker-day-selected\");\n }\n\n if (day.isInRange) classes.push(\"rangepicker-day-in-range\");\n\n // Add hover effect for potential range\n if (localStartDate.value && !localEndDate.value && hoveredDay.value) {\n const start = localStartDate.value;\n const hovered = hoveredDay.value.date;\n if (day.date.isAfter(start, \"day\") && day.date.isBefore(hovered, \"day\"))\n classes.push(\"rangepicker-day-hover-range\");\n else if (day.date.isSame(hovered, \"day\") && hovered.isAfter(start, \"day\"))\n classes.push(\"rangepicker-day-hover-end\");\n }\n\n return classes;\n}\n\nfunction selectDate(day: CalendarDay, event: MouseEvent) {\n event.preventDefault();\n if (day.isDisabled) return;\n\n emit(\"dateSelected\", day.date);\n\n // Range selection logic\n if (!localStartDate.value || (localStartDate.value && localEndDate.value)) {\n // Start new range\n localStartDate.value = day.date;\n localEndDate.value = null;\n } else {\n // Complete range\n if (day.date.isBefore(localStartDate.value, \"day\")) {\n // Swap if end is before start\n localEndDate.value = localStartDate.value;\n localStartDate.value = day.date;\n } else {\n localEndDate.value = day.date;\n }\n\n // Validate min/max days\n if (props.minDays) {\n const days = localEndDate.value.diff(localStartDate.value, \"day\");\n if (days < props.minDays) {\n // Invalid range, reset\n localStartDate.value = day.date;\n localEndDate.value = null;\n return;\n }\n }\n\n if (props.maxDays) {\n const days = localEndDate.value.diff(localStartDate.value, \"day\");\n if (days > props.maxDays) {\n // Invalid range, reset\n localStartDate.value = day.date;\n localEndDate.value = null;\n return;\n }\n }\n\n emit(\"rangeSelected\", localStartDate.value, localEndDate.value);\n\n if (props.autoApply) apply();\n }\n}\n\nfunction handleDayHover(day: CalendarDay, event: MouseEvent) {\n hoveredDay.value = day;\n\n if (props.showTooltip && localStartDate.value && !localEndDate.value)\n updateTooltipPosition(event);\n}\n\nfunction updateTooltipPosition(event: MouseEvent) {\n const rect = (event.target as HTMLElement).getBoundingClientRect();\n tooltipStyle.value = {\n left: `${rect.left + rect.width / 2}px`,\n top: `${rect.top - 10}px`,\n transform: \"translateX(-50%) translateY(-100%)\",\n };\n}\n\nfunction handleDayLeave() {\n hoveredDay.value = null;\n}\n\nfunction previousMonth() {\n if (canNavigatePrevious.value) monthOffset.value--;\n}\n\nfunction nextMonth() {\n if (canNavigateNext.value) monthOffset.value++;\n}\n\nfunction close() {\n if (isFadingOut.value) return;\n isFadingOut.value = true;\n setTimeout(() => {\n localIsOpen.value = false;\n emit(\"update:isOpen\", false);\n isFadingOut.value = false;\n }, 200); // match fade-leave-active duration\n}\n\nfunction apply() {\n if (localStartDate.value && localEndDate.value) {\n emit(\"update:modelValue\", {\n startDate: localStartDate.value.format(props.format),\n endDate: localEndDate.value.format(props.format),\n });\n }\n close();\n}\n\nfunction cancel() {\n // Reset to initial values\n if (props.modelValue?.startDate)\n localStartDate.value = dayjs(props.modelValue.startDate);\n else localStartDate.value = null;\n\n if (props.modelValue?.endDate)\n localEndDate.value = dayjs(props.modelValue.endDate);\n else localEndDate.value = null;\n\n close();\n}\n\n// Watch props\nwatch(\n () => props.isOpen,\n (newVal) => {\n localIsOpen.value = newVal;\n if (newVal) updatePosition();\n },\n);\n\n// Watch props\nwatch(\n () => props.close,\n (newVal) => {\n if (newVal) close();\n },\n);\n\nwatch(\n () => props.modelValue,\n (newVal) => {\n if (newVal?.startDate) localStartDate.value = dayjs(newVal.startDate);\n else localStartDate.value = null;\n\n if (newVal?.endDate) localEndDate.value = dayjs(newVal.endDate);\n else localEndDate.value = null;\n },\n { immediate: true, deep: true },\n);\n\nwatch([windowWidth, localIsOpen], () => {\n if (localIsOpen.value) updatePosition();\n});\n\n// Click outside to close\nonClickOutside(calendarRef, () => {\n if (localIsOpen.value && props.variant !== \"mobile\") close();\n});\n\n// Keyboard navigation\nfunction handleKeydown(e: KeyboardEvent) {\n if (!localIsOpen.value) return;\n\n if (e.key === \"Escape\") close();\n}\n\nonMounted(() => {\n document.addEventListener(\"keydown\", handleKeydown);\n if (props.isOpen) updatePosition();\n});\n\nonUnmounted(() => {\n document.removeEventListener(\"keydown\", handleKeydown);\n});\n</script>\n\n<template>\n <Teleport to=\"body\">\n <Transition :name=\"variant === 'mobile' ? 'slide-up' : 'fade'\">\n <div v-if=\"localIsOpen || isFadingOut\" class=\"rangepicker-overlay\">\n <!-- Backdrop -->\n <div class=\"rangepicker-backdrop\" @click=\"close\" />\n\n <!-- Calendar Container -->\n <div\n ref=\"calendarRef\"\n class=\"rangepicker-container\"\n :class=\"[variant === 'mobile' ? 'rangepicker-mobile' : '']\"\n :style=\"{ ...calendarStyle, ...colorStyles, borderRadius: props.borderRadius }\"\n >\n <!-- Header -->\n <div class=\"rangepicker-header\">\n <div class=\"arch-flex arch-items-center arch-justify-between\">\n <div>\n <p\n v-if=\"label\"\n class=\"arch-text-xs arch-font-medium arch-text-gray-500 arch-mb-1\"\n >\n {{ label }}\n </p>\n <p\n class=\"arch-text-sm arch-font-semibold arch-text-gray-900\"\n >\n {{ formattedDateRange || placeholder || \"Select dates\" }}\n </p>\n </div>\n <p\n v-if=\"nightCount > 0\"\n class=\"arch-text-xs arch-text-gray-500 arch-mt-1\"\n >\n {{ nightCount }} {{ nightCount === 1 ? \"night\" : \"nights\" }}\n </p>\n <!-- <button\n class=\"rangepicker-nav-button\"\n aria-label=\"Close\"\n @click=\"close\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"arch-h-5 arch-w-5\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z\"\n clip-rule=\"evenodd\"\n />\n </svg>\n </button> -->\n </div>\n </div>\n\n <!-- Calendar Body -->\n <div class=\"rangepicker-body\">\n <div\n class=\"rangepicker-month-grid\"\n >\n <div\n v-for=\"(monthData, index) in calendarMonths\"\n :key=\"monthData.month.format('YYYY-MM')\"\n class=\"rangepicker-month\"\n >\n <!-- Month Header -->\n <div class=\"rangepicker-month-header\">\n <button\n v-if=\"variant === 'mobile' || index === 0\"\n class=\"rangepicker-nav-button\"\n :disabled=\"!canNavigatePrevious\"\n aria-label=\"Previous month\"\n @click=\"previousMonth\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"arch-h-5 arch-w-5\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z\"\n clip-rule=\"evenodd\"\n />\n </svg>\n </button>\n <div v-else class=\"arch-w-8\"></div>\n\n <span class=\"rangepicker-month-title\">\n {{ monthData.month.format(\"MMMM YYYY\") }}\n </span>\n\n <button\n v-if=\"\n variant === 'mobile' ||\n index === calendarMonths.length - 1\n \"\n class=\"rangepicker-nav-button\"\n :disabled=\"!canNavigateNext\"\n aria-label=\"Next month\"\n @click=\"nextMonth\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"arch-h-5 arch-w-5\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z\"\n clip-rule=\"evenodd\"\n />\n </svg>\n </button>\n <div v-else class=\"arch-w-8\"></div>\n </div>\n\n <!-- Weekday Headers -->\n <div class=\"rangepicker-weekdays\">\n <div\n v-for=\"weekday in weekdays\"\n :key=\"weekday\"\n class=\"rangepicker-weekday\"\n >\n {{ weekday }}\n </div>\n </div>\n\n <!-- Calendar Grid -->\n <div class=\"rangepicker-grid\">\n <button\n v-for=\"day in monthData.days\"\n :key=\"day.date.unix()\"\n :class=\"getDayClasses(day)\"\n :disabled=\"day.isDisabled\"\n :aria-label=\"day.date.format('MMMM D, YYYY')\"\n @click=\"(e) => selectDate(day, e)\"\n @mouseenter=\"(e) => handleDayHover(day, e)\"\n @mouseleave=\"handleDayLeave\"\n >\n <span>{{ day.date.date() }}</span>\n </button>\n </div>\n </div>\n </div>\n\n <!-- Apply/Cancel Buttons (if not autoApply) -->\n <div\n v-if=\"!autoApply\"\n class=\"arch-mt-4 arch-flex arch-items-center arch-justify-end arch-gap-2 arch-border-t arch-border-gray-200 arch-pt-4\"\n >\n <button\n class=\"arch-px-4 arch-py-2 arch-text-sm arch-font-medium arch-text-gray-700 hover:arch-bg-gray-100 arch-rounded-lg arch-transition-colors\"\n @click=\"cancel\"\n >\n Cancel\n </button>\n <button\n class=\"arch-px-4 arch-py-2 arch-text-sm arch-font-medium arch-text-white arch-rounded-lg arch-transition-colors disabled:arch-opacity-50 disabled:arch-cursor-not-allowed\"\n :style=\"{\n backgroundColor: colorStyles?.['--color-primary'] \n ? `rgb(${colorStyles['--color-primary']})` \n : 'rgb(37 99 235)',\n }\"\n :disabled=\"!localStartDate || !localEndDate\"\n @click=\"apply\"\n >\n Apply\n </button>\n </div>\n </div>\n\n <!-- Tooltip -->\n <div\n v-if=\"showTooltipComputed\"\n class=\"rangepicker-tooltip\"\n :style=\"tooltipStyle\"\n >\n <div class=\"arch-flex arch-items-center arch-gap-1\">\n {{ tooltipText }}\n </div>\n </div>\n </div>\n </div>\n </Transition>\n </Teleport>\n</template>\n\n<style lang=\"scss\" scoped>\n@use \"./styles/rangepicker.scss\";\n</style>\n","<script setup lang=\"ts\">\nimport { computed, ref, watch } from 'vue'\nimport Rangepicker from './Rangepicker.vue'\nimport type { RangepickerInputProps } from './types'\n\n// Helper function to convert HEX to RGB\nfunction hexToRgb(hex: string): string | null {\n // Remove # if present\n hex = hex.replace(/^#/, '')\n\n // Handle 3-digit hex\n if (hex.length === 3) {\n hex = hex.split('').map(char => char + char).join('')\n }\n\n if (hex.length !== 6) {\n console.warn(`[Rangepicker] Invalid hex color: ${hex}`)\n return null\n }\n\n const r = parseInt(hex.substring(0, 2), 16)\n const g = parseInt(hex.substring(2, 4), 16)\n const b = parseInt(hex.substring(4, 6), 16)\n\n if (isNaN(r) || isNaN(g) || isNaN(b)) {\n return null\n }\n\n return `${r} ${g} ${b}`\n}\n\nconst props = withDefaults(defineProps<RangepickerInputProps>(), {\n readonly: true,\n variant: 'desktop',\n placeholder: 'Select dates',\n showClearButton: true,\n})\n\nconst emit = defineEmits<{\n 'update:modelValue': [value: string]\n 'focusin': []\n}>()\n\n// Refs\nconst inputRef = ref<HTMLInputElement | null>(null)\nconst wrapperRef = ref<HTMLElement | null>(null)\nconst isOpen = ref(false)\n\n// Parse the modelValue into start/end dates\nfunction parseValue(value?: string) {\n if (!value)\n return { startDate: '', endDate: '' }\n\n const parts = value.split(' - ')\n if (parts.length === 2) {\n return {\n startDate: parts[0].trim(),\n endDate: parts[1].trim(),\n }\n }\n return { startDate: '', endDate: '' }\n}\n\nwatch(() => props?.close, (cur) => {\n if (cur)\n inputRef.value.blur()\n})\nconst localValue = ref(parseValue(props.modelValue))\n\nconst displayValue = computed(() => {\n return props.modelValue || ''\n})\n\nconst inputClass = computed(() => {\n return props.class || 'arch-w-full arch-px-3 arch-py-2 arch-border arch-border-gray-300 arch-rounded-lg arch-text-sm arch-text-gray-900 focus:arch-outline-none focus:arch-ring-2 focus:arch-ring-blue-500 focus:arch-border-blue-500'\n})\n\nfunction openPicker() {\n isOpen.value = true\n}\n\nfunction onFocus() {\n emit('focusin')\n openPicker()\n}\n\nfunction handleUpdate(value: { startDate: string; endDate: string }) {\n localValue.value = value\n const formatted = `${value.startDate} - ${value.endDate}`\n emit('update:modelValue', formatted)\n}\n\nfunction clearValue() {\n localValue.value = { startDate: '', endDate: '' }\n emit('update:modelValue', '')\n isOpen.value = false\n}\n\nwatch(() => props.modelValue, (newVal) => {\n localValue.value = parseValue(newVal)\n})\n\n// Compute CSS variables for scoped styling\nconst colorStyles = computed(() => {\n const styles: Record<string, string> = {}\n\n if (props.primaryColor) {\n const rgb = hexToRgb(props.primaryColor)\n if (rgb) {\n styles['--color-primary'] = rgb\n }\n }\n\n if (props.secondaryColor) {\n const rgb = hexToRgb(props.secondaryColor)\n if (rgb) {\n styles['--color-secondary'] = rgb\n }\n }\n\n if (props.fontFamily) {\n styles['--rangepicker-font-family'] = props.fontFamily\n }\n\n return styles\n})\n</script>\n\n<template>\n <div ref=\"wrapperRef\" class=\"rangepicker-input-wrapper\" :style=\"colorStyles\">\n <div class=\"rangepicker-input-container\">\n <input :id=\"id\" ref=\"inputRef\" type=\"text\" :value=\"displayValue\" :placeholder=\"placeholder\" :readonly=\"readonly\"\n :name=\"name\" :class=\"inputClass\" @click=\"openPicker\" @focus=\"onFocus\" />\n \n <button v-if=\"showClearButton && displayValue\" type=\"button\" class=\"rangepicker-clear-button\"\n @click.stop=\"clearValue\" aria-label=\"Clear dates\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"arch-h-4 arch-w-4\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path fill-rule=\"evenodd\"\n d=\"M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z\"\n clip-rule=\"evenodd\" />\n </svg>\n </button>\n </div>\n\n <Rangepicker v-model=\"localValue\" v-model:is-open=\"isOpen\" :trigger-element=\"inputRef\" :min-date=\"minDate\"\n :max-date=\"maxDate\" :min-days=\"minDays\" :max-days=\"maxDays\"\n :value-of-months=\"numberOfMonths || 2\" :value-of-columns=\"numberOfColumns || 2\"\n :format=\"format || 'DD MMM YYYY'\" :auto-apply=\"autoApply !== false\"\n :show-tooltip=\"showTooltip !== false\" :variant=\"variant\" :close=\"props.close\" :color-styles=\"colorStyles\"\n :border-radius=\"borderRadius\" @update:model-value=\"handleUpdate\" />\n </div>\n</template>\n\n<style scoped lang=\"scss\">\n@use './styles/rangepicker.scss';\n\n.rangepicker-input-wrapper {\n position: relative;\n display: inline-block;\n width: 100%;\n font-family: var(--rangepicker-font-family, inherit);\n}\n\n.rangepicker-input-container {\n position: relative;\n display: flex;\n align-items: center;\n}\n\ninput {\n cursor: pointer;\n font-family: inherit;\n flex: 1;\n padding-right: 2.5rem;\n}\n\n.rangepicker-clear-button {\n position: absolute;\n right: 0.5rem;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0.25rem;\n background: transparent;\n border: none;\n border-radius: 0.375rem;\n color: #6b7280;\n cursor: pointer;\n transition: all 0.2s;\n z-index: 1;\n\n &:hover {\n color: #374151;\n background: #f3f4f6;\n }\n\n &:active {\n transform: translateY(-50%) scale(0.95);\n }\n\n &:focus {\n outline: none;\n box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.5);\n }\n}\n</style>\n","import { ref } from 'vue'\nimport './styles/rangepicker.scss'\nimport Rangepicker from './Rangepicker.vue'\nimport RangepickerInput from './RangepickerInput.vue'\nimport type { \n DateRange, \n RangepickerProps, \n RangepickerEmits, \n CalendarDay, \n CalendarMonth,\n RangepickerInputProps\n} from './types'\n\n// Default export - RangepickerInput (Litepicker-compatible wrapper)\nexport default RangepickerInput\n\n// Named exports\nexport { Rangepicker, RangepickerInput }\n\n// Type exports\nexport type { \n RangepickerProps, \n RangepickerInputProps,\n RangepickerEmits, \n DateRange, \n CalendarDay, \n CalendarMonth \n}\n\n// Vue 3 composable for easy integration\nexport function useRangepicker(triggerRef: any, options: Partial<RangepickerProps> = {}) {\n const isOpen = ref(false)\n const dateRange = ref<DateRange>({ startDate: '', endDate: '' })\n\n const open = () => { isOpen.value = true }\n const close = () => { isOpen.value = false }\n const toggle = () => { isOpen.value = !isOpen.value }\n\n return {\n isOpen,\n dateRange,\n open,\n close,\n toggle,\n options,\n }\n}\n"],"names":["this","e","i","t","n","r","o","a","f","h","u","d","l","s","c","m","M","_createBlock","_Teleport","_createVNode","_Transition","_openBlock","_createElementBlock","_hoisted_1","_createElementVNode","_normalizeClass","_hoisted_2","_toDisplayString","_Fragment","_renderList","_normalizeStyle"],"mappings":"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","x_google_ignoreList":[0,1,2,3]}
1
+ {"version":3,"file":"rangepicker.js","sources":["../../../node_modules/.pnpm/dayjs@1.11.19/node_modules/dayjs/plugin/isBetween.js","../../../node_modules/.pnpm/dayjs@1.11.19/node_modules/dayjs/plugin/isSameOrAfter.js","../../../node_modules/.pnpm/dayjs@1.11.19/node_modules/dayjs/plugin/isSameOrBefore.js","../../../node_modules/.pnpm/dayjs@1.11.19/node_modules/dayjs/plugin/customParseFormat.js","../src/utils/date.ts","../src/utils/calendar.ts","../src/utils/position.ts","../src/Rangepicker.vue","../src/RangepickerInput.vue","../src/index.ts"],"sourcesContent":["!function(e,i){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=i():\"function\"==typeof define&&define.amd?define(i):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_isBetween=i()}(this,(function(){\"use strict\";return function(e,i,t){i.prototype.isBetween=function(e,i,s,f){var n=t(e),o=t(i),r=\"(\"===(f=f||\"()\")[0],u=\")\"===f[1];return(r?this.isAfter(n,s):!this.isBefore(n,s))&&(u?this.isBefore(o,s):!this.isAfter(o,s))||(r?this.isBefore(n,s):!this.isAfter(n,s))&&(u?this.isAfter(o,s):!this.isBefore(o,s))}}}));","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_isSameOrAfter=t()}(this,(function(){\"use strict\";return function(e,t){t.prototype.isSameOrAfter=function(e,t){return this.isSame(e,t)||this.isAfter(e,t)}}}));","!function(e,i){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=i():\"function\"==typeof define&&define.amd?define(i):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_isSameOrBefore=i()}(this,(function(){\"use strict\";return function(e,i){i.prototype.isSameOrBefore=function(e,i){return this.isSame(e,i)||this.isBefore(e,i)}}}));","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_customParseFormat=t()}(this,(function(){\"use strict\";var e={LTS:\"h:mm:ss A\",LT:\"h:mm A\",L:\"MM/DD/YYYY\",LL:\"MMMM D, YYYY\",LLL:\"MMMM D, YYYY h:mm A\",LLLL:\"dddd, MMMM D, YYYY h:mm A\"},t=/(\\[[^[]*\\])|([-_:/.,()\\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,n=/\\d/,r=/\\d\\d/,i=/\\d\\d?/,o=/\\d*[^-_:/,()\\s\\d]+/,s={},a=function(e){return(e=+e)+(e>68?1900:2e3)};var f=function(e){return function(t){this[e]=+t}},h=[/[+-]\\d\\d:?(\\d\\d)?|Z/,function(e){(this.zone||(this.zone={})).offset=function(e){if(!e)return 0;if(\"Z\"===e)return 0;var t=e.match(/([+-]|\\d\\d)/g),n=60*t[1]+(+t[2]||0);return 0===n?0:\"+\"===t[0]?-n:n}(e)}],u=function(e){var t=s[e];return t&&(t.indexOf?t:t.s.concat(t.f))},d=function(e,t){var n,r=s.meridiem;if(r){for(var i=1;i<=24;i+=1)if(e.indexOf(r(i,0,t))>-1){n=i>12;break}}else n=e===(t?\"pm\":\"PM\");return n},c={A:[o,function(e){this.afternoon=d(e,!1)}],a:[o,function(e){this.afternoon=d(e,!0)}],Q:[n,function(e){this.month=3*(e-1)+1}],S:[n,function(e){this.milliseconds=100*+e}],SS:[r,function(e){this.milliseconds=10*+e}],SSS:[/\\d{3}/,function(e){this.milliseconds=+e}],s:[i,f(\"seconds\")],ss:[i,f(\"seconds\")],m:[i,f(\"minutes\")],mm:[i,f(\"minutes\")],H:[i,f(\"hours\")],h:[i,f(\"hours\")],HH:[i,f(\"hours\")],hh:[i,f(\"hours\")],D:[i,f(\"day\")],DD:[r,f(\"day\")],Do:[o,function(e){var t=s.ordinal,n=e.match(/\\d+/);if(this.day=n[0],t)for(var r=1;r<=31;r+=1)t(r).replace(/\\[|\\]/g,\"\")===e&&(this.day=r)}],w:[i,f(\"week\")],ww:[r,f(\"week\")],M:[i,f(\"month\")],MM:[r,f(\"month\")],MMM:[o,function(e){var t=u(\"months\"),n=(u(\"monthsShort\")||t.map((function(e){return e.slice(0,3)}))).indexOf(e)+1;if(n<1)throw new Error;this.month=n%12||n}],MMMM:[o,function(e){var t=u(\"months\").indexOf(e)+1;if(t<1)throw new Error;this.month=t%12||t}],Y:[/[+-]?\\d+/,f(\"year\")],YY:[r,function(e){this.year=a(e)}],YYYY:[/\\d{4}/,f(\"year\")],Z:h,ZZ:h};function l(n){var r,i;r=n,i=s&&s.formats;for(var o=(n=r.replace(/(\\[[^\\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(t,n,r){var o=r&&r.toUpperCase();return n||i[r]||e[r]||i[o].replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g,(function(e,t,n){return t||n.slice(1)}))}))).match(t),a=o.length,f=0;f<a;f+=1){var h=o[f],u=c[h],d=u&&u[0],l=u&&u[1];o[f]=l?{regex:d,parser:l}:h.replace(/^\\[|\\]$/g,\"\")}return function(e){for(var t={},n=0,r=0;n<a;n+=1){var i=o[n];if(\"string\"==typeof i)r+=i.length;else{var s=i.regex,f=i.parser,h=e.slice(r),u=s.exec(h)[0];f.call(t,u),e=e.replace(u,\"\")}}return function(e){var t=e.afternoon;if(void 0!==t){var n=e.hours;t?n<12&&(e.hours+=12):12===n&&(e.hours=0),delete e.afternoon}}(t),t}}return function(e,t,n){n.p.customParseFormat=!0,e&&e.parseTwoDigitYear&&(a=e.parseTwoDigitYear);var r=t.prototype,i=r.parse;r.parse=function(e){var t=e.date,r=e.utc,o=e.args;this.$u=r;var a=o[1];if(\"string\"==typeof a){var f=!0===o[2],h=!0===o[3],u=f||h,d=o[2];h&&(d=o[2]),s=this.$locale(),!f&&d&&(s=n.Ls[d]),this.$d=function(e,t,n,r){try{if([\"x\",\"X\"].indexOf(t)>-1)return new Date((\"X\"===t?1e3:1)*e);var i=l(t)(e),o=i.year,s=i.month,a=i.day,f=i.hours,h=i.minutes,u=i.seconds,d=i.milliseconds,c=i.zone,m=i.week,M=new Date,Y=a||(o||s?1:M.getDate()),p=o||M.getFullYear(),v=0;o&&!s||(v=s>0?s-1:M.getMonth());var D,w=f||0,g=h||0,y=u||0,L=d||0;return c?new Date(Date.UTC(p,v,Y,w,g,y,L+60*c.offset*1e3)):n?new Date(Date.UTC(p,v,Y,w,g,y,L)):(D=new Date(p,v,Y,w,g,y,L),m&&(D=r(D).week(m).toDate()),D)}catch(e){return new Date(\"\")}}(t,a,r,n),this.init(),d&&!0!==d&&(this.$L=this.locale(d).$L),u&&t!=this.format(a)&&(this.$d=new Date(\"\")),s={}}else if(a instanceof Array)for(var c=a.length,m=1;m<=c;m+=1){o[1]=a[m-1];var M=n.apply(this,o);if(M.isValid()){this.$d=M.$d,this.$L=M.$L,this.init();break}m===c&&(this.$d=new Date(\"\"))}else i.call(this,e)}}}));","import type { Dayjs } from 'dayjs'\nimport dayjs from 'dayjs'\nimport isBetween from 'dayjs/plugin/isBetween'\nimport isSameOrAfter from 'dayjs/plugin/isSameOrAfter'\nimport isSameOrBefore from 'dayjs/plugin/isSameOrBefore'\nimport customParseFormat from 'dayjs/plugin/customParseFormat'\n\ndayjs.extend(isBetween)\ndayjs.extend(isSameOrAfter)\ndayjs.extend(isSameOrBefore)\ndayjs.extend(customParseFormat)\n\nexport { dayjs }\nexport type { Dayjs }\n\nexport function parseDate(date: string | Date | Dayjs, format?: string): Dayjs {\n if (dayjs.isDayjs(date))\n return date\n return format ? dayjs(date, format) : dayjs(date)\n}\n\nexport function formatDate(date: Dayjs, format: string = 'YYYY-MM-DD'): string {\n return date.format(format)\n}\n\nexport function isDateInRange(date: Dayjs, start: Dayjs, end: Dayjs): boolean {\n return date.isBetween(start, end, 'day', '[]')\n}\n\nexport function getDaysBetween(start: Dayjs, end: Dayjs): number {\n return end.diff(start, 'day')\n}\n\nexport function isWeekend(date: Dayjs): boolean {\n const day = date.day()\n return day === 0 || day === 6 // Sunday or Saturday\n}\n\nexport function isToday(date: Dayjs): boolean {\n return date.isSame(dayjs(), 'day')\n}\n","import type { CalendarDay, CalendarMonth } from '../types'\nimport { type Dayjs, dayjs } from './date'\n\nexport function getMonthDays(\n monthOffset: number,\n currentDate: Dayjs = dayjs(),\n): {\n month: Dayjs\n days: Array<{\n date: Dayjs\n isPrevMonth: boolean\n isCurrentMonth: boolean\n isNextMonth: boolean\n }>\n } {\n const month = currentDate.add(monthOffset, 'month').startOf('month')\n const firstDayOfMonth = month.day()\n const daysInMonth = month.daysInMonth()\n const daysInPrevMonth = month.subtract(1, 'month').daysInMonth()\n\n const days: Array<{\n date: Dayjs\n isPrevMonth: boolean\n isCurrentMonth: boolean\n isNextMonth: boolean\n }> = []\n\n // Previous month days\n for (let i = firstDayOfMonth - 1; i >= 0; i--) {\n const date = month.subtract(1, 'month').date(daysInPrevMonth - i)\n days.push({\n date,\n isPrevMonth: true,\n isCurrentMonth: false,\n isNextMonth: false,\n })\n }\n\n // Current month days\n for (let i = 1; i <= daysInMonth; i++) {\n const date = month.date(i)\n days.push({\n date,\n isPrevMonth: false,\n isCurrentMonth: true,\n isNextMonth: false,\n })\n }\n\n // Next month days to complete the grid\n const remainingDays = 42 - days.length // 6 weeks * 7 days\n for (let i = 1; i <= remainingDays; i++) {\n const date = month.add(1, 'month').date(i)\n days.push({\n date,\n isPrevMonth: false,\n isCurrentMonth: false,\n isNextMonth: true,\n })\n }\n\n return { month, days }\n}\n\nexport function createCalendarDay(\n date: Dayjs,\n isPrevMonth: boolean,\n isCurrentMonth: boolean,\n isNextMonth: boolean,\n options: {\n startDate?: Dayjs | null\n endDate?: Dayjs | null\n minDate?: Dayjs | null\n maxDate?: Dayjs | null\n disabledDates?: Dayjs[]\n holidays?: Dayjs[]\n } = {},\n): CalendarDay {\n const {\n startDate = null,\n endDate = null,\n minDate = null,\n maxDate = null,\n disabledDates = [],\n holidays = [],\n } = options\n\n const isDisabled\n = (minDate && date.isBefore(minDate, 'day'))\n || (maxDate && date.isAfter(maxDate, 'day'))\n || disabledDates.some(d => d.isSame(date, 'day'))\n\n const isHoliday = holidays.some(h => h.isSame(date, 'day'))\n\n const isSelected\n = (startDate && date.isSame(startDate, 'day'))\n || (endDate && date.isSame(endDate, 'day'))\n\n const isInRange\n = startDate\n && endDate\n && date.isAfter(startDate, 'day')\n && date.isBefore(endDate, 'day')\n\n const isToday = date.isSame(dayjs(), 'day')\n\n const isWeekend = date.day() === 0 || date.day() === 6\n\n return {\n date,\n isPrevMonth,\n isCurrentMonth,\n isNextMonth,\n isDisabled,\n isHoliday,\n isWeekend,\n isSelected,\n isInRange,\n isToday,\n }\n}\n\nexport function generateCalendarMonths(\n numberOfMonths: number,\n startOffset: number = 0,\n options: {\n startDate?: Dayjs | null\n endDate?: Dayjs | null\n minDate?: Dayjs | null\n maxDate?: Dayjs | null\n disabledDates?: Dayjs[]\n holidays?: Dayjs[]\n } = {},\n): CalendarMonth[] {\n const months: CalendarMonth[] = []\n\n for (let i = 0; i < numberOfMonths; i++) {\n const { month, days } = getMonthDays(startOffset + i)\n\n const calendarDays = days.map(day =>\n createCalendarDay(\n day.date,\n day.isPrevMonth,\n day.isCurrentMonth,\n day.isNextMonth,\n options,\n ),\n )\n\n months.push({\n month,\n days: calendarDays,\n })\n }\n\n return months\n}\n\nexport function getWeekDays(locale: string = 'en', format: 'short' | 'narrow' = 'short'): string[] {\n const weekStart = dayjs().startOf('week')\n const days: string[] = []\n\n for (let i = 0; i < 7; i++) {\n const day = weekStart.add(i, 'day')\n days.push(format === 'short' ? day.format('ddd') : day.format('dd'))\n }\n\n return days\n}\n","export interface PositionResult {\n top?: number\n bottom?: number\n left: number\n transform?: string\n}\n\nexport function calculatePosition(\n triggerElement: HTMLElement | null,\n calendarElement: HTMLElement | null,\n preferredPosition: 'auto' | 'top' | 'bottom' = 'auto',\n): PositionResult {\n if (!triggerElement || !calendarElement)\n return { left: 0 }\n\n const triggerRect = triggerElement.getBoundingClientRect()\n const calendarRect = calendarElement.getBoundingClientRect()\n const viewportHeight = window.innerHeight\n const viewportWidth = window.innerWidth\n\n // Calculate available space\n const spaceAbove = triggerRect.top\n const spaceBelow = viewportHeight - triggerRect.bottom\n\n // Determine vertical position\n const position: PositionResult = { left: triggerRect.left }\n\n if (preferredPosition === 'auto') {\n if (spaceBelow >= calendarRect.height || spaceBelow > spaceAbove) {\n // Position below\n position.top = triggerRect.bottom + 8\n }\n else {\n // Position above\n position.bottom = viewportHeight - triggerRect.top + 8\n }\n }\n else if (preferredPosition === 'top') {\n position.bottom = viewportHeight - triggerRect.top + 8\n }\n else {\n position.top = triggerRect.bottom + 8\n }\n\n // Adjust horizontal position to keep within viewport\n if (position.left + calendarRect.width > viewportWidth)\n position.left = viewportWidth - calendarRect.width - 16\n\n if (position.left < 16)\n position.left = 16\n\n return position\n}\n","<script setup lang=\"ts\">\nimport { computed, nextTick, onMounted, onUnmounted, ref, watch } from \"vue\";\nimport {\n breakpointsTailwind,\n onClickOutside,\n useBreakpoints,\n useWindowSize,\n} from \"@vueuse/core\";\nimport type { Dayjs } from \"dayjs\";\nimport { dayjs } from \"./utils/date\";\nimport { generateCalendarMonths, getWeekDays } from \"./utils/calendar\";\nimport { calculatePosition } from \"./utils/position\";\nimport type { CalendarDay, RangepickerProps } from \"./types\";\n\nconst props = withDefaults(defineProps<RangepickerProps>(), {\n isOpen: false,\n variant: \"desktop\",\n valueOfMonths: 2,\n valueOfColumns: 2,\n format: \"YYYY-MM-DD\",\n delimiter: \" - \",\n showTooltip: true,\n autoApply: false,\n position: \"auto\",\n borderRadius: \"0.75rem\",\n});\n\nconst emit = defineEmits<{\n \"update:modelValue\": [value: { startDate: string; endDate: string }];\n \"update:isOpen\": [value: boolean];\n dateSelected: [date: Dayjs];\n rangeSelected: [start: Dayjs, end: Dayjs];\n}>();\nconst breakpoints = useBreakpoints(breakpointsTailwind);\nconst isMobile = breakpoints.smallerOrEqual(\"lg\");\nconst numberOfMonths = computed(() =>\n isMobile.value ? 1 : props.valueOfMonths,\n);\nconst numberOfColumns = computed(() =>\n isMobile.value ? 1 : props.valueOfColumns,\n);\n\n// Refs\nconst calendarRef = ref<HTMLElement | null>(null);\nconst isFadingOut = ref(false);\nconst hoveredDay = ref<CalendarDay | null>(null);\nconst monthOffset = ref(0);\n\n// Local state\nconst localIsOpen = ref(props.isOpen);\nconst localStartDate = ref<Dayjs | null>(null);\nconst localEndDate = ref<Dayjs | null>(null);\n\n// Parse dates from props\nconst parsedMinDate = computed(() =>\n props.minDate ? dayjs(props.minDate) : null,\n);\nconst parsedMaxDate = computed(() =>\n props.maxDate ? dayjs(props.maxDate) : null,\n);\nconst parsedDisabledDates = computed(\n () => props.disabledDates?.map((d) => dayjs(d)) || [],\n);\nconst parsedHolidays = computed(\n () => props.holidays?.map((h) => dayjs(h)) || [],\n);\n\n// Calendar data\nconst weekdays = computed(() => getWeekDays(\"en\", \"narrow\"));\n\n// For mobile view, show only 1 month\nconst effectiveNumberOfMonths = computed(() =>\n props.variant === \"mobile\" ? 1 : numberOfMonths.value,\n);\n\nconst calendarMonths = computed(() =>\n generateCalendarMonths(effectiveNumberOfMonths.value, monthOffset.value, {\n startDate: localStartDate.value,\n endDate: localEndDate.value,\n minDate: parsedMinDate.value,\n maxDate: parsedMaxDate.value,\n disabledDates: parsedDisabledDates.value,\n holidays: parsedHolidays.value,\n }),\n);\n\nconst nightCount = computed(() => {\n if (!localStartDate.value || !localEndDate.value) return 0;\n return localEndDate.value.diff(localStartDate.value, \"day\");\n});\n\nconst formattedDateRange = computed(() => {\n if (!localStartDate.value && !localEndDate.value) return \"\";\n else if (localStartDate.value && !localEndDate.value)\n return localStartDate.value.format(props.format);\n else if (localStartDate.value && localEndDate.value)\n return `${localStartDate.value.format(props.format)}${props.delimiter}${localEndDate.value.format(props.format)}`;\n else return \"\";\n});\n\n// Navigation\nconst canNavigatePrevious = computed(() => {\n if (!parsedMinDate.value) return true;\n const firstMonth = dayjs().add(monthOffset.value, \"month\").startOf(\"month\");\n return firstMonth.isAfter(parsedMinDate.value, \"month\");\n});\n\nconst canNavigateNext = computed(() => {\n if (!parsedMaxDate.value) return true;\n const lastMonth = dayjs()\n .add(monthOffset.value + effectiveNumberOfMonths.value - 1, \"month\")\n .endOf(\"month\");\n return lastMonth.isBefore(parsedMaxDate.value, \"month\");\n});\n\n// Positioning\nconst { width: windowWidth } = useWindowSize();\nconst calendarStyle = ref<Record<string, string>>({});\n\nfunction updatePosition() {\n if (props.variant === \"mobile\") {\n calendarStyle.value = {\n '--border-radius-day': props.borderRadius,\n };\n return;\n }\n\n nextTick(() => {\n const position = calculatePosition(\n props.triggerElement,\n calendarRef.value,\n props.position,\n );\n\n calendarStyle.value = {\n left: `${position.left}px`,\n ...(position.top !== undefined && { top: `${position.top}px` }),\n ...(position.bottom !== undefined && { bottom: `${position.bottom}px` }),\n ...(position.transform && { transform: position.transform }),\n '--border-radius-day': props.borderRadius,\n };\n });\n}\n\n// Tooltip\nconst tooltipStyle = ref<Record<string, string>>({});\nconst tooltipText = computed(() => {\n if (!hoveredDay.value || !localStartDate.value) return \"\";\n const nights = hoveredDay.value.date.diff(localStartDate.value, \"day\");\n if (nights <= 0) return \"\";\n return `${nights} ${nights === 1 ? \"night\" : \"nights\"}`;\n});\n\nconst showTooltipComputed = computed(() => {\n return (\n props.showTooltip &&\n hoveredDay.value &&\n localStartDate.value &&\n !localEndDate.value &&\n hoveredDay.value.date.isAfter(localStartDate.value, \"day\")\n );\n});\n\n// Methods\nfunction getDayClasses(day: CalendarDay) {\n const classes = [\"rangepicker-day\"];\n\n if (!day.isCurrentMonth) classes.push(\"rangepicker-day-other-month\");\n\n if (day.isDisabled) classes.push(\"rangepicker-day-disabled\");\n\n if (day.isToday) classes.push(\"rangepicker-day-today\");\n\n if (day.isWeekend && !day.isSelected) classes.push(\"rangepicker-day-weekend\");\n\n if (day.isHoliday) classes.push(\"rangepicker-day-holiday\");\n\n if (day.isSelected) {\n if (\n localStartDate.value &&\n localEndDate.value &&\n day.date.isSame(localStartDate.value, \"day\") &&\n day.date.isSame(localEndDate.value, \"day\")\n )\n classes.push(\"rangepicker-day-selected-single\");\n else if (\n localStartDate.value &&\n day.date.isSame(localStartDate.value, \"day\")\n )\n classes.push(\"rangepicker-day-selected-start\");\n else if (localEndDate.value && day.date.isSame(localEndDate.value, \"day\"))\n classes.push(\"rangepicker-day-selected-end\");\n else classes.push(\"rangepicker-day-selected\");\n }\n\n if (day.isInRange) classes.push(\"rangepicker-day-in-range\");\n\n // Add hover effect for potential range\n if (localStartDate.value && !localEndDate.value && hoveredDay.value) {\n const start = localStartDate.value;\n const hovered = hoveredDay.value.date;\n if (day.date.isAfter(start, \"day\") && day.date.isBefore(hovered, \"day\"))\n classes.push(\"rangepicker-day-hover-range\");\n else if (day.date.isSame(hovered, \"day\") && hovered.isAfter(start, \"day\"))\n classes.push(\"rangepicker-day-hover-end\");\n }\n\n return classes;\n}\n\nfunction selectDate(day: CalendarDay, event: MouseEvent) {\n event.preventDefault();\n if (day.isDisabled) return;\n\n emit(\"dateSelected\", day.date);\n\n // Range selection logic\n if (!localStartDate.value || (localStartDate.value && localEndDate.value)) {\n // Start new range\n localStartDate.value = day.date;\n localEndDate.value = null;\n } else {\n // Complete range\n if (day.date.isBefore(localStartDate.value, \"day\")) {\n // Swap if end is before start\n localEndDate.value = localStartDate.value;\n localStartDate.value = day.date;\n } else {\n localEndDate.value = day.date;\n }\n\n // Validate min/max days\n if (props.minDays) {\n const days = localEndDate.value.diff(localStartDate.value, \"day\");\n if (days < props.minDays) {\n // Invalid range, reset\n localStartDate.value = day.date;\n localEndDate.value = null;\n return;\n }\n }\n\n if (props.maxDays) {\n const days = localEndDate.value.diff(localStartDate.value, \"day\");\n if (days > props.maxDays) {\n // Invalid range, reset\n localStartDate.value = day.date;\n localEndDate.value = null;\n return;\n }\n }\n\n emit(\"rangeSelected\", localStartDate.value, localEndDate.value);\n\n if (props.autoApply) apply();\n }\n}\n\nfunction handleDayHover(day: CalendarDay, event: MouseEvent) {\n hoveredDay.value = day;\n\n if (props.showTooltip && localStartDate.value && !localEndDate.value)\n updateTooltipPosition(event);\n}\n\nfunction updateTooltipPosition(event: MouseEvent) {\n const rect = (event.target as HTMLElement).getBoundingClientRect();\n tooltipStyle.value = {\n left: `${rect.left + rect.width / 2}px`,\n top: `${rect.top - 10}px`,\n transform: \"translateX(-50%) translateY(-100%)\",\n };\n}\n\nfunction handleDayLeave() {\n hoveredDay.value = null;\n}\n\nfunction previousMonth() {\n if (canNavigatePrevious.value) monthOffset.value--;\n}\n\nfunction nextMonth() {\n if (canNavigateNext.value) monthOffset.value++;\n}\n\nfunction close() {\n if (isFadingOut.value) return;\n isFadingOut.value = true;\n setTimeout(() => {\n localIsOpen.value = false;\n emit(\"update:isOpen\", false);\n isFadingOut.value = false;\n }, 200); // match fade-leave-active duration\n}\n\nfunction apply() {\n if (localStartDate.value && localEndDate.value) {\n emit(\"update:modelValue\", {\n startDate: localStartDate.value.format(props.format),\n endDate: localEndDate.value.format(props.format),\n });\n }\n close();\n}\n\nfunction cancel() {\n // Reset to initial values\n if (props.modelValue?.startDate)\n localStartDate.value = dayjs(props.modelValue.startDate);\n else localStartDate.value = null;\n\n if (props.modelValue?.endDate)\n localEndDate.value = dayjs(props.modelValue.endDate);\n else localEndDate.value = null;\n\n close();\n}\n\n// Watch props\nwatch(\n () => props.isOpen,\n (newVal) => {\n localIsOpen.value = newVal;\n if (newVal) updatePosition();\n },\n);\n\n// Watch props\nwatch(\n () => props.close,\n (newVal) => {\n if (newVal) close();\n },\n);\n\nwatch(\n () => props.modelValue,\n (newVal) => {\n if (newVal?.startDate) localStartDate.value = dayjs(newVal.startDate);\n else localStartDate.value = null;\n\n if (newVal?.endDate) localEndDate.value = dayjs(newVal.endDate);\n else localEndDate.value = null;\n },\n { immediate: true, deep: true },\n);\n\nwatch([windowWidth, localIsOpen], () => {\n if (localIsOpen.value) updatePosition();\n});\n\n// Click outside to close\nonClickOutside(calendarRef, () => {\n if (localIsOpen.value && props.variant !== \"mobile\") close();\n});\n\n// Keyboard navigation\nfunction handleKeydown(e: KeyboardEvent) {\n if (!localIsOpen.value) return;\n\n if (e.key === \"Escape\") close();\n}\n\nonMounted(() => {\n document.addEventListener(\"keydown\", handleKeydown);\n if (props.isOpen) updatePosition();\n});\n\nonUnmounted(() => {\n document.removeEventListener(\"keydown\", handleKeydown);\n});\n</script>\n\n<template>\n <Teleport to=\"body\">\n <Transition :name=\"variant === 'mobile' ? 'slide-up' : 'fade'\">\n <div v-if=\"localIsOpen || isFadingOut\" class=\"rangepicker-overlay\">\n <!-- Backdrop -->\n <div class=\"rangepicker-backdrop\" @click=\"close\" />\n\n <!-- Calendar Container -->\n <div\n ref=\"calendarRef\"\n class=\"rangepicker-container\"\n :class=\"[variant === 'mobile' ? 'rangepicker-mobile' : '']\"\n :style=\"{ ...calendarStyle, ...colorStyles, borderRadius: props.borderRadius }\"\n >\n <!-- Header -->\n <div class=\"rangepicker-header\">\n <div class=\"arch-flex arch-items-center arch-justify-between\">\n <div>\n <p\n v-if=\"label\"\n class=\"arch-text-xs arch-font-medium arch-text-gray-500 arch-mb-1\"\n >\n {{ label }}\n </p>\n <p\n class=\"arch-text-sm arch-font-semibold arch-text-gray-900\"\n >\n {{ formattedDateRange || placeholder || \"Select dates\" }}\n </p>\n </div>\n <p\n v-if=\"nightCount > 0\"\n class=\"arch-text-xs arch-text-gray-500 arch-mt-1\"\n >\n {{ nightCount }} {{ nightCount === 1 ? \"night\" : \"nights\" }}\n </p>\n <!-- <button\n class=\"rangepicker-nav-button\"\n aria-label=\"Close\"\n @click=\"close\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"arch-h-5 arch-w-5\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z\"\n clip-rule=\"evenodd\"\n />\n </svg>\n </button> -->\n </div>\n </div>\n\n <!-- Calendar Body -->\n <div class=\"rangepicker-body\">\n <div\n class=\"rangepicker-month-grid\"\n >\n <div\n v-for=\"(monthData, index) in calendarMonths\"\n :key=\"monthData.month.format('YYYY-MM')\"\n class=\"rangepicker-month\"\n >\n <!-- Month Header -->\n <div class=\"rangepicker-month-header\">\n <button\n v-if=\"variant === 'mobile' || index === 0\"\n class=\"rangepicker-nav-button\"\n :disabled=\"!canNavigatePrevious\"\n aria-label=\"Previous month\"\n @click=\"previousMonth\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"arch-h-5 arch-w-5\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z\"\n clip-rule=\"evenodd\"\n />\n </svg>\n </button>\n <div v-else class=\"arch-w-8\"></div>\n\n <span class=\"rangepicker-month-title\">\n {{ monthData.month.format(\"MMMM YYYY\") }}\n </span>\n\n <button\n v-if=\"\n variant === 'mobile' ||\n index === calendarMonths.length - 1\n \"\n class=\"rangepicker-nav-button\"\n :disabled=\"!canNavigateNext\"\n aria-label=\"Next month\"\n @click=\"nextMonth\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"arch-h-5 arch-w-5\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z\"\n clip-rule=\"evenodd\"\n />\n </svg>\n </button>\n <div v-else class=\"arch-w-8\"></div>\n </div>\n\n <!-- Weekday Headers -->\n <div class=\"rangepicker-weekdays\">\n <div\n v-for=\"weekday in weekdays\"\n :key=\"weekday\"\n class=\"rangepicker-weekday\"\n >\n {{ weekday }}\n </div>\n </div>\n\n <!-- Calendar Grid -->\n <div class=\"rangepicker-grid\" @mouseleave=\"handleDayLeave\">\n <button\n v-for=\"day in monthData.days\"\n :key=\"day.date.unix()\"\n :class=\"getDayClasses(day)\"\n :disabled=\"day.isDisabled\"\n :aria-label=\"day.date.format('MMMM D, YYYY')\"\n @click=\"(e) => selectDate(day, e)\"\n @mouseenter=\"(e) => handleDayHover(day, e)\"\n >\n <span>{{ day.date.date() }}</span>\n </button>\n </div>\n </div>\n </div>\n\n <!-- Apply/Cancel Buttons (if not autoApply) -->\n <div\n v-if=\"!autoApply\"\n class=\"arch-mt-4 arch-flex arch-items-center arch-justify-end arch-gap-2 arch-border-t arch-border-gray-200 arch-pt-4\"\n >\n <button\n class=\"arch-px-4 arch-py-2 arch-text-sm arch-font-medium arch-text-gray-700 hover:arch-bg-gray-100 arch-rounded-lg arch-transition-colors\"\n @click=\"cancel\"\n >\n Cancel\n </button>\n <button\n class=\"arch-px-4 arch-py-2 arch-text-sm arch-font-medium arch-text-white arch-rounded-lg arch-transition-colors disabled:arch-opacity-50 disabled:arch-cursor-not-allowed\"\n :style=\"{\n backgroundColor: colorStyles?.['--color-primary'] \n ? `rgb(${colorStyles['--color-primary']})` \n : 'rgb(37 99 235)',\n }\"\n :disabled=\"!localStartDate || !localEndDate\"\n @click=\"apply\"\n >\n Apply\n </button>\n </div>\n </div>\n\n <!-- Tooltip -->\n <div\n v-if=\"showTooltipComputed\"\n class=\"rangepicker-tooltip\"\n :style=\"tooltipStyle\"\n >\n <div class=\"arch-flex arch-items-center arch-gap-1\">\n {{ tooltipText }}\n </div>\n </div>\n </div>\n </div>\n </Transition>\n </Teleport>\n</template>\n\n<style lang=\"scss\" scoped>\n@use \"./styles/rangepicker.scss\";\n</style>\n","<script setup lang=\"ts\">\nimport { computed, ref, watch } from 'vue'\nimport Rangepicker from './Rangepicker.vue'\nimport type { RangepickerInputProps } from './types'\n\n// Helper function to convert HEX to RGB\nfunction hexToRgb(hex: string): string | null {\n // Remove # if present\n hex = hex.replace(/^#/, '')\n\n // Handle 3-digit hex\n if (hex.length === 3) {\n hex = hex.split('').map(char => char + char).join('')\n }\n\n if (hex.length !== 6) {\n console.warn(`[Rangepicker] Invalid hex color: ${hex}`)\n return null\n }\n\n const r = parseInt(hex.substring(0, 2), 16)\n const g = parseInt(hex.substring(2, 4), 16)\n const b = parseInt(hex.substring(4, 6), 16)\n\n if (isNaN(r) || isNaN(g) || isNaN(b)) {\n return null\n }\n\n return `${r} ${g} ${b}`\n}\n\nconst props = withDefaults(defineProps<RangepickerInputProps>(), {\n readonly: true,\n variant: 'desktop',\n placeholder: 'Select dates',\n showClearButton: true,\n})\n\nconst emit = defineEmits<{\n 'update:modelValue': [value: string]\n 'focusin': []\n}>()\n\n// Refs\nconst inputRef = ref<HTMLInputElement | null>(null)\nconst wrapperRef = ref<HTMLElement | null>(null)\nconst isOpen = ref(false)\n\n// Parse the modelValue into start/end dates\nfunction parseValue(value?: string) {\n if (!value)\n return { startDate: '', endDate: '' }\n\n const parts = value.split(' - ')\n if (parts.length === 2) {\n return {\n startDate: parts[0].trim(),\n endDate: parts[1].trim(),\n }\n }\n return { startDate: '', endDate: '' }\n}\n\nwatch(() => props?.close, (cur) => {\n if (cur)\n inputRef.value.blur()\n})\nconst localValue = ref(parseValue(props.modelValue))\n\nconst displayValue = computed(() => {\n return props.modelValue || ''\n})\n\nconst inputClass = computed(() => {\n return props.class || 'arch-w-full arch-px-3 arch-py-2 arch-border arch-border-gray-300 arch-rounded-lg arch-text-sm arch-text-gray-900 focus:arch-outline-none focus:arch-ring-2 focus:arch-ring-blue-500 focus:arch-border-blue-500'\n})\n\nfunction openPicker() {\n isOpen.value = true\n}\n\nfunction onFocus() {\n emit('focusin')\n openPicker()\n}\n\nfunction handleUpdate(value: { startDate: string; endDate: string }) {\n localValue.value = value\n const formatted = `${value.startDate} - ${value.endDate}`\n emit('update:modelValue', formatted)\n}\n\nfunction clearValue() {\n localValue.value = { startDate: '', endDate: '' }\n emit('update:modelValue', '')\n isOpen.value = false\n}\n\nwatch(() => props.modelValue, (newVal) => {\n localValue.value = parseValue(newVal)\n})\n\n// Compute CSS variables for scoped styling\nconst colorStyles = computed(() => {\n const styles: Record<string, string> = {}\n\n if (props.primaryColor) {\n const rgb = hexToRgb(props.primaryColor)\n if (rgb) {\n styles['--color-primary'] = rgb\n }\n }\n\n if (props.secondaryColor) {\n const rgb = hexToRgb(props.secondaryColor)\n if (rgb) {\n styles['--color-secondary'] = rgb\n }\n }\n\n if (props.fontFamily) {\n styles['--rangepicker-font-family'] = props.fontFamily\n }\n\n return styles\n})\n</script>\n\n<template>\n <div ref=\"wrapperRef\" class=\"rangepicker-input-wrapper\" :style=\"colorStyles\">\n <div class=\"rangepicker-input-container\">\n <input :id=\"id\" ref=\"inputRef\" type=\"text\" :value=\"displayValue\" :placeholder=\"placeholder\" :readonly=\"readonly\"\n :name=\"name\" :class=\"inputClass\" @click=\"openPicker\" @focus=\"onFocus\" />\n \n <button v-if=\"showClearButton && displayValue\" type=\"button\" class=\"rangepicker-clear-button\"\n @click.stop=\"clearValue\" aria-label=\"Clear dates\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"arch-h-4 arch-w-4\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path fill-rule=\"evenodd\"\n d=\"M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z\"\n clip-rule=\"evenodd\" />\n </svg>\n </button>\n </div>\n\n <Rangepicker v-model=\"localValue\" v-model:is-open=\"isOpen\" :trigger-element=\"inputRef\" :min-date=\"minDate\"\n :max-date=\"maxDate\" :min-days=\"minDays\" :max-days=\"maxDays\"\n :value-of-months=\"numberOfMonths || 2\" :value-of-columns=\"numberOfColumns || 2\"\n :format=\"format || 'DD MMM YYYY'\" :auto-apply=\"autoApply !== false\"\n :show-tooltip=\"showTooltip !== false\" :variant=\"variant\" :close=\"props.close\" :color-styles=\"colorStyles\"\n :border-radius=\"borderRadius\" @update:model-value=\"handleUpdate\" />\n </div>\n</template>\n\n<style scoped lang=\"scss\">\n@use './styles/rangepicker.scss';\n\n.rangepicker-input-wrapper {\n position: relative;\n display: inline-block;\n width: 100%;\n font-family: var(--rangepicker-font-family, inherit);\n}\n\n.rangepicker-input-container {\n position: relative;\n display: flex;\n align-items: center;\n}\n\ninput {\n cursor: pointer;\n font-family: inherit;\n flex: 1;\n padding-right: 2.5rem;\n}\n\n.rangepicker-clear-button {\n position: absolute;\n right: 0.5rem;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0.25rem;\n background: transparent;\n border: none;\n border-radius: 0.375rem;\n color: #6b7280;\n cursor: pointer;\n transition: all 0.2s;\n z-index: 1;\n\n &:hover {\n color: #374151;\n background: #f3f4f6;\n }\n\n &:active {\n transform: translateY(-50%) scale(0.95);\n }\n\n &:focus {\n outline: none;\n box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.5);\n }\n}\n</style>\n","import { ref } from 'vue'\nimport './styles/rangepicker.scss'\nimport Rangepicker from './Rangepicker.vue'\nimport RangepickerInput from './RangepickerInput.vue'\nimport type { \n DateRange, \n RangepickerProps, \n RangepickerEmits, \n CalendarDay, \n CalendarMonth,\n RangepickerInputProps\n} from './types'\n\n// Default export - RangepickerInput (Litepicker-compatible wrapper)\nexport default RangepickerInput\n\n// Named exports\nexport { Rangepicker, RangepickerInput }\n\n// Type exports\nexport type { \n RangepickerProps, \n RangepickerInputProps,\n RangepickerEmits, \n DateRange, \n CalendarDay, \n CalendarMonth \n}\n\n// Vue 3 composable for easy integration\nexport function useRangepicker(triggerRef: any, options: Partial<RangepickerProps> = {}) {\n const isOpen = ref(false)\n const dateRange = ref<DateRange>({ startDate: '', endDate: '' })\n\n const open = () => { isOpen.value = true }\n const close = () => { isOpen.value = false }\n const toggle = () => { isOpen.value = !isOpen.value }\n\n return {\n isOpen,\n dateRange,\n open,\n close,\n toggle,\n options,\n }\n}\n"],"names":["this","e","i","t","n","r","o","a","f","h","u","d","l","s","c","m","M","_createBlock","_Teleport","_createVNode","_Transition","_openBlock","_createElementBlock","_hoisted_1","_createElementVNode","_normalizeClass","_hoisted_2","_toDisplayString","_Fragment","_renderList","_normalizeStyle"],"mappings":"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","x_google_ignoreList":[0,1,2,3]}