@omnitron-dev/prism 0.3.1 → 0.3.2
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.
- package/README.md +68 -2
- package/THIRD-PARTY-NOTICES.txt +26 -0
- package/dist/accessibility/index.js +2 -0
- package/dist/accessibility/index.js.map +1 -1
- package/dist/auth/index.d.ts +4 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +4 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/blocks/auth-block/guards.d.ts +3 -2
- package/dist/blocks/auth-block/guards.d.ts.map +1 -1
- package/dist/blocks/dashboard-block/dashboard-block.d.ts.map +1 -1
- package/dist/blocks/dashboard-block/types.d.ts +4 -2
- package/dist/blocks/dashboard-block/types.d.ts.map +1 -1
- package/dist/blocks/dashboard-block/use-dashboard-block.d.ts +2 -2
- package/dist/blocks/dashboard-block/use-dashboard-block.d.ts.map +1 -1
- package/dist/blocks/data-grid-block/data-grid-block.d.ts.map +1 -1
- package/dist/blocks/data-grid-block/types.d.ts +3 -0
- package/dist/blocks/data-grid-block/types.d.ts.map +1 -1
- package/dist/blocks/index.js +80 -255
- package/dist/blocks/index.js.map +1 -1
- package/dist/chunk-2AB7VGPW.js +447 -0
- package/dist/chunk-2AB7VGPW.js.map +1 -0
- package/dist/{chunk-LOY2NPCO.js → chunk-2E67PQ4T.js} +3 -3
- package/dist/{chunk-LOY2NPCO.js.map → chunk-2E67PQ4T.js.map} +1 -1
- package/dist/chunk-2KG2NI73.js +84 -0
- package/dist/chunk-2KG2NI73.js.map +1 -0
- package/dist/chunk-2UYRW6X3.js +44 -0
- package/dist/chunk-2UYRW6X3.js.map +1 -0
- package/dist/chunk-36C5H56C.js +208 -0
- package/dist/chunk-36C5H56C.js.map +1 -0
- package/dist/chunk-36FOXX25.js +73 -0
- package/dist/chunk-36FOXX25.js.map +1 -0
- package/dist/{chunk-52PQL67Q.js → chunk-3VSM7NZG.js} +18 -15
- package/dist/chunk-3VSM7NZG.js.map +1 -0
- package/dist/{chunk-GUGTDURV.js → chunk-4B2LTPK2.js} +2 -2
- package/dist/{chunk-GUGTDURV.js.map → chunk-4B2LTPK2.js.map} +1 -1
- package/dist/chunk-4HUGZJKU.js +108 -0
- package/dist/chunk-4HUGZJKU.js.map +1 -0
- package/dist/{chunk-PXXPLHIY.js → chunk-4Q5L7LDG.js} +3 -3
- package/dist/{chunk-PXXPLHIY.js.map → chunk-4Q5L7LDG.js.map} +1 -1
- package/dist/{chunk-BRDWQVRT.js → chunk-4R7EZ7GQ.js} +3 -2
- package/dist/chunk-4R7EZ7GQ.js.map +1 -0
- package/dist/chunk-6IANOSMD.js +185 -0
- package/dist/chunk-6IANOSMD.js.map +1 -0
- package/dist/{chunk-YHE7HXSG.js → chunk-7ATBURW2.js} +3 -3
- package/dist/{chunk-YHE7HXSG.js.map → chunk-7ATBURW2.js.map} +1 -1
- package/dist/{chunk-7G5D5PTC.js → chunk-AATAOOSF.js} +4 -4
- package/dist/{chunk-7G5D5PTC.js.map → chunk-AATAOOSF.js.map} +1 -1
- package/dist/chunk-AKLRKCYH.js +128 -0
- package/dist/chunk-AKLRKCYH.js.map +1 -0
- package/dist/chunk-CT46KJOR.js +133 -0
- package/dist/chunk-CT46KJOR.js.map +1 -0
- package/dist/{chunk-LSPFFEJT.js → chunk-D4GFAJAZ.js} +298 -3900
- package/dist/chunk-D4GFAJAZ.js.map +1 -0
- package/dist/{chunk-BJE2AKD4.js → chunk-D5J3KW6Q.js} +3 -2
- package/dist/chunk-D5J3KW6Q.js.map +1 -0
- package/dist/chunk-DEPJRTVT.js +3 -0
- package/dist/{chunk-FU52GL2E.js.map → chunk-DEPJRTVT.js.map} +1 -1
- package/dist/{chunk-472SOF76.js → chunk-DHTYHUYI.js} +85 -107
- package/dist/chunk-DHTYHUYI.js.map +1 -0
- package/dist/{chunk-FF5RF32O.js → chunk-E7WM2RXA.js} +3 -2
- package/dist/chunk-E7WM2RXA.js.map +1 -0
- package/dist/chunk-F6RZ7LW6.js +1271 -0
- package/dist/chunk-F6RZ7LW6.js.map +1 -0
- package/dist/chunk-FOGY3HA4.js +217 -0
- package/dist/chunk-FOGY3HA4.js.map +1 -0
- package/dist/chunk-G2GANYMW.js +139 -0
- package/dist/chunk-G2GANYMW.js.map +1 -0
- package/dist/chunk-I6DILPFE.js +293 -0
- package/dist/chunk-I6DILPFE.js.map +1 -0
- package/dist/{chunk-HOXFSQUV.js → chunk-IRYU3NTG.js} +2 -2
- package/dist/{chunk-HOXFSQUV.js.map → chunk-IRYU3NTG.js.map} +1 -1
- package/dist/chunk-JTIUGPW5.js +284 -0
- package/dist/chunk-JTIUGPW5.js.map +1 -0
- package/dist/{chunk-GUFHFEPZ.js → chunk-JZBSPDED.js} +2 -2
- package/dist/{chunk-GUFHFEPZ.js.map → chunk-JZBSPDED.js.map} +1 -1
- package/dist/{chunk-PFT2BNYO.js → chunk-KPY7TA4D.js} +5 -5
- package/dist/{chunk-PFT2BNYO.js.map → chunk-KPY7TA4D.js.map} +1 -1
- package/dist/{chunk-GMIE6III.js → chunk-LFWKGNCX.js} +50 -623
- package/dist/chunk-LFWKGNCX.js.map +1 -0
- package/dist/chunk-LH4ZZZYB.js +37 -0
- package/dist/chunk-LH4ZZZYB.js.map +1 -0
- package/dist/chunk-NFJ7CPG3.js +13 -0
- package/dist/chunk-NFJ7CPG3.js.map +1 -0
- package/dist/chunk-NFPOIHD4.js +3 -0
- package/dist/{chunk-JSQTYDPG.js.map → chunk-NFPOIHD4.js.map} +1 -1
- package/dist/{chunk-XIXSSI3B.js → chunk-NJM5AVBM.js} +3 -2
- package/dist/chunk-NJM5AVBM.js.map +1 -0
- package/dist/{chunk-4Z5DE5GK.js → chunk-NSNM53WI.js} +133 -115
- package/dist/chunk-NSNM53WI.js.map +1 -0
- package/dist/chunk-NTREGTG7.js +31 -0
- package/dist/chunk-NTREGTG7.js.map +1 -0
- package/dist/{chunk-ADG4HZEP.js → chunk-OKJA6SJM.js} +4 -4
- package/dist/chunk-OKJA6SJM.js.map +1 -0
- package/dist/{chunk-SU3LVQ7N.js → chunk-Q6JDNFSG.js} +11 -226
- package/dist/chunk-Q6JDNFSG.js.map +1 -0
- package/dist/chunk-RPOGINR5.js +115 -0
- package/dist/chunk-RPOGINR5.js.map +1 -0
- package/dist/{chunk-KQ67XB6T.js → chunk-RSWVYIXK.js} +151 -114
- package/dist/chunk-RSWVYIXK.js.map +1 -0
- package/dist/chunk-SSEHL5VP.js +110 -0
- package/dist/chunk-SSEHL5VP.js.map +1 -0
- package/dist/chunk-TEIGUOWN.js +523 -0
- package/dist/chunk-TEIGUOWN.js.map +1 -0
- package/dist/{chunk-AYYFMTMI.js → chunk-TJ7DHXUX.js} +2 -2
- package/dist/{chunk-AYYFMTMI.js.map → chunk-TJ7DHXUX.js.map} +1 -1
- package/dist/{chunk-75FQ5IW3.js → chunk-TZHWYT34.js} +3 -3
- package/dist/{chunk-75FQ5IW3.js.map → chunk-TZHWYT34.js.map} +1 -1
- package/dist/chunk-TZWHELY4.js +45 -0
- package/dist/chunk-TZWHELY4.js.map +1 -0
- package/dist/{chunk-OKTLA23Q.js → chunk-UEINJFLS.js} +6 -6
- package/dist/chunk-UEINJFLS.js.map +1 -0
- package/dist/chunk-URFQX3I6.js +129 -0
- package/dist/chunk-URFQX3I6.js.map +1 -0
- package/dist/chunk-VG6FOMOH.js +187 -0
- package/dist/chunk-VG6FOMOH.js.map +1 -0
- package/dist/{chunk-PGHEP4JD.js → chunk-VQVVHMPG.js} +3 -3
- package/dist/{chunk-PGHEP4JD.js.map → chunk-VQVVHMPG.js.map} +1 -1
- package/dist/{chunk-DRFNMZLG.js → chunk-VUKOT432.js} +3 -2
- package/dist/chunk-VUKOT432.js.map +1 -0
- package/dist/chunk-WD4N72DL.js +315 -0
- package/dist/chunk-WD4N72DL.js.map +1 -0
- package/dist/chunk-XBYMG4QK.js +119 -0
- package/dist/chunk-XBYMG4QK.js.map +1 -0
- package/dist/chunk-YHM6GIHV.js +3 -0
- package/dist/chunk-YHM6GIHV.js.map +1 -0
- package/dist/{chunk-SNZK5X6F.js → chunk-Z2AN43YU.js} +4 -2
- package/dist/chunk-Z2AN43YU.js.map +1 -0
- package/dist/chunk-ZNWHMQRM.js +171 -0
- package/dist/chunk-ZNWHMQRM.js.map +1 -0
- package/dist/{chunk-YSIG2XYH.js → chunk-ZRJYQN6Y.js} +2 -2
- package/dist/{chunk-YSIG2XYH.js.map → chunk-ZRJYQN6Y.js.map} +1 -1
- package/dist/{chunk-AD4W7HYC.js → chunk-ZYI3MHLE.js} +3 -2
- package/dist/chunk-ZYI3MHLE.js.map +1 -0
- package/dist/cli/index.js +59 -421
- package/dist/cli/index.js.map +1 -1
- package/dist/components/admin-filters/admin-data-table.d.ts +7 -1
- package/dist/components/admin-filters/admin-data-table.d.ts.map +1 -1
- package/dist/components/admin-filters/filter-toolbar.d.ts.map +1 -1
- package/dist/components/admin-filters/index.js +8 -0
- package/dist/components/admin-filters/index.js.map +1 -0
- package/dist/components/alert/alert.d.ts.map +1 -1
- package/dist/components/alert/index.js +5 -0
- package/dist/components/alert/index.js.map +1 -0
- package/dist/components/animate/index.js +5 -0
- package/dist/components/animate/index.js.map +1 -0
- package/dist/components/breadcrumbs/breadcrumbs.d.ts.map +1 -1
- package/dist/components/breadcrumbs/index.js +4 -0
- package/dist/components/breadcrumbs/index.js.map +1 -0
- package/dist/components/card/index.js +4 -0
- package/dist/components/card/index.js.map +1 -0
- package/dist/components/chart/chart.d.ts.map +1 -1
- package/dist/components/chart/index.css +52 -0
- package/dist/components/chart/index.css.map +1 -0
- package/dist/components/chart/index.js +5 -0
- package/dist/components/chart/index.js.map +1 -0
- package/dist/components/chart/types.d.ts +3 -1
- package/dist/components/chart/types.d.ts.map +1 -1
- package/dist/components/chart/use-chart.d.ts.map +1 -1
- package/dist/components/command-palette/command-palette.d.ts +3 -1
- package/dist/components/command-palette/command-palette.d.ts.map +1 -1
- package/dist/components/command-palette/index.js +4 -0
- package/dist/components/command-palette/index.js.map +1 -0
- package/dist/components/confirm-dialog/index.js +4 -0
- package/dist/components/confirm-dialog/index.js.map +1 -0
- package/dist/components/date-input/date-input.d.ts +1 -0
- package/dist/components/date-input/date-input.d.ts.map +1 -1
- package/dist/components/date-input/index.d.ts +0 -1
- package/dist/components/date-input/index.d.ts.map +1 -1
- package/dist/components/doc-layout/index.js +5 -4
- package/dist/components/doc-layout/index.js.map +1 -1
- package/dist/components/editor/index.js +4 -3
- package/dist/components/editor/index.js.map +1 -1
- package/dist/components/emoji-picker/index.js +2 -1
- package/dist/components/emoji-picker/index.js.map +1 -1
- package/dist/components/empty-content/empty-content.d.ts.map +1 -1
- package/dist/components/empty-content/index.js +4 -0
- package/dist/components/empty-content/index.js.map +1 -0
- package/dist/components/error-boundary/index.js +6 -0
- package/dist/components/error-boundary/index.js.map +1 -0
- package/dist/components/index.css +13 -10
- package/dist/components/index.css.map +1 -1
- package/dist/components/index.d.ts +1 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +47 -21
- package/dist/components/index.js.map +1 -1
- package/dist/components/knowledge-graph/edge-labels.d.ts.map +1 -1
- package/dist/components/knowledge-graph/index.js +18 -16
- package/dist/components/knowledge-graph/index.js.map +1 -1
- package/dist/components/label/index.js +5 -0
- package/dist/components/label/index.js.map +1 -0
- package/dist/components/label/label.d.ts.map +1 -1
- package/dist/components/loading-screen/index.js +4 -0
- package/dist/components/loading-screen/index.js.map +1 -0
- package/dist/components/map/MapPointPicker.d.ts.map +1 -1
- package/dist/components/map/index.js +2 -1
- package/dist/components/map/index.js.map +1 -1
- package/dist/components/navigation-progress/index.js +4 -0
- package/dist/components/navigation-progress/index.js.map +1 -0
- package/dist/components/page-content/index.js +4 -0
- package/dist/components/page-content/index.js.map +1 -0
- package/dist/components/popover/index.js +4 -0
- package/dist/components/popover/index.js.map +1 -0
- package/dist/components/research/diagram.d.ts.map +1 -1
- package/dist/components/research/index.js +6 -4
- package/dist/components/research/index.js.map +1 -1
- package/dist/components/research-editor/extensions.d.ts +1 -1
- package/dist/components/research-editor/index.js +11 -10
- package/dist/components/research-editor/index.js.map +1 -1
- package/dist/components/research-editor/math-navigation.d.ts +2 -2
- package/dist/components/research-editor/math-navigation.d.ts.map +1 -1
- package/dist/components/scroll-to-top/index.js +4 -0
- package/dist/components/scroll-to-top/index.js.map +1 -0
- package/dist/components/search-input/index.js +7 -0
- package/dist/components/search-input/index.js.map +1 -0
- package/dist/components/search-input/search-input.d.ts +3 -1
- package/dist/components/search-input/search-input.d.ts.map +1 -1
- package/dist/components/skeleton/index.js +4 -0
- package/dist/components/skeleton/index.js.map +1 -0
- package/dist/components/snackbar/index.js +6 -0
- package/dist/components/snackbar/index.js.map +1 -0
- package/dist/components/stepper/index.js +4 -0
- package/dist/components/stepper/index.js.map +1 -0
- package/dist/components/table/index.d.ts +1 -0
- package/dist/components/table/index.d.ts.map +1 -1
- package/dist/components/table/index.js +5 -0
- package/dist/components/table/index.js.map +1 -0
- package/dist/components/table/table-viewport.d.ts +13 -0
- package/dist/components/table/table-viewport.d.ts.map +1 -0
- package/dist/components/table/table.d.ts +3 -1
- package/dist/components/table/table.d.ts.map +1 -1
- package/dist/components/tabs/index.js +6 -0
- package/dist/components/tabs/index.js.map +1 -0
- package/dist/components/tabs/tabs.d.ts +12 -1
- package/dist/components/tabs/tabs.d.ts.map +1 -1
- package/dist/core/index.js +12 -10
- package/dist/core/index.js.map +1 -1
- package/dist/forms/index.js +2 -0
- package/dist/forms/index.js.map +1 -1
- package/dist/hooks/index.js +14 -12
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/use-config-from-query.d.ts +2 -0
- package/dist/hooks/use-config-from-query.d.ts.map +1 -1
- package/dist/hooks/use-image-dimensions.d.ts.map +1 -1
- package/dist/hooks/use-keyboard-shortcut.d.ts.map +1 -1
- package/dist/hooks/use-scroll-position.d.ts.map +1 -1
- package/dist/hooks/use-window-size.d.ts.map +1 -1
- package/dist/icons/context.d.ts.map +1 -1
- package/dist/icons/index.js +3 -2
- package/dist/icons/index.js.map +1 -1
- package/dist/index.css +13 -10
- package/dist/index.css.map +1 -1
- package/dist/index.js +57 -31
- package/dist/index.js.map +1 -1
- package/dist/internal/research-parser.js +3 -0
- package/dist/internal/research-parser.js.map +1 -0
- package/dist/layouts/core/header-section.d.ts +1 -0
- package/dist/layouts/core/header-section.d.ts.map +1 -1
- package/dist/layouts/dashboard/layout.d.ts +3 -1
- package/dist/layouts/dashboard/layout.d.ts.map +1 -1
- package/dist/layouts/dashboard/sidenav.d.ts.map +1 -1
- package/dist/layouts/index.js +9 -8
- package/dist/layouts/index.js.map +1 -1
- package/dist/netron/index.js +2 -1
- package/dist/netron/index.js.map +1 -1
- package/dist/registry/index.js +1 -1
- package/dist/state/create-store.d.ts.map +1 -1
- package/dist/state/index.js +3 -2
- package/dist/state/index.js.map +1 -1
- package/dist/state/settings-version.d.ts.map +1 -1
- package/dist/theme/components/Chip.d.ts.map +1 -1
- package/dist/theme/components/Dialog.d.ts.map +1 -1
- package/dist/theme/components/TextField.d.ts.map +1 -1
- package/dist/theme/components/index.d.ts.map +1 -1
- package/dist/theme/components/theme-utils.d.ts +2 -2
- package/dist/theme/components/theme-utils.d.ts.map +1 -1
- package/dist/theme/index.js +8 -6
- package/dist/theme/index.js.map +1 -1
- package/dist/theme/palette/overrides.d.ts +1 -0
- package/dist/theme/palette/overrides.d.ts.map +1 -1
- package/dist/theme/semantic-surface.d.ts +8 -0
- package/dist/theme/semantic-surface.d.ts.map +1 -0
- package/dist/types/index.js +2 -2
- package/dist/ui/index.js +6 -5
- package/dist/ui/index.js.map +1 -1
- package/dist/utils/async-lock.d.ts.map +1 -1
- package/package.json +143 -37
- package/dist/chunk-472SOF76.js.map +0 -1
- package/dist/chunk-4Z5DE5GK.js.map +0 -1
- package/dist/chunk-52PQL67Q.js.map +0 -1
- package/dist/chunk-AD4W7HYC.js.map +0 -1
- package/dist/chunk-ADG4HZEP.js.map +0 -1
- package/dist/chunk-BJE2AKD4.js.map +0 -1
- package/dist/chunk-BRDWQVRT.js.map +0 -1
- package/dist/chunk-DRFNMZLG.js.map +0 -1
- package/dist/chunk-FF5RF32O.js.map +0 -1
- package/dist/chunk-FU52GL2E.js +0 -3
- package/dist/chunk-GMIE6III.js.map +0 -1
- package/dist/chunk-JSQTYDPG.js +0 -3
- package/dist/chunk-KQ67XB6T.js.map +0 -1
- package/dist/chunk-LSPFFEJT.js.map +0 -1
- package/dist/chunk-OKTLA23Q.js.map +0 -1
- package/dist/chunk-SNZK5X6F.js.map +0 -1
- package/dist/chunk-SU3LVQ7N.js.map +0 -1
- package/dist/chunk-XIXSSI3B.js.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type EditorState } from '@tiptap/pm/state';
|
|
2
2
|
/** Leave an equation at its document boundary, preserving neighbouring structure. */
|
|
3
|
-
export declare function exitMathTransaction(state: EditorState, pos: number, before: boolean): import("
|
|
3
|
+
export declare function exitMathTransaction(state: EditorState, pos: number, before: boolean): import("prosemirror-state").Transaction | undefined;
|
|
4
4
|
/** Replace formula source without mapping the selected atom into a text caret. */
|
|
5
|
-
export declare function updateMathTransaction(state: EditorState, pos: number, tex: string): import("
|
|
5
|
+
export declare function updateMathTransaction(state: EditorState, pos: number, tex: string): import("prosemirror-state").Transaction | undefined;
|
|
6
6
|
//# sourceMappingURL=math-navigation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"math-navigation.d.ts","sourceRoot":"","sources":["../../../src/components/research-editor/math-navigation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgC,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAIlF,qFAAqF;AACrF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"math-navigation.d.ts","sourceRoot":"","sources":["../../../src/components/research-editor/math-navigation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgC,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAIlF,qFAAqF;AACrF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,uDAuBnF;AAED,kFAAkF;AAClF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,uDAOjF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":";","file":"index.js"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":";","file":"index.js"}
|
|
@@ -5,6 +5,8 @@ export interface SearchInputProps {
|
|
|
5
5
|
value?: string;
|
|
6
6
|
/** Change handler. Receives the raw string (or debounced string if `debounce` > 0). */
|
|
7
7
|
onChange?: (value: string) => void;
|
|
8
|
+
/** Accessible name; defaults to the placeholder. */
|
|
9
|
+
'aria-label'?: string;
|
|
8
10
|
/** Placeholder text. */
|
|
9
11
|
placeholder?: string;
|
|
10
12
|
/** Debounce delay in ms. 0 = no debounce (default). */
|
|
@@ -30,7 +32,7 @@ export interface SearchInputProps {
|
|
|
30
32
|
/** Custom sx overrides. */
|
|
31
33
|
sx?: SxProps<Theme>;
|
|
32
34
|
}
|
|
33
|
-
export declare function SearchInput({ value: controlledValue, onChange, placeholder, debounce, compact, fullWidth, width, minWidth, clearTooltip, autoFocus, onFocus, onBlur, onKeyDown, sx, ref, }: SearchInputProps & {
|
|
35
|
+
export declare function SearchInput({ value: controlledValue, onChange, placeholder, 'aria-label': ariaLabel, debounce, compact, fullWidth, width, minWidth, clearTooltip, autoFocus, onFocus, onBlur, onKeyDown, sx, ref, }: SearchInputProps & {
|
|
34
36
|
ref?: Ref<HTMLInputElement>;
|
|
35
37
|
}): import("react").JSX.Element;
|
|
36
38
|
//# sourceMappingURL=search-input.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-input.d.ts","sourceRoot":"","sources":["../../../src/components/search-input/search-input.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAKjC,OAAO,EAAmB,KAAK,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAkBjF,MAAM,WAAW,gBAAgB;IAC/B,kCAAkC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uFAAuF;IACvF,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,wBAAwB;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uDAAuD;IACvD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qEAAqE;IACrE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gCAAgC;IAChC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,0BAA0B;IAC1B,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,iBAAiB;IACjB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,iCAAiC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0BAA0B;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,qBAAqB;IACrB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,oBAAoB;IACpB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,wBAAwB;IACxB,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;IAC/D,2BAA2B;IAC3B,EAAE,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;CACrB;AAMD,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EAAE,eAAe,EACtB,QAAQ,EACR,WAAyB,EACzB,QAAY,EACZ,OAAe,EACf,SAAgB,EAChB,KAAK,EACL,QAAQ,EACR,YAAsB,EACtB,SAAS,EACT,OAAO,EACP,MAAM,EACN,SAAS,EACT,EAAE,EACF,GAAG,GACJ,EAAE,gBAAgB,GAAG;IAAE,GAAG,CAAC,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAA;CAAE,+
|
|
1
|
+
{"version":3,"file":"search-input.d.ts","sourceRoot":"","sources":["../../../src/components/search-input/search-input.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAKjC,OAAO,EAAmB,KAAK,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAkBjF,MAAM,WAAW,gBAAgB;IAC/B,kCAAkC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uFAAuF;IACvF,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,oDAAoD;IACpD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,wBAAwB;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uDAAuD;IACvD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qEAAqE;IACrE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gCAAgC;IAChC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,0BAA0B;IAC1B,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,iBAAiB;IACjB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,iCAAiC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0BAA0B;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,qBAAqB;IACrB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,oBAAoB;IACpB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,wBAAwB;IACxB,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;IAC/D,2BAA2B;IAC3B,EAAE,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;CACrB;AAMD,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EAAE,eAAe,EACtB,QAAQ,EACR,WAAyB,EACzB,YAAY,EAAE,SAAS,EACvB,QAAY,EACZ,OAAe,EACf,SAAgB,EAChB,KAAK,EACL,QAAQ,EACR,YAAsB,EACtB,SAAS,EACT,OAAO,EACP,MAAM,EACN,SAAS,EACT,EAAE,EACF,GAAG,GACJ,EAAE,gBAAgB,GAAG;IAAE,GAAG,CAAC,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAA;CAAE,+BAqHpD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":";","file":"index.js"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":";","file":"index.js"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":";","file":"index.js"}
|
|
@@ -4,4 +4,5 @@
|
|
|
4
4
|
* @module components/table
|
|
5
5
|
*/
|
|
6
6
|
export { Table, useTable, type TableProps, type TableColumn, type SortOrder, type UseTableOptions, type UseTableReturn, } from './table.js';
|
|
7
|
+
export { TableViewport, type TableViewportProps } from './table-viewport.js';
|
|
7
8
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/table/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,KAAK,EACL,QAAQ,EACR,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,eAAe,EACpB,KAAK,cAAc,GACpB,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/table/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,KAAK,EACL,QAAQ,EACR,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,eAAe,EACpB,KAAK,cAAc,GACpB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":";","file":"index.js"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { TableContainerProps } from '@mui/material/TableContainer';
|
|
2
|
+
export interface TableViewportProps extends TableContainerProps {
|
|
3
|
+
/** Accessible name of the keyboard-scrollable table region. */
|
|
4
|
+
label?: string;
|
|
5
|
+
/** Constrain the rows, keeping pagination outside the scroll region. */
|
|
6
|
+
maxHeight?: number | string;
|
|
7
|
+
/** Arrow/Home/End/Page keys browse rows; Escape returns to the viewport. */
|
|
8
|
+
keyboardNavigation?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export declare function isRowActionTarget(target: EventTarget): boolean;
|
|
11
|
+
/** A bounded, keyboard-accessible viewport for wide or tall native MUI tables. */
|
|
12
|
+
export declare function TableViewport({ label, maxHeight, keyboardNavigation, onKeyDown, sx, ...props }: TableViewportProps): import("react").JSX.Element;
|
|
13
|
+
//# sourceMappingURL=table-viewport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table-viewport.d.ts","sourceRoot":"","sources":["../../../src/components/table/table-viewport.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAGxE,MAAM,WAAW,kBAAmB,SAAQ,mBAAmB;IAC7D,+DAA+D;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wEAAwE;IACxE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,4EAA4E;IAC5E,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAID,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,WAEpD;AAwCD,kFAAkF;AAClF,wBAAgB,aAAa,CAAC,EAC5B,KAAe,EACf,SAAS,EACT,kBAAyB,EACzB,SAAS,EACT,EAAE,EACF,GAAG,KAAK,EACT,EAAE,kBAAkB,+BA0BpB"}
|
|
@@ -79,6 +79,8 @@ export interface TableProps<T> extends Omit<MuiTableProps, 'children'> {
|
|
|
79
79
|
maxHeight?: number | string;
|
|
80
80
|
/** Row click handler */
|
|
81
81
|
onRowClick?: (row: T, index: number) => void;
|
|
82
|
+
/** Accessible name of the scrollable table region. */
|
|
83
|
+
scrollLabel?: string;
|
|
82
84
|
/** Container styles */
|
|
83
85
|
containerSx?: SxProps<Theme>;
|
|
84
86
|
}
|
|
@@ -102,7 +104,7 @@ export interface TableProps<T> extends Omit<MuiTableProps, 'children'> {
|
|
|
102
104
|
* />
|
|
103
105
|
* ```
|
|
104
106
|
*/
|
|
105
|
-
export declare function Table<T>({ columns, data, rowKey, selectable, selected, onSelectChange, sortable, sortBy, sortOrder, onSortChange, paginated, page, rowsPerPage, totalRows, onPageChange, onRowsPerPageChange, rowsPerPageOptions, emptyContent, loading, loadingRows, dense, stickyHeader, maxHeight, onRowClick, containerSx, sx, ref, ...other }: TableProps<T> & {
|
|
107
|
+
export declare function Table<T>({ columns, data, rowKey, selectable, selected, onSelectChange, sortable, sortBy, sortOrder, onSortChange, paginated, page, rowsPerPage, totalRows, onPageChange, onRowsPerPageChange, rowsPerPageOptions, emptyContent, loading, loadingRows, dense, stickyHeader, maxHeight, onRowClick, containerSx, scrollLabel, sx, ref, ...other }: TableProps<T> & {
|
|
106
108
|
ref?: Ref<HTMLTableElement>;
|
|
107
109
|
}): ReactNode;
|
|
108
110
|
export interface UseTableOptions<T> {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../../src/components/table/table.tsx"],"names":[],"mappings":"AAEA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAe,GAAG,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../../src/components/table/table.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":";","file":"index.js"}
|
|
@@ -21,6 +21,12 @@ export interface TabItem {
|
|
|
21
21
|
content?: ReactNode;
|
|
22
22
|
/** Disabled state */
|
|
23
23
|
disabled?: boolean;
|
|
24
|
+
/** Show an individual close control. Requires Tabs.onClose. */
|
|
25
|
+
closable?: boolean;
|
|
26
|
+
/** Disable closing without disabling selection (e.g. during a save). */
|
|
27
|
+
closeDisabled?: boolean;
|
|
28
|
+
/** Localized accessible name for the close control. */
|
|
29
|
+
closeLabel?: string;
|
|
24
30
|
}
|
|
25
31
|
/**
|
|
26
32
|
* Props for Tabs component.
|
|
@@ -34,6 +40,8 @@ export interface TabsProps extends Omit<ComponentProps<typeof MuiTabs>, 'onChang
|
|
|
34
40
|
defaultValue?: string;
|
|
35
41
|
/** Change handler */
|
|
36
42
|
onChange?: (value: string) => void;
|
|
43
|
+
/** Request closure. The caller owns confirmation, removal and controlled selection. */
|
|
44
|
+
onClose?: (value: string) => void;
|
|
37
45
|
/** Tab panel children (alternative to tabs prop) */
|
|
38
46
|
children?: ReactNode;
|
|
39
47
|
/** Keep unmounted tabs in DOM */
|
|
@@ -73,7 +81,7 @@ export interface TabsProps extends Omit<ComponentProps<typeof MuiTabs>, 'onChang
|
|
|
73
81
|
* </Tabs>
|
|
74
82
|
* ```
|
|
75
83
|
*/
|
|
76
|
-
export declare function Tabs({ tabs, value: controlledValue, defaultValue, onChange, children, keepMounted, action, ...muiProps }: TabsProps): ReactNode;
|
|
84
|
+
export declare function Tabs({ tabs, value: controlledValue, defaultValue, onChange, onClose, children, keepMounted, action, sx, ...muiProps }: TabsProps): ReactNode;
|
|
77
85
|
/**
|
|
78
86
|
* Props for TabPanel component.
|
|
79
87
|
*/
|
|
@@ -88,6 +96,9 @@ export interface TabPanelProps {
|
|
|
88
96
|
children?: ReactNode;
|
|
89
97
|
/** Disabled state */
|
|
90
98
|
disabled?: boolean;
|
|
99
|
+
closable?: boolean;
|
|
100
|
+
closeDisabled?: boolean;
|
|
101
|
+
closeLabel?: string;
|
|
91
102
|
}
|
|
92
103
|
/**
|
|
93
104
|
* TabPanel - Individual tab panel for use with Tabs children pattern.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tabs.d.ts","sourceRoot":"","sources":["../../../src/components/tabs/tabs.tsx"],"names":[],"mappings":"AAEA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAkB,cAAc,
|
|
1
|
+
{"version":3,"file":"tabs.d.ts","sourceRoot":"","sources":["../../../src/components/tabs/tabs.tsx"],"names":[],"mappings":"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"}
|
package/dist/core/index.js
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import '../chunk-
|
|
4
|
-
import '../chunk-
|
|
5
|
-
|
|
6
|
-
import '../chunk-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
import '../chunk-
|
|
10
|
-
|
|
1
|
+
"use client";
|
|
2
|
+
export { PrismContext, PrismProvider, ProviderStack, composeProviders, conditionalProvider, createProviderStack, filterProviders, useBreakpoints, useClickOutside, useCopyToClipboard, useCountdown, useDebounce, useDebounceCallback, useEventListener, useInterval, useIsClient, useLocalStorage, useMuiMediaQuery as useMediaQuery, useMounted, useMultiSelect, usePrevious, usePrismContext, useSetState, useTimeout, withProviderProps } from '../chunk-UEINJFLS.js';
|
|
3
|
+
import '../chunk-ZRJYQN6Y.js';
|
|
4
|
+
import '../chunk-RSWVYIXK.js';
|
|
5
|
+
import '../chunk-TZHWYT34.js';
|
|
6
|
+
import '../chunk-TZWHELY4.js';
|
|
7
|
+
export { ARIA_LABELS, SkipLink, announceToScreenReader, combineAriaDescribedBy, focusVisibleStyles, generateAriaId, getAriaExpanded, handleListKeyDown, srOnly } from '../chunk-ZYI3MHLE.js';
|
|
8
|
+
import '../chunk-NJM5AVBM.js';
|
|
9
|
+
import '../chunk-IRYU3NTG.js';
|
|
10
|
+
export { useBoolean } from '../chunk-4R7EZ7GQ.js';
|
|
11
|
+
import '../chunk-VQVVHMPG.js';
|
|
12
|
+
import '../chunk-D5J3KW6Q.js';
|
|
11
13
|
//# sourceMappingURL=index.js.map
|
|
12
14
|
//# sourceMappingURL=index.js.map
|
package/dist/core/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":";","file":"index.js"}
|
package/dist/forms/index.js
CHANGED
package/dist/forms/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/forms/schema-utils.ts","../../src/forms/schema-provider.tsx"],"names":["z","date"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Schema Utilities\n *\n * Pre-built Zod schema helpers for common form field validations.\n * Designed to work seamlessly with React Hook Form + Zod resolver.\n *\n * Features:\n * - Type-safe schema builders\n * - Customizable error messages with i18n support\n * - Common field validations (email, phone, date, file, etc.)\n * - Nullable input handling\n * - Slider range validation\n * - Rich text editor validation\n *\n * @module @omnitron-dev/prism/forms\n */\n\nimport * as z from 'zod';\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\n/**\n * Common error message configuration.\n */\nexport interface SchemaErrorMessages {\n /** Error message when field is required but empty */\n required?: string;\n /** Error message when field format is invalid */\n invalid?: string;\n}\n\n/**\n * Options for file validation.\n */\nexport interface FileSchemaOptions extends SchemaErrorMessages {\n /** Maximum file size in bytes */\n maxSize?: number;\n /** Allowed MIME types */\n accept?: string[];\n}\n\n/**\n * Options for slider range validation.\n */\nexport interface SliderRangeOptions extends SchemaErrorMessages {\n /** Minimum value */\n min: number;\n /** Maximum value */\n max: number;\n}\n\n// =============================================================================\n// DEFAULT ERROR MESSAGES\n// =============================================================================\n\nconst DEFAULT_ERRORS = {\n email: {\n required: 'Email is required',\n invalid: 'Email must be a valid email address',\n },\n phone: {\n required: 'Phone number is required',\n invalid: 'Invalid phone number',\n },\n date: {\n required: 'Date is required',\n invalid: 'Invalid date',\n },\n file: {\n required: 'File is required',\n invalid: 'Invalid file',\n tooLarge: 'File is too large',\n invalidType: 'File type not allowed',\n },\n boolean: {\n required: 'This field is required',\n },\n editor: {\n required: 'Content is required',\n },\n nullable: {\n required: 'This field is required',\n },\n} as const;\n\n// =============================================================================\n// SCHEMA UTILS\n// =============================================================================\n\n/**\n * Pre-built Zod schema helpers for common form validations.\n *\n * @example\n * ```tsx\n * import { z } from 'zod';\n * import { schemaUtils } from '@omnitron-dev/prism/forms';\n *\n * // Define form schema\n * const UserSchema = z.object({\n * email: schemaUtils.email(),\n * phone: schemaUtils.phone(),\n * birthDate: schemaUtils.date(),\n * avatar: schemaUtils.file(),\n * agreeToTerms: schemaUtils.boolean({ error: 'You must accept the terms' }),\n * bio: schemaUtils.editor(),\n * });\n *\n * // With custom error messages\n * const CustomSchema = z.object({\n * email: schemaUtils.email({\n * required: 'Please enter your email',\n * invalid: 'That email doesn\\'t look right',\n * }),\n * });\n * ```\n */\nexport const schemaUtils = {\n /**\n * Email validation schema.\n * Validates format and provides clear error messages.\n *\n * @example\n * ```tsx\n * const schema = z.object({\n * email: schemaUtils.email(),\n * });\n * ```\n */\n email: (errors?: SchemaErrorMessages) =>\n z\n .string()\n .min(1, { message: errors?.required ?? DEFAULT_ERRORS.email.required })\n .max(320, { message: 'Email address is too long' })\n .email({ message: errors?.invalid ?? DEFAULT_ERRORS.email.invalid }),\n\n /**\n * Phone number validation schema.\n * Basic validation with optional custom validator.\n *\n * @example\n * ```tsx\n * const schema = z.object({\n * phone: schemaUtils.phone({\n * isValid: (val) => /^\\+?[1-9]\\d{1,14}$/.test(val),\n * }),\n * });\n * ```\n */\n phone: (options?: SchemaErrorMessages & { isValid?: (val: string) => boolean }) => {\n let schema = z.string().min(1, { message: options?.required ?? DEFAULT_ERRORS.phone.required });\n\n if (options?.isValid) {\n schema = schema.refine(options.isValid, {\n message: options?.invalid ?? DEFAULT_ERRORS.phone.invalid,\n });\n }\n\n return schema;\n },\n\n /**\n * Date validation schema.\n * Works with Date objects, timestamps, and ISO strings.\n * Compatible with date pickers.\n *\n * @example\n * ```tsx\n * const schema = z.object({\n * birthDate: schemaUtils.date(),\n * appointmentTime: schemaUtils.date({ required: 'Please select a time' }),\n * });\n * ```\n */\n date: (errors?: SchemaErrorMessages) =>\n z\n .union([z.string(), z.number(), z.date(), z.null()])\n .refine((val) => val !== null && val !== '' && val !== undefined, {\n message: errors?.required ?? DEFAULT_ERRORS.date.required,\n })\n .refine(\n (val) => {\n // At this point, val passed the required check (non-null, non-empty, defined)\n if (val instanceof Date) return Number.isFinite(val.getTime());\n const date = new Date(val as string | number);\n return Number.isFinite(date.getTime());\n },\n { message: errors?.invalid ?? DEFAULT_ERRORS.date.invalid }\n ),\n\n /**\n * Optional date schema (nullable).\n * For date fields that aren't required.\n */\n dateOptional: (errors?: SchemaErrorMessages) =>\n z\n .union([z.string(), z.number(), z.date(), z.null()])\n .refine(\n (val) => {\n if (val === null || val === '' || val === undefined) return true;\n if (val instanceof Date) return Number.isFinite(val.getTime());\n const date = new Date(val as string | number);\n return Number.isFinite(date.getTime());\n },\n { message: errors?.invalid ?? DEFAULT_ERRORS.date.invalid }\n )\n .nullable(),\n\n /**\n * Rich text editor validation schema.\n * Treats empty paragraphs as empty content.\n *\n * @example\n * ```tsx\n * const schema = z.object({\n * description: schemaUtils.editor(),\n * });\n * ```\n */\n editor: (error?: string) =>\n z.string().refine(\n (val) => {\n const cleaned = val.trim();\n // Common empty editor states\n return cleaned !== '' && cleaned !== '<p></p>' && cleaned !== '<p><br></p>' && cleaned !== '<p><br/></p>';\n },\n { message: error ?? DEFAULT_ERRORS.editor.required }\n ),\n\n /**\n * Boolean validation schema.\n * For checkboxes/switches that must be true (e.g., terms acceptance).\n *\n * @example\n * ```tsx\n * const schema = z.object({\n * agreeToTerms: schemaUtils.boolean({ error: 'You must accept the terms' }),\n * });\n * ```\n */\n boolean: (options?: { error?: string }) =>\n z.boolean().refine((val) => val === true, {\n message: options?.error ?? DEFAULT_ERRORS.boolean.required,\n }),\n\n /**\n * Optional boolean schema.\n * For optional checkboxes.\n */\n booleanOptional: () => z.boolean().optional(),\n\n /**\n * Nullable input wrapper.\n * Wraps any schema to handle null values as required errors.\n *\n * @example\n * ```tsx\n * const schema = z.object({\n * country: schemaUtils.nullableInput(\n * z.string().min(1),\n * { error: 'Please select a country' }\n * ),\n * });\n * ```\n */\n nullableInput: <T extends z.ZodTypeAny>(schema: T, options?: { error?: string }) =>\n schema.nullable().refine((val) => val !== null && val !== undefined, {\n message: options?.error ?? DEFAULT_ERRORS.nullable.required,\n }),\n\n /**\n * Single file upload validation.\n * Supports File objects and URL strings (for existing files).\n *\n * @example\n * ```tsx\n * const schema = z.object({\n * avatar: schemaUtils.file(),\n * document: schemaUtils.file({\n * maxSize: 5 * 1024 * 1024, // 5MB\n * accept: ['application/pdf'],\n * }),\n * });\n * ```\n */\n file: (options?: FileSchemaOptions) =>\n z\n .union([z.instanceof(File), z.string(), z.null()])\n .refine(\n (val) => {\n if (val === null || val === undefined) return false;\n if (typeof val === 'string') return val.length > 0;\n return true;\n },\n { message: options?.required ?? DEFAULT_ERRORS.file.required }\n )\n .refine(\n (val) => {\n if (!options?.maxSize || typeof val === 'string' || val === null) return true;\n return (val as File).size <= options.maxSize;\n },\n { message: options?.invalid ?? DEFAULT_ERRORS.file.tooLarge }\n )\n .refine(\n (val) => {\n if (!options?.accept || typeof val === 'string' || val === null) return true;\n return options.accept.includes((val as File).type);\n },\n { message: options?.invalid ?? DEFAULT_ERRORS.file.invalidType }\n ),\n\n /**\n * Optional single file upload.\n */\n fileOptional: (options?: Omit<FileSchemaOptions, 'required'>) =>\n z\n .union([z.instanceof(File), z.string(), z.null()])\n .refine(\n (val) => {\n if (!options?.maxSize || typeof val === 'string' || val === null || val === undefined) return true;\n return (val as File).size <= options.maxSize;\n },\n { message: options?.invalid ?? DEFAULT_ERRORS.file.tooLarge }\n )\n .refine(\n (val) => {\n if (!options?.accept || typeof val === 'string' || val === null || val === undefined) return true;\n return options.accept.includes((val as File).type);\n },\n { message: options?.invalid ?? DEFAULT_ERRORS.file.invalidType }\n )\n .nullable(),\n\n /**\n * Multiple file upload validation.\n *\n * @example\n * ```tsx\n * const schema = z.object({\n * images: schemaUtils.files({ minFiles: 1, error: 'Upload at least one image' }),\n * });\n * ```\n */\n files: (options?: { error?: string; minFiles?: number }) =>\n z\n .array(z.union([z.instanceof(File), z.string()]))\n .min(options?.minFiles ?? 1, { message: options?.error ?? DEFAULT_ERRORS.file.required }),\n\n /**\n * Slider range validation.\n * For dual-thumb sliders with [min, max] value.\n *\n * @example\n * ```tsx\n * const schema = z.object({\n * priceRange: schemaUtils.sliderRange({ min: 0, max: 1000 }),\n * });\n * ```\n */\n sliderRange: (options: SliderRangeOptions) =>\n z.tuple([z.number(), z.number()]).refine(([min, max]) => min >= options.min && max <= options.max && min <= max, {\n message: options?.invalid ?? `Range must be between ${options.min} and ${options.max}`,\n }),\n\n /**\n * URL validation schema.\n */\n url: (errors?: SchemaErrorMessages) =>\n z\n .string()\n .min(1, { message: errors?.required ?? 'URL is required' })\n .url({ message: errors?.invalid ?? 'Invalid URL' }),\n\n /**\n * Optional URL schema.\n */\n urlOptional: (errors?: SchemaErrorMessages) =>\n z\n .string()\n .url({ message: errors?.invalid ?? 'Invalid URL' })\n .optional()\n .or(z.literal('')),\n\n /**\n * Password validation with strength requirements.\n */\n password: (options?: {\n minLength?: number;\n requireUppercase?: boolean;\n requireLowercase?: boolean;\n requireNumber?: boolean;\n requireSpecial?: boolean;\n error?: string;\n }) => {\n const {\n minLength = 8,\n requireUppercase = true,\n requireLowercase = true,\n requireNumber = true,\n requireSpecial = false,\n } = options ?? {};\n\n return z\n .string()\n .min(minLength, { message: `Password must be at least ${minLength} characters` })\n .refine((val) => val.trim().length > 0, {\n message: 'Password must not be only whitespace',\n })\n .refine((val) => !requireUppercase || /[A-Z]/.test(val), {\n message: 'Password must contain at least one uppercase letter',\n })\n .refine((val) => !requireLowercase || /[a-z]/.test(val), {\n message: 'Password must contain at least one lowercase letter',\n })\n .refine((val) => !requireNumber || /[0-9]/.test(val), {\n message: 'Password must contain at least one number',\n })\n .refine((val) => !requireSpecial || /[!@#$%^&*(),.?\":{}|<>]/.test(val), {\n message: 'Password must contain at least one special character',\n });\n },\n\n /**\n * Confirmation field (e.g., confirm password).\n * Use with z.object().refine() for cross-field validation.\n */\n confirm: (fieldName: string, error?: string) => ({\n message: error ?? `${fieldName} does not match`,\n path: ['confirm'],\n }),\n};\n\n// =============================================================================\n// TESTING UTILITY\n// =============================================================================\n\n/**\n * Test schema validation with multiple values.\n * Useful for development and debugging.\n *\n * @example\n * ```ts\n * testSchema(schemaUtils.email(), [\n * 'valid@email.com',\n * 'invalid-email',\n * '',\n * null,\n * ]);\n * ```\n */\n/**\n * Test results from schema validation.\n */\nexport interface SchemaTestResult {\n value: unknown;\n success: boolean;\n data?: unknown;\n errors?: string[];\n}\n\n/**\n * Test a schema against multiple values.\n * Returns structured results instead of logging to console.\n * Use testSchemaDebug for console output during development.\n */\nexport function testSchema<T extends z.ZodTypeAny>(schema: T, values: unknown[]): SchemaTestResult[] {\n return values.map((value) => {\n const result = schema.safeParse(value);\n if (result.success) {\n return { value, success: true, data: result.data };\n }\n return {\n value,\n success: false,\n errors: result.error.issues.map((issue) => issue.message),\n };\n });\n}\n\n/**\n * Test a schema with console output (development only).\n * This function does nothing in production builds.\n *\n * @example\n * ```ts\n * testSchemaDebug(schemaUtils.email(), [\n * 'valid@email.com',\n * 'invalid-email',\n * '',\n * null,\n * ]);\n * ```\n */\nexport function testSchemaDebug<T extends z.ZodTypeAny>(schema: T, values: unknown[]): void {\n // Only run in development\n if (typeof process !== 'undefined' && process.env?.NODE_ENV === 'production') {\n return;\n }\n\n const colors = {\n green: (txt: string) => `\\x1b[32m${txt}\\x1b[0m`,\n red: (txt: string) => `\\x1b[31m${txt}\\x1b[0m`,\n gray: (txt: string) => `\\x1b[90m${txt}\\x1b[0m`,\n };\n\n console.log('\\n--- Schema Test Results ---\\n');\n\n values.forEach((value) => {\n const result = schema.safeParse(value);\n const type = colors.gray(`(${typeof value})`);\n const serialized = JSON.stringify(value);\n\n if (result.success) {\n console.log(`${colors.green('✓')} ${serialized} ${type}`);\n\n console.log(` Result: ${JSON.stringify(result.data)}`);\n } else {\n console.log(`${colors.red('✗')} ${serialized} ${type}`);\n result.error.issues.forEach((issue) => {\n console.log(` Error: ${issue.message}`);\n });\n }\n\n console.log('');\n });\n}\n","'use client';\n\n/**\n * Schema Provider\n *\n * Provides i18n-aware schema validation with customizable error messages.\n * Integrates with any i18n library (i18next, react-intl, etc.).\n *\n * @module @omnitron-dev/prism/forms\n */\n\nimport { createContext, useContext, useMemo, type ReactNode } from 'react';\nimport * as z from 'zod';\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\n/**\n * Translation function type.\n * Compatible with i18next t() function signature.\n */\nexport type TranslateFunction = (key: string, options?: Record<string, unknown>) => string;\n\n/**\n * Default translation keys for schema error messages.\n */\nexport interface SchemaTranslationKeys {\n // Required fields\n 'validation.required': string;\n 'validation.email.required': string;\n 'validation.email.invalid': string;\n 'validation.phone.required': string;\n 'validation.phone.invalid': string;\n 'validation.date.required': string;\n 'validation.date.invalid': string;\n 'validation.file.required': string;\n 'validation.file.tooLarge': string;\n 'validation.file.invalidType': string;\n 'validation.boolean.required': string;\n 'validation.editor.required': string;\n 'validation.url.required': string;\n 'validation.url.invalid': string;\n 'validation.password.minLength': string;\n 'validation.password.uppercase': string;\n 'validation.password.lowercase': string;\n 'validation.password.number': string;\n 'validation.password.special': string;\n 'validation.confirm.mismatch': string;\n // Array of all keys\n [key: string]: string;\n}\n\n/**\n * Schema provider configuration.\n */\nexport interface SchemaProviderConfig {\n /**\n * Translation function from your i18n library.\n * If not provided, keys will be used as-is.\n */\n t?: TranslateFunction;\n /**\n * Default locale for error messages.\n * @default 'en'\n */\n locale?: string;\n /**\n * Custom error message overrides.\n */\n messages?: Partial<SchemaTranslationKeys>;\n}\n\n/**\n * Schema context value.\n */\nexport interface SchemaContextValue {\n /**\n * Translate a validation key.\n */\n t: TranslateFunction;\n /**\n * Current locale.\n */\n locale: string;\n /**\n * Get schema helpers with translated messages.\n */\n schema: ReturnType<typeof createTranslatedSchemaUtils>;\n}\n\n// =============================================================================\n// DEFAULT MESSAGES\n// =============================================================================\n\n/**\n * Default English error messages.\n */\nconst DEFAULT_MESSAGES: SchemaTranslationKeys = {\n 'validation.required': 'This field is required',\n 'validation.email.required': 'Email is required',\n 'validation.email.invalid': 'Please enter a valid email address',\n 'validation.phone.required': 'Phone number is required',\n 'validation.phone.invalid': 'Please enter a valid phone number',\n 'validation.date.required': 'Date is required',\n 'validation.date.invalid': 'Please enter a valid date',\n 'validation.file.required': 'File is required',\n 'validation.file.tooLarge': 'File size exceeds the maximum allowed',\n 'validation.file.invalidType': 'File type is not supported',\n 'validation.boolean.required': 'This field must be accepted',\n 'validation.editor.required': 'Content is required',\n 'validation.url.required': 'URL is required',\n 'validation.url.invalid': 'Please enter a valid URL',\n 'validation.password.minLength': 'Password must be at least {{minLength}} characters',\n 'validation.password.uppercase': 'Password must contain at least one uppercase letter',\n 'validation.password.lowercase': 'Password must contain at least one lowercase letter',\n 'validation.password.number': 'Password must contain at least one number',\n 'validation.password.special': 'Password must contain at least one special character',\n 'validation.confirm.mismatch': '{{fieldName}} does not match',\n};\n\n// =============================================================================\n// CONTEXT\n// =============================================================================\n\nconst SchemaContext = createContext<SchemaContextValue | null>(null);\n\n// =============================================================================\n// TRANSLATED SCHEMA UTILS FACTORY\n// =============================================================================\n\n/**\n * Create schema utilities with translated error messages.\n */\nfunction createTranslatedSchemaUtils(t: TranslateFunction) {\n return {\n /**\n * Email validation with i18n messages.\n */\n email: (options?: { required?: string; invalid?: string }) =>\n z\n .string()\n .min(1, { message: options?.required ?? t('validation.email.required') })\n .email({ message: options?.invalid ?? t('validation.email.invalid') }),\n\n /**\n * Phone validation with i18n messages.\n */\n phone: (options?: { required?: string; invalid?: string; isValid?: (val: string) => boolean }) => {\n let schema = z.string().min(1, { message: options?.required ?? t('validation.phone.required') });\n\n if (options?.isValid) {\n schema = schema.refine(options.isValid, {\n message: options?.invalid ?? t('validation.phone.invalid'),\n });\n }\n\n return schema;\n },\n\n /**\n * Date validation with i18n messages.\n */\n date: (options?: { required?: string; invalid?: string }) =>\n z\n .union([z.string(), z.number(), z.date(), z.null()])\n .refine((val) => val !== null && val !== '' && val !== undefined, {\n message: options?.required ?? t('validation.date.required'),\n })\n .refine(\n (val) => {\n if (val === null || val === '' || val === undefined) return true;\n const date = new Date(val as string | number | Date);\n return !isNaN(date.getTime());\n },\n { message: options?.invalid ?? t('validation.date.invalid') }\n ),\n\n /**\n * Optional date schema.\n */\n dateOptional: (options?: { invalid?: string }) =>\n z\n .union([z.string(), z.number(), z.date(), z.null()])\n .refine(\n (val) => {\n if (val === null || val === '' || val === undefined) return true;\n const date = new Date(val as string | number | Date);\n return !isNaN(date.getTime());\n },\n { message: options?.invalid ?? t('validation.date.invalid') }\n )\n .nullable(),\n\n /**\n * Boolean (checkbox) validation with i18n messages.\n */\n boolean: (options?: { error?: string }) =>\n z.boolean().refine((val) => val === true, {\n message: options?.error ?? t('validation.boolean.required'),\n }),\n\n /**\n * Optional boolean schema.\n */\n booleanOptional: () => z.boolean().optional(),\n\n /**\n * Rich text editor validation with i18n messages.\n */\n editor: (options?: { error?: string }) =>\n z.string().refine(\n (val) => {\n const cleaned = val.trim();\n return cleaned !== '' && cleaned !== '<p></p>' && cleaned !== '<p><br></p>' && cleaned !== '<p><br/></p>';\n },\n { message: options?.error ?? t('validation.editor.required') }\n ),\n\n /**\n * File validation with i18n messages.\n */\n file: (options?: {\n required?: string;\n tooLarge?: string;\n invalidType?: string;\n maxSize?: number;\n accept?: string[];\n }) =>\n z\n .union([z.instanceof(File), z.string(), z.null()])\n .refine(\n (val) => {\n if (val === null || val === undefined) return false;\n if (typeof val === 'string') return val.length > 0;\n return true;\n },\n { message: options?.required ?? t('validation.file.required') }\n )\n .refine(\n (val) => {\n if (!options?.maxSize || typeof val === 'string' || val === null) return true;\n return (val as File).size <= options.maxSize;\n },\n { message: options?.tooLarge ?? t('validation.file.tooLarge') }\n )\n .refine(\n (val) => {\n if (!options?.accept || typeof val === 'string' || val === null) return true;\n return options.accept.includes((val as File).type);\n },\n { message: options?.invalidType ?? t('validation.file.invalidType') }\n ),\n\n /**\n * Optional file schema.\n */\n fileOptional: (options?: { tooLarge?: string; invalidType?: string; maxSize?: number; accept?: string[] }) =>\n z\n .union([z.instanceof(File), z.string(), z.null()])\n .refine(\n (val) => {\n if (!options?.maxSize || typeof val === 'string' || val === null || val === undefined) return true;\n return (val as File).size <= options.maxSize;\n },\n { message: options?.tooLarge ?? t('validation.file.tooLarge') }\n )\n .refine(\n (val) => {\n if (!options?.accept || typeof val === 'string' || val === null || val === undefined) return true;\n return options.accept.includes((val as File).type);\n },\n { message: options?.invalidType ?? t('validation.file.invalidType') }\n )\n .nullable(),\n\n /**\n * Multiple files validation.\n */\n files: (options?: { error?: string; minFiles?: number }) =>\n z\n .array(z.union([z.instanceof(File), z.string()]))\n .min(options?.minFiles ?? 1, { message: options?.error ?? t('validation.file.required') }),\n\n /**\n * URL validation with i18n messages.\n */\n url: (options?: { required?: string; invalid?: string }) =>\n z\n .string()\n .min(1, { message: options?.required ?? t('validation.url.required') })\n .url({ message: options?.invalid ?? t('validation.url.invalid') }),\n\n /**\n * Optional URL schema.\n */\n urlOptional: (options?: { invalid?: string }) =>\n z\n .string()\n .url({ message: options?.invalid ?? t('validation.url.invalid') })\n .optional()\n .or(z.literal('')),\n\n /**\n * Password validation with strength requirements.\n */\n password: (options?: {\n minLength?: number;\n requireUppercase?: boolean;\n requireLowercase?: boolean;\n requireNumber?: boolean;\n requireSpecial?: boolean;\n }) => {\n const {\n minLength = 8,\n requireUppercase = true,\n requireLowercase = true,\n requireNumber = true,\n requireSpecial = false,\n } = options ?? {};\n\n return z\n .string()\n .min(minLength, { message: t('validation.password.minLength', { minLength }) })\n .refine((val) => !requireUppercase || /[A-Z]/.test(val), {\n message: t('validation.password.uppercase'),\n })\n .refine((val) => !requireLowercase || /[a-z]/.test(val), {\n message: t('validation.password.lowercase'),\n })\n .refine((val) => !requireNumber || /[0-9]/.test(val), {\n message: t('validation.password.number'),\n })\n .refine((val) => !requireSpecial || /[!@#$%^&*(),.?\":{}|<>]/.test(val), {\n message: t('validation.password.special'),\n });\n },\n\n /**\n * Nullable input wrapper.\n */\n nullableInput: <T extends z.ZodTypeAny>(schema: T, options?: { error?: string }) =>\n schema\n .nullable()\n .refine((val) => val !== null && val !== undefined, { message: options?.error ?? t('validation.required') }),\n\n /**\n * Slider range validation.\n */\n sliderRange: (options: { min: number; max: number; invalid?: string }) =>\n z.tuple([z.number(), z.number()]).refine(([min, max]) => min >= options.min && max <= options.max && min <= max, {\n message: options?.invalid ?? `Range must be between ${options.min} and ${options.max}`,\n }),\n\n /**\n * Required string with i18n message.\n */\n required: (options?: { error?: string }) =>\n z.string().min(1, { message: options?.error ?? t('validation.required') }),\n\n /**\n * Confirmation field helper.\n */\n confirm: (fieldName: string, error?: string) => ({\n message: error ?? t('validation.confirm.mismatch', { fieldName }),\n path: ['confirm'],\n }),\n };\n}\n\n// =============================================================================\n// PROVIDER COMPONENT\n// =============================================================================\n\n/**\n * Provider props.\n */\nexport interface SchemaProviderProps extends SchemaProviderConfig {\n children: ReactNode;\n}\n\n/**\n * SchemaProvider - Provides i18n-aware schema validation context.\n *\n * @example\n * ```tsx\n * // With i18next\n * import { useTranslation } from 'react-i18next';\n *\n * function App() {\n * const { t, i18n } = useTranslation();\n *\n * return (\n * <SchemaProvider t={t} locale={i18n.language}>\n * <MyForm />\n * </SchemaProvider>\n * );\n * }\n *\n * // In form component\n * function MyForm() {\n * const { schema } = useSchema();\n *\n * const formSchema = z.object({\n * email: schema.email(),\n * password: schema.password(),\n * });\n *\n * // ... form implementation\n * }\n * ```\n */\nexport function SchemaProvider({ children, t: providedT, locale = 'en', messages = {} }: SchemaProviderProps) {\n // Create translation function with fallbacks\n const t: TranslateFunction = useMemo(() => {\n if (providedT) {\n // Wrap provided t() to include custom messages as fallback\n return (key: string, options?: Record<string, unknown>) => {\n const result = providedT(key, options);\n // If translation returns the key (not found), use custom messages or defaults\n if (result === key) {\n const customMessage = messages[key];\n if (customMessage) {\n return interpolate(customMessage, options);\n }\n const defaultMessage = DEFAULT_MESSAGES[key];\n if (defaultMessage) {\n return interpolate(defaultMessage, options);\n }\n }\n return result;\n };\n }\n\n // No i18n library provided - use custom messages or defaults\n return (key: string, options?: Record<string, unknown>) => {\n const message = messages[key] ?? DEFAULT_MESSAGES[key] ?? key;\n return interpolate(message, options);\n };\n }, [providedT, messages]);\n\n // Create schema utilities with translated messages\n const schema = useMemo(() => createTranslatedSchemaUtils(t), [t]);\n\n const value = useMemo<SchemaContextValue>(() => ({ t, locale, schema }), [t, locale, schema]);\n\n return <SchemaContext.Provider value={value}>{children}</SchemaContext.Provider>;\n}\n\n// =============================================================================\n// HOOK\n// =============================================================================\n\n/**\n * Hook to access schema context.\n *\n * @throws Error if used outside SchemaProvider\n *\n * @example\n * ```tsx\n * function MyForm() {\n * const { schema, t } = useSchema();\n *\n * const formSchema = z.object({\n * email: schema.email(),\n * name: z.string().min(1, { message: t('validation.required') }),\n * });\n *\n * // ... use formSchema with react-hook-form\n * }\n * ```\n */\nexport function useSchema(): SchemaContextValue {\n const context = useContext(SchemaContext);\n\n if (!context) {\n throw new Error('useSchema must be used within a SchemaProvider');\n }\n\n return context;\n}\n\n/**\n * Hook to access schema context safely (returns null if not in provider).\n */\nexport function useSchemaOptional(): SchemaContextValue | null {\n return useContext(SchemaContext);\n}\n\n// =============================================================================\n// UTILITIES\n// =============================================================================\n\n/**\n * Simple string interpolation for error messages.\n * Replaces {{key}} with values from options.\n */\nfunction interpolate(message: string, options?: Record<string, unknown>): string {\n if (!options) return message;\n\n return message.replace(/\\{\\{(\\w+)\\}\\}/g, (_, key) => {\n const value = options[key];\n return value !== undefined ? String(value) : `{{${key}}}`;\n });\n}\n\n// =============================================================================\n// STANDALONE FACTORY (for use without provider)\n// =============================================================================\n\n/**\n * Create translated schema utilities without provider.\n * Useful for server-side validation or standalone usage.\n *\n * @example\n * ```ts\n * // Server-side validation\n * const t = (key: string) => translations[key] ?? key;\n * const schema = createSchemaUtils(t);\n *\n * const userSchema = z.object({\n * email: schema.email(),\n * });\n * ```\n */\nexport function createSchemaUtils(t?: TranslateFunction): ReturnType<typeof createTranslatedSchemaUtils> {\n const translateFn: TranslateFunction = t ?? ((key) => DEFAULT_MESSAGES[key] ?? key);\n return createTranslatedSchemaUtils(translateFn);\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/forms/schema-utils.ts","../../src/forms/schema-provider.tsx"],"names":["z","date"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Schema Utilities\n *\n * Pre-built Zod schema helpers for common form field validations.\n * Designed to work seamlessly with React Hook Form + Zod resolver.\n *\n * Features:\n * - Type-safe schema builders\n * - Customizable error messages with i18n support\n * - Common field validations (email, phone, date, file, etc.)\n * - Nullable input handling\n * - Slider range validation\n * - Rich text editor validation\n *\n * @module @omnitron-dev/prism/forms\n */\n\nimport * as z from 'zod';\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\n/**\n * Common error message configuration.\n */\nexport interface SchemaErrorMessages {\n /** Error message when field is required but empty */\n required?: string;\n /** Error message when field format is invalid */\n invalid?: string;\n}\n\n/**\n * Options for file validation.\n */\nexport interface FileSchemaOptions extends SchemaErrorMessages {\n /** Maximum file size in bytes */\n maxSize?: number;\n /** Allowed MIME types */\n accept?: string[];\n}\n\n/**\n * Options for slider range validation.\n */\nexport interface SliderRangeOptions extends SchemaErrorMessages {\n /** Minimum value */\n min: number;\n /** Maximum value */\n max: number;\n}\n\n// =============================================================================\n// DEFAULT ERROR MESSAGES\n// =============================================================================\n\nconst DEFAULT_ERRORS = {\n email: {\n required: 'Email is required',\n invalid: 'Email must be a valid email address',\n },\n phone: {\n required: 'Phone number is required',\n invalid: 'Invalid phone number',\n },\n date: {\n required: 'Date is required',\n invalid: 'Invalid date',\n },\n file: {\n required: 'File is required',\n invalid: 'Invalid file',\n tooLarge: 'File is too large',\n invalidType: 'File type not allowed',\n },\n boolean: {\n required: 'This field is required',\n },\n editor: {\n required: 'Content is required',\n },\n nullable: {\n required: 'This field is required',\n },\n} as const;\n\n// =============================================================================\n// SCHEMA UTILS\n// =============================================================================\n\n/**\n * Pre-built Zod schema helpers for common form validations.\n *\n * @example\n * ```tsx\n * import { z } from 'zod';\n * import { schemaUtils } from '@omnitron-dev/prism/forms';\n *\n * // Define form schema\n * const UserSchema = z.object({\n * email: schemaUtils.email(),\n * phone: schemaUtils.phone(),\n * birthDate: schemaUtils.date(),\n * avatar: schemaUtils.file(),\n * agreeToTerms: schemaUtils.boolean({ error: 'You must accept the terms' }),\n * bio: schemaUtils.editor(),\n * });\n *\n * // With custom error messages\n * const CustomSchema = z.object({\n * email: schemaUtils.email({\n * required: 'Please enter your email',\n * invalid: 'That email doesn\\'t look right',\n * }),\n * });\n * ```\n */\nexport const schemaUtils = {\n /**\n * Email validation schema.\n * Validates format and provides clear error messages.\n *\n * @example\n * ```tsx\n * const schema = z.object({\n * email: schemaUtils.email(),\n * });\n * ```\n */\n email: (errors?: SchemaErrorMessages) =>\n z\n .string()\n .min(1, { message: errors?.required ?? DEFAULT_ERRORS.email.required })\n .max(320, { message: 'Email address is too long' })\n .email({ message: errors?.invalid ?? DEFAULT_ERRORS.email.invalid }),\n\n /**\n * Phone number validation schema.\n * Basic validation with optional custom validator.\n *\n * @example\n * ```tsx\n * const schema = z.object({\n * phone: schemaUtils.phone({\n * isValid: (val) => /^\\+?[1-9]\\d{1,14}$/.test(val),\n * }),\n * });\n * ```\n */\n phone: (options?: SchemaErrorMessages & { isValid?: (val: string) => boolean }) => {\n let schema = z.string().min(1, { message: options?.required ?? DEFAULT_ERRORS.phone.required });\n\n if (options?.isValid) {\n schema = schema.refine(options.isValid, {\n message: options?.invalid ?? DEFAULT_ERRORS.phone.invalid,\n });\n }\n\n return schema;\n },\n\n /**\n * Date validation schema.\n * Works with Date objects, timestamps, and ISO strings.\n * Compatible with date pickers.\n *\n * @example\n * ```tsx\n * const schema = z.object({\n * birthDate: schemaUtils.date(),\n * appointmentTime: schemaUtils.date({ required: 'Please select a time' }),\n * });\n * ```\n */\n date: (errors?: SchemaErrorMessages) =>\n z\n .union([z.string(), z.number(), z.date(), z.null()])\n .refine((val) => val !== null && val !== '' && val !== undefined, {\n message: errors?.required ?? DEFAULT_ERRORS.date.required,\n })\n .refine(\n (val) => {\n // At this point, val passed the required check (non-null, non-empty, defined)\n if (val instanceof Date) return Number.isFinite(val.getTime());\n const date = new Date(val as string | number);\n return Number.isFinite(date.getTime());\n },\n { message: errors?.invalid ?? DEFAULT_ERRORS.date.invalid }\n ),\n\n /**\n * Optional date schema (nullable).\n * For date fields that aren't required.\n */\n dateOptional: (errors?: SchemaErrorMessages) =>\n z\n .union([z.string(), z.number(), z.date(), z.null()])\n .refine(\n (val) => {\n if (val === null || val === '' || val === undefined) return true;\n if (val instanceof Date) return Number.isFinite(val.getTime());\n const date = new Date(val as string | number);\n return Number.isFinite(date.getTime());\n },\n { message: errors?.invalid ?? DEFAULT_ERRORS.date.invalid }\n )\n .nullable(),\n\n /**\n * Rich text editor validation schema.\n * Treats empty paragraphs as empty content.\n *\n * @example\n * ```tsx\n * const schema = z.object({\n * description: schemaUtils.editor(),\n * });\n * ```\n */\n editor: (error?: string) =>\n z.string().refine(\n (val) => {\n const cleaned = val.trim();\n // Common empty editor states\n return cleaned !== '' && cleaned !== '<p></p>' && cleaned !== '<p><br></p>' && cleaned !== '<p><br/></p>';\n },\n { message: error ?? DEFAULT_ERRORS.editor.required }\n ),\n\n /**\n * Boolean validation schema.\n * For checkboxes/switches that must be true (e.g., terms acceptance).\n *\n * @example\n * ```tsx\n * const schema = z.object({\n * agreeToTerms: schemaUtils.boolean({ error: 'You must accept the terms' }),\n * });\n * ```\n */\n boolean: (options?: { error?: string }) =>\n z.boolean().refine((val) => val === true, {\n message: options?.error ?? DEFAULT_ERRORS.boolean.required,\n }),\n\n /**\n * Optional boolean schema.\n * For optional checkboxes.\n */\n booleanOptional: () => z.boolean().optional(),\n\n /**\n * Nullable input wrapper.\n * Wraps any schema to handle null values as required errors.\n *\n * @example\n * ```tsx\n * const schema = z.object({\n * country: schemaUtils.nullableInput(\n * z.string().min(1),\n * { error: 'Please select a country' }\n * ),\n * });\n * ```\n */\n nullableInput: <T extends z.ZodTypeAny>(schema: T, options?: { error?: string }) =>\n schema.nullable().refine((val) => val !== null && val !== undefined, {\n message: options?.error ?? DEFAULT_ERRORS.nullable.required,\n }),\n\n /**\n * Single file upload validation.\n * Supports File objects and URL strings (for existing files).\n *\n * @example\n * ```tsx\n * const schema = z.object({\n * avatar: schemaUtils.file(),\n * document: schemaUtils.file({\n * maxSize: 5 * 1024 * 1024, // 5MB\n * accept: ['application/pdf'],\n * }),\n * });\n * ```\n */\n file: (options?: FileSchemaOptions) =>\n z\n .union([z.instanceof(File), z.string(), z.null()])\n .refine(\n (val) => {\n if (val === null || val === undefined) return false;\n if (typeof val === 'string') return val.length > 0;\n return true;\n },\n { message: options?.required ?? DEFAULT_ERRORS.file.required }\n )\n .refine(\n (val) => {\n if (!options?.maxSize || typeof val === 'string' || val === null) return true;\n return (val as File).size <= options.maxSize;\n },\n { message: options?.invalid ?? DEFAULT_ERRORS.file.tooLarge }\n )\n .refine(\n (val) => {\n if (!options?.accept || typeof val === 'string' || val === null) return true;\n return options.accept.includes((val as File).type);\n },\n { message: options?.invalid ?? DEFAULT_ERRORS.file.invalidType }\n ),\n\n /**\n * Optional single file upload.\n */\n fileOptional: (options?: Omit<FileSchemaOptions, 'required'>) =>\n z\n .union([z.instanceof(File), z.string(), z.null()])\n .refine(\n (val) => {\n if (!options?.maxSize || typeof val === 'string' || val === null || val === undefined) return true;\n return (val as File).size <= options.maxSize;\n },\n { message: options?.invalid ?? DEFAULT_ERRORS.file.tooLarge }\n )\n .refine(\n (val) => {\n if (!options?.accept || typeof val === 'string' || val === null || val === undefined) return true;\n return options.accept.includes((val as File).type);\n },\n { message: options?.invalid ?? DEFAULT_ERRORS.file.invalidType }\n )\n .nullable(),\n\n /**\n * Multiple file upload validation.\n *\n * @example\n * ```tsx\n * const schema = z.object({\n * images: schemaUtils.files({ minFiles: 1, error: 'Upload at least one image' }),\n * });\n * ```\n */\n files: (options?: { error?: string; minFiles?: number }) =>\n z\n .array(z.union([z.instanceof(File), z.string()]))\n .min(options?.minFiles ?? 1, { message: options?.error ?? DEFAULT_ERRORS.file.required }),\n\n /**\n * Slider range validation.\n * For dual-thumb sliders with [min, max] value.\n *\n * @example\n * ```tsx\n * const schema = z.object({\n * priceRange: schemaUtils.sliderRange({ min: 0, max: 1000 }),\n * });\n * ```\n */\n sliderRange: (options: SliderRangeOptions) =>\n z.tuple([z.number(), z.number()]).refine(([min, max]) => min >= options.min && max <= options.max && min <= max, {\n message: options?.invalid ?? `Range must be between ${options.min} and ${options.max}`,\n }),\n\n /**\n * URL validation schema.\n */\n url: (errors?: SchemaErrorMessages) =>\n z\n .string()\n .min(1, { message: errors?.required ?? 'URL is required' })\n .url({ message: errors?.invalid ?? 'Invalid URL' }),\n\n /**\n * Optional URL schema.\n */\n urlOptional: (errors?: SchemaErrorMessages) =>\n z\n .string()\n .url({ message: errors?.invalid ?? 'Invalid URL' })\n .optional()\n .or(z.literal('')),\n\n /**\n * Password validation with strength requirements.\n */\n password: (options?: {\n minLength?: number;\n requireUppercase?: boolean;\n requireLowercase?: boolean;\n requireNumber?: boolean;\n requireSpecial?: boolean;\n error?: string;\n }) => {\n const {\n minLength = 8,\n requireUppercase = true,\n requireLowercase = true,\n requireNumber = true,\n requireSpecial = false,\n } = options ?? {};\n\n return z\n .string()\n .min(minLength, { message: `Password must be at least ${minLength} characters` })\n .refine((val) => val.trim().length > 0, {\n message: 'Password must not be only whitespace',\n })\n .refine((val) => !requireUppercase || /[A-Z]/.test(val), {\n message: 'Password must contain at least one uppercase letter',\n })\n .refine((val) => !requireLowercase || /[a-z]/.test(val), {\n message: 'Password must contain at least one lowercase letter',\n })\n .refine((val) => !requireNumber || /[0-9]/.test(val), {\n message: 'Password must contain at least one number',\n })\n .refine((val) => !requireSpecial || /[!@#$%^&*(),.?\":{}|<>]/.test(val), {\n message: 'Password must contain at least one special character',\n });\n },\n\n /**\n * Confirmation field (e.g., confirm password).\n * Use with z.object().refine() for cross-field validation.\n */\n confirm: (fieldName: string, error?: string) => ({\n message: error ?? `${fieldName} does not match`,\n path: ['confirm'],\n }),\n};\n\n// =============================================================================\n// TESTING UTILITY\n// =============================================================================\n\n/**\n * Test schema validation with multiple values.\n * Useful for development and debugging.\n *\n * @example\n * ```ts\n * testSchema(schemaUtils.email(), [\n * 'valid@email.com',\n * 'invalid-email',\n * '',\n * null,\n * ]);\n * ```\n */\n/**\n * Test results from schema validation.\n */\nexport interface SchemaTestResult {\n value: unknown;\n success: boolean;\n data?: unknown;\n errors?: string[];\n}\n\n/**\n * Test a schema against multiple values.\n * Returns structured results instead of logging to console.\n * Use testSchemaDebug for console output during development.\n */\nexport function testSchema<T extends z.ZodTypeAny>(schema: T, values: unknown[]): SchemaTestResult[] {\n return values.map((value) => {\n const result = schema.safeParse(value);\n if (result.success) {\n return { value, success: true, data: result.data };\n }\n return {\n value,\n success: false,\n errors: result.error.issues.map((issue) => issue.message),\n };\n });\n}\n\n/**\n * Test a schema with console output (development only).\n * This function does nothing in production builds.\n *\n * @example\n * ```ts\n * testSchemaDebug(schemaUtils.email(), [\n * 'valid@email.com',\n * 'invalid-email',\n * '',\n * null,\n * ]);\n * ```\n */\nexport function testSchemaDebug<T extends z.ZodTypeAny>(schema: T, values: unknown[]): void {\n // Only run in development\n if (typeof process !== 'undefined' && process.env?.NODE_ENV === 'production') {\n return;\n }\n\n const colors = {\n green: (txt: string) => `\\x1b[32m${txt}\\x1b[0m`,\n red: (txt: string) => `\\x1b[31m${txt}\\x1b[0m`,\n gray: (txt: string) => `\\x1b[90m${txt}\\x1b[0m`,\n };\n\n console.log('\\n--- Schema Test Results ---\\n');\n\n values.forEach((value) => {\n const result = schema.safeParse(value);\n const type = colors.gray(`(${typeof value})`);\n const serialized = JSON.stringify(value);\n\n if (result.success) {\n console.log(`${colors.green('✓')} ${serialized} ${type}`);\n\n console.log(` Result: ${JSON.stringify(result.data)}`);\n } else {\n console.log(`${colors.red('✗')} ${serialized} ${type}`);\n result.error.issues.forEach((issue) => {\n console.log(` Error: ${issue.message}`);\n });\n }\n\n console.log('');\n });\n}\n","'use client';\n\n/**\n * Schema Provider\n *\n * Provides i18n-aware schema validation with customizable error messages.\n * Integrates with any i18n library (i18next, react-intl, etc.).\n *\n * @module @omnitron-dev/prism/forms\n */\n\nimport { createContext, useContext, useMemo, type ReactNode } from 'react';\nimport * as z from 'zod';\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\n/**\n * Translation function type.\n * Compatible with i18next t() function signature.\n */\nexport type TranslateFunction = (key: string, options?: Record<string, unknown>) => string;\n\n/**\n * Default translation keys for schema error messages.\n */\nexport interface SchemaTranslationKeys {\n // Required fields\n 'validation.required': string;\n 'validation.email.required': string;\n 'validation.email.invalid': string;\n 'validation.phone.required': string;\n 'validation.phone.invalid': string;\n 'validation.date.required': string;\n 'validation.date.invalid': string;\n 'validation.file.required': string;\n 'validation.file.tooLarge': string;\n 'validation.file.invalidType': string;\n 'validation.boolean.required': string;\n 'validation.editor.required': string;\n 'validation.url.required': string;\n 'validation.url.invalid': string;\n 'validation.password.minLength': string;\n 'validation.password.uppercase': string;\n 'validation.password.lowercase': string;\n 'validation.password.number': string;\n 'validation.password.special': string;\n 'validation.confirm.mismatch': string;\n // Array of all keys\n [key: string]: string;\n}\n\n/**\n * Schema provider configuration.\n */\nexport interface SchemaProviderConfig {\n /**\n * Translation function from your i18n library.\n * If not provided, keys will be used as-is.\n */\n t?: TranslateFunction;\n /**\n * Default locale for error messages.\n * @default 'en'\n */\n locale?: string;\n /**\n * Custom error message overrides.\n */\n messages?: Partial<SchemaTranslationKeys>;\n}\n\n/**\n * Schema context value.\n */\nexport interface SchemaContextValue {\n /**\n * Translate a validation key.\n */\n t: TranslateFunction;\n /**\n * Current locale.\n */\n locale: string;\n /**\n * Get schema helpers with translated messages.\n */\n schema: ReturnType<typeof createTranslatedSchemaUtils>;\n}\n\n// =============================================================================\n// DEFAULT MESSAGES\n// =============================================================================\n\n/**\n * Default English error messages.\n */\nconst DEFAULT_MESSAGES: SchemaTranslationKeys = {\n 'validation.required': 'This field is required',\n 'validation.email.required': 'Email is required',\n 'validation.email.invalid': 'Please enter a valid email address',\n 'validation.phone.required': 'Phone number is required',\n 'validation.phone.invalid': 'Please enter a valid phone number',\n 'validation.date.required': 'Date is required',\n 'validation.date.invalid': 'Please enter a valid date',\n 'validation.file.required': 'File is required',\n 'validation.file.tooLarge': 'File size exceeds the maximum allowed',\n 'validation.file.invalidType': 'File type is not supported',\n 'validation.boolean.required': 'This field must be accepted',\n 'validation.editor.required': 'Content is required',\n 'validation.url.required': 'URL is required',\n 'validation.url.invalid': 'Please enter a valid URL',\n 'validation.password.minLength': 'Password must be at least {{minLength}} characters',\n 'validation.password.uppercase': 'Password must contain at least one uppercase letter',\n 'validation.password.lowercase': 'Password must contain at least one lowercase letter',\n 'validation.password.number': 'Password must contain at least one number',\n 'validation.password.special': 'Password must contain at least one special character',\n 'validation.confirm.mismatch': '{{fieldName}} does not match',\n};\n\n// =============================================================================\n// CONTEXT\n// =============================================================================\n\nconst SchemaContext = createContext<SchemaContextValue | null>(null);\n\n// =============================================================================\n// TRANSLATED SCHEMA UTILS FACTORY\n// =============================================================================\n\n/**\n * Create schema utilities with translated error messages.\n */\nfunction createTranslatedSchemaUtils(t: TranslateFunction) {\n return {\n /**\n * Email validation with i18n messages.\n */\n email: (options?: { required?: string; invalid?: string }) =>\n z\n .string()\n .min(1, { message: options?.required ?? t('validation.email.required') })\n .email({ message: options?.invalid ?? t('validation.email.invalid') }),\n\n /**\n * Phone validation with i18n messages.\n */\n phone: (options?: { required?: string; invalid?: string; isValid?: (val: string) => boolean }) => {\n let schema = z.string().min(1, { message: options?.required ?? t('validation.phone.required') });\n\n if (options?.isValid) {\n schema = schema.refine(options.isValid, {\n message: options?.invalid ?? t('validation.phone.invalid'),\n });\n }\n\n return schema;\n },\n\n /**\n * Date validation with i18n messages.\n */\n date: (options?: { required?: string; invalid?: string }) =>\n z\n .union([z.string(), z.number(), z.date(), z.null()])\n .refine((val) => val !== null && val !== '' && val !== undefined, {\n message: options?.required ?? t('validation.date.required'),\n })\n .refine(\n (val) => {\n if (val === null || val === '' || val === undefined) return true;\n const date = new Date(val as string | number | Date);\n return !isNaN(date.getTime());\n },\n { message: options?.invalid ?? t('validation.date.invalid') }\n ),\n\n /**\n * Optional date schema.\n */\n dateOptional: (options?: { invalid?: string }) =>\n z\n .union([z.string(), z.number(), z.date(), z.null()])\n .refine(\n (val) => {\n if (val === null || val === '' || val === undefined) return true;\n const date = new Date(val as string | number | Date);\n return !isNaN(date.getTime());\n },\n { message: options?.invalid ?? t('validation.date.invalid') }\n )\n .nullable(),\n\n /**\n * Boolean (checkbox) validation with i18n messages.\n */\n boolean: (options?: { error?: string }) =>\n z.boolean().refine((val) => val === true, {\n message: options?.error ?? t('validation.boolean.required'),\n }),\n\n /**\n * Optional boolean schema.\n */\n booleanOptional: () => z.boolean().optional(),\n\n /**\n * Rich text editor validation with i18n messages.\n */\n editor: (options?: { error?: string }) =>\n z.string().refine(\n (val) => {\n const cleaned = val.trim();\n return cleaned !== '' && cleaned !== '<p></p>' && cleaned !== '<p><br></p>' && cleaned !== '<p><br/></p>';\n },\n { message: options?.error ?? t('validation.editor.required') }\n ),\n\n /**\n * File validation with i18n messages.\n */\n file: (options?: {\n required?: string;\n tooLarge?: string;\n invalidType?: string;\n maxSize?: number;\n accept?: string[];\n }) =>\n z\n .union([z.instanceof(File), z.string(), z.null()])\n .refine(\n (val) => {\n if (val === null || val === undefined) return false;\n if (typeof val === 'string') return val.length > 0;\n return true;\n },\n { message: options?.required ?? t('validation.file.required') }\n )\n .refine(\n (val) => {\n if (!options?.maxSize || typeof val === 'string' || val === null) return true;\n return (val as File).size <= options.maxSize;\n },\n { message: options?.tooLarge ?? t('validation.file.tooLarge') }\n )\n .refine(\n (val) => {\n if (!options?.accept || typeof val === 'string' || val === null) return true;\n return options.accept.includes((val as File).type);\n },\n { message: options?.invalidType ?? t('validation.file.invalidType') }\n ),\n\n /**\n * Optional file schema.\n */\n fileOptional: (options?: { tooLarge?: string; invalidType?: string; maxSize?: number; accept?: string[] }) =>\n z\n .union([z.instanceof(File), z.string(), z.null()])\n .refine(\n (val) => {\n if (!options?.maxSize || typeof val === 'string' || val === null || val === undefined) return true;\n return (val as File).size <= options.maxSize;\n },\n { message: options?.tooLarge ?? t('validation.file.tooLarge') }\n )\n .refine(\n (val) => {\n if (!options?.accept || typeof val === 'string' || val === null || val === undefined) return true;\n return options.accept.includes((val as File).type);\n },\n { message: options?.invalidType ?? t('validation.file.invalidType') }\n )\n .nullable(),\n\n /**\n * Multiple files validation.\n */\n files: (options?: { error?: string; minFiles?: number }) =>\n z\n .array(z.union([z.instanceof(File), z.string()]))\n .min(options?.minFiles ?? 1, { message: options?.error ?? t('validation.file.required') }),\n\n /**\n * URL validation with i18n messages.\n */\n url: (options?: { required?: string; invalid?: string }) =>\n z\n .string()\n .min(1, { message: options?.required ?? t('validation.url.required') })\n .url({ message: options?.invalid ?? t('validation.url.invalid') }),\n\n /**\n * Optional URL schema.\n */\n urlOptional: (options?: { invalid?: string }) =>\n z\n .string()\n .url({ message: options?.invalid ?? t('validation.url.invalid') })\n .optional()\n .or(z.literal('')),\n\n /**\n * Password validation with strength requirements.\n */\n password: (options?: {\n minLength?: number;\n requireUppercase?: boolean;\n requireLowercase?: boolean;\n requireNumber?: boolean;\n requireSpecial?: boolean;\n }) => {\n const {\n minLength = 8,\n requireUppercase = true,\n requireLowercase = true,\n requireNumber = true,\n requireSpecial = false,\n } = options ?? {};\n\n return z\n .string()\n .min(minLength, { message: t('validation.password.minLength', { minLength }) })\n .refine((val) => !requireUppercase || /[A-Z]/.test(val), {\n message: t('validation.password.uppercase'),\n })\n .refine((val) => !requireLowercase || /[a-z]/.test(val), {\n message: t('validation.password.lowercase'),\n })\n .refine((val) => !requireNumber || /[0-9]/.test(val), {\n message: t('validation.password.number'),\n })\n .refine((val) => !requireSpecial || /[!@#$%^&*(),.?\":{}|<>]/.test(val), {\n message: t('validation.password.special'),\n });\n },\n\n /**\n * Nullable input wrapper.\n */\n nullableInput: <T extends z.ZodTypeAny>(schema: T, options?: { error?: string }) =>\n schema\n .nullable()\n .refine((val) => val !== null && val !== undefined, { message: options?.error ?? t('validation.required') }),\n\n /**\n * Slider range validation.\n */\n sliderRange: (options: { min: number; max: number; invalid?: string }) =>\n z.tuple([z.number(), z.number()]).refine(([min, max]) => min >= options.min && max <= options.max && min <= max, {\n message: options?.invalid ?? `Range must be between ${options.min} and ${options.max}`,\n }),\n\n /**\n * Required string with i18n message.\n */\n required: (options?: { error?: string }) =>\n z.string().min(1, { message: options?.error ?? t('validation.required') }),\n\n /**\n * Confirmation field helper.\n */\n confirm: (fieldName: string, error?: string) => ({\n message: error ?? t('validation.confirm.mismatch', { fieldName }),\n path: ['confirm'],\n }),\n };\n}\n\n// =============================================================================\n// PROVIDER COMPONENT\n// =============================================================================\n\n/**\n * Provider props.\n */\nexport interface SchemaProviderProps extends SchemaProviderConfig {\n children: ReactNode;\n}\n\n/**\n * SchemaProvider - Provides i18n-aware schema validation context.\n *\n * @example\n * ```tsx\n * // With i18next\n * import { useTranslation } from 'react-i18next';\n *\n * function App() {\n * const { t, i18n } = useTranslation();\n *\n * return (\n * <SchemaProvider t={t} locale={i18n.language}>\n * <MyForm />\n * </SchemaProvider>\n * );\n * }\n *\n * // In form component\n * function MyForm() {\n * const { schema } = useSchema();\n *\n * const formSchema = z.object({\n * email: schema.email(),\n * password: schema.password(),\n * });\n *\n * // ... form implementation\n * }\n * ```\n */\nexport function SchemaProvider({ children, t: providedT, locale = 'en', messages = {} }: SchemaProviderProps) {\n // Create translation function with fallbacks\n const t: TranslateFunction = useMemo(() => {\n if (providedT) {\n // Wrap provided t() to include custom messages as fallback\n return (key: string, options?: Record<string, unknown>) => {\n const result = providedT(key, options);\n // If translation returns the key (not found), use custom messages or defaults\n if (result === key) {\n const customMessage = messages[key];\n if (customMessage) {\n return interpolate(customMessage, options);\n }\n const defaultMessage = DEFAULT_MESSAGES[key];\n if (defaultMessage) {\n return interpolate(defaultMessage, options);\n }\n }\n return result;\n };\n }\n\n // No i18n library provided - use custom messages or defaults\n return (key: string, options?: Record<string, unknown>) => {\n const message = messages[key] ?? DEFAULT_MESSAGES[key] ?? key;\n return interpolate(message, options);\n };\n }, [providedT, messages]);\n\n // Create schema utilities with translated messages\n const schema = useMemo(() => createTranslatedSchemaUtils(t), [t]);\n\n const value = useMemo<SchemaContextValue>(() => ({ t, locale, schema }), [t, locale, schema]);\n\n return <SchemaContext.Provider value={value}>{children}</SchemaContext.Provider>;\n}\n\n// =============================================================================\n// HOOK\n// =============================================================================\n\n/**\n * Hook to access schema context.\n *\n * @throws Error if used outside SchemaProvider\n *\n * @example\n * ```tsx\n * function MyForm() {\n * const { schema, t } = useSchema();\n *\n * const formSchema = z.object({\n * email: schema.email(),\n * name: z.string().min(1, { message: t('validation.required') }),\n * });\n *\n * // ... use formSchema with react-hook-form\n * }\n * ```\n */\nexport function useSchema(): SchemaContextValue {\n const context = useContext(SchemaContext);\n\n if (!context) {\n throw new Error('useSchema must be used within a SchemaProvider');\n }\n\n return context;\n}\n\n/**\n * Hook to access schema context safely (returns null if not in provider).\n */\nexport function useSchemaOptional(): SchemaContextValue | null {\n return useContext(SchemaContext);\n}\n\n// =============================================================================\n// UTILITIES\n// =============================================================================\n\n/**\n * Simple string interpolation for error messages.\n * Replaces {{key}} with values from options.\n */\nfunction interpolate(message: string, options?: Record<string, unknown>): string {\n if (!options) return message;\n\n return message.replace(/\\{\\{(\\w+)\\}\\}/g, (_, key) => {\n const value = options[key];\n return value !== undefined ? String(value) : `{{${key}}}`;\n });\n}\n\n// =============================================================================\n// STANDALONE FACTORY (for use without provider)\n// =============================================================================\n\n/**\n * Create translated schema utilities without provider.\n * Useful for server-side validation or standalone usage.\n *\n * @example\n * ```ts\n * // Server-side validation\n * const t = (key: string) => translations[key] ?? key;\n * const schema = createSchemaUtils(t);\n *\n * const userSchema = z.object({\n * email: schema.email(),\n * });\n * ```\n */\nexport function createSchemaUtils(t?: TranslateFunction): ReturnType<typeof createTranslatedSchemaUtils> {\n const translateFn: TranslateFunction = t ?? ((key) => DEFAULT_MESSAGES[key] ?? key);\n return createTranslatedSchemaUtils(translateFn);\n}\n"]}
|
package/dist/hooks/index.js
CHANGED
|
@@ -1,14 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
export {
|
|
3
|
-
export {
|
|
4
|
-
|
|
5
|
-
import '../chunk-
|
|
6
|
-
import '../chunk-
|
|
7
|
-
import '../chunk-
|
|
8
|
-
import '../chunk-
|
|
9
|
-
import '../chunk-
|
|
10
|
-
|
|
11
|
-
import '../chunk-
|
|
12
|
-
|
|
1
|
+
"use client";
|
|
2
|
+
export { useArray, useAsync, useAsyncFn, useBackToTop, useBreakpoint, useBreakpointChecks, useClientRect, useConfigFromQuery, useCookies, useCountdownDate, useCountdownSeconds, useDoubleClick, useEnterKey, useEscapeKey, useFocusTrap, useImageDimensions, useInfiniteScroll, useIntersectionObserver, useIsomorphicLayoutEffect, useKeyboardShortcut, useLazyQuery, useMultipleImageDimensions, useMutation, useOnlineStatus, usePasswordVisibility, usePopoverHover, useResponsiveQuery, useScrollLock, useScrollOffsetTop, useScrollPosition, useScrollToTop, useSessionStorage, useThrottle, useThrottleCallback, useUpdateEffect, useUpdateLayoutEffect, useWindowSize } from '../chunk-DHTYHUYI.js';
|
|
3
|
+
export { usePopover } from '../chunk-VUKOT432.js';
|
|
4
|
+
export { useBreakpoints, useClickOutside, useCopyToClipboard, useCountdown, useDebounce, useDebounceCallback, useEventListener, useInterval, useIsClient, useLocalStorage, useMuiMediaQuery as useMediaQuery, useMounted, useMultiSelect, usePrevious, useSetState, useTimeout } from '../chunk-UEINJFLS.js';
|
|
5
|
+
import '../chunk-ZRJYQN6Y.js';
|
|
6
|
+
import '../chunk-RSWVYIXK.js';
|
|
7
|
+
import '../chunk-TZHWYT34.js';
|
|
8
|
+
import '../chunk-TZWHELY4.js';
|
|
9
|
+
import '../chunk-ZYI3MHLE.js';
|
|
10
|
+
import '../chunk-NJM5AVBM.js';
|
|
11
|
+
import '../chunk-IRYU3NTG.js';
|
|
12
|
+
export { useBoolean } from '../chunk-4R7EZ7GQ.js';
|
|
13
|
+
import '../chunk-VQVVHMPG.js';
|
|
14
|
+
import '../chunk-D5J3KW6Q.js';
|
|
13
15
|
//# sourceMappingURL=index.js.map
|
|
14
16
|
//# sourceMappingURL=index.js.map
|
package/dist/hooks/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":";","file":"index.js"}
|
|
@@ -33,6 +33,8 @@ export interface UseConfigFromQueryOptions {
|
|
|
33
33
|
onConfigChange?: (config: UrlConfigValues) => void;
|
|
34
34
|
/** Enable two-way sync (updates URL when config changes) */
|
|
35
35
|
syncToUrl?: boolean;
|
|
36
|
+
/** Settings to mirror when syncToUrl is enabled. A shared URL takes precedence on mount. */
|
|
37
|
+
values?: UrlConfigValues;
|
|
36
38
|
}
|
|
37
39
|
/**
|
|
38
40
|
* Return type for useConfigFromQuery hook.
|