@tempots/beatui 0.82.1 → 0.83.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ar-CBrjAlIY.cjs +1 -0
- package/dist/ar-DjMvIww5.js +175 -0
- package/dist/{ar-NCCPhOpI.js → ar-DwDxAANU.js} +16 -1
- package/dist/ar-kZBzg02I.cjs +1 -0
- package/dist/auth/index.cjs.js +1 -1
- package/dist/auth/index.es.js +33 -32
- package/dist/{auth-divider-Wr-S16kF.js → auth-divider-C3_CgC0l.js} +589 -569
- package/dist/auth-divider-C4WTL71M.cjs +1 -0
- package/dist/beatui.css +5678 -1438
- package/dist/beatui.tailwind.css +5662 -1422
- package/dist/better-auth/index.cjs.js +1 -1
- package/dist/better-auth/index.es.js +18 -31
- package/dist/{colors-B2yrgHSW.cjs → colors-BI0YhONJ.cjs} +1 -1
- package/dist/{colors-DPo9GEJR.js → colors-BmLYKmoH.js} +38 -30
- package/dist/de-B03SM9eF.cjs +1 -0
- package/dist/{de-BVK2MkCk.js → de-CSGSC0xX.js} +18 -3
- package/dist/de-CrBw41po.cjs +1 -0
- package/dist/{de-f2xcEb34.js → de-wChFYqM4.js} +79 -5
- package/dist/deep-merge-CmQoIYPC.js +1689 -0
- package/dist/deep-merge-UghuPcyW.cjs +1 -0
- package/dist/{duration-input-B9UNmUCh.cjs → duration-input-BJzKgI15.cjs} +1 -1
- package/dist/{duration-input-DqcJbxKD.js → duration-input-DaB6s0rL.js} +4 -4
- package/dist/editor-toolbar-group-BslfdazC.js +32 -0
- package/dist/editor-toolbar-group-_V1rDM-1.cjs +1 -0
- package/dist/{es-BxBeTRCv.cjs → es-BRa0hV-7.cjs} +1 -1
- package/dist/es-Ca5xT3NE.cjs +1 -0
- package/dist/es-CmPF3IGl.js +175 -0
- package/dist/{es-BQS8PL9j.js → es-dR46FTMF.js} +16 -1
- package/dist/{fa-DxPseW3g.cjs → fa-BxCSKn9j.cjs} +1 -1
- package/dist/fa-D696e75R.js +175 -0
- package/dist/fa-DhZJYuC6.cjs +1 -0
- package/dist/{fa-T-tkJSJr.js → fa-FsHBFjdY.js} +16 -1
- package/dist/fr-1nSKSIlw.cjs +1 -0
- package/dist/{fr-yOW_68YY.js → fr-B0jeX1Hx.js} +83 -9
- package/dist/{fr-CSRRhyCG.js → fr-Di6BT9_V.js} +18 -3
- package/dist/fr-Dq6RAY9s.cjs +1 -0
- package/dist/he-BBX1h9uD.cjs +1 -0
- package/dist/{he-Bxdc4M08.js → he-CXujw1Lw.js} +16 -1
- package/dist/he-DhcurPt5.cjs +1 -0
- package/dist/he-SgAsIYJA.js +175 -0
- package/dist/{hi-CJeFvTBe.js → hi-Bvh4d9bO.js} +16 -1
- package/dist/hi-Cd0YQZTU.cjs +1 -0
- package/dist/hi-CxsIxbfM.cjs +1 -0
- package/dist/hi-s9oiIihq.js +175 -0
- package/dist/{index-Bt7FYl80.cjs → index-Bm43lZqE.cjs} +2 -2
- package/dist/{index-05UbKOYe.cjs → index-C2_iX1um.cjs} +1 -1
- package/dist/{index-C2Lq1m45.js → index-C32iUFIr.js} +5 -5
- package/dist/{index-lYhXnu6I.js → index-CEqc0H3v.js} +1 -1
- package/dist/index-DH37GTQj.cjs +1 -0
- package/dist/{index-DklKfzD4.js → index-Di1_W_7Q.js} +351 -361
- package/dist/index.cjs.js +4 -4
- package/dist/index.es.js +6220 -3084
- package/dist/input-container-CSi72GI1.cjs +1 -0
- package/dist/{input-container-DiCjOzR2.js → input-container-Nx0gMAzS.js} +86 -75
- package/dist/it-ByIEk5Cq.cjs +1 -0
- package/dist/it-D_IcaYxp.cjs +1 -0
- package/dist/{it-6e6X-4BB.js → it-Dc4IMciD.js} +80 -6
- package/dist/{it-Zmp0BhIj.js → it-EWhykhHv.js} +18 -3
- package/dist/ja-CMGqpPo7.cjs +1 -0
- package/dist/{ja-BxNuNo2H.js → ja-D2t2g5xj.js} +85 -11
- package/dist/ja-DV6Fpp18.cjs +1 -0
- package/dist/{ja-DWjoA-hQ.js → ja-YZ0P5woj.js} +16 -1
- package/dist/json-schema/index.cjs.js +1 -1
- package/dist/json-schema/index.es.js +191 -185
- package/dist/json-schema-display/index.cjs.js +1 -1
- package/dist/json-schema-display/index.es.js +1 -1
- package/dist/json-structure/index.cjs.js +1 -1
- package/dist/json-structure/index.es.js +679 -660
- package/dist/ko-BPl5rP97.cjs +1 -0
- package/dist/ko-BRylA5JZ.js +175 -0
- package/dist/ko-DR1f0as8.cjs +1 -0
- package/dist/{ko-BOlI-33h.js → ko-U7BSUAxZ.js} +16 -1
- package/dist/lexical/index.cjs.js +31 -31
- package/dist/lexical/index.es.js +5248 -5221
- package/dist/lexical.css +5 -7
- package/dist/menu-CX72LaZ3.cjs +1 -0
- package/dist/menu-D_slbwl8.js +374 -0
- package/dist/{modal-v3u2Fpnd.js → modal-DaI1jH-X.js} +4 -4
- package/dist/{modal-I5srcntN.cjs → modal-kyZfvVZb.cjs} +1 -1
- package/dist/nl-BSfaHFt0.cjs +1 -0
- package/dist/{nl-Dr-l6zUy.cjs → nl-CQF0N7Mc.cjs} +1 -1
- package/dist/{nl-kQNcAdY1.js → nl-CqAxoB4J.js} +18 -3
- package/dist/nl-Dh7LUWAn.js +176 -0
- package/dist/{notice-CLDdy1MW.cjs → notice-Bc1L4Zpr.cjs} +1 -1
- package/dist/{notice-BuZvdvZh.js → notice-Dz4nX57_.js} +4 -4
- package/dist/{oneof-branch-detection-Dt8ss9lc.js → oneof-branch-detection-BED_n2MT.js} +522 -519
- package/dist/{oneof-branch-detection-DsM1K5xc.cjs → oneof-branch-detection-Vov_e3kI.cjs} +4 -4
- package/dist/{pl-CKyPFvss.js → pl-C-weXGCB.js} +16 -1
- package/dist/pl-D-O4sCnr.cjs +1 -0
- package/dist/{pl-Bs4nLJ__.js → pl-XEG-p1Q9.js} +77 -3
- package/dist/{pl-BK0i_yvq.cjs → pl-y_w3DWF3.cjs} +1 -1
- package/dist/prosemirror/index.cjs.js +1 -1
- package/dist/prosemirror/index.es.js +1 -1
- package/dist/{pt-DBmUhaNI.js → pt-BjNGOoZH.js} +18 -3
- package/dist/pt-DYsDA2sZ.js +175 -0
- package/dist/pt-DqaZWmbG.cjs +1 -0
- package/dist/pt-chEEYLlt.cjs +1 -0
- package/dist/ru-B46hVpFF.cjs +1 -0
- package/dist/{ru-Bi1_DEKM.js → ru-BTKBykp-.js} +86 -12
- package/dist/{ru-CsJ_yT-7.js → ru-CFmeZBXK.js} +16 -1
- package/dist/ru-CISMzCHR.cjs +1 -0
- package/dist/{styles-url-B2dzXrYt.cjs → styles-url-CVCcF0ra.cjs} +1 -1
- package/dist/{styles-url-Cw_mxshe.js → styles-url-DUdp56Ts.js} +1 -1
- package/dist/tailwind/index.cjs.js +1 -1
- package/dist/tailwind/index.es.js +3 -3
- package/dist/tailwind/preset.cjs.js +1 -1
- package/dist/tailwind/preset.es.js +74 -4
- package/dist/tailwind/vite-plugin.cjs.js +10 -10
- package/dist/tailwind/vite-plugin.es.js +289 -410
- package/dist/text-input-8v79fzEy.cjs +1 -0
- package/dist/text-input-CPJzUC2r.js +45 -0
- package/dist/{toolbar-D994_E_s.js → toolbar-CjQG7l7X.js} +1 -1
- package/dist/{toolbar-x0_8lmKu.cjs → toolbar-D3ZsC0g_.cjs} +1 -1
- package/dist/{tr-Bn5ldVJs.js → tr-C5X2gFZS.js} +17 -2
- package/dist/tr-CaMaflJL.cjs +1 -0
- package/dist/{tr-DiYB-FwX.js → tr-Cp8ZCUic.js} +77 -3
- package/dist/{tr-CgJ8uhZu.cjs → tr-mWu2E__o.cjs} +1 -1
- package/dist/{translations-Cq8bUKJP.js → translations-BGblCUBj.js} +144 -70
- package/dist/translations-CZ0KOii3.cjs +1 -0
- package/dist/translations-gVgMyNno.cjs +1 -0
- package/dist/translations-jUYta1_1.js +87 -0
- package/dist/types/auth/index.d.ts +13 -0
- package/dist/types/auth-i18n/default.d.ts +14 -0
- package/dist/types/auth-i18n/locales/ar.d.ts +14 -0
- package/dist/types/auth-i18n/locales/de.d.ts +14 -0
- package/dist/types/auth-i18n/locales/en.d.ts +14 -0
- package/dist/types/auth-i18n/locales/es.d.ts +14 -0
- package/dist/types/auth-i18n/locales/fa.d.ts +14 -0
- package/dist/types/auth-i18n/locales/fr.d.ts +14 -0
- package/dist/types/auth-i18n/locales/he.d.ts +14 -0
- package/dist/types/auth-i18n/locales/hi.d.ts +14 -0
- package/dist/types/auth-i18n/locales/it.d.ts +14 -0
- package/dist/types/auth-i18n/locales/ja.d.ts +14 -0
- package/dist/types/auth-i18n/locales/ko.d.ts +14 -0
- package/dist/types/auth-i18n/locales/nl.d.ts +14 -0
- package/dist/types/auth-i18n/locales/pl.d.ts +14 -0
- package/dist/types/auth-i18n/locales/pt.d.ts +14 -0
- package/dist/types/auth-i18n/locales/ru.d.ts +14 -0
- package/dist/types/auth-i18n/locales/tr.d.ts +14 -0
- package/dist/types/auth-i18n/locales/ur.d.ts +14 -0
- package/dist/types/auth-i18n/locales/vi.d.ts +14 -0
- package/dist/types/auth-i18n/locales/zh.d.ts +14 -0
- package/dist/types/auth-i18n/translations.d.ts +14 -0
- package/dist/types/beatui-i18n/default.d.ts +99 -0
- package/dist/types/beatui-i18n/index.d.ts +11 -0
- package/dist/types/beatui-i18n/locales/en.d.ts +63 -0
- package/dist/types/beatui-i18n/translations.d.ts +87 -0
- package/dist/types/better-auth/components/authenticated.d.ts +2 -2
- package/dist/types/better-auth/components/better-auth-container.d.ts +1 -1
- package/dist/types/better-auth/components/better-auth-modal.d.ts +1 -1
- package/dist/types/better-auth/index.d.ts +13 -0
- package/dist/types/better-auth/provider.d.ts +33 -0
- package/dist/types/better-auth/types.d.ts +112 -0
- package/dist/types/components/auth/auth-container.d.ts +63 -2
- package/dist/types/components/auth/auth-divider.d.ts +30 -0
- package/dist/types/components/auth/auth-email-prop.d.ts +25 -0
- package/dist/types/components/auth/index.d.ts +9 -0
- package/dist/types/components/auth/password-strength-indicator.d.ts +58 -0
- package/dist/types/components/auth/reset-password-form.d.ts +33 -0
- package/dist/types/components/auth/schemas.d.ts +183 -5
- package/dist/types/components/auth/signin-form.d.ts +33 -0
- package/dist/types/components/auth/signup-form.d.ts +36 -0
- package/dist/types/components/auth/social-login-button.d.ts +213 -0
- package/dist/types/components/auth/social-providers.d.ts +27 -1
- package/dist/types/components/auth/types.d.ts +299 -0
- package/dist/types/components/auth/utils.d.ts +198 -0
- package/dist/types/components/beatui.d.ts +35 -0
- package/dist/types/components/button/button.d.ts +61 -0
- package/dist/types/components/button/close-button.d.ts +32 -1
- package/dist/types/components/button/index.d.ts +2 -0
- package/dist/types/components/button/toggle-button-group.d.ts +95 -0
- package/dist/types/components/button/toggle-button.d.ts +60 -0
- package/dist/types/components/data/avatar-group.d.ts +74 -0
- package/dist/types/components/data/avatar.d.ts +62 -0
- package/dist/types/components/data/badge.d.ts +49 -2
- package/dist/types/components/data/calendar-shared.d.ts +59 -0
- package/dist/types/components/data/calendar.d.ts +107 -0
- package/dist/types/components/data/history-timeline.d.ts +35 -0
- package/dist/types/components/data/icon-badge.d.ts +14 -0
- package/dist/types/components/data/icon.d.ts +55 -4
- package/dist/types/components/data/index.d.ts +9 -0
- package/dist/types/components/data/page-drop-zone.d.ts +61 -8
- package/dist/types/components/data/presence-overlay.d.ts +26 -0
- package/dist/types/components/data/progress-bar.d.ts +81 -0
- package/dist/types/components/data/range-calendar.d.ts +104 -0
- package/dist/types/components/data/skeleton.d.ts +70 -0
- package/dist/types/components/data/table.d.ts +38 -11
- package/dist/types/components/data/tag.d.ts +40 -0
- package/dist/types/components/data/unstyled-drop-zone.d.ts +73 -0
- package/dist/types/components/form/control/control.d.ts +155 -0
- package/dist/types/components/form/control/date-utils.d.ts +81 -0
- package/dist/types/components/form/control/ensure-control.d.ts +28 -0
- package/dist/types/components/form/control/form-status.d.ts +63 -0
- package/dist/types/components/form/control/index.d.ts +10 -0
- package/dist/types/components/form/control/list-control.d.ts +100 -1
- package/dist/types/components/form/control/list-item-controls.d.ts +65 -0
- package/dist/types/components/form/controller/color-controller.d.ts +29 -1
- package/dist/types/components/form/controller/controller-validation.d.ts +31 -0
- package/dist/types/components/form/controller/controller.d.ts +286 -0
- package/dist/types/components/form/controller/index.d.ts +12 -0
- package/dist/types/components/form/controller/path.d.ts +69 -0
- package/dist/types/components/form/controller/union-controller.d.ts +106 -11
- package/dist/types/components/form/controller/utils.d.ts +67 -0
- package/dist/types/components/form/input/advanced-slider.d.ts +143 -0
- package/dist/types/components/form/input/appearance-selector.d.ts +39 -0
- package/dist/types/components/form/input/base64-input.d.ts +34 -0
- package/dist/types/components/form/input/base64s-input.d.ts +47 -0
- package/dist/types/components/form/input/bigint-input.d.ts +27 -0
- package/dist/types/components/form/input/checkbox-input.d.ts +46 -0
- package/dist/types/components/form/input/color-input.d.ts +42 -0
- package/dist/types/components/form/input/color-swatch-input.d.ts +53 -0
- package/dist/types/components/form/input/combobox-input.d.ts +73 -0
- package/dist/types/components/form/input/combobox-tags-input.d.ts +54 -0
- package/dist/types/components/form/input/date-input.d.ts +33 -0
- package/dist/types/components/form/input/date-time-input.d.ts +34 -0
- package/dist/types/components/form/input/dropdown-base.d.ts +52 -0
- package/dist/types/components/form/input/dropdown-input.d.ts +86 -0
- package/dist/types/components/form/input/duration-input.d.ts +18 -0
- package/dist/types/components/form/input/duration-mask.d.ts +24 -0
- package/dist/types/components/form/input/editable-text.d.ts +33 -0
- package/dist/types/components/form/input/email-input.d.ts +34 -0
- package/dist/types/components/form/input/file-input.d.ts +33 -0
- package/dist/types/components/form/input/files-input.d.ts +44 -0
- package/dist/types/components/form/input/index.d.ts +5 -0
- package/dist/types/components/form/input/input-adornment.d.ts +38 -0
- package/dist/types/components/form/input/input-container.d.ts +65 -0
- package/dist/types/components/form/input/input-options.d.ts +70 -0
- package/dist/types/components/form/input/input-wrapper.d.ts +78 -0
- package/dist/types/components/form/input/instant-input.d.ts +18 -0
- package/dist/types/components/form/input/lazy-native-select.d.ts +43 -0
- package/dist/types/components/form/input/list-input.d.ts +50 -0
- package/dist/types/components/form/input/mask-input.d.ts +158 -0
- package/dist/types/components/form/input/native-select.d.ts +50 -0
- package/dist/types/components/form/input/nullable-base64-input.d.ts +25 -0
- package/dist/types/components/form/input/nullable-bigint-input.d.ts +26 -0
- package/dist/types/components/form/input/nullable-date-input.d.ts +18 -0
- package/dist/types/components/form/input/nullable-date-time-input.d.ts +19 -0
- package/dist/types/components/form/input/nullable-duration-input.d.ts +19 -0
- package/dist/types/components/form/input/nullable-email-input.d.ts +18 -0
- package/dist/types/components/form/input/nullable-instant-input.d.ts +19 -0
- package/dist/types/components/form/input/nullable-mask-input.d.ts +24 -0
- package/dist/types/components/form/input/nullable-number-input.d.ts +29 -0
- package/dist/types/components/form/input/nullable-password-input.d.ts +18 -0
- package/dist/types/components/form/input/nullable-plain-date-input.d.ts +18 -0
- package/dist/types/components/form/input/nullable-plain-date-time-input.d.ts +18 -0
- package/dist/types/components/form/input/nullable-plain-month-day-input.d.ts +18 -0
- package/dist/types/components/form/input/nullable-plain-time-input.d.ts +18 -0
- package/dist/types/components/form/input/nullable-plain-year-month-input.d.ts +18 -0
- package/dist/types/components/form/input/nullable-rating-input.d.ts +33 -0
- package/dist/types/components/form/input/nullable-text-area.d.ts +27 -0
- package/dist/types/components/form/input/nullable-text-input.d.ts +18 -0
- package/dist/types/components/form/input/nullable-url-input.d.ts +18 -0
- package/dist/types/components/form/input/nullable-utils.d.ts +22 -2
- package/dist/types/components/form/input/nullable-uuid-input.d.ts +18 -0
- package/dist/types/components/form/input/nullable-zoned-date-time-input.d.ts +20 -0
- package/dist/types/components/form/input/number-input.d.ts +49 -0
- package/dist/types/components/form/input/option.d.ts +165 -0
- package/dist/types/components/form/input/otp-input.d.ts +77 -0
- package/dist/types/components/form/input/password-input.d.ts +39 -0
- package/dist/types/components/form/input/plain-date-input.d.ts +17 -0
- package/dist/types/components/form/input/plain-date-time-input.d.ts +17 -0
- package/dist/types/components/form/input/plain-month-day-input.d.ts +18 -0
- package/dist/types/components/form/input/plain-time-input.d.ts +17 -0
- package/dist/types/components/form/input/plain-year-month-input.d.ts +17 -0
- package/dist/types/components/form/input/radio-group.d.ts +108 -0
- package/dist/types/components/form/input/rating-input.d.ts +57 -0
- package/dist/types/components/form/input/segmented-input.d.ts +70 -1
- package/dist/types/components/form/input/select-tags-input.d.ts +69 -0
- package/dist/types/components/form/input/slider-input.d.ts +82 -0
- package/dist/types/components/form/input/switch.d.ts +59 -1
- package/dist/types/components/form/input/tag-input.d.ts +19 -0
- package/dist/types/components/form/input/tag-utils.d.ts +111 -0
- package/dist/types/components/form/input/tags-input.d.ts +18 -0
- package/dist/types/components/form/input/text-area.d.ts +42 -0
- package/dist/types/components/form/input/text-input.d.ts +63 -1
- package/dist/types/components/form/input/url-input.d.ts +34 -0
- package/dist/types/components/form/input/uuid-input.d.ts +19 -0
- package/dist/types/components/form/input/zoned-date-time-input.d.ts +20 -0
- package/dist/types/components/form/schema/standard-schema-v1.d.ts +98 -23
- package/dist/types/components/form/use-form.d.ts +146 -2
- package/dist/types/components/i18n/index.d.ts +9 -0
- package/dist/types/components/i18n/locale-direction.d.ts +21 -1
- package/dist/types/components/i18n/locale-selector.d.ts +45 -0
- package/dist/types/components/i18n/make-i18nprovider.d.ts +42 -0
- package/dist/types/components/json-schema/schema-types.d.ts +133 -0
- package/dist/types/components/json-structure/controls/deprecation-utils.d.ts +2 -3
- package/dist/types/components/json-structure/structure-types.d.ts +473 -19
- package/dist/types/components/layout/accordion.d.ts +77 -0
- package/dist/types/components/layout/action-card.d.ts +90 -2
- package/dist/types/components/layout/app-shell.d.ts +76 -0
- package/dist/types/components/layout/card.d.ts +27 -0
- package/dist/types/components/layout/center.d.ts +39 -0
- package/dist/types/components/layout/collapse.d.ts +28 -0
- package/dist/types/components/layout/divider.d.ts +84 -0
- package/dist/types/components/layout/group.d.ts +15 -0
- package/dist/types/components/layout/index.d.ts +2 -0
- package/dist/types/components/layout/nine-slice-scroll-view.d.ts +105 -0
- package/dist/types/components/layout/scrollable-panel.d.ts +54 -0
- package/dist/types/components/layout/sink.d.ts +46 -0
- package/dist/types/components/layout/stack.d.ts +16 -0
- package/dist/types/components/layout/with-breakpoint.d.ts +194 -0
- package/dist/types/components/lexical/code/language-selector.d.ts +2 -2
- package/dist/types/components/lexical/floating/block-handle.d.ts +2 -2
- package/dist/types/components/lexical/floating/floating-toolbar.d.ts +2 -2
- package/dist/types/components/lexical/floating/slash-command-palette.d.ts +2 -2
- package/dist/types/components/lexical/table/table-controls.d.ts +2 -2
- package/dist/types/components/lexical/toolbar/lexical-toolbar.d.ts +2 -2
- package/dist/types/components/lexical/toolbar/toolbar-helpers.d.ts +4 -2
- package/dist/types/components/misc/empty-state.d.ts +86 -0
- package/dist/types/components/misc/expando.d.ts +81 -0
- package/dist/types/components/misc/index.d.ts +2 -1
- package/dist/types/components/misc/link-portal.d.ts +40 -2
- package/dist/types/components/misc/notice.d.ts +93 -0
- package/dist/types/components/misc/notification-panel.d.ts +21 -0
- package/dist/types/components/misc/notification-provider.d.ts +141 -0
- package/dist/types/components/misc/notification.d.ts +93 -0
- package/dist/types/components/misc/style-portal.d.ts +31 -1
- package/dist/types/components/monaco/monaco-editor-input.d.ts +59 -2
- package/dist/types/components/navigation/breadcrumbs.d.ts +96 -0
- package/dist/types/components/navigation/flyout.d.ts +118 -16
- package/dist/types/components/navigation/index.d.ts +3 -0
- package/dist/types/components/navigation/link/link.d.ts +100 -0
- package/dist/types/components/navigation/menu.d.ts +155 -35
- package/dist/types/components/navigation/pagination.d.ts +82 -0
- package/dist/types/components/navigation/sidebar/sidebar-group.d.ts +42 -0
- package/dist/types/components/navigation/sidebar/sidebar-link.d.ts +101 -0
- package/dist/types/components/navigation/sidebar/sidebar-separator.d.ts +17 -0
- package/dist/types/components/navigation/sidebar/sidebar.d.ts +57 -0
- package/dist/types/components/navigation/tabs/tabs.d.ts +3 -2
- package/dist/types/components/navigation/toolbar/toolbar.d.ts +125 -0
- package/dist/types/components/navigation/tree-view.d.ts +95 -0
- package/dist/types/components/overlay/announcement-bar.d.ts +41 -2
- package/dist/types/components/overlay/block-command-palette.d.ts +25 -0
- package/dist/types/components/overlay/command-palette.d.ts +17 -0
- package/dist/types/components/overlay/dialogs.d.ts +213 -0
- package/dist/types/components/overlay/drawer.d.ts +76 -12
- package/dist/types/components/overlay/index.d.ts +4 -0
- package/dist/types/components/overlay/lightbox.d.ts +53 -10
- package/dist/types/components/overlay/modal.d.ts +113 -13
- package/dist/types/components/overlay/overlay.d.ts +61 -0
- package/dist/types/components/overlay/popover.d.ts +100 -0
- package/dist/types/components/overlay/ribbon.d.ts +58 -9
- package/dist/types/components/prosemirror/etoolbar-button.d.ts +10 -0
- package/dist/types/components/prosemirror/etoolbar-group.d.ts +10 -0
- package/dist/types/components/prosemirror/link-control.d.ts +43 -2
- package/dist/types/components/prosemirror/prosemirror-toolbar.d.ts +46 -6
- package/dist/types/components/prosemirror/utils.d.ts +113 -1
- package/dist/types/components/theme/style-utils.d.ts +95 -0
- package/dist/types/components/theme/theme.d.ts +39 -0
- package/dist/types/components/theme/types.d.ts +133 -1
- package/dist/types/components/typography/index.d.ts +1 -0
- package/dist/types/components/typography/kbd.d.ts +48 -0
- package/dist/types/components/typography/label.d.ts +45 -0
- package/dist/types/index.d.ts +14 -0
- package/dist/types/json-schema/index.d.ts +13 -0
- package/dist/types/json-schema-display/index.d.ts +12 -0
- package/dist/types/json-structure/index.d.ts +9 -4
- package/dist/types/markdown/index.d.ts +13 -0
- package/dist/types/monaco/index.d.ts +17 -0
- package/dist/types/monaco/lazy-loader.d.ts +79 -0
- package/dist/types/monaco/styles-url.d.ts +11 -0
- package/dist/types/monaco/styles.d.ts +11 -0
- package/dist/types/monaco/types.d.ts +47 -0
- package/dist/types/prosemirror/index.d.ts +12 -0
- package/dist/types/prosemirror/styles-url.d.ts +11 -0
- package/dist/types/prosemirror/styles.d.ts +10 -0
- package/dist/types/tailwind/google-fonts.d.ts +15 -0
- package/dist/types/tailwind/index.d.ts +13 -0
- package/dist/types/tailwind/preset.d.ts +111 -0
- package/dist/types/tailwind/vite-plugin.d.ts +39 -4
- package/dist/types/tokens/base-colors.d.ts +21 -0
- package/dist/types/tokens/breakpoints.d.ts +67 -0
- package/dist/types/tokens/colors.d.ts +213 -4
- package/dist/types/tokens/motion.d.ts +142 -3
- package/dist/types/tokens/radius.d.ts +99 -0
- package/dist/types/tokens/shadows.d.ts +85 -0
- package/dist/types/tokens/spacing.d.ts +111 -0
- package/dist/types/tokens/text-shadows.d.ts +82 -0
- package/dist/types/tokens/typography.d.ts +313 -25
- package/dist/types/tokens/z-index.d.ts +62 -0
- package/dist/types/utils/color.d.ts +297 -28
- package/dist/types/utils/download.d.ts +92 -0
- package/dist/types/utils/focus-trap.d.ts +67 -11
- package/dist/types/utils/format-file-size.d.ts +44 -0
- package/dist/ur-B6yB2JQ7.cjs +1 -0
- package/dist/ur-CvGP14xo.cjs +1 -0
- package/dist/{ur-Bg9eX81v.js → ur-Deo004ME.js} +16 -1
- package/dist/{ur-B69X-xNs.js → ur-DkIYJxsF.js} +82 -8
- package/dist/use-animated-toggle-89fKlXxy.js +195 -0
- package/dist/use-animated-toggle-DrqK7nUS.cjs +1 -0
- package/dist/{use-form-B56E_x5Y.js → use-form-BurzbPVV.js} +190 -2
- package/dist/{use-form-Cnp3XQ5X.cjs → use-form-Uree6QFy.cjs} +1 -1
- package/dist/vi-BYk1rJDv.js +53 -0
- package/dist/vi-DKw6PBja.js +175 -0
- package/dist/vi-Df4WZe9y.cjs +1 -0
- package/dist/vi-DneuUbkq.cjs +1 -0
- package/dist/{widget-customization-Ds9sicAg.js → widget-customization-0is7oTeP.js} +205 -204
- package/dist/widget-customization-B-LmxkPE.cjs +1 -0
- package/dist/zh-C5a9NGFW.cjs +1 -0
- package/dist/zh-CaKHseXJ.js +175 -0
- package/dist/zh-DFHuW_5g.cjs +1 -0
- package/dist/{zh-BIykcEu9.js → zh-DR7QaM65.js} +16 -1
- package/package.json +1 -1
- package/dist/ar-BsUm-TCn.cjs +0 -1
- package/dist/ar-D7CXDmVZ.cjs +0 -1
- package/dist/ar-nOSKXpIW.js +0 -101
- package/dist/auth-divider-BqZPH1-z.cjs +0 -1
- package/dist/de-BUFLEyKr.cjs +0 -1
- package/dist/de-WzsOu9Gn.cjs +0 -1
- package/dist/deep-merge-BYm0y62g.js +0 -1620
- package/dist/deep-merge-d7sf0xmN.cjs +0 -1
- package/dist/editor-toolbar-group--a-xgsJw.cjs +0 -1
- package/dist/editor-toolbar-group-CVpl5mxF.js +0 -31
- package/dist/es-CDqqzpCw.js +0 -101
- package/dist/es-Ds2Xf3wV.cjs +0 -1
- package/dist/fa-C7tE_hR3.js +0 -101
- package/dist/fa-Ct1UtDB7.cjs +0 -1
- package/dist/fr-Cdyopuz3.cjs +0 -1
- package/dist/fr-CzAkRFed.cjs +0 -1
- package/dist/he-D2oUloCJ.js +0 -101
- package/dist/he-DarDNPn0.cjs +0 -1
- package/dist/he-DlXALrK7.cjs +0 -1
- package/dist/hi-3dBhLwDs.cjs +0 -1
- package/dist/hi-D5ZlZoQq.js +0 -101
- package/dist/hi-tATwsXJ6.cjs +0 -1
- package/dist/index-DE2tjivA.cjs +0 -1
- package/dist/input-container-C6qEIjcA.cjs +0 -1
- package/dist/it-BmFag7j0.cjs +0 -1
- package/dist/it-DohtcWi9.cjs +0 -1
- package/dist/ja-Dj-bAKLf.cjs +0 -1
- package/dist/ja-eyTArrgS.cjs +0 -1
- package/dist/ko-BFLCDMMs.cjs +0 -1
- package/dist/ko-BomUE-yQ.cjs +0 -1
- package/dist/ko-Ch0jFsBV.js +0 -101
- package/dist/menu-CZzRsQP_.js +0 -372
- package/dist/menu-ClrU72xH.cjs +0 -1
- package/dist/nl-Bx2ACvr4.cjs +0 -1
- package/dist/nl-NuTdZO1s.js +0 -102
- package/dist/pl-QHl6sl8f.cjs +0 -1
- package/dist/pt-BETjHZrL.js +0 -101
- package/dist/pt-DZGw2Z-1.cjs +0 -1
- package/dist/pt-oBMmVYcu.cjs +0 -1
- package/dist/ru-CtxMmoa6.cjs +0 -1
- package/dist/ru-D03IuLqh.cjs +0 -1
- package/dist/text-input-B3VBat1k.js +0 -44
- package/dist/text-input-Ds8e7Z1G.cjs +0 -1
- package/dist/tr-B_-_1wua.cjs +0 -1
- package/dist/translations-B4-Zd2LM.cjs +0 -1
- package/dist/translations-D62qqNV9.cjs +0 -1
- package/dist/translations-DPr6c05Z.js +0 -67
- package/dist/ur-DvqAg9gW.cjs +0 -1
- package/dist/ur-DyUSmIbo.cjs +0 -1
- package/dist/use-animated-toggle-ChycsEoj.js +0 -175
- package/dist/use-animated-toggle-DR6CyMac.cjs +0 -1
- package/dist/vi-BdzxA60L.js +0 -101
- package/dist/vi-CBmPaHxg.cjs +0 -1
- package/dist/vi-D5R3YcU0.cjs +0 -1
- package/dist/vi-DhdsHHf_.js +0 -38
- package/dist/widget-customization-Dk7XcVly.cjs +0 -1
- package/dist/zh-CCGXcj5r.cjs +0 -1
- package/dist/zh-Cb1b8uik.cjs +0 -1
- package/dist/zh-Dn1UJiZa.js +0 -101
|
@@ -2,24 +2,123 @@ import { TNode, ElementPosition, Value, Merge } from '@tempots/dom';
|
|
|
2
2
|
import { ArrayController } from '../controller/controller';
|
|
3
3
|
import { ListInputPayload, MoveDirection, MovableDirection } from '../input/list-input';
|
|
4
4
|
import { InputWrapperOptions } from '../input';
|
|
5
|
+
import { ListControlsLayout } from './list-item-controls';
|
|
6
|
+
/**
|
|
7
|
+
* Payload provided to each list item element renderer, re-exported from {@link ListInputPayload}.
|
|
8
|
+
*
|
|
9
|
+
* @typeParam T - The type of each item in the list
|
|
10
|
+
*/
|
|
5
11
|
export type ListControllerPayload<T> = ListInputPayload<T>;
|
|
6
12
|
export type { MoveDirection, MovableDirection };
|
|
7
|
-
|
|
13
|
+
/**
|
|
14
|
+
* Base configuration options for {@link BaseListControl} (without InputWrapper).
|
|
15
|
+
*
|
|
16
|
+
* @typeParam T - The type of each item in the list
|
|
17
|
+
*/
|
|
8
18
|
export type BaseListControlOptions<T> = {
|
|
19
|
+
/** The array controller managing the list state */
|
|
9
20
|
controller: ArrayController<T[]>;
|
|
21
|
+
/** Render function for each list item, receiving the item's payload */
|
|
10
22
|
element: (payload: ListInputPayload<T>) => TNode;
|
|
23
|
+
/** Optional separator rendered between list items */
|
|
11
24
|
separator?: (pos: ElementPosition) => TNode;
|
|
25
|
+
/**
|
|
26
|
+
* Whether to show move up/down buttons for reordering items.
|
|
27
|
+
* @default true
|
|
28
|
+
*/
|
|
12
29
|
showMove?: Value<boolean>;
|
|
30
|
+
/**
|
|
31
|
+
* Whether to show the remove button for each item.
|
|
32
|
+
* @default true
|
|
33
|
+
*/
|
|
13
34
|
showRemove?: Value<boolean>;
|
|
35
|
+
/**
|
|
36
|
+
* Whether to show the "Add" button below the list.
|
|
37
|
+
* @default true
|
|
38
|
+
*/
|
|
14
39
|
showAdd?: Value<boolean>;
|
|
15
40
|
/** When true, disables the remove button instead of hiding it */
|
|
16
41
|
removeDisabled?: Value<boolean>;
|
|
17
42
|
/** When true, disables the add button (if visible) */
|
|
18
43
|
addDisabled?: Value<boolean>;
|
|
44
|
+
/** Factory function that creates a new default item when the "Add" button is clicked */
|
|
19
45
|
createItem?: () => T;
|
|
46
|
+
/** Custom label for the "Add" button. Defaults to the i18n `addLabel` message. */
|
|
20
47
|
addLabel?: TNode;
|
|
48
|
+
/**
|
|
49
|
+
* Layout mode for the item controls.
|
|
50
|
+
* @default 'aside'
|
|
51
|
+
*/
|
|
21
52
|
controlsLayout?: Value<ListControlsLayout>;
|
|
22
53
|
};
|
|
54
|
+
/**
|
|
55
|
+
* Configuration options for {@link ListControl}, combining InputWrapper options with list control options.
|
|
56
|
+
*
|
|
57
|
+
* Inherits all properties from {@link InputWrapperOptions} (except `content`, which is generated)
|
|
58
|
+
* and {@link BaseListControlOptions}.
|
|
59
|
+
*
|
|
60
|
+
* @typeParam T - The type of each item in the list
|
|
61
|
+
*/
|
|
23
62
|
export type ListControlOptions<T> = Merge<Omit<InputWrapperOptions, 'content'>, BaseListControlOptions<T>>;
|
|
63
|
+
/**
|
|
64
|
+
* Renders a list of items with move, remove, and add controls -- without an InputWrapper.
|
|
65
|
+
*
|
|
66
|
+
* Each item is rendered using the `element` callback and can optionally include
|
|
67
|
+
* move up/down buttons, a remove button, and an "Add" button at the bottom.
|
|
68
|
+
* The controls layout can be positioned `'aside'` (to the right) or `'below'` each item.
|
|
69
|
+
*
|
|
70
|
+
* @typeParam T - The type of each item in the list
|
|
71
|
+
*
|
|
72
|
+
* @param options - Configuration options for the list control
|
|
73
|
+
*
|
|
74
|
+
* @returns A renderable TNode representing the list with controls
|
|
75
|
+
*
|
|
76
|
+
* @example
|
|
77
|
+
* ```typescript
|
|
78
|
+
* import { BaseListControl } from '@tempots/beatui'
|
|
79
|
+
*
|
|
80
|
+
* BaseListControl({
|
|
81
|
+
* controller: myArrayController,
|
|
82
|
+
* element: ({ controller, index }) => TextInput({
|
|
83
|
+
* value: controller.signal,
|
|
84
|
+
* onChange: controller.change,
|
|
85
|
+
* }),
|
|
86
|
+
* createItem: () => '',
|
|
87
|
+
* showMove: true,
|
|
88
|
+
* showRemove: true,
|
|
89
|
+
* showAdd: true,
|
|
90
|
+
* })
|
|
91
|
+
* ```
|
|
92
|
+
*/
|
|
24
93
|
export declare const BaseListControl: <T>(options: BaseListControlOptions<T>) => import("@tempots/dom").Renderable<import("@tempots/dom").DOMContext>;
|
|
94
|
+
/**
|
|
95
|
+
* Renders a list of items with move, remove, and add controls inside an InputWrapper.
|
|
96
|
+
*
|
|
97
|
+
* Combines {@link BaseListControl} with {@link InputWrapper} to provide a complete
|
|
98
|
+
* form field for managing a list of values, including label, description, and error display.
|
|
99
|
+
*
|
|
100
|
+
* @typeParam T - The type of each item in the list
|
|
101
|
+
*
|
|
102
|
+
* @param options - Configuration options combining InputWrapper and list control settings
|
|
103
|
+
* @param children - Additional child nodes to render inside the InputWrapper
|
|
104
|
+
*
|
|
105
|
+
* @returns A renderable TNode representing the wrapped list control
|
|
106
|
+
*
|
|
107
|
+
* @example
|
|
108
|
+
* ```typescript
|
|
109
|
+
* import { ListControl } from '@tempots/beatui'
|
|
110
|
+
*
|
|
111
|
+
* ListControl({
|
|
112
|
+
* controller: tagsController,
|
|
113
|
+
* label: 'Tags',
|
|
114
|
+
* description: 'Add tags to categorize this item',
|
|
115
|
+
* element: ({ controller }) => TextInput({
|
|
116
|
+
* value: controller.signal,
|
|
117
|
+
* onChange: controller.change,
|
|
118
|
+
* }),
|
|
119
|
+
* createItem: () => '',
|
|
120
|
+
* showAdd: true,
|
|
121
|
+
* })
|
|
122
|
+
* ```
|
|
123
|
+
*/
|
|
25
124
|
export declare const ListControl: <T>(options: ListControlOptions<T>, ...children: TNode[]) => import("@tempots/dom").Renderable;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { TNode, Value, Signal } from '@tempots/dom';
|
|
2
|
+
/**
|
|
3
|
+
* Layout mode for list item controls (move/remove buttons).
|
|
4
|
+
*
|
|
5
|
+
* - `'aside'` - Controls are rendered in a column to the right of each item
|
|
6
|
+
* - `'below'` - Controls are rendered in a row below each item
|
|
7
|
+
*/
|
|
8
|
+
export type ListControlsLayout = 'below' | 'aside';
|
|
9
|
+
/**
|
|
10
|
+
* Configuration options for {@link ListItemControls}.
|
|
11
|
+
*/
|
|
12
|
+
export type ListItemControlsOptions = {
|
|
13
|
+
/** Callback to move the item up or down */
|
|
14
|
+
onMove: (direction: 'up' | 'down') => void;
|
|
15
|
+
/** Signal indicating the item cannot be moved up */
|
|
16
|
+
cannotMoveUp: Signal<boolean>;
|
|
17
|
+
/** Signal indicating the item cannot be moved down */
|
|
18
|
+
cannotMoveDown: Signal<boolean>;
|
|
19
|
+
/** Callback to remove the item */
|
|
20
|
+
onRemove: () => void;
|
|
21
|
+
/**
|
|
22
|
+
* Whether to show the move buttons.
|
|
23
|
+
* @default true
|
|
24
|
+
*/
|
|
25
|
+
showMove?: Value<boolean>;
|
|
26
|
+
/**
|
|
27
|
+
* Whether to show the remove button.
|
|
28
|
+
* @default true
|
|
29
|
+
*/
|
|
30
|
+
showRemove?: Value<boolean>;
|
|
31
|
+
/** When true, disables the remove button instead of hiding it */
|
|
32
|
+
removeDisabled?: Value<boolean>;
|
|
33
|
+
/**
|
|
34
|
+
* Whether to show move buttons (e.g., when list has more than 1 item).
|
|
35
|
+
* @default true
|
|
36
|
+
*/
|
|
37
|
+
showMoveButtons?: Value<boolean>;
|
|
38
|
+
/**
|
|
39
|
+
* Layout mode for the controls.
|
|
40
|
+
* @default 'aside'
|
|
41
|
+
*/
|
|
42
|
+
layout?: Value<ListControlsLayout>;
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* Renders reusable move/remove controls for a list item.
|
|
46
|
+
*
|
|
47
|
+
* Wraps content with move up/down and remove buttons, positioned either
|
|
48
|
+
* beside (`'aside'`) or below the content depending on the layout mode.
|
|
49
|
+
*
|
|
50
|
+
* @param options - Configuration options for the controls
|
|
51
|
+
* @param content - The list item content to wrap
|
|
52
|
+
* @returns A TNode with the content and its controls
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* ```ts
|
|
56
|
+
* ListItemControls({
|
|
57
|
+
* onMove: dir => payload.move(dir),
|
|
58
|
+
* cannotMoveUp: payload.cannotMove('up'),
|
|
59
|
+
* cannotMoveDown: payload.cannotMove('down'),
|
|
60
|
+
* onRemove: payload.remove,
|
|
61
|
+
* layout: 'aside',
|
|
62
|
+
* }, myItemContent)
|
|
63
|
+
* ```
|
|
64
|
+
*/
|
|
65
|
+
export declare function ListItemControls(options: ListItemControlsOptions, content: TNode): TNode;
|
|
@@ -3,9 +3,37 @@ import { Signal } from '@tempots/dom';
|
|
|
3
3
|
import { Path } from './path';
|
|
4
4
|
import { ControllerValidation } from './controller-validation';
|
|
5
5
|
/**
|
|
6
|
-
* Specialized controller for color values with validation and transformation utilities
|
|
6
|
+
* Specialized controller for color values with validation and transformation utilities.
|
|
7
|
+
*
|
|
8
|
+
* Extends the base `Controller<string>` with color-specific functionality including
|
|
9
|
+
* hex color validation, normalization, RGB conversion, and format transformation.
|
|
10
|
+
* Values are internally stored as normalized hex strings (e.g., `'#ff0000'`).
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* import { createColorController } from '@tempots/beatui'
|
|
15
|
+
*
|
|
16
|
+
* const colorCtrl = createColorController(stringController)
|
|
17
|
+
*
|
|
18
|
+
* // Validate and set colors
|
|
19
|
+
* colorCtrl.setColor('#f00') // Normalizes to '#ff0000'
|
|
20
|
+
* colorCtrl.setRgb(255, 128, 0) // Sets to '#ff8000'
|
|
21
|
+
*
|
|
22
|
+
* // Read reactive values
|
|
23
|
+
* colorCtrl.isValidHex // Signal<boolean>
|
|
24
|
+
* colorCtrl.normalizedHex // Signal<string>
|
|
25
|
+
* ```
|
|
7
26
|
*/
|
|
8
27
|
export declare class ColorController extends Controller<string> {
|
|
28
|
+
/**
|
|
29
|
+
* Creates a new ColorController instance.
|
|
30
|
+
*
|
|
31
|
+
* @param path - The path segments identifying this controller in the form tree
|
|
32
|
+
* @param change - Callback to propagate value changes to the parent
|
|
33
|
+
* @param signal - Reactive signal holding the current color string
|
|
34
|
+
* @param status - Reactive signal holding the current validation status
|
|
35
|
+
* @param parent - Parent context providing the disabled state
|
|
36
|
+
*/
|
|
9
37
|
constructor(path: Path, change: (value: string) => void, signal: Signal<string>, status: Signal<ControllerValidation>, parent: {
|
|
10
38
|
disabled: Signal<boolean>;
|
|
11
39
|
});
|
|
@@ -1,9 +1,18 @@
|
|
|
1
1
|
import { Validation } from '@tempots/std';
|
|
2
2
|
import { PathSegment } from './path';
|
|
3
|
+
/**
|
|
4
|
+
* Represents a validation error for a form controller with support for nested field errors.
|
|
5
|
+
*/
|
|
3
6
|
export type ControllerError = {
|
|
7
|
+
/** The error message for this field. */
|
|
4
8
|
message?: string;
|
|
9
|
+
/** Nested errors for child fields, keyed by field name or array index. */
|
|
5
10
|
dependencies?: Record<PathSegment, ControllerError>;
|
|
6
11
|
};
|
|
12
|
+
/**
|
|
13
|
+
* Validation state for a controller, which can be valid, pending, or invalid with a ControllerError.
|
|
14
|
+
* This is an alias for `Validation<ControllerError>` from @tempots/std.
|
|
15
|
+
*/
|
|
7
16
|
export type ControllerValidation = Validation<ControllerError>;
|
|
8
17
|
/**
|
|
9
18
|
* Helper object for creating ControllerValidation instances.
|
|
@@ -46,4 +55,26 @@ export declare const ControllerValidation: {
|
|
|
46
55
|
*/
|
|
47
56
|
readonly fromError: (error: ControllerError) => ControllerValidation;
|
|
48
57
|
};
|
|
58
|
+
/**
|
|
59
|
+
* Creates a function that extracts validation state for a specific subpath from a parent validation.
|
|
60
|
+
* Used internally to propagate validation errors to child controllers.
|
|
61
|
+
*
|
|
62
|
+
* @param fields - Path segments to traverse to find the relevant error
|
|
63
|
+
* @returns A function that maps parent validation state to child validation state
|
|
64
|
+
*
|
|
65
|
+
* @example
|
|
66
|
+
* ```typescript
|
|
67
|
+
* const mapEmail = makeMapValidation(['user', 'email'])
|
|
68
|
+
* const parentStatus = Validation.invalid({
|
|
69
|
+
* dependencies: {
|
|
70
|
+
* user: {
|
|
71
|
+
* dependencies: {
|
|
72
|
+
* email: { message: 'Invalid email' }
|
|
73
|
+
* }
|
|
74
|
+
* }
|
|
75
|
+
* }
|
|
76
|
+
* })
|
|
77
|
+
* const emailStatus = mapEmail(parentStatus) // Validation.invalid({ message: 'Invalid email' })
|
|
78
|
+
* ```
|
|
79
|
+
*/
|
|
49
80
|
export declare function makeMapValidation(fields: PathSegment[]): (status: ControllerValidation) => ControllerValidation;
|
|
@@ -2,70 +2,356 @@ import { Signal } from '@tempots/dom';
|
|
|
2
2
|
import { Path, PathSegment } from './path';
|
|
3
3
|
import { ControllerError, ControllerValidation } from './controller-validation';
|
|
4
4
|
import { ValidationMode } from './union-controller';
|
|
5
|
+
/**
|
|
6
|
+
* Reactive form field controller that manages value, validation state, touched/dirty tracking, and disabled state.
|
|
7
|
+
* Provides the foundation for type-safe form handling with fine-grained reactivity.
|
|
8
|
+
*
|
|
9
|
+
* @template T - The type of the value managed by this controller
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* import { prop } from '@tempots/dom'
|
|
14
|
+
* import { Controller } from '@tempots/beatui'
|
|
15
|
+
* import { Validation } from '@tempots/std'
|
|
16
|
+
*
|
|
17
|
+
* const valueSignal = prop('initial')
|
|
18
|
+
* const statusSignal = prop(Validation.valid)
|
|
19
|
+
* const disabledSignal = prop(false)
|
|
20
|
+
*
|
|
21
|
+
* const controller = new Controller(
|
|
22
|
+
* ['email'],
|
|
23
|
+
* (value) => { valueSignal.set(value) },
|
|
24
|
+
* valueSignal,
|
|
25
|
+
* statusSignal,
|
|
26
|
+
* { disabled: disabledSignal }
|
|
27
|
+
* )
|
|
28
|
+
*
|
|
29
|
+
* // Access reactive properties
|
|
30
|
+
* controller.signal.value // Current value
|
|
31
|
+
* controller.hasError.value // Boolean error state
|
|
32
|
+
* controller.touched.value // User interaction tracking
|
|
33
|
+
* controller.dirty.value // Differs from baseline
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
5
36
|
export declare class Controller<T> {
|
|
6
37
|
#private;
|
|
38
|
+
/** The path segments identifying this controller's position in the form hierarchy (e.g., ['user', 'email']). */
|
|
7
39
|
readonly path: Path;
|
|
40
|
+
/** Callback to propagate value changes up to the parent form. */
|
|
8
41
|
readonly change: (value: T) => void;
|
|
42
|
+
/** Reactive signal containing the current field value. */
|
|
9
43
|
readonly signal: Signal<T>;
|
|
44
|
+
/** Reactive signal containing the current validation state (valid, pending, or invalid with errors). */
|
|
10
45
|
readonly status: Signal<ControllerValidation>;
|
|
46
|
+
/** Reactive signal containing the current error message string, or undefined if valid. */
|
|
11
47
|
readonly error: Signal<undefined | string>;
|
|
48
|
+
/** Reactive signal indicating whether this field has any errors. */
|
|
12
49
|
readonly hasError: Signal<boolean>;
|
|
50
|
+
/** Reactive signal tracking whether the user has interacted with this field. */
|
|
13
51
|
readonly touched: Signal<boolean>;
|
|
52
|
+
/** Reactive signal indicating whether errors should be shown (respects validation mode and touched state). */
|
|
14
53
|
readonly errorVisible: Signal<boolean>;
|
|
54
|
+
/** Reactive signal tracking whether the current value differs from the baseline. */
|
|
15
55
|
readonly dirty: Signal<boolean>;
|
|
56
|
+
/** Reactive signal containing nested field errors for child controllers. */
|
|
16
57
|
readonly dependencyErrors: Signal<undefined | Record<string | number, ControllerError>>;
|
|
58
|
+
/** Parent controller context providing disabled state and optional validation mode. */
|
|
17
59
|
protected readonly parent: {
|
|
18
60
|
disabled: Signal<boolean>;
|
|
19
61
|
validationMode?: Signal<ValidationMode>;
|
|
20
62
|
};
|
|
63
|
+
/** Reactive signal indicating whether this field is disabled (combines local and parent disabled state). */
|
|
21
64
|
readonly disabled: Signal<boolean>;
|
|
65
|
+
/** Reactive signal indicating whether this field is disabled OR has errors (useful for submit button state). */
|
|
22
66
|
readonly disabledOrHasErrors: Signal<boolean>;
|
|
67
|
+
/**
|
|
68
|
+
* Creates a new Controller instance.
|
|
69
|
+
*
|
|
70
|
+
* @param path - Field path segments in the form hierarchy
|
|
71
|
+
* @param change - Callback to propagate value changes
|
|
72
|
+
* @param signal - Reactive signal holding the field value
|
|
73
|
+
* @param status - Reactive signal holding validation state
|
|
74
|
+
* @param parent - Parent context with disabled state and optional validation mode
|
|
75
|
+
* @param equals - Equality function for dirty tracking (defaults to strictEqual)
|
|
76
|
+
*/
|
|
23
77
|
constructor(path: Path, change: (value: T) => void, signal: Signal<T>, status: Signal<ControllerValidation>, parent: {
|
|
24
78
|
disabled: Signal<boolean>;
|
|
25
79
|
validationMode?: Signal<ValidationMode>;
|
|
26
80
|
}, equals?: (a: T, b: T) => boolean);
|
|
81
|
+
/**
|
|
82
|
+
* Returns the field name as a dot-separated string (e.g., "user.email").
|
|
83
|
+
*/
|
|
27
84
|
get name(): string;
|
|
85
|
+
/**
|
|
86
|
+
* Registers a callback to be executed when this controller is disposed.
|
|
87
|
+
*
|
|
88
|
+
* @param callback - Function to execute on disposal
|
|
89
|
+
*/
|
|
28
90
|
readonly onDispose: (callback: () => void) => void;
|
|
91
|
+
/**
|
|
92
|
+
* Disposes all internal resources and registered callbacks.
|
|
93
|
+
* Should be called when the controller is no longer needed to prevent memory leaks.
|
|
94
|
+
*/
|
|
29
95
|
readonly dispose: () => void;
|
|
96
|
+
/**
|
|
97
|
+
* Sets the disabled state for this field.
|
|
98
|
+
*
|
|
99
|
+
* @param disabled - Whether the field should be disabled
|
|
100
|
+
*/
|
|
30
101
|
readonly setDisabled: (disabled: boolean) => void;
|
|
102
|
+
/**
|
|
103
|
+
* Disables this field.
|
|
104
|
+
*/
|
|
31
105
|
readonly disable: () => void;
|
|
106
|
+
/**
|
|
107
|
+
* Enables this field.
|
|
108
|
+
*/
|
|
32
109
|
readonly enable: () => void;
|
|
110
|
+
/**
|
|
111
|
+
* Marks this field as touched (user has interacted with it).
|
|
112
|
+
*/
|
|
33
113
|
readonly markTouched: () => void;
|
|
114
|
+
/**
|
|
115
|
+
* Resets the touched state to false.
|
|
116
|
+
*/
|
|
34
117
|
readonly resetTouched: () => void;
|
|
118
|
+
/**
|
|
119
|
+
* Marks the current value as the new baseline for dirty tracking.
|
|
120
|
+
*/
|
|
35
121
|
readonly markPristine: () => void;
|
|
122
|
+
/**
|
|
123
|
+
* Resets the field value to the baseline value.
|
|
124
|
+
*/
|
|
36
125
|
readonly reset: () => void;
|
|
126
|
+
/**
|
|
127
|
+
* Casts this controller to an ArrayController for managing array values.
|
|
128
|
+
*
|
|
129
|
+
* @param equals - Equality function for array comparison (defaults to strictEqual)
|
|
130
|
+
* @returns An ArrayController instance
|
|
131
|
+
*/
|
|
37
132
|
readonly array: (equals?: (a: T, b: T) => boolean) => ArrayController<T extends any[] ? T : never>;
|
|
133
|
+
/**
|
|
134
|
+
* Casts this controller to an ObjectController for managing object values with field access.
|
|
135
|
+
*
|
|
136
|
+
* @param equals - Equality function for object comparison (defaults to strictEqual)
|
|
137
|
+
* @returns An ObjectController instance
|
|
138
|
+
*/
|
|
38
139
|
readonly object: (equals?: (a: T, b: T) => boolean) => ObjectController<T extends Record<string, any> ? T : never>;
|
|
140
|
+
/**
|
|
141
|
+
* Creates a transformed controller that maps values bidirectionally.
|
|
142
|
+
* Useful for converting between internal and display representations.
|
|
143
|
+
*
|
|
144
|
+
* @template Out - The transformed value type
|
|
145
|
+
* @param transform - Function to convert from T to Out
|
|
146
|
+
* @param untransform - Function to convert from Out back to T
|
|
147
|
+
* @param subpath - Optional path segments to append
|
|
148
|
+
* @param equals - Equality function for the transformed type
|
|
149
|
+
* @returns A new Controller instance managing the transformed value
|
|
150
|
+
*
|
|
151
|
+
* @example
|
|
152
|
+
* ```typescript
|
|
153
|
+
* // Transform number to string for text input
|
|
154
|
+
* const stringController = numberController.transform(
|
|
155
|
+
* (n) => n.toString(),
|
|
156
|
+
* (s) => parseFloat(s) || 0
|
|
157
|
+
* )
|
|
158
|
+
* ```
|
|
159
|
+
*/
|
|
39
160
|
readonly transform: <Out>(transform: (value: T) => Out, untransform: (value: Out) => T, subpath?: PathSegment[], equals?: (a: Out, b: Out) => boolean) => Controller<Out>;
|
|
161
|
+
/**
|
|
162
|
+
* Creates a transformed controller with async bidirectional mapping.
|
|
163
|
+
* Useful for async operations like fetching related data or formatting.
|
|
164
|
+
*
|
|
165
|
+
* @template Out - The transformed value type
|
|
166
|
+
* @param transform - Async function to convert from T to Out
|
|
167
|
+
* @param untransform - Async function to convert from Out back to T
|
|
168
|
+
* @param alt - Fallback value while async transform is pending
|
|
169
|
+
* @param subpath - Optional path segments to append
|
|
170
|
+
* @param equals - Equality function for the transformed type
|
|
171
|
+
* @returns A new Controller instance managing the async-transformed value
|
|
172
|
+
*/
|
|
40
173
|
readonly asyncTransform: <Out>(transform: (value: T) => Promise<Out>, untransform: (value: Out) => Promise<T>, alt: Out, subpath?: PathSegment[], equals?: (a: Out, b: Out) => boolean) => Controller<Out>;
|
|
41
174
|
}
|
|
175
|
+
/**
|
|
176
|
+
* Controller specialized for object values that provides field-level access via the `.field()` method.
|
|
177
|
+
* Automatically tracks deep touched and dirty states by monitoring all child field controllers.
|
|
178
|
+
*
|
|
179
|
+
* @template T - The object type managed by this controller
|
|
180
|
+
*
|
|
181
|
+
* @example
|
|
182
|
+
* ```typescript
|
|
183
|
+
* import { prop } from '@tempots/dom'
|
|
184
|
+
* import { ObjectController } from '@tempots/beatui'
|
|
185
|
+
* import { Validation } from '@tempots/std'
|
|
186
|
+
*
|
|
187
|
+
* const valueSignal = prop({ email: '', password: '' })
|
|
188
|
+
* const statusSignal = prop(Validation.valid)
|
|
189
|
+
* const disabledSignal = prop(false)
|
|
190
|
+
*
|
|
191
|
+
* const controller = new ObjectController(
|
|
192
|
+
* [],
|
|
193
|
+
* (value) => { valueSignal.set(value) },
|
|
194
|
+
* valueSignal,
|
|
195
|
+
* statusSignal,
|
|
196
|
+
* { disabled: disabledSignal }
|
|
197
|
+
* )
|
|
198
|
+
*
|
|
199
|
+
* // Access field controllers
|
|
200
|
+
* const emailController = controller.field('email')
|
|
201
|
+
* const passwordController = controller.field('password')
|
|
202
|
+
*
|
|
203
|
+
* // Deep state tracking
|
|
204
|
+
* controller.touchedDeep.value // True if any field is touched
|
|
205
|
+
* controller.dirtyDeep.value // True if any field is dirty
|
|
206
|
+
* ```
|
|
207
|
+
*/
|
|
42
208
|
export declare class ObjectController<T extends object> extends Controller<T> {
|
|
43
209
|
#private;
|
|
210
|
+
/** Reactive signal indicating whether this field or any child field is touched. */
|
|
44
211
|
readonly touchedDeep: Signal<boolean>;
|
|
212
|
+
/** Reactive signal indicating whether this field or any child field is dirty. */
|
|
45
213
|
readonly dirtyDeep: Signal<boolean>;
|
|
46
214
|
constructor(path: Path, change: (value: T) => void, signal: Signal<T>, status: Signal<ControllerValidation>, parent: {
|
|
47
215
|
disabled: Signal<boolean>;
|
|
48
216
|
}, equals: (a: T, b: T) => boolean);
|
|
217
|
+
/**
|
|
218
|
+
* Gets or creates a controller for a specific field in the object.
|
|
219
|
+
* Controllers are cached and reused for the same field name.
|
|
220
|
+
*
|
|
221
|
+
* @template K - The field key type
|
|
222
|
+
* @param field - The field name to access
|
|
223
|
+
* @returns A Controller instance for the specified field
|
|
224
|
+
*
|
|
225
|
+
* @example
|
|
226
|
+
* ```typescript
|
|
227
|
+
* const emailController = userController.field('email')
|
|
228
|
+
* const nameController = userController.field('name')
|
|
229
|
+
* ```
|
|
230
|
+
*/
|
|
49
231
|
readonly field: <K extends keyof T & string>(field: K) => Controller<T[K]>;
|
|
232
|
+
/**
|
|
233
|
+
* Marks this field and all child fields as touched recursively.
|
|
234
|
+
* Useful for showing all validation errors when a form is submitted.
|
|
235
|
+
*/
|
|
50
236
|
readonly markAllTouched: () => void;
|
|
237
|
+
/**
|
|
238
|
+
* Marks this field and all child fields as pristine (resets baseline) recursively.
|
|
239
|
+
*/
|
|
51
240
|
readonly markAllPristine: () => void;
|
|
52
241
|
}
|
|
242
|
+
/**
|
|
243
|
+
* Controller specialized for array values that provides item-level access and array manipulation methods.
|
|
244
|
+
* Automatically tracks deep touched and dirty states by monitoring all child item controllers.
|
|
245
|
+
*
|
|
246
|
+
* @template T - The array type managed by this controller
|
|
247
|
+
*
|
|
248
|
+
* @example
|
|
249
|
+
* ```typescript
|
|
250
|
+
* import { prop } from '@tempots/dom'
|
|
251
|
+
* import { ArrayController } from '@tempots/beatui'
|
|
252
|
+
* import { Validation } from '@tempots/std'
|
|
253
|
+
*
|
|
254
|
+
* const valueSignal = prop(['task 1', 'task 2'])
|
|
255
|
+
* const statusSignal = prop(Validation.valid)
|
|
256
|
+
* const disabledSignal = prop(false)
|
|
257
|
+
*
|
|
258
|
+
* const controller = new ArrayController(
|
|
259
|
+
* [],
|
|
260
|
+
* (value) => { valueSignal.set(value) },
|
|
261
|
+
* valueSignal,
|
|
262
|
+
* statusSignal,
|
|
263
|
+
* { disabled: disabledSignal }
|
|
264
|
+
* )
|
|
265
|
+
*
|
|
266
|
+
* // Access item controllers
|
|
267
|
+
* const firstItemController = controller.item(0)
|
|
268
|
+
*
|
|
269
|
+
* // Array operations
|
|
270
|
+
* controller.push('new task')
|
|
271
|
+
* controller.removeAt(1)
|
|
272
|
+
* controller.move(0, 2) // Move first item to third position
|
|
273
|
+
* controller.length.value // Reactive array length
|
|
274
|
+
* ```
|
|
275
|
+
*/
|
|
53
276
|
export declare class ArrayController<T extends unknown[]> extends Controller<T> {
|
|
54
277
|
#private;
|
|
278
|
+
/** Reactive signal containing the current array length. */
|
|
55
279
|
readonly length: Signal<number>;
|
|
280
|
+
/** Reactive signal indicating whether this array or any item is touched. */
|
|
56
281
|
readonly touchedDeep: Signal<boolean>;
|
|
282
|
+
/** Reactive signal indicating whether this array or any item is dirty. */
|
|
57
283
|
readonly dirtyDeep: Signal<boolean>;
|
|
58
284
|
constructor(path: Path, change: (value: T) => void, signal: Signal<T>, status: Signal<ControllerValidation>, parent: {
|
|
59
285
|
disabled: Signal<boolean>;
|
|
60
286
|
}, equals: (a: T, b: T) => boolean);
|
|
287
|
+
/**
|
|
288
|
+
* Gets or creates a controller for a specific array item by index.
|
|
289
|
+
* Controllers are cached and reused for the same index.
|
|
290
|
+
*
|
|
291
|
+
* @param index - The zero-based index of the item
|
|
292
|
+
* @returns A Controller instance for the specified item
|
|
293
|
+
*
|
|
294
|
+
* @example
|
|
295
|
+
* ```typescript
|
|
296
|
+
* const firstTaskController = tasksController.item(0)
|
|
297
|
+
* const secondTaskController = tasksController.item(1)
|
|
298
|
+
* ```
|
|
299
|
+
*/
|
|
61
300
|
readonly item: (index: number) => Controller<T[number]>;
|
|
301
|
+
/**
|
|
302
|
+
* Appends one or more items to the end of the array.
|
|
303
|
+
*
|
|
304
|
+
* @param value - Items to append
|
|
305
|
+
*/
|
|
62
306
|
readonly push: (...value: T[number][]) => void;
|
|
307
|
+
/**
|
|
308
|
+
* Removes the last item from the array.
|
|
309
|
+
*/
|
|
63
310
|
readonly pop: () => void;
|
|
311
|
+
/**
|
|
312
|
+
* Removes the first item from the array.
|
|
313
|
+
*/
|
|
64
314
|
readonly shift: () => void;
|
|
315
|
+
/**
|
|
316
|
+
* Inserts one or more items at the beginning of the array.
|
|
317
|
+
*
|
|
318
|
+
* @param value - Items to prepend
|
|
319
|
+
*/
|
|
65
320
|
readonly unshift: (...value: T) => void;
|
|
321
|
+
/**
|
|
322
|
+
* Removes the item at the specified index.
|
|
323
|
+
*
|
|
324
|
+
* @param index - Zero-based index of the item to remove
|
|
325
|
+
*/
|
|
66
326
|
readonly removeAt: (index: number) => void;
|
|
327
|
+
/**
|
|
328
|
+
* Removes items from the array starting at the specified index.
|
|
329
|
+
*
|
|
330
|
+
* @param start - Zero-based index to start removing items
|
|
331
|
+
* @param deleteCount - Number of items to remove (optional)
|
|
332
|
+
*/
|
|
67
333
|
readonly splice: (start: number, deleteCount?: number) => void;
|
|
334
|
+
/**
|
|
335
|
+
* Moves one or more items from one index to another within the array.
|
|
336
|
+
*
|
|
337
|
+
* @param from - Source index to move from
|
|
338
|
+
* @param to - Destination index to move to
|
|
339
|
+
* @param length - Number of items to move (defaults to 1)
|
|
340
|
+
*
|
|
341
|
+
* @example
|
|
342
|
+
* ```typescript
|
|
343
|
+
* controller.move(0, 2) // Move first item to third position
|
|
344
|
+
* controller.move(2, 0, 2) // Move items at index 2-3 to the beginning
|
|
345
|
+
* ```
|
|
346
|
+
*/
|
|
68
347
|
readonly move: (from: number, to: number, length?: number) => void;
|
|
348
|
+
/**
|
|
349
|
+
* Marks this array and all item controllers as touched recursively.
|
|
350
|
+
* Useful for showing all validation errors when a form is submitted.
|
|
351
|
+
*/
|
|
69
352
|
readonly markAllTouched: () => void;
|
|
353
|
+
/**
|
|
354
|
+
* Marks this array and all item controllers as pristine (resets baseline) recursively.
|
|
355
|
+
*/
|
|
70
356
|
readonly markAllPristine: () => void;
|
|
71
357
|
}
|
|
@@ -1,3 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Form Controller Module
|
|
3
|
+
*
|
|
4
|
+
* Exports form controller classes, utilities, and related types:
|
|
5
|
+
* - {@link Controller} / {@link ArrayController} - Core reactive form state management
|
|
6
|
+
* - {@link ControllerValidation} - Validation state tracking
|
|
7
|
+
* - {@link ColorController} - Specialized color value controller
|
|
8
|
+
* - {@link UnionController} - Controller for discriminated union types
|
|
9
|
+
* - {@link EnsureControl} / {@link ListControl} - Control components (re-exported from control/)
|
|
10
|
+
* - Path utilities for navigating nested form structures
|
|
11
|
+
* - Transform utilities for controller value conversion
|
|
12
|
+
*/
|
|
1
13
|
export * from '../control/ensure-control';
|
|
2
14
|
export * from '../control/list-control';
|
|
3
15
|
export * from './path';
|