@dreamstack-us/kaal 0.0.4 → 0.0.5

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.
@@ -174,7 +174,8 @@ export const getDayOfWeek = date => {
174
174
  */
175
175
  export const formatMonth = (date, locale = 'en-US', style = 'long') => {
176
176
  return new Intl.DateTimeFormat(locale, {
177
- month: style
177
+ month: style,
178
+ timeZone: 'UTC'
178
179
  }).format(date);
179
180
  };
180
181
 
@@ -183,7 +184,8 @@ export const formatMonth = (date, locale = 'en-US', style = 'long') => {
183
184
  */
184
185
  export const formatWeekday = (date, locale = 'en-US', style = 'short') => {
185
186
  return new Intl.DateTimeFormat(locale, {
186
- weekday: style
187
+ weekday: style,
188
+ timeZone: 'UTC'
187
189
  }).format(date);
188
190
  };
189
191
 
@@ -193,7 +195,8 @@ export const formatWeekday = (date, locale = 'en-US', style = 'short') => {
193
195
  export const formatYearMonth = (date, locale = 'en-US') => {
194
196
  return new Intl.DateTimeFormat(locale, {
195
197
  month: 'long',
196
- year: 'numeric'
198
+ year: 'numeric',
199
+ timeZone: 'UTC'
197
200
  }).format(date);
198
201
  };
199
202
 
@@ -1 +1 @@
1
- {"version":3,"names":["toISODateString","date","year","getUTCFullYear","month","String","getUTCMonth","padStart","day","getUTCDate","toISODateTimeString","timeZone","tz","getUserTimezone","formatter","Intl","DateTimeFormat","hour","minute","second","hour12","parts","formatToParts","get","type","find","p","value","parseISODate","iso","split","map","Number","Date","UTC","fromISODateString","parseISODateTime","fromISODateTimeString","getDateRange","start","end","dates","current","getTime","push","setUTCDate","isDateInRange","minDate","maxDate","time","resolvedOptions","addDays","days","result","addMonths","months","dayOfMonth","setUTCMonth","daysInMonth","Math","min","compareDates","a","b","isSameDay","isSameMonth","getMonthDays","getFirstDayOfMonth","d","today","getLastDayOfMonth","getDayOfWeek","getUTCDay","formatMonth","locale","style","format","formatWeekday","weekday","formatYearMonth","now","getFullYear","getMonth","getDate"],"sourceRoot":"../../../src","sources":["utils/date.ts"],"mappings":";;AAAA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO,MAAMA,eAAe,GAAIC,IAAU,IAAa;EACrD,MAAMC,IAAI,GAAGD,IAAI,CAACE,cAAc,CAAC,CAAC;EAClC,MAAMC,KAAK,GAAGC,MAAM,CAACJ,IAAI,CAACK,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;EAC7D,MAAMC,GAAG,GAAGH,MAAM,CAACJ,IAAI,CAACQ,UAAU,CAAC,CAAC,CAAC,CAACF,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;EACtD,OAAO,GAAGL,IAAI,IAAIE,KAAK,IAAII,GAAG,EAAE;AAClC,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAME,mBAAmB,GAAGA,CAACT,IAAU,EAAEU,QAAiB,KAAa;EAC5E,MAAMC,EAAE,GAAGD,QAAQ,IAAIE,eAAe,CAAC,CAAC;EACxC,MAAMC,SAAS,GAAG,IAAIC,IAAI,CAACC,cAAc,CAAC,OAAO,EAAE;IACjDL,QAAQ,EAAEC,EAAE;IACZV,IAAI,EAAE,SAAS;IACfE,KAAK,EAAE,SAAS;IAChBI,GAAG,EAAE,SAAS;IACdS,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE,SAAS;IACjBC,MAAM,EAAE,SAAS;IACjBC,MAAM,EAAE;EACV,CAAC,CAAC;EACF,MAAMC,KAAK,GAAGP,SAAS,CAACQ,aAAa,CAACrB,IAAI,CAAC;EAC3C,MAAMsB,GAAG,GAAIC,IAAY,IAAKH,KAAK,CAACI,IAAI,CAAEC,CAAC,IAAKA,CAAC,CAACF,IAAI,KAAKA,IAAI,CAAC,EAAEG,KAAK,IAAI,EAAE;EAC7E,OAAO,GAAGJ,GAAG,CAAC,MAAM,CAAC,IAAIA,GAAG,CAAC,OAAO,CAAC,IAAIA,GAAG,CAAC,KAAK,CAAC,IAAIA,GAAG,CAAC,MAAM,CAAC,IAAIA,GAAG,CAAC,QAAQ,CAAC,IAAIA,GAAG,CAAC,QAAQ,CAAC,EAAE;AACxG,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAMK,YAAY,GAAIC,GAAW,IAAW;EACjD,MAAMR,KAAK,GAAGQ,GAAG,CAACC,KAAK,CAAC,GAAG,CAAC,CAACC,GAAG,CAACC,MAAM,CAA6B;EACpE,OAAO,IAAIC,IAAI,CAACA,IAAI,CAACC,GAAG,CAACb,KAAK,CAAC,CAAC,CAAC,EAAEA,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,EAAEA,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7D,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAMc,iBAAiB,GAAGP,YAAY;;AAE7C;AACA;AACA;AACA,OAAO,MAAMQ,gBAAgB,GAAIP,GAAW,IAAW;EACrD,OAAO,IAAII,IAAI,CAACJ,GAAG,CAAC;AACtB,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAMQ,qBAAqB,GAAGD,gBAAgB;;AAErD;AACA;AACA;AACA,OAAO,MAAME,YAAY,GAAGA,CAACC,KAAW,EAAEC,GAAS,KAAa;EAC9D,MAAMC,KAAa,GAAG,EAAE;EACxB,MAAMC,OAAO,GAAG,IAAIT,IAAI,CAACM,KAAK,CAACI,OAAO,CAAC,CAAC,CAAC;EAEzC,OAAOD,OAAO,CAACC,OAAO,CAAC,CAAC,IAAIH,GAAG,CAACG,OAAO,CAAC,CAAC,EAAE;IACzCF,KAAK,CAACG,IAAI,CAAC,IAAIX,IAAI,CAACS,OAAO,CAACC,OAAO,CAAC,CAAC,CAAC,CAAC;IACvCD,OAAO,CAACG,UAAU,CAACH,OAAO,CAACjC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC;EAC9C;EAEA,OAAOgC,KAAK;AACd,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAMK,aAAa,GAAGA,CAC3B7C,IAAU,EACV8C,OAAc,EACdC,OAAc,KACF;EACZ,MAAMC,IAAI,GAAGhD,IAAI,CAAC0C,OAAO,CAAC,CAAC;EAC3B,IAAII,OAAO,IAAIE,IAAI,GAAGF,OAAO,CAACJ,OAAO,CAAC,CAAC,EAAE,OAAO,KAAK;EACrD,IAAIK,OAAO,IAAIC,IAAI,GAAGD,OAAO,CAACL,OAAO,CAAC,CAAC,EAAE,OAAO,KAAK;EACrD,OAAO,IAAI;AACb,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAM9B,eAAe,GAAGA,CAAA,KAAc;EAC3C,OAAOE,IAAI,CAACC,cAAc,CAAC,CAAC,CAACkC,eAAe,CAAC,CAAC,CAACvC,QAAQ;AACzD,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAMwC,OAAO,GAAGA,CAAClD,IAAU,EAAEmD,IAAY,KAAW;EACzD,MAAMC,MAAM,GAAG,IAAIpB,IAAI,CAAChC,IAAI,CAAC0C,OAAO,CAAC,CAAC,CAAC;EACvCU,MAAM,CAACR,UAAU,CAACQ,MAAM,CAAC5C,UAAU,CAAC,CAAC,GAAG2C,IAAI,CAAC;EAC7C,OAAOC,MAAM;AACf,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAMC,SAAS,GAAGA,CAACrD,IAAU,EAAEsD,MAAc,KAAW;EAC7D,MAAMF,MAAM,GAAG,IAAIpB,IAAI,CAAChC,IAAI,CAAC0C,OAAO,CAAC,CAAC,CAAC;EACvC,MAAMa,UAAU,GAAGH,MAAM,CAAC5C,UAAU,CAAC,CAAC;EACtC4C,MAAM,CAACR,UAAU,CAAC,CAAC,CAAC;EACpBQ,MAAM,CAACI,WAAW,CAACJ,MAAM,CAAC/C,WAAW,CAAC,CAAC,GAAGiD,MAAM,CAAC;EACjD,MAAMG,WAAW,GAAG,IAAIzB,IAAI,CAC1BA,IAAI,CAACC,GAAG,CAACmB,MAAM,CAAClD,cAAc,CAAC,CAAC,EAAEkD,MAAM,CAAC/C,WAAW,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAC/D,CAAC,CAACG,UAAU,CAAC,CAAC;EACd4C,MAAM,CAACR,UAAU,CAACc,IAAI,CAACC,GAAG,CAACJ,UAAU,EAAEE,WAAW,CAAC,CAAC;EACpD,OAAOL,MAAM;AACf,CAAC;;AAED;AACA;AACA;AACA;AACA,OAAO,MAAMQ,YAAY,GAAGA,CAACC,CAAO,EAAEC,CAAO,KAAa;EACxD,OAAOD,CAAC,CAACnB,OAAO,CAAC,CAAC,GAAGoB,CAAC,CAACpB,OAAO,CAAC,CAAC;AAClC,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAMqB,SAAS,GAAGA,CAACF,CAAO,EAAEC,CAAO,KAAc;EACtD,OAAO/D,eAAe,CAAC8D,CAAC,CAAC,KAAK9D,eAAe,CAAC+D,CAAC,CAAC;AAClD,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAME,WAAW,GAAGA,CAACH,CAAO,EAAEC,CAAO,KAAc;EACxD,OACED,CAAC,CAAC3D,cAAc,CAAC,CAAC,KAAK4D,CAAC,CAAC5D,cAAc,CAAC,CAAC,IACzC2D,CAAC,CAACxD,WAAW,CAAC,CAAC,KAAKyD,CAAC,CAACzD,WAAW,CAAC,CAAC;AAEvC,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAM4D,YAAY,GAAGA,CAAChE,IAAY,EAAEE,KAAa,KAAa;EACnE,MAAMgD,IAAY,GAAG,EAAE;EACvB,MAAMM,WAAW,GAAG,IAAIzB,IAAI,CAACA,IAAI,CAACC,GAAG,CAAChC,IAAI,EAAEE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAACK,UAAU,CAAC,CAAC;EACvE,KAAK,IAAID,GAAG,GAAG,CAAC,EAAEA,GAAG,IAAIkD,WAAW,EAAElD,GAAG,EAAE,EAAE;IAC3C4C,IAAI,CAACR,IAAI,CAAC,IAAIX,IAAI,CAACA,IAAI,CAACC,GAAG,CAAChC,IAAI,EAAEE,KAAK,EAAEI,GAAG,CAAC,CAAC,CAAC;EACjD;EACA,OAAO4C,IAAI;AACb,CAAC;;AAED;AACA;AACA;AACA;AACA,OAAO,MAAMe,kBAAkB,GAAIlE,IAA6B,IAAW;EACzE,MAAMmE,CAAC,GAAGnE,IAAI,IAAIoE,KAAK,CAAC,CAAC;EACzB,OAAO,IAAIpC,IAAI,CAACA,IAAI,CAACC,GAAG,CAACkC,CAAC,CAACjE,cAAc,CAAC,CAAC,EAAEiE,CAAC,CAAC9D,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACnE,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAMgE,iBAAiB,GAAIrE,IAAU,IAAW;EACrD,OAAO,IAAIgC,IAAI,CAACA,IAAI,CAACC,GAAG,CAACjC,IAAI,CAACE,cAAc,CAAC,CAAC,EAAEF,IAAI,CAACK,WAAW,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7E,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAMiE,YAAY,GAAItE,IAAU,IAAa;EAClD,OAAOA,IAAI,CAACuE,SAAS,CAAC,CAAC;AACzB,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAMC,WAAW,GAAGA,CACzBxE,IAAU,EACVyE,MAAM,GAAG,OAAO,EAChBC,KAAkC,GAAG,MAAM,KAChC;EACX,OAAO,IAAI5D,IAAI,CAACC,cAAc,CAAC0D,MAAM,EAAE;IAAEtE,KAAK,EAAEuE;EAAM,CAAC,CAAC,CAACC,MAAM,CAAC3E,IAAI,CAAC;AACvE,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAM4E,aAAa,GAAGA,CAC3B5E,IAAU,EACVyE,MAAM,GAAG,OAAO,EAChBC,KAAkC,GAAG,OAAO,KACjC;EACX,OAAO,IAAI5D,IAAI,CAACC,cAAc,CAAC0D,MAAM,EAAE;IAAEI,OAAO,EAAEH;EAAM,CAAC,CAAC,CAACC,MAAM,CAAC3E,IAAI,CAAC;AACzE,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAM8E,eAAe,GAAGA,CAAC9E,IAAU,EAAEyE,MAAM,GAAG,OAAO,KAAa;EACvE,OAAO,IAAI3D,IAAI,CAACC,cAAc,CAAC0D,MAAM,EAAE;IACrCtE,KAAK,EAAE,MAAM;IACbF,IAAI,EAAE;EACR,CAAC,CAAC,CAAC0E,MAAM,CAAC3E,IAAI,CAAC;AACjB,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAMoE,KAAK,GAAGA,CAAA,KAAY;EAC/B,MAAMW,GAAG,GAAG,IAAI/C,IAAI,CAAC,CAAC;EACtB,OAAO,IAAIA,IAAI,CAACA,IAAI,CAACC,GAAG,CAAC8C,GAAG,CAACC,WAAW,CAAC,CAAC,EAAED,GAAG,CAACE,QAAQ,CAAC,CAAC,EAAEF,GAAG,CAACG,OAAO,CAAC,CAAC,CAAC,CAAC;AAC7E,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["toISODateString","date","year","getUTCFullYear","month","String","getUTCMonth","padStart","day","getUTCDate","toISODateTimeString","timeZone","tz","getUserTimezone","formatter","Intl","DateTimeFormat","hour","minute","second","hour12","parts","formatToParts","get","type","find","p","value","parseISODate","iso","split","map","Number","Date","UTC","fromISODateString","parseISODateTime","fromISODateTimeString","getDateRange","start","end","dates","current","getTime","push","setUTCDate","isDateInRange","minDate","maxDate","time","resolvedOptions","addDays","days","result","addMonths","months","dayOfMonth","setUTCMonth","daysInMonth","Math","min","compareDates","a","b","isSameDay","isSameMonth","getMonthDays","getFirstDayOfMonth","d","today","getLastDayOfMonth","getDayOfWeek","getUTCDay","formatMonth","locale","style","format","formatWeekday","weekday","formatYearMonth","now","getFullYear","getMonth","getDate"],"sourceRoot":"../../../src","sources":["utils/date.ts"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"DayCell.d.ts","sourceRoot":"","sources":["../../../../src/components/CalendarGrid/DayCell.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,UAAU,YAAY;IACpB,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AA8BD,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAyH1C,CAAC"}
1
+ {"version":3,"file":"DayCell.d.ts","sourceRoot":"","sources":["../../../../src/components/CalendarGrid/DayCell.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,UAAU,YAAY;IACpB,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAiED,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CA0I1C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"DayCell.web.d.ts","sourceRoot":"","sources":["../../../../src/components/CalendarGrid/DayCell.web.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,UAAU,YAAY;IACpB,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AA+BD,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAyH1C,CAAC"}
1
+ {"version":3,"file":"DayCell.web.d.ts","sourceRoot":"","sources":["../../../../src/components/CalendarGrid/DayCell.web.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,UAAU,YAAY;IACpB,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAkED,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAiJ1C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"MaterialTimePicker.web.d.ts","sourceRoot":"","sources":["../../../../src/components/TimePicker/MaterialTimePicker.web.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,KAAK,EAAyB,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAG/E,UAAU,uBAAuB;IAC/B,KAAK,EAAE,SAAS,CAAC;IACjB,QAAQ,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;IACpC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;CACxB;AAiHD,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CA6IhE,CAAC"}
1
+ {"version":3,"file":"MaterialTimePicker.web.d.ts","sourceRoot":"","sources":["../../../../src/components/TimePicker/MaterialTimePicker.web.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,OAAO,KAAK,EAAyB,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAkB/E,UAAU,uBAAuB;IAC/B,KAAK,EAAE,SAAS,CAAC;IACjB,QAAQ,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;IACpC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;CACxB;AAiHD,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAsQhE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"date.d.ts","sourceRoot":"","sources":["../../../src/utils/date.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,eAAO,MAAM,eAAe,GAAI,MAAM,IAAI,KAAG,MAK5C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,GAAI,MAAM,IAAI,EAAE,WAAW,MAAM,KAAG,MAenE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,GAAI,KAAK,MAAM,KAAG,IAG1C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,QARI,MAAM,KAAG,IAQE,CAAC;AAE9C;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAAI,KAAK,MAAM,KAAG,IAE9C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB,QAPI,MAAM,KAAG,IAOM,CAAC;AAEtD;;GAEG;AACH,eAAO,MAAM,YAAY,GAAI,OAAO,IAAI,EAAE,KAAK,IAAI,KAAG,IAAI,EAUzD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,GACxB,MAAM,IAAI,EACV,UAAU,IAAI,EACd,UAAU,IAAI,KACb,OAKF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,QAAO,MAElC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,OAAO,GAAI,MAAM,IAAI,EAAE,MAAM,MAAM,KAAG,IAIlD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,SAAS,GAAI,MAAM,IAAI,EAAE,QAAQ,MAAM,KAAG,IAUtD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,YAAY,GAAI,GAAG,IAAI,EAAE,GAAG,IAAI,KAAG,MAE/C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,SAAS,GAAI,GAAG,IAAI,EAAE,GAAG,IAAI,KAAG,OAE5C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,GAAI,GAAG,IAAI,EAAE,GAAG,IAAI,KAAG,OAK9C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,GAAI,MAAM,MAAM,EAAE,OAAO,MAAM,KAAG,IAAI,EAO9D,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAAI,MAAM,IAAI,GAAG,IAAI,GAAG,SAAS,KAAG,IAGlE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAAI,MAAM,IAAI,KAAG,IAE9C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,GAAI,MAAM,IAAI,KAAG,MAEzC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,GACtB,MAAM,IAAI,EACV,eAAgB,EAChB,QAAO,MAAM,GAAG,OAAO,GAAG,QAAiB,KAC1C,MAEF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,GACxB,MAAM,IAAI,EACV,eAAgB,EAChB,QAAO,MAAM,GAAG,OAAO,GAAG,QAAkB,KAC3C,MAEF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,GAAI,MAAM,IAAI,EAAE,eAAgB,KAAG,MAK9D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,KAAK,QAAO,IAGxB,CAAC"}
1
+ {"version":3,"file":"date.d.ts","sourceRoot":"","sources":["../../../src/utils/date.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,eAAO,MAAM,eAAe,GAAI,MAAM,IAAI,KAAG,MAK5C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,GAAI,MAAM,IAAI,EAAE,WAAW,MAAM,KAAG,MAenE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,GAAI,KAAK,MAAM,KAAG,IAG1C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,QARI,MAAM,KAAG,IAQE,CAAC;AAE9C;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAAI,KAAK,MAAM,KAAG,IAE9C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB,QAPI,MAAM,KAAG,IAOM,CAAC;AAEtD;;GAEG;AACH,eAAO,MAAM,YAAY,GAAI,OAAO,IAAI,EAAE,KAAK,IAAI,KAAG,IAAI,EAUzD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,GACxB,MAAM,IAAI,EACV,UAAU,IAAI,EACd,UAAU,IAAI,KACb,OAKF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,QAAO,MAElC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,OAAO,GAAI,MAAM,IAAI,EAAE,MAAM,MAAM,KAAG,IAIlD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,SAAS,GAAI,MAAM,IAAI,EAAE,QAAQ,MAAM,KAAG,IAUtD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,YAAY,GAAI,GAAG,IAAI,EAAE,GAAG,IAAI,KAAG,MAE/C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,SAAS,GAAI,GAAG,IAAI,EAAE,GAAG,IAAI,KAAG,OAE5C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,GAAI,GAAG,IAAI,EAAE,GAAG,IAAI,KAAG,OAK9C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,GAAI,MAAM,MAAM,EAAE,OAAO,MAAM,KAAG,IAAI,EAO9D,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAAI,MAAM,IAAI,GAAG,IAAI,GAAG,SAAS,KAAG,IAGlE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAAI,MAAM,IAAI,KAAG,IAE9C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,GAAI,MAAM,IAAI,KAAG,MAEzC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,GACtB,MAAM,IAAI,EACV,eAAgB,EAChB,QAAO,MAAM,GAAG,OAAO,GAAG,QAAiB,KAC1C,MAKF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,GACxB,MAAM,IAAI,EACV,eAAgB,EAChB,QAAO,MAAM,GAAG,OAAO,GAAG,QAAkB,KAC3C,MAKF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,GAAI,MAAM,IAAI,EAAE,eAAgB,KAAG,MAM9D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,KAAK,QAAO,IAGxB,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@dreamstack-us/kaal",
3
- "version": "0.0.4",
4
- "description": "High-performance React Native DatePicker with Unistyles v3",
3
+ "version": "0.0.5",
4
+ "description": "High-performance React Native DatePicker and TimePicker",
5
5
  "type": "module",
6
6
  "main": "./lib/module/index.js",
7
7
  "types": "./lib/typescript/index.d.ts",
@@ -33,12 +33,9 @@
33
33
  "peerDependencies": {
34
34
  "react": ">=18.2.0",
35
35
  "react-native": ">=0.78.0",
36
- "react-native-unistyles": "^3.0.0",
37
- "react-native-nitro-modules": "0.31.4",
38
- "react-native-reanimated": ">=3.17.0",
39
- "react-native-gesture-handler": ">=2.20.0",
40
36
  "react-native-svg": ">=13.0.0",
41
- "@dreamstack-us/kaal-themes": ">=1.0.0"
37
+ "react-native-reanimated": ">=3.17.0",
38
+ "react-native-gesture-handler": ">=2.20.0"
42
39
  },
43
40
  "peerDependenciesMeta": {
44
41
  "@expo/ui": {
@@ -46,6 +43,9 @@
46
43
  },
47
44
  "@dreamstack-us/kaal-themes": {
48
45
  "optional": true
46
+ },
47
+ "react-native-nitro-modules": {
48
+ "optional": true
49
49
  }
50
50
  },
51
51
  "devDependencies": {
@@ -57,7 +57,6 @@
57
57
  "react-native-nitro-modules": "0.31.4",
58
58
  "react-native-reanimated": "^3.17.0",
59
59
  "react-native-svg": "^15.15.1",
60
- "react-native-unistyles": "^3.0.0",
61
60
  "typescript": "^5.7.0"
62
61
  },
63
62
  "react-native-builder-bob": {
@@ -94,7 +93,7 @@
94
93
  "datepicker",
95
94
  "timepicker",
96
95
  "calendar",
97
- "unistyles",
96
+ "expo",
98
97
  "new-architecture"
99
98
  ],
100
99
  "license": "MIT"
@@ -1,6 +1,6 @@
1
1
  import type React from 'react';
2
2
  import { memo, useMemo } from 'react';
3
- import { Pressable, StyleSheet, Text } from 'react-native';
3
+ import { Pressable, StyleSheet, Text, View } from 'react-native';
4
4
  import { useDatePickerOverrides } from '../../context/ThemeOverrideContext';
5
5
 
6
6
  interface DayCellProps {
@@ -30,16 +30,51 @@ const DEFAULT_COLORS = {
30
30
  cellBorderRadius: 22,
31
31
  };
32
32
 
33
+ const CELL_SIZE = 44;
34
+ const BAND_HEIGHT = 28; // Narrower band for thermometer effect
35
+
33
36
  const styles = StyleSheet.create({
34
37
  cell: {
35
- width: 44,
36
- height: 44,
38
+ width: CELL_SIZE,
39
+ height: CELL_SIZE,
37
40
  justifyContent: 'center',
38
41
  alignItems: 'center',
39
42
  },
43
+ // Thermometer band for in-range dates
44
+ rangeBand: {
45
+ position: 'absolute',
46
+ top: (CELL_SIZE - BAND_HEIGHT) / 2,
47
+ height: BAND_HEIGHT,
48
+ left: 0,
49
+ right: 0,
50
+ },
51
+ // Half band extending right from range start
52
+ rangeBandRight: {
53
+ position: 'absolute',
54
+ top: (CELL_SIZE - BAND_HEIGHT) / 2,
55
+ height: BAND_HEIGHT,
56
+ left: CELL_SIZE / 2,
57
+ right: 0,
58
+ },
59
+ // Half band extending left to range end
60
+ rangeBandLeft: {
61
+ position: 'absolute',
62
+ top: (CELL_SIZE - BAND_HEIGHT) / 2,
63
+ height: BAND_HEIGHT,
64
+ left: 0,
65
+ right: CELL_SIZE / 2,
66
+ },
67
+ // Circle overlay for selected dates
68
+ circleOverlay: {
69
+ position: 'absolute',
70
+ width: CELL_SIZE,
71
+ height: CELL_SIZE,
72
+ borderRadius: CELL_SIZE / 2,
73
+ },
40
74
  text: {
41
75
  fontSize: 17,
42
76
  fontWeight: '400',
77
+ zIndex: 1,
43
78
  },
44
79
  });
45
80
 
@@ -57,48 +92,12 @@ export const DayCell: React.FC<DayCellProps> = memo(
57
92
  }) => {
58
93
  const overrides = useDatePickerOverrides();
59
94
 
60
- // Build cell style based on state and overrides
61
- // Use primaryColor as fallback for cellSelectedColor (consumer expectation)
62
- const cellStyle = useMemo(() => {
63
- const style: Record<string, unknown> = {
64
- backgroundColor: DEFAULT_COLORS.cellBackground,
65
- };
66
-
67
- // Range start/end get selected styling
68
- if (isRangeStart || isRangeEnd || isSelected) {
69
- style.backgroundColor =
70
- overrides?.cellSelectedColor ??
71
- overrides?.primaryColor ??
72
- DEFAULT_COLORS.cellSelected;
73
- style.borderRadius =
74
- overrides?.cellBorderRadius ?? DEFAULT_COLORS.cellBorderRadius;
75
- } else if (isInRange) {
76
- // Dates in range get lighter background
77
- style.backgroundColor =
78
- overrides?.cellInRangeColor ?? DEFAULT_COLORS.cellInRange;
79
- } else if (isToday) {
80
- style.backgroundColor =
81
- overrides?.cellTodayColor ?? DEFAULT_COLORS.cellToday;
82
- style.borderRadius =
83
- overrides?.cellBorderRadius ?? DEFAULT_COLORS.cellBorderRadius;
84
- style.borderWidth = 1;
85
- style.borderColor = overrides?.primaryColor ?? DEFAULT_COLORS.primary;
86
- }
87
-
88
- if (isDisabled) {
89
- style.opacity = 0.4;
90
- }
91
-
92
- return style;
93
- }, [
94
- overrides,
95
- isSelected,
96
- isToday,
97
- isDisabled,
98
- isRangeStart,
99
- isRangeEnd,
100
- isInRange,
101
- ]);
95
+ const rangeColor =
96
+ overrides?.cellInRangeColor ?? DEFAULT_COLORS.cellInRange;
97
+ const selectedColor =
98
+ overrides?.cellSelectedColor ??
99
+ overrides?.primaryColor ??
100
+ DEFAULT_COLORS.cellSelected;
102
101
 
103
102
  // Build text style based on state and overrides
104
103
  const textStyle = useMemo(() => {
@@ -135,13 +134,36 @@ export const DayCell: React.FC<DayCellProps> = memo(
135
134
  isInRange,
136
135
  ]);
137
136
 
137
+ // Today style (non-range)
138
+ const todayStyle = useMemo(() => {
139
+ if (
140
+ isToday &&
141
+ !isSelected &&
142
+ !isRangeStart &&
143
+ !isRangeEnd &&
144
+ !isInRange
145
+ ) {
146
+ return {
147
+ backgroundColor:
148
+ overrides?.cellTodayColor ?? DEFAULT_COLORS.cellToday,
149
+ borderRadius:
150
+ overrides?.cellBorderRadius ?? DEFAULT_COLORS.cellBorderRadius,
151
+ borderWidth: 1,
152
+ borderColor: overrides?.primaryColor ?? DEFAULT_COLORS.primary,
153
+ };
154
+ }
155
+ return null;
156
+ }, [isToday, isSelected, isRangeStart, isRangeEnd, isInRange, overrides]);
157
+
138
158
  if (!date) {
139
159
  return <Pressable style={styles.cell} disabled />;
140
160
  }
141
161
 
162
+ const cellOpacity = isDisabled ? 0.4 : 1;
163
+
142
164
  return (
143
165
  <Pressable
144
- style={[styles.cell, cellStyle]}
166
+ style={[styles.cell, { opacity: cellOpacity }]}
145
167
  onPress={onPress}
146
168
  disabled={isDisabled}
147
169
  accessibilityRole="button"
@@ -149,9 +171,39 @@ export const DayCell: React.FC<DayCellProps> = memo(
149
171
  weekday: 'long',
150
172
  month: 'long',
151
173
  day: 'numeric',
174
+ timeZone: 'UTC',
152
175
  }).format(date)}
153
176
  accessibilityState={{ selected: isSelected, disabled: isDisabled }}
154
177
  >
178
+ {/* Thermometer band for range start (extends right) */}
179
+ {isRangeStart && !isRangeEnd && (
180
+ <View
181
+ style={[styles.rangeBandRight, { backgroundColor: rangeColor }]}
182
+ />
183
+ )}
184
+
185
+ {/* Thermometer band for range end (extends left) */}
186
+ {isRangeEnd && !isRangeStart && (
187
+ <View
188
+ style={[styles.rangeBandLeft, { backgroundColor: rangeColor }]}
189
+ />
190
+ )}
191
+
192
+ {/* Thermometer band for in-range dates (full width) */}
193
+ {isInRange && (
194
+ <View style={[styles.rangeBand, { backgroundColor: rangeColor }]} />
195
+ )}
196
+
197
+ {/* Circle for selected/range start/end */}
198
+ {(isRangeStart || isRangeEnd || isSelected) && (
199
+ <View
200
+ style={[styles.circleOverlay, { backgroundColor: selectedColor }]}
201
+ />
202
+ )}
203
+
204
+ {/* Today indicator (when not in range) */}
205
+ {todayStyle && <View style={[styles.circleOverlay, todayStyle]} />}
206
+
155
207
  <Text style={[styles.text, textStyle]}>{date.getUTCDate()}</Text>
156
208
  </Pressable>
157
209
  );
@@ -1,7 +1,7 @@
1
1
  /// <reference lib="dom" />
2
2
  import type React from 'react';
3
3
  import { memo, useMemo } from 'react';
4
- import { Pressable, StyleSheet, Text } from 'react-native';
4
+ import { Pressable, StyleSheet, Text, View } from 'react-native';
5
5
  import { useDatePickerOverrides } from '../../context/ThemeOverrideContext';
6
6
 
7
7
  interface DayCellProps {
@@ -31,17 +31,52 @@ const DEFAULT_COLORS = {
31
31
  cellBorderRadius: 22,
32
32
  };
33
33
 
34
+ const CELL_SIZE = 44;
35
+ const BAND_HEIGHT = 28; // Narrower band for thermometer effect
36
+
34
37
  // Web-compatible styles (no unistyles dependency)
35
38
  const webStyles = StyleSheet.create({
36
39
  cell: {
37
- width: 44,
38
- height: 44,
40
+ width: CELL_SIZE,
41
+ height: CELL_SIZE,
39
42
  justifyContent: 'center',
40
43
  alignItems: 'center',
41
44
  },
45
+ // Thermometer band for in-range dates
46
+ rangeBand: {
47
+ position: 'absolute',
48
+ top: (CELL_SIZE - BAND_HEIGHT) / 2,
49
+ height: BAND_HEIGHT,
50
+ left: 0,
51
+ right: 0,
52
+ },
53
+ // Half band extending right from range start
54
+ rangeBandRight: {
55
+ position: 'absolute',
56
+ top: (CELL_SIZE - BAND_HEIGHT) / 2,
57
+ height: BAND_HEIGHT,
58
+ left: CELL_SIZE / 2,
59
+ right: 0,
60
+ },
61
+ // Half band extending left to range end
62
+ rangeBandLeft: {
63
+ position: 'absolute',
64
+ top: (CELL_SIZE - BAND_HEIGHT) / 2,
65
+ height: BAND_HEIGHT,
66
+ left: 0,
67
+ right: CELL_SIZE / 2,
68
+ },
69
+ // Circle overlay for selected dates
70
+ circleOverlay: {
71
+ position: 'absolute',
72
+ width: CELL_SIZE,
73
+ height: CELL_SIZE,
74
+ borderRadius: CELL_SIZE / 2,
75
+ },
42
76
  text: {
43
77
  fontSize: 17,
44
78
  fontWeight: '400',
79
+ zIndex: 1,
45
80
  },
46
81
  });
47
82
 
@@ -59,48 +94,12 @@ export const DayCell: React.FC<DayCellProps> = memo(
59
94
  }) => {
60
95
  const overrides = useDatePickerOverrides();
61
96
 
62
- // Build cell style based on state and overrides
63
- // Use primaryColor as fallback for cellSelectedColor (consumer expectation)
64
- const cellStyle = useMemo(() => {
65
- const style: Record<string, unknown> = {
66
- backgroundColor: DEFAULT_COLORS.cellBackground,
67
- };
68
-
69
- // Range start/end get selected styling
70
- if (isRangeStart || isRangeEnd || isSelected) {
71
- style.backgroundColor =
72
- overrides?.cellSelectedColor ??
73
- overrides?.primaryColor ??
74
- DEFAULT_COLORS.cellSelected;
75
- style.borderRadius =
76
- overrides?.cellBorderRadius ?? DEFAULT_COLORS.cellBorderRadius;
77
- } else if (isInRange) {
78
- // Dates in range get lighter background
79
- style.backgroundColor =
80
- overrides?.cellInRangeColor ?? DEFAULT_COLORS.cellInRange;
81
- } else if (isToday) {
82
- style.backgroundColor =
83
- overrides?.cellTodayColor ?? DEFAULT_COLORS.cellToday;
84
- style.borderRadius =
85
- overrides?.cellBorderRadius ?? DEFAULT_COLORS.cellBorderRadius;
86
- style.borderWidth = 1;
87
- style.borderColor = overrides?.primaryColor ?? DEFAULT_COLORS.primary;
88
- }
89
-
90
- if (isDisabled) {
91
- style.opacity = 0.4;
92
- }
93
-
94
- return style;
95
- }, [
96
- overrides,
97
- isSelected,
98
- isToday,
99
- isDisabled,
100
- isRangeStart,
101
- isRangeEnd,
102
- isInRange,
103
- ]);
97
+ const rangeColor =
98
+ overrides?.cellInRangeColor ?? DEFAULT_COLORS.cellInRange;
99
+ const selectedColor =
100
+ overrides?.cellSelectedColor ??
101
+ overrides?.primaryColor ??
102
+ DEFAULT_COLORS.cellSelected;
104
103
 
105
104
  // Build text style based on state and overrides
106
105
  const textStyle = useMemo(() => {
@@ -137,13 +136,36 @@ export const DayCell: React.FC<DayCellProps> = memo(
137
136
  isInRange,
138
137
  ]);
139
138
 
139
+ // Today style (non-range)
140
+ const todayStyle = useMemo(() => {
141
+ if (
142
+ isToday &&
143
+ !isSelected &&
144
+ !isRangeStart &&
145
+ !isRangeEnd &&
146
+ !isInRange
147
+ ) {
148
+ return {
149
+ backgroundColor:
150
+ overrides?.cellTodayColor ?? DEFAULT_COLORS.cellToday,
151
+ borderRadius:
152
+ overrides?.cellBorderRadius ?? DEFAULT_COLORS.cellBorderRadius,
153
+ borderWidth: 1,
154
+ borderColor: overrides?.primaryColor ?? DEFAULT_COLORS.primary,
155
+ };
156
+ }
157
+ return null;
158
+ }, [isToday, isSelected, isRangeStart, isRangeEnd, isInRange, overrides]);
159
+
140
160
  if (!date) {
141
161
  return <Pressable style={webStyles.cell} disabled />;
142
162
  }
143
163
 
164
+ const cellOpacity = isDisabled ? 0.4 : 1;
165
+
144
166
  return (
145
167
  <Pressable
146
- style={[webStyles.cell, cellStyle]}
168
+ style={[webStyles.cell, { opacity: cellOpacity }]}
147
169
  onPress={onPress}
148
170
  disabled={isDisabled}
149
171
  accessibilityRole="button"
@@ -151,9 +173,46 @@ export const DayCell: React.FC<DayCellProps> = memo(
151
173
  weekday: 'long',
152
174
  month: 'long',
153
175
  day: 'numeric',
176
+ timeZone: 'UTC',
154
177
  }).format(date)}
155
178
  accessibilityState={{ selected: isSelected, disabled: isDisabled }}
156
179
  >
180
+ {/* Thermometer band for range start (extends right) */}
181
+ {isRangeStart && !isRangeEnd && (
182
+ <View
183
+ style={[webStyles.rangeBandRight, { backgroundColor: rangeColor }]}
184
+ />
185
+ )}
186
+
187
+ {/* Thermometer band for range end (extends left) */}
188
+ {isRangeEnd && !isRangeStart && (
189
+ <View
190
+ style={[webStyles.rangeBandLeft, { backgroundColor: rangeColor }]}
191
+ />
192
+ )}
193
+
194
+ {/* Thermometer band for in-range dates (full width) */}
195
+ {isInRange && (
196
+ <View
197
+ style={[webStyles.rangeBand, { backgroundColor: rangeColor }]}
198
+ />
199
+ )}
200
+
201
+ {/* Circle for selected/range start/end */}
202
+ {(isRangeStart || isRangeEnd || isSelected) && (
203
+ <View
204
+ style={[
205
+ webStyles.circleOverlay,
206
+ { backgroundColor: selectedColor },
207
+ ]}
208
+ />
209
+ )}
210
+
211
+ {/* Today indicator (when not in range) */}
212
+ {todayStyle ? (
213
+ <View style={[webStyles.circleOverlay, todayStyle]} />
214
+ ) : null}
215
+
157
216
  <Text style={[webStyles.text, textStyle]}>{date.getUTCDate()}</Text>
158
217
  </Pressable>
159
218
  );