@blaze-dev/ui 0.10.0 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/dist/connection-badge.d.ts +7 -0
  2. package/dist/connection-badge.d.ts.map +1 -0
  3. package/dist/connection-badge.js +25 -0
  4. package/dist/connection-badge.js.map +1 -0
  5. package/dist/data/advanced-filters-section.d.ts +10 -0
  6. package/dist/data/advanced-filters-section.d.ts.map +1 -0
  7. package/dist/data/advanced-filters-section.js +7 -0
  8. package/dist/data/advanced-filters-section.js.map +1 -0
  9. package/dist/data/index.d.ts +1 -0
  10. package/dist/data/index.d.ts.map +1 -1
  11. package/dist/data/index.js +1 -0
  12. package/dist/data/index.js.map +1 -1
  13. package/dist/hooks/index.d.ts +3 -0
  14. package/dist/hooks/index.d.ts.map +1 -1
  15. package/dist/hooks/index.js +3 -0
  16. package/dist/hooks/index.js.map +1 -1
  17. package/dist/hooks/use-apex-chart.d.ts +6 -0
  18. package/dist/hooks/use-apex-chart.d.ts.map +1 -0
  19. package/dist/hooks/use-apex-chart.js +31 -0
  20. package/dist/hooks/use-apex-chart.js.map +1 -0
  21. package/dist/hooks/use-date-period-filter.d.ts +17 -0
  22. package/dist/hooks/use-date-period-filter.d.ts.map +1 -0
  23. package/dist/hooks/use-date-period-filter.js +171 -0
  24. package/dist/hooks/use-date-period-filter.js.map +1 -0
  25. package/dist/hooks/use-integration-status.d.ts +23 -0
  26. package/dist/hooks/use-integration-status.d.ts.map +1 -0
  27. package/dist/hooks/use-integration-status.js +24 -0
  28. package/dist/hooks/use-integration-status.js.map +1 -0
  29. package/dist/index.d.ts +8 -0
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js +10 -0
  32. package/dist/index.js.map +1 -1
  33. package/dist/integration-card.d.ts +15 -0
  34. package/dist/integration-card.d.ts.map +1 -0
  35. package/dist/integration-card.js +11 -0
  36. package/dist/integration-card.js.map +1 -0
  37. package/dist/label-badge.d.ts +8 -0
  38. package/dist/label-badge.d.ts.map +1 -0
  39. package/dist/label-badge.js +10 -0
  40. package/dist/label-badge.js.map +1 -0
  41. package/dist/utils/currency-utils.d.ts +11 -0
  42. package/dist/utils/currency-utils.d.ts.map +1 -0
  43. package/dist/utils/currency-utils.js +31 -0
  44. package/dist/utils/currency-utils.js.map +1 -0
  45. package/dist/utils/index.d.ts +1 -0
  46. package/dist/utils/index.d.ts.map +1 -1
  47. package/dist/utils/index.js +1 -0
  48. package/dist/utils/index.js.map +1 -1
  49. package/package.json +7 -2
@@ -0,0 +1,7 @@
1
+ export type ConnectionStatus = 'connected' | 'error' | 'not-connected';
2
+ interface ConnectionBadgeProps {
3
+ status: ConnectionStatus;
4
+ }
5
+ export declare function ConnectionBadge({ status }: ConnectionBadgeProps): import("react/jsx-runtime").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=connection-badge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection-badge.d.ts","sourceRoot":"","sources":["../src/connection-badge.tsx"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG,WAAW,GAAG,OAAO,GAAG,eAAe,CAAA;AAEtE,UAAU,oBAAoB;IAC5B,MAAM,EAAE,gBAAgB,CAAA;CACzB;AAgCD,wBAAgB,eAAe,CAAC,EAAE,MAAM,EAAE,EAAE,oBAAoB,2CAyB/D"}
@@ -0,0 +1,25 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ const CheckCircleIcon = () => (_jsx("svg", { xmlns: 'http://www.w3.org/2000/svg', viewBox: '0 0 20 20', fill: 'currentColor', className: 'w-3.5 h-3.5', children: _jsx("path", { fillRule: 'evenodd', d: 'M10 18a8 8 0 1 0 0-16 8 8 0 0 0 0 16Zm3.857-9.809a.75.75 0 0 0-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 1 0-1.06 1.061l2.5 2.5a.75.75 0 0 0 1.137-.089l4-5.5Z', clipRule: 'evenodd' }) }));
3
+ const XCircleIcon = () => (_jsx("svg", { xmlns: 'http://www.w3.org/2000/svg', viewBox: '0 0 20 20', fill: 'currentColor', className: 'w-3.5 h-3.5', children: _jsx("path", { fillRule: 'evenodd', d: 'M10 18a8 8 0 1 0 0-16 8 8 0 0 0 0 16ZM8.28 7.22a.75.75 0 0 0-1.06 1.06L8.94 10l-1.72 1.72a.75.75 0 1 0 1.06 1.06L10 11.06l1.72 1.72a.75.75 0 1 0 1.06-1.06L11.06 10l1.72-1.72a.75.75 0 0 0-1.06-1.06L10 8.94 8.28 7.22Z', clipRule: 'evenodd' }) }));
4
+ const MinusCircleIcon = () => (_jsx("svg", { xmlns: 'http://www.w3.org/2000/svg', viewBox: '0 0 20 20', fill: 'currentColor', className: 'w-3.5 h-3.5', children: _jsx("path", { fillRule: 'evenodd', d: 'M10 18a8 8 0 1 0 0-16 8 8 0 0 0 0 16ZM6.75 9.25a.75.75 0 0 0 0 1.5h6.5a.75.75 0 0 0 0-1.5h-6.5Z', clipRule: 'evenodd' }) }));
5
+ export function ConnectionBadge({ status }) {
6
+ const config = {
7
+ connected: {
8
+ label: 'Connected',
9
+ classes: 'badge-success',
10
+ icon: _jsx(CheckCircleIcon, {}),
11
+ },
12
+ error: {
13
+ label: 'Error',
14
+ classes: 'badge-error',
15
+ icon: _jsx(XCircleIcon, {}),
16
+ },
17
+ 'not-connected': {
18
+ label: 'Not Connected',
19
+ classes: 'badge-ghost',
20
+ icon: _jsx(MinusCircleIcon, {}),
21
+ },
22
+ }[status];
23
+ return (_jsxs("div", { className: `badge ${config.classes} gap-1.5 font-medium px-2.5 py-2.5 flex items-center`, children: [config.icon, _jsx("span", { className: 'leading-none', children: config.label })] }));
24
+ }
25
+ //# sourceMappingURL=connection-badge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection-badge.js","sourceRoot":"","sources":["../src/connection-badge.tsx"],"names":[],"mappings":";AAMA,MAAM,eAAe,GAAG,GAAG,EAAE,CAAC,CAC5B,cAAK,KAAK,EAAC,4BAA4B,EAAC,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,cAAc,EAAC,SAAS,EAAC,aAAa,YACrG,eACE,QAAQ,EAAC,SAAS,EAClB,CAAC,EAAC,gKAAgK,EAClK,QAAQ,EAAC,SAAS,GAClB,GACE,CACP,CAAA;AAED,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,CACxB,cAAK,KAAK,EAAC,4BAA4B,EAAC,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,cAAc,EAAC,SAAS,EAAC,aAAa,YACrG,eACE,QAAQ,EAAC,SAAS,EAClB,CAAC,EAAC,yNAAyN,EAC3N,QAAQ,EAAC,SAAS,GAClB,GACE,CACP,CAAA;AAED,MAAM,eAAe,GAAG,GAAG,EAAE,CAAC,CAC5B,cAAK,KAAK,EAAC,4BAA4B,EAAC,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,cAAc,EAAC,SAAS,EAAC,aAAa,YACrG,eACE,QAAQ,EAAC,SAAS,EAClB,CAAC,EAAC,iGAAiG,EACnG,QAAQ,EAAC,SAAS,GAClB,GACE,CACP,CAAA;AAED,MAAM,UAAU,eAAe,CAAC,EAAE,MAAM,EAAwB;IAC9D,MAAM,MAAM,GAAG;QACb,SAAS,EAAE;YACT,KAAK,EAAE,WAAW;YAClB,OAAO,EAAE,eAAe;YACxB,IAAI,EAAE,KAAC,eAAe,KAAG;SAC1B;QACD,KAAK,EAAE;YACL,KAAK,EAAE,OAAO;YACd,OAAO,EAAE,aAAa;YACtB,IAAI,EAAE,KAAC,WAAW,KAAG;SACtB;QACD,eAAe,EAAE;YACf,KAAK,EAAE,eAAe;YACtB,OAAO,EAAE,aAAa;YACtB,IAAI,EAAE,KAAC,eAAe,KAAG;SAC1B;KACF,CAAC,MAAM,CAAC,CAAA;IAET,OAAO,CACL,eAAK,SAAS,EAAE,SAAS,MAAM,CAAC,OAAO,sDAAsD,aAC1F,MAAM,CAAC,IAAI,EACZ,eAAM,SAAS,EAAC,cAAc,YAAE,MAAM,CAAC,KAAK,GAAQ,IAChD,CACP,CAAA;AACH,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { type ReactNode } from 'react';
2
+ interface AdvancedFiltersSectionProps {
3
+ children: ReactNode;
4
+ hasActiveFilters?: boolean;
5
+ defaultExpanded?: boolean;
6
+ columns?: number;
7
+ }
8
+ export declare function AdvancedFiltersSection({ children, hasActiveFilters, defaultExpanded, columns, }: AdvancedFiltersSectionProps): import("react/jsx-runtime").JSX.Element;
9
+ export {};
10
+ //# sourceMappingURL=advanced-filters-section.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"advanced-filters-section.d.ts","sourceRoot":"","sources":["../../src/data/advanced-filters-section.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAY,MAAM,OAAO,CAAA;AAEhD,UAAU,2BAA2B;IACnC,QAAQ,EAAE,SAAS,CAAA;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,wBAAgB,sBAAsB,CAAC,EACrC,QAAQ,EACR,gBAAwB,EACxB,eAAuB,EACvB,OAAW,GACZ,EAAE,2BAA2B,2CAuB7B"}
@@ -0,0 +1,7 @@
1
+ import { jsxs as _jsxs, jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useState } from 'react';
3
+ export function AdvancedFiltersSection({ children, hasActiveFilters = false, defaultExpanded = false, columns = 4, }) {
4
+ const [expanded, setExpanded] = useState(defaultExpanded);
5
+ return (_jsxs(_Fragment, { children: [_jsxs("button", { type: 'button', className: `btn btn-sm ${expanded || hasActiveFilters ? 'btn-primary' : 'btn-ghost'}`, onClick: () => setExpanded((v) => !v), children: [expanded ? 'Less' : 'More', hasActiveFilters && !expanded && ' *'] }), expanded && (_jsx("div", { className: 'col-span-full grid grid-cols-1 gap-4 items-end mt-4 pt-4 border-t border-base-300', style: { gridTemplateColumns: `repeat(${columns}, 1fr)` }, children: children }))] }));
6
+ }
7
+ //# sourceMappingURL=advanced-filters-section.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"advanced-filters-section.js","sourceRoot":"","sources":["../../src/data/advanced-filters-section.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAkB,QAAQ,EAAE,MAAM,OAAO,CAAA;AAShD,MAAM,UAAU,sBAAsB,CAAC,EACrC,QAAQ,EACR,gBAAgB,GAAG,KAAK,EACxB,eAAe,GAAG,KAAK,EACvB,OAAO,GAAG,CAAC,GACiB;IAC5B,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,eAAe,CAAC,CAAA;IAEzD,OAAO,CACL,8BACE,kBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,cAAc,QAAQ,IAAI,gBAAgB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,EAAE,EACrF,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,aAEpC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAC1B,gBAAgB,IAAI,CAAC,QAAQ,IAAI,IAAI,IAC/B,EACR,QAAQ,IAAI,CACX,cACE,SAAS,EAAC,mFAAmF,EAC7F,KAAK,EAAE,EAAE,mBAAmB,EAAE,UAAU,OAAO,QAAQ,EAAE,YAExD,QAAQ,GACL,CACP,IACA,CACJ,CAAA;AACH,CAAC"}
@@ -5,4 +5,5 @@ export { StatsGrid } from './stats-grid.js';
5
5
  export { ResultsCount } from './results-count.js';
6
6
  export { FilterSection, FilterLabel, FilterInput, FilterDateInput, FilterSelect } from './filter-section.js';
7
7
  export { FilterRangeInput } from './filter-range-input.js';
8
+ export { AdvancedFiltersSection } from './advanced-filters-section.js';
8
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/data/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAC5G,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/data/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAC5G,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA"}
@@ -5,4 +5,5 @@ export { StatsGrid } from './stats-grid.js';
5
5
  export { ResultsCount } from './results-count.js';
6
6
  export { FilterSection, FilterLabel, FilterInput, FilterDateInput, FilterSelect } from './filter-section.js';
7
7
  export { FilterRangeInput } from './filter-range-input.js';
8
+ export { AdvancedFiltersSection } from './advanced-filters-section.js';
8
9
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/data/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAC5G,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/data/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAC5G,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA"}
@@ -8,4 +8,7 @@ export { useTheme, DAISY_THEMES, type DaisyTheme } from './use-theme.js';
8
8
  export { useClickOutside } from './use-click-outside.js';
9
9
  export { useConfirm, type ConfirmOptions, type ConfirmModalState } from './use-confirm.js';
10
10
  export { useInfiniteScroll } from './use-infinite-scroll.js';
11
+ export { useDatePeriodFilter, type DatePeriodFilter, type DefaultPeriod } from './use-date-period-filter.js';
12
+ export { useApexChart } from './use-apex-chart.js';
13
+ export { useIntegrationStatus, checkConnectedField, checkIsConnectedField, type IntegrationStatus, type UseIntegrationStatusOptions, type IntegrationStatusResult, } from './use-integration-status.js';
11
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAC/D,OAAO,EAAE,gBAAgB,EAAE,KAAK,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AACrF,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAA;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,UAAU,EAAE,KAAK,cAAc,EAAE,KAAK,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAC1F,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAC/D,OAAO,EAAE,gBAAgB,EAAE,KAAK,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AACrF,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAA;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,UAAU,EAAE,KAAK,cAAc,EAAE,KAAK,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAC1F,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,mBAAmB,EAAE,KAAK,gBAAgB,EAAE,KAAK,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAC5G,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,KAAK,iBAAiB,EACtB,KAAK,2BAA2B,EAChC,KAAK,uBAAuB,GAC7B,MAAM,6BAA6B,CAAA"}
@@ -8,4 +8,7 @@ export { useTheme, DAISY_THEMES } from './use-theme.js';
8
8
  export { useClickOutside } from './use-click-outside.js';
9
9
  export { useConfirm } from './use-confirm.js';
10
10
  export { useInfiniteScroll } from './use-infinite-scroll.js';
11
+ export { useDatePeriodFilter } from './use-date-period-filter.js';
12
+ export { useApexChart } from './use-apex-chart.js';
13
+ export { useIntegrationStatus, checkConnectedField, checkIsConnectedField, } from './use-integration-status.js';
11
14
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAC/D,OAAO,EAAE,gBAAgB,EAA6B,MAAM,yBAAyB,CAAA;AACrF,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAmB,MAAM,gBAAgB,CAAA;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,UAAU,EAA+C,MAAM,kBAAkB,CAAA;AAC1F,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAC/D,OAAO,EAAE,gBAAgB,EAA6B,MAAM,yBAAyB,CAAA;AACrF,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAmB,MAAM,gBAAgB,CAAA;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,UAAU,EAA+C,MAAM,kBAAkB,CAAA;AAC1F,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,mBAAmB,EAA6C,MAAM,6BAA6B,CAAA;AAC5G,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,GAItB,MAAM,6BAA6B,CAAA"}
@@ -0,0 +1,6 @@
1
+ import type ApexCharts from 'apexcharts';
2
+ export declare function useApexChart(options: ApexCharts.ApexOptions | null, dependencies?: unknown[]): {
3
+ chartRef: import("react").RefObject<HTMLDivElement | null>;
4
+ chartInstance: import("react").RefObject<ApexCharts | null>;
5
+ };
6
+ //# sourceMappingURL=use-apex-chart.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-apex-chart.d.ts","sourceRoot":"","sources":["../../src/hooks/use-apex-chart.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,UAAU,MAAM,YAAY,CAAA;AAGxC,wBAAgB,YAAY,CAAC,OAAO,EAAE,UAAU,CAAC,WAAW,GAAG,IAAI,EAAE,YAAY,GAAE,OAAO,EAAO;;;EAmChG"}
@@ -0,0 +1,31 @@
1
+ import { useEffect, useRef } from 'react';
2
+ export function useApexChart(options, dependencies = []) {
3
+ const chartRef = useRef(null);
4
+ const chartInstance = useRef(null);
5
+ useEffect(() => {
6
+ if (!chartRef.current || !options) {
7
+ return;
8
+ }
9
+ const initChart = async () => {
10
+ const ApexChartsModule = await import('apexcharts');
11
+ const ApexChartsClass = ApexChartsModule.default;
12
+ if (!chartRef.current)
13
+ return;
14
+ if (chartInstance.current) {
15
+ chartInstance.current.destroy();
16
+ }
17
+ chartInstance.current = new ApexChartsClass(chartRef.current, options);
18
+ chartInstance.current.render();
19
+ };
20
+ initChart();
21
+ return () => {
22
+ if (chartInstance.current) {
23
+ chartInstance.current.destroy();
24
+ chartInstance.current = null;
25
+ }
26
+ };
27
+ // eslint-disable-next-line react-hooks/exhaustive-deps
28
+ }, [options, ...dependencies]);
29
+ return { chartRef, chartInstance };
30
+ }
31
+ //# sourceMappingURL=use-apex-chart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-apex-chart.js","sourceRoot":"","sources":["../../src/hooks/use-apex-chart.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AAEzC,MAAM,UAAU,YAAY,CAAC,OAAsC,EAAE,eAA0B,EAAE;IAC/F,MAAM,QAAQ,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAA;IAC7C,MAAM,aAAa,GAAG,MAAM,CAAoB,IAAI,CAAC,CAAA;IAErD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;YAClC,OAAM;QACR,CAAC;QAED,MAAM,SAAS,GAAG,KAAK,IAAI,EAAE;YAC3B,MAAM,gBAAgB,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAA;YACnD,MAAM,eAAe,GAAG,gBAAgB,CAAC,OAAO,CAAA;YAEhD,IAAI,CAAC,QAAQ,CAAC,OAAO;gBAAE,OAAM;YAE7B,IAAI,aAAa,CAAC,OAAO,EAAE,CAAC;gBAC1B,aAAa,CAAC,OAAO,CAAC,OAAO,EAAE,CAAA;YACjC,CAAC;YAED,aAAa,CAAC,OAAO,GAAG,IAAI,eAAe,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;YACtE,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE,CAAA;QAChC,CAAC,CAAA;QAED,SAAS,EAAE,CAAA;QAEX,OAAO,GAAG,EAAE;YACV,IAAI,aAAa,CAAC,OAAO,EAAE,CAAC;gBAC1B,aAAa,CAAC,OAAO,CAAC,OAAO,EAAE,CAAA;gBAC/B,aAAa,CAAC,OAAO,GAAG,IAAI,CAAA;YAC9B,CAAC;QACH,CAAC,CAAA;QACD,uDAAuD;IACzD,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,YAAY,CAAC,CAAC,CAAA;IAE9B,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAA;AACpC,CAAC"}
@@ -0,0 +1,17 @@
1
+ export type DefaultPeriod = 'last-30' | 'all';
2
+ export interface DatePeriodFilter {
3
+ startDate: string | undefined;
4
+ endDate: string | undefined;
5
+ period: string;
6
+ periodOptions: Array<{
7
+ value: string;
8
+ label: string;
9
+ }>;
10
+ handlePeriodChange: (value: string) => void;
11
+ handleStartDateChange: (value: string) => void;
12
+ handleEndDateChange: (value: string) => void;
13
+ clearDates: () => void;
14
+ hasDateFilter: boolean;
15
+ }
16
+ export declare function useDatePeriodFilter(defaultPeriod?: DefaultPeriod, storageKey?: string): DatePeriodFilter;
17
+ //# sourceMappingURL=use-date-period-filter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-date-period-filter.d.ts","sourceRoot":"","sources":["../../src/hooks/use-date-period-filter.ts"],"names":[],"mappings":"AA6CA,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,KAAK,CAAA;AAkE7C,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;IAC7B,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,aAAa,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACtD,kBAAkB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAC3C,qBAAqB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9C,mBAAmB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAC5C,UAAU,EAAE,MAAM,IAAI,CAAA;IACtB,aAAa,EAAE,OAAO,CAAA;CACvB;AAED,wBAAgB,mBAAmB,CACjC,aAAa,GAAE,aAAyB,EACxC,UAAU,CAAC,EAAE,MAAM,GAClB,gBAAgB,CA8FlB"}
@@ -0,0 +1,171 @@
1
+ import { useMemo, useState } from 'react';
2
+ import { formatDateForInput } from '../utils/date-utils.js';
3
+ function getMonthPresets() {
4
+ const now = new Date();
5
+ const formatter = new Intl.DateTimeFormat('en-US', { month: 'long', year: 'numeric' });
6
+ const presets = [];
7
+ for (let i = 0; i < 14; i++) {
8
+ const firstDay = new Date(now.getFullYear(), now.getMonth() - i, 1);
9
+ const lastDay = new Date(firstDay.getFullYear(), firstDay.getMonth() + 1, 0);
10
+ presets.push({
11
+ value: i === 0 ? 'this-month' : i === 1 ? 'last-month' : formatDateForInput(firstDay),
12
+ label: formatter.format(firstDay),
13
+ startDate: formatDateForInput(firstDay),
14
+ endDate: formatDateForInput(lastDay),
15
+ });
16
+ }
17
+ return presets;
18
+ }
19
+ function detectPeriod(startDate, endDate, presets) {
20
+ if (startDate && !endDate) {
21
+ const thirtyDaysAgo = new Date();
22
+ thirtyDaysAgo.setDate(thirtyDaysAgo.getDate() - 30);
23
+ if (startDate === formatDateForInput(thirtyDaysAgo))
24
+ return 'last-30';
25
+ }
26
+ if (startDate && endDate) {
27
+ const match = presets.find((p) => p.startDate === startDate && p.endDate === endDate);
28
+ if (match)
29
+ return match.value;
30
+ }
31
+ if (!startDate && !endDate)
32
+ return 'all';
33
+ return 'custom';
34
+ }
35
+ function getInitialDates(defaultPeriod) {
36
+ if (defaultPeriod === 'last-30') {
37
+ const thirtyDaysAgo = new Date();
38
+ thirtyDaysAgo.setDate(thirtyDaysAgo.getDate() - 30);
39
+ return { startDate: formatDateForInput(thirtyDaysAgo), endDate: undefined };
40
+ }
41
+ return { startDate: undefined, endDate: undefined };
42
+ }
43
+ function readStoredPeriod(storageKey) {
44
+ try {
45
+ const stored = localStorage.getItem(storageKey);
46
+ if (stored !== null) {
47
+ return JSON.parse(stored);
48
+ }
49
+ }
50
+ catch {
51
+ // ignore
52
+ }
53
+ return null;
54
+ }
55
+ function writeStoredPeriod(storageKey, value) {
56
+ try {
57
+ localStorage.setItem(storageKey, JSON.stringify(value));
58
+ }
59
+ catch {
60
+ // ignore
61
+ }
62
+ }
63
+ function computeDatesForPeriod(period, monthPresets, customDates) {
64
+ if (period === 'all') {
65
+ return { startDate: undefined, endDate: undefined };
66
+ }
67
+ if (period === 'last-30') {
68
+ const thirtyDaysAgo = new Date();
69
+ thirtyDaysAgo.setDate(thirtyDaysAgo.getDate() - 30);
70
+ return { startDate: formatDateForInput(thirtyDaysAgo), endDate: undefined };
71
+ }
72
+ if (period === 'custom') {
73
+ return {
74
+ startDate: customDates?.startDate,
75
+ endDate: customDates?.endDate,
76
+ };
77
+ }
78
+ const preset = monthPresets.find((p) => p.value === period);
79
+ if (preset) {
80
+ return { startDate: preset.startDate, endDate: preset.endDate };
81
+ }
82
+ return { startDate: undefined, endDate: undefined };
83
+ }
84
+ export function useDatePeriodFilter(defaultPeriod = 'last-30', storageKey) {
85
+ const monthPresets = useMemo(() => getMonthPresets(), []);
86
+ const storedPeriod = storageKey ? readStoredPeriod(storageKey) : null;
87
+ const [dates, setDates] = useState(() => {
88
+ if (storedPeriod) {
89
+ return computeDatesForPeriod(storedPeriod.period, monthPresets, storedPeriod);
90
+ }
91
+ return getInitialDates(defaultPeriod);
92
+ });
93
+ const [period, setPeriod] = useState(() => {
94
+ if (storedPeriod)
95
+ return storedPeriod.period;
96
+ return defaultPeriod === 'all' ? 'all' : 'last-30';
97
+ });
98
+ const persist = (p, d) => {
99
+ if (storageKey) {
100
+ writeStoredPeriod(storageKey, { period: p, startDate: d.startDate, endDate: d.endDate });
101
+ }
102
+ };
103
+ const periodOptions = useMemo(() => [
104
+ { value: 'all', label: 'All Time' },
105
+ { value: 'custom', label: 'Custom' },
106
+ { value: 'last-30', label: 'Last 30 Days' },
107
+ ...monthPresets.map((p) => ({ value: p.value, label: p.label })),
108
+ ], [monthPresets]);
109
+ const handlePeriodChange = (value) => {
110
+ setPeriod(value);
111
+ if (value === 'all') {
112
+ const newDates = { startDate: undefined, endDate: undefined };
113
+ setDates(newDates);
114
+ persist(value, newDates);
115
+ }
116
+ else if (value === 'last-30') {
117
+ const thirtyDaysAgo = new Date();
118
+ thirtyDaysAgo.setDate(thirtyDaysAgo.getDate() - 30);
119
+ const newDates = { startDate: formatDateForInput(thirtyDaysAgo), endDate: undefined };
120
+ setDates(newDates);
121
+ persist(value, newDates);
122
+ }
123
+ else if (value === 'custom') {
124
+ persist(value, dates);
125
+ }
126
+ else {
127
+ const preset = monthPresets.find((p) => p.value === value);
128
+ if (preset) {
129
+ const newDates = { startDate: preset.startDate, endDate: preset.endDate };
130
+ setDates(newDates);
131
+ persist(value, newDates);
132
+ }
133
+ }
134
+ };
135
+ const handleStartDateChange = (value) => {
136
+ const newDates = { ...dates, startDate: value || undefined };
137
+ setDates(newDates);
138
+ const newPeriod = detectPeriod(newDates.startDate, newDates.endDate, monthPresets);
139
+ setPeriod(newPeriod);
140
+ persist(newPeriod, newDates);
141
+ };
142
+ const handleEndDateChange = (value) => {
143
+ const newDates = { ...dates, endDate: value || undefined };
144
+ setDates(newDates);
145
+ const newPeriod = detectPeriod(newDates.startDate, newDates.endDate, monthPresets);
146
+ setPeriod(newPeriod);
147
+ persist(newPeriod, newDates);
148
+ };
149
+ const clearDates = () => {
150
+ const initial = getInitialDates(defaultPeriod);
151
+ setDates(initial);
152
+ const defaultPeriodValue = defaultPeriod === 'all' ? 'all' : 'last-30';
153
+ setPeriod(defaultPeriodValue);
154
+ persist(defaultPeriodValue, initial);
155
+ };
156
+ const hasDateFilter = defaultPeriod === 'last-30'
157
+ ? period !== 'last-30'
158
+ : !!(dates.startDate || dates.endDate);
159
+ return {
160
+ startDate: dates.startDate,
161
+ endDate: dates.endDate,
162
+ period,
163
+ periodOptions,
164
+ handlePeriodChange,
165
+ handleStartDateChange,
166
+ handleEndDateChange,
167
+ clearDates,
168
+ hasDateFilter,
169
+ };
170
+ }
171
+ //# sourceMappingURL=use-date-period-filter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-date-period-filter.js","sourceRoot":"","sources":["../../src/hooks/use-date-period-filter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ export type IntegrationStatus = 'connected' | 'error' | 'not-connected';
2
+ export interface UseIntegrationStatusOptions<TData> {
3
+ data: TData | undefined;
4
+ error: {
5
+ message: string;
6
+ } | null;
7
+ isLoading: boolean;
8
+ isConnected: (data: TData) => boolean;
9
+ }
10
+ export interface IntegrationStatusResult {
11
+ status: IntegrationStatus;
12
+ isConnected: boolean;
13
+ errorMessage: string | null;
14
+ isLoading: boolean;
15
+ }
16
+ export declare function useIntegrationStatus<TData>(options: UseIntegrationStatusOptions<TData>): IntegrationStatusResult;
17
+ export declare const checkConnectedField: (data: {
18
+ connected?: boolean;
19
+ }) => boolean;
20
+ export declare const checkIsConnectedField: (data: {
21
+ isConnected?: boolean;
22
+ }) => boolean;
23
+ //# sourceMappingURL=use-integration-status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-integration-status.d.ts","sourceRoot":"","sources":["../../src/hooks/use-integration-status.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG,OAAO,GAAG,eAAe,CAAA;AAEvE,MAAM,WAAW,2BAA2B,CAAC,KAAK;IAChD,IAAI,EAAE,KAAK,GAAG,SAAS,CAAA;IACvB,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAA;IACjC,SAAS,EAAE,OAAO,CAAA;IAClB,WAAW,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,OAAO,CAAA;CACtC;AAED,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,iBAAiB,CAAA;IACzB,WAAW,EAAE,OAAO,CAAA;IACpB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,SAAS,EAAE,OAAO,CAAA;CACnB;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EACxC,OAAO,EAAE,2BAA2B,CAAC,KAAK,CAAC,GAC1C,uBAAuB,CAqBzB;AAED,eAAO,MAAM,mBAAmB,GAAI,MAAM;IAAE,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,KAAG,OAC3C,CAAA;AAEzB,eAAO,MAAM,qBAAqB,GAAI,MAAM;IAAE,WAAW,CAAC,EAAE,OAAO,CAAA;CAAE,KAAG,OAC7C,CAAA"}
@@ -0,0 +1,24 @@
1
+ export function useIntegrationStatus(options) {
2
+ const { data, error, isLoading, isConnected: checkConnected } = options;
3
+ const isConnected = data ? checkConnected(data) : false;
4
+ const errorMessage = error ? error.message : null;
5
+ let status;
6
+ if (error) {
7
+ status = 'error';
8
+ }
9
+ else if (isConnected) {
10
+ status = 'connected';
11
+ }
12
+ else {
13
+ status = 'not-connected';
14
+ }
15
+ return {
16
+ status,
17
+ isConnected,
18
+ errorMessage,
19
+ isLoading,
20
+ };
21
+ }
22
+ export const checkConnectedField = (data) => data.connected ?? false;
23
+ export const checkIsConnectedField = (data) => data.isConnected ?? false;
24
+ //# sourceMappingURL=use-integration-status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-integration-status.js","sourceRoot":"","sources":["../../src/hooks/use-integration-status.ts"],"names":[],"mappings":"AAgBA,MAAM,UAAU,oBAAoB,CAClC,OAA2C;IAE3C,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE,GAAG,OAAO,CAAA;IAEvE,MAAM,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;IACvD,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAA;IAEjD,IAAI,MAAyB,CAAA;IAC7B,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,GAAG,OAAO,CAAA;IAClB,CAAC;SAAM,IAAI,WAAW,EAAE,CAAC;QACvB,MAAM,GAAG,WAAW,CAAA;IACtB,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,eAAe,CAAA;IAC1B,CAAC;IAED,OAAO;QACL,MAAM;QACN,WAAW;QACX,YAAY;QACZ,SAAS;KACV,CAAA;AACH,CAAC;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,IAA6B,EAAW,EAAE,CAC5E,IAAI,CAAC,SAAS,IAAI,KAAK,CAAA;AAEzB,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,IAA+B,EAAW,EAAE,CAChF,IAAI,CAAC,WAAW,IAAI,KAAK,CAAA"}
package/dist/index.d.ts CHANGED
@@ -19,9 +19,13 @@ export { StatsGrid } from './data/stats-grid.js';
19
19
  export { ResultsCount } from './data/results-count.js';
20
20
  export { FilterSection, FilterLabel, FilterInput, FilterDateInput, FilterSelect } from './data/filter-section.js';
21
21
  export { FilterRangeInput } from './data/filter-range-input.js';
22
+ export { AdvancedFiltersSection } from './data/advanced-filters-section.js';
22
23
  export { ActionButton } from './action-button.js';
23
24
  export { CopyButton } from './copy-button.js';
24
25
  export { StatusBadge } from './status-badge.js';
26
+ export { LabelBadge } from './label-badge.js';
27
+ export { ConnectionBadge, type ConnectionStatus } from './connection-badge.js';
28
+ export { IntegrationCard } from './integration-card.js';
25
29
  export { useCopyToClipboard } from './hooks/use-copy-to-clipboard.js';
26
30
  export { useMutationToast, type MutationToastOptions } from './hooks/use-mutation-toast.js';
27
31
  export { useModalState, useItemModal } from './hooks/use-modal-state.js';
@@ -32,6 +36,10 @@ export { useTheme, DAISY_THEMES, type DaisyTheme } from './hooks/use-theme.js';
32
36
  export { useClickOutside } from './hooks/use-click-outside.js';
33
37
  export { useConfirm, type ConfirmOptions, type ConfirmModalState } from './hooks/use-confirm.js';
34
38
  export { useInfiniteScroll } from './hooks/use-infinite-scroll.js';
39
+ export { useDatePeriodFilter, type DatePeriodFilter, type DefaultPeriod } from './hooks/use-date-period-filter.js';
40
+ export { useApexChart } from './hooks/use-apex-chart.js';
41
+ export { useIntegrationStatus, checkConnectedField, checkIsConnectedField, type IntegrationStatus, type UseIntegrationStatusOptions, type IntegrationStatusResult, } from './hooks/use-integration-status.js';
42
+ export { formatUsd, formatCurrencyValue } from './utils/currency-utils.js';
35
43
  export { FormField } from './forms/form-field.js';
36
44
  export { FormSelect } from './forms/form-select.js';
37
45
  export { FormTextarea } from './forms/form-textarea.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,IAAI,EAAE,KAAK,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,WAAW,CAAA;AAG9D,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACpD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,KAAK,EAAE,KAAK,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAClG,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAC5E,OAAO,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AAClF,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AAGnE,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACtD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACjH,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AAG/D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAG/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAA;AACrE,OAAO,EAAE,gBAAgB,EAAE,KAAK,oBAAoB,EAAE,MAAM,+BAA+B,CAAA;AAC3F,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAA;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAC9D,OAAO,EAAE,UAAU,EAAE,KAAK,cAAc,EAAE,KAAK,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAChG,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAGlE,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -22,10 +22,15 @@ export { StatsGrid } from './data/stats-grid.js';
22
22
  export { ResultsCount } from './data/results-count.js';
23
23
  export { FilterSection, FilterLabel, FilterInput, FilterDateInput, FilterSelect } from './data/filter-section.js';
24
24
  export { FilterRangeInput } from './data/filter-range-input.js';
25
+ export { AdvancedFiltersSection } from './data/advanced-filters-section.js';
25
26
  // Buttons
26
27
  export { ActionButton } from './action-button.js';
27
28
  export { CopyButton } from './copy-button.js';
28
29
  export { StatusBadge } from './status-badge.js';
30
+ // Labels & Status
31
+ export { LabelBadge } from './label-badge.js';
32
+ export { ConnectionBadge } from './connection-badge.js';
33
+ export { IntegrationCard } from './integration-card.js';
29
34
  // Hooks
30
35
  export { useCopyToClipboard } from './hooks/use-copy-to-clipboard.js';
31
36
  export { useMutationToast } from './hooks/use-mutation-toast.js';
@@ -37,6 +42,11 @@ export { useTheme, DAISY_THEMES } from './hooks/use-theme.js';
37
42
  export { useClickOutside } from './hooks/use-click-outside.js';
38
43
  export { useConfirm } from './hooks/use-confirm.js';
39
44
  export { useInfiniteScroll } from './hooks/use-infinite-scroll.js';
45
+ export { useDatePeriodFilter } from './hooks/use-date-period-filter.js';
46
+ export { useApexChart } from './hooks/use-apex-chart.js';
47
+ export { useIntegrationStatus, checkConnectedField, checkIsConnectedField, } from './hooks/use-integration-status.js';
48
+ // Utils (re-exported for convenience)
49
+ export { formatUsd, formatCurrencyValue } from './utils/currency-utils.js';
40
50
  // Forms
41
51
  export { FormField } from './forms/form-field.js';
42
52
  export { FormSelect } from './forms/form-select.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,SAAS;AACT,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,IAAI,EAAgC,MAAM,WAAW,CAAA;AAE9D,WAAW;AACX,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACpD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAA8B,MAAM,8BAA8B,CAAA;AAClG,OAAO,EAAE,UAAU,EAAwB,MAAM,2BAA2B,CAAA;AAC5E,OAAO,EAAE,YAAY,EAA0B,MAAM,6BAA6B,CAAA;AAClF,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AAEnE,OAAO;AACP,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACtD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACjH,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AAE/D,UAAU;AACV,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAE/C,QAAQ;AACR,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAA;AACrE,OAAO,EAAE,gBAAgB,EAA6B,MAAM,+BAA+B,CAAA;AAC3F,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAA;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAmB,MAAM,sBAAsB,CAAA;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAC9D,OAAO,EAAE,UAAU,EAA+C,MAAM,wBAAwB,CAAA;AAChG,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAElE,QAAQ;AACR,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { ReactNode } from 'react';
2
+ import { type ConnectionStatus } from './connection-badge.js';
3
+ interface IntegrationCardProps {
4
+ title: string;
5
+ description: string;
6
+ icon: ReactNode;
7
+ status: ConnectionStatus;
8
+ isLoading: boolean;
9
+ error?: string | null;
10
+ onRetry?: () => void;
11
+ children?: ReactNode;
12
+ }
13
+ export declare function IntegrationCard({ title, description, icon, status, isLoading, error, onRetry, children, }: IntegrationCardProps): import("react/jsx-runtime").JSX.Element;
14
+ export {};
15
+ //# sourceMappingURL=integration-card.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integration-card.d.ts","sourceRoot":"","sources":["../src/integration-card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAGtC,OAAO,EAAmB,KAAK,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAE9E,UAAU,oBAAoB;IAC5B,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,SAAS,CAAA;IACf,MAAM,EAAE,gBAAgB,CAAA;IACxB,SAAS,EAAE,OAAO,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,QAAQ,CAAC,EAAE,SAAS,CAAA;CACrB;AAED,wBAAgB,eAAe,CAAC,EAC9B,KAAK,EACL,WAAW,EACX,IAAI,EACJ,MAAM,EACN,SAAS,EACT,KAAK,EACL,OAAO,EACP,QAAQ,GACT,EAAE,oBAAoB,2CAuCtB"}
@@ -0,0 +1,11 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { ErrorBox } from './feedback/error-box.js';
3
+ import { LoadingSpinner } from './feedback/loading-spinner.js';
4
+ import { ConnectionBadge } from './connection-badge.js';
5
+ export function IntegrationCard({ title, description, icon, status, isLoading, error, onRetry, children, }) {
6
+ if (isLoading) {
7
+ return (_jsx("div", { className: 'card bg-base-200 border border-base-300', children: _jsx("div", { className: 'card-body', children: _jsx(LoadingSpinner, { size: 'sm', text: `Loading ${title} connection...` }) }) }));
8
+ }
9
+ return (_jsx("div", { className: 'card bg-base-200 border border-base-300', children: _jsxs("div", { className: 'card-body', children: [_jsxs("div", { className: 'flex flex-col sm:flex-row sm:items-center sm:justify-between gap-3 mb-4', children: [_jsxs("div", { className: 'flex items-start gap-3 flex-1 min-w-0', children: [_jsx("div", { className: 'w-10 h-10 bg-base-100 rounded-lg flex items-center justify-center shrink-0', children: icon }), _jsxs("div", { className: 'flex-1 min-w-0', children: [_jsx("h3", { className: 'text-base font-semibold text-left', children: title }), _jsx("p", { className: 'mt-1 text-sm opacity-60 text-left', children: description })] })] }), _jsx("div", { className: 'shrink-0', children: _jsx(ConnectionBadge, { status: status }) })] }), error && (_jsx("div", { className: 'mb-4', children: _jsx(ErrorBox, { error: error, onRetry: onRetry }) })), children] }) }));
10
+ }
11
+ //# sourceMappingURL=integration-card.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integration-card.js","sourceRoot":"","sources":["../src/integration-card.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAyB,MAAM,uBAAuB,CAAA;AAa9E,MAAM,UAAU,eAAe,CAAC,EAC9B,KAAK,EACL,WAAW,EACX,IAAI,EACJ,MAAM,EACN,SAAS,EACT,KAAK,EACL,OAAO,EACP,QAAQ,GACa;IACrB,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,CACL,cAAK,SAAS,EAAC,yCAAyC,YACtD,cAAK,SAAS,EAAC,WAAW,YACxB,KAAC,cAAc,IAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAE,WAAW,KAAK,gBAAgB,GAAI,GAChE,GACF,CACP,CAAA;IACH,CAAC;IAED,OAAO,CACL,cAAK,SAAS,EAAC,yCAAyC,YACtD,eAAK,SAAS,EAAC,WAAW,aACxB,eAAK,SAAS,EAAC,yEAAyE,aACtF,eAAK,SAAS,EAAC,uCAAuC,aACpD,cAAK,SAAS,EAAC,4EAA4E,YACxF,IAAI,GACD,EACN,eAAK,SAAS,EAAC,gBAAgB,aAC7B,aAAI,SAAS,EAAC,mCAAmC,YAAE,KAAK,GAAM,EAC9D,YAAG,SAAS,EAAC,mCAAmC,YAAE,WAAW,GAAK,IAC9D,IACF,EACN,cAAK,SAAS,EAAC,UAAU,YACvB,KAAC,eAAe,IAAC,MAAM,EAAE,MAAM,GAAI,GAC/B,IACF,EAEL,KAAK,IAAI,CACR,cAAK,SAAS,EAAC,MAAM,YACnB,KAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,GAAI,GACxC,CACP,EAEA,QAAQ,IACL,GACF,CACP,CAAA;AACH,CAAC"}
@@ -0,0 +1,8 @@
1
+ interface LabelBadgeProps {
2
+ name: string;
3
+ color: string;
4
+ onRemove?: () => void;
5
+ }
6
+ export declare function LabelBadge({ name, color, onRemove }: LabelBadgeProps): import("react/jsx-runtime").JSX.Element;
7
+ export {};
8
+ //# sourceMappingURL=label-badge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"label-badge.d.ts","sourceRoot":"","sources":["../src/label-badge.tsx"],"names":[],"mappings":"AAEA,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;CACtB;AAED,wBAAgB,UAAU,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,eAAe,2CAuBpE"}
@@ -0,0 +1,10 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { isLightHexColor } from './utils/color-utils.js';
3
+ export function LabelBadge({ name, color, onRemove }) {
4
+ const textColor = isLightHexColor(color) ? '#000000' : '#ffffff';
5
+ return (_jsxs("span", { className: 'badge badge-sm gap-1', style: { backgroundColor: color, color: textColor, borderColor: color }, children: [name, onRemove && (_jsx("button", { type: 'button', onClick: (e) => {
6
+ e.stopPropagation();
7
+ onRemove();
8
+ }, className: 'hover:opacity-70', children: "\u00D7" }))] }));
9
+ }
10
+ //# sourceMappingURL=label-badge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"label-badge.js","sourceRoot":"","sources":["../src/label-badge.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAQxD,MAAM,UAAU,UAAU,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAmB;IACnE,MAAM,SAAS,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAA;IAEhE,OAAO,CACL,gBACE,SAAS,EAAC,sBAAsB,EAChC,KAAK,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,aAEtE,IAAI,EACJ,QAAQ,IAAI,CACX,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;oBACb,CAAC,CAAC,eAAe,EAAE,CAAA;oBACnB,QAAQ,EAAE,CAAA;gBACZ,CAAC,EACD,SAAS,EAAC,kBAAkB,uBAGrB,CACV,IACI,CACR,CAAA;AACH,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Format a value as USD currency.
3
+ * Example: formatUsd(1234.56) → "$1,234.56"
4
+ */
5
+ export declare function formatUsd(value: string | number | null): string;
6
+ /**
7
+ * Format a value in any currency.
8
+ * Example: formatCurrencyValue("1234.56", "EUR") → "€1,234.56"
9
+ */
10
+ export declare function formatCurrencyValue(value: string | number | null, currency: string): string;
11
+ //# sourceMappingURL=currency-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"currency-utils.d.ts","sourceRoot":"","sources":["../../src/utils/currency-utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,CAQ/D;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAQ3F"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Format a value as USD currency.
3
+ * Example: formatUsd(1234.56) → "$1,234.56"
4
+ */
5
+ export function formatUsd(value) {
6
+ if (value === null || value === undefined)
7
+ return '-';
8
+ const num = typeof value === 'string' ? Number.parseFloat(value) : value;
9
+ if (Number.isNaN(num))
10
+ return '-';
11
+ return new Intl.NumberFormat('en-US', {
12
+ style: 'currency',
13
+ currency: 'USD',
14
+ }).format(num);
15
+ }
16
+ /**
17
+ * Format a value in any currency.
18
+ * Example: formatCurrencyValue("1234.56", "EUR") → "€1,234.56"
19
+ */
20
+ export function formatCurrencyValue(value, currency) {
21
+ if (value === null || value === undefined)
22
+ return '-';
23
+ const num = typeof value === 'string' ? Number.parseFloat(value) : value;
24
+ if (Number.isNaN(num))
25
+ return '-';
26
+ return new Intl.NumberFormat('en-US', {
27
+ style: 'currency',
28
+ currency: currency || 'USD',
29
+ }).format(num);
30
+ }
31
+ //# sourceMappingURL=currency-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"currency-utils.js","sourceRoot":"","sources":["../../src/utils/currency-utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,KAA6B;IACrD,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,GAAG,CAAA;IACrD,MAAM,GAAG,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;IACxE,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAA;IACjC,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;QACpC,KAAK,EAAE,UAAU;QACjB,QAAQ,EAAE,KAAK;KAChB,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAA6B,EAAE,QAAgB;IACjF,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,GAAG,CAAA;IACrD,MAAM,GAAG,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;IACxE,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAA;IACjC,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;QACpC,KAAK,EAAE,UAAU;QACjB,QAAQ,EAAE,QAAQ,IAAI,KAAK;KAC5B,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;AAChB,CAAC"}
@@ -2,4 +2,5 @@ export { formatDateShort, formatDateLong, formatDateTime, formatTime, formatRela
2
2
  export { fuzzySearch, getHighlightSegments, type SearchableItem, type SearchResult, type HighlightSegment, } from './fuzzy-search.js';
3
3
  export { readImageAsDataUrl } from './image-upload.js';
4
4
  export { isLightHexColor } from './color-utils.js';
5
+ export { formatUsd, formatCurrencyValue } from './currency-utils.js';
5
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,cAAc,EACd,cAAc,EACd,UAAU,EACV,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,mBAAmB,EACnB,sBAAsB,EACtB,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACrB,cAAc,EACd,OAAO,EACP,iBAAiB,GAClB,MAAM,iBAAiB,CAAA;AAExB,OAAO,EACL,WAAW,EACX,oBAAoB,EACpB,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,gBAAgB,GACtB,MAAM,mBAAmB,CAAA;AAE1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAEtD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,cAAc,EACd,cAAc,EACd,UAAU,EACV,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,mBAAmB,EACnB,sBAAsB,EACtB,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACrB,cAAc,EACd,OAAO,EACP,iBAAiB,GAClB,MAAM,iBAAiB,CAAA;AAExB,OAAO,EACL,WAAW,EACX,oBAAoB,EACpB,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,gBAAgB,GACtB,MAAM,mBAAmB,CAAA;AAE1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAEtD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAElD,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA"}
@@ -2,4 +2,5 @@ export { formatDateShort, formatDateLong, formatDateTime, formatTime, formatRela
2
2
  export { fuzzySearch, getHighlightSegments, } from './fuzzy-search.js';
3
3
  export { readImageAsDataUrl } from './image-upload.js';
4
4
  export { isLightHexColor } from './color-utils.js';
5
+ export { formatUsd, formatCurrencyValue } from './currency-utils.js';
5
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,cAAc,EACd,cAAc,EACd,UAAU,EACV,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,mBAAmB,EACnB,sBAAsB,EACtB,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACrB,cAAc,EACd,OAAO,EACP,iBAAiB,GAClB,MAAM,iBAAiB,CAAA;AAExB,OAAO,EACL,WAAW,EACX,oBAAoB,GAIrB,MAAM,mBAAmB,CAAA;AAE1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAEtD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,cAAc,EACd,cAAc,EACd,UAAU,EACV,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,mBAAmB,EACnB,sBAAsB,EACtB,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACrB,cAAc,EACd,OAAO,EACP,iBAAiB,GAClB,MAAM,iBAAiB,CAAA;AAExB,OAAO,EACL,WAAW,EACX,oBAAoB,GAIrB,MAAM,mBAAmB,CAAA;AAE1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAEtD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAElD,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA"}
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "type": "git",
5
5
  "url": "https://github.com/blaze-it/ui"
6
6
  },
7
- "version": "0.10.0",
7
+ "version": "0.12.0",
8
8
  "private": false,
9
9
  "description": "Shared React + DaisyUI component library for Blaze projects",
10
10
  "type": "module",
@@ -43,7 +43,8 @@
43
43
  "react-dom": ">=18.0.0",
44
44
  "@tanstack/react-table": ">=8.0.0",
45
45
  "react-hook-form": ">=7.0.0",
46
- "date-fns": ">=3.0.0"
46
+ "date-fns": ">=3.0.0",
47
+ "apexcharts": ">=3.0.0"
47
48
  },
48
49
  "peerDependenciesMeta": {
49
50
  "@tanstack/react-table": {
@@ -54,9 +55,13 @@
54
55
  },
55
56
  "date-fns": {
56
57
  "optional": true
58
+ },
59
+ "apexcharts": {
60
+ "optional": true
57
61
  }
58
62
  },
59
63
  "devDependencies": {
64
+ "apexcharts": "^4.0.0",
60
65
  "@tanstack/react-table": "^8.21.0",
61
66
  "@types/react": "^19.0.0",
62
67
  "date-fns": "^4.0.0",