@pagamio/frontend-commons-lib 0.8.358 → 0.8.359

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.
@@ -11,6 +11,12 @@ import { Popover, PopoverContent, PopoverTrigger } from './Popover';
11
11
  // =============================================================================
12
12
  // PRESET DEFINITIONS (used for display text + preset detection)
13
13
  // =============================================================================
14
+ // "All Time" is intentionally not in PRESET_RANGES because it has no concrete
15
+ // date range — it represents the absence of a date filter. It is surfaced in
16
+ // the trigger label and the picker treats `selectedPreset === 'all_time'` as
17
+ // "no value", letting consumers pass empty startDate/endDate to the backend.
18
+ const ALL_TIME_PRESET_VALUE = 'all_time';
19
+ const ALL_TIME_PRESET_LABEL = 'All Time';
14
20
  const PRESET_RANGES = [
15
21
  {
16
22
  label: 'Today',
@@ -113,6 +119,9 @@ const DateRangePickerWithPresets = ({ value, onChange, selectedPreset = 'last_7_
113
119
  }
114
120
  return format(value.from, dateFormat);
115
121
  }
122
+ if (selectedPreset === ALL_TIME_PRESET_VALUE) {
123
+ return ALL_TIME_PRESET_LABEL;
124
+ }
116
125
  if (selectedPreset && selectedPreset !== 'custom') {
117
126
  const match = PRESET_RANGES.find((p) => p.value === selectedPreset);
118
127
  if (match)
@@ -139,7 +148,9 @@ const DateRangePickerWithPresets = ({ value, onChange, selectedPreset = 'last_7_
139
148
  e.stopPropagation();
140
149
  onChange?.(undefined, undefined);
141
150
  };
142
- return (_jsxs(Popover, { open: isOpen, onOpenChange: setIsOpen, children: [_jsx(PopoverTrigger, { asChild: true, children: _jsxs(Button, { variant: "outline", disabled: disabled, className: cn('w-auto justify-start text-left font-normal', !value && 'text-muted-foreground', className), children: [_jsx(CalendarIcon, { className: "mr-2 h-4 w-4" }), _jsx("span", { children: displayText }), showClearButton && value?.from && (_jsx(X, { className: "ml-2 h-4 w-4 opacity-50 hover:opacity-100 cursor-pointer", onClick: handleClear }))] }) }), _jsx(PopoverContent, { className: "w-auto p-0 bg-popover text-popover-foreground border border-border shadow-lg", align: "start", sideOffset: 8, children: _jsx(DateRangePicker, { ranges: [selectionRange], onChange: handleRangeChange, moveRangeOnFirstSelection: false, months: numberOfMonths, direction: "horizontal", showDateDisplay: false, showPreview: true, minDate: minDate, maxDate: maxDate, rangeColors: rangeColors, staticRanges: staticRanges, inputRanges: [] }) })] }));
151
+ return (_jsxs(Popover, { open: isOpen, onOpenChange: setIsOpen, children: [_jsx(PopoverTrigger, { asChild: true, children: _jsxs(Button, { variant: "outline", disabled: disabled, className: cn('w-auto justify-start text-left font-normal', !value && 'text-muted-foreground', className), children: [_jsx(CalendarIcon, { className: "mr-2 h-4 w-4" }), _jsx("span", { children: displayText }), showClearButton && value?.from && (_jsx(X, { className: "ml-2 h-4 w-4 opacity-50 hover:opacity-100 cursor-pointer", onClick: handleClear }))] }) }), _jsxs(PopoverContent, { className: "w-auto p-0 bg-popover text-popover-foreground border border-border shadow-lg", align: "start", sideOffset: 8, children: [_jsx("button", { type: "button", onClick: () => onChange?.(undefined, ALL_TIME_PRESET_VALUE), className: cn('w-full border-b border-border px-4 py-3 text-left text-sm transition-colors hover:bg-accent hover:text-accent-foreground', selectedPreset === ALL_TIME_PRESET_VALUE && !value?.from
152
+ ? 'bg-accent font-semibold text-accent-foreground'
153
+ : 'text-popover-foreground'), children: ALL_TIME_PRESET_LABEL }), _jsx(DateRangePicker, { ranges: [selectionRange], onChange: handleRangeChange, moveRangeOnFirstSelection: false, months: numberOfMonths, direction: "horizontal", showDateDisplay: false, showPreview: true, minDate: minDate, maxDate: maxDate, rangeColors: rangeColors, staticRanges: staticRanges, inputRanges: [] })] })] }));
143
154
  };
144
155
  DateRangePickerWithPresets.displayName = 'DateRangePickerWithPresets';
145
156
  export default DateRangePickerWithPresets;
@@ -80,7 +80,7 @@ const ChartRenderer = ({ config, loading }) => {
80
80
  case 'heatmap': {
81
81
  // Heatmap expects series: { name, data: { x, y }[] }[]
82
82
  const data = config.data;
83
- return (_jsx(DashboardCard, { title: config.title, subtitle: config.subtitle, actions: config.action, footer: config.footer, className: config.cardClassName, children: _jsx(HeatmapChartV2, { series: data.series, height: chartHeight, colors: chartColors, className: config.chartClassName }) }));
83
+ return (_jsx(DashboardCard, { title: config.title, subtitle: config.subtitle, actions: config.action, footer: config.footer, className: config.cardClassName, children: _jsx(HeatmapChartV2, { series: data.series, height: chartHeight, colors: chartColors, options: config.options, className: config.chartClassName }) }));
84
84
  }
85
85
  default:
86
86
  return (_jsx(DashboardCard, { title: config.title, subtitle: config.subtitle, className: config.cardClassName, children: _jsxs("div", { className: "flex items-center justify-center text-muted-foreground", style: { height: chartHeight }, children: ["Unsupported chart type: ", config.type] }) }));
package/lib/styles.css CHANGED
@@ -3936,6 +3936,84 @@ video {
3936
3936
  width: auto !important;
3937
3937
  min-width: 0 !important;
3938
3938
  }
3939
+
3940
+ /* react-date-range ships a light-only theme. Re-skin its surfaces with our
3941
+ * popover / muted / border tokens so the date-range picker matches dark mode.
3942
+ * Selection highlight stays untouched — the component already drives that
3943
+ * via the `rangeColors` prop pulled from `--primary` at runtime.
3944
+ */
3945
+ .dark .rdrCalendarWrapper,
3946
+ .dark .rdrDateRangeWrapper,
3947
+ .dark .rdrDefinedRangesWrapper {
3948
+ background: hsl(var(--popover)) !important;
3949
+ color: hsl(var(--popover-foreground)) !important;
3950
+ }
3951
+ .dark .rdrDefinedRangesWrapper {
3952
+ border-right: 1px solid hsl(var(--border)) !important;
3953
+ }
3954
+ .dark .rdrStaticRanges {
3955
+ background: transparent !important;
3956
+ }
3957
+ .dark .rdrStaticRange {
3958
+ background: transparent !important;
3959
+ border-bottom: 1px solid hsl(var(--border)) !important;
3960
+ }
3961
+ .dark .rdrStaticRange:hover .rdrStaticRangeLabel,
3962
+ .dark .rdrStaticRange:focus .rdrStaticRangeLabel {
3963
+ background: hsl(var(--accent)) !important;
3964
+ color: hsl(var(--accent-foreground)) !important;
3965
+ }
3966
+ .dark .rdrStaticRangeLabel {
3967
+ color: hsl(var(--popover-foreground)) !important;
3968
+ }
3969
+ .dark .rdrStaticRangeSelected .rdrStaticRangeLabel {
3970
+ color: hsl(var(--primary)) !important;
3971
+ font-weight: 600;
3972
+ }
3973
+ .dark .rdrMonthAndYearWrapper,
3974
+ .dark .rdrMonth {
3975
+ background: transparent !important;
3976
+ color: hsl(var(--popover-foreground)) !important;
3977
+ }
3978
+ .dark .rdrMonthName,
3979
+ .dark .rdrWeekDay {
3980
+ color: hsl(var(--muted-foreground)) !important;
3981
+ }
3982
+ .dark .rdrMonthAndYearPickers select {
3983
+ color: hsl(var(--popover-foreground)) !important;
3984
+ background-color: transparent !important;
3985
+ }
3986
+ .dark .rdrMonthAndYearPickers select:hover {
3987
+ background-color: hsl(var(--accent)) !important;
3988
+ }
3989
+ .dark .rdrNextPrevButton {
3990
+ background: hsl(var(--muted)) !important;
3991
+ }
3992
+ .dark .rdrNextPrevButton:hover {
3993
+ background: hsl(var(--accent)) !important;
3994
+ }
3995
+ .dark .rdrPprevButton i {
3996
+ border-color: transparent hsl(var(--popover-foreground)) transparent transparent !important;
3997
+ }
3998
+ .dark .rdrNextButton i {
3999
+ border-color: transparent transparent transparent hsl(var(--popover-foreground)) !important;
4000
+ }
4001
+ .dark .rdrDayNumber span {
4002
+ color: hsl(var(--popover-foreground)) !important;
4003
+ }
4004
+ .dark .rdrDayPassive .rdrDayNumber span {
4005
+ color: hsl(var(--muted-foreground)) !important;
4006
+ }
4007
+ .dark .rdrDayDisabled {
4008
+ background: transparent !important;
4009
+ }
4010
+ .dark .rdrDayDisabled .rdrDayNumber span {
4011
+ color: hsl(var(--muted-foreground)) !important;
4012
+ opacity: 0.5;
4013
+ }
4014
+ .dark .rdrDayToday .rdrDayNumber span:after {
4015
+ background: hsl(var(--primary)) !important;
4016
+ }
3939
4017
  .file\:-ms-4::file-selector-button {
3940
4018
  margin-inline-start: -1rem;
3941
4019
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@pagamio/frontend-commons-lib",
3
3
  "description": "Pagamio library for Frontend reusable components like the form engine and table container",
4
- "version": "0.8.358",
4
+ "version": "0.8.359",
5
5
  "publishConfig": {
6
6
  "access": "public",
7
7
  "provenance": false