@blaze-dev/ui 0.11.0 → 0.13.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 (85) hide show
  1. package/dist/ambient-background.d.ts +8 -0
  2. package/dist/ambient-background.d.ts.map +1 -0
  3. package/dist/ambient-background.js +8 -0
  4. package/dist/ambient-background.js.map +1 -0
  5. package/dist/connection-badge.d.ts +7 -0
  6. package/dist/connection-badge.d.ts.map +1 -0
  7. package/dist/connection-badge.js +25 -0
  8. package/dist/connection-badge.js.map +1 -0
  9. package/dist/error-page.d.ts +9 -0
  10. package/dist/error-page.d.ts.map +1 -0
  11. package/dist/error-page.js +9 -0
  12. package/dist/error-page.js.map +1 -0
  13. package/dist/hooks/index.d.ts +4 -0
  14. package/dist/hooks/index.d.ts.map +1 -1
  15. package/dist/hooks/index.js +4 -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-command-palette-shortcut.d.ts +5 -0
  22. package/dist/hooks/use-command-palette-shortcut.d.ts.map +1 -0
  23. package/dist/hooks/use-command-palette-shortcut.js +17 -0
  24. package/dist/hooks/use-command-palette-shortcut.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/hooks/use-save-confirmation.d.ts +10 -0
  30. package/dist/hooks/use-save-confirmation.d.ts.map +1 -0
  31. package/dist/hooks/use-save-confirmation.js +15 -0
  32. package/dist/hooks/use-save-confirmation.js.map +1 -0
  33. package/dist/index.d.ts +15 -0
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +18 -0
  36. package/dist/index.js.map +1 -1
  37. package/dist/integration-card.d.ts +15 -0
  38. package/dist/integration-card.d.ts.map +1 -0
  39. package/dist/integration-card.js +11 -0
  40. package/dist/integration-card.js.map +1 -0
  41. package/dist/label-badge.d.ts +8 -0
  42. package/dist/label-badge.d.ts.map +1 -0
  43. package/dist/label-badge.js +10 -0
  44. package/dist/label-badge.js.map +1 -0
  45. package/dist/metric-card.d.ts +13 -0
  46. package/dist/metric-card.d.ts.map +1 -0
  47. package/dist/metric-card.js +15 -0
  48. package/dist/metric-card.js.map +1 -0
  49. package/dist/not-found-page.d.ts +8 -0
  50. package/dist/not-found-page.d.ts.map +1 -0
  51. package/dist/not-found-page.js +9 -0
  52. package/dist/not-found-page.js.map +1 -0
  53. package/dist/resource-bar.d.ts +11 -0
  54. package/dist/resource-bar.d.ts.map +1 -0
  55. package/dist/resource-bar.js +10 -0
  56. package/dist/resource-bar.js.map +1 -0
  57. package/dist/segmented-control.d.ts +15 -0
  58. package/dist/segmented-control.d.ts.map +1 -0
  59. package/dist/segmented-control.js +10 -0
  60. package/dist/segmented-control.js.map +1 -0
  61. package/dist/user-avatar.d.ts +17 -0
  62. package/dist/user-avatar.d.ts.map +1 -0
  63. package/dist/user-avatar.js +16 -0
  64. package/dist/user-avatar.js.map +1 -0
  65. package/dist/utils/cached-getter.d.ts +14 -0
  66. package/dist/utils/cached-getter.d.ts.map +1 -0
  67. package/dist/utils/cached-getter.js +36 -0
  68. package/dist/utils/cached-getter.js.map +1 -0
  69. package/dist/utils/chunk-error.d.ts +6 -0
  70. package/dist/utils/chunk-error.d.ts.map +1 -0
  71. package/dist/utils/chunk-error.js +12 -0
  72. package/dist/utils/chunk-error.js.map +1 -0
  73. package/dist/utils/currency-utils.d.ts +11 -0
  74. package/dist/utils/currency-utils.d.ts.map +1 -0
  75. package/dist/utils/currency-utils.js +31 -0
  76. package/dist/utils/currency-utils.js.map +1 -0
  77. package/dist/utils/index.d.ts +4 -0
  78. package/dist/utils/index.d.ts.map +1 -1
  79. package/dist/utils/index.js +4 -0
  80. package/dist/utils/index.js.map +1 -1
  81. package/dist/utils/recent-history.d.ts +15 -0
  82. package/dist/utils/recent-history.d.ts.map +1 -0
  83. package/dist/utils/recent-history.js +23 -0
  84. package/dist/utils/recent-history.js.map +1 -0
  85. package/package.json +7 -2
@@ -0,0 +1,8 @@
1
+ export interface AmbientBackgroundProps {
2
+ readonly className?: string;
3
+ }
4
+ /**
5
+ * Decorative ambient blur blobs for auth/public pages.
6
+ */
7
+ export declare function AmbientBackground({ className }: AmbientBackgroundProps): import("react/jsx-runtime").JSX.Element;
8
+ //# sourceMappingURL=ambient-background.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ambient-background.d.ts","sourceRoot":"","sources":["../src/ambient-background.tsx"],"names":[],"mappings":"AAAA,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAC5B;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,SAAS,EAAE,EAAE,sBAAsB,2CAOtE"}
@@ -0,0 +1,8 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * Decorative ambient blur blobs for auth/public pages.
4
+ */
5
+ export function AmbientBackground({ className }) {
6
+ return (_jsxs("div", { className: className, "aria-hidden": true, children: [_jsx("div", { className: 'absolute -top-[30%] -left-[15%] w-[60%] h-[60%] rounded-full opacity-[0.04] bg-primary blur-[150px]' }), _jsx("div", { className: 'absolute -bottom-[20%] -right-[15%] w-[50%] h-[50%] rounded-full opacity-[0.04] bg-secondary blur-[150px]' })] }));
7
+ }
8
+ //# sourceMappingURL=ambient-background.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ambient-background.js","sourceRoot":"","sources":["../src/ambient-background.tsx"],"names":[],"mappings":";AAIA;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,EAAE,SAAS,EAA0B;IACrE,OAAO,CACL,eAAK,SAAS,EAAE,SAAS,kCACvB,cAAK,SAAS,EAAC,qGAAqG,GAAG,EACvH,cAAK,SAAS,EAAC,2GAA2G,GAAG,IACzH,CACP,CAAA;AACH,CAAC"}
@@ -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,9 @@
1
+ export interface ErrorPageProps {
2
+ readonly error: Error;
3
+ readonly homeUrl?: string;
4
+ }
5
+ /**
6
+ * Full-page error display with ambient background.
7
+ */
8
+ export declare function ErrorPage({ error, homeUrl }: ErrorPageProps): import("react/jsx-runtime").JSX.Element;
9
+ //# sourceMappingURL=error-page.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-page.d.ts","sourceRoot":"","sources":["../src/error-page.tsx"],"names":[],"mappings":"AAEA,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;IACrB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,EAAE,KAAK,EAAE,OAAa,EAAE,EAAE,cAAc,2CAcjE"}
@@ -0,0 +1,9 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { AmbientBackground } from './ambient-background.js';
3
+ /**
4
+ * Full-page error display with ambient background.
5
+ */
6
+ export function ErrorPage({ error, homeUrl = '/' }) {
7
+ return (_jsxs("div", { className: 'min-h-screen flex items-center justify-center bg-base-100 relative overflow-hidden', children: [_jsx(AmbientBackground, {}), _jsxs("div", { className: 'text-center relative z-10 max-w-md px-6', children: [_jsx("h1", { className: 'text-7xl font-bold text-base-content/20 mb-4 tracking-tight', children: "Error" }), _jsx("p", { className: 'text-lg text-base-content/55 mb-2', children: "Something went wrong" }), _jsx("p", { className: 'text-sm text-base-content/35 mb-6 break-words', children: error.message }), _jsx("a", { href: homeUrl, className: 'btn btn-primary', children: "Go Home" })] })] }));
8
+ }
9
+ //# sourceMappingURL=error-page.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-page.js","sourceRoot":"","sources":["../src/error-page.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAO3D;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,EAAE,KAAK,EAAE,OAAO,GAAG,GAAG,EAAkB;IAChE,OAAO,CACL,eAAK,SAAS,EAAC,oFAAoF,aACjG,KAAC,iBAAiB,KAAG,EACrB,eAAK,SAAS,EAAC,yCAAyC,aACtD,aAAI,SAAS,EAAC,6DAA6D,sBAAW,EACtF,YAAG,SAAS,EAAC,mCAAmC,qCAAyB,EACzE,YAAG,SAAS,EAAC,+CAA+C,YAAE,KAAK,CAAC,OAAO,GAAK,EAChF,YAAG,IAAI,EAAE,OAAO,EAAE,SAAS,EAAC,iBAAiB,wBAEzC,IACA,IACF,CACP,CAAA;AACH,CAAC"}
@@ -9,4 +9,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
11
  export { useDatePeriodFilter, type DatePeriodFilter, type DefaultPeriod } from './use-date-period-filter.js';
12
+ export { useApexChart } from './use-apex-chart.js';
13
+ export { useCommandPaletteShortcut } from './use-command-palette-shortcut.js';
14
+ export { useSaveConfirmation } from './use-save-confirmation.js';
15
+ export { useIntegrationStatus, checkConnectedField, checkIsConnectedField, type IntegrationStatus, type UseIntegrationStatusOptions, type IntegrationStatusResult, } from './use-integration-status.js';
12
16
  //# 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;AAC5D,OAAO,EAAE,mBAAmB,EAAE,KAAK,gBAAgB,EAAE,KAAK,aAAa,EAAE,MAAM,6BAA6B,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,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAA;AAC7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAChE,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,KAAK,iBAAiB,EACtB,KAAK,2BAA2B,EAChC,KAAK,uBAAuB,GAC7B,MAAM,6BAA6B,CAAA"}
@@ -9,4 +9,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
11
  export { useDatePeriodFilter } from './use-date-period-filter.js';
12
+ export { useApexChart } from './use-apex-chart.js';
13
+ export { useCommandPaletteShortcut } from './use-command-palette-shortcut.js';
14
+ export { useSaveConfirmation } from './use-save-confirmation.js';
15
+ export { useIntegrationStatus, checkConnectedField, checkIsConnectedField, } from './use-integration-status.js';
12
16
  //# 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;AAC5D,OAAO,EAAE,mBAAmB,EAA6C,MAAM,6BAA6B,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,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAA;AAC7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAChE,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,5 @@
1
+ /**
2
+ * Listen for Cmd+K / Ctrl+K and call the provided callback.
3
+ */
4
+ export declare function useCommandPaletteShortcut(onOpen: () => void): void;
5
+ //# sourceMappingURL=use-command-palette-shortcut.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-command-palette-shortcut.d.ts","sourceRoot":"","sources":["../../src/hooks/use-command-palette-shortcut.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,IAAI,QAW3D"}
@@ -0,0 +1,17 @@
1
+ import { useEffect } from 'react';
2
+ /**
3
+ * Listen for Cmd+K / Ctrl+K and call the provided callback.
4
+ */
5
+ export function useCommandPaletteShortcut(onOpen) {
6
+ useEffect(() => {
7
+ function handleKeyDown(e) {
8
+ if ((e.metaKey || e.ctrlKey) && e.key === 'k') {
9
+ e.preventDefault();
10
+ onOpen();
11
+ }
12
+ }
13
+ window.addEventListener('keydown', handleKeyDown);
14
+ return () => window.removeEventListener('keydown', handleKeyDown);
15
+ }, [onOpen]);
16
+ }
17
+ //# sourceMappingURL=use-command-palette-shortcut.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-command-palette-shortcut.js","sourceRoot":"","sources":["../../src/hooks/use-command-palette-shortcut.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEjC;;GAEG;AACH,MAAM,UAAU,yBAAyB,CAAC,MAAkB;IAC1D,SAAS,CAAC,GAAG,EAAE;QACb,SAAS,aAAa,CAAC,CAAgB;YACrC,IAAI,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;gBAC9C,CAAC,CAAC,cAAc,EAAE,CAAA;gBAClB,MAAM,EAAE,CAAA;YACV,CAAC;QACH,CAAC;QACD,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAA;QACjD,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAA;IACnE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAA;AACd,CAAC"}
@@ -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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Manage a transient "saved" indicator that auto-dismisses after a duration.
3
+ *
4
+ * @param durationMs - How long to show the "saved" state (default 2000ms)
5
+ */
6
+ export declare function useSaveConfirmation(durationMs?: number): {
7
+ readonly saved: boolean;
8
+ readonly markSaved: () => void;
9
+ };
10
+ //# sourceMappingURL=use-save-confirmation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-save-confirmation.d.ts","sourceRoot":"","sources":["../../src/hooks/use-save-confirmation.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,SAAO;;;EASpD"}
@@ -0,0 +1,15 @@
1
+ import { useState, useCallback } from 'react';
2
+ /**
3
+ * Manage a transient "saved" indicator that auto-dismisses after a duration.
4
+ *
5
+ * @param durationMs - How long to show the "saved" state (default 2000ms)
6
+ */
7
+ export function useSaveConfirmation(durationMs = 2000) {
8
+ const [saved, setSaved] = useState(false);
9
+ const markSaved = useCallback(() => {
10
+ setSaved(true);
11
+ setTimeout(() => setSaved(false), durationMs);
12
+ }, [durationMs]);
13
+ return { saved, markSaved };
14
+ }
15
+ //# sourceMappingURL=use-save-confirmation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-save-confirmation.js","sourceRoot":"","sources":["../../src/hooks/use-save-confirmation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AAE7C;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,UAAU,GAAG,IAAI;IACnD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAEzC,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE;QACjC,QAAQ,CAAC,IAAI,CAAC,CAAA;QACd,UAAU,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,CAAA;IAC/C,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAA;IAEhB,OAAO,EAAE,KAAK,EAAE,SAAS,EAAW,CAAA;AACtC,CAAC"}
package/dist/index.d.ts CHANGED
@@ -23,6 +23,16 @@ export { AdvancedFiltersSection } from './data/advanced-filters-section.js';
23
23
  export { ActionButton } from './action-button.js';
24
24
  export { CopyButton } from './copy-button.js';
25
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';
29
+ export { UserAvatar, type UserAvatarProps } from './user-avatar.js';
30
+ export { ResourceBar, type ResourceBarProps } from './resource-bar.js';
31
+ export { MetricCard, type MetricCardProps } from './metric-card.js';
32
+ export { SegmentedControl, type SegmentedControlProps, type SegmentedControlOption } from './segmented-control.js';
33
+ export { AmbientBackground } from './ambient-background.js';
34
+ export { NotFoundPage } from './not-found-page.js';
35
+ export { ErrorPage } from './error-page.js';
26
36
  export { useCopyToClipboard } from './hooks/use-copy-to-clipboard.js';
27
37
  export { useMutationToast, type MutationToastOptions } from './hooks/use-mutation-toast.js';
28
38
  export { useModalState, useItemModal } from './hooks/use-modal-state.js';
@@ -34,6 +44,11 @@ export { useClickOutside } from './hooks/use-click-outside.js';
34
44
  export { useConfirm, type ConfirmOptions, type ConfirmModalState } from './hooks/use-confirm.js';
35
45
  export { useInfiniteScroll } from './hooks/use-infinite-scroll.js';
36
46
  export { useDatePeriodFilter, type DatePeriodFilter, type DefaultPeriod } from './hooks/use-date-period-filter.js';
47
+ export { useApexChart } from './hooks/use-apex-chart.js';
48
+ export { useCommandPaletteShortcut } from './hooks/use-command-palette-shortcut.js';
49
+ export { useSaveConfirmation } from './hooks/use-save-confirmation.js';
50
+ export { useIntegrationStatus, checkConnectedField, checkIsConnectedField, type IntegrationStatus, type UseIntegrationStatusOptions, type IntegrationStatusResult, } from './hooks/use-integration-status.js';
51
+ export { formatUsd, formatCurrencyValue } from './utils/currency-utils.js';
37
52
  export { FormField } from './forms/form-field.js';
38
53
  export { FormSelect } from './forms/form-select.js';
39
54
  export { FormTextarea } from './forms/form-textarea.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -27,6 +27,18 @@ export { AdvancedFiltersSection } from './data/advanced-filters-section.js';
27
27
  export { ActionButton } from './action-button.js';
28
28
  export { CopyButton } from './copy-button.js';
29
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';
34
+ // Presentation
35
+ export { UserAvatar } from './user-avatar.js';
36
+ export { ResourceBar } from './resource-bar.js';
37
+ export { MetricCard } from './metric-card.js';
38
+ export { SegmentedControl } from './segmented-control.js';
39
+ export { AmbientBackground } from './ambient-background.js';
40
+ export { NotFoundPage } from './not-found-page.js';
41
+ export { ErrorPage } from './error-page.js';
30
42
  // Hooks
31
43
  export { useCopyToClipboard } from './hooks/use-copy-to-clipboard.js';
32
44
  export { useMutationToast } from './hooks/use-mutation-toast.js';
@@ -39,6 +51,12 @@ export { useClickOutside } from './hooks/use-click-outside.js';
39
51
  export { useConfirm } from './hooks/use-confirm.js';
40
52
  export { useInfiniteScroll } from './hooks/use-infinite-scroll.js';
41
53
  export { useDatePeriodFilter } from './hooks/use-date-period-filter.js';
54
+ export { useApexChart } from './hooks/use-apex-chart.js';
55
+ export { useCommandPaletteShortcut } from './hooks/use-command-palette-shortcut.js';
56
+ export { useSaveConfirmation } from './hooks/use-save-confirmation.js';
57
+ export { useIntegrationStatus, checkConnectedField, checkIsConnectedField, } from './hooks/use-integration-status.js';
58
+ // Utils (re-exported for convenience)
59
+ export { formatUsd, formatCurrencyValue } from './utils/currency-utils.js';
42
60
  // Forms
43
61
  export { FormField } from './forms/form-field.js';
44
62
  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;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAA;AAE3E,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;AAClE,OAAO,EAAE,mBAAmB,EAA6C,MAAM,mCAAmC,CAAA;AAElH,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":"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;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAA;AAE3E,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,kBAAkB;AAClB,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,eAAe,EAAyB,MAAM,uBAAuB,CAAA;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAEvD,eAAe;AACf,OAAO,EAAE,UAAU,EAAwB,MAAM,kBAAkB,CAAA;AACnE,OAAO,EAAE,WAAW,EAAyB,MAAM,mBAAmB,CAAA;AACtE,OAAO,EAAE,UAAU,EAAwB,MAAM,kBAAkB,CAAA;AACnE,OAAO,EAAE,gBAAgB,EAA2D,MAAM,wBAAwB,CAAA;AAClH,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAE3C,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;AAClE,OAAO,EAAE,mBAAmB,EAA6C,MAAM,mCAAmC,CAAA;AAClH,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,yBAAyB,EAAE,MAAM,yCAAyC,CAAA;AACnF,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AACtE,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,GAItB,MAAM,mCAAmC,CAAA;AAE1C,sCAAsC;AACtC,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AAE1E,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"}
@@ -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,13 @@
1
+ export interface MetricCardProps {
2
+ readonly label: string;
3
+ readonly value: string;
4
+ readonly unit?: string;
5
+ readonly percent?: number;
6
+ readonly footer?: string;
7
+ readonly className?: string;
8
+ }
9
+ /**
10
+ * Dashboard metric card with optional progress bar and semantic color.
11
+ */
12
+ export declare function MetricCard({ label, value, unit, percent, footer, className }: MetricCardProps): import("react/jsx-runtime").JSX.Element;
13
+ //# sourceMappingURL=metric-card.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metric-card.d.ts","sourceRoot":"","sources":["../src/metric-card.tsx"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAC5B;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,eAAe,2CA6B7F"}
@@ -0,0 +1,15 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * Dashboard metric card with optional progress bar and semantic color.
4
+ */
5
+ export function MetricCard({ label, value, unit, percent, footer, className }) {
6
+ const progressColor = percent !== undefined
7
+ ? percent > 90
8
+ ? 'progress-error'
9
+ : percent > 70
10
+ ? 'progress-warning'
11
+ : 'progress-success'
12
+ : '';
13
+ return (_jsx("div", { className: `card bg-base-200 shadow-sm ${className ?? ''}`, children: _jsxs("div", { className: 'card-body p-4', children: [_jsx("p", { className: 'text-xs text-base-content/50 uppercase tracking-wider', children: label }), _jsxs("p", { className: 'text-2xl font-bold', children: [value, unit && _jsx("span", { className: 'text-sm font-normal text-base-content/50 ml-1', children: unit })] }), percent !== undefined && (_jsx("progress", { className: `progress ${progressColor} h-1.5`, value: Math.min(percent, 100), max: 100 })), footer && _jsx("p", { className: 'text-xs text-base-content/50', children: footer })] }) }));
14
+ }
15
+ //# sourceMappingURL=metric-card.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metric-card.js","sourceRoot":"","sources":["../src/metric-card.tsx"],"names":[],"mappings":";AASA;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAmB;IAC5F,MAAM,aAAa,GACjB,OAAO,KAAK,SAAS;QACnB,CAAC,CAAC,OAAO,GAAG,EAAE;YACZ,CAAC,CAAC,gBAAgB;YAClB,CAAC,CAAC,OAAO,GAAG,EAAE;gBACZ,CAAC,CAAC,kBAAkB;gBACpB,CAAC,CAAC,kBAAkB;QACxB,CAAC,CAAC,EAAE,CAAA;IAER,OAAO,CACL,cAAK,SAAS,EAAE,8BAA8B,SAAS,IAAI,EAAE,EAAE,YAC7D,eAAK,SAAS,EAAC,eAAe,aAC5B,YAAG,SAAS,EAAC,uDAAuD,YAAE,KAAK,GAAK,EAChF,aAAG,SAAS,EAAC,oBAAoB,aAC9B,KAAK,EACL,IAAI,IAAI,eAAM,SAAS,EAAC,+CAA+C,YAAE,IAAI,GAAQ,IACpF,EACH,OAAO,KAAK,SAAS,IAAI,CACxB,mBACE,SAAS,EAAE,YAAY,aAAa,QAAQ,EAC5C,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,EAC7B,GAAG,EAAE,GAAG,GACR,CACH,EACA,MAAM,IAAI,YAAG,SAAS,EAAC,8BAA8B,YAAE,MAAM,GAAK,IAC/D,GACF,CACP,CAAA;AACH,CAAC"}
@@ -0,0 +1,8 @@
1
+ export interface NotFoundPageProps {
2
+ readonly homeUrl?: string;
3
+ }
4
+ /**
5
+ * Full-page 404 Not Found with ambient background.
6
+ */
7
+ export declare function NotFoundPage({ homeUrl }: NotFoundPageProps): import("react/jsx-runtime").JSX.Element;
8
+ //# sourceMappingURL=not-found-page.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"not-found-page.d.ts","sourceRoot":"","sources":["../src/not-found-page.tsx"],"names":[],"mappings":"AAEA,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,EAAE,OAAa,EAAE,EAAE,iBAAiB,2CAahE"}
@@ -0,0 +1,9 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { AmbientBackground } from './ambient-background.js';
3
+ /**
4
+ * Full-page 404 Not Found with ambient background.
5
+ */
6
+ export function NotFoundPage({ homeUrl = '/' }) {
7
+ return (_jsxs("div", { className: 'min-h-screen flex items-center justify-center bg-base-100 relative overflow-hidden', children: [_jsx(AmbientBackground, {}), _jsxs("div", { className: 'text-center relative z-10', children: [_jsx("h1", { className: 'text-7xl font-bold text-base-content/20 mb-4 tracking-tight', children: "404" }), _jsx("p", { className: 'text-lg text-base-content/55 mb-6', children: "Page not found" }), _jsx("a", { href: homeUrl, className: 'btn btn-primary', children: "Go Home" })] })] }));
8
+ }
9
+ //# sourceMappingURL=not-found-page.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"not-found-page.js","sourceRoot":"","sources":["../src/not-found-page.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAM3D;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,EAAE,OAAO,GAAG,GAAG,EAAqB;IAC/D,OAAO,CACL,eAAK,SAAS,EAAC,oFAAoF,aACjG,KAAC,iBAAiB,KAAG,EACrB,eAAK,SAAS,EAAC,2BAA2B,aACxC,aAAI,SAAS,EAAC,6DAA6D,oBAAS,EACpF,YAAG,SAAS,EAAC,mCAAmC,+BAAmB,EACnE,YAAG,IAAI,EAAE,OAAO,EAAE,SAAS,EAAC,iBAAiB,wBAEzC,IACA,IACF,CACP,CAAA;AACH,CAAC"}
@@ -0,0 +1,11 @@
1
+ export interface ResourceBarProps {
2
+ readonly label: string;
3
+ readonly percent: number;
4
+ readonly className?: string;
5
+ }
6
+ /**
7
+ * Horizontal progress bar with semantic color thresholds.
8
+ * Green < 70%, yellow 70-90%, red > 90%.
9
+ */
10
+ export declare function ResourceBar({ label, percent, className }: ResourceBarProps): import("react/jsx-runtime").JSX.Element;
11
+ //# sourceMappingURL=resource-bar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource-bar.d.ts","sourceRoot":"","sources":["../src/resource-bar.tsx"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAC5B;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,gBAAgB,2CAoB1E"}
@@ -0,0 +1,10 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * Horizontal progress bar with semantic color thresholds.
4
+ * Green < 70%, yellow 70-90%, red > 90%.
5
+ */
6
+ export function ResourceBar({ label, percent, className }) {
7
+ const barColor = percent > 90 ? 'bg-error' : percent > 70 ? 'bg-warning' : 'bg-success';
8
+ return (_jsxs("div", { className: `flex items-center gap-3 ${className ?? ''}`, children: [_jsx("span", { className: 'text-xs text-base-content/50 w-10 shrink-0 uppercase tracking-wider', children: label }), _jsx("div", { className: 'flex-1 bg-base-300 rounded-full h-2 overflow-hidden', children: _jsx("div", { className: `h-full rounded-full transition-all duration-500 ${barColor}`, style: { width: `${Math.min(percent, 100)}%` } }) }), _jsxs("span", { className: 'text-xs font-mono text-base-content/70 w-10 text-right', children: [percent.toFixed(0), "%"] })] }));
9
+ }
10
+ //# sourceMappingURL=resource-bar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource-bar.js","sourceRoot":"","sources":["../src/resource-bar.tsx"],"names":[],"mappings":";AAMA;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAoB;IACzE,MAAM,QAAQ,GACZ,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAA;IAExE,OAAO,CACL,eAAK,SAAS,EAAE,2BAA2B,SAAS,IAAI,EAAE,EAAE,aAC1D,eAAM,SAAS,EAAC,qEAAqE,YAClF,KAAK,GACD,EACP,cAAK,SAAS,EAAC,qDAAqD,YAClE,cACE,SAAS,EAAE,mDAAmD,QAAQ,EAAE,EACxE,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,GAC9C,GACE,EACN,gBAAM,SAAS,EAAC,wDAAwD,aACrE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,SACd,IACH,CACP,CAAA;AACH,CAAC"}
@@ -0,0 +1,15 @@
1
+ export interface SegmentedControlOption<T extends string = string> {
2
+ readonly value: T;
3
+ readonly label: string;
4
+ }
5
+ export interface SegmentedControlProps<T extends string = string> {
6
+ readonly options: ReadonlyArray<SegmentedControlOption<T>>;
7
+ readonly value: T;
8
+ readonly onChange: (value: T) => void;
9
+ readonly className?: string;
10
+ }
11
+ /**
12
+ * Pill-style segmented control / toggle group.
13
+ */
14
+ export declare function SegmentedControl<T extends string = string>({ options, value, onChange, className, }: SegmentedControlProps<T>): import("react/jsx-runtime").JSX.Element;
15
+ //# sourceMappingURL=segmented-control.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"segmented-control.d.ts","sourceRoot":"","sources":["../src/segmented-control.tsx"],"names":[],"mappings":"AAAA,MAAM,WAAW,sBAAsB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM;IAC/D,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAA;IACjB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,qBAAqB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM;IAC9D,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAA;IAC1D,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAA;IACjB,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAA;IACrC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAC5B;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,EAC1D,OAAO,EACP,KAAK,EACL,QAAQ,EACR,SAAS,GACV,EAAE,qBAAqB,CAAC,CAAC,CAAC,2CAmB1B"}
@@ -0,0 +1,10 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ /**
3
+ * Pill-style segmented control / toggle group.
4
+ */
5
+ export function SegmentedControl({ options, value, onChange, className, }) {
6
+ return (_jsx("div", { className: `flex gap-1 p-0.5 rounded-[10px] bg-base-content/[0.04] w-fit ${className ?? ''}`, children: options.map((option) => (_jsx("button", { type: 'button', className: `px-4 py-1.5 text-xs font-medium rounded-[8px] transition-all ${value === option.value
7
+ ? 'bg-base-content/[0.08] text-base-content shadow-sm'
8
+ : 'text-base-content/55 hover:text-base-content'}`, onClick: () => onChange(option.value), children: option.label }, option.value))) }));
9
+ }
10
+ //# sourceMappingURL=segmented-control.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"segmented-control.js","sourceRoot":"","sources":["../src/segmented-control.tsx"],"names":[],"mappings":";AAYA;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAA4B,EAC1D,OAAO,EACP,KAAK,EACL,QAAQ,EACR,SAAS,GACgB;IACzB,OAAO,CACL,cAAK,SAAS,EAAE,gEAAgE,SAAS,IAAI,EAAE,EAAE,YAC9F,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CACvB,iBAEE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,gEACT,KAAK,KAAK,MAAM,CAAC,KAAK;gBACpB,CAAC,CAAC,oDAAoD;gBACtD,CAAC,CAAC,8CACN,EAAE,EACF,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,YAEpC,MAAM,CAAC,KAAK,IATR,MAAM,CAAC,KAAK,CAUV,CACV,CAAC,GACE,CACP,CAAA;AACH,CAAC"}
@@ -0,0 +1,17 @@
1
+ interface UserAvatarUser {
2
+ readonly name?: string | null;
3
+ readonly email?: string | null;
4
+ readonly image?: string | null;
5
+ }
6
+ type AvatarSize = 'xs' | 'sm' | 'md' | 'lg';
7
+ export interface UserAvatarProps {
8
+ readonly user: UserAvatarUser;
9
+ readonly size?: AvatarSize;
10
+ readonly className?: string;
11
+ }
12
+ /**
13
+ * User avatar with image or initials fallback.
14
+ */
15
+ export declare function UserAvatar({ user, size, className }: UserAvatarProps): import("react/jsx-runtime").JSX.Element;
16
+ export {};
17
+ //# sourceMappingURL=user-avatar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-avatar.d.ts","sourceRoot":"","sources":["../src/user-avatar.tsx"],"names":[],"mappings":"AAAA,UAAU,cAAc;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC/B;AAED,KAAK,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;AAS3C,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAA;IAC7B,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,CAAA;IAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAC5B;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,EAAE,IAAI,EAAE,IAAW,EAAE,SAAS,EAAE,EAAE,eAAe,2CAmB3E"}
@@ -0,0 +1,16 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ const sizeClasses = {
3
+ xs: { container: 'w-6', text: 'text-[10px]' },
4
+ sm: { container: 'w-8', text: 'text-xs' },
5
+ md: { container: 'w-10', text: 'text-sm' },
6
+ lg: { container: 'w-16', text: 'text-2xl' },
7
+ };
8
+ /**
9
+ * User avatar with image or initials fallback.
10
+ */
11
+ export function UserAvatar({ user, size = 'sm', className }) {
12
+ const { container, text } = sizeClasses[size];
13
+ const initial = (user.name ?? user.email)?.[0]?.toUpperCase() ?? 'U';
14
+ return (_jsx("div", { className: `avatar placeholder ${className ?? ''}`, children: user.image ? (_jsx("div", { className: `rounded-full ${container}`, children: _jsx("img", { src: user.image, alt: user.name ?? 'User' }) })) : (_jsx("div", { className: `bg-base-content/[0.06] text-base-content/55 rounded-full ${container} flex items-center justify-center`, children: _jsx("span", { className: `${text} font-semibold`, children: initial }) })) }));
15
+ }
16
+ //# sourceMappingURL=user-avatar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-avatar.js","sourceRoot":"","sources":["../src/user-avatar.tsx"],"names":[],"mappings":";AAQA,MAAM,WAAW,GAA4D;IAC3E,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE;IAC7C,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE;IACzC,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE;IAC1C,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE;CAC5C,CAAA;AAQD;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,EAAE,SAAS,EAAmB;IAC1E,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,WAAW,CAAC,IAAI,CAAC,CAAA;IAC7C,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,GAAG,CAAA;IAEpE,OAAO,CACL,cAAK,SAAS,EAAE,sBAAsB,SAAS,IAAI,EAAE,EAAE,YACpD,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CACZ,cAAK,SAAS,EAAE,gBAAgB,SAAS,EAAE,YACzC,cAAK,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,IAAI,MAAM,GAAI,GAC9C,CACP,CAAC,CAAC,CAAC,CACF,cACE,SAAS,EAAE,4DAA4D,SAAS,mCAAmC,YAEnH,eAAM,SAAS,EAAE,GAAG,IAAI,gBAAgB,YAAG,OAAO,GAAQ,GACtD,CACP,GACG,CACP,CAAA;AACH,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Create a cached async getter with TTL and inflight request deduplication.
3
+ *
4
+ * Subsequent calls within the TTL window return the cached result.
5
+ * Concurrent calls while a request is in flight share the same promise.
6
+ *
7
+ * @param fn - The async function to cache
8
+ * @param ttlMs - Time-to-live in milliseconds
9
+ */
10
+ export declare function createCachedGetter<T>(fn: () => Promise<T>, ttlMs: number): {
11
+ get: () => Promise<T>;
12
+ invalidate: () => void;
13
+ };
14
+ //# sourceMappingURL=cached-getter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cached-getter.d.ts","sourceRoot":"","sources":["../../src/utils/cached-getter.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM;eAIjD,OAAO,CAAC,CAAC,CAAC;;EAyBjC"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Create a cached async getter with TTL and inflight request deduplication.
3
+ *
4
+ * Subsequent calls within the TTL window return the cached result.
5
+ * Concurrent calls while a request is in flight share the same promise.
6
+ *
7
+ * @param fn - The async function to cache
8
+ * @param ttlMs - Time-to-live in milliseconds
9
+ */
10
+ export function createCachedGetter(fn, ttlMs) {
11
+ let cache = null;
12
+ let inflight = null;
13
+ async function get() {
14
+ if (cache && Date.now() - cache.timestamp < ttlMs) {
15
+ return cache.data;
16
+ }
17
+ if (inflight)
18
+ return inflight;
19
+ inflight = fn()
20
+ .then((result) => {
21
+ cache = { data: result, timestamp: Date.now() };
22
+ inflight = null;
23
+ return result;
24
+ })
25
+ .catch((err) => {
26
+ inflight = null;
27
+ throw err;
28
+ });
29
+ return inflight;
30
+ }
31
+ function invalidate() {
32
+ cache = null;
33
+ }
34
+ return { get, invalidate };
35
+ }
36
+ //# sourceMappingURL=cached-getter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cached-getter.js","sourceRoot":"","sources":["../../src/utils/cached-getter.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAAI,EAAoB,EAAE,KAAa;IACvE,IAAI,KAAK,GAA0C,IAAI,CAAA;IACvD,IAAI,QAAQ,GAAsB,IAAI,CAAA;IAEtC,KAAK,UAAU,GAAG;QAChB,IAAI,KAAK,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS,GAAG,KAAK,EAAE,CAAC;YAClD,OAAO,KAAK,CAAC,IAAI,CAAA;QACnB,CAAC;QACD,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAA;QAE7B,QAAQ,GAAG,EAAE,EAAE;aACZ,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YACf,KAAK,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAA;YAC/C,QAAQ,GAAG,IAAI,CAAA;YACf,OAAO,MAAM,CAAA;QACf,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACb,QAAQ,GAAG,IAAI,CAAA;YACf,MAAM,GAAG,CAAA;QACX,CAAC,CAAC,CAAA;QAEJ,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,SAAS,UAAU;QACjB,KAAK,GAAG,IAAI,CAAA;IACd,CAAC;IAED,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,CAAA;AAC5B,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Detect code-splitting / dynamic import failures in SPAs.
3
+ * Useful in error boundaries to auto-reload on stale chunks after deploys.
4
+ */
5
+ export declare function isChunkLoadError(error: Error): boolean;
6
+ //# sourceMappingURL=chunk-error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk-error.d.ts","sourceRoot":"","sources":["../../src/utils/chunk-error.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAQtD"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Detect code-splitting / dynamic import failures in SPAs.
3
+ * Useful in error boundaries to auto-reload on stale chunks after deploys.
4
+ */
5
+ export function isChunkLoadError(error) {
6
+ const message = error.message.toLowerCase();
7
+ return (message.includes('failed to fetch dynamically imported module') ||
8
+ message.includes('loading chunk') ||
9
+ message.includes('loading css chunk') ||
10
+ error.name === 'ChunkLoadError');
11
+ }
12
+ //# sourceMappingURL=chunk-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk-error.js","sourceRoot":"","sources":["../../src/utils/chunk-error.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAY;IAC3C,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAA;IAC3C,OAAO,CACL,OAAO,CAAC,QAAQ,CAAC,6CAA6C,CAAC;QAC/D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC;QACjC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QACrC,KAAK,CAAC,IAAI,KAAK,gBAAgB,CAChC,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,8 @@ 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';
6
+ export { isChunkLoadError } from './chunk-error.js';
7
+ export { createCachedGetter } from './cached-getter.js';
8
+ export { createRecentHistory, type RecentItem } from './recent-history.js';
5
9
  //# 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;AAEpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAEnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAEvD,OAAO,EAAE,mBAAmB,EAAE,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAA"}
@@ -2,4 +2,8 @@ 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';
6
+ export { isChunkLoadError } from './chunk-error.js';
7
+ export { createCachedGetter } from './cached-getter.js';
8
+ export { createRecentHistory } from './recent-history.js';
5
9
  //# 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;AAEpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAEnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAEvD,OAAO,EAAE,mBAAmB,EAAmB,MAAM,qBAAqB,CAAA"}
@@ -0,0 +1,15 @@
1
+ export interface RecentItem {
2
+ readonly title: string;
3
+ readonly url: string;
4
+ }
5
+ /**
6
+ * Create a localStorage-backed recent history tracker.
7
+ *
8
+ * @param storageKey - The localStorage key
9
+ * @param maxItems - Maximum items to keep (default 6)
10
+ */
11
+ export declare function createRecentHistory(storageKey: string, maxItems?: number): {
12
+ getItems: () => RecentItem[];
13
+ track: (title: string, url: string) => void;
14
+ };
15
+ //# sourceMappingURL=recent-history.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recent-history.d.ts","sourceRoot":"","sources":["../../src/utils/recent-history.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CACrB;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,SAAI;oBAC7C,UAAU,EAAE;mBAQX,MAAM,OAAO,MAAM;EAO1C"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Create a localStorage-backed recent history tracker.
3
+ *
4
+ * @param storageKey - The localStorage key
5
+ * @param maxItems - Maximum items to keep (default 6)
6
+ */
7
+ export function createRecentHistory(storageKey, maxItems = 6) {
8
+ function getItems() {
9
+ try {
10
+ return JSON.parse(localStorage.getItem(storageKey) ?? '[]');
11
+ }
12
+ catch {
13
+ return [];
14
+ }
15
+ }
16
+ function track(title, url) {
17
+ const items = getItems().filter((p) => p.url !== url);
18
+ const updated = [{ title, url }, ...items].slice(0, maxItems);
19
+ localStorage.setItem(storageKey, JSON.stringify(updated));
20
+ }
21
+ return { getItems, track };
22
+ }
23
+ //# sourceMappingURL=recent-history.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recent-history.js","sourceRoot":"","sources":["../../src/utils/recent-history.ts"],"names":[],"mappings":"AAKA;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,UAAkB,EAAE,QAAQ,GAAG,CAAC;IAClE,SAAS,QAAQ;QACf,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,CAAA;QAC7D,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAA;QACX,CAAC;IACH,CAAC;IAED,SAAS,KAAK,CAAC,KAAa,EAAE,GAAW;QACvC,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAA;QACrD,MAAM,OAAO,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAA;QAC7D,YAAY,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;IAC3D,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAA;AAC5B,CAAC"}
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.11.0",
7
+ "version": "0.13.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",