@blaze-dev/ui 0.7.1 → 0.9.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 (41) hide show
  1. package/dist/action-button.d.ts +1 -0
  2. package/dist/action-button.d.ts.map +1 -1
  3. package/dist/action-button.js +1 -0
  4. package/dist/action-button.js.map +1 -1
  5. package/dist/feedback/info-alert.d.ts +4 -2
  6. package/dist/feedback/info-alert.d.ts.map +1 -1
  7. package/dist/feedback/info-alert.js +9 -2
  8. package/dist/feedback/info-alert.js.map +1 -1
  9. package/dist/hooks/index.d.ts +2 -1
  10. package/dist/hooks/index.d.ts.map +1 -1
  11. package/dist/hooks/index.js +2 -1
  12. package/dist/hooks/index.js.map +1 -1
  13. package/dist/hooks/use-click-outside.d.ts +7 -0
  14. package/dist/hooks/use-click-outside.d.ts.map +1 -0
  15. package/dist/hooks/use-click-outside.js +17 -0
  16. package/dist/hooks/use-click-outside.js.map +1 -0
  17. package/dist/hooks/use-theme.d.ts +107 -0
  18. package/dist/hooks/use-theme.d.ts.map +1 -1
  19. package/dist/hooks/use-theme.js +37 -0
  20. package/dist/hooks/use-theme.js.map +1 -1
  21. package/dist/index.d.ts +2 -1
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +2 -1
  24. package/dist/index.js.map +1 -1
  25. package/dist/utils/color-utils.d.ts +3 -0
  26. package/dist/utils/color-utils.d.ts.map +1 -0
  27. package/dist/utils/color-utils.js +9 -0
  28. package/dist/utils/color-utils.js.map +1 -0
  29. package/dist/utils/fuzzy-search.d.ts +15 -0
  30. package/dist/utils/fuzzy-search.d.ts.map +1 -0
  31. package/dist/utils/fuzzy-search.js +89 -0
  32. package/dist/utils/fuzzy-search.js.map +1 -0
  33. package/dist/utils/image-upload.d.ts +2 -0
  34. package/dist/utils/image-upload.d.ts.map +1 -0
  35. package/dist/utils/image-upload.js +17 -0
  36. package/dist/utils/image-upload.js.map +1 -0
  37. package/dist/utils/index.d.ts +3 -0
  38. package/dist/utils/index.d.ts.map +1 -1
  39. package/dist/utils/index.js +3 -0
  40. package/dist/utils/index.js.map +1 -1
  41. package/package.json +1 -1
@@ -2,6 +2,7 @@ import type { ReactNode } from 'react';
2
2
  declare const variantClasses: {
3
3
  readonly primary: "btn-primary";
4
4
  readonly secondary: "btn-secondary";
5
+ readonly accent: "btn-accent";
5
6
  readonly ghost: "btn-ghost";
6
7
  readonly error: "btn-error";
7
8
  readonly outline: "btn-outline";
@@ -1 +1 @@
1
- {"version":3,"file":"action-button.d.ts","sourceRoot":"","sources":["../src/action-button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtC,QAAA,MAAM,cAAc;;;;;;CAMV,CAAA;AAEV,QAAA,MAAM,WAAW;;;;;CAKP,CAAA;AAEV,UAAU,iBAAiB;IACzB,QAAQ,EAAE,SAAS,CAAA;IACnB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,OAAO,cAAc,CAAA;IACrC,IAAI,CAAC,EAAE,MAAM,OAAO,WAAW,CAAA;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAA;CAC3B;AAED,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,OAAO,EACP,SAAiB,EACjB,QAAgB,EAChB,OAAmB,EACnB,IAAW,EACX,SAAc,EACd,IAAe,GAChB,EAAE,iBAAiB,2CAYnB"}
1
+ {"version":3,"file":"action-button.d.ts","sourceRoot":"","sources":["../src/action-button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtC,QAAA,MAAM,cAAc;;;;;;;CAOV,CAAA;AAEV,QAAA,MAAM,WAAW;;;;;CAKP,CAAA;AAEV,UAAU,iBAAiB;IACzB,QAAQ,EAAE,SAAS,CAAA;IACnB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,OAAO,cAAc,CAAA;IACrC,IAAI,CAAC,EAAE,MAAM,OAAO,WAAW,CAAA;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAA;CAC3B;AAED,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,OAAO,EACP,SAAiB,EACjB,QAAgB,EAChB,OAAmB,EACnB,IAAW,EACX,SAAc,EACd,IAAe,GAChB,EAAE,iBAAiB,2CAYnB"}
@@ -2,6 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  const variantClasses = {
3
3
  primary: 'btn-primary',
4
4
  secondary: 'btn-secondary',
5
+ accent: 'btn-accent',
5
6
  ghost: 'btn-ghost',
6
7
  error: 'btn-error',
7
8
  outline: 'btn-outline',
@@ -1 +1 @@
1
- {"version":3,"file":"action-button.js","sourceRoot":"","sources":["../src/action-button.tsx"],"names":[],"mappings":";AAEA,MAAM,cAAc,GAAG;IACrB,OAAO,EAAE,aAAa;IACtB,SAAS,EAAE,eAAe;IAC1B,KAAK,EAAE,WAAW;IAClB,KAAK,EAAE,WAAW;IAClB,OAAO,EAAE,aAAa;CACd,CAAA;AAEV,MAAM,WAAW,GAAG;IAClB,EAAE,EAAE,QAAQ;IACZ,EAAE,EAAE,QAAQ;IACZ,EAAE,EAAE,EAAE;IACN,EAAE,EAAE,QAAQ;CACJ,CAAA;AAaV,MAAM,UAAU,YAAY,CAAC,EAC3B,QAAQ,EACR,OAAO,EACP,SAAS,GAAG,KAAK,EACjB,QAAQ,GAAG,KAAK,EAChB,OAAO,GAAG,SAAS,EACnB,IAAI,GAAG,IAAI,EACX,SAAS,GAAG,EAAE,EACd,IAAI,GAAG,QAAQ,GACG;IAClB,OAAO,CACL,kBACE,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,IAAI,SAAS,EAC/B,SAAS,EAAE,OAAO,cAAc,CAAC,OAAO,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,SAAS,EAAE,aAE5E,SAAS,IAAI,eAAM,SAAS,EAAC,oCAAoC,GAAG,EACpE,QAAQ,IACF,CACV,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"action-button.js","sourceRoot":"","sources":["../src/action-button.tsx"],"names":[],"mappings":";AAEA,MAAM,cAAc,GAAG;IACrB,OAAO,EAAE,aAAa;IACtB,SAAS,EAAE,eAAe;IAC1B,MAAM,EAAE,YAAY;IACpB,KAAK,EAAE,WAAW;IAClB,KAAK,EAAE,WAAW;IAClB,OAAO,EAAE,aAAa;CACd,CAAA;AAEV,MAAM,WAAW,GAAG;IAClB,EAAE,EAAE,QAAQ;IACZ,EAAE,EAAE,QAAQ;IACZ,EAAE,EAAE,EAAE;IACN,EAAE,EAAE,QAAQ;CACJ,CAAA;AAaV,MAAM,UAAU,YAAY,CAAC,EAC3B,QAAQ,EACR,OAAO,EACP,SAAS,GAAG,KAAK,EACjB,QAAQ,GAAG,KAAK,EAChB,OAAO,GAAG,SAAS,EACnB,IAAI,GAAG,IAAI,EACX,SAAS,GAAG,EAAE,EACd,IAAI,GAAG,QAAQ,GACG;IAClB,OAAO,CACL,kBACE,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,IAAI,SAAS,EAC/B,SAAS,EAAE,OAAO,cAAc,CAAC,OAAO,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,SAAS,EAAE,aAE5E,SAAS,IAAI,eAAM,SAAS,EAAC,oCAAoC,GAAG,EACpE,QAAQ,IACF,CACV,CAAA;AACH,CAAC"}
@@ -1,3 +1,4 @@
1
+ import type { ReactNode } from 'react';
1
2
  declare const variantClasses: {
2
3
  readonly info: "alert-info";
3
4
  readonly success: "alert-success";
@@ -5,12 +6,13 @@ declare const variantClasses: {
5
6
  readonly error: "alert-error";
6
7
  };
7
8
  interface InfoAlertProps {
8
- message: string;
9
+ message: ReactNode;
9
10
  variant?: keyof typeof variantClasses;
11
+ icon?: ReactNode | false;
10
12
  dismissible?: boolean;
11
13
  onDismiss?: () => void;
12
14
  className?: string;
13
15
  }
14
- export declare function InfoAlert({ message, variant, dismissible, onDismiss, className, }: InfoAlertProps): import("react/jsx-runtime").JSX.Element;
16
+ export declare function InfoAlert({ message, variant, icon, dismissible, onDismiss, className, }: InfoAlertProps): import("react/jsx-runtime").JSX.Element;
15
17
  export {};
16
18
  //# sourceMappingURL=info-alert.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"info-alert.d.ts","sourceRoot":"","sources":["../../src/feedback/info-alert.tsx"],"names":[],"mappings":"AAAA,QAAA,MAAM,cAAc;;;;;CAKV,CAAA;AAEV,UAAU,cAAc;IACtB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,OAAO,cAAc,CAAA;IACrC,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,SAAS,CAAC,EACxB,OAAO,EACP,OAAgB,EAChB,WAAmB,EACnB,SAAS,EACT,SAAc,GACf,EAAE,cAAc,2CAWhB"}
1
+ {"version":3,"file":"info-alert.d.ts","sourceRoot":"","sources":["../../src/feedback/info-alert.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtC,QAAA,MAAM,cAAc;;;;;CAKV,CAAA;AAyBV,UAAU,cAAc;IACtB,OAAO,EAAE,SAAS,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,OAAO,cAAc,CAAA;IACrC,IAAI,CAAC,EAAE,SAAS,GAAG,KAAK,CAAA;IACxB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,SAAS,CAAC,EACxB,OAAO,EACP,OAAgB,EAChB,IAAI,EACJ,WAAmB,EACnB,SAAS,EACT,SAAc,GACf,EAAE,cAAc,2CAchB"}
@@ -5,7 +5,14 @@ const variantClasses = {
5
5
  warning: 'alert-warning',
6
6
  error: 'alert-error',
7
7
  };
8
- export function InfoAlert({ message, variant = 'info', dismissible = false, onDismiss, className = '', }) {
9
- return (_jsxs("div", { className: `alert ${variantClasses[variant]} ${className}`, children: [_jsx("span", { className: 'text-sm', children: message }), dismissible && onDismiss && (_jsx("button", { type: 'button', onClick: onDismiss, className: 'btn btn-ghost btn-sm btn-circle', "aria-label": 'Dismiss', children: "\u2715" }))] }));
8
+ const variantIcons = {
9
+ info: (_jsx("svg", { xmlns: "http://www.w3.org/2000/svg", className: "h-5 w-5 shrink-0", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "2", d: "M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" }) })),
10
+ success: (_jsx("svg", { xmlns: "http://www.w3.org/2000/svg", className: "h-5 w-5 shrink-0", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "2", d: "M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z" }) })),
11
+ warning: (_jsx("svg", { xmlns: "http://www.w3.org/2000/svg", className: "h-5 w-5 shrink-0", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "2", d: "M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z" }) })),
12
+ error: (_jsx("svg", { xmlns: "http://www.w3.org/2000/svg", className: "h-5 w-5 shrink-0", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "2", d: "M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z" }) })),
13
+ };
14
+ export function InfoAlert({ message, variant = 'info', icon, dismissible = false, onDismiss, className = '', }) {
15
+ const renderedIcon = icon === false ? null : (icon ?? variantIcons[variant]);
16
+ return (_jsxs("div", { role: "alert", className: `alert ${variantClasses[variant]} ${className}`, children: [renderedIcon, _jsx("span", { className: 'text-sm', children: message }), dismissible && onDismiss && (_jsx("button", { type: 'button', onClick: onDismiss, className: 'btn btn-ghost btn-sm btn-circle', "aria-label": 'Dismiss', children: "\u2715" }))] }));
10
17
  }
11
18
  //# sourceMappingURL=info-alert.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"info-alert.js","sourceRoot":"","sources":["../../src/feedback/info-alert.tsx"],"names":[],"mappings":";AAAA,MAAM,cAAc,GAAG;IACrB,IAAI,EAAE,YAAY;IAClB,OAAO,EAAE,eAAe;IACxB,OAAO,EAAE,eAAe;IACxB,KAAK,EAAE,aAAa;CACZ,CAAA;AAUV,MAAM,UAAU,SAAS,CAAC,EACxB,OAAO,EACP,OAAO,GAAG,MAAM,EAChB,WAAW,GAAG,KAAK,EACnB,SAAS,EACT,SAAS,GAAG,EAAE,GACC;IACf,OAAO,CACL,eAAK,SAAS,EAAE,SAAS,cAAc,CAAC,OAAO,CAAC,IAAI,SAAS,EAAE,aAC7D,eAAM,SAAS,EAAC,SAAS,YAAE,OAAO,GAAQ,EACzC,WAAW,IAAI,SAAS,IAAI,CAC3B,iBAAQ,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAC,iCAAiC,gBAAY,SAAS,uBAEjG,CACV,IACG,CACP,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"info-alert.js","sourceRoot":"","sources":["../../src/feedback/info-alert.tsx"],"names":[],"mappings":";AAEA,MAAM,cAAc,GAAG;IACrB,IAAI,EAAE,YAAY;IAClB,OAAO,EAAE,eAAe;IACxB,OAAO,EAAE,eAAe;IACxB,KAAK,EAAE,aAAa;CACZ,CAAA;AAEV,MAAM,YAAY,GAAmD;IACnE,IAAI,EAAE,CACJ,cAAK,KAAK,EAAC,4BAA4B,EAAC,SAAS,EAAC,kBAAkB,EAAC,IAAI,EAAC,MAAM,EAAC,OAAO,EAAC,WAAW,EAAC,MAAM,EAAC,cAAc,YACxH,eAAM,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,EAAC,WAAW,EAAC,GAAG,EAAC,CAAC,EAAC,2DAA2D,GAAG,GAC/H,CACP;IACD,OAAO,EAAE,CACP,cAAK,KAAK,EAAC,4BAA4B,EAAC,SAAS,EAAC,kBAAkB,EAAC,IAAI,EAAC,MAAM,EAAC,OAAO,EAAC,WAAW,EAAC,MAAM,EAAC,cAAc,YACxH,eAAM,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,EAAC,WAAW,EAAC,GAAG,EAAC,CAAC,EAAC,+CAA+C,GAAG,GACnH,CACP;IACD,OAAO,EAAE,CACP,cAAK,KAAK,EAAC,4BAA4B,EAAC,SAAS,EAAC,kBAAkB,EAAC,IAAI,EAAC,MAAM,EAAC,OAAO,EAAC,WAAW,EAAC,MAAM,EAAC,cAAc,YACxH,eAAM,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,EAAC,WAAW,EAAC,GAAG,EAAC,CAAC,EAAC,sIAAsI,GAAG,GAC1M,CACP;IACD,KAAK,EAAE,CACL,cAAK,KAAK,EAAC,4BAA4B,EAAC,SAAS,EAAC,kBAAkB,EAAC,IAAI,EAAC,MAAM,EAAC,OAAO,EAAC,WAAW,EAAC,MAAM,EAAC,cAAc,YACxH,eAAM,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,EAAC,WAAW,EAAC,GAAG,EAAC,CAAC,EAAC,sEAAsE,GAAG,GAC1I,CACP;CACF,CAAA;AAWD,MAAM,UAAU,SAAS,CAAC,EACxB,OAAO,EACP,OAAO,GAAG,MAAM,EAChB,IAAI,EACJ,WAAW,GAAG,KAAK,EACnB,SAAS,EACT,SAAS,GAAG,EAAE,GACC;IACf,MAAM,YAAY,GAAG,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC,CAAA;IAE5E,OAAO,CACL,eAAK,IAAI,EAAC,OAAO,EAAC,SAAS,EAAE,SAAS,cAAc,CAAC,OAAO,CAAC,IAAI,SAAS,EAAE,aACzE,YAAY,EACb,eAAM,SAAS,EAAC,SAAS,YAAE,OAAO,GAAQ,EACzC,WAAW,IAAI,SAAS,IAAI,CAC3B,iBAAQ,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAC,iCAAiC,gBAAY,SAAS,uBAEjG,CACV,IACG,CACP,CAAA;AACH,CAAC"}
@@ -4,7 +4,8 @@ export { useModalState, useItemModal } from './use-modal-state.js';
4
4
  export { useDebouncedSearch } from './use-debounced-search.js';
5
5
  export { usePersistedState } from './use-persisted-state.js';
6
6
  export { usePageTitle } from './use-page-title.js';
7
- export { useTheme } from './use-theme.js';
7
+ export { useTheme, DAISY_THEMES, type DaisyTheme } from './use-theme.js';
8
+ export { useClickOutside } from './use-click-outside.js';
8
9
  export { useConfirm, type ConfirmOptions, type ConfirmModalState } from './use-confirm.js';
9
10
  export { useInfiniteScroll } from './use-infinite-scroll.js';
10
11
  //# 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,MAAM,gBAAgB,CAAA;AACzC,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"}
@@ -4,7 +4,8 @@ export { useModalState, useItemModal } from './use-modal-state.js';
4
4
  export { useDebouncedSearch } from './use-debounced-search.js';
5
5
  export { usePersistedState } from './use-persisted-state.js';
6
6
  export { usePageTitle } from './use-page-title.js';
7
- export { useTheme } from './use-theme.js';
7
+ export { useTheme, DAISY_THEMES } from './use-theme.js';
8
+ export { useClickOutside } from './use-click-outside.js';
8
9
  export { useConfirm } from './use-confirm.js';
9
10
  export { useInfiniteScroll } from './use-infinite-scroll.js';
10
11
  //# 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,MAAM,gBAAgB,CAAA;AACzC,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"}
@@ -0,0 +1,7 @@
1
+ import { type RefObject } from 'react';
2
+ /**
3
+ * Calls `handler` when a click occurs outside the referenced element.
4
+ * Listens on `mousedown` so the handler fires before focus shifts.
5
+ */
6
+ export declare function useClickOutside(ref: RefObject<HTMLElement | null>, handler: () => void): void;
7
+ //# sourceMappingURL=use-click-outside.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-click-outside.d.ts","sourceRoot":"","sources":["../../src/hooks/use-click-outside.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAEjD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,IAAI,QAWtF"}
@@ -0,0 +1,17 @@
1
+ import { useEffect } from 'react';
2
+ /**
3
+ * Calls `handler` when a click occurs outside the referenced element.
4
+ * Listens on `mousedown` so the handler fires before focus shifts.
5
+ */
6
+ export function useClickOutside(ref, handler) {
7
+ useEffect(() => {
8
+ function onMouseDown(event) {
9
+ if (ref.current && !ref.current.contains(event.target)) {
10
+ handler();
11
+ }
12
+ }
13
+ document.addEventListener('mousedown', onMouseDown);
14
+ return () => document.removeEventListener('mousedown', onMouseDown);
15
+ }, [ref, handler]);
16
+ }
17
+ //# sourceMappingURL=use-click-outside.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-click-outside.js","sourceRoot":"","sources":["../../src/hooks/use-click-outside.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAkB,MAAM,OAAO,CAAA;AAEjD;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,GAAkC,EAAE,OAAmB;IACrF,SAAS,CAAC,GAAG,EAAE;QACb,SAAS,WAAW,CAAC,KAAiB;YACpC,IAAI,GAAG,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAc,CAAC,EAAE,CAAC;gBAC/D,OAAO,EAAE,CAAA;YACX,CAAC;QACH,CAAC;QAED,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;QACnD,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;IACrE,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAA;AACpB,CAAC"}
@@ -1,3 +1,110 @@
1
+ export declare const DAISY_THEMES: readonly [{
2
+ readonly name: "light";
3
+ readonly label: "Light";
4
+ }, {
5
+ readonly name: "dark";
6
+ readonly label: "Dark";
7
+ }, {
8
+ readonly name: "cupcake";
9
+ readonly label: "Cupcake";
10
+ }, {
11
+ readonly name: "bumblebee";
12
+ readonly label: "Bumblebee";
13
+ }, {
14
+ readonly name: "emerald";
15
+ readonly label: "Emerald";
16
+ }, {
17
+ readonly name: "corporate";
18
+ readonly label: "Corporate";
19
+ }, {
20
+ readonly name: "synthwave";
21
+ readonly label: "Synthwave";
22
+ }, {
23
+ readonly name: "retro";
24
+ readonly label: "Retro";
25
+ }, {
26
+ readonly name: "cyberpunk";
27
+ readonly label: "Cyberpunk";
28
+ }, {
29
+ readonly name: "valentine";
30
+ readonly label: "Valentine";
31
+ }, {
32
+ readonly name: "halloween";
33
+ readonly label: "Halloween";
34
+ }, {
35
+ readonly name: "garden";
36
+ readonly label: "Garden";
37
+ }, {
38
+ readonly name: "forest";
39
+ readonly label: "Forest";
40
+ }, {
41
+ readonly name: "aqua";
42
+ readonly label: "Aqua";
43
+ }, {
44
+ readonly name: "lofi";
45
+ readonly label: "Lo-Fi";
46
+ }, {
47
+ readonly name: "pastel";
48
+ readonly label: "Pastel";
49
+ }, {
50
+ readonly name: "fantasy";
51
+ readonly label: "Fantasy";
52
+ }, {
53
+ readonly name: "wireframe";
54
+ readonly label: "Wireframe";
55
+ }, {
56
+ readonly name: "black";
57
+ readonly label: "Black";
58
+ }, {
59
+ readonly name: "luxury";
60
+ readonly label: "Luxury";
61
+ }, {
62
+ readonly name: "dracula";
63
+ readonly label: "Dracula";
64
+ }, {
65
+ readonly name: "cmyk";
66
+ readonly label: "CMYK";
67
+ }, {
68
+ readonly name: "autumn";
69
+ readonly label: "Autumn";
70
+ }, {
71
+ readonly name: "business";
72
+ readonly label: "Business";
73
+ }, {
74
+ readonly name: "acid";
75
+ readonly label: "Acid";
76
+ }, {
77
+ readonly name: "lemonade";
78
+ readonly label: "Lemonade";
79
+ }, {
80
+ readonly name: "night";
81
+ readonly label: "Night";
82
+ }, {
83
+ readonly name: "coffee";
84
+ readonly label: "Coffee";
85
+ }, {
86
+ readonly name: "winter";
87
+ readonly label: "Winter";
88
+ }, {
89
+ readonly name: "dim";
90
+ readonly label: "Dim";
91
+ }, {
92
+ readonly name: "nord";
93
+ readonly label: "Nord";
94
+ }, {
95
+ readonly name: "sunset";
96
+ readonly label: "Sunset";
97
+ }, {
98
+ readonly name: "caramellatte";
99
+ readonly label: "Caramel Latte";
100
+ }, {
101
+ readonly name: "abyss";
102
+ readonly label: "Abyss";
103
+ }, {
104
+ readonly name: "silk";
105
+ readonly label: "Silk";
106
+ }];
107
+ export type DaisyTheme = (typeof DAISY_THEMES)[number]['name'];
1
108
  /**
2
109
  * Manage DaisyUI theme via localStorage and `data-theme` attribute.
3
110
  */
@@ -1 +1 @@
1
- {"version":3,"file":"use-theme.d.ts","sourceRoot":"","sources":["../../src/hooks/use-theme.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,wBAAgB,QAAQ,CAAC,YAAY,SAAS;;kCAU/B,MAAM;EAapB"}
1
+ {"version":3,"file":"use-theme.d.ts","sourceRoot":"","sources":["../../src/hooks/use-theme.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoCf,CAAA;AAEV,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAA;AAE9D;;GAEG;AACH,wBAAgB,QAAQ,CAAC,YAAY,SAAS;;kCAU/B,MAAM;EAapB"}
@@ -1,4 +1,41 @@
1
1
  import { useCallback, useState } from 'react';
2
+ export const DAISY_THEMES = [
3
+ { name: 'light', label: 'Light' },
4
+ { name: 'dark', label: 'Dark' },
5
+ { name: 'cupcake', label: 'Cupcake' },
6
+ { name: 'bumblebee', label: 'Bumblebee' },
7
+ { name: 'emerald', label: 'Emerald' },
8
+ { name: 'corporate', label: 'Corporate' },
9
+ { name: 'synthwave', label: 'Synthwave' },
10
+ { name: 'retro', label: 'Retro' },
11
+ { name: 'cyberpunk', label: 'Cyberpunk' },
12
+ { name: 'valentine', label: 'Valentine' },
13
+ { name: 'halloween', label: 'Halloween' },
14
+ { name: 'garden', label: 'Garden' },
15
+ { name: 'forest', label: 'Forest' },
16
+ { name: 'aqua', label: 'Aqua' },
17
+ { name: 'lofi', label: 'Lo-Fi' },
18
+ { name: 'pastel', label: 'Pastel' },
19
+ { name: 'fantasy', label: 'Fantasy' },
20
+ { name: 'wireframe', label: 'Wireframe' },
21
+ { name: 'black', label: 'Black' },
22
+ { name: 'luxury', label: 'Luxury' },
23
+ { name: 'dracula', label: 'Dracula' },
24
+ { name: 'cmyk', label: 'CMYK' },
25
+ { name: 'autumn', label: 'Autumn' },
26
+ { name: 'business', label: 'Business' },
27
+ { name: 'acid', label: 'Acid' },
28
+ { name: 'lemonade', label: 'Lemonade' },
29
+ { name: 'night', label: 'Night' },
30
+ { name: 'coffee', label: 'Coffee' },
31
+ { name: 'winter', label: 'Winter' },
32
+ { name: 'dim', label: 'Dim' },
33
+ { name: 'nord', label: 'Nord' },
34
+ { name: 'sunset', label: 'Sunset' },
35
+ { name: 'caramellatte', label: 'Caramel Latte' },
36
+ { name: 'abyss', label: 'Abyss' },
37
+ { name: 'silk', label: 'Silk' },
38
+ ];
2
39
  /**
3
40
  * Manage DaisyUI theme via localStorage and `data-theme` attribute.
4
41
  */
@@ -1 +1 @@
1
- {"version":3,"file":"use-theme.js","sourceRoot":"","sources":["../../src/hooks/use-theme.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAE7C;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,YAAY,GAAG,MAAM;IAC5C,MAAM,CAAC,KAAK,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE;QAC3C,IAAI,CAAC;YACH,OAAO,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,YAAY,CAAA;QACtD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,YAAY,CAAA;QACrB,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,MAAM,QAAQ,GAAG,WAAW,CAC1B,CAAC,QAAgB,EAAE,EAAE;QACnB,aAAa,CAAC,QAAQ,CAAC,CAAA;QACvB,IAAI,CAAC;YACH,YAAY,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;QACzC,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QACD,QAAQ,CAAC,eAAe,CAAC,YAAY,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAA;IAC/D,CAAC,EACD,EAAE,CACH,CAAA;IAED,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAW,CAAA;AACrC,CAAC"}
1
+ {"version":3,"file":"use-theme.js","sourceRoot":"","sources":["../../src/hooks/use-theme.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -28,7 +28,8 @@ export { useModalState, useItemModal } from './hooks/use-modal-state.js';
28
28
  export { useDebouncedSearch } from './hooks/use-debounced-search.js';
29
29
  export { usePersistedState } from './hooks/use-persisted-state.js';
30
30
  export { usePageTitle } from './hooks/use-page-title.js';
31
- export { useTheme } from './hooks/use-theme.js';
31
+ export { useTheme, DAISY_THEMES, type DaisyTheme } from './hooks/use-theme.js';
32
+ export { useClickOutside } from './hooks/use-click-outside.js';
32
33
  export { useConfirm, type ConfirmOptions, type ConfirmModalState } from './hooks/use-confirm.js';
33
34
  export { useInfiniteScroll } from './hooks/use-infinite-scroll.js';
34
35
  export { FormField } from './forms/form-field.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,MAAM,sBAAsB,CAAA;AAC/C,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":"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"}
package/dist/index.js CHANGED
@@ -33,7 +33,8 @@ export { useModalState, useItemModal } from './hooks/use-modal-state.js';
33
33
  export { useDebouncedSearch } from './hooks/use-debounced-search.js';
34
34
  export { usePersistedState } from './hooks/use-persisted-state.js';
35
35
  export { usePageTitle } from './hooks/use-page-title.js';
36
- export { useTheme } from './hooks/use-theme.js';
36
+ export { useTheme, DAISY_THEMES } from './hooks/use-theme.js';
37
+ export { useClickOutside } from './hooks/use-click-outside.js';
37
38
  export { useConfirm } from './hooks/use-confirm.js';
38
39
  export { useInfiniteScroll } from './hooks/use-infinite-scroll.js';
39
40
  // Forms
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,MAAM,sBAAsB,CAAA;AAC/C,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":"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"}
@@ -0,0 +1,3 @@
1
+ /** Returns true if a hex color (e.g. "#ff9900") is perceptually light. */
2
+ export declare function isLightHexColor(hex: string): boolean;
3
+ //# sourceMappingURL=color-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"color-utils.d.ts","sourceRoot":"","sources":["../../src/utils/color-utils.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAMpD"}
@@ -0,0 +1,9 @@
1
+ /** Returns true if a hex color (e.g. "#ff9900") is perceptually light. */
2
+ export function isLightHexColor(hex) {
3
+ const h = hex.replace('#', '');
4
+ const r = parseInt(h.substring(0, 2), 16);
5
+ const g = parseInt(h.substring(2, 4), 16);
6
+ const b = parseInt(h.substring(4, 6), 16);
7
+ return (r * 299 + g * 587 + b * 114) / 1000 > 155;
8
+ }
9
+ //# sourceMappingURL=color-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"color-utils.js","sourceRoot":"","sources":["../../src/utils/color-utils.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,MAAM,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;IAC9B,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IACzC,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IACzC,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IACzC,OAAO,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,GAAG,CAAA;AACnD,CAAC"}
@@ -0,0 +1,15 @@
1
+ export type SearchableItem = {
2
+ title: string;
3
+ keywords?: string[];
4
+ };
5
+ export type SearchResult<T extends SearchableItem> = {
6
+ item: T;
7
+ score: number;
8
+ };
9
+ export declare function fuzzySearch<T extends SearchableItem>(items: T[], query: string, minScore?: number): SearchResult<T>[];
10
+ export type HighlightSegment = {
11
+ text: string;
12
+ highlight: boolean;
13
+ };
14
+ export declare function getHighlightSegments(title: string, query: string): HighlightSegment[];
15
+ //# sourceMappingURL=fuzzy-search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fuzzy-search.d.ts","sourceRoot":"","sources":["../../src/utils/fuzzy-search.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,cAAc,IAAI;IACnD,IAAI,EAAE,CAAC,CAAA;IACP,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAmDD,wBAAgB,WAAW,CAAC,CAAC,SAAS,cAAc,EAClD,KAAK,EAAE,CAAC,EAAE,EACV,KAAK,EAAE,MAAM,EACb,QAAQ,SAAM,GACb,YAAY,CAAC,CAAC,CAAC,EAAE,CAOnB;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,OAAO,CAAA;CACnB,CAAA;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAoCrF"}
@@ -0,0 +1,89 @@
1
+ function normalizeStr(str) {
2
+ return str.toLowerCase().trim();
3
+ }
4
+ function getAcronym(title) {
5
+ return title
6
+ .split(/\s+/)
7
+ .map((word) => word[0])
8
+ .join('')
9
+ .toLowerCase();
10
+ }
11
+ function scoreMatch(item, query) {
12
+ const normalizedQuery = normalizeStr(query);
13
+ const normalizedTitle = normalizeStr(item.title);
14
+ if (normalizedTitle === normalizedQuery)
15
+ return 1.0;
16
+ if (normalizedTitle.startsWith(normalizedQuery))
17
+ return 0.9;
18
+ const words = normalizedTitle.split(/\s+/);
19
+ const queryWords = normalizedQuery.split(/\s+/);
20
+ const allWordPrefixMatch = queryWords.every((qw) => words.some((w) => w.startsWith(qw)));
21
+ if (allWordPrefixMatch && queryWords.length > 0)
22
+ return 0.8;
23
+ const acronym = getAcronym(item.title);
24
+ if (acronym.startsWith(normalizedQuery))
25
+ return 0.7;
26
+ if (item.keywords?.some((kw) => normalizeStr(kw).includes(normalizedQuery)))
27
+ return 0.6;
28
+ if (normalizedTitle.includes(normalizedQuery))
29
+ return 0.55;
30
+ let titleIdx = 0;
31
+ let queryIdx = 0;
32
+ let matched = 0;
33
+ while (titleIdx < normalizedTitle.length && queryIdx < normalizedQuery.length) {
34
+ if (normalizedTitle[titleIdx] === normalizedQuery[queryIdx]) {
35
+ matched++;
36
+ queryIdx++;
37
+ }
38
+ titleIdx++;
39
+ }
40
+ if (queryIdx === normalizedQuery.length) {
41
+ const density = matched / titleIdx;
42
+ return 0.3 + density * 0.2;
43
+ }
44
+ return 0;
45
+ }
46
+ export function fuzzySearch(items, query, minScore = 0.3) {
47
+ if (!query.trim())
48
+ return [];
49
+ return items
50
+ .map((item) => ({ item, score: scoreMatch(item, query) }))
51
+ .filter((result) => result.score >= minScore)
52
+ .sort((a, b) => b.score - a.score);
53
+ }
54
+ export function getHighlightSegments(title, query) {
55
+ if (!query.trim())
56
+ return [{ text: title, highlight: false }];
57
+ const lower = title.toLowerCase();
58
+ const q = query.toLowerCase().trim();
59
+ const idx = lower.indexOf(q);
60
+ if (idx !== -1) {
61
+ const segments = [];
62
+ if (idx > 0)
63
+ segments.push({ text: title.slice(0, idx), highlight: false });
64
+ segments.push({ text: title.slice(idx, idx + q.length), highlight: true });
65
+ if (idx + q.length < title.length)
66
+ segments.push({ text: title.slice(idx + q.length), highlight: false });
67
+ return segments;
68
+ }
69
+ const segments = [];
70
+ let queryIdx = 0;
71
+ let currentText = '';
72
+ let currentHighlight = false;
73
+ for (let i = 0; i < title.length; i++) {
74
+ const isMatch = queryIdx < q.length && title[i].toLowerCase() === q[queryIdx];
75
+ if (isMatch)
76
+ queryIdx++;
77
+ if (isMatch !== currentHighlight && currentText) {
78
+ segments.push({ text: currentText, highlight: currentHighlight });
79
+ currentText = '';
80
+ }
81
+ currentText += title[i];
82
+ currentHighlight = isMatch;
83
+ }
84
+ if (currentText) {
85
+ segments.push({ text: currentText, highlight: currentHighlight });
86
+ }
87
+ return segments;
88
+ }
89
+ //# sourceMappingURL=fuzzy-search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fuzzy-search.js","sourceRoot":"","sources":["../../src/utils/fuzzy-search.ts"],"names":[],"mappings":"AAUA,SAAS,YAAY,CAAC,GAAW;IAC/B,OAAO,GAAG,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAA;AACjC,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC/B,OAAO,KAAK;SACT,KAAK,CAAC,KAAK,CAAC;SACZ,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACtB,IAAI,CAAC,EAAE,CAAC;SACR,WAAW,EAAE,CAAA;AAClB,CAAC;AAED,SAAS,UAAU,CAA2B,IAAO,EAAE,KAAa;IAClE,MAAM,eAAe,GAAG,YAAY,CAAC,KAAK,CAAC,CAAA;IAC3C,MAAM,eAAe,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAEhD,IAAI,eAAe,KAAK,eAAe;QAAE,OAAO,GAAG,CAAA;IACnD,IAAI,eAAe,CAAC,UAAU,CAAC,eAAe,CAAC;QAAE,OAAO,GAAG,CAAA;IAE3D,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IAC1C,MAAM,UAAU,GAAG,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IAC/C,MAAM,kBAAkB,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IACxF,IAAI,kBAAkB,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,GAAG,CAAA;IAE3D,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACtC,IAAI,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC;QAAE,OAAO,GAAG,CAAA;IAEnD,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;QAAE,OAAO,GAAG,CAAA;IAEvF,IAAI,eAAe,CAAC,QAAQ,CAAC,eAAe,CAAC;QAAE,OAAO,IAAI,CAAA;IAE1D,IAAI,QAAQ,GAAG,CAAC,CAAA;IAChB,IAAI,QAAQ,GAAG,CAAC,CAAA;IAChB,IAAI,OAAO,GAAG,CAAC,CAAA;IACf,OAAO,QAAQ,GAAG,eAAe,CAAC,MAAM,IAAI,QAAQ,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC;QAC9E,IAAI,eAAe,CAAC,QAAQ,CAAC,KAAK,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5D,OAAO,EAAE,CAAA;YACT,QAAQ,EAAE,CAAA;QACZ,CAAC;QACD,QAAQ,EAAE,CAAA;IACZ,CAAC;IACD,IAAI,QAAQ,KAAK,eAAe,CAAC,MAAM,EAAE,CAAC;QACxC,MAAM,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAA;QAClC,OAAO,GAAG,GAAG,OAAO,GAAG,GAAG,CAAA;IAC5B,CAAC;IAED,OAAO,CAAC,CAAA;AACV,CAAC;AAED,MAAM,UAAU,WAAW,CACzB,KAAU,EACV,KAAa,EACb,QAAQ,GAAG,GAAG;IAEd,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,CAAA;IAE5B,OAAO,KAAK;SACT,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;SACzD,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,IAAI,QAAQ,CAAC;SAC5C,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAA;AACtC,CAAC;AAOD,MAAM,UAAU,oBAAoB,CAAC,KAAa,EAAE,KAAa;IAC/D,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;QAAE,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAA;IAE7D,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAA;IACjC,MAAM,CAAC,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAA;IAEpC,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;IAC5B,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;QACf,MAAM,QAAQ,GAAuB,EAAE,CAAA;QACvC,IAAI,GAAG,GAAG,CAAC;YAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAA;QAC3E,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QAC1E,IAAI,GAAG,GAAG,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM;YAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAA;QACzG,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,MAAM,QAAQ,GAAuB,EAAE,CAAA;IACvC,IAAI,QAAQ,GAAG,CAAC,CAAA;IAChB,IAAI,WAAW,GAAG,EAAE,CAAA;IACpB,IAAI,gBAAgB,GAAG,KAAK,CAAA;IAE5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,QAAQ,GAAG,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAA;QAC7E,IAAI,OAAO;YAAE,QAAQ,EAAE,CAAA;QAEvB,IAAI,OAAO,KAAK,gBAAgB,IAAI,WAAW,EAAE,CAAC;YAChD,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,CAAA;YACjE,WAAW,GAAG,EAAE,CAAA;QAClB,CAAC;QACD,WAAW,IAAI,KAAK,CAAC,CAAC,CAAC,CAAA;QACvB,gBAAgB,GAAG,OAAO,CAAA;IAC5B,CAAC;IACD,IAAI,WAAW,EAAE,CAAC;QAChB,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,CAAA;IACnE,CAAC;IAED,OAAO,QAAQ,CAAA;AACjB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function readImageAsDataUrl(file: File): Promise<string>;
2
+ //# sourceMappingURL=image-upload.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image-upload.d.ts","sourceRoot":"","sources":["../../src/utils/image-upload.ts"],"names":[],"mappings":"AAGA,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAepE"}
@@ -0,0 +1,17 @@
1
+ const MAX_FILE_SIZE = 300_000;
2
+ const ALLOWED_TYPES = ['image/png', 'image/jpeg', 'image/gif', 'image/webp'];
3
+ export async function readImageAsDataUrl(file) {
4
+ if (!ALLOWED_TYPES.includes(file.type)) {
5
+ throw new Error('Please select a PNG, JPEG, GIF, or WebP image.');
6
+ }
7
+ if (file.size > MAX_FILE_SIZE) {
8
+ throw new Error('Image must be under 300KB. Please use a smaller image.');
9
+ }
10
+ const reader = new FileReader();
11
+ return new Promise((resolve, reject) => {
12
+ reader.onload = () => resolve(reader.result);
13
+ reader.onerror = reject;
14
+ reader.readAsDataURL(file);
15
+ });
16
+ }
17
+ //# sourceMappingURL=image-upload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image-upload.js","sourceRoot":"","sources":["../../src/utils/image-upload.ts"],"names":[],"mappings":"AAAA,MAAM,aAAa,GAAG,OAAO,CAAA;AAC7B,MAAM,aAAa,GAAG,CAAC,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,CAAC,CAAA;AAE5E,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAAU;IACjD,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAA;IACnE,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,GAAG,aAAa,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAA;IAC3E,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAA;IAC/B,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC7C,MAAM,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,MAAgB,CAAC,CAAA;QACtD,MAAM,CAAC,OAAO,GAAG,MAAM,CAAA;QACvB,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;IAC5B,CAAC,CAAC,CAAA;AACJ,CAAC"}
@@ -1,2 +1,5 @@
1
1
  export { formatDateShort, formatDateLong, formatDateTime, formatTime, formatRelativeTime, formatTimeBetween, formatDateForInput, formatDateTimeForInput, formatFullTimestamp, formatCompactTimestamp, formatMonthDay, formatDateRange, formatWeekdayLong, formatTimeWithSeconds, formatDuration, timeAgo, formatElapsedTime, } from './date-utils.js';
2
+ export { fuzzySearch, getHighlightSegments, type SearchableItem, type SearchResult, type HighlightSegment, } from './fuzzy-search.js';
3
+ export { readImageAsDataUrl } from './image-upload.js';
4
+ export { isLightHexColor } from './color-utils.js';
2
5
  //# 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"}
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,2 +1,5 @@
1
1
  export { formatDateShort, formatDateLong, formatDateTime, formatTime, formatRelativeTime, formatTimeBetween, formatDateForInput, formatDateTimeForInput, formatFullTimestamp, formatCompactTimestamp, formatMonthDay, formatDateRange, formatWeekdayLong, formatTimeWithSeconds, formatDuration, timeAgo, formatElapsedTime, } from './date-utils.js';
2
+ export { fuzzySearch, getHighlightSegments, } from './fuzzy-search.js';
3
+ export { readImageAsDataUrl } from './image-upload.js';
4
+ export { isLightHexColor } from './color-utils.js';
2
5
  //# 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"}
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"}
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.7.1",
7
+ "version": "0.9.0",
8
8
  "private": false,
9
9
  "description": "Shared React + DaisyUI component library for Blaze projects",
10
10
  "type": "module",